From minios-devel-bounces@lists.xenproject.org Sat Jun 01 09:53:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 09:53: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 1hX0hU-0003Q3-4z; Sat, 01 Jun 2019 09:53:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1d17=UA=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hX0hS-0003Py-OA
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 09:53:18 +0000
X-Inumbo-ID: 13dd5d30-8453-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 13dd5d30-8453-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 09:53:17 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n4so4997032wrs.3
 for <minios-devel@lists.xen.org>; Sat, 01 Jun 2019 02:53:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language;
 bh=3EnmtFgxSfZMoorBSaBjIoSwFO7kiRgLdfSXvh8WdSE=;
 b=GHV56Jvm/tS0POh6z8Y0uWWhK2KQM5VdZmakPLhBoQqtgsIo26mbh9uqxXP5LsDFFh
 03pw0ZhzF55Mw8mCSzHO2BrmA89Fr6yUf9IlXecOF+/z+Er+GN0esHfZ3wmhauXpIpNT
 03ax4AQfoV5lhlTtyeywZITiis8qpCocOGVyRkeI0iQPRfFEkqG3KWd8vZozYtYmf5cQ
 qOy5q77wD/pOFTM/kotgZPBpUWDuX/7g2ff+dFWxiwthqyybmLWkuwobjzN+LINBLL08
 Te9dxx9Ziat/uglWSbt1KXD6QvrWsVu/q0sfqkx9oTQPh0UU5p56DSgysq4+3KJFmEyw
 lNlA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language;
 bh=3EnmtFgxSfZMoorBSaBjIoSwFO7kiRgLdfSXvh8WdSE=;
 b=LoyOxeoMlhgj/ouQSrE4F38QIwz3MUxz/32zgLlzLQAuv/OVevf2UMTbzx6D+cvqFt
 jlrqcoH69W20LqYaBDhJmvSDwDBPD8SNK/2kQA5iSsUif1ErS8MChlRAXIcOXRydmu7z
 mYksGn/EMiblSm4qEv73+szKx3l7tg9Q5xVtoX85BIrcrrXEq7pcAdc7Fo7iZH0FBxad
 eIM/Fr7p+5dCa6r7G9/UwScS7pRBp7U7DJeHovSt6lLfRX9y3IMzbzWl8ToDYNZhW3In
 DW8eQbdf+HpQpvuM6iLstsD4nYrBnEK+uW442feUtJEacRCz2SpUyQhxamlOVmZNocpb
 h0OA==
X-Gm-Message-State: APjAAAUpJFOcdeCJbnfYQfHsVWWs7KzHUy5u9gTCYhPeQkWVEDKhl3WI
 ajK2OBGgVq/6F6ZjlfRFwHXmF2Dw5UU=
X-Google-Smtp-Source: APXvYqxKl0r9I2Kptgi/UNUtGktST5HWtseo/9AlbRZkguwvjVDGX5zL0kpK9LHgDIzim4q1cTj10A==
X-Received: by 2002:a5d:65c9:: with SMTP id e9mr9629825wrw.348.1559382795481; 
 Sat, 01 Jun 2019 02:53:15 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id 19sm6024541wmi.10.2019.06.01.02.53.13
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 01 Jun 2019 02:53:14 -0700 (PDT)
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, minios-devel@lists.xen.org
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
Date: Sat, 1 Jun 2019 12:53:12 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529234442.8004-8-yuri.volchkov@neclab.eu>
Content-Type: multipart/mixed; boundary="------------95F7A140062A3B4096780ADE"
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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 a multi-part message in MIME format.
--------------95F7A140062A3B4096780ADE
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hi Yuri,

Unfortunately, this doesn't work. I followed the steps on 2 different
machines running Debian 9 and on a third one with Debian 10 (all of them
with the latest updates). I tried creating the environment both in the
application directory and unikraft core directory, without success.

First problem: When first running `pip install --editable .` I get an
error that doesn't occur on the second running, please see attached txt
with the output.

Second problem: I cannot run env/bin/uk-trace, again please see attached
txt.

Thanks,
Costin

On 5/30/19 2:44 AM, Yuri Volchkov wrote:
> Now it is possible to install uk-trace in your local virtual
> environment. For example:
>    python3 -m venv env
>    . env/bin/activate
>    cd support/scripts/uk_trace
>    pip install --editable .
>    deactivate
> 
> All the dependencies will be installed in the 'env' folder, not to
> your machine. And you do not need to enter your virtual environment,
> you can call directly:
> 
>    env/bin/uk-trace
> 
> Signed-off-by: Yuri Volchkov <yuri.volchkov@neclab.eu>
> ---
>  .gitignore                        |  1 +
>  support/scripts/uk_trace/setup.py | 14 ++++++++++++++
>  2 files changed, 15 insertions(+)
>  create mode 100644 support/scripts/uk_trace/setup.py
> 
> diff --git a/.gitignore b/.gitignore
> index 17908b50..09e4ba81 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -34,3 +34,4 @@ GTAGS
>  # cscope files
>  cscope.*
>  ncscope.*
> +support/scripts/uk_trace/uk_trace.egg-info/
> diff --git a/support/scripts/uk_trace/setup.py b/support/scripts/uk_trace/setup.py
> new file mode 100644
> index 00000000..303273ad
> --- /dev/null
> +++ b/support/scripts/uk_trace/setup.py
> @@ -0,0 +1,14 @@
> +from setuptools import setup
> +
> +setup(
> +    name='uk_trace',
> +    version='0.1',
> +    py_modules=['main'],
> +    install_requires=[
> +        'Click', 'tabulate',
> +    ],
> +    entry_points='''
> +        [console_scripts]
> +        uk-trace=trace:cli
> +    ''',
> +)
> 

--------------95F7A140062A3B4096780ADE
Content-Type: text/plain; charset=UTF-8;
 name="CLICK-INSTALL-PROBLEMS"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="CLICK-INSTALL-PROBLEMS"

KDEpIC0tLS0tLS0tLS0tLS0tLSBQSVAgSU5TVEFMTCBQUk9CTEVNIC0tLS0tLS0tLS0tLS0t
LQooZW52KSB+L3VuaWtyYWZ0L3N1cHBvcnQvc2NyaXB0cy91a190cmFjZSQgcGlwIGluc3Rh
bGwgLS1lZGl0YWJsZSAuCk9idGFpbmluZyBmaWxlOi8vL2hvbWUvd29sZi9uZnYvZGV2L3Vu
aWtyYWZ0L3VuaWtyYWZ0LmdpdC9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UKQ29sbGVjdGlu
ZyBDbGljayAoZnJvbSB1ay10cmFjZT09MC4xKQogIFVzaW5nIGNhY2hlZCBodHRwczovL2Zp
bGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvZmEvMzcvNDUxODVjYjVhYmJjMzBkNzI1
NzEwNGM0MzRmZTBiMDdlNWExOTVhNjg0NzUwNmMwNzQ1MjdhYTU5OWVjL0NsaWNrLTcuMC1w
eTIucHkzLW5vbmUtYW55LndobCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29s
bGVjdGluZyB0YWJ1bGF0ZSAoZnJvbSB1ay10cmFjZT09MC4xKQogIFVzaW5nIGNhY2hlZCBo
dHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvYzIvZmQvMjAyOTU0YjNm
MGViODk2YzUzYjdiNmYwNzM5MDg1MWIxZmQyY2E4NGFhOTU4ODBkN2FlNGY0MzRjNGFjL3Rh
YnVsYXRlLTAuOC4zLnRhci5neiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKQnVpbGRpbmcgd2hlZWxzIGZvciBjb2xsZWN0ZWQgcGFja2FnZXM6IHRhYnVsYXRl
CiAgUnVubmluZyBzZXR1cC5weSBiZGlzdF93aGVlbCBmb3IgdGFidWxhdGUgLi4uIGVycm9y
CiAgQ29tcGxldGUgb3V0cHV0IGZyb20gY29tbWFuZCAvaG9tZS93b2xmL25mdi9kZXYvdW5p
a3JhZnQvdW5pa3JhZnQuZ2l0L2Vudi9iaW4vcHl0aG9uMyAtdSAtYyAiaW1wb3J0IHNldHVw
dG9vbHMsIHRva2VuaXplO19fZmlsZV9fPScvdG1wL3BpcC1pbnN0YWxsLWM5ejRiOXNxL3Rh
YnVsYXRlL3NldHVwLnB5JztmPWdldGF0dHIodG9rZW5pemUsICdvcGVuJywgb3BlbikoX19m
aWxlX18pO2NvZGU9Zi5yZWFkKCkucmVwbGFjZSgnXHJcbicsICdcbicpO2YuY2xvc2UoKTtl
eGVjKGNvbXBpbGUoY29kZSwgX19maWxlX18sICdleGVjJykpIiBiZGlzdF93aGVlbCAtZCAv
dG1wL3BpcC13aGVlbC0xeHFuNV9tZCAtLXB5dGhvbi10YWcgY3AzNzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICB1c2FnZTog
LWMgW2dsb2JhbF9vcHRzXSBjbWQxIFtjbWQxX29wdHNdIFtjbWQyIFtjbWQyX29wdHNdIC4u
Ll0KICAgICBvcjogLWMgLS1oZWxwIFtjbWQxIGNtZDIgLi4uXQogICAgIG9yOiAtYyAtLWhl
bHAtY29tbWFuZHMKICAgICBvcjogLWMgY21kIC0taGVscAoKICBlcnJvcjogaW52YWxpZCBj
b21tYW5kICdiZGlzdF93aGVlbCcKCiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogIEZhaWxlZCBidWlsZGluZyB3aGVlbCBmb3IgdGFidWxhdGUKICBSdW5u
aW5nIHNldHVwLnB5IGNsZWFuIGZvciB0YWJ1bGF0ZQpGYWlsZWQgdG8gYnVpbGQgdGFidWxh
dGUKSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IENsaWNrLCB0YWJ1bGF0ZSwgdWst
dHJhY2UKICBSdW5uaW5nIHNldHVwLnB5IGluc3RhbGwgZm9yIHRhYnVsYXRlIC4uLiBkb25l
CiAgUnVubmluZyBzZXR1cC5weSBkZXZlbG9wIGZvciB1ay10cmFjZQpTdWNjZXNzZnVsbHkg
aW5zdGFsbGVkIENsaWNrLTcuMCB0YWJ1bGF0ZS0wLjguMyB1ay10cmFjZQooZW52KSB+L3Vu
aWtyYWZ0L3N1cHBvcnQvc2NyaXB0cy91a190cmFjZSQgcGlwIGluc3RhbGwgLS1lZGl0YWJs
ZSAuCk9idGFpbmluZyBmaWxlOi8vL2hvbWUvd29sZi9uZnYvZGV2L3VuaWtyYWZ0L3VuaWty
YWZ0LmdpdC9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UKUmVxdWlyZW1lbnQgYWxyZWFkeSBz
YXRpc2ZpZWQ6IENsaWNrIGluIC9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFm
dC5naXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcyAoZnJvbSB1ay10cmFjZT09
MC4xKSAoNy4wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ClJlcXVpcmVtZW50IGFscmVhZHkgc2F0aXNmaWVkOiB0YWJ1bGF0ZSBpbiAvaG9tZS93b2xm
L25mdi9kZXYvdW5pa3JhZnQvdW5pa3JhZnQuZ2l0L2Vudi9saWIvcHl0aG9uMy43L3NpdGUt
cGFja2FnZXMgKGZyb20gdWstdHJhY2U9PTAuMSkgKDAuOC4zKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIApJbnN0YWxsaW5nIGNvbGxlY3RlZCBwYWNrYWdlczog
dWstdHJhY2UKICBGb3VuZCBleGlzdGluZyBpbnN0YWxsYXRpb246IHVrLXRyYWNlIDAuMQog
ICAgVW5pbnN0YWxsaW5nIHVrLXRyYWNlLTAuMToKICAgICAgU3VjY2Vzc2Z1bGx5IHVuaW5z
dGFsbGVkIHVrLXRyYWNlLTAuMQogIFJ1bm5pbmcgc2V0dXAucHkgZGV2ZWxvcCBmb3IgdWst
dHJhY2UKCgooMikgLS0tLS0tLS0tLS0tLS0tIFVLLVRSQUNFIFJVTk5JTkcgUFJPQkxFTSAt
LS0tLS0tLS0tLS0tLS0KJCBlbnYvYmluL3VrLXRyYWNlIC0taGVscApUcmFjZWJhY2sgKG1v
c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2hvbWUvd29sZi9uZnYvZGV2L3VuaWty
YWZ0L3VuaWtyYWZ0LmdpdC9lbnYvbGliL3B5dGhvbjMuNy9zaXRlLXBhY2thZ2VzL3BrZ19y
ZXNvdXJjZXMvX19pbml0X18ucHkiLCBsaW5lIDI0MTksIGluIHJlc29sdmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgcmV0dXJu
IGZ1bmN0b29scy5yZWR1Y2UoZ2V0YXR0ciwgc2VsZi5hdHRycywgbW9kdWxlKQpBdHRyaWJ1
dGVFcnJvcjogbW9kdWxlICd0cmFjZScgaGFzIG5vIGF0dHJpYnV0ZSAnY2xpJwoKRHVyaW5n
IGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9j
Y3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgImVu
di9iaW4vdWstdHJhY2UiLCBsaW5lIDExLCBpbiA8bW9kdWxlPgogICAgbG9hZF9lbnRyeV9w
b2ludCgndWstdHJhY2UnLCAnY29uc29sZV9zY3JpcHRzJywgJ3VrLXRyYWNlJykoKQogIEZp
bGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5naXQvZW52L2xpYi9w
eXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19faW5pdF9fLnB5IiwgbGlu
ZSA0ODksIGluIGxvYWRfZW50cnlfcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgIHJldHVybiBnZXRfZGlzdHJpYnV0aW9uKGRpc3QpLmxv
YWRfZW50cnlfcG9pbnQoZ3JvdXAsIG5hbWUpCiAgRmlsZSAiL2hvbWUvd29sZi9uZnYvZGV2
L3VuaWtyYWZ0L3VuaWtyYWZ0LmdpdC9lbnYvbGliL3B5dGhvbjMuNy9zaXRlLXBhY2thZ2Vz
L3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHkiLCBsaW5lIDI3OTMsIGluIGxvYWRfZW50cnlf
cG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
cmV0dXJuIGVwLmxvYWQoKQogIEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91
bmlrcmFmdC5naXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3Vy
Y2VzL19faW5pdF9fLnB5IiwgbGluZSAyNDExLCBpbiBsb2FkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHJldHVybiBzZWxm
LnJlc29sdmUoKQogIEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFm
dC5naXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19f
aW5pdF9fLnB5IiwgbGluZSAyNDIxLCBpbiByZXNvbHZlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHJhaXNlIEltcG9ydEVycm9y
KHN0cihleGMpKQpJbXBvcnRFcnJvcjogbW9kdWxlICd0cmFjZScgaGFzIG5vIGF0dHJpYnV0
ZSAnY2xpJwo=
--------------95F7A140062A3B4096780ADE
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--------------95F7A140062A3B4096780ADE--


From minios-devel-bounces@lists.xenproject.org Sat Jun 01 10:56:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 10:56: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 1hX1gf-0008Os-5I; Sat, 01 Jun 2019 10:56:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1d17=UA=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hX1gd-0008On-4L
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 10:56:31 +0000
X-Inumbo-ID: e854092a-845b-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e854092a-845b-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 10:56:29 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id m6so2419764wrj.10
 for <minios-devel@lists.xen.org>; Sat, 01 Jun 2019 03:56:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=AK7E1KSM69SxtDA5ba+AxNVMZDQfPTIa3m6OQk7WnmY=;
 b=AbJZjDDDdDtiUT6pUVSnmI4zMBHHf4TX/lfnd6n6T97Z1b3OXjLFumDdJhvkI5fSqG
 Ajco1Ffd2Fw0UwUYujkp7/xxFtXysug15UyCLbAQZWBBVpDq7eJ2r1qUI8RPZ7KzAzaZ
 VYIYHCkzgWRgWY0CjcXtUjz9mVisZc1W4+jp6l01bHAqkGUF/bbPoS2vcHgKxc7KCgVv
 ehrkbj5kYk4FqlaBROwJpWop3vmS3hUyid3DYgH6zxgGcUDxjqfBjEaexnpxahRSq10j
 uRtZESBe2m108z/ltGcE3weR/BaOUwvPWD/0KDP4/A+KKHhUzcTxvelQythzw6aOvkO8
 xhcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=AK7E1KSM69SxtDA5ba+AxNVMZDQfPTIa3m6OQk7WnmY=;
 b=dXsen1S0yrCsPwHZJ1j8EZeOalr00eEHYdsQwnEBhRvLFn3CRZ2f+0HIxS5Oj5SK/t
 CiL2dMaPsJKt705iXK1w+wRuOIGGGEJjaejq7DWBM6jmF0pQylL26f9gK4iCJSAz5tvk
 72GDW1lMI1ZcNoyoutTzmc3T6duvXBEYUMGnq/xSVfiPfUXOvcfAZwXXHI3cgHsG3S/3
 wo1DAJmlRxohmD3rCnEAkOz7fSU3zUoMTU7/m3Up+KaTNEwYwcw5i1cyh6Ze6Iv+JSp6
 FgIIybmNOmju9IVjcNqrntTACCHDjXgipv6Q6TT7UugyItXkBczgIDA6QR5XUEMaGHk3
 E+2g==
X-Gm-Message-State: APjAAAXO/tdaBU91mvl3olw3ZBmaJhmlrwUqQvHfEsECRJXtr+jRPAuP
 w2Eka/GLZ0xYO5S2+C6MKgdM1/4pQaI=
X-Google-Smtp-Source: APXvYqydQiXZPHsKRhgCqj8JUdeLsACYTPtTR2OKVdPPdMM1WT7nhGHM9AHZ4nEcc3VNRij4R+DTEA==
X-Received: by 2002:adf:f00d:: with SMTP id j13mr9950208wro.178.1559386587531; 
 Sat, 01 Jun 2019 03:56:27 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id s7sm8092536wmc.2.2019.06.01.03.56.25
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 01 Jun 2019 03:56:26 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190530202920.19553-1-florian.schmidt@neclab.eu>
 <20190530202920.19553-2-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <48e79282-b2db-01ad-4ea2-21ecb33c6d34@gmail.com>
Date: Sat, 1 Jun 2019 13:56:24 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190530202920.19553-2-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 1/7] plat/linuxu: make linker
 script preprocessable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwKClVuZm9ydHVuYXRlbHkgdGhpcyBwYXRjaCBzZXJpZXMgaGFzIHRvIGJlIHJl
YmFzZWQgYmVjYXVzZSBvZiB0aGUgbGF0ZXN0CmNoYW5nZXMgb24gTWFrZWZpbGUgYW5kIExpbmtl
ciBmaWxlcyAocGF0Y2ggMzM4MDk1MTgpLgoKVGhhbmtzLApDb3N0aW4KCk9uIDUvMzAvMTkgMTE6
MjkgUE0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBDb21taXQgMWQ4NGYzZGQ5OGUgKCJidWls
ZDogbWFrZSBhbGwgbGlua2VyIHNjcmlwdHMgcHJlcHJvY2Vzc2FibGUiKQo+IGludHJvZHVjZWQg
cHJlcHJvY2Vzc2FibGUgbGlua2VyIHNjcmlwdHMgZm9yIHRoZSBYZW4gYW5kIEtWTSBwbGF0Zm9y
bS4KPiBUaGlzIGZvbGxvd3MgdGhlIHNhbWUgYXBwcm9hY2ggdG8gbWFrZSB0aGUgbWFpbiBsaW51
eHUgbGlua2VyIHNjcmlwdAo+IHByZXByb2Nlc3NhYmxlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEZs
b3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiAtLS0KPiAgcGxhdC9s
aW51eHUvTGlua2VyLnVrICAgICAgICAgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tCj4gIHBs
YXQvbGludXh1L01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgIHwgNCArKysrCj4gIHBs
YXQvbGludXh1L2FybS97bGluay5sZHMgPT4gbGluay5sZHMuU30gICAgIHwgMAo+ICBwbGF0L2xp
bnV4dS94ODYve2xpbms2NC5sZHMgPT4gbGluazY0Lmxkcy5TfSB8IDAKPiAgNCBmaWxlcyBjaGFu
Z2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gIHJlbmFtZSBwbGF0L2xpbnV4
dS9hcm0ve2xpbmsubGRzID0+IGxpbmsubGRzLlN9ICgxMDAlKQo+ICByZW5hbWUgcGxhdC9saW51
eHUveDg2L3tsaW5rNjQubGRzID0+IGxpbms2NC5sZHMuU30gKDEwMCUpCj4gCj4gZGlmZiAtLWdp
dCBhL3BsYXQvbGludXh1L0xpbmtlci51ayBiL3BsYXQvbGludXh1L0xpbmtlci51awo+IGluZGV4
IDIwZWJmYzA1Li4yOWI0ZGM1YiAxMDA2NDQKPiAtLS0gYS9wbGF0L2xpbnV4dS9MaW5rZXIudWsK
PiArKysgYi9wbGF0L2xpbnV4dS9MaW5rZXIudWsKPiBAQCAtNCwxNCArNCwxNCBAQCBMSU5VWFVf
TERGTEFHUy15ICs9IC1XbCwtZSxfbGlibGludXh1cGxhdF9zdGFydAo+ICAjIyBMaW5rIGltYWdl
Cj4gICMjCj4gIExJTlVYVV9JTUFHRSA6PSAkKEJVSUxEX0RJUikvJChDT05GSUdfVUtfTkFNRSlf
bGludXh1LSQoQ09ORklHX1VLX0FSQ0gpCj4gLUxJTlVYVV9MRF9TQ1JJUFQtJChDT05GSUdfQVJD
SF9YODZfNjQpICs9ICQoTElCTElOVVhVUExBVF9CQVNFKS94ODYvbGluazY0Lmxkcwo+IC1MSU5V
WFVfTERfU0NSSVBULSQoQ09ORklHX0FSQ0hfQVJNXzMyKSArPSAkKExJQkxJTlVYVVBMQVRfQkFT
RSkvYXJtL2xpbmsubGRzCj4gK0xJTlVYVV9MRFNDUklQVCA6PSAkKGNhbGwgc3JjMmxkcyxsaWJs
aW51eHVwbGF0LCQoTElOVVhVX0xEU0NSSVBUX1NSQy15KSkKPiAgTElOVVhVX0xEX1NDUklQVF9G
TEFHUyA6PSAkKGFkZHByZWZpeCAtV2wkKGNvbW1hKS1UJChjb21tYSksXAo+IC0JCQkgICAgJChM
SU5VWFVfTERfU0NSSVBULXkpICQoRVhUUkFfTERfU0NSSVBULXkpKQo+ICsJCQkgICAgJChMSU5V
WFVfTERTQ1JJUFQpICQoRVhUUkFfTERfU0NSSVBULXkpKQo+ICAKPiAgJChMSU5VWFVfSU1BR0Up
OiAkKExJTlVYVV9BTElCUykgJChMSU5VWFVfQUxJQlMteSkgXAo+ICAJCSAkKExJTlVYVV9PTElC
UykgJChMSU5VWFVfT0xJQlMteSkgXAo+IC0JCSAkKFVLX0FMSUJTKSAkKFVLX0FMSUJTLXkpICQo
VUtfT0xJQlMpICQoVUtfT0xJQlMteSkKPiArCQkgJChVS19BTElCUykgJChVS19BTElCUy15KSAk
KFVLX09MSUJTKSAkKFVLX09MSUJTLXkpIFwKPiArCQkgJChMSU5VWFVfTERTQ1JJUFQpCj4gIAkk
KGNhbGwgYnVpbGRfY21kLExELCwkQCxcCj4gIAkgICAgICAgJChMRCkgJChMREZMQUdTKSAkKExE
RkxBR1MteSkgXAo+ICAJCSAgICAgJChMSU5VWFVfTERGTEFHUykgJChMSU5VWFVfTERGTEFHUy15
KSBcCj4gZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L01ha2VmaWxlLnVrIGIvcGxhdC9saW51eHUv
TWFrZWZpbGUudWsKPiBpbmRleCAyYzBkZTc2Yy4uZWUzYTdlYTEgMTAwNjQ0Cj4gLS0tIGEvcGxh
dC9saW51eHUvTWFrZWZpbGUudWsKPiArKysgYi9wbGF0L2xpbnV4dS9NYWtlZmlsZS51awo+IEBA
IC0yMCw2ICsyMCw5IEBAIExJQkxJTlVYVVBMQVRfQVNGTEFHUyAgICAgICAgICAgICArPSAtRExJ
TlVYVVBMQVQKPiAgTElCTElOVVhVUExBVF9DRkxBR1MgICAgICAgICAgICAgICs9IC1ETElOVVhV
UExBVAo+ICBMSUJMSU5VWFVQTEFUX0NYWEZMQUdTICAgICAgICAgICAgKz0gLURMSU5VWFVQTEFU
Cj4gIAo+ICtMSU5VWFVfTERTQ1JJUFRfU1JDLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJ
QkxJTlVYVVBMQVRfQkFTRSkveDg2L2xpbms2NC5sZHMuUwo+ICtMSU5VWFVfTERTQ1JJUFRfU1JD
LSQoQ09ORklHX0FSQ0hfQVJNXzMyKSArPSAkKExJQkxJTlVYVVBMQVRfQkFTRSkvYXJtL2xpbmsu
bGRzLlMKPiArCj4gIExJQkxJTlVYVVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0g
JChVS19QTEFUX0NPTU1PTl9CQVNFKS94ODYvY3B1X2ZlYXR1cmVzLmN8Y29tbW9uCj4gIExJQkxJ
TlVYVVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl8zMikgKz0gJChMSUJMSU5VWFVQTEFUX0JB
U0UpL3g4Ni9lbnRyeTMyLlMKPiAgTElCTElOVVhVUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2
XzY0KSArPSAkKExJQkxJTlVYVVBMQVRfQkFTRSkveDg2L2VudHJ5NjQuUwo+IEBAIC00MCwzICs0
Myw0IEBAIExJQkxJTlVYVVBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQkxJTlVYVVBM
QVRfQkFTRSkvdGltZS5jCj4gIExJQkxJTlVYVVBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAk
KFVLX1BMQVRfQ09NTU9OX0JBU0UpL2xjcHUuY3xjb21tb24KPiAgTElCTElOVVhVUExBVF9TUkNT
LXkgICAgICAgICAgICAgICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvbWVtb3J5LmN8Y29tbW9u
Cj4gIExJQkxJTlVYVVBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQkxJTlVYVVBMQVRf
QkFTRSkvaW8uYwo+ICtMSUJMSU5VWFVQTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSU5V
WFVfTERTQ1JJUFRfU1JDLXkpCj4gZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L2FybS9saW5rLmxk
cyBiL3BsYXQvbGludXh1L2FybS9saW5rLmxkcy5TCj4gc2ltaWxhcml0eSBpbmRleCAxMDAlCj4g
cmVuYW1lIGZyb20gcGxhdC9saW51eHUvYXJtL2xpbmsubGRzCj4gcmVuYW1lIHRvIHBsYXQvbGlu
dXh1L2FybS9saW5rLmxkcy5TCj4gZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L3g4Ni9saW5rNjQu
bGRzIGIvcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUwo+IHNpbWlsYXJpdHkgaW5kZXggMTAw
JQo+IHJlbmFtZSBmcm9tIHBsYXQvbGludXh1L3g4Ni9saW5rNjQubGRzCj4gcmVuYW1lIHRvIHBs
YXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 01 12:00:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 12:00:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hX2ga-0005Wr-VO; Sat, 01 Jun 2019 12:00:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=NqJ9=UA=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hX2ga-0005Wm-Bp
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 12:00:32 +0000
X-Inumbo-ID: d81624d2-8464-11e9-8e30-cbecb40d955d
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d81624d2-8464-11e9-8e30-cbecb40d955d;
 Sat, 01 Jun 2019 12:00:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A747BF201D;
 Sat,  1 Jun 2019 13:57:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id lcSGg0TdBy1k; Sat,  1 Jun 2019 13:57:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6597DF2019;
 Sat,  1 Jun 2019 13:57:44 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sat, 1 Jun 2019 13:57:43 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
In-Reply-To: <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
 <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
Date: Sat, 1 Jun 2019 13:57:39 +0200
Message-ID: <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

--=-=-=
Content-Type: text/plain

Hi Costin,

thanks for testing this. I think I fixed your problems. Before I send
v3, could you please try again with the attached patch?

Please note, that documentation is changed tool. Now creating of virtual
environment is done using 'virtualenv' tool. Which installs 'wheel'
package - that should solve your second problem.

Thank you!
Cheers, Yuri.

--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
	filename="0001-fix-setup-tools-problems.patch"

>From 5b3dd3fe5041bf9c5cf2cc02656999824c7d9462 Mon Sep 17 00:00:00 2001
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
Date: Sat, 1 Jun 2019 13:50:08 +0200
Subject: [PATCH] fix setup-tools problems

Signed-off-by: Yuri Volchkov <yuri.volchkov@neclab.eu>
---
 doc/guides/developers-debugging.rst | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/guides/developers-debugging.rst b/doc/guides/developers-debugging.rst
index 3973ffe7..d41b3597 100644
--- a/doc/guides/developers-debugging.rst
+++ b/doc/guides/developers-debugging.rst
@@ -87,11 +87,12 @@ click and tabulate. You can install them by running: ::
 
 Or, you can install trace.py into a local virtual environment: ::
 
-  python3 -m venv env
+  virtualenv -p python3 env
   . env/bin/activate
   cd support/scripts/uk_trace
   pip install --editable .
   deactivate
+  cd -
 
 All the dependencies will be installed in the 'env' folder, not to
 your machine. You do not have to enter your virtual environment, you
-- 
2.19.2


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


Costin Lupu <costin.lup@gmail.com> writes:

> Hi Yuri,
>
> Unfortunately, this doesn't work. I followed the steps on 2 different
> machines running Debian 9 and on a third one with Debian 10 (all of them
> with the latest updates). I tried creating the environment both in the
> application directory and unikraft core directory, without success.
>
> First problem: When first running `pip install --editable .` I get an
> error that doesn't occur on the second running, please see attached txt
> with the output.
>
> Second problem: I cannot run env/bin/uk-trace, again please see attached
> txt.
>
> Thanks,
> Costin
>
> On 5/30/19 2:44 AM, Yuri Volchkov wrote:
>> Now it is possible to install uk-trace in your local virtual
>> environment. For example:
>>    python3 -m venv env
>>    . env/bin/activate
>>    cd support/scripts/uk_trace
>>    pip install --editable .
>>    deactivate
>>=20
>> All the dependencies will be installed in the 'env' folder, not to
>> your machine. And you do not need to enter your virtual environment,
>> you can call directly:
>>=20
>>    env/bin/uk-trace
>>=20
>> Signed-off-by: Yuri Volchkov <yuri.volchkov@neclab.eu>
>> ---
>>  .gitignore                        |  1 +
>>  support/scripts/uk_trace/setup.py | 14 ++++++++++++++
>>  2 files changed, 15 insertions(+)
>>  create mode 100644 support/scripts/uk_trace/setup.py
>>=20
>> diff --git a/.gitignore b/.gitignore
>> index 17908b50..09e4ba81 100644
>> --- a/.gitignore
>> +++ b/.gitignore
>> @@ -34,3 +34,4 @@ GTAGS
>>  # cscope files
>>  cscope.*
>>  ncscope.*
>> +support/scripts/uk_trace/uk_trace.egg-info/
>> diff --git a/support/scripts/uk_trace/setup.py b/support/scripts/uk_trac=
e/setup.py
>> new file mode 100644
>> index 00000000..303273ad
>> --- /dev/null
>> +++ b/support/scripts/uk_trace/setup.py
>> @@ -0,0 +1,14 @@
>> +from setuptools import setup
>> +
>> +setup(
>> +    name=3D'uk_trace',
>> +    version=3D'0.1',
>> +    py_modules=3D['main'],
>> +    install_requires=3D[
>> +        'Click', 'tabulate',
>> +    ],
>> +    entry_points=3D'''
>> +        [console_scripts]
>> +        uk-trace=3Dtrace:cli
>> +    ''',
>> +)
>>=20
> (1) --------------- PIP INSTALL PROBLEM ---------------
> (env) ~/unikraft/support/scripts/uk_trace$ pip install --editable .
> Obtaining file:///home/wolf/nfv/dev/unikraft/unikraft.git/support/scripts=
/uk_trace
> Collecting Click (from uk-trace=3D=3D0.1)
>   Using cached https://files.pythonhosted.org/packages/fa/37/45185cb5abbc=
30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any=
.whl=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20
> Collecting tabulate (from uk-trace=3D=3D0.1)
>   Using cached https://files.pythonhosted.org/packages/c2/fd/202954b3f0eb=
896c53b7b6f07390851b1fd2ca84aa95880d7ae4f434c4ac/tabulate-0.8.3.tar.gz=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
> Building wheels for collected packages: tabulate
>   Running setup.py bdist_wheel for tabulate ... error
>   Complete output from command /home/wolf/nfv/dev/unikraft/unikraft.git/e=
nv/bin/python3 -u -c "import setuptools, tokenize;__file__=3D'/tmp/pip-inst=
all-c9z4b9sq/tabulate/setup.py';f=3Dgetattr(tokenize, 'open', open)(__file_=
_);code=3Df.read().replace('\r\n', '\n');f.close();exec(compile(code, __fil=
e__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-1xqn5_md --python-tag cp37:=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20
>   usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
>      or: -c --help [cmd1 cmd2 ...]
>      or: -c --help-commands
>      or: -c cmd --help
>
>   error: invalid command 'bdist_wheel'
>
>   ----------------------------------------
>   Failed building wheel for tabulate
>   Running setup.py clean for tabulate
> Failed to build tabulate
> Installing collected packages: Click, tabulate, uk-trace
>   Running setup.py install for tabulate ... done
>   Running setup.py develop for uk-trace
> Successfully installed Click-7.0 tabulate-0.8.3 uk-trace
> (env) ~/unikraft/support/scripts/uk_trace$ pip install --editable .
> Obtaining file:///home/wolf/nfv/dev/unikraft/unikraft.git/support/scripts=
/uk_trace
> Requirement already satisfied: Click in /home/wolf/nfv/dev/unikraft/unikr=
aft.git/env/lib/python3.7/site-packages (from uk-trace=3D=3D0.1) (7.0)=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
> Requirement already satisfied: tabulate in /home/wolf/nfv/dev/unikraft/un=
ikraft.git/env/lib/python3.7/site-packages (from uk-trace=3D=3D0.1) (0.8.3)=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
> Installing collected packages: uk-trace
>   Found existing installation: uk-trace 0.1
>     Uninstalling uk-trace-0.1:
>       Successfully uninstalled uk-trace-0.1
>   Running setup.py develop for uk-trace
>
>
> (2) --------------- UK-TRACE RUNNING PROBLEM ---------------
> $ env/bin/uk-trace --help
> Traceback (most recent call last):
>   File "/home/wolf/nfv/dev/unikraft/unikraft.git/env/lib/python3.7/site-p=
ackages/pkg_resources/__init__.py", line 2419, in resolve=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20
>     return functools.reduce(getattr, self.attrs, module)
> AttributeError: module 'trace' has no attribute 'cli'
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
>   File "env/bin/uk-trace", line 11, in <module>
>     load_entry_point('uk-trace', 'console_scripts', 'uk-trace')()
>   File "/home/wolf/nfv/dev/unikraft/unikraft.git/env/lib/python3.7/site-p=
ackages/pkg_resources/__init__.py", line 489, in load_entry_point=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
>     return get_distribution(dist).load_entry_point(group, name)
>   File "/home/wolf/nfv/dev/unikraft/unikraft.git/env/lib/python3.7/site-p=
ackages/pkg_resources/__init__.py", line 2793, in load_entry_point=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20
>     return ep.load()
>   File "/home/wolf/nfv/dev/unikraft/unikraft.git/env/lib/python3.7/site-p=
ackages/pkg_resources/__init__.py", line 2411, in load=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20
>     return self.resolve()
>   File "/home/wolf/nfv/dev/unikraft/unikraft.git/env/lib/python3.7/site-p=
ackages/pkg_resources/__init__.py", line 2421, in resolve=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20
>     raise ImportError(str(exc))
> ImportError: module 'trace' has no attribute 'cli'

--=20
Yuri Volchkov
Software Specialist

NEC Europe Ltd
Kurf=C3=BCrsten-Anlage 36
D-69115 Heidelberg

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--=-=-=--


From minios-devel-bounces@lists.xenproject.org Sat Jun 01 12:14:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 12:14: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 1hX2uR-0006V4-B2; Sat, 01 Jun 2019 12:14:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1d17=UA=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hX2uQ-0006Uz-7a
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 12:14:50 +0000
X-Inumbo-ID: d905b7c0-8466-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d905b7c0-8466-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 12:14:48 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id h1so8199668wro.4
 for <minios-devel@lists.xen.org>; Sat, 01 Jun 2019 05:14:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=Bqjq18q2eaaYESzmAHZGMRDBis+MV2oE1hr+AkRBX+g=;
 b=l6x/zuD5oxxknvvufwUe3Hz3c/Jm9LDheOEiEv0Dfqhad+RdVVgaACnQBZ4BTyQhfV
 k/IVtg9+IkyzSFQ6goYTMaptHba9agAyqrIsoagY6Pal8BY4ZksIolQtEM7t7SBO/Rdr
 r3w8Qib4mHnk3vBPhTTFEh7dta8z2qEIqCRaORe5l+bgHRDj2Bx1G9XPYzNilHIldv0B
 nbFRI+pU3xsHVajcSihJnKkqyB2TiBUyTm8V6dPxwkt+2mkANz9AE/+ylSt6UqF7jUYd
 viygCVypX4fyHN7HRIjkgPQWeKcruit/Ip16zzvznVyB/2+Mzqqs47Zq+pO8/Rj+lOVi
 J+pQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=Bqjq18q2eaaYESzmAHZGMRDBis+MV2oE1hr+AkRBX+g=;
 b=mi48UpShZdzs+ZGFVY2hNW42DeLR/QD8YAKyyftI8SjYpFfbIyMQS5YhtuOvBEjRYw
 lodA2+q4yEexoxyfPbba45wQRomcMgAcDppbl3zm+5BOwDxndPOgOQ2bc6buqlCUmZ6X
 JtydydnwwvHHaKcPi5/r5QIMGtPK8BRJ1rawU+wFFpS4MoxSgBVZ18k5hixP89x0u3v6
 YlRMRDaBjP719srOitVH3Tx76CvSbe95hAgj2cQIX1N5poB6A/ZS+J5xQqLBSgLXzwyK
 D85uDxdNb5FgjQHuik33yWtxFz/oXItfQcHrUybovlDRqqE5W6P1DPRzd6NFLoQowFC9
 TG9w==
X-Gm-Message-State: APjAAAWXundUL+5/hUmUbt09g3Ub/vfPcd3AqtdAXVHu50JbG0m701+c
 7Dw5yBqodrOegI+WUWWEI8Kacl7G5yQ=
X-Google-Smtp-Source: APXvYqza0v/5f6CgVdLI3zS+AFITHo31Wh+tnruIRf7Q+DryEUGmS0YCYiHlIj2b+w13Oc9BCy4fsQ==
X-Received: by 2002:a5d:638a:: with SMTP id p10mr3969189wru.273.1559391286585; 
 Sat, 01 Jun 2019 05:14:46 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id y17sm20878668wrg.18.2019.06.01.05.14.45
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 01 Jun 2019 05:14:45 -0700 (PDT)
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, minios-devel@lists.xen.org
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
 <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
 <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <2293e369-70bd-143f-ca1c-eaf8be415cc7@gmail.com>
Date: Sat, 1 Jun 2019 15:14:44 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgWXVyaSwKCk5vcGUsIGl0IGRvZXNuJ3Qgd29yayBlaXRoZXIuIEhvdyBkbyB5b3UgaW5zdGFs
bCB2aXJ0dWFsZW52PyBJcyB0aGlzCnZpcnR1YWxlbnYgYSBweXRob24gcGFja2FnZT8gSWYgc28s
IEkgZ3Vlc3MgaXQgc2hvdWxkIGFsc28gd29yayB3aXRoCnRoaXMgY29tbWFuZDoKCnB5dGhvbjMg
LW0gdmlydHVhbGVudiBlbnYKCklmIHRoYXQncyB0cnVlLCBpdCBmaXhlcyBvbmx5IG15IGZpcnN0
IHByb2JsZW0uIFJlZ2FyZGluZyB0aGUgc2Vjb25kCnByb2JsZW0sICcuL2Vudi9iaW4vdWstdHJh
Y2UgLS1oZWxwJyBzdGlsbCBnZW5lcmF0ZXMgdGhvc2UgZXhjZXB0aW9ucy4KCkFueXdobywgdGhp
cyBwYXRjaCBkZWZlYXRzIGl0cyBwdXJwb3NlLCBvbmUgaGFzIHRvIGluc3RhbGwgdGhlIHRvb2xz
CndoaWNoIHdvdWxkIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgd2hpY2ggd291bGQgaW5zdGFsbCB0
aGUgdG9vbHMgbmVlZGVkCnRvIGp1c3QgcGFyc2UgdGhlIHBhcmFtZXRlcnMgb2YgYSBzY3JpcHQg
LSB0aGlzIGlzIHdhYWFheSB0byBtdWNoIG9mIGEKYnVyZGVuIGZvciB0aGUgZXhwZWN0ZWQgb3V0
Y29tZS4gSXQncyBldmVuIHdvcnNlIHRoYW4gc2ltcGx5IGluc3RhbGxpbmcKcHl0aG9uLWNsaWNr
IHNlcGFyYXRlbHkuIEkgdGhpbmsgd2UgY2FuIGdldCByaWQgb2YgdGhpcyBwYXRjaCBhbHRvZ2V0
aGVyLgoKQ29zdGluCgpPbiA2LzEvMTkgMjo1NyBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBI
aSBDb3N0aW4sCj4gCj4gdGhhbmtzIGZvciB0ZXN0aW5nIHRoaXMuIEkgdGhpbmsgSSBmaXhlZCB5
b3VyIHByb2JsZW1zLiBCZWZvcmUgSSBzZW5kCj4gdjMsIGNvdWxkIHlvdSBwbGVhc2UgdHJ5IGFn
YWluIHdpdGggdGhlIGF0dGFjaGVkIHBhdGNoPwo+IAo+IFBsZWFzZSBub3RlLCB0aGF0IGRvY3Vt
ZW50YXRpb24gaXMgY2hhbmdlZCB0b29sLiBOb3cgY3JlYXRpbmcgb2YgdmlydHVhbAo+IGVudmly
b25tZW50IGlzIGRvbmUgdXNpbmcgJ3ZpcnR1YWxlbnYnIHRvb2wuIFdoaWNoIGluc3RhbGxzICd3
aGVlbCcKPiBwYWNrYWdlIC0gdGhhdCBzaG91bGQgc29sdmUgeW91ciBzZWNvbmQgcHJvYmxlbS4K
PiAKPiBUaGFuayB5b3UhCj4gQ2hlZXJzLCBZdXJpLgo+IAo+IAo+IAo+IENvc3RpbiBMdXB1IDxj
b3N0aW4ubHVwQGdtYWlsLmNvbT4gd3JpdGVzOgo+IAo+PiBIaSBZdXJpLAo+Pgo+PiBVbmZvcnR1
bmF0ZWx5LCB0aGlzIGRvZXNuJ3Qgd29yay4gSSBmb2xsb3dlZCB0aGUgc3RlcHMgb24gMiBkaWZm
ZXJlbnQKPj4gbWFjaGluZXMgcnVubmluZyBEZWJpYW4gOSBhbmQgb24gYSB0aGlyZCBvbmUgd2l0
aCBEZWJpYW4gMTAgKGFsbCBvZiB0aGVtCj4+IHdpdGggdGhlIGxhdGVzdCB1cGRhdGVzKS4gSSB0
cmllZCBjcmVhdGluZyB0aGUgZW52aXJvbm1lbnQgYm90aCBpbiB0aGUKPj4gYXBwbGljYXRpb24g
ZGlyZWN0b3J5IGFuZCB1bmlrcmFmdCBjb3JlIGRpcmVjdG9yeSwgd2l0aG91dCBzdWNjZXNzLgo+
Pgo+PiBGaXJzdCBwcm9ibGVtOiBXaGVuIGZpcnN0IHJ1bm5pbmcgYHBpcCBpbnN0YWxsIC0tZWRp
dGFibGUgLmAgSSBnZXQgYW4KPj4gZXJyb3IgdGhhdCBkb2Vzbid0IG9jY3VyIG9uIHRoZSBzZWNv
bmQgcnVubmluZywgcGxlYXNlIHNlZSBhdHRhY2hlZCB0eHQKPj4gd2l0aCB0aGUgb3V0cHV0Lgo+
Pgo+PiBTZWNvbmQgcHJvYmxlbTogSSBjYW5ub3QgcnVuIGVudi9iaW4vdWstdHJhY2UsIGFnYWlu
IHBsZWFzZSBzZWUgYXR0YWNoZWQKPj4gdHh0Lgo+Pgo+PiBUaGFua3MsCj4+IENvc3Rpbgo+Pgo+
PiBPbiA1LzMwLzE5IDI6NDQgQU0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4+PiBOb3cgaXQgaXMg
cG9zc2libGUgdG8gaW5zdGFsbCB1ay10cmFjZSBpbiB5b3VyIGxvY2FsIHZpcnR1YWwKPj4+IGVu
dmlyb25tZW50LiBGb3IgZXhhbXBsZToKPj4+ICAgIHB5dGhvbjMgLW0gdmVudiBlbnYKPj4+ICAg
IC4gZW52L2Jpbi9hY3RpdmF0ZQo+Pj4gICAgY2Qgc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlCj4+
PiAgICBwaXAgaW5zdGFsbCAtLWVkaXRhYmxlIC4KPj4+ICAgIGRlYWN0aXZhdGUKPj4+Cj4+PiBB
bGwgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluc3RhbGxlZCBpbiB0aGUgJ2VudicgZm9sZGVy
LCBub3QgdG8KPj4+IHlvdXIgbWFjaGluZS4gQW5kIHlvdSBkbyBub3QgbmVlZCB0byBlbnRlciB5
b3VyIHZpcnR1YWwgZW52aXJvbm1lbnQsCj4+PiB5b3UgY2FuIGNhbGwgZGlyZWN0bHk6Cj4+Pgo+
Pj4gICAgZW52L2Jpbi91ay10cmFjZQo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hr
b3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+Pj4gLS0tCj4+PiAgLmdpdGlnbm9yZSAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDEgKwo+Pj4gIHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9z
ZXR1cC5weSB8IDE0ICsrKysrKysrKysrKysrCj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNl
cnRpb25zKCspCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHN1cHBvcnQvc2NyaXB0cy91a190cmFj
ZS9zZXR1cC5weQo+Pj4KPj4+IGRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQo+
Pj4gaW5kZXggMTc5MDhiNTAuLjA5ZTRiYTgxIDEwMDY0NAo+Pj4gLS0tIGEvLmdpdGlnbm9yZQo+
Pj4gKysrIGIvLmdpdGlnbm9yZQo+Pj4gQEAgLTM0LDMgKzM0LDQgQEAgR1RBR1MKPj4+ICAjIGNz
Y29wZSBmaWxlcwo+Pj4gIGNzY29wZS4qCj4+PiAgbmNzY29wZS4qCj4+PiArc3VwcG9ydC9zY3Jp
cHRzL3VrX3RyYWNlL3VrX3RyYWNlLmVnZy1pbmZvLwo+Pj4gZGlmZiAtLWdpdCBhL3N1cHBvcnQv
c2NyaXB0cy91a190cmFjZS9zZXR1cC5weSBiL3N1cHBvcnQvc2NyaXB0cy91a190cmFjZS9zZXR1
cC5weQo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+IGluZGV4IDAwMDAwMDAwLi4zMDMyNzNh
ZAo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3Nl
dHVwLnB5Cj4+PiBAQCAtMCwwICsxLDE0IEBACj4+PiArZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBz
ZXR1cAo+Pj4gKwo+Pj4gK3NldHVwKAo+Pj4gKyAgICBuYW1lPSd1a190cmFjZScsCj4+PiArICAg
IHZlcnNpb249JzAuMScsCj4+PiArICAgIHB5X21vZHVsZXM9WydtYWluJ10sCj4+PiArICAgIGlu
c3RhbGxfcmVxdWlyZXM9Wwo+Pj4gKyAgICAgICAgJ0NsaWNrJywgJ3RhYnVsYXRlJywKPj4+ICsg
ICAgXSwKPj4+ICsgICAgZW50cnlfcG9pbnRzPScnJwo+Pj4gKyAgICAgICAgW2NvbnNvbGVfc2Ny
aXB0c10KPj4+ICsgICAgICAgIHVrLXRyYWNlPXRyYWNlOmNsaQo+Pj4gKyAgICAnJycsCj4+PiAr
KQo+Pj4KPj4gKDEpIC0tLS0tLS0tLS0tLS0tLSBQSVAgSU5TVEFMTCBQUk9CTEVNIC0tLS0tLS0t
LS0tLS0tLQo+PiAoZW52KSB+L3VuaWtyYWZ0L3N1cHBvcnQvc2NyaXB0cy91a190cmFjZSQgcGlw
IGluc3RhbGwgLS1lZGl0YWJsZSAuCj4+IE9idGFpbmluZyBmaWxlOi8vL2hvbWUvd29sZi9uZnYv
ZGV2L3VuaWtyYWZ0L3VuaWtyYWZ0LmdpdC9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UKPj4gQ29s
bGVjdGluZyBDbGljayAoZnJvbSB1ay10cmFjZT09MC4xKQo+PiAgIFVzaW5nIGNhY2hlZCBodHRw
czovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvZmEvMzcvNDUxODVjYjVhYmJjMzBk
NzI1NzEwNGM0MzRmZTBiMDdlNWExOTVhNjg0NzUwNmMwNzQ1MjdhYTU5OWVjL0NsaWNrLTcuMC1w
eTIucHkzLW5vbmUtYW55LndobCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4gQ29sbGVj
dGluZyB0YWJ1bGF0ZSAoZnJvbSB1ay10cmFjZT09MC4xKQo+PiAgIFVzaW5nIGNhY2hlZCBodHRw
czovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvYzIvZmQvMjAyOTU0YjNmMGViODk2
YzUzYjdiNmYwNzM5MDg1MWIxZmQyY2E4NGFhOTU4ODBkN2FlNGY0MzRjNGFjL3RhYnVsYXRlLTAu
OC4zLnRhci5neiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4gQnVpbGRp
bmcgd2hlZWxzIGZvciBjb2xsZWN0ZWQgcGFja2FnZXM6IHRhYnVsYXRlCj4+ICAgUnVubmluZyBz
ZXR1cC5weSBiZGlzdF93aGVlbCBmb3IgdGFidWxhdGUgLi4uIGVycm9yCj4+ICAgQ29tcGxldGUg
b3V0cHV0IGZyb20gY29tbWFuZCAvaG9tZS93b2xmL25mdi9kZXYvdW5pa3JhZnQvdW5pa3JhZnQu
Z2l0L2Vudi9iaW4vcHl0aG9uMyAtdSAtYyAiaW1wb3J0IHNldHVwdG9vbHMsIHRva2VuaXplO19f
ZmlsZV9fPScvdG1wL3BpcC1pbnN0YWxsLWM5ejRiOXNxL3RhYnVsYXRlL3NldHVwLnB5JztmPWdl
dGF0dHIodG9rZW5pemUsICdvcGVuJywgb3BlbikoX19maWxlX18pO2NvZGU9Zi5yZWFkKCkucmVw
bGFjZSgnXHJcbicsICdcbicpO2YuY2xvc2UoKTtleGVjKGNvbXBpbGUoY29kZSwgX19maWxlX18s
ICdleGVjJykpIiBiZGlzdF93aGVlbCAtZCAvdG1wL3BpcC13aGVlbC0xeHFuNV9tZCAtLXB5dGhv
bi10YWcgY3AzNzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKPj4gICB1c2FnZTogLWMgW2dsb2JhbF9vcHRzXSBjbWQxIFtjbWQxX29wdHNdIFtj
bWQyIFtjbWQyX29wdHNdIC4uLl0KPj4gICAgICBvcjogLWMgLS1oZWxwIFtjbWQxIGNtZDIgLi4u
XQo+PiAgICAgIG9yOiAtYyAtLWhlbHAtY29tbWFuZHMKPj4gICAgICBvcjogLWMgY21kIC0taGVs
cAo+Pgo+PiAgIGVycm9yOiBpbnZhbGlkIGNvbW1hbmQgJ2JkaXN0X3doZWVsJwo+Pgo+PiAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gICBGYWlsZWQgYnVpbGRp
bmcgd2hlZWwgZm9yIHRhYnVsYXRlCj4+ICAgUnVubmluZyBzZXR1cC5weSBjbGVhbiBmb3IgdGFi
dWxhdGUKPj4gRmFpbGVkIHRvIGJ1aWxkIHRhYnVsYXRlCj4+IEluc3RhbGxpbmcgY29sbGVjdGVk
IHBhY2thZ2VzOiBDbGljaywgdGFidWxhdGUsIHVrLXRyYWNlCj4+ICAgUnVubmluZyBzZXR1cC5w
eSBpbnN0YWxsIGZvciB0YWJ1bGF0ZSAuLi4gZG9uZQo+PiAgIFJ1bm5pbmcgc2V0dXAucHkgZGV2
ZWxvcCBmb3IgdWstdHJhY2UKPj4gU3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBDbGljay03LjAgdGFi
dWxhdGUtMC44LjMgdWstdHJhY2UKPj4gKGVudikgfi91bmlrcmFmdC9zdXBwb3J0L3NjcmlwdHMv
dWtfdHJhY2UkIHBpcCBpbnN0YWxsIC0tZWRpdGFibGUgLgo+PiBPYnRhaW5pbmcgZmlsZTovLy9o
b21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5naXQvc3VwcG9ydC9zY3JpcHRzL3Vr
X3RyYWNlCj4+IFJlcXVpcmVtZW50IGFscmVhZHkgc2F0aXNmaWVkOiBDbGljayBpbiAvaG9tZS93
b2xmL25mdi9kZXYvdW5pa3JhZnQvdW5pa3JhZnQuZ2l0L2Vudi9saWIvcHl0aG9uMy43L3NpdGUt
cGFja2FnZXMgKGZyb20gdWstdHJhY2U9PTAuMSkgKDcuMCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAo+PiBSZXF1aXJlbWVudCBhbHJlYWR5IHNhdGlzZmllZDogdGFi
dWxhdGUgaW4gL2hvbWUvd29sZi9uZnYvZGV2L3VuaWtyYWZ0L3VuaWtyYWZ0LmdpdC9lbnYvbGli
L3B5dGhvbjMuNy9zaXRlLXBhY2thZ2VzIChmcm9tIHVrLXRyYWNlPT0wLjEpICgwLjguMykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4gSW5zdGFsbGluZyBjb2xsZWN0ZWQg
cGFja2FnZXM6IHVrLXRyYWNlCj4+ICAgRm91bmQgZXhpc3RpbmcgaW5zdGFsbGF0aW9uOiB1ay10
cmFjZSAwLjEKPj4gICAgIFVuaW5zdGFsbGluZyB1ay10cmFjZS0wLjE6Cj4+ICAgICAgIFN1Y2Nl
c3NmdWxseSB1bmluc3RhbGxlZCB1ay10cmFjZS0wLjEKPj4gICBSdW5uaW5nIHNldHVwLnB5IGRl
dmVsb3AgZm9yIHVrLXRyYWNlCj4+Cj4+Cj4+ICgyKSAtLS0tLS0tLS0tLS0tLS0gVUstVFJBQ0Ug
UlVOTklORyBQUk9CTEVNIC0tLS0tLS0tLS0tLS0tLQo+PiAkIGVudi9iaW4vdWstdHJhY2UgLS1o
ZWxwCj4+IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKPj4gICBGaWxlICIvaG9t
ZS93b2xmL25mdi9kZXYvdW5pa3JhZnQvdW5pa3JhZnQuZ2l0L2Vudi9saWIvcHl0aG9uMy43L3Np
dGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fX2luaXRfXy5weSIsIGxpbmUgMjQxOSwgaW4gcmVz
b2x2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4+
ICAgICByZXR1cm4gZnVuY3Rvb2xzLnJlZHVjZShnZXRhdHRyLCBzZWxmLmF0dHJzLCBtb2R1bGUp
Cj4+IEF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ3RyYWNlJyBoYXMgbm8gYXR0cmlidXRlICdjbGkn
Cj4+Cj4+IER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4
Y2VwdGlvbiBvY2N1cnJlZDoKPj4KPj4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp
Ogo+PiAgIEZpbGUgImVudi9iaW4vdWstdHJhY2UiLCBsaW5lIDExLCBpbiA8bW9kdWxlPgo+PiAg
ICAgbG9hZF9lbnRyeV9wb2ludCgndWstdHJhY2UnLCAnY29uc29sZV9zY3JpcHRzJywgJ3VrLXRy
YWNlJykoKQo+PiAgIEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5n
aXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19faW5pdF9f
LnB5IiwgbGluZSA0ODksIGluIGxvYWRfZW50cnlfcG9pbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKPj4gICAgIHJldHVybiBnZXRfZGlzdHJpYnV0aW9uKGRpc3Qp
LmxvYWRfZW50cnlfcG9pbnQoZ3JvdXAsIG5hbWUpCj4+ICAgRmlsZSAiL2hvbWUvd29sZi9uZnYv
ZGV2L3VuaWtyYWZ0L3VuaWtyYWZ0LmdpdC9lbnYvbGliL3B5dGhvbjMuNy9zaXRlLXBhY2thZ2Vz
L3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHkiLCBsaW5lIDI3OTMsIGluIGxvYWRfZW50cnlfcG9p
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+PiAgICAgcmV0dXJu
IGVwLmxvYWQoKQo+PiAgIEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFm
dC5naXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19faW5p
dF9fLnB5IiwgbGluZSAyNDExLCBpbiBsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKPj4gICAgIHJldHVybiBzZWxmLnJlc29sdmUoKQo+PiAg
IEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5naXQvZW52L2xpYi9w
eXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19faW5pdF9fLnB5IiwgbGluZSAy
NDIxLCBpbiByZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKPj4gICAgIHJhaXNlIEltcG9ydEVycm9yKHN0cihleGMpKQo+PiBJbXBvcnRFcnJv
cjogbW9kdWxlICd0cmFjZScgaGFzIG5vIGF0dHJpYnV0ZSAnY2xpJwo+IAoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 01 13:06:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 13:06: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 1hX3i8-00027h-5W; Sat, 01 Jun 2019 13:06: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=NqJ9=UA=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hX3i7-00027c-2Z
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 13:06:11 +0000
X-Inumbo-ID: 03a5de72-846e-11e9-9abf-777361c4c6a5
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 03a5de72-846e-11e9-9abf-777361c4c6a5;
 Sat, 01 Jun 2019 13:06:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1511A10531B;
 Sat,  1 Jun 2019 15:06:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mBnpuEWjZnCL; Sat,  1 Jun 2019 15:06:04 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D9D42105315;
 Sat,  1 Jun 2019 15:06:04 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sat, 1 Jun 2019 15:06:04 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
In-Reply-To: <2293e369-70bd-143f-ca1c-eaf8be415cc7@gmail.com>
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
 <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
 <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
 <2293e369-70bd-143f-ca1c-eaf8be415cc7@gmail.com>
Date: Sat, 1 Jun 2019 15:06:01 +0200
Message-ID: <tza4s2a7f1o3pi.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

Q29zdGluIEx1cHUgPGNvc3Rpbi5sdXBAZ21haWwuY29tPiB3cml0ZXM6Cgo+IEhpIFl1cmksCj4K
PiBOb3BlLCBpdCBkb2Vzbid0IHdvcmsgZWl0aGVyLiBIb3cgZG8geW91IGluc3RhbGwgdmlydHVh
bGVudj8KSSBkb24ndCByZW1lbWJlciBob3cgZGlkIEkgaW5zdGFsbCBpdCBvbiBteSB3b3JraW5n
IG1hY2hpbmUuIEJ1dCBmb3IKZml4aW5nIHRoaXMgcHJvYmxlbXMgSSB0ZXN0ZWQgaXQgaW4gdGhl
IGNsZWFuIGRvY2tlciBjb250YWluZXIKKFVidW50dSkuIEkgaW5zdGFsbGVkIGl0IGFzCgogICBz
dWRvIGFwdCBpbnN0YWxsIHZpcnR1YWxlbnYKCj4gSXMgdGhpcyB2aXJ0dWFsZW52IGEgcHl0aG9u
IHBhY2thZ2U/IElmIHNvLCBJIGd1ZXNzIGl0IHNob3VsZCBhbHNvCj4gd29yayB3aXRoIHRoaXMg
Y29tbWFuZDoKPgo+IHB5dGhvbjMgLW0gdmlydHVhbGVudiBlbnYKPgo+IElmIHRoYXQncyB0cnVl
LCBpdCBmaXhlcyBvbmx5IG15IGZpcnN0IHByb2JsZW0uIFJlZ2FyZGluZyB0aGUgc2Vjb25kCj4g
cHJvYmxlbSwgJy4vZW52L2Jpbi91ay10cmFjZSAtLWhlbHAnIHN0aWxsIGdlbmVyYXRlcyB0aG9z
ZSBleGNlcHRpb25zLgpOb3cgdGhhdCBpcyBzdHJhbmdlLiBQbGVhc2UgdHJ5IHRvIHJlbW92ZSB5
b3VyICdlbnYnIGZvbGRlciBhbmQgcmVjcmVhdGUKaXQgZnJvbSBzY3JhdGNoLiBQcm9iYWJseSBz
b21ldGhpbmcgaXMgc2NyZXdlZCBpbiB5b3VyIHZpcnR1YWwKZW52aXJvbm1lbnQgYWZ0ZXIgbXVs
dGlwbGUgZXhwZXJpbWVudHMuCgo+Cj4gQW55d2hvLCB0aGlzIHBhdGNoIGRlZmVhdHMgaXRzIHB1
cnBvc2UsIG9uZSBoYXMgdG8gaW5zdGFsbCB0aGUgdG9vbHMKPiB3aGljaCB3b3VsZCBjcmVhdGUg
dGhlIGVudmlyb25tZW50IHdoaWNoIHdvdWxkIGluc3RhbGwgdGhlIHRvb2xzIG5lZWRlZAo+IHRv
IGp1c3QgcGFyc2UgdGhlIHBhcmFtZXRlcnMgb2YgYSBzY3JpcHQgLSB0aGlzIGlzIHdhYWFheSB0
byBtdWNoIG9mIGEKPiBidXJkZW4gZm9yIHRoZSBleHBlY3RlZCBvdXRjb21lLiBJdCdzIGV2ZW4g
d29yc2UgdGhhbiBzaW1wbHkgaW5zdGFsbGluZwo+IHB5dGhvbi1jbGljayBzZXBhcmF0ZWx5LiBJ
IHRoaW5rIHdlIGNhbiBnZXQgcmlkIG9mIHRoaXMgcGF0Y2gKPiBhbHRvZ2V0aGVyLgpPaywgbGV0
J3MgZ2V0IGJhY2sgdG8gdmVudiB0aGVuLiBPbmUgZGlmZmVyZW5jZSAod2hpY2ggZG9lcyBoZWxw
IHdpdGgKeW91ciBwcm9ibGVtKSBpcyB0aGF0IHZpcnR1YWxlbnYgaW5zdGFsbHMgZnJlc2ggcGlw
IGFuZCBkZXBlbmRlbmNpZXMKaW50byBhIG5ld2x5IGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVu
dC4gQSBzaW1pbGFyIGVmZmVjdCBjYW4gYmUKYWNoaWV2ZWQgbGlrZSB0aGlzOgoKICAgcHl0aG9u
MyAtbSB2ZW52IGVudgogICAuIGVudi9iaW4vYWN0aXZhdGUKICAgcGlwIGluc3RhbGwgLS11cGdy
YWRlIHBpcAoKQlRXLCB0aGlzIGNvdWxkIGFjdHVhbGx5IGJlIHRoZSByZWFzb24gd2h5IHJlbW92
aW5nICctLWVkaXRhYmxlJwpoZWxwZWQuIExvb2tzIGxpa2UgZmlycyBydW4gb2YgcGlwIHRocm93
cyBhbiBlcnJvciBhbmQgZml4ZXMgdGhlCnByb2JsZW0uIEFuZCBhbnkgc3Vic2VxdWVudCBydW4g
ZG9lcyBub3QgcHJvZHVjZSBpdCBhbnltb3JlLiBTbyBsb29rcwpsaWtlICctLWVkaXRhYmxlJyBp
cyBub3QgdGhlIHJlYXNvbiBhdCBhbGwuIEJ1dCwgaXQgaXMgbXkgZ3Vlc3MsIEkgZG9uJ3QKcmVh
bGx5IHdhbnQgdG8gZGlnIGludG8gc2V0dXAgdG9vbHMgbm93LgoKQW55d2F5cywgdmlydHVhbCBl
bnZpcm9ubWVudHMgYXJlIHByZXR0eSBjb21tb24gd2F5IG9mIHdvcmtpbmcgd2l0aApweXRob24g
dGhlc2UgZGF5cy4gSSBzdGlsbCB0aGluayB0aGlzIHBhdGNoIG1ha2VzIHNlbnNlLiBJdCBnaXZl
cyB5b3UgYQpjaG9pY2UuCgo+Cj4gQ29zdGluCj4KPiBPbiA2LzEvMTkgMjo1NyBQTSwgWXVyaSBW
b2xjaGtvdiB3cm90ZToKPj4gSGkgQ29zdGluLAo+PiAKPj4gdGhhbmtzIGZvciB0ZXN0aW5nIHRo
aXMuIEkgdGhpbmsgSSBmaXhlZCB5b3VyIHByb2JsZW1zLiBCZWZvcmUgSSBzZW5kCj4+IHYzLCBj
b3VsZCB5b3UgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIHRoZSBhdHRhY2hlZCBwYXRjaD8KPj4gCj4+
IFBsZWFzZSBub3RlLCB0aGF0IGRvY3VtZW50YXRpb24gaXMgY2hhbmdlZCB0b29sLiBOb3cgY3Jl
YXRpbmcgb2YgdmlydHVhbAo+PiBlbnZpcm9ubWVudCBpcyBkb25lIHVzaW5nICd2aXJ0dWFsZW52
JyB0b29sLiBXaGljaCBpbnN0YWxscyAnd2hlZWwnCj4+IHBhY2thZ2UgLSB0aGF0IHNob3VsZCBz
b2x2ZSB5b3VyIHNlY29uZCBwcm9ibGVtLgo+PiAKPj4gVGhhbmsgeW91IQo+PiBDaGVlcnMsIFl1
cmkuCj4+IAo+PiAKPj4gCj4+IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4gd3Jp
dGVzOgo+PiAKPj4+IEhpIFl1cmksCj4+Pgo+Pj4gVW5mb3J0dW5hdGVseSwgdGhpcyBkb2Vzbid0
IHdvcmsuIEkgZm9sbG93ZWQgdGhlIHN0ZXBzIG9uIDIgZGlmZmVyZW50Cj4+PiBtYWNoaW5lcyBy
dW5uaW5nIERlYmlhbiA5IGFuZCBvbiBhIHRoaXJkIG9uZSB3aXRoIERlYmlhbiAxMCAoYWxsIG9m
IHRoZW0KPj4+IHdpdGggdGhlIGxhdGVzdCB1cGRhdGVzKS4gSSB0cmllZCBjcmVhdGluZyB0aGUg
ZW52aXJvbm1lbnQgYm90aCBpbiB0aGUKPj4+IGFwcGxpY2F0aW9uIGRpcmVjdG9yeSBhbmQgdW5p
a3JhZnQgY29yZSBkaXJlY3RvcnksIHdpdGhvdXQgc3VjY2Vzcy4KPj4+Cj4+PiBGaXJzdCBwcm9i
bGVtOiBXaGVuIGZpcnN0IHJ1bm5pbmcgYHBpcCBpbnN0YWxsIC0tZWRpdGFibGUgLmAgSSBnZXQg
YW4KPj4+IGVycm9yIHRoYXQgZG9lc24ndCBvY2N1ciBvbiB0aGUgc2Vjb25kIHJ1bm5pbmcsIHBs
ZWFzZSBzZWUgYXR0YWNoZWQgdHh0Cj4+PiB3aXRoIHRoZSBvdXRwdXQuCj4+Pgo+Pj4gU2Vjb25k
IHByb2JsZW06IEkgY2Fubm90IHJ1biBlbnYvYmluL3VrLXRyYWNlLCBhZ2FpbiBwbGVhc2Ugc2Vl
IGF0dGFjaGVkCj4+PiB0eHQuCj4+Pgo+Pj4gVGhhbmtzLAo+Pj4gQ29zdGluCj4+Pgo+Pj4gT24g
NS8zMC8xOSAyOjQ0IEFNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+Pj4+IE5vdyBpdCBpcyBwb3Nz
aWJsZSB0byBpbnN0YWxsIHVrLXRyYWNlIGluIHlvdXIgbG9jYWwgdmlydHVhbAo+Pj4+IGVudmly
b25tZW50LiBGb3IgZXhhbXBsZToKPj4+PiAgICBweXRob24zIC1tIHZlbnYgZW52Cj4+Pj4gICAg
LiBlbnYvYmluL2FjdGl2YXRlCj4+Pj4gICAgY2Qgc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlCj4+
Pj4gICAgcGlwIGluc3RhbGwgLS1lZGl0YWJsZSAuCj4+Pj4gICAgZGVhY3RpdmF0ZQo+Pj4+Cj4+
Pj4gQWxsIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0YWxsZWQgaW4gdGhlICdlbnYnIGZv
bGRlciwgbm90IHRvCj4+Pj4geW91ciBtYWNoaW5lLiBBbmQgeW91IGRvIG5vdCBuZWVkIHRvIGVu
dGVyIHlvdXIgdmlydHVhbCBlbnZpcm9ubWVudCwKPj4+PiB5b3UgY2FuIGNhbGwgZGlyZWN0bHk6
Cj4+Pj4KPj4+PiAgICBlbnYvYmluL3VrLXRyYWNlCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBZ
dXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPj4+PiAtLS0KPj4+PiAgLmdp
dGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwo+Pj4+ICBzdXBwb3J0L3Njcmlw
dHMvdWtfdHJhY2Uvc2V0dXAucHkgfCAxNCArKysrKysrKysrKysrKwo+Pj4+ICAyIGZpbGVzIGNo
YW5nZWQsIDE1IGluc2VydGlvbnMoKykKPj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHN1cHBvcnQv
c2NyaXB0cy91a190cmFjZS9zZXR1cC5weQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhLy5naXRpZ25v
cmUgYi8uZ2l0aWdub3JlCj4+Pj4gaW5kZXggMTc5MDhiNTAuLjA5ZTRiYTgxIDEwMDY0NAo+Pj4+
IC0tLSBhLy5naXRpZ25vcmUKPj4+PiArKysgYi8uZ2l0aWdub3JlCj4+Pj4gQEAgLTM0LDMgKzM0
LDQgQEAgR1RBR1MKPj4+PiAgIyBjc2NvcGUgZmlsZXMKPj4+PiAgY3Njb3BlLioKPj4+PiAgbmNz
Y29wZS4qCj4+Pj4gK3N1cHBvcnQvc2NyaXB0cy91a190cmFjZS91a190cmFjZS5lZ2ctaW5mby8K
Pj4+PiBkaWZmIC0tZ2l0IGEvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3NldHVwLnB5IGIvc3Vw
cG9ydC9zY3JpcHRzL3VrX3RyYWNlL3NldHVwLnB5Cj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK
Pj4+PiBpbmRleCAwMDAwMDAwMC4uMzAzMjczYWQKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysr
IGIvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3NldHVwLnB5Cj4+Pj4gQEAgLTAsMCArMSwxNCBA
QAo+Pj4+ICtmcm9tIHNldHVwdG9vbHMgaW1wb3J0IHNldHVwCj4+Pj4gKwo+Pj4+ICtzZXR1cCgK
Pj4+PiArICAgIG5hbWU9J3VrX3RyYWNlJywKPj4+PiArICAgIHZlcnNpb249JzAuMScsCj4+Pj4g
KyAgICBweV9tb2R1bGVzPVsnbWFpbiddLAo+Pj4+ICsgICAgaW5zdGFsbF9yZXF1aXJlcz1bCj4+
Pj4gKyAgICAgICAgJ0NsaWNrJywgJ3RhYnVsYXRlJywKPj4+PiArICAgIF0sCj4+Pj4gKyAgICBl
bnRyeV9wb2ludHM9JycnCj4+Pj4gKyAgICAgICAgW2NvbnNvbGVfc2NyaXB0c10KPj4+PiArICAg
ICAgICB1ay10cmFjZT10cmFjZTpjbGkKPj4+PiArICAgICcnJywKPj4+PiArKQo+Pj4+Cj4+PiAo
MSkgLS0tLS0tLS0tLS0tLS0tIFBJUCBJTlNUQUxMIFBST0JMRU0gLS0tLS0tLS0tLS0tLS0tCj4+
PiAoZW52KSB+L3VuaWtyYWZ0L3N1cHBvcnQvc2NyaXB0cy91a190cmFjZSQgcGlwIGluc3RhbGwg
LS1lZGl0YWJsZSAuCj4+PiBPYnRhaW5pbmcgZmlsZTovLy9ob21lL3dvbGYvbmZ2L2Rldi91bmlr
cmFmdC91bmlrcmFmdC5naXQvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlCj4+PiBDb2xsZWN0aW5n
IENsaWNrIChmcm9tIHVrLXRyYWNlPT0wLjEpCj4+PiAgIFVzaW5nIGNhY2hlZCBodHRwczovL2Zp
bGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvZmEvMzcvNDUxODVjYjVhYmJjMzBkNzI1NzEw
NGM0MzRmZTBiMDdlNWExOTVhNjg0NzUwNmMwNzQ1MjdhYTU5OWVjL0NsaWNrLTcuMC1weTIucHkz
LW5vbmUtYW55LndobCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4+IENvbGxlY3Rpbmcg
dGFidWxhdGUgKGZyb20gdWstdHJhY2U9PTAuMSkKPj4+ICAgVXNpbmcgY2FjaGVkIGh0dHBzOi8v
ZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9jMi9mZC8yMDI5NTRiM2YwZWI4OTZjNTNi
N2I2ZjA3MzkwODUxYjFmZDJjYTg0YWE5NTg4MGQ3YWU0ZjQzNGM0YWMvdGFidWxhdGUtMC44LjMu
dGFyLmd6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+Pj4gQnVpbGRpbmcg
d2hlZWxzIGZvciBjb2xsZWN0ZWQgcGFja2FnZXM6IHRhYnVsYXRlCj4+PiAgIFJ1bm5pbmcgc2V0
dXAucHkgYmRpc3Rfd2hlZWwgZm9yIHRhYnVsYXRlIC4uLiBlcnJvcgo+Pj4gICBDb21wbGV0ZSBv
dXRwdXQgZnJvbSBjb21tYW5kIC9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5n
aXQvZW52L2Jpbi9weXRob24zIC11IC1jICJpbXBvcnQgc2V0dXB0b29scywgdG9rZW5pemU7X19m
aWxlX189Jy90bXAvcGlwLWluc3RhbGwtYzl6NGI5c3EvdGFidWxhdGUvc2V0dXAucHknO2Y9Z2V0
YXR0cih0b2tlbml6ZSwgJ29wZW4nLCBvcGVuKShfX2ZpbGVfXyk7Y29kZT1mLnJlYWQoKS5yZXBs
YWNlKCdcclxuJywgJ1xuJyk7Zi5jbG9zZSgpO2V4ZWMoY29tcGlsZShjb2RlLCBfX2ZpbGVfXywg
J2V4ZWMnKSkiIGJkaXN0X3doZWVsIC1kIC90bXAvcGlwLXdoZWVsLTF4cW41X21kIC0tcHl0aG9u
LXRhZyBjcDM3OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAo+Pj4gICB1c2FnZTogLWMgW2dsb2JhbF9vcHRzXSBjbWQxIFtjbWQxX29wdHNdIFtj
bWQyIFtjbWQyX29wdHNdIC4uLl0KPj4+ICAgICAgb3I6IC1jIC0taGVscCBbY21kMSBjbWQyIC4u
Ll0KPj4+ICAgICAgb3I6IC1jIC0taGVscC1jb21tYW5kcwo+Pj4gICAgICBvcjogLWMgY21kIC0t
aGVscAo+Pj4KPj4+ICAgZXJyb3I6IGludmFsaWQgY29tbWFuZCAnYmRpc3Rfd2hlZWwnCj4+Pgo+
Pj4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgIEZhaWxl
ZCBidWlsZGluZyB3aGVlbCBmb3IgdGFidWxhdGUKPj4+ICAgUnVubmluZyBzZXR1cC5weSBjbGVh
biBmb3IgdGFidWxhdGUKPj4+IEZhaWxlZCB0byBidWlsZCB0YWJ1bGF0ZQo+Pj4gSW5zdGFsbGlu
ZyBjb2xsZWN0ZWQgcGFja2FnZXM6IENsaWNrLCB0YWJ1bGF0ZSwgdWstdHJhY2UKPj4+ICAgUnVu
bmluZyBzZXR1cC5weSBpbnN0YWxsIGZvciB0YWJ1bGF0ZSAuLi4gZG9uZQo+Pj4gICBSdW5uaW5n
IHNldHVwLnB5IGRldmVsb3AgZm9yIHVrLXRyYWNlCj4+PiBTdWNjZXNzZnVsbHkgaW5zdGFsbGVk
IENsaWNrLTcuMCB0YWJ1bGF0ZS0wLjguMyB1ay10cmFjZQo+Pj4gKGVudikgfi91bmlrcmFmdC9z
dXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UkIHBpcCBpbnN0YWxsIC0tZWRpdGFibGUgLgo+Pj4gT2J0
YWluaW5nIGZpbGU6Ly8vaG9tZS93b2xmL25mdi9kZXYvdW5pa3JhZnQvdW5pa3JhZnQuZ2l0L3N1
cHBvcnQvc2NyaXB0cy91a190cmFjZQo+Pj4gUmVxdWlyZW1lbnQgYWxyZWFkeSBzYXRpc2ZpZWQ6
IENsaWNrIGluIC9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5naXQvZW52L2xp
Yi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcyAoZnJvbSB1ay10cmFjZT09MC4xKSAoNy4wKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4+PiBSZXF1aXJlbWVudCBhbHJl
YWR5IHNhdGlzZmllZDogdGFidWxhdGUgaW4gL2hvbWUvd29sZi9uZnYvZGV2L3VuaWtyYWZ0L3Vu
aWtyYWZ0LmdpdC9lbnYvbGliL3B5dGhvbjMuNy9zaXRlLXBhY2thZ2VzIChmcm9tIHVrLXRyYWNl
PT0wLjEpICgwLjguMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4+IElu
c3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiB1ay10cmFjZQo+Pj4gICBGb3VuZCBleGlzdGlu
ZyBpbnN0YWxsYXRpb246IHVrLXRyYWNlIDAuMQo+Pj4gICAgIFVuaW5zdGFsbGluZyB1ay10cmFj
ZS0wLjE6Cj4+PiAgICAgICBTdWNjZXNzZnVsbHkgdW5pbnN0YWxsZWQgdWstdHJhY2UtMC4xCj4+
PiAgIFJ1bm5pbmcgc2V0dXAucHkgZGV2ZWxvcCBmb3IgdWstdHJhY2UKPj4+Cj4+Pgo+Pj4gKDIp
IC0tLS0tLS0tLS0tLS0tLSBVSy1UUkFDRSBSVU5OSU5HIFBST0JMRU0gLS0tLS0tLS0tLS0tLS0t
Cj4+PiAkIGVudi9iaW4vdWstdHJhY2UgLS1oZWxwCj4+PiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50
IGNhbGwgbGFzdCk6Cj4+PiAgIEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlr
cmFmdC5naXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19f
aW5pdF9fLnB5IiwgbGluZSAyNDE5LCBpbiByZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4+ICAgICByZXR1cm4gZnVuY3Rvb2xzLnJlZHVj
ZShnZXRhdHRyLCBzZWxmLmF0dHJzLCBtb2R1bGUpCj4+PiBBdHRyaWJ1dGVFcnJvcjogbW9kdWxl
ICd0cmFjZScgaGFzIG5vIGF0dHJpYnV0ZSAnY2xpJwo+Pj4KPj4+IER1cmluZyBoYW5kbGluZyBv
ZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKPj4+Cj4+
PiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Cj4+PiAgIEZpbGUgImVudi9iaW4v
dWstdHJhY2UiLCBsaW5lIDExLCBpbiA8bW9kdWxlPgo+Pj4gICAgIGxvYWRfZW50cnlfcG9pbnQo
J3VrLXRyYWNlJywgJ2NvbnNvbGVfc2NyaXB0cycsICd1ay10cmFjZScpKCkKPj4+ICAgRmlsZSAi
L2hvbWUvd29sZi9uZnYvZGV2L3VuaWtyYWZ0L3VuaWtyYWZ0LmdpdC9lbnYvbGliL3B5dGhvbjMu
Ny9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHkiLCBsaW5lIDQ4OSwgaW4g
bG9hZF9lbnRyeV9wb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAo+Pj4gICAgIHJldHVybiBnZXRfZGlzdHJpYnV0aW9uKGRpc3QpLmxvYWRfZW50cnlfcG9pbnQo
Z3JvdXAsIG5hbWUpCj4+PiAgIEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlr
cmFmdC5naXQvZW52L2xpYi9weXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19f
aW5pdF9fLnB5IiwgbGluZSAyNzkzLCBpbiBsb2FkX2VudHJ5X3BvaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKPj4+ICAgICByZXR1cm4gZXAubG9hZCgpCj4+PiAg
IEZpbGUgIi9ob21lL3dvbGYvbmZ2L2Rldi91bmlrcmFmdC91bmlrcmFmdC5naXQvZW52L2xpYi9w
eXRob24zLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL19faW5pdF9fLnB5IiwgbGluZSAy
NDExLCBpbiBsb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKPj4+ICAgICByZXR1cm4gc2VsZi5yZXNvbHZlKCkKPj4+ICAgRmlsZSAiL2hvbWUv
d29sZi9uZnYvZGV2L3VuaWtyYWZ0L3VuaWtyYWZ0LmdpdC9lbnYvbGliL3B5dGhvbjMuNy9zaXRl
LXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHkiLCBsaW5lIDI0MjEsIGluIHJlc29s
dmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+Pj4g
ICAgIHJhaXNlIEltcG9ydEVycm9yKHN0cihleGMpKQo+Pj4gSW1wb3J0RXJyb3I6IG1vZHVsZSAn
dHJhY2UnIGhhcyBubyBhdHRyaWJ1dGUgJ2NsaScKPj4gCgotLSAKWXVyaSBWb2xjaGtvdgpTb2Z0
d2FyZSBTcGVjaWFsaXN0CgpORUMgRXVyb3BlIEx0ZApLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYKRC02
OTExNSBIZWlkZWxiZXJnCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 01 13:53:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 13:53: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 1hX4Rn-000664-Qe; Sat, 01 Jun 2019 13:53:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1d17=UA=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hX4Rm-00065z-Al
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 13:53:22 +0000
X-Inumbo-ID: 9d43cefd-8474-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9d43cefd-8474-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 13:53:20 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id d17so7711296wmb.3
 for <minios-devel@lists.xen.org>; Sat, 01 Jun 2019 06:53:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=C/UM/+lXFEAXFLQYWZn18PfMheULC499Ju/VqMT3MQU=;
 b=aET3deiDGh6kInxO56VWf3H9cZl+FiXNb3bYuwC97S6QLpVCDyybOoOx6I8/Xn27pj
 TnBpkWe2gJPastMLTYE+abDSNLwfCA3MIrSDCjeDUTcrKM5/J1ia6VE+1IB66YlY3j0Q
 +SFBCC7Z2fhFH4FSjwT/1fsOcMyFtvyC0M/I0WEC/hJkizItUwGppbN3KKTG4kwm4Hgh
 Nx1+ocK7iZr4MT7ZmjW2gLFCOwUGPT0tJVcVADYoJOzZvOV6mXdVDZ8nrviSPn7xEccR
 jXSpy8vsSub3S0N597dTE7uwt8pI//RJ4pHGwdKJtJR8SmhF8ZCpSttP5NGKNkNHMTxA
 G/Kg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=C/UM/+lXFEAXFLQYWZn18PfMheULC499Ju/VqMT3MQU=;
 b=mkLDPFqJ0wTiJ8zf1rKSQfNs37M5bW9l3wyPEtPAMlTVeS4E3JUnsaE7aTjCAfAQFZ
 SUzy6/Ud3m3jsyrJSplKQcVYsM7qVZ385cres4uyJTQu/p9lfDIGl+eoCzgwOt0CUmn2
 PdsvPlzBUZTGIvD4OLY1MOEwogb3ehpU50M29gNTi/oLmNOi8h6fcje5MTwo8VSjE7KF
 +vZccBkFBrT4M1OgDSnslvardJYQ19mBfdLJ/MoWzaza/SGU9YR0hs+Yb1b/KYgmw3W+
 H6771rWVKLl9jfVTtouGxbIjGOfFgq1KvFce08OCkKdVoUaIP9tNKOPt8v+MxzmI7vsz
 MgtQ==
X-Gm-Message-State: APjAAAX6YQ8xCZ9pj9bXeJIAS197fDyptGZmAJ1ivLibsZQvdEJkx6Pe
 Bvammg0ZidjDspFrxDehzPtt5j1DUyk=
X-Google-Smtp-Source: APXvYqwlxNi8XvNpBx8hjF1NeNfcfujKHwHCMR9JZntcnrVHtbOUl9touBcraXDuy4gMpNXdvgq8sg==
X-Received: by 2002:a1c:44d4:: with SMTP id r203mr6812372wma.158.1559397199265; 
 Sat, 01 Jun 2019 06:53:19 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id 61sm2312242wrm.46.2019.06.01.06.53.16
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 01 Jun 2019 06:53:17 -0700 (PDT)
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, minios-devel@lists.xen.org
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
 <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
 <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
 <2293e369-70bd-143f-ca1c-eaf8be415cc7@gmail.com>
 <tza4s2a7f1o3pi.fsf@N-1128.office.hd>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <985b995c-6f2d-c9bd-abc5-08890fd5fc26@gmail.com>
Date: Sat, 1 Jun 2019 16:53:15 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <tza4s2a7f1o3pi.fsf@N-1128.office.hd>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

T24gNi8xLzE5IDQ6MDYgUE0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gQ29zdGluIEx1cHUgPGNv
c3Rpbi5sdXBAZ21haWwuY29tPiB3cml0ZXM6Cj4gCj4+IEhpIFl1cmksCj4+Cj4+IE5vcGUsIGl0
IGRvZXNuJ3Qgd29yayBlaXRoZXIuIEhvdyBkbyB5b3UgaW5zdGFsbCB2aXJ0dWFsZW52Pwo+IEkg
ZG9uJ3QgcmVtZW1iZXIgaG93IGRpZCBJIGluc3RhbGwgaXQgb24gbXkgd29ya2luZyBtYWNoaW5l
LiBCdXQgZm9yCj4gZml4aW5nIHRoaXMgcHJvYmxlbXMgSSB0ZXN0ZWQgaXQgaW4gdGhlIGNsZWFu
IGRvY2tlciBjb250YWluZXIKPiAoVWJ1bnR1KS4gSSBpbnN0YWxsZWQgaXQgYXMKPiAKPiAgICBz
dWRvIGFwdCBpbnN0YWxsIHZpcnR1YWxlbnYKPiAKPj4gSXMgdGhpcyB2aXJ0dWFsZW52IGEgcHl0
aG9uIHBhY2thZ2U/IElmIHNvLCBJIGd1ZXNzIGl0IHNob3VsZCBhbHNvCj4+IHdvcmsgd2l0aCB0
aGlzIGNvbW1hbmQ6Cj4+Cj4+IHB5dGhvbjMgLW0gdmlydHVhbGVudiBlbnYKPj4KPj4gSWYgdGhh
dCdzIHRydWUsIGl0IGZpeGVzIG9ubHkgbXkgZmlyc3QgcHJvYmxlbS4gUmVnYXJkaW5nIHRoZSBz
ZWNvbmQKPj4gcHJvYmxlbSwgJy4vZW52L2Jpbi91ay10cmFjZSAtLWhlbHAnIHN0aWxsIGdlbmVy
YXRlcyB0aG9zZSBleGNlcHRpb25zLgo+IE5vdyB0aGF0IGlzIHN0cmFuZ2UuIFBsZWFzZSB0cnkg
dG8gcmVtb3ZlIHlvdXIgJ2VudicgZm9sZGVyIGFuZCByZWNyZWF0ZQo+IGl0IGZyb20gc2NyYXRj
aC4gUHJvYmFibHkgc29tZXRoaW5nIGlzIHNjcmV3ZWQgaW4geW91ciB2aXJ0dWFsCj4gZW52aXJv
bm1lbnQgYWZ0ZXIgbXVsdGlwbGUgZXhwZXJpbWVudHMuCj4gCgpJIHJlbW92ZSB0aGUgZW52IGRp
cmVjdG9yeSBlYWNoIHRpbWUuCgo+Pgo+PiBBbnl3aG8sIHRoaXMgcGF0Y2ggZGVmZWF0cyBpdHMg
cHVycG9zZSwgb25lIGhhcyB0byBpbnN0YWxsIHRoZSB0b29scwo+PiB3aGljaCB3b3VsZCBjcmVh
dGUgdGhlIGVudmlyb25tZW50IHdoaWNoIHdvdWxkIGluc3RhbGwgdGhlIHRvb2xzIG5lZWRlZAo+
PiB0byBqdXN0IHBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgc2NyaXB0IC0gdGhpcyBpcyB3YWFh
YXkgdG8gbXVjaCBvZiBhCj4+IGJ1cmRlbiBmb3IgdGhlIGV4cGVjdGVkIG91dGNvbWUuIEl0J3Mg
ZXZlbiB3b3JzZSB0aGFuIHNpbXBseSBpbnN0YWxsaW5nCj4+IHB5dGhvbi1jbGljayBzZXBhcmF0
ZWx5LiBJIHRoaW5rIHdlIGNhbiBnZXQgcmlkIG9mIHRoaXMgcGF0Y2gKPj4gYWx0b2dldGhlci4K
PiBPaywgbGV0J3MgZ2V0IGJhY2sgdG8gdmVudiB0aGVuLiBPbmUgZGlmZmVyZW5jZSAod2hpY2gg
ZG9lcyBoZWxwIHdpdGgKPiB5b3VyIHByb2JsZW0pIGlzIHRoYXQgdmlydHVhbGVudiBpbnN0YWxs
cyBmcmVzaCBwaXAgYW5kIGRlcGVuZGVuY2llcwo+IGludG8gYSBuZXdseSBjcmVhdGVkIHZpcnR1
YWwgZW52aXJvbm1lbnQuIEEgc2ltaWxhciBlZmZlY3QgY2FuIGJlCj4gYWNoaWV2ZWQgbGlrZSB0
aGlzOgo+IAo+ICAgIHB5dGhvbjMgLW0gdmVudiBlbnYKPiAgICAuIGVudi9iaW4vYWN0aXZhdGUK
PiAgICBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcGlwCj4gCj4gQlRXLCB0aGlzIGNvdWxkIGFjdHVh
bGx5IGJlIHRoZSByZWFzb24gd2h5IHJlbW92aW5nICctLWVkaXRhYmxlJwo+IGhlbHBlZC4gTG9v
a3MgbGlrZSBmaXJzIHJ1biBvZiBwaXAgdGhyb3dzIGFuIGVycm9yIGFuZCBmaXhlcyB0aGUKPiBw
cm9ibGVtLiBBbmQgYW55IHN1YnNlcXVlbnQgcnVuIGRvZXMgbm90IHByb2R1Y2UgaXQgYW55bW9y
ZS4gU28gbG9va3MKPiBsaWtlICctLWVkaXRhYmxlJyBpcyBub3QgdGhlIHJlYXNvbiBhdCBhbGwu
IEJ1dCwgaXQgaXMgbXkgZ3Vlc3MsIEkgZG9uJ3QKPiByZWFsbHkgd2FudCB0byBkaWcgaW50byBz
ZXR1cCB0b29scyBub3cuCj4gCj4gQW55d2F5cywgdmlydHVhbCBlbnZpcm9ubWVudHMgYXJlIHBy
ZXR0eSBjb21tb24gd2F5IG9mIHdvcmtpbmcgd2l0aAo+IHB5dGhvbiB0aGVzZSBkYXlzLiBJIHN0
aWxsIHRoaW5rIHRoaXMgcGF0Y2ggbWFrZXMgc2Vuc2UuIEl0IGdpdmVzIHlvdSBhCj4gY2hvaWNl
LgoKU3RpbGwgZG9lc24ndCB3b3JrLiBBbmQgaXQgcmVhbGx5IGRvZXNuJ3QgbWFrZSBzZW5zZSB0
byBibG9jayBhbiBlbnRpcmUKc2VyaWVzIGp1c3QgZm9yIGEgdGhpbmcgbGlrZSB0aGlzLgoKQ29z
dGluCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 01 17:50:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 17:50: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 1hX89P-0001BP-Ao; Sat, 01 Jun 2019 17:50:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=NqJ9=UA=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hX89N-0001BK-VJ
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 17:50:38 +0000
X-Inumbo-ID: c1556246-8495-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c1556246-8495-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 17:50:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id AAB58105312;
 Sat,  1 Jun 2019 19:50:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mxsU1bRzcCxu; Sat,  1 Jun 2019 19:50:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 74DCE10530F;
 Sat,  1 Jun 2019 19:50:33 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sat, 1 Jun 2019 19:50:33 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
In-Reply-To: <985b995c-6f2d-c9bd-abc5-08890fd5fc26@gmail.com>
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
 <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
 <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
 <2293e369-70bd-143f-ca1c-eaf8be415cc7@gmail.com>
 <tza4s2a7f1o3pi.fsf@N-1128.office.hd>
 <985b995c-6f2d-c9bd-abc5-08890fd5fc26@gmail.com>
Date: Sat, 1 Jun 2019 19:50:28 +0200
Message-ID: <tza4s27ea5nqjf.fsf@N-1128.office.hd>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Originating-IP: [10.7.0.31]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
	filename="0001-fix-setup-tools-problems.patch"

>From 08ab7ca1899a545ed421f9f361cd41f4c96096f7 Mon Sep 17 00:00:00 2001
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
Date: Sat, 1 Jun 2019 13:50:08 +0200
Subject: [PATCH] fix setup-tools problems

Signed-off-by: Yuri Volchkov <yuri.volchkov@neclab.eu>
---
 doc/guides/developers-debugging.rst | 2 ++
 support/scripts/uk_trace/setup.py   | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/doc/guides/developers-debugging.rst b/doc/guides/developers-debugging.rst
index 3973ffe7..258d2f9f 100644
--- a/doc/guides/developers-debugging.rst
+++ b/doc/guides/developers-debugging.rst
@@ -90,8 +90,10 @@ Or, you can install trace.py into a local virtual environment: ::
   python3 -m venv env
   . env/bin/activate
   cd support/scripts/uk_trace
+  pip install --upgrade pip setuptools wheel
   pip install --editable .
   deactivate
+  cd -
 
 All the dependencies will be installed in the 'env' folder, not to
 your machine. You do not have to enter your virtual environment, you
diff --git a/support/scripts/uk_trace/setup.py b/support/scripts/uk_trace/setup.py
index 303273ad..3d542d02 100644
--- a/support/scripts/uk_trace/setup.py
+++ b/support/scripts/uk_trace/setup.py
@@ -3,7 +3,7 @@ from setuptools import setup
 setup(
     name='uk_trace',
     version='0.1',
-    py_modules=['main'],
+    scripts=['trace.py'],
     install_requires=[
         'Click', 'tabulate',
     ],
-- 
2.19.2


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


Costin Lupu <costin.lup@gmail.com> writes:

> On 6/1/19 4:06 PM, Yuri Volchkov wrote:
>> Costin Lupu <costin.lup@gmail.com> writes:
>>=20
>>> Hi Yuri,
>>>
>>> Nope, it doesn't work either. How do you install virtualenv?
>> I don't remember how did I install it on my working machine. But for
>> fixing this problems I tested it in the clean docker container
>> (Ubuntu). I installed it as
>>=20
>>    sudo apt install virtualenv
>>=20
>>> Is this virtualenv a python package? If so, I guess it should also
>>> work with this command:
>>>
>>> python3 -m virtualenv env
>>>
>>> If that's true, it fixes only my first problem. Regarding the second
>>> problem, './env/bin/uk-trace --help' still generates those exceptions.
>> Now that is strange. Please try to remove your 'env' folder and recreate
>> it from scratch. Probably something is screwed in your virtual
>> environment after multiple experiments.
>>=20
>
> I remove the env directory each time.
Oh, I am so sorry. I forgot to include in this patch the fix for this
issue. Would you be so kind to run the test again with the attached
patch (please git reset --hard the patch I sent earlier).

>
>>>
>>> Anywho, this patch defeats its purpose, one has to install the tools
>>> which would create the environment which would install the tools needed
>>> to just parse the parameters of a script - this is waaaay to much of a
>>> burden for the expected outcome. It's even worse than simply installing
>>> python-click separately. I think we can get rid of this patch
>>> altogether.
>> Ok, let's get back to venv then. One difference (which does help with
>> your problem) is that virtualenv installs fresh pip and dependencies
>> into a newly created virtual environment. A similar effect can be
>> achieved like this:
>>=20
>>    python3 -m venv env
>>    . env/bin/activate
>>    pip install --upgrade pip
>>=20
>> BTW, this could actually be the reason why removing '--editable'
>> helped. Looks like firs run of pip throws an error and fixes the
>> problem. And any subsequent run does not produce it anymore. So looks
>> like '--editable' is not the reason at all. But, it is my guess, I don't
>> really want to dig into setup tools now.
>>=20
>> Anyways, virtual environments are pretty common way of working with
>> python these days. I still think this patch makes sense. It gives you a
>> choice.
>
> Still doesn't work. And it really doesn't make sense to block an entire
> series just for a thing like this.
You are right. But we don't have to wait for all the patches to get
'Reviewed-by'. We will upstream on Monday what we already have
anyways. I am just trying to fix this in the meantime.

Ok if this did not work, let's force it to upgrade wheel and setuptools
too. Actually I should have started with this.

  python3 -m venv env
  . env/bin/activate
  cd support/scripts/uk_trace
  pip install --upgrade pip setuptools wheel
  pip install --editable .

>
> Costin

--=20
Yuri Volchkov
Software Specialist

NEC Europe Ltd
Kurf=C3=BCrsten-Anlage 36
D-69115 Heidelberg

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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--=-=-=--


From minios-devel-bounces@lists.xenproject.org Sat Jun 01 19:12:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 19:12: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 1hX9Ql-0007ih-Ku; Sat, 01 Jun 2019 19:12:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1d17=UA=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hX9Qk-0007ic-4f
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 19:12:38 +0000
X-Inumbo-ID: 368369c3-84a1-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 368369c3-84a1-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 19:12:36 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id b18so8575209wrq.12
 for <minios-devel@lists.xen.org>; Sat, 01 Jun 2019 12:12:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=06Mjc4PY4pira6HzSX+KmTNhaTlrbvt6DcY+X5Fq2w0=;
 b=rOjtwv1Rm/yjjNYvL/5ScXBdL0RlXnSa3Sd8QCJi6iMeH1rjuWGoaDnzKSwaSk08TE
 xstwg3bspaa+MbACc5ii2pk33zqCmGhqtnmLURCXnblU4EyvoVyaTCyVQL/IKskuCyEK
 pLuA8ORXz/nLkAIDdTnrkyOXnOUpXBbG4JSdq1Hg9MyIS0ij2a7v2cMIXyE4XCA+q6aH
 BrpJ+dSKs2DmA1elDO6evkxuvYOjSqGYO5/8KSnRgR+gODg7hxASxkJtbsxtuudcmRIN
 xYo7EydtBo1lCjmcrq6CdfPT8pEgAhMG719pSgdjRfHtUA1i8Fg3h162HfreVahootZz
 Jevg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=06Mjc4PY4pira6HzSX+KmTNhaTlrbvt6DcY+X5Fq2w0=;
 b=fad0qC39L+t/hI3Px4JGhiWdxSqrRB8r+s2azi7CMhR+E+dSp1j23qSgl9MnRISkRk
 ImfGCstskJDR5/IqEUVKch9cdq8wJbtsrNzyODPXaSK2+hwP34OSa62IhpwiltoW5HLk
 Z4dq+v7chfstBtnIrgGE0QI1DzhTv9wS9cMs14T5eCyKawLYUF7dN7fxICqamrl9edmP
 aPUxXPp+9vvVN0D0b+S99ECX4UYYH9H59lTxA5bWMf0DoZ4SxnQ9AY0qlZWRi1MhfRlY
 8U07BOg7Z/Cj/Xkzl7CRZLxpmsz/WbG5NNQoUwUWAJS3h965pcAcolQdxe/DeChj/E8Y
 uhwQ==
X-Gm-Message-State: APjAAAVE6ynr1sGxxxYUgrrlInmMDQKU9FDUlY+vSWuT3QpXGWSmoKad
 d/9Rh7bS8BdpF2FJd/4NZoXQqlMa
X-Google-Smtp-Source: APXvYqzYdFyVW7TJ/ZFLfOaLyRRJakf5hLc3I+gOowpCqBZxnBgu46OKfZSuD0k2pV7At8YMvw21ZQ==
X-Received: by 2002:a5d:4e46:: with SMTP id r6mr10495664wrt.290.1559416354347; 
 Sat, 01 Jun 2019 12:12:34 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id x129sm2043193wmg.44.2019.06.01.12.12.32
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 01 Jun 2019 12:12:33 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190530202920.19553-1-florian.schmidt@neclab.eu>
 <20190530202920.19553-3-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <031d737f-cedc-6474-f23d-e28133868e40@gmail.com>
Date: Sat, 1 Jun 2019 22:12:31 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190530202920.19553-3-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 2/7] plat: move common
 section definitions from linker script to include file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwKCkp1c3Qgb25lIGNvbW1lbnQgaGVyZS4KCk9uIDUvMzAvMTkgMTE6MjkgUE0s
IEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQg
PGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Cj4gLS0tCj4gIHBsYXQvY29tbW9uL2luY2x1ZGUv
Y29tbW9uLmxkcy5oIHwgMzIgKysrKysrKysrKysrKysrKy0KPiAgcGxhdC9jb21tb24veDg2L2xp
bms2NC5sZHMgICAgICAgfCA1OSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBw
bGF0L2t2bS9hcm0vbGluazY0Lmxkcy5TICAgICAgICB8IDI4ICsrLS0tLS0tLS0tLS0tLQo+ICBw
bGF0L2t2bS94ODYvbGluazY0Lmxkcy5TICAgICAgICB8ICA0ICsrLQo+ICBwbGF0L2xpbnV4dS9h
cm0vbGluay5sZHMuUyAgICAgICB8IDEwICsrLS0tLQo+ICBwbGF0L2xpbnV4dS94ODYvbGluazY0
Lmxkcy5TICAgICB8ICA2ICsrKy0KPiAgcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMuUyAgICAgICAg
fCAyOSArKy0tLS0tLS0tLS0tLS0tCj4gIHBsYXQveGVuL3g4Ni9saW5rNjQubGRzLlMgICAgICAg
IHwgIDQgKystCj4gIDggZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMTIzIGRlbGV0
aW9ucygtKQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24veDg2L2xpbms2NC5sZHMK
PiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9jb21tb24ubGRzLmggYi9wbGF0
L2NvbW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaAo+IGluZGV4IDg2NzJiNmZmLi4wZDI4ZmZmZiAx
MDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaAo+ICsrKyBiL3Bs
YXQvY29tbW9uL2luY2x1ZGUvY29tbW9uLmxkcy5oCj4gQEAgLTEsNiArMSw3IEBACj4gIC8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiAgLyoKPiAtICogQ29weXJp
Z2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRp
b24uCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21i
SCwgTkVDIENvcnBvcmF0aW9uLAo+ICsgKiAgICAgICAgICAgICAgICAgICAgIFBvbGl0ZWhuaWNh
IFVuaXZlcnNpdHkgb2YgQnVjaGFyZXN0LgoKU2luY2Ugd2UnbGwgaGF2ZSBhIHY0LCBwbGVhc2Ug
Y2hhbmdlIGl0IHRvICJVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mCkJ1Y2hhcmVzdCIuIEkga25v
dywgaXQgd2FzIHdyb25nIGluIHRoZSBvdGhlciBmaWxlLgoKVGhhbmtzLApDb3N0aW4KCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 01 20:17:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 20:17: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 1hXARA-0004Rt-6g; Sat, 01 Jun 2019 20:17:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1iW7=UA=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXAR9-0004Ro-LB
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 20:17:07 +0000
X-Inumbo-ID: 384bc058-84aa-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 384bc058-84aa-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 20:17:04 +0000 (UTC)
IronPort-SDR: RNyYahJylIX5tZuxSTgc0xC0pOMYUQ//Tw1qHjESJRLnsQoLXI24Bjmf+bVaOVLXbQvKQTB0lu
 xkmA67tCZ8jw==
IronPort-PHdr: =?us-ascii?q?9a23=3A52YxSRxFl/1fmjzXCy+O+j09IxM/srCxBDY+r6?=
 =?us-ascii?q?Qd2+sTIJqq85mqBkHD//Il1AaPAdyCrasf0KGP7/CocFdDyK7JiGoFfp1IWk?=
 =?us-ascii?q?1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBA?=
 =?us-ascii?q?j0OxZrKeTpAI7SiNm82/yv95HJbAhEmSexbalvIBi4owjdudQajIRhJ60s1h?=
 =?us-ascii?q?bHv3xEdvhMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW?=
 =?us-ascii?q?874s3rrgTDQhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VD?=
 =?us-ascii?q?q+46t3ThLjlSEKPCM7/m7KkMx9lKJVrgy8qRJxwIDaZ5qYOOZicq7HYd8XX3?=
 =?us-ascii?q?ZNUtpXWidcAo28dYwPD+8ZMOtGqIn9vEcOrRq4BQKxAu3v1ydIhmLr1qA9z+?=
 =?us-ascii?q?shFhrG3BAhH9IIqnjUqMj1NL8PUe2u0KbI1i/Pb+tL2Tjm8oTIaBchrOiKUL?=
 =?us-ascii?q?ltcsTR0VEiGx7Kg1mNs4DoPDOY2v4Tv2SF7edsT+yih3Y6pwx+vzSj3MQhh4?=
 =?us-ascii?q?nTio4LxF3J+z91zJs6KNGmTkNwfMSqH4FKty6AMot7WsYiQ2Z1tykk0rAGop?=
 =?us-ascii?q?u7fDQSyJQg2h7fd+SLc4iW7RLnU+acOSl4hHd/d7K+gxa+61SvyvbmWsmszV?=
 =?us-ascii?q?ZFtTBJksPLtnwV1hzT7NaISudl80u81juDyhrf5+JELEwui6bXNZwszqQ+m5?=
 =?us-ascii?q?YLtETMBC72mEH4jK+McUUk//Cl5PjgYrX9up+cNol0hhv6MqQzgsy/HP81PR?=
 =?us-ascii?q?QVX2SB4eS8yabs8VfjQLVNlvE2iLXWsIjGJcQHoa60GwpV0ocl6xa+CDemy8?=
 =?us-ascii?q?0UkmQZI1JbZh2Hi5PkO1XPIPDjEfe/mE6gkTh1yPDAJLHhBY/NLnfbmrf7Yb?=
 =?us-ascii?q?l981JcyBY0zd1H6ZJbFLUBIPPrWkDvrtDYDgI5Mw2ozObmE9h90J0RVn6LAq?=
 =?us-ascii?q?CDK6zeq0GH5v98a9WLMYoUvjf6ML0p6uDjiVc9mEQBZu+50J1Rb2q3Tdp8JE?=
 =?us-ascii?q?DMSn33ntYHWUMXphd2GOftk0GDV3hXem6vd6knoCkmAsS8CtGQFciWnLWd0X?=
 =?us-ascii?q?LjTdVtbWdcBwXUHA=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2DrAAB83PJcjAPjVY1lHgEGBwaBVAY?=
 =?us-ascii?q?LAYFmgWUBAR4SKI0PjReXc4FnCQEBAToBAgEBgUuCdYMpNwYOAQMBAQUBAQE?=
 =?us-ascii?q?BBAETAQEBJliCOiKDbk+BAoJXS4IPqwmFR4MhgUaBNIcDgzmCdT+BEYJdhHw?=
 =?us-ascii?q?UdIUVBItthzGBEJRLBwKCD1oEjh2EKyeCUZQdpHU2IYFZMxpzgmyBZAFEjiw?=
 =?us-ascii?q?8AQExgQYBAYwIglIBAQ?=
X-IPAS-Result: =?us-ascii?q?A2DrAAB83PJcjAPjVY1lHgEGBwaBVAYLAYFmgWUBAR4SK?=
 =?us-ascii?q?I0PjReXc4FnCQEBAToBAgEBgUuCdYMpNwYOAQMBAQUBAQEBBAETAQEBJliCO?=
 =?us-ascii?q?iKDbk+BAoJXS4IPqwmFR4MhgUaBNIcDgzmCdT+BEYJdhHwUdIUVBItthzGBE?=
 =?us-ascii?q?JRLBwKCD1oEjh2EKyeCUZQdpHU2IYFZMxpzgmyBZAFEjiw8AQExgQYBAYwIg?=
 =?us-ascii?q?lIBAQ?=
X-IronPort-AV: E=Sophos;i="5.60,540,1549922400"; 
   d="scan'208";a="3481224"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 01 Jun 2019 23:17:01 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 7EBEC1A60106;
 Sat,  1 Jun 2019 23:17:04 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id wWTuyE63c-vt; Sat,  1 Jun 2019 23:17:04 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 5C7A01A601DB;
 Sat,  1 Jun 2019 23:17:04 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 6qXKGdHl9xTT; Sat,  1 Jun 2019 23:17:04 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 408B71A60106;
 Sat,  1 Jun 2019 23:17:04 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sat,  1 Jun 2019 23:16:49 +0300
Message-Id: <20190601201649.30284-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Add features.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
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>

V2hlbiB0aHJlYWRzIGFyZSBlbmFibGVkLCBjeHggbGlicmFyeSBpbmNsdWRlcyBhICdmZWF0dXJl
cy5oJyBoZWFkZXIgaW4gaXRzCidpbmNsdWRlL19fY29uZmlnJyBoZWFkZXIgZnJvbSBvcmlnaW4u
IFRoZSBoZWFkZXIgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoCmluY2x1ZGVzIHRoZSAnc3lzL2Zl
YXR1cmVzLmgnIGhlYWRlciBmcm9tIG5ld2xpYi4KClNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogaW5jbHVkZS9mZWF0dXJlcy5oIHwgNDMgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs
IDQzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2ZlYXR1cmVzLmgK
CmRpZmYgLS1naXQgYS9pbmNsdWRlL2ZlYXR1cmVzLmggYi9pbmNsdWRlL2ZlYXR1cmVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmViMDFkYgotLS0gL2Rldi9udWxsCisr
KyBiL2luY2x1ZGUvZmVhdHVyZXMuaApAQCAtMCwwICsxLDQzIEBACisvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBV
bml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdAorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhl
IG5hbWVzIG9mIGFueSBjby1jb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICog
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgX19MSUJVTldJTkRf
X0ZFQVRVUkVTX0hfXworI2RlZmluZSBfX0xJQlVOV0lORF9fRkVBVFVSRVNfSF9fCisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy9mZWF0
dXJlcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qIF9fTElC
VU5XSU5EX19GRUFUVVJFU19IX18gKi8KKwotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 01 21:44:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 01 Jun 2019 21:44:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXBns-0003FG-0m; Sat, 01 Jun 2019 21:44:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=1d17=UA=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXBnq-0003FB-Aa
 for minios-devel@lists.xen.org; Sat, 01 Jun 2019 21:44:38 +0000
X-Inumbo-ID: 72b149fa-84b6-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 72b149fa-84b6-11e9-8980-bc764e045a96;
 Sat, 01 Jun 2019 21:44:36 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id c2so8746241wrm.8
 for <minios-devel@lists.xen.org>; Sat, 01 Jun 2019 14:44:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=/P4P0OYO52h5pbTWqjzHgRuiKqwsihjhkdNILsx0V2w=;
 b=R4WMfXiQMjSBu7bmMriZ+SCYUgqWOwHIs5TAZi03n2YdbHff2z8pD2DrhtPjhKkru/
 ZFRL0DNX84GsEJpOBCuFCyXk8uZGM/uRfX/vwWYvtcNynRQ5FeTNw2V+vNqbibR84QN6
 xqbsgIlym9VJ+Rn9GdSYMbc77qAOzvV0wG4Ii7esvM0T9ZuSAOaLM8g2/cSzqg6rvpSA
 k8Je5PxbO37GtfeVUZpeFMO/lvTOb4Zxo0sHd8hjz9TbKw8/SGJ4Haa2ln2wQXLskupk
 erx4/QzIfiD1L5Lfvk0bDRbsFEAR9ZmvreoppACan6UlxSBVRiyb+whk7b0bltJPZAQI
 t05Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=/P4P0OYO52h5pbTWqjzHgRuiKqwsihjhkdNILsx0V2w=;
 b=bDH9H9mpudFb64cUnr27uLIIfiS6DevkX8GF+KVg5JLCAO9ABXBEnY3BCd0zORZqaM
 w/VocfxArWJVB5+K6en9R566c1oG3YVG1UsnoveWQIEgAYuVyiwMxEOVvSJsMmHzIxqh
 oPrL9vWTGnmZlX6dqGD4A5/nc59j7k1GUwdk1mTdG/7Dg4pJjIGccjHFcHK7fianf0I1
 K3Ozkn6mkRA63l5sWGJz+zzKoW7vdhtKDls+oGZ+pno/GnzN/+q870/FYyDpQdptR4eT
 drNtP0KgrRByeKO969Kb9vz/WLBzucJc2A/DpkUWCkJCWLv8iIAB2kbvdiuP3+vSDz8P
 zLuw==
X-Gm-Message-State: APjAAAUDl0ubEveMvwaOUETO0wMetfZIUSe/Mq+iYmW2wmLH1Q239IYa
 4mTW5fPToCnZTiqgldwQLTpIo0H+
X-Google-Smtp-Source: APXvYqx6nz2P5qZ+gfdBuBum6jf1GWqJKZYA4Y7k2jJy+XvJf9uYZoMNfqV4M1ErnU8+reMA0FL9QQ==
X-Received: by 2002:a5d:5152:: with SMTP id u18mr6016209wrt.319.1559425474576; 
 Sat, 01 Jun 2019 14:44:34 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id u5sm8745010wmc.32.2019.06.01.14.44.32
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 01 Jun 2019 14:44:33 -0700 (PDT)
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, minios-devel@lists.xen.org
References: <20190529234442.8004-1-yuri.volchkov@neclab.eu>
 <20190529234442.8004-8-yuri.volchkov@neclab.eu>
 <70a53db9-770c-80b3-5d8d-315e2df7a9df@gmail.com>
 <tza4s2d0jxo6vg.fsf@N-1128.office.hd>
 <2293e369-70bd-143f-ca1c-eaf8be415cc7@gmail.com>
 <tza4s2a7f1o3pi.fsf@N-1128.office.hd>
 <985b995c-6f2d-c9bd-abc5-08890fd5fc26@gmail.com>
 <tza4s27ea5nqjf.fsf@N-1128.office.hd>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <9d286c07-9941-bb7d-8418-6ca9db7499ba@gmail.com>
Date: Sun, 2 Jun 2019 00:44:31 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <tza4s27ea5nqjf.fsf@N-1128.office.hd>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 7/8] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

WWVhaCwgdGhpcyB3b3Jrcy4KCk9uIDYvMS8xOSA4OjUwIFBNLCBZdXJpIFZvbGNoa292IHdyb3Rl
Ogo+IAo+IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4gd3JpdGVzOgo+IAo+PiBP
biA2LzEvMTkgNDowNiBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPj4+IENvc3RpbiBMdXB1IDxj
b3N0aW4ubHVwQGdtYWlsLmNvbT4gd3JpdGVzOgo+Pj4KPj4+PiBIaSBZdXJpLAo+Pj4+Cj4+Pj4g
Tm9wZSwgaXQgZG9lc24ndCB3b3JrIGVpdGhlci4gSG93IGRvIHlvdSBpbnN0YWxsIHZpcnR1YWxl
bnY/Cj4+PiBJIGRvbid0IHJlbWVtYmVyIGhvdyBkaWQgSSBpbnN0YWxsIGl0IG9uIG15IHdvcmtp
bmcgbWFjaGluZS4gQnV0IGZvcgo+Pj4gZml4aW5nIHRoaXMgcHJvYmxlbXMgSSB0ZXN0ZWQgaXQg
aW4gdGhlIGNsZWFuIGRvY2tlciBjb250YWluZXIKPj4+IChVYnVudHUpLiBJIGluc3RhbGxlZCBp
dCBhcwo+Pj4KPj4+ICAgIHN1ZG8gYXB0IGluc3RhbGwgdmlydHVhbGVudgo+Pj4KPj4+PiBJcyB0
aGlzIHZpcnR1YWxlbnYgYSBweXRob24gcGFja2FnZT8gSWYgc28sIEkgZ3Vlc3MgaXQgc2hvdWxk
IGFsc28KPj4+PiB3b3JrIHdpdGggdGhpcyBjb21tYW5kOgo+Pj4+Cj4+Pj4gcHl0aG9uMyAtbSB2
aXJ0dWFsZW52IGVudgo+Pj4+Cj4+Pj4gSWYgdGhhdCdzIHRydWUsIGl0IGZpeGVzIG9ubHkgbXkg
Zmlyc3QgcHJvYmxlbS4gUmVnYXJkaW5nIHRoZSBzZWNvbmQKPj4+PiBwcm9ibGVtLCAnLi9lbnYv
YmluL3VrLXRyYWNlIC0taGVscCcgc3RpbGwgZ2VuZXJhdGVzIHRob3NlIGV4Y2VwdGlvbnMuCj4+
PiBOb3cgdGhhdCBpcyBzdHJhbmdlLiBQbGVhc2UgdHJ5IHRvIHJlbW92ZSB5b3VyICdlbnYnIGZv
bGRlciBhbmQgcmVjcmVhdGUKPj4+IGl0IGZyb20gc2NyYXRjaC4gUHJvYmFibHkgc29tZXRoaW5n
IGlzIHNjcmV3ZWQgaW4geW91ciB2aXJ0dWFsCj4+PiBlbnZpcm9ubWVudCBhZnRlciBtdWx0aXBs
ZSBleHBlcmltZW50cy4KPj4+Cj4+Cj4+IEkgcmVtb3ZlIHRoZSBlbnYgZGlyZWN0b3J5IGVhY2gg
dGltZS4KPiBPaCwgSSBhbSBzbyBzb3JyeS4gSSBmb3Jnb3QgdG8gaW5jbHVkZSBpbiB0aGlzIHBh
dGNoIHRoZSBmaXggZm9yIHRoaXMKPiBpc3N1ZS4gV291bGQgeW91IGJlIHNvIGtpbmQgdG8gcnVu
IHRoZSB0ZXN0IGFnYWluIHdpdGggdGhlIGF0dGFjaGVkCj4gcGF0Y2ggKHBsZWFzZSBnaXQgcmVz
ZXQgLS1oYXJkIHRoZSBwYXRjaCBJIHNlbnQgZWFybGllcikuCj4gCj4+Cj4+Pj4KPj4+PiBBbnl3
aG8sIHRoaXMgcGF0Y2ggZGVmZWF0cyBpdHMgcHVycG9zZSwgb25lIGhhcyB0byBpbnN0YWxsIHRo
ZSB0b29scwo+Pj4+IHdoaWNoIHdvdWxkIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgd2hpY2ggd291
bGQgaW5zdGFsbCB0aGUgdG9vbHMgbmVlZGVkCj4+Pj4gdG8ganVzdCBwYXJzZSB0aGUgcGFyYW1l
dGVycyBvZiBhIHNjcmlwdCAtIHRoaXMgaXMgd2FhYWF5IHRvIG11Y2ggb2YgYQo+Pj4+IGJ1cmRl
biBmb3IgdGhlIGV4cGVjdGVkIG91dGNvbWUuIEl0J3MgZXZlbiB3b3JzZSB0aGFuIHNpbXBseSBp
bnN0YWxsaW5nCj4+Pj4gcHl0aG9uLWNsaWNrIHNlcGFyYXRlbHkuIEkgdGhpbmsgd2UgY2FuIGdl
dCByaWQgb2YgdGhpcyBwYXRjaAo+Pj4+IGFsdG9nZXRoZXIuCj4+PiBPaywgbGV0J3MgZ2V0IGJh
Y2sgdG8gdmVudiB0aGVuLiBPbmUgZGlmZmVyZW5jZSAod2hpY2ggZG9lcyBoZWxwIHdpdGgKPj4+
IHlvdXIgcHJvYmxlbSkgaXMgdGhhdCB2aXJ0dWFsZW52IGluc3RhbGxzIGZyZXNoIHBpcCBhbmQg
ZGVwZW5kZW5jaWVzCj4+PiBpbnRvIGEgbmV3bHkgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50
LiBBIHNpbWlsYXIgZWZmZWN0IGNhbiBiZQo+Pj4gYWNoaWV2ZWQgbGlrZSB0aGlzOgo+Pj4KPj4+
ICAgIHB5dGhvbjMgLW0gdmVudiBlbnYKPj4+ICAgIC4gZW52L2Jpbi9hY3RpdmF0ZQo+Pj4gICAg
cGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcAo+Pj4KPj4+IEJUVywgdGhpcyBjb3VsZCBhY3R1YWxs
eSBiZSB0aGUgcmVhc29uIHdoeSByZW1vdmluZyAnLS1lZGl0YWJsZScKPj4+IGhlbHBlZC4gTG9v
a3MgbGlrZSBmaXJzIHJ1biBvZiBwaXAgdGhyb3dzIGFuIGVycm9yIGFuZCBmaXhlcyB0aGUKPj4+
IHByb2JsZW0uIEFuZCBhbnkgc3Vic2VxdWVudCBydW4gZG9lcyBub3QgcHJvZHVjZSBpdCBhbnlt
b3JlLiBTbyBsb29rcwo+Pj4gbGlrZSAnLS1lZGl0YWJsZScgaXMgbm90IHRoZSByZWFzb24gYXQg
YWxsLiBCdXQsIGl0IGlzIG15IGd1ZXNzLCBJIGRvbid0Cj4+PiByZWFsbHkgd2FudCB0byBkaWcg
aW50byBzZXR1cCB0b29scyBub3cuCj4+Pgo+Pj4gQW55d2F5cywgdmlydHVhbCBlbnZpcm9ubWVu
dHMgYXJlIHByZXR0eSBjb21tb24gd2F5IG9mIHdvcmtpbmcgd2l0aAo+Pj4gcHl0aG9uIHRoZXNl
IGRheXMuIEkgc3RpbGwgdGhpbmsgdGhpcyBwYXRjaCBtYWtlcyBzZW5zZS4gSXQgZ2l2ZXMgeW91
IGEKPj4+IGNob2ljZS4KPj4KPj4gU3RpbGwgZG9lc24ndCB3b3JrLiBBbmQgaXQgcmVhbGx5IGRv
ZXNuJ3QgbWFrZSBzZW5zZSB0byBibG9jayBhbiBlbnRpcmUKPj4gc2VyaWVzIGp1c3QgZm9yIGEg
dGhpbmcgbGlrZSB0aGlzLgo+IFlvdSBhcmUgcmlnaHQuIEJ1dCB3ZSBkb24ndCBoYXZlIHRvIHdh
aXQgZm9yIGFsbCB0aGUgcGF0Y2hlcyB0byBnZXQKPiAnUmV2aWV3ZWQtYnknLiBXZSB3aWxsIHVw
c3RyZWFtIG9uIE1vbmRheSB3aGF0IHdlIGFscmVhZHkgaGF2ZQo+IGFueXdheXMuIEkgYW0ganVz
dCB0cnlpbmcgdG8gZml4IHRoaXMgaW4gdGhlIG1lYW50aW1lLgo+IAo+IE9rIGlmIHRoaXMgZGlk
IG5vdCB3b3JrLCBsZXQncyBmb3JjZSBpdCB0byB1cGdyYWRlIHdoZWVsIGFuZCBzZXR1cHRvb2xz
Cj4gdG9vLiBBY3R1YWxseSBJIHNob3VsZCBoYXZlIHN0YXJ0ZWQgd2l0aCB0aGlzLgo+IAo+ICAg
cHl0aG9uMyAtbSB2ZW52IGVudgo+ICAgLiBlbnYvYmluL2FjdGl2YXRlCj4gICBjZCBzdXBwb3J0
L3NjcmlwdHMvdWtfdHJhY2UKPiAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAgc2V0dXB0b29s
cyB3aGVlbAo+ICAgcGlwIGluc3RhbGwgLS1lZGl0YWJsZSAuCj4gCj4+Cj4+IENvc3Rpbgo+IAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQP-0003Y4-VN; Sun, 02 Jun 2019 05:52:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQO-0003Xz-SE
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:52:56 +0000
X-Inumbo-ID: a9646cf5-84fa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a9646cf5-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:52:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 74DF9F201F;
 Sun,  2 Jun 2019 07:52:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kjYruPEjNw56; Sun,  2 Jun 2019 07:52:52 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 41F12F2003
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:52:50 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:52:49 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:27 +0100
Message-ID: <20190602055238.3818-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 00/11] The Click Modular Router
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyBhIHBvcnQgb2YgQ2xpY2sgKGh0dHBzOi8vZ2l0aHViLmNvbS9rb2hsZXIvY2xpY2sp
IHRvIHVuaWtyYWZ0LiBJdApwYXJ0aWFsbHkgYnVpbGRzIG9uIG9uIENsaWNrT1MsIHRoZSBwb3J0
IG9mIENsaWNrIHRvIE1pbmktT1MuCgpGZWF0dXJlcyBjdXJyZW50bHkgYXZhaWxhYmxlOgoqIE1v
c3QgQ2xpY2sgbW9kdWxlcyBhcmUgYXZhaWxhYmxlIHRvIGNyZWF0ZSByb3V0aW5nIGNvbmZpZ3Vy
YXRpb25zLiAoRm9yCiAgZXhjZXB0aW9ucywgc2VlIGJlbG93LikKKiBhIENsaWNrIGNvbmZpZyBj
YW4gYmUgcHJvdmlkZWQgYXMgYW4gaW5pdHJkLiBJZiBub25lIGlzIHByb3ZpZGVkLCBDbGljawog
IHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhdGljYWxseSBjb21waWxlZC1pbiBjb25maWcgdGhhdCBy
ZXBsaWVzIHRvIHBpbmdzIHRvCiAgYSBjZXJ0YWluIChmaXhlZCkgSVAgYWRkcmVzcy4KKiBGb3Ig
ZWFjaCB1a25ldGRldiwgQ2xpY2sgcXVlcmllcyB0aGUgTUFDIGFkZHJlc3MgZHVyaW5nIGluaXRp
YWxpemF0aW9uIGFuZAogIHByb3ZpZGVzIGFuIGFsaWFzIHRvIHRoYXQgTUFDIGFkZHJlc3MgYXMg
TUFDMCwgTUFDMSwgLi4uIEVmZmVjdGl2ZWx5LCBpZgogIHByb2R1Y2VzIGEgcHJlYW1ibGUgdG8g
YSBjb25maWcgd2l0aCBhIG51bWJlciBvZiBkZWZpbmVzLiBBbiBleGFtcGxlIG9mIGhvdwogIHRv
IHVzZSBzdWNoIGEgcHJvdmlkZWQgTUFDIGFkZHJlc3MgYWxpYXMgY2FuIGJlIHNlZW4gaW4KICBp
bmNsdWRlL3N0YXRpY19jb25maWcuaAoKRmVhdHVyZXMgY3VycmVudCBub3QgYXZhaWxhYmxlOgoq
IFRoZXJlIGlzIG5vIGNvbnNvbGUgaW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGVsZW1l
bnQgaGFuZGxlcnMgdG8sCiAgZm9yIGV4YW1wbGUsIHF1ZXJ5IHRoZWlyIGludGVybmFsIHN0YXRl
IG9yIHN0YXRpc3RpY3MuIFRoaXMgaXMgYW4gZWZmZWN0CiAgb2Y6CiogVGhlIENsaWNrIHVzZXJs
ZXZlbCBtb2R1bGVzIGhhdmUgbm90IGJlZW4gcG9ydGVkIHlldCBhbmQgYXMgc3VjaCBjYW5ub3Qg
YmUKICBzdWNjZXNzZnVsbHkgYnVpbHQuCgpOb3RlOiBvbmx5IHg4Ni9rdm0gaGFzIGJlZW4gc2Vy
aW91c2x5IHRlc3RlZC4KCkZsb3JpYW4gU2NobWlkdCAoMTEpOgogIEluaXRpYWwgcHVibGljIHJl
bGVhc2U6IGJhc2ljIHVuaWtyYWZ0IGZpbGVzCiAgSW5pdGlhbCBwdWJsaWMgcmVsZWFzZTogY2xp
Y2suY2MKICBJbml0aWFsIHB1YmxpYyByZWxlYXNlOiBjbGljay5jYzogaWZkZWYgb3V0IHhlbi1z
cGVjaWZpYyBjb2RlLgogIEluaXRpYWwgcHVibGljIHJlbGVhc2U6IGNsaWNrIGNvbmZpZy11c2Vy
bGV2ZWwuaAogIEluaXRpYWwgcHVibGljIHJlbGVhc2U6IHN0dWJzLmNjIGZvciB1bmZpbmlzaGVk
IGdsdWUgaW1wbGVtZW50YXRpb25zCiAgSW5pdGlhbCBwdWJsaWMgcmVsZWFzZTogRnJvbURldmlj
ZSBhbmQgVG9EZXZpY2UKICBJbml0aWFsIHB1YmxpYyByZWxlYXNlOiBwYXRjaGVzIHRvIG1ha2Ug
Y2xpY2sgYnVpbGQgd2l0aCB1bmlrcmFmdAogIEluaXRpYWwgcHVibGljIHJlbGVhc2U6IEFkZCBl
eHBvcnRzeW1zLnVrCiAgc3VwcG9ydCBmb3IgbG9hZGluZyBjbGljayBjb25maWdzCiAgUHJvdmlk
ZSBNQUMgcHJlYW1ibGUKICBjb25maWc6IEFkZCB1c2VybGV2ZWwgbW9kdWxlIG9wdGlvbi4KCiAu
Z2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogQ29u
ZmlnLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkyICsrKysKIE1h
a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBNYWtl
ZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDQgKysrKysrCiBj
bGljay5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NjYgKysrKysr
KysrKysrKysrKysrCiBleHBvcnRzeW1zLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDcgKwogaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVsLmggICAgICAgICAgICAg
IHwgMzQ4ICsrKysrKysrKysrKysKIGluY2x1ZGUvc3RhdGljX2NvbmZpZy5oICAgICAgICAgICAg
ICAgICAgICAgICB8ICAyMSArCiBwYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hh
LnBhdGNoICAgfCAgMjAgKwogLi4uLXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVk
LnBhdGNoIHwgIDM1ICsrCiBzdHVicy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMzYgKysKIHVuaWtyYWZ0L2Zyb21kZXZpY2UuY2MgICAgICAgICAgICAgICAgICAg
ICAgICB8IDIwMyArKysrKysrKwogdW5pa3JhZnQvZnJvbWRldmljZS5oaCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDc5ICsrKwogdW5pa3JhZnQvdG9kZXZpY2UuY2MgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgMTMxICsrKysrCiB1bmlrcmFmdC90b2RldmljZS5oaCAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgNzYgKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxNjcxIGluc2VydGlvbnMo
KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCAuZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29u
ZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBN
YWtlZmlsZS51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGNsaWNrLmNjCiBjcmVhdGUgbW9kZSAxMDA2
NDQgZXhwb3J0c3ltcy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY2xpY2svY29uZmln
LXVzZXJsZXZlbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hh
LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4t
UE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzdHVicy5j
YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHVuaWtyYWZ0L2Zyb21kZXZpY2UuY2MKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCB1bmlrcmFmdC9mcm9tZGV2aWNlLmhoCiBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pa3Jh
ZnQvdG9kZXZpY2UuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC90b2RldmljZS5oaAoK
LS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQd-0003Yi-10; Sun, 02 Jun 2019 05:53: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQc-0003Yb-4B
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:10 +0000
X-Inumbo-ID: aef6b71a-84fa-11e9-a43e-fb5f787c85a6
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id aef6b71a-84fa-11e9-a43e-fb5f787c85a6;
 Sun, 02 Jun 2019 05:53:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2466310530E;
 Sun,  2 Jun 2019 07:53:02 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id VKHIHD6OfkDZ; Sun,  2 Jun 2019 07:53:02 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 03C03105309
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:02 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:01 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:28 +0100
Message-ID: <20190602055238.3818-2-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 01/11] Initial public release:
 basic unikraft 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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIE1ha2VmaWxlLCBNYWtlZmlsZS51aywgQ29uZmlnLnVrLCAuZ2l0aWdub3JlCgpTaWduZWQt
b2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+ClNpZ25lZC1vZmYt
Ynk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KLS0tCiAuZ2l0
aWdub3JlICB8ICAgNCArKwogQ29uZmlnLnVrICAgfCAgODUgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwogTWFrZWZpbGUgICAgfCAgIDkgKysrKwogTWFrZWZpbGUudWsgfCAxNDMgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxl
cyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRpZ25v
cmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtl
ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrCgpkaWZmIC0tZ2l0IGEvLmdpdGln
bm9yZSBiLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlm
YjcxYgotLS0gL2Rldi9udWxsCisrKyBiLy5naXRpZ25vcmUKQEAgLTAsMCArMSw0IEBACisuY29u
ZmlnCisuY29uZmlnLm9sZAorLi5jb25maWcudG1wCitidWlsZC8KZGlmZiAtLWdpdCBhL0NvbmZp
Zy51ayBiL0NvbmZpZy51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGQ5
MTMxCi0tLSAvZGV2L251bGwKKysrIGIvQ29uZmlnLnVrCkBAIC0wLDAgKzEsODUgQEAKKyMjIyBJ
bnZpc2libGUgb3B0aW9uIGZvciBkZXBlbmRlbmNpZXMKK2NvbmZpZyBBUFBfREVQRU5ERU5DSUVT
CisJYm9vbAorCWRlZmF1bHQgeQorCittZW51Y29uZmlnIExJQkNMSUNLCisJYm9vbCAiVGhlIENs
aWNrIG1vZHVsYXIgcm91dGVyIgorCSMgZGVwZW5kcyBvbiAoSEFWRV9MSUJDKSAgIyAmJiBIQVZF
X05XX1NUQUNLICYmIC4uLgorCWRlZmF1bHQgeQorCitpZiBMSUJDTElDSworCitjb25maWcgTElC
Q0xJQ0tfTUFJTgorCWJvb2wgIkVuYWJsZSBDbGljayBtYWluIGZ1bmN0aW9uIgorCWRlZmF1bHQg
bgorCWhlbHAKKwkgIERlZmluZSBtYWluIGZ1bmN0aW9uIGluc3RlYWQgb2YgY2xpY2tfbWFpbiBm
dW5jdGlvbgorCitjb25maWcgTElCQ0xJQ0tfRUxFTVNfQVFNCisJYm9vbCAiRW5hYmxlIEFRTSBl
bGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIElQIGVsZW1lbnRzCisK
K2NvbmZpZyBMSUJDTElDS19FTEVNU19FVEhFUk5FVAorCWJvb2wgIkVuYWJsZSBFdGhlcm5ldCBl
bGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIEV0aGVybmV0IGVsZW1l
bnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVNU19FVEhFUlNXSVRDSAorCWJvb2wgIkVuYWJsZSBF
dGhlcm5ldCBzd2l0Y2ggZWxlbWVudHMiCisJZGVmYXVsdCB5CisJaGVscAorCSAgQnVpbGQgd2l0
aCBFdGhlcm5ldCBzd2l0Y2ggZWxlbWVudHMKKworY29uZmlnIExJQkNMSUNLX0VMRU1TX0lDTVAK
Kwlib29sICJFbmFibGUgSUNNUCBlbGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWls
ZCB3aXRoIElDTVAgZWxlbWVudHMKKworY29uZmlnIExJQkNMSUNLX0VMRU1TX0lQCisJYm9vbCAi
RW5hYmxlIElQIGVsZW1lbnRzIgorCWRlZmF1bHQgeQorCWhlbHAKKwkgIEJ1aWxkIHdpdGggYWRh
cHRpdmUgcXVldWUgbWFuYWdlbWVudCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNf
VU5JS1JBRlQKKwlib29sICJFbmFibGUgVW5pa3JhZnQgbmV0d29ya2luZyIKKwlkZWZhdWx0IHkK
KwloZWxwCisJICBCdWlsZCB3aXRoIFVuaWtyYWZ0IEZyb21EZXZpY2UgYW5kIFRvRGV2aWNlIGVs
ZW1lbnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVNU19MT0NBTAorCWJvb2wgIkVuYWJsZSBsb2Nh
bCBlbGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIGxvY2FsIGVsZW1l
bnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVNU19TSU1QTEUKKwlib29sICJFbmFibGUgc2ltcGxl
IGVsZW1lbnRzIgorCWRlZmF1bHQgeQorCWhlbHAKKwkgIEJ1aWxkIHdpdGggc2ltcGxlIGVsZW1l
bnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVNU19TVEFOREFSRAorCWJvb2wgIkVuYWJsZSBzdGFu
ZGFyZCBlbGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIHN0YW5kYXJk
IGVsZW1lbnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVNU19UQ1BVRFAKKwlib29sICJFbmFibGUg
VENQL1VEUCBlbGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIFRDUC9V
RFAgZWxlbWVudHMKKworY29uZmlnIExJQkNMSUNLX0VMRU1TX1RIUkVBRFMKKwlib29sICJFbmFi
bGUgbXVsdGktdGhyZWFkaW5nIGVsZW1lbnRzIgorCWRlZmF1bHQgeQorCWhlbHAKKwkgIEJ1aWxk
IHdpdGggbXVsdGktdGhyZWFkaW5nIGVsZW1lbnRzCisKK2VuZGlmCmRpZmYgLS1naXQgYS9NYWtl
ZmlsZSBiL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlY2Y4
MGIKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZQpAQCAtMCwwICsxLDkgQEAKK1VLX1JPT1Qg
Pz0gJChQV0QpLy4uL3VuaWtyYWZ0CitVS19MSUJTID89ICQoUFdEKS8uLgorTElCUyA6PSAkKFVL
X0xJQlMpL25ld2xpYjokKFVLX0xJQlMpL2x3aXAKKworYWxsOgorCUAkKE1BS0UpIC1DICQoVUtf
Uk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpCisKKyQoTUFLRUNNREdPQUxTKToKKwlAJChNQUtFKSAt
QyAkKFVLX1JPT1QpIEE9JChQV0QpIEw9JChMSUJTKSAkKE1BS0VDTURHT0FMUykKZGlmZiAtLWdp
dCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjI3YmIxMAotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxlLnVrCkBAIC0wLDAg
KzEsMTQzIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWdpc3RlciB3aXRoIHVuaWty
YWZ0CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworJChldmFsICQoY2FsbCBhZGRsaWIsbGliY2xp
Y2spKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTb3VyY2VzCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworTElCQ0xJQ0tfQ09NTUlUX0hBU0g9YTUzODQ4MzVhNmNhYzEwZjhkNDRkYTRl
ZWVhOGVhYThmOGU2YTBjMgorTElCQ0xJQ0tfVVJMPWh0dHBzOi8vY29kZWxvYWQuZ2l0aHViLmNv
bS9rb2hsZXIvY2xpY2svemlwLyQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpCiskKGV2YWwgJChjYWxs
IGZldGNoYXMsbGliY2xpY2ssJChMSUJDTElDS19VUkwpLGNsaWNrLSQoTElCQ0xJQ0tfQ09NTUlU
X0hBU0gpLnppcCkpCitMSUJDTElDS19QQVRDSERJUj0kKExJQkNMSUNLX0JBU0UpL3BhdGNoZXMK
KyQoZXZhbCAkKGNhbGwgcGF0Y2gsbGliY2xpY2ssJChMSUJDTElDS19QQVRDSERJUiksY2xpY2st
JChMSUJDTElDS19DT01NSVRfSEFTSCkpKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBD
b3B5IFVuaWtyYWZ0IGZyb20vdG8gZGV2aWNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2lm
bmVxICgkKENPTkZJR19MSUJDTElDS19FTEVNU19VTklLUkFGVCksKQorJChzaGVsbCBta2RpciAt
cCAkKExJQkNMSUNLX09SSUdJTikvY2xpY2stJChMSUJDTElDS19DT01NSVRfSEFTSCkvZWxlbWVu
dHMpCiskKHNoZWxsIGNwIC1yICQoTElCQ0xJQ0tfQkFTRSkvdW5pa3JhZnQgJChMSUJDTElDS19P
UklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1lbnRzLykKK2VuZGlmCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEhlbHBlcnMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCitMSUJDTElDS19FWFRSQUNURUQ9JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJ
Q0tfQ09NTUlUX0hBU0gpCitMSUJDTElDS19FTEVNRU5UU19ESVI9JChMSUJDTElDS19FWFRSQUNU
RUQpL2VsZW1lbnRzCitMSUJDTElDS19CVUlMRFRPT0w9JChMSUJDTElDS19FWFRSQUNURUQpL2Jp
bi9jbGljay1idWlsZHRvb2wKK0xJQkNMSUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJz
d2l0Y2ggaWNtcCBpcCB1bmlrcmFmdCBcCisJCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1
ZHAgdGhyZWFkcworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb25maWcgTWVudSAtIEZp
bHRlciB3aGljaCBlbGVtZW50IGNhdGVnb3JpZXMgYWN0dWFsbHkgZ2V0IGJ1aWx0CisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworTElCQ0xJQ0tfRUxFTV9ESVJTX1U9JChjYWxsIHVjLCQoTElCQ0xJ
Q0tfRUxFTV9ESVJTKSkKK0xJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSU19VIDo9ICQoZm9yZWFj
aCBWLCAkKExJQkNMSUNLX0VMRU1fRElSU19VKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJChpZiAkKGZpbHRlciB5LCQoQ09ORklHX0xJQkNMSUNLX0VMRU1TXyRWKSksJFYp
KQorTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTPSQoY2FsbCBsYywkKExJQkNMSUNLX0ZJTFRF
UkVEX0VMRU1fRElSU19VKSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQXBwLXNwZWNp
ZmljIFRhcmdldHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgUnVuIENsaWNrJ3MgY29u
ZmlndXJlIHNjcmlwdAorJChMSUJDTElDS19CVUlMRCkvLmNvbmZpZ3VyZWQ6ICQoTElCQ0xJQ0tf
QlVJTEQpLy5vcmlnaW4KKwkkKGNhbGwgdmVyYm9zZV9jbWQsQ09ORklHVVJFLGxpYmFwcDogJEAs
XAorCSAgICAgICBjZCAkKExJQkNMSUNLX0VYVFJBQ1RFRCkgJiYgLi9jb25maWd1cmUgLS1lbmFi
bGUtbWluaW9zIC0td2l0aC14ZW49JChMSUJDTElDS19CVUlMRCkgLS13aXRoLW1pbmlvcz0kKExJ
QkNMSUNLX0JVSUxEKSAtLXdpdGgtbmV3bGliPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1sd2lw
PSQoTElCQ0xJQ0tfQlVJTEQpICYmIFwKKwkgICAgICAgJChUT1VDSCkgJEApCisKKyMgR2VuZXJh
dGUgZWxlbWVudCBidWlsZCBydWxlcyB1c2luZyBjbGljay1idWlsZHRvb2wKKyQoTElCQ0xJQ0tf
QlVJTEQpLy5lbGVtZW50c21rOiAkKExJQkNMSUNLX0JVSUxEKS8uY29uZmlndXJlZCAkKFVLX0NP
TkZJR19PVVQpCisJJChjYWxsIHZlcmJvc2VfY21kLEVMRU1NSyxsaWJhcHA6ICRALFwKKwkgICAg
ICAgY2QgJChMSUJDTElDS19FTEVNRU5UU19ESVIpICYmIGVjaG8gIiQoTElCQ0xJQ0tfRklMVEVS
RURfRUxFTV9ESVJTKSIgfCAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZmluZGVsZW0gLXIgdW5pa3Jh
ZnQgLVggJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuZXhjbHVkZSB8IGdyZXAgLUUgIl5bXiNd
IiB8IGF3ayAne3ByaW50ICJMSUJDTElDS19TUkNTLXkgKz0gJCQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9lbGVtZW50cy8iICQkMX0nID4gJEApCisKKyMgR2VuZXJhdGUgZWxlbWVudHMuY2MgYW5kIGFk
ZCBpdCB0byB0aGUgYnVpbGQgbGlzdAorJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2M6ICQo
TElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rCisJJChjYWxsIHZlcmJvc2VfY21kLEVMRU1DQyxs
aWJhcHA6ICRALFwKKwkgICAgICAgZWNobyAiJChMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlMp
IiB8ICQoTElCQ0xJQ0tfQlVJTERUT09MKSBmaW5kZWxlbSAtciB1bmlrcmFmdCAtcCAkKExJQkNM
SUNLX0VMRU1FTlRTX0RJUikgLVggJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuZXhjbHVkZSA+
ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c2NvbmYgJiYgXAorCSAgICAgICAkKExJQkNMSUNL
X0JVSUxEVE9PTCkgZWxlbTJleHBvcnQgPCAkKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNjb25m
ID4gJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2MpCisKKyQoTElCQ0xJQ0tfQlVJTEQpLy5w
cmVwYXJlZDogJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2MKKworVUtfUFJFUEFSRSArPSAk
KExJQkNMSUNLX0JVSUxEKS8ucHJlcGFyZWQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
QXBwIGluY2x1ZGVzLCBjb21waWxlIGZsYWdzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElC
Q0xJQ0tfQ0lOQ0xVREVTICAgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2luY2x1ZGUgICAgICAgIFwK
KwkJICAgICAgICAtSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKQkgICAgIFwKKwkJCS1JJChMSUJDTElD
S19FWFRSQUNURUQpL2luY2x1ZGUgXAorCQkJLUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRl
L3Bvc2l4CitMSUJDTElDS19DWFhJTkNMVURFUyArPSAtSSQoTElCQ0xJQ0tfQkFTRSkvaW5jbHVk
ZSAgICAgICAgXAorCQkgICAgICAgIC1JJChMSUJDTElDS19FWFRSQUNURUQpICAgICAgICAgICBc
CisJCQktSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwKKwkJCS1JJChMSUJMV0lQX0xX
SVBfU1JDUykvaW5jbHVkZS9wb3NpeAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBHbG9i
YWwgZmxhZ3MKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJDTElDS19DRkxBR1MteSAgICAg
ICArPSAtRExXSVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElDS19VU0VSTEVWRUwKK0xJQkNMSUNL
X0NYWEZMQUdTLXkgICAgICs9IC1ETFdJUF9USU1FVkFMX1BSSVZBVEU9MCAtRENMSUNLX1VTRVJM
RVZFTCAtREhBVkVfSVA2CitMSUJDTElDS19DWFhGTEFHUyAgICAgICArPSAtZm5vLWV4Y2VwdGlv
bnMgLWZuby1ydHRpIC1zdGQ9YysrMTEKKworIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1h
a2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXIKK0xJQkNMSUNLX1NVUFBSRVNTX0ZMQUdT
IDo9IC1Xbm8tc3RyaWN0LWFsaWFzaW5nCitMSUJDTElDS19DRkxBR1MteSArPSAkKExJQkNMSUNL
X1NVUFBSRVNTX0ZMQUdTKQorTElCQ0xJQ0tfQ1hYRkxBR1MteSArPSAkKExJQkNMSUNLX1NVUFBS
RVNTX0ZMQUdTKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBVbmlrcmFmdCA8LT4gQ2xp
Y2sgZ2x1ZSBjb2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfQkFTRSkvY2xpY2suY2MKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
Q2xpY2sgc291cmNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2FyY2hpdmUuY2MKK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2FyZ3MuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAk
KExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2F0b21pYy5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQo
TElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYmlnaGFzaG1hcF9hcmVuYS5jYworTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYml0dmVjdG9yLmNjCitMSUJDTElDS19T
UkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9jb25mcGFyc2UuY2MKK0xJQkNMSUNL
X1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2NyYzMyLmMKK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2RyaXZlci5jYworTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZWxlbWVudC5jYworTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZWxlbWZpbHRlci5jYworTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZXJyb3IuY2MKK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2V0aGVyYWRkcmVzcy5jYworTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZ2FwcmF0ZS5jYworTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZ2x1ZS5jYworTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaGFuZGxlcmNhbGwuY2MKK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2hhc2hhbGxvY2F0b3IuY2MK
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2luX2Nrc3VtLmMK
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2ludGVnZXJzLmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcGFkZHJlc3Mu
Y2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwZmxvd2lk
LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcHRhYmxl
LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9sZXhlci5j
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWFzdGVyLmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9tZDUuY2MKK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL25hbWVpbmZvLmNjCitM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ub3RpZmllci5jYwor
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvcGFja2V0LmNjCitM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9yb3V0ZXIuY2MKK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlcnRocmVhZC5j
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvcm91dGVydmlz
aXRvci5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvc3Ry
YWNjdW0uY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3N0
cmluZy5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdGFz
ay5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdGltZXIu
Y2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVyc2V0
LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi90aW1lc3Rh
bXAuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3Zhcmlh
YmxlZW52LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9p
cDZ0YWJsZS5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIv
aXA2YWRkcmVzcy5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9s
aWIvaXA2Zmxvd2lkLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9zZWxlY3RzZXQuY2MKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ2xpY2sgZWxl
bWVudHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJD
TElDS19CVUlMRCkvZWxlbWVudHMuY2MKKy1pbmNsdWRlICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVt
ZW50c21rCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQh-0003ZF-2d; Sun, 02 Jun 2019 05:53: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQg-0003Z9-Al
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:14 +0000
X-Inumbo-ID: b2f4dc02-84fa-11e9-862f-fb9a9449dd4b
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b2f4dc02-84fa-11e9-862f-fb9a9449dd4b;
 Sun, 02 Jun 2019 05:53:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C3CE7F201F;
 Sun,  2 Jun 2019 07:53:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id y2TQ8R6PBGuV; Sun,  2 Jun 2019 07:53:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A1A3FF2003
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:06 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:02 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:29 +0100
Message-ID: <20190602055238.3818-3-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 02/11] Initial public release:
 click.cc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyB0YWtlbiBmcm9tIGZyb20ga29obGVyL2NsaWNrL21pbmlvcy8sIHdpdGggYW4gdXBk
YXRlZCBjb3B5cmlnaHQKaGVhZGVyLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxm
bG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIGNsaWNrLmNjIHwgMzg0ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFu
Z2VkLCAzODQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNsaWNrLmNjCgpkaWZm
IC0tZ2l0IGEvY2xpY2suY2MgYi9jbGljay5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yNWJjNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvY2xpY2suY2MKQEAgLTAsMCArMSwz
ODQgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTQgTkVDIEV1cm9wZSBMdGQsCisgKiAgICAgICAgICAgICAgIDIw
MTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAg
ICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JT
IEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
CisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkg
Tk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpbmNsdWRl
IDxjbGljay9jb25maWcuaD4KKyNpbmNsdWRlIDxjbGljay9sZXhlci5oaD4KKyNpbmNsdWRlIDxj
bGljay9yb3V0ZXIuaGg+CisjaW5jbHVkZSA8Y2xpY2svbWFzdGVyLmhoPgorI2luY2x1ZGUgPGNs
aWNrL2Vycm9yLmhoPgorI2luY2x1ZGUgPGNsaWNrL3RpbWVyLmhoPgorI2luY2x1ZGUgPGNsaWNr
L3N0cmluZy5oaD4KKyNpbmNsdWRlIDxjbGljay9zdHJhY2N1bS5oaD4KKyNpbmNsdWRlIDxjbGlj
ay9kcml2ZXIuaGg+CisKK2V4dGVybiAiQyJ7CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPG1pbmktb3MveGVu
YnVzLmg+CisjaW5jbHVkZSA8bWluaS1vcy9zaHV0ZG93bi5oPgorI2luY2x1ZGUgPG1pbmktb3Mv
c2NoZWQuaD4KK30KKwordm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKKworI2RlZmluZSBOTE9H
KGZtdCwgLi4uKQorI2RlZmluZSBMT0coZm10LCAuLi4pIFwKKwlwcmludGYoIlslczolZF0gIiBm
bXQgIlxuIiwgXAorCQlfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQorCisv
KioKKyAqIHhlbnN0b3JlIGhlbHBlcnMKKyAqLworI2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3Mi
CisjZGVmaW5lIFBBVEhfTUFYX0xFTgkxMDI0CisKK3N0cnVjdCB4ZW5zdG9yZV9kZXYgeworCWRv
bWlkX3QgZG9tOworCWNoYXIgKm5vZGVuYW1lOworCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7
Cit9ICp4c2RldiA9IE5VTEw7CisKK3VpbnQzMl90IGRvbWlkID0gLTE7Cit1X2ludCBfc2h1dGRv
d24gPSAwOwordV9pbnQgX3JlYXNvbiA9IDA7CisKK2NoYXIqCitldmVudF90b2tlbihjaGFyICoq
a2V5KQoreworCWNoYXIgKnAgPSAqa2V5LCAqcDI7CisJY2hhciAqdG9rZW47CisJdV9pbnQgc3o7
CisKKwlwMiA9IHN0cmNocigrK3AsICcvJyk7CisJc3ogPSAocDIgIT0gTlVMTCA/IHAyIC0gcCA6
IHN0cmxlbihwKSk7CisJdG9rZW4gPSBzdHJuZHVwKHAsIHN6KTsKKwkqa2V5ID0gKHArc3opOwor
CisJcmV0dXJuIHRva2VuOworfQorCitjaGFyKgorcmVhZF9yaWQoY2hhciAqcGF0aCkKK3sKKwlj
aGFyICppZCA9IHN0cmR1cChwYXRoICsgMSk7CisJY2hhciAqaWRfZW5kID0gc3RyY2hyKGlkLCAn
LycpOworCSppZF9lbmQgPSAnXDAnOworCXJldHVybiBpZDsKK30KKworU3RyaW5nICoKK3JlYWRf
Y29uZmlnKHVfaW50IHJpZCA9IDApCit7CisJY2hhciBwYXRoW1BBVEhfTUFYX0xFTl07CisJU3Ry
aW5nICpjZmcgPSBuZXcgU3RyaW5nKCk7CisJY2hhciAqdG9rZW47CisKKwlmb3IgKGludCBpID0g
MDs7IGkrKykgeworCQlzbnByaW50ZihwYXRoLCBQQVRIX01BWF9MRU4sICIlcy8lZC9jb25maWcv
JWQiLAorCQkJCVBBVEhfUk9PVCwgcmlkLCBpKTsKKwkJeGVuYnVzX3JlYWQoWEJUX05JTCwgcGF0
aCwgJnRva2VuKTsKKwkJaWYgKHRva2VuID09IE5VTEwpCisJCQlicmVhazsKKwkJKmNmZyArPSB0
b2tlbjsKKwl9CisKKwlyZXR1cm4gY2ZnOworfQorCisvKgorICogY2xpY2sgZ2x1ZQorICovCisK
KyNkZWZpbmUgTUFYX1JPVVRFUlMJNjQKK3N0YXRpYyBFcnJvckhhbmRsZXIgKmVycmg7CitzdGF0
aWMgTWFzdGVyIG1hc3RlcigxKTsKKworc3RydWN0IHJvdXRlcl9pbnN0YW5jZSB7CisJUm91dGVy
ICpyOworCXVfaW50IGZfc3RvcDsKK30gcm91dGVyX2xpc3RbTUFYX1JPVVRFUlNdOworCit2b2lk
Cityb3V0ZXJfdGhyZWFkKHZvaWQgKnRocmVhZF9kYXRhKQoreworCXVfaW50ICpyaWQgPSAodV9p
bnQqKSB0aHJlYWRfZGF0YTsKKwlTdHJpbmcgKmNvbmZpZyA9IHJlYWRfY29uZmlnKCpyaWQpOwor
CXN0cnVjdCByb3V0ZXJfaW5zdGFuY2UgKnJpID0gJnJvdXRlcl9saXN0WypyaWRdOworCisJcmkt
PnIgPSBjbGlja19yZWFkX3JvdXRlcigqY29uZmlnLCB0cnVlLCBlcnJoLCBmYWxzZSwgJm1hc3Rl
cik7CisJaWYgKHJpLT5yLT5pbml0aWFsaXplKGVycmgpIDwgMCkgeworCQlMT0coIlJvdXRlciBp
bml0IGZhaWxlZCEiKTsKKwkJcmktPmZfc3RvcCA9IDE7CisJCXJldHVybjsKKwl9CisKKwlyaS0+
ci0+dXNlKCk7CisJcmktPnItPmFjdGl2YXRlKGVycmgpOworCisJTE9HKCJTdGFydGluZyBkcml2
ZXIuLi5cblxuIik7CisJcmktPnItPm1hc3RlcigpLT50aHJlYWQoMCktPmRyaXZlcigpOworCisJ
TE9HKCJTdG9wcGluZyBkcml2ZXIuLi5cblxuIik7CisJcmktPnItPnVudXNlKCk7CisJcmktPmZf
c3RvcCA9IDE7CisKKwlMT0coIk1hc3Rlci9kcml2ZXIgc3RvcHBlZCwgY2xvc2luZyByb3V0ZXJf
dGhyZWFkIik7CisJZnJlZShjb25maWcpOworCWZyZWUocmlkKTsKK30KKwordm9pZAorcm91dGVy
X3N0b3AoaW50IG4gPSBNQVhfUk9VVEVSUykKK3sKKwlMT0coIlN0b3BwaW5nIGFsbCByb3V0ZXJz
Li4uXG5cbiIpOworCWZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKKwkJUm91dGVy
ICpyID0gcm91dGVyX2xpc3RbaV0ucjsKKworCQlpZiAocm91dGVyX2xpc3RbaV0uZl9zdG9wKQor
CQkJY29udGludWU7CisKKwkJTE9HKCJTdG9wcGluZyBpbnN0YW5jZSA9ICVkLi4uXG5cbiIsIGkp
OworCisJCWRvIHsKKwkJCXItPnBsZWFzZV9zdG9wX2RyaXZlcigpOworCQkJc2NoZWR1bGUoKTsK
KwkJfSB3aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsKKwl9CisJTE9HKCJTdG9wcGVk
IGFsbCByb3V0ZXJzLi4uXG5cbiIpOworfQorCit2b2lkCityb3V0ZXJfc3VzcGVuZChpbnQgbiA9
IE1BWF9ST1VURVJTKQoreworfQorCit2b2lkCityb3V0ZXJfcmVzdW1lKGludCBuID0gTUFYX1JP
VVRFUlMpCit7Cit9CisKK3VfaW50Citvbl9zdGF0dXMoaW50IHJpZCwgY2hhciAqa2V5LCB2b2lk
ICpkYXRhKQoreworCVN0cmluZyBzdGF0dXMgPSAoY2hhciAqKSBkYXRhOworCXN0cnVjdCByb3V0
ZXJfaW5zdGFuY2UgKnIgPSAmcm91dGVyX2xpc3RbcmlkXTsKKworCUxPRygicm91dGVyIGlkICVk
IiwgcmlkKTsKKwlMT0coInN0YXR1cyBjaGFuZ2UgdG8gJXMiLCBkYXRhKTsKKwlpZiAoc3RhdHVz
ID09ICJSdW5uaW5nIikgeworCQl1X2ludCAqYXJnMDsKKworCQlpZiAoIXItPmZfc3RvcCkKKwkJ
CWdvdG8gc3RhdHVzX2VycjsKKworCQlhcmcwID0gKHVfaW50KikgbWFsbG9jKHNpemVvZih1X2lu
dCkpOworCQkqYXJnMCA9IHJpZDsKKwkJci0+Zl9zdG9wID0gMDsKKwkJY3JlYXRlX3RocmVhZCgo
Y2hhciopImNsaWNrIiwgcm91dGVyX3RocmVhZCwgYXJnMCk7CisJfSBlbHNlIGlmIChzdGF0dXMg
PT0gIkhhbHRlZCIpIHsKKwkJaWYgKHItPmZfc3RvcCkKKwkJCWdvdG8gc3RhdHVzX2VycjsKKwor
CQlyb3V0ZXJfc3RvcChyaWQpOworCX0KKworCXJldHVybiAwOworc3RhdHVzX2VycjoKKwlyZXR1
cm4gLUVJTlZBTDsKK30KKworc3RhdGljIHZvaWQKK3JlYWRfY25hbWUoY2hhciAqcGF0aCwgRWxl
bWVudCAqKmUsIGNvbnN0IEhhbmRsZXIgKipoLCBpbnQgcmlkKQoreworCWludCBzZXAgPSBzdHJj
aHIocGF0aCwgJy8nKSAtIHBhdGg7CisJU3RyaW5nIGVuYW1lKHBhdGgsIHNlcCksIGhuYW1lKHBh
dGggKyBzZXAgKyAxKTsKKwlSb3V0ZXIgKnIgPSByb3V0ZXJfbGlzdFtyaWRdLnI7CisKKwlOTE9H
KCJzZXA9JWQgZWxlbWVudD0lcyBoYW5kbGVyPSVzIiwgc2VwLAorCQkJZW5hbWUuY19zdHIoKSwg
aG5hbWUuY19zdHIoKSk7CisKKwkqZSA9IHItPmZpbmQoZW5hbWUpOworCSpoID0gUm91dGVyOjpo
YW5kbGVyKCplLCBobmFtZSk7CisJTkxPRygiZW5hbWUgJXM9JXAgaG5hbWUgJXM9JXAiLCBlbmFt
ZS5jX3N0cigpLCBlLCBobmFtZS5jX3N0cigpLCBoKTsKK30KKwordV9pbnQKK29uX2VsZW1fcmVh
ZGgoaW50IHJpZCwgY2hhciAqa2V5LCB2b2lkICpkYXRhKQoreworCUVsZW1lbnQgKmU7CisJY29u
c3QgSGFuZGxlciogaDsKKwlTdHJpbmcgdmFsLCBoX3BhdGgsIGxvY2tfcGF0aDsKKwlpbnQgZl9z
dG9wID0gcm91dGVyX2xpc3RbcmlkXS5mX3N0b3A7CisKKwlpZiAoc3RybmNtcChrZXksICIvcmVh
ZC8iLCA2KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZl9zdG9wKQorCQlyZXR1cm4gMDsKKworCXJl
YWRfY25hbWUoa2V5KzYsICZlLCAmaCwgcmlkKTsKKworCWlmICghaCB8fCAhaC0+cmVhZGFibGUo
KSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCXZhbCA9IGgtPmNhbGxfcmVhZChlLCAiIiwgRXJyb3JI
YW5kbGVyOjpkZWZhdWx0X2hhbmRsZXIoKSk7CisJaF9wYXRoID0gU3RyaW5nKFBBVEhfUk9PVCkg
KyAiLzAvZWxlbWVudHMvIiArIGUtPm5hbWUoKSArICIvIiArIGgtPm5hbWUoKTsKKwlsb2NrX3Bh
dGggPSBoX3BhdGggKyAiL2xvY2siOworCisJeGVuYnVzX3dyaXRlKFhCVF9OSUwsIGhfcGF0aC5j
X3N0cigpLCB2YWwuY19zdHIoKSk7CisJeGVuYnVzX3dyaXRlKFhCVF9OSUwsIGxvY2tfcGF0aC5j
X3N0cigpLCAiMCIpOworCisJTkxPRygiZWxlbWVudCBoYW5kbGVyIHJlYWQgJXMiLCB2YWwuY19z
dHIoKSk7CisJcmV0dXJuIDA7Cit9CisKK3VfaW50Citvbl9lbGVtX3dyaXRlaChpbnQgcmlkLCBj
aGFyICprZXksIHZvaWQgKmRhdGEpCit7CisJRWxlbWVudCAqZTsKKwljb25zdCBIYW5kbGVyKiBo
OworCWludCBmX3N0b3AgPSByb3V0ZXJfbGlzdFtyaWRdLmZfc3RvcDsKKworCWlmIChmX3N0b3Ag
fHwgc3RybGVuKChjaGFyICopIGRhdGEpID09IDApCisJCXJldHVybiAwOworCisJcmVhZF9jbmFt
ZShrZXkrMSwgJmUsICZoLCByaWQpOworCisJaWYgKCFoIHx8ICFoLT53cml0YWJsZSgpKQorCQly
ZXR1cm4gRUlOVkFMOworCisJaC0+Y2FsbF93cml0ZShTdHJpbmcoZGF0YSksIGUsIEVycm9ySGFu
ZGxlcjo6ZGVmYXVsdF9oYW5kbGVyKCkpOworCU5MT0coImVsZW1lbnQgaGFuZGxlciB3cml0ZSAl
cyB2YWx1ZSAlcyIsIGRhdGEsICIiKTsKKwlyZXR1cm4gMDsKK30KKwordV9pbnQKK29uX3JvdXRl
cihjaGFyICprZXksIHZvaWQgKmRhdGEpCit7CisJY2hhciAqcCA9IGtleTsKKwlTdHJpbmcgcmV2
OworCXVfaW50IHJpZDsKKworCWlmIChzdHJsZW4oa2V5KSA9PSAwKQorCQlyZXR1cm4gMDsKKwor
CXJpZCA9IGF0b2koZXZlbnRfdG9rZW4oJnApKTsKKwlyZXYgPSBldmVudF90b2tlbigmcCk7CisK
KwlpZiAocmV2ID09ICJjb250cm9sIikKKwkJb25fZWxlbV9yZWFkaChyaWQsIHAsIGRhdGEpOwor
CWVsc2UgaWYgKHJldiA9PSAiZWxlbWVudHMiKQorCQlvbl9lbGVtX3dyaXRlaChyaWQsIHAsIGRh
dGEpOworCWVsc2UgaWYgKHJldiA9PSAic3RhdHVzIikKKwkJb25fc3RhdHVzKHJpZCwga2V5LCBk
YXRhKTsKKworCXJldHVybiAwOworfQorCisvKiBydW5zIHRoZSBldmVudCBsb29wICovCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1
Y3QgeGVuc3RvcmVfZGV2KTsKKworCWNsaWNrX3N0YXRpY19pbml0aWFsaXplKCk7CisJZXJyaCA9
IEVycm9ySGFuZGxlcjo6ZGVmYXVsdF9oYW5kbGVyKCk7CisKKwl4c2RldiA9IChzdHJ1Y3QgeGVu
c3RvcmVfZGV2KikgbWFsbG9jKGxlbik7CisJbWVtc2V0KHhzZGV2LCAwLCBsZW4pOworCW1lbXNl
dChyb3V0ZXJfbGlzdCwgMCwgTUFYX1JPVVRFUlMgKiBzaXplb2Yoc3RydWN0IHJvdXRlcl9pbnN0
YW5jZSkpOworCWZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1JPVVRFUlM7ICsraSkgeworCQlyb3V0
ZXJfbGlzdFtpXS5mX3N0b3AgPSAxOworCX0KKworCXhlbmJ1c193YXRjaF9wYXRoX3Rva2VuKFhC
VF9OSUwsIFBBVEhfUk9PVCwgInJvdXRlci13YXRjaCIsCisJCQkmeHNkZXYtPmV2ZW50cyk7CisK
Kwl3aGlsZSAoIV9zaHV0ZG93bikgeworCQlTdHJpbmcgdmFsdWU7CisJCWNoYXIgKmVyciwgKnZh
bCwgKipwYXRoOworCisJCXBhdGggPSB4ZW5idXNfd2FpdF9mb3Jfd2F0Y2hfcmV0dXJuKCZ4c2Rl
di0+ZXZlbnRzKTsKKwkJaWYgKCFwYXRoIHx8IF9zaHV0ZG93bikKKwkJCWNvbnRpbnVlOworCisJ
CWVyciA9IHhlbmJ1c19yZWFkKFhCVF9OSUwsICpwYXRoLCAmdmFsKTsKKwkJaWYgKGVycikKKwkJ
CWNvbnRpbnVlOworCisJCW9uX3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZh
bCk7CisJfQorCisJTE9HKCJTaHV0dGluZyBkb3duLi4uIik7CisJeGVuYnVzX3Vud2F0Y2hfcGF0
aF90b2tlbihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giKTsKKworCWZpbmlfeGVu
YnVzKCk7CisJZnJlZSh4c2Rldik7CisKKwlyZXR1cm4gX3JlYXNvbjsKK30KKworLyogYXBwIHNo
dXRkb3duIGhvb2sgZnJvbSBtaW5pb3MgKi8KK2V4dGVybiAiQyIgeworaW50IGFwcF9zaHV0ZG93
bih1bnNpZ25lZCByZWFzb24pCit7CisJc3dpdGNoIChyZWFzb24pIHsKKwljYXNlIFNIVVRET1dO
X3Bvd2Vyb2ZmOgorCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cG93ZXJvZmYiKTsK
KwkJX3NodXRkb3duID0gMTsKKwkJX3JlYXNvbiA9IHJlYXNvbjsKKwkJcm91dGVyX3N0b3AoKTsK
KwkJeGVuYnVzX3JlbGVhc2Vfd2FpdF9mb3Jfd2F0Y2goJnhzZGV2LT5ldmVudHMpOworCQlicmVh
azsKKwljYXNlIFNIVVRET1dOX3JlYm9vdDoKKwkJTE9HKCJSZXF1ZXN0ZWQgc2h1dGRvd24gcmVh
c29uPXJlYm9vdCIpOworCQlfc2h1dGRvd24gPSAxOworCQlfcmVhc29uID0gcmVhc29uOworCQly
b3V0ZXJfc3RvcCgpOworCQl4ZW5idXNfcmVsZWFzZV93YWl0X2Zvcl93YXRjaCgmeHNkZXYtPmV2
ZW50cyk7CisJCWJyZWFrOworCWNhc2UgU0hVVERPV05fc3VzcGVuZDoKKwkJTE9HKCJSZXF1ZXN0
ZWQgc2h1dGRvd24gcmVhc29uPXN1c3BlbmQiKTsKKwkJcm91dGVyX3N1c3BlbmQoKTsKKwkJa2Vy
bmVsX3N1c3BlbmQoKTsKKwkJcm91dGVyX3Jlc3VtZSgpOworCWRlZmF1bHQ6CisJCUxPRygiUmVx
dWVzdGVkIHNodXRkb3duIHdpdGggaW52YWxpZCByZWFzb24gKCVkKSIsIHJlYXNvbik7CisJCWJy
ZWFrOworCX0KKworCXJldHVybiAwOworfQorfQotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQl-0003a0-5R; Sun, 02 Jun 2019 05:53:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQk-0003Zr-1L
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:18 +0000
X-Inumbo-ID: b74b714a-84fa-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b74b714a-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:53:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2181C10530E;
 Sun,  2 Jun 2019 07:53:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vrZH2sKLm3LC; Sun,  2 Jun 2019 07:53:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 036B8105309
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:16 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:09 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:30 +0100
Message-ID: <20190602055238.3818-4-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 03/11] Initial public release:
 click.cc: ifdef out xen-specific code.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW4gdGhlIENsaWNrT1MgcG9ydCwgdGhpcyBjb2RlIG1vc3RseSBkZWFscyB3aXRoIHByb3ZpZGlu
ZyBhIGNvbnNvbGUgZm9yCmludGVyYWN0aW5nIHdpdGggQ2xpY2suIFRoaXMgaW5pdGlhbCByZWxl
YXNlIGRvZXNuJ3QgaGF2ZSBzdWNoIHN1cHBvcnQsCmJ1dCB0aGlzIGNvdWxkIGJlIHJldmlzaXRl
ZCBhdCBhIGxhdGVyIHBvaW50LgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9y
aWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIGNsaWNrLmNjIHwgNzcgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk
LCAzOSBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jbGljay5j
YyBiL2NsaWNrLmNjCmluZGV4IDI1YmM1MjQuLmEzYmZiYTggMTAwNjQ0Ci0tLSBhL2NsaWNrLmNj
CisrKyBiL2NsaWNrLmNjCkBAIC0zMiw2ICszMiwxNiBAQAogICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCisvKiBUbyBiZSBp
bXBsZW1lbnRlZCBhdCBhIGxhdGVyIHBvaW50ICovCisjZGVmaW5lIENMSUNLX0NPTlNPTEVfU1VQ
UE9SVF9JTVBMRU1FTlRFRCAwCisKK2V4dGVybiAiQyJ7CisjaW5jbHVkZSA8c3RkbGliLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxwb2xsLmg+
Cit9CisKICNpbmNsdWRlIDxjbGljay9jb25maWcuaD4KICNpbmNsdWRlIDxjbGljay9sZXhlci5o
aD4KICNpbmNsdWRlIDxjbGljay9yb3V0ZXIuaGg+CkBAIC00MiwxNSArNTIsMTAgQEAKICNpbmNs
dWRlIDxjbGljay9zdHJhY2N1bS5oaD4KICNpbmNsdWRlIDxjbGljay9kcml2ZXIuaGg+CiAKLWV4
dGVybiAiQyJ7Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1ay9zY2hlZC5oPgorI2luY2x1ZGUgPHVrL3RocmVh
ZC5oPgogCi0jaW5jbHVkZSA8bWluaS1vcy94ZW5idXMuaD4KLSNpbmNsdWRlIDxtaW5pLW9zL3No
dXRkb3duLmg+Ci0jaW5jbHVkZSA8bWluaS1vcy9zY2hlZC5oPgotfQoraW50IGNsaWNrX250aHJl
YWRzID0gMTsKIAogdm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKIApAQCAtNTksMTkgKzY0LDYg
QEAgdm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKIAlwcmludGYoIlslczolZF0gIiBmbXQgIlxu
IiwgXAogCQlfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQogCi0vKioKLSAq
IHhlbnN0b3JlIGhlbHBlcnMKLSAqLwotI2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3MiCi0jZGVm
aW5lIFBBVEhfTUFYX0xFTgkxMDI0Ci0KLXN0cnVjdCB4ZW5zdG9yZV9kZXYgewotCWRvbWlkX3Qg
ZG9tOwotCWNoYXIgKm5vZGVuYW1lOwotCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7Ci19ICp4
c2RldiA9IE5VTEw7Ci0KLXVpbnQzMl90IGRvbWlkID0gLTE7CiB1X2ludCBfc2h1dGRvd24gPSAw
OwogdV9pbnQgX3JlYXNvbiA9IDA7CiAKQEAgLTk5LDYgKzkxLDcgQEAgcmVhZF9yaWQoY2hhciAq
cGF0aCkKIAlyZXR1cm4gaWQ7CiB9CiAKKyNpZiBDTElDS19DT05TT0xFX1NVUFBPUlRfSU1QTEVN
RU5URUQKIFN0cmluZyAqCiByZWFkX2NvbmZpZyh1X2ludCByaWQgPSAwKQogewpAQCAtMTE3LDcg
KzExMCw3IEBAIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApCiAKIAlyZXR1cm4gY2ZnOwogfQot
CisjZW5kaWYgLyogQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVEICovCiAvKgogICog
Y2xpY2sgZ2x1ZQogICovCkBAIC0xMzUsNyArMTI4LDcgQEAgdm9pZAogcm91dGVyX3RocmVhZCh2
b2lkICp0aHJlYWRfZGF0YSkKIHsKIAl1X2ludCAqcmlkID0gKHVfaW50KikgdGhyZWFkX2RhdGE7
Ci0JU3RyaW5nICpjb25maWcgPSByZWFkX2NvbmZpZygqcmlkKTsKKwlTdHJpbmcgKmNvbmZpZyA9
IG5ldyBTdHJpbmc7IC8vcmVhZF9jb25maWcoKnJpZCk7CiAJc3RydWN0IHJvdXRlcl9pbnN0YW5j
ZSAqcmkgPSAmcm91dGVyX2xpc3RbKnJpZF07CiAKIAlyaS0+ciA9IGNsaWNrX3JlYWRfcm91dGVy
KCpjb25maWcsIHRydWUsIGVycmgsIGZhbHNlLCAmbWFzdGVyKTsKQEAgLTE3NCwxMiArMTY3LDEz
IEBAIHJvdXRlcl9zdG9wKGludCBuID0gTUFYX1JPVVRFUlMpCiAKIAkJZG8gewogCQkJci0+cGxl
YXNlX3N0b3BfZHJpdmVyKCk7Ci0JCQlzY2hlZHVsZSgpOworCQkJdWtfc2NoZWRfeWllbGQoKTsK
IAkJfSB3aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsKIAl9CiAJTE9HKCJTdG9wcGVk
IGFsbCByb3V0ZXJzLi4uXG5cbiIpOwogfQogCisjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lN
UExFTUVOVEVECiB2b2lkCiByb3V0ZXJfc3VzcGVuZChpbnQgbiA9IE1BWF9ST1VURVJTKQogewpA
QCAtMzA3LDI1ICszMDEsMzIgQEAgb25fcm91dGVyKGNoYXIgKmtleSwgdm9pZCAqZGF0YSkKIAog
CXJldHVybiAwOwogfQorI2VuZGlmIC8qIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRF
RCAqLworCisjaWYgQ09ORklHX0xJQkNMSUNLX01BSU4KKyNkZWZpbmUgQ0xJQ0tfTUFJTiBtYWlu
CisjZWxzZQorI2RlZmluZSBDTElDS19NQUlOIGNsaWNrX21haW4KK2V4dGVybiAiQyIgaW50IGNs
aWNrX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKyNlbmRpZgogCiAvKiBydW5zIHRoZSBl
dmVudCBsb29wICovCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitpbnQgQ0xJQ0tf
TUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0Jc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1
Y3QgeGVuc3RvcmVfZGV2KTsKKwlzdHJ1Y3QgdWtfdGhyZWFkICpyb3V0ZXI7CiAKIAljbGlja19z
dGF0aWNfaW5pdGlhbGl6ZSgpOwogCWVycmggPSBFcnJvckhhbmRsZXI6OmRlZmF1bHRfaGFuZGxl
cigpOwogCi0JeHNkZXYgPSAoc3RydWN0IHhlbnN0b3JlX2RldiopIG1hbGxvYyhsZW4pOwotCW1l
bXNldCh4c2RldiwgMCwgbGVuKTsKIAltZW1zZXQocm91dGVyX2xpc3QsIDAsIE1BWF9ST1VURVJT
ICogc2l6ZW9mKHN0cnVjdCByb3V0ZXJfaW5zdGFuY2UpKTsKIAlmb3IgKGludCBpID0gMDsgaSA8
IE1BWF9ST1VURVJTOyArK2kpIHsKIAkJcm91dGVyX2xpc3RbaV0uZl9zdG9wID0gMTsKIAl9CiAK
LQl4ZW5idXNfd2F0Y2hfcGF0aF90b2tlbihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0
Y2giLAotCQkJJnhzZGV2LT5ldmVudHMpOwotCisjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lN
UExFTUVOVEVECisvKiBUT0RPOiBUaGlzIGludGVyYWN0aW9uIGJldHdlZW4geGVuYnVzIGFuZCBj
bGljayBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCisgKiBnZW5lcmljIHVuaWtyYWZ0IGludGVy
YWN0aW9uIHNjaGVtZSwgZm9yIGV4YW1wbGUsIHZpYSBhIGNvbnNvbGUuCisgKi8KIAl3aGlsZSAo
IV9zaHV0ZG93bikgewogCQlTdHJpbmcgdmFsdWU7CiAJCWNoYXIgKmVyciwgKnZhbCwgKipwYXRo
OwpAQCAtMzQwLDE3ICszNDEsMTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog
CiAJCW9uX3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7CiAJfQotCisj
ZWxzZQorCXJvdXRlciA9IHVrX3RocmVhZF9jcmVhdGUoImNsaWNrLXJvdXRlciIsIHJvdXRlcl90
aHJlYWQsIDApOworCXVrX3RocmVhZF93YWl0KHJvdXRlcik7CisjZW5kaWYKIAlMT0coIlNodXR0
aW5nIGRvd24uLi4iKTsKLQl4ZW5idXNfdW53YXRjaF9wYXRoX3Rva2VuKFhCVF9OSUwsIFBBVEhf
Uk9PVCwgInJvdXRlci13YXRjaCIpOwotCi0JZmluaV94ZW5idXMoKTsKLQlmcmVlKHhzZGV2KTsK
IAogCXJldHVybiBfcmVhc29uOwogfQogCiAvKiBhcHAgc2h1dGRvd24gaG9vayBmcm9tIG1pbmlv
cyAqLworLyogVE9ETzogY291bGQgYmUgcmV1c2VkIGFzIGNhbGwtaW4gZnJvbSB1bmlrcmFmdCAq
LworI2lmIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRFRAogZXh0ZXJuICJDIiB7CiBp
bnQgYXBwX3NodXRkb3duKHVuc2lnbmVkIHJlYXNvbikKIHsKQEAgLTM2MCwxNCArMzYyLDEyIEBA
IGludCBhcHBfc2h1dGRvd24odW5zaWduZWQgcmVhc29uKQogCQlfc2h1dGRvd24gPSAxOwogCQlf
cmVhc29uID0gcmVhc29uOwogCQlyb3V0ZXJfc3RvcCgpOwotCQl4ZW5idXNfcmVsZWFzZV93YWl0
X2Zvcl93YXRjaCgmeHNkZXYtPmV2ZW50cyk7CiAJCWJyZWFrOwogCWNhc2UgU0hVVERPV05fcmVi
b290OgogCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cmVib290Iik7CiAJCV9zaHV0
ZG93biA9IDE7CiAJCV9yZWFzb24gPSByZWFzb247CiAJCXJvdXRlcl9zdG9wKCk7Ci0JCXhlbmJ1
c19yZWxlYXNlX3dhaXRfZm9yX3dhdGNoKCZ4c2Rldi0+ZXZlbnRzKTsKIAkJYnJlYWs7CiAJY2Fz
ZSBTSFVURE9XTl9zdXNwZW5kOgogCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249c3Vz
cGVuZCIpOwpAQCAtMzgyLDMgKzM4Miw0IEBAIGludCBhcHBfc2h1dGRvd24odW5zaWduZWQgcmVh
c29uKQogCXJldHVybiAwOwogfQogfQorI2VuZGlmIC8qIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9J
TVBMRU1FTlRFRCAqLwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQo-0003af-70; Sun, 02 Jun 2019 05:53: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQn-0003aZ-He
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:21 +0000
X-Inumbo-ID: b902eb66-84fa-11e9-8319-63333466bd28
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b902eb66-84fa-11e9-8319-63333466bd28;
 Sun, 02 Jun 2019 05:53:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 05EB3F201F;
 Sun,  2 Jun 2019 07:53:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4Q3Q9h6M-7Yt; Sun,  2 Jun 2019 07:53:18 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CE7F9F2003
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:16 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:16 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:31 +0100
Message-ID: <20190602055238.3818-5-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 04/11] Initial public release:
 click config-userlevel.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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2UgdXNlIHVzZXJsZXZlbCBtb2RlIGZvciBvdXIgdW5pa3JhZnQgY2xpY2sgcG9ydC4gVGhpcyBj
b25maWcgc2V0cwpvcHRpb25zIGFjY29yZGluZyB0byB3aGljaCBmZWF0dXJlcyBhcmUgYXZhaWxh
YmxlIGluIHVuaWtyYWZ0LgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFu
LnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIGluY2x1ZGUvY2xpY2svY29uZmlnLXVzZXJsZXZlbC5o
IHwgMzQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAz
NDggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY2xpY2svY29uZmln
LXVzZXJsZXZlbC5oCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVs
LmggYi9pbmNsdWRlL2NsaWNrL2NvbmZpZy11c2VybGV2ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yMjU0OGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jbGlj
ay9jb25maWctdXNlcmxldmVsLmgKQEAgLTAsMCArMSwzNDggQEAKKy8qIGluY2x1ZGUvY2xpY2sv
Y29uZmlnLXVzZXJsZXZlbC5oLiAgR2VuZXJhdGVkIGZyb20gY29uZmlnLXVzZXJsZXZlbC5oLmlu
IGJ5IGNvbmZpZ3VyZS4gICovCisvKiBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGNvbmZpZ3VyZSB0
byBwcm9kdWNlIGNvbmZpZy11c2VybGV2ZWwuaC4gLSotIG1vZGU6IGMgLSotICovCisjaWZuZGVm
IENMSUNLX0NPTkZJR19VU0VSTEVWRUxfSAorI2RlZmluZSBDTElDS19DT05GSUdfVVNFUkxFVkVM
X0gKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfX3RocmVhZCBzdG9yYWdlIGNsYXNzIHNw
ZWNpZmllci4gKi8KKyNkZWZpbmUgSEFWRV9fX1RIUkVBRF9TVE9SQUdFX0NMQVNTIDEKKworLyog
RGVmaW5lIGlmIGFjY2VwdCgpIHVzZXMgc29ja2xlbl90LiAqLworI2RlZmluZSBIQVZFX0FDQ0VQ
VF9TT0NLTEVOX1QgMQorCisvKiBEZWZpbmUgaWYga3F1ZXVlKCkgbWF5IGJlIHVzZWQgdG8gd2Fp
dCBmb3IgZmlsZSBkZXNjcmlwdG9yIGV2ZW50cy4gKi8KKyNkZWZpbmUgSEFWRV9BTExPV19LUVVF
VUUgMAorCisvKiBEZWZpbmUgaWYgcG9sbCgpIG1heSBiZSB1c2VkIHRvIHdhaXQgZm9yIGZpbGUg
ZGVzY3JpcHRvciBldmVudHMuICovCisjZGVmaW5lIEhBVkVfQUxMT1dfUE9MTCAxCisKKy8qIERl
ZmluZSBpZiBzZWxlY3QoKSBtYXkgYmUgdXNlZCB0byB3YWl0IGZvciBmaWxlIGRlc2NyaXB0b3Ig
ZXZlbnRzLiAqLworI2RlZmluZSBIQVZFX0FMTE9XX1NFTEVDVCAxCisKKy8qIERlZmluZSBpZiA8
cGNhcC5oPiB1c2VzIGJwZl90aW1ldmFsLiAqLworLyogI3VuZGVmIEhBVkVfQlBGX1RJTUVWQUwg
Ki8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8Ynl0ZXN3YXAuaD4gaGVhZGVyIGZpbGUu
ICovCisjZGVmaW5lIEhBVkVfQllURVNXQVBfSCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgY2xvY2tfZ2V0dGltZSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1F
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uCisgICBvZiAn
Y2xvY2tfZ2V0dGltZScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKyNkZWZpbmUgSEFWRV9E
RUNMX0NMT0NLX0dFVFRJTUUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVj
bGFyYXRpb24KKyAgIG9mICdtYWR2aXNlJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LiAqLworI2Rl
ZmluZSBIQVZFX0RFQ0xfTUFEVklTRSAwCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBkZWNsYXJhdGlvbgorICAgb2YgJ3BjYXBfc2V0bm9uYmxvY2snLCBhbmQgdG8gMCBpZiB5b3Ug
ZG9uJ3QuICovCisjZGVmaW5lIEhBVkVfREVDTF9QQ0FQX1NFVE5PTkJMT0NLIDEKKworLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYg
SEFWRV9ETEZDTl9IICovCisKKy8qIERlZmluZSBpZiBkeW5hbWljIGxpbmtpbmcgaXMgcG9zc2li
bGUuICovCisvKiAjdW5kZWYgSEFWRV9EWU5BTUlDX0xJTktJTkcgKi8KKworLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSA8ZXhlY2luZm8uaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFW
RV9FWEVDSU5GT19IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmZzIGZ1bmN0aW9u
LiAqLworI2RlZmluZSBIQVZFX0ZGUyAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmZz
bCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9GRlNMIDEKKworLyogRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSBmZnNsbCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9GRlNMTCAxCisKKy8qIEZs
b2F0aW5nIHBvaW50IGFyaXRobWV0aWMgaXMgYWxsb3dlZC4gKi8KKyNkZWZpbmUgSEFWRV9GTE9B
VF9UWVBFUyAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGdycC5oPiBoZWFkZXIgZmls
ZS4gKi8KKyNkZWZpbmUgSEFWRV9HUlBfSCAxCisKKy8qIERlZmluZSBpZiB0aGUgbGFzdCBhcmd1
bWVudCB0byBFVl9TRVQgaGFzIHBvaW50ZXIgdHlwZS4gKi8KKy8qICN1bmRlZiBIQVZFX0VWX1NF
VF9VREFUQV9QT0lOVEVSICovCisKKy8qIERlZmluZSBpZiAnc3RydWN0IGlmX2RhdGEnIGhhcyBh
biAnaWZpX2RhdGFsZW4nIG1lbWJlci4gKi8KKy8qICN1bmRlZiBIQVZFX0lGX0RBVEFfSUZJX0RB
VEFMRU4gKi8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8aWZhZGRycy5oPiBoZWFkZXIg
ZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX0lGQUREUlNfSCAqLworCisvKiBEZWZpbmUgaWYgJ2lu
dDY0X3QnIGlzIHR5cGVkZWZlZCB0byAnbG9uZycgYXQgdXNlciBsZXZlbC4gKi8KKyNkZWZpbmUg
SEFWRV9JTlQ2NF9JU19MT05HX1VTRVJMRVZFTCAxCisKKy8qIERlZmluZSBpZiAnaW50NjRfdCcg
aXMgdHlwZWRlZmVkIHRvICdsb25nIGxvbmcnIGF0IHVzZXIgbGV2ZWwuICovCisvKiAjdW5kZWYg
SEFWRV9JTlQ2NF9JU19MT05HX0xPTkdfVVNFUkxFVkVMICovCisKKy8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX0lOVFRZ
UEVTX0ggMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGtxdWV1ZSBmdW5jdGlvbi4gKi8K
Ky8qICN1bmRlZiBIQVZFX0tRVUVVRSAqLworCisvKiBEZWZpbmUgaWYgeW91ciBDIGxpYnJhcnkg
Y29udGFpbnMgbGFyZ2UgZmlsZSBzdXBwb3J0LiAqLworI2RlZmluZSBIQVZFX0xBUkdFX0ZJTEVf
U1VQUE9SVCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lmX3R1bi5oPiBo
ZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX0xJTlVYX0lGX1RVTl9IICovCisKKy8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgbWFkdmlzZSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9N
QURWSVNFIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtbWFwIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX01NQVAgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXQvYnBm
Lmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfTkVUX0JQRl9IICovCisKKy8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl9kbC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1
bmRlZiBIQVZFX05FVF9JRl9ETF9IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5l
dC9pZl90YXAuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9ORVRfSUZfVEFQX0gg
Ki8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmX3R1bi5oPiBoZWFkZXIgZmls
ZS4gKi8KKy8qICN1bmRlZiBIQVZFX05FVF9JRl9UVU5fSCAqLworCisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgdGhlIDxuZXQvaWZfdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFW
RV9ORVRfSUZfVFlQRVNfSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXRkYi5o
PiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX05FVERCX0ggKi8KKworLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSA8bmV0L25ldG1hcC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRl
ZiBIQVZFX05FVF9ORVRNQVBfSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXRw
YWNrZXQvcGFja2V0Lmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZmVkIEhBVkVfTkVUUEFDS0VU
X1BBQ0tFVF9IICovCisKKy8qIERlZmluZSBpZiA8bmV3Lmg+IGV4aXN0cyBhbmQgd29ya3MuICov
CisvKiAjdW5kZWYgSEFWRV9ORVdfSCAqLworCisvKiBEZWZpbmUgaWYgPG5ldz4gZXhpc3RzIGFu
ZCB3b3Jrcy4gKi8KKy8qICN1bmRlZiBIQVZFX05FV19IRFIgMSAqLworCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgLWxwY2FwIGFuZCBwY2FwLmguICovCisjZGVmaW5lIEhBVkVfUENBUCAxCisKKy8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcGNhcF9pbmplY3QgZnVuY3Rpb24uICovCisjZGVmaW5l
IEhBVkVfUENBUF9JTkpFQ1QgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2Vu
ZHBhY2tldCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9QQ0FQX1NFTkRQQUNLRVQgMQorCisv
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2V0ZGlyZWN0aW9uIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX1BDQVBfU0VURElSRUNUSU9OIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBwY2FwX3NldG5vbmJsb2NrIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BDQVBfU0VU
Tk9OQkxPQ0sgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2V0X2ltbWVkaWF0
ZV9tb2RlIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BDQVBfU0VUX0lNTUVESUFURV9NT0RF
IDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIC1scHJvcGVyIGFuZCBwcm9wLmgsIGFuZCBwcm9w
ZXIgb3BlcmF0aW9ucyBzaG91bGQgYmUKKyAgIHByZWZlcnJlZCB0byB0aGVpciBub24tcHJvcGVy
IGNvdW50ZXJwYXJ0cy4gKi8KKy8qICN1bmRlZiBIQVZFX1BST1BFUiAqLworCisvKiBEZWZpbmUg
aWYgeW91IGhhdmUgYSBub24tZW11bGF0ZWQgPHBvbGwuaD4gaGVhZGVyIGZpbGUuICovCisvKiAj
dW5kZWYgSEFWRV9QT0xMX0ggKi8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwc2VsZWN0
IGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BTRUxFQ1QgMQorCisvKiBQbGFjZW1lbnQgbmV3
IGlzIGFsd2F5cyBwcm92aWRlZCBiZWxvdy4gKi8KKyNkZWZpbmUgSEFWRV9QTEFDRU1FTlRfTkVX
IDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uCisgICBvZiAn
cHRocmVhZF9zZXRhZmZpbml0eV9ucCcsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKy8qICN1
bmRlZiBIQVZFX0RFQ0xfUFRIUkVBRF9TRVRBRkZJTklUWV9OUCAqLworCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIDxwd2QuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfUFdEX0gg
MQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHJhbmRvbSBmdW5jdGlvbi4gKi8KKyNkZWZp
bmUgSEFWRV9SQU5ET00gMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBm
dW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX1NJR0FDVElPTiAqLworCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIHNucHJpbnRmIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1NOUFJJTlRG
IDEKKworLyogRGVmaW5lIGlmICdzdHJ1Y3Qgc29ja2FkZHJfaW4nIGhhcyBhICdzaW5fbGVuJyBt
ZW1iZXIuICovCisvKiAjdW5kZWYgSEFWRV9TT0NLQUREUl9JTl9TSU5fTEVOICovCisKKy8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RyZXJyb3IgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVf
U1RSRVJST1IgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRl
ciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCisKKy8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgc3RybmxlbiBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TVFJOTEVOIDEKKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2YgZnVuY3Rpb24uICovCisjZGVmaW5lIEhB
VkVfU1RSVE9GIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xkIGZ1bmN0aW9u
LiAqLworI2RlZmluZSBIQVZFX1NUUlRPTEQgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl
IHN0cnRvdWwgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RSVE9VTCAxCisKKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9ldmVudC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRl
ZiBIQVZFX1NZU19FVkVOVF9IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9t
bWFuLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19NTUFOX0ggMQorCisvKiBE
ZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRjZ2V0cGdycCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFW
RV9UQ0dFVFBHUlAgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx0ZXJtaW8uaD4gaGVh
ZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfVEVSTUlPX0ggMQorCisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgdV9pbnRYWF90IHR5cGVzIGJ1dCBub3QgdWludFhYX3QgdHlwZXMuICovCisvKiAjdW5k
ZWYgSEFWRV9VX0lOVF9UWVBFUyAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlz
dGQuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorCisvKiBEZWZp
bmUgaWYgYSBDbGljayB1c2VyLWxldmVsIGRyaXZlciBtaWdodCBydW4gbXVsdGlwbGUgdGhyZWFk
cy4gKi8KKy8qICN1bmRlZiBIQVZFX1VTRVJfTVVMVElUSFJFQUQgKi8KKworLyogRGVmaW5lIGlm
IGEgQ2xpY2sgdXNlci1sZXZlbCBkcml2ZXIgdXNlcyBJbnRlbCBEUERLLiAqLworLyogI3VuZGVm
IEhBVkVfRFBESyAqLworCisvKiBEZWZpbmUgaWYgQ2xpY2sgc2hvdWxkIHVzZSBWYWxncmluZCBj
bGllbnQgcmVxdWVzdHMuICovCisvKiAjdW5kZWYgSEFWRV9WQUxHUklORCAqLworCisvKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIDx2YWxncmluZC9tZW1jaGVjay5oPiBoZWFkZXIgZmlsZS4gKi8K
Ky8qICN1bmRlZiBIQVZFX1ZBTEdSSU5EX01FTUNIRUNLX0ggKi8KKworLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSB2c25wcmludGYgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfVlNOUFJJTlRG
IDEKKworLyogVGhlIHNpemUgb2YgYSBgY2xpY2tfamlmZmllc190JywgYXMgY29tcHV0ZWQgYnkg
c2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfQ0xJQ0tfSklGRklFU19UIFNJWkVPRl9JTlQKKwor
LyogVGhlIHNpemUgb2YgYSBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVm
aW5lIFNJWkVPRl9PRkZfVCA4CisKKworLyogU2V0IGZlYXR1cmUgdGVzdCBtYWNyb3MgYmVmb3Jl
IGFueXRoaW5nIGlzIGluY2x1ZGVkLiAqLworI2lmIEhBVkVfTEFSR0VfRklMRV9TVVBQT1JUICYm
IEhBVkVfSU5UNjRfVFlQRVMKKyMgaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJ
TEVfT0ZGU0VUX0JJVFMgIT0gNjQKKyMgIGVycm9yICJiYWQgX0ZJTEVfT0ZGU0VUX0JJVFMsIGRp
ZCB5b3UgI2luY2x1ZGUgPGNsaWNrL2NvbmZpZy5oPiBmaXJzdD8iCisjIGVuZGlmCisjIGRlZmlu
ZSBfTEFSR0VGSUxFX1NPVVJDRSAxCisjIGRlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAorI2Vu
ZGlmCisjaWZkZWYgX19BUFBMRV9fCisjIGRlZmluZSBfREFSV0lOX1VOTElNSVRFRF9TRUxFQ1Qg
MQorI2VuZGlmCisKKy8qIEluY2x1ZGUgaW50ZWdlciB0eXBlIGRlZmluaXRpb25zLiAqLworI2lm
ZGVmIEhBVkVfSU5UVFlQRVNfSAorIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2VuZGlmCisjaW5j
bHVkZSA8c3lzL3R5cGVzLmg+CisKKy8qIERlZmluZSB1aW50IHR5cGVzIGluIHRlcm1zIG9mIHVf
aW50IHR5cGVzLCBpZiBuZWNlc3NhcnkuICovCisjaWZkZWYgSEFWRV9VX0lOVF9UWVBFUwordHlw
ZWRlZiB1X2ludDhfdCB1aW50OF90OwordHlwZWRlZiB1X2ludDE2X3QgdWludDE2X3Q7Cit0eXBl
ZGVmIHVfaW50MzJfdCB1aW50MzJfdDsKKyMgaWZkZWYgSEFWRV9JTlQ2NF9UWVBFUwordHlwZWRl
ZiB1X2ludDY0X3QgdWludDY0X3Q7CisjIGVuZGlmCit0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CQkv
KiBYWFg/ICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OworI2VuZGlmCisKKy8q
IERlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkcgYmFzZWQgb24gSEFWRV9JTlQ2NF9JU19MT05HX1VT
RVJMRVZFTC4gKi8KKyNpZmRlZiBIQVZFX0lOVDY0X0lTX0xPTkdfVVNFUkxFVkVMCisjIGRlZmlu
ZSBIQVZFX0lOVDY0X0lTX0xPTkcgSEFWRV9JTlQ2NF9JU19MT05HX1VTRVJMRVZFTAorI2VuZGlm
CisKKy8qIERlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkdfTE9ORyBiYXNlZCBvbiBIQVZFX0lOVDY0
X0lTX0xPTkdfTE9OR19VU0VSTEVWRUwuICovCisjaWZkZWYgSEFWRV9JTlQ2NF9JU19MT05HX0xP
TkdfVVNFUkxFVkVMCisjIGRlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkdfTE9ORyBIQVZFX0lOVDY0
X0lTX0xPTkdfTE9OR19VU0VSTEVWRUwKKyNlbmRpZgorCisvKiBJZiA2NC1iaXQgaW50ZWdlcnMg
ZXhpc3QsIHRoZW4gNjQtYml0IGRpdmlkZSBleGlzdHMuICovCisjaWZkZWYgSEFWRV9JTlQ2NF9U
WVBFUworIyBkZWZpbmUgSEFWRV9JTlQ2NF9ESVZJREUgMQorI2VuZGlmCisKKy8qIERlZmluZSBI
QVZFX01VTFRJVEhSRUFEIGJhc2VkIG9uIEhBVkVfVVNFUl9NVUxUSVRIUkVBRC4gKi8KKyNpZmRl
ZiBIQVZFX1VTRVJfTVVMVElUSFJFQUQKKyMgZGVmaW5lIEhBVkVfTVVMVElUSFJFQUQgSEFWRV9V
U0VSX01VTFRJVEhSRUFECisjZW5kaWYKKworLyogRGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJ
TUUgaWYgdGhlIGNsb2NrX2dldHRpbWUgZnVuY3Rpb24gaXMgdXNhYmxlLiAqLworI2lmbmRlZiBI
QVZFX1VTRV9DTE9DS19HRVRUSU1FCisjIGlmIEhBVkVfREVDTF9DTE9DS19HRVRUSU1FICYmIEhB
VkVfQ0xPQ0tfR0VUVElNRQorIyAgZGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUgMQorIyBl
bmRpZgorI2VuZGlmCisKKy8qIEluY2x1ZGUgYXNzZXJ0IG1hY3JvLiAqLworI2luY2x1ZGUgPGFz
c2VydC5oPgorCisvKiBEZWZpbmUgbGlrZWx5IGFuZCB1bmxpa2VseSBtYWNyb3MuICovCisjaWYg
X19HTlVDX18gPj0gMworIyBkZWZpbmUgbGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCks
IDEpCisjIGRlZmluZSB1bmxpa2VseSh4KQlfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLCAwKQorI2Vs
c2UKKyMgZGVmaW5lIGxpa2VseSh4KQkoeCkKKyMgZGVmaW5lIHVubGlrZWx5KHgpCSh4KQorI2Vu
ZGlmCisKKy8qIERlZmluZSBpZiBtbWFwIGlzIGFsbG93ZWQuICovCisjaWYgZGVmaW5lZChIQVZF
X1NZU19NTUFOX0gpICYmIGRlZmluZWQoSEFWRV9NTUFQKQorIyBkZWZpbmUgQUxMT1dfTU1BUCAx
CisjZW5kaWYKKworLyogUHJvdG90eXBlIHN0cmVycm9yIGlmIHdlIGRvbid0IGhhdmUgaXQuICov
CisjaWZuZGVmIEhBVkVfU1RSRVJST1IKK2NoYXIgKnN0cmVycm9yKGludCBlcnJubyk7CisjZW5k
aWYKKworLyogVXNlIG5hbm9zZWNvbmQtZ3JhbnVsYXJpdHkgdGltZXN0YW1wcyBpZiB0aGV5IGFy
ZSBlbmFibGVkLiAqLworI2lmIEhBVkVfTkFOT1RJTUVTVEFNUF9FTkFCTEVECisjIGRlZmluZSBU
SU1FU1RBTVBfTkFOT1NFQyAxCisjIGRlZmluZSBIQVZFX05BTk9USU1FU1RBTVAgMQkvKiBEZXBy
ZWNhdGVkICovCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8qIFByb3ZpZGUgcGxh
Y2VtZW50IG5ldy4gKi8KKyNpZiBIQVZFX05FV19IRFIKKyMgaW5jbHVkZSA8bmV3PgorI2VsaWYg
SEFWRV9ORVdfSAorIyBpbmNsdWRlIDxuZXcuaD4KKyNlbHNlCitpbmxpbmUgdm9pZCAqb3BlcmF0
b3IgbmV3KHNpemVfdCwgdm9pZCAqdikgeyByZXR1cm4gdjsgfQorI2VuZGlmCisKKy8qIFByb3Rv
dHlwZSBtYWR2aXNlIGlmIHdlIGhhdmUgaXQsIGJ1dCBub3QgdGhlIHByb3RvdHlwZS4gKi8KKyNp
ZiBBTExPV19NTUFQICYmIEhBVkVfTUFEVklTRSAmJiAhSEFWRV9ERUNMX01BRFZJU0UKK2V4dGVy
biAiQyIgaW50IG1hZHZpc2Uodm9pZCAqYWRkciwgc2l6ZV90IGxlbiwgaW50IGJlaGF2KTsKKyNl
bmRpZgorCisvKiBEZWZpbmUgbWFjcm9zIHRoYXQgc3Vycm91bmQgQ2xpY2sgZGVjbGFyYXRpb25z
LiAqLworI2lmbmRlZiBDTElDS19ERUNMUworIyBkZWZpbmUgQ0xJQ0tfREVDTFMJCS8qICovCisj
IGRlZmluZSBDTElDS19FTkRERUNMUwkJLyogKi8KKyMgZGVmaW5lIENMSUNLX1VTSU5HX0RFQ0xT
CS8qICovCisjIGRlZmluZSBDTElDS19OQU1FKG5hbWUpCTo6bmFtZQorI2VuZGlmCisKKyNlbmRp
ZiAvKiBfX2NwbHVzcGx1cyAqLworCisjZW5kaWYgLyogQ0xJQ0tfQ09ORklHX1VTRVJMRVZFTF9I
ICovCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQp-0003b9-8U; Sun, 02 Jun 2019 05:53:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQo-0003aj-Da
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:22 +0000
X-Inumbo-ID: b9c6462e-84fa-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b9c6462e-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:53:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 48C7F10530E;
 Sun,  2 Jun 2019 07:53:20 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id eIKUklysvmBk; Sun,  2 Jun 2019 07:53:20 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 2A55A105309
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:20 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:19 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:32 +0100
Message-ID: <20190602055238.3818-6-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 05/11] Initial public release:
 stubs.cc for unfinished glue implementations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIE1ha2VmaWxlLnVrIHwgIDEgKwogc3R1YnMuY2MgICAgfCAzNiArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygr
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN0dWJzLmNjCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsg
Yi9NYWtlZmlsZS51awppbmRleCBiMjdiYjEwLi41MDMwZmZkIDEwMDY0NAotLS0gYS9NYWtlZmls
ZS51aworKysgYi9NYWtlZmlsZS51awpAQCAtOTAsNiArOTAsNyBAQCBMSUJDTElDS19DWFhGTEFH
Uy15ICs9ICQoTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MpCiAjIFVuaWtyYWZ0IDwtPiBDbGljayBn
bHVlIGNvZGUKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBMSUJDTElDS19TUkNTLXkgKz0gJChM
SUJDTElDS19CQVNFKS9jbGljay5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfQkFT
RSkvc3R1YnMuY2MKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ2xpY2sgc291cmNlcwpk
aWZmIC0tZ2l0IGEvc3R1YnMuY2MgYi9zdHVicy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mY2M3MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3R1YnMuY2MKQEAgLTAsMCAr
MSwzNiBAQAorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8Y2xpY2svY29uZmlnLmg+Cisj
aW5jbHVkZSA8Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svc3RyaW5nLmhoPgorCisv
KiBVbmlrcmFmdCBkb2VzIG5vdCBzdXBwb3J0IGZpbGVzIHlldCwgdGhpcyBmdW5jdGlvbiBpcyB0
bworICAgYmUgYWJsZSB0byByZWFkIENsaWNrIGNvbmZpZ3MgZnJvbSBmaWxlcy4gKi8KK1N0cmlu
ZyBmaWxlX3N0cmluZyhTdHJpbmcgcyBfX3VudXNlZCwgRXJyb3JIYW5kbGVyICplcnJoKQorewor
CWVycmgtPmVycm9yKCJubyBzdXBwb3J0IGZvciBmaWxlcyB5ZXQhIik7CisJcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgY2xpY2twYXRoX2ZpbmRfZmlsZShjb25zdCBTdHJpbmcgJmZpbGVu
YW1lIF9fdW51c2VkLAorCQljb25zdCBjaGFyICpzdWJkaXIgX191bnVzZWQsIFN0cmluZyBkZWZh
dWx0X3BhdGggX191bnVzZWQsCisJCUVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwllcnJoLT5lcnJv
cigibm8gc3VwcG9ydCBmb3IgZmluZGluZyBmaWxlcyEiKTsKKwlyZXR1cm4gU3RyaW5nKCk7Cit9
CisKK3ZvaWQgY2xpY2tfc2lnbmFsKGludCBzaWdudW0gX191bnVzZWQsIHZvaWQgKCpoYW5kbGVy
KShpbnQpIF9fdW51c2VkLAorCQlib29sIHJlc2V0aGFuZCBfX3VudXNlZCkKK3sKK30KKworZXh0
ZXJuICJDIiB7CitpbnQgZHVwKGludCBvbGRmZCk7IC8qIHdlIGRvbid0IGhhdmUgYSBoZWFkZXIg
ZmlsZSwgYnV0IHRoZSBzeW1ib2wgaXMgdGhlcmUgKi8KKworaW50IHBpcGUoaW50IHBpcGVmZFsy
XSkKK3sKKwlwaXBlZmRbMF0gPSBkdXAoMCk7CisJcGlwZWZkWzFdID0gZHVwKDEpOworCXJldHVy
biAwOworfQorfSAvKiBleHRlcm4gIkMiICovCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQt-0003cC-AI; Sun, 02 Jun 2019 05:53: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQr-0003bo-Op
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:25 +0000
X-Inumbo-ID: bbae4a4a-84fa-11e9-9554-9bd9dcea8be2
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bbae4a4a-84fa-11e9-9554-9bd9dcea8be2;
 Sun, 02 Jun 2019 05:53:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7367EF201F;
 Sun,  2 Jun 2019 07:53:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id R4Qv9BAd3Fco; Sun,  2 Jun 2019 07:53:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4C5E1F2003
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:21 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:20 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:33 +0100
Message-ID: <20190602055238.3818-7-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 06/11] Initial public release:
 FromDevice and ToDevice
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIHJvdWdoIGNvbmNlcHQgaXMgdGFrZW4gZnJvbSBrb2hsZXIvY2xpY2svZWxlbWVudHMvbWlu
aW9zLCBidXQgaXMKdGhlbiBhZGFwdGVkIHRvIHVzZSB1bmlrcmFmdCBpbnN0ZWFkIG9mIE1pbmkt
T1MuCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNs
YWIuZXU+Ci0tLQogdW5pa3JhZnQvZnJvbWRldmljZS5jYyB8IDIwMyArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKwogdW5pa3JhZnQvZnJvbWRldmljZS5oaCB8ICA3OSAr
KysrKysrKysrKysrKysrCiB1bmlrcmFmdC90b2RldmljZS5jYyAgIHwgMTMxICsrKysrKysrKysr
KysrKysrKysrKysrKysrCiB1bmlrcmFmdC90b2RldmljZS5oaCAgIHwgIDc2ICsrKysrKysrKysr
KysrKwogNCBmaWxlcyBjaGFuZ2VkLCA0ODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IHVuaWtyYWZ0L2Zyb21kZXZpY2UuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC9m
cm9tZGV2aWNlLmhoCiBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pa3JhZnQvdG9kZXZpY2UuY2MKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC90b2RldmljZS5oaAoKZGlmZiAtLWdpdCBhL3VuaWty
YWZ0L2Zyb21kZXZpY2UuY2MgYi91bmlrcmFmdC9mcm9tZGV2aWNlLmNjCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MGZmNGYKLS0tIC9kZXYvbnVsbAorKysgYi91bmlrcmFm
dC9mcm9tZGV2aWNlLmNjCkBAIC0wLDAgKzEsMjAzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFi
b3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAg
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaW5jbHVkZSAiZnJvbWRldmlj
ZS5oaCIKKworI2luY2x1ZGUgPGNsaWNrL2FyZ3MuaGg+CisjaW5jbHVkZSA8Y2xpY2svZGVxdWUu
aGg+CisjaW5jbHVkZSA8Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svc3RhbmRhcmQv
c2NoZWR1bGVpbmZvLmhoPgorI2luY2x1ZGUgPGNsaWNrL3Rhc2suaGg+CisjaW5jbHVkZSA8dWsv
bmV0ZGV2Lmg+CisKKyNpZmRlZiB4bWl0CisjdW5kZWYgeG1pdAorI2VuZGlmCisjaWZkZWYgcmVj
dgorI3VuZGVmIHJlY3YKKyNlbmRpZgorCisjaW5jbHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRl
IDx1ay9uZXRkZXYuaD4KKworQ0xJQ0tfREVDTFMKKworI2RlZmluZSBERVNDX0NPVU5UIDB4MTAw
CisjZGVmaW5lIEJVRlNJWkUgMjA0OAorCitGcm9tRGV2aWNlOjpGcm9tRGV2aWNlKCkKKwk6IF90
YXNrKHRoaXMpCit7Cit9CisKK0Zyb21EZXZpY2U6On5Gcm9tRGV2aWNlKCkKK3sKK30KKworaW50
CitGcm9tRGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYsIEVycm9ySGFuZGxl
ciAqZXJyaCkKK3sKKwlfZGV2aWQgPSAwOworCisJdWtfcHJfaW5mbygiRnJvbURldmljZTo6Y29u
ZmlndXJlICVwXG4iLCB0aGlzKTsKKwlpZiAoQXJncyhjb25mLCB0aGlzLCBlcnJoKQorCQkJLnJl
YWRfcCgiREVWSUQiLCBJbnRBcmcoKSwgX2RldmlkKQorCQkJLmNvbXBsZXRlKCkgPCAwKQorCQly
ZXR1cm4gLTE7CisKKwlpZiAoX2RldmlkIDwgMCkKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJEZXZp
Y2UgSUQgbXVzdCBiZSA+PSAwIik7CisKKwlfZGV2ID0gdWtfbmV0ZGV2X2dldCgodW5zaWduZWQg
aW50KSBfZGV2aWQpOworCWlmICghX2RldikKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJObyBzdWNo
IGRldmljZSAlZCIsIF9kZXZpZCk7CisJdWtfbmV0ZGV2X2luZm9fZ2V0KF9kZXYsICZfZGV2X2lu
Zm8pOworCisJcmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIgdm9pZAorY2xpY2tfZnJvbWRldmlj
ZV9yeF9jYWxsYmFjayhzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXYgX191bnVzZWQsIC8qIHdlIGhhdmUg
YWxsCisJCQkJdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdmlhIHRoZSBjb29raWUgKi8KKwkJdWlu
dDE2X3QgcXVldWVfaWQsIHZvaWQgKmNvb2tpZSkKK3sKKwlGcm9tRGV2aWNlICpmcm9tZGV2aWNl
ID0gKEZyb21EZXZpY2UgKiljb29raWU7CisKKwl1a19wcl9kZWJ1ZygiRnJvbURldmljZSAlcCBx
dWV1ZSAldSBjYWxsYmFja1xuIiwgY29va2llLCBxdWV1ZV9pZCk7CisJZnJvbWRldmljZS0+dGFr
ZV9wYWNrZXRzKCk7Cit9CisKK3VpbnQxNl90CitGcm9tRGV2aWNlOjpuZXRkZXZfYWxsb2Nfcnhw
a3RzKHZvaWQgKmFyZ3AsIHN0cnVjdCB1a19uZXRidWYgKnBrdHNbXSwKKwkJdWludDE2X3QgY291
bnQpCit7CisJaW50IGk7CisKKwlGcm9tRGV2aWNlICpmZCA9IHN0YXRpY19jYXN0PEZyb21EZXZp
Y2UgKj4oYXJncCk7CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJcGt0c1tpXSA9
IHVrX25ldGJ1Zl9hbGxvY19idWYodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwKKwkJCQlCVUZTSVpF
LCBmZC0+X2Rldl9pbmZvLm5iX2VuY2FwX3J4LCAwLCBOVUxMKTsKKwkJaWYgKCFwa3RzW2ldKQor
CQkJcmV0dXJuIGk7CisJCXBrdHNbaV0tPmxlbiA9IEJVRlNJWkU7CisJfQorCXJldHVybiBjb3Vu
dDsKK30KKworaW50CitGcm9tRGV2aWNlOjppbml0aWFsaXplKEVycm9ySGFuZGxlciAqZXJyaCkK
K3sKKwlzdHJ1Y3QgdWtfbmV0ZGV2X2luZm8gZGluZjsKKwlzdHJ1Y3QgdWtfbmV0ZGV2X3J4cXVl
dWVfY29uZiByeF9jb25mOworCXN0cnVjdCB1a19uZXRkZXZfdHhxdWV1ZV9jb25mIHR4X2NvbmY7
CisJaW50IHJjOworCisJdWtfcHJfaW5mbygiRnJvbURldmljZTo6aW5pdGlhbGl6ZSAlcCBkZXZp
Y2UgJXAgc3RhdGUgJWRcbiIsCisJCQl0aGlzLCBfZGV2LCBfZGV2LT5fZGF0YS0+c3RhdGUpOwor
CXVrX25ldGRldl9pbmZvX2dldChfZGV2LCAmZGluZik7CisJcnhfY29uZi5zID0gdWtfc2NoZWRf
Z2V0X2RlZmF1bHQoKTsKKwlyeF9jb25mLmEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgpOworCXJ4
X2NvbmYuY2FsbGJhY2sgPSBjbGlja19mcm9tZGV2aWNlX3J4X2NhbGxiYWNrOworCXJ4X2NvbmYu
Y2FsbGJhY2tfY29va2llID0gKHZvaWQgKikodGhpcyk7CisJcnhfY29uZi5hbGxvY19yeHBrdHMg
PSAmRnJvbURldmljZTo6bmV0ZGV2X2FsbG9jX3J4cGt0czsKKwlyeF9jb25mLmFsbG9jX3J4cGt0
c19hcmdwID0gdGhpczsKKwlpZiAodWtfbmV0ZGV2X3J4cV9jb25maWd1cmUoX2RldiwgMCwgREVT
Q19DT1VOVCwgJnJ4X2NvbmYpKQorCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQg
dXAgUlggcXVldWUgZm9yIGRldmljZSAlZCIsIF9kZXZpZCk7CisJdHhfY29uZi5hID0gdWtfYWxs
b2NfZ2V0X2RlZmF1bHQoKTsKKwlpZiAodWtfbmV0ZGV2X3R4cV9jb25maWd1cmUoX2RldiwgMCwg
REVTQ19DT1VOVCwgJnR4X2NvbmYpKQorCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBz
ZXQgdXAgVFggcXVldWUgZm9yIGRldmljZSAlZCIsIF9kZXZpZCk7CisJaWYgKHVrX25ldGRldl9z
dGFydChfZGV2KSkKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJGYWlsZWQgdG8gc3RhcnQgZGV2aWNl
ICVkIiwgX2RldmlkKTsKKwlyYyA9IHVrX25ldGRldl9yeHFfaW50cl9lbmFibGUoX2RldiwgMCk7
CisJCWlmIChyYyA8IDApCisJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAg
UlggcXVldWUgaW50ZXJydXB0IGZvciBkZXZpY2UgJWQiLCBfZGV2aWQpOworCQllbHNlIGlmIChy
YyA+IDApCisJCQl0YWtlX3BhY2tldHMoKTsgLy8gZW1wdHkgdGhlIHF1ZXVlIHRvIGVuYWJsZSBp
bnRlcnJ1cHQKKwlTY2hlZHVsZUluZm86OmluaXRpYWxpemVfdGFzayh0aGlzLCAmX3Rhc2ssIGVy
cmgpOworCV90YXNrLnJlc2NoZWR1bGUoKTsKKwlyZXR1cm4gMDsKKworfQorCit2b2lkCitGcm9t
RGV2aWNlOjpjbGVhbnVwKENsZWFudXBTdGFnZSBzdGFnZSkKK3sKKwlpZiAoc3RhZ2UgPj0gQ0xF
QU5VUF9JTklUSUFMSVpFRCkgeworCQl1a19uZXRkZXZfcnhxX2ludHJfZGlzYWJsZShfZGV2LCAw
KTsKKwl9Cit9CisKK3ZvaWQKK0Zyb21EZXZpY2U6OnRha2VfcGFja2V0cygpCit7CisJaW50IHJl
dDsKKwlpbnQgaSA9IDA7CisJc3RydWN0IHVrX25ldGJ1ZiAqYnVmID0gTlVMTDsKKwlQYWNrZXQg
KnA7CisKKwlkbyB7CisJCXJldCA9IHVrX25ldGRldl9yeF9vbmUoX2RldiwgMCwgJmJ1Zik7CisJ
CWlmIChyZXQgPCAwKQorCQkJVUtfQ1JBU0goImVycm9yIHJlY2VpdmluZyBwYWNrZXRzIGluIEZy
b21EZXZpY2UiKTsKKwkJaWYgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSkgeworCQkJ
LyogTm8gKG1vcmUpIHBhY2tldHMgcmVjZWl2ZWQgKi8KKwkJCWJyZWFrOworCQl9CisKKwkJKytp
OworCQlwID0gUGFja2V0OjptYWtlKDAsIGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDApOworCQlwLT5z
ZXRfdGltZXN0YW1wX2Fubm8oVGltZXN0YW1wOjpub3coKSk7CisJCW91dHB1dCgwKS5wdXNoKHAp
OyAvKiBtZW1jcHkncyBwa3QgKi8KKwkJdWtfbmV0YnVmX2ZyZWUoYnVmKTsKKwl9IHdoaWxlICh1
a19uZXRkZXZfc3RhdHVzX21vcmUocmV0KSk7CisJaWYgKGkpCisJCXVrX3ByX2RlYnVnKCJ0b29r
ICVkIHBhY2tldHMgZnJvbSB0aGUgcXVldWVcbiIsIGkpOworfQorCitib29sCitGcm9tRGV2aWNl
OjpydW5fdGFzayhUYXNrICopCit7CisJLyogaWYgeW91J3JlIHJlYWxseSBkZXNwZXJhdGUgZm9y
IGxlc3MgQ1BVIHVzYWdlCisJICogdW50aWwgd2UgaGF2ZSBhIHByb3BlciBibG9ja2luZyBzZWxl
Y3QoKS4uLgorCXN0cnVjdCB0aW1lc3BlYyByZXE7CisJcmVxLnR2X3NlYyA9IDA7CisJcmVxLnR2
X25zZWMgPSAxMDAwMDAwOworCW5hbm9zbGVlcCgmcmVxLCBOVUxMKTsKKwkqLworCXVrX3NjaGVk
X3lpZWxkKCk7CisJX3Rhc2sucmVzY2hlZHVsZSgpOworCXJldHVybiBmYWxzZTsKK30KKworQ0xJ
Q0tfRU5EREVDTFMKK0VYUE9SVF9FTEVNRU5UKEZyb21EZXZpY2UpCmRpZmYgLS1naXQgYS91bmlr
cmFmdC9mcm9tZGV2aWNlLmhoIGIvdW5pa3JhZnQvZnJvbWRldmljZS5oaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDYyYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvdW5pa3Jh
ZnQvZnJvbWRldmljZS5oaApAQCAtMCwwICsxLDc5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFi
b3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAg
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIENMSUNLX0ZST01E
RVZJQ0VfSEgKKyNkZWZpbmUgQ0xJQ0tfRlJPTURFVklDRV9ISAorCisjaW5jbHVkZSA8Y2xpY2sv
Y29uZmlnLmg+CisjaW5jbHVkZSA8Y2xpY2svZGVxdWUuaGg+CisjaW5jbHVkZSA8Y2xpY2svZWxl
bWVudC5oaD4KKyNpbmNsdWRlIDxjbGljay9lcnJvci5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNr
LmhoPgorCisjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+CisKK0NMSUNLX0RFQ0xTCisKK2V4dGVybiAi
QyIgeworICAgIHN0cnVjdCB1a19uZXRkZXY7Cit9CisKK2NsYXNzIEZyb21EZXZpY2UgOiBwdWJs
aWMgRWxlbWVudCB7CitwdWJsaWM6CisgICAgRnJvbURldmljZSgpOworICAgIH5Gcm9tRGV2aWNl
KCk7CisKKyAgICBjb25zdCBjaGFyICpjbGFzc19uYW1lKCkgY29uc3QgeyByZXR1cm4gIkZyb21E
ZXZpY2UiOyB9CisgICAgY29uc3QgY2hhciAqcG9ydF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuICIw
LzEiOyB9CisgICAgY29uc3QgY2hhciAqcHJvY2Vzc2luZygpIGNvbnN0IHsgcmV0dXJuICIvaCI7
IH0KKyAgICBpbnQgY29uZmlndXJlX3BoYXNlKCkgY29uc3QgeyByZXR1cm4gQ09ORklHVVJFX1BI
QVNFX0ZJUlNUOyB9CisKKyAgICBpbnQgY29uZmlndXJlKFZlY3RvcjxTdHJpbmc+ICYsIEVycm9y
SGFuZGxlciAqKTsKKyAgICBpbnQgaW5pdGlhbGl6ZShFcnJvckhhbmRsZXIgKik7CisgICAgdm9p
ZCBjbGVhbnVwKENsZWFudXBTdGFnZSk7CisKKyAgICBib29sIHJ1bl90YXNrKFRhc2sgKik7Cisg
ICAgdm9pZCB0YWtlX3BhY2tldHMoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdWludDE2X3Qg
bmV0ZGV2X2FsbG9jX3J4cGt0cyh2b2lkICphcmdwLCBzdHJ1Y3QgdWtfbmV0YnVmICpwa3RzW10s
IHVpbnQxNl90IGNvdW50KTsKKworICAgIFRhc2sgX3Rhc2s7CisgICAgRGVxdWU8UGFja2V0Kj4g
X2RlcXVlOworICAgIGludCBfZGV2aWQ7CisgICAgc3RydWN0IHVrX25ldGRldiAqX2RldjsKKyAg
ICBzdHJ1Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOworfTsKKworQ0xJQ0tfRU5EREVDTFMK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvdW5pa3JhZnQvdG9kZXZpY2UuY2MgYi91bmlrcmFmdC90b2Rl
dmljZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWQ3NTBkCi0tLSAv
ZGV2L251bGwKKysrIGIvdW5pa3JhZnQvdG9kZXZpY2UuY2MKQEAgLTAsMCArMSwxMzEgQEAKKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlv
bi4KKyAqICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisK
KyNpbmNsdWRlICJ0b2RldmljZS5oaCIKKworI2luY2x1ZGUgPGNsaWNrL2FyZ3MuaGg+CisjaW5j
bHVkZSA8Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svcm91dGVyLmhoPgorI2luY2x1
ZGUgPGNsaWNrL3N0YW5kYXJkL3NjaGVkdWxlaW5mby5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNr
LmhoPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiB4bWl0CisjdW5kZWYgeG1pdAorI2Vu
ZGlmCisjaWZkZWYgcmVjdgorI3VuZGVmIHJlY3YKKyNlbmRpZgorCisjaW5jbHVkZSA8dWsvYWxs
b2MuaD4KKyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4KKworQ0xJQ0tfREVDTFMKKworVG9EZXZpY2U6
OlRvRGV2aWNlKCkKKwk6IF90YXNrKHRoaXMpCit7Cit9CisKK1RvRGV2aWNlOjp+VG9EZXZpY2Uo
KQoreworfQorCitpbnQKK1RvRGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYs
IEVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwlfZGV2aWQgPSAwOworCisJdWtfcHJfaW5mbygiVG9E
ZXZpY2U6OmNvbmZpZ3VyZSAlcFxuIiwgdGhpcyk7CisJaWYgKEFyZ3MoY29uZiwgdGhpcywgZXJy
aCkKKwkJCS5yZWFkX3AoIkRFVklEIiwgSW50QXJnKCksIF9kZXZpZCkKKwkJCS5jb21wbGV0ZSgp
IDwgMCkKKwkJcmV0dXJuIC0xOworCisJaWYgKF9kZXZpZCA8IDApCisJCXJldHVybiBlcnJoLT5l
cnJvcigiRGV2aWNlIElEIG11c3QgYmUgPj0gMCIpOworCisJX2RldiA9IHVrX25ldGRldl9nZXQo
KHVuc2lnbmVkIGludCkgX2RldmlkKTsKKwlpZiAoIV9kZXYpCisJCXJldHVybiBlcnJoLT5lcnJv
cigiTm8gc3VjaCBkZXZpY2UgJWQiLCBfZGV2aWQpOworCXVrX25ldGRldl9pbmZvX2dldChfZGV2
LCAmX2Rldl9pbmZvKTsKKworCXJldHVybiAwOworfQorCitpbnQKK1RvRGV2aWNlOjppbml0aWFs
aXplKEVycm9ySGFuZGxlciAqZXJyaCBfX3VudXNlZCkKK3sKKwkvKiB1ayBuZXRkZXYgaXMgaW5p
dGlhbGl6ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZSAqLworCXJldHVybiAwOwor
fQorCit2b2lkCitUb0RldmljZTo6Y2xlYW51cChDbGVhbnVwU3RhZ2Ugc3RhZ2UgX191bnVzZWQp
Cit7CisJLyogYW55IHBvdGVudGlhbGx5IG5lY2Vzc2FyeSB1ayBuZXRkZXYgY2xlYW51cCBpcyBk
b25lIGluIHRoZQorCSAqIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZQorCSAqLworfQorCit2b2lk
CitUb0RldmljZTo6cHVzaChpbnQgcG9ydCwgUGFja2V0ICpwKQoreworCWludCByZXQ7CisJc3Ry
dWN0IHVrX25ldGJ1ZiAqYnVmOworCisJdWtfcHJfZGVidWcoInB1c2goKSBwYWNrZXQgJXAgKGxl
biAldSkgLT4gJWRcbiIsIHAsIHAtPmxlbmd0aCgpLCBwb3J0KTsKKwlidWYgPSB1a19uZXRidWZf
YWxsb2NfYnVmKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksCisJCQlwLT5sZW5ndGgoKStfZGV2X2lu
Zm8ubmJfZW5jYXBfcngsCisJCQlfZGV2X2luZm8ubmJfZW5jYXBfcngsIDAsIE5VTEwpOworCWlm
ICghYnVmKSB7CisJCXVrX3ByX2NyaXQoIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXRidWYgZm9yIHNl
bmRpbmciKTsKKwkJcmV0dXJuOworCX0KKwltZW1jcHkoYnVmLT5kYXRhLCBwLT5kYXRhKCksIHAt
Pmxlbmd0aCgpKTsKKwlidWYtPmxlbiA9IHAtPmxlbmd0aCgpOworCWRvIHsKKwkJcmV0ID0gdWtf
bmV0ZGV2X3R4X29uZShfZGV2LCAwLCBidWYpOworCX0gd2hpbGUgKHVrX25ldGRldl9zdGF0dXNf
bm90cmVhZHkocmV0KSk7CisJY2hlY2tlZF9vdXRwdXRfcHVzaChwb3J0LCBwKTsKK30KKworYm9v
bAorVG9EZXZpY2U6OnJ1bl90YXNrKFRhc2sgKikKK3sKKwkvKiBubyByZWd1bGFyIHRhc2sgc2No
ZWR1bGluZyBuZWVkZWQsIGFsbCB3b3JrIGlzIGRvbmUgaW4gcHVzaCAoKSAqLworCXJldHVybiBm
YWxzZTsKK30KKworQ0xJQ0tfRU5EREVDTFMKK0VYUE9SVF9FTEVNRU5UKFRvRGV2aWNlKQpkaWZm
IC0tZ2l0IGEvdW5pa3JhZnQvdG9kZXZpY2UuaGggYi91bmlrcmFmdC90b2RldmljZS5oaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGVmN2JiCi0tLSAvZGV2L251bGwKKysr
IGIvdW5pa3JhZnQvdG9kZXZpY2UuaGgKQEAgLTAsMCArMSw3NiBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAg
ICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAq
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1Qg
QkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBDTElD
S19UT0RFVklDRV9ISAorI2RlZmluZSBDTElDS19UT0RFVklDRV9ISAorCisjaW5jbHVkZSA8Y2xp
Y2svY29uZmlnLmg+CisjaW5jbHVkZSA8Y2xpY2svZWxlbWVudC5oaD4KKyNpbmNsdWRlIDxjbGlj
ay9lcnJvci5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgorCisjaW5jbHVkZSA8dWsvbmV0
ZGV2Lmg+CisKK0NMSUNLX0RFQ0xTCisKK2V4dGVybiAiQyIgeworICAgIHN0cnVjdCB1a19uZXRk
ZXY7Cit9CisKK2NsYXNzIFRvRGV2aWNlIDogcHVibGljIEVsZW1lbnQgeworcHVibGljOgorICAg
IFRvRGV2aWNlKCk7CisgICAgflRvRGV2aWNlKCk7CisKKyAgICBjb25zdCBjaGFyICpjbGFzc19u
YW1lKCkgY29uc3QgeyByZXR1cm4gIlRvRGV2aWNlIjsgfQorICAgIGNvbnN0IGNoYXIgKnBvcnRf
Y291bnQoKSBjb25zdCB7IHJldHVybiAiMS8wLTEiOyB9CisgICAgY29uc3QgY2hhciAqcHJvY2Vz
c2luZygpIGNvbnN0IHsgcmV0dXJuICJhL2giOyB9CisgICAgaW50IGNvbmZpZ3VyZV9waGFzZSgp
IGNvbnN0IHsgcmV0dXJuIENPTkZJR1VSRV9QSEFTRV9GSVJTVDsgfQorCisgICAgaW50IGNvbmZp
Z3VyZShWZWN0b3I8U3RyaW5nPiAmLCBFcnJvckhhbmRsZXIgKik7CisgICAgaW50IGluaXRpYWxp
emUoRXJyb3JIYW5kbGVyICopOworICAgIHZvaWQgY2xlYW51cChDbGVhbnVwU3RhZ2UpOworCisg
ICAgYm9vbCBydW5fdGFzayhUYXNrICopOworICAgIHZvaWQgcHVzaChpbnQsIFBhY2tldCAqcCk7
CisKK3ByaXZhdGU6CisgICAgVGFzayBfdGFzazsKKworICAgIGludCBfZGV2aWQ7CisgICAgc3Ry
dWN0IHVrX25ldGRldiAqX2RldjsKKyAgICBzdHJ1Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZv
OworfTsKKworQ0xJQ0tfRU5EREVDTFMKKyNlbmRpZgotLSAKMi4yMS4wCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQu-0003cj-Cx; Sun, 02 Jun 2019 05:53: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQt-0003c5-0I
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:27 +0000
X-Inumbo-ID: bc631b0a-84fa-11e9-a2d8-b7727c494657
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bc631b0a-84fa-11e9-a2d8-b7727c494657;
 Sun, 02 Jun 2019 05:53:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A6B2E10530E;
 Sun,  2 Jun 2019 07:53:24 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tEQroPZWhI5s; Sun,  2 Jun 2019 07:53:24 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 871EB105309
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:24 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:24 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:34 +0100
Message-ID: <20190602055238.3818-8-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 07/11] Initial public release:
 patches to make click build with 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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIHBhdGNoZXMvMDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2ggICB8IDIw
ICsrKysrKysrKysrCiAuLi4tc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0
Y2ggfCAzNSArKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlv
bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxl
dGUtY3hhLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1Q
T0xMSU4tUE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2gKCmRpZmYgLS1naXQgYS9wYXRjaGVz
LzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hhLnBhdGNoIGIvcGF0Y2hlcy8wMDAxLXVzZXJs
ZXZlbC1uZXctZGVsZXRlLWN4YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hZjljZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1u
ZXctZGVsZXRlLWN4YS5wYXRjaApAQCAtMCwwICsxLDIwIEBACistLS0gYS9saWIvZ2x1ZS5jYy5v
cmlnCTIwMTgtMDItMTQgMTE6MTE6MzguMzY0MDI0NzI5ICswMTAwCisrKysgYi9saWIvZ2x1ZS5j
YwkyMDE4LTAyLTE0IDExOjQ0OjMxLjg4MDkwODA5OSArMDEwMAorQEAgLTE3OSw3ICsxNzksNyBA
QAorIHNpemVfdCBjbGlja19kbWFsbG9jX21heG1lbSA9IDA7CisgI2VuZGlmCisgCistI2lmIENM
SUNLX0xJTlVYTU9EVUxFIHx8IENMSUNLX0JTRE1PRFVMRSB8fCBDTElDS19NSU5JT1MKKysjaWYg
Q0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01JTklPUyB8fCBD
TElDS19VU0VSTEVWRUwKKyAKKyAjIGlmIENMSUNLX0xJTlVYTU9EVUxFCisgc3RydWN0IHRhc2tf
c3RydWN0ICpjbGlja2ZzX3Rhc2s7CitAQCAtNzIxLDcgKzcyMSw3IEBACisgCisgLy8gT1RIRVIK
KyAKKy0jaWYgQ0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01J
TklPUworKyNpZiBDTElDS19MSU5VWE1PRFVMRSB8fCBDTElDS19CU0RNT0RVTEUgfHwgQ0xJQ0tf
TUlOSU9TIHx8IENMSUNLX1VTRVJMRVZFTAorIAorICNpZiBDTElDS19CU0RNT0RVTEUKKyAKZGlm
ZiAtLWdpdCBhL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1k
ZWZpbmVkLnBhdGNoIGIvcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUt
bm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEx
YWY1MAotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBP
TExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYjlmMDRm
NmRkYzM4OGY2YTUwYTgyZTg4MzBlNDJiYWRiZmM0NzE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw
MDEKK0Zyb206IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KK0Rh
dGU6IFdlZCwgMTcgQXByIDIwMTkgMTE6MDM6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFr
ZSBzdXJlIFBPTExJTi9QT0xMT1VUIGFyZSBub3QgZGVmaW5lZAorCitXZSB1c2Ugc2VsZWN0IGlu
c3RlYWQgb2YgcG9sbCwgYmVjYXVzZSBsd2lwIHByb3ZpZGVzIGEgc2VsZWN0IHZpYSBpdHMKK3Nv
Y2tldCBBUEkuIEhvd2V2ZXIsIHRoYXQgb25lIGFsc28gZGVmaW5lcyBhIGNvdXBsZSBvZiBQT0xM
KiB2YWx1ZXMsCit3aGljaCBsZWFkIHRvIGEgY29tcGlsZXIgZXJyb3IgaGVyZSBiZWNhdXNlIHlv
dSBlbmQgdXAgd2l0aCBhIGxpbmUgdGhhdAorc2F5cyAiZW51bSB7IDB4MSA9IEVsZW1lbnQ6OlNF
TEVDVF9SRUFEIiBldGMuCisKK1NpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlh
bi5zY2htaWR0QG5lY2xhYi5ldT4KKy0tLQorIGxpYi9zZWxlY3RzZXQuY2MgfCA2ICsrKysrKwor
IDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9zZWxl
Y3RzZXQuY2MgYi9saWIvc2VsZWN0c2V0LmNjCitpbmRleCBhYzVjY2FlNDkuLjY0MWI2M2Y5MCAx
MDA2NDQKKy0tLSBhL2xpYi9zZWxlY3RzZXQuY2MKKysrKyBiL2xpYi9zZWxlY3RzZXQuY2MKK0BA
IC0zOCw2ICszOCwxMiBAQCBDTElDS19ERUNMUworIG5hbWVzcGFjZSB7CisgZW51bSB7IFNFTEVD
VF9SRUFEID0gRWxlbWVudDo6U0VMRUNUX1JFQUQsIFNFTEVDVF9XUklURSA9IEVsZW1lbnQ6OlNF
TEVDVF9XUklURSB9OworICNpZiAhSEFWRV9BTExPV19QT0xMCisrI2lmZGVmIFBPTExJTgorKyN1
bmRlZiBQT0xMSU4KKysjZW5kaWYKKysjaWZkZWYgUE9MTE9VVAorKyN1bmRlZiBQT0xMT1VUCisr
I2VuZGlmCisgZW51bSB7IFBPTExJTiA9IEVsZW1lbnQ6OlNFTEVDVF9SRUFELCBQT0xMT1VUID0g
RWxlbWVudDo6U0VMRUNUX1dSSVRFIH07CisgI2VuZGlmCisgfQorLS0gCisyLjIxLjAKKwotLSAK
Mi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJQx-0003dd-EV; Sun, 02 Jun 2019 05:53:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJQv-0003dE-Qt
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:29 +0000
X-Inumbo-ID: be29f0e0-84fa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id be29f0e0-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:53:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9E2BBF201F;
 Sun,  2 Jun 2019 07:53:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3O6GQIho2Yck; Sun,  2 Jun 2019 07:53:27 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 74A07F2003
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:25 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:24 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:35 +0100
Message-ID: <20190602055238.3818-9-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 08/11] Initial public release:
 Add 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: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyBhIG1pbmltYWwgc2V0IHRoYXQgc2hvdWxkIGFsbG93IHNwYXduaW5nIGNsaWNrIGZy
b20gYW4gZXh0ZXJuYWwKbWFpbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHVzaW5nIGNsaWNrJ3MgaW50
ZXJuYWwgbWFpbigpLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNj
aG1pZHRAbmVjbGFiLmV1PgotLS0KIGV4cG9ydHN5bXMudWsgfCA3ICsrKysrKysKIDEgZmlsZSBj
aGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVr
CgpkaWZmIC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI0NWQ3YgotLS0gL2Rldi9udWxsCisrKyBiL2V4cG9y
dHN5bXMudWsKQEAgLTAsMCArMSw3IEBACitjbGlja19tYWluCittYWluCitjbGlja19yZWFkX3Jv
dXRlcgorY2xpY2tfc3RhdGljX2luaXRpYWxpemUKK2NvbmZpZ3VyYXRvcl9zdGFydAorY29uZmln
dXJhdG9yX3N0b3AKK3JvdXRlcl90aHJlYWQKLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJR4-0003fO-GN; Sun, 02 Jun 2019 05:53:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJR3-0003fB-7h
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:37 +0000
X-Inumbo-ID: c2c1ac85-84fa-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c2c1ac85-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:53:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 5648D105318;
 Sun,  2 Jun 2019 07:53:35 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id zdFMjDmwUj-0; Sun,  2 Jun 2019 07:53:35 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 31135105317
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:35 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:34 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:36 +0100
Message-ID: <20190602055238.3818-10-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 09/11] support for loading
 click configs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGV4cGVjdGVkIHdheSBpcyB0byBwcm92aWRlIGEgY29uZmlnIGZpbGUgYXMgaW5pdHJkLiBJ
ZiBubyBpbml0cmQgaXMKcHJvdmlkZWQsIGNsaWNrIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhdGlj
LCBjb21waWxlZC1pbiBjb25maWcgdGhhdApyZXBsaWVzIHRvIHBpbmdzLgoKU2lnbmVkLW9mZi1i
eTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIGNsaWNr
LmNjICAgICAgICAgICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst
LS0tLQogaW5jbHVkZS9zdGF0aWNfY29uZmlnLmggfCAyMiArKysrKysrKysrKysrKysrKysrKysr
CiAyIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgKCmRpZmYgLS1naXQgYS9jbGlj
ay5jYyBiL2NsaWNrLmNjCmluZGV4IGEzYmZiYTguLjg1YTkzOGIgMTAwNjQ0Ci0tLSBhL2NsaWNr
LmNjCisrKyBiL2NsaWNrLmNjCkBAIC01MiwxMSArNTIsMTQgQEAgZXh0ZXJuICJDInsKICNpbmNs
dWRlIDxjbGljay9zdHJhY2N1bS5oaD4KICNpbmNsdWRlIDxjbGljay9kcml2ZXIuaGg+CiAKKyNp
bmNsdWRlIDxzdGF0aWNfY29uZmlnLmg+CisKICNpbmNsdWRlIDx1ay9zY2hlZC5oPgogI2luY2x1
ZGUgPHVrL3RocmVhZC5oPgorI2luY2x1ZGUgPHVrL25ldGRldi5oPgorI2luY2x1ZGUgPHVrL3Bs
YXQvbWVtb3J5Lmg+CiAKIGludCBjbGlja19udGhyZWFkcyA9IDE7Ci0KIHZvaWQgKl9fZHNvX2hh
bmRsZSA9IE5VTEw7CiAKICNkZWZpbmUgTkxPRyhmbXQsIC4uLikKQEAgLTExOSw2ICsxMjIsMzIg
QEAgcmVhZF9jb25maWcodV9pbnQgcmlkID0gMCkKIHN0YXRpYyBFcnJvckhhbmRsZXIgKmVycmg7
CiBzdGF0aWMgTWFzdGVyIG1hc3RlcigxKTsKIAorc3RhdGljIFN0cmluZyAqCitnZXRfY29uZmln
KCkKK3sKKwlTdHJpbmcgKmNmZzsKKwlzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjIGltZzsK
KwljaGFyICpjc3RyOworCXNpemVfdCBjc3RyX2xlbjsKKworCS8qIEZpcnN0LCB0cnkgaW5pdHJk
ICovCisJaWYgKHVrcGxhdF9tZW1yZWdpb25fZmluZF9pbml0cmQwKCZpbWcpID49IDApIHsKKwkJ
Y3N0ciA9IChjaGFyICopaW1nLmJhc2U7CisJCWNzdHJfbGVuID0gaW1nLmxlbjsKKwl9IGVsc2Ug
eworCQkvKiBJZiB3ZSBjYW4ndCBmaW5kIGEgY29uZmlnOiB1c2UgYSBmYWxsYmFjayBvbmUgc3Rh
dGljYWxseQorCQkgKiBjb21waWxlZCBpbi4KKwkJICovCisJCXVrX3ByX3dhcm4oIkNvdWxkIG5v
dCBmaW5kIGEgY29uZmlnLCB1c2luZyBzdGFuZGFyZCBjb25maWchXG4iKTsKKwkJY3N0ciA9IENP
TkZJR1NUUklORzsKKwkJY3N0cl9sZW4gPSBzdHJsZW4oQ09ORklHU1RSSU5HKTsKKwl9CisJY2Zn
ID0gbmV3IFN0cmluZyhjc3RyLCBjc3RyX2xlbik7CisJcHJpbnRmKCJSZWNlaXZlZCBjb25maWcg
KGxlbmd0aCAlZCk6XG4iLCBjZmctPmxlbmd0aCgpKTsKKwlwcmludGYoIiVzXG4iLCBjZmctPmNf
c3RyKCkpOworCXJldHVybiBjZmc7Cit9CisKIHN0cnVjdCByb3V0ZXJfaW5zdGFuY2UgewogCVJv
dXRlciAqcjsKIAl1X2ludCBmX3N0b3A7CkBAIC0xMjcsOSArMTU2LDggQEAgc3RydWN0IHJvdXRl
cl9pbnN0YW5jZSB7CiB2b2lkCiByb3V0ZXJfdGhyZWFkKHZvaWQgKnRocmVhZF9kYXRhKQogewot
CXVfaW50ICpyaWQgPSAodV9pbnQqKSB0aHJlYWRfZGF0YTsKLQlTdHJpbmcgKmNvbmZpZyA9IG5l
dyBTdHJpbmc7IC8vcmVhZF9jb25maWcoKnJpZCk7Ci0Jc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAq
cmkgPSAmcm91dGVyX2xpc3RbKnJpZF07CisJc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAqcmkgPSAm
cm91dGVyX2xpc3RbKHVuc2lnbmVkIGxvbmcpdGhyZWFkX2RhdGFdOworCVN0cmluZyAqY29uZmln
ID0gZ2V0X2NvbmZpZygpOwogCiAJcmktPnIgPSBjbGlja19yZWFkX3JvdXRlcigqY29uZmlnLCB0
cnVlLCBlcnJoLCBmYWxzZSwgJm1hc3Rlcik7CiAJaWYgKHJpLT5yLT5pbml0aWFsaXplKGVycmgp
IDwgMCkgewpAQCAtMTUwLDcgKzE3OCw2IEBAIHJvdXRlcl90aHJlYWQodm9pZCAqdGhyZWFkX2Rh
dGEpCiAKIAlMT0coIk1hc3Rlci9kcml2ZXIgc3RvcHBlZCwgY2xvc2luZyByb3V0ZXJfdGhyZWFk
Iik7CiAJZnJlZShjb25maWcpOwotCWZyZWUocmlkKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEv
aW5jbHVkZS9zdGF0aWNfY29uZmlnLmggYi9pbmNsdWRlL3N0YXRpY19jb25maWcuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM1ZDEyCi0tLSAvZGV2L251bGwKKysrIGIv
aW5jbHVkZS9zdGF0aWNfY29uZmlnLmgKQEAgLTAsMCArMSwyMiBAQAorc3RhdGljIGNoYXIgQ09O
RklHU1RSSU5HW10gPSAiICAgIGRlZmluZSgkSVAgMTAuMC4xMC4xMjMpO1xuXAorICAgIGRlZmlu
ZSgkTUFDMCAxMToyMjozMzo0NDo1NTo2Nik7XG5cCitcblwKKyAgICBzb3VyY2UgOjogRnJvbURl
dmljZTtcblwKKyAgICBzaW5rICAgOjogVG9EZXZpY2U7XG5cCisgICAgLy8gY2xhc3NpZmllcyBw
YWNrZXRzIFxuXAorICAgIGMgOjogQ2xhc3NpZmllcihcblwKKyAgICAgICAgMTIvMDgwNiAyMC8w
MDAxLCAvLyBBUlAgUmVxdWVzdHMgZ29lcyB0byBvdXRwdXQgMFxuXAorICAgICAgICAxMi8wODA2
IDIwLzAwMDIsIC8vIEFSUCBSZXBsaWVzIHRvIG91dHB1dCAxXG5cCisgICAgICAgIDEyLzA4MDAg
MTQvNDUgMzQvMDgsIC8vIElDTVAgUmVxdWVzdHMgdG8gb3V0cHV0IDJcblwKKyAgICAgICAgLSk7
IC8vIHdpdGhvdXQgYSBtYXRjaCB0byBvdXRwdXQgM1xuXAorXG5cCisgICAgYXJwcSA6OiBBUlBR
dWVyaWVyKCRJUCwgJE1BQzApO1xuXAorICAgIGFycHIgOjogQVJQUmVzcG9uZGVyKCRJUCAkTUFD
MCk7XG5cCitcblwKKyAgICBzb3VyY2UgLT4gYztcblwKKyAgICBjWzBdIC0+IENoZWNrQVJQSGVh
ZGVyKDE0KSAtPiBBUlBQcmludCAtPiBhcnByIC0+IEFSUFByaW50IC0+IHNpbms7XG5cCisgICAg
Y1sxXSAtPiBbMV1hcnBxO1xuXAorICAgIElkbGUgLT4gWzBdYXJwcTtcblwKKyAgICBhcnBxIC0+
IHNpbms7XG5cCisgICAgY1syXSAtPiBDaGVja0lQSGVhZGVyKDE0KSAtPiBJUFByaW50IC0+IElD
TVBQaW5nUmVzcG9uZGVyKCkgLT4gRXRoZXJNaXJyb3IoKSAtPiBJUFByaW50IC0+IHNpbms7XG5c
CisgICAgY1szXSAtPiBEaXNjYXJkOyI7Ci0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJR8-0003g2-Hy; Sun, 02 Jun 2019 05:53:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJR7-0003fs-GS
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:41 +0000
X-Inumbo-ID: c5248a95-84fa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c5248a95-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:53:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 50D98F2003;
 Sun,  2 Jun 2019 07:53:39 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3ecUKFCTSfDA; Sun,  2 Jun 2019 07:53:39 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2A767F203F
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:37 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:36 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:37 +0100
Message-ID: <20190602055238.3818-11-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 10/11] Provide MAC preamble
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2UgY3JlYXRlIGEgY29uZmlnIHNjcmlwdCBzbmlwcGV0IHRoYXQgZGVmaW5lcyBhICJNQUMwIiwg
Ik1BQzEiLCBldGMuCnZhcmlhYmxlIGZvciBlYWNoIG5ldHdvcmsgZGV2aWNlLiBUaGlzIGlzIHBy
ZXBlbmRlZCB0byB0aGUgdXNlci1wcm92aWRlZApjb25maWcsIHNvIHRoYXQgdXNlcnMgY2FuIHVz
ZSB0aG9zZSB2YXJpYWJsZXMgdG8gYWNjZXNzIHRoZSBNQUMKYWRkcmVzc2VzIG9mIG5ldHdvcmsg
ZGV2aWNlcy4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0
QG5lY2xhYi5ldT4KLS0tCiBjbGljay5jYyAgICAgICAgICAgICAgICB8IDU4ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBpbmNsdWRlL3N0YXRpY19jb25maWcuaCB8
ICAxIC0KIDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9jbGljay5jYyBiL2NsaWNrLmNjCmluZGV4IDg1YTkzOGIuLjViMGYzNGYg
MTAwNjQ0Ci0tLSBhL2NsaWNrLmNjCisrKyBiL2NsaWNrLmNjCkBAIC0xMjEsMTUgKzEyMSw0NSBA
QCByZWFkX2NvbmZpZyh1X2ludCByaWQgPSAwKQogI2RlZmluZSBNQVhfUk9VVEVSUwk2NAogc3Rh
dGljIEVycm9ySGFuZGxlciAqZXJyaDsKIHN0YXRpYyBNYXN0ZXIgbWFzdGVyKDEpOworc3RhdGlj
IFN0cmluZyBtYWNhZGRyX3ByZWFtYmxlOworCitzdGF0aWMgdm9pZAorbWFrZV9tYWNhZGRyX3By
ZWFtYmxlKCkKK3sKKwl1bnNpZ25lZCBpbnQgbmRldiA9IHVrX25ldGRldl9jb3VudCgpOworCWNv
bnN0IHNpemVfdCBidWZsZW4gPSA2NDsKKwljaGFyIGJ1ZltidWZsZW5dOworCWNvbnN0IHN0cnVj
dCB1a19od2FkZHIgKm1hYzsKKwlTdHJpbmdBY2N1bSBhY2M7CisKKwlVS19BU1NFUlQobWFjYWRk
cl9wcmVhbWJsZS5lbXB0eSgpKTsKKworCXVrX3ByX2luZm8oIkZvdW5kICVkIG5ldHdvcmsgZGV2
aWNlKHMpXG4iLCB1a19uZXRkZXZfY291bnQoKSk7CisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBuZGV2OyArK2kpIHsKKwkJbWFjID0gdWtfbmV0ZGV2X2h3YWRkcl9nZXQodWtfbmV0ZGV2
X2dldChpKSk7CisJCXNucHJpbnRmKGJ1ZiwgYnVmbGVuLAorCQkJImRlZmluZSgkTUFDJWQgJTAy
eDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMngpO1xuIiwKKwkJCWksIG1hYy0+YWRkcl9ieXRlc1sw
XSwgbWFjLT5hZGRyX2J5dGVzWzFdLAorCQkJbWFjLT5hZGRyX2J5dGVzWzJdLCBtYWMtPmFkZHJf
Ynl0ZXNbM10sCisJCQltYWMtPmFkZHJfYnl0ZXNbNF0sIG1hYy0+YWRkcl9ieXRlc1s1XSk7CisJ
CXVrX3ByX2luZm8oImFwcGVuZGluZyAlcyIsIGJ1Zik7CisJCWFjYy5hcHBlbmQoYnVmKTsKKwl9
CisJYWNjLmFwcGVuZCgiLyogRW5kIHVuaWtyYWZ0LXByb3ZpZGVkIE1BQyBwcmVhbWJsZSAqL1xu
Iik7CisJbWFjYWRkcl9wcmVhbWJsZSA9IGFjYy50YWtlX3N0cmluZygpOworCXVrX3ByX2luZm8o
Ik1BQyBhZGRyZXNzIG1hY3JvczpcbiVzXG4iLCBtYWNhZGRyX3ByZWFtYmxlLmNfc3RyKCkpOwor
fQogCiBzdGF0aWMgU3RyaW5nICoKIGdldF9jb25maWcoKQogewotCVN0cmluZyAqY2ZnOworCVN0
cmluZyAqY2ZnID0gbmV3IFN0cmluZyhtYWNhZGRyX3ByZWFtYmxlKTsKIAlzdHJ1Y3QgdWtwbGF0
X21lbXJlZ2lvbl9kZXNjIGltZzsKIAljaGFyICpjc3RyOwogCXNpemVfdCBjc3RyX2xlbjsKIAor
CVVLX0FTU0VSVCghbWFjYWRkcl9wcmVhbWJsZS5lbXB0eSgpKTsKKwogCS8qIEZpcnN0LCB0cnkg
aW5pdHJkICovCiAJaWYgKHVrcGxhdF9tZW1yZWdpb25fZmluZF9pbml0cmQwKCZpbWcpID49IDAp
IHsKIAkJY3N0ciA9IChjaGFyICopaW1nLmJhc2U7CkBAIC0xNDIsNyArMTcyLDcgQEAgZ2V0X2Nv
bmZpZygpCiAJCWNzdHIgPSBDT05GSUdTVFJJTkc7CiAJCWNzdHJfbGVuID0gc3RybGVuKENPTkZJ
R1NUUklORyk7CiAJfQotCWNmZyA9IG5ldyBTdHJpbmcoY3N0ciwgY3N0cl9sZW4pOworCWNmZy0+
YXBwZW5kKGNzdHIsIGNzdHJfbGVuKTsKIAlwcmludGYoIlJlY2VpdmVkIGNvbmZpZyAobGVuZ3Ro
ICVkKTpcbiIsIGNmZy0+bGVuZ3RoKCkpOwogCXByaW50ZigiJXNcbiIsIGNmZy0+Y19zdHIoKSk7
CiAJcmV0dXJuIGNmZzsKQEAgLTIwMCw2ICsyMzAsMjYgQEAgcm91dGVyX3N0b3AoaW50IG4gPSBN
QVhfUk9VVEVSUykKIAlMT0coIlN0b3BwZWQgYWxsIHJvdXRlcnMuLi5cblxuIik7CiB9CiAKKy8q
IEluaXRpYWxpemUgYWxsIG5ldGRldiBkZXZpY2VzIHRvIHRoZSBwb2ludCB3aGVyZSB5b3UgY2Fu
IGdldCBhIE1BQworICogYWRkcmVzcyBmcm9tIHRoZW0uCisgKi8KK3N0YXRpYyBpbnQKK3VrX25l
dGRldl9lYXJseV9pbml0KEVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwlzdHJ1Y3QgdWtfbmV0ZGV2
ICpuZXRkZXY7CisJc3RydWN0IHVrX25ldGRldl9jb25mIG5ldGRldl9jb25mOworCisJbmV0ZGV2
X2NvbmYubmJfcnhfcXVldWVzID0gMTsKKwluZXRkZXZfY29uZi5uYl90eF9xdWV1ZXMgPSAxOwor
CWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdWtfbmV0ZGV2X2NvdW50KCk7ICsraSkgewor
CQluZXRkZXYgPSB1a19uZXRkZXZfZ2V0KGkpOworCQl1a19wcl9pbmZvKCJuZXRkZXYgJWQgZWFy
bHkgaW5pdFxuIiwgaSk7CisJCWlmICh1a19uZXRkZXZfY29uZmlndXJlKG5ldGRldiwgJm5ldGRl
dl9jb25mKSA8IDApCisJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBjb25maWd1cmUg
ZGV2aWNlICVkXG4iLCBpKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKICNpZiBDTElDS19DT05TT0xF
X1NVUFBPUlRfSU1QTEVNRU5URUQKIHZvaWQKIHJvdXRlcl9zdXNwZW5kKGludCBuID0gTUFYX1JP
VVRFUlMpCkBAIC0zNTAsNiArNDAwLDEwIEBAIGludCBDTElDS19NQUlOKGludCBhcmdjLCBjaGFy
ICoqYXJndikKIAkJcm91dGVyX2xpc3RbaV0uZl9zdG9wID0gMTsKIAl9CiAKKwlpZiAodWtfbmV0
ZGV2X2Vhcmx5X2luaXQoZXJyaCkpCisJCXJldHVybiAtRUlOVkFMOworCW1ha2VfbWFjYWRkcl9w
cmVhbWJsZSgpOworCiAjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVECiAvKiBU
T0RPOiBUaGlzIGludGVyYWN0aW9uIGJldHdlZW4geGVuYnVzIGFuZCBjbGljayBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aCBhCiAgKiBnZW5lcmljIHVuaWtyYWZ0IGludGVyYWN0aW9uIHNjaGVtZSwg
Zm9yIGV4YW1wbGUsIHZpYSBhIGNvbnNvbGUuCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N0YXRpY19j
b25maWcuaCBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCmluZGV4IDg1YzVkMTIuLjE4MDg3NjEg
MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCisrKyBiL2luY2x1ZGUvc3RhdGlj
X2NvbmZpZy5oCkBAIC0xLDUgKzEsNCBAQAogc3RhdGljIGNoYXIgQ09ORklHU1RSSU5HW10gPSAi
ICAgIGRlZmluZSgkSVAgMTAuMC4xMC4xMjMpO1xuXAotICAgIGRlZmluZSgkTUFDMCAxMToyMjoz
Mzo0NDo1NTo2Nik7XG5cCiBcblwKICAgICBzb3VyY2UgOjogRnJvbURldmljZTtcblwKICAgICBz
aW5rICAgOjogVG9EZXZpY2U7XG5cCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 05:53:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 05:53: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 1hXJRA-0003gh-Jg; Sun, 02 Jun 2019 05:53:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJR8-0003gB-Oe
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 05:53:42 +0000
X-Inumbo-ID: c60e1999-84fa-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c60e1999-84fa-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 05:53:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DB377105309;
 Sun,  2 Jun 2019 07:53:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id YZD71gQ-fCFD; Sun,  2 Jun 2019 07:53:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9833110530E
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 07:53:40 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 07:53:40 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 06:52:38 +0100
Message-ID: <20190602055238.3818-12-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602055238.3818-1-florian.schmidt@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH 11/11] config: Add userlevel
 module option.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgbWVudWNvbmZpZyBvcHRpb24gdG8gYnVpbGQgQ2xpY2sgd2l0aCB1c2VybGV2ZWwgZWxl
bWVudHMuIEJlIGF3YXJlCnRoYXQgdGhpcyBjdXJyZW50bHkgZG9lc24ndCBidWlsZCBiZWNhdXNl
IG9mIG1pc3NpbmcgaGVhZGVyIGZpbGVzLgpIZW5jZSwgdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4KLS0tCiBDb25maWcudWsgICB8IDcgKysrKysrKwogTWFrZWZpbGUudWsg
fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoK
ZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awppbmRleCAyMGQ5MTMxLi5hYmEzOWYy
IDEwMDY0NAotLS0gYS9Db25maWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC04Miw0ICs4MiwxMSBA
QCBjb25maWcgTElCQ0xJQ0tfRUxFTVNfVEhSRUFEUwogCWhlbHAKIAkgIEJ1aWxkIHdpdGggbXVs
dGktdGhyZWFkaW5nIGVsZW1lbnRzCiAKK2NvbmZpZyBMSUJDTElDS19FTEVNU19VU0VSTEVWRUwK
Kwlib29sICJFbmFibGUgdXNlcmxldmVsIGVsZW1lbnRzIFtCUk9LRU5dIgorCWRlZmF1bHQgbgor
CWhlbHAKKwkgIEJ1aWxkIHdpdGggQ2xpY2sgdXNlcmxldmVsIGVsZW1lbnRzLgorCSAgQmUgYXdh
cmUgdGhpcyBjdXJyZW50bHkgZG9lc24ndCBjb21waWxlLgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEv
TWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awppbmRleCA1MDMwZmZkLi5jZDJiNGMxIDEwMDY0NAot
LS0gYS9NYWtlZmlsZS51aworKysgYi9NYWtlZmlsZS51awpAQCAtMjcsNyArMjcsNyBAQCBMSUJD
TElDS19FWFRSQUNURUQ9JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlU
X0hBU0gpCiBMSUJDTElDS19FTEVNRU5UU19ESVI9JChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1l
bnRzCiBMSUJDTElDS19CVUlMRFRPT0w9JChMSUJDTElDS19FWFRSQUNURUQpL2Jpbi9jbGljay1i
dWlsZHRvb2wKIExJQkNMSUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNt
cCBpcCB1bmlrcmFmdCBcCi0JCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFk
cworCQkgICBsb2NhbCBzaW1wbGUgc3RhbmRhcmQgdGNwdWRwIHRocmVhZHMgdXNlcmxldmVsCiAK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENvbmZpZyBNZW51IC0gRmlsdGVyIHdoaWNoIGVs
ZW1lbnQgY2F0ZWdvcmllcyBhY3R1YWxseSBnZXQgYnVpbHQKLS0gCjIuMjEuMAoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJa7-0004ZC-B2; Sun, 02 Jun 2019 06:02: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJa5-0004Z7-KS
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:02:57 +0000
X-Inumbo-ID: 0f110e24-84fc-11e9-b924-83154177a453
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0f110e24-84fc-11e9-b924-83154177a453;
 Sun, 02 Jun 2019 06:02:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BE6A6F201F;
 Sun,  2 Jun 2019 08:02:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MTkIBraMD9Ax; Sun,  2 Jun 2019 08:02:52 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8277BF2003;
 Sun,  2 Jun 2019 08:02:48 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:02:48 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:29 +0100
Message-ID: <20190602060236.6597-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 0/7] Thread-local storage support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

VGhpcyBpcyB2NCBvZiB0aGUgVExTIHNlcmllcyB0aGF0IGFsbG93cyB0aGUgdXNlIG9mIF9fdGhy
ZWFkIHZhcmlhYmxlcy4gVGhlCmNoYW5nZXMgYXJlIG1pbmltYWwsIGp1c3QgYSBzbWFsbCBjaGFu
Z2UgaW4gcGF0Y2ggMSB0byBtYWtlIGl0IGFwcGx5IGNsZWFubHkKdG8gc3RhZ2luZyBhZ2Fpbiwg
YW5kIGEgdHlwbyBmaXggaW4gcGF0Y2ggMi4KCioqKiB2MyB0ZXh0IGJlbG93IGZvciByZWZlcmVu
Y2UgKioqCgpUaGlzIGlzIHYzIG9mIHRoZSBUTFMgc2VyaWVzIHRoYXQgYWxsb3dzIHRoZSB1c2Ug
b2YgX190aHJlYWQgdmFyaWFibGVzLiBUaGUKbWFpbiBjaGFuZ2VzIGZyb20gdjIgYXJlOgoqIEFk
ZGVkIGEgcGF0Y2ggKDEvNykgdGhhdCBtYWtlcyB0aGUgcGxhdC9saW51eHUgbGlua2VyIHNjcmlw
dAogIHByZXByb2Nlc3NhYmxlLiBVc2VkIHRoYXQgdG8gdXNlIHRoZSBzYW1lIG1hY3JvcyBpbiB0
aGF0IGxpbmtlciBzY3JpcHQgYXMKICBpbiB0aGUga3ZtIGFuZCBYZW4gb25lcy4KKiBGaXhlZCBp
bmRlbnRhdGlvbi4KKiBNb3ZlZCBhIGNvcHlyaWdodCBub3RpY2UuCgoKKioqIHYyIHRleHQgYmVs
b3cgZm9yIHJlZmVyZW5jZSAqKioKClRoaXMgaXMgdjIgb2YgdGhlIFRMUyBzZXJpZXMgdGhhdCBh
bGxvd3MgdGhlIHVzZSBvZiBfX3RocmVhZCB2YXJpYWJsZXMuIEkKcmVvcmRlcmVkIGFuZCByZWZh
Y3RvcmVkIHRoZSBwYXRjaGVzIHF1aXRlIGV4dGVuc2l2ZWx5IGluIHRoZSBob3BlcyBvZgptYWtp
bmcgdGhlbSBtb3JlIGVhc3kgdG8gZm9sbG93IGFuZCBmaXggcG90ZW50aWFsIGJyZWFraW5nIG9m
IGNvbXBpbGVzLgoKVGhlIG1haW4gY2hhbmdlcyBmcm9tIHYxIGFyZToKKiBVbmlmeWluZyB0aGUg
VExTIHNlY3Rpb24gZW50cmllcyBmb3IgdGhlIGxpbmtlciBzY3JpcHQgYnkgYWRkaW5nIHRoZW0g
dG8KICBjb21tb24ubGRzLmggdGhhdCB3YXMgYWRkZWQgaW4gcGF0Y2ggZTZhODhkNjEuCiogVGhl
IGZpcnN0IHR3byBwYXRjaGVzIGFyZW4ndCBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBzZXJpZXMs
IGJ1dCBsaWtld2lzZQogIGxldmVyYWdlIGU2YTg4ZDYxIGZvciBmdXJ0aGVyIGxpbmtlciBzY3Jp
cHQgdW5pZmljYXRpb24gYW5kIHJlcGxhY2VtZW50IG9mCiAgbnVtYmVycyB3aXRoIGRlZmluZXMu
CiogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGhlbHBl
ciBmdW5jdGlvbnMgaXMgbm93CiAgZG9uZSBib3RoIGZvciB4ODYgYW5kIGZvciB0aGUgQXJtIHN0
dWIgdmVyc2lvbnMgaW4gb25lIHBhdGNoLCBhbmQgYmVmb3JlCiAgYW55IG9mIHRoZSBmdW5jdGlv
bmFsaXR5IGlzIHVzZWQgaW4gcGxhdC8gY29kZS4gVGhhdCBmaXhlcyBhIHByb2JsZW0gd2l0aAog
IGJ1aWxkcyBicmVha2luZyBmb3IgQXJtIGJlZm9yZSB0aGUgbGFzdCBwYXRjaCBpbiB0aGUgc2Vy
aWVzLgoqIFJlbmFtZWQgc2V2ZXJhbCBoZWFkZXIgZmlsZXMgdG8gdGxzLmguIEkgY291bGQgc3Rp
bGwgaW1hZ2luZSB0aG9zZSBiZWluZwogIG9mIG1vcmUgZ2VuZXJhbCB1c2UgaW4gdGhlIGZ1dHVy
ZSAoZS5nLiwgcHV0dGluZyB0aGUgZXh0ZW5kZWQgcmVnaXN0ZXIKICBzd2l0Y2hpbmcgY29kZSBp
biB0aGVyZSksIGJ1dCB3ZSBjYW4gYWx3YXlzIHJlbmFtZSB0aGVtIGlmIGFuZCB3aGVuIHRoYXQK
ICBoYXBwZW5zLgoKCioqKiB2MSB0ZXh0IGJlbG93IGZvciByZWZlcmVuY2UgKioqCgpUaGlzIHBh
dGNoIHNlcmllcyBpbnRyb2R1Y2VzIHNvLWNhbGxlZCAibmF0aXZlIiB0aHJlYWQtbG9jYWwgc3Rv
cmFnZSBzdXBwb3J0CnRvIHVuaWtyYWZ0LiBUaGF0IGlzLCBzdGF0aWMgdmFyaWFibGVzIGNhbiBi
ZSBhbm5vdGF0ZWQgd2l0aCB0aGUga2V5d29yZAonX190aHJlYWQnIGFuZCB0aGVuIHdvcmsgYXMg
dGhyZWFkLWxvY2FsIHZhcmlhYmxlcy4gVGhhdCBpcywgYSBnbG9iYWwgb3IKc3RhdGljIGxvY2Fs
IHZhcmlhYmxlICdfX3RocmVhZCBpbnQgYScgd2lsbCBiZSB0aHJlYWQtc3BlY2lmaWMsIHdpdGhv
dXQgYW55Cm5lZWQgZm9yIG90aGVyIHN5bnRhY3RpYyBob29wcyB0byBqdW1wIHRocm91Z2ggKHdo
eSBoZWxsbyB0aGVyZSwgcHRocmVhZAprZXlzISkuCgpUaGlzIHdvcmtzIGJ5IGFnZ3JlZ2F0aW5n
IGFsbCB0aGVzZSB2YXJpYWJsZXMgaW50byB0d28gc3BlY2lmaWMgRUxGCnNlY3Rpb25zLCAudGRh
dGEgYW5kIC50YnNzLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5IGFyZSBpbml0aWFsaXplZCBh
dApjb21waWxlIHRpbWUgb3Igbm90LiBFYWNoIHRocmVhZCwgb24gY3JlYXRpb24sIHRoZW4gZ2V0
cyBhIGNvcHkgb2YgdGhpcwphcmVhLiBBIHJlZ2lzdGVyIGlzIHRoZW4gc2V0IGFzaWRlIHRvIHBv
aW50IGF0IHRoaXMgYXJlYSwgYWxsb3dpbmcgaW1tZWRpYXRlCmFuZCBlZmZpY2llbnQgYWNjZXNz
IGJ5IGp1c3QgcmVhZGluZyBmcm9tIGFuZCB3cml0aW5nIHRvIGFkZHJlc3NlcyBkZWZpbmVkCmJ5
IGFuIG9mZnNldCBmcm9tIHRoZSBhZGRyZXNzIHRoZSByZWdpc3RlciBjb250YWlucy4gV2hlbiBz
d2l0Y2hpbmcgYmV0d2Vlbgp0aHJlYWRzLCB0aGUgcmVnaXN0ZXIncyBjb250ZW50IGlzIGNoYW5n
ZWQgdG8gcG9pbnQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgVExTCmFyZWEuCgpGb3IgdW5pa3JhZnQs
IEkgb25seSBpbXBsZW1lbnRlZCB0aGlzIHNpbXBsZSBpbXBsZW1lbnRhdGlvbi4gQWxsIG9mIHRo
aXMKZ2V0cyBhIGxvdCBtb3JlIGNvbXBsaWNhdGVkIHdoZW4gZHluYW1pYyBsaW5raW5nIGlzIGFk
ZGVkIHRvIHRoZSBtaXgsCnJlcXVpcmluZyByZWxvY2F0aW9uLCBsb29rdXAgdmVjdG9ycywgZXRj
LiBUaGFua2Z1bGx5LCBmb3IgYSB1bmlrZXJuZWwsIG5vbmUKb2YgdGhpcyBtYXR0ZXJzIHJlYWxs
eS4uLiB1bmxlc3Mgc29tZW9uZSB3YW50cyB0byBpbXBsZW1lbnQgZHluYW1pYyBsaW5raW5nCmZv
ciB1bmlrcmFmdCwgdGhlbiB0aGV5J2xsIGhhdmUgdG8gcmV2aXNpdCB0aGlzLgoKUm9vbSBmb3Ig
aW1wcm92ZW1lbnQ6CjEpIFRoZSBBcm0gaW1wbGVtZW50YXRpb24gaXMgYnkgbm8gc3RyZXRjaCBv
ZiBpbWFnaW5hdGlvbiBjb21wbGV0ZS4gVGhlcmUncwogICBvbmx5IGJvaWxlcnBsYXRlIGNvZGUg
Zm9yIGNyZWF0aW5nIHRoZSBUTFMgYXJlYSwgYW5kIG5vbmUgYXQgYWxsIGZvciBUTFMKICAgcmVn
aXN0ZXIgc3dpdGNoaW5nIGF0IGNvbnRleHQgc3dpdGNoLiBUaGlzIGlzIG1vc3RseSBiZWNhdXNl
IHRoZXJlIGlzLCBhcwogICBvZiB5ZXQsIG5vIHByb3BlciBzY2hlZHVsaW5nIHN1cHBvcnQgZm9y
IEFybSwgc28gdGhpcyB3aWxsIGhhdmUgdG8gYmUKICAgcmV2aXNpdGVkIGF0IHRoYXQgcG9pbnQu
IEkgdHJpZWQgdG8gc2V0IGV2ZXJ5dGhpbmcgdXAgdG8gbWFrZSBhZGRpbmcgdGhpcwogICBmZWF0
dXJlIGFzIHBhaW5sZXNzIGFzIHBvc3NpYmxlLgoyKSBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biBhbHdheXMgbWFsbG9jcyBhIG5ldyBhcmVhIGZvciBlYWNoIHRocmVhZCdzCiAgIFRMUy4gIFRo
aXMgY291bGQgYmUgb3B0aW1pemVkIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgbWFsbG9jcy4g
Rm9yCiAgIGV4YW1wbGUsIHRoZSBUTFMgYXJlYSBjb3VsZCBiZSBhbGxvY2F0ZWQgaW4gb25lIGNv
bnRpZ3VvdXMgYmxvY2sgd2l0aCB0aGUKICAgdWtfdGhyZWFkIHN0cnVjdHVyZSBvciB0aGUgc3Rh
Y2ssIG9yLCBpZiB0aGUgVExTIGFyZWEgaXMgc21hbGwsIGl0IGNvdWxkCiAgIGJlIGRpcmVjdGx5
IGFsbG9jYXRlZCBvbiB0aGUgdGhyZWFkJ3Mgc3RhY2suCgoKRmxvcmlhbiBTY2htaWR0ICg3KToK
ICBwbGF0L2xpbnV4dTogbWFrZSBsaW5rZXIgc2NyaXB0IHByZXByb2Nlc3NhYmxlCiAgcGxhdDog
bW92ZSBjb21tb24gc2VjdGlvbiBkZWZpbml0aW9ucyBmcm9tIGxpbmtlciBzY3JpcHQgdG8gaW5j
bHVkZQogICAgZmlsZQogIHBsYXQ6IFJlcGxhY2UgMHgxMDAwIC8gNDA5NiB3aXRoIF9fUEFHRV9T
SVpFCiAgcGxhdDogcHJlcGFyZSBsaW5rZXIgc2NyaXB0IGZvciB0aHJlYWQtbG9jYWwgc3RvcmFn
ZQogIGFyY2g6IHByb3ZpZGUgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgaGVscGVyIGZ1bmN0aW9ucwog
IGxpYi91a3NjaGVkOiBjcmVhdGUgYW5kIGRlbGV0ZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBhcmVh
CiAgcGxhdDogc3dpdGNoIHRocmVhZC1sb2NhbCBzdG9yYWdlIGFyZWEgb24gY29udGV4dCBzd2l0
Y2gKCiBhcmNoL2FybS9hcm0vaW5jbHVkZS91ay9hc20vdGxzLmggICAgICAgICAgICAgfCA2MiAr
KysrKysrKysrKysrKysrCiBhcmNoL2FybS9hcm02NC9pbmNsdWRlL3VrL2FzbS90bHMuaCAgICAg
ICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysKIGFyY2gveDg2L3g4Nl82NC9pbmNsdWRlL3Vr
L2FzbS90bHMuaCAgICAgICAgICB8IDczICsrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWsv
YXJjaC90bHMuaCAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysKIGluY2x1
ZGUvdWsvcGxhdC90aHJlYWQuaCAgICAgICAgICAgICAgICAgICAgICB8ICA4ICstCiBsaWIvdWtz
Y2hlZC9pbmNsdWRlL3VrL3NjaGVkLmggICAgICAgICAgICAgICAgfCAgMyArCiBsaWIvdWtzY2hl
ZC9pbmNsdWRlL3VrL3RocmVhZC5oICAgICAgICAgICAgICAgfCAgMyArLQogbGliL3Vrc2NoZWQv
c2NoZWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKystCiBsaWIvdWtz
Y2hlZC90aHJlYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKy0tCiBwbGF0L2Nv
bW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaCAgICAgICAgICAgICAgfCA1MSArKysrKysrKysrKyst
CiBwbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmggICAgICAgICAgICAgICAgfCAgNSArKwog
cGxhdC9jb21tb24vaW5jbHVkZS9zd19jdHguaCAgICAgICAgICAgICAgICAgIHwgIDEgKwogcGxh
dC9jb21tb24vaW5jbHVkZS90bHMuaCAgICAgICAgICAgICAgICAgICAgIHwgNDEgKysrKysrKysr
KysKIHBsYXQvY29tbW9uL2luY2x1ZGUveDg2L2NwdV9kZWZzLmggICAgICAgICAgICB8ICA1ICsr
CiBwbGF0L2NvbW1vbi9pbmNsdWRlL3g4Ni90bHMuaCAgICAgICAgICAgICAgICAgfCAzOSArKysr
KysrKysrCiBwbGF0L2NvbW1vbi9zd19jdHguYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx
MCArKy0KIHBsYXQva3ZtL2FybS9saW5rNjQubGRzLlMgICAgICAgICAgICAgICAgICAgICB8IDMw
ICstLS0tLS0tCiBwbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TICAgICAgICAgICAgICAgICAgICAg
fCAxNSArKy0tCiBwbGF0L2xpbnV4dS9MaW5rZXIudWsgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgOCArLQogcGxhdC9saW51eHUvTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgIHwg
IDQgKwogcGxhdC9saW51eHUvYXJtL2xpbmsubGRzICAgICAgICAgICAgICAgICAgICAgIHwgMTEg
LS0tCiBwbGF0L2xpbnV4dS9hcm0vbGluay5sZHMuUyAgICAgICAgICAgICAgICAgICAgfCAgNyAr
KwogcGxhdC9saW51eHUvaW5jbHVkZS9saW51eHUvc3lzY2FsbC14ODZfNjQuaCAgIHwgIDEgKwog
cGxhdC9saW51eHUvaW5jbHVkZS9saW51eHUvc3lzY2FsbC5oICAgICAgICAgIHwgIDggKysKIC4u
Li94ODYvbGluazY0LmxkcyA9PiBsaW51eHUvaW5jbHVkZS90bHMuaH0gICB8IDMxICsrLS0tLS0t
CiBwbGF0L2xpbnV4dS94ODYvbGluazY0LmxkcyAgICAgICAgICAgICAgICAgICAgfCAgNiAtLQog
cGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUyAgICAgICAgICAgICAgICAgIHwgMTYgKysrKwog
cGxhdC94ZW4vYXJtL2xpbmszMi5sZHMuUyAgICAgICAgICAgICAgICAgICAgIHwgMzcgKystLS0t
LS0tLQogcGxhdC94ZW4veDg2L2xpbms2NC5sZHMuUyAgICAgICAgICAgICAgICAgICAgIHwgMTMg
KysrLQogMjkgZmlsZXMgY2hhbmdlZCwgNTIzIGluc2VydGlvbnMoKyksIDEyNSBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9hcm0vaW5jbHVkZS91ay9hc20vdGxzLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9hcm02NC9pbmNsdWRlL3VrL2FzbS90bHMuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3g4Nl82NC9pbmNsdWRlL3VrL2FzbS90bHMuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWsvYXJjaC90bHMuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IHBsYXQvY29tbW9uL2luY2x1ZGUvdGxzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2Nv
bW1vbi9pbmNsdWRlL3g4Ni90bHMuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHBsYXQvbGludXh1L2Fy
bS9saW5rLmxkcwogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvbGludXh1L2FybS9saW5rLmxkcy5T
CiByZW5hbWUgcGxhdC97Y29tbW9uL3g4Ni9saW5rNjQubGRzID0+IGxpbnV4dS9pbmNsdWRlL3Rs
cy5ofSAoNzclKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHBsYXQvbGludXh1L3g4Ni9saW5rNjQubGRz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUwoKLS0gCjIu
MjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJaC-0004Zq-Dn; Sun, 02 Jun 2019 06:03: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaA-0004Zh-Rf
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:02 +0000
X-Inumbo-ID: 131ca29e-84fc-11e9-ad54-f7665a2f0c3a
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 131ca29e-84fc-11e9-ad54-f7665a2f0c3a;
 Sun, 02 Jun 2019 06:03:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EE723105105;
 Sun,  2 Jun 2019 08:02:58 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id G1CWerkN72Qi; Sun,  2 Jun 2019 08:02:58 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CAD67105058;
 Sun,  2 Jun 2019 08:02:58 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:02:58 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:30 +0100
Message-ID: <20190602060236.6597-2-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 1/7] plat/linuxu: make linker
 script preprocessable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

Q29tbWl0IDFkODRmM2RkOThlICgiYnVpbGQ6IG1ha2UgYWxsIGxpbmtlciBzY3JpcHRzIHByZXBy
b2Nlc3NhYmxlIikKaW50cm9kdWNlZCBwcmVwcm9jZXNzYWJsZSBsaW5rZXIgc2NyaXB0cyBmb3Ig
dGhlIFhlbiBhbmQgS1ZNIHBsYXRmb3JtLgpUaGlzIGZvbGxvd3MgdGhlIHNhbWUgYXBwcm9hY2gg
dG8gbWFrZSB0aGUgbWFpbiBsaW51eHUgbGlua2VyIHNjcmlwdApwcmVwcm9jZXNzYWJsZS4KClNp
Z25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
LS0tCiBwbGF0L2xpbnV4dS9MaW5rZXIudWsgICAgICAgICAgICAgICAgICAgICAgICB8IDggKysr
Ky0tLS0KIHBsYXQvbGludXh1L01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgIHwgNCAr
KysrCiBwbGF0L2xpbnV4dS9hcm0ve2xpbmsubGRzID0+IGxpbmsubGRzLlN9ICAgICB8IDAKIHBs
YXQvbGludXh1L3g4Ni97bGluazY0LmxkcyA9PiBsaW5rNjQubGRzLlN9IHwgMAogNCBmaWxlcyBj
aGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiByZW5hbWUgcGxhdC9saW51
eHUvYXJtL3tsaW5rLmxkcyA9PiBsaW5rLmxkcy5TfSAoMTAwJSkKIHJlbmFtZSBwbGF0L2xpbnV4
dS94ODYve2xpbms2NC5sZHMgPT4gbGluazY0Lmxkcy5TfSAoMTAwJSkKCmRpZmYgLS1naXQgYS9w
bGF0L2xpbnV4dS9MaW5rZXIudWsgYi9wbGF0L2xpbnV4dS9MaW5rZXIudWsKaW5kZXggZGNkZDNi
ZTIuLmFiYmM3ODFlIDEwMDY0NAotLS0gYS9wbGF0L2xpbnV4dS9MaW5rZXIudWsKKysrIGIvcGxh
dC9saW51eHUvTGlua2VyLnVrCkBAIC00LDE0ICs0LDE0IEBAIExJTlVYVV9MREZMQUdTLXkgKz0g
LVdsLC1lLF9saWJsaW51eHVwbGF0X3N0YXJ0CiAjIyBMaW5rIGltYWdlCiAjIwogTElOVVhVX0lN
QUdFIDo9ICQoQlVJTERfRElSKS8kKENPTkZJR19VS19OQU1FKV9saW51eHUtJChDT05GSUdfVUtf
QVJDSCkKLUxJTlVYVV9MRF9TQ1JJUFQtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCTElO
VVhVUExBVF9CQVNFKS94ODYvbGluazY0LmxkcwotTElOVVhVX0xEX1NDUklQVC0kKENPTkZJR19B
UkNIX0FSTV8zMikgKz0gJChMSUJMSU5VWFVQTEFUX0JBU0UpL2FybS9saW5rLmxkcworTElOVVhV
X0xEU0NSSVBUIDo9ICQoY2FsbCBzcmMybGRzLGxpYmxpbnV4dXBsYXQsJChMSU5VWFVfTERTQ1JJ
UFRfU1JDLXkpKQogTElOVVhVX0xEX1NDUklQVF9GTEFHUyA6PSAkKGFkZHByZWZpeCAtV2wkKGNv
bW1hKS1UJChjb21tYSksXAotCQkJICAgICQoTElOVVhVX0xEX1NDUklQVC15KSAkKEVYVFJBX0xE
X1NDUklQVC15KSkKKwkJCSAgICAkKExJTlVYVV9MRFNDUklQVCkgJChFWFRSQV9MRF9TQ1JJUFQt
eSkpCiAKICQoTElOVVhVX0lNQUdFKTogJChMSU5VWFVfQUxJQlMpICQoTElOVVhVX0FMSUJTLXkp
IFwKIAkJICQoTElOVVhVX09MSUJTKSAkKExJTlVYVV9PTElCUy15KSBcCi0JCSAkKFVLX0FMSUJT
KSAkKFVLX0FMSUJTLXkpICQoVUtfT0xJQlMpICQoVUtfT0xJQlMteSkKKwkJICQoVUtfQUxJQlMp
ICQoVUtfQUxJQlMteSkgJChVS19PTElCUykgJChVS19PTElCUy15KSBcCisJCSAkKExJTlVYVV9M
RFNDUklQVCkKIAkkKGNhbGwgYnVpbGRfY21kLExELCwkQC5kYmcsXAogCSAgICAgICAkKExEKSAk
KExERkxBR1MpICQoTERGTEFHUy15KSBcCiAJCSAgICAgJChMSU5VWFVfTERGTEFHUykgJChMSU5V
WFVfTERGTEFHUy15KSBcCmRpZmYgLS1naXQgYS9wbGF0L2xpbnV4dS9NYWtlZmlsZS51ayBiL3Bs
YXQvbGludXh1L01ha2VmaWxlLnVrCmluZGV4IDJjMGRlNzZjLi5lZTNhN2VhMSAxMDA2NDQKLS0t
IGEvcGxhdC9saW51eHUvTWFrZWZpbGUudWsKKysrIGIvcGxhdC9saW51eHUvTWFrZWZpbGUudWsK
QEAgLTIwLDYgKzIwLDkgQEAgTElCTElOVVhVUExBVF9BU0ZMQUdTICAgICAgICAgICAgICs9IC1E
TElOVVhVUExBVAogTElCTElOVVhVUExBVF9DRkxBR1MgICAgICAgICAgICAgICs9IC1ETElOVVhV
UExBVAogTElCTElOVVhVUExBVF9DWFhGTEFHUyAgICAgICAgICAgICs9IC1ETElOVVhVUExBVAog
CitMSU5VWFVfTERTQ1JJUFRfU1JDLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQkxJTlVY
VVBMQVRfQkFTRSkveDg2L2xpbms2NC5sZHMuUworTElOVVhVX0xEU0NSSVBUX1NSQy0kKENPTkZJ
R19BUkNIX0FSTV8zMikgKz0gJChMSUJMSU5VWFVQTEFUX0JBU0UpL2FybS9saW5rLmxkcy5TCisK
IExJQkxJTlVYVVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChVS19QTEFUX0NP
TU1PTl9CQVNFKS94ODYvY3B1X2ZlYXR1cmVzLmN8Y29tbW9uCiBMSUJMSU5VWFVQTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9YODZfMzIpICs9ICQoTElCTElOVVhVUExBVF9CQVNFKS94ODYvZW50cnkz
Mi5TCiBMSUJMSU5VWFVQTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCTElO
VVhVUExBVF9CQVNFKS94ODYvZW50cnk2NC5TCkBAIC00MCwzICs0Myw0IEBAIExJQkxJTlVYVVBM
QVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKExJQkxJTlVYVVBMQVRfQkFTRSkvdGltZS5jCiBM
SUJMSU5VWFVQTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNF
KS9sY3B1LmN8Y29tbW9uCiBMSUJMSU5VWFVQTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChV
S19QTEFUX0NPTU1PTl9CQVNFKS9tZW1vcnkuY3xjb21tb24KIExJQkxJTlVYVVBMQVRfU1JDUy15
ICAgICAgICAgICAgICArPSAkKExJQkxJTlVYVVBMQVRfQkFTRSkvaW8uYworTElCTElOVVhVUExB
VF9TUkNTLXkgICAgICAgICAgICAgICs9ICQoTElOVVhVX0xEU0NSSVBUX1NSQy15KQpkaWZmIC0t
Z2l0IGEvcGxhdC9saW51eHUvYXJtL2xpbmsubGRzIGIvcGxhdC9saW51eHUvYXJtL2xpbmsubGRz
LlMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBsYXQvbGludXh1L2FybS9saW5r
LmxkcwpyZW5hbWUgdG8gcGxhdC9saW51eHUvYXJtL2xpbmsubGRzLlMKZGlmZiAtLWdpdCBhL3Bs
YXQvbGludXh1L3g4Ni9saW5rNjQubGRzIGIvcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUwpz
aW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcGxhdC9saW51eHUveDg2L2xpbms2NC5s
ZHMKcmVuYW1lIHRvIHBsYXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMKLS0gCjIuMjEuMAoKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJaG-0004aY-FU; Sun, 02 Jun 2019 06:03:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaE-0004aH-Gd
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:06 +0000
X-Inumbo-ID: 157fc880-84fc-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 157fc880-84fc-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 06:03:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A25A5F201F;
 Sun,  2 Jun 2019 08:03:03 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hXXynsx7J8wg; Sun,  2 Jun 2019 08:03:03 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 797E2F2003;
 Sun,  2 Jun 2019 08:02:59 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:02:59 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:31 +0100
Message-ID: <20190602060236.6597-3-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 2/7] plat: move common section
 definitions from linker script to include file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIHBsYXQvY29tbW9uL2luY2x1ZGUvY29tbW9uLmxkcy5oIHwgMzIgKysrKysrKysrKysr
KysrKy0KIHBsYXQvY29tbW9uL3g4Ni9saW5rNjQubGRzICAgICAgIHwgNTkgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIHBsYXQva3ZtL2FybS9saW5rNjQubGRzLlMgICAgICAgIHwg
MjggKystLS0tLS0tLS0tLS0tCiBwbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TICAgICAgICB8ICA0
ICsrLQogcGxhdC9saW51eHUvYXJtL2xpbmsubGRzLlMgICAgICAgfCAxMCArKy0tLS0KIHBsYXQv
bGludXh1L3g4Ni9saW5rNjQubGRzLlMgICAgIHwgIDYgKysrLQogcGxhdC94ZW4vYXJtL2xpbmsz
Mi5sZHMuUyAgICAgICAgfCAyOSArKy0tLS0tLS0tLS0tLS0tCiBwbGF0L3hlbi94ODYvbGluazY0
Lmxkcy5TICAgICAgICB8ICA0ICsrLQogOCBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCsp
LCAxMjMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24veDg2L2xp
bms2NC5sZHMKCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaCBi
L3BsYXQvY29tbW9uL2luY2x1ZGUvY29tbW9uLmxkcy5oCmluZGV4IDg2NzJiNmZmLi5kYjk1MWM1
NCAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9jb21tb24ubGRzLmgKKysrIGIvcGxh
dC9jb21tb24vaW5jbHVkZS9jb21tb24ubGRzLmgKQEAgLTEsNiArMSw3IEBACiAvKiBTUERYLUxp
Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCiAvKgotICogQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jw
b3JhdGlvbiwKKyAqICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBv
ZiBCdWNoYXJlc3QuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMzEsNiArMzIsOCBAQAogI2lmbmRlZiBfX1VLX0NPTU1PTl9MRFNfSAogI2RlZmluZSBfX1VL
X0NPTU1PTl9MRFNfSAogCisjaW5jbHVkZSA8dWsvYXJjaC9saW1pdHMuaD4gLyogZm9yIF9fUEFH
RV9TSVpFICovCisKIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLiAgU3ltYm9scyBpbiB0aGUgRFdB
UkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZQogICogcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBv
ZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuCiAgKi8KQEAgLTY0LDQgKzY3LDMx
IEBACiAJLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9CQkJCVwKIAkuZ251
LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJpYnV0ZXMpKSB9CiAKKyNkZWZpbmUg
RVhDRVBUSU9OX1NFQ1RJT05TCQkJCQkJXAorCS4gPSBBTElHTihfX1BBR0VfU0laRSk7CQkJCQkJ
XAorCV9fZWhfZnJhbWVfc3RhcnQgPSAuOwkJCQkJCVwKKwkuZWhfZnJhbWUgOgkJCQkJCQlcCisJ
ewkJCQkJCQkJXAorCQkqKC5laF9mcmFtZSkJCQkJCQlcCisJCSooLmVoX2ZyYW1lLiopCQkJCQkJ
XAorCX0JCQkJCQkJCVwKKwlfX2VoX2ZyYW1lX2VuZCA9IC47CQkJCQkJXAorCQkJCQkJCQkJXAor
CV9fZWhfZnJhbWVfaGRyX3N0YXJ0ID0gLjsJCQkJCVwKKwkuZWhfZnJhbWVfaGRyIDoJCQkJCQkJ
XAorCXsJCQkJCQkJCVwKKwkJKiguZWhfZnJhbWVfaGRyKQkJCQkJXAorCQkqKC5laF9mcmFtZV9o
ZHIuKikJCQkJCVwKKwl9CQkJCQkJCQlcCisJX19laF9mcmFtZV9oZHJfZW5kID0gLjsKKworI2Rl
ZmluZSBDVE9SVEFCX1NFQ1RJT04JCQkJCQkJXAorCS4gPSBBTElHTihfX1BBR0VfU0laRSk7CQkJ
CQkJXAorCXVrX2N0b3J0YWIgPSAuOwkJCQkJCQlcCisJLnVrX2N0b3J0YWIgOgkJCQkJCQlcCisJ
ewkJCQkJCQkJXAorCQlLRUVQKCooU09SVF9CWV9OQU1FKC51a19jdG9ydGFiWzAtN10pKSkJCQlc
CisJCUxPTkcoMCkJCQkJCQkJXAorCX0KKwogI2VuZGlmIC8qIF9fVUtfQ09NTU9OX0xEU19IICov
CmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi94ODYvbGluazY0LmxkcyBiL3BsYXQvY29tbW9uL3g4
Ni9saW5rNjQubGRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmYzNTNiOC4uMDAw
MDAwMDAKLS0tIGEvcGxhdC9jb21tb24veDg2L2xpbms2NC5sZHMKKysrIC9kZXYvbnVsbApAQCAt
MSw1OSArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICov
Ci0vKgotICogQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVA
c3R1ZC5hY3MudXBiLnJvPgotICoKLSAqIENvcHlyaWdodCAoYykgMjAxOSwgUG9saXRlaG5pY2Eg
VW5pdmVyc2l0eSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqICAgIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQotICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICogVEhJ
UyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KLSAq
LwotCi0uID0gQUxJR04oMHgxMDAwKTsKLV9fZWhfZnJhbWVfc3RhcnQgPSAuOwotLmVoX2ZyYW1l
IDoKLXsKLQkqKC5laF9mcmFtZSkKLQkqKC5laF9mcmFtZS4qKQotfQotX19laF9mcmFtZV9lbmQg
PSAuOwotCi1fX2VoX2ZyYW1lX2hkcl9zdGFydCA9IC47Ci0uZWhfZnJhbWVfaGRyIDoKLXsKLQkq
KC5laF9mcmFtZV9oZHIpCi0JKiguZWhfZnJhbWVfaGRyLiopCi19Ci1fX2VoX2ZyYW1lX2hkcl9l
bmQgPSAuOwotCi0uID0gQUxJR04oMHgxMDAwKTsKLXVrX2N0b3J0YWIgPSAuOwotLnVrX2N0b3J0
YWIgOgotewotICAgIEtFRVAoKihTT1JUX0JZX05BTUUoLnVrX2N0b3J0YWJbMC03XSkpKQotICAg
IExPTkcoMCkKLX0KLQpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL2xpbms2NC5sZHMuUyBiL3Bs
YXQva3ZtL2FybS9saW5rNjQubGRzLlMKaW5kZXggOTZkOWVkY2IuLjc1M2QxNjk2IDEwMDY0NAot
LS0gYS9wbGF0L2t2bS9hcm0vbGluazY0Lmxkcy5TCisrKyBiL3BsYXQva3ZtL2FybS9saW5rNjQu
bGRzLlMKQEAgLTY5LDI1ICs2OSw3IEBAIFNFQ1RJT05TIHsKIAkuID0gQUxJR04oX19QQUdFX1NJ
WkUpOwogCV9ldGV4dCA9IC47CiAKLQkvKiBFeGNlcHRpb24gZnJhbWUgKi8KLQlfX2VoX2ZyYW1l
X3N0YXJ0ID0gLjsKLQkuZWhfZnJhbWUgOgotCXsKLQkJKiguZWhfZnJhbWUpCi0JCSooLmVoX2Zy
YW1lLiopCi0JfQotCV9fZWhfZnJhbWVfZW5kID0gLjsKLQotCS8qIEV4Y2VwdGlvbiBmcmFtZSBo
ZWFkZXIgKi8KLQlfX2VoX2ZyYW1lX2hkcl9zdGFydCA9IC47Ci0JLmVoX2ZyYW1lX2hkciA6Ci0J
ewotCi0JCSooLmVoX2ZyYW1lX2hkcikKLQkJKiguZWhfZnJhbWVfaGRyLiopCi0JfQotCS4gPSBB
TElHTihfX1BBR0VfU0laRSk7Ci0JX19laF9mcmFtZV9oZHJfZW5kID0gLjsKKwlFWENFUFRJT05f
U0VDVElPTlMKIAogCS8qIFJlYWQtb25seSBkYXRhICovCiAJX3JvZGF0YSA9IC47CkBAIC0xMDAs
MTMgKzgyLDcgQEAgU0VDVElPTlMgewogCiAJX2Vyb2RhdGEgPSAuOwogCi0JLiA9IEFMSUdOKF9f
UEFHRV9TSVpFKTsKLQl1a19jdG9ydGFiID0gLjsKLQkudWtfY3RvcnRhYiA6Ci0JewotCQlLRUVQ
KCooU09SVF9CWV9OQU1FKC51a19jdG9ydGFiWzAtN10pKSkKLQkJTE9ORygwKQotCX0KKwlDVE9S
VEFCX1NFQ1RJT04KIAogCS8qIENvbnN0cnVjdG9yIHRhYmxlcyAocmVhZC1vbmx5KSAqLwogCS4g
PSBBTElHTigweDgpOwpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyBiL3Bs
YXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKaW5kZXggMmEyNThlNWQuLjVjNjNlNGFmIDEwMDY0NAot
LS0gYS9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCisrKyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQu
bGRzLlMKQEAgLTQzLDcgKzQzLDkgQEAgU0VDVElPTlMKIAl9CiAJX2V0ZXh0ID0gLjsKIAotCUlO
Q0xVREUgcGxhdC9jb21tb24veDg2L2xpbms2NC5sZHMKKwlFWENFUFRJT05fU0VDVElPTlMKKwor
CUNUT1JUQUJfU0VDVElPTgogCiAJLyogUmVhZC1vbmx5IGRhdGEgKi8KIAkuID0gQUxJR04oMHgx
MDAwKTsKZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L2FybS9saW5rLmxkcy5TIGIvcGxhdC9saW51
eHUvYXJtL2xpbmsubGRzLlMKaW5kZXggNmY0NWZkOGIuLjhhNzMxYzVjIDEwMDY0NAotLS0gYS9w
bGF0L2xpbnV4dS9hcm0vbGluay5sZHMuUworKysgYi9wbGF0L2xpbnV4dS9hcm0vbGluay5sZHMu
UwpAQCAtMSwxMSArMSw3IEBACisjaW5jbHVkZSA8Y29tbW9uLmxkcy5oPgorCiBTRUNUSU9OUwog
ewotICAgLiA9IEFMSUdOKDB4MTAwMCk7Ci0gICB1a19jdG9ydGFiID0gLjsKLSAgIC51a19jdG9y
dGFiIDoKLSAgIHsKLSAgICAgICBLRUVQKCooU09SVF9CWV9OQU1FKC51a19jdG9ydGFiWzAtN10p
KSkKLSAgICAgICBMT05HKDApCi0gICB9CisJQ1RPUlRBQl9TRUNUSU9OCiB9CiBJTlNFUlQgQUZU
RVIgLnJvZGF0YQpkaWZmIC0tZ2l0IGEvcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUyBiL3Bs
YXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMKaW5kZXggMDc3YWFmNjYuLjQ2MDM0NDc3IDEwMDY0
NAotLS0gYS9wbGF0L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TCisrKyBiL3BsYXQvbGludXh1L3g4
Ni9saW5rNjQubGRzLlMKQEAgLTEsNiArMSwxMCBAQAorI2luY2x1ZGUgPGNvbW1vbi5sZHMuaD4K
KwogU0VDVElPTlMKIHsKLSAgIElOQ0xVREUgcGxhdC9jb21tb24veDg2L2xpbms2NC5sZHMKKwlF
WENFUFRJT05fU0VDVElPTlMKKworCUNUT1JUQUJfU0VDVElPTgogfQogSU5TRVJUIEFGVEVSIC5y
b2RhdGEKIApkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMuUyBiL3BsYXQveGVu
L2FybS9saW5rMzIubGRzLlMKaW5kZXggOWFmMjVmMTUuLjhiYmVmYTY0IDEwMDY0NAotLS0gYS9w
bGF0L3hlbi9hcm0vbGluazMyLmxkcy5TCisrKyBiL3BsYXQveGVuL2FybS9saW5rMzIubGRzLlMK
QEAgLTQ5LDI2ICs0OSw3IEBAIFNFQ1RJT05TCiAKIAlfZXRleHQgPSAuOwkJCS8qIEVuZCBvZiB0
ZXh0IHNlY3Rpb24gKi8KIAotCS8qIEV4Y2VwdGlvbiBmcmFtZSAqLwotCS4gPSBBTElHTig0MDk2
KTsKLQlfX2VoX2ZyYW1lX3N0YXJ0ID0gLjsKLQkuZWhfZnJhbWUgOgotCXsKLQkJKiguZWhfZnJh
bWUpCi0JCSooLmVoX2ZyYW1lLiopCi0JfQotCV9fZWhfZnJhbWVfZW5kID0gLjsKLQotCi0JLyog
RXhjZXB0aW9uIGZyYW1lIGhlYWRlciAqLwotCV9fZWhfZnJhbWVfaGRyX3N0YXJ0ID0gLjsKLQku
ZWhfZnJhbWVfaGRyIDoKLQl7Ci0JCSooLmVoX2ZyYW1lX2hkcikKLQkJKiguZWhfZnJhbWVfaGRy
LiopCi0JfQotCS4gPSBBTElHTig0MDk2KTsKLQlfX2VoX2ZyYW1lX2hkcl9lbmQgPSAuOworCUVY
Q0VQVElPTl9TRUNUSU9OUwogCiAJLyogUmVhZC1vbmx5IGRhdGEgKi8KIAlfcm9kYXRhID0gLjsK
QEAgLTgwLDEzICs2MSw3IEBAIFNFQ1RJT05TCiAJLiA9IEFMSUdOKDQwOTYpOwogCV9lcm9kYXRh
ID0gLjsKIAotCXVrX2N0b3J0YWIgPSAuOwotCS51a19jdG9ydGFiIDoKLQl7Ci0JCUtFRVAoKihT
T1JUX0JZX05BTUUoLnVrX2N0b3J0YWJbMC03XSkpKQotCQlMT05HKDApCi0JfQotCS4gPSBBTElH
Tig0MDk2KTsKKwlDVE9SVEFCX1NFQ1RJT04KIAogCS4gPSBBTElHTigweDgpOwogCV9jdG9ycyA9
IC47CmRpZmYgLS1naXQgYS9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TIGIvcGxhdC94ZW4veDg2
L2xpbms2NC5sZHMuUwppbmRleCA0NGE5ZGViOS4uMTE2YTEyZTggMTAwNjQ0Ci0tLSBhL3BsYXQv
eGVuL3g4Ni9saW5rNjQubGRzLlMKKysrIGIvcGxhdC94ZW4veDg2L2xpbms2NC5sZHMuUwpAQCAt
NDEsNyArNDEsOSBAQCBTRUNUSU9OUwogCiAJX2V0ZXh0ID0gLjsJCQkvKiBFbmQgb2YgdGV4dCBz
ZWN0aW9uICovCiAKLQlJTkNMVURFIHBsYXQvY29tbW9uL3g4Ni9saW5rNjQubGRzCisJRVhDRVBU
SU9OX1NFQ1RJT05TCisKKwlDVE9SVEFCX1NFQ1RJT04KIAogCV9yb2RhdGEgPSAuOwogCS5yb2Rh
dGEgOiB7Ci0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJaG-0004ad-Ha; Sun, 02 Jun 2019 06:03: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaE-0004aJ-KA
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:06 +0000
X-Inumbo-ID: 15ec7896-84fc-11e9-a036-d7de03158983
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 15ec7896-84fc-11e9-a036-d7de03158983;
 Sun, 02 Jun 2019 06:03:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 60EE710530E;
 Sun,  2 Jun 2019 08:03:04 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id zym7ZGeuoLlJ; Sun,  2 Jun 2019 08:03:04 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 42C95105105;
 Sun,  2 Jun 2019 08:03:04 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:03:03 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:32 +0100
Message-ID: <20190602060236.6597-4-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 3/7] plat: Replace 0x1000 / 4096
 with __PAGE_SIZE
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

Tm93IHRoYXQgd2UgaGF2ZSBwcmVwcm9jZXNzb3Igc3VwcG9ydCwgd2UgY2FuIHVzZSBpdCB0byBt
YWtlIHNvbWUgb2YKdGhlc2UgbnVtYmVycyBtb3JlIGV4cHJlc3NpdmUuCgpTaWduZWQtb2ZmLWJ5
OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+ClJldmlld2VkLWJ5
OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgotLS0KIHBsYXQva3ZtL3g4Ni9s
aW5rNjQubGRzLlMgfCA5ICsrKysrLS0tLQogcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMuUyB8IDYg
KysrLS0tCiBwbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TIHwgNyArKysrLS0tCiAzIGZpbGVzIGNo
YW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Bs
YXQva3ZtL3g4Ni9saW5rNjQubGRzLlMgYi9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCmluZGV4
IDVjNjNlNGFmLi4wMTFlNjIzMiAxMDA2NDQKLS0tIGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMu
UworKysgYi9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCkBAIC0yMyw2ICsyMyw3IEBACiAgKiBD
T05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgog
ICovCiAKKyNpbmNsdWRlIDx1ay9hcmNoL2xpbWl0cy5oPiAvKiBmb3IgX19QQUdFX1NJWkUgKi8K
ICNpbmNsdWRlIDxjb21tb24ubGRzLmg+CiAKIEVOVFJZKF9saWJrdm1wbGF0X2VudHJ5KQpAQCAt
NDgsNyArNDksNyBAQCBTRUNUSU9OUwogCUNUT1JUQUJfU0VDVElPTgogCiAJLyogUmVhZC1vbmx5
IGRhdGEgKi8KLQkuID0gQUxJR04oMHgxMDAwKTsKKwkuID0gQUxJR04oX19QQUdFX1NJWkUpOwog
CV9yb2RhdGEgPSAuOwogCS5yb2RhdGEgOgogCXsKQEAgLTc2LDcgKzc3LDcgQEAgU0VDVElPTlMK
IAlfZWN0b3JzID0gLjsKIAogCS8qIFJlYWQtd3JpdGUgZGF0YSAoaW5pdGlhbGl6ZWQpICovCi0J
LiA9IEFMSUdOKDB4MTAwMCk7CisJLiA9IEFMSUdOKF9fUEFHRV9TSVpFKTsKIAlfZGF0YSA9IC47
CiAJLmRhdGEgOgogCXsKQEAgLTg2LDE0ICs4NywxNCBAQCBTRUNUSU9OUwogCV9lZGF0YSA9IC47
CiAKIAkvKiBSZWFkLXdyaXRlIGRhdGEgKHVuaW5pdGlhbGl6ZWQpICovCi0JLiA9IEFMSUdOKDB4
MTAwMCk7CisJLiA9IEFMSUdOKF9fUEFHRV9TSVpFKTsKIAlfX2Jzc19zdGFydCA9IC47CiAJLmJz
cyA6CiAJewogCQkqKC5ic3MpCiAJCSooLmJzcy4qKQogCQkqKENPTU1PTikKLQkJLiA9IEFMSUdO
KDB4MTAwMCk7CisJCS4gPSBBTElHTihfX1BBR0VfU0laRSk7CiAJfQogCiAJX2VuZCA9IC47CmRp
ZmYgLS1naXQgYS9wbGF0L3hlbi9hcm0vbGluazMyLmxkcy5TIGIvcGxhdC94ZW4vYXJtL2xpbmsz
Mi5sZHMuUwppbmRleCA4YmJlZmE2NC4uNjQyYjVlYjMgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2Fy
bS9saW5rMzIubGRzLlMKKysrIGIvcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMuUwpAQCAtNTgsNyAr
NTgsNyBAQCBTRUNUSU9OUwogCQkqKC5yb2RhdGEpCiAJCSooLnJvZGF0YS4qKQogCX0KLQkuID0g
QUxJR04oNDA5Nik7CisJLiA9IEFMSUdOKF9fUEFHRV9TSVpFKTsKIAlfZXJvZGF0YSA9IC47CiAK
IAlDVE9SVEFCX1NFQ1RJT04KQEAgLTc4LDcgKzc4LDcgQEAgU0VDVElPTlMKIAkJS0VFUCAoKigu
aW5pdF9hcnJheSAuY3RvcnMpKQogCQlQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9
IC4pOwogCX0KLQkuID0gQUxJR04oNDA5Nik7CisJLiA9IEFMSUdOKF9fUEFHRV9TSVpFKTsKIAlf
ZWN0b3JzID0gLjsKIAogCS8qIERhdGEgKi8KQEAgLTk5LDcgKzk5LDcgQEAgU0VDVElPTlMKIAkJ
KiguYnNzKQogCQkqKC5ic3MuKikKIAl9Ci0JLiA9IEFMSUdOKDQwOTYpOworCS4gPSBBTElHTihf
X1BBR0VfU0laRSk7CiAJX2VuZCA9IC4gOwogCiAKZGlmZiAtLWdpdCBhL3BsYXQveGVuL3g4Ni9s
aW5rNjQubGRzLlMgYi9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TCmluZGV4IDExNmExMmU4Li5m
ZjY5ZjgzMCAxMDA2NDQKLS0tIGEvcGxhdC94ZW4veDg2L2xpbms2NC5sZHMuUworKysgYi9wbGF0
L3hlbi94ODYvbGluazY0Lmxkcy5TCkBAIC0yMyw2ICsyMyw3IEBACiAgKi8KIC8qIFRha2VuIGZy
b20gTWluaS1PUyAqLwogCisjaW5jbHVkZSA8dWsvYXJjaC9saW1pdHMuaD4gLyogZm9yIF9fUEFH
RV9TSVpFICovCiAjaW5jbHVkZSA8Y29tbW9uLmxkcy5oPgogCiBPVVRQVVRfRk9STUFUKCJlbGY2
NC14ODYtNjQiKQpAQCAtNTAsNyArNTEsNyBAQCBTRUNUSU9OUwogCQkqKC5yb2RhdGEpCiAJCSoo
LnJvZGF0YS4qKQogCX0KLQkuID0gQUxJR04oNDA5Nik7CisJLiA9IEFMSUdOKF9fUEFHRV9TSVpF
KTsKIAlfZXJvZGF0YSA9IC47CiAKIAkuID0gQUxJR04oMHg4KTsKQEAgLTY4LDcgKzY5LDcgQEAg
U0VDVElPTlMKIAkJS0VFUCAoKiguaW5pdF9hcnJheSAuY3RvcnMpKQogCQlQUk9WSURFX0hJRERF
TiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwogCX0KLQkuID0gQUxJR04oNDA5Nik7CisJLiA9IEFM
SUdOKF9fUEFHRV9TSVpFKTsKIAlfZWN0b3JzID0gLjsKIAogCS8qIERhdGEgKi8KQEAgLTg5LDcg
KzkwLDcgQEAgU0VDVElPTlMKIAkJKiguYnNzKQogCQkqKC5ic3MuKikKIAl9Ci0JLiA9IEFMSUdO
KDQwOTYpOworCS4gPSBBTElHTihfX1BBR0VfU0laRSk7CiAJX2VuZCA9IC4gOwogCiAJLyogU2Vj
dGlvbnMgdG8gYmUgZGlzY2FyZGVkICovCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJaJ-0004bk-J8; Sun, 02 Jun 2019 06:03: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=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaI-0004bV-RF
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:10 +0000
X-Inumbo-ID: 18d41abe-84fc-11e9-8b50-b7397d60f879
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 18d41abe-84fc-11e9-8b50-b7397d60f879;
 Sun, 02 Jun 2019 06:03:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 412AAF201F;
 Sun,  2 Jun 2019 08:03:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LOuSO_Ov4I_C; Sun,  2 Jun 2019 08:03:09 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1F9EAF2003;
 Sun,  2 Jun 2019 08:03:05 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:03:04 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:33 +0100
Message-ID: <20190602060236.6597-5-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 4/7] plat: prepare linker script
 for thread-local storage
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

QWdncmVnYXRlIGFsbCAudGRhdGEgYW5kIC50YnNzIHZhcmlhYmxlcyBpbiB0aGUgY29ycmVjdCBz
ZWN0aW9ucywgYW5kCmRlZmluZSBnbG9iYWwgdmFyaWFibGVzIHRoYXQgcG9pbnQgYXQgc2VjdGlv
biBiZWdpbm5pbmcgYW5kIGVuZC4KCk5vdGUgdGhhdCBiZWNhdXNlIHRoZSAudGJzcyBzZWN0aW9u
IGlzIHplcm8tc2l6ZSBpbiB0aGUgRUxGIGZpbGUsIGp1c3QKc2V0dGluZyBfdGxzX2VuZCB0byB0
aGUgZW5kIG9mIGl0IGRvZXNuJ3QgZ2l2ZSB1cyB0aGUgdGhlIHNpemUgb2YgdGhlCm1lbW9yeSBh
cmVhIG9uY2UgbG9hZGVkLCBzbyB3ZSB1c2UgU0laRU9GIHRvIGhhdmUgaXQgcG9pbnQgdG8gdGhl
IGVuZC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5l
Y2xhYi5ldT4KLS0tCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaCB8IDE5ICsrKysr
KysrKysrKysrKysrKysKIHBsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaCAgIHwgIDUgKysr
KysKIHBsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMgICAgICAgIHwgIDIgKysKIHBsYXQvbGludXh1
L3g4Ni9saW5rNjQubGRzLlMgICAgIHwgIDYgKysrKysrCiBwbGF0L3hlbi94ODYvbGluazY0Lmxk
cy5TICAgICAgICB8ICAyICsrCiA1IGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKykKCmRp
ZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaCBiL3BsYXQvY29tbW9u
L2luY2x1ZGUvY29tbW9uLmxkcy5oCmluZGV4IGRiOTUxYzU0Li41Y2NhYWRiMyAxMDA2NDQKLS0t
IGEvcGxhdC9jb21tb24vaW5jbHVkZS9jb21tb24ubGRzLmgKKysrIGIvcGxhdC9jb21tb24vaW5j
bHVkZS9jb21tb24ubGRzLmgKQEAgLTk0LDQgKzk0LDIzIEBACiAJCUxPTkcoMCkJCQkJCQkJXAog
CX0KIAorI2RlZmluZSBUTFNfU0VDVElPTlMJCQkJCQkJXAorCS4gPSBBTElHTigweDgpOwkJCQkJ
CQlcCisJX3Rsc19zdGFydCA9IC47CQkJCQkJCVwKKwkudGRhdGEgOgkJCQkJCQlcCisJewkJCQkJ
CQkJXAorCQkqKC50ZGF0YSkJCQkJCQlcCisJCSooLnRkYXRhLiopCQkJCQkJXAorCQkqKC5nbnUu
bGlua29uY2UudGQuKikJCQkJCVwKKwl9CQkJCQkJCQlcCisJX2V0ZGF0YSA9IC47CQkJCQkJCVwK
KwkudGJzcyA6CQkJCQkJCQlcCisJewkJCQkJCQkJXAorCQkqKC50YnNzKQkJCQkJCVwKKwkJKigu
dGJzcy4qKQkJCQkJCVwKKwkJKiguZ251LmxpbmtvbmNlLnRiLiopCQkJCQlcCisJCS4gPSBBTElH
TigweDgpOwkJCQkJCVwKKwl9CQkJCQkJCQlcCisJX3Rsc19lbmQgPSAuICsgU0laRU9GKC50YnNz
KTsKKwogI2VuZGlmIC8qIF9fVUtfQ09NTU9OX0xEU19IICovCmRpZmYgLS1naXQgYS9wbGF0L2Nv
bW1vbi9pbmNsdWRlL3NlY3Rpb25zLmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgK
aW5kZXggMTA1MmNmYzcuLmEyNjc3Y2U4IDEwMDY0NAotLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRl
L3NlY3Rpb25zLmgKKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9zZWN0aW9ucy5oCkBAIC02Myw2
ICs2MywxMSBAQCBleHRlcm4gY2hhciBfZGF0YVtdLCBfZWRhdGFbXTsKIC8qIFtfY3RvcnMsIF9l
Y3RvcnNdOiBjb250YWlucyBjb25zdHJ1Y3RvciB0YWJsZXMgKHJlYWQtb25seSkgKi8KIGV4dGVy
biBjaGFyIF9jdG9yc1tdLCBfZWN0b3JzW107CiAKKy8qIFtfdGxzX3N0YXJ0LCBfdGxzX2VuZF06
IGNvbnRhaW5zIC50ZGF0YS4qIGFuZCAudGJzcy4qIHNlY3Rpb25zICovCitleHRlcm4gY2hhciBf
dGxzX3N0YXJ0W10sIF90bHNfZW5kW107CisvKiBfZXRkYXRhOiBkZW5vdGVzIGVuZCBvZiAudGRh
dGEgKGFuZCBzdGFydCBvZiAudGJzcyAqLworZXh0ZXJuIGNoYXIgX2V0ZGF0YVtdOworCiAvKiBf
X2Jzc19zdGFydDogc3RhcnQgb2YgQlNTIHNlY3Rpb25zICovCiBleHRlcm4gY2hhciBfX2Jzc19z
dGFydFtdOwogCmRpZmYgLS1naXQgYS9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TIGIvcGxhdC9r
dm0veDg2L2xpbms2NC5sZHMuUwppbmRleCAwMTFlNjIzMi4uMzYyYmEzZTYgMTAwNjQ0Ci0tLSBh
L3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKKysrIGIvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMu
UwpAQCAtNzYsNiArNzYsOCBAQCBTRUNUSU9OUwogCX0KIAlfZWN0b3JzID0gLjsKIAorCVRMU19T
RUNUSU9OUworCiAJLyogUmVhZC13cml0ZSBkYXRhIChpbml0aWFsaXplZCkgKi8KIAkuID0gQUxJ
R04oX19QQUdFX1NJWkUpOwogCV9kYXRhID0gLjsKZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L3g4
Ni9saW5rNjQubGRzLlMgYi9wbGF0L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TCmluZGV4IDQ2MDM0
NDc3Li5iNmY1ODFjZSAxMDA2NDQKLS0tIGEvcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUwor
KysgYi9wbGF0L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TCkBAIC04LDMgKzgsOSBAQCBTRUNUSU9O
UwogfQogSU5TRVJUIEFGVEVSIC5yb2RhdGEKIAorU0VDVElPTlMKK3sKKwlUTFNfU0VDVElPTlMK
K30KKworSU5TRVJUIEJFRk9SRSAuZGF0YQpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4veDg2L2xpbms2
NC5sZHMuUyBiL3BsYXQveGVuL3g4Ni9saW5rNjQubGRzLlMKaW5kZXggZmY2OWY4MzAuLmY3ZTUz
ZmU2IDEwMDY0NAotLS0gYS9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TCisrKyBiL3BsYXQveGVu
L3g4Ni9saW5rNjQubGRzLlMKQEAgLTcyLDYgKzcyLDggQEAgU0VDVElPTlMKIAkuID0gQUxJR04o
X19QQUdFX1NJWkUpOwogCV9lY3RvcnMgPSAuOwogCisJVExTX1NFQ1RJT05TCisKIAkvKiBEYXRh
ICovCiAJX2RhdGEgPSAuOwogCS5kYXRhIDogewotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJaL-0004cW-LF; Sun, 02 Jun 2019 06:03:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaK-0004cG-RQ
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:12 +0000
X-Inumbo-ID: 19467b9a-84fc-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 19467b9a-84fc-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 06:03:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0463810530E;
 Sun,  2 Jun 2019 08:03:10 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gS8DT-EliEwN; Sun,  2 Jun 2019 08:03:09 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D83F2105105;
 Sun,  2 Jun 2019 08:03:09 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:03:09 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:34 +0100
Message-ID: <20190602060236.6597-6-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 5/7] arch: provide thread-local
 storage helper 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: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

QmVjYXVzZSB0aGUgbGF5b3V0IG9mIHRoZSBUTFMgYXJlYSBpcyBhcmNoaXRlY3R1cmUtc3BlY2lm
aWMsIHdlIHByb3ZpZGUKaGVscGVyIGZ1bmN0aW9ucyB0byBnZXQgdGhlIHJlcXVpcmVkIHNpemUg
YW5kIGFsaWdubWVudCBvZiB0aGUgVExTIGFyZWEsCmFzIHdlbGwgYXMgYSBoZWxwIGZ1bmN0aW9u
IHRoYXQgZG9lcyB0aGUgYWN0dWFsIGNvcHlpbmcgb2YgdGhlIFRMUwoibWFzdGVyIGNvcHkiIGFj
Y29yZGluZyB0aGUgbGF5b3V0IHJlcXVpcmVkIGJ5IHRoZSBBQkkuCgpPbmx5IHRoZSB4ODYtNjQg
aW1wbGVtZW50YXRpb24gaXMgY29tcGxldGUgYW5kIHRlc3RlZC4gQXJtMzIgaXMgcHVyZQpib2ls
ZXJwbGF0ZS4gQXJtNjQgaGFzIHNvbWUgcm91Z2ggZ3Vlc3NlcyBhYm91dCBob3cgdGhlIGxheW91
dCBzaG91bGQKbG9vayBsaWtlLCBidXQgaXMgdW50ZXN0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBGbG9y
aWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBDb3N0
aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgotLS0KIGFyY2gvYXJtL2FybS9pbmNsdWRl
L3VrL2FzbS90bHMuaCAgICB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9hcm0v
YXJtNjQvaW5jbHVkZS91ay9hc20vdGxzLmggIHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwogYXJjaC94ODYveDg2XzY0L2luY2x1ZGUvdWsvYXNtL3Rscy5oIHwgNjggKysrKysrKysr
KysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWsvYXJjaC90bHMuaCAgICAgICAgICAgICAgICB8
IDQwICsrKysrKysrKysrKysrKysKIHBsYXQva3ZtL2FybS9saW5rNjQubGRzLlMgICAgICAgICAg
ICB8ICAyICsKIHBsYXQveGVuL2FybS9saW5rMzIubGRzLlMgICAgICAgICAgICB8ICAyICsKIDYg
ZmlsZXMgY2hhbmdlZCwgMjQ2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo
L2FybS9hcm0vaW5jbHVkZS91ay9hc20vdGxzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy
bS9hcm02NC9pbmNsdWRlL3VrL2FzbS90bHMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2
L3g4Nl82NC9pbmNsdWRlL3VrL2FzbS90bHMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv
dWsvYXJjaC90bHMuaAoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2FybS9pbmNsdWRlL3VrL2FzbS90
bHMuaCBiL2FyY2gvYXJtL2FybS9pbmNsdWRlL3VrL2FzbS90bHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMC4uNjdkNmYyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2Fy
bS9hcm0vaW5jbHVkZS91ay9hc20vdGxzLmgKQEAgLTAsMCArMSw2MiBAQAorLyogU1BEWC1MaWNl
bnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IEZsb3JpYW4g
U2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KKyAqCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTksIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdo
dCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVE
IElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1VLQVJDSF9UTFNfSF9fCisjZXJyb3IgRG8g
bm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZGlyZWN0bHkKKyNlbmRpZgorCisjZXJyb3IgVGhyZWFk
LWxvY2FsIHN0b3JhZ2Ugbm90IGltcGxlbWVudGVkIGZvciBhcm0zMiEKKworI2luY2x1ZGUgPHVr
L2FyY2gvdHlwZXMuaD4KKworZXh0ZXJuIGNoYXIgX3Rsc19zdGFydFtdLCBfZXRkYXRhW10sIF90
bHNfZW5kW107CisKK3N0YXRpYyBpbmxpbmUgX19zeiB1a2FyY2hfdGxzX2FyZWFfc2l6ZSh2b2lk
KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIF9fc3ogdWthcmNoX3Rsc19hcmVh
X2FsaWduKHZvaWQpCit7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1a2Fy
Y2hfdGxzX2NvcHkodm9pZCAqdGxzX2FyZWEpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAq
dWthcmNoX3Rsc19wb2ludGVyKHZvaWQgKnRsc19hcmVhKQoreworCXJldHVybiBOVUxMOworfQpk
aWZmIC0tZ2l0IGEvYXJjaC9hcm0vYXJtNjQvaW5jbHVkZS91ay9hc20vdGxzLmggYi9hcmNoL2Fy
bS9hcm02NC9pbmNsdWRlL3VrL2FzbS90bHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMC4uODI5MzM0ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9hcm02NC9pbmNs
dWRlL3VrL2FzbS90bHMuaApAQCAtMCwwICsxLDcyIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogRmxvcmlhbiBTY2htaWR0IDxm
bG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVD
IEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdB
WS4KKyAqLworCisjaWZuZGVmIF9fVUtBUkNIX1RMU19IX18KKyNlcnJvciBEbyBub3QgaW5jbHVk
ZSB0aGlzIGhlYWRlciBkaXJlY3RseQorI2VuZGlmCisKKyN3YXJuaW5nIFRocmVhZC1sb2NhbCBz
dG9yYWdlIGhhcyBub3QgYmVlbiB0ZXN0ZWQgb24gYWFyY2g2NCEKKworI2luY2x1ZGUgPHVrL2Fy
Y2gvdHlwZXMuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworZXh0ZXJuIGNoYXIgX3Rsc19zdGFy
dFtdLCBfZXRkYXRhW10sIF90bHNfZW5kW107CisKK3N0YXRpYyBpbmxpbmUgX19zeiB1a2FyY2hf
dGxzX2FyZWFfc2l6ZSh2b2lkKQoreworCS8qIGFhcmNoNjQgQUJJIGFkZHMgMTYgYnl0ZXMgb2Yg
VENCIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFRMUyBhcmVhLAorCSAqIGZvbGxvd2VkIGJ5IHRo
ZSBhY3R1YWwgVExTIGRhdGEuCisJICovCisJcmV0dXJuIF90bHNfZW5kIC0gX3Rsc19zdGFydCAr
IDE2OworfQorCitzdGF0aWMgaW5saW5lIF9fc3ogdWthcmNoX3Rsc19hcmVhX2FsaWduKHZvaWQp
Cit7CisJcmV0dXJuIDg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1a2FyY2hfdGxzX2FyZWFf
Y29weSh2b2lkICp0bHNfYXJlYSkKK3sKKwlfX3N6IHRsc19kYXRhX2xlbiA9IF9ldGRhdGEgLSBf
dGxzX3N0YXJ0OworCV9fc3ogdGxzX2Jzc19sZW4gPSBfdGxzX2VuZCAtIF9ldGRhdGE7CisKKwlt
ZW1zZXQodGxzX2FyZWEsIDAsIDE2KTsKKwltZW1jcHkodGxzX2FyZWEgKyAxNiwgX3Rsc19zdGFy
dCwgdGxzX2RhdGFfbGVuKTsKKwltZW1zZXQodGxzX2FyZWEgKyB0bHNfZGF0YV9sZW4gKyAxNiwg
MCwgdGxzX2Jzc19sZW4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgKnVrYXJjaF90bHNfcG9p
bnRlcih2b2lkICp0bHNfYXJlYSkKK3sKKwlyZXR1cm4gdGxzX2FyZWE7Cit9CmRpZmYgLS1naXQg
YS9hcmNoL3g4Ni94ODZfNjQvaW5jbHVkZS91ay9hc20vdGxzLmggYi9hcmNoL3g4Ni94ODZfNjQv
aW5jbHVkZS91ay9hc20vdGxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu
LjcwYmJjMWQxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC94ODYveDg2XzY0L2luY2x1ZGUvdWsv
YXNtL3Rscy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8KKy8qCisgKiBBdXRob3JzOiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4u
c2NobWlkdEBuZWNsYWIuZXU+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3Bl
IEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1Ig
Q09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElT
IEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICov
CisKKyNpZm5kZWYgX19VS0FSQ0hfVExTX0hfXworI2Vycm9yIERvIG5vdCBpbmNsdWRlIHRoaXMg
aGVhZGVyIGRpcmVjdGx5CisjZW5kaWYKKworI2luY2x1ZGUgPHVrL2FyY2gvdHlwZXMuaD4KKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKworZXh0ZXJuIGNoYXIgX3Rsc19zdGFydFtdLCBfZXRkYXRhW10s
IF90bHNfZW5kW107CisKK3N0YXRpYyBpbmxpbmUgX19zeiB1a2FyY2hfdGxzX2FyZWFfc2l6ZSh2
b2lkKQoreworCS8qIHg4Nl82NCBBQkkgcmVxdWlyZXMgdGhhdCBmczolMCBjb250YWlucyB0aGUg
YWRkcmVzcyBvZiBpdHNlbGYsIHRvCisJICogYWxsb3cgY2VydGFpbiBvcHRpbWl6YXRpb25zLiBI
ZW5jZSwgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgc2l6ZSBvZgorCSAqIHRoZSBUTFMgYXJlYSwg
cGx1cyA4IGJ5dGVzLgorCSAqLworCXJldHVybiBfdGxzX2VuZCAtIF90bHNfc3RhcnQgKyA4Owor
fQorCitzdGF0aWMgaW5saW5lIF9fc3ogdWthcmNoX3Rsc19hcmVhX2FsaWduKHZvaWQpCit7CisJ
cmV0dXJuIDg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1a2FyY2hfdGxzX2FyZWFfY29weSh2
b2lkICp0bHNfYXJlYSkKK3sKKwlfX3N6IHRsc19sZW4gPSBfdGxzX2VuZCAtIF90bHNfc3RhcnQ7
CisJX19zeiB0bHNfZGF0YV9sZW4gPSBfZXRkYXRhIC0gX3Rsc19zdGFydDsKKwlfX3N6IHRsc19i
c3NfbGVuID0gX3Rsc19lbmQgLSBfZXRkYXRhOworCisJbWVtY3B5KHRsc19hcmVhLCBfdGxzX3N0
YXJ0LCB0bHNfZGF0YV9sZW4pOworCW1lbXNldCh0bHNfYXJlYSArIHRsc19kYXRhX2xlbiwgMCwg
dGxzX2Jzc19sZW4pOworCS8qIHg4Nl82NCBBQkkgcmVxdWlyZXMgdGhhdCBmczolMCBjb250YWlu
cyB0aGUgYWRkcmVzcyBvZiBpdHNlbGYuICovCisJKigoX191cHRyICopKHRsc19hcmVhICsgdGxz
X2xlbikpID0gKF9fdXB0cikodGxzX2FyZWEgKyB0bHNfbGVuKTsKK30KZGlmZiAtLWdpdCBhL2lu
Y2x1ZGUvdWsvYXJjaC90bHMuaCBiL2luY2x1ZGUvdWsvYXJjaC90bHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYmZiY2Q1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNs
dWRlL3VrL2FyY2gvdGxzLmgKQEAgLTAsMCArMSw0MCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50
aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IEZsb3JpYW4gU2NobWlkdCA8
Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5F
QyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIg
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBX
QVkuCisgKi8KKworI2lmbmRlZiBfX1VLQVJDSF9UTFNfSF9fCisjZGVmaW5lIF9fVUtBUkNIX1RM
U19IX18KKworI2luY2x1ZGUgPHVrL2FzbS90bHMuaD4KKworI2VuZGlmIC8qIF9fVUtBUkNIX1RM
U19IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9saW5rNjQubGRzLlMgYi9wbGF0L2t2
bS9hcm0vbGluazY0Lmxkcy5TCmluZGV4IDc1M2QxNjk2Li5kMDhhYmU0OCAxMDA2NDQKLS0tIGEv
cGxhdC9rdm0vYXJtL2xpbms2NC5sZHMuUworKysgYi9wbGF0L2t2bS9hcm0vbGluazY0Lmxkcy5T
CkBAIC0xMDMsNiArMTAzLDggQEAgU0VDVElPTlMgewogCV9lY3RvcnMgPSAuOwogCS4gPSBBTElH
TihfX1BBR0VfU0laRSk7CiAKKwlUTFNfU0VDVElPTlMKKwogCS8qIFJlYWQtd3JpdGUgZGF0YSB0
aGF0IGlzIGluaXRpYWxpemVkIGV4cGxpY2l0bHkgaW4gY29kZSAqLwogCV9kYXRhID0gLjsKIAku
ZGF0YSA6CmRpZmYgLS1naXQgYS9wbGF0L3hlbi9hcm0vbGluazMyLmxkcy5TIGIvcGxhdC94ZW4v
YXJtL2xpbmszMi5sZHMuUwppbmRleCA2NDJiNWViMy4uY2FkZTcwYTEgMTAwNjQ0Ci0tLSBhL3Bs
YXQveGVuL2FybS9saW5rMzIubGRzLlMKKysrIGIvcGxhdC94ZW4vYXJtL2xpbmszMi5sZHMuUwpA
QCAtODEsNiArODEsOCBAQCBTRUNUSU9OUwogCS4gPSBBTElHTihfX1BBR0VfU0laRSk7CiAJX2Vj
dG9ycyA9IC47CiAKKwlUTFNfU0VDVElPTlMKKwogCS8qIERhdGEgKi8KIAlfZGF0YSA9IC47CiAJ
LmRhdGEgOiB7Ci0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXJaQ-0004dn-Nw; Sun, 02 Jun 2019 06:03:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaQ-0004de-5z
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:18 +0000
X-Inumbo-ID: 1c6fdf71-84fc-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1c6fdf71-84fc-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 06:03:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 41E67F201F;
 Sun,  2 Jun 2019 08:03:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Kk206T1hsjT0; Sun,  2 Jun 2019 08:03:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1EB3DF2003;
 Sun,  2 Jun 2019 08:03:11 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:03:10 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:35 +0100
Message-ID: <20190602060236.6597-7-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 6/7] lib/uksched: create and
 delete thread-local storage area
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

TW9zdCBvZiB0aGUgYWN0dWFsIFRMUyBzZXR1cCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIHNv
IHNjaGVkLmMgYW5kCnRocmVhZC5jIGNhbGwgZnVuY3Rpb25zIGZyb20gYSBoZWFkZXIgZmlsZSBw
cm92aWRlZCBpbiBhcmNoLy4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlh
bi5zY2htaWR0QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVw
dUBjcy5wdWIucm8+Ci0tLQogbGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oICB8ICAzICsr
KwogbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWQuaCB8ICAzICsrLQogbGliL3Vrc2NoZWQv
c2NoZWQuYyAgICAgICAgICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t
LQogbGliL3Vrc2NoZWQvdGhyZWFkLmMgICAgICAgICAgICB8ICA4ICsrKysrLS0tCiA0IGZpbGVz
IGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
bGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oIGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay9z
Y2hlZC5oCmluZGV4IGY5ZGMxNmQwLi41Njc0Y2M5NiAxMDA2NDQKLS0tIGEvbGliL3Vrc2NoZWQv
aW5jbHVkZS91ay9zY2hlZC5oCisrKyBiL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvc2NoZWQuaApA
QCAtNTAsNiArNTAsOSBAQCBzdHJ1Y3QgdWtfc2NoZWQ7CiAKIHN0cnVjdCB1a19zY2hlZCAqdWtf
c2NoZWRfZGVmYXVsdF9pbml0KHN0cnVjdCB1a19hbGxvYyAqYSk7CiAKK2V4dGVybiBjaGFyIF90
bHNfc3RhcnRbXSwgX2V0ZGF0YVtdLCBfdGxzX2VuZFtdOworI2RlZmluZSBoYXZlX3Rsc19hcmVh
KCkgKF90bHNfZW5kIC0gX3Rsc19zdGFydCkKKwogZXh0ZXJuIHN0cnVjdCB1a19zY2hlZCAqdWtf
c2NoZWRfaGVhZDsKIGludCB1a19zY2hlZF9yZWdpc3RlcihzdHJ1Y3QgdWtfc2NoZWQgKnMpOwog
c3RydWN0IHVrX3NjaGVkICp1a19zY2hlZF9nZXRfZGVmYXVsdCh2b2lkKTsKZGlmZiAtLWdpdCBh
L2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvdGhyZWFkLmggYi9saWIvdWtzY2hlZC9pbmNsdWRlL3Vr
L3RocmVhZC5oCmluZGV4IDcxZTM5MjI1Li44Y2IzZDZiNiAxMDA2NDQKLS0tIGEvbGliL3Vrc2No
ZWQvaW5jbHVkZS91ay90aHJlYWQuaAorKysgYi9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3RocmVh
ZC5oCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCB1a19zY2hlZDsKIHN0cnVjdCB1a190aHJlYWQg
ewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJdm9pZCAqc3RhY2s7CisJdm9pZCAqdGxzOwogCXZvaWQg
KmN0eDsKIAlVS19UQUlMUV9FTlRSWShzdHJ1Y3QgdWtfdGhyZWFkKSB0aHJlYWRfbGlzdDsKIAl1
aW50MzJfdCBmbGFnczsKQEAgLTEwNiw3ICsxMDcsNyBAQCBzdHJ1Y3QgdWtfdGhyZWFkICp1a190
aHJlYWRfY3VycmVudCh2b2lkKQogCiBpbnQgdWtfdGhyZWFkX2luaXQoc3RydWN0IHVrX3RocmVh
ZCAqdGhyZWFkLAogCQlzdHJ1Y3QgdWtwbGF0X2N0eF9jYWxsYmFja3MgKmNicywgc3RydWN0IHVr
X2FsbG9jICphbGxvY2F0b3IsCi0JCWNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnN0YWNrLAorCQlj
b25zdCBjaGFyICpuYW1lLCB2b2lkICpzdGFjaywgdm9pZCAqdGxzLAogCQl2b2lkICgqZnVuY3Rp
b24pKHZvaWQgKiksIHZvaWQgKmFyZyk7CiB2b2lkIHVrX3RocmVhZF9maW5pKHN0cnVjdCB1a190
aHJlYWQgKnRocmVhZCwKIAkJc3RydWN0IHVrX2FsbG9jICphbGxvY2F0b3IpOwpkaWZmIC0tZ2l0
IGEvbGliL3Vrc2NoZWQvc2NoZWQuYyBiL2xpYi91a3NjaGVkL3NjaGVkLmMKaW5kZXggZTA0MTY3
MzYuLmEyNTA1NDc5IDEwMDY0NAotLS0gYS9saWIvdWtzY2hlZC9zY2hlZC5jCisrKyBiL2xpYi91
a3NjaGVkL3NjaGVkLmMKQEAgLTMzLDEwICszMywxMiBAQAogICovCiAKICNpbmNsdWRlIDxzdGRs
aWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx1ay9wbGF0L2NvbmZpZy5oPgog
I2luY2x1ZGUgPHVrL3BsYXQvdGhyZWFkLmg+CiAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KICNpbmNs
dWRlIDx1ay9zY2hlZC5oPgorI2luY2x1ZGUgPHVrL2FyY2gvdGxzLmg+CiAjaWYgQ09ORklHX0xJ
QlVLU0NIRURDT09QCiAjaW5jbHVkZSA8dWsvc2NoZWRjb29wLmg+CiAjZW5kaWYKQEAgLTE0OCwy
NyArMTUwLDQ1IEBAIHN0YXRpYyB2b2lkICpjcmVhdGVfc3RhY2soc3RydWN0IHVrX2FsbG9jICph
bGxvY2F0b3IpCiAJcmV0dXJuIHN0YWNrOwogfQogCitzdGF0aWMgdm9pZCAqdWtfdGhyZWFkX3Rs
c19jcmVhdGUoc3RydWN0IHVrX2FsbG9jICphbGxvY2F0b3IpCit7CisJdm9pZCAqdGxzOworCisJ
aWYgKHVrX3Bvc2l4X21lbWFsaWduKGFsbG9jYXRvciwgJnRscywgdWthcmNoX3Rsc19hcmVhX2Fs
aWduKCksCisJCQkJdWthcmNoX3Rsc19hcmVhX3NpemUoKSkpCisJCXJldHVybiBOVUxMOworCXVr
YXJjaF90bHNfYXJlYV9jb3B5KHRscyk7CisJcmV0dXJuIHRsczsKK30KKwogdm9pZCB1a19zY2hl
ZF9pZGxlX2luaXQoc3RydWN0IHVrX3NjaGVkICpzY2hlZCwKIAkJdm9pZCAqc3RhY2ssIHZvaWQg
KCpmdW5jdGlvbikodm9pZCAqKSkKIHsKIAlzdHJ1Y3QgdWtfdGhyZWFkICppZGxlOwogCWludCBy
YzsKKwl2b2lkICp0bHMgPSBOVUxMOwogCiAJVUtfQVNTRVJUKHNjaGVkICE9IE5VTEwpOwogCiAJ
aWYgKHN0YWNrID09IE5VTEwpCiAJCXN0YWNrID0gY3JlYXRlX3N0YWNrKHNjaGVkLT5hbGxvY2F0
b3IpOwogCVVLX0FTU0VSVChzdGFjayAhPSBOVUxMKTsKKwlpZiAoaGF2ZV90bHNfYXJlYSgpICYm
ICEodGxzID0gdWtfdGhyZWFkX3Rsc19jcmVhdGUoc2NoZWQtPmFsbG9jYXRvcikpKQorCQlnb3Rv
IG91dF9jcmFzaDsKIAogCWlkbGUgPSAmc2NoZWQtPmlkbGU7CiAKIAlyYyA9IHVrX3RocmVhZF9p
bml0KGlkbGUsCiAJCQkmc2NoZWQtPnBsYXRfY3R4X2Nicywgc2NoZWQtPmFsbG9jYXRvciwKLQkJ
CSJJZGxlIiwgc3RhY2ssIGZ1bmN0aW9uLCBOVUxMKTsKKwkJCSJJZGxlIiwgc3RhY2ssIHRscywg
ZnVuY3Rpb24sIE5VTEwpOwogCWlmIChyYykKLQkJVUtfQ1JBU0goIkVycm9yIGluaXRpYWxpemlu
ZyBpZGxlIHRocmVhZC4iKTsKKwkJZ290byBvdXRfY3Jhc2g7CiAKIAlpZGxlLT5zY2hlZCA9IHNj
aGVkOworCXJldHVybjsKKworb3V0X2NyYXNoOgorCVVLX0NSQVNIKCJFcnJvciBpbml0aWFsaXpp
bmcgdGhlIGlkbGUgdGhyZWFkLiIpOwogfQogCiBzdHJ1Y3QgdWtfdGhyZWFkICp1a19zY2hlZF90
aHJlYWRfY3JlYXRlKHN0cnVjdCB1a19zY2hlZCAqc2NoZWQsCkBAIC0xNzgsNiArMTk4LDcgQEAg
c3RydWN0IHVrX3RocmVhZCAqdWtfc2NoZWRfdGhyZWFkX2NyZWF0ZShzdHJ1Y3QgdWtfc2NoZWQg
KnNjaGVkLAogCXN0cnVjdCB1a190aHJlYWQgKnRocmVhZCA9IE5VTEw7CiAJdm9pZCAqc3RhY2sg
PSBOVUxMOwogCWludCByYzsKKwl2b2lkICp0bHMgPSBOVUxMOwogCiAJdGhyZWFkID0gdWtfbWFs
bG9jKHNjaGVkLT5hbGxvY2F0b3IsIHNpemVvZihzdHJ1Y3QgdWtfdGhyZWFkKSk7CiAJaWYgKHRo
cmVhZCA9PSBOVUxMKSB7CkBAIC0xOTEsMTAgKzIxMiwxMiBAQCBzdHJ1Y3QgdWtfdGhyZWFkICp1
a19zY2hlZF90aHJlYWRfY3JlYXRlKHN0cnVjdCB1a19zY2hlZCAqc2NoZWQsCiAJc3RhY2sgPSBj
cmVhdGVfc3RhY2soc2NoZWQtPmFsbG9jYXRvcik7CiAJaWYgKHN0YWNrID09IE5VTEwpCiAJCWdv
dG8gZXJyOworCWlmIChoYXZlX3Rsc19hcmVhKCkgJiYgISh0bHMgPSB1a190aHJlYWRfdGxzX2Ny
ZWF0ZShzY2hlZC0+YWxsb2NhdG9yKSkpCisJCWdvdG8gZXJyOwogCiAJcmMgPSB1a190aHJlYWRf
aW5pdCh0aHJlYWQsCiAJCQkmc2NoZWQtPnBsYXRfY3R4X2Nicywgc2NoZWQtPmFsbG9jYXRvciwK
LQkJCW5hbWUsIHN0YWNrLCBmdW5jdGlvbiwgYXJnKTsKKwkJCW5hbWUsIHN0YWNrLCB0bHMsIGZ1
bmN0aW9uLCBhcmcpOwogCWlmIChyYykKIAkJZ290byBlcnI7CiAKQEAgLTIwNyw2ICsyMzAsOCBA
QCBzdHJ1Y3QgdWtfdGhyZWFkICp1a19zY2hlZF90aHJlYWRfY3JlYXRlKHN0cnVjdCB1a19zY2hl
ZCAqc2NoZWQsCiBlcnJfYWRkOgogCXVrX3RocmVhZF9maW5pKHRocmVhZCwgc2NoZWQtPmFsbG9j
YXRvcik7CiBlcnI6CisJaWYgKHRscykKKwkJdWtfZnJlZShzY2hlZC0+YWxsb2NhdG9yLCB0bHMp
OwogCWlmIChzdGFjaykKIAkJdWtfZnJlZShzY2hlZC0+YWxsb2NhdG9yLCBzdGFjayk7CiAJaWYg
KHRocmVhZCkKQEAgLTIxOSwxMSArMjQ0LDE1IEBAIHZvaWQgdWtfc2NoZWRfdGhyZWFkX2Rlc3Ry
b3koc3RydWN0IHVrX3NjaGVkICpzY2hlZCwgc3RydWN0IHVrX3RocmVhZCAqdGhyZWFkKQogewog
CVVLX0FTU0VSVChzY2hlZCAhPSBOVUxMKTsKIAlVS19BU1NFUlQodGhyZWFkICE9IE5VTEwpOwor
CVVLX0FTU0VSVCh0aHJlYWQtPnN0YWNrICE9IE5VTEwpOworCVVLX0FTU0VSVCghaGF2ZV90bHNf
YXJlYSgpIHx8IHRocmVhZC0+dGxzICE9IE5VTEwpOwogCVVLX0FTU0VSVChpc19leGl0ZWQodGhy
ZWFkKSk7CiAKIAlVS19UQUlMUV9SRU1PVkUoJnNjaGVkLT5leGl0ZWRfdGhyZWFkcywgdGhyZWFk
LCB0aHJlYWRfbGlzdCk7CiAJdWtfdGhyZWFkX2ZpbmkodGhyZWFkLCBzY2hlZC0+YWxsb2NhdG9y
KTsKIAl1a19wZnJlZShzY2hlZC0+YWxsb2NhdG9yLCB0aHJlYWQtPnN0YWNrLCBTVEFDS19TSVpF
X1BBR0VfT1JERVIpOworCWlmICh0aHJlYWQtPnRscykKKwkJdWtfZnJlZShzY2hlZC0+YWxsb2Nh
dG9yLCB0aHJlYWQtPnRscyk7CiAJdWtfZnJlZShzY2hlZC0+YWxsb2NhdG9yLCB0aHJlYWQpOwog
fQogCmRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC90aHJlYWQuYyBiL2xpYi91a3NjaGVkL3RocmVh
ZC5jCmluZGV4IDc0MDBiYWVlLi43ZDdlZTAxNiAxMDA2NDQKLS0tIGEvbGliL3Vrc2NoZWQvdGhy
ZWFkLmMKKysrIGIvbGliL3Vrc2NoZWQvdGhyZWFkLmMKQEAgLTg4LDEzICs4OCwxNCBAQCBzdHJ1
Y3QgX3JlZW50ICpfX2dldHJlZW50KHZvaWQpCiAKIGludCB1a190aHJlYWRfaW5pdChzdHJ1Y3Qg
dWtfdGhyZWFkICp0aHJlYWQsCiAJCXN0cnVjdCB1a3BsYXRfY3R4X2NhbGxiYWNrcyAqY2JzLCBz
dHJ1Y3QgdWtfYWxsb2MgKmFsbG9jYXRvciwKLQkJY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqc3Rh
Y2ssCisJCWNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnN0YWNrLCB2b2lkICp0bHMsCiAJCXZvaWQg
KCpmdW5jdGlvbikodm9pZCAqKSwgdm9pZCAqYXJnKQogewogCXVuc2lnbmVkIGxvbmcgc3A7CiAK
IAlVS19BU1NFUlQodGhyZWFkICE9IE5VTEwpOwogCVVLX0FTU0VSVChzdGFjayAhPSBOVUxMKTsK
KwlVS19BU1NFUlQoIWhhdmVfdGxzX2FyZWEoKSB8fCB0bHMgIT0gTlVMTCk7CiAKIAkvKiBTYXZl
IHBvaW50ZXIgdG8gdGhlIHRocmVhZCBvbiB0aGUgc3RhY2sgdG8gZ2V0IGN1cnJlbnQgdGhyZWFk
ICovCiAJKigodW5zaWduZWQgbG9uZyAqKSBzdGFjaykgPSAodW5zaWduZWQgbG9uZykgdGhyZWFk
OwpAQCAtMTA4LDYgKzEwOSw3IEBAIGludCB1a190aHJlYWRfaW5pdChzdHJ1Y3QgdWtfdGhyZWFk
ICp0aHJlYWQsCiAKIAl0aHJlYWQtPm5hbWUgPSBuYW1lOwogCXRocmVhZC0+c3RhY2sgPSBzdGFj
azsKKwl0aHJlYWQtPnRscyA9IHRsczsKIAogCS8qIE5vdCBydW5uYWJsZSwgbm90IGV4aXRlZCwg
bm90IHNsZWVwaW5nICovCiAJdGhyZWFkLT5mbGFncyA9IDA7CkBAIC0xMjEsOCArMTIzLDggQEAg
aW50IHVrX3RocmVhZF9pbml0KHN0cnVjdCB1a190aHJlYWQgKnRocmVhZCwKIAlyZWVudF9pbml0
KCZ0aHJlYWQtPnJlZW50KTsKICNlbmRpZgogCi0JdWtfcHJfaW5mbygiVGhyZWFkIFwiJXNcIjog
cG9pbnRlcjogJXAsIHN0YWNrOiAlcFxuIiwKLQkJICAgbmFtZSwgdGhyZWFkLCB0aHJlYWQtPnN0
YWNrKTsKKwl1a19wcl9pbmZvKCJUaHJlYWQgXCIlc1wiOiBwb2ludGVyOiAlcCwgc3RhY2s6ICVw
LCB0bHM6ICVwXG4iLAorCQkgICBuYW1lLCB0aHJlYWQsIHRocmVhZC0+c3RhY2ssIHRocmVhZC0+
dGxzKTsKIAogCXJldHVybiAwOwogfQotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:03:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:03: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 1hXJaR-0004eF-PW; Sun, 02 Jun 2019 06:03:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJaR-0004e2-2b
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:03:19 +0000
X-Inumbo-ID: 1d2851ca-84fc-11e9-ae1a-4354f89117c2
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1d2851ca-84fc-11e9-ae1a-4354f89117c2;
 Sun, 02 Jun 2019 06:03:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 80F51105312;
 Sun,  2 Jun 2019 08:03:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id d-3pT8XDbhyi; Sun,  2 Jun 2019 08:03:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F3109105105;
 Sun,  2 Jun 2019 08:03:15 +0200 (CEST)
Received: from vortex.office.hd (10.7.0.19) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun
 2019 08:03:15 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 07:02:36 +0100
Message-ID: <20190602060236.6597-8-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190602060236.6597-1-florian.schmidt@neclab.eu>
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.19]
Subject: [Minios-devel] [UNIKRAFT PATCH v4 7/7] plat: switch thread-local
 storage area on 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: Florian Schmidt <florian.schmidt@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.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>

T24geDg2LCB0aGUgc3RhbmRhcmQgd2F5IGlzIHdyaXRpbmcgdG8gYW4gTVNSIHRvIHN3aXRjaCB0
aGUgZnMgcmVnaXN0ZXIsCndoaWNoIGlzIHVzZWQgYXMgdGhlIHBvaW50ZXIgdG8gdGhlIFRMUyBh
cmVhLiBIb3dldmVyLCB0aGlzIGlzIGEKcHJpdmlsZWdlZCBpbnN0cnVjdGlvbiwgc28gZm9yIHRo
ZSBsaW51eHUgcGxhdGZvcm0sIHVzZSBhIHN5c3RlbSBjYWxsCnByb3ZpZGVkIGJ5IExpbnV4IHRo
YXQgZG9lcyBleGFjdGx5IHRoYXQgaW5zdGVhZC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2No
bWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogYXJjaC94ODYveDg2XzY0L2luY2x1ZGUvdWsv
YXNtL3Rscy5oICAgICAgICB8ICA1ICsrKwogaW5jbHVkZS91ay9wbGF0L3RocmVhZC5oICAgICAg
ICAgICAgICAgICAgICB8ICA4ICsrLS0KIGxpYi91a3NjaGVkL3RocmVhZC5jICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgNSArKy0KIHBsYXQvY29tbW9uL2luY2x1ZGUvc3dfY3R4LmggICAgICAg
ICAgICAgICAgfCAgMSArCiBwbGF0L2NvbW1vbi9pbmNsdWRlL3Rscy5oICAgICAgICAgICAgICAg
ICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysKIHBsYXQvY29tbW9uL2luY2x1ZGUveDg2L2Nw
dV9kZWZzLmggICAgICAgICAgfCAgNSArKysKIHBsYXQvY29tbW9uL2luY2x1ZGUveDg2L3Rscy5o
ICAgICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKysrCiBwbGF0L2NvbW1vbi9zd19j
dHguYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0KIHBsYXQvbGludXh1L2luY2x1
ZGUvbGludXh1L3N5c2NhbGwteDg2XzY0LmggfCAgMSArCiBwbGF0L2xpbnV4dS9pbmNsdWRlL2xp
bnV4dS9zeXNjYWxsLmggICAgICAgIHwgIDggKysrKwogcGxhdC9saW51eHUvaW5jbHVkZS90bHMu
aCAgICAgICAgICAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKwogMTEgZmlsZXMg
Y2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgcGxhdC9jb21tb24vaW5jbHVkZS90bHMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQv
Y29tbW9uL2luY2x1ZGUveDg2L3Rscy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9saW51eHUv
aW5jbHVkZS90bHMuaAoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3g4Nl82NC9pbmNsdWRlL3VrL2Fz
bS90bHMuaCBiL2FyY2gveDg2L3g4Nl82NC9pbmNsdWRlL3VrL2FzbS90bHMuaAppbmRleCA3MGJi
YzFkMS4uMTE2ZDhhMWQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3g4Nl82NC9pbmNsdWRlL3VrL2Fz
bS90bHMuaAorKysgYi9hcmNoL3g4Ni94ODZfNjQvaW5jbHVkZS91ay9hc20vdGxzLmgKQEAgLTY2
LDMgKzY2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHVrYXJjaF90bHNfYXJlYV9jb3B5KHZvaWQg
KnRsc19hcmVhKQogCS8qIHg4Nl82NCBBQkkgcmVxdWlyZXMgdGhhdCBmczolMCBjb250YWlucyB0
aGUgYWRkcmVzcyBvZiBpdHNlbGYuICovCiAJKigoX191cHRyICopKHRsc19hcmVhICsgdGxzX2xl
bikpID0gKF9fdXB0cikodGxzX2FyZWEgKyB0bHNfbGVuKTsKIH0KKworc3RhdGljIGlubGluZSB2
b2lkICp1a2FyY2hfdGxzX3BvaW50ZXIodm9pZCAqdGxzX2FyZWEpCit7CisJcmV0dXJuIHRsc19h
cmVhICsgKF90bHNfZW5kIC0gX3Rsc19zdGFydCk7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3Vr
L3BsYXQvdGhyZWFkLmggYi9pbmNsdWRlL3VrL3BsYXQvdGhyZWFkLmgKaW5kZXggNjlmYzVlMjgu
LjRiMzQ5ZWE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VrL3BsYXQvdGhyZWFkLmgKKysrIGIvaW5j
bHVkZS91ay9wbGF0L3RocmVhZC5oCkBAIC01MSw3ICs1MSw4IEBAIGVudW0gdWtwbGF0X2N0eF90
eXBlIHsKIHN0cnVjdCB1a19hbGxvYzsKIAogdHlwZWRlZiB2b2lkICooKnVrcGxhdF9jdHhfY3Jl
YXRlX2Z1bmNfdCkKLQkJKHN0cnVjdCB1a19hbGxvYyAqYWxsb2NhdG9yLCB1bnNpZ25lZCBsb25n
IHNwKTsKKwkJKHN0cnVjdCB1a19hbGxvYyAqYWxsb2NhdG9yLCB1bnNpZ25lZCBsb25nIHNwLAor
CQkgdW5zaWduZWQgbG9uZyB0bHNwKTsKIHR5cGVkZWYgdm9pZCAgKCp1a3BsYXRfY3R4X3N0YXJ0
X2Z1bmNfdCkKIAkJKHZvaWQgKmN0eCk7CiB0eXBlZGVmIHZvaWQgICgqdWtwbGF0X2N0eF9zd2l0
Y2hfZnVuY190KQpAQCAtNzIsMTIgKzczLDEzIEBAIGludCB1a3BsYXRfY3R4X2NhbGxiYWNrc19p
bml0KHN0cnVjdCB1a3BsYXRfY3R4X2NhbGxiYWNrcyAqY3R4X2NicywKIAogc3RhdGljIGlubGlu
ZQogdm9pZCAqdWtwbGF0X3RocmVhZF9jdHhfY3JlYXRlKHN0cnVjdCB1a3BsYXRfY3R4X2NhbGxi
YWNrcyAqY2JzLAotCQlzdHJ1Y3QgdWtfYWxsb2MgKmFsbG9jYXRvciwgdW5zaWduZWQgbG9uZyBz
cCkKKwkJc3RydWN0IHVrX2FsbG9jICphbGxvY2F0b3IsIHVuc2lnbmVkIGxvbmcgc3AsCisJCXVu
c2lnbmVkIGxvbmcgdGxzcCkKIHsKIAlVS19BU1NFUlQoY2JzICE9IE5VTEwpOwogCVVLX0FTU0VS
VChhbGxvY2F0b3IgIT0gTlVMTCk7CiAKLQlyZXR1cm4gY2JzLT5jcmVhdGVfY2IoYWxsb2NhdG9y
LCBzcCk7CisJcmV0dXJuIGNicy0+Y3JlYXRlX2NiKGFsbG9jYXRvciwgc3AsIHRsc3ApOwogfQog
CiB2b2lkIHVrcGxhdF90aHJlYWRfY3R4X2Rlc3Ryb3koc3RydWN0IHVrX2FsbG9jICphbGxvY2F0
b3IsIHZvaWQgKmN0eCk7CmRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC90aHJlYWQuYyBiL2xpYi91
a3NjaGVkL3RocmVhZC5jCmluZGV4IDdkN2VlMDE2Li42NGI2YTJmZCAxMDA2NDQKLS0tIGEvbGli
L3Vrc2NoZWQvdGhyZWFkLmMKKysrIGIvbGliL3Vrc2NoZWQvdGhyZWFkLmMKQEAgLTM5LDcgKzM5
LDcgQEAKICNpbmNsdWRlIDx1ay93YWl0Lmg+CiAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KICNpbmNs
dWRlIDx1ay9hc3NlcnQuaD4KLQorI2luY2x1ZGUgPHVrL2FyY2gvdGxzLmg+CiAKIC8qIFB1c2hl
cyB0aGUgc3BlY2lmaWVkIHZhbHVlIG9udG8gdGhlIHN0YWNrIG9mIHRoZSBzcGVjaWZpZWQgdGhy
ZWFkICovCiBzdGF0aWMgdm9pZCBzdGFja19wdXNoKHVuc2lnbmVkIGxvbmcgKnNwLCB1bnNpZ25l
ZCBsb25nIHZhbHVlKQpAQCAtMTAzLDcgKzEwMyw4IEBAIGludCB1a190aHJlYWRfaW5pdChzdHJ1
Y3QgdWtfdGhyZWFkICp0aHJlYWQsCiAJaW5pdF9zcCgmc3AsIHN0YWNrLCBmdW5jdGlvbiwgYXJn
KTsKIAogCS8qIENhbGwgcGxhdGZvcm0gc3BlY2lmaWMgc2V0dXAuICovCi0JdGhyZWFkLT5jdHgg
PSB1a3BsYXRfdGhyZWFkX2N0eF9jcmVhdGUoY2JzLCBhbGxvY2F0b3IsIHNwKTsKKwl0aHJlYWQt
PmN0eCA9IHVrcGxhdF90aHJlYWRfY3R4X2NyZWF0ZShjYnMsIGFsbG9jYXRvciwgc3AsCisJCQko
dWludHB0cl90KXVrYXJjaF90bHNfcG9pbnRlcih0bHMpKTsKIAlpZiAodGhyZWFkLT5jdHggPT0g
TlVMTCkKIAkJcmV0dXJuIC0xOwogCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL3N3
X2N0eC5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS9zd19jdHguaAppbmRleCBkNTJmZTY1Yi4uMzY2
YzZhOGYgMTAwNjQ0Ci0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvc3dfY3R4LmgKKysrIGIvcGxh
dC9jb21tb24vaW5jbHVkZS9zd19jdHguaApAQCAtNDEsNiArNDEsNyBAQAogc3RydWN0IHN3X2N0
eCB7CiAJdW5zaWduZWQgbG9uZyBzcDsJLyogU3RhY2sgcG9pbnRlciAqLwogCXVuc2lnbmVkIGxv
bmcgaXA7CS8qIEluc3RydWN0aW9uIHBvaW50ZXIgKi8KKwl1bnNpZ25lZCBsb25nIHRsc3A7CS8q
IHRocmVhZC1sb2NhbCBzdG9yYWdlIHBvaW50ZXIgKi8KIAl1aW50cHRyX3QgZXh0cmVnczsJLyog
UG9pbnRlciB0byBhbiBhcmVhIHRvIHdoaWNoIGV4dGVuZGVkCiAJCQkJICogcmVnaXN0ZXJzIGFy
ZSBzYXZlZCBvbiBjb250ZXh0IHN3aXRjaC4KIAkJCQkgKi8KZGlmZiAtLWdpdCBhL3BsYXQvY29t
bW9uL2luY2x1ZGUvdGxzLmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3Rscy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iOTE3NmY5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bs
YXQvY29tbW9uL2luY2x1ZGUvdGxzLmgKQEAgLTAsMCArMSw0MSBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
TkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRl
ciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5Z
IFdBWS4KKyAqLworI2lmbmRlZiBfX1BMQVRfQ01OX1RMU19IX18KKyNkZWZpbmUgX19QTEFUX0NN
Tl9UTFNfSF9fCisKKyNpZiBkZWZpbmVkKF9fWDg2XzY0X18pCisjaW5jbHVkZSA8eDg2L3Rscy5o
PgorI2Vsc2UKKyNlcnJvciAiRm9yIHRocmVhZC1sb2NhbCBzdG9yYWdlIHN1cHBvcnQsIGFkZCB0
bHMuaCBmb3IgY3VycmVudCBhcmNoaXRlY3R1cmUuIgorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1BM
QVRfQ01OX1RMU19IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUveDg2L2Nw
dV9kZWZzLmggYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3g4Ni9jcHVfZGVmcy5oCmluZGV4IDEwN2Yw
ZjBhLi5mNDZlODMwNyAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS94ODYvY3B1X2Rl
ZnMuaAorKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3g4Ni9jcHVfZGVmcy5oCkBAIC05Niw0ICs5
Niw5IEBACiAjZGVmaW5lIFg4Nl9YQ1IwX1NTRSAgICAgICAgICAgICgxIDw8IDEpCiAjZGVmaW5l
IFg4Nl9YQ1IwX0FWWCAgICAgICAgICAgICgxIDw8IDIpCiAKKy8qCisgKiBNb2RlbC1zcGVjaWZp
YyByZWdpc3RlciBhZGRyZXNzZXMKKyAqLworI2RlZmluZSBYODZfTVNSX0ZTX0JBU0UgICAgICAg
ICAweGMwMDAwMTAwCisKICNlbmRpZiAvKiBfX1BMQVRfQ01OX1g4Nl9DUFVfREVGU19IX18gKi8K
ZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUveDg2L3Rscy5oIGIvcGxhdC9jb21tb24v
aW5jbHVkZS94ODYvdGxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjU4
MTFiY2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS94ODYvdGxzLmgK
QEAgLTAsMCArMSwzOSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworI2lmbmRlZiBfX1BM
QVRfQ01OX1g4Nl9UTFNfSF9fCisjZGVmaW5lIF9fUExBVF9DTU5fWDg2X1RMU19IX18KKworI2lu
Y2x1ZGUgPHg4Ni9jcHVfZGVmcy5oPgorCisjZGVmaW5lIHNldF90bHNfcG9pbnRlcihwdHIpIHdy
bXNybChYODZfTVNSX0ZTX0JBU0UsIHB0cikKKworI2VuZGlmIC8qIF9fUExBVF9DTU5fWDg2X1RM
U19IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL3N3X2N0eC5jIGIvcGxhdC9jb21tb24v
c3dfY3R4LmMKaW5kZXggMDY3OTUyNDQuLjg4YTM3N2YxIDEwMDY0NAotLS0gYS9wbGF0L2NvbW1v
bi9zd19jdHguYworKysgYi9wbGF0L2NvbW1vbi9zd19jdHguYwpAQCAtMzksOSArMzksMTEgQEAK
ICNpbmNsdWRlIDx1ay9hbGxvYy5oPgogI2luY2x1ZGUgPHN3X2N0eC5oPgogI2luY2x1ZGUgPHVr
L2Fzc2VydC5oPgorI2luY2x1ZGUgPHRscy5oPgogI2luY2x1ZGUgPHg4Ni9jcHUuaD4KIAotc3Rh
dGljIHZvaWQgKnN3X2N0eF9jcmVhdGUoc3RydWN0IHVrX2FsbG9jICphbGxvY2F0b3IsIHVuc2ln
bmVkIGxvbmcgc3ApOworc3RhdGljIHZvaWQgKnN3X2N0eF9jcmVhdGUoc3RydWN0IHVrX2FsbG9j
ICphbGxvY2F0b3IsIHVuc2lnbmVkIGxvbmcgc3AsCisJCQkJdW5zaWduZWQgbG9uZyB0bHNwKTsK
IHN0YXRpYyB2b2lkICBzd19jdHhfc3RhcnQodm9pZCAqY3R4KSBfX25vcmV0dXJuOwogc3RhdGlj
IHZvaWQgIHN3X2N0eF9zd2l0Y2godm9pZCAqcHJldmN0eCwgdm9pZCAqbmV4dGN0eCk7CiAKQEAg
LTUxLDcgKzUzLDggQEAgc3RhdGljIHZvaWQgIHN3X2N0eF9zd2l0Y2godm9pZCAqcHJldmN0eCwg
dm9pZCAqbmV4dGN0eCk7CiAgKi8KIGV4dGVybiB2b2lkIGFzbV90aHJlYWRfc3RhcnRlcih2b2lk
KTsKIAotc3RhdGljIHZvaWQgKnN3X2N0eF9jcmVhdGUoc3RydWN0IHVrX2FsbG9jICphbGxvY2F0
b3IsIHVuc2lnbmVkIGxvbmcgc3ApCitzdGF0aWMgdm9pZCAqc3dfY3R4X2NyZWF0ZShzdHJ1Y3Qg
dWtfYWxsb2MgKmFsbG9jYXRvciwgdW5zaWduZWQgbG9uZyBzcCwKKwkJCQl1bnNpZ25lZCBsb25n
IHRsc3ApCiB7CiAJc3RydWN0IHN3X2N0eCAqY3R4OwogCXNpemVfdCBzejsKQEAgLTY4LDYgKzcx
LDcgQEAgc3RhdGljIHZvaWQgKnN3X2N0eF9jcmVhdGUoc3RydWN0IHVrX2FsbG9jICphbGxvY2F0
b3IsIHVuc2lnbmVkIGxvbmcgc3ApCiAJfQogCiAJY3R4LT5zcCA9IHNwOworCWN0eC0+dGxzcCA9
IHRsc3A7CiAJY3R4LT5pcCA9ICh1bnNpZ25lZCBsb25nKSBhc21fdGhyZWFkX3N0YXJ0ZXI7CiAJ
Y3R4LT5leHRyZWdzID0gQUxJR05fVVAoKCh1aW50cHRyX3QpY3R4ICsgc2l6ZW9mKHN0cnVjdCBz
d19jdHgpKSwKIAkJCQl4ODZfY3B1X2ZlYXR1cmVzLmV4dHJlZ3NfYWxpZ24pOwpAQCAtODYsNiAr
OTAsNyBAQCBzdGF0aWMgdm9pZCBzd19jdHhfc3RhcnQodm9pZCAqY3R4KQogCiAJVUtfQVNTRVJU
KHN3X2N0eCAhPSBOVUxMKTsKIAorCXNldF90bHNfcG9pbnRlcihzd19jdHgtPnRsc3ApOwogCS8q
IFN3aXRjaCBzdGFja3MgYW5kIHJ1biB0aGUgdGhyZWFkICovCiAJYXNtX2N0eF9zdGFydChzd19j
dHgtPnNwLCBzd19jdHgtPmlwKTsKIApAQCAtMTAxLDYgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHN3
X2N0eF9zd2l0Y2godm9pZCAqcHJldmN0eCwgdm9pZCAqbmV4dGN0eCkKIAogCXNhdmVfZXh0cmVn
cyhwKTsKIAlyZXN0b3JlX2V4dHJlZ3Mobik7CisJc2V0X3Rsc19wb2ludGVyKG4tPnRsc3ApOwog
CWFzbV9zd19jdHhfc3dpdGNoKHByZXZjdHgsIG5leHRjdHgpOwogfQogCmRpZmYgLS1naXQgYS9w
bGF0L2xpbnV4dS9pbmNsdWRlL2xpbnV4dS9zeXNjYWxsLXg4Nl82NC5oIGIvcGxhdC9saW51eHUv
aW5jbHVkZS9saW51eHUvc3lzY2FsbC14ODZfNjQuaAppbmRleCAyNjgyMGRjZC4uNTUzZjBiYTQg
MTAwNjQ0Ci0tLSBhL3BsYXQvbGludXh1L2luY2x1ZGUvbGludXh1L3N5c2NhbGwteDg2XzY0LmgK
KysrIGIvcGxhdC9saW51eHUvaW5jbHVkZS9saW51eHUvc3lzY2FsbC14ODZfNjQuaApAQCAtNDgs
NiArNDgsNyBAQAogI2RlZmluZSBfX1NDX1JUX1NJR1BST0NNQVNLIDE0CiAjZGVmaW5lIF9fU0Nf
SU9DVEwgIDE2CiAjZGVmaW5lIF9fU0NfRVhJVCAgIDYwCisjZGVmaW5lIF9fU0NfQVJDSF9QUkNU
TCAgICAgICAxNTgKICNkZWZpbmUgX19TQ19USU1FUl9DUkVBVEUgICAgIDIyMgogI2RlZmluZSBf
X1NDX1RJTUVSX1NFVFRJTUUgICAgMjIzCiAjZGVmaW5lIF9fU0NfVElNRVJfR0VUVElNRSAgICAy
MjQKZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L2luY2x1ZGUvbGludXh1L3N5c2NhbGwuaCBiL3Bs
YXQvbGludXh1L2luY2x1ZGUvbGludXh1L3N5c2NhbGwuaAppbmRleCBkMzc4ZDI2NS4uMGRjYTdj
NWMgMTAwNjQ0Ci0tLSBhL3BsYXQvbGludXh1L2luY2x1ZGUvbGludXh1L3N5c2NhbGwuaAorKysg
Yi9wbGF0L2xpbnV4dS9pbmNsdWRlL2xpbnV4dS9zeXNjYWxsLmgKQEAgLTEyMyw2ICsxMjMsMTQg
QEAgc3RhdGljIGlubGluZSBpbnQgc3lzX3NpZ3Byb2NtYXNrKGludCBob3csCiAJCQkgICAgICBz
aXplb2Yoa19zaWdzZXRfdCkpOwogfQogCisjZGVmaW5lIEFSQ0hfU0VUX0ZTIDB4MTAwMgorc3Rh
dGljIGlubGluZSBpbnQgc3lzX2FyY2hfcHJjdGwoaW50IGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRk
cikKK3sKKwlyZXR1cm4gKGludCkgc3lzY2FsbDIoX19TQ19BUkNIX1BSQ1RMLAorCQkJICAgICAg
KGxvbmcpIGNvZGUsCisJCQkgICAgICAobG9uZykgYWRkcik7Cit9CisKIHN0YXRpYyBpbmxpbmUg
aW50IHN5c19wc2VsZWN0NihpbnQgbmZkcywKIAkJa19mZF9zZXQgKnJlYWRmZHMsIGtfZmRfc2V0
ICp3cml0ZWZkcywga19mZF9zZXQgKmV4Y2VwdGZkcywKIAkJY29uc3Qgc3RydWN0IGtfdGltZXNw
ZWMgKnRpbWVvdXQsIGNvbnN0IHZvaWQgKnNpZ21hc2spCmRpZmYgLS1naXQgYS9wbGF0L2xpbnV4
dS9pbmNsdWRlL3Rscy5oIGIvcGxhdC9saW51eHUvaW5jbHVkZS90bHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOTc0NzQxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0
L2xpbnV4dS9pbmNsdWRlL3Rscy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qIFNQRFgtTGljZW5zZS1J
ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5F
QyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIg
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBX
QVkuCisgKi8KKyNpZm5kZWYgX19QTEFUX0xJTlVYVV9UTFNfSF9fCisjZGVmaW5lIF9fUExBVF9M
SU5VWFVfVExTX0hfXworCisjaW5jbHVkZSA8bGludXh1L3N5c2NhbGwuaD4KKworc3RhdGljIGlu
bGluZSB2b2lkIHNldF90bHNfcG9pbnRlcih1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlzeXNfYXJj
aF9wcmN0bChBUkNIX1NFVF9GUywgYXJnKTsKK30KKworI2VuZGlmIC8qIF9fUExBVF9MSU5VWFVf
VExTX0hfXyAqLwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 06:05:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 06:05: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 1hXJcD-0004hy-VG; Sun, 02 Jun 2019 06:05:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AZay=UB=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXJcD-0004ht-HG
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 06:05:09 +0000
X-Inumbo-ID: 5f36b40e-84fc-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5f36b40e-84fc-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 06:05:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 40CB9F203F;
 Sun,  2 Jun 2019 08:05:07 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tgTPyWEp9yB9; Sun,  2 Jun 2019 08:05:07 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 15010F201F
 for <minios-devel@lists.xen.org>; Sun,  2 Jun 2019 08:05:05 +0200 (CEST)
Received: from [10.7.0.19] (10.7.0.19) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Jun 2019 08:05:04
 +0200
To: <minios-devel@lists.xen.org>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-8-florian.schmidt@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <d88d2b13-5513-cd9c-5de7-8c4d0d858425@neclab.eu>
Date: Sun, 2 Jun 2019 07:05:03 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190602055238.3818-8-florian.schmidt@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.7.0.19]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 07/11] Initial public
 release: patches to make click build with 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 <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>

T25lIHJlbWFyazogRmVsaXBlIGNyZWF0ZWQgcGF0Y2ggMDAwMSwgc28gdGhpcyBzaG91bGQgaW5k
ZWVkIGFsc28gaGF2ZSBhIApTaWduZWQtb2ZmIGJ5IGhpbS4gSSdsbCBmaXggdGhhdCBpbiBhIHBv
dGVudGlhbCB2Mi4KCk9uIDYvMi8xOSA2OjUyIEFNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4g
U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
Pgo+IC0tLQo+ICAgcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1uZXctZGVsZXRlLWN4YS5wYXRjaCAg
IHwgMjAgKysrKysrKysrKysKPiAgIC4uLi1zdXJlLVBPTExJTi1QT0xMT1VULWFyZS1ub3QtZGVm
aW5lZC5wYXRjaCB8IDM1ICsrKysrKysrKysrKysrKysrKysKPiAgIDIgZmlsZXMgY2hhbmdlZCwg
NTUgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMS11c2Vy
bGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2gKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVz
LzAwMDItTWFrZS1zdXJlLVBPTExJTi1QT0xMT1VULWFyZS1ub3QtZGVmaW5lZC5wYXRjaAo+IAo+
IGRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hhLnBhdGNo
IGIvcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1uZXctZGVsZXRlLWN4YS5wYXRjaAo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYWY5Y2RmNAo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9wYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hhLnBhdGNoCj4gQEAgLTAs
MCArMSwyMCBAQAo+ICstLS0gYS9saWIvZ2x1ZS5jYy5vcmlnCTIwMTgtMDItMTQgMTE6MTE6Mzgu
MzY0MDI0NzI5ICswMTAwCj4gKysrKyBiL2xpYi9nbHVlLmNjCTIwMTgtMDItMTQgMTE6NDQ6MzEu
ODgwOTA4MDk5ICswMTAwCj4gK0BAIC0xNzksNyArMTc5LDcgQEAKPiArIHNpemVfdCBjbGlja19k
bWFsbG9jX21heG1lbSA9IDA7Cj4gKyAjZW5kaWYKPiArCj4gKy0jaWYgQ0xJQ0tfTElOVVhNT0RV
TEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01JTklPUwo+ICsrI2lmIENMSUNLX0xJTlVY
TU9EVUxFIHx8IENMSUNLX0JTRE1PRFVMRSB8fCBDTElDS19NSU5JT1MgfHwgQ0xJQ0tfVVNFUkxF
VkVMCj4gKwo+ICsgIyBpZiBDTElDS19MSU5VWE1PRFVMRQo+ICsgc3RydWN0IHRhc2tfc3RydWN0
ICpjbGlja2ZzX3Rhc2s7Cj4gK0BAIC03MjEsNyArNzIxLDcgQEAKPiArCj4gKyAvLyBPVEhFUgo+
ICsKPiArLSNpZiBDTElDS19MSU5VWE1PRFVMRSB8fCBDTElDS19CU0RNT0RVTEUgfHwgQ0xJQ0tf
TUlOSU9TCj4gKysjaWYgQ0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENM
SUNLX01JTklPUyB8fCBDTElDS19VU0VSTEVWRUwKPiArCj4gKyAjaWYgQ0xJQ0tfQlNETU9EVUxF
Cj4gKwo+IGRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDItTWFrZS1zdXJlLVBPTExJTi1QT0xMT1VU
LWFyZS1ub3QtZGVmaW5lZC5wYXRjaCBiL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBP
TExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi5lMTFhZjUwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvMDAwMi1N
YWtlLXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoCj4gQEAgLTAsMCAr
MSwzNSBAQAo+ICtGcm9tIGI5ZjA0ZjZkZGMzODhmNmE1MGE4MmU4ODMwZTQyYmFkYmZjNDcxN2Ig
TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gK0Zyb206IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlh
bi5zY2htaWR0QG5lY2xhYi5ldT4KPiArRGF0ZTogV2VkLCAxNyBBcHIgMjAxOSAxMTowMzo1NSAr
MDIwMAo+ICtTdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugc3VyZSBQT0xMSU4vUE9MTE9VVCBhcmUgbm90
IGRlZmluZWQKPiArCj4gK1dlIHVzZSBzZWxlY3QgaW5zdGVhZCBvZiBwb2xsLCBiZWNhdXNlIGx3
aXAgcHJvdmlkZXMgYSBzZWxlY3QgdmlhIGl0cwo+ICtzb2NrZXQgQVBJLiBIb3dldmVyLCB0aGF0
IG9uZSBhbHNvIGRlZmluZXMgYSBjb3VwbGUgb2YgUE9MTCogdmFsdWVzLAo+ICt3aGljaCBsZWFk
IHRvIGEgY29tcGlsZXIgZXJyb3IgaGVyZSBiZWNhdXNlIHlvdSBlbmQgdXAgd2l0aCBhIGxpbmUg
dGhhdAo+ICtzYXlzICJlbnVtIHsgMHgxID0gRWxlbWVudDo6U0VMRUNUX1JFQUQiIGV0Yy4KPiAr
Cj4gK1NpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4KPiArLS0tCj4gKyBsaWIvc2VsZWN0c2V0LmNjIHwgNiArKysrKysKPiArIDEgZmlsZSBj
aGFuZ2VkLCA2IGluc2VydGlvbnMoKykKPiArCj4gK2RpZmYgLS1naXQgYS9saWIvc2VsZWN0c2V0
LmNjIGIvbGliL3NlbGVjdHNldC5jYwo+ICtpbmRleCBhYzVjY2FlNDkuLjY0MWI2M2Y5MCAxMDA2
NDQKPiArLS0tIGEvbGliL3NlbGVjdHNldC5jYwo+ICsrKysgYi9saWIvc2VsZWN0c2V0LmNjCj4g
K0BAIC0zOCw2ICszOCwxMiBAQCBDTElDS19ERUNMUwo+ICsgbmFtZXNwYWNlIHsKPiArIGVudW0g
eyBTRUxFQ1RfUkVBRCA9IEVsZW1lbnQ6OlNFTEVDVF9SRUFELCBTRUxFQ1RfV1JJVEUgPSBFbGVt
ZW50OjpTRUxFQ1RfV1JJVEUgfTsKPiArICNpZiAhSEFWRV9BTExPV19QT0xMCj4gKysjaWZkZWYg
UE9MTElOCj4gKysjdW5kZWYgUE9MTElOCj4gKysjZW5kaWYKPiArKyNpZmRlZiBQT0xMT1VUCj4g
KysjdW5kZWYgUE9MTE9VVAo+ICsrI2VuZGlmCj4gKyBlbnVtIHsgUE9MTElOID0gRWxlbWVudDo6
U0VMRUNUX1JFQUQsIFBPTExPVVQgPSBFbGVtZW50OjpTRUxFQ1RfV1JJVEUgfTsKPiArICNlbmRp
Zgo+ICsgfQo+ICstLQo+ICsyLjIxLjAKPiArCj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArj
g5Xjg63jg7zjg6rjgqLjg7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApT
eXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3Bl
Ckt1cmbDvHJzdGVuLUFubGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAo
MCk2MjIxIDQzNDItMjY1CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZs
b3JpYW4uc2NobWlkdEBuZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFu
bmhlaW0sIEdlcm1hbnksIEhSQjcyODU1OAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 09:29:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 09:29: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 1hXMoD-0004c0-3t; Sun, 02 Jun 2019 09:29:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXMoB-0004bT-Da
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 09:29:43 +0000
X-Inumbo-ID: f27381c6-8518-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f27381c6-8518-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 09:29:41 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id w9so1763543wmd.1
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 02:29:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=QfSy8vojyl+gJ3dOlh4I/vfM3dWkpKdH51EI1a7Bpcc=;
 b=aw95GFw8WBsmZ8G5mIdem07/6pPuUM7ryXYZTmLfexrYy9jTLJIMhbii5QfNoEy5y4
 Dt+hcysRz6fKKV/6IoSi0vApHeSHFtpWKiOTru7Vla2UFSLp2dXTHOyDrPw6i/iuPT0G
 xDZZ/UD8JgrkFiv4OMLlS0hvBUWYDz0Y7OBSz5fd0JoOy98ynHuoNpzjG6/Cozl1XYj5
 e35HCSIdpx0FTGfUYlpmddROdhVk3y9YApwqfvPeVkPbnkbPcmS63Vq9emKvDcOQwkM4
 tQPnXZ6emW8i+axbfd9nAXmoSNtHo7rnVhrQt7UulfNsIFMHGI4cjI9J6IYCb3qMIYRt
 2z+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=QfSy8vojyl+gJ3dOlh4I/vfM3dWkpKdH51EI1a7Bpcc=;
 b=lJnBjCPB58ADJzGA60NySzlvLpBt8t/uheqqwHRNpWsjbwSuV61gVaXv2GgcEBSGsO
 fr+kWbfEN9TMgSnHfwfC6Dw6XFpjZvie6Kr5ssO8dgsp67qSnV/3Si/jfaEVydCtR36v
 pDzGzpdtHBmmbQR7bD0ErF18nInqP3rPG5zoKyzpUKJjoFoHimE3luxTODgEIwz4NtiD
 Yxqk0UanPs5WTQXbj9MgzWgzvgzCqtBNu+mwjxaOtA8blwzl/hiQQH5DQ3xcC868CMZy
 ZktISEgzaB8LhpMEjqeKeZPpxas23AGokMAaXjjTfNv6h13KHv6F2jf0lEQmr1mAjxJW
 p29w==
X-Gm-Message-State: APjAAAWVr2VH0EBOrePdMXzsjzw4DFNdQCerwaF8Ec6rfAQmq0O3m6u6
 cK/RNOJ5BZm7Qx7VRTML6Af61ep9
X-Google-Smtp-Source: APXvYqx4xEqAP3Zl0Z5X8p4amjgX/CFSNh/ZsXelPSYHtAXpXK3auWOVunGYbDGWpxw9dx2um901yw==
X-Received: by 2002:a7b:c057:: with SMTP id u23mr11046151wmc.29.1559467779628; 
 Sun, 02 Jun 2019 02:29:39 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id f65sm14726260wmg.45.2019.06.02.02.29.38
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 02:29:38 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
 <20190602060236.6597-2-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <4cd66904-c247-ce6a-109a-e76d4aa0080b@gmail.com>
Date: Sun, 2 Jun 2019 12:29:37 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602060236.6597-2-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 1/7] plat/linuxu: make linker
 script preprocessable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhhbmtzLCBGbG9yaWFuISBUaGUgc2VyaWVzIHdvcmsgZm9yIGxpbnV4dSBhcyB3ZWxsIG5vdy4K
ClJldmlld2VkLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgoKT24gNi8y
LzE5IDk6MDIgQU0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBDb21taXQgMWQ4NGYzZGQ5OGUg
KCJidWlsZDogbWFrZSBhbGwgbGlua2VyIHNjcmlwdHMgcHJlcHJvY2Vzc2FibGUiKQo+IGludHJv
ZHVjZWQgcHJlcHJvY2Vzc2FibGUgbGlua2VyIHNjcmlwdHMgZm9yIHRoZSBYZW4gYW5kIEtWTSBw
bGF0Zm9ybS4KPiBUaGlzIGZvbGxvd3MgdGhlIHNhbWUgYXBwcm9hY2ggdG8gbWFrZSB0aGUgbWFp
biBsaW51eHUgbGlua2VyIHNjcmlwdAo+IHByZXByb2Nlc3NhYmxlLgo+IAo+IFNpZ25lZC1vZmYt
Ynk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiAtLS0KPiAg
cGxhdC9saW51eHUvTGlua2VyLnVrICAgICAgICAgICAgICAgICAgICAgICAgfCA4ICsrKystLS0t
Cj4gIHBsYXQvbGludXh1L01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgIHwgNCArKysr
Cj4gIHBsYXQvbGludXh1L2FybS97bGluay5sZHMgPT4gbGluay5sZHMuU30gICAgIHwgMAo+ICBw
bGF0L2xpbnV4dS94ODYve2xpbms2NC5sZHMgPT4gbGluazY0Lmxkcy5TfSB8IDAKPiAgNCBmaWxl
cyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gIHJlbmFtZSBwbGF0
L2xpbnV4dS9hcm0ve2xpbmsubGRzID0+IGxpbmsubGRzLlN9ICgxMDAlKQo+ICByZW5hbWUgcGxh
dC9saW51eHUveDg2L3tsaW5rNjQubGRzID0+IGxpbms2NC5sZHMuU30gKDEwMCUpCj4gCj4gZGlm
ZiAtLWdpdCBhL3BsYXQvbGludXh1L0xpbmtlci51ayBiL3BsYXQvbGludXh1L0xpbmtlci51awo+
IGluZGV4IGRjZGQzYmUyLi5hYmJjNzgxZSAxMDA2NDQKPiAtLS0gYS9wbGF0L2xpbnV4dS9MaW5r
ZXIudWsKPiArKysgYi9wbGF0L2xpbnV4dS9MaW5rZXIudWsKPiBAQCAtNCwxNCArNCwxNCBAQCBM
SU5VWFVfTERGTEFHUy15ICs9IC1XbCwtZSxfbGlibGludXh1cGxhdF9zdGFydAo+ICAjIyBMaW5r
IGltYWdlCj4gICMjCj4gIExJTlVYVV9JTUFHRSA6PSAkKEJVSUxEX0RJUikvJChDT05GSUdfVUtf
TkFNRSlfbGludXh1LSQoQ09ORklHX1VLX0FSQ0gpCj4gLUxJTlVYVV9MRF9TQ1JJUFQtJChDT05G
SUdfQVJDSF9YODZfNjQpICs9ICQoTElCTElOVVhVUExBVF9CQVNFKS94ODYvbGluazY0Lmxkcwo+
IC1MSU5VWFVfTERfU0NSSVBULSQoQ09ORklHX0FSQ0hfQVJNXzMyKSArPSAkKExJQkxJTlVYVVBM
QVRfQkFTRSkvYXJtL2xpbmsubGRzCj4gK0xJTlVYVV9MRFNDUklQVCA6PSAkKGNhbGwgc3JjMmxk
cyxsaWJsaW51eHVwbGF0LCQoTElOVVhVX0xEU0NSSVBUX1NSQy15KSkKPiAgTElOVVhVX0xEX1ND
UklQVF9GTEFHUyA6PSAkKGFkZHByZWZpeCAtV2wkKGNvbW1hKS1UJChjb21tYSksXAo+IC0JCQkg
ICAgJChMSU5VWFVfTERfU0NSSVBULXkpICQoRVhUUkFfTERfU0NSSVBULXkpKQo+ICsJCQkgICAg
JChMSU5VWFVfTERTQ1JJUFQpICQoRVhUUkFfTERfU0NSSVBULXkpKQo+ICAKPiAgJChMSU5VWFVf
SU1BR0UpOiAkKExJTlVYVV9BTElCUykgJChMSU5VWFVfQUxJQlMteSkgXAo+ICAJCSAkKExJTlVY
VV9PTElCUykgJChMSU5VWFVfT0xJQlMteSkgXAo+IC0JCSAkKFVLX0FMSUJTKSAkKFVLX0FMSUJT
LXkpICQoVUtfT0xJQlMpICQoVUtfT0xJQlMteSkKPiArCQkgJChVS19BTElCUykgJChVS19BTElC
Uy15KSAkKFVLX09MSUJTKSAkKFVLX09MSUJTLXkpIFwKPiArCQkgJChMSU5VWFVfTERTQ1JJUFQp
Cj4gIAkkKGNhbGwgYnVpbGRfY21kLExELCwkQC5kYmcsXAo+ICAJICAgICAgICQoTEQpICQoTERG
TEFHUykgJChMREZMQUdTLXkpIFwKPiAgCQkgICAgICQoTElOVVhVX0xERkxBR1MpICQoTElOVVhV
X0xERkxBR1MteSkgXAo+IGRpZmYgLS1naXQgYS9wbGF0L2xpbnV4dS9NYWtlZmlsZS51ayBiL3Bs
YXQvbGludXh1L01ha2VmaWxlLnVrCj4gaW5kZXggMmMwZGU3NmMuLmVlM2E3ZWExIDEwMDY0NAo+
IC0tLSBhL3BsYXQvbGludXh1L01ha2VmaWxlLnVrCj4gKysrIGIvcGxhdC9saW51eHUvTWFrZWZp
bGUudWsKPiBAQCAtMjAsNiArMjAsOSBAQCBMSUJMSU5VWFVQTEFUX0FTRkxBR1MgICAgICAgICAg
ICAgKz0gLURMSU5VWFVQTEFUCj4gIExJQkxJTlVYVVBMQVRfQ0ZMQUdTICAgICAgICAgICAgICAr
PSAtRExJTlVYVVBMQVQKPiAgTElCTElOVVhVUExBVF9DWFhGTEFHUyAgICAgICAgICAgICs9IC1E
TElOVVhVUExBVAo+ICAKPiArTElOVVhVX0xEU0NSSVBUX1NSQy0kKENPTkZJR19BUkNIX1g4Nl82
NCkgKz0gJChMSUJMSU5VWFVQTEFUX0JBU0UpL3g4Ni9saW5rNjQubGRzLlMKPiArTElOVVhVX0xE
U0NSSVBUX1NSQy0kKENPTkZJR19BUkNIX0FSTV8zMikgKz0gJChMSUJMSU5VWFVQTEFUX0JBU0Up
L2FybS9saW5rLmxkcy5TCj4gKwo+ICBMSUJMSU5VWFVQTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9Y
ODZfNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkveDg2L2NwdV9mZWF0dXJlcy5jfGNvbW1v
bgo+ICBMSUJMSU5VWFVQTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfMzIpICs9ICQoTElCTElO
VVhVUExBVF9CQVNFKS94ODYvZW50cnkzMi5TCj4gIExJQkxJTlVYVVBMQVRfU1JDUy0kKENPTkZJ
R19BUkNIX1g4Nl82NCkgKz0gJChMSUJMSU5VWFVQTEFUX0JBU0UpL3g4Ni9lbnRyeTY0LlMKPiBA
QCAtNDAsMyArNDMsNCBAQCBMSUJMSU5VWFVQTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChM
SUJMSU5VWFVQTEFUX0JBU0UpL3RpbWUuYwo+ICBMSUJMSU5VWFVQTEFUX1NSQ1MteSAgICAgICAg
ICAgICAgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9sY3B1LmN8Y29tbW9uCj4gIExJQkxJTlVY
VVBMQVRfU1JDUy15ICAgICAgICAgICAgICArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL21lbW9y
eS5jfGNvbW1vbgo+ICBMSUJMSU5VWFVQTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChMSUJM
SU5VWFVQTEFUX0JBU0UpL2lvLmMKPiArTElCTElOVVhVUExBVF9TUkNTLXkgICAgICAgICAgICAg
ICs9ICQoTElOVVhVX0xEU0NSSVBUX1NSQy15KQo+IGRpZmYgLS1naXQgYS9wbGF0L2xpbnV4dS9h
cm0vbGluay5sZHMgYi9wbGF0L2xpbnV4dS9hcm0vbGluay5sZHMuUwo+IHNpbWlsYXJpdHkgaW5k
ZXggMTAwJQo+IHJlbmFtZSBmcm9tIHBsYXQvbGludXh1L2FybS9saW5rLmxkcwo+IHJlbmFtZSB0
byBwbGF0L2xpbnV4dS9hcm0vbGluay5sZHMuUwo+IGRpZmYgLS1naXQgYS9wbGF0L2xpbnV4dS94
ODYvbGluazY0LmxkcyBiL3BsYXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMKPiBzaW1pbGFyaXR5
IGluZGV4IDEwMCUKPiByZW5hbWUgZnJvbSBwbGF0L2xpbnV4dS94ODYvbGluazY0Lmxkcwo+IHJl
bmFtZSB0byBwbGF0L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TCj4gCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 10:28:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 10:28: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 1hXNiu-0001CJ-IM; Sun, 02 Jun 2019 10:28:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXNit-0001CC-Oe
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 10:28:19 +0000
X-Inumbo-ID: 22dbf11d-8521-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 22dbf11d-8521-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 10:28:18 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id n4so6282719wrs.3
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 03:28:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=2ZFsfOc8sLNygacYSXlFmaOAgN83PUvolst5K+UAW2E=;
 b=SOFbfmQPwKF455Q7HoHmetwvpJ/0pD/bg4kO4nObtJ9uav8FIOplEIyd74CmiqIfUU
 DZfzveBsMbipQ5GIZHXMLTm8rbkyW+Ct6qHZ4MMCsXOAhE7CH/+uXwUA+rQYJjOqYZLt
 U2l4CcqKReq8xEx3XgfRsPcXLX+SOqq43B9/BYzwhGIAP5FnLzbpE8YbIPI+jt0MvAPi
 pRdgl8tlUg3lwAI14FfsP9t70bMjZ0TOfDET8/9/yUCGZbOL10JCNIL5UlaFC+vC6N6w
 mlL7rW5x4iVaTc8xfQxz672CVnZgPFJOboELpZ7Eqt5xvAobgcNNfunxVrNlmg5TTBGr
 Wnbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=2ZFsfOc8sLNygacYSXlFmaOAgN83PUvolst5K+UAW2E=;
 b=V/k2rJunCQ4t89OK5vrFkm4wMuVOvz2DQPanyTYiWWo0e8uZKjIqOsDjMTwgcBmy7O
 GsaJE1UXtSoaeBVL29CcJX4Bu1ogZL2iRAxw1rfGK7adD3OQT3KHomHOeaK28Sh2fe3s
 A+2ZHHXCbgqmSHcJ4oJ4YH6attLhoeN0/1lZ0+1Gha4CXQ/02zqgb8JifePq/Zl0sjsg
 A0Hg/uNJocRTYcp1Dw66ZE8f3DXYX9tX9pBxdKH+YRhUK1I8VIGeGCJ0ldwhCUusCmeN
 CQ6wmN0x3kMmqpXjdxxo40Hbu502gOlVGW12v0Jb0MUsTwV4B2XH0XLb/DwwE/UzKmFI
 2ThA==
X-Gm-Message-State: APjAAAWO6sZ12uWFpCT8/mhVqex1VO7ZTOWbW70MySBubUgdEO2cbqaf
 tjPt11mm8TnW7ZIOoa7WzQeRxqGT
X-Google-Smtp-Source: APXvYqy1wK9WIwYiWAeCwwyzeiMEUf3SUeEHFO6to1rZ7JYSNEdKyJyjQU7CURrr/ymlo06Gc8K3bA==
X-Received: by 2002:adf:81c8:: with SMTP id 66mr12236608wra.261.1559471296670; 
 Sun, 02 Jun 2019 03:28:16 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id o3sm8703889wrv.94.2019.06.02.03.28.14
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 03:28:15 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
 <20190602060236.6597-3-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <0d8110e2-b5b4-9672-4619-5b10d8cbd28b@gmail.com>
Date: Sun, 2 Jun 2019 13:28:14 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602060236.6597-3-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 2/7] plat: move common
 section definitions from linker script to include file
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBwYXRjaCBsb29rcyBnb29kIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+CgpPbiA2LzIvMTkgOTowMiBBTSwgRmxvcmlhbiBTY2htaWR0IHdyb3Rl
Ogo+IFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4KPiAtLS0KPiAgcGxhdC9jb21tb24vaW5jbHVkZS9jb21tb24ubGRzLmggfCAzMiArKysr
KysrKysrKysrKysrLQo+ICBwbGF0L2NvbW1vbi94ODYvbGluazY0LmxkcyAgICAgICB8IDU5IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHBsYXQva3ZtL2FybS9saW5rNjQubGRz
LlMgICAgICAgIHwgMjggKystLS0tLS0tLS0tLS0tCj4gIHBsYXQva3ZtL3g4Ni9saW5rNjQubGRz
LlMgICAgICAgIHwgIDQgKystCj4gIHBsYXQvbGludXh1L2FybS9saW5rLmxkcy5TICAgICAgIHwg
MTAgKystLS0tCj4gIHBsYXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMgICAgIHwgIDYgKysrLQo+
ICBwbGF0L3hlbi9hcm0vbGluazMyLmxkcy5TICAgICAgICB8IDI5ICsrLS0tLS0tLS0tLS0tLS0K
PiAgcGxhdC94ZW4veDg2L2xpbms2NC5sZHMuUyAgICAgICAgfCAgNCArKy0KPiAgOCBmaWxlcyBj
aGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCj4gIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBwbGF0L2NvbW1vbi94ODYvbGluazY0Lmxkcwo+IAo+IGRpZmYgLS1naXQgYS9wbGF0
L2NvbW1vbi9pbmNsdWRlL2NvbW1vbi5sZHMuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvY29tbW9u
Lmxkcy5oCj4gaW5kZXggODY3MmI2ZmYuLmRiOTUxYzU0IDEwMDY0NAo+IC0tLSBhL3BsYXQvY29t
bW9uL2luY2x1ZGUvY29tbW9uLmxkcy5oCj4gKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9jb21t
b24ubGRzLmgKPiBAQCAtMSw2ICsxLDcgQEAKPiAgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEJTRC0zLUNsYXVzZSAqLwo+ICAvKgo+IC0gKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJv
cmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICogQ29weXJpZ2h0IChj
KSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24sCj4g
KyAqICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJl
c3QuCj4gICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gICAqCj4gICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+IEBA
IC0zMSw2ICszMiw4IEBACj4gICNpZm5kZWYgX19VS19DT01NT05fTERTX0gKPiAgI2RlZmluZSBf
X1VLX0NPTU1PTl9MRFNfSAo+ICAKPiArI2luY2x1ZGUgPHVrL2FyY2gvbGltaXRzLmg+IC8qIGZv
ciBfX1BBR0VfU0laRSAqLwo+ICsKPiAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuICBTeW1ib2xz
IGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlCj4gICAqIHJlbGF0aXZlIHRvIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLgo+ICAgKi8K
PiBAQCAtNjQsNCArNjcsMzEgQEAKPiAgCS5kZWJ1Z19tYWNybyAgICAwIDogeyAqKC5kZWJ1Z19t
YWNybykgfQkJCQlcCj4gIAkuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0dHJp
YnV0ZXMpKSB9Cj4gIAo+ICsjZGVmaW5lIEVYQ0VQVElPTl9TRUNUSU9OUwkJCQkJCVwKPiArCS4g
PSBBTElHTihfX1BBR0VfU0laRSk7CQkJCQkJXAo+ICsJX19laF9mcmFtZV9zdGFydCA9IC47CQkJ
CQkJXAo+ICsJLmVoX2ZyYW1lIDoJCQkJCQkJXAo+ICsJewkJCQkJCQkJXAo+ICsJCSooLmVoX2Zy
YW1lKQkJCQkJCVwKPiArCQkqKC5laF9mcmFtZS4qKQkJCQkJCVwKPiArCX0JCQkJCQkJCVwKPiAr
CV9fZWhfZnJhbWVfZW5kID0gLjsJCQkJCQlcCj4gKwkJCQkJCQkJCVwKPiArCV9fZWhfZnJhbWVf
aGRyX3N0YXJ0ID0gLjsJCQkJCVwKPiArCS5laF9mcmFtZV9oZHIgOgkJCQkJCQlcCj4gKwl7CQkJ
CQkJCQlcCj4gKwkJKiguZWhfZnJhbWVfaGRyKQkJCQkJXAo+ICsJCSooLmVoX2ZyYW1lX2hkci4q
KQkJCQkJXAo+ICsJfQkJCQkJCQkJXAo+ICsJX19laF9mcmFtZV9oZHJfZW5kID0gLjsKPiArCj4g
KyNkZWZpbmUgQ1RPUlRBQl9TRUNUSU9OCQkJCQkJCVwKPiArCS4gPSBBTElHTihfX1BBR0VfU0la
RSk7CQkJCQkJXAo+ICsJdWtfY3RvcnRhYiA9IC47CQkJCQkJCVwKPiArCS51a19jdG9ydGFiIDoJ
CQkJCQkJXAo+ICsJewkJCQkJCQkJXAo+ICsJCUtFRVAoKihTT1JUX0JZX05BTUUoLnVrX2N0b3J0
YWJbMC03XSkpKQkJCVwKPiArCQlMT05HKDApCQkJCQkJCVwKPiArCX0KPiArCj4gICNlbmRpZiAv
KiBfX1VLX0NPTU1PTl9MRFNfSCAqLwo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi94ODYvbGlu
azY0LmxkcyBiL3BsYXQvY29tbW9uL3g4Ni9saW5rNjQubGRzCj4gZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0Cj4gaW5kZXggOTZmMzUzYjguLjAwMDAwMDAwCj4gLS0tIGEvcGxhdC9jb21tb24veDg2
L2xpbms2NC5sZHMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsNTkgKzAsMCBAQAo+IC0vKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gLS8qCj4gLSAqIEF1dGhvcnM6
IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4K
PiAtICoKPiAtICogQ29weXJpZ2h0IChjKSAyMDE5LCBQb2xpdGVobmljYSBVbml2ZXJzaXR5IG9m
IEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAtICoKPiAtICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4g
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwo+IC0gKiBhcmUgbWV0Ogo+IC0gKgo+IC0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+IC0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCj4gLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiAtICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KPiAtICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRl
ciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+IC0gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+IC0gKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+IC0g
Kgo+IC0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiAtICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+IC0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQo+IC0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gLSAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
PiAtICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKPiAtICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCj4gLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gLSAqIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+IC0gKgo+IC0gKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+IC0gKi8KPiAtCj4gLS4gPSBB
TElHTigweDEwMDApOwo+IC1fX2VoX2ZyYW1lX3N0YXJ0ID0gLjsKPiAtLmVoX2ZyYW1lIDoKPiAt
ewo+IC0JKiguZWhfZnJhbWUpCj4gLQkqKC5laF9mcmFtZS4qKQo+IC19Cj4gLV9fZWhfZnJhbWVf
ZW5kID0gLjsKPiAtCj4gLV9fZWhfZnJhbWVfaGRyX3N0YXJ0ID0gLjsKPiAtLmVoX2ZyYW1lX2hk
ciA6Cj4gLXsKPiAtCSooLmVoX2ZyYW1lX2hkcikKPiAtCSooLmVoX2ZyYW1lX2hkci4qKQo+IC19
Cj4gLV9fZWhfZnJhbWVfaGRyX2VuZCA9IC47Cj4gLQo+IC0uID0gQUxJR04oMHgxMDAwKTsKPiAt
dWtfY3RvcnRhYiA9IC47Cj4gLS51a19jdG9ydGFiIDoKPiAtewo+IC0gICAgS0VFUCgqKFNPUlRf
QllfTkFNRSgudWtfY3RvcnRhYlswLTddKSkpCj4gLSAgICBMT05HKDApCj4gLX0KPiAtCj4gZGlm
ZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9saW5rNjQubGRzLlMgYi9wbGF0L2t2bS9hcm0vbGluazY0
Lmxkcy5TCj4gaW5kZXggOTZkOWVkY2IuLjc1M2QxNjk2IDEwMDY0NAo+IC0tLSBhL3BsYXQva3Zt
L2FybS9saW5rNjQubGRzLlMKPiArKysgYi9wbGF0L2t2bS9hcm0vbGluazY0Lmxkcy5TCj4gQEAg
LTY5LDI1ICs2OSw3IEBAIFNFQ1RJT05TIHsKPiAgCS4gPSBBTElHTihfX1BBR0VfU0laRSk7Cj4g
IAlfZXRleHQgPSAuOwo+ICAKPiAtCS8qIEV4Y2VwdGlvbiBmcmFtZSAqLwo+IC0JX19laF9mcmFt
ZV9zdGFydCA9IC47Cj4gLQkuZWhfZnJhbWUgOgo+IC0Jewo+IC0JCSooLmVoX2ZyYW1lKQo+IC0J
CSooLmVoX2ZyYW1lLiopCj4gLQl9Cj4gLQlfX2VoX2ZyYW1lX2VuZCA9IC47Cj4gLQo+IC0JLyog
RXhjZXB0aW9uIGZyYW1lIGhlYWRlciAqLwo+IC0JX19laF9mcmFtZV9oZHJfc3RhcnQgPSAuOwo+
IC0JLmVoX2ZyYW1lX2hkciA6Cj4gLQl7Cj4gLQo+IC0JCSooLmVoX2ZyYW1lX2hkcikKPiAtCQkq
KC5laF9mcmFtZV9oZHIuKikKPiAtCX0KPiAtCS4gPSBBTElHTihfX1BBR0VfU0laRSk7Cj4gLQlf
X2VoX2ZyYW1lX2hkcl9lbmQgPSAuOwo+ICsJRVhDRVBUSU9OX1NFQ1RJT05TCj4gIAo+ICAJLyog
UmVhZC1vbmx5IGRhdGEgKi8KPiAgCV9yb2RhdGEgPSAuOwo+IEBAIC0xMDAsMTMgKzgyLDcgQEAg
U0VDVElPTlMgewo+ICAKPiAgCV9lcm9kYXRhID0gLjsKPiAgCj4gLQkuID0gQUxJR04oX19QQUdF
X1NJWkUpOwo+IC0JdWtfY3RvcnRhYiA9IC47Cj4gLQkudWtfY3RvcnRhYiA6Cj4gLQl7Cj4gLQkJ
S0VFUCgqKFNPUlRfQllfTkFNRSgudWtfY3RvcnRhYlswLTddKSkpCj4gLQkJTE9ORygwKQo+IC0J
fQo+ICsJQ1RPUlRBQl9TRUNUSU9OCj4gIAo+ICAJLyogQ29uc3RydWN0b3IgdGFibGVzIChyZWFk
LW9ubHkpICovCj4gIAkuID0gQUxJR04oMHg4KTsKPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2
L2xpbms2NC5sZHMuUyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKPiBpbmRleCAyYTI1OGU1
ZC4uNWM2M2U0YWYgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUwo+ICsr
KyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKPiBAQCAtNDMsNyArNDMsOSBAQCBTRUNUSU9O
Uwo+ICAJfQo+ICAJX2V0ZXh0ID0gLjsKPiAgCj4gLQlJTkNMVURFIHBsYXQvY29tbW9uL3g4Ni9s
aW5rNjQubGRzCj4gKwlFWENFUFRJT05fU0VDVElPTlMKPiArCj4gKwlDVE9SVEFCX1NFQ1RJT04K
PiAgCj4gIAkvKiBSZWFkLW9ubHkgZGF0YSAqLwo+ICAJLiA9IEFMSUdOKDB4MTAwMCk7Cj4gZGlm
ZiAtLWdpdCBhL3BsYXQvbGludXh1L2FybS9saW5rLmxkcy5TIGIvcGxhdC9saW51eHUvYXJtL2xp
bmsubGRzLlMKPiBpbmRleCA2ZjQ1ZmQ4Yi4uOGE3MzFjNWMgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9s
aW51eHUvYXJtL2xpbmsubGRzLlMKPiArKysgYi9wbGF0L2xpbnV4dS9hcm0vbGluay5sZHMuUwo+
IEBAIC0xLDExICsxLDcgQEAKPiArI2luY2x1ZGUgPGNvbW1vbi5sZHMuaD4KPiArCj4gIFNFQ1RJ
T05TCj4gIHsKPiAtICAgLiA9IEFMSUdOKDB4MTAwMCk7Cj4gLSAgIHVrX2N0b3J0YWIgPSAuOwo+
IC0gICAudWtfY3RvcnRhYiA6Cj4gLSAgIHsKPiAtICAgICAgIEtFRVAoKihTT1JUX0JZX05BTUUo
LnVrX2N0b3J0YWJbMC03XSkpKQo+IC0gICAgICAgTE9ORygwKQo+IC0gICB9Cj4gKwlDVE9SVEFC
X1NFQ1RJT04KPiAgfQo+ICBJTlNFUlQgQUZURVIgLnJvZGF0YQo+IGRpZmYgLS1naXQgYS9wbGF0
L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TIGIvcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUwo+
IGluZGV4IDA3N2FhZjY2Li40NjAzNDQ3NyAxMDA2NDQKPiAtLS0gYS9wbGF0L2xpbnV4dS94ODYv
bGluazY0Lmxkcy5TCj4gKysrIGIvcGxhdC9saW51eHUveDg2L2xpbms2NC5sZHMuUwo+IEBAIC0x
LDYgKzEsMTAgQEAKPiArI2luY2x1ZGUgPGNvbW1vbi5sZHMuaD4KPiArCj4gIFNFQ1RJT05TCj4g
IHsKPiAtICAgSU5DTFVERSBwbGF0L2NvbW1vbi94ODYvbGluazY0Lmxkcwo+ICsJRVhDRVBUSU9O
X1NFQ1RJT05TCj4gKwo+ICsJQ1RPUlRBQl9TRUNUSU9OCj4gIH0KPiAgSU5TRVJUIEFGVEVSIC5y
b2RhdGEKPiAgCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2FybS9saW5rMzIubGRzLlMgYi9wbGF0
L3hlbi9hcm0vbGluazMyLmxkcy5TCj4gaW5kZXggOWFmMjVmMTUuLjhiYmVmYTY0IDEwMDY0NAo+
IC0tLSBhL3BsYXQveGVuL2FybS9saW5rMzIubGRzLlMKPiArKysgYi9wbGF0L3hlbi9hcm0vbGlu
azMyLmxkcy5TCj4gQEAgLTQ5LDI2ICs0OSw3IEBAIFNFQ1RJT05TCj4gIAo+ICAJX2V0ZXh0ID0g
LjsJCQkvKiBFbmQgb2YgdGV4dCBzZWN0aW9uICovCj4gIAo+IC0JLyogRXhjZXB0aW9uIGZyYW1l
ICovCj4gLQkuID0gQUxJR04oNDA5Nik7Cj4gLQlfX2VoX2ZyYW1lX3N0YXJ0ID0gLjsKPiAtCS5l
aF9mcmFtZSA6Cj4gLQl7Cj4gLQkJKiguZWhfZnJhbWUpCj4gLQkJKiguZWhfZnJhbWUuKikKPiAt
CX0KPiAtCV9fZWhfZnJhbWVfZW5kID0gLjsKPiAtCj4gLQo+IC0JLyogRXhjZXB0aW9uIGZyYW1l
IGhlYWRlciAqLwo+IC0JX19laF9mcmFtZV9oZHJfc3RhcnQgPSAuOwo+IC0JLmVoX2ZyYW1lX2hk
ciA6Cj4gLQl7Cj4gLQkJKiguZWhfZnJhbWVfaGRyKQo+IC0JCSooLmVoX2ZyYW1lX2hkci4qKQo+
IC0JfQo+IC0JLiA9IEFMSUdOKDQwOTYpOwo+IC0JX19laF9mcmFtZV9oZHJfZW5kID0gLjsKPiAr
CUVYQ0VQVElPTl9TRUNUSU9OUwo+ICAKPiAgCS8qIFJlYWQtb25seSBkYXRhICovCj4gIAlfcm9k
YXRhID0gLjsKPiBAQCAtODAsMTMgKzYxLDcgQEAgU0VDVElPTlMKPiAgCS4gPSBBTElHTig0MDk2
KTsKPiAgCV9lcm9kYXRhID0gLjsKPiAgCj4gLQl1a19jdG9ydGFiID0gLjsKPiAtCS51a19jdG9y
dGFiIDoKPiAtCXsKPiAtCQlLRUVQKCooU09SVF9CWV9OQU1FKC51a19jdG9ydGFiWzAtN10pKSkK
PiAtCQlMT05HKDApCj4gLQl9Cj4gLQkuID0gQUxJR04oNDA5Nik7Cj4gKwlDVE9SVEFCX1NFQ1RJ
T04KPiAgCj4gIAkuID0gQUxJR04oMHg4KTsKPiAgCV9jdG9ycyA9IC47Cj4gZGlmZiAtLWdpdCBh
L3BsYXQveGVuL3g4Ni9saW5rNjQubGRzLlMgYi9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TCj4g
aW5kZXggNDRhOWRlYjkuLjExNmExMmU4IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4Ni9saW5r
NjQubGRzLlMKPiArKysgYi9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TCj4gQEAgLTQxLDcgKzQx
LDkgQEAgU0VDVElPTlMKPiAgCj4gIAlfZXRleHQgPSAuOwkJCS8qIEVuZCBvZiB0ZXh0IHNlY3Rp
b24gKi8KPiAgCj4gLQlJTkNMVURFIHBsYXQvY29tbW9uL3g4Ni9saW5rNjQubGRzCj4gKwlFWENF
UFRJT05fU0VDVElPTlMKPiArCj4gKwlDVE9SVEFCX1NFQ1RJT04KPiAgCj4gIAlfcm9kYXRhID0g
LjsKPiAgCS5yb2RhdGEgOiB7Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 10:29:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 10:29: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 1hXNjd-0001Ei-Lb; Sun, 02 Jun 2019 10:29:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXNjc-0001Ea-RS
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 10:29:04 +0000
X-Inumbo-ID: 3dd8f64a-8521-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 3dd8f64a-8521-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 10:29:03 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id h1so9339109wro.4
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 03:29:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=OkJiTyDIuP3O4CVY+BX4PHfCEd8xtcoKqQf2R8IEmVM=;
 b=aapaecZo+TQXeiHEVL38OfYmtB8OyyTCr8AiQUPLyafrTth0wSAjm5M2CX1jfKsk7g
 mCiF6e7TBubPKE1vjEs3gYsKN99kQ+CvSGDC65TjAta8kZQ3GJPl/2FCg3jxNq2xuMXj
 85v7Tt0JOstUALt7vdAd/WpBEg/Qm91ZxUvU8Okw0wYiY2eCjglIhI53tyMPV/apS98c
 z5IDx90ro1u77YTCy2qkQ7PbCzIU+wL4GotW4b/ECgaVOe4ft4yKGCvWRlqkesWv4eVY
 NBUSEiv25AXBAYpAfKotoLPnEgKJJFFfeYgBZvtoO5o/jDsiYa21OPiCIvODYYRM+LJs
 6deQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=OkJiTyDIuP3O4CVY+BX4PHfCEd8xtcoKqQf2R8IEmVM=;
 b=RAlgWHkf4dWDDMDCnNXbUfo6pDhlb6WGAyUWNoyuhgckOTA0ebQWpsnkWFa8OWCx6i
 c966sgdvohjRnnnPJWwEIEYL/UCLsxbqRxlEi3ixFFU1Kqa9R47NtFgsPzdu2q69j8sZ
 Z+XlKJB97JKySYp7ZV26Rnl5BdZVWQxqAHpIk3mX0vRMZktY+2Q2sPGdWmdsMiMTI3Nj
 GfpCXckd/3a9yW+dJS0oiRNe5OEWzwwa3VBZ+D5fMz4wLuJ8SoZ79jY/rIXuTIXi5uXv
 HWEyoP1iv7S1NCuLsJKOuOUxqCNqEPqr+ZApBNeGJM9Vw583SHGsH9kO/TobWWdyw8rv
 MLCA==
X-Gm-Message-State: APjAAAWRiobL7CCn1dAjwAy+cWhPareBjyvs2UvaMwQQoGdTn8u+2SRQ
 Tw44xG/3Skotc4yZlagaQUhLrSUd
X-Google-Smtp-Source: APXvYqwTPhU4OkUyESP8aTOFhe1cEjM4QlWTaCgrzahBOMcEnGVsC3VI4sg3h9Qb9Pv23lUEQ2o2Eg==
X-Received: by 2002:adf:ee0e:: with SMTP id y14mr11981453wrn.275.1559471342270; 
 Sun, 02 Jun 2019 03:29:02 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id r8sm9692501wrt.92.2019.06.02.03.29.01
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 03:29:01 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190602060236.6597-1-florian.schmidt@neclab.eu>
 <20190602060236.6597-5-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <990d4893-82d4-9618-41db-d0dc56bfbcd6@gmail.com>
Date: Sun, 2 Jun 2019 13:29:00 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602060236.6597-5-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 4/7] plat: prepare linker
 script for thread-local storage
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBwYXRjaCBsb29rcyBnb29kIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+CgpPbiA2LzIvMTkgOTowMiBBTSwgRmxvcmlhbiBTY2htaWR0IHdyb3Rl
Ogo+IEFnZ3JlZ2F0ZSBhbGwgLnRkYXRhIGFuZCAudGJzcyB2YXJpYWJsZXMgaW4gdGhlIGNvcnJl
Y3Qgc2VjdGlvbnMsIGFuZAo+IGRlZmluZSBnbG9iYWwgdmFyaWFibGVzIHRoYXQgcG9pbnQgYXQg
c2VjdGlvbiBiZWdpbm5pbmcgYW5kIGVuZC4KPiAKPiBOb3RlIHRoYXQgYmVjYXVzZSB0aGUgLnRi
c3Mgc2VjdGlvbiBpcyB6ZXJvLXNpemUgaW4gdGhlIEVMRiBmaWxlLCBqdXN0Cj4gc2V0dGluZyBf
dGxzX2VuZCB0byB0aGUgZW5kIG9mIGl0IGRvZXNuJ3QgZ2l2ZSB1cyB0aGUgdGhlIHNpemUgb2Yg
dGhlCj4gbWVtb3J5IGFyZWEgb25jZSBsb2FkZWQsIHNvIHdlIHVzZSBTSVpFT0YgdG8gaGF2ZSBp
dCBwb2ludCB0byB0aGUgZW5kLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8
Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiAtLS0KPiAgcGxhdC9jb21tb24vaW5jbHVkZS9j
b21tb24ubGRzLmggfCAxOSArKysrKysrKysrKysrKysrKysrCj4gIHBsYXQvY29tbW9uL2luY2x1
ZGUvc2VjdGlvbnMuaCAgIHwgIDUgKysrKysKPiAgcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyAg
ICAgICAgfCAgMiArKwo+ICBwbGF0L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TICAgICB8ICA2ICsr
KysrKwo+ICBwbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TICAgICAgICB8ICAyICsrCj4gIDUgZmls
ZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1v
bi9pbmNsdWRlL2NvbW1vbi5sZHMuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvY29tbW9uLmxkcy5o
Cj4gaW5kZXggZGI5NTFjNTQuLjVjY2FhZGIzIDEwMDY0NAo+IC0tLSBhL3BsYXQvY29tbW9uL2lu
Y2x1ZGUvY29tbW9uLmxkcy5oCj4gKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9jb21tb24ubGRz
LmgKPiBAQCAtOTQsNCArOTQsMjMgQEAKPiAgCQlMT05HKDApCQkJCQkJCVwKPiAgCX0KPiAgCj4g
KyNkZWZpbmUgVExTX1NFQ1RJT05TCQkJCQkJCVwKPiArCS4gPSBBTElHTigweDgpOwkJCQkJCQlc
Cj4gKwlfdGxzX3N0YXJ0ID0gLjsJCQkJCQkJXAo+ICsJLnRkYXRhIDoJCQkJCQkJXAo+ICsJewkJ
CQkJCQkJXAo+ICsJCSooLnRkYXRhKQkJCQkJCVwKPiArCQkqKC50ZGF0YS4qKQkJCQkJCVwKPiAr
CQkqKC5nbnUubGlua29uY2UudGQuKikJCQkJCVwKPiArCX0JCQkJCQkJCVwKPiArCV9ldGRhdGEg
PSAuOwkJCQkJCQlcCj4gKwkudGJzcyA6CQkJCQkJCQlcCj4gKwl7CQkJCQkJCQlcCj4gKwkJKigu
dGJzcykJCQkJCQlcCj4gKwkJKigudGJzcy4qKQkJCQkJCVwKPiArCQkqKC5nbnUubGlua29uY2Uu
dGIuKikJCQkJCVwKPiArCQkuID0gQUxJR04oMHg4KTsJCQkJCQlcCj4gKwl9CQkJCQkJCQlcCj4g
KwlfdGxzX2VuZCA9IC4gKyBTSVpFT0YoLnRic3MpOwo+ICsKPiAgI2VuZGlmIC8qIF9fVUtfQ09N
TU9OX0xEU19IICovCj4gZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMu
aCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvc2VjdGlvbnMuaAo+IGluZGV4IDEwNTJjZmM3Li5hMjY3
N2NlOCAxMDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgKPiArKysg
Yi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NlY3Rpb25zLmgKPiBAQCAtNjMsNiArNjMsMTEgQEAgZXh0
ZXJuIGNoYXIgX2RhdGFbXSwgX2VkYXRhW107Cj4gIC8qIFtfY3RvcnMsIF9lY3RvcnNdOiBjb250
YWlucyBjb25zdHJ1Y3RvciB0YWJsZXMgKHJlYWQtb25seSkgKi8KPiAgZXh0ZXJuIGNoYXIgX2N0
b3JzW10sIF9lY3RvcnNbXTsKPiAgCj4gKy8qIFtfdGxzX3N0YXJ0LCBfdGxzX2VuZF06IGNvbnRh
aW5zIC50ZGF0YS4qIGFuZCAudGJzcy4qIHNlY3Rpb25zICovCj4gK2V4dGVybiBjaGFyIF90bHNf
c3RhcnRbXSwgX3Rsc19lbmRbXTsKPiArLyogX2V0ZGF0YTogZGVub3RlcyBlbmQgb2YgLnRkYXRh
IChhbmQgc3RhcnQgb2YgLnRic3MgKi8KPiArZXh0ZXJuIGNoYXIgX2V0ZGF0YVtdOwo+ICsKPiAg
LyogX19ic3Nfc3RhcnQ6IHN0YXJ0IG9mIEJTUyBzZWN0aW9ucyAqLwo+ICBleHRlcm4gY2hhciBf
X2Jzc19zdGFydFtdOwo+ICAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMu
UyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKPiBpbmRleCAwMTFlNjIzMi4uMzYyYmEzZTYg
MTAwNjQ0Cj4gLS0tIGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUwo+ICsrKyBiL3BsYXQva3Zt
L3g4Ni9saW5rNjQubGRzLlMKPiBAQCAtNzYsNiArNzYsOCBAQCBTRUNUSU9OUwo+ICAJfQo+ICAJ
X2VjdG9ycyA9IC47Cj4gIAo+ICsJVExTX1NFQ1RJT05TCj4gKwo+ICAJLyogUmVhZC13cml0ZSBk
YXRhIChpbml0aWFsaXplZCkgKi8KPiAgCS4gPSBBTElHTihfX1BBR0VfU0laRSk7Cj4gIAlfZGF0
YSA9IC47Cj4gZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMgYi9wbGF0
L2xpbnV4dS94ODYvbGluazY0Lmxkcy5TCj4gaW5kZXggNDYwMzQ0NzcuLmI2ZjU4MWNlIDEwMDY0
NAo+IC0tLSBhL3BsYXQvbGludXh1L3g4Ni9saW5rNjQubGRzLlMKPiArKysgYi9wbGF0L2xpbnV4
dS94ODYvbGluazY0Lmxkcy5TCj4gQEAgLTgsMyArOCw5IEBAIFNFQ1RJT05TCj4gIH0KPiAgSU5T
RVJUIEFGVEVSIC5yb2RhdGEKPiAgCj4gK1NFQ1RJT05TCj4gK3sKPiArCVRMU19TRUNUSU9OUwo+
ICt9Cj4gKwo+ICtJTlNFUlQgQkVGT1JFIC5kYXRhCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL3g4
Ni9saW5rNjQubGRzLlMgYi9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TCj4gaW5kZXggZmY2OWY4
MzAuLmY3ZTUzZmU2IDEwMDY0NAo+IC0tLSBhL3BsYXQveGVuL3g4Ni9saW5rNjQubGRzLlMKPiAr
KysgYi9wbGF0L3hlbi94ODYvbGluazY0Lmxkcy5TCj4gQEAgLTcyLDYgKzcyLDggQEAgU0VDVElP
TlMKPiAgCS4gPSBBTElHTihfX1BBR0VfU0laRSk7Cj4gIAlfZWN0b3JzID0gLjsKPiAgCj4gKwlU
TFNfU0VDVElPTlMKPiArCj4gIAkvKiBEYXRhICovCj4gIAlfZGF0YSA9IC47Cj4gIAkuZGF0YSA6
IHsKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 11:49:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 11:49: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 1hXOzF-0007k5-QS; Sun, 02 Jun 2019 11:49:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=S28B=UB=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXOzE-0007k0-NU
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 11:49:16 +0000
X-Inumbo-ID: 705b45d9-852c-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 705b45d9-852c-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 11:49:12 +0000 (UTC)
IronPort-SDR: hX2NfCZAT20mbY4k5YnkGbpXUU3ofvXhFf+AE0wnf1JsBs2cx0/r8Nf7zlmIJNuLo/1W8h0Xwl
 pW2YAC9LtogA==
IronPort-PHdr: =?us-ascii?q?9a23=3AEsRbTR1RCzTBBK9HsmDT+DRfVm0co7zxezQtwd?=
 =?us-ascii?q?8ZseIXKPad9pjvdHbS+e9qxAeQG9mCsrQd0Led7/yocFdDyK7JiGoFfp1IWk?=
 =?us-ascii?q?1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBA?=
 =?us-ascii?q?j0OxZrKeTpAI7SiNm82/yv95HJbAhEmSexbalvIBi4rQjducYbjIR/Iast1x?=
 =?us-ascii?q?XFpWdFdf5Lzm1yP1KTmBj85sa0/JF99ilbpuws+c1dX6jkZqo0VbNXAigoPG?=
 =?us-ascii?q?Az/83rqALMTRCT6XsGU2UZiQRHDg7Y5xznRJjxsy/6tu1g2CmGOMD9UL45VS?=
 =?us-ascii?q?i+46ptVRTljjoMOTwk/2HNksF+jLxVrg+vqRJ8xIDZe52ZOOZkc6/BZ94WWX?=
 =?us-ascii?q?ZNU8BMXCJBGIO8aI4PAvIfMOZftIn9u1oOrR2jDgeqGePv0iJIjWLx0KIm1O?=
 =?us-ascii?q?QhCh3G3A0mH94UtHTUsc31NLoJXO+p16nE1y3Db+5N1jvn8ojIdQksrPeRVr?=
 =?us-ascii?q?xzacrc0VQjGgzYglmKqoHoPymZ2voTv2WZ9eZtW/qjh3Mopg1suDSixcchhp?=
 =?us-ascii?q?PXio8bxF3I7zh1zYkrKdC+VUV1e8SrEIFKuCGfL4Z2R8QiTHx2tysi0b0GvI?=
 =?us-ascii?q?K7fDANyJQ62x7Tc/yHfJaM4hLkTOuRPzJ4i2hkeLK7nRq97VOgxvfkVsmpy1?=
 =?us-ascii?q?lGtDBFkt7UunAM0Rzc9NSHR+Ng8kquxDqDzQPe5+FeLUwqi6bWKYQtz7Aomp?=
 =?us-ascii?q?oWq0vDHyv2mEvsjK+Rc0Up4vSn6+P8YrX6p5+cMZV4igXjMqQ2h8yyGvg3Mh?=
 =?us-ascii?q?MUU2iD5OSzz6fv/Vf+QLlSlP05jrHZsIzGJcQcvqO5Bg5V0oAi6xa4FDeqyc?=
 =?us-ascii?q?kXkmcZLF1bfBKKlIzpO1DVIPDkFvezmVutnyltx/zcOb3hGJrNJGDZkLj9Zb?=
 =?us-ascii?q?Z991JcyA0rwNBR+Z1UDrABIOrtVUPrtNzYEx45PBC1w+v8DtVyyJ8RWWaVDa?=
 =?us-ascii?q?CCKq/dr0KItaoTJLyJZYkUvy24J/U76vrGiX4ihURbbaSvm5wNZyOWBPNjdm?=
 =?us-ascii?q?6eembthJ8lDH8X9l41S/f2iVvEVSNLel65ROQk+zt9EoXwXtSLfZyknLHUhH?=
 =?us-ascii?q?TzJZZRfG0TUl0=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2D5AwA+t/NcjAPjVY1lHgEGBwaBZYJ?=
 =?us-ascii?q?6UgEBHhIojQ+mcQkBAQEpEQECAQGEQIMpOBMBAwEBBQEBAQEEARMBAQEmTAy?=
 =?us-ascii?q?COiKDbk+BAoMiAYIOqR6FR4MegUaBNIcDhi4/hGGFEYUVBJQulEsHAoIPWgS?=
 =?us-ascii?q?FYYxnJ4MKk2MBpHU3IIFZMxqDXwmBWwFEi1CCXDwBATGBBgEBjwsBAQ?=
X-IPAS-Result: =?us-ascii?q?A2D5AwA+t/NcjAPjVY1lHgEGBwaBZYJ6UgEBHhIojQ+mc?=
 =?us-ascii?q?QkBAQEpEQECAQGEQIMpOBMBAwEBBQEBAQEEARMBAQEmTAyCOiKDbk+BAoMiA?=
 =?us-ascii?q?YIOqR6FR4MegUaBNIcDhi4/hGGFEYUVBJQulEsHAoIPWgSFYYxnJ4MKk2MBp?=
 =?us-ascii?q?HU3IIFZMxqDXwmBWwFEi1CCXDwBATGBBgEBjwsBAQ?=
X-IronPort-AV: E=Sophos;i="5.60,542,1549922400"; 
   d="scan'208";a="3482094"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 02 Jun 2019 14:49:00 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 5B5401A60052;
 Sun,  2 Jun 2019 14:49:01 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 5YYc6DsEffcV; Sun,  2 Jun 2019 14:49:01 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 41C3C1A60101;
 Sun,  2 Jun 2019 14:49:01 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id ui-tm-QZ3SKj; Sun,  2 Jun 2019 14:49:01 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 254311A60052;
 Sun,  2 Jun 2019 14:49:01 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun,  2 Jun 2019 14:48:55 +0300
Message-Id: <20190602114855.18487-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/ukunistd: Move utsname.h to
 uksysinfo library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

Q29tbWl0IGJiY2I2MGNlIHdyb25nZnVsbHkgbW92ZWQgdGhpcyBoZWFkZXIgdG8gdWt1bmlzdGQg
bGlicmFyeSBpbnN0ZWFkIG9mCnVrc3lzaW5mbywgd2hlcmUgdW5hbWUoKSBpbXBsZW1lbnRhdGlv
biBpcyBwbGFjZWQuCgpTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPgotLS0KIGxpYi91a3N5c2luZm8vTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAzICsrKwogbGliL3t1a3VuaXN0ZCA9PiB1a3N5c2luZm99L2luY2x1ZGUvc3lzL3V0
c25hbWUuaCB8IDAKIGxpYi91a3VuaXN0ZC9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAzIC0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRp
b25zKC0pCiByZW5hbWUgbGliL3t1a3VuaXN0ZCA9PiB1a3N5c2luZm99L2luY2x1ZGUvc3lzL3V0
c25hbWUuaCAoMTAwJSkKCmRpZmYgLS1naXQgYS9saWIvdWtzeXNpbmZvL01ha2VmaWxlLnVrIGIv
bGliL3Vrc3lzaW5mby9NYWtlZmlsZS51awppbmRleCA3MDdjNjlmNC4uMjhlOTlmYjUgMTAwNjQ0
Ci0tLSBhL2xpYi91a3N5c2luZm8vTWFrZWZpbGUudWsKKysrIGIvbGliL3Vrc3lzaW5mby9NYWtl
ZmlsZS51awpAQCAtMSwzICsxLDYgQEAKICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsdWtzeXNpbmZv
LCQoQ09ORklHX1VLU1lTSU5GTykpKQogCitDSU5DTFVERVMtJChDT05GSUdfVUtTWVNJTkZPKSAg
ICArPSAtSSQoVUtTWVNJTkZPX0JBU0UpL2luY2x1ZGUKK0NYWElOQ0xVREVTLSQoQ09ORklHX1VL
U1lTSU5GTykgICs9IC1JJChVS1NZU0lORk9fQkFTRSkvaW5jbHVkZQorCiBVS1NZU0lORk9fU1JD
Uy0kKENPTkZJR19VS1NZU0lORk8pICs9ICQoVUtTWVNJTkZPX0JBU0UpL3N5c2luZm8uYwpkaWZm
IC0tZ2l0IGEvbGliL3VrdW5pc3RkL2luY2x1ZGUvc3lzL3V0c25hbWUuaCBiL2xpYi91a3N5c2lu
Zm8vaW5jbHVkZS9zeXMvdXRzbmFtZS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJv
bSBsaWIvdWt1bmlzdGQvaW5jbHVkZS9zeXMvdXRzbmFtZS5oCnJlbmFtZSB0byBsaWIvdWtzeXNp
bmZvL2luY2x1ZGUvc3lzL3V0c25hbWUuaApkaWZmIC0tZ2l0IGEvbGliL3VrdW5pc3RkL01ha2Vm
aWxlLnVrIGIvbGliL3VrdW5pc3RkL01ha2VmaWxlLnVrCmluZGV4IDBhZDljNTZhLi4zYzdhODIy
OSAxMDA2NDQKLS0tIGEvbGliL3VrdW5pc3RkL01ha2VmaWxlLnVrCisrKyBiL2xpYi91a3VuaXN0
ZC9NYWtlZmlsZS51awpAQCAtMSw2ICsxLDMgQEAKICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsdWt1
bmlzdGQsJChDT05GSUdfVUtVTklTVEQpKSkKIAotQ0lOQ0xVREVTLSQoQ09ORklHX1VLVU5JU1RE
KSAgICArPSAtSSQoVUtVTklTVERfQkFTRSkvaW5jbHVkZQotQ1hYSU5DTFVERVMtJChDT05GSUdf
VUtVTklTVEQpICArPSAtSSQoVUtVTklTVERfQkFTRSkvaW5jbHVkZQotCiBVS1VOSVNURF9TUkNT
LSQoQ09ORklHX1VLVU5JU1REKSArPSAkKFVLVU5JU1REX0JBU0UpL3VzZXIuYwotLSAKMi4yMC4x
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 13:28:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 13:28: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 1hXQWj-0007MM-NL; Sun, 02 Jun 2019 13:27: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=S28B=UB=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXQWi-0007MH-Gm
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 13:27:56 +0000
X-Inumbo-ID: 38a23626-853a-11e9-8231-33ab7d7ebb0e
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 38a23626-853a-11e9-8231-33ab7d7ebb0e;
 Sun, 02 Jun 2019 13:27:52 +0000 (UTC)
IronPort-SDR: MoGqLQl6Uo8B2D8wRkWNJ+Hij5lOxixojqQiYykGdC/gXvLwQObUlSKFgD9gDyU6rMIE7i2i3y
 rj36uJ73MIiw==
IronPort-PHdr: =?us-ascii?q?9a23=3ATZjodBSPZFiTky+Mbn5uRPwFkdpsv+yvbD5Q0Y?=
 =?us-ascii?q?Iujvd0So/mwa6yZRaN2/xhgRfzUJnB7Loc0qyK6vmmADddqsja+Fk5M7V0Hy?=
 =?us-ascii?q?cfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFR?=
 =?us-ascii?q?rwLxd6KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/IAiroQnLq8Ubj4tvJqkwxx?=
 =?us-ascii?q?bHv3BFZ/lYyWR0KFyJgh3y/N2w/Jlt8yRRv/Iu6ctNWrjkcqo7ULJVEi0oP3?=
 =?us-ascii?q?g668P3uxbDSxCP5mYHXWUNjhVIGQnF4wrkUZr3ryD3q/By2CiePc3xULA0RT?=
 =?us-ascii?q?Gv5LplRRP0lCsKMSMy/WfKgcJyka1bugqsqRxhzYDJbo+bN/1wc7jBcd8GX2?=
 =?us-ascii?q?dNQtxcWzBdDo66coABD/ABPeFdr4TluVYOqgC+BRWtBOPp1zRGgGL23bUn0+?=
 =?us-ascii?q?88FgzJwAsgH8kSsHTVqtX5LqMSUf2tzKnV1jjMc+hW1S3l6IjVaR8tu+uMXb?=
 =?us-ascii?q?VpfMfX1EIhFBvFg02NpYHqIj+ZzOcAvmiB4+Z+S+6iiXQrpg9prjSyycogl5?=
 =?us-ascii?q?PFi4EVx1ze6yl0zog4KcelREN0f9KpFoZbuTuAOItsWMwiRnlluCM9yrIbp5?=
 =?us-ascii?q?G2ZDMKyJE7xx7HbPyHbpSI7grjVOmPJTd4g2poeKy6hxmo8EigzvfwWdWv0F?=
 =?us-ascii?q?pQtipFj8LDumoX1xzU8sSHS/198Vm92TuXygze5fxILVo3mKfbMZIt3KA8m5?=
 =?us-ascii?q?gJvUnNBiP2nV/5jK6SdkUq4Oio7OHnb636qZ+bLI90lgD+MqI0lsy7HOQ4Kh?=
 =?us-ascii?q?UOUnOH9uSnzrHj5VD5T65Qgv0slanVqIraKtgDpq6lHw9V1Z4u6xO+Dzeg0d?=
 =?us-ascii?q?QYmmIHIEtYdx2ZkYjmJVXOLev8Dfe+mFSsjCxry+rJP7L/BJXBNH/DkK3ufb?=
 =?us-ascii?q?xl8U5T1BIzzcxD55JTErwBLuz8WkvwtNzAEBA1KQy0w/vmCNph14MTQmSPDb?=
 =?us-ascii?q?GFP6PWq1CH/fgjLPeRZNxdhDGoLvkj5vn1yHM0h1IZVa2oxocMLmC1GLJhOU?=
 =?us-ascii?q?rKT2Drh4IqFnwWvwx2aPHylRXWWjlIe3e0GaYh/iwTA5ngFZrJAJqq1u/SlB?=
 =?us-ascii?q?ynF4FbMzgVQmuHFm3lIt2J?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2D1AAC6zfNcjAPjVY1lHgEGBwaBVAY?=
 =?us-ascii?q?LAYJ6UwEwKI0PpnEJAQEBKREBAgEBhECDKTcGDgEDAQEFAQEBAQQBEwEBASZ?=
 =?us-ascii?q?MDII6IoNuT4ECgyIBgg6pH4VHgx6BRoE0hwOGLj+JcoUVBJQulEsHAoIPWgS?=
 =?us-ascii?q?FYYxnJ4MKk2SkdTYhgVkzGoNfCYFbAUSLUIJcPAEBMYEGAQGPGAEB?=
X-IPAS-Result: =?us-ascii?q?A2D1AAC6zfNcjAPjVY1lHgEGBwaBVAYLAYJ6UwEwKI0Pp?=
 =?us-ascii?q?nEJAQEBKREBAgEBhECDKTcGDgEDAQEFAQEBAQQBEwEBASZMDII6IoNuT4ECg?=
 =?us-ascii?q?yIBgg6pH4VHgx6BRoE0hwOGLj+JcoUVBJQulEsHAoIPWgSFYYxnJ4MKk2Skd?=
 =?us-ascii?q?TYhgVkzGoNfCYFbAUSLUIJcPAEBMYEGAQGPGAEB?=
X-IronPort-AV: E=Sophos;i="5.60,542,1549922400"; 
   d="scan'208";a="3482279"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 02 Jun 2019 16:27:51 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 8062E1A6025B;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 7Gj99kHj1RR2; Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 629C31A60264;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id JpW-CG0iIqZO; Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 4C2F71A6023F;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun,  2 Jun 2019 16:27:43 +0300
Message-Id: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/COMPILER-RT PATCH] Supress
 unused-parameter warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

T3JpZ2luIGNvZGUgZ2VuZXJhdGVzICJ1bnVzZWQtcGFyYW1ldGVyIiB3YXJuaW5ncy4KClNpZ25l
ZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogTWFrZWZp
bGUudWsgfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKCmRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IDY4NWQ0NmUuLjRkNzhiNGEgMTAw
NjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC03Myw2ICs3MywxMCBA
QCBDT05GSUdfRkxBR1MJKz0gLURfX3g4Nl82NF9fCiBMSUJDT01QSUxFUl9SVF9DRkxBR1MteSAg
ICArPSAgJChDT05GSUdfRkxBR1MpCiBMSUJDT01QSUxFUl9SVF9DWFhGTEFHUy15ICAgICs9ICAk
KENPTkZJR19GTEFHUykKIAorU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVy
CitMSUJDT01QSUxFUl9SVF9DRkxBR1MteSAgICs9ICQoU1VQUFJFU1NfRkxBR1MpCitMSUJDT01Q
SUxFUl9SVF9DWFhGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpCisKICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiAjIExpYnJhcnkgc291cmNlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS0g
CjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 13:28:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 13:28: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 1hXQWm-0007Mn-Or; Sun, 02 Jun 2019 13:28: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=S28B=UB=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXQWl-0007MS-No
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 13:27:59 +0000
X-Inumbo-ID: 3b73edea-853a-11e9-b4a1-a7bb574b77d8
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 3b73edea-853a-11e9-b4a1-a7bb574b77d8;
 Sun, 02 Jun 2019 13:27:56 +0000 (UTC)
IronPort-SDR: 8ZSzsCe1QvL/wNAeKJNLM8tN+lF/vNBnbL2R6zh0gRNjuSKpq2RrOrdi4VVNc4nVNDqw9e9ih/
 bwCcCRDTiI+Q==
IronPort-PHdr: =?us-ascii?q?9a23=3AYebxzxxm4B1zdk7XCy+O+j09IxM/srCxBDY+r6?=
 =?us-ascii?q?Qd2+sQIJqq85mqBkHD//Il1AaPAdyCrasf1qGI6OjJYi8p2d65qncMcZhBBV?=
 =?us-ascii?q?cuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx?=
 =?us-ascii?q?7xKRR6JvjvGo7Vks+7y/2+94fcbglVmTaxe65+IRu2oAnet8Qbj5ZpJ7osxB?=
 =?us-ascii?q?fOvnZGYfldy3lyJVKUkRb858Ow84Bm/i9Npf8v9NNOXLvjcaggQrNWEDopM2?=
 =?us-ascii?q?Yu5M32rhbDVheA5mEdUmoNjBVFBRXO4QzgUZfwtiv6sfd92DWfMMbrQ704RS?=
 =?us-ascii?q?iu4qF2QxLulSwJNSM28HvPh8JwkqxVvRyvqR94zYHWboGYL+Zycr/HcN8GX2?=
 =?us-ascii?q?dNQtpdWipcCY28dYsPCO8BMP5Goon6vFsOsRq+BQ+xD+3p1z9InmL21rA93u?=
 =?us-ascii?q?s9FgHGxxAgH9MIsHjOqNX1Kb8SUf2uwabU1jXPdetW2Srm54TSaBAhpuiBUL?=
 =?us-ascii?q?RtesTS0UkiDx7Jg1qNpYD/PD6Y1v4Bv3aF4+diT+6ihXYrpxx+rzSy3MshiY?=
 =?us-ascii?q?nEipgLxl3K+yh12ps5KNKmREN9fNWqCoFftzuAOItzWs4iRmZotzskxbAeop?=
 =?us-ascii?q?67eTQKyIwgxx7Cd/yLa4iI7QznVOaWOTp4mndld6i+hxa260Sv1vb8WtOs0F?=
 =?us-ascii?q?ZXtSVJiMPMtncV2xzS7MiIVOd981+81TuAygzf8OJJLEAumabFNZIswKQ8m5?=
 =?us-ascii?q?QLvUTGBCD2mUH2jKGMdkUj/+il8/joYrL9pp+ANo90jBvyMqAzmsynHOQ1KR?=
 =?us-ascii?q?QBX3OB9eSkyb3s5lf1QK9NjvEuiKnWrIjaJdgHpq6+GwJV14cj6xC+Dzehy9?=
 =?us-ascii?q?QUhGQII0xbeB2Zi4jkIFXOIPHjDfejmFSgijhqyO7APrH7BZXNNHfDmq/7fb?=
 =?us-ascii?q?lh805c1BYzzddH6pJaFL4BJPPzWlfvu9DCDh85Lg20zPrmCNhm0IMRR36AAq?=
 =?us-ascii?q?uDP6zJq1OH+P8vcKGwY9oQuTD8LONg6/PwgHsRnV4GYbLvzZYRLneiEadIOU?=
 =?us-ascii?q?KcNFHrmcsAFy8uoxIjBLjhj0aeUDgVY2uqQoo3/XcjFYjgF4CVFdPlu6CIwC?=
 =?us-ascii?q?ruRs4eXWtBEF3ZSXo=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BVAwC6zfNcjAPjVY1lHQEBBQEHBQG?=
 =?us-ascii?q?BZYJ7UwEwKI0PpnEJAQEBKREBAgEBhEACgyc4EwEDAQEFAQEBAQQBEwEBASZ?=
 =?us-ascii?q?MDII6IoJvBnkQPxJXGYMiAYIOqR+FR4MegUaBNIcDhi4/g3WEeYEEhRUElC6?=
 =?us-ascii?q?USwcCgg9aBIVhjGcngwqTZKR1NyCBWTMag18JgiCLUIJcPAEBMYEGAQGMRoJ?=
 =?us-ascii?q?SAQE?=
X-IPAS-Result: =?us-ascii?q?A2BVAwC6zfNcjAPjVY1lHQEBBQEHBQGBZYJ7UwEwKI0Pp?=
 =?us-ascii?q?nEJAQEBKREBAgEBhEACgyc4EwEDAQEFAQEBAQQBEwEBASZMDII6IoJvBnkQP?=
 =?us-ascii?q?xJXGYMiAYIOqR+FR4MegUaBNIcDhi4/g3WEeYEEhRUElC6USwcCgg9aBIVhj?=
 =?us-ascii?q?GcngwqTZKR1NyCBWTMag18JgiCLUIJcPAEBMYEGAQGMRoJSAQE?=
X-IronPort-AV: E=Sophos;i="5.60,542,1549922400"; 
   d="scan'208";a="3482281"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 02 Jun 2019 16:27:51 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 8D8641A6025B;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id RSdGrd6KG8UU; Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 73EA41A6023F;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id W-5q359J1BgI; Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 53F261A60260;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun,  2 Jun 2019 16:27:45 +0300
Message-Id: <20190602132745.30706-3-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
References: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/LIBUNWIND PATCH] Fix some of the compiling
 warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

VGhpcyBwYXRjaCByZW1vdmVzIHRoZSAidW51c2VkLXBhcmFtZXRlciIgd2FybmluZ3MgZ2VuZXJh
dGVkIGJ5IHRoZSBvcmlnaW4gY29kZQphbmQgdGhlIG11bHRpcGxlIGRlZmluaXRpb24gd2Fybmlu
Z3MgZm9yIF9MSUJVTldJTkRfQlVJTERfWkVST19DT1NUX0FQSVMgbWFjcm8uCgpTaWduZWQtb2Zm
LWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgotLS0KIE1ha2VmaWxlLnVr
IHwgNiArKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o
LSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IGE4MGE0ZmUu
LjEwOWU1ZTggMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC03
NSwxMSArNzUsMTUgQEAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVU5XSU5EKSArPSAtSSQoTElC
VU5XSU5EX1NSQykvaW5jbHVkZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIENPTkZJR19GTEFH
UyAgICs9IC1EIF9MSUJVTldJTkRfSEFTX05PX1RIUkVBRFMgIC1EIF9fRUxGX18gIC1EIF9MSUJV
TldJTkRfSVNfTkFUSVZFX09OTFkJCVwKIAkJICAtRCBfTElCVU5XSU5EX1NVUFBPUlRfRFdBUkZf
VU5XSU5EIC1EIF9MSUJVTldJTkRfSVNfQkFSRU1FVEFMCQkJCVwKLQkJICAtRCBfTElCVU5XSU5E
X0JVSUxEX1pFUk9fQ09TVF9BUElTIC1EIF9MSUJVTldJTkRfVEFSR0VUX1g4Nl82NCAtRCBfX3g4
Nl82NF9fCisJCSAgLUQgX0xJQlVOV0lORF9UQVJHRVRfWDg2XzY0IC1EIF9feDg2XzY0X18KIAog
TElCVU5XSU5EX0NGTEFHUy15ICAgICAgKz0gICQoQ09ORklHX0ZMQUdTKQogTElCVU5XSU5EX0NY
WEZMQUdTLXkgICAgKz0gICQoQ09ORklHX0ZMQUdTKQogCitTVVBQUkVTU19GTEFHUyArPSAtV25v
LXVudXNlZC1wYXJhbWV0ZXIKK0xJQlVOV0lORF9DRkxBR1MteSAgICs9ICQoU1VQUFJFU1NfRkxB
R1MpCitMSUJVTldJTkRfQ1hYRkxBR1MteSArPSAkKFNVUFBSRVNTX0ZMQUdTKQorCiAjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwogIyBMaWJyYXJ5IHNvdXJjZXMKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 13:28:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 13:28: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 1hXQWm-0007Mt-Qd; Sun, 02 Jun 2019 13:28: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=S28B=UB=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXQWl-0007MT-O0
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 13:27:59 +0000
X-Inumbo-ID: 3b60fc80-853a-11e9-a950-7f71008b87a1
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 3b60fc80-853a-11e9-a950-7f71008b87a1;
 Sun, 02 Jun 2019 13:27:56 +0000 (UTC)
IronPort-SDR: YB4USTNQDmm53oxVHvrDLfixJnu0K3hLcch1oHc5j5SE1/xEuU1L03pxYrHqTRMUsNPAbMNVdH
 0ASI62mGzGCA==
IronPort-PHdr: =?us-ascii?q?9a23=3AakmtNBNNxSCB5ORZEqEl6mtUPXoX/o7sNwtQ0K?=
 =?us-ascii?q?IMzox0Iv39rarrMEGX3/hxlliBBdydt6sdzbON7uu+AiQp2tWoiDg6aptCVh?=
 =?us-ascii?q?sI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFR?=
 =?us-ascii?q?rhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTagfL9+Ngi6oAvRu8UZgIZvJLs6xw?=
 =?us-ascii?q?fUrHdPZ+lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2?=
 =?us-ascii?q?465MvwtRneVgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVz?=
 =?us-ascii?q?mu87tnRRn1gyoBKjU38nzYitZogaxbvhyvuhJxzY3Tbo6XOvpzZb/Rcc8ASG?=
 =?us-ascii?q?ZdRMtdSzBND4WhZIUPFeoBOuNYopHjqlsJthu+GQisBOXywTFOm3/2xbA62P?=
 =?us-ascii?q?kmHA7a2wwgBM4OsHXSrNnvMKcSTPi1zLTTwDrfdPNawy/96JXTfRw7u/GMWq?=
 =?us-ascii?q?t9fMzMwkcsDwPIlkicpIP4Mz+P1ekAs3KX4/R+We+tkWIqpRl9riWgy8sxkI?=
 =?us-ascii?q?XEhYIYxkra+Sh3zos5P8C0RUFlbdOiDZBerTuVN5FsTcMnW2xovSE6xaAYtp?=
 =?us-ascii?q?OjZygKzYgnxwbYa/yab4iE+hLjW/iVITd/nH9lZre/iAyz8Uik0OHzStK03E?=
 =?us-ascii?q?xSripYidbArGoN1xvL5siGTPty4Fuh1C6S2w3c9+1IO0M5mKrBJ5I/3LI9lI?=
 =?us-ascii?q?AfvErbEi/zgkr2jauWdks++uiv7uTqeqnpppiHN49oiwH+NL4imsiiAeQgLw?=
 =?us-ascii?q?gDRHSU+f+m2L374E32W69GjucxkqXBqpDVOdwbprKlAw9Syosj7he/DzGn0N?=
 =?us-ascii?q?QfhnkLNU9KdwyZj4f3P1HDO/T4Dfakg1Swizdn3f/HMaPnApnXKXjDirjhd6?=
 =?us-ascii?q?5n60FA0Aoz0cxf55VMB7EPPv3zXk7xtMTGARMjMwy03ufnB8l81o4FX2KAHL?=
 =?us-ascii?q?OWMKfIvlCT/O4gPfSMN8cpv2P4Kv4k4OWrgXInlFs1eaiywYBReH2+WPN8LB?=
 =?us-ascii?q?a3e33p1/wGCnsLuEIaUfT3wAmJViVPZnD0W78k+xkwE8S+EI2FXIf70+/J5z?=
 =?us-ascii?q?uyApADPjMOMVuLC3q9L4g=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BVAwC6zfNcjAPjVY1lHQEBBQEHBQG?=
 =?us-ascii?q?BZYJ7UwEwKI0PpnEJAQEBKREBAgEBhEACgyc4EwEDAQEFAQEBAQQBEwEBASZ?=
 =?us-ascii?q?MDII6IoJvBnkQPxJXGYMiAYIOqR+FR4MegUaBNIcDhi4/iXKFFQSULpRLBwK?=
 =?us-ascii?q?CD1oEhWGMZyeDCpNkpHU3IIFZMxqDXwmCIItQglw8AQExgQYBAY8YAQE?=
X-IPAS-Result: =?us-ascii?q?A2BVAwC6zfNcjAPjVY1lHQEBBQEHBQGBZYJ7UwEwKI0Pp?=
 =?us-ascii?q?nEJAQEBKREBAgEBhEACgyc4EwEDAQEFAQEBAQQBEwEBASZMDII6IoJvBnkQP?=
 =?us-ascii?q?xJXGYMiAYIOqR+FR4MegUaBNIcDhi4/iXKFFQSULpRLBwKCD1oEhWGMZyeDC?=
 =?us-ascii?q?pNkpHU3IIFZMxqDXwmCIItQglw8AQExgQYBAY8YAQE?=
X-IronPort-AV: E=Sophos;i="5.60,542,1549922400"; 
   d="scan'208";a="3482280"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 02 Jun 2019 16:27:51 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 82B3B1A60260;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 6uUwQLtcWTVN; Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 66EFE1A60267;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 978VOCJK89M7; Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 503281A6025B;
 Sun,  2 Jun 2019 16:27:52 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun,  2 Jun 2019 16:27:44 +0300
Message-Id: <20190602132745.30706-2-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
References: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/LIBCXXABI PATCH] Supress unused-parameter
 warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

T3JpZ2luIGNvZGUgZ2VuZXJhdGVzICJ1bnVzZWQtcGFyYW1ldGVyIiB3YXJuaW5ncy4KClNpZ25l
ZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogTWFrZWZp
bGUudWsgfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKCmRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IGZiYjAwYmMuLmNmZTljNzMgMTAw
NjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC03Miw2ICs3MiwxMCBA
QCBDT05GSUdfRkxBR1MJKz0JLUQgX0xJQkNYWEFCSV9IQVNfTk9fVEhSRUFEUwogTElCQ1hYQUJJ
X0NGTEFHUy15ICAgICs9ICAkKENPTkZJR19GTEFHUykKIExJQkNYWEFCSV9DWFhGTEFHUy15ICAg
ICs9ICAkKENPTkZJR19GTEFHUykKIAorU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFy
YW1ldGVyCitMSUJDWFhBQklfQ0ZMQUdTLXkgICArPSAkKFNVUFBSRVNTX0ZMQUdTKQorTElCQ1hY
QUJJX0NYWEZMQUdTLXkgKz0gJChTVVBQUkVTU19GTEFHUykKKwogIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKICMgTGlicmFyeSBzb3VyY2VzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLSAKMi4y
MC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 13:46:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 13:46: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 1hXQoc-0000Wu-55; Sun, 02 Jun 2019 13:46:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=S28B=UB=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXQoa-0000Wp-DJ
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 13:46:24 +0000
X-Inumbo-ID: cda7b7f6-853c-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id cda7b7f6-853c-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 13:46:21 +0000 (UTC)
IronPort-SDR: Sqb0HQxo8gNhONoACyiAARJ7DvTnjkQb3CiOjBO/P6vEvm41+WF47hthcAUBILN3wURFsJUJu0
 66QDS1ak+fWg==
IronPort-PHdr: =?us-ascii?q?9a23=3AbBbSah9ZfzYiHP9uRHKM819IXTAuvvDOBiVQ1K?=
 =?us-ascii?q?B30ugcTK2v8tzYMVDF4r011RmVBNydsqkZwLSG+4nbGkU4qa6bt34DdJEeHz?=
 =?us-ascii?q?Qksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPER?=
 =?us-ascii?q?vjKwV1Ov71GonPhMiryuy+4ZLebxhViDanfL9/IhW7oQrQu8QVnIBvNrs/xh?=
 =?us-ascii?q?zVr3VSZu9Y33loJVWdnxb94se/4ptu+DlOtvwi6sBNT7z0c7w3QrJEAjsmNX?=
 =?us-ascii?q?s15NDwuhnYUQSP/HocXX4InRdOHgPI8Qv1Xpb1siv9q+p9xCyXNtD4QLwoRT?=
 =?us-ascii?q?iv6bpgRRn1gykFKjE56nnahMxugqxGrhyvpBtxzpXIbI2JLvdyYrnQcc8GSW?=
 =?us-ascii?q?dHQ81fVzZBAoS5b4YXEecBOv1Yr5X8p1sIsBCwAxSsBPvyyjRVgXL5wao60/?=
 =?us-ascii?q?89EQHH2gwsBdYOsGnMrNXoL6odTfu1wLPQzTXedPxawy396I/Rfx0nvPqCXq?=
 =?us-ascii?q?pwfNLMxUQgCg/JlFadpIz/Mz+LyOgAsXKX4uR4We6yhGMrtht9rzuvy8s2lI?=
 =?us-ascii?q?XEiIwYxkrZ+Sh23oo4I8CzRlRhbt6+CpRQsjmXN45xQsw/XW5loD06yrgauZ?=
 =?us-ascii?q?6jeygK1Ygnywbfa/OZd4iI5QruVPiUIThihXJlfKiziAqp8US60u38S9K73E?=
 =?us-ascii?q?xQripCitXMt3YN2ALP6sWfV/dw8Vqt1SyM2g3T8O1IP144mKjBJ5Mv2rIwk4?=
 =?us-ascii?q?AcsUXHHi/4gkX2i6qWe1049eiv8OTnfrTmppmGO49wlwH+Krkul9ejDuQjKA?=
 =?us-ascii?q?QOR3Wb9v+m2L35+k31WK9KgeEukqnFrJDaItwWpqu4Aw9T04Yj7A2/Ay6739?=
 =?us-ascii?q?sGg3kIMlZFdQmDj4joIFHOPOv4Ae2wgluyljdn3ffGPqfuAp/VNHjMjK/hfa?=
 =?us-ascii?q?ph605b0Aczw85Q55ZVCrEZPv3/QE/xtMHZDhAlMgy52ODnB8th2YMaQ22AGb?=
 =?us-ascii?q?WVP73PsQzA2uV6JuiKZYgO/TrwNfUhz/rvlmMi308Qe++ux5RERmq/G6FNJF?=
 =?us-ascii?q?6FYHykpsoZDC9etQ0lUO3szlmfSSN7bG30R782oCs8XtH1RbzfT5yg1eTSlB?=
 =?us-ascii?q?ywGYdbMzhL?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2ACBABz0vNcjAPjVY1lHgEGBwaBZYJ?=
 =?us-ascii?q?7UwEwKI0PpnEJAQEBKREBAgEBhECDKTgTAQMBAQUBAQEBBAETAQEBJkwMgjo?=
 =?us-ascii?q?ig25PgQKDIgGCDqkahUeDHoFGgTSHA4YuP4N1hX2FFQSULpRLBwKCD1oEhWG?=
 =?us-ascii?q?MZyeDCpNkpHU3IIFZMxqDXwmBWwFEi1CCXDwBATGBBgEBjxgBAQ?=
X-IPAS-Result: =?us-ascii?q?A2ACBABz0vNcjAPjVY1lHgEGBwaBZYJ7UwEwKI0PpnEJA?=
 =?us-ascii?q?QEBKREBAgEBhECDKTgTAQMBAQUBAQEBBAETAQEBJkwMgjoig25PgQKDIgGCD?=
 =?us-ascii?q?qkahUeDHoFGgTSHA4YuP4N1hX2FFQSULpRLBwKCD1oEhWGMZyeDCpNkpHU3I?=
 =?us-ascii?q?IFZMxqDXwmBWwFEi1CCXDwBATGBBgEBjxgBAQ?=
X-IronPort-AV: E=Sophos;i="5.60,543,1549922400"; 
   d="scan'208";a="3482307"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 02 Jun 2019 16:46:20 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 958FB1A6023F;
 Sun,  2 Jun 2019 16:46:21 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id O8DPN4J1g01c; Sun,  2 Jun 2019 16:46:21 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 7AC081A6025B;
 Sun,  2 Jun 2019 16:46:21 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 8hOpVOKlBDh5; Sun,  2 Jun 2019 16:46:21 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 5AAB01A6023F;
 Sun,  2 Jun 2019 16:46:21 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun,  2 Jun 2019 16:46:16 +0300
Message-Id: <20190602134616.31004-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Fix some of the compiling
 warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

VGhpcyBwYXRjaCByZW1vdmVzIHRoZSAidW51c2VkLXBhcmFtZXRlciIgd2FybmluZ3MgZ2VuZXJh
dGVkIGJ5IHRoZSBvcmlnaW4gY29kZQphbmQgdGhlIG11bHRpcGxlIGRlZmluaXRpb24gd2Fybmlu
Z3MgZm9yIF9MSUJDUFBfQlVJTERJTkdfTElCUkFSWSBhbmQKX0xJQkNQUEFCSV9WRVJTSU9OIG1h
Y3Jvcy4KClNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+
Ci0tLQogTWFrZWZpbGUudWsgfCA4ICsrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRp
b25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZp
bGUudWsKaW5kZXggZGRkMzlkYS4uYTQ1NTM4NiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUudWsKKysr
IGIvTWFrZWZpbGUudWsKQEAgLTkxLDggKzkxLDggQEAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElC
Q1hYKSArPSAtSSQoTElCQ1hYX1NSQykvdXRpbHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj
IEdsb2JhbCBmbGFncwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUNPTkZJR19GTEFHUyAJKz0g
LUQgX0xJQkNQUF9CVUlMRElOR19MSUJSQVJZICAtRCBMSUJDWFhfQlVJTERJTkdfTElCQ1hYQUJJ
IAlcCi0JCS1EIF9MSUJDUFBBQklfVkVSU0lPTiAtRCBfX3g4Nl82NF9fIC1EIF9MSUJDUFBfU1RE
X1ZFUj0xNSAJXAorQ09ORklHX0ZMQUdTIAkrPSAtRCBMSUJDWFhfQlVJTERJTkdfTElCQ1hYQUJJ
IAlcCisJCS1EIF9feDg2XzY0X18gLUQgX0xJQkNQUF9TVERfVkVSPTE1IAlcCiAJCS1EIF9MSUJD
UFBfUFJPVklERVNfREVGQVVMVF9SVU5FX1RBQkxFIC1EIF9fRFlOQU1JQ19SRUVOVF9fCVwKIAog
CkBAIC0xMDAsNiArMTAwLDEwIEBAIENPTkZJR19GTEFHUyAJKz0gLUQgX0xJQkNQUF9CVUlMRElO
R19MSUJSQVJZICAtRCBMSUJDWFhfQlVJTERJTkdfTElCQ1hYQUJJIAlcCiBMSUJDWFhfQ0ZMQUdT
LXkgICAgKz0gICAkKENPTkZJR19GTEFHUykKIExJQkNYWF9DWFhGTEFHUy15ICAgICs9ICAgJChD
T05GSUdfRkxBR1MpCiAKK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlcgor
TElCQ1hYX0NGTEFHUy15ICAgKz0gJChTVVBQUkVTU19GTEFHUykKK0xJQkNYWF9DWFhGTEFHUy15
ICs9ICQoU1VQUFJFU1NfRkxBR1MpCisKIExJQkNYWF9TUkNTLXkgKz0gJChMSUJDWFhfQkFTRSkv
Z2x1ZS5jCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBMaWJyYXJ5IHNvdXJjZXMKLS0gCjIu
MjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22: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 1hXRNS-0003yu-7k; Sun, 02 Jun 2019 14:22:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNQ-0003yp-Gd
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:24 +0000
X-Inumbo-ID: d54be3ee-8541-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d54be3ee-8541-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 14:22:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 8B1CD105247;
 Sun,  2 Jun 2019 16:22:20 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1UygowL-kl9g; Sun,  2 Jun 2019 16:22:20 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5D5F9104817;
 Sun,  2 Jun 2019 16:22:20 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:19 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:01 +0200
Message-ID: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 0/9] introduce trace points
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgYnJpbmdzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHN0YXRpY2FsbHkgZGVjbGFy
ZWQgdHJhY2UKcG9pbnRzLiAgQSBkZWNsYXJhdGlvbiBpcyBmdWxseSBzdGF0aWMuIEluZm9ybWF0
aW9uIGlzIHN0b3JlZCBpbiAyIGVsZgpzZWN0aW9ucywgd2hpY2ggYXJlIHN0cmlwcGVkIGF0IHRo
ZSBmaW5hbCBzdGFnZSBvZiBidWlsZGluZy4gVGhpcwpzZWN0aW9ucyBhcmUgdXNlZCBvbmx5IG9m
ZmxpbmUgYnkgdHJhY2UucHkgc2NyaXB0LCB0byBwYXJzZSB0aGUgdHJhY2UKYnVmZmVyLgoKT25j
ZSBhIHRyYWNlcG9pbnQgaXMgZGVjbGFyZWQsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSBydW50aW1l
LiBUaGUKdHJhY2Vwb2ludCBhdXRvbWF0aWNhbGx5IHNhdmVzIHRoZSB0aW1lc3RhbXAsIGFuZCBh
bGwgcGFzc2VkIGRhdGEgaW50bwphIHRyYWNlYnVmZmVyLgoKRGVwZW5kcyBvbjoKImluY2x1ZGUv
ZXNzZW50aWFscy5oOiBpbnRyb2R1Y2UgY29tcGlsZS10aW1lIGFzc2VydCIKImJ1aWxkOiByZW9y
Z2FuaXplIGxpbmtpbmciCgpjaGFuZ2VzIHNpbmNlIHYxOgogIC0gbWVyZ2Ugd2l0aCBzZXJpZXMg
Im1ha2UgdHJhY2Ugc2NyaXB0cyBpbnN0YWxsYWJsZSIKICAtIG51bW1lcm91cyB0eXBvcwogIC0g
YmV0dGVyIG5hbWluZ3MgaW4gcHl0aG9uIHNjcmlwdHMKICAtIFVLX0ZPUkVBQ0ggY291bnRzIGhv
dyBtYW55IHBhcmFtZXRlcnMgaXQgZ290IGF1dG1hdGljYWxseQogIC0gcHVzaCAiLVIgLnVrX3Ry
YWNlX2tleXZhbHMiIGZsYWcgaW50byB0aGUgcmlnaHQgcGF0Y2ggKHNuaWNrZWQKICAgIGludG8g
dGhlIHBhdGNoIGJlZm9yZSkKICAtIHVwZGF0ZSBkb2NzIHRvIHJlZmxlY3QgcmV3b3JrZWQgcHl0
aG9uIHNjcmlwdHMKICAtIHByb3ZpZGUgYSBiaXQgbW9yZSBpbmZvcm1hdGlvbiBpbiBkb2NzIGFi
b3V0IHRoZSBpbnRlcm5hbHMsIGFuZAogICAgaG93IHRvIGRlZmluZSB5b3VyIG93biB0cmFjZXBv
aW50cwoKY2hhbmdlcyBzaW5jZSB2MjoKICAtIGZpeCBzZXR1cHRvb2xzIGlzc3VlcwoKWXVyaSBW
b2xjaGtvdiAoOSk6CiAgbGliL3VrZGVidWc6IHRyYWNlLmggLSBpbnRyb2R1Y2UgVUtfRk9SRUFD
SCBhbmQgVUtfTkFSR1MgbWFjcm9zCiAgbGliL3VrZGVidWc6IFJlZ2lzdGVyIGEgdHJhY2Vwb2lu
dAogIGxpYi91a2RlYnVnOiBzYXZlIGFjdHVhbCBkYXRhIGludG8gdHJhY2VidWZmZXIKICBsaWIv
dWtkZWJ1Zzoga2V5LXZhbHVlIHN0YXRpYyBzdG9yYWdlIGZvciB0cmFjaW5nCiAgc3VwcG9ydC9z
Y3JpcHRzOiBmZXRjaCB0cmFjZSBkYXRhIGZyb20gcnVubmluZyBVbmlrcmFmdAogIHN1cHBvcnQv
c2NyaXB0czogaW1wbGVtZW50IHRyYWNlIGJ1ZmZlciBwYXJzaW5nCiAgc3VwcG9ydC9zY3JpcHRz
OiBtYWtlIHVrLXRyYWNlIGluc3RhbGxhYmxlCiAgZG9jL2d1aWRlczogQWRkIHNlY3Rpb24gYWJv
dXQgdHJhY2Vwb2ludHMKICBsaWIvdmZzY29yZTogcmVwbGFjZSB0cmFjaW5nIHN0YWJzIHdpdGgg
bmV3IHRyYWNlcG9pbnRzCgogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxICsKIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogZG9j
L2d1aWRlcy9kZXZlbG9wZXJzLWRlYnVnZ2luZy5yc3QgIHwgMTM3ICsrKysrKysrKysrKysKIGxp
Yi91a2RlYnVnL0NvbmZpZy51ayAgICAgICAgICAgICAgICB8ICAgOSArCiBsaWIvdWtkZWJ1Zy9N
YWtlZmlsZS51ayAgICAgICAgICAgICAgfCAgIDQgKwogbGliL3VrZGVidWcvZXhwb3J0c3ltcy51
ayAgICAgICAgICAgIHwgICAyICsKIGxpYi91a2RlYnVnL2V4dHJhLmxkICAgICAgICAgICAgICAg
ICB8ICAyNiArKysKIGxpYi91a2RlYnVnL2luY2x1ZGUvdWsvdHJhY2UuaCAgICAgICB8IDI4NiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91a2RlYnVnL3RyYWNlLmMgICAgICAgICAg
ICAgICAgICB8ICA2MyArKysrKysKIGxpYi92ZnNjb3JlL21haW4uYyAgICAgICAgICAgICAgICAg
ICB8IDIxNyArKysrKysrKysrLS0tLS0tLS0tLQogbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAg
ICAgICAgICAgIHwgICA1IC0KIHN1cHBvcnQvc2NyaXB0cy91ay1nZGIucHkgICAgICAgICAgICB8
IDEyNyArKysrKysrKysrKysKIHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9fX2luaXRfXy5weSB8
ICAgMAogc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3BhcnNlLnB5ICAgIHwgMjA4ICsrKysrKysr
KysrKysrKysrKysKIHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9zZXR1cC5weSAgICB8ICAxNCAr
Kwogc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3RyYWNlLnB5ICAgIHwgMTIzICsrKysrKysrKysr
KwogMTYgZmlsZXMgY2hhbmdlZCwgMTEyMiBpbnNlcnRpb25zKCspLCAxMTIgZGVsZXRpb25zKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrZGVidWcvZXh0cmEubGQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdWtkZWJ1Zy90cmFjZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3VwcG9ydC9zY3JpcHRzL3Vr
LWdkYi5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9fX2lu
aXRfXy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9wYXJz
ZS5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9zZXR1cC5w
eQogY3JlYXRlIG1vZGUgMTAwNzU1IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS90cmFjZS5weQoK
LS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22: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 1hXRNV-0003zF-9K; Sun, 02 Jun 2019 14:22:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNU-0003zA-US
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:28 +0000
X-Inumbo-ID: d90c0d7b-8541-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d90c0d7b-8541-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 14:22:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 073E6105247;
 Sun,  2 Jun 2019 16:22:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id k4TjaEZwdWEv; Sun,  2 Jun 2019 16:22:26 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D9DEA104817;
 Sun,  2 Jun 2019 16:22:26 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:26 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:03 +0200
Message-ID: <20190602142210.10670-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 2/9] lib/ukdebug: Register a
 tracepoint
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Q3JlYXRlIGEgJ3NwZWNpYWwnIHNlY3Rpb24gLnVrX3RyYWNlcG9pbnRzX2xpc3QsIHdoZXJlIHdl
IHdpbGwgYmUKc3RvcmluZyBzdGF0aWMgZGVmaW5pdGlvbnMgb2YgdHJhY2Vwb2ludHMuIFRoaXMg
c2VjdGlvbiBpcyBuZWVkZWQgb25seQpvZmZsaW5lLCBzbyBpdCB3aWxsIGV4aXN0IG9ubHkgaW4g
Ki5kYmcgaW1hZ2UuCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292
QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIu
cm8+Ci0tLQogbGliL3VrZGVidWcvQ29uZmlnLnVrICAgICAgICAgIHwgIDkgKysrKwogbGliL3Vr
ZGVidWcvTWFrZWZpbGUudWsgICAgICAgIHwgIDMgKysKIGxpYi91a2RlYnVnL2V4dHJhLmxkICAg
ICAgICAgICB8IDIzICsrKysrKysrKwogbGliL3VrZGVidWcvaW5jbHVkZS91ay90cmFjZS5oIHwg
ODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAx
MjIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2RlYnVnL2V4dHJhLmxk
CgpkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvQ29uZmlnLnVrIGIvbGliL3VrZGVidWcvQ29uZmln
LnVrCmluZGV4IDc0NmFjM2RlLi45NmZjZTNhZiAxMDA2NDQKLS0tIGEvbGliL3VrZGVidWcvQ29u
ZmlnLnVrCisrKyBiL2xpYi91a2RlYnVnL0NvbmZpZy51awpAQCAtNzUsNCArNzUsMTMgQEAgY29u
ZmlnIExJQlVLREVCVUdfRU5BQkxFX0FTU0VSVAogCWhlbHAKIAkgIEJ1aWxkIGNvZGUgd2l0aCBh
c3NlcnRpb25zLgogCittZW51Y29uZmlnIExJQlVLREVCVUdfVFJBQ0VQT0lOVFMKKwlib29sICJF
bmFibGUgdHJhY2Vwb2ludHMiCisJZGVmYXVsdCBuCitpZiBMSUJVS0RFQlVHX1RSQUNFUE9JTlRT
Citjb25maWcgTElCVUtERUJVR19BTExfVFJBQ0VQT0lOVFMKKwlib29sICJFbmFibGUgYWxsIHRy
YWNlcG9pbnRzIGF0IG9uY2UiCisJZGVmYXVsdCBuCitlbmRpZgorCiBlbmRpZgpkaWZmIC0tZ2l0
IGEvbGliL3VrZGVidWcvTWFrZWZpbGUudWsgYi9saWIvdWtkZWJ1Zy9NYWtlZmlsZS51awppbmRl
eCA0YWFhNTE4OS4uYWJjMzQwZGQgMTAwNjQ0Ci0tLSBhL2xpYi91a2RlYnVnL01ha2VmaWxlLnVr
CisrKyBiL2xpYi91a2RlYnVnL01ha2VmaWxlLnVrCkBAIC04LDMgKzgsNiBAQCBMSUJVS0RFQlVH
X0NYWEZMQUdTLXkgKz0gLURfX0lOX0xJQlVLREVCVUdfXwogCiBMSUJVS0RFQlVHX1NSQ1MteSAr
PSAkKExJQlVLREVCVUdfQkFTRSkvcHJpbnQuYwogTElCVUtERUJVR19TUkNTLXkgKz0gJChMSUJV
S0RFQlVHX0JBU0UpL2hleGR1bXAuYworCitFWFRSQV9MRF9TQ1JJUFQtJChDT05GSUdfTElCVkZT
Q09SRSkgKz0gJChMSUJVS0RFQlVHX0JBU0UpL2V4dHJhLmxkCitTVFJJUF9TRUNUSU9OU19GTEFH
Uy0kKENPTkZJR19MSUJVS0RFQlVHX1RSQUNFUE9JTlRTKSArPSAtUiAudWtfdHJhY2Vwb2ludHNf
bGlzdApkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvZXh0cmEubGQgYi9saWIvdWtkZWJ1Zy9leHRy
YS5sZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNDMxNTRmOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9saWIvdWtkZWJ1Zy9leHRyYS5sZApAQCAtMCwwICsxLDIzIEBACitTRUNU
SU9OUworeworCS51a190cmFjZXBvaW50c19saXN0IDogeworCQl1a190cmFjZXBvaW50c19zdGFy
dCA9IC47CisJCUtFRVAgKCooLnVrX3RyYWNlcG9pbnRzX2xpc3QpKTsKKwkJdWtfdHJhY2Vwb2lu
dHNfZW5kID0gLjsKKwl9Cit9CisKKy8qIFdlIGRvIG5vdCB3YW50IHRoZXNlIHNlY3Rpb24gdG8g
YmUgaW4gdGhlIGZpbmFsIGltYWdlLCB0aGV5IGFyZQorICogbmVlZGVkIG9ubHkgb2ZmbGluZS4g
U29sdXRpb24gaXMgb2J2aW91cyAtIGFzayB0aGUgYnVpbGQgc3lzdGVtIHRvCisgKiBzdHJpcCB0
aGVtIHRvZ2V0aGVyIHdpdGggZGVidWcgc3ltYm9scy4KKyAqCisgKiBIb3dldmVyLCB3ZSBuZWVk
IHRvIHB1dCB0aGVtIGF0IHRoZW0gc29tZXdoZXJlIGNsb3NlIHRvIHRoZSBlbmQgb2YKKyAqIHRo
ZSBlbGYsIG90aGVyd2lzZSBzdHJpcCBvcGVyYXRpb24gd2lsbCBtYWtlIGEgaG9sZSBpbiB0aGUg
YWRkcmVzcworICogc3BhY2UuIE1vcmUgdGhlbiB0aGF0LCB0aGV5IGhhdmUgdG8gcmVzaWRlIF9h
ZnRlcl8gdGhlICdfZW5kJworICogc3ltYm9sLgorICoKKyAqIFRoZSB0cmljayBpcyB0byBhbGxv
Y2F0ZSB0aGUgc2VjdGlvbnMgYWZ0ZXIgdGhlICcuY29tbWVudCcKKyAqIHNlY3Rpb24uIFRoZSBv
dGhlciB3YXkgd291bGQgaGF2ZSBiZWVuIGFsbG9jYXRpbmcgYSBkdW1teSBzZWN0aW9uCisgKiAn
LmN1dF9oZXJlJywgYnV0IGxpbmtlciBkcm9wcyBpdCBpZiB0aGVyZSBpcyBub3RoaW5nIGluIGl0
LgorICovCitJTlNFUlQgQUZURVIgLmNvbW1lbnQ7CmRpZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy9p
bmNsdWRlL3VrL3RyYWNlLmggYi9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgKaW5kZXgg
YTQ4YTkxYWIuLmE0ZDZjZjA1IDEwMDY0NAotLS0gYS9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3Ry
YWNlLmgKKysrIGIvbGliL3VrZGVidWcvaW5jbHVkZS91ay90cmFjZS5oCkBAIC0zNCw2ICszNCwx
NiBAQAogCiAjaWZuZGVmIF9VS19UUkFDRV9IXwogI2RlZmluZSBfVUtfVFJBQ0VfSF8KKyNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNkZWZpbmUgVUtf
VFBfREVGX01BR0lDIDB4NjU2NDUwNTQgLyogVFBkZSAqLworCitlbnVtIF9fdWtfdHJhY2VfYXJn
X3R5cGUgeworCV9fVUtfVFJBQ0VfQVJHX0lOVCA9IDAsCisJX19VS19UUkFDRV9BUkdfU1RSSU5H
ID0gMSwKK307CisKIC8qIFRPRE86IGNvbnNpZGVyIHRvIG1vdmUgVUtfQ09OQ0FUIGludG8gcHVi
bGljIGhlYWRlcnMgKi8KICNkZWZpbmUgX19VS19DT05DQVRfWChhLCBiKSBhIyNiCiAjZGVmaW5l
IFVLX0NPTkNBVChhLCBiKSBfX1VLX0NPTkNBVF9YKGEsIGIpCkBAIC00MSw2ICs1MSwxMyBAQAog
I2RlZmluZSBfX1VLX05BUkdTX1goYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgbiwgLi4uKSBuCiAj
ZGVmaW5lIFVLX05BUkdTKC4uLikgIF9fVUtfTkFSR1NfWCgsICMjX19WQV9BUkdTX18sIDcsIDYs
IDUsIDQsIDMsIDIsIDEsIDApCiAKKyNkZWZpbmUgX19VS19UUkFDRV9HRVRfVFlQRShhcmcpICgJ
CQkJCVwKKwlfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZihhcmcpLCBjb25zdCBj
aGFyICopICoJXAorCQlfX1VLX1RSQUNFX0FSR19TVFJJTkcgKwkJCQkJXAorCV9fYnVpbHRpbl90
eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKGFyZyksIGNoYXIgKikgKgkJXAorCQlfX1VLX1RSQUNF
X0FSR19TVFJJTkcgKwkJCQkJXAorCTApCisKICNkZWZpbmUgX19VS19HRVRfQVJHMShhMSwgLi4u
KSBhMQogI2RlZmluZSBfX1VLX0dFVF9BUkcyKGExLCBhMiwgLi4uKSBhMgogI2RlZmluZSBfX1VL
X0dFVF9BUkczKGExLCBhMiwgYTMsIC4uLikgYTMKQEAgLTc2LDQgKzkzLDc0IEBACiAjZGVmaW5l
IFVLX0ZPUkVBQ0goZiwgLi4uKQkJCQkJXAogCVVLX0ZPUkVBQ0hfTihVS19OQVJHUyhfX1ZBX0FS
R1NfXyksIGYsIF9fVkFfQVJHU19fKQogCisjZGVmaW5lIFVLX0ZPUkVBQ0hfU0laRU9GKGEsIGIp
IHNpemVvZihiKQorI2RlZmluZSBfX1VLX1RSQUNFX0FSR19TSVpFUyhuLCAuLi4pCQkJCVwKKwl7
IFVLX0ZPUkVBQ0goVUtfRk9SRUFDSF9TSVpFT0YsIF9fVkFfQVJHU19fKSB9CisKKyNkZWZpbmUg
X19VS19UUkFDRV9HRVRfVFlQRV9GT1JFQUNIKG4sIGFyZykJXAorCV9fVUtfVFJBQ0VfR0VUX1RZ
UEUoYXJnKQorI2RlZmluZSBfX1VLX1RSQUNFX0FSR19UWVBFUyhuLCAuLi4pCQkJCQlcCisJeyBV
S19GT1JFQUNIKF9fVUtfVFJBQ0VfR0VUX1RZUEVfRk9SRUFDSCwgX19WQV9BUkdTX18pIH0KKwor
I2RlZmluZSBfX1VLX1RSQUNFX1JFRyhOUiwgcmVnbmFtZSwgdHJhY2VfbmFtZSwgZm10LCAuLi4p
CVwKKwlVS19DVEFTU0VSVChzaXplb2YoI3RyYWNlX25hbWUpIDwgMjU1KTsJCQlcCisJVUtfQ1RB
U1NFUlQoc2l6ZW9mKGZtdCkgPCAyNTUpOwkJCQlcCisJX19hdHRyaWJ1dGUoKF9fc2VjdGlvbl9f
KCIudWtfdHJhY2Vwb2ludHNfbGlzdCIpKSkJXAorCXN0YXRpYyBzdHJ1Y3QgewkJCQkJCVwKKwkJ
dWludDMyX3QgbWFnaWM7CQkJCQlcCisJCXVpbnQzMl90IHNpemU7CQkJCQlcCisJCXVpbnQ2NF90
IGNvb2tpZTsJCQkJXAorCQl1aW50OF90IGFyZ3NfbnI7CQkJCVwKKwkJdWludDhfdCBuYW1lX2xl
bjsJCQkJXAorCQl1aW50OF90IGZvcm1hdF9sZW47CQkJCVwKKwkJdWludDhfdCBzaXplc1tOUl07
CQkJCVwKKwkJdWludDhfdCB0eXBlc1tOUl07CQkJCVwKKwkJY2hhciBuYW1lW3NpemVvZigjdHJh
Y2VfbmFtZSldOwkJCVwKKwkJY2hhciBmb3JtYXRbc2l6ZW9mKGZtdCldOwkJCVwKKwl9IHJlZ25h
bWUgX191c2VkID0gewkJCQkJXAorCQlVS19UUF9ERUZfTUFHSUMsCQkJCVwKKwkJc2l6ZW9mKHJl
Z25hbWUpLAkJCQlcCisJCSh1aW50NjRfdCkgJnJlZ25hbWUsCQkJCVwKKwkJTlIsCQkJCQkJXAor
CQlzaXplb2YoI3RyYWNlX25hbWUpLCBzaXplb2YoZm10KSwJCVwKKwkJX19VS19UUkFDRV9BUkdf
U0laRVMoTlIsIF9fVkFfQVJHU19fKSwJCVwKKwkJX19VS19UUkFDRV9BUkdfVFlQRVMoTlIsIF9f
VkFfQVJHU19fKSwJCVwKKwkJI3RyYWNlX25hbWUsIGZtdCB9CisKKy8qIE1ha2VzIGZyb20gImNv
bnN0IGNoYXIqIiAiY29uc3QgY2hhciogYXJnMSIuCisgKi8KKyNkZWZpbmUgX19VS19BUkdTX01B
UF9GTihuLCB0KSB0IFVLX0NPTkNBVChhcmcsIG4pCisjZGVmaW5lIF9fVUtfVFJBQ0VfQVJHU19N
QVAobiwgLi4uKSBcCisJVUtfRk9SRUFDSChfX1VLX0FSR1NfTUFQX0ZOLCBfX1ZBX0FSR1NfXykK
KworI2RlZmluZSBfX1VLX0FSR1NfTUFQX0ZOX1VOVVNFRChuLCB0KSB0IFVLX0NPTkNBVChhcmcs
IG4pIF9fdW51c2VkCisjZGVmaW5lIF9fVUtfVFJBQ0VfQVJHU19NQVBfVU5VU0VEKG4sIC4uLikg
XAorCVVLX0ZPUkVBQ0goX19VS19BUkdTX01BUF9GTl9VTlVTRUQsIF9fVkFfQVJHU19fKQorCisK
KyNpZiAoZGVmaW5lZChDT05GSUdfTElCVUtERUJVR19UUkFDRVBPSU5UUykgJiYJCQkJXAorCShk
ZWZpbmVkKFVLX0RFQlVHX1RSQUNFKSB8fCBkZWZpbmVkKENPTkZJR19MSUJVS0RFQlVHX0FMTF9U
UkFDRVBPSU5UUykpKQorI2RlZmluZSBfX19fVUtfVFJBQ0VQT0lOVChuLCByZWdkYXRhX25hbWUs
IHRyYWNlX25hbWUsIGZtdCwgLi4uKQlcCisJX19VS19UUkFDRV9SRUcobiwgcmVnZGF0YV9uYW1l
LCB0cmFjZV9uYW1lLCBmbXQsCQlcCisJCSAgICAgICBfX1ZBX0FSR1NfXyk7CQkJCQlcCisJc3Rh
dGljIGlubGluZSB2b2lkIHRyYWNlX25hbWUoX19VS19UUkFDRV9BUkdTX01BUF9VTlVTRUQobiwg
X19WQV9BUkdTX18pKSBcCisJewkJCQkJCQkJXAorCX0KKyNlbHNlCisjZGVmaW5lIF9fX19VS19U
UkFDRVBPSU5UKG4sIHJlZ2RhdGFfbmFtZSwgdHJhY2VfbmFtZSwgZm10LCAuLi4pCVwKKwlzdGF0
aWMgaW5saW5lIHZvaWQgdHJhY2VfbmFtZSgJCQkJCVwKKwkJX19VS19UUkFDRV9BUkdTX01BUF9V
TlVTRUQobiwgX19WQV9BUkdTX18pKQkJXAorCXsJCQkJCQkJCVwKKwl9CisjZW5kaWYKKworI2Rl
ZmluZSBfX1VLX1RSQUNFUE9JTlQobiwgcmVnZGF0YV9uYW1lLCB0cmFjZV9uYW1lLCBmbXQsIC4u
LikJXAorCV9fX19VS19UUkFDRVBPSU5UKG4sIHJlZ2RhdGFfbmFtZSwgdHJhY2VfbmFtZSwgZm10
LAlcCisJCQkgIF9fVkFfQVJHU19fKQorI2RlZmluZSBVS19UUkFDRVBPSU5UKHRyYWNlX25hbWUs
IGZtdCwgLi4uKQkJCQlcCisJX19VS19UUkFDRVBPSU5UKFVLX05BUkdTKF9fVkFfQVJHU19fKSwJ
CQkJXAorCQkJX18gIyMgdHJhY2VfbmFtZSAjIyBfcmVnZGF0YSwJCQlcCisJCQl0cmFjZV9uYW1l
LCBmbXQsIF9fVkFfQVJHU19fKQorCisKICNlbmRpZiAvKiBfVUtfVFJBQ0VfSF8gKi8KLS0gCjIu
MTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22: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 1hXRNX-0003zu-Bp; Sun, 02 Jun 2019 14:22: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=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNW-0003zZ-8A
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:30 +0000
X-Inumbo-ID: d85c36c4-8541-11e9-9130-1f757eb4b399
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d85c36c4-8541-11e9-9130-1f757eb4b399;
 Sun, 02 Jun 2019 14:22:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BEEAFF201F;
 Sun,  2 Jun 2019 16:22:25 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mVC3tYp0RqNn; Sun,  2 Jun 2019 16:22:25 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8E3E6F2003;
 Sun,  2 Jun 2019 16:22:21 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:21 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:02 +0200
Message-ID: <20190602142210.10670-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 1/9] lib/ukdebug: trace.h -
 introduce UK_FOREACH and UK_NARGS macros
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIFVLX0ZPUkVBQ0ggaXMgdGhlIGNlbnRyYWwgbWFjcm8gaW4gdGhlIGFsbCBtYWNybyBoZWxs
IG5lZWRlZCB0bwppbXBsZW1lbnQgc3RhdGljIHRyYWNlcG9pbnRzIGRlZmluaXRpb25zLiBUaGUg
VUtfRk9SRUFDSCB0YWtlcyB1cCB0byA3CnBhcmFtZXRlcnMsIGFuZCBhcHBsaWVzIHNwZWNpZmll
ZCBmdW5jdGlvbiB0byBlYWNoIG9mIHRoZW0sIHNlcGFyYXRpbmcKb3V0cHV0IHdpdGggY29tbWFz
LgoKRm9yIGV4YW1wbGUgaXQgY29udmVydHM6CiAgICAiY2hhciwgaW50LCBsb25nIiAgPT4gICJz
aXplb2YoY2hhciksIHNpemVvZihpbnQpLCBzaXplb2YobG9uZykiCgpVS19OQVJHUyBjYWxjdWxh
dGVzIGhvdyBtYW55IHBhcmFtZXRlcnMgaXQgaGFzIHJlY2VpdmVkLgoKU2lnbmVkLW9mZi1ieTog
WXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBDb3N0
aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgotLS0KIGxpYi91a2RlYnVnL2luY2x1ZGUv
dWsvdHJhY2UuaCB8IDc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmls
ZSBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrZGVi
dWcvaW5jbHVkZS91ay90cmFjZS5oCgpkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvaW5jbHVkZS91
ay90cmFjZS5oIGIvbGliL3VrZGVidWcvaW5jbHVkZS91ay90cmFjZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hNDhhOTFhYgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91
a2RlYnVnL2luY2x1ZGUvdWsvdHJhY2UuaApAQCAtMCwwICsxLDc5IEBACisvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogWXVyaSBWb2xj
aGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog
VEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4K
KyAqLworCisjaWZuZGVmIF9VS19UUkFDRV9IXworI2RlZmluZSBfVUtfVFJBQ0VfSF8KKy8qIFRP
RE86IGNvbnNpZGVyIHRvIG1vdmUgVUtfQ09OQ0FUIGludG8gcHVibGljIGhlYWRlcnMgKi8KKyNk
ZWZpbmUgX19VS19DT05DQVRfWChhLCBiKSBhIyNiCisjZGVmaW5lIFVLX0NPTkNBVChhLCBiKSBf
X1VLX0NPTkNBVF9YKGEsIGIpCisKKyNkZWZpbmUgX19VS19OQVJHU19YKGEsIGIsIGMsIGQsIGUs
IGYsIGcsIGgsIG4sIC4uLikgbgorI2RlZmluZSBVS19OQVJHUyguLi4pICBfX1VLX05BUkdTX1go
LCAjI19fVkFfQVJHU19fLCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKQorCisjZGVmaW5lIF9fVUtf
R0VUX0FSRzEoYTEsIC4uLikgYTEKKyNkZWZpbmUgX19VS19HRVRfQVJHMihhMSwgYTIsIC4uLikg
YTIKKyNkZWZpbmUgX19VS19HRVRfQVJHMyhhMSwgYTIsIGEzLCAuLi4pIGEzCisjZGVmaW5lIF9f
VUtfR0VUX0FSRzQoYTEsIGEyLCBhMywgYTQsIC4uLikgYTQKKyNkZWZpbmUgX19VS19HRVRfQVJH
NShhMSwgYTIsIGEzLCBhNCwgYTUsIC4uLikgYTUKKyNkZWZpbmUgX19VS19HRVRfQVJHNihhMSwg
YTIsIGEzLCBhNCwgYTUsIGE2LCAuLi4pIGE2CisjZGVmaW5lIF9fVUtfR0VUX0FSRzcoYTEsIGEy
LCBhMywgYTQsIGE1LCBhNiwgYTcpIGE3CisvKiBSZXR1cm5zIGFyZ3VtZW50IG9mIGEgZ2l2ZW4g
bnVtYmVyICovCisjZGVmaW5lIF9fVUtfR0VUX0FSR19OKG4sIC4uLikJCQkJXAorCVVLX0NPTkNB
VChfX1VLX0dFVF9BUkcsIG4pKF9fVkFfQVJHU19fKQorCisvKiBDYWxscyBnaXZlbiBmdW5jdGlv
biB3aXRoIGFyZ3VtZW50IE5yIG4gKi8KKyNkZWZpbmUgVUtfMUFSR19NQVAobiwgZiwgLi4uKQkJ
XAorCWYobiwgX19VS19HRVRfQVJHX04obiwgX19WQV9BUkdTX18pKQorI2RlZmluZSBVS19GT1JF
QUNIMChmLCAuLi4pCisjZGVmaW5lIFVLX0ZPUkVBQ0gxKGYsIC4uLikgVUtfMUFSR19NQVAoMSwg
ZiwgX19WQV9BUkdTX18pCisjZGVmaW5lIFVLX0ZPUkVBQ0gyKGYsIC4uLikgVUtfRk9SRUFDSDEo
ZiwgX19WQV9BUkdTX18pLCBVS18xQVJHX01BUCgyLCBmLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
VUtfRk9SRUFDSDMoZiwgLi4uKSBVS19GT1JFQUNIMihmLCBfX1ZBX0FSR1NfXyksIFVLXzFBUkdf
TUFQKDMsIGYsIF9fVkFfQVJHU19fKQorI2RlZmluZSBVS19GT1JFQUNINChmLCAuLi4pIFVLX0ZP
UkVBQ0gzKGYsIF9fVkFfQVJHU19fKSwgVUtfMUFSR19NQVAoNCwgZiwgX19WQV9BUkdTX18pCisj
ZGVmaW5lIFVLX0ZPUkVBQ0g1KGYsIC4uLikgVUtfRk9SRUFDSDQoZiwgX19WQV9BUkdTX18pLCBV
S18xQVJHX01BUCg1LCBmLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgVUtfRk9SRUFDSDYoZiwgLi4u
KSBVS19GT1JFQUNINShmLCBfX1ZBX0FSR1NfXyksIFVLXzFBUkdfTUFQKDYsIGYsIF9fVkFfQVJH
U19fKQorI2RlZmluZSBVS19GT1JFQUNINyhmLCAuLi4pIFVLX0ZPUkVBQ0g2KGYsIF9fVkFfQVJH
U19fKSwgVUtfMUFSR19NQVAoNywgZiwgX19WQV9BUkdTX18pCisKKy8qIFRPRE86IEZPUkVBQ0gg
Y291bGQgYmUgdXNlZnVsIGZvciBvdGhlciBVbmlrcmFmdCBtb2R1bGVzLiBDb25zaWRlcgorICog
bW92aW5nIGl0IHRvIHB1YmxpYyBoZWFkZXJzICovCisKKy8qIEFwcGx5IGZ1bmN0aW9uL21hY3Jv
IGYgdG8gZXZlcnkgYXJndW1lbnQgcGFzc2VkLiBSZXN1bHRpbmcKKyAqIGFyZ3VtZW50cyBhcmUg
c2VwYXJhdGVkIHdpdGggY29tbWFzCisgKi8KKyNkZWZpbmUgVUtfRk9SRUFDSF9OKG4sIGYsIC4u
LikJCQkJXAorCVVLX0NPTkNBVChVS19GT1JFQUNILCBuKShmLCBfX1ZBX0FSR1NfXykKKworI2Rl
ZmluZSBVS19GT1JFQUNIKGYsIC4uLikJCQkJCVwKKwlVS19GT1JFQUNIX04oVUtfTkFSR1MoX19W
QV9BUkdTX18pLCBmLCBfX1ZBX0FSR1NfXykKKworI2VuZGlmIC8qIF9VS19UUkFDRV9IXyAqLwot
LSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22: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 1hXRNb-00040g-Dc; Sun, 02 Jun 2019 14:22:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNa-00040X-Uy
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:34 +0000
X-Inumbo-ID: dc26def2-8541-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id dc26def2-8541-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 14:22:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 32202F201F;
 Sun,  2 Jun 2019 16:22:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id OveDXzj0DDUe; Sun,  2 Jun 2019 16:22:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0A788F2003;
 Sun,  2 Jun 2019 16:22:28 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:27 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:04 +0200
Message-ID: <20190602142210.10670-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 3/9] lib/ukdebug: save actual
 data into tracebuffer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

TWFjcm8gVUtfVFJBQ0VQT0lOVCBnZW5lcmF0ZXMgYSBzdGF0aWMgZnVuY3Rpb24uIE9uZSBwZXIK
dHJhY2Vwb2ludC4gTGF0ZXIgdXNlciB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBzdG9yZSBk
YXRhIGludG8gdGhlCnRyYWNlYnVmZmVyCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5
dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+Ci0tLQogbGliL3VrZGVidWcvTWFrZWZpbGUudWsgICAgICAgIHwgICAx
ICsKIGxpYi91a2RlYnVnL2V4cG9ydHN5bXMudWsgICAgICB8ICAgMiArCiBsaWIvdWtkZWJ1Zy9p
bmNsdWRlL3VrL3RyYWNlLmggfCAxMjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst
CiBsaWIvdWtkZWJ1Zy90cmFjZS5jICAgICAgICAgICAgfCAgNDUgKysrKysrKysrKysrCiA0IGZp
bGVzIGNoYW5nZWQsIDE2OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3VrZGVidWcvdHJhY2UuYwoKZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL01h
a2VmaWxlLnVrIGIvbGliL3VrZGVidWcvTWFrZWZpbGUudWsKaW5kZXggYWJjMzQwZGQuLmUyZTZm
ZDJhIDEwMDY0NAotLS0gYS9saWIvdWtkZWJ1Zy9NYWtlZmlsZS51aworKysgYi9saWIvdWtkZWJ1
Zy9NYWtlZmlsZS51awpAQCAtOCw2ICs4LDcgQEAgTElCVUtERUJVR19DWFhGTEFHUy15ICs9IC1E
X19JTl9MSUJVS0RFQlVHX18KIAogTElCVUtERUJVR19TUkNTLXkgKz0gJChMSUJVS0RFQlVHX0JB
U0UpL3ByaW50LmMKIExJQlVLREVCVUdfU1JDUy15ICs9ICQoTElCVUtERUJVR19CQVNFKS9oZXhk
dW1wLmMKK0xJQlVLREVCVUdfU1JDUy0kKENPTkZJR19MSUJVS0RFQlVHX1RSQUNFUE9JTlRTKSAr
PSAkKExJQlVLREVCVUdfQkFTRSkvdHJhY2UuYwogCiBFWFRSQV9MRF9TQ1JJUFQtJChDT05GSUdf
TElCVkZTQ09SRSkgKz0gJChMSUJVS0RFQlVHX0JBU0UpL2V4dHJhLmxkCiBTVFJJUF9TRUNUSU9O
U19GTEFHUy0kKENPTkZJR19MSUJVS0RFQlVHX1RSQUNFUE9JTlRTKSArPSAtUiAudWtfdHJhY2Vw
b2ludHNfbGlzdApkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvZXhwb3J0c3ltcy51ayBiL2xpYi91
a2RlYnVnL2V4cG9ydHN5bXMudWsKaW5kZXggY2I4ZDI0MDMuLjk3NjM3NjhmIDEwMDY0NAotLS0g
YS9saWIvdWtkZWJ1Zy9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi91a2RlYnVnL2V4cG9ydHN5bXMu
dWsKQEAgLTcsMyArNyw1IEBAIHVrX2hleGR1bXBmCiB1a19oZXhkdW1wZAogX3VrX2hleGR1bXBk
CiBfdWtfaGV4ZHVtcGsKK3VrX3RyYWNlX2J1ZmZlcl9mcmVlCit1a190cmFjZV9idWZmZXJfd3Jp
dGVwCmRpZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmggYi9saWIvdWtk
ZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgKaW5kZXggYTRkNmNmMDUuLjkxMWNhNmE2IDEwMDY0NAot
LS0gYS9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgKKysrIGIvbGliL3VrZGVidWcvaW5j
bHVkZS91ay90cmFjZS5oCkBAIC0zNiw3ICszNiwxOSBAQAogI2RlZmluZSBfVUtfVFJBQ0VfSF8K
ICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk
ZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8dWsvcGxhdC90aW1lLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisjaW5jbHVkZSA8dWsvYXJjaC9sY3B1Lmg+CisjaW5jbHVkZSA8dWsvcGxhdC9sY3B1Lmg+
CiAKKy8qIFRoZXJlIGlzIG5vIGp1c3RpZmljYXRpb24gb2YgdGhlIGxpbWl0IG9mIDgwIHN5bWJv
bHMuIEJ1dCB0aGVyZQorICogbXVzdCBiZSBhIGxpbWl0IGFueXdheXMuIEp1c3QgbnVtYmVyIGZy
b20gdGhlIGNvZGluZyBzdGFuZGFyZCBpcworICogdXNlZC4gRmVlbCBmcmVlIHRvIGNoYW5nZSB0
aGlzIGxpbWl0IGlmIHlvdSBoYXZlIHRoZSBhY3R1YWwgcmVhc29uCisgKiBmb3IgYW5vdGhlciBu
dW1iZXIKKyAqLworI2RlZmluZSBfX1VLX1RSQUNFX01BWF9TVFJMRU4gODAKKyNkZWZpbmUgVUtf
VFBfSEVBREVSX01BR0lDIDB4NjQ2ODUyNTQgLyogVFJoZCAqLwogI2RlZmluZSBVS19UUF9ERUZf
TUFHSUMgMHg2NTY0NTA1NCAvKiBUUGRlICovCiAKIGVudW0gX191a190cmFjZV9hcmdfdHlwZSB7
CkBAIC00NCw2ICs1NiwxNiBAQCBlbnVtIF9fdWtfdHJhY2VfYXJnX3R5cGUgewogCV9fVUtfVFJB
Q0VfQVJHX1NUUklORyA9IDEsCiB9OwogCitzdHJ1Y3QgdWtfdHJhY2Vwb2ludF9oZWFkZXIgewor
CXVpbnQzMl90IG1hZ2ljOworCXVpbnQzMl90IHNpemU7CisJX19uc2VjIHRpbWU7CisJdm9pZCAq
Y29va2llOworfTsKKworZXh0ZXJuIHNpemVfdCB1a190cmFjZV9idWZmZXJfZnJlZTsKK2V4dGVy
biBjaGFyICp1a190cmFjZV9idWZmZXJfd3JpdGVwOworCiAvKiBUT0RPOiBjb25zaWRlciB0byBt
b3ZlIFVLX0NPTkNBVCBpbnRvIHB1YmxpYyBoZWFkZXJzICovCiAjZGVmaW5lIF9fVUtfQ09OQ0FU
X1goYSwgYikgYSMjYgogI2RlZmluZSBVS19DT05DQVQoYSwgYikgX19VS19DT05DQVRfWChhLCBi
KQpAQCAtNTEsNiArNzMsNDUgQEAgZW51bSBfX3VrX3RyYWNlX2FyZ190eXBlIHsKICNkZWZpbmUg
X19VS19OQVJHU19YKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIG4sIC4uLikgbgogI2RlZmluZSBV
S19OQVJHUyguLi4pICBfX1VLX05BUkdTX1goLCAjI19fVkFfQVJHU19fLCA3LCA2LCA1LCA0LCAz
LCAyLCAxLCAwKQogCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3VrX3RyYWNlX3NhdmVfYXJnKGNo
YXIgKipwYnVmZiwKKwkJCQkgICAgICBzaXplX3QgKnBmcmVlLAorCQkJCSAgICAgIGVudW0gX191
a190cmFjZV9hcmdfdHlwZSB0eXBlLAorCQkJCSAgICAgIGludCBzaXplLAorCQkJCSAgICAgIGxv
bmcgYXJnKQoreworCWNoYXIgKmJ1ZmYgPSAqcGJ1ZmY7CisJc2l6ZV90IGZyZWUgPSAqcGZyZWU7
CisJaW50IGxlbjsKKworCWlmICh0eXBlID09IF9fVUtfVFJBQ0VfQVJHX1NUUklORykgeworCQls
ZW4gPSBzdHJubGVuKChjaGFyICopIGFyZywgX19VS19UUkFDRV9NQVhfU1RSTEVOKTsKKwkJLyog
VGhlICcrMScgaXMgZm9yIHN0b3JpbmcgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgKi8KKwkJc2l6ZSA9
IGxlbiArIDE7CisJfQorCisJaWYgKGZyZWUgPCAoc2l6ZV90KSBzaXplKSB7CisJCS8qIEJsb2Nr
IHRoZSBuZXh0IGludm9jYXRpb25zIG9mIHRyYWNlIHBvaW50cyAqLworCQkqcGZyZWUgPSAwOwor
CQl1a190cmFjZV9idWZmZXJfZnJlZSA9IDA7CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKHR5
cGUpIHsKKwljYXNlIF9fVUtfVFJBQ0VfQVJHX0lOVDoKKwkJLyogZm9yIHNpbXBsaWNpdHkgd2Ug
ZG8gbm90IGNhcmUgYWJvdXQgYWxpZ25tZW50ICovCisJCW1lbWNweShidWZmLCAmYXJnLCBzaXpl
KTsKKwkJYnJlYWs7CisJY2FzZSBfX1VLX1RSQUNFX0FSR19TVFJJTkc6CisJCSooKHVpbnQ4X3Qg
KikgYnVmZikgPSBsZW47CisJCW1lbWNweShidWZmICsgMSwgKGNoYXIgKikgYXJnLCBsZW4pOwor
CQlicmVhazsKKwl9CisKKwkqcGJ1ZmYgPSBidWZmICsgc2l6ZTsKKwkqcGZyZWUgLT0gc2l6ZTsK
K30KKwogI2RlZmluZSBfX1VLX1RSQUNFX0dFVF9UWVBFKGFyZykgKAkJCQkJXAogCV9fYnVpbHRp
bl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKGFyZyksIGNvbnN0IGNoYXIgKikgKglcCiAJCV9f
VUtfVFJBQ0VfQVJHX1NUUklORyArCQkJCQlcCkBAIC01OCw2ICsxMTksMjIgQEAgZW51bSBfX3Vr
X3RyYWNlX2FyZ190eXBlIHsKIAkJX19VS19UUkFDRV9BUkdfU1RSSU5HICsJCQkJCVwKIAkwKQog
CisjZGVmaW5lIF9fVUtfVFJBQ0VfU0FWRV9PTkUoYXJnKSBfX3VrX3RyYWNlX3NhdmVfYXJnKAlc
CisJCSZidWZmLAkJCQkJXAorCQkmZnJlZSwJCQkJCVwKKwkJX19VS19UUkFDRV9HRVRfVFlQRShh
cmcpLAkJXAorCQlzaXplb2YoYXJnKSwJCQkJXAorCQkobG9uZykgYXJnKQorCisjZGVmaW5lIF9f
VUtfVFJBQ0VfU0FWRV9BUkdTMCgpCisjZGVmaW5lIF9fVUtfVFJBQ0VfU0FWRV9BUkdTMSgpIF9f
VUtfVFJBQ0VfU0FWRV9PTkUoYXJnMSkKKyNkZWZpbmUgX19VS19UUkFDRV9TQVZFX0FSR1MyKCkg
X19VS19UUkFDRV9TQVZFX0FSR1MxKCk7IF9fVUtfVFJBQ0VfU0FWRV9PTkUoYXJnMikKKyNkZWZp
bmUgX19VS19UUkFDRV9TQVZFX0FSR1MzKCkgX19VS19UUkFDRV9TQVZFX0FSR1MyKCk7IF9fVUtf
VFJBQ0VfU0FWRV9PTkUoYXJnMykKKyNkZWZpbmUgX19VS19UUkFDRV9TQVZFX0FSR1M0KCkgX19V
S19UUkFDRV9TQVZFX0FSR1MzKCk7IF9fVUtfVFJBQ0VfU0FWRV9PTkUoYXJnNCkKKyNkZWZpbmUg
X19VS19UUkFDRV9TQVZFX0FSR1M1KCkgX19VS19UUkFDRV9TQVZFX0FSR1M0KCk7IF9fVUtfVFJB
Q0VfU0FWRV9PTkUoYXJnNSkKKyNkZWZpbmUgX19VS19UUkFDRV9TQVZFX0FSR1M2KCkgX19VS19U
UkFDRV9TQVZFX0FSR1M1KCk7IF9fVUtfVFJBQ0VfU0FWRV9PTkUoYXJnNikKKyNkZWZpbmUgX19V
S19UUkFDRV9TQVZFX0FSR1M3KCkgX19VS19UUkFDRV9TQVZFX0FSR1M2KCk7IF9fVUtfVFJBQ0Vf
U0FWRV9PTkUoYXJnNykKKwogI2RlZmluZSBfX1VLX0dFVF9BUkcxKGExLCAuLi4pIGExCiAjZGVm
aW5lIF9fVUtfR0VUX0FSRzIoYTEsIGEyLCAuLi4pIGEyCiAjZGVmaW5lIF9fVUtfR0VUX0FSRzMo
YTEsIGEyLCBhMywgLi4uKSBhMwpAQCAtMTI3LDYgKzIwNCw0MCBAQCBlbnVtIF9fdWtfdHJhY2Vf
YXJnX3R5cGUgewogCQlfX1VLX1RSQUNFX0FSR19UWVBFUyhOUiwgX19WQV9BUkdTX18pLAkJXAog
CQkjdHJhY2VfbmFtZSwgZm10IH0KIAorc3RhdGljIGlubGluZSBjaGFyICpfX3VrX3RyYWNlX2dl
dF9idWZmKHNpemVfdCAqZnJlZSkKK3sKKwlzdHJ1Y3QgdWtfdHJhY2Vwb2ludF9oZWFkZXIgKnJl
dDsKKworCWlmICh1a190cmFjZV9idWZmZXJfZnJlZSA8IHNpemVvZigqcmV0KSkKKwkJcmV0dXJu
IDA7CisJcmV0ID0gKHN0cnVjdCB1a190cmFjZXBvaW50X2hlYWRlciAqKSB1a190cmFjZV9idWZm
ZXJfd3JpdGVwOworCisJLyogSW4gY2FzZSB3ZSBmYWlsIHRvIGZpbGwgdGhlIHRyYWNlcG9pbnQg
Zm9yIGFueSByZWFzb24sIG1ha2UKKwkgKiBzdXJlIHdlIGRvIG5vdCBjb25mdXNlIHBhcnNlci4g
V2UgZmlsbCB0aGUgaGVhZGVyIG9ubHkKKwkgKiBhZnRlciB0aGUgZnVsbCB0cmFjZXBvaW50IGlz
IGNvbXBsZXRlZAorCSAqLworCXJldC0+bWFnaWMgPSAwOworCSpmcmVlID0gdWtfdHJhY2VfYnVm
ZmVyX2ZyZWUgLSBzaXplb2YoKnJldCk7CisJcmV0dXJuIChjaGFyICopIChyZXQgKyAxKTsKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIF9fdWtfdHJhY2VfZmluYWxpemVfYnVmZihjaGFyICpuZXdf
YnVmZl9wb3MsIHZvaWQgKmNvb2tpZSkKK3sKKwl1aW50MzJfdCBzaXplOworCXN0cnVjdCB1a190
cmFjZXBvaW50X2hlYWRlciAqaGVhZCA9CisJCShzdHJ1Y3QgdWtfdHJhY2Vwb2ludF9oZWFkZXIg
KikgdWtfdHJhY2VfYnVmZmVyX3dyaXRlcDsKKworCXNpemUgPSBuZXdfYnVmZl9wb3MgLSB1a190
cmFjZV9idWZmZXJfd3JpdGVwOworCXVrX3RyYWNlX2J1ZmZlcl93cml0ZXAgKz0gc2l6ZTsKKwl1
a190cmFjZV9idWZmZXJfZnJlZSAtPSBzaXplOworCisJaGVhZC0+dGltZSA9IHVrcGxhdF9tb25v
dG9uaWNfY2xvY2soKTsKKwloZWFkLT5zaXplID0gc2l6ZSAtIHNpemVvZigqaGVhZCk7CisJaGVh
ZC0+Y29va2llID0gY29va2llOworCWJhcnJpZXIoKTsKKwloZWFkLT5tYWdpYyA9IFVLX1RQX0hF
QURFUl9NQUdJQzsKK30KKwogLyogTWFrZXMgZnJvbSAiY29uc3QgY2hhcioiICJjb25zdCBjaGFy
KiBhcmcxIi4KICAqLwogI2RlZmluZSBfX1VLX0FSR1NfTUFQX0ZOKG4sIHQpIHQgVUtfQ09OQ0FU
KGFyZywgbikKQEAgLTE0Myw4ICsyNTQsMTcgQEAgZW51bSBfX3VrX3RyYWNlX2FyZ190eXBlIHsK
ICNkZWZpbmUgX19fX1VLX1RSQUNFUE9JTlQobiwgcmVnZGF0YV9uYW1lLCB0cmFjZV9uYW1lLCBm
bXQsIC4uLikJXAogCV9fVUtfVFJBQ0VfUkVHKG4sIHJlZ2RhdGFfbmFtZSwgdHJhY2VfbmFtZSwg
Zm10LAkJXAogCQkgICAgICAgX19WQV9BUkdTX18pOwkJCQkJXAotCXN0YXRpYyBpbmxpbmUgdm9p
ZCB0cmFjZV9uYW1lKF9fVUtfVFJBQ0VfQVJHU19NQVBfVU5VU0VEKG4sIF9fVkFfQVJHU19fKSkg
XAorCXN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV9uYW1lKF9fVUtfVFJBQ0VfQVJHU19NQVAobiwg
X19WQV9BUkdTX18pKSBcCiAJewkJCQkJCQkJXAorCQl1bnNpZ25lZCBsb25nIGZsYWdzID0gdWtw
bGF0X2xjcHVfc2F2ZV9pcnFmKCk7CQlcCisJCXNpemVfdCBmcmVlIF9fbWF5YmVfdW51c2VkOwkJ
CQlcCisJCWNoYXIgKmJ1ZmYgPSBfX3VrX3RyYWNlX2dldF9idWZmKCZmcmVlKTsJCVwKKwkJaWYg
KGJ1ZmYpIHsJCQkJCQlcCisJCQlfX1VLX1RSQUNFX1NBVkVfQVJHUyAjIyBuKCk7CQkJXAorCQkJ
X191a190cmFjZV9maW5hbGl6ZV9idWZmKAkJCVwKKwkJCQlidWZmLCAmcmVnZGF0YV9uYW1lKTsJ
CQlcCisJCX0JCQkJCQkJXAorCQl1a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoZmxhZ3MpOwkJCVwK
IAl9CiAjZWxzZQogI2RlZmluZSBfX19fVUtfVFJBQ0VQT0lOVChuLCByZWdkYXRhX25hbWUsIHRy
YWNlX25hbWUsIGZtdCwgLi4uKQlcCmRpZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy90cmFjZS5jIGIv
bGliL3VrZGVidWcvdHJhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4u
ZjMzMTg1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdWtkZWJ1Zy90cmFjZS5jCkBAIC0wLDAg
KzEsNDUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8q
CisgKiBBdXRob3JzOiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KKyAq
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5F
QyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRo
ZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBP
UiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+CisKKy8qIFRPRE86IEltcGxlbWVudCBhIGNpcmN1bGFyIGJ1
ZmZlci4gQ3VycmVudGx5LCBpZiB0aGUgYnVmZmVyIGlzCisgKiBmdWxsLCB0cmFjaW5nIGRpc2Fi
bGVzIGl0c2VsZi4KKyAqLworI2RlZmluZSBVS19UUkFDRV9CVUZGRVJfU0laRSAxNjM4NAorY2hh
ciB1a190cmFjZV9idWZmZXJbVUtfVFJBQ0VfQlVGRkVSX1NJWkVdOworCitzaXplX3QgdWtfdHJh
Y2VfYnVmZmVyX2ZyZWUgPSBVS19UUkFDRV9CVUZGRVJfU0laRTsKK2NoYXIgKnVrX3RyYWNlX2J1
ZmZlcl93cml0ZXAgPSB1a190cmFjZV9idWZmZXI7Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22: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 1hXRNf-00041W-FF; Sun, 02 Jun 2019 14:22: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=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNe-00041M-G6
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:38 +0000
X-Inumbo-ID: dcd397ba-8541-11e9-8a9f-074bd242c25d
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dcd397ba-8541-11e9-8a9f-074bd242c25d;
 Sun, 02 Jun 2019 14:22:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 57814105247;
 Sun,  2 Jun 2019 16:22:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mjkGusH1F5QW; Sun,  2 Jun 2019 16:22:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 39124104817;
 Sun,  2 Jun 2019 16:22:33 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:32 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:05 +0200
Message-ID: <20190602142210.10670-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 4/9] lib/ukdebug: key-value
 static storage for tracing
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T25lIG1vcmUgJ3NwZWNpYWwnIHN0cmlwYWJsZSBzZWN0aW9uLiBXaWxsIGNvbnRhaW4gc3RyaW5n
cyBpbiBmb3JtYXQKa2V5ID0gdmFsdWUuIEN1cnJlbnRseSwgb25seSB0aGUgdHJhY2VidWZmZXIg
Zm9ybWF0IHZlcnNpb24gaXMgc3RvcmVkCnRoZXJlLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xj
aGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBDb3N0aW4gTHVwdSA8
Y29zdGluLmx1cHVAY3MucHViLnJvPgotLS0KIGxpYi91a2RlYnVnL01ha2VmaWxlLnVrIHwgIDIg
Ky0KIGxpYi91a2RlYnVnL2V4dHJhLmxkICAgIHwgIDMgKysrCiBsaWIvdWtkZWJ1Zy90cmFjZS5j
ICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRp
b25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvTWFrZWZpbGUu
dWsgYi9saWIvdWtkZWJ1Zy9NYWtlZmlsZS51awppbmRleCBlMmU2ZmQyYS4uNjYzYWM2ZGUgMTAw
NjQ0Ci0tLSBhL2xpYi91a2RlYnVnL01ha2VmaWxlLnVrCisrKyBiL2xpYi91a2RlYnVnL01ha2Vm
aWxlLnVrCkBAIC0xMSw0ICsxMSw0IEBAIExJQlVLREVCVUdfU1JDUy15ICs9ICQoTElCVUtERUJV
R19CQVNFKS9oZXhkdW1wLmMKIExJQlVLREVCVUdfU1JDUy0kKENPTkZJR19MSUJVS0RFQlVHX1RS
QUNFUE9JTlRTKSArPSAkKExJQlVLREVCVUdfQkFTRSkvdHJhY2UuYwogCiBFWFRSQV9MRF9TQ1JJ
UFQtJChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJVS0RFQlVHX0JBU0UpL2V4dHJhLmxkCi1T
VFJJUF9TRUNUSU9OU19GTEFHUy0kKENPTkZJR19MSUJVS0RFQlVHX1RSQUNFUE9JTlRTKSArPSAt
UiAudWtfdHJhY2Vwb2ludHNfbGlzdAorU1RSSVBfU0VDVElPTlNfRkxBR1MtJChDT05GSUdfTElC
VUtERUJVR19UUkFDRVBPSU5UUykgKz0gLVIgLnVrX3RyYWNlcG9pbnRzX2xpc3QgLVIgLnVrX3Ry
YWNlX2tleXZhbHMKZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL2V4dHJhLmxkIGIvbGliL3VrZGVi
dWcvZXh0cmEubGQKaW5kZXggNDMxNTRmOWQuLmJiMGIzNmI4IDEwMDY0NAotLS0gYS9saWIvdWtk
ZWJ1Zy9leHRyYS5sZAorKysgYi9saWIvdWtkZWJ1Zy9leHRyYS5sZApAQCAtNSw2ICs1LDkgQEAg
U0VDVElPTlMKIAkJS0VFUCAoKigudWtfdHJhY2Vwb2ludHNfbGlzdCkpOwogCQl1a190cmFjZXBv
aW50c19lbmQgPSAuOwogCX0KKwkudWtfdHJhY2Vfa2V5dmFscyA6IHsKKwkJS0VFUCAoKigudWtf
dHJhY2Vfa2V5dmFscykpOworCX0KIH0KIAogLyogV2UgZG8gbm90IHdhbnQgdGhlc2Ugc2VjdGlv
biB0byBiZSBpbiB0aGUgZmluYWwgaW1hZ2UsIHRoZXkgYXJlCmRpZmYgLS1naXQgYS9saWIvdWtk
ZWJ1Zy90cmFjZS5jIGIvbGliL3VrZGVidWcvdHJhY2UuYwppbmRleCBmMzMxODU1Ny4uOTFjYzIz
ODcgMTAwNjQ0Ci0tLSBhL2xpYi91a2RlYnVnL3RyYWNlLmMKKysrIGIvbGliL3VrZGVidWcvdHJh
Y2UuYwpAQCAtNDMsMyArNDMsMjEgQEAgY2hhciB1a190cmFjZV9idWZmZXJbVUtfVFJBQ0VfQlVG
RkVSX1NJWkVdOwogCiBzaXplX3QgdWtfdHJhY2VfYnVmZmVyX2ZyZWUgPSBVS19UUkFDRV9CVUZG
RVJfU0laRTsKIGNoYXIgKnVrX3RyYWNlX2J1ZmZlcl93cml0ZXAgPSB1a190cmFjZV9idWZmZXI7
CisKKworLyogU3RvcmUgYSBzdHJpbmcgaW4gZm9ybWF0ICJrZXkgPSB2YWx1ZSIgaW4gdGhlIHNl
Y3Rpb24KKyAqIC51a190cmFjZV9rZXl2YWxzLiBUaGlzIGNhbiBiZSBhbnl0aGluZyB3aGF0IHlv
dSB3YW50IHRyYWNlLnB5CisgKiBzY3JpcHQgdG8ga25vdyBhYm91dCwgYW5kIHdoYXQgeW91IGRv
IG5vdCB3YW50IHRvIGNvbnN1bWUgYW55IHNwYWNlCisgKiBpbiBydW50aW1lIG1lbW9yeS4KKyAq
CisgKiBUaGlzIHNlY3Rpb24gd2lsbCBiZSBzdHJpcHBlZCBhdCB0aGUgZmluYWwgc3RhdGVzIG9m
IGJ1aWxkaW5nLCBidXQKKyAqIHRoZSBrZXktdmFsdWUgZGF0YSBjYW4gYmUgZWFzaWx5IGV4dHJh
Y3RlZCBieToKKyAqCisgKiAgICAgJCByZWFkZWxmIC1wIC51a190cmFjZV9rZXl2YWxzIDx5b3Vy
X2ltYWdlLmdkYj4KKyAqLworI2RlZmluZSBUUkFDRV9ERUZJTkVfS0VZKGtleSwgdmFsKQkJCVwK
KwlfX2F0dHJpYnV0ZSgoX19zZWN0aW9uX18oIi51a190cmFjZV9rZXl2YWxzIikpKQlcCisJc3Rh
dGljIGNvbnN0IGNoYXIga2V5W10gX191c2VkID0JCVwKKwkJI2tleSAiID0gIiAjdmFsCisKK1RS
QUNFX0RFRklORV9LRVkoZm9ybWF0X3ZlcnNpb24sIDEpOwotLSAKMi4xOS4yCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22: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 1hXRNi-00042L-Gr; Sun, 02 Jun 2019 14:22:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNh-000427-90
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:41 +0000
X-Inumbo-ID: dfedf4da-8541-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id dfedf4da-8541-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 14:22:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 82E44F201F;
 Sun,  2 Jun 2019 16:22:38 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id s6nhCLNY8GuI; Sun,  2 Jun 2019 16:22:38 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5AF6AF2003;
 Sun,  2 Jun 2019 16:22:34 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:33 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:06 +0200
Message-ID: <20190602142210.10670-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 5/9] support/scripts: fetch trace
 data from running 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: costin.lupu@cs.pub.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>

RmV0Y2ggdHJhY2VidWZmZXIsIGtleS12YWx1ZXMgYW5kIHRyYWNlcG9pbnQgZGVmaW5pdGlvbnMg
dXNpbmcgb2JqY29weQphbmQgZ2RiLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHVrLWdkYi5weSBz
Y3JpcHQsIHdoaWNoIGlzIGEgZ2RiLWV4dGVuc2lvbgpwcm92aWRpbmcgaGFuZHkgaGVscGVycy4g
Q3VycmVudGx5LCBpdCBpcyBvbmx5IHRyYWNlcG9pbnRzIHJlbGF0ZWQKc3R1ZmYsIGJ1dCBwb3Nz
aWJpbGl0aWVzIGFyZSBnb2luZyBiZXlvbmQgdGhhdC4KClRoZSB1ay1nZGIucHkgY2FuIGJlIGxv
YWRlZCBpbnRvIGdkYiBtYW51YWxseSAodmlhICJzb3VyY2UiIGNvbW1hbmQpCm9yIHVzaW5nIGdk
YidzIGF1dG8tbG9hZCBmZWF0dXJlLiBHZGIgbG9va3MgZm9yIGEgZmlsZSBuYW1lZApvYmpmaWxl
LWdkYi5weSwgd2hlcmUgb2JqZmlsZSBpcyB0aGUgb2JqZWN0IGZpbGUncyByZWFsIG5hbWUuCgpU
byBhY2hpZXZlIHRoYXQgdWstZ2RiLnB5IGlzIGNvcGllZCBpbnRvIHRoZSBidWlsZCBkaXJlY3Rv
cnkgd2l0aCBhCmxpdHRsZSBtb2RpZmljYXRpb24gLSBoYXJkY29kZSB0aGUgYWJzb2x1dGUgcGF0
aCB0byB0aGUgVW5pa3JhZnQncwpzY3JpcHRzIGRpcmVjdG9yeS4KClRoZSB0cmFjZS5weSBpcyBh
IHRvb2wgZm9yIGFuYWx5emluZyB0cmFjZXMuIEN1cnJlbnRseSwgaXQgZG9lcyBvbmx5CnRoZSBi
YXNpYyBzdHVmZjogZmV0Y2hlcyB0cmFjaW5nIGRhdGEgZnJvbSBhIHJ1bm5pbmcgaW5zdGFuY2Ug
KGNhbiBydW4KZ2RiIGZvciB5b3UpIGFuZCBwcmludHMgb3V0IHBhcnNlZCBpbmZvcm1hdGlvbiAo
aW4gdGhlIG5leHQKcGF0Y2gpLiBCdXQgaXQgd2lsbCBldmVudHVhbGx5IGJlIGFibGUgdG8gZG8g
bW9yZS4gRm9yIGV4YW1wbGUKc3RhdGlzdGljcyBvZiBtb3N0IGZyZXF1ZW50bHkgb2NjdXJyZWQg
ZXZlbnRzLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNs
YWIuZXU+ClJldmlld2VkLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgot
LS0KIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArKy0KIHN1cHBv
cnQvc2NyaXB0cy91ay1nZGIucHkgICAgICAgICAgICB8IDEyMiArKysrKysrKysrKysrKysrKysr
KysrKysrKysKIHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9fX2luaXRfXy5weSB8ICAgMAogc3Vw
cG9ydC9zY3JpcHRzL3VrX3RyYWNlL3BhcnNlLnB5ICAgIHwgIDU3ICsrKysrKysrKysrKysKIHN1
cHBvcnQvc2NyaXB0cy91a190cmFjZS90cmFjZS5weSAgICB8IDEwMyArKysrKysrKysrKysrKysr
KysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDI5MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3VwcG9ydC9zY3JpcHRzL3VrLWdkYi5weQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9fX2luaXRfXy5weQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9wYXJzZS5weQogY3JlYXRlIG1vZGUg
MTAwNzU1IHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS90cmFjZS5weQoKZGlmZiAtLWdpdCBhL01h
a2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggYzA0OTI5MjAuLmU0MjNiZThkIDEwMDY0NAotLS0gYS9N
YWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtNTM0LDggKzUzNCwxOCBAQCBsaWJzOiAkKFVLX0FM
SUJTKSAkKFVLX0FMSUJTLXkpICQoVUtfT0xJQlMpICQoVUtfT0xJQlMteSkKIAogaW1hZ2VzOiAk
KFVLX0lNQUdFUykgJChVS19JTUFHRVMteSkKIAotYWxsOiBpbWFnZXMKK0dEQl9IRUxQRVJfTElO
S1MgOj0gJChhZGRzdWZmaXggIC5kYmctZ2RiLnB5LCQoVUtfSU1BR0VTLXkpICQoVUtfSU1BR0VT
KSkKKyQoR0RCX0hFTFBFUl9MSU5LUyk6CisJJChjYWxsIHZlcmJvc2VfY21kLExOLCQobm90ZGly
ICRAKSwgbG4gLXNmIHVrLWdkYi5weSAkQCkKIAorU0NSSVBUU19ESVJfQkFDS1NMQVNIRUQgPSAk
KHN1YnN0IC8sXC8sJChTQ1JJUFRTX0RJUikpCiskKEJVSUxEX0RJUikvdWstZ2RiLnB5OiAkKFND
UklQVFNfRElSKS91ay1nZGIucHkKKwkkKGNhbGwgdmVyYm9zZV9jbWQsR0VOLCQobm90ZGlyICRA
KSwgXAorCXNlZCAnL3NjcmlwdHNfZGlyID0gLyBzL29zLnBhdGguZGlybmFtZShvcy5wYXRoLnJl
YWxwYXRoKF9fZmlsZV9fKSkvIiQoU0NSSVBUU19ESVJfQkFDS1NMQVNIRUQpIi9nJyAkXiA+ICRA
KQorCitnZGJfaGVscGVyczogJChHREJfSEVMUEVSX0xJTktTKSAkKEJVSUxEX0RJUikvdWstZ2Ri
LnB5CisKK2FsbDogaW1hZ2VzIGdkYl9oZWxwZXJzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog
IyBDbGVhbnVwIHJ1bGVzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3Vw
cG9ydC9zY3JpcHRzL3VrLWdkYi5weSBiL3N1cHBvcnQvc2NyaXB0cy91ay1nZGIucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmU0YjAwMzhkCi0tLSAvZGV2L251bGwKKysr
IGIvc3VwcG9ydC9zY3JpcHRzL3VrLWdkYi5weQpAQCAtMCwwICsxLDEyMiBAQAorIyEvdXNlci9i
aW4vZW52IHB5dGhvbjMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAq
LworIworIyBBdXRob3JzOiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4K
KyMKKyMgQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBO
RUMgQ29ycG9yYXRpb24uCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdo
dCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgICAgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyAiQVMgSVMiCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorIyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgVEhJ
UyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKwor
aW1wb3J0IGdkYgoraW1wb3J0IHBpY2tsZQoraW1wb3J0IG9zLCBzeXMKK2ltcG9ydCB0ZW1wZmls
ZSwgc2h1dGlsCisKK3NjcmlwdHNfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBh
dGgoX19maWxlX18pKQorc3lzLnBhdGguYXBwZW5kKHNjcmlwdHNfZGlyKQorCitpbXBvcnQgdWtf
dHJhY2UucGFyc2UgYXMgcGFyc2UKKwordHlwZV9jaGFyID0gZ2RiLmxvb2t1cF90eXBlKCdjaGFy
JykKK3R5cGVfdm9pZCA9IGdkYi5sb29rdXBfdHlwZSgndm9pZCcpCisKK1BUUl9TSVpFID0gdHlw
ZV92b2lkLnBvaW50ZXIoKS5zaXplb2YKKworZGVmIGdldF90cmFjZV9idWZmZXIoKToKKyAgICBp
bmYgPSBnZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKQorCisgICAgdHJ5OgorICAgICAgICB0cmFjZV9i
dWZmID0gZ2RiLnBhcnNlX2FuZF9ldmFsKCd1a190cmFjZV9idWZmZXInKQorICAgICAgICB0cmFj
ZV9idWZmX3NpemUgPSB0cmFjZV9idWZmLnR5cGUuc2l6ZW9mCisgICAgICAgIHRyYWNlX2J1ZmZf
YWRkciA9IGludCh0cmFjZV9idWZmLmFkZHJlc3MpCisgICAgICAgIHRyYWNlX2J1ZmZfd3JpdGVw
ID0gaW50KGdkYi5wYXJzZV9hbmRfZXZhbCgndWtfdHJhY2VfYnVmZmVyX3dyaXRlcCcpKQorICAg
IGV4Y2VwdCBnZGIuZXJyb3I6CisgICAgICAgIGdkYi53cml0ZSgiRXJyb3IgZ2V0dGluZyB0aGUg
dHJhY2UgYnVmZmVyLiBJcyB0cmFjaW5nIGVuYWJsZWQ/XG4iKQorICAgICAgICByYWlzZSBnZGIu
ZXJyb3IKKworICAgIGlmICh0cmFjZV9idWZmX3dyaXRlcCA9PSAwKToKKyAgICAgICAgIyBUaGlz
IGNhbiBoYXBwZW4gYXMgZWZmZWN0IG9mIGNvbXBpbGUgb3B0aW1pemF0aW9uIGlmIG5vbmUgb2YK
KyAgICAgICAgIyB0cmFjZXBvaW50cyB3ZXJlIGNhbGxlZAorICAgICAgICB1c2VkID0gMAorICAg
IGVsc2U6CisgICAgICAgIHVzZWQgPSB0cmFjZV9idWZmX3dyaXRlcCAtIHRyYWNlX2J1ZmZfYWRk
cgorCisgICAgcmV0dXJuIGJ5dGVzKGluZi5yZWFkX21lbW9yeSh0cmFjZV9idWZmX2FkZHIsIHVz
ZWQpKQorCitkZWYgc2F2ZV90cmFjZXMob3V0KToKKyAgICBlbGYgPSBnZGIuY3VycmVudF9wcm9n
c3BhY2UoKS5maWxlbmFtZQorCisgICAgcGlja2xlciA9IHBpY2tsZS5QaWNrbGVyKG91dCkKKwor
ICAgICMga2V5dmFscyBuZWVkIHRvIGdvIGZpcnN0LCBiZWNhdXNlIHRoZXkgaGF2ZSBmb3JtYXRf
dmVyc2lvbgorICAgICMga2V5LiBFdmVuIGlmIHRoZSBmb3JtYXQgaXMgY2hhbmdlZCB3ZSBtdXN0
IGd1YXJhbnRlZSB0aGF0IGF0CisgICAgIyBsZWFzdCBrZXl2YWxzIGFyZSBhbHdheXMgc3RvcmVk
IGZpcnN0LiBIb3dldmVyLCBpZGVhbGx5LCBuZXh0CisgICAgIyB2ZXJzaW9ucyBzaG91bGQganVz
dCBoYXZlIG1vZGlmaWNhdGlvbnMgYXQgdGhlIHZlcnkgZW5kIHRvIGtlZXAKKyAgICAjIGNvbXBh
dGliaWxpdHkgd2l0aCBwcmV2aW91c2x5IGNvbGxlY3RlZCBkYXRhLgorICAgIHBpY2tsZXIuZHVt
cChwYXJzZS5nZXRfa2V5dmFscyhlbGYpKQorICAgIHBpY2tsZXIuZHVtcChlbGYpCisgICAgcGlj
a2xlci5kdW1wKFBUUl9TSVpFKQorICAgICMgV2UgYXJlIHNhdmluZyByYXcgdHJhY2UgYnVmZmVy
IGhlcmUuIEFub3RoZXIgb3B0aW9uIGlzIHRvIHBpY2tsZQorICAgICMgYWxyZWFkeSBwYXJzZWQg
c2FtcGxlcy4gQnV0IGluIHRoZSBjaG9zZW4gY2FzZSBpdCBpcyBhIGxvdAorICAgICMgZWFzaWVy
IHRvIGRlYnVnIHRoZSBwYXJzZXIsIGJlY2F1c2UgcHl0aG9uIGluIGdkYiBpcyBub3QgdmVyeQor
ICAgICMgY29udmVuaWVudCBmb3IgZGV2ZWxvcG1lbnQuCisgICAgcGlja2xlci5kdW1wKHBhcnNl
LmdldF90cF9zZWN0aW9ucyhlbGYpKQorICAgIHBpY2tsZXIuZHVtcChnZXRfdHJhY2VfYnVmZmVy
KCkpCisKK2NsYXNzIHVrKGdkYi5Db21tYW5kKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6Cisg
ICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsICd1aycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdkYi5DT01NQU5EX1VTRVIsIGdkYi5DT01QTEVURV9DT01NQU5ELCBUcnVl
KQorCitjbGFzcyB1a190cmFjZShnZGIuQ29tbWFuZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgorICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAndWsgdHJhY2UnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9VU0VSLCBnZGIuQ09NUExFVEVfQ09N
TUFORCwgVHJ1ZSkKKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZywgZnJvbV90dHkpOgorICAgICAg
ICAjIFRPRE8KKyAgICAgICAgcGFzcworCitjbGFzcyB1a190cmFjZV9zYXZlKGdkYi5Db21tYW5k
KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9f
KHNlbGYsICd1ayB0cmFjZSBzYXZlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Ri
LkNPTU1BTkRfVVNFUiwgZ2RiLkNPTVBMRVRFX0NPTU1BTkQpCisgICAgZGVmIGludm9rZShzZWxm
LCBhcmcsIGZyb21fdHR5KToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIGdkYi53
cml0ZSgnTWlzc2luZyBhcmd1bWVudC4gVXNhZ2U6IHVrIHRyYWNlIHNhdmUgPGZpbGVuYW1lPlxu
JykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGdkYi53cml0ZSgnU2F2aW5nIHRyYWNl
cyB0byAlcyAuLi5cbicgJSBhcmcpCisKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBv
cmFyeUZpbGUoKSBhcyBvdXQ6CisgICAgICAgICAgICBzYXZlX3RyYWNlcyhvdXQpCisgICAgICAg
ICAgICBvdXQuZmx1c2goKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG91dC5uYW1lLCBh
cmcpCisKK3VrKCkKK3VrX3RyYWNlKCkKK3VrX3RyYWNlX3NhdmUoKQpkaWZmIC0tZ2l0IGEvc3Vw
cG9ydC9zY3JpcHRzL3VrX3RyYWNlL19faW5pdF9fLnB5IGIvc3VwcG9ydC9zY3JpcHRzL3VrX3Ry
YWNlL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lNjlk
ZTI5YgpkaWZmIC0tZ2l0IGEvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3BhcnNlLnB5IGIvc3Vw
cG9ydC9zY3JpcHRzL3VrX3RyYWNlL3BhcnNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwLi40MDdmNDdlMwotLS0gL2Rldi9udWxsCisrKyBiL3N1cHBvcnQvc2NyaXB0cy91
a190cmFjZS9wYXJzZS5weQpAQCAtMCwwICsxLDU3IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBCU0QtMy1DbGF1c2UgKi8KKyMKKyMgQXV0aG9yczogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+CisjCisjIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRv
cmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjICAgIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyMgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyMgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisjCisjIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuCisKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgcmUKK2ltcG9ydCB0
ZW1wZmlsZQorCitkZWYgZ2V0X3RwX3NlY3Rpb25zKGVsZik6CisgICAgZiA9IHRlbXBmaWxlLk5h
bWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgb2JqY29weV9jbWQgID0gJ29iamNvcHkgLU8gYmluYXJ5
ICVzICcgJSBlbGYKKyAgICBvYmpjb3B5X2NtZCArPSAnLS1vbmx5LXNlY3Rpb249LnVrX3RyYWNl
cG9pbnRzX2xpc3QgJyArIGYubmFtZQorICAgIG9iamNvcHlfY21kID0gb2JqY29weV9jbWQuc3Bs
aXQoKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChvYmpjb3B5X2NtZCkKKyAgICByZXR1cm4g
Zi5yZWFkKCkKKworZGVmIGdldF9rZXl2YWxzKGVsZik6CisgICAgcmVhZGVsZl9jbWQgPSAncmVh
ZGVsZiAtcCAudWtfdHJhY2Vfa2V5dmFscyAlcycgJSBlbGYKKyAgICByZWFkZWxmX2NtZCA9IHJl
YWRlbGZfY21kLnNwbGl0KCkKKyAgICByYXdfZGF0YSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0
KHJlYWRlbGZfY21kKS5kZWNvZGUoKQorICAgIGZpbHRlcmVkID0gcmUuZmluZGFsbChyJ15ccypc
WyAqXGQrXF1ccysoLispID0gKC4rKSQnLCByYXdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmUuTVVMVElMSU5FKQorCisgICAgcmV0ID0gZGljdCgpCisgICAgZm9yIGtleSx2YWwg
aW4gZmlsdGVyZWQ6CisgICAgICAgIHJldFtrZXldID0gdmFsCisKKyAgICByZXR1cm4gcmV0CmRp
ZmYgLS1naXQgYS9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UvdHJhY2UucHkgYi9zdXBwb3J0L3Nj
cmlwdHMvdWtfdHJhY2UvdHJhY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAuLjEwYzk4NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNl
L3RyYWNlLnB5CkBAIC0wLDAgKzEsMTAzIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKyMKKyMgQXV0aG9yczogWXVy
aSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+CisjCisjIENvcHlyaWdodCAoYykg
MjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElT
IgorIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyMg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIFRISVMgSEVBREVSIE1BWSBOT1QgQkUg
RVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisKK2ltcG9ydCBjbGljaworaW1wb3J0
IG9zLCBzeXMKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzdWJwcm9jZXNzCisKK2ltcG9ydCBwYXJz
ZQorCitAY2xpY2suZ3JvdXAoKQorZGVmIGNsaSgpOgorICAgIHBhc3MKKworZGVmIHBhcnNlX3Rm
KHRyYWNlX2ZpbGUpOgorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHRyYWNlX2ZpbGUsICdy
YicpIGFzIHRmOgorICAgICAgICAgICAgdW5waWNrbGVyID0gcGlja2xlLlVucGlja2xlcih0ZikK
KworICAgICAgICAgICAga2V5dmFscyA9IHVucGlja2xlci5sb2FkKCkKKyAgICAgICAgICAgIGVs
ZiA9IHVucGlja2xlci5sb2FkKCkKKyAgICAgICAgICAgIHB0cl9zaXplID0gdW5waWNrbGVyLmxv
YWQoKQorICAgICAgICAgICAgdHBfZGVmcyA9IHVucGlja2xlci5sb2FkKCkKKyAgICAgICAgICAg
IHRyYWNlX2J1ZmYgPSB1bnBpY2tsZXIubG9hZCgpCisgICAgZXhjZXB0IEVPRkVycm9yOgorICAg
ICAgICBwcmludCgiVW5leHBlY3RlZCBlbmQgb2YgdHJhY2UgZmlsZSIsIGZpbGU9c3lzLnN0ZGVy
cikKKyAgICAgICAgcXVpdCgtMSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGluc3Q6CisgICAg
ICAgIHByaW50KCJQcm9ibGVtIG9jY3VycmVkIGR1cmluZyByZWFkaW5nIHRoZSB0cmFjZWZpbGU6
ICVzIiAlIHN0cihpbnN0KSkKKyAgICAgICAgcXVpdCgtMSkKKworICAgIHJldHVybiBwYXJzZS5z
YW1wbGVfcGFyc2VyKGtleXZhbHMsIHRwX2RlZnMsIHRyYWNlX2J1ZmYsIHB0cl9zaXplKQorCitA
Y2xpLmNvbW1hbmQoKQorQGNsaWNrLmFyZ3VtZW50KCd1a19pbWcnLCB0eXBlPWNsaWNrLlBhdGgo
ZXhpc3RzPVRydWUpKQorQGNsaWNrLm9wdGlvbignLS1vdXQnLCAnLW8nLCB0eXBlPWNsaWNrLlBh
dGgoKSwKKyAgICAgICAgICAgICAgZGVmYXVsdD0ndHJhY2VmaWxlJywgc2hvd19kZWZhdWx0PVRy
dWUsCisgICAgICAgICAgICAgIGhlbHA9J091dHB1dCBiaW5hcnkgZmlsZScpCitAY2xpY2sub3B0
aW9uKCctLXJlbW90ZScsICctcicsIHR5cGU9Y2xpY2suU1RSSU5HLAorICAgICAgICAgICAgICBk
ZWZhdWx0PSc6MTIzNCcsIHNob3dfZGVmYXVsdD1UcnVlLAorICAgICAgICAgICAgICBoZWxwPSdI
b3cgdG8gY29ubmVjdCB0byB0aGUgZ2RiIHNlc3Npb24gJysKKyAgICAgICAgICAgICAgJyhwYXJh
bWV0ZXJzIGZvciAidGFyZ2V0IHJlbW90ZSIgY29tbWFuZCknKQorQGNsaWNrLm9wdGlvbignLS12
ZXJib3NlJywgaXNfZmxhZz1UcnVlLCBkZWZhdWx0PUZhbHNlKQorZGVmIGZldGNoKHVrX2ltZywg
b3V0LCByZW1vdGUsIHZlcmJvc2UpOgorICAgICIiIkZldGNoIGJpbmFyeSB0cmFjZSBmaWxlIGZy
b20gVW5pa3JhZnQgKHVzaW5nIGdkYikiIiIKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKG91dCk6
CisgICAgICAgIG9zLnJlbW92ZShvdXQpCisKKyAgICBoZWxwZXJfcGF0aCA9IG9zLnBhdGguYWJz
cGF0aCh1a19pbWcpICsgJy1nZGIucHknCisgICAgZ2RiX2NtZCA9IFsnZ2RiJywgJy1uaCcsICct
YmF0Y2gnLAorICAgICAgICAgICAgICAgY2xpY2suZm9ybWF0X2ZpbGVuYW1lKHVrX2ltZyksCisg
ICAgICAgICAgICAgICAnLWlleCcsICdhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCAnICsgaGVscGVy
X3BhdGgsCisgICAgICAgICAgICAgICAnLWV4JywgJ3RhcmdldCByZW1vdGUgJyArIHJlbW90ZSwK
KyAgICAgICAgICAgICAgICctZXgnLCAndWsgdHJhY2Ugc2F2ZSAnICsgb3V0CisgICAgXQorCisg
ICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oZ2RiX2NtZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVAorICAgICkKKyAgICBfc3Rkb3V0LCBfID0gcHJv
Yy5jb21tdW5pY2F0ZSgpCisgICAgX3N0ZG91dCA9IF9zdGRvdXQuZGVjb2RlKCkKKyAgICBpZiBw
cm9jLnJldHVybmNvZGUgb3Igbm90IG9zLnBhdGguZXhpc3RzKG91dCk6CisgICAgICAgIHByaW50
KF9zdGRvdXQpCisgICAgICAgIHN5cy5leGl0KDEpCisgICAgaWYgdmVyYm9zZToKKyAgICAgICAg
cHJpbnQoX3N0ZG91dCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGNsaSgp
Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14: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 1hXRNl-000439-JU; Sun, 02 Jun 2019 14: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=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNk-00042w-Pm
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:44 +0000
X-Inumbo-ID: e087194a-8541-11e9-b1f2-735178cd6a60
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e087194a-8541-11e9-b1f2-735178cd6a60;
 Sun, 02 Jun 2019 14:22:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 89DE8105247;
 Sun,  2 Jun 2019 16:22:39 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MYgvtIq8k-T0; Sun,  2 Jun 2019 16:22:39 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 693BB104817;
 Sun,  2 Jun 2019 16:22:39 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:39 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:07 +0200
Message-ID: <20190602142210.10670-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 6/9] support/scripts: implement
 trace buffer parsing
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2l0aCB0aGlzIHBhdGNoIHRyYWNlLnB5IGNhbiBwcmludCB0aGUgZGF0YSBjb2xsZWN0ZWQgaW4g
dGhlCnRyYWNlZmlsZS4gQW5kIHR3byBtb3JlIHVzZSBjYXNlcyBhcmUgY292ZXJlZCBmb3IgY29u
dmVuaWVuY2U6CgogIC0gSWYgLS1saXN0IHNwZWNpZmllZCB0cmFjZS5weSB3aWxsIHBhcnNlIGZy
ZXNobHkgZmV0Y2hlZCB0cmFjZWZpbGUKICAgIGFuZCBwcmludCBvdXQgd2hhdCBpcyBjb2xsZWN0
ZWQKCiAgLSBHZGIgY29tbWFuZCAndWsgdHJhY2UnIHBhcnNlcyBhbmQgcHJpbnRzIGRhdGEgd2l0
aG91dCBpbnRlcm1lZGlhdGUKICAgIHRyYWNlIGZpbGVzCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZv
bGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogc3VwcG9ydC9zY3JpcHRzL3VrLWdkYi5weSAg
ICAgICAgIHwgICA5ICstCiBzdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UvcGFyc2UucHkgfCAxNTEg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2Uv
dHJhY2UucHkgfCAgMjIgKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyks
IDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3VwcG9ydC9zY3JpcHRzL3VrLWdkYi5weSBi
L3N1cHBvcnQvc2NyaXB0cy91ay1nZGIucHkKaW5kZXggZTRiMDAzOGQuLjE0YWE5YWFmIDEwMDY0
NAotLS0gYS9zdXBwb3J0L3NjcmlwdHMvdWstZ2RiLnB5CisrKyBiL3N1cHBvcnQvc2NyaXB0cy91
ay1nZGIucHkKQEAgLTk4LDggKzk4LDEzIEBAIGNsYXNzIHVrX3RyYWNlKGdkYi5Db21tYW5kKToK
ICAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgJ3VrIHRyYWNlJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfVVNFUiwgZ2RiLkNPTVBMRVRFX0NPTU1B
TkQsIFRydWUpCiAgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToKLSAgICAgICAg
IyBUT0RPCi0gICAgICAgIHBhc3MKKyAgICAgICAgZWxmID0gZ2RiLmN1cnJlbnRfcHJvZ3NwYWNl
KCkuZmlsZW5hbWUKKyAgICAgICAgc2FtcGxlcyA9IHBhcnNlLnNhbXBsZV9wYXJzZXIocGFyc2Uu
Z2V0X2tleXZhbHMoZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyc2UuZ2V0X3RwX3NlY3Rpb25zKGVsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdldF90cmFjZV9idWZmZXIoKSwgUFRSX1NJWkUpCisgICAgICAgIGZvciBzYW1w
bGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHByaW50KHNhbXBsZSkKKwogCiBjbGFzcyB1a190
cmFjZV9zYXZlKGdkYi5Db21tYW5kKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CmRpZmYgLS1n
aXQgYS9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UvcGFyc2UucHkgYi9zdXBwb3J0L3NjcmlwdHMv
dWtfdHJhY2UvcGFyc2UucHkKaW5kZXggNDA3ZjQ3ZTMuLjgxNDJiYzQ1IDEwMDY0NAotLS0gYS9z
dXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UvcGFyc2UucHkKKysrIGIvc3VwcG9ydC9zY3JpcHRzL3Vr
X3RyYWNlL3BhcnNlLnB5CkBAIC0zMSwxMCArMzEsMTYxIEBACiAjCiAjIFRISVMgSEVBREVSIE1B
WSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAKK2ltcG9ydCBzdHJ1
Y3QKK2ltcG9ydCBzeXMKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1w
ZmlsZQogCitUUF9IRUFERVJfTUFHSUMgPSAnVFJoZCcKK1RQX0RFRl9NQUdJQyA9ICdUUGRlJwor
VUtfVFJBQ0VfQVJHX0lOVCA9IDAKK1VLX1RSQUNFX0FSR19TVFJJTkcgPSAxCisjIE5vdCBzdXJl
IHdoeSBnY2MgYWxpZ25zIGRhdGEgb24gMzIgYnl0ZXMKK19fU1RSVUNUX0FMSUdOTUVOVCA9IDMy
CisKK0ZPUk1BVF9WRVJTSU9OID0gMQorCitkZWYgYWxpZ25fZG93bih2LCBhbGlnbm1lbnQpOgor
ICAgIHJldHVybiB2ICYgfihhbGlnbm1lbnQgLSAxKQorCitkZWYgYWxpZ25fdXAodiwgYWxpZ25t
ZW50KToKKyAgICByZXR1cm4gYWxpZ25fZG93bih2ICsgYWxpZ25tZW50IC0gMSwgYWxpZ25tZW50
KQorCitjbGFzcyB0cF9zYW1wbGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRwLCB0aW1lLCBh
cmdzKToKKyAgICAgICAgc2VsZi50cCA9IHRwCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAg
ICAgICAgc2VsZi50aW1lID0gdGltZQorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gKCgiJTAxNmQgJXM6ICIgJSAoc2VsZi50aW1lLCBzZWxmLnRwLm5hbWUpKSArCisgICAg
ICAgICAgICAgICAgIChzZWxmLnRwLmZtdCAlIHNlbGYuYXJncykpCisgICAgZGVmIHRhYnVsYXRl
X2ZtdChzZWxmKToKKyAgICAgICAgcmV0dXJuIFtzZWxmLnRpbWUsIHNlbGYudHAubmFtZSwgKHNl
bGYudHAuZm10ICUgc2VsZi5hcmdzKV0KKworY2xhc3MgRW5kT2ZCdWZmZXIoRXhjZXB0aW9uKToK
KyAgICBwYXNzCisKKyMgUGFyc2luZyBvZiB0cmFjZSBidWZmZXIgaXMgZGVzaWduZWQgdG8gYmUg
dXNlZCB3aXRob3V0IGdkYi4gSWYgZXZlcgorIyBVbmlrcmFmdCB3aWxsIGhhdmUgYSBiYXJlIG1l
dGFsIHBvcnQsIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIHVzZQorIyBnZGIgZm9yIGZldGNo
aW5nIGFuZCBwYXJzaW5nIHJ1bnRpbWUgZGF0YS4KKyMKKyMgSG93ZXZlciwgaXQgaXMgcG9zc2li
bGUgYW55d2F5cyB0byBnZXQgYW4gYWRkcmVzcyBvZiB0aGUgc3RhdGljYWxseQorIyBhbGxvY2F0
ZWQgdHJhY2UgYnVmZmVyIHVzaW5nIGdkYi9ubS9vYmpkdW1wLiBBbmQgd2UgY2FuIHVzZSBzb21l
CisjIGRpZmZlcmVudCBtZWNoYW5pc20gdG8gY29weSBtZW1vcnkgZnJvbSB0aGUgcnVubmluZyBp
bnN0YW5jZSBvZgorIyBVbmlrcmFmdCAod2hpY2ggaXMgeWV0IHRvIGJlIGRlc2lnbmVkKS4KKyMK
KyMgU2ltaWxhciBjb25zaWRlcmF0aW9ucyBhcmUgYXBwbGllZCB0byBwYXJzaW5nIHRyYWNlIHBv
aW50CisjIGRlZmluaXRpb25zLiBXZSBjYW4gZG8gdGhhdCBkaXNyZWdhcmRpbmcgaWYgaXQgaXMg
cG9zc2libGUgdG8gYXR0YWNoCisjIGdkYiB0byBhIHJ1bm5pbmcgaW5zdGFuY2Ugb3Igbm90Citj
bGFzcyBzYW1wbGVfcGFyc2VyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXl2YWxzLCB0cF9k
ZWZzX2RhdGEsIHRyYWNlX2J1ZmYsIHB0cl9zaXplKToKKyAgICAgICAgaWYgKGludChrZXl2YWxz
Wydmb3JtYXRfdmVyc2lvbiddKSA+IEZPUk1BVF9WRVJTSU9OKToKKyAgICAgICAgICAgIHByaW50
KCJXYXJuaW5nOiBWZXJzaW9uIG9mIHRyYWNlIGZvcm1hdCBpcyBtb3JlIHJlY2VudCIsCisgICAg
ICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHNlbGYuZGF0YSA9IHVucGFj
a2VyKHRyYWNlX2J1ZmYpCisgICAgICAgIHNlbGYudHBzID0gZ2V0X3RwX2RlZmluaXRpb25zKHRw
X2RlZnNfZGF0YSwgcHRyX3NpemUpCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBz
ZWxmLmRhdGEucG9zID0gMAorICAgICAgICByZXR1cm4gc2VsZgorICAgIGRlZiBfX25leHRfXyhz
ZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBUT0RPOiBnZW5lcmF0ZSBmb3JtYXQu
IENvb2tpZSBjYW4gYmUgNCBieXRlcyBsb25nIG9uIG90aGVyCisgICAgICAgICAgICAjIHBsYXRm
b3JtcworICAgICAgICAgICAgbWFnaWMsc2l6ZSx0aW1lLGNvb2tpZSA9IHNlbGYuZGF0YS51bnBh
Y2soJzRzTFFRJykKKyAgICAgICAgZXhjZXB0IEVuZE9mQnVmZmVyOgorICAgICAgICAgICAgcmFp
c2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIG1hZ2ljID0gbWFnaWMuZGVjb2RlKCkKKyAgICAg
ICAgaWYgKG1hZ2ljICE9IFRQX0hFQURFUl9NQUdJQyk6CisgICAgICAgICAgICByYWlzZSBTdG9w
SXRlcmF0aW9uCisKKyAgICAgICAgdHAgPSBzZWxmLnRwc1tjb29raWVdCisgICAgICAgIGFyZ3Mg
PSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSh0cC5hcmdzX25yKToKKyAgICAgICAgICAgIGlm
IHRwLnR5cGVzW2ldID09IFVLX1RSQUNFX0FSR19TVFJJTkc6CisgICAgICAgICAgICAgICAgYXJn
cyArPSBbc2VsZi5kYXRhLnVucGFja19zdHJpbmcoKV0KKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgYXJncyArPSBbc2VsZi5kYXRhLnVucGFja19pbnQodHAuc2l6ZXNbaV0pXQor
CisgICAgICAgIHJldHVybiB0cF9zYW1wbGUodHAsIHRpbWUsIHR1cGxlKGFyZ3MpKQorCitjbGFz
cyB1bnBhY2tlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYu
ZGF0YSA9IGRhdGEKKyAgICAgICAgc2VsZi5wb3MgPSAwCisgICAgICAgIHNlbGYuZW5kaWFuID0g
JzwnCisgICAgZGVmIHVucGFjayhzZWxmLCBmbXQpOgorICAgICAgICBmbXQgPSBzZWxmLmVuZGlh
biArIGZtdAorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgaWYg
c2l6ZSA+IGxlbihzZWxmLmRhdGEpIC0gc2VsZi5wb3M6CisgICAgICAgICAgICByYWlzZSBFbmRP
ZkJ1ZmZlcigiTm8gZGF0YSBpbiBidWZmZXIgZm9yIHVucGFja2luZyAlcyBieXRlcyIgJSBzaXpl
KQorICAgICAgICBjdXIgPSBzZWxmLmRhdGFbc2VsZi5wb3M6c2VsZi5wb3MgKyBzaXplXQorICAg
ICAgICBzZWxmLnBvcyArPSBzaXplCisgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKGZtdCwg
Y3VyKQorICAgIGRlZiB1bnBhY2tfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdHJsZW4sID0gc2Vs
Zi51bnBhY2soJ0InKQorICAgICAgICBmbXQgPSAnJWRzJyAlIHN0cmxlbgorICAgICAgICByZXQs
ID0gc2VsZi51bnBhY2soZm10KQorICAgICAgICByZXR1cm4gcmV0LmRlY29kZSgpCisgICAgZGVm
IHVucGFja19pbnQoc2VsZiwgc2l6ZSk6CisgICAgICAgIGlmIHNpemUgPT0gMToKKyAgICAgICAg
ICAgIGZtdCA9ICdCJworICAgICAgICBlbGlmIHNpemUgPT0gMjoKKyAgICAgICAgICAgIGZtdCA9
ICdIJworICAgICAgICBlbGlmIHNpemUgPT0gNDoKKyAgICAgICAgICAgIGZtdCA9ICdJJworICAg
ICAgICBlbGlmIHNpemUgPT0gODoKKyAgICAgICAgICAgIGZtdCA9ICdRJworICAgICAgICByZXQs
ID0gc2VsZi51bnBhY2soZm10KQorICAgICAgICByZXR1cm4gcmV0CisgICAgZGVmIGFsaWduX3Bv
cyhzZWxmLCBhbGlnbm1lbnQpOgorICAgICAgICBzZWxmLnBvcyA9IGFsaWduX3VwKHNlbGYucG9z
LCBhbGlnbm1lbnQpCisKK2NsYXNzIHRwX2RlZmluaXRpb246CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG5hbWUsIGFyZ3NfbnIsIGZtdCwgc2l6ZXMsIHR5cGVzKToKKyAgICAgICAgc2VsZi5uYW1l
ID0gbmFtZQorICAgICAgICBzZWxmLmFyZ3NfbnIgPSBhcmdzX25yCisgICAgICAgIHNlbGYuZm10
ID0gZm10CisgICAgICAgIHNlbGYuc2l6ZXMgPSBzaXplcworICAgICAgICBzZWxmLnR5cGVzID0g
dHlwZXMKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzICVzJyAl
IChzZWxmLm5hbWUsICBzZWxmLmZtdCkKKworZGVmIGdldF90cF9kZWZpbml0aW9ucyh0cF9kYXRh
LCBwdHJfc2l6ZSk6CisgICAgcHRyX2ZtdCA9ICcweCUwJyArICclZHgnICUgKHB0cl9zaXplICog
MikKKyAgICBkYXRhID0gdW5wYWNrZXIodHBfZGF0YSkKKworICAgIHJldCA9IGRpY3QoKQorCisg
ICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgZGF0YS5hbGlnbl9wb3MoX19TVFJVQ1RfQUxJR05NRU5U
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtYWdpYywgc2l6ZSwgY29va2llLCBhcmdzX25y
LCBuYW1lX2xlbiwgZm10X2xlbiA9IFwKKyAgICAgICAgICAgICAgICBkYXRhLnVucGFjaygiNHNJ
UUJCQiIpCisgICAgICAgIGV4Y2VwdCBFbmRPZkJ1ZmZlcjoKKyAgICAgICAgICAgIGJyZWFrCisK
KyAgICAgICAgbWFnaWMgPSBtYWdpYy5kZWNvZGUoKQorICAgICAgICBpZiAobWFnaWMgIT0gVFBf
REVGX01BR0lDKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiV3JvbmcgdHJhY2Vwb2lu
dCBkZWZpbml0aW9uIG1hZ2ljIikKKworICAgICAgICBzaXplcyA9IGRhdGEudW5wYWNrKCdCJyAq
IGFyZ3NfbnIpCisgICAgICAgIHR5cGVzID0gZGF0YS51bnBhY2soJ0InICogYXJnc19ucikKKyAg
ICAgICAgbmFtZSxmbXQgPSBkYXRhLnVucGFjaygnJWRzJWRzJyAlIChuYW1lX2xlbiwgZm10X2xl
bikpCisgICAgICAgICMgU3RyYW5nZSwgYnV0IHRlcm1pbmF0aW5nICdcMCcgbWFrZXMgYSBwcm9i
bGVtIGlmIHRoZSBzY3JpcHQKKyAgICAgICAgIyBpcyBydW5uaW5nIGluIHRoZSBnZGIKKyAgICAg
ICAgbmFtZSA9IG5hbWVbOi0xXS5kZWNvZGUoKQorICAgICAgICBmbXQgPSBmbXRbOi0xXS5kZWNv
ZGUoKQorCisgICAgICAgICMgQ29udmVydCBmcm9tIGMtcHJpbnRmIGZvcm1hdCBpbnRvIHB5dGhv
biBvbmUKKyAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoJyVwJywgcHRyX2ZtdCkKKworICAgICAg
ICByZXRbY29va2llXSA9IHRwX2RlZmluaXRpb24obmFtZSwgYXJnc19uciwgZm10LCBzaXplcywg
dHlwZXMpCisKKyAgICByZXR1cm4gcmV0CisKIGRlZiBnZXRfdHBfc2VjdGlvbnMoZWxmKToKICAg
ICBmID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKICAgICBvYmpjb3B5X2NtZCAgPSAn
b2JqY29weSAtTyBiaW5hcnkgJXMgJyAlIGVsZgpkaWZmIC0tZ2l0IGEvc3VwcG9ydC9zY3JpcHRz
L3VrX3RyYWNlL3RyYWNlLnB5IGIvc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3RyYWNlLnB5Cmlu
ZGV4IDEwYzk4NWU1Li41ZmFmY2E2MyAxMDA3NTUKLS0tIGEvc3VwcG9ydC9zY3JpcHRzL3VrX3Ry
YWNlL3RyYWNlLnB5CisrKyBiL3N1cHBvcnQvc2NyaXB0cy91a190cmFjZS90cmFjZS5weQpAQCAt
MzYsNiArMzYsNyBAQCBpbXBvcnQgY2xpY2sKIGltcG9ydCBvcywgc3lzCiBpbXBvcnQgcGlja2xl
CiBpbXBvcnQgc3VicHJvY2VzcworZnJvbSB0YWJ1bGF0ZSBpbXBvcnQgdGFidWxhdGUKIAogaW1w
b3J0IHBhcnNlCiAKQEAgLTYyLDYgKzYzLDE5IEBAIGRlZiBwYXJzZV90Zih0cmFjZV9maWxlKToK
IAogICAgIHJldHVybiBwYXJzZS5zYW1wbGVfcGFyc2VyKGtleXZhbHMsIHRwX2RlZnMsIHRyYWNl
X2J1ZmYsIHB0cl9zaXplKQogCitAY2xpLmNvbW1hbmQoKQorQGNsaWNrLmFyZ3VtZW50KCd0cmFj
ZV9maWxlJywgdHlwZT1jbGljay5QYXRoKGV4aXN0cz1UcnVlKSwgZGVmYXVsdD0ndHJhY2VmaWxl
JykKK0BjbGljay5vcHRpb24oJy0tbm8tdGFidWxhdGUnLCBpc19mbGFnPVRydWUsCisgICAgICAg
ICAgICAgIGhlbHA9J05vIHByZXR0eSBwcmludGluZycpCitkZWYgbGlzdCh0cmFjZV9maWxlLCBu
b190YWJ1bGF0ZSk6CisgICAgIiIiUGFyc2UgYmluYXJ5IHRyYWNlIGZpbGUgZmV0Y2hlZCBmcm9t
IFVuaWtyYWZ0IiIiCisgICAgaWYgbm90IG5vX3RhYnVsYXRlOgorICAgICAgICBwcmludF9kYXRh
ID0gW3gudGFidWxhdGVfZm10KCkgZm9yIHggaW4gcGFyc2VfdGYodHJhY2VfZmlsZSldCisgICAg
ICAgIHByaW50KHRhYnVsYXRlKHByaW50X2RhdGEsIGhlYWRlcnM9Wyd0aW1lJywgJ3RwX25hbWUn
LCAnbXNnJ10pKQorICAgIGVsc2U6CisgICAgICAgIGZvciBpIGluIHBhcnNlX3RmKHRyYWNlX2Zp
bGUpOgorICAgICAgICAgICAgcHJpbnQoaSkKKwogQGNsaS5jb21tYW5kKCkKIEBjbGljay5hcmd1
bWVudCgndWtfaW1nJywgdHlwZT1jbGljay5QYXRoKGV4aXN0cz1UcnVlKSkKIEBjbGljay5vcHRp
b24oJy0tb3V0JywgJy1vJywgdHlwZT1jbGljay5QYXRoKCksCkBAIC03MSw4ICs4NSwxMSBAQCBk
ZWYgcGFyc2VfdGYodHJhY2VfZmlsZSk6CiAgICAgICAgICAgICAgIGRlZmF1bHQ9JzoxMjM0Jywg
c2hvd19kZWZhdWx0PVRydWUsCiAgICAgICAgICAgICAgIGhlbHA9J0hvdyB0byBjb25uZWN0IHRv
IHRoZSBnZGIgc2Vzc2lvbiAnKwogICAgICAgICAgICAgICAnKHBhcmFtZXRlcnMgZm9yICJ0YXJn
ZXQgcmVtb3RlIiBjb21tYW5kKScpCitAY2xpY2sub3B0aW9uKCctLWxpc3QnLCAnZG9fbGlzdCcs
IGlzX2ZsYWc9VHJ1ZSwKKyAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAg
ICAgaGVscD0nUGFyc2UgdGhlIGZldGNoZWQgdHJhY2VmaWxlIGFuZCBsaXN0IGV2ZW50cycpCiBA
Y2xpY2sub3B0aW9uKCctLXZlcmJvc2UnLCBpc19mbGFnPVRydWUsIGRlZmF1bHQ9RmFsc2UpCi1k
ZWYgZmV0Y2godWtfaW1nLCBvdXQsIHJlbW90ZSwgdmVyYm9zZSk6CitkZWYgZmV0Y2godWtfaW1n
LCBvdXQsIHJlbW90ZSwgZG9fbGlzdCwgdmVyYm9zZSk6CiAgICAgIiIiRmV0Y2ggYmluYXJ5IHRy
YWNlIGZpbGUgZnJvbSBVbmlrcmFmdCAodXNpbmcgZ2RiKSIiIgogCiAgICAgaWYgb3MucGF0aC5l
eGlzdHMob3V0KToKQEAgLTk4LDYgKzExNSw5IEBAIGRlZiBmZXRjaCh1a19pbWcsIG91dCwgcmVt
b3RlLCB2ZXJib3NlKToKICAgICBpZiB2ZXJib3NlOgogICAgICAgICBwcmludChfc3Rkb3V0KQog
CisgICAgaWYgZG9fbGlzdDoKKyAgICAgICAgZm9yIGkgaW4gcGFyc2VfdGYob3V0KToKKyAgICAg
ICAgICAgIHByaW50KGkpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgY2xpKCkK
LS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXRNn-00043j-L5; Sun, 02 Jun 2019 14:22:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNm-00043T-Lz
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:46 +0000
X-Inumbo-ID: e38b2d35-8541-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e38b2d35-8541-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 14:22:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 92DF9F201F;
 Sun,  2 Jun 2019 16:22:44 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 60UpW7acuKXE; Sun,  2 Jun 2019 16:22:44 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6F5FDF2003;
 Sun,  2 Jun 2019 16:22:40 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:40 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:08 +0200
Message-ID: <20190602142210.10670-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 7/9] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Tm93IGl0IGlzIHBvc3NpYmxlIHRvIGluc3RhbGwgdWstdHJhY2UgaW4geW91ciBsb2NhbCB2aXJ0
dWFsCmVudmlyb25tZW50LiBGb3IgZXhhbXBsZToKICAgcHl0aG9uMyAtbSB2ZW52IGVudgogICAu
IGVudi9iaW4vYWN0aXZhdGUKICAgY2Qgc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlCiAgIHBpcCBp
bnN0YWxsIC0tdXBncmFkZSBwaXAgc2V0dXB0b29scyB3aGVlbAogICBwaXAgaW5zdGFsbCAtLWVk
aXRhYmxlIC4KICAgZGVhY3RpdmF0ZQoKQWxsIHRoZSBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0
YWxsZWQgaW4gdGhlICdlbnYnIGZvbGRlciwgbm90IHRvCnlvdXIgbWFjaGluZS4gQW5kIHlvdSBk
byBub3QgbmVlZCB0byBlbnRlciB5b3VyIHZpcnR1YWwgZW52aXJvbm1lbnQsCnlvdSBjYW4gY2Fs
bCBkaXJlY3RseToKCiAgIGVudi9iaW4vdWstdHJhY2UKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9s
Y2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIC5naXRpZ25vcmUgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAxICsKIHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS9zZXR1cC5weSB8
IDE0ICsrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBzdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2Uvc2V0dXAucHkKCmRpZmYg
LS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCAxNzkwOGI1MC4uMDllNGJhODEg
MTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMzQsMyArMzQsNCBA
QCBHVEFHUwogIyBjc2NvcGUgZmlsZXMKIGNzY29wZS4qCiBuY3Njb3BlLioKK3N1cHBvcnQvc2Ny
aXB0cy91a190cmFjZS91a190cmFjZS5lZ2ctaW5mby8KZGlmZiAtLWdpdCBhL3N1cHBvcnQvc2Ny
aXB0cy91a190cmFjZS9zZXR1cC5weSBiL3N1cHBvcnQvc2NyaXB0cy91a190cmFjZS9zZXR1cC5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uM2Q1NDJkMDIKLS0tIC9kZXYv
bnVsbAorKysgYi9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2Uvc2V0dXAucHkKQEAgLTAsMCArMSwx
NCBAQAorZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cAorCitzZXR1cCgKKyAgICBuYW1lPSd1
a190cmFjZScsCisgICAgdmVyc2lvbj0nMC4xJywKKyAgICBzY3JpcHRzPVsndHJhY2UucHknXSwK
KyAgICBpbnN0YWxsX3JlcXVpcmVzPVsKKyAgICAgICAgJ0NsaWNrJywgJ3RhYnVsYXRlJywKKyAg
ICBdLAorICAgIGVudHJ5X3BvaW50cz0nJycKKyAgICAgICAgW2NvbnNvbGVfc2NyaXB0c10KKyAg
ICAgICAgdWstdHJhY2U9dHJhY2U6Y2xpCisgICAgJycnLAorKQotLSAKMi4xOS4yCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14:22:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXRNo-00044F-Ms; Sun, 02 Jun 2019 14:22:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNn-00043y-UH
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:47 +0000
X-Inumbo-ID: e4384ec7-8541-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e4384ec7-8541-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 14:22:46 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BCEDA105247;
 Sun,  2 Jun 2019 16:22:45 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id blHgE6GOwlMB; Sun,  2 Jun 2019 16:22:45 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9CB87104817;
 Sun,  2 Jun 2019 16:22:45 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:45 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:09 +0200
Message-ID: <20190602142210.10670-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 8/9] doc/guides: Add section
 about tracepoints
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWRlYnVnZ2luZy5yc3QgfCAxMzcgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspCgpkaWZm
IC0tZ2l0IGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWRlYnVnZ2luZy5yc3QgYi9kb2MvZ3VpZGVz
L2RldmVsb3BlcnMtZGVidWdnaW5nLnJzdAppbmRleCAwZTg3OTljNC4uMjU4ZDJmOWYgMTAwNjQ0
Ci0tLSBhL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1kZWJ1Z2dpbmcucnN0CisrKyBiL2RvYy9ndWlk
ZXMvZGV2ZWxvcGVycy1kZWJ1Z2dpbmcucnN0CkBAIC03MiwzICs3MiwxNDAgQEAgWW91IGNhbiB0
aGVuIGNvbm5lY3QgZ2RiIHdpdGhpbiBhIHNlcGFyYXRlIGNvbnNvbGUgYW5kIHlvdSdyZSByZWFk
eSB0byBkZWJ1ZzogOjoKIFlvdSBzaG91bGQgYmUgYWxzbyBhYmxlIHRvIHVzZSB0aGUgZGVidWdn
aW5nIGZpbGUKIChgYGJ1aWxkL2hlbGxvd29ybGRfbGludXh1LXg4Nl82NC5kYmdgYCkgZm9yIGdk
YiBpbnN0ZWFkIHBhc3NpbmcgdGhlIGtlcm5lbAogaW1hZ2UuCisKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KK1RyYWNlIHBvaW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEZXBlbmRlbmNpZXMKKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBgYHN1cHBvcnQvc2NyaXB0cy91a190cmFjZS90cmFjZS5w
eWBgIGRlcGVuZHMgb24gcHl0aG9uIG1vZHVsZXMKK2NsaWNrIGFuZCB0YWJ1bGF0ZS4gWW91IGNh
biBpbnN0YWxsIHRoZW0gYnkgcnVubmluZzogOjoKKworICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBw
eXRob24zLWNsaWNrIHB5dGhvbjMtdGFidWxhdGUKKworT3IsIHlvdSBjYW4gaW5zdGFsbCB0cmFj
ZS5weSBpbnRvIGEgbG9jYWwgdmlydHVhbCBlbnZpcm9ubWVudDogOjoKKworICBweXRob24zIC1t
IHZlbnYgZW52CisgIC4gZW52L2Jpbi9hY3RpdmF0ZQorICBjZCBzdXBwb3J0L3NjcmlwdHMvdWtf
dHJhY2UKKyAgcGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcCBzZXR1cHRvb2xzIHdoZWVsCisgIHBp
cCBpbnN0YWxsIC0tZWRpdGFibGUgLgorICBkZWFjdGl2YXRlCisgIGNkIC0KKworQWxsIHRoZSBk
ZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0YWxsZWQgaW4gdGhlICdlbnYnIGZvbGRlciwgbm90IHRv
Cit5b3VyIG1hY2hpbmUuIFlvdSBkbyBub3QgaGF2ZSB0byBlbnRlciB5b3VyIHZpcnR1YWwgZW52
aXJvbm1lbnQsIHlvdQorY2FuIGNhbGwgdGhlIGluc3RhbGxlZCBzY3JpcHQgZGlyZWN0bHk6IDo6
CisKKyAgZW52L2Jpbi91ay10cmFjZSAtLWhlbHAKKworQmVjYXVzZSBvZiBgYC0tZWRpdGFibGVg
YCBmbGFnLCBhbnkgbW9kaWZpY2F0aW9ucyBtYWRlIHRvCitgYHN1cHBvcnQvc2NyaXB0cy91a190
cmFjZS90cmFjZS5weWBgIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZQoraW5zdGFsbGVkIGZpbGUu
CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JlYWRpbmcgdHJhY2Vwb2ludHMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVHJhY2Vwb2ludHMgYXJlIHByb3ZpZGVkIGJ5
IGBgbGlidWtkZWJ1Z2BgLiBUbyBtYWtlIFVuaWtyYWZ0IGNvbGxlY3QKK3RyYWNpbmcgZGF0YSBl
bmFibGUgdGhlIG9wdGlvbiBgYENPTkZJR19MSUJVS0RFQlVHX1RSQUNFUE9JTlRTYGAgaW4geW91
cgorY29uZmlnICh2aWEgYGBtYWtlIG1lbnVjb25maWdgYCkuCisKK0JlY2F1c2UgdHJhY2Vwb2lu
dHMgY2FuIG5vdGljZWFibHkgYWZmZWN0IHBlcmZvcm1hbmNlLCBzZWxlY3RpdmUKK2VuYWJsaW5n
IGlzIGltcGxlbWVudGVkLiBPcHRpb24gYGBDT05GSUdfTElCVUtERUJVR19UUkFDRVBPSU5UU2Bg
IGp1c3QKK2VuYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHksIGJ1dCBhbGwgdGhlIHRyYWNlcG9pbnRz
IGFyZSBjb21waWxlZCBpbnRvCitub3RoaW5nIGJ5IGRlZmF1bHQgKGhhdmUgbm8gZWZmZWN0KS4g
SWYgeW91IHdvdWxkIGxpa2Ugb25lIGxpYnJhcnkgdG8KK2NvbGxlY3QgdHJhY2luZyBkYXRhLCBh
ZGQgdG8gaXQncyBNYWtlZmlsZS51aworCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICBMSUJB
UFBOQU1FX0NGTEFHUyArPSAtRFVLX0RFQlVHX1RSQUNFCisKK0lmIHlvdSBuZWVkIGp1c3QgdGhl
IGluZm9ybWF0aW9uIGFib3V0IHRyYWNlcG9pbnRzIGluIG9uZSBmaWxlLCBkZWZpbmUKK2BgVUtf
REVCVUdfVFJBQ0VgYCAqKmJlZm9yZSoqIGBgI2luY2x1ZGUgPHVrL3RyYWNlLmg+YGAuCisKK0lm
IHlvdSB3aXNoIHRvIGVuYWJsZSAqKkFMTCoqIGV4aXN0aW5nIHRyYWNlcG9pbnRzLCBlbmFibGUK
K2BgQ09ORklHX0xJQlVLREVCVUdfQUxMX1RSQUNFUE9JTlRTYGAgaW4gbWVudWNvbmZpZy4KKwor
V2hlbiB0cmFjaW5nIGlzIGVuYWJsZWQsIHVuaWtyYWZ0IHdpbGwgd3JpdGUgc2FtcGxlcyBpbnRv
IGludGVybmFsCit0cmFjZSBidWZmZXIuIEN1cnJlbnRseSBpdCBpcyBub3QgYSBjaXJjdWxhciBi
dWZmZXIsIGFzIHNvb24gYXMgaXQKK292ZXJmbG93cywgdW5pa3JhZnQgd2lsbCBzdG9wIGNvbGxl
Y3RpbmcgZGF0YS4KKworVG8gcmVhZCB0aGUgY29sbGVjdGVkIGRhdGEgeW91IGhhdmUgMiBvcHRp
b25zOgorCisxLiBJbnNpZGUgZ2RiCisKKzIuIFVzaW5nIHRyYWNlLnB5CisKK0ZvciB0aGUgZmly
c3Qgb3B0aW9uLCB5b3UgbmVlZCB0aGUgJ3VrLWdkYi5weScgaGVscGVyIGxvYWRlZCBpbnRvIHRo
ZQorZ2RiIHNlc3Npb24uIFRvIG1ha2UgdGhpcyBoYXBwZW4gYWxsIHlvdSBuZWVkIHRvIGRvIGlz
IHRvIGFkZCB0aGUKK2ZvbGxvd2luZyBsaW5lIGludG8gfi8uZ2RiaW5pdDogOjoKKworICBhZGQt
YXV0by1sb2FkLXNhZmUtcGF0aCAvcGF0aC90by95b3VyL2J1aWxkL2RpcmVjdG9yeQorCitXaXRo
IHRoaXMsIGdkYiB3aWxsIGxvYWQgaGVscGVyIGF1dG9tYXRpY2FsbHksIGVhY2ggdGltZSB5b3Ug
c3RhcnQgZ2RiCit3aXRoIGEgKi5kYmcgaW1hZ2UuIEZvciBleGFtcGxlIDo6CisKKyAgZ2RiIGhl
bGxvd29ybGQvYnVpbGQvaGVsbG93b3JsZF9rdm0teDg2XzY0LmRiZworCitOb3cgeW91IGNhbiBw
cmludCB0cmFjaW5nIGxvZyBieSBpc3N1aW5nIGNvbW1hbmQgYGB1awordHJhY2VgYC4gQWx0ZXJu
YXRpdmVseSwgeW91IGNhbiBzYXZlIGFsbCB0cmFjZSBkYXRhIGludG8gYSBiaW5hcnkgZmlsZQor
d2l0aCBgYHVrIHRyYWNlIHNhdmUgPGZpbGVuYW1lPmBgLiBUaGlzIHRyYWNlZmlsZSBjYW4gYmUg
cHJvY2Vzc2VkCitsYXRlciBvZmZsaW5lIHVzaW5nIHRoZSB0cmFjZS5weSBzY3JpcHQ6IDo6CisK
KyAgc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3RyYWNlLnB5IGxpc3QgPGZpbGVuYW1lPgorCitX
aGljaCBicmluZ3MgdXMgdG8gdGhlIHNlY29uZCBvcHRpb24uIFRyYWNlLnB5IGNhbiBydW4gZ2Ri
IGFuZCBmZXRjaAordGhlIHRyYWNlZmlsZSBmb3IgeW91LiBKdXN0IHJ1bjogOjoKKworICBzdXBw
b3J0L3NjcmlwdHMvdWtfdHJhY2UvdHJhY2UucHkgZmV0Y2ggIDx5b3VyX3VuaWtyYWZ0X2ltYWdl
Pi5kYmcKKworLi4gbm90ZTo6IFRoZSAqLmRiZyBpbWFnZSBpcyByZXF1aXJlZCwgYXMgaXQgaGF2
ZSBvZmZsaW5lIGRhdGEgbmVlZGVkCisgICAgICAgICAgZm9yIHBhcnNpbmcgdGhlIHRyYWNlIGJ1
ZmZlci4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWRkaW5nIHlvdXIgdHJhY2Vw
b2ludHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JlbGxvdyBpcyBhIHNuaXBwZXQg
Zm9yIHVzaW5nIHRyYWNlcG9pbnRzOgorCisuLiBjb2RlLWJsb2NrOjogYworCisgIFVLX1RSQUNF
UE9JTlQodHJhY2VfdmZzX29wZW4sICJcIiVzXCIgMHgleCAwJTBvIiwgY29uc3QgY2hhciosIGlu
dCwgbW9kZV90KTsKKyAgaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywg
Li4uKQorICB7CisgIAl0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOworCisg
IAkvKiBsb3RzIG9mIGNvb2wgc3R1ZmYgKi8KKworICAJcmV0dXJuIDA7CisgIH0KKworTWFjcm8g
YGBVS19UUkFDRVBPSU5UKHRyYWNlX25hbWUsIGZtdCwgdHlwZTEsIHR5cGUyLCAuLi4gdHlwZU4p
YGAKK2dlbmVyYXRlcyBhIHN0YXRpYyBmdW5jdGlvbiBgdHJhY2VfbmFtZSgpYCwgYWNjZXB0aW5n
IE4gcGFyYW1ldGVycywgb2YKK3R5cGVzICoqdHlwZTEqKiwgKip0eXBlMioqIGFuZCBzbyBvbi4g
VXAgdG8gNyBwYXJhbWV0ZXJzIHN1cHBvcnRlZC4gVGhlCisqKmZtdCoqIGlzIGEgcHJpbnRmLXN0
eWxlIGZvcm1hdCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZm9ybSBhIG1lc3NhZ2UKK2NvcnJlc3Bv
bmRpbmcgdG8gdGhlIHRyYWNlIHNhbXBsZS4KKworVGhlICoqZm10KiogaXMgc3RhdGljIGFuZCBz
dG9yZWQgb2ZmbGluZS4gT25seSBwYXJhbWV0ZXJzIHZhbHVlcyBhcmUKK3NhdmVkIG9uIHRoZSB0
cmFjZSBidWZmZXIuIEl0IGlzIHRoZSBqb2Igb2YgdGhlIG9mZmxpbmUgcGFyc2VyIHRvCittYXRj
aCB0aGVtIHRvZ2V0aGVyIGFuZCBwcmludCBvdXQgcmVzdWx0aW5nIG1lc3NhZ2VzLgorCitOb3cg
eW91IGNhbiBjYWxsIHRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gZnJvbSB0aGUgcG9pbnQgb2YKK2lu
dGVyZXN0LiBZb3UgYXJlIGV4cGVjdGVkIHRvIGNhbGwgb25lIHRyYWNlcG9pbnQgZnJvbSBleGFj
dGx5IG9uZQorcGxhY2UgaW4geW91ciBjb2RlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCitUcm91Ymxlc2hvb3RpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lmIHlv
dSBhcmUgZ2V0dGluZyBhIG1lc3NhZ2U6OgorCisgIEVycm9yIGdldHRpbmcgdGhlIHRyYWNlIGJ1
ZmZlci4gSXMgdHJhY2luZyBlbmFibGVkPworCitUaGlzIG1pZ2h0IGJlIGJlY2F1c2U6CisKKzEu
IEJlY2F1c2UgeW91IGluZGVlZCBuZWVkIHRvIGVuYWJsZSB0cmFjaW5nCisKKzIuIE5vdCBhIHNp
bmdsZSB0cmFjZXBvaW50IGhhcyBiZWVuIGNhbGxlZCwgYW5kIGRlYWQtY29kZSBlbGltaW5hdGlv
bgorICAgcmVtb3ZlZCAocmlnaHRmdWxseSkgdGhlIHRyYWNpbmcgZnVuY3Rpb25hbGl0eQotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 14:22:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 14: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 1hXRNv-00046N-Ob; Sun, 02 Jun 2019 14: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=QVPd=UB=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXRNv-00046H-2u
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 14:22:55 +0000
X-Inumbo-ID: e74b33ba-8541-11e9-8159-2b83adf32967
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e74b33ba-8541-11e9-8159-2b83adf32967;
 Sun, 02 Jun 2019 14:22:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D94BBF201F;
 Sun,  2 Jun 2019 16:22:50 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HibHvYEyNziC; Sun,  2 Jun 2019 16:22:50 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AFCCAF2003;
 Sun,  2 Jun 2019 16:22:46 +0200 (CEST)
Received: from localhost (10.7.0.31) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Sun, 2 Jun 2019 16:22:46 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Sun, 2 Jun 2019 16:22:10 +0200
Message-ID: <20190602142210.10670-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.7.0.31]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 9/9] lib/vfscore: replace tracing
 stabs with new tracepoints
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VmZzY29yZSBpcyB0aGUgZmlyc3QgdXNlciBvZiB0cmFjZXBvaW50cy4gSXQgc3RhcnRlZCB0byB1
c2UgdGhlbSBldmVuCmJlZm9yZSB0aGV5IHdhcyBpbXBsZW1lbnRlZC4gVGhhdCBpcyB0aGUgcmVh
c29uIHdoeSB0aGV5IGhhcyBiZWVuCnN0YWJiZWQuIE5vdyBmaW5hbGx5IHN0YWJzIGNhbiBiZSBy
ZXBsYWNlZCB3aXRoIGFjdHVhbCBmdW5jdGlvbmFsaXR5LgoKU2lnbmVkLW9mZi1ieTogWXVyaSBW
b2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBDb3N0aW4gTHVw
dSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgotLS0KIGxpYi92ZnNjb3JlL21haW4uYyB8IDIxNyAr
KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi92ZnNjb3Jl
L3Zmcy5oICB8ICAgNSAtLQogMiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgMTEx
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNj
b3JlL21haW4uYwppbmRleCA0MDNlMjkxNS4uNmEyYTYwNGQgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bmNsdWRlIDx2ZnNjb3JlL2ZzLmg+CiAjaW5jbHVkZSA8dWsvZXJycHRyLmg+CiAjaW5jbHVkZSA8
dWsvY3RvcnMuaD4KKyNpbmNsdWRlIDx1ay90cmFjZS5oPgogCiAjaWZkZWYgREVCVUdfVkZTCiBp
bnQJdmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CkBAIC05Myw5ICs5NCw5IEBAIHN0YXRpYyBpbmxp
bmUgbW9kZV90IGFwcGx5X3VtYXNrKG1vZGVfdCBtb2RlKQogCXJldHVybiBtb2RlICYgfnVrYXJj
aF9sb2FkX24oJmdsb2JhbF91bWFzayk7CiB9CiAKLVRSQUNFUE9JTlQodHJhY2VfdmZzX29wZW4s
ICJcIiVzXCIgMHgleCAwJTBvIiwgY29uc3QgY2hhciosIGludCwgbW9kZV90KTsKLVRSQUNFUE9J
TlQodHJhY2VfdmZzX29wZW5fcmV0LCAiJWQiLCBpbnQpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
b3Blbl9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19vcGVuLCAiXCIl
c1wiIDB4JXggMCUwbyIsIGNvbnN0IGNoYXIqLCBpbnQsIG1vZGVfdCk7CitVS19UUkFDRVBPSU5U
KHRyYWNlX3Zmc19vcGVuX3JldCwgIiVkIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZz
X29wZW5fZXJyLCAiJWQiLCBpbnQpOwogCiBzdHJ1Y3QgdGFzayAqbWFpbl90YXNrOwkvKiB3ZSBv
bmx5IGhhdmUgYSBzaW5nbGUgcHJvY2VzcyAqLwogCkBAIC0yMDIsOSArMjAzLDkgQEAgaW50IGNy
ZWF0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKIH0KIExGUzY0KGNyZWF0KTsK
IAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xvc2UsICIlZCIsIGludCk7Ci1UUkFDRVBPSU5UKHRy
YWNlX3Zmc19jbG9zZV9yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlX2Vyciwg
IiVkIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2Nsb3NlLCAiJWQiLCBpbnQpOwor
VUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2xvc2VfcmV0LCAiIik7CitVS19UUkFDRVBPSU5UKHRy
YWNlX3Zmc19jbG9zZV9lcnIsICIlZCIsIGludCk7CiAKIGludCBmZGNsb3NlKGludCBmZCkKIHsK
QEAgLTIzOCw5ICsyMzksOSBAQCBpbnQgY2xvc2UoaW50IGZkKQogCXJldHVybiAtMTsKIH0KIAot
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2QsICJcIiVzXCIgMCUwbyAweCV4IiwgY29uc3QgY2hh
ciosIG1vZGVfdCwgZGV2X3QpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtub2RfcmV0LCAiIik7
Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBP
SU5UKHRyYWNlX3Zmc19ta25vZCwgIlwiJXNcIiAwJTBvIDB4JXgiLCBjb25zdCBjaGFyKiwgbW9k
ZV90LCBkZXZfdCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19ta25vZF9yZXQsICIiKTsKK1VL
X1RSQUNFUE9JTlQodHJhY2VfdmZzX21rbm9kX2VyciwgIiVkIiwgaW50KTsKIAogaW50IF9feG1r
bm9kKGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRl
diBfX3VudXNlZCkKIHsKQEAgLTI3Miw5ICsyNzMsOSBAQCBpbnQgbWtub2QoY29uc3QgY2hhciAq
cGF0aG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpCiB9CiAKIAotVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfbHNlZWssICIlZCAweCV4ICVkIiwgaW50LCBvZmZfdCwgaW50KTsKLVRSQUNFUE9JTlQo
dHJhY2VfdmZzX2xzZWVrX3JldCwgIjB4JXgiLCBvZmZfdCk7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zm
c19sc2Vla19lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19sc2Vlaywg
IiVkIDB4JXggJWQiLCBpbnQsIG9mZl90LCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
bHNlZWtfcmV0LCAiMHgleCIsIG9mZl90KTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2xzZWVr
X2VyciwgIiVkIiwgaW50KTsKIAogb2ZmX3QgbHNlZWsoaW50IGZkLCBvZmZfdCBvZmZzZXQsIGlu
dCB3aGVuY2UpCiB7CkBAIC0zMDMsOSArMzA0LDkgQEAgb2ZmX3QgbHNlZWsoaW50IGZkLCBvZmZf
dCBvZmZzZXQsIGludCB3aGVuY2UpCiAKIExGUzY0KGxzZWVrKTsKIAotVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfcHJlYWQsICIlZCAlcCAweCV4IDB4JXgiLCBpbnQsIHZvaWQqLCBzaXplX3QsIG9mZl90
KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3ByZWFkX3JldCwgIjB4JXgiLCBzc2l6ZV90KTsKLVRS
QUNFUE9JTlQodHJhY2VfdmZzX3ByZWFkX2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQo
dHJhY2VfdmZzX3ByZWFkLCAiJWQgJXAgMHgleCAweCV4IiwgaW50LCB2b2lkKiwgc2l6ZV90LCBv
ZmZfdCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9yZXQsICIweCV4Iiwgc3NpemVf
dCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19wcmVhZF9lcnIsICIlZCIsIGludCk7CiAKIC8v
IEluIEJTRCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIHJlYWQoKSBhbmQgd3JpdGUoKSBj
b2RlLCBmb3IgZXhhbXBsZQogLy8gc29zZW5kX2dlbmVyaWMoKSwgYSBwYXJ0aWFsIHJlYWQgb3Ig
d3JpdGUgcmV0dXJucyBib3RoIGFuIEVXT1VMREJMT0NLIGVycm9yCkBAIC0zNTcsOSArMzU4LDEw
IEBAIHNzaXplX3QgcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQogCXJldHVy
biBwcmVhZChmZCwgYnVmLCBjb3VudCwgLTEpOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19w
d3JpdGUsICIlZCAlcCAweCV4IDB4JXgiLCBpbnQsIGNvbnN0IHZvaWQqLCBzaXplX3QsIG9mZl90
KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZV9yZXQsICIweCV4Iiwgc3NpemVfdCk7Ci1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGVfZXJyLCAiJWQiLCBpbnQpOworVUtfVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcHdyaXRlLCAiJWQgJXAgMHgleCAweCV4IiwgaW50LCBjb25zdCB2b2lkKiwg
c2l6ZV90LAorCSAgICAgIG9mZl90KTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZV9y
ZXQsICIweCV4Iiwgc3NpemVfdCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGVfZXJy
LCAiJWQiLCBpbnQpOwogCiBzc2l6ZV90IHB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwg
c2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCiB7CkBAIC00MjYsOSArNDI4LDEwIEBAIHNzaXpl
X3QgcmVhZHYoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCkKIAly
ZXR1cm4gcHJlYWR2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwogfQogCi1UUkFDRVBPSU5UKHRyYWNl
X3Zmc19wd3JpdGV2LCAiJWQgJXAgMHgleCAweCV4IiwgaW50LCBjb25zdCBzdHJ1Y3QgaW92ZWMq
LCBpbnQsIG9mZl90KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3B3cml0ZXZfcmV0LCAiMHgleCIs
IHNzaXplX3QpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcHdyaXRldl9lcnIsICIlZCIsIGludCk7
CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19wd3JpdGV2LCAiJWQgJXAgMHgleCAweCV4IiwgaW50
LCBjb25zdCBzdHJ1Y3QgaW92ZWMqLAorCSAgICAgIGludCwgb2ZmX3QpOworVUtfVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfcHdyaXRldl9yZXQsICIweCV4Iiwgc3NpemVfdCk7CitVS19UUkFDRVBPSU5U
KHRyYWNlX3Zmc19wd3JpdGV2X2VyciwgIiVkIiwgaW50KTsKIAogc3NpemVfdCBwd3JpdGV2KGlu
dCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCkK
IHsKQEAgLTQ2MSw5ICs0NjQsOSBAQCBzc2l6ZV90IHdyaXRldihpbnQgZmQsIGNvbnN0IHN0cnVj
dCBpb3ZlYyAqaW92LCBpbnQgaW92Y250KQogCXJldHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNu
dCwgLTEpOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBpbnQs
IHVuc2lnbmVkIGxvbmcpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGxfcmV0LCAiIik7Ci1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5U
KHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBpbnQsIHVuc2lnbmVkIGxvbmcpOworVUtfVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfaW9jdGxfcmV0LCAiIik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zm
c19pb2N0bF9lcnIsICIlZCIsIGludCk7CiAKIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxv
bmcgaW50IHJlcXVlc3QsIC4uLikKIHsKQEAgLTQ5OCw5ICs1MDEsOSBAQCBpbnQgaW9jdGwoaW50
IGZkLCB1bnNpZ25lZCBsb25nIGludCByZXF1ZXN0LCAuLi4pCiAJcmV0dXJuIC0xOwogfQogCi1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luYywgIiVkIiwgaW50KTsKLVRSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZzeW5jX3JldCwgIiIpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN5bmNfZXJyLCAiJWQi
LCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN5bmMsICIlZCIsIGludCk7CitVS19U
UkFDRVBPSU5UKHRyYWNlX3Zmc19mc3luY19yZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2ZzeW5jX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZzeW5jKGludCBmZCkKIHsKQEAgLTUz
Miw5ICs1MzUsOSBAQCBpbnQgZmRhdGFzeW5jKGludCBmZCkKIAlyZXR1cm4gZnN5bmMoZmQpOwog
fQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3Rh
dCopOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRfcmV0LCAiIik7Ci1UUkFDRVBPSU5UKHRy
YWNlX3Zmc19mc3RhdF9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19m
c3RhdCwgIiVkICVwIiwgaW50LCBzdHJ1Y3Qgc3RhdCopOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92
ZnNfZnN0YXRfcmV0LCAiIik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19mc3RhdF9lcnIsICIl
ZCIsIGludCk7CiAKIGludCBfX2Z4c3RhdChpbnQgdmVyIF9fdW51c2VkLCBpbnQgZmQsIHN0cnVj
dCBzdGF0ICpzdCkKIHsKQEAgLTY0Miw5ICs2NDUsOSBAQCBpbnQgZmxvY2soaW50IGZkLCBpbnQg
b3BlcmF0aW9uKQogCXJldHVybiAwOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGly
LCAiJWQgJXAiLCBpbnQsIHN0cnVjdCBkaXJlbnQqKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3Jl
YWRkaXJfcmV0LCAiIik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19yZWFkZGlyX2VyciwgIiVkIiwg
aW50KTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXIsICIlZCAlcCIsIGludCwgc3Ry
dWN0IGRpcmVudCopOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcmVhZGRpcl9yZXQsICIiKTsK
K1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX3JlYWRkaXJfZXJyLCAiJWQiLCBpbnQpOwogCiBzdHJ1
Y3QgX19kaXJzdHJlYW0KIHsKQEAgLTc5OCw5ICs4MDEsOSBAQCB2b2lkIHNlZWtkaXIoRElSICpk
aXJwLCBsb25nIGxvYykKIAlmZHJvcChmcCk7CiB9CiAKLVRSQUNFUE9JTlQodHJhY2VfdmZzX21r
ZGlyLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKLVRSQUNFUE9JTlQodHJh
Y2VfdmZzX21rZGlyX3JldCwgIiIpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXJfZXJyLCAi
JWQiLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXIsICJcIiVzXCIgMCUwbyIs
IGNvbnN0IGNoYXIqLCBtb2RlX3QpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbWtkaXJfcmV0
LCAiIik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19ta2Rpcl9lcnIsICIlZCIsIGludCk7CiAK
IGludAogbWtkaXIoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2RlKQpAQCAtODI2LDkg
KzgyOSw5IEBAIG1rZGlyKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3QgbW9kZSkKIAlyZXR1
cm4gLTE7CiB9CiAKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3JtZGlyLCAiXCIlc1wiIiwgY29uc3Qg
Y2hhciopOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfcmV0LCAiIik7Ci1UUkFDRVBPSU5U
KHRyYWNlX3Zmc19ybWRpcl9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zm
c19ybWRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZz
X3JtZGlyX3JldCwgIiIpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfcm1kaXJfZXJyLCAiJWQi
LCBpbnQpOwogCiBpbnQgcm1kaXIoY29uc3QgY2hhciAqcGF0aG5hbWUpCiB7CkBAIC04NzksOSAr
ODgyLDkgQEAgc3RhdGljIGludCBudWxsX29yX2VtcHR5KGNvbnN0IGNoYXIgKnN0cikKIAlyZXR1
cm4gc3RyID09IE5VTEwgfHwgKnN0ciA9PSAnXDAnOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zm
c19yZW5hbWUsICJcIiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKLVRS
QUNFUE9JTlQodHJhY2VfdmZzX3JlbmFtZV9yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZz
X3JlbmFtZV9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19yZW5hbWUs
ICJcIiVzXCIgXCIlc1wiIiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKK1VLX1RSQUNFUE9J
TlQodHJhY2VfdmZzX3JlbmFtZV9yZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX3Jl
bmFtZV9lcnIsICIlZCIsIGludCk7CiAKIGludCByZW5hbWUoY29uc3QgY2hhciAqb2xkcGF0aCwg
Y29uc3QgY2hhciAqbmV3cGF0aCkKIHsKQEAgLTkyNCw5ICs5MjcsOSBAQCBpbnQgcmVuYW1lKGNv
bnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiAJcmV0dXJuIC0xOwogfQog
Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpciwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKLVRS
QUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX3JldCwgIiIpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
Y2hkaXJfZXJyLCAiJWQiLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2hkaXIsICJc
IiVzXCIiLCBjb25zdCBjaGFyKik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19jaGRpcl9yZXQs
ICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2NoZGlyX2VyciwgIiVkIiwgaW50KTsKIAog
c3RhdGljIGludAogX19kb19mY2hkaXIoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB0
YXNrICp0KQpAQCAtOTg1LDkgKzk4OCw5IEBAIGludCBjaGRpcihjb25zdCBjaGFyICpwYXRobmFt
ZSkKIAlyZXR1cm4gLTE7CiB9CiAKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpciwgIiVkIiwg
aW50KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjaGRpcl9yZXQsICIiKTsKLVRSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjaGRpcl9lcnIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zm
c19mY2hkaXIsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXJfcmV0
LCAiIik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2hkaXJfZXJyLCAiJWQiLCBpbnQpOwog
CiBpbnQgZmNoZGlyKGludCBmZCkKIHsKQEAgLTEwMTUsOSArMTAxOCw5IEBAIGludCBmY2hkaXIo
aW50IGZkKQogCXJldHVybiAtMTsKIH0KIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGluaywgIlwi
JXNcIiBcIiVzXCIiLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwotVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfbGlua19yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmtfZXJyLCAiJWQi
LCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGluaywgIlwiJXNcIiBcIiVzXCIiLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciopOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfbGlua19y
ZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2xpbmtfZXJyLCAiJWQiLCBpbnQpOwog
CiBpbnQgbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQogewpA
QCAtMTA0OCw5ICsxMDUxLDEwIEBAIGludCBsaW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0
IGNoYXIgKm5ld3BhdGgpCiB9CiAKIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3ltbGluaywgIm9s
ZHBhdGg9JXMsIG5ld3BhdGg9JXMiLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwotVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfc3ltbGlua19yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX3N5
bWxpbmtfZXJyLCAiZXJybm89JWQiLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3lt
bGluaywgIm9sZHBhdGg9JXMsIG5ld3BhdGg9JXMiLCBjb25zdCBjaGFyKiwKKwkgICAgICBjb25z
dCBjaGFyKik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19zeW1saW5rX3JldCwgIiIpOworVUtf
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3ltbGlua19lcnIsICJlcnJubz0lZCIsIGludCk7CiAKIGlu
dCBzeW1saW5rKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCiB7CkBA
IC0xMDc2LDkgKzEwODAsOSBAQCBpbnQgc3ltbGluayhjb25zdCBjaGFyICpvbGRwYXRoLCBjb25z
dCBjaGFyICpuZXdwYXRoKQogCXJldHVybiAwOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc191
bmxpbmssICJcIiVzXCIiLCBjb25zdCBjaGFyKik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxp
bmtfcmV0LCAiIik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc191bmxpbmtfZXJyLCAiJWQiLCBpbnQp
OworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rLCAiXCIlc1wiIiwgY29uc3QgY2hhciop
OworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdW5saW5rX3JldCwgIiIpOworVUtfVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfdW5saW5rX2VyciwgIiVkIiwgaW50KTsKIAogaW50IHVubGluayhjb25zdCBj
aGFyICpwYXRobmFtZSkKIHsKQEAgLTExMDQsOSArMTEwOCw5IEBAIGludCB1bmxpbmsoY29uc3Qg
Y2hhciAqcGF0aG5hbWUpCiAJcmV0dXJuIC0xOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19z
dGF0LCAiXCIlc1wiICVwIiwgY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7Ci1UUkFDRVBPSU5U
KHRyYWNlX3Zmc19zdGF0X3JldCwgIiIpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9lcnIs
ICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0LCAiXCIlc1wiICVwIiwg
Y29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0
X3JldCwgIiIpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdF9lcnIsICIlZCIsIGludCk7
CiAKIGludCBfX3hzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBz
dHJ1Y3Qgc3RhdCAqc3QpCiB7CkBAIC0xMTQxLDkgKzExNDUsMTAgQEAgaW50IHN0YXQoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKIAogTEZTNjQoc3RhdCk7CiAKLVRSQUNF
UE9JTlQodHJhY2VfdmZzX2xzdGF0LCAicGF0aG5hbWU9JXMsIHN0YXQ9JXAiLCBjb25zdCBjaGFy
Kiwgc3RydWN0IHN0YXQqKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X3JldCwgIiIpOwot
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfbHN0YXRfZXJyLCAiZXJybm89JWQiLCBpbnQpOworVUtfVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfbHN0YXQsICJwYXRobmFtZT0lcywgc3RhdD0lcCIsIGNvbnN0IGNo
YXIqLAorCSAgICAgIHN0cnVjdCBzdGF0Kik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19sc3Rh
dF9yZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2xzdGF0X2VyciwgImVycm5vPSVk
IiwgaW50KTsKIAogaW50IF9fbHhzdGF0KGludCB2ZXIgX191bnVzZWQsIGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CkBAIC0xMTgwLDkgKzExODUsOSBAQCBpbnQgbHN0
YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdCkKIAogTEZTNjQobHN0YXQp
OwogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnMsICJcIiVzXCIgJXAiLCBjb25zdCBjaGFy
Kiwgc3RydWN0IHN0YXRmcyopOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdGZzX3JldCwgIiIp
OwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfc3RhdGZzX2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNF
UE9JTlQodHJhY2VfdmZzX3N0YXRmcywgIlwiJXNcIiAlcCIsIGNvbnN0IGNoYXIqLCBzdHJ1Y3Qg
c3RhdGZzKik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfcmV0LCAiIik7CitVS19U
UkFDRVBPSU5UKHRyYWNlX3Zmc19zdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgX19zdGF0
ZnMoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ZnMgKmJ1ZikKIHsKQEAgLTEyMDks
OSArMTIxNCw5IEBAIF9fd2Vha19hbGlhcyhfX3N0YXRmcywgc3RhdGZzKTsKIAogTEZTNjQoc3Rh
dGZzKTsKIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwg
c3RydWN0IHN0YXRmcyopOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsK
LVRSQUNFUE9JTlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOworVUtfVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZnN0YXRmcywgIlwiJXNcIiAlcCIsIGludCwgc3RydWN0IHN0YXRmcyop
OworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnN0YXRmc19yZXQsICIiKTsKK1VLX1RSQUNFUE9J
TlQodHJhY2VfdmZzX2ZzdGF0ZnNfZXJyLCAiJWQiLCBpbnQpOwogCiBpbnQgX19mc3RhdGZzKGlu
dCBmZCwgc3RydWN0IHN0YXRmcyAqYnVmKQogewpAQCAtMTI4Miw5ICsxMjg3LDkgQEAgZnN0YXR2
ZnMoaW50IGZkLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKQogTEZTNjQoZnN0YXR2ZnMpOwogCiAKLVRS
QUNFUE9JTlQodHJhY2VfdmZzX2dldGN3ZCwgIiVwICVkIiwgY2hhciosIHNpemVfdCk7Ci1UUkFD
RVBPSU5UKHRyYWNlX3Zmc19nZXRjd2RfcmV0LCAiXCIlc1wiIiwgY29uc3QgY2hhciopOwotVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2dldGN3ZCwgIiVwICVkIiwgY2hhciosIHNpemVfdCk7CitVS19UUkFDRVBPSU5U
KHRyYWNlX3Zmc19nZXRjd2RfcmV0LCAiXCIlc1wiIiwgY29uc3QgY2hhciopOworVUtfVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZ2V0Y3dkX2VyciwgIiVkIiwgaW50KTsKIAogY2hhciAqZ2V0Y3dkKGNo
YXIgKnBhdGgsIHNpemVfdCBzaXplKQogewpAQCAtMTMyMyw5ICsxMzI4LDkgQEAgY2hhciAqZ2V0
Y3dkKGNoYXIgKnBhdGgsIHNpemVfdCBzaXplKQogCXJldHVybiBOVUxMOwogfQogCi1UUkFDRVBP
SU5UKHRyYWNlX3Zmc19kdXAsICIlZCIsIGludCk7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXBf
cmV0LCAiXCIlc1wiIiwgaW50KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cF9lcnIsICIlZCIs
IGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19kdXAsICIlZCIsIGludCk7CitVS19UUkFD
RVBPSU5UKHRyYWNlX3Zmc19kdXBfcmV0LCAiXCIlc1wiIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2R1cF9lcnIsICIlZCIsIGludCk7CiAvKgogICogRHVwbGljYXRlIGEgZmlsZSBk
ZXNjcmlwdG9yCiAgKi8KQEAgLTEzNTYsOSArMTM2MSw5IEBAIGludCBkdXAoaW50IG9sZGZkKQog
CXJldHVybiAtMTsKIH0KIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwMywgIiVkICVkIDB4JXgi
LCBpbnQsIGludCwgaW50KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2R1cDNfcmV0LCAiJWQiLCBp
bnQpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19lcnIsICIlZCIsIGludCk7CitVS19UUkFD
RVBPSU5UKHRyYWNlX3Zmc19kdXAzLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOworVUtf
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZHVwM19yZXQsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5U
KHRyYWNlX3Zmc19kdXAzX2VyciwgIiVkIiwgaW50KTsKIC8qCiAgKiBEdXBsaWNhdGUgYSBmaWxl
IGRlc2NyaXB0b3IgdG8gYSBwYXJ0aWN1bGFyIHZhbHVlLgogICovCkBAIC0xNDE2LDkgKzE0MjEs
OSBAQCBpbnQgZHVwMihpbnQgb2xkZmQsIGludCBuZXdmZCkKICNkZWZpbmUgU0VURkwgKE9fQVBQ
RU5EIHwgT19BU1lOQyB8IE9fRElSRUNUIHwgT19OT0FUSU1FIHwgT19OT05CTE9DSykKIAogI2lm
IDAKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBp
bnQpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwgaW50KTsKLVRS
QUNFUE9JTlQodHJhY2VfdmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjbnRsLCAiJWQgJWQgMHgleCIsIGludCwgaW50LCBpbnQpOworVUtfVFJBQ0VQ
T0lOVCh0cmFjZV92ZnNfZmNudGxfcmV0LCAiXCIlc1wiIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQo
dHJhY2VfdmZzX2ZjbnRsX2VyciwgIiVkIiwgaW50KTsKIAogaW50IGZjbnRsKGludCBmZCwgaW50
IGNtZCwgaW50IGFyZykKIHsKQEAgLTE1MDIsOSArMTUwNyw5IEBAIGludCBmY250bChpbnQgZmQs
IGludCBjbWQsIGludCBhcmcpCiB9CiAjZW5kaWYKIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNj
ZXNzLCAiXCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgaW50KTsKLVRSQUNFUE9JTlQodHJhY2Vf
dmZzX2FjY2Vzc19yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2FjY2Vzc19lcnIsICIl
ZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19hY2Nlc3MsICJcIiVzXCIgMCUwbyIs
IGNvbnN0IGNoYXIqLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzX3JldCwg
IiIpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfYWNjZXNzX2VyciwgIiVkIiwgaW50KTsKIAog
LyoKICAqIENoZWNrIHBlcm1pc3Npb24gZm9yIGZpbGUgYWNjZXNzCkBAIC0xNjA3LDkgKzE2MTIs
OSBAQCBpbnQgaXNhdHR5KGludCBmZCkKIH0KICNlbmRpZgogCi1UUkFDRVBPSU5UKHRyYWNlX3Zm
c190cnVuY2F0ZSwgIlwiJXNcIiAweCV4IiwgY29uc3QgY2hhciosIG9mZl90KTsKLVRSQUNFUE9J
TlQodHJhY2VfdmZzX3RydW5jYXRlX3JldCwgIiIpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1
bmNhdGVfZXJyLCAiJWQiLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdHJ1bmNhdGUs
ICJcIiVzXCIgMHgleCIsIGNvbnN0IGNoYXIqLCBvZmZfdCk7CitVS19UUkFDRVBPSU5UKHRyYWNl
X3Zmc190cnVuY2F0ZV9yZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX3RydW5jYXRl
X2VyciwgIiVkIiwgaW50KTsKIAogaW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBv
ZmZfdCBsZW5ndGgpCiB7CkBAIC0xNjM3LDkgKzE2NDIsOSBAQCBpbnQgdHJ1bmNhdGUoY29uc3Qg
Y2hhciAqcGF0aG5hbWUsIG9mZl90IGxlbmd0aCkKIAogTEZTNjQodHJ1bmNhdGUpOwogCi1UUkFD
RVBPSU5UKHRyYWNlX3Zmc19mdHJ1bmNhdGUsICIlZCAweCV4IiwgaW50LCBvZmZfdCk7Ci1UUkFD
RVBPSU5UKHRyYWNlX3Zmc19mdHJ1bmNhdGVfcmV0LCAiIik7Ci1UUkFDRVBPSU5UKHRyYWNlX3Zm
c19mdHJ1bmNhdGVfZXJyLCAiJWQiLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRy
dW5jYXRlLCAiJWQgMHgleCIsIGludCwgb2ZmX3QpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNf
ZnRydW5jYXRlX3JldCwgIiIpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZnRydW5jYXRlX2Vy
ciwgIiVkIiwgaW50KTsKIAogaW50IGZ0cnVuY2F0ZShpbnQgZmQsIG9mZl90IGxlbmd0aCkKIHsK
QEAgLTE2OTcsOSArMTcwMiw5IEBAIHNzaXplX3QgcmVhZGxpbmsoY29uc3QgY2hhciAqcGF0aG5h
bWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCiAJcmV0dXJuIC0xOwogfQogCi1UUkFDRVBP
SU5UKHRyYWNlX3Zmc19mYWxsb2NhdGUsICIlZCAlZCAweCV4IDB4JXgiLCBpbnQsIGludCwgbG9m
Zl90LCBsb2ZmX3QpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlX3JldCwgIiIpOwot
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmFsbG9jYXRlX2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNF
UE9JTlQodHJhY2VfdmZzX2ZhbGxvY2F0ZSwgIiVkICVkIDB4JXggMHgleCIsIGludCwgaW50LCBs
b2ZmX3QsIGxvZmZfdCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGVfcmV0LCAi
Iik7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19mYWxsb2NhdGVfZXJyLCAiJWQiLCBpbnQpOwog
CiBpbnQgZmFsbG9jYXRlKGludCBmZCwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBs
ZW4pCiB7CkBAIC0xNzgxLDkgKzE3ODYsOSBAQCBpbnQgZnV0aW1lc2F0KGludCBkaXJmZCwgY29u
c3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQogCXJldHVy
biAtMTsKIH0KIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0LCAiXCIlc1wiIiwgY29u
c3QgY2hhciopOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X3JldCwgIiIpOwotVFJB
Q0VQT0lOVCh0cmFjZV92ZnNfdXRpbWVuc2F0X2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNFUE9J
TlQodHJhY2VfdmZzX3V0aW1lbnNhdCwgIlwiJXNcIiIsIGNvbnN0IGNoYXIqKTsKK1VLX1RSQUNF
UE9JTlQodHJhY2VfdmZzX3V0aW1lbnNhdF9yZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2Vf
dmZzX3V0aW1lbnNhdF9lcnIsICIlZCIsIGludCk7CiAKIGludCB1dGltZW5zYXQoaW50IGRpcmZk
LCBjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRpbWVzWzJdLCBp
bnQgZmxhZ3MpCiB7CkBAIC0xODAxLDkgKzE4MDYsOSBAQCBpbnQgdXRpbWVuc2F0KGludCBkaXJm
ZCwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyB0aW1lc1syXSwg
aQogCXJldHVybiAwOwogfQogCi1UUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRpbWVucywgIiVkIiwg
aW50KTsKLVRSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zX3JldCwgIiIpOwotVFJBQ0VQT0lO
VCh0cmFjZV92ZnNfZnV0aW1lbnNfZXJyLCAiJWQiLCBpbnQpOworVUtfVFJBQ0VQT0lOVCh0cmFj
ZV92ZnNfZnV0aW1lbnMsICIlZCIsIGludCk7CitVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19mdXRp
bWVuc19yZXQsICIiKTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2Z1dGltZW5zX2VyciwgIiVk
IiwgaW50KTsKIAogaW50IGZ1dGltZW5zKGludCBmZCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIHRp
bWVzWzJdKQogewpAQCAtMTg3NCw5ICsxODc5LDkgQEAgaW50IHV0aW1lKGNvbnN0IGNoYXIgKnBh
dGhuYW1lLCBjb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqdCkKIH0KICNlbmRpZgogCi1UUkFDRVBPSU5U
KHRyYWNlX3Zmc19jaG1vZCwgIlwiJXNcIiAwJTBvIiwgY29uc3QgY2hhciosIG1vZGVfdCk7Ci1U
UkFDRVBPSU5UKHRyYWNlX3Zmc19jaG1vZF9yZXQsICIiKTsKLVRSQUNFUE9JTlQodHJhY2VfdmZz
X2NobW9kX2VyciwgIiVkIiwgaW50KTsKK1VLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2NobW9kLCAi
XCIlc1wiIDAlMG8iLCBjb25zdCBjaGFyKiwgbW9kZV90KTsKK1VLX1RSQUNFUE9JTlQodHJhY2Vf
dmZzX2NobW9kX3JldCwgIiIpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfY2htb2RfZXJyLCAi
JWQiLCBpbnQpOwogCiBpbnQgY2htb2QoY29uc3QgY2hhciAqcGF0aG5hbWUsIG1vZGVfdCBtb2Rl
KQogewpAQCAtMTg5OSw4ICsxOTA0LDggQEAgb3V0X2Vycm5vOgogCXJldHVybiAtMTsKIH0KIAot
VFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNobW9kLCAiXCIlZFwiIDAlMG8iLCBpbnQsIG1vZGVfdCk7
Ci1UUkFDRVBPSU5UKHRyYWNlX3Zmc19mY2htb2RfcmV0LCAiIik7CitVS19UUkFDRVBPSU5UKHRy
YWNlX3Zmc19mY2htb2QsICJcIiVkXCIgMCUwbyIsIGludCwgbW9kZV90KTsKK1VLX1RSQUNFUE9J
TlQodHJhY2VfdmZzX2ZjaG1vZF9yZXQsICIiKTsKIAogaW50IGZjaG1vZChpbnQgZmQsIG1vZGVf
dCBtb2RlKQogewpAQCAtMTkxNSw4ICsxOTIwLDggQEAgaW50IGZjaG1vZChpbnQgZmQsIG1vZGVf
dCBtb2RlKQogCX0KIH0KIAotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIlZFwiICVk
ICVkIiwgaW50LCB1aWRfdCwgZ2lkX3QpOwotVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duX3Jl
dCwgIiIpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duLCAiXCIlZFwiICVkICVkIiwg
aW50LCB1aWRfdCwgZ2lkX3QpOworVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfZmNob3duX3JldCwg
IiIpOwogCiBpbnQgZmNob3duKGludCBmZCBfX3VudXNlZCwgdWlkX3Qgb3duZXIgX191bnVzZWQs
IGdpZF90IGdyb3VwIF9fdW51c2VkKQogewpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmgg
Yi9saWIvdmZzY29yZS92ZnMuaAppbmRleCBiYzE3MzEwYS4uODVlODEzZDQgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL3Zmcy5oCisrKyBiL2xpYi92ZnNjb3JlL3Zmcy5oCkBAIC0xNTUsMTIgKzE1
NSw3IEBAIHZvaWQJIHZub2RlX2R1bXAodm9pZCk7CiB2b2lkCSB2ZnNjb3JlX21vdW50X2R1bXAo
dm9pZCk7CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgdWtf
dmZzY29yZV90cmFjZShpbnQgZm9vIF9fdW51c2VkLCAuLi4pCi17Ci19CiAKLSNkZWZpbmUgVFJB
Q0VQT0lOVCh0cmFjZV9uYW1lLCBmbXQsIC4uLikJCQlcCi0Jc3RhdGljIHZvaWQgdHJhY2VfbmFt
ZShfX1ZBX0FSR1NfXyApIF9fYXR0cmlidXRlX18oKHVudXNlZCwgYWxpYXMoInVrX3Zmc2NvcmVf
dHJhY2UiKSkpCiAKIAogCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 15:11:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 15:11: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 1hXS92-0008K4-9c; Sun, 02 Jun 2019 15:11: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=S28B=UB=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXS91-0008Jz-F0
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 15:11:35 +0000
X-Inumbo-ID: b21ffcbe-8548-11e9-b377-53a781691ff9
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id b21ffcbe-8548-11e9-b377-53a781691ff9;
 Sun, 02 Jun 2019 15:11:28 +0000 (UTC)
IronPort-SDR: 75H1Cd6JyYilZmCbUzgYlggL4EiHrcXMmucCe5knPDdEEwSlvyUR7Cl0qStHue3a7j7uQUxh6S
 X0P3+ZD5LzhA==
IronPort-PHdr: =?us-ascii?q?9a23=3Avg1E1hfVSXc7JcvNVZ5kKCmklGMj4u6mDksu8p?=
 =?us-ascii?q?Mizoh2WeGdxcS7Zh7h7PlgxGXEQZ/co6odzbaP6ua5AjFLscvJmUtBWaQEbw?=
 =?us-ascii?q?UCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFR?=
 =?us-ascii?q?rlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQi6oR/MusQYgYZuJaU8xx?=
 =?us-ascii?q?vUqXZUZupawn9lK0iOlBjm/Mew+5Bj8yVUu/0/8sNLTLv3caclQ7FGFToqK2?=
 =?us-ascii?q?866tHluhnFVguP+2ATUn4KnRpSAgjK9w/1U5HsuSbnrOV92S2aPcrrTbAoXD?=
 =?us-ascii?q?mp8qlmRAP0hCoBKjU09nzchM5tg6JBuB+vpwJxzZPabo+WM/RzZb/Rcc8ASG?=
 =?us-ascii?q?ZdRMtdSzBND4WhZIUPFeoBOuNYopHjqlsJthu+GQisBOXywTFOm3/2xbA62P?=
 =?us-ascii?q?kmHA7a2wwgBM4OsHXSrNnvMKcSTPi1zLTTwDrfdPNawy/96JXTfRw7u/GMWq?=
 =?us-ascii?q?t9fMzMwkcsDwPIlkicpIP4Mz+P1ekAs3KX4/R+We+tkWIqpRl9riWgy8sxkI?=
 =?us-ascii?q?XEhYIYxkra+Sh3zos5P8C0RUFlbdOiDZBerTuVN5FsTcMnW2xovSE6xaAYtp?=
 =?us-ascii?q?OjZygKzYgnxwbYa/yab4iE+hLjW/iVITd/nH9lZre/iAyz8Uik0OHzStK03E?=
 =?us-ascii?q?xSripYidbArGoN1xvL5siGTPty4Fuh1C6S2w3c9+1IO0M5mKrBJ5I/3LI9lI?=
 =?us-ascii?q?AfvErbEi/zgkr2jauWdks++uiv7uTqeqnpppiHN49oiwH+NL4imsiiAeQgLw?=
 =?us-ascii?q?gDRHSU+f+m2L374E32W69GjucxkqXBqpDVOdwbprKlAw9Syosj7he/DzGn0N?=
 =?us-ascii?q?QfhnkLNU9KdwyZj4f3P1HDO/T4Dfakg1Swizdn3f/HMaPnApnXKXjDirjhd6?=
 =?us-ascii?q?5n60FA0Aoz0cxf55VMB7EPPv3zXk7xtMTGARMjMwy03ufnB8l81o4FX2KAHL?=
 =?us-ascii?q?OWMKfIvlCT/O4gPfSMN8cpv2P4Kv4k4OWrgXInlFs1eaiywYBReH2+WPN8LB?=
 =?us-ascii?q?a3e33p1/wGCnsLuEIaUfT3wAmJViVPZnD0W78k+xkwE8S+EI2FXIf70+/J5z?=
 =?us-ascii?q?uyApADPjMOMVuLC3q9L4g=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2ACBAB75vNcjAPjVY1lHgEGBwaBZYJ?=
 =?us-ascii?q?7UwEwKI0PpnEJAQEBKREBAgEBhECDKTgTAQMBAQUBAQEBBAETAQEBJkwMgjo?=
 =?us-ascii?q?ig25PgQKDIgGCDqkvhUeDHoFGgTSHA4YuP4lyhRUElC6USwcCgg9aBIVhjGc?=
 =?us-ascii?q?nghIBd5NkLaRINyCBWTMag18JgVsBRItQglw8AQExgQYBAY8YAQE?=
X-IPAS-Result: =?us-ascii?q?A2ACBAB75vNcjAPjVY1lHgEGBwaBZYJ7UwEwKI0PpnEJA?=
 =?us-ascii?q?QEBKREBAgEBhECDKTgTAQMBAQUBAQEBBAETAQEBJkwMgjoig25PgQKDIgGCD?=
 =?us-ascii?q?qkvhUeDHoFGgTSHA4YuP4lyhRUElC6USwcCgg9aBIVhjGcnghIBd5NkLaRIN?=
 =?us-ascii?q?yCBWTMag18JgVsBRItQglw8AQExgQYBAY8YAQE?=
X-IronPort-AV: E=Sophos;i="5.60,543,1549922400"; 
   d="scan'208";a="3482469"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 02 Jun 2019 18:11:27 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 714C51A6023F;
 Sun,  2 Jun 2019 18:11:29 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 2kJz2fB7TTzf; Sun,  2 Jun 2019 18:11:29 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 54A331A6025B;
 Sun,  2 Jun 2019 18:11:29 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id ebkN25wqeOew; Sun,  2 Jun 2019 18:11:29 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 374FC1A6023F;
 Sun,  2 Jun 2019 18:11:29 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun,  2 Jun 2019 18:11:22 +0300
Message-Id: <20190602151122.31675-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Export __dso_handle
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

U2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KLS0tCiBl
eHBvcnRzeW1zLnVrIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKCmRpZmYg
LS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51awppbmRleCA0YmQyNDBjLi40Y2U1
OTVmIDEwMDY0NAotLS0gYS9leHBvcnRzeW1zLnVrCisrKyBiL2V4cG9ydHN5bXMudWsKQEAgLTEs
MyArMSw0IEBACitfX2Rzb19oYW5kbGUKIF9HTE9CQUxfX3N1Yl9JLjAwMTAxX19aTlN0MTJleHBl
cmltZW50YWwxNWZ1bmRhbWVudGFsc192MTNwbXIxOW5ld19kZWxldGVfcmVzb3VyY2VFdgogX0dM
T0JBTF9fc3ViX0lfX1pOU3QzX18xM2NpbkUKIF9aNDFfX3N0YXRpY19pbml0aWFsaXphdGlvbl9h
bmRfZGVzdHJ1Y3Rpb25fMGlpCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:02:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:02: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 1hXSw6-0004Rb-2v; Sun, 02 Jun 2019 16:02:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXSw4-0004RW-Rs
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:02:16 +0000
X-Inumbo-ID: c984d353-854f-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c984d353-854f-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 16:02:15 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id w13so9629754wru.11
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 09:02:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=lD6igYyxU2A35d22iwWN8Y/X+iBFIjzSCVGBYhaqzzE=;
 b=JeZI2g7PXL4W5qcJ1b4GnokpTDsYnnA0PGyOxm/u3vqM4aw+6BuZsjaU3v4N+yrVLF
 1+bDSb+oPSgqsqH6KNlx6xa0gdtTws9vAU5g2/LnlpCVM0UvsGGz/PCm0LRsvkkCN/gr
 inrAm7/5LleBmNViRZfdaqKgu7/ES36iq809ys97UyrsNR8KqOEMT4fw1R9kY6oNUDSR
 Ks3/g/PpWnn3dEDcW7uCFZTEE8/O350eyNt/QDKV3bUMJ4PNsg4j3xU77QrfuIYikxI4
 pAq8WgNDJ7XPD24g7fP7vX3a6cOgQ3kkglbyN7rMuR5CbD+UFHWP1yjg1DN1zCLFAVdM
 XD4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=lD6igYyxU2A35d22iwWN8Y/X+iBFIjzSCVGBYhaqzzE=;
 b=c2EUNhcFF8kNJrQoRJSpR23ZyxBo+AMZJvy0I5LuAeiuLFBZqKhKF/sdqZ+Q2eayVt
 5cSv3n7Ne7ifYGDQQj24M03dPD/hqa6eulQhKT9hHam4hW4dFhLc+roqOhZVATAyNFS+
 lI4hJm1BDuJh7aw6KqV3z2hUFX50byfB5LimEZkpymT8Qf0vQyqgcA3M8xf+VIqUuA/6
 /3QTgkuvlESYbjOUqNAIYWn6FeVH42g0gbfnaU6bbH9Ka+TcDchtnm0EPkl+1tVwUiAa
 Tjiim1C2dCGtQlh684lf/ZX2zoxmkwgUAYK3A2u0dkMs2SeEi+KaPpVN99ZkkRGos1oU
 VS2g==
X-Gm-Message-State: APjAAAXSBat9UYOvc7DsyaVRBJO+06DhCRkWks1iVwInufacsecFV+MN
 WEz9dwUjsCKdZCBdKSIAJmXJVheY
X-Google-Smtp-Source: APXvYqyyGxO1NFA7mX0vTNb2WEaGGrlMFfSRCatkatcoZ5kipcF1L7a56FsSndBsQShs5S8ATPluqw==
X-Received: by 2002:adf:ee0b:: with SMTP id y11mr13667625wrn.241.1559491332863; 
 Sun, 02 Jun 2019 09:02:12 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id q14sm9913536wrw.60.2019.06.02.09.02.11
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 09:02:11 -0700 (PDT)
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, minios-devel@lists.xen.org
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
 <20190602142210.10670-8-yuri.volchkov@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <ff7109aa-978d-5cd8-9532-c1ab054d0736@gmail.com>
Date: Sun, 2 Jun 2019 19:02:10 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602142210.10670-8-yuri.volchkov@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 7/9] support/scripts: make
 uk-trace installable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBwYXRjaCBsb29rcyBnb29kLgoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+CgpPbiA2LzIvMTkgNToyMiBQTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToK
PiBOb3cgaXQgaXMgcG9zc2libGUgdG8gaW5zdGFsbCB1ay10cmFjZSBpbiB5b3VyIGxvY2FsIHZp
cnR1YWwKPiBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGU6Cj4gICAgcHl0aG9uMyAtbSB2ZW52IGVu
dgo+ICAgIC4gZW52L2Jpbi9hY3RpdmF0ZQo+ICAgIGNkIHN1cHBvcnQvc2NyaXB0cy91a190cmFj
ZQo+ICAgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAgc2V0dXB0b29scyB3aGVlbAo+ICAgIHBp
cCBpbnN0YWxsIC0tZWRpdGFibGUgLgo+ICAgIGRlYWN0aXZhdGUKPiAKPiBBbGwgdGhlIGRlcGVu
ZGVuY2llcyB3aWxsIGJlIGluc3RhbGxlZCBpbiB0aGUgJ2VudicgZm9sZGVyLCBub3QgdG8KPiB5
b3VyIG1hY2hpbmUuIEFuZCB5b3UgZG8gbm90IG5lZWQgdG8gZW50ZXIgeW91ciB2aXJ0dWFsIGVu
dmlyb25tZW50LAo+IHlvdSBjYW4gY2FsbCBkaXJlY3RseToKPiAKPiAgICBlbnYvYmluL3VrLXRy
YWNlCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNs
YWIuZXU+Cj4gLS0tCj4gIC5naXRpZ25vcmUgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsK
PiAgc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3NldHVwLnB5IHwgMTQgKysrKysrKysrKysrKysK
PiAgMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBzdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2Uvc2V0dXAucHkKPiAKPiBkaWZmIC0tZ2l0IGEvLmdp
dGlnbm9yZSBiLy5naXRpZ25vcmUKPiBpbmRleCAxNzkwOGI1MC4uMDllNGJhODEgMTAwNjQ0Cj4g
LS0tIGEvLmdpdGlnbm9yZQo+ICsrKyBiLy5naXRpZ25vcmUKPiBAQCAtMzQsMyArMzQsNCBAQCBH
VEFHUwo+ICAjIGNzY29wZSBmaWxlcwo+ICBjc2NvcGUuKgo+ICBuY3Njb3BlLioKPiArc3VwcG9y
dC9zY3JpcHRzL3VrX3RyYWNlL3VrX3RyYWNlLmVnZy1pbmZvLwo+IGRpZmYgLS1naXQgYS9zdXBw
b3J0L3NjcmlwdHMvdWtfdHJhY2Uvc2V0dXAucHkgYi9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2Uv
c2V0dXAucHkKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4zZDU0MmQw
Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9zdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2Uvc2V0dXAu
cHkKPiBAQCAtMCwwICsxLDE0IEBACj4gK2Zyb20gc2V0dXB0b29scyBpbXBvcnQgc2V0dXAKPiAr
Cj4gK3NldHVwKAo+ICsgICAgbmFtZT0ndWtfdHJhY2UnLAo+ICsgICAgdmVyc2lvbj0nMC4xJywK
PiArICAgIHNjcmlwdHM9Wyd0cmFjZS5weSddLAo+ICsgICAgaW5zdGFsbF9yZXF1aXJlcz1bCj4g
KyAgICAgICAgJ0NsaWNrJywgJ3RhYnVsYXRlJywKPiArICAgIF0sCj4gKyAgICBlbnRyeV9wb2lu
dHM9JycnCj4gKyAgICAgICAgW2NvbnNvbGVfc2NyaXB0c10KPiArICAgICAgICB1ay10cmFjZT10
cmFjZTpjbGkKPiArICAgICcnJywKPiArKQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:07:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16: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 1hXT1Z-0004XP-IA; Sun, 02 Jun 2019 16:07:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXT1X-0004Ws-TB
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:07:55 +0000
X-Inumbo-ID: 93a3d408-8550-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 93a3d408-8550-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 16:07:54 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id 16so4511108wmg.5
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 09:07:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=8SPYmSASsPfNnvFqdBtfWj95L97kflHffE/I4XOvsqY=;
 b=EW8cvGrZ04mouvb3fnzzYPA9oiDY7wbOhs5WbpK5USEy5L22JvnEHUpqTflj//JNKv
 O+WBnQwLFyhLrI378X+LnR45CcSupcvFljzdA43h1FqVICLak2Fw+e+Lhvo9IBjDtuEt
 GLK4QUHKh0U/cTt3q2dXDe6/v2wNM1fmOkFWos2Jx8IxsbGPKMatcHQqan9/PmUoGEA1
 jqlp15f+NqAyozcudlW61WIniMxlikYzeEiSLovLNz0drkkPagKU+119D9FpXafIPTbi
 I/SMx8uVC2DifLMjYUfv8/j5dg2U57w4bJfYMzBlngxxLXoRDSyZWIVJDgYgvpBugpgF
 AT8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=8SPYmSASsPfNnvFqdBtfWj95L97kflHffE/I4XOvsqY=;
 b=NCi0kc1KgRQl0ZUgcLXljXwO/+gsOzuvc4JdDM6Y3Z2nAm5QEIFo/ILFOJeOPJaMuK
 ZRo/ziVe5RoSytUQPcYhdjwBzjcgNVwypHppJhIfGfCnlBO9JCfmr+3CJwF/eQm0FMsp
 EH2FJbapkLcxZEZ55WCTg2qXvAJS9jdGyYfoCxW9nPHana27r2CsphRDb3Ad7USGVqCp
 HpIzldjsXeLffMtdjTgoAYiNM+tnP49zyVJatmHwYPRtc/uwIXGr5N4Kpl4eQA5g6PQX
 d4bbcaASGs6ztZVbJvcWWQRO8Vo9UXvse9nnsGST5O3lPdQOma0mnpY/1wofRn5aCzNs
 vujg==
X-Gm-Message-State: APjAAAXD/gwtewzv3MKKsiIXXTtQjiwYvreO0OqFAV1q9iThwTgxGJDy
 FCv/uSy/l79E2uNADpjOWXFJ169e
X-Google-Smtp-Source: APXvYqxSpdaWs3eq/V0gQBWG/6ngUq9l7iOz17xqtvUhckElYI/KWNlrq9J3niNL+RZoVjLpPv7nFQ==
X-Received: by 2002:a1c:9dc5:: with SMTP id g188mr4375861wme.93.1559491672457; 
 Sun, 02 Jun 2019 09:07:52 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id e15sm9057059wme.0.2019.06.02.09.07.51
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 09:07:51 -0700 (PDT)
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, minios-devel@lists.xen.org
References: <20190602142210.10670-1-yuri.volchkov@neclab.eu>
 <20190602142210.10670-9-yuri.volchkov@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <580f77b9-6cea-5c81-4694-4f452f6f7a3e@gmail.com>
Date: Sun, 2 Jun 2019 19:07:50 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602142210.10670-9-yuri.volchkov@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 8/9] doc/guides: Add section
 about tracepoints
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhhbmtzIGZvciBhZGRpbmcgbW9yZSBpbmZvLCBZdXJpIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBM
dXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzIvMTkgNToyMiBQTSwgWXVyaSBWb2xj
aGtvdiB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292
QG5lY2xhYi5ldT4KPiAtLS0KPiAgZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWRlYnVnZ2luZy5yc3Qg
fCAxMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgMTM3
IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWRl
YnVnZ2luZy5yc3QgYi9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtZGVidWdnaW5nLnJzdAo+IGluZGV4
IDBlODc5OWM0Li4yNThkMmY5ZiAxMDA2NDQKPiAtLS0gYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMt
ZGVidWdnaW5nLnJzdAo+ICsrKyBiL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1kZWJ1Z2dpbmcucnN0
Cj4gQEAgLTcyLDMgKzcyLDE0MCBAQCBZb3UgY2FuIHRoZW4gY29ubmVjdCBnZGIgd2l0aGluIGEg
c2VwYXJhdGUgY29uc29sZSBhbmQgeW91J3JlIHJlYWR5IHRvIGRlYnVnOiA6Ogo+ICBZb3Ugc2hv
dWxkIGJlIGFsc28gYWJsZSB0byB1c2UgdGhlIGRlYnVnZ2luZyBmaWxlCj4gIChgYGJ1aWxkL2hl
bGxvd29ybGRfbGludXh1LXg4Nl82NC5kYmdgYCkgZm9yIGdkYiBpbnN0ZWFkIHBhc3NpbmcgdGhl
IGtlcm5lbAo+ICBpbWFnZS4KPiArCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAr
VHJhY2UgcG9pbnRzCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiArCj4gKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArRGVwZW5kZW5jaWVzCj4gKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KPiArVGhlIGBgc3VwcG9ydC9zY3JpcHRzL3VrX3RyYWNlL3RyYWNlLnB5
YGAgZGVwZW5kcyBvbiBweXRob24gbW9kdWxlcwo+ICtjbGljayBhbmQgdGFidWxhdGUuIFlvdSBj
YW4gaW5zdGFsbCB0aGVtIGJ5IHJ1bm5pbmc6IDo6Cj4gKwo+ICsgIHN1ZG8gYXB0LWdldCBpbnN0
YWxsIHB5dGhvbjMtY2xpY2sgcHl0aG9uMy10YWJ1bGF0ZQo+ICsKPiArT3IsIHlvdSBjYW4gaW5z
dGFsbCB0cmFjZS5weSBpbnRvIGEgbG9jYWwgdmlydHVhbCBlbnZpcm9ubWVudDogOjoKPiArCj4g
KyAgcHl0aG9uMyAtbSB2ZW52IGVudgo+ICsgIC4gZW52L2Jpbi9hY3RpdmF0ZQo+ICsgIGNkIHN1
cHBvcnQvc2NyaXB0cy91a190cmFjZQo+ICsgIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAgc2V0
dXB0b29scyB3aGVlbAo+ICsgIHBpcCBpbnN0YWxsIC0tZWRpdGFibGUgLgo+ICsgIGRlYWN0aXZh
dGUKPiArICBjZCAtCj4gKwo+ICtBbGwgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluc3RhbGxl
ZCBpbiB0aGUgJ2VudicgZm9sZGVyLCBub3QgdG8KPiAreW91ciBtYWNoaW5lLiBZb3UgZG8gbm90
IGhhdmUgdG8gZW50ZXIgeW91ciB2aXJ0dWFsIGVudmlyb25tZW50LCB5b3UKPiArY2FuIGNhbGwg
dGhlIGluc3RhbGxlZCBzY3JpcHQgZGlyZWN0bHk6IDo6Cj4gKwo+ICsgIGVudi9iaW4vdWstdHJh
Y2UgLS1oZWxwCj4gKwo+ICtCZWNhdXNlIG9mIGBgLS1lZGl0YWJsZWBgIGZsYWcsIGFueSBtb2Rp
ZmljYXRpb25zIG1hZGUgdG8KPiArYGBzdXBwb3J0L3NjcmlwdHMvdWtfdHJhY2UvdHJhY2UucHlg
YCB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUKPiAraW5zdGFsbGVkIGZpbGUuCj4gKwo+ICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gK1JlYWRpbmcgdHJhY2Vwb2ludHMKPiArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArVHJhY2Vwb2ludHMgYXJlIHByb3ZpZGVkIGJ5
IGBgbGlidWtkZWJ1Z2BgLiBUbyBtYWtlIFVuaWtyYWZ0IGNvbGxlY3QKPiArdHJhY2luZyBkYXRh
IGVuYWJsZSB0aGUgb3B0aW9uIGBgQ09ORklHX0xJQlVLREVCVUdfVFJBQ0VQT0lOVFNgYCBpbiB5
b3VyCj4gK2NvbmZpZyAodmlhIGBgbWFrZSBtZW51Y29uZmlnYGApLgo+ICsKPiArQmVjYXVzZSB0
cmFjZXBvaW50cyBjYW4gbm90aWNlYWJseSBhZmZlY3QgcGVyZm9ybWFuY2UsIHNlbGVjdGl2ZQo+
ICtlbmFibGluZyBpcyBpbXBsZW1lbnRlZC4gT3B0aW9uIGBgQ09ORklHX0xJQlVLREVCVUdfVFJB
Q0VQT0lOVFNgYCBqdXN0Cj4gK2VuYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHksIGJ1dCBhbGwgdGhl
IHRyYWNlcG9pbnRzIGFyZSBjb21waWxlZCBpbnRvCj4gK25vdGhpbmcgYnkgZGVmYXVsdCAoaGF2
ZSBubyBlZmZlY3QpLiBJZiB5b3Ugd291bGQgbGlrZSBvbmUgbGlicmFyeSB0bwo+ICtjb2xsZWN0
IHRyYWNpbmcgZGF0YSwgYWRkIHRvIGl0J3MgTWFrZWZpbGUudWsKPiArCj4gKy4uIGNvZGUtYmxv
Y2s6OiBtYWtlCj4gKwo+ICsgICBMSUJBUFBOQU1FX0NGTEFHUyArPSAtRFVLX0RFQlVHX1RSQUNF
Cj4gKwo+ICtJZiB5b3UgbmVlZCBqdXN0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0cmFjZXBvaW50
cyBpbiBvbmUgZmlsZSwgZGVmaW5lCj4gK2BgVUtfREVCVUdfVFJBQ0VgYCAqKmJlZm9yZSoqIGBg
I2luY2x1ZGUgPHVrL3RyYWNlLmg+YGAuCj4gKwo+ICtJZiB5b3Ugd2lzaCB0byBlbmFibGUgKipB
TEwqKiBleGlzdGluZyB0cmFjZXBvaW50cywgZW5hYmxlCj4gK2BgQ09ORklHX0xJQlVLREVCVUdf
QUxMX1RSQUNFUE9JTlRTYGAgaW4gbWVudWNvbmZpZy4KPiArCj4gK1doZW4gdHJhY2luZyBpcyBl
bmFibGVkLCB1bmlrcmFmdCB3aWxsIHdyaXRlIHNhbXBsZXMgaW50byBpbnRlcm5hbAo+ICt0cmFj
ZSBidWZmZXIuIEN1cnJlbnRseSBpdCBpcyBub3QgYSBjaXJjdWxhciBidWZmZXIsIGFzIHNvb24g
YXMgaXQKPiArb3ZlcmZsb3dzLCB1bmlrcmFmdCB3aWxsIHN0b3AgY29sbGVjdGluZyBkYXRhLgo+
ICsKPiArVG8gcmVhZCB0aGUgY29sbGVjdGVkIGRhdGEgeW91IGhhdmUgMiBvcHRpb25zOgo+ICsK
PiArMS4gSW5zaWRlIGdkYgo+ICsKPiArMi4gVXNpbmcgdHJhY2UucHkKPiArCj4gK0ZvciB0aGUg
Zmlyc3Qgb3B0aW9uLCB5b3UgbmVlZCB0aGUgJ3VrLWdkYi5weScgaGVscGVyIGxvYWRlZCBpbnRv
IHRoZQo+ICtnZGIgc2Vzc2lvbi4gVG8gbWFrZSB0aGlzIGhhcHBlbiBhbGwgeW91IG5lZWQgdG8g
ZG8gaXMgdG8gYWRkIHRoZQo+ICtmb2xsb3dpbmcgbGluZSBpbnRvIH4vLmdkYmluaXQ6IDo6Cj4g
Kwo+ICsgIGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIC9wYXRoL3RvL3lvdXIvYnVpbGQvZGlyZWN0
b3J5Cj4gKwo+ICtXaXRoIHRoaXMsIGdkYiB3aWxsIGxvYWQgaGVscGVyIGF1dG9tYXRpY2FsbHks
IGVhY2ggdGltZSB5b3Ugc3RhcnQgZ2RiCj4gK3dpdGggYSAqLmRiZyBpbWFnZS4gRm9yIGV4YW1w
bGUgOjoKPiArCj4gKyAgZ2RiIGhlbGxvd29ybGQvYnVpbGQvaGVsbG93b3JsZF9rdm0teDg2XzY0
LmRiZwo+ICsKPiArTm93IHlvdSBjYW4gcHJpbnQgdHJhY2luZyBsb2cgYnkgaXNzdWluZyBjb21t
YW5kIGBgdWsKPiArdHJhY2VgYC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzYXZlIGFsbCB0cmFj
ZSBkYXRhIGludG8gYSBiaW5hcnkgZmlsZQo+ICt3aXRoIGBgdWsgdHJhY2Ugc2F2ZSA8ZmlsZW5h
bWU+YGAuIFRoaXMgdHJhY2VmaWxlIGNhbiBiZSBwcm9jZXNzZWQKPiArbGF0ZXIgb2ZmbGluZSB1
c2luZyB0aGUgdHJhY2UucHkgc2NyaXB0OiA6Ogo+ICsKPiArICBzdXBwb3J0L3NjcmlwdHMvdWtf
dHJhY2UvdHJhY2UucHkgbGlzdCA8ZmlsZW5hbWU+Cj4gKwo+ICtXaGljaCBicmluZ3MgdXMgdG8g
dGhlIHNlY29uZCBvcHRpb24uIFRyYWNlLnB5IGNhbiBydW4gZ2RiIGFuZCBmZXRjaAo+ICt0aGUg
dHJhY2VmaWxlIGZvciB5b3UuIEp1c3QgcnVuOiA6Ogo+ICsKPiArICBzdXBwb3J0L3NjcmlwdHMv
dWtfdHJhY2UvdHJhY2UucHkgZmV0Y2ggIDx5b3VyX3VuaWtyYWZ0X2ltYWdlPi5kYmcKPiArCj4g
Ky4uIG5vdGU6OiBUaGUgKi5kYmcgaW1hZ2UgaXMgcmVxdWlyZWQsIGFzIGl0IGhhdmUgb2ZmbGlu
ZSBkYXRhIG5lZWRlZAo+ICsgICAgICAgICAgZm9yIHBhcnNpbmcgdGhlIHRyYWNlIGJ1ZmZlci4K
PiArCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArQWRkaW5nIHlvdXIgdHJhY2Vw
b2ludHMKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICtCZWxsb3cgaXMgYSBzbmlw
cGV0IGZvciB1c2luZyB0cmFjZXBvaW50czoKPiArCj4gKy4uIGNvZGUtYmxvY2s6OiBjCj4gKwo+
ICsgIFVLX1RSQUNFUE9JTlQodHJhY2VfdmZzX29wZW4sICJcIiVzXCIgMHgleCAwJTBvIiwgY29u
c3QgY2hhciosIGludCwgbW9kZV90KTsKPiArICBpbnQgb3Blbihjb25zdCBjaGFyICpwYXRobmFt
ZSwgaW50IGZsYWdzLCAuLi4pCj4gKyAgewo+ICsgIAl0cmFjZV92ZnNfb3BlbihwYXRobmFtZSwg
ZmxhZ3MsIG1vZGUpOwo+ICsKPiArICAJLyogbG90cyBvZiBjb29sIHN0dWZmICovCj4gKwo+ICsg
IAlyZXR1cm4gMDsKPiArICB9Cj4gKwo+ICtNYWNybyBgYFVLX1RSQUNFUE9JTlQodHJhY2VfbmFt
ZSwgZm10LCB0eXBlMSwgdHlwZTIsIC4uLiB0eXBlTilgYAo+ICtnZW5lcmF0ZXMgYSBzdGF0aWMg
ZnVuY3Rpb24gYHRyYWNlX25hbWUoKWAsIGFjY2VwdGluZyBOIHBhcmFtZXRlcnMsIG9mCj4gK3R5
cGVzICoqdHlwZTEqKiwgKip0eXBlMioqIGFuZCBzbyBvbi4gVXAgdG8gNyBwYXJhbWV0ZXJzIHN1
cHBvcnRlZC4gVGhlCj4gKyoqZm10KiogaXMgYSBwcmludGYtc3R5bGUgZm9ybWF0IHdoaWNoIHdp
bGwgYmUgdXNlZCB0byBmb3JtIGEgbWVzc2FnZQo+ICtjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFj
ZSBzYW1wbGUuCj4gKwo+ICtUaGUgKipmbXQqKiBpcyBzdGF0aWMgYW5kIHN0b3JlZCBvZmZsaW5l
LiBPbmx5IHBhcmFtZXRlcnMgdmFsdWVzIGFyZQo+ICtzYXZlZCBvbiB0aGUgdHJhY2UgYnVmZmVy
LiBJdCBpcyB0aGUgam9iIG9mIHRoZSBvZmZsaW5lIHBhcnNlciB0bwo+ICttYXRjaCB0aGVtIHRv
Z2V0aGVyIGFuZCBwcmludCBvdXQgcmVzdWx0aW5nIG1lc3NhZ2VzLgo+ICsKPiArTm93IHlvdSBj
YW4gY2FsbCB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9uIGZyb20gdGhlIHBvaW50IG9mCj4gK2ludGVy
ZXN0LiBZb3UgYXJlIGV4cGVjdGVkIHRvIGNhbGwgb25lIHRyYWNlcG9pbnQgZnJvbSBleGFjdGx5
IG9uZQo+ICtwbGFjZSBpbiB5b3VyIGNvZGUuCj4gKwo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCj4gK1Ryb3VibGVzaG9vdGluZwo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Cj4gK0lmIHlvdSBhcmUgZ2V0dGluZyBhIG1lc3NhZ2U6Ogo+ICsKPiArICBFcnJvciBnZXR0aW5n
IHRoZSB0cmFjZSBidWZmZXIuIElzIHRyYWNpbmcgZW5hYmxlZD8KPiArCj4gK1RoaXMgbWlnaHQg
YmUgYmVjYXVzZToKPiArCj4gKzEuIEJlY2F1c2UgeW91IGluZGVlZCBuZWVkIHRvIGVuYWJsZSB0
cmFjaW5nCj4gKwo+ICsyLiBOb3QgYSBzaW5nbGUgdHJhY2Vwb2ludCBoYXMgYmVlbiBjYWxsZWQs
IGFuZCBkZWFkLWNvZGUgZWxpbWluYXRpb24KPiArICAgcmVtb3ZlZCAocmlnaHRmdWxseSkgdGhl
IHRyYWNpbmcgZnVuY3Rpb25hbGl0eQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:13:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:13: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 1hXT6p-0005HV-0X; Sun, 02 Jun 2019 16:13: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXT6n-0005HQ-Hg
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:13:21 +0000
X-Inumbo-ID: 53f9960a-8551-11e9-94ad-2ffad736885c
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.47]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 53f9960a-8551-11e9-94ad-2ffad736885c;
 Sun, 02 Jun 2019 16:13:16 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4988.eurprd01.prod.exchangelabs.com (20.177.210.80) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.19; Sun, 2 Jun
 2019 16:13:14 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 16:13:14 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH v2 2/5] Add device related stubs
Thread-Index: AQHVGV4Uz8MMhoDolkOnVXtXRhMOqg==
Date: Sun, 2 Jun 2019 16:13:14 +0000
Message-ID: <20190602161304.19049-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0190.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 10a6fba3-e127-4307-248c-08d6e7753745
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4988; 
x-ms-traffictypediagnostic: PR1PR01MB4988:
x-microsoft-antispam-prvs: <PR1PR01MB4988CA5FB6EDF6D18B01F8A0A61B0@PR1PR01MB4988.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(39850400004)(346002)(396003)(366004)(136003)(199004)(189003)(6916009)(2906002)(3846002)(50226002)(786003)(186003)(316002)(99286004)(6512007)(6116002)(5640700003)(508600001)(446003)(2616005)(476003)(486006)(26005)(54906003)(14454004)(68736007)(256004)(6486002)(52116002)(11346002)(102836004)(85202003)(5660300002)(6436002)(2351001)(8676002)(53936002)(386003)(71190400001)(74482002)(6506007)(71200400001)(66476007)(66556008)(64756008)(66446008)(66946007)(73956011)(86362001)(7736002)(305945005)(1076003)(25786009)(85182001)(76176011)(66066001)(8936002)(81156014)(81166006)(2501003)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4988;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: MK8HLCLdQYZz7RLH+zrE4qSxQxDmm/SiykxQd7oseQckPDDN4ffyYAusHATO+12NVHZkQBbp4QUolSagWL8aQ+UzZaheelOCqMfNYnTWgGBjudFoz9Tx9GtvE/wPth6bI7w6XFwC2w/TdKZGj5LTHMq3PI+dGR5WkEirhDJNwLDkTRyPq+1Kj4IQ1Jvt6O8ImwWXDOfhotKQB3oJOC/BeW+1Tlmb88Z2FQN+cyOXr1SqiDCC2MEymBHCFDyXNvB4dzzspVLI25bM4xU6ogtblcwB/V8FZYJjcDDvGUC/I6G8iC8XQ/m6HFTEcAQNz5nFaXgr9qkTTDlVVHqoYDiGMDA3Jf2rKXVgEIvEwYzDpIRc/Rus6XmupjaWGsNlJDWcM1j1Y0FMMvqzlM3nDi/i5kW8igOLEB6XlvK8+OW4asc=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 10a6fba3-e127-4307-248c-08d6e7753745
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 16:13:14.6640 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4988
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 2/5] Add device related
 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@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGEgbmV3IGZpbGUgZGV2LmMgd2hpY2ggY29udGFpbnMgc3R1YnMgcmVs
YXRlZCB0byBkZXZpY2VzLg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZs
YWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQotLS0NCiBNYWtlZmlsZS51ayB8ICAx
ICsNCiBkZXYuYyAgICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQogMiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspDQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGRldi5jDQoNCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2Vm
aWxlLnVrDQppbmRleCBmNDkyNjRlLi40MGUwZGFlIDEwMDY0NA0KLS0tIGEvTWFrZWZpbGUudWsN
CisrKyBiL01ha2VmaWxlLnVrDQpAQCAtMTEzLDYgKzExMyw3IEBAIExJQk5FV0xJQkdMVUVfU1JD
Uy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9yZXNvdXJjZS5jDQogTElCTkVXTElCR0xVRV9TUkNT
LXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL3B0eS5jDQogTElCTkVXTElCR0xVRV9TUkNTLXkgKz0g
JChMSUJORVdMSUJDX0JBU0UpL3RpbWUuY3xnbHVlDQogTElCTkVXTElCR0xVRV9TUkNTLXkgKz0g
JChMSUJORVdMSUJDX0JBU0UpL2xvY2FsZS5jDQorTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChM
SUJORVdMSUJDX0JBU0UpL2Rldi5jDQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAjIE5l
d2xpYi9saWJjIGNvZGUgLS0gYXJneg0KZGlmZiAtLWdpdCBhL2Rldi5jIGIvZGV2LmMNCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4yMmYyMmQzDQotLS0gL2Rldi9udWxsDQor
KysgYi9kZXYuYw0KQEAgLTAsMCArMSw1MCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBCU0QtMy1DbGF1c2UgKi8NCisvKg0KKyAqIEF1dGhvcnM6IFZsYWQtQW5kcmVpIEJhZG9pdSA8
dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybw0KKyAqDQorICogQ29weXJpZ2h0IChj
KSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6
DQorICoNCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUNCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisgKiAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQ0KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFDQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQorICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
DQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICoNCisgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KKyAqLw0KKw0KKyNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4NCisNCit1bnNpZ25lZCBpbnQgbWFqb3IoZGV2X3QgZGV2IF9f
dW51c2VkKQ0KK3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3Vuc2lnbmVkIGludCBtaW5vcihkZXZf
dCBkZXYgX191bnVzZWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorZGV2X3QgbWFrZWRldih1
bnNpZ25lZCBpbnQgbWFqIF9fdW51c2VkLCB1bnNpZ25lZCBpbnQgbWluIF9fdW51c2VkKQ0KK3sN
CisJcmV0dXJuIDA7DQorfQ0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:13:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:13: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 1hXT6t-0005I0-2v; Sun, 02 Jun 2019 16:13: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXT6r-0005Hp-PI
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:13:25 +0000
X-Inumbo-ID: 56e7d2aa-8551-11e9-882f-678d207001c2
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.47]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 56e7d2aa-8551-11e9-882f-678d207001c2;
 Sun, 02 Jun 2019 16:13:21 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4988.eurprd01.prod.exchangelabs.com (20.177.210.80) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.19; Sun, 2 Jun
 2019 16:13:13 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 16:13:13 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH v2 0/5] Add missing stubs for CPython
Thread-Index: AQHVGV4UNl8wa8BpQkaanWd6dKrtSg==
Date: Sun, 2 Jun 2019 16:13:13 +0000
Message-ID: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0190.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: faef9a2c-cc17-4a61-0642-08d6e775368a
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4988; 
x-ms-traffictypediagnostic: PR1PR01MB4988:
x-microsoft-antispam-prvs: <PR1PR01MB498838071043B487C0B4A4ADA61B0@PR1PR01MB4988.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4941;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(39850400004)(346002)(396003)(366004)(136003)(199004)(189003)(6916009)(2906002)(3846002)(50226002)(786003)(186003)(316002)(99286004)(6512007)(6116002)(5640700003)(508600001)(2616005)(476003)(486006)(26005)(54906003)(14454004)(68736007)(256004)(6486002)(52116002)(102836004)(85202003)(5660300002)(6436002)(2351001)(8676002)(53936002)(386003)(71190400001)(74482002)(6506007)(71200400001)(66476007)(66556008)(64756008)(66446008)(4744005)(66946007)(73956011)(86362001)(7736002)(305945005)(1076003)(25786009)(85182001)(66066001)(8936002)(81156014)(81166006)(2501003)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4988;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: G+On/N6lXAab7owmnl9XARek0X7qd/+KoOMQDiqnyvjIoDbSBBmVjs72dNcYpCeE1FBov+LprXemgvGqUuwUQnezGp36uq9niIf9dAtV3ylHudm1TQ7qDeSs69yUXXrI5JX3a4AgQOIn6W06LF8sg9Yb3U/5qaWjp8VcgypwavYRxpINP7Ck9Ixr61rmFwovBQEMDlmOFbsuZYqvepurdxuiAEreQdmZl3QFj4DUc4kqA76TmW2zPF6EG1bkDRRZkVgAA03qWi/BZdwsbLWwqDqX2mYmsAi3Uay7FCRpT7PcQ1BIlsOfwx6CTykEQ3JUGYo1eMBBnlzXlF5dpd1jxGxlSOk+c9Q/8HmK3SwXk92a/Qf37LBkOeT9xk0D54XuVwNJhMEnjUbyJePZOoqQpS/FKqtdkaJHpVuoE2o+56A=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: faef9a2c-cc17-4a61-0642-08d6e775368a
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 16:13:13.4717 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4988
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 0/5] Add missing stubs for
 CPython
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGEgbnVtYmVyIG9mIHN0dWJzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IENQ
eXRob24gdG8gY29tcGlsZS4NClRoZSBzeXNleGl0cy5oIGhlYWRlciBpcyBhZGRlZCBmcm9tIG5l
d2xpYiBhbmQgdGhlIGlzYXR0eSBmdW5jdGlvbiBpcw0KaW1wbGVtZW50ZWQuDQoNCkNoYW5nZXMg
ZnJvbSB2MToNCiopIFJlbW92ZWQgc2V2ZXJhbCBmdW5jdGlvbnMgdGhhdCBtYXkgbm93IGJlIGZv
dW5kIGluIHVrdW5pc3RkIG9yIHVrc3lzLg0KDQpWbGFkLUFuZHJlaSBCYWRvaXUgKDUpOg0KICBB
ZGQgc3lzZXhpdHMuaA0KICBBZGQgZGV2aWNlIHJlbGF0ZWQgc3R1YnMNCiAgQWRkIHNpZ25hbCBy
ZWxhdGVkIHN0dWJzDQogIEFkZCBtaXNzaW5nIHN0dWJzIG5lZWRlZCBieSBDUHl0aG9uMg0KICBJ
bXBsZW1lbnQgaXNhdHR5DQoNCiBNYWtlZmlsZS51ayAgICAgICAgfCAgIDIgKw0KIGNvbnNvbGUu
YyAgICAgICAgICB8ICAyNiArKysrKysrKysrLQ0KIGRldi5jICAgICAgICAgICAgICB8ICA1MCAr
KysrKysrKysrKysrKysrKysrKw0KIGZpbGUuYyAgICAgICAgICAgICB8ICAyMyArKysrKysrKysN
CiBpbmNsdWRlL3N5c2V4aXRzLmggfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQogcHJvY2Vzcy5jICAgICAgICAgIHwgIDkzICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KIHB0eS5jICAgICAgICAgICAgICB8ICAgOCArKysrDQog
cmVzb3VyY2UuYyAgICAgICAgIHwgICA1ICsrDQogc2lnbmFsLmMgICAgICAgICAgIHwgIDU2ICsr
KysrKysrKysrKysrKysrKysrKysNCiA5IGZpbGVzIGNoYW5nZWQsIDM3NSBpbnNlcnRpb25zKCsp
LCAyIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkZXYuYw0KIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL3N5c2V4aXRzLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2lnbmFsLmMN
Cg0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:13:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:13: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 1hXT6x-0005Ii-5e; Sun, 02 Jun 2019 16:13: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXT6w-0005IY-0H
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:13:30 +0000
X-Inumbo-ID: 59c20cd4-8551-11e9-81cd-bfd73269d1e4
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.47]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 59c20cd4-8551-11e9-81cd-bfd73269d1e4;
 Sun, 02 Jun 2019 16:13:25 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4988.eurprd01.prod.exchangelabs.com (20.177.210.80) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.19; Sun, 2 Jun
 2019 16:13:14 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 16:13:14 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH v2 1/5] Add sysexits.h
Thread-Index: AQHVGV4U2UMnuwp8C0STRJIEJACaXA==
Date: Sun, 2 Jun 2019 16:13:14 +0000
Message-ID: <20190602161304.19049-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0190.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 523f5847-22b9-4932-5ad7-08d6e77536e7
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4988; 
x-ms-traffictypediagnostic: PR1PR01MB4988:
x-microsoft-antispam-prvs: <PR1PR01MB4988ECE7324347D23F68BB99A61B0@PR1PR01MB4988.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(39850400004)(346002)(396003)(366004)(136003)(199004)(189003)(6916009)(2906002)(3846002)(50226002)(786003)(186003)(316002)(99286004)(6512007)(6116002)(5640700003)(508600001)(446003)(2616005)(476003)(486006)(14444005)(26005)(54906003)(14454004)(68736007)(256004)(6486002)(52116002)(11346002)(102836004)(85202003)(5660300002)(6436002)(2351001)(8676002)(53936002)(386003)(71190400001)(74482002)(6506007)(71200400001)(66476007)(66556008)(64756008)(66446008)(66946007)(73956011)(86362001)(7736002)(305945005)(1076003)(25786009)(85182001)(76176011)(66066001)(8936002)(81156014)(81166006)(2501003)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4988;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: tB6ugqH182gGYZJ4sfipRVOsALYmgkd6lamcRzxoRJ4JHzDgXZJtlRAa6kzRhnIZZOJU99VujqcM3akbmO2QyJ0prc4psTKpgMSH5WRn3O63OxefjWDEd/1fJ5tW9Ke516KmjMYsRrqpsfnG7C1bsIFVZNiNnJhx9OVSnY9Gk/6hKuuYhpATWrAr0U5UDOQAV+dRByc8QFWlIEpmpiQTUSiS1QcDGMq/Z9oDTSOc0hmhPgt4dth6t8Q3C6MEjTlquWOAS945eOxRcqnGHPLnjg+e4LzSOmT4iOzuWgCc09Vi/X+3Ot311IPfULIQfwKpi1pxaPVRtkQoQhnSCvvUBuGmwvIahDPuMmwrBMFNLQMefSKH+C4c2eli0s4AiDjCF1s7+CnbLtiLhBV2UCXSytBrZkK8b69WkXRiMHGaAjQ=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 523f5847-22b9-4932-5ad7-08d6e77536e7
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 16:13:14.0214 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4988
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 1/5] Add sysexits.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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhlIGhlYWRlciB3YXMgdGFrZW4gZnJvbSBuZXdsaWJjLCByZWxlYXNlIHZlcnNpb24gMi41LjAu
MjAxNzA5MjIuDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRy
ZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIGluY2x1ZGUvc3lzZXhpdHMuaCB8IDEx
NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAxIGZpbGUg
Y2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9z
eXNleGl0cy5oDQoNCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N5c2V4aXRzLmggYi9pbmNsdWRlL3N5
c2V4aXRzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4zNzI0NmI2DQot
LS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL3N5c2V4aXRzLmgNCkBAIC0wLDAgKzEsMTE0IEBA
DQorLyoNCisgKiBDb3B5cmlnaHQgKGMpIDE5ODcsIDE5OTMNCisgKglUaGUgUmVnZW50cyBvZiB0
aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0K
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4NCisgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycw0KKyAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQ0KKyAq
ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQNCisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0K
KyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQ0KKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMNCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkNCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQorICogU1VDSCBEQU1BR0UuDQorICoNCisg
KglAKCMpc3lzZXhpdHMuaAk4LjEgKEJlcmtlbGV5KSA2LzIvOTMNCisgKi8NCisNCisjaWZuZGVm
CV9TWVNFWElUU19IDQorI2RlZmluZQlfU1lTRVhJVFNfSCAxDQorDQorLyoNCisgKiAgU1lTRVhJ
VFMuSCAtLSBFeGl0IHN0YXR1cyBjb2RlcyBmb3Igc3lzdGVtIHByb2dyYW1zLg0KKyAqDQorICoJ
VGhpcyBpbmNsdWRlIGZpbGUgYXR0ZW1wdHMgdG8gY2F0ZWdvcml6ZSBwb3NzaWJsZSBlcnJvcg0K
KyAqCWV4aXQgc3RhdHVzZXMgZm9yIHN5c3RlbSBwcm9ncmFtcywgbm90YWJseSBkZWxpdmVybWFp
bA0KKyAqCWFuZCB0aGUgQmVya2VsZXkgbmV0d29yay4NCisgKg0KKyAqCUVycm9yIG51bWJlcnMg
YmVnaW4gYXQgRVhfX0JBU0UgdG8gcmVkdWNlIHRoZSBwb3NzaWJpbGl0eSBvZg0KKyAqCWNsYXNo
aW5nIHdpdGggb3RoZXIgZXhpdCBzdGF0dXNlcyB0aGF0IHJhbmRvbSBwcm9ncmFtcyBtYXkNCisg
KglhbHJlYWR5IHJldHVybi4gIFRoZSBtZWFuaW5nIG9mIHRoZSBjb2RlcyBpcyBhcHByb3hpbWF0
ZWx5DQorICoJYXMgZm9sbG93czoNCisgKg0KKyAqCUVYX1VTQUdFIC0tIFRoZSBjb21tYW5kIHdh
cyB1c2VkIGluY29ycmVjdGx5LCBlLmcuLCB3aXRoDQorICoJCXRoZSB3cm9uZyBudW1iZXIgb2Yg
YXJndW1lbnRzLCBhIGJhZCBmbGFnLCBhIGJhZA0KKyAqCQlzeW50YXggaW4gYSBwYXJhbWV0ZXIs
IG9yIHdoYXRldmVyLg0KKyAqCUVYX0RBVEFFUlIgLS0gVGhlIGlucHV0IGRhdGEgd2FzIGluY29y
cmVjdCBpbiBzb21lIHdheS4NCisgKgkJVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGZvciB1c2Vy
J3MgZGF0YSAmIG5vdA0KKyAqCQlzeXN0ZW0gZmlsZXMuDQorICoJRVhfTk9JTlBVVCAtLSBBbiBp
bnB1dCBmaWxlIChub3QgYSBzeXN0ZW0gZmlsZSkgZGlkIG5vdA0KKyAqCQlleGlzdCBvciB3YXMg
bm90IHJlYWRhYmxlLiAgVGhpcyBjb3VsZCBhbHNvIGluY2x1ZGUNCisgKgkJZXJyb3JzIGxpa2Ug
Ik5vIG1lc3NhZ2UiIHRvIGEgbWFpbGVyIChpZiBpdCBjYXJlZA0KKyAqCQl0byBjYXRjaCBpdCku
DQorICoJRVhfTk9VU0VSIC0tIFRoZSB1c2VyIHNwZWNpZmllZCBkaWQgbm90IGV4aXN0LiAgVGhp
cyBtaWdodA0KKyAqCQliZSB1c2VkIGZvciBtYWlsIGFkZHJlc3NlcyBvciByZW1vdGUgbG9naW5z
Lg0KKyAqCUVYX05PSE9TVCAtLSBUaGUgaG9zdCBzcGVjaWZpZWQgZGlkIG5vdCBleGlzdC4gIFRo
aXMgaXMgdXNlZA0KKyAqCQlpbiBtYWlsIGFkZHJlc3NlcyBvciBuZXR3b3JrIHJlcXVlc3RzLg0K
KyAqCUVYX1VOQVZBSUxBQkxFIC0tIEEgc2VydmljZSBpcyB1bmF2YWlsYWJsZS4gIFRoaXMgY2Fu
IG9jY3VyDQorICoJCWlmIGEgc3VwcG9ydCBwcm9ncmFtIG9yIGZpbGUgZG9lcyBub3QgZXhpc3Qu
ICBUaGlzDQorICoJCWNhbiBhbHNvIGJlIHVzZWQgYXMgYSBjYXRjaGFsbCBtZXNzYWdlIHdoZW4g
c29tZXRoaW5nDQorICoJCXlvdSB3YW50ZWQgdG8gZG8gZG9lc24ndCB3b3JrLCBidXQgeW91IGRv
bid0IGtub3cNCisgKgkJd2h5Lg0KKyAqCUVYX1NPRlRXQVJFIC0tIEFuIGludGVybmFsIHNvZnR3
YXJlIGVycm9yIGhhcyBiZWVuIGRldGVjdGVkLg0KKyAqCQlUaGlzIHNob3VsZCBiZSBsaW1pdGVk
IHRvIG5vbi1vcGVyYXRpbmcgc3lzdGVtIHJlbGF0ZWQNCisgKgkJZXJyb3JzIGFzIHBvc3NpYmxl
Lg0KKyAqCUVYX09TRVJSIC0tIEFuIG9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgaGFzIGJlZW4gZGV0
ZWN0ZWQuDQorICoJCVRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3Igc3VjaCB0aGluZ3Mg
YXMgImNhbm5vdA0KKyAqCQlmb3JrIiwgImNhbm5vdCBjcmVhdGUgcGlwZSIsIG9yIHRoZSBsaWtl
LiAgSXQgaW5jbHVkZXMNCisgKgkJdGhpbmdzIGxpa2UgZ2V0dWlkIHJldHVybmluZyBhIHVzZXIg
dGhhdCBkb2VzIG5vdA0KKyAqCQlleGlzdCBpbiB0aGUgcGFzc3dkIGZpbGUuDQorICoJRVhfT1NG
SUxFIC0tIFNvbWUgc3lzdGVtIGZpbGUgKGUuZy4sIC9ldGMvcGFzc3dkLCAvZXRjL3V0bXAsDQor
ICoJCWV0Yy4pIGRvZXMgbm90IGV4aXN0LCBjYW5ub3QgYmUgb3BlbmVkLCBvciBoYXMgc29tZQ0K
KyAqCQlzb3J0IG9mIGVycm9yIChlLmcuLCBzeW50YXggZXJyb3IpLg0KKyAqCUVYX0NBTlRDUkVB
VCAtLSBBICh1c2VyIHNwZWNpZmllZCkgb3V0cHV0IGZpbGUgY2Fubm90IGJlDQorICoJCWNyZWF0
ZWQuDQorICoJRVhfSU9FUlIgLS0gQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZG9pbmcgSS9PIG9u
IHNvbWUgZmlsZS4NCisgKglFWF9URU1QRkFJTCAtLSB0ZW1wb3JhcnkgZmFpbHVyZSwgaW5kaWNh
dGluZyBzb21ldGhpbmcgdGhhdA0KKyAqCQlpcyBub3QgcmVhbGx5IGFuIGVycm9yLiAgSW4gc2Vu
ZG1haWwsIHRoaXMgbWVhbnMNCisgKgkJdGhhdCBhIG1haWxlciAoZS5nLikgY291bGQgbm90IGNy
ZWF0ZSBhIGNvbm5lY3Rpb24sDQorICoJCWFuZCB0aGUgcmVxdWVzdCBzaG91bGQgYmUgcmVhdHRl
bXB0ZWQgbGF0ZXIuDQorICoJRVhfUFJPVE9DT0wgLS0gdGhlIHJlbW90ZSBzeXN0ZW0gcmV0dXJu
ZWQgc29tZXRoaW5nIHRoYXQNCisgKgkJd2FzICJub3QgcG9zc2libGUiIGR1cmluZyBhIHByb3Rv
Y29sIGV4Y2hhbmdlLg0KKyAqCUVYX05PUEVSTSAtLSBZb3UgZGlkIG5vdCBoYXZlIHN1ZmZpY2ll
bnQgcGVybWlzc2lvbiB0bw0KKyAqCQlwZXJmb3JtIHRoZSBvcGVyYXRpb24uICBUaGlzIGlzIG5v
dCBpbnRlbmRlZCBmb3INCisgKgkJZmlsZSBzeXN0ZW0gcHJvYmxlbXMsIHdoaWNoIHNob3VsZCB1
c2UgTk9JTlBVVCBvcg0KKyAqCQlDQU5UQ1JFQVQsIGJ1dCByYXRoZXIgZm9yIGhpZ2hlciBsZXZl
bCBwZXJtaXNzaW9ucy4NCisgKi8NCisNCisjZGVmaW5lIEVYX09LCQkwCS8qIHN1Y2Nlc3NmdWwg
dGVybWluYXRpb24gKi8NCisNCisjZGVmaW5lIEVYX19CQVNFCTY0CS8qIGJhc2UgdmFsdWUgZm9y
IGVycm9yIG1lc3NhZ2VzICovDQorDQorI2RlZmluZSBFWF9VU0FHRQk2NAkvKiBjb21tYW5kIGxp
bmUgdXNhZ2UgZXJyb3IgKi8NCisjZGVmaW5lIEVYX0RBVEFFUlIJNjUJLyogZGF0YSBmb3JtYXQg
ZXJyb3IgKi8NCisjZGVmaW5lIEVYX05PSU5QVVQJNjYJLyogY2Fubm90IG9wZW4gaW5wdXQgKi8N
CisjZGVmaW5lIEVYX05PVVNFUgk2NwkvKiBhZGRyZXNzZWUgdW5rbm93biAqLw0KKyNkZWZpbmUg
RVhfTk9IT1NUCTY4CS8qIGhvc3QgbmFtZSB1bmtub3duICovDQorI2RlZmluZSBFWF9VTkFWQUlM
QUJMRQk2OQkvKiBzZXJ2aWNlIHVuYXZhaWxhYmxlICovDQorI2RlZmluZSBFWF9TT0ZUV0FSRQk3
MAkvKiBpbnRlcm5hbCBzb2Z0d2FyZSBlcnJvciAqLw0KKyNkZWZpbmUgRVhfT1NFUlIJNzEJLyog
c3lzdGVtIGVycm9yIChlLmcuLCBjYW4ndCBmb3JrKSAqLw0KKyNkZWZpbmUgRVhfT1NGSUxFCTcy
CS8qIGNyaXRpY2FsIE9TIGZpbGUgbWlzc2luZyAqLw0KKyNkZWZpbmUgRVhfQ0FOVENSRUFUCTcz
CS8qIGNhbid0IGNyZWF0ZSAodXNlcikgb3V0cHV0IGZpbGUgKi8NCisjZGVmaW5lIEVYX0lPRVJS
CTc0CS8qIGlucHV0L291dHB1dCBlcnJvciAqLw0KKyNkZWZpbmUgRVhfVEVNUEZBSUwJNzUJLyog
dGVtcCBmYWlsdXJlOyB1c2VyIGlzIGludml0ZWQgdG8gcmV0cnkgKi8NCisjZGVmaW5lIEVYX1BS
T1RPQ09MCTc2CS8qIHJlbW90ZSBlcnJvciBpbiBwcm90b2NvbCAqLw0KKyNkZWZpbmUgRVhfTk9Q
RVJNCTc3CS8qIHBlcm1pc3Npb24gZGVuaWVkICovDQorI2RlZmluZSBFWF9DT05GSUcJNzgJLyog
Y29uZmlndXJhdGlvbiBlcnJvciAqLw0KKw0KKyNkZWZpbmUgRVhfX01BWAk3OAkvKiBtYXhpbXVt
IGxpc3RlZCB2YWx1ZSAqLw0KKw0KKyNlbmRpZiAvKiBzeXNleGl0cy5oICovDQotLSANCjIuMjEu
MA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:13:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:13: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 1hXT71-0005JR-7m; Sun, 02 Jun 2019 16:13: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXT6z-0005JC-7g
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:13:33 +0000
X-Inumbo-ID: 5c36bb54-8551-11e9-8e1f-03a97e05cfeb
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.47]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5c36bb54-8551-11e9-8e1f-03a97e05cfeb;
 Sun, 02 Jun 2019 16:13:29 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4988.eurprd01.prod.exchangelabs.com (20.177.210.80) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.19; Sun, 2 Jun
 2019 16:13:15 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 16:13:15 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH v2 3/5] Add signal related stubs
Thread-Index: AQHVGV4Vrktl+TyaBU6e/i8m3WJ6/Q==
Date: Sun, 2 Jun 2019 16:13:15 +0000
Message-ID: <20190602161304.19049-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0190.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 2edd54d6-b79c-42a0-42c1-08d6e77537c3
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4988; 
x-ms-traffictypediagnostic: PR1PR01MB4988:
x-microsoft-antispam-prvs: <PR1PR01MB49881B89DBE0888B3FDE3DF5A61B0@PR1PR01MB4988.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(39850400004)(346002)(396003)(366004)(136003)(199004)(189003)(6916009)(2906002)(3846002)(50226002)(786003)(186003)(316002)(99286004)(6512007)(6116002)(5640700003)(508600001)(446003)(2616005)(476003)(486006)(26005)(54906003)(14454004)(68736007)(256004)(6486002)(52116002)(11346002)(102836004)(85202003)(5660300002)(6436002)(2351001)(8676002)(53936002)(386003)(71190400001)(74482002)(6506007)(71200400001)(66476007)(66556008)(64756008)(66446008)(66946007)(73956011)(86362001)(7736002)(305945005)(1076003)(25786009)(85182001)(76176011)(66066001)(8936002)(81156014)(81166006)(2501003)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4988;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: lNMHow9DPI9VNlIe1zXLTv2ZUFwD1Pz5zIScp2DN3Tz82UBCDuuzNwBDfGvuaPhWLXYPTwGLGwe+TnokcqFcXpFlQzIdKE91UrSz1ONHCn8TIyCRhxac18BntVgGr8ZZ54GSXQUGsdu7TIVGYm8mBU2X+xXtW6+VucBD1P8xIAKMAXcRfv+xrezPHu6Ku+Ogg1BjSEyFvvOGv5hEopdOTC3eRejd0dkNKqdlB8o5IQE6pMi4nRuWsyyuvn9ZXQ8B7jNQ0RdxvFFPBNVRz3lSwW7glat8Diop7CMhMZ6On+cD1RvSupUigX4PULj8llqoOPzGdeFR/c7zVvQLFuZDFT3WTEStGDLNMm3iq0juTZR3dr2RYpzDQ16AJI2arc37EyTHyKRAOxA2dgxC8UJm59xqcNJdFrkkE+OT9Zih5sU=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 2edd54d6-b79c-42a0-42c1-08d6e77537c3
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 16:13:15.4645 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4988
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 3/5] Add signal related
 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@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGEgbmV3IGZpbGUgc2lnbmFsLmMgd2hpY2ggY29udGFpbnMgc3R1YnMg
cmVsYXRlZCB0byBzaWduYWxzLg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUg
PHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQotLS0NCiBNYWtlZmlsZS51ayB8
ICAxICsNCiBzaWduYWwuYyAgICB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrDQogMiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCsp
DQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNpZ25hbC5jDQoNCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51
ayBiL01ha2VmaWxlLnVrDQppbmRleCA0MGUwZGFlLi45ZDFiMjc1IDEwMDY0NA0KLS0tIGEvTWFr
ZWZpbGUudWsNCisrKyBiL01ha2VmaWxlLnVrDQpAQCAtMTE0LDYgKzExNCw3IEBAIExJQk5FV0xJ
QkdMVUVfU1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9wdHkuYw0KIExJQk5FV0xJQkdMVUVf
U1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS90aW1lLmN8Z2x1ZQ0KIExJQk5FV0xJQkdMVUVf
U1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9sb2NhbGUuYw0KIExJQk5FV0xJQkdMVUVfU1JD
Uy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9kZXYuYw0KK0xJQk5FV0xJQkdMVUVfU1JDUy15ICs9
ICQoTElCTkVXTElCQ19CQVNFKS9zaWduYWwuYw0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQogIyBOZXdsaWIvbGliYyBjb2RlIC0tIGFyZ3oNCmRpZmYgLS1naXQgYS9zaWduYWwuYyBiL3Np
Z25hbC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNjgwYmNhZg0KLS0t
IC9kZXYvbnVsbA0KKysrIGIvc2lnbmFsLmMNCkBAIC0wLDAgKzEsNTYgQEANCisvKiBTUERYLUxp
Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQorLyoNCisgKiBBdXRob3JzOiBWbGFk
LUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8NCisgKg0K
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJl
c3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMNCisgKiBhcmUgbWV0Og0KKyAqDQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzDQorICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMg
SVMiDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQorICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQ0KKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQ0KKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqDQor
ICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdB
WS4NCisgKi8NCisNCisjaW5jbHVkZSA8c2lnbmFsLmg+DQorDQoraW50IHNpZ2FjdGlvbihpbnQg
c2lnIF9fdW51c2VkLCBjb25zdCBzdHJ1Y3Qgc2lnYWN0aW9uICpyZXN0cmljdCBhY3QgX191bnVz
ZWQsDQorCSAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKnJlc3RyaWN0IG9hY3QgX191bnVzZWQpDQor
ew0KKwlyZXR1cm4gMDsNCit9DQorDQordW5zaWduZWQgaW50IGFsYXJtKHVuc2lnbmVkIGludCBz
ZWNvbmRzIF9fdW51c2VkKQ0KK3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBwYXVzZSh2b2lk
KQ0KK3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBzaWdpbnRlcnJ1cHQoaW50IHNpZyBfX3Vu
dXNlZCwgaW50IGZsYWcgX191bnVzZWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQotLSANCjIuMjEu
MA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:13:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:13: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 1hXT73-0005KD-9N; Sun, 02 Jun 2019 16:13:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXT71-0005Jg-Fa
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:13:35 +0000
X-Inumbo-ID: 5dddf5da-8551-11e9-88b7-1f76d5753270
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.47]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5dddf5da-8551-11e9-88b7-1f76d5753270;
 Sun, 02 Jun 2019 16:13:32 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4988.eurprd01.prod.exchangelabs.com (20.177.210.80) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.19; Sun, 2 Jun
 2019 16:13:16 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 16:13:16 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH v2 4/5] Add missing stubs needed by
 CPython2
Thread-Index: AQHVGV4W1sPDz+Pz80iqN13NeGz8zw==
Date: Sun, 2 Jun 2019 16:13:16 +0000
Message-ID: <20190602161304.19049-5-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0190.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 04591a54-7ad3-4a63-0436-08d6e7753859
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4988; 
x-ms-traffictypediagnostic: PR1PR01MB4988:
x-microsoft-antispam-prvs: <PR1PR01MB4988B4073162C1A6791D2B92A61B0@PR1PR01MB4988.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:43;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(39850400004)(346002)(396003)(366004)(136003)(199004)(189003)(6916009)(2906002)(3846002)(50226002)(786003)(186003)(316002)(99286004)(6512007)(6116002)(5640700003)(508600001)(446003)(2616005)(476003)(486006)(26005)(54906003)(14454004)(68736007)(256004)(6486002)(52116002)(11346002)(102836004)(85202003)(5660300002)(6436002)(2351001)(8676002)(53936002)(386003)(71190400001)(74482002)(6506007)(71200400001)(66476007)(66556008)(64756008)(66446008)(66946007)(73956011)(86362001)(7736002)(305945005)(1076003)(25786009)(85182001)(76176011)(66066001)(8936002)(81156014)(81166006)(2501003)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4988;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: VbImsKj1sq2/iQUelaVWMjN/BHj6a5df+sTKPg+ND+UAZLrF9jjmSTFFHdKYf+Sd0JXd4/cPD/Z7vLdB4NUcWsuItF7RmhGpe4s5Xr5kc+/xOkfCoaLGT7PX16LDaQJLO5Gjl9D5Xri6U80BleLx2gigHdqlTNDZRjNXDYc1dOGrVFp02cOUXN8gmPEzrV+/0SLtQekaI6D9eJcKcB2hRuBgxb/lIxuyJvByoNKM1pdxu1XcTBTFdrX4/PRJxaRLj4De0h/GazgwbMmrbnPCk/VGZ6R6Uyeye4UXsBFqOvfR629mRDgBvUUoYQYxsXgK/+1mkXmH646DeGdaL7Hvxpl6zlqpRq1kwLezYZ8mcBJLhAx5XJyb9jKHbjHLUeLhYm7EWoJKowpX1wheurxXT05ZZ1yoHZJOKibPaxr+wa4=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 04591a54-7ad3-4a63-0436-08d6e7753859
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 16:13:16.5599 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4988
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 4/5] Add missing stubs
 needed by CPython2
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGEgbnVtYmVyIG9mIHN0dWJzIG5lZWRlZCBieSBDUHl0aG9uMiB0byBj
b21waWxlLg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQotLS0NCiBjb25zb2xlLmMgIHwgMTAgKysrKysrDQog
ZmlsZS5jICAgICB8IDIzICsrKysrKysrKysrKysrDQogcHJvY2Vzcy5jICB8IDkzICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIHB0eS5jICAg
ICAgfCAgOCArKysrKw0KIHJlc291cmNlLmMgfCAgNSArKysNCiA1IGZpbGVzIGNoYW5nZWQsIDEz
OSBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9jb25zb2xlLmMgYi9jb25zb2xlLmMNCmlu
ZGV4IDRmZDMzY2QuLjcwMTY5NTcgMTAwNjQ0DQotLS0gYS9jb25zb2xlLmMNCisrKyBiL2NvbnNv
bGUuYw0KQEAgLTQxLDMgKzQxLDEzIEBAIGludCBpc2F0dHkoaW50IGZpbGUgX191bnVzZWQpDQog
ew0KIAlyZXR1cm4gMTsNCiB9DQorDQorY2hhciAqdHR5bmFtZShpbnQgZmQgX191bnVzZWQpDQor
ew0KKwlyZXR1cm4gMDsNCit9DQorDQorY2hhciAqY3Rlcm1pZChjaGFyICpzIF9fdW51c2VkKQ0K
K3sNCisJcmV0dXJuIDA7DQorfQ0KZGlmZiAtLWdpdCBhL2ZpbGUuYyBiL2ZpbGUuYw0KaW5kZXgg
YWIxY2RiZS4uM2ZkZjk5YSAxMDA2NDQNCi0tLSBhL2ZpbGUuYw0KKysrIGIvZmlsZS5jDQpAQCAt
OTQsMyArOTQsMjYgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzIF9fdW51
c2VkLCBmZF9zZXQgKndyaXRlZmRzIF9fdW51c2VkLA0KIAlyZXR1cm4gLTE7DQogfQ0KICNlbmRp
ZiAvKiAhQ09ORklHX0xXSVBfU09DS0VUICovDQorDQoraW50IGZjaG93bihpbnQgZmQgX191bnVz
ZWQsIHVpZF90IG93bmVyIF9fdW51c2VkLCBnaWRfdCBncm91cCBfX3VudXNlZCkNCit7DQorCXJl
dHVybiAwOw0KK30NCisNCitpbnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGhuYW1lIF9fdW51c2Vk
LCB1aWRfdCBvd25lciBfX3VudXNlZCwNCisJCWdpZF90IGdyb3VwIF9fdW51c2VkKQ0KK3sNCisJ
cmV0dXJuIDA7DQorfQ0KKw0KKw0KK2ludCB1dGltZXMoY29uc3QgY2hhciAqZmlsZW5hbWUgX191
bnVzZWQsDQorCQljb25zdCBzdHJ1Y3QgdGltZXZhbCB0aW1lc1syXSBfX3VudXNlZCkNCit7DQor
CXJldHVybiAwOw0KK30NCisNCitpbnQgcGlwZShpbnQgcGlwZWZkWzJdIF9fdW51c2VkKQ0KK3sN
CisJcmV0dXJuIDA7DQorfQ0KZGlmZiAtLWdpdCBhL3Byb2Nlc3MuYyBiL3Byb2Nlc3MuYw0KaW5k
ZXggMDk2YTEyYi4uYzRlMzY2NCAxMDA2NDQNCi0tLSBhL3Byb2Nlc3MuYw0KKysrIGIvcHJvY2Vz
cy5jDQpAQCAtMzcsNiArMzcsOSBAQA0KIA0KICNpbmNsdWRlIDx0aW1lLmg+DQogI2luY2x1ZGUg
PGVycm5vLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNp
bmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4NCiAjdW5kZWYgZXJybm8NCiBleHRlcm4gaW50IGVycm5v
Ow0KIA0KQEAgLTQ2LDYgKzQ5LDI2IEBAIGludCBleGVjdmUoY2hhciAqbmFtZSBfX3VudXNlZCwg
Y2hhciAqKmFyZ3YgX191bnVzZWQsIGNoYXIgKiplbnYgX191bnVzZWQpDQogCXJldHVybiAtMTsN
CiB9DQogDQoraW50IGV4ZWN2KGNvbnN0IGNoYXIgKnBhdGggX191bnVzZWQsIGNoYXIgKmNvbnN0
IGFyZ3ZbXSBfX3VudXNlZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitpbnQgc3lzdGVtKGNv
bnN0IGNoYXIgKmNvbW1hbmQgX191bnVzZWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorRklM
RSAqcG9wZW4oY29uc3QgY2hhciAqY29tbWFuZCBfX3VudXNlZCwgY29uc3QgY2hhciAqdHlwZSBf
X3VudXNlZCkNCit7DQorCXJldHVybiBOVUxMOw0KK30NCisNCitpbnQgcGNsb3NlKEZJTEUgKnN0
cmVhbSBfX3VudXNlZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCiBpbnQgZm9yayh2b2lkKQ0K
IHsNCiAJZXJybm8gPSBFQUdBSU47DQpAQCAtNTcsNiArODAsMTEgQEAgaW50IGdldHBpZCh2b2lk
KQ0KIAlyZXR1cm4gMTsNCiB9DQogDQorcGlkX3QgZ2V0cHBpZCh2b2lkKQ0KK3sNCisJcmV0dXJu
IDA7DQorfQ0KKw0KIGludCBraWxsKGludCBwaWQgX191bnVzZWQsIGludCBzaWcgX191bnVzZWQp
DQogew0KIAllcnJubyA9IEVJTlZBTDsNCkBAIC03MywzICsxMDEsNjggQEAgaW50IHdhaXQoaW50
ICpzdGF0dXMgX191bnVzZWQpDQogCWVycm5vID0gRUNISUxEOw0KIAlyZXR1cm4gLTE7DQogfQ0K
Kw0KK2ludCBzZXRwZ3JwKHZvaWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorDQoraW50IGtp
bGxwZyhpbnQgcGdycCBfX3VudXNlZCwgaW50IHNpZyBfX3VudXNlZCkNCit7DQorCXJldHVybiAw
Ow0KK30NCisNCisNCitwaWRfdCB3YWl0MyhpbnQgKndzdGF0dXMgX191bnVzZWQsIGludCBvcHRp
b25zIF9fdW51c2VkLA0KKwkJc3RydWN0IHJ1c2FnZSAqcnVzYWdlIF9fdW51c2VkKQ0KK3sNCisJ
cmV0dXJuIDA7DQorfQ0KKw0KK3BpZF90IHdhaXQ0KHBpZF90IHBpZCBfX3VudXNlZCwgaW50ICp3
c3RhdHVzIF9fdW51c2VkLCBpbnQgb3B0aW9ucyBfX3VudXNlZCwNCisJCXN0cnVjdCBydXNhZ2Ug
KnJ1c2FnZSBfX3VudXNlZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitwaWRfdCB3YWl0cGlk
KHBpZF90IHBpZCBfX3VudXNlZCwgaW50ICp3c3RhdHVzIF9fdW51c2VkLCBpbnQgb3B0aW9ucyBf
X3VudXNlZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitwaWRfdCBzZXRzaWQodm9pZCkNCit7
DQorCXJldHVybiAwOw0KK30NCisNCitwaWRfdCBnZXRzaWQocGlkX3QgcGlkIF9fdW51c2VkKQ0K
K3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBzZXRwZ2lkKHBpZF90IHBpZCBfX3VudXNlZCwg
cGlkX3QgcGdpZCBfX3VudXNlZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitwaWRfdCBnZXRw
Z2lkKHBpZF90IHBpZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCisNCitpbnQgdGNzZXRwZ3Jw
KGludCBmZCBfX3VudXNlZCwgcGlkX3QgcGdycCBfX3VudXNlZCkNCit7DQorCXJldHVybiAwOw0K
K30NCisNCitwaWRfdCB0Y2dldHBncnAoaW50IGZkIF9fdW51c2VkKQ0KK3sNCisJcmV0dXJuIDA7
DQorfQ0KKw0KK2ludCBuaWNlKGludCBpbmMgX191bnVzZWQpDQorew0KKwlyZXR1cm4gMDsNCit9
DQpkaWZmIC0tZ2l0IGEvcHR5LmMgYi9wdHkuYw0KaW5kZXggNDZiNTU0YS4uMDA5Njg4ZCAxMDA2
NDQNCi0tLSBhL3B0eS5jDQorKysgYi9wdHkuYw0KQEAgLTM2LDYgKzM2LDcgQEANCiAgKi8NCiAN
CiAjaW5jbHVkZSA8cHR5Lmg+DQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KICNpbmNsdWRlIDx1
ay9lc3NlbnRpYWxzLmg+DQogDQogaW50IG9wZW5wdHkoaW50ICphbWFzdGVyIF9fdW51c2VkLCBp
bnQgKmFzbGF2ZSBfX3VudXNlZCwgY2hhciAqbmFtZSBfX3VudXNlZCwNCkBAIC00NCwzICs0NSwx
MCBAQCBpbnQgb3BlbnB0eShpbnQgKmFtYXN0ZXIgX191bnVzZWQsIGludCAqYXNsYXZlIF9fdW51
c2VkLCBjaGFyICpuYW1lIF9fdW51c2VkLA0KIHsNCiAJcmV0dXJuIDA7DQogfQ0KKw0KK3BpZF90
IGZvcmtwdHkoaW50ICphbWFzdGVyIF9fdW51c2VkLCBjaGFyICpuYW1lIF9fdW51c2VkLA0KKwkJ
Y29uc3Qgc3RydWN0IHRlcm1pb3MgKnRlcm1wIF9fdW51c2VkLA0KKwkJY29uc3Qgc3RydWN0IHdp
bnNpemUgKndpbnAgX191bnVzZWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEv
cmVzb3VyY2UuYyBiL3Jlc291cmNlLmMNCmluZGV4IGFlMTEyZjIuLjMwZDAwMjggMTAwNjQ0DQot
LS0gYS9yZXNvdXJjZS5jDQorKysgYi9yZXNvdXJjZS5jDQpAQCAtNDYsMyArNDYsOCBAQCBpbnQg
c2V0cmxpbWl0KGludCByZXNvdXJjZSBfX3VudXNlZCwgY29uc3Qgc3RydWN0IHJsaW1pdCAqcmxp
bSBfX3VudXNlZCkNCiB7DQogCXJldHVybiAwOw0KIH0NCisNCitpbnQgZ2V0cnVzYWdlKGludCB3
aG8gX191bnVzZWQsIHN0cnVjdCBydXNhZ2UgKnVzYWdlIF9fdW51c2VkKQ0KK3sNCisJcmV0dXJu
IDA7DQorfQ0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 16:13:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 16:13: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 1hXT74-0005Kh-C7; Sun, 02 Jun 2019 16:13: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXT72-0005K1-Mo
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 16:13:36 +0000
X-Inumbo-ID: 5f6c1f76-8551-11e9-9333-ffe55753255a
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.47]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5f6c1f76-8551-11e9-9333-ffe55753255a;
 Sun, 02 Jun 2019 16:13:35 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4988.eurprd01.prod.exchangelabs.com (20.177.210.80) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.19; Sun, 2 Jun
 2019 16:13:17 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 16:13:17 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH v2 5/5] Implement isatty
Thread-Index: AQHVGV4WX41wkcfoMUGRMIROqaNSWw==
Date: Sun, 2 Jun 2019 16:13:17 +0000
Message-ID: <20190602161304.19049-6-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0190.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 90a24114-045c-44d5-af3f-08d6e77538f8
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4988; 
x-ms-traffictypediagnostic: PR1PR01MB4988:
x-microsoft-antispam-prvs: <PR1PR01MB498821BB91688E28FB12A209A61B0@PR1PR01MB4988.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:972;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(39850400004)(346002)(396003)(366004)(136003)(199004)(189003)(6916009)(2906002)(3846002)(50226002)(786003)(186003)(316002)(99286004)(6512007)(6116002)(5640700003)(508600001)(446003)(2616005)(476003)(486006)(26005)(54906003)(14454004)(68736007)(256004)(6486002)(52116002)(11346002)(102836004)(85202003)(5660300002)(6436002)(2351001)(8676002)(53936002)(386003)(71190400001)(74482002)(6506007)(71200400001)(66476007)(66556008)(64756008)(66446008)(4744005)(66946007)(73956011)(86362001)(7736002)(305945005)(1076003)(25786009)(85182001)(76176011)(66066001)(8936002)(81156014)(81166006)(2501003)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4988;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: IBaqBz4n4LopLqBEiGXAVEH2G9kHf34ai5YJavndiC9X61n1YZMzOeUDO6v5pGcqdpqo7feif4s6+d24npGcYJ/H7k6QbGYiGD/nBi1FHRBxZ8oX/0cSlWUE2Z2tI1I7s/tRkIxJmmTOp9NREvnhhsigxIY4TZnAWnC3BL1wIgfyL6p9kMpsEw6vDOLG7SafIAXl5h9rQqoT3TMHnnbMLO24b36vzQDAJcD6c4m9XvFRK6te/xsh7Mb8WOXQIbgVwemB5yDvAmrNy4/EwSbNl7mOip3RXiQuVwJBKu9hE+OuA3Cj1WtitFAg1nxYSufP/6PIJecLPUWZcP1qByj4ww/5HddlZ9geRx826cpURqXhy/mshO+LsX9LBIh7DFuPhWstaAhnFyoPXqz2P0OhRXa3NBfcTEIRvV2UQPdzEJg=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 90a24114-045c-44d5-af3f-08d6e77538f8
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 16:13:17.6183 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4988
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 5/5] Implement isatty
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogY29uc29sZS5jIHwgMTYgKysrKysrKysrKysrKystLQ0KIDEg
ZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0t
Z2l0IGEvY29uc29sZS5jIGIvY29uc29sZS5jDQppbmRleCA3MDE2OTU3Li5iZjljZmU4IDEwMDY0
NA0KLS0tIGEvY29uc29sZS5jDQorKysgYi9jb25zb2xlLmMNCkBAIC0zNSwxMSArMzUsMjMgQEAN
CiAgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkg
V0FZLg0KICAqLw0KIA0KKyNpbmNsdWRlIDxlcnJuby5oPg0KKyNpbmNsdWRlIDxzeXMvc3RhdC5o
Pg0KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+DQogDQotaW50IGlzYXR0eShpbnQgZmlsZSBf
X3VudXNlZCkNCitpbnQgaXNhdHR5KGludCBmZCkNCiB7DQotCXJldHVybiAxOw0KKwlzdHJ1Y3Qg
c3RhdCBidWY7DQorDQorCWlmIChmc3RhdChmZCwgJmJ1ZikgPCAwKSB7DQorCQllcnJubyA9IEVC
QURGOw0KKwkJcmV0dXJuIDA7DQorCX0NCisJaWYgKFNfSVNDSFIoYnVmLnN0X21vZGUpKQ0KKwkJ
cmV0dXJuIDE7DQorDQorCWVycm5vID0gRU5PVFRZOw0KKwlyZXR1cm4gMDsNCiB9DQogDQogY2hh
ciAqdHR5bmFtZShpbnQgZmQgX191bnVzZWQpDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 18:05:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 18:05: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 1hXUr3-0005rj-Rf; Sun, 02 Jun 2019 18:05:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXUr2-0005rb-OU
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 18:05:12 +0000
X-Inumbo-ID: f5e9476e-8560-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f5e9476e-8560-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 18:05:10 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id p11so4950395wre.7
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 11:05:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=Q3XnaZDV3Z5BZCmcLSJPccR84hum20RD8UX02lErLTI=;
 b=PW/MhmSTsd4PYEdzo2qiNT6Bc9u+QpZQCxIygUj2HobW0/i3GKoao+aGGYxdsZ/1Rl
 NFyrHVCkI5YaM+t3rUjw7E4jQ49xqiKFFhpj8C7Ar/GXazs4qcaxP28CnX7aP/wD80Yd
 /BnpnsfFlUMH/5NlWc3ZdOPxuUqFGzMR+jsow4wR6PAck2aVtfxbvxpv9EM4CqXSjLzQ
 J8irwqLR8ZrnenSKok8fCPdlbMrwEXRfoTyVC+L6uVbNyJWmVUf22x6zA87FfdqFGXEI
 CN9cD2kK0tUVfQLVZR0UmVeHtxB8yriHHl5x9eQifYb/TyWfM8ZmBKL+XxCJtVKHXynR
 eADg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=Q3XnaZDV3Z5BZCmcLSJPccR84hum20RD8UX02lErLTI=;
 b=ljwuiEF0oRP32YzztDyFXNwOyc7N7lYUVKCI9VtnzTOWwUUJ3EReaLqRS3FVXyVtkH
 wfkKTcPt5fymGnfMtXnT4i+mo1tkDkUAE0ng4AlkSFG2LR2kPtbak1BT7mScdhiBwRPA
 8d6Z4VDWUZSMqbaCG2NYoID5zxb8gbHlWeR9vyn0uhXVNizX4DKHLxYS8e3zHPjmCx4B
 RucHZ+ObxQZsfkbruZCTdiAlB+8r0camFJwEiiJcV1tHfJ6RPenkNIowwp8WX1xf/TKk
 xaRcfJvKVEHC6kKVrAdtCMmV0BSQCX3DzHiVzUO2bbTaB/56gJJvC/ZGJ60U/8WydfEb
 aAbQ==
X-Gm-Message-State: APjAAAUmmM3M0IZVI07zwzdbc22pqhzYjLC45uHXZvuyBjfNAu+II351
 JoTS9PGhhMARnO2G5HfWiXo=
X-Google-Smtp-Source: APXvYqwWJbjjEEGY3GByAgMm50lB4svNjb0VCP+m66kAP1b//Abc/ev/Pf3/Jizup4OvDhlk6usV2g==
X-Received: by 2002:adf:de8b:: with SMTP id w11mr13653023wrl.134.1559498709645; 
 Sun, 02 Jun 2019 11:05:09 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id t13sm18067540wra.81.2019.06.02.11.05.07
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 11:05:08 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602161304.19049-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <183682f5-0f21-34e8-690a-8c4079d3e8d4@gmail.com>
Date: Sun, 2 Jun 2019 21:05:07 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602161304.19049-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 1/5] Add sysexits.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" <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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzIv
MTkgNzoxMyBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOgo+IFRoZSBoZWFk
ZXIgd2FzIHRha2VuIGZyb20gbmV3bGliYywgcmVsZWFzZSB2ZXJzaW9uIDIuNS4wLjIwMTcwOTIy
Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFk
b2l1QHN0dWQuYWNzLnVwYi5ybz4KPiAtLS0KPiAgaW5jbHVkZS9zeXNleGl0cy5oIHwgMTE0ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hh
bmdlZCwgMTE0IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3lz
ZXhpdHMuaAo+IAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3N5c2V4aXRzLmggYi9pbmNsdWRlL3N5
c2V4aXRzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjM3MjQ2YjYK
PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9zeXNleGl0cy5oCj4gQEAgLTAsMCArMSwx
MTQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAxOTg3LCAxOTkzCj4gKyAqCVRoZSBSZWdl
bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVk
Lgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4g
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwo+ICsgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMgc29mdHdhcmUKPiArICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJF
R0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICoKPiArICoJQCgjKXN5c2V4aXRzLmgJOC4xIChC
ZXJrZWxleSkgNi8yLzkzCj4gKyAqLwo+ICsKPiArI2lmbmRlZglfU1lTRVhJVFNfSAo+ICsjZGVm
aW5lCV9TWVNFWElUU19IIDEKPiArCj4gKy8qCj4gKyAqICBTWVNFWElUUy5IIC0tIEV4aXQgc3Rh
dHVzIGNvZGVzIGZvciBzeXN0ZW0gcHJvZ3JhbXMuCj4gKyAqCj4gKyAqCVRoaXMgaW5jbHVkZSBm
aWxlIGF0dGVtcHRzIHRvIGNhdGVnb3JpemUgcG9zc2libGUgZXJyb3IKPiArICoJZXhpdCBzdGF0
dXNlcyBmb3Igc3lzdGVtIHByb2dyYW1zLCBub3RhYmx5IGRlbGl2ZXJtYWlsCj4gKyAqCWFuZCB0
aGUgQmVya2VsZXkgbmV0d29yay4KPiArICoKPiArICoJRXJyb3IgbnVtYmVycyBiZWdpbiBhdCBF
WF9fQkFTRSB0byByZWR1Y2UgdGhlIHBvc3NpYmlsaXR5IG9mCj4gKyAqCWNsYXNoaW5nIHdpdGgg
b3RoZXIgZXhpdCBzdGF0dXNlcyB0aGF0IHJhbmRvbSBwcm9ncmFtcyBtYXkKPiArICoJYWxyZWFk
eSByZXR1cm4uICBUaGUgbWVhbmluZyBvZiB0aGUgY29kZXMgaXMgYXBwcm94aW1hdGVseQo+ICsg
KglhcyBmb2xsb3dzOgo+ICsgKgo+ICsgKglFWF9VU0FHRSAtLSBUaGUgY29tbWFuZCB3YXMgdXNl
ZCBpbmNvcnJlY3RseSwgZS5nLiwgd2l0aAo+ICsgKgkJdGhlIHdyb25nIG51bWJlciBvZiBhcmd1
bWVudHMsIGEgYmFkIGZsYWcsIGEgYmFkCj4gKyAqCQlzeW50YXggaW4gYSBwYXJhbWV0ZXIsIG9y
IHdoYXRldmVyLgo+ICsgKglFWF9EQVRBRVJSIC0tIFRoZSBpbnB1dCBkYXRhIHdhcyBpbmNvcnJl
Y3QgaW4gc29tZSB3YXkuCj4gKyAqCQlUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHVzZXIn
cyBkYXRhICYgbm90Cj4gKyAqCQlzeXN0ZW0gZmlsZXMuCj4gKyAqCUVYX05PSU5QVVQgLS0gQW4g
aW5wdXQgZmlsZSAobm90IGEgc3lzdGVtIGZpbGUpIGRpZCBub3QKPiArICoJCWV4aXN0IG9yIHdh
cyBub3QgcmVhZGFibGUuICBUaGlzIGNvdWxkIGFsc28gaW5jbHVkZQo+ICsgKgkJZXJyb3JzIGxp
a2UgIk5vIG1lc3NhZ2UiIHRvIGEgbWFpbGVyIChpZiBpdCBjYXJlZAo+ICsgKgkJdG8gY2F0Y2gg
aXQpLgo+ICsgKglFWF9OT1VTRVIgLS0gVGhlIHVzZXIgc3BlY2lmaWVkIGRpZCBub3QgZXhpc3Qu
ICBUaGlzIG1pZ2h0Cj4gKyAqCQliZSB1c2VkIGZvciBtYWlsIGFkZHJlc3NlcyBvciByZW1vdGUg
bG9naW5zLgo+ICsgKglFWF9OT0hPU1QgLS0gVGhlIGhvc3Qgc3BlY2lmaWVkIGRpZCBub3QgZXhp
c3QuICBUaGlzIGlzIHVzZWQKPiArICoJCWluIG1haWwgYWRkcmVzc2VzIG9yIG5ldHdvcmsgcmVx
dWVzdHMuCj4gKyAqCUVYX1VOQVZBSUxBQkxFIC0tIEEgc2VydmljZSBpcyB1bmF2YWlsYWJsZS4g
IFRoaXMgY2FuIG9jY3VyCj4gKyAqCQlpZiBhIHN1cHBvcnQgcHJvZ3JhbSBvciBmaWxlIGRvZXMg
bm90IGV4aXN0LiAgVGhpcwo+ICsgKgkJY2FuIGFsc28gYmUgdXNlZCBhcyBhIGNhdGNoYWxsIG1l
c3NhZ2Ugd2hlbiBzb21ldGhpbmcKPiArICoJCXlvdSB3YW50ZWQgdG8gZG8gZG9lc24ndCB3b3Jr
LCBidXQgeW91IGRvbid0IGtub3cKPiArICoJCXdoeS4KPiArICoJRVhfU09GVFdBUkUgLS0gQW4g
aW50ZXJuYWwgc29mdHdhcmUgZXJyb3IgaGFzIGJlZW4gZGV0ZWN0ZWQuCj4gKyAqCQlUaGlzIHNo
b3VsZCBiZSBsaW1pdGVkIHRvIG5vbi1vcGVyYXRpbmcgc3lzdGVtIHJlbGF0ZWQKPiArICoJCWVy
cm9ycyBhcyBwb3NzaWJsZS4KPiArICoJRVhfT1NFUlIgLS0gQW4gb3BlcmF0aW5nIHN5c3RlbSBl
cnJvciBoYXMgYmVlbiBkZXRlY3RlZC4KPiArICoJCVRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNl
ZCBmb3Igc3VjaCB0aGluZ3MgYXMgImNhbm5vdAo+ICsgKgkJZm9yayIsICJjYW5ub3QgY3JlYXRl
IHBpcGUiLCBvciB0aGUgbGlrZS4gIEl0IGluY2x1ZGVzCj4gKyAqCQl0aGluZ3MgbGlrZSBnZXR1
aWQgcmV0dXJuaW5nIGEgdXNlciB0aGF0IGRvZXMgbm90Cj4gKyAqCQlleGlzdCBpbiB0aGUgcGFz
c3dkIGZpbGUuCj4gKyAqCUVYX09TRklMRSAtLSBTb21lIHN5c3RlbSBmaWxlIChlLmcuLCAvZXRj
L3Bhc3N3ZCwgL2V0Yy91dG1wLAo+ICsgKgkJZXRjLikgZG9lcyBub3QgZXhpc3QsIGNhbm5vdCBi
ZSBvcGVuZWQsIG9yIGhhcyBzb21lCj4gKyAqCQlzb3J0IG9mIGVycm9yIChlLmcuLCBzeW50YXgg
ZXJyb3IpLgo+ICsgKglFWF9DQU5UQ1JFQVQgLS0gQSAodXNlciBzcGVjaWZpZWQpIG91dHB1dCBm
aWxlIGNhbm5vdCBiZQo+ICsgKgkJY3JlYXRlZC4KPiArICoJRVhfSU9FUlIgLS0gQW4gZXJyb3Ig
b2NjdXJyZWQgd2hpbGUgZG9pbmcgSS9PIG9uIHNvbWUgZmlsZS4KPiArICoJRVhfVEVNUEZBSUwg
LS0gdGVtcG9yYXJ5IGZhaWx1cmUsIGluZGljYXRpbmcgc29tZXRoaW5nIHRoYXQKPiArICoJCWlz
IG5vdCByZWFsbHkgYW4gZXJyb3IuICBJbiBzZW5kbWFpbCwgdGhpcyBtZWFucwo+ICsgKgkJdGhh
dCBhIG1haWxlciAoZS5nLikgY291bGQgbm90IGNyZWF0ZSBhIGNvbm5lY3Rpb24sCj4gKyAqCQlh
bmQgdGhlIHJlcXVlc3Qgc2hvdWxkIGJlIHJlYXR0ZW1wdGVkIGxhdGVyLgo+ICsgKglFWF9QUk9U
T0NPTCAtLSB0aGUgcmVtb3RlIHN5c3RlbSByZXR1cm5lZCBzb21ldGhpbmcgdGhhdAo+ICsgKgkJ
d2FzICJub3QgcG9zc2libGUiIGR1cmluZyBhIHByb3RvY29sIGV4Y2hhbmdlLgo+ICsgKglFWF9O
T1BFUk0gLS0gWW91IGRpZCBub3QgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8KPiArICoJ
CXBlcmZvcm0gdGhlIG9wZXJhdGlvbi4gIFRoaXMgaXMgbm90IGludGVuZGVkIGZvcgo+ICsgKgkJ
ZmlsZSBzeXN0ZW0gcHJvYmxlbXMsIHdoaWNoIHNob3VsZCB1c2UgTk9JTlBVVCBvcgo+ICsgKgkJ
Q0FOVENSRUFULCBidXQgcmF0aGVyIGZvciBoaWdoZXIgbGV2ZWwgcGVybWlzc2lvbnMuCj4gKyAq
Lwo+ICsKPiArI2RlZmluZSBFWF9PSwkJMAkvKiBzdWNjZXNzZnVsIHRlcm1pbmF0aW9uICovCj4g
Kwo+ICsjZGVmaW5lIEVYX19CQVNFCTY0CS8qIGJhc2UgdmFsdWUgZm9yIGVycm9yIG1lc3NhZ2Vz
ICovCj4gKwo+ICsjZGVmaW5lIEVYX1VTQUdFCTY0CS8qIGNvbW1hbmQgbGluZSB1c2FnZSBlcnJv
ciAqLwo+ICsjZGVmaW5lIEVYX0RBVEFFUlIJNjUJLyogZGF0YSBmb3JtYXQgZXJyb3IgKi8KPiAr
I2RlZmluZSBFWF9OT0lOUFVUCTY2CS8qIGNhbm5vdCBvcGVuIGlucHV0ICovCj4gKyNkZWZpbmUg
RVhfTk9VU0VSCTY3CS8qIGFkZHJlc3NlZSB1bmtub3duICovCj4gKyNkZWZpbmUgRVhfTk9IT1NU
CTY4CS8qIGhvc3QgbmFtZSB1bmtub3duICovCj4gKyNkZWZpbmUgRVhfVU5BVkFJTEFCTEUJNjkJ
Lyogc2VydmljZSB1bmF2YWlsYWJsZSAqLwo+ICsjZGVmaW5lIEVYX1NPRlRXQVJFCTcwCS8qIGlu
dGVybmFsIHNvZnR3YXJlIGVycm9yICovCj4gKyNkZWZpbmUgRVhfT1NFUlIJNzEJLyogc3lzdGVt
IGVycm9yIChlLmcuLCBjYW4ndCBmb3JrKSAqLwo+ICsjZGVmaW5lIEVYX09TRklMRQk3MgkvKiBj
cml0aWNhbCBPUyBmaWxlIG1pc3NpbmcgKi8KPiArI2RlZmluZSBFWF9DQU5UQ1JFQVQJNzMJLyog
Y2FuJ3QgY3JlYXRlICh1c2VyKSBvdXRwdXQgZmlsZSAqLwo+ICsjZGVmaW5lIEVYX0lPRVJSCTc0
CS8qIGlucHV0L291dHB1dCBlcnJvciAqLwo+ICsjZGVmaW5lIEVYX1RFTVBGQUlMCTc1CS8qIHRl
bXAgZmFpbHVyZTsgdXNlciBpcyBpbnZpdGVkIHRvIHJldHJ5ICovCj4gKyNkZWZpbmUgRVhfUFJP
VE9DT0wJNzYJLyogcmVtb3RlIGVycm9yIGluIHByb3RvY29sICovCj4gKyNkZWZpbmUgRVhfTk9Q
RVJNCTc3CS8qIHBlcm1pc3Npb24gZGVuaWVkICovCj4gKyNkZWZpbmUgRVhfQ09ORklHCTc4CS8q
IGNvbmZpZ3VyYXRpb24gZXJyb3IgKi8KPiArCj4gKyNkZWZpbmUgRVhfX01BWAk3OAkvKiBtYXhp
bXVtIGxpc3RlZCB2YWx1ZSAqLwo+ICsKPiArI2VuZGlmIC8qIHN5c2V4aXRzLmggKi8KPiAKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 18:05:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 18:05: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 1hXUrK-0005so-Tt; Sun, 02 Jun 2019 18:05:30 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXUrJ-0005si-Fw
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 18:05:29 +0000
X-Inumbo-ID: 0009e82f-8561-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0009e82f-8561-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 18:05:27 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id x4so9799211wrt.6
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 11:05:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=HGVoiErGNqENYFKGfUPpAAf/ILpLJWWCdPDoqLiSYow=;
 b=aNal7yqTV1fR7aaajJl5hRKmWjutVgpYTS3eiQVzaUSTSTZwYQQoN8G4auSB3VvIQx
 0dixpoRsqntjsvt9tq+GLVm0zvfc6va28oP5ATq5LkJ7GZiCwtvRS8g2ua+yP839/Sq0
 7N/vsA33Gtiq0JBSgU6wA2Q8EC9FTIdOmLVy1Lwzi9Uc+e8GEBYikibJ36NrLF4zi8mp
 S4AeF4YQp8SCeAHsxLM6tasx0KLMmb15FUfKisgBQvUIrtzWh0VOe4Tc2+3QID0+NpIl
 LacdGFmtYtfw/N+V7P6hf88Ws0QkxirSdyn0y5xS94Gh0sm+5Kh0ipVksL8WbGzVGeow
 2khA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=HGVoiErGNqENYFKGfUPpAAf/ILpLJWWCdPDoqLiSYow=;
 b=HCzOlRq8Sv0tgtZqVPGkI1qFVOzqW+2XNgM29EmhSTlCDo2U3h/vZ3IlgKsotFaNg1
 gM5lVliHizbgz14cO76CJhcWBTLVkjCXsQWaysr4vPK+WEJ2NNwWbDvT7CTe7Ui1cDil
 pXYygv+6Q5Ky6e9WXvqMvuZtuPD3Igaaul+KyKvE0A8zXkAHQGEvtlbyC5onjwaTIKzP
 G2IjsCtw7vF8DkEfRN3+sFMuvAk+PqQMQXhQZKtrHkE/T9BFBmjNKxb/Rd58jpbZTi10
 YrOKPSFmmAwMeirWaNQNvE+X7sBpX42voPsoZS14FEKHd1DuhWNaUBE2813b/iJB11f8
 dfHg==
X-Gm-Message-State: APjAAAXYUG5cQYz1UVS7O7pec9jxIg9NIQlaETAuEq09grFhsdyR16hL
 nZmvKKAyDh9DE3o2D8Yg9yY=
X-Google-Smtp-Source: APXvYqyaGRPPR3ahU8Pb00TCFWPTj3YZgzOzoHCb4m9M560Hdt7kLqpi9f/1pMbQimvRh/ruzBkzwA==
X-Received: by 2002:adf:f3cc:: with SMTP id g12mr12909800wrp.149.1559498726724; 
 Sun, 02 Jun 2019 11:05:26 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id h23sm5104390wmb.25.2019.06.02.11.05.25
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 11:05:25 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602161304.19049-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <10b59cd7-71a4-f11a-f129-2a208a3a1ff4@gmail.com>
Date: Sun, 2 Jun 2019 21:05:25 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602161304.19049-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 2/5] Add device
 related 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@neclab.eu" <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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzIv
MTkgNzoxMyBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOgo+IFRoaXMgcGF0
Y2ggYWRkcyBhIG5ldyBmaWxlIGRldi5jIHdoaWNoIGNvbnRhaW5zIHN0dWJzIHJlbGF0ZWQgdG8g
ZGV2aWNlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5k
cmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIE1ha2VmaWxlLnVrIHwgIDEgKwo+
ICBkZXYuYyAgICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKQo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgZGV2LmMKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtl
ZmlsZS51awo+IGluZGV4IGY0OTI2NGUuLjQwZTBkYWUgMTAwNjQ0Cj4gLS0tIGEvTWFrZWZpbGUu
dWsKPiArKysgYi9NYWtlZmlsZS51awo+IEBAIC0xMTMsNiArMTEzLDcgQEAgTElCTkVXTElCR0xV
RV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL3Jlc291cmNlLmMKPiAgTElCTkVXTElCR0xV
RV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL3B0eS5jCj4gIExJQk5FV0xJQkdMVUVfU1JD
Uy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS90aW1lLmN8Z2x1ZQo+ICBMSUJORVdMSUJHTFVFX1NS
Q1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvbG9jYWxlLmMKPiArTElCTkVXTElCR0xVRV9TUkNT
LXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL2Rldi5jCj4gIAo+ICAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwo+ICAjIE5ld2xpYi9saWJjIGNvZGUgLS0gYXJnego+IGRpZmYgLS1naXQgYS9kZXYuYyBi
L2Rldi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4yMmYyMmQzCj4g
LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Rldi5jCj4gQEAgLTAsMCArMSw1MCBAQAo+ICsvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6
IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybwo+
ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2Yg
QnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiAr
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVy
IG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAq
Cj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+
ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1Qg
QkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgo+ICsKPiArdW5zaWduZWQgaW50IG1ham9yKGRldl90IGRldiBfX3Vu
dXNlZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3Vuc2lnbmVkIGludCBtaW5vcihk
ZXZfdCBkZXYgX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtkZXZfdCBt
YWtlZGV2KHVuc2lnbmVkIGludCBtYWogX191bnVzZWQsIHVuc2lnbmVkIGludCBtaW4gX191bnVz
ZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 18:05:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 18:05: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 1hXUrY-0005uH-Vw; Sun, 02 Jun 2019 18:05:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXUrX-0005u9-Oj
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 18:05:43 +0000
X-Inumbo-ID: 0892f4c7-8561-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0892f4c7-8561-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 18:05:42 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id n4so6738070wrs.3
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 11:05:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=WAdqKO78op0MchLNgvkgvpl4Ze2xKtkMoRVKi6dZny0=;
 b=rAdojmHFrXTOtC5SB2FEBjHVGUPbxcp9lH1Gl4peYmcJFLyXnnSMtpRZ3x2B67dxtw
 k/baQqJQjG+fnmVIrxJUuYoCZPJ+JjQ1SN4jpLuPoe6n13cuMO7UCu//SHpat1KoS7gO
 Dq41hYnD2/5nHbP+tVV1H21bQVwiRzJOlEr87swjNJGUMOoKyHaj1Yvlo5WUTPXhOP42
 1Pl9muO/xP3YlzLwen0NVaIZw0FDwb4jOqE44m8/aizEY3hTne/Wcscmd74xdIsFDl1l
 kh9WfGk0pMgwVB+pL9doNWTMqg8zhhQhdfqjEjF5lcCjPWUDmANw22UTiLmsmsAHPSa1
 uPDw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=WAdqKO78op0MchLNgvkgvpl4Ze2xKtkMoRVKi6dZny0=;
 b=LINOqb7FdvcstceAB+knWbLglgOaJA8Uly12K5bGB8HShCAL3ICPi58Z/ajnc88+uL
 YzJvXrVm/oup6Qe+Y+7XZyFq3yqNk1jUP/oO1EMigEsrwU2zV1gG6cFZw2sN9/gmsoC9
 5kzoi/0sJUdJMzsHJLEfp6hyOKmUdqCe9nmAdBvTFB7tCSwYRMAABQkMDUtz1ramp0pZ
 G0LSPyEAQogmu/mUMr7KyDeKVk5cF3lVibTxXgfQxC2ylDAo4uRqzDDQi1sK9E1DRoJw
 DbgPmoWKQuZFRy3j0ElceKB2Ibe8x58AXEzSxbQ7sl9uJu8sIiGLM0sm7wFTZ4YwRNsp
 pQ9w==
X-Gm-Message-State: APjAAAW0wXE9hGeJVNTSR+xv5c0wsy3JewBmnGtH+0w/hOCLvAfPmkCQ
 YTEmeV7cLRbck0czpBHviAo=
X-Google-Smtp-Source: APXvYqzxDZIzSiI0bP9Y3c8lksoC0uopp9JGBGwAQq70RU3yyPJVef1xIkGv/W704w4T3QvhNj1FHw==
X-Received: by 2002:a5d:68cd:: with SMTP id p13mr13615763wrw.0.1559498740971; 
 Sun, 02 Jun 2019 11:05:40 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id b5sm2206657wru.69.2019.06.02.11.05.39
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 11:05:40 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602161304.19049-4-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <72e95155-4f1a-1813-70c5-c5c12e015d4e@gmail.com>
Date: Sun, 2 Jun 2019 21:05:39 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602161304.19049-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 3/5] Add signal
 related 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@neclab.eu" <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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzIv
MTkgNzoxMyBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOgo+IFRoaXMgcGF0
Y2ggYWRkcyBhIG5ldyBmaWxlIHNpZ25hbC5jIHdoaWNoIGNvbnRhaW5zIHN0dWJzIHJlbGF0ZWQg
dG8gc2lnbmFscy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRf
YW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIE1ha2VmaWxlLnVrIHwgIDEg
Kwo+ICBzaWduYWwuYyAgICB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKQo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgc2lnbmFsLmMKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUu
dWsgYi9NYWtlZmlsZS51awo+IGluZGV4IDQwZTBkYWUuLjlkMWIyNzUgMTAwNjQ0Cj4gLS0tIGEv
TWFrZWZpbGUudWsKPiArKysgYi9NYWtlZmlsZS51awo+IEBAIC0xMTQsNiArMTE0LDcgQEAgTElC
TkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL3B0eS5jCj4gIExJQk5FV0xJ
QkdMVUVfU1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS90aW1lLmN8Z2x1ZQo+ICBMSUJORVdM
SUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvbG9jYWxlLmMKPiAgTElCTkVXTElC
R0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL2Rldi5jCj4gK0xJQk5FV0xJQkdMVUVf
U1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9zaWduYWwuYwo+ICAKPiAgIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPiAgIyBOZXdsaWIvbGliYyBjb2RlIC0tIGFyZ3oKPiBkaWZmIC0tZ2l0IGEv
c2lnbmFsLmMgYi9zaWduYWwuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MC4uNjgwYmNhZgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9zaWduYWwuYwo+IEBAIC0wLDAgKzEs
NTYgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsv
Kgo+ICsgKiBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBz
dHVkLmFjcy51cGIucm8KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5
IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiAr
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+ICsgKgo+ICsgKiBUSElT
IEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsg
Ki8KPiArCj4gKyNpbmNsdWRlIDxzaWduYWwuaD4KPiArCj4gK2ludCBzaWdhY3Rpb24oaW50IHNp
ZyBfX3VudXNlZCwgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqcmVzdHJpY3QgYWN0IF9fdW51c2Vk
LAo+ICsJICAgICAgc3RydWN0IHNpZ2FjdGlvbiAqcmVzdHJpY3Qgb2FjdCBfX3VudXNlZCkKPiAr
ewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3Vuc2lnbmVkIGludCBhbGFybSh1bnNpZ25lZCBp
bnQgc2Vjb25kcyBfX3VudXNlZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBw
YXVzZSh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IHNpZ2ludGVycnVw
dChpbnQgc2lnIF9fdW51c2VkLCBpbnQgZmxhZyBfX3VudXNlZCkKPiArewo+ICsJcmV0dXJuIDA7
Cj4gK30KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 18:05:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 18:05: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 1hXUrl-0005vX-2c; Sun, 02 Jun 2019 18:05:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXUrj-0005vO-R3
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 18:05:55 +0000
X-Inumbo-ID: 0fdfcb09-8561-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0fdfcb09-8561-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 18:05:54 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id d18so9796684wrs.5
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 11:05:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=zrYeD7WHfUUBdVAJxhEKSLkHnKQUV8TSr/dGt9To/aM=;
 b=b2k844xyWY5z5PMAqWUKeDDKK3mXffm5ZRewdc3ekLLGfP+WyPGVgpyOZjAB19wkSb
 kFuSy9Oaz19yCYRF+cYfTaROndG/xNm7il3KIw6fGS0zQUNuceSIVSyijmUwUmcqZp8X
 6vs46hNZ6YxsYUibBcoV60hOyVanjS36BGiPJ89CoRn8Ompv9wbBm0acr5pXQfHx78h6
 5Y6lYncIAw2AkJz0QC07UWX8g1akvxTEbc9K1qEOKrEuiZp5j0BrDnYtDsMXm0WVLquA
 rvFMT0qM05KK0tfpbEnVMmP8Yuxe2h3cim6Zc/V4W8/k2j1Lk1oiW4DPjUUFvjePbqsl
 +Krw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=zrYeD7WHfUUBdVAJxhEKSLkHnKQUV8TSr/dGt9To/aM=;
 b=FFzNBNHlz2HdhQeKikK4zmeMKYYYYYtGLdnTOjmKVvvqy6guttb4QvILHZm3OQBOU1
 PzM9q/2E3VSUB3V2vdl0oL/OZ0xiXkLPVfKh4Ug9VbN7lCxLWc4OdiifNQrzE3/UUUFN
 PsoPhd/mLfLUuzujuYi4Ggfoern89R2s+3BfsSo6goAhT9tGdQWGwXMleCDffKyy302q
 XpQxGlrfrQW0+CioJjTc9442sk2LehUtx5cqCtHh/Yh/o+4Zl3fVdFGFZBFthB2hhIvP
 H/dRB63bVyGE2ypehVhxpXB4/GT0sMeGx+7DrhhvdFvcUfA8kDfU6ILChZW9GInXvRCZ
 fwlQ==
X-Gm-Message-State: APjAAAVBgdLzLWQkrNGcz6jCf8Wp1fwGn3nxJ7nZ4VBO1IZjQV/KPQGi
 Q/oKzYdOCVYMOb6OzPCKaV8=
X-Google-Smtp-Source: APXvYqwS7bf/xMIdrtvohNH6ZpdaDfoQfSi9hFO27Ms8pRDK8PDq4lxMsQQ28+hKOkz3stLzXyB9wQ==
X-Received: by 2002:adf:9e4c:: with SMTP id v12mr13726075wre.312.1559498753259; 
 Sun, 02 Jun 2019 11:05:53 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id j123sm19954804wmb.32.2019.06.02.11.05.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 11:05:52 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602161304.19049-5-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <3647e248-e794-e917-4e2c-f012d69d1ab7@gmail.com>
Date: Sun, 2 Jun 2019 21:05:51 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602161304.19049-5-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 4/5] Add missing stubs
 needed by CPython2
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzIv
MTkgNzoxMyBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOgo+IFRoaXMgcGF0
Y2ggYWRkcyBhIG51bWJlciBvZiBzdHVicyBuZWVkZWQgYnkgQ1B5dGhvbjIgdG8gY29tcGlsZS4K
PiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9p
dUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIGNvbnNvbGUuYyAgfCAxMCArKysrKysKPiAgZmls
ZS5jICAgICB8IDIzICsrKysrKysrKysrKysrCj4gIHByb2Nlc3MuYyAgfCA5MyArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgcHR5LmMgICAg
ICB8ICA4ICsrKysrCj4gIHJlc291cmNlLmMgfCAgNSArKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAx
MzkgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9jb25zb2xlLmMgYi9jb25zb2xlLmMK
PiBpbmRleCA0ZmQzM2NkLi43MDE2OTU3IDEwMDY0NAo+IC0tLSBhL2NvbnNvbGUuYwo+ICsrKyBi
L2NvbnNvbGUuYwo+IEBAIC00MSwzICs0MSwxMyBAQCBpbnQgaXNhdHR5KGludCBmaWxlIF9fdW51
c2VkKQo+ICB7Cj4gIAlyZXR1cm4gMTsKPiAgfQo+ICsKPiArY2hhciAqdHR5bmFtZShpbnQgZmQg
X191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtjaGFyICpjdGVybWlkKGNo
YXIgKnMgX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2Zp
bGUuYyBiL2ZpbGUuYwo+IGluZGV4IGFiMWNkYmUuLjNmZGY5OWEgMTAwNjQ0Cj4gLS0tIGEvZmls
ZS5jCj4gKysrIGIvZmlsZS5jCj4gQEAgLTk0LDMgKzk0LDI2IEBAIGludCBzZWxlY3QoaW50IG5m
ZHMsIGZkX3NldCAqcmVhZGZkcyBfX3VudXNlZCwgZmRfc2V0ICp3cml0ZWZkcyBfX3VudXNlZCwK
PiAgCXJldHVybiAtMTsKPiAgfQo+ICAjZW5kaWYgLyogIUNPTkZJR19MV0lQX1NPQ0tFVCAqLwo+
ICsKPiAraW50IGZjaG93bihpbnQgZmQgX191bnVzZWQsIHVpZF90IG93bmVyIF9fdW51c2VkLCBn
aWRfdCBncm91cCBfX3VudXNlZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBs
Y2hvd24oY29uc3QgY2hhciAqcGF0aG5hbWUgX191bnVzZWQsIHVpZF90IG93bmVyIF9fdW51c2Vk
LAo+ICsJCWdpZF90IGdyb3VwIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK
PiArCj4gK2ludCB1dGltZXMoY29uc3QgY2hhciAqZmlsZW5hbWUgX191bnVzZWQsCj4gKwkJY29u
c3Qgc3RydWN0IHRpbWV2YWwgdGltZXNbMl0gX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+
ICt9Cj4gKwo+ICtpbnQgcGlwZShpbnQgcGlwZWZkWzJdIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1
cm4gMDsKPiArfQo+IGRpZmYgLS1naXQgYS9wcm9jZXNzLmMgYi9wcm9jZXNzLmMKPiBpbmRleCAw
OTZhMTJiLi5jNGUzNjY0IDEwMDY0NAo+IC0tLSBhL3Byb2Nlc3MuYwo+ICsrKyBiL3Byb2Nlc3Mu
Ywo+IEBAIC0zNyw2ICszNyw5IEBACj4gIAo+ICAjaW5jbHVkZSA8dGltZS5oPgo+ICAjaW5jbHVk
ZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3RkaW8uaD4K
PiArI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgo+ICAjdW5kZWYgZXJybm8KPiAgZXh0ZXJuIGlu
dCBlcnJubzsKPiAgCj4gQEAgLTQ2LDYgKzQ5LDI2IEBAIGludCBleGVjdmUoY2hhciAqbmFtZSBf
X3VudXNlZCwgY2hhciAqKmFyZ3YgX191bnVzZWQsIGNoYXIgKiplbnYgX191bnVzZWQpCj4gIAly
ZXR1cm4gLTE7Cj4gIH0KPiAgCj4gK2ludCBleGVjdihjb25zdCBjaGFyICpwYXRoIF9fdW51c2Vk
LCBjaGFyICpjb25zdCBhcmd2W10gX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4g
Kwo+ICtpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKmNvbW1hbmQgX191bnVzZWQpCj4gK3sKPiArCXJl
dHVybiAwOwo+ICt9Cj4gKwo+ICtGSUxFICpwb3Blbihjb25zdCBjaGFyICpjb21tYW5kIF9fdW51
c2VkLCBjb25zdCBjaGFyICp0eXBlIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiAr
fQo+ICsKPiAraW50IHBjbG9zZShGSUxFICpzdHJlYW0gX191bnVzZWQpCj4gK3sKPiArCXJldHVy
biAwOwo+ICt9Cj4gKwo+ICBpbnQgZm9yayh2b2lkKQo+ICB7Cj4gIAllcnJubyA9IEVBR0FJTjsK
PiBAQCAtNTcsNiArODAsMTEgQEAgaW50IGdldHBpZCh2b2lkKQo+ICAJcmV0dXJuIDE7Cj4gIH0K
PiAgCj4gK3BpZF90IGdldHBwaWQodm9pZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g
IGludCBraWxsKGludCBwaWQgX191bnVzZWQsIGludCBzaWcgX191bnVzZWQpCj4gIHsKPiAgCWVy
cm5vID0gRUlOVkFMOwo+IEBAIC03MywzICsxMDEsNjggQEAgaW50IHdhaXQoaW50ICpzdGF0dXMg
X191bnVzZWQpCj4gIAllcnJubyA9IEVDSElMRDsKPiAgCXJldHVybiAtMTsKPiAgfQo+ICsKPiAr
aW50IHNldHBncnAodm9pZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKwo+ICtpbnQg
a2lsbHBnKGludCBwZ3JwIF9fdW51c2VkLCBpbnQgc2lnIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1
cm4gMDsKPiArfQo+ICsKPiArCj4gK3BpZF90IHdhaXQzKGludCAqd3N0YXR1cyBfX3VudXNlZCwg
aW50IG9wdGlvbnMgX191bnVzZWQsCj4gKwkJc3RydWN0IHJ1c2FnZSAqcnVzYWdlIF9fdW51c2Vk
KQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArcGlkX3Qgd2FpdDQocGlkX3QgcGlkIF9f
dW51c2VkLCBpbnQgKndzdGF0dXMgX191bnVzZWQsIGludCBvcHRpb25zIF9fdW51c2VkLAo+ICsJ
CXN0cnVjdCBydXNhZ2UgKnJ1c2FnZSBfX3VudXNlZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30K
PiArCj4gK3BpZF90IHdhaXRwaWQocGlkX3QgcGlkIF9fdW51c2VkLCBpbnQgKndzdGF0dXMgX191
bnVzZWQsIGludCBvcHRpb25zIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK
PiArcGlkX3Qgc2V0c2lkKHZvaWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtwaWRf
dCBnZXRzaWQocGlkX3QgcGlkIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK
PiAraW50IHNldHBnaWQocGlkX3QgcGlkIF9fdW51c2VkLCBwaWRfdCBwZ2lkIF9fdW51c2VkKQo+
ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArcGlkX3QgZ2V0cGdpZChwaWRfdCBwaWQpCj4g
K3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsKPiAraW50IHRjc2V0cGdycChpbnQgZmQgX191
bnVzZWQsIHBpZF90IHBncnAgX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+
ICtwaWRfdCB0Y2dldHBncnAoaW50IGZkIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiAr
fQo+ICsKPiAraW50IG5pY2UoaW50IGluYyBfX3VudXNlZCkKPiArewo+ICsJcmV0dXJuIDA7Cj4g
K30KPiBkaWZmIC0tZ2l0IGEvcHR5LmMgYi9wdHkuYwo+IGluZGV4IDQ2YjU1NGEuLjAwOTY4OGQg
MTAwNjQ0Cj4gLS0tIGEvcHR5LmMKPiArKysgYi9wdHkuYwo+IEBAIC0zNiw2ICszNiw3IEBACj4g
ICAqLwo+ICAKPiAgI2luY2x1ZGUgPHB0eS5oPgo+ICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cj4g
ICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gIAo+ICBpbnQgb3BlbnB0eShpbnQgKmFtYXN0
ZXIgX191bnVzZWQsIGludCAqYXNsYXZlIF9fdW51c2VkLCBjaGFyICpuYW1lIF9fdW51c2VkLAo+
IEBAIC00NCwzICs0NSwxMCBAQCBpbnQgb3BlbnB0eShpbnQgKmFtYXN0ZXIgX191bnVzZWQsIGlu
dCAqYXNsYXZlIF9fdW51c2VkLCBjaGFyICpuYW1lIF9fdW51c2VkLAo+ICB7Cj4gIAlyZXR1cm4g
MDsKPiAgfQo+ICsKPiArcGlkX3QgZm9ya3B0eShpbnQgKmFtYXN0ZXIgX191bnVzZWQsIGNoYXIg
Km5hbWUgX191bnVzZWQsCj4gKwkJY29uc3Qgc3RydWN0IHRlcm1pb3MgKnRlcm1wIF9fdW51c2Vk
LAo+ICsJCWNvbnN0IHN0cnVjdCB3aW5zaXplICp3aW5wIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1
cm4gMDsKPiArfQo+IGRpZmYgLS1naXQgYS9yZXNvdXJjZS5jIGIvcmVzb3VyY2UuYwo+IGluZGV4
IGFlMTEyZjIuLjMwZDAwMjggMTAwNjQ0Cj4gLS0tIGEvcmVzb3VyY2UuYwo+ICsrKyBiL3Jlc291
cmNlLmMKPiBAQCAtNDYsMyArNDYsOCBAQCBpbnQgc2V0cmxpbWl0KGludCByZXNvdXJjZSBfX3Vu
dXNlZCwgY29uc3Qgc3RydWN0IHJsaW1pdCAqcmxpbSBfX3VudXNlZCkKPiAgewo+ICAJcmV0dXJu
IDA7Cj4gIH0KPiArCj4gK2ludCBnZXRydXNhZ2UoaW50IHdobyBfX3VudXNlZCwgc3RydWN0IHJ1
c2FnZSAqdXNhZ2UgX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 18:06:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 18:06: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 1hXUs6-0005x9-4q; Sun, 02 Jun 2019 18:06:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x5Zt=UB=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXUs4-0005x1-Dk
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 18:06:16 +0000
X-Inumbo-ID: 1c8676a3-8561-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1c8676a3-8561-11e9-8980-bc764e045a96;
 Sun, 02 Jun 2019 18:06:15 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id d17so1312793wmb.3
 for <minios-devel@lists.xen.org>; Sun, 02 Jun 2019 11:06:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=1W4FiOdkbT2r6S/lNbjLOhqb+CVCcIhOXxW/rkb5rR8=;
 b=nD4uNnYrtZCfD2NOphWUFKC2dpkHLp/bepLrBDztGogTcTv/oaFEI/bl4zp9i1pwLM
 wvehvKAzXMQg3zYEoGKBXJ/9bOuZjzUjis6IPR3ZsIcxR9qxWImdvbuGp2YknpObLvBb
 Uhv3ot3F7q9Cp+K+DkZ33bNFypznWprgxJpBeLK8bzoW/+CAz9tKSP1/d4IhRAIpAFwP
 0wIlJqVuH81t2DDflgv4I/1TbSabti2tDiQ4k3fAPXcNsXBEZtj8yA1h0XX6yRQd9wvK
 vQyS+Dh9KgJmgw4U3d5CWp4X5LMlqjLDG4vFSnkaggdS91TqY9gmVzpGIf75RvvTHw3F
 GkWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=1W4FiOdkbT2r6S/lNbjLOhqb+CVCcIhOXxW/rkb5rR8=;
 b=WzTUUfcKATpX09AeFbMlJUI2dF5jakos8tcxk9Vnsv110vHswKiyKqCgF1lXpTn8d9
 460lHAZZz6U7swryspt9ozXI+9Toht7f29oQCfVZnVHlJuzm2PEFOuiJBBjn8W7uK/XO
 bmS8ktKI9lxhMMWQUqW+9wxvsV86kq6rO86EBj+29G5bk7V5otuBCWYVE2OFzKJu5cRq
 NI4gN/VFhf/0sEjCK6uhWpbNqEcjAQxgtcmGjAXfgsTNjLCJmdDFcZBYF/YTt7iFvU8l
 KInLlLQ0h7McwFlCR3ohRip65JoEjDuP+QLCeoycBFWoDz3Tn84dUr1Gd8lU4KcnZ/za
 PmWg==
X-Gm-Message-State: APjAAAVIkuLWNH2ouoxLbraajKHIMRP4hzs4nNZTekcg5QeFm5VZpWNb
 QVUCR7ZWDCPGtZPNyWpmEPaPo641
X-Google-Smtp-Source: APXvYqzj9Hlv99rq/ROv9re0Tf1UTN7GPpPZwLXSCUMeGxllKGWZ0tYTNWIJuv5kKY1jMdU8ynjvmw==
X-Received: by 2002:a1c:7e08:: with SMTP id z8mr11339596wmc.36.1559498774483; 
 Sun, 02 Jun 2019 11:06:14 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id k13sm8180462wmj.10.2019.06.02.11.06.13
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 02 Jun 2019 11:06:13 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190602161304.19049-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602161304.19049-6-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <0678d038-5a6c-ce02-1d8c-98935daaacb1@gmail.com>
Date: Sun, 2 Jun 2019 21:06:12 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190602161304.19049-6-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH v2 5/5] Implement isatty
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzIv
MTkgNzoxMyBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOgo+IFNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KPiAtLS0KPiAgY29uc29sZS5jIHwgMTYgKysrKysrKysrKysrKystLQo+ICAxIGZpbGUg
Y2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0
IGEvY29uc29sZS5jIGIvY29uc29sZS5jCj4gaW5kZXggNzAxNjk1Ny4uYmY5Y2ZlOCAxMDA2NDQK
PiAtLS0gYS9jb25zb2xlLmMKPiArKysgYi9jb25zb2xlLmMKPiBAQCAtMzUsMTEgKzM1LDIzIEBA
Cj4gICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuCj4gICAqLwo+ICAKPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgo+ICAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICAKPiAtaW50IGlzYXR0eShp
bnQgZmlsZSBfX3VudXNlZCkKPiAraW50IGlzYXR0eShpbnQgZmQpCj4gIHsKPiAtCXJldHVybiAx
Owo+ICsJc3RydWN0IHN0YXQgYnVmOwo+ICsKPiArCWlmIChmc3RhdChmZCwgJmJ1ZikgPCAwKSB7
Cj4gKwkJZXJybm8gPSBFQkFERjsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCWlmIChTX0lTQ0hS
KGJ1Zi5zdF9tb2RlKSkKPiArCQlyZXR1cm4gMTsKPiArCj4gKwllcnJubyA9IEVOT1RUWTsKPiAr
CXJldHVybiAwOwo+ICB9Cj4gIAo+ICBjaGFyICp0dHluYW1lKGludCBmZCBfX3VudXNlZCkKPiAK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 22:14:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 22:14: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 1hXYkh-0001G3-JW; Sun, 02 Jun 2019 22:14: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXYkg-0001Ft-1W
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 22:14:54 +0000
X-Inumbo-ID: d55ad146-8583-11e9-9d1b-df3424e4df14
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.88]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d55ad146-8583-11e9-9d1b-df3424e4df14;
 Sun, 02 Jun 2019 22:14:48 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4970.eurprd01.prod.exchangelabs.com (20.177.209.202) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.22; Sun, 2 Jun
 2019 22:14:46 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 22:14:46 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 0/2] Introduce Intel
 Intrinsics on Unikraft
Thread-Index: AQHVGZCWh+9ztynk/EO2DDsbgDKLEw==
Date: Sun, 2 Jun 2019 22:14:46 +0000
Message-ID: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0263.eurprd08.prod.outlook.com
 (2603:10a6:803:dc::36) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9a4b465b-d43d-46ad-d6d9-08d6e7a7b865
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(5600148)(711020)(4605104)(1401327)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(2017052603328)(7193020);
 SRVR:PR1PR01MB4970; 
x-ms-traffictypediagnostic: PR1PR01MB4970:
x-microsoft-antispam-prvs: <PR1PR01MB49705773DCFDC38167326A13A61B0@PR1PR01MB4970.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:2958;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(396003)(346002)(366004)(136003)(39850400004)(189003)(199004)(52116002)(305945005)(14454004)(7736002)(54906003)(2906002)(6512007)(99286004)(85182001)(68736007)(6486002)(2501003)(71190400001)(316002)(71200400001)(786003)(66066001)(6436002)(508600001)(5640700003)(2616005)(25786009)(53936002)(85202003)(8936002)(81156014)(81166006)(8676002)(1076003)(4326008)(4744005)(476003)(6916009)(486006)(186003)(66946007)(66446008)(6506007)(86362001)(26005)(3846002)(66556008)(102836004)(64756008)(74482002)(66476007)(73956011)(2351001)(14444005)(256004)(5660300002)(6116002)(50226002)(386003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4970;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ILJwL3XNJQdEDH/IlzdX/kt0tL2939jQpJu1ahFPOnmlhihjHU+nn6xbpjO+TxtVlYBP+s6CDBUsnMJBQSSYh13tdz0sfkZRfYlc5a0m8USF3Ta1Jo3RPT0xw6AO2HZQul0ZidtTWLoZMU4Ya/dcC68gl3ZmSQrNet3hxB4sxNNdMsl30Qlev+tNg7VkNRLo8o7YK0YPQEUP7lHqvN9PVt7MR/a6L+SZK5aocLwIrgSRUwb2mmsmXGZksz6jw+aokRAXmYCVLb6OaQmYRXtbZlTAEdqxknZy8QNuhMYlXpV5/D2G8JSYj7zUH29Oie4AFC5NIcaOo/WUM7U88aESw7L3g88L33gtXDGCsqbcdWs+g6pwuEXrOMeGzmBYD4lTGP2K8lXJ/RzDnYxFLZ2Xuy+9EVGgca37waRt826GQ64=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a4b465b-d43d-46ad-d6d9-08d6e7a7b865
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 22:14:46.1798 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4970
Subject: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 0/2] Introduce
 Intel Intrinsics 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SW50ZWwgaW50cmluc2ljIGluc3RydWN0aW9ucyBhcmUgQyBzdHlsZSBmdW5jdGlvbnMgdGhhdCBw
cm92aWRlIGFjY2VzcyB0byBtYW55DQpJbnRlbCBpbnN0cnVjdGlvbnMuIEN1cnJlbnRseSB3ZSBz
dXBwb3J0OiBTRUUsIFNFRTIsIFNFRTMsIFNFRTQgYW5kIEFWWC4gVGhlIA0KbGlicmFyeSBpcyBt
YWRlIG9mIG1vZGlmaWVkIExMVk0gaGVhZGVycyB0byB3b3JrIG9uIFVuaWtyYWZ0IHdpdGggR0ND
Lg0KDQpWbGFkLUFuZHJlaSBCYWRvaXUgKDIpOg0KICBBZGQgLmdpdGlnbm9yZQ0KICBJbml0aWFs
IHBvcnQgb2YgSW50ZWwgSW50cmluc2ljcyBvbiBVbmlrcmFmdA0KDQotLSANCjIuMjEuMA0KDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 22:14:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 22:14: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 1hXYki-0001GG-L7; Sun, 02 Jun 2019 22:14:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXYkh-0001Fy-8O
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 22:14:55 +0000
X-Inumbo-ID: d887a146-8583-11e9-82f7-db7b661f03be
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.88]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d887a146-8583-11e9-82f7-db7b661f03be;
 Sun, 02 Jun 2019 22:14:53 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4970.eurprd01.prod.exchangelabs.com (20.177.209.202) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.22; Sun, 2 Jun
 2019 22:14:47 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 22:14:47 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 1/2] Add .gitignore
Thread-Index: AQHVGZCWx2gqcoT8aUO2z2yhvZgMcw==
Date: Sun, 2 Jun 2019 22:14:47 +0000
Message-ID: <20190602221434.17542-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0263.eurprd08.prod.outlook.com
 (2603:10a6:803:dc::36) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 98774868-7ef8-4759-d01b-08d6e7a7b905
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(5600148)(711020)(4605104)(1401327)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(2017052603328)(7193020);
 SRVR:PR1PR01MB4970; 
x-ms-traffictypediagnostic: PR1PR01MB4970:
x-microsoft-antispam-prvs: <PR1PR01MB497057D8A5A8DFC2DD21F1F5A61B0@PR1PR01MB4970.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(396003)(346002)(366004)(136003)(39850400004)(189003)(199004)(52116002)(76176011)(305945005)(14454004)(7736002)(54906003)(2906002)(6512007)(99286004)(85182001)(68736007)(6486002)(2501003)(71190400001)(316002)(71200400001)(786003)(66066001)(6436002)(508600001)(5640700003)(446003)(11346002)(2616005)(25786009)(53936002)(85202003)(8936002)(81156014)(81166006)(8676002)(1076003)(4326008)(4744005)(476003)(6916009)(486006)(186003)(66946007)(66446008)(6506007)(86362001)(26005)(3846002)(66556008)(102836004)(64756008)(74482002)(66476007)(73956011)(2351001)(256004)(5660300002)(6116002)(50226002)(386003)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4970;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ngee1qiir+yNStXOL6BjWCNwIGdAyGvUGTOlFm1m6kTB27PivuxA1cxyPIg2kthGdN5Goffkiw6tV2LZiwH2G+Dcurp4JaKUOQRYN476I9tQunL34lMglEnvklG5dqvXynOj1/e+NX26RJnxe+Sf8UOfNZCu1foq+kbziONgSGi73Q3VZWVBODr7a9VdpZH+SqhsF5sgZ7CKPV3vU+DYOoxDQCDDyxF160549kb83roi+nCWuGn/x3si6CC5vPHYAR5uMwzKMkAcSXoVDyqzN0aRKgEkoMkSlb38rfvX+5Uclwxck/qL4Qo/6jI7v4TiFHmYkUiELiCCunOxfDW36pYssRkvRCmQbAgYBb1JGCZQLn02bEQVT9COrfk/jcVrIxZvKc94M4qWZjNQEseiOoPdxYgedHhEILCKeXYhsCE=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 98774868-7ef8-4759-d01b-08d6e7a7b905
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 22:14:47.2232 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4970
Subject: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 1/2] Add
 .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 02 22:18:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 02 Jun 2019 22:18: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 1hXYnv-0001KQ-6g; Sun, 02 Jun 2019 22:18: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=g6Va=UB=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXYnu-0001KL-23
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 22:18:14 +0000
X-Inumbo-ID: 4d43d73e-8584-11e9-8b5f-bb74f93cf4d6
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4d43d73e-8584-11e9-8b5f-bb74f93cf4d6;
 Sun, 02 Jun 2019 22:18:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 6841DF201F;
 Mon,  3 Jun 2019 00:18:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id FhiIgSAFPUYG; Mon,  3 Jun 2019 00:18:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1E9BEF2003;
 Mon,  3 Jun 2019 00:18:04 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 00:18:03 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH] lib/ukunistd: Move utsname.h to uksysinfo
 library
Thread-Index: AQHVGTkz5SDqa5WJlEO/byOqhiBQU6aI76MA
Date: Sun, 2 Jun 2019 22:18:03 +0000
Message-ID: <011C1D00-5CFC-4AFA-976D-03E69AD07F1B@neclab.eu>
References: <20190602114855.18487-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190602114855.18487-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.210]
Content-ID: <BFA692E35DF51B4CB2CA84C42C6D5005@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukunistd: Move utsname.h to
 uksysinfo library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLCB0aGlzIHBhdGNoIGxvb2tzIGdvb2QsIHRoYW5rcy4NCg0KLS0gRmVsaXBlDQrv
u78NClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQoN
Ck9uIDAyLjA2LjE5LCAxMzo0OSwgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3MucHViLnJv
PiB3cm90ZToNCg0KICAgIENvbW1pdCBiYmNiNjBjZSB3cm9uZ2Z1bGx5IG1vdmVkIHRoaXMgaGVh
ZGVyIHRvIHVrdW5pc3RkIGxpYnJhcnkgaW5zdGVhZCBvZg0KICAgIHVrc3lzaW5mbywgd2hlcmUg
dW5hbWUoKSBpbXBsZW1lbnRhdGlvbiBpcyBwbGFjZWQuDQogICAgDQogICAgU2lnbmVkLW9mZi1i
eTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4NCiAgICAtLS0NCiAgICAgbGli
L3Vrc3lzaW5mby9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgKysrDQog
ICAgIGxpYi97dWt1bmlzdGQgPT4gdWtzeXNpbmZvfS9pbmNsdWRlL3N5cy91dHNuYW1lLmggfCAw
DQogICAgIGxpYi91a3VuaXN0ZC9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAzIC0tLQ0KICAgICAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv
bnMoLSkNCiAgICAgcmVuYW1lIGxpYi97dWt1bmlzdGQgPT4gdWtzeXNpbmZvfS9pbmNsdWRlL3N5
cy91dHNuYW1lLmggKDEwMCUpDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2xpYi91a3N5c2luZm8v
TWFrZWZpbGUudWsgYi9saWIvdWtzeXNpbmZvL01ha2VmaWxlLnVrDQogICAgaW5kZXggNzA3YzY5
ZjQuLjI4ZTk5ZmI1IDEwMDY0NA0KICAgIC0tLSBhL2xpYi91a3N5c2luZm8vTWFrZWZpbGUudWsN
CiAgICArKysgYi9saWIvdWtzeXNpbmZvL01ha2VmaWxlLnVrDQogICAgQEAgLTEsMyArMSw2IEBA
DQogICAgICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsdWtzeXNpbmZvLCQoQ09ORklHX1VLU1lTSU5G
TykpKQ0KICAgICANCiAgICArQ0lOQ0xVREVTLSQoQ09ORklHX1VLU1lTSU5GTykgICAgKz0gLUkk
KFVLU1lTSU5GT19CQVNFKS9pbmNsdWRlDQogICAgK0NYWElOQ0xVREVTLSQoQ09ORklHX1VLU1lT
SU5GTykgICs9IC1JJChVS1NZU0lORk9fQkFTRSkvaW5jbHVkZQ0KICAgICsNCiAgICAgVUtTWVNJ
TkZPX1NSQ1MtJChDT05GSUdfVUtTWVNJTkZPKSArPSAkKFVLU1lTSU5GT19CQVNFKS9zeXNpbmZv
LmMNCiAgICBkaWZmIC0tZ2l0IGEvbGliL3VrdW5pc3RkL2luY2x1ZGUvc3lzL3V0c25hbWUuaCBi
L2xpYi91a3N5c2luZm8vaW5jbHVkZS9zeXMvdXRzbmFtZS5oDQogICAgc2ltaWxhcml0eSBpbmRl
eCAxMDAlDQogICAgcmVuYW1lIGZyb20gbGliL3VrdW5pc3RkL2luY2x1ZGUvc3lzL3V0c25hbWUu
aA0KICAgIHJlbmFtZSB0byBsaWIvdWtzeXNpbmZvL2luY2x1ZGUvc3lzL3V0c25hbWUuaA0KICAg
IGRpZmYgLS1naXQgYS9saWIvdWt1bmlzdGQvTWFrZWZpbGUudWsgYi9saWIvdWt1bmlzdGQvTWFr
ZWZpbGUudWsNCiAgICBpbmRleCAwYWQ5YzU2YS4uM2M3YTgyMjkgMTAwNjQ0DQogICAgLS0tIGEv
bGliL3VrdW5pc3RkL01ha2VmaWxlLnVrDQogICAgKysrIGIvbGliL3VrdW5pc3RkL01ha2VmaWxl
LnVrDQogICAgQEAgLTEsNiArMSwzIEBADQogICAgICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsdWt1
bmlzdGQsJChDT05GSUdfVUtVTklTVEQpKSkNCiAgICAgDQogICAgLUNJTkNMVURFUy0kKENPTkZJ
R19VS1VOSVNURCkgICAgKz0gLUkkKFVLVU5JU1REX0JBU0UpL2luY2x1ZGUNCiAgICAtQ1hYSU5D
TFVERVMtJChDT05GSUdfVUtVTklTVEQpICArPSAtSSQoVUtVTklTVERfQkFTRSkvaW5jbHVkZQ0K
ICAgIC0NCiAgICAgVUtVTklTVERfU1JDUy0kKENPTkZJR19VS1VOSVNURCkgKz0gJChVS1VOSVNU
RF9CQVNFKS91c2VyLmMNCiAgICAtLSANCiAgICAyLjIwLjENCiAgICANCiAgICANCg0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 05:32:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 05:32: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 1hXfaV-0005Lm-DF; Mon, 03 Jun 2019 05:32:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=fxze=UC=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXfaU-0005Lh-HL
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 05:32:50 +0000
X-Inumbo-ID: 04ed6e78-85c1-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 04ed6e78-85c1-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 05:32:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 88B69105222;
 Mon,  3 Jun 2019 07:32:46 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2ivMxCUO-CHO; Mon,  3 Jun 2019 07:32:46 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 651A1105190;
 Mon,  3 Jun 2019 07:32:46 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 07:32:46 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBCXX PATCH] Add features.h
Thread-Index: AQHVGLb76hx4QN5W0UiYXBr5VYbclqaJahsA
Date: Mon, 3 Jun 2019 05:32:44 +0000
Message-ID: <66BDE5C9-EB67-4B83-97BB-7BB34346B29A@neclab.eu>
References: <20190601201649.30284-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190601201649.30284-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <A3F3E5F6D3D29C44A8C64C36D7EB51B7@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Add features.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLCANCg0KSSBoZXNpdGF0ZWQgaGVyZSBiZXR3ZWVuIGxlYXZpbmcgdGhlIHBhdGNo
IGFzIGlzIG9yIGFza2luZyB0aGF0IHlvdSBwdXQgY29tcGlsZSBndWFyZHMgYXJvbmQgI2luY2x1
ZGUgPHN5cy9mZWF0dXJlcy5oPiwgc2luY2UgdGhpcyBpcyBuZXdsaWItc3BlY2lmaWMuIEkgZ3Vl
c3MgaWYgd2UgbGVhdmUgaXQgYXMgaXMgaXQnbGwgYWN0IGFzIGEgcmVtaW5kZXIgdG8gcGVvcGxl
IHBvcnRpbmcgb3RoZXIgbGliY3MgdG8gdG91Y2ggdGhpcyBmaWxlLCByYXRoZXIgdGhhbiBzaWxl
bnRseSBmYWlsLCBzbyBiZXR0ZXIgbGVhdmUgaXQgYXMgaXMuDQoNClRoYW5rcywNCg0KLS0gRmVs
aXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQoNCu+7v09uIDAxLjA2LjE5LCAyMjoxNywgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPiB3cm90ZToNCg0KICAgIFdoZW4gdGhyZWFkcyBhcmUgZW5hYmxlZCwgY3h4IGxpYnJh
cnkgaW5jbHVkZXMgYSAnZmVhdHVyZXMuaCcgaGVhZGVyIGluIGl0cw0KICAgICdpbmNsdWRlL19f
Y29uZmlnJyBoZWFkZXIgZnJvbSBvcmlnaW4uIFRoZSBoZWFkZXIgaW50cm9kdWNlZCBieSB0aGlz
IHBhdGNoDQogICAgaW5jbHVkZXMgdGhlICdzeXMvZmVhdHVyZXMuaCcgaGVhZGVyIGZyb20gbmV3
bGliLg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBj
cy5wdWIucm8+DQogICAgLS0tDQogICAgIGluY2x1ZGUvZmVhdHVyZXMuaCB8IDQzICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMSBmaWxlIGNoYW5nZWQs
IDQzIGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZmVhdHVy
ZXMuaA0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL2ZlYXR1cmVzLmggYi9pbmNsdWRl
L2ZlYXR1cmVzLmgNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAu
LmZlYjAxZGINCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvaW5jbHVkZS9mZWF0dXJlcy5o
DQogICAgQEAgLTAsMCArMSw0MyBAQA0KICAgICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovDQogICAgKy8qDQogICAgKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QNCiAgICArICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4NCiAgICArICoNCiAgICArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogICAgKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICAg
ICsgKiBhcmUgbWV0Og0KICAgICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICAgICsgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICAgKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0DQogICAgKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAgICArICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4NCiAgICArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFt
ZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycw0KICAgICsgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUNCiAgICAr
ICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogICAgKyAq
DQogICAgKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQNCiAgICArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogICAgKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFDQogICAgKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQogICAgKyAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMDQogICAgKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQogICAgKyAqIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0K
ICAgICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KICAgICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogICAg
KyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YNCiAgICArICogU1VDSCBEQU1BR0UuDQogICAgKyAqLw0KICAgICsj
aWZuZGVmIF9fTElCVU5XSU5EX19GRUFUVVJFU19IX18NCiAgICArI2RlZmluZSBfX0xJQlVOV0lO
RF9fRkVBVFVSRVNfSF9fDQogICAgKw0KICAgICsjaWZkZWYgX19jcGx1c3BsdXMNCiAgICArZXh0
ZXJuICJDIiB7DQogICAgKyNlbmRpZg0KICAgICsNCiAgICArI2luY2x1ZGUgPHN5cy9mZWF0dXJl
cy5oPg0KICAgICsNCiAgICArI2lmZGVmIF9fY3BsdXNwbHVzDQogICAgK30NCiAgICArI2VuZGlm
DQogICAgKyNlbmRpZiAvKiBfX0xJQlVOV0lORF9fRkVBVFVSRVNfSF9fICovDQogICAgKw0KICAg
IC0tIA0KICAgIDIuMjAuMQ0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 05:38:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 05:38: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 1hXfg8-0005X2-5L; Mon, 03 Jun 2019 05:38:40 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=fxze=UC=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXfg6-0005Ww-W3
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 05:38:39 +0000
X-Inumbo-ID: d3ef05e6-85c1-11e9-9a1c-03f7a11329b8
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d3ef05e6-85c1-11e9-9a1c-03f7a11329b8;
 Mon, 03 Jun 2019 05:38:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D6246105242;
 Mon,  3 Jun 2019 07:38:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yoNhYvdn9yCI; Mon,  3 Jun 2019 07:38:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B3B87105222;
 Mon,  3 Jun 2019 07:38:33 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 07:38:33 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBCXX PATCH] Export __dso_handle
Thread-Index: AQHVGVV0yGZaDqpDV0iy0bhZzwapLaaJan0A
Date: Mon, 3 Jun 2019 05:38:32 +0000
Message-ID: <37799A2E-37FC-45C9-9F35-518879766213@neclab.eu>
References: <20190602151122.31675-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190602151122.31675-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <BDB3961406CD424C9DCA44A9BF29E41F@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Export __dso_handle
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QuDQoNClRoYW5rcywNCg0KLS0gRmVs
aXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQrvu78NCk9uIDAyLjA2LjE5LCAxNzoxMSwgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPiB3cm90ZToNCg0KICAgIFNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+DQogICAgLS0tDQogICAgIGV4cG9ydHN5bXMudWsgfCAxICsNCiAgICAg
MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2V4
cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrDQogICAgaW5kZXggNGJkMjQwYy4uNGNlNTk1ZiAx
MDA2NDQNCiAgICAtLS0gYS9leHBvcnRzeW1zLnVrDQogICAgKysrIGIvZXhwb3J0c3ltcy51aw0K
ICAgIEBAIC0xLDMgKzEsNCBAQA0KICAgICtfX2Rzb19oYW5kbGUNCiAgICAgX0dMT0JBTF9fc3Vi
X0kuMDAxMDFfX1pOU3QxMmV4cGVyaW1lbnRhbDE1ZnVuZGFtZW50YWxzX3YxM3BtcjE5bmV3X2Rl
bGV0ZV9yZXNvdXJjZUV2DQogICAgIF9HTE9CQUxfX3N1Yl9JX19aTlN0M19fMTNjaW5FDQogICAg
IF9aNDFfX3N0YXRpY19pbml0aWFsaXphdGlvbl9hbmRfZGVzdHJ1Y3Rpb25fMGlpDQogICAgLS0g
DQogICAgMi4yMC4xDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 05:39:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 05: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 1hXfge-0005Yt-7z; Mon, 03 Jun 2019 05:39:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=fxze=UC=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXfgc-0005Xt-Cu
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 05:39:10 +0000
X-Inumbo-ID: e8182812-85c1-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e8182812-85c1-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 05:39:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1EFC0F2047;
 Mon,  3 Jun 2019 07:38:56 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id g71MCjyiOCu7; Mon,  3 Jun 2019 07:38:56 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D022BF2046;
 Mon,  3 Jun 2019 07:38:51 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 07:38:51 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBCXX PATCH] Fix some of the compiling warnings
Thread-Index: AQHVGUmQReOko2iQcU2zrzcwKVMBrKaJaqsA
Date: Mon, 3 Jun 2019 05:38:50 +0000
Message-ID: <B70D42C1-39D5-426E-961D-D2F1DACA32F1@neclab.eu>
References: <20190602134616.31004-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190602134616.31004-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <4AAEA7EAD7405246B7711461C46DC4C4@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Fix some of the
 compiling warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QuDQoNClRoYW5rcywNCg0KLS0gRmVs
aXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQrvu78NCg0KT24gMDIuMDYuMTksIDE1OjQ2LCAiQ29zdGluIEx1cHUiIDxjb3N0aW4ubHVwdUBj
cy5wdWIucm8+IHdyb3RlOg0KDQogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSAidW51c2VkLXBh
cmFtZXRlciIgd2FybmluZ3MgZ2VuZXJhdGVkIGJ5IHRoZSBvcmlnaW4gY29kZQ0KICAgIGFuZCB0
aGUgbXVsdGlwbGUgZGVmaW5pdGlvbiB3YXJuaW5ncyBmb3IgX0xJQkNQUF9CVUlMRElOR19MSUJS
QVJZIGFuZA0KICAgIF9MSUJDUFBBQklfVkVSU0lPTiBtYWNyb3MuDQogICAgDQogICAgU2lnbmVk
LW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4NCiAgICAtLS0NCiAg
ICAgTWFrZWZpbGUudWsgfCA4ICsrKysrKy0tDQogICAgIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2Vy
dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQogICAgDQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxl
LnVrIGIvTWFrZWZpbGUudWsNCiAgICBpbmRleCBkZGQzOWRhLi5hNDU1Mzg2IDEwMDY0NA0KICAg
IC0tLSBhL01ha2VmaWxlLnVrDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAtOTEsOCAr
OTEsOCBAQCBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJDWFgpICs9IC1JJChMSUJDWFhfU1JDKS91
dGlscw0KICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAjIEdsb2JhbCBmbGFncw0K
ICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIC1DT05GSUdfRkxBR1MgCSs9IC1EIF9M
SUJDUFBfQlVJTERJTkdfTElCUkFSWSAgLUQgTElCQ1hYX0JVSUxESU5HX0xJQkNYWEFCSSAJXA0K
ICAgIC0JCS1EIF9MSUJDUFBBQklfVkVSU0lPTiAtRCBfX3g4Nl82NF9fIC1EIF9MSUJDUFBfU1RE
X1ZFUj0xNSAJXA0KICAgICtDT05GSUdfRkxBR1MgCSs9IC1EIExJQkNYWF9CVUlMRElOR19MSUJD
WFhBQkkgCVwNCiAgICArCQktRCBfX3g4Nl82NF9fIC1EIF9MSUJDUFBfU1REX1ZFUj0xNSAJXA0K
ICAgICAJCS1EIF9MSUJDUFBfUFJPVklERVNfREVGQVVMVF9SVU5FX1RBQkxFIC1EIF9fRFlOQU1J
Q19SRUVOVF9fCVwNCiAgICAgDQogICAgIA0KICAgIEBAIC0xMDAsNiArMTAwLDEwIEBAIENPTkZJ
R19GTEFHUyAJKz0gLUQgX0xJQkNQUF9CVUlMRElOR19MSUJSQVJZICAtRCBMSUJDWFhfQlVJTERJ
TkdfTElCQ1hYQUJJIAlcDQogICAgIExJQkNYWF9DRkxBR1MteSAgICArPSAgICQoQ09ORklHX0ZM
QUdTKQ0KICAgICBMSUJDWFhfQ1hYRkxBR1MteSAgICArPSAgICQoQ09ORklHX0ZMQUdTKQ0KICAg
ICANCiAgICArU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVyDQogICAgK0xJ
QkNYWF9DRkxBR1MteSAgICs9ICQoU1VQUFJFU1NfRkxBR1MpDQogICAgK0xJQkNYWF9DWFhGTEFH
Uy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpDQogICAgKw0KICAgICBMSUJDWFhfU1JDUy15ICs9ICQo
TElCQ1hYX0JBU0UpL2dsdWUuYw0KICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAj
IExpYnJhcnkgc291cmNlcw0KICAgIC0tIA0KICAgIDIuMjAuMQ0KICAgIA0KICAgIA0KDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 05:39:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 05:39: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 1hXfgl-0005ZP-9z; Mon, 03 Jun 2019 05:39: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=fxze=UC=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXfgk-0005ZK-8v
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 05:39:18 +0000
X-Inumbo-ID: ebc3df20-85c1-11e9-be6e-f39b04eb5b86
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ebc3df20-85c1-11e9-be6e-f39b04eb5b86;
 Mon, 03 Jun 2019 05:39:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0B27B105247;
 Mon,  3 Jun 2019 07:39:14 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bkPe-gWnFvf1; Mon,  3 Jun 2019 07:39:13 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DD432105242;
 Mon,  3 Jun 2019 07:39:13 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 07:39:13 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBCXXABI PATCH] Supress unused-parameter warnings
Thread-Index: AQHVGUb72f3GFfcDX0mAO+z9dkqn9aaJasoA
Date: Mon, 3 Jun 2019 05:39:13 +0000
Message-ID: <EDE0703F-B2DC-4968-9913-635EEE3A3E26@neclab.eu>
References: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
 <20190602132745.30706-2-costin.lupu@cs.pub.ro>
In-Reply-To: <20190602132745.30706-2-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <ED9B87D3F3B5C24AAB32C679EB7BDD06@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXXABI PATCH] Supress
 unused-parameter warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QuDQoNClRoYW5rcywNCg0KLS0gRmVs
aXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQrvu78NCg0KT24gMDIuMDYuMTksIDE1OjI3LCAiQ29zdGluIEx1cHUiIDxjb3N0aW4ubHVwdUBj
cy5wdWIucm8+IHdyb3RlOg0KDQogICAgT3JpZ2luIGNvZGUgZ2VuZXJhdGVzICJ1bnVzZWQtcGFy
YW1ldGVyIiB3YXJuaW5ncy4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8
Y29zdGluLmx1cHVAY3MucHViLnJvPg0KICAgIC0tLQ0KICAgICBNYWtlZmlsZS51ayB8IDQgKysr
Kw0KICAgICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspDQogICAgDQogICAgZGlmZiAt
LWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICBpbmRleCBmYmIwMGJjLi5jZmU5
YzczIDEwMDY0NA0KICAgIC0tLSBhL01ha2VmaWxlLnVrDQogICAgKysrIGIvTWFrZWZpbGUudWsN
CiAgICBAQCAtNzIsNiArNzIsMTAgQEAgQ09ORklHX0ZMQUdTCSs9CS1EIF9MSUJDWFhBQklfSEFT
X05PX1RIUkVBRFMNCiAgICAgTElCQ1hYQUJJX0NGTEFHUy15ICAgICs9ICAkKENPTkZJR19GTEFH
UykNCiAgICAgTElCQ1hYQUJJX0NYWEZMQUdTLXkgICAgKz0gICQoQ09ORklHX0ZMQUdTKQ0KICAg
ICANCiAgICArU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVyDQogICAgK0xJ
QkNYWEFCSV9DRkxBR1MteSAgICs9ICQoU1VQUFJFU1NfRkxBR1MpDQogICAgK0xJQkNYWEFCSV9D
WFhGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpDQogICAgKw0KICAgICAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KICAgICAjIExpYnJhcnkgc291cmNlcw0KICAgICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIw0KICAgIC0tIA0KICAgIDIuMjAuMQ0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 05:39:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 05:39: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 1hXfgx-0005iD-Bx; Mon, 03 Jun 2019 05:39: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=fxze=UC=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXfgv-0005gm-GO
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 05:39:29 +0000
X-Inumbo-ID: f4028998-85c1-11e9-a204-63409fe84ad7
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f4028998-85c1-11e9-a204-63409fe84ad7;
 Mon, 03 Jun 2019 05:39:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D72ED105242;
 Mon,  3 Jun 2019 07:39:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qOLWdnuTwY2j; Mon,  3 Jun 2019 07:39:27 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B54AD105222;
 Mon,  3 Jun 2019 07:39:27 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 07:39:27 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/COMPILER-RT PATCH] Supress unused-parameter warnings
Thread-Index: AQHVGUb7o41svbmZ1Uq1hs208PkrNqaJatsA
Date: Mon, 3 Jun 2019 05:39:27 +0000
Message-ID: <12E2605C-B613-4D39-8BB5-9E66CDDED167@neclab.eu>
References: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <3D61E80915FCB8448FAD96FD0CCCA2BA@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/COMPILER-RT PATCH] Supress
 unused-parameter warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QuDQoNClRoYW5rcywNCg0KLS0gRmVs
aXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQrvu78NCk9uIDAyLjA2LjE5LCAxNToyNywgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPiB3cm90ZToNCg0KICAgIE9yaWdpbiBjb2RlIGdlbmVyYXRlcyAidW51c2VkLXBhcmFt
ZXRlciIgd2FybmluZ3MuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNv
c3Rpbi5sdXB1QGNzLnB1Yi5ybz4NCiAgICAtLS0NCiAgICAgTWFrZWZpbGUudWsgfCA0ICsrKysN
CiAgICAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQ0KICAgIA0KICAgIGRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrDQogICAgaW5kZXggNjg1ZDQ2ZS4uNGQ3OGI0
YSAxMDA2NDQNCiAgICAtLS0gYS9NYWtlZmlsZS51aw0KICAgICsrKyBiL01ha2VmaWxlLnVrDQog
ICAgQEAgLTczLDYgKzczLDEwIEBAIENPTkZJR19GTEFHUwkrPSAtRF9feDg2XzY0X18NCiAgICAg
TElCQ09NUElMRVJfUlRfQ0ZMQUdTLXkgICAgKz0gICQoQ09ORklHX0ZMQUdTKQ0KICAgICBMSUJD
T01QSUxFUl9SVF9DWFhGTEFHUy15ICAgICs9ICAkKENPTkZJR19GTEFHUykNCiAgICAgDQogICAg
K1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlcg0KICAgICtMSUJDT01QSUxF
Ul9SVF9DRkxBR1MteSAgICs9ICQoU1VQUFJFU1NfRkxBR1MpDQogICAgK0xJQkNPTVBJTEVSX1JU
X0NYWEZMQUdTLXkgKz0gJChTVVBQUkVTU19GTEFHUykNCiAgICArDQogICAgICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjDQogICAgICMgTGlicmFyeSBzb3VyY2VzDQogICAgICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQogICAgLS0gDQogICAgMi4yMC4xDQogICAgDQogICAgDQoNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 05:40:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 05:40: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 1hXfhy-0006IR-Fn; Mon, 03 Jun 2019 05:40: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=fxze=UC=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hXfhx-0006IL-By
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 05:40:33 +0000
X-Inumbo-ID: 17ff6460-85c2-11e9-9bd3-abd5c3b32527
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 17ff6460-85c2-11e9-9bd3-abd5c3b32527;
 Mon, 03 Jun 2019 05:40:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C684DF2048;
 Mon,  3 Jun 2019 07:39:07 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id uLPfG9CjMxCP; Mon,  3 Jun 2019 07:39:07 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9F26BF2046;
 Mon,  3 Jun 2019 07:39:03 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 3 Jun 2019 07:39:03 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBUNWIND PATCH] Fix some of the compiling warnings
Thread-Index: AQHVGUb8H4xUW3JYCkmnAtbB9zV4baaJar4A
Date: Mon, 3 Jun 2019 05:39:02 +0000
Message-ID: <E90052E9-BDC0-4266-96BC-619485C739B0@neclab.eu>
References: <20190602132745.30706-1-costin.lupu@cs.pub.ro>
 <20190602132745.30706-3-costin.lupu@cs.pub.ro>
In-Reply-To: <20190602132745.30706-3-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <2F0466A7AB2A564CBF3E2AAB24F60481@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBUNWIND PATCH] Fix some of the
 compiling warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QuDQoNClRoYW5rcywNCg0KLS0gRmVs
aXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQrvu78NCg0KT24gMDIuMDYuMTksIDE1OjI3LCAiQ29zdGluIEx1cHUiIDxjb3N0aW4ubHVwdUBj
cy5wdWIucm8+IHdyb3RlOg0KDQogICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSAidW51c2VkLXBh
cmFtZXRlciIgd2FybmluZ3MgZ2VuZXJhdGVkIGJ5IHRoZSBvcmlnaW4gY29kZQ0KICAgIGFuZCB0
aGUgbXVsdGlwbGUgZGVmaW5pdGlvbiB3YXJuaW5ncyBmb3IgX0xJQlVOV0lORF9CVUlMRF9aRVJP
X0NPU1RfQVBJUyBtYWNyby4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8
Y29zdGluLmx1cHVAY3MucHViLnJvPg0KICAgIC0tLQ0KICAgICBNYWtlZmlsZS51ayB8IDYgKysr
KystDQogICAgIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkN
CiAgICANCiAgICBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KICAgIGlu
ZGV4IGE4MGE0ZmUuLjEwOWU1ZTggMTAwNjQ0DQogICAgLS0tIGEvTWFrZWZpbGUudWsNCiAgICAr
KysgYi9NYWtlZmlsZS51aw0KICAgIEBAIC03NSwxMSArNzUsMTUgQEAgQ1hYSU5DTFVERVMtJChD
T05GSUdfTElCVU5XSU5EKSArPSAtSSQoTElCVU5XSU5EX1NSQykvaW5jbHVkZQ0KICAgICAjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICBDT05GSUdfRkxBR1MgICArPSAtRCBfTElCVU5XSU5E
X0hBU19OT19USFJFQURTICAtRCBfX0VMRl9fICAtRCBfTElCVU5XSU5EX0lTX05BVElWRV9PTkxZ
CQlcDQogICAgIAkJICAtRCBfTElCVU5XSU5EX1NVUFBPUlRfRFdBUkZfVU5XSU5EIC1EIF9MSUJV
TldJTkRfSVNfQkFSRU1FVEFMCQkJCVwNCiAgICAtCQkgIC1EIF9MSUJVTldJTkRfQlVJTERfWkVS
T19DT1NUX0FQSVMgLUQgX0xJQlVOV0lORF9UQVJHRVRfWDg2XzY0IC1EIF9feDg2XzY0X18NCiAg
ICArCQkgIC1EIF9MSUJVTldJTkRfVEFSR0VUX1g4Nl82NCAtRCBfX3g4Nl82NF9fDQogICAgIA0K
ICAgICBMSUJVTldJTkRfQ0ZMQUdTLXkgICAgICArPSAgJChDT05GSUdfRkxBR1MpDQogICAgIExJ
QlVOV0lORF9DWFhGTEFHUy15ICAgICs9ICAkKENPTkZJR19GTEFHUykNCiAgICAgDQogICAgK1NV
UFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlcg0KICAgICtMSUJVTldJTkRfQ0ZM
QUdTLXkgICArPSAkKFNVUFBSRVNTX0ZMQUdTKQ0KICAgICtMSUJVTldJTkRfQ1hYRkxBR1MteSAr
PSAkKFNVUFBSRVNTX0ZMQUdTKQ0KICAgICsNCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN
CiAgICAgIyBMaWJyYXJ5IHNvdXJjZXMNCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAg
ICAtLSANCiAgICAyLjIwLjENCiAgICANCiAgICANCg0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:32:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:32: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 1hXhRn-0007Pq-HO; Mon, 03 Jun 2019 07:31:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXhRm-0007Pl-Eq
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:31:58 +0000
X-Inumbo-ID: a8e38eb6-85d1-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a8e38eb6-85d1-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:31:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A2BF7105242;
 Mon,  3 Jun 2019 09:31:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IEqy1YTJS7vo; Mon,  3 Jun 2019 09:31:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7EED110505E;
 Mon,  3 Jun 2019 09:31:53 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 09:31:53
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-6-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <97ec8917-a79b-57ca-cc42-bfd5c17df761@neclab.eu>
Date: Mon, 3 Jun 2019 09:31:52 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190415124320.4547-6-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 5/8] patches:
 Fix atomic operations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 sharan.santhanam@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>

SGkgQ29zdGluLAoKT24gNC8xNS8xOSAxOjQzIFBNLCBDb3N0aW4gTHVwdSB3cm90ZToKPiBXZSB1
c2UgYXRvbWljIG9wZXJhdGlvbnMgYXMgbWFjcm9zIGJlY2F1c2UgcHRlIHVzZXMgdGhlbSBmb3Ig
Ym90aCBpbnQKPiBhbmQgbG9uZyB0eXBlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVw
dSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+IC0tLQo+ICAgcGF0Y2hlcy8wMDA3LVVzZS1hdG9t
aWMtb3BlcmF0aW9ucy1hcy1tYWNyb3MucGF0Y2ggfCA2MiArKysrKysrKysrKysrKysrKysrKysK
PiAgIC4uLmJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoIHwg
NjMgKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0
aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9w
ZXJhdGlvbnMtYXMtbWFjcm9zLnBhdGNoCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8w
MDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoCj4gCj4g
ZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9wZXJhdGlvbnMtYXMtbWFjcm9z
LnBhdGNoIGIvcGF0Y2hlcy8wMDA3LVVzZS1hdG9taWMtb3BlcmF0aW9ucy1hcy1tYWNyb3MucGF0
Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjYzMzEzYjIKPiAtLS0g
L2Rldi9udWxsCj4gKysrIGIvcGF0Y2hlcy8wMDA3LVVzZS1hdG9taWMtb3BlcmF0aW9ucy1hcy1t
YWNyb3MucGF0Y2gKPiBAQCAtMCwwICsxLDYyIEBACj4gK0Zyb20gZTBjZjZiZTJjZWM4NzU0MmJl
MDFiYjEyNzQxM2YzMWEwNWVjMTYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiArRnJvbTog
Q29zdGluIEx1cHUgPGNvc3Rpbi5sdXBAZ21haWwuY29tPgo+ICtEYXRlOiBXZWQsIDMgQXByIDIw
MTkgMTg6NTQ6MjEgKzAzMDAKPiArU3ViamVjdDogW1BBVENIIDEvMl0gVXNlIGF0b21pYyBvcGVy
YXRpb25zIGFzIG1hY3Jvcwo+ICsKPiArV2UgdXNlIGF0b21pYyBvcGVyYXRpb25zIGFzIG1hY3Jv
cyBiZWNhdXNlIHB0ZSB1c2VzIHRoZW0gZm9yIGJvdGggaW50Cj4gK2FuZCBsb25nIHR5cGVzIChz
ZWUgbmV4dCBwYXRjaCkuCj4gKwo+ICtTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGlu
Lmx1cHVAY3MucHViLnJvPgo+ICstLS0KPiArIHB0ZV9nZW5lcmljX29zYWwuaCB8IDI4ICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysKPiArIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25z
KCspCj4gKwo+ICtkaWZmIC0tZ2l0IGEvcHRlX2dlbmVyaWNfb3NhbC5oIGIvcHRlX2dlbmVyaWNf
b3NhbC5oCj4gK2luZGV4IGRlMWVhNWYuLjZiMWY0MzkgMTAwNjQ0Cj4gKy0tLSBhL3B0ZV9nZW5l
cmljX29zYWwuaAo+ICsrKysgYi9wdGVfZ2VuZXJpY19vc2FsLmgKPiArQEAgLTM3OCw2ICszNzgs
NyBAQCBwdGVfb3NSZXN1bHQgcHRlX29zVGxzRnJlZSh1bnNpZ25lZCBpbnQga2V5KTsKPiArIC8v
QH0KPiArCj4gKyAvKiogQG5hbWUgQXRvbWljIG9wZXJhdGlvbnMgKi8KPiArKyNpZiAwCgpJIHdv
bmRlciB3aGV0aGVyIHlvdSBjb3VsZCBpbnN0ZWFkIHJlbW92ZSBhbGwgdGhlIGNvZGUgdGhhdCB5
b3UgCmNvbW1lbnRlZCBvdXQgd2l0aCB0aGUgI2lmIDA/IFRob3VnaCB0aGF0J3MgcHJvYmFibHkg
YSBxdWVzdGlvbiBvZiAKcHJlZmVyZW5jZS4KCj4gKyAvL0B7Cj4gKwo+ICsgLyoqCj4gK0BAIC00
NTUsNiArNDU2LDMzIEBAIGludCBwdGVfb3NBdG9taWNEZWNyZW1lbnQoaW50ICpwZGVzdCk7Cj4g
KyAgKiByZXR1cm4gb3JpZ1ZhbDsKPiArICAqLwo+ICsgaW50IHB0ZV9vc0F0b21pY0luY3JlbWVu
dChpbnQgKnBkZXN0KTsKPiArKyNlbHNlCj4gKysKPiArKyNpbmNsdWRlIDx1ay9hcmNoL2F0b21p
Yy5oPgo+ICsrCj4gKysjZGVmaW5lIHB0ZV9vc0F0b21pY0V4Y2hhbmdlKHB0YXJnLCB2YWwpIFwK
PiArKwl1a2FyY2hfZXhjaGFuZ2VfbihwdGFyZywgdmFsKQo+ICsrCj4gKysjZGVmaW5lIHB0ZV9v
c0F0b21pY0NvbXBhcmVFeGNoYW5nZShwZGVzdCwgZXhjaGFuZ2UsIGNvbXApIFwKPiArKyh7IFwK
PiArKwlfX3R5cGVvZl9fKCpwZGVzdCkgX19vcmlnID0gKnBkZXN0OyBcCj4gKysJdWthcmNoX2Nv
bXBhcmVfZXhjaGFuZ2Vfc3luYyhwZGVzdCwgY29tcCwgZXhjaGFuZ2UpOyBcCj4gKysJX19vcmln
OyBcCj4gKyt9KQo+ICsrCj4gKysjZGVmaW5lIHB0ZV9vc0F0b21pY0V4Y2hhbmdlQWRkKHBhZGRl
bmQsIHZhbHVlKSBcCj4gKysJdWthcmNoX2ZldGNoX2FkZChwYWRkZW5kLCB2YWx1ZSkKPiArKwo+
ICsrI2RlZmluZSBhdG9taWNfYWRkKHB0YXJnLCB2YWwpIFwKPiArKwlfX2F0b21pY19hZGRfZmV0
Y2gocHRhcmcsIHZhbCwgX19BVE9NSUNfU0VRX0NTVCkKClNob3VsZG4ndCB0aGlzIGJlIF9fYXRv
bWljX2ZldGNoX2FkZD8gVGhlIHB0aHJlYWRfZW1iZWRkZWQgc291cmNlIGNvZGUgCnNheXMgdGhh
dCBwdGVfb3NBdG9taWN7RGUsSW59Y3JlbWVudCByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlLCBi
dXQgdGhpcyAKcmV0dXJucyB0aGUgbW9kaWZpZWQgdmFsdWUuCgoKPiArKwo+ICsrI2RlZmluZSBw
dGVfb3NBdG9taWNEZWNyZW1lbnQocGRlc3QpIFwKPiArKwlhdG9taWNfYWRkKHBkZXN0LCAtMSkK
PiArKwo+ICsrI2RlZmluZSBwdGVfb3NBdG9taWNJbmNyZW1lbnQocGRlc3QpIFwKPiArKwlhdG9t
aWNfYWRkKHBkZXN0LCAxKQo+ICsrCj4gKysjZW5kaWYKPiArIC8vQH0KPiArCj4gKyBzdHJ1Y3Qg
dGltZWI7Cj4gKy0tCj4gKzIuMTEuMAo+ICsKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDA4LWJ1
Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoIGIvcGF0Y2hlcy8w
MDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi42Y2EzMzlkCj4gLS0tIC9kZXYvbnVs
bAo+ICsrKyBiL3BhdGNoZXMvMDAwOC1idWdmaXgtRml4LWF0b21pYy1vcGVyYXRpb25zLW9uLXNl
bWFwaG9yZS5wYXRjaAo+IEBAIC0wLDAgKzEsNjMgQEAKPiArRnJvbSAwOWEyMTE4N2Y3ZTQyNjE0
N2Q0ZDVmYjkxNDUxZWE1NWNmN2FjMjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+ICtGcm9t
OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cEBnbWFpbC5jb20+Cj4gK0RhdGU6IFdlZCwgMyBBcHIg
MjAxOSAxODo1NjozMSArMDMwMAo+ICtTdWJqZWN0OiBbUEFUQ0ggMi8yXSBidWdmaXggRml4IGF0
b21pYyBvcGVyYXRpb25zIG9uIHNlbWFwaG9yZQo+ICsKPiArRmllbGQgJ3NlbWFwaG9yZScgb2Yg
c3RydWN0IHB0aHJlYWRfb25jZV90XyBpcyBvZiB0eXBlICd2b2lkIConLgo+ICtUaGVyZWZvcmUg
YXRvbWljIG9wZXJhdGlvbnMgc2hvdWxkIHVzZSBsb25nIHR5cGUgaW5zdGVhZCBvZiBpbnQuCj4g
Kwo+ICtTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+
ICstLS0KPiArIHB0aHJlYWRfb25jZS5jIHwgMTIgKysrKysrLS0tLS0tCj4gKyAxIGZpbGUgY2hh
bmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ICsKPiArZGlmZiAtLWdpdCBh
L3B0aHJlYWRfb25jZS5jIGIvcHRocmVhZF9vbmNlLmMKPiAraW5kZXggYTgxNjZmNS4uMmI2MDUw
ZiAxMDA2NDQKPiArLS0tIGEvcHRocmVhZF9vbmNlLmMKPiArKysrIGIvcHRocmVhZF9vbmNlLmMK
PiArQEAgLTU1LDcgKzU1LDcgQEAgcHRlX29uY2VfaW5pdF9yb3V0aW5lX2NsZWFudXAodm9pZCAq
IGFyZykKPiArCj4gKyAgICh2b2lkKSBQVEVfQVRPTUlDX0VYQ0hBTkdFKCZvbmNlX2NvbnRyb2wt
PnN0YXRlLFBURV9PTkNFX0lOSVQpOwo+ICsKPiArLSAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0Vf
QUREKChpbnQqKSZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVuY2UgKi8K
PiArKyAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0VfQUREKChsb25nKikmb25jZV9jb250cm9sLT5z
ZW1hcGhvcmUsIDBMKSkgLyogTUJSIGZlbmNlICovCj4gKyAgICAgewo+ICsgICAgICAgcHRlX29z
U2VtYXBob3JlUG9zdCgocHRlX29zU2VtYXBob3JlSGFuZGxlKSBvbmNlX2NvbnRyb2wtPnNlbWFw
aG9yZSwgMSk7Cj4gKyAgICAgfQo+ICtAQCAtMTM0LDcgKzEzNCw3IEBAIHB0aHJlYWRfb25jZSAo
cHRocmVhZF9vbmNlX3QgKiBvbmNlX2NvbnRyb2wsIHZvaWQgKCppbml0X3JvdXRpbmUpICh2b2lk
KSkKPiArICAgICAgICAgICAgKiB3ZSBkaWRuJ3QgY3JlYXRlIHRoZSBzZW1hcGhvcmUuCj4gKyAg
ICAgICAgICAgICogaXQgaXMgb25seSB0aGVyZSBpZiB0aGVyZSBpcyBzb21lb25lIHdhaXRpbmcu
Cj4gKyAgICAgICAgICAgICovCj4gKy0gICAgICAgICAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0Vf
QUREKChpbnQqKSZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVuY2UgKi8K
PiArKyAgICAgICAgICBpZiAoUFRFX0FUT01JQ19FWENIQU5HRV9BREQoKGxvbmcqKSZvbmNlX2Nv
bnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVuY2UgKi8KPiArICAgICAgICAgICAgIHsK
PiArICAgICAgICAgICAgICAgcHRlX29zU2VtYXBob3JlUG9zdCgocHRlX29zU2VtYXBob3JlSGFu
ZGxlKSBvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSxvbmNlX2NvbnRyb2wtPm51bVNlbWFwaG9yZVVz
ZXJzKTsKPiArICAgICAgICAgICAgIH0KPiArQEAgLTE0MywxMiArMTQzLDEyIEBAIHB0aHJlYWRf
b25jZSAocHRocmVhZF9vbmNlX3QgKiBvbmNlX2NvbnRyb2wsIHZvaWQgKCppbml0X3JvdXRpbmUp
ICh2b2lkKSkKPiArICAgICAgICAgewo+ICsgICAgICAgICAgIFBURV9BVE9NSUNfSU5DUkVNRU5U
KCZvbmNlX2NvbnRyb2wtPm51bVNlbWFwaG9yZVVzZXJzKTsKPiArCj4gKy0gICAgICAgICAgaWYg
KCFQVEVfQVRPTUlDX0VYQ0hBTkdFX0FERCgoaW50Kikmb25jZV9jb250cm9sLT5zZW1hcGhvcmUs
IDBMKSkgLyogTUJSIGZlbmNlICovCj4gKysgICAgICAgICAgaWYgKCFQVEVfQVRPTUlDX0VYQ0hB
TkdFX0FERCgobG9uZyopJm9uY2VfY29udHJvbC0+c2VtYXBob3JlLCAwTCkpIC8qIE1CUiBmZW5j
ZSAqLwo+ICsgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICBwdGVfb3NTZW1hcGhvcmVD
cmVhdGUoMCwgKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSopICZzZW1hKTsKPiArCj4gKy0gICAgICAg
ICAgICAgIGlmIChQVEVfQVRPTUlDX0NPTVBBUkVfRVhDSEFOR0UoKGludCAqKSAmb25jZV9jb250
cm9sLT5zZW1hcGhvcmUsCj4gKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGludCkgc2VtYSwKPiArKyAgICAgICAgICAgICAgaWYgKFBURV9BVE9NSUNfQ09N
UEFSRV9FWENIQU5HRSgobG9uZyAqKSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsCj4gKysgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIHNlbWEsCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpCj4gKyAg
ICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgcHRlX29zU2VtYXBob3JlRGVs
ZXRlKChwdGVfb3NTZW1hcGhvcmVIYW5kbGUpc2VtYSk7Cj4gK0BAIC0xNjgsNyArMTY4LDcgQEAg
cHRocmVhZF9vbmNlIChwdGhyZWFkX29uY2VfdCAqIG9uY2VfY29udHJvbCwgdm9pZCAoKmluaXRf
cm91dGluZSkgKHZvaWQpKQo+ICsgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAvKiB3
ZSB3ZXJlIGxhc3QgKi8KPiArICAgICAgICAgICAgICAgaWYgKChzZW1hID0KPiArLSAgICAgICAg
ICAgICAgICAgICAgIChwdGVfb3NTZW1hcGhvcmVIYW5kbGUpIFBURV9BVE9NSUNfRVhDSEFOR0Uo
KGludCAqKSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsMCkpKQo+ICsrICAgICAgICAgICAgICAg
ICAgICAgKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSkgUFRFX0FUT01JQ19FWENIQU5HRSgobG9uZyAq
KSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsMCkpKQo+ICsgICAgICAgICAgICAgICAgIHsKPiAr
ICAgICAgICAgICAgICAgICAgIHB0ZV9vc1NlbWFwaG9yZURlbGV0ZShzZW1hKTsKPiArICAgICAg
ICAgICAgICAgICB9Cj4gKy0tCj4gKzIuMTEuMAo+ICsKPiAKCi0tIApEci4gRmxvcmlhbiBTY2ht
aWR0CuODleODreODvOODquOCouODs+ODu+OCt+ODpeODn+ODg+ODiApSZXNlYXJjaCBTY2llbnRp
c3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVhcm5pbmcgR3JvdXAKTkVDIExhYm9yYXRvcmllcyBF
dXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2LCBELTY5MTE1IEhlaWRlbGJlcmcKVGVsLiAgICAg
KzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0xNTUKZS1tYWls
OiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVnaXN0ZXJlZCBhdCBBbXRzZ2VyaWNo
dCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4CgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:32:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:32:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXhSH-0007R8-K1; Mon, 03 Jun 2019 07:32:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXhSF-0007R3-Rd
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:32:27 +0000
X-Inumbo-ID: bbdaeb26-85d1-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bbdaeb26-85d1-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:32:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7A4BFF2047;
 Mon,  3 Jun 2019 09:32:25 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id a25enWactE74; Mon,  3 Jun 2019 09:32:25 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 42E79F2046;
 Mon,  3 Jun 2019 09:32:21 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 09:32:20
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-7-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <51e20b27-1cde-3013-2f3f-953c455eaa0d@neclab.eu>
Date: Mon, 3 Jun 2019 09:32:20 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190415124320.4547-7-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 6/8] Disable
 atomic 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@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 sharan.santhanam@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>

SGkgQ29zdGluLAoKT24gNC8xNS8xOSAxOjQzIFBNLCBDb3N0aW4gTHVwdSB3cm90ZToKPiBXZSBk
aXNhYmxlIHRoZSBhdG9taWMgZnVuY3Rpb24gZ2l2ZW4gdGhhdCB3ZSBhcmUgdXNpbmcgdGhlbSBh
cyBtYWNyb3MuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNz
LnB1Yi5ybz4KPiAtLS0KPiAgIHB0ZV9vc2FsLmMgfCAzICsrKwo+ICAgMSBmaWxlIGNoYW5nZWQs
IDMgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9wdGVfb3NhbC5jIGIvcHRlX29zYWwu
Ywo+IGluZGV4IDg1NjVmNDkuLjZiZTYyZTMgMTAwNjQ0Cj4gLS0tIGEvcHRlX29zYWwuYwo+ICsr
KyBiL3B0ZV9vc2FsLmMKPiBAQCAtNDQ2LDYgKzQ0Niw4IEBAIHB0ZV9vc1Jlc3VsdCBwdGVfb3NT
ZW1hcGhvcmVDYW5jZWxsYWJsZVBlbmQocHRlX29zU2VtYXBob3JlSGFuZGxlIGgsCj4gICAJcmV0
dXJuIHJlc3VsdDsKPiAgIH0KPiAgIAo+ICsjaWYgMAo+ICsvKiBXZSB1c2UgbWFjcm9zIGluc3Rl
YWQgKi8KClNvLCBpbiBjb250cmFzdCB0byB0aGUgbGFzdCBwYXRjaCwgd2hlcmUgSSBzYWlkIGl0
IHdhcywgaW4gdGhlIHBhdGNoLCAKcHJvYmFibHkgYSBxdWVzdGlvbiBvZiBwcmVmZXJlbmNlIHdo
ZXRoZXIgdG8ga2VlcCB0aGUgY29kZSBjb21tZW50ZWQgb3V0IApvciByZW1vdmUgaXQsIEkgdGhp
bmsgaGVyZSBpdCB3b3VsZCBiZSBhY3R1YWxseSBiZXR0ZXIgdG8gaW5kZWVkIHJlbW92ZSAKaXQu
IEZvciB0aGUgcHJldmlvdXMgcGF0Y2gsIGl0IHdhcyBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCBj
b2RlLCBzbyBJIApkb24ndCBmZWVsIHN0cm9uZ2x5IGVpdGhlciB3YXkuIEJ1dCB0aGlzIGlzIG91
ciBvd24gZ2x1ZSBjb2RlLCBhbmQgeW91IApoYXZlIGNvbXBsZXRlbHkgcmVwbGFjZWQgdGhlIGZ1
bmN0aW9ucywgc28gSSBkb24ndCB0aGluayB0aGVyZSdzIGFueSAKcG9pbnQgb2Yga2VlcGluZyB0
aGlzIHBhcnQgYXJvdW5kIGFzIGEgY29tbWVudDsgaXQgd291bGQgYmUgZGlmZmVyZW50IGlmIAp0
aGlzIHdhcyBhIG5vdC15ZXQtaW1wbGVtZW50ZWQgcGFydCB0aGF0IG1pZ2h0IG5lZWQgdG8gYmUg
YWRhcHRlZCBsYXRlcjogCkkgZG9uJ3QgdGhpbmsgd2UnbGwgZXZlciBwcmFjdGljYWxseSB1c2Ug
dGhpcyBjb21tZW50ZWQtb3V0IGNvZGUsIHNvIGl0IAptaWdodCBhcyB3ZWxsIGdvIGFuZCBtYWtl
IHRoZSBzb3VyY2UgZmlsZSBtb3JlIGNvbmNpc2UuIChQbHVzLCB0aGVyZSdzIAphbHdheXMgYSBj
b2RlIGluIHRoZSBnaXQgaGlzdG9yeSBpZiB3ZSByZWFsbHkgbmVlZCBpdCB1bmV4cGVjdGVkbHkg
YXQgCnNvbWUgcG9pbnQpLgoKQ2hlZXJzLApGbG9yaWFuCgo+ICAgLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKPiAgICAqCj4gICAgKiBBdG9taWMgT3BlcmF0aW9ucwo+IEBAIC00ODUsNiArNDg3LDcgQEAg
aW50IHB0ZV9vc0F0b21pY0luY3JlbWVudChpbnQgKnBkZXN0KQo+ICAgewo+ICAgCXJldHVybiBh
dG9taWNfYWRkKHBkZXN0LCAxKTsKPiAgIH0KPiArI2VuZGlmCj4gICAKPiAgIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCj4gICAgKgo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq
44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQg
TWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rl
bi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQy
LTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1p
ZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJt
YW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:40:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:40: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 1hXhZd-00086A-8h; Mon, 03 Jun 2019 07:40:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXhZb-0007qm-Ir
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:40:03 +0000
X-Inumbo-ID: cb38cc4c-85d2-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cb38cc4c-85d2-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:40:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7D5B4F2047;
 Mon,  3 Jun 2019 09:40:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bT7DqinWly0s; Mon,  3 Jun 2019 09:40:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 46465F2046;
 Mon,  3 Jun 2019 09:39:56 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 09:39:55
 +0200
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <33f7acf1-714f-97d7-6e05-8dcebf830d39@neclab.eu>
Message-ID: <dc4cdb76-ddb4-2ca2-2cdf-021147277f16@neclab.eu>
Date: Mon, 3 Jun 2019 09:39:55 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <33f7acf1-714f-97d7-6e05-8dcebf830d39@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 0/8] Initial
 port of pthread-embedded library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 sharan.santhanam@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>

SGkgQ29zdGluLAoKb25lIGdlbmVyYWwgdGhpbmcgdGhhdCBJIGp1c3Qgbm90aWNlZCBhbmQgZG9u
J3Qgd2FudCB0byBjb21tZW50IG9uIGZvciAKZXZlcnkgZmlsZSByZXBlYXRlZGx5OiBpbiBhZGRp
dGlvbiB0byB0aGUgbGljZW5zZSBoZWFkZXIsIGNvdWxkIHlvdSBhZGQgCnRoZSBhcHByb3ByaWF0
ZSBTUERYIGlkZW50aWZpZXIgdG8gdGhlbT8gSSBrbm93IHdlJ3ZlIG5vdCBhbHdheXMgCnJlbWVt
YmVyZWQgdG8gZG8gaXQgZm9yIGFsbCBleHRlcm5hbCBsaWJyYXJpZXMsIGJ1dCBJIHRoaW5rIGl0
IHdvdWxkIGJlIApoZWxwZnVsIHRvIGhhdmUuIEFzIGZhciBhcyBJIHNlZSwgdGhlIGZpbGVzIGFy
ZSBhbGwgIkxHUEwgdjIgb3IgbGF0ZXIiLCAKc28gdGhlIGFjY29yZGluZyBTUERYIHN0cmluZyB3
b3VsZCBiZToKCi8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlciAq
LwoKSWYgdGhlcmUncyBhbnkgb3RoZXIgbGljZW5zZXMsIHlvdSBjYW4gZ2V0IHRoZSBjb3JyZWN0
IFNQRFggaWRlbnRpZmllciAKZnJvbSBodHRwczovL3NwZHgub3JnL2xpY2Vuc2VzLwoKVGhhbmtz
IQpGbG9yaWFuCgpPbiA1LzI3LzE5IDExOjU0IEFNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4g
SGkgQ29zdGluLAo+IAo+IHRoYW5rcyBmb3IgcG9ydGluZyB0aGlzLCB0aGlzIHdpbGwgYmUgdmVy
eSBoZWxwZnVsLiBJJ2xsIGdvIHRocm91Z2ggdGhpcyAKPiBub3csIHdoZW5ldmVyIEkgaGF2ZSB0
aW1lLiBBcyBpdCBpcyBhbiBleHRlcm5hbCBsaWJyYXJ5LCBJIGRvbid0IHRoaW5rIAo+IHRoZSBy
ZXZpZXcgc3RhbmRhcmQgaGFzIHRvIGJlIHF1aXRlIGFzIHJpZ29yb3VzIGFzIGZvciB0aGUgaW50
ZXJuYWwgCj4gdW5pa3JhZnQgKHdoZXJlIGludGVyZmFjZXMsIGZpbGUgbG9jYXRpb25zLCBldGMu
IGFyZSB2ZXJ5IGltcG9ydGFudCB0byAKPiBrZWVwIHRoaW5ncyBjb25zaXN0ZW50KSwgYnV0IEkg
YWxyZWFkeSBoYXZlIHNvbWUgc21hbGwgcmVtYXJrcyBmb3IgdGhlIAo+IGZpcnN0IGZldyBwYXRj
aGVzLiBTaG91bGQgYWxsIGJlIGVhc3kgdG8gcmVzb2x2ZSBzbyBmYXIuCj4gCj4gQ2hlZXJzLAo+
IEZsb3JpYW4KPiAKPiBPbiA0LzE1LzE5IDI6NDMgUE0sIENvc3RpbiBMdXB1IHdyb3RlOgo+PiBU
aGlzIHBhdGNoZXMgaW50cm9kdWNlIHN1cHBvcnQgZm9yIHB0aHJlYWQtZW1iZWRkZWQgdG8gVW5p
a3JhZnQuCj4+Cj4+IENvc3RpbiBMdXB1ICg4KToKPj4gwqDCoCBBZGQgZG9jdW1lbnRhdGlvbgo+
PiDCoMKgIEFkZCAuZ2l0aWdub3JlCj4+IMKgwqAgcGF0Y2hlczogQWRkIHBhdGNoZXMgZm9yIHBy
b3BlciBidWlsZGluZyBvZiBvcmlnaW5hbCBsaWJyYXJ5Cj4+IMKgwqAgSW5pdGlhbCBwb3J0IG9m
IHB0aHJlYWQtZW1iZWRkZWQgdG8gVW5pa3JhZnQKPj4gwqDCoCBwYXRjaGVzOiBGaXggYXRvbWlj
IG9wZXJhdGlvbnMKPj4gwqDCoCBEaXNhYmxlIGF0b21pYyBmdW5jdGlvbnMKPj4gwqDCoCBBZGQg
bWlzc2luZyBmdW5jdGlvbnMgZm9yIFJ1YnkgaW50ZXJwcmV0ZXIKPj4gwqDCoCBpbmNsdWRlL3B0
aHJlYWQuaDogR3VhcmQgQyBjb2RlIGZvciBDKysKPj4KPj4gwqAgLmdpdGlnbm9yZcKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIHzCoCAyNyArCj4+IMKgIENPRElOR19TVFlMRS5tZMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgfMKgwqAgNCArCj4+IMKgIENPTlRSSUJVVElORy5tZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCAr
Cj4+IMKgIENPUFlJTkcubWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzAgKysKPj4gwqAg
Q29uZmlnLnVrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzAgKysKPj4gwqAgTUFJTlRB
SU5FUlMubWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEwICsKPj4gwqAgTWFrZWZpbGUudWvCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgfCAzMjYgKysrKysrKysrKysrKwo+PiDCoCBSRUFETUUubWTCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMSArCj4+IMKgIGV4cG9ydHN5bXMudWvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCB8wqAgOTAgKysrKwo+PiDCoCBpbmNsdWRlL3B0ZV9vc2FsLmjCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAx
NiArCj4+IMKgIGluY2x1ZGUvcHRlX3R5cGVzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTAgKwo+PiDCoCBpbmNsdWRl
L3B0aHJlYWQuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNTEgKysKPj4gwqAgaW5jbHVkZS9zeXMvX3B0aHJlYWR0
eXBlcy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC
oCA2ICsKPj4gwqAgbWlzc2luZ19mdW5jdGlvbnMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTUzICsrKysrKwo+PiDCoCAu
Li54LVNldC10eXBlLXNpemUtb2YtcmVzdWx0LXVzZWQtaW4tcHRocmVhZC5wYXRjaCB8IDQ5NCAK
Pj4gKysrKysrKysrKysrKysrKysrKwo+PiDCoCAuLi54LVBhc3MtcmlnaHQtYXJndW1lbnRzLW9u
LXRlc3RzLWV4aXQ0LWFuZC5wYXRjaCB8wqAgNTQgKysKPj4gwqAgLi4ueC1GaXgtbWFjcm8tZGVm
aW5pdGlvbnMtZm9yLXRlc3RzLW9uY2UzLWEucGF0Y2ggfMKgIDM2ICsrCj4+IMKgIC4uLmxlLXBy
aW9yaXR5LXRlc3RzLXVudGlsLXdlLWFkZC1wcmVlbXB0aXZlLnBhdGNoIHzCoCAyOCArKwo+PiDC
oCBwYXRjaGVzLzAwMDUtVXNlLVVuaWtyYWZ0LXlpZWxkLWZ1bmN0aW9uLnBhdGNowqDCoMKgwqAg
fMKgIDIyICsKPj4gwqAgLi4uYWRlci1pbmNsdXNpb25zLWZvci1mdW5jdGlvbnMtZnJvbS1oZWFk
ZXIucGF0Y2ggfMKgIDM1ICsrCj4+IMKgIHBhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9wZXJhdGlv
bnMtYXMtbWFjcm9zLnBhdGNoIHzCoCA2MiArKysKPj4gwqAgLi4uYnVnZml4LUZpeC1hdG9taWMt
b3BlcmF0aW9ucy1vbi1zZW1hcGhvcmUucGF0Y2ggfMKgIDYzICsrKwo+PiDCoCBwdGVfb3NhbC5j
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1NDEgCj4+ICsrKysrKysrKysrKysrKysrKysrKwo+
PiDCoCAyMyBmaWxlcyBjaGFuZ2VkLCAyMTAzIGluc2VydGlvbnMoKykKPj4gwqAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IC5naXRpZ25vcmUKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlM
RS5tZAo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5HLm1kCj4+IMKgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcu
dWsKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCj4+IMKgIGNyZWF0ZSBt
b2RlIDEwMDY0NCBNYWtlZmlsZS51awo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1k
Cj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrCj4+IMKgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL3B0ZV9vc2FsLmgKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUvcHRlX3R5cGVzLmgKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvcHRocmVhZC5o
Cj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmgKPj4g
wqAgY3JlYXRlIG1vZGUgMTAwNjQ0IG1pc3NpbmdfZnVuY3Rpb25zLmMKPj4gwqAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IAo+PiBwYXRjaGVzLzAwMDEtdGVzdHMtYnVnZml4LVNldC10eXBlLXNpemUtb2Yt
cmVzdWx0LXVzZWQtaW4tcHRocmVhZC5wYXRjaAo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgCj4+
IHBhdGNoZXMvMDAwMi10ZXN0cy1idWdmaXgtUGFzcy1yaWdodC1hcmd1bWVudHMtb24tdGVzdHMt
ZXhpdDQtYW5kLnBhdGNoCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCAKPj4gcGF0Y2hlcy8wMDAz
LXRlc3RzLWJ1Z2ZpeC1GaXgtbWFjcm8tZGVmaW5pdGlvbnMtZm9yLXRlc3RzLW9uY2UzLWEucGF0
Y2gKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IAo+PiBwYXRjaGVzLzAwMDQtdGVzdHMtRGlzYWJs
ZS1wcmlvcml0eS10ZXN0cy11bnRpbC13ZS1hZGQtcHJlZW1wdGl2ZS5wYXRjaAo+PiDCoCBjcmVh
dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDA1LVVzZS1VbmlrcmFmdC15aWVsZC1mdW5jdGlvbi5w
YXRjaAo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgCj4+IHBhdGNoZXMvMDAwNi1TZXBhcmF0ZS1o
ZWFkZXItaW5jbHVzaW9ucy1mb3ItZnVuY3Rpb25zLWZyb20taGVhZGVyLnBhdGNoCj4+IMKgIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDctVXNlLWF0b21pYy1vcGVyYXRpb25zLWFzLW1h
Y3Jvcy5wYXRjaAo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgCj4+IHBhdGNoZXMvMDAwOC1idWdm
aXgtRml4LWF0b21pYy1vcGVyYXRpb25zLW9uLXNlbWFwaG9yZS5wYXRjaAo+PiDCoCBjcmVhdGUg
bW9kZSAxMDA2NDQgcHRlX29zYWwuYwo+Pgo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV
44Ot44O844Oq44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lz
dGVtcyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpL
dXJmw7xyc3Rlbi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDAp
NjIyMSA0MzQyLTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9y
aWFuLnNjaG1pZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5o
ZWltLCBHZXJtYW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:43:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:43: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 1hXhdC-0008J2-K3; Mon, 03 Jun 2019 07:43:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhdA-0008Ix-Mm
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:43:44 +0000
X-Inumbo-ID: 4f3dfffb-85d3-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4f3dfffb-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:43:43 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id d17so2297032wmb.3
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:43:43 -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=m9fyU60unIOMSran9bSKgEsEFvtfNTdFzrR4iKALaHc=;
 b=fBvsoHznh2UtUB95kPk63zbHOtKqwxz7FDAZlv6eeq7oeOAyQaFICH3fmshxk5zW1Y
 ovPUwKWN9NjjqyyZ05azluKivVMzwOdzBmF/qQUHILdd+ftZgMfTCUxdyA7XS6xOUijv
 06URVXJXzaaTe7GtBqjfy2vY6n2v5oNPxoyAv3T2ebxVJpQKyWXa4JdFWi1YQ3XtxZyU
 mMyxx/ZKhCSW67xE8WlkuAG+z178Iyp2/43SGwn5JrsGs0XjVa4XziuaIHUc7aCON3k8
 y1LVofaBlxkA4izJLQqIn7n61ZXckb+1PE/NdIqwR7VmApLcs/fW0TPRorYsTs2s8vR3
 hjww==
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=m9fyU60unIOMSran9bSKgEsEFvtfNTdFzrR4iKALaHc=;
 b=n1LSFuYN70tL2po02iKyCEkF/4IB9tA+cIqk3lU5L5MM8m523llQVNMaCUG951LGR0
 A5z15EyFREnFoTyIuYcq5jVRsGMuOLqr/h/whuAQoiE7Uqr138Be95A2UIpIdL+F8vs6
 rFxMm3mf6V8BcoJ7xOJ3P9bSC0Uov3MsC5P6j09ClzrYYVduWCElwEZXjncF3uSm/uWo
 Q07wCHB2Oyihxs3f9qDh26OWalcYFLob9C+GSAs4jfidfcsEzJNRtVwwOD7XInBr7/5m
 YpjIDBoika6F34UjXyC9TdIDbXsi7JJyZ7iwkfAH7WpSXq1S/wkUAkZjkH/nGxatfKns
 31FQ==
X-Gm-Message-State: APjAAAVK5HlIteWsxrxWp5/XZaeiMS/bs6uWVp4RNA20S7/ZizruayAA
 pST2Ylf3NVaO2tR3uU3S+w2mSjQKOQFNTQ==
X-Google-Smtp-Source: APXvYqycsZT8yf7+/QD1IqsxhgY+Wi2fRO72dTf37fSB8EfKLiscDEbuLfpDu6byKEqJ0m0Jvk+Xjg==
X-Received: by 2002:a1c:f507:: with SMTP id t7mr13412333wmh.149.1559547821785; 
 Mon, 03 Jun 2019 00:43:41 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id s14sm9941464wmh.7.2019.06.03.00.43.40
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:43:41 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:43:33 +0300
Message-Id: <20190603074333.12285-1-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/virtio: Reset device helper
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSByZXNldCBkZXZpY2UgaGVscGVyIGZ1bmN0aW9uLgoKU2lnbmVk
LW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29t
PgotLS0KIHBsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYnVzLmggfCAyMiArKysr
KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQoKZGlm
ZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYnVzLmggYi9wbGF0
L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2J1cy5oCmluZGV4IDg4ZDA5MDY2Li43MmE4
Mjk4MyAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19idXMu
aAorKysgYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2J1cy5oCkBAIC0xNDYs
NiArMTQ2LDI4IEBAIGludCB2aXJ0aW9fYnVzX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgdmlydGlv
X2RldiAqdmRldik7CiB2b2lkIF92aXJ0aW9fYnVzX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qgdmly
dGlvX2RyaXZlciAqdmRydik7CiAKIC8qKgorICogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIHZp
cnRpbyBkZXZpY2UgLgorICogQHBhcmFtIHZkZXYKKyAqCVJlZmVyZW5jZSB0byB0aGUgdmlydGlv
IGRldmljZQorICogQHJldHVybgorICoJMCBvbiBzdWNjZXNzZnVsIHVwZGF0aW5nIHRoZSBzdGF0
dXMuCisgKgktRU5PVFNVUCwgaWYgdGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRo
ZSB2aXJ0aW8gZGV2aWNlLgorICovCitzdGF0aWMgaW5saW5lIGludCB2aXJ0aW9fZGV2X3Jlc2V0
KHN0cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2KQoreworCWludCByYyA9IC1FTk9UU1VQOworCisJVUtf
QVNTRVJUKHZkZXYpOworCisJaWYgKGxpa2VseSh2ZGV2LT5jb3BzLT5kZXZpY2VfcmVzZXQpKSB7
CisJCXZkZXYtPmNvcHMtPmRldmljZV9yZXNldCh2ZGV2KTsKKwkJcmMgPSAwOworCX0KKworCXJl
dHVybiByYzsKK30KKworLyoqCiAgKiBUaGUgZnVuY3Rpb24gdXBkYXRlcyB0aGUgc3RhdHVzIG9m
IHRoZSB2aXJ0aW8gZGV2aWNlCiAgKiBAcGFyYW0gdmRldgogICogICAgICBSZWZlcmVuY2UgdG8g
dGhlIHZpcnRpbyBkZXZpY2UuCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:44:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:44: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 1hXhdU-0008Jx-N2; Mon, 03 Jun 2019 07:44:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhdT-0008Js-VY
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:44:03 +0000
X-Inumbo-ID: 5aa24ee9-85d3-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5aa24ee9-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:44:02 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id 22so1653113wmg.2
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:44: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;
 bh=VOrlQxyKKyZL3CA69BJBP34K9ENNvc2aoXts5a0yNIM=;
 b=BujccZp9oCY5FrwgyHz/X2cpM15jKJGSYbKJ0eZtNFfRf/Ll7gTwzDAmpTLfNJAFPG
 urP+ciD2iwT19pUweP/5EaTGTrd00AAO0uxpGoP2rhU0JU002YtzhAlQo+h4ZGFxGIp7
 5vh416BsDRshDiueMjbpO0KSU+U80S7zb9lbNyJ6nHjf3pX4uQompR0P3iS40zspMYLE
 Ovv+mzOk9goNcsNIRBVOy7/CHT9nvYLm+uZjcweNJzuaVeuEey7NOgENyCOCDiCmcALP
 PT/JQdmlTCaZNpY1CFEk3lCaZ4oYJlYjaHTG4VKeUoj0fW+8dRzQ9OM7watdE/wKUPW9
 1wnQ==
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=VOrlQxyKKyZL3CA69BJBP34K9ENNvc2aoXts5a0yNIM=;
 b=NxLcmqCrPUUcN7Egmdxbc8UkASO99KzTRUhRkcsy3ZmqS02nRqVK8Y1lKSdnB0fJNd
 H4GdzguajP2xbyhw3UcxOaHQeSvb42m0vYVJwXtFscQhSraXlpYis8hI3YM4m4qYhfa+
 0hQGmyLbaqTyCDn+W/AGKYISR5WBc234A1CM0J1UjX/f48v3eAlSUEHVmHtas+b/KuYA
 5taIJdo3rWUntTYMRTO29sPogoNa0mj1uczdlTXJDzUrGpbVFFjk6h29up97kJn9fL+5
 7k1RoPfXJJQjF3U2rkC9xzmFfNlqY9HqI9BJKh8KISYVE8vwkcrpdz8s1VwkIevXkFJU
 Lujw==
X-Gm-Message-State: APjAAAUf1BDpzNvICiFTyB910YWxF+B0cJHqKCy+q/zn48KoztSyF89J
 YbcoBzzF6o94q50PI3jOaGmmBe3xIWU=
X-Google-Smtp-Source: APXvYqySTPsZY6k1KlBVLrtDbzVGvnA8OVL2Hit6pPH0pUEwywQt+mZ+KqmSsyqNSSxuTd8j3LVa2g==
X-Received: by 2002:a7b:c937:: with SMTP id h23mr9245044wml.120.1559547841068; 
 Mon, 03 Jun 2019 00:44:01 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id y184sm6483185wmg.14.2019.06.03.00.44.00
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:44:00 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:43:53 +0300
Message-Id: <20190603074353.12565-1-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/virtio: Release an individual
 virtqueue
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSByZWxlYXNlIGFuIGluZGl2aWR1YWwgdmlydHF1ZXVlIGltcGxl
bWVudGF0aW9uLgoKU2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJv
eGFuYTE5OTZAZ21haWwuY29tPgotLS0KIHBsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0
aW9fYnVzLmggfCAyMSArKysrKysrKysrKysrKysrKysrKysKIHBsYXQvZHJpdmVycy92aXJ0aW8v
dmlydGlvX3BjaS5jICAgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5n
ZWQsIDM3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS92
aXJ0aW8vdmlydGlvX2J1cy5oIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19i
dXMuaAppbmRleCA3MmE4Mjk4My4uZGJjNzdhZjYgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9p
bmNsdWRlL3ZpcnRpby92aXJ0aW9fYnVzLmgKKysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmly
dGlvL3ZpcnRpb19idXMuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHN0cnVjdCB2aXJ0aW9fY29uZmln
X29wcyB7CiAJCQkJICAgICAgX191MTYgcXVldWVfaWQsCiAJCQkJICAgICAgdmlydHF1ZXVlX2Nh
bGxiYWNrX3QgY2FsbGJhY2ssCiAJCQkJICAgICAgc3RydWN0IHVrX2FsbG9jICphKTsKKwl2b2lk
ICgqdnFfcmVsZWFzZSkoc3RydWN0IHZpcnRpb19kZXYgKnZkZXYsIHN0cnVjdCB2aXJ0cXVldWUg
KnZxLAorCQkJCXN0cnVjdCB1a19hbGxvYyAqYSk7CiB9OwogCiAvKioKQEAgLTMxNSw2ICszMTcs
MjUgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdmlydHF1ZXVlICp2aXJ0aW9fdnF1ZXVlX3NldHVw
KHN0cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2LAogCXJldHVybiB2cTsKIH0KIAorLyoqCisgKiBBIGhl
bHBlciBmdW5jdGlvbiB0byByZWxlYXNlIGFuIGluZGl2aWR1YWwgdmlydHF1ZXVlLgorICogQHBh
cmFtIHZkZXYKKyAqCVJlZmVyZW5jZSB0byB0aGUgdmlydGlvIGRldmljZS4KKyAqIEBwYXJhbSB2
cQorICoJUmVmZXJlbmNlIHRvIHRoZSB2aXJ0cXVldWUuCisgKiBAcGFyYW0gYQorICoJQSByZWZl
cmVuY2UgdG8gdGhlIGFsbG9jYXRvci4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIHZpcnRpb192
cXVldWVfcmVsZWFzZShzdHJ1Y3QgdmlydGlvX2RldiAqdmRldiwKKwkJc3RydWN0IHZpcnRxdWV1
ZSAqdnEsIHN0cnVjdCB1a19hbGxvYyAqYSkKK3sKKwlVS19BU1NFUlQodmRldik7CisJVUtfQVNT
RVJUKHZxKTsKKwlVS19BU1NFUlQoYSk7CisJaWYgKGxpa2VseSh2ZGV2LT5jb3BzLT52cV9yZWxl
YXNlKSkKKwkJdmRldi0+Y29wcy0+dnFfcmVsZWFzZSh2ZGV2LCB2cSwgYSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgaW50IHZpcnRpb19oYXNfZmVhdHVyZXMoX191NjQgZmVhdHVyZXMsIF9fdTggYnBv
cykKIHsKIAlfX3U2NCB0bXBfZmVhdHVyZSA9IDA7CmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMv
dmlydGlvL3ZpcnRpb19wY2kuYyBiL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaS5jCmlu
ZGV4IGUzOThiZmM2Li40ZDY0ZDliOCAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL3ZpcnRpby92
aXJ0aW9fcGNpLmMKKysrIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpLmMKQEAgLTky
LDYgKzkyLDggQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKnZwY2lfbGVnYWN5X3ZxX3NldHVw
KHN0cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2LAogCQkJCQkgICAgICBfX3UxNiBudW1fZGVzYywKIAkJ
CQkJICAgICAgdmlydHF1ZXVlX2NhbGxiYWNrX3QgY2FsbGJhY2ssCiAJCQkJCSAgICAgIHN0cnVj
dCB1a19hbGxvYyAqYSk7CitzdGF0aWMgdm9pZCB2cGNpX2xlZ2FjeV92cV9yZWxlYXNlKHN0cnVj
dCB2aXJ0aW9fZGV2ICp2ZGV2LAorCQlzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgc3RydWN0IHVrX2Fs
bG9jICphKTsKIHN0YXRpYyBpbnQgdmlydGlvX3BjaV9oYW5kbGUodm9pZCAqYXJnKTsKIHN0YXRp
YyBpbnQgdnBjaV9sZWdhY3lfbm90aWZ5KHN0cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2LCBfX3UxNiBx
dWV1ZV9pZCk7CiBzdGF0aWMgaW50IHZpcnRpb19wY2lfbGVnYWN5X2FkZF9kZXYoc3RydWN0IHBj
aV9kZXZpY2UgKnBjaV9kZXYsCkBAIC0xMTAsNiArMTEyLDcgQEAgc3RhdGljIHN0cnVjdCB2aXJ0
aW9fY29uZmlnX29wcyB2cGNpX2xlZ2FjeV9vcHMgPSB7CiAJLnN0YXR1c19zZXQgICA9IHZwY2lf
bGVnYWN5X3BjaV9zdGF0dXNfc2V0LAogCS52cXNfZmluZCAgICAgPSB2cGNpX2xlZ2FjeV9wY2lf
dnFfZmluZCwKIAkudnFfc2V0dXAgICAgID0gdnBjaV9sZWdhY3lfdnFfc2V0dXAsCisJLnZxX3Jl
bGVhc2UgICA9IHZwY2lfbGVnYWN5X3ZxX3JlbGVhc2UsCiB9OwogCiBzdGF0aWMgaW50IHZwY2lf
bGVnYWN5X25vdGlmeShzdHJ1Y3QgdmlydGlvX2RldiAqdmRldiwgX191MTYgcXVldWVfaWQpCkBA
IC0xODgsNiArMTkxLDE5IEBAIGVycl9leGl0OgogCXJldHVybiB2cTsKIH0KIAorc3RhdGljIHZv
aWQgdnBjaV9sZWdhY3lfdnFfcmVsZWFzZShzdHJ1Y3QgdmlydGlvX2RldiAqdmRldiwKKwkJc3Ry
dWN0IHZpcnRxdWV1ZSAqdnEsIHN0cnVjdCB1a19hbGxvYyAqYSkKK3sKKwlzdHJ1Y3QgdmlydGlv
X3BjaV9kZXYgKnZwZGV2ID0gTlVMTDsKKworCVVLX0FTU0VSVCh2cSAhPSBOVUxMKTsKKwlVS19B
U1NFUlQoYSAhPSBOVUxMKTsKKworCXZwZGV2ID0gdG9fdmlydGlvcGNpZGV2KHZkZXYpOworCVVL
X1RBSUxRX1JFTU9WRSgmdnBkZXYtPnZkZXYudnFzLCB2cSwgbmV4dCk7CisJdmlydHF1ZXVlX2Rl
c3Ryb3kodnEsIGEpOworfQorCiBzdGF0aWMgaW50IHZwY2lfbGVnYWN5X3BjaV92cV9maW5kKHN0
cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2LCBfX3UxNiBudW1fdnFzLAogCQkJCSAgIF9fdTE2ICpxZGVz
Y19zaXplKQogewotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:44:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:44: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 1hXhdv-0008MM-Qp; Mon, 03 Jun 2019 07:44:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhdu-0008MH-Sz
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:44:30 +0000
X-Inumbo-ID: 6ae12d0b-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x42a.google.com (unknown [2a00:1450:4864:20::42a])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6ae12d0b-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:44:29 +0000 (UTC)
Received: by mail-wr1-x42a.google.com with SMTP id m3so10895114wrv.2
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:44:29 -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=Xr8MGDjdKHxE584PJbCXtiHWxM5aW9YhaO6OZjnpgfg=;
 b=XjXxcN3K8TZYA8BP8ptxGo+tQW9rZ7Rq+taawtUDC5CZkMX0uFeaeI/PUMgNVVOFjd
 sFOQke3A6MoOrh3TE7i9SXYn1WkZJZtxYBqrtUQhA6ysbFF6PPMYgx+atD2Im+9b3nYY
 u50yGPMpDPpCrMl0ZdKJfUD9gttssrYIoaPokFFbRgU8AoXJQEjdmjhoA7QBeV3hbnXO
 HpH90eunQrXT/6JGrc4A6ztHH5gl2v3fZ2T2hi1juE6a93RYl0BroFwuY6JyeSFbCHPB
 7zskdmqFmNc4YzdjhW9NpVK3BQ7wEId5XDWHsr5IoG73MJ6oGlmJ8Re0kLkmbbGvo3lb
 xNnw==
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=Xr8MGDjdKHxE584PJbCXtiHWxM5aW9YhaO6OZjnpgfg=;
 b=mWvE8pWHs8d/xJWEHph2uom5nRQUecak7ZDm1ghxuGx9PnPReXLZWU4Bq13cy2O+Zs
 04OMSyG74Hbq4Mwx4k47W+Tc/pwjM9QxB13qQuSbdgoEoEEdRn5POfjhxz2wvPUYLw/3
 the1MANwTchVx5zgWT7qX6+483dE1rtipZAJPbCUrL57uJRuT15aVdAt9hSsaLfRleYq
 WClO94NE9qwdbpYoW+G8X3VN3VSCAgaMC5QTTp31JXqd1U8ZVQWEoDOcESJjzYI+1Bf8
 3CHc/wSUGd2QXtvKHRPjsBJ/FnE6AzquwxoC+ptiR9VHLDk3xLLSnqafx3mKypm4Hy+G
 v07g==
X-Gm-Message-State: APjAAAWDZjwR+Rq+5cdRLSHnHnTKlujwrQndPJ8dRe9Gqil+CY16aGRG
 MvbT2ll4+FkiJHzOkMpbrFrGJ1apVUM=
X-Google-Smtp-Source: APXvYqzIvUCYjtTX/Mpqk6rdaU8qUxYx+KW0+yuBmC1InXuxQsKjvulUfH62et9cr8dylPThBBHPsQ==
X-Received: by 2002:a5d:4886:: with SMTP id g6mr14687103wrq.108.1559547868277; 
 Mon, 03 Jun 2019 00:44:28 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id j66sm16330014wmb.24.2019.06.03.00.44.27
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:44:27 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:44:20 +0300
Message-Id: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 00/12] Virtio Block Driver
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

SW50cm9kdWNlcyB0aGUgVmlydGlvIEJsb2NrIERyaXZlciBpbXBsZW1lbnRhdGlvbiBiYXNlZCBv
biBVbmlrcmFmdCBCbG9jawpBUEkuCgpJdCBzdXBwb3J0cyB0aGUgYmFzaWMgZnVuY3Rpb25zIGZy
b20gdGhlIEFQSTogY29uZmlndXJlLCBxdWV1ZSBzZXR1cCwKc3RhcnQvc3RvcCwgc2VuZC9yZWNl
aXZlIHJlcXVlc3RzIHdoaWNoIGFyZSBpbXBsZW1lbnRlZCBpbiB2aXJ0aW9fYmxrLmMKVGhlIGlu
dGVyZmFjZSB3aGljaCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBm
b3VuZAppbiB2aXJ0aW9fYmxrLmgKClJveGFuYSBOaWNvbGVzY3UgKDEyKToKICBwbGF0L3ZpcnRp
bzogU2tlbGV0b24gZm9yIHZpcnRpbyBibG9jayBkcml2ZXIKICBwbGF0L2RyaXZlcnM6IFJlZ2lz
dGVyIHZpcnRpby1ibGsgd2l0aCBsaWJ1a2Jsa2RldgogIHBsYXQvZHJpdmVyczogSW5pdCB2aXJ0
aW8gYmxvY2sgZGV2aWNlCiAgcGxhdC9kcml2ZXJzOiBDb25maWd1cmUgdmlydGlvIGJsb2NrIGRl
dmljZQogIHBsYXQvZHJpdmVyczogQ3JlYXRlIHZpcnRpby1ibG9jayBxdWV1ZXMKICBwbGF0L2Ry
aXZlcnM6IENvbmZpZ3VyZSB2aXJ0aW8gYmxvY2sgcXVldWUKICBwbGF0L2RyaXZlcnM6IEVuYWJs
ZS9kaXNhYmxlIGludGVycnVwdHMgb24gdmlydGlvIGJsb2NrIHF1ZXVlcwogIHBsYXQvZHJpdmVy
czogU3RhcnQgdmlydGlvIGJsb2NrIGRldmljZQogIHBsYXQvZHJpdmVyczogUmVxdWVzdCBpbnRl
cmZhY2UgZm9yIHZpcnRpbyBibG9jawogIHBsYXQvZHJpdmVyczogRmx1c2ggcmVxdWVzdHMgZm9y
IHZpcnRpbyBibG9jawogIHBsYXQvZHJpdmVyczogSGFuZGxlIHJlc3BvbnNlcyBmcm9tIGJhY2tl
bmQgZm9yIHZpcnRpbyBibG9jawogIHBsYXQvZHJpdmVyczogQWRkIHJlc3Qgb2YgdGhlIGludGVy
ZmFjZSBmb3IgdmlydGlvIGJsb2NrCgogcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRp
b19ibGsuaCB8ICA5NyArKysrCiBwbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYyAgICAg
ICAgIHwgOTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQva3ZtL0NvbmZp
Zy51ayAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwogcGxhdC9rdm0vTWFrZWZpbGUudWsg
ICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiA0IGZpbGVzIGNoYW5nZWQsIDEwNjUgaW5zZXJ0
aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92
aXJ0aW9fYmxrLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRp
b19ibGsuYwoKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:45:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:45: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 1hXhfI-0008O3-Vu; Mon, 03 Jun 2019 07:45:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfI-0008Nt-5h
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:45:56 +0000
X-Inumbo-ID: 9d60467e-85d3-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9d60467e-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:45:54 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id t5so9889577wmh.3
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:45: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=NBxfClgqbsBsh2BkPe4RGSLKndwqEwg3VouAploBIwE=;
 b=LTnd3KFzG/U2stvylLBPVHerAtnaP08tt+FwJ861eTqg+ChKPDoHLKfPmMhuGr+DcZ
 C8wIUdGITwK6ekf5pEanT4Me9fKodyvC13BUQ/1oWAv75gd3uVnzNQFwmFFDwE6KE52c
 0NxMJORi9DV6RbbU1m3UHWv55Pfja8DFz7kOOcYB4k5jhMTl56R+InKbGP2bz6zDMk5W
 x6c+B4VJ2p5Zdc3x2sfBFmYT4L+PkfJoYcihvugzm0eaZXBvyrMY0/0iibrcMxH4MrWP
 tHa/Zlv4akCwZUpQ3qX4GyTqrP2wqAX5hKXNosTdxVoZc3/7oR7kYSdqWzfZcb7Wg4YZ
 gChA==
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=NBxfClgqbsBsh2BkPe4RGSLKndwqEwg3VouAploBIwE=;
 b=cVlc9w+nGJG3pSQi4sSNmxiS8RUE78jCvQL9Btl2yK3R0Tf2HFBrx3ijgc+oKqmwPR
 RAvbinBnW+i5IM4wPm4O7YI45fCyXtueVW3JbLE8vgQR2wJJmTNpR68ZDTW2/7lNsyNU
 A7UfQMg7tEPHaStT7QY/yx/tmJqBWdDWU0tcT7QKLIzKS++Jx5JAuMp3F8xov09+09sa
 Wnu5r2fhfWCqIfpTct+jvR96g2l3hCV9/3wsYIXSWzCaJ+nJU+a1Q3G9hB+CH18C0KZd
 Lh/z1FZXhDp1szaJ9MdRZKgxa5EVv/gQ7fMer2DitjA5iZsEzUGzKQsIp/oPvWsxQ0vb
 tSfA==
X-Gm-Message-State: APjAAAUZ9XeLFvmBl1iRU4VcdT5x3aYg3fo0uj8QICziioaYcePcQb0Z
 WMh4DPjAvyZhvA/WksQVFxHQB0iu3dw=
X-Google-Smtp-Source: APXvYqzl8zneqpYzSfVc0FAVPOFWlxutIxXdAWjLlXrU1oTdz2rhjxTNZ4t3W8932PzbVMqfaEiuAw==
X-Received: by 2002:a1c:1bc1:: with SMTP id b184mr13796611wmb.42.1559547952978; 
 Mon, 03 Jun 2019 00:45:52 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:52 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:34 +0300
Message-Id: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 01/12] plat/virtio: Skeleton for
 virtio block driver
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSB2aXJ0aW8gYmxvY2sgZHJpdmVyIHNrZWxldG9uLgoK
U2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21h
aWwuY29tPgotLS0KIHBsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jIHwgNTkgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogcGxhdC9rdm0vQ29uZmlnLnVrICAg
ICAgICAgICAgICAgfCAgOSArKysrKysKIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICAg
IHwgMTIgKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jCgpkaWZmIC0tZ2l0
IGEvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMgYi9wbGF0L2RyaXZlcnMvdmlydGlv
L3ZpcnRpb19ibGsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMjk2Zjk5
YTgKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYwpA
QCAtMCwwICsxLDU5IEBACisvKgorICogQXV0aG9yczogUm94YW5hIE5pY29sZXNjdSA8bmljb2xl
c2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCisgKgorICogUGVybWlzc2lvbiB0byB1
c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorICogZm9y
IGFueSBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3Zp
ZGVkCisgKiB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIGFwcGVhcgorICogaW4gYWxsIGNvcGllcy4KKyAqCisgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMCisgKiBXQVJS
QU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisgKiBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNU
LCBJTkRJUkVDVCwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBX
SEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MKKyAqIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRT
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTgorICogQ09OTkVDVElPTiBX
SVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqLworLyogVGFr
ZW4gYW5kIGFkYXB0ZWQgZnJvbSB2aXJ0aW8tbmV0IGJlY2F1c2Ugb2YgY29uc2lzdGVuY3kgcmVh
c29uLiAqLworCisjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb19idXMuaD4KKyNpbmNsdWRlIDx2aXJ0
aW8vdmlydGlvX2lkcy5oPgorCisjZGVmaW5lIERSSVZFUl9OQU1FCQkidmlydGlvLWJsayIKKwor
c3RhdGljIHN0cnVjdCB1a19hbGxvYyAqYTsKK3N0YXRpYyBjb25zdCBjaGFyICpkcnZfbmFtZSA9
IERSSVZFUl9OQU1FOworCitzdGF0aWMgaW50IHZpcnRpb19ibGtfYWRkX2RldihzdHJ1Y3Qgdmly
dGlvX2RldiAqdmRldikKK3sKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKHZkZXYgIT0gTlVM
TCk7CisKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgdmlydGlvX2Jsa19kcnZfaW5pdChz
dHJ1Y3QgdWtfYWxsb2MgKmRydl9hbGxvY2F0b3IpCit7CisJLyogZHJpdmVyIGluaXRpYWxpemF0
aW9uICovCisJaWYgKCFkcnZfYWxsb2NhdG9yKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWEgPSBk
cnZfYWxsb2NhdG9yOworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRp
b19kZXZfaWQgdmJsa19kZXZfaWRbXSA9IHsKKwl7VklSVElPX0lEX0JMT0NLfSwKKwl7VklSVElP
X0lEX0lOVkFMSUR9IC8qIExpc3QgVGVybWluYXRvciAqLworfTsKKworc3RhdGljIHN0cnVjdCB2
aXJ0aW9fZHJpdmVyIHZibGtfZHJ2ID0geworCS5kZXZfaWRzID0gdmJsa19kZXZfaWQsCisJLmlu
aXQgICAgPSB2aXJ0aW9fYmxrX2Rydl9pbml0LAorCS5hZGRfZGV2ID0gdmlydGlvX2Jsa19hZGRf
ZGV2Cit9OworVklSVElPX0JVU19SRUdJU1RFUl9EUklWRVIoJnZibGtfZHJ2KTsKZGlmZiAtLWdp
dCBhL3BsYXQva3ZtL0NvbmZpZy51ayBiL3BsYXQva3ZtL0NvbmZpZy51awppbmRleCA1YTZkZmMx
NC4uNTY5NzAxNmYgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL0NvbmZpZy51aworKysgYi9wbGF0L2t2
bS9Db25maWcudWsKQEAgLTc5LDUgKzc5LDE0IEBAIGNvbmZpZyBWSVJUSU9fTkVUCiAgICAgICAg
c2VsZWN0IExJQlVLU0dMSVNUCiAgICAgICAgaGVscAogICAgICAgICAgICAgICBWaXJ0dWFsIG5l
dHdvcmsgZHJpdmVyLgorCitjb25maWcgVklSVElPX0JMSworICAgICAgIGJvb2wgIlZpcnRpbyBC
bG9jayBkZXZpY2UiCisgICAgICAgZGVmYXVsdCBuCisgICAgICAgZGVwZW5kcyBvbiBMSUJVS0JM
S0RFVgorICAgICAgIHNlbGVjdCBWSVJUSU9fQlVTCisgICAgICAgc2VsZWN0IExJQlVLU0dMSVNU
CisgICAgICAgaGVscAorICAgICAgICAgICAgICBWaXJ0dWFsIGJsb2NrIGRyaXZlci4KIGVuZG1l
bnUKIGVuZGlmCmRpZmYgLS1naXQgYS9wbGF0L2t2bS9NYWtlZmlsZS51ayBiL3BsYXQva3ZtL01h
a2VmaWxlLnVrCmluZGV4IDYzMzM0OGFiLi4wNDhmNzJiMyAxMDA2NDQKLS0tIGEvcGxhdC9rdm0v
TWFrZWZpbGUudWsKKysrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKQEAgLTEwLDYgKzEwLDcgQEAg
JChldmFsICQoY2FsbCBhZGRwbGF0bGliLGt2bSxsaWJrdm1wbGF0KSkKICQoZXZhbCAkKGNhbGwg
YWRkcGxhdGxpYl9zLGt2bSxsaWJrdm1wY2ksJChDT05GSUdfS1ZNX1BDSSkpKQogJChldmFsICQo
Y2FsbCBhZGRwbGF0bGliX3Msa3ZtLGxpYmt2bXZpcnRpbywkKENPTkZJR19WSVJUSU9fQlVTKSkp
CiAkKGV2YWwgJChjYWxsIGFkZHBsYXRsaWJfcyxrdm0sbGlia3ZtdmlydGlvbmV0LCQoQ09ORklH
X1ZJUlRJT19ORVQpKSkKKyQoZXZhbCAkKGNhbGwgYWRkcGxhdGxpYl9zLGt2bSxsaWJrdm12aXJ0
aW9ibGssJChDT05GSUdfVklSVElPX0JMSykpKQogCiAjIwogIyMgUGxhdGZvcm0gbGlicmFyeSBk
ZWZpbml0aW9ucwpAQCAtMTE1LDMgKzExNiwxNCBAQCBMSUJLVk1WSVJUSU9ORVRfQVNJTkNMVURF
Uy15ICAgKz0gLUkkKFVLX1BMQVRfRFJJVkVSU19CQVNFKS9pbmNsdWRlCiBMSUJLVk1WSVJUSU9O
RVRfQ0lOQ0xVREVTLXkgICAgKz0gLUkkKFVLX1BMQVRfRFJJVkVSU19CQVNFKS9pbmNsdWRlCiBM
SUJLVk1WSVJUSU9ORVRfU1JDUy15ICs9XAogCQkJJChVS19QTEFUX0RSSVZFUlNfQkFTRSkvdmly
dGlvL3ZpcnRpb19uZXQuYworIyMKKyMjIFZpcnRpbyBCbGsgbGlicmFyeSBkZWZpbml0aW9uCisj
IworTElCS1ZNVklSVElPQkxLX0FTSU5DTFVERVMteSAgICs9IC1JJChMSUJLVk1QTEFUX0JBU0Up
L2luY2x1ZGUKK0xJQktWTVZJUlRJT0JMS19DSU5DTFVERVMteSAgICArPSAtSSQoTElCS1ZNUExB
VF9CQVNFKS9pbmNsdWRlCitMSUJLVk1WSVJUSU9CTEtfQVNJTkNMVURFUy15ICAgKz0gLUkkKFVL
X1BMQVRfQ09NTU9OX0JBU0UpL2luY2x1ZGUKK0xJQktWTVZJUlRJT0JMS19DSU5DTFVERVMteSAg
ICArPSAtSSQoVUtfUExBVF9DT01NT05fQkFTRSkvaW5jbHVkZQorTElCS1ZNVklSVElPQkxLX0FT
SU5DTFVERVMteSAgICs9IC1JJChVS19QTEFUX0RSSVZFUlNfQkFTRSkvaW5jbHVkZQorTElCS1ZN
VklSVElPQkxLX0NJTkNMVURFUy15ICAgICs9IC1JJChVS19QTEFUX0RSSVZFUlNfQkFTRSkvaW5j
bHVkZQorTElCS1ZNVklSVElPQkxLX1NSQ1MteSArPVwKKwkJCSQoVUtfUExBVF9EUklWRVJTX0JB
U0UpL3ZpcnRpby92aXJ0aW9fYmxrLmMKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:45:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:45: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 1hXhfJ-0008O8-1a; Mon, 03 Jun 2019 07:45:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfI-0008Ny-Ds
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:45:56 +0000
X-Inumbo-ID: 9e05434e-85d3-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9e05434e-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:45:55 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id f10so10034426wmb.1
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:45: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:in-reply-to:references;
 bh=Iu/wn9SPhru9C5Z8ATLk+MSusY0IJLX2ohfC1vpX5cc=;
 b=GLP8quUf3+ofbuRK/1GIBz8WDLpRMvKjRlkAJncqSMD6W1LpJt2O3kzFSaX6cIJRKd
 FgKOF6ZDIc4XCrKcS43QdTwrPk4hmt0x75pLxlbITMHL9Ms1BEkN8o7uyEEi/zKJTH/k
 JW5Jgn18SeB58rlXWXtvagDdsa4cdxTLWV23hIDRg7h3O8xM/wv0D2qXcqUSjj0y22x9
 F84EySFlLbhRYb92OHj3tTNbCrf/eIXi/4c6RHF2h2LgS7gbDkd3AruuvtM7JqD7YoGS
 q7b/m9kqt02VyfN0Mu6Y7BNjjrs3w0FRhwaX19tLnYyMeXXXBkCGZBKnAXuqggJm/L5I
 wIjA==
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=Iu/wn9SPhru9C5Z8ATLk+MSusY0IJLX2ohfC1vpX5cc=;
 b=bsgK11oW+M3B99jv0AZa4kDeNDV1m36/Z7+ixUIwZcvKdswu7CgHCKis+qC3gZKtVu
 UCS6v+zmRofkY5mNGw3UWweJDjtJQshjvOrCUU/xw+3Z5+rI5otgJ8OTB35QIqCokHnc
 gsamff4RHNIadaV0l6oAS9HbYtcIeAM7FXqBS96Sce49O0gaaMtJvMJdqdeC+OeTz26r
 98jc2v00WcGKcnCBwix/tk2A/vE3KngEg4s+31u8YvsXCIHorLXR+8j9v7Wr+iJ6+B1d
 2PpwyAwdLmqzl/89twJ2T7Upf4wo2FKfcaEsGI6+r61xtr8dWjUv4UC1+9Z1/LRsUK3I
 V3Bg==
X-Gm-Message-State: APjAAAWidsMIGyTWqiDIh2IdkAA8viArkdJEOHy84YIwAJi26R2twlz9
 cTzbnCQF+xqReTnksTepyBExYsFirtU=
X-Google-Smtp-Source: APXvYqyCERUpzlhrhH+vn2+xgpVIRx1F8TGMlJ1S8h1T6mtLOzrLy+cBXPmsMa1lBFuv3jWj8DMkoQ==
X-Received: by 2002:a1c:ed01:: with SMTP id l1mr1367349wmh.109.1559547954089; 
 Mon, 03 Jun 2019 00:45:54 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.53
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:53 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:35 +0300
Message-Id: <20190603074545.13707-2-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 02/12] plat/drivers: Register
 virtio-blk with libukblkdev
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCByZWdpc3RlcnMgdmlydGlvLWJsayB3aXRoIGxpYnVrYmxrZGV2LgoKU2lnbmVk
LW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29t
PgotLS0KIHBsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jIHwgNTcgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDU3IGluc2VydGlv
bnMoKykKCmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYyBiL3Bs
YXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jCmluZGV4IDI5NmY5OWE4Li45MWU4YmYxYyAx
MDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKKysrIGIvcGxhdC9k
cml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKQEAgLTE5LDIxICsxOSw3OCBAQAogICovCiAvKiBU
YWtlbiBhbmQgYWRhcHRlZCBmcm9tIHZpcnRpby1uZXQgYmVjYXVzZSBvZiBjb25zaXN0ZW5jeSBy
ZWFzb24uICovCiAKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVrL3ByaW50Lmg+CisjaW5jbHVkZSA8ZXJybm8u
aD4KKyNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHZpcnRpby92aXJ0aW9fYnVzLmg+CiAj
aW5jbHVkZSA8dmlydGlvL3ZpcnRpb19pZHMuaD4KKyNpbmNsdWRlIDx1ay9ibGtkZXYuaD4KKyNp
bmNsdWRlIDx1ay9ibGtkZXZfZHJpdmVyLmg+CiAKICNkZWZpbmUgRFJJVkVSX05BTUUJCSJ2aXJ0
aW8tYmxrIgogCisjZGVmaW5lIHRvX3ZpcnRpb2Jsa2RldihiZGV2KSBcCisJX19jb250YWluZXJv
ZihiZGV2LCBzdHJ1Y3QgdmlydGlvX2Jsa19kZXZpY2UsIGJsa2RldikKKworCiBzdGF0aWMgc3Ry
dWN0IHVrX2FsbG9jICphOwogc3RhdGljIGNvbnN0IGNoYXIgKmRydl9uYW1lID0gRFJJVkVSX05B
TUU7CiAKK3N0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSB7CisJLyogUG9pbnRlciB0byBVbmlrcmFm
dCBCbG9jayBEZXZpY2UgKi8KKwlzdHJ1Y3QgdWtfYmxrZGV2IGJsa2RldjsKKwkvKiBUaGUgYmxr
ZGV2aWNlIGlkZW50aWZpZXIgKi8KKwlfX3UxNiB1aWQ7Cit9OworCitzdGF0aWMgdm9pZCB2aXJ0
aW9fYmxrZGV2X2Nsb3NlKHN0cnVjdCB1a19ibGtkZXYgKmRldikKK3sKKwlzdHJ1Y3QgdmlydGlv
X2Jsa19kZXZpY2UgKmQ7CisJX191MTYgdWlkOworCisJVUtfQVNTRVJUKGRldiAhPSBOVUxMKTsK
KwlkID0gdG9fdmlydGlvYmxrZGV2KGRldik7CisJdWlkID0gZC0+dWlkOworCXVrX2Jsa2Rldl9k
cnZfdW5yZWdpc3RlcihkZXYsIGEpOworCXVrX2ZyZWUoYSwgZCk7CisKKwl1a19wcl9pbmZvKERS
SVZFUl9OQU1FIjogJSJfX1BSSXUxNiIgY2xvc2VkXG4iLCB1aWQpOworfQorCitzdGF0aWMgY29u
c3Qgc3RydWN0IHVrX2Jsa2Rldl9vcHMgdmlydGlvX2Jsa2Rldl9vcHMgPSB7CisJCS5kZXZfY2xv
c2UgPSB2aXJ0aW9fYmxrZGV2X2Nsb3NlLAorfTsKKwogc3RhdGljIGludCB2aXJ0aW9fYmxrX2Fk
ZF9kZXYoc3RydWN0IHZpcnRpb19kZXYgKnZkZXYpCiB7CisJc3RydWN0IHZpcnRpb19ibGtfZGV2
aWNlICp2YmRldjsKIAlpbnQgcmMgPSAwOwogCiAJVUtfQVNTRVJUKHZkZXYgIT0gTlVMTCk7CiAK
Kwl2YmRldiA9IHVrX2NhbGxvYyhhLCAxLCBzaXplb2YoKnZiZGV2KSk7CisJaWYgKCF2YmRldikK
KwkJcmV0dXJuIC1FTk9NRU07CisKKwl2YmRldi0+YmxrZGV2LmRldl9vcHMgPSAmdmlydGlvX2Js
a2Rldl9vcHM7CisKKwlyYyA9IHVrX2Jsa2Rldl9kcnZfcmVnaXN0ZXIoJnZiZGV2LT5ibGtkZXYs
IGEsIGRydl9uYW1lKTsKKwlpZiAocmMgPCAwKSB7CisJCXVrX3ByX2VycigiRmFpbGVkIHRvIHJl
Z2lzdGVyIHZpcnRpb19ibGsgZGV2aWNlOiAlZFxuIiwgcmMpOworCQlnb3RvIGVycl9vdXQ7CisJ
fQorCisJdmJkZXYtPnVpZCA9IHJjOworCXVrX3ByX2luZm8oIlZpcnRpby1ibGsgZGV2aWNlIHJl
Z2lzdGVyZWQgd2l0aCBsaWJ1a2Jsa2RldlxuIik7CisKK291dDoKIAlyZXR1cm4gcmM7CitlcnJf
b3V0OgorCXVrX2ZyZWUoYSwgdmJkZXYpOworCWdvdG8gb3V0OwogfQogCiBzdGF0aWMgaW50IHZp
cnRpb19ibGtfZHJ2X2luaXQoc3RydWN0IHVrX2FsbG9jICpkcnZfYWxsb2NhdG9yKQotLSAKMi4x
MS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:45:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:45: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 1hXhfL-0008Ov-3e; Mon, 03 Jun 2019 07:45:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfJ-0008OJ-O8
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:45:57 +0000
X-Inumbo-ID: 9ea79e87-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9ea79e87-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:45:56 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id m3so10899913wrv.2
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:45:56 -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=RG/AliYJ9RP49+T3h9LDPAeiedUK4GfhtDidwYTeHg4=;
 b=SsromUdKt34SHlumhe9iXi/VIy5QF2LY5i/jBmQKtNEJ06iClb/+1GlAJIXMZwR0kw
 HFuxgO2U6xAagHYx0TJuvZdkurug1g55kc3nNqi4QJjDA1sphRj1GbwNaU0h5QzbelcQ
 v7aA7AJavF42Yy/ZIz3rSnFnrdF0q28pSvYxZpcNndb3n1VrV8eUOuFj2Ll3i/f+kqYI
 7bVjHrcJsV4QkvXo2l67vPqypYRHG8AQ3HbHYPNGKCm4yoPftHhFdoQbg0TlLpONaCX8
 swQ+CPQ4dXUdtEUKS5PXUYwPupwe3+7ZgizgqpO2Ew0tA+OBeyhMCuGI3rR0FBojsHcg
 vzEA==
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=RG/AliYJ9RP49+T3h9LDPAeiedUK4GfhtDidwYTeHg4=;
 b=HmvEEyxJL4W9Intgm3owa9X59ZFjumx6Ao/lrzxgIZzWqnCuuS0Qn3g6QrMvNqq8VI
 nb3LDsXC79EwnRhVyp9tqAIMAKHHrM/4QEGBNnYpm7CPJarFb5gCTCy0Bt0NmLUt8Y/N
 51/6qBAAZOzqAtvZp3UXd/DbCeVo0WiJ14HJjespmjQP6N+jwve+7VlEMFZnxdnhDj2Y
 8d+z+VjWy58tFg58jwa30RbgOZVVJdBI7L9OJ0dsOdu/kluh+dZwbIj9+Z5gDibtNRDM
 BnjIY0nvaT4EHljTg/fLTGyv6HvjdQc8yuNFMpHfYT/+lCuYXtNfx2545t2WjMRCVHOa
 uyEg==
X-Gm-Message-State: APjAAAXH2QZF/wKSnImh5zn45oPh86ZSa+KRVClFSnhlPEWLSqGJO9kz
 WPJcR6M84tSg6ETFISWuZfZwc6YKtDg=
X-Google-Smtp-Source: APXvYqw+Dmn+MsscyAGnd8A0D5LMGvWiNuWJ6JcZLj4IUiHXdfE3XSj2FolWE6Odhxd0YaeNQJfwcA==
X-Received: by 2002:adf:dcd1:: with SMTP id x17mr15291722wrm.98.1559547955121; 
 Mon, 03 Jun 2019 00:45:55 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.54
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:54 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:36 +0300
Message-Id: <20190603074545.13707-3-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 03/12] plat/drivers: Init virtio
 block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbml0aWFsaXphdGlvbiBvZiB2aXJ0aW8gYmxvY2sg
ZGV2aWNlLgpGaXJzdCwgdGhlIGRyaXZlciBzZXRzIHdoYXQgZmVhdHVyZXMgc3VwcG9ydHMsIGFu
ZCB0aGVuIHRoZSBkcml2ZXIKbmVnb3RpYXRlcyB3aXRoIHRoZSBkZXZpY2UgZm9yIHRoZSBjb21t
b24gZmVhdHVyZXMuCgpTaWduZWQtb2ZmLWJ5OiBSb3hhbmEgTmljb2xlc2N1IDxuaWNvbGVzY3Uu
cm94YW5hMTk5NkBnbWFpbC5jb20+Ci0tLQogcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3Zp
cnRpb19ibGsuaCB8IDM5ICsrKysrKysrKysrKysrCiBwbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRp
b19ibGsuYyAgICAgICAgIHwgODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIg
ZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0
L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oCgpkaWZmIC0tZ2l0IGEvcGxhdC9k
cml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaCBiL3BsYXQvZHJpdmVycy9pbmNsdWRl
L3ZpcnRpby92aXJ0aW9fYmxrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu
LmI0YjU2NmUyCi0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlv
L3ZpcnRpb19ibGsuaApAQCAtMCwwICsxLDM5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogUm94YW5hIE5pY29sZXNjdSA8bmlj
b2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwg
VW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCisgKgorICogUGVybWlzc2lvbiB0
byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorICog
Zm9yIGFueSBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHBy
b3ZpZGVkCisgKiB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIGFwcGVhcgorICogaW4gYWxsIGNvcGllcy4KKyAqCisgKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMCisgKiBX
QVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElS
RUNULCBJTkRJUkVDVCwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdF
UyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MKKyAqIE9GIFVTRSwgREFUQSBPUiBQUk9G
SVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTgorICogQ09OTkVDVElP
TiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqLworCisj
aWZuZGVmIF9fUExBVF9EUlZfVklSVElPX0JMS19ICisjZGVmaW5lIF9fUExBVF9EUlZfVklSVElP
X0JMS19ICisjaW5jbHVkZSA8dWsvY29uZmlnLmg+CisjaW5jbHVkZSA8dWsvYXJjaC90eXBlcy5o
PgorCisvKiBEZXZpY2UgaXMgcmVhZC1vbmx5LiAqLworI2RlZmluZSBWSVJUSU9fQkxLX0ZfUk8J
CTUKKy8qIEJsb2NrIHNpemUgb2YgZGlzayBpcyBpbiBibGtfc2l6ZS4gKi8KKyNkZWZpbmUgVklS
VElPX0JMS19GX0JMS19TSVpFCTYKKworc3RydWN0IHZpcnRpb19ibGtfY29uZmlnIHsKKwkvKiBE
aW1lbnNpb24gaW4gc2VjdG9ycyBudW1iZXIgKi8KKwlfX3U2NCBjYXBhY2l0eTsKKwkvKiBCbG9j
ayBzaXplICovCisJX191MzIgYmxrX3NpemU7Cit9OworCisjZW5kaWYgLyogX19QTEFUX0RSVl9W
SVJUSU9fQkxLX0ggKi8KZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Js
ay5jIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKaW5kZXggOTFlOGJmMWMuLmIw
MWIzOWJkIDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYworKysg
Yi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYwpAQCAtMjgsMTMgKzI4LDIyIEBACiAj
aW5jbHVkZSA8dmlydGlvL3ZpcnRpb19idXMuaD4KICNpbmNsdWRlIDx2aXJ0aW8vdmlydGlvX2lk
cy5oPgogI2luY2x1ZGUgPHVrL2Jsa2Rldi5oPgorI2luY2x1ZGUgPHZpcnRpby92aXJ0aW9fYmxr
Lmg+CiAjaW5jbHVkZSA8dWsvYmxrZGV2X2RyaXZlci5oPgogCiAjZGVmaW5lIERSSVZFUl9OQU1F
CQkidmlydGlvLWJsayIKKyNkZWZpbmUgREVGQVVMVF9TRUNUT1JfU0laRQk1MTIKIAogI2RlZmlu
ZSB0b192aXJ0aW9ibGtkZXYoYmRldikgXAogCV9fY29udGFpbmVyb2YoYmRldiwgc3RydWN0IHZp
cnRpb19ibGtfZGV2aWNlLCBibGtkZXYpCiAKKy8qIEZlYXR1cmVzIGFyZToKKyAqCUFjY2VzcyBN
b2RlCisgKglTZWN0b3Jfc2l6ZTsKKyAqKi8KKyNkZWZpbmUgVklSVElPX0JMS19EUlZfRkVBVFVS
RVMoZmVhdHVyZXMpIFwKKwkoVklSVElPX0ZFQVRVUkVTX1VQREFURShmZWF0dXJlcywgVklSVElP
X0JMS19GX1JPIHwgXAorCVZJUlRJT19CTEtfRl9CTEtfU0laRSkpCiAKIHN0YXRpYyBzdHJ1Y3Qg
dWtfYWxsb2MgKmE7CiBzdGF0aWMgY29uc3QgY2hhciAqZHJ2X25hbWUgPSBEUklWRVJfTkFNRTsK
QEAgLTQ0LDYgKzUzLDEwIEBAIHN0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSB7CiAJc3RydWN0IHVr
X2Jsa2RldiBibGtkZXY7CiAJLyogVGhlIGJsa2RldmljZSBpZGVudGlmaWVyICovCiAJX191MTYg
dWlkOworCS8qIFZpcnRpbyBEZXZpY2UgKi8KKwlzdHJ1Y3QgdmlydGlvX2RldiAqdmRldjsKK307
CisKIH07CiAKIHN0YXRpYyB2b2lkIHZpcnRpb19ibGtkZXZfY2xvc2Uoc3RydWN0IHVrX2Jsa2Rl
diAqZGV2KQpAQCAtNjAsNiArNzMsNzIgQEAgc3RhdGljIHZvaWQgdmlydGlvX2Jsa2Rldl9jbG9z
ZShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYpCiAJdWtfcHJfaW5mbyhEUklWRVJfTkFNRSI6ICUiX19Q
Ukl1MTYiIGNsb3NlZFxuIiwgdWlkKTsKIH0KIAorCitzdGF0aWMgaW50IHZpcnRpb19ibGtkZXZf
ZmVhdHVyZV9uZWdvdGlhdGUoc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldikKK3sKKwlz
dHJ1Y3QgdWtfYmxrZGV2X2NhcCAqY2FwOworCV9fdTY0IGhvc3RfZmVhdHVyZXMgPSAwOworCWlu
dCByYyA9IDA7CisJaW50IGJ5dGVzX3RvX3JlYWQ7CisJX19zZWN0b3Igc2VjdG9yczsKKwlfX3Nl
Y3RvciBzc2l6ZTsKKworCVVLX0FTU0VSVCh2YmRldik7CisJY2FwID0gJnZiZGV2LT5ibGtkZXYu
Y2FwYWJpbGl0aWVzOworCWhvc3RfZmVhdHVyZXMgPSB2aXJ0aW9fZmVhdHVyZV9nZXQodmJkZXYt
PnZkZXYpOworCisJLyogR2V0IHNpemUgb2YgZGV2aWNlICovCisJYnl0ZXNfdG9fcmVhZCA9IHZp
cnRpb19jb25maWdfZ2V0KHZiZGV2LT52ZGV2LAorCQkJX19vZmZzZXRvZihzdHJ1Y3QgdmlydGlv
X2Jsa19jb25maWcsIGNhcGFjaXR5KSwKKwkJCSZzZWN0b3JzLAorCQkJc2l6ZW9mKHNlY3RvcnMp
LAorCQkJMSk7CisJaWYgKGJ5dGVzX3RvX3JlYWQgIT0gc2l6ZW9mKHNlY3RvcnMpKSAgeworCQl1
a19wcl9lcnIoIkZhaWxlZCB0byBnZXQgbmIgb2Ygc2VjdG9ycyBmcm9tIGRldmljZSAlZFxuIiwg
cmMpOworCQlyYyA9IC1FQUdBSU47CisJCWdvdG8gZXhpdDsKKwl9CisKKwlpZiAoIXZpcnRpb19o
YXNfZmVhdHVyZXMoaG9zdF9mZWF0dXJlcywgVklSVElPX0JMS19GX0JMS19TSVpFKSkgeworCQlz
c2l6ZSA9IERFRkFVTFRfU0VDVE9SX1NJWkU7CisJfSBlbHNlIHsKKwkJYnl0ZXNfdG9fcmVhZCA9
IHZpcnRpb19jb25maWdfZ2V0KHZiZGV2LT52ZGV2LAorCQkJCV9fb2Zmc2V0b2Yoc3RydWN0IHZp
cnRpb19ibGtfY29uZmlnLCBibGtfc2l6ZSksCisJCQkJJnNzaXplLAorCQkJCXNpemVvZihzc2l6
ZSksCisJCQkJMSk7CisJCWlmIChieXRlc190b19yZWFkICE9IHNpemVvZihzc2l6ZSkpICB7CisJ
CQl1a19wcl9lcnIoIkZhaWxlZCB0byBnZXQgc3NpemUgZnJvbSB0aGUgZGV2aWNlICVkXG4iLAor
CQkJCQlyYyk7CisJCQlyYyA9IC1FQUdBSU47CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9CisKKwlj
YXAtPnNzaXplID0gc3NpemU7CisJY2FwLT5zZWN0b3JzID0gc2VjdG9yczsKKwljYXAtPmFsaWdu
ID0gc2l6ZW9mKHZvaWQgKik7CisJY2FwLT5tb2RlID0gKHZpcnRpb19oYXNfZmVhdHVyZXMoCisJ
CQlob3N0X2ZlYXR1cmVzLCBWSVJUSU9fQkxLX0ZfUk8pKSA/IE9fUkRPTkxZIDogT19SRFdSOwor
CisJLyoqCisJICogTWFzayBvdXQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGJvdGggZHJpdmVyIGFu
ZCBkZXZpY2UuCisJICovCisJdmJkZXYtPnZkZXYtPmZlYXR1cmVzICY9IGhvc3RfZmVhdHVyZXM7
CisJdmlydGlvX2ZlYXR1cmVfc2V0KHZiZGV2LT52ZGV2LCB2YmRldi0+dmRldi0+ZmVhdHVyZXMp
OworCitleGl0OgorCXJldHVybiByYzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHZpcnRpb19i
bGtkZXZfZmVhdHVyZV9zZXQoc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldikKK3sKKwl2
YmRldi0+dmRldi0+ZmVhdHVyZXMgPSAwOworCisJLyogU2V0dGluZyB0aGUgZmVhdHVyZSB0aGUg
ZHJpdmVyIHN1cHBvcnQgKi8KKwlWSVJUSU9fQkxLX0RSVl9GRUFUVVJFUyh2YmRldi0+dmRldi0+
ZmVhdHVyZXMpOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHVrX2Jsa2Rldl9vcHMgdmlydGlv
X2Jsa2Rldl9vcHMgPSB7CiAJCS5kZXZfY2xvc2UgPSB2aXJ0aW9fYmxrZGV2X2Nsb3NlLAogfTsK
QEAgLTc1LDYgKzE1NCw3IEBAIHN0YXRpYyBpbnQgdmlydGlvX2Jsa19hZGRfZGV2KHN0cnVjdCB2
aXJ0aW9fZGV2ICp2ZGV2KQogCWlmICghdmJkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCisJdmJk
ZXYtPnZkZXYgPSB2ZGV2OwogCXZiZGV2LT5ibGtkZXYuZGV2X29wcyA9ICZ2aXJ0aW9fYmxrZGV2
X29wczsKIAogCXJjID0gdWtfYmxrZGV2X2Rydl9yZWdpc3RlcigmdmJkZXYtPmJsa2RldiwgYSwg
ZHJ2X25hbWUpOwpAQCAtODQsMTAgKzE2NCwxOSBAQCBzdGF0aWMgaW50IHZpcnRpb19ibGtfYWRk
X2RldihzdHJ1Y3QgdmlydGlvX2RldiAqdmRldikKIAl9CiAKIAl2YmRldi0+dWlkID0gcmM7CisJ
dmlydGlvX2Jsa2Rldl9mZWF0dXJlX3NldCh2YmRldik7CisJcmMgPSB2aXJ0aW9fYmxrZGV2X2Zl
YXR1cmVfbmVnb3RpYXRlKHZiZGV2KTsKKwlpZiAocmMpIHsKKwkJdWtfcHJfZXJyKCJGYWlsZWQg
dG8gbmVnb3RpYXRlIHRoZSBkZXZpY2UgZmVhdHVyZSAlZFxuIiwgcmMpOworCQlnb3RvIGVycl9u
ZWdvdGlhdGVfZmVhdHVyZTsKKwl9CisKIAl1a19wcl9pbmZvKCJWaXJ0aW8tYmxrIGRldmljZSBy
ZWdpc3RlcmVkIHdpdGggbGlidWtibGtkZXZcbiIpOwogCiBvdXQ6CiAJcmV0dXJuIHJjOworZXJy
X25lZ290aWF0ZV9mZWF0dXJlOgorCXZpcnRpb19kZXZfc3RhdHVzX3VwZGF0ZSh2YmRldi0+dmRl
diwgVklSVElPX0NPTkZJR19TVEFUVVNfRkFJTCk7CiBlcnJfb3V0OgogCXVrX2ZyZWUoYSwgdmJk
ZXYpOwogCWdvdG8gb3V0OwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfM-0008PR-5y; Mon, 03 Jun 2019 07:46:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfL-0008Ot-1u
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:45:59 +0000
X-Inumbo-ID: 9f4737c7-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9f4737c7-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:45:57 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id o12so3758804wrj.9
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:45:57 -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=cEKmdafGreUoDw6klzRUN8eVjoMfE7hA6b7w/GqnNk8=;
 b=W0ZpADT5t1/HA8zir8IhrNLEFpZmmK0cBTwcZtX9xBqbw9kn1z+E6TUAGnkR6qCZ4U
 Ur3T9DKafUqFYVc4+T08+YCNbH8RNUEJJWu9wmij+pwRBGjh6ylg6aVnXX6GG+93fOBY
 PYAAtHExWKJv2MUxqxhqw4PkCERBqfT1eCW4pRZDIjNUEL2qDAwSVdZ5+ukYED/zypaQ
 bm7lAe9IB113X0+g3wvRA4aEf4+k6nLpDjoYxQpZHxrc+pKN1VogOJZi3GrWy92zpdmM
 0ATGh92swQq6qDi9FRJ/Po5L21hhFI7sNcNcmhKPIs7lgDkT4uMQd8q7CGyiGV7S8lIi
 MQ+g==
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=cEKmdafGreUoDw6klzRUN8eVjoMfE7hA6b7w/GqnNk8=;
 b=FLdxg11N1etKamhQl9DFlaBK7zU9Tsc3ehJXdMGN4MGOybVMjtzlFWUGMehWwlZIKo
 XqPdi3nnUZ+M8MqlYO6dWyy0MTVzT3hoQLdsf2nJ9k25FSpybhAN4ql7PDv+lj679GeU
 vxLzXeRNrZEJMtBFQOu4Bs5DDWCMED5dK97JqYeG7u4FxpqX6WwQ4JwmFT29kfpo47rZ
 9pZm/FmlAauM+b1F2EzQ13PEKK2+Um/vrdMHFAm7lPlE/lsv+iMNaD/R0djfk6liYTHy
 IuHdWdDWBW7E/KIB5YD1K4lQm2GdftpYRHdN4mPPmpDzI2Hs+xzLA+Vwq2X0isi15Oop
 ytlQ==
X-Gm-Message-State: APjAAAVpD1EssIzvOga/ns6qC49Q8rp2r74qE0jzy8aVMufdrwhFDrbb
 wRElBndJvErHzgIP1LWMM+SRdu6S3CA=
X-Google-Smtp-Source: APXvYqzN8q6HJsGkuMKL9E7wgXnSNojQsvUZScx3I+Mp9AAfpnjd3jIIWNXiZNyo9AVA6L/cyEUssQ==
X-Received: by 2002:adf:e286:: with SMTP id v6mr1462230wri.340.1559547956158; 
 Mon, 03 Jun 2019 00:45:56 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.55
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:55 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:37 +0300
Message-Id: <20190603074545.13707-4-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 04/12] plat/drivers: Configure
 virtio block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBjb25maWd1cmF0aW9uIG9mIGJsb2NrIGRldmljZSBj
b25zaXN0aW5nIG9mOgotPiBmaW5kaW5nIG11bHRpLXF1ZXVlLW1heC1xdWV1ZSBudW1iZXIgcHJv
dmlkZWQgYnkgQmFja2VuZDsKLT4gc2V0dGluZyB0aGUgbnVtYmVyIG9mIHF1ZXVlcyB0byBiZSB1
c2VkIChiZXR3ZWVuIDEgYW5kIG1heCkKClNpZ25lZC1vZmYtYnk6IFJveGFuYSBOaWNvbGVzY3Ug
PG5pY29sZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KLS0tCiBwbGF0L2RyaXZlcnMvaW5jbHVk
ZS92aXJ0aW8vdmlydGlvX2Jsay5oIHwgIDcgKysrKwogcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0
aW9fYmxrLmMgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAy
IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n
aXQgYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIGIvcGxhdC9kcml2
ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaAppbmRleCBiNGI1NjZlMi4uODIyYzQ0MGQg
MTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYmxrLmgKKysr
IGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaApAQCAtMjgsMTIgKzI4
LDE5IEBACiAjZGVmaW5lIFZJUlRJT19CTEtfRl9STwkJNQogLyogQmxvY2sgc2l6ZSBvZiBkaXNr
IGlzIGluIGJsa19zaXplLiAqLwogI2RlZmluZSBWSVJUSU9fQkxLX0ZfQkxLX1NJWkUJNgorLyog
RGV2aWNlIHN1cHBvcnRzIG11bHRpLXF1ZXVlcyAqLworI2RlZmluZSBWSVJUSU9fQkxLX0ZfTVEJ
CTEyCisKIAogc3RydWN0IHZpcnRpb19ibGtfY29uZmlnIHsKIAkvKiBEaW1lbnNpb24gaW4gc2Vj
dG9ycyBudW1iZXIgKi8KIAlfX3U2NCBjYXBhY2l0eTsKIAkvKiBCbG9jayBzaXplICovCiAJX191
MzIgYmxrX3NpemU7CisJLyogTnVtYmVyIG9mIHZxcywgb25seSBhdmFpbGFibGUgd2hlbiBWSVJU
SU9fQkxLX0ZfTVEgaXMgc2V0ICovCisJX191MTYgbnVtX3F1ZXVlczsKK307CisKIH07CiAKICNl
bmRpZiAvKiBfX1BMQVRfRFJWX1ZJUlRJT19CTEtfSCAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9kcml2
ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsu
YwppbmRleCBiMDFiMzliZC4uYmRhMzc4NjYgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy92aXJ0
aW8vdmlydGlvX2Jsay5jCisrKyBiL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jCkBA
IC00MCwxMCArNDAsMTEgQEAKIC8qIEZlYXR1cmVzIGFyZToKICAqCUFjY2VzcyBNb2RlCiAgKglT
ZWN0b3Jfc2l6ZTsKKyAqCU11bHRpLXF1ZXVlLAogICoqLwogI2RlZmluZSBWSVJUSU9fQkxLX0RS
Vl9GRUFUVVJFUyhmZWF0dXJlcykgXAogCShWSVJUSU9fRkVBVFVSRVNfVVBEQVRFKGZlYXR1cmVz
LCBWSVJUSU9fQkxLX0ZfUk8gfCBcCi0JVklSVElPX0JMS19GX0JMS19TSVpFKSkKKwlWSVJUSU9f
QkxLX0ZfQkxLX1NJWkUgfCBWSVJUSU9fQkxLX0ZfTVEpKQogCiBzdGF0aWMgc3RydWN0IHVrX2Fs
bG9jICphOwogc3RhdGljIGNvbnN0IGNoYXIgKmRydl9uYW1lID0gRFJJVkVSX05BTUU7CkBAIC01
NSwxMCArNTYsMjggQEAgc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlIHsKIAlfX3UxNiB1aWQ7CiAJ
LyogVmlydGlvIERldmljZSAqLwogCXN0cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2OworCS8qIE5iIG9m
IG1heF9xdWV1ZXMgc3VwcG9ydGVkIGJ5IGRldmljZSAqLworCV9fdTE2IG1heF92cXVldWVfcGFp
cnM7CiB9OwogCiB9OwogCisKK3N0YXRpYyBpbnQgdmlydGlvX2Jsa2Rldl9jb25maWd1cmUoc3Ry
dWN0IHVrX2Jsa2RldiAqZGV2LAorCQljb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X2NvbmYgKmNvbmYp
Cit7CisJaW50IHJjID0gMDsKKwlzdHJ1Y3QgdmlydGlvX2Jsa19kZXZpY2UgKnZiZGV2ID0gTlVM
TDsKKworCVVLX0FTU0VSVChkZXYgIT0gTlVMTCk7CisJVUtfQVNTRVJUKGNvbmYgIT0gTlVMTCk7
CisKKwl2YmRldiA9IHRvX3ZpcnRpb2Jsa2RldihkZXYpOworCisJdWtfcHJfaW5mbyhEUklWRVJf
TkFNRSI6ICUiX19QUkl1MTYiIGNvbmZpZ3VyZWRcbiIsIHZiZGV2LT51aWQpOworCXJldHVybiBy
YzsKK30KKwogc3RhdGljIHZvaWQgdmlydGlvX2Jsa2Rldl9jbG9zZShzdHJ1Y3QgdWtfYmxrZGV2
ICpkZXYpCiB7CiAJc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICpkOwpAQCAtNzMsNiArOTIsMTcg
QEAgc3RhdGljIHZvaWQgdmlydGlvX2Jsa2Rldl9jbG9zZShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYp
CiAJdWtfcHJfaW5mbyhEUklWRVJfTkFNRSI6ICUiX19QUkl1MTYiIGNsb3NlZFxuIiwgdWlkKTsK
IH0KIAorc3RhdGljIHZvaWQgdmlydGlvX2Jsa2Rldl9nZXRfaW5mbyhzdHJ1Y3QgdWtfYmxrZGV2
ICpkZXYsCisJCXN0cnVjdCB1a19ibGtkZXZfaW5mbyAqZGV2X2luZm8pCit7CisJc3RydWN0IHZp
cnRpb19ibGtfZGV2aWNlICp2YmRldiA9IE5VTEw7CisKKwlVS19BU1NFUlQoZGV2ICE9IE5VTEwp
OworCVVLX0FTU0VSVChkZXZfaW5mbyAhPSBOVUxMKTsKKworCXZiZGV2ID0gdG9fdmlydGlvYmxr
ZGV2KGRldik7CisJZGV2X2luZm8tPm1heF9xdWV1ZXMgPSB2YmRldi0+bWF4X3ZxdWV1ZV9wYWly
czsKK30KIAogc3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X2ZlYXR1cmVfbmVnb3RpYXRlKHN0cnVj
dCB2aXJ0aW9fYmxrX2RldmljZSAqdmJkZXYpCiB7CkBAIC04Miw2ICsxMTIsNyBAQCBzdGF0aWMg
aW50IHZpcnRpb19ibGtkZXZfZmVhdHVyZV9uZWdvdGlhdGUoc3RydWN0IHZpcnRpb19ibGtfZGV2
aWNlICp2YmRldikKIAlpbnQgYnl0ZXNfdG9fcmVhZDsKIAlfX3NlY3RvciBzZWN0b3JzOwogCV9f
c2VjdG9yIHNzaXplOworCV9fdTE2IG51bV9xdWV1ZXM7CiAKIAlVS19BU1NFUlQodmJkZXYpOwog
CWNhcCA9ICZ2YmRldi0+YmxrZGV2LmNhcGFiaWxpdGllczsKQEAgLTExNSwxMiArMTQ2LDMyIEBA
IHN0YXRpYyBpbnQgdmlydGlvX2Jsa2Rldl9mZWF0dXJlX25lZ290aWF0ZShzdHJ1Y3QgdmlydGlv
X2Jsa19kZXZpY2UgKnZiZGV2KQogCQl9CiAJfQogCisJLyogSWYgZGV2aWNlIGRvZXMgbm90IHN1
cHBvcnQgbXVsdGktcXVldWVzLAorCSAqICB3ZSB3aWxsIHVzZSBvbmx5IG9uZSBxdWV1ZS4KKwkg
Ki8KKwlpZiAodmlydGlvX2hhc19mZWF0dXJlcyhob3N0X2ZlYXR1cmVzLCBWSVJUSU9fQkxLX0Zf
TVEpKSB7CisJCWJ5dGVzX3RvX3JlYWQgPSB2aXJ0aW9fY29uZmlnX2dldCh2YmRldi0+dmRldiwK
KwkJCQkJX19vZmZzZXRvZihzdHJ1Y3QgdmlydGlvX2Jsa19jb25maWcsCisJCQkJCQkJbnVtX3F1
ZXVlcyksCisJCQkJCSZudW1fcXVldWVzLAorCQkJCQlzaXplb2YobnVtX3F1ZXVlcyksCisJCQkJ
CTEpOworCQlpZiAoYnl0ZXNfdG9fcmVhZCAhPSBzaXplb2YobnVtX3F1ZXVlcykpIHsKKwkJCXVr
X3ByX2VycigiRmFpbGVkIHRvIHJlYWQgbWF4LXF1ZXVlc1xuIik7CisJCQlyYyA9IC1FQUdBSU47
CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9IGVsc2UKKwkJbnVtX3F1ZXVlcyA9IDE7CisKIAljYXAt
PnNzaXplID0gc3NpemU7CiAJY2FwLT5zZWN0b3JzID0gc2VjdG9yczsKIAljYXAtPmFsaWduID0g
c2l6ZW9mKHZvaWQgKik7CiAJY2FwLT5tb2RlID0gKHZpcnRpb19oYXNfZmVhdHVyZXMoCiAJCQlo
b3N0X2ZlYXR1cmVzLCBWSVJUSU9fQkxLX0ZfUk8pKSA/IE9fUkRPTkxZIDogT19SRFdSOwogCisJ
dmJkZXYtPm1heF92cXVldWVfcGFpcnMgPSBudW1fcXVldWVzOworCiAJLyoqCiAJICogTWFzayBv
dXQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IGJvdGggZHJpdmVyIGFuZCBkZXZpY2UuCiAJICovCkBA
IC0xNDAsNiArMTkxLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHZpcnRpb19ibGtkZXZfZmVhdHVy
ZV9zZXQoc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldikKIH0KIAogc3RhdGljIGNvbnN0
IHN0cnVjdCB1a19ibGtkZXZfb3BzIHZpcnRpb19ibGtkZXZfb3BzID0geworCQkuZ2V0X2luZm8g
PSB2aXJ0aW9fYmxrZGV2X2dldF9pbmZvLAorCQkuZGV2X2NvbmZpZ3VyZSA9IHZpcnRpb19ibGtk
ZXZfY29uZmlndXJlLAogCQkuZGV2X2Nsb3NlID0gdmlydGlvX2Jsa2Rldl9jbG9zZSwKIH07CiAK
LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfN-0008Q3-8m; Mon, 03 Jun 2019 07:46:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfM-0008Pm-Dn
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:00 +0000
X-Inumbo-ID: 9ff94574-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9ff94574-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:45:58 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id n4so5634254wrw.13
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:45: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=dMCB5jv6oGb4J7S5+pTZG4tJq2dmBPnbR4dXQQb6XDs=;
 b=li+feBxnZS1jF+VhivP051e4UaCITvH2etML6+39l4mxPUurC2j14e8HmArIyFv8To
 d/bn7cP7Ii4J9iI15uMUYym4qSKZE9qg6taNpX69wiWNTBYJ6rk3tJe0Eczduu+hJnp9
 hriDq3PXFKEbPn63Uwxcvk1+M5xkFf2SkQ/+4GEcoyCWyPxFfez9YgmVyIhiSmIE+Ajh
 RctsCsfX36mLF4Jn/wRSeIJ/dFjfRC42li+2WBDH/M1Lwgp01WBhg2lFOq+kY/M2IvaP
 dWTRXZVbr+Q3HT8auf+Z3jgHNeKM62Ro6vYAkuhsm+gxYl82oytrwhXAOCqMyZGG5/VM
 8Llw==
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=dMCB5jv6oGb4J7S5+pTZG4tJq2dmBPnbR4dXQQb6XDs=;
 b=bWFzMar7yVg3qrL0HLGdSbNqua+qb95584J/kxLfXxOjU7zcah5zecLglNqj4LboVe
 JSEBIYVilK3/h03il5h1kRb63JZM/VkqOKQUp4bBYwMZw4uJgCvQeyN/HPKCavs2I++8
 xPA4bkE0new1N2AngQLk6eJqBmed2eVREsaUr2ibC0pwwMSaYs3L9Nys572Nu53cs4Du
 MeewJ1Jkwc1wMLhHcotm1xejyFNyAntk84xP5ugFH/JQXr9UqBfCww5EI8sTmNyXhT5O
 fCqNYu+up3UrA1UC1TfNYouJmz5ZbzihRCh9Ck0mo9u9/zgSsQCjJrmyqKWysbE5pkHd
 SA1w==
X-Gm-Message-State: APjAAAUaLBaYzpyWP51uMwXfC3LN0S79A+G2AH9IthTC1DYmYvoIsMnc
 P6KA49wD//V1V0x8o7IDZIivqVodDV0=
X-Google-Smtp-Source: APXvYqxo3rNdZCbmWSRs2y0FkKnRbDPcHSRiLXYrAYJD6jz7YLP/aEa7siJjNQFAJc4GnMb3GIGi2w==
X-Received: by 2002:adf:efcd:: with SMTP id i13mr1466210wrp.51.1559547957377; 
 Mon, 03 Jun 2019 00:45:57 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.56
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:56 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:38 +0300
Message-Id: <20190603074545.13707-5-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 05/12] plat/drivers: Create
 virtio-block queues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBhbGxvY2F0ZXMgdGhlIHF1ZXVlcyB1c2VkIGZvciBjb21tdW5pY2F0aW9uIHdp
dGggdGhlIGRldmljZS4KT25lIHF1ZXVlIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyBib3Ro
IHJlcXVlc3RzIGFuZCByZXNwb25zZXMKdG8vZnJvbSBkZXZpY2UuCgpTaWduZWQtb2ZmLWJ5OiBS
b3hhbmEgTmljb2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Ci0tLQogcGxh
dC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMgfCA3MiArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKQoKZGlm
ZiAtLWdpdCBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jIGIvcGxhdC9kcml2ZXJz
L3ZpcnRpby92aXJ0aW9fYmxrLmMKaW5kZXggYmRhMzc4NjYuLjNkOGI3NzQ1IDEwMDY0NAotLS0g
YS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYworKysgYi9wbGF0L2RyaXZlcnMvdmly
dGlvL3ZpcnRpb19ibGsuYwpAQCAtNTYsMTMgKzU2LDc1IEBAIHN0cnVjdCB2aXJ0aW9fYmxrX2Rl
dmljZSB7CiAJX191MTYgdWlkOwogCS8qIFZpcnRpbyBEZXZpY2UgKi8KIAlzdHJ1Y3QgdmlydGlv
X2RldiAqdmRldjsKKwkvKiBMaXN0IG9mIGFsbCB0aGUgdmlydHF1ZXVlIGluIHRoZSBwY2kgZGV2
aWNlICovCisJc3RydWN0IHZpcnRxdWV1ZSAqdnE7CiAJLyogTmIgb2YgbWF4X3F1ZXVlcyBzdXBw
b3J0ZWQgYnkgZGV2aWNlICovCiAJX191MTYgbWF4X3ZxdWV1ZV9wYWlyczsKKwkvKiBUaGlzIGlz
IHVzZWQgd2hlbiB0aGUgdXNlciBoYXMgZGVjaWRlZCB0aGUgbmJfcXVldWVzIHRvIHVzZSAqLwor
CV9fdTE2ICAgIG5iX3F1ZXVlczsKKwkvKiBMaXN0IG9mIHF1ZXVlcyAqLworCXN0cnVjdCAgIHVr
X2Jsa2Rldl9xdWV1ZSAqcXM7CiB9OwogCitzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlIHsKKwkvKiBU
aGUgdmlydHF1ZXVlIHJlZmVyZW5jZSAqLworCXN0cnVjdCB2aXJ0cXVldWUgKnZxOworCS8qIFRo
ZSBsaWJ1a2Jsa2RldiBxdWV1ZSBpZGVudGlmaWVyICovCisJLyogSXQgaXMgYWxzbyB0aGUgdmly
dHF1ZXVlIGlkZW50aWZpZXIgKi8KKwl1aW50MTZfdCBscXVldWVfaWQ7CisJLyogQWxsb2NhdG9y
ICovCisJc3RydWN0IHVrX2FsbG9jICphOworCS8qIFRoZSBuci4gb2YgZGVzY3JpcHRvciBsaW1p
dCAqLworCXVpbnQxNl90IG1heF9uYl9kZXNjOworCS8qIFJlZmVyZW5jZSB0byB2aXJ0aW9fYmxr
X2RldmljZSAgKi8KKwlzdHJ1Y3QgdmlydGlvX2Jsa19kZXZpY2UgKnZiZDsKIH07CiAKIAorc3Rh
dGljIGludCB2aXJ0aW9fYmxrZGV2X3F1ZXVlc19hbGxvYyhzdHJ1Y3QgdmlydGlvX2Jsa19kZXZp
Y2UgKnZiZGV2LAorCQkJCSAgICBjb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X2NvbmYgKmNvbmYpCit7
CisJaW50IHJjID0gMDsKKwl1aW50MTZfdCBpID0gMDsKKwlpbnQgdnFfYXZhaWwgPSAwOworCV9f
dTE2IHFkZXNjX3NpemVbY29uZi0+bmJfcXVldWVzXTsKKworCWlmIChjb25mLT5uYl9xdWV1ZXMg
PiB2YmRldi0+bWF4X3ZxdWV1ZV9wYWlycykgeworCQl1a19wcl9lcnIoIlF1ZXVlIG51bWJlciBu
b3Qgc3VwcG9ydGVkOiAlIl9fUFJJdTE2IlxuIiwKKwkJCQljb25mLT5uYl9xdWV1ZXMpOworCQly
ZXR1cm4gLUVOT1RTVVA7CisJfQorCisJdmJkZXYtPm5iX3F1ZXVlcyA9IGNvbmYtPm5iX3F1ZXVl
czsKKwl2cV9hdmFpbCA9IHZpcnRpb19maW5kX3Zxcyh2YmRldi0+dmRldiwgY29uZi0+bmJfcXVl
dWVzLCBxZGVzY19zaXplKTsKKwlpZiAodW5saWtlbHkodnFfYXZhaWwgIT0gY29uZi0+bmJfcXVl
dWVzKSkgeworCQl1a19wcl9lcnIoIkV4cGVjdGVkOiAlZCBxdWV1ZXMsIEZvdW5kOiAlZCBxdWV1
ZXNcbiIsCisJCQkJY29uZi0+bmJfcXVldWVzLCB2cV9hdmFpbCk7CisJCXJjID0gLUVOT01FTTsK
KwkJZ290byBleGl0OworCX0KKworCS8qKgorCSAqIFRPRE86CisJICogVGhlIHZpcnRpbyBkZXZp
Y2UgbWFuYWdlbWVudCBkYXRhIHN0cnVjdHVyZSBhcmUgYWxsb2NhdGVkIHVzaW5nIHRoZQorCSAq
IGFsbG9jYXRvciBmcm9tIHRoZSBibGtkZXYgY29uZmlndXJhdGlvbi4gSW4gdGhlIGZ1dHVyZSBp
dCBtaWdodCBiZQorCSAqIHdpc2VyIHRvIG1vdmUgaXQgdG8gdGhlIGFsbG9jYXRvciBvZiBlYWNo
IGluZGl2aWR1YWwgcXVldWUuIFRoaXMKKwkgKiB3b3VsZCBiZXR0ZXIgY29uc2lkZXJpbmcgTlVN
QSBzdXBwb3J0LgorCSAqLworCXZiZGV2LT5xcyA9IHVrX2NhbGxvYyhhLCBjb25mLT5uYl9xdWV1
ZXMsIHNpemVvZigqdmJkZXYtPnFzKSk7CisJaWYgKHVubGlrZWx5KHZiZGV2LT5xcyA9PSBOVUxM
KSkgeworCQl1a19wcl9lcnIoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHF1ZXVlIG1h
bmFnZW1lbnRcbiIpOworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gZXhpdDsKKwl9CisKKwlmb3Ig
KGkgPSAwOyBpIDwgY29uZi0+bmJfcXVldWVzOyArK2kpCisJCXZiZGV2LT5xc1tpXS5tYXhfbmJf
ZGVzYyA9IHFkZXNjX3NpemVbaV07CisKK2V4aXQ6CisJcmV0dXJuIHJjOworfQorCiBzdGF0aWMg
aW50IHZpcnRpb19ibGtkZXZfY29uZmlndXJlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKIAkJY29u
c3Qgc3RydWN0IHVrX2Jsa2Rldl9jb25mICpjb25mKQogewpAQCAtNzMsOCArMTM1LDE3IEBAIHN0
YXRpYyBpbnQgdmlydGlvX2Jsa2Rldl9jb25maWd1cmUoc3RydWN0IHVrX2Jsa2RldiAqZGV2LAog
CVVLX0FTU0VSVChjb25mICE9IE5VTEwpOwogCiAJdmJkZXYgPSB0b192aXJ0aW9ibGtkZXYoZGV2
KTsKKwlyYyA9IHZpcnRpb19ibGtkZXZfcXVldWVzX2FsbG9jKHZiZGV2LCBjb25mKTsKKwlpZiAo
cmMpIHsKKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gYWxsb2NhdGUgdGhlIHF1ZXVlcyAlZFxuIiwg
cmMpOworCQlnb3RvIGV4aXQ7CisJfQogCiAJdWtfcHJfaW5mbyhEUklWRVJfTkFNRSI6ICUiX19Q
Ukl1MTYiIGNvbmZpZ3VyZWRcbiIsIHZiZGV2LT51aWQpOworZXhpdDoKKwlyZXR1cm4gcmM7Cit9
CisKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTg3LDYgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRp
b19ibGtkZXZfY2xvc2Uoc3RydWN0IHVrX2Jsa2RldiAqZGV2KQogCWQgPSB0b192aXJ0aW9ibGtk
ZXYoZGV2KTsKIAl1aWQgPSBkLT51aWQ7CiAJdWtfYmxrZGV2X2Rydl91bnJlZ2lzdGVyKGRldiwg
YSk7CisJdWtfZnJlZShhLCBkLT5xcyk7CiAJdWtfZnJlZShhLCBkKTsKIAogCXVrX3ByX2luZm8o
RFJJVkVSX05BTUUiOiAlIl9fUFJJdTE2IiBjbG9zZWRcbiIsIHVpZCk7Ci0tIAoyLjExLjAKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXhfO-0008Qn-Aq; Mon, 03 Jun 2019 07:46:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfN-0008QW-Kv
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:01 +0000
X-Inumbo-ID: a09ae5f0-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a09ae5f0-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:45:59 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id b18so10844173wrq.12
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:45: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=rtxH/1Y0jpa2hJBghVAluxq+2GhKUnld1W095L6HtDU=;
 b=Hi8h2wkdGe46wPIjtwxALWRv2L5B9klMwFUyjjANbDujbdCL9EUJMO9df6hobqY6xw
 0rvdS1Hrs6Jiw5Tjq9HmM00W7XVcLEfhRDRLfHc1cu8tHX0gohEeT/nuv14BK0XLPu4+
 97/USPcsDvbXSCojK4/HuX7BA3aM5z3+CMu567aH+mCniPZqsgH1mdHef8UpHUfgcJmm
 mif9dSHDxycJdEnPNC8ows0LAu3QQNZFVyrc+RsBozq0joPVRitj1yyt7EWNpzeBqdV2
 1qk8Y6B80UlqqV/E8Znws0qpTnIFGF+hTemseBZMiGK1kz4aIpd//XdCSlE1Ejdhi1wF
 fY/Q==
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=rtxH/1Y0jpa2hJBghVAluxq+2GhKUnld1W095L6HtDU=;
 b=dsJc6Vxk6ndcZdHrs1XZLeHz8+fFDRQqV1062qFcw+aGfMFr/1SIDsLdRVN1eFppHC
 Tl3SDEKr1wa6BAAiEvrJgOV98cjpo055VRj2BYfpHt1EkV061o6YPAlE3RWkft1a3EUG
 eyV2KpulPHSBpKODxwuW32xZk1efiZrb7k+D86qdSp5rjvS01bsPFGzfcAZ8c+6ecOwU
 m3J9SAOS8m/D6vM7tSZ99bB6BZwkmA+bYYmKvGP3S4S4jN8+UapX8cDolwSCQZaDOM6Z
 fOtadNXGSE+QDi8/5J7fiNbp9xf5zZiHka7ABS2FOZ/u/1n7DRvk3Vu4Quwpf4HJHR00
 p7Aw==
X-Gm-Message-State: APjAAAU9kVefB9/WX7OsR62CekbO50LOfyLZNEQnnkvzp5zvT/9HRGX6
 dmHv4U7/wM7hs5/FN5b4emNe1WbKiyg=
X-Google-Smtp-Source: APXvYqyYhwtEAjdiHsUSxC6RAouW054vz6MwDMOJzrcgmQ0Z8LGv5mZtZCDUOz8CYJdFsQ698+L50w==
X-Received: by 2002:adf:f38a:: with SMTP id m10mr1512214wro.81.1559547958392; 
 Mon, 03 Jun 2019 00:45:58 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.57
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:57 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:39 +0300
Message-Id: <20190603074545.13707-6-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 06/12] plat/drivers: Configure
 virtio block queue
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdmlydHF1ZXVl
IHVzZWQgZm9yCmNvbW11bmljYXRpb24gdG8gQmFja2VuZC4KClNpZ25lZC1vZmYtYnk6IFJveGFu
YSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KLS0tCiBwbGF0L2Ry
aXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIHwgICA4ICsrCiBwbGF0L2RyaXZlcnMv
dmlydGlvL3ZpcnRpb19ibGsuYyAgICAgICAgIHwgMjA5ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o
LSkKCmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5o
IGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaAppbmRleCA4MjJjNDQw
ZC4uYzg4ZGM0NWMgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0
aW9fYmxrLmgKKysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaApA
QCAtMjQsNiArMjQsMTAgQEAKICNpbmNsdWRlIDx1ay9jb25maWcuaD4KICNpbmNsdWRlIDx1ay9h
cmNoL3R5cGVzLmg+CiAKKy8qIE1heGltdW0gc2l6ZSBvZiBhbnkgc2luZ2xlIHNlZ21lbnQgaXMg
aW4gc2l6ZV9tYXguICovCisjZGVmaW5lIFZJUlRJT19CTEtfRl9TSVpFX01BWAkxCisvKiBNYXhp
bXVtIG51bWJlciBvZiBzZWdtZW50cyBpbiBhIHJlcXVlc3QgaXMgaW4gc2VnX21heC4gKi8KKyNk
ZWZpbmUgVklSVElPX0JMS19GX1NFR19NQVgJMgogLyogRGV2aWNlIGlzIHJlYWQtb25seS4gKi8K
ICNkZWZpbmUgVklSVElPX0JMS19GX1JPCQk1CiAvKiBCbG9jayBzaXplIG9mIGRpc2sgaXMgaW4g
YmxrX3NpemUuICovCkBAIC0zNSw2ICszOSwxMCBAQAogc3RydWN0IHZpcnRpb19ibGtfY29uZmln
IHsKIAkvKiBEaW1lbnNpb24gaW4gc2VjdG9ycyBudW1iZXIgKi8KIAlfX3U2NCBjYXBhY2l0eTsK
KwkvKiBNYXhpbXVtIG51bWJlciBvZiBzZWdtZW50cyBwZXIgcmVxdWVzdCAqLworCV9fdTMyIHNp
emVfbWF4OworCS8qIE1heGltdW0gc2l6ZSBvZiBhIHNlZ21lbnQgKi8KKwlfX3UzMiBzZWdfbWF4
OwogCS8qIEJsb2NrIHNpemUgKi8KIAlfX3UzMiBibGtfc2l6ZTsKIAkvKiBOdW1iZXIgb2YgdnFz
LCBvbmx5IGF2YWlsYWJsZSB3aGVuIFZJUlRJT19CTEtfRl9NUSBpcyBzZXQgKi8KZGlmZiAtLWdp
dCBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jIGIvcGxhdC9kcml2ZXJzL3ZpcnRp
by92aXJ0aW9fYmxrLmMKaW5kZXggM2Q4Yjc3NDUuLjIwZGMxZDY1IDEwMDY0NAotLS0gYS9wbGF0
L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYworKysgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3Zp
cnRpb19ibGsuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHZpcnRpby92aXJ0aW9faWRz
Lmg+CiAjaW5jbHVkZSA8dWsvYmxrZGV2Lmg+CiAjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb19ibGsu
aD4KKyNpbmNsdWRlIDx1ay9zZ2xpc3QuaD4KICNpbmNsdWRlIDx1ay9ibGtkZXZfZHJpdmVyLmg+
CiAKICNkZWZpbmUgRFJJVkVSX05BTUUJCSJ2aXJ0aW8tYmxrIgpAQCAtNDEsMTAgKzQyLDEzIEBA
CiAgKglBY2Nlc3MgTW9kZQogICoJU2VjdG9yX3NpemU7CiAgKglNdWx0aS1xdWV1ZSwKKyAqCU1h
eGltdW0gc2l6ZSBvZiBhIHNlZ21lbnQgZm9yIHJlcXVlc3RzLAorICoJTWF4aW11bSBudW1iZXIg
b2Ygc2VnbWVudHMgcGVyIHJlcXVlc3QsCiAgKiovCiAjZGVmaW5lIFZJUlRJT19CTEtfRFJWX0ZF
QVRVUkVTKGZlYXR1cmVzKSBcCiAJKFZJUlRJT19GRUFUVVJFU19VUERBVEUoZmVhdHVyZXMsIFZJ
UlRJT19CTEtfRl9STyB8IFwKLQlWSVJUSU9fQkxLX0ZfQkxLX1NJWkUgfCBWSVJUSU9fQkxLX0Zf
TVEpKQorCVZJUlRJT19CTEtfRl9CTEtfU0laRSB8IFZJUlRJT19CTEtfRl9NUSB8IFwKKwlWSVJU
SU9fQkxLX0ZfU0VHX01BWCB8IFZJUlRJT19CTEtfRl9TSVpFX01BWCkpCiAKIHN0YXRpYyBzdHJ1
Y3QgdWtfYWxsb2MgKmE7CiBzdGF0aWMgY29uc3QgY2hhciAqZHJ2X25hbWUgPSBEUklWRVJfTkFN
RTsKQEAgLTY0LDYgKzY4LDEwIEBAIHN0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSB7CiAJX191MTYg
ICAgbmJfcXVldWVzOwogCS8qIExpc3Qgb2YgcXVldWVzICovCiAJc3RydWN0ICAgdWtfYmxrZGV2
X3F1ZXVlICpxczsKKwkvKiBNYXhpbXVtIG51bWJlciBvZiBzZWdtZW50cyBmb3IgYSByZXF1ZXN0
ICovCisJX191MzIgbWF4X3NlZ21lbnRzOworCS8qIE1heGltdW0gc2l6ZSBvZiBhIHNlZ21lbnQg
Ki8KKwlfX3UzMiBtYXhfc2l6ZV9zZWdtZW50OwogfTsKIAogc3RydWN0IHVrX2Jsa2Rldl9xdWV1
ZSB7CkBAIC03NiwxMSArODQsMTY5IEBAIHN0cnVjdCB1a19ibGtkZXZfcXVldWUgewogCXN0cnVj
dCB1a19hbGxvYyAqYTsKIAkvKiBUaGUgbnIuIG9mIGRlc2NyaXB0b3IgbGltaXQgKi8KIAl1aW50
MTZfdCBtYXhfbmJfZGVzYzsKKwkvKiBUaGUgbnIuIG9mIGRlc2NyaXB0b3IgdXNlciBjb25maWd1
cmVkICovCisJdWludDE2X3QgbmJfZGVzYzsKIAkvKiBSZWZlcmVuY2UgdG8gdmlydGlvX2Jsa19k
ZXZpY2UgICovCiAJc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmQ7CisJLyogVGhlIHNjYXR0
ZXIgbGlzdCBhbmQgaXRzIGFzc29jaWF0ZWQgZnJhZ21lbnRzICovCisJc3RydWN0IHVrX3NnbGlz
dCBzZzsKKwlzdHJ1Y3QgdWtfc2dsaXN0X3NlZyAqc2dzZWdzOwogfTsKIAogCitzdGF0aWMgaW50
IHZpcnRpb19ibGtkZXZfcmVjdl9kb25lKHN0cnVjdCB2aXJ0cXVldWUgKnZxLCB2b2lkICpwcml2
KQoreworCXN0cnVjdCB1a19ibGtkZXZfcXVldWUgKnF1ZXVlID0gTlVMTDsKKworCVVLX0FTU0VS
VCh2cSAmJiBwcml2KTsKKworCXF1ZXVlID0gKHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKikgcHJp
djsKKwl1a19ibGtkZXZfZHJ2X3F1ZXVlX2V2ZW50KCZxdWV1ZS0+dmJkLT5ibGtkZXYsIHF1ZXVl
LT5scXVldWVfaWQpOworCisJcmV0dXJuIDE7Cit9CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBz
ZXR1cCB0aGUgdnJpbmcgaW5mcmFzdHJ1Y3R1cmUuCisgKi8KK3N0YXRpYyBpbnQgdmlydGlvX2Js
a2Rldl92cXVldWVfc2V0dXAoc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqcXVldWUsCisJCXVpbnQx
Nl90IG5yX2Rlc2MpCit7CisJdWludDE2X3QgbWF4X2Rlc2M7CisJc3RydWN0IHZpcnRxdWV1ZSAq
dnE7CisKKwlVS19BU1NFUlQocXVldWUpOworCW1heF9kZXNjID0gcXVldWUtPm1heF9uYl9kZXNj
OworCWlmICh1bmxpa2VseShtYXhfZGVzYyA8IG5yX2Rlc2MpKSB7CisJCXVrX3ByX2VycigiTWF4
IGRlc2M6ICUiX19QUkl1MTYiIFJlcXVlc3RlZCBkZXNjOiUiX19QUkl1MTYiXG4iLAorCQkJICBt
YXhfZGVzYywgbnJfZGVzYyk7CisJCXJldHVybiAtRU5PQlVGUzsKKwl9CisKKwlucl9kZXNjID0g
KG5yX2Rlc2MpID8gbnJfZGVzYyA6IG1heF9kZXNjOworCXVrX3ByX2RlYnVnKCJDb25maWd1cmlu
ZyB0aGUgJWQgZGVzY3JpcHRvcnNcbiIsIG5yX2Rlc2MpOworCisJLyogQ2hlY2sgaWYgdGhlIGRl
c2NyaXB0b3IgaXMgYSBwb3dlciBvZiAyICovCisJaWYgKHVubGlrZWx5KG5yX2Rlc2MgJiAobnJf
ZGVzYyAtIDEpKSkgeworCQl1a19wcl9lcnIoIkV4cGVjdCBkZXNjcmlwdG9yIGNvdW50IGFzIGEg
cG93ZXIgMlxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXZxID0gdmlydGlvX3ZxdWV1
ZV9zZXR1cChxdWV1ZS0+dmJkLT52ZGV2LCBxdWV1ZS0+bHF1ZXVlX2lkLCBucl9kZXNjLAorCQkJ
dmlydGlvX2Jsa2Rldl9yZWN2X2RvbmUsIGEpOworCWlmICh1bmxpa2VseShQVFJJU0VSUih2cSkp
KSB7CisJCXVrX3ByX2VycigiRmFpbGVkIHRvIHNldCB1cCB2aXJ0cXVldWUgJSJfX1BSSXUxNiJc
biIsCisJCQkgIHF1ZXVlLT5scXVldWVfaWQpOworCQlyZXR1cm4gUFRSMkVSUih2cSk7CisJfQor
CisJcXVldWUtPnZxID0gdnE7CisJdnEtPnByaXYgPSBxdWV1ZTsKKworCXJldHVybiAwOworfQor
CitzdGF0aWMgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqdmlydGlvX2Jsa2Rldl9xdWV1ZV9zZXR1
cChzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCisJCXVpbnQxNl90IHF1ZXVlX2lkLAorCQl1aW50MTZf
dCBuYl9kZXNjLAorCQljb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlX2NvbmYgKnF1ZXVlX2Nv
bmYpCit7CisJc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldjsKKwlpbnQgcmMgPSAwOwor
CXN0cnVjdCB1a19ibGtkZXZfcXVldWUgKnF1ZXVlOworCisJVUtfQVNTRVJUKGRldiAhPSBOVUxM
KTsKKwlVS19BU1NFUlQocXVldWVfY29uZiAhPSBOVUxMKTsKKworCXZiZGV2ID0gdG9fdmlydGlv
YmxrZGV2KGRldik7CisJaWYgKHVubGlrZWx5KHF1ZXVlX2lkID49IHZiZGV2LT5uYl9xdWV1ZXMp
KSB7CisJCXVrX3ByX2VycigiSW52YWxpZCBxdWV1ZV9pZCAlIl9fUFJJdTE2IlxuIiwgcXVldWVf
aWQpOworCQlyYyA9IC1FSU5WQUw7CisJCWdvdG8gZXJyX2V4aXQ7CisJfQorCisJcXVldWUgPSAm
dmJkZXYtPnFzW3F1ZXVlX2lkXTsKKwlxdWV1ZS0+YSA9IHF1ZXVlX2NvbmYtPmE7CisKKwkvKiBJ
bml0IHNnbGlzdCAqLworCXF1ZXVlLT5zZ3NlZ3MgPSB1a19tYWxsb2MocXVldWUtPmEsCisJCQl2
YmRldi0+bWF4X3NlZ21lbnRzICogc2l6ZW9mKCpxdWV1ZS0+c2dzZWdzKSk7CisJaWYgKHVubGlr
ZWx5KCFxdWV1ZS0+c2dzZWdzKSkgeworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gZXJyX2V4aXQ7
CisJfQorCisJdWtfc2dsaXN0X2luaXQoJnF1ZXVlLT5zZywgdmJkZXYtPm1heF9zZWdtZW50cywK
KwkJCXF1ZXVlLT5zZ3NlZ3MpOworCXF1ZXVlLT52YmQgPSB2YmRldjsKKwlxdWV1ZS0+bmJfZGVz
YyA9IG5iX2Rlc2M7CisJcXVldWUtPmxxdWV1ZV9pZCA9IHF1ZXVlX2lkOworCisJLyogU2V0dXAg
dGhlIHZpcnRxdWV1ZSB3aXRoIHRoZSBkZXNjcmlwdG9yICovCisJcmMgPSB2aXJ0aW9fYmxrZGV2
X3ZxdWV1ZV9zZXR1cChxdWV1ZSwgbmJfZGVzYyk7CisJaWYgKHJjIDwgMCkgeworCQl1a19wcl9l
cnIoIkZhaWxlZCB0byBzZXQgdXAgdmlydHF1ZXVlICUiX19QUkl1MTYiOiAlZFxuIiwKKwkJCSAg
cXVldWVfaWQsIHJjKTsKKwkJZ290byBzZXR1cF9lcnI7CisJfQorCitleGl0OgorCXJldHVybiBx
dWV1ZTsKK3NldHVwX2VycjoKKwl1a19mcmVlKHF1ZXVlLT5hLCBxdWV1ZS0+c2dzZWdzKTsKK2Vy
cl9leGl0OgorCXF1ZXVlID0gRVJSMlBUUihyYyk7CisJZ290byBleGl0OworfQorCitzdGF0aWMg
aW50IHZpcnRpb19ibGtkZXZfcXVldWVfcmVsZWFzZShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCisJ
CXVpbnQxNl90IHF1ZXVlX2lkKQoreworCXN0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSAqdmJkZXY7
CisJaW50IHJjID0gMDsKKwlzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICpxdWV1ZTsKKworCVVLX0FT
U0VSVChkZXYgIT0gTlVMTCk7CisJdmJkZXYgPSB0b192aXJ0aW9ibGtkZXYoZGV2KTsKKwlpZiAo
dW5saWtlbHkocXVldWVfaWQgPj0gdmJkZXYtPm5iX3F1ZXVlcykpIHsKKwkJdWtfcHJfZXJyKCJJ
bnZhbGlkIHF1ZXVlX2lkICUiX19QUkl1MTYiXG4iLCBxdWV1ZV9pZCk7CisJCXJldHVybiAtRUlO
VkFMOworCX0KKworCXF1ZXVlID0gJnZiZGV2LT5xc1txdWV1ZV9pZF07CisJdWtfZnJlZShxdWV1
ZS0+YSwgcXVldWUtPnNnc2Vncyk7CisJdmlydGlvX3ZxdWV1ZV9yZWxlYXNlKHZiZGV2LT52ZGV2
LCBxdWV1ZS0+dnEsIHF1ZXVlLT5hKTsKKworCXJldHVybiByYzsKK30KKworc3RhdGljIGludCB2
aXJ0aW9fYmxrZGV2X3F1ZXVlX2luZm9fZ2V0KHN0cnVjdCB1a19ibGtkZXYgKmRldiwKKwkJdWlu
dDE2X3QgcXVldWVfaWQsCisJCXN0cnVjdCB1a19ibGtkZXZfcXVldWVfaW5mbyAqcWluZm8pCit7
CisJc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldiA9IE5VTEw7CisJc3RydWN0IHVrX2Js
a2Rldl9xdWV1ZSAqcXVldWUgPSBOVUxMOworCWludCByYyA9IDA7CisKKwlVS19BU1NFUlQoZGV2
KTsKKwlVS19BU1NFUlQocWluZm8pOworCisJdmJkZXYgPSB0b192aXJ0aW9ibGtkZXYoZGV2KTsK
KwlpZiAodW5saWtlbHkocXVldWVfaWQgPj0gdmJkZXYtPm5iX3F1ZXVlcykpIHsKKwkJdWtfcHJf
ZXJyKCJJbnZhbGlkIHF1ZXVlX2lkICUiX19QUkl1MTYiXG4iLCBxdWV1ZV9pZCk7CisJCXJjID0g
LUVJTlZBTDsKKwkJZ290byBleGl0OworCX0KKworCXF1ZXVlID0gJnZiZGV2LT5xc1txdWV1ZV9p
ZF07CisJcWluZm8tPm5iX21pbiA9IHF1ZXVlLT5tYXhfbmJfZGVzYzsKKwlxaW5mby0+bmJfbWF4
ID0gcXVldWUtPm1heF9uYl9kZXNjOworCXFpbmZvLT5uYl9pc19wb3dlcl9vZl90d28gPSAxOwor
CitleGl0OgorCXJldHVybiByYzsKK30KKwogc3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X3F1ZXVl
c19hbGxvYyhzdHJ1Y3QgdmlydGlvX2Jsa19kZXZpY2UgKnZiZGV2LAogCQkJCSAgICBjb25zdCBz
dHJ1Y3QgdWtfYmxrZGV2X2NvbmYgKmNvbmYpCiB7CkBAIC0xODUsNiArMzUxLDggQEAgc3RhdGlj
IGludCB2aXJ0aW9fYmxrZGV2X2ZlYXR1cmVfbmVnb3RpYXRlKHN0cnVjdCB2aXJ0aW9fYmxrX2Rl
dmljZSAqdmJkZXYpCiAJX19zZWN0b3Igc2VjdG9yczsKIAlfX3NlY3RvciBzc2l6ZTsKIAlfX3Ux
NiBudW1fcXVldWVzOworCV9fdTMyIG1heF9zZWdtZW50czsKKwlfX3UzMiBtYXhfc2l6ZV9zZWdt
ZW50OwogCiAJVUtfQVNTRVJUKHZiZGV2KTsKIAljYXAgPSAmdmJkZXYtPmJsa2Rldi5jYXBhYmls
aXRpZXM7CkBAIC0yMzYsMTMgKzQwNCw0OSBAQCBzdGF0aWMgaW50IHZpcnRpb19ibGtkZXZfZmVh
dHVyZV9uZWdvdGlhdGUoc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldikKIAl9IGVsc2UK
IAkJbnVtX3F1ZXVlcyA9IDE7CiAKKwlpZiAodmlydGlvX2hhc19mZWF0dXJlcyhob3N0X2ZlYXR1
cmVzLCBWSVJUSU9fQkxLX0ZfU0VHX01BWCkpIHsKKwkJYnl0ZXNfdG9fcmVhZCA9IHZpcnRpb19j
b25maWdfZ2V0KHZiZGV2LT52ZGV2LAorCQkJX19vZmZzZXRvZihzdHJ1Y3QgdmlydGlvX2Jsa19j
b25maWcsIHNlZ19tYXgpLAorCQkJJm1heF9zZWdtZW50cywKKwkJCXNpemVvZihtYXhfc2VnbWVu
dHMpLAorCQkJMSk7CisJCWlmIChieXRlc190b19yZWFkICE9IHNpemVvZihtYXhfc2VnbWVudHMp
KSAgeworCQkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gZ2V0IG1heGltdW0gbmIgb2Ygc2VnbWVudHNc
biIpOworCQkJcmMgPSAtRUFHQUlOOworCQkJZ290byBleGl0OworCQl9CisJfSBlbHNlCisJCW1h
eF9zZWdtZW50cyA9IDE7CisKKwkvKiBXZSBuZWVkIGV4dHJhIHNnIGVsZW1lbnRzIGZvciBoZWFk
IChoZWFkZXIpIGFuZCB0YWlsIChzdGF0dXMpLiAqLworCW1heF9zZWdtZW50cyArPSAyOworCisJ
aWYgKHZpcnRpb19oYXNfZmVhdHVyZXMoaG9zdF9mZWF0dXJlcywgVklSVElPX0JMS19GX1NJWkVf
TUFYKSkgeworCQlieXRlc190b19yZWFkID0gdmlydGlvX2NvbmZpZ19nZXQodmJkZXYtPnZkZXYs
CisJCQlfX29mZnNldG9mKHN0cnVjdCB2aXJ0aW9fYmxrX2NvbmZpZywgc2l6ZV9tYXgpLAorCQkJ
Jm1heF9zaXplX3NlZ21lbnQsCisJCQlzaXplb2YobWF4X3NpemVfc2VnbWVudCksCisJCQkxKTsK
KwkJaWYgKGJ5dGVzX3RvX3JlYWQgIT0gc2l6ZW9mKG1heF9zaXplX3NlZ21lbnQpKSAgeworCQkJ
dWtfcHJfZXJyKCJGYWlsZWQgdG8gZ2V0IHNpemUgbWF4IGZyb20gZGV2aWNlICVkXG4iLAorCQkJ
CQlyYyk7CisJCQlyYyA9IC1FQUdBSU47CisJCQlnb3RvIGV4aXQ7CisJCX0KKwl9IGVsc2UKKwkJ
bWF4X3NpemVfc2VnbWVudCA9IF9fUEFHRV9TSVpFOworCiAJY2FwLT5zc2l6ZSA9IHNzaXplOwog
CWNhcC0+c2VjdG9ycyA9IHNlY3RvcnM7CiAJY2FwLT5hbGlnbiA9IHNpemVvZih2b2lkICopOwog
CWNhcC0+bW9kZSA9ICh2aXJ0aW9faGFzX2ZlYXR1cmVzKAogCQkJaG9zdF9mZWF0dXJlcywgVklS
VElPX0JMS19GX1JPKSkgPyBPX1JET05MWSA6IE9fUkRXUjsKKwljYXAtPm1heF9zZWN0b3JzX3Bl
cl9yZXEgPQorCQkJbWF4X3NpemVfc2VnbWVudCAvIHNzaXplICogKG1heF9zZWdtZW50cyAtIDIp
OwogCiAJdmJkZXYtPm1heF92cXVldWVfcGFpcnMgPSBudW1fcXVldWVzOworCXZiZGV2LT5tYXhf
c2VnbWVudHMgPSBtYXhfc2VnbWVudHM7CisJdmJkZXYtPm1heF9zaXplX3NlZ21lbnQgPSBtYXhf
c2l6ZV9zZWdtZW50OwogCiAJLyoqCiAJICogTWFzayBvdXQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5
IGJvdGggZHJpdmVyIGFuZCBkZXZpY2UuCkBAIC0yNjUsNiArNDY5LDkgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHZpcnRpb19ibGtkZXZfZmVhdHVyZV9zZXQoc3RydWN0IHZpcnRpb19ibGtfZGV2aWNl
ICp2YmRldikKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X29wcyB2aXJ0aW9fYmxrZGV2
X29wcyA9IHsKIAkJLmdldF9pbmZvID0gdmlydGlvX2Jsa2Rldl9nZXRfaW5mbywKIAkJLmRldl9j
b25maWd1cmUgPSB2aXJ0aW9fYmxrZGV2X2NvbmZpZ3VyZSwKKwkJLnF1ZXVlX2dldF9pbmZvID0g
dmlydGlvX2Jsa2Rldl9xdWV1ZV9pbmZvX2dldCwKKwkJLnF1ZXVlX3NldHVwID0gdmlydGlvX2Js
a2Rldl9xdWV1ZV9zZXR1cCwKKwkJLnF1ZXVlX3JlbGVhc2UgPSB2aXJ0aW9fYmxrZGV2X3F1ZXVl
X3JlbGVhc2UsCiAJCS5kZXZfY2xvc2UgPSB2aXJ0aW9fYmxrZGV2X2Nsb3NlLAogfTsKIAotLSAK
Mi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXhfO-0008Qt-Ch; Mon, 03 Jun 2019 07:46:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfN-0008QX-MB
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:01 +0000
X-Inumbo-ID: a12fdc2e-85d3-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a12fdc2e-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:46:00 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id s3so2702693wms.2
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:46:00 -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=7mj57PzESMiWrVCgHnzjLPvF3zlx26VIJaV2bjUOBDw=;
 b=LV0AmwGjU4wAPRbE8so0KxHorOLDDGZYBwlK8lIuVhOstFXhV/7QBkC6jD2iEhWFTq
 z0bo5gCWz5MRF33B8pCHh3Xg8W9tVpF5Z51Mrd1gc6YPjlcUyX4M1/LRul/aIHXPRe9x
 s4rfmfKajGNC2yoolaTAaLSn2Rp8ByXqtHRScFCHr6MCywAiUCP51RG5/KvlK0g4IvAR
 NW7vzTwYf6UOIyUDhsAwRyry8c69YTECusqmEAFlHvym5VK20z1tY7pSq+xkgG3nEaWu
 r3m2EeA/2tvGbftSD59iTBx6lapdWJ97TBxNPSaB2zfqJJmJKQZEpMouu3IqVuQkt6LB
 XwmQ==
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=7mj57PzESMiWrVCgHnzjLPvF3zlx26VIJaV2bjUOBDw=;
 b=XZO3dAI+C4COBJqLXSgGEE7F+zckfQJO+eMn4JCLGb9KYiOY6UskXuN0AipFFEFpjf
 4KRVAYXfz2HoUGRlJQ6zaxU95p8jgeCSU8dmAqcxakkjuXaHbHz4J7nP5mdCyqcXRB/w
 NCafteIo/hTY5cEmMbYu6pS0hXCZakLXAuMJk+JwxlXreopAhvkppD0BFx3OPcPu+Rjf
 rpKxLmuDMU4QV20ZY3HuF+m9cA3PT5hNi5hyiMQR8O1aZ8Sx5bJVem+frH7KtdcTyYfx
 l7r7uprQMm5Kp1bOmd9kUoeXDM5INpFFsghsJ72TojlMThmNRmuZpVf4gaGvanTTFAP0
 cD6w==
X-Gm-Message-State: APjAAAVlFICAAoadY3Q5Ya344d9/5GJoaBkP3CLJU7HE4KSI9Vj0yqHX
 yELhd1iXPXx75NSaLW8xtzCAg/uCfaw=
X-Google-Smtp-Source: APXvYqwvV7qFZEyO7L2m9ttkUUzWv7euCNP1R3RSLXHn+RJg2O5CrVIMKuV2F23kACV8iquo3cFBnQ==
X-Received: by 2002:a1c:7a10:: with SMTP id v16mr9510578wmc.98.1559547959412; 
 Mon, 03 Jun 2019 00:45:59 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.58
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:59 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:40 +0300
Message-Id: <20190603074545.13707-7-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 07/12] plat/drivers: Enable/disable
 interrupts on virtio block queues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHRoZSB1c2VyIHRvIGVuYWJsZS9kaXNh
YmxlIGludGVycnVwdHMKb24gcXVldWVzLgoKU2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNj
dSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgotLS0KIHBsYXQvZHJpdmVycy92aXJ0
aW8vdmlydGlvX2Jsay5jIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9wbGF0
L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYyBiL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlv
X2Jsay5jCmluZGV4IDIwZGMxZDY1Li5mYWRjYTA3YSAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJz
L3ZpcnRpby92aXJ0aW9fYmxrLmMKKysrIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxr
LmMKQEAgLTM1LDYgKzM1LDExIEBACiAjZGVmaW5lIERSSVZFUl9OQU1FCQkidmlydGlvLWJsayIK
ICNkZWZpbmUgREVGQVVMVF9TRUNUT1JfU0laRQk1MTIKIAorI2RlZmluZQlWVEJMS19JTlRSX0VO
CQkoMSA8PCAwKQorI2RlZmluZQlWVEJMS19JTlRSX0VOX01BU0sJKDEpCisjZGVmaW5lCVZUQkxL
X0lOVFJfVVNSX0VOCSgxIDw8IDEpCisjZGVmaW5lCVZUQkxLX0lOVFJfVVNSX0VOX01BU0sJKDIp
CisKICNkZWZpbmUgdG9fdmlydGlvYmxrZGV2KGJkZXYpIFwKIAlfX2NvbnRhaW5lcm9mKGJkZXYs
IHN0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSwgYmxrZGV2KQogCkBAIC04Niw2ICs5MSw4IEBAIHN0
cnVjdCB1a19ibGtkZXZfcXVldWUgewogCXVpbnQxNl90IG1heF9uYl9kZXNjOwogCS8qIFRoZSBu
ci4gb2YgZGVzY3JpcHRvciB1c2VyIGNvbmZpZ3VyZWQgKi8KIAl1aW50MTZfdCBuYl9kZXNjOwor
CS8qIFRoZSBmbGFnIHRvIGludGVycnVwdCBvbiB0aGUgcXVldWUgKi8KKwl1aW50OF90IGludHJf
ZW5hYmxlZDsKIAkvKiBSZWZlcmVuY2UgdG8gdmlydGlvX2Jsa19kZXZpY2UgICovCiAJc3RydWN0
IHZpcnRpb19ibGtfZGV2aWNlICp2YmQ7CiAJLyogVGhlIHNjYXR0ZXIgbGlzdCBhbmQgaXRzIGFz
c29jaWF0ZWQgZnJhZ21lbnRzICovCkBAIC0xMDEsMTEgKzEwOCw3MCBAQCBzdGF0aWMgaW50IHZp
cnRpb19ibGtkZXZfcmVjdl9kb25lKHN0cnVjdCB2aXJ0cXVldWUgKnZxLCB2b2lkICpwcml2KQog
CVVLX0FTU0VSVCh2cSAmJiBwcml2KTsKIAogCXF1ZXVlID0gKHN0cnVjdCB1a19ibGtkZXZfcXVl
dWUgKikgcHJpdjsKKworCS8qIERpc2FibGUgdGhlIGludGVycnVwdCBmb3IgdGhlIHJpbmcgKi8K
Kwl2aXJ0cXVldWVfaW50cl9kaXNhYmxlKHZxKTsKKwlxdWV1ZS0+aW50cl9lbmFibGVkICY9IH4o
VlRCTEtfSU5UUl9FTik7CisKIAl1a19ibGtkZXZfZHJ2X3F1ZXVlX2V2ZW50KCZxdWV1ZS0+dmJk
LT5ibGtkZXYsIHF1ZXVlLT5scXVldWVfaWQpOwogCiAJcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBp
bnQgdmlydGlvX2Jsa2Rldl9xdWV1ZV9pbnRyX2VuYWJsZShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYs
CisJCXVpbnQxNl90IHF1ZXVlX2lkKQoreworCXN0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSAqZDsK
KworCWludCByYyA9IDA7CisJc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqcXVldWU7CisKKwlVS19B
U1NFUlQoZGV2KTsKKworCWQgPSB0b192aXJ0aW9ibGtkZXYoZGV2KTsKKwlpZiAodW5saWtlbHko
cXVldWVfaWQgPj0gZC0+bmJfcXVldWVzKSkgeworCQl1a19wcl9lcnIoIkludmFsaWQgcXVldWVf
aWQgJSJfX1BSSXUxNiJcbiIsIHF1ZXVlX2lkKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJ
cXVldWUgPSAmZC0+cXNbcXVldWVfaWRdOworCS8qIElmIHRoZSBpbnRlcnJ1cHQgaXMgZW5hYmxl
ZCAqLworCWlmIChxdWV1ZS0+aW50cl9lbmFibGVkICYgVlRCTEtfSU5UUl9FTikKKwkJcmV0dXJu
IDA7CisKKwkvKioKKwkgKiBFbmFibGUgdGhlIHVzZXIgY29uZmlndXJhdGlvbiBiaXQuIFRoaXMg
d291bGQgY2F1c2UgdGhlIGludGVycnVwdCB0bworCSAqIGJlIGVuYWJsZWQgYXV0b21hdGljYWxs
eSwgaWYgdGhlIGludGVycnVwdCBjb3VsZCBub3QgYmUgZW5hYmxlZCBub3cKKwkgKiBkdWUgdG8g
ZGF0YSBpbiB0aGUgcXVldWUuCisJICovCisJcXVldWUtPmludHJfZW5hYmxlZCA9IFZUQkxLX0lO
VFJfVVNSX0VOOworCXJjID0gdmlydHF1ZXVlX2ludHJfZW5hYmxlKHF1ZXVlLT52cSk7CisJaWYg
KCFyYykKKwkJcXVldWUtPmludHJfZW5hYmxlZCB8PSBWVEJMS19JTlRSX0VOOworCisJcmV0dXJu
IHJjOworfQorCitzdGF0aWMgaW50IHZpcnRpb19ibGtkZXZfcXVldWVfaW50cl9kaXNhYmxlKHN0
cnVjdCB1a19ibGtkZXYgKmRldiwKKwkJdWludDE2X3QgcXVldWVfaWQpCit7CisJc3RydWN0IHZp
cnRpb19ibGtfZGV2aWNlICp2YmRldjsKKwlzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICpxdWV1ZTsK
KworCVVLX0FTU0VSVChkZXYpOworCXZiZGV2ID0gdG9fdmlydGlvYmxrZGV2KGRldik7CisJaWYg
KHVubGlrZWx5KHF1ZXVlX2lkID49IHZiZGV2LT5uYl9xdWV1ZXMpKSB7CisJCXVrX3ByX2Vycigi
SW52YWxpZCBxdWV1ZV9pZCAlIl9fUFJJdTE2IlxuIiwgcXVldWVfaWQpOworCQlyZXR1cm4gLUVJ
TlZBTDsKKwl9CisKKwlxdWV1ZSA9ICZ2YmRldi0+cXNbcXVldWVfaWRdOworCXZpcnRxdWV1ZV9p
bnRyX2Rpc2FibGUocXVldWUtPnZxKTsKKwlxdWV1ZS0+aW50cl9lbmFibGVkICY9IH4oVlRCTEtf
SU5UUl9VU1JfRU4gfCBWVEJMS19JTlRSX0VOKTsKKworCXJldHVybiAwOworfQorCiAvKioKICAq
IFRoaXMgZnVuY3Rpb24gc2V0dXAgdGhlIHZyaW5nIGluZnJhc3RydWN0dXJlLgogICovCkBAIC00
NzEsNiArNTM3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1a19ibGtkZXZfb3BzIHZpcnRpb19i
bGtkZXZfb3BzID0gewogCQkuZGV2X2NvbmZpZ3VyZSA9IHZpcnRpb19ibGtkZXZfY29uZmlndXJl
LAogCQkucXVldWVfZ2V0X2luZm8gPSB2aXJ0aW9fYmxrZGV2X3F1ZXVlX2luZm9fZ2V0LAogCQku
cXVldWVfc2V0dXAgPSB2aXJ0aW9fYmxrZGV2X3F1ZXVlX3NldHVwLAorCQkucXVldWVfaW50cl9l
bmFibGUgPSB2aXJ0aW9fYmxrZGV2X3F1ZXVlX2ludHJfZW5hYmxlLAorCQkucXVldWVfaW50cl9k
aXNhYmxlID0gdmlydGlvX2Jsa2Rldl9xdWV1ZV9pbnRyX2Rpc2FibGUsCiAJCS5xdWV1ZV9yZWxl
YXNlID0gdmlydGlvX2Jsa2Rldl9xdWV1ZV9yZWxlYXNlLAogCQkuZGV2X2Nsb3NlID0gdmlydGlv
X2Jsa2Rldl9jbG9zZSwKIH07Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfQ-0008SL-F1; Mon, 03 Jun 2019 07:46:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfO-0008RX-TG
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:02 +0000
X-Inumbo-ID: a1da641a-85d3-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a1da641a-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:46:01 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id d17so2304396wmb.3
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:46:01 -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=f+F6U3yYnFfp+jwfwvyWxbQr8HbL4KLLLQ7Ffe35rlc=;
 b=fQdAktbk76m1fTpBj9iND/za0qCDFqTp0clJXi0GMezVm39WT60jdK5WoB+aMvbyfW
 i+blpXKJGoW5DKtTPJ7KeWnZzB8R8FLufUKNxLbYReQuToSW7FQzPDs74fsHP+2S/vM4
 /drTQpJA4HuGuCeqSkN5FxrMbOXhHyqgYP5Wv2BO+zyIfx/or1hV/KNjMdaHJYTRAIeq
 JsLMy0sSkvsV25OISWWUfkGl70548WEHD+R5pDl4ctGjmGEimg6Q9VYvlmL/cwt1Zed9
 +3CMenFY/xAxH5lJi0iI9LHydmD1tJbV9k4l0Fz5h363kHoGgyCysM9oJg+q4Y/k0fC9
 t7HA==
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=f+F6U3yYnFfp+jwfwvyWxbQr8HbL4KLLLQ7Ffe35rlc=;
 b=AlGN0U/SgTE6kOv+p+XnBI8jbzg5+lwPCBw5qfRFWxfuV9/HX/X3MYthefGb5QcHMd
 6xBgPj9496nOrrEN+xVH008YyT2ADWB/lluunNjelR+myQOm/8F1BxnxEPkktI9To4xV
 clKRO2P6HzoK740qM2Gyc8hSL2S4yrnyGFci8j2UsQU5O7h/N+SZWZHQxlqCleXDoMka
 gWm5PjbL0v0Dw8DgrZw2tVtPOEZsyQPfL3FLSMT2WZwAht88BKY9NVH+DKz7IDhFJHB9
 GKSlQYr23R81ZUkWiaurPQejwEvJNADp0M05z1indf9hKT74exMg9VMxH/gUn113DoRN
 jbrQ==
X-Gm-Message-State: APjAAAWSde6cM/15oweXLEbe4yc0g9m/99w5pjDU0B+XZtn3OTA4CRC5
 CeDu3BNhLxVHE7gJJJEy+pyzrUr/wcM=
X-Google-Smtp-Source: APXvYqx4LGavRESmUcqBBPPjGdzRefSFJ3UKP+0wl3dd6sHJbhi8HfiMhtOY9Dr1jGzPgaHH+veq9w==
X-Received: by 2002:a1c:5f09:: with SMTP id t9mr13776311wmb.112.1559547960489; 
 Mon, 03 Jun 2019 00:46:00 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.45.59
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:45:59 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:41 +0300
Message-Id: <20190603074545.13707-8-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 08/12] plat/drivers: Start virtio
 block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN0YXJ0L3N0b3Agb3BlcmF0aW9ucyB0byB2aXJ0aW8gZGV2
aWNlLgpUaGlzIGltcGxpZXMgY29ubmVjdGlvbiB0byBiYWNrZW5kIGJ5IHNldHRpbmcgdGhlIERS
SVZFUl9PSyBzdGF0dXMgYml0LgoKU2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmlj
b2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgotLS0KIHBsYXQvZHJpdmVycy92aXJ0aW8vdmly
dGlvX2Jsay5jIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUg
Y2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy92aXJ0
aW8vdmlydGlvX2Jsay5jIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKaW5kZXgg
ZmFkY2EwN2EuLmUxOGVmODA1IDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRp
b19ibGsuYworKysgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYwpAQCAtMzc4LDYg
KzM3OCwzNyBAQCBleGl0OgogCXJldHVybiByYzsKIH0KIAorc3RhdGljIGludCB2aXJ0aW9fYmxr
ZGV2X3N0YXJ0KHN0cnVjdCB1a19ibGtkZXYgKmRldikKK3sKKwlzdHJ1Y3QgdmlydGlvX2Jsa19k
ZXZpY2UgKmQ7CisKKwlVS19BU1NFUlQoZGV2ICE9IE5VTEwpOworCisJZCA9IHRvX3ZpcnRpb2Js
a2RldihkZXYpOworCXZpcnRpb19kZXZfZHJ2X3VwKGQtPnZkZXYpOworCisJdWtfcHJfaW5mbyhE
UklWRVJfTkFNRSI6ICUiX19QUkl1MTYiIHN0YXJ0ZWRcbiIsIGQtPnVpZCk7CisKKwlyZXR1cm4g
MDsKK30KKworc3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X3N0b3Aoc3RydWN0IHVrX2Jsa2RldiAq
ZGV2KQoreworCXN0cnVjdCB2aXJ0aW9fYmxrX2RldmljZSAqZDsKKwlpbnQgcmMgPSAwOworCisJ
VUtfQVNTRVJUKGRldiAhPSBOVUxMKTsKKworCWQgPSB0b192aXJ0aW9ibGtkZXYoZGV2KTsKKwly
YyA9IHZpcnRpb19kZXZfcmVzZXQoZC0+dmRldik7CisJaWYgKHJjKSB7CisJCXVrX3ByX2luZm8o
RFJJVkVSX05BTUUiOiAlIl9fUFJJdTE2IiBzdG9wcGVkIiwgZC0+dWlkKTsKKwkJZ290byBvdXQ7
CisJfQorCisJdWtfcHJfd2FybihEUklWRVJfTkFNRSI6ICUiX19QUkl1MTYiIFN0YXJ0IGlzIG5v
dCBhbGxvd2VkISEhIiwgZC0+dWlkKTsKKworb3V0OgogCXJldHVybiByYzsKIH0KIApAQCAtNTM4
LDYgKzU2OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X29wcyB2aXJ0aW9fYmxr
ZGV2X29wcyA9IHsKIAkJLnF1ZXVlX2dldF9pbmZvID0gdmlydGlvX2Jsa2Rldl9xdWV1ZV9pbmZv
X2dldCwKIAkJLnF1ZXVlX3NldHVwID0gdmlydGlvX2Jsa2Rldl9xdWV1ZV9zZXR1cCwKIAkJLnF1
ZXVlX2ludHJfZW5hYmxlID0gdmlydGlvX2Jsa2Rldl9xdWV1ZV9pbnRyX2VuYWJsZSwKKwkJLmRl
dl9zdGFydCA9IHZpcnRpb19ibGtkZXZfc3RhcnQsCisJCS5kZXZfc3RvcCA9IHZpcnRpb19ibGtk
ZXZfc3RvcCwKIAkJLnF1ZXVlX2ludHJfZGlzYWJsZSA9IHZpcnRpb19ibGtkZXZfcXVldWVfaW50
cl9kaXNhYmxlLAogCQkucXVldWVfcmVsZWFzZSA9IHZpcnRpb19ibGtkZXZfcXVldWVfcmVsZWFz
ZSwKIAkJLmRldl9jbG9zZSA9IHZpcnRpb19ibGtkZXZfY2xvc2UsCi0tIAoyLjExLjAKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfR-0008T8-IZ; Mon, 03 Jun 2019 07:46:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfQ-0008S7-3X
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:04 +0000
X-Inumbo-ID: a287bc8d-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a287bc8d-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:46:02 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id e16so2631840wrn.1
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:46: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=f801tOJzk/wpLYmRMyM9+4av05qSjL3cWKBkJfAL1WQ=;
 b=Fnzkkys6HEhwRaajn590n43BR5w+qxj/9ptHtKX6rSNFvIq/pzFqhHclqZAOHCOJc4
 ha1VD+sawximGRi/a6896b3mOBZlU9cy3AYE/qlVcrpxWYl+0sGnKfG/Je9Vahkegx5p
 iLobCwC3q8mfHU9EuxgUUv4klD9FdZKkiJaQckjEVPmXt/dRAepHRfSHDEaV8uiZWD5y
 luzaZqy7Qe/lZ9gG985IcIJlzM03z9CwjrbKGiE3Pi8kxq/nNM39fpKG4X6VYT3KvhZi
 qjIJlrLAPf12Yu1YXkyPKWz/84+aj1aq5+nrf5PVVLKX8Fg+dpC0DIKPl6WyzoCtxeSW
 /JAA==
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=f801tOJzk/wpLYmRMyM9+4av05qSjL3cWKBkJfAL1WQ=;
 b=FeFK4LH8Voj4c6bJaLPEUZ8n2ipxixkvj9NMyQy3Fcq+enxmrXAENzwh5jJ7msL9cX
 TgTpoZk2JMmafh/SfjMAVMwmeI6NtHkePF6YLlLaVhsoyF6vG1gBDeZYjwEdBqCBiIuq
 oj7d7RGr3JzRMufHMfwkKNhu6nV8ff0XiZ1AWDCOcFKMisb0ZruFtRMBHEMZKV2wS4Ff
 jI/u9VOovFRv+ApbR19sEUuG20ZleGOLRBQ9RAmteiW3A1yMxm9Qx+osFPHM3N5UAJAI
 8pYb6WqYwOIkSTTkb3Bge5IIAlkvq1VIGdVGtvrdGzdJDigwZBlA90d1DmR3XibqnIHt
 ACsA==
X-Gm-Message-State: APjAAAUz2vyaC0lbIzlzvbbas+9/lqX7xwkXoF3uuuXUMK+he4QSN2/2
 JDz/lzOF4Etg+OWWYWOlZsB7UG68jzg=
X-Google-Smtp-Source: APXvYqzJ/k86Dj2rOYE5xE0fnFF80kTmPjewbWpFr832JuomRoIQe5QMfXh7OeNkZfxANeVpX5Rk5g==
X-Received: by 2002:a5d:6243:: with SMTP id m3mr1586489wrv.41.1559547961656;
 Mon, 03 Jun 2019 00:46:01 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.46.00
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:46:01 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:42 +0300
Message-Id: <20190603074545.13707-9-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 09/12] plat/drivers: Request
 interface for virtio block
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSByZXF1ZXN0IGludGVyZmFjZS4KVGhlIGZvbGxvd2lu
ZyBzdGVwcyBhcmU6CiAgICAtPiBmaW5kIGEgZnJlZSBzcG90IGluIHRoZSBxdWV1ZQogICAgLT4g
c2V0IHRoZSByaW5nIHJlcXVlc3QKICAgIC0+IG5vdGlmeSBCYWNrZW5kClN1cHBvcnRlZCBvcGVy
YXRpb25zIGFyZTogcmVhZCBhbmQgd3JpdGUuCgpTaWduZWQtb2ZmLWJ5OiBSb3hhbmEgTmljb2xl
c2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Ci0tLQogcGxhdC9kcml2ZXJzL2lu
Y2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaCB8ICAgNiArCiBwbGF0L2RyaXZlcnMvdmlydGlvL3Zp
cnRpb19ibGsuYyAgICAgICAgIHwgMTgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IDIgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9wbGF0L2Ry
aXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUv
dmlydGlvL3ZpcnRpb19ibGsuaAppbmRleCBjODhkYzQ1Yy4uZmRlMTk1M2MgMTAwNjQ0Ci0tLSBh
L3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYmxrLmgKKysrIGIvcGxhdC9kcml2
ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaApAQCAtNDksNiArNDksMTIgQEAgc3RydWN0
IHZpcnRpb19ibGtfY29uZmlnIHsKIAlfX3UxNiBudW1fcXVldWVzOwogfTsKIAorLyogSGVhZGVy
IGNvbWVzIGZpcnN0IGluIHRoZSBzY2F0dGVyLWdhdGhlciBsaXN0ICovCitzdHJ1Y3QgdmlydGlv
X2Jsa19oZHIgeworCS8qIE9wZXJhdGlvbiB0eXBlICovCisJdWludDMyX3QgdHlwZTsKKwkvKiBT
dGFydC1zZWN0b3IgKi8KKwl1aW50NjRfdCBzZWN0b3I7CiB9OwogCiAjZW5kaWYgLyogX19QTEFU
X0RSVl9WSVJUSU9fQkxLX0ggKi8KZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmly
dGlvX2Jsay5jIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKaW5kZXggZTE4ZWY4
MDUuLmJjODQ1ZDk3IDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsu
YworKysgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYwpAQCAtMTAwLDYgKzEwMCwx
ODggQEAgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSB7CiAJc3RydWN0IHVrX3NnbGlzdF9zZWcgKnNn
c2VnczsKIH07CiAKK3N0YXRpYyBpbnQgdmlydGlvX2Jsa2Rldl9yZXF1ZXN0X3NldF9zZ2xpc3Qo
c3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqcXVldWUsCisJCXN0cnVjdCB1a19ibGtkZXZfcmVxdWVz
dCAqcmVxLAorCQlfX3NlY3RvciBzZWN0b3Jfc2l6ZSkKK3sKKwlzdHJ1Y3QgdmlydGlvX2Jsa19k
ZXZpY2UgKnZiZGV2OworCXNpemVfdCBkYXRhX3NpemUgPSAwOworCXNpemVfdCBzZWdtZW50X3Np
emU7CisJc2l6ZV90IHNlZ21lbnRfbWF4X3NpemU7CisJc2l6ZV90IGlkeDsKKwl1aW50cHRyX3Qg
c3RhcnRfZGF0YTsKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKHF1ZXVlKTsKKwlVS19BU1NF
UlQocmVxKTsKKworCXZiZGV2ID0gcXVldWUtPnZiZDsKKwlzdGFydF9kYXRhID0gKHVpbnRwdHJf
dClyZXEtPmFpb19idWY7CisJZGF0YV9zaXplID0gcmVxLT5uYl9zZWN0b3JzICogc2VjdG9yX3Np
emU7CisJc2VnbWVudF9tYXhfc2l6ZSA9IHZiZGV2LT5tYXhfc2l6ZV9zZWdtZW50OworCisJLyog
UHJlcGFyZSB0aGUgc2dsaXN0ICovCisJdWtfc2dsaXN0X3Jlc2V0KCZxdWV1ZS0+c2cpOworCXJj
ID0gdWtfc2dsaXN0X2FwcGVuZCgmcXVldWUtPnNnLCByZXEsIHNpemVvZihzdHJ1Y3QgdmlydGlv
X2Jsa19oZHIpKTsKKwlpZiAodW5saWtlbHkocmMgIT0gMCkpIHsKKwkJdWtfcHJfZXJyKCJGYWls
ZWQgdG8gYXBwZW5kIHRvIHNnIGxpc3QgJWRcbiIsIHJjKTsKKwkJZ290byBvdXQ7CisJfQorCisJ
LyogQXBwZW5kIHRvIHNnbGlzdCBjaHVua3Mgb2YgYHNlZ21lbnRfbWF4X3NpemVgIHNpemUKKwkg
KiBPbmx5IGZvciByZWFkIC8gd3JpdGUgb3BlcmF0aW9ucworCSAqKi8KKwlmb3IgKGlkeCA9IDA7
IGlkeCA8IGRhdGFfc2l6ZTsgaWR4ICs9IHNlZ21lbnRfbWF4X3NpemUpIHsKKwkJc2VnbWVudF9z
aXplID0gZGF0YV9zaXplIC0gaWR4OworCQlzZWdtZW50X3NpemUgPSAoc2VnbWVudF9zaXplID4g
c2VnbWVudF9tYXhfc2l6ZSkgPworCQkJCXNlZ21lbnRfbWF4X3NpemUgOiBzZWdtZW50X3NpemU7
CisJCXJjID0gdWtfc2dsaXN0X2FwcGVuZCgmcXVldWUtPnNnLAorCQkJCSh2b2lkICopKHN0YXJ0
X2RhdGEgKyBpZHgpLAorCQkJCXNlZ21lbnRfc2l6ZSk7CisJCWlmICh1bmxpa2VseShyYyAhPSAw
KSkgeworCQkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gYXBwZW5kIHRvIHNnIGxpc3QgJWRcbiIsCisJ
CQkJCXJjKTsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJcmMgPSB1a19zZ2xpc3RfYXBwZW5k
KCZxdWV1ZS0+c2csICZyZXEtPnJlc3VsdF9zdGF0dXMsCisJCQlzaXplb2YocmVxLT5yZXN1bHRf
c3RhdHVzKSk7CisJaWYgKHVubGlrZWx5KHJjICE9IDApKSB7CisJCXVrX3ByX2VycigiRmFpbGVk
IHRvIGFwcGVuZCB0byBzZyBsaXN0ICVkXG4iLCByYyk7CisJCWdvdG8gb3V0OworCX0KKworb3V0
OgorCXJldHVybiByYzsKK30KKworc3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X3JlcXVlc3Rfd3Jp
dGUoc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqcXVldWUsCisJCXN0cnVjdCB1a19ibGtkZXZfcmVx
dWVzdCAqcmVxLCBfX3UxNiAqcmVhZF9zZWdzLAorCQlfX3UxNiAqd3JpdGVfc2VncykKK3sKKwlz
dHJ1Y3QgdmlydGlvX2Jsa19kZXZpY2UgKnZiZGV2OworCXN0cnVjdCB1a19ibGtkZXZfY2FwICpj
YXA7CisJaW50IHJjID0gMDsKKworCVVLX0FTU0VSVChxdWV1ZSk7CisJVUtfQVNTRVJUKHJlcSk7
CisKKwl2YmRldiA9IHF1ZXVlLT52YmQ7CisJY2FwID0gJnZiZGV2LT5ibGtkZXYuY2FwYWJpbGl0
aWVzOworCWlmIChyZXEtPm9wZXJhdGlvbiA9PSBVS19CTEtERVZfV1JJVEUgJiYKKwkJCWNhcC0+
bW9kZSA9PSBPX1JET05MWSkKKwkJcmV0dXJuIC1FUEVSTTsKKworCWlmIChyZXEtPmFpb19idWYg
PT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocmVxLT5uYl9zZWN0b3JzID09IDAp
CisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHJlcS0+c3RhcnRfc2VjdG9yICsgcmVxLT5uYl9z
ZWN0b3JzID4gY2FwLT5zZWN0b3JzKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyZXEtPm5i
X3NlY3RvcnMgPiBjYXAtPm1heF9zZWN0b3JzX3Blcl9yZXEpCisJCXJldHVybiAtRUlOVkFMOwor
CisJcmMgPSB2aXJ0aW9fYmxrZGV2X3JlcXVlc3Rfc2V0X3NnbGlzdChxdWV1ZSwgcmVxLCBjYXAt
PnNzaXplLCB0cnVlKTsKKwlpZiAocmMpIHsKKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gc2V0IHNn
bGlzdCAlZFxuIiwgcmMpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAocmVxLT5vcGVyYXRpb24g
PT0gVUtfQkxLREVWX1dSSVRFKSB7CisJCSpyZWFkX3NlZ3MgPSBxdWV1ZS0+c2cuc2dfbnNlZyAt
IDE7CisJCSp3cml0ZV9zZWdzID0gMTsKKwl9IGVsc2UgaWYgKHJlcS0+b3BlcmF0aW9uID09IFVL
X0JMS0RFVl9SRUFEKSB7CisJCSpyZWFkX3NlZ3MgPSAxOworCQkqd3JpdGVfc2VncyA9IHF1ZXVl
LT5zZy5zZ19uc2VnIC0gMTsKKwl9CisKK291dDoKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBp
bnQgdmlydGlvX2Jsa2Rldl9xdWV1ZV9lbnF1ZXVlKHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKnF1
ZXVlLAorCQlzdHJ1Y3QgdWtfYmxrZGV2X3JlcXVlc3QgKnJlcSkKK3sKKwlfX3UxNiB3cml0ZV9z
ZWdzOworCV9fdTE2IHJlYWRfc2VnczsKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKHF1ZXVl
KTsKKwlVS19BU1NFUlQocmVxKTsKKworCWlmICh2aXJ0cXVldWVfaXNfZnVsbChxdWV1ZS0+dnEp
KSB7CisJCXVrX3ByX2RlYnVnKCJUaGUgdmlydHF1ZXVlIGlzIGZ1bGxcbiIpOworCQlyZXR1cm4g
LUVOT1NQQzsKKwl9CisKKwlpZiAocmVxLT5vcGVyYXRpb24gPT0gVUtfQkxLREVWX1dSSVRFIHx8
CisJCQlyZXEtPm9wZXJhdGlvbiA9PSBVS19CTEtERVZfUkVBRCkKKwkJcmMgPSB2aXJ0aW9fYmxr
ZGV2X3JlcXVlc3Rfd3JpdGUocXVldWUsIHJlcSwgJnJlYWRfc2VncywKKwkJCQkmd3JpdGVfc2Vn
cyk7CisJZWxzZQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyYykKKwkJZ290byBvdXQ7CisK
KwlyYyA9IHZpcnRxdWV1ZV9idWZmZXJfZW5xdWV1ZShxdWV1ZS0+dnEsIHJlcSwgJnF1ZXVlLT5z
ZywKKwkJCQkgICAgICByZWFkX3NlZ3MsIHdyaXRlX3NlZ3MpOworCitvdXQ6CisJcmV0dXJuIHJj
OworfQorCitzdGF0aWMgaW50IHZpcnRpb19ibGtkZXZfc3VibWl0X3JlcXVlc3Qoc3RydWN0IHVr
X2Jsa2RldiAqZGV2LAorCQl1aW50MTZfdCBxdWV1ZV9pZCwKKwkJc3RydWN0IHVrX2Jsa2Rldl9y
ZXF1ZXN0ICpyZXEpCit7CisJc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldjsKKwlzdHJ1
Y3QgdWtfYmxrZGV2X3F1ZXVlICpxdWV1ZTsKKwlpbnQgcmMgPSAwOworCWludCBzdGF0dXMgPSAw
eDA7CisKKwlVS19BU1NFUlQocmVxKTsKKwlVS19BU1NFUlQoZGV2KTsKKworCXZiZGV2ID0gdG9f
dmlydGlvYmxrZGV2KGRldik7CisJaWYgKHVubGlrZWx5KHF1ZXVlX2lkID49IHZiZGV2LT5uYl9x
dWV1ZXMpKSB7CisJCXVrX3ByX2VycigiSW52YWxpZCBxdWV1ZV9pZCAlIl9fUFJJdTE2IlxuIiwg
cXVldWVfaWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlxdWV1ZSA9ICZ2YmRldi0+cXNb
cXVldWVfaWRdOworCXJjID0gdmlydGlvX2Jsa2Rldl9xdWV1ZV9lbnF1ZXVlKHF1ZXVlLCByZXEp
OworCWlmIChsaWtlbHkocmMgPj0gMCkpIHsKKwkJdWtfcHJfZGVidWcoIlN1Y2Nlc3MgYW5kIG1v
cmUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlXG4iKTsKKwkJc3RhdHVzIHw9IFVLX0JMS0RFVl9TVEFU
VVNfU1VDQ0VTUzsKKwkJLyoqCisJCSAqIE5vdGlmeSB0aGUgaG9zdCB0aGUgbmV3IGJ1ZmZlci4K
KwkJICovCisJCXZpcnRxdWV1ZV9ob3N0X25vdGlmeShxdWV1ZS0+dnEpOworCQkvKioKKwkJICog
V2hlbiB0aGVyZSBpcyBmdXJ0aGVyIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgcmluZworCQkgKiBy
ZXR1cm4gVUtfQkxLREVWX1NUQVRVU19NT1JFLgorCQkgKi8KKwkJc3RhdHVzIHw9IGxpa2VseShy
YyA+IDApID8gVUtfQkxLREVWX1NUQVRVU19NT1JFIDogMHgwOworCX0gZWxzZSBpZiAocmMgPT0g
LUVOT1NQQykgeworCQl1a19wcl9kZWJ1ZygiTm8gbW9yZSBkZXNjcmlwdG9ycyBhdmFpbGFibGVc
biIpOworCQlnb3RvIGVycjsKKwl9IGVsc2UgeworCQl1a19wcl9lcnIoIkZhaWxlZCB0byBlbnF1
ZXVlIGRlc2NyaXB0b3JzIGludG8gdGhlIHJpbmc6ICVkXG4iLAorCQkJICByYyk7CisJCWdvdG8g
ZXJyOworCX0KKworCXJldHVybiBzdGF0dXM7CisKK2VycjoKKwlyZXR1cm4gcmM7Cit9CisKIAog
c3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X3JlY3ZfZG9uZShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwg
dm9pZCAqcHJpdikKIHsKQEAgLTU4OCw2ICs3NzAsNyBAQCBzdGF0aWMgaW50IHZpcnRpb19ibGtf
YWRkX2RldihzdHJ1Y3QgdmlydGlvX2RldiAqdmRldikKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAl2
YmRldi0+dmRldiA9IHZkZXY7CisJdmJkZXYtPmJsa2Rldi5zdWJtaXRfb25lID0gdmlydGlvX2Js
a2Rldl9zdWJtaXRfcmVxdWVzdDsKIAl2YmRldi0+YmxrZGV2LmRldl9vcHMgPSAmdmlydGlvX2Js
a2Rldl9vcHM7CiAKIAlyYyA9IHVrX2Jsa2Rldl9kcnZfcmVnaXN0ZXIoJnZiZGV2LT5ibGtkZXYs
IGEsIGRydl9uYW1lKTsKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfS-0008Ts-Kr; Mon, 03 Jun 2019 07:46:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfR-0008St-AD
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:05 +0000
X-Inumbo-ID: a3513251-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a3513251-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:46:04 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n4so7835477wrs.3
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:46: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=bkTzW7VBm92iQeK69fPXlQIH3dNRYT1K8GvkjAWc6G0=;
 b=j7ns88q4OAZsta0GgcMwZ7cgsXvsrErM4Aqfzoid3chdRU3sJkI9ynule51N8IEGIB
 eYjHVF7YXkhfWSB79VVfqcZiqfF/6Yks5j+KUI/MZhhGckb8lS1kRYIDfN4Aj/oYSmlX
 Logv/axZ/ns3/xTCvbkAcyuCO+qY35gdsEjRj6nhKqxPyp+mje5Rk8RhjK0GuAhfrGB0
 1+Jd4LtNf+C7WIXH6IWTc/HglJf7j0B22zeddK7NS/m1SF9Nwpkuv8RrzmWBskOYRGGO
 9bLQgIiDYQZKjhZehB48p7Wr9JOexIZqjubJDeOF8RoR8U4AQ7HwRg75aBtVM2LP8T1Z
 tZqQ==
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=bkTzW7VBm92iQeK69fPXlQIH3dNRYT1K8GvkjAWc6G0=;
 b=bsGATc/6iswOAInw9xvOCpNguKuY0RwcLmyepI5wwRcbS3RbYEYtvHHkZr3KyZtabY
 UkW0Mt34aQ0EqMPk7wX6xDS9PFzhu0AXApnJuCzaE5ZjlMxTSozDAxdTTLarYu68Uxat
 vm8az9Nv0iSearzlCpus+Vacd7wFAkzpWU4Of6ncvttsHvXC7Lf9ipivnryAiSdWq7vH
 DPB9lyTxsTVN856YBfUcMqL/qDKQqIknoctYQ1NTn837rPWEr6+1wuZu4YKY4badXt61
 Z9525NJPIoAjXutwAzqBH2GNbbzEgvlqgK3DdY5QbENwVQN6Qd94R7M55q1M9jvgbivA
 5pmw==
X-Gm-Message-State: APjAAAVj/2f/auBE6mCfZeplfCpBhcpBNUAlB+nWvi4uWFIM54EhEGUl
 t82ClwFbmWoFHEX+asHr5XUQxs/xb/Q=
X-Google-Smtp-Source: APXvYqxOygyblnTmzg7YGs28RGOVE3k89Q5lZW2yQZIb6a5M2jOb264t48KKzgvyTN2chnOpQh16Tw==
X-Received: by 2002:adf:aa09:: with SMTP id p9mr15145393wrd.59.1559547962752; 
 Mon, 03 Jun 2019 00:46:02 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.46.01
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:46:02 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:43 +0300
Message-Id: <20190603074545.13707-10-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 10/12] plat/drivers: Flush requests
 for virtio block
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBmbHVzaCByZXF1ZXN0cy4KVGhpcyBvcGVyYXRpb24g
Z2FyYW50ZWVzIHRoYXQgYWxsIHByZXZpb3VzIHdyaXRlIHJlcXVlc3RzCmFyZSBmaW5pc2hlZC4K
ClNpZ25lZC1vZmYtYnk6IFJveGFuYSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2QGdt
YWlsLmNvbT4KLS0tCiBwbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIHwg
IDggKysrKwogcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMgICAgICAgICB8IDcyICsr
KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDY2IGluc2Vy
dGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9pbmNs
dWRlL3ZpcnRpby92aXJ0aW9fYmxrLmggYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmly
dGlvX2Jsay5oCmluZGV4IGZkZTE5NTNjLi5lMmQyODkyOCAxMDA2NDQKLS0tIGEvcGxhdC9kcml2
ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaAorKysgYi9wbGF0L2RyaXZlcnMvaW5jbHVk
ZS92aXJ0aW8vdmlydGlvX2Jsay5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2RlZmluZSBWSVJUSU9f
QkxLX0ZfUk8JCTUKIC8qIEJsb2NrIHNpemUgb2YgZGlzayBpcyBpbiBibGtfc2l6ZS4gKi8KICNk
ZWZpbmUgVklSVElPX0JMS19GX0JMS19TSVpFCTYKKy8qIENhY2hlIGZsdXNoIGNvbW1hbmQgc3Vw
cG9ydC4gKi8KKyNkZWZpbmUgVklSVElPX0JMS19GX0ZMVVNICTkKKy8qIERldmljZSBjYW4gdG9n
Z2xlIGl0cyBjYWNoZSBiZXR3ZWVuIHdyaXRlYmFjayBhbmQgd3JpdGV0aHJvdWdoIG1vZGVzLiAq
LworI2RlZmluZSBWSVJUSU9fQkxLX0ZfQ09ORklHX1dDRSAxMQogLyogRGV2aWNlIHN1cHBvcnRz
IG11bHRpLXF1ZXVlcyAqLwogI2RlZmluZSBWSVJUSU9fQkxLX0ZfTVEJCTEyCiAKQEAgLTQ1LDYg
KzQ5LDEwIEBAIHN0cnVjdCB2aXJ0aW9fYmxrX2NvbmZpZyB7CiAJX191MzIgc2VnX21heDsKIAkv
KiBCbG9jayBzaXplICovCiAJX191MzIgYmxrX3NpemU7CisJLyogSXQgaXMgc2V0IGlmIGJhY2tl
bmQgaGFzIHdyaXRlYmFjayBjYWNoZSwKKwkgKiBvdGhlcndpc2UgaXQgaGFzIHdyaXRldGhyb3Vn
aCBjYWNoZS4KKwkgKiovCisJX191OCB3cml0ZWJhY2s7CiAJLyogTnVtYmVyIG9mIHZxcywgb25s
eSBhdmFpbGFibGUgd2hlbiBWSVJUSU9fQkxLX0ZfTVEgaXMgc2V0ICovCiAJX191MTYgbnVtX3F1
ZXVlczsKIH07CmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYyBi
L3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jCmluZGV4IGJjODQ1ZDk3Li41Yjg5NzJj
ZiAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKKysrIGIvcGxh
dC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
IDx1ay9wcmludC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDxzdGRib29sLmg+CiAjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb19idXMuaD4KICNpbmNs
dWRlIDx2aXJ0aW8vdmlydGlvX2lkcy5oPgogI2luY2x1ZGUgPHVrL2Jsa2Rldi5oPgpAQCAtNDks
MTEgKzUwLDEzIEBACiAgKglNdWx0aS1xdWV1ZSwKICAqCU1heGltdW0gc2l6ZSBvZiBhIHNlZ21l
bnQgZm9yIHJlcXVlc3RzLAogICoJTWF4aW11bSBudW1iZXIgb2Ygc2VnbWVudHMgcGVyIHJlcXVl
c3QsCisgKglGbHVzaAogICoqLwogI2RlZmluZSBWSVJUSU9fQkxLX0RSVl9GRUFUVVJFUyhmZWF0
dXJlcykgXAogCShWSVJUSU9fRkVBVFVSRVNfVVBEQVRFKGZlYXR1cmVzLCBWSVJUSU9fQkxLX0Zf
Uk8gfCBcCiAJVklSVElPX0JMS19GX0JMS19TSVpFIHwgVklSVElPX0JMS19GX01RIHwgXAotCVZJ
UlRJT19CTEtfRl9TRUdfTUFYIHwgVklSVElPX0JMS19GX1NJWkVfTUFYKSkKKwlWSVJUSU9fQkxL
X0ZfU0VHX01BWCB8IFZJUlRJT19CTEtfRl9TSVpFX01BWCB8IFwKKwlWSVJUSU9fQkxLX0ZfQ09O
RklHX1dDRSB8IFZJUlRJT19CTEtfRl9GTFVTSCkpCiAKIHN0YXRpYyBzdHJ1Y3QgdWtfYWxsb2Mg
KmE7CiBzdGF0aWMgY29uc3QgY2hhciAqZHJ2X25hbWUgPSBEUklWRVJfTkFNRTsKQEAgLTc3LDYg
KzgwLDggQEAgc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlIHsKIAlfX3UzMiBtYXhfc2VnbWVudHM7
CiAJLyogTWF4aW11bSBzaXplIG9mIGEgc2VnbWVudCAqLwogCV9fdTMyIG1heF9zaXplX3NlZ21l
bnQ7CisJLyogSWYgaXQgaXMgc2V0IHRoZW4gZmx1c2ggcmVxdWVzdCBpcyBwZXJtaXR0ZWQgKi8K
KwlfX3U4IHdyaXRlYmFjazsKIH07CiAKIHN0cnVjdCB1a19ibGtkZXZfcXVldWUgewpAQCAtMTAy
LDcgKzEwNyw4IEBAIHN0cnVjdCB1a19ibGtkZXZfcXVldWUgewogCiBzdGF0aWMgaW50IHZpcnRp
b19ibGtkZXZfcmVxdWVzdF9zZXRfc2dsaXN0KHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKnF1ZXVl
LAogCQlzdHJ1Y3QgdWtfYmxrZGV2X3JlcXVlc3QgKnJlcSwKLQkJX19zZWN0b3Igc2VjdG9yX3Np
emUpCisJCV9fc2VjdG9yIHNlY3Rvcl9zaXplLAorCQlib29sIGhhdmVfZGF0YSkKIHsKIAlzdHJ1
Y3QgdmlydGlvX2Jsa19kZXZpY2UgKnZiZGV2OwogCXNpemVfdCBkYXRhX3NpemUgPSAwOwpAQCAt
MTMxLDE5ICsxMzcsMjAgQEAgc3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X3JlcXVlc3Rfc2V0X3Nn
bGlzdChzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICpxdWV1ZSwKIAkvKiBBcHBlbmQgdG8gc2dsaXN0
IGNodW5rcyBvZiBgc2VnbWVudF9tYXhfc2l6ZWAgc2l6ZQogCSAqIE9ubHkgZm9yIHJlYWQgLyB3
cml0ZSBvcGVyYXRpb25zCiAJICoqLwotCWZvciAoaWR4ID0gMDsgaWR4IDwgZGF0YV9zaXplOyBp
ZHggKz0gc2VnbWVudF9tYXhfc2l6ZSkgewotCQlzZWdtZW50X3NpemUgPSBkYXRhX3NpemUgLSBp
ZHg7Ci0JCXNlZ21lbnRfc2l6ZSA9IChzZWdtZW50X3NpemUgPiBzZWdtZW50X21heF9zaXplKSA/
Ci0JCQkJc2VnbWVudF9tYXhfc2l6ZSA6IHNlZ21lbnRfc2l6ZTsKLQkJcmMgPSB1a19zZ2xpc3Rf
YXBwZW5kKCZxdWV1ZS0+c2csCi0JCQkJKHZvaWQgKikoc3RhcnRfZGF0YSArIGlkeCksCi0JCQkJ
c2VnbWVudF9zaXplKTsKLQkJaWYgKHVubGlrZWx5KHJjICE9IDApKSB7Ci0JCQl1a19wcl9lcnIo
IkZhaWxlZCB0byBhcHBlbmQgdG8gc2cgbGlzdCAlZFxuIiwKLQkJCQkJcmMpOwotCQkJZ290byBv
dXQ7CisJaWYgKGhhdmVfZGF0YSkKKwkJZm9yIChpZHggPSAwOyBpZHggPCBkYXRhX3NpemU7IGlk
eCArPSBzZWdtZW50X21heF9zaXplKSB7CisJCQlzZWdtZW50X3NpemUgPSBkYXRhX3NpemUgLSBp
ZHg7CisJCQlzZWdtZW50X3NpemUgPSAoc2VnbWVudF9zaXplID4gc2VnbWVudF9tYXhfc2l6ZSkg
PworCQkJCQlzZWdtZW50X21heF9zaXplIDogc2VnbWVudF9zaXplOworCQkJcmMgPSB1a19zZ2xp
c3RfYXBwZW5kKCZxdWV1ZS0+c2csCisJCQkJCSh2b2lkICopKHN0YXJ0X2RhdGEgKyBpZHgpLAor
CQkJCQlzZWdtZW50X3NpemUpOworCQkJaWYgKHVubGlrZWx5KHJjICE9IDApKSB7CisJCQkJdWtf
cHJfZXJyKCJGYWlsZWQgdG8gYXBwZW5kIHRvIHNnIGxpc3QgJWRcbiIsCisJCQkJCQlyYyk7CisJ
CQkJZ290byBvdXQ7CisJCQl9CiAJCX0KLQl9CiAKIAlyYyA9IHVrX3NnbGlzdF9hcHBlbmQoJnF1
ZXVlLT5zZywgJnJlcS0+cmVzdWx0X3N0YXR1cywKIAkJCXNpemVvZihyZXEtPnJlc3VsdF9zdGF0
dXMpKTsKQEAgLTIwMyw2ICsyMTAsMzggQEAgb3V0OgogCXJldHVybiByYzsKIH0KIAorc3RhdGlj
IGludCB2aXJ0aW9fYmxrZGV2X3JlcXVlc3RfZmx1c2goc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAq
cXVldWUsCisJCXN0cnVjdCB1a19ibGtkZXZfcmVxdWVzdCAqcmVxLCBfX3UxNiAqcmVhZF9zZWdz
LAorCQlfX3UxNiAqd3JpdGVfc2VncykKK3sKKwlzdHJ1Y3QgdmlydGlvX2Jsa19kZXZpY2UgKnZi
ZGV2OworCWludCByYyA9IDA7CisKKwlVS19BU1NFUlQocXVldWUpOworCVVLX0FTU0VSVChyZXEp
OworCisJdmJkZXYgPSBxdWV1ZS0+dmJkOworCWlmICghdmJkZXYtPndyaXRlYmFjaykKKwkJcmV0
dXJuIC1FTk9UU1VQOworCisJaWYgKHJlcS0+c3RhcnRfc2VjdG9yKSB7CisJCXVrX3ByX3dhcm4o
IlN0YXJ0IHNlY3RvciBzaG91bGQgYmUgMCBhdCBmbHVzaCByZXF1ZXN0XG4iKTsKKwkJcmVxLT5z
dGFydF9zZWN0b3IgPSAwOworCX0KKworCXJjID0gdmlydGlvX2Jsa2Rldl9yZXF1ZXN0X3NldF9z
Z2xpc3QocXVldWUsIHJlcSwgMCwgZmFsc2UpOworCWlmIChyYykgeworCQl1a19wcl9lcnIoIkZh
aWxlZCB0byBzZXQgc2dsaXN0ICVkXG4iLCByYyk7CisJCWdvdG8gb3V0OworCX0KKworCSpyZWFk
X3NlZ3MgPSAxOworCSp3cml0ZV9zZWdzID0gMTsKKworb3V0OgorCXJldHVybiByYzsKK30KKwog
c3RhdGljIGludCB2aXJ0aW9fYmxrZGV2X3F1ZXVlX2VucXVldWUoc3RydWN0IHVrX2Jsa2Rldl9x
dWV1ZSAqcXVldWUsCiAJCXN0cnVjdCB1a19ibGtkZXZfcmVxdWVzdCAqcmVxKQogewpAQCAtMjIy
LDYgKzI2MSw5IEBAIHN0YXRpYyBpbnQgdmlydGlvX2Jsa2Rldl9xdWV1ZV9lbnF1ZXVlKHN0cnVj
dCB1a19ibGtkZXZfcXVldWUgKnF1ZXVlLAogCQkJcmVxLT5vcGVyYXRpb24gPT0gVUtfQkxLREVW
X1JFQUQpCiAJCXJjID0gdmlydGlvX2Jsa2Rldl9yZXF1ZXN0X3dyaXRlKHF1ZXVlLCByZXEsICZy
ZWFkX3NlZ3MsCiAJCQkJJndyaXRlX3NlZ3MpOworCWVsc2UgaWYgKHJlcS0+b3BlcmF0aW9uID09
IFVLX0JMS0RFVl9GRkxVU0gpCisJCXJjID0gdmlydGlvX2Jsa2Rldl9yZXF1ZXN0X2ZsdXNoKHF1
ZXVlLCByZXEsICZyZWFkX3NlZ3MsCisJCQkJJndyaXRlX3NlZ3MpOwogCWVsc2UKIAkJcmV0dXJu
IC1FSU5WQUw7CiAKQEAgLTcyNiw2ICs3NjgsOCBAQCBzdGF0aWMgaW50IHZpcnRpb19ibGtkZXZf
ZmVhdHVyZV9uZWdvdGlhdGUoc3RydWN0IHZpcnRpb19ibGtfZGV2aWNlICp2YmRldikKIAl2YmRl
di0+bWF4X3ZxdWV1ZV9wYWlycyA9IG51bV9xdWV1ZXM7CiAJdmJkZXYtPm1heF9zZWdtZW50cyA9
IG1heF9zZWdtZW50czsKIAl2YmRldi0+bWF4X3NpemVfc2VnbWVudCA9IG1heF9zaXplX3NlZ21l
bnQ7CisJdmJkZXYtPndyaXRlYmFjayA9IHZpcnRpb19oYXNfZmVhdHVyZXMoaG9zdF9mZWF0dXJl
cywKKwkJCQlWSVJUSU9fQkxLX0ZfRkxVU0gpOwogCiAJLyoqCiAJICogTWFzayBvdXQgZmVhdHVy
ZXMgc3VwcG9ydGVkIGJ5IGJvdGggZHJpdmVyIGFuZCBkZXZpY2UuCi0tIAoyLjExLjAKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfT-0008Ui-Mi; Mon, 03 Jun 2019 07:46:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfS-0008UA-SD
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:06 +0000
X-Inumbo-ID: a3cae390-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a3cae390-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:46:05 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id n4so7835527wrs.3
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:46: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=kWkSQraX48ypZo7MxV2wU0349MIX5/LTWACQjihuGgI=;
 b=iOfrXQIv4/7GzWudXc4Nd+S60vCQvPR0Ub1R0FxTgnDAnjEM21n1GQAxoVGsVQLynp
 7rdZAkbV9re2vEtJjMlWhtdOy0p7EUNGQM314FH0F7LY9JR4uV+EWMwWgh2SSCfzJdOY
 z8jEaVnX6MwA1A5Hw8YLPANvi8ThWNo26valpoiXVHYg659SvyBZYd0EMk22BdUiM0vN
 0oJRYr1tqSXR5hZbQgSrH0ksg9UM1ZgEZPfXKmnypjuH0eMF7x6jKAmOOXrV7gDHr5b7
 WNd9M9YaNqaBiAfut0cUTXHNJgO3bJkPO9/WR+J5fewGt0akHZei+fn9M6bKgPb3Cm7N
 U/FA==
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=kWkSQraX48ypZo7MxV2wU0349MIX5/LTWACQjihuGgI=;
 b=bG05soZJw6oZ/3lvsvXk/XrHwyVHuz9RXjGtev8tzWYEZSstBSnIOnnX/KRMPXqrog
 Vlxpj0vp50b02u1Xqw4hx9c6OfHFuyRQb/Hg+cISRjVgHTYXVtAzhYTZaz+91nZfWgoi
 qU293b/zrYIQAN5wOsV1ioLrHFqmwA8bAy8w5U244yrLJS/472niPaIXmD/gfrj0EB6n
 KPH2WRDOb4wztADeOVGG/6HkdTvnejzym0SyUg8l4SK4dSG1w6Dd5w8hkdLwDrif2eQG
 p1c8UI1IW/ENBy66uYQJLegS0kEI2km3sss0O+i89VTy7nq5CeqFPAbvxNsk0xLU07yi
 hQ8g==
X-Gm-Message-State: APjAAAXiqg7mIAELhLyLS0BdwIbGgQJzPTgp5+uOG+W3FSkS+LvJaZoh
 IiK9PT5QsAeRRGfo0VCwIwcm5fyDPqM=
X-Google-Smtp-Source: APXvYqzMu/yLKyMA68BP8WopUzImhq73aU1opwL6++1QY5tI1M5NR5sSeez6wBi51Dl79lATi0nqXA==
X-Received: by 2002:adf:eb0f:: with SMTP id s15mr4128312wrn.147.1559547963790; 
 Mon, 03 Jun 2019 00:46:03 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.46.02
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:46:03 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:44 +0300
Message-Id: <20190603074545.13707-11-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 11/12] plat/drivers: Handle
 responses from backend for virtio block
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBvZiBwcm9jZXNz
aW5nIHJlc3BvbnNlcwpmcm9tIHRoZSBxdWV1ZS4KClJlc3BvbnNlcyBhcmUgcG9wcGVkIG91dCBm
cm9tIHF1ZXVlIHVudGlsIHRoZXJlIGlzIG5vdGhpbmcgdG8gcHJvY2Vzcy4KClNpZ25lZC1vZmYt
Ynk6IFJveGFuYSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KLS0t
CiBwbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIHwgIDQgKysKIHBsYXQv
ZHJpdmVycy92aXJ0aW8vdmlydGlvX2Jsay5jICAgICAgICAgfCA4MiArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCgpkaWZm
IC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaCBiL3BsYXQv
ZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYmxrLmgKaW5kZXggZTJkMjg5MjguLjFiOGRm
ZmQzIDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5o
CisrKyBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYmxrLmgKQEAgLTM5LDYg
KzM5LDEwIEBACiAvKiBEZXZpY2Ugc3VwcG9ydHMgbXVsdGktcXVldWVzICovCiAjZGVmaW5lIFZJ
UlRJT19CTEtfRl9NUQkJMTIKIAorLyogUmVzcG9uc2Ugc3RhdHVzICovCisjZGVmaW5lIFZJUlRJ
T19CTEtfU19PSwkJMAorI2RlZmluZSBWSVJUSU9fQkxLX1NfSU9FUlIJMQorI2RlZmluZSBWSVJU
SU9fQkxLX1NfVU5TVVBQCTIKIAogc3RydWN0IHZpcnRpb19ibGtfY29uZmlnIHsKIAkvKiBEaW1l
bnNpb24gaW4gc2VjdG9ycyBudW1iZXIgKi8KZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy92aXJ0
aW8vdmlydGlvX2Jsay5jIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmxrLmMKaW5kZXgg
NWI4OTcyY2YuLmExZDJiZDY4IDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRp
b19ibGsuYworKysgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb19ibGsuYwpAQCAtMzI0LDYg
KzMyNCw4NyBAQCBlcnI6CiAJcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50IHZpcnRpb19ibGtk
ZXZfcXVldWVfZGVxdWV1ZShzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICpxdWV1ZSwKKwkJc3RydWN0
IHVrX2Jsa2Rldl9yZXF1ZXN0ICoqcmVxKQoreworCWludCByZXQgPSAwOworCV9fdTMyIGxlbjsK
KwlzdHJ1Y3QgdWtfYmxrZGV2X3JlcXVlc3QgKnJlc3BvbnNlX3JlcSA9IE5VTEw7CisKKwlVS19B
U1NFUlQocmVxKTsKKwlyZXQgPSB2aXJ0cXVldWVfYnVmZmVyX2RlcXVldWUocXVldWUtPnZxLCAo
dm9pZCAqKikgJnJlc3BvbnNlX3JlcSwKKwkJCSZsZW4pOworCWlmIChyZXQgPCAwKSB7CisJCXVr
X3ByX2luZm8oIk5vIGRhdGEgYXZhaWxhYmxlIGluIHRoZSBxdWV1ZVxuIik7CisJCXJldCA9IDA7
CisJCWdvdG8gb3V0OworCX0KKworCS8qIFdlIG5lZWQgYXQgbGVhc3Qgb25lIGJ5dGUgZm9yIHRo
ZSByZXN1bHQgc3RhdHVzICovCisJaWYgKHVubGlrZWx5KGxlbiA8IDEpKSB7CisJCXVrX3ByX2Vy
cigiUmVjZWl2ZWQgaW52YWxpZCByZXNwb25zZSBzaXplOiAldVxuIiwgbGVuKTsKKwkJcmV0dXJu
IC1FSU5WQUw7CisJfQorCitvdXQ6CisJKnJlcSA9IHJlc3BvbnNlX3JlcTsKKwlyZXR1cm4gcmV0
OworfQorCitzdGF0aWMgaW50IHZpcnRpb19ibGtkZXZfY29tcGxldGVfcmVxcyhzdHJ1Y3QgdWtf
YmxrZGV2ICpkZXYsCisJCXVpbnQxNl90IHF1ZXVlX2lkKQoreworCXN0cnVjdCB2aXJ0aW9fYmxr
X2RldmljZSAqdmJkZXY7CisJc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqcXVldWU7CisJc3RydWN0
IHVrX2Jsa2Rldl9yZXF1ZXN0ICpyZXE7CisJaW50IHJjID0gMDsKKworCVVLX0FTU0VSVChkZXYp
OworCisJdmJkZXYgPSB0b192aXJ0aW9ibGtkZXYoZGV2KTsKKwlpZiAodW5saWtlbHkocXVldWVf
aWQgPj0gdmJkZXYtPm5iX3F1ZXVlcykpIHsKKwkJdWtfcHJfZXJyKCJJbnZhbGlkIHF1ZXVlX2lk
ICUiX19QUkl1MTYiXG4iLCBxdWV1ZV9pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXF1
ZXVlID0gJnZiZGV2LT5xc1txdWV1ZV9pZF07CisKKwkvKiBRdWV1ZSBpbnRlcnJ1cHRzIGhhdmUg
dG8gYmUgb2ZmIHdoZW4gY2FsbGluZyByZWNlaXZlICovCisJVUtfQVNTRVJUKCEocXVldWUtPmlu
dHJfZW5hYmxlZCAmIFZUQkxLX0lOVFJfRU4pKTsKKworbW9yZXRvZG86CisJZm9yICg7Oykgewor
CQlyYyA9IHZpcnRpb19ibGtkZXZfcXVldWVfZGVxdWV1ZShxdWV1ZSwgJnJlcSk7CisJCWlmICh1
bmxpa2VseShyYyA8IDApKSB7CisJCQl1a19wcl9lcnIoIkZhaWxlZCB0byBkZXF1ZXVlIHRoZSBy
ZXF1ZXN0OiAlZFxuIiwgcmMpOworCQkJZ290byBlcnJfZXhpdDsKKwkJfQorCisJCWlmICghcmVx
KQorCQkJYnJlYWs7CisKKwkJdWtfcmVmY291bnRfcmVsZWFzZSgmcmVxLT5zdGF0ZSk7CisJCWlm
IChyZXEtPmNiKSB7CisJCQlyYyA9IHJlcS0+Y2IocmVxLCByZXEtPmNvb2tpZV9jYWxsYmFjayk7
CisJCQlpZiAocmMpIHsKKwkJCQl1a19wcl9lcnIoIkNhbGxiYWNrIGZhaWxlZCAlZFxuIiwgcmMp
OworCQkJCWdvdG8gZXJyX2V4aXQ7CisJCQl9CisJCX0KKwl9CisKKwkvKiBFbmFibGUgaW50ZXJy
dXB0IG9ubHkgd2hlbiB1c2VyIGhhZCBwcmV2aW91c2x5IGVuYWJsZWQgaXQgKi8KKwlpZiAocXVl
dWUtPmludHJfZW5hYmxlZCAmIFZUQkxLX0lOVFJfVVNSX0VOX01BU0spIHsKKwkJcmMgPSB2aXJ0
cXVldWVfaW50cl9lbmFibGUocXVldWUtPnZxKTsKKwkJaWYgKHJjID09IDEpCisJCQlnb3RvIG1v
cmV0b2RvOworCX0KKworCXJldHVybiAwOworCitlcnJfZXhpdDoKKwlyZXR1cm4gcmM7Cit9CiAK
IHN0YXRpYyBpbnQgdmlydGlvX2Jsa2Rldl9yZWN2X2RvbmUoc3RydWN0IHZpcnRxdWV1ZSAqdnEs
IHZvaWQgKnByaXYpCiB7CkBAIC04MTQsNiArODk1LDcgQEAgc3RhdGljIGludCB2aXJ0aW9fYmxr
X2FkZF9kZXYoc3RydWN0IHZpcnRpb19kZXYgKnZkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJ
dmJkZXYtPnZkZXYgPSB2ZGV2OworCXZiZGV2LT5ibGtkZXYuZmluaXNoX3JlcXMgPSB2aXJ0aW9f
YmxrZGV2X2NvbXBsZXRlX3JlcXM7CiAJdmJkZXYtPmJsa2Rldi5zdWJtaXRfb25lID0gdmlydGlv
X2Jsa2Rldl9zdWJtaXRfcmVxdWVzdDsKIAl2YmRldi0+YmxrZGV2LmRldl9vcHMgPSAmdmlydGlv
X2Jsa2Rldl9vcHM7CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:46:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:46: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 1hXhfU-0008VN-OO; Mon, 03 Jun 2019 07:46:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9ztf=UC=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hXhfT-0008UQ-2w
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:46:07 +0000
X-Inumbo-ID: a4766c6b-85d3-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a4766c6b-85d3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:46:06 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id b18so10844519wrq.12
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:46:06 -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=2RC1Lmt6RlkzYcP6CA5oVwGz9mb8wYB+jwGi+RR+WJE=;
 b=p0lOmtsAI80sWjviAutIRfJ64VPZwj9VlEqsYFPIhVaFPS/dk31JCNWyehYwfBBUZ5
 IGSBG/PjUd9T+69PVhXKGHlwjFzPW/sdQ4tihTXOR9WbX+bfb8DI0KtvEG3rR5ZCSxA2
 52F/41t2NNv0brPAsBs2Peq56B+/zdscWqsCFOcq4/M87qSML9n84z7gCE3nEtJjgyHR
 Zq+ou5xF76Bl3TJCEaJHbIHdjeN/ZF2Wkie12FO6DS36/A4UH0/yvxZF+N41Jh3S8jEn
 FYncU55yYQoKj/ulRhMAZBTjzx5v3uwKr2NxM6OJCZNZwdXSB0SCXSOqodp/tiLOlVGD
 xsmw==
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=2RC1Lmt6RlkzYcP6CA5oVwGz9mb8wYB+jwGi+RR+WJE=;
 b=cBVs9Ut5dIskcrdNcfVHFe9A5/rAuoaUqWrFZib9CluKHyGNWjb6FCrfnu7wUrA/l+
 bPO3pFyrBBDmVeOyrAuZnTZtETHxJNPCD4AMG6L3sMihzj/16CWWBkmq9WMixAhmdRF/
 ttkWx67jm5M8BQxqEXzetbzW9SKWyAHrIObXOtOTBLFl76prspqGerd8IyzkxyMElvY1
 ia0pWtoLcaty40cdhcOsHZ/9Xki39m76rU04dJht7wfSSrM7EnMUnR+o0hS3RUvU08zm
 kw72oaWXN4DYynu3LtAjvk6Op8LR6sr4LuXA/Md9I8s20P6zX9SNwoIRZ2uwrmVtFIjZ
 /plw==
X-Gm-Message-State: APjAAAXsZ3iYeNWh4TshIA6ALLgJoEC+qIVZKrW8EEdiRlFEMWk9msQW
 +qJbmPfhdpfVfEnzbJu9funB/GrwudQ=
X-Google-Smtp-Source: APXvYqxVfrqZ9S1ZoUi7q0aDJkhuAjhypNNpiNQMKjfGi0FfaLaQjMG/YlwReoK8yD+pPHyrOkvqJg==
X-Received: by 2002:a5d:56c1:: with SMTP id m1mr15924610wrw.26.1559547964904; 
 Mon, 03 Jun 2019 00:46:04 -0700 (PDT)
Received: from localhost.localdomain (5-12-208-93.residential.rdsnet.ro.
 [5.12.208.93])
 by smtp.gmail.com with ESMTPSA id e15sm10435925wme.0.2019.06.03.00.46.03
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:46:04 -0700 (PDT)
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 10:45:45 +0300
Message-Id: <20190603074545.13707-12-nicolescu.roxana1996@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 12/12] plat/drivers: Add rest of the
 interface for virtio block
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, simon.kuenzer@neclab.eu,
 Sharan Santhanam <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>

VGhpcyBwYXRjaCBhZGRzIHRoZSByZXN0IG9mIHRoZSBpbnRlcmZhY2UgZm9yIHZpcnRpbyBibG9j
ayBkZXZpY2UKd2hpY2ggaXMgZm91bmQgaW4gdGhlIHNwZWNzLgpOb3RlOiBGb3Igbm93LCBpdCBp
cyBub3QgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHZpcnRpbyBkcml2ZXIuCgpT
aWduZWQtb2ZmLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5l
dT4KLS0tCiBwbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIHwgMjUgKysr
KysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykK
CmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2Jsay5oIGIv
cGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaAppbmRleCAxYjhkZmZkMy4u
MTkxY2M5MWYgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9f
YmxrLmgKKysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19ibGsuaApAQCAt
MjgsMTYgKzI4LDI0IEBACiAjZGVmaW5lIFZJUlRJT19CTEtfRl9TSVpFX01BWAkxCiAvKiBNYXhp
bXVtIG51bWJlciBvZiBzZWdtZW50cyBpbiBhIHJlcXVlc3QgaXMgaW4gc2VnX21heC4gKi8KICNk
ZWZpbmUgVklSVElPX0JMS19GX1NFR19NQVgJMgorLyogRGlzay1zdHlsZSBnZW9tZXRyeSBzcGVj
aWZpZWQgaW4gZ2VvbWV0cnkgKi8KKyNkZWZpbmUgVklSVElPX0JMS19GX0dFT01FVFJZCTQKIC8q
IERldmljZSBpcyByZWFkLW9ubHkuICovCiAjZGVmaW5lIFZJUlRJT19CTEtfRl9STwkJNQogLyog
QmxvY2sgc2l6ZSBvZiBkaXNrIGlzIGluIGJsa19zaXplLiAqLwogI2RlZmluZSBWSVJUSU9fQkxL
X0ZfQkxLX1NJWkUJNgogLyogQ2FjaGUgZmx1c2ggY29tbWFuZCBzdXBwb3J0LiAqLwogI2RlZmlu
ZSBWSVJUSU9fQkxLX0ZfRkxVU0gJOQorLyogRGV2aWNlIGV4cG9ydHMgaW5mb3JtYXRpb24gb24g
b3B0aW1hbCBJL08gYWxpZ25tZW50LiAqLworI2RlZmluZSBWSVJUSU9fQkxLX0ZfVE9QT0xPR1kJ
MTAKIC8qIERldmljZSBjYW4gdG9nZ2xlIGl0cyBjYWNoZSBiZXR3ZWVuIHdyaXRlYmFjayBhbmQg
d3JpdGV0aHJvdWdoIG1vZGVzLiAqLwogI2RlZmluZSBWSVJUSU9fQkxLX0ZfQ09ORklHX1dDRSAx
MQogLyogRGV2aWNlIHN1cHBvcnRzIG11bHRpLXF1ZXVlcyAqLwogI2RlZmluZSBWSVJUSU9fQkxL
X0ZfTVEJCTEyCisvKiBEZXZpY2Ugc3VwcG9ydHMgcmVxdWVzdCBiYXJyaWVycy4gKi8KKyNkZWZp
bmUgVklSVElPX0JMS19GX0JBUlJJRVIJMAorLyogRGV2aWNlIHN1cHBvcnRzIHNjc2kgcGFja2V0
IGNvbW1hbmRzLiAqLworI2RlZmluZSBWSVJUSU9fQkxLX0ZfU0NTSQk3CiAKIC8qIFJlc3BvbnNl
IHN0YXR1cyAqLwogI2RlZmluZSBWSVJUSU9fQkxLX1NfT0sJCTAKQEAgLTUxLDggKzU5LDI1IEBA
IHN0cnVjdCB2aXJ0aW9fYmxrX2NvbmZpZyB7CiAJX191MzIgc2l6ZV9tYXg7CiAJLyogTWF4aW11
bSBzaXplIG9mIGEgc2VnbWVudCAqLwogCV9fdTMyIHNlZ19tYXg7CisJLyogR2VvbWV0cnkgKi8K
KwlzdHJ1Y3QgdmlydGlvX2Jsa19nZW9tZXRyeSB7CisJCV9fdTE2IGN5bGluZGVyczsKKwkJX191
OCBoZWFkczsKKwkJX191OCBzZWN0b3JzOworCX0gZ2VvbWV0cnk7CiAJLyogQmxvY2sgc2l6ZSAq
LwogCV9fdTMyIGJsa19zaXplOworCS8qIFRvcG9sb2d5ICovCisJc3RydWN0IHZpcnRpb19ibGtf
dG9wb2xvZ3kgeworCQkvKiBvZiBsb2dpY2FsIGJsb2NrcyBwZXIgcGh5c2ljYWwgYmxvY2sgKGxv
ZzIpICovCisJCV9fdTggcGh5c2ljYWxfYmxvY2tfZXhwOworCQkvKiBvZmZzZXQgb2YgZmlyc3Qg
YWxpZ25lZCBsb2dpY2FsIGJsb2NrICovCisJCV9fdTggYWxpZ25tZW50X29mZnNldDsKKwkJLyog
c3VnZ2VzdGVkIG1pbmltdW0gSS9PIHNpemUgaW4gYmxvY2tzICovCisJCV9fdTE2IG1pbl9pb19z
aXplOworCQkvKiBvcHRpbWFsIChzdWdnZXN0ZWQgbWF4aW11bSkgSS9PIHNpemUgaW4gYmxvY2tz
ICovCisJCV9fdTMyIG9wdF9pb19zaXplOworCX0gdG9wb2xvZ3k7CiAJLyogSXQgaXMgc2V0IGlm
IGJhY2tlbmQgaGFzIHdyaXRlYmFjayBjYWNoZSwKIAkgKiBvdGhlcndpc2UgaXQgaGFzIHdyaXRl
dGhyb3VnaCBjYWNoZS4KIAkgKiovCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 07:59:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 07:59: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 1hXhsM-0001Bs-FE; Mon, 03 Jun 2019 07:59:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=vWkG=UC=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXhsL-0001B8-Qv
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 07:59:25 +0000
X-Inumbo-ID: 80338151-85d5-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 80338151-85d5-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 07:59:24 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id z23so9928952wma.4
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 00:59:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=ZWH4EJvppn76mbkkWfh0cttgKHDe724HCvqRYbjkrP8=;
 b=dNnX3+12Gxd5nc67PvPbVlBuzR2yyjHkUN7E7MSKkiKpNV9+OannXxQr68aBEc68hu
 tzrs5q9+tYnCWRUo6arjykA0rZhvCE+LB4RUXZUcnTLH/M0dEIT7PIS88eQQBOgOGy6z
 eAufzXPgQpqZTzsonZT4kOMD+GrfP5NoR6pqP18z4m02Qxdyz5qDFI57yxUh2l3uuMn3
 TMSG4/79MH5zCQVojDCMoNruQqGD6r73tUv/1UkgmebzdcknGGzwrrIvwUoFckhzILwq
 Kfz75Mvc1nRCKXQt7hSAbSYQI685zMEoqGtZbH/cMxY72jR213ubo056LJLWx4QJ+Z6v
 nNZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=ZWH4EJvppn76mbkkWfh0cttgKHDe724HCvqRYbjkrP8=;
 b=LFYKQdMcHLYTFd6gaSh4AOveflXviFu2BAAOGUSR95jYaOwRUW9ny0I/j8bOd+Ku6a
 xxDgZ2R2foRVfrvxO8JQMFaRXjSlmttOw/cUt0sD9vDd1nl0UQ6ISoF9EWs+OlOxExer
 antn+Suw0AdTDnhvaxIBl2eUpboHcqPBQKum2nV6+DRKSYKcTOoXv9Eq0ahEDbHMOyUZ
 AB9tZfcBGJvUkUHD67ESuRLPTqq0wlvQz8NKLrKF+ulxHhx7rDzbuo47FLZ2hQyPrtPO
 5LlN3u3zOs/uh0bw6mKVrMGBwXF+I0w+kcQFP3CYyZknZX94wM+bm/aQhJ8+xWMumqcT
 ziqg==
X-Gm-Message-State: APjAAAXRQzXZi8d+/K4Sw9tleumLet2XXkGYs4J6Hqe7usq8YiYcvaXd
 AjR03dI1LCVAP90MsRwTcWQ=
X-Google-Smtp-Source: APXvYqxwrgtJ9IizgCz+Zhhy37Nfdz4h+cdb5I6IKT6JrnJuXHA8m3hKji/zDYPrPL8LN4PA8vQkbg==
X-Received: by 2002:a1c:23c4:: with SMTP id
 j187mr13661203wmj.176.1559548763277; 
 Mon, 03 Jun 2019 00:59:23 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id z17sm6913567wru.21.2019.06.03.00.59.22
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 00:59:22 -0700 (PDT)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-7-costin.lupu@cs.pub.ro>
 <51e20b27-1cde-3013-2f3f-953c455eaa0d@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <7e9a4b12-28a6-352b-bd03-a4277fe844d1@gmail.com>
Date: Mon, 3 Jun 2019 10:59:20 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <51e20b27-1cde-3013-2f3f-953c455eaa0d@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 6/8] Disable
 atomic 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@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 sharan.santhanam@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gNi8zLzE5IDEwOjMyIEFNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4gSGkgQ29zdGluLAo+
IAo+IE9uIDQvMTUvMTkgMTo0MyBQTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4+IFdlIGRpc2FibGUg
dGhlIGF0b21pYyBmdW5jdGlvbiBnaXZlbiB0aGF0IHdlIGFyZSB1c2luZyB0aGVtIGFzIG1hY3Jv
cy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5y
bz4KPj4gLS0tCj4+IMKgIHB0ZV9vc2FsLmMgfCAzICsrKwo+PiDCoCAxIGZpbGUgY2hhbmdlZCwg
MyBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9wdGVfb3NhbC5jIGIvcHRlX29zYWwu
Ywo+PiBpbmRleCA4NTY1ZjQ5Li42YmU2MmUzIDEwMDY0NAo+PiAtLS0gYS9wdGVfb3NhbC5jCj4+
ICsrKyBiL3B0ZV9vc2FsLmMKPj4gQEAgLTQ0Niw2ICs0NDYsOCBAQCBwdGVfb3NSZXN1bHQKPj4g
cHRlX29zU2VtYXBob3JlQ2FuY2VsbGFibGVQZW5kKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSBoLAo+
PiDCoMKgwqDCoMKgIHJldHVybiByZXN1bHQ7Cj4+IMKgIH0KPj4gwqAgKyNpZiAwCj4+ICsvKiBX
ZSB1c2UgbWFjcm9zIGluc3RlYWQgKi8KPiAKPiBTbywgaW4gY29udHJhc3QgdG8gdGhlIGxhc3Qg
cGF0Y2gsIHdoZXJlIEkgc2FpZCBpdCB3YXMsIGluIHRoZSBwYXRjaCwKPiBwcm9iYWJseSBhIHF1
ZXN0aW9uIG9mIHByZWZlcmVuY2Ugd2hldGhlciB0byBrZWVwIHRoZSBjb2RlIGNvbW1lbnRlZCBv
dXQKPiBvciByZW1vdmUgaXQsIEkgdGhpbmsgaGVyZSBpdCB3b3VsZCBiZSBhY3R1YWxseSBiZXR0
ZXIgdG8gaW5kZWVkIHJlbW92ZQo+IGl0LiBGb3IgdGhlIHByZXZpb3VzIHBhdGNoLCBpdCB3YXMg
Y2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgY29kZSwgc28gSQo+IGRvbid0IGZlZWwgc3Ryb25nbHkg
ZWl0aGVyIHdheS4gQnV0IHRoaXMgaXMgb3VyIG93biBnbHVlIGNvZGUsIGFuZCB5b3UKPiBoYXZl
IGNvbXBsZXRlbHkgcmVwbGFjZWQgdGhlIGZ1bmN0aW9ucywgc28gSSBkb24ndCB0aGluayB0aGVy
ZSdzIGFueQo+IHBvaW50IG9mIGtlZXBpbmcgdGhpcyBwYXJ0IGFyb3VuZCBhcyBhIGNvbW1lbnQ7
IGl0IHdvdWxkIGJlIGRpZmZlcmVudCBpZgo+IHRoaXMgd2FzIGEgbm90LXlldC1pbXBsZW1lbnRl
ZCBwYXJ0IHRoYXQgbWlnaHQgbmVlZCB0byBiZSBhZGFwdGVkIGxhdGVyOgo+IEkgZG9uJ3QgdGhp
bmsgd2UnbGwgZXZlciBwcmFjdGljYWxseSB1c2UgdGhpcyBjb21tZW50ZWQtb3V0IGNvZGUsIHNv
IGl0Cj4gbWlnaHQgYXMgd2VsbCBnbyBhbmQgbWFrZSB0aGUgc291cmNlIGZpbGUgbW9yZSBjb25j
aXNlLiAoUGx1cywgdGhlcmUncwo+IGFsd2F5cyBhIGNvZGUgaW4gdGhlIGdpdCBoaXN0b3J5IGlm
IHdlIHJlYWxseSBuZWVkIGl0IHVuZXhwZWN0ZWRseSBhdAo+IHNvbWUgcG9pbnQpLgoKVGhlcmUg
aXMgYWN0dWFsbHkgYSByZWFzb24gd2h5IEkgY2hvc2UgaXQgdGhpcyB3YXkuIElmIHRoZSBvcmln
aW4gY29kZQpnZXRzIGZpeGVkIHRoZW4gd2UnbGwgYmUgYWJsZSB0byB1c2UgdGhlc2UgZnVuY3Rp
b25zLiBJdCBkb2Vzbid0IGh1cnQgaWYKd2Uga2VlcCBpdC4KCkNoZWVycywKQ29zdGluCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:05:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:05: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 1hXitp-0008DY-GY; Mon, 03 Jun 2019 09:05:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXito-0008DJ-BE
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:05:00 +0000
X-Inumbo-ID: a72aa872-85de-11e9-a95f-43b97d379101
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a72aa872-85de-11e9-a95f-43b97d379101;
 Mon, 03 Jun 2019 09:04:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 43EE3F2046;
 Mon,  3 Jun 2019 11:04:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BK9sCB7XvOo3; Mon,  3 Jun 2019 11:04:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1E055F201A
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 11:04:52 +0200 (CEST)
Received: from localhost (10.1.99.70) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 11:04:51 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 11:04:32 +0200
Message-ID: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.99.70]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/5] Fix multiline printfs with
 newlib
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UHJvYmxlbTogaWYgY29tcGlsZWQgd2l0aCBuZXdsaWIsIHByaW50ZigiZm9vXG5iYXJcbmJhelxu
Iikgd291bGQKcHJpbnQgb25seSAiZm9vIi4gVGhhdCBpcyBiZWNhdXNlIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gb2Ygc3RkaW8gd2FzCnJldHVybmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0
ZW4uIEJ1dCB2ZnMgZXhwZWN0cyBhIGVycm9yIGNvZGUKaW5zdGVhZC4KClRoaXMgc2VyaWVzIGFs
c28gZml4ZXMgZmV3IG90aGVyIG1pbm9yIHByb2JsZW1zIGluIHZmcywgcmFtZnMgYW5kCnN0ZGlv
LCByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBpc3N1ZS4KCkNoYW5nZXMgc2luY2UgdjE6CiAgLSBy
ZWJhc2UgdG8gY3VycmVudCBvcmlnaW4vc3RhZ2luZwoKWXVyaSBWb2xjaGtvdiAoNSk6CiAgbGli
L3Zmc2NvcmU6IGludHJvZHVjZSB2ZnNjb3JlX3Vpb2ZvcmVhY2gKICBsaWIvdmZzY29yZTogaGFu
ZGxlIHVpbyBwcm9wZXJseSBpbiBzdGRpbyBmdW5jdGlvbnMKICBsaWIvdmZzY29yZTogY2hlY2sg
cmV0dXJuIHZhbHVlIG9mIHZmc193cml0ZSBpbiBzeXNfd3JpdGUKICBsaWIvdmZzY29yZTogZG8g
bm90IGFkdmFuY2UgcG9zaXRpb24gZm9yIHN0ZGlvCiAgbGliL3Zmc2NvcmU6IG1ha2UgYWxsIHZu
b3BzIGZ1bmN0aW9uIHJldHVybiBpbnQKCiBsaWIvcmFtZnMvcmFtZnNfdm5vcHMuYyAgICAgICAg
ICAgICB8ICA2ICstLQogbGliL3Zmc2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgfCAgMyAr
LQogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCAgfCAgMyArKwogbGliL3Zmc2Nv
cmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oICAgfCAzOSArKysrKysrKysrKysrKysrKysKIGxpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMTAgKysrLS0KIGxpYi92ZnNjb3JlL3N0
ZGlvLmMgICAgICAgICAgICAgICAgIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K
IGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAgICAgICAgIHwgMzQgKysrKy0tLS0tLS0tLS0t
LQogbGliL3Zmc2NvcmUvc3lzY2FsbHMuYyAgICAgICAgICAgICAgfCAgMiArLQogOCBmaWxlcyBj
aGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgotLSAKMi4xOS4yCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:05:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:05: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 1hXitp-0008DO-CH; Mon, 03 Jun 2019 09:05:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXitn-0008D9-DO
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:04:59 +0000
X-Inumbo-ID: a7a945d1-85de-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a7a945d1-85de-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 09:04:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2285810526F;
 Mon,  3 Jun 2019 11:04:55 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id r92BhW-kid-q; Mon,  3 Jun 2019 11:04:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D288210526E
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 11:04:54 +0200 (CEST)
Received: from localhost (10.1.99.70) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 11:04:54 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 11:04:33 +0200
Message-ID: <20190603090437.19537-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.99.70]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/5] lib/vfscore: introduce
 vfscore_uioforeach
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBpcyBhIHRlbXBsYXRlLXR5cGUgb2YgZnVuY3Rpb24sIHRvIGF2b2lkIGNvZGUKZHVwbGlj
YXRpb24uIENvbXBpbGVyIG9wdGltaXplcyBleHRyYSBjYWxsIHRvIHRoZSBmdW5jdGlvbiBwb2lu
dGVyCnBhc3NlZCBhcyBhcmd1bWVudCwgc28gdGhpcyBzaG91bGQgbm90IGhhdmUgYW55IHBlcmZv
cm1hbmNlIGltcGFjdHMKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hr
b3ZAbmVjbGFiLmV1PgotLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCB8IDM5
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMg
ICAgICAgICAgICB8IDM0ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFu
Z2VkLCA0NyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvdWlvLmgKaW5kZXggYzczNGZhMTkuLmY5ODg1Yjk0IDEwMDY0NAotLS0gYS9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Vpby5oCkBAIC01Nyw2ICs1Nyw0NSBAQCBzdHJ1Y3QgdWlvIHsKIAllbnVtCXVpb19ydyB1aW9f
cnc7CQkvKiBvcGVyYXRpb24gKi8KIH07CiAKK3N0YXRpYyBpbmxpbmUKK2ludCB2ZnNjb3JlX3Vp
b2ZvcmVhY2goaW50ICgqZikodm9pZCAqLCB2b2lkICosIHNpemVfdCAqKSwgdm9pZCAqY3AsCisJ
CSAgICAgIHNpemVfdCBuLCBzdHJ1Y3QgdWlvICp1aW8pCit7CisJaW50IHJldCA9IDA7CisKKwlV
S19BU1NFUlQodWlvLT51aW9fcncgPT0gVUlPX1JFQUQgfHwgdWlvLT51aW9fcncgPT0gVUlPX1dS
SVRFKTsKKworCXdoaWxlIChuID4gMCAmJiB1aW8tPnVpb19yZXNpZCkgeworCQlzdHJ1Y3QgaW92
ZWMgKmlvdiA9IHVpby0+dWlvX2lvdjsKKwkJc2l6ZV90IGNudCA9IGlvdi0+aW92X2xlbjsKKwor
CQlpZiAoY250ID09IDApIHsKKwkJCXVpby0+dWlvX2lvdisrOworCQkJdWlvLT51aW9faW92Y250
LS07CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoY250ID4gbikKKwkJCWNudCA9IG47CisKKwkJ
aWYgKHVpby0+dWlvX3J3ID09IFVJT19SRUFEKQorCQkJcmV0ID0gZihpb3YtPmlvdl9iYXNlLCBj
cCwgJmNudCk7CisJCWVsc2UKKwkJCXJldCA9IGYoY3AsIGlvdi0+aW92X2Jhc2UsICZjbnQpOwor
CisJCWlvdi0+aW92X2Jhc2UgPSAoY2hhciAqKWlvdi0+aW92X2Jhc2UgKyBjbnQ7CisJCWlvdi0+
aW92X2xlbiAtPSBjbnQ7CisJCXVpby0+dWlvX3Jlc2lkIC09IGNudDsKKwkJdWlvLT51aW9fb2Zm
c2V0ICs9IGNudDsKKwkJY3AgPSAoY2hhciAqKWNwICsgY250OworCQluIC09IGNudDsKKworCQlp
ZiAocmV0KQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwogaW50CXZmc2NvcmVf
dWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbyk7CiAKICNlbmRpZiAvKiAh
X1VJT19IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNj
b3JlL3N1YnJfdWlvLmMKaW5kZXggYWExNzYwNzQuLmU2ZTFjZGYwIDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS9zdWJyX3Vpby5jCisrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKQEAgLTQ1LDM0
ICs0NSwxNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+
CiAKK3N0YXRpYyBpbnQgX19tZW1jcHlfd3JhcHBlcih2b2lkICpkc3QsIHZvaWQgKnNyYywgc2l6
ZV90ICpjbnQpCit7CisJbWVtY3B5KGRzdCwgc3JjLCAqY250KTsKKwlyZXR1cm4gMDsKK30KKwog
aW50CiB2ZnNjb3JlX3Vpb21vdmUodm9pZCAqY3AsIGludCBuLCBzdHJ1Y3QgdWlvICp1aW8pCiB7
Ci0JVUtfQVNTRVJUKHVpby0+dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJ
T19XUklURSk7CisJaW50IHJldCA9IHZmc2NvcmVfdWlvZm9yZWFjaChfX21lbWNweV93cmFwcGVy
LCBjcCwgbiwgdWlvKTsKIAotCXdoaWxlIChuID4gMCAmJiB1aW8tPnVpb19yZXNpZCkgewotCQlz
dHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+dWlvX2lvdjsKLQkJaW50IGNudCA9IGlvdi0+aW92X2xl
bjsKLQkJaWYgKGNudCA9PSAwKSB7Ci0JCQl1aW8tPnVpb19pb3YrKzsKLQkJCXVpby0+dWlvX2lv
dmNudC0tOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKGNudCA+IG4pCi0JCQljbnQgPSBuOwot
Ci0JCWlmICh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCkKLQkJCW1lbWNweShpb3YtPmlvdl9iYXNl
LCBjcCwgY250KTsKLQkJZWxzZQotCQkJbWVtY3B5KGNwLCBpb3YtPmlvdl9iYXNlLCBjbnQpOwot
Ci0JCWlvdi0+aW92X2Jhc2UgPSAoY2hhciAqKWlvdi0+aW92X2Jhc2UgKyBjbnQ7Ci0JCWlvdi0+
aW92X2xlbiAtPSBjbnQ7Ci0JCXVpby0+dWlvX3Jlc2lkIC09IGNudDsKLQkJdWlvLT51aW9fb2Zm
c2V0ICs9IGNudDsKLQkJY3AgPSAoY2hhciAqKWNwICsgY250OwotCQluIC09IGNudDsKLQl9Ci0K
LQlyZXR1cm4gMDsKKwlyZXR1cm4gcmV0OwogfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:05:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:05: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 1hXitp-0008DT-Ey; Mon, 03 Jun 2019 09:05:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXitn-0008DE-JS
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:04:59 +0000
X-Inumbo-ID: a92bc929-85de-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a92bc929-85de-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 09:04:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A59D6F2048;
 Mon,  3 Jun 2019 11:04:57 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 0oPTBxjQ-iWq; Mon,  3 Jun 2019 11:04:57 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7DAA7F201A
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 11:04:55 +0200 (CEST)
Received: from localhost (10.1.99.70) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 11:04:55 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 11:04:34 +0200
Message-ID: <20190603090437.19537-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.99.70]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/5] lib/vfscore: handle uio
 properly in stdio functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvc3RkaW8uYyB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDE0IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29y
ZS9zdGRpby5jCmluZGV4IGI3M2IxMzJjLi44ZTNjY2JkYiAxMDA2NDQKLS0tIGEvbGliL3Zmc2Nv
cmUvc3RkaW8uYworKysgYi9saWIvdmZzY29yZS9zdGRpby5jCkBAIC00MCwzMSArNDAsNDEgQEAK
ICNpbmNsdWRlIDx0ZXJtaW9zLmg+CiAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgogI2luY2x1
ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisKK3N0YXRpYyBpbnQgX19j
b3V0a193cmFwcGVyKHZvaWQgKmRzdCBfX3VudXNlZCwgdm9pZCAqc3JjLCBzaXplX3QgKmNudCkK
K3sKKwlpbnQgcmV0ID0gdWtwbGF0X2NvdXRrKHNyYywgKmNudCk7CisKKwlpZiAocmV0IDwgMCkK
KwkJLyogVE9ETzogcmVtb3ZlIC0xIHdoZW4gdmZzY29yZSBzd2l0Y2hlcyB0byBuZWdhdGl2ZQor
CQkgKiBlcnJvciBudW1iZXJzCisJCSAqLworCQlyZXR1cm4gcmV0ICogLTE7CisKKwkqY250ID0g
KHNpemVfdCkgcmV0OworCXJldHVybiAwOworfQogCiAvKiBPbmUgZnVuY3Rpb24gZm9yIHN0ZGVy
ciBhbmQgc3Rkb3V0ICovCiBzdGF0aWMgc3NpemVfdCBzdGRpb193cml0ZShzdHJ1Y3Qgdm5vZGUg
KnZwIF9fdW51c2VkLAogCQkJICAgc3RydWN0IHVpbyAqdWlvLAogCQkJICAgaW50IGlvZmxhZyBf
X3VudXNlZCkKIHsKLQlVS19BU1NFUlQoIXVpby0+dWlvX29mZnNldCk7Ci0JVUtfQVNTRVJUKHVp
by0+dWlvX2lvdmNudCA9PSAxKTsKLQlyZXR1cm4gdWtwbGF0X2NvdXRrKHVpby0+dWlvX2lvdi0+
aW92X2Jhc2UsIHVpby0+dWlvX2lvdi0+aW92X2xlbik7CisJaWYgKHVpby0+dWlvX29mZnNldCkK
KwkJcmV0dXJuIEVTUElQRTsKKworCXJldHVybiB2ZnNjb3JlX3Vpb2ZvcmVhY2goX19jb3V0a193
cmFwcGVyLCBOVUxMLCB1aW8tPnVpb19yZXNpZCwgdWlvKTsKIH0KIAotc3RhdGljIHNzaXplX3Qg
c3RkaW9fcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwIF9fdW51c2VkLAotCQkgICAgICBzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmaWxlIF9fdW51c2VkLAotCQkgICAgICBzdHJ1Y3QgdWlvICp1aW8sCi0JCSAg
ICAgIGludCBpb2ZsYWcgX191bnVzZWQpCisKK3N0YXRpYyBpbnQgX19yZWFkX2ZuKHZvaWQgKmRz
dCwgdm9pZCAqc3JjIF9fdW51c2VkLCBzaXplX3QgKmNudCkKIHsKIAlpbnQgYnl0ZXNfcmVhZDsK
IAlzaXplX3QgYnl0ZXNfdG90YWwgPSAwLCBjb3VudDsKLQljaGFyICpidWY7Ci0KLQlVS19BU1NF
UlQoIXVpby0+dWlvX29mZnNldCk7Ci0JVUtfQVNTRVJUKHVpby0+dWlvX2lvdmNudCA9PSAxKTsK
KwljaGFyICpidWYgPSBkc3Q7CiAKLQlidWYgPSB1aW8tPnVpb19pb3YtPmlvdl9iYXNlOwotCWNv
dW50ID0gdWlvLT51aW9faW92LT5pb3ZfbGVuOworCWNvdW50ID0gKmNudDsKIAogCWRvIHsKIAkJ
d2hpbGUgKChieXRlc19yZWFkID0gdWtwbGF0X2NpbmsoYnVmLApAQCAtODIsNyArOTIsMjggQEAg
c3RhdGljIHNzaXplX3Qgc3RkaW9fcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwIF9fdW51c2VkLAogCX0g
d2hpbGUgKGJ5dGVzX3RvdGFsIDwgY291bnQgJiYgKihidWYgLSAxKSAhPSAnXG4nCiAJCQkmJiAq
KGJ1ZiAtIDEpICE9IFZFT0YpOwogCi0JcmV0dXJuIGJ5dGVzX3RvdGFsOworCSpjbnQgPSBieXRl
c190b3RhbDsKKworCWlmICgqKGJ1ZiAtIDEpID09ICdcbicgfHwgKihidWYgLSAxKSA9PSBWRU9G
KQorCQlyZXR1cm4gSU5UX01JTjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBz
dGRpb19yZWFkKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCisJCSAgICAgIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZpbGUgX191bnVzZWQsCisJCSAgICAgIHN0cnVjdCB1aW8gKnVpbywKKwkJICAg
ICAgaW50IGlvZmxhZyBfX3VudXNlZCkKK3sKKwlpbnQgcmV0OworCisJaWYgKHVpby0+dWlvX29m
ZnNldCkKKwkJcmV0dXJuIEVTUElQRTsKKworCXJldCA9IHZmc2NvcmVfdWlvZm9yZWFjaChfX3Jl
YWRfZm4sIE5VTEwsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOworCXJldCA9IChyZXQgPT0gSU5UX01J
TikgPyAwIDogcmV0OworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludAotLSAKMi4xOS4y
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:05:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:05: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 1hXitr-0008EI-I0; Mon, 03 Jun 2019 09:05:03 +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=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXitq-0008Dg-J5
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:05:02 +0000
X-Inumbo-ID: a99c90ca-85de-11e9-9126-ffa5195a12c1
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a99c90ca-85de-11e9-9126-ffa5195a12c1;
 Mon, 03 Jun 2019 09:04:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7164010526E;
 Mon,  3 Jun 2019 11:04:58 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LRdY4XUAoChl; Mon,  3 Jun 2019 11:04:58 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3A8B910505E
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 11:04:58 +0200 (CEST)
Received: from localhost (10.1.99.70) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 11:04:57 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 11:04:35 +0200
Message-ID: <20190603090437.19537-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.99.70]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 3/5] lib/vfscore: check return
 value of vfs_write in sys_write
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBjaGVjayBoYXMgYmVlbiBsb3N0IGR1cmluZyB0aGUgcG9ydGluZy4KClNpZ25lZC1vZmYt
Ynk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi92ZnNj
b3JlL3N5c2NhbGxzLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg
ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zm
c2NvcmUvc3lzY2FsbHMuYwppbmRleCAxMzAxZjM1MS4uMzg1ZDkwYzAgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMzMw
LDcgKzMzMCw3IEBAIHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3Ry
dWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCXVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owog
CXVpby51aW9fcmVzaWQgPSBieXRlczsKIAl1aW8udWlvX3J3ID0gVUlPX1dSSVRFOwotCXZmc193
cml0ZShmcCwgJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisJZXJyb3Ig
PSB2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwog
CSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKIAogCWZyZWUoY29weV9pb3YpOwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:05:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:05: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 1hXits-0008Ek-JZ; Mon, 03 Jun 2019 09:05:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXitr-0008EX-Vo
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:05:04 +0000
X-Inumbo-ID: abb50be4-85de-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id abb50be4-85de-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 09:05:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E4FEE10526F;
 Mon,  3 Jun 2019 11:05:01 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MEs7oEnTwB7P; Mon,  3 Jun 2019 11:05:01 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B107510505E
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 11:05:01 +0200 (CEST)
Received: from localhost (10.1.99.70) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 11:05:01 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 11:04:37 +0200
Message-ID: <20190603090437.19537-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.99.70]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 5/5] lib/vfscore: make all vnops
 function return int
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBtdXN0IGJlIGEgbWlzdGFrZSBtYWRlIGR1cmluZyBwb3J0aW5nIGFuZCBhZGFwdGluZyB0
eXBlcyBpbgpwYXJ0aWN1bGFyLiBBbGwgdGhlIHZub3BzIGZ1bmN0aW9ucyBhcmUgcmV0dXJuaW5n
IGVycm9yIGNvZGVzLCBub3QKb2Zmc2V0cyBvciBub3QgdGhlIG51bWJlciBvZiBieXRlcyByZWFk
LgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+
Ci0tLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgICAgICAgICAgICAgfCAgNiArKystLS0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMTAgKysrKysrLS0tLQogbGliL3Zm
c2NvcmUvc3RkaW8uYyAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiAzIGZpbGVzIGNoYW5nZWQs
IDExIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZz
L3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCBmMDg0OGJkMC4u
NmVjYTliMjYgMTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9y
YW1mcy9yYW1mc192bm9wcy5jCkBAIC0yOTQsNyArMjk0LDcgQEAgcmFtZnNfc3ltbGluayhzdHJ1
Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKIAlyZXR1cm4gMDsKIH0KIAot
c3RhdGljIHNzaXplX3QKK3N0YXRpYyBpbnQKIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAq
dnAsIHN0cnVjdCB1aW8gKnVpbykKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9k
YXRhOwpAQCAtMzk0LDcgKzM5NCw3IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwg
Y2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzc2l6ZV90
CitzdGF0aWMgaW50CiByYW1mc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwIF9fdW51c2VkLAogCSAgIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZyBfX3Vu
dXNlZCkKIHsKQEAgLTQ0NCw3ICs0NDQsNyBAQCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2
bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKQogCXJldHVybiAwOwogfQog
Ci1zdGF0aWMgc3NpemVfdAorc3RhdGljIGludAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogewogCXN0cnVjdCByYW1mc19ub2RlICpu
cCA9ICB2cC0+dl9kYXRhOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCAxMzQ4
ZjU3OS4uZTdlYmM0YWQgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92
bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0xNDcs
OSArMTQ3LDExIEBAIHN0cnVjdCB2YXR0ciB7CiAKIHR5cGVkZWYJaW50ICgqdm5vcF9vcGVuX3Qp
CShzdHJ1Y3QgdmZzY29yZV9maWxlICopOwogdHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKLXR5cGVkZWYJc3NpemVfdCAo
KnZub3BfcmVhZF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKiwgc3Ry
dWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglzc2l6ZV90ICgqdm5vcF93cml0ZV90KQkoc3RydWN0
IHZub2RlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKLXR5cGVkZWYJb2ZmX3QgKCp2bm9wX3NlZWtf
dCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIG9mZl90LCBvZmZfdCk7
Cit0eXBlZGVmCWludCAoKnZub3BfcmVhZF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKiwKKwkJCQkgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglpbnQgKCp2bm9w
X3dyaXRlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglp
bnQgKCp2bm9wX3NlZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICos
CisJCQkJIG9mZl90LCBvZmZfdCk7CiB0eXBlZGVmCWludCAoKnZub3BfaW9jdGxfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7
CiB0eXBlZGVmCWludCAoKnZub3BfZnN5bmNfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZz
Y29yZV9maWxlICopOwogdHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVjdCB2bm9k
ZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCBkaXJlbnQgKik7CkBAIC0xNjcsNyAr
MTY5LDcgQEAgdHlwZWRlZglpbnQgKCp2bm9wX3RydW5jYXRlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
b2ZmX3QpOwogdHlwZWRlZglpbnQgKCp2bm9wX2xpbmtfdCkgICAgICAoc3RydWN0IHZub2RlICos
IHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX2NhY2hlX3QpIChz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlw
ZWRlZiBpbnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2RlICosIGludCwgb2ZmX3Qs
IG9mZl90KTsKLXR5cGVkZWYgc3NpemVfdCAoKnZub3BfcmVhZGxpbmtfdCkgIChzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IHVpbyAqKTsKK3R5cGVkZWYgaW50ICgqdm5vcF9yZWFkbGlua190KSAgKHN0
cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX3N5bWxpbmtf
dCkgICAoc3RydWN0IHZub2RlICosIGNoYXIgKiwgY2hhciAqKTsKIAogLyoKZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29yZS9zdGRpby5jCmluZGV4IDQwMjg4YmIz
Li44YmRlMTUyZCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3RkaW8uYworKysgYi9saWIvdmZz
Y29yZS9zdGRpby5jCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBpbnQgX19jb3V0a193cmFwcGVy
KHZvaWQgKmRzdCBfX3VudXNlZCwgdm9pZCAqc3JjLCBzaXplX3QgKmNudCkKIH0KIAogLyogT25l
IGZ1bmN0aW9uIGZvciBzdGRlcnIgYW5kIHN0ZG91dCAqLwotc3RhdGljIHNzaXplX3Qgc3RkaW9f
d3JpdGUoc3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwKK3N0YXRpYyBpbnQgc3RkaW9fd3JpdGUo
c3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwKIAkJCSAgIHN0cnVjdCB1aW8gKnVpbywKIAkJCSAg
IGludCBpb2ZsYWcgX191bnVzZWQpCiB7CkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBf
X3JlYWRfZm4odm9pZCAqZHN0LCB2b2lkICpzcmMgX191bnVzZWQsIHNpemVfdCAqY250KQogCXJl
dHVybiAwOwogfQogCi1zdGF0aWMgc3NpemVfdCBzdGRpb19yZWFkKHN0cnVjdCB2bm9kZSAqdnAg
X191bnVzZWQsCitzdGF0aWMgaW50IHN0ZGlvX3JlYWQoc3RydWN0IHZub2RlICp2cCBfX3VudXNl
ZCwKIAkJICAgICAgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSBfX3VudXNlZCwKIAkJICAgICAg
c3RydWN0IHVpbyAqdWlvLAogCQkgICAgICBpbnQgaW9mbGFnIF9fdW51c2VkKQotLSAKMi4xOS4y
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:05:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:05: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 1hXitu-0008Fa-LL; Mon, 03 Jun 2019 09:05:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXitt-0008FJ-QB
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:05:05 +0000
X-Inumbo-ID: ab342fba-85de-11e9-aa2f-0fbf72aa5439
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ab342fba-85de-11e9-aa2f-0fbf72aa5439;
 Mon, 03 Jun 2019 09:05:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 14E8AF2048;
 Mon,  3 Jun 2019 11:05:01 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 7_cW5UUsRrro; Mon,  3 Jun 2019 11:05:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id DF382F2046
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 11:04:58 +0200 (CEST)
Received: from localhost (10.1.99.70) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 11:04:58 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 11:04:36 +0200
Message-ID: <20190603090437.19537-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.99.70]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 4/5] lib/vfscore: do not advance
 position for stdio
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

V2l0aCB0aGUgcHJvcGVyIGhhbmRsaW5nIG9mIHVpbyBmb3Igc3RkaW8gZmlsZXMsIHZmcyBhbHNv
IGFkdmFuY2VzIHRoZQpwb3NpdGlvbiBpbiB0aGUgc3RydWN0IGZpbGUuIFdoaWNoIGRvZXMgbm90
IG1ha2UgYW55IHNlbnNlIGZvciBjb25zb2xlCihhbmQgc29tZSBvdGhlciBjbGFzc2VzIG9mIGRl
dmljZXMpLgoKVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgZmxhZ3MgdmFyaWFibGUgaW5zaWRlIHN0
cnVjdAp2ZnNjb3JlX2ZpbGUuIFVzaW5nIGZfZmxhZ3Mgd291bGQgYWRkIG1vcmUgbWVzcyBpbiB0
aGUgY29kZSwgYmVjYXVzZQptb3N0IG9mIHRoZSBmbGFncyBhcmUgZGVmaW5lZCBpbiBmY250bC5o
LCB3aGljaCBpcyBleHRlcm5hbCBmcm9tCnZmc2NvcmUgaGVhZGVyLgoKU2lnbmVkLW9mZi1ieTog
WXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUv
Zm9wcy5jICAgICAgICAgICAgICAgICB8IDMgKystCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvZmlsZS5oIHwgMyArKysKIGxpYi92ZnNjb3JlL3N0ZGlvLmMgICAgICAgICAgICAgICAgfCAx
ICsKIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCmluZGV4IDc5
MTE0ZTIxLi5hZDc4ZDNiMSAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCisrKyBiL2xp
Yi92ZnNjb3JlL2ZvcHMuYwpAQCAtMTA3LDcgKzEwNyw4IEBAIGludCB2ZnNfd3JpdGUoc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWdzKQogCWVycm9yID0g
Vk9QX1dSSVRFKHZwLCB1aW8sIGlvZmxhZ3MpOwogCWlmICghZXJyb3IpIHsKIAkJY291bnQgPSBi
eXRlcyAtIHVpby0+dWlvX3Jlc2lkOwotCQlpZiAoKGZsYWdzICYgRk9GX09GRlNFVCkgPT0gMCkK
KwkJaWYgKCEoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSAmJgorCQkgICAgIShmcC0+Zl92ZnNfZmxhZ3Mg
JiBVS19WRlNDT1JFX05PUE9TKSkKIAkJCWZwLT5mX29mZnNldCArPSBjb3VudDsKIAl9CiAKZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggYi9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCmluZGV4IDJjMDI1MmUyLi5iZTFjNzc3MiAxMDA2NDQK
LS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaAorKysgYi9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCkBAIC00NiwxMiArNDYsMTUgQEAgZXh0ZXJuICJDIiB7
CiAKIHN0cnVjdCB2ZnNjb3JlX2ZpbGU7CiAKKyNkZWZpbmUgVUtfVkZTQ09SRV9OT1BPUyAoKGlu
dCkgKDEgPDwgMCkpCisKIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgewogCWludCBmZDsKIAlpbnQJCWZf
ZmxhZ3M7CS8qIG9wZW4gZmxhZ3MgKi8KIAlpbnQJCWZfY291bnQ7CS8qIHJlZmVyZW5jZSBjb3Vu
dCAqLwogCW9mZl90CQlmX29mZnNldDsJLyogY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlICovCiAJ
dm9pZAkJKmZfZGF0YTsgICAgICAgIC8qIGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpYyBkYXRhICov
CisJaW50CQlmX3Zmc19mbGFnczsgICAgLyogaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZmxhZ3Mg
Ki8KIAlzdHJ1Y3QgZGVudHJ5ICAgKmZfZGVudHJ5OwogfTsKIApkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvc3RkaW8uYyBiL2xpYi92ZnNjb3JlL3N0ZGlvLmMKaW5kZXggOGUzY2NiZGIuLjQwMjg4
YmIzIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zdGRpby5jCisrKyBiL2xpYi92ZnNjb3JlL3N0
ZGlvLmMKQEAgLTE0NCw2ICsxNDQsNyBAQCBzdGF0aWMgc3RydWN0IHZmc2NvcmVfZmlsZSAgc3Rk
aW9fZmlsZSA9IHsKIAkuZmQgPSAxLAogCS5mX2ZsYWdzID0gVUtfRldSSVRFIHwgVUtfRlJFQUQs
CiAJLmZfZGVudHJ5ID0gJnN0ZGlvX2RlbnRyeSwKKwkuZl92ZnNfZmxhZ3MgPSBVS19WRlNDT1JF
X05PUE9TLAogCS8qIHJlZmVyZW5jZSBjb3VudCBpcyAyIGJlY2F1c2UgY2xvc2UoMCkgaXMgYSB2
YWxpZAogCSAqIG9wZXJhdGlvbi4gSG93ZXZlciBpdCBpcyBub3QgcHJvcGVybHkgaGFuZGxlZCBp
biB0aGUKIAkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAqLwotLSAKMi4xOS4yCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:12:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:12: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 1hXj0q-0000cq-6T; Mon, 03 Jun 2019 09:12: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=Oe3g=UB=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hXYks-0001HD-J2
 for minios-devel@lists.xen.org; Sun, 02 Jun 2019 22:15:06 +0000
X-Inumbo-ID: de664db0-8583-11e9-9205-8759e6379ae3
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.75]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id de664db0-8583-11e9-9205-8759e6379ae3;
 Sun, 02 Jun 2019 22:15:03 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4970.eurprd01.prod.exchangelabs.com (20.177.209.202) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.22; Sun, 2 Jun
 2019 22:14:50 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1943.018; Sun, 2 Jun 2019
 22:14:50 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 2/2] Initial port of Intel
 Intrinsics on Unikraft
Thread-Index: AQHVGZCY1DEOTxyknUqZKX5khcxZkA==
Date: Sun, 2 Jun 2019 22:14:50 +0000
Message-ID: <20190602221434.17542-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0263.eurprd08.prod.outlook.com
 (2603:10a6:803:dc::36) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 59578178-93dc-4ac4-ffbc-08d6e7a7b9c1
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(5600148)(711020)(4605104)(1401327)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(2017052603328)(7193020);
 SRVR:PR1PR01MB4970; 
x-ms-traffictypediagnostic: PR1PR01MB4970:
x-microsoft-antispam-prvs: <PR1PR01MB497098590D108936453D9047A61B0@PR1PR01MB4970.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 005671E15D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(1496009)(376002)(396003)(346002)(366004)(136003)(39850400004)(189003)(199004)(52116002)(76176011)(53946003)(305945005)(14454004)(7736002)(54906003)(2906002)(45080400002)(6512007)(99286004)(85182001)(68736007)(6486002)(2501003)(71190400001)(316002)(71200400001)(786003)(66066001)(6436002)(508600001)(5640700003)(446003)(11346002)(2616005)(25786009)(53936002)(85202003)(8936002)(81156014)(81166006)(30864003)(8676002)(1076003)(4326008)(476003)(6916009)(486006)(186003)(66946007)(66446008)(6506007)(86362001)(26005)(3846002)(66556008)(102836004)(64756008)(74482002)(66476007)(73956011)(2351001)(14444005)(256004)(5660300002)(6116002)(50226002)(386003)(569006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4970;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: jjT4c2bpU3QZt1ZN4o3Jvb+HAjNrkdF2f/oKhk7QBw09MKJQnM1pkMARWeRm12tr2qmUzrw81CBicy5Uyph1Pv6m/p19VnTMGmfp23UKUcGx2rep9GVpAGdRp151UjuRZgU91DQ2T+RQquIuKGxrzpS4Os323HfEYEJWU6e2SCnnPYTE/SGdAid4BTC0Fs+XDShrMUSMpOD783sLNkBhaFsLqWh0qo56lglvACc0YHgvg5uucU1aOPUjHeuP+ZLtEPg32nHEY7/upNj2cxviUdErEeJyafine7YgxjTaA9RjXc+wmSFAKA+MrHqhlg5VgifqTRwOMuSrnxuCcphjZBPikORxsV1nBR6QXCxuLgak4wRoPN1WA8u5yK9xJzmsHLvqxQCT/nt/XerDwwgewF9l9P+OT8bEKwuoGud4dzA=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 59578178-93dc-4ac4-ffbc-08d6e7a7b9c1
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2019 22:14:50.4484 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4970
X-Mailman-Approved-At: Mon, 03 Jun 2019 09:12:15 +0000
Subject: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 2/2] Initial
 port of Intel Intrinsics 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGludGVsIGludHJpbnNpY3MgdG8gVW5pa3JhZnQg
YXMgYW4gZXh0ZXJuYWwgbGlicmFyeS4NClRoaXMgcmVsZWFzZSBpcyBiYXNlZCBvbiB0aGUgTExW
TSBoZWFkZXJzIHdoaWNoIHdlcmUgYWRhcHRlZCB0byB3b3JrIG9uIFVuaWtyYWZ0DQp3aXRoIEdD
Qy4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRv
aXVAc3R1ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kICAgICAgICB8ICAgIDQg
Kw0KIENPTlRSSUJVVElORy5tZCAgICAgICAgfCAgICA0ICsNCiBDb25maWcudWsgICAgICAgICAg
ICAgIHwgICAyNSArDQogTUFJTlRBSU5FUlMubWQgICAgICAgICB8ICAgMTEgKw0KIE1ha2VmaWxl
LnVrICAgICAgICAgICAgfCAgIDY5ICsNCiBSRUFETUUubWQgICAgICAgICAgICAgIHwgICAgNSAr
DQogZXhwb3J0c3ltcy51ayAgICAgICAgICB8ICAgIDEgKw0KIGluY2x1ZGUvYXZ4aW50cmluLmgg
ICAgfCA1MTIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBpbmNs
dWRlL2VtbWludHJpbi5oICAgIHwgNTAyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysNCiBpbmNsdWRlL2ltbWludHJpbi5oICAgIHwgICA3NSArDQogaW5jbHVkZS9tbV9t
YWxsb2MuaCAgICB8ICAgNzUgKw0KIGluY2x1ZGUvbW1pbnRyaW4uaCAgICAgfCAxNTk4ICsrKysr
KysrKysrKysNCiBpbmNsdWRlL25tbWludHJpbi5oICAgIHwgICAzMCArDQogaW5jbHVkZS9wbW1p
bnRyaW4uaCAgICB8ICAzMjEgKysrDQogaW5jbHVkZS9wb3BjbnRpbnRyaW4uaCB8ICAxMDIgKw0K
IGluY2x1ZGUvc21taW50cmluLmggICAgfCAyNTA0ICsrKysrKysrKysrKysrKysrKysrDQogaW5j
bHVkZS90bW1pbnRyaW4uaCAgICB8ICA3OTAgKysrKysrKw0KIGluY2x1ZGUveG1taW50cmluLmgg
ICAgfCAzMTAxICsrKysrKysrKysrKysrKysrKysrKysrKw0KIDE4IGZpbGVzIGNoYW5nZWQsIDE4
ODU3IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kDQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBD
b25maWcudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTWFrZWZpbGUudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVk
ZS9hdnhpbnRyaW4uaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2VtbWludHJpbi5oDQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaW1taW50cmluLmgNCiBjcmVhdGUgbW9kZSAxMDA2
NDQgaW5jbHVkZS9tbV9tYWxsb2MuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL21taW50
cmluLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ubW1pbnRyaW4uaA0KIGNyZWF0ZSBt
b2RlIDEwMDY0NCBpbmNsdWRlL3BtbWludHJpbi5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUvcG9wY250aW50cmluLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zbW1pbnRyaW4u
aA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3RtbWludHJpbi5oDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IGluY2x1ZGUveG1taW50cmluLmgNCg0KZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5t
ZCBiL0NPRElOR19TVFlMRS5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAu
LjU3MzAwNDENCi0tLSAvZGV2L251bGwNCisrKyBiL0NPRElOR19TVFlMRS5tZA0KQEAgLTAsMCAr
MSw0IEBADQorQ29kaW5nIFN0eWxlDQorPT09PT09PT09PT09DQorDQorUGxlYXNlIHJlZmVyIHRv
IHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRv
cnkuDQpkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kDQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNWY1NWVjYQ0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvQ09OVFJJQlVUSU5HLm1kDQpAQCAtMCwwICsxLDQgQEANCitDb250cmlidXRpbmcgdG8g
VW5pa3JhZnQNCis9PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0
aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5
Lg0KZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQNCmluZGV4IDAwMDAwMDAuLjQxM2IxMzcNCi0tLSAvZGV2L251bGwNCisrKyBiL0NvbmZpZy51
aw0KQEAgLTAsMCArMSwyNSBAQA0KK21lbnVjb25maWcgTElCSU5URUxfSU5UUklOU0lDUw0KKyAg
ICBib29sICJJbnRlbCBJbnRyaW5zaWNzIC0gQyBzdHlsZSBmdW5jdGlvbnMgdGhhdCBwcm92aWRl
IGFjY2VzcyBJbnRlbCBpbnN0cnVjdGlvbnMiDQorICAgIGRlZmF1bHQgbg0KKw0KK2lmIExJQklO
VEVMX0lOVFJJTlNJQ1MNCitjb25maWcgU0lNRF9TU0UNCisgICAgYm9vbCAiRW5hYmxlIFNTRSBz
dXBwb3J0Ig0KKyAgICBkZWZhdWx0IG4NCisNCitjb25maWcgU0lNRF9TU0UyDQorICAgIGJvb2wg
IkVuYWJsZSBTU0UyIHN1cHBvcnQiDQorICAgIGRlZmF1bHQgbg0KKw0KK2NvbmZpZyBTSU1EX1NT
RTMNCisgICAgYm9vbCAiRW5hYmxlIFNTRTMgc3VwcG9ydCINCisgICAgZGVmYXVsdCBuDQorDQor
Y29uZmlnIFNJTURfU1NFNA0KKyAgICBib29sICJFbmFibGUgU1NFNCBzdXBwb3J0Ig0KKyAgICBk
ZWZhdWx0IG4NCisNCitjb25maWcgU0lNRF9BVlgNCisgICAgYm9vbCAiRW5hYmxlIEFWWCBzdXBw
b3J0Ig0KKyAgICBkZWZhdWx0IG4NCitlbmRpZg0KZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTLm1k
IGIvTUFJTlRBSU5FUlMubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5h
M2QzYjBhDQotLS0gL2Rldi9udWxsDQorKysgYi9NQUlOVEFJTkVSUy5tZA0KQEAgLTAsMCArMSwx
MSBAQA0KK01haW50YWluZXJzIExpc3QNCis9PT09PT09PT09PT09PT09DQorDQorRm9yIG5vdGVz
IG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byBgTUFJTlRB
SU5FUlMubWRgIGluDQordGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCisNCisJTElCSU5U
RUxfSU5UUklOU0lDUy1VTklLUkFGVA0KKwlNOglGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBu
ZWNsYWIuZXU+DQorCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0
dWQuYWNzLnVwYi5ybz4NCisJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcNCisJRjogKg0K
ZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwLi41ODVjNGYzDQotLS0gL2Rldi9udWxsDQorKysgYi9NYWtlZmls
ZS51aw0KQEAgLTAsMCArMSw2OSBAQA0KKyMgIGxpYmludGVsX2ludHJpbnNpY3MgTWFrZWZpbGUu
dWsNCisjDQorIyAgQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRv
aXVAc3R1ZC5hY3MudXBiLnJvPg0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNp
dHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisj
ICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQNCisjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisjICBhcmUgbWV0Og0KKyMNCisjICAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dA0KKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4NCisjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLg0KKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisjICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKyMgICAgIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQor
Iw0KKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisjICBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQ0KKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUNCisjICBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorIyAg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YNCisjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisjICBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyMg
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpDQorIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCisjICBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCisjDQorIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCisjDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN
CisjIExpYnJhcnkgcmVnaXN0cmF0aW9uDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiskKGV2
YWwgJChjYWxsIGFkZGxpYl9zLGxpYmludGVsX2ludHJpbnNpY3MsJChDT05GSUdfTElCSU5URUxf
SU5UUklOU0lDUykpKQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBMaWJyYXJ5IGlu
Y2x1ZGVzDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitDSU5DTFVERVMtJChDT05GSUdfTElC
SU5URUxfSU5UUklOU0lDUykgKz0gLUkkKExJQklOVEVMX0lOVFJJTlNJQ1NfQkFTRSkvaW5jbHVk
ZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQklOVEVMX0lOVFJJTlNJQ1MpICs9IC1JJChMSUJJ
TlRFTF9JTlRSSU5TSUNTX0JBU0UpL2luY2x1ZGUNCisNCitpZmRlZiBDT05GSUdfU0lNRF9TU0UN
CitDRkxBR1MJCSs9IC1tc3NlIC1tZnBtYXRoPXNzZQ0KK0NYWEZMQUdTCSs9IC1tc3NlIC1tZnBt
YXRoPXNzZQ0KK2VuZGlmDQorDQoraWZkZWYgQ09ORklHX1NJTURfU1NFMg0KK0NGTEFHUwkJKz0g
LW1zc2UyDQorQ1hYRkxBR1MJKz0gLW1zc2UyDQorZW5kaWYNCisNCitpZmRlZiBDT05GSUdfU0lN
RF9TU0UzDQorQ0ZMQUdTCQkrPSAtbXNzZTMNCitDWFhGTEFHUwkrPSAtbXNzZTMNCitlbmRpZg0K
Kw0KK2lmZGVmIENPTkZJR19TSU1EX1NTRTQNCitDRkxBR1MJCSs9IC1tc3NlNA0KK0NYWEZMQUdT
CSs9IC1tc3NlNA0KK2VuZGlmDQorDQoraWZkZWYgQ09ORklHX1NJTURfQVZYDQorQ0ZMQUdTCQkr
PSAtbWF2eA0KK0NYWEZMQUdTCSs9IC1tYXZ4DQorZW5kaWYNCmRpZmYgLS1naXQgYS9SRUFETUUu
bWQgYi9SRUFETUUubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5lYzhj
NDc0DQotLS0gL2Rldi9udWxsDQorKysgYi9SRUFETUUubWQNCkBAIC0wLDAgKzEsNSBAQA0KK2xp
YmludGVsXF9pbnRyaW5pc2NzIGZvciBVbmlrcmFmdA0KKz09PT09PT09PT09PT09PT09PT0NCisN
CitQbGVhc2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3VtZW50
YXRpb24gaW4gdGhlIGBkb2MvYA0KK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFpbiB1bmlrcmFmdCBy
ZXBvc2l0b3J5Lg0KZGlmZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrDQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNjIxZTk0Zg0KLS0tIC9kZXYvbnVs
bA0KKysrIGIvZXhwb3J0c3ltcy51aw0KQEAgLTAsMCArMSBAQA0KK25vbmUNCmRpZmYgLS1naXQg
YS9pbmNsdWRlL2F2eGludHJpbi5oIGIvaW5jbHVkZS9hdnhpbnRyaW4uaA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjY5OTY3NzUNCi0tLSAvZGV2L251bGwNCisrKyBiL2lu
Y2x1ZGUvYXZ4aW50cmluLmgNCkBAIC0wLDAgKzEsNTEyMSBAQA0KKy8qPT09LS0tLSBhdnhpbnRy
aW4uaCAtIEFWWCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09PT0NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh
cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g
ZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICog
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzDQorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4NCisgKiBUSEUgU09GVFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPT09DQorICovDQorDQorI2lmbmRlZiBfX0lNTUlOVFJJTl9IDQorI2Vycm9yICJOZXZlciB1
c2UgPGF2eGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQu
Ig0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgX19BVlhJTlRSSU5fSA0KKyNkZWZpbmUgX19BVlhJTlRS
SU5fSA0KKw0KK3R5cGVkZWYgZG91YmxlIF9fdjRkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jf
c2l6ZV9fICgzMikpKTsNCit0eXBlZGVmIGZsb2F0IF9fdjhzZiBfX2F0dHJpYnV0ZV9fICgoX192
ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCit0eXBlZGVmIGxvbmcgbG9uZyBfX3Y0ZGkgX19hdHRyaWJ1
dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQordHlwZWRlZiBpbnQgX192OHNpIF9fYXR0
cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KK3R5cGVkZWYgc2hvcnQgX192MTZo
aSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCit0eXBlZGVmIGNoYXIg
X192MzJxaSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCisNCisvKiBV
bnNpZ25lZCB0eXBlcyAqLw0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdjRkdSBfX2F0
dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCit0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3Y4c3UgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQordHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBfX3YxNmh1IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18g
KDMyKSkpOw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBfX3YzMnF1IF9fYXR0cmlidXRlX18gKChf
X3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KKw0KKy8qIFdlIG5lZWQgYW4gZXhwbGljaXRseSBzaWdu
ZWQgdmFyaWFudCBmb3IgY2hhci4gTm90ZSB0aGF0IHRoaXMgc2hvdWxkbid0DQorICogYXBwZWFy
IGluIHRoZSBpbnRlcmZhY2UgdGhvdWdoLiAqLw0KK3R5cGVkZWYgc2lnbmVkIGNoYXIgX192MzJx
cyBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpKSk7DQorDQordHlwZWRlZiBmbG9h
dCBfX20yNTYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQordHlwZWRl
ZiBkb3VibGUgX19tMjU2ZCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpKSk7DQor
dHlwZWRlZiBsb25nIGxvbmcgX19tMjU2aSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18o
MzIpKSk7DQorDQorLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5j
dGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KKyNpZmRlZiAgX19HTlVDX18NCisjZGVmaW5lIF9fREVG
QVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5s
aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBf
X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp
Y2lhbF9fKSkNCisjZWxzZQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4IiksIF9f
bWluX3ZlY3Rvcl93aWR0aF9fKDI1NikpKQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRf
XygiYXZ4IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KKyNlbmRpZg0KKw0KKy8qIEFy
aXRobWV0aWMgKi8NCisvLy8gQWRkcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91Ymxl
XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERQRCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxw
YXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFp
bmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQorLy8v
ICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9hZGRfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVy
biAoX19tMjU2ZCkoKF9fdjRkZilfX2ErKF9fdjRkZilfX2IpOw0KK30NCisNCisvLy8gQWRkcyB0
d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkFERFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQorc3RhdGljIF9faW5s
aW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfYWRkX3BzKF9fbTI1NiBfX2Es
IF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c2YpX19hKyhfX3Y4c2Yp
X19iKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHgg
ZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQRCA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
c3VidHJhaGVuZC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2Vlbg0KKy8vLyAgICBib3RoIG9wZXJh
bmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9zdWJfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2
ZCkoKF9fdjRkZilfX2EtKF9fdjRkZilfX2IpOw0KK30NCisNCisvLy8gU3VidHJhY3RzIHR3byAy
NTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbnVl
bmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4N
CisvLy8gICAgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbTI1Nl9zdWJfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2EtKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8g
QWRkcyB0aGUgZXZlbi1pbmRleGVkIHZhbHVlcyBhbmQgc3VidHJhY3RzIHRoZSBvZGQtaW5kZXhl
ZCB2YWx1ZXMgb2YNCisvLy8gICAgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREU1VCUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBhbHRlcm5hdGluZyBzdW1zDQorLy8v
ICAgIGFuZCBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5s
aW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2FkZHN1Yl9wZChfX20yNTZk
IF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMy
X2FkZHN1YnBkMjU2KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBBZGRz
IHRoZSBldmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZh
bHVlcyBvZg0KKy8vLyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNVQlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
cmlnaHQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYWx0ZXJuYXRpbmcgc3VtcyBhbmQNCisvLy8gICAg
ZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2FkZHN1Yl9wcyhfX20yNTYgX19hLCBfX20y
NTYgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2FkZHN1YnBzMjU2
KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQorfQ0KKw0KKy8vLyBEaXZpZGVzIHR3byAyNTYt
Yml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkRJVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGl2aWRl
bmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgZGl2aXNvci4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcXVvdGllbnRzIG9mIGJvdGgNCisv
Ly8gICAgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X2Rpdl9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0
dXJuIChfX20yNTZkKSgoX192NGRmKV9fYS8oX192NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBEaXZp
ZGVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWRElWUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIGRpdmlkZW5kLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aXNvci4NCisvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2Yg
Ym90aA0KKy8vLyAgICBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbTI1Nl9kaXZfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2EvKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8g
Q29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0gYW5kIHJldHVybnMg
dGhlIGdyZWF0ZXINCisvLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNQVhQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFu
ZHMuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIG1heGltdW0gdmFsdWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4N
CitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbWF4
X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NmQpX19i
dWlsdGluX2lhMzJfbWF4cGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCit9DQorDQor
Ly8vIENvbXBhcmVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0gYW5kIHJldHVy
bnMgdGhlIGdyZWF0ZXINCisvLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJh
bmRzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIG1heGltdW0gdmFsdWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4N
CitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9tYXhf
cHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NilfX2J1aWx0
aW5faWEzMl9tYXhwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8g
Q29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0gYW5kIHJldHVybnMg
dGhlIGxlc3Nlcg0KKy8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFp
bmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5k
cy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFp
bmluZyB0aGUgbWluaW11bSB2YWx1ZXMNCisvLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0K
K3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9taW5f
cGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZClfX2J1
aWx0aW5faWEzMl9taW5wZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KK30NCisNCisv
Ly8gQ29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSBhbmQgcmV0dXJu
cyB0aGUgbGVzc2VyDQorLy8vICAgIG9mIGVhY2ggcGFpciBvZiB2YWx1ZXMuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5k
cy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBtaW5pbXVtIHZhbHVlcw0KKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQor
c3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbWluX3Bz
KF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGlu
X2lhMzJfbWlucHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iKTsNCit9DQorDQorLy8vIE11
bHRpcGxpZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJh
bmRzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250
YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBf
X2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9tdWxfcGQoX19tMjU2
ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZCkoKF9fdjRkZilfX2Eg
KiAoX192NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBNdWx0aXBsaWVzIHR3byAyNTYtYml0IHZlY3Rv
cnMgb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMUFMg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoDQor
Ly8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X211bF9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVy
biAoX19tMjU2KSgoX192OHNmKV9fYSAqIChfX3Y4c2YpX19iKTsNCit9DQorDQorLy8vIENhbGN1
bGF0ZXMgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Ig
b2YNCisvLy8gICAgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlNRUlRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzcXVhcmUgcm9vdHMgb2Yg
dGhlDQorLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmUgX19t
MjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc3FydF9wZChfX20yNTZkIF9fYSkNCit7
DQorICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc3FydHBkMjU2KChfX3Y0ZGYpX19h
KTsNCit9DQorDQorLy8vIENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgdmFsdWVz
IGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAgWzggeCBmbG9hdF0uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBzcXVhcmUgcm9vdHMgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCitz
dGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zcXJ0X3Bz
KF9fbTI1NiBfX2EpDQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfc3FydHBz
MjU2KChfX3Y4c2YpX19hKTsNCit9DQorDQorLy8vIENhbGN1bGF0ZXMgdGhlIHJlY2lwcm9jYWwg
c3F1YXJlIHJvb3RzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0DQorLy8vICAgIHZlY3RvciBv
ZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZSU1FSVFBTIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByZWNpcHJvY2FsIHNxdWFyZQ0KKy8vLyAgICBy
b290cyBvZiB0aGUgdmFsdWVzIGluIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3JzcXJ0X3BzKF9fbTI1NiBfX2EpDQorew0K
KyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfcnNxcnRwczI1NigoX192OHNmKV9fYSk7
DQorfQ0KKw0KKy8vLyBDYWxjdWxhdGVzIHRoZSByZWNpcHJvY2FscyBvZiB0aGUgdmFsdWVzIGlu
IGEgMjU2LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUkNQUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJl
Y2lwcm9jYWxzIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGlj
IF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfcmNwX3BzKF9fbTI1
NiBfX2EpDQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfcmNwcHMyNTYoKF9f
djhzZilfX2EpOw0KK30NCisNCisvLy8gUm91bmRzIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkDQorLy8vICAgIGJ5IHRoZSBieXRlIG9w
ZXJhbmQuIFRoZSBzb3VyY2UgdmFsdWVzIGFyZSByb3VuZGVkIHRvIGludGVnZXIgdmFsdWVzIGFu
ZA0KKy8vLyAgICByZXR1cm5lZCBhcyA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gXGNvZGUNCisvLy8gX19tMjU2ZCBfbW0yNTZfcm91bmRfcGQoX19tMjU2ZCBWLCBjb25z
dCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIFYNCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8v
IFxwYXJhbSBNDQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJv
dW5kaW5nIG9wZXJhdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNzo0XSBhcmUgcmVzZXJ2ZWQuIFxu
DQorLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbg0KKy8v
LyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkLiBcbg0KKy8vLyAgICAgIDE6
IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZC4gXG4NCisvLy8gICAgQml0IFsyXSBpcyB0aGUg
cm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQorLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0g
b2YgXGEgTS4gXG4NCisvLy8gICAgICAxOiBVc2UgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZy4g
XG4NCisvLy8gICAgQml0cyBbMTowXSBjb250YWluIHRoZSByb3VuZGluZyBjb250cm9sIGRlZmlu
aXRpb246IFxuDQorLy8vICAgICAgMDA6IE5lYXJlc3QuIFxuDQorLy8vICAgICAgMDE6IERvd253
YXJkICh0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkpLiBcbg0KKy8vLyAgICAgIDEwOiBVcHdhcmQg
KHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkuIFxuDQorLy8vICAgICAgMTE6IFRydW5jYXRlZC4N
CisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmlu
ZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW0yNTZfcm91bmRfcGQoViwgTSkgXA0K
KyAgICAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yb3VuZHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQp
KFYpLCAoTSkpDQorDQorLy8vIFJvdW5kcyB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGFzDQorLy8vICAgIHNwZWNpZmllZCBieSB0aGUgYnl0ZSBv
cGVyYW5kLiBUaGUgc291cmNlIHZhbHVlcyBhcmUgcm91bmRlZCB0byBpbnRlZ2VyDQorLy8vICAg
IHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMgZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1
NiBfbW0yNTZfcm91bmRfcHMoX19tMjU2IFYsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUN
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVg0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbnRl
Z2VyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSByb3VuZGluZyBvcGVyYXRpb24uIFxuDQorLy8v
ICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0KKy8vLyAgICBCaXQgWzNdIGlzIGEgcHJl
Y2lzaW9uIGV4Y2VwdGlvbiB2YWx1ZTogXG4NCisvLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNl
cHRpb24gaXMgdXNlZC4gXG4NCisvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0
ZWQuIFxuDQorLy8vICAgIEJpdCBbMl0gaXMgdGhlIHJvdW5kaW5nIGNvbnRyb2wgc291cmNlOiBc
bg0KKy8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0uIFxuDQorLy8vICAgICAgMTog
VXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcuIFxuDQorLy8vICAgIEJpdHMgWzE6MF0gY29u
dGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KKy8vLyAgICAgIDAwOiBO
ZWFyZXN0LiBcbg0KKy8vLyAgICAgIDAxOiBEb3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGluZmlu
aXR5KS4gXG4NCisvLy8gICAgICAxMDogVXB3YXJkICh0b3dhcmQgcG9zaXRpdmUgaW5maW5pdHkp
LiBcbg0KKy8vLyAgICAgIDExOiBUcnVuY2F0ZWQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQorI2Rl
ZmluZSBfbW0yNTZfcm91bmRfcHMoViwgTSkgXA0KKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl9y
b3VuZHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoViksIChNKSkNCisNCisvLy8gUm91bmRzIHVwIHRo
ZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBUaGUN
CisvLy8gICAgc291cmNlIHZhbHVlcyBhcmUgcm91bmRlZCB1cCB0byBpbnRlZ2VyIHZhbHVlcyBh
bmQgcmV0dXJuZWQgYXMgNjQtYml0DQorLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NmQgX21tMjU2X2NlaWxfcGQoX19tMjU2ZCBWKTsNCisv
Ly8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUk9VTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVg0KKy8v
LyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCB1cCB2
YWx1ZXMuDQorI2RlZmluZSBfbW0yNTZfY2VpbF9wZChWKSAgX21tMjU2X3JvdW5kX3BkKChWKSwg
X01NX0ZST1VORF9DRUlMKQ0KKw0KKy8vLyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBp
biBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gICAgVGhlIHNvdXJjZSB2
YWx1ZXMgYXJlIHJvdW5kZWQgZG93biB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMN
CisvLy8gICAgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQor
Ly8vIF9fbTI1NmQgX21tMjU2X2Zsb29yX3BkKF9fbTI1NmQgVik7DQorLy8vIFxlbmRjb2RlDQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYNCisvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgZG93bg0KKy8vLyAgICB2YWx1
ZXMuDQorI2RlZmluZSBfbW0yNTZfZmxvb3JfcGQoVikgX21tMjU2X3JvdW5kX3BkKChWKSwgX01N
X0ZST1VORF9GTE9PUikNCisNCisvLy8gUm91bmRzIHVwIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZQ0KKy8vLyAgICBzb3VyY2UgdmFsdWVz
IGFyZSByb3VuZGVkIHVwIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1cm5lZCBhcw0KKy8vLyAg
ICBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2IF9tbTI1Nl9jZWlsX3BzKF9fbTI1
NiBWKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gVg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccmV0
dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJvdW5k
ZWQgdXAgdmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2X2NlaWxfcHMoVikgIF9tbTI1Nl9yb3VuZF9w
cygoViksIF9NTV9GUk9VTkRfQ0VJTCkNCisNCisvLy8gUm91bmRzIGRvd24gdGhlIHZhbHVlcyBz
dG9yZWQgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlDQorLy8vICAgIHNv
dXJjZSB2YWx1ZXMgYXJlIHJvdW5kZWQgZG93biB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJu
ZWQgYXMNCisvLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NiBfbW0yNTZf
Zmxvb3JfcHMoX19tMjU2IFYpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBWDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgcm91bmRlZCBkb3duIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1Nl9mbG9vcl9wcyhW
KSBfbW0yNTZfcm91bmRfcHMoKFYpLCBfTU1fRlJPVU5EX0ZMT09SKQ0KKw0KKy8qIExvZ2ljYWwg
Ki8NCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9m
IFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVy
bnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lz
ZSBBTkQgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3Rh
dGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2FuZF9wZChf
X20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKSgoX192NGR1
KV9fYSAmIChfX3Y0ZHUpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQg
b2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZBTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBiZXR3ZWVu
IGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfYW5kX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJu
IChfX20yNTYpKChfX3Y4c3UpX19hICYgKF9fdjhzdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9y
bXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSwg
dXNpbmcNCisvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWlu
ZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkFORE5QRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxl
ZnQgc291cmNlIG9wZXJhbmQuIFRoZQ0KKy8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoaXMg
dmFsdWUgaXMgdXNlZCBpbiB0aGUgYml0d2lzZSBBTkQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmlnaHQg
c291cmNlIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMg
b2YgdGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmly
c3QNCisvLy8gICAgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW0yNTZfYW5kbm90X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7
DQorICByZXR1cm4gKF9fbTI1NmQpKH4oX192NGR1KV9fYSAmIChfX3Y0ZHUpX19iKTsNCit9DQor
DQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBb
OCB4IGZsb2F0XSwgdXNpbmcNCisvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZh
bHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkFORE5QUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4gVGhlDQorLy8vICAgIG9uZSdzIGNvbXBsZW1l
bnQgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBiaXR3aXNlIEFORC4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KKy8vLyAg
ICB2YWx1ZXMgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBv
ZiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9hbmRub3RfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9f
YikNCit7DQorICByZXR1cm4gKF9fbTI1NikofihfX3Y4c3UpX19hICYgKF9fdjhzdSlfX2IpOw0K
K30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAyNTYtYml0IHZlY3RvcnMg
b2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk9SUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdp
c2UgT1Igb2YgdGhlDQorLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3Rh
dGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X29yX3BkKF9f
bTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZHUp
X19hIHwgKF9fdjRkdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9m
IHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWT1JQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90
aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl9vcl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVybiAoX19t
MjU2KSgoX192OHN1KV9fYSB8IChfX3Y4c3UpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEg
Yml0d2lzZSBYT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9mIHRoZQ0KKy8vLyAg
ICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZk
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl94b3JfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQg
X19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZCkoKF9fdjRkdSlfX2EgXiAoX192NGR1KV9fYik7
DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgWE9SIG9mIHR3byAyNTYtYml0IHZlY3Rv
cnMgb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0
dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdp
c2UgWE9SIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0
YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3hvcl9wcyhf
X20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KSgoX192OHN1KV9f
YSBeIChfX3Y4c3UpX19iKTsNCit9DQorDQorLyogSG9yaXpvbnRhbCBhcml0aG1ldGljICovDQor
Ly8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFp
bmVkIGluIHR3bw0KKy8vLyAgICAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBo
b3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGV2ZW4taW5k
ZXhlZA0KKy8vLyAgICBlbGVtZW50cyBvZiBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250
YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUgb2RkLWluZGV4ZWQNCisv
Ly8gICAgZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBob3Jpem9u
dGFsIHN1bXMgb2YNCisvLy8gICAgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19t
MjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfaGFkZF9wZChfX20yNTZkIF9fYSwgX19t
MjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2hhZGRwZDI1
NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IGFk
ZHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gdHdvDQorLy8vICAg
IDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZIQUREUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhl
IHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGVsZW1lbnRzIHdpdGgNCisvLy8gICAgaW5kZXgg
MCwgMSwgNCwgNSBvZiBhIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0K
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhl
IHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGVsZW1lbnRzIHdpdGgNCisvLy8gICAgaW5kZXgg
MiwgMywgNiwgNyBvZiBhIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1
bXMgb2YNCisvLy8gICAgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9oYWRkX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfaGFkZHBzMjU2KChfX3Y4c2Yp
X19hLCAoX192OHNmKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3RzIHRo
ZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0KKy8vLyAgICAyNTYt
Yml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkhTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlDQorLy8vICAgIGV2ZW4taW5kZXhl
ZCBlbGVtZW50cyBvZiBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5j
ZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUNCisvLy8gICAgb2RkLWlu
ZGV4ZWQgZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBob3Jpem9u
dGFsDQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5s
aW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2hzdWJfcGQoX19tMjU2ZCBf
X2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9o
c3VicGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCit9DQorDQorLy8vIEhvcml6b250
YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4g
dHdvDQorLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZIU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFs
IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlDQorLy8v
ICAgIGVsZW1lbnRzIHdpdGggaW5kZXggMCwgMSwgNCwgNSBvZiBhIHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRo
ZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQg
aW4gdGhlDQorLy8vICAgIGVsZW1lbnRzIHdpdGggaW5kZXggMiwgMywgNiwgNyBvZiBhIHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsDQorLy8vICAgIGRpZmZlcmVuY2VzIG9m
IGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfaHN1Yl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVy
biAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2hzdWJwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilf
X2IpOw0KK30NCisNCisvKiBWZWN0b3IgcGVybXV0YXRpb25zICovDQorLy8vIENvcGllcyB0aGUg
dmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGFzIHNwZWNpZmllZA0K
Ky8vLyAgICBieSB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
DQorLy8vIFxwYXJhbSBfX2MNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJh
bmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCisvLy8gICAgY29waWVkLiBc
bg0KKy8vLyAgICBCaXQgWzFdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0dXJuZWQNCisvLy8gICAg
ICAgICB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICBCaXQgWzY1XTogXG4NCisvLy8gICAgICAwOiBCaXRzIFs2Mzow
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUNCisvLy8g
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUNCisvLy8gICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorc3RhdGljIF9faW5s
aW5lIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX3Blcm11dGV2YXJfcGQoX19t
MTI4ZCBfX2EsIF9fbTEyOGkgX19jKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5f
aWEzMl92cGVybWlsdmFycGQoKF9fdjJkZilfX2EsIChfX3YyZGkpX19jKTsNCit9DQorDQorLy8v
IENvcGllcyB0aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFz
IHNwZWNpZmllZA0KKy8vLyAgICBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5k
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2MNCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIg
dmVjdG9yIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCisvLy8g
ICAgY29waWVkLiBcbg0KKy8vLyAgICBCaXQgWzFdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzYz
OjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0dXJu
ZWQNCisvLy8gICAgICAgICB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlDQorLy8vICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXQgWzY1XTogXG4NCisvLy8gICAgICAw
OiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBv
ZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0
cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0
aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdCBbMTI5XTog
XG4NCisvLy8gICAgICAwOiBCaXRzIFsxOTE6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KKy8vLyAgICAgIDE6IEJpdHMgWzI1NToxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0
byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQorLy8vICAgIEJpdCBbMTkzXTogXG4NCisvLy8gICAgICAwOiBCaXRzIFsxOTE6MTI4XSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlDQorLy8vICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDE6IEJpdHMgWzI1NToxOTJdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUNCisvLy8gICAgcmV0
dXJuZWQgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9wZXJtdXRldmFyX3BkKF9fbTI1NmQgX19h
LCBfX20yNTZpIF9fYykNCit7DQorICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfdnBl
cm1pbHZhcnBkMjU2KChfX3Y0ZGYpX19hLCAoX192NGRpKV9fYyk7DQorfQ0KKw0KKy8vLyBDb3Bp
ZXMgdGhlIHZhbHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBh
cw0KKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFu
ZC4NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxwYXJhbSBfX2MNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCisvLy8gICAgY29w
aWVkLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTow
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9m
IHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCisvLy8gICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1
cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMgWzMzOjMyXTogXG4NCisvLy8gICAgICAwMDog
Qml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0
aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRz
IFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUN
CisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFs5
NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisv
Ly8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6
OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQorLy8v
ICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbNjU6NjRdOiBcbg0K
Ky8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8v
ICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
OTU6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAg
ICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6
NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAg
MTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRz
IFs5Nzo5Nl06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBj
b3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29w
aWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9y
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMxMjgNCitfbW1fcGVybXV0ZXZhcl9wcyhfX20xMjggX19hLCBfX20xMjhpIF9fYykN
Cit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycHMoKF9fdjRz
ZilfX2EsIChfX3Y0c2kpX19jKTsNCit9DQorDQorLy8vIENvcGllcyB0aGUgdmFsdWVzIHN0b3Jl
ZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGFzDQorLy8vICAgIHNwZWNpZmll
ZCBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8g
XHBhcmFtIF9fYw0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVj
aWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8v
ICAgIEJpdHMgWzE6MF06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJu
ZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBj
b3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCisvLy8gICAgQml0cyBbMzM6MzJdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFs2NTo2NF06IFxuDQorLy8vICAgICAgMDA6
IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2Yg
dGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0
cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhl
DQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBb
OTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQor
Ly8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMTI3
Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMgWzk3Ojk2XTogXG4N
CisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzEyNzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisv
Ly8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRz
IFsxMjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8v
ICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
MTI3Ojk2XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAg
ICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAg
IEJpdHMgWzEyOToxMjhdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUNCisvLy8gICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQorLy8vICAgICAg
ICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbMTYxOjE2MF06IFxuDQorLy8v
ICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRz
IFsxOTE6MTYwXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8v
LyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbMTkxOjE2MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisv
Ly8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzE5MToxNjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQor
Ly8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBi
aXRzIFsxOTE6MTYwXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0K
Ky8vLyAgICBCaXRzIFsxOTM6MTkyXTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0g
b2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KKy8vLyAg
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyMjM6MTkyXSBvZiB0aGUNCisvLy8g
ICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTky
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQorLy8v
ICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMjU1OjIy
NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMgWzIyNToyMjRdOiBc
bg0KKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCisvLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGll
ZCB0byBiaXRzIFsyNTU6MjI0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9y
LiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tMjU2X3Blcm11dGV2YXJfcHMoX19tMjU2IF9fYSwgX19tMjU2aSBfX2Mp
DQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzMjU2KChf
X3Y4c2YpX19hLCAoX192OHNpKV9fYyk7DQorfQ0KKw0KKy8vLyBDb3BpZXMgdGhlIHZhbHVlcyBp
biBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBhcyBzcGVjaWZpZWQNCisvLy8gICAg
YnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fcGVybXV0
ZV9wZChfX20xMjhkIEEsIGNvbnN0IGludCBDKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBDDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRl
Z2VyIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCisvLy8gICAg
Y29waWVkLiBcbg0KKy8vLyAgICBCaXQgWzBdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0dXJuZWQN
CisvLy8gICAgICAgICB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlDQorLy8vICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXQgWzFdOiBcbg0KKy8vLyAgICAgIDA6IEJp
dHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRo
ZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxOiBCaXRzIFsx
Mjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0K
Ky8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCisjZGVm
aW5lIF9tbV9wZXJtdXRlX3BkKEEsIEMpIFwNCisgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3Zw
ZXJtaWxwZCgoX192MmRmKShfX20xMjhkKShBKSwgKGludCkoQykpDQorDQorLy8vIENvcGllcyB0
aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFzIHNwZWNpZmll
ZCBieQ0KKy8vLyAgICB0aGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20yNTZk
IF9tbTI1Nl9wZXJtdXRlX3BkKF9fbTI1NmQgQSwgY29uc3QgaW50IEMpOw0KKy8vLyBcZW5kY29k
ZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJN
SUxQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIEMNCisvLy8gICAgQW4g
aW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0
byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8vICAgIEJpdCBbMF06IFxuDQorLy8vICAgICAg
MDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9m
IHRoZSByZXR1cm5lZA0KKy8vLyAgICAgICAgIHZlY3Rvci4gXG4NCisvLy8gICAgICAxOiBCaXRz
IFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUN
CisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdCBbMV06IFxuDQor
Ly8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzEyNzo2NF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAg
ICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEy
Nzo2NF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBC
aXQgWzJdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzE5MToxMjhdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMjU1OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCisvLy8gICAgQml0IFszXTogXG4NCisvLy8gICAgICAwOiBCaXRzIFsxOTE6MTI4
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlDQorLy8v
ICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDE6IEJpdHMgWzI1NToxOTJd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUNCisvLy8g
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorI2RlZmluZSBf
bW0yNTZfcGVybXV0ZV9wZChBLCBDKSBcDQorICAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92cGVy
bWlscGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoQSksIChpbnQpKEMpKQ0KKw0KKy8vLyBDb3BpZXMg
dGhlIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFzIHNwZWNpZmll
ZCBieQ0KKy8vLyAgICB0aGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjgg
X21tX3Blcm11dGVfcHMoX19tMTI4IEEsIGNvbnN0IGludCBDKTsNCisvLy8gXGVuZGNvZGUNCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIEMNCisvLy8gICAgQW4gaW1tZWRp
YXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0K
Ky8vLyAgICBjb3BpZWQuIFxuDQorLy8vICAgIEJpdHMgWzE6MF06IFxuDQorLy8vICAgICAgMDA6
IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0
aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRz
IFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0K
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1
OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8v
ICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbMzoyXTogXG4NCisvLy8g
ICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYz
OjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAg
IDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMy
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEw
OiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBv
ZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBC
aXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2Yg
dGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbNTo0
XTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRv
IGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0K
Ky8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8v
LyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRz
IFs5NTo2NF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8g
ICAgQml0cyBbNzo2XTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2Ug
YXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9wZXJtdXRlX3BzKEEsIEMp
IFwNCisgIChfX20xMjgpX19idWlsdGluX2lhMzJfdnBlcm1pbHBzKChfX3Y0c2YpKF9fbTEyOCko
QSksIChpbnQpKEMpKQ0KKw0KKy8vLyBDb3BpZXMgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVj
dG9yIG9mIFs4IHggZmxvYXRdIGFzIHNwZWNpZmllZCBieQ0KKy8vLyAgICB0aGUgaW1tZWRpYXRl
IGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20yNTYgX21tMjU2X3Blcm11dGVfcHMoX19tMjU2IEEs
IGNvbnN0IGludCBDKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4N
CisvLy8gXHBhcmFtIEMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVj
aWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8v
ICAgIEJpdHMgWzE6MF06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJu
ZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBj
b3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCisvLy8gICAgQml0cyBbMzoyXTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2Yg
dGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbNTo0XTogXG4NCisvLy8gICAgICAwMDogQml0
cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUN
CisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2
MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisv
Ly8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2
NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8g
ICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQorLy8vICAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbNzo2XTogXG4NCisvLy8g
ICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEy
Nzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAg
ICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6
OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAg
MTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEx
OiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZd
IG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMg
WzE6MF06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2Ug
YXJlIGNvcGllZCB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJu
ZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRz
IFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTkxOjE2MF0gb2Yg
dGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0
cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxNjBdIG9m
IHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJp
dHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBv
ZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBC
aXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTkxOjE2MF0g
b2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBb
NTo0XTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsyMjM6MTkyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMgWzc6Nl06IFxuDQorLy8vICAgICAgMDA6IEJpdHMg
WzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MjI0XSBvZiB0
aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRz
IFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2Yg
dGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0
cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9m
IHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJp
dHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MjI0XSBv
ZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMu
DQorI2RlZmluZSBfbW0yNTZfcGVybXV0ZV9wcyhBLCBDKSBcDQorICAoX19tMjU2KV9fYnVpbHRp
bl9pYTMyX3ZwZXJtaWxwczI1NigoX192OHNmKShfX20yNTYpKEEpLCAoaW50KShDKSkNCisNCisv
Ly8gUGVybXV0ZXMgMTI4LWJpdCBkYXRhIHZhbHVlcyBzdG9yZWQgaW4gdHdvIDI1Ni1iaXQgdmVj
dG9ycyBvZg0KKy8vLyAgICBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRp
YXRlIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20yNTZkIF9tbTI1Nl9wZXJtdXRlMmYxMjhfcGQo
X19tMjU2ZCBWMSwgX19tMjU2ZCBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNMkYxMjgg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gVjINCisvLy8gICAgQSAyNTYt
Yml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1t
ZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBi
ZQ0KKy8vLyAgICBwZXJtdXRlZC4gXG4NCisvLy8gICAgQml0cyBbMTowXTogXG4NCisvLy8gICAg
ICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAgIDAx
OiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3
OjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgICAxMDog
Qml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0g
b2YgdGhlDQorLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAgIDExOiBCaXRz
IFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9m
IHRoZQ0KKy8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNTo0XTog
XG4NCisvLy8gICAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGll
ZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxu
DQorLy8vICAgICAgMDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGll
ZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxu
DQorLy8vICAgICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQg
dG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLiBcbg0K
Ky8vLyAgICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQg
dG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgIGRlc3RpbmF0aW9uLg0KKy8v
LyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb3BpZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2X3Blcm11dGUyZjEyOF9wZChWMSwgVjIs
IE0pIFwNCisgIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtMmYxMjhfcGQyNTYoKF9fdjRk
ZikoX19tMjU2ZCkoVjEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFYyKSwgKGludCkoTSkpDQorDQorLy8vIFBlcm11dGVz
IDEyOC1iaXQgZGF0YSB2YWx1ZXMgc3RvcmVkIGluIHR3byAyNTYtYml0IHZlY3RvcnMgb2YNCisv
Ly8gICAgWzggeCBmbG9hdF0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIGludGVnZXIg
b3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBcY29kZQ0KKy8vLyBfX20yNTYgX21tMjU2X3Blcm11dGUyZjEyOF9wcyhfX20yNTYgVjEsIF9f
bTI1NiBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNMkYxMjggPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0uDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBv
cGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQorLy8vICAgIHBlcm11
dGVkLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KKy8vLyAgICAwMDogQml0cyBbMTI3OjBd
IG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQorLy8v
ICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFu
ZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgZGVzdGlu
YXRpb24uIFxuDQorLy8vICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxuDQor
Ly8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMTI3OjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0
cyBbNTo0XTogXG4NCisvLy8gICAgMDA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYxIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBc
bg0KKy8vLyAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVk
IHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8g
ICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBb
MjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAxMTogQml0
cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhd
IG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KKyNkZWZp
bmUgX21tMjU2X3Blcm11dGUyZjEyOF9wcyhWMSwgVjIsIE0pIFwNCisgIChfX20yNTYpX19idWls
dGluX2lhMzJfdnBlcm0yZjEyOF9wczI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVjIp
LCAoaW50KShNKSkNCisNCisvLy8gUGVybXV0ZXMgMTI4LWJpdCBkYXRhIHZhbHVlcyBzdG9yZWQg
aW4gdHdvIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3JzLA0KKy8vLyAgICBhcyBzcGVjaWZpZWQgYnkg
dGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2aSBfbW0yNTZfcGVybXV0
ZTJmMTI4X3NpMjU2KF9fbTI1NmkgVjEsIF9fbTI1NmkgVjIsIGNvbnN0IGludCBNKTsNCisvLy8g
XGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUEVSTTJGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8v
LyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVk
aWF0ZSBpbnRlZ2VyIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUg
Y29waWVkLg0KKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KKy8vLyAgICAwMDogQml0cyBbMTI3OjBd
IG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQorLy8v
ICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFu
ZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgZGVzdGlu
YXRpb24uIFxuDQorLy8vICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxuDQor
Ly8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMTI3OjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0
cyBbNTo0XTogXG4NCisvLy8gICAgMDA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYxIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBc
bg0KKy8vLyAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVk
IHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8g
ICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBb
MjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAxMTogQml0
cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhd
IG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorI2RlZmluZSBfbW0y
NTZfcGVybXV0ZTJmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXA0KKyAgKF9fbTI1NmkpX19idWlsdGlu
X2lhMzJfdnBlcm0yZjEyOF9zaTI1NigoX192OHNpKShfX20yNTZpKShWMSksIFwNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzaSkoX19tMjU2aSkoVjIp
LCAoaW50KShNKSkNCisNCisvKiBWZWN0b3IgQmxlbmQgKi8NCisvLy8gTWVyZ2VzIDY0LWJpdCBk
b3VibGUtcHJlY2lzaW9uIGRhdGEgdmFsdWVzIHN0b3JlZCBpbiBlaXRoZXIgb2YgdGhlDQorLy8v
ICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkg
dGhlIGltbWVkaWF0ZQ0KKy8vLyAgICBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2ZCBfbW0y
NTZfYmxlbmRfcGQoX19tMjU2ZCBWMSwgX19tMjU2ZCBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBc
ZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZCTEVORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIFYyDQorLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gTQ0KKy8v
LyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbMzowXSBz
cGVjaWZ5aW5nIGhvdyB0aGUNCisvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBw
b3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQorLy8vICAgIGluZGV4
IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRp
bmcgNjQtYml0DQorLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8g
dGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBXaGVuIGEgbWFz
ayBiaXQgaXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4NCisvLy8gICAg
b3BlcmFuZCBcYSBWMiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIGRlc3Rp
bmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2X2JsZW5kX3BkKFYx
LCBWMiwgTSkgXA0KKyAgKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYmxlbmRwZDI1NigoX192NGRm
KShfX20yNTZkKShWMSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9fdjRkZikoX19tMjU2ZCkoVjIpLCAoaW50KShNKSkNCisNCisvLy8gTWVyZ2VzIDMyLWJpdCBz
aW5nbGUtcHJlY2lzaW9uIGRhdGEgdmFsdWVzIHN0b3JlZCBpbiBlaXRoZXIgb2YgdGhlDQorLy8v
ICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIGFzIHNwZWNpZmllZCBieSB0
aGUgaW1tZWRpYXRlDQorLy8vICAgIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20yNTYgX21tMjU2
X2JsZW5kX3BzKF9fbTI1NiBWMSwgX19tMjU2IFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRj
b2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJM
RU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBB
biBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbNzowXSBzcGVjaWZ5
aW5nIGhvdyB0aGUNCisvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlv
biBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQorLy8vICAgIGluZGV4IG9mIGEg
Y29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRpbmcgMzIt
Yml0DQorLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8gdGhlIHNh
bWUgcG9zaXRpb24gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBXaGVuIGEgbWFzayBiaXQg
aXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4NCisvLy8gICAgb3BlcmFu
ZCBcYSBWMiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIGRlc3RpbmF0aW9u
Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorI2RlZmluZSBfbW0yNTZfYmxlbmRfcHMoVjEsIFYyLCBN
KSBcDQorICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2JsZW5kcHMyNTYoKF9fdjhzZikoX19tMjU2
KShWMSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShf
X20yNTYpKFYyKSwgKGludCkoTSkpDQorDQorLy8vIE1lcmdlcyA2NC1iaXQgZG91YmxlLXByZWNp
c2lvbiBkYXRhIHZhbHVlcyBzdG9yZWQgaW4gZWl0aGVyIG9mIHRoZQ0KKy8vLyAgICB0d28gMjU2
LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSAyNTYtYml0
IHZlY3Rvcg0KKy8vLyAgICBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkJMRU5EVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2MN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyAyNTUsIDE5
MSwgMTI3LCBhbmQgNjMgc3BlY2lmeWluZw0KKy8vLyAgICBob3cgdGhlIHZhbHVlcyBhcmUgdG8g
YmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzDQorLy8v
ICAgIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBhIGNvcGllZCB2YWx1ZS4gV2hlbiBh
IG1hc2sgYml0IGlzIDAsIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIDY0LWJpdCBlbGVtZW50
IGluIG9wZXJhbmQgXGEgX19hIGlzIGNvcGllZCB0byB0aGUgc2FtZQ0KKy8vLyAgICBwb3NpdGlv
biBpbiB0aGUgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9u
ZGluZw0KKy8vLyAgICA2NC1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fYiBpcyBjb3BpZWQg
dG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBj
b3BpZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9ibGVuZHZfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iLCBfX20yNTZkIF9f
YykNCit7DQorICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYmxlbmR2cGQyNTYoDQor
ICAgIChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYiwgKF9fdjRkZilfX2MpOw0KK30NCisNCisvLy8g
TWVyZ2VzIDMyLWJpdCBzaW5nbGUtcHJlY2lzaW9uIGRhdGEgdmFsdWVzIHN0b3JlZCBpbiBlaXRo
ZXIgb2YgdGhlDQorLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIGFz
IHNwZWNpZmllZCBieSB0aGUgMjU2LWJpdCB2ZWN0b3INCisvLy8gICAgb3BlcmFuZC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFZQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4NCisvLy8gXHBhcmFtIF9fYw0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9wZXJhbmQs
IHdpdGggbWFzayBiaXRzIDI1NSwgMjIzLCAxOTEsIDE1OSwgMTI3LCA5NSwgNjMsDQorLy8vICAg
IGFuZCAzMSBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBw
b3NpdGlvbiBvZiB0aGUNCisvLy8gICAgbWFzayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlIG1vc3Qg
c2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuDQorLy8vICAgIGEgbWFzayBi
aXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBf
X2EgaXMNCisvLy8gICAgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSBkZXN0aW5h
dGlvbi4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIDMy
LWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19iIGlzIGNvcGllZCB0byB0aGUgc2FtZQ0KKy8v
LyAgICBwb3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCitz
dGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9ibGVuZHZf
cHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYiwgX19tMjU2IF9fYykNCit7DQorICByZXR1cm4gKF9f
bTI1NilfX2J1aWx0aW5faWEzMl9ibGVuZHZwczI1NigNCisgICAgKF9fdjhzZilfX2EsIChfX3Y4
c2YpX19iLCAoX192OHNmKV9fYyk7DQorfQ0KKw0KKy8qIFZlY3RvciBEb3QgUHJvZHVjdCAqLw0K
Ky8vLyBDb21wdXRlcyB0d28gZG90IHByb2R1Y3RzIGluIHBhcmFsbGVsLCB1c2luZyB0aGUgbG93
ZXIgYW5kIHVwcGVyDQorLy8vICAgIGhhbHZlcyBvZiB0d28gWzggeCBmbG9hdF0gdmVjdG9ycyBh
cyBpbnB1dCB0byB0aGUgdHdvIGNvbXB1dGF0aW9ucywgYW5kDQorLy8vICAgIHJldHVybmluZyB0
aGUgdHdvIGRvdCBwcm9kdWN0cyBpbiB0aGUgbG93ZXIgYW5kIHVwcGVyIGhhbHZlcyBvZiB0aGUN
CisvLy8gICAgWzggeCBmbG9hdF0gcmVzdWx0Lg0KKy8vLw0KKy8vLyAgICBUaGUgaW1tZWRpYXRl
IGludGVnZXIgb3BlcmFuZCBjb250cm9scyB3aGljaCBpbnB1dCBlbGVtZW50cyB3aWxsDQorLy8v
ICAgIGNvbnRyaWJ1dGUgdG8gdGhlIGRvdCBwcm9kdWN0LCBhbmQgd2hlcmUgdGhlIGZpbmFsIHJl
c3VsdHMgYXJlIHJldHVybmVkLg0KKy8vLyAgICBJbiBnZW5lcmFsLCBmb3IgZWFjaCBkb3QgcHJv
ZHVjdCwgdGhlIGZvdXIgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0aGUNCisvLy8gICAgaW5w
dXQgdmVjdG9ycyBhcmUgbXVsdGlwbGllZDsgdGhlIGZpcnN0IHR3byBhbmQgc2Vjb25kIHR3byBw
cm9kdWN0cyBhcmUNCisvLy8gICAgc3VtbWVkLCB0aGVuIHRoZSB0d28gc3VtcyBhcmUgYWRkZWQg
dG8gZm9ybSB0aGUgZmluYWwgcmVzdWx0Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NiBfbW0yNTZfZHBfcHMoX19tMjU2
IFYxLCBfX20yNTYgVjIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQUyA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVjENCisvLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gdmFsdWVzLCB0cmVhdGVkIGFzIHR3byBbNCB4IGZsb2F0XSB2ZWN0b3JzLg0KKy8vLyBccGFy
YW0gVjINCisvLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gdmFsdWVzLCB0cmVhdGVkIGFz
IHR3byBbNCB4IGZsb2F0XSB2ZWN0b3JzLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1l
ZGlhdGUgaW50ZWdlciBhcmd1bWVudC4gQml0cyBbNzo0XSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVu
dHMgb2YNCisvLy8gICAgdGhlIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQsIHdpdGggYml0IFs0XSBj
b3JyZXNwb25kaW5nIHRvIHRoZSBsb3dlc3QNCisvLy8gICAgZWxlbWVudCBhbmQgYml0IFs3XSBj
b3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YgZWFjaCBbNCB4DQorLy8vICAg
IGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudHMgZnJvbSB0aGUNCisvLy8gICAgdHdvIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQgYXMgYW4g
aW5wdXQgZm9yIGRvdCBwcm9kdWN0OyBvdGhlcndpc2UgdGhhdA0KKy8vLyAgICBpbnB1dCBpcyB0
cmVhdGVkIGFzIHplcm8uIEJpdHMgWzM6MF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mIHRo
ZQ0KKy8vLyAgICByZXN1bHQgd2lsbCByZWNlaXZlIGEgY29weSBvZiB0aGUgZmluYWwgZG90IHBy
b2R1Y3QsIHdpdGggYml0IFswXQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBsb3dlc3Qg
ZWxlbWVudCBhbmQgYml0IFszXSBjb3JyZXNwb25kaW5nIHRvIHRoZQ0KKy8vLyAgICBoaWdoZXN0
IGVsZW1lbnQgb2YgZWFjaCBbNCB4IGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwg
dGhlIGRvdA0KKy8vLyAgICBwcm9kdWN0IGlzIHJldHVybmVkIGluIHRoZSBjb3JyZXNwb25kaW5n
IGVsZW1lbnQ7IG90aGVyd2lzZSB0aGF0IGVsZW1lbnQNCisvLy8gICAgaXMgc2V0IHRvIHplcm8u
IFRoZSBiaXRtYXNrIGlzIGFwcGxpZWQgaW4gdGhlIHNhbWUgd2F5IHRvIGVhY2ggb2YgdGhlDQor
Ly8vICAgIHR3byBwYXJhbGxlbCBkb3QgcHJvZHVjdCBjb21wdXRhdGlvbnMuDQorLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdHdvIGRv
dCBwcm9kdWN0cy4NCisjZGVmaW5lIF9tbTI1Nl9kcF9wcyhWMSwgVjIsIE0pIFwNCisgIChfX20y
NTYpX19idWlsdGluX2lhMzJfZHBwczI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVjIpLCAoTSkpDQor
DQorLyogVmVjdG9yIHNodWZmbGUgKi8NCisvLy8gU2VsZWN0cyA4IGZsb2F0IHZhbHVlcyBmcm9t
IHRoZSAyNTYtYml0IG9wZXJhbmRzIG9mIFs4IHggZmxvYXRdLCBhcw0KKy8vLyAgICBzcGVjaWZp
ZWQgYnkgdGhlIGltbWVkaWF0ZSB2YWx1ZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBUaGUgZm91
ciBzZWxlY3RlZCBlbGVtZW50cyBpbiBlYWNoIG9wZXJhbmQgYXJlIGNvcGllZCB0byB0aGUgZGVz
dGluYXRpb24NCisvLy8gICAgYWNjb3JkaW5nIHRvIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUg
aW1tZWRpYXRlIG9wZXJhbmQuIFRoZSBzZWxlY3RlZA0KKy8vLyAgICBlbGVtZW50cyBmcm9tIHRo
ZSBmaXJzdCAyNTYtYml0IG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBhbmQNCisv
Ly8gICAgYml0cyBbMTkxOjEyOF0gb2YgdGhlIGRlc3RpbmF0aW9uLCBhbmQgdGhlIHNlbGVjdGVk
IGVsZW1lbnRzIGZyb20gdGhlDQorLy8vICAgIHNlY29uZCAyNTYtYml0IG9wZXJhbmQgYXJlIGNv
cGllZCB0byBiaXRzIFsxMjc6NjRdIGFuZCBiaXRzIFsyNTU6MTkyXSBvZg0KKy8vLyAgICB0aGUg
ZGVzdGluYXRpb24uIEZvciBleGFtcGxlLCBpZiBiaXRzIFs3OjBdIG9mIHRoZSBpbW1lZGlhdGUg
b3BlcmFuZA0KKy8vLyAgICBjb250YWluIGEgdmFsdWUgb2YgMHhGRiwgdGhlIDI1Ni1iaXQgZGVz
dGluYXRpb24gdmVjdG9yIHdvdWxkIGNvbnRhaW4gdGhlDQorLy8vICAgIGZvbGxvd2luZyB2YWx1
ZXM6IGJbN10sIGJbN10sIGFbN10sIGFbN10sIGJbM10sIGJbM10sIGFbM10sIGFbM10uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8g
X19tMjU2IF9tbTI1Nl9zaHVmZmxlX3BzKF9fbTI1NiBhLCBfX20yNTYgYiwgY29uc3QgaW50IG1h
c2spOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZTSFVGUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IGENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlIGZvdXIgc2Vs
ZWN0ZWQgZWxlbWVudHMgaW4gdGhpcw0KKy8vLyAgICBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gYml0
cyBbNjM6MF0gYW5kIGJpdHMgWzE5MToxMjhdIGluIHRoZSBkZXN0aW5hdGlvbiwNCisvLy8gICAg
YWNjb3JkaW5nIHRvIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRpYXRlIG9wZXJhbmQu
DQorLy8vIFxwYXJhbSBiDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0u
IFRoZSBmb3VyIHNlbGVjdGVkIGVsZW1lbnRzIGluIHRoaXMNCisvLy8gICAgb3BlcmFuZCBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMgWzI1NToxOTJdIGluIHRoZQ0KKy8vLyAg
ICBkZXN0aW5hdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgaW1t
ZWRpYXRlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBtYXNrDQorLy8vICAgIEFuIGltbWVkaWF0ZSB2
YWx1ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMg
dG8NCisvLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGIgXG4uDQorLy8vICAgIEJpdHMgWzM6
MF0gc3BlY2lmeSB0aGUgdmFsdWVzIGNvcGllZCBmcm9tIG9wZXJhbmQgXGEgYS4gXG4NCisvLy8g
ICAgQml0cyBbNzo0XSBzcGVjaWZ5IHRoZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBi
LiBcbg0KKy8vLyAgICBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgMjU2LWJpdCBkZXN0aW5h
dGlvbiBhcmUgYXNzaWduZWQgdmFsdWVzIGFzDQorLy8vICAgIGZvbGxvd3MsIGFjY29yZGluZyB0
byB0aGUgYml0IHZhbHVlIGFzc2lnbm1lbnRzIGRlc2NyaWJlZCBiZWxvdzogXG4NCisvLy8gICAg
Qml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIGFuZCBb
MTU5OjEyOF0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFsz
OjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6MzJdIGFuZCBbMTkxOjE2
MF0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdIGFy
ZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIGFuZCBbMjIzOjE5Ml0gaW4g
dGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2Vk
IHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2XSBhbmQgWzI1NToyMjRdIGluDQorLy8v
ICAgIHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBc
bg0KKy8vLyAgICAwMDogQml0cyBbMzE6MF0gYW5kIFsxNTk6MTI4XSBhcmUgY29waWVkIGZyb20g
dGhlIHNlbGVjdGVkIG9wZXJhbmQuIFxuDQorLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gYW5kIFsx
OTE6MTYwXSBhcmUgY29waWVkIGZyb20gdGhlIHNlbGVjdGVkIG9wZXJhbmQuIFxuDQorLy8vICAg
IDEwOiBCaXRzIFs5NTo2NF0gYW5kIFsyMjM6MTkyXSBhcmUgY29waWVkIGZyb20gdGhlIHNlbGVj
dGVkIG9wZXJhbmQuIFxuDQorLy8vICAgIDExOiBCaXRzIFsxMjc6OTZdIGFuZCBbMjU1OjIyNF0g
YXJlIGNvcGllZCBmcm9tIHRoZSBzZWxlY3RlZCBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVl
cy4NCisjZGVmaW5lIF9tbTI1Nl9zaHVmZmxlX3BzKGEsIGIsIG1hc2spIFwNCisgIChfX20yNTYp
X19idWlsdGluX2lhMzJfc2h1ZnBzMjU2KChfX3Y4c2YpKF9fbTI1NikoYSksIFwNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoYiksIChpbnQpKG1h
c2spKQ0KKw0KKy8vLyBTZWxlY3RzIGZvdXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJvbSB0
aGUgMjU2LWJpdCBvcGVyYW5kcyBvZg0KKy8vLyAgICBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmll
ZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIFRoZSBzZWxl
Y3RlZCBlbGVtZW50cyBmcm9tIHRoZSBmaXJzdCAyNTYtYml0IG9wZXJhbmQgYXJlIGNvcGllZCB0
byBiaXRzDQorLy8vICAgIFs2MzowXSBhbmQgYml0cyBbMTkxOjEyOF0gaW4gdGhlIGRlc3RpbmF0
aW9uLCBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnRzDQorLy8vICAgIGZyb20gdGhlIHNlY29uZCAy
NTYtYml0IG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIGFuZCBiaXRzDQorLy8v
ICAgIFsyNTU6MTkyXSBpbiB0aGUgZGVzdGluYXRpb24uIEZvciBleGFtcGxlLCBpZiBiaXRzIFsz
OjBdIG9mIHRoZSBpbW1lZGlhdGUNCisvLy8gICAgb3BlcmFuZCBjb250YWluIGEgdmFsdWUgb2Yg
MHhGLCB0aGUgMjU2LWJpdCBkZXN0aW5hdGlvbiB2ZWN0b3Igd291bGQNCisvLy8gICAgY29udGFp
biB0aGUgZm9sbG93aW5nIHZhbHVlczogYlszXSwgYVszXSwgYlsxXSwgYVsxXS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20y
NTZkIF9tbTI1Nl9zaHVmZmxlX3BkKF9fbTI1NmQgYSwgX19tMjU2ZCBiLCBjb25zdCBpbnQgbWFz
ayk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlNIVUZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
YQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFt
IGINCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJh
bSBtYXNrDQorLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIDgtYml0IHZhbHVl
cyBzcGVjaWZ5aW5nIHdoaWNoIGVsZW1lbnRzIHRvDQorLy8vICAgIGNvcHkgZnJvbSBcYSBhIGFu
ZCBcYSBiOiBcbg0KKy8vLyAgICBCaXQgWzBdPTA6IEJpdHMgWzYzOjBdIGFyZSBjb3BpZWQgZnJv
bSBcYSBhIHRvIGJpdHMgWzYzOjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisv
Ly8gICAgQml0IFswXT0xOiBCaXRzIFsxMjc6NjRdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRvIGJp
dHMgWzYzOjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0IFsx
XT0wOiBCaXRzIFs2MzowXSBhcmUgY29waWVkIGZyb20gXGEgYiB0byBiaXRzIFsxMjc6NjRdIG9m
IHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0IFsxXT0xOiBCaXRzIFsx
Mjc6NjRdIGFyZSBjb3BpZWQgZnJvbSBcYSBiIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQorLy8v
ICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXQgWzJdPTA6IEJpdHMgWzE5MToxMjhdIGFy
ZSBjb3BpZWQgZnJvbSBcYSBhIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KKy8vLyAgICBkZXN0
aW5hdGlvbi4gXG4NCisvLy8gICAgQml0IFsyXT0xOiBCaXRzIFsyNTU6MTkyXSBhcmUgY29waWVk
IGZyb20gXGEgYSB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24u
IFxuDQorLy8vICAgIEJpdCBbM109MDogQml0cyBbMTkxOjEyOF0gYXJlIGNvcGllZCBmcm9tIFxh
IGIgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8v
LyAgICBCaXQgWzNdPTE6IEJpdHMgWzI1NToxOTJdIGFyZSBjb3BpZWQgZnJvbSBcYSBiIHRvIGJp
dHMgWzI1NToxOTJdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2h1ZmZsZWQg
dmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2X3NodWZmbGVfcGQoYSwgYiwgbWFzaykgXA0KKyAgKF9f
bTI1NmQpX19idWlsdGluX2lhMzJfc2h1ZnBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKGEpLCBcDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoYiks
IChpbnQpKG1hc2spKQ0KKw0KKy8qIENvbXBhcmUgKi8NCisjZGVmaW5lIF9DTVBfRVFfT1EgICAg
MHgwMCAvKiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01Q
X0xUX09TICAgIDB4MDEgLyogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNk
ZWZpbmUgX0NNUF9MRV9PUyAgICAweDAyIC8qIExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwg
c2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfVU5PUkRfUSAgMHgwMyAvKiBVbm9yZGVyZWQg
KG5vbi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9ORVFfVVEgICAweDA0IC8qIE5vdC1l
cXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkxUX1VT
ICAgMHgwNSAvKiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgICovDQorI2Rl
ZmluZSBfQ01QX05MRV9VUyAgIDB4MDYgLyogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRl
cmVkLCBzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9PUkRfUSAgICAweDA3IC8qIE9yZGVy
ZWQgKG5vbi1zaWduYWxpbmcpICAgKi8NCisjZGVmaW5lIF9DTVBfRVFfVVEgICAgMHgwOCAvKiBF
cXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkdFX1VT
ICAgMHgwOSAvKiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGlu
ZykgICovDQorI2RlZmluZSBfQ01QX05HVF9VUyAgIDB4MGEgLyogTm90LWdyZWF0ZXItdGhhbiAo
dW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9GQUxTRV9PUSAweDBiIC8q
IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkVRX09R
ICAgMHgwYyAvKiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLw0KKyNkZWZp
bmUgX0NNUF9HRV9PUyAgICAweDBkIC8qIEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwg
c2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfR1RfT1MgICAgMHgwZSAvKiBHcmVhdGVyLXRo
YW4gKG9yZGVyZWQsIHNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX1RSVUVfVVEgIDB4MGYg
LyogVHJ1ZSAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfRVFf
T1MgICAgMHgxMCAvKiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9D
TVBfTFRfT1EgICAgMHgxMSAvKiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAq
Lw0KKyNkZWZpbmUgX0NNUF9MRV9PUSAgICAweDEyIC8qIExlc3MtdGhhbi1vci1lcXVhbCAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX1VOT1JEX1MgIDB4MTMgLyog
VW5vcmRlcmVkIChzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9ORVFfVVMgICAweDE0IC8q
IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9OTFRf
VVEgICAweDE1IC8qIE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICov
DQorI2RlZmluZSBfQ01QX05MRV9VUSAgIDB4MTYgLyogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAo
dW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfT1JEX1MgICAgMHgx
NyAvKiBPcmRlcmVkIChzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9FUV9VUyAgICAweDE4
IC8qIEVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX05HRV9V
USAgIDB4MTkgLyogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2ln
bmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkdUX1VRICAgMHgxYSAvKiBOb3QtZ3JlYXRlci10
aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9GQUxTRV9P
UyAweDFiIC8qIEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9O
RVFfT1MgICAweDFjIC8qIE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCisjZGVm
aW5lIF9DTVBfR0VfT1EgICAgMHgxZCAvKiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9HVF9PUSAgICAweDFlIC8qIEdyZWF0
ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX1RSVUVf
VVMgIDB4MWYgLyogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKw0KKy8vLyBDb21w
YXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9m
IHR3bw0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCB1c2luZyB0aGUg
b3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUNCisvLy8gICAgaW1tZWRpYXRlIGludGVnZXIgb3Bl
cmFuZC4NCisvLy8NCisvLy8gICAgUmV0dXJucyBhIFsyIHggZG91YmxlXSB2ZWN0b3IgY29uc2lz
dGluZyBvZiB0d28gZG91YmxlcyBjb3JyZXNwb25kaW5nIHRvDQorLy8vICAgIHRoZSB0d28gY29t
cGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLCBhbmQgYWxs
IDEncw0KKy8vLyAgICBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGQgX21t
X2NtcF9wZChfX20xMjhkIGEsIF9fbTEyOGQgYiwgY29uc3QgaW50IGMpOw0KKy8vLyBcZW5kY29k
ZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBQ
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIGINCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBjDQorLy8vICAgIEFuIGlt
bWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNo
IGNvbXBhcmlzb24NCisvLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4NCisvLy8gICAgMHgwMDog
RXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDE6IExlc3MtdGhh
biAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1
YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwMzogVW5vcmRlcmVkIChub24t
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNp
Z25hbGluZykgXG4NCisvLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWdu
YWxpbmcpIFxuDQorLy8vICAgIDB4MDY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJl
ZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBc
bg0KKy8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8v
LyAgICAweDA5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGlu
ZykgXG4NCisvLy8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxp
bmcpIFxuDQorLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDBDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MEQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgwRjogVHJ1ZSAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDEw
OiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDExOiBMZXNzLXRoYW4g
KG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1l
cXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMzogVW5vcmRlcmVk
IChzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWdu
YWxpbmcpIFxuDQorLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNp
Z25hbGluZykgXG4NCisvLy8gICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRl
cmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MTg6IEVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgxOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFs
aW5nKSBcbg0KKy8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1z
aWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQorLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDFEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxu
DQorLy8vICAgIDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4N
CisvLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlz
b24gcmVzdWx0cy4NCisjZGVmaW5lIF9tbV9jbXBfcGQoYSwgYiwgYykgXA0KKyAgKF9fbTEyOGQp
X19idWlsdGluX2lhMzJfY21wcGQoKF9fdjJkZikoX19tMTI4ZCkoYSksIFwNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKGIpLCAoYykpDQorDQorLy8v
IENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIG9mIHR3byAxMjgtYml0
IHZlY3RvcnMgb2YNCisvLy8gICAgWzQgeCBmbG9hdF0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3Bl
Y2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlcg0KKy8vLyAgICBvcGVyYW5kLg0KKy8vLw0K
Ky8vLyAgICBSZXR1cm5zIGEgWzQgeCBmbG9hdF0gdmVjdG9yIGNvbnNpc3Rpbmcgb2YgZm91ciBm
bG9hdHMgY29ycmVzcG9uZGluZyB0bw0KKy8vLyAgICB0aGUgZm91ciBjb21wYXJpc29uIHJlc3Vs
dHM6IHplcm8gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UsIGFuZCBhbGwgMSdzDQorLy8vICAg
IGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4IF9tbV9jbXBfcHMoX19tMTI4
IGEsIF9fbTEyOCBiLCBjb25zdCBpbnQgYyk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQorLy8vIFxwYXJhbSBiDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQorLy8vIFxwYXJhbSBjDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9w
ZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24NCisvLy8g
ICAgb3BlcmF0aW9uIHRvIHVzZTogXG4NCisvLy8gICAgMHgwMDogRXF1YWwgKG9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDE6IExlc3MtdGhhbiAob3JkZXJlZCwgc2lnbmFs
aW5nKSBcbg0KKy8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25h
bGluZykgXG4NCisvLy8gICAgMHgwMzogVW5vcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KKy8v
LyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAg
IDB4MDY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA4OiBF
cXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA5OiBOb3QtZ3Jl
YXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgw
QTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBDOiBOb3Qt
ZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEQ6IEdyZWF0ZXIt
dGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBFOiBHcmVh
dGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRjogVHJ1ZSAodW5v
cmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDEwOiBFcXVhbCAob3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWdu
YWxpbmcpIFxuDQorLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQor
Ly8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAg
IDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5n
KSBcbg0KKy8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTg6
IEVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxOTogTm90LWdyZWF0
ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAw
eDFBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUM6IE5v
dC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFEOiBHcmVhdGVyLXRo
YW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUU6IEdy
ZWF0ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRjogVHJ1
ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KKyNkZWZp
bmUgX21tX2NtcF9wcyhhLCBiLCBjKSBcDQorICAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcHBz
KChfX3Y0c2YpKF9fbTEyOCkoYSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9fdjRzZikoX19tMTI4KShiKSwgKGMpKQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBj
b3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHR3bw0KKy8vLyAgICAyNTYt
Yml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmll
ZCBieSB0aGUNCisvLy8gICAgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8g
ICAgUmV0dXJucyBhIFs0IHggZG91YmxlXSB2ZWN0b3IgY29uc2lzdGluZyBvZiBmb3VyIGRvdWJs
ZXMgY29ycmVzcG9uZGluZyB0bw0KKy8vLyAgICB0aGUgZm91ciBjb21wYXJpc29uIHJlc3VsdHM6
IHplcm8gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UsIGFuZCBhbGwgMSdzDQorLy8vICAgIGlm
IHRoZSBjb21wYXJpc29uIGlzIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2ZCBfbW0yNTZfY21wX3BkKF9fbTI1
NmQgYSwgX19tMjU2ZCBiLCBjb25zdCBpbnQgYyk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIGMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVn
ZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0K
Ky8vLyAgICBvcGVyYXRpb24gdG8gdXNlOiBcbg0KKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBz
aWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxu
DQorLy8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDA1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgwNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MDg6IEVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDk6IE5v
dC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDBBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgwQjogRmFsc2UgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEM6
IE5vdC1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRDogR3Jl
YXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEU6
IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBGOiBUcnVl
ICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTA6IEVxdWFsIChvcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykg
XG4NCisvLy8gICAgMHgxNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgxNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWdu
YWxpbmcpIFxuDQorLy8vICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgxODogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE5OiBOb3Qt
Z3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MUE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4N
CisvLy8gICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgx
QzogTm90LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUQ6IEdyZWF0
ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgx
RTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFG
OiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykNCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0K
KyNkZWZpbmUgX21tMjU2X2NtcF9wZChhLCBiLCBjKSBcDQorICAoX19tMjU2ZClfX2J1aWx0aW5f
aWEzMl9jbXBwZDI1NigoX192NGRmKShfX20yNTZkKShhKSwgXA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoYiksIChjKSkNCisNCisvLy8gQ29t
cGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgb2YgdHdvIDI1Ni1iaXQgdmVj
dG9ycyBvZg0KKy8vLyAgICBbOCB4IGZsb2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZp
ZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyDQorLy8vICAgIG9wZXJhbmQuDQorLy8vDQorLy8v
ICAgIFJldHVybnMgYSBbOCB4IGZsb2F0XSB2ZWN0b3IgY29uc2lzdGluZyBvZiBlaWdodCBmbG9h
dHMgY29ycmVzcG9uZGluZyB0bw0KKy8vLyAgICB0aGUgZWlnaHQgY29tcGFyaXNvbiByZXN1bHRz
OiB6ZXJvIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLCBhbmQgYWxsDQorLy8vICAgIDEncyBp
ZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NiBfbW0yNTZfY21wX3BzKF9fbTI1
NiBhLCBfX20yNTYgYiwgY29uc3QgaW50IGMpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBQUyA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gYw0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBv
cGVyYW5kLCB3aXRoIGJpdHMgWzQ6MF0gc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uDQorLy8v
ICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQorLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDAxOiBMZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25h
bGluZykgXG4NCisvLy8gICAgMHgwMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWdu
YWxpbmcpIFxuDQorLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgwNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4N
CisvLy8gICAgMHgwNzogT3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwODog
RXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwOTogTm90LWdy
ZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MEE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAw
eDBCOiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwQzogTm90
LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBEOiBHcmVhdGVy
LXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRTogR3Jl
YXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEY6IFRydWUgKHVu
b3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMDogRXF1YWwgKG9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMTogTGVzcy10aGFuIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KKy8vLyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTM6IFVub3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDE0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MTY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGlu
ZykgXG4NCisvLy8gICAgMHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE4
OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTk6IE5vdC1ncmVh
dGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8v
LyAgICAweDFCOiBGYWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFDOiBO
b3QtZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRDogR3JlYXRlci10
aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFFOiBH
cmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUY6IFRy
dWUgKHVub3JkZXJlZCwgc2lnbmFsaW5nKQ0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCisjZGVm
aW5lIF9tbTI1Nl9jbXBfcHMoYSwgYiwgYykgXA0KKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl9j
bXBwczI1NigoX192OHNmKShfX20yNTYpKGEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoYiksIChjKSkNCisNCisvLy8gQ29tcGFyZXMgZWFj
aCBvZiB0aGUgY29ycmVzcG9uZGluZyBzY2FsYXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YN
CisvLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHVzaW5nIHRoZSBv
cGVyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZQ0KKy8vLyAgICBpbW1lZGlhdGUgaW50ZWdlciBvcGVy
YW5kLg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgcmVzdWx0IGlzIHRydWUsIGFsbCA2NCBiaXRzIG9m
IHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IgYXJlIHNldDsNCisvLy8gICAgb3RoZXJ3aXNlIHRoZXkg
YXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fY21wX3NkKF9fbTEyOGQgYSwgX19tMTI4ZCBi
LCBjb25zdCBpbnQgYyk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0K
Ky8vLyBccGFyYW0gYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
CisvLy8gXHBhcmFtIGMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0
aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0KKy8vLyAgICBvcGVyYXRp
b24gdG8gdXNlOiBcbg0KKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGlu
ZykgXG4NCisvLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQor
Ly8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDQ6
IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA1OiBO
b3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNjogTm90
LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDg6IEVxdWFsICh1bm9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4t
b3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBBOiBOb3QtZ3Jl
YXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwQjogRmFsc2Ug
KG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVx
dWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEU6IEdyZWF0ZXItdGhhbiAo
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBGOiBUcnVlICh1bm9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4N
CisvLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5n
KSBcbg0KKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgx
NDogTm90LWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxNTogTm90
LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE2OiBO
b3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxODogRXF1YWwgKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9y
LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUE6IE5vdC1n
cmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQjog
RmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQzogTm90LWVxdWFsIChv
cmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhhbi1vci1lcXVh
bCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRTogR3JlYXRlci10aGFu
IChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVy
ZWQsIHNpZ25hbGluZykNCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KKyNkZWZpbmUgX21tX2Nt
cF9zZChhLCBiLCBjKSBcDQorICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBzZCgoX192MmRm
KShfX20xMjhkKShhKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJk
ZikoX19tMTI4ZCkoYiksIChjKSkNCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVz
cG9uZGluZyBzY2FsYXIgdmFsdWVzIG9mIHR3byAxMjgtYml0DQorLy8vICAgIHZlY3RvcnMgb2Yg
WzQgeCBmbG9hdF0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlh
dGUNCisvLy8gICAgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgcmVzdWx0
IGlzIHRydWUsIGFsbCAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IgYXJlIHNldDsN
CisvLy8gICAgb3RoZXJ3aXNlIHRoZXkgYXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4IF9tbV9jbXBf
c3MoX19tMTI4IGEsIF9fbTEyOCBiLCBjb25zdCBpbnQgYyk7DQorLy8vIFxlbmRjb2RlDQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFNTIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBiDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBjDQorLy8vICAgIEFuIGltbWVkaWF0ZSBp
bnRlZ2VyIG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlz
b24NCisvLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4NCisvLy8gICAgMHgwMDogRXF1YWwgKG9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDE6IExlc3MtdGhhbiAob3JkZXJl
ZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwMzogVW5vcmRlcmVkIChub24tc2lnbmFsaW5n
KSBcbg0KKy8vLyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykg
XG4NCisvLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQorLy8vICAgIDB4MDY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFs
aW5nKSBcbg0KKy8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA5
OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQor
Ly8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAw
eDBDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEQ6
IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAw
eDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRjog
VHJ1ZSAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDEwOiBFcXVhbCAo
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1lcXVhbCAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxp
bmcpIFxuDQorLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQorLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykg
XG4NCisvLy8gICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24t
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MTg6IEVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxOTog
Tm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAg
IDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFEOiBH
cmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAg
IDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRz
Lg0KKyNkZWZpbmUgX21tX2NtcF9zcyhhLCBiLCBjKSBcDQorICAoX19tMTI4KV9fYnVpbHRpbl9p
YTMyX2NtcHNzKChfX3Y0c2YpKF9fbTEyOCkoYSksIFwNCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fdjRzZikoX19tMTI4KShiKSwgKGMpKQ0KKw0KKy8vLyBUYWtlcyBhIFs4IHgg
aTMyXSB2ZWN0b3IgYW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQorLy8vICAg
IGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4K0NPTVBPU0lURSA8L2M+DQorLy8vICAgaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGkzMl0uDQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUg
aW50ZWdlciBvcGVyYW5kIHdpdGggYml0cyBbMjowXSBkZXRlcm1pbmluZyB3aGljaCB2ZWN0b3IN
CisvLy8gICAgZWxlbWVudCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkLg0KKy8vLyBccmV0dXJu
cyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCAzMiBiaXRzIG9mIGV4
dGVuZGVkDQorLy8vICAgIHBhY2tlZCBkYXRhLg0KKyNkZWZpbmUgX21tMjU2X2V4dHJhY3RfZXBp
MzIoWCwgTikgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y4c2koKF9fdjhzaSko
X19tMjU2aSkoWCksIChpbnQpKE4pKQ0KKw0KKy8vLyBUYWtlcyBhIFsxNiB4IGkxNl0gdmVjdG9y
IGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQ0KKy8vLyAgICBpbmRleGVkIGJ5
IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZFWFRSQUNURjEyOCtDT01QT1NJVEUgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMTYgeCBpMTZdLg0KKy8vLyBccGFyYW0gX19pbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGlu
dGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMgWzM6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yDQor
Ly8vICAgIGVsZW1lbnQgaXMgZXh0cmFjdGVkIGFuZCByZXR1cm5lZC4NCisvLy8gXHJldHVybnMg
QSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgMTYgYml0cyBvZiB6ZXJv
IGV4dGVuZGVkDQorLy8vICAgIHBhY2tlZCBkYXRhLg0KKyNkZWZpbmUgX21tMjU2X2V4dHJhY3Rf
ZXBpMTYoWCwgTikgXA0KKyAgKGludCkodW5zaWduZWQgc2hvcnQpX19idWlsdGluX2lhMzJfdmVj
X2V4dF92MTZoaSgoX192MTZoaSkoX19tMjU2aSkoWCksIFwNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTikpDQorDQorLy8vIFRha2Vz
IGEgWzMyIHggaThdIHZlY3RvciBhbmQgcmV0dXJucyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUN
CisvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCisv
Ly8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzMyIHggaThdLg0KKy8vLyBccGFyYW0gX19pbW0NCisvLy8g
ICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMgWzQ6MF0gZGV0ZXJtaW5p
bmcgd2hpY2ggdmVjdG9yDQorLy8vICAgIGVsZW1lbnQgaXMgZXh0cmFjdGVkIGFuZCByZXR1cm5l
ZC4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0
ZWQgOCBiaXRzIG9mIHplcm8gZXh0ZW5kZWQNCisvLy8gICAgcGFja2VkIGRhdGEuDQorI2RlZmlu
ZSBfbW0yNTZfZXh0cmFjdF9lcGk4KFgsIE4pIFwNCisgIChpbnQpKHVuc2lnbmVkIGNoYXIpX19i
dWlsdGluX2lhMzJfdmVjX2V4dF92MzJxaSgoX192MzJxaSkoX19tMjU2aSkoWCksIFwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShOKSkN
CisNCisjaWZkZWYgX194ODZfNjRfXw0KKy8vLyBUYWtlcyBhIFs0IHggaTY0XSB2ZWN0b3IgYW5k
IHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQorLy8vICAgIGluZGV4ZWQgYnkgdGhl
IGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkVYVFJBQ1RGMTI4K0NPTVBPU0lURSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTY0XS4NCisvLy8gXHBhcmFtIF9faW1tDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQgd2l0aCBiaXRzIFsxOjBdIGRldGVybWluaW5nIHdoaWNoIHZlY3Rvcg0KKy8vLyAg
ICBlbGVtZW50IGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuDQorLy8vIFxyZXR1cm5zIEEgNjQt
Yml0IGludGVnZXIgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDY0IGJpdHMgb2YgZXh0ZW5kZWQN
CisvLy8gICAgcGFja2VkIGRhdGEuDQorI2RlZmluZSBfbW0yNTZfZXh0cmFjdF9lcGk2NChYLCBO
KSBcDQorICAobG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRkaSgoX192NGRpKShf
X20yNTZpKShYKSwgKGludCkoTikpDQorI2VuZGlmDQorDQorLy8vIFRha2VzIGEgWzggeCBpMzJd
IHZlY3RvciBhbmQgcmVwbGFjZXMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQorLy8vICAgIGlu
ZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIGJ5IGEgbmV3IHZhbHVlLiBS
ZXR1cm5zIHRoZQ0KKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWSU5TRVJURjEyOCtDT01QT1NJVEUgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgdmVjdG9yIG9mIFs4IHggaTMyXSB0
byBiZSB1c2VkIGJ5IHRoZSBpbnNlcnQgb3BlcmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEFuIGludGVnZXIgdmFsdWUuIFRoZSByZXBsYWNlbWVudCB2YWx1ZSBmb3IgdGhlIGluc2Vy
dCBvcGVyYXRpb24uDQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50
ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUNCisv
Ly8gICAgcmVwbGFjZWQuDQorLy8vIFxyZXR1cm5zIEEgY29weSBvZiB2ZWN0b3IgXGEgX19hLCBh
ZnRlciByZXBsYWNpbmcgaXRzIGVsZW1lbnQgaW5kZXhlZCBieQ0KKy8vLyAgICBcYSBfX2ltbSB3
aXRoIFxhIF9fYi4NCisjZGVmaW5lIF9tbTI1Nl9pbnNlcnRfZXBpMzIoWCwgSSwgTikgXA0KKyAg
KF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmVjX3NldF92OHNpKChfX3Y4c2kpKF9fbTI1NmkpKFgp
LCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoSSksIChp
bnQpKE4pKQ0KKw0KKw0KKy8vLyBUYWtlcyBhIFsxNiB4IGkxNl0gdmVjdG9yIGFuZCByZXBsYWNl
cyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCisvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRp
YXRlIGNvbnN0YW50IG9wZXJhbmQgd2l0aCBhIG5ldyB2YWx1ZS4gUmV0dXJucyB0aGUNCisvLy8g
ICAgbW9kaWZpZWQgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VS
VEYxMjgrQ09NUE9TSVRFIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIHZlY3RvciBvZiBbMTYgeCBpMTZdIHRvIGJlIHVzZWQgYnkgdGhl
IGluc2VydCBvcGVyYXRpb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQW4gaTE2IGludGVn
ZXIgdmFsdWUuIFRoZSByZXBsYWNlbWVudCB2YWx1ZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb24u
DQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5
aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUNCisvLy8gICAgcmVwbGFj
ZWQuDQorLy8vIFxyZXR1cm5zIEEgY29weSBvZiB2ZWN0b3IgXGEgX19hLCBhZnRlciByZXBsYWNp
bmcgaXRzIGVsZW1lbnQgaW5kZXhlZCBieQ0KKy8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4N
CisjZGVmaW5lIF9tbTI1Nl9pbnNlcnRfZXBpMTYoWCwgSSwgTikgXA0KKyAgKF9fbTI1NmkpX19i
dWlsdGluX2lhMzJfdmVjX3NldF92MTZoaSgoX192MTZoaSkoX19tMjU2aSkoWCksIFwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoSSksIChpbnQpKE4pKQ0K
Kw0KKy8vLyBUYWtlcyBhIFszMiB4IGk4XSB2ZWN0b3IgYW5kIHJlcGxhY2VzIHRoZSB2ZWN0b3Ig
ZWxlbWVudCB2YWx1ZQ0KKy8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQg
b3BlcmFuZCB3aXRoIGEgbmV3IHZhbHVlLiBSZXR1cm5zIHRoZQ0KKy8vLyAgICBtb2RpZmllZCB2
ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCtDT01QT1NJ
VEUgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgdmVjdG9yIG9mIFszMiB4IGk4XSB0byBiZSB1c2VkIGJ5IHRoZSBpbnNlcnQgb3BlcmF0
aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEFuIGk4IGludGVnZXIgdmFsdWUuIFRoZSBy
ZXBsYWNlbWVudCB2YWx1ZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb24uDQorLy8vIFxwYXJhbSBf
X2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBv
ZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUNCisvLy8gICAgcmVwbGFjZWQuDQorLy8vIFxyZXR1
cm5zIEEgY29weSBvZiB2ZWN0b3IgXGEgX19hLCBhZnRlciByZXBsYWNpbmcgaXRzIGVsZW1lbnQg
aW5kZXhlZCBieQ0KKy8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4NCisjZGVmaW5lIF9tbTI1
Nl9pbnNlcnRfZXBpOChYLCBJLCBOKSBcDQorICAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92ZWNf
c2V0X3YzMnFpKChfX3YzMnFpKShfX20yNTZpKShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpDQorDQorI2lmZGVmIF9feDg2
XzY0X18NCisvLy8gVGFrZXMgYSBbNCB4IGk2NF0gdmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVj
dG9yIGVsZW1lbnQgdmFsdWUNCisvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0
YW50IG9wZXJhbmQgd2l0aCBhIG5ldyB2YWx1ZS4gUmV0dXJucyB0aGUNCisvLy8gICAgbW9kaWZp
ZWQgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09N
UE9TSVRFIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIHZlY3RvciBvZiBbNCB4IGk2NF0gdG8gYmUgdXNlZCBieSB0aGUgaW5zZXJ0IG9w
ZXJhdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVl
LiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uLg0KKy8vLyBc
cGFyYW0gX19pbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgc3BlY2lmeWluZyB0aGUg
aW5kZXggb2YgdGhlIHZlY3RvciBlbGVtZW50IHRvIGJlDQorLy8vICAgIHJlcGxhY2VkLg0KKy8v
LyBccmV0dXJucyBBIGNvcHkgb2YgdmVjdG9yIFxhIF9fYSwgYWZ0ZXIgcmVwbGFjaW5nIGl0cyBl
bGVtZW50IGluZGV4ZWQgYnkNCisvLy8gICAgIFxhIF9faW1tIHdpdGggXGEgX19iLg0KKyNkZWZp
bmUgX21tMjU2X2luc2VydF9lcGk2NChYLCBJLCBOKSBcDQorICAoX19tMjU2aSlfX2J1aWx0aW5f
aWEzMl92ZWNfc2V0X3Y0ZGkoKF9fdjRkaSkoX19tMjU2aSkoWCksIFwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKShJKSwgKGludCkoTikpDQorI2Vu
ZGlmDQorDQorLyogQ29udmVyc2lvbiAqLw0KKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4
IGkzMl0gaW50byBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ1ZURFEyUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KKy8v
LyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbTI1Nl9jdnRlcGkzMl9wZChfX20xMjhpIF9fYSkNCit7DQorICByZXR1cm4g
KF9fbTI1NmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjRzaSlfX2EsIF9fdjRkZik7DQor
fQ0KKw0KKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbOCB4IGkzMl0gaW50byBhIHZlY3RvciBv
ZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlREUTJQUyA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2N2dGVwaTMyX3BzKF9fbTI1Nmkg
X19hKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4
c2kpX19hLCBfX3Y4c2YpOw0KK30NCisNCisvLy8gQ29udmVydHMgYSAyNTYtYml0IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxv
YXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBEMlBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUg
X19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jdnRwZF9wcyhfX20yNTZkIF9fYSkN
Cit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jdnRwZDJwczI1NigoX192NGRm
KSBfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW50
byBhIHZlY3RvciBvZiBbOCB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q1ZUUFMyRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0
aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0cHNfZXBp
MzIoX19tMjU2IF9fYSkNCit7DQorICByZXR1cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfY3Z0
cHMyZHEyNTYoKF9fdjhzZikgX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0DQorLy8vICAg
IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJQRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2N2dHBzX3BkKF9fbTEy
OCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChf
X3Y0c2YpX19hLCBfX3Y0ZGYpOw0KK30NCisNCisvLy8gQ29udmVydHMgYSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0DQorLy8vICAgIHgg
aTMyXSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVu
IGl0IGlzDQorLy8vICAgIGluZXhhY3QuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q1ZUVFBEMkRRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jdnR0cGRf
ZXBpMzIoX19tMjU2ZCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X2N2dHRwZDJkcTI1NigoX192NGRmKSBfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgYSAyNTYt
Yml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0DQor
Ly8vICAgIHggaTMyXS4gV2hlbiBhIGNvbnZlcnNpb24gaXMgaW5leGFjdCwgdGhlIHZhbHVlIHJl
dHVybmVkIGlzIHJvdW5kZWQNCisvLy8gICAgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBjb250
cm9sIGJpdHMgaW4gdGhlIE1YQ1NSIHJlZ2lzdGVyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkNWVFBEMkRRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVz
Lg0KK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9j
dnRwZF9lcGkzMihfX20yNTZkIF9fYSkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfY3Z0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIGEg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJdLA0KKy8vLyAg
ICB0cnVuY2F0aW5nIHRoZSByZXN1bHQgYnkgcm91bmRpbmcgdG93YXJkcyB6ZXJvIHdoZW4gaXQg
aXMgaW5leGFjdC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUFMyRFEgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUg
X19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0dHBzX2VwaTMyKF9fbTI1NiBf
X2EpDQorew0KKyAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJkcTI1Nigo
X192OHNmKSBfX2EpOw0KK30NCisNCisvLy8gUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0
aGUgaW5wdXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PGF2eGludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVu
Y3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSA2NCBiaXQgZG91YmxlIGNvbnRhaW5p
bmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0IHZlY3Rvci4NCitzdGF0aWMgX19pbmxp
bmUgZG91YmxlIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jdnRzZF9mNjQoX19tMjU2ZCBf
X2EpDQorew0KKyByZXR1cm4gX19hWzBdOw0KK30NCisNCisvLy8gUmV0dXJucyB0aGUgZmlyc3Qg
ZWxlbWVudCBvZiB0aGUgaW5wdXQgdmVjdG9yIG9mIFs4IHggaTMyXS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPGF2eGludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0
aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8v
LyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggaTMyXS4NCisvLy8gXHJldHVybnMgQSAzMiBiaXQgaW50ZWdlciBj
b250YWluaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3IuDQorc3RhdGlj
IF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0c2kyNTZfc2kzMihf
X20yNTZpIF9fYSkNCit7DQorIF9fdjhzaSBfX2IgPSAoX192OHNpKV9fYTsNCisgcmV0dXJuIF9f
YlswXTsNCit9DQorDQorLy8vIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPGF2eGludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5k
IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDMyIGJpdCBmbG9hdCBjb250YWluaW5nIHRoZSBmaXJz
dCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lIGZsb2F0IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jdnRzc19mMzIoX19tMjU2IF9fYSkNCit7DQorIHJl
dHVybiBfX2FbMF07DQorfQ0KKw0KKy8qIFZlY3RvciByZXBsaWNhdGUgKi8NCisvLy8gTW92ZXMg
YW5kIGR1cGxpY2F0ZXMgb2RkLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvciBv
Zg0KKy8vLyAgICBbOCB4IGZsb2F0XSB0byBmbG9hdCB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTSERV
UCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzI1NToyMjRdIG9m
IFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MjI0XSBhbmQgWzIyMzoxOTJdIG9mDQor
Ly8vICAgIHRoZSByZXR1cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzE5MToxNjBdIG9mIFxh
IF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYwXSBhbmQgWzE1OToxMjhdIG9mDQorLy8v
ICAgIHRoZSByZXR1cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzEyNzo5Nl0gb2YgXGEgX19h
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gYW5kIFs5NTo2NF0gb2YgdGhlDQorLy8vICAg
IHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbNjM6MzJdIG9mIFxhIF9fYSBhcmUgd3Jp
dHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUNCisvLy8gICAgcmV0dXJuIHZh
bHVlLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIG1vdmVkIGFuZCBkdXBsaWNhdGVkDQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMg
X19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9tb3ZlaGR1cF9wcyhf
X20yNTYgX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMjU2KSBfX2J1
aWx0aW5faWEzMl9tb3ZzaGR1cDI1NiAoKF9fdjhzZilfX2EpOw0KKyNlbHNlDQorICByZXR1cm4g
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAxLCAxLCAz
LCAzLCA1LCA1LCA3LCA3KTsNCisjZW5kaWYNCit9DQorDQorLy8vIE1vdmVzIGFuZCBkdXBsaWNh
dGVzIGV2ZW4taW5kZXhlZCB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yIG9mDQorLy8vICAg
IFs4IHggZmxvYXRdIHRvIGZsb2F0IHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNMRFVQIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4gXG4NCisvLy8gICAgQml0cyBbMjIzOjE5Ml0gb2YgXGEgX19hIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzI1NToyMjRdIGFuZCBbMjIzOjE5Ml0gb2YNCisvLy8gICAgdGhl
IHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMTU5OjEyOF0gb2YgXGEgX19hIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzE5MToxNjBdIGFuZCBbMTU5OjEyOF0gb2YNCisvLy8gICAgdGhlIHJl
dHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbOTU6NjRdIG9mIFxhIF9fYSBhcmUgd3JpdHRl
biB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICByZXR1cm4gdmFs
dWUuIFxuDQorLy8vICAgIEJpdHMgWzMxOjBdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRz
IFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUNCisvLy8gICAgcmV0dXJuIHZhbHVlLg0KKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1v
dmVkIGFuZCBkdXBsaWNhdGVkDQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19t
MjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9tb3ZlbGR1cF9wcyhfX20yNTYgX19hKQ0K
K3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9t
b3ZzbGR1cDI1NiAoKF9fdjhzZilfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX3No
dWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAwLCAwLCAyLCAyLCA0LCA0LCA2
LCA2KTsNCisjZW5kaWYNCit9DQorDQorLy8vIE1vdmVzIGFuZCBkdXBsaWNhdGVzIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYQ0KKy8vLyAgICAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gdG8gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaW4gYSAyNTYt
Yml0DQorLy8vICAgIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWTU9WRERVUCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBcbg0KKy8vLyAg
ICBCaXRzIFs2MzowXSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0XSBhbmQg
WzYzOjBdIG9mIHRoZQ0KKy8vLyAgICByZXR1cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzE5
MToxMjhdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MTkyXSBhbmQgWzE5MTox
MjhdIG9mDQorLy8vICAgIHRoZSByZXR1cm4gdmFsdWUuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFuZA0KKy8vLyAg
ICBkdXBsaWNhdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW0yNTZfbW92ZWR1cF9wZChfX20yNTZkIF9fYSkNCit7DQorI2lmZGVmIF9f
R05VQ19fDQorICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBkMjU2ICgo
X192NGRmKV9fYSwgKF9fdjRkZilfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX3No
dWZmbGV2ZWN0b3IoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19hLCAwLCAwLCAyLCAyKTsNCisjZW5k
aWYNCit9DQorDQorLyogVW5wYWNrIGFuZCBJbnRlcmxlYXZlICovDQorLy8vIFVucGFja3MgdGhl
IG9kZC1pbmRleGVkIHZlY3RvciBlbGVtZW50cyBmcm9tIHR3byAyNTYtYml0IHZlY3RvcnMgb2YN
CisvLy8gICAgWzQgeCBkb3VibGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
VU5QQ0tIUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCisv
Ly8gICAgQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0
dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsyNTU6MTkyXSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxOTE6MTI4XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBcbg0K
Ky8vLyAgICBCaXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhl
IHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMjU1OjE5Ml0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQg
dmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bTI1Nl91bnBhY2toaV9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyNpZmRlZiBf
X0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl91bnBja2hwZDI1NiAo
KF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYiwgMSwgNSwgMSsyLCA1KzIpOw0K
KyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgZXZlbi1pbmRleGVkIHZlY3RvciBlbGVt
ZW50cyBmcm9tIHR3byAyNTYtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzQgeCBkb3VibGVdIGFu
ZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbNjM6MF0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0
cyBbMTkxOjEyOF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlIHJldHVybiB2
YWx1ZS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRz
IFsxOTE6MTI4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUgcmV0dXJuIHZh
bHVlLiBcbg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1
NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3VucGFja2xvX3BkKF9fbTI1NmQgX19hLCBf
X20yNTZkIF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTI1NmQpIF9f
YnVpbHRpbl9pYTMyX3VucGNrbHBkMjU2ICgoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KKyNl
bHNlDQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRkZilfX2EsIChfX3Y0
ZGYpX19iLCAwLCA0LCAwKzIsIDQrMik7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRo
ZSAzMi1iaXQgdmVjdG9yIGVsZW1lbnRzIDIsIDMsIDYgYW5kIDcgZnJvbSBlYWNoIG9mIHRoZQ0K
Ky8vLyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCBpbnRlcmxlYXZl
cyB0aGVtIGludG8gYSAyNTYtYml0DQorLy8vICAgIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTow
XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRz
IFsyMjM6MTkyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmV0dXJuIHZh
bHVlLiBcbg0KKy8vLyAgICBCaXRzIFsyNTU6MjI0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMjM6
MTkyXSBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs2MzozMl0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAg
Qml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZSByZXR1cm4g
dmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzIyMzoxOTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5
MToxNjBdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzI1NToyMjRdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZSByZXR1cm4gdmFsdWUuDQorLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgaW50
ZXJsZWF2ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X3VucGFja2hpX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyNp
ZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBz
MjU2ICgoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWls
dGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iLCAyLCAxMCwgMisxLCAx
MCsxLCA2LCAxNCwgNisxLCAxNCsxKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFVucGFja3MgdGhl
IDMyLWJpdCB2ZWN0b3IgZWxlbWVudHMgMCwgMSwgNCBhbmQgNSBmcm9tIGVhY2ggb2YgdGhlDQor
Ly8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0gYW5kIGludGVybGVhdmVz
IHRoZW0gaW50byBhIDI1Ni1iaXQNCisvLy8gICAgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4gXG4NCisvLy8gICAgQml0cyBbMzE6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0g
b2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbNjM6MzJdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsx
NTk6MTI4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmV0dXJuIHZhbHVl
LiBcbg0KKy8vLyAgICBCaXRzIFsxOTE6MTYwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMjM6MTky
XSBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRz
IFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgcmV0dXJuIHZhbHVl
LiBcbg0KKy8vLyAgICBCaXRzIFsxNTk6MTI4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYw
XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsxOTE6MTYwXSBhcmUgd3Jp
dHRlbiB0byBiaXRzIFsyNTU6MjI0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVh
dmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl91bnBhY2tsb19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisjaWZkZWYg
X19HTlVDX18NCisgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl91bnBja2xwczI1NiAo
KF9fdjhzZilfX2EsIChfX3Y4c2YpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYiwgMCwgOCwgMCsxLCA4KzEsIDQs
IDEyLCA0KzEsIDEyKzEpOw0KKyNlbmRpZg0KK30NCisNCisvKiBCaXQgVGVzdCAqLw0KKy8vLyBH
aXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwg
cGVyZm9ybSBhbg0KKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUg
ZG91YmxlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVj
dG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlDQor
Ly8vICAgIHZlY3Rvci4NCisvLy8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRh
dGVkIGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWly
IG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0
cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3
aXNlIHRoZQ0KKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0aGVy
ZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJl
IHRoZQ0KKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUg
c2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQorLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFn
IGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8v
ICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBaRiBmbGFnLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KKy8vLyBccmV0dXJucyB0aGUgWkYgZmxhZyBpbiB0aGUgRUZMQUdTIHJlZ2lzdGVy
Lg0KK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX3Rlc3R6
X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lh
MzJfdnRlc3R6cGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIEdpdmVu
IHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCBwZXJm
b3JtIGFuDQorLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3Vi
bGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlDQorLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3Ig
YW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHNlY29uZCBzb3VyY2UNCisvLy8g
ICAgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQg
YXMgZm9sbG93czogXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Yg
ZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXRzIG9m
IGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2Ug
dGhlDQorLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJlIGlz
IGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhl
DQorLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWdu
LWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCisvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMg
c2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAg
VGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIENGIGZsYWcuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uDQorLy8vIFxyZXR1cm5zIHRoZSBDRiBmbGFnIGluIHRoZSBFRkxBR1MgcmVnaXN0ZXIuDQor
c3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCitfbW1fdGVzdGNfcGQo
X19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl92
dGVzdGNwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gR2l2ZW4gdHdv
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHBlcmZvcm0g
YW4NCisvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1w
cmVjaXNpb24gZWxlbWVudCBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQg
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8vLyAgICB2
ZWN0b3IuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBm
b2xsb3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3Vi
bGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMgb2YgYm90
aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUN
CisvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisv
Ly8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0
IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQg
dG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBUaGlz
IGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQg
dG8gMCwNCisvLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZURVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8g
XHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLCBvdGhl
cndpc2UgcmV0dXJucyAwLg0KK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJT
MTI4DQorX21tX3Rlc3RuemNfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7
DQorfQ0KKw0KKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9m
IFs0IHggZmxvYXRdLCBwZXJmb3JtIGFuDQorLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21w
YXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlDQorLy8vICAgIGZp
cnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHNl
Y29uZCBzb3VyY2UNCisvLy8gICAgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgRUZMQUdTIHJl
Z2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisv
Ly8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNl
dCB0byAwLiBPdGhlcndpc2UgdGhlDQorLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQor
Ly8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24g
ZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50
IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCisvLy8gICAgaXMg
MSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQg
dG8gMS4gXG4NCisvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhl
IFpGIGZsYWcuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyB0aGUgWkYgZmxhZy4NCitzdGF0aWMg
X19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV90ZXN0el9wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdHpwcygo
X192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gR2l2ZW4gdHdvIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgcGVyZm9ybSBhbg0KKy8vLyAg
ICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBl
bGVtZW50IGluIHRoZQ0KKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVz
cG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlDQorLy8vICAgIHZlY3Rvci4NCisv
Ly8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxu
DQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNp
b24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRz
IGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KKy8vLyAgICBa
RiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUg
cGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWdu
LWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNl
Y29uZCBlbGVtZW50DQorLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhl
cndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIFRoaXMgaW50cmluc2lj
IHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFnLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVy
bnMgdGhlIENGIGZsYWcuDQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMx
MjgNCitfbW1fdGVzdGNfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4g
X19idWlsdGluX2lhMzJfdnRlc3RjcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQor
DQorLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBm
bG9hdF0sIHBlcmZvcm0gYW4NCisvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24g
b2YgdGhlIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudCBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291
cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNv
dXJjZQ0KKy8vLyAgICB2ZWN0b3IuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIg
aXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBv
bmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBz
aWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAu
IE90aGVyd2lzZSB0aGUNCisvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAg
SWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50
cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBh
bmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0aGUg
Q0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBc
bg0KKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENG
IGZsYWdzIGFyZSBzZXQgdG8gMCwNCisvLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxyZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBz
ZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVybnMgMC4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVG
QVVMVF9GTl9BVFRSUzEyOA0KK19tbV90ZXN0bnpjX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2Ip
DQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMoKF9fdjRzZilfX2EsIChf
X3Y0c2YpX19iKTsNCit9DQorDQorLy8vIEdpdmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBwZXJmb3JtIGFuDQorLy8vICAgIGVsZW1lbnQtYnkt
ZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIGluIHRo
ZQ0KKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVt
ZW50cyBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8vLyAgICB2ZWN0b3IuDQorLy8vDQorLy8vICAg
IFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJ
ZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRz
IHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhl
IFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCisvLy8gICAgWkYgZmxhZyBpcyBz
ZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91
YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXQgb2YgdGhl
IGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVu
dA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBD
RiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRo
ZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZU
RVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgdGhlIFpG
IGZsYWcuDQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZf
dGVzdHpfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0
aW5faWEzMl92dGVzdHpwZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KK30NCisNCisv
Ly8gR2l2ZW4gdHdvIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbNCB4IGRvdWJs
ZV0sIHBlcmZvcm0gYW4NCisvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2Yg
dGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgaW4gdGhlDQorLy8vICAgIGZpcnN0IHNvdXJj
ZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzZWNvbmQgc291
cmNlDQorLy8vICAgIHZlY3Rvci4NCisvLy8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBp
cyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9u
ZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNp
Z24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4g
T3RoZXJ3aXNlIHRoZQ0KKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBJ
ZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRz
IHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFu
ZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQorLy8vICAgIGlzIDEsIHRoZSBD
RiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxu
DQorLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFn
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyB0aGUgQ0YgZmxhZy4NCitzdGF0aWMgX19pbmxp
bmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl90ZXN0Y19wZChfX20yNTZkIF9fYSwg
X19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BkMjU2KChf
X3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSwgcGVyZm9ybSBhbg0KKy8vLyAg
ICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBl
bGVtZW50cyBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJl
c3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNlY29uZCBzb3VyY2UNCisvLy8gICAgdmVjdG9yLg0K
Ky8vLw0KKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czog
XG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNp
c2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVu
dHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQorLy8vICAg
IFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9u
ZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNp
Z24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUg
c2Vjb25kIGVsZW1lbnQNCisvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90
aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgVGhpcyBpbnRyaW5z
aWMgcmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsDQor
Ly8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5z
IDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwgb3RoZXJ3aXNlIHJl
dHVybnMgMC4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl90ZXN0bnpjX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7DQorICByZXR1cm4gX19i
dWlsdGluX2lhMzJfdnRlc3RuemNwZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KK30N
CisNCisvLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbOCB4
IGZsb2F0XSwgcGVyZm9ybSBhbg0KKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNv
biBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KKy8vLyAgICBmaXJzdCBz
b3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQg
c291cmNlDQorLy8vICAgIHZlY3Rvci4NCisvLy8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3Rl
ciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAg
IHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZQ0KKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAg
ICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1l
bnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAw
IGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQorLy8vICAgIGlzIDEsIHRo
ZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEu
IFxuDQorLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBaRiBm
bGFnLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgdGhlIFpGIGZsYWcuDQorc3RhdGljIF9faW5s
aW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdGVzdHpfcHMoX19tMjU2IF9fYSwg
X19tMjU2IF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3R6cHMyNTYoKF9f
djhzZilfX2EsIChfX3Y4c2YpX19iKTsNCit9DQorDQorLy8vIEdpdmVuIHR3byAyNTYtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIHBlcmZvcm0gYW4NCisvLy8gICAg
ZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIHNpbmdsZS1wcmVjaXNpb24gZWxl
bWVudCBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3Bv
bmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8vLyAgICB2ZWN0b3IuDQorLy8v
DQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0K
Ky8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9u
IGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBh
cmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCisvLy8gICAgWkYg
ZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBh
aXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1i
aXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNv
bmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3
aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBUaGlzIGludHJpbnNpYyBy
ZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ0YgZmxhZy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZURVNUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5z
IHRoZSBDRiBmbGFnLg0KK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X3Rlc3RjX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX3Z0ZXN0Y3BzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQorfQ0K
Kw0KKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs4IHgg
ZmxvYXRdLCBwZXJmb3JtIGFuDQorLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29u
IG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIGluIHRoZQ0KKy8vLyAgICBmaXJzdCBz
b3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc2Vjb25k
IHNvdXJjZQ0KKy8vLyAgICB2ZWN0b3IuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0
ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFz
dCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAg
ICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRv
IDAuIE90aGVyd2lzZSB0aGUNCisvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8g
ICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVt
ZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMg
MCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0
aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAx
LiBcbg0KKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5k
IENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCisvLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUFMgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFy
ZSBzZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVybnMgMC4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl90ZXN0bnpjX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBf
X2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMyNTYoKF9fdjhzZilf
X2EsIChfX3Y4c2YpX19iKTsNCit9DQorDQorLy8vIEdpdmVuIHR3byAyNTYtYml0IGludGVnZXIg
dmVjdG9ycywgcGVyZm9ybSBhIGJpdC1ieS1iaXQgY29tcGFyaXNvbg0KKy8vLyAgICBvZiB0aGUg
dHdvIHNvdXJjZSB2ZWN0b3JzLg0KKy8vLw0KKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlz
IHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25l
IHBhaXIgb2YgYml0cyB3aGVyZSBib3RoIGJpdHMgYXJlIDEsIHRoZSBaRiBmbGFnDQorLy8vICAg
IGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8v
ICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJpdHMgd2hlcmUgdGhlIGJpdCBm
cm9tIHRoZSBmaXJzdCBzb3VyY2UNCisvLy8gICAgdmVjdG9yIGlzIDAgYW5kIHRoZSBiaXQgZnJv
bSB0aGUgc2Vjb25kIHNvdXJjZSB2ZWN0b3IgaXMgMSwgdGhlIENGIGZsYWcNCisvLy8gICAgaXMg
c2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAg
VGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxw
YXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJu
cyB0aGUgWkYgZmxhZy4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl90ZXN0el9zaTI1NihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpDQorew0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0ejI1NigoX192NGRpKV9fYSwgKF9fdjRkaSlfX2IpOw0K
K30NCisNCisvLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3JzLCBwZXJmb3JtIGEg
Yml0LWJ5LWJpdCBjb21wYXJpc29uDQorLy8vICAgIG9mIHRoZSB0d28gc291cmNlIHZlY3RvcnMu
DQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dz
OiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJl
IGJvdGggYml0cyBhcmUgMSwgdGhlIFpGIGZsYWcNCisvLy8gICAgaXMgc2V0IHRvIDAuIE90aGVy
d2lzZSB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSB0aGUgYml0IGZyb20gdGhlIGZpcnN0IHNvdXJj
ZQ0KKy8vLyAgICB2ZWN0b3IgaXMgMCBhbmQgdGhlIGJpdCBmcm9tIHRoZSBzZWNvbmQgc291cmNl
IHZlY3RvciBpcyAxLCB0aGUgQ0YgZmxhZw0KKy8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNl
IHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1
cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ0YgZmxhZy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIHRoZSBDRiBmbGFnLg0KK3N0
YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3Rlc3RjX3NpMjU2
KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJf
cHRlc3RjMjU2KChfX3Y0ZGkpX19hLCAoX192NGRpKV9fYik7DQorfQ0KKw0KKy8vLyBHaXZlbiB0
d28gMjU2LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIHBlcmZvcm0gYSBiaXQtYnktYml0IGNvbXBhcmlz
b24NCisvLy8gICAgb2YgdGhlIHR3byBzb3VyY2UgdmVjdG9ycy4NCisvLy8NCisvLy8gICAgVGhl
IEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIElmIHRo
ZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJpdHMgd2hlcmUgYm90aCBiaXRzIGFyZSAxLCB0
aGUgWkYgZmxhZw0KKy8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBaRiBmbGFnIGlz
IHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBi
aXRzIHdoZXJlIHRoZSBiaXQgZnJvbSB0aGUgZmlyc3Qgc291cmNlDQorLy8vICAgIHZlY3RvciBp
cyAwIGFuZCB0aGUgYml0IGZyb20gdGhlIHNlY29uZCBzb3VyY2UgdmVjdG9yIGlzIDEsIHRoZSBD
RiBmbGFnDQorLy8vICAgIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0
IHRvIDEuIFxuDQorLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgMSBpZiBib3RoIHRoZSBa
RiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLA0KKy8vLyAgICBvdGhlcndpc2UgaXQgcmV0dXJu
cyAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVj
dG9yLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4N
CisvLy8gXHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAw
LCBvdGhlcndpc2UgcmV0dXJucyAwLg0KK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tMjU2X3Rlc3RuemNfc2kyNTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQ0K
K3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdG56YzI1NigoX192NGRpKV9fYSwgKF9f
djRkaSlfX2IpOw0KK30NCisNCisvKiBWZWN0b3IgZXh0cmFjdCBzaWduIG1hc2sgKi8NCisvLy8g
RXh0cmFjdHMgdGhlIHNpZ24gYml0cyBvZiBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50
IGVsZW1lbnRzDQorLy8vICAgIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFu
ZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgb3JkZXINCisvLy8gICAgYml0cyBvZiB0aGUgcmV0
dXJuIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk1TS1BEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZG91YmxlLXByZWNpc2lvbg0KKy8v
LyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMgd2l0aCBzaWduIGJpdHMgdG8gYmUgZXh0cmFjdGVk
Lg0KKy8vLyBccmV0dXJucyBUaGUgc2lnbiBiaXRzIGZyb20gdGhlIG9wZXJhbmQsIHdyaXR0ZW4g
dG8gYml0cyBbMzowXS4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl9tb3ZlbWFza19wZChfX20yNTZkIF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGlu
X2lhMzJfbW92bXNrcGQyNTYoKF9fdjRkZilfX2EpOw0KK30NCisNCisvLy8gRXh0cmFjdHMgdGhl
IHNpZ24gYml0cyBvZiBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzDQor
Ly8vICAgIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYW5kIHdyaXRlcyB0aGVt
IHRvIHRoZSBsb3dlciBvcmRlcg0KKy8vLyAgICBiaXRzIG9mIHRoZSByZXR1cm4gdmFsdWUuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTVNLUFMgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcNCisvLy8gICAg
cG9pbnQgdmFsdWVzIHdpdGggc2lnbiBiaXRzIHRvIGJlIGV4dHJhY3RlZC4NCisvLy8gXHJldHVy
bnMgVGhlIHNpZ24gYml0cyBmcm9tIHRoZSBvcGVyYW5kLCB3cml0dGVuIHRvIGJpdHMgWzc6MF0u
DQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbW92ZW1h
c2tfcHMoX19tMjU2IF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfbW92bXNrcHMy
NTYoKF9fdjhzZilfX2EpOw0KK30NCisNCisvKiBWZWN0b3IgX196ZXJvICovDQorLy8vIFplcm9l
cyB0aGUgY29udGVudHMgb2YgYWxsIFhNTSBvciBZTU0gcmVnaXN0ZXJzLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlpFUk9BTEwgPC9jPiBpbnN0cnVjdGlvbi4NCisjaWZkZWYgX19H
TlVDX18NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCisjZWxzZQ0K
K3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4IikpKQ0KKyNlbmRpZg0KK19tbTI1Nl96ZXJvYWxs
KHZvaWQpDQorew0KKyAgX19idWlsdGluX2lhMzJfdnplcm9hbGwoKTsNCit9DQorDQorLy8vIFpl
cm9lcyB0aGUgdXBwZXIgMTI4IGJpdHMgKGJpdHMgMjU1OjEyOCkgb2YgYWxsIFlNTSByZWdpc3Rl
cnMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWkVST1VQUEVSIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8NCisjaWZkZWYgX19HTlVDX18NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCisjZWxzZQ0KK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRl
X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4IikpKQ0K
KyNlbmRpZg0KK19tbTI1Nl96ZXJvdXBwZXIodm9pZCkNCit7DQorICBfX2J1aWx0aW5faWEzMl92
emVyb3VwcGVyKCk7DQorfQ0KKw0KKy8qIFZlY3RvciBsb2FkIHdpdGggYnJvYWRjYXN0ICovDQor
Ly8vIExvYWRzIGEgc2NhbGFyIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWUg
ZnJvbSB0aGUNCisvLy8gICAgc3BlY2lmaWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2Eg
YW5kIGJyb2FkY2FzdHMgaXQgdG8gdGhlIGVsZW1lbnRzDQorLy8vICAgIG9mIGEgWzQgeCBmbG9h
dF0gdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJST0FEQ0FTVFNTIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgVGhlIHNpbmds
ZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWUgdG8gYmUgYnJvYWRjYXN0Lg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIDMyLWJpdCBlbGVt
ZW50cyBhcmUgc2V0DQorLy8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuDQorc3Rh
dGljIF9faW5saW5lIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCitfbW1fYnJvYWRjYXN0
X3NzKGZsb2F0IGNvbnN0ICpfX2EpDQorew0KKyAgZmxvYXQgX19mID0gKl9fYTsNCisgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20xMjgpKF9fdjRzZil7IF9fZiwgX19mLCBfX2YsIF9fZiB9Ow0K
K30NCisNCisvLy8gTG9hZHMgYSBzY2FsYXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2lu
dCB2YWx1ZSBmcm9tIHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5
IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byB0aGUgZWxlbWVudHMNCisvLy8gICAgb2YgYSBb
NCB4IGRvdWJsZV0gdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJST0FE
Q0FTVFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
VGhlIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWUgdG8gYmUgYnJvYWRjYXN0
Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSB3aG9zZSA2
NC1iaXQgZWxlbWVudHMgYXJlIHNldA0KKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0IHZh
bHVlLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9icm9hZGNhc3Rfc2QoZG91YmxlIGNvbnN0ICpfX2EpDQorew0KKyAgZG91YmxlIF9fZCA9ICpf
X2E7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2ZCkoX192NGRmKXsgX19kLCBfX2Qs
IF9fZCwgX19kIH07DQorfQ0KKw0KKy8vLyBMb2FkcyBhIHNjYWxhciBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nIHBvaW50IHZhbHVlIGZyb20gdGhlDQorLy8vICAgIHNwZWNpZmllZCBhZGRyZXNz
IHBvaW50ZWQgdG8gYnkgXGEgX19hIGFuZCBicm9hZGNhc3RzIGl0IHRvIHRoZSBlbGVtZW50cw0K
Ky8vLyAgICBvZiBhIFs4IHggZmxvYXRdIHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZCUk9BRENBU1RTUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIFRoZSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIHRv
IGJlIGJyb2FkY2FzdC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XSB3aG9zZSAzMi1iaXQgZWxlbWVudHMgYXJlIHNldA0KKy8vLyAgICBlcXVhbCB0byB0aGUg
YnJvYWRjYXN0IHZhbHVlLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X2Jyb2FkY2FzdF9zcyhmbG9hdCBjb25zdCAqX19hKQ0KK3sNCisgIGZsb2F0
IF9fZiA9ICpfX2E7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2KShfX3Y4c2YpeyBf
X2YsIF9fZiwgX19mLCBfX2YsIF9fZiwgX19mLCBfX2YsIF9fZiB9Ow0KK30NCisNCisvLy8gTG9h
ZHMgdGhlIGRhdGEgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBmcm9tIHRo
ZQ0KKy8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJv
YWRjYXN0cyBpdCB0byAxMjgtYml0DQorLy8vICAgIGVsZW1lbnRzIGluIGEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJST0FE
Q0FTVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBUaGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGJlIGJyb2FkY2FzdC4NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2hvc2UgMTI4LWJp
dCBlbGVtZW50cyBhcmUgc2V0DQorLy8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUu
DQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Jy
b2FkY2FzdF9wZChfX20xMjhkIGNvbnN0ICpfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAg
cmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl92YnJvYWRjYXN0ZjEyOF9wZDI1NiAoX19h
KTsNCisjZWxzZQ0KKyAgX19tMTI4ZCBfX2IgPSBfbW1fbG9hZHVfcGQoKGNvbnN0IGRvdWJsZSAq
KV9fYSk7DQorICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJk
ZilfX2IsIChfX3YyZGYpX19iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDEsIDAsIDEpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gTG9hZHMgdGhlIGRhdGEg
ZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGZyb20gdGhlDQorLy8vICAgIHNw
ZWNpZmllZCBhZGRyZXNzIHBvaW50ZWQgdG8gYnkgXGEgX19hIGFuZCBicm9hZGNhc3RzIGl0IHRv
IDEyOC1iaXQNCisvLy8gICAgZWxlbWVudHMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RGMTI4IDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgVGhlIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGJlIGJyb2FkY2FzdC4NCisvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSB3aG9zZSAxMjgtYml0IGVsZW1lbnRzIGFyZSBz
ZXQNCisvLy8gICAgZXF1YWwgdG8gdGhlIGJyb2FkY2FzdCB2YWx1ZS4NCitzdGF0aWMgX19pbmxp
bmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9icm9hZGNhc3RfcHMoX19tMTI4
IGNvbnN0ICpfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTYpIF9f
YnVpbHRpbl9pYTMyX3Zicm9hZGNhc3RmMTI4X3BzMjU2IChfX2EpOw0KKyNlbHNlDQorICBfX20x
MjggX19iID0gX21tX2xvYWR1X3BzKChjb25zdCBmbG9hdCAqKV9fYSk7DQorICByZXR1cm4gKF9f
bTI1NilfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYiwgKF9fdjRzZilfX2IsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAxLCAyLCAzLCAwLCAx
LCAyLCAzKTsNCisjZW5kaWYNCit9DQorDQorLyogU0lNRCBsb2FkIG9wcyAqLw0KKy8vLyBMb2Fk
cyA0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAzMi1ieXRl
IGFsaWduZWQNCisvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlu
dG8gYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1PVkFQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8v
ICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFp
bmluZw0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbTI1Nl9sb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wKQ0KK3sNCisgIHJldHVybiAq
KF9fbTI1NmQgKilfX3A7DQorfQ0KKw0KKy8vLyBMb2FkcyA4IHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAzMi1ieXRlIGFsaWduZWQNCisvLy8gICAgbWVtb3J5
IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9p
bnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGZsb2F0IHZhbHVlcy4NCisvLy8g
XHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBt
b3ZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW0yNTZfbG9hZF9wcyhmbG9hdCBjb25zdCAqX19wKQ0KK3sNCisgIHJldHVybiAqKF9fbTI1
NiAqKV9fcDsNCit9DQorDQorLy8vIExvYWRzIDQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBw
b2ludCB2YWx1ZXMgZnJvbSBhbiB1bmFsaWduZWQNCisvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBv
aW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBj
b250YWluaW5nIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcNCisvLy8gICAgcG9pbnQgdmFsdWVz
Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSBtb3ZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tMjU2X2xvYWR1X3BkKGRvdWJsZSBjb25zdCAqX19wKQ0KK3sNCisgIHN0
cnVjdCBfX2xvYWR1X3BkIHsNCisgICAgX19tMjU2ZCBfX3Y7DQorICB9IF9fYXR0cmlidXRlX18o
KF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1
X3BkKilfX3ApLT5fX3Y7DQorfQ0KKw0KKy8vLyBMb2FkcyA4IHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYW4gdW5hbGlnbmVkDQorLy8vICAgIG1lbW9yeSBsb2Nh
dGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2Nh
dGlvbiBjb250YWluaW5nIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcNCisvLy8gICAgcG9pbnQg
dmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNv
bnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9sb2FkdV9wcyhmbG9hdCBjb25zdCAqX19wKQ0KK3sNCisg
IHN0cnVjdCBfX2xvYWR1X3BzIHsNCisgICAgX19tMjU2IF9fdjsNCisgIH0gX19hdHRyaWJ1dGVf
XygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgcmV0dXJuICgoc3RydWN0IF9fbG9h
ZHVfcHMqKV9fcCktPl9fdjsNCit9DQorDQorLy8vIExvYWRzIDI1NiBiaXRzIG9mIGludGVnZXIg
ZGF0YSBmcm9tIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbiBwb2lu
dGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGVsZW1lbnRzIG9mIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUUEgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIDMyLWJ5dGUgYWxpZ25lZCBwb2lu
dGVyIHRvIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGludGVnZXINCisvLy8g
ICAgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbTI1Nl9sb2FkX3NpMjU2KF9fbTI1NmkgY29uc3QgKl9fcCkNCit7DQor
ICByZXR1cm4gKl9fcDsNCit9DQorDQorLy8vIExvYWRzIDI1NiBiaXRzIG9mIGludGVnZXIgZGF0
YSBmcm9tIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24NCisvLy8gICAgcG9pbnRlZCB0byBi
eSBcYSBfX3AgaW50byBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTU9WRFFVIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIGludGVnZXIgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9sb2FkdV9zaTI1NihfX20yNTZpIGNvbnN0
ICpfX3ApDQorew0KKyAgc3RydWN0IF9fbG9hZHVfc2kyNTYgew0KKyAgICBfX20yNTZpIF9fdjsN
CisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgcmV0
dXJuICgoc3RydWN0IF9fbG9hZHVfc2kyNTYqKV9fcCktPl9fdjsNCit9DQorDQorLy8vIExvYWRz
IDI1NiBiaXRzIG9mIGludGVnZXIgZGF0YSBmcm9tIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRp
b24NCisvLy8gICAgcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDI1Ni1iaXQgaW50ZWdlciB2
ZWN0b3IuIFRoaXMgaW50cmluc2ljIG1heQ0KKy8vLyAgICBwZXJmb3JtIGJldHRlciB0aGFuIFxj
IF9tbTI1Nl9sb2FkdV9zaTI1NiB3aGVuIHRoZSBkYXRhIGNyb3NzZXMgYSBjYWNoZQ0KKy8vLyAg
ICBsaW5lIGJvdW5kYXJ5Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkxERFFVIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVy
IHRvIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGludGVnZXIgdmFsdWVzLg0K
Ky8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbW92
ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl9sZGRxdV9zaTI1NihfX20yNTZpIGNvbnN0ICpfX3ApDQorew0KKyAgcmV0dXJuIChf
X20yNTZpKV9fYnVpbHRpbl9pYTMyX2xkZHF1MjU2KChjaGFyIGNvbnN0ICopX19wKTsNCit9DQor
DQorLyogU0lNRCBzdG9yZSBvcHMgKi8NCisvLy8gU3RvcmVzIGRvdWJsZS1wcmVjaXNpb24gZmxv
YXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4
IGRvdWJsZV0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8g
YnkNCisvLy8gICAgXGEgX19wLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQ
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgMzIt
Ynl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2Vp
dmUgdGhlDQorLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYWluZyBwb2ludCB2YWx1ZXMuDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KK3N0YXRpYyBfX2lubGluZSB2b2lk
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zdG9yZV9wZChkb3VibGUgKl9fcCwgX19tMjU2
ZCBfX2EpDQorew0KKyAgKihfX20yNTZkICopX19wID0gX19hOw0KK30NCisNCisvLy8gU3RvcmVz
IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZl
Y3Rvcg0KKy8vLyAgICBvZiBbOCB4IGZsb2F0XSB0byBhIDMyLWJ5dGUgYWxpZ25lZCBtZW1vcnkg
bG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisv
Ly8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0
IHdpbGwgcmVjZWl2ZSB0aGUNCisvLy8gICAgZmxvYXQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIG1vdmVkLg0KK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbTI1Nl9zdG9yZV9wcyhmbG9hdCAqX19wLCBfX20yNTYgX19hKQ0KK3sNCisgICoo
X19tMjU2ICopX19wID0gX19hOw0KK30NCisNCisvLy8gU3RvcmVzIGRvdWJsZS1wcmVjaXNpb24g
ZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KKy8vLyAgICBvZiBb
NCB4IGRvdWJsZV0gdG8gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5
IFxhIF9fcC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBt
ZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGRvdWJsZS1wcmVjaXNpb24NCisv
Ly8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBi
ZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0y
NTZfc3RvcmV1X3BkKGRvdWJsZSAqX19wLCBfX20yNTZkIF9fYSkNCit7DQorICBzdHJ1Y3QgX19z
dG9yZXVfcGQgew0KKyAgICBfX20yNTZkIF9fdjsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNr
ZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19zdG9yZXVfcGQqKV9fcCktPl9f
diA9IF9fYTsNCit9DQorDQorLy8vIFN0b3JlcyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBv
aW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3INCisvLy8gICAgb2YgWzggeCBmbG9hdF0g
dG8gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcC4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRp
b24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZh
bHVlcyB0byBiZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfc3RvcmV1X3BzKGZsb2F0ICpfX3AsIF9fbTI1NiBfX2EpDQorew0KKyAgc3Ry
dWN0IF9fc3RvcmV1X3BzIHsNCisgICAgX19tMjU2IF9fdjsNCisgIH0gX19hdHRyaWJ1dGVfXygo
X19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19zdG9yZXVfcHMqKV9f
cCktPl9fdiA9IF9fYTsNCit9DQorDQorLy8vIFN0b3JlcyBpbnRlZ2VyIHZhbHVlcyBmcm9tIGEg
MjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDMyLWJ5dGUNCisvLy8gICAgYWxpZ25lZCBtZW1v
cnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTU9WRFFBIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3AN
CisvLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0
aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCisvLy8gICAgaW50ZWdlciB2YWx1ZXMuDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZh
bHVlcyB0byBiZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfc3RvcmVfc2kyNTYoX19tMjU2aSAqX19wLCBfX20yNTZpIF9fYSkNCit7DQor
ICAqX19wID0gX19hOw0KK30NCisNCisvLy8gU3RvcmVzIGludGVnZXIgdmFsdWVzIGZyb20gYSAy
NTYtYml0IGludGVnZXIgdmVjdG9yIHRvIGFuIHVuYWxpZ25lZA0KKy8vLyAgICBtZW1vcnkgbG9j
YXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWTU9WRFFVIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8g
ICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBp
bnRlZ2VyIHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KK3N0YXRpYyBfX2lu
bGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zdG9yZXVfc2kyNTYoX19tMjU2
aSAqX19wLCBfX20yNTZpIF9fYSkNCit7DQorICBzdHJ1Y3QgX19zdG9yZXVfc2kyNTYgew0KKyAg
ICBfX20yNTZpIF9fdjsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KKyAgKChzdHJ1Y3QgX19zdG9yZXVfc2kyNTYqKV9fcCktPl9fdiA9IF9fYTsNCit9
DQorDQorLyogQ29uZGl0aW9uYWwgbG9hZCBvcHMgKi8NCisvLy8gQ29uZGl0aW9uYWxseSBsb2Fk
cyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KKy8vLyAg
ICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDEyOC1iaXQgdmVj
dG9yIG9mDQorLy8vICAgIFsyIHggZG91YmxlXSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMg
YXNzb2NpYXRlZCB3aXRoIGVhY2ggZGF0YQ0KKy8vLyAgICBlbGVtZW50Lg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0
IGNvbnRhaW5zIHRoZSBkb3VibGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nIHBvaW50IHZh
bHVlcy4NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQorLy8vICAg
IGVhY2ggZGF0YSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJp
dCBpcyB6ZXJvLCB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbWVtb3J5
IGxvY2F0aW9uIGlzIG5vdCBsb2FkZWQgYW5kIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGZp
ZWxkIGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21t
X21hc2tsb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wLCBfX20xMjhpIF9fbSkNCit7DQorICByZXR1
cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbWFza2xvYWRwZCgoY29uc3QgX192MmRmICopX19w
LCAoX192MmRpKV9fbSk7DQorfQ0KKw0KKy8vLyBDb25kaXRpb25hbGx5IGxvYWRzIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMgZnJvbSBhDQorLy8vICAgIG1lbW9yeSBs
b2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YNCisv
Ly8gICAgWzQgeCBkb3VibGVdLCBkZXBlbmRpbmcgb24gdGhlIG1hc2sgYml0cyBhc3NvY2lhdGVk
IHdpdGggZWFjaCBkYXRhDQorLy8vICAgIGVsZW1lbnQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTUFTS01PVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMg
dGhlIGRvdWJsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KKy8v
LyBccGFyYW0gX19tDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IHF1
YWR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdA0KKy8vLyAgICBzaWduaWZpY2Fu
dCBiaXQgb2YgZWFjaCBxdWFkd29yZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4g
SWYgYQ0KKy8vLyAgICBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBp
biB0aGUgbWVtb3J5IGxvY2F0aW9uIGlzIG5vdA0KKy8vLyAgICBsb2FkZWQgYW5kIHRoZSBjb3Jy
ZXNwb25kaW5nIGZpZWxkIGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQorLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhl
IGxvYWRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X21hc2tsb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wLCBfX20yNTZpIF9fbSkN
Cit7DQorICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfbWFza2xvYWRwZDI1NigoY29u
c3QgX192NGRmICopX19wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fdjRkaSlfX20pOw0KK30NCisNCisvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KKy8vLyAgICBt
ZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDEyOC1iaXQgdmVjdG9y
IG9mDQorLy8vICAgIFs0IHggZmxvYXRdLCBkZXBlbmRpbmcgb24gdGhlIG1hc2sgYml0cyBhc3Nv
Y2lhdGVkIHdpdGggZWFjaCBkYXRhDQorLy8vICAgIGVsZW1lbnQuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29u
dGFpbnMgdGhlIHNpbmdsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVz
Lg0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YNCisvLy8gICAgZWFj
aCBkYXRhIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbWFzayBiaXRzLiBJZiBhIG1hc2sgYml0IGlz
IHplcm8sIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1vcnkgbG9j
YXRpb24gaXMgbm90IGxvYWRlZCBhbmQgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgZmllbGQg
aW4gdGhlIHJldHVybiB2YWx1ZSBpcyBzZXQgdG8gemVyby4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLg0K
K3N0YXRpYyBfX2lubGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX21hc2ts
b2FkX3BzKGZsb2F0IGNvbnN0ICpfX3AsIF9fbTEyOGkgX19tKQ0KK3sNCisgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMoKGNvbnN0IF9fdjRzZiAqKV9fcCwgKF9fdjRz
aSlfX20pOw0KK30NCisNCisvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24g
cG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDI1Ni1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFs4
IHggZmxvYXRdLCBkZXBlbmRpbmcgb24gdGhlIG1hc2sgYml0cyBhc3NvY2lhdGVkIHdpdGggZWFj
aCBkYXRhDQorLy8vICAgIGVsZW1lbnQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8g
ICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhlIHNpbmds
ZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KKy8vLyBccGFyYW0g
X19tDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGR3b3JkXSBjb250
YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdA0KKy8vLyAgICBzaWduaWZpY2FudCBiaXQgb2YgZWFj
aCBkd29yZCBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrDQorLy8v
ICAgIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbWVtb3J5IGxv
Y2F0aW9uIGlzIG5vdCBsb2FkZWQNCisvLy8gICAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxk
IGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQorLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZhbHVlcy4N
CitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9tYXNr
bG9hZF9wcyhmbG9hdCBjb25zdCAqX19wLCBfX20yNTZpIF9fbSkNCit7DQorICByZXR1cm4gKF9f
bTI1NilfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHBzMjU2KChjb25zdCBfX3Y4c2YgKilfX3AsIChf
X3Y4c2kpX19tKTsNCit9DQorDQorLyogQ29uZGl0aW9uYWwgc3RvcmUgb3BzICovDQorLy8vIE1v
dmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0
IHZlY3Rvcg0KKy8vLyAgICBvZiBbOCB4IGZsb2F0XSB0byBhIG1lbW9yeSBsb2NhdGlvbiBwb2lu
dGVkIHRvIGJ5IFxhIF9fcCwgYWNjb3JkaW5nIHRvDQorLy8vICAgIHRoZSBzcGVjaWZpZWQgbWFz
ay4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1v
cnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4NCisvLy8gXHBh
cmFtIF9fbQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBkd29yZF0g
Y29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3QNCisvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9m
IGVhY2ggZHdvcmQgZWxlbWVudCBpbiB0aGUgbWFzayB2ZWN0b3IgcmVwcmVzZW50cyB0aGUNCisv
Ly8gICAgbWFzayBiaXRzLiBJZiBhIG1hc2sgYml0IGlzIHplcm8sIHRoZSBjb3JyZXNwb25kaW5n
IHZhbHVlIGZyb20gdmVjdG9yDQorLy8vICAgIFxhIF9fYSBpcyBub3Qgc3RvcmVkIGFuZCB0aGUg
Y29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uDQorLy8vICAgIHBvaW50
ZWQgdG8gYnkgXGEgX19wIGlzIG5vdCBjaGFuZ2VkLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRv
IGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW0yNTZfbWFza3N0b3JlX3BzKGZsb2F0ICpfX3AsIF9fbTI1NmkgX19tLCBfX20yNTYgX19hKQ0K
K3sNCisgIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBzMjU2KChfX3Y4c2YgKilfX3AsIChfX3Y4
c2kpX19tLCAoX192OHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBNb3ZlcyBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdDQorLy8vICAgIHRv
IGEgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLCBhY2NvcmRpbmcgdG8gdGhl
IHNwZWNpZmllZA0KKy8vLyAgICBtYXNrLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1BU0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8v
ICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUg
ZmxvYXQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YN
CisvLy8gICAgZWFjaCBmaWVsZCBpbiB0aGUgbWFzayB2ZWN0b3IgcmVwcmVzZW50cyB0aGUgbWFz
ayBiaXRzLiBJZiBhIG1hc2sgYml0IGlzDQorLy8vICAgIHplcm8sIHRoZSBjb3JyZXNwb25kaW5n
IHZhbHVlIGZyb20gdmVjdG9yIFxhIF9fYSBpcyBub3Qgc3RvcmVkIGFuZCB0aGUNCisvLy8gICAg
Y29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkg
XGEgX19wIGlzIG5vdA0KKy8vLyAgICBjaGFuZ2VkLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0
byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4
DQorX21tX21hc2tzdG9yZV9wZChkb3VibGUgKl9fcCwgX19tMTI4aSBfX20sIF9fbTEyOGQgX19h
KQ0KK3sNCisgIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkKChfX3YyZGYgKilfX3AsIChfX3Yy
ZGkpX19tLCAoX192MmRmKV9fYSk7DQorfQ0KKw0KKy8vLyBNb3ZlcyBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdDQorLy8vICAgIHRv
IGEgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLCBhY2NvcmRpbmcgdG8gdGhl
IHNwZWNpZmllZA0KKy8vLyAgICBtYXNrLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1BU0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8v
ICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUg
ZmxvYXQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IHF1YWR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdA0K
Ky8vLyAgICBzaWduaWZpY2FudCBiaXQgb2YgZWFjaCBxdWFkd29yZCBlbGVtZW50IGluIHRoZSBt
YXNrIHZlY3RvciByZXByZXNlbnRzDQorLy8vICAgIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzayBi
aXQgaXMgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZnJvbSB2ZWN0b3INCisvLy8gICAg
X19hIGlzIG5vdCBzdG9yZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSBtZW1v
cnkgbG9jYXRpb24NCisvLy8gICAgcG9pbnRlZCB0byBieSBcYSBfX3AgaXMgbm90IGNoYW5nZWQu
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmUg
dm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbWFza3N0b3JlX3BkKGRvdWJsZSAqX19w
LCBfX20yNTZpIF9fbSwgX19tMjU2ZCBfX2EpDQorew0KKyAgX19idWlsdGluX2lhMzJfbWFza3N0
b3JlcGQyNTYoKF9fdjRkZiAqKV9fcCwgKF9fdjRkaSlfX20sIChfX3Y0ZGYpX19hKTsNCit9DQor
DQorLy8vIE1vdmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20g
YSAxMjgtYml0IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGZsb2F0XSB0byBhIG1lbW9yeSBsb2Nh
dGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCwgYWNjb3JkaW5nIHRvDQorLy8vICAgIHRoZSBzcGVj
aWZpZWQgbWFzay4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUFMgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIg
dG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4N
CisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQorLy8vICAgIGVhY2gg
ZmllbGQgaW4gdGhlIG1hc2sgdmVjdG9yIHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBt
YXNrIGJpdCBpcw0KKy8vLyAgICB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHZl
Y3RvciBfX2EgaXMgbm90IHN0b3JlZCBhbmQgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgZmll
bGQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpcyBub3QNCisv
Ly8gICAgY2hhbmdlZC4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQorc3Rh
dGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX21hc2tzdG9yZV9w
cyhmbG9hdCAqX19wLCBfX20xMjhpIF9fbSwgX19tMTI4IF9fYSkNCit7DQorICBfX2J1aWx0aW5f
aWEzMl9tYXNrc3RvcmVwcygoX192NHNmICopX19wLCAoX192NHNpKV9fbSwgKF9fdjRzZilfX2Ep
Ow0KK30NCisNCisvKiBDYWNoZWFiaWxpdHkgc3VwcG9ydCBvcHMgKi8NCisvLy8gTW92ZXMgaW50
ZWdlciBkYXRhIGZyb20gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMzItYnl0ZQ0KKy8v
LyAgICBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRh
dGEgaXMgZmxhZ2dlZCBhcw0KKy8vLyAgICBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVz
ZWQgYWdhaW4gc29vbikuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTlREUSA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgcG9pbnRl
ciB0byBhIDMyLWJ5dGUgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUg
dGhlDQorLy8vICAgIGludGVnZXIgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQu
DQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3N0cmVh
bV9zaTI1NihfX20yNTZpICpfX2EsIF9fbTI1NmkgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18N
CisgIF9fYnVpbHRpbl9pYTMyX21vdm50ZHEyNTYgKChfX3Y0ZGkgKilfX2EsIChfX3Y0ZGkpX19i
KTsNCisjZWxzZQ0KKyAgdHlwZWRlZiBfX3Y0ZGkgX192NGRpX2FsaWduZWQgX19hdHRyaWJ1dGVf
XygoYWxpZ25lZCgzMikpKTsNCisgIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192NGRp
X2FsaWduZWQpX19iLCAoX192NGRpX2FsaWduZWQqKV9fYSk7DQorI2VuZGlmDQorfQ0KKw0KKy8v
LyBNb3ZlcyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdDQorLy8vICAgIHRvIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlv
bi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMNCisvLy8gICAgZmxhZ2dlZCBhcyBu
b24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdhaW4gc29vbikuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTlRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDMyLWJ5dGUgYWxpZ25lZCBtZW1v
cnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlDQorLy8vICAgIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBt
b3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZf
c3RyZWFtX3BkKGRvdWJsZSAqX19hLCBfX20yNTZkIF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19f
DQorICBfX2J1aWx0aW5faWEzMl9tb3ZudHBkMjU2IChfX2EsIChfX3Y0ZGYpX19iKTsNCisjZWxz
ZQ0KKyAgdHlwZWRlZiBfX3Y0ZGYgX192NGRmX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25l
ZCgzMikpKTsNCisgIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192NGRmX2FsaWduZWQp
X19iLCAoX192NGRmX2FsaWduZWQqKV9fYSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBNb3ZlcyBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0
b3INCisvLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxv
Y2F0aW9uLiBUbyBtaW5pbWl6ZQ0KKy8vLyAgICBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2Vk
IGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUgdXNlZCBhZ2Fpbg0KKy8vLyAgICBzb29u
KS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0
ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCisvLy8gICAg
c2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMuDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2
YWx1ZXMgdG8gYmUgbW92ZWQuDQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X3N0cmVhbV9wcyhmbG9hdCAqX19wLCBfX20yNTYgX19hKQ0KK3sNCisjaWZk
ZWYgX19HTlVDX18NCisgIF9fYnVpbHRpbl9pYTMyX21vdm50cHMyNTYgKF9fcCwgKF9fdjhzZilf
X2EpOw0KKyNlbHNlDQorICB0eXBlZGVmIF9fdjhzZiBfX3Y4c2ZfYWxpZ25lZCBfX2F0dHJpYnV0
ZV9fKChhbGlnbmVkKDMyKSkpOw0KKyAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3Y4
c2ZfYWxpZ25lZClfX2EsIChfX3Y4c2ZfYWxpZ25lZCopX19wKTsNCisjZW5kaWYNCit9DQorDQor
LyogQ3JlYXRlIHZlY3RvcnMgKi8NCisvLy8gQ3JlYXRlIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIHdpdGggdW5kZWZpbmVkIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9u
ZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB1bmRlZmluZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3VuZGVmaW5lZF9wZCh2
b2lkKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIF9fbTI1NmQgX19YID0gX19YOw0KKyAgcmV0
dXJuIF9fWDsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3VuZGVm
MjU2KCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDcmVhdGUgYSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3Bv
bmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB1bmRlZmluZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdW5kZWZpbmVkX3BzKHZv
aWQpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgX19tMjU2IF9fWCA9IF9fWDsNCisgIHJldHVy
biBfX1g7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3VuZGVmMjU2
KCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDcmVhdGUgYSAyNTYtYml0IGludGVnZXIgdmVjdG9y
IHdpdGggdW5kZWZpbmVkIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20yNTZpIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl91bmRlZmluZWRfc2kyNTYodm9pZCkNCit7DQorI2lm
ZGVmIF9fR05VQ19fDQorICBfX20yNTZpIF9fWCA9IF9fWDsNCisgIHJldHVybiBfX1g7DQorI2Vs
c2UNCisgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOw0KKyNlbmRp
Zg0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXQ0KKy8vLyAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQrVklOU0VSVEYxMjggPC9jPg0KKy8vLyAgIGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0NCisv
Ly8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5
MToxMjhdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2MNCisvLy8gICAg
QSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxMjc6NjRdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2QN
CisvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFs2MzowXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0
dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0uDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X3NldF9wZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUgX19jLCBkb3VibGUg
X19kKQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTZkKXsgX19kLCBfX2MsIF9f
YiwgX19hIH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW5pdGlhbGl6ZWQNCisvLy8gICAgd2l0aCB0aGUgc3Bl
Y2lmaWVkIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlz
IGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmlj
DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsyNTU6MjI0XQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMjIzOjE5Ml0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fYw0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxNjBdDQorLy8vICAgIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX2QNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTI4XQ0KKy8vLyAgICBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19lDQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XQ0KKy8v
LyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19mDQorLy8vICAgIEEgc2luZ2xlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6
NjRdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2cNCisvLy8gICAgQSBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFs2MzozMl0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9faA0KKy8v
LyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzMxOjBdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5z
IEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2
X3NldF9wcyhmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jLCBmbG9hdCBfX2QsDQorICAg
ICAgICAgICAgICBmbG9hdCBfX2UsIGZsb2F0IF9fZiwgZmxvYXQgX19nLCBmbG9hdCBfX2gpDQor
ew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1Nil7IF9faCwgX19nLCBfX2YsIF9fZSwg
X19kLCBfX2MsIF9fYiwgX19hIH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQNCisvLy8gICAgMzIt
Yml0IGludGVncmFsIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRv
ZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19pMA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjIyNF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9faTENCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzIyMzoxOTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2kyDQorLy8vICAg
IEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTYw
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pMw0KKy8vLyAgICBBIDMyLWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9faTQNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9faTUNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzk1OjY0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pNg0KKy8vLyAgICBB
IDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2k3DQorLy8vICAgIEEgMzItYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KK3N0YXRp
YyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRfZXBpMzIo
aW50IF9faTAsIGludCBfX2kxLCBpbnQgX19pMiwgaW50IF9faTMsDQorICAgICAgICAgICAgICAg
ICBpbnQgX19pNCwgaW50IF9faTUsIGludCBfX2k2LCBpbnQgX19pNykNCit7DQorICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMjU2aSkoX192OHNpKXsgX19pNywgX19pNiwgX19pNSwgX19pNCwg
X19pMywgX19pMiwgX19pMSwgX19pMCB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkDQorLy8vICAg
IDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFu
ZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fdzE1DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjQwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX193MTQNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzIzOToyMjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cxMw0K
Ky8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MjIzOjIwOF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzEyDQorLy8vICAgIEEgMTYt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMDc6MTkyXSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MTENCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxNzZdIG9mIHRoZSByZXN1bHQuDQor
Ly8vIFxwYXJhbSBfX3cxMA0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMTc1OjE2MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
dzA5DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxNTk6MTQ0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDgNCisvLy8gICAg
QSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE0MzoxMjhd
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwNw0KKy8vLyAgICBBIDE2LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjExMl0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9fdzA2DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJh
bSBfX3cwNQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwNA0KKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6NjRd
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwMw0KKy8vLyAgICBBIDE2LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX3cwMg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X3cwMQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwMA0KKy8vLyAgICBB
IDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6MF0gb2Yg
dGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW0yNTZfc2V0X2VwaTE2KHNob3J0IF9fdzE1LCBzaG9ydCBfX3cxNCwgc2hvcnQgX193MTMsIHNo
b3J0IF9fdzEyLA0KKyAgICAgICAgICAgICAgICAgc2hvcnQgX193MTEsIHNob3J0IF9fdzEwLCBz
aG9ydCBfX3cwOSwgc2hvcnQgX193MDgsDQorICAgICAgICAgICAgICAgICBzaG9ydCBfX3cwNywg
c2hvcnQgX193MDYsIHNob3J0IF9fdzA1LCBzaG9ydCBfX3cwNCwNCisgICAgICAgICAgICAgICAg
IHNob3J0IF9fdzAzLCBzaG9ydCBfX3cwMiwgc2hvcnQgX193MDEsIHNob3J0IF9fdzAwKQ0KK3sN
CisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTZpKShfX3YxNmhpKXsgX193MDAsIF9fdzAx
LCBfX3cwMiwgX193MDMsIF9fdzA0LCBfX3cwNSwgX193MDYsDQorICAgIF9fdzA3LCBfX3cwOCwg
X193MDksIF9fdzEwLCBfX3cxMSwgX193MTIsIF9fdzEzLCBfX3cxNCwgX193MTUgfTsNCit9DQor
DQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdp
dGggdGhlIHNwZWNpZmllZA0KKy8vLyAgICA4LWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
aXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lm
aWMNCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYjMxDQorLy8vICAg
IEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjQ4
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMzANCisvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI0NzoyNDBdIG9mIHRoZSByZXN1
bHQuDQorLy8vIFxwYXJhbSBfX2IyOQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM5OjIzMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fYjI4DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFsyMzE6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjcNCisv
Ly8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIy
MzoyMTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyNg0KKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjE1OjIwOF0gb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjI1DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMDc6MjAwXSBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gX19iMjQNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzE5OToxOTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2Iy
Mw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMTkxOjE4NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjIyDQorLy8vICAgIEFu
IDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxODM6MTc2XSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE3NToxNjhdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX2IyMA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMTY3OjE2MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fYjE5DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxNTk6MTUyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTgNCisvLy8g
ICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1MTox
NDRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxNw0KKy8vLyAgICBBbiA4LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTQzOjEzNl0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9fYjE2DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMzU6MTI4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iMTUNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxNA0K
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MTE5OjExMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjEzDQorLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6MTA0XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTINCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHBhcmFtIF9fYjExDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFs5NTo4OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjEw
DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA5DQorLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo3Ml0gb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA4DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3MTo2NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHBhcmFtIF9fYjA3DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA2DQor
Ly8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1
NTo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA1DQorLy8vICAgIEFuIDgtYml0
IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9fYjA0DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fYjAzDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjAyDQorLy8v
ICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzox
Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjAxDQorLy8vICAgIEFuIDgtYml0IGlu
dGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19iMDANCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMg
QW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmUg
X19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0X2VwaTgoY2hhciBfX2IzMSwg
Y2hhciBfX2IzMCwgY2hhciBfX2IyOSwgY2hhciBfX2IyOCwNCisgICAgICAgICAgICAgICAgY2hh
ciBfX2IyNywgY2hhciBfX2IyNiwgY2hhciBfX2IyNSwgY2hhciBfX2IyNCwNCisgICAgICAgICAg
ICAgICAgY2hhciBfX2IyMywgY2hhciBfX2IyMiwgY2hhciBfX2IyMSwgY2hhciBfX2IyMCwNCisg
ICAgICAgICAgICAgICAgY2hhciBfX2IxOSwgY2hhciBfX2IxOCwgY2hhciBfX2IxNywgY2hhciBf
X2IxNiwNCisgICAgICAgICAgICAgICAgY2hhciBfX2IxNSwgY2hhciBfX2IxNCwgY2hhciBfX2Ix
MywgY2hhciBfX2IxMiwNCisgICAgICAgICAgICAgICAgY2hhciBfX2IxMSwgY2hhciBfX2IxMCwg
Y2hhciBfX2IwOSwgY2hhciBfX2IwOCwNCisgICAgICAgICAgICAgICAgY2hhciBfX2IwNywgY2hh
ciBfX2IwNiwgY2hhciBfX2IwNSwgY2hhciBfX2IwNCwNCisgICAgICAgICAgICAgICAgY2hhciBf
X2IwMywgY2hhciBfX2IwMiwgY2hhciBfX2IwMSwgY2hhciBfX2IwMCkNCit7DQorICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMjU2aSkoX192MzJxaSl7DQorICAgIF9fYjAwLCBfX2IwMSwgX19i
MDIsIF9fYjAzLCBfX2IwNCwgX19iMDUsIF9fYjA2LCBfX2IwNywNCisgICAgX19iMDgsIF9fYjA5
LCBfX2IxMCwgX19iMTEsIF9fYjEyLCBfX2IxMywgX19iMTQsIF9fYjE1LA0KKyAgICBfX2IxNiwg
X19iMTcsIF9fYjE4LCBfX2IxOSwgX19iMjAsIF9fYjIxLCBfX2IyMiwgX19iMjMsDQorICAgIF9f
YjI0LCBfX2IyNSwgX19iMjYsIF9fYjI3LCBfX2IyOCwgX19iMjksIF9fYjMwLCBfX2IzMQ0KKyAg
fTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGluaXRp
YWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KKy8vLyAgICA2NC1iaXQgaW50ZWdyYWwgdmFsdWVz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0xRRFErVklOU0VSVEYxMjgg
PC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MTky
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19jDQorLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2QNCisvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzYzOjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1
Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tMjU2X3NldF9lcGk2NHgobG9uZyBsb25nIF9fYSwgbG9uZyBsb25nIF9f
YiwgbG9uZyBsb25nIF9fYywgbG9uZyBsb25nIF9fZCkNCit7DQorICByZXR1cm4gX19leHRlbnNp
b25fXyAoX19tMjU2aSkoX192NGRpKXsgX19kLCBfX2MsIF9fYiwgX19hIH07DQorfQ0KKw0KKy8q
IENyZWF0ZSB2ZWN0b3JzIHdpdGggZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlciAqLw0KKy8vLyBD
b25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVd
LA0KKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGggdGhlIHNwZWNpZmll
ZCBkb3VibGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCtWSU5TRVJURjEyOCA8L2M+DQorLy8v
ICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2
MzowXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTI3OjY0XQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19jDQor
Ly8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTkxOjEyOF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fZA0KKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToxOTJdDQorLy8vICAgIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXS4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW0yNTZfc2V0cl9wZChkb3VibGUgX19hLCBkb3VibGUgX19iLCBkb3VibGUg
X19jLCBkb3VibGUgX19kKQ0KK3sNCisgIHJldHVybiBfbW0yNTZfc2V0X3BkKF9fZCwgX19jLCBf
X2IsIF9fYSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0sDQorLy8vICAgIGluaXRpYWxpemVkIGluIHJldmVyc2Ug
b3JkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHNpbmdsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXQt
cG9pbnQgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3Qg
Y29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJdDQorLy8vICAgIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2MNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0NCisvLy8g
ICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fZA0KKy8vLyAgICBBIHNpbmdsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5
Nl0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fZQ0KKy8vLyAgICBBIHNp
bmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzE1OToxMjhdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2YNCisv
Ly8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxOTE6MTYwXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19nDQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjE5Ml0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9faA0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToyMjRdDQorLy8vICAgIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldHJfcHMoZmxvYXQgX19hLCBmbG9hdCBfX2IsIGZs
b2F0IF9fYywgZmxvYXQgX19kLA0KKyAgICAgICAgICAgICAgIGZsb2F0IF9fZSwgZmxvYXQgX19m
LCBmbG9hdCBfX2csIGZsb2F0IF9faCkNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9wcyhfX2gs
IF9fZywgX19mLCBfX2UsIF9fZCwgX19jLCBfX2IsIF9fYSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1
Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRl
cg0KKy8vLyAgICB3aXRoIHRoZSBzcGVjaWZpZWQgMzItYml0IGludGVncmFsIHZhbHVlcy4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBz
cGVjaWZpYw0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19pMA0KKy8v
LyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6
MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9faTENCisvLy8gICAgQSAzMi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19pMg0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2kzDQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2k0DQorLy8vICAgIEEg
MzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTI4XSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pNQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE2MF0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9faTYNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzIyMzoxOTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2k3DQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsyNTU6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXpl
ZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRyX2VwaTMyKGludCBfX2kwLCBpbnQgX19pMSwgaW50
IF9faTIsIGludCBfX2kzLA0KKyAgICAgICAgICAgICAgICAgIGludCBfX2k0LCBpbnQgX19pNSwg
aW50IF9faTYsIGludCBfX2k3KQ0KK3sNCisgIHJldHVybiBfbW0yNTZfc2V0X2VwaTMyKF9faTcs
IF9faTYsIF9faTUsIF9faTQsIF9faTMsIF9faTIsIF9faTEsIF9faTApOw0KK30NCisNCisvLy8g
Q29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVy
c2Ugb3JkZXINCisvLy8gICAgd2l0aCB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ3JhbCB2YWx1
ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25k
IHRvIGEgc3BlY2lmaWMNCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
dzE1DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MTQNCisvLy8gICAgQSAx
Ni1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MTMNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gX193MTINCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MTEN
CisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
Wzc5OjY0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MTANCisvLy8gICAgQSAxNi1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjgwXSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDkNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHBhcmFtIF9fdzA4DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDcN
CisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzE0MzoxMjhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwNg0KKy8vLyAgICBBIDE2
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjE0NF0gb2Yg
dGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzA1DQorLy8vICAgIEEgMTYtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTYwXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX193MDQNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzE5MToxNzZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X3cwMw0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMjA3OjE5Ml0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzAyDQorLy8vICAg
IEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjA4
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDENCisvLy8gICAgQSAxNi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOToyMjRdIG9mIHRoZSByZXN1
bHQuDQorLy8vIFxwYXJhbSBfX3cwMA0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjI0MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19p
bmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0cl9lcGkxNihzaG9y
dCBfX3cxNSwgc2hvcnQgX193MTQsIHNob3J0IF9fdzEzLCBzaG9ydCBfX3cxMiwNCisgICAgICAg
c2hvcnQgX193MTEsIHNob3J0IF9fdzEwLCBzaG9ydCBfX3cwOSwgc2hvcnQgX193MDgsDQorICAg
ICAgIHNob3J0IF9fdzA3LCBzaG9ydCBfX3cwNiwgc2hvcnQgX193MDUsIHNob3J0IF9fdzA0LA0K
KyAgICAgICBzaG9ydCBfX3cwMywgc2hvcnQgX193MDIsIHNob3J0IF9fdzAxLCBzaG9ydCBfX3cw
MCkNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9lcGkxNihfX3cwMCwgX193MDEsIF9fdzAyLCBf
X3cwMywNCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdzA0LCBfX3cwNSwgX193MDYsIF9f
dzA3LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgX193MDgsIF9fdzA5LCBfX3cxMCwgX193
MTEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBfX3cxMiwgX193MTMsIF9fdzE0LCBfX3cx
NSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5p
dGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KKy8vLyAgICB3aXRoIHRoZSBzcGVjaWZpZWQgOC1i
aXQgaW50ZWdyYWwgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9l
cyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2IzMQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19i
MzANCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzE1OjhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyOQ0KKy8vLyAgICBBbiA4
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM6MTZdIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyOA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBfX2IyNw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyNg0K
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
NDc6NDBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyNQ0KKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNTU6NDhdIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxw
YXJhbSBfX2IyMw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyMg0KKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6
NzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyMQ0KKy8vLyAgICBBbiA4LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbODc6ODBdIG9mIHRoZSByZXN1
bHQuDQorLy8vIFxwYXJhbSBfX2IyMA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJh
bSBfX2IxOQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTgNCisvLy8g
ICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExMTox
MDRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxNw0KKy8vLyAgICBBbiA4LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTE5OjExMl0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9fYjE2DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iMTUNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzEzNToxMjhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxNA0K
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MTQzOjEzNl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjEzDQorLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTE6MTQ0XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTINCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OToxNTJdIG9mIHRoZSByZXN1bHQuDQor
Ly8vIFxwYXJhbSBfX2IxMQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMTY3OjE2MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
YjEwDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxNzU6MTY4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMDkNCisvLy8gICAg
QW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE4MzoxNzZd
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwOA0KKy8vLyAgICBBbiA4LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE4NF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9fYjA3DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTk6MTkyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19iMDYNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzIwNzoyMDBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwNQ0KKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjE1
OjIwOF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA0DQorLy8vICAgIEFuIDgtYml0
IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjE2XSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMDMNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzMToyMjRdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBfX2IwMg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMjM5OjIzMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjAx
DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsyNDc6MjQwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMDANCisvLy8gICAgQW4g
OC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToyNDhdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X3NldHJfZXBpOChjaGFyIF9fYjMxLCBjaGFyIF9fYjMwLCBjaGFyIF9fYjI5LCBjaGFy
IF9fYjI4LA0KKyAgICAgICAgICAgICAgICAgY2hhciBfX2IyNywgY2hhciBfX2IyNiwgY2hhciBf
X2IyNSwgY2hhciBfX2IyNCwNCisgICAgICAgICAgICAgICAgIGNoYXIgX19iMjMsIGNoYXIgX19i
MjIsIGNoYXIgX19iMjEsIGNoYXIgX19iMjAsDQorICAgICAgICAgICAgICAgICBjaGFyIF9fYjE5
LCBjaGFyIF9fYjE4LCBjaGFyIF9fYjE3LCBjaGFyIF9fYjE2LA0KKyAgICAgICAgICAgICAgICAg
Y2hhciBfX2IxNSwgY2hhciBfX2IxNCwgY2hhciBfX2IxMywgY2hhciBfX2IxMiwNCisgICAgICAg
ICAgICAgICAgIGNoYXIgX19iMTEsIGNoYXIgX19iMTAsIGNoYXIgX19iMDksIGNoYXIgX19iMDgs
DQorICAgICAgICAgICAgICAgICBjaGFyIF9fYjA3LCBjaGFyIF9fYjA2LCBjaGFyIF9fYjA1LCBj
aGFyIF9fYjA0LA0KKyAgICAgICAgICAgICAgICAgY2hhciBfX2IwMywgY2hhciBfX2IwMiwgY2hh
ciBfX2IwMSwgY2hhciBfX2IwMCkNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9lcGk4KF9fYjAw
LCBfX2IwMSwgX19iMDIsIF9fYjAzLCBfX2IwNCwgX19iMDUsIF9fYjA2LCBfX2IwNywNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgX19iMDgsIF9fYjA5LCBfX2IxMCwgX19iMTEsIF9fYjEyLCBf
X2IxMywgX19iMTQsIF9fYjE1LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX2IxNiwgX19i
MTcsIF9fYjE4LCBfX2IxOSwgX19iMjAsIF9fYjIxLCBfX2IyMiwgX19iMjMsDQorICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fYjI0LCBfX2IyNSwgX19iMjYsIF9fYjI3LCBfX2IyOCwgX19iMjks
IF9fYjMwLCBfX2IzMSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KKy8vLyAgICB3aXRoIHRoZSBz
cGVjaWZpZWQgNjQtYml0IGludGVncmFsIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQVU5QQ0tMUURRK1ZJTlNFUlRGMTI4IDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTI3OjY0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19jDQorLy8vICAgIEEg
NjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19kDQorLy8vICAgIEEgNjQtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MTkyXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KK3N0
YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRyX2Vw
aTY0eChsb25nIGxvbmcgX19hLCBsb25nIGxvbmcgX19iLCBsb25nIGxvbmcgX19jLCBsb25nIGxv
bmcgX19kKQ0KK3sNCisgIHJldHVybiBfbW0yNTZfc2V0X2VwaTY0eChfX2QsIF9fYywgX19iLCBf
X2EpOw0KK30NCisNCisvKiBDcmVhdGUgdmVjdG9ycyB3aXRoIHJlcGVhdGVkIGVsZW1lbnRzICov
DQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0sIHdpdGggZWFjaA0KKy8vLyAgICBvZiB0aGUgZm91ciBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQorLy8vICAgIHNwZWNp
ZmllZCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVArVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRp
bmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yDQorLy8vICAgIGVs
ZW1lbnQgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXQxX3BkKGRvdWJsZSBfX3cp
DQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfcGQoX193LCBfX3csIF9fdywgX193KTsNCit9DQor
DQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSwgd2l0aCBlYWNoDQorLy8vICAgIG9mIHRoZSBlaWdodCBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQorLy8vICAgIHNwZWNp
ZmllZCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBTK1ZJTlNFUlRGMTI4IDwvYz4NCisvLy8gICBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yDQor
Ly8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6
ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorc3RhdGlj
IF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0MV9wcyhmbG9h
dCBfX3cpDQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfcHMoX193LCBfX3csIF9fdywgX193LCBf
X3csIF9fdywgX193LCBfX3cpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpMzJdLCB3aXRoIGVhY2ggb2YgdGhlDQorLy8vICAgIDMyLWJp
dCBpbnRlZ3JhbCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgMzItYml0IGlu
dGVncmFsDQorLy8vICAgIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBF
Uk1JTFBTK1ZJTlNFUlRGMTI4IDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9faQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgZWFjaCB2ZWN0b3IgZWxlbWVudCBvZiB0aGUNCisvLy8gICAgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTMy
XS4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZf
c2V0MV9lcGkzMihpbnQgX19pKQ0KK3sNCisgIHJldHVybiBfbW0yNTZfc2V0X2VwaTMyKF9faSwg
X19pLCBfX2ksIF9faSwgX19pLCBfX2ksIF9faSwgX19pKTsNCit9DQorDQorLy8vIENvbnN0cnVj
dHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFsxNiB4IGkxNl0sIHdpdGggZWFjaCBvZiB0
aGUNCisvLy8gICAgMTYtYml0IGludGVncmFsIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNw
ZWNpZmllZCAxNi1iaXQgaW50ZWdyYWwNCisvLy8gICAgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUFNIVUZCK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4N
CisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
MTYgeCBpMTZdLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl9zZXQxX2VwaTE2KHNob3J0IF9fdykNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9l
cGkxNihfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193KTsN
Cit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFszMiB4
IGk4XSwgd2l0aCBlYWNoIG9mIHRoZQ0KKy8vLyAgICA4LWJpdCBpbnRlZ3JhbCB2ZWN0b3IgZWxl
bWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdyYWwgdmFsdWUuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNIVUZCK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQorLy8vICAg
IHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbMzIgeCBpOF0uDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tMjU2X3NldDFfZXBpOChjaGFyIF9fYikNCit7DQorICByZXR1cm4gX21tMjU2
X3NldF9lcGk4KF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9f
YiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9f
YiwgX19iLCBfX2IsDQorICAgICAgICAgICAgICAgICAgICAgICAgIF9fYiwgX19iLCBfX2IsIF9f
YiwgX19iLCBfX2IsIF9fYiwgX19iKTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTY0XSwgd2l0aCBlYWNoIG9mIHRoZQ0KKy8vLyAgICA2
NC1iaXQgaW50ZWdyYWwgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDY0LWJp
dCBpbnRlZ3JhbA0KKy8vLyAgICB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNT1ZERFVQK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX3ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGk2NF0uDQor
c3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldDFf
ZXBpNjR4KGxvbmcgbG9uZyBfX3EpDQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpNjR4KF9f
cSwgX19xLCBfX3EsIF9fcSk7DQorfQ0KKw0KKy8qIENyZWF0ZSBfX3plcm9lZCB2ZWN0b3JzICov
DQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0gd2l0aCBhbGwNCisvLy8gICAgdmVjdG9yIGVsZW1lbnRzIGluaXRpYWxpemVkIHRv
IHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gd2l0aCBhbGwgZWxlbWVudHMgc2V0IHRvIHplcm8uDQorc3RhdGljIF9faW5saW5lIF9fbTI1
NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldHplcm9fcGQodm9pZCkNCit7DQorICBy
ZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2ZCl7IDAsIDAsIDAsIDAgfTsNCit9DQorDQorLy8v
IENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0
XSB3aXRoIGFsbA0KKy8vLyAgICB2ZWN0b3IgZWxlbWVudHMgaW5pdGlhbGl6ZWQgdG8gemVyby4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIHdpdGgg
YWxsIGVsZW1lbnRzIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldHplcm9fcHModm9pZCkNCit7DQorICByZXR1cm4gX19l
eHRlbnNpb25fXyAoX19tMjU2KXsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9Ow0KK30NCisNCisv
Ly8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgdG8gemVy
by4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6
ZWQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW0yNTZfc2V0emVyb19zaTI1Nih2b2lkKQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9f
IChfX20yNTZpKShfX3Y0ZGkpeyAwLCAwLCAwLCAwIH07DQorfQ0KKw0KKy8qIENhc3QgYmV0d2Vl
biB2ZWN0b3IgdHlwZXMgKi8NCisvLy8gQ2FzdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gaW50byBhIDI1Ni1iaXQNCisvLy8gICAgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNh
bWUNCisvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQorc3RhdGljIF9f
aW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY2FzdHBkX3BzKF9fbTI1
NmQgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KV9fYTsNCit9DQorDQorLy8vIENhc3RzIGEg
MjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8gYSAyNTYt
Yml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5n
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4g
YXMgdGhlDQorLy8vICAgIHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY2FzdHBkX3NpMjU2KF9fbTI1NmQgX19hKQ0KK3sNCisg
IHJldHVybiAoX19tMjU2aSlfX2E7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDI1Ni1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSAyNTYtYml0DQorLy8vICAgIGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJl
c3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAy
NTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJldHVy
bnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFp
bmluZyB0aGUgc2FtZQ0KKy8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4N
CitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY2Fz
dHBzX3BkKF9fbTI1NiBfX2EpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYTsNCit9DQorDQor
Ly8vIENhc3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0g
aW50byBhIDI1Ni1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNv
cnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJl
dHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhbWUgYml0d2lz
ZSBwYXR0ZXJuIGFzIHRoZQ0KKy8vLyAgICBwYXJhbWV0ZXIuDQorc3RhdGljIF9faW5saW5lIF9f
bTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3Rwc19zaTI1NihfX20yNTYgX19h
KQ0KK3sNCisgIHJldHVybiAoX19tMjU2aSlfX2E7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yDQor
Ly8vICAgIG9mIFs4IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzYW1lDQorLy8vICAgIGJpdHdpc2UgcGF0dGVy
biBhcyB0aGUgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tMjU2X2Nhc3RzaTI1Nl9wcyhfX20yNTZpIF9fYSkNCit7DQorICByZXR1cm4g
KF9fbTI1NilfX2E7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW50byBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggZG91
YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIHNhbWUNCisvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0
ZXIuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2
X2Nhc3RzaTI1Nl9wZChfX20yNTZpIF9fYSkNCit7DQorICByZXR1cm4gKF9fbTI1NmQpX19hOw0K
K30NCisNCisvLy8gUmV0dXJucyB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgYSAyNTYtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGRvdWJsZV0gYXMgYSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJl
c3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAy
NTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlDQorLy8vICAgIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSBwYXJhbWV0ZXIuDQorc3Rh
dGljIF9faW5saW5lIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3RwZDI1
Nl9wZDEyOChfX20yNTZkIF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9f
bTEyOGQpIF9fYnVpbHRpbl9pYTMyX3BkX3BkMjU2ICgoX192NGRmKV9fYSk7DQorI2Vsc2UNCisg
IHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NGRmKV9fYSwgKF9fdjRkZilfX2Es
IDAsIDEpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gUmV0dXJucyB0aGUgbG93ZXIgMTI4IGJpdHMg
b2YgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZg0KKy8vLyAgICBbOCB4IGZsb2F0
XSBhcyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUNCisvLy8gICAgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHBh
cmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bTI1Nl9jYXN0cHMyNTZfcHMxMjgoX19tMjU2IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQor
ICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcHNfcHMyNTYgKChfX3Y4c2YpX19hKTsN
CisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2YpX19hLCAo
X192OHNmKV9fYSwgMCwgMSwgMiwgMyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBUcnVuY2F0ZXMg
YSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDEyOCBiaXRzIG9m
IHRoZQ0KKy8vLyAgICBwYXJhbWV0ZXIuDQorc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3RzaTI1Nl9zaTEyOChfX20yNTZpIF9fYSkNCit7DQor
I2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3NpX3Np
MjU2ICgoX192OHNpKV9fYSk7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZl
Y3RvcigoX192NGRpKV9fYSwgKF9fdjRkaSlfX2EsIDAsIDEpOw0KKyNlbmRpZg0KK30NCisNCisv
Ly8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSBmcm9tIGENCisvLy8gICAgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLg0KKy8vLw0KKy8vLyAgICBUaGUgbG93ZXIgMTI4IGJpdHMgY29udGFpbiB0aGUg
dmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3IuIFRoZSBjb250ZW50cw0KKy8vLyAgICBvZiB0aGUg
dXBwZXIgMTI4IGJpdHMgYXJlIHVuZGVmaW5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGlu
ZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFRoZSBsb3dlciAxMjggYml0cw0KKy8vLyAg
ICBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiBUaGUgY29udGVudHMgb2YgdGhl
IHVwcGVyIDEyOCBiaXRzDQorLy8vICAgIGFyZSB1bmRlZmluZWQuDQorc3RhdGljIF9faW5saW5l
IF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3RwZDEyOF9wZDI1NihfX20x
MjhkIF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTI1NmQpIF9fYnVp
bHRpbl9pYTMyX3BkMjU2X3BkICgoX192MmRmKV9fYSk7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1
aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2EsIDAsIDEsIC0xLCAt
MSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gZnJvbSBhDQorLy8vICAgIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyAgICBUaGUgbG93ZXIg
MTI4IGJpdHMgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3IuIFRoZSBjb250
ZW50cw0KKy8vLyAgICBvZiB0aGUgdXBwZXIgMTI4IGJpdHMgYXJlIHVuZGVmaW5lZC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUgbG93
ZXIgMTI4IGJpdHMNCisvLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4g
VGhlIGNvbnRlbnRzIG9mIHRoZSB1cHBlciAxMjggYml0cw0KKy8vLyAgICBhcmUgdW5kZWZpbmVk
Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nh
c3RwczEyOF9wczI1NihfX20xMjggX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVy
biAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl9wczI1Nl9wcyAoKF9fdjRzZilfX2EpOw0KKyNlbHNl
DQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19hLCAwLCAxLCAyLCAzLCAtMSwgLTEsIC0xLCAtMSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBD
b25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBmcm9tIGEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCisvLy8NCisvLy8gICAgVGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZh
bHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgY29udGVudHMNCisvLy8gICAgb2YgdGhlIHVw
cGVyIDEyOCBiaXRzIGFyZSB1bmRlZmluZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuIFRo
ZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZg0KKy8vLyAgICB0aGUgcGFyYW1l
dGVyLiBUaGUgY29udGVudHMgb2YgdGhlIHVwcGVyIDEyOCBiaXRzIGFyZSB1bmRlZmluZWQuDQor
c3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3Rz
aTEyOF9zaTI1NihfX20xMjhpIF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4g
KF9fbTI1NmkpIF9fYnVpbHRpbl9pYTMyX3NpMjU2X3NpICgoX192NHNpKV9fYSk7DQorI2Vsc2UN
CisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRpKV9fYSwgKF9fdjJkaSlf
X2EsIDAsIDEsIC0xLCAtMSk7DQorI2VuZGlmDQorfQ0KKw0KKy8qDQorICAgVmVjdG9yIGluc2Vy
dC4NCisgICBXZSB1c2UgbWFjcm9zIHJhdGhlciB0aGFuIGlubGluZXMgYmVjYXVzZSB3ZSBvbmx5
IHdhbnQgdG8gYWNjZXB0DQorICAgaW52b2NhdGlvbnMgd2hlcmUgdGhlIGltbWVkaWF0ZSBNIGlz
IGEgY29uc3RhbnQgZXhwcmVzc2lvbi4NCisqLw0KKy8vLyBDb25zdHJ1Y3RzIGEgbmV3IDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGJ5IGZpcnN0IGR1cGxpY2F0aW5nDQorLy8vICAgIGEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gZ2l2ZW4gaW4gdGhlIGZpcnN0IHBhcmFtZXRl
ciwgYW5kIHRoZW4NCisvLy8gICAgcmVwbGFjaW5nIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxv
d2VyIDEyOCBiaXRzIHdpdGggdGhlIGNvbnRlbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAg
IFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1
cHBlciBvciB0aGUgbG93ZXINCisvLy8gICAgMTI4IGJpdHMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2IF9tbTI1Nl9p
bnNlcnRmMTI4X3BzKF9fbTI1NiBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxl
bmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoaXMgdmVjdG9yIGlzIGNvcGll
ZCB0byB0aGUgcmVzdWx0DQorLy8vICAgIGZpcnN0LCBhbmQgdGhlbiBlaXRoZXIgdGhlIHVwcGVy
IG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IHdpbGwNCisvLy8gICAgYmUgcmVw
bGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFxhIFYyLg0KKy8vLyBccGFyYW0gVjINCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFy
YW1ldGVyIGFyZQ0KKy8vLyAgICB3cml0dGVuIHRvIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxv
d2VyIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQgZGVwZW5kaW5nDQorLy8vICAgIG9uIHRoZSB2YWx1
ZSBvZiBwYXJhbWV0ZXIgXGEgTS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRl
IGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyBob3cgdGhlIHZh
bHVlcw0KKy8vLyAgICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxu
DQorLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBcYSBWMiBhcmUgY29waWVkIHRvIGJp
dHMgWzEyNzowXSBvZiB0aGUgcmVzdWx0LA0KKy8vLyAgICBhbmQgYml0cyBbMjU1OjEyOF0gb2Yg
XGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisvLy8gICAgcmVzdWx0
LiBcbg0KKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwgXGEgVjIgYXJlIGNvcGllZCB0
byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisvLy8gICAgcmVzdWx0LCBhbmQgYml0cyBbMTI3OjBd
IG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KKy8vLyAgICByZXN1
bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2X2luc2VydGYxMjhf
cHMoVjEsIFYyLCBNKSBcDQorICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZpbnNlcnRmMTI4X3Bz
MjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVjIpLCAoaW50KShNKSkNCisNCisvLy8g
Q29uc3RydWN0cyBhIG5ldyAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYnkgZmlyc3Qg
ZHVwbGljYXRpbmcNCisvLy8gICAgYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gZ2l2
ZW4gaW4gdGhlIGZpcnN0IHBhcmFtZXRlciwgYW5kIHRoZW4NCisvLy8gICAgcmVwbGFjaW5nIGVp
dGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIHdpdGggdGhlIGNvbnRlbnRzIG9m
IGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGluIHRoZSBzZWNvbmQg
cGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVy
IGRldGVybWluZXMgYmV0d2VlbiB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyDQorLy8vICAgIDEyOCBi
aXRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxj
b2RlDQorLy8vIF9fbTI1NmQgX21tMjU2X2luc2VydGYxMjhfcGQoX19tMjU2ZCBWMSwgX19tMTI4
ZCBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXS4gVGhpcyB2ZWN0b3IgaXMgY29waWVkIHRvIHRoZSByZXN1bHQNCisvLy8gICAgZmly
c3QsIGFuZCB0aGVuIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRo
ZSByZXN1bHQgd2lsbA0KKy8vLyAgICBiZSByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEg
VjIuDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KKy8vLyAgICB3cml0dGVu
IHRvIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQg
ZGVwZW5kaW5nDQorLy8vICAgIG9uIHRoZSB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4NCisvLy8g
XHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZp
Y2FudCBiaXQgZGV0ZXJtaW5lcyBob3cgdGhlIHZhbHVlcw0KKy8vLyAgICBmcm9tIHRoZSB0d28g
cGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuDQorLy8vICAgIElmIGJpdCBbMF0gb2YgXGEg
TSBpcyAwLCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUgcmVzdWx0LA0K
Ky8vLyAgICBhbmQgYml0cyBbMjU1OjEyOF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsy
NTU6MTI4XSBvZiB0aGUNCisvLy8gICAgcmVzdWx0LiBcbg0KKy8vLyAgICBJZiBiaXQgWzBdIG9m
IFxhIE0gaXMgMSwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisv
Ly8gICAgcmVzdWx0LCBhbmQgYml0cyBbMTI3OjBdIG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0
cyBbMTI3OjBdIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVl
cy4NCisjZGVmaW5lIF9tbTI1Nl9pbnNlcnRmMTI4X3BkKFYxLCBWMiwgTSkgXA0KKyAgKF9fbTI1
NmQpX19idWlsdGluX2lhMzJfdmluc2VydGYxMjhfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoVjEp
LCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRm
KShfX20xMjhkKShWMiksIChpbnQpKE0pKQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgbmV3IDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgYnkgZmlyc3QgZHVwbGljYXRpbmcgYQ0KKy8vLyAgICAyNTYtYml0
IGludGVnZXIgdmVjdG9yIGdpdmVuIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIsIGFuZCB0aGVuIHJl
cGxhY2luZw0KKy8vLyAgICBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyB3
aXRoIHRoZSBjb250ZW50cyBvZiBhIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3IgaW4g
dGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdl
ciBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXINCisv
Ly8gICAgMTI4IGJpdHMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2aSBfbW0yNTZfaW5zZXJ0ZjEyOF9zaTI1NihfX20y
NTZpIFYxLCBfX20xMjhpIFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3Rvci4gVGhpcyB2ZWN0b3IgaXMgY29waWVkIHRvIHRoZSByZXN1bHQgZmlyc3Qs
IGFuZA0KKy8vLyAgICB0aGVuIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRz
IG9mIHRoZSByZXN1bHQgd2lsbCBiZQ0KKy8vLyAgICByZXBsYWNlZCBieSB0aGUgY29udGVudHMg
b2YgXGEgVjIuDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IuIFRoZSBjb250ZW50cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUgd3JpdHRlbiB0bw0KKy8vLyAg
ICBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IGRl
cGVuZGluZyBvbiB0aGUNCisvLy8gICAgIHZhbHVlIG9mIHBhcmFtZXRlciBcYSBNLg0KKy8vLyBc
cGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhlIGxlYXN0IHNpZ25pZmlj
YW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzDQorLy8vICAgIGZyb20gdGhlIHR3byBw
YXJhbWV0ZXJzIGFyZSBpbnRlcmxlYXZlZDogXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBN
IGlzIDAsIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZSByZXN1bHQsDQor
Ly8vICAgIGFuZCBiaXRzIFsyNTU6MTI4XSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1
NToxMjhdIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuIFxuDQorLy8vICAgIElmIGJpdCBbMF0gb2Yg
XGEgTSBpcyAxLCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KKy8v
LyAgICByZXN1bHQsIGFuZCBiaXRzIFsxMjc6MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRz
IFsxMjc6MF0gb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCisjZGVm
aW5lIF9tbTI1Nl9pbnNlcnRmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXA0KKyAgKF9fbTI1NmkpX19i
dWlsdGluX2lhMzJfdmluc2VydGYxMjhfc2kyNTYoKF9fdjhzaSkoX19tMjU2aSkoVjEpLCBcDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNpKShfX20x
MjhpKShWMiksIChpbnQpKE0pKQ0KKw0KKy8qDQorICAgVmVjdG9yIGV4dHJhY3QuDQorICAgV2Ug
dXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFj
Y2VwdA0KKyAgIGludm9jYXRpb25zIHdoZXJlIHRoZSBpbW1lZGlhdGUgTSBpcyBhIGNvbnN0YW50
IGV4cHJlc3Npb24uDQorKi8NCisvLy8gRXh0cmFjdHMgZWl0aGVyIHRoZSB1cHBlciBvciB0aGUg
bG93ZXIgMTI4IGJpdHMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yDQorLy8vICAgIG9mIFs4IHggZmxv
YXRdLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIsIGFu
ZA0KKy8vLyAgICByZXR1cm5zIHRoZSBleHRyYWN0ZWQgYml0cyBhcyBhIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW0yNTZfZXh0cmFjdGYxMjhfcHMoX19tMjU2
IFYsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIFYNCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBs
ZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQ0KKy8vLyAgICBl
eHRyYWN0ZWQgZnJvbSB0aGUgZmlyc3QgcGFyYW1ldGVyOiBcbg0KKy8vLyAgICBJZiBiaXQgWzBd
IG9mIFxhIE0gaXMgMCwgYml0cyBbMTI3OjBdIG9mIFxhIFYgYXJlIGNvcGllZCB0byB0aGUNCisv
Ly8gICAgcmVzdWx0LiBcbg0KKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwgYml0cyBb
MjU1OjEyOF0gb2YgXGEgViBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZXh0cmFjdGVk
IGJpdHMuDQorI2RlZmluZSBfbW0yNTZfZXh0cmFjdGYxMjhfcHMoViwgTSkgXA0KKyAgKF9fbTEy
OClfX2J1aWx0aW5faWEzMl92ZXh0cmFjdGYxMjhfcHMyNTYoKF9fdjhzZikoX19tMjU2KShWKSwg
KGludCkoTSkpDQorDQorLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2Vy
IDEyOCBiaXRzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGRvdWJsZV0s
IGFzIGRldGVybWluZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIHBhcmFtZXRlciwgYW5kDQor
Ly8vICAgIHJldHVybnMgdGhlIGV4dHJhY3RlZCBiaXRzIGFzIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGQgX21tMjU2X2V4dHJhY3RmMTI4X3BkKF9fbTI1NmQg
ViwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gVg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBs
ZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQ0KKy8vLyAgICBl
eHRyYWN0ZWQgZnJvbSB0aGUgZmlyc3QgcGFyYW1ldGVyOiBcbg0KKy8vLyAgICBJZiBiaXQgWzBd
IG9mIFxhIE0gaXMgMCwgYml0cyBbMTI3OjBdIG9mIFxhIFYgYXJlIGNvcGllZCB0byB0aGUNCisv
Ly8gICAgcmVzdWx0LiBcbg0KKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwgYml0cyBb
MjU1OjEyOF0gb2YgXGEgViBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3Rl
ZCBiaXRzLg0KKyNkZWZpbmUgX21tMjU2X2V4dHJhY3RmMTI4X3BkKFYsIE0pIFwNCisgIChfX20x
MjhkKV9fYnVpbHRpbl9pYTMyX3ZleHRyYWN0ZjEyOF9wZDI1NigoX192NGRmKShfX20yNTZkKShW
KSwgKGludCkoTSkpDQorDQorLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxv
d2VyIDEyOCBiaXRzIGZyb20gYSAyNTYtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yLCBhcyBk
ZXRlcm1pbmVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIsIGFuZA0KKy8vLyAg
ICByZXR1cm5zIHRoZSBleHRyYWN0ZWQgYml0cyBhcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUN
CisvLy8gX19tMTI4aSBfbW0yNTZfZXh0cmFjdGYxMjhfc2kyNTYoX19tMjU2aSBWLCBjb25zdCBp
bnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBWDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFt
IE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBi
aXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQ0KKy8vLyAgICBleHRyYWN0ZWQgZnJvbSB0aGUg
Zmlyc3QgcGFyYW1ldGVyOiAgXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDAsIGJp
dHMgWzEyNzowXSBvZiBcYSBWIGFyZSBjb3BpZWQgdG8gdGhlDQorLy8vICAgIHJlc3VsdC4gXG4N
CisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYg
YXJlIGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIGJpdHMuDQorI2RlZmluZSBfbW0yNTZf
ZXh0cmFjdGYxMjhfc2kyNTYoViwgTSkgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmV4
dHJhY3RmMTI4X3NpMjU2KChfX3Y4c2kpKF9fbTI1NmkpKFYpLCAoaW50KShNKSkNCisNCisvKiBT
SU1EIGxvYWQgb3BzICh1bmFsaWduZWQpICovDQorLy8vIExvYWRzIHR3byAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gZnJvbQ0KKy8vLyAgICB1bmFsaWduZWQg
bWVtb3J5IGxvY2F0aW9ucyBhbmQgY29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yDQorLy8vICAgIG9mIFs4IHggZmxvYXRdIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHR3byAx
MjgtYml0IHZlY3RvcnMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gbG9hZCBpbnN0cnVjdGlvbnMg
Zm9sbG93ZWQgYnkgdGhlDQorLy8vICAgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2FkZHJfaGkNCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4
LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyA0IGNvbnNlY3V0aXZlDQorLy8vICAgIHNp
bmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLiBUaGVzZSB2YWx1ZXMgYXJlIHRv
IGJlIGNvcGllZCB0bw0KKy8vLyAgICBiaXRzWzI1NToxMjhdIG9mIHRoZSByZXN1bHQuIFRoZSBh
ZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QNCisvLy8gICAgaGF2ZSB0byBi
ZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hZGRyX2xvDQorLy8vICAgIEEgcG9pbnRlciB0byBh
IDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgNCBjb25zZWN1dGl2ZQ0KKy8vLyAg
ICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVzIGFy
ZSB0byBiZSBjb3BpZWQgdG8NCisvLy8gICAgYml0c1sxMjc6MF0gb2YgdGhlIHJlc3VsdC4gVGhl
IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdA0KKy8vLyAgICBoYXZlIHRv
IGJlIGFsaWduZWQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUNCisvLy8gICAgY29uY2F0ZW5hdGVkIHJl
c3VsdC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9sb2FkdTJfbTEyOChmbG9hdCBjb25zdCAqX19hZGRyX2hpLCBmbG9hdCBjb25zdCAqX19hZGRy
X2xvKQ0KK3sNCisgIF9fbTI1NiBfX3YyNTYgPSBfbW0yNTZfY2FzdHBzMTI4X3BzMjU2KF9tbV9s
b2FkdV9wcyhfX2FkZHJfbG8pKTsNCisgIHJldHVybiBfbW0yNTZfaW5zZXJ0ZjEyOF9wcyhfX3Yy
NTYsIF9tbV9sb2FkdV9wcyhfX2FkZHJfaGkpLCAxKTsNCit9DQorDQorLy8vIExvYWRzIHR3byAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIGZyb20NCisvLy8g
ICAgdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbnMgYW5kIGNvbnN0cnVjdHMgYSAyNTYtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGRvdWJsZV0gYnkgY29uY2F0ZW5h
dGluZyB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byBsb2Fk
IGluc3RydWN0aW9ucyBmb2xsb3dlZCBieSB0aGUNCisvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYWRkcl9oaQ0KKy8vLyAgICBBIHBv
aW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHR3byBjb25zZWN1
dGl2ZQ0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhl
c2UgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQgdG8NCisvLy8gICAgYml0c1syNTU6MTI4XSBvZiB0
aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90DQor
Ly8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4NCisvLy8gXHBhcmFtIF9fYWRkcl9sbw0KKy8vLyAg
ICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHR3byBj
b25zZWN1dGl2ZQ0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVl
cy4gVGhlc2UgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQgdG8NCisvLy8gICAgYml0c1sxMjc6MF0g
b2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5v
dA0KKy8vLyAgICBoYXZlIHRvIGJlIGFsaWduZWQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlDQorLy8v
ICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tMjU2X2xvYWR1Ml9tMTI4ZChkb3VibGUgY29uc3QgKl9fYWRkcl9o
aSwgZG91YmxlIGNvbnN0ICpfX2FkZHJfbG8pDQorew0KKyAgX19tMjU2ZCBfX3YyNTYgPSBfbW0y
NTZfY2FzdHBkMTI4X3BkMjU2KF9tbV9sb2FkdV9wZChfX2FkZHJfbG8pKTsNCisgIHJldHVybiBf
bW0yNTZfaW5zZXJ0ZjEyOF9wZChfX3YyNTYsIF9tbV9sb2FkdV9wZChfX2FkZHJfaGkpLCAxKTsN
Cit9DQorDQorLy8vIExvYWRzIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9ycyBmcm9tIHVuYWxp
Z25lZCBtZW1vcnkgbG9jYXRpb25zIGFuZA0KKy8vLyAgICBjb25zdHJ1Y3RzIGEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHRoZSB0d28gMTI4LWJpdA0KKy8vLyAgICB2
ZWN0b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2Vk
IGJ5IHRoZQ0KKy8vLyAgIDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hZGRyX2hpDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVt
b3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSAxMjgtYml0IGludGVnZXINCisvLy8gICAgdmVjdG9y
LiBUaGlzIHZlY3RvciBpcyB0byBiZSBjb3BpZWQgdG8gYml0c1syNTU6MTI4XSBvZiB0aGUgcmVz
dWx0LiBUaGUNCisvLy8gICAgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90
IGhhdmUgdG8gYmUgYWxpZ25lZC4NCisvLy8gXHBhcmFtIF9fYWRkcl9sbw0KKy8vLyAgICBBIHBv
aW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgMTI4LWJpdCBp
bnRlZ2VyDQorLy8vICAgIHZlY3Rvci4gVGhpcyB2ZWN0b3IgaXMgdG8gYmUgY29waWVkIHRvIGJp
dHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZQ0KKy8vLyAgICBhZGRyZXNzIG9mIHRoZSBtZW1v
cnkgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJlc3Vs
dC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZf
bG9hZHUyX20xMjhpKF9fbTEyOGkgY29uc3QgKl9fYWRkcl9oaSwgX19tMTI4aSBjb25zdCAqX19h
ZGRyX2xvKQ0KK3sNCisgIF9fbTI1NmkgX192MjU2ID0gX21tMjU2X2Nhc3RzaTEyOF9zaTI1Nihf
bW1fbG9hZHVfc2kxMjgoX19hZGRyX2xvKSk7DQorICByZXR1cm4gX21tMjU2X2luc2VydGYxMjhf
c2kyNTYoX192MjU2LCBfbW1fbG9hZHVfc2kxMjgoX19hZGRyX2hpKSwgMSk7DQorfQ0KKw0KKy8q
IFNJTUQgc3RvcmUgb3BzICh1bmFsaWduZWQpICovDQorLy8vIFN0b3JlcyB0aGUgdXBwZXIgYW5k
IGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludA0KKy8vLyAgICB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gaW50byB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9j
YXRpb25zLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4IDwvYz4g
aW5zdHJ1Y3Rpb24gYW5kIHRoZQ0KKy8vLyAgIHN0b3JlIGluc3RydWN0aW9ucy4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYWRkcl9oaQ0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9y
eSBsb2NhdGlvbi4gQml0c1syNTU6MTI4XSBvZiBcYSBfX2EgYXJlIHRvIGJlDQorLy8vICAgIGNv
cGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkg
bG9jYXRpb24gZG9lcw0KKy8vLyAgICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFy
YW0gX19hZGRyX2xvDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJlIHRvIGJlDQorLy8vICAgIGNvcGllZCB0byB0
aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24g
ZG9lcw0KKy8vLyAgICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQor
c3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3N0b3JldTJf
bTEyOChmbG9hdCAqX19hZGRyX2hpLCBmbG9hdCAqX19hZGRyX2xvLCBfX20yNTYgX19hKQ0KK3sN
CisgIF9fbTEyOCBfX3YxMjg7DQorDQorICBfX3YxMjggPSBfbW0yNTZfY2FzdHBzMjU2X3BzMTI4
KF9fYSk7DQorICBfbW1fc3RvcmV1X3BzKF9fYWRkcl9sbywgX192MTI4KTsNCisgIF9fdjEyOCA9
IF9tbTI1Nl9leHRyYWN0ZjEyOF9wcyhfX2EsIDEpOw0KKyAgX21tX3N0b3JldV9wcyhfX2FkZHJf
aGksIF9fdjEyOCk7DQorfQ0KKw0KKy8vLyBTdG9yZXMgdGhlIHVwcGVyIGFuZCBsb3dlciAxMjgg
Yml0cyBvZiBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQNCisvLy8gICAgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXSBpbnRvIHR3byBkaWZmZXJlbnQgdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbnMuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlv
biBhbmQgdGhlDQorLy8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hZGRyX2hpDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9u
LiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBhcmUgdG8gYmUNCisvLy8gICAgY29waWVkIHRvIHRo
aXMgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGlzIG1lbW9yeSBsb2NhdGlvbiBk
b2VzDQorLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQorLy8vIFxwYXJhbSBfX2FkZHJf
bG8NCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIEJpdHNb
MTI3OjBdIG9mIFxhIF9fYSBhcmUgdG8gYmUNCisvLy8gICAgY29waWVkIHRvIHRoaXMgbWVtb3J5
IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGlzIG1lbW9yeSBsb2NhdGlvbiBkb2VzDQorLy8v
ICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAy
NTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorc3RhdGljIF9f
aW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3N0b3JldTJfbTEyOGQoZG91
YmxlICpfX2FkZHJfaGksIGRvdWJsZSAqX19hZGRyX2xvLCBfX20yNTZkIF9fYSkNCit7DQorICBf
X20xMjhkIF9fdjEyODsNCisNCisgIF9fdjEyOCA9IF9tbTI1Nl9jYXN0cGQyNTZfcGQxMjgoX19h
KTsNCisgIF9tbV9zdG9yZXVfcGQoX19hZGRyX2xvLCBfX3YxMjgpOw0KKyAgX192MTI4ID0gX21t
MjU2X2V4dHJhY3RmMTI4X3BkKF9fYSwgMSk7DQorICBfbW1fc3RvcmV1X3BkKF9fYWRkcl9oaSwg
X192MTI4KTsNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgdXBwZXIgYW5kIGxvd2VyIDEyOCBiaXRz
IG9mIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvDQorLy8vICAgIHR3byBkaWZmZXJlbnQg
dW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbnMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbiBhbmQgdGhlDQorLy8vICAgc3RvcmUgaW5z
dHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hZGRyX2hpDQorLy8vICAgIEEgcG9pbnRl
ciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBh
cmUgdG8gYmUNCisvLy8gICAgY29waWVkIHRvIHRoaXMgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRk
cmVzcyBvZiB0aGlzIG1lbW9yeSBsb2NhdGlvbiBkb2VzDQorLy8vICAgIG5vdCBoYXZlIHRvIGJl
IGFsaWduZWQuDQorLy8vIFxwYXJhbSBfX2FkZHJfbG8NCisvLy8gICAgQSBwb2ludGVyIHRvIGEg
MTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIEJpdHNbMTI3OjBdIG9mIFxhIF9fYSBhcmUgdG8gYmUN
CisvLy8gICAgY29waWVkIHRvIHRoaXMgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0
aGlzIG1lbW9yeSBsb2NhdGlvbiBkb2VzDQorLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQu
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KK3N0
YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zdG9yZXUyX20x
MjhpKF9fbTEyOGkgKl9fYWRkcl9oaSwgX19tMTI4aSAqX19hZGRyX2xvLCBfX20yNTZpIF9fYSkN
Cit7DQorICBfX20xMjhpIF9fdjEyODsNCisNCisgIF9fdjEyOCA9IF9tbTI1Nl9jYXN0c2kyNTZf
c2kxMjgoX19hKTsNCisgIF9tbV9zdG9yZXVfc2kxMjgoX19hZGRyX2xvLCBfX3YxMjgpOw0KKyAg
X192MTI4ID0gX21tMjU2X2V4dHJhY3RmMTI4X3NpMjU2KF9fYSwgMSk7DQorICBfbW1fc3RvcmV1
X3NpMTI4KF9fYWRkcl9oaSwgX192MTI4KTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBieQ0KKy8vLyAgICBjb25j
YXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9h
dF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19oaQ0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGJlIGNvcGllZCB0byB0aGUgdXBwZXIN
CisvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fbG8NCisvLy8g
ICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBj
b3BpZWQgdG8gdGhlIGxvd2VyDQorLy8vICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUNCisvLy8gICAgY29uY2F0ZW5hdGVkIHJlc3VsdC4NCitzdGF0aWMgX19p
bmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRfbTEyOCAoX19tMTI4
IF9faGksIF9fbTEyOCBfX2xvKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiBfbW0y
NTZfaW5zZXJ0ZjEyOF9wcyAoX21tMjU2X2Nhc3RwczEyOF9wczI1NiAoX19sbyksIF9faGksIDEp
Ow0KKyNlbHNlDQorICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9f
djRzZilfX2xvLCAoX192NHNmKV9faGksIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOw0KKyNlbmRp
Zg0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXSBieQ0KKy8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9faGkNCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0gdG8gYmUgY29waWVkIHRvIHRoZSB1cHBlcg0KKy8vLyAgICAxMjggYml0cyBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19sbw0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyDQor
Ly8vICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlDQorLy8v
ICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldF9tMTI4ZCAoX19tMTI4ZCBfX2hpLCBfX20xMjhkIF9f
bG8pDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTZkKSBfbW0yNTZfaW5z
ZXJ0ZjEyOF9wZCAoX21tMjU2X2Nhc3RwZDEyOF9wZDI1NiAoX19sbyksIF9faGksIDEpOw0KKyNl
bHNlDQorICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYp
X19sbywgKF9fdjJkZilfX2hpLCAwLCAxLCAyLCAzKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENv
bnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGJ5IGNvbmNhdGVuYXRpbmcgdHdvIDEy
OC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
aGkNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUg
dXBwZXIgMTI4IGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fbG8N
CisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUgbG93
ZXIgMTI4IGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAyNTYt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuDQor
c3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldF9t
MTI4aSAoX19tMTI4aSBfX2hpLCBfX20xMjhpIF9fbG8pDQorew0KKyNpZmRlZiBfX0dOVUNfXw0K
KyAgcmV0dXJuIChfX20yNTZpKSBfbW0yNTZfaW5zZXJ0ZjEyOF9zaTI1NiAoX21tMjU2X2Nhc3Rz
aTEyOF9zaTI1NiAoX19sbyksIF9faGksIDEpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTI1Nmkp
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGkpX19sbywgKF9fdjJkaSlfX2hpLCAwLCAx
LCAyLCAzKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBieQ0KKy8vLyAgICBjb25jYXRlbmF0aW5n
IHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0uIFRoaXMg
aXMNCisvLy8gICAgc2ltaWxhciB0byBfbW0yNTZfc2V0X20xMjgsIGJ1dCB0aGUgb3JkZXIgb2Yg
dGhlIGlucHV0IHBhcmFtZXRlcnMgaXMNCisvLy8gICAgc3dhcHBlZC4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2xvDQorLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gdG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcg0KKy8vLyAgICAxMjggYml0cyBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19oaQ0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGJlIGNvcGllZCB0byB0aGUgdXBwZXIN
CisvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZQ0KKy8v
LyAgICBjb25jYXRlbmF0ZWQgcmVzdWx0Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldHJfbTEyOCAoX19tMTI4IF9fbG8sIF9fbTEyOCBfX2hp
KQ0KK3sNCisgIHJldHVybiBfbW0yNTZfc2V0X20xMjgoX19oaSwgX19sbyk7DQorfQ0KKw0KKy8v
LyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGJ5DQorLy8vICAgIGNvbmNhdGVuYXRpbmcgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uIFRoaXMgaXMNCisvLy8gICAgc2ltaWxhciB0byBfbW0y
NTZfc2V0X20xMjhkLCBidXQgdGhlIG9yZGVyIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGlzDQor
Ly8vICAgIHN3YXBwZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEy
OCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19sbw0KKy8vLyAgICBBIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBjb3BpZWQg
dG8gdGhlIGxvd2VyDQorLy8vICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJh
bSBfX2hpDQorLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIHRvIGJlIGNvcGllZCB0byB0aGUgdXBwZXINCisvLy8gICAgMTI4IGJpdHMgb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUNCisvLy8gICAgY29uY2F0ZW5hdGVkIHJlc3Vs
dC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZf
c2V0cl9tMTI4ZCAoX19tMTI4ZCBfX2xvLCBfX20xMjhkIF9faGkpDQorew0KKyAgcmV0dXJuIChf
X20yNTZkKV9tbTI1Nl9zZXRfbTEyOGQoX19oaSwgX19sbyk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1
Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0
DQorLy8vICAgIGludGVnZXIgdmVjdG9ycy4gVGhpcyBpcyBzaW1pbGFyIHRvIF9tbTI1Nl9zZXRf
bTEyOGksIGJ1dCB0aGUgb3JkZXIgb2YNCisvLy8gICAgdGhlIGlucHV0IHBhcmFtZXRlcnMgaXMg
c3dhcHBlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2xvDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZQ0K
Ky8vLyAgICByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2hpDQorLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyIDEyOCBiaXRzIG9mIHRoZQ0KKy8v
LyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZp
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRyX20xMjhpIChfX20xMjhpIF9fbG8sIF9f
bTEyOGkgX19oaSkNCit7DQorICByZXR1cm4gKF9fbTI1NmkpX21tMjU2X3NldF9tMTI4aShfX2hp
LCBfX2xvKTsNCit9DQorDQorI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKyN1bmRlZiBfX0RF
RkFVTFRfRk5fQVRUUlMxMjgNCisNCisjZW5kaWYgLyogX19BVlhJTlRSSU5fSCAqLw0KZGlmZiAt
LWdpdCBhL2luY2x1ZGUvZW1taW50cmluLmggYi9pbmNsdWRlL2VtbWludHJpbi5oDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNDU2OWQ5OA0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvaW5jbHVkZS9lbW1pbnRyaW4uaA0KQEAgLTAsMCArMSw1MDIxIEBADQorLyo9PT0tLS0tIGVt
bWludHJpbi5oIC0gU1NFMiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLT09PQ0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0byBkZWFsDQorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9k
aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwN
CisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMNCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0K
KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFDQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQor
ICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UiBPVEhFUiBERUFMSU5HUyBJTg0KKyAqIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09PT0NCisgKi8NCisNCisjaWZuZGVmIF9fRU1NSU5UUklOX0gNCisjZGVmaW5lIF9f
RU1NSU5UUklOX0gNCisNCisjaW5jbHVkZSA8eG1taW50cmluLmg+DQorDQordHlwZWRlZiBkb3Vi
bGUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQordHlwZWRl
ZiBsb25nIGxvbmcgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7
DQorDQorLyogVHlwZSBkZWZpbmVzLiAgKi8NCit0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRy
aWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7DQordHlwZWRlZiBsb25nIGxvbmcgX192
MmRpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOw0KK3R5cGVkZWYgc2hv
cnQgX192OGhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCit0eXBlZGVm
IGNoYXIgX192MTZxaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQorDQor
LyogVW5zaWduZWQgdHlwZXMgKi8NCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YyZHUg
X19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7DQordHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBfX3Y4aHUgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KK3R5
cGVkZWYgdW5zaWduZWQgY2hhciBfX3YxNnF1IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVf
XygxNikpKTsNCisNCisvKiBXZSBuZWVkIGFuIGV4cGxpY2l0bHkgc2lnbmVkIHZhcmlhbnQgZm9y
IGNoYXIuIE5vdGUgdGhhdCB0aGlzIHNob3VsZG4ndA0KKyAqIGFwcGVhciBpbiB0aGUgaW50ZXJm
YWNlIHRob3VnaC4gKi8NCit0eXBlZGVmIHNpZ25lZCBjaGFyIF9fdjE2cXMgX19hdHRyaWJ1dGVf
XygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KKw0KKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRy
aWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCisjaWZkZWYgIF9fR05V
Q19fDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s
aW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQorI2RlZmluZSBfX0RF
RkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5
c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNlDQorI2RlZmluZSBfX0RFRkFVTFRf
Rk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBf
X3RhcmdldF9fKCJzc2UyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KKyNkZWZpbmUg
X19ERUZBVUxUX0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCxzc2UyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9f
KDY0KSkpDQorI2VuZGlmDQorDQorI2RlZmluZSBfTU1fU0hVRkZMRTIoeCwgeSkgKCgoeCkgPDwg
MSkgfCAoeSkpDQorDQorLy8vIEFkZHMgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaW4g
Ym90aCBvcGVyYW5kcyBhbmQgcmV0dXJucyB0aGUNCisvLy8gICAgc3VtIGluIHRoZSBsb3dlciA2
NCBiaXRzIG9mIHRoZSByZXN1bHQuIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQNCisv
Ly8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9m
IHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNE
IC8gQUREU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxv
d2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgc3VtIG9mIHRoZSBsb3dlciA2NCBiaXRz
IG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQNCisvLy8gICAg
ZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkX3NkKF9f
bTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX2FbMF0gKz0gX19iWzBdOw0KKyAgcmV0
dXJuIF9fYTsNCit9DQorDQorLy8vIEFkZHMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRv
dWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREUEQgLyBBRERQRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3VtcyBv
ZiBib3RoDQorLy8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQor
ew0KKyAgcmV0dXJuIChfX20xMjhkKSgoX192MmRmKV9fYSArIChfX3YyZGYpX19iKTsNCit9DQor
DQorLy8vIFN1YnRyYWN0cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUg
c2Vjb25kIG9wZXJhbmQNCisvLy8gICAgZnJvbSB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhbmQgcmV0dXJucw0KKy8vLyAgICB0aGUgZGlmZmVy
ZW5jZSBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0
cyBvZg0KKy8vLyAgICB0aGUgcmVzdWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZC4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJTRCAvIFNVQlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgbWludWVuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5k
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBs
b3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIGRpZmZlcmVuY2Ugb2YgdGhlIGxvd2Vy
IDY0IGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlDQorLy8vICAg
IGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFu
ZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9z
dWJfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIF9fYVswXSAtPSBfX2JbMF07
DQorICByZXR1cm4gX19hOw0KK30NCisNCisvLy8gU3VidHJhY3RzIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNVQlBE
IC8gU1VCUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtaW51ZW5k
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4N
CisvLy8gICAgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9zdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkZilfX2EgLSAoX192MmRmKV9fYik7DQorfQ0KKw0K
Ky8vLyBNdWx0aXBsaWVzIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIGJvdGggb3Bl
cmFuZHMgYW5kIHJldHVybnMNCisvLy8gICAgdGhlIHByb2R1Y3QgaW4gdGhlIGxvd2VyIDY0IGJp
dHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3Vs
dCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhl
IGZpcnN0DQorLy8vICAgIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TVVMU0QgLyBNVUxTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hv
c2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KKy8vLyAgICBwcm9kdWN0IG9mIHRoZSBsb3dl
ciA2NCBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KKy8vLyAg
ICBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJh
bmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
bXVsX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX2FbMF0gKj0gX19iWzBd
Ow0KKyAgcmV0dXJuIF9fYTsNCit9DQorDQorLy8vIE11bHRpcGxpZXMgdHdvIDEyOC1iaXQgdmVj
dG9ycyBvZiBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVM
UEQgLyBNVUxQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHByb2R1
Y3RzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbXVsX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYpX19hICogKF9fdjJkZilfX2IpOw0K
K30NCisNCisvLy8gRGl2aWRlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0
aGUgZmlyc3Qgb3BlcmFuZCBieSB0aGUNCisvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlDQorLy8vICAgIHF1b3Rp
ZW50IGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuIFRoZSB1cHBlciA2NCBiaXRz
IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJVlNEIC8gRElWU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIGRpdmlzb3IuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0
IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgcXVvdGllbnQgb2YgdGhlIGxvd2VyIDY0IGJpdHMg
b2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlDQorLy8vICAgIGNvcGllZCBm
cm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9kaXZfc2QoX19t
MTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIF9fYVswXSAvPSBfX2JbMF07DQorICByZXR1
cm4gX19hOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYW4gZWxlbWVudC1ieS1lbGVtZW50IGRpdmlz
aW9uIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzIgeCBkb3VibGVdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJVlBEIC8gRElWUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaXZp
c29yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250
YWluaW5nIHRoZSBxdW90aWVudHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9kaXZfcGQoX19tMTI4
ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkZilfX2Eg
LyAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdCBv
ZiB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZg0KKy8vLyAgICB0aGUgc2Vjb25k
IG9wZXJhbmQgYW5kIHJldHVybnMgaXQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3Vs
dC4NCisvLy8gICAgVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZy
b20gdGhlIHVwcGVyDQorLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0
IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFNEIC8gU1FSVFNE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRz
LiBUaGUNCisvLy8gICAgdXBwZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIGNvcGllZCB0
byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCisvLy8gICAgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIHNxdWFyZSByb290IGlzIGNhbGN1bGF0
ZWQgdXNpbmcgdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNv
bnRhaW4gdGhlDQorLy8vICAgIHNxdWFyZSByb290IG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIG9w
ZXJhbmQgXGEgX19iLCBhbmQgd2hvc2UgdXBwZXIgNjQNCisvLy8gICAgYml0cyBhcmUgY29waWVk
IGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2Ygb3BlcmFuZCBcYSBfX2EuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3FydF9zZChfX20xMjhkIF9f
YSwgX19tMTI4ZCBfX2IpDQorew0KKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9zcXJ0
c2QoKF9fdjJkZilfX2IpOw0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsgX19j
WzBdLCBfX2FbMV0gfTsNCit9DQorDQorLy8vIENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290IG9m
IHRoZSBlYWNoIG9mIHR3byB2YWx1ZXMgc3RvcmVkIGluIGENCisvLy8gICAgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRQ
RCAvIFNRUlRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzcXVhcmUgcm9vdHMg
b2YgdGhlDQorLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcXJ0X3BkKF9fbTEyOGQgX19hKQ0K
K3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9zcXJ0cGQoKF9fdjJkZilfX2EpOw0KK30NCisN
CisvLy8gQ29tcGFyZXMgbG93ZXIgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIGJv
dGggb3BlcmFuZHMsIGFuZA0KKy8vLyAgICByZXR1cm5zIHRoZSBsZXNzZXIgb2YgdGhlIHBhaXIg
b2YgdmFsdWVzIGluIHRoZSBsb3dlciA2NC1iaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuIFRo
ZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlcg0K
Ky8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlNEIC8gTUlOU0QgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBs
b3dlciA2NCBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBsb3dlciA2NCBi
aXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0
cyBjb250YWluIHRoZQ0KKy8vLyAgICBtaW5pbXVtIHZhbHVlIGJldHdlZW4gYm90aCBvcGVyYW5k
cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciA2
NCBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5fc2QoX19tMTI4ZCBfX2EsIF9fbTEy
OGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9taW5zZCgoX192MmRmKV9fYSwg
KF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgZWxlbWVudC1ieS1lbGVtZW50IGNv
bXBhcmlzb24gb2YgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzIgeCBkb3Vi
bGVdIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVzc2VyIG9mIGVhY2gg
cGFpciBvZg0KKy8vLyAgICB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TUlOUEQgLyBNSU5QRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1p
bmltdW0gdmFsdWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5fcGQoX19tMTI4ZCBf
X2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9taW5wZCgoX192
MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgbG93ZXIgNjQtYml0
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIGJvdGggb3BlcmFuZHMsIGFuZA0KKy8vLyAgICBy
ZXR1cm5zIHRoZSBncmVhdGVyIG9mIHRoZSBwYWlyIG9mIHZhbHVlcyBpbiB0aGUgbG93ZXIgNjQt
Yml0cyBvZiB0aGUNCisvLy8gICAgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVz
dWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXINCisvLy8gICAgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNQVhTRCAvIE1BWFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUg
b2YgdGhlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9w
ZXJhbmRzLiBUaGUNCisvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgbWF4
aW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBj
b3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNl
IG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fbWF4X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19i
dWlsdGluX2lhMzJfbWF4c2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8v
IFBlcmZvcm1zIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSB0d28gMTI4LWJp
dCB2ZWN0b3JzIG9mDQorLy8vICAgIFsyIHggZG91YmxlXSBhbmQgcmV0dXJucyB0aGUgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgb2YgZWFjaCBwYWlyDQorLy8vICAgIG9mIHZhbHVlcy4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhQRCAvIE1BWFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWF4aW11bSB2YWx1ZXMNCisvLy8gICAgYmV0
d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX21heF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX21heHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQor
fQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBTkQgLyBQ
QU5EIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBiaXR3aXNlIEFORCBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5k
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9h
bmRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZCko
KF9fdjJkdSlfX2EgJiAoX192MmR1KV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdp
c2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCB1c2luZw0KKy8v
LyAgICB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUg
Zmlyc3Qgc291cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFO
RE4gLyBQQU5ETiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxlZnQg
c291cmNlIG9wZXJhbmQuIFRoZQ0KKy8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoaXMgdmFs
dWUgaXMgdXNlZCBpbiB0aGUgYml0d2lzZSBBTkQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmlnaHQgc291
cmNlIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgaW4g
dGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QN
CisvLy8gICAgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9hbmRub3RfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisg
IHJldHVybiAoX19tMTI4ZCkofihfX3YyZHUpX19hICYgKF9fdjJkdSlfX2IpOw0KK30NCisNCisv
Ly8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBk
b3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBPUiAvIFBPUiA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBP
UiBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9vcl9wZChfX20xMjhk
IF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKSgoX192MmR1KV9fYSB8
IChfX3YyZHUpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBYT1Igb2YgdHdv
IDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUFhPUiAvIFBYT1IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgYmV0
d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3hvcl9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAg
cmV0dXJuIChfX20xMjhkKSgoX192MmR1KV9fYSBeIChfX3YyZHUpX19iKTsNCit9DQorDQorLy8v
IENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gZm9yIGVx
dWFsaXR5LiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MA0KKy8vLyAgICBmb3IgZmFsc2UsIDB4
RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBFUVBEIC8gQ01QRVFQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9j
bXBlcV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhk
KV9fYnVpbHRpbl9pYTMyX2NtcGVxcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQor
DQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0g
dG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQg
YXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuIEVhY2ggY29tcGFyaXNv
bg0KKy8vLyAgICB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0
cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUUEQgLyBDTVBMVFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGx0X3BkKF9fbTEyOGQgX19hLCBf
X20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbHRw
ZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisvLy8g
ICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZh
bHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFs
IHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgRWFjaCBjb21w
YXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVQRCAvIENNUExFUEQgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBj
b250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbGVfcGQoX19tMTI4ZCBfX2EsIF9fbTEy
OGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsZXBkKChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAx
MjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVz
IGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4g
dGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRz
IDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFBEIC8gQ01QTFRQRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9jbXBndF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0K
KyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0cGQoKF9fdjJkZilfX2IsIChf
X3YyZGYpX19hKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRp
bmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9y
cyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0
DQorLy8vICAgIG9wZXJhbmQgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0
aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMg
MHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFUEQgLyBDTVBMRVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2NtcGdlX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVwZCgoX192MmRmKV9fYiwgKF9f
djJkZilfX2EpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGlu
ZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Jz
IG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QN
CisvLy8gICAgb3BlcmFuZCBhcmUgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhl
IHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBBIHBhaXIgb2YgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgYXJlICJvcmRlcmVkIiB3aXRoIHJlc3BlY3QgdG8gZWFjaA0KKy8vLyAgICBvdGhl
ciBpZiBuZWl0aGVyIHZhbHVlIGlzIGEgTmFOLiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBm
b3IgZmFsc2UsDQorLy8vICAgIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBPUkRQRCAvIENNUE9SRFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG9yZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG9yZHBkKChfX3YyZGYp
X19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0
IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRo
ZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSB1bm9yZGVyZWQgd2l0aCByZXNwZWN0IHRvIHRo
b3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgQSBwYWlyIG9mIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAidW5vcmRlcmVkIiB3aXRoIHJlc3BlY3QgdG8gZWFjaA0K
Ky8vLyAgICBvdGhlciBpZiBvbmUgb3IgYm90aCB2YWx1ZXMgYXJlIE5hTi4gRWFjaCBjb21wYXJp
c29uIHlpZWxkcyAweDAgZm9yDQorLy8vICAgIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9y
IHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QVU5PUkRQRCAvIENNUFVO
T1JEUEQgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXB1bm9y
ZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9f
YnVpbHRpbl9pYTMyX2NtcHVub3JkcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQor
DQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0g
dG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQg
YXJlIHVuZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAg
ICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZG
RiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBORVFQRCAvIENN
UE5FUVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5lcV9wZChfX20x
MjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9p
YTMyX2NtcG5lcXBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21w
YXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9m
IHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWlu
ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgbGVz
cyB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgRWFjaCBj
b21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRy
dWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxUUEQgLyBDTVBOTFRQRCA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBubHRfcGQoX19tMTI4ZCBfX2Es
IF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBu
bHRwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFj
aCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisv
Ly8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhl
IHZhbHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbm90IGxlc3MgdGhhbiBv
ciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVh
Y2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZv
ciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVBEIC8gQ01QTkxF
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmxlX3BkKF9fbTEyOGQg
X19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf
Y21wbmxlcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVz
IGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhl
DQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlm
IHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVy
IHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNv
bXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1
ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRQRCAvIENNUE5MVFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5ndF9wZChfX20xMjhkIF9fYSwg
X19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5s
dHBkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNo
IG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KKy8v
LyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUg
dmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAg
RWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYg
Zm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFUEQgLyBDTVBO
TEVQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBuZ2VfcGQoX19tMTI4
ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEz
Ml9jbXBubGVwZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOw0KK30NCisNCisvLy8gQ29tcGFy
ZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVh
Y2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdIGZvciBlcXVhbGl0eS4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24g
eWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVNEIC8gQ01QRVFTRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Iu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVk
IHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNv
bXBhcmlzb24NCisvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBm
cm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBlcV9zZChfX20xMjhkIF9fYSwgX19tMTI4
ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGVxc2QoKF9f
djJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAg
IHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0
byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIg
aXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQorLy8vICAgIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZv
ciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkNNUExUU0QgLyBDTVBMVFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRv
IHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbg0KKy8v
LyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVy
IDY0IGJpdHMgb2YgXGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2NtcGx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbHRzZCgoX192MmRmKV9fYSwgKF9f
djJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBp
Zg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29u
ZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9y
IGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QTEVTRCAvIENNUExFU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8v
ICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIg
NjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY21wbGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisg
IHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsZXNkKChfX3YyZGYpX19hLCAoX192
MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlm
DQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhh
biB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZQ0KKy8vLyAgICBpbiB0aGUgc2Vjb25kIHBhcmFtZXRl
ci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4
RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBMVFNEIC8gQ01QTFRTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8vICAgICBy
ZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgXGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2NtcGd0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX20x
MjhkIF9fYyA9IF9fYnVpbHRpbl9pYTMyX2NtcGx0c2QoKF9fdjJkZilfX2IsIChfX3YyZGYpX19h
KTsNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKSB7IF9fY1swXSwgX19hWzFdIH07
DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAg
IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFt
ZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2Us
IDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDTVBMRVNEIC8gQ01QTEVTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVz
dWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRz
IG9mIFxhIF9fYS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jbXBnZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgX19tMTI4
ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9jbXBsZXNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7
DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCkgeyBfX2NbMF0sIF9fYVsxXSB9Ow0K
K30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0
aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyAib3JkZXJlZCIgd2l0aCByZXNwZWN0
IHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwg
MHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLiBBIHBhaXINCisvLy8gICAgb2YgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZXMgYXJlICJvcmRlcmVkIiB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlciBp
Zg0KKy8vLyAgICBuZWl0aGVyIHZhbHVlIGlzIGEgTmFOLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkNNUE9SRFNEIC8gQ01QT1JEU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8v
ICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIg
NjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY21wb3JkX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wb3Jkc2QoKF9fdjJkZilfX2EsIChf
X3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUg
aWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgInVub3JkZXJl
ZCIgd2l0aCByZXNwZWN0IHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRo
ZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMg
MHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLiBBIHBhaXINCisvLy8g
ICAgb2YgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgYXJlICJ1bm9yZGVyZWQiIHdpdGggcmVzcGVj
dCB0byBlYWNoIG90aGVyIGlmDQorLy8vICAgIG9uZSBvciBib3RoIHZhbHVlcyBhcmUgTmFOLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFVOT1JEU0QgLyBDTVBVTk9SRFNEIDwv
Yz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBp
cw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBv
ZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBi
aXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2
NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wdW5vcmRf
c2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1
aWx0aW5faWEzMl9jbXB1bm9yZHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0K
Ky8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1
ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIHVuZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcg
dmFsdWUgaW4NCisvLy8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRo
ZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9y
IHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRU0QgLyBDTVBORVFT
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQor
Ly8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxh
IF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMg
Y29udGFpbnMgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJp
dHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBuZXFfc2QoX19t
MTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5f
aWEzMl9jbXBuZXFzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29t
cGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGlu
IGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhl
IGZpcnN0IHBhcmFtZXRlciBpcyBub3QgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nDQorLy8v
ICAgIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29t
cGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVl
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFNEIC8gQ01QTkxUU0QgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
aXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
b2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Eu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRh
aW5zIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFy
ZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmx0X3NkKF9fbTEyOGQg
X19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf
Y21wbmx0c2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVz
IHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNo
IG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsy
IHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBwYXJhbWV0ZXIgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUNCisvLy8gICAgY29y
cmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAg
VGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBm
b3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVTRCAvIENNUE5M
RVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlIG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMN
CisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2Yg
XGEgX19hLg0KKy8vLyBccmV0dXJucyAgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJp
dHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBubGVfc2Qo
X19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0
aW5faWEzMl9jbXBubGVzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8g
Q29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVz
IGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
cnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4g
dGhlIGZpcnN0IHBhcmFtZXRlciBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBjb3JyZXNwb25kaW5n
DQorLy8vICAgIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBU
aGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZv
ciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFNEIC8gQ01QTkxU
U0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0K
Ky8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBc
YSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRz
IGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBi
aXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmd0X3NkKF9f
bTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX20xMjhkIF9fYyA9IF9fYnVpbHRpbl9p
YTMyX2NtcG5sdHNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7DQorICByZXR1cm4gX19leHRl
bnNpb25fXyAoX19tMTI4ZCkgeyBfX2NbMF0sIF9fYVsxXSB9Ow0KK30NCisNCisvLy8gQ29tcGFy
ZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVh
Y2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZp
cnN0IHBhcmFtZXRlciBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KKy8vLyAg
ICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8v
LyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZG
RkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVNEIC8g
Q01QTkxFU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2
NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBl
ciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmdl
X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX20xMjhkIF9fYyA9IF9fYnVp
bHRpbl9pYTMyX2NtcG5sZXNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7DQorICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMTI4ZCkgeyBfX2NbMF0sIF9fYVsxXSB9Ow0KK30NCisNCisvLy8g
Q29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVz
IGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
cnMgb2YgWzIgeCBkb3VibGVdIGZvciBlcXVhbGl0eS4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBh
cmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3
bw0KKy8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0
dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8g
ICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19h
Lg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY29taWVxX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZXEoKF9fdjJkZilfX2EsIChf
X3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUg
aWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFu
IHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQorLy8vICAgIHRoZSBzZWNvbmQgcGFyYW1ldGVy
Lg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9y
IHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8v
LyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY29taWx0
X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lh
MzJfY29taXNkbHQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBh
cmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBl
YWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9m
IFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBm
aXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KKy8vLyAgICBjb3Jy
ZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBU
aGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBv
ZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwg
MCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBD
T01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
aXMNCisvLy8gICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgICBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5s
aW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jb21pbGVfc2QoX19tMTI4ZCBfX2Es
IF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RsZSgoX192
MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAg
dGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRv
IGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBp
cyBncmVhdGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUNCisvLy8gICAgaW4gdGhlIHNl
Y29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZv
ciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMg
QW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBv
ZiB0aGUgdHdvDQorLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4s
IDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jb21pZ3Rfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVy
biBfX2J1aWx0aW5faWEzMl9jb21pc2RndCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30N
CisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUg
dmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
dGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIu
DQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3Ig
dHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8v
ICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4N
CitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NvbWlnZV9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X2NvbWlzZGdlKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJl
cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFj
aCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBb
MiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmly
c3QgcGFyYW1ldGVyIGlzIHVuZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4NCisv
Ly8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29u
IHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisv
Ly8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVk
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0K
Ky8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBc
YSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNv
bXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisv
Ly8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMu
IElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZh
bHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9jb21pbmVxX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikN
Cit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkbmVxKChfX3YyZGYpX19hLCAoX192
MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gZm9yIGVxdWFsaXR5LiBU
aGUNCisvLy8gICAgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuDQor
Ly8vDQorLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8v
ICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4N
CitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Vjb21pZXFf
c2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml91Y29taXNkZXEoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBh
cmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBl
YWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9m
IFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBm
aXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQor
Ly8vICAgIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNv
biB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvIGxv
d2VyDQorLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5l
ZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBp
cw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBv
ZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAg
IGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4N
CisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3Vjb21pbHRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19i
KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkbHQoKF9fdjJkZilfX2EsIChf
X3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUg
aWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3Ig
ZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyDQorLy8vICAgIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBU
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJu
cyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVy
IG9mIHRoZSB0d28NCisvLy8gICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5h
TiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX3Vjb21pbGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkbGUoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAg
dGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSBjb3Jy
ZXNwb25kaW5nIHZhbHVlDQorLy8vICAgIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0K
Ky8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElm
IGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyDQorLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVz
IGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZV
Q09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZSBpcw0KKy8vLyAgICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAg
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCitz
dGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Vjb21pZ3Rfc2Qo
X19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl91
Y29taXNkZ3QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVz
IHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNo
IG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsy
IHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KKy8vLyAgICBjb3Jy
ZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBU
aGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuICBJZiBlaXRoZXIg
b2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4s
IDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAv
IFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5s
aW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91Y29taWdlX3NkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGdlKChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAg
ICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0g
dG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVy
IGlzIHVuZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4NCisvLy8gICAgdGhlIHNl
Y29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZv
ciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXINCisvLy8gICAg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU0QgLyBVQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNv
bXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJu
cyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LiBJZiBlaXRoZXIg
b2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4s
IDEgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV91Y29taW5lcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RuZXEoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsN
Cit9DQorDQorLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSBpbnRvIHR3byBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50DQorLy8vICAgIHZhbHVl
cywgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XS4NCisvLy8gICAgVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCB2ZWN0
b3IgYXJlIHNldCB0byB6ZXJvLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBE
MlBTIC8gQ1ZUUEQyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRh
aW4gdGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZXMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBz
ZXQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2N2dHBkX3BzKF9fbTEyOGQgX19hKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml9jdnRwZDJwcygoX192MmRmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgbG93ZXIg
dHdvIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgb2YgYQ0KKy8vLyAg
ICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIHR3byBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50DQorLy8vICAgIHZhbHVlcywgcmV0dXJuZWQgaW4gYSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciB0d28NCisvLy8gICAgZWxlbWVudHMgb2Yg
dGhlIGlucHV0IHZlY3RvciBhcmUgdW51c2VkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkNWVFBTMlBEIC8gQ1ZUUFMyUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93
ZXIgdHdvIHNpbmdsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRpbmctcG9pbnQgZWxlbWVudHMg
YXJlIGNvbnZlcnRlZCB0byBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcy4gVGhlDQorLy8vICAgIHVw
cGVyIHR3byBlbGVtZW50cyBhcmUgdW51c2VkLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHBzX3Bk
KF9fbTEyOCBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhkKV9f
YnVpbHRpbl9pYTMyX2N2dHBzMnBkICgoX192NHNmKSBfX2EpOw0KKyNlbHNlDQorICByZXR1cm4g
KF9fbTEyOGQpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KKyAgICAgIF9fYnVpbHRpbl9zaHVm
ZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMSksIF9fdjJkZik7DQorI2Vu
ZGlmDQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgbG93ZXIgdHdvIGludGVnZXIgZWxlbWVudHMg
b2YgYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGkzMl0gaW50byB0d28gZG91Ymxl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMsIHJldHVybmVkIGluIGENCisvLy8gICAg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyAgICBUaGUgdXBwZXIg
dHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IgYXJlIHVudXNlZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlREUTJQRCAvIENWVERRMlBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTMyXS4gVGhlIGxvd2VyIHR3byBpbnRlZ2VyIGVsZW1lbnRzIGFyZQ0KKy8vLyAg
ICBjb252ZXJ0ZWQgdG8gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMuDQorLy8vDQorLy8vICAgIFRo
ZSB1cHBlciB0d28gZWxlbWVudHMgYXJlIHVudXNlZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRl
cGkzMl9wZChfX20xMjhpIF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9f
bTEyOGQpX19idWlsdGluX2lhMzJfY3Z0ZHEycGQgKChfX3Y0c2kpIF9fYSk7DQorI2Vsc2UNCisg
IHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoDQorICAgICAgX19idWls
dGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19hLCAwLCAxKSwgX192MmRm
KTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBpbnRvIHR3byBzaWduZWQgMzItYml0IGludGVnZXIgdmFsdWVzLA0KKy8v
LyAgICByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXS4gVGhlIHVwcGVyDQorLy8vICAgIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCB2ZWN0
b3IgYXJlIHNldCB0byB6ZXJvLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBE
MkRRIC8gQ1ZUUEQyRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWlu
IHRoZQ0KKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWVzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgc2V0
IHRvIHplcm8uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fY3Z0cGRfZXBpMzIoX19tMTI4ZCBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAg
cmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxICgoX192MmRmKSBfX2EpOw0K
KyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0cGQyZHEoKF9fdjJkZilfX2EpOw0K
KyNlbmRpZg0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIGxvdy1vcmRlciBlbGVtZW50IG9mIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdDQorLy8vICAgIGludG8gYSAzMi1iaXQgc2ln
bmVkIGludGVnZXIgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0Qy
U0kgLyBDVlRTRDJTSSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0
cyBhcmUgdXNlZCBpbiB0aGUNCisvLy8gICAgY29udmVyc2lvbi4NCisvLy8gXHJldHVybnMgQSAz
Mi1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KK3N0
YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0c2Rfc2kzMihf
X20xMjhkIF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0c2Qyc2koKF9fdjJk
ZilfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
ZmxvYXRpbmctcG9pbnQgZWxlbWVudCBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSwgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIsIGludG8gYQ0KKy8vLyAgICBzaW5n
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLCByZXR1cm5lZCBpbiB0aGUgbG93ZXIg
MzIgYml0cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUg
dXBwZXIgOTYgYml0cyBvZiB0aGUgcmVzdWx0IHZlY3RvciBhcmUNCisvLy8gICAgY29waWVkIGZy
b20gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTRDJTUyAvIENWVFNEMlNTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4gVGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhpcyBwYXJhbWV0ZXIgYXJlDQorLy8vICAg
IGNvcGllZCB0byB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbg0KKy8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzIHVzZWQg
aW4gdGhlIGNvbnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIGNvbnZlcnRl
ZCB2YWx1ZSBmcm9tIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUg
Y29waWVkDQorLy8vICAgIGZyb20gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFt
ZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X2N2dHNkX3NzKF9fbTEyOCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4
KV9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzKChfX3Y0c2YpX19hLCAoX192MmRmKV9fYik7DQorfQ0K
Kw0KKy8vLyBDb252ZXJ0cyBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSwgaW4gdGhlIHNl
Y29uZCBwYXJhbWV0ZXIsIGludG8NCisvLy8gICAgYSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlLCByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZg0KKy8vLyAgICBh
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhl
IHJlc3VsdCB2ZWN0b3INCisvLy8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRz
IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q1ZUU0kyU0QgLyBDVlRTSTJTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdXBwZXIg
NjQgYml0cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUNCisvLy8gICAgY29waWVkIHRvIHRoZSB1cHBl
ciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAzMi1i
aXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
IDY0IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNl
Y29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQNCisvLy8gICAgZnJv
bSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHNpMzJfc2QoX19tMTI4
ZCBfX2EsIGludCBfX2IpDQorew0KKyAgX19hWzBdID0gX19iOw0KKyAgcmV0dXJuIF9fYTsNCit9
DQorDQorLy8vIENvbnZlcnRzIHRoZSBsb3dlciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IGVsZW1lbnQgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwg
aW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIsIGludG8gYQ0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlLCByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZg0K
Ky8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3INCisvLy8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBl
ciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ1ZUU1MyU0QgLyBDVlRTUzJTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBU
aGUgdXBwZXIgNjQgYml0cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUNCisvLy8gICAgY29waWVkIHRv
IHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIHNpbmdsZS1wcmVj
aXNpb24NCisvLy8gICAgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBpcyB1c2VkIGluIHRoZSBjb252
ZXJzaW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgY29udmVydGVkIHZhbHVlIGZy
b20gdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQNCisv
Ly8gICAgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHNzX3Nk
KF9fbTEyOGQgX19hLCBfX20xMjggX19iKQ0KK3sNCisgIF9fYVswXSA9IF9fYlswXTsNCisgIHJl
dHVybiBfX2E7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24g
ZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcywNCisvLy8g
ICAgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGkzMl0uDQorLy8vDQorLy8vICAgIElmIHRoZSByZXN1bHQgb2YgZWl0aGVyIGNvbnZlcnNp
b24gaXMgaW5leGFjdCwgdGhlIHJlc3VsdCBpcyB0cnVuY2F0ZWQNCisvLy8gICAgKHJvdW5kZWQg
dG93YXJkcyB6ZXJvKSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcuIFRo
ZSB1cHBlcg0KKy8vLyAgICA2NCBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yIGFyZSBzZXQgdG8g
emVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUEQyRFEgLyBDVlRUUEQy
RFEgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhl
DQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZXMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBzZXQgdG8g
emVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9jdnR0cGRfZXBpMzIoX19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX2N2dHRwZDJkcSgoX192MmRmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0
aGUgbG93LW9yZGVyIGVsZW1lbnQgb2YgYSBbMiB4IGRvdWJsZV0gdmVjdG9yIGludG8gYSAzMi1i
aXQNCisvLy8gICAgc2lnbmVkIGludGVnZXIgdmFsdWUsIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3
aGVuIGl0IGlzIGluZXhhY3QuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFNE
MlNJIC8gQ1ZUVFNEMlNJIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxv
d2VyIDY0IGJpdHMgYXJlIHVzZWQgaW4gdGhlDQorLy8vICAgIGNvbnZlcnNpb24uDQorLy8vIFxy
ZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2
YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2
dHRzZF9zaTMyKF9fbTEyOGQgX19hKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0
c2Qyc2koKF9fdjJkZilfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1
ZXMsDQorLy8vICAgIHJldHVybmVkIGluIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQRDJQSSA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRh
aW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9jdnRwZF9waTMyKF9fbTEyOGQgX19hKQ0KK3sNCisg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0cGQycGkoKF9fdjJkZilfX2EpOw0KK30N
CisNCisvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGlu
dG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMsDQorLy8vICAgIHJldHVybmVkIGlu
IGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vICAgIElmIHRoZSByZXN1
bHQgb2YgZWl0aGVyIGNvbnZlcnNpb24gaXMgaW5leGFjdCwgdGhlIHJlc3VsdCBpcyB0cnVuY2F0
ZWQNCisvLy8gICAgKHJvdW5kZWQgdG93YXJkcyB6ZXJvKSByZWdhcmRsZXNzIG9mIHRoZSBjdXJy
ZW50IE1YQ1NSIHNldHRpbmcuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRUUEQy
UEkgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVj
dG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fY3Z0dHBkX3Bp
MzIoX19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnR0
cGQycGkoKF9fdjJkZilfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIHR3byBzaWduZWQg
MzItYml0IGludGVnZXIgZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFsy
IHggaTMyXSBpbnRvIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcywg
cmV0dXJuZWQgaW4gYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkz
Ml0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHBpMzJfcGQoX19tNjQgX19hKQ0KK3sNCisg
IHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRwaTJwZCgoX192MnNpKV9fYSk7DQorfQ0KKw0KKy8v
LyBSZXR1cm5zIHRoZSBsb3ctb3JkZXIgZWxlbWVudCBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBhcw0KKy8vLyAgICBhIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQg
dmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3dlciA2NCBiaXRzIGFyZSByZXR1cm5lZC4NCisvLy8gXHJldHVybnMgQSBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIGNvcGllZCBmcm9tIHRoZSBsb3dlciA2NA0K
Ky8vLyAgICBiaXRzIG9mIFxhIF9fYS4NCitzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX2N2dHNkX2Y2NChfX20xMjhkIF9fYSkNCit7DQorICByZXR1cm4g
X19hWzBdOw0KK30NCisNCisvLy8gTG9hZHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gZnJvbSBhbiBhbGlnbmVkDQorLy8vICAgIG1lbW9yeSBsb2NhdGlv
bi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQgLyBNT1ZBUEQgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRv
IGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisv
Ly8gICAgbG9jYXRpb24gaGFzIHRvIGJlIDE2LWJ5dGUgYWxpZ25lZC4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9sb2FkX3BkKGRvdWJsZSBjb25zdCAqX19kcCkNCit7DQorICByZXR1cm4gKihfX20xMjhkKilf
X2RwOw0KK30NCisNCisvLy8gTG9hZHMgYSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZhbHVlIGZyb20gYSBzcGVjaWZpZWQgbWVtb3J5DQorLy8vICAgIGxvY2F0aW9uIGFuZCBkdXBs
aWNhdGVzIGl0IHRvIGJvdGggdmVjdG9yIGVsZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YN
CisvLy8gICAgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1P
VkREVVAgLyBNT1ZERFVQIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2Rw
DQorLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbG9hZGVkIGFuZA0KKy8vLyAgICBkdXBsaWNhdGVk
IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9sb2FkMV9wZChkb3VibGUgY29uc3QgKl9fZHApDQorew0KKyAgc3RydWN0IF9fbW1fbG9h
ZDFfcGRfc3RydWN0IHsNCisgICAgZG91YmxlIF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19w
YWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgZG91YmxlIF9fdSA9ICgoc3RydWN0IF9fbW1f
bG9hZDFfcGRfc3RydWN0KilfX2RwKS0+X191Ow0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOGQpeyBfX3UsIF9fdSB9Ow0KK30NCisNCisjZGVmaW5lICAgICAgICBfbW1fbG9hZF9wZDEo
ZHApICAgICAgICBfbW1fbG9hZDFfcGQoZHApDQorDQorLy8vIExvYWRzIHR3byBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlcywgaW4gcmV2ZXJzZSBvcmRlciwgZnJvbSBhbiBhbGlnbmVkDQorLy8vICAg
IG1lbW9yeSBsb2NhdGlvbiBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQRCAvIE1PVkFQRCA8L2M+IGluc3Ry
dWN0aW9uICsNCisvLy8gbmVlZGVkIHNodWZmbGluZyBpbnN0cnVjdGlvbnMuIEluIEFWWCBtb2Rl
LCB0aGUgc2h1ZmZsaW5nIG1heSBiZSBjb21iaW5lZA0KKy8vLyB3aXRoIHRoZSBcYyBWTU9WQVBE
LCByZXN1bHRpbmcgaW4gb25seSBhIFxjIFZQRVJNSUxQRCBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fZHANCisvLy8gICAgQSAxNi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhbiBh
cnJheSBvZiBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyB0byBiZQ0KKy8vLyAgICBsb2FkZWQgaW4g
cmV2ZXJzZSBvcmRlci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgcmV2ZXJzZWQgbG9hZGVkDQorLy8vICAgIHZhbHVlcy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2Fkcl9w
ZChkb3VibGUgY29uc3QgKl9fZHApDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgX19tMTI4ZCBf
X3RtcCA9IF9tbV9sb2FkX3BkIChfX2RwKTsNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9zaHVm
cGQgKF9fdG1wLCBfX3RtcCwgX01NX1NIVUZGTEUyICgwLDEpKTsNCisjZWxzZQ0KKyAgX19tMTI4
ZCBfX3UgPSAqKF9fbTEyOGQqKV9fZHA7DQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0
b3IoKF9fdjJkZilfX3UsIChfX3YyZGYpX191LCAxLCAwKTsNCisjZW5kaWYNCit9DQorDQorLy8v
IExvYWRzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGZy
b20gYW4NCisvLy8gICAgdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZNT1ZVUEQgLyBNT1ZVUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkg
bG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24gZG9l
cyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2xvYWR1X3BkKGRvdWJs
ZSBjb25zdCAqX19kcCkNCit7DQorICBzdHJ1Y3QgX19sb2FkdV9wZCB7DQorICAgIF9fbTEyOGQg
X192Ow0KKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQor
ICByZXR1cm4gKChzdHJ1Y3QgX19sb2FkdV9wZCopX19kcCktPl9fdjsNCit9DQorDQorLy8vIExv
YWRzIGEgNjQtYml0IGludGVnZXIgdmFsdWUgdG8gdGhlIGxvdyBlbGVtZW50IG9mIGEgMTI4LWJp
dCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBhbmQgY2xlYXJzIHRoZSB1cHBlciBlbGVtZW50Lg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0
IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KKy8vLyAgICBsb2Nh
dGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZS4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2FkdV9zaTY0
KHZvaWQgY29uc3QgKl9fYSkNCit7DQorICBzdHJ1Y3QgX19sb2FkdV9zaTY0IHsNCisgICAgbG9u
ZyBsb25nIF9fdjsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNf
XykpOw0KKyAgbG9uZyBsb25nIF9fdSA9ICgoc3RydWN0IF9fbG9hZHVfc2k2NCopX19hKS0+X192
Ow0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7X191LCAwTH07DQor
fQ0KKw0KKy8vLyBMb2FkcyBhIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIHRvIHRoZSBs
b3cgZWxlbWVudCBvZiBhDQorLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYW5kIGNsZWFy
cyB0aGUgdXBwZXIgZWxlbWVudC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZT
RCAvIE1PVlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2RwDQorLy8v
ICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZS4NCisvLy8gICAgVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlv
biBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZS4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2FkX3NkKGRv
dWJsZSBjb25zdCAqX19kcCkNCit7DQorICBzdHJ1Y3QgX19tbV9sb2FkX3NkX3N0cnVjdCB7DQor
ICAgIGRvdWJsZSBfX3U7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2Fs
aWFzX18pKTsNCisgIGRvdWJsZSBfX3UgPSAoKHN0cnVjdCBfX21tX2xvYWRfc2Rfc3RydWN0Kilf
X2RwKS0+X191Ow0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3UsIDAgfTsN
Cit9DQorDQorLy8vIExvYWRzIGEgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpbnRvIHRoZSBoaWdo
LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0DQorLy8vICAgIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3ctb3JkZXIgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIGxvdy1vcmRlcg0KKy8vLyAg
ICBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1PVkhQRCAvIE1PVkhQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KKy8vLyAg
ICBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxv
Y2F0aW9uIGNvbnRhaW5pbmcgYSBkb3VibGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBv
aW50IHZhbHVlIHRoYXQgaXMgbG9hZGVkLiBUaGUgbG9hZGVkIHZhbHVlIGlzIHdyaXR0ZW4gdG8g
Yml0cw0KKy8vLyAgICBbMTI3OjY0XSBvZiB0aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0aGUg
bWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90IGhhdmUNCisvLy8gICAgdG8gYmUgYWxpZ25lZC4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2xvYWRoX3BkKF9fbTEyOGQgX19hLCBkb3VibGUgY29uc3QgKl9fZHApDQor
ew0KKyAgc3RydWN0IF9fbW1fbG9hZGhfcGRfc3RydWN0IHsNCisgICAgZG91YmxlIF9fdTsNCisg
IH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgZG91Ymxl
IF9fdSA9ICgoc3RydWN0IF9fbW1fbG9hZGhfcGRfc3RydWN0KilfX2RwKS0+X191Ow0KKyAgcmV0
dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX2FbMF0sIF9fdSB9Ow0KK30NCisNCisvLy8g
TG9hZHMgYSBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGludG8gdGhlIGxvdy1vcmRlciBiaXRzIG9m
IGEgMTI4LWJpdA0KKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgaGlnaC1vcmRl
ciBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUNCisvLy8gICAgaGlnaC1vcmRlciBiaXRzIG9mIHRo
ZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQRCAv
IE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6
NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiBj
b250YWluaW5nIGEgZG91YmxlLXByZWNpc2lvbg0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1
ZSB0aGF0IGlzIGxvYWRlZC4gVGhlIGxvYWRlZCB2YWx1ZSBpcyB3cml0dGVuIHRvIGJpdHMNCisv
Ly8gICAgWzYzOjBdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9j
YXRpb24gZG9lcyBub3QgaGF2ZSB0bw0KKy8vLyAgICBiZSBhbGlnbmVkLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCB2
YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fbG9hZGxfcGQoX19tMTI4ZCBfX2EsIGRvdWJsZSBjb25zdCAqX19kcCkNCit7DQorICBzdHJ1
Y3QgX19tbV9sb2FkbF9wZF9zdHJ1Y3Qgew0KKyAgICBkb3VibGUgX191Ow0KKyAgfSBfX2F0dHJp
YnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICBkb3VibGUgX191ID0gKChz
dHJ1Y3QgX19tbV9sb2FkbF9wZF9zdHJ1Y3QqKV9fZHApLT5fX3U7DQorICByZXR1cm4gX19leHRl
bnNpb25fXyAoX19tMTI4ZCl7IF9fdSwgX19hWzFdIH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3Rz
IGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdpdGgNCisv
Ly8gICAgdW5zcGVjaWZpZWQgY29udGVudC4gVGhpcyBjb3VsZCBiZSB1c2VkIGFzIGFuIGFyZ3Vt
ZW50IHRvIGFub3RoZXINCisvLy8gICAgaW50cmluc2ljIGZ1bmN0aW9uIHdoZXJlIHRoZSBhcmd1
bWVudCBpcyByZXF1aXJlZCBidXQgdGhlIHZhbHVlIGlzIG5vdA0KKy8vLyAgICBhY3R1YWxseSB1
c2VkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSB3aXRoIHVuc3BlY2lmaWVkDQorLy8vICAgIGNvbnRlbnQuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5kZWZpbmVkX3BkKHZvaWQpDQorew0K
KyNpZmRlZiBfX0dOVUNfXw0KKyAgX19tMTI4ZCBfX1ggPSBfX1g7DQorICByZXR1cm4gX19YOw0K
KyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdW5kZWYxMjgoKTsNCisj
ZW5kaWYNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlcg0KKy8vLyAgICA2NCBiaXRzIG9mIHRoZSB2
ZWN0b3IgYXJlIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9u
DQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgc2V0
IHRvIHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WUSAvIE1PVlEgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBBIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsb3dl
ciA2NA0KKy8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRp
YWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhl
DQorLy8vICAgIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRl
ci4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlDQorLy8vICAgIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldF9zZChkb3VibGUg
X193KQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX193LCAwIH07DQor
fQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLCB3aXRoIGVhY2gNCisvLy8gICAgb2YgdGhlIHR3byBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQorLy8vICAgIHNw
ZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgLyBNT1ZMSFBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3Rvcg0KKy8vLyAgICBl
bGVtZW50IG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXQxX3BkKGRvdWJsZSBfX3cp
DQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3csIF9fdyB9Ow0KK30N
CisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSwgd2l0aCBlYWNoDQorLy8vICAgIG9mIHRoZSB0d28gZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZQ0KKy8vLyAgICBzcGVj
aWZpZWQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIC8gTU9WTEhQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX193DQorLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3INCisvLy8gICAgZWxl
bWVudCBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0X3BkMShkb3VibGUgX193KQ0K
K3sNCisgIHJldHVybiBfbW1fc2V0MV9wZChfX3cpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBh
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQ0KKy8vLyAgICBp
bml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQgLyBV
TlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX193DQorLy8vICAg
IEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgdGhlIHVwcGVyIDY0DQorLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9feA0KKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciA2NA0KKy8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9zZXRfcGQoZG91YmxlIF9fdywgZG91YmxlIF9feCkNCit7DQorICBy
ZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9feCwgX193IH07DQorfQ0KKw0KKy8vLyBD
b25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
LA0KKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGggdGhlIHNwZWNpZmll
ZCBkb3VibGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCAvIFVOUENLTFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQNCisv
Ly8gICAgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX194DQorLy8vICAgIEEgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhl
IHVwcGVyIDY0DQorLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Nl
dHJfcGQoZG91YmxlIF9fdywgZG91YmxlIF9feCkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25f
XyAoX19tMTI4ZCl7IF9fdywgX194IH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdDQorLy8vICAgIGluaXRpYWxp
emVkIHRvIHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2l0aA0KKy8vLyAg
ICBhbGwgZWxlbWVudHMgc2V0IHRvIHplcm8uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0emVyb19wZCh2b2lkKQ0KK3sNCisgIHJldHVybiBf
X2V4dGVuc2lvbl9fIChfX20xMjhkKXsgMCwgMCB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBh
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
DQorLy8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgc2Vj
b25kIHBhcmFtZXRlci4gVGhlIHVwcGVyDQorLy8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUg
dXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkJMRU5EUEQgLyBCTEVORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSB1cHBlciA2NCBiaXRzIGFyZSB3cml0dGVuIHRvIHRoZQ0KKy8vLyAgICB1cHBlciA2NCBi
aXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB3cml0dGVuIHRvIHRo
ZQ0KKy8vLyAgICBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVl
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9t
b3ZlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX2FbMF0gPSBfX2JbMF07
DQorICByZXR1cm4gX19hOw0KK30NCisNCisvLy8gU3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9m
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGENCisvLy8gICAgbWVtb3J5IGxv
Y2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNEIC8gTU9WU0QgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVy
IHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBi
ZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fc3RvcmVfc2QoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCit7DQorICBzdHJ1Y3QgX19t
bV9zdG9yZV9zZF9zdHJ1Y3Qgew0KKyAgICBkb3VibGUgX191Ow0KKyAgfSBfX2F0dHJpYnV0ZV9f
KChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICAoKHN0cnVjdCBfX21tX3N0b3JlX3Nk
X3N0cnVjdCopX19kcCktPl9fdSA9IF9fYVswXTsNCit9DQorDQorLy8vIE1vdmVzIHBhY2tlZCBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAg
WzIgeCBkb3VibGVdIHRvIGEgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz5WTU9WQVBEIC8gTU9WQVBTPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9u
IHRoYXQgY2FuIHN0b3JlIHR3bw0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcy4NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIHBhY2tlZCAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlDQorLy8vICAgIG1vdmVkLg0KK3N0YXRp
YyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0b3JlX3BkKGRvdWJs
ZSAqX19kcCwgX19tMTI4ZCBfX2EpDQorew0KKyAgKihfX20xMjhkKilfX2RwID0gX19hOw0KK30N
CisNCisvLy8gTW92ZXMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gdHdpY2UgdG8NCisvLy8gICAgdGhlIHVwcGVyIGFuZCBsb3dlciA2NCBiaXRz
IG9mIGEgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZQ0KKy8vLyAg
IDxjPiBWTU9WRERVUCArIFZNT1ZBUEQgLyBNT1ZMSFBTICsgTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2RwDQorLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9y
eSBsb2NhdGlvbiB0aGF0IGNhbiBzdG9yZSB0d28gZG91YmxlLXByZWNpc2lvbg0KKy8vLyAgICB2
YWx1ZXMuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBhcmUgY29waWVkIHRvIGVhY2gNCisvLy8gICAg
b2YgdGhlIHZhbHVlcyBpbiBcYSBfX2RwLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX3N0b3JlMV9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0K
K3sNCisjaWZkZWYgX19HTlVDX18NCisgIF9tbV9zdG9yZV9wZCAoX19kcCwgX19idWlsdGluX2lh
MzJfc2h1ZnBkIChfX2EsIF9fYSwgX01NX1NIVUZGTEUyICgwLDApKSk7DQorI2Vsc2UNCisgIF9f
YSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwg
MCk7DQorICBfbW1fc3RvcmVfcGQoX19kcCwgX19hKTsNCisjZW5kaWYNCit9DQorDQorLy8vIE1v
dmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IHR3aWNlIHRvDQorLy8vICAgIHRoZSB1cHBlciBhbmQgbG93ZXIgNjQgYml0cyBvZiBhIG1lbW9y
eSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUNCisvLy8gICA8Yz4gVk1PVkRE
VVAgKyBWTU9WQVBEIC8gTU9WTEhQUyArIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24g
dGhhdCBjYW4gc3RvcmUgdHdvIGRvdWJsZS1wcmVjaXNpb24NCisvLy8gICAgdmFsdWVzLg0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdo
b3NlIGxvd2VyIDY0IGJpdHMgYXJlIGNvcGllZCB0byBlYWNoDQorLy8vICAgIG9mIHRoZSB2YWx1
ZXMgaW4gXGEgX19kcC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9zdG9yZV9wZDEoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCit7DQorICBfbW1f
c3RvcmUxX3BkKF9fZHAsIF9fYSk7DQorfQ0KKw0KKy8vLyBTdG9yZXMgYSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gaW50byBhbiB1bmFsaWduZWQgbWVtb3J5DQorLy8vICAgIGxvY2F0
aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCAvIE1PVlVQRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50ZXIg
dG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0K
Ky8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmlu
ZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZXVfcGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkN
Cit7DQorICBzdHJ1Y3QgX19zdG9yZXVfcGQgew0KKyAgICBfX20xMjhkIF9fdjsNCisgIH0gX19h
dHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19z
dG9yZXVfcGQqKV9fZHApLT5fX3YgPSBfX2E7DQorfQ0KKw0KKy8vLyBTdG9yZXMgdHdvIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzLCBpbiByZXZlcnNlIG9yZGVyLCBmcm9tIGEgMTI4LWJpdA0KKy8v
LyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGEgMTYtYnl0ZSBhbGlnbmVkIG1lbW9yeSBs
b2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byBhIHNodWZmbGluZyBpbnN0cnVjdGlvbiBm
b2xsb3dlZCBieSBhDQorLy8vIDxjPiBWTU9WQVBEIC8gTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2RwDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDE2LWJ5dGUg
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCBjYW4gc3RvcmUgdHdvDQorLy8vICAgIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSByZXZlcnNl
ZCBhbmQNCisvLy8gICAgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3N0b3Jlcl9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0KK3sN
CisjaWZkZWYgX19HTlVDX18NCisgIF9tbV9zdG9yZV9wZCAoX19kcCwgX19idWlsdGluX2lhMzJf
c2h1ZnBkIChfX2EsIF9fYSwgX01NX1NIVUZGTEUyICgwLDEpKSk7DQorI2Vsc2UNCisgIF9fYSA9
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMSwgMCk7
DQorICAqKF9fbTEyOGQgKilfX2RwID0gX19hOw0KKyNlbmRpZg0KK30NCisNCisvLy8gU3RvcmVz
IHRoZSB1cHBlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRv
IGENCisvLy8gICAgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1PVkhQRCAvIE1PVkhQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19kcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZWhfcGQoZG91YmxlICpfX2RwLCBfX20xMjhk
IF9fYSkNCit7DQorICBzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0IHsNCisgICAgZG91Ymxl
IF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0K
KyAgKChzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0KilfX2RwKS0+X191ID0gX19hWzFdOw0K
K30NCisNCisvLy8gU3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIHRvIGENCisvLy8gICAgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQRCAvIE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVt
b3J5IGxvY2F0aW9uLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4NCitzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZWxfcGQoZG91
YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCit7DQorICBzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3Ry
dWN0IHsNCisgICAgZG91YmxlIF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywg
X19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0KilfX2Rw
KS0+X191ID0gX19hWzBdOw0KK30NCisNCisvLy8gQWRkcyB0aGUgY29ycmVzcG9uZGluZyBlbGVt
ZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsxNiB4IGk4XSwNCisvLy8gICAgc2F2aW5n
IHRoZSBsb3dlciA4IGJpdHMgb2YgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dCBvZiBhDQorLy8vICAgIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQorLy8v
DQorLy8vICAgIFRoZSBpbnRlZ2VyIGVsZW1lbnRzIG9mIGJvdGggcGFyYW1ldGVycyBjYW4gYmUg
ZWl0aGVyIHNpZ25lZCBvciB1bnNpZ25lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQQUREQiAvIFBBRERCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0K
Ky8vLyAgICBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2FkZF9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTEyOGkpKChfX3YxNnF1KV9fYSArIChfX3YxNnF1KV9fYik7DQorfQ0KKw0K
Ky8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YgWzggeCBpMTZdLA0KKy8vLyAgICBzYXZpbmcgdGhlIGxvd2VyIDE2IGJpdHMgb2YgZWFj
aCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhDQorLy8vICAgIDEyOC1iaXQg
cmVzdWx0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQorLy8vDQorLy8vICAgIFRoZSBpbnRlZ2VyIGVs
ZW1lbnRzIG9mIGJvdGggcGFyYW1ldGVycyBjYW4gYmUgZWl0aGVyIHNpZ25lZCBvciB1bnNpZ25l
ZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREVyAvIFBBRERXIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBp
MTZdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KKy8vLyAgICBwYXJhbWV0ZXJzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZF9lcGkx
NihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192
OGh1KV9fYSArIChfX3Y4aHUpX19iKTsNCit9DQorDQorLy8vIEFkZHMgdGhlIGNvcnJlc3BvbmRp
bmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkzMl0sDQorLy8vICAg
IHNhdmluZyB0aGUgbG93ZXIgMzIgYml0cyBvZiBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGlu
ZyBlbGVtZW50IG9mIGENCisvLy8gICAgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs0IHggaTMy
XS4NCisvLy8NCisvLy8gICAgVGhlIGludGVnZXIgZWxlbWVudHMgb2YgYm90aCBwYXJhbWV0ZXJz
IGNhbiBiZSBlaXRoZXIgc2lnbmVkIG9yIHVuc2lnbmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBBREREIC8gUEFEREQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgc3VtcyBv
ZiBib3RoDQorLy8vICAgIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9f
YikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3Y0c3UpX19hICsgKF9fdjRzdSlfX2IpOw0K
K30NCisNCisvLy8gQWRkcyB0d28gc2lnbmVkIG9yIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZh
bHVlcywgcmV0dXJuaW5nIHRoZQ0KKy8vLyAgICBsb3dlciA2NCBiaXRzIG9mIHRoZSBzdW0uDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREUSA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIuDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlci4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQg
aW50ZWdlciBjb250YWluaW5nIHRoZSBzdW0gb2YgYm90aCBwYXJhbWV0ZXJzLg0KKyNpZm5kZWYg
X19HTlVDX18NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1Y
DQorX21tX2FkZF9zaTY0KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfcGFkZHEoKF9fdjFkaSlfX2EsIChfX3YxZGkpX19iKTsNCit9DQor
I2VuZGlmDQorDQorLy8vIEFkZHMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEy
OC1iaXQgdmVjdG9ycyBvZiBbMiB4IGk2NF0sDQorLy8vICAgIHNhdmluZyB0aGUgbG93ZXIgNjQg
Yml0cyBvZiBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGENCisvLy8g
ICAgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCisvLy8NCisvLy8gICAgVGhl
IGludGVnZXIgZWxlbWVudHMgb2YgYm90aCBwYXJhbWV0ZXJzIGNhbiBiZSBlaXRoZXIgc2lnbmVk
IG9yIHVuc2lnbmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERRIC8gUEFE
RFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQorLy8vICAgIHBhcmFt
ZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fYWRkX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9f
bTEyOGkpKChfX3YyZHUpX19hICsgKF9fdjJkdSlfX2IpOw0KK30NCisNCisvLy8gQWRkcywgd2l0
aCBzYXR1cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0K
Ky8vLyAgICBzaWduZWQgWzE2IHggaThdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUg
Y29ycmVzcG9uZGluZyBlbGVtZW50IG9mDQorLy8vICAgIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9y
IG9mIFsxNiB4IGk4XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4gMHg3RiBhcmUNCisvLy8g
ICAgc2F0dXJhdGVkIHRvIDB4N0YuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNh
dHVyYXRlZCB0byAweDgwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERTQiAv
IFBBRERTQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQg
c3VtcyBvZg0KKy8vLyAgICBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkc19lcGk4KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHNiMTI4
KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIEFkZHMsIHdpdGggc2F0
dXJhdGlvbiwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQNCisvLy8g
ICAgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhlIGNvcnJl
c3BvbmRpbmcgZWxlbWVudCBvZg0KKy8vLyAgICBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBb
OCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4N0ZGRg0KKy8vLyAgICBhcmUg
c2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBz
YXR1cmF0ZWQgdG8NCisvLy8gICAgMHg4MDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBBRERTVyAvIFBBRERTVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRo
ZSBzYXR1cmF0ZWQgc3VtcyBvZg0KKy8vLyAgICBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkc19lcGkxNihfX20x
MjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p
YTMyX3BhZGRzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gQWRk
cywgd2l0aCBzYXR1cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4
LWJpdA0KKy8vLyAgICB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9ycywgc2F2aW5nIGVhY2ggc3Vt
IGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQNCisvLy8gICAgb2YgYSAxMjgtYml0IHJlc3Vs
dCB2ZWN0b3Igb2YgWzE2IHggaThdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweEZGDQor
Ly8vICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gTmVnYXRpdmUgc3VtcyBhcmUgc2F0dXJhdGVk
IHRvIDB4MDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFERFVTQiAvIFBBRERV
U0IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVk
IHN1bXMNCisvLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZHNfZXB1OChfX20xMjhpIF9fYSwgX19t
MTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGR1c2Ix
MjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8gQWRkcywgd2l0aCBz
YXR1cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KKy8v
LyAgICB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9ycywgc2F2aW5nIGVhY2ggc3VtIGluIHRoZSBj
b3JyZXNwb25kaW5nIGVsZW1lbnQNCisvLy8gICAgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Ig
b2YgWzggeCBpMTZdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICAweEZGRkYg
YXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIE5lZ2F0aXZlIHN1bXMgYXJlIHNhdHVyYXRlZCB0byAw
eDAwMDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFERFVTQiAvIFBBRERVU0Ig
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1
bXMNCisvLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZHNfZXB1MTYoX19tMTI4aSBfX2EsIF9fbTEy
OGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkdXN3MTI4
KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wdXRlcyB0aGUgcm91
bmRlZCBhdmFyYWdlcyBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3bw0KKy8vLyAgICAx
MjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCByZXN1bHQgaW4g
dGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZl
Y3RvciBvZiBbMTYgeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFWR0Ig
LyBQQVZHQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSByb3Vu
ZGVkDQorLy8vICAgIGF2ZXJhZ2VzIG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hdmdfZXB1OChfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQorew0KKyAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3YxNmh1IF9f
YXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KKyAgICAgICAgICAgICAgICgoX19idWlsdGluX2Nv
bnZlcnR2ZWN0b3IoKF9fdjE2cXUpX19hLCBfX3YxNmh1KSArDQorICAgICAgICAgICAgICAgICBf
X2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MTZxdSlfX2IsIF9fdjE2aHUpKSArIDEpDQorICAg
ICAgICAgICAgICAgICA+PiAxLCBfX3YxNnF1KTsNCit9DQorDQorLy8vIENvbXB1dGVzIHRoZSBy
b3VuZGVkIGF2YXJhZ2VzIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvDQorLy8vICAg
IDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHJlc3VsdCBp
biB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCByZXN1bHQg
dmVjdG9yIG9mIFs4IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQVZH
VyAvIFBBVkdXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJv
dW5kZWQNCisvLy8gICAgYXZlcmFnZXMgb2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2F2Z19lcHUxNihfX20xMjhp
IF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgX192OHN1IF9f
YXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KKyAgICAgICAgICAgICAgICgoX19idWlsdGluX2Nv
bnZlcnR2ZWN0b3IoKF9fdjhodSlfX2EsIF9fdjhzdSkgKw0KKyAgICAgICAgICAgICAgICAgX19i
dWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjhodSlfX2IsIF9fdjhzdSkpICsgMSkNCisgICAgICAg
ICAgICAgICAgID4+IDEsIF9fdjhodSk7DQorfQ0KKw0KKy8vLyBNdWx0aXBsaWVzIHRoZSBjb3Jy
ZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0NCisvLy8g
ICAgdmVjdG9ycywgcHJvZHVjaW5nIGVpZ2h0IGludGVybWVkaWF0ZSAzMi1iaXQgc2lnbmVkIGlu
dGVnZXIgcHJvZHVjdHMsIGFuZA0KKy8vLyAgICBhZGRzIHRoZSBjb25zZWN1dGl2ZSBwYWlycyBv
ZiAzMi1iaXQgcHJvZHVjdHMgdG8gZm9ybSBhIDEyOC1iaXQgc2lnbmVkDQorLy8vICAgIFs0IHgg
aTMyXSB2ZWN0b3IuDQorLy8vDQorLy8vICAgIEZvciBleGFtcGxlLCBiaXRzIFsxNTowXSBvZiBi
b3RoIHBhcmFtZXRlcnMgYXJlIG11bHRpcGxpZWQgcHJvZHVjaW5nIGENCisvLy8gICAgMzItYml0
IHByb2R1Y3QsIGJpdHMgWzMxOjE2XSBvZiBib3RoIHBhcmFtZXRlcnMgYXJlIG11bHRpcGxpZWQg
cHJvZHVjaW5nDQorLy8vICAgIGEgMzItYml0IHByb2R1Y3QsIGFuZCB0aGUgc3VtIG9mIHRob3Nl
IHR3byBwcm9kdWN0cyBiZWNvbWVzIGJpdHMgWzMxOjBdDQorLy8vICAgIG9mIHRoZSByZXN1bHQu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BRERXRCAvIFBNQUREV0QgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgc2ln
bmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVk
IFs0IHggaTMyXSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiBwcm9kdWN0cw0KKy8vLyAg
ICBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fbWFkZF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQor
ew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtYWRkd2QxMjgoKF9fdjhoaSlf
X2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGNvcnJlc3BvbmRpbmcgZWxl
bWVudHMgb2YgdHdvIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XQ0KKy8vLyAgICB2ZWN0b3JzLCBz
YXZpbmcgdGhlIGdyZWF0ZXIgdmFsdWUgZnJvbSBlYWNoIGNvbXBhcmlzb24gaW4gdGhlDQorLy8v
ICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBb
OCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BWFNXIC8gUE1BWFNX
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWUgb2YN
CisvLy8gICAgZWFjaCBjb21wYXJpc29uLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX21heF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtYXhzdzEyOCgoX192OGhp
KV9fYSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgY29ycmVzcG9uZGluZyBl
bGVtZW50cyBvZiB0d28gMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0NCisvLy8gICAgdmVjdG9y
cywgc2F2aW5nIHRoZSBncmVhdGVyIHZhbHVlIGZyb20gZWFjaCBjb21wYXJpc29uIGluIHRoZQ0K
Ky8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Ig
b2YgWzE2IHggaThdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVQiAvIFBN
QVhVQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBncmVhdGVy
IHZhbHVlIG9mDQorLy8vICAgIGVhY2ggY29tcGFyaXNvbi4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXhfZXB1OChfX20xMjhpIF9fYSwgX19t
MTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtYXh1YjEy
OCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBjb3Jy
ZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0NCisvLy8g
ICAgdmVjdG9ycywgc2F2aW5nIHRoZSBzbWFsbGVyIHZhbHVlIGZyb20gZWFjaCBjb21wYXJpc29u
IGluIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3Vs
dCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBN
SU5TVyAvIFBNSU5TVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSBzbWFs
bGVyIHZhbHVlIG9mDQorLy8vICAgIGVhY2ggY29tcGFyaXNvbi4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5fZXBpMTYoX19tMTI4aSBfX2Es
IF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWlu
c3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGNv
cnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdDQor
Ly8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgc21hbGxlciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFy
aXNvbiBpbiB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCBy
ZXN1bHQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQTUlOVUIgLyBQTUlOVUIgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgc21hbGxlciB2YWx1ZSBvZg0KKy8vLyAgICBlYWNoIGNvbXBhcmlzb24uDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbWluX2VwdTgoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f
aWEzMl9wbWludWIxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8g
TXVsdGlwbGllcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gc2lnbmVkIFs4IHgg
aTE2XQ0KKy8vLyAgICB2ZWN0b3JzLCBzYXZpbmcgdGhlIHVwcGVyIDE2IGJpdHMgb2YgZWFjaCAz
Mi1iaXQgcHJvZHVjdCBpbiB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEg
MTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHJlc3VsdCB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUE1VTEhXIC8gUE1VTEhXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9y
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZl
Y3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHVwcGVyIDE2IGJpdHMgb2YNCisvLy8gICAgZWFjaCBvZiB0aGUgZWlnaHQg
MzItYml0IHByb2R1Y3RzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX211bGhpX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGh3MTI4KChfX3Y4aGkpX19hLCAo
X192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBNdWx0aXBsaWVzIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnRzIG9mIHR3byB1bnNpZ25lZCBbOCB4IGkxNl0NCisvLy8gICAgdmVjdG9ycywgc2F2aW5n
IHRoZSB1cHBlciAxNiBiaXRzIG9mIGVhY2ggMzItYml0IHByb2R1Y3QgaW4gdGhlDQorLy8vICAg
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHJl
c3VsdCB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTEhVVyAvIFBN
VUxIVVcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgdXBwZXIg
MTYgYml0cw0KKy8vLyAgICBvZiBlYWNoIG9mIHRoZSBlaWdodCAzMi1iaXQgcHJvZHVjdHMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbXVsaGlf
ZXB1MTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9wbXVsaHV3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0K
Kw0KKy8vLyBNdWx0aXBsaWVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byBzaWdu
ZWQgWzggeCBpMTZdDQorLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgbG93ZXIgMTYgYml0cyBv
ZiBlYWNoIDMyLWJpdCBwcm9kdWN0IGluIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1l
bnQgb2YgYSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gcmVzdWx0IHZlY3Rvci4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMTFcgLyBQTVVMTFcgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2
XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4
IGkxNl0gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2
ZWN0b3IgY29udGFpbmluZyB0aGUgbG93ZXIgMTYgYml0cyBvZg0KKy8vLyAgICBlYWNoIG9mIHRo
ZSBlaWdodCAzMi1iaXQgcHJvZHVjdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fbXVsbG9fZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkoKF9fdjhodSlfX2EgKiAoX192OGh1KV9fYik7DQor
fQ0KKw0KKy8vLyBNdWx0aXBsaWVzIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBjb250
YWluZWQgaW4gdGhlIGxvd2VyIGJpdHMNCisvLy8gICAgb2YgdGhlIHR3byA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3JzIGFuZCByZXR1cm5zIHRoZSA2NC1iaXQgdW5zaWduZWQNCisvLy8gICAgcHJvZHVj
dC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNVUxVRFEgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBw
cm9kdWN0IG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZB
VUxUX0ZOX0FUVFJTX01NWA0KK19tbV9tdWxfc3UzMihfX202NCBfX2EsIF9fbTY0IF9fYikNCit7
DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWx1
ZHEgKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0
aW5faWEzMl9wbXVsdWRxKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQorI2VuZGlmDQorfQ0K
Kw0KKy8vLyBNdWx0aXBsaWVzIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBjb250YWlu
ZWQgaW4gdGhlIGxvd2VyDQorLy8vICAgIGJpdHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dHMgb2YgdHdvIFsyIHggaTY0XSB2ZWN0b3JzLCBhbmQgcmV0dXJucw0KKy8vLyAgICB0aGUgNjQt
Yml0IHByb2R1Y3RzIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIGEgWzIgeCBpNjRd
IHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMVURRIC8gUE1VTFVE
USA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgWzIg
eCBpNjRdIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8v
LyBccGFyYW0gX19iDQorLy8vICAgIEEgWzIgeCBpNjRdIHZlY3RvciBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIFsyIHggaTY0XSB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgcHJvZHVjdCBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX211bF9lcHUzMihfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BtdWx1ZHExMjgo
KF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsNCit9DQorDQorLy8vIENvbXB1dGVzIHRoZSBhYnNv
bHV0ZSBkaWZmZXJlbmNlcyBvZiBjb3JyZXNwb25kaW5nIDgtYml0IGludGVnZXINCisvLy8gICAg
dmFsdWVzIGluIHR3byAxMjgtYml0IHZlY3RvcnMuIFN1bXMgdGhlIGZpcnN0IDggYWJzb2x1dGUg
ZGlmZmVyZW5jZXMsIGFuZA0KKy8vLyAgICBzZXBhcmF0ZWx5IHN1bXMgdGhlIHNlY29uZCA4IGFi
c29sdXRlIGRpZmZlcmVuY2VzLiBQYWNrcyB0aGVzZSB0d28NCisvLy8gICAgdW5zaWduZWQgMTYt
Yml0IGludGVnZXIgc3VtcyBpbnRvIHRoZSB1cHBlciBhbmQgbG93ZXIgZWxlbWVudHMgb2YgYQ0K
Ky8vLyAgICBbMiB4IGk2NF0gdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBTQURCVyAvIFBTQURCVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBc
cmV0dXJucyBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiB0aGUgc2V0
cyBvZiBhYnNvbHV0ZQ0KKy8vLyAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2Fk
X2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9wc2FkYncxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8g
U3VidHJhY3RzIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IGludGVnZXIgdmFsdWVzIGluIHRoZSBv
cGVyYW5kcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCQiAvIFBTVUJCIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFo
ZW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCisvLy8gICAgaW4gdGhlIG9wZXJhbmRzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1Yl9l
cGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpKChf
X3YxNnF1KV9fYSAtIChfX3YxNnF1KV9fYik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgdGhlIGNv
cnJlc3BvbmRpbmcgMTYtYml0IGludGVnZXIgdmFsdWVzIGluIHRoZSBvcGVyYW5kcy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCVyAvIFBTVUJXIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2Vz
IG9mIHRoZSB2YWx1ZXMNCisvLy8gICAgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1Yl9lcGkxNihfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192OGh1KV9fYSAtIChf
X3Y4aHUpX19iKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyB0aGUgY29ycmVzcG9uZGluZyAzMi1i
aXQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIG9wZXJhbmRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBTVUJEIC8gUFNVQkQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
bWludWVuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0K
Ky8vLyAgICBpbiB0aGUgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fc3ViX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cit7DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3Y0c3UpX19hIC0gKF9fdjRzdSlfX2IpOw0KK30N
CisNCisvLy8gU3VidHJhY3RzIHNpZ25lZCBvciB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB2YWx1
ZXMgYW5kIHdyaXRlcyB0aGUNCisvLy8gICAgZGlmZmVyZW5jZSB0byB0aGUgY29ycmVzcG9uZGlu
ZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFBTVUJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZC4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBz
dWJ0cmFoZW5kLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1ZXMgaW4NCisvLy8gICAgdGhlIG9wZXJhbmRz
Lg0KKw0KKyNpZm5kZWYgX19HTlVDX18NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlNfTU1YDQorX21tX3N1Yl9zaTY0KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnEoKF9fdjFkaSlfX2EsIChfX3Yx
ZGkpX19iKTsNCit9DQorI2VuZGlmDQorDQorLy8vIFN1YnRyYWN0cyB0aGUgY29ycmVzcG9uZGlu
ZyBlbGVtZW50cyBvZiB0d28gWzIgeCBpNjRdIHZlY3RvcnMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFNVQlEgLyBQU1VCUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBtaW51ZW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVz
DQorLy8vICAgIGluIHRoZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdWJfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkoKF9fdjJkdSlfX2EgLSAoX192MmR1KV9fYik7DQor
fQ0KKw0KKy8vLyBTdWJ0cmFjdHMgY29ycmVzcG9uZGluZyA4LWJpdCBzaWduZWQgaW50ZWdlciB2
YWx1ZXMgaW4gdGhlIGlucHV0IGFuZA0KKy8vLyAgICByZXR1cm5zIHRoZSBkaWZmZXJlbmNlcyBp
biB0aGUgY29ycmVzcG9uZGluZyBieXRlcyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vICAgIERp
ZmZlcmVuY2VzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RiwgYW5kIGRp
ZmZlcmVuY2VzIGxlc3MNCisvLy8gICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCU0IgLyBQU1VCU0IgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlm
ZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0KKy8vLyAgICBpbiB0aGUgb3BlcmFuZHMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3Vic19lcGk4KF9f
bTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfcHN1YnNiMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8v
IFN1YnRyYWN0cyBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4g
dGhlIGlucHV0IGFuZA0KKy8vLyAgICByZXR1cm5zIHRoZSBkaWZmZXJlbmNlcyBpbiB0aGUgY29y
cmVzcG9uZGluZyBieXRlcyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vICAgIERpZmZlcmVuY2Vz
IGdyZWF0ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYsIGFuZCB2YWx1ZXMg
bGVzcw0KKy8vLyAgICB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCU1cgLyBQU1VCU1cgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5j
ZXMgb2YgdGhlIHZhbHVlcw0KKy8vLyAgICBpbiB0aGUgb3BlcmFuZHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3Vic19lcGkxNihfX20xMjhp
IF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X3BzdWJzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gU3VidHJh
Y3RzIGNvcnJlc3BvbmRpbmcgOC1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIGlu
cHV0DQorLy8vICAgIGFuZCByZXR1cm5zIHRoZSBkaWZmZXJlbmNlcyBpbiB0aGUgY29ycmVzcG9u
ZGluZyBieXRlcyBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIERpZmZlcmVuY2VzIGxlc3Mg
dGhhbiAweDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQU1VCVVNCIC8gUFNVQlVTQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBtaW51ZW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB1bnNpZ25lZCBpbnRlZ2VyDQorLy8vICAg
IGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfZXB1OChfX20xMjhp
IF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X3BzdWJ1c2IxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8gU3Vi
dHJhY3RzIGNvcnJlc3BvbmRpbmcgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRo
ZSBpbnB1dA0KKy8vLyAgICBhbmQgcmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJl
c3BvbmRpbmcgYnl0ZXMgaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBEaWZmZXJlbmNlcyBs
ZXNzIHRoYW4gMHgwMDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMDAwLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBTVUJVU1cgLyBQU1VCVVNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIG1pbnVlbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHVuc2lnbmVkIGludGVnZXIN
CisvLy8gICAgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3Vic19lcHUx
NihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX3BzdWJ1c3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQor
Ly8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Jz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBTkQgLyBQQU5EIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUgdmFsdWVzDQorLy8vICAgIGlu
IGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fYW5kX3NpMTI4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICBy
ZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hICYgKF9fdjJkdSlfX2IpOw0KK30NCisNCisvLy8g
UGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIHVz
aW5nIHRoZQ0KKy8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoZSB2YWx1ZXMgY29udGFpbmVk
IGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQQU5ETiAvIFBBTkROIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBv
cGVyYW5kLiBUaGUgb25lJ3MgY29tcGxlbWVudA0KKy8vLyAgICBvZiB0aGlzIHZhbHVlIGlzIHVz
ZWQgaW4gdGhlIGJpdHdpc2UgQU5ELg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBv
ZiB0aGUgb25lJ3MNCisvLy8gICAgY29tcGxlbWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhbmQg
dGhlIHZhbHVlcyBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYW5kbm90X3NpMTI4KF9fbTEyOGkgX19hLCBf
X20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpKH4oX192MmR1KV9fYSAmIChfX3Yy
ZHUpX19iKTsNCit9DQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvcnMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE9SIC8gUE9S
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIE9SIG9mIHRoZSB2YWx1ZXMN
CisvLy8gICAgaW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9vcl9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192MmR1KV9fYSB8IChfX3YyZHUpX19iKTsNCit9
DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBleGNsdXNpdmUgT1Igb2YgdHdvIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBYT1IgLyBQ
WE9SIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBv
ZiB0aGUNCisvLy8gICAgdmFsdWVzIGluIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1feG9yX3NpMTI4KF9fbTEyOGkgX19h
LCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hIF4gKF9f
djJkdSlfX2IpOw0KK30NCisNCisvLy8gTGVmdC1zaGlmdHMgdGhlIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3Igb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkDQorLy8vICAgIG51bWJlciBvZiBieXRlcy4g
TG93LW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBfbW1fc2xsaV9zaTEyOChf
X20xMjhpIGEsIGNvbnN0IGludCBpbW0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMRFEgLyBQU0xMRFEgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gaW1t
DQorLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYnl0
ZXMgdG8gbGVmdC1zaGlmdCBvcGVyYW5kDQorLy8vICAgIFxhIGEuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWUu
DQorI2RlZmluZSBfbW1fc2xsaV9zaTEyOChhLCBpbW0pIFwNCisgIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BzbGxkcWkxMjhfYnl0ZXNoaWZ0KChfX3YyZGkpKF9fbTEyOGkpKGEpLCAoaW50KShp
bW0pKQ0KKw0KKyNkZWZpbmUgX21tX2JzbGxpX3NpMTI4KGEsIGltbSkgXA0KKyAgKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcHNsbGRxaTEyOF9ieXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSks
IChpbnQpKGltbSkpDQorDQorLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0IHZhbHVlIGluIHRo
ZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQNCisvLy8gICAgYnkgdGhlIHNwZWNpZmll
ZCBudW1iZXIgb2YgYml0cy4gTG93LW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTFcgLyBQU0xMVyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAg
QW4gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byBsZWZ0LXNo
aWZ0IGVhY2ggdmFsdWUNCisvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFs
dWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X3NsbGlfZXBpMTYoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KK3sNCisgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsd2kxMjgoKF9fdjhoaSlfX2EsIF9fY291bnQpOw0KK30N
CisNCisvLy8gTGVmdC1zaGlmdHMgZWFjaCAxNi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3Igb3BlcmFuZA0KKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBi
aXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQU0xMVyAvIFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNv
dXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJp
dHMNCisvLy8gICAgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVm
dC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zbGxfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCit7
DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbHcxMjgoKF9fdjhoaSlfX2Es
IChfX3Y4aGkpX19jb3VudCk7DQorfQ0KKw0KKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCB2
YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQorLy8vICAgIGJ5IHRo
ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTTExEIC8gUFNMTEQgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50
DQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMg
dG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlDQorLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1z
aGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9zbGxpX2VwaTMyKF9fbTEyOGkgX19hLCBpbnQgX19jb3VudCkNCit7DQorICBy
ZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGRpMTI4KChfX3Y0c2kpX19hLCBfX2Nv
dW50KTsNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIGVhY2ggMzItYml0IHZhbHVlIGluIHRoZSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQNCisvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBu
dW1iZXIgb2YgYml0cy4gTG93LW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUFNMTEQgLyBQU0xMRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNwZWNpZnkgdGhlIG51
bWJlciBvZiBiaXRzDQorLy8vICAgIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5k
IFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9f
Y291bnQpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGxkMTI4KChf
X3Y0c2kpX19hLCAoX192NHNpKV9fY291bnQpOw0KK30NCisNCisvLy8gTGVmdC1zaGlmdHMgZWFj
aCA2NC1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZA0KKy8v
LyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUg
Y2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xMUSAvIFBTTExRIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFy
YW0gX19jb3VudA0KKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJl
ciBvZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KKy8vLyAgICBpbiBvcGVyYW5kIFxh
IF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsaV9lcGk2NChfX20xMjhpIF9fYSwgaW50IF9fY291bnQp
DQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzbGxxaTEyOCgoX192MmRpKV9fYSwgX19j
b3VudCk7DQorfQ0KKw0KKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDY0LWJpdCB2YWx1ZSBpbiB0aGUg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQorLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQg
bnVtYmVyIG9mIGJpdHMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBTTExRIC8gUFNMTFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBu
dW1iZXIgb2YgYml0cw0KKy8vLyAgICB0byBsZWZ0LXNoaWZ0IGVhY2ggdmFsdWUgaW4gb3BlcmFu
ZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NsbF9lcGk2NChfX20xMjhpIF9fYSwgX19tMTI4aSBf
X2NvdW50KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wc2xscTEyOCgoX192MmRpKV9f
YSwgKF9fdjJkaSlfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJp
dCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQorLy8vICAgIGJ5
IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVk
IHdpdGggdGhlIHNpZ24NCisvLy8gICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkFXIC8gUFNSQVcgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8v
ICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmln
aHQtc2hpZnQgZWFjaCB2YWx1ZQ0KKy8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0
ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX3NyYWlfZXBpMTYoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KK3sNCisgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Jhd2kxMjgoKF9fdjhoaSlfX2EsIF9fY291bnQp
Ow0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRzIGVhY2ggMTYtYml0IHZhbHVlIGluIHRoZSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQNCisvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBudW1i
ZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbg0KKy8v
LyAgICBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUFNSQVcgLyBQU1JBVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3Vy
Y2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNwZWNpZnkgdGhlIG51bWJlciBvZiBiaXRz
DQorLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUgaW4gb3BlcmFuZCBcYSBfX2EuDQor
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdo
dC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zcmFfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCit7
DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXcxMjgoKF9fdjhoaSlfX2Es
IChfX3Y4aGkpX19jb3VudCk7DQorfQ0KKw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQg
dmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZA0KKy8vLyAgICBieSB0
aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3
aXRoIHRoZSBzaWduDQorLy8vICAgIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBRCAvIFBTUkFEIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAg
ICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0
LXNoaWZ0IGVhY2ggdmFsdWUNCisvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVk
IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9zcmFpX2VwaTMyKF9fbTEyOGkgX19hLCBpbnQgX19jb3VudCkNCit7DQorICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYWRpMTI4KChfX3Y0c2kpX19hLCBfX2NvdW50KTsN
Cit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQorLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVy
IG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24NCisvLy8g
ICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBTUkFEIC8gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNl
IG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cw0K
Ky8vLyAgICB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQt
c2hpZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fc3JhX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQorew0K
KyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmFkMTI4KChfX3Y0c2kpX19hLCAo
X192NHNpKV9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRzIHRoZSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZA0KKy8vLyAgICBudW1iZXIgb2Yg
Ynl0ZXMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9zcmxp
X3NpMTI4KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxEUSAvIFBTUkxE
USA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAgICBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxw
YXJhbSBpbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJl
ciBvZiBieXRlcyB0byByaWdodC1zaGlmdCBvcGVyYW5kDQorLy8vICAgIFxhIGEuDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlm
dGVkIHZhbHVlLg0KKyNpZmRlZiBfX0dOVUNfXw0KKyNkZWZpbmUgX21tX2JzcmxpX3NpMTI4KGEs
IG4pIFwNCisgICAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkcWkxMjggKChfX20xMjhp
KShhKSwgKGludCkobikgKiA4KSkNCisjZGVmaW5lIF9tbV9zcmxpX3NpMTI4KGEsIG4pIFwNCisg
ICAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkcWkxMjggKChfX20xMjhpKShhKSwgKGlu
dCkobikgKiA4KSkNCisjZWxzZQ0KKyNkZWZpbmUgX21tX3NybGlfc2kxMjgoYSwgaW1tKSBcDQor
ICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMTI4X2J5dGVzaGlmdCgoX192MmRpKShf
X20xMjhpKShhKSwgKGludCkoaW1tKSkNCisjZGVmaW5lIF9tbV9ic3JsaV9zaTEyOChhLCBpbW0p
IFwNCisgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkcWkxMjhfYnl0ZXNoaWZ0KChfX3Yy
ZGkpKF9fbTEyOGkpKGEpLCAoaW50KShpbW0pKQ0KKyNlbmRpZg0KKw0KKw0KKy8vLyBSaWdodC1z
aGlmdHMgZWFjaCBvZiAxNi1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9y
DQorLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1v
cmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBT
UkxXIC8gUFNSTFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJh
bmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lm
eWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZQ0KKy8vLyAg
ICBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybGlfZXBpMTYoX19tMTI4aSBf
X2EsIGludCBfX2NvdW50KQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9w
c3Jsd2kxMjgoKF9fdjhoaSlfX2EsIF9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRz
IGVhY2ggb2YgMTYtYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8v
LyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIg
Yml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMVyAv
IFBTUkxXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0K
Ky8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4g
d2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCisvLy8gICAgdG8g
cmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFs
dWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X3NybF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KK3sNCisgIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2Nv
dW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDMyLWJpdCB2YWx1ZXMgaW4g
dGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb3BlcmFuZCBieSB0aGUgc3BlY2lm
aWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTEQgLyBQU1JMRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8g
ICAgQW4gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdo
dC1zaGlmdCBlYWNoIHZhbHVlDQorLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRl
ZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fc3JsaV9lcGkzMihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpDQorew0KKyAgcmV0dXJu
IChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkaTEyOCgoX192NHNpKV9fYSwgX19jb3VudCk7
DQorfQ0KKw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCBvZiAzMi1iaXQgdmFsdWVzIGluIHRoZSAx
MjgtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBu
dW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxEIC8gUFNSTEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBu
dW1iZXIgb2YgYml0cw0KKy8vLyAgICB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJh
bmQgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3JsX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhp
IF9fY291bnQpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkMTI4
KChfX3Y0c2kpX19hLCAoX192NHNpKV9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRz
IGVhY2ggb2YgNjQtYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8v
LyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIg
Yml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMUSAv
IFBTUkxRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0K
Ky8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcg
dGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUNCisvLy8gICAgaW4g
b3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmxpX2VwaTY0KF9fbTEyOGkgX19hLCBp
bnQgX19jb3VudCkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNybHFpMTI4KChfX3Yy
ZGkpX19hLCBfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDY0LWJp
dCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb3BlcmFuZCBi
eSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFy
ZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTFEgLyBQU1JMUSA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9f
Y291bnQNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYz
OjBdIHNwZWNpZnkgdGhlIG51bWJlciBvZiBiaXRzDQorLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVh
Y2ggdmFsdWUgaW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmxfZXBpNjQoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJf
cHNybHExMjgoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19jb3VudCk7DQorfQ0KKw0KKy8vLyBDb21w
YXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJp
dA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5LiBFYWNoIGNvbXBhcmlzb24g
eWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkYNCisvLy8gICAgZm9yIHRydWUuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVRQiAvIFBDTVBFUUIgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2NtcGVxX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJl
dHVybiAoX19tMTI4aSkoKF9fdjE2cWkpX19hID09IChfX3YxNnFpKV9fYik7DQorfQ0KKw0KKy8v
LyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCB2YWx1ZXMgb2YgdGhl
IDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3JzIGZvciBlcXVhbGl0eS4gRWFjaCBjb21w
YXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLA0KKy8vLyAgICAweEZGRkYgZm9yIHRydWUuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVRVyAvIFBDTVBFUVcgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX2NtcGVxX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cit7DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aGkpX19hID09IChfX3Y4aGkpX19iKTsNCit9
DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IHZhbHVl
cyBvZiB0aGUgMTI4LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5LiBF
YWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsDQorLy8vICAgIDB4RkZGRkZGRkYg
Zm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVRRCAvIFBDTVBF
UUQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGVxX2VwaTMyKF9fbTEyOGkgX19hLCBf
X20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3Y0c2kpX19hID09IChfX3Y0
c2kpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcg
c2lnbmVkIDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3Rv
cnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQgYXJlDQor
Ly8vICAgIGdyZWF0ZXIgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuIEVhY2ggY29t
cGFyaXNvbiB5aWVsZHMgMHgwIGZvcg0KKy8vLyAgICBmYWxzZSwgMHhGRiBmb3IgdHJ1ZS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RCIC8gUENNUEdUQiA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fY21wZ3RfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQor
ew0KKyAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBzaWduZWQgY29tcGFyaXNv
biwgYnV0IF9fdjE2cWkgaXMgYSBjaGFyDQorICAgICB3aGljaCBtYXkgYmUgc2lnbmVkIG9yIHVu
c2lnbmVkLCBzbyB1c2UgX192MTZxcy4gKi8NCisgIHJldHVybiAoX19tMTI4aSkoKF9fdjE2cXMp
X19hID4gKF9fdjE2cXMpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNv
cnJlc3BvbmRpbmcgc2lnbmVkIDE2LWJpdCB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBv
cGVyYW5kDQorLy8vICAgIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVy
YW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2Us
IDB4RkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RX
IC8gUENNUEdUVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZ3RfZXBpMTYoX19tMTI4
aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkoKF9fdjhoaSlfX2Eg
PiAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIHNpZ25lZCAzMi1iaXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IGludGVn
ZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgb3BlcmFu
ZA0KKy8vLyAgICBhcmUgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4N
CisvLy8NCisvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZG
RkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBHVEQg
LyBQQ01QR1REIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBndF9lcGkzMihfX20xMjhp
IF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192NHNpKV9fYSA+
IChfX3Y0c2kpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgc2lnbmVkIDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJpdA0KKy8vLyAgICBpbnRlZ2Vy
IHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQg
YXJlIGxlc3MNCisvLy8gICAgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8v
DQorLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRiBmb3Ig
dHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RCIC8gUENNUEdUQiA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbHRfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4
aSBfX2IpDQorew0KKyAgcmV0dXJuIF9tbV9jbXBndF9lcGk4KF9fYiwgX19hKTsNCit9DQorDQor
Ly8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDE2LWJpdCB2YWx1
ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBp
ZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kDQorLy8vICAgIGFyZSBsZXNzIHRoYW4g
dGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNvbXBhcmlz
b24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZQQ01QR1RXIC8gUENNUEdUVyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fY21wbHRfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVy
biBfbW1fY21wZ3RfZXBpMTYoX19iLCBfX2EpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyBzaWduZWQgMzItYml0IHZhbHVlcyBvZiB0aGUNCisvLy8gICAg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhl
IGZpcnN0IG9wZXJhbmQNCisvLy8gICAgYXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25k
IG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBm
YWxzZSwgMHhGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQQ01QR1REIC8gUENNUEdURCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0K
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbHRfZXBp
MzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiBfbW1fY21wZ3RfZXBp
MzIoX19iLCBfX2EpOw0KK30NCisNCisjaWZkZWYgX194ODZfNjRfXw0KKy8vLyBDb252ZXJ0cyBh
IDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBmcm9tIHRoZSBzZWNvbmQgb3BlcmFuZCBpbnRv
IGENCisvLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBhbmQgcmV0dXJucyBpdCBpbiB0aGUg
bG93ZXIgZWxlbWVudCBvZiBhIFsyIHgNCisvLy8gICAgZG91YmxlXSB2ZWN0b3I7IHRoZSB1cHBl
ciBlbGVtZW50IG9mIHRoZSByZXR1cm5lZCB2ZWN0b3IgaXMgY29waWVkIGZyb20NCisvLy8gICAg
dGhlIHVwcGVyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWQ1ZUU0kyU0QgLyBDVlRTSTJTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIGNvcGll
ZCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250YWluaW5nIHRo
ZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAg
Y29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVwcGVyIDY0IGJpdHMg
YXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBv
cGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2N2dHNpNjRfc2QoX19tMTI4ZCBfX2EsIGxvbmcgbG9uZyBfX2IpDQorew0KKyAgX19hWzBd
ID0gX19iOw0KKyAgcmV0dXJuIF9fYTsNCit9DQorDQorLy8vIENvbnZlcnRzIHRoZSBmaXJzdCAo
bG93ZXIpIGVsZW1lbnQgb2YgYSB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8gYQ0KKy8vLyAg
ICA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUsIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBy
b3VuZGluZyBtb2RlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNEMlNJIC8g
Q1ZUU0QyU0kgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJl
IHVzZWQgaW4gdGhlDQorLy8vICAgIGNvbnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0
IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCitzdGF0aWMg
X19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHNkX3NpNjQo
X19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNpNjQoKF9f
djJkZilfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIGZpcnN0IChsb3dlcikgZWxlbWVu
dCBvZiBhIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byBhDQorLy8vICAgIDY0LWJpdCBzaWdu
ZWQgaW50ZWdlciB2YWx1ZSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMgaW5leGFj
dC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUU0QyU0kgLyBDVlRUU0QyU0kg
PC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUg
dXNlZCBpbiB0aGUNCisvLy8gICAgY29udmVyc2lvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQg
c2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KK3N0YXRpYyBf
X2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0dHNkX3NpNjQo
X19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzZDJzaTY0KChf
X3YyZGYpX19hKTsNCit9DQorI2VuZGlmDQorDQorLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs0
IHggaTMyXSBpbnRvIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkNWVERRMlBTIC8gQ1ZURFEyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
Y29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2N2dGVwaTMyX3BzKF9fbTEyOGkgX19hKQ0KK3sNCisgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0c2kpX19hLCBfX3Y0c2YpOw0KK30NCisN
CisvLy8gQ29udmVydHMgYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBhIHZlY3RvciBvZiBb
NCB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUFMyRFEgLyBDVlRQ
UzJEUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgY29udmVydGVkDQorLy8v
ICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jdnRwc19lcGkzMihfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9jdnRwczJkcSgoX192NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0
cyBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgdmVjdG9yIG9mIFs0IHggaTMyXSwNCisv
Ly8gICAgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMgaW5leGFjdC4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUFMyRFEgLyBDVlRUUFMyRFEgPC9jPg0KKy8vLyAg
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0dHBzX2VwaTMyKF9fbTEy
OCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHRwczJkcSgo
X192NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBSZXR1cm5zIGEgdmVjdG9yIG9mIFs0IHggaTMyXSB3
aGVyZSB0aGUgbG93ZXN0IGVsZW1lbnQgaXMgdGhlIGlucHV0DQorLy8vICAgIG9wZXJhbmQgYW5k
IHRoZSByZW1haW5pbmcgZWxlbWVudHMgYXJlIHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTU9WRCAvIE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzaTMyX3NpMTI4KGludCBfX2EpDQor
ew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjRzaSl7IF9fYSwgMCwgMCwg
MCB9Ow0KK30NCisNCisjaWZkZWYgX194ODZfNjRfXw0KKy8vLyBSZXR1cm5zIGEgdmVjdG9yIG9m
IFsyIHggaTY0XSB3aGVyZSB0aGUgbG93ZXIgZWxlbWVudCBpcyB0aGUgaW5wdXQNCisvLy8gICAg
b3BlcmFuZCBhbmQgdGhlIHVwcGVyIGVsZW1lbnQgaXMgemVyby4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgY29udGFp
bmluZyB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0c2k2NF9z
aTEyOChsb25nIGxvbmcgX19hKQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhp
KShfX3YyZGkpeyBfX2EsIDAgfTsNCit9DQorI2VuZGlmDQorDQorLy8vIE1vdmVzIHRoZSBsZWFz
dCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mIFs0IHggaTMyXSB0byBhDQorLy8v
ICAgIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNT1ZEIC8gTU9WRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIGxlYXN0IHNpZ25pZmljYW50
IDMyIGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJl
dHVybnMgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWUu
DQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzaTEy
OF9zaTMyKF9fbTEyOGkgX19hKQ0KK3sNCisgIF9fdjRzaSBfX2IgPSAoX192NHNpKV9fYTsNCisg
IHJldHVybiBfX2JbMF07DQorfQ0KKw0KKyNpZmRlZiBfX3g4Nl82NF9fDQorLy8vIE1vdmVzIHRo
ZSBsZWFzdCBzaWduaWZpY2FudCA2NCBiaXRzIG9mIGEgdmVjdG9yIG9mIFsyIHggaTY0XSB0byBh
DQorLy8vICAgIDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIGxlYXN0IHNpZ25p
ZmljYW50IDY0IGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisv
Ly8gXHJldHVybnMgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgbW92ZWQg
dmFsdWUuDQorc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9jdnRzaTEyOF9zaTY0KF9fbTEyOGkgX19hKQ0KK3sNCisgIHJldHVybiBfX2FbMF07DQor
fQ0KKyNlbmRpZg0KKw0KKy8vLyBNb3ZlcyBwYWNrZWQgaW50ZWdlciB2YWx1ZXMgZnJvbSBhbiBh
bGlnbmVkIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uDQorLy8vICAgIHRvIGVsZW1lbnRzIGluIGEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZN
T1ZEUUEgLyBNT1ZEUUEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0K
Ky8vLyAgICBBbiBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmlu
ZyBpbnRlZ2VyIHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2FkX3NpMTI4KF9fbTEyOGkgY29uc3QgKl9fcCkN
Cit7DQorICByZXR1cm4gKl9fcDsNCit9DQorDQorLy8vIE1vdmVzIHBhY2tlZCBpbnRlZ2VyIHZh
bHVlcyBmcm9tIGFuIHVuYWxpZ25lZCAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbg0KKy8vLyAgICB0
byBlbGVtZW50cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTU9WRFFVIC8gTU9WRFFVIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNv
bnRhaW5pbmcgaW50ZWdlciB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZHVfc2kxMjgoX19tMTI4aSBjb25z
dCAqX19wKQ0KK3sNCisgIHN0cnVjdCBfX2xvYWR1X3NpMTI4IHsNCisgICAgX19tMTI4aSBfX3Y7
DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIHJl
dHVybiAoKHN0cnVjdCBfX2xvYWR1X3NpMTI4KilfX3ApLT5fX3Y7DQorfQ0KKw0KKy8vLyBSZXR1
cm5zIGEgdmVjdG9yIG9mIFsyIHggaTY0XSB3aGVyZSB0aGUgbG93ZXIgZWxlbWVudCBpcyB0YWtl
biBmcm9tDQorLy8vICAgIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSBvcGVyYW5kLCBhbmQgdGhl
IHVwcGVyIGVsZW1lbnQgaXMgemVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZN
T1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBCaXRzIFs2MzowXSBhcmUgd3JpdHRl
biB0byBiaXRzIFs2MzowXSBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgbG93ZXIgb3JkZXIgYml0cyBj
b250YWluIHRoZQ0KKy8vLyAgICBtb3ZlZCB2YWx1ZS4gVGhlIGhpZ2hlciBvcmRlciBiaXRzIGFy
ZSBjbGVhcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2xvYWRsX2VwaTY0KF9fbTEyOGkgY29uc3QgKl9fcCkNCit7DQorICBzdHJ1Y3QgX19t
bV9sb2FkbF9lcGk2NF9zdHJ1Y3Qgew0KKyAgICBsb25nIGxvbmcgX191Ow0KKyAgfSBfX2F0dHJp
YnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICByZXR1cm4gX19leHRlbnNp
b25fXyAoX19tMTI4aSkgeyAoKHN0cnVjdCBfX21tX2xvYWRsX2VwaTY0X3N0cnVjdCopX19wKS0+
X191LCAwfTsNCit9DQorDQorLy8vIEdlbmVyYXRlcyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
aTMyXSB3aXRoIHVuc3BlY2lmaWVkIGNvbnRlbnQuDQorLy8vICAgIFRoaXMgY291bGQgYmUgdXNl
ZCBhcyBhbiBhcmd1bWVudCB0byBhbm90aGVyIGludHJpbnNpYyBmdW5jdGlvbiB3aGVyZSB0aGUN
CisvLy8gICAgYXJndW1lbnQgaXMgcmVxdWlyZWQgYnV0IHRoZSB2YWx1ZSBpcyBub3QgYWN0dWFs
bHkgdXNlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gd2l0aCB1bnNwZWNp
ZmllZCBjb250ZW50Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX3VuZGVmaW5lZF9zaTEyOCh2b2lkKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisg
IF9fbTEyOGkgX19YID0gX19YOw0KKyAgcmV0dXJuIF9fWDsNCisjZWxzZQ0KKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3VuZGVmMTI4KCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBJ
bml0aWFsaXplcyBib3RoIDY0LWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGk2NF0gd2l0aA0KKy8vLyAgICB0aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcy4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8g
YSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcTEN
CisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVw
cGVyIDY0IGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBbMiB4IGk2
NF0uDQorLy8vIFxwYXJhbSBfX3EwDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5h
dGlvbiB2ZWN0b3Igb2YgWzIgeCBpNjRdLg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgdmFsdWVzDQorLy8vICAg
IHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRfZXBpNjR4KGxvbmcgbG9uZyBfX3ExLCBsb25nIGxv
bmcgX19xMCkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MmRpKXsg
X19xMCwgX19xMSB9Ow0KK30NCisNCisvLy8gSW5pdGlhbGl6ZXMgYm90aCA2NC1iaXQgdmFsdWVz
IGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdpdGgNCisvLy8gICAgdGhlIHNwZWNp
ZmllZCA2NC1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9u
IGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ExDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZQ0KKy8vLyAgICBk
ZXN0aW5hdGlvbiB2ZWN0b3Igb2YgWzIgeCBpNjRdLg0KKy8vLyBccGFyYW0gX19xMA0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQg
Yml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24gdmVjdG9yIG9mIFsyIHggaTY0XS4NCisv
Ly8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNv
bnRhaW5pbmcgdGhlIHZhbHVlcw0KKy8vLyAgICBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZHMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0X2Vw
aTY0KF9fbTY0IF9fcTEsIF9fbTY0IF9fcTApDQorew0KKyAgcmV0dXJuIF9tbV9zZXRfZXBpNjR4
KChsb25nIGxvbmcpX19xMSwgKGxvbmcgbG9uZylfX3EwKTsNCit9DQorDQorLy8vIEluaXRpYWxp
emVzIHRoZSAzMi1iaXQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdp
dGgNCisvLy8gICAgdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
aXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lm
aWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2kzDQorLy8vICAg
IEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0g
b2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9faTINCisv
Ly8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6
NjRdIG9mIHRoZSBkZXN0aW5hdGlvbg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2kx
DQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24NCisvLy8gICAgdmVjdG9yLg0KKy8vLyBccGFyYW0g
X19pMA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRpb24NCisvLy8gICAgdmVjdG9yLg0KKy8vLyBccmV0
dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmlu
ZyB0aGUgdmFsdWVzDQorLy8vICAgIHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kcy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRfZXBpMzIoaW50
IF9faTMsIGludCBfX2kyLCBpbnQgX19pMSwgaW50IF9faTApDQorew0KKyAgcmV0dXJuIF9fZXh0
ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjRzaSl7IF9faTAsIF9faTEsIF9faTIsIF9faTN9Ow0KK30N
CisNCisvLy8gSW5pdGlhbGl6ZXMgdGhlIDE2LWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0gd2l0aA0KKy8vLyAgICB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ2Vy
IHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJl
c3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fdzcNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMTI3OjExMl0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisv
Ly8gXHBhcmFtIF9fdzYNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTExOjk2XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24gdmVjdG9y
Lg0KKy8vLyBccGFyYW0gX193NQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo4MF0gb2YgdGhlIGRlc3RpbmF0aW9uDQorLy8vICAgIHZl
Y3Rvci4NCisvLy8gXHBhcmFtIF9fdzQNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbg0KKy8vLyAg
ICB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX3czDQorLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgZGVzdGluYXRpb24NCisv
Ly8gICAgdmVjdG9yLg0KKy8vLyBccGFyYW0gX193Mg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2Vy
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIGRlc3RpbmF0aW9u
DQorLy8vICAgIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fdzENCisvLy8gICAgQSAxNi1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MTZdIG9mIHRoZSBkZXN0aW5h
dGlvbg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX3cwDQorLy8vICAgIEEgMTYtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0
aW5hdGlvbg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEy
OC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSB2YWx1ZXMNCisvLy8gICAg
cHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldF9lcGkxNihzaG9ydCBfX3c3LCBzaG9ydCBfX3c2LCBz
aG9ydCBfX3c1LCBzaG9ydCBfX3c0LCBzaG9ydCBfX3czLCBzaG9ydCBfX3cyLCBzaG9ydCBfX3cx
LCBzaG9ydCBfX3cwKQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3Y4
aGkpeyBfX3cwLCBfX3cxLCBfX3cyLCBfX3czLCBfX3c0LCBfX3c1LCBfX3c2LCBfX3c3IH07DQor
fQ0KKw0KKy8vLyBJbml0aWFsaXplcyB0aGUgOC1iaXQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzE2IHggaThdIHdpdGgNCisvLy8gICAgdGhlIHNwZWNpZmllZCA4LWJpdCBpbnRlZ2Vy
IHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJl
c3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYjE1DQorLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSBkZXN0
aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2IxNA0KKy8vLyAgICBJbml0aWFsaXplcyBi
aXRzIFsxMTk6MTEyXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19i
MTMNCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbMTExOjEwNF0gb2YgdGhlIGRlc3RpbmF0aW9u
IHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjEyDQorLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzEw
Mzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjExDQorLy8v
ICAgIEluaXRpYWxpemVzIGJpdHMgWzk1Ojg4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0K
Ky8vLyBccGFyYW0gX19iMTANCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbODc6ODBdIG9mIHRo
ZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2I5DQorLy8vICAgIEluaXRpYWxp
emVzIGJpdHMgWzc5OjcyXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFyYW0g
X19iOA0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs3MTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9u
IHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjcNCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbNjM6
NTZdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2I2DQorLy8vICAg
IEluaXRpYWxpemVzIGJpdHMgWzU1OjQ4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8v
LyBccGFyYW0gX19iNQ0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs0Nzo0MF0gb2YgdGhlIGRl
c3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjQNCisvLy8gICAgSW5pdGlhbGl6ZXMg
Yml0cyBbMzk6MzJdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2Iz
DQorLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzMxOjI0XSBvZiB0aGUgZGVzdGluYXRpb24gdmVj
dG9yLg0KKy8vLyBccGFyYW0gX19iMg0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsyMzoxNl0g
b2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjENCisvLy8gICAgSW5p
dGlhbGl6ZXMgYml0cyBbMTU6OF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBh
cmFtIF9fYjANCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbNzowXSBvZiB0aGUgZGVzdGluYXRp
b24gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBv
ZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgdmFsdWVzDQorLy8vICAgIHByb3ZpZGVkIGluIHRo
ZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9zZXRfZXBpOChjaGFyIF9fYjE1LCBjaGFyIF9fYjE0LCBjaGFyIF9fYjEzLCBjaGFy
IF9fYjEyLCBjaGFyIF9fYjExLCBjaGFyIF9fYjEwLCBjaGFyIF9fYjksIGNoYXIgX19iOCwgY2hh
ciBfX2I3LCBjaGFyIF9fYjYsIGNoYXIgX19iNSwgY2hhciBfX2I0LCBjaGFyIF9fYjMsIGNoYXIg
X19iMiwgY2hhciBfX2IxLCBjaGFyIF9fYjApDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18g
KF9fbTEyOGkpKF9fdjE2cWkpeyBfX2IwLCBfX2IxLCBfX2IyLCBfX2IzLCBfX2I0LCBfX2I1LCBf
X2I2LCBfX2I3LCBfX2I4LCBfX2I5LCBfX2IxMCwgX19iMTEsIF9fYjEyLCBfX2IxMywgX19iMTQs
IF9fYjE1IH07DQorfQ0KKw0KKy8vLyBJbml0aWFsaXplcyBib3RoIHZhbHVlcyBpbiBhIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3Igd2l0aCB0aGUNCisvLy8gICAgc3BlY2lmaWVkIDY0LWJpdCBpbnRl
Z2VyIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29y
cmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19xDQorLy8vICAgIEludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBl
bGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3IuDQorLy8v
IFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBp
NjRdIHdpdGggYm90aA0KKy8vLyAgICBlbGVtZW50cyBjb250YWluaW5nIHRoZSB2YWx1ZSBwcm92
aWRlZCBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9zZXQxX2VwaTY0eChsb25nIGxvbmcgX19xKQ0KK3sNCisgIHJldHVy
biBfbW1fc2V0X2VwaTY0eChfX3EsIF9fcSk7DQorfQ0KKw0KKy8vLyBJbml0aWFsaXplcyBib3Ro
IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSB3aXRoIHRoZQ0KKy8vLyAg
ICBzcGVjaWZpZWQgNjQtYml0IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBh
bmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19xDQorLy8vICAgIEEgNjQtYml0IHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXINCisvLy8g
ICAgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGk2NF0gd2l0aCBhbGwgZWxlbWVudHMNCisvLy8gICAgY29udGFpbmluZyB0aGUgdmFs
dWUgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0MV9lcGk2NChfX202NCBfX3EpDQorew0KKyAgcmV0
dXJuIF9tbV9zZXRfZXBpNjQoX19xLCBfX3EpOw0KK30NCisNCisvLy8gSW5pdGlhbGl6ZXMgYWxs
IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoIHRoZQ0KKy8vLyAg
ICBzcGVjaWZpZWQgMzItYml0IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBh
bmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19pDQorLy8vICAgIEEgMzItYml0IHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXINCisvLy8g
ICAgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGkzMl0gd2l0aCBhbGwgZWxlbWVudHMNCisvLy8gICAgY29udGFpbmluZyB0aGUgdmFs
dWUgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0MV9lcGkzMihpbnQgX19pKQ0KK3sNCisgIHJldHVy
biBfbW1fc2V0X2VwaTMyKF9faSwgX19pLCBfX2ksIF9faSk7DQorfQ0KKw0KKy8vLyBJbml0aWFs
aXplcyBhbGwgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdpdGggdGhl
DQorLy8vICAgIHNwZWNpZmllZCAxNi1iaXQgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1
bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSAxNi1iaXQgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdl
cg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XSB3aXRoIGFsbCBlbGVtZW50cw0KKy8vLyAgICBjb250YWluaW5n
IHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXQxX2VwaTE2KHNob3J0IF9fdykNCit7
DQorICByZXR1cm4gX21tX3NldF9lcGkxNihfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBf
X3csIF9fdyk7DQorfQ0KKw0KKy8vLyBJbml0aWFsaXplcyBhbGwgdmFsdWVzIGluIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzE2IHggaThdIHdpdGggdGhlDQorLy8vICAgIHNwZWNpZmllZCA4LWJpdCB2
YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3Bv
bmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBbiA4LWJpdCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGVsZW1l
bnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBpbnRlZ2VyDQorLy8vICAgIHZlY3Rvci4NCisvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHdpdGggYWxs
IGVsZW1lbnRzDQorLy8vICAgIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSBv
cGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3NldDFfZXBpOChjaGFyIF9fYikNCit7DQorICByZXR1cm4gX21tX3NldF9lcGk4KF9fYiwg
X19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9f
YiwgX19iLCBfX2IsIF9fYik7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KKy8vLyAgICAgd2l0aCB0
aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgZG9lcyBub3QgY29y
cmVzcG9uZCB0byBhIHNwZWNpZmljIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19x
MA0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhl
IGxvd2VyIDY0IGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fcTEN
CisvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB1
cHBlciA2NCBiaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGlu
aXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0cl9lcGk2NChfX202NCBfX3EwLCBfX202
NCBfX3ExKQ0KK3sNCisgIHJldHVybiBfbW1fc2V0X2VwaTY0KF9fcTEsIF9fcTApOw0KK30NCisN
CisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGlu
IHJldmVyc2Ugb3JkZXINCisvLy8gICAgIHdpdGggdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdy
YWwgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29y
cmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19pMA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMzE6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9faTENCisvLy8g
ICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMy
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pMg0KKy8vLyAgICBBIDMyLWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX2kzDQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5z
IEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0cl9lcGkzMihpbnQgX19pMCwg
aW50IF9faTEsIGludCBfX2kyLCBpbnQgX19pMykNCit7DQorICByZXR1cm4gX21tX3NldF9lcGkz
MihfX2kzLCBfX2kyLCBfX2kxLCBfX2kwKTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQorLy8vICAg
ICB3aXRoIHRoZSBzcGVjaWZpZWQgMTYtYml0IGludGVncmFsIHZhbHVlcy4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBh
IHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0K
Ky8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdzANCisvLy8gICAgQSAx
Ni1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cxDQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHBhcmFtIF9fdzINCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193Mw0KKy8v
LyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6
NDhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3c0DQorLy8vICAgIEEgMTYtYml0IGlu
dGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9fdzUNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjgwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X193Ng0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193Nw0KKy8vLyAgICBB
IDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjExMl0g
b2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9zZXRyX2VwaTE2KHNob3J0IF9fdzAsIHNob3J0IF9fdzEsIHNob3J0IF9fdzIsIHNo
b3J0IF9fdzMsIHNob3J0IF9fdzQsIHNob3J0IF9fdzUsIHNob3J0IF9fdzYsIHNob3J0IF9fdzcp
DQorew0KKyAgcmV0dXJuIF9tbV9zZXRfZXBpMTYoX193NywgX193NiwgX193NSwgX193NCwgX193
MywgX193MiwgX193MSwgX193MCk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KKy8vLyAgICAgd2l0
aCB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVncmFsIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxp
dHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAg
ICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYjANCisvLy8gICAgQW4gOC1iaXQg
aW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9fYjENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2IyDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjMNCisvLy8gICAgQW4g
OC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBfX2I1DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjYNCisv
Ly8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzU1
OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iNw0KKy8vLyAgICBBbiA4LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NTZdIG9mIHRoZSByZXN1
bHQuDQorLy8vIFxwYXJhbSBfX2I4DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3MTo2NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fYjkNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzc5OjcyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTANCisvLy8gICAg
QW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzg3OjgwXSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19iMTINCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
YjEzDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTQNCisvLy8gICAg
QW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExOToxMTJd
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxNQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjEyMF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRy
X2VwaTgoY2hhciBfX2IwLCBjaGFyIF9fYjEsIGNoYXIgX19iMiwgY2hhciBfX2IzLCBjaGFyIF9f
YjQsIGNoYXIgX19iNSwgY2hhciBfX2I2LCBjaGFyIF9fYjcsIGNoYXIgX19iOCwgY2hhciBfX2I5
LCBjaGFyIF9fYjEwLCBjaGFyIF9fYjExLCBjaGFyIF9fYjEyLCBjaGFyIF9fYjEzLCBjaGFyIF9f
YjE0LCBjaGFyIF9fYjE1KQ0KK3sNCisgIHJldHVybiBfbW1fc2V0X2VwaTgoX19iMTUsIF9fYjE0
LCBfX2IxMywgX19iMTIsIF9fYjExLCBfX2IxMCwgX19iOSwgX19iOCwgX19iNywgX19iNiwgX19i
NSwgX19iNCwgX19iMywgX19iMiwgX19iMSwgX19iMCk7DQorfQ0KKw0KKy8vLyBDcmVhdGVzIGEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB0byB6ZXJvLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlhPUlBTIC8gWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRo
IGFsbCBlbGVtZW50cyBzZXQgdG8NCisvLy8gICAgemVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXR6ZXJvX3NpMTI4KHZvaWQpDQorew0K
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IDBMTCwgMExMIH07DQor
fQ0KKw0KKy8vLyBTdG9yZXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgbWVtb3J5IGxv
Y2F0aW9uIGFsaWduZWQgb24gYQ0KKy8vLyAgICAxMjgtYml0IGJvdW5kYXJ5Lg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhbiBhbGlnbmVkIG1l
bW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgaW50ZWdlcg0KKy8vLyAgICB2YWx1
ZXMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZV9zaTEyOChfX20xMjhpICpfX3AsIF9fbTEy
OGkgX19iKQ0KK3sNCisgICpfX3AgPSBfX2I7DQorfQ0KKw0KKy8vLyBTdG9yZXMgYSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBTIC8gTU9WVVBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxv
Y2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBpbnRlZ2VyIHZhbHVlcy4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFs
dWVzIHRvIGJlIG1vdmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX3N0b3JldV9zaTEyOChfX20xMjhpICpfX3AsIF9fbTEyOGkgX19iKQ0KK3sNCisg
IHN0cnVjdCBfX3N0b3JldV9zaTEyOCB7DQorICAgIF9fbTEyOGkgX192Ow0KKyAgfSBfX2F0dHJp
YnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICAoKHN0cnVjdCBfX3N0b3Jl
dV9zaTEyOCopX19wKS0+X192ID0gX19iOw0KK30NCisNCisvLy8gTW92ZXMgYnl0ZXMgc2VsZWN0
ZWQgYnkgdGhlIG1hc2sgZnJvbSB0aGUgZmlyc3Qgb3BlcmFuZCB0byB0aGUNCisvLy8gICAgc3Bl
Y2lmaWVkIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0
aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBieXRlIGlzIHdyaXR0ZW4sIG90aGVyd2lzZSBpdCBp
cyBub3Qgd3JpdHRlbi4NCisvLy8NCisvLy8gICAgVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRh
dGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlDQorLy8vICAgIHVz
ZWQgYWdhaW4gc29vbikuIEV4Y2VwdGlvbiBhbmQgdHJhcCBiZWhhdmlvciBmb3IgZWxlbWVudHMg
bm90IHNlbGVjdGVkDQorLy8vICAgIGZvciBzdG9yYWdlIHRvIG1lbW9yeSBhcmUgaW1wbGVtZW50
YXRpb24gZGVwZW5kZW50Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZE
UVUgLyBNQVNLTU9WRFFVIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fZA0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIG1vdmVkLg0KKy8vLyBccGFyYW0gX19uDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZpY2FudCBi
aXQgb2YNCisvLy8gICAgZWFjaCBieXRlIHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4NCisvLy8g
XHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYW4gdW5hbGlnbmVkIDEyOC1iaXQgbWVt
b3J5IGxvY2F0aW9uIHdoZXJlIHRoZSBzcGVjaWZpZWQNCisvLy8gICAgdmFsdWVzIGFyZSBtb3Zl
ZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXNr
bW92ZXVfc2kxMjgoX19tMTI4aSBfX2QsIF9fbTEyOGkgX19uLCBjaGFyICpfX3ApDQorew0KKyAg
X19idWlsdGluX2lhMzJfbWFza21vdmRxdSgoX192MTZxaSlfX2QsIChfX3YxNnFpKV9fbiwgX19w
KTsNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzIgeCBpNjRdIHRvDQorLy8vICAgIGEgbWVtb3J5IGxvY2F0aW9uLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQUyAvIE1PVkxQUyA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDY0
LWJpdCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGxvd2VyIDY0IGJpdHMN
CisvLy8gICAgb2YgdGhlIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlci4NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgbG93
ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KKy8vLyAgICB2YWx1ZSB0byBiZSBzdG9yZWQuDQorc3Rh
dGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3RvcmVsX2VwaTY0
KF9fbTEyOGkgKl9fcCwgX19tMTI4aSBfX2EpDQorew0KKyAgc3RydWN0IF9fbW1fc3RvcmVsX2Vw
aTY0X3N0cnVjdCB7DQorICAgIGxvbmcgbG9uZyBfX3U7DQorICB9IF9fYXR0cmlidXRlX18oKF9f
cGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgICgoc3RydWN0IF9fbW1fc3RvcmVsX2VwaTY0
X3N0cnVjdCopX19wKS0+X191ID0gX19hWzBdOw0KK30NCisNCisvLy8gU3RvcmVzIGEgMTI4LWJp
dCBmbG9hdGluZyBwb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGEgMTI4LWJpdA0KKy8v
LyAgICBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gICAgVG8gbWluaW1pemUg
Y2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRv
IGJlDQorLy8vICAgIHVzZWQgYWdhaW4gc29vbikuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WTlRQUyAvIE1PVk5UUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkg
bG9jYXRpb24gdXNlZCB0byBzdG9yZSB0aGUgdmFsdWUuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIDY0LWJpdCB2YWx1ZXMg
dG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX3N0cmVhbV9wZChkb3VibGUgKl9fcCwgX19tMTI4ZCBfX2EpDQorew0KKyNpZmRlZiBf
X0dOVUNfXw0KKyAgX19idWlsdGluX2lhMzJfbW92bnRwZCAoX19wLCAoX192MmRmKV9fYSk7DQor
I2Vsc2UNCisgIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192MmRmKV9fYSwgKF9fdjJk
ZiopX19wKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFN0b3JlcyBhIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgdG8gYSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyAg
ICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3Jh
bCAodW5saWtlbHkgdG8gYmUNCisvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byB0aGUgMTI4LWJpdCBh
bGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zdHJlYW1fc2kxMjgoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYSkNCit7
DQorI2lmZGVmIF9fR05VQ19fDQorICBfX2J1aWx0aW5faWEzMl9tb3ZudGRxICgoX192MmRpICop
X19wLCAoX192MmRpKV9fYSk7DQorI2Vsc2UNCisgIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9y
ZSgoX192MmRpKV9fYSwgKF9fdjJkaSopX19wKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFN0b3Jl
cyBhIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9u
Lg0KKy8vLw0KKy8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2Vk
IGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUNCisvLy8gICAgdXNlZCBhZ2FpbiBzb29u
KS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVk5USSA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byB0aGUgMzItYml0
IG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0
b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkDQorI2lmZGVmIF9fR05VQ19fDQorX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQorI2Vsc2UNCitfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVn
X18sIF9fdGFyZ2V0X18oInNzZTIiKSkpDQorI2VuZGlmDQorX21tX3N0cmVhbV9zaTMyKGludCAq
X19wLCBpbnQgX19hKQ0KK3sNCisgIF9fYnVpbHRpbl9pYTMyX21vdm50aShfX3AsIF9fYSk7DQor
fQ0KKw0KKyNpZmRlZiBfX3g4Nl82NF9fDQorLy8vIFN0b3JlcyBhIDY0LWJpdCBpbnRlZ2VyIHZh
bHVlIGluIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyAgICBUbyBt
aW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5s
aWtlbHkgdG8gYmUNCisvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IE1PVk5USVEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24gdXNl
ZCB0byBzdG9yZSB0aGUgdmFsdWUuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQg
aW50ZWdlciBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5s
aW5lX18gdm9pZA0KKyNpZmRlZiBfX0dOVUNfXw0KK19fYXR0cmlidXRlX18oKF9fZ251X2lubGlu
ZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNlDQorX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2Uy
IikpKQ0KKyNlbmRpZg0KK19tbV9zdHJlYW1fc2k2NChsb25nIGxvbmcgKl9fcCwgbG9uZyBsb25n
IF9fYSkNCit7DQorICBfX2J1aWx0aW5faWEzMl9tb3ZudGk2NChfX3AsIF9fYSk7DQorfQ0KKyNl
bmRpZg0KKw0KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KK2V4dGVybiAiQyIgew0KKyNlbmRp
Zg0KKw0KKy8vLyBUaGUgY2FjaGUgbGluZSBjb250YWluaW5nIFxhIF9fcCBpcyBmbHVzaGVkIGFu
ZCBpbnZhbGlkYXRlZCBmcm9tIGFsbA0KKy8vLyAgICBjYWNoZXMgaW4gdGhlIGNvaGVyZW5jeSBk
b21haW4uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDTEZMVVNIIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIHRoZSBt
ZW1vcnkgbG9jYXRpb24gdXNlZCB0byBpZGVudGlmeSB0aGUgY2FjaGUgbGluZSB0byBiZQ0KKy8v
LyAgICBmbHVzaGVkLg0KK3ZvaWQgX21tX2NsZmx1c2godm9pZCBjb25zdCAqIF9fcCk7DQorDQor
Ly8vIEZvcmNlcyBzdHJvbmcgbWVtb3J5IG9yZGVyaW5nIChzZXJpYWxpemF0aW9uKSBiZXR3ZWVu
IGxvYWQNCisvLy8gICAgaW5zdHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3RydWN0aW9uIGFu
ZCBsb2FkIGluc3RydWN0aW9ucyBmb2xsb3dpbmcNCisvLy8gICAgdGhpcyBpbnN0cnVjdGlvbiwg
ZW5zdXJpbmcgdGhlIHN5c3RlbSBjb21wbGV0ZXMgYWxsIHByZXZpb3VzIGxvYWRzIGJlZm9yZQ0K
Ky8vLyAgICBleGVjdXRpbmcgc3Vic2VxdWVudCBsb2Fkcy4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IExGRU5DRSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KK3ZvaWQgX21tX2xmZW5j
ZSh2b2lkKTsNCisNCisvLy8gRm9yY2VzIHN0cm9uZyBtZW1vcnkgb3JkZXJpbmcgKHNlcmlhbGl6
YXRpb24pIGJldHdlZW4gbG9hZCBhbmQgc3RvcmUNCisvLy8gICAgaW5zdHJ1Y3Rpb25zIHByZWNl
ZGluZyB0aGlzIGluc3RydWN0aW9uIGFuZCBsb2FkIGFuZCBzdG9yZSBpbnN0cnVjdGlvbnMNCisv
Ly8gICAgZm9sbG93aW5nIHRoaXMgaW5zdHJ1Y3Rpb24sIGVuc3VyaW5nIHRoYXQgdGhlIHN5c3Rl
bSBjb21wbGV0ZXMgYWxsDQorLy8vICAgIHByZXZpb3VzIG1lbW9yeSBhY2Nlc3NlcyBiZWZvcmUg
ZXhlY3V0aW5nIHN1YnNlcXVlbnQgbWVtb3J5IGFjY2Vzc2VzLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gTUZFTkNFIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQordm9pZCBfbW1fbWZl
bmNlKHZvaWQpOw0KKw0KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KK30gLy8gZXh0ZXJuICJD
Ig0KKyNlbmRpZg0KKw0KKy8vLyBDb252ZXJ0cyAxNi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20g
Ym90aCAxMjgtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9wZXJhbmRzIGludG8gOC1iaXQg
c2lnbmVkIGludGVnZXJzLCBhbmQgcGFja3MgdGhlIHJlc3VsdHMgaW50byB0aGUNCisvLy8gICAg
ZGVzdGluYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RiBhcmUgc2F0dXJh
dGVkIHRvIDB4N0YuDQorLy8vICAgIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4gMHg4MCBhcmUg
c2F0dXJhdGVkIHRvIDB4ODAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFDS1NT
V0IgLyBQQUNLU1NXQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1iaXQg
ZWxlbWVudCBpcyB0cmVhdGVkIGFzDQorLy8vICAgYSBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29u
dmVydGVkIHRvIGEgOC1iaXQgc2lnbmVkIGludGVnZXIgd2l0aA0KKy8vLyAgIHNhdHVyYXRpb24u
IFZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RiBhcmUgc2F0dXJhdGVkIHRvIDB4N0YuIFZhbHVlcyBs
ZXNzDQorLy8vICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRl
ZCBbOCB4IGk4XSB2YWx1ZXMgYXJlDQorLy8vICAgd3JpdHRlbiB0byB0aGUgbG93ZXIgNjQgYml0
cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFz
DQorLy8vICAgYSBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgOC1iaXQgc2ln
bmVkIGludGVnZXIgd2l0aA0KKy8vLyAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4g
MHg3RiBhcmUgc2F0dXJhdGVkIHRvIDB4N0YuIFZhbHVlcyBsZXNzDQorLy8vICAgdGhhbiAweDgw
IGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJl
DQorLy8vICAgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUg
Y29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9wYWNrc19lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0K
KyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2tzc3diMTI4KChfX3Y4aGkpX19h
LCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyAzMi1iaXQgc2lnbmVkIGludGVn
ZXJzIGZyb20gYm90aCAxMjgtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9wZXJhbmRzIGlu
dG8gMTYtYml0IHNpZ25lZCBpbnRlZ2VycywgYW5kIHBhY2tzIHRoZSByZXN1bHRzIGludG8gdGhl
DQorLy8vICAgIGRlc3RpbmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZG
RiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4NCisvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3Mg
dGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUEFDS1NTRFcgLyBQQUNLU1NEVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkzMl0uIEVhY2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcw0KKy8vLyAgICBhIHNpZ25l
ZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQgc2lnbmVkIGludGVnZXIgd2l0
aA0KKy8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0
dXJhdGVkIHRvIDB4N0ZGRi4gVmFsdWVzDQorLy8vICAgIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNh
dHVyYXRlZCB0byAweDgwMDAuIFRoZSBjb252ZXJ0ZWQgWzQgeCBpMTZdIHZhbHVlcw0KKy8vLyAg
ICBhcmUgd3JpdHRlbiB0byB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0u
IEVhY2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcw0KKy8vLyAgICBhIHNpZ25lZCBpbnRl
Z2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQgc2lnbmVkIGludGVnZXIgd2l0aA0KKy8v
LyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVk
IHRvIDB4N0ZGRi4gVmFsdWVzDQorLy8vICAgIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRl
ZCB0byAweDgwMDAuIFRoZSBjb252ZXJ0ZWQgWzQgeCBpMTZdIHZhbHVlcw0KKy8vLyAgICBhcmUg
d3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVk
IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9wYWNrc19lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJu
IChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3MTI4KChfX3Y0c2kpX19hLCAoX192NHNp
KV9fYik7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyAxNi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20g
Ym90aCAxMjgtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9wZXJhbmRzIGludG8gOC1iaXQg
dW5zaWduZWQgaW50ZWdlcnMsIGFuZCBwYWNrcyB0aGUgcmVzdWx0cyBpbnRvIHRoZQ0KKy8vLyAg
ICBkZXN0aW5hdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8g
MHhGRi4gVmFsdWVzIGxlc3MNCisvLy8gICAgdGhhbiAweDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgw
MC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUNLVVNXQiAvIFBBQ0tVU1dCIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVh
dGVkIGFzDQorLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdpdGgNCisvLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdy
ZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MNCisvLy8g
ICAgdGhhbiAweDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4
XSB2YWx1ZXMgYXJlDQorLy8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzggeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMNCisvLy8g
ICAgYSBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGFuIDgtYml0IHVuc2lnbmVk
IGludGVnZXIgd2l0aA0KKy8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4
RkYgYXJlIHNhdHVyYXRlZCB0byAweEZGLiBWYWx1ZXMgbGVzcw0KKy8vLyAgICB0aGFuIDB4MDAg
YXJlIHNhdHVyYXRlZCB0byAweDAwLiBUaGUgY29udmVydGVkIFs4IHggaThdIHZhbHVlcyBhcmUN
CisvLy8gICAgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUg
Y29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9wYWNrdXNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWNrdXN3YjEyOCgoX192OGhpKV9f
YSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gRXh0cmFjdHMgMTYgYml0cyBmcm9tIGEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0sIHVzaW5nDQorLy8vICAgIHRoZSBpbW1l
ZGlhdGUtdmFsdWUgcGFyYW1ldGVyIGFzIGEgc2VsZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUEVYVFJXIC8gUEVYVFJXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFy
YW0gX19pbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsyOjBdIHNlbGVjdHMg
dmFsdWVzIGZyb20gXGEgX19hIHRvIGJlIGFzc2lnbmVkDQorLy8vICAgIHRvIGJpdHNbMTU6MF0g
b2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgMDAwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBb
MTU6MF0gb2YgXGEgX19hLiBcbg0KKy8vLyAgICAwMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRz
IFszMToxNl0gb2YgXGEgX19hLiBcbg0KKy8vLyAgICAwMTA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBi
aXRzIFs0NzozMl0gb2YgXGEgX19hLiBcbg0KKy8vLyAgICAwMTE6IGFzc2lnbiB2YWx1ZXMgZnJv
bSBiaXRzIFs2Mzo0OF0gb2YgXGEgX19hLiBcbg0KKy8vLyAgICAxMDA6IGFzc2lnbiB2YWx1ZXMg
ZnJvbSBiaXRzIFs3OTo2NF0gb2YgXGEgX19hLiBcbg0KKy8vLyAgICAxMDE6IGFzc2lnbiB2YWx1
ZXMgZnJvbSBiaXRzIFs5NTo4MF0gb2YgXGEgX19hLiBcbg0KKy8vLyAgICAxMTA6IGFzc2lnbiB2
YWx1ZXMgZnJvbSBiaXRzIFsxMTE6OTZdIG9mIFxhIF9fYS4gXG4NCisvLy8gICAgMTExOiBhc3Np
Z24gdmFsdWVzIGZyb20gYml0cyBbMTI3OjExMl0gb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBB
biBpbnRlZ2VyLCB3aG9zZSBsb3dlciAxNiBiaXRzIGFyZSBzZWxlY3RlZCBmcm9tIHRoZSAxMjgt
Yml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciBhbmQgdGhlIHJlbWFpbmluZyBi
aXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4NCisjZGVmaW5lIF9tbV9leHRyYWN0X2VwaTE2KGEsIGlt
bSkgXA0KKyAgKGludCkodW5zaWduZWQgc2hvcnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92OGhp
KChfX3Y4aGkpKF9fbTEyOGkpKGEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSkNCisNCisvLy8gQ29uc3RydWN0cyBhIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgZmlyc3QgbWFraW5nIGEgY29weSBvZiB0aGUNCisvLy8g
ICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0ZXIsIGFuZCB0aGVuIGluc2VydGluZyB0
aGUgbG93ZXIgMTYgYml0cw0KKy8vLyAgICBvZiBhbiBpbnRlZ2VyIHBhcmFtZXRlciBpbnRvIGFu
IG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZS12YWx1ZQ0KKy8vLyAgICBwYXJhbWV0
ZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUElOU1JXIC8gUElOU1JXIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gVGhpcyB2ZWN0b3IgaXMgY29waWVkIHRvIHRoZQ0K
Ky8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBlaWdodCBlbGVtZW50cyBpbiB0aGUg
cmVzdWx0IGlzIHJlcGxhY2VkIGJ5DQorLy8vICAgIHRoZSBsb3dlciAxNiBiaXRzIG9mIFxhIF9f
Yi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBbiBpbnRlZ2VyLiBUaGUgbG93ZXIgMTYgYml0
cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUgd3JpdHRlbiB0byB0aGUNCisvLy8gICAgcmVzdWx0IGJl
Z2lubmluZyBhdCBhbiBvZmZzZXQgc3BlY2lmaWVkIGJ5IFxhIF9faW1tLg0KKy8vLyBccGFyYW0g
X19pbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGJpdCBvZmZz
ZXQgaW4gdGhlIHJlc3VsdCBhdCB3aGljaCB0aGUNCisvLy8gICAgbG93ZXIgMTYgYml0cyBvZiBc
YSBfX2IgYXJlIHdyaXR0ZW4uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1faW5zZXJ0
X2VwaTE2KGEsIGIsIGltbSkgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92
OGhpKChfX3Y4aGkpKF9fbTEyOGkpKGEpLCAoaW50KShiKSwgXA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGltbSkpDQorDQorLy8vIENvcGllcyB0aGUgdmFs
dWVzIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgZnJvbSBlYWNoIDgtYml0DQorLy8vICAg
IGVsZW1lbnQgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byBjcmVh
dGUgYSAxNi1iaXQgbWFzaw0KKy8vLyAgICB2YWx1ZSwgemVyby1leHRlbmRzIHRoZSB2YWx1ZSwg
YW5kIHdyaXRlcyBpdCB0byB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUE1PVk1TS0IgLyBQTU9WTVNLQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IHRoZSB2YWx1ZXMgd2l0aCBiaXRzIHRvIGJlIGV4dHJhY3RlZC4NCisvLy8gXHJldHVybnMgVGhl
IG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBmcm9tIGVhY2ggOC1iaXQgZWxlbWVudCBpbiBcYSBfX2Es
DQorLy8vICAgIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0uIFRoZSBvdGhlciBiaXRzIGFyZSBhc3Np
Z25lZCB6ZXJvcy4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX21vdmVtYXNrX2VwaTgoX19tMTI4aSBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX3Btb3Ztc2tiMTI4KChfX3YxNnFpKV9fYSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBzaHVmZmxpbmcgZm91ciAzMi1iaXQNCisvLy8gICAg
ZWxlbWVudHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgdXNpbmcgdGhl
IGltbWVkaWF0ZS12YWx1ZQ0KKy8vLyAgICBwYXJhbWV0ZXIgYXMgYSBzcGVjaWZpZXIuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8g
X19tMTI4aSBfbW1fc2h1ZmZsZV9lcGkzMihfX20xMjhpIGEsIGNvbnN0IGludCBpbW0pOw0KKy8v
LyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQU0hVRkQgLyBQU0hVRkQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IGENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVl
cyB0byBiZSBjb3BpZWQuDQorLy8vIFxwYXJhbSBpbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZh
bHVlIGNvbnRhaW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0
bw0KKy8vLyAgICBjb3B5IGZyb20gYS4gVGhlIGRlc3RpbmF0aW9ucyB3aXRoaW4gdGhlIDEyOC1i
aXQgZGVzdGluYXRpb24gYXJlIGFzc2lnbmVkDQorLy8vICAgIHZhbHVlcyBhcyBmb2xsb3dzOiBc
bg0KKy8vLyAgICBCaXRzIFsxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBb
MzE6MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzoyXSBhcmUgdXNlZCB0byBh
c3NpZ24gdmFsdWVzIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBC
aXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIG9mIHRo
ZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVl
cyB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdCB2YWx1ZSBh
c3NpZ25tZW50czogXG4NCisvLy8gICAgMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMTow
XSBvZiBcYSBhLiBcbg0KKy8vLyAgICAwMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjMy
XSBvZiBcYSBhLiBcbg0KKy8vLyAgICAxMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzk1OjY0
XSBvZiBcYSBhLiBcbg0KKy8vLyAgICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzEyNzo5
Nl0gb2YgXGEgYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9zaHVmZmxlX2VwaTMyKGEs
IGltbSkgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZkKChfX3Y0c2kpKF9fbTEy
OGkpKGEpLCAoaW50KShpbW0pKQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBieSBzaHVmZmxpbmcgZm91ciBsb3dlciAxNi1iaXQNCisvLy8gICAgZWxlbWVudHMg
b2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSwgdXNpbmcgdGhlIGltbWVk
aWF0ZQ0KKy8vLyAgICB2YWx1ZSBwYXJhbWV0ZXIgYXMgYSBzcGVjaWZpZXIuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4
aSBfbW1fc2h1ZmZsZWxvX2VwaTE2KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQorLy8vIFxl
bmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBTSFVGTFcgLyBQU0hVRkxXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBh
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0uIEJpdHMgWzEy
Nzo2NF0gYXJlIGNvcGllZCB0byBiaXRzDQorLy8vICAgIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBpbW0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIHZhbHVlIHNwZWNp
Znlpbmcgd2hpY2ggZWxlbWVudHMgdG8gY29weSBmcm9tIFxhIGEuIFxuDQorLy8vICAgIEJpdHNb
MTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1
bHQuIFxuDQorLy8vICAgIEJpdHNbMzoyXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJp
dHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzWzU6NF0gYXJlIHVzZWQg
dG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8g
ICAgQml0c1s3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6NDhdIG9m
IHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdCB2YWx1ZSBhc3NpZ25tZW50czogXG4NCisvLy8g
ICAgMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBhLiBcbg0KKy8vLyAg
ICAwMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzMxOjE2XSBvZiBcYSBhLiBcbg0KKy8vLyAg
ICAxMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzQ3OjMyXSBvZiBcYSBhLiBcbg0KKy8vLyAg
ICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBhLiBcbg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2h1ZmZsZWQg
dmFsdWVzLg0KKyNkZWZpbmUgX21tX3NodWZmbGVsb19lcGkxNihhLCBpbW0pIFwNCisgIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHcoKF9fdjhoaSkoX19tMTI4aSkoYSksIChpbnQpKGlt
bSkpDQorDQorLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IHNodWZm
bGluZyBmb3VyIHVwcGVyIDE2LWJpdA0KKy8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLCB1c2luZyB0aGUgaW1tZWRpYXRlDQorLy8vICAgIHZh
bHVlIHBhcmFtZXRlciBhcyBhIHNwZWNpZmllci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9zaHVmZmxlaGlf
ZXBpMTYoX19tMTI4aSBhLCBjb25zdCBpbnQgaW1tKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNIVUZIVyAvIFBTSFVG
SFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisvLy8gICAgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gQml0cyBbNjM6MF0gYXJlIGNvcGllZCB0
byBiaXRzDQorLy8vICAgIFs2MzowXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gaW1tDQor
Ly8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSB2YWx1ZSBzcGVjaWZ5aW5nIHdoaWNoIGVsZW1lbnRz
IHRvIGNvcHkgZnJvbSBcYSBhLiBcbg0KKy8vLyAgICBCaXRzWzE6MF0gYXJlIHVzZWQgdG8gYXNz
aWduIHZhbHVlcyB0byBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0
c1szOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6ODBdIG9mIHRoZSBy
ZXN1bHQuIFxuDQorLy8vICAgIEJpdHNbNTo0XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRv
IGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0c1s3OjZdIGFyZSB1
c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3OjExMl0gb2YgdGhlIHJlc3VsdC4gXG4N
CisvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbg0KKy8vLyAgICAwMDogYXNzaWduIHZh
bHVlcyBmcm9tIGJpdHMgWzc5OjY0XSBvZiBcYSBhLiBcbg0KKy8vLyAgICAwMTogYXNzaWduIHZh
bHVlcyBmcm9tIGJpdHMgWzk1OjgwXSBvZiBcYSBhLiBcbg0KKy8vLyAgICAxMDogYXNzaWduIHZh
bHVlcyBmcm9tIGJpdHMgWzExMTo5Nl0gb2YgXGEgYS4gXG4NCisvLy8gICAgMTE6IGFzc2lnbiB2
YWx1ZXMgZnJvbSBiaXRzIFsxMjc6MTEyXSBvZiBcYSBhLiBcbg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLg0KKyNk
ZWZpbmUgX21tX3NodWZmbGVoaV9lcGkxNihhLCBpbW0pIFwNCisgIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BzaHVmaHcoKF9fdjhoaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQorDQorLy8v
IFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgKGluZGV4IDgtMTUpIHZhbHVlcyBmcm9tIHR3byAxMjgt
Yml0IHZlY3RvcnMNCisvLy8gICAgb2YgWzE2IHggaThdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGlu
dG8gYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUFVOUENLSEJXIC8gUFVOUENLSEJXIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4
IGk4XS4NCisvLy8gICAgQml0cyBbNzE6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2Yg
dGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNzk6NzJdIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzIzOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs4Nzo4MF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzk1Ojg4
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAg
Qml0cyBbMTAzOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3MTo2NF0gb2YgdGhlIHJlc3VsdC4g
XG4NCisvLy8gICAgQml0cyBbMTExOjEwNF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbODc6ODBdIG9m
IHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzExOToxMTJdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTI3OjEyMF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMTE5OjExMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gXG4NCisvLy8gICAgQml0
cyBbNzE6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjhdIG9mIHRoZSByZXN1bHQuIFxuDQor
Ly8vICAgIEJpdHMgWzc5OjcyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToyNF0gb2YgdGhlIHJl
c3VsdC4gXG4NCisvLy8gICAgQml0cyBbODc6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjQw
XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs5NTo4OF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzEwMzo5Nl0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbNzk6NzJdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMg
WzExMToxMDRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0LiBcbg0K
Ky8vLyAgICBCaXRzIFsxMTk6MTEyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMTE6MTA0XSBvZiB0
aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6MTIwXSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5wYWNraGlfZXBp
OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0
dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2hidzEyOCAoKF9fdjE2cWkpX19hLCAo
X192MTZxaSlfX2IpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZm
bGV2ZWN0b3IoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IsIDgsIDE2KzgsIDksIDE2KzksIDEw
LCAxNisxMCwgMTEsIDE2KzExLCAxMiwgMTYrMTIsIDEzLCAxNisxMywgMTQsIDE2KzE0LCAxNSwg
MTYrMTUpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciAoaW5k
ZXggNC03KSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs4IHgg
aTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBp
MTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0hXRCAvIFBVTlBDS0hX
RCA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQorLy8vICAgIEJpdHMgWzc5OjY0XSBh
cmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRz
IFs5NTo4MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuIFxuDQor
Ly8vICAgIEJpdHMgWzExMTo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzk6NjRdIG9mIHRoZSBy
ZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEx
MTo5Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XS4NCisvLy8gICAgQml0cyBbNzk6NjRdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs5NTo4MF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMg
WzExMTo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuIFxuDQor
Ly8vICAgIEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNv
bnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2toaV9lcGkxNihfX20xMjhpIF9fYSwg
X19tMTI4aSBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3B1bnBja2h3ZDEyOCAoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCisj
ZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkp
X19hLCAoX192OGhpKV9fYiwgNCwgOCs0LCA1LCA4KzUsIDYsIDgrNiwgNywgOCs3KTsNCisjZW5k
aWYNCit9DQorDQorLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgKGluZGV4IDIsMykgdmFsdWVz
IGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4IGkzMl0gYW5kIGludGVy
bGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIRFEgLyBQVU5QQ0tIRFEgPC9jPg0KKy8vLyAg
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KKy8vLyAgICBCaXRzIFs5NTo2NF0gYXJlIHdyaXR0ZW4g
dG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6
OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuDQor
Ly8vICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2NDozMl0gb2YgdGhlIGRl
c3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzEyNzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5wYWNraGlf
ZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisg
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2toZHExMjggKChfX3Y0c2kpX19h
LCAoX192NHNpKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1
ZmZsZXZlY3RvcigoX192NHNpKV9fYSwgKF9fdjRzaSlfX2IsIDIsIDQrMiwgMywgNCszKTsNCisj
ZW5kaWYNCit9DQorDQorLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgNjQtYml0IGVsZW1lbnRz
IGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbMiB4IGk2NF0gYW5kIGludGVy
bGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIUURRIC8gUFVOUENLSFFEUSA8L2M+DQorLy8v
ICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQorLy8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBcbg0KKy8vLyAgICBCaXRzIFsx
Mjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRo
ZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fdW5wYWNraGlfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wdW5wY2tocWRxMTI4ICgoX192MmRpKV9fYSwgKF9fdjJkaSlfX2IpOw0KKyNlbHNlDQorICBy
ZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3Yy
ZGkpX19iLCAxLCAyKzEpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgbG93LW9y
ZGVyIChpbmRleCAwLTcpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8g
ICAgWzE2IHggaThdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBv
ZiBbMTYgeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLTEJXIC8g
UFVOUENLTEJXIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gXG4NCisvLy8gICAgQml0
cyBbNzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8v
ICAgIEJpdHMgWzE1OjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0
LiBcbg0KKy8vLyAgICBCaXRzIFsyMzoxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzk6MzJdIG9m
IHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzMxOjI0XSBhcmUgd3JpdHRlbiB0byBiaXRz
IFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzk6MzJdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs0Nzo0
MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbODc6ODBdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAg
IEJpdHMgWzU1OjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMDM6OTZdIG9mIHRoZSByZXN1bHQu
IFxuDQorLy8vICAgIEJpdHMgWzYzOjU2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMTk6MTEyXSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzE2IHggaThdLg0KKy8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1
OjhdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzE1OjhdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFsyMzoxNl0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbNDc6NDBdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMg
WzMxOjI0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCisv
Ly8gICAgQml0cyBbMzk6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc5OjcyXSBvZiB0aGUgcmVz
dWx0LiBcbg0KKy8vLyAgICBCaXRzIFs0Nzo0MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6ODhd
IG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzU1OjQ4XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs2Mzo1Nl0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMTI3OjEyMF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQg
dmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3VucGFja2xvX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisjaWZkZWYg
X19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2tsYncxMjgg
KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iLCAwLCAx
NiswLCAxLCAxNisxLCAyLCAxNisyLCAzLCAxNiszLCA0LCAxNis0LCA1LCAxNis1LCA2LCAxNis2
LCA3LCAxNis3KTsNCisjZW5kaWYNCit9DQorDQorLy8vIFVucGFja3MgdGhlIGxvdy1vcmRlciAo
aW5kZXggMC0zKSB2YWx1ZXMgZnJvbSBlYWNoIG9mIHRoZSB0d28gMTI4LWJpdA0KKy8vLyAgICB2
ZWN0b3JzIG9mIFs4IHggaTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2
ZWN0b3Igb2YNCisvLy8gICAgWzggeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBVTlBDS0xXRCAvIFBVTlBDS0xXRCA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0u
DQorLy8vICAgIEJpdHMgWzE1OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjBdIG9mIHRoZSBy
ZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0Nzoz
Ml0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNDc6MzJdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs2Mzo0OF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KKy8vLyAgICBCaXRzIFsx
NTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8g
ICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0
LiBcbg0KKy8vLyAgICBCaXRzIFs0NzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6ODBdIG9m
IHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzYzOjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5wYWNrbG9fZXBp
MTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJl
dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2tsd2QxMjggKChfX3Y4aGkpX19hLCAo
X192OGhpKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZs
ZXZlY3RvcigoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IsIDAsIDgrMCwgMSwgOCsxLCAyLCA4KzIs
IDMsIDgrMyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSBsb3ctb3JkZXIgKGlu
ZGV4IDAsMSkgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4
IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
aTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMRFEgLyBQVU5QQ0tM
RFEgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KKy8vLyAgICBCaXRzIFszMTow
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8v
ICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhlIGRlc3Rp
bmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMzJdLiBcbg0KKy8vLyAgICBCaXRzIFszMTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2NDoz
Ml0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV91bnBhY2tsb19lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyNpZmRlZiBf
X0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2xkcTEyOCAo
KF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19hLCAoX192NHNpKV9fYiwgMCwgNCswLCAx
LCA0KzEpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVyIDY0LWJp
dCBlbGVtZW50cyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzIgeCBpNjRd
IGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLTFFEUSAvIFBVTlBDS0xRRFEg
PC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBcbg0KKy8vLyAgICBCaXRzIFs2MzowXSBh
cmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vIFxw
YXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQorLy8v
ICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIGRlc3Rp
bmF0aW9uLiBcbg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBj
b250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5wYWNrbG9fZXBpNjQoX19tMTI4aSBfX2Es
IF9fbTEyOGkgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9wdW5wY2tscWRxMTI4ICgoX192MmRpKV9fYSwgKF9fdjJkaSlfX2IpOw0K
KyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJk
aSlfX2EsIChfX3YyZGkpX19iLCAwLCAyKzApOw0KKyNlbmRpZg0KK30NCisNCisvLy8gUmV0dXJu
cyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYXMgYSA2NC1i
aXQNCisvLy8gICAgaW50ZWdlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVkRR
MlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIG1vdmVk
IHRvIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciBjb250YWluaW5nIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBwYXJhbWV0ZXIuDQorc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21vdmVwaTY0X3Bp
NjQoX19tMTI4aSBfX2EpDQorew0KKyAgcmV0dXJuIChfX202NClfX2FbMF07DQorfQ0KKw0KKy8v
LyBNb3ZlcyB0aGUgNjQtYml0IG9wZXJhbmQgdG8gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCB6
ZXJvaW5nIHRoZQ0KKy8vLyAgICB1cHBlciBiaXRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gTU9WRCtWTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgNjQtYml0IHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIGZyb20NCisvLy8g
ICAgdGhlIG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tb3ZwaTY0
X2VwaTY0KF9fbTY0IF9fYSkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSko
X192MmRpKXsgKGxvbmcgbG9uZylfX2EsIDAgfTsNCit9DQorDQorLy8vIE1vdmVzIHRoZSBsb3dl
ciA2NCBiaXRzIG9mIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDEyOC1iaXQNCisvLy8g
ICAgaW50ZWdlciB2ZWN0b3IsIHplcm9pbmcgdGhlIHVwcGVyIGJpdHMuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTU9WUSAvIE1PVlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4g
VGhlIGxvd2VyIDY0IGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0
cyBjb250YWluIHRoZSB2YWx1ZSBmcm9tDQorLy8vICAgIHRoZSBvcGVyYW5kLiBUaGUgdXBwZXIg
NjQgYml0cyBhcmUgYXNzaWduZWQgemVyb3MuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbW92ZV9lcGk2NChfX20xMjhpIF9fYSkNCit7DQorI2lm
ZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfbW92cTEyOCAo
KF9fdjJkaSkgX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3YyZGkpX19hLCBfbW1fc2V0emVyb19zaTEyOCgpLCAwLCAyKTsNCisjZW5kaWYNCit9DQor
DQorLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgNjQtYml0IGVsZW1lbnRzIGZyb20gdHdvIDEy
OC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbMiB4IGRvdWJsZV0gYW5kIGludGVybGVhdmVzIHRo
ZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgNCisvLy8gICAgZG91YmxlXS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQRCAvIFVOUENLSFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uIFxuDQorLy8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6
NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fdW5wYWNraGlfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0K
K3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl91
bnBja2hwZCAoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9f
YnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYiwgMSwgMisxKTsN
CisjZW5kaWYNCit9DQorDQorLy8vIFVucGFja3MgdGhlIGxvdy1vcmRlciA2NC1iaXQgZWxlbWVu
dHMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzDQorLy8vICAgIG9mIFsyIHggZG91YmxlXSBhbmQg
aW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeA0KKy8vLyAgICBk
b3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tM
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbNjM6MF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KKy8vLyAg
ICBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5h
dGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3VucGFja2xvX3BkKF9fbTEyOGQgX19hLCBfX20x
MjhkIF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGQpX19idWls
dGluX2lhMzJfdW5wY2tscGQgKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorI2Vsc2UNCisg
IHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2Is
IDAsIDIrMCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBFeHRyYWN0cyB0aGUgc2lnbiBiaXRzIG9m
IHRoZSBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpbiB0aGUgMTI4LWJpdA0KKy8vLyAgICB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLCB6ZXJvLWV4dGVuZHMgdGhlIHZhbHVlLCBhbmQgd3JpdGVzIGl0
IHRvIHRoZQ0KKy8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTVNLUEQgLyBNT1ZNU0tQRCA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB3aXRoIHNpZ24gYml0cyB0bw0K
Ky8vLyAgICBiZSBleHRyYWN0ZWQuDQorLy8vIFxyZXR1cm5zIFRoZSBzaWduIGJpdHMgZnJvbSBl
YWNoIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIGluIFxhIF9fYSwNCisvLy8gICAg
d3JpdHRlbiB0byBiaXRzIFsxOjBdLiBUaGUgcmVtYWluaW5nIGJpdHMgYXJlIGFzc2lnbmVkIHZh
bHVlcyBvZiB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fbW92ZW1hc2tfcGQoX19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX21vdm1za3BkKChfX3YyZGYpX19hKTsNCit9DQorDQorDQorLy8vIENvbnN0cnVjdHMgYSAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gZnJvbSB0d28NCisv
Ly8gICAgMTI4LWJpdCB2ZWN0b3IgcGFyYW1ldGVycyBvZiBbMiB4IGRvdWJsZV0sIHVzaW5nIHRo
ZSBpbW1lZGlhdGUtdmFsdWUNCisvLy8gICAgIHBhcmFtZXRlciBhcyBhIHNwZWNpZmllci4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8v
LyBfX20xMjhkIF9tbV9zaHVmZmxlX3BkKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBjb25zdCBpbnQg
aSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlNIVUZQRCAvIFNIVUZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisv
Ly8gXHBhcmFtIGINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQor
Ly8vIFxwYXJhbSBpDQorLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSB2YWx1ZS4gVGhlIGxlYXN0
IHNpZ25pZmljYW50IHR3byBiaXRzIHNwZWNpZnkgd2hpY2gNCisvLy8gICAgZWxlbWVudHMgdG8g
Y29weSBmcm9tIFxhIGEgYW5kIFxhIGI6IFxuDQorLy8vICAgIEJpdFswXSA9IDA6IGxvd2VyIGVs
ZW1lbnQgb2YgXGEgYSBjb3BpZWQgdG8gbG93ZXIgZWxlbWVudCBvZiByZXN1bHQuIFxuDQorLy8v
ICAgIEJpdFswXSA9IDE6IHVwcGVyIGVsZW1lbnQgb2YgXGEgYSBjb3BpZWQgdG8gbG93ZXIgZWxl
bWVudCBvZiByZXN1bHQuIFxuDQorLy8vICAgIEJpdFsxXSA9IDA6IGxvd2VyIGVsZW1lbnQgb2Yg
XGEgYiBjb3BpZWQgdG8gdXBwZXIgZWxlbWVudCBvZiByZXN1bHQuIFxuDQorLy8vICAgIEJpdFsx
XSA9IDE6IHVwcGVyIGVsZW1lbnQgb2YgXGEgYiBjb3BpZWQgdG8gdXBwZXIgZWxlbWVudCBvZiBy
ZXN1bHQuIFxuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9zaHVmZmxlX3Bk
KGEsIGIsIGkpIFwNCisgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NodWZwZCgoX192MmRmKShf
X20xMjhkKShhKSwgKF9fdjJkZikoX19tMTI4ZCkoYiksIFwNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaW50KShpKSkNCisNCisvLy8gQ2FzdHMgYSAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQNCisvLy8gICAgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNw
b25kaW5nIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIHNhbWUNCisvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jYXN0cGRf
cHMoX19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19hOw0KK30NCisNCisvLy8g
Q2FzdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50
byBhIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJl
c3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdpc2Ug
cGF0dGVybiBhcyB0aGUNCisvLy8gICAgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Nhc3RwZF9zaTEyOChfX20xMjhkIF9fYSkN
Cit7DQorICByZXR1cm4gKF9fbTEyOGkpX19hOw0KK30NCisNCisvLy8gQ2FzdHMgYSAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTI4LWJpdA0KKy8v
LyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBu
byBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIHNhbWUNCisvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJh
bWV0ZXIuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fY2FzdHBzX3BkKF9fbTEyOCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYTsNCit9
DQorDQorLy8vIENhc3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gaW50byBhIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFz
IG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhbWUg
Yml0d2lzZSBwYXR0ZXJuIGFzIHRoZQ0KKy8vLyAgICBwYXJhbWV0ZXIuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY2FzdHBzX3NpMTI4KF9fbTEy
OCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYTsNCit9DQorDQorLy8vIENhc3RzIGEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3INCisvLy8gICAgb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNhbWUNCisvLy8gICAgYml0d2lzZSBw
YXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9jYXN0c2kxMjhfcHMoX19tMTI4aSBfX2EpDQorew0KKyAgcmV0
dXJuIChfX20xMjgpX19hOw0KK30NCisNCisvLy8gQ2FzdHMgYSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGludG8gYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KKy8vLyAgICBvZiBbMiB4
IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSBjb250YWluaW5nIHRoZSBzYW1lDQorLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFy
YW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2Nhc3RzaTEyOF9wZChfX20xMjhpIF9fYSkNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19h
Ow0KK30NCisNCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCitleHRlcm4gIkMiIHsNCisjZW5k
aWYNCisNCisvLy8gSW5kaWNhdGVzIHRoYXQgYSBzcGluIGxvb3AgaXMgYmVpbmcgZXhlY3V0ZWQg
Zm9yIHRoZSBwdXJwb3NlcyBvZg0KKy8vLyAgICBvcHRpbWl6aW5nIHBvd2VyIGNvbnN1bXB0aW9u
IGR1cmluZyB0aGUgbG9vcC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBVVNFIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQordm9pZCBfbW1fcGF1c2Uodm9pZCk7DQorDQorI2lmIGRl
ZmluZWQoX19jcGx1c3BsdXMpDQorfSAvLyBleHRlcm4gIkMiDQorI2VuZGlmDQorI3VuZGVmIF9f
REVGQVVMVF9GTl9BVFRSUw0KKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorDQorI2lm
bmRlZiBfTU1fREVOT1JNQUxTX1pFUk9fT04NCisjZGVmaW5lIF9NTV9ERU5PUk1BTFNfWkVST19P
TiAgICgweDAwNDApDQorI2VuZGlmDQorI2lmbmRlZiBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGDQor
I2RlZmluZSBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGICAoMHgwMDAwKQ0KKyNlbmRpZg0KKw0KKyNp
Zm5kZWYgX01NX0RFTk9STUFMU19aRVJPX01BU0sNCisjZGVmaW5lIF9NTV9ERU5PUk1BTFNfWkVS
T19NQVNLICgweDAwNDApDQorI2VuZGlmDQorDQorI2lmbmRlZiBfTU1fR0VUX0RFTk9STUFMU19a
RVJPX01PREUNCisjZGVmaW5lIF9NTV9HRVRfREVOT1JNQUxTX1pFUk9fTU9ERSgpIChfbW1fZ2V0
Y3NyKCkgJiBfTU1fREVOT1JNQUxTX1pFUk9fTUFTSykNCisjZGVmaW5lIF9NTV9TRVRfREVOT1JN
QUxTX1pFUk9fTU9ERSh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9NTV9ERU5PUk1B
TFNfWkVST19NQVNLKSB8ICh4KSkpDQorI2VuZGlmDQorDQorI2VuZGlmIC8qIF9fRU1NSU5UUklO
X0ggKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRlL2ltbWludHJpbi5oIGIvaW5jbHVkZS9pbW1pbnRy
aW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjU0NjAwNWINCi0tLSAv
ZGV2L251bGwNCisrKyBiL2luY2x1ZGUvaW1taW50cmluLmgNCkBAIC0wLDAgKzEsNzUgQEANCisv
Kj09PS0tLS0gaW1taW50cmluLmggLSBJbnRlbCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQorICog
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg
IlNvZnR3YXJlIiksIHRvIGRlYWwNCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzDQorICogdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh
bmQvb3Igc2VsbA0KKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi
amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbg0KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCisg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUNCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQorICogTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwNCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElODQorICogVEhFIFNPRlRXQVJFLg0KKyAqDQor
ICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAqLw0KKw0KKyNpZm5kZWYgX19JTU1JTlRSSU5fSA0K
KyNkZWZpbmUgX19JTU1JTlRSSU5fSA0KKw0KKyNpZiBkZWZpbmVkKF9fTU1YX18pDQorI2luY2x1
ZGUgPG1taW50cmluLmg+DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19TU0VfXykNCisjaW5j
bHVkZSA8eG1taW50cmluLmg+DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19TU0UyX18pDQor
I2luY2x1ZGUgPGVtbWludHJpbi5oPg0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKF9fU1NFM19f
KQ0KKyNpbmNsdWRlIDxwbW1pbnRyaW4uaD4NCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZChfX1NT
U0UzX18pDQorI2luY2x1ZGUgPHRtbWludHJpbi5oPg0KKyNlbmRpZg0KKw0KKyNpZiBcDQorICAg
IChkZWZpbmVkKF9fU1NFNF8yX18pIHx8IGRlZmluZWQoX19TU0U0XzFfXykpDQorI2luY2x1ZGUg
PHNtbWludHJpbi5oPg0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKF9fQVZYX18pDQorI2luY2x1
ZGUgPGF2eGludHJpbi5oPg0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKF9fUE9QQ05UX18pDQor
I2luY2x1ZGUgPHBvcGNudGludHJpbi5oPg0KKyNlbmRpZg0KKw0KKw0KKy8qIF9fYml0X3NjYW5f
Zm9yd2FyZCAqLw0KKy8qDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpDQorX2JpdF9zY2FuX2ZvcndhcmQoaW50IF9f
QSkgew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9jdHooX19BKTsNCit9DQorKi8NCisvKiBfX2JpdF9z
Y2FuX3JldmVyc2UgKi8NCisvKg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQ0KK19iaXRfc2Nhbl9yZXZlcnNlKGlu
dCBfX0EpIHsNCisgIHJldHVybiAzMSAtIF9fYnVpbHRpbl9jbHooX19BKTsNCit9DQorKi8NCisj
ZW5kaWYgLyogX19JTU1JTlRSSU5fSCAqLw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbW1fbWFsbG9j
LmggYi9pbmNsdWRlL21tX21hbGxvYy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw
MDAwMC4uMzA1YWZkMw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvaW5jbHVkZS9tbV9tYWxsb2MuaA0K
QEAgLTAsMCArMSw3NSBAQA0KKy8qPT09LS0tLSBtbV9tYWxsb2MuaCAtIEFsbG9jYXRpbmcgYW5k
IEZyZWVpbmcgQWxpZ25lZCBNZW1vcnkgQmxvY2tzIC0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0
d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZSByaWdodHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVy
bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisg
Kg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAq
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVINCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBU
SEUgU09GVFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lm
bmRlZiBfX01NX01BTExPQ19IDQorI2RlZmluZSBfX01NX01BTExPQ19IDQorDQorI2luY2x1ZGUg
PHN0ZGxpYi5oPg0KKw0KKyNpZmRlZiBfV0lOMzINCisjaW5jbHVkZSA8bWFsbG9jLmg+DQorI2Vs
c2UNCisjaWZuZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbih2b2lk
ICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSk7DQorI2Vsc2UN
CisvLyBTb21lIHN5c3RlbXMgKGUuZy4gdGhvc2Ugd2l0aCBHTlUgbGliYykgZGVjbGFyZSBwb3Np
eF9tZW1hbGlnbiB3aXRoIGFuDQorLy8gZXhjZXB0aW9uIHNwZWNpZmllci4gVmlhIGFuICJlZ3Jl
Z2lvdXMgd29ya2Fyb3VuZCIgaW4NCisvLyBTZW1hOjpDaGVja0VxdWl2YWxlbnRFeGNlcHRpb25T
cGVjLCBDbGFuZyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYXMgYSB2YWxpZA0KKy8vIHJlZGVjbGFy
YXRpb24gb2YgZ2xpYmMncyBkZWNsYXJhdGlvbi4NCitleHRlcm4gIkMiIGludCBwb3NpeF9tZW1h
bGlnbih2b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSk7
DQorI2VuZGlmDQorI2VuZGlmDQorDQorI2lmICEoZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQo
X21tX21hbGxvYykpDQorc3RhdGljIF9faW5saW5lX18gdm9pZCAqX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbWFsbG9jX18pKQ0KK19tbV9tYWxsb2Moc2l6ZV90IF9fc2l6ZSwgc2l6
ZV90IF9fYWxpZ24pDQorew0KKyAgaWYgKF9fYWxpZ24gPT0gMSkgew0KKyAgICByZXR1cm4gbWFs
bG9jKF9fc2l6ZSk7DQorICB9DQorDQorICBpZiAoIShfX2FsaWduICYgKF9fYWxpZ24gLSAxKSkg
JiYgX19hbGlnbiA8IHNpemVvZih2b2lkICopKQ0KKyAgICBfX2FsaWduID0gc2l6ZW9mKHZvaWQg
Kik7DQorDQorICB2b2lkICpfX21hbGxvY2VkTWVtb3J5Ow0KKyNpZiBkZWZpbmVkKF9fTUlOR1cz
Ml9fKQ0KKyAgX19tYWxsb2NlZE1lbW9yeSA9IF9fbWluZ3dfYWxpZ25lZF9tYWxsb2MoX19zaXpl
LCBfX2FsaWduKTsNCisjZWxpZiBkZWZpbmVkKF9XSU4zMikNCisgIF9fbWFsbG9jZWRNZW1vcnkg
PSBfYWxpZ25lZF9tYWxsb2MoX19zaXplLCBfX2FsaWduKTsNCisjZWxzZQ0KKyAgaWYgKHBvc2l4
X21lbWFsaWduKCZfX21hbGxvY2VkTWVtb3J5LCBfX2FsaWduLCBfX3NpemUpKQ0KKyAgICByZXR1
cm4gMDsNCisjZW5kaWYNCisNCisgIHJldHVybiBfX21hbGxvY2VkTWVtb3J5Ow0KK30NCisNCitz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXykpDQorX21tX2ZyZWUodm9pZCAqX19wKQ0KK3sNCisgIGZyZWUoX19wKTsNCit9
DQorI2VuZGlmDQorDQorI2VuZGlmIC8qIF9fTU1fTUFMTE9DX0ggKi8NCmRpZmYgLS1naXQgYS9p
bmNsdWRlL21taW50cmluLmggYi9pbmNsdWRlL21taW50cmluLmgNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwLi5hNWMyODI5DQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRl
L21taW50cmluLmgNCkBAIC0wLDAgKzEsMTU5OCBAQA0KKy8qPT09LS0tLSBtbWludHJpbi5oIC0g
TU1YIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0N
CisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0K
KyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzDQorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0K
KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVINCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4NCisgKiBUSEUgU09GVFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09
DQorICovDQorDQorI2lmbmRlZiBfX01NSU5UUklOX0gNCisjZGVmaW5lIF9fTU1JTlRSSU5fSA0K
Kw0KKyNpZmRlZiBfX0dOVUNfXw0KK3R5cGVkZWYgaW50IF9fbTY0IF9fYXR0cmlidXRlX18gKChf
X3ZlY3Rvcl9zaXplX18gKDgpLCBfX21heV9hbGlhc19fKSk7DQorI2Vsc2UNCit0eXBlZGVmIGxv
bmcgbG9uZyBfX202NCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsNCisjZW5k
aWYNCit0eXBlZGVmIGludCBfX202NF91IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18g
KDgpLCBfX21heV9hbGlhc19fLCBfX2FsaWduZWRfXyAoMSkpKTsNCisNCit0eXBlZGVmIGxvbmcg
bG9uZyBfX3YxZGkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7DQordHlwZWRl
ZiBpbnQgX192MnNpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOw0KK3R5cGVk
ZWYgc2hvcnQgX192NGhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOw0KK3R5
cGVkZWYgY2hhciBfX3Y4cWkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7DQor
dHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkp
KTsNCisvKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBp
biB0aGlzIGZpbGUuICovDQorI2lmZGVmIF9fR05VQ19fDQorI2RlZmluZSBfX0RFRkFVTFRfRk5f
QVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf
X2FydGlmaWNpYWxfXykpDQorI2Vsc2UNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1t
eCIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KKyNlbmRpZg0KKw0KKy8vLyBDbGVhcnMg
dGhlIE1NWCBzdGF0ZSBieSBzZXR0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgeDg3IHN0YWNrIHJlZ2lz
dGVycw0KKy8vLyAgICB0byBlbXB0eS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IEVN
TVMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkDQorI2lm
ZGVmIF9fR05VQ19fDQorX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lu
bGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQorI2Vsc2UNCitfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCIpKSkNCisjZW5kaWYNCitf
bW1fZW1wdHkodm9pZCkNCit7DQorICAgIF9fYnVpbHRpbl9pYTMyX2VtbXMoKTsNCit9DQorDQor
Ly8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IsIHNldHRpbmcgdGhlIGxvd2Vy
IDMyIGJpdHMgdG8gdGhlDQorLy8vICAgIHZhbHVlIG9mIHRoZSAzMi1iaXQgaW50ZWdlciBwYXJh
bWV0ZXIgYW5kIHNldHRpbmcgdGhlIHVwcGVyIDMyIGJpdHMgdG8gMC4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9faQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUgdmFsdWUg
b2YgdGhlDQorLy8vICAgIHBhcmFtZXRlci4gVGhlIHVwcGVyIDMyIGJpdHMgYXJlIHNldCB0byAw
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRz
aTMyX3NpNjQoaW50IF9faSkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJf
dmVjX2luaXRfdjJzaShfX2ksIDApOw0KK30NCisNCisvLy8gUmV0dXJucyB0aGUgbG93ZXIgMzIg
Yml0cyBvZiBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBhcyBhIDMyLWJpdA0KKy8vLyAgICBzaWdu
ZWQgaW50ZWdlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVkQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgY29u
dGFpbmluZyB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUNCisvLy8gICAgcGFyYW1ldGVyLg0KK3N0
YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0c2k2NF9zaTMy
KF9fbTY0IF9fbSkNCit7DQorICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Yyc2ko
KF9fdjJzaSlfX20sIDApOw0KK30NCisNCisvLy8gQ2FzdHMgYSA2NC1iaXQgc2lnbmVkIGludGVn
ZXIgdmFsdWUgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IE1PVlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
aQ0KKy8vLyAgICBBIDY0LWJpdCBzaWduZWQgaW50ZWdlci4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMg
dGhlDQorLy8vICAgIHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fY3Z0c2k2NF9tNjQobG9uZyBsb25nIF9faSkNCit7DQorICAgIHJl
dHVybiAoX19tNjQpX19pOw0KK30NCisNCisvLy8gQ2FzdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgaW50byBhIDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IE1PVlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
bQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMg
dGhlDQorLy8vICAgIHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dG02NF9zaTY0KF9fbTY0IF9fbSkNCit7DQorICAgIHJl
dHVybiAobG9uZyBsb25nKV9fbTsNCit9DQorDQorLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQg
aW50ZWdlcnMgZnJvbSBib3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8vLyAgICBwYXJhbWV0
ZXJzIG9mIFs0IHggaTE2XSBpbnRvIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgYW5kIGNv
bnN0cnVjdHMNCisvLy8gICAgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gYXMg
dGhlIHJlc3VsdC4gUG9zaXRpdmUgdmFsdWVzDQorLy8vICAgIGdyZWF0ZXIgdGhhbiAweDdGIGFy
ZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwDQorLy8v
ICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFBBQ0tTU1dCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxl
bWVudCBpcyB0cmVhdGVkIGFzIGENCisvLy8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBp
cyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgc2lnbmVkIGludGVnZXIgd2l0aA0KKy8vLyAgICBzYXR1
cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0
byAweDdGLg0KKy8vLyAgICBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVy
YXRlZCB0byAweDgwLiBUaGUgY29udmVydGVkDQorLy8vICAgIFs0IHggaThdIHZhbHVlcyBhcmUg
d3JpdHRlbiB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIEVhY2gg
MTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQorLy8vICAgIDE2LWJpdCBzaWduZWQgaW50
ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGFuIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgNCisv
Ly8gICAgc2F0dXJhdGlvbi4gUG9zaXRpdmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBz
YXR1cmF0ZWQgdG8gMHg3Ri4NCisvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgw
IGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZA0KKy8vLyAgICBbNCB4IGk4XSB2
YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmlu
ZyB0aGUgY29udmVydGVkDQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fcGFja3NfcGkxNihfX202NCBfX20xLCBfX202NCBf
X20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWNrc3N3YigoX192
NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyAzMi1iaXQgc2ln
bmVkIGludGVnZXJzIGZyb20gYm90aCA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgcGFy
YW1ldGVycyBvZiBbMiB4IGkzMl0gaW50byAxNi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzLCBh
bmQgY29uc3RydWN0cw0KKy8vLyAgICBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkx
Nl0gYXMgdGhlIHJlc3VsdC4gUG9zaXRpdmUgdmFsdWVzDQorLy8vICAgIGdyZWF0ZXIgdGhhbiAw
eDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4N
CisvLy8gICAgMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gUEFDS1NTRFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBF
YWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQ0KKy8vLyAgICAzMi1iaXQgc2lnbmVk
IGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRo
DQorLy8vICAgIHNhdHVyYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RkZG
IGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLg0KKy8vLyAgICBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0
aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIGNvbnZlcnRlZA0KKy8vLyAg
ICBbMiB4IGkxNl0gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFsyIHggaTMyXS4gRWFjaCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCisv
Ly8gICAgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQg
c2lnbmVkIGludGVnZXIgd2l0aA0KKy8vLyAgICBzYXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMg
Z3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4NCisvLy8gICAgTmVn
YXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuIFRo
ZSBjb252ZXJ0ZWQNCisvLy8gICAgWzIgeCBpMTZdIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0aGUg
dXBwZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVkDQorLy8vICAg
IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fcGFja3NfcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wYWNrc3NkdygoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7
DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyAxNi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20gYm90aCA2
NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgcGFyYW1ldGVycyBvZiBbNCB4IGkxNl0gaW50
byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgYW5kDQorLy8vICAgIGNvbnN0cnVjdHMg
YSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gYXMgdGhlIHJlc3VsdC4gVmFsdWVz
DQorLy8vICAgIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVz
IGxlc3MgdGhhbiAwIGFyZSBzYXR1cmF0ZWQNCisvLy8gICAgdG8gMC4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFBBQ0tVU1dCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4g
RWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCisvLy8gICAgMTYtYml0IHNpZ25l
ZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciB3
aXRoDQorLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0
dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzDQorLy8vICAgIHRoYW4gMCBhcmUgc2F0dXJhdGVk
IHRvIDAuIFRoZSBjb252ZXJ0ZWQgWzQgeCBpOF0gdmFsdWVzIGFyZSB3cml0dGVuIHRvDQorLy8v
ICAgIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX20yDQor
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gRWFjaCAxNi1iaXQg
ZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCisvLy8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGFu
ZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoDQorLy8vICAg
IHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4
RkYuIFZhbHVlcyBsZXNzDQorLy8vICAgIHRoYW4gMCBhcmUgc2F0dXJhdGVkIHRvIDAuIFRoZSBj
b252ZXJ0ZWQgWzQgeCBpOF0gdmFsdWVzIGFyZSB3cml0dGVuIHRvDQorLy8vICAgIHRoZSB1cHBl
ciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZA0KKy8vLyAgICB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Bh
Y2tzX3B1MTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcGFja3Vzd2IoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOw0KK30N
CisNCisvLy8gVW5wYWNrcyB0aGUgdXBwZXIgMzIgYml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3JzIG9mIFs4IHggaThdDQorLy8vICAgIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8g
YSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQVU5QQ0tIQlcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFxuDQor
Ly8vICAgIEJpdHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OjBdIG9mIHRoZSByZXN1
bHQuIFxuDQorLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMzoxNl0g
b2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs2Mzo1Nl0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX20yDQor
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLyAgICBCaXRz
IFszOTozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisv
Ly8gICAgQml0cyBbNDc6NDBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVz
dWx0LiBcbg0KKy8vLyAgICBCaXRzIFs1NTo0OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNDc6NDBd
IG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzYzOjU2XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQNCisvLy8gICAg
dmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV91bnBhY2toaV9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAo
X19tNjQpX19idWlsdGluX2lhMzJfcHVucGNraGJ3KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20y
KTsNCit9DQorDQorLy8vIFVucGFja3MgdGhlIHVwcGVyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0
IGludGVnZXIgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4IGkxNl0gYW5kIGludGVybGVhdmVzIHRo
ZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBQVU5QQ0tIV0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBp
MTZdLg0KKy8vLyAgICBCaXRzIFs0NzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0gb2Yg
dGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNjM6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUg
d3JpdHRlbiB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBb
NjM6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0
aGUgaW50ZXJsZWF2ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2toaV9waTE2KF9fbTY0IF9fbTEsIF9fbTY0
IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2h3ZCgo
X192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSB1cHBl
ciAzMiBiaXRzIGZyb20gdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCisvLy8gICAgWzIg
eCBpMzJdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLSERRIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIHVwcGVyIDMyIGJpdHMgYXJlIHdyaXR0
ZW4gdG8NCisvLy8gICAgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBU
aGUgdXBwZXIgMzIgYml0cyBhcmUgd3JpdHRlbiB0bw0KKy8vLyAgICB0aGUgdXBwZXIgMzIgYml0
cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQNCisvLy8gICAgdmFsdWVzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2to
aV9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9f
YnVpbHRpbl9pYTMyX3B1bnBja2hkcSgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7DQorfQ0K
Kw0KKy8vLyBVbnBhY2tzIHRoZSBsb3dlciAzMiBiaXRzIGZyb20gdHdvIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvcnMgb2YgWzggeCBpOF0NCisvLy8gICAgYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBh
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFBVTlBDS0xCVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8g
ICAgQml0cyBbNzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuIFxu
DQorLy8vICAgIEJpdHMgWzE1OjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzIzOjE2XSBvZiB0aGUg
cmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFsyMzoxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzk6
MzJdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzMxOjI0XSBhcmUgd3JpdHRlbiB0
byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vICAgIEJpdHMgWzc6MF0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0
cyBbMTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuIFxuDQor
Ly8vICAgIEJpdHMgWzIzOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJl
c3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZA0KKy8vLyAgICB2YWx1ZXMuDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3VucGFja2xv
X3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1
aWx0aW5faWEzMl9wdW5wY2tsYncoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOw0KK30NCisN
CisvLy8gVW5wYWNrcyB0aGUgbG93ZXIgMzIgYml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2
ZWN0b3JzIG9mDQorLy8vICAgIFs0IHggaTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFBVTlBDS0xXRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8v
ICAgIEJpdHMgWzE1OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQu
IFxuDQorLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0NzozMl0gb2Yg
dGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyAgICBCaXRzIFsxNTowXSBhcmUgd3JpdHRlbiB0byBi
aXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2
ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV91bnBhY2tsb19waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0K
KyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2x3ZCgoX192NGhpKV9fbTEs
IChfX3Y0aGkpX19tMik7DQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSBsb3dlciAzMiBiaXRzIGZy
b20gdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCisvLy8gICAgWzIgeCBpMzJdIGFuZCBp
bnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLTERRIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFsyIHggaTMyXS4gVGhlIGxvd2VyIDMyIGJpdHMgYXJlIHdyaXR0ZW4gdG8NCisvLy8g
ICAgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fbTINCisv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgMzIg
Yml0cyBhcmUgd3JpdHRlbiB0bw0KKy8vLyAgICB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0g
Y29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2tsb19waTMyKF9fbTY0
IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3B1bnBja2xkcSgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7DQorfQ0KKw0KKy8vLyBBZGRz
IGVhY2ggOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2
ZWN0b3INCisvLy8gICAgb2YgWzggeCBpOF0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgaW50
ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQNCisvLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs4IHggaThdLiBUaGUgbG93ZXIgOCBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZQ0KKy8vLyAg
ICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBRERCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHgg
aThdLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzgg
eCBpOF0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQorLy8vICAgIHBhcmFtZXRlcnMuDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZF9waTgo
X19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGlu
X2lhMzJfcGFkZGIoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOw0KK30NCisNCisvLy8gQWRk
cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2Vy
IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGkxNl0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0
IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kDQorLy8vICAgIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0uIFRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZQ0K
Ky8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREVyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KKy8vLyAgICBwYXJh
bWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9hZGRfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202
NClfX2J1aWx0aW5faWEzMl9wYWRkdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0K
Kw0KKy8vLyBBZGRzIGVhY2ggMzItYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQt
Yml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFsyIHggaTMyXSB0byB0aGUgY29ycmVzcG9u
ZGluZyAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQNCisvLy8gICAgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJl
c3VsdHMgYXJlDQorLy8vICAgIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFsyIHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBREREIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQor
Ly8vICAgIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2FkZF9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGRkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlf
X20yKTsNCit9DQorDQorLy8vIEFkZHMgZWFjaCA4LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50
IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBpOF0g
dG8gdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZg0KKy8v
LyAgICB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gUG9zaXRp
dmUgc3VtcyBncmVhdGVyIHRoYW4NCisvLy8gICAgMHg3RiBhcmUgc2F0dXJhdGVkIHRvIDB4N0Yu
IE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0bw0KKy8vLyAgICAw
eDgwLiBUaGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzggeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREU0IgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQgc3Vtcw0K
Ky8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZHNfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQor
ew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGRzYigoX192OHFpKV9fbTEs
IChfX3Y4cWkpX19tMik7DQorfQ0KKw0KKy8vLyBBZGRzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRl
Z2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBv
ZiBbNCB4IGkxNl0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVs
ZW1lbnQgb2YNCisvLy8gICAgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQg
eCBpMTZdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICAweDdGRkYgYXJlIHNh
dHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUNCisv
Ly8gICAgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEg
NjQtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggaTE2XS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFBBRERTVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBp
MTZdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQorLy8vICAgIG9mIGJvdGggcGFyYW1l
dGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
YWRkc19waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BhZGRzdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0K
Kw0KKy8vLyBBZGRzIGVhY2ggOC1iaXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBm
aXJzdCA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBpOF0gdG8gdGhlIGNv
cnJlc3BvbmRpbmcgOC1iaXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mDQorLy8vICAgIHRo
ZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBTdW1zIGdyZWF0ZXIg
dGhhbiAweEZGIGFyZQ0KKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHhGRi4gVGhlIHJlc3VsdHMgYXJl
IHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQorLy8vICAgIFs4IHggaThd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFERFVTQiA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbOCB4IGk4XS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZA0KKy8vLyAgICB1bnNpZ25l
ZCBzdW1zIG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkc19wdTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7
DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHVzYigoX192OHFpKV9fbTEs
IChfX3Y4cWkpX19tMik7DQorfQ0KKw0KKy8vLyBBZGRzIGVhY2ggMTYtYml0IHVuc2lnbmVkIGlu
dGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXINCisvLy8gICAgdmVjdG9y
IG9mIFs0IHggaTE2XSB0byB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgdW5zaWduZWQgaW50ZWdl
ciBlbGVtZW50DQorLy8vICAgIG9mIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XS4gU3VtcyBncmVhdGVyIHRoYW4NCisvLy8gICAgMHhGRkZGIGFyZSBzYXR1cmF0
ZWQgdG8gMHhGRkZGLiBUaGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQNCisvLy8g
ICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUEFERFVTVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0K
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJh
bSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5p
bmcgdGhlIHNhdHVyYXRlZA0KKy8vLyAgICB1bnNpZ25lZCBzdW1zIG9mIGJvdGggcGFyYW1ldGVy
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRk
c19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9f
YnVpbHRpbl9pYTMyX3BhZGR1c3coKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOw0KK30NCisN
CisvLy8gU3VidHJhY3RzIGVhY2ggOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQg
NjQtYml0IGludGVnZXINCisvLy8gICAgdmVjdG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJl
c3BvbmRpbmcgOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAgICBmaXJzdCA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFRoZSBsb3dlciA4IGJpdHMgb2YgdGhlIHJl
c3VsdHMNCisvLy8gICAgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs4IHggaThdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQkIgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJh
bSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRh
aW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZg0KKy8vLyAgICBi
b3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX3N1Yl9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YmIoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIp
Ow0KK30NCisNCisvLy8gU3VidHJhY3RzIGVhY2ggMTYtYml0IGludGVnZXIgZWxlbWVudCBvZiB0
aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBvZiBbNCB4IGkxNl0gZnJv
bSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAg
ICBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBUaGUgbG93ZXIgMTYg
Yml0cyBvZiB0aGUNCisvLy8gICAgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
UFNVQlcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIG1pbnVl
bmRzLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBkaWZmZXJl
bmNlcyBvZg0KKy8vLyAgICBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1Yl9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJ3KChfX3Y0aGkp
X19tMSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBlYWNoIDMyLWJpdCBp
bnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0
b3Igb2YgWzIgeCBpMzJdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIgZWxl
bWVudCBvZiB0aGUNCisvLy8gICAgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHgg
aTMyXS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdHMgYXJlIHBhY2tl
ZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFBTVUJEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBj
b250YWluaW5nIHRoZSBtaW51ZW5kcy4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRz
Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29u
dGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YNCisvLy8gICAgYm90aCBwYXJhbWV0ZXJzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdWJfcGkzMihf
X202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wc3ViZCgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7DQorfQ0KKw0KKy8vLyBTdWJ0
cmFjdHMgZWFjaCA4LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQt
Yml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJlc3Bv
bmRpbmcgOC1iaXQgc2lnbmVkIGludGVnZXINCisvLy8gICAgZWxlbWVudCBvZiB0aGUgZmlyc3Qg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBQb3NpdGl2ZSByZXN1bHRzDQorLy8v
ICAgIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gTmVnYXRpdmUgcmVz
dWx0cyBsZXNzIHRoYW4gMHg4MA0KKy8vLyAgICBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuIFRoZSBy
ZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBv
ZiBbOCB4IGk4XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJTQiA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4NCisvLy8gXHBh
cmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29u
dGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZA0KKy8vLyAgICBkaWZm
ZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQor
ew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJzYigoX192OHFpKV9fbTEs
IChfX3Y4cWkpX19tMik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgZWFjaCAxNi1iaXQgc2lnbmVk
IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGlu
dGVnZXINCisvLy8gICAgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgcmVzdWx0cw0KKy8vLyAgICBncmVhdGVyIHRoYW4gMHg3
RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSByZXN1bHRzIGxlc3MgdGhhbg0K
Ky8vLyAgICAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuIFRoZSByZXN1bHRzIGFyZSBw
YWNrZWQgaW50byBhIDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1VCU1cgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KKy8vLyBccGFyYW0gX19tMg0K
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0
aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQNCisvLy8gICAgZGlmZmVyZW5jZXMg
b2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zdWJzX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnN3KChfX3Y0aGkpX19tMSwgKF9fdjRo
aSlfX20yKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBlYWNoIDgtYml0IHVuc2lnbmVkIGludGVn
ZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVkIGludGVnZXIN
CisvLy8gICAgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdLg0KKy8vLw0KKy8vLyAgICBJZiBhbiBlbGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3Ig
aXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQNCisvLy8gICAgb2YgdGhlIHNl
Y29uZCB2ZWN0b3IsIHRoZSByZXN1bHQgaXMgc2F0dXJhdGVkIHRvIDAuIFRoZSByZXN1bHRzIGFy
ZQ0KKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4
XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJVU0IgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJhbSBfX20y
DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcg
dGhlIHN1YnRyYWhlbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQNCisvLy8gICAgZGlmZmVyZW5jZXMg
b2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zdWJzX3B1OChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3VidXNiKChfX3Y4cWkpX19tMSwgKF9fdjhx
aSlfX20yKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBlYWNoIDE2LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0IHVuc2lnbmVkDQorLy8v
ICAgIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XS4NCisvLy8NCisvLy8gICAgSWYgYW4gZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVj
dG9yIGlzIGxlc3MgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50DQorLy8vICAgIG9mIHRo
ZSBzZWNvbmQgdmVjdG9yLCB0aGUgcmVzdWx0IGlzIHNhdHVyYXRlZCB0byAwLiBUaGUgcmVzdWx0
cyBhcmUNCisvLy8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQg
eCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlVTVyA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJh
bSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250
YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZA0KKy8vLyAgICBkaWZm
ZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfcHUxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0K
K3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3VidXN3KChfX3Y0aGkpX19t
MSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQorLy8vIE11bHRpcGxpZXMgZWFjaCAxNi1iaXQgc2ln
bmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0DQorLy8vICAgIGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XSBieSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGlu
dGVnZXINCisvLy8gICAgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0gYW5kIGdldCBmb3VyDQorLy8vICAgIDMyLWJpdCBwcm9kdWN0cy4gQWRk
cyBhZGphY2VudCBwYWlycyBvZiBwcm9kdWN0cyB0byBnZXQgdHdvIDMyLWJpdCBzdW1zLg0KKy8v
LyAgICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGVzZSB0d28gc3VtcyBhcmUgcGFja2VkIGludG8g
YSA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLw0KKy8v
LyAgICBGb3IgZXhhbXBsZSwgYml0cyBbMTU6MF0gb2YgYm90aCBwYXJhbWV0ZXJzIGFyZSBtdWx0
aXBsaWVkLCBiaXRzIFszMToxNl0NCisvLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzIGFyZSBtdWx0
aXBsaWVkLCBhbmQgdGhlIHN1bSBvZiBib3RoIHJlc3VsdHMgaXMgd3JpdHRlbg0KKy8vLyAgICB0
byBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUE1BRERXRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBf
X20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8g
XHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcg
dGhlIHN1bXMgb2YNCisvLy8gICAgcHJvZHVjdHMgb2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYWRkX3BpMTYoX19t
NjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lh
MzJfcG1hZGR3ZCgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0KKw0KKy8vLyBNdWx0
aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0
LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gYnkgdGhlIGNvcnJlc3Bv
bmRpbmcgMTYtYml0IHNpZ25lZCBpbnRlZ2VyDQorLy8vICAgIGVsZW1lbnQgb2YgdGhlIHNlY29u
ZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBQYWNrcyB0aGUgdXBwZXINCisv
Ly8gICAgMTYgYml0cyBvZiB0aGUgMzItYml0IHByb2R1Y3RzIGludG8gYSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1V
TEhXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIF9fbTINCisv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBccmV0dXJu
cyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgdXBw
ZXIgMTYgYml0cw0KKy8vLyAgICBvZiB0aGUgcHJvZHVjdHMgb2YgYm90aCBwYXJhbWV0ZXJzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tdWxoaV9w
aTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVp
bHRpbl9pYTMyX3BtdWxodygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0KKw0KKy8v
LyBNdWx0aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZp
cnN0IDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gYnkgdGhlIGNv
cnJlc3BvbmRpbmcgMTYtYml0IHNpZ25lZCBpbnRlZ2VyDQorLy8vICAgIGVsZW1lbnQgb2YgdGhl
IHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBQYWNrcyB0aGUgbG93
ZXINCisvLy8gICAgMTYgYml0cyBvZiB0aGUgMzItYml0IHByb2R1Y3RzIGludG8gYSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUE1VTExXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIF9f
bTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0
aGUgbG93ZXIgMTYgYml0cw0KKy8vLyAgICBvZiB0aGUgcHJvZHVjdHMgb2YgYm90aCBwYXJhbWV0
ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9t
dWxsb19waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BtdWxsdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0K
Kw0KKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9m
IHRoZSBmaXJzdA0KKy8vLyAgICBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XSwgYnkgdGhlIG51bWJlcg0KKy8vLyAgICBvZiBiaXRzIHNwZWNp
ZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4g
VGhlDQorLy8vICAgIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRv
IGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggaTE2XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
Lg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBp
bnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQgaW50ZWdlci4NCisvLy8gXHJldHVybnMgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hp
ZnRlZA0KKy8vLyAgICB2YWx1ZXMuIElmIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0
byAxNiwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gYWxsDQorLy8vICAgIDAuDQorc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NsbF9waTE2KF9fbTY0IF9fbSwg
X19tNjQgX19jb3VudCkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICAgIHJldHVybiAoX19tNjQp
IF9fYnVpbHRpbl9pYTMyX3BzbGx3ICgoX192NGhpKV9fbSwgKF9fdjRoaSlfX2NvdW50KTsNCisj
ZWxzZQ0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzbGx3KChfX3Y0aGkpX19t
LCBfX2NvdW50KTsNCisjZW5kaWYNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0
IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0
b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1i
aXQgaW50ZWdlci4NCisvLy8gICAgVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJl
IHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggaTE2
XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExXIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDMyLWJpdCBpbnRl
Z2VyIHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0gY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkDQorLy8vICAgIHZhbHVlcy4gSWYgXGEg
X19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDE2LCB0aGUgcmVzdWx0IGlzIHNldCB0byBh
bGwNCisvLy8gICAgMC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fc2xsaV9waTE2KF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQorew0KKyAgICByZXR1
cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzbGx3aSgoX192NGhpKV9fbSwgX19jb3VudCk7DQor
fQ0KKw0KKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50
IG9mIHRoZSBmaXJzdA0KKy8vLyAgICBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFsyIHggaTMyXSwgYnkgdGhlIG51bWJlcg0KKy8vLyAgICBvZiBiaXRzIHNw
ZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdl
ci4gVGhlDQorLy8vICAgIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBp
bnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQorLy8vICAgIFsyIHggaTMyXS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBp
MzJdLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQgaW50ZWdlci4NCisvLy8gXHJldHVybnMg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGxlZnQt
c2hpZnRlZA0KKy8vLyAgICB2YWx1ZXMuIElmIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVh
bCB0byAzMiwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gYWxsDQorLy8vICAgIDAuDQorc3RhdGljIF9f
aW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NsbF9waTMyKF9fbTY0IF9f
bSwgX19tNjQgX19jb3VudCkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJf
cHNsbGQoKF9fdjJzaSlfX20sIChfX3Yyc2kpX19jb3VudCk7DQorfQ0KKw0KKy8vLyBMZWZ0LXNo
aWZ0cyBlYWNoIDMyLWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVn
ZXINCisvLy8gICAgdmVjdG9yIG9mIFsyIHggaTMyXSBieSB0aGUgbnVtYmVyIG9mIGJpdHMgc3Bl
Y2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQorLy8vICAgIFRoZSBsb3dlciAzMiBiaXRzIG9m
IHRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8v
LyAgICBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU0xMRCA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8g
ICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZA0KKy8vLyAg
ICB2YWx1ZXMuIElmIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAzMiwgdGhlIHJl
c3VsdCBpcyBzZXQgdG8gYWxsDQorLy8vICAgIDAuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NsbGlfcGkzMihfX202NCBfX20sIGludCBfX2NvdW50
KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xsZGkoKF9fdjJzaSlf
X20sIF9fY291bnQpOw0KK30NCisNCisvLy8gTGVmdC1zaGlmdHMgdGhlIGZpcnN0IDY0LWJpdCBp
bnRlZ2VyIHBhcmFtZXRlciBieSB0aGUgbnVtYmVyIG9mIGJpdHMNCisvLy8gICAgc3BlY2lmaWVk
IGJ5IHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgcGFyYW1ldGVyLiBUaGUgbG93ZXIgNjQgYml0
cyBvZg0KKy8vLyAgICByZXN1bHQgYXJlIHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gUFNMTFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0K
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2
NC1iaXQgaW50ZWdlci4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQorLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hp
ZnRlZCB2YWx1ZS4gSWYNCisvLy8gICAgIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0
byA2NCwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gMC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsX3NpNjQoX19tNjQgX19tLCBfX202NCBfX2NvdW50
KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xscSgoX192MWRpKV9f
bSwgKF9fdjFkaSlfX2NvdW50KTsNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIHRoZSBmaXJzdCBw
YXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIsIGJ5IHRoZQ0KKy8vLyAgICBudW1i
ZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEg
MzItYml0DQorLy8vICAgIGludGVnZXIuIFRoZSBsb3dlciA2NCBiaXRzIG9mIHJlc3VsdCBhcmUg
cmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU0xMUSA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KKy8vLyBccGFy
YW0gX19jb3VudA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLg0KKy8vLyBccmV0dXJu
cyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFs
dWUuIElmDQorLy8vICAgICBcYSBfX2NvdW50IGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gNjQsIHRo
ZSByZXN1bHQgaXMgc2V0IHRvIDAuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3NsbGlfc2k2NChfX202NCBfX20sIGludCBfX2NvdW50KQ0KK3sNCisg
ICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xscWkoKF9fdjFkaSlfX20sIF9fY291
bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRzIGVhY2ggMTYtYml0IGludGVnZXIgZWxlbWVu
dCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLA0KKy8vLyAgICB3aGljaCBpcyBhIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbNCB4IGkxNl0sIGJ5IHRoZSBudW1iZXIgb2YgYml0cw0KKy8vLyAgICBz
cGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVn
ZXIuDQorLy8vDQorLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNp
Z24gYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlIG9mIGVhY2gNCisvLy8gICAgMTYtYml0IGVsZW1l
bnQuIFRoZSAxNi1iaXQgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlcg0K
Ky8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUFNSQVcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX2Nv
dW50DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2lu
Z2xlIDY0LWJpdCBpbnRlZ2VyLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KKy8vLyAgICB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Ny
YV9waTE2KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCit7DQorICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHNyYXcoKF9fdjRoaSlfX20sIChfX3Y0aGkpX19jb3VudCk7DQorfQ0K
Kw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQt
Yml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggaTE2XSBieSB0aGUgbnVtYmVyIG9m
IGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQorLy8vDQorLy8vICAgIEhpZ2gt
b3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0aWFsIHZh
bHVlIG9mIGVhY2gNCisvLy8gICAgMTYtYml0IGVsZW1lbnQuIFRoZSAxNi1iaXQgcmVzdWx0cyBh
cmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3Igb2YgWzQgeCBp
MTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSQVcgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgMzItYml0IGlu
dGVnZXIgdmFsdWUuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkDQorLy8vICAgIHZhbHVlcy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3JhaV9waTE2
KF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRp
bl9pYTMyX3BzcmF3aSgoX192NGhpKV9fbSwgX19jb3VudCk7DQorfQ0KKw0KKy8vLyBSaWdodC1z
aGlmdHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIs
DQorLy8vICAgIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSwg
YnkgdGhlIG51bWJlciBvZiBiaXRzDQorLy8vICAgIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBh
cmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4NCisvLy8NCisvLy8gICAgSGlnaC1v
cmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbiBiaXQgb2YgdGhlIGluaXRpYWwgdmFs
dWUgb2YgZWFjaA0KKy8vLyAgICAzMi1iaXQgZWxlbWVudC4gVGhlIDMyLWJpdCByZXN1bHRzIGFy
ZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBvZiBbMiB4IGkz
Ml0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JBRCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFsyIHggaTMyXS4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQorLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5n
IHRoZSByaWdodC1zaGlmdGVkDQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3JhX3BpMzIoX19tNjQgX19tLCBfX202NCBf
X2NvdW50KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JhZCgoX192
MnNpKV9fbSwgKF9fdjJzaSlfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNo
IDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8g
ICAgb2YgWzIgeCBpMzJdIGJ5IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1i
aXQgaW50ZWdlci4NCisvLy8NCisvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0
aCB0aGUgc2lnbiBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUgb2YgZWFjaA0KKy8vLyAgICAzMi1i
aXQgZWxlbWVudC4gVGhlIDMyLWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBp
bnRlZ2VyDQorLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQU1JBRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19t
DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCisvLy8gXHBh
cmFtIF9fY291bnQNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCisvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHJp
Z2h0LXNoaWZ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmFpX3BpMzIoX19tNjQgX19tLCBpbnQgX19jb3VudCkN
Cit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNyYWRpKChfX3Yyc2kpX19t
LCBfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2Vy
IGVsZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciwNCisvLy8gICAgd2hpY2ggaXMgYSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLCBieSB0aGUgbnVtYmVyIG9mIGJpdHMNCisv
Ly8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJp
dCBpbnRlZ2VyLg0KKy8vLw0KKy8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuIFRo
ZSAxNi1iaXQgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQNCisvLy8gICAgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNS
TFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX2NvdW50DQor
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0
LWJpdCBpbnRlZ2VyLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
NCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KKy8vLyAgICB2YWx1ZXMuDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybF9waTE2
KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfcHNybHcoKF9fdjRoaSlfX20sIChfX3Y0aGkpX19jb3VudCk7DQorfQ0KKw0KKy8v
LyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggaTE2XSBieSB0aGUgbnVtYmVyIG9mIGJpdHMg
c3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQorLy8vDQorLy8vICAgIEhpZ2gtb3JkZXIg
Yml0cyBhcmUgY2xlYXJlZC4gVGhlIDE2LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0
LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQU1JMVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisv
Ly8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCisvLy8g
XHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcg
dGhlIHJpZ2h0LXNoaWZ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmxpX3BpMTYoX19tNjQgX19tLCBpbnQgX19j
b3VudCkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNybHdpKChfX3Y0
aGkpX19tLCBfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCBp
bnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciwNCisvLy8gICAgd2hpY2ggaXMg
YSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCBieSB0aGUgbnVtYmVyIG9mIGJp
dHMNCisvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBh
IDY0LWJpdCBpbnRlZ2VyLg0KKy8vLw0KKy8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFy
ZWQuIFRoZSAzMi1iaXQgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQNCisvLy8gICAg
aW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUFNSTEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vIFxwYXJhbSBfX2Nv
dW50DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2lu
Z2xlIDY0LWJpdCBpbnRlZ2VyLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KKy8vLyAgICB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Ny
bF9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCit7DQorICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHNybGQoKF9fdjJzaSlfX20sIChfX3Yyc2kpX19jb3VudCk7DQorfQ0K
Kw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQt
Yml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFsyIHggaTMyXSBieSB0aGUgbnVtYmVyIG9m
IGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQorLy8vDQorLy8vICAgIEhpZ2gt
b3JkZXIgYml0cyBhcmUgY2xlYXJlZC4gVGhlIDMyLWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50
byBhIDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JMRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMy
XS4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4N
CisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRh
aW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmxpX3BpMzIoX19tNjQgX19tLCBp
bnQgX19jb3VudCkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNybGRp
KChfX3Yyc2kpX19tLCBfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyB0aGUgZmly
c3QgNjQtYml0IGludGVnZXIgcGFyYW1ldGVyIGJ5IHRoZSBudW1iZXIgb2YgYml0cw0KKy8vLyAg
ICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIuDQorLy8v
DQorLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFBTUkxRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5n
bGUgNjQtYml0IGludGVnZXIuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0K
Ky8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdo
dC1zaGlmdGVkIHZhbHVlLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9zcmxfc2k2NChfX202NCBfX20sIF9fbTY0IF9fY291bnQpDQorew0KKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzcmxxKChfX3YxZGkpX19tLCAoX192MWRpKV9f
Y291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRzIHRoZSBmaXJzdCBwYXJhbWV0ZXIsIHdo
aWNoIGlzIGEgNjQtYml0IGludGVnZXIsIGJ5IHRoZQ0KKy8vLyAgICBudW1iZXIgb2YgYml0cyBz
cGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgMzItYml0DQorLy8v
ICAgIGludGVnZXIuDQorLy8vDQorLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkxRIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50
ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQorLy8vIFxwYXJhbSBfX2NvdW50
DQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWUuDQorc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybGlfc2k2NChf
X202NCBfX20sIGludCBfX2NvdW50KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wc3JscWkoKF9fdjFkaSlfX20sIF9fY291bnQpOw0KK30NCisNCisvLy8gUGVyZm9ybXMg
YSBiaXR3aXNlIEFORCBvZiB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycy4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFBBTkQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBf
X20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiBib3RoDQor
Ly8vICAgIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2FuZF9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICBy
ZXR1cm4gX19idWlsdGluX2lhMzJfcGFuZChfX20xLCBfX20yKTsNCit9DQorDQorLy8vIFBlcmZv
cm1zIGEgYml0d2lzZSBOT1Qgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciwgYW5k
IHRoZW4NCisvLy8gICAgcGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0aGUgaW50ZXJtZWRpYXRl
IHJlc3VsdCBhbmQgdGhlIHNlY29uZCA2NC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQU5ETiA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhl
IG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgdXNlZA0KKy8vLyAgICBpbiB0
aGUgYml0d2lzZSBBTkQuDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUgc2Vjb25kDQorLy8vICAgIHBhcmFtZXRlciBhbmQg
dGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYW5kbm90X3NpNjQoX19tNjQg
X19tMSwgX19tNjQgX19tMikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICAgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9wYW5kbiAoX19tMSwgX19tMik7DQorI2Vsc2UNCisgICAgcmV0dXJuIF9fYnVp
bHRpbl9pYTMyX3BhbmRuKChfX3YxZGkpX19tMSwgKF9fdjFkaSlfX20yKTsNCisjZW5kaWYNCit9
DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gNjQtYml0IGludGVnZXIgdmVj
dG9ycy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUiA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ci4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQor
Ly8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHdp
c2UgT1Igb2YgYm90aA0KKy8vLyAgICBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9vcl9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgICByZXR1cm4gX19idWlsdGluX2lhMzJfcG9y
KF9fbTEsIF9fbTIpOw0KKyNlbHNlDQorICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wb3IoKF9f
djFkaSlfX20xLCAoX192MWRpKV9fbTIpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gUGVyZm9ybXMg
YSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvZiB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycy4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBYT1IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8v
IFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0
dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIGV4Y2x1
c2l2ZSBPUiBvZiBib3RoDQorLy8vICAgIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18g
X19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3hvcl9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0
IF9fbTIpDQorew0KKyAgICByZXR1cm4gX19idWlsdGluX2lhMzJfcHhvciAoX19tMSwgX19tMik7
DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28g
NjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KKy8vLyAgICBbOCB4IGk4XSB0byBkZXRlcm1pbmUg
aWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBlcXVhbCB0byB0aGUNCisvLy8g
ICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KKy8vLw0KKy8v
LyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkYgZm9yIHRydWUuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QRVFCIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs4IHggaThdLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbOCB4IGk4XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBlcV9w
aTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfcGNtcGVxYigoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7DQorfQ0KKw0KKy8v
LyBDb21wYXJlcyB0aGUgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvcnMgb2YNCisvLy8gICAgWzQgeCBpMTZdIHRvIGRldGVybWluZSBpZiB0aGUgZWxl
bWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGVxdWFsIHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNw
b25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29uZCB2ZWN0b3IuDQorLy8vDQorLy8vICAgIFRoZSBj
b21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEVRVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkx
Nl0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQg
eCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVzdWx0cy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZXFfcGkxNihf
X202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wY21wZXF3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQorLy8vIENv
bXBhcmVzIHRoZSAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIg
dmVjdG9ycyBvZg0KKy8vLyAgICBbMiB4IGkzMl0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBlbGVtZW50
IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZXF1YWwgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRp
bmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBh
cmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEVRRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkz
Ml0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFsyIHggaTMyXS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIg
eCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVzdWx0cy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZXFfcGkzMihf
X202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wY21wZXFkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCit9DQorDQorLy8vIENv
bXBhcmVzIHRoZSA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2
ZWN0b3JzIG9mDQorLy8vICAgIFs4IHggaThdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBv
ZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICB0aGUgY29ycmVzcG9u
ZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgY29t
cGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQQ01QR1RCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0K
Ky8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4
IGk4XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0g
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBndF9waTgoX19tNjQgX19t
MSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNt
cGd0YigoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0
aGUgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMg
b2YNCisvLy8gICAgWzQgeCBpMTZdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUg
Zmlyc3QgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNv
biB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFBDTVBHVFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8v
LyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkx
Nl0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBj
b250YWluaW5nIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGd0X3BpMTYoX19tNjQgX19t
MSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNt
cGd0dygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0
aGUgMzItYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMg
b2YNCisvLy8gICAgWzIgeCBpMzJdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUg
Zmlyc3QgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNv
biB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQQ01QR1REIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4N
CisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIg
eCBpMzJdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkz
Ml0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBndF9waTMyKF9fbTY0
IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BjbXBndGQoKF9fdjJzaSlfX20xLCAoX192MnNpKV9fbTIpOw0KK30NCisNCisvLy8gQ29uc3Ry
dWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB0byB6ZXJvLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFhPUiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igd2l0aCBhbGwg
ZWxlbWVudHMgc2V0IHRvIHplcm8uDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3NldHplcm9fc2k2NCh2b2lkKQ0KK3sNCisgICAgcmV0dXJuIF9fZXh0
ZW5zaW9uX18gKF9fbTY0KXsgMExMIH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KKy8vLyAgICAz
Mi1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBk
b2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2kxDQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX2kwDQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQor
Ly8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0X3BpMzIoaW50
IF9faTEsIGludCBfX2kwKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl92
ZWNfaW5pdF92MnNpKF9faTAsIF9faTEpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQNCisvLy8gICAg
MTYtYml0IGludGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19zMw0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fczINCisvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3MxDQorLy8vICAgIEEg
MTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19zMA0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorc3RhdGljIF9f
aW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldF9waTE2KHNob3J0IF9f
czMsIHNob3J0IF9fczIsIHNob3J0IF9fczEsIHNob3J0IF9fczApDQorew0KKyAgICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3ZlY19pbml0X3Y0aGkoX19zMCwgX19zMSwgX19zMiwgX19z
Myk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRp
YWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KKy8vLyAgICA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8g
YSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYjcN
CisvLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
NjM6NTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2I2DQorLy8vICAgIEFuIDgtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX19iNQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fYjQNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IzDQorLy8vICAgIEFu
IDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHBhcmFtIF9fYjENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjANCisvLy8g
ICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3NldF9waTgoY2hhciBfX2I3LCBjaGFyIF9fYjYsIGNoYXIgX19iNSwgY2hhciBfX2I0LCBj
aGFyIF9fYjMsIGNoYXIgX19iMiwNCisgICAgICAgICAgICBjaGFyIF9fYjEsIGNoYXIgX19iMCkN
Cit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfdmVjX2luaXRfdjhxaShfX2Iw
LCBfX2IxLCBfX2IyLCBfX2IzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19iNCwgX19iNSwgX19iNiwgX19iNyk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1
Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSwgd2l0aCBlYWNoIG9mIHRo
ZQ0KKy8vLyAgICAzMi1iaXQgaW50ZWdlciB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVj
aWZpZWQgMzItYml0IGludGVnZXINCisvLy8gICAgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5
IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2kNCisvLy8gICAgQSAzMi1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IgZWxlbWVudCBvZiB0aGUN
CisvLy8gICAgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9zZXQxX3BpMzIoaW50IF9faSkNCit7DQorICAgIHJldHVybiBf
bW1fc2V0X3BpMzIoX19pLCBfX2kpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0sIHdpdGggZWFjaCBvZiB0aGUNCisvLy8gICAgMTYt
Yml0IGludGVnZXIgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDE2LWJpdCBp
bnRlZ2VyDQorLy8vICAgIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX193DQorLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQorLy8vICAgIHJlc3Vs
dC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fc2V0MV9waTE2KHNob3J0IF9fdykNCit7DQorICAgIHJldHVybiBfbW1fc2V0X3BpMTYo
X193LCBfX3csIF9fdywgX193KTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0sIHdpdGggZWFjaCBvZiB0aGUNCisvLy8gICAgOC1iaXQg
aW50ZWdlciB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdl
ciB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJl
c3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1
cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0MV9waTgo
Y2hhciBfX2IpDQorew0KKyAgICByZXR1cm4gX21tX3NldF9waTgoX19iLCBfX2IsIF9fYiwgX19i
LCBfX2IsIF9fYiwgX19iLCBfX2IpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQorLy8vICAg
IHRoZSBzcGVjaWZpZWQgMzItYml0IGludGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0
eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAg
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19pMA0KKy8vLyAgICBBIDMyLWJpdCBp
bnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUN
CisvLy8gICAgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pMQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRl
Z2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUNCisv
Ly8gICAgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3NldHJfcGkzMihpbnQgX19pMCwgaW50IF9faTEpDQorew0KKyAgICByZXR1cm4gX21tX3Nl
dF9waTMyKF9faTEsIF9faTApOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQorLy8vICAgIHRo
ZSBzcGVjaWZpZWQgMTYtYml0IGludGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBm
dW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX193MA0KKy8vLyAgICBBIDE2LWJpdCBpbnRl
Z2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX193MQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzIN
CisvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
NDc6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3czDQorLy8vICAgIEEgMTYtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldHJf
cGkxNihzaG9ydCBfX3cwLCBzaG9ydCBfX3cxLCBzaG9ydCBfX3cyLCBzaG9ydCBfX3czKQ0KK3sN
CisgICAgcmV0dXJuIF9tbV9zZXRfcGkxNihfX3czLCBfX3cyLCBfX3cxLCBfX3cwKTsNCit9DQor
DQorLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGlu
IHJldmVyc2Ugb3JkZXIgd2l0aA0KKy8vLyAgICB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVnZXIg
dmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVz
cG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19iMA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxDQorLy8vICAgIEFu
IDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjhdIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyDQorLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iMw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjQNCisvLy8g
ICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzk6MzJd
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2I1DQorLy8vICAgIEFuIDgtYml0IGludGVn
ZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19iNg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjcN
CisvLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
NjM6NTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJp
dCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fc2V0cl9waTgoY2hhciBfX2IwLCBjaGFyIF9fYjEsIGNoYXIgX19iMiwgY2hh
ciBfX2IzLCBjaGFyIF9fYjQsIGNoYXIgX19iNSwNCisgICAgICAgICAgICAgY2hhciBfX2I2LCBj
aGFyIF9fYjcpDQorew0KKyAgICByZXR1cm4gX21tX3NldF9waTgoX19iNywgX19iNiwgX19iNSwg
X19iNCwgX19iMywgX19iMiwgX19iMSwgX19iMCk7DQorfQ0KKw0KKyN1bmRlZiBfX0RFRkFVTFRf
Rk5fQVRUUlMNCisNCisvKiBBbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5LiAqLw0KKyNkZWZpbmUg
X21fZW1wdHkgX21tX2VtcHR5DQorI2RlZmluZSBfbV9mcm9tX2ludCBfbW1fY3Z0c2kzMl9zaTY0
DQorI2RlZmluZSBfbV9mcm9tX2ludDY0IF9tbV9jdnRzaTY0X202NA0KKyNkZWZpbmUgX21fdG9f
aW50IF9tbV9jdnRzaTY0X3NpMzINCisjZGVmaW5lIF9tX3RvX2ludDY0IF9tbV9jdnRtNjRfc2k2
NA0KKyNkZWZpbmUgX21fcGFja3Nzd2IgX21tX3BhY2tzX3BpMTYNCisjZGVmaW5lIF9tX3BhY2tz
c2R3IF9tbV9wYWNrc19waTMyDQorI2RlZmluZSBfbV9wYWNrdXN3YiBfbW1fcGFja3NfcHUxNg0K
KyNkZWZpbmUgX21fcHVucGNraGJ3IF9tbV91bnBhY2toaV9waTgNCisjZGVmaW5lIF9tX3B1bnBj
a2h3ZCBfbW1fdW5wYWNraGlfcGkxNg0KKyNkZWZpbmUgX21fcHVucGNraGRxIF9tbV91bnBhY2to
aV9waTMyDQorI2RlZmluZSBfbV9wdW5wY2tsYncgX21tX3VucGFja2xvX3BpOA0KKyNkZWZpbmUg
X21fcHVucGNrbHdkIF9tbV91bnBhY2tsb19waTE2DQorI2RlZmluZSBfbV9wdW5wY2tsZHEgX21t
X3VucGFja2xvX3BpMzINCisjZGVmaW5lIF9tX3BhZGRiIF9tbV9hZGRfcGk4DQorI2RlZmluZSBf
bV9wYWRkdyBfbW1fYWRkX3BpMTYNCisjZGVmaW5lIF9tX3BhZGRkIF9tbV9hZGRfcGkzMg0KKyNk
ZWZpbmUgX21fcGFkZHNiIF9tbV9hZGRzX3BpOA0KKyNkZWZpbmUgX21fcGFkZHN3IF9tbV9hZGRz
X3BpMTYNCisjZGVmaW5lIF9tX3BhZGR1c2IgX21tX2FkZHNfcHU4DQorI2RlZmluZSBfbV9wYWRk
dXN3IF9tbV9hZGRzX3B1MTYNCisjZGVmaW5lIF9tX3BzdWJiIF9tbV9zdWJfcGk4DQorI2RlZmlu
ZSBfbV9wc3VidyBfbW1fc3ViX3BpMTYNCisjZGVmaW5lIF9tX3BzdWJkIF9tbV9zdWJfcGkzMg0K
KyNkZWZpbmUgX21fcHN1YnNiIF9tbV9zdWJzX3BpOA0KKyNkZWZpbmUgX21fcHN1YnN3IF9tbV9z
dWJzX3BpMTYNCisjZGVmaW5lIF9tX3BzdWJ1c2IgX21tX3N1YnNfcHU4DQorI2RlZmluZSBfbV9w
c3VidXN3IF9tbV9zdWJzX3B1MTYNCisjZGVmaW5lIF9tX3BtYWRkd2QgX21tX21hZGRfcGkxNg0K
KyNkZWZpbmUgX21fcG11bGh3IF9tbV9tdWxoaV9waTE2DQorI2RlZmluZSBfbV9wbXVsbHcgX21t
X211bGxvX3BpMTYNCisjZGVmaW5lIF9tX3BzbGx3IF9tbV9zbGxfcGkxNg0KKyNkZWZpbmUgX21f
cHNsbHdpIF9tbV9zbGxpX3BpMTYNCisjZGVmaW5lIF9tX3BzbGxkIF9tbV9zbGxfcGkzMg0KKyNk
ZWZpbmUgX21fcHNsbGRpIF9tbV9zbGxpX3BpMzINCisjZGVmaW5lIF9tX3BzbGxxIF9tbV9zbGxf
c2k2NA0KKyNkZWZpbmUgX21fcHNsbHFpIF9tbV9zbGxpX3NpNjQNCisjZGVmaW5lIF9tX3BzcmF3
IF9tbV9zcmFfcGkxNg0KKyNkZWZpbmUgX21fcHNyYXdpIF9tbV9zcmFpX3BpMTYNCisjZGVmaW5l
IF9tX3BzcmFkIF9tbV9zcmFfcGkzMg0KKyNkZWZpbmUgX21fcHNyYWRpIF9tbV9zcmFpX3BpMzIN
CisjZGVmaW5lIF9tX3Bzcmx3IF9tbV9zcmxfcGkxNg0KKyNkZWZpbmUgX21fcHNybHdpIF9tbV9z
cmxpX3BpMTYNCisjZGVmaW5lIF9tX3BzcmxkIF9tbV9zcmxfcGkzMg0KKyNkZWZpbmUgX21fcHNy
bGRpIF9tbV9zcmxpX3BpMzINCisjZGVmaW5lIF9tX3BzcmxxIF9tbV9zcmxfc2k2NA0KKyNkZWZp
bmUgX21fcHNybHFpIF9tbV9zcmxpX3NpNjQNCisjZGVmaW5lIF9tX3BhbmQgX21tX2FuZF9zaTY0
DQorI2RlZmluZSBfbV9wYW5kbiBfbW1fYW5kbm90X3NpNjQNCisjZGVmaW5lIF9tX3BvciBfbW1f
b3Jfc2k2NA0KKyNkZWZpbmUgX21fcHhvciBfbW1feG9yX3NpNjQNCisjZGVmaW5lIF9tX3BjbXBl
cWIgX21tX2NtcGVxX3BpOA0KKyNkZWZpbmUgX21fcGNtcGVxdyBfbW1fY21wZXFfcGkxNg0KKyNk
ZWZpbmUgX21fcGNtcGVxZCBfbW1fY21wZXFfcGkzMg0KKyNkZWZpbmUgX21fcGNtcGd0YiBfbW1f
Y21wZ3RfcGk4DQorI2RlZmluZSBfbV9wY21wZ3R3IF9tbV9jbXBndF9waTE2DQorI2RlZmluZSBf
bV9wY21wZ3RkIF9tbV9jbXBndF9waTMyDQorDQorI2VuZGlmIC8qIF9fTU1JTlRSSU5fSCAqLw0K
Kw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbm1taW50cmluLmggYi9pbmNsdWRlL25tbWludHJpbi5o
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMzQ4ZmI4Yw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvaW5jbHVkZS9ubW1pbnRyaW4uaA0KQEAgLTAsMCArMSwzMCBAQA0KKy8qPT09
LS0tLSBubW1pbnRyaW4uaCAtIFNTRTQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCisgKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCisgKiB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
ciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0
IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu
DQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
DQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KKyAqIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB
QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCisgKiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG
Uk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBUSEUgU09GVFdBUkUuDQorICoNCisgKj09
PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lmbmRlZiBfX05NTUlOVFJJTl9IDQorI2Rl
ZmluZSBfX05NTUlOVFJJTl9IDQorDQorLyogVG8gbWF0Y2ggZXhwZWN0YXRpb25zIG9mIGdjYyB3
ZSBwdXQgdGhlIHNzZTQuMiBkZWZpbml0aW9ucyBpbnRvIHNtbWludHJpbi5oLA0KKyAgIGp1c3Qg
aW5jbHVkZSBpdCBub3cgdGhlbi4gICovDQorI2luY2x1ZGUgPHNtbWludHJpbi5oPg0KKyNlbmRp
ZiAvKiBfX05NTUlOVFJJTl9IICovDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wbW1pbnRyaW4uaCBi
L2luY2x1ZGUvcG1taW50cmluLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw
Li4yNGI3ZDY4DQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL3BtbWludHJpbi5oDQpAQCAt
MCwwICsxLDMyMSBAQA0KKy8qPT09LS0tLSBwbW1pbnRyaW4uaCAtIFNTRTMgaW50cmluc2ljcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1pc3Np
b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp
bmluZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2Fy
ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0K
KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIN
CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S
IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBUSEUg
U09GVFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lmbmRl
ZiBfX1BNTUlOVFJJTl9IDQorI2RlZmluZSBfX1BNTUlOVFJJTl9IDQorDQorI2luY2x1ZGUgPGVt
bWludHJpbi5oPg0KKw0KKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUg
ZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCisjaWZkZWYgX19HTlVDX18NCisjZGVmaW5lIF9f
REVGQVVMVF9GTl9BVFRSUyBcDQorICBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19h
bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KKyNkZWZpbmUgX19ERUZB
VUxUX0ZOX0FUVFJTIFwNCisgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXywgX190YXJnZXRfXygic3NlMyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkN
CisjZW5kaWYNCisNCisvLy8gTG9hZHMgZGF0YSBmcm9tIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9j
YXRpb24gdG8gZWxlbWVudHMgaW4gYSAxMjgtYml0DQorLy8vICAgIHZlY3Rvci4NCisvLy8NCisv
Ly8gICAgSWYgdGhlIGFkZHJlc3Mgb2YgdGhlIGRhdGEgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwg
dGhlIGluc3RydWN0aW9uIG1heQ0KKy8vLyAgICByZWFkIHR3byBhZGphY2VudCBhbGlnbmVkIGJs
b2NrcyBvZiBtZW1vcnkgdG8gcmV0cmlldmUgdGhlIHJlcXVlc3RlZA0KKy8vLyAgICBkYXRhLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkxERFFVIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIGludGVnZXIgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sZGRxdV9zaTEyOChfX20xMjhp
IGNvbnN0ICpfX3ApDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2xkZHF1
KChjaGFyIGNvbnN0ICopX19wKTsNCit9DQorDQorLy8vIEFkZHMgdGhlIGV2ZW4taW5kZXhlZCB2
YWx1ZXMgYW5kIHN1YnRyYWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQorLy8vICAgIHR3
byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQUREU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhl
IGxlZnQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFu
ZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBhbHRlcm5hdGluZyBzdW1zIGFuZA0KKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3Ro
IG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fYWRkc3ViX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX2FkZHN1YnBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0K
Ky8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRh
aW5lZCBpbiB0d28NCisvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhv
cml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMg
b2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFy
ZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIGhvcml6b250YWwgc3VtcyBvZg0KKy8vLyAgICBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1faGFkZF9wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9oYWRkcHMoKF9f
djRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIEhvcml6b250YWxseSBzdWJ0cmFj
dHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gdHdvDQorLy8vICAg
IDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZIU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2Vz
IGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlcg0KKy8vLyAgICBiaXRz
IG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVl
cyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlcg0KKy8vLyAgICBiaXRzIG9mIHRoZSBkZXN0aW5hdGlv
bi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBob3Jpem9udGFsDQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9oc3Vi
X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X2hzdWJwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gTW92ZXMgYW5k
IGR1cGxpY2F0ZXMgb2RkLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3Rvcg0KKy8v
LyAgICBvZiBbNCB4IGZsb2F0XSB0byBmbG9hdCB2YWx1ZXMgc3RvcmVkIGluIGEgMTI4LWJpdCB2
ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WU0hEVVAgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBcbg0KKy8vLyAgICBCaXRz
IFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBhbmQg
Wzk1OjY0XSBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzYz
OjMyXSBvZiB0aGUgc291cmNlIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBhbmQgWzMxOjBd
IG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVwbGljYXRlZA0K
Ky8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9tb3ZlaGR1cF9wcyhfX20xMjggX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18N
CisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZzaGR1cCAoKF9fdjRzZilfX2Ep
Ow0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2Es
IChfX3Y0c2YpX19hLCAxLCAxLCAzLCAzKTsNCisjZW5kaWYNCit9DQorDQorLy8vIER1cGxpY2F0
ZXMgZXZlbi1pbmRleGVkIHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAg
WzQgeCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNMRFVQIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBcbg0KKy8vLyAgICBCaXRzIFs5NTo2NF0gb2YgdGhlIHNv
dXJjZSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mDQorLy8vICAg
IHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBh
cmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUNCisvLy8gICAgZGVz
dGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbW92ZWxkdXBf
cHMoX19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkg
X19idWlsdGluX2lhMzJfbW92c2xkdXAgKChfX3Y0c2YpX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJu
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMCwg
MiwgMik7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBBZGRzIHRoZSBldmVuLWluZGV4ZWQgdmFsdWVz
IGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBvZg0KKy8vLyAgICB0d28gMTI4
LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZBRERTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxl
ZnQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIGFsdGVybmF0aW5nIHN1bXMNCisvLy8gICAgYW5kIGRpZmZlcmVuY2VzIG9mIGJvdGgg
b3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fYWRkc3ViX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4g
X19idWlsdGluX2lhMzJfYWRkc3VicGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQor
DQorLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGlu
IHR3byAxMjgtYml0DQorLy8vICAgIHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9u
dGFsIHN1bSBvZiB0aGUgdmFsdWVzIGlzIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZiB0aGUN
CisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgc3VtIG9mIHRoZSB2YWx1ZXMgaXMgc3RvcmVk
IGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaG9y
aXpvbnRhbCBzdW1zIG9mDQorLy8vICAgIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1faGFkZF9wZChfX20xMjhkIF9fYSwg
X19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hhZGRwZCgoX192MmRm
KV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0
aGUgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28gMTI4LWJpdA0KKy8vLyAgICB2ZWN0
b3JzIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZIU1VC
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1
ZXMgaXMgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlv
bi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUg
aG9yaXpvbnRhbCBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1ZXMgaXMgc3RvcmVkIGluIHRoZSB1cHBl
ciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbA0KKy8v
LyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2hzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEy
OGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9oc3VicGQoKF9fdjJkZilfX2Es
IChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIE1vdmVzIGFuZCBkdXBsaWNhdGVzIG9uZSBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlIHRvIGRvdWJsZS1wcmVjaXNpb24NCisvLy8gICAgdmFsdWVzIHN0
b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhkIF9t
bV9sb2FkZHVwX3BkKGRvdWJsZSBjb25zdCAqZHApOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBkcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIHRvIGJlIG1vdmVkIGFuZCBkdXBsaWNhdGVkLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBt
b3ZlZCBhbmQNCisvLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuDQorI2RlZmluZSAgICAgICAgX21t
X2xvYWRkdXBfcGQoZHApICAgICAgICBfbW1fbG9hZDFfcGQoZHApDQorDQorLy8vIE1vdmVzIGFu
ZCBkdXBsaWNhdGVzIHRoZSBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGluIHRoZSBsb3dlciBiaXRz
IG9mDQorLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWVzIHN0b3JlZCBpbiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMNCisv
Ly8gICAgWzEyNzo2NF0gYW5kIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVk
IGFuZA0KKy8vLyAgICBkdXBsaWNhdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tb3ZlZHVwX3BkKF9fbTEyOGQgX19hKQ0KK3sN
CisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiBfbW1fc2h1ZmZsZV9wZCAoX19hLCBfX2EsIF9N
TV9TSFVGRkxFMiAoMCwwKSk7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZl
Y3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2EsIDAsIDApOw0KKyNlbmRpZg0KK30NCisNCisv
Ly8gRXN0YWJsaXNoZXMgYSBsaW5lYXIgYWRkcmVzcyBtZW1vcnkgcmFuZ2UgdG8gYmUgbW9uaXRv
cmVkIGFuZCBwdXRzDQorLy8vICAgIHRoZSBwcm9jZXNzb3IgaW4gdGhlIG1vbml0b3IgZXZlbnQg
cGVuZGluZyBzdGF0ZS4gRGF0YSBzdG9yZWQgaW4gdGhlDQorLy8vICAgIG1vbml0b3JlZCBhZGRy
ZXNzIHJhbmdlIGNhdXNlcyB0aGUgcHJvY2Vzc29yIHRvIGV4aXQgdGhlIHBlbmRpbmcgc3RhdGUu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT05JVE9SIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgVGhlIG1lbW9yeSByYW5nZSB0byBiZSBt
b25pdG9yZWQuIFRoZSBzaXplIG9mIHRoZSByYW5nZSBpcyBkZXRlcm1pbmVkIGJ5DQorLy8vICAg
IENQVUlEIGZ1bmN0aW9uIDAwMDBfMDAwNWguDQorLy8vIFxwYXJhbSBfX2V4dGVuc2lvbnMNCisv
Ly8gICAgT3B0aW9uYWwgZXh0ZW5zaW9ucyBmb3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUuDQorLy8v
IFxwYXJhbSBfX2hpbnRzDQorLy8vICAgIE9wdGlvbmFsIGhpbnRzIGZvciB0aGUgbW9uaXRvcmlu
ZyBzdGF0ZS4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9tb25pdG9yKHZvaWQgY29uc3QgKl9fcCwgdW5zaWduZWQgX19leHRlbnNpb25zLCB1bnNpZ25l
ZCBfX2hpbnRzKQ0KK3sNCisgIF9fYnVpbHRpbl9pYTMyX21vbml0b3IoKHZvaWQgKilfX3AsIF9f
ZXh0ZW5zaW9ucywgX19oaW50cyk7DQorfQ0KKw0KKy8vLyBVc2VkIHdpdGggdGhlIE1PTklUT1Ig
aW5zdHJ1Y3Rpb24gdG8gd2FpdCB3aGlsZSB0aGUgcHJvY2Vzc29yIGlzIGluDQorLy8vICAgIHRo
ZSBtb25pdG9yIGV2ZW50IHBlbmRpbmcgc3RhdGUuIERhdGEgc3RvcmVkIGluIHRoZSBtb25pdG9y
ZWQgYWRkcmVzcw0KKy8vLyAgICByYW5nZSBjYXVzZXMgdGhlIHByb2Nlc3NvciB0byBleGl0IHRo
ZSBwZW5kaW5nIHN0YXRlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTVdBSVQgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fZXh0ZW5zaW9ucw0KKy8vLyAgICBP
cHRpb25hbCBleHRlbnNpb25zIGZvciB0aGUgbW9uaXRvcmluZyBzdGF0ZSwgd2hpY2ggbWF5IHZh
cnkgYnkNCisvLy8gICAgcHJvY2Vzc29yLg0KKy8vLyBccGFyYW0gX19oaW50cw0KKy8vLyAgICBP
cHRpb25hbCBoaW50cyBmb3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUsIHdoaWNoIG1heSB2YXJ5IGJ5
IHByb2Nlc3Nvci4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9td2FpdCh1bnNpZ25lZCBfX2V4dGVuc2lvbnMsIHVuc2lnbmVkIF9faGludHMpDQorew0K
KyAgX19idWlsdGluX2lhMzJfbXdhaXQoX19leHRlbnNpb25zLCBfX2hpbnRzKTsNCit9DQorDQor
I3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKw0KKyNlbmRpZiAvKiBfX1BNTUlOVFJJTl9IICov
DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wb3BjbnRpbnRyaW4uaCBiL2luY2x1ZGUvcG9wY250aW50
cmluLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5iYmEwNTczDQotLS0g
L2Rldi9udWxsDQorKysgYi9pbmNsdWRlL3BvcGNudGludHJpbi5oDQpAQCAtMCwwICsxLDEwMiBA
QA0KKy8qPT09LS0tLSBwb3BjbnRpbnRyaW4uaCAtIFBPUENOVCBpbnRyaW5zaWNzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkN
CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCisgKiB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F
TlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCisgKiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBUSEUgU09GVFdBUkUuDQor
ICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lmbmRlZiBfX1BPUENOVElO
VFJJTl9IDQorI2RlZmluZSBfX1BPUENOVElOVFJJTl9IDQorDQorLyogRGVmaW5lIHRoZSBkZWZh
dWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KKyNpZmRl
ZiBfX0dOVUNfXw0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9f
Z251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNl
DQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s
aW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJwb3BjbnQiKSkpDQorI2VuZGlmDQorDQor
Ly8vIENvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIHNvdXJjZSBvcGVyYW5kIGhhdmlu
ZyBhIHZhbHVlIG9mIDEuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQT1BDTlQgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fQQ0KKy8vLyAgICBBbiB1bnNpZ25l
ZCAzMi1iaXQgaW50ZWdlciBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2Vy
IGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdpdGggdmFsdWUgMSBpbiB0aGUNCisvLy8g
ICAgc291cmNlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9wb3BjbnRfdTMyKHVuc2lnbmVkIGludCBfX0EpDQorew0KKyAgcmV0dXJuIF9f
YnVpbHRpbl9wb3Bjb3VudChfX0EpOw0KK30NCisNCisvLy8gQ291bnRzIHRoZSBudW1iZXIgb2Yg
Yml0cyBpbiB0aGUgc291cmNlIG9wZXJhbmQgaGF2aW5nIGEgdmFsdWUgb2YgMS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19BDQorLy8vICAgIEEgc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQor
Ly8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGJp
dHMgd2l0aCB2YWx1ZSAxIGluIHRoZQ0KKy8vLyAgICBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMg
X19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX3BvcGNudDMyKGludCBfX0EpDQor
ew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudChfX0EpOw0KK30NCisNCisjaWZkZWYgX194
ODZfNjRfXw0KKy8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ugb3Bl
cmFuZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
UE9QQ05UIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX0ENCisvLy8gICAg
QW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZC4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgYml0cyB3aXRoIHZhbHVlIDEgaW4g
dGhlDQorLy8vICAgIHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9u
ZyBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fcG9wY250X3U2NCh1bnNpZ25lZCBsb25nIGxvbmcg
X19BKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnRsbChfX0EpOw0KK30NCisNCisv
Ly8gQ291bnRzIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgc291cmNlIG9wZXJhbmQgaGF2aW5n
IGEgdmFsdWUgb2YgMS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19BDQorLy8vICAgIEEgc2lnbmVkIDY0
LWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29u
dGFpbmluZyB0aGUgbnVtYmVyIG9mIGJpdHMgd2l0aCB2YWx1ZSAxIGluIHRoZQ0KKy8vLyAgICBz
b3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX3BvcGNudDY0KGxvbmcgbG9uZyBfX0EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRp
bl9wb3Bjb3VudGxsKF9fQSk7DQorfQ0KKyNlbmRpZiAvKiBfX3g4Nl82NF9fICovDQorDQorI3Vu
ZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKw0KKyNlbmRpZiAvKiBfX1BPUENOVElOVFJJTl9IICov
DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zbW1pbnRyaW4uaCBiL2luY2x1ZGUvc21taW50cmluLmgN
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi40ZjFkNjM3DQotLS0gL2Rldi9u
dWxsDQorKysgYi9pbmNsdWRlL3NtbWludHJpbi5oDQpAQCAtMCwwICsxLDI1MDQgQEANCisvKj09
PS0tLS0gc21taW50cmluLmggLSBTU0U0IGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPT09DQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQorICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwNCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzDQorICogdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbA0KKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u
cyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp
bg0KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
Lg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCisgKiBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUNCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ
QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQorICogTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwNCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElODQorICogVEhFIFNPRlRXQVJFLg0KKyAqDQorICo9
PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAqLw0KKw0KKyNpZm5kZWYgX19TTU1JTlRSSU5fSA0KKyNk
ZWZpbmUgX19TTU1JTlRSSU5fSA0KKw0KKyNpbmNsdWRlIDx0bW1pbnRyaW4uaD4NCisNCisvKiBE
ZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZp
bGUuICovDQorI2lmZGVmIF9fR05VQ19fDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19h
dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp
YWxfXykpDQorI2Vsc2UNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTQuMSIpLCBf
X21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkNCisjZW5kaWYNCisNCisvKiBTU0U0IFJvdW5kaW5n
IG1hY3Jvcy4gKi8NCisjZGVmaW5lIF9NTV9GUk9VTkRfVE9fTkVBUkVTVF9JTlQgICAgMHgwMA0K
KyNkZWZpbmUgX01NX0ZST1VORF9UT19ORUdfSU5GICAgICAgICAweDAxDQorI2RlZmluZSBfTU1f
RlJPVU5EX1RPX1BPU19JTkYgICAgICAgIDB4MDINCisjZGVmaW5lIF9NTV9GUk9VTkRfVE9fWkVS
TyAgICAgICAgICAgMHgwMw0KKyNkZWZpbmUgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OICAgICAw
eDA0DQorDQorI2RlZmluZSBfTU1fRlJPVU5EX1JBSVNFX0VYQyAgICAgICAgIDB4MDANCisjZGVm
aW5lIF9NTV9GUk9VTkRfTk9fRVhDICAgICAgICAgICAgMHgwOA0KKw0KKyNkZWZpbmUgX01NX0ZS
T1VORF9OSU5UICAgICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9UT19ORUFS
RVNUX0lOVCkNCisjZGVmaW5lIF9NTV9GUk9VTkRfRkxPT1IgICAgIChfTU1fRlJPVU5EX1JBSVNF
X0VYQyB8IF9NTV9GUk9VTkRfVE9fTkVHX0lORikNCisjZGVmaW5lIF9NTV9GUk9VTkRfQ0VJTCAg
ICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9GUk9VTkRfVE9fUE9TX0lORikNCisjZGVm
aW5lIF9NTV9GUk9VTkRfVFJVTkMgICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9GUk9V
TkRfVE9fWkVSTykNCisjZGVmaW5lIF9NTV9GUk9VTkRfUklOVCAgICAgIChfTU1fRlJPVU5EX1JB
SVNFX0VYQyB8IF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikNCisjZGVmaW5lIF9NTV9GUk9VTkRf
TkVBUkJZSU5UIChfTU1fRlJPVU5EX05PX0VYQyB8IF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikN
CisNCisvLy8gUm91bmRzIHVwIGVhY2ggZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gdG8gYW4NCisvLy8gICAgaW50ZWdlciBhbmQgcmV0dXJucyB0aGUgcm91bmRl
ZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8v
LyBfX20xMjggX21tX2NlaWxfcHMoX19tMTI4IFgpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIC8gUk9VTkRQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHZhbHVlcyB0byBiZSByb3VuZGVkIHVwLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJv
dW5kZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX2NlaWxfcHMoWCkgICAgICAgX21tX3JvdW5kX3Bz
KChYKSwgX01NX0ZST1VORF9DRUlMKQ0KKw0KKy8vLyBSb3VuZHMgdXAgZWFjaCBlbGVtZW50IG9m
IHRoZSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYW4NCisvLy8gICAgaW50ZWdl
ciBhbmQgcmV0dXJucyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0K
Ky8vLyAgICBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fY2VpbF9wZChfX20xMjhkIFgp
Ow0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZST1VORFBEIC8gUk9VTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB2YWx1
ZXMgdG8gYmUgcm91bmRlZCB1cC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1f
Y2VpbF9wZChYKSAgICAgICBfbW1fcm91bmRfcGQoKFgpLCBfTU1fRlJPVU5EX0NFSUwpDQorDQor
Ly8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0
b3Igb3BlcmFuZCB0bw0KKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyB0aHJlZSB1cHBlciBlbGVt
ZW50cyBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRd
LiBSb3VuZHMgdXAgdGhlIGxvd2VzdCBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0
b3INCisvLy8gICAgb3BlcmFuZCB0byBhbiBpbnRlZ2VyIGFuZCBjb3BpZXMgaXQgdG8gdGhlIGxv
d2VzdCBlbGVtZW50IG9mIHRoZSAxMjgtYml0DQorLy8vICAgIHJlc3VsdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gXGNvZGUNCisvLy8gX19tMTI4IF9tbV9jZWlsX3NzKF9fbTEyOCBYLCBfX20xMjggWSk7DQor
Ly8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlJPVU5EU1MgLyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1
ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlDQorLy8vICAgIGNvcGllZCB0byB0aGUgY29y
cmVzcG9uZGluZyBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBb
MzE6MF0gaXMNCisvLy8gICAgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBj
b3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cw0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIGNvcGllZCBhbmQgcm91bmRlZA0KKy8vLyAgICB2YWx1ZXMuDQorI2RlZmluZSBfbW1fY2Vp
bF9zcyhYLCBZKSAgICBfbW1fcm91bmRfc3MoKFgpLCAoWSksIF9NTV9GUk9VTkRfQ0VJTCkNCisN
CisvLy8gQ29waWVzIHRoZSB1cHBlciBlbGVtZW50IG9mIHRoZSBmaXJzdCAxMjgtYml0IHZlY3Rv
ciBvcGVyYW5kIHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHVwcGVyIGVsZW1lbnQgb2Yg
dGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vICAgIFJvdW5k
cyB1cCB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yIG9wZXJh
bmQgdG8gYW4NCisvLy8gICAgaW50ZWdlciBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlciBlbGVt
ZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3INCisvLy8gICAgb2YgWzIgeCBkb3VibGVd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2Rl
DQorLy8vIF9fbTEyOGQgX21tX2NlaWxfc2QoX19tMTI4ZCBYLCBfX20xMjhkIFkpOw0KKy8vLyBc
ZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZST1VORFNEIC8gUk9VTkRTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
WA0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHZhbHVlIHN0
b3JlZCBpbiBiaXRzIFsxMjc6NjRdIGlzDQorLy8vICAgIGNvcGllZCB0byB0aGUgY29ycmVzcG9u
ZGluZyBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzYzOjBd
IGlzDQorLy8vICAgIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBhbmQgY29waWVk
IHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMNCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
Y29waWVkIGFuZCByb3VuZGVkDQorLy8vICAgIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9jZWlsX3Nk
KFgsIFkpICAgIF9tbV9yb3VuZF9zZCgoWCksIChZKSwgX01NX0ZST1VORF9DRUlMKQ0KKw0KKy8v
LyBSb3VuZHMgZG93biBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIHRvIGFuDQorLy8vICAgIGFuIGludGVnZXIgYW5kIHJldHVybnMgdGhlIHJvdW5kZWQg
dmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8g
X19tMTI4IF9tbV9mbG9vcl9wcyhfX20xMjggWCk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUFMgLyBST1VORFBT
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdmFsdWVzIHRvIGJlIHJvdW5kZWQgZG93bi4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBy
b3VuZGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9mbG9vcl9wcyhYKSAgICAgIF9tbV9yb3VuZF9w
cygoWCksIF9NTV9GUk9VTkRfRkxPT1IpDQorDQorLy8vIFJvdW5kcyBkb3duIGVhY2ggZWxlbWVu
dCBvZiB0aGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGFuDQorLy8vICAgIGlu
dGVnZXIgYW5kIHJldHVybnMgdGhlIHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YNCisvLy8gICAgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGQgX21tX2Zsb29yX3BkKF9fbTEy
OGQgWCk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQgLyBST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9mbG9vcl9wZChYKSAgICAgIF9t
bV9yb3VuZF9wZCgoWCksIF9NTV9GUk9VTkRfRkxPT1IpDQorDQorLy8vIENvcGllcyB0aHJlZSB1
cHBlciBlbGVtZW50cyBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bw0KKy8v
LyAgICB0aGUgY29ycmVzcG9uZGluZyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgMTI4LWJp
dCByZXN1bHQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRdLiBSb3VuZHMgZG93biB0aGUg
bG93ZXN0IGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3Rvcg0KKy8vLyAgICBvcGVy
YW5kIHRvIGFuIGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2Yg
dGhlIDEyOC1iaXQNCisvLy8gICAgcmVzdWx0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBf
X20xMjggX21tX2Zsb29yX3NzKF9fbTEyOCBYLCBfX20xMjggWSk7DQorLy8vIFxlbmRjb2RlDQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1Mg
LyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJp
dHMgWzEyNzozMl0gYXJlDQorLy8vICAgIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRz
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMNCisvLy8g
ICAgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYW5kIGNvcGllZCB0byB0aGUg
Y29ycmVzcG9uZGluZyBiaXRzDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIGFu
ZCByb3VuZGVkDQorLy8vICAgIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9mbG9vcl9zcyhYLCBZKSAg
IF9tbV9yb3VuZF9zcygoWCksIChZKSwgX01NX0ZST1VORF9GTE9PUikNCisNCisvLy8gQ29waWVz
IHRoZSB1cHBlciBlbGVtZW50IG9mIHRoZSBmaXJzdCAxMjgtYml0IHZlY3RvciBvcGVyYW5kIHRv
IHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHVwcGVyIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQg
cmVzdWx0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vICAgIFJvdW5kcyBkb3duIHRoZSBs
b3dlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byBhbg0K
Ky8vLyAgICBpbnRlZ2VyIGFuZCBjb3BpZXMgaXQgdG8gdGhlIGxvd2VyIGVsZW1lbnQgb2YgdGhl
IDEyOC1iaXQgcmVzdWx0IHZlY3Rvcg0KKy8vLyAgICBvZiBbMiB4IGRvdWJsZV0uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19t
MTI4ZCBfbW1fZmxvb3Jfc2QoX19tMTI4ZCBYLCBfX20xMjhkIFkpOw0KKy8vLyBcZW5kY29kZQ0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFNE
IC8gUk9VTkRTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBi
aXRzIFsxMjc6NjRdIGlzDQorLy8vICAgIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRz
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzYzOjBdIGlzDQorLy8v
ICAgIHJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhl
IGNvcnJlc3BvbmRpbmcgYml0cw0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQg
YW5kIHJvdW5kZWQNCisvLy8gICAgdmFsdWVzLg0KKyNkZWZpbmUgX21tX2Zsb29yX3NkKFgsIFkp
ICAgX21tX3JvdW5kX3NkKChYKSwgKFkpLCBfTU1fRlJPVU5EX0ZMT09SKQ0KKw0KKy8vLyBSb3Vu
ZHMgZWFjaCBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBh
bg0KKy8vLyAgICBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJv
bCBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZA0KKy8vLyAgICBhcmd1bWVudCBhbmQgcmV0dXJucyB0
aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBc
Y29kZQ0KKy8vLyBfX20xMjggX21tX3JvdW5kX3BzKF9fbTEyOCBYLCBjb25zdCBpbnQgTSk7DQor
Ly8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlJPVU5EUFMgLyBST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxw
YXJhbSBNDQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5k
aW5nIG9wZXJhdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNzo0XSBhcmUgcmVzZXJ2ZWQuIFxuDQor
Ly8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbg0KKy8vLyAg
ICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuDQorLy8vICAgICAgMTogVGhl
IFBFIGZpZWxkIGlzIG5vdCB1cGRhdGVkIFxuDQorLy8vICAgIEJpdCBbMl0gaXMgdGhlIHJvdW5k
aW5nIGNvbnRyb2wgc291cmNlOiBcbg0KKy8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxh
IE0gXG4NCisvLy8gICAgICAxOiBVc2UgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZyBcbg0KKy8v
LyAgICBCaXRzIFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjog
XG4NCisvLy8gICAgICAwMDogTmVhcmVzdCBcbg0KKy8vLyAgICAgIDAxOiBEb3dud2FyZCAodG93
YXJkIG5lZ2F0aXZlIGluZmluaXR5KSBcbg0KKy8vLyAgICAgIDEwOiBVcHdhcmQgKHRvd2FyZCBw
b3NpdGl2ZSBpbmZpbml0eSkgXG4NCisvLy8gICAgICAxMTogVHJ1bmNhdGVkDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcm91bmRl
ZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1fcm91bmRfcHMoWCwgTSkgXA0KKyAgKF9fbTEyOClfX2J1
aWx0aW5faWEzMl9yb3VuZHBzKChfX3Y0c2YpKF9fbTEyOCkoWCksIChNKSkNCisNCisvLy8gQ29w
aWVzIHRocmVlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSBmaXJzdCAxMjgtYml0IHZlY3RvciBvcGVy
YW5kIHRvDQorLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHRocmVlIHVwcGVyIGVsZW1lbnRzIG9m
IHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5k
cyB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3Rvcg0KKy8vLyAg
ICBvcGVyYW5kIHRvIGFuIGludGVnZXIgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBj
b250cm9sIHNwZWNpZmllZA0KKy8vLyAgICBieSB0aGUgdGhpcmQgYXJndW1lbnQgYW5kIGNvcGll
cyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQNCisvLy8gICAgcmVzdWx0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjggX21tX3JvdW5kX3NzKF9fbTEyOCBY
LCBfX20xMjggWSwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFNTIC8gUk9VTkRTUyA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdmFsdWVzIHN0b3JlZCBpbiBiaXRzIFsxMjc6MzJdIGFy
ZQ0KKy8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gWQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzMxOjBdIGlzDQorLy8vICAgIHJvdW5kZWQgdG8g
dGhlIG5lYXJlc3QgaW50ZWdlciB1c2luZyB0aGUgc3BlY2lmaWVkIHJvdW5kaW5nIGNvbnRyb2wg
YW5kDQorLy8vICAgIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIG9mIHRoZSByZXN1
bHQuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZp
ZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNzo0XSBhcmUgcmVz
ZXJ2ZWQuIFxuDQorLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVl
OiBcbg0KKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuDQorLy8v
ICAgICAgMTogVGhlIFBFIGZpZWxkIGlzIG5vdCB1cGRhdGVkIFxuDQorLy8vICAgIEJpdCBbMl0g
aXMgdGhlIHJvdW5kaW5nIGNvbnRyb2wgc291cmNlOiBcbg0KKy8vLyAgICAgIDA6IFVzZSBiaXRz
IFsxOjBdIG9mIFxhIE0gXG4NCisvLy8gICAgICAxOiBVc2UgdGhlIGN1cnJlbnQgTVhDU1Igc2V0
dGluZyBcbg0KKy8vLyAgICBCaXRzIFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wg
ZGVmaW5pdGlvbjogXG4NCisvLy8gICAgICAwMDogTmVhcmVzdCBcbg0KKy8vLyAgICAgIDAxOiBE
b3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGluZmluaXR5KSBcbg0KKy8vLyAgICAgIDEwOiBVcHdh
cmQgKHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkgXG4NCisvLy8gICAgICAxMTogVHJ1bmNhdGVk
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29waWVkIGFuZCByb3VuZGVkDQorLy8vICAgIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9y
b3VuZF9zcyhYLCBZLCBNKSBcDQorICAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JvdW5kc3MoKF9f
djRzZikoX19tMTI4KShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChf
X3Y0c2YpKF9fbTEyOCkoWSksIChNKSkNCisNCisvLy8gUm91bmRzIGVhY2ggZWxlbWVudCBvZiB0
aGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGFuDQorLy8vICAgIGludGVnZXIg
dmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBjb250cm9sIHNwZWNpZmllZCBieSB0aGUg
c2Vjb25kDQorLy8vICAgIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBp
biBhIDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhk
IF9tbV9yb3VuZF9wZChfX20xMjhkIFgsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCAv
IFJPVU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAg
IEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4g
XG4NCisvLy8gICAgQml0cyBbNzo0XSBhcmUgcmVzZXJ2ZWQuIFxuDQorLy8vICAgIEJpdCBbM10g
aXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbg0KKy8vLyAgICAgIDA6IEEgbm9ybWFs
IFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuDQorLy8vICAgICAgMTogVGhlIFBFIGZpZWxkIGlzIG5v
dCB1cGRhdGVkIFxuDQorLy8vICAgIEJpdCBbMl0gaXMgdGhlIHJvdW5kaW5nIGNvbnRyb2wgc291
cmNlOiBcbg0KKy8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCisvLy8gICAg
ICAxOiBVc2UgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZyBcbg0KKy8vLyAgICBCaXRzIFsxOjBd
IGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4NCisvLy8gICAgICAw
MDogTmVhcmVzdCBcbg0KKy8vLyAgICAgIDAxOiBEb3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGlu
ZmluaXR5KSBcbg0KKy8vLyAgICAgIDEwOiBVcHdhcmQgKHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0
eSkgXG4NCisvLy8gICAgICAxMTogVHJ1bmNhdGVkDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLg0KKyNk
ZWZpbmUgX21tX3JvdW5kX3BkKFgsIE0pIFwNCisgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3Jv
dW5kcGQoKF9fdjJkZikoX19tMTI4ZCkoWCksIChNKSkNCisNCisvLy8gQ29waWVzIHRoZSB1cHBl
ciBlbGVtZW50IG9mIHRoZSBmaXJzdCAxMjgtYml0IHZlY3RvciBvcGVyYW5kIHRvIHRoZQ0KKy8v
LyAgICBjb3JyZXNwb25kaW5nIHVwcGVyIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vICAgIFJvdW5kcyB0aGUgbG93ZXIgZWxlbWVudCBv
ZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gYW4NCisvLy8gICAgaW50ZWdl
ciB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJvdW5kaW5nIGNvbnRyb2wgc3BlY2lmaWVkIGJ5IHRo
ZSB0aGlyZA0KKy8vLyAgICBhcmd1bWVudCBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlciBlbGVt
ZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3INCisvLy8gICAgb2YgWzIgeCBkb3VibGVd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2Rl
DQorLy8vIF9fbTEyOGQgX21tX3JvdW5kX3NkKF9fbTEyOGQgWCwgX19tMTI4ZCBZLCBjb25zdCBp
bnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlJPVU5EU0QgLyBST1VORFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
LiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzEyNzo2NF0gaXMNCisvLy8gICAgY29waWVkIHRv
IHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIFkNCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQg
aW4gYml0cyBbNjM6MF0gaXMNCisvLy8gICAgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2Vy
IHVzaW5nIHRoZSBzcGVjaWZpZWQgcm91bmRpbmcgY29udHJvbCBhbmQNCisvLy8gICAgY29waWVk
IHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIE0N
CisvLy8gICAgQW4gaW50ZWdlciB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgcm91bmRpbmcgb3Bl
cmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4NCisvLy8gICAg
Qml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQorLy8vICAgICAgMDog
QSBub3JtYWwgUEUgZXhjZXB0aW9uIGlzIHVzZWQgXG4NCisvLy8gICAgICAxOiBUaGUgUEUgZmll
bGQgaXMgbm90IHVwZGF0ZWQgXG4NCisvLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29u
dHJvbCBzb3VyY2U6IFxuDQorLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEgTSBcbg0K
Ky8vLyAgICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nIFxuDQorLy8vICAgIEJp
dHMgWzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KKy8v
LyAgICAgIDAwOiBOZWFyZXN0IFxuDQorLy8vICAgICAgMDE6IERvd253YXJkICh0b3dhcmQgbmVn
YXRpdmUgaW5maW5pdHkpIFxuDQorLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZl
IGluZmluaXR5KSBcbg0KKy8vLyAgICAgIDExOiBUcnVuY2F0ZWQNCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCBy
b3VuZGVkDQorLy8vICAgIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9yb3VuZF9zZChYLCBZLCBNKSBc
DQorICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9yb3VuZHNkKChfX3YyZGYpKF9fbTEyOGQpKFgp
LCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQp
KFkpLCAoTSkpDQorDQorLyogU1NFNCBQYWNrZWQgQmxlbmRpbmcgSW50cmluc2ljcy4gICovDQor
Ly8vIFJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hlcmUgdGhlIHZh
bHVlcyBhcmUNCisvLy8gICAgc2VsZWN0ZWQgZnJvbSBlaXRoZXIgdGhlIGZpcnN0IG9yIHNlY29u
ZCBvcGVyYW5kIGFzIHNwZWNpZmllZCBieSB0aGUNCisvLy8gICAgdGhpcmQgb3BlcmFuZCwgdGhl
IGNvbnRyb2wgbWFzay4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhkIF9tbV9ibGVuZF9wZChfX20xMjhkIFYxLCBfX20x
MjhkIFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUEQgLyBCTEVORFBEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIFYyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUg
aW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbMTowXSBzcGVjaWZ5aW5nIGhvdyB0aGUN
CisvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFz
ayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQorLy8vICAgIGluZGV4IG9mIGEgY29waWVkIHZhbHVl
LiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0DQorLy8vICAg
IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24g
aW4gdGhlIHJlc3VsdC4NCisvLy8gICAgV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNw
b25kaW5nIDY0LWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjINCisvLy8gICAgaXMgY29waWVk
IHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMu
DQorI2RlZmluZSBfbW1fYmxlbmRfcGQoVjEsIFYyLCBNKSBcDQorICAoX19tMTI4ZCkgX19idWls
dGluX2lhMzJfYmxlbmRwZCAoKF9fdjJkZikoX19tMTI4ZCkoVjEpLCBcDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCkoVjIpLCAoaW50KShNKSkN
CisNCisvLy8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdoZXJlIHRo
ZSB2YWx1ZXMgYXJlIHNlbGVjdGVkDQorLy8vICAgIGZyb20gZWl0aGVyIHRoZSBmaXJzdCBvciBz
ZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlIHRoaXJkDQorLy8vICAgIG9wZXJhbmQs
IHRoZSBjb250cm9sIG1hc2suDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4IF9tbV9ibGVuZF9wcyhfX20xMjggVjEsIF9f
bTEyOCBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFBTIC8gQkxFTkRQUyA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIFYyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBp
bnRlZ2VyIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFszOjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0K
Ky8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNr
IGJpdCBjb3JyZXNwb25kcyB0byB0aGUNCisvLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUu
IFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQNCisvLy8gICAg
ZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBp
biB0aGUgcmVzdWx0Lg0KKy8vLyAgICBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3Bv
bmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMg0KKy8vLyAgICBpcyBjb3BpZWQg
dG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0K
KyNkZWZpbmUgX21tX2JsZW5kX3BzKFYxLCBWMiwgTSkgXA0KKyAgKF9fbTEyOCkgX19idWlsdGlu
X2lhMzJfYmxlbmRwcyAoKF9fdjRzZikoX19tMTI4KShWMSksIFwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVjIpLCAoaW50KShNKSkNCisNCisv
Ly8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aGVyZSB0aGUgdmFs
dWVzIGFyZQ0KKy8vLyAgICBzZWxlY3RlZCBmcm9tIGVpdGhlciB0aGUgZmlyc3Qgb3Igc2Vjb25k
IG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZQ0KKy8vLyAgICB0aGlyZCBvcGVyYW5kLCB0aGUg
Y29udHJvbCBtYXNrLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EVlBEIC8g
QkxFTkRWUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVjENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX1YyDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19N
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMTI3IGFu
ZCA2MyBzcGVjaWZ5aW5nIGhvdyB0aGUNCisvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQu
IFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQorLy8vICAg
IG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQg
aXMgMCwgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFu
ZCBcYSBfX1YxIGlzIGNvcGllZCB0byB0aGUgc2FtZQ0KKy8vLyAgICBwb3NpdGlvbiBpbiB0aGUg
cmVzdWx0LiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0DQor
Ly8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YyIGlzIGNvcGllZCB0byB0aGUgc2FtZSBw
b3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2JsZW5kdl9wZCAoX19tMTI4
ZCBfX1YxLCBfX20xMjhkIF9fVjIsIF9fbTEyOGQgX19NKQ0KK3sNCisgIHJldHVybiAoX19tMTI4
ZCkgX19idWlsdGluX2lhMzJfYmxlbmR2cGQgKChfX3YyZGYpX19WMSwgKF9fdjJkZilfX1YyLA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZilfX00p
Ow0KK30NCisNCisvLy8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdo
ZXJlIHRoZSB2YWx1ZXMgYXJlDQorLy8vICAgIHNlbGVjdGVkIGZyb20gZWl0aGVyIHRoZSBmaXJz
dCBvciBzZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlDQorLy8vICAgIHRoaXJkIG9w
ZXJhbmQsIHRoZSBjb250cm9sIG1hc2suDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
QkxFTkRWUFMgLyBCTEVORFZQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFy
YW0gX19WMg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBc
cGFyYW0gX19NDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJp
dHMgMTI3LCA5NSwgNjMsIGFuZCAzMSBzcGVjaWZ5aW5nDQorLy8vICAgIGhvdyB0aGUgdmFsdWVz
IGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9u
ZHMNCisvLy8gICAgdG8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVl
LiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgMzItYml0
IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YxIGlzIGNvcGllZCB0byB0aGUgc2FtZQ0KKy8vLyAg
ICBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0LiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJl
c3BvbmRpbmcgMzItYml0DQorLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YyIGlzIGNv
cGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9i
bGVuZHZfcHMgKF9fbTEyOCBfX1YxLCBfX20xMjggX19WMiwgX19tMTI4IF9fTSkNCit7DQorICBy
ZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfYmxlbmR2cHMgKChfX3Y0c2YpX19WMSwgKF9f
djRzZilfX1YyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
X192NHNmKV9fTSk7DQorfQ0KKw0KKy8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2
IHggaThdIHdoZXJlIHRoZSB2YWx1ZXMgYXJlIHNlbGVjdGVkDQorLy8vICAgIGZyb20gZWl0aGVy
IG9mIHRoZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlIHRoaXJk
DQorLy8vICAgIG9wZXJhbmQsIHRoZSBjb250cm9sIG1hc2suDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUEJMRU5EVkIgLyBQQkxFTkRWQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4N
CisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0u
DQorLy8vIFxwYXJhbSBfX00NCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvcGVyYW5kLCB3aXRo
IG1hc2sgYml0cyAxMjcsIDExOSwgMTExLi4uNyBzcGVjaWZ5aW5nDQorLy8vICAgIGhvdyB0aGUg
dmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29y
cmVzcG9uZHMNCisvLy8gICAgdG8gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgY29waWVk
IHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcg
OC1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lDQor
Ly8vICAgIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUg
Y29ycmVzcG9uZGluZyA4LWJpdA0KKy8vLyAgICBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19WMiBp
cyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgY29waWVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9ibGVuZHZfZXBpOCAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIsIF9fbTEyOGkgX19NKQ0K
K3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcGJsZW5kdmIxMjggKChfX3Yx
NnFpKV9fVjEsIChfX3YxNnFpKV9fVjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoX192MTZxaSlfX00pOw0KK30NCisNCisvLy8gUmV0dXJucyBhIDEy
OC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSB3aGVyZSB0aGUgdmFsdWVzIGFyZSBzZWxlY3RlZA0K
Ky8vLyAgICBmcm9tIGVpdGhlciBvZiB0aGUgZmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3Bl
Y2lmaWVkIGJ5IHRoZSB0aGlyZA0KKy8vLyAgICBvcGVyYW5kLCB0aGUgY29udHJvbCBtYXNrLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQor
Ly8vIF9fbTEyOGkgX21tX2JsZW5kX2VwaTE2KF9fbTEyOGkgVjEsIF9fbTEyOGkgVjIsIGNvbnN0
IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUEJMRU5EVyAvIFBCTEVORFcgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZd
Lg0KKy8vLyBccGFyYW0gVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0u
DQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdp
dGggbWFzayBiaXRzIFs3OjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0KKy8vLyAgICB2YWx1ZXMgYXJl
IHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0
byB0aGUNCisvLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBp
cyAwLCB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQNCisvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5k
IFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KKy8v
LyAgICBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0IGVsZW1l
bnQgaW4gb3BlcmFuZCBcYSBWMg0KKy8vLyAgICBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRp
b24gaW4gdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4
IGkxNl0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9ibGVuZF9l
cGkxNihWMSwgVjIsIE0pIFwNCisgIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wYmxlbmR3MTI4
ICgoX192OGhpKShfX20xMjhpKShWMSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoX192OGhpKShfX20xMjhpKShWMiksIChpbnQpKE0pKQ0KKw0KKy8qIFNTRTQg
RHdvcmQgTXVsdGlwbHkgSW5zdHJ1Y3Rpb25zLiAgKi8NCisvLy8gTXVsdGlwbGVzIGNvcnJlc3Bv
bmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkzMl0NCisvLy8g
ICAgYW5kIHJldHVybnMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIGVhY2ggcHJvZHVjdCBpbiBh
IDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQTVVMTEQgLyBQTVVMTEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBc
cGFyYW0gX19WMg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBi
b3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9tdWxsb19lcGkzMiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpDQorew0K
KyAgcmV0dXJuIChfX20xMjhpKSAoKF9fdjRzdSlfX1YxICogKF9fdjRzdSlfX1YyKTsNCit9DQor
DQorLy8vIE11bHRpcGxpZXMgY29ycmVzcG9uZGluZyBldmVuLWluZGV4ZWQgZWxlbWVudHMgb2Yg
dHdvIDEyOC1iaXQNCisvLy8gICAgdmVjdG9ycyBvZiBbNCB4IGkzMl0gYW5kIHJldHVybnMgYSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0NCisvLy8gICAgY29udGFpbmluZyB0aGUgcHJvZHVj
dHMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTERRIC8gUE1VTERRIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdLg0KKy8vLyBccGFyYW0gX19WMg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggaTMyXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGk2NF0gY29udGFpbmluZyB0aGUgcHJvZHVjdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5k
cy4NCitzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
bXVsX2VwaTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCit7DQorICByZXR1cm4gKF9f
bTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtdWxkcTEyOCAoKF9fdjRzaSlfX1YxLCAoX192NHNpKV9f
VjIpOw0KK30NCisNCisvKiBTU0U0IEZsb2F0aW5nIFBvaW50IERvdCBQcm9kdWN0IEluc3RydWN0
aW9ucy4gICovDQorLy8vIENvbXB1dGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0aGUgdHdvIDEyOC1i
aXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XQ0KKy8vLyAgICBhbmQgcmV0dXJucyBpdCBpbiB0aGUg
ZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gICAgVGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgY29udHJv
bHMgd2hpY2ggaW5wdXQgZWxlbWVudHMNCisvLy8gICAgd2lsbCBjb250cmlidXRlIHRvIHRoZSBk
b3QgcHJvZHVjdCwgYW5kIHdoZXJlIHRoZSBmaW5hbCByZXN1bHRzIGFyZQ0KKy8vLyAgICByZXR1
cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBc
Y29kZQ0KKy8vLyBfX20xMjggX21tX2RwX3BzKF9fbTEyOCBYLCBfX20xMjggWSwgY29uc3QgaW50
IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZEUFBTIC8gRFBQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gWA0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBc
cGFyYW0gWQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBc
cGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLiBNYXNrIGJpdHMg
Wzc6NF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzDQorLy8vICAgIG9mIHRoZSBpbnB1dCB2ZWN0
b3JzIGFyZSB1c2VkLCB3aXRoIGJpdCBbNF0gY29ycmVzcG9uZGluZyB0byB0aGUgbG93ZXN0DQor
Ly8vICAgIGVsZW1lbnQgYW5kIGJpdCBbN10gY29ycmVzcG9uZGluZyB0byB0aGUgaGlnaGVzdCBl
bGVtZW50IG9mIGVhY2ggWzQgeA0KKy8vLyAgICBmbG9hdF0gdmVjdG9yLiBJZiBhIGJpdCBpcyBz
ZXQsIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGZyb20gdGhlIHR3bw0KKy8vLyAgICBpbnB1
dCB2ZWN0b3JzIGFyZSB1c2VkIGFzIGFuIGlucHV0IGZvciBkb3QgcHJvZHVjdDsgb3RoZXJ3aXNl
IHRoYXQgaW5wdXQNCisvLy8gICAgaXMgdHJlYXRlZCBhcyB6ZXJvLiBCaXRzIFszOjBdIGRldGVy
bWluZSB3aGljaCBlbGVtZW50cyBvZiB0aGUgcmVzdWx0DQorLy8vICAgIHdpbGwgcmVjZWl2ZSBh
IGNvcHkgb2YgdGhlIGZpbmFsIGRvdCBwcm9kdWN0LCB3aXRoIGJpdCBbMF0gY29ycmVzcG9uZGlu
Zw0KKy8vLyAgICB0byB0aGUgbG93ZXN0IGVsZW1lbnQgYW5kIGJpdCBbM10gY29ycmVzcG9uZGlu
ZyB0byB0aGUgaGlnaGVzdCBlbGVtZW50IG9mDQorLy8vICAgIGVhY2ggWzQgeCBmbG9hdF0gc3Vi
dmVjdG9yLiBJZiBhIGJpdCBpcyBzZXQsIHRoZSBkb3QgcHJvZHVjdCBpcyByZXR1cm5lZA0KKy8v
LyAgICBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50OyBvdGhlcndpc2UgdGhhdCBlbGVtZW50
IGlzIHNldCB0byB6ZXJvLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRvdCBwcm9kdWN0Lg0KKyNkZWZpbmUgX21tX2RwX3BzKFgs
IFksIE0pIFwNCisgIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2RwcHMoKF9fdjRzZikoX19tMTI4
KShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgp
KFkpLCAoTSkpDQorDQorLy8vIENvbXB1dGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0aGUgdHdvIDEy
OC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0NCisvLy8gICAgYW5kIHJldHVybnMgaXQgaW4g
dGhlIGVsZW1lbnRzIG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCisvLy8gICAgWzIg
eCBkb3VibGVdLg0KKy8vLw0KKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBj
b250cm9scyB3aGljaCBpbnB1dA0KKy8vLyAgICBlbGVtZW50cyB3aWxsIGNvbnRyaWJ1dGUgdG8g
dGhlIGRvdCBwcm9kdWN0LCBhbmQgd2hlcmUgdGhlIGZpbmFsIHJlc3VsdHMNCisvLy8gICAgYXJl
IHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFxjb2RlDQorLy8vIF9fbTEyOGQgX21tX2RwX3BkKF9fbTEyOGQgWCwgX19tMTI4ZCBZLCBj
b25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRQUEQgLyBEUFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KKy8vLyBccGFyYW0gWQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4g
TWFzayBiaXRzIFs1OjRdIGRldGVybWluZSB3aGljaCBlbGVtZW50cw0KKy8vLyAgICBvZiB0aGUg
aW5wdXQgdmVjdG9ycyBhcmUgdXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGxvd2VzdA0KKy8vLyAgICBlbGVtZW50IGFuZCBiaXQgWzVdIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGhpZ2hlc3QgZWxlbWVudCBvZiBlYWNoIG9mIFsyIHgNCisvLy8gICAgZG91YmxlXSB2ZWN0b3Iu
IElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgdHdv
DQorLy8vICAgIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQgYXMgYW4gaW5wdXQgZm9yIGRvdCBwcm9k
dWN0OyBvdGhlcndpc2UgdGhhdCBpbnB1dA0KKy8vLyAgICBpcyB0cmVhdGVkIGFzIHplcm8uIEJp
dHMgWzE6MF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mIHRoZSByZXN1bHQNCisvLy8gICAg
d2lsbCByZWNlaXZlIGEgY29weSBvZiB0aGUgZmluYWwgZG90IHByb2R1Y3QsIHdpdGggYml0IFsw
XSBjb3JyZXNwb25kaW5nDQorLy8vICAgIHRvIHRoZSBsb3dlc3QgZWxlbWVudCBhbmQgYml0IFsx
XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YNCisvLy8gICAgZWFjaCBb
MiB4IGRvdWJsZV0gdmVjdG9yLiBJZiBhIGJpdCBpcyBzZXQsIHRoZSBkb3QgcHJvZHVjdCBpcyBy
ZXR1cm5lZCBpbg0KKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50OyBvdGhlcndpc2Ug
dGhhdCBlbGVtZW50IGlzIHNldCB0byB6ZXJvLg0KKyNkZWZpbmUgX21tX2RwX3BkKFgsIFksIE0p
IFwNCisgIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9kcHBkKChfX3YyZGYpKF9fbTEyOGQpKFgp
LCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShZ
KSwgKE0pKQ0KKw0KKy8qIFNTRTQgU3RyZWFtaW5nIExvYWQgSGludCBJbnN0cnVjdGlvbi4gICov
DQorLy8vIExvYWRzIGludGVnZXIgdmFsdWVzIGZyb20gYSAxMjgtYml0IGFsaWduZWQgbWVtb3J5
IGxvY2F0aW9uIHRvIGENCisvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVERRQSAvIE1PVk5URFFBIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJp
dCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBpbnRlZ2VyDQorLy8v
ICAgIHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIGRhdGEgc3RvcmVkIGF0IHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgbWVtb3J5IGxv
Y2F0aW9uLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9zdHJlYW1fbG9hZF9zaTEyOCAoX19tMTI4aSBjb25zdCAqX19WKQ0KK3sNCisjaWZkZWYg
X19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfbW92bnRkcWEgKChf
X3YyZGkgKikgX19WKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5fbm9u
dGVtcG9yYWxfbG9hZCAoKGNvbnN0IF9fdjJkaSAqKSBfX1YpOw0KKyNlbmRpZg0KK30NCisNCisv
KiBTU0U0IFBhY2tlZCBJbnRlZ2VyIE1pbi9NYXggSW5zdHJ1Y3Rpb25zLiAgKi8NCisvLy8gQ29t
cGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBv
Zg0KKy8vLyAgICBbMTYgeCBpOF0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYg
eCBpOF0gY29udGFpbmluZyB0aGUgbGVzc2VyDQorLy8vICAgIG9mIHRoZSB0d28gdmFsdWVzLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5TQiAvIFBNSU5TQiA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsxNiB4IGk4XS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMTYgeCBpOF0NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBp
OF0gY29udGFpbmluZyB0aGUgbGVzc2VyIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyAgX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbWluX2VwaTggKF9fbTEyOGkgX19WMSwgX19t
MTI4aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnNi
MTI4ICgoX192MTZxaSkgX19WMSwgKF9fdjE2cWkpIF9fVjIpOw0KK30NCisNCisvLy8gQ29tcGFy
ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0K
Ky8vLyAgICBbMTYgeCBpOF0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBp
OF0gY29udGFpbmluZyB0aGUNCisvLy8gICAgZ3JlYXRlciB2YWx1ZSBvZiB0aGUgdHdvLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhTQiAvIFBNQVhTQiA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsxNiB4IGk4XS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMTYgeCBpOF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThd
IGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXhfZXBpOCAoX19tMTI4aSBfX1YxLCBfX20x
MjhpIF9fVjIpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbWF4c2Ix
MjggKChfX3YxNnFpKSBfX1YxLCAoX192MTZxaSkgX19WMik7DQorfQ0KKw0KKy8vLyBDb21wYXJl
cyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQor
Ly8vICAgIFs4IHggdTE2XSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggdTE2
XSBjb250YWluaW5nIHRoZSBsZXNzZXINCisvLy8gICAgdmFsdWUgb2YgdGhlIHR3by4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOVVcgLyBQTUlOVVcgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
OCB4IHUxNl0uDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzggeCB1MTZdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggdTE2XSBj
b250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5fZXB1MTYgKF9fbTEyOGkgX19WMSwgX19tMTI4
aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnV3MTI4
ICgoX192OGhpKSBfX1YxLCAoX192OGhpKSBfX1YyKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8g
ICAgWzggeCB1MTZdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdIGNv
bnRhaW5pbmcgdGhlDQorLy8vICAgIGdyZWF0ZXIgdmFsdWUgb2YgdGhlIHR3by4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFYVVcgLyBQTUFYVVcgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4
IHUxNl0uDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzgg
eCB1MTZdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggdTE2XSBjb250
YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbWF4X2VwdTE2IChfX20xMjhpIF9fVjEsIF9fbTEyOGkg
X19WMikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtYXh1dzEyOCAo
KF9fdjhoaSkgX19WMSwgKF9fdjhoaSkgX19WMik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUg
Y29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAg
IFs0IHggaTMyXSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250
YWluaW5nIHRoZSBsZXNzZXINCisvLy8gICAgdmFsdWUgb2YgdGhlIHR3by4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOU0QgLyBQTUlOU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkz
Ml0uDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MzJdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWlu
aW5nIHRoZSBsZXNzZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9taW5fZXBpMzIgKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1Yy
KQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnNkMTI4ICgoX192
NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBjb3Jy
ZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzQg
eCBpMzJdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5p
bmcgdGhlDQorLy8vICAgIGdyZWF0ZXIgdmFsdWUgb2YgdGhlIHR3by4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZQTUFYU0QgLyBQTUFYU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0u
DQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJd
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5n
IHRoZSBncmVhdGVyIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fbWF4X2VwaTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikN
Cit7DQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtYXhzZDEyOCAoKF9fdjRz
aSkgX19WMSwgKF9fdjRzaSkgX19WMik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgY29ycmVz
cG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs0IHgg
dTMyXSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXSBjb250YWluaW5n
IHRoZSBsZXNzZXINCisvLy8gICAgdmFsdWUgb2YgdGhlIHR3by4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQTUlOVUQgLyBQTUlOVUQgPC9jPiAgaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdLg0K
Ky8vLyBccGFyYW0gX19WMg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0gY29udGFpbmluZyB0
aGUgbGVzc2VyIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fbWluX2VwdTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCit7
DQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtaW51ZDEyOCgoX192NHNpKSBf
X1YxLCAoX192NHNpKSBfX1YyKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzQgeCB1MzJd
IGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhl
DQorLy8vICAgIGdyZWF0ZXIgdmFsdWUgb2YgdGhlIHR3by4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQTUFYVUQgLyBQTUFYVUQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0uDQorLy8v
IFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXSBjb250YWluaW5nIHRoZSBn
cmVhdGVyIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fbWF4X2VwdTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCit7DQor
ICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtYXh1ZDEyOCgoX192NHNpKSBfX1Yx
LCAoX192NHNpKSBfX1YyKTsNCit9DQorDQorLyogU1NFNCBJbnNlcnRpb24gYW5kIEV4dHJhY3Rp
b24gZnJvbSBYTU0gUmVnaXN0ZXIgSW5zdHJ1Y3Rpb25zLiAgKi8NCisvLy8gVGFrZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IFxhIFggYW5kIGluc2VydHMgYW4gZWxlbWVudCBmcm9tIHRoZSBzZWNvbmQN
CisvLy8gICAgYXJndW1lbnQgXGEgWSBhcyBzZWxlY3RlZCBieSB0aGUgdGhpcmQgYXJndW1lbnQg
XGEgTi4gVGhhdCByZXN1bHQgdGhlbg0KKy8vLyAgICBoYXMgZWxlbWVudHMgemVyb2VkIG91dCBh
bHNvIGFzIHNlbGVjdGVkIGJ5IHRoZSB0aGlyZCBhcmd1bWVudCBcYSBOLiBUaGUNCisvLy8gICAg
cmVzdWx0aW5nIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGlzIHRoZW4gcmV0dXJuZWQu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUN
CisvLy8gX19tMTI4IF9tbV9pbnNlcnRfcHMoX19tMTI4IFgsIF9fbTEyOCBZLCBjb25zdCBpbnQg
Tik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVklOU0VSVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igc291cmNlIG9wZXJhbmQgb2YgWzQgeCBmbG9h
dF0uIFdpdGggdGhlIGV4Y2VwdGlvbiBvZg0KKy8vLyAgICB0aG9zZSBiaXRzIGluIHRoZSByZXN1
bHQgY29waWVkIGZyb20gcGFyYW1ldGVyIFxhIFkgYW5kIHplcm9lZCBieSBiaXRzDQorLy8vICAg
IFszOjBdIG9mIFxhIE4sIGFsbCBiaXRzIGZyb20gdGhpcyBwYXJhbWV0ZXIgYXJlIGNvcGllZCB0
byB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gWQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIHNv
dXJjZSBvcGVyYW5kIG9mIFs0IHggZmxvYXRdLiBPbmUgc2luZ2xlLXByZWNpc2lvbg0KKy8vLyAg
ICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGZyb20gdGhpcyBzb3VyY2UsIGFzIGRldGVybWluZWQg
YnkgdGhlIGltbWVkaWF0ZQ0KKy8vLyAgICBwYXJhbWV0ZXIsIGlzIGNvcGllZCB0byB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gTg0KKy8vLyAgICBTcGVjaWZpZXMgd2hpY2ggYml0cyBmcm9tIG9w
ZXJhbmQgXGEgWSB3aWxsIGJlIGNvcGllZCwgd2hpY2ggYml0cyBpbiB0aGUNCisvLy8gICAgcmVz
dWx0IHRoZXkgd2lsbCBiZSBiZSBjb3BpZWQgdG8sIGFuZCB3aGljaCBiaXRzIGluIHRoZSByZXN1
bHQgd2lsbCBiZQ0KKy8vLyAgICBjbGVhcmVkLiBUaGUgZm9sbG93aW5nIGFzc2lnbm1lbnRzIGFy
ZSBtYWRlOiBcbg0KKy8vLyAgICBCaXRzIFs3OjZdIHNwZWNpZnkgdGhlIGJpdHMgdG8gY29weSBm
cm9tIG9wZXJhbmQgXGEgWTogXG4NCisvLy8gICAgICAwMDogU2VsZWN0cyBiaXRzIFszMTowXSBm
cm9tIG9wZXJhbmQgXGEgWS4gXG4NCisvLy8gICAgICAwMTogU2VsZWN0cyBiaXRzIFs2MzozMl0g
ZnJvbSBvcGVyYW5kIFxhIFkuIFxuDQorLy8vICAgICAgMTA6IFNlbGVjdHMgYml0cyBbOTU6NjRd
IGZyb20gb3BlcmFuZCBcYSBZLiBcbg0KKy8vLyAgICAgIDExOiBTZWxlY3RzIGJpdHMgWzEyNzo5
Nl0gZnJvbSBvcGVyYW5kIFxhIFkuIFxuDQorLy8vICAgIEJpdHMgWzU6NF0gc3BlY2lmeSB0aGUg
Yml0cyBpbiB0aGUgcmVzdWx0IHRvIHdoaWNoIHRoZSBzZWxlY3RlZCBiaXRzDQorLy8vICAgIGZy
b20gb3BlcmFuZCBcYSBZIGFyZSBjb3BpZWQ6IFxuDQorLy8vICAgICAgMDA6IENvcGllcyB0aGUg
c2VsZWN0ZWQgYml0cyBmcm9tIFxhIFkgdG8gcmVzdWx0IGJpdHMgWzMxOjBdLiBcbg0KKy8vLyAg
ICAgIDAxOiBDb3BpZXMgdGhlIHNlbGVjdGVkIGJpdHMgZnJvbSBcYSBZIHRvIHJlc3VsdCBiaXRz
IFs2MzozMl0uIFxuDQorLy8vICAgICAgMTA6IENvcGllcyB0aGUgc2VsZWN0ZWQgYml0cyBmcm9t
IFxhIFkgdG8gcmVzdWx0IGJpdHMgWzk1OjY0XS4gXG4NCisvLy8gICAgICAxMTogQ29waWVzIHRo
ZSBzZWxlY3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0cyBbMTI3Ojk2XS4gXG4NCisv
Ly8gICAgQml0c1szOjBdOiBJZiBhbnkgb2YgdGhlc2UgYml0cyBhcmUgc2V0LCB0aGUgY29ycmVz
cG9uZGluZyByZXN1bHQNCisvLy8gICAgZWxlbWVudCBpcyBjbGVhcmVkLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZA0K
Ky8vLyAgICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gdGhl
IG9wZXJhbmRzLg0KKyNkZWZpbmUgX21tX2luc2VydF9wcyhYLCBZLCBOKSBfX2J1aWx0aW5faWEz
Ml9pbnNlcnRwczEyOCgoWCksIChZKSwgKE4pKQ0KKw0KKy8vLyBFeHRyYWN0cyBhIDMyLWJpdCBp
bnRlZ2VyIGZyb20gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBhbmQNCisvLy8gICAg
cmV0dXJucyBpdCwgdXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBh
IHNlbGVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFxjb2RlDQorLy8vIGludCBfbW1fZXh0cmFjdF9wcyhfX20xMjggWCwgY29uc3QgaW50IE4p
Ow0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZFWFRSQUNUUFMgLyBFWFRSQUNUUFMgPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4NCisvLy8gXHBhcmFtIE4NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsx
OjBdIGRldGVybWluZXMgd2hpY2ggYml0cyBmcm9tIHRoZSBhcmd1bWVudA0KKy8vLyAgICBcYSBY
IGFyZSBleHRyYWN0ZWQgYW5kIHJldHVybmVkOiBcbg0KKy8vLyAgICAwMDogQml0cyBbMzE6MF0g
b2YgcGFyYW1ldGVyIFxhIFggYXJlIHJldHVybmVkLiBcbg0KKy8vLyAgICAwMTogQml0cyBbNjM6
MzJdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSByZXR1cm5lZC4gXG4NCisvLy8gICAgMTA6IEJpdHMg
Wzk1OjY0XSBvZiBwYXJhbWV0ZXIgXGEgWCBhcmUgcmV0dXJuZWQuIFxuDQorLy8vICAgIDExOiBC
aXRzIFsxMjc6OTZdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSByZXR1cm5lZC4NCisvLy8gXHJldHVy
bnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgMzIgYml0cyBvZiBm
bG9hdCBkYXRhLg0KKyNkZWZpbmUgX21tX2V4dHJhY3RfcHMoWCwgTikgKF9fZXh0ZW5zaW9uX18g
ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgKHsgdW5pb24geyBpbnQgX19pOyBmbG9hdCBfX2Y7
IH0gX190OyAgXA0KKyAgICAgX190Ll9fZiA9IF9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRzZigo
X192NHNmKShfX20xMjgpKFgpLCAoaW50KShOKSk7IFwNCisgICAgIF9fdC5fX2k7fSkpDQorDQor
LyogTWlzY2VsbGFuZW91cyBpbnNlcnQgYW5kIGV4dHJhY3QgbWFjcm9zLiAgKi8NCisvKiBFeHRy
YWN0IGEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdCBmcm9tIFggYXQgaW5kZXggTiBpbnRvIEQuICAq
Lw0KKyNkZWZpbmUgX01NX0VYVFJBQ1RfRkxPQVQoRCwgWCwgTikgXA0KKyAgeyAoRCkgPSBfX2J1
aWx0aW5faWEzMl92ZWNfZXh0X3Y0c2YoKF9fdjRzZikoX19tMTI4KShYKSwgKGludCkoTikpOyB9
DQorDQorLyogT3IgdG9nZXRoZXIgMiBzZXRzIG9mIGluZGV4ZXMgKFggYW5kIFkpIHdpdGggdGhl
IHplcm9pbmcgYml0cyAoWikgdG8gY3JlYXRlDQorICAgYW4gaW5kZXggc3VpdGFibGUgZm9yIF9t
bV9pbnNlcnRfcHMuICAqLw0KKyNkZWZpbmUgX01NX01LX0lOU0VSVFBTX05EWChYLCBZLCBaKSAo
KChYKSA8PCA2KSB8ICgoWSkgPDwgNCkgfCAoWikpDQorDQorLyogRXh0cmFjdCBhIGZsb2F0IGZy
b20gWCBhdCBpbmRleCBOIGludG8gdGhlIGZpcnN0IGluZGV4IG9mIHRoZSByZXR1cm4uICAqLw0K
KyNkZWZpbmUgX01NX1BJQ0tfT1VUX1BTKFgsIE4pIF9tbV9pbnNlcnRfcHMgKF9tbV9zZXR6ZXJv
X3BzKCksIChYKSwgICBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX01NX01LX0lOU0VSVFBTX05EWCgoTiksIDAsIDB4MGUpKQ0KKw0KKy8qIEluc2VydCBp
bnQgaW50byBwYWNrZWQgaW50ZWdlciBhcnJheSBhdCBpbmRleC4gICovDQorLy8vIENvbnN0cnVj
dHMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gYnkgZmlyc3QgbWFraW5nIGEgY29weSBv
Zg0KKy8vLyAgICB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0ZXIsIGFuZCB0aGVu
IGluc2VydGluZyB0aGUgbG93ZXIgOCBiaXRzDQorLy8vICAgIG9mIGFuIGludGVnZXIgcGFyYW1l
dGVyIFxhIEkgaW50byBhbiBvZmZzZXQgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUNCisvLy8g
ICAgdmFsdWUgcGFyYW1ldGVyIFxhIE4uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBfbW1faW5zZXJ0X2VwaTgoX19t
MTI4aSBYLCBpbnQgSSwgY29uc3QgaW50IE4pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQSU5TUkIgLyBQSU5TUkIgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhpcyB2ZWN0b3IgaXMgY29waWVkIHRvIHRoZQ0K
Ky8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBzaXh0ZWVuIGVsZW1lbnRzIGluIHRo
ZSByZXN1bHQgdmVjdG9yIGlzDQorLy8vICAgIHJlcGxhY2VkIGJ5IHRoZSBsb3dlciA4IGJpdHMg
b2YgXGEgSS4NCisvLy8gXHBhcmFtIEkNCisvLy8gICAgQW4gaW50ZWdlci4gVGhlIGxvd2VyIDgg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHdyaXR0ZW4gdG8gdGhlIHJlc3VsdA0KKy8vLyAgICBi
ZWdpbm5pbmcgYXQgdGhlIG9mZnNldCBzcGVjaWZpZWQgYnkgXGEgTi4NCisvLy8gXHBhcmFtIE4N
CisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFszOjBdIHNwZWNpZnkgdGhlIGJpdCBv
ZmZzZXQgaW4gdGhlIHJlc3VsdCBhdA0KKy8vLyAgICB3aGljaCB0aGUgbG93ZXIgOCBiaXRzIG9m
IFxhIEkgYXJlIHdyaXR0ZW4uIFxuDQorLy8vICAgIDAwMDA6IEJpdHMgWzc6MF0gb2YgdGhlIHJl
c3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KKy8vLyAgICAwMDAxOiBCaXRzIFsxNTo4
XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDAwMTA6
IEJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQor
Ly8vICAgIDAwMTE6IEJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNl
cnRpb24uIFxuDQorLy8vICAgIDAxMDA6IEJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0IGFyZSB1
c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDAxMDE6IEJpdHMgWzQ3OjQwXSBvZiB0aGUg
cmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDAxMTA6IEJpdHMgWzU1
OjQ4XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDAx
MTE6IEJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxu
DQorLy8vICAgIDEwMDA6IEJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBp
bnNlcnRpb24uIFxuDQorLy8vICAgIDEwMDE6IEJpdHMgWzc5OjcyXSBvZiB0aGUgcmVzdWx0IGFy
ZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDEwMTA6IEJpdHMgWzg3OjgwXSBvZiB0
aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDEwMTE6IEJpdHMg
Wzk1Ojg4XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAg
IDExMDA6IEJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9u
LiBcbg0KKy8vLyAgICAxMTAxOiBCaXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2Vk
IGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDExMTA6IEJpdHMgWzExOToxMTJdIG9mIHRoZSBy
ZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMTExMTogQml0cyBbMTI3
OjEyMF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uc3RydWN0ZWQgdmFs
dWVzLg0KKyNkZWZpbmUgX21tX2luc2VydF9lcGk4KFgsIEksIE4pIFwNCisgIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3ZlY19zZXRfdjE2cWkoKF9fdjE2cWkpKF9fbTEyOGkpKFgpLCBcDQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEkpLCAoaW50KShOKSkN
CisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBieSBmaXJz
dCBtYWtpbmcgYSBjb3B5IG9mDQorLy8vICAgIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBh
cmFtZXRlciwgYW5kIHRoZW4gaW5zZXJ0aW5nIHRoZSAzMi1iaXQNCisvLy8gICAgaW50ZWdlciBw
YXJhbWV0ZXIgXGEgSSBhdCB0aGUgb2Zmc2V0IHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIHZh
bHVlDQorLy8vICAgIHBhcmFtZXRlciBcYSBOLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGkgX21tX2luc2VydF9lcGkz
MihfX20xMjhpIFgsIGludCBJLCBjb25zdCBpbnQgTik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBJTlNSRCAvIFBJTlNS
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8g
dGhlDQorLy8vICAgIHJlc3VsdCBhbmQgdGhlbiBvbmUgb2YgdGhlIGZvdXIgZWxlbWVudHMgaW4g
dGhlIHJlc3VsdCB2ZWN0b3IgaXMNCisvLy8gICAgcmVwbGFjZWQgYnkgXGEgSS4NCisvLy8gXHBh
cmFtIEkNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB0aGF0IGlzIHdyaXR0ZW4gdG8gdGhlIHJl
c3VsdCBiZWdpbm5pbmcgYXQgdGhlIG9mZnNldA0KKy8vLyAgICBzcGVjaWZpZWQgYnkgXGEgTi4N
CisvLy8gXHBhcmFtIE4NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsxOjBdIHNw
ZWNpZnkgdGhlIGJpdCBvZmZzZXQgaW4gdGhlIHJlc3VsdCBhdA0KKy8vLyAgICB3aGljaCB0aGUg
aW50ZWdlciBcYSBJIGlzIHdyaXR0ZW4uIFxuDQorLy8vICAgIDAwOiBCaXRzIFszMTowXSBvZiB0
aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDAxOiBCaXRzIFs2
MzozMl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KKy8vLyAgICAx
MDogQml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4N
CisvLy8gICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5z
ZXJ0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgY29uc3RydWN0ZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX2luc2VydF9lcGkzMihYLCBJ
LCBOKSBcDQorICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3Y0c2koKF9fdjRzaSko
X19tMTI4aSkoWCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
aW50KShJKSwgKGludCkoTikpDQorDQorI2lmZGVmIF9feDg2XzY0X18NCisvLy8gQ29uc3RydWN0
cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBieSBmaXJzdCBtYWtpbmcgYSBjb3B5IG9m
DQorLy8vICAgIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRoZW4g
aW5zZXJ0aW5nIHRoZSA2NC1iaXQNCisvLy8gICAgaW50ZWdlciBwYXJhbWV0ZXIgXGEgSSwgdXNp
bmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhbg0KKy8vLyAgICBpbnNl
cnRpb24gbG9jYXRpb24gc2VsZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBfbW1faW5zZXJ0X2VwaTY0KF9f
bTEyOGkgWCwgbG9uZyBsb25nIEksIGNvbnN0IGludCBOKTsNCisvLy8gXGVuZGNvZGUNCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUElOU1JRIC8gUElO
U1JRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0
byB0aGUNCisvLy8gICAgcmVzdWx0IGFuZCB0aGVuIG9uZSBvZiB0aGUgdHdvIGVsZW1lbnRzIGlu
IHRoZSByZXN1bHQgdmVjdG9yIGlzIHJlcGxhY2VkDQorLy8vICAgIGJ5IFxhIEkuDQorLy8vIFxw
YXJhbSBJDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdGhhdCBpcyB3cml0dGVuIHRvIHRoZSBy
ZXN1bHQgYmVnaW5uaW5nIGF0IHRoZSBvZmZzZXQNCisvLy8gICAgc3BlY2lmaWVkIGJ5IFxhIE4u
DQorLy8vIFxwYXJhbSBODQorLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZS4gQml0IFswXSBzcGVj
aWZpZXMgdGhlIGJpdCBvZmZzZXQgaW4gdGhlIHJlc3VsdCBhdA0KKy8vLyAgICB3aGljaCB0aGUg
aW50ZWdlciBcYSBJIGlzIHdyaXR0ZW4uIFxuDQorLy8vICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRo
ZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMTogQml0cyBbMTI3
OjY0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2
YWx1ZXMuDQorI2RlZmluZSBfbW1faW5zZXJ0X2VwaTY0KFgsIEksIE4pIFwNCisgIChfX20xMjhp
KV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjJkaSgoX192MmRpKShfX20xMjhpKShYKSwgXA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKEkpLCAoaW50
KShOKSkNCisjZW5kaWYgLyogX194ODZfNjRfXyAqLw0KKw0KKy8qIEV4dHJhY3QgaW50IGZyb20g
cGFja2VkIGludGVnZXIgYXJyYXkgYXQgaW5kZXguICBUaGlzIHJldHVybnMgdGhlIGVsZW1lbnQN
CisgKiBhcyBhIHplcm8gZXh0ZW5kZWQgdmFsdWUsIHNvIGl0IGlzIHVuc2lnbmVkLg0KKyAqLw0K
Ky8vLyBFeHRyYWN0cyBhbiA4LWJpdCBlbGVtZW50IGZyb20gdGhlIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YNCisvLy8gICAgWzE2IHggaThdLCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBh
cmFtZXRlciBcYSBOIGFzIGEgc2VsZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9leHRyYWN0X2VwaTgoX19t
MTI4aSBYLCBjb25zdCBpbnQgTik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSQiAvIFBFWFRSQiA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IuDQorLy8vIFxwYXJhbSBODQorLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZS4gQml0cyBb
MzowXSBzcGVjaWZ5IHdoaWNoIDgtYml0IHZlY3RvciBlbGVtZW50IGZyb20NCisvLy8gICAgdGhl
IGFyZ3VtZW50IFxhIFggdG8gZXh0cmFjdCBhbmQgY29weSB0byB0aGUgcmVzdWx0LiBcbg0KKy8v
LyAgICAwMDAwOiBCaXRzIFs3OjBdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxu
DQorLy8vICAgIDAwMDE6IEJpdHMgWzE1OjhdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0
cmFjdGVkLiBcbg0KKy8vLyAgICAwMDEwOiBCaXRzIFsyMzoxNl0gb2YgdGhlIHBhcmFtZXRlciBc
YSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDAwMTE6IEJpdHMgWzMxOjI0XSBvZiB0aGUg
cGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMDEwMDogQml0cyBbMzk6
MzJdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAwMTAx
OiBCaXRzIFs0Nzo0MF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQor
Ly8vICAgIDAxMTA6IEJpdHMgWzU1OjQ4XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJh
Y3RlZC4gXG4NCisvLy8gICAgMDExMTogQml0cyBbNjM6NTZdIG9mIHRoZSBwYXJhbWV0ZXIgXGEg
WCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAxMDAwOiBCaXRzIFs3MTo2NF0gb2YgdGhlIHBh
cmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDEwMDE6IEJpdHMgWzc5Ojcy
XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMTAxMDog
Qml0cyBbODc6ODBdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8v
LyAgICAxMDExOiBCaXRzIFs5NTo4OF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0
ZWQuIFxuDQorLy8vICAgIDExMDA6IEJpdHMgWzEwMzo5Nl0gb2YgdGhlIHBhcmFtZXRlciBcYSBY
IGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDExMDE6IEJpdHMgWzExMToxMDRdIG9mIHRoZSBw
YXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAxMTEwOiBCaXRzIFsxMTk6
MTEyXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMTEx
MTogQml0cyBbMTI3OjEyMF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuDQor
Ly8vIFxyZXR1cm5zICBBbiB1bnNpZ25lZCBpbnRlZ2VyLCB3aG9zZSBsb3dlciA4IGJpdHMgYXJl
IHNlbGVjdGVkIGZyb20gdGhlDQorLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1l
dGVyIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIGFzc2lnbmVkDQorLy8vICAgIHplcm9zLg0K
KyNkZWZpbmUgX21tX2V4dHJhY3RfZXBpOChYLCBOKSBcDQorICAoaW50KSh1bnNpZ25lZCBjaGFy
KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjE2cWkoKF9fdjE2cWkpKF9fbTEyOGkpKFgpLCBcDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCko
TikpDQorDQorLy8vIEV4dHJhY3RzIGEgMzItYml0IGVsZW1lbnQgZnJvbSB0aGUgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGkzMl0sIHVzaW5nIHRoZSBpbW1lZGlhdGUg
dmFsdWUgcGFyYW1ldGVyIFxhIE4gYXMgYSBzZWxlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX2V4dHJhY3Rf
ZXBpMzIoX19tMTI4aSBYLCBjb25zdCBpbnQgTik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSRCAvIFBFWFRSRCA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBODQorLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1
ZS4gQml0cyBbMTowXSBzcGVjaWZ5IHdoaWNoIDMyLWJpdCB2ZWN0b3IgZWxlbWVudCBmcm9tDQor
Ly8vICAgIHRoZSBhcmd1bWVudCBcYSBYIHRvIGV4dHJhY3QgYW5kIGNvcHkgdG8gdGhlIHJlc3Vs
dC4gXG4NCisvLy8gICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUg
ZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBwYXJhbWV0ZXIg
XGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBw
YXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAxMTogQml0cyBbMTI3Ojk2
XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4cmFjdGVkLg0KKy8vLyBccmV0dXJucyAgQW4g
aW50ZWdlciwgd2hvc2UgbG93ZXIgMzIgYml0cyBhcmUgc2VsZWN0ZWQgZnJvbSB0aGUgMTI4LWJp
dA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0ZXIgYW5kIHRoZSByZW1haW5pbmcgYml0
cyBhcmUgYXNzaWduZWQgemVyb3MuDQorI2RlZmluZSBfbW1fZXh0cmFjdF9lcGkzMihYLCBOKSBc
DQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRzaSgoX192NHNpKShfX20xMjhpKShY
KSwgKGludCkoTikpDQorDQorI2lmZGVmIF9feDg2XzY0X18NCisvLy8gRXh0cmFjdHMgYSA2NC1i
aXQgZWxlbWVudCBmcm9tIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mDQorLy8vICAgIFsy
IHggaTY0XSwgdXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhIHNl
bGVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFxjb2RlDQorLy8vIGxvbmcgbG9uZyBfbW1fZXh0cmFjdF9lcGk2NChfX20xMjhpIFgsIGNvbnN0
IGludCBOKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJRIC8gUEVYVFJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8g
XHBhcmFtIE4NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXQgWzBdIHNwZWNpZmllcyB3
aGljaCA2NC1iaXQgdmVjdG9yIGVsZW1lbnQgZnJvbQ0KKy8vLyAgICB0aGUgYXJndW1lbnQgXGEg
WCB0byByZXR1cm4uIFxuDQorLy8vICAgIDA6IEJpdHMgWzYzOjBdIGFyZSByZXR1cm5lZC4gXG4N
CisvLy8gICAgMTogQml0cyBbMTI3OjY0XSBhcmUgcmV0dXJuZWQuIFxuDQorLy8vIFxyZXR1cm5z
ICBBIDY0LWJpdCBpbnRlZ2VyLg0KKyNkZWZpbmUgX21tX2V4dHJhY3RfZXBpNjQoWCwgTikgXA0K
KyAgKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGkoKF9fdjJkaSkoX19tMTI4
aSkoWCksIChpbnQpKE4pKQ0KKyNlbmRpZiAvKiBfX3g4Nl82NCAqLw0KKw0KKy8qIFNTRTQgMTI4
LWJpdCBQYWNrZWQgSW50ZWdlciBDb21wYXJpc29ucy4gICovDQorLy8vIFRlc3RzIHdoZXRoZXIg
dGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBhcmUgYWxsDQor
Ly8vICAgIHplcm9zLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBURVNUIC8gUFRF
U1QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fTQ0KKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQor
Ly8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGlu
ZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uDQorLy8vIFxyZXR1cm5zIFRS
VUUgaWYgdGhlIHNwZWNpZmllZCBiaXRzIGFyZSBhbGwgemVyb3M7IEZBTFNFIG90aGVyd2lzZS4N
CitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Rlc3R6X3Np
MTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lh
MzJfcHRlc3R6MTI4KChfX3YyZGkpX19NLCAoX192MmRpKV9fVik7DQorfQ0KKw0KKy8vLyBUZXN0
cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYml0cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
YXJlIGFsbA0KKy8vLyAgICBvbmVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBU
RVNUIC8gUFRFU1QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fTQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0
ZXN0ZWQuDQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uDQorLy8vIFxy
ZXR1cm5zIFRSVUUgaWYgdGhlIHNwZWNpZmllZCBiaXRzIGFyZSBhbGwgb25lczsgRkFMU0Ugb3Ro
ZXJ3aXNlLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
dGVzdGNfc2kxMjgoX19tMTI4aSBfX00sIF9fbTEyOGkgX19WKQ0KK3sNCisgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9wdGVzdGMxMjgoKF9fdjJkaSlfX00sIChfX3YyZGkpX19WKTsNCit9DQorDQor
Ly8vIFRlc3RzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBhcmUNCisvLy8gICAgbmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBURVNUIC8gUFRFU1QgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fTQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQorLy8vIFxwYXJhbSBfX1YNCisv
Ly8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRl
c3QgaW4gb3BlcmFuZCBcYSBfX00uDQorLy8vIFxyZXR1cm5zIFRSVUUgaWYgdGhlIHNwZWNpZmll
ZCBiaXRzIGFyZSBuZWl0aGVyIGFsbCB6ZXJvcyBub3IgYWxsIG9uZXM7DQorLy8vICAgIEZBTFNF
IG90aGVyd2lzZS4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3Rlc3RuemNfc2kxMjgoX19tMTI4aSBfX00sIF9fbTEyOGkgX19WKQ0KK3sNCisgIHJldHVy
biBfX2J1aWx0aW5faWEzMl9wdGVzdG56YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlfX1YpOw0K
K30NCisNCisvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGFyZSBhbGwNCisvLy8gICAgb25lcy4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX3Rlc3Rf
YWxsX29uZXMoX19tMTI4aSBWKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQorLy8vIFxyZXR1cm5zIFRSVUUg
aWYgdGhlIGJpdHMgc3BlY2lmaWVkIGluIHRoZSBvcGVyYW5kIGFyZSBhbGwgc2V0IHRvIDE7IEZB
TFNFDQorLy8vICAgIG90aGVyd2lzZS4NCisjZGVmaW5lIF9tbV90ZXN0X2FsbF9vbmVzKFYpIF9t
bV90ZXN0Y19zaTEyOCgoViksIF9tbV9jbXBlcV9lcGkzMigoViksIChWKSkpDQorDQorLy8vIFRl
c3RzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBhcmUNCisvLy8gICAgbmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBf
bW1fdGVzdF9taXhfb25lc196ZXJvcyhfX20xMjhpIE0sIF9fbTEyOGkgVik7DQorLy8vIFxlbmRj
b2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBU
RVNUIC8gUFRFU1QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIE0NCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVz
dGVkLg0KKy8vLyBccGFyYW0gVg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igc2Vs
ZWN0aW5nIHdoaWNoIGJpdHMgdG8gdGVzdCBpbiBvcGVyYW5kIFxhIE0uDQorLy8vIFxyZXR1cm5z
IFRSVUUgaWYgdGhlIHNwZWNpZmllZCBiaXRzIGFyZSBuZWl0aGVyIGFsbCB6ZXJvcyBub3IgYWxs
IG9uZXM7DQorLy8vICAgIEZBTFNFIG90aGVyd2lzZS4NCisjZGVmaW5lIF9tbV90ZXN0X21peF9v
bmVzX3plcm9zKE0sIFYpIF9tbV90ZXN0bnpjX3NpMTI4KChNKSwgKFYpKQ0KKw0KKy8vLyBUZXN0
cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYml0cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
YXJlIGFsbA0KKy8vLyAgICB6ZXJvcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX3Rlc3RfYWxsX3plcm9zKF9fbTEy
OGkgTSwgX19tMTI4aSBWKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQorLy8vIFxwYXJhbSBWDQorLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBzZWxlY3Rpbmcgd2hpY2ggYml0cyB0byB0ZXN0IGlu
IG9wZXJhbmQgXGEgTS4NCisvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMg
YXJlIGFsbCB6ZXJvczsgRkFMU0Ugb3RoZXJ3aXNlLg0KKyNkZWZpbmUgX21tX3Rlc3RfYWxsX3pl
cm9zKE0sIFYpIF9tbV90ZXN0el9zaTEyOCAoKE0pLCAoVikpDQorDQorLyogU1NFNCA2NC1iaXQg
UGFja2VkIEludGVnZXIgQ29tcGFyaXNvbnMuICAqLw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIDY0LWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQNCisvLy8gICAgaW50
ZWdlciB2ZWN0b3JzIGZvciBlcXVhbGl0eS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQQ01QRVFRIC8gUENNUEVRUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX1Yy
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBlcV9l
cGk2NChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCit7DQorICByZXR1cm4gKF9fbTEyOGkp
KChfX3YyZGkpX19WMSA9PSAoX192MmRpKV9fVjIpOw0KK30NCisNCisvKiBTU0U0IFBhY2tlZCBJ
bnRlZ2VyIFNpZ24tRXh0ZW5zaW9uLiAgKi8NCisvLy8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhl
IGxvd2VyIGVpZ2h0IDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0
IHZlY3RvciBvZiBbMTYgeCBpOF0gdG8gMTYtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGlu
IGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgdXBwZXIgZWlnaHQg
ZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3Rvcg0KKy8vLyAgICBhcmUgdW51c2VkLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWEJXIC8gUE1PVlNYQlcgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsxNiB4IGk4XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVsZW1lbnRzIGFyZSBzaWduLQ0KKy8v
LyAgICBleHRlbmRlZCB0byAxNi1iaXQgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRl
cGk4X2VwaTE2KF9fbTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAo
X19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4YncxMjggKChfX3YxNnFpKV9fVik7DQorI2Vs
c2UNCisgIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lv
biwgYnV0IF9fdjE2cWkgaXMgYSBjaGFyDQorICAgICB3aGljaCBtYXkgYmUgc2lnbmVkIG9yIHVu
c2lnbmVkLCBzbyB1c2UgX192MTZxcy4gKi8NCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f
Y29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxcylfX1YsIChfX3Yx
NnFzKV9fViwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyksIF9fdjhoaSk7DQorI2VuZGlmDQorfQ0K
Kw0KKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZm91ciA4LWJpdCBpbnRlZ2Vy
IGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIDMy
LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggaTMyXS4gVGhlIHVwcGVyIHR3ZWx2ZSBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisv
Ly8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UE1PVlNYQkQgLyBQTU9WU1hCRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19WDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgZm91
ciA4LWJpdCBlbGVtZW50cyBhcmUNCisvLy8gICAgc2lnbi1leHRlbmRlZCB0byAzMi1iaXQgdmFs
dWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWlu
aW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRlcGk4X2VwaTMyKF9fbTEyOGkgX19WKQ0KK3sN
CisgIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lvbiwg
YnV0IF9fdjE2cWkgaXMgYSBjaGFyDQorICAgICB3aGljaCBtYXkgYmUgc2lnbmVkIG9yIHVuc2ln
bmVkLCBzbyB1c2UgX192MTZxcy4gKi8NCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19t
MTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4YmQxMjggKChfX3YxNnFpKV9fVik7DQorI2Vsc2UN
CisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1
ZmZsZXZlY3RvcigoX192MTZxcylfX1YsIChfX3YxNnFzKV9fViwgMCwgMSwgMiwgMyksIF9fdjRz
aSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIg
dHdvIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIg
dmVjdG9yIG9mIFsxNiB4IGk4XSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4N
CisvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciBmb3VydGVl
biBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisvLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYQlEgLyBQTU9WU1hCUSA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzE2IHggaThdLiBUaGUgbG93ZXIgdHdvIDgtYml0IGVsZW1lbnRzIGFyZQ0KKy8vLyAgICBz
aWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFsdWVzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dGVw
aThfZXBpNjQoX19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChf
X20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3hicTEyOCAoKF9fdjE2cWkpX19WKTsNCisjZWxz
ZQ0KKyAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBzaWduZWQgZXh0ZW5zaW9u
LCBidXQgX192MTZxaSBpcyBhIGNoYXINCisgICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5z
aWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLw0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9j
b252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFzKV9fViwgKF9fdjE2
cXMpX19WLCAwLCAxKSwgX192MmRpKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFNpZ24tZXh0ZW5k
cyBlYWNoIG9mIHRoZSBsb3dlciBmb3VyIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCisv
Ly8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gMzItYml0IHZhbHVl
cyBhbmQgcmV0dXJucyB0aGVtIGluDQorLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MzJdLiBUaGUgdXBwZXIgZm91ciBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisvLy8gICAgdmVjdG9y
IGFyZSB1bnVzZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYV0QgLyBQ
TU9WU1hXRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgZm91ciAxNi1iaXQgZWxl
bWVudHMgYXJlDQorLy8vICAgIHNpZ24tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgc2ln
bi1leHRlbmRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY3Z0ZXBpMTZfZXBpMzIoX19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBf
X0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3h3ZDEyOCAo
KF9fdjhoaSlfX1YpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZl
cnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1YsIChfX3Y4aGkpX19W
LCAwLCAxLCAyLCAzKSwgX192NHNpKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFNpZ24tZXh0ZW5k
cyBlYWNoIG9mIHRoZSBsb3dlciB0d28gMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8v
LyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSB0byA2NC1iaXQgdmFsdWVz
IGFuZCByZXR1cm5zIHRoZW0gaW4NCisvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2
NF0uIFRoZSB1cHBlciBzaXggZWxlbWVudHMgb2YgdGhlIGlucHV0DQorLy8vICAgIHZlY3RvciBh
cmUgdW51c2VkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWFdRIC8gUE1P
VlNYV1EgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4gVGhlIGxvd2VyIHR3byAxNi1iaXQgZWxlbWVu
dHMgYXJlDQorLy8vICAgICBzaWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHNpZ24t
ZXh0ZW5kZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2N2dGVwaTE2X2VwaTY0KF9fbTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19H
TlVDX18NCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4d3ExMjggKChf
X3Y4aGkpX19WKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0
dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19WLCAoX192OGhpKV9fViwg
MCwgMSksIF9fdjJkaSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBv
ZiB0aGUgbG93ZXIgdHdvIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0gdG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0
dXJucyB0aGVtIGluDQorLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUg
dXBwZXIgdHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3INCisvLy8gICAgYXJlIHVudXNl
ZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WU1hEUSAvIFBNT1ZTWERRIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSBsb3dlciB0d28gMzItYml0IGVsZW1lbnRzIGFyZQ0K
Ky8vLyAgICBzaWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQg
dmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2N2dGVwaTMyX2VwaTY0KF9fbTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisg
IHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4ZHExMjggKChfX3Y0c2kpX19W
KTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9f
YnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19WLCAoX192NHNpKV9fViwgMCwgMSksIF9f
djJkaSk7DQorI2VuZGlmDQorfQ0KKw0KKy8qIFNTRTQgUGFja2VkIEludGVnZXIgWmVyby1FeHRl
bnNpb24uICAqLw0KKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1i
aXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4
IGk4XSB0byAxNi1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYQ0KKy8vLyAgICAxMjgt
Yml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRoZSB1cHBlciBlaWdodCBlbGVtZW50cyBvZiB0aGUg
aW5wdXQgdmVjdG9yDQorLy8vICAgIGFyZSB1bnVzZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUE1PVlpYQlcgLyBQTU9WWlhCVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19WDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUg
bG93ZXIgZWlnaHQgOC1iaXQgZWxlbWVudHMgYXJlDQorLy8vICAgIHplcm8tZXh0ZW5kZWQgdG8g
MTYtYml0IHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkx
Nl0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXB1OF9lcGkxNihfX20xMjhp
IF9fVikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRp
bl9pYTMyX3Btb3Z6eGJ3MTI4ICgoX192MTZxaSlfX1YpOw0KKyNlbHNlDQorICByZXR1cm4gKF9f
bTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9f
djE2cXUpX19WLCAoX192MTZxdSlfX1YsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpLCBfX3Y4aGkp
Ow0KKyNlbmRpZg0KK30NCisNCisvLy8gWmVyby1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIGZv
dXIgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9m
IFsxNiB4IGk4XSB0byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYQ0KKy8vLyAg
ICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSB1cHBlciB0d2VsdmUgZWxlbWVudHMg
b2YgdGhlIGlucHV0DQorLy8vICAgIHZlY3RvciBhcmUgdW51c2VkLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJEIC8gUE1PVlpYQkQgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4
XS4gVGhlIGxvd2VyIGZvdXIgOC1iaXQgZWxlbWVudHMgYXJlDQorLy8vICAgIHplcm8tZXh0ZW5k
ZWQgdG8gMzItYml0IHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGkzMl0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXB1OF9lcGkzMihf
X20xMjhpIF9fVikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpIF9f
YnVpbHRpbl9pYTMyX3Btb3Z6eGJkMTI4ICgoX192MTZxaSlfX1YpOw0KKyNlbHNlDQorICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0
b3IoKF9fdjE2cXUpX19WLCAoX192MTZxdSlfX1YsIDAsIDEsIDIsIDMpLCBfX3Y0c2kpOw0KKyNl
bmRpZg0KK30NCisNCisvLy8gWmVyby1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIHR3byA4LWJp
dCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMTYgeCBpOF0gdG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluDQorLy8vICAg
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgZm91cnRlZW4gZWxlbWVu
dHMgb2YgdGhlIGlucHV0DQorLy8vICAgIHZlY3RvciBhcmUgdW51c2VkLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJRIC8gUE1PVlpYQlEgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4
IGk4XS4gVGhlIGxvd2VyIHR3byA4LWJpdCBlbGVtZW50cyBhcmUNCisvLy8gICAgemVyby1leHRl
bmRlZCB0byA2NC1iaXQgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggaTY0XSBjb250YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVlcy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRlcHU4X2VwaTY0
KF9fbTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSkg
X19idWlsdGluX2lhMzJfcG1vdnp4YnExMjggKChfX3YxNnFpKV9fVik7DQorI2Vsc2UNCisgIHJl
dHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZl
Y3RvcigoX192MTZxdSlfX1YsIChfX3YxNnF1KV9fViwgMCwgMSksIF9fdjJkaSk7DQorI2VuZGlm
DQorfQ0KKw0KKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZm91ciAxNi1iaXQg
aW50ZWdlciBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpMTZdIHRvIDMyLWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbg0KKy8vLyAgICBh
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIHVwcGVyIGZvdXIgZWxlbWVudHMgb2Yg
dGhlIGlucHV0DQorLy8vICAgIHZlY3RvciBhcmUgdW51c2VkLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBNT1ZaWFdEIC8gUE1PVlpYV0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4g
VGhlIGxvd2VyIGZvdXIgMTYtYml0IGVsZW1lbnRzIGFyZQ0KKy8vLyAgICB6ZXJvLWV4dGVuZGVk
IHRvIDMyLWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMzJdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dGVwdTE2X2VwaTMyKF9f
bTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSkgX19i
dWlsdGluX2lhMzJfcG1vdnp4d2QxMjggKChfX3Y4aGkpX19WKTsNCisjZWxzZQ0KKyAgcmV0dXJu
IChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3Y4aHUpX19WLCAoX192OGh1KV9fViwgMCwgMSwgMiwgMyksIF9fdjRzaSk7DQorI2VuZGlm
DQorfQ0KKw0KKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDE2LWJpdCBp
bnRlZ2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
OCB4IGkxNl0gdG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluDQorLy8vICAgIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgc2l4IGVsZW1lbnRzIG9mIHRo
ZSBpbnB1dCB2ZWN0b3INCisvLy8gICAgYXJlIHVudXNlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQTU9WWlhXUSAvIFBNT1ZaWFdRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRo
ZSBsb3dlciB0d28gMTYtYml0IGVsZW1lbnRzIGFyZQ0KKy8vLyAgICB6ZXJvLWV4dGVuZGVkIHRv
IDY0LWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBp
NjRdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dGVwdTE2X2VwaTY0KF9fbTEy
OGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSkgX19idWls
dGluX2lhMzJfcG1vdnp4d3ExMjggKChfX3Y4aGkpX19WKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChf
X3Y4aHUpX19WLCAoX192OGh1KV9fViwgMCwgMSksIF9fdjJkaSk7DQorI2VuZGlmDQorfQ0KKw0K
Ky8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDMyLWJpdCBpbnRlZ2VyIGVs
ZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0g
dG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluDQorLy8vICAgIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgdHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2
ZWN0b3INCisvLy8gICAgYXJlIHVudXNlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQTU9WWlhEUSAvIFBNT1ZaWERRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX1YNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoZSBsb3dlciB0
d28gMzItYml0IGVsZW1lbnRzIGFyZQ0KKy8vLyAgICB6ZXJvLWV4dGVuZGVkIHRvIDY0LWJpdCB2
YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRh
aW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dGVwdTMyX2VwaTY0KF9fbTEyOGkgX19WKQ0K
K3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJf
cG1vdnp4ZHExMjggKChfX3Y0c2kpX19WKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c3UpX19W
LCAoX192NHN1KV9fViwgMCwgMSksIF9fdjJkaSk7DQorI2VuZGlmDQorfQ0KKw0KKy8qIFNTRTQg
UGFjayB3aXRoIFVuc2lnbmVkIFNhdHVyYXRpb24uICAqLw0KKy8vLyBDb252ZXJ0cyAzMi1iaXQg
c2lnbmVkIGludGVnZXJzIGZyb20gYm90aCAxMjgtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAg
IG9wZXJhbmRzIGludG8gMTYtYml0IHVuc2lnbmVkIGludGVnZXJzLCBhbmQgcmV0dXJucyB0aGUg
cGFja2VkIHJlc3VsdC4NCisvLy8gICAgVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYgYXJlIHNh
dHVyYXRlZCB0byAweEZGRkYuIFZhbHVlcyBsZXNzIHRoYW4NCisvLy8gICAgMHgwMDAwIGFyZSBz
YXR1cmF0ZWQgdG8gMHgwMDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBQ0tV
U0RXIC8gUEFDS1VTRFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVjEN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIEVhY2ggMzItYml0IGVsZW1l
bnQgaXMgdHJlYXRlZCBhcyBhDQorLy8vICAgIHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0
ZWQgdG8gYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoDQorLy8vICAgIHNhdHVyYXRpb24u
IFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRkZGLiBWYWx1
ZXMNCisvLy8gICAgbGVzcyB0aGFuIDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4gVGhl
IGNvbnZlcnRlZCBbNCB4IGkxNl0gdmFsdWVzDQorLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBs
b3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0
ZWQgYXMgYQ0KKy8vLyAgICBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYt
Yml0IHVuc2lnbmVkIGludGVnZXIgd2l0aA0KKy8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3Jl
YXRlciB0aGFuIDB4RkZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkZGRi4gVmFsdWVzDQorLy8vICAg
IGxlc3MgdGhhbiAweDAwMDAgYXJlIHNhdHVyYXRlZCB0byAweDAwMDAuIFRoZSBjb252ZXJ0ZWQg
WzQgeCBpMTZdIHZhbHVlcw0KKy8vLyAgICBhcmUgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJp
dHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4
IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9wYWNrdXNfZXBpMzIoX19tMTI4aSBf
X1YxLCBfX20xMjhpIF9fVjIpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEz
Ml9wYWNrdXNkdzEyOCgoX192NHNpKV9fVjEsIChfX3Y0c2kpX19WMik7DQorfQ0KKw0KKy8qIFNT
RTQgTXVsdGlwbGUgUGFja2VkIFN1bXMgb2YgQWJzb2x1dGUgRGlmZmVyZW5jZS4gICovDQorLy8v
IFN1YnRyYWN0cyA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBhbmQgY29tcHV0ZXMgdGhl
IGFic29sdXRlDQorLy8vICAgIHZhbHVlcyBvZiB0aGUgZGlmZmVyZW5jZXMgdG8gdGhlIGNvcnJl
c3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vICAgIFRoZW4gc3VtcyBvZiB0
aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYXJlIHJldHVybmVkIGFjY29yZGluZyB0byB0aGUgYml0
DQorLy8vICAgIGZpZWxkcyBpbiB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBf
bW1fbXBzYWRid19lcHU4KF9fbTEyOGkgWCwgX19tMTI4aSBZLCBjb25zdCBpbnQgTSk7DQorLy8v
IFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1QU0FEQlcgLyBNUFNBREJXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyBccGFyYW0g
WQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8gXHBhcmFtIE0N
CisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIGFi
c29sdXRlIGRpZmZlcmVuY2VzIGFyZSB0bw0KKy8vLyAgICBiZSBjYWxjdWxhdGVkLCBhY2NvcmRp
bmcgdG8gdGhlIGZvbGxvd2luZyBhbGdvcml0aG06DQorLy8vICAgIFxjb2RlDQorLy8vICAgIC8v
IE0yIHJlcHJlc2VudHMgYml0IDIgb2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kDQorLy8vICAgIC8v
IE0xMCByZXByZXNlbnRzIGJpdHMgWzE6MF0gb2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kDQorLy8v
ICAgIGkgPSBNMiAqIDQ7DQorLy8vICAgIGogPSBNMTAgKiA0Ow0KKy8vLyAgICBmb3IgKGsgPSAw
OyBrIDwgODsgayA9IGsgKyAxKSB7DQorLy8vICAgICAgZDAgPSBhYnMoWFtpICsgayArIDBdIC0g
WVtqICsgMF0pOw0KKy8vLyAgICAgIGQxID0gYWJzKFhbaSArIGsgKyAxXSAtIFlbaiArIDFdKTsN
CisvLy8gICAgICBkMiA9IGFicyhYW2kgKyBrICsgMl0gLSBZW2ogKyAyXSk7DQorLy8vICAgICAg
ZDMgPSBhYnMoWFtpICsgayArIDNdIC0gWVtqICsgM10pOw0KKy8vLyAgICAgIHJba10gPSBkMCAr
IGQxICsgZDIgKyBkMzsNCisvLy8gICAgfQ0KKy8vLyAgICBcZW5kY29kZQ0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiB0aGUgc2V0
cyBvZg0KKy8vLyAgICBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMu
DQorI2RlZmluZSBfbW1fbXBzYWRid19lcHU4KFgsIFksIE0pIFwNCisgIChfX20xMjhpKSBfX2J1
aWx0aW5faWEzMl9tcHNhZGJ3MTI4KChfX3YxNnFpKShfX20xMjhpKShYKSwgXA0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKFkpLCAoTSkp
DQorDQorLy8vIEZpbmRzIHRoZSBtaW5pbXVtIHVuc2lnbmVkIDE2LWJpdCBlbGVtZW50IGluIHRo
ZSBpbnB1dCAxMjgtYml0DQorLy8vICAgIHZlY3RvciBvZiBbOCB4IHUxNl0gYW5kIHJldHVybnMg
aXQgYW5kIGFsb25nIHdpdGggaXRzIGluZGV4Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBITUlOUE9TVVcgLyBQSE1JTlBPU1VXIDwvYz4NCisvLy8gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0u
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2YWx1ZSB3aGVyZSBiaXRzIFsxNTowXSBjb250YWlu
IHRoZSBtaW5pbXVtIHZhbHVlIGZvdW5kDQorLy8vICAgIGluIHBhcmFtZXRlciBcYSBfX1YsIGJp
dHMgWzE4OjE2XSBjb250YWluIHRoZSBpbmRleCBvZiB0aGUgbWluaW11bSB2YWx1ZQ0KKy8vLyAg
ICBhbmQgdGhlIHJlbWFpbmluZyBiaXRzIGFyZSBzZXQgdG8gMC4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5wb3NfZXB1MTYoX19tMTI4aSBf
X1YpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9waG1pbnBvc3V3MTI4
KChfX3Y4aGkpX19WKTsNCit9DQorDQorLyogSGFuZGxlIHRoZSBzc2U0LjIgZGVmaW5pdGlvbnMg
aGVyZS4gKi8NCisNCisvKiBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm9ybWFsbHkgaW4gbm1taW50
cmluLmgsIGJ1dCBnY2MgcHV0cyB0aGVtIGluIGhlcmUNCisgICBzbyB3ZSdsbCBkbyB0aGUgc2Ft
ZS4gICovDQorDQorI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKyNpZmRlZiBfX0dOVUNfXw0K
KyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f
LCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNlDQorI2RlZmluZSBf
X0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9k
ZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2U0LjIiKSkpDQorI2VuZGlmDQorDQorLyogVGhlc2Ugc3Bl
Y2lmeSB0aGUgdHlwZSBvZiBkYXRhIHRoYXQgd2UncmUgY29tcGFyaW5nLiAgKi8NCisjZGVmaW5l
IF9TSUREX1VCWVRFX09QUyAgICAgICAgICAgICAgICAgMHgwMA0KKyNkZWZpbmUgX1NJRERfVVdP
UkRfT1BTICAgICAgICAgICAgICAgICAweDAxDQorI2RlZmluZSBfU0lERF9TQllURV9PUFMgICAg
ICAgICAgICAgICAgIDB4MDINCisjZGVmaW5lIF9TSUREX1NXT1JEX09QUyAgICAgICAgICAgICAg
ICAgMHgwMw0KKw0KKy8qIFRoZXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiBvcGVy
YXRpb24uICAqLw0KKyNkZWZpbmUgX1NJRERfQ01QX0VRVUFMX0FOWSAgICAgICAgICAgICAweDAw
DQorI2RlZmluZSBfU0lERF9DTVBfUkFOR0VTICAgICAgICAgICAgICAgIDB4MDQNCisjZGVmaW5l
IF9TSUREX0NNUF9FUVVBTF9FQUNIICAgICAgICAgICAgMHgwOA0KKyNkZWZpbmUgX1NJRERfQ01Q
X0VRVUFMX09SREVSRUQgICAgICAgICAweDBjDQorDQorLyogVGhlc2UgbWFjcm9zIHNwZWNpZnkg
dGhlIHBvbGFyaXR5IG9mIHRoZSBvcGVyYXRpb24uICAqLw0KKyNkZWZpbmUgX1NJRERfUE9TSVRJ
VkVfUE9MQVJJVFkgICAgICAgICAweDAwDQorI2RlZmluZSBfU0lERF9ORUdBVElWRV9QT0xBUklU
WSAgICAgICAgIDB4MTANCisjZGVmaW5lIF9TSUREX01BU0tFRF9QT1NJVElWRV9QT0xBUklUWSAg
MHgyMA0KKyNkZWZpbmUgX1NJRERfTUFTS0VEX05FR0FUSVZFX1BPTEFSSVRZICAweDMwDQorDQor
LyogVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIF9tbV9jbXBYc3RyaSgpIHRvIHNwZWNpZnkgdGhl
IHJldHVybi4gICovDQorI2RlZmluZSBfU0lERF9MRUFTVF9TSUdOSUZJQ0FOVCAgICAgICAgIDB4
MDANCisjZGVmaW5lIF9TSUREX01PU1RfU0lHTklGSUNBTlQgICAgICAgICAgMHg0MA0KKw0KKy8q
IFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBpbiBfbW1fY21wWHN0cmkoKSB0byBzcGVjaWZ5IHRoZSBy
ZXR1cm4uICAqLw0KKyNkZWZpbmUgX1NJRERfQklUX01BU0sgICAgICAgICAgICAgICAgICAweDAw
DQorI2RlZmluZSBfU0lERF9VTklUX01BU0sgICAgICAgICAgICAgICAgIDB4NDANCisNCisvKiBT
U0U0LjIgUGFja2VkIENvbXBhcmlzb24gSW50cmluc2ljcy4gICovDQorLy8vIFVzZXMgdGhlIGlt
bWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQor
Ly8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRh
aW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyBh
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQNCisvLy8gICAg
bWFzayBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9jbXBpc3RybShfX20xMjhp
IEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUk0gLyBQQ01QSVNU
Uk0gPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4
LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMg
YXJlIGJ5dGVzIG9yDQorLy8vICAgIHdvcmRzLCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBl
cmZvcm0sIGFuZCB0aGUgZm9ybWF0IG9mIHRoZSByZXR1cm4NCisvLy8gICAgdmFsdWUuIFxuDQor
Ly8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8v
ICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQg
d29yZHMgXG4NCisvLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6
IDggc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJp
c29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0
OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFs
bA0KKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAx
OiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhl
IGNvbXBhcmlzb24NCisvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxl
c3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisv
Ly8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hh
cmFjdGVycyBpbiBcYSBBIGFuZA0KKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4N
CisvLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNo
ZXMgb2YgXGEgQS4gXG4NCisvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8g
cGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAg
ICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVm
ZmVjdC4gXG4NCisvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAg
ICAxMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9u
bHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAg
ICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KKy8vLyAgICBCaXQgWzZdOiBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHJlc3VsdCBpcyB6ZXJvLWV4dGVuZGVkIG9yIGV4cGFuZGVkIHRv
IDE2DQorLy8vICAgICAgICAgICAgIGJ5dGVzLiBcbg0KKy8vLyAgICAgIDA6IFRoZSByZXN1bHQg
aXMgemVyby1leHRlbmRlZCB0byAxNiBieXRlcy4gXG4NCisvLy8gICAgICAxOiBUaGUgcmVzdWx0
IGlzIGV4cGFuZGVkIHRvIDE2IGJ5dGVzICh0aGlzIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgYnkN
CisvLy8gICAgICAgICByZXBlYXRpbmcgZWFjaCBiaXQgOCBvciAxNiB0aW1lcykuDQorLy8vIFxy
ZXR1cm5zIFJldHVybnMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUg
cmVzdWx0IG1hc2sgb2YNCisvLy8gICAgdGhlIGNvbXBhcmlzb24uDQorI2RlZmluZSBfbW1fY21w
aXN0cm0oQSwgQiwgTSkgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGlzdHJtMTI4
KChfX3YxNnFpKShfX20xMjhpKShBKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkpDQorDQorLy8vIFVzZXMg
dGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3Ry
aW5nDQorLy8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlz
IGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0
dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IGluZGV4IG9mIHRoZQ0KKy8v
LyAgICBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fY21waXN0cmkoX19tMTI4aSBBLCBfX20xMjhp
IEIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElTVFJJIDwvYz4NCisv
Ly8gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJl
DQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0K
Ky8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRp
YXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBv
cg0KKy8vLyAgICB3b3JkcywgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLCBhbmQg
dGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuDQorLy8vICAgIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRz
IFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAx
NiB1bnNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQor
Ly8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3
b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFu
ZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQorLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFy
YWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAg
ICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBF
YWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29u
DQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1p
bmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQorLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3Ig
ZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6
IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4g
XGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAg
MTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxu
DQorLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUn
cyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8v
ICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVj
dC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdp
dGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQorLy8vICAgICAgICAgIHRvIHRoZSBzaXpl
IG9mIFxhIEEgb3IgXGEgQi4gXG4NCisvLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVy
IHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3IgdGhlDQorLy8vICAgICAgICAgICAg
IGhpZ2hlc3Qgc2V0IGJpdCBpcyByZXR1cm5lZC4gXG4NCisvLy8gICAgICAwOiBUaGUgaW5kZXgg
b2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IHNldCBiaXQuIFxuDQorLy8vICAgICAgMTogVGhlIGlu
ZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IHNldCBiaXQuIFxuDQorLy8vIFxyZXR1cm5zIFJl
dHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBpbmRleCBvZiB0aGUgY29t
cGFyaXNvbi4NCisjZGVmaW5lIF9tbV9jbXBpc3RyaShBLCBCLCBNKSBcDQorICAoaW50KV9fYnVp
bHRpbl9pYTMyX3BjbXBpc3RyaTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCko
TSkpDQorDQorLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBh
IGNvbXBhcmlzb24gb2Ygc3RyaW5nDQorLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmlu
ZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAg
XGEgQSBhbmQgXGEgQi4gUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50
aW5nIHRoZSByZXN1bHQNCisvLy8gICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20x
MjhpIF9tbV9jbXBlc3RybShfX20xMjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNv
bnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJNIC8gUENNUEVTVFJNIDwvYz4NCisvLy8gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8v
ICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTEENCisvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNw
ZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCisvLy8gXHBhcmFtIEIN
CisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBMQg0K
Ky8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmlu
ZyBpbiBcYSBCLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3Bl
cmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQorLy8v
ICAgIHdvcmRzLCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0sIGFuZCB0aGUgZm9y
bWF0IG9mIHRoZSByZXR1cm4NCisvLy8gICAgdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzE6MF06
IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8vICAgICAgMDA6IDE2IHVuc2ln
bmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCisvLy8gICAg
ICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxu
DQorLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3Jl
Z2F0aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBp
biBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KKy8vLyAgICAgICAgICB0
aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hh
cmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCisvLy8g
ICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQg
ZWxlbWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBm
b3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAxMDogTWF0Y2g6
IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFu
ZA0KKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCisvLy8gICAgICAxMTogU3Vi
c3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4NCisv
Ly8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNv
bXBsZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAg
ICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAgICAxMDogTm8gZWZmZWN0LiBc
bg0KKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBh
biBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2Yg
XGEgQSBvciBcYSBCLiBcbg0KKy8vLyAgICBCaXQgWzZdOiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhl
IHJlc3VsdCBpcyB6ZXJvLWV4dGVuZGVkIG9yIGV4cGFuZGVkIHRvIDE2DQorLy8vICAgICAgICAg
ICAgIGJ5dGVzLiBcbg0KKy8vLyAgICAgIDA6IFRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCB0
byAxNiBieXRlcy4gXG4NCisvLy8gICAgICAxOiBUaGUgcmVzdWx0IGlzIGV4cGFuZGVkIHRvIDE2
IGJ5dGVzICh0aGlzIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgYnkNCisvLy8gICAgICAgICByZXBl
YXRpbmcgZWFjaCBiaXQgOCBvciAxNiB0aW1lcykuIFxuDQorLy8vIFxyZXR1cm5zIFJldHVybnMg
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG1hc2sgb2YN
CisvLy8gICAgdGhlIGNvbXBhcmlzb24uDQorI2RlZmluZSBfbW1fY21wZXN0cm0oQSwgTEEsIEIs
IExCLCBNKSBcDQorICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY21wZXN0cm0xMjgoKF9fdjE2
cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKExCKSwgXA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0pKQ0KKw0KKy8vLyBVc2Vz
IHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0
cmluZw0KKy8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBp
cyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJl
dHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBpbmRleCBvZiB0aGUNCisv
Ly8gICAgY29tcGFyaXNvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX2NtcGVzdHJpKF9fbTEyOGkgQSwgaW50IExB
LCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgLyBQ
Q01QRVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisv
Ly8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBMQQ0KKy8v
LyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBp
biBcYSBBLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21w
YXJlZC4NCisvLy8gXHBhcmFtIExCDQorLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMg
dGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQorLy8vIFxwYXJhbSBNDQorLy8vICAg
IEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFj
dGVycyBhcmUgYnl0ZXMgb3INCisvLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24g
dG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0KKy8vLyAgICB2YWx1ZS4g
XG4NCisvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4N
CisvLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAwMTogOCB1bnNp
Z25lZCB3b3JkcyBcbg0KKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisvLy8gICAg
ICAxMTogOCBzaWduZWQgd29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNv
bXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAgIDAwOiBT
dWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdp
dGggYWxsDQorLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQorLy8vICAg
ICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBB
LiBUaGUgY29tcGFyaXNvbg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAgICAgICBh
bmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBc
bg0KKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGlu
ZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5
LiBcbg0KKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0
Y2hlcyBvZiBcYSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0
byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAgICAgICAgICAg
ICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAgICAwMDogTm8g
ZWZmZWN0LiBcbg0KKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAg
ICAgIDEwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sg
b25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KKy8vLyAgICAg
ICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuDQorLy8vICAgIEJpdCBbNl06IERl
dGVybWluZXMgd2hldGhlciB0aGUgaW5kZXggb2YgdGhlIGxvd2VzdCBzZXQgYml0IG9yIHRoZQ0K
Ky8vLyAgICAgICAgICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQuIFxuDQorLy8vICAg
ICAgMDogVGhlIGluZGV4IG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBzZXQgYml0LiBcbg0KKy8v
LyAgICAgIDE6IFRoZSBpbmRleCBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBzZXQgYml0LiBcbg0K
Ky8vLyBccmV0dXJucyBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQg
aW5kZXggb2YgdGhlIGNvbXBhcmlzb24uDQorI2RlZmluZSBfbW1fY21wZXN0cmkoQSwgTEEsIEIs
IExCLCBNKSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaTEyOCgoX192MTZxaSko
X19tMTI4aSkoQSksIChpbnQpKExBKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0pKQ0KKw0KKy8qIFNTRTQuMiBQYWNrZWQgQ29t
cGFyaXNvbiBJbnRyaW5zaWNzIGFuZCBFRmxhZyBSZWFkaW5nLiAgKi8NCisvLy8gVXNlcyB0aGUg
aW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcN
CisvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29u
dGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5z
IDEgaWYgdGhlIGJpdCBtYXNrIGlzIHplcm8gYW5kIHRoZSBsZW5ndGggb2YgdGhlDQorLy8vICAg
IHN0cmluZyBpbiBcYSBCIGlzIHRoZSBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8v
LyBpbnQgX21tX2NtcGlzdHJhKF9fbTEyOGkgQSwgX19tMTI4aSBCLCBjb25zdCBpbnQgTSk7DQor
Ly8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBDTVBJU1RSSSAvIFBDTVBJU1RSSSA8L2M+DQorLy8vIGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4N
CisvLy8gXHBhcmFtIEINCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQor
Ly8vIFxwYXJhbSBNDQorLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlp
bmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCisvLy8gICAgd29yZHMgYW5k
IHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4NCisvLy8gICAgQml0cyBbMTow
XTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCisvLy8gICAgICAwMDogMTYgdW5z
aWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KKy8vLyAg
ICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMg
XG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdn
cmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVy
IGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQorLy8vICAgICAgICAg
IHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBj
aGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbg0KKy8v
LyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhl
ZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFs
IGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDEwOiBNYXRj
aDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEg
YW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KKy8vLyAgICAgIDExOiBT
dWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0K
Ky8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3Mg
Y29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAg
ICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAgICAgIDEwOiBObyBlZmZlY3Qu
IFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRo
IGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KKy8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBv
ZiBcYSBBIG9yIFxhIEIuIFxuDQorLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgYml0IG1h
c2sgaXMgemVybyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluDQorLy8vICAgIFxhIEIg
aXMgdGhlIG1heGltdW07IG90aGVyd2lzZSwgcmV0dXJucyAwLg0KKyNkZWZpbmUgX21tX2NtcGlz
dHJhKEEsIEIsIE0pIFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJpYTEyOCgoX192
MTZxaSkoX19tMTI4aSkoQSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKE0pKQ0KKw0KKy8vLyBVc2VzIHRoZSBpbW1l
ZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KKy8v
LyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWlu
ZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBp
ZiB0aGUgYml0IG1hc2sgaXMgbm9uLXplcm8sIG90aGVyd2lzZSwgcmV0dXJucw0KKy8vLyAgICAw
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2Rl
DQorLy8vIGludCBfbW1fY21waXN0cmMoX19tMTI4aSBBLCBfX20xMjhpIEIsIGNvbnN0IGludCBN
KTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElTVFJJIDwvYz4NCisvLy8gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBh
cmVkLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJl
ZC4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3Bl
Y2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8vLyAgICB3b3Jk
cyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KKy8vLyAgICBCaXRz
IFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAx
NiB1bnNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQor
Ly8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3
b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFu
ZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQorLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFy
YWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAg
ICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBF
YWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29u
DQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1p
bmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQorLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3Ig
ZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6
IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4g
XGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAg
MTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxu
DQorLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUn
cyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8v
ICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVj
dC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdp
dGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQorLy8vICAgICAgICAgIHRvIHRoZSBzaXpl
IG9mIFxhIEEgb3IgXGEgQi4NCisvLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBiaXQgbWFz
ayBpcyBub24temVybywgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQorI2RlZmluZSBfbW1fY21waXN0
cmMoQSwgQiwgTSkgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cmljMTI4KChfX3Yx
NnFpKShfX20xMjhpKShBKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkpDQorDQorLy8vIFVzZXMgdGhlIGltbWVk
aWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQorLy8v
ICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5l
ZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyBiaXQg
MCBvZiB0aGUgcmVzdWx0aW5nIGJpdCBtYXNrLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fY21waXN0cm8oX19tMTI4
aSBBLCBfX20xMjhpIEIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElT
VFJJIDwvYz4NCisvLy8gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4g
OC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJz
IGFyZSBieXRlcyBvcg0KKy8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0
byBwZXJmb3JtLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEg
Zm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAg
IDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBc
bg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBE
ZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQorLy8v
ICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3Ig
ZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4g
XG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBh
cmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQorLy8v
ICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRz
IGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBj
b3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEgQiBm
b3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9yIHN1
YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQorLy8vICAgIEJpdHMgWzU6NF06IERldGVybWlu
ZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8g
ICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAg
ICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2su
IFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRo
ZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFs
DQorLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4NCisvLy8gXHJl
dHVybnMgUmV0dXJucyBiaXQgMCBvZiB0aGUgcmVzdWx0aW5nIGJpdCBtYXNrLg0KKyNkZWZpbmUg
X21tX2NtcGlzdHJvKEEsIEIsIE0pIFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJp
bzEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKE0pKQ0KKw0KKy8vLyBVc2Vz
IHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0
cmluZw0KKy8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBp
cyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJl
dHVybnMgMSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQSBpcyBsZXNzIHRoYW4N
CisvLy8gICAgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1f
Y21waXN0cnMoX19tMTI4aSBBLCBfX20xMjhpIEIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNv
ZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENN
UElTVFJJIC8gUENNUElTVFJJIDwvYz4NCisvLy8gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFy
YW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFt
IE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVy
IHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUg
b2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1p
bmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRl
cyBcbg0KKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgICAgMTA6IDE2
IHNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAg
ICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBt
ZXRob2QuIFxuDQorLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBp
cyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAgICAgICAgdGhlIGNoYXJh
Y3RlcnMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBp
biBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQorLy8vICAgICAgICAg
IGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRz
IGluIFxhIEEsDQorLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1p
bmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJl
IGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCisvLy8g
ICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAgMTE6IFN1YnN0cmluZzog
U2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQorLy8vICAgIEJp
dHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50
IG9uIHRoZSBiaXQNCisvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzLiBcbg0KKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMDE6IE5l
Z2F0ZSB0aGUgYml0IG1hc2suIFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCisvLy8g
ICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXgg
bGVzcyB0aGFuIG9yIGVxdWFsDQorLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3Ig
XGEgQi4gXG4NCisvLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0
cmluZyBpbiBcYSBBIGlzIGxlc3MgdGhhbiB0aGUNCisvLy8gICAgbWF4aW11bSwgb3RoZXJ3aXNl
LCByZXR1cm5zIDAuDQorI2RlZmluZSBfbW1fY21waXN0cnMoQSwgQiwgTSkgXA0KKyAgKGludClf
X2J1aWx0aW5faWEzMl9wY21waXN0cmlzMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwg
KGludCkoTSkpDQorDQorLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVy
Zm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQorLy8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5
IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisv
Ly8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmlu
ZyBpbiBcYSBCIGlzIGxlc3MgdGhhbg0KKy8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCBy
ZXR1cm5zIDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gXGNvZGUNCisvLy8gaW50IF9tbV9jbXBpc3RyeihfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29u
c3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KKy8vLyBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8g
ICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAg
IGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3Bl
cmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQorLy8v
ICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQorLy8v
ICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8vICAg
ICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29y
ZHMgXG4NCisvLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6IDgg
c2lnbmVkIHdvcmRzIFxuDQorLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29u
IHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0OiBF
YWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0K
Ky8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAxOiBS
YW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNv
bXBhcmlzb24NCisvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZv
ciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxlc3Mg
dGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisvLy8g
ICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFj
dGVycyBpbiBcYSBBIGFuZA0KKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCisv
Ly8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMg
b2YgXGEgQS4gXG4NCisvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVy
Zm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAgICBt
YXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVmZmVj
dC4gXG4NCisvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAgICAx
MDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkg
Zm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAgICAg
dG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLg0KKy8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYg
dGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMgbGVzcyB0aGFuIHRoZQ0KKy8vLyAg
ICBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCisjZGVmaW5lIF9tbV9jbXBpc3RyeihB
LCBCLCBNKSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaXoxMjgoKF9fdjE2cWkp
KF9fbTEyOGkpKEEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9f
djE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCisNCisvLy8gVXNlcyB0aGUgaW1tZWRpYXRl
IG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCisvLy8gICAg
ZGF0YSB3aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGlu
IHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhl
IGJpdCBtYXNrIGlzIHplcm8gYW5kIHRoZSBsZW5ndGggb2YgdGhlDQorLy8vICAgIHN0cmluZyBp
biBcYSBCIGlzIHRoZSBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21t
X2NtcGVzdHJhKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50
IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgLyBQQ01QRVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29t
cGFyZWQuDQorLy8vIFxwYXJhbSBMQQ0KKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVz
IHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIExCDQorLy8vICAg
IEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxh
IEIuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNw
ZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCisvLy8gICAgd29y
ZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4NCisvLy8gICAgQml0
cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCisvLy8gICAgICAwMDog
MTYgdW5zaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0K
Ky8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAxMTogOCBzaWduZWQg
d29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBh
bmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hh
cmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQorLy8vICAg
ICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMDE6IFJhbmdlczog
RWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNv
bg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4t
aW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9y
IGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDEw
OiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGlu
IFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KKy8vLyAgICAg
IDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBB
LiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEg
b25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAgICAgICAgICAgICAgIG1hc2sgb2Yg
dGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0K
Ky8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAgICAgIDEwOiBObyBl
ZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0
cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KKy8vLyAgICAgICAgICB0byB0aGUg
c2l6ZSBvZiBcYSBBIG9yIFxhIEIuDQorLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgYml0
IG1hc2sgaXMgemVybyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluDQorLy8vICAgIFxh
IEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KKyNkZWZpbmUgX21tX2Nt
cGVzdHJhKEEsIExBLCBCLCBMQiwgTSkgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl9wY21wZXN0
cmlhMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgKGludCkoTEEpLCBcDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiks
IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkNCisNCisv
Ly8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNv
biBvZiBzdHJpbmcNCisvLy8gICAgZGF0YSB3aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhz
IHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBc
YSBCLiBSZXR1cm5zIDEgaWYgdGhlIHJlc3VsdGluZyBtYXNrIGlzIG5vbi16ZXJvLCBvdGhlcndp
c2UsDQorLy8vICAgIHJldHVybnMgMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX2NtcGVzdHJjKF9fbTEyOGkgQSwg
aW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNU
UkkgLyBQQ01QRVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IEENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBM
QQ0KKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0
cmluZyBpbiBcYSBBLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAg
ICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIExCDQorLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVj
aWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQorLy8vIFxwYXJhbSBNDQor
Ly8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUg
Y2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCisvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNv
bXBhcmlzb24gdG8gcGVyZm9ybS4gXG4NCisvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNv
dXJjZSBkYXRhIGZvcm1hdC4gXG4NCisvLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4N
CisvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICAgIDEwOiAxNiBzaWdu
ZWQgYnl0ZXMgXG4NCisvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCisvLy8gICAgQml0
cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9k
LiBcbg0KKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29t
cGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQorLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJz
IGluIFxhIEEuIFxuDQorLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEg
QiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbg0KKy8vLyAgICAgICAgICBiYXNp
cyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBc
YSBBLA0KKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhl
ZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNo
IHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQorLy8vICAgICAg
ICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJj
aCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1
OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0
aGUgYml0DQorLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4gXG4NCisvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDAxOiBOZWdhdGUg
dGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAg
MTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3Mg
dGhhbiBvciBlcXVhbA0KKy8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIu
IFxuDQorLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgcmVzdWx0aW5nIG1hc2sgaXMgbm9u
LXplcm8sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KKyNkZWZpbmUgX21tX2NtcGVzdHJjKEEsIExB
LCBCLCBMQiwgTSkgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl9wY21wZXN0cmljMTI4KChfX3Yx
NnFpKShfX20xMjhpKShBKSwgKGludCkoTEEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkNCisNCisvLy8gVXNlcyB0aGUg
aW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcN
CisvLy8gICAgZGF0YSB3aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29u
dGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5z
IGJpdCAwIG9mIHRoZSByZXN1bHRpbmcgYml0IG1hc2suDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9jbXBlc3Rybyhf
X20xMjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsNCisvLy8g
XGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUENNUEVTVFJJIC8gUENNUEVTVFJJIDwvYz4NCisvLy8gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8v
LyBccGFyYW0gTEENCisvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3Ro
IG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCisvLy8gXHBhcmFtIEINCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8g
YmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBMQg0KKy8vLyAgICBBbiBpbnRlZ2Vy
IHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLg0KKy8vLyBc
cGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdo
ZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQorLy8vICAgIHdvcmRzIGFuZCB0aGUg
dHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQorLy8vICAgIEJpdHMgWzE6MF06IERl
dGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8vICAgICAgMDA6IDE2IHVuc2lnbmVk
IGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCisvLy8gICAgICAx
MDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQor
Ly8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0
aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBc
YSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KKy8vLyAgICAgICAgICB0aGUg
Y2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFj
dGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCisvLy8gICAg
ICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxl
bWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Ig
b2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAxMDogTWF0Y2g6IENv
bXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0K
Ky8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCisvLy8gICAgICAxMTogU3Vic3Ry
aW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4NCisvLy8g
ICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBs
ZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAw
MTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0K
Ky8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBp
bmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEg
QSBvciBcYSBCLg0KKy8vLyBccmV0dXJucyBSZXR1cm5zIGJpdCAwIG9mIHRoZSByZXN1bHRpbmcg
Yml0IG1hc2suDQorI2RlZmluZSBfbW1fY21wZXN0cm8oQSwgTEEsIEIsIExCLCBNKSBcDQorICAo
aW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaW8xMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAo
aW50KShMQSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZx
aSkoX19tMTI4aSkoQiksIChpbnQpKExCKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChpbnQpKE0pKQ0KKw0KKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBc
YSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KKy8vLyAgICBkYXRhIHdpdGgg
ZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9w
ZXJhbmRzDQorLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0aGUgbGVuZ3RoIG9m
IHRoZSBzdHJpbmcgaW4gXGEgQSBpcyBsZXNzIHRoYW4NCisvLy8gICAgdGhlIG1heGltdW0sIG90
aGVyd2lzZSwgcmV0dXJucyAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fY21wZXN0cnMoX19tMTI4aSBBLCBpbnQg
TEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAv
IFBDTVBFU1RSSSA8L2M+DQorLy8vIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gQQ0K
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIExBDQor
Ly8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5n
IGluIFxhIEEuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNv
bXBhcmVkLg0KKy8vLyBccGFyYW0gTEINCisvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmll
cyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4NCisvLy8gXHBhcmFtIE0NCisvLy8g
ICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFy
YWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFy
aXNvbiB0byBwZXJmb3JtLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNl
IGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KKy8v
LyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgICAgMTA6IDE2IHNpZ25lZCBi
eXRlcyBcbg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICBCaXRzIFsz
OjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxu
DQorLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJl
ZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4g
XGEgQS4gXG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlz
IGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQorLy8vICAgICAgICAgIGJhc2lzIGlz
IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEs
DQorLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVs
ZW1lbnRzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFp
ciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCisvLy8gICAgICAgICAg
XGEgQiBmb3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxh
IEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQorLy8vICAgIEJpdHMgWzU6NF06
IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IGluIHRoZSBi
aXQNCisvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBc
bg0KKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUg
Yml0IG1hc2suIFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAxMTog
TmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFu
IG9yIGVxdWFsDQorLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4N
CisvLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBc
YSBBIGlzIGxlc3MgdGhhbiB0aGUNCisvLy8gICAgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5z
IDAuDQorI2RlZmluZSBfbW1fY21wZXN0cnMoQSwgTEEsIEIsIExCLCBNKSBcDQorICAoaW50KV9f
YnVpbHRpbl9pYTMyX3BjbXBlc3RyaXMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShM
QSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19t
MTI4aSkoQiksIChpbnQpKExCKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChpbnQpKE0pKQ0KKw0KKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRv
IHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KKy8vLyAgICBkYXRhIHdpdGggZXhwbGlj
aXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRz
DQorLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBz
dHJpbmcgaW4gXGEgQiBpcyBsZXNzIHRoYW4NCisvLy8gICAgdGhlIG1heGltdW0sIG90aGVyd2lz
ZSwgcmV0dXJucyAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fY21wZXN0cnooX19tMTI4aSBBLCBpbnQgTEEsIF9f
bTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8v
LyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIExBDQorLy8vICAgIEFuIGludGVnZXIgdGhhdCBz
cGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuDQorLy8vIFxwYXJhbSBC
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTEIN
CisvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJp
bmcgaW4gXGEgQi4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9w
ZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8v
LyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KKy8v
LyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAg
ICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyAgXG4NCisvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3
b3JkcyBcbg0KKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAxMTog
OCBzaWduZWQgd29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlz
b24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAgIDAwOiBTdWJzZXQ6
IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxs
DQorLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMDE6
IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUg
Y29tcGFyaXNvbg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
Zm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAgICAgICBhbmQgbGVz
cyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KKy8v
LyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFy
YWN0ZXJzIGluIFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0K
Ky8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hl
cyBvZiBcYSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBw
ZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAgICAgICAgICAgICAg
IG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAgICAwMDogTm8gZWZm
ZWN0LiBcbg0KKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAgICAg
IDEwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25s
eSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KKy8vLyAgICAgICAg
ICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuDQorLy8vIFxyZXR1cm5zIFJldHVybnMgMSBp
ZiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQiBpcyBsZXNzIHRoYW4gdGhlDQorLy8v
ICAgIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KKyNkZWZpbmUgX21tX2NtcGVzdHJ6
KEEsIExBLCBCLCBMQiwgTSkgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl9wY21wZXN0cml6MTI4
KChfX3YxNnFpKShfX20xMjhpKShBKSwgKGludCkoTEEpLCBcDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkNCisNCisvKiBTU0U0
LjIgQ29tcGFyZSBQYWNrZWQgRGF0YSAtLSBHcmVhdGVyIFRoYW4uICAqLw0KKy8vLyBDb21wYXJl
cyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDY0LWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQN
CisvLy8gICAgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRo
ZSBmaXJzdCBvcGVyYW5kIGFyZQ0KKy8vLyAgICBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNl
Y29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBHVFEgLyBQ
Q01QR1RRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGd0X2VwaTY0KF9fbTEyOGkg
X19WMSwgX19tMTI4aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkoKF9fdjJkaSlfX1Yx
ID4gKF9fdjJkaSlfX1YyKTsNCit9DQorDQorLyogU1NFNC4yIEFjY3VtdWxhdGUgQ1JDMzIuICAq
Lw0KKy8vLyBBZGRzIHRoZSB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gdGhlIENSQy0zMkMg
Y2hlY2tzdW0gb2YgdGhlDQorLy8vICAgIHVuc2lnbmVkIGNoYXIgb3BlcmFuZC4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IENSQzMyQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19DDQorLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQg
dG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Ygb3BlcmFuZA0KKy8vLyAgICBcYSAgX19ELg0KKy8v
LyBccGFyYW0gX19EDQorLy8vICAgIEFuIHVuc2lnbmVkIDgtYml0IGludGVnZXIgb3BlcmFuZCB1
c2VkIHRvIGNvbXB1dGUgdGhlIENSQy0zMkMgY2hlY2tzdW0uDQorLy8vIFxyZXR1cm5zIFRoZSBy
ZXN1bHQgb2YgYWRkaW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9m
DQorLy8vICAgIG9wZXJhbmQgXGEgX19ELg0KK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGlu
dCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3JjMzJfdTgodW5zaWduZWQgaW50IF9fQywgdW5z
aWduZWQgY2hhciBfX0QpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMycWkoX19D
LCBfX0QpOw0KK30NCisNCisvLy8gQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRv
IHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQ0KKy8vLyAgICB1bnNpZ25lZCBzaG9ydCBvcGVy
YW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJXIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX0MNCisvLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciBv
cGVyYW5kIHRvIGFkZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiBvcGVyYW5kDQorLy8vICAg
IFxhIF9fRC4NCisvLy8gXHBhcmFtIF9fRA0KKy8vLyAgICBBbiB1bnNpZ25lZCAxNi1iaXQgaW50
ZWdlciBvcGVyYW5kIHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4NCisvLy8g
XHJldHVybnMgVGhlIHJlc3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0z
MkMgY2hlY2tzdW0gb2YNCisvLy8gICAgb3BlcmFuZCBcYSBfX0QuDQorc3RhdGljIF9faW5saW5l
X18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jcmMzMl91MTYodW5zaWdu
ZWQgaW50IF9fQywgdW5zaWduZWQgc2hvcnQgX19EKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9jcmMzMmhpKF9fQywgX19EKTsNCit9DQorDQorLy8vIEFkZHMgdGhlIGZpcnN0IHVuc2ln
bmVkIGludGVnZXIgb3BlcmFuZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KKy8vLyAgICB0
aGUgc2Vjb25kIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IENSQzMyTCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19D
DQorLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQgdG8gdGhlIENSQy0z
MkMgY2hlY2tzdW0gb2Ygb3BlcmFuZA0KKy8vLyAgICBcYSBfX0QuDQorLy8vIFxwYXJhbSBfX0QN
CisvLy8gICAgQW4gdW5zaWduZWQgMzItYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1
dGUgdGhlIENSQy0zMkMgY2hlY2tzdW0uDQorLy8vIFxyZXR1cm5zIFRoZSByZXN1bHQgb2YgYWRk
aW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mDQorLy8vICAgIG9w
ZXJhbmQgXGEgX19ELg0KK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY3JjMzJfdTMyKHVuc2lnbmVkIGludCBfX0MsIHVuc2lnbmVkIGludCBf
X0QpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMyc2koX19DLCBfX0QpOw0KK30N
CisNCisjaWZkZWYgX194ODZfNjRfXw0KKy8vLyBBZGRzIHRoZSB1bnNpZ25lZCBpbnRlZ2VyIG9w
ZXJhbmQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YgdGhlDQorLy8vICAgIHVuc2lnbmVkIDY0
LWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMz
MlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fQw0KKy8vLyAgICBBbiB1
bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9m
IG9wZXJhbmQNCisvLy8gICAgXGEgX19ELg0KKy8vLyBccGFyYW0gX19EDQorLy8vICAgIEFuIHVu
c2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQgdXNlZCB0byBjb21wdXRlIHRoZSBDUkMtMzJD
IGNoZWNrc3VtLg0KKy8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBvcGVyYW5kIFxh
IF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KKy8vLyAgICBvcGVyYW5kIFxhIF9fRC4N
CitzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2NyYzMyX3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19DLCB1bnNpZ25lZCBsb25nIGxv
bmcgX19EKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jcmMzMmRpKF9fQywgX19EKTsN
Cit9DQorI2VuZGlmIC8qIF9feDg2XzY0X18gKi8NCisNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FU
VFJTDQorDQorI2luY2x1ZGUgPHBvcGNudGludHJpbi5oPg0KKw0KKyNlbmRpZiAvKiBfX1NNTUlO
VFJJTl9IICovDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90bW1pbnRyaW4uaCBiL2luY2x1ZGUvdG1t
aW50cmluLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi43YTk0MDk2DQot
LS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL3RtbWludHJpbi5oDQpAQCAtMCwwICsxLDc5MCBA
QA0KKy8qPT09LS0tLSB0bW1pbnRyaW4uaCAtIFNTU0UzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5
IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkN
CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCisgKiB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F
TlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF
UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCisgKiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBUSEUgU09GVFdBUkUuDQor
ICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lmbmRlZiBfX1RNTUlOVFJJ
Tl9IDQorI2RlZmluZSBfX1RNTUlOVFJJTl9IDQorDQorI2luY2x1ZGUgPHBtbWludHJpbi5oPg0K
Kw0KKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGlu
IHRoaXMgZmlsZS4gKi8NCisjaWZkZWYgX19HTlVDX18NCisjZGVmaW5lIF9fREVGQVVMVF9GTl9B
VFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9f
YXJ0aWZpY2lhbF9fKSkNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19hdHRyaWJ1
dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp
DQorI2Vsc2UNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzc2UzIiksIF9fbWluX3Zl
Y3Rvcl93aWR0aF9fKDY0KSkpDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW14
LHNzc2UzIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQorI2VuZGlmDQorDQorLy8vIENv
bXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBwYWNrZWQgOC1iaXQgc2ln
bmVkDQorLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRo
ZSA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQorLy8vICAgIHJlc3VsdHMgaW4gdGhlIGRlc3RpbmF0
aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQQUJTQiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzggeCBpOF0u
DQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFi
c29sdXRlIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9hYnNf
cGk4KF9fbTY0IF9fYSkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFi
c2IoKF9fdjhxaSlfX2EpOw0KK30NCisNCisvLy8gQ29tcHV0ZXMgdGhlIGFic29sdXRlIHZhbHVl
IG9mIGVhY2ggb2YgdGhlIHBhY2tlZCA4LWJpdCBzaWduZWQNCisvLy8gICAgaW50ZWdlcnMgaW4g
dGhlIHNvdXJjZSBvcGVyYW5kIGFuZCBzdG9yZXMgdGhlIDgtYml0IHVuc2lnbmVkIGludGVnZXIN
CisvLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIFxjIFZQQUJTQiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUN
CisvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWJzX2VwaTgoX19tMTI4aSBfX2EpDQorew0K
KyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFic2IxMjgoKF9fdjE2cWkpX19h
KTsNCit9DQorDQorLy8vIENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRo
ZSBwYWNrZWQgMTYtYml0IHNpZ25lZA0KKy8vLyAgICBpbnRlZ2VycyBpbiB0aGUgc291cmNlIG9w
ZXJhbmQgYW5kIHN0b3JlcyB0aGUgMTYtYml0IHVuc2lnbmVkIGludGVnZXINCisvLy8gICAgcmVz
dWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBB
QlNXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0
IHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgZWxlbWVu
dHMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZO
X0FUVFJTX01NWA0KK19tbV9hYnNfcGkxNihfX202NCBfX2EpDQorew0KKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BhYnN3KChfX3Y0aGkpX19hKTsNCit9DQorDQorLy8vIENvbXB1
dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBwYWNrZWQgMTYtYml0IHNpZ25l
ZA0KKy8vLyAgICBpbnRlZ2VycyBpbiB0aGUgc291cmNlIG9wZXJhbmQgYW5kIHN0b3JlcyB0aGUg
MTYtYml0IHVuc2lnbmVkIGludGVnZXINCisvLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRp
b24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQQUJTVyBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2
XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGFic29sdXRlIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWJz
X2VwaTE2KF9fbTEyOGkgX19hKQ0KK3sNCisgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p
YTMyX3BhYnN3MTI4KChfX3Y4aGkpX19hKTsNCit9DQorDQorLy8vIENvbXB1dGVzIHRoZSBhYnNv
bHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBwYWNrZWQgMzItYml0IHNpZ25lZA0KKy8vLyAgICBp
bnRlZ2VycyBpbiB0aGUgc291cmNlIG9wZXJhbmQgYW5kIHN0b3JlcyB0aGUgMzItYml0IHVuc2ln
bmVkIGludGVnZXINCisvLy8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIFxjIFBBQlNEIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFic29sdXRlIHZhbHVl
cyBvZiB0aGUNCisvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9hYnNfcGkzMihfX202NCBf
X2EpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhYnNkKChfX3Yyc2kp
X19hKTsNCit9DQorDQorLy8vIENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9m
IHRoZSBwYWNrZWQgMzItYml0IHNpZ25lZA0KKy8vLyAgICBpbnRlZ2VycyBpbiB0aGUgc291cmNl
IG9wZXJhbmQgYW5kIHN0b3JlcyB0aGUgMzItYml0IHVuc2lnbmVkIGludGVnZXINCisvLy8gICAg
cmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxj
IFZQQUJTRCBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUNCisvLy8gICAg
ZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fYWJzX2VwaTMyKF9fbTEyOGkgX19hKQ0KK3sNCisgICAgcmV0
dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhYnNkMTI4KChfX3Y0c2kpX19hKTsNCit9DQor
DQorLy8vIENvbmNhdGVuYXRlcyB0aGUgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFu
ZHMsIGFuZA0KKy8vLyAgICByaWdodC1zaGlmdHMgdGhlIHJlc3VsdCBieSB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRpYXRlDQorLy8vICAgIG9wZXJhbmQuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8g
X19tMTI4aSBfbW1fYWxpZ25yX2VwaTgoX19tMTI4aSBhLCBfX20xMjhpIGIsIGNvbnN0IGludCBu
KTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIFxjIFBBTElHTlIgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBiDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzE2IHggaThdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8v
IFxwYXJhbSBuDQorLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1h
bnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByaWdodC1zaGlm
dGVkDQorLy8vICAgIHZhbHVlLg0KKyNkZWZpbmUgX21tX2FsaWducl9lcGk4KGEsIGIsIG4pIFwN
CisgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhbGlnbnIxMjgoKF9fdjE2cWkpKF9fbTEyOGkp
KGEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShf
X20xMjhpKShiKSwgKG4pKQ0KKw0KKy8vLyBDb25jYXRlbmF0ZXMgdGhlIHR3byA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb3BlcmFuZHMsIGFuZCByaWdodC1zaGlmdHMNCisvLy8gICAgdGhlIHJlc3Vs
dCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRpYXRlIG9wZXJh
bmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNv
ZGUNCisvLy8gX19tNjQgX21tX2FsaWducl9waTgoX19tNjQgYSwgX19tNjQgYiwgY29uc3QgaW50
IG4pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgXGMgUEFMSUdOUiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisv
Ly8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBiDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBv
ZiBbOCB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBc
cGFyYW0gbg0KKy8vLyAgICBBbiBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyBtYW55
IGJ5dGVzIHRvIHJpZ2h0LXNoaWZ0IHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByaWdodC1zaGlmdGVk
DQorLy8vICAgIHZhbHVlLg0KKyNkZWZpbmUgX21tX2FsaWducl9waTgoYSwgYiwgbikgXA0KKyAg
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhbGlnbnIoKF9fdjhxaSkoX19tNjQpKGEpLCAoX192OHFp
KShfX202NCkoYiksIChuKSkNCisNCisvLy8gSG9yaXpvbnRhbGx5IGFkZHMgdGhlIGFkamFjZW50
IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMiBwYWNrZWQNCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3JzIG9mIFs4IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBIQURE
VyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
LiBUaGUNCisvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBp
biB0aGUgbG93ZXIgYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgc3VtcyBv
ZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQorLy8vICAg
IGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2
XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YNCisvLy8gICAgYm90aCBvcGVyYW5k
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9o
YWRkX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9waGFkZHcxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsN
Cit9DQorDQorLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1
ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4
IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSEFEREQgaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAg
IGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJp
dHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBh
cmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0
aGUgaG9yaXpvbnRhbCBzdW1zIG9mDQorLy8vICAgIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1faGFkZF9lcGkzMihfX20x
MjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfcGhhZGRkMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9fYik7DQorfQ0KKw0KKy8vLyBI
b3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBp
biAyIHBhY2tlZA0KKy8vLyAgICA2NC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkxNl0uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIQUREVyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIHN1bXMg
b2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KKy8vLyAg
ICBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0K
Ky8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1
cHBlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSA2
NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMg
b2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RF
RkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2hhZGRfcGkxNihfX202NCBfX2EsIF9fbTY0IF9fYikN
Cit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhhZGR3KChfX3Y0aGkpX19h
LCAoX192NGhpKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNl
bnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZA0KKy8vLyAgICA2NC1iaXQg
dmVjdG9ycyBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIQURE
RCBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2
ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
IFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGlu
IHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2Yg
dGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBk
ZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBj
b250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2hh
ZGRfcGkzMihfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19i
dWlsdGluX2lhMzJfcGhhZGRkKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQorfQ0KKw0KKy8v
LyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5l
ZCBpbiAyIHBhY2tlZA0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLiBQb3Np
dGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweDdGRkYgYXJlDQorLy8vICAgIHNhdHVyYXRlZCB0byAw
eDdGRkYuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvDQor
Ly8vICAgIDB4ODAwMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBIQUREU1cgaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhl
DQorLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhl
IGxvd2VyIGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhl
IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0
aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29u
dGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzYXR1cmF0ZWQNCisvLy8gICAgc3VtcyBvZiBib3RoIG9w
ZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2hhZGRzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waGFkZHN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhp
KV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMg
b2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZA0KKy8vLyAgICA2NC1iaXQgdmVjdG9ycyBv
ZiBbNCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUNCisvLy8g
ICAgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFy
ZSBzYXR1cmF0ZWQgdG8NCisvLy8gICAgMHg4MDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSBcYyBQSEFERFNXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFy
ZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250
YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhl
DQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc2F0dXJhdGVkDQorLy8vICAgIHN1
bXMgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlNfTU1YDQorX21tX2hhZGRzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0K
KyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BoYWRkc3coKF9fdjRoaSlfX2EsIChf
X3Y0aGkpX19iKTsNCit9DQorDQorLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFj
ZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KKy8vLyAgICBwYWNrZWQgMTI4LWJp
dCB2ZWN0b3JzIG9mIFs4IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBI
U1VCVyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLiBUaGUNCisvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1
ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRp
b24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkx
Nl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhv
cml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhl
IHVwcGVyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRp
ZmZlcmVuY2VzDQorLy8vICAgIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1faHN1Yl9lcGkxNihfX20xMjhpIF9fYSwg
X19tMTI4aSBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGhz
dWJ3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFs
bHkgc3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIN
CisvLy8gICAgcGFja2VkIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkzMl0uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIFxjIFZQSFNVQkQgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgZGlmZmVy
ZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YN
CisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZh
bHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5h
dGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFp
bmluZyB0aGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcw0KKy8vLyAgICBvZiBib3RoIG9wZXJhbmRz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2hz
dWJfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3Boc3ViZDEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2IpOw0K
K30NCisNCisvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2Yg
dmFsdWVzIGNvbnRhaW5lZCBpbiAyDQorLy8vICAgIHBhY2tlZCA2NC1iaXQgdmVjdG9ycyBvZiBb
NCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIU1VCVyBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAg
ICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGlu
IHRoZSBsb3dlciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVu
Y2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mDQor
Ly8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9m
IFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzDQorLy8vICAg
IG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZO
X0FUVFJTX01NWA0KK19tbV9oc3ViX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAg
ICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Boc3VidygoX192NGhpKV9fYSwgKF9fdjRo
aSlfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQg
cGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyDQorLy8vICAgIHBhY2tlZCA2NC1iaXQgdmVj
dG9ycyBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIU1VCRCBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0
b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRo
ZQ0KKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUg
c3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFs
IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBi
aXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQg
dmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2Vz
DQorLy8vICAgIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9oc3ViX3BpMzIoX19tNjQgX19hLCBfX202NCBfX2Ip
DQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Boc3ViZCgoX192MnNpKV9f
YSwgKF9fdjJzaSlfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUg
YWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyDQorLy8vICAgIHBhY2tlZCAx
MjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLiBQb3NpdGl2ZSBkaWZmZXJlbmNlcyBncmVhdGVy
IHRoYW4NCisvLy8gICAgMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBk
aWZmZXJlbmNlcyBsZXNzIHRoYW4gMHg4MDAwIGFyZQ0KKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHg4
MDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJTVyBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHgg
aTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAg
aG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0
aGUgbG93ZXIgYml0cyBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5j
ZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YNCisv
Ly8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZA0KKy8vLyAgICBk
aWZmZXJlbmNlcyBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2hzdWJzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhp
IF9fYikNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waHN1YnN3MTI4
KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgc3Vi
dHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDINCisvLy8g
ICAgcGFja2VkIDY0LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgZGlmZmVyZW5j
ZXMgZ3JlYXRlciB0aGFuDQorLy8vICAgIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4g
TmVnYXRpdmUgZGlmZmVyZW5jZXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUNCisvLy8gICAgc2F0dXJh
dGVkIHRvIDB4ODAwMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEhTVUJTVyBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0K
Ky8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3Rv
cmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIGRp
ZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRz
IG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVj
dG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZA0KKy8v
LyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1faHN1YnNfcGkxNihfX202NCBfX2EsIF9f
bTY0IF9fYikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhzdWJzdygo
X192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyBjb3JyZXNw
b25kaW5nIHBhaXJzIG9mIHBhY2tlZCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQorLy8vICAgIHZh
bHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kIGFuZCBwYWNrZWQgOC1i
aXQgc2lnbmVkDQorLy8vICAgIGludGVnZXIgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgc2Vjb25k
IHNvdXJjZSBvcGVyYW5kLCBhZGRzIHBhaXJzIG9mDQorLy8vICAgIGNvbnRpZ3VvdXMgcHJvZHVj
dHMgd2l0aCBzaWduZWQgc2F0dXJhdGlvbiwgYW5kIHdyaXRlcyB0aGUgMTYtYml0IHN1bXMgdG8N
CisvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8v
DQorLy8vICAgIEZvciBleGFtcGxlLCBiaXRzIFs3OjBdIG9mIGJvdGggb3BlcmFuZHMgYXJlIG11
bHRpcGxpZWQsIGJpdHMgWzE1OjhdIG9mDQorLy8vICAgIGJvdGggb3BlcmFuZHMgYXJlIG11bHRp
cGxpZWQsIGFuZCB0aGUgc3VtIG9mIGJvdGggcmVzdWx0cyBpcyB3cml0dGVuIHRvDQorLy8vICAg
IGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgXGMgVlBNQUREVUJTVyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZmlyc3Qgc291cmNl
IG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgcHJvZHVjdHMg
b2YgYm90aA0KKy8vLyAgICBvcGVyYW5kczogXG4NCisvLy8gICAgXGEgUjAgOj0gKFxhIF9fYTAg
KiBcYSBfX2IwKSArIChcYSBfX2ExICogXGEgX19iMSkgXG4NCisvLy8gICAgXGEgUjEgOj0gKFxh
IF9fYTIgKiBcYSBfX2IyKSArIChcYSBfX2EzICogXGEgX19iMykgXG4NCisvLy8gICAgXGEgUjIg
Oj0gKFxhIF9fYTQgKiBcYSBfX2I0KSArIChcYSBfX2E1ICogXGEgX19iNSkgXG4NCisvLy8gICAg
XGEgUjMgOj0gKFxhIF9fYTYgKiBcYSBfX2I2KSArIChcYSBfX2E3ICogXGEgX19iNykgXG4NCisv
Ly8gICAgXGEgUjQgOj0gKFxhIF9fYTggKiBcYSBfX2I4KSArIChcYSBfX2E5ICogXGEgX19iOSkg
XG4NCisvLy8gICAgXGEgUjUgOj0gKFxhIF9fYTEwICogXGEgX19iMTApICsgKFxhIF9fYTExICog
XGEgX19iMTEpIFxuDQorLy8vICAgIFxhIFI2IDo9IChcYSBfX2ExMiAqIFxhIF9fYjEyKSArIChc
YSBfX2ExMyAqIFxhIF9fYjEzKSBcbg0KKy8vLyAgICBcYSBSNyA6PSAoXGEgX19hMTQgKiBcYSBf
X2IxNCkgKyAoXGEgX19hMTUgKiBcYSBfX2IxNSkNCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYWRkdWJzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWFkZHVi
c3cxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGll
cyBjb3JyZXNwb25kaW5nIHBhaXJzIG9mIHBhY2tlZCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQor
Ly8vICAgIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kIGFuZCBw
YWNrZWQgOC1iaXQgc2lnbmVkDQorLy8vICAgIGludGVnZXIgdmFsdWVzIGNvbnRhaW5lZCBpbiB0
aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLCBhZGRzIHBhaXJzIG9mDQorLy8vICAgIGNvbnRpZ3Vv
dXMgcHJvZHVjdHMgd2l0aCBzaWduZWQgc2F0dXJhdGlvbiwgYW5kIHdyaXRlcyB0aGUgMTYtYml0
IHN1bXMgdG8NCisvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRp
b24uDQorLy8vDQorLy8vICAgIEZvciBleGFtcGxlLCBiaXRzIFs3OjBdIG9mIGJvdGggb3BlcmFu
ZHMgYXJlIG11bHRpcGxpZWQsIGJpdHMgWzE1OjhdIG9mDQorLy8vICAgIGJvdGggb3BlcmFuZHMg
YXJlIG11bHRpcGxpZWQsIGFuZCB0aGUgc3VtIG9mIGJvdGggcmVzdWx0cyBpcyB3cml0dGVuIHRv
DQorLy8vICAgIGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgXGMgUE1BRERVQlNXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGZpcnN0
IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiBwcm9k
dWN0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzOiBcbg0KKy8vLyAgICBcYSBSMCA6PSAoXGEg
X19hMCAqIFxhIF9fYjApICsgKFxhIF9fYTEgKiBcYSBfX2IxKSBcbg0KKy8vLyAgICBcYSBSMSA6
PSAoXGEgX19hMiAqIFxhIF9fYjIpICsgKFxhIF9fYTMgKiBcYSBfX2IzKSBcbg0KKy8vLyAgICBc
YSBSMiA6PSAoXGEgX19hNCAqIFxhIF9fYjQpICsgKFxhIF9fYTUgKiBcYSBfX2I1KSBcbg0KKy8v
LyAgICBcYSBSMyA6PSAoXGEgX19hNiAqIFxhIF9fYjYpICsgKFxhIF9fYTcgKiBcYSBfX2I3KQ0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fbWFk
ZHVic19waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl9wbWFkZHVic3coKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsNCit9DQor
DQorLy8vIE11bHRpcGxpZXMgcGFja2VkIDE2LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMsIHRy
dW5jYXRlcyB0aGUgMzItYml0DQorLy8vICAgIHByb2R1Y3RzIHRvIHRoZSAxOCBtb3N0IHNpZ25p
ZmljYW50IGJpdHMgYnkgcmlnaHQtc2hpZnRpbmcsIHJvdW5kcyB0aGUNCisvLy8gICAgdHJ1bmNh
dGVkIHZhbHVlIGJ5IGFkZGluZyAxLCBhbmQgd3JpdGVzIGJpdHMgWzE2OjFdIHRvIHRoZSBkZXN0
aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBNVUxIUlNXIGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxw
YXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgcm91bmRlZCBhbmQgc2NhbGVkDQorLy8v
ICAgIHByb2R1Y3RzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbXVsaHJzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbXVsaHJz
dzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyBw
YWNrZWQgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgdHJ1bmNhdGVzIHRoZSAzMi1iaXQN
CisvLy8gICAgcHJvZHVjdHMgdG8gdGhlIDE4IG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBieSByaWdo
dC1zaGlmdGluZywgcm91bmRzIHRoZQ0KKy8vLyAgICB0cnVuY2F0ZWQgdmFsdWUgYnkgYWRkaW5n
IDEsIGFuZCB3cml0ZXMgYml0cyBbMTY6MV0gdG8gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBQTVVMSFJTVyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2
NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRh
aW5pbmcgdGhlIHJvdW5kZWQgYW5kIHNjYWxlZA0KKy8vLyAgICBwcm9kdWN0cyBvZiBib3RoIG9w
ZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgN
CitfbW1fbXVsaHJzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxocnN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7
DQorfQ0KKw0KKy8vLyBDb3BpZXMgdGhlIDgtYml0IGludGVnZXJzIGZyb20gYSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIHRvIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbiBvciBjbGVhcnMgOC1iaXQg
dmFsdWVzIGluIHRoZSBkZXN0aW5hdGlvbiwgYXMgc3BlY2lmaWVkIGJ5DQorLy8vICAgIHRoZSBz
ZWNvbmQgc291cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQU0hV
RkIgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
Y29udHJvbCBieXRlcyBjb3JyZXNwb25kaW5nIHRvDQorLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUg
ZGVzdGluYXRpb246DQorLy8vICAgIEJpdCA3OiBcbg0KKy8vLyAgICAxOiBDbGVhciB0aGUgY29y
cmVzcG9uZGluZyBieXRlIGluIHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMDogQ29weSB0
aGUgc2VsZWN0ZWQgc291cmNlIGJ5dGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUN
CisvLy8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzY6NF0gUmVzZXJ2ZWQuICBc
bg0KKy8vLyAgICBCaXRzIFszOjBdIHNlbGVjdCB0aGUgc291cmNlIGJ5dGUgdG8gYmUgY29waWVk
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
Y29waWVkIG9yIGNsZWFyZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3NodWZmbGVfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBf
X2IpDQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZiMTI4KChf
X3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIENvcGllcyB0aGUgOC1iaXQg
aW50ZWdlcnMgZnJvbSBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciB0byB0aGUNCisvLy8gICAgZGVz
dGluYXRpb24gb3IgY2xlYXJzIDgtYml0IHZhbHVlcyBpbiB0aGUgZGVzdGluYXRpb24sIGFzIHNw
ZWNpZmllZCBieQ0KKy8vLyAgICB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBQU0hVRkIgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFs
dWVzIHRvIGJlIGNvcGllZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgYnl0ZXMgY29ycmVzcG9uZGluZyB0bw0KKy8v
LyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uOg0KKy8vLyAgICBCaXQgNzogXG4NCisv
Ly8gICAgMTogQ2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUgZGVzdGluYXRpb24u
IFxuDQorLy8vICAgIDA6IENvcHkgdGhlIHNlbGVjdGVkIHNvdXJjZSBieXRlIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIGJ5dGUgaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBC
aXRzIFszOjBdIHNlbGVjdCB0aGUgc291cmNlIGJ5dGUgdG8gYmUgY29waWVkLg0KKy8vLyBccmV0
dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb3BpZWQgb3IgY2xl
YXJlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KK19tbV9zaHVmZmxlX3BpOChfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICAgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNodWZiKChfX3Y4cWkpX19hLCAoX192OHFpKV9f
Yik7DQorfQ0KKw0KKy8vLyBGb3IgZWFjaCA4LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3Vy
Y2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCisvLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25z
IGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyAg
ICBJZiB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRl
IHRoZSB0d28ncw0KKy8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUg
aW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQNCisvLy8gICAgdmFsdWUgdG8gdGhl
IGRlc3RpbmF0aW9uLiBJZiB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBwb3NpdGl2
ZSwNCisvLy8gICAgY29weSB0aGUgY29ycmVzcG9uZGluZyBieXRlIGZyb20gdGhlIGZpcnN0IHNv
dXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmDQorLy8vICAgIHRoZSBieXRlIGluIHRoZSBzZWNv
bmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4NCisvLy8g
ICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUFNJR05C
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNv
bnRyb2wgYnl0ZXMgY29ycmVzcG9uZGluZyB0bw0KKy8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRl
c3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9zaWduX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KK3sNCisgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaWduYjEyOCgoX192
MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQorfQ0KKw0KKy8vLyBGb3IgZWFjaCAxNi1iaXQgaW50
ZWdlciBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQsIHBlcmZvcm0gb25lIG9mDQorLy8vICAg
IHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ug
b3BlcmFuZC4NCisvLy8NCisvLy8gICAgSWYgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2Ug
aXMgbmVnYXRpdmUsIGNhbGN1bGF0ZSB0aGUgdHdvJ3MNCisvLy8gICAgY29tcGxlbWVudCBvZiB0
aGUgY29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0
DQorLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIHdvcmQgaW4gdGhlIHNl
Y29uZCBzb3VyY2UgaXMgcG9zaXRpdmUsDQorLy8vICAgIGNvcHkgdGhlIGNvcnJlc3BvbmRpbmcg
d29yZCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZg0KKy8vLyAg
ICB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0aGUgY29ycmVz
cG9uZGluZyB3b3JkIGluDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgXGMgVlBTSUdOVyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVz
IHRvIGJlIGNvcGllZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIHdvcmRzIGNvcnJlc3BvbmRpbmcgdG8NCisvLy8g
ICAgcG9zaXRpb25zIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2lnbl9lcGkxNihf
X20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWls
dGluX2lhMzJfcHNpZ253MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8v
LyBGb3IgZWFjaCAzMi1iaXQgaW50ZWdlciBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQsIHBl
cmZvcm0gb25lIG9mDQorLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQg
YnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8NCisvLy8gICAgSWYgdGhlIGRvdWJs
ZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgbmVnYXRpdmUsIGNhbGN1bGF0ZSB0aGUgdHdv
J3MNCisvLy8gICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBm
aXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0DQorLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0aW5h
dGlvbi4gSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMNCisvLy8gICAg
cG9zaXRpdmUsIGNvcHkgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBmcm9tIHRoZSBmaXJzdCBzb3Vy
Y2UgdG8gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUg
c2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB3
b3JkIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBT
SUdORCBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyBjb250cm9sIGRvdWJsZXdvcmRzIGNvcnJlc3BvbmRpbmcgdG8NCisvLy8gICAgcG9zaXRpb25z
IGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2lnbl9lcGkzMihfX20xMjhpIF9fYSwg
X19tMTI4aSBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNp
Z25kMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9fYik7DQorfQ0KKw0KKy8vLyBGb3IgZWFjaCA4
LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YN
CisvLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25k
IHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25k
IHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KKy8vLyAgICBjb21wbGVt
ZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdy
aXRlIHRoYXQNCisvLy8gICAgdmFsdWUgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgYnl0ZSBp
biB0aGUgc2Vjb25kIHNvdXJjZSBpcyBwb3NpdGl2ZSwNCisvLy8gICAgY29weSB0aGUgY29ycmVz
cG9uZGluZyBieXRlIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElm
DQorLy8vICAgIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRo
ZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4NCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQU0lHTkIgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIGNvcGllZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgYnl0ZXMgY29ycmVzcG9uZGluZyB0bw0K
Ky8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHRhbnQgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fc2lnbl9w
aTgoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRp
bl9pYTMyX3BzaWduYigoX192OHFpKV9fYSwgKF9fdjhxaSlfX2IpOw0KK30NCisNCisvLy8gRm9y
IGVhY2ggMTYtYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3Jt
IG9uZSBvZg0KKy8vLyAgICB0aGUgZm9sbG93aW5nIGFjdGlvbnMgYXMgc3BlY2lmaWVkIGJ5IHRo
ZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIElmIHRoZSB3b3JkIGluIHRo
ZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzDQorLy8vICAg
IGNvbXBsZW1lbnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBpbiB0aGUgZmlyc3Qgc291cmNl
LCBhbmQgd3JpdGUgdGhhdA0KKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRo
ZSB3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0KKy8vLyAgICBjb3B5IHRo
ZSBjb3JyZXNwb25kaW5nIHdvcmQgZnJvbSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZSBkZXN0aW5h
dGlvbi4gSWYNCisvLy8gICAgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgemVybywg
Y2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBpbg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBTSUdOVyBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCB3b3JkcyBjb3JyZXNwb25k
aW5nIHRvDQorLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19t
bV9zaWduX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BzaWdudygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisN
CisvLy8gRm9yIGVhY2ggMzItYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5k
LCBwZXJmb3JtIG9uZSBvZg0KKy8vLyAgICB0aGUgZm9sbG93aW5nIGFjdGlvbnMgYXMgc3BlY2lm
aWVkIGJ5IHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIElmIHRoZSBk
b3VibGV3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhl
IHR3bydzDQorLy8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91Ymxld29y
ZCBpbiB0aGUgZmlyc3Qgc291cmNlLCBhbmQNCisvLy8gICAgd3JpdGUgdGhhdCB2YWx1ZSB0byB0
aGUgZGVzdGluYXRpb24uIElmIHRoZSBkb3VibGV3b3JkIGluIHRoZSBzZWNvbmQNCisvLy8gICAg
c291cmNlIGlzIHBvc2l0aXZlLCBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZXdvcmQgZnJv
bSB0aGUgZmlyc3QNCisvLy8gICAgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIGRv
dWJsZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMNCisvLy8gICAgemVybywgY2xlYXIgdGhl
IGNvcnJlc3BvbmRpbmcgZG91Ymxld29yZCBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIFxjIFBTSUdORCBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1
ZXMgdG8gYmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdHdvIGNvbnRyb2wgZG91Ymxld29yZHMgY29ycmVzcG9uZGlu
Zw0KKy8vLyAgICB0byBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJu
cyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHRhbnQgdmFsdWVz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1f
c2lnbl9waTMyKF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl9wc2lnbmQoKF9fdjJzaSlfX2EsIChfX3Yyc2kpX19iKTsNCit9DQorDQor
I3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1Y
DQorDQorI2VuZGlmIC8qIF9fVE1NSU5UUklOX0ggKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRlL3ht
bWludHJpbi5oIGIvaW5jbHVkZS94bW1pbnRyaW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu
ZGV4IDAwMDAwMDAuLmUyNTQzYTcNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUveG1taW50
cmluLmgNCkBAIC0wLDAgKzEsMzEwMSBAQA0KKy8qPT09LS0tLSB4bW1pbnRyaW4uaCAtIFNTRSBp
bnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKg0K
KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGlu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p
dGF0aW9uIHRoZSByaWdodHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
DQorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVINCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS
QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg
SU4NCisgKiBUSEUgU09GVFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICov
DQorDQorI2lmbmRlZiBfX1hNTUlOVFJJTl9IDQorI2RlZmluZSBfX1hNTUlOVFJJTl9IDQorDQor
I2luY2x1ZGUgPG1taW50cmluLmg+DQorDQordHlwZWRlZiBpbnQgX192NHNpIF9fYXR0cmlidXRl
X18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCit0eXBlZGVmIGZsb2F0IF9fdjRzZiBfX2F0dHJp
YnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQordHlwZWRlZiBmbG9hdCBfX20xMjggX19h
dHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KKw0KKy8qIFVuc2lnbmVkIHR5cGVz
ICovDQordHlwZWRlZiB1bnNpZ25lZCBpbnQgX192NHN1IF9fYXR0cmlidXRlX18oKF9fdmVjdG9y
X3NpemVfXygxNikpKTsNCisNCisvKiBUaGlzIGhlYWRlciBzaG91bGQgb25seSBiZSBpbmNsdWRl
ZCBpbiBhIGhvc3RlZCBlbnZpcm9ubWVudCBhcyBpdCBkZXBlbmRzIG9uDQorICogYSBzdGFuZGFy
ZCBsaWJyYXJ5IHRvIHByb3ZpZGUgYWxsb2NhdGlvbiByb3V0aW5lcy4gKi8NCisjaWYgX19TVERD
X0hPU1RFRF9fDQorI2luY2x1ZGUgPG1tX21hbGxvYy5oPg0KKyNlbmRpZg0KKw0KKy8qIERlZmlu
ZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4g
Ki8NCisjaWZkZWYgIF9fR05VQ19fDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fZ251
X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNlDQor
I2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UiKSwgX19taW5fdmVjdG9yX3dpZHRoX18o
MTI4KSkpDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW14LHNzZSIpLCBfX21p
bl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KKyNlbmRpZg0KKw0KKyNkZWZpbmUgX01NX1NIVUZGTEUo
eiwgeSwgeCwgdykgKCgoeikgPDwgNikgfCAoKHkpIDw8IDQpIHwgKCh4KSA8PCAyKSB8ICh3KSkN
CisNCisNCisvLy8gQWRkcyB0aGUgMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVy
IGJpdHMgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFE
RFNTIC8gQUREU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9w
ZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHN1
bQ0KKy8vLyAgICBvZiB0aGUgbG93ZXIgMzIgYml0cyBvZiBib3RoIG9wZXJhbmRzLiBUaGUgdXBw
ZXIgOTYgYml0cyBhcmUgY29waWVkIGZyb20NCisvLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2Yg
dGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0K
KyAgX19hWzBdICs9IF9fYlswXTsNCisgIHJldHVybiBfX2E7DQorfQ0KKw0KKy8vLyBBZGRzIHR3
byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0sIGFuZCByZXR1cm5zIHRoZSByZXN1bHRz
IG9mDQorLy8vICAgIHRoZSBhZGRpdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZBRERQUyAvIEFERFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkX3BzKF9fbTEyOCBfX2Es
IF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpKChfX3Y0c2YpX19hICsgKF9fdjRz
ZilfX2IpOw0KK30NCisNCisvLy8gU3VidHJhY3RzIHRoZSAzMi1iaXQgZmxvYXQgdmFsdWUgaW4g
dGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBzZWNvbmQNCisvLy8gICAgb3BlcmFuZCBmcm9tIHRo
ZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlNVQlNTIC8gU1VCU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBtaW51ZW5kLiBUaGUgbG93ZXIgMzIgYml0cw0KKy8vLyAgICBvZiB0
aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
c3VidHJhaGVuZC4gVGhlIGxvd2VyIDMyDQorLy8vICAgIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFy
ZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAg
IGRpZmZlcmVuY2Ugb2YgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVw
cGVyIDk2IGJpdHMgYXJlDQorLy8vICAgIGNvcGllZCBmcm9tIHRoZSB1cHBlciA5NiBiaXRzIG9m
IHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1Yl9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sN
CisgIF9fYVswXSAtPSBfX2JbMF07DQorICByZXR1cm4gX19hOw0KK30NCisNCisvLy8gU3VidHJh
Y3RzIGVhY2ggb2YgdGhlIHZhbHVlcyBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgZnJvbSB0aGUgZmly
c3QNCisvLy8gICAgb3BlcmFuZCwgYm90aCBvZiB3aGljaCBhcmUgMTI4LWJpdCB2ZWN0b3JzIG9m
IFs0IHggZmxvYXRdIGFuZCByZXR1cm5zDQorLy8vICAgIHRoZSByZXN1bHRzIG9mIHRoZSBzdWJ0
cmFjdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQUyAvIFNVQlBTIDwv
Yz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWludWVuZC4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIHN1YnRyYWhlbmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2Vlbg0KKy8vLyAgICBib3Ro
IG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fc3ViX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20x
MjgpKChfX3Y0c2YpX19hIC0gKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyB0
d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlDQorLy8v
ICAgIG9wZXJhbmRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1VTFNTIC8gTVVM
U1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJl
IHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4NCisvLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1
c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0IG9mIHRoZSBsb3dlcg0KKy8vLyAg
ICAzMiBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQg
ZnJvbSB0aGUgdXBwZXIgOTYNCisvLy8gICAgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJh
bmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9t
dWxfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICBfX2FbMF0gKj0gX19iWzBdOw0K
KyAgcmV0dXJuIF9fYTsNCit9DQorDQorLy8vIE11bHRpcGxpZXMgdHdvIDEyOC1iaXQgdmVjdG9y
cyBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUNCisvLy8gICAgcmVzdWx0cyBvZiB0aGUg
bXVsdGlwbGljYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMUFMgLyBN
VUxQUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhl
IHByb2R1Y3RzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tdWxfcHMoX19tMTI4IF9fYSwgX19tMTI4
IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilfX2EgKiAoX192NHNmKV9fYik7
DQorfQ0KKw0KKy8vLyBEaXZpZGVzIHRoZSB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIDMyIGJpdHMg
b2YgdGhlIGZpcnN0IG9wZXJhbmQgYnkNCisvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUg
aW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJ
VlNTIC8gRElWU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaXZp
ZGVuZC4gVGhlIGxvd2VyIDMyDQorLy8vICAgIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2Vk
IGluIHRoZSBjYWxjdWxhdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuIFRoZSBsb3dlciAz
MiBiaXRzDQorLy8vICAgIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRp
b24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgcXVvdGllbnRzIG9mIHRoZQ0KKy8vLyAgICBsb3dlciAzMiBiaXRzIG9mIGJvdGgg
b3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUNCisvLy8gICAg
dXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9kaXZfc3MoX19tMTI4IF9fYSwg
X19tMTI4IF9fYikNCit7DQorICBfX2FbMF0gLz0gX19iWzBdOw0KKyAgcmV0dXJuIF9fYTsNCit9
DQorDQorLy8vIERpdmlkZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQUyAvIERJVlBTIDwvYz4gaW5zdHJ1Y3Rp
b25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aWRlbmQuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaXZp
c29yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHF1b3RpZW50cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fZGl2X3BzKF9fbTEyOCBf
X2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpKChfX3Y0c2YpX19hIC8gKF9f
djRzZilfX2IpOw0KK30NCisNCisvLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhl
IHZhbHVlIHN0b3JlZCBpbiB0aGUgbG93LW9yZGVyIGJpdHMNCisvLy8gICAgb2YgYSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZT
UVJUU1MgLyBTUVJUU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUNCisvLy8gICAgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBi
aXRzIG9mIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fc3FydF9zcyhfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4
KV9fYnVpbHRpbl9pYTMyX3NxcnRzcygoX192NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBDYWxjdWxh
dGVzIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZl
Y3Rvcg0KKy8vLyAgICBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZTUVJUUFMgLyBTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzcXVh
cmUgcm9vdHMgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NxcnRfcHMoX19tMTI4
IF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfc3FydHBzKChfX3Y0c2YpX19hKTsN
Cit9DQorDQorLy8vIENhbGN1bGF0ZXMgdGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWwgb2YgdGhl
IHZhbHVlIHN0b3JlZCBpbiB0aGUNCisvLy8gICAgbG93LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZS
Q1BTUyAvIFJDUFNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQor
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgYXBwcm94aW1hdGUNCisvLy8gICAgcmVjaXByb2NhbCBvZiB0aGUgdmFsdWUgaW4gdGhlIGxv
dy1vcmRlciBiaXRzIG9mIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fcmNwX3NzKF9fbTEyOCBfX2EpDQorew0KKyAgcmV0dXJu
IChfX20xMjgpX19idWlsdGluX2lhMzJfcmNwc3MoKF9fdjRzZilfX2EpOw0KK30NCisNCisvLy8g
Q2FsY3VsYXRlcyB0aGUgYXBwcm94aW1hdGUgcmVjaXByb2NhbHMgb2YgdGhlIHZhbHVlcyBzdG9y
ZWQgaW4gYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZSQ1BQUyAvIFJDUFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgYXBwcm94aW1hdGUNCisvLy8gICAgcmVjaXByb2NhbHMgb2YgdGhlIHZhbHVl
cyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX3JjcF9wcyhfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9f
YnVpbHRpbl9pYTMyX3JjcHBzKChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENhbGN1bGF0ZXMg
dGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWwgb2YgdGhlIHNxdWFyZSByb290IG9mIHRoZSB2YWx1
ZQ0KKy8vLyAgICBzdG9yZWQgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUlNRUlRT
UyAvIFJTUVJUU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBhcHByb3hpbWF0ZQ0KKy8vLyAgICByZWNpcHJvY2FsIG9mIHRoZSBzcXVhcmUgcm9vdCBvZiB0
aGUgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBvcGVyYW5kLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fcnNxcnRf
c3MoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfcnNxcnRzcygoX192
NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBDYWxjdWxhdGVzIHRoZSBhcHByb3hpbWF0ZSByZWNpcHJv
Y2FscyBvZiB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgc3RvcmVkIGlu
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUlNRUlRQUyAvIFJTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBhcHByb3hpbWF0ZQ0KKy8vLyAgICByZWNpcHJvY2FscyBvZiB0aGUgc3F1YXJlIHJvb3RzIG9m
IHRoZSB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9yc3FydF9wcyhfX20xMjggX19hKQ0KK3sNCisgIHJldHVy
biBfX2J1aWx0aW5faWEzMl9yc3FydHBzKChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENvbXBh
cmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3Ro
DQorLy8vICAgIG9wZXJhbmRzIGFuZCByZXR1cm5zIHRoZSBsZXNzZXIgdmFsdWUgaW4gdGhlIGxv
dy1vcmRlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOU1MgLyBNSU5TUyA8L2M+IGluc3RydWN0aW9u
cy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8v
ICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBj
b250YWluIHRoZQ0KKy8vLyAgICBtaW5pbXVtIHZhbHVlIGJldHdlZW4gYm90aCBvcGVyYW5kcy4g
VGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciA5NiBi
aXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21pbl9zcyhfX20xMjggX19hLCBfX20xMjggX19i
KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9taW5zcygoX192NHNmKV9fYSwgKF9fdjRz
ZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4
IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgbGVzc2VyDQorLy8vICAgIG9mIGVhY2ggcGFpciBvZiB2
YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOUFMgLyBNSU5QUyA8L2M+
IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtaW5pbXVtIHZhbHVlcw0KKy8vLyAg
ICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9taW5fcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQor
ICByZXR1cm4gX19idWlsdGluX2lhMzJfbWlucHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ct
b3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIGFuZCByZXR1cm5zIHRoZSBncmVh
dGVyIHZhbHVlIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIDEyOC1iaXQNCisvLy8gICAgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFNT
IC8gTUFYU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
b3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUg
dXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4g
VGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRo
ZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgbWF4aW11bSB2YWx1
ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJv
bQ0KKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXhf
c3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJf
bWF4c3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHR3
byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gYW5kIHJldHVybnMgdGhlIGdyZWF0ZXIN
CisvLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNQVhQUyAvIE1BWFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIG1heGltdW0gdmFsdWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21heF9wcyhfX20x
MjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9tYXhwcygo
X192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNl
IEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkFORFBTIC8gQU5EUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBi
aXR3aXNlIEFORCBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FuZF9w
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KSgoX192NHN1
KV9fYSAmIChfX3Y0c3UpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQg
b2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgdXNpbmcNCisvLy8gICAgdGhl
IG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNv
dXJjZQ0KKy8vLyAgICBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFO
RE5QUyAvIEFORE5QUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGZp
cnN0IHNvdXJjZSBvcGVyYW5kLiBUaGUNCisvLy8gICAgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlz
IHZhbHVlIGlzIHVzZWQgaW4gdGhlIGJpdHdpc2UgQU5ELg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2Vjb25k
IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KKy8vLyAgICBvbmUncyBj
b21wbGVtZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFuZCB0aGUgdmFsdWVzIGluIHRoZSBzZWNv
bmQNCisvLy8gICAgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2FuZG5vdF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisg
IHJldHVybiAoX19tMTI4KSh+KF9fdjRzdSlfX2EgJiAoX192NHN1KV9fYik7DQorfQ0KKw0KKy8v
LyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZPUlBTIC8gT1JQUyA8L2M+IGlu
c3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgT1Ig
b2YgdGhlDQorLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9vcl9wcyhfX20xMjggX19h
LCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KSgoX192NHN1KV9fYSB8IChfX3Y0
c3UpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBleGNsdXNpdmUgT1Igb2Yg
dHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBleGNsdXNpdmUgT1INCisvLy8g
ICAgb2YgdGhlIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV94b3JfcHMoX19tMTI4IF9fYSwgX19t
MTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzdSlfX2EgXiAoX192NHN1KV9f
Yik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUg
bG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyBmb3IgZXF1YWxpdHkgYW5k
IHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUNCisvLy8gICAgbG93
LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3IgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QRVFTUyAvIENNUEVRU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBv
cGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cw0KKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBlcV9zcyhfX20xMjggX19hLCBfX20xMjgg
X19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGVxc3MoKF9fdjRz
ZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNv
cnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGZvciBlcXVhbGl0eS4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZDTVBFUVBTIC8gQ01QRVFQUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZXFfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBlcXBzKChfX3Y0c2YpX19hLCAo
X192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVl
cyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyB0byBkZXRl
cm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGxlc3MgdGhhbiB0aGUN
CisvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJl
dHVybnMgdGhlIHJlc3VsdCBvZiB0aGUNCisvLy8gICAgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9y
ZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QTFRTUyAvIENNUExUU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBv
cGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cw0KKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBsdF9zcyhfX20xMjggX19hLCBfX20xMjgg
X19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGx0c3MoKF9fdjRz
ZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNv
cnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBm
aXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBv
cGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUUFMgLyBDTVBMVFBT
IDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBsdF9w
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRp
bl9pYTMyX2NtcGx0cHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIENv
bXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBi
b3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZp
cnN0IG9wZXJhbmQgaXMgbGVzcyB0aGFuIG9yDQorLy8vICAgIGVxdWFsIHRvIHRoZSBjb3JyZXNw
b25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUNCisvLy8g
ICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZl
Y3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDTVBMRVNTIC8gQ01QTEVTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQorLy8v
ICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGxlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQor
ew0KKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbGVzcygoX192NHNmKV9fYSwg
KF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9u
ZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMg
b2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQor
Ly8vICAgIG9wZXJhbmQgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vj
b25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVQUyAvIENN
UExFUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Nt
cGxlX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19i
dWlsdGluX2lhMzJfY21wbGVwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisv
Ly8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRz
IG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0
aGUgZmlyc3Qgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4NCisvLy8gICAgdGhlIGNvcnJlc3BvbmRp
bmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YN
CisvLy8gICAgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUU1Mg
LyBDTVBMVFNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJl
IHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMu
IFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0
aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCisvLy8gICAgaW4gdGhlIGxv
dy1vcmRlciBiaXRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fY21wZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorI2lmZGVmIF9f
R05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbW92c3MgKChfX3Y0c2Yp
IF9fYSwgKF9fdjRzZikNCisJCV9fYnVpbHRpbl9pYTMyX2NtcGx0c3MgKChfX3Y0c2YpIF9fYiwg
KF9fdjRzZikgX19hKSk7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVm
ZmxldmVjdG9yKChfX3Y0c2YpX19hLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fdjRzZilfX2J1aWx0aW5faWEzMl9jbXBsdHNzKChfX3Y0c2YpX19iLCAoX192
NHNmKV9fYSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAx
LCAyLCAzKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJl
c3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0
b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJz
dA0KKy8vLyAgICBvcGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBv
cGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUUFMgLyBDTVBMVFBT
IDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBndF9w
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRp
bl9pYTMyX2NtcGx0cHMoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENv
bXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBi
b3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZp
cnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuDQorLy8vICAgIG9yIGVxdWFsIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucw0KKy8vLyAg
ICB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBh
IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZDTVBMRVNTIC8gQ01QTEVTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUg
b2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQor
Ly8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2Ip
DQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy
X21vdnNzICgoX192NHNmKSBfX2EsIChfX3Y0c2YpDQorCQlfX2J1aWx0aW5faWEzMl9jbXBsZXNz
ICgoX192NHNmKSBfX2IsIChfX3Y0c2YpIF9fYSkpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEy
OClfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19idWlsdGluX2lhMzJfY21wbGVzcygo
X192NHNmKV9fYiwgKF9fdjRzZilfX2EpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNCwgMSwgMiwgMyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDb21wYXJlcyBl
YWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQorLy8v
ICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZh
bHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZDTVBMRVBTIC8gQ01QTEVQUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZ2VfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBsZXBzKChfX3Y0c2YpX19iLCAo
X192NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVl
cyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyBmb3IgaW5l
cXVhbGl0eSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGluIHRoZQ0K
Ky8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBORVFTUyAvIENNUE5FUVNTIDwvYz4NCisvLy8g
ICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRo
ZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUg
Y29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQor
Ly8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29u
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBu
ZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1
aWx0aW5faWEzMl9jbXBuZXFzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisv
Ly8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVz
IG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gZm9yIGluZXF1
YWxpdHkuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRUFMgLyBDTVBORVFQ
UyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJl
c3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9jbXBuZXFfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEy
OClfX2J1aWx0aW5faWEzMl9jbXBuZXFwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30N
CisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRl
ciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1
ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBub3QgbGVzcyB0aGFuDQorLy8vICAgIHRoZSBjb3Jy
ZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVz
dWx0IG9mDQorLy8vICAgIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBh
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
TVBOTFRTUyAvIENNUE5MVFNTIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9m
IHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0K
Ky8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBubHRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9f
YikNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBubHRzcygoX192NHNm
KV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29y
cmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IHZl
Y3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZp
cnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29u
ZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFBTIC8gQ01Q
TkxUUFMgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNv
biByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fY21wbmx0X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjgpX19idWlsdGluX2lhMzJfY21wbmx0cHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ct
b3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUg
dmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgbm90IGxlc3MgdGhhbg0KKy8vLyAgICBvciBl
cXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5k
IHJldHVybnMNCisvLy8gICAgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93
LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFU1MgLyBDTVBOTEVTUyA8L2M+DQorLy8vICAg
aW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUg
bG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNv
bXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8v
LyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCisvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmxl
X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19idWls
dGluX2lhMzJfY21wbmxlc3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8v
IENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBv
ZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWlu
ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQUyAvIENNUE5MRVBTIDwvYz4NCisvLy8gICBp
bnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5sZV9wcyhfX20x
MjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMy
X2NtcG5sZXBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJl
cyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0K
Ky8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBv
cGVyYW5kIGlzIG5vdCBncmVhdGVyDQorLy8vICAgIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFs
dWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KKy8vLyAgICByZXN1bHQg
b2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQor
Ly8vICAgIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5M
VFNTIC8gQ01QTkxUU1MgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQorLy8v
ICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5ndF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
K3sNCisNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEz
Ml9tb3ZzcyAoKF9fdjRzZikgX19hLCAoX192NHNmKQ0KKwkJX19idWlsdGluX2lhMzJfY21wbmx0
c3MgKChfX3Y0c2YpIF9fYiwgKF9fdjRzZikgX19hKSk7DQorI2Vsc2UNCisgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLA0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX2J1aWx0aW5faWEzMl9jbXBubHRz
cygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNCwgMSwgMiwgMyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDb21wYXJl
cyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQor
Ly8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhl
IHZhbHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbm90IGdyZWF0ZXIgdGhh
biB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ01QTkxUUFMgLyBDTVBOTFRQUyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBuZ3RfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9f
YikNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBubHRwcygoX192NHNm
KV9fYiwgKF9fdjRzZilfX2EpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9h
dCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMg
dG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBub3QgZ3Jl
YXRlcg0KKy8vLyAgICB0aGFuIG9yIGVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlu
IHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQNCisvLy8gICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRo
ZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3Rvcg0KKy8vLyAgICBv
ZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVTUyAv
IENNUE5MRVNTIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3Bl
cmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBv
cGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1
c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KKy8vLyAgICBp
biB0aGUgbG93LW9yZGVyIGJpdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9jbXBuZ2Vfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQor
I2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbW92c3Mg
KChfX3Y0c2YpIF9fYSwgKF9fdjRzZikNCisJCV9fYnVpbHRpbl9pYTMyX2NtcG5sZXNzICgoX192
NHNmKSBfX2IsIChfX3Y0c2YpIF9fYSkpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOClfX2J1
aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwNCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19idWlsdGluX2lhMzJfY21wbmxlc3MoKF9fdjRz
ZilfX2IsIChfX3Y0c2YpX19hKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQsIDEsIDIsIDMpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAx
MjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMg
aW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkNNUE5MRVBTIC8gQ01QTkxFUFMgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmdlX3BzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmxlcHMoKF9f
djRzZilfX2IsIChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQg
ZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJh
bmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgb3Jk
ZXJlZCB3aXRoDQorLy8vICAgIHJlc3BlY3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4g
dGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KKy8vLyAgICByZXN1bHQgb2YgdGhl
IGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQorLy8vICAg
IFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE9SRFNTIC8g
Q01QT1JEU1MgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9w
ZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQorLy8vICAgIGlu
IHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2NtcG9yZF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisg
IHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG9yZHNzKChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5n
IDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBb
NCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCisvLy8g
ICAgb3BlcmFuZCBhcmUgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29u
ZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE9SRFBTIC8gQ01Q
T1JEUFMgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNv
biByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fY21wb3JkX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjgpX19idWlsdGluX2lhMzJfY21wb3JkcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ct
b3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUg
dmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgdW5vcmRlcmVkDQorLy8vICAgIHdpdGggcmVz
cGVjdCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5k
DQorLy8vICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93
LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBmbG9hdF0uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QVU5PUkRTUyAvIENNUFVOT1JEU1MgPC9jPg0KKy8v
LyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4g
VGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRo
ZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIN
CisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlz
b24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQorLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Nt
cHVub3JkX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgp
X19idWlsdGluX2lhMzJfY21wdW5vcmRzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30N
CisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQg
dmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8g
ZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJl
IHVub3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFVOT1JEUFMgLyBDTVBVTk9SRFBTIDwv
Yz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Nt
cHVub3JkX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgp
X19idWlsdGluX2lhMzJfY21wdW5vcmRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30N
CisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRl
ciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgZm9yIGVxdWFsaXR5IGFuZCByZXR1cm5z
IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAgIElmIGVpdGhlciBv
ZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+DQorLy8vICAg
aW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBh
cmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBv
ZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8v
IFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJ
ZiBlaXRoZXIgb2YgdGhlDQorLy8vICAgIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwg
MCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2NvbWllcV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBf
X2J1aWx0aW5faWEzMl9jb21pZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQor
Ly8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0
cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3Bl
cmFuZCBpcyBsZXNzIHRoYW4gdGhlIHNlY29uZA0KKy8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5z
IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAgIElmIGVpdGhlciBv
ZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+DQorLy8vICAg
aW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBh
cmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBv
ZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8v
IFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJ
ZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4s
IDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jb21pbHRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4g
X19idWlsdGluX2lhMzJfY29taWx0KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0K
Ky8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJp
dHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9w
ZXJhbmQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KKy8vLyAgICBzZWNvbmQgb3BlcmFu
ZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyAg
ICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyBy
ZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU1MgLyBDT01JU1Mg
PC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBi
aXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4N
CisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlz
IE5hTiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2NvbWlsZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9jb21pbGUoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9
DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3Jk
ZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmly
c3Qgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4gdGhlIHNlY29uZA0KKy8vLyAgICBvcGVyYW5kIGFu
ZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAgIElm
IGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVy
bmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+
IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8v
LyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4g
SWYgZWl0aGVyIG9mIHRoZQ0KKy8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFO
LCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fY29taWd0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJu
IF9fYnVpbHRpbl9pYTMyX2NvbWlndCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisN
CisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBi
aXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaXJzdCBv
cGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bw0KKy8vLyAgICB0aGUgc2Vjb25kIG9w
ZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8NCisv
Ly8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAg
aXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09N
SVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMg
b3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIg
MzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlz
b24uDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciAzMi1iaXQgdmFsdWVz
IGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2NvbWlnZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisg
IHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pZ2UoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ct
b3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUg
Zmlyc3Qgb3BlcmFuZCBpcyBub3QgZXF1YWwgdG8gdGhlIHNlY29uZA0KKy8vLyAgICBvcGVyYW5k
IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAg
IElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJl
dHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8
L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0K
Ky8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4gSWYgZWl0aGVyIG9mIHRoZQ0KKy8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMg
TmFOLCAxIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fY29taW5lcV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9jb21pbmVxKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQor
fQ0KKw0KKy8vLyBQZXJmb3JtcyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0
IGZsb2F0IHZhbHVlcyB1c2luZw0KKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBv
cGVyYW5kcyB0byBkZXRlcm1pbmUgZXF1YWxpdHkgYW5kIHJldHVybnMNCisvLy8gICAgdGhlIHJl
c3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8NCisvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0
d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMu
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1
c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMgQW4g
aW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0
aGUgdHdvDQorLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5l
ZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Vjb21p
ZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lh
MzJfdWNvbWllcSgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gUGVyZm9y
bXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNp
bmcNCisvLy8gICAgdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGggb3BlcmFuZHMgdG8gZGV0ZXJt
aW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzDQorLy8vICAgIGxlc3MgdGhhbiB0aGUgc2Vjb25k
IG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8N
CisvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4s
IDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAv
IFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBs
b3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIDMyLWJpdCB2
YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fdWNvbWlsdF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
K3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taWx0KChfX3Y0c2YpX19hLCAoX192NHNm
KV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0
d28gMzItYml0IGZsb2F0IHZhbHVlcyB1c2luZw0KKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMg
b2YgYm90aCBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCisv
Ly8gICAgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJu
cyB0aGUgcmVzdWx0IG9mIHRoZQ0KKy8vLyAgICBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyAgICBJ
ZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1
cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8
L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0K
Ky8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMg
TmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fdWNvbWlsZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl91Y29taWxlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQor
fQ0KKw0KKy8vLyBQZXJmb3JtcyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0
IGZsb2F0IHZhbHVlcyB1c2luZw0KKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBv
cGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCisvLy8gICAgZ3Jl
YXRlciB0aGFuIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRo
ZQ0KKy8vLyAgICBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3
byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5k
IGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBbiBp
bnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRo
ZSB0d28NCisvLy8gICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdWNvbWln
dF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml91Y29taWd0KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3Jt
cyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0IGZsb2F0IHZhbHVlcyB1c2lu
Zw0KKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVyYW5kcyB0byBkZXRlcm1p
bmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCisvLy8gICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mDQorLy8vICAg
IHRoZSBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dl
ciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4g
dGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0K
Ky8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2Vy
IGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28N
CisvLy8gICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0
YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdWNvbWlnZV9zcyhf
X20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29t
aWdlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhbiB1
bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0IGZsb2F0IHZhbHVlcyB1c2luZw0KKy8v
LyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaW5l
cXVhbGl0eSBhbmQgcmV0dXJucw0KKy8vLyAgICB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29u
Lg0KKy8vLw0KKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVz
IGlzIE5hTiwgMSBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZV
Q09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24u
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGlu
IHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhl
IGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgbG93ZXIg
MzItYml0IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18g
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91Y29taW5lcV9zcyhfX20xMjggX19hLCBfX20x
MjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taW5lcSgoX192NHNmKV9f
YSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250
YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBm
bG9hdF0gaW50byBhIDMyLWJpdCBpbnRlZ2VyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkNWVFNTMlNJIC8gQ1ZUU1MyU0kgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4g
dGhlIGNvbnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmlu
ZyB0aGUgY29udmVydGVkIHZhbHVlLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY3Z0c3Nfc2kzMihfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9jdnRzczJzaSgoX192NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBh
IGZsb2F0IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBv
Zg0KKy8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgMzItYml0IGludGVnZXIuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU1MyU0kgLyBDVlRTUzJTSSA8L2M+DQorLy8vICAgaW5z
dHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUN
CisvLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQg
aW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5l
X18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRfc3Myc2koX19tMTI4IF9fYSkNCit7
DQorICByZXR1cm4gX21tX2N2dHNzX3NpMzIoX19hKTsNCit9DQorDQorI2lmZGVmIF9feDg2XzY0
X18NCisNCisvLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2Vy
IDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJp
dCBpbnRlZ2VyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNTMlNJIC8gQ1ZU
U1MyU0kgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbnZlcnNpb24uDQor
Ly8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZh
bHVlLg0KK3N0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fY3Z0c3Nfc2k2NChfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9j
dnRzczJzaTY0KChfX3Y0c2YpX19hKTsNCit9DQorDQorI2VuZGlmDQorDQorLy8vIENvbnZlcnRz
IHR3byBsb3ctb3JkZXIgZmxvYXQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8g
ICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUFMyUEkgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBj
b252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9B
VFRSU19NTVgNCitfbW1fY3Z0cHNfcGkzMihfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfY3Z0cHMycGkoKF9fdjRzZilfX2EpOw0KK30NCisNCisvLy8gQ29u
dmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0K
Ky8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQUzJQSSA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTX01NWA0KK19tbV9jdnRfcHMycGkoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4g
X21tX2N2dHBzX3BpMzIoX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUg
Y29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mDQorLy8vICAgIFs0
IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdlciwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdo
ZW4gaXQgaXMNCisvLy8gICAgaW5leGFjdC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDVlRUU1MyU0kgLyBDVlRUU1MyU0kgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4g
dGhlIGNvbnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmlu
ZyB0aGUgY29udmVydGVkIHZhbHVlLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY3Z0dHNzX3NpMzIoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4gX19i
dWlsdGluX2lhMzJfY3Z0dHNzMnNpKChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRz
IGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVjdG9y
IG9mDQorLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdlciwgdHJ1bmNhdGlu
ZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMNCisvLy8gICAgaW5leGFjdC4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZDVlRUU1MyU0kgLyBDVlRUU1MyU0kgPC9jPg0KKy8vLyAgIGluc3Ry
dWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQor
Ly8vICAgIHVzZWQgaW4gdGhlIGNvbnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgMzItYml0IGlu
dGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KK3N0YXRpYyBfX2lubGluZV9f
IGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0dF9zczJzaShfX20xMjggX19hKQ0KK3sN
CisgIHJldHVybiBfbW1fY3Z0dHNzX3NpMzIoX19hKTsNCit9DQorDQorI2lmZGVmIF9feDg2XzY0
X18NCisvLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMy
IGJpdHMgb2YgYSB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCBp
bnRlZ2VyLCB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcw0KKy8vLyAgICBpbmV4YWN0
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTUzJTSSAvIENWVFRTUzJTSSA8
L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRo
aXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCisvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQor
c3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnR0
c3Nfc2k2NChfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3My
c2k2NCgoX192NHNmKV9fYSk7DQorfQ0KKyNlbmRpZg0KKw0KKy8vLyBDb252ZXJ0cyB0d28gbG93
LW9yZGVyIGZsb2F0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHgg
ZmxvYXRdIGludG8gYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSwgdHJ1bmNhdGluZyB0aGUg
cmVzdWx0DQorLy8vICAgIHdoZW4gaXQgaXMgaW5leGFjdC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IENWVFRQUzJQSSAvIFZUVFBTMlBJIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMu
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHRwc19waTMyKF9fbTEyOCBfX2EpDQorew0KKyAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnR0cHMycGkoKF9fdjRzZilfX2EpOw0KK30NCisN
CisvLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4DQorLy8vICAgIGZsb2F0XSBpbnRvIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4
IGkzMl0sIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0DQorLy8vICAgIGlzIGluZXhhY3Qu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRUUFMyUEkgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSU19NTVgNCitfbW1fY3Z0dF9wczJwaShfX20xMjggX19hKQ0KK3sNCisgIHJl
dHVybiBfbW1fY3Z0dHBzX3BpMzIoX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIGEgMzItYml0
IHNpZ25lZCBpbnRlZ2VyIHZhbHVlIGludG8gYSBmbG9hdGluZyBwb2ludCB2YWx1ZQ0KKy8vLyAg
ICBhbmQgd3JpdGVzIGl0IHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbi4g
VGhlIHJlbWFpbmluZw0KKy8vLyAgICBoaWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3Rp
bmF0aW9uIHZlY3RvciBhcmUgY29waWVkIGZyb20gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ1ZUU0kyU1MgLyBDVlRTSTJTUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250
YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQ0K
Ky8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBUaGUgdXBwZXIg
OTYgYml0cyBhcmUgY29waWVkIGZyb20NCisvLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhl
IGZpcnN0IG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9jdnRzaTMyX3NzKF9fbTEyOCBfX2EsIGludCBfX2IpDQorew0KKyAgX19hWzBd
ID0gX19iOw0KKyAgcmV0dXJuIF9fYTsNCit9DQorDQorLy8vIENvbnZlcnRzIGEgMzItYml0IHNp
Z25lZCBpbnRlZ2VyIHZhbHVlIGludG8gYSBmbG9hdGluZyBwb2ludCB2YWx1ZQ0KKy8vLyAgICBh
bmQgd3JpdGVzIGl0IHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbi4gVGhl
IHJlbWFpbmluZw0KKy8vLyAgICBoaWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0
aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50cyBp
biB0aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRT
STJTUyAvIENWVFNJMlNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kIGNvbnRhaW5pbmcgdGhl
IHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIGNv
bnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA5NiBiaXRzIGFy
ZSBjb3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgb3Bl
cmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X2N2dF9zaTJzcyhfX20xMjggX19hLCBpbnQgX19iKQ0KK3sNCisgIHJldHVybiBfbW1fY3Z0c2kz
Ml9zcyhfX2EsIF9fYik7DQorfQ0KKw0KKyNpZmRlZiBfX3g4Nl82NF9fDQorDQorLy8vIENvbnZl
cnRzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlIGludG8gYSBmbG9hdGluZyBwb2ludCB2
YWx1ZQ0KKy8vLyAgICBhbmQgd3JpdGVzIGl0IHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSBk
ZXN0aW5hdGlvbi4gVGhlIHJlbWFpbmluZw0KKy8vLyAgICBoaWdoZXIgb3JkZXIgZWxlbWVudHMg
b2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUNCisvLy8gICAgY29ycmVzcG9u
ZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZDVlRTSTJTUyAvIENWVFNJMlNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5k
IGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4g
dGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1
cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBv
ZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2N2dHNpNjRfc3MoX19tMTI4IF9fYSwgbG9uZyBsb25nIF9fYikNCit7
DQorICBfX2FbMF0gPSBfX2I7DQorICByZXR1cm4gX19hOw0KK30NCisNCisjZW5kaWYNCisNCisv
Ly8gQ29udmVydHMgdHdvIGVsZW1lbnRzIG9mIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0g
aW50byB0d28NCisvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGFuZCB3cml0ZXMgdGhlbSB0
byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFRoZSByZW1h
aW5pbmcgaGlnaGVyIG9yZGVyIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUNCisvLy8g
ICAgY29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9w
ZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2NC1iaXQgdmVjdG9y
IG9mIFsyIHggaTMyXS4gVGhlIGVsZW1lbnRzIGluIHRoaXMgdmVjdG9yIGFyZSBjb252ZXJ0ZWQN
CisvLy8gICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1l
bnRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIGNv
bnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRzIGFy
ZSBjb3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgb3Bl
cmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0K
K19tbV9jdnRwaTMyX3BzKF9fbTEyOCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gX19i
dWlsdGluX2lhMzJfY3Z0cGkycHMoKF9fdjRzZilfX2EsIChfX3Yyc2kpX19iKTsNCit9DQorDQor
Ly8vIENvbnZlcnRzIHR3byBlbGVtZW50cyBvZiBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJd
IGludG8gdHdvDQorLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBhbmQgd3JpdGVzIHRoZW0g
dG8gdGhlIGxvd2VyIDY0LWJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBUaGUgcmVt
YWluaW5nIGhpZ2hlciBvcmRlciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlDQorLy8v
ICAgIGNvcGllZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBmaXJzdCBv
cGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3Rv
ciBvZiBbMiB4IGkzMl0uIFRoZSBlbGVtZW50cyBpbiB0aGlzIHZlY3RvciBhcmUgY29udmVydGVk
DQorLy8vICAgIGFuZCB3cml0dGVuIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxvdy1vcmRlciBlbGVt
ZW50cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KKy8vLyAgICBj
b252ZXJ0ZWQgdmFsdWUgZnJvbSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRz
IGFyZSBjb3BpZWQNCisvLy8gICAgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qg
b3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01N
WA0KK19tbV9jdnRfcGkycHMoX19tMTI4IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgIHJldHVybiBf
bW1fY3Z0cGkzMl9wcyhfX2EsIF9fYik7DQorfQ0KKw0KKy8vLyBFeHRyYWN0cyBhIGZsb2F0IHZh
bHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZg0KKy8vLyAg
ICBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVz
ZWQgaW4gdGhlIGV4dHJhY3Rpb24uDQorLy8vIFxyZXR1cm5zIEEgMzItYml0IGZsb2F0IGNvbnRh
aW5pbmcgdGhlIGV4dHJhY3RlZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBmbG9hdCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0c3NfZjMyKF9fbTEyOCBfX2EpDQorew0KKyAgcmV0dXJu
IF9fYVswXTsNCit9DQorDQorLy8vIExvYWRzIHR3byBwYWNrZWQgZmxvYXQgdmFsdWVzIGZyb20g
dGhlIGFkZHJlc3MgXGEgX19wIGludG8gdGhlDQorLy8vICAgICBoaWdoLW9yZGVyIGJpdHMgb2Yg
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvdy1vcmRlciBiaXRzDQorLy8v
ICAgICBhcmUgY29waWVkIGZyb20gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBmaXJzdCBvcGVy
YW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkhQRCAvIE1PVkhQRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYz
OjBdDQorLy8vICAgIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAg
ICBBIHBvaW50ZXIgdG8gdHdvIHBhY2tlZCBmbG9hdCB2YWx1ZXMuIEJpdHMgWzYzOjBdIGFyZSB3
cml0dGVuIHRvIGJpdHMNCisvLy8gICAgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhl
IG1vdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2xvYWRoX3BpKF9fbTEyOCBfX2EsIGNvbnN0IF9fbTY0ICpfX3ApDQorew0KKyNp
ZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2xvYWRocHMg
KChfX3Y0c2YpX19hLCAoY29uc3QgX192MnNmICopX19wKTsNCisjZWxzZQ0KKyAgdHlwZWRlZiBm
bG9hdCBfX21tX2xvYWRoX3BpX3YyZjMyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4
KSkpOw0KKyAgc3RydWN0IF9fbW1fbG9hZGhfcGlfc3RydWN0IHsNCisgICAgX19tbV9sb2FkaF9w
aV92MmYzMiBfX3U7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFz
X18pKTsNCisgIF9fbW1fbG9hZGhfcGlfdjJmMzIgX19iID0gKChzdHJ1Y3QgX19tbV9sb2FkaF9w
aV9zdHJ1Y3QqKV9fcCktPl9fdTsNCisgIF9fbTEyOCBfX2JiID0gX19idWlsdGluX3NodWZmbGV2
ZWN0b3IoX19iLCBfX2IsIDAsIDEsIDAsIDEpOw0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxl
dmVjdG9yKF9fYSwgX19iYiwgMCwgMSwgNCwgNSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBMb2Fk
cyB0d28gcGFja2VkIGZsb2F0IHZhbHVlcyBmcm9tIHRoZSBhZGRyZXNzIFxhIF9fcCBpbnRvIHRo
ZQ0KKy8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBUaGUgaGlnaC1vcmRlciBiaXRzDQorLy8vICAgIGFyZSBjb3BpZWQgZnJvbSB0aGUgaGln
aC1vcmRlciBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVk1PVkxQRCAvIE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIEJpdHMg
WzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cw0KKy8vLyAgICBbMTI3OjY0XSBvZiB0aGUgZGVz
dGluYXRpb24uDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIHR3byBwYWNr
ZWQgZmxvYXQgdmFsdWVzLiBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzDQorLy8vICAg
IFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZGxfcGkoX19tMTI4
IF9fYSwgY29uc3QgX19tNjQgKl9fcCkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4g
KF9fbTEyOCkgX19idWlsdGluX2lhMzJfbG9hZGxwcyAoKF9fdjRzZilfX2EsIChjb25zdCBfX3Yy
c2YgKilfX3ApOw0KKyNlbHNlDQorICB0eXBlZGVmIGZsb2F0IF9fbW1fbG9hZGxfcGlfdjJmMzIg
X19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7DQorICBzdHJ1Y3QgX19tbV9sb2Fk
bF9waV9zdHJ1Y3Qgew0KKyAgICBfX21tX2xvYWRsX3BpX3YyZjMyIF9fdTsNCisgIH0gX19hdHRy
aWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgX19tbV9sb2FkbF9waV92
MmYzMiBfX2IgPSAoKHN0cnVjdCBfX21tX2xvYWRsX3BpX3N0cnVjdCopX19wKS0+X191Ow0KKyAg
X19tMTI4IF9fYmIgPSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2IsIF9fYiwgMCwgMSwgMCwg
MSk7DQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2JiLCA0LCA1LCAy
LCAzKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMg
b2YgdGhlIHZlY3RvciBhcmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc2luZ2xlLXByZWNpc2lvbg0K
Ky8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZSBsb2FkZWQgZnJvbSBhIHNwZWNpZmllZCBtZW1v
cnkgbG9jYXRpb24uIFRoZSB1cHBlcg0KKy8vLyAgICA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTUyAvIE1PVlNTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMzIt
Yml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgc2luZ2xlLXByZWNpc2lvbg0KKy8vLyAg
ICBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZQ0KKy8vLyAgICBs
b3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIGxvYWRlZCBmcm9tIHRoZSBtZW1vcnkgbG9j
YXRpb24uIFRoZQ0KKy8vLyAgICB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2xvYWRfc3MoY29u
c3QgZmxvYXQgKl9fcCkNCit7DQorICBzdHJ1Y3QgX19tbV9sb2FkX3NzX3N0cnVjdCB7DQorICAg
IGZsb2F0IF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNf
XykpOw0KKyAgZmxvYXQgX191ID0gKChzdHJ1Y3QgX19tbV9sb2FkX3NzX3N0cnVjdCopX19wKS0+
X191Ow0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCl7IF9fdSwgMCwgMCwgMCB9Ow0K
K30NCisNCisvLy8gTG9hZHMgYSAzMi1iaXQgZmxvYXQgdmFsdWUgYW5kIGR1cGxpY2F0ZXMgaXQg
dG8gYWxsIGZvdXIgdmVjdG9yDQorLy8vICAgIGVsZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNU
U1MgLyBNT1ZTUyArIHNodWZmbGluZyA8L2M+DQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIGZsb2F0IHZhbHVlIHRvIGJl
IGxvYWRlZCBhbmQgZHVwbGljYXRlZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgYW5kDQorLy8vICAgIGR1cGxpY2F0
ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fbG9hZDFfcHMoY29uc3QgZmxvYXQgKl9fcCkNCit7DQorICBzdHJ1Y3QgX19tbV9sb2Fk
MV9wc19zdHJ1Y3Qgew0KKyAgICBmbG9hdCBfX3U7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFj
a2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIGZsb2F0IF9fdSA9ICgoc3RydWN0IF9fbW1fbG9h
ZDFfcHNfc3RydWN0KilfX3ApLT5fX3U7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4
KXsgX191LCBfX3UsIF9fdSwgX191IH07DQorfQ0KKw0KKyNkZWZpbmUgICAgICAgIF9tbV9sb2Fk
X3BzMShwKSBfbW1fbG9hZDFfcHMocCkNCisNCisvLy8gTG9hZHMgYSAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBmcm9tIGFuIGFsaWduZWQNCisvLy8gICAgbWVt
b3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1P
VkFQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEg
cG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUg
bWVtb3J5DQorLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAxMjgtYml0IGFsaWduZWQuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
bG9hZGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2xvYWRfcHMoY29uc3QgZmxvYXQgKl9fcCkNCit7DQorICByZXR1cm4gKihfX20x
MjgqKV9fcDsNCit9DQorDQorLy8vIExvYWRzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gZnJvbSBhbg0KKy8vLyAgICB1bmFsaWduZWQgbWVtb3J5IGxvY2F0
aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQUyAvIE1PVlVQUyA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0
byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQor
Ly8vICAgIGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQg
dmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fbG9hZHVfcHMoY29uc3QgZmxvYXQgKl9fcCkNCit7DQorICBzdHJ1Y3QgX19sb2FkdV9wcyB7
DQorICAgIF9fbTEyOCBfX3Y7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5
X2FsaWFzX18pKTsNCisgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3BzKilfX3ApLT5fX3Y7DQor
fQ0KKw0KKy8vLyBMb2FkcyBmb3VyIHBhY2tlZCBmbG9hdCB2YWx1ZXMsIGluIHJldmVyc2Ugb3Jk
ZXIsIGZyb20gYW4gYWxpZ25lZA0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24gdG8gMzItYml0IGVs
ZW1lbnRzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4NCisvLy8g
ICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVy
IHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkN
CisvLy8gICAgbG9jYXRpb24gaGFzIHRvIGJlIDEyOC1iaXQgYWxpZ25lZC4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCB2
YWx1ZXMsIGxvYWRlZA0KKy8vLyAgICBpbiByZXZlcnNlIG9yZGVyLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZHJfcHMoY29uc3QgZmxvYXQg
Kl9fcCkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGlu
X2lhMzJfc2h1ZnBzICgqKF9fdjRzZiAqKV9fcCwgKihfX3Y0c2YgKilfX3AsIF9NTV9TSFVGRkxF
ICgwLDEsMiwzKSk7DQorI2Vsc2UNCisgIF9fbTEyOCBfX2EgPSBfbW1fbG9hZF9wcyhfX3ApOw0K
KyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9f
YSwgMywgMiwgMSwgMCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDcmVhdGUgYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5v
IGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB1bmRlZmluZWQgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5kZWZpbmVk
X3BzKHZvaWQpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgX19tMTI4IF9fWCA9IF9fWDsNCisg
IHJldHVybiBfX1g7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3Vu
ZGVmMTI4KCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBi
aXRzIG9mIHRoZSB2ZWN0b3IgYXJlIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBzaW5n
bGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlLiBUaGUgdXBwZXIgOTYg
Yml0cyBhcmUgc2V0IHRvIHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9W
U1MgLyBNT1ZTUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX193DQorLy8v
ICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgdGhlIGxvd2VyIDMyDQorLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uIFRoZQ0KKy8vLyAgICBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIHBy
b3ZpZGVkIGluIHRoZSBzb3VyY2Ugb3BlcmFuZC4gVGhlDQorLy8vICAgIHVwcGVyIDk2IGJpdHMg
YXJlIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fc2V0X3NzKGZsb2F0IF9fdykNCit7DQorICByZXR1cm4gX19leHRlbnNpb25f
XyAoX19tMTI4KXsgX193LCAwLCAwLCAwIH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0sIHdpdGggZWFjaA0KKy8v
LyAgICBvZiB0aGUgZm91ciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBl
bGVtZW50cyBzZXQgdG8gdGhlDQorLy8vICAgIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1J
TFBTIC8gUEVSTUlMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdw0K
Ky8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGVhY2ggdmVjdG9yDQorLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9zZXQxX3BzKGZsb2F0IF9fdykNCit7DQorICByZXR1cm4gX19leHRlbnNpb25f
XyAoX19tMTI4KXsgX193LCBfX3csIF9fdywgX193IH07DQorfQ0KKw0KKy8qIE1pY3Jvc29mdCBz
cGVjaWZpYy4gKi8NCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLCB3aXRoIGVhY2gNCisvLy8gICAgb2YgdGhlIGZvdXIgc2luZ2xl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZQ0KKy8v
LyAgICBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyAvIFBFUk1JTFBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3Rvcg0K
Ky8vLyAgICBlbGVtZW50IG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0X3BzMShmbG9h
dCBfX3cpDQorew0KKyAgICByZXR1cm4gX21tX3NldDFfcHMoX193KTsNCit9DQorDQorLy8vIENv
bnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XQ0K
Ky8vLyAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBk
b2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX3oNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdDQorLy8vICAgIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3kNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0NCisv
Ly8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9feA0KKy8vLyAgICBBIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYz
OjMyXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193DQorLy8vICAgIEEg
c2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMzE6MF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5p
dGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRfcHMo
ZmxvYXQgX196LCBmbG9hdCBfX3ksIGZsb2F0IF9feCwgZmxvYXQgX193KQ0KK3sNCisgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9feCwgX195LCBfX3ogfTsNCit9DQorDQor
Ly8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSwNCisvLy8gICAgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoIHRoZSBzcGVj
aWZpZWQgMzItYml0IHNpbmdsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXQtcG9pbnQgdmFsdWVz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0
byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX196
DQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMzE6MF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9feQ0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX194DQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdDQorLy8vICAgIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdDQorLy8vICAg
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0cl9wcyhmbG9hdCBfX3osIGZsb2F0IF9f
eSwgZmxvYXQgX194LCBmbG9hdCBfX3cpDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOCl7IF9feiwgX195LCBfX3gsIF9fdyB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGluaXRpYWxpemVkDQor
Ly8vICAgIHRvIHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBY
T1JQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXpl
ZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aXRoDQorLy8v
ICAgIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldHplcm9fcHModm9pZCkNCit7DQorICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMTI4KXsgMCwgMCwgMCwgMCB9Ow0KK30NCisNCisvLy8gU3RvcmVz
IHRoZSB1cHBlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8g
YQ0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUEVYVFJRIC8gUEVYVFJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3RvcmVoX3BpKF9fbTY0ICpfX3AsIF9fbTEyOCBfX2Ep
DQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgX19idWlsdGluX2lhMzJfc3RvcmVocHMoKF9fdjJz
ZiAqKV9fcCwgKF9fdjRzZilfX2EpOw0KKyNlbHNlDQorICBfX2J1aWx0aW5faWEzMl9zdG9yZWhw
cygoX192MnNpICopX19wLCAoX192NHNmKV9fYSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBTdG9y
ZXMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0
byBhDQorLy8vICAgICBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WTFBTIC8gTU9WTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCBy
ZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3Rv
cmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0
b3JlbF9waShfX202NCAqX19wLCBfX20xMjggX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisg
IF9fYnVpbHRpbl9pYTMyX3N0b3JlbHBzICgoX192MnNmICopX19wLCAoX192NHNmKV9fYSk7DQor
I2Vsc2UNCisgIF9fYnVpbHRpbl9pYTMyX3N0b3JlbHBzKChfX3Yyc2kgKilfX3AsIChfX3Y0c2Yp
X19hKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgbG93ZXIgMzIgYml0cyBvZiBh
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGENCisvLy8gICAgIG1lbW9yeSBsb2Nh
dGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTUyAvIE1PVlNTIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRv
IGEgMzItYml0IG1lbW9yeSBsb2NhdGlvbi4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0
b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9z
dG9yZV9zcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KK3sNCisgIHN0cnVjdCBfX21tX3N0b3Jl
X3NzX3N0cnVjdCB7DQorICAgIGZsb2F0IF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNr
ZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19tbV9zdG9yZV9zc19zdHJ1Y3Qq
KV9fcCktPl9fdSA9IF9fYVswXTsNCit9DQorDQorLy8vIFN0b3JlcyBhIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBTIC8gTU9WVVBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEg
MTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisvLy8g
ICAgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zdG9yZXVfcHMoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkNCit7DQorICBz
dHJ1Y3QgX19zdG9yZXVfcHMgew0KKyAgICBfX20xMjggX192Ow0KKyAgfSBfX2F0dHJpYnV0ZV9f
KChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICAoKHN0cnVjdCBfX3N0b3JldV9wcyop
X19wKS0+X192ID0gX19hOw0KK30NCisNCisvLy8gU3RvcmVzIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gaW50byBhbiBhbGlnbmVkIG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbi4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgt
Yml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KKy8vLyAgICBs
b2NhdGlvbiBoYXMgdG8gYmUgMTYtYnl0ZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVz
IHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9zdG9yZV9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KK3sNCisgICooX19tMTI4
KilfX3AgPSBfX2E7DQorfQ0KKw0KKy8vLyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvDQorLy8vICAgIGZvdXIgY29udGlndW91
cyBlbGVtZW50cyBpbiBhbiBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byA8Yz4gVk1PVkFQUyAvIE1PVkFQUyArIHNodWZmbGluZyA8L2M+DQorLy8vICAgIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBh
IDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBhcmUgc3RvcmVk
IHRvIGVhY2gNCisvLy8gICAgb2YgdGhlIGZvdXIgY29udGlndW91cyBlbGVtZW50cyBwb2ludGVk
IGJ5IFxhIF9fcC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9zdG9yZTFfcHMoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05V
Q19fDQorICBfX2EgPSAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3NodWZwcygoX192NHNmKV9fYSwg
KF9fdjRzZilfX2EsIF9NTV9TSFVGRkxFICgwLDAsMCwwKSk7DQorI2Vsc2UNCisgIF9fYSA9IChf
X20xMjgpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAw
LCAwLCAwLCAwKTsNCisjZW5kaWYNCisgIF9tbV9zdG9yZV9wcyhfX3AsIF9fYSk7DQorfQ0KKw0K
Ky8vLyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBpbnRvDQorLy8vICAgIGZvdXIgY29udGlndW91cyBlbGVtZW50cyBpbiBhbiBhbGln
bmVkIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byA8Yz4gVk1PVkFQUyAv
IE1PVkFQUyArIHNodWZmbGluZyA8L2M+DQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBhcmUgc3RvcmVkIHRvIGVhY2gNCisvLy8gICAgb2Yg
dGhlIGZvdXIgY29udGlndW91cyBlbGVtZW50cyBwb2ludGVkIGJ5IFxhIF9fcC4NCitzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZV9wczEoZmxvYXQg
Kl9fcCwgX19tMTI4IF9fYSkNCit7DQorICBfbW1fc3RvcmUxX3BzKF9fcCwgX19hKTsNCit9DQor
DQorLy8vIFN0b3JlcyBmbG9hdCB2YWx1ZXMgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIHRvIGFuDQorLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIGluIHJldmVyc2Ug
b3JkZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsg
c2h1ZmZsaW5nIDwvYz4NCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBh
ZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24gaGFzIHRvIGJlIDEyOC1iaXQg
YWxpZ25lZC4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9f
aW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3RvcmVyX3BzKGZsb2F0ICpf
X3AsIF9fbTEyOCBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgX19hID0gX19idWlsdGlu
X2lhMzJfc2h1ZnBzICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2EsIF9NTV9TSFVGRkxFICgwLDEs
MiwzKSk7DQorI2Vsc2UNCisgIF9fYSA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2Yp
X19hLCAoX192NHNmKV9fYSwgMywgMiwgMSwgMCk7DQorI2VuZGlmDQorICBfbW1fc3RvcmVfcHMo
X19wLCBfX2EpOw0KK30NCisNCisjZGVmaW5lIF9NTV9ISU5UX0VUMCA3DQorI2RlZmluZSBfTU1f
SElOVF9FVDEgNg0KKyNkZWZpbmUgX01NX0hJTlRfVDAgIDMNCisjZGVmaW5lIF9NTV9ISU5UX1Qx
ICAyDQorI2RlZmluZSBfTU1fSElOVF9UMiAgMQ0KKyNkZWZpbmUgX01NX0hJTlRfTlRBIDANCisN
CisjaWZuZGVmIF9NU0NfVkVSDQorLyogRklYTUU6IFdlIGhhdmUgdG8gI2RlZmluZSB0aGlzIGJl
Y2F1c2UgInNlbCIgbXVzdCBiZSBhIGNvbnN0YW50IGludGVnZXIsIGFuZA0KKyAgIFNlbWEgZG9l
c24ndCBkbyBhbnkgZm9ybSBvZiBjb25zdGFudCBwcm9wYWdhdGlvbiB5ZXQuICovDQorDQorLy8v
IExvYWRzIG9uZSBjYWNoZSBsaW5lIG9mIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIGFkZHJlc3Mg
dG8gYSBsb2NhdGlvbg0KKy8vLyAgICBjbG9zZXIgdG8gdGhlIHByb2Nlc3Nvci4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyB2b2lk
IF9tbV9wcmVmZXRjaChjb25zdCB2b2lkICogYSwgY29uc3QgaW50IHNlbCk7DQorLy8vIFxlbmRj
b2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFJF
RkVUQ0hOVEEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisvLy8gICAg
QSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBjYWNoZSBsaW5lIG9m
IGRhdGEuDQorLy8vIFxwYXJhbSBzZWwNCisvLy8gICAgQSBwcmVkZWZpbmVkIGludGVnZXIgY29u
c3RhbnQgc3BlY2lmeWluZyB0aGUgdHlwZSBvZiBwcmVmZXRjaA0KKy8vLyAgICBvcGVyYXRpb246
IFxuDQorLy8vICAgIF9NTV9ISU5UX05UQTogTW92ZSBkYXRhIHVzaW5nIHRoZSBub24tdGVtcG9y
YWwgYWNjZXNzIChOVEEpIGhpbnQuIFRoZQ0KKy8vLyAgICBQUkVGRVRDSE5UQSBpbnN0cnVjdGlv
biB3aWxsIGJlIGdlbmVyYXRlZC4gXG4NCisvLy8gICAgX01NX0hJTlRfVDA6IE1vdmUgZGF0YSB1
c2luZyB0aGUgVDAgaGludC4gVGhlIFBSRUZFVENIVDAgaW5zdHJ1Y3Rpb24gd2lsbA0KKy8vLyAg
ICBiZSBnZW5lcmF0ZWQuIFxuDQorLy8vICAgIF9NTV9ISU5UX1QxOiBNb3ZlIGRhdGEgdXNpbmcg
dGhlIFQxIGhpbnQuIFRoZSBQUkVGRVRDSFQxIGluc3RydWN0aW9uIHdpbGwNCisvLy8gICAgYmUg
Z2VuZXJhdGVkLiBcbg0KKy8vLyAgICBfTU1fSElOVF9UMjogTW92ZSBkYXRhIHVzaW5nIHRoZSBU
MiBoaW50LiBUaGUgUFJFRkVUQ0hUMiBpbnN0cnVjdGlvbiB3aWxsDQorLy8vICAgIGJlIGdlbmVy
YXRlZC4NCisjZGVmaW5lIF9tbV9wcmVmZXRjaChhLCBzZWwpIChfX2J1aWx0aW5fcHJlZmV0Y2go
KHZvaWQgKikoYSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKChzZWwpID4+IDIpICYgMSwgKHNlbCkgJiAweDMpKQ0KKyNlbmRpZg0KKw0KKy8v
LyBTdG9yZXMgYSA2NC1iaXQgaW50ZWdlciBpbiB0aGUgc3BlY2lmaWVkIGFsaWduZWQgbWVtb3J5
IGxvY2F0aW9uLiBUbw0KKy8vLyAgICBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFn
Z2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUNCisvLy8gICAgdXNlZCBhZ2FpbiBz
b29uKS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVk5UUSA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhbiBhbGln
bmVkIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSByZWdpc3RlciB2YWx1ZS4NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZh
bHVlIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9B
VFRSU19NTVgNCitfbW1fc3RyZWFtX3BpKF9fbTY0ICpfX3AsIF9fbTY0IF9fYSkNCit7DQorI2lm
ZGVmIF9fR05VQ19fDQorICBfX2J1aWx0aW5faWEzMl9tb3ZudHEgKCh1bnNpZ25lZCBsb25nIGxv
bmcgKilfX3AsICh1bnNpZ25lZCBsb25nIGxvbmcpX19hKTsNCisjZWxzZQ0KKyAgX19idWlsdGlu
X2lhMzJfbW92bnRxKF9fcCwgX19hKTsNCisjZW5kaWYNCit9DQorDQorLy8vIE1vdmVzIHBhY2tl
ZCBmbG9hdCB2YWx1ZXMgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGEN
CisvLy8gICAgMTI4LWJpdCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2Fj
aGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZA0KKy8vLyAgICBhcyBub24tdGVtcG9yYWwgKHVubGlr
ZWx5IHRvIGJlIHVzZWQgYWdhaW4gc29vbikuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWTU9WTlRQUyAvIE1PVk5UUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0
aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQ0KKy8vLyAgICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4NCitz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdHJlYW1fcHMo
ZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICBfX2J1aWx0
aW5faWEzMl9tb3ZudHBzIChfX3AsIChfX3Y0c2YpX19hKTsNCisjZWxzZQ0KKyAgX19idWlsdGlu
X25vbnRlbXBvcmFsX3N0b3JlKChfX3Y0c2YpX19hLCAoX192NHNmKilfX3ApOw0KKyNlbmRpZg0K
K30NCisNCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCitleHRlcm4gIkMiIHsNCisjZW5kaWYN
CisNCisvLy8gRm9yY2VzIHN0cm9uZyBtZW1vcnkgb3JkZXJpbmcgKHNlcmlhbGl6YXRpb24pIGJl
dHdlZW4gc3RvcmUNCisvLy8gICAgaW5zdHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3RydWN0
aW9uIGFuZCBzdG9yZSBpbnN0cnVjdGlvbnMgZm9sbG93aW5nDQorLy8vICAgIHRoaXMgaW5zdHJ1
Y3Rpb24sIGVuc3VyaW5nIHRoZSBzeXN0ZW0gY29tcGxldGVzIGFsbCBwcmV2aW91cyBzdG9yZXMN
CisvLy8gICAgYmVmb3JlIGV4ZWN1dGluZyBzdWJzZXF1ZW50IHN0b3Jlcy4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFNGRU5DRSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KK3ZvaWQg
X21tX3NmZW5jZSh2b2lkKTsNCisNCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCit9IC8vIGV4
dGVybiAiQyINCisjZW5kaWYNCisNCisvLy8gRXh0cmFjdHMgMTYtYml0IGVsZW1lbnQgZnJvbSBh
IDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGFuZA0KKy8vLyAgICByZXR1cm5zIGl0LCBhcyBz
cGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9l
eHRyYWN0X3BpMTYoX19tNjQgYSwgaW50IG4pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVhUUlcgLyBQRVhUUlcgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisvLy8gICAgQSA2NC1iaXQgdmVj
dG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIG4NCisvLy8gICAgQW4gaW1tZWRpYXRlIGlu
dGVnZXIgb3BlcmFuZCB0aGF0IGRldGVybWluZXMgd2hpY2ggYml0cyBhcmUgZXh0cmFjdGVkOiBc
bg0KKy8vLyAgICAwOiBCaXRzIFsxNTowXSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4g
XG4NCisvLy8gICAgMTogQml0cyBbMzE6MTZdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9u
LiBcbg0KKy8vLyAgICAyOiBCaXRzIFs0NzozMl0gYXJlIGNvcGllZCB0byB0aGUgZGVzdGluYXRp
b24uIFxuDQorLy8vICAgIDM6IEJpdHMgWzYzOjQ4XSBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5h
dGlvbi4NCisvLy8gXHJldHVybnMgQSAxNi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRy
YWN0ZWQgMTYgYml0cyBvZiBwYWNrZWQgZGF0YS4NCisjZGVmaW5lIF9tbV9leHRyYWN0X3BpMTYo
YSwgbikgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y0aGkoKF9fbTY0KWEsIChp
bnQpbikNCisNCisvLy8gQ29waWVzIGRhdGEgZnJvbSB0aGUgNjQtYml0IHZlY3RvciBvZiBbNCB4
IGkxNl0gdG8gdGhlIGRlc3RpbmF0aW9uLA0KKy8vLyAgICBhbmQgaW5zZXJ0cyB0aGUgbG93ZXIg
MTYtYml0cyBvZiBhbiBpbnRlZ2VyIG9wZXJhbmQgYXQgdGhlIDE2LWJpdCBvZmZzZXQNCisvLy8g
ICAgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBuLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTY0IF9t
bV9pbnNlcnRfcGkxNihfX202NCBhLCBpbnQgZCwgaW50IG4pOw0KKy8vLyBcZW5kY29kZQ0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBJTlNSVyA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0
b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBccGFyYW0gZA0KKy8vLyAgICBBbiBpbnRlZ2VyLiBUaGUg
bG93ZXIgMTYtYml0IHZhbHVlIGZyb20gdGhpcyBvcGVyYW5kIGlzIHdyaXR0ZW4gdG8gdGhlDQor
Ly8vICAgIGRlc3RpbmF0aW9uIGF0IHRoZSBvZmZzZXQgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgXGEg
bi4NCisvLy8gXHBhcmFtIG4NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFudCB0
aGF0IGRldGVybWluZXMgd2hpY2ggdGhlIGJpdHMgdG8gYmUgdXNlZA0KKy8vLyAgICBpbiB0aGUg
ZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDA6IEJpdHMgWzE1OjBdIGFyZSBjb3BpZWQgdG8gdGhl
IGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAxOiBCaXRzIFszMToxNl0gYXJlIGNvcGllZCB0byB0
aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDI6IEJpdHMgWzQ3OjMyXSBhcmUgY29waWVkIHRv
IHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMzogQml0cyBbNjM6NDhdIGFyZSBjb3BpZWQg
dG8gdGhlIGRlc3RpbmF0aW9uLiAgXG4NCisvLy8gICAgVGhlIHJlbWFpbmluZyBiaXRzIGluIHRo
ZSBkZXN0aW5hdGlvbiBhcmUgY29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcNCisvLy8gICAg
Yml0cyBpbiBvcGVyYW5kIFxhIGEuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBwYWNrZWQgZGF0YSBmcm9tIHRoZQ0KKy8vLyAgICBv
cGVyYW5kcy4NCisjZGVmaW5lIF9tbV9pbnNlcnRfcGkxNihhLCBkLCBuKSBcDQorICAoX19tNjQp
X19idWlsdGluX2lhMzJfdmVjX3NldF92NGhpKChfX202NClhLCAoaW50KWQsIChpbnQpbikNCisN
CisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgMTYtYml0IGlu
dGVnZXIgdmFsdWVzIG9mDQorLy8vICAgIHRoZSA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQg
d3JpdGVzIHRoZSBncmVhdGVyIHZhbHVlIHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGJp
dHMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1B
WFNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9tYXhfcGkx
NihfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BtYXhzdygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisNCisvLy8gQ29tcGFy
ZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50ZWdl
cg0KKy8vLyAgICB2YWx1ZXMgb2YgdGhlIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIGFuZCB3cml0
ZXMgdGhlIGdyZWF0ZXIgdmFsdWUgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgYml0cyBp
biB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUFYVUIg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX21heF9wdTgoX19t
NjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9w
bWF4dWIoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVh
Y2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgcGFja2VkIDE2LWJpdCBpbnRlZ2VyIHZhbHVlcyBvZg0K
Ky8vLyAgICB0aGUgNjQtYml0IGludGVnZXIgdmVjdG9ycywgYW5kIHdyaXRlcyB0aGUgbGVzc2Vy
IHZhbHVlIHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0
aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1JTlNXIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9taW5fcGkxNihfX202NCBfX2EsIF9fbTY0
IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtaW5zdygoX192NGhp
KV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29y
cmVzcG9uZGluZyBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50ZWdlcg0KKy8vLyAgICB2YWx1ZXMg
b2YgdGhlIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIGFuZCB3cml0ZXMgdGhlIGxlc3NlciB2YWx1
ZSB0byB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNSU5VQiA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9f
REVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fbWluX3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikN
Cit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtaW51YigoX192OHFpKV9fYSwg
KF9fdjhxaSlfX2IpOw0KK30NCisNCisvLy8gVGFrZXMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0
IGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGluIGEgNjQtYml0DQorLy8vICAgIGludGVnZXIgdmVj
dG9yIHRvIGNyZWF0ZSBhbiA4LWJpdCBtYXNrIHZhbHVlLiBaZXJvLWV4dGVuZHMgdGhlIHZhbHVl
IHRvDQorLy8vICAgIDMyLWJpdCBpbnRlZ2VyIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGRlc3RpbmF0
aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1PVk1TS0IgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgd2l0aCBiaXRzIHRvIGJlIGV4dHJhY3RlZC4NCisv
Ly8gXHJldHVybnMgVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZyb20gZWFjaCA4LWJpdCBlbGVt
ZW50IGluIFxhIF9fYSwNCisvLy8gICAgd3JpdHRlbiB0byBiaXRzIFs3OjBdLg0KK3N0YXRpYyBf
X2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX21vdmVtYXNrX3BpOChf
X202NCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiKChfX3Y4cWkp
X19hKTsNCit9DQorDQorLy8vIE11bHRpcGxpZXMgcGFja2VkIDE2LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlcyBhbmQgd3JpdGVzIHRoZQ0KKy8vLyAgICBoaWdoLW9yZGVyIDE2IGJpdHMgb2Yg
ZWFjaCAzMi1iaXQgcHJvZHVjdCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluDQorLy8vICAg
IHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNVUxIVVcg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGggb3BlcmFuZHMuDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9tdWxo
aV9wdTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfcG11bGh1dygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisNCisvLy8g
U2h1ZmZsZXMgdGhlIDQgMTYtYml0IGludGVnZXJzIGZyb20gYSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgdG8gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVk
aWF0ZSB2YWx1ZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTY0IF9tbV9zaHVmZmxlX3BpMTYoX19tNjQgYSwg
Y29uc3QgaW50IG4pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFBTSFVGVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSB2YWx1ZXMgdG8gYmUgc2h1ZmZsZWQuDQorLy8vIFxwYXJhbSBuDQorLy8vICAgIEFuIGltbWVk
aWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxl
bWVudHMgdG8NCisvLy8gICAgY29weSBmcm9tIFxhIGEuIFRoZSBkZXN0aW5hdGlvbnMgd2l0aGlu
IHRoZSA2NC1iaXQgZGVzdGluYXRpb24gYXJlDQorLy8vICAgIGFzc2lnbmVkIHZhbHVlcyBhcyBm
b2xsb3dzOiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMg
dG8gYml0cyBbMTU6MF0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBC
aXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMzE6MTZdIGluIHRo
ZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNTo0XSBhcmUgdXNlZCB0
byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzQ3OjMyXSBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRp
b24uIFxuDQorLy8vICAgIEJpdHMgWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBi
aXRzIFs2Mzo0OF0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXQg
dmFsdWUgYXNzaWdubWVudHM6IFxuDQorLy8vICAgIDAwOiBhc3NpZ25lZCBmcm9tIGJpdHMgWzE1
OjBdIG9mIFxhIGEuIFxuDQorLy8vICAgIDAxOiBhc3NpZ25lZCBmcm9tIGJpdHMgWzMxOjE2XSBv
ZiBcYSBhLiBcbg0KKy8vLyAgICAxMDogYXNzaWduZWQgZnJvbSBiaXRzIFs0NzozMl0gb2YgXGEg
YS4gXG4NCisvLy8gICAgMTE6IGFzc2lnbmVkIGZyb20gYml0cyBbNjM6NDhdIG9mIFxhIGEuDQor
Ly8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNodWZm
bGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9zaHVmZmxlX3BpMTYoYSwgbikgXA0KKyAgKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BzaHVmdygoX192NGhpKShfX202NCkoYSksIChuKSkNCisNCisvLy8g
Q29uZGl0aW9uYWxseSBjb3BpZXMgdGhlIHZhbHVlcyBmcm9tIGVhY2ggOC1iaXQgZWxlbWVudCBp
biB0aGUgZmlyc3QNCisvLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgdG8gdGhl
IHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24sIGFzDQorLy8vICAgIHNwZWNpZmllZCBieSB0aGUg
bW9zdCBzaWduaWZpY2FudCBiaXQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUN
CisvLy8gICAgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0KKy8vLw0KKy8v
LyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1w
b3JhbA0KKy8vLyAgICAodW5saWtlbHkgdG8gYmUgdXNlZCBhZ2FpbiBzb29uKS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IE1BU0tNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2QNCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgdmFsdWVzIHdpdGggZWxlbWVudHMgdG8gYmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19u
DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuIFRoZSBtb3N0IHNpZ25p
ZmljYW50IGJpdCBmcm9tIGVhY2ggOC1iaXQNCisvLy8gICAgZWxlbWVudCBkZXRlcm1pbmVzIHdo
ZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fZA0KKy8vLyAg
ICBpcyBjb3BpZWQuIElmIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBhIGdpdmVuIGVsZW1l
bnQgaXMgMSwgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiBvcGVyYW5kIFxh
IF9fZCBpcyBjb3BpZWQuDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEg
NjQtYml0IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgY29uZGl0aW9uYWxs
eQ0KKy8vLyAgICBjb3BpZWQgaW50ZWdlciB2YWx1ZXMuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1v
cnkgbG9jYXRpb24gZG9lcyBub3QgaGF2ZQ0KKy8vLyAgICB0byBiZSBhbGlnbmVkLg0KK3N0YXRp
YyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9tYXNrbW92ZV9z
aTY0KF9fbTY0IF9fZCwgX19tNjQgX19uLCBjaGFyICpfX3ApDQorew0KKyAgX19idWlsdGluX2lh
MzJfbWFza21vdnEoKF9fdjhxaSlfX2QsIChfX3Y4cWkpX19uLCBfX3ApOw0KK30NCisNCisvLy8g
Q29tcHV0ZXMgdGhlIHJvdW5kZWQgYXZlcmFnZXMgb2YgdGhlIHBhY2tlZCB1bnNpZ25lZCA4LWJp
dCBpbnRlZ2VyDQorLy8vICAgIHZhbHVlcyBhbmQgd3JpdGVzIHRoZSBhdmVyYWdlcyB0byB0aGUg
Y29ycmVzcG9uZGluZyBiaXRzIGluIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFBBVkdCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBh
dmVyYWdlcyBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSU19NTVgNCitfbW1fYXZnX3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikNCit7
DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhdmdiKChfX3Y4cWkpX19hLCAoX192
OHFpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wdXRlcyB0aGUgcm91bmRlZCBhdmVyYWdlcyBvZiB0
aGUgcGFja2VkIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZhbHVlcyBhbmQgd3Jp
dGVzIHRoZSBhdmVyYWdlcyB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZQ0KKy8vLyAg
ICBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBVkdXIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBhdmVyYWdlcyBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fYXZnX3B1MTYo
X19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEz
Ml9wYXZndygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisNCisvLy8gU3VidHJhY3Rz
IHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIG9mIHRoZSB0
d28NCisvLy8gICAgNjQtYml0IHZlY3RvciBvcGVyYW5kcyBhbmQgY29tcHV0ZXMgdGhlIGFic29s
dXRlIHZhbHVlIGZvciBlYWNoIG9mIHRoZQ0KKy8vLyAgICBkaWZmZXJlbmNlLiBUaGVuIHN1bSBv
ZiB0aGUgOCBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBpcyB3cml0dGVuIHRvIHRoZQ0KKy8vLyAgICBi
aXRzIFsxNTowXSBvZiB0aGUgZGVzdGluYXRpb247IHRoZSByZW1haW5pbmcgYml0cyBbNjM6MTZd
IGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNBREJXIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciB3aG9zZSBsb3dlciAxNiBiaXRzIGNvbnRhaW4gdGhlIHN1bXMgb2YgdGhlDQorLy8v
ICAgIHNldHMgb2YgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLiBU
aGUgdXBwZXIgYml0cyBhcmUNCisvLy8gICAgY2xlYXJlZC4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX3NhZF9wdTgoX19tNjQgX19hLCBfX202
NCBfX2IpDQorew0KKyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2FkYncoKF9fdjhx
aSlfX2EsIChfX3Y4cWkpX19iKTsNCit9DQorDQorI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQor
ZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorDQorLy8vIFJldHVybnMgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBNWENTUiByZWdpc3RlciBhcyBhIDMyLWJpdCB1bnNpZ25lZA0KKy8vLyAgICBpbnRlZ2VyIHZh
bHVlLg0KKy8vLw0KKy8vLyAgICBUaGVyZSBhcmUgc2V2ZXJhbCBncm91cHMgb2YgbWFjcm9zIGFz
c29jaWF0ZWQgd2l0aCB0aGlzDQorLy8vICAgIGludHJpbnNpYywgaW5jbHVkaW5nOg0KKy8vLyAg
ICA8dWw+DQorLy8vICAgIDxsaT4NCisvLy8gICAgICBGb3IgY2hlY2tpbmcgZXhjZXB0aW9uIHN0
YXRlczogX01NX0VYQ0VQVF9JTlZBTElELCBfTU1fRVhDRVBUX0RJVl9aRVJPLA0KKy8vLyAgICAg
IF9NTV9FWENFUFRfREVOT1JNLCBfTU1fRVhDRVBUX09WRVJGTE9XLCBfTU1fRVhDRVBUX1VOREVS
RkxPVywNCisvLy8gICAgICBfTU1fRVhDRVBUX0lORVhBQ1QuIFRoZXJlIGlzIGEgY29udmVuaWVu
Y2Ugd3JhcHBlcg0KKy8vLyAgICAgIF9NTV9HRVRfRVhDRVBUSU9OX1NUQVRFKCkuDQorLy8vICAg
IDwvbGk+DQorLy8vICAgIDxsaT4NCisvLy8gICAgICBGb3IgY2hlY2tpbmcgZXhjZXB0aW9uIG1h
c2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLA0KKy8vLyAgICAgIF9N
TV9NQVNLX0lOVkFMSUQsIF9NTV9NQVNLX0RFTk9STSwgX01NX01BU0tfRElWX1pFUk8sIF9NTV9N
QVNLX0lORVhBQ1QuDQorLy8vICAgICAgVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIF9N
TV9HRVRfRVhDRVBUSU9OX01BU0soKS4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPGxpPg0KKy8v
LyAgICAgIEZvciBjaGVja2luZyByb3VuZGluZyBtb2RlczogX01NX1JPVU5EX05FQVJFU1QsIF9N
TV9ST1VORF9ET1dOLA0KKy8vLyAgICAgIF9NTV9ST1VORF9VUCwgX01NX1JPVU5EX1RPV0FSRF9a
RVJPLiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXINCisvLy8gICAgICBfTU1fR0VUX1JP
VU5ESU5HX01PREUoKS4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPGxpPg0KKy8vLyAgICAgIEZv
ciBjaGVja2luZyBmbHVzaC10by16ZXJvIG1vZGU6IF9NTV9GTFVTSF9aRVJPX09OLCBfTU1fRkxV
U0hfWkVST19PRkYuDQorLy8vICAgICAgVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIF9N
TV9HRVRfRkxVU0hfWkVST19NT0RFKCkuDQorLy8vICAgIDwvbGk+DQorLy8vICAgIDxsaT4NCisv
Ly8gICAgICBGb3IgY2hlY2tpbmcgZGVub3JtYWxzLWFyZS16ZXJvIG1vZGU6IF9NTV9ERU5PUk1B
TFNfWkVST19PTiwNCisvLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVyZSBpcyBh
IGNvbnZlbmllbmNlIHdyYXBwZXINCisvLy8gICAgICBfTU1fR0VUX0RFTk9STUFMU19aRVJPX01P
REUoKS4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPC91bD4NCisvLy8NCisvLy8gICAgRm9yIGV4
YW1wbGUsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjaGVja3MgaWYgYW4gb3ZlcmZsb3cgZXhj
ZXB0aW9uIGhhcw0KKy8vLyAgICBvY2N1cnJlZDoNCisvLy8gICAgXGNvZGUNCisvLy8gICAgICAo
IF9tbV9nZXRjc3IoKSAmIF9NTV9FWENFUFRfT1ZFUkZMT1cgKQ0KKy8vLyAgICBcZW5kY29kZQ0K
Ky8vLw0KKy8vLyAgICBUaGUgZm9sbG93aW5nIGV4cHJlc3Npb24gZ2V0cyB0aGUgY3VycmVudCBy
b3VuZGluZyBtb2RlOg0KKy8vLyAgICBcY29kZQ0KKy8vLyAgICAgIF9NTV9HRVRfUk9VTkRJTkdf
TU9ERSgpDQorLy8vICAgIFxlbmRjb2RlDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
U1RNWENTUiAvIFNUTVhDU1IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHJldHVybnMg
QSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiB0aGUg
TVhDU1INCisvLy8gICAgcmVnaXN0ZXIuDQordW5zaWduZWQgaW50IF9tbV9nZXRjc3Iodm9pZCk7
DQorDQorLy8vIFNldHMgdGhlIE1YQ1NSIHJlZ2lzdGVyIHdpdGggdGhlIDMyLWJpdCB1bnNpZ25l
ZCBpbnRlZ2VyIHZhbHVlLg0KKy8vLw0KKy8vLyAgICBUaGVyZSBhcmUgc2V2ZXJhbCBncm91cHMg
b2YgbWFjcm9zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludHJpbnNpYywNCisvLy8gICAgaW5jbHVk
aW5nOg0KKy8vLyAgICA8dWw+DQorLy8vICAgIDxsaT4NCisvLy8gICAgICBGb3Igc2V0dGluZyBl
eGNlcHRpb24gc3RhdGVzOiBfTU1fRVhDRVBUX0lOVkFMSUQsIF9NTV9FWENFUFRfRElWX1pFUk8s
DQorLy8vICAgICAgX01NX0VYQ0VQVF9ERU5PUk0sIF9NTV9FWENFUFRfT1ZFUkZMT1csIF9NTV9F
WENFUFRfVU5ERVJGTE9XLA0KKy8vLyAgICAgIF9NTV9FWENFUFRfSU5FWEFDVC4gVGhlcmUgaXMg
YSBjb252ZW5pZW5jZSB3cmFwcGVyDQorLy8vICAgICAgX01NX1NFVF9FWENFUFRJT05fU1RBVEUo
eCkgd2hlcmUgeCBpcyBvbmUgb2YgdGhlc2UgbWFjcm9zLg0KKy8vLyAgICA8L2xpPg0KKy8vLyAg
ICA8bGk+DQorLy8vICAgICAgRm9yIHNldHRpbmcgZXhjZXB0aW9uIG1hc2tzOiBfTU1fTUFTS19V
TkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLA0KKy8vLyAgICAgIF9NTV9NQVNLX0lOVkFMSUQs
IF9NTV9NQVNLX0RFTk9STSwgX01NX01BU0tfRElWX1pFUk8sIF9NTV9NQVNLX0lORVhBQ1QuDQor
Ly8vICAgICAgVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIF9NTV9TRVRfRVhDRVBUSU9O
X01BU0soeCkgd2hlcmUgeCBpcyBvbmUNCisvLy8gICAgICBvZiB0aGVzZSBtYWNyb3MuDQorLy8v
ICAgIDwvbGk+DQorLy8vICAgIDxsaT4NCisvLy8gICAgICBGb3Igc2V0dGluZyByb3VuZGluZyBt
b2RlczogX01NX1JPVU5EX05FQVJFU1QsIF9NTV9ST1VORF9ET1dOLA0KKy8vLyAgICAgIF9NTV9S
T1VORF9VUCwgX01NX1JPVU5EX1RPV0FSRF9aRVJPLiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdy
YXBwZXINCisvLy8gICAgICBfTU1fU0VUX1JPVU5ESU5HX01PREUoeCkgd2hlcmUgeCBpcyBvbmUg
b2YgdGhlc2UgbWFjcm9zLg0KKy8vLyAgICA8L2xpPg0KKy8vLyAgICA8bGk+DQorLy8vICAgICAg
Rm9yIHNldHRpbmcgZmx1c2gtdG8temVybyBtb2RlOiBfTU1fRkxVU0hfWkVST19PTiwgX01NX0ZM
VVNIX1pFUk9fT0ZGLg0KKy8vLyAgICAgIFRoZXJlIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBf
TU1fU0VUX0ZMVVNIX1pFUk9fTU9ERSh4KSB3aGVyZSB4IGlzDQorLy8vICAgICAgb25lIG9mIHRo
ZXNlIG1hY3Jvcy4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPGxpPg0KKy8vLyAgICAgIEZvciBz
ZXR0aW5nIGRlbm9ybWFscy1hcmUtemVybyBtb2RlOiBfTU1fREVOT1JNQUxTX1pFUk9fT04sDQor
Ly8vICAgICAgX01NX0RFTk9STUFMU19aRVJPX09GRi4gVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3
cmFwcGVyDQorLy8vICAgICAgX01NX1NFVF9ERU5PUk1BTFNfWkVST19NT0RFKHgpIHdoZXJlIHgg
aXMgb25lIG9mIHRoZXNlIG1hY3Jvcy4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPC91bD4NCisv
Ly8NCisvLy8gICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYXVzZXMg
c3Vic2VxdWVudCBmbG9hdGluZy1wb2ludA0KKy8vLyAgICBvcGVyYXRpb25zIHRvIHJvdW5kIHVw
Og0KKy8vLyAgICAgIF9tbV9zZXRjc3IoX21tX2dldGNzcigpIHwgX01NX1JPVU5EX1VQKQ0KKy8v
Lw0KKy8vLyAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2V0cyB0aGUgREFaIGFuZCBGVFogZmxh
Z3M6DQorLy8vICAgIFxjb2RlDQorLy8vICAgIHZvaWQgc2V0RmxhZ3MoKSB7DQorLy8vICAgICAg
X01NX1NFVF9GTFVTSF9aRVJPX01PREUoX01NX0ZMVVNIX1pFUk9fT04pOw0KKy8vLyAgICAgIF9N
TV9TRVRfREVOT1JNQUxTX1pFUk9fTU9ERShfTU1fREVOT1JNQUxTX1pFUk9fT04pOw0KKy8vLyAg
ICB9DQorLy8vICAgIFxlbmRjb2RlDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTERN
WENTUiAvIExETVhDU1IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9faQ0K
Ky8vLyAgICBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8g
dGhlIE1YQ1NSIHJlZ2lzdGVyLg0KK3ZvaWQgX21tX3NldGNzcih1bnNpZ25lZCBpbnQgX19pKTsN
CisNCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCit9IC8vIGV4dGVybiAiQyINCisjZW5kaWYN
CisNCisvLy8gU2VsZWN0cyA0IGZsb2F0IHZhbHVlcyBmcm9tIHRoZSAxMjgtYml0IG9wZXJhbmRz
IG9mIFs0IHggZmxvYXRdLCBhcw0KKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSB2
YWx1ZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fc2h1ZmZsZV9wcyhfX20xMjggYSwgX19tMTI4
IGIsIGNvbnN0IGludCBtYXNrKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU0hVRlBTIC8gU0hVRlBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBiDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBtYXNrDQorLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1
ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8N
CisvLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGIuIFxuDQorLy8vICAgIEJpdHMgWzM6MF0g
c3BlY2lmeSB0aGUgdmFsdWVzIGNvcGllZCBmcm9tIG9wZXJhbmQgXGEgYS4gXG4NCisvLy8gICAg
Qml0cyBbNzo0XSBzcGVjaWZ5IHRoZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBiLiBc
bg0KKy8vLyAgICBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgMTI4LWJpdCBkZXN0aW5hdGlv
biBhcmUgYXNzaWduZWQgdmFsdWVzIGFzDQorLy8vICAgIGZvbGxvd3M6IFxuDQorLy8vICAgIEJp
dHMgWzE6MF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFszMTowXSBpbiB0aGUN
CisvLy8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQgdG8g
YXNzaWduIHZhbHVlcyB0byBiaXRzIFs2MzozMl0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9u
LiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0
cyBbOTU6NjRdIGluIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBb
Nzo2XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzEyNzo5Nl0gaW4gdGhlDQor
Ly8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxu
DQorLy8vICAgIDAwOiBCaXRzIFszMTowXSBjb3BpZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJh
bmQuIFxuDQorLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gY29waWVkIGZyb20gdGhlIHNwZWNpZmll
ZCBvcGVyYW5kLiBcbg0KKy8vLyAgICAxMDogQml0cyBbOTU6NjRdIGNvcGllZCBmcm9tIHRoZSBz
cGVjaWZpZWQgb3BlcmFuZC4gXG4NCisvLy8gICAgMTE6IEJpdHMgWzEyNzo5Nl0gY29waWVkIGZy
b20gdGhlIHNwZWNpZmllZCBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4NCisjZGVmaW5l
IF9tbV9zaHVmZmxlX3BzKGEsIGIsIG1hc2spIFwNCisgIChfX20xMjgpX19idWlsdGluX2lhMzJf
c2h1ZnBzKChfX3Y0c2YpKF9fbTEyOCkoYSksIChfX3Y0c2YpKF9fbTEyOCkoYiksIFwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKG1hc2spKQ0KKw0KKy8vLyBVbnBhY2tz
IHRoZSBoaWdoLW9yZGVyIChpbmRleCAyLDMpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YNCisvLy8gICAgWzQgeCBmbG9hdF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlVOUENLSFBTIC8gVU5QQ0tIUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBcbg0KKy8v
LyAgICBCaXRzIFs5NTo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3Rp
bmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1
OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMg
WzEyNzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24u
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fdW5wYWNraGlfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikN
Cit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJf
dW5wY2tocHMgKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiBf
X2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9fdjRzZilfX2IsIDIsIDYsIDMs
IDcpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVyIChpbmRleCAw
LDEpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCisvLy8gICAgWzQgeCBmbG9h
dF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBTIC8gVU5QQ0tMUFMg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBcbg0KKy8vLyAgICBCaXRzIFszMTowXSBhcmUgd3Jp
dHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRpb24uICBcbg0KKy8vLyAgICBCaXRz
IFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBcbg0KKy8vLyAgICBCaXRzIFszMTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gb2Yg
dGhlIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5w
YWNrbG9fcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQor
ICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfdW5wY2tscHMgKChfX3Y0c2YpX19hLCAo
X192NHNmKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rvcigo
X192NHNmKV9fYSwgKF9fdjRzZilfX2IsIDAsIDQsIDEsIDUpOw0KKyNlbmRpZg0KK30NCisNCisv
Ly8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBhcmUgc2V0IHRvIHRoZSBsb3dlciAzMiBi
aXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBwZXINCisvLy8gICAgOTYgYml0cyBh
cmUgc2V0IHRvIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQUyAvIEJMRU5EUFMgLyBNT1ZTUyA8L2M+
DQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB1cHBlciA5
NiBiaXRzIGFyZQ0KKy8vLyAgICB3cml0dGVuIHRvIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgYXJlDQorLy8vICAgIHdy
aXR0ZW4gdG8gdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21vdmVfc3MoX19tMTI4
IF9fYSwgX19tMTI4IF9fYikNCit7DQorICBfX2FbMF0gPSBfX2JbMF07DQorICByZXR1cm4gX19h
Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXINCisvLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRo
ZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBwZXINCisvLy8g
ICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBwYXJh
bWV0ZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tIUEQgLyBVTlBDS0hQ
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB1cHBlciA2NCBi
aXRzIGFyZQ0KKy8vLyAgICB3cml0dGVuIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1
bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlDQorLy8vICAgIHdyaXR0
ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21vdmVobF9wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4
KSBfX2J1aWx0aW5faWEzMl9tb3ZobHBzICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KKyNl
bHNlDQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0
c2YpX19iLCA2LCA3LCAyLCAzKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyDQor
Ly8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qg
cGFyYW1ldGVyLiBUaGUgdXBwZXINCisvLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSBsb3dl
ciA2NCBiaXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUNCisvLy8gICAgd3JpdHRlbiB0byB0
aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dl
ciA2NCBiaXRzIGFyZQ0KKy8vLyAgICB3cml0dGVuIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9tb3ZlbGhfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorI2lmZGVm
IF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbW92bGhwcyAoKF9f
djRzZilfX2EsIChfX3Y0c2YpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVm
ZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYiwgMCwgMSwgNCwgNSk7DQorI2VuZGlm
DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGludG8g
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4DQorLy8vICAgIGZsb2F0XS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2
XS4gVGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUgY29waWVkDQorLy8vICAgIGZy
b20gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGll
ZCBhbmQgY29udmVydGVkDQorLy8vICAgIHZhbHVlcyBmcm9tIHRoZSBvcGVyYW5kLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHBpMTZf
cHMoX19tNjQgX19hKQ0KK3sNCisgIF9fbTY0IF9fYiwgX19jOw0KKyAgX19tMTI4IF9fcjsNCisN
CisgIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsNCisgIF9fYiA9IF9tbV9jbXBndF9waTE2KF9f
YiwgX19hKTsNCisgIF9fYyA9IF9tbV91bnBhY2toaV9waTE2KF9fYSwgX19iKTsNCisgIF9fciA9
IF9tbV9zZXR6ZXJvX3BzKCk7DQorICBfX3IgPSBfbW1fY3Z0cGkzMl9wcyhfX3IsIF9fYyk7DQor
ICBfX3IgPSBfbW1fbW92ZWxoX3BzKF9fciwgX19yKTsNCisgIF9fYyA9IF9tbV91bnBhY2tsb19w
aTE2KF9fYSwgX19iKTsNCisgIF9fciA9IF9tbV9jdnRwaTMyX3BzKF9fciwgX19jKTsNCisNCisg
IHJldHVybiBfX3I7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIDY0LWJpdCB2ZWN0b3Igb2YgMTYt
Yml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGludG8gYQ0KKy8vLyAgICAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBT
ICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4g
VGhlIGVsZW1lbnRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbiBhcmUgY29waWVkIGZyb20g
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBh
bmQgY29udmVydGVkDQorLy8vICAgIHZhbHVlcyBmcm9tIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHB1MTZfcHMo
X19tNjQgX19hKQ0KK3sNCisgIF9fbTY0IF9fYiwgX19jOw0KKyAgX19tMTI4IF9fcjsNCisNCisg
IF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsNCisgIF9fYyA9IF9tbV91bnBhY2toaV9waTE2KF9f
YSwgX19iKTsNCisgIF9fciA9IF9tbV9zZXR6ZXJvX3BzKCk7DQorICBfX3IgPSBfbW1fY3Z0cGkz
Ml9wcyhfX3IsIF9fYyk7DQorICBfX3IgPSBfbW1fbW92ZWxoX3BzKF9fciwgX19yKTsNCisgIF9f
YyA9IF9tbV91bnBhY2tsb19waTE2KF9fYSwgX19iKTsNCisgIF9fciA9IF9tbV9jdnRwaTMyX3Bz
KF9fciwgX19jKTsNCisNCisgIHJldHVybiBfX3I7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUg
bG93ZXIgZm91ciA4LWJpdCB2YWx1ZXMgZnJvbSBhIDY0LWJpdCB2ZWN0b3Igb2YgWzggeCBpOF0N
CisvLy8gICAgaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzgg
eCBpOF0uIFRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlIGNvcGllZA0KKy8vLyAg
ICBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxvd2VyIDQgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5k
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGNvcGllZCBhbmQgY29udmVydGVkDQorLy8vICAgIHZhbHVlcyBmcm9tIHRoZSBvcGVy
YW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQor
X21tX2N2dHBpOF9wcyhfX202NCBfX2EpDQorew0KKyAgX19tNjQgX19iOw0KKw0KKyAgX19iID0g
X21tX3NldHplcm9fc2k2NCgpOw0KKyAgX19iID0gX21tX2NtcGd0X3BpOChfX2IsIF9fYSk7DQor
ICBfX2IgPSBfbW1fdW5wYWNrbG9fcGk4KF9fYSwgX19iKTsNCisNCisgIHJldHVybiBfbW1fY3Z0
cGkxNl9wcyhfX2IpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIGxvd2VyIGZvdXIgdW5zaWdu
ZWQgOC1iaXQgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDY0LWJpdA0KKy8vLyAgICB2ZWN0b3Igb2Yg
WzggeCB1OF0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgdW5z
aWduZWQgOC1iaXQgaW50ZWdlciB2YWx1ZXMuIFRoZSBlbGVtZW50cyBvZiB0aGUNCisvLy8gICAg
ZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxvd2VyIDQgZWxl
bWVudHMgaW4gdGhpcw0KKy8vLyAgICBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBhbmQgY29udmVydGVk
DQorLy8vICAgIHZhbHVlcyBmcm9tIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9jdnRwdThfcHMoX19tNjQg
X19hKQ0KK3sNCisgIF9fbTY0IF9fYjsNCisNCisgIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsN
CisgIF9fYiA9IF9tbV91bnBhY2tsb19waTgoX19hLCBfX2IpOw0KKw0KKyAgcmV0dXJuIF9tbV9j
dnRwaTE2X3BzKF9fYik7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgdHdvIDMyLWJpdCBzaWdu
ZWQgaW50ZWdlciB2YWx1ZXMgZnJvbSBlYWNoIDY0LWJpdCB2ZWN0b3INCisvLy8gICAgb3BlcmFu
ZCBvZiBbMiB4IGkzMl0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZQ0K
Ky8vLyAgICBjb3BpZWQgZnJvbSB0aGUgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSB1cHBl
ciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlDQorLy8vICAgIGNvcGllZCBmcm9tIHRo
ZSBlbGVtZW50cyBpbiB0aGlzIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KKy8vLyAg
ICBjb3BpZWQgYW5kIGNvbnZlcnRlZCB2YWx1ZXMgZnJvbSB0aGUgZmlyc3Qgb3BlcmFuZC4gVGhl
IHVwcGVyIDY0IGJpdHMNCisvLy8gICAgY29udGFpbiB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQg
dmFsdWVzIGZyb20gdGhlIHNlY29uZCBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHBpMzJ4Ml9wcyhfX202NCBfX2EsIF9f
bTY0IF9fYikNCit7DQorICBfX20xMjggX19jOw0KKw0KKyAgX19jID0gX21tX3NldHplcm9fcHMo
KTsNCisgIF9fYyA9IF9tbV9jdnRwaTMyX3BzKF9fYywgX19iKTsNCisgIF9fYyA9IF9tbV9tb3Zl
bGhfcHMoX19jLCBfX2MpOw0KKw0KKyAgcmV0dXJuIF9tbV9jdnRwaTMyX3BzKF9fYywgX19hKTsN
Cit9DQorDQorLy8vIENvbnZlcnRzIGVhY2ggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCBlbGVtZW50IG9mIGEgMTI4LWJpdA0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gaW50byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciwgYW5kDQorLy8vICAgIHBh
Y2tzIHRoZSByZXN1bHRzIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
Lg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBpcyBOYU4gb3Ig
aW5maW5pdHksIG9yIGlmIHRoZQ0KKy8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzIGdy
ZWF0ZXIgdGhhbiAweDdGRkZGRkZGIG9yIGxlc3MgdGhhbiAtMHg4MDAwLA0KKy8vLyAgICBpdCBp
cyBjb252ZXJ0ZWQgdG8gMHg4MDAwLiBPdGhlcndpc2UgaWYgdGhlIGZsb2F0aW5nLXBvaW50IGVs
ZW1lbnQgaXMNCisvLy8gICAgZ3JlYXRlciB0aGFuIDB4N0ZGRiwgaXQgaXMgY29udmVydGVkIHRv
IDB4N0ZGRi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJICsgQ09NUE9T
SVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNv
bnZlcnRlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZB
VUxUX0ZOX0FUVFJTX01NWA0KK19tbV9jdnRwc19waTE2KF9fbTEyOCBfX2EpDQorew0KKyAgX19t
NjQgX19iLCBfX2M7DQorDQorICBfX2IgPSBfbW1fY3Z0cHNfcGkzMihfX2EpOw0KKyAgX19hID0g
X21tX21vdmVobF9wcyhfX2EsIF9fYSk7DQorICBfX2MgPSBfbW1fY3Z0cHNfcGkzMihfX2EpOw0K
Kw0KKyAgcmV0dXJuIF9tbV9wYWNrc19waTMyKF9fYiwgX19jKTsNCit9DQorDQorLy8vIENvbnZl
cnRzIGVhY2ggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50IG9mIGEgMTI4
LWJpdA0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBh
biA4LWJpdCBzaWduZWQgaW50ZWdlciwgYW5kDQorLy8vICAgIHBhY2tzIHRoZSByZXN1bHRzIGlu
dG8gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YNCisvLy8g
ICAgWzggeCBpOF0uIFRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSB2ZWN0b3IgYXJlIHNldCB0byAw
Lg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBpcyBOYU4gb3Ig
aW5maW5pdHksIG9yIGlmIHRoZQ0KKy8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzIGdy
ZWF0ZXIgdGhhbiAweDdGRkZGRkZGIG9yIGxlc3MgdGhhbiAtMHg4MCwgaXQNCisvLy8gICAgaXMg
Y29udmVydGVkIHRvIDB4ODAuIE90aGVyd2lzZSBpZiB0aGUgZmxvYXRpbmctcG9pbnQgZWxlbWVu
dCBpcyBncmVhdGVyDQorLy8vICAgIHRoYW4gMHg3RiwgaXQgaXMgY29udmVydGVkIHRvIDB4N0Yu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQUzJQSSArIENPTVBPU0lURSA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIDEyOC1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0
aGUNCisvLy8gICAgY29udmVydGVkIHZhbHVlcyBhbmQgdGhlIHVwcHBlciAzMiBiaXRzIGFyZSBz
ZXQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNf
TU1YDQorX21tX2N2dHBzX3BpOChfX20xMjggX19hKQ0KK3sNCisgIF9fbTY0IF9fYiwgX19jOw0K
Kw0KKyAgX19iID0gX21tX2N2dHBzX3BpMTYoX19hKTsNCisgIF9fYyA9IF9tbV9zZXR6ZXJvX3Np
NjQoKTsNCisNCisgIHJldHVybiBfbW1fcGFja3NfcGkxNihfX2IsIF9fYyk7DQorfQ0KKw0KKy8v
LyBFeHRyYWN0cyB0aGUgc2lnbiBiaXRzIGZyb20gZWFjaCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50DQorLy8vICAgIGVsZW1lbnQgb2YgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUNCisvLy8gICAgc2lnbiBiaXRzIGlu
IGJpdHMgWzA6M10gb2YgdGhlIHJlc3VsdC4gQml0cyBbMzE6NF0gb2YgdGhlIHJlc3VsdCBhcmUg
c2V0DQorLy8vICAgIHRvIHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9W
TVNLUFMgLyBNT1ZNU0tQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQorLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgdmFsdWUuIEJpdHMgWzM6MF0gY29udGFp
biB0aGUgc2lnbiBiaXRzIGZyb20gZWFjaA0KKy8vLyAgICBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IGVsZW1lbnQgb2YgdGhlIHBhcmFtZXRlci4gQml0cyBbMzE6NF0gYXJlDQorLy8v
ICAgIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fbW92ZW1hc2tfcHMoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGlu
X2lhMzJfbW92bXNrcHMoKF9fdjRzZilfX2EpOw0KK30NCisNCisNCisjZGVmaW5lIF9NTV9BTElH
TjE2IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkNCisNCisNCisjZGVmaW5lIF9NTV9FWENF
UFRfSU5WQUxJRCAgICAoMHgwMDAxKQ0KKyNkZWZpbmUgX01NX0VYQ0VQVF9ERU5PUk0gICAgICgw
eDAwMDIpDQorI2RlZmluZSBfTU1fRVhDRVBUX0RJVl9aRVJPICAgKDB4MDAwNCkNCisjZGVmaW5l
IF9NTV9FWENFUFRfT1ZFUkZMT1cgICAoMHgwMDA4KQ0KKyNkZWZpbmUgX01NX0VYQ0VQVF9VTkRF
UkZMT1cgICgweDAwMTApDQorI2RlZmluZSBfTU1fRVhDRVBUX0lORVhBQ1QgICAgKDB4MDAyMCkN
CisjZGVmaW5lIF9NTV9FWENFUFRfTUFTSyAgICAgICAoMHgwMDNmKQ0KKw0KKyNkZWZpbmUgX01N
X01BU0tfSU5WQUxJRCAgICAgICgweDAwODApDQorI2RlZmluZSBfTU1fTUFTS19ERU5PUk0gICAg
ICAgKDB4MDEwMCkNCisjZGVmaW5lIF9NTV9NQVNLX0RJVl9aRVJPICAgICAoMHgwMjAwKQ0KKyNk
ZWZpbmUgX01NX01BU0tfT1ZFUkZMT1cgICAgICgweDA0MDApDQorI2RlZmluZSBfTU1fTUFTS19V
TkRFUkZMT1cgICAgKDB4MDgwMCkNCisjZGVmaW5lIF9NTV9NQVNLX0lORVhBQ1QgICAgICAoMHgx
MDAwKQ0KKyNkZWZpbmUgX01NX01BU0tfTUFTSyAgICAgICAgICgweDFmODApDQorDQorI2RlZmlu
ZSBfTU1fUk9VTkRfTkVBUkVTVCAgICAgKDB4MDAwMCkNCisjZGVmaW5lIF9NTV9ST1VORF9ET1dO
ICAgICAgICAoMHgyMDAwKQ0KKyNkZWZpbmUgX01NX1JPVU5EX1VQICAgICAgICAgICgweDQwMDAp
DQorI2RlZmluZSBfTU1fUk9VTkRfVE9XQVJEX1pFUk8gKDB4NjAwMCkNCisjZGVmaW5lIF9NTV9S
T1VORF9NQVNLICAgICAgICAoMHg2MDAwKQ0KKw0KKyNkZWZpbmUgX01NX0ZMVVNIX1pFUk9fTUFT
SyAgICgweDgwMDApDQorI2RlZmluZSBfTU1fRkxVU0hfWkVST19PTiAgICAgKDB4ODAwMCkNCisj
ZGVmaW5lIF9NTV9GTFVTSF9aRVJPX09GRiAgICAoMHgwMDAwKQ0KKw0KKyNkZWZpbmUgX01NX0dF
VF9FWENFUFRJT05fTUFTSygpIChfbW1fZ2V0Y3NyKCkgJiBfTU1fTUFTS19NQVNLKQ0KKyNkZWZp
bmUgX01NX0dFVF9FWENFUFRJT05fU1RBVEUoKSAoX21tX2dldGNzcigpICYgX01NX0VYQ0VQVF9N
QVNLKQ0KKyNkZWZpbmUgX01NX0dFVF9GTFVTSF9aRVJPX01PREUoKSAoX21tX2dldGNzcigpICYg
X01NX0ZMVVNIX1pFUk9fTUFTSykNCisjZGVmaW5lIF9NTV9HRVRfUk9VTkRJTkdfTU9ERSgpIChf
bW1fZ2V0Y3NyKCkgJiBfTU1fUk9VTkRfTUFTSykNCisNCisjZGVmaW5lIF9NTV9TRVRfRVhDRVBU
SU9OX01BU0soeCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fTUFTS19NQVNLKSB8
ICh4KSkpDQorI2RlZmluZSBfTU1fU0VUX0VYQ0VQVElPTl9TVEFURSh4KSAoX21tX3NldGNzcigo
X21tX2dldGNzcigpICYgfl9NTV9FWENFUFRfTUFTSykgfCAoeCkpKQ0KKyNkZWZpbmUgX01NX1NF
VF9GTFVTSF9aRVJPX01PREUoeCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fRkxV
U0hfWkVST19NQVNLKSB8ICh4KSkpDQorI2RlZmluZSBfTU1fU0VUX1JPVU5ESU5HX01PREUoeCkg
KF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fUk9VTkRfTUFTSykgfCAoeCkpKQ0KKw0K
KyNkZWZpbmUgX01NX1RSQU5TUE9TRTRfUFMocm93MCwgcm93MSwgcm93Miwgcm93MykgXA0KK2Rv
IHsgXA0KKyAgX19tMTI4IHRtcDMsIHRtcDIsIHRtcDEsIHRtcDA7IFwNCisgIHRtcDAgPSBfbW1f
dW5wYWNrbG9fcHMoKHJvdzApLCAocm93MSkpOyBcDQorICB0bXAyID0gX21tX3VucGFja2xvX3Bz
KChyb3cyKSwgKHJvdzMpKTsgXA0KKyAgdG1wMSA9IF9tbV91bnBhY2toaV9wcygocm93MCksIChy
b3cxKSk7IFwNCisgIHRtcDMgPSBfbW1fdW5wYWNraGlfcHMoKHJvdzIpLCAocm93MykpOyBcDQor
ICAocm93MCkgPSBfbW1fbW92ZWxoX3BzKHRtcDAsIHRtcDIpOyBcDQorICAocm93MSkgPSBfbW1f
bW92ZWhsX3BzKHRtcDIsIHRtcDApOyBcDQorICAocm93MikgPSBfbW1fbW92ZWxoX3BzKHRtcDEs
IHRtcDMpOyBcDQorICAocm93MykgPSBfbW1fbW92ZWhsX3BzKHRtcDMsIHRtcDEpOyBcDQorfSB3
aGlsZSAoMCkNCisNCisvKiBBbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5LiAqLw0KKyNkZWZpbmUg
X21fcGV4dHJ3IF9tbV9leHRyYWN0X3BpMTYNCisjZGVmaW5lIF9tX3BpbnNydyBfbW1faW5zZXJ0
X3BpMTYNCisjZGVmaW5lIF9tX3BtYXhzdyBfbW1fbWF4X3BpMTYNCisjZGVmaW5lIF9tX3BtYXh1
YiBfbW1fbWF4X3B1OA0KKyNkZWZpbmUgX21fcG1pbnN3IF9tbV9taW5fcGkxNg0KKyNkZWZpbmUg
X21fcG1pbnViIF9tbV9taW5fcHU4DQorI2RlZmluZSBfbV9wbW92bXNrYiBfbW1fbW92ZW1hc2tf
cGk4DQorI2RlZmluZSBfbV9wbXVsaHV3IF9tbV9tdWxoaV9wdTE2DQorI2RlZmluZSBfbV9wc2h1
ZncgX21tX3NodWZmbGVfcGkxNg0KKyNkZWZpbmUgX21fbWFza21vdnEgX21tX21hc2ttb3ZlX3Np
NjQNCisjZGVmaW5lIF9tX3BhdmdiIF9tbV9hdmdfcHU4DQorI2RlZmluZSBfbV9wYXZndyBfbW1f
YXZnX3B1MTYNCisjZGVmaW5lIF9tX3BzYWRidyBfbW1fc2FkX3B1OA0KKyNkZWZpbmUgX21fIF9t
bV8NCisjZGVmaW5lIF9tXyBfbW1fDQorDQorI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKyN1
bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorDQorLyogVWdseSBoYWNrIGZvciBiYWNrd2Fy
ZHMtY29tcGF0aWJpbGl0eSAoY29tcGF0aWJsZSB3aXRoIGdjYykgKi8NCisjaWZkZWYgX19HTlVD
X18NCisjaW5jbHVkZSA8ZW1taW50cmluLmg+DQorI2Vsc2UNCisjaWYgZGVmaW5lZChfX1NTRTJf
XykgJiYgIV9fYnVpbGRpbmdfbW9kdWxlKF9CdWlsdGluX2ludHJpbnNpY3MpDQorI2luY2x1ZGUg
PGVtbWludHJpbi5oPg0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKiBfX1hNTUlOVFJJ
Tl9IICovDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:31:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:31: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 1hXjJN-0002XW-2I; Mon, 03 Jun 2019 09:31: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXjJM-0002XP-9g
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:31:24 +0000
X-Inumbo-ID: 5817592a-85e2-11e9-b6c0-fb3b86dcf197
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5817592a-85e2-11e9-b6c0-fb3b86dcf197;
 Mon, 03 Jun 2019 09:31:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7A0E9F201A;
 Mon,  3 Jun 2019 11:31:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RIWCUYWiATQm; Mon,  3 Jun 2019 11:31:19 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 42323C1F5E;
 Mon,  3 Jun 2019 11:31:15 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 11:31:14
 +0200
To: Costin Lupu <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-7-costin.lupu@cs.pub.ro>
 <51e20b27-1cde-3013-2f3f-953c455eaa0d@neclab.eu>
 <7e9a4b12-28a6-352b-bd03-a4277fe844d1@gmail.com>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <ab765bf4-db65-5016-feaa-8f43388cda74@neclab.eu>
Date: Mon, 3 Jun 2019 11:31:14 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <7e9a4b12-28a6-352b-bd03-a4277fe844d1@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 6/8] Disable
 atomic 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@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 sharan.santhanam@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>

SGkgQ29zdGluLAoKT24gNi8zLzE5IDg6NTkgQU0sIENvc3RpbiBMdXB1IHdyb3RlOgo+IE9uIDYv
My8xOSAxMDozMiBBTSwgRmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+PiBIaSBDb3N0aW4sCj4+Cj4+
IE9uIDQvMTUvMTkgMTo0MyBQTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4+PiBXZSBkaXNhYmxlIHRo
ZSBhdG9taWMgZnVuY3Rpb24gZ2l2ZW4gdGhhdCB3ZSBhcmUgdXNpbmcgdGhlbSBhcyBtYWNyb3Mu
Cj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5y
bz4KPj4+IC0tLQo+Pj4gIMKgIHB0ZV9vc2FsLmMgfCAzICsrKwo+Pj4gIMKgIDEgZmlsZSBjaGFu
Z2VkLCAzIGluc2VydGlvbnMoKykKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvcHRlX29zYWwuYyBiL3B0
ZV9vc2FsLmMKPj4+IGluZGV4IDg1NjVmNDkuLjZiZTYyZTMgMTAwNjQ0Cj4+PiAtLS0gYS9wdGVf
b3NhbC5jCj4+PiArKysgYi9wdGVfb3NhbC5jCj4+PiBAQCAtNDQ2LDYgKzQ0Niw4IEBAIHB0ZV9v
c1Jlc3VsdAo+Pj4gcHRlX29zU2VtYXBob3JlQ2FuY2VsbGFibGVQZW5kKHB0ZV9vc1NlbWFwaG9y
ZUhhbmRsZSBoLAo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIHJlc3VsdDsKPj4+ICDCoCB9Cj4+PiAg
wqAgKyNpZiAwCj4+PiArLyogV2UgdXNlIG1hY3JvcyBpbnN0ZWFkICovCj4+Cj4+IFNvLCBpbiBj
b250cmFzdCB0byB0aGUgbGFzdCBwYXRjaCwgd2hlcmUgSSBzYWlkIGl0IHdhcywgaW4gdGhlIHBh
dGNoLAo+PiBwcm9iYWJseSBhIHF1ZXN0aW9uIG9mIHByZWZlcmVuY2Ugd2hldGhlciB0byBrZWVw
IHRoZSBjb2RlIGNvbW1lbnRlZCBvdXQKPj4gb3IgcmVtb3ZlIGl0LCBJIHRoaW5rIGhlcmUgaXQg
d291bGQgYmUgYWN0dWFsbHkgYmV0dGVyIHRvIGluZGVlZCByZW1vdmUKPj4gaXQuIEZvciB0aGUg
cHJldmlvdXMgcGF0Y2gsIGl0IHdhcyBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCBjb2RlLCBzbyBJ
Cj4+IGRvbid0IGZlZWwgc3Ryb25nbHkgZWl0aGVyIHdheS4gQnV0IHRoaXMgaXMgb3VyIG93biBn
bHVlIGNvZGUsIGFuZCB5b3UKPj4gaGF2ZSBjb21wbGV0ZWx5IHJlcGxhY2VkIHRoZSBmdW5jdGlv
bnMsIHNvIEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhbnkKPj4gcG9pbnQgb2Yga2VlcGluZyB0aGlz
IHBhcnQgYXJvdW5kIGFzIGEgY29tbWVudDsgaXQgd291bGQgYmUgZGlmZmVyZW50IGlmCj4+IHRo
aXMgd2FzIGEgbm90LXlldC1pbXBsZW1lbnRlZCBwYXJ0IHRoYXQgbWlnaHQgbmVlZCB0byBiZSBh
ZGFwdGVkIGxhdGVyOgo+PiBJIGRvbid0IHRoaW5rIHdlJ2xsIGV2ZXIgcHJhY3RpY2FsbHkgdXNl
IHRoaXMgY29tbWVudGVkLW91dCBjb2RlLCBzbyBpdAo+PiBtaWdodCBhcyB3ZWxsIGdvIGFuZCBt
YWtlIHRoZSBzb3VyY2UgZmlsZSBtb3JlIGNvbmNpc2UuIChQbHVzLCB0aGVyZSdzCj4+IGFsd2F5
cyBhIGNvZGUgaW4gdGhlIGdpdCBoaXN0b3J5IGlmIHdlIHJlYWxseSBuZWVkIGl0IHVuZXhwZWN0
ZWRseSBhdAo+PiBzb21lIHBvaW50KS4KPiAKPiBUaGVyZSBpcyBhY3R1YWxseSBhIHJlYXNvbiB3
aHkgSSBjaG9zZSBpdCB0aGlzIHdheS4gSWYgdGhlIG9yaWdpbiBjb2RlCj4gZ2V0cyBmaXhlZCB0
aGVuIHdlJ2xsIGJlIGFibGUgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucy4gSXQgZG9lc24ndCBodXJ0
IGlmCj4gd2Uga2VlcCBpdC4KCk9LLCBhbHJpZ2h0LiBJJ20gbm90IHN1cmUgSSBhZ3JlZSAxMDAl
LCBiZWNhdXNlIEkgdGVuZCB0byBqdXN0IHBpY2sgCnRob3NlIHRoaW5ncyBvdXQgb2YgdGhlIGdp
dCByZXBvIGlmIEkgZXZlciBuZWVkIHRoZW0gYWdhaW4sIGJ1dCBpdCdzIApqdXN0IGEgc2hvcnQg
YW1vdW50IG9mIGNvZGUgYW55d2F5IHRoYXQgZG9lc24ndCBibG9hdCB0aGUgZmlsZSB0b28gbXVj
aCwgCnNvIHdlIGNhbiBqdXN0IGtlZXAgaXQgYXMgaXQgaXMgbm93LCBJJ20gZmluZSB3aXRoIHRo
YXQuCgpDaGVlcnMsCkZsb3JpYW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:39:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:39:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXjR6-0002t4-AG; Mon, 03 Jun 2019 09:39: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXjR4-0002st-Hh
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:39:22 +0000
X-Inumbo-ID: 75b26b90-85e3-11e9-a6ce-83b9a32a7291
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 75b26b90-85e3-11e9-a6ce-83b9a32a7291;
 Mon, 03 Jun 2019 09:39:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E66E4F2048;
 Mon,  3 Jun 2019 11:38:50 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id eAFcIBXNlsyk; Mon,  3 Jun 2019 11:38:50 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B20C6F2024;
 Mon,  3 Jun 2019 11:38:46 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 11:38:46
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-8-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <a297f78e-6548-7ff5-bf06-4dfeff509cee@neclab.eu>
Date: Mon, 3 Jun 2019 11:38:46 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190415124320.4547-8-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 7/8] Add
 missing functions for Ruby interpreter
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 sharan.santhanam@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>

SGkgQ29zdGluLAoKanVzdCBvbmUgcmVtYXJrLiBJIHdhcyBhIGJpdCBjb25mdXNlZCByZWFkaW5n
IHRoZSBjb21taXQgbWVzc2FnZSwgCmJlY2F1c2UgdGhlIHJ1YnkgaW50ZXJwcmV0ZXIgdGhpbmcg
Y2FtZSBraW5kIG9mIG91dCBvZiB0aGUgYmx1ZS4gQ291bGQgCnlvdSBjaGFuZ2UgaXQgdG8gbWFr
ZSB0aGUgZGVzY3JpcHRpb24gbW9yZSBnZW5lcmljIGFuZCBhYm91dCB3aGF0J3MgYWRkZWQ/CgpB
bHNvLCBhcyBhbiBhc2lkZSwgSSBkb24ndCBsaWtlICJtaXNzaW5nX2Z1bmN0aW9ucy5jIiBhbGwg
dGhhdCBtdWNoIGFzIGEgCmZpbGUgbmFtZS4gOy0pIEkgcHJlZmVyIG5hbWVzIHRoYXQgYXJlIGF0
IGxlYXN0IHZhZ3VlbHkgZGVzY3JpcHRpdmUgb2YgCndoYXQncyBpbnNpZGUgKHllYWgsIHllYWgs
ICJuYW1pbmcgdGhpbmdzIiBiZWluZyBvbmUgb2YgdGhlIG1vc3QgCmRpZmZpY3VsdCBwcm9ibGVt
cyBpbiBjb21wdXRlciBzY2llbmNlIGFuZCBhbGwpLiBNYXliZSB5b3UgaGF2ZSBhIGdvb2QgCmlk
ZWEgdGhlcmU/CgpDaGVlcnMsCkZsb3JpYW4KCk9uIDQvMTUvMTkgMTo0MyBQTSwgQ29zdGluIEx1
cHUgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1
Yi5ybz4KPiAtLS0KPiAgIE1ha2VmaWxlLnVrICAgICAgICAgfCAgIDEgKwo+ICAgaW5jbHVkZS9w
dGhyZWFkLmggICB8ICA1MCArKysrKysrKysrKysrKysrKwo+ICAgbWlzc2luZ19mdW5jdGlvbnMu
YyB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9k
ZSAxMDA2NDQgaW5jbHVkZS9wdGhyZWFkLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBtaXNzaW5n
X2Z1bmN0aW9ucy5jCj4gCj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsK
PiBpbmRleCAxMDc2YTdmLi42MDU3ZjgxIDEwMDY0NAo+IC0tLSBhL01ha2VmaWxlLnVrCj4gKysr
IGIvTWFrZWZpbGUudWsKPiBAQCAtNjMsNiArNjMsNyBAQCBMSUJQVEhSRUFELUVNQkVEREVEX0VY
UE9SVFMgPSAkKExJQlBUSFJFQUQtRU1CRURERURfQkFTRSkvZXhwb3J0c3ltcy51awo+ICAgIyBP
UyBkZXBlbmRlbmNpZXMgY29kZSAtIEdsdWUgYmV0d2VlbiBVbmlrcmFmdCBhbmQgcHRocmVhZC1l
bWJlZGRlZAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgIExJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNFKS9wdGVfb3NhbC5jfGdsdWUK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0JB
U0UpL21pc3NpbmdfZnVuY3Rpb25zLmN8Z2x1ZQo+ICAgCj4gICAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwo+ICAgIyBwdGhyZWFkLWVtYmVkZGVkIGNvZGUKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9w
dGhyZWFkLmggYi9pbmNsdWRlL3B0aHJlYWQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uMmY0ZjdlZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL3B0aHJl
YWQuaAo+IEBAIC0wLDAgKzEsNTAgQEAKPiArLyoKPiArICogICAgICBVbmlrcmFmdCBwb3J0IG9m
IFBPU0lYIFRocmVhZHMgTGlicmFyeSBmb3IgZW1iZWRkZWQgc3lzdGVtcwo+ICsgKiAgICAgIENv
cHlyaWdodChDKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdAo+ICsg
Kgo+ICsgKiAgICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKPiArICogICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqICAgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqICAgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgo+ICsgKgo+ICsgKiAgICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiAgICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqICAg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKPiArICogICAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiAgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogICAgICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuTElCOwo+ICsgKiAg
ICAgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwK
PiArICogICAgICA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0dMVUVfUFRIUkVBRF9IX18KPiArI2Rl
ZmluZSBfX0dMVUVfUFRIUkVBRF9IX18KPiArCj4gKyNpbmNsdWRlX25leHQgPHB0aHJlYWQuaD4K
PiArCj4gKy8qIEMgZnVuY3Rpb25zIG5vdCBpbXBsZW1lbnRlZCBpbiBwdGhyZWFkLWVtYmVkZGVk
ICovCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4gKwo+
ICtpbnQgcHRocmVhZF9hdHRyX3NldGd1YXJkc2l6ZShwdGhyZWFkX2F0dHJfdCAqYXR0ciwgc2l6
ZV90IGd1YXJkc2l6ZSk7Cj4gK2ludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplKGNvbnN0IHB0
aHJlYWRfYXR0cl90ICphdHRyLCBzaXplX3QgKmd1YXJkc2l6ZSk7Cj4gKwo+ICtpbnQgcHRocmVh
ZF9hdHRyX3NldHN0YWNrKHB0aHJlYWRfYXR0cl90ICphdHRyLAo+ICsJCXZvaWQgKnN0YWNrYWRk
ciwgc2l6ZV90IHN0YWNrc2l6ZSk7Cj4gK2ludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2soY29uc3Qg
cHRocmVhZF9hdHRyX3QgKmF0dHIsCj4gKwkJdm9pZCAqKnN0YWNrYWRkciwgc2l6ZV90ICpzdGFj
a3NpemUpOwo+ICsKPiArI2lmZGVmIF9HTlVfU09VUkNFCj4gK2ludCBwdGhyZWFkX2dldGF0dHJf
bnAocHRocmVhZF90IHRocmVhZCwgcHRocmVhZF9hdHRyX3QgKmF0dHIpOwo+ICsKPiAraW50IHB0
aHJlYWRfc2V0bmFtZV9ucChwdGhyZWFkX3QgdGhyZWFkLCBjb25zdCBjaGFyICpuYW1lKTsKPiAr
aW50IHB0aHJlYWRfZ2V0bmFtZV9ucChwdGhyZWFkX3QgdGhyZWFkLCBjaGFyICpuYW1lLCBzaXpl
X3QgbGVuKTsKPiArI2VuZGlmIC8qIF9HTlVfU09VUkNFICovCj4gKwo+ICsjaWZkZWYgX19jcGx1
c3BsdXMKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfX0dMVUVfUFRIUkVBRF9IX18g
Ki8KPiBkaWZmIC0tZ2l0IGEvbWlzc2luZ19mdW5jdGlvbnMuYyBiL21pc3NpbmdfZnVuY3Rpb25z
LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjBkMWUxOTkKPiAtLS0g
L2Rldi9udWxsCj4gKysrIGIvbWlzc2luZ19mdW5jdGlvbnMuYwo+IEBAIC0wLDAgKzEsMTUzIEBA
Cj4gKy8qCj4gKyAqICAgICAgVW5pa3JhZnQgcG9ydCBvZiBQT1NJWCBUaHJlYWRzIExpYnJhcnkg
Zm9yIGVtYmVkZGVkIHN5c3RlbXMKPiArICogICAgICBDb3B5cmlnaHQoQykgMjAxOSBDb3N0aW4g
THVwdSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKPiArICoKPiArICogICAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCj4gKyAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiAgICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiAgICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAr
ICoKPiArICogICAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogICAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiAgICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Cj4gKyAqICAgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KPiArICoKPiArICogICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqICAgICAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsKPiArICogICAgICBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCj4gKyAqICAgICAg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQQo+
ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArI2luY2x1ZGUgPHN0ZGlvLmg+Cj4g
KyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpZmRlZiBfR05V
X1NPVVJDRQo+ICsjaW5jbHVkZSA8dWsvYXJjaC9saW1pdHMuaD4KPiArI2VuZGlmCj4gKyNpbmNs
dWRlIDxwdGhyZWFkLmg+Cj4gKyNpbmNsdWRlIDxpbXBsZW1lbnQuaD4KPiArCj4gKwo+ICsvKiBU
T0RPIFdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBndWFyZHMgKi8KPiAraW50IHB0aHJlYWRf
YXR0cl9zZXRndWFyZHNpemUocHRocmVhZF9hdHRyX3QgKmF0dHIsIHNpemVfdCBndWFyZHNpemUp
Cj4gK3sKPiArCWlmIChndWFyZHNpemUgIT0gMCkKPiArCQlyZXR1cm4gRUlOVkFMOwo+ICsKPiAr
CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgcHRocmVhZF9hdHRyX2dldGd1YXJkc2l6ZShjb25z
dCBwdGhyZWFkX2F0dHJfdCAqYXR0ciwgc2l6ZV90ICpndWFyZHNpemUpCj4gK3sKPiArCWlmICgh
Z3VhcmRzaXplKQo+ICsJCXJldHVybiBFSU5WQUw7Cj4gKwo+ICsJKmd1YXJkc2l6ZSA9IDA7Cj4g
Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2socHRo
cmVhZF9hdHRyX3QgKmF0dHIsCj4gKwkJdm9pZCAqc3RhY2thZGRyLCBzaXplX3Qgc3RhY2tzaXpl
KQo+ICt7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJcmMgPSBwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXpl
KGF0dHIsIHN0YWNrc2l6ZSk7Cj4gKwlpZiAocmMpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmMg
PSBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyKGF0dHIsIHN0YWNrYWRkcik7Cj4gKwo+ICtvdXQ6
Cj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gK2ludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2soY29u
c3QgcHRocmVhZF9hdHRyX3QgKmF0dHIsCj4gKwkJdm9pZCAqKnN0YWNrYWRkciwgc2l6ZV90ICpz
dGFja3NpemUpCj4gK3sKPiArCWludCByYzsKPiArCj4gKwlyYyA9IHB0aHJlYWRfYXR0cl9nZXRz
dGFja3NpemUoYXR0ciwgc3RhY2tzaXplKTsKPiArCWlmIChyYykKPiArCQlnb3RvIG91dDsKPiAr
Cj4gKwlyYyA9IHB0aHJlYWRfYXR0cl9nZXRzdGFja2FkZHIoYXR0ciwgc3RhY2thZGRyKTsKPiAr
Cj4gK291dDoKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiArI2lmZGVmIF9HTlVfU09VUkNFCj4g
K2ludCBwdGhyZWFkX2dldGF0dHJfbnAocHRocmVhZF90IHRocmVhZCwgcHRocmVhZF9hdHRyX3Qg
KmF0dHIpCj4gK3sKPiArCXB0ZV90aHJlYWRfdCAqdHAgPSAocHRlX3RocmVhZF90ICopIHRocmVh
ZC5wOwo+ICsJc3RydWN0IHVrX3RocmVhZCAqX3VrX3RocmVhZDsKPiArCXB0aHJlYWRfYXR0cl90
IF9hdHRyOwo+ICsJcHJpb190IHByaW87Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJaWYgKHRwID09IE5V
TEwgfHwgdHAtPnRocmVhZElkID09IE5VTEwpCj4gKwkJcmV0dXJuIEVOT0VOVDsKPiArCj4gKwlp
ZiAoYXR0ciA9PSBOVUxMIHx8ICphdHRyID09IE5VTEwpCj4gKwkJcmV0dXJuIEVJTlZBTDsKPiAr
Cj4gKwlfdWtfdGhyZWFkID0gdHAtPnRocmVhZElkOwo+ICsJX2F0dHIgPSAqYXR0cjsKPiArCV9h
dHRyLT5zdGFja2FkZHIgPSBfdWtfdGhyZWFkLT5zdGFjazsKPiArCV9hdHRyLT5zdGFja3NpemUg
PSBfX1NUQUNLX1NJWkU7Cj4gKwo+ICsJX2F0dHItPmRldGFjaHN0YXRlID0gKF91a190aHJlYWQt
PmRldGFjaGVkCj4gKwkJPyBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRCA6IFBUSFJFQURfQ1JFQVRF
X0pPSU5BQkxFKTsKPiArCj4gKwlyYyA9IHVrX3RocmVhZF9nZXRfcHJpbyhfdWtfdGhyZWFkLCAm
cHJpbyk7Cj4gKwlpZiAocmMgPT0gMCkKPiArCQlfYXR0ci0+cGFyYW0uc2NoZWRfcHJpb3JpdHkg
PSBwcmlvOwo+ICsKPiArCS8qIFRPRE8gaW5oZXJpdHNjaGVkIGFuZCBjb250ZW50aW9uc2NvcGUg
Ki8KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IHB0aHJlYWRfc2V0bmFtZV9ucChw
dGhyZWFkX3QgdGhyZWFkLCBjb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4gKwlwdGVfdGhyZWFkX3Qg
KnRwID0gKHB0ZV90aHJlYWRfdCAqKSB0aHJlYWQucDsKPiArCXN0cnVjdCB1a190aHJlYWQgKl91
a190aHJlYWQ7Cj4gKwlzaXplX3QgbGVuOwo+ICsKPiArCWlmICh0cCA9PSBOVUxMIHx8IHRwLT50
aHJlYWRJZCA9PSBOVUxMKQo+ICsJCXJldHVybiBFTk9FTlQ7Cj4gKwo+ICsJX3VrX3RocmVhZCA9
IHRwLT50aHJlYWRJZDsKPiArCj4gKwlsZW4gPSBzdHJubGVuKG5hbWUsIDE2KTsKPiArCWlmIChs
ZW4gPiAxNSkKPiArCQlyZXR1cm4gRVJBTkdFOwo+ICsKPiArCV91a190aHJlYWQtPm5hbWUgPSBu
YW1lOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgcHRocmVhZF9nZXRuYW1lX25w
KHB0aHJlYWRfdCB0aHJlYWQsIGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pCj4gK3sKPiArCXB0ZV90
aHJlYWRfdCAqdHAgPSAocHRlX3RocmVhZF90ICopIHRocmVhZC5wOwo+ICsJc3RydWN0IHVrX3Ro
cmVhZCAqX3VrX3RocmVhZDsKPiArCXNpemVfdCBfbGVuOwo+ICsKPiArCWlmICh0cCA9PSBOVUxM
IHx8IHRwLT50aHJlYWRJZCA9PSBOVUxMKQo+ICsJCXJldHVybiBFTk9FTlQ7Cj4gKwo+ICsJX3Vr
X3RocmVhZCA9IHRwLT50aHJlYWRJZDsKPiArCj4gKwlfbGVuID0gc3RybGVuKF91a190aHJlYWQt
Pm5hbWUpOwo+ICsJaWYgKGxlbiA8IF9sZW4gKyAxKQo+ICsJCXJldHVybiBFUkFOR0U7Cj4gKwo+
ICsJc3ByaW50ZihuYW1lLCBfdWtfdGhyZWFkLT5uYW1lKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAr
fQo+ICsKPiArI2VuZGlmIC8qIF9HTlVfU09VUkNFICovCj4gCgotLSAKRHIuIEZsb3JpYW4gU2No
bWlkdArjg5Xjg63jg7zjg6rjgqLjg7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50
aXN0LApTeXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMg
RXVyb3BlCkt1cmbDvHJzdGVuLUFubGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAg
ICs0OSAoMCk2MjIxIDQzNDItMjY1CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFp
bDogIGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmlj
aHQgTWFubmhlaW0sIEdlcm1hbnksIEhSQjcyODU1OAoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:39:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:39: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 1hXjRN-00033D-CL; Mon, 03 Jun 2019 09:39:41 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXjRM-00032w-79
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:39:40 +0000
X-Inumbo-ID: 80ecabd1-85e3-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 80ecabd1-85e3-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 09:39:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9E2A810526E;
 Mon,  3 Jun 2019 11:39:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id OFt-YN1N9eLf; Mon,  3 Jun 2019 11:39:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3F31110524C;
 Mon,  3 Jun 2019 11:39:37 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 11:39:36
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-9-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <0f8d7788-2ad7-6301-aa52-c38ddcd6330f@neclab.eu>
Date: Mon, 3 Jun 2019 11:39:36 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190415124320.4547-9-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 8/8]
 include/pthread.h: Guard C code for C++
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu,
 Teodora Serbanescu <teo.serbanescu16@gmail.com>, yuri.volchkov@neclab.eu,
 sharan.santhanam@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>

VGhpcyBsb29rcyBmaW5lLiBJIGhvcGUgSSdsbCByZW1lbWJlciB0byBzZXQgdGhlIHBhdGNoIGF1
dGhvciB0byBUZW9kb3JhIApvbiB0aGUgdXBzdHJlYW1pbmcuLi4KClJldmlld2VkLWJ5OiBGbG9y
aWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+CgpPbiA0LzE1LzE5IDE6NDMg
UE0sIENvc3RpbiBMdXB1IHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IFRlb2RvcmEgU2VyYmFuZXNj
dSA8dGVvLnNlcmJhbmVzY3UxNkBnbWFpbC5jb20+Cj4gLS0tCj4gICBpbmNsdWRlL3B0aHJlYWQu
aCB8IDcgKysrKy0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxl
dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wdGhyZWFkLmggYi9pbmNsdWRlL3B0
aHJlYWQuaAo+IGluZGV4IDJmNGY3ZWQuLmFlNmMyMWIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9w
dGhyZWFkLmgKPiArKysgYi9pbmNsdWRlL3B0aHJlYWQuaAo+IEBAIC0yMSwxMyArMjEsMTQgQEAK
PiAgICNpZm5kZWYgX19HTFVFX1BUSFJFQURfSF9fCj4gICAjZGVmaW5lIF9fR0xVRV9QVEhSRUFE
X0hfXwo+ICAgCj4gLSNpbmNsdWRlX25leHQgPHB0aHJlYWQuaD4KPiAtCj4gLS8qIEMgZnVuY3Rp
b25zIG5vdCBpbXBsZW1lbnRlZCBpbiBwdGhyZWFkLWVtYmVkZGVkICovCj4gICAjaWZkZWYgX19j
cGx1c3BsdXMKPiAgIGV4dGVybiAiQyIgewo+ICAgI2VuZGlmCj4gICAKPiArLyogVGhlIEMgY29k
ZSBpbiBwdGhyZWFkLmggaXMgbm90IGd1YXJkZWQgZm9yIEMrKyAqLwo+ICsjaW5jbHVkZV9uZXh0
IDxwdGhyZWFkLmg+Cj4gKwo+ICsvKiBDIGZ1bmN0aW9ucyBub3QgaW1wbGVtZW50ZWQgaW4gcHRo
cmVhZC1lbWJlZGRlZCAqLwo+ICAgaW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUocHRocmVh
ZF9hdHRyX3QgKmF0dHIsIHNpemVfdCBndWFyZHNpemUpOwo+ICAgaW50IHB0aHJlYWRfYXR0cl9n
ZXRndWFyZHNpemUoY29uc3QgcHRocmVhZF9hdHRyX3QgKmF0dHIsIHNpemVfdCAqZ3VhcmRzaXpl
KTsKPiAgIAo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki44Oz44O7
44K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFjaGluZSBM
ZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1BbmxhZ2Ug
MzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2NQpGYXg6
ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRAbmVjbGFi
LmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55LCBIUkI3
Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 09:52:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 09:52: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 1hXjeC-0004hz-42; Mon, 03 Jun 2019 09:52:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXjeA-0004hu-S0
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 09:52:54 +0000
X-Inumbo-ID: 5a3763fb-85e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5a3763fb-85e5-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 09:52:52 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A4CF910526D;
 Mon,  3 Jun 2019 11:52:50 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3gTQyTgK7RFl; Mon,  3 Jun 2019 11:52:50 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7A77810524C;
 Mon,  3 Jun 2019 11:52:50 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 11:52:50
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190529045632.25590-1-costin.lupu@cs.pub.ro>
 <20190529045632.25590-5-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <be25e5d0-69d9-5f19-0c45-4a42c2a5899f@neclab.eu>
Date: Mon, 3 Jun 2019 11:52:49 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190529045632.25590-5-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/5] lib/ukschedcoop: Fix
 yield behavior when current thread is first in thread 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-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>

SGkgQ29zdGluLAoKdGhhbmtzLCB0aGlzIGxvb2tzIGdvb2Qgbm93LgoKUmV2aWV3ZWQtYnk6IEZs
b3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KCk9uIDUvMjkvMTkgNTo1
NiBBTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4gV2hlbiB0aGUgY3VycmVudCB0aHJlYWQgaXMgdGhl
IG9ubHkgb25lIGluIHRoZSB0aHJlYWQgbGlzdCwgaWYgaXQgd2FudHMKPiB0byB5aWVsZCBhZnRl
ciBpdCBjcmVhdGVzIGEgbmV3IHRocmVhZCB0aGVuIHNjaGVkY29vcF9zY2hlZHVsZSgpIHdpbGwK
PiBjaG9vc2UgdGhlIHNhbWUgY3VycmVudCB0aHJlYWQgKGluc3RlYWQgb2YgdGhlIG5ldyBvbmUp
IGJlY2F1c2UgaXQgaXMKPiB0aGUgZmlyc3Qgb25lIGluIHRoZSBydW5uaW5nIGxpc3QuIFRoaXMg
aXNzdWUgdmlvbGF0ZXMgdGhlIGV4cGVjdGVkCj4gYmVoYXZpb3Igb2YgUm91bmQtUm9iaW4gY29v
cGVyYXRpdmUgc2NoZWR1bGVycy4gVGhlIHNvbHV0aW9uIGlzIHRvIGF2b2lkCj4gYWRkaW5nIHRo
ZSBjdXJyZW50IHRocmVhZCB0byB0aGUgdGhyZWFkIGxpc3QgYXMgbG9uZyBhcyBpdCBpcyBydW5u
aW5nLiBUaGlzCj4gd2F5IHRoZSBmaXJzdCB0aHJlYWQgaW4gdGhlIHJ1bm5pbmcgbGlzdCBpcyBh
bHdheXMgdGhlIHRocmVhZCB3aGljaCB3aWxsIGJlCj4gc2NoZWR1bGVkIG5leHQuCj4gCj4gSG93
ZXZlciwgdGhpcyBzb2x1dGlvbiBpcyBub3QgY29tcGxldGUuIElmIHdlIGhhdmUgYSBzaW5nbGUg
dGhyZWFkCj4gKGhlbmNlLCB0aGUgdGhyZWFkcyBsaXN0IGlzIGVtcHR5KSBhbmQgaXQgd2FudHMg
dG8gc2xlZXAgZm9yIHNvbWUgdGltZSwKPiBzY2hlZGNvb3Bfc2NoZWR1bGUoKSB3aWxsIGVudGVy
IGluIGFuIGluZmluaXRlIGxvb3AgdHJ5aW5nIHRvIGZpbmQgdGhlCj4gbmV4dCB0aHJlYWQuIFRo
ZXJlZm9yZSwgdGhlIHNvbHV0aW9uIGFkZGl0aW9uIGlzIHRvIGtlZXAgdGhlIHNsZWVwaW5nCj4g
dGhyZWFkcyBvbiBhIHNlcGFyYXRlIGxpc3Q6IGluIHNjZW5hcmlvcyBsaWtlIHRoaXMgd2hlbiB0
aGUgInJlYWR5Igo+IHRocmVhZHMgbGlzdCBpcyBlbXB0eSwgc2NoZWRjb29wX3NjaGVkdWxlKCkg
d2lsbCBpdGVyYXRlIG92ZXIgdGhlCj4gc2xlZXBpbmcgdGhyZWFkcyB1bnRpbCBvbmUgb2YgdGhl
bSB3aWxsIHdha2UgdXAuCj4gCj4gVGhlIGRlc2NyaWJlZCBwcm9ibGVtIHNob3VsZCBhbHNvIG9j
Y3VyIG9uIE1pbmktT1MsIHdoZXJlIHRoaXMKPiBpbXBsZW1lbnRhdGlvbiB3YXMgcG9ydGVkIGZy
b20uCj4gCj4gVGhpcyBwYXRjaCBhbHNvIGFkZHMgc2NoZWR1bGVyIGNhbGxiYWNrcyB0byBiZSBj
YWxsZWQgd2hlbiB0aHJlYWRzIGJsb2NrCj4gb3Igd2FrZSB1cC4gT24gYmxvY2tpbmcsIHRoZSBj
b29wZXJhdGl2ZSBzY2hlZHVsZXIgd2lsbCBhZGQgdGhlIHRocmVhZHMKPiBpbiB0aGUgc2xlZXBp
bmcgdGhyZWFkcyBsaXN0IHdoZW5ldmVyIGEgdGhyZWFkIHdpbGwgd2FudCB0byBzbGVlcAo+ICh3
YWtldXBfdGltZSA+IDApLiBPbiB3YWtpbmcgdXAsIHRoZSBzbGVlcGluZyB0aHJlYWRzIHdpbGwg
YmUgcmVtb3ZlZAo+IGZyb20gdGhlIHNsZWVwaW5nIHRocmVhZHMgbGlzdCBhbmQgYWRkZWQgdG8g
dGhlICJyZWFkeSIgdGhyZWFkcyBsaXN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gLS0tCj4gICBsaWIvdWtzY2hlZC9pbmNsdWRlL3Vr
L3NjaGVkLmggfCAyMyArKysrKysrKysrKysKPiAgIGxpYi91a3NjaGVkL2luY2x1ZGUvdWsvd2Fp
dC5oICB8ICAxICsKPiAgIGxpYi91a3NjaGVkL3RocmVhZC5jICAgICAgICAgICB8IDE3ICsrKysr
Ky0tLQo+ICAgbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jICAgIHwgODAgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gICA0IGZpbGVzIGNoYW5nZWQsIDkyIGlu
c2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hl
ZC9pbmNsdWRlL3VrL3NjaGVkLmggYi9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3NjaGVkLmgKPiBp
bmRleCBmOWRjMTZkMC4uZjhhNjJkZDYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Vrc2NoZWQvaW5jbHVk
ZS91ay9zY2hlZC5oCj4gKysrIGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay9zY2hlZC5oCj4gQEAg
LTY0LDYgKzY0LDEwIEBAIHR5cGVkZWYgaW50ICAgKCp1a19zY2hlZF90aHJlYWRfYWRkX2Z1bmNf
dCkKPiAgIAkJCWNvbnN0IHVrX3RocmVhZF9hdHRyX3QgKmF0dHIpOwo+ICAgdHlwZWRlZiB2b2lk
ICAoKnVrX3NjaGVkX3RocmVhZF9yZW1vdmVfZnVuY190KQo+ICAgCQkoc3RydWN0IHVrX3NjaGVk
ICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0KTsKPiArdHlwZWRlZiB2b2lkICAoKnVrX3NjaGVkX3Ro
cmVhZF9ibG9ja2VkX2Z1bmNfdCkKPiArCQkoc3RydWN0IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtf
dGhyZWFkICp0KTsKPiArdHlwZWRlZiB2b2lkICAoKnVrX3NjaGVkX3RocmVhZF93b2tlbl9mdW5j
X3QpCj4gKwkJKHN0cnVjdCB1a19zY2hlZCAqcywgc3RydWN0IHVrX3RocmVhZCAqdCk7Cj4gICAK
PiAgIHR5cGVkZWYgaW50ICAgKCp1a19zY2hlZF90aHJlYWRfc2V0X3ByaW9fZnVuY190KQo+ICAg
CQkoc3RydWN0IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0LCBwcmlvX3QgcHJpbyk7
Cj4gQEAgLTc5LDYgKzgzLDggQEAgc3RydWN0IHVrX3NjaGVkIHsKPiAgIAo+ICAgCXVrX3NjaGVk
X3RocmVhZF9hZGRfZnVuY190ICAgICAgdGhyZWFkX2FkZDsKPiAgIAl1a19zY2hlZF90aHJlYWRf
cmVtb3ZlX2Z1bmNfdCAgIHRocmVhZF9yZW1vdmU7Cj4gKwl1a19zY2hlZF90aHJlYWRfYmxvY2tl
ZF9mdW5jX3QgIHRocmVhZF9ibG9ja2VkOwo+ICsJdWtfc2NoZWRfdGhyZWFkX3dva2VuX2Z1bmNf
dCAgICB0aHJlYWRfd29rZW47Cj4gICAKPiAgIAl1a19zY2hlZF90aHJlYWRfc2V0X3ByaW9fZnVu
Y190ICAgdGhyZWFkX3NldF9wcmlvOwo+ICAgCXVrX3NjaGVkX3RocmVhZF9nZXRfcHJpb19mdW5j
X3QgICB0aHJlYWRfZ2V0X3ByaW87Cj4gQEAgLTEzMyw2ICsxMzksMjAgQEAgc3RhdGljIGlubGlu
ZSBpbnQgdWtfc2NoZWRfdGhyZWFkX3JlbW92ZShzdHJ1Y3QgdWtfc2NoZWQgKnMsCj4gICAJcmV0
dXJuIDA7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSB2b2lkIHVrX3NjaGVkX3RocmVhZF9i
bG9ja2VkKHN0cnVjdCB1a19zY2hlZCAqcywKPiArCQlzdHJ1Y3QgdWtfdGhyZWFkICp0KQo+ICt7
Cj4gKwlVS19BU1NFUlQocyk7Cj4gKwlzLT50aHJlYWRfYmxvY2tlZChzLCB0KTsKPiArfQo+ICsK
PiArc3RhdGljIGlubGluZSB2b2lkIHVrX3NjaGVkX3RocmVhZF93b2tlbihzdHJ1Y3QgdWtfc2No
ZWQgKnMsCj4gKwkJc3RydWN0IHVrX3RocmVhZCAqdCkKPiArewo+ICsJVUtfQVNTRVJUKHMpOwo+
ICsJcy0+dGhyZWFkX3dva2VuKHMsIHQpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSBpbnQg
dWtfc2NoZWRfdGhyZWFkX3NldF9wcmlvKHN0cnVjdCB1a19zY2hlZCAqcywKPiAgIAkJc3RydWN0
IHVrX3RocmVhZCAqdCwgcHJpb190IHByaW8pCj4gICB7Cj4gQEAgLTE5NCwxMiArMjE0LDE1IEBA
IHN0YXRpYyBpbmxpbmUgc3RydWN0IHVrX3RocmVhZCAqdWtfc2NoZWRfZ2V0X2lkbGUoc3RydWN0
IHVrX3NjaGVkICpzKQo+ICAgCj4gICAjZGVmaW5lIHVrX3NjaGVkX2luaXQocywgeWllbGRfZnVu
YywgXAo+ICAgCQl0aHJlYWRfYWRkX2Z1bmMsIHRocmVhZF9yZW1vdmVfZnVuYywgXAo+ICsJCXRo
cmVhZF9ibG9ja2VkX2Z1bmMsIHRocmVhZF93b2tlbl9mdW5jLCBcCj4gICAJCXRocmVhZF9zZXRf
cHJpb19mdW5jLCB0aHJlYWRfZ2V0X3ByaW9fZnVuYywgXAo+ICAgCQl0aHJlYWRfc2V0X3RzbGlj
ZV9mdW5jLCB0aHJlYWRfZ2V0X3RzbGljZV9mdW5jKSBcCj4gICAJZG8geyBcCj4gICAJCShzKS0+
eWllbGQgICAgICAgICAgID0geWllbGRfZnVuYzsgXAo+ICAgCQkocyktPnRocmVhZF9hZGQgICAg
ICA9IHRocmVhZF9hZGRfZnVuYzsgXAo+ICAgCQkocyktPnRocmVhZF9yZW1vdmUgICA9IHRocmVh
ZF9yZW1vdmVfZnVuYzsgXAo+ICsJCShzKS0+dGhyZWFkX2Jsb2NrZWQgID0gdGhyZWFkX2Jsb2Nr
ZWRfZnVuYzsgXAo+ICsJCShzKS0+dGhyZWFkX3dva2VuICAgID0gdGhyZWFkX3dva2VuX2Z1bmM7
IFwKPiAgIAkJKHMpLT50aHJlYWRfc2V0X3ByaW8gICAgPSB0aHJlYWRfc2V0X3ByaW9fZnVuYzsg
XAo+ICAgCQkocyktPnRocmVhZF9nZXRfcHJpbyAgICA9IHRocmVhZF9nZXRfcHJpb19mdW5jOyBc
Cj4gICAJCShzKS0+dGhyZWFkX3NldF90c2xpY2UgID0gdGhyZWFkX3NldF90c2xpY2VfZnVuYzsg
XAo+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3dhaXQuaCBiL2xpYi91a3Nj
aGVkL2luY2x1ZGUvdWsvd2FpdC5oCj4gaW5kZXggOTA1YmEzOGIuLmJmMGUwYzVjIDEwMDY0NAo+
IC0tLSBhL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvd2FpdC5oCj4gKysrIGIvbGliL3Vrc2NoZWQv
aW5jbHVkZS91ay93YWl0LmgKPiBAQCAtMTA2LDYgKzEwNiw3IEBAIGRvIHsgXAo+ICAgCQl1a193
YWl0cV9hZGQod3EsICZfX3dhaXQpOyBcCj4gICAJCV9fY3VycmVudC0+d2FrZXVwX3RpbWUgPSBk
ZWFkbGluZTsgXAo+ICAgCQljbGVhcl9ydW5uYWJsZShfX2N1cnJlbnQpOyBcCj4gKwkJdWtfc2No
ZWRfdGhyZWFkX2Jsb2NrZWQoX19jdXJyZW50LT5zY2hlZCwgX19jdXJyZW50KTsgXAo+ICAgCQl1
a3BsYXRfbGNwdV9yZXN0b3JlX2lycWYoZmxhZ3MpOyBcCj4gICAJCWlmICgoY29uZGl0aW9uKSB8
fCAoZGVhZGxpbmVfY29uZGl0aW9uKSkgXAo+ICAgCQkJYnJlYWs7IFwKPiBkaWZmIC0tZ2l0IGEv
bGliL3Vrc2NoZWQvdGhyZWFkLmMgYi9saWIvdWtzY2hlZC90aHJlYWQuYwo+IGluZGV4IDc0MDBi
YWVlLi45NjI1YWVhMSAxMDA2NDQKPiAtLS0gYS9saWIvdWtzY2hlZC90aHJlYWQuYwo+ICsrKyBi
L2xpYi91a3NjaGVkL3RocmVhZC5jCj4gQEAgLTEzNSw4ICsxMzUsMTMgQEAgdm9pZCB1a190aHJl
YWRfZmluaShzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQsIHN0cnVjdCB1a19hbGxvYyAqYWxsb2Nh
dG9yKQo+ICAgCj4gICBzdGF0aWMgdm9pZCB1a190aHJlYWRfYmxvY2tfdW50aWwoc3RydWN0IHVr
X3RocmVhZCAqdGhyZWFkLCBfX3Nuc2VjIHVudGlsKQo+ICAgewo+ICsJdW5zaWduZWQgbG9uZyBm
bGFnczsKPiArCj4gKwlmbGFncyA9IHVrcGxhdF9sY3B1X3NhdmVfaXJxZigpOwo+ICAgCXRocmVh
ZC0+d2FrZXVwX3RpbWUgPSB1bnRpbDsKPiAgIAljbGVhcl9ydW5uYWJsZSh0aHJlYWQpOwo+ICsJ
dWtfc2NoZWRfdGhyZWFkX2Jsb2NrZWQodGhyZWFkLT5zY2hlZCwgdGhyZWFkKTsKPiArCXVrcGxh
dF9sY3B1X3Jlc3RvcmVfaXJxZihmbGFncyk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgdWtfdGhyZWFk
X2Jsb2NrX3RpbWVvdXQoc3RydWN0IHVrX3RocmVhZCAqdGhyZWFkLCBfX25zZWMgbnNlYykKPiBA
QCAtMTUzLDExICsxNTgsMTUgQEAgdm9pZCB1a190aHJlYWRfYmxvY2soc3RydWN0IHVrX3RocmVh
ZCAqdGhyZWFkKQo+ICAgCj4gICB2b2lkIHVrX3RocmVhZF93YWtlKHN0cnVjdCB1a190aHJlYWQg
KnRocmVhZCkKPiAgIHsKPiAtCWlmIChpc19ydW5uYWJsZSh0aHJlYWQpKQo+IC0JCXJldHVybjsK
PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAKPiAtCXRocmVhZC0+d2FrZXVwX3RpbWUgPSAw
TEw7Cj4gLQlzZXRfcnVubmFibGUodGhyZWFkKTsKPiArCWZsYWdzID0gdWtwbGF0X2xjcHVfc2F2
ZV9pcnFmKCk7Cj4gKwlpZiAoIWlzX3J1bm5hYmxlKHRocmVhZCkpIHsKPiArCQl1a19zY2hlZF90
aHJlYWRfd29rZW4odGhyZWFkLT5zY2hlZCwgdGhyZWFkKTsKPiArCQl0aHJlYWQtPndha2V1cF90
aW1lID0gMExMOwo+ICsJCXNldF9ydW5uYWJsZSh0aHJlYWQpOwo+ICsJfQo+ICsJdWtwbGF0X2xj
cHVfcmVzdG9yZV9pcnFmKGZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgdm9pZCB1a190aHJlYWRfZXhp
dChzdHJ1Y3QgdWtfdGhyZWFkICp0aHJlYWQpCj4gZGlmZiAtLWdpdCBhL2xpYi91a3NjaGVkY29v
cC9zY2hlZGNvb3AuYyBiL2xpYi91a3NjaGVkY29vcC9zY2hlZGNvb3AuYwo+IGluZGV4IGUwYjEx
NmVlLi4yODY2N2JmMSAxMDA2NDQKPiAtLS0gYS9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMK
PiArKysgYi9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMKPiBAQCAtMzcsNiArMzcsNyBAQAo+
ICAgCj4gICBzdHJ1Y3Qgc2NoZWRjb29wX3ByaXZhdGUgewo+ICAgCXN0cnVjdCB1a190aHJlYWRf
bGlzdCB0aHJlYWRfbGlzdDsKPiArCXN0cnVjdCB1a190aHJlYWRfbGlzdCBzbGVlcGluZ190aHJl
YWRzOwo+ICAgfTsKPiAgIAo+ICAgI2lmZGVmIFNDSEVEX0RFQlVHCj4gQEAgLTc4LDMzICs3OSwz
NCBAQCBzdGF0aWMgdm9pZCBzY2hlZGNvb3Bfc2NoZWR1bGUoc3RydWN0IHVrX3NjaGVkICpzKQo+
ICAgCQlfX3Nuc2VjIG5vdyA9IHVrcGxhdF9tb25vdG9uaWNfY2xvY2soKTsKPiAgIAkJX19zbnNl
YyBtaW5fd2FrZXVwX3RpbWUgPSBub3cgKyB1a2FyY2hfdGltZV9zZWNfdG9fbnNlYygxMCk7Cj4g
ICAKPiAtCQluZXh0ID0gTlVMTDsKPiAtCj4gLQkJVUtfVEFJTFFfRk9SRUFDSF9TQUZFKHRocmVh
ZCwgJnBydi0+dGhyZWFkX2xpc3QsCj4gKwkJLyogd2FrZSBzb21lIHNsZWVwaW5nIHRocmVhZHMg
Ki8KPiArCQlVS19UQUlMUV9GT1JFQUNIX1NBRkUodGhyZWFkLCAmcHJ2LT5zbGVlcGluZ190aHJl
YWRzLAo+ICAgCQkJCSAgICAgIHRocmVhZF9saXN0LCB0bXApIHsKPiAgIAo+IC0JCQlpZiAoIWlz
X3J1bm5hYmxlKHRocmVhZCkKPiAtCQkJICAgICYmIHRocmVhZC0+d2FrZXVwX3RpbWUgIT0gMExM
KSB7Cj4gLQkJCQlpZiAodGhyZWFkLT53YWtldXBfdGltZSA8PSBub3cpCj4gLQkJCQkJdWtfdGhy
ZWFkX3dha2UodGhyZWFkKTsKPiAtCQkJCWVsc2UgaWYgKHRocmVhZC0+d2FrZXVwX3RpbWUgPCBt
aW5fd2FrZXVwX3RpbWUpCj4gLQkJCQkJbWluX3dha2V1cF90aW1lID0gdGhyZWFkLT53YWtldXBf
dGltZTsKPiAtCQkJfQo+IC0KPiAtCQkJaWYgKGlzX3J1bm5hYmxlKHRocmVhZCkpIHsKPiAtCQkJ
CW5leHQgPSB0aHJlYWQ7Cj4gLQkJCQkvKiBQdXQgdGhpcyB0aHJlYWQgb24gdGhlIGVuZCBvZiB0
aGUgbGlzdCAqLwo+IC0JCQkJVUtfVEFJTFFfUkVNT1ZFKCZwcnYtPnRocmVhZF9saXN0LCB0aHJl
YWQsCj4gLQkJCQkJCXRocmVhZF9saXN0KTsKPiAtCQkJCVVLX1RBSUxRX0lOU0VSVF9UQUlMKCZw
cnYtPnRocmVhZF9saXN0LCB0aHJlYWQsCj4gLQkJCQkJCXRocmVhZF9saXN0KTsKPiAtCQkJCXVr
cGxhdF9zdGFja19zZXRfY3VycmVudF90aHJlYWQobmV4dCk7Cj4gLQkJCQlicmVhazsKPiAtCQkJ
fQo+ICsJCQlpZiAodGhyZWFkLT53YWtldXBfdGltZSAmJiB0aHJlYWQtPndha2V1cF90aW1lIDw9
IG5vdykKPiArCQkJCXVrX3RocmVhZF93YWtlKHRocmVhZCk7Cj4gKwo+ICsJCQllbHNlIGlmICh0
aHJlYWQtPndha2V1cF90aW1lIDwgbWluX3dha2V1cF90aW1lKQo+ICsJCQkJbWluX3dha2V1cF90
aW1lID0gdGhyZWFkLT53YWtldXBfdGltZTsKPiAgIAkJfQo+ICAgCj4gLQkJaWYgKG5leHQpCj4g
KwkJbmV4dCA9IFVLX1RBSUxRX0ZJUlNUKCZwcnYtPnRocmVhZF9saXN0KTsKPiArCQlpZiAobmV4
dCkgewo+ICsJCQlVS19BU1NFUlQobmV4dCAhPSBwcmV2KTsKPiArCQkJVUtfQVNTRVJUKGlzX3J1
bm5hYmxlKG5leHQpKTsKPiArCQkJVUtfQVNTRVJUKCFpc19leGl0ZWQobmV4dCkpOwo+ICsJCQlV
S19UQUlMUV9SRU1PVkUoJnBydi0+dGhyZWFkX2xpc3QsIG5leHQsCj4gKwkJCQkJdGhyZWFkX2xp
c3QpOwo+ICsJCQkvKiBQdXQgcHJldmlvdXMgdGhyZWFkIG9uIHRoZSBlbmQgb2YgdGhlIGxpc3Qg
Ki8KPiArCQkJaWYgKGlzX3J1bm5hYmxlKHByZXYpKQo+ICsJCQkJVUtfVEFJTFFfSU5TRVJUX1RB
SUwoJnBydi0+dGhyZWFkX2xpc3QsIHByZXYsCj4gKwkJCQkJCXRocmVhZF9saXN0KTsKPiArCQkJ
dWtwbGF0X3N0YWNrX3NldF9jdXJyZW50X3RocmVhZChuZXh0KTsKPiAgIAkJCWJyZWFrOwo+ICsJ
CX0gZWxzZSBpZiAoaXNfcnVubmFibGUocHJldikpIHsKPiArCQkJbmV4dCA9IHByZXY7Cj4gKwkJ
CWJyZWFrOwo+ICsJCX0KPiAgIAo+ICAgCQkvKiBibG9jayB1bnRpbCB0aGUgbmV4dCB0aW1lb3V0
IGV4cGlyZXMsIG9yIGZvciAxMCBzZWNzLAo+ICAgCQkgKiB3aGljaGV2ZXIgY29tZXMgZmlyc3QK
PiBAQCAtMTU2LDcgKzE1OCw4IEBAIHN0YXRpYyB2b2lkIHNjaGVkY29vcF90aHJlYWRfcmVtb3Zl
KHN0cnVjdCB1a19zY2hlZCAqcywgc3RydWN0IHVrX3RocmVhZCAqdCkKPiAgIAlmbGFncyA9IHVr
cGxhdF9sY3B1X3NhdmVfaXJxZigpOwo+ICAgCj4gICAJLyogUmVtb3ZlIGZyb20gdGhlIHRocmVh
ZCBsaXN0ICovCj4gLQlVS19UQUlMUV9SRU1PVkUoJnBydi0+dGhyZWFkX2xpc3QsIHQsIHRocmVh
ZF9saXN0KTsKPiArCWlmICh0ICE9IHVrX3RocmVhZF9jdXJyZW50KCkpCj4gKwkJVUtfVEFJTFFf
UkVNT1ZFKCZwcnYtPnRocmVhZF9saXN0LCB0LCB0aHJlYWRfbGlzdCk7Cj4gICAJY2xlYXJfcnVu
bmFibGUodCk7Cj4gICAKPiAgIAl1a190aHJlYWRfZXhpdCh0KTsKPiBAQCAtMTY2LDEzICsxNjks
MzcgQEAgc3RhdGljIHZvaWQgc2NoZWRjb29wX3RocmVhZF9yZW1vdmUoc3RydWN0IHVrX3NjaGVk
ICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0KQo+ICAgCj4gICAJdWtwbGF0X2xjcHVfcmVzdG9yZV9p
cnFmKGZsYWdzKTsKPiAgIAo+IC0JLyogU2NoZWR1bGUgd2lsbCBmcmVlIHRoZSByZXNvdXJjZXMg
Ki8KPiAtCXdoaWxlICgxKSB7Cj4gKwkvKiBTY2hlZHVsZSBvbmx5IGlmIGN1cnJlbnQgdGhyZWFk
IGlzIGV4aXRpbmcgKi8KPiArCWlmICh0ID09IHVrX3RocmVhZF9jdXJyZW50KCkpIHsKPiAgIAkJ
c2NoZWRjb29wX3NjaGVkdWxlKHMpOwo+ICAgCQl1a19wcl93YXJuKCJzY2hlZHVsZSgpIHJldHVy
bmVkISBUcnlpbmcgYWdhaW5cbiIpOwo+ICAgCX0KPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBz
Y2hlZGNvb3BfdGhyZWFkX2Jsb2NrZWQoc3RydWN0IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtfdGhy
ZWFkICp0KQo+ICt7Cj4gKwlzdHJ1Y3Qgc2NoZWRjb29wX3ByaXZhdGUgKnBydiA9IHMtPnBydjsK
PiArCj4gKwlVS19BU1NFUlQodWtwbGF0X2xjcHVfaXJxc19kaXNhYmxlZCgpKTsKPiArCj4gKwlp
ZiAodCAhPSB1a190aHJlYWRfY3VycmVudCgpKQo+ICsJCVVLX1RBSUxRX1JFTU9WRSgmcHJ2LT50
aHJlYWRfbGlzdCwgdCwgdGhyZWFkX2xpc3QpOwo+ICsJaWYgKHQtPndha2V1cF90aW1lID4gMCkK
PiArCQlVS19UQUlMUV9JTlNFUlRfVEFJTCgmcHJ2LT5zbGVlcGluZ190aHJlYWRzLCB0LCB0aHJl
YWRfbGlzdCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNjaGVkY29vcF90aHJlYWRfd29rZW4o
c3RydWN0IHVrX3NjaGVkICpzLCBzdHJ1Y3QgdWtfdGhyZWFkICp0KQo+ICt7Cj4gKwlzdHJ1Y3Qg
c2NoZWRjb29wX3ByaXZhdGUgKnBydiA9IHMtPnBydjsKPiArCj4gKwlVS19BU1NFUlQodWtwbGF0
X2xjcHVfaXJxc19kaXNhYmxlZCgpKTsKPiArCj4gKwlpZiAodC0+d2FrZXVwX3RpbWUgPiAwKQo+
ICsJCVVLX1RBSUxRX1JFTU9WRSgmcHJ2LT5zbGVlcGluZ190aHJlYWRzLCB0LCB0aHJlYWRfbGlz
dCk7Cj4gKwlpZiAodCAhPSB1a190aHJlYWRfY3VycmVudCgpKQo+ICsJCVVLX1RBSUxRX0lOU0VS
VF9UQUlMKCZwcnYtPnRocmVhZF9saXN0LCB0LCB0aHJlYWRfbGlzdCk7Cj4gK30KPiArCj4gICBz
dGF0aWMgdm9pZCBpZGxlX3RocmVhZF9mbih2b2lkICp1bnVzZWQgX191bnVzZWQpCj4gICB7Cj4g
ICAJc3RydWN0IHVrX3RocmVhZCAqY3VycmVudCA9IHVrX3RocmVhZF9jdXJyZW50KCk7Cj4gQEAg
LTIwNyw2ICsyMzQsNyBAQCBzdHJ1Y3QgdWtfc2NoZWQgKnVrX3NjaGVkY29vcF9pbml0KHN0cnVj
dCB1a19hbGxvYyAqYSkKPiAgIAo+ICAgCXBydiA9IHNjaGVkLT5wcnY7Cj4gICAJVUtfVEFJTFFf
SU5JVCgmcHJ2LT50aHJlYWRfbGlzdCk7Cj4gKwlVS19UQUlMUV9JTklUKCZwcnYtPnNsZWVwaW5n
X3RocmVhZHMpOwo+ICAgCj4gICAJdWtfc2NoZWRfaWRsZV9pbml0KHNjaGVkLCBOVUxMLCBpZGxl
X3RocmVhZF9mbik7Cj4gICAKPiBAQCAtMjE0LDYgKzI0Miw4IEBAIHN0cnVjdCB1a19zY2hlZCAq
dWtfc2NoZWRjb29wX2luaXQoc3RydWN0IHVrX2FsbG9jICphKQo+ICAgCQkJc2NoZWRjb29wX3lp
ZWxkLAo+ICAgCQkJc2NoZWRjb29wX3RocmVhZF9hZGQsCj4gICAJCQlzY2hlZGNvb3BfdGhyZWFk
X3JlbW92ZSwKPiArCQkJc2NoZWRjb29wX3RocmVhZF9ibG9ja2VkLAo+ICsJCQlzY2hlZGNvb3Bf
dGhyZWFkX3dva2VuLAo+ICAgCQkJTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7Cj4gICAKPiAgIAly
ZXR1cm4gc2NoZWQ7Cj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArjg5Xjg63jg7zjg6rjgqLj
g7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApTeXN0ZW1zIGFuZCBNYWNo
aW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlCkt1cmbDvHJzdGVuLUFu
bGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAoMCk2MjIxIDQzNDItMjY1
CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZsb3JpYW4uc2NobWlkdEBu
ZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFubmhlaW0sIEdlcm1hbnks
IEhSQjcyODU1OAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 10:11:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 10:11: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 1hXjw9-00072A-Nk; Mon, 03 Jun 2019 10:11: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=doS9=UC=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hXjw8-000725-W0
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 10:11:29 +0000
X-Inumbo-ID: f0d7cbd6-85e7-11e9-9b0d-1fba651b195d
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f0d7cbd6-85e7-11e9-9b0d-1fba651b195d;
 Mon, 03 Jun 2019 10:11:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 58A6710526E;
 Mon,  3 Jun 2019 12:11:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SM9aQMgm-Yhy; Mon,  3 Jun 2019 12:11:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3736C10524C;
 Mon,  3 Jun 2019 12:11:23 +0200 (CEST)
Received: from localhost (10.1.2.186) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 12:11:22 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 12:11:16 +0200
Message-ID: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.1.2.186]
Subject: [Minios-devel] [UNIKRAFT PATCH 0/2] vuild: Options to reduce build
 time
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Costin Lupu <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNlcyB0d28gYnVpbGQgb3B0aW9ucyB0aGF0IGNhbiBk
cmFtYXRpY2FsbHkKcmVkdWNlIG92ZXJhbGwgYnVpbGQgdGltZSBmb3IgbGFyZ2UgVW5pa2VybmVs
czoKIC0gUmVtb3ZpbmcgR0NDIGRlYnVnIGluZm9ybWF0aW9uCiAtIERpc2FibGUgY29tcHJlc3Np
bmcgb2YgaW1hZ2VzCgpTaW1vbiBLdWVuemVyICgyKToKICBidWlsZDogT3B0aW9uIHRvIGJ1aWxk
IHdpdGhvdXQgR0NDIGRlYnVnIGluZm9ybWF0aW9uCiAgYnVpbGQ6IFByb3ZpZGUgb3B0aW9uIGZv
ciBjb21wcmVzc2luZyBpbWFnZXMKCiBDb25maWcudWsgICAgICAgICAgfCAxMyArKysrKysrKysr
KysrCiBNYWtlZmlsZS51ayAgICAgICAgfCAgMiArKwogcGxhdC9rdm0vTGlua2VyLnVrIHwgIDIg
KysKIHBsYXQveGVuL0xpbmtlci51ayB8ICA0ICsrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjEgaW5z
ZXJ0aW9ucygrKQoKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 10:11:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 10: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 1hXjwG-00073P-Pq; Mon, 03 Jun 2019 10:11: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=doS9=UC=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hXjwF-00073G-A5
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 10:11:35 +0000
X-Inumbo-ID: f53770dc-85e7-11e9-b301-370b6fd13fa6
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f53770dc-85e7-11e9-b301-370b6fd13fa6;
 Mon, 03 Jun 2019 10:11:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B1928F2048;
 Mon,  3 Jun 2019 12:11:30 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id FsK_h-Hw7fbn; Mon,  3 Jun 2019 12:11:30 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8555FF2024;
 Mon,  3 Jun 2019 12:11:26 +0200 (CEST)
Received: from localhost (10.1.2.186) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 12:11:26 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 12:11:17 +0200
Message-ID: <20190603101118.13282-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
References: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.186]
Subject: [Minios-devel] [UNIKRAFT PATCH 1/2] build: Option to build without
 GCC debug information
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>, Costin Lupu <costin.lupu@cs.pub.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>

SW50cm9kdWNlcyB0aGUgb3B0aW9uIHRvIGJ1aWxkIHdpdGhvdXQgR0NDIGRlYnVnIGluZm9ybWF0
aW9uIChgLWcwYApwYXJhbWV0ZXIpLiBUaGlzIGlzIGdlbmVyYWxseSBub3QgcmVjb21tZW5kZWQg
YnV0IGl0IGNhbiBzcGVlZCB1cApvdmVyYWxsIGJ1aWxkaW5nIHRpbWUuCgpTaWduZWQtb2ZmLWJ5
OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBDb25maWcudWsg
ICB8IDYgKysrKysrCiBNYWtlZmlsZS51ayB8IDIgKysKIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNl
cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrCmluZGV4IGJiNzkx
ZmRiLi40YzdhMGVjMiAxMDA2NDQKLS0tIGEvQ29uZmlnLnVrCisrKyBiL0NvbmZpZy51awpAQCAt
OTIsNiArOTIsMTIgQEAgY2hvaWNlCiAJaGVscAogCQlTZXQgdGhlIGxldmVsIG9mIGF2YWlsYWJs
ZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCiAKK2NvbmZpZyBERUJVR19TWU1CT0xTX0xWTDAKKwli
b29sICJMZXZlbCAwICgtZzApLCBOb25lIgorCWhlbHAKKwkJTm8gZGVidWdnaW5nIGluZm9ybWF0
aW9uLiBUaGlzIG9wdGlvbiBpcyBub3QgcmVjb21tZW5kZWQuCisJCUJ1aWxkaW5nIHRpbWUgaXMg
cmVkdWNlZC4KKwogY29uZmlnIERFQlVHX1NZTUJPTFNfTFZMMQogCWJvb2wgIkxldmVsIDEgKC1n
MSkiCiAJaGVscApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awppbmRleCAz
NzE2ZmE2NC4uMjA0N2RhZWYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxl
LnVrCkBAIC00MCw2ICs0MCw4IEBAIENYWEZMQUdTLSQoQ09ORklHX09QVElNSVpFX0xUTykgICAg
ICAgICAgICs9IC1mbHRvCiBMSUJMREZMQUdTLSQoQ09ORklHX09QVElNSVpFX0xUTykgICAgICAg
ICArPSAkKENGTEFHUykgJChDRkxBR1MteSkKIExERkxBR1MtJChDT05GSUdfT1BUSU1JWkVfTFRP
KSAgICAgICAgICAgICs9ICQoQ0ZMQUdTKSAkKENGTEFHUy15KQogCitDRkxBR1MtJChDT05GSUdf
REVCVUdfU1lNQk9MU19MVkwwKSAgICAgICArPSAtZzAKK0NYWEZMQUdTLSQoQ09ORklHX0RFQlVH
X1NZTUJPTFNfTFZMMCkgICAgICs9IC1nMAogQ0ZMQUdTLSQoQ09ORklHX0RFQlVHX1NZTUJPTFNf
TFZMMSkgICAgICAgKz0gLWcxCiBDWFhGTEFHUy0kKENPTkZJR19ERUJVR19TWU1CT0xTX0xWTDEp
ICAgICArPSAtZzEKIENGTEFHUy0kKENPTkZJR19ERUJVR19TWU1CT0xTX0xWTDIpICAgICAgICs9
IC1nMgotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 10:11:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 10:11: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 1hXjwJ-00073y-RK; Mon, 03 Jun 2019 10:11:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=doS9=UC=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hXjwI-00073l-5J
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 10:11:38 +0000
X-Inumbo-ID: f6fcf27d-85e7-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f6fcf27d-85e7-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 10:11:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id B159F105278;
 Mon,  3 Jun 2019 12:11:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Z72jZXZXyVcX; Mon,  3 Jun 2019 12:11:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 76E8B10524C;
 Mon,  3 Jun 2019 12:11:33 +0200 (CEST)
Received: from localhost (10.1.2.186) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 12:11:32 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 12:11:18 +0200
Message-ID: <20190603101118.13282-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
References: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.186]
Subject: [Minios-devel] [UNIKRAFT PATCH 2/2] build: Provide option for
 compressing images
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>, Costin Lupu <costin.lupu@cs.pub.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>

SW50cm9kdWNlcyBhIG1lbnUgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBjcmVhdGlv
biBvZgpjb21wcmVzc2VkIGltYWdlcy4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNp
bW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIENvbmZpZy51ayAgICAgICAgICB8IDcgKysrKysr
KwogcGxhdC9rdm0vTGlua2VyLnVrIHwgMiArKwogcGxhdC94ZW4vTGlua2VyLnVrIHwgNCArKysr
CiAzIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9Db25maWcu
dWsgYi9Db25maWcudWsKaW5kZXggNGM3YTBlYzIuLmMyZTQ3M2VlIDEwMDY0NAotLS0gYS9Db25m
aWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC0xMjYsNiArMTI2LDEzIEBAIGNvbmZpZyBPUFRJTUla
RV9TWU1GSUxFCiAJaGVscAogCQlDcmVhdGUgYSBzZXBhcmF0ZSBmaWxlIHdpdGggYWxsIHN5bWJv
bCBsb2NhdGlvbnMKIAorY29uZmlnIE9QVElNSVpFX0NPTVBSRVNTCisJYm9vbCAiQ29tcHJlc3Mg
aW1hZ2VzIgorCWRlZmF1bHQgeQorCWhlbHAKKwkJQ3JlYXRlIGNvbXByZXNzZWQgaW1hZ2VzLiBQ
bGVhc2Ugbm90ZSB0aGF0IG5vdCBhbGwgcGxhdGZvcm1zCisJCXN1cHBvcnQgY29tcHJlc3Npbmcu
CisKIGNvbmZpZyBSRUNPUkRfQlVJTERUSU1FCiAJYm9vbCAiS2VlcCB0cmFjayBvZiBCdWlsZGlu
ZyB0aW1lIgogCWRlZmF1bHQgbgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTGlua2VyLnVrIGIvcGxh
dC9rdm0vTGlua2VyLnVrCmluZGV4IGQ2OGY5MDhlLi41NGFlNWU4ZSAxMDA2NDQKLS0tIGEvcGxh
dC9rdm0vTGlua2VyLnVrCisrKyBiL3BsYXQva3ZtL0xpbmtlci51awpAQCAtNDcsOSArNDcsMTEg
QEAgaWZlcSAoJChDT05GSUdfT1BUSU1JWkVfU1lNRklMRSkseSkKIAkkKGNhbGwgYnVpbGRfY21k
LE5NLCwkQC5zeW0sXAogCSAgICAgICAkKE5NKSAtbiAkQC5kYmcgPiAkQC5zeW0pCiBlbmRpZgor
aWZlcSAoJChDT05GSUdfT1BUSU1JWkVfQ09NUFJFU1MpLHkpCiAJJChjYWxsIGJ1aWxkX2NtZCxH
WiwsJEAuZ3osXAogCSAgICAgICAkKEdaSVApIC1mIC05IC1jICRAID4kQC5neikKIGVuZGlmCitl
bmRpZgogCiAjIHJlZ2lzdGVyIGltYWdlIHRvIHRoZSBidWlsZAogVUtfSU1BR0VTLSQoQ09ORklH
X1BMQVRfS1ZNKSArPSAkKEtWTV9JTUFHRSkKZGlmZiAtLWdpdCBhL3BsYXQveGVuL0xpbmtlci51
ayBiL3BsYXQveGVuL0xpbmtlci51awppbmRleCAzYTRhNzcxNy4uNWJiNzVjZjAgMTAwNjQ0Ci0t
LSBhL3BsYXQveGVuL0xpbmtlci51aworKysgYi9wbGF0L3hlbi9MaW5rZXIudWsKQEAgLTQ1LDgg
KzQ1LDEwIEBAIGlmZXEgKCQoQ09ORklHX09QVElNSVpFX1NZTUZJTEUpLHkpCiBlbmRpZgogCSQo
Y2FsbCBidWlsZF9jbWQsT0JKQ09QWSwsJEAsXAogCSAgICAgICAkKE9CSkNPUFkpIC1PIGJpbmFy
eSAkQC5lbGYgJEApCitpZmVxICgkKENPTkZJR19PUFRJTUlaRV9DT01QUkVTUykseSkKIAkkKGNh
bGwgYnVpbGRfY21kLEdaLCwkQC5neixcCiAJICAgICAgICQoR1pJUCkgLWYgLTkgLWMgJEAgPiRA
Lmd6KQorZW5kaWYKIGVsc2UKIAkkKGNhbGwgYnVpbGRfY21kLExELCwkQC5kYmcsXAogCSAgICAg
ICAkKExEKSAkKExERkxBR1MpICQoTERGTEFHUy15KSAkKFhFTl9MREZMQUdTKSAkKFhFTl9MREZM
QUdTLXkpIFwKQEAgLTYyLDkgKzY0LDExIEBAIGlmZXEgKCQoQ09ORklHX09QVElNSVpFX1NZTUZJ
TEUpLHkpCiAJJChjYWxsIGJ1aWxkX2NtZCxOTSwsJEAuc3ltLFwKIAkgICAgICAgJChOTSkgLW4g
JEAuZGJnID4gJEAuc3ltKQogZW5kaWYKK2lmZXEgKCQoQ09ORklHX09QVElNSVpFX0NPTVBSRVNT
KSx5KQogCSQoY2FsbCBidWlsZF9jbWQsR1osLCRALmd6LFwKIAkgICAgICAgJChHWklQKSAtZiAt
OSAtYyAkQCA+JEAuZ3opCiBlbmRpZgorZW5kaWYKIAogIyByZWdpc3RlciBpbWFnZSB0byB0aGUg
YnVpbGQKIFVLX0lNQUdFUy0kKENPTkZJR19QTEFUX1hFTikgKz0gJChYRU5fSU1BR0UpCi0tIAoy
LjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 10:12:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 10:12:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXjwj-00075C-Tl; Mon, 03 Jun 2019 10:12: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXjwj-000755-1f
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 10:12:05 +0000
X-Inumbo-ID: 06f56e96-85e8-11e9-98e9-e34409e9365a
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 06f56e96-85e8-11e9-98e9-e34409e9365a;
 Mon, 03 Jun 2019 10:12:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 69DB0F2048;
 Mon,  3 Jun 2019 12:12:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id VHHPF6foAC_r; Mon,  3 Jun 2019 12:12:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4006AF2024;
 Mon,  3 Jun 2019 12:11:56 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 12:11:55
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190529045632.25590-1-costin.lupu@cs.pub.ro>
 <20190529045632.25590-6-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <edf67130-4af4-29ba-b94e-adb9dda74077@neclab.eu>
Date: Mon, 3 Jun 2019 12:11:55 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190529045632.25590-6-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/5] lib/ukschedcoop: Fix
 race condition when trying to wake up current thread
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLAoKSSdsbCBiZSBob25lc3Q6IEknbSBub3QgYSBiaWcgZmFuIG9mIHRoaXMgc29s
dXRpb24uIEFmdGVyIG91ciBvZmZsaW5lIApkaXNjdXNzaW9uLCBJIGZlZWwgbGlrZSBnb2luZyB0
aGUgd2F5IG9mIG1ha2luZyBhIGN1cnJlbnRfdGhyZWFkIGdsb2JhbCAKdmFyaWFibGUgaW5zdGVh
ZCBvZiBjYXJyeWluZyB0aGUgaW5mb3JtYXRpb24gYXJvdW5kIG9uIHRoZSBzdGFjayBzb2x2ZXMg
CnRoZSBzYW1lIHByb2JsZW0gd2l0aCBsZXNzIGNvbXBsZXhpdHk6IGl0IGJhc2ljYWxseSBvYnZp
YXRlcyB0aGUgbmVlZCAKZm9yIHBhdGNoZXMgMiBhbmQgMyBvZiB0aGUgc2VyaWVzLCBhbmQgaWYg
c2V0dGluZyBjdXJyZW50X3RocmVhZCBhdCB0aGUgCnJpZ2h0IHBvaW50IGR1cmluZyB0aGUgdGhy
ZWFkIHN3aXRjaGluZ3QsIHRoZXJlJ3Mgbm8gbmVlZCB0byBpbnRyb2R1Y2UgCnRoaXMgbmV3ICJx
dWV1ZWFibGUiIGZsYWcsIHdoaWNoIEknbSBhIGJpdCB3b3JyaWVkIHdlJ3JlIGFkZGluZyBub3cg
YW5kIAptaWdodCBuZXZlciBnZXQgcmlkIG9mIGFnYWluIGJlY2F1c2Ugbm9ib2R5IG1pZ2h0IGdl
dCBhcm91bmQgdG8gcmV2aXNpdCAKdGhpcy4KCkhvd2V2ZXIsIGluIGxpZ2h0IG9mIHRoZSB0aW1l
IGNvbnN0cmFpbnRzIHRoYXQgd2UgaGF2ZSBjdXJyZW50bHksIEknbSAKd2lsbGluZyB0byB1cHN0
cmVhbSB0aGlzLCBiZWNhdXNlIGl0IGRvZXNuJ3QgaGVscCBpZiB0aGlzIHBhdGNoIHNlcmllcyAK
Z2V0cyBzdHVjayBpbiBsaW1ibywgZWl0aGVyLgoKUmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlk
dCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KCk9uIDUvMjkvMTkgNTo1NiBBTSwgQ29zdGlu
IEx1cHUgd3JvdGU6Cj4gVGhlIHByZXZpb3VzIHBhdGNoIGludHJvZHVjZWQgYSByYWNlIGNvbmRp
dGlvbjogaWYgdGhlIGN1cnJlbnQgdGhyZWFkCj4gYmxvY2tzIGFuZCB5aWVsZHMsIGFuZCBhbiBp
bnRlcnJ1cHQgaXMgdHJpZ2dlcmVkIHdob3NlIGhhbmRsZSB0cmllcyB0bwo+IHdha2UgdXAgdGhl
IGN1cnJlbnQgdGhyZWFkIHRoZW4gdGhlIHRocmVhZCB3aWxsIHJlbWFpbiBibG9ja2VkIHVudGls
IHRoZQo+IG5leHQgaW50ZXJydXB0IChwb3RlbnRpYWxseSBmb3JldmVyKSBiZWNhdXNlIHRoZSBj
dXJyZW50IHRocmVhZCBjYW5ub3QKPiBiZSBhZGRlZCB0byB0aGUgcmVhZHkgdGhyZWFkcyBsaXN0
Lgo+IAo+IFRoZSBzb2x1dGlvbiBpcyB0byBzZXQgYSBmbGFnIG9uIHRoZSBjdXJyZW50IHRocmVh
ZCBhcyBzb29uIGFzIHRoZSBuZXh0Cj4gdGhyZWFkIGlzIHNjaGVkdWxlZC4gVGhlIGludGVycnVw
dCB3aWxsIHF1ZXVlIHRoZSBjdXJyZW50IHRocmVhZCBpZiBhbmQKPiBvbmx5IGlmIHRoaXMgZmxh
ZyBpcyBzZXQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNz
LnB1Yi5ybz4KPiAtLS0KPiAgIGxpYi91a3NjaGVkL2luY2x1ZGUvdWsvdGhyZWFkLmggfCA1ICsr
KysrCj4gICBsaWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMgICAgIHwgNyArKysrKystCj4gICAy
IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZm
IC0tZ2l0IGEvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWQuaCBiL2xpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvdGhyZWFkLmgKPiBpbmRleCA3MWUzOTIyNS4uMTBmZDRhMzMgMTAwNjQ0Cj4gLS0t
IGEvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay90aHJlYWQuaAo+ICsrKyBiL2xpYi91a3NjaGVkL2lu
Y2x1ZGUvdWsvdGhyZWFkLmgKPiBAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgdWtfdGhyZWFkICp1
a190aHJlYWRfY3VycmVudCh2b2lkKQo+ICAgCj4gICAjZGVmaW5lIFJVTk5BQkxFX0ZMQUcgICAw
eDAwMDAwMDAxCj4gICAjZGVmaW5lIEVYSVRFRF9GTEFHICAgICAweDAwMDAwMDAyCj4gKyNkZWZp
bmUgUVVFVUVBQkxFX0ZMQUcgIDB4MDAwMDAwMDQKPiAgIAo+ICAgI2RlZmluZSBpc19ydW5uYWJs
ZShfdGhyZWFkKSAgICAoKF90aHJlYWQpLT5mbGFncyAmICAgUlVOTkFCTEVfRkxBRykKPiAgICNk
ZWZpbmUgc2V0X3J1bm5hYmxlKF90aHJlYWQpICAgKChfdGhyZWFkKS0+ZmxhZ3MgfD0gIFJVTk5B
QkxFX0ZMQUcpCj4gQEAgLTEwNCw2ICsxMDUsMTAgQEAgc3RydWN0IHVrX3RocmVhZCAqdWtfdGhy
ZWFkX2N1cnJlbnQodm9pZCkKPiAgICNkZWZpbmUgaXNfZXhpdGVkKF90aHJlYWQpICAgICAgKChf
dGhyZWFkKS0+ZmxhZ3MgJiAgIEVYSVRFRF9GTEFHKQo+ICAgI2RlZmluZSBzZXRfZXhpdGVkKF90
aHJlYWQpICAgICAoKF90aHJlYWQpLT5mbGFncyB8PSAgRVhJVEVEX0ZMQUcpCj4gICAKPiArI2Rl
ZmluZSBpc19xdWV1ZWFibGUoX3RocmVhZCkgICAgKChfdGhyZWFkKS0+ZmxhZ3MgJiAgIFFVRVVF
QUJMRV9GTEFHKQo+ICsjZGVmaW5lIHNldF9xdWV1ZWFibGUoX3RocmVhZCkgICAoKF90aHJlYWQp
LT5mbGFncyB8PSAgUVVFVUVBQkxFX0ZMQUcpCj4gKyNkZWZpbmUgY2xlYXJfcXVldWVhYmxlKF90
aHJlYWQpICgoX3RocmVhZCktPmZsYWdzICY9IH5RVUVVRUFCTEVfRkxBRykKPiArCj4gICBpbnQg
dWtfdGhyZWFkX2luaXQoc3RydWN0IHVrX3RocmVhZCAqdGhyZWFkLAo+ICAgCQlzdHJ1Y3QgdWtw
bGF0X2N0eF9jYWxsYmFja3MgKmNicywgc3RydWN0IHVrX2FsbG9jICphbGxvY2F0b3IsCj4gICAJ
CWNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnN0YWNrLAo+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hl
ZGNvb3Avc2NoZWRjb29wLmMgYi9saWIvdWtzY2hlZGNvb3Avc2NoZWRjb29wLmMKPiBpbmRleCAy
ODY2N2JmMS4uNWU3ZGJlODkgMTAwNjQ0Cj4gLS0tIGEvbGliL3Vrc2NoZWRjb29wL3NjaGVkY29v
cC5jCj4gKysrIGIvbGliL3Vrc2NoZWRjb29wL3NjaGVkY29vcC5jCj4gQEAgLTEwMSw2ICsxMDEs
OSBAQCBzdGF0aWMgdm9pZCBzY2hlZGNvb3Bfc2NoZWR1bGUoc3RydWN0IHVrX3NjaGVkICpzKQo+
ICAgCQkJaWYgKGlzX3J1bm5hYmxlKHByZXYpKQo+ICAgCQkJCVVLX1RBSUxRX0lOU0VSVF9UQUlM
KCZwcnYtPnRocmVhZF9saXN0LCBwcmV2LAo+ICAgCQkJCQkJdGhyZWFkX2xpc3QpOwo+ICsJCQll
bHNlCj4gKwkJCQlzZXRfcXVldWVhYmxlKHByZXYpOwo+ICsJCQljbGVhcl9xdWV1ZWFibGUobmV4
dCk7Cj4gICAJCQl1a3BsYXRfc3RhY2tfc2V0X2N1cnJlbnRfdGhyZWFkKG5leHQpOwo+ICAgCQkJ
YnJlYWs7Cj4gICAJCX0gZWxzZSBpZiAoaXNfcnVubmFibGUocHJldikpIHsKPiBAQCAtMTk2LDgg
KzE5OSwxMCBAQCBzdGF0aWMgdm9pZCBzY2hlZGNvb3BfdGhyZWFkX3dva2VuKHN0cnVjdCB1a19z
Y2hlZCAqcywgc3RydWN0IHVrX3RocmVhZCAqdCkKPiAgIAo+ICAgCWlmICh0LT53YWtldXBfdGlt
ZSA+IDApCj4gICAJCVVLX1RBSUxRX1JFTU9WRSgmcHJ2LT5zbGVlcGluZ190aHJlYWRzLCB0LCB0
aHJlYWRfbGlzdCk7Cj4gLQlpZiAodCAhPSB1a190aHJlYWRfY3VycmVudCgpKQo+ICsJaWYgKHQg
IT0gdWtfdGhyZWFkX2N1cnJlbnQoKSB8fCBpc19xdWV1ZWFibGUodCkpIHsKPiAgIAkJVUtfVEFJ
TFFfSU5TRVJUX1RBSUwoJnBydi0+dGhyZWFkX2xpc3QsIHQsIHRocmVhZF9saXN0KTsKPiArCQlj
bGVhcl9xdWV1ZWFibGUodCk7Cj4gKwl9Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGlkbGVf
dGhyZWFkX2ZuKHZvaWQgKnVudXNlZCBfX3VudXNlZCkKPiAKCi0tIApEci4gRmxvcmlhbiBTY2ht
aWR0CuODleODreODvOODquOCouODs+ODu+OCt+ODpeODn+ODg+ODiApSZXNlYXJjaCBTY2llbnRp
c3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVhcm5pbmcgR3JvdXAKTkVDIExhYm9yYXRvcmllcyBF
dXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2LCBELTY5MTE1IEhlaWRlbGJlcmcKVGVsLiAgICAg
KzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0xNTUKZS1tYWls
OiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVnaXN0ZXJlZCBhdCBBbXRzZ2VyaWNo
dCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4CgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 12:18:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 12:18: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 1hXluZ-0001jg-76; Mon, 03 Jun 2019 12:17: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXluY-0001jb-Qj
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 12:17:58 +0000
X-Inumbo-ID: 9bc57f82-85f9-11e9-8ec2-2f56ca575421
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9bc57f82-85f9-11e9-8ec2-2f56ca575421;
 Mon, 03 Jun 2019 12:17:52 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 815CA105278;
 Mon,  3 Jun 2019 14:16:49 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id sbu5jAKu3iTX; Mon,  3 Jun 2019 14:16:49 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6305410393B
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 14:16:49 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 14:16:48 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 14:16:36 +0200
Message-ID: <20190603121636.29624-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH] Remove sigfillset() stub
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QXMgYSByZXN1bHQgb2YgcGF0Y2ggOTA0OWJlNWE5MzMwICgiWWV0IGFub3RoZXIgdHJ5IHRvIGZp
eCB0aGUgX19ydGVtc19fCnNoZW5hbmlnYW5zIiksIHNpZ2ZpbGxzZXQgc2hvdWxkIG5vdyBhbHdh
eXMgYmUgYXZhaWxhYmxlIGFzIGEgZGVmaW5lCndoZW4gaW5jbHVkaW5nIHNpZ25hbC5oLiBJbiBm
YWN0LCBpZiBwbGF0LmMgaW5jbHVkZXMsIGluIGEgcm91bmRhYm91dAp3YXksIHNpZ25hbC5oLCB0
aGVuIHRoZSBidWlsZCBmYWlscy4gU28gcmVtb3ZlIHRoaXMgc3R1Yi4KClNpZ25lZC1vZmYtYnk6
IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KLS0tCiBwbGF0LmMg
fCA2IC0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
cGxhdC5jIGIvcGxhdC5jCmluZGV4IGY2Nzg2OTQuLmRmMDdkY2UgMTAwNjQ0Ci0tLSBhL3BsYXQu
YworKysgYi9wbGF0LmMKQEAgLTU1LDEyICs1NSw2IEBAIGludCBzaWdwcm9jbWFzayhpbnQgaG93
IF9fdW51c2VkLCBjb25zdCBzaWdzZXRfdCAqc2V0IF9fdW51c2VkLAogCXJldHVybiAtMTsKIH0K
IAotaW50IHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKnNldCBfX3VudXNlZCkKLXsKLQllcnJubyA9IEVO
T1RTVVA7Ci0JcmV0dXJuIC0xOwotfQotCiAjaW5jbHVkZSA8dWsvcGxhdC9ib290c3RyYXAuaD4K
IAogdm9pZCBhYm9ydCh2b2lkKQotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 12:21:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 12:21: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 1hXlxs-0002Ur-I0; Mon, 03 Jun 2019 12:21:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=vWkG=UC=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXlxr-0002Um-9Q
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 12:21:23 +0000
X-Inumbo-ID: 187e5138-85fa-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 187e5138-85fa-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 12:21:22 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id x4so11843468wrt.6
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 05:21:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=I3uekreqwm5/1xO5avmDwVK3DNNqA2p/NM5EbIbSrHs=;
 b=hkzi5UWHIGJEpYNFBktIoFMpB7TIeLOOx/d+uf1f1y7BfHKSHoDCmCHdIhcrFk9AEh
 Hd1BtWKT7nti6U4k13Xl6i6KdZY5pvQcGXeOIYowr82BP12SRK2br7YidAd8T8mTNxVx
 K/ai43IgaGNE6nf2XDsxn+r0kuau0I77XbWcuOy6nE0hDXy0AN4Ndc5vM3FBs04+6JDR
 OdPz+5WhMKVT/qYA/ybgIbM62wcW8x0mxYb7PR0cv6bYlCwHx1hW7zCEht1vzp4HyzI9
 9SGKguwo9ODslYqVfjBZIHqXXheLKMPvkL/YA5QP8rAo6dYZsEWtk8mFTWOxxqHZxpBT
 evIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=I3uekreqwm5/1xO5avmDwVK3DNNqA2p/NM5EbIbSrHs=;
 b=qXYn/epAOERgJDmYWNi08CYsYxiNNIz+8frWByEApxISn6ER3swvfaLZzF86ExkHix
 qqi+ZtQERkAVV1rm/GiHFfuuHueDx4mE3oDXNkMoT3h6NIyyMytVtf3wEX6A1LaT5gXj
 BDuT6ntNe4QHWtNK7lapaJylLW/4nb/fJW6xvMMqVbZgMg6m0yWso85fsvHimLDXqSJk
 gj4C8UupUwuQWY3hL+cYWq99GkBVgXMx/4+Gaa3s0Yf0mtaDTXq6pZ6SIRuxHKyxow2+
 wvSbrkDsxoQmXE9GK0K2jdZpXV0YKFzc+TdgJUu1pzWyfsfcDU+/gqjvshktKVDcWeeV
 wH2w==
X-Gm-Message-State: APjAAAWl6UTgEbyTbLWg/1auT5kWRrmlAqKJEUGnEPBFjs7vGrzil8Yd
 PsoDBoFIUOmFz0JY8HQYKqvCV6lw
X-Google-Smtp-Source: APXvYqyLpoTaTUr6hNoNSkV/Hzih3LPEQypR4ah5PYfML5FEPECq4MSpWun/3Q5XmR5XG8rnul720A==
X-Received: by 2002:a05:6000:1285:: with SMTP id
 f5mr16254156wrx.112.1559564480464; 
 Mon, 03 Jun 2019 05:21:20 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id p2sm11299307wmp.40.2019.06.03.05.21.19
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 05:21:20 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190603121636.29624-1-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <0f8be19f-e515-6911-91dc-a378ad21a8af@gmail.com>
Date: Mon, 3 Jun 2019 15:21:19 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190603121636.29624-1-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] Remove sigfillset() stub
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhhbmtzLCBGbG9yaWFuIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBj
cy5wdWIucm8+CgpPbiA2LzMvMTkgMzoxNiBQTSwgRmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+IEFz
IGEgcmVzdWx0IG9mIHBhdGNoIDkwNDliZTVhOTMzMCAoIllldCBhbm90aGVyIHRyeSB0byBmaXgg
dGhlIF9fcnRlbXNfXwo+IHNoZW5hbmlnYW5zIiksIHNpZ2ZpbGxzZXQgc2hvdWxkIG5vdyBhbHdh
eXMgYmUgYXZhaWxhYmxlIGFzIGEgZGVmaW5lCj4gd2hlbiBpbmNsdWRpbmcgc2lnbmFsLmguIElu
IGZhY3QsIGlmIHBsYXQuYyBpbmNsdWRlcywgaW4gYSByb3VuZGFib3V0Cj4gd2F5LCBzaWduYWwu
aCwgdGhlbiB0aGUgYnVpbGQgZmFpbHMuIFNvIHJlbW92ZSB0aGlzIHN0dWIuCj4gCj4gU2lnbmVk
LW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pgo+IC0t
LQo+ICBwbGF0LmMgfCA2IC0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkK
PiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC5jIGIvcGxhdC5jCj4gaW5kZXggZjY3ODY5NC4uZGYwN2Rj
ZSAxMDA2NDQKPiAtLS0gYS9wbGF0LmMKPiArKysgYi9wbGF0LmMKPiBAQCAtNTUsMTIgKzU1LDYg
QEAgaW50IHNpZ3Byb2NtYXNrKGludCBob3cgX191bnVzZWQsIGNvbnN0IHNpZ3NldF90ICpzZXQg
X191bnVzZWQsCj4gIAlyZXR1cm4gLTE7Cj4gIH0KPiAgCj4gLWludCBzaWdmaWxsc2V0KHNpZ3Nl
dF90ICpzZXQgX191bnVzZWQpCj4gLXsKPiAtCWVycm5vID0gRU5PVFNVUDsKPiAtCXJldHVybiAt
MTsKPiAtfQo+IC0KPiAgI2luY2x1ZGUgPHVrL3BsYXQvYm9vdHN0cmFwLmg+Cj4gIAo+ICB2b2lk
IGFib3J0KHZvaWQpCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 13:40:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 13:40:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hXnCL-00030Y-Kt; Mon, 03 Jun 2019 13:40: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=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXnCK-00030T-Is
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 13:40:24 +0000
X-Inumbo-ID: 20cbb9a2-8605-11e9-b271-e3c7dc988735
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 20cbb9a2-8605-11e9-b271-e3c7dc988735;
 Mon, 03 Jun 2019 13:40:20 +0000 (UTC)
IronPort-SDR: 84y4WVDfpkQFE/4icGpPeckAZZvyP26NuzsF7Dfqb09+9I80L7PQ7c7tgJ/kcsTPjxQ7SkuKGo
 zjrF5yanNxjA==
IronPort-PHdr: =?us-ascii?q?9a23=3A1CSKvxPAqtRRlhpaPEIl6mtUPXoX/o7sNwtQ0K?=
 =?us-ascii?q?IMzox0Iv3zrarrMEGX3/hxlliBBdydt6sdzbON7Ou+ACQp2tWoiDg6aptCVh?=
 =?us-ascii?q?sI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFR?=
 =?us-ascii?q?rhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTagfL9+Ngi6oAvTu8UZgIZuN7s6xw?=
 =?us-ascii?q?fUrHdPZ+lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2?=
 =?us-ascii?q?465MvwtRneVgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVz?=
 =?us-ascii?q?mu87tnRRn1gyoBKjU38nzYitZogaxbvhyvuhJxzY3TboyOKPZyYrnQcc8ASG?=
 =?us-ascii?q?ZdQspcUTFKDIOmb4sICuoMJfhVr47mp1sSrBu+AxSnCuXyyj9Qm3/9wKo33P?=
 =?us-ascii?q?gmEQHdwAwgHtQOvG7QrNXoLKcSTPu4w7XTzTnZd/NWxCzy5JLSchAmuPyBW6?=
 =?us-ascii?q?97f8nJyUQ3Cg/IgUicpZbmMj6VzOgBrXaX4uh6We+hk2Irtg58riW1ysovio?=
 =?us-ascii?q?TFnJwZx17K+Clj3Yo4KsO0RUhmatC+CpRQrTuVN45uT8MnRGFnpTg1x6UduZ?=
 =?us-ascii?q?6+YCgK0JMnxwPDa/Cfc4iH/BbjVOGJLDdmgXJqYrO/hxKo/Ue80e3wTNG00E?=
 =?us-ascii?q?tRoSZfiNnMsWgB1x3V6seZVvtw5lqt1DmS2wzJ6exJIVo4mbTFJ5Mj2LI9mI?=
 =?us-ascii?q?IfsUHZES/3nEX2grWWdkIh+uWw9+vnZa7mpoOdN49ykA3+NrkumtSiAekjLg?=
 =?us-ascii?q?cORHKX+fyh1LL450H5WrJKguUskqbFqJDaOdgbpqmhDg9Q04Yj7Re/DzC90N?=
 =?us-ascii?q?gBgHYIMkxFdwyDj4XyP1HOIev4Deukg1i2nzZk2fbGMqfmApXXIXjJiK3hcq?=
 =?us-ascii?q?pl605A1AozyshS6ZJQCrEGOvLzW1X+tNrCAhEkLwO0w+PnCNRg2YMCQm+PBL?=
 =?us-ascii?q?GWP7/WsVCS/e0jOfeDZJJG8Ar6fv0k4f/pljo1lEEQeYGt3IALczaoE/IgJF?=
 =?us-ascii?q?+WMlT2hdJUOmARogs4BMj3kEDKBTVUfGqzWeQ4+ykmIIm9S5/eTMa3h+rSj2?=
 =?us-ascii?q?+AApRKazUeWRi3GnDyetDcVg=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2AUBAB9IfVcjAPjVY1mHgEGBwaBZYN?=
 =?us-ascii?q?NAQEeEiiND6ZwCQEBAToBAgEBhECDNzgTAQMBAQUBAQEBBAETAQEBJliCOiK?=
 =?us-ascii?q?DHFJPgQKDIoIPqk4zhUeDHYFGgTSHA4YuP4ERgmRshA2BBIUVBJQulEsHAoI?=
 =?us-ascii?q?PWgSSSCeWbQGkdTcggVkzGoNfgWQBNg4JjiM8AQExgQYBAY17glIBAQ?=
X-IPAS-Result: =?us-ascii?q?A2AUBAB9IfVcjAPjVY1mHgEGBwaBZYNNAQEeEiiND6ZwC?=
 =?us-ascii?q?QEBAToBAgEBhECDNzgTAQMBAQUBAQEBBAETAQEBJliCOiKDHFJPgQKDIoIPq?=
 =?us-ascii?q?k4zhUeDHYFGgTSHA4YuP4ERgmRshA2BBIUVBJQulEsHAoIPWgSSSCeWbQGkd?=
 =?us-ascii?q?TcggVkzGoNfgWQBNg4JjiM8AQExgQYBAY17glIBAQ?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3484648"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 16:40:18 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id CE0EA1A60055;
 Mon,  3 Jun 2019 16:40:19 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id P7cTumRpYMAJ; Mon,  3 Jun 2019 16:40:19 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id B5B4C1A60156;
 Mon,  3 Jun 2019 16:40:19 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id nrHEicPNoYVN; Mon,  3 Jun 2019 16:40:19 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id A3BD41A60055;
 Mon,  3 Jun 2019 16:40:19 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 16:40:08 +0300
Message-Id: <20190603134008.27781-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/uksched: Make waiting queue act
 like actual queues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@neclab.eu
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>

V2FpdGluZyBxdWV1ZXMgd2VyZSB1c2VkIGFzIHN0YWNrcyAoTElGTykgaW5zdGVhZCBvZiBxdWV1
ZXMgKEZJRk8pLiBUaGUKbGFzdCBhZGRlZCB0aHJlYWQgd2FzIHRoZSBmaXJzdCBvbmUgdG8gYmUg
d29rZW4gdXAgd2hpY2ggdmlvbGF0ZXMgdGhlCmZhaXJuZXNzIHF1YWxpdHkgb2Ygd2FpdGluZyBx
dWV1ZXMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCBieSBhZGRpbmcgdGhlCmxhc3QgYWRkZWQgdGhy
ZWFkIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLgoKVGhlIHB0aHJlYWQtZW1iZWRkZWQgbGlicmFy
eSBwcm92aWRlcyBhIHRlc3Qgd2hpY2ggdmVyaWZpZXMgdGhpcyBwcm9wZXJ5Ci0gdGhlIHJ3bG9j
azYgdGVzdC4KClNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIu
cm8+Ci0tLQogbGliL3Vrc2NoZWQvaW5jbHVkZS91ay93YWl0LmggfCAyICstCiAxIGZpbGUgY2hh
bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWIvdWtz
Y2hlZC9pbmNsdWRlL3VrL3dhaXQuaCBiL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvd2FpdC5oCmlu
ZGV4IGJmMGUwYzVjLi45NGRhZTE2ZiAxMDA2NDQKLS0tIGEvbGliL3Vrc2NoZWQvaW5jbHVkZS91
ay93YWl0LmgKKysrIGIvbGliL3Vrc2NoZWQvaW5jbHVkZS91ay93YWl0LmgKQEAgLTYwLDcgKzYw
LDcgQEAgdm9pZCB1a193YWl0cV9hZGQoc3RydWN0IHVrX3dhaXRxICp3cSwKIAkJc3RydWN0IHVr
X3dhaXRxX2VudHJ5ICplbnRyeSkKIHsKIAlpZiAoIWVudHJ5LT53YWl0aW5nKSB7Ci0JCVVLX1NU
QUlMUV9JTlNFUlRfSEVBRCh3cSwgZW50cnksIHRocmVhZF9saXN0KTsKKwkJVUtfU1RBSUxRX0lO
U0VSVF9UQUlMKHdxLCBlbnRyeSwgdGhyZWFkX2xpc3QpOwogCQllbnRyeS0+d2FpdGluZyA9IDE7
CiAJfQogfQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:43:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:43: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 1hXoBM-0001Ka-8V; Mon, 03 Jun 2019 14:43:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoBL-0001KV-MY
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:43:27 +0000
X-Inumbo-ID: f081cae6-860d-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f081cae6-860d-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 14:43:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 86FFF10528C;
 Mon,  3 Jun 2019 16:43:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qKRQvwhRkTmt; Mon,  3 Jun 2019 16:43:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3F49910524B;
 Mon,  3 Jun 2019 16:43:23 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun 2019 16:43:22
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603134008.27781-1-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <357e7bd6-5fbd-cb5a-7ab6-0eed2beec471@neclab.eu>
Date: Mon, 3 Jun 2019 16:43:22 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603134008.27781-1-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/uksched: Make waiting queue
 act like actual queues
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLAoKdGhhbmtzIGZvciB0aGUgcGF0Y2guIFRoYXQgYmVoYXZpb3Igc2VlbXMgaW5k
ZWVkIG11Y2ggbW9yZSBzYW5lLgoKUmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlh
bi5zY2htaWR0QG5lY2xhYi5ldT4KCk9uIDYvMy8xOSAyOjQwIFBNLCBDb3N0aW4gTHVwdSB3cm90
ZToKPiBXYWl0aW5nIHF1ZXVlcyB3ZXJlIHVzZWQgYXMgc3RhY2tzIChMSUZPKSBpbnN0ZWFkIG9m
IHF1ZXVlcyAoRklGTykuIFRoZQo+IGxhc3QgYWRkZWQgdGhyZWFkIHdhcyB0aGUgZmlyc3Qgb25l
IHRvIGJlIHdva2VuIHVwIHdoaWNoIHZpb2xhdGVzIHRoZQo+IGZhaXJuZXNzIHF1YWxpdHkgb2Yg
d2FpdGluZyBxdWV1ZXMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCBieSBhZGRpbmcgdGhlCj4gbGFz
dCBhZGRlZCB0aHJlYWQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuCj4gCj4gVGhlIHB0aHJlYWQt
ZW1iZWRkZWQgbGlicmFyeSBwcm92aWRlcyBhIHRlc3Qgd2hpY2ggdmVyaWZpZXMgdGhpcyBwcm9w
ZXJ5Cj4gLSB0aGUgcndsb2NrNiB0ZXN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gLS0tCj4gICBsaWIvdWtzY2hlZC9pbmNsdWRlL3Vr
L3dhaXQuaCB8IDIgKy0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl
dGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdWtzY2hlZC9pbmNsdWRlL3VrL3dhaXQuaCBi
L2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvd2FpdC5oCj4gaW5kZXggYmYwZTBjNWMuLjk0ZGFlMTZm
IDEwMDY0NAo+IC0tLSBhL2xpYi91a3NjaGVkL2luY2x1ZGUvdWsvd2FpdC5oCj4gKysrIGIvbGli
L3Vrc2NoZWQvaW5jbHVkZS91ay93YWl0LmgKPiBAQCAtNjAsNyArNjAsNyBAQCB2b2lkIHVrX3dh
aXRxX2FkZChzdHJ1Y3QgdWtfd2FpdHEgKndxLAo+ICAgCQlzdHJ1Y3QgdWtfd2FpdHFfZW50cnkg
KmVudHJ5KQo+ICAgewo+ICAgCWlmICghZW50cnktPndhaXRpbmcpIHsKPiAtCQlVS19TVEFJTFFf
SU5TRVJUX0hFQUQod3EsIGVudHJ5LCB0aHJlYWRfbGlzdCk7Cj4gKwkJVUtfU1RBSUxRX0lOU0VS
VF9UQUlMKHdxLCBlbnRyeSwgdGhyZWFkX2xpc3QpOwo+ICAgCQllbnRyeS0+d2FpdGluZyA9IDE7
Cj4gICAJfQo+ICAgfQo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki
44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFj
aGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1B
bmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2
NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRA
bmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55
LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoNx-0002dQ-Qo; Mon, 03 Jun 2019 14:56: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoNw-0002dK-5g
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:28 +0000
X-Inumbo-ID: c129e68a-860f-11e9-b85a-ebd9a2499a25
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c129e68a-860f-11e9-b85a-ebd9a2499a25;
 Mon, 03 Jun 2019 14:56:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 386AFF2050;
 Mon,  3 Jun 2019 16:56:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 0SkfpWmfvSdU; Mon,  3 Jun 2019 16:56:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 06374F2023
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:21 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:20 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:03 +0200
Message-ID: <20190603145612.30206-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 0/9] Firecracker support.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RmlyZWNyYWNrZXIgaXMgYSBuZXcgbGlnaHR3ZWlnaHQgaHlwZXJ2aXNvciBkZXZlbG9wZWQgYXMg
b3Blbi1zb3VyY2UgYnkKQW1hem9uLiBJdCByZWxpZXMgb24ga3ZtLCBidXQgdGhlbiBwcm9kdWNl
cyBhIHNvbWV3aGF0IG1vcmUgc3RyZWFtbGluZWQgYm9vdApvcHRpb24gY2F0ZXJpbmcgZXNwZWNp
YWxseSB0byBMaW51eDogaW5zdGVhZCBvZiBoYXZpbmcgdGhlIGtlcm5lbCBxdWVyeSB0aGUKQklP
UyBmb3IgaW5mb3JtYXRpb24gc3VjaCBhcyB3aGVyZSBtZW1vcnkgaXMgcGh5c2ljYWxseSBsb2Nh
dGVkLCBpbmZvcm1hdGlvbgppcyBhbHJlYWR5IHByb3ZpZGVkIGluIHByZS1wcm9jZXNzZXMgZm9y
IGluIGEgImJvb3RwYXJhbXMiIHBhZ2UgdGhhdCBMaW51eAp1c2VzIHRvIGludGVybmFsbHkgY29s
bGVjdCB0aGlzIGluZm9ybWF0aW9uIGF0IGJvb3QgdGltZS4KClRoaXMgcGF0Y2ggc2VyaWVzIGFk
ZHMgc3VwcG9ydCBmb3IgYm9vdHBhcmFtcywgYXMgd2VsbCB0aGUgcG9zc2liaWxpdHkgdG8KYnVp
bGQgYm90aCBRRU1VLSBhbmQgRmlyZWNyYWNrZXItc3BlY2lmaWMga3ZtIGltYWdlcyBhdCB0aGUg
c2FtZSB0aW1lIGJ5CnByb3ZpZGluZyBhIG5ldyB3YXkgb2YgY3JlYXRpbmcgcGxhdGZvcm0gc3Vi
LWxpYnJhcmllcy4KCgp1bmlrcmFmdCBjYW4gYmUgcnVuIHdpdGggRmlyZWNyYWNrZXIgYnkgaW52
b2tpbmcgdGhlIGZvbGxvd2luZyBIVFRQIFBVVHM6CgpjdXJsIC0tdW5peC1zb2NrZXQgL3RtcC9m
aXJlY3JhY2tlci5zb2NrZXQgLWkgICAgIC1YIFBVVCAnaHR0cDovL2xvY2FsaG9zdC9ib290LXNv
dXJjZScgICAgICAgLUggJ0FjY2VwdDogYXBwbGljYXRpb24vanNvbicgICAgICAgICAgICAgICAt
SCAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyAgICAgICAgIC1kICd7CiAgICAgICAg
Imtlcm5lbF9pbWFnZV9wYXRoIjogIjxpbWFnZSBmaWxlPiIsCiAgICAgICAgImJvb3RfYXJncyI6
ICJjb25zb2xlPXR0eVMwIHJlYm9vdD1rIHBhbmljPTEgcGNpPW9mZiIKICAgIH0nCmN1cmwgLS11
bml4LXNvY2tldCAvdG1wL2ZpcmVjcmFja2VyLnNvY2tldCAtaSAgICAgLVggUFVUICdodHRwOi8v
bG9jYWxob3N0L2FjdGlvbnMnICAgICAgICAgICAtSCAgJ0FjY2VwdDogYXBwbGljYXRpb24vanNv
bicgICAgICAgICAgICAgIC1IICAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyAgICAg
ICAgLWQgJ3sKICAgICAgICAiYWN0aW9uX3R5cGUiOiAiSW5zdGFuY2VTdGFydCIKICAgICB9JwoK
Tm90ZTogRmlyZWNyYWNrZXIgaXMgY3VycmVudGx5IHVuZGVyIGhlYXZ5IGRldmVsb3BtZW50LCBz
byBiYXNpYyBzZXR0aW5ncwooc3VjaCBhcyB3aGVyZSB0byBmaW5kIHRoZSBib290cGFyYW1zIHBh
Z2Ugb3IgdGhlIGNtZGxpbmUpIGFyZSBjdXJyZW50bHkKaGFyZGNvZGVkIGFuZCBtaWdodCBjaGFu
Z2UgaW4gdGhlIGZ1dHVyZS4gVGhpcyBwYXRjaCBzZXJpZXMgaGFzIGJlZW4gdGVzdGVkCmFnYWlu
c3QgRmlyZWNyYWNrZXIncyBjdXJyZW50IG1hc3RlciB0aXAgKDI1YTcwMikuCgoKRmxvcmlhbiBT
Y2htaWR0ICg5KToKICBidWlsZDogc3VwcG9ydCBmb3Igc2hhcmluZyBsaWJyYXJpZXMgYWNyb3Nz
IG11bHRpcGxlIHBsYXRmb3JtcwogIHBsYXQva3ZtOiBhZGQgb3B0aW9ucyB0byBjaG9vc2UgUUVN
VSBvciBGaXJlY3JhY2tlcgogIHBsYXQva3ZtOiBjaGFuZ2UgZW50cnkgcG9pbnQgZm9yIHg4Ngog
IHBsYXQva3ZtOiBjcmVhdGUgc2VwYXJhdGUgbGlua2VyIHNjcmlwdCBmb3IgUUVNVSBhbmQgRmly
ZWNyYWNrZXIKICBwbGF0L2t2bTogbWFrZSBtdWx0aWJvb3Qgb25lIFZNTSBpbmZvIG9wdGlvbgog
IHBsYXQva3ZtOiBzdHJlYW1saW5lIEZpcmVjcmFja2VyIGVhcmx5IGJvb3QKICBwbGF0L2t2bTog
dXBkYXRlIHBhZ2UgdGFibGUgZm9yIEZpcmVjcmFja2VyCiAgcGxhdC9rdm06IEFkZCBib290cGFy
YW1zIGFzIFZNTSBpbmZvIG9wdGlvbgogIHBsYXQva3ZtOiBGaXJlY3JhY2tlciBpcyBub3cgaW4g
YSBzdGF0ZSB0aGF0IHJ1bnMKCiBwbGF0L2t2bS9Db25maWcudWsgICAgICAgICAgICAgICAgICAg
ICB8ICAxNSArKwogcGxhdC9rdm0vTGlua2VyLnVrICAgICAgICAgICAgICAgICAgICAgfCAgNjMg
LS0tLS0tLQogcGxhdC9rdm0vTGlua2VyX2ZjLnVrICAgICAgICAgICAgICAgICAgfCAgNjcgKysr
KysrKwogcGxhdC9rdm0vTGlua2VyX3EudWsgICAgICAgICAgICAgICAgICAgfCAgNjcgKysrKysr
KwogcGxhdC9rdm0vTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgfCAgNDIgKysrKy0KIHBs
YXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9fYm9vdHBhcmFtcy5oIHwgMTI3ICsrKysrKysrKysrKysK
IHBsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9fbXVsdGlib290LmggIHwgMjQzICsrKysrKysrKysr
KysrKysrKysrKysrKysKIHBsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9ib290cGFyYW1zLmggIHwg
IDQyICsrKysrCiBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvdm1taW5mby5oICAgICB8ICA1NiAr
KysrKysKIHBsYXQva3ZtL3g4Ni9lbnRyeTY0LlMgICAgICAgICAgICAgICAgIHwgIDIzICsrLQog
cGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyAgICAgICAgICAgICAgfCAgIDIgKy0KIHBsYXQva3Zt
L3g4Ni9wYWdldGFibGUuUyAgICAgICAgICAgICAgIHwgIDE0ICstCiBwbGF0L2t2bS94ODYvc2V0
dXAuYyAgICAgICAgICAgICAgICAgICB8IDIyNyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3Vw
cG9ydC9idWlsZC9NYWtlZmlsZS5idWlsZCAgICAgICAgICAgfCAgMjEgKystCiBzdXBwb3J0L2J1
aWxkL01ha2VmaWxlLmNsZWFuICAgICAgICAgICB8ICAgOCArLQogMTUgZmlsZXMgY2hhbmdlZCwg
NzAyIGluc2VydGlvbnMoKyksIDMxNSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBw
bGF0L2t2bS9MaW5rZXIudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2t2bS9MaW5rZXJfZmMu
dWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2t2bS9MaW5rZXJfcS51awogY3JlYXRlIG1vZGUg
MTAwNjQ0IHBsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9fYm9vdHBhcmFtcy5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgcGxhdC9rdm0vaW5jbHVkZS9rdm0teDg2L19tdWx0aWJvb3QuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHBsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9ib290cGFyYW1zLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvdm1taW5mby5oCgotLSAKMi4yMS4w
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoO6-0002eF-Sq; Mon, 03 Jun 2019 14:56:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoO5-0002e0-82
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:37 +0000
X-Inumbo-ID: c83a2da7-860f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c83a2da7-860f-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 14:56:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2B56210527D;
 Mon,  3 Jun 2019 16:56:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 9UzsodmqtMJt; Mon,  3 Jun 2019 16:56:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0CFD8105230
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:32 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:31 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:04 +0200
Message-ID: <20190603145612.30206-2-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 1/9] build: support for sharing
 libraries across multiple platforms
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Q3VycmVudGx5LCBpZiBhIGxpYnJhcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbGlicmFyaWVz
LXRvLWJlLWJ1aWx0Cm1vcmUgdGhhbiBvbmNlLCB0aGlzIHdpbGwgbGVhZCB0byBwcm9ibGVtcyB3
aGVuIG1ha2UgcnVsZXMgYXJlCmluc3RhbGxlZCwgYXMgd2VsbCBhcyBpbiB0aGUgbGlua2luZyBz
dGVwICh0cnlpbmcgdG8gbGluayBtdWx0aXBsZQp2ZXJzaW9ucyBpbiwgcmVzdWx0aW5nIGluIGR1
cGxpY2F0ZSBzeW1ib2xzKS4KVGhpcyBwYXRjaCBhZ2dyZWdhdGVzIGFsbCBsaWJyYXJpZXMgZmly
c3QsIHRoZW4gcmVtb3ZlcyBkdXBsaWNhdGVzICh2aWEKbWFrZSdzICQoc29ydCkgZnVuY3Rpb24p
LCBhbmQgc28gbWFrZXMgc3VyZSBubyBsaWJyYXJ5IGlzIGJ1aWx0IG1vcmUKdGhhbiBvbmNlLgoK
V2h5IHdvdWxkIHRoaXMgaGFwcGVuPyBUaGUgYmVzdCBleGFtcGxlIGlzIGhhdmluZyBhIHBsYXRm
b3JtIGxpYnJhcnkgdXNlZApieSB0d28gcGxhdGZvcm1zLCBmb3IgZXhhbXBsZSwgdXNpbmcgbGli
cGNpIGZvciBhIGt2bSBhbmQgYSBiYXJlbWV0YWwKcGxhdGZvcm0sIHdoaWNoIHJlcXVpcmVzIHR3
byBhZGRwbGF0bGliIGNhbGxzLCBvbmUgZm9yIGVhY2ggcGxhdGZvcm0gaXQKaXMgcmVnaXN0ZXJl
ZCB3aXRoLgoKVGhlIHNhbWUgYXBwbGllcyB0byBjbGVhbmluZywgcmVzcGVjdGl2ZWx5LgoKU2ln
bmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+ClNpZ25l
ZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KLS0t
CiBzdXBwb3J0L2J1aWxkL01ha2VmaWxlLmJ1aWxkIHwgMjEgKysrKysrKysrKystLS0tLS0tLS0t
CiBzdXBwb3J0L2J1aWxkL01ha2VmaWxlLmNsZWFuIHwgIDggKysrKysrLS0KIDIgZmlsZXMgY2hh
bmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Vw
cG9ydC9idWlsZC9NYWtlZmlsZS5idWlsZCBiL3N1cHBvcnQvYnVpbGQvTWFrZWZpbGUuYnVpbGQK
aW5kZXggNTY3OTc0MWQuLjZhMDA5MWMyIDEwMDY0NAotLS0gYS9zdXBwb3J0L2J1aWxkL01ha2Vm
aWxlLmJ1aWxkCisrKyBiL3N1cHBvcnQvYnVpbGQvTWFrZWZpbGUuYnVpbGQKQEAgLTI2LDE2ICsy
NiwxMiBAQAogaWZuZXEgKCQoY2FsbCBxc3RyaXAsJChVS19MSUJTKSAkKFVLX0xJQlMteSkpLCkK
ICQoZm9yZWFjaCBMLCQoVUtfTElCUykgJChVS19MSUJTLXkpLCBcCiAkKGlmICQoY2FsbCBxc3Ry
aXAsJCgkKGNhbGwgdWMsJChMKSlfU1JDUykgJCgkKGNhbGwgdWMsJChMKSlfU1JDUy15KSksIFwK
LSQoZm9yZWFjaCBTLCQoJChjYWxsIHVjLCQoTCkpX1NSQ1MpICQoJChjYWxsIHVjLCQoTCkpX1NS
Q1MteSksIFwKLSQoZXZhbCAkKGNhbGwgYnVpbGRydWxlX2xpYm9ial9tdWx0aXRhcmdldCwkKEwp
LCQoUykpKSBcCi0pOyBcCi0kKGV2YWwgJChjYWxsIGJ1aWxkcnVsZV9vbGliLCQoTCkpKTsgXAog
JChldmFsIFVLX09MSUJTLXkgKz0gJChjYWxsIGxpYm5hbWUyb2xpYiwkKEwpKSk7IFwKKyQoZXZh
bCBVS0JVSUxEX0xJQlMgKz0gJChMKSk7IFwKICkgXAogKQogZW5kaWYKIAotCiAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCiAjIEluc3RhbGwgYnVp
bGQgcnVsZXMgZm9yIGVhY2ggZW5hYmxlZCBwbGF0Zm9ybQpAQCAtNDcsMTMgKzQzLDE4IEBAICQo
Zm9yZWFjaCBQLCQoVUtfUExBVFMpICQoVUtfUExBVFMteSksIFwKICQoaWYgJChjYWxsIHFzdHJp
cCwkKCQoY2FsbCB1YywkKFApKV9MSUJTKSAkKCQoY2FsbCB1YywkKFApKV9MSUJTLXkpKSwgXAog
JChmb3JlYWNoIEwsJCgkKGNhbGwgdWMsJChQKSlfTElCUykgJCgkKGNhbGwgdWMsJChQKSlfTElC
Uy15KSwgXAogJChpZiAkKGNhbGwgcXN0cmlwLCQoJChjYWxsIHVjLCQoTCkpX1NSQ1MpICQoJChj
YWxsIHVjLCQoTCkpX1NSQ1MteSkpLCBcCiskKGV2YWwgJChjYWxsIHVjLCQoUCkpX09MSUJTLXkg
Kz0gJChjYWxsIGxpYm5hbWUyb2xpYiwkKEwpKSk7IFwKKyQoZXZhbCBVS0JVSUxEX0xJQlMgKz0g
JChMKSk7IFwKKykgXAorKSBcCispIFwKKykKKworZW5kaWYKKworJChmb3JlYWNoIEwsJChzb3J0
ICQoVUtCVUlMRF9MSUJTKSksIFwKICQoZm9yZWFjaCBTLCQoJChjYWxsIHVjLCQoTCkpX1NSQ1Mp
ICQoJChjYWxsIHVjLCQoTCkpX1NSQ1MteSksIFwKICQoZXZhbCAkKGNhbGwgYnVpbGRydWxlX2xp
Ym9ial9tdWx0aXRhcmdldCwkKEwpLCQoUykpKSBcCiApOyBcCiAkKGV2YWwgJChjYWxsIGJ1aWxk
cnVsZV9vbGliLCQoTCkpKTsgXAotJChldmFsICQoY2FsbCB1YywkKFApKV9PTElCUy15ICAgICs9
ICQoY2FsbCBsaWJuYW1lMm9saWIsJChMKSkpOyBcCi0pIFwKLSkgXAotKTsgXAogKQotZW5kaWYK
ZGlmZiAtLWdpdCBhL3N1cHBvcnQvYnVpbGQvTWFrZWZpbGUuY2xlYW4gYi9zdXBwb3J0L2J1aWxk
L01ha2VmaWxlLmNsZWFuCmluZGV4IDBhZDNkMTU1Li5hMTMxMTE5ZSAxMDA2NDQKLS0tIGEvc3Vw
cG9ydC9idWlsZC9NYWtlZmlsZS5jbGVhbgorKysgYi9zdXBwb3J0L2J1aWxkL01ha2VmaWxlLmNs
ZWFuCkBAIC0yNSw3ICsyNSw3IEBACiAKIGlmbmVxICgkKGNhbGwgcXN0cmlwLCQoVUtfTElCUykg
JChVS19MSUJTLXkpKSwpCiAkKGZvcmVhY2ggTCwkKFVLX0xJQlMpICQoVUtfTElCUy15KSwgXAot
JChldmFsICQoY2FsbCBjbGVhbnJ1bGVfbGliLCQoTCkpKTsgXAorJChldmFsIFVLQ0xFQU5fTElC
UyArPSAkKEwpKTsgXAogKQogZW5kaWYKIApAQCAtNDAsOCArNDAsMTIgQEAgaWZuZXEgKCQoY2Fs
bCBxc3RyaXAsJChVS19QTEFUUykgJChVS19QTEFUUy15KSksKQogJChmb3JlYWNoIFAsJChVS19Q
TEFUUykgJChVS19QTEFUUy15KSwgXAogJChpZiAkKGNhbGwgcXN0cmlwLCQoJChjYWxsIHVjLCQo
UCkpX0xJQlMpICQoJChjYWxsIHVjLCQoUCkpX0xJQlMteSkpLCBcCiAkKGZvcmVhY2ggTCwkKCQo
Y2FsbCB1YywkKFApKV9MSUJTKSAkKCQoY2FsbCB1YywkKFApKV9MSUJTLXkpLCBcCi0kKGV2YWwg
JChjYWxsIGNsZWFucnVsZV9saWIsJChMKSkpOyBcCiskKGV2YWwgVUtDTEVBTl9MSUJTICs9ICQo
TCkpOyBcCiApIFwKICkgXAogKQogZW5kaWYKKworJChmb3JlYWNoIEwsJChzb3J0ICQoVUtDTEVB
Tl9MSUJTKSksIFwKKyQoZXZhbCAkKGNhbGwgY2xlYW5ydWxlX2xpYiwkKEwpKSk7IFwKKykKLS0g
CjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoO6-0002eK-V6; Mon, 03 Jun 2019 14:56:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoO5-0002e2-8w
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:37 +0000
X-Inumbo-ID: c7fc5ac2-860f-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c7fc5ac2-860f-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 14:56:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A8180F2050;
 Mon,  3 Jun 2019 16:56:34 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id TNGovMJ_L4fb; Mon,  3 Jun 2019 16:56:34 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 842A5F2023
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:32 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:32 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:05 +0200
Message-ID: <20190603145612.30206-3-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 2/9] plat/kvm: add options to choose
 QEMU or Firecracker
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Rm9yIG5vdywgdGhlIEZpcmVjcmFja2VyIG9wdGlvbiBpcyBhIG5vb3AuCgpTaWduZWQtb2ZmLWJ5
OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Ci0tLQogcGxhdC9r
dm0vQ29uZmlnLnVrIHwgMTUgKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5z
ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL0NvbmZpZy51ayBiL3BsYXQva3ZtL0Nv
bmZpZy51awppbmRleCA1YTZkZmMxNC4uMjg4NTM2NDYgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL0Nv
bmZpZy51aworKysgYi9wbGF0L2t2bS9Db25maWcudWsKQEAgLTEyLDYgKzEyLDIxIEBAIG1lbnVj
b25maWcgUExBVF9LVk0KIAogaWYgKFBMQVRfS1ZNKQogCitjb25maWcgS1ZNX1ZNTV9RRU1VCisg
ICAgICAgIGJvb2wgInVzZSBRRU1VIHRvIHJ1biBrdm0gVk0iCisgICAgICAgIGRlZmF1bHQgeQor
ICAgICAgICBoZWxwCisgICAgICAgICAgQnVpbGQgYW4gaW1hZ2UgdGhhdCBjYW4gYmUgcnVuIHdp
dGggUUVNVS9rdm0uCisKK2NvbmZpZyBLVk1fVk1NX0ZJUkVDUkFDS0VSCisgICAgICAgIGJvb2wg
InVzZSBGaXJlY3JhY2tlciB0byBydW4ga3ZtIFZNIFtXSVBdIgorICAgICAgICBkZWZhdWx0IG4K
KyAgICAgICAgZGVwZW5kcyBvbiBBUkNIX1g4Nl82NAorICAgICAgICBoZWxwCisgICAgICAgICAg
QnVpbGQgYW4gaW1hZ2UgdGhhdCBjYW4gYmUgcnVuIHdpdGggRmlyZWNyYWNrZXIuCisgICAgICAg
ICAgVGhpcyBpcyB3b3JrIGluIHByb2dyZXNzOyBlbmFibGluZyB0aGlzIG9wdGlvbgorICAgICAg
ICAgIG1heSBpbiBmYWN0IGJyZWFrIHlvdXIgUUVNVS9rdm0gYnVpbGQuCisKIG1lbnUgIkNvbnNv
bGUgT3B0aW9ucyIKIAogY29uZmlnIEtWTV9LRVJORUxfU0VSSUFMX0NPTlNPTEUKLS0gCjIuMjEu
MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoOB-0002fx-18; Mon, 03 Jun 2019 14:56: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoO9-0002fg-F0
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:41 +0000
X-Inumbo-ID: c9c2cef6-860f-11e9-af0d-8f42582b7b8e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c9c2cef6-860f-11e9-af0d-8f42582b7b8e;
 Mon, 03 Jun 2019 14:56:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id ADEB4F2050;
 Mon,  3 Jun 2019 16:56:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id EYKl-P830LlW; Mon,  3 Jun 2019 16:56:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7C242F2023
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:35 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:35 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:07 +0200
Message-ID: <20190603145612.30206-5-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 4/9] plat/kvm: create separate
 linker script for QEMU and Firecracker
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGxpbmtlciBzY3JpcHRzIGFyZSB2ZXJ5IHNpbWlsYXIsIGJ1dCB3ZSBuZWVkIHRvIG9mIHRo
ZW0gdG8gc3VwcG9ydApidWlsZGluZyBib3RoIFFFTVUgYW5kIEZpcmVjcmFja2VyIGluIG9uZSBi
dWlsZCBydW4uCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4KU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRA
bmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL0xpbmtlcl9mYy51ayAgICAgICAgICAgICAgIHwgNjcg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQva3ZtL3tMaW5rZXIudWsgPT4gTGlu
a2VyX3EudWt9IHwgNDEgKysrKysrKysrKy0tLS0tLS0tCiBwbGF0L2t2bS9NYWtlZmlsZS51ayAg
ICAgICAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAx
MjYgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxh
dC9rdm0vTGlua2VyX2ZjLnVrCiByZW5hbWUgcGxhdC9rdm0ve0xpbmtlci51ayA9PiBMaW5rZXJf
cS51a30gKDUwJSkKCmRpZmYgLS1naXQgYS9wbGF0L2t2bS9MaW5rZXJfZmMudWsgYi9wbGF0L2t2
bS9MaW5rZXJfZmMudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjk5MmY2
Yzg2Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9rdm0vTGlua2VyX2ZjLnVrCkBAIC0wLDAgKzEs
NjcgQEAKK2lmZXEgKHg4Nl82NCwkKENPTkZJR19VS19BUkNIKSkKK0tWTUZDX0xERkxBR1MteSAr
PSAtV2wsLW0sZWxmX3g4Nl82NAorZWxzZSBpZmVxIChhcm02NCwkKENPTkZJR19VS19BUkNIKSkK
K0tWTUZDX0xERkxBR1MteQkgKz0gLVdsLC1tLGFhcmNoNjRlbGYKK2VuZGlmCisKK0tWTUZDX0xE
U0NSSVBUICAgICA6PSAkKGNhbGwgc3JjMmxkcyxsaWJrdm1mY3BsYXQsJChLVk1fTERTQ1JJUFRf
U1JDLXkpKQorCisjIworIyMgTGluayBpbWFnZQorIyMKK0tWTUZDX0lNQUdFIDo9ICQoQlVJTERf
RElSKS8kKENPTkZJR19VS19OQU1FKV9rdm1mYy0kKENPTkZJR19VS19BUkNIKQorCitLVk1GQ19M
RF9TQ1JJUFRfRkxBR1MgOj0gJChhZGRwcmVmaXggLVdsJChjb21tYSktVCQoY29tbWEpLFwKKwkJ
CSQoS1ZNRkNfTERfU0NSSVBULXkpICQoRVhUUkFfTERfU0NSSVBULXkpKQorCiskKEtWTUZDX0lN
QUdFKTogJChLVk1fQUxJQlMpICQoS1ZNX0FMSUJTLXkpICQoS1ZNX09MSUJTKSAkKEtWTV9PTElC
Uy15KSBcCisgICAgICAgICAgICAgICQoS1ZNRkNfQUxJQlMpICQoS1ZNRkNfQUxJQlMteSkgJChL
Vk1GQ19PTElCUykgJChLVk1GQ19PTElCUy15KSBcCisgICAgICAgICAgICAgICQoVUtfQUxJQlMp
ICQoVUtfQUxJQlMteSkgJChVS19PTElCUykgJChVS19PTElCUy15KSBcCisgICAgICAgICAgICAg
ICQoS1ZNRkNfTERTQ1JJUFQpCisJJChjYWxsIGJ1aWxkX2NtZCxMRCwsJEAubGQubyxcCisJICAg
ICAgICQoTEQpIC1yICQoTElCTERGTEFHUykgJChMSUJMREZMQUdTLXkpIFwKKwkJCSQoS1ZNRkNf
TERGTEFHUykgJChLVk1GQ19MREZMQUdTLXkpIFwKKwkJCSQoS1ZNX09MSUJTKSAkKEtWTV9PTElC
Uy15KSBcCisJCQkkKEtWTUZDX09MSUJTKSAkKEtWTUZDX09MSUJTLXkpIFwKKwkJCSQoVUtfT0xJ
QlMpICQoVUtfT0xJQlMteSkgXAorCQkJLVdsJChjb21tYSktLXN0YXJ0LWdyb3VwIFwKKwkJCSQo
S1ZNX0FMSUJTKSAkKEtWTV9BTElCUy15KSBcCisJCQkkKEtWTUZDX0FMSUJTKSAkKEtWTUZDX0FM
SUJTLXkpIFwKKwkJCSQoVUtfQUxJQlMpICQoVUtfQUxJQlMteSkgXAorCQkJLVdsJChjb21tYSkt
LWVuZC1ncm91cCBcCisJCQktbyAkQC5sZC5vKQorCSQoY2FsbCBidWlsZF9jbWQsT0JKQ09QWSws
JEAubyxcCisJICAgICAgICQoT0JKQ09QWSkgLXcgLUcga3Ztb3NfKiAtRyBfbGlia3ZtcGxhdF9l
bnRyeSBcCisJCQktRyBfbGlia3ZtcGxhdF9zdGFydDY0ICRALmxkLm8gJEAubykKK2lmbmVxICgk
KGZpbHRlciB4ODZfNjQgYXJtNjQsJChDT05GSUdfVUtfQVJDSCkpLCkKKwkkKGNhbGwgYnVpbGRf
Y21kLExELCwkQC5kYmcsXAorCSAgICAgICAkKExEKSAkKExERkxBR1MpICQoTERGTEFHUy15KSBc
CisJCSAgICAgJChLVk1GQ19MREZMQUdTKSAkKEtWTUZDX0xERkxBR1MteSkgXAorCQkgICAgIC1X
bCQoY29tbWEpLWRUJChjb21tYSkkKGNhbGwgc3RyaXAsJChLVk1GQ19MRFNDUklQVCkpIFwKKwkJ
ICAgICAkKEtWTUZDX0xEX1NDUklQVF9GTEFHUykgXAorCQkgICAgICRALm8gLW8gJEAuZGJnKQor
CSQoY2FsbCB2ZXJib3NlX2NtZCxTQ1NUUklQLCQobm90ZGlyICRAKSxcCisJCSQoU0NSSVBUU19E
SVIpL3NlY3Qtc3RyaXAucHkgXAorCQkJJChTRUNUX1NUUklQX0ZMQUdTKSAkKFNFQ1RfU1RSSVBf
RkxBR1MteSkgXAorCQkJLS13aXRoLW9iamNvcHk9JChPQkpDT1BZKSBcCisJCQkkQC5kYmcgLW8g
JEApCisJJChjYWxsIHZlcmJvc2VfY21kLFNUUklQLCQobm90ZGlyICRAKSwgJChTVFJJUCkgLXMg
JEApCisKK2lmZXEgKCQoQ09ORklHX09QVElNSVpFX1NZTUZJTEUpLHkpCisJJChjYWxsIGJ1aWxk
X2NtZCxOTSwsJEAuc3ltLFwKKwkgICAgICAgJChOTSkgLW4gJEAuZGJnID4gJEAuc3ltKQorZW5k
aWYKKwkkKGNhbGwgYnVpbGRfY21kLEdaLCwkQC5neixcCisJICAgICAgICQoR1pJUCkgLWYgLTkg
LWMgJEAgPiRALmd6KQorZW5kaWYKKworIyByZWdpc3RlciBpbWFnZSB0byB0aGUgYnVpbGQKK1VL
X0lNQUdFUy0kKENPTkZJR19LVk1fVk1NX0ZJUkVDUkFDS0VSKSArPSAkKEtWTUZDX0lNQUdFKQor
CisjIC4uLmZvciBjbGVhbmluZzoKK0xJQktWTUZDUExBVF9DTEVBTiArPSAkKGNhbGwgYnVpbGRf
Y2xlYW4sJChLVk1GQ19JTUFHRSkpCitMSUJLVk1GQ1BMQVRfQ0xFQU4gKz0gJChjYWxsIGJ1aWxk
X2NsZWFuLCQoS1ZNRkNfSU1BR0UpLmd6KQorTElCS1ZNRkNQTEFUX0NMRUFOICs9ICQoY2FsbCBi
dWlsZF9jbGVhbiwkKEtWTUZDX0lNQUdFKS5kYmcpCitMSUJLVk1GQ1BMQVRfQ0xFQU4gKz0gJChj
YWxsIGJ1aWxkX2NsZWFuLCQoS1ZNRkNfSU1BR0UpLnN5bSkKK0xJQktWTUZDUExBVF9DTEVBTiAr
PSAkKGNhbGwgYnVpbGRfY2xlYW4sJChLVk1GQ19JTUFHRSkubykKK0xJQktWTUZDUExBVF9DTEVB
TiArPSAkKGNhbGwgYnVpbGRfY2xlYW4sJChLVk1GQ19JTUFHRSkubGQubykKZGlmZiAtLWdpdCBh
L3BsYXQva3ZtL0xpbmtlci51ayBiL3BsYXQva3ZtL0xpbmtlcl9xLnVrCnNpbWlsYXJpdHkgaW5k
ZXggNTAlCnJlbmFtZSBmcm9tIHBsYXQva3ZtL0xpbmtlci51awpyZW5hbWUgdG8gcGxhdC9rdm0v
TGlua2VyX3EudWsKaW5kZXggOWJlNDA2MTIuLmE2MDNiNWQxIDEwMDY0NAotLS0gYS9wbGF0L2t2
bS9MaW5rZXIudWsKKysrIGIvcGxhdC9rdm0vTGlua2VyX3EudWsKQEAgLTEsMjkgKzEsMzIgQEAK
IGlmZXEgKHg4Nl82NCwkKENPTkZJR19VS19BUkNIKSkKLUtWTV9MREZMQUdTLXkgKz0gLVdsLC1t
LGVsZl94ODZfNjQKK0tWTVFfTERGTEFHUy15ICs9IC1XbCwtbSxlbGZfeDg2XzY0CiBlbHNlIGlm
ZXEgKGFybTY0LCQoQ09ORklHX1VLX0FSQ0gpKQotS1ZNX0xERkxBR1MteQkgKz0gLVdsLC1tLGFh
cmNoNjRlbGYKK0tWTVFfTERGTEFHUy15CSArPSAtV2wsLW0sYWFyY2g2NGVsZgogZW5kaWYKIAot
S1ZNX0xEU0NSSVBUICAgICA6PSAkKGNhbGwgc3JjMmxkcyxsaWJrdm1wbGF0LCQoS1ZNX0xEU0NS
SVBUX1NSQy15KSkKK0tWTVFfTERTQ1JJUFQgICAgIDo9ICQoY2FsbCBzcmMybGRzLGxpYmt2bXFw
bGF0LCQoS1ZNX0xEU0NSSVBUX1NSQy15KSkKIAogIyMKICMjIExpbmsgaW1hZ2UKICMjCi1LVk1f
SU1BR0UgOj0gJChCVUlMRF9ESVIpLyQoQ09ORklHX1VLX05BTUUpX2t2bS0kKENPTkZJR19VS19B
UkNIKQorS1ZNUV9JTUFHRSA6PSAkKEJVSUxEX0RJUikvJChDT05GSUdfVUtfTkFNRSlfa3ZtcS0k
KENPTkZJR19VS19BUkNIKQogCi1LVk1fTERfU0NSSVBUX0ZMQUdTIDo9ICQoYWRkcHJlZml4IC1X
bCQoY29tbWEpLVQkKGNvbW1hKSxcCi0JCQkkKEtWTV9MRF9TQ1JJUFQteSkgJChFWFRSQV9MRF9T
Q1JJUFQteSkpCitLVk1RX0xEX1NDUklQVF9GTEFHUyA6PSAkKGFkZHByZWZpeCAtV2wkKGNvbW1h
KS1UJChjb21tYSksXAorCQkJJChLVk1RX0xEX1NDUklQVC15KSAkKEVYVFJBX0xEX1NDUklQVC15
KSkKIAotJChLVk1fSU1BR0UpOiAkKEtWTV9BTElCUykgJChLVk1fQUxJQlMteSkgJChLVk1fT0xJ
QlMpICQoS1ZNX09MSUJTLXkpIFwKKyQoS1ZNUV9JTUFHRSk6ICQoS1ZNX0FMSUJTKSAkKEtWTV9B
TElCUy15KSAkKEtWTV9PTElCUykgJChLVk1fT0xJQlMteSkgXAorICAgICAgICAgICAgICAkKEtW
TVFfQUxJQlMpICQoS1ZNUV9BTElCUy15KSAkKEtWTVFfT0xJQlMpICQoS1ZNUV9PTElCUy15KSBc
CiAgICAgICAgICAgICAgICQoVUtfQUxJQlMpICQoVUtfQUxJQlMteSkgJChVS19PTElCUykgJChV
S19PTElCUy15KSBcCi0gICAgICAgICAgICAgICQoS1ZNX0xEU0NSSVBUKQorICAgICAgICAgICAg
ICAkKEtWTVFfTERTQ1JJUFQpCiAJJChjYWxsIGJ1aWxkX2NtZCxMRCwsJEAubGQubyxcCiAJICAg
ICAgICQoTEQpIC1yICQoTElCTERGTEFHUykgJChMSUJMREZMQUdTLXkpIFwKLQkJCSQoS1ZNX0xE
RkxBR1MpICQoS1ZNX0xERkxBR1MteSkgXAorCQkJJChLVk1RX0xERkxBR1MpICQoS1ZNUV9MREZM
QUdTLXkpIFwKIAkJCSQoS1ZNX09MSUJTKSAkKEtWTV9PTElCUy15KSBcCisJCQkkKEtWTVFfT0xJ
QlMpICQoS1ZNUV9PTElCUy15KSBcCiAJCQkkKFVLX09MSUJTKSAkKFVLX09MSUJTLXkpIFwKIAkJ
CS1XbCQoY29tbWEpLS1zdGFydC1ncm91cCBcCiAJCQkkKEtWTV9BTElCUykgJChLVk1fQUxJQlMt
eSkgXAorCQkJJChLVk1RX0FMSUJTKSAkKEtWTVFfQUxJQlMteSkgXAogCQkJJChVS19BTElCUykg
JChVS19BTElCUy15KSBcCiAJCQktV2wkKGNvbW1hKS0tZW5kLWdyb3VwIFwKIAkJCS1vICRALmxk
Lm8pCkBAIC0zMyw5ICszNiw5IEBAICQoS1ZNX0lNQUdFKTogJChLVk1fQUxJQlMpICQoS1ZNX0FM
SUJTLXkpICQoS1ZNX09MSUJTKSAkKEtWTV9PTElCUy15KSBcCiBpZm5lcSAoJChmaWx0ZXIgeDg2
XzY0IGFybTY0LCQoQ09ORklHX1VLX0FSQ0gpKSwpCiAJJChjYWxsIGJ1aWxkX2NtZCxMRCwsJEAu
ZGJnLFwKIAkgICAgICAgJChMRCkgJChMREZMQUdTKSAkKExERkxBR1MteSkgXAotCQkgICAgICQo
S1ZNX0xERkxBR1MpICQoS1ZNX0xERkxBR1MteSkgXAotCQkgICAgIC1XbCQoY29tbWEpLWRUJChj
b21tYSkkKGNhbGwgc3RyaXAsJChLVk1fTERTQ1JJUFQpKSBcCi0JCSAgICAgJChLVk1fTERfU0NS
SVBUX0ZMQUdTKSBcCisJCSAgICAgJChLVk1RX0xERkxBR1MpICQoS1ZNUV9MREZMQUdTLXkpIFwK
KwkJICAgICAtV2wkKGNvbW1hKS1kVCQoY29tbWEpJChjYWxsIHN0cmlwLCQoS1ZNUV9MRFNDUklQ
VCkpIFwKKwkJICAgICAkKEtWTVFfTERfU0NSSVBUX0ZMQUdTKSBcCiAJCSAgICAgJEAubyAtbyAk
QC5kYmcpCiAJJChjYWxsIHZlcmJvc2VfY21kLFNDU1RSSVAsJChub3RkaXIgJEApLFwKIAkJJChT
Q1JJUFRTX0RJUikvc2VjdC1zdHJpcC5weSBcCkBAIC01MywxMiArNTYsMTIgQEAgZW5kaWYKIGVu
ZGlmCiAKICMgcmVnaXN0ZXIgaW1hZ2UgdG8gdGhlIGJ1aWxkCi1VS19JTUFHRVMtJChDT05GSUdf
UExBVF9LVk0pICs9ICQoS1ZNX0lNQUdFKQorVUtfSU1BR0VTLSQoQ09ORklHX0tWTV9WTU1fUUVN
VSkgKz0gJChLVk1RX0lNQUdFKQogCiAjIC4uLmZvciBjbGVhbmluZzoKLUxJQktWTVBMQVRfQ0xF
QU4gKz0gJChjYWxsIGJ1aWxkX2NsZWFuLCQoS1ZNX0lNQUdFKSkKLUxJQktWTVBMQVRfQ0xFQU4g
Kz0gJChjYWxsIGJ1aWxkX2NsZWFuLCQoS1ZNX0lNQUdFKS5neikKLUxJQktWTVBMQVRfQ0xFQU4g
Kz0gJChjYWxsIGJ1aWxkX2NsZWFuLCQoS1ZNX0lNQUdFKS5kYmcpCi1MSUJLVk1QTEFUX0NMRUFO
ICs9ICQoY2FsbCBidWlsZF9jbGVhbiwkKEtWTV9JTUFHRSkuc3ltKQotTElCS1ZNUExBVF9DTEVB
TiArPSAkKGNhbGwgYnVpbGRfY2xlYW4sJChLVk1fSU1BR0UpLm8pCi1MSUJLVk1QTEFUX0NMRUFO
ICs9ICQoY2FsbCBidWlsZF9jbGVhbiwkKEtWTV9JTUFHRSkubGQubykKK0xJQktWTVFQTEFUX0NM
RUFOICs9ICQoY2FsbCBidWlsZF9jbGVhbiwkKEtWTVFfSU1BR0UpKQorTElCS1ZNUVBMQVRfQ0xF
QU4gKz0gJChjYWxsIGJ1aWxkX2NsZWFuLCQoS1ZNUV9JTUFHRSkuZ3opCitMSUJLVk1RUExBVF9D
TEVBTiArPSAkKGNhbGwgYnVpbGRfY2xlYW4sJChLVk1RX0lNQUdFKS5kYmcpCitMSUJLVk1RUExB
VF9DTEVBTiArPSAkKGNhbGwgYnVpbGRfY2xlYW4sJChLVk1RX0lNQUdFKS5zeW0pCitMSUJLVk1R
UExBVF9DTEVBTiArPSAkKGNhbGwgYnVpbGRfY2xlYW4sJChLVk1RX0lNQUdFKS5vKQorTElCS1ZN
UVBMQVRfQ0xFQU4gKz0gJChjYWxsIGJ1aWxkX2NsZWFuLCQoS1ZNUV9JTUFHRSkubGQubykKZGlm
ZiAtLWdpdCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKaW5k
ZXggNjMzMzQ4YWIuLjk1MTZjNThkIDEwMDY0NAotLS0gYS9wbGF0L2t2bS9NYWtlZmlsZS51awor
KysgYi9wbGF0L2t2bS9NYWtlZmlsZS51awpAQCAtMSwxNSArMSwzMCBAQAogIyMKICMjIEtWTSBw
bGF0Zm9ybSByZWdpc3RyYXRpb24KICMjCi0kKGV2YWwgJChjYWxsIGFkZHBsYXRfcyxrdm0sJChD
T05GSUdfUExBVF9LVk0pKSkKKyQoZXZhbCAkKGNhbGwgYWRkcGxhdF9zLGt2bXEsJChDT05GSUdf
S1ZNX1ZNTV9RRU1VKSkpCitVS19QTEFUX0tWTVFfTElOS0VSIDo9ICQoVUtfUExBVF9LVk1RX0JB
U0UpL0xpbmtlcl9xLnVrCiskKGV2YWwgJChjYWxsIGFkZHBsYXRfcyxrdm1mYywkKENPTkZJR19L
Vk1fVk1NX0ZJUkVDUkFDS0VSKSkpCitVS19QTEFUX0tWTUZDX0xJTktFUiA6PSAkKFVLX1BMQVRf
S1ZNRkNfQkFTRSkvTGlua2VyX2ZjLnVrCisKKyMjCisjIyBQb3B1bGF0ZSBMSUJLVk1QTEFUX0JB
U0UgZm9yIGNvbW1vbiBmaWxlcworIyMKK2lmZXEgKCQoQ09ORklHX0tWTV9WTU1fUUVNVSkseSkK
K0xJQktWTVBMQVRfQkFTRSA6PSAkKFVLX1BMQVRfS1ZNUV9CQVNFKQorZWxzZSBpZmVxICgkKENP
TkZJR19LVk1fVk1NX0ZJUkVDUkFDS0VSKSx5KQorTElCS1ZNUExBVF9CQVNFIDo9ICQoVUtfUExB
VF9LVk1GQ19CQVNFKQorZW5kaWYKIAogIyMKICMjIEtWTSBwbGF0Zm9ybSBsaWJyYXJ5IHJlZ2lz
dHJhdGlvbgogIyMKLSQoZXZhbCAkKGNhbGwgYWRkcGxhdGxpYixrdm0sbGlia3ZtcGxhdCkpCi0k
KGV2YWwgJChjYWxsIGFkZHBsYXRsaWJfcyxrdm0sbGlia3ZtcGNpLCQoQ09ORklHX0tWTV9QQ0kp
KSkKLSQoZXZhbCAkKGNhbGwgYWRkcGxhdGxpYl9zLGt2bSxsaWJrdm12aXJ0aW8sJChDT05GSUdf
VklSVElPX0JVUykpKQotJChldmFsICQoY2FsbCBhZGRwbGF0bGliX3Msa3ZtLGxpYmt2bXZpcnRp
b25ldCwkKENPTkZJR19WSVJUSU9fTkVUKSkpCiskKGV2YWwgJChjYWxsIGFkZHBsYXRsaWIsa3Zt
cSxsaWJrdm1xcGxhdCwkKENPTkZJR19LVk1fVk1NX1FFTVUpKSkKKyQoZXZhbCAkKGNhbGwgYWRk
cGxhdGxpYixrdm1mYyxsaWJrdm1mY3BsYXQsJChDT05GSUdfS1ZNX1ZNTV9GSVJFQ1JBQ0tFUikp
KQorJChldmFsICQoY2FsbCBhZGRwbGF0bGliX3Msa3ZtcSxsaWJrdm1wY2ksJChDT05GSUdfS1ZN
X1BDSSkpKQorJChldmFsICQoY2FsbCBhZGRwbGF0bGliX3Msa3ZtcSxsaWJrdm12aXJ0aW8sJChD
T05GSUdfVklSVElPX0JVUykpKQorJChldmFsICQoY2FsbCBhZGRwbGF0bGliX3Msa3ZtZmMsbGli
a3ZtdmlydGlvLCQoQ09ORklHX1ZJUlRJT19CVVMpKSkKKyQoZXZhbCAkKGNhbGwgYWRkcGxhdGxp
Yl9zLGt2bXEsbGlia3ZtdmlydGlvbmV0LCQoQ09ORklHX1ZJUlRJT19ORVQpKSkKKyQoZXZhbCAk
KGNhbGwgYWRkcGxhdGxpYl9zLGt2bWZjLGxpYmt2bXZpcnRpb25ldCwkKENPTkZJR19WSVJUSU9f
TkVUKSkpCiAKICMjCiAjIyBQbGF0Zm9ybSBsaWJyYXJ5IGRlZmluaXRpb25zCkBAIC04MCw2ICs5
NSwyMyBAQCBMSUJLVk1QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0gJChVS19QTEFUX0NPTU1P
Tl9CQVNFKS9sY3B1LmN8Y29tbW9uCiBMSUJLVk1QTEFUX1NSQ1MteSAgICAgICAgICAgICAgKz0g
JChVS19QTEFUX0NPTU1PTl9CQVNFKS9tZW1vcnkuY3xjb21tb24KIExJQktWTVBMQVRfU1JDUy15
ICAgICAgICAgICAgICArPSAkKEtWTV9MRFNDUklQVF9TUkMteSkKIAoraWZlcSAoJChDT05GSUdf
S1ZNX1ZNTV9RRU1VKSx5KQorTElCS1ZNUVBMQVRfU1JDUy15ICAgICAgICA6PSAkKExJQktWTVBM
QVRfU1JDUy15KQorTElCS1ZNUVBMQVRfQVNJTkNMVURFUy15ICA6PSAkKExJQktWTVBMQVRfQVNJ
TkNMVURFUy15KQorTElCS1ZNUVBMQVRfQ0lOQ0xVREVTLXkgICA6PSAkKExJQktWTVBMQVRfQ0lO
Q0xVREVTLXkpCitMSUJLVk1RUExBVF9BU0ZMQUdTICAgICAgIDo9ICQoTElCS1ZNUExBVF9BU0ZM
QUdTKSAtREtWTVFQTEFUCitMSUJLVk1RUExBVF9DRkxBR1MgICAgICAgIDo9ICQoTElCS1ZNUExB
VF9DRkxBR1MpIC1ES1ZNUVBMQVQKK0xJQktWTVFQTEFUX0NYWEZMQUdTICAgICAgOj0gJChMSUJL
Vk1QTEFUX0NYWEZMQUdTKSAtREtWTVFQTEFUCitlbmRpZgoraWZlcSAoJChDT05GSUdfS1ZNX1ZN
TV9GSVJFQ1JBQ0tFUikseSkKK0xJQktWTUZDUExBVF9TUkNTLXkgICAgICAgIDo9ICQoTElCS1ZN
UExBVF9TUkNTLXkpCitMSUJLVk1GQ1BMQVRfQVNJTkNMVURFUy15ICA6PSAkKExJQktWTVBMQVRf
QVNJTkNMVURFUy15KQorTElCS1ZNRkNQTEFUX0NJTkNMVURFUy15ICAgOj0gJChMSUJLVk1QTEFU
X0NJTkNMVURFUy15KQorTElCS1ZNRkNQTEFUX0FTRkxBR1MgICAgICAgOj0gJChMSUJLVk1QTEFU
X0FTRkxBR1MpIC1ES1ZNRkNQTEFUCitMSUJLVk1GQ1BMQVRfQ0ZMQUdTICAgICAgICA6PSAkKExJ
QktWTVBMQVRfQ0ZMQUdTKSAtREtWTUZDUExBVAorTElCS1ZNRkNQTEFUX0NYWEZMQUdTICAgICAg
Oj0gJChMSUJLVk1QTEFUX0NYWEZMQUdTKSAtREtWTUZDUExBVAorZW5kaWYKKwogIyMKICMjIFBD
SSBsaWJyYXJ5IGRlZmluaXRpb25zCiAjIwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoOC-0002gO-3M; Mon, 03 Jun 2019 14:56: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoOA-0002fr-PZ
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:42 +0000
X-Inumbo-ID: ca104b04-860f-11e9-b42f-9f1c4eda1d7f
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ca104b04-860f-11e9-b42f-9f1c4eda1d7f;
 Mon, 03 Jun 2019 14:56:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 21D6E10528C;
 Mon,  3 Jun 2019 16:56:35 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GwVRM5MCTDMB; Mon,  3 Jun 2019 16:56:35 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0490B105230
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:35 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:34 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:06 +0200
Message-ID: <20190603145612.30206-4-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 3/9] plat/kvm: change entry point
 for x86
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGxpbmtlciBzY3JpcHQgc2V0IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGxpbmtlZCBFTEYg
dG8gdGhlIEMgZW50cnkKcG9pbnQuIFNvIGZhciwgdGhpcyBkaWRuJ3QgbWF0dGVyLCBiZWNhdXNl
IFFFTVUgYm9vdHMgdGhlIGltYWdlIHZpYQptdWx0aWJvb3QsIGlnbm9yaW5nIHRoZSBlbnRyeSBw
b2ludCBpbmZvcm1hdGlvbiBhbmQgaW5zdGVhZCBzZWFyY2hpbmcKZm9yIHRoZSBtdWx0aWJvb3Qg
aGVhZGVyIGluIHRoZSBmaXJzdCA4ayBvZiB0aGUgaW1hZ2UuIEZpcmVjcmFja2VyLApob3dldmVy
LCBkb2VzIG5vdCB1c2UgbXVsdGlib290IGFuZCBpZGVudGlmaWVzIHRoZSBlbnRyeSBmcm9tIHRo
ZSBFTEYKaGVhZGVyLiBTbyBzZXQgdGhlIGVudHJ5IHBvaW50IHRvIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGxvbmctbW9kZSBlYXJseQpib290IHNlcXVlbmNlLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlh
biBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL0xpbmtl
ci51ayAgICAgICAgfCAzICsrLQogcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyB8IDIgKy0KIDIg
ZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL3BsYXQva3ZtL0xpbmtlci51ayBiL3BsYXQva3ZtL0xpbmtlci51awppbmRleCBkNjhmOTA4
ZS4uOWJlNDA2MTIgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL0xpbmtlci51aworKysgYi9wbGF0L2t2
bS9MaW5rZXIudWsKQEAgLTI4LDcgKzI4LDggQEAgJChLVk1fSU1BR0UpOiAkKEtWTV9BTElCUykg
JChLVk1fQUxJQlMteSkgJChLVk1fT0xJQlMpICQoS1ZNX09MSUJTLXkpIFwKIAkJCS1XbCQoY29t
bWEpLS1lbmQtZ3JvdXAgXAogCQkJLW8gJEAubGQubykKIAkkKGNhbGwgYnVpbGRfY21kLE9CSkNP
UFksLCRALm8sXAotCSAgICAgICAkKE9CSkNPUFkpIC13IC1HIGt2bW9zXyogLUcgX2xpYmt2bXBs
YXRfZW50cnkgJEAubGQubyAkQC5vKQorCSAgICAgICAkKE9CSkNPUFkpIC13IC1HIGt2bW9zXyog
LUcgX2xpYmt2bXBsYXRfZW50cnkgXAorCQkJLUcgX2xpYmt2bXBsYXRfc3RhcnQ2NCAkQC5sZC5v
ICRALm8pCiBpZm5lcSAoJChmaWx0ZXIgeDg2XzY0IGFybTY0LCQoQ09ORklHX1VLX0FSQ0gpKSwp
CiAJJChjYWxsIGJ1aWxkX2NtZCxMRCwsJEAuZGJnLFwKIAkgICAgICAgJChMRCkgJChMREZMQUdT
KSAkKExERkxBR1MteSkgXApkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyBi
L3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKaW5kZXggMzYyYmEzZTYuLjE4MWNlNmFlIDEwMDY0
NAotLS0gYS9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCisrKyBiL3BsYXQva3ZtL3g4Ni9saW5r
NjQubGRzLlMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlIDx1ay9hcmNoL2xpbWl0cy5oPiAv
KiBmb3IgX19QQUdFX1NJWkUgKi8KICNpbmNsdWRlIDxjb21tb24ubGRzLmg+CiAKLUVOVFJZKF9s
aWJrdm1wbGF0X2VudHJ5KQorRU5UUlkoX2xpYmt2bXBsYXRfc3RhcnQ2NCkKIFNFQ1RJT05TCiB7
CiAJLiA9IDB4MTAwMDAwOwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoOD-0002gy-4r; Mon, 03 Jun 2019 14:56:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoOB-0002gI-MI
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:43 +0000
X-Inumbo-ID: cbcd6052-860f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cbcd6052-860f-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 14:56:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3D88D10527D;
 Mon,  3 Jun 2019 16:56:38 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id aPORHb4OZp0c; Mon,  3 Jun 2019 16:56:38 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 1A15A105230
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:38 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:37 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:08 +0200
Message-ID: <20190603145612.30206-6-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 5/9] plat/kvm: make multiboot one
 VMM info option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 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>

VGhlIFZNTSBpbmZvIGlzIHRoZSB3YXkgYnkgd2hpY2ggdGhlIGh5cGVydmlzb3IgcHJvdmlkZXMg
aW1wb3J0YW50CmJvb3QtdGltZSBpbmZvcm1hdGlvbiB0aGF0IHdvdWxkIG90aGVyd2lzZSBjb21l
IGJ5IHRoZSBCSU9TICh3aGVyZSBpcyBteQpjb2RlPyBIb3cgbXVjaCBtZW1vcnkgaXMgdGhlcmUs
IGFuZCBhdCB3aGljaCBwaHlzaWNhbCBhZGRyZXNzZXM/KS4KQXQgdGhlIG1vbWVudCwgbXVsdGli
b290IGlzIHRoZSBvbmx5IG9wdGlvbiwgYnV0IEZpcmVjcmFja2VyIHdpbGwgdXNlIGEKTGludXgt
c3R5bGUgYm9vdHBhcmFtcyBwYWdlIGluc3RlYWQgb2YgdGhlIG11bHRpYm9vdCBpbmZvIHN0cnVj
dC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4KLS0tCiBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvX211bHRpYm9vdC5oIHwgMjQzICsr
KysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvdm1taW5m
by5oICAgIHwgIDQ4ICsrKysrCiBwbGF0L2t2bS94ODYvc2V0dXAuYyAgICAgICAgICAgICAgICAg
IHwgMjI3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyOTQgaW5z
ZXJ0aW9ucygrKSwgMjI0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQva3Zt
L2luY2x1ZGUva3ZtLXg4Ni9fbXVsdGlib290LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2t2
bS9pbmNsdWRlL2t2bS14ODYvdm1taW5mby5oCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vaW5jbHVk
ZS9rdm0teDg2L19tdWx0aWJvb3QuaCBiL3BsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9fbXVsdGli
b290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmIxY2NkNzk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvcGxhdC9rdm0vaW5jbHVkZS9rdm0teDg2L19tdWx0aWJvb3QuaApAQCAt
MCwwICsxLDI0MyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQyAqLworLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxNS0yMDE3IElCTQorICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMTcg
RG9ja2VyLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcgTkVDIEV1cm9wZSBMdGQuLCBORUMg
Q29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQv
b3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCisgKiBmb3IgYW55IHB1cnBvc2Ugd2l0aCBvciB3
aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQKKyAqIHRoYXQgdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyCisgKiBp
biBhbGwgY29waWVzLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFO
RCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwKKyAqIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8g
VEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhP
UiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZS
T00gTE9TUworICogT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULAorICogTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFS
SVNJTkcgT1VUIE9GIE9SIElOCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JN
QU5DRSBPRiBUSElTIFNPRlRXQVJFLgorICovCisKKworI2lmbmRlZiBLVk1fVk1NSU5GT19ICisj
ZXJyb3IgRG8gbm90IGluY2x1ZGUgX211bHRpYm9vdC5oIGRpcmVjdGx5IQorI2VuZGlmCisKKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1ay9wcmludC5oPgorI2luY2x1ZGUgPHVrL3Bs
YXQvY29uZmlnLmg+CisjaW5jbHVkZSA8a3ZtL2NvbmZpZy5oPgorCitzdGF0aWMgaW5saW5lIHZv
aWQgX21iX2dldF9jbWRsaW5lKHN0cnVjdCBtdWx0aWJvb3RfaW5mbyAqbWkpCit7CisJY2hhciAq
bWlfY21kbGluZTsKKworCWlmIChtaS0+ZmxhZ3MgJiBNVUxUSUJPT1RfSU5GT19DTURMSU5FKSB7
CisJCW1pX2NtZGxpbmUgPSAoY2hhciAqKShfX3U2NCltaS0+Y21kbGluZTsKKworCQlpZiAoc3Ry
bGVuKG1pX2NtZGxpbmUpID4gc2l6ZW9mKGNtZGxpbmUpIC0gMSkKKwkJCXVrX3ByX2VycigiQ29t
bWFuZCBsaW5lIHRvbyBsb25nLCB0cnVuY2F0ZWRcbiIpOworCQlzdHJuY3B5KGNtZGxpbmUsIG1p
X2NtZGxpbmUsCisJCQlzaXplb2YoY21kbGluZSkpOworCX0gZWxzZSB7CisJCS8qIFVzZSBpbWFn
ZSBuYW1lIGFzIGNtZGxpbmUgdG8gcHJvdmlkZSBhcmd2WzBdICovCisJCXVrX3ByX2RlYnVnKCJO
byBjb21tYW5kIGxpbmUgcHJlc2VudFxuIik7CisJCXN0cm5jcHkoY21kbGluZSwgQ09ORklHX1VL
X05BTUUsIHNpemVvZihjbWRsaW5lKSk7CisJfQorCisJLyogZW5zdXJlIG51bGwgdGVybWluYXRp
b24gKi8KKwljbWRsaW5lWyhzaXplb2YoY21kbGluZSkgLSAxKV0gPSAnXDAnOworfQorCitzdGF0
aWMgaW5saW5lIHZvaWQgX21iX2luaXRfbWVtKHN0cnVjdCBtdWx0aWJvb3RfaW5mbyAqbWkpCit7
CisJbXVsdGlib290X21lbW9yeV9tYXBfdCAqbTsKKwlzaXplX3Qgb2Zmc2V0LCBtYXhfYWRkcjsK
KworCS8qCisJICogTG9vayBmb3IgdGhlIGZpcnN0IGNodW5rIG9mIG1lbW9yeSBhdCBQTEFURk9S
TV9NRU1fU1RBUlQuCisJICovCisJZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBtaS0+bW1hcF9s
ZW5ndGg7CisJICAgICBvZmZzZXQgKz0gbS0+c2l6ZSArIHNpemVvZihtLT5zaXplKSkgeworCQlt
ID0gKHZvaWQgKikoX191cHRyKShtaS0+bW1hcF9hZGRyICsgb2Zmc2V0KTsKKwkJaWYgKG0tPmFk
ZHIgPT0gUExBVEZPUk1fTUVNX1NUQVJUCisJCSAgICAmJiBtLT50eXBlID09IE1VTFRJQk9PVF9N
RU1PUllfQVZBSUxBQkxFKSB7CisJCQlicmVhazsKKwkJfQorCX0KKwlVS19BU1NFUlQob2Zmc2V0
IDwgbWktPm1tYXBfbGVuZ3RoKTsKKworCS8qCisJICogQ2FwIG91ciBtZW1vcnkgc2l6ZSB0byBQ
TEFURk9STV9NQVhfTUVNX1NJWkUgd2hpY2ggYm9vdC5TIGRlZmluZXMKKwkgKiBwYWdlIHRhYmxl
cyBmb3IuCisJICovCisJbWF4X2FkZHIgPSBtLT5hZGRyICsgbS0+bGVuOworCWlmIChtYXhfYWRk
ciA+IFBMQVRGT1JNX01BWF9NRU1fQUREUikKKwkJbWF4X2FkZHIgPSBQTEFURk9STV9NQVhfTUVN
X0FERFI7CisJVUtfQVNTRVJUKChzaXplX3QpIF9fRU5EIDw9IG1heF9hZGRyKTsKKworCS8qCisJ
ICogUmVzZXJ2ZSBzcGFjZSBmb3IgYm9vdCBzdGFjayBhdCB0aGUgZW5kIG9mIGZvdW5kIG1lbW9y
eQorCSAqLworCWlmICgobWF4X2FkZHIgLSBtLT5hZGRyKSA8IF9fU1RBQ0tfU0laRSkKKwkJVUtf
Q1JBU0goIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGJvb3Qgc3RhY2tcbiIpOworCisJ
X2xpYmt2bXBsYXRfY2ZnLmhlYXAuc3RhcnQgPSBBTElHTl9VUCgodWludHB0cl90KSBfX0VORCwg
X19QQUdFX1NJWkUpOworCV9saWJrdm1wbGF0X2NmZy5oZWFwLmVuZCAgID0gKHVpbnRwdHJfdCkg
bWF4X2FkZHIgLSBfX1NUQUNLX1NJWkU7CisJX2xpYmt2bXBsYXRfY2ZnLmhlYXAubGVuICAgPSBf
bGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQKKwkJCQkgICAgIC0gX2xpYmt2bXBsYXRfY2ZnLmhlYXAu
c3RhcnQ7CisJX2xpYmt2bXBsYXRfY2ZnLmJzdGFjay5zdGFydCA9IF9saWJrdm1wbGF0X2NmZy5o
ZWFwLmVuZDsKKwlfbGlia3ZtcGxhdF9jZmcuYnN0YWNrLmVuZCAgID0gbWF4X2FkZHI7CisJX2xp
Ymt2bXBsYXRfY2ZnLmJzdGFjay5sZW4gICA9IF9fU1RBQ0tfU0laRTsKK30KKworc3RhdGljIGlu
bGluZSB2b2lkIF9tYl9pbml0X2luaXRyZChzdHJ1Y3QgbXVsdGlib290X2luZm8gKm1pKQorewor
CW11bHRpYm9vdF9tb2R1bGVfdCAqbW9kMTsKKwl1aW50cHRyX3QgaGVhcDBfc3RhcnQsIGhlYXAw
X2VuZDsKKwl1aW50cHRyX3QgaGVhcDFfc3RhcnQsIGhlYXAxX2VuZDsKKwlzaXplX3QgICAgaGVh
cDBfbGVuLCAgIGhlYXAxX2xlbjsKKworCS8qCisJICogU2VhcmNoIGZvciBpbml0cmQgKGNhbGxl
ZCBib290IG1vZHVsZSBhY2NvcmRpbmcgbXVsdGlib290KQorCSAqLworCWlmIChtaS0+bW9kc19j
b3VudCA9PSAwKSB7CisJCXVrX3ByX2RlYnVnKCJObyBpbml0cmQgcHJlc2VudFxuIik7CisJCWdv
dG8gbm9faW5pdHJkOworCX0KKworCS8qCisJICogTk9URTogV2UgYXJlIG9ubHkgdGFraW5nIHRo
ZSBmaXJzdCBib290IG1vZHVsZSBhcyBpbml0cmQuCisJICogICAgICAgSW5pdHJkIGFyZ3VtZW50
cyBhbmQgZnVydGhlciBtb2R1bGVzIGFyZSBpZ25vcmVkLgorCSAqLworCVVLX0FTU0VSVChtaS0+
bW9kc19hZGRyKTsKKworCW1vZDEgPSAobXVsdGlib290X21vZHVsZV90ICopKCh1aW50cHRyX3Qp
IG1pLT5tb2RzX2FkZHIpOworCVVLX0FTU0VSVChtb2QxLT5tb2RfZW5kID49IG1vZDEtPm1vZF9z
dGFydCk7CisKKwlpZiAobW9kMS0+bW9kX2VuZCA9PSBtb2QxLT5tb2Rfc3RhcnQpIHsKKwkJdWtf
cHJfZGVidWcoIklnbm9yaW5nIGVtcHR5IGluaXRyZFxuIik7CisJCWdvdG8gbm9faW5pdHJkOwor
CX0KKworCV9saWJrdm1wbGF0X2NmZy5pbml0cmQuc3RhcnQgPSAodWludHB0cl90KSBtb2QxLT5t
b2Rfc3RhcnQ7CisJX2xpYmt2bXBsYXRfY2ZnLmluaXRyZC5lbmQgPSAodWludHB0cl90KSBtb2Qx
LT5tb2RfZW5kOworCV9saWJrdm1wbGF0X2NmZy5pbml0cmQubGVuID0gKHNpemVfdCkgKG1vZDEt
Pm1vZF9lbmQgLSBtb2QxLT5tb2Rfc3RhcnQpOworCisJLyoKKwkgKiBDaGVjayBpZiBpbml0cmQg
aXMgcGFydCBvZiBoZWFwCisJICogSW4gc3VjaCBhIGNhc2UsIHdlIGZpZ3VyZSBvdXQgdGhlIHJl
bWFpbmluZyBwaWVjZXMgYXMgaGVhcAorCSAqLworCWlmIChfbGlia3ZtcGxhdF9jZmcuaGVhcC5s
ZW4gPT0gMCkgeworCQkvKiBXZSBkbyBub3QgaGF2ZSBhIGhlYXAgKi8KKwkJZ290byBvdXQ7CisJ
fQorCWhlYXAwX3N0YXJ0ID0gMDsKKwloZWFwMF9lbmQgICA9IDA7CisJaGVhcDFfc3RhcnQgPSAw
OworCWhlYXAxX2VuZCAgID0gMDsKKwlpZiAoUkFOR0VfT1ZFUkxBUChfbGlia3ZtcGxhdF9jZmcu
aGVhcC5zdGFydCwKKwkJCSAgX2xpYmt2bXBsYXRfY2ZnLmhlYXAubGVuLAorCQkJICBfbGlia3Zt
cGxhdF9jZmcuaW5pdHJkLnN0YXJ0LAorCQkJICBfbGlia3ZtcGxhdF9jZmcuaW5pdHJkLmxlbikp
IHsKKwkJaWYgKElOX1JBTkdFKF9saWJrdm1wbGF0X2NmZy5pbml0cmQuc3RhcnQsCisJCQkgICAg
IF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0LAorCQkJICAgICBfbGlia3ZtcGxhdF9jZmcuaGVh
cC5sZW4pKSB7CisJCQkvKiBTdGFydCBvZiBpbml0cmQgd2l0aGluIGhlYXAgcmFuZ2U7CisJCQkg
KiBVc2UgdGhlIHByZXBlbmRpbmcgbGVmdCBwaWVjZSBhcyBoZWFwICovCisJCQloZWFwMF9zdGFy
dCA9IF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0OworCQkJaGVhcDBfZW5kICAgPSBBTElHTl9E
T1dOKF9saWJrdm1wbGF0X2NmZy5pbml0cmQuc3RhcnQsCisJCQkJCQkgX19QQUdFX1NJWkUpOwor
CQl9CisJCWlmIChJTl9SQU5HRShfbGlia3ZtcGxhdF9jZmcuaW5pdHJkLnN0YXJ0LAorCisJCQkg
ICAgIF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0LAorCQkJICAgICBfbGlia3ZtcGxhdF9jZmcu
aGVhcC5sZW4pKSB7CisJCQkvKiBFbmQgb2YgaW5pdHJkIHdpdGhpbiBoZWFwIHJhbmdlOworCQkJ
ICogVXNlIHRoZSByZW1haW5pbmcgbGVmdCBwaWVjZSBhcyBoZWFwICovCisJCQloZWFwMV9zdGFy
dCA9IEFMSUdOX1VQKF9saWJrdm1wbGF0X2NmZy5pbml0cmQuZW5kLAorCQkJCQkgICAgICAgX19Q
QUdFX1NJWkUpOworCQkJaGVhcDFfZW5kICAgPSBfbGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQ7CisJ
CX0KKwl9IGVsc2UgeworCQkvKiBJbml0cmQgaXMgbm90IG92ZXJsYXBwaW5nIHdpdGggaGVhcCAq
LworCQloZWFwMF9zdGFydCA9IF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0OworCQloZWFwMF9l
bmQgICA9IF9saWJrdm1wbGF0X2NmZy5oZWFwLmVuZDsKKwl9CisJaGVhcDBfbGVuID0gaGVhcDBf
ZW5kIC0gaGVhcDBfc3RhcnQ7CisJaGVhcDFfbGVuID0gaGVhcDFfZW5kIC0gaGVhcDFfc3RhcnQ7
CisKKwkvKgorCSAqIFVwZGF0ZSBoZWFwIHJlZ2lvbnMKKwkgKiBXZSBtYWtlIHN1cmUgdGhhdCBp
biB3ZSBzdGFydCBmaWxsaW5nIGxlZnQgaGVhcCBwaWVjZXMgYXQKKwkgKiBgX2xpYmt2bXBsYXRf
Y2ZnLmhlYXBgLiBBbnkgYWRkaXRpb25hbCBwaWVjZSB3aWxsIHRoZW4gYmUKKwkgKiBwbGFjZWQg
dG8gYF9saWJrdm1wbGF0X2NmZy5oZWFwMmAuCisJICovCisJaWYgKGhlYXAwX2xlbiA9PSAwKSB7
CisJCS8qIEhlYXAgcGllY2UgMCBpcyBlbXB0eSwgdXNlIHBpZWNlIDEgYXMgb25seSAqLworCQlp
ZiAoaGVhcDFfbGVuICE9IDApIHsKKwkJCV9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0ID0gaGVh
cDFfc3RhcnQ7CisJCQlfbGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQgICA9IGhlYXAxX2VuZDsKKwkJ
CV9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiAgID0gaGVhcDFfbGVuOworCQl9IGVsc2UgeworCQkJ
X2xpYmt2bXBsYXRfY2ZnLmhlYXAuc3RhcnQgPSAwOworCQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAu
ZW5kICAgPSAwOworCQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAubGVuICAgPSAwOworCQl9CisJCSBf
bGlia3ZtcGxhdF9jZmcuaGVhcDIuc3RhcnQgPSAwOworCQkgX2xpYmt2bXBsYXRfY2ZnLmhlYXAy
LmVuZCAgID0gMDsKKwkJIF9saWJrdm1wbGF0X2NmZy5oZWFwMi5sZW4gICA9IDA7CisJfSBlbHNl
IHsKKwkJLyogSGVhcCBwaWVjZSAwIGhhcyBtZW1vcnkgKi8KKwkJX2xpYmt2bXBsYXRfY2ZnLmhl
YXAuc3RhcnQgPSBoZWFwMF9zdGFydDsKKwkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAuZW5kICAgPSBo
ZWFwMF9lbmQ7CisJCV9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiAgID0gaGVhcDBfbGVuOworCQlp
ZiAoaGVhcDFfbGVuICE9IDApIHsKKwkJCV9saWJrdm1wbGF0X2NmZy5oZWFwMi5zdGFydCA9IGhl
YXAxX3N0YXJ0OworCQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAyLmVuZCAgID0gaGVhcDFfZW5kOwor
CQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAyLmxlbiAgID0gaGVhcDFfbGVuOworCQl9IGVsc2Ugewor
CQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAyLnN0YXJ0ID0gMDsKKwkJCV9saWJrdm1wbGF0X2NmZy5o
ZWFwMi5lbmQgICA9IDA7CisJCQlfbGlia3ZtcGxhdF9jZmcuaGVhcDIubGVuICAgPSAwOworCQl9
CisJfQorCisJLyoKKwkgKiBEb3VibGUtY2hlY2sgdGhhdCBpbml0cmQgaXMgbm90IG92ZXJsYXBw
aW5nIHdpdGggcHJldmlvdXNseSBhbGxvY2F0ZWQKKwkgKiBib290IHN0YWNrLiBXZSBjcmFzaCBp
biBzdWNoIGEgY2FzZSBiZWNhdXNlIHdlIGFzc3VtZSB0aGF0IG11bHRpYm9vdAorCSAqIHBsYWNl
cyB0aGUgaW5pdHJkIGNsb3NlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhlYXAgcmVnaW9uLiBP
bmUgbmVlZAorCSAqIHRvIGFzc2lnbiBqdXN0IG1vcmUgbWVtb3J5IGluIG9yZGVyIHRvIGF2b2lk
IHRoaXMgY3Jhc2guCisJICovCisJaWYgKFJBTkdFX09WRVJMQVAoX2xpYmt2bXBsYXRfY2ZnLmhl
YXAuc3RhcnQsCisJCQkgIF9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiwKKwkJCSAgX2xpYmt2bXBs
YXRfY2ZnLmluaXRyZC5zdGFydCwKKwkJCSAgX2xpYmt2bXBsYXRfY2ZnLmluaXRyZC5sZW4pKQor
CQlVS19DUkFTSCgiTm90IGVub3VnaCBzcGFjZSBhdCBlbmQgb2YgbWVtb3J5IGZvciBib290IHN0
YWNrXG4iKTsKK291dDoKKwlyZXR1cm47CisKK25vX2luaXRyZDoKKwlfbGlia3ZtcGxhdF9jZmcu
aW5pdHJkLnN0YXJ0ID0gMDsKKwlfbGlia3ZtcGxhdF9jZmcuaW5pdHJkLmVuZCAgID0gMDsKKwlf
bGlia3ZtcGxhdF9jZmcuaW5pdHJkLmxlbiAgID0gMDsKKwlfbGlia3ZtcGxhdF9jZmcuaGVhcDIu
c3RhcnQgID0gMDsKKwlfbGlia3ZtcGxhdF9jZmcuaGVhcDIuZW5kICAgID0gMDsKKwlfbGlia3Zt
cGxhdF9jZmcuaGVhcDIubGVuICAgID0gMDsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbmxpbmUg
dm9pZCBwcm9jZXNzX3ZtbWluZm8odm9pZCAqYXJnKQoreworCXN0cnVjdCBtdWx0aWJvb3RfaW5m
byAqbWkgPSAoc3RydWN0IG11bHRpYm9vdF9pbmZvICopYXJnOworCisJLyoKKwkgKiBUaGUgbXVs
dGlib290IHN0cnVjdHVyZXMgbWF5IGJlIGFueXdoZXJlIGluIG1lbW9yeSwgc28gdGFrZSBhIGNv
cHkgb2YKKwkgKiBldmVyeXRoaW5nIG5lY2Vzc2FyeSBiZWZvcmUgd2UgaW5pdGlhbGlzZSBtZW1v
cnkgYWxsb2NhdGlvbi4KKwkgKi8KKwl1a19wcl9pbmZvKCIgICAgIG11bHRpYm9vdDogJXBcbiIs
IG1pKTsKKwlfbWJfZ2V0X2NtZGxpbmUobWkpOworCV9tYl9pbml0X21lbShtaSk7CisJX21iX2lu
aXRfaW5pdHJkKG1pKTsKK30KZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni92
bW1pbmZvLmggYi9wbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvdm1taW5mby5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4zYmM4NmJlZgotLS0gL2Rldi9udWxsCisrKyBiL3Bs
YXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni92bW1pbmZvLmgKQEAgLTAsMCArMSw0OCBAQAorLyogU1BE
WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xk
ZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuCisgKi8KKworI2lmbmRlZiBLVk1fVk1NSU5GT19ICisjZGVmaW5lIEtWTV9WTU1JTkZP
X0gKKworI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorCisjZGVmaW5lIFBMQVRGT1JNX01FTV9TVEFS
VCAweDEwMDAwMAorI2RlZmluZSBQTEFURk9STV9NQVhfTUVNX0FERFIgMHg0MDAwMDAwMAorCisj
ZGVmaW5lIE1BWF9DTURMSU5FX1NJWkUgODE5Mgorc3RhdGljIGNoYXIgY21kbGluZVtNQVhfQ01E
TElORV9TSVpFXTsKKworI2luY2x1ZGUgPGt2bS14ODYvbXVsdGlib290Lmg+CisjaW5jbHVkZSA8
a3ZtLXg4Ni9tdWx0aWJvb3RfZGVmcy5oPgorI2luY2x1ZGUgPGt2bS14ODYvX211bHRpYm9vdC5o
PgorCisjZW5kaWYgLyogS1ZNX1ZNTUlORk9fSCAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2
L3NldHVwLmMgYi9wbGF0L2t2bS94ODYvc2V0dXAuYwppbmRleCBlNGJlY2FhYS4uNThhY2RkYTUg
MTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL3g4Ni9zZXR1cC5jCisrKyBiL3BsYXQva3ZtL3g4Ni9zZXR1
cC5jCkBAIC0yNiwyMzEgKzI2LDE5IEBACiAgKiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQ
RVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICovCiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4K
ICNpbmNsdWRlIDxzZWN0aW9ucy5oPgogI2luY2x1ZGUgPHg4Ni9jcHUuaD4KICNpbmNsdWRlIDx4
ODYvdHJhcHMuaD4KLSNpbmNsdWRlIDxrdm0vY29uZmlnLmg+CiAjaW5jbHVkZSA8a3ZtL2NvbnNv
bGUuaD4KICNpbmNsdWRlIDxrdm0vaW50Y3RybC5oPgotI2luY2x1ZGUgPGt2bS14ODYvbXVsdGli
b290Lmg+Ci0jaW5jbHVkZSA8a3ZtLXg4Ni9tdWx0aWJvb3RfZGVmcy5oPgotI2luY2x1ZGUgPHVr
L2FyY2gvbGltaXRzLmg+Ci0jaW5jbHVkZSA8dWsvYXJjaC90eXBlcy5oPgotI2luY2x1ZGUgPHVr
L3BsYXQvY29uc29sZS5oPgotI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgotI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4KLQotI2RlZmluZSBQTEFURk9STV9NRU1fU1RBUlQgMHgxMDAwMDAKLSNkZWZp
bmUgUExBVEZPUk1fTUFYX01FTV9BRERSIDB4NDAwMDAwMDAKLQotI2RlZmluZSBNQVhfQ01ETElO
RV9TSVpFIDgxOTIKLXN0YXRpYyBjaGFyIGNtZGxpbmVbTUFYX0NNRExJTkVfU0laRV07CisjaW5j
bHVkZSA8a3ZtLXg4Ni92bW1pbmZvLmg+CisjaW5jbHVkZSA8dWsvcHJpbnQuaD4KIAogc3RydWN0
IGt2bXBsYXRfY29uZmlnIF9saWJrdm1wbGF0X2NmZyA9IHsgMCB9OwogCiBleHRlcm4gdm9pZCBf
bGlia3ZtcGxhdF9uZXdzdGFjayh1aW50cHRyX3Qgc3RhY2tfc3RhcnQsIHZvaWQgKCp0cmFtcCko
dm9pZCAqKSwKIAkJCQkgdm9pZCAqYXJnKTsKIAotc3RhdGljIGlubGluZSB2b2lkIF9tYl9nZXRf
Y21kbGluZShzdHJ1Y3QgbXVsdGlib290X2luZm8gKm1pKQotewotCWNoYXIgKm1pX2NtZGxpbmU7
Ci0KLQlpZiAobWktPmZsYWdzICYgTVVMVElCT09UX0lORk9fQ01ETElORSkgewotCQltaV9jbWRs
aW5lID0gKGNoYXIgKikoX191NjQpbWktPmNtZGxpbmU7Ci0KLQkJaWYgKHN0cmxlbihtaV9jbWRs
aW5lKSA+IHNpemVvZihjbWRsaW5lKSAtIDEpCi0JCQl1a19wcl9lcnIoIkNvbW1hbmQgbGluZSB0
b28gbG9uZywgdHJ1bmNhdGVkXG4iKTsKLQkJc3RybmNweShjbWRsaW5lLCBtaV9jbWRsaW5lLAot
CQkJc2l6ZW9mKGNtZGxpbmUpKTsKLQl9IGVsc2UgewotCQkvKiBVc2UgaW1hZ2UgbmFtZSBhcyBj
bWRsaW5lIHRvIHByb3ZpZGUgYXJndlswXSAqLwotCQl1a19wcl9kZWJ1ZygiTm8gY29tbWFuZCBs
aW5lIHByZXNlbnRcbiIpOwotCQlzdHJuY3B5KGNtZGxpbmUsIENPTkZJR19VS19OQU1FLCBzaXpl
b2YoY21kbGluZSkpOwotCX0KLQotCS8qIGVuc3VyZSBudWxsIHRlcm1pbmF0aW9uICovCi0JY21k
bGluZVsoc2l6ZW9mKGNtZGxpbmUpIC0gMSldID0gJ1wwJzsKLX0KLQotc3RhdGljIGlubGluZSB2
b2lkIF9tYl9pbml0X21lbShzdHJ1Y3QgbXVsdGlib290X2luZm8gKm1pKQotewotCW11bHRpYm9v
dF9tZW1vcnlfbWFwX3QgKm07Ci0Jc2l6ZV90IG9mZnNldCwgbWF4X2FkZHI7Ci0KLQkvKgotCSAq
IExvb2sgZm9yIHRoZSBmaXJzdCBjaHVuayBvZiBtZW1vcnkgYXQgUExBVEZPUk1fTUVNX1NUQVJU
LgotCSAqLwotCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbWktPm1tYXBfbGVuZ3RoOwotCSAg
ICAgb2Zmc2V0ICs9IG0tPnNpemUgKyBzaXplb2YobS0+c2l6ZSkpIHsKLQkJbSA9ICh2b2lkICop
KF9fdXB0cikobWktPm1tYXBfYWRkciArIG9mZnNldCk7Ci0JCWlmIChtLT5hZGRyID09IFBMQVRG
T1JNX01FTV9TVEFSVAotCQkgICAgJiYgbS0+dHlwZSA9PSBNVUxUSUJPT1RfTUVNT1JZX0FWQUlM
QUJMRSkgewotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0JVUtfQVNTRVJUKG9mZnNldCA8IG1pLT5tbWFw
X2xlbmd0aCk7Ci0KLQkvKgotCSAqIENhcCBvdXIgbWVtb3J5IHNpemUgdG8gUExBVEZPUk1fTUFY
X01FTV9TSVpFIHdoaWNoIGJvb3QuUyBkZWZpbmVzCi0JICogcGFnZSB0YWJsZXMgZm9yLgotCSAq
LwotCW1heF9hZGRyID0gbS0+YWRkciArIG0tPmxlbjsKLQlpZiAobWF4X2FkZHIgPiBQTEFURk9S
TV9NQVhfTUVNX0FERFIpCi0JCW1heF9hZGRyID0gUExBVEZPUk1fTUFYX01FTV9BRERSOwotCVVL
X0FTU0VSVCgoc2l6ZV90KSBfX0VORCA8PSBtYXhfYWRkcik7Ci0KLQkvKgotCSAqIFJlc2VydmUg
c3BhY2UgZm9yIGJvb3Qgc3RhY2sgYXQgdGhlIGVuZCBvZiBmb3VuZCBtZW1vcnkKLQkgKi8KLQlp
ZiAoKG1heF9hZGRyIC0gbS0+YWRkcikgPCBfX1NUQUNLX1NJWkUpCi0JCVVLX0NSQVNIKCJOb3Qg
ZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBib290IHN0YWNrXG4iKTsKLQotCV9saWJrdm1wbGF0
X2NmZy5oZWFwLnN0YXJ0ID0gQUxJR05fVVAoKHVpbnRwdHJfdCkgX19FTkQsIF9fUEFHRV9TSVpF
KTsKLQlfbGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQgICA9ICh1aW50cHRyX3QpIG1heF9hZGRyIC0g
X19TVEFDS19TSVpFOwotCV9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiAgID0gX2xpYmt2bXBsYXRf
Y2ZnLmhlYXAuZW5kCi0JCQkJICAgICAtIF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0OwotCV9s
aWJrdm1wbGF0X2NmZy5ic3RhY2suc3RhcnQgPSBfbGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQ7Ci0J
X2xpYmt2bXBsYXRfY2ZnLmJzdGFjay5lbmQgICA9IG1heF9hZGRyOwotCV9saWJrdm1wbGF0X2Nm
Zy5ic3RhY2subGVuICAgPSBfX1NUQUNLX1NJWkU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBf
bWJfaW5pdF9pbml0cmQoc3RydWN0IG11bHRpYm9vdF9pbmZvICptaSkKLXsKLQltdWx0aWJvb3Rf
bW9kdWxlX3QgKm1vZDE7Ci0JdWludHB0cl90IGhlYXAwX3N0YXJ0LCBoZWFwMF9lbmQ7Ci0JdWlu
dHB0cl90IGhlYXAxX3N0YXJ0LCBoZWFwMV9lbmQ7Ci0Jc2l6ZV90ICAgIGhlYXAwX2xlbiwgICBo
ZWFwMV9sZW47Ci0KLQkvKgotCSAqIFNlYXJjaCBmb3IgaW5pdHJkIChjYWxsZWQgYm9vdCBtb2R1
bGUgYWNjb3JkaW5nIG11bHRpYm9vdCkKLQkgKi8KLQlpZiAobWktPm1vZHNfY291bnQgPT0gMCkg
ewotCQl1a19wcl9kZWJ1ZygiTm8gaW5pdHJkIHByZXNlbnRcbiIpOwotCQlnb3RvIG5vX2luaXRy
ZDsKLQl9Ci0KLQkvKgotCSAqIE5PVEU6IFdlIGFyZSBvbmx5IHRha2luZyB0aGUgZmlyc3QgYm9v
dCBtb2R1bGUgYXMgaW5pdHJkLgotCSAqICAgICAgIEluaXRyZCBhcmd1bWVudHMgYW5kIGZ1cnRo
ZXIgbW9kdWxlcyBhcmUgaWdub3JlZC4KLQkgKi8KLQlVS19BU1NFUlQobWktPm1vZHNfYWRkcik7
Ci0KLQltb2QxID0gKG11bHRpYm9vdF9tb2R1bGVfdCAqKSgodWludHB0cl90KSBtaS0+bW9kc19h
ZGRyKTsKLQlVS19BU1NFUlQobW9kMS0+bW9kX2VuZCA+PSBtb2QxLT5tb2Rfc3RhcnQpOwotCi0J
aWYgKG1vZDEtPm1vZF9lbmQgPT0gbW9kMS0+bW9kX3N0YXJ0KSB7Ci0JCXVrX3ByX2RlYnVnKCJJ
Z25vcmluZyBlbXB0eSBpbml0cmRcbiIpOwotCQlnb3RvIG5vX2luaXRyZDsKLQl9Ci0KLQlfbGli
a3ZtcGxhdF9jZmcuaW5pdHJkLnN0YXJ0ID0gKHVpbnRwdHJfdCkgbW9kMS0+bW9kX3N0YXJ0Owot
CV9saWJrdm1wbGF0X2NmZy5pbml0cmQuZW5kID0gKHVpbnRwdHJfdCkgbW9kMS0+bW9kX2VuZDsK
LQlfbGlia3ZtcGxhdF9jZmcuaW5pdHJkLmxlbiA9IChzaXplX3QpIChtb2QxLT5tb2RfZW5kIC0g
bW9kMS0+bW9kX3N0YXJ0KTsKLQotCS8qCi0JICogQ2hlY2sgaWYgaW5pdHJkIGlzIHBhcnQgb2Yg
aGVhcAotCSAqIEluIHN1Y2ggYSBjYXNlLCB3ZSBmaWd1cmUgb3V0IHRoZSByZW1haW5pbmcgcGll
Y2VzIGFzIGhlYXAKLQkgKi8KLQlpZiAoX2xpYmt2bXBsYXRfY2ZnLmhlYXAubGVuID09IDApIHsK
LQkJLyogV2UgZG8gbm90IGhhdmUgYSBoZWFwICovCi0JCWdvdG8gb3V0OwotCX0KLQloZWFwMF9z
dGFydCA9IDA7Ci0JaGVhcDBfZW5kICAgPSAwOwotCWhlYXAxX3N0YXJ0ID0gMDsKLQloZWFwMV9l
bmQgICA9IDA7Ci0JaWYgKFJBTkdFX09WRVJMQVAoX2xpYmt2bXBsYXRfY2ZnLmhlYXAuc3RhcnQs
Ci0JCQkgIF9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiwKLQkJCSAgX2xpYmt2bXBsYXRfY2ZnLmlu
aXRyZC5zdGFydCwKLQkJCSAgX2xpYmt2bXBsYXRfY2ZnLmluaXRyZC5sZW4pKSB7Ci0JCWlmIChJ
Tl9SQU5HRShfbGlia3ZtcGxhdF9jZmcuaW5pdHJkLnN0YXJ0LAotCQkJICAgICBfbGlia3ZtcGxh
dF9jZmcuaGVhcC5zdGFydCwKLQkJCSAgICAgX2xpYmt2bXBsYXRfY2ZnLmhlYXAubGVuKSkgewot
CQkJLyogU3RhcnQgb2YgaW5pdHJkIHdpdGhpbiBoZWFwIHJhbmdlOwotCQkJICogVXNlIHRoZSBw
cmVwZW5kaW5nIGxlZnQgcGllY2UgYXMgaGVhcCAqLwotCQkJaGVhcDBfc3RhcnQgPSBfbGlia3Zt
cGxhdF9jZmcuaGVhcC5zdGFydDsKLQkJCWhlYXAwX2VuZCAgID0gQUxJR05fRE9XTihfbGlia3Zt
cGxhdF9jZmcuaW5pdHJkLnN0YXJ0LAotCQkJCQkJIF9fUEFHRV9TSVpFKTsKLQkJfQotCQlpZiAo
SU5fUkFOR0UoX2xpYmt2bXBsYXRfY2ZnLmluaXRyZC5zdGFydCwKLQotCQkJICAgICBfbGlia3Zt
cGxhdF9jZmcuaGVhcC5zdGFydCwKLQkJCSAgICAgX2xpYmt2bXBsYXRfY2ZnLmhlYXAubGVuKSkg
ewotCQkJLyogRW5kIG9mIGluaXRyZCB3aXRoaW4gaGVhcCByYW5nZTsKLQkJCSAqIFVzZSB0aGUg
cmVtYWluaW5nIGxlZnQgcGllY2UgYXMgaGVhcCAqLwotCQkJaGVhcDFfc3RhcnQgPSBBTElHTl9V
UChfbGlia3ZtcGxhdF9jZmcuaW5pdHJkLmVuZCwKLQkJCQkJICAgICAgIF9fUEFHRV9TSVpFKTsK
LQkJCWhlYXAxX2VuZCAgID0gX2xpYmt2bXBsYXRfY2ZnLmhlYXAuZW5kOwotCQl9Ci0JfSBlbHNl
IHsKLQkJLyogSW5pdHJkIGlzIG5vdCBvdmVybGFwcGluZyB3aXRoIGhlYXAgKi8KLQkJaGVhcDBf
c3RhcnQgPSBfbGlia3ZtcGxhdF9jZmcuaGVhcC5zdGFydDsKLQkJaGVhcDBfZW5kICAgPSBfbGli
a3ZtcGxhdF9jZmcuaGVhcC5lbmQ7Ci0JfQotCWhlYXAwX2xlbiA9IGhlYXAwX2VuZCAtIGhlYXAw
X3N0YXJ0OwotCWhlYXAxX2xlbiA9IGhlYXAxX2VuZCAtIGhlYXAxX3N0YXJ0OwotCi0JLyoKLQkg
KiBVcGRhdGUgaGVhcCByZWdpb25zCi0JICogV2UgbWFrZSBzdXJlIHRoYXQgaW4gd2Ugc3RhcnQg
ZmlsbGluZyBsZWZ0IGhlYXAgcGllY2VzIGF0Ci0JICogYF9saWJrdm1wbGF0X2NmZy5oZWFwYC4g
QW55IGFkZGl0aW9uYWwgcGllY2Ugd2lsbCB0aGVuIGJlCi0JICogcGxhY2VkIHRvIGBfbGlia3Zt
cGxhdF9jZmcuaGVhcDJgLgotCSAqLwotCWlmIChoZWFwMF9sZW4gPT0gMCkgewotCQkvKiBIZWFw
IHBpZWNlIDAgaXMgZW1wdHksIHVzZSBwaWVjZSAxIGFzIG9ubHkgKi8KLQkJaWYgKGhlYXAxX2xl
biAhPSAwKSB7Ci0JCQlfbGlia3ZtcGxhdF9jZmcuaGVhcC5zdGFydCA9IGhlYXAxX3N0YXJ0Owot
CQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAuZW5kICAgPSBoZWFwMV9lbmQ7Ci0JCQlfbGlia3ZtcGxh
dF9jZmcuaGVhcC5sZW4gICA9IGhlYXAxX2xlbjsKLQkJfSBlbHNlIHsKLQkJCV9saWJrdm1wbGF0
X2NmZy5oZWFwLnN0YXJ0ID0gMDsKLQkJCV9saWJrdm1wbGF0X2NmZy5oZWFwLmVuZCAgID0gMDsK
LQkJCV9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiAgID0gMDsKLQkJfQotCQkgX2xpYmt2bXBsYXRf
Y2ZnLmhlYXAyLnN0YXJ0ID0gMDsKLQkJIF9saWJrdm1wbGF0X2NmZy5oZWFwMi5lbmQgICA9IDA7
Ci0JCSBfbGlia3ZtcGxhdF9jZmcuaGVhcDIubGVuICAgPSAwOwotCX0gZWxzZSB7Ci0JCS8qIEhl
YXAgcGllY2UgMCBoYXMgbWVtb3J5ICovCi0JCV9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0ID0g
aGVhcDBfc3RhcnQ7Ci0JCV9saWJrdm1wbGF0X2NmZy5oZWFwLmVuZCAgID0gaGVhcDBfZW5kOwot
CQlfbGlia3ZtcGxhdF9jZmcuaGVhcC5sZW4gICA9IGhlYXAwX2xlbjsKLQkJaWYgKGhlYXAxX2xl
biAhPSAwKSB7Ci0JCQlfbGlia3ZtcGxhdF9jZmcuaGVhcDIuc3RhcnQgPSBoZWFwMV9zdGFydDsK
LQkJCV9saWJrdm1wbGF0X2NmZy5oZWFwMi5lbmQgICA9IGhlYXAxX2VuZDsKLQkJCV9saWJrdm1w
bGF0X2NmZy5oZWFwMi5sZW4gICA9IGhlYXAxX2xlbjsKLQkJfSBlbHNlIHsKLQkJCV9saWJrdm1w
bGF0X2NmZy5oZWFwMi5zdGFydCA9IDA7Ci0JCQlfbGlia3ZtcGxhdF9jZmcuaGVhcDIuZW5kICAg
PSAwOwotCQkJX2xpYmt2bXBsYXRfY2ZnLmhlYXAyLmxlbiAgID0gMDsKLQkJfQotCX0KLQotCS8q
Ci0JICogRG91YmxlLWNoZWNrIHRoYXQgaW5pdHJkIGlzIG5vdCBvdmVybGFwcGluZyB3aXRoIHBy
ZXZpb3VzbHkgYWxsb2NhdGVkCi0JICogYm9vdCBzdGFjay4gV2UgY3Jhc2ggaW4gc3VjaCBhIGNh
c2UgYmVjYXVzZSB3ZSBhc3N1bWUgdGhhdCBtdWx0aWJvb3QKLQkgKiBwbGFjZXMgdGhlIGluaXRy
ZCBjbG9zZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBoZWFwIHJlZ2lvbi4gT25lIG5lZWQKLQkg
KiB0byBhc3NpZ24ganVzdCBtb3JlIG1lbW9yeSBpbiBvcmRlciB0byBhdm9pZCB0aGlzIGNyYXNo
LgotCSAqLwotCWlmIChSQU5HRV9PVkVSTEFQKF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0LAot
CQkJICBfbGlia3ZtcGxhdF9jZmcuaGVhcC5sZW4sCi0JCQkgIF9saWJrdm1wbGF0X2NmZy5pbml0
cmQuc3RhcnQsCi0JCQkgIF9saWJrdm1wbGF0X2NmZy5pbml0cmQubGVuKSkKLQkJVUtfQ1JBU0go
Ik5vdCBlbm91Z2ggc3BhY2UgYXQgZW5kIG9mIG1lbW9yeSBmb3IgYm9vdCBzdGFja1xuIik7Ci1v
dXQ6Ci0JcmV0dXJuOwotCi1ub19pbml0cmQ6Ci0JX2xpYmt2bXBsYXRfY2ZnLmluaXRyZC5zdGFy
dCA9IDA7Ci0JX2xpYmt2bXBsYXRfY2ZnLmluaXRyZC5lbmQgICA9IDA7Ci0JX2xpYmt2bXBsYXRf
Y2ZnLmluaXRyZC5sZW4gICA9IDA7Ci0JX2xpYmt2bXBsYXRfY2ZnLmhlYXAyLnN0YXJ0ICA9IDA7
Ci0JX2xpYmt2bXBsYXRfY2ZnLmhlYXAyLmVuZCAgICA9IDA7Ci0JX2xpYmt2bXBsYXRfY2ZnLmhl
YXAyLmxlbiAgICA9IDA7Ci0JcmV0dXJuOwotfQotCiBzdGF0aWMgdm9pZCBfbGlia3ZtcGxhdF9l
bnRyeTIodm9pZCAqYXJnIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQogewogCXVrcGxhdF9lbnRy
eV9hcmdwKE5VTEwsIGNtZGxpbmUsIHNpemVvZihjbWRsaW5lKSk7CkBAIC0yNTgsMjMgKzQ2LDE0
IEBAIHN0YXRpYyB2b2lkIF9saWJrdm1wbGF0X2VudHJ5Mih2b2lkICphcmcgX19hdHRyaWJ1dGVf
XygodW51c2VkKSkpCiAKIHZvaWQgX2xpYmt2bXBsYXRfZW50cnkodm9pZCAqYXJnKQogewotCXN0
cnVjdCBtdWx0aWJvb3RfaW5mbyAqbWkgPSAoc3RydWN0IG11bHRpYm9vdF9pbmZvICopYXJnOwog
CiAJX2luaXRfY3B1ZmVhdHVyZXMoKTsKIAlfbGlia3ZtcGxhdF9pbml0X2NvbnNvbGUoKTsKIAl0
cmFwc19pbml0KCk7CiAJaW50Y3RybF9pbml0KCk7CisJcHJvY2Vzc192bW1pbmZvKGFyZyk7CiAK
IAl1a19wcl9pbmZvKCJFbnRlcmluZyBmcm9tIEtWTSAoeDg2KS4uLlxuIik7Ci0JdWtfcHJfaW5m
bygiICAgICBtdWx0aWJvb3Q6ICVwXG4iLCBtaSk7Ci0KLQkvKgotCSAqIFRoZSBtdWx0aWJvb3Qg
c3RydWN0dXJlcyBtYXkgYmUgYW55d2hlcmUgaW4gbWVtb3J5LCBzbyB0YWtlIGEgY29weSBvZgot
CSAqIGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IGJlZm9yZSB3ZSBpbml0aWFsaXNlIG1lbW9yeSBhbGxv
Y2F0aW9uLgotCSAqLwotCV9tYl9nZXRfY21kbGluZShtaSk7Ci0JX21iX2luaXRfbWVtKG1pKTsK
LQlfbWJfaW5pdF9pbml0cmQobWkpOwogCiAJaWYgKF9saWJrdm1wbGF0X2NmZy5pbml0cmQubGVu
KQogCQl1a19wcl9pbmZvKCIgICAgICAgIGluaXRyZDogJXBcbiIsCi0tIAoyLjIxLjAKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoOE-0002hd-7h; Mon, 03 Jun 2019 14:56:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoOD-0002gs-0c
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:45 +0000
X-Inumbo-ID: cb7983e8-860f-11e9-9504-a3dae96a5ce1
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cb7983e8-860f-11e9-9504-a3dae96a5ce1;
 Mon, 03 Jun 2019 14:56:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8EE4BF2051;
 Mon,  3 Jun 2019 16:56:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HY1aB5DUh-5o; Mon,  3 Jun 2019 16:56:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 681FFF2023
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:38 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:38 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:09 +0200
Message-ID: <20190603145612.30206-7-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 6/9] plat/kvm: streamline
 Firecracker early boot
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlcmUgYXJlIHNldmVyYWwgcGllY2VzIGluIHRoZSBlYXJseSBib290IGNvZGUgdGhhdCBhcmUg
dW5uZWNlc3NhcnkKd2hlbiBidWlsZGluZyBmb3IgRmlyZWNyYWNrZXI6IG5hbWVseSwgdGhlIG11
bHRpYm9vdCBoZWFkZXIgaXMgbm90CnJlcXVpcmVkOyBhbmQgdGhlIDMyLWJpdCBzZXR1cCB3aGlj
aCBmb3JtcyB0aGUgdmVyeSBlYXJsaWVzdCBzdGVwcyBvZgp0aGUgYm9vdCBwcm9jZXNzIGNhbiBi
ZSBza2lwcGVkIGJlY2F1c2UgRmlyZWNyYWNrZXIgZHJvcHMgdXMgb2ZmIGluIGxvbmcKbW9kZS4g
SG93ZXZlciwgbW92ZSB0aGUgcGFnZSB0YWJsZSBzZXR1cCBjb2RlIGludG8gdGhlIDY0LWJpdCBw
YXJ0IHRvCm1ha2Ugc3VyZSB0aGF0IGl0IGlzIGV4ZWN1dGVkLgoKU2lnbmVkLW9mZi1ieTogRmxv
cmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIHBsYXQva3ZtL3g4
Ni9lbnRyeTY0LlMgfCAyMyArKysrKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs
IDE0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0v
eDg2L2VudHJ5NjQuUyBiL3BsYXQva3ZtL3g4Ni9lbnRyeTY0LlMKaW5kZXggMjc0YWIwYjMuLjE4
NmY2Y2U0IDEwMDY0NAotLS0gYS9wbGF0L2t2bS94ODYvZW50cnk2NC5TCisrKyBiL3BsYXQva3Zt
L3g4Ni9lbnRyeTY0LlMKQEAgLTI3LDYgKzI3LDcgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAK
KyNpbmNsdWRlIDx1ay9jb25maWcuaD4KICNpbmNsdWRlIDx4ODYvY3B1X2RlZnMuaD4KICNpbmNs
dWRlIDxrdm0teDg2L3RyYXBzLmg+CiAjaW5jbHVkZSA8a3ZtLXg4Ni9tdWx0aWJvb3RfZGVmcy5o
PgpAQCAtMzcsNiArMzgsNyBAQAogI2RlZmluZSBNWU1VTFRJQk9PVF9GTEFHUyBcCiAgICAgKE1V
TFRJQk9PVF9QQUdFX0FMSUdOIHwgTVVMVElCT09UX01FTU9SWV9JTkZPIHwgTVVMVElCT09UX0FP
VVRfS0xVREdFKQogCisjaWYgS1ZNUVBMQVQKIC5zZWN0aW9uIC5kYXRhLmJvb3QKIAogLmFsaWdu
IDQKQEAgLTUwLDExICs1MiwxMyBAQCBfbXVsdGlib290X2hlYWRlcjoKIC5sb25nIF9lbmQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnNzIGVuZCBhZGRyICovCiAu
bG9uZyBfbGlia3ZtcGxhdF9zdGFydDMyICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVudHJ5
IGFkZHIgKi8KIAorI2VuZGlmCiAuc2VjdGlvbiAuYnNzCiAKIC5zcGFjZSA0MDk2CiBib290c3Rh
Y2s6CiAKKyNpZiBLVk1RUExBVAogLyoKICAqIEJvb3Rsb2FkZXIgZW50cnkgcG9pbnQuCiAgKgpA
QCAtOTAsMTUgKzk0LDYgQEAgRU5UUlkoX2xpYmt2bXBsYXRfc3RhcnQzMikKIAlvcmwgJFg4Nl9F
RkVSX0xNRSwgJWVheAogCXdybXNyCiAKLQkvKiAzOiBsb2FkIHBtbDQgcG9pbnRlciAqLwotCW1v
dmwgJGNwdV9wbWw0LCAlZWF4Ci0JbW92bCAlZWF4LCAlY3IzCi0KLQkvKiA0OiBlbmFibGUgcGFn
aW5nICovCi0JbW92bCAlY3IwLCAlZWF4Ci0Jb3JsICRYODZfQ1IwX1BHLCAlZWF4Ci0JbW92bCAl
ZWF4LCAlY3IwCi0KIAlqbXAgX2xpYmt2bXBsYXRfc3RhcnQ2NAogCiAJLyogTk9UUkVBQ0hFRCAq
LwpAQCAtMTExLDYgKzEwNiw3IEBAIGhhbHRtZToKIAlobHQKIAlqbXAgaGFsdG1lCiBFTkQoX2xp
Ymt2bXBsYXRfc3RhcnQzMikKKyNlbmRpZgogCiAvKgogICogYW1kNjQgcHJvZ3JhbW1lcidzIG1h
bnVhbDoKQEAgLTE0OSw2ICsxNDUsMTUgQEAgbXhjc3JfcHRyOgogLnNlY3Rpb24gLnRleHQuYm9v
dAogCiBFTlRSWShfbGlia3ZtcGxhdF9zdGFydDY0KQorCS8qIGxvYWQgcG1sNCBwb2ludGVyICov
CisJbW92cSAkY3B1X3BtbDQsICVyYXgKKwltb3ZxICVyYXgsICVjcjMKKworCS8qIGVuYWJsZSBw
YWdpbmcgKi8KKwltb3ZxICVjcjAsICVyYXgKKwlvcmwgJFg4Nl9DUjBfUEcsICVlYXgKKwltb3Zx
ICVyYXgsICVjcjAKKwogCS8qIHNldCB1cCB0aGUgYm9vdCBzdGFjayAqLwogCW1vdnEgJGJvb3Rz
dGFjaywgJXJzcAogCXhvcnEgJXJicCwgJXJicAotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoOF-0002iC-A2; Mon, 03 Jun 2019 14:56:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoOD-0002hL-Kq
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:45 +0000
X-Inumbo-ID: cd70ba77-860f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cd70ba77-860f-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 14:56:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 16D0E105290;
 Mon,  3 Jun 2019 16:56:41 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ku22v5ICKRh0; Mon,  3 Jun 2019 16:56:41 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id EC212105230
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:40 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:40 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:10 +0200
Message-ID: <20190603145612.30206-8-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 7/9] plat/kvm: update page table for
 Firecracker
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RmlyZWNyYWNrZXIgbmVlZHMgb3RoZXIgbG93IG1lbW9yeSBhZGRyZXNzZXMgdG8gYWNjZXNzIGlu
Zm9ybWF0aW9uCnBhc3NlZCBpbiBieSB0aGUgaHlwZXJ2aXNvci4KClNpZ25lZC1vZmYtYnk6IEZs
b3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KLS0tCiBwbGF0L2t2bS94
ODYvcGFnZXRhYmxlLlMgfCAxNCArKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEzIGlu
c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9wbGF0L2t2bS94ODYvcGFn
ZXRhYmxlLlMgYi9wbGF0L2t2bS94ODYvcGFnZXRhYmxlLlMKaW5kZXggZDIwMGExM2EuLjQ2OTM2
OTBkIDEwMDY0NAotLS0gYS9wbGF0L2t2bS94ODYvcGFnZXRhYmxlLlMKKysrIGIvcGxhdC9rdm0v
eDg2L3BhZ2V0YWJsZS5TCkBAIC0zOCwxMiArMzgsMjQgQEAKIC5hbGlnbiAweDEwMDAKIGNwdV96
ZXJvcHQ6CiAJLyogdGhlIGZpcnN0IDFNIGlzIGluYWNjZXNzaWJsZSwgZXhjZXB0IGZvcjoKLQkg
ICAweDA5MDAwIC0gMHgwOWZmZiAtPiBtdWx0aWJvb3QgaW5mbyBAIDB4MDk1MDAgKHJlYWQtb25s
eSkKKwkgICAweDA3MDAwIC0gMHgwN2ZmZiAtPiBib290cGFyYW1zIGluZm8gKFJPLCBGaXJlY3Jh
Y2tlcikKKwkgICAweDA5MDAwIC0gMHgwOWZmZiAtPiBtdWx0aWJvb3QgaW5mbyBAIDB4MDk1MDAg
KFJPLCBRRU1VKQorCSAgIDB4MjAwMDAgLSAweDIwZmZmIC0+IGJvb3RwYXJhbXMgY21kbGluZSAo
Uk8sIEZpcmVjcmFja2VyKQogCSAgIDB4YjgwMDAgLSAweGJmZmZmIC0+IFZHQSBidWZmZXIgKHJl
YWQrd3JpdGUpCiAJICovCisjaWYgS1ZNUVBMQVQKIAkuZmlsbCAweDksIDB4OCwgMHgwCiAJLnF1
YWQgMHgwMDAwMDAwMDAwMDA5MDAwICsgUEFHRVRBQkxFX1JPCiAJLmZpbGwgMHhhZSwgMHg4LCAw
eDAKKyNlbGlmIEtWTUZDUExBVAorCS5maWxsIDB4NywgMHg4LCAweDAKKwkucXVhZCAweDAwMDAw
MDAwMDAwMDcwMDAgKyBQQUdFVEFCTEVfUk8KKwkuZmlsbCAweDE4LCAweDgsIDB4MAorCS5xdWFk
IDB4MDAwMDAwMDAwMDAyMDAwMCArIFBBR0VUQUJMRV9STworCS5maWxsIDB4OTcsIDB4OCwgMHgw
CisjZWxzZQorCS5maWxsIDB4YjgsIDB4OCwgMHgwCisjZW5kaWYgLyogZmlyc3QgYXJlYSB1bnRp
bCAweGI3ZmZmICovCiAJLnF1YWQgMHgwMDAwMDAwMDAwMGI4MDAwICsgUEFHRVRBQkxFX1JXCiAJ
LnF1YWQgMHgwMDAwMDAwMDAwMGI5MDAwICsgUEFHRVRBQkxFX1JXCiAJLnF1YWQgMHgwMDAwMDAw
MDAwMGJhMDAwICsgUEFHRVRBQkxFX1JXCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:56:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:56: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 1hXoOH-0002iy-CA; Mon, 03 Jun 2019 14:56: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoOF-0002i8-8S
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:56:47 +0000
X-Inumbo-ID: cd2b75de-860f-11e9-b1c2-cfd07511d3ae
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cd2b75de-860f-11e9-b1c2-cfd07511d3ae;
 Mon, 03 Jun 2019 14:56:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 61820F2050;
 Mon,  3 Jun 2019 16:56:43 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id K1XbTar3pSr0; Mon,  3 Jun 2019 16:56:43 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 35786F2023
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:41 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:40 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:11 +0200
Message-ID: <20190603145612.30206-9-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 8/9] plat/kvm: Add bootparams as VMM
 info option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 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>

RmlyZWNyYWNrZXIgdXNlcyBhIExpbnV4LXN0eWxlIGJvb3RwYXJhbXMgc3RydWN0IHRvIGNvbnZl
eSBpbmZvcm1hdGlvbgphYm91dCBtZW1vcnkgZXRjLiB0byB0aGUgT1MuIEFkZCB0aGlzIGFzIGEg
c2Vjb25kIG9wdGlvbiBhbG9uZ3NpZGUgdGhlCm11bHRpYm9vdCBoZWFkZXIuIFFFTVUgd2lsbCBu
b3cgdXNlIG11bHRpYm9vdCwgd2hpbGUgRmlyZWNyYWNrZXIgd2lsbAp1c2UgYm9vdHBhcmFtcy4K
ClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5l
dT4KLS0tCiBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvX2Jvb3RwYXJhbXMuaCB8IDEyNyArKysr
KysrKysrKysrKysrKysrKysrKysrCiBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvYm9vdHBhcmFt
cy5oICB8ICA0MiArKysrKysrKwogcGxhdC9rdm0vaW5jbHVkZS9rdm0teDg2L3ZtbWluZm8uaCAg
ICAgfCAgIDggKysKIDMgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBwbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvX2Jvb3RwYXJhbXMuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IHBsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni9ib290cGFyYW1zLmgKCmRpZmYg
LS1naXQgYS9wbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvX2Jvb3RwYXJhbXMuaCBiL3BsYXQva3Zt
L2luY2x1ZGUva3ZtLXg4Ni9fYm9vdHBhcmFtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwLi5hYWJiN2ZlYgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQva3ZtL2luY2x1ZGUv
a3ZtLXg4Ni9fYm9vdHBhcmFtcy5oCkBAIC0wLDAgKzEsMTI3IEBACisvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBO
RUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVy
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
CisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkg
V0FZLgorICovCisKKyNpZm5kZWYgS1ZNX1ZNTUlORk9fSAorI2Vycm9yIERvIG5vdCBpbmNsdWRl
IF9ib290cGFyYW1zLmggZGlyZWN0bHkhCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPHVrL3ByaW50Lmg+CisjaW5jbHVkZSA8dWsvcGxhdC9jb25maWcuaD4KKyNpbmNs
dWRlIDxrdm0vY29uZmlnLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfYnBfZ2V0X2NtZGxpbmUo
c3RydWN0IGJvb3RfcGFyYW1zICpicCkKK3sKKwlfX3U2NCBjbWRsaW5lX2FkZHI7CisJY2hhciAq
YnBfY21kbGluZTsKKwlzaXplX3QgYnBfY21kbGluZV9sZW4gPSBicC0+aGRyLmNtZGxpbmVfc2l6
ZTsKKworCWNtZGxpbmVfYWRkciA9IGJwLT5oZHIuY21kX2xpbmVfcHRyOworCWNtZGxpbmVfYWRk
ciB8PSAoX191NjQpYnAtPmV4dF9yYW1kaXNrX3NpemUgPDwgMzI7CisJYnBfY21kbGluZSA9IChj
aGFyICopY21kbGluZV9hZGRyOworCXVrX3ByX2luZm8oImNvbW1hbmQgbGluZSBhdCAweCVseFxu
IiwgY21kbGluZV9hZGRyKTsKKwl1a19wcl9pbmZvKCJjb21tYW5kIGxpbmUgc2l6ZSAweCVseFxu
IiwgYnBfY21kbGluZV9sZW4pOworCisJaWYgKCFicF9jbWRsaW5lKSB7CisJCXVrX3ByX2luZm8o
Ik5vIGNvbW1hbmQgbGluZSBwcm92aWRlZFxuIik7CisJCXN0cm5jcHkoY21kbGluZSwgQ09ORklH
X1VLX05BTUUsIHNpemVvZihjbWRsaW5lKSk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoYnBfY21k
bGluZV9sZW4gPj0gc2l6ZW9mKGNtZGxpbmUpKSB7CisJCWJwX2NtZGxpbmVfbGVuID0gc2l6ZW9m
KGNtZGxpbmUpIC0gMTsKKwkJdWtfcHJfaW5mbygiQ29tbWFuZCBsaW5lIHRvbyBsb25nLCB0cnVu
Y2F0ZWRcbiIpOworCX0KKwltZW1jcHkoY21kbGluZSwgYnBfY21kbGluZSwgYnBfY21kbGluZV9s
ZW4pOworCS8qIGVuc3VyZSBudWxsIHRlcm1pbmF0aW9uICovCisJY21kbGluZVticF9jbWRsaW5l
X2xlbl0gPSAnXDAnOworCisJdWtfcHJfaW5mbygiQ29tbWFuZCBsaW5lOiAlc1xuIiwgY21kbGlu
ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfYnBfaW5pdF9tZW0oc3RydWN0IGJvb3RfcGFy
YW1zICpicCkKK3sKKwlpbnQgaTsKKwlzaXplX3QgbWF4X2FkZHI7CisJc3RydWN0IGJvb3RfZTgy
MF9lbnRyeSAqZTgyMF9lbnRyeSA9IE5VTEw7CisKKwl1a19wcl9pbmZvKCJib290X3BhcmFtczog
JWQgZW50cmllcyBpbiBlODIwXG4iLCBicC0+ZTgyMF9lbnRyaWVzKTsKKwlmb3IgKGk9MDsgaSA8
IGJwLT5lODIwX2VudHJpZXM7IGkrKykgeworCQl1a19wcl9pbmZvKCIgIGU4MjAgZW50cnkgJWQ6
XG4iLCBpKTsKKwkJdWtfcHJfaW5mbygiICAgIGFkZHI6IDB4JWx4XG4iLCBicC0+ZTgyMF90YWJs
ZVtpXS5hZGRyKTsKKwkJdWtfcHJfaW5mbygiICAgIHNpemU6IDB4JWx4XG4iLCBicC0+ZTgyMF90
YWJsZVtpXS5zaXplKTsKKwkJdWtfcHJfaW5mbygiICAgIHR5cGU6IDB4JXhcbiIsIGJwLT5lODIw
X3RhYmxlW2ldLnR5cGUpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBicC0+ZTgyMF9lbnRyaWVz
OyBpKyspIHsKKwkJdWtfcHJfaW5mbygiQ2hlY2tpbmcgZTgyMCBlbnRyeSAlZFxuIiwgaSk7CisJ
CWlmIChicC0+ZTgyMF90YWJsZVtpXS5hZGRyID09IFBMQVRGT1JNX01FTV9TVEFSVAorCQkgICAg
JiYgYnAtPmU4MjBfdGFibGVbaV0udHlwZSA9PSAweDEpIHsKKwkJCWU4MjBfZW50cnkgPSAmYnAt
PmU4MjBfdGFibGVbaV07CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoIWU4MjBfZW50cnkpCisJ
CVVLX0NSQVNIKCJDb3VsZCBub3QgZmluZCBzdWl0YWJsZSBtZW1vcnkgcmVnaW9uIVxuIik7CisK
Kwl1a19wcl9pbmZvKCJVc2luZyBlODIwIG1lbW9yeSByZWdpb24gJWRcbiIsIGkpOworCW1heF9h
ZGRyID0gZTgyMF9lbnRyeS0+YWRkciArIGU4MjBfZW50cnktPnNpemU7CisJaWYgKG1heF9hZGRy
ID4gUExBVEZPUk1fTUFYX01FTV9BRERSKQorCQltYXhfYWRkciA9IFBMQVRGT1JNX01BWF9NRU1f
QUREUjsKKwlVS19BU1NFUlQoKHNpemVfdClfX0VORCA8PSBtYXhfYWRkcik7CisKKwlfbGlia3Zt
cGxhdF9jZmcuaGVhcC5zdGFydCA9IEFMSUdOX1VQKCh1aW50cHRyX3QpX19FTkQsIF9fUEFHRV9T
SVpFKTsKKwlfbGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQgICA9ICh1aW50cHRyX3QpIG1heF9hZGRy
IC0gX19TVEFDS19TSVpFOworCV9saWJrdm1wbGF0X2NmZy5oZWFwLmxlbiAgID0gX2xpYmt2bXBs
YXRfY2ZnLmhlYXAuZW5kCisJCQkJICAgICAtIF9saWJrdm1wbGF0X2NmZy5oZWFwLnN0YXJ0Owor
CV9saWJrdm1wbGF0X2NmZy5ic3RhY2suc3RhcnQgPSBfbGlia3ZtcGxhdF9jZmcuaGVhcC5lbmQ7
CisJX2xpYmt2bXBsYXRfY2ZnLmJzdGFjay5lbmQgICA9IG1heF9hZGRyOworCV9saWJrdm1wbGF0
X2NmZy5ic3RhY2subGVuICAgPSBfX1NUQUNLX1NJWkU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBfYnBfaW5pdF9pbml0cmQoc3RydWN0IGJvb3RfcGFyYW1zICpicCBfX3VudXNlZCkKK3sKKwkv
KiBGaXJlY3JhY2tlciBkb2VzIG5vdCBoYXZlIGluaXRyZCBzdXBwb3J0IHlldC4gKi8KK30KKwor
c3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3Nfdm1taW5mbyh2b2lkICphcmcgX191bnVzZWQpCit7
CisJLyogTG9jYXRpb24gb2YgYm9vdCBwYXJhbWV0ZXJzIGlzIGN1cnJlbnRseSBoYXJkY29kZWQg
dG8gMHg3MDAwCisJICogaW4gRmlyZWNyYWNrZXIsIGJ1dCB0aGlzIG1pZ2h0IGNoYW5nZSBhdCBs
YXRlciBwb2ludC4KKwkgKi8KKwlzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwID0gKHN0cnVjdCBib290
X3BhcmFtcyAqKTB4NzAwMDsKKworCXVrX3ByX2luZm8oIiAgICAgYm9vdCBwYXJhbXM6ICVwXG4i
LCBicCk7CisJX2JwX2luaXRfbWVtKGJwKTsKKwlfYnBfZ2V0X2NtZGxpbmUoYnApOworCV9icF9p
bml0X2luaXRyZChicCk7Cit9CmRpZmYgLS1naXQgYS9wbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYv
Ym9vdHBhcmFtcy5oIGIvcGxhdC9rdm0vaW5jbHVkZS9rdm0teDg2L2Jvb3RwYXJhbXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMTMwN2U5OGYKLS0tIC9kZXYvbnVsbAor
KysgYi9wbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvYm9vdHBhcmFtcy5oCkBAIC0wLDAgKzEsNDIg
QEAKKyNpZm5kZWYgQk9PVFBBUkFNU19IRUFERVIKKyNkZWZpbmUgQk9PVFBBUkFNU19IRUFERVIK
KworI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KKworc3RydWN0IHNldHVwX2hlYWRlciB7CisJ
X191OCBfcGFkMVszOV07CisJX191MzIgcmFtZGlza19pbWFnZTsKKwlfX3UzMiByYW1kaXNrX3Np
emU7CisJX191OCBfcGFkMls0XTsKKwlfX3UxNiBoZWFwX2VuZF9wdHI7CisJX191OCBfcGFkM1sy
XTsKKwlfX3UzMiBjbWRfbGluZV9wdHI7CisJX191OCBfcGFkNFsxMl07CisJX191MzIgY21kbGlu
ZV9zaXplOworCV9fdTggX3BhZDVbNDRdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKwor
c3RydWN0IGJvb3RfZTgyMF9lbnRyeSB7CisJX191NjQgYWRkcjsKKwlfX3U2NCBzaXplOworCV9f
dTMyIHR5cGU7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisjZGVmaW5lIEU4MjBfTUFY
X0VOVFJJRVMgMTI4CisKK3N0cnVjdCBib290X3BhcmFtcyB7CisJX191OCBfcGFkMVsxOTJdOwor
CV9fdTMyIGV4dF9yYW1kaXNrX2ltYWdlOworCV9fdTMyIGV4dF9yYW1kaXNrX3NpemU7CisJX191
MzIgZXh0X2NtZF9saW5lX3B0cjsKKwlfX3U4IF9wYWQyWzI4NF07CisJX191OCBlODIwX2VudHJp
ZXM7CisJX191OCBfcGFkM1s4XTsKKwlzdHJ1Y3Qgc2V0dXBfaGVhZGVyIGhkcjsKKwlfX3U4IF9w
YWQ0WzEwNF07CisJc3RydWN0IGJvb3RfZTgyMF9lbnRyeSBlODIwX3RhYmxlW0U4MjBfTUFYX0VO
VFJJRVNdOworCV9fdTggX3BhZDVbMjU2MC0oc2l6ZW9mKHN0cnVjdCBib290X2U4MjBfZW50cnkp
ICogRTgyMF9NQVhfRU5UUklFUyldOworCV9fdTggX3BhZDZbODE2XTsKK30gX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CisKKyNlbmRpZiAvKiAhIEJPT1RQQVJBTVNfSEVBREVSICovCmRpZmYgLS1n
aXQgYS9wbGF0L2t2bS9pbmNsdWRlL2t2bS14ODYvdm1taW5mby5oIGIvcGxhdC9rdm0vaW5jbHVk
ZS9rdm0teDg2L3ZtbWluZm8uaAppbmRleCAzYmM4NmJlZi4uM2YwYzY1MzkgMTAwNjQ0Ci0tLSBh
L3BsYXQva3ZtL2luY2x1ZGUva3ZtLXg4Ni92bW1pbmZvLmgKKysrIGIvcGxhdC9rdm0vaW5jbHVk
ZS9rdm0teDg2L3ZtbWluZm8uaApAQCAtNDEsOCArNDEsMTYgQEAKICNkZWZpbmUgTUFYX0NNRExJ
TkVfU0laRSA4MTkyCiBzdGF0aWMgY2hhciBjbWRsaW5lW01BWF9DTURMSU5FX1NJWkVdOwogCisv
KiBpbmNsdWRlIHRoZSByZXNwZWN0aXZlIGluZm8gc3RvcmFnZSBtZXRob2QgZGVwZW5kaW5nIG9u
IFZNIG1vbml0b3IgKi8KKyNpZiBLVk1RUExBVAogI2luY2x1ZGUgPGt2bS14ODYvbXVsdGlib290
Lmg+CiAjaW5jbHVkZSA8a3ZtLXg4Ni9tdWx0aWJvb3RfZGVmcy5oPgogI2luY2x1ZGUgPGt2bS14
ODYvX211bHRpYm9vdC5oPgorI2VsaWYgS1ZNRkNQTEFUCisjaW5jbHVkZSA8a3ZtLXg4Ni9ib290
cGFyYW1zLmg+CisjaW5jbHVkZSA8a3ZtLXg4Ni9fYm9vdHBhcmFtcy5oPgorI2Vsc2UKKyNlcnJv
ciBObyBWTU0gY2hvc2VuIGZvciBLVk0gZW52aXJvbm1lbnQhCisjZW5kaWYgLyogQ09ORklHX0tW
TV9WTU1fKiAqLwogCiAjZW5kaWYgLyogS1ZNX1ZNTUlORk9fSCAqLwotLSAKMi4yMS4wCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 14:58:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 14:58: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 1hXoPY-0002sa-11; Mon, 03 Jun 2019 14:58: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=lSi0=UC=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hXoPW-0002sS-PW
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 14:58:06 +0000
X-Inumbo-ID: fca4c98c-860f-11e9-b9a5-1b2f2d1f1cc3
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fca4c98c-860f-11e9-b9a5-1b2f2d1f1cc3;
 Mon, 03 Jun 2019 14:58:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D71FE10527D;
 Mon,  3 Jun 2019 16:56:43 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ehia8UIwD36N; Mon,  3 Jun 2019 16:56:43 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B84A9105230
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 16:56:43 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 3 Jun
 2019 16:56:43 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 16:56:12 +0200
Message-ID: <20190603145612.30206-10-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190603145612.30206-1-florian.schmidt@neclab.eu>
References: <20190603145612.30206-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH 9/9] plat/kvm: Firecracker is now in
 a state that runs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlcmUncyBzdGlsbCBubyBkZXZpY2Ugc3VwcG9ydCwgYnV0IGl0IGJvb3RzIGFuZCBydW5zLiBN
YXJrIGl0IGFzIHRoYXQKaW4gdGhlIGhlbHAgdGV4dCBmb3IgdGhlIEZpcmVjcmFja2VyIG9wdGlv
biBpbiBDb25maWcudWsuCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4u
c2NobWlkdEBuZWNsYWIuZXU+Ci0tLQogcGxhdC9rdm0vQ29uZmlnLnVrIHwgNCArKy0tCiAxIGZp
bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L3BsYXQva3ZtL0NvbmZpZy51ayBiL3BsYXQva3ZtL0NvbmZpZy51awppbmRleCAyODg1MzY0Ni4u
MjYyZGE5MmMgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL0NvbmZpZy51aworKysgYi9wbGF0L2t2bS9D
b25maWcudWsKQEAgLTI0LDggKzI0LDggQEAgY29uZmlnIEtWTV9WTU1fRklSRUNSQUNLRVIKICAg
ICAgICAgZGVwZW5kcyBvbiBBUkNIX1g4Nl82NAogICAgICAgICBoZWxwCiAgICAgICAgICAgQnVp
bGQgYW4gaW1hZ2UgdGhhdCBjYW4gYmUgcnVuIHdpdGggRmlyZWNyYWNrZXIuCi0gICAgICAgICAg
VGhpcyBpcyB3b3JrIGluIHByb2dyZXNzOyBlbmFibGluZyB0aGlzIG9wdGlvbgotICAgICAgICAg
IG1heSBpbiBmYWN0IGJyZWFrIHlvdXIgUUVNVS9rdm0gYnVpbGQuCisgICAgICAgICAgVGhpcyBp
cyB3b3JrIGluIHByb2dyZXNzOyB0aGUgaW1hZ2Ugd2lsbCBib290LAorICAgICAgICAgIGJ1dCB0
aGVyZSBpcyBjdXJyZW50bHkgbm8gZGV2aWNlIHN1cHBvcnQuCiAKIG1lbnUgIkNvbnNvbGUgT3B0
aW9ucyIKIAotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:00:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:00: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 1hXoRj-0003ff-8A; Mon, 03 Jun 2019 15:00:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=vWkG=UC=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXoRh-0003fa-UY
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:00:22 +0000
X-Inumbo-ID: 4e52e595-8610-11e9-8980-bc764e045a96
Received: from mail-wm1-x330.google.com (unknown [2a00:1450:4864:20::330])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4e52e595-8610-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:00:21 +0000 (UTC)
Received: by mail-wm1-x330.google.com with SMTP id 16so7133420wmg.5
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 08:00:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=sZ3zEWkY72amGp2KSw6UQCY4RjuZAvoHp9eN8j0HRjM=;
 b=XuyBh3L2sM6Ns6KjG894xBSSOhJW4wXzWmfjkA7rlHeja00LUw2JALIFzfPGkKLM5c
 moMf9z7bIoWRqWKm+CrTBQzhFv+OFBHaRLp91lyOxK4RmxXqAqj9mFzigeAZU5xW4Myn
 qbr/KmWDn3j8S4VLQiOfMrTstA2NpvNtyx6VoZh4RRFpkLlbBok7nufSwtD5Jz4/0y/N
 6S/aYD9bARZS0V8y6E3msL86kLkh2zgBn+1BVCrkBlwoGekvCvHyJMKVO/LRtBTLM+9Y
 IPEendTaJA7+XCJcrUufhUbXlbNz28mz5IoS04G+Ismal+a+QwYaenUHQ4m34nMZaJot
 ktOQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=sZ3zEWkY72amGp2KSw6UQCY4RjuZAvoHp9eN8j0HRjM=;
 b=ClYKGdxbC7TFmbHKuPzyb48uAZZzI/SPnQRgPINClNb/JN+e8wa729LEAdQZb4Ybu8
 rOkIAKXHzhmzxcyLrJVOj8zX7M2Z80HnKhZ5EYSQT+lRhxXqSCahGXguNGlInfaH0lQt
 a2xXtabVCmC0uDjnaxLxwLcuhy1voEODWoeNHl9hlu0E6H9Oo9SmDsXOBeUDFuBIedoO
 fqgjtqx1G6igqVaFAqqfC0OTZLFg2M9hIHosml0BJH3JoRcsadDacH+HiDWzcIHgNGTk
 01a2DDFLePIfJUlE+Hpq4EJWs5MX8lz5pgNIi/37SAGWlhgLP4nbA5QAYCTdpcdyK8Ks
 541g==
X-Gm-Message-State: APjAAAU1hmHKfOO2IwsvOe4fEH60bNo+UluYLKvp8JQocf4tIiGsep9V
 8OMB8EYrGyiOCH4nhbFu7NE=
X-Google-Smtp-Source: APXvYqzWFoTojyKJcBUhzurmxEGOf7p0PGQFHxZ2qMCkxIJpo/p+As2Lv1ZFau7Q38Mt38lNYMJxpQ==
X-Received: by 2002:a7b:c301:: with SMTP id k1mr2527331wmj.43.1559574019929;
 Mon, 03 Jun 2019 08:00:19 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id p2sm5409260wrx.90.2019.06.03.08.00.18
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 08:00:19 -0700 (PDT)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <33f7acf1-714f-97d7-6e05-8dcebf830d39@neclab.eu>
 <dc4cdb76-ddb4-2ca2-2cdf-021147277f16@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <8682088b-d49f-a510-dcc0-6b870bb2e400@gmail.com>
Date: Mon, 3 Jun 2019 18:00:18 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <dc4cdb76-ddb4-2ca2-2cdf-021147277f16@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 0/8] Initial
 port of pthread-embedded library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 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>

T24gNi8zLzE5IDEwOjM5IEFNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4gSGkgQ29zdGluLAo+
IAo+IG9uZSBnZW5lcmFsIHRoaW5nIHRoYXQgSSBqdXN0IG5vdGljZWQgYW5kIGRvbid0IHdhbnQg
dG8gY29tbWVudCBvbiBmb3IKPiBldmVyeSBmaWxlIHJlcGVhdGVkbHk6IGluIGFkZGl0aW9uIHRv
IHRoZSBsaWNlbnNlIGhlYWRlciwgY291bGQgeW91IGFkZAo+IHRoZSBhcHByb3ByaWF0ZSBTUERY
IGlkZW50aWZpZXIgdG8gdGhlbT8gSSBrbm93IHdlJ3ZlIG5vdCBhbHdheXMKPiByZW1lbWJlcmVk
IHRvIGRvIGl0IGZvciBhbGwgZXh0ZXJuYWwgbGlicmFyaWVzLCBidXQgSSB0aGluayBpdCB3b3Vs
ZCBiZQo+IGhlbHBmdWwgdG8gaGF2ZS4gQXMgZmFyIGFzIEkgc2VlLCB0aGUgZmlsZXMgYXJlIGFs
bCAiTEdQTCB2MiBvciBsYXRlciIsCj4gc28gdGhlIGFjY29yZGluZyBTUERYIHN0cmluZyB3b3Vs
ZCBiZToKPiAKPiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjAtb3ItbGF0ZXIg
Ki8KPiAKPiBJZiB0aGVyZSdzIGFueSBvdGhlciBsaWNlbnNlcywgeW91IGNhbiBnZXQgdGhlIGNv
cnJlY3QgU1BEWCBpZGVudGlmaWVyCj4gZnJvbSBodHRwczovL3NwZHgub3JnL2xpY2Vuc2VzLwoK
V2lsbCBkby4KCkNvc3RpbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:01:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:01: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 1hXoSt-0003hR-Cs; Mon, 03 Jun 2019 15:01:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=vWkG=UC=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXoSr-0003hK-Ox
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:01:33 +0000
X-Inumbo-ID: 793f95ba-8610-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 793f95ba-8610-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:01:33 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id g135so8368796wme.4
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 08:01:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=mU17BNTh6F7y91ry6TnR+PE3YqeX3mUdGjTel3EkBPs=;
 b=c9xC/1Fp5QYJPlu32COdVEwPuXEVdAw7CHivIB1sFbiGsl9S87K8YeH9t0qUGa5IUO
 58yxh99Juwynj8+3Cu4TdLU/OQLypq90NmWrbUGxOLEPK2LEa9s0edhgxjVcsiyv22HK
 WWXTal8XiLFcIVKKBKGte8+b9D70us3N0K4fHc5vSsEQxXw8C5pFUrQjHE3h8CTZcXR/
 NklV/URZ8O1TfTvUcoh8qVbmUxiad3X58D8qx13J/vKqsnKgHbPGHSUaVWL8ade6SRnc
 LXPpIrrNRzvvlQDJaWELOnJsuklFPn7EjyTuyVBCwjbdug+zhcoNm2K/PqN7bWDBtQ6s
 9wTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=mU17BNTh6F7y91ry6TnR+PE3YqeX3mUdGjTel3EkBPs=;
 b=L/Be5AfoUGmr6t1z6PIOPz68Lqw2mluFlQAhyiNp0pJcu56SXRTEPQunzvi7OOV2/2
 XBJu1BG4k9k7oPyywrBnIo+kxiPzoCXHi1SeC456bGKJsnKiXHaEpaFatN51LU7QKFLD
 EEo3I0gSw+oiFVA1XhyKwatlwvneD8PmyzMuvaltKbqIIIbNuLDD5gzQ8xG3wlgyzDcO
 cbMz9wWx0c2IEn506x5+fjlOE6BfqXfpcg/Ktbtxu/RzgznMfNXpJKn6hr6hz/IDzU5T
 Tmd6mAaXXWdNgNQelzYRNeU15qI4/IUbdpSAMUUnh6wET6f9elxkVjUa9AumXGlbAtls
 MGVg==
X-Gm-Message-State: APjAAAVPeJQd4fIP5jagf7PL65O//KtISIVbeIZ2Od6GGXN+ExrV+cAU
 oQIejS3kkzMweB/9UKDWJfCZT4Ud
X-Google-Smtp-Source: APXvYqwpGnXaCXg7LhAru7TumioNvW/lr2PMywwUe4oq8oho5oH9hOACHEA0Mi+bOohhUwWTF4n7Nw==
X-Received: by 2002:a1c:808b:: with SMTP id b133mr2525236wmd.160.1559574091962; 
 Mon, 03 Jun 2019 08:01:31 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id j66sm17701919wmb.24.2019.06.03.08.01.31
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 08:01:31 -0700 (PDT)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-8-costin.lupu@cs.pub.ro>
 <a297f78e-6548-7ff5-bf06-4dfeff509cee@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <795dca9b-c8fe-53b2-aeeb-6a3c34199d75@gmail.com>
Date: Mon, 3 Jun 2019 18:01:30 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <a297f78e-6548-7ff5-bf06-4dfeff509cee@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 7/8] Add
 missing functions for Ruby interpreter
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 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>

T24gNi8zLzE5IDEyOjM4IFBNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4gSGkgQ29zdGluLAo+
IAo+IGp1c3Qgb25lIHJlbWFyay4gSSB3YXMgYSBiaXQgY29uZnVzZWQgcmVhZGluZyB0aGUgY29t
bWl0IG1lc3NhZ2UsCj4gYmVjYXVzZSB0aGUgcnVieSBpbnRlcnByZXRlciB0aGluZyBjYW1lIGtp
bmQgb2Ygb3V0IG9mIHRoZSBibHVlLiBDb3VsZAo+IHlvdSBjaGFuZ2UgaXQgdG8gbWFrZSB0aGUg
ZGVzY3JpcHRpb24gbW9yZSBnZW5lcmljIGFuZCBhYm91dCB3aGF0J3MgYWRkZWQ/Cj4gCj4gQWxz
bywgYXMgYW4gYXNpZGUsIEkgZG9uJ3QgbGlrZSAibWlzc2luZ19mdW5jdGlvbnMuYyIgYWxsIHRo
YXQgbXVjaCBhcyBhCj4gZmlsZSBuYW1lLiA7LSkgSSBwcmVmZXIgbmFtZXMgdGhhdCBhcmUgYXQg
bGVhc3QgdmFndWVseSBkZXNjcmlwdGl2ZSBvZgo+IHdoYXQncyBpbnNpZGUgKHllYWgsIHllYWgs
ICJuYW1pbmcgdGhpbmdzIiBiZWluZyBvbmUgb2YgdGhlIG1vc3QKPiBkaWZmaWN1bHQgcHJvYmxl
bXMgaW4gY29tcHV0ZXIgc2NpZW5jZSBhbmQgYWxsKS4gTWF5YmUgeW91IGhhdmUgYSBnb29kCj4g
aWRlYSB0aGVyZT8KPiAKCkFscmlnaHQsIEknbGwgcmVuYW1lIHRoZSBmaWxlIHRvICdhdHRyaWJ1
dGVzLmMnIGFuZCBmaXggdGhlIGNvbW1pdAptZXNzYWdlIGFzIHdlIGFncmVlZCBvZmZsaW5lLgoK
Q29zdGluCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:07:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:07: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 1hXoYq-0003rb-VR; Mon, 03 Jun 2019 15:07:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=vWkG=UC=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hXoYp-0003rW-Ov
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:07:43 +0000
X-Inumbo-ID: 5538425d-8611-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5538425d-8611-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:07:42 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id c6so8550876wml.0
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 08:07:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=mWdyWEQcPFLdCQfJ92a1ePYN3ZyldcPsbabOwRbvZNY=;
 b=Ea+kixspr4vi3iCY/kK57lyXdttooF2RPVEbDkxouoYgY4K0JMQ/Rt3NsQAOHY/2x4
 YzX0UJBL6yz2v2f2svSQetgMtwa1G4nvB8qIGdYM/HwW7J35Vx9HogcPa6w5vdhd7ix2
 aNJ0XlsUKdeJlMQxtFY8veKskAB8fEl2YAHmuhAMwGCX3wRZ7/EOQCXM/kDApTOAC8g6
 IBOOfOEsNDZ+sJq1brLhx7f+tPInE58bftI6nTvRivlzq20ORw5rlG/dHu7vGoCDU0yY
 fuQRSsyNZRqduqwfSMYYmu802ECRFkKKAAxGtAJ0IGK6TFEFkR6WO6KvZ1qSVXSoUw+1
 jmMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=mWdyWEQcPFLdCQfJ92a1ePYN3ZyldcPsbabOwRbvZNY=;
 b=THLmbrs9KGZj+6IulVZbHSvfQFpEd+R+Pikrsfphq0W4KSay0KQlyeaDB3f6GHgaMf
 +IVGhCPluMM9S4Wf+AS7jr5iFxqP/MD2+C5ZIgvq61lAoWVjed+R5S/paBGwynWqtKrb
 btMTWXSt8TsWOIxjHzmhvTUJtehkofDj9HZvzkQr0FgLiBJ0ocZBANeHp967STCVeg2e
 VvkKuPJekClQcee9JAjDSgfy8Lx04cg0/aploqLYs7L+JdUtRl2oN61OTBjEdOBsrsNd
 aeuY9vSD5KzkX6L4M4ui0CeWamM6j5AABYX1cM1QU7NJYJGGkhQawrjFRnLZGwybwi7m
 LVQw==
X-Gm-Message-State: APjAAAVlgUeD56JHOzNIAyaT7Q72B/wkJc+l1/HHBrGaAGnE2PoF49Y2
 wIGvIeol08bBPJ5o8J0l7nM=
X-Google-Smtp-Source: APXvYqxRE+v9H1IcoIbEVjGpgiHeYwxH3OpX5UZylC3k/VmsFeiQhbefcbf/ILRF+iRRhullYnEG+Q==
X-Received: by 2002:a05:600c:1:: with SMTP id g1mr2900045wmc.43.1559574460884; 
 Mon, 03 Jun 2019 08:07:40 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id l4sm5460683wmh.18.2019.06.03.08.07.40
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 08:07:40 -0700 (PDT)
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190415124320.4547-1-costin.lupu@cs.pub.ro>
 <20190415124320.4547-6-costin.lupu@cs.pub.ro>
 <97ec8917-a79b-57ca-cc42-bfd5c17df761@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <34136a02-d25d-71c4-bc4d-6d1936eadfed@gmail.com>
Date: Mon, 3 Jun 2019 18:07:39 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <97ec8917-a79b-57ca-cc42-bfd5c17df761@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 5/8] patches:
 Fix atomic operations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, yuri.volchkov@neclab.eu,
 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>

T24gNi8zLzE5IDEwOjMxIEFNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4gSGkgQ29zdGluLAo+
IAo+IE9uIDQvMTUvMTkgMTo0MyBQTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4+IFdlIHVzZSBhdG9t
aWMgb3BlcmF0aW9ucyBhcyBtYWNyb3MgYmVjYXVzZSBwdGUgdXNlcyB0aGVtIGZvciBib3RoIGlu
dAo+PiBhbmQgbG9uZyB0eXBlcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNv
c3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPj4gLS0tCj4+IMKgIHBhdGNoZXMvMDAwNy1Vc2UtYXRvbWlj
LW9wZXJhdGlvbnMtYXMtbWFjcm9zLnBhdGNoIHwgNjIKPj4gKysrKysrKysrKysrKysrKysrKysr
Cj4+IMKgIC4uLmJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNo
IHwgNjMKPj4gKysrKysrKysrKysrKysrKysrKysrKwo+PiDCoCAyIGZpbGVzIGNoYW5nZWQsIDEy
NSBpbnNlcnRpb25zKCspCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDctVXNl
LWF0b21pYy1vcGVyYXRpb25zLWFzLW1hY3Jvcy5wYXRjaAo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2
NDQKPj4gcGF0Y2hlcy8wMDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBo
b3JlLnBhdGNoCj4+Cj4+IGRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDctVXNlLWF0b21pYy1vcGVy
YXRpb25zLWFzLW1hY3Jvcy5wYXRjaAo+PiBiL3BhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9wZXJh
dGlvbnMtYXMtbWFjcm9zLnBhdGNoCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAw
MDAwMDAuLjYzMzEzYjIKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9wYXRjaGVzLzAwMDctVXNl
LWF0b21pYy1vcGVyYXRpb25zLWFzLW1hY3Jvcy5wYXRjaAo+PiBAQCAtMCwwICsxLDYyIEBACj4+
ICtGcm9tIGUwY2Y2YmUyY2VjODc1NDJiZTAxYmIxMjc0MTNmMzFhMDVlYzE2MWIgTW9uIFNlcCAx
NyAwMDowMDowMCAyMDAxCj4+ICtGcm9tOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cEBnbWFpbC5j
b20+Cj4+ICtEYXRlOiBXZWQsIDMgQXByIDIwMTkgMTg6NTQ6MjEgKzAzMDAKPj4gK1N1YmplY3Q6
IFtQQVRDSCAxLzJdIFVzZSBhdG9taWMgb3BlcmF0aW9ucyBhcyBtYWNyb3MKPj4gKwo+PiArV2Ug
dXNlIGF0b21pYyBvcGVyYXRpb25zIGFzIG1hY3JvcyBiZWNhdXNlIHB0ZSB1c2VzIHRoZW0gZm9y
IGJvdGggaW50Cj4+ICthbmQgbG9uZyB0eXBlcyAoc2VlIG5leHQgcGF0Y2gpLgo+PiArCj4+ICtT
aWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+PiArLS0t
Cj4+ICsgcHRlX2dlbmVyaWNfb3NhbC5oIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwo+PiArIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspCj4+ICsKPj4gK2RpZmYgLS1n
aXQgYS9wdGVfZ2VuZXJpY19vc2FsLmggYi9wdGVfZ2VuZXJpY19vc2FsLmgKPj4gK2luZGV4IGRl
MWVhNWYuLjZiMWY0MzkgMTAwNjQ0Cj4+ICstLS0gYS9wdGVfZ2VuZXJpY19vc2FsLmgKPj4gKysr
KyBiL3B0ZV9nZW5lcmljX29zYWwuaAo+PiArQEAgLTM3OCw2ICszNzgsNyBAQCBwdGVfb3NSZXN1
bHQgcHRlX29zVGxzRnJlZSh1bnNpZ25lZCBpbnQga2V5KTsKPj4gKyAvL0B9Cj4+ICsKPj4gKyAv
KiogQG5hbWUgQXRvbWljIG9wZXJhdGlvbnMgKi8KPj4gKysjaWYgMAo+IAo+IEkgd29uZGVyIHdo
ZXRoZXIgeW91IGNvdWxkIGluc3RlYWQgcmVtb3ZlIGFsbCB0aGUgY29kZSB0aGF0IHlvdQo+IGNv
bW1lbnRlZCBvdXQgd2l0aCB0aGUgI2lmIDA/IFRob3VnaCB0aGF0J3MgcHJvYmFibHkgYSBxdWVz
dGlvbiBvZgo+IHByZWZlcmVuY2UuCj4gCgpXZSdsbCBrZWVwIHRoaXMgYXMgd2UgYWdyZWVkIGZv
ciB0aGUgbmV4dCBwYXRjaCBhcyB3ZWxsLgoKPj4gKyAvL0B7Cj4+ICsKPj4gKyAvKioKPj4gK0BA
IC00NTUsNiArNDU2LDMzIEBAIGludCBwdGVfb3NBdG9taWNEZWNyZW1lbnQoaW50ICpwZGVzdCk7
Cj4+ICvCoCAqIHJldHVybiBvcmlnVmFsOwo+PiArwqAgKi8KPj4gKyBpbnQgcHRlX29zQXRvbWlj
SW5jcmVtZW50KGludCAqcGRlc3QpOwo+PiArKyNlbHNlCj4+ICsrCj4+ICsrI2luY2x1ZGUgPHVr
L2FyY2gvYXRvbWljLmg+Cj4+ICsrCj4+ICsrI2RlZmluZSBwdGVfb3NBdG9taWNFeGNoYW5nZShw
dGFyZywgdmFsKSBcCj4+ICsrwqDCoMKgIHVrYXJjaF9leGNoYW5nZV9uKHB0YXJnLCB2YWwpCj4+
ICsrCj4+ICsrI2RlZmluZSBwdGVfb3NBdG9taWNDb21wYXJlRXhjaGFuZ2UocGRlc3QsIGV4Y2hh
bmdlLCBjb21wKSBcCj4+ICsrKHsgXAo+PiArK8KgwqDCoCBfX3R5cGVvZl9fKCpwZGVzdCkgX19v
cmlnID0gKnBkZXN0OyBcCj4+ICsrwqDCoMKgIHVrYXJjaF9jb21wYXJlX2V4Y2hhbmdlX3N5bmMo
cGRlc3QsIGNvbXAsIGV4Y2hhbmdlKTsgXAo+PiArK8KgwqDCoCBfX29yaWc7IFwKPj4gKyt9KQo+
PiArKwo+PiArKyNkZWZpbmUgcHRlX29zQXRvbWljRXhjaGFuZ2VBZGQocGFkZGVuZCwgdmFsdWUp
IFwKPj4gKyvCoMKgwqAgdWthcmNoX2ZldGNoX2FkZChwYWRkZW5kLCB2YWx1ZSkKPj4gKysKPj4g
KysjZGVmaW5lIGF0b21pY19hZGQocHRhcmcsIHZhbCkgXAo+PiArK8KgwqDCoCBfX2F0b21pY19h
ZGRfZmV0Y2gocHRhcmcsIHZhbCwgX19BVE9NSUNfU0VRX0NTVCkKPiAKPiBTaG91bGRuJ3QgdGhp
cyBiZSBfX2F0b21pY19mZXRjaF9hZGQ/IFRoZSBwdGhyZWFkX2VtYmVkZGVkIHNvdXJjZSBjb2Rl
Cj4gc2F5cyB0aGF0IHB0ZV9vc0F0b21pY3tEZSxJbn1jcmVtZW50IHJldHVybiB0aGUgb3JpZ2lu
YWwgdmFsdWUsIGJ1dCB0aGlzCj4gcmV0dXJucyB0aGUgbW9kaWZpZWQgdmFsdWUuCj4gCgpBbHRo
b3VnaCB0aGUgY29tbWVudHMgaW4gJ3B0ZV9nZW5lcmljX29zYWwuaCcgc3RhdGUgdGhhdCB0aGUg
ZnVuY3Rpb25zCnNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlLCBpZiB3ZSBkbyB0aGF0
IGFuZCB1c2UKX19hdG9taWNfZmV0Y2hfYWRkIGluc3RlYWQsIHRoZSBwdGhyZWFkIHRlc3RzIHdp
bGwgYmxvY2sgb24gJ1RTRCB0ZXN0CiMxJy4gSWYgd2UgZ28gZnVydGhlciB3ZSBjaGVjayB0aGUg
aW1wbGVtZW50YXRpb24gb2YKJ3B0aHJlYWRfYmFycmllcl93YWl0JyB3aGljaCBpcyB1c2VkIGJ5
IHRoZSBnaXZlbiB0ZXN0LCB3ZSdsbCBmaW5kIHRoZQpmb2xsb3dpbmcgY29kZToKCiAgaWYgKDAg
PT0gUFRFX0FUT01JQ19ERUNSRU1FTlQgKChpbnQgKikgJihiLT5uQ3VycmVudEJhcnJpZXJIZWln
aHQpKSkKICAgIHsKICAgICAgIC8qIHBvc3QgdGhlIHNlbWFwaG9yZSwgaWUgbGV0IHRoZSB0aHJl
YWRzIHJ1biAqLwoKd2hpY2ggaW1wbGllcyB0aGF0IFBURV9BVE9NSUNfREVDUkVNRU5UIGhhcyB0
byByZXR1cm4gdGhlIG5ldyB2YWx1ZSwgbm90CnRoZSBvcmlnaW5hbCBvbmUuIFNvIEkgZ3Vlc3Mg
dGhlIGNvbW1lbnRzIGluICdwdGVfZ2VuZXJpY19vc2FsLmgnIGFyZQphY3R1YWxseSB3cm9uZy4K
CkFzIHdlIGFncmVlZCBvZmZsaW5lIHdlJ2xsIGtlZXAgdGhpcyBhcyBpdCBpcy4KCj4gCj4+ICsr
Cj4+ICsrI2RlZmluZSBwdGVfb3NBdG9taWNEZWNyZW1lbnQocGRlc3QpIFwKPj4gKyvCoMKgwqAg
YXRvbWljX2FkZChwZGVzdCwgLTEpCj4+ICsrCj4+ICsrI2RlZmluZSBwdGVfb3NBdG9taWNJbmNy
ZW1lbnQocGRlc3QpIFwKPj4gKyvCoMKgwqAgYXRvbWljX2FkZChwZGVzdCwgMSkKPj4gKysKPj4g
KysjZW5kaWYKPj4gKyAvL0B9Cj4+ICsKPj4gKyBzdHJ1Y3QgdGltZWI7Cj4+ICstLQo+PiArMi4x
MS4wCj4+ICsKPj4gZGlmZiAtLWdpdAo+PiBhL3BhdGNoZXMvMDAwOC1idWdmaXgtRml4LWF0b21p
Yy1vcGVyYXRpb25zLW9uLXNlbWFwaG9yZS5wYXRjaAo+PiBiL3BhdGNoZXMvMDAwOC1idWdmaXgt
Rml4LWF0b21pYy1vcGVyYXRpb25zLW9uLXNlbWFwaG9yZS5wYXRjaAo+PiBuZXcgZmlsZSBtb2Rl
IDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi42Y2EzMzlkCj4+IC0tLSAvZGV2L251bGwKPj4gKysr
IGIvcGF0Y2hlcy8wMDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3Jl
LnBhdGNoCj4+IEBAIC0wLDAgKzEsNjMgQEAKPj4gK0Zyb20gMDlhMjExODdmN2U0MjYxNDdkNGQ1
ZmI5MTQ1MWVhNTVjZjdhYzI3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPj4gK0Zyb206IENv
c3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4KPj4gK0RhdGU6IFdlZCwgMyBBcHIgMjAx
OSAxODo1NjozMSArMDMwMAo+PiArU3ViamVjdDogW1BBVENIIDIvMl0gYnVnZml4IEZpeCBhdG9t
aWMgb3BlcmF0aW9ucyBvbiBzZW1hcGhvcmUKPj4gKwo+PiArRmllbGQgJ3NlbWFwaG9yZScgb2Yg
c3RydWN0IHB0aHJlYWRfb25jZV90XyBpcyBvZiB0eXBlICd2b2lkIConLgo+PiArVGhlcmVmb3Jl
IGF0b21pYyBvcGVyYXRpb25zIHNob3VsZCB1c2UgbG9uZyB0eXBlIGluc3RlYWQgb2YgaW50Lgo+
PiArCj4+ICtTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJv
Pgo+PiArLS0tCj4+ICsgcHRocmVhZF9vbmNlLmMgfCAxMiArKysrKystLS0tLS0KPj4gKyAxIGZp
bGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+PiArCj4+ICtkaWZm
IC0tZ2l0IGEvcHRocmVhZF9vbmNlLmMgYi9wdGhyZWFkX29uY2UuYwo+PiAraW5kZXggYTgxNjZm
NS4uMmI2MDUwZiAxMDA2NDQKPj4gKy0tLSBhL3B0aHJlYWRfb25jZS5jCj4+ICsrKysgYi9wdGhy
ZWFkX29uY2UuYwo+PiArQEAgLTU1LDcgKzU1LDcgQEAgcHRlX29uY2VfaW5pdF9yb3V0aW5lX2Ns
ZWFudXAodm9pZCAqIGFyZykKPj4gKwo+PiArwqDCoCAodm9pZCkgUFRFX0FUT01JQ19FWENIQU5H
RSgmb25jZV9jb250cm9sLT5zdGF0ZSxQVEVfT05DRV9JTklUKTsKPj4gKwo+PiArLcKgIGlmIChQ
VEVfQVRPTUlDX0VYQ0hBTkdFX0FERCgoaW50Kikmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsIDBM
KSkKPj4gLyogTUJSIGZlbmNlICovCj4+ICsrwqAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0VfQURE
KChsb25nKikmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsIDBMKSkKPj4gLyogTUJSIGZlbmNlICov
Cj4+ICvCoMKgwqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqAgcHRlX29zU2VtYXBob3JlUG9zdCgocHRl
X29zU2VtYXBob3JlSGFuZGxlKQo+PiBvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMSk7Cj4+ICvC
oMKgwqDCoCB9Cj4+ICtAQCAtMTM0LDcgKzEzNCw3IEBAIHB0aHJlYWRfb25jZSAocHRocmVhZF9v
bmNlX3QgKiBvbmNlX2NvbnRyb2wsIHZvaWQKPj4gKCppbml0X3JvdXRpbmUpICh2b2lkKSkKPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB3ZSBkaWRuJ3QgY3JlYXRlIHRoZSBzZW1hcGhvcmUu
Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaXQgaXMgb25seSB0aGVyZSBpZiB0aGVyZSBp
cyBzb21lb25lIHdhaXRpbmcuCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ICstwqDC
oMKgwqDCoMKgwqDCoMKgIGlmCj4+IChQVEVfQVRPTUlDX0VYQ0hBTkdFX0FERCgoaW50Kikmb25j
ZV9jb250cm9sLT5zZW1hcGhvcmUsIDBMKSkgLyogTUJSCj4+IGZlbmNlICovCj4+ICsrwqDCoMKg
wqDCoMKgwqDCoMKgIGlmCj4+IChQVEVfQVRPTUlDX0VYQ0hBTkdFX0FERCgobG9uZyopJm9uY2Vf
Y29udHJvbC0+c2VtYXBob3JlLCAwTCkpIC8qIE1CUgo+PiBmZW5jZSAqLwo+PiArwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHRlX29z
U2VtYXBob3JlUG9zdCgocHRlX29zU2VtYXBob3JlSGFuZGxlKQo+PiBvbmNlX2NvbnRyb2wtPnNl
bWFwaG9yZSxvbmNlX2NvbnRyb2wtPm51bVNlbWFwaG9yZVVzZXJzKTsKPj4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCB9Cj4+ICtAQCAtMTQzLDEyICsxNDMsMTIgQEAgcHRocmVhZF9vbmNlIChw
dGhyZWFkX29uY2VfdCAqIG9uY2VfY29udHJvbCwKPj4gdm9pZCAoKmluaXRfcm91dGluZSkgKHZv
aWQpKQo+PiArwqDCoMKgwqDCoMKgwqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBQVEVf
QVRPTUlDX0lOQ1JFTUVOVCgmb25jZV9jb250cm9sLT5udW1TZW1hcGhvcmVVc2Vycyk7Cj4+ICsK
Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqAgaWYKPj4gKCFQVEVfQVRPTUlDX0VYQ0hBTkdFX0FERCgo
aW50Kikmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsIDBMKSkgLyogTUJSCj4+IGZlbmNlICovCj4+
ICsrwqDCoMKgwqDCoMKgwqDCoMKgIGlmCj4+ICghUFRFX0FUT01JQ19FWENIQU5HRV9BREQoKGxv
bmcqKSZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIKPj4gZmVuY2UgKi8KPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHB0ZV9vc1NlbWFwaG9yZUNyZWF0ZSgwLCAocHRlX29zU2VtYXBob3JlSGFuZGxlKikgJnNl
bWEpOwo+PiArCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKFBURV9BVE9NSUNf
Q09NUEFSRV9FWENIQU5HRSgoaW50ICopCj4+ICZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwKPj4g
Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGludCkgc2VtYSwKPj4gKyvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoUFRFX0FUT01JQ19DT01QQVJFX0VYQ0hBTkdFKChs
b25nICopCj4+ICZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwKPj4gKyvCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgKGxvbmcpIHNlbWEsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCAwKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsK
Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwdGVfb3NTZW1hcGhvcmVE
ZWxldGUoKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSlzZW1hKTsKPj4gK0BAIC0xNjgsNyArMTY4LDcg
QEAgcHRocmVhZF9vbmNlIChwdGhyZWFkX29uY2VfdCAqIG9uY2VfY29udHJvbCwgdm9pZAo+PiAo
KmluaXRfcm91dGluZSkgKHZvaWQpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogd2Ugd2VyZSBsYXN0ICovCj4+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgoc2VtYSA9Cj4+ICstwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAocHRlX29zU2VtYXBob3JlSGFuZGxlKQo+PiBQVEVf
QVRPTUlDX0VYQ0hBTkdFKChpbnQgKikgJm9uY2VfY29udHJvbC0+c2VtYXBob3JlLDApKSkKPj4g
KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChwdGVfb3NTZW1hcGhv
cmVIYW5kbGUpCj4+IFBURV9BVE9NSUNfRVhDSEFOR0UoKGxvbmcgKikgJm9uY2VfY29udHJvbC0+
c2VtYXBob3JlLDApKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwdGVfb3NTZW1hcGhvcmVEZWxl
dGUoc2VtYSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICstLQo+
PiArMi4xMS4wCj4+ICsKPj4KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15: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 1hXohe-0004iR-Pm; Mon, 03 Jun 2019 15:16:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohd-0004iC-TZ
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:49 +0000
X-Inumbo-ID: 9b81d4bf-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9b81d4bf-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:49 +0000 (UTC)
IronPort-SDR: AsfCskQBurv/E/nxvs01a782+Rk+lLQ75ATlb7fpBtRhyMjXPv7ZQ1oyFbmJfihJYXs9YVyEMD
 VsxISCxk9WJA==
IronPort-PHdr: =?us-ascii?q?9a23=3ANKiJ6RNl7/A7AOQoGTwl6mtUPXoX/o7sNwtQ0K?=
 =?us-ascii?q?IMzox0Iv75rarrMEGX3/hxlliBBdydt6sdzbON7OuwACQp2tWoiDg6aptCVh?=
 =?us-ascii?q?sI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFR?=
 =?us-ascii?q?rhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTagfL9+Ngi6oAvTu8UZgoZuN7s6xw?=
 =?us-ascii?q?fUrHdPZ+lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2?=
 =?us-ascii?q?465MvwtRneVgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVz?=
 =?us-ascii?q?mu87tnRRn1gyoBKjU38nzYitZogaxbvhyvuhJxzY3Tbo6XOvpzZb/Rcc8ASG?=
 =?us-ascii?q?ZdRMtdSzBND4WhZIUPFeoBOuNYopHjqlsJthu+GQisBOXywTFOm3/2xbA62P?=
 =?us-ascii?q?kmHA7a2wwgBM4OsHXSrNnvMKcSTPi1zLTTwDrfdPNawy/96JXTfRw7u/GMWq?=
 =?us-ascii?q?t9fMzMwkcsDwPIlkicpIP4Mz+P1ekAs3KX4/R+We+tkWIqpRl9riWgy8sxkI?=
 =?us-ascii?q?XEhYIYxkra+Sh3zos5P8C0RUFlbdOiDZBerTuVN5FsTcMnW2xovSE6xaAYtp?=
 =?us-ascii?q?OjZygKzYgnxwbYa/yab4iE+hLjW/iVITd/nH9lZre/iAyz8Uik0OHzStK03E?=
 =?us-ascii?q?xSripYidbArGoN1xvL5siGTPty4Fuh1C6S2w3c9+1IO0M5mKrBJ5I/3LI9lI?=
 =?us-ascii?q?AfvErbEi/zgkr2jauWdks++uiv7uTqeqnpppiHN49oiwH+NL4imsiiAeQgLw?=
 =?us-ascii?q?gDRHSU+f+m2L374E32W69GjucxkqXBqpDVOdwbprKlAw9Syosj7he/DzGn0N?=
 =?us-ascii?q?QfhnkLNU9KdwyZj4f3P1HDO/T4Dfakg1Swizdn3f/HMaPnApnXKXjDirjhd6?=
 =?us-ascii?q?5n60FA0Aoz0cxf55VMB78BJPLzXVXxtN3CAR8/KQC63vroCNV41oMfRG2PHr?=
 =?us-ascii?q?SUMKXMvlCU4uIgOfKDaJULtzbgeLAZ4KvrjHk4nkRYcaS30J8/bHGjAu8gM0?=
 =?us-ascii?q?ifJ332jYQvC2AP6yE5V/DrjhWmTCZOLyK5WLkg5zd9DJ++EK/IXca1nbbHxi?=
 =?us-ascii?q?DtTc4eXXxPFl3ZSSSgTI6DQfpZMC8=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BkAAB8OfVcjAPjVY1mHQEBBQEHBQG?=
 =?us-ascii?q?BUwYBCwGDTAEBHhIojQ+kdYF7CQEBAToBAgEBhEACgzU2Bw4BAwEBBQEBAQE?=
 =?us-ascii?q?EARMBAQEmTAyCOiKCbwMDeRA/ElcZgyKCD6s3hUeDHYFGgTQBhwKGLj+JcoU?=
 =?us-ascii?q?VBJQulEsHAoIPWgSSSCeCEpRcpHUnCyWBWTMag1+CKYoNhB88AQExgQYBAZB?=
 =?us-ascii?q?NAQE?=
X-IPAS-Result: =?us-ascii?q?A2BkAAB8OfVcjAPjVY1mHQEBBQEHBQGBUwYBCwGDTAEBH?=
 =?us-ascii?q?hIojQ+kdYF7CQEBAToBAgEBhEACgzU2Bw4BAwEBBQEBAQEEARMBAQEmTAyCO?=
 =?us-ascii?q?iKCbwMDeRA/ElcZgyKCD6s3hUeDHYFGgTQBhwKGLj+JcoUVBJQulEsHAoIPW?=
 =?us-ascii?q?gSSSCeCEpRcpHUnCyWBWTMag1+CKYoNhB88AQExgQYBAZBNAQE?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485103"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:44 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id B1E761A601A6;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id EeYPvCTX5hyI; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 7DB711A601FE;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id K5C_OgCdcIn5; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 5DFA81A6019B;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:34 +0300
Message-Id: <20190603151640.22507-3-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 2/8] Add
 .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@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>

U2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KUmV2aWV3
ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KLS0tCiAu
Z2l0aWdub3JlIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdl
ZCwgMjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRpZ25vcmUKCmRpZmYg
LS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43NWQyZmQzCi0tLSAvZGV2L251bGwKKysrIGIvLmdpdGlnbm9yZQpAQCAtMCww
ICsxLDI3IEBACisqLmRlcGVuZAorKi5vCisqLmEKKyouZAorKi5zbworKi5vcmlnCisqLnJlagor
Ki5iYWsKKyouc3dwCisqfgorLCoKK1wjKlwjCisuXCMqCitcI18qXCMKKy5cI18qCishLmdpdGln
bm9yZQorLioKKworIyBnbnUgZ2xvYmFsIGZpbGVzCitHUEFUSAorR1JUQUdTCitHU1lNUworR1RB
R1MKKworIyBjc2NvcGUgZmlsZXMKK2NzY29wZS4qCituY3Njb3BlLioKLS0gCjIuMTEuMAoKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15: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 1hXohe-0004iW-RZ; Mon, 03 Jun 2019 15:16:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohd-0004iD-Uc
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:49 +0000
X-Inumbo-ID: 998972fb-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 998972fb-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:46 +0000 (UTC)
IronPort-SDR: P3WNWkzngQ3QzWPZhkaW67zO6jqT92n86rqkxYiQPiz5NdueFKJgco+hOreLxFAkq5d8vl156S
 9TLbiYPwSNRQ==
IronPort-PHdr: =?us-ascii?q?9a23=3ApD75FRRYCO/+2+sR+v6/KLwr89psv+yvbD5Q0Y?=
 =?us-ascii?q?Iujvd0So/mwa6yZRyN2/xhgRfzUJnB7Loc0qyK6vmmADdfqsbY+Fk5M7V0Hy?=
 =?us-ascii?q?cfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFR?=
 =?us-ascii?q?rwLxd6KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/IAiroQnLq8Ubj4lvJqkyxx?=
 =?us-ascii?q?fUv3BFZ/lYyWR0KFyJgh3y/N2w/Jlt8yRRv/Iu6ctNWrjkcqo7ULJVEi0oP3?=
 =?us-ascii?q?g668P3uxbDSxCP5mYHXWUNjhVIGQnF4wrkUZr3ryD3q/By2CiePc3xULA0RT?=
 =?us-ascii?q?Gv5LplRRP0lCsKMSMy/WfKgcJyka1bugqsqRxhzYDJbo+bN/1wc7jBcd8GX2?=
 =?us-ascii?q?dNQtxcWzBdDo66coABD/ABPeFdr4TluVYOqgC+BRWtBOPp1zRGgGL23bUn0+?=
 =?us-ascii?q?88FgzJwAsgH8kSsHTVqtX5LqMSUf2tzKnV1jjMc+hW1S3l6IjVaR8tu+uMXb?=
 =?us-ascii?q?VpfMfX1EIhFBvFg02NpYHqIj+ZzOcAvmiB4+Z+S+6iiXQrpg9prjSyycogl5?=
 =?us-ascii?q?PFi4EVx1ze6yl0zog4KcelREN0f9KpFoZbuTuAOItsWMwiRnlluCM9yrIbp5?=
 =?us-ascii?q?G2ZDMKyJE7xx7HbPyHbpSI7grjVOmPJTd4g2poeKy6hxmo8EigzvfwWdWv0F?=
 =?us-ascii?q?pQtipFj8LDumoX1xzU8sSHS/198Vm92TuXygze5fxILVo3mKfbMZIt3KA8m5?=
 =?us-ascii?q?gJvUnNBiP2nV/5jK6SdkUq4Oio7OHnb636qZ+bLI90lgD+MqI0lsy7HOQ4Kh?=
 =?us-ascii?q?UOUnOH9uSnzrHj5VD5T65Qgv0slanVqIraKtgDpq6lHw9V1Z4u6xO+Dzeg0d?=
 =?us-ascii?q?QYmmIHIEtYdx2ZkYjmJVXOLev8Dfe+mFSsjCxry+rJP7L/BJXBNH/DkK3ufb?=
 =?us-ascii?q?xl8U5T1BIzzcxD55JTErwPIPbzWkjrtNzZFBA5NRa4zfv7B9V904MeWH+AAr?=
 =?us-ascii?q?OCPaPUr1CH+uYvLPOXa4MPpjn9Nqtt2/m7iH4/mFgGOKWkw5YTQHS5Beh9ZV?=
 =?us-ascii?q?WUZzzrmNhSP30Nu18VS/f2iVvKdSNLej7mVKUn+jA9Toa7FZrrTZvrmKGLmj?=
 =?us-ascii?q?28SM4FLltaA0yBRC+7P76PXO0BPXqf?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BVAAB8OfVcjAPjVY1mHgEGBwaBUgg?=
 =?us-ascii?q?LAYFmgRRSAQEeEiiND6R1gXsJAQEBKREBAgEBhECDNzUIDgEDAQEFAQEBAQQ?=
 =?us-ascii?q?BEwEBASZMDII6IoNuT4QkAYIOqzeFR4MdgUaBNIcDhi4/gRGIYYUVBJQulEs?=
 =?us-ascii?q?HAoIPWgSFYYxnJ4MKk2SkdSIDMoFZMxqDXwmBWwFEHW4BB4ZLg3KCXDwBATG?=
 =?us-ascii?q?BBgEBkE0BAQ?=
X-IPAS-Result: =?us-ascii?q?A2BVAAB8OfVcjAPjVY1mHgEGBwaBUggLAYFmgRRSAQEeE?=
 =?us-ascii?q?iiND6R1gXsJAQEBKREBAgEBhECDNzUIDgEDAQEFAQEBAQQBEwEBASZMDII6I?=
 =?us-ascii?q?oNuT4QkAYIOqzeFR4MdgUaBNIcDhi4/gRGIYYUVBJQulEsHAoIPWgSFYYxnJ?=
 =?us-ascii?q?4MKk2SkdSIDMoFZMxqDXwmBWwFEHW4BB4ZLg3KCXDwBATGBBgEBkE0BAQ?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485101"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:44 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 7BD261A601F9;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id lqwfivjf6s7X; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 5FE5C1A601A6;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id BtFysR1SP3eZ; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 4B3931A60195;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:32 +0300
Message-Id: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 0/8] Initial
 port of pthread-embedded library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@neclab.eu
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>

VGhpcyBwYXRjaGVzIGludHJvZHVjZSBzdXBwb3J0IGZvciBwdGhyZWFkLWVtYmVkZGVkIHRvIFVu
aWtyYWZ0LgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBBZGQgYSBmZXcgd29yZHMgYWJvdXQgdGVzdHMg
aW4gUkVBRE1FCi0gUmV2aXNpdCBSdWJ5IGZ1bmN0aW9ucwotIEFkZCBTUERYIGxpY2Vuc2UgaWRl
bnRpZmllcnMKLSBBZGQgY29uc3RydWN0b3IKCkNvc3RpbiBMdXB1ICg4KToKICBBZGQgZG9jdW1l
bnRhdGlvbgogIEFkZCAuZ2l0aWdub3JlCiAgcGF0Y2hlczogQWRkIHBhdGNoZXMgZm9yIHByb3Bl
ciBidWlsZGluZyBvZiBvcmlnaW5hbCBsaWJyYXJ5CiAgSW5pdGlhbCBwb3J0IG9mIHB0aHJlYWQt
ZW1iZWRkZWQgdG8gVW5pa3JhZnQKICBwYXRjaGVzOiBGaXggYXRvbWljIG9wZXJhdGlvbnMKICBE
aXNhYmxlIGF0b21pYyBmdW5jdGlvbnMKICBBZGQgbWlzc2luZyBwdGhyZWFkIGZ1bmN0aW9ucwog
IGluY2x1ZGUvcHRocmVhZC5oOiBHdWFyZCBDIGNvZGUgZm9yIEMrKwoKIC5naXRpZ25vcmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI3ICsKIENPRElOR19TVFlM
RS5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIENPTlRSSUJV
VElORy5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIENPUFlJ
TkcubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMwICsrCiBD
b25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCAr
KwogTUFJTlRBSU5FUlMubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
MTAgKwogTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAzMjggKysrKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMTUgKwogYXR0cmlidXRlcy5jICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAxNTQgKysrKysrCiBleHBvcnRzeW1zLnVrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5MCArKysrCiBpbmNsdWRlL3B0ZV9vc2FsLmgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArCiBpbmNsdWRlL3B0ZV90eXBl
cy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBpbmNsdWRlL3B0aHJl
YWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MiArKwogaW5jbHVkZS9z
eXMvX3B0aHJlYWR0eXBlcy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogLi4ueC1T
ZXQtdHlwZS1zaXplLW9mLXJlc3VsdC11c2VkLWluLXB0aHJlYWQucGF0Y2ggfCA0OTQgKysrKysr
KysrKysrKysrKysrKwogLi4ueC1QYXNzLXJpZ2h0LWFyZ3VtZW50cy1vbi10ZXN0cy1leGl0NC1h
bmQucGF0Y2ggfCAgNTQgKysKIC4uLngtRml4LW1hY3JvLWRlZmluaXRpb25zLWZvci10ZXN0cy1v
bmNlMy1hLnBhdGNoIHwgIDM2ICsrCiAuLi5sZS1wcmlvcml0eS10ZXN0cy11bnRpbC13ZS1hZGQt
cHJlZW1wdGl2ZS5wYXRjaCB8ICAyOCArKwogcGF0Y2hlcy8wMDA1LVVzZS1VbmlrcmFmdC15aWVs
ZC1mdW5jdGlvbi5wYXRjaCAgICAgfCAgMjIgKwogLi4uYWRlci1pbmNsdXNpb25zLWZvci1mdW5j
dGlvbnMtZnJvbS1oZWFkZXIucGF0Y2ggfCAgNDAgKysKIHBhdGNoZXMvMDAwNy1Vc2UtYXRvbWlj
LW9wZXJhdGlvbnMtYXMtbWFjcm9zLnBhdGNoIHwgIDYyICsrKwogLi4uYnVnZml4LUZpeC1hdG9t
aWMtb3BlcmF0aW9ucy1vbi1zZW1hcGhvcmUucGF0Y2ggfCAgNjMgKysrCiBwdGVfb3NhbC5jICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDU0NSArKysrKysrKysrKysr
KysrKysrKysKIDIzIGZpbGVzIGNoYW5nZWQsIDIxMjAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IC5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBD
T1BZSU5HLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTUFJTlRBSU5FUlMubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51awogY3JlYXRl
IG1vZGUgMTAwNjQ0IFJFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGF0dHJpYnV0ZXMuYwog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs
dWRlL3B0ZV9vc2FsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3B0ZV90eXBlcy5oCiBj
cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9wdGhyZWFkLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp
bmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAw
MDEtdGVzdHMtYnVnZml4LVNldC10eXBlLXNpemUtb2YtcmVzdWx0LXVzZWQtaW4tcHRocmVhZC5w
YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMi10ZXN0cy1idWdmaXgtUGFzcy1y
aWdodC1hcmd1bWVudHMtb24tdGVzdHMtZXhpdDQtYW5kLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2
NDQgcGF0Y2hlcy8wMDAzLXRlc3RzLWJ1Z2ZpeC1GaXgtbWFjcm8tZGVmaW5pdGlvbnMtZm9yLXRl
c3RzLW9uY2UzLWEucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDQtdGVzdHMt
RGlzYWJsZS1wcmlvcml0eS10ZXN0cy11bnRpbC13ZS1hZGQtcHJlZW1wdGl2ZS5wYXRjaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwNS1Vc2UtVW5pa3JhZnQteWllbGQtZnVuY3Rpb24u
cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDYtU2VwYXJhdGUtaGVhZGVyLWlu
Y2x1c2lvbnMtZm9yLWZ1bmN0aW9ucy1mcm9tLWhlYWRlci5wYXRjaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IHBhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9wZXJhdGlvbnMtYXMtbWFjcm9zLnBhdGNoCiBj
cmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlv
bnMtb24tc2VtYXBob3JlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHRlX29zYWwuYwoKLS0g
CjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:16: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 1hXohf-0004if-TK; Mon, 03 Jun 2019 15:16:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohe-0004iM-Km
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:50 +0000
X-Inumbo-ID: 9bf73d21-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9bf73d21-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:49 +0000 (UTC)
IronPort-SDR: MqSHRv1wJ+mwOiEuk95Pjy+y0vs7+Of5yNqWUtnrzn43owxLz1qHq2iZqTB/Ti9KF81h0i4Wm7
 cSIZPmP+Bl1A==
IronPort-PHdr: =?us-ascii?q?9a23=3AZj7LbxK174IkiqfQONmcpTZWNBhigK39O0sv0r?=
 =?us-ascii?q?FitYgeKP7xwZ3uMQTl6Ol3ixeRBMOHsqsC0rGJ+PC5EUU7or+5+EgYd5JNUx?=
 =?us-ascii?q?JXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQ?=
 =?us-ascii?q?viPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCegbb9oMRm7owfcusYVjId/N6081g?=
 =?us-ascii?q?bHrnxUdupM2GhmP0iTnxHy5sex+J5s7SFdsO8/+sBDTKv3Yb02QaRXAzo6PW?=
 =?us-ascii?q?814tbrtQTYQguU+nQcSGQWnQFWDAXD8Rr3Q43+sir+tup6xSmaIcj7Rq06VD?=
 =?us-ascii?q?i+86tmTgLjhSEaPDA77W7XkNR9gqJFrhy8qRJxwInab4ObNPdlYq/RYckXSX?=
 =?us-ascii?q?ZbU8pNSyBMBJ63YYsVD+oGOOZVt5fwp1wVrRuiBAmsAv7kxDlVhn/uwK0xzu?=
 =?us-ascii?q?MsHh3B3Aw7A9IOsXLUoM/xNKcPSeC10bLFwinYb/9MwTf99ZPHfgo7ofGLRL?=
 =?us-ascii?q?99d9fax0o3Fw7dk1mdppHpMymW2+kNqWSX8fRsWOC1h2Mpsw19vzeiyto2ho?=
 =?us-ascii?q?TKho8Z0E7I+Ct3zYovONG1R1B3bNi5G5VKrS6aLZF5QsY6TmFtvyY116MJtI?=
 =?us-ascii?q?agfCgP1JQn3xnfa+Gbc4SQ4hLsSuKRITBgiXJ7fbKwnRey8Uy6xuLgTcm4yk?=
 =?us-ascii?q?5KrjdendXWrHAN0ATf6smBSvRj4keswSuD2g/O5u1eIk05lbDXJ4A/zrMyjJ?=
 =?us-ascii?q?Yev1zPHirsl0X3iK+WeF8k+u+t6+n/frrmoYScN5N1igH4KKguntG/AfwlMg?=
 =?us-ascii?q?UVQ2eb4v6w1KX+/ULiWrlKlPo2nrHDsJ/GPcQburK5AwhN34Ym6ha/CTam0N?=
 =?us-ascii?q?MDnXUeMV1KZgyHgJbtO1zVJPD4DOy/g0i3kDtxyPHJILvhDo/KLnjZn7frZa?=
 =?us-ascii?q?x95FJEyAov0dBf4IpZBLEFIPL0QE/xtcbXDhkjPwKp3+nnCNB91oIDVmKTGa?=
 =?us-ascii?q?KZNr3dvkOM5u01OOaAfpEauCuuY8Qisvvvi34+ghoRcLek2bMTaWukBbJ2Lk?=
 =?us-ascii?q?PfZmDj0fkbFmJflQ0lUO3swHmfSSMbM321RL494Hc/FZq7JYzYAJiwivqb23?=
 =?us-ascii?q?HoTdVtemlaBwXUQj/TfIKeVqJUZQ=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BkAwB8OfVcjAPjVY1mHQEBBQEHBQG?=
 =?us-ascii?q?BZYNNAQEeEiiND6ZwCQEBAToBAgEBhEACgzU4EwEDAQEFAQEBAQQBEwEBASZ?=
 =?us-ascii?q?Ygjoigm8DA3kQPxJXGYMigg+rN4VHgx2BRoE0hwOGLj+JcoUVBJQulEsHAoI?=
 =?us-ascii?q?PWgSSSCeWbqR1NyCBWTMag1+CKY4sPAEBMYEGAQGQTQEB?=
X-IPAS-Result: =?us-ascii?q?A2BkAwB8OfVcjAPjVY1mHQEBBQEHBQGBZYNNAQEeEiiND?=
 =?us-ascii?q?6ZwCQEBAToBAgEBhEACgzU4EwEDAQEFAQEBAQQBEwEBASZYgjoigm8DA3kQP?=
 =?us-ascii?q?xJXGYMigg+rN4VHgx2BRoE0hwOGLj+JcoUVBJQulEsHAoIPWgSSSCeWbqR1N?=
 =?us-ascii?q?yCBWTMag1+CKY4sPAEBMYEGAQGQTQEB?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485106"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:45 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id EE8441A6019B;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 5GTA_GTQRRJv; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id D14D81A60205;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id PmLI64S-UUgA; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id BAE4C1A6019B;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:38 +0300
Message-Id: <20190603151640.22507-7-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 6/8] Disable
 atomic 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: Florian.Schmidt@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>

V2UgZGlzYWJsZSB0aGUgYXRvbWljIGZ1bmN0aW9uIGdpdmVuIHRoYXQgd2UgYXJlIHVzaW5nIHRo
ZW0gYXMgbWFjcm9zLgoKU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNz
LnB1Yi5ybz4KLS0tCiBwdGVfb3NhbC5jIHwgMyArKysKIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy
dGlvbnMoKykKCmRpZmYgLS1naXQgYS9wdGVfb3NhbC5jIGIvcHRlX29zYWwuYwppbmRleCA1Y2Jj
MGEyLi4yM2RjZDAxIDEwMDY0NAotLS0gYS9wdGVfb3NhbC5jCisrKyBiL3B0ZV9vc2FsLmMKQEAg
LTQ1MCw2ICs0NTAsOCBAQCBwdGVfb3NSZXN1bHQgcHRlX29zU2VtYXBob3JlQ2FuY2VsbGFibGVQ
ZW5kKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSBoLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiAw
CisvKiBXZSB1c2UgbWFjcm9zIGluc3RlYWQgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgog
ICogQXRvbWljIE9wZXJhdGlvbnMKQEAgLTQ4OSw2ICs0OTEsNyBAQCBpbnQgcHRlX29zQXRvbWlj
SW5jcmVtZW50KGludCAqcGRlc3QpCiB7CiAJcmV0dXJuIGF0b21pY19hZGQocGRlc3QsIDEpOwog
fQorI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgotLSAKMi4xMS4wCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:16: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 1hXohg-0004kP-Vw; Mon, 03 Jun 2019 15:16:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohf-0004id-Ra
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:51 +0000
X-Inumbo-ID: 9c6ed7ae-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9c6ed7ae-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:50 +0000 (UTC)
IronPort-SDR: Z5iI4wG9osHaENMBJnmE61G5/uqaiN4Ah7xzJhd9NXI71AKyS7iRhStlm1KJVTaX9t2O0xPlQ5
 lENFSAqrPfEg==
IronPort-PHdr: =?us-ascii?q?9a23=3Adjw/0xe8nP7Zm0nEaFRCNK8TlGMj4u6mDksu8p?=
 =?us-ascii?q?Mizoh2WeGdxcS4Zh7h7PlgxGXEQZ/co6odzbaP6ua5AjNLsc/JmUtBWaQEbw?=
 =?us-ascii?q?UCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFR?=
 =?us-ascii?q?rlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQi6oR/MusQYg4ZuJaU8xg?=
 =?us-ascii?q?bUqXZUZupawn9lK0iOlBjm/Mew+5Bj8yVUu/0/8sNLTLv3caclQ7FGFToqK2?=
 =?us-ascii?q?866tHluhnFVguP+2ATUn4KnRpSAgjK9w/1U5HsuSbnrOV92S2aPcrrTbAoXD?=
 =?us-ascii?q?mp8qlmRAP0hCoBKjU09nzchM5tg6JBuB+vpwJxzZPabo+WM/RxfK3dcMgGSW?=
 =?us-ascii?q?ZdRMtdSzZMDp+gY4YJEuEPPfxYr474p1YWsxa+AhKsBP/uyj9Om3T427A60/?=
 =?us-ascii?q?w8EQrb2wEvA9UOsG/IrNX0MqceS+S1zLTQzTXedP5ZxSz95JLQchA8uv6AR6?=
 =?us-ascii?q?hwcc3IxEQpCgjLjU2QpJT4Mz6ay+gBqWuW4up6We6xlWIqqRt9rza3yssxhY?=
 =?us-ascii?q?TFm5gZx1PE+Clj3oo4K9O1RFRmbdOrDpddsTyROZFsTcM4WW5ovT43yrgBuZ?=
 =?us-ascii?q?GmYicH0I8nxxvDa/yfdIiI/w7jWP6RIThmgHJlf6qyhwi38Ue6y+38UtO430?=
 =?us-ascii?q?pRriZfitnMq2sC2wbJ6siAUvd9/0Gh1iiT1w3L9+1JLl04mbDYJpMh2LI8iI?=
 =?us-ascii?q?QfvEbZEiL4gEn2ibWZdkQg+uim8eTnZbDmq4eAOI9zkQH+LqUumsqlDeQ8Lw?=
 =?us-ascii?q?gOR3Wb9P+g273450H5WKhKgeYsnqnDt5DWPd4bqbKhAw9JzoYj7A6yDzKn0N?=
 =?us-ascii?q?QenHkHK0lFdAuagIf3JVHBPvT4AOy7g1Stizdr2+vGMqfuA5rTKHjPirDhfa?=
 =?us-ascii?q?xy60RE0go80chf545ICrEGOP/9WkvxtNvCDh84KQO0xfzrBshh2YMeXGKPA7?=
 =?us-ascii?q?KWML/JvF+O+O0gP+2Ma5UOtzrnNfcl+q2msXhsnF4bfK6ymJcadn28NvBnOF?=
 =?us-ascii?q?mCJ2rhhJEGC2hZkBA5SbnBj0aeUDgbQ2uqQupo7TYgFIOgS4PeXp2Fi6fHxD?=
 =?us-ascii?q?qxWIdRMDMVQmuQGGvlIt3XE8wHbzifd5ds?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BYAgB8OfVcjAPjVY1mHAEBAQQBAQc?=
 =?us-ascii?q?EAQGBZYNNAQEeEiiND4wYiUKRFgkBAQE6AQIBAYRAAoM1OBMBAwEBBQEBAQE?=
 =?us-ascii?q?EARMBAQEmWII6IoJuAQMDJ1IQHAMBAh0SIS4IGYMigWsDIasEM4VHgjMNXYF?=
 =?us-ascii?q?GgTSHA4YuP4RhghqIDASTHoEQlA0+BwKCD1oEjmuDXSeWbpVsjwk3IIFZMxq?=
 =?us-ascii?q?DX4IbDgmOIzwBATGBBgEBkE0BAQ?=
X-IPAS-Result: =?us-ascii?q?A2BYAgB8OfVcjAPjVY1mHAEBAQQBAQcEAQGBZYNNAQEeE?=
 =?us-ascii?q?iiND4wYiUKRFgkBAQE6AQIBAYRAAoM1OBMBAwEBBQEBAQEEARMBAQEmWII6I?=
 =?us-ascii?q?oJuAQMDJ1IQHAMBAh0SIS4IGYMigWsDIasEM4VHgjMNXYFGgTSHA4YuP4Rhg?=
 =?us-ascii?q?hqIDASTHoEQlA0+BwKCD1oEjmuDXSeWbpVsjwk3IIFZMxqDX4IbDgmOIzwBA?=
 =?us-ascii?q?TGBBgEBkE0BAQ?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485105"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:45 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id E23351A60195;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id Am4JS6mQEPrA; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id CA9B31A601BB;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id R4w1q2LdeT_t; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id AC61C1A60195;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:37 +0300
Message-Id: <20190603151640.22507-6-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 5/8] patches:
 Fix atomic operations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@neclab.eu
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>

V2UgdXNlIGF0b21pYyBvcGVyYXRpb25zIGFzIG1hY3JvcyBiZWNhdXNlIHB0ZSB1c2VzIHRoZW0g
Zm9yIGJvdGggaW50CmFuZCBsb25nIHR5cGVzLgoKU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUg
PGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KLS0tCiBwYXRjaGVzLzAwMDctVXNlLWF0b21pYy1vcGVy
YXRpb25zLWFzLW1hY3Jvcy5wYXRjaCB8IDYyICsrKysrKysrKysrKysrKysrKysrKwogLi4uYnVn
Zml4LUZpeC1hdG9taWMtb3BlcmF0aW9ucy1vbi1zZW1hcGhvcmUucGF0Y2ggfCA2MyArKysrKysr
KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspCiBjcmVh
dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDA3LVVzZS1hdG9taWMtb3BlcmF0aW9ucy1hcy1tYWNy
b3MucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDgtYnVnZml4LUZpeC1hdG9t
aWMtb3BlcmF0aW9ucy1vbi1zZW1hcGhvcmUucGF0Y2gKCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAw
MDctVXNlLWF0b21pYy1vcGVyYXRpb25zLWFzLW1hY3Jvcy5wYXRjaCBiL3BhdGNoZXMvMDAwNy1V
c2UtYXRvbWljLW9wZXJhdGlvbnMtYXMtbWFjcm9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjYzMzEzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzLzAwMDct
VXNlLWF0b21pYy1vcGVyYXRpb25zLWFzLW1hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitG
cm9tIGUwY2Y2YmUyY2VjODc1NDJiZTAxYmIxMjc0MTNmMzFhMDVlYzE2MWIgTW9uIFNlcCAxNyAw
MDowMDowMCAyMDAxCitGcm9tOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cEBnbWFpbC5jb20+CitE
YXRlOiBXZWQsIDMgQXByIDIwMTkgMTg6NTQ6MjEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJd
IFVzZSBhdG9taWMgb3BlcmF0aW9ucyBhcyBtYWNyb3MKKworV2UgdXNlIGF0b21pYyBvcGVyYXRp
b25zIGFzIG1hY3JvcyBiZWNhdXNlIHB0ZSB1c2VzIHRoZW0gZm9yIGJvdGggaW50CithbmQgbG9u
ZyB0eXBlcyAoc2VlIG5leHQgcGF0Y2gpLgorCitTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8
Y29zdGluLmx1cHVAY3MucHViLnJvPgorLS0tCisgcHRlX2dlbmVyaWNfb3NhbC5oIHwgMjggKysr
KysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25z
KCspCisKK2RpZmYgLS1naXQgYS9wdGVfZ2VuZXJpY19vc2FsLmggYi9wdGVfZ2VuZXJpY19vc2Fs
LmgKK2luZGV4IGRlMWVhNWYuLjZiMWY0MzkgMTAwNjQ0CistLS0gYS9wdGVfZ2VuZXJpY19vc2Fs
LmgKKysrKyBiL3B0ZV9nZW5lcmljX29zYWwuaAorQEAgLTM3OCw2ICszNzgsNyBAQCBwdGVfb3NS
ZXN1bHQgcHRlX29zVGxzRnJlZSh1bnNpZ25lZCBpbnQga2V5KTsKKyAvL0B9CisgCisgLyoqIEBu
YW1lIEF0b21pYyBvcGVyYXRpb25zICovCisrI2lmIDAKKyAvL0B7CisgCisgLyoqCitAQCAtNDU1
LDYgKzQ1NiwzMyBAQCBpbnQgcHRlX29zQXRvbWljRGVjcmVtZW50KGludCAqcGRlc3QpOworICAq
IHJldHVybiBvcmlnVmFsOworICAqLworIGludCBwdGVfb3NBdG9taWNJbmNyZW1lbnQoaW50ICpw
ZGVzdCk7CisrI2Vsc2UKKysKKysjaW5jbHVkZSA8dWsvYXJjaC9hdG9taWMuaD4KKysKKysjZGVm
aW5lIHB0ZV9vc0F0b21pY0V4Y2hhbmdlKHB0YXJnLCB2YWwpIFwKKysJdWthcmNoX2V4Y2hhbmdl
X24ocHRhcmcsIHZhbCkKKysKKysjZGVmaW5lIHB0ZV9vc0F0b21pY0NvbXBhcmVFeGNoYW5nZShw
ZGVzdCwgZXhjaGFuZ2UsIGNvbXApIFwKKysoeyBcCisrCV9fdHlwZW9mX18oKnBkZXN0KSBfX29y
aWcgPSAqcGRlc3Q7IFwKKysJdWthcmNoX2NvbXBhcmVfZXhjaGFuZ2Vfc3luYyhwZGVzdCwgY29t
cCwgZXhjaGFuZ2UpOyBcCisrCV9fb3JpZzsgXAorK30pCisrCisrI2RlZmluZSBwdGVfb3NBdG9t
aWNFeGNoYW5nZUFkZChwYWRkZW5kLCB2YWx1ZSkgXAorKwl1a2FyY2hfZmV0Y2hfYWRkKHBhZGRl
bmQsIHZhbHVlKQorKworKyNkZWZpbmUgYXRvbWljX2FkZChwdGFyZywgdmFsKSBcCisrCV9fYXRv
bWljX2FkZF9mZXRjaChwdGFyZywgdmFsLCBfX0FUT01JQ19TRVFfQ1NUKQorKworKyNkZWZpbmUg
cHRlX29zQXRvbWljRGVjcmVtZW50KHBkZXN0KSBcCisrCWF0b21pY19hZGQocGRlc3QsIC0xKQor
KworKyNkZWZpbmUgcHRlX29zQXRvbWljSW5jcmVtZW50KHBkZXN0KSBcCisrCWF0b21pY19hZGQo
cGRlc3QsIDEpCisrCisrI2VuZGlmCisgLy9AfQorIAorIHN0cnVjdCB0aW1lYjsKKy0tIAorMi4x
MS4wCisKZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAwOC1idWdmaXgtRml4LWF0b21pYy1vcGVyYXRp
b25zLW9uLXNlbWFwaG9yZS5wYXRjaCBiL3BhdGNoZXMvMDAwOC1idWdmaXgtRml4LWF0b21pYy1v
cGVyYXRpb25zLW9uLXNlbWFwaG9yZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42Y2EzMzlkCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDA4LWJ1Z2ZpeC1G
aXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAK
K0Zyb20gMDlhMjExODdmN2U0MjYxNDdkNGQ1ZmI5MTQ1MWVhNTVjZjdhYzI3NCBNb24gU2VwIDE3
IDAwOjAwOjAwIDIwMDEKK0Zyb206IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4K
K0RhdGU6IFdlZCwgMyBBcHIgMjAxOSAxODo1NjozMSArMDMwMAorU3ViamVjdDogW1BBVENIIDIv
Ml0gYnVnZml4IEZpeCBhdG9taWMgb3BlcmF0aW9ucyBvbiBzZW1hcGhvcmUKKworRmllbGQgJ3Nl
bWFwaG9yZScgb2Ygc3RydWN0IHB0aHJlYWRfb25jZV90XyBpcyBvZiB0eXBlICd2b2lkIConLgor
VGhlcmVmb3JlIGF0b21pYyBvcGVyYXRpb25zIHNob3VsZCB1c2UgbG9uZyB0eXBlIGluc3RlYWQg
b2YgaW50LgorCitTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPgorLS0tCisgcHRocmVhZF9vbmNlLmMgfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hh
bmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHRo
cmVhZF9vbmNlLmMgYi9wdGhyZWFkX29uY2UuYworaW5kZXggYTgxNjZmNS4uMmI2MDUwZiAxMDA2
NDQKKy0tLSBhL3B0aHJlYWRfb25jZS5jCisrKysgYi9wdGhyZWFkX29uY2UuYworQEAgLTU1LDcg
KzU1LDcgQEAgcHRlX29uY2VfaW5pdF9yb3V0aW5lX2NsZWFudXAodm9pZCAqIGFyZykKKyAKKyAg
ICh2b2lkKSBQVEVfQVRPTUlDX0VYQ0hBTkdFKCZvbmNlX2NvbnRyb2wtPnN0YXRlLFBURV9PTkNF
X0lOSVQpOworIAorLSAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0VfQUREKChpbnQqKSZvbmNlX2Nv
bnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVuY2UgKi8KKysgIGlmIChQVEVfQVRPTUlD
X0VYQ0hBTkdFX0FERCgobG9uZyopJm9uY2VfY29udHJvbC0+c2VtYXBob3JlLCAwTCkpIC8qIE1C
UiBmZW5jZSAqLworICAgICB7CisgICAgICAgcHRlX29zU2VtYXBob3JlUG9zdCgocHRlX29zU2Vt
YXBob3JlSGFuZGxlKSBvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMSk7CisgICAgIH0KK0BAIC0x
MzQsNyArMTM0LDcgQEAgcHRocmVhZF9vbmNlIChwdGhyZWFkX29uY2VfdCAqIG9uY2VfY29udHJv
bCwgdm9pZCAoKmluaXRfcm91dGluZSkgKHZvaWQpKQorICAgICAgICAgICAgKiB3ZSBkaWRuJ3Qg
Y3JlYXRlIHRoZSBzZW1hcGhvcmUuCisgICAgICAgICAgICAqIGl0IGlzIG9ubHkgdGhlcmUgaWYg
dGhlcmUgaXMgc29tZW9uZSB3YWl0aW5nLgorICAgICAgICAgICAgKi8KKy0gICAgICAgICAgaWYg
KFBURV9BVE9NSUNfRVhDSEFOR0VfQUREKChpbnQqKSZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwg
MEwpKSAvKiBNQlIgZmVuY2UgKi8KKysgICAgICAgICAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0Vf
QUREKChsb25nKikmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsIDBMKSkgLyogTUJSIGZlbmNlICov
CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgcHRlX29zU2VtYXBob3JlUG9zdCgocHRl
X29zU2VtYXBob3JlSGFuZGxlKSBvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSxvbmNlX2NvbnRyb2wt
Pm51bVNlbWFwaG9yZVVzZXJzKTsKKyAgICAgICAgICAgICB9CitAQCAtMTQzLDEyICsxNDMsMTIg
QEAgcHRocmVhZF9vbmNlIChwdGhyZWFkX29uY2VfdCAqIG9uY2VfY29udHJvbCwgdm9pZCAoKmlu
aXRfcm91dGluZSkgKHZvaWQpKQorICAgICAgICAgeworICAgICAgICAgICBQVEVfQVRPTUlDX0lO
Q1JFTUVOVCgmb25jZV9jb250cm9sLT5udW1TZW1hcGhvcmVVc2Vycyk7CisgCistICAgICAgICAg
IGlmICghUFRFX0FUT01JQ19FWENIQU5HRV9BREQoKGludCopJm9uY2VfY29udHJvbC0+c2VtYXBo
b3JlLCAwTCkpIC8qIE1CUiBmZW5jZSAqLworKyAgICAgICAgICBpZiAoIVBURV9BVE9NSUNfRVhD
SEFOR0VfQUREKChsb25nKikmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsIDBMKSkgLyogTUJSIGZl
bmNlICovCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgcHRlX29zU2VtYXBob3JlQ3Jl
YXRlKDAsIChwdGVfb3NTZW1hcGhvcmVIYW5kbGUqKSAmc2VtYSk7CisgCistICAgICAgICAgICAg
ICBpZiAoUFRFX0FUT01JQ19DT01QQVJFX0VYQ0hBTkdFKChpbnQgKikgJm9uY2VfY29udHJvbC0+
c2VtYXBob3JlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaW50KSBzZW1hLAorKyAgICAgICAgICAgICAgaWYgKFBURV9BVE9NSUNfQ09NUEFSRV9FWENI
QU5HRSgobG9uZyAqKSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsCisrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSBzZW1hLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKKyAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgIHB0ZV9vc1NlbWFwaG9yZURlbGV0ZSgocHRlX29zU2VtYXBo
b3JlSGFuZGxlKXNlbWEpOworQEAgLTE2OCw3ICsxNjgsNyBAQCBwdGhyZWFkX29uY2UgKHB0aHJl
YWRfb25jZV90ICogb25jZV9jb250cm9sLCB2b2lkICgqaW5pdF9yb3V0aW5lKSAodm9pZCkpCisg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgLyogd2Ugd2VyZSBsYXN0ICovCisgICAgICAg
ICAgICAgICBpZiAoKHNlbWEgPQorLSAgICAgICAgICAgICAgICAgICAgIChwdGVfb3NTZW1hcGhv
cmVIYW5kbGUpIFBURV9BVE9NSUNfRVhDSEFOR0UoKGludCAqKSAmb25jZV9jb250cm9sLT5zZW1h
cGhvcmUsMCkpKQorKyAgICAgICAgICAgICAgICAgICAgIChwdGVfb3NTZW1hcGhvcmVIYW5kbGUp
IFBURV9BVE9NSUNfRVhDSEFOR0UoKGxvbmcgKikgJm9uY2VfY29udHJvbC0+c2VtYXBob3JlLDAp
KSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIHB0ZV9vc1NlbWFwaG9y
ZURlbGV0ZShzZW1hKTsKKyAgICAgICAgICAgICAgICAgfQorLS0gCisyLjExLjAKKwotLSAKMi4x
MS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:16: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 1hXohi-0004kx-19; Mon, 03 Jun 2019 15:16:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohh-0004kQ-2j
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:53 +0000
X-Inumbo-ID: 9d236fe8-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9d236fe8-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:51 +0000 (UTC)
IronPort-SDR: q4jHxAPDoUpTX5Amxj4pidsEKq5f9R/amOGiPuYhjheeXV/ssKd2f7NjZDixh+8w2raAd8Kr6C
 htSAgli8lEkQ==
IronPort-PHdr: =?us-ascii?q?9a23=3A9rtOox93rsIX7f9uRHKM819IXTAuvvDOBiVQ1K?=
 =?us-ascii?q?B20OscTK2v8tzYMVDF4r011RmVBNydsqkbwLqP+4nbGkU4qa6bt34DdJEeHz?=
 =?us-ascii?q?Qksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPER?=
 =?us-ascii?q?vjKwV1Ov71GonPhMiryuy+4ZLebxhViDanfL9/Ihe7oQrSu8ULnIBvNrs/xh?=
 =?us-ascii?q?zVr3VSZu9Y33loJVWdnxb94se/4ptu+DlOtvwi6sBNT7z0c7w3QrJEAjsmNX?=
 =?us-ascii?q?s15NDwuhnYUQSP/HocXX4InRdOHgPI8Qv1Xpb1siv9q+p9xCyXNtD4QLwoRT?=
 =?us-ascii?q?iv6bpgRQT2gykbKTE27GDXitRxjK1FphKhuwd/yJPQbI2MKfZyYr/RcdYcSG?=
 =?us-ascii?q?FcXMheSjZBD5u8YYUREuQPM+VWoY7/qFsAthayGRWgCfnzxjJSmnP6was32P?=
 =?us-ascii?q?khHwHc2wwgGsoDvWrTrNXuKKcSUOa1x7TOwzXed/NWxCr25Y/UfRAmuvGMQb?=
 =?us-ascii?q?NwcczLxUkrCgPFlkiQpJf5MDOOzOgNq3Wb4PF6WeK1jG4qsgd8qSWsyMc0ko?=
 =?us-ascii?q?TFm40Yxk3e+Sh6wIs5P8O0RFB5bNK+HpZcrzyWOoRrTs84QGxluDw2xqMItJ?=
 =?us-ascii?q?O1ZiQG1ZsqywDZZveaaYaH+AjjW/yUITpggXJlf6+wiAiq/Ei7z+38StG00F?=
 =?us-ascii?q?FXripZitXMtm4C1xjU6sWfVPt9+12u2TeL1wzJ9u5EOlo4lbLGK5E62LIwjJ?=
 =?us-ascii?q?0TvVzCHi/whkr2kLebelgr9+S18ejqYbXrqoWCO4NqiAzyKKojltS6AesiMw?=
 =?us-ascii?q?gOW2ab+f671L3m5UD2XLJKjuYqkqnYtpDWP8AbprOhAw9IyYss9w2/Ay2+0N?=
 =?us-ascii?q?QFhnYLNkhFeBWfg4jzJ17OOOz4Deu4g1m0jDdk2ffGMqf6AprTNHjMi63ufb?=
 =?us-ascii?q?Bj5E5H1AUz0M1T6pNPB7EOJfL8QE7xtNjCAhAlNAy0xv7tCM9h2YMGRWKPHq?=
 =?us-ascii?q?iZPbvXsV+J4OIvIu6MZJQMtDngNfcl+eDhjXsilF8ZfKmpxocXaGuiEvVpPU?=
 =?us-ascii?q?qZZ2DggtAbEWcFpgA+VvDliEWeUT5PYHa/R6Iy5jU8CIK8DIfMXIatjKac0i?=
 =?us-ascii?q?inHp1WY2FGBU2QEXrzcYWLResDaCaILcB6iDALS6WhGMcd0kSrtQn7zKEiIu?=
 =?us-ascii?q?fK9ykwsZP4yMMz9+DV0xYo+m9aFcOYhkqKVH11mCssWicrlPR0pldhy1HF1b?=
 =?us-ascii?q?VgntRTDppL+vkPSABsZs2U9PBzF92nAlGJRdyOUlvzB4z+WTw=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2CjAAB8OfVcjAPjVY1mHQEBBQEHBQG?=
 =?us-ascii?q?BVAUBCwGDTAEBHhIojQ+VWpEWCQEBAToBAgEBhEACgzU3Bg4BAwEBBQEBAQE?=
 =?us-ascii?q?EARMBAQEmTAyCOikBgmcDA3kQPxIhNhmDIoFrAyGrN4VHgjMNXYFGgTQBhwK?=
 =?us-ascii?q?GLj+EYYIagneFFQSULpQNPgcCgg9aBI5rg10nlm6VbI8JNiGBWTMag1+CKYo?=
 =?us-ascii?q?NhB88AQExgQYBAZBNAQE?=
X-IPAS-Result: =?us-ascii?q?A2CjAAB8OfVcjAPjVY1mHQEBBQEHBQGBVAUBCwGDTAEBH?=
 =?us-ascii?q?hIojQ+VWpEWCQEBAToBAgEBhEACgzU3Bg4BAwEBBQEBAQEEARMBAQEmTAyCO?=
 =?us-ascii?q?ikBgmcDA3kQPxIhNhmDIoFrAyGrN4VHgjMNXYFGgTQBhwKGLj+EYYIagneFF?=
 =?us-ascii?q?QSULpQNPgcCgg9aBI5rg10nlm6VbI8JNiGBWTMag1+CKYoNhB88AQExgQYBA?=
 =?us-ascii?q?ZBNAQE?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485109"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:45 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 0F5CC1A60197;
 Mon,  3 Jun 2019 18:16:47 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id ek5AL2AsW_Oi; Mon,  3 Jun 2019 18:16:47 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id EBA5E1A60195;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id qlM6q9m3LpwA; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id CEDB31A601FE;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:40 +0300
Message-Id: <20190603151640.22507-9-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 8/8]
 include/pthread.h: Guard C code for C++
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@neclab.eu, Teodora Serbanescu <teo.serbanescu16@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>

U2lnbmVkLW9mZi1ieTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0ZW8uc2VyYmFuZXNjdTE2QGdtYWls
LmNvbT4KUmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4KLS0tCiBpbmNsdWRlL3B0aHJlYWQuaCB8IDcgKysrKy0tLQogMSBmaWxlIGNoYW5nZWQs
IDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3B0
aHJlYWQuaCBiL2luY2x1ZGUvcHRocmVhZC5oCmluZGV4IDhjZDFhZGUuLjc5OWYzOWIgMTAwNjQ0
Ci0tLSBhL2luY2x1ZGUvcHRocmVhZC5oCisrKyBiL2luY2x1ZGUvcHRocmVhZC5oCkBAIC0yMiwx
MyArMjIsMTQgQEAKICNpZm5kZWYgX19HTFVFX1BUSFJFQURfSF9fCiAjZGVmaW5lIF9fR0xVRV9Q
VEhSRUFEX0hfXwogCi0jaW5jbHVkZV9uZXh0IDxwdGhyZWFkLmg+Ci0KLS8qIEMgZnVuY3Rpb25z
IG5vdCBpbXBsZW1lbnRlZCBpbiBwdGhyZWFkLWVtYmVkZGVkICovCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIFRoZSBDIGNvZGUgaW4gcHRocmVhZC5oIGlz
IG5vdCBndWFyZGVkIGZvciBDKysgKi8KKyNpbmNsdWRlX25leHQgPHB0aHJlYWQuaD4KKworLyog
QyBmdW5jdGlvbnMgbm90IGltcGxlbWVudGVkIGluIHB0aHJlYWQtZW1iZWRkZWQgKi8KIGludCBw
dGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplKHB0aHJlYWRfYXR0cl90ICphdHRyLCBzaXplX3QgZ3Vh
cmRzaXplKTsKIGludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplKGNvbnN0IHB0aHJlYWRfYXR0
cl90ICphdHRyLCBzaXplX3QgKmd1YXJkc2l6ZSk7CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:16: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 1hXohj-0004lZ-39; Mon, 03 Jun 2019 15:16: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=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohi-0004kw-2P
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:54 +0000
X-Inumbo-ID: 9b940d08-8612-11e9-bb75-17336e9c0986
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 9b940d08-8612-11e9-bb75-17336e9c0986;
 Mon, 03 Jun 2019 15:16:49 +0000 (UTC)
IronPort-SDR: nICohBAnVMfDNsQqn5vcv+6Bz89BI6EIZb67Hq2YvOBKrOcOLRxxSNqV9z9kldv/SqWw2b4VjH
 pPoygaMxCefw==
IronPort-PHdr: =?us-ascii?q?9a23=3Ar/3mPhc6wHy4HCHBbKJt/3falGMj4u6mDksu8p?=
 =?us-ascii?q?Mizoh2WeGdxcS4Zh7h7PlgxGXEQZ/co6odzbaP6ua5AjNLsc/JmUtBWaQEbw?=
 =?us-ascii?q?UCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFR?=
 =?us-ascii?q?rlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQi6oR/MusQYg4ZuJaU8xg?=
 =?us-ascii?q?bUqXZUZupawn9lK0iOlBjm/Mew+5Bj8yVUu/0/8sNLTLv3caclQ7FGFToqK2?=
 =?us-ascii?q?866tHluhnFVguP+2ATUn4KnRpSAgjK9w/1U5HsuSbnrOV92S2aPcrrTbAoXD?=
 =?us-ascii?q?mp8qlmRAP0hCoBKjU09nzchM5tg6JBuB+vpwJxzZPabo+WM/RxfK3dcMgGSW?=
 =?us-ascii?q?ZdRMtdSzZMDp+gY4YJEuEPPfxYr474p1YWsxa+AhKsBP/uyj9Om3T427A60/?=
 =?us-ascii?q?w8EQrb2wEvA9UOsG/IrNX0MqceS+S1zLTQzTXedP5ZxSz95JLQchA8uv6AR6?=
 =?us-ascii?q?hwcc3IxEQpCgjLjU2QpJT4Mz6ay+gBqWuW4up6We6xlWIqqRt9rza3yssxhY?=
 =?us-ascii?q?TFm5gZx1PE+Clj3oo4K9O1RFRmbdOrDpddsTyROZFsTcM4WW5ovT43yrgBuZ?=
 =?us-ascii?q?GmYicH0I8nxxvDa/yfdIiI/w7jWP6RIThmgHJlf6qyhwi38Ue6y+38UtO430?=
 =?us-ascii?q?pRriZfitnMq2sC2wbJ6siAUvd9/0Gh1iiT1w3L9+1JLl04mbDYJpMh2LI8iI?=
 =?us-ascii?q?QfvEbZEiL4gEn2ibWZdkQg+uim8eTnZbDmq4eAOI9zkQH+LqUumsqlDeQ8Lw?=
 =?us-ascii?q?gOR3Wb9P+g273450H5WKhKgeYsnqnDt5DWPd4bqbKhAw9JzoYj7A6yDzKn0N?=
 =?us-ascii?q?QenHkHK0lFdAuagIf3JVHBPvT4AOy7g1Stizdr2+vGMqfuA5rTKHjPirDhfa?=
 =?us-ascii?q?xy60RE0go80chf545ICrEGOP/9WkvxtNvCDh84KQO0xfzrBshh2YMeXGKPA7?=
 =?us-ascii?q?KWML/JvF+O+O0gP+2Ma5UOtzrnNfcl+q2msXhsnF4bfK6ymJcadn28NvBnOF?=
 =?us-ascii?q?mCJ2rhhJEGC2hZkBA5SbnBj0aeUDgbQ2uqQupo7TYgFIOgS4PeXp2Fi6fHxD?=
 =?us-ascii?q?qxWIdRMDMVQmuQGGvlIt3XE8wHbzifd5ds?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2A6AAB8OfVcjAPjVY1mHAEBAQQBAQc?=
 =?us-ascii?q?EAQGBUQcBAQsBgnpSAQEeEiiMMF+bIYlUFIFnCQEBASYDEQECAQGBS4J1AoM?=
 =?us-ascii?q?1NAkOAQMBAQUBAQEBBAETAQEBJkwMgjoigm8CAQMBeBA/EigvGYMiAYIOqze?=
 =?us-ascii?q?FR4MdgUaBNAGHAoM5gnU/iGqFeyIEizsSh1GBEJNxWgcCgg9aBIVhh3pChCs?=
 =?us-ascii?q?ngiIvOYYJhAKJWaR1IDeBWTMac4JsCYIgh16GTjwBATEyVAEBkE0BAQ?=
X-IPAS-Result: =?us-ascii?q?A2A6AAB8OfVcjAPjVY1mHAEBAQQBAQcEAQGBUQcBAQsBg?=
 =?us-ascii?q?npSAQEeEiiMMF+bIYlUFIFnCQEBASYDEQECAQGBS4J1AoM1NAkOAQMBAQUBA?=
 =?us-ascii?q?QEBBAETAQEBJkwMgjoigm8CAQMBeBA/EigvGYMiAYIOqzeFR4MdgUaBNAGHA?=
 =?us-ascii?q?oM5gnU/iGqFeyIEizsSh1GBEJNxWgcCgg9aBIVhh3pChCsngiIvOYYJhAKJW?=
 =?us-ascii?q?aR1IDeBWTMac4JsCYIgh16GTjwBATEyVAEBkE0BAQ?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485102"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:44 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 8D8C01A601A6;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id pDpAAm-RrvRe; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 74CDD1A60195;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id AU0_EPC9quhE; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 503F11A60197;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:33 +0300
Message-Id: <20190603151640.22507-2-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 1/8] Add
 documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KLS0tCiBD
T0RJTkdfU1RZTEUubWQgfCAgNCArKysrCiBDT05UUklCVVRJTkcubWQgfCAgNCArKysrCiBDT1BZ
SU5HLm1kICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIE1BSU5UQUlO
RVJTLm1kICB8IDEwICsrKysrKysrKysKIFJFQURNRS5tZCAgICAgICB8ICA1ICsrKysrCiA1IGZp
bGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdf
U1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBDT1BZSU5HLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQg
Yi9DT0RJTkdfU1RZTEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcz
MDA0MQotLS0gL2Rldi9udWxsCisrKyBiL0NPRElOR19TVFlMRS5tZApAQCAtMCwwICsxLDQgQEAK
K0NvZGluZyBTdHlsZQorPT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElO
R19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5LgpkaWZmIC0t
Z2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjVmNTVlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9DT05UUklCVVRJ
TkcubWQKQEAgLTAsMCArMSw0IEBACitDb250cmlidXRpbmcgdG8gVW5pa3JhZnQKKz09PT09PT09
PT09PT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAg
ZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvQ09QWUlO
Ry5tZCBiL0NPUFlJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk4
NTVjMgotLS0gL2Rldi9udWxsCisrKyBiL0NPUFlJTkcubWQKQEAgLTAsMCArMSwzMCBAQAorTGlj
ZW5zZQorPT09PT09PQorCitVbmlrcmFmdCBwdGhyZWFkLWVtYmVkZGVkIHdyYXBwZXJzCistLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgcmVwb3NpdG9yeSBjb250YWlu
cyB3cmFwcGVyIGNvZGUgdG8gYnVpbGQgcHRocmVhZC1lbWJlZGRlZCB3aXRoIFVuaWtyYWZ0Lgor
RWFjaCBDIGNvZGUgZmlsZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlz
IHRoZQorY29weXJpZ2h0IG93bmVyIGFuZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9u
cyB0aGUgY29kZSBpcworbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlzc2lu
ZywgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQKK25vdGljZSB3aWxsIGFwcGx5OgorCisKKwlDb3B5
cmlnaHQoQykgWWVhciBOYW1lLCBJbnN0aXR1dGlvbgorCQorCVRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKwltb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisJTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisJdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCQorCVRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKwlMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCQorCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKwlMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuTElCOworCWlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKwk1OSBUZW1wbGUgUGxh
Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBCisKZGlmZiAtLWdpdCBh
L01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uY2VhZGZjZQotLS0gL2Rldi9udWxsCisrKyBiL01BSU5UQUlORVJTLm1kCkBA
IC0wLDAgKzEsMTAgQEAKK01haW50YWluZXJzIExpc3QKKz09PT09PT09PT09PT09PT0KKworRm9y
IG5vdGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byBg
TUFJTlRBSU5FUlMubWRgIGluCit0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5LgorCisJUFRI
UkVBRC1FTUJFRERFRC1VTklLUkFGVAorCU06CUNvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5w
dWIucm8+CisJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKKwlGOiAqCmRpZmYgLS1naXQg
YS9SRUFETUUubWQgYi9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMmVjYzIzOQotLS0gL2Rldi9udWxsCisrKyBiL1JFQURNRS5tZApAQCAtMCwwICsxLDUgQEAK
K3B0aHJlYWQtZW1iZWRkZWQgZm9yIFVuaWtyYWZ0Cis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRv
Y3VtZW50YXRpb24gaW4gdGhlIGBkb2MvYAorc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWty
YWZ0IHJlcG9zaXRvcnkuCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15: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 1hXohk-0004n3-4s; Mon, 03 Jun 2019 15:16:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohi-0004lJ-9m
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:54 +0000
X-Inumbo-ID: 9d9c3ba9-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9d9c3ba9-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:52 +0000 (UTC)
IronPort-SDR: KOn3KBBtBtMTDGhJsILq9r+RBrOqkSAGfxAinMlte+J80JaPfIx25rp5kOm0RDLW5sidESbry8
 QH7BHuX7hK6g==
IronPort-PHdr: =?us-ascii?q?9a23=3Aw9OIfB8SVH4VQ/9uRHKM819IXTAuvvDOBiVQ1K?=
 =?us-ascii?q?B30egcTK2v8tzYMVDF4r011RmVBNydsqkbwLqP+4nbGkU4qa6bt34DdJEeHz?=
 =?us-ascii?q?Qksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPER?=
 =?us-ascii?q?vjKwV1Ov71GonPhMiryuy+4ZLebxhViDanfL9/Ihe7oQrSu8ULnIBvNrs/xh?=
 =?us-ascii?q?zVr3VSZu9Y33loJVWdnxb94se/4ptu+DlOtvwi6sBNT7z0c7w3QrJEAjsmNX?=
 =?us-ascii?q?s15NDwuhnYUQSP/HocXX4InRdOHgPI8Qv1Xpb1siv9q+p9xCyXNtD4QLwoRT?=
 =?us-ascii?q?iv6bpgRRn1gykFKjE56nnahMxugqxGrhyvpBtxzIzaYIyOKPZyYrnQcc8ASG?=
 =?us-ascii?q?ZdQspcUTFKDIOmb4sICuoMJfhVr47mp1sSrBu+AxSnCuXyyj9Qm3/9wKo33P?=
 =?us-ascii?q?gmEQHdwAwgHtQOvG7QrNXoLKcSTPu4w7XTzTnZd/NWxCzy5JLSchAmuPyBW6?=
 =?us-ascii?q?97f8nJyUQ3Cg/IgUicpZbmMj6VzOgBrXaX4uh6We+hk2Irtg58riW1ysovio?=
 =?us-ascii?q?TFnJwZx17K+Clj3Yo4KsO0RUhmatC+CpRQrTuVN45uT8MnRGFnpTg1x6UduZ?=
 =?us-ascii?q?6+YCgK0JMnxwPDa/Cfc4iH/BbjVOGJLDdmgXJqYrO/hxKo/Ue80e3wTNG00E?=
 =?us-ascii?q?tRoSZfiNnMsWgB1x3V6seZVvtw5lqt1DmS2wzJ6exJIVo4mbTFJ5Mj2LI9mI?=
 =?us-ascii?q?IfsUHZES/3nEX2grWWdkIh+uWw9+vnZa7mpoOdN49ykA3+NrkumtSiAekjLg?=
 =?us-ascii?q?cORHKX+fyh1LL450H5WrJKguUskqbFqJDaOdgbpqmhDg9Q04Yj7Re/DzC90N?=
 =?us-ascii?q?gBgHYIMkxFdwyDj4XyP1HOIev4Deukg1i2nzZk2fbGMqfmApXXIXjJiK3hcq?=
 =?us-ascii?q?pl605A1AozyshS6ZJQCrEGOvLzW1X+tNrCAhEkLwO0w+PnCNRg2YMCQm+PBL?=
 =?us-ascii?q?GWP7/WsVCS/e0jOfeDZJJG8Ar6fv0k4f/pljo1lEEQeYGt3IALczaoE/IgJF?=
 =?us-ascii?q?+WMlT2hdJUOmARogs4BMj3kEDKBTVUfGqzWeQ4+ykmIIm9S5/eTMa3h+rSj2?=
 =?us-ascii?q?+AApRKazUeWRi3GnDyetDcVg=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2DBAAB8OfVcjAPjVY1mHQEBBQEHBQG?=
 =?us-ascii?q?BUwYBCwGCelIBAR4SKI0PpHUUgWcJAQEBKREBAgEBgUuCdQKDNTYHDgEDAQE?=
 =?us-ascii?q?FAQEBAQQBEwEBASZMDII6IoJvAwMnUhA/ElcZgyIBgg6rBDOFR4MdgUaBNAG?=
 =?us-ascii?q?HAoYuP4ERh1mGHQSLO4djgRCTcVoHAoIPWgSFYYxnJ4MKk2SkdScKJoFZMxq?=
 =?us-ascii?q?DXwmCEg4Ji0eCXDwBATEyVAEBkE0BAQ?=
X-IPAS-Result: =?us-ascii?q?A2DBAAB8OfVcjAPjVY1mHQEBBQEHBQGBUwYBCwGCelIBA?=
 =?us-ascii?q?R4SKI0PpHUUgWcJAQEBKREBAgEBgUuCdQKDNTYHDgEDAQEFAQEBAQQBEwEBA?=
 =?us-ascii?q?SZMDII6IoJvAwMnUhA/ElcZgyIBgg6rBDOFR4MdgUaBNAGHAoYuP4ERh1mGH?=
 =?us-ascii?q?QSLO4djgRCTcVoHAoIPWgSFYYxnJ4MKk2SkdScKJoFZMxqDXwmCEg4Ji0eCX?=
 =?us-ascii?q?DwBATEyVAEBkE0BAQ?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485108"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:45 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 048F91A6019B;
 Mon,  3 Jun 2019 18:16:47 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id HzaPrVLzR030; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id E07FF1A60197;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id MZJvHGFkdMB3; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id BE02E1A601A6;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:39 +0300
Message-Id: <20190603151640.22507-8-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 7/8] Add missing
 pthread 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: Florian.Schmidt@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>

VGhpcyBwYXRjaCBhZGRzIHNvbWUgbWlzc2luZyBmdW5jdGlvbnMgZm9yIHVwZGF0aW5nIHRocmVh
ZHMgYXR0cmlidXRlcywKc3VjaCBhcyB0aGUgdGhyZWFkIG5hbWUgb3IgdGhlIHN0YWNrIGFkZHJl
c3MgYW5kIHNpemUuIEN1cnJlbnRseSB3ZQpzdXBwb3J0IG9ubHkgdGhlIGZpeGVkIHN0YWNrIHNp
emUgb2YgNjRLQi4KClRoZXNlIG5ldyBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIFJ1YnkgaW50
ZXJwcmV0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPgotLS0KIE1ha2VmaWxlLnVrICAgICAgIHwgICAxICsKIGF0dHJpYnV0ZXMuYyAgICAgIHwg
MTU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KwogaW5jbHVkZS9wdGhyZWFkLmggfCAgNTEgKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo
YW5nZWQsIDIwNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXR0cmlidXRlcy5j
CiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9wdGhyZWFkLmgKCmRpZmYgLS1naXQgYS9NYWtl
ZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IDEyYzY4YjIuLmZlOTk3NjAgMTAwNjQ0Ci0tLSBh
L01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC02NSw2ICs2NSw3IEBAIExJQlBUSFJF
QUQtRU1CRURERURfRVhQT1JUUyA9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNFKS9leHBvcnRz
eW1zLnVrCiAjIE9TIGRlcGVuZGVuY2llcyBjb2RlIC0gR2x1ZSBiZXR3ZWVuIFVuaWtyYWZ0IGFu
ZCBwdGhyZWFkLWVtYmVkZGVkCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0JBU0UpL3B0ZV9vc2FsLmN8
Z2x1ZQorTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0JBU0UpL2F0dHJpYnV0ZXMuY3xnbHVlCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHB0
aHJlYWQtZW1iZWRkZWQgY29kZQpkaWZmIC0tZ2l0IGEvYXR0cmlidXRlcy5jIGIvYXR0cmlidXRl
cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MjkwOTYKLS0tIC9kZXYv
bnVsbAorKysgYi9hdHRyaWJ1dGVzLmMKQEAgLTAsMCArMSwxNTQgQEAKKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlciAqLworLyoKKyAqICAgICAgVW5pa3JhZnQg
cG9ydCBvZiBQT1NJWCBUaHJlYWRzIExpYnJhcnkgZm9yIGVtYmVkZGVkIHN5c3RlbXMKKyAqICAg
ICAgQ29weXJpZ2h0KEMpIDIwMTkgQ29zdGluIEx1cHUsIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Eg
b2YgQnVjaGFyZXN0CisgKgorICogICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICAgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogICAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogICAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogICAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogICAgICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuTElCOworICogICAgICBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiAgICAgIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EKKyAq
LworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmZGVmIF9HTlVfU09VUkNFCisjaW5jbHVk
ZSA8dWsvYXJjaC9saW1pdHMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNs
dWRlIDxpbXBsZW1lbnQuaD4KKworCisvKiBUT0RPIFdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9y
dCBndWFyZHMgKi8KK2ludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplKHB0aHJlYWRfYXR0cl90
ICphdHRyLCBzaXplX3QgZ3VhcmRzaXplKQoreworCWlmIChndWFyZHNpemUgIT0gMCkKKwkJcmV0
dXJuIEVJTlZBTDsKKworCXJldHVybiAwOworfQorCitpbnQgcHRocmVhZF9hdHRyX2dldGd1YXJk
c2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqYXR0ciwgc2l6ZV90ICpndWFyZHNpemUpCit7CisJ
aWYgKCFndWFyZHNpemUpCisJCXJldHVybiBFSU5WQUw7CisKKwkqZ3VhcmRzaXplID0gMDsKKwor
CXJldHVybiAwOworfQorCitpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrKHB0aHJlYWRfYXR0cl90
ICphdHRyLAorCQl2b2lkICpzdGFja2FkZHIsIHNpemVfdCBzdGFja3NpemUpCit7CisJaW50IHJj
OworCisJcmMgPSBwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplKGF0dHIsIHN0YWNrc2l6ZSk7CisJ
aWYgKHJjKQorCQlnb3RvIG91dDsKKworCXJjID0gcHRocmVhZF9hdHRyX3NldHN0YWNrYWRkcihh
dHRyLCBzdGFja2FkZHIpOworCitvdXQ6CisJcmV0dXJuIHJjOworfQorCitpbnQgcHRocmVhZF9h
dHRyX2dldHN0YWNrKGNvbnN0IHB0aHJlYWRfYXR0cl90ICphdHRyLAorCQl2b2lkICoqc3RhY2th
ZGRyLCBzaXplX3QgKnN0YWNrc2l6ZSkKK3sKKwlpbnQgcmM7CisKKwlyYyA9IHB0aHJlYWRfYXR0
cl9nZXRzdGFja3NpemUoYXR0ciwgc3RhY2tzaXplKTsKKwlpZiAocmMpCisJCWdvdG8gb3V0Owor
CisJcmMgPSBwdGhyZWFkX2F0dHJfZ2V0c3RhY2thZGRyKGF0dHIsIHN0YWNrYWRkcik7CisKK291
dDoKKwlyZXR1cm4gcmM7Cit9CisKKyNpZmRlZiBfR05VX1NPVVJDRQoraW50IHB0aHJlYWRfZ2V0
YXR0cl9ucChwdGhyZWFkX3QgdGhyZWFkLCBwdGhyZWFkX2F0dHJfdCAqYXR0cikKK3sKKwlwdGVf
dGhyZWFkX3QgKnRwID0gKHB0ZV90aHJlYWRfdCAqKSB0aHJlYWQucDsKKwlzdHJ1Y3QgdWtfdGhy
ZWFkICpfdWtfdGhyZWFkOworCXB0aHJlYWRfYXR0cl90IF9hdHRyOworCXByaW9fdCBwcmlvOwor
CWludCByYzsKKworCWlmICh0cCA9PSBOVUxMIHx8IHRwLT50aHJlYWRJZCA9PSBOVUxMKQorCQly
ZXR1cm4gRU5PRU5UOworCisJaWYgKGF0dHIgPT0gTlVMTCB8fCAqYXR0ciA9PSBOVUxMKQorCQly
ZXR1cm4gRUlOVkFMOworCisJX3VrX3RocmVhZCA9IHRwLT50aHJlYWRJZDsKKwlfYXR0ciA9ICph
dHRyOworCV9hdHRyLT5zdGFja2FkZHIgPSBfdWtfdGhyZWFkLT5zdGFjazsKKwlfYXR0ci0+c3Rh
Y2tzaXplID0gX19TVEFDS19TSVpFOworCisJX2F0dHItPmRldGFjaHN0YXRlID0gKF91a190aHJl
YWQtPmRldGFjaGVkCisJCT8gUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQgOiBQVEhSRUFEX0NSRUFU
RV9KT0lOQUJMRSk7CisKKwlyYyA9IHVrX3RocmVhZF9nZXRfcHJpbyhfdWtfdGhyZWFkLCAmcHJp
byk7CisJaWYgKHJjID09IDApCisJCV9hdHRyLT5wYXJhbS5zY2hlZF9wcmlvcml0eSA9IHByaW87
CisKKwkvKiBUT0RPIGluaGVyaXRzY2hlZCBhbmQgY29udGVudGlvbnNjb3BlICovCisKKwlyZXR1
cm4gMDsKK30KKworaW50IHB0aHJlYWRfc2V0bmFtZV9ucChwdGhyZWFkX3QgdGhyZWFkLCBjb25z
dCBjaGFyICpuYW1lKQoreworCXB0ZV90aHJlYWRfdCAqdHAgPSAocHRlX3RocmVhZF90ICopIHRo
cmVhZC5wOworCXN0cnVjdCB1a190aHJlYWQgKl91a190aHJlYWQ7CisJc2l6ZV90IGxlbjsKKwor
CWlmICh0cCA9PSBOVUxMIHx8IHRwLT50aHJlYWRJZCA9PSBOVUxMKQorCQlyZXR1cm4gRU5PRU5U
OworCisJX3VrX3RocmVhZCA9IHRwLT50aHJlYWRJZDsKKworCWxlbiA9IHN0cm5sZW4obmFtZSwg
MTYpOworCWlmIChsZW4gPiAxNSkKKwkJcmV0dXJuIEVSQU5HRTsKKworCV91a190aHJlYWQtPm5h
bWUgPSBuYW1lOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBwdGhyZWFkX2dldG5hbWVfbnAocHRo
cmVhZF90IHRocmVhZCwgY2hhciAqbmFtZSwgc2l6ZV90IGxlbikKK3sKKwlwdGVfdGhyZWFkX3Qg
KnRwID0gKHB0ZV90aHJlYWRfdCAqKSB0aHJlYWQucDsKKwlzdHJ1Y3QgdWtfdGhyZWFkICpfdWtf
dGhyZWFkOworCXNpemVfdCBfbGVuOworCisJaWYgKHRwID09IE5VTEwgfHwgdHAtPnRocmVhZElk
ID09IE5VTEwpCisJCXJldHVybiBFTk9FTlQ7CisKKwlfdWtfdGhyZWFkID0gdHAtPnRocmVhZElk
OworCisJX2xlbiA9IHN0cmxlbihfdWtfdGhyZWFkLT5uYW1lKTsKKwlpZiAobGVuIDwgX2xlbiAr
IDEpCisJCXJldHVybiBFUkFOR0U7CisKKwlzcHJpbnRmKG5hbWUsIF91a190aHJlYWQtPm5hbWUp
OworCisJcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvKiBfR05VX1NPVVJDRSAqLwpkaWZmIC0tZ2l0
IGEvaW5jbHVkZS9wdGhyZWFkLmggYi9pbmNsdWRlL3B0aHJlYWQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44Y2QxYWRlCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9w
dGhyZWFkLmgKQEAgLTAsMCArMSw1MSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExH
UEwtMi4wLW9yLWxhdGVyICovCisvKgorICogICAgICBVbmlrcmFmdCBwb3J0IG9mIFBPU0lYIFRo
cmVhZHMgTGlicmFyeSBmb3IgZW1iZWRkZWQgc3lzdGVtcworICogICAgICBDb3B5cmlnaHQoQykg
MjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKKyAqCisgKiAgICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogICAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICAgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgICAgIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogICAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlIGZpbGUg
Q09QWUlORy5MSUI7CisgKiAgICAgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwKKyAqICAgICAgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQQorICovCisKKyNpZm5kZWYgX19HTFVFX1BUSFJFQURf
SF9fCisjZGVmaW5lIF9fR0xVRV9QVEhSRUFEX0hfXworCisjaW5jbHVkZV9uZXh0IDxwdGhyZWFk
Lmg+CisKKy8qIEMgZnVuY3Rpb25zIG5vdCBpbXBsZW1lbnRlZCBpbiBwdGhyZWFkLWVtYmVkZGVk
ICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2ludCBwdGhy
ZWFkX2F0dHJfc2V0Z3VhcmRzaXplKHB0aHJlYWRfYXR0cl90ICphdHRyLCBzaXplX3QgZ3VhcmRz
aXplKTsKK2ludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplKGNvbnN0IHB0aHJlYWRfYXR0cl90
ICphdHRyLCBzaXplX3QgKmd1YXJkc2l6ZSk7CisKK2ludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2so
cHRocmVhZF9hdHRyX3QgKmF0dHIsCisJCXZvaWQgKnN0YWNrYWRkciwgc2l6ZV90IHN0YWNrc2l6
ZSk7CitpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrKGNvbnN0IHB0aHJlYWRfYXR0cl90ICphdHRy
LAorCQl2b2lkICoqc3RhY2thZGRyLCBzaXplX3QgKnN0YWNrc2l6ZSk7CisKKyNpZmRlZiBfR05V
X1NPVVJDRQoraW50IHB0aHJlYWRfZ2V0YXR0cl9ucChwdGhyZWFkX3QgdGhyZWFkLCBwdGhyZWFk
X2F0dHJfdCAqYXR0cik7CisKK2ludCBwdGhyZWFkX3NldG5hbWVfbnAocHRocmVhZF90IHRocmVh
ZCwgY29uc3QgY2hhciAqbmFtZSk7CitpbnQgcHRocmVhZF9nZXRuYW1lX25wKHB0aHJlYWRfdCB0
aHJlYWQsIGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pOworI2VuZGlmIC8qIF9HTlVfU09VUkNFICov
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX0dMVUVfUFRI
UkVBRF9IX18gKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:16: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 1hXohl-0004nl-7g; Mon, 03 Jun 2019 15:16: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=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohj-0004ln-9z
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:55 +0000
X-Inumbo-ID: 9c80cb3e-8612-11e9-b72c-072821ed15e8
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 9c80cb3e-8612-11e9-b72c-072821ed15e8;
 Mon, 03 Jun 2019 15:16:50 +0000 (UTC)
IronPort-SDR: G+291FeBz106Aa8aq9IgSixmtsAE2egV3zfT+95n1Opc/xWZMCXuQWS/T/kGv2Seo4pG0uDINU
 lRz0ZXq2hBCg==
IronPort-PHdr: =?us-ascii?q?9a23=3Arsgh+BfUvK+2GGGCP9HN83K5lGMj4u6mDksu8p?=
 =?us-ascii?q?Mizoh2WeGdxcS4bB7h7PlgxGXEQZ/co6odzbaP6ua5AjNLsc/JmUtBWaQEbw?=
 =?us-ascii?q?UCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFR?=
 =?us-ascii?q?rlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQi6oR/MusQYg4ZuJaU8xg?=
 =?us-ascii?q?bUqXZUZupawn9lK0iOlBjm/Mew+5Bj8yVUu/0/8sNLTLv3caclQ7FGFToqK2?=
 =?us-ascii?q?866tHluhnFVguP+2ATUn4KnRpSAgjK9w/1U5HsuSbnrOV92S2aPcrrTbAoXD?=
 =?us-ascii?q?mp8qlmRAP0hCoBKjU09nzchM5tg6JBuB+vpwJxzZPabo+WM/RxfK3dctwGSm?=
 =?us-ascii?q?RORctRSzVBD5mgY4YVE+YMP+BVpJT9qVsUqhu+ABGhCf3oyj9Tmn/23Ks62P?=
 =?us-ascii?q?knHwHbxAwgAs8FvXPIo9XyL6cSTeG1zK/SwTXHcvNWwSr95ZPUfRA6u/2MRa?=
 =?us-ascii?q?9wftHLxUk1EAPIl1OdopHmMTONzukBrmeW4/d6We+si2MrsR99riaty8s2hI?=
 =?us-ascii?q?TFnp8Zx1/Z+Sljw4s4Jce0RFB1bNOqCpdcqi6XO5VwT8g/WW9nojw6xacDuZ?=
 =?us-ascii?q?OjeSgKz4koyADHZvycdoiI/grjVOGMITdknH5leKywhxK18UW41O38U9O70F?=
 =?us-ascii?q?dOriZfjtbMrWoB1wTO6secUPd95ECh1S6O1wDV9O5EPVg5mbfUJpI82LI9lZ?=
 =?us-ascii?q?oevV7dEiPomkj6lqGbel0h+uey6uTnZrvmpoWbN49xkgzxLqMumtejAeQ5NA?=
 =?us-ascii?q?gCRWyb+fmk1L3+5kD2XK5KgucukqnEq5/WP94bpqmhDw9Pzokj8wq/Dyuh0N?=
 =?us-ascii?q?kAmHkHLVRFeBOAj4jyIl3BPe73DemhjFSoizprw/HGPqb9ApXWNHTCn6nufb?=
 =?us-ascii?q?Bn505b0gozwshV54hIBbEZPPLzRkjxucTYAB89NAy02efnB8971o8ERGyAHq?=
 =?us-ascii?q?+ZMKbTsVCV+uIiOO+Ma5EJtzb5Mfcq/OTigmEkmQxVQa782JoRaXejW/hrPU?=
 =?us-ascii?q?idSX7tmcsaV3cHuEw5VuO5pkeFVGt4YG2uXqR0wiwjFcryBoDYWoGrxricxD?=
 =?us-ascii?q?qTFYYQfn1MTEqLRyS7P76YUusBPXrBavRqlSYJAOCs?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BbAgB8OfVcjAPjVY1mHAEBAQQBAQc?=
 =?us-ascii?q?EAQGBZYFngWYBAR4SKIQUiHuMGIlCkRYJAQEBOgECAQGEQAKDNTgTAQMBAQU?=
 =?us-ascii?q?BAQEBBAETAQEBJliCOiKCbgEDAyMEUhAcAwECAwIYBwcCAiEuCBmDIoFrAyG?=
 =?us-ascii?q?qBn4zh3oNXYFGgQwohwOGLj+BEYJkbIIahTSCWASLTYdRgRCUDT4HAoIPWgS?=
 =?us-ascii?q?Oa4NdJ5ZulWyPCTcggVkzGoNfghsOCRRuAQeNGTwBATGBBgEBjXsEgk4BAQ?=
X-IPAS-Result: =?us-ascii?q?A2BbAgB8OfVcjAPjVY1mHAEBAQQBAQcEAQGBZYFngWYBA?=
 =?us-ascii?q?R4SKIQUiHuMGIlCkRYJAQEBOgECAQGEQAKDNTgTAQMBAQUBAQEBBAETAQEBJ?=
 =?us-ascii?q?liCOiKCbgEDAyMEUhAcAwECAwIYBwcCAiEuCBmDIoFrAyGqBn4zh3oNXYFGg?=
 =?us-ascii?q?QwohwOGLj+BEYJkbIIahTSCWASLTYdRgRCUDT4HAoIPWgSOa4NdJ5ZulWyPC?=
 =?us-ascii?q?TcggVkzGoNfghsOCRRuAQeNGTwBATGBBgEBjXsEgk4BAQ?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485104"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:44 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id B1A291A6019B;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id xNJGWVUhLYG6; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 9932D1A601F9;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 0NvEmm4j2sVM; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 6BF4C1A601BB;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:35 +0300
Message-Id: <20190603151640.22507-4-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 3/8] patches:
 Add patches for proper building of original library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Q3VycmVudCBwYXRjaGVzIGluY2x1ZGUgYnVnZml4ZXMgYW5kIHJlZmluZW1lbnRzIGluIHRoZSBv
cmlnaW5hbCBjb2RlLgoKU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNz
LnB1Yi5ybz4KLS0tCiAuLi54LVNldC10eXBlLXNpemUtb2YtcmVzdWx0LXVzZWQtaW4tcHRocmVh
ZC5wYXRjaCB8IDQ5NCArKysrKysrKysrKysrKysrKysrKysKIC4uLngtUGFzcy1yaWdodC1hcmd1
bWVudHMtb24tdGVzdHMtZXhpdDQtYW5kLnBhdGNoIHwgIDU0ICsrKwogLi4ueC1GaXgtbWFjcm8t
ZGVmaW5pdGlvbnMtZm9yLXRlc3RzLW9uY2UzLWEucGF0Y2ggfCAgMzYgKysKIC4uLmxlLXByaW9y
aXR5LXRlc3RzLXVudGlsLXdlLWFkZC1wcmVlbXB0aXZlLnBhdGNoIHwgIDI4ICsrCiBwYXRjaGVz
LzAwMDUtVXNlLVVuaWtyYWZ0LXlpZWxkLWZ1bmN0aW9uLnBhdGNoICAgICB8ICAyMiArCiAuLi5h
ZGVyLWluY2x1c2lvbnMtZm9yLWZ1bmN0aW9ucy1mcm9tLWhlYWRlci5wYXRjaCB8ICA0MCArKwog
NiBmaWxlcyBjaGFuZ2VkLCA2NzQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBh
dGNoZXMvMDAwMS10ZXN0cy1idWdmaXgtU2V0LXR5cGUtc2l6ZS1vZi1yZXN1bHQtdXNlZC1pbi1w
dGhyZWFkLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDAyLXRlc3RzLWJ1Z2Zp
eC1QYXNzLXJpZ2h0LWFyZ3VtZW50cy1vbi10ZXN0cy1leGl0NC1hbmQucGF0Y2gKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBwYXRjaGVzLzAwMDMtdGVzdHMtYnVnZml4LUZpeC1tYWNyby1kZWZpbml0aW9u
cy1mb3ItdGVzdHMtb25jZTMtYS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAw
NC10ZXN0cy1EaXNhYmxlLXByaW9yaXR5LXRlc3RzLXVudGlsLXdlLWFkZC1wcmVlbXB0aXZlLnBh
dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDA1LVVzZS1VbmlrcmFmdC15aWVsZC1m
dW5jdGlvbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwNi1TZXBhcmF0ZS1o
ZWFkZXItaW5jbHVzaW9ucy1mb3ItZnVuY3Rpb25zLWZyb20taGVhZGVyLnBhdGNoCgpkaWZmIC0t
Z2l0IGEvcGF0Y2hlcy8wMDAxLXRlc3RzLWJ1Z2ZpeC1TZXQtdHlwZS1zaXplLW9mLXJlc3VsdC11
c2VkLWluLXB0aHJlYWQucGF0Y2ggYi9wYXRjaGVzLzAwMDEtdGVzdHMtYnVnZml4LVNldC10eXBl
LXNpemUtb2YtcmVzdWx0LXVzZWQtaW4tcHRocmVhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44YWEyY2VjCi0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDAx
LXRlc3RzLWJ1Z2ZpeC1TZXQtdHlwZS1zaXplLW9mLXJlc3VsdC11c2VkLWluLXB0aHJlYWQucGF0
Y2gKQEAgLTAsMCArMSw0OTQgQEAKK0Zyb20gOTE5ZWJiZDk3YjM5OTJiNWU2NjE1M2IxOTk4MmYy
OGNiOWJmNzM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENvc3RpbiBMdXB1IDxj
b3N0aW4ubHVwQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOSBNYXIgMjAxOSAxOToyMjoyMyArMDIw
MAorU3ViamVjdDogW1BBVENIIDEvNV0gdGVzdHMgYnVnZml4IFNldCB0eXBlIHNpemUgb2YgcmVz
dWx0IHVzZWQgaW4gcHRocmVhZF9qb2luCisgY2FsbHMgdG8gd29yZCBzaXplCisKKworZGlmZiAt
LWdpdCBhL3Rlc3RzL2JhcnJpZXIzLmMgYi90ZXN0cy9iYXJyaWVyMy5jCitpbmRleCAxZjE2YTc5
Li40NWZjMWNmIDEwMDY0NAorLS0tIGEvdGVzdHMvYmFycmllcjMuYworKysrIGIvdGVzdHMvYmFy
cmllcjMuYworQEAgLTQ3LDcgKzQ3LDcgQEAKKyAjaW5jbHVkZSAidGVzdC5oIgorIAorIHN0YXRp
YyBwdGhyZWFkX2JhcnJpZXJfdCBiYXJyaWVyID0gTlVMTDsKKy1zdGF0aWMgaW50IHJlc3VsdCA9
IDE7Cisrc3RhdGljIGxvbmcgcmVzdWx0ID0gMTsKKyAKKyBzdGF0aWMgdm9pZCAqIGZ1bmModm9p
ZCAqIGFyZykKKyB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvYmFycmllcjUuYyBiL3Rlc3RzL2JhcnJp
ZXI1LmMKK2luZGV4IDE3ZTBmZDUuLjQwNTVjNTEgMTAwNjQ0CistLS0gYS90ZXN0cy9iYXJyaWVy
NS5jCisrKysgYi90ZXN0cy9iYXJyaWVyNS5jCitAQCAtOTQsOCArOTQsOCBAQCBmdW5jKHZvaWQg
KiBiYXJyaWVySGVpZ2h0KQorIGludCBwdGhyZWFkX3Rlc3RfYmFycmllcjUoKQorIHsKKyAgIGlu
dCBpLCBqOworLSAgaW50IHJlc3VsdDsKKy0gIGludCBzZXJpYWxUaHJlYWRzVG90YWw7CisrICBs
b25nIHJlc3VsdDsKKysgIGxvbmcgc2VyaWFsVGhyZWFkc1RvdGFsOworICAgcHRocmVhZF90IHRb
TlVNVEhSRUFEUyArIDFdOworIAorICAgbXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwor
ZGlmZiAtLWdpdCBhL3Rlc3RzL2NhbmNlbDIuYyBiL3Rlc3RzL2NhbmNlbDIuYworaW5kZXggMGMy
YjE0My4uMzYzNTkzMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2NhbmNlbDIuYworKysrIGIvdGVzdHMv
Y2FuY2VsMi5jCitAQCAtMjE1LDcgKzIxNSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY2FuY2VsMigp
CisgICBmb3IgKGkgPSAxOyBpIDw9IE5VTVRIUkVBRFM7IGkrKykKKyAgICAgeworICAgICAgIGlu
dCBmYWlsID0gMDsKKy0gICAgICBpbnQgcmVzdWx0ID0gMDsKKysgICAgICBsb25nIHJlc3VsdCA9
IDA7CisgCisgICAgICAgYXNzZXJ0KHB0aHJlYWRfam9pbih0W2ldLCAodm9pZCAqKikgJnJlc3Vs
dCkgPT0gMCk7CisgICAgICAgZmFpbCA9IChyZXN1bHQgIT0gKGludCkgUFRIUkVBRF9DQU5DRUxF
RCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvY2FuY2VsMy5jIGIvdGVzdHMvY2FuY2VsMy5jCitpbmRl
eCBjNTlmZjU4Li5mOWY1NjNiIDEwMDY0NAorLS0tIGEvdGVzdHMvY2FuY2VsMy5jCisrKysgYi90
ZXN0cy9jYW5jZWwzLmMKK0BAIC0xODAsNyArMTgwLDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jYW5j
ZWwzKCkKKyAgIGZvciAoaSA9IDE7IGkgPD0gTlVNVEhSRUFEUzsgaSsrKQorICAgICB7CisgICAg
ICAgaW50IGZhaWwgPSAwOworLSAgICAgIGludCByZXN1bHQgPSAwOworKyAgICAgIGxvbmcgcmVz
dWx0ID0gMDsKKyAKKyAgICAgICAvKgorICAgICAgICAqIFRoZSB0aHJlYWQgZG9lcyBub3QgY29u
dGFpbiBhbnkgY2FuY2VsYXRpb24gcG9pbnRzLCBzbworZGlmZiAtLWdpdCBhL3Rlc3RzL2NhbmNl
bDQuYyBiL3Rlc3RzL2NhbmNlbDQuYworaW5kZXggY2MwZTViMS4uMzg1M2NkOCAxMDA2NDQKKy0t
LSBhL3Rlc3RzL2NhbmNlbDQuYworKysrIGIvdGVzdHMvY2FuY2VsNC5jCitAQCAtMTc5LDcgKzE3
OSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY2FuY2VsNCgpCisgICBmb3IgKGkgPSAxOyBpIDw9IE5V
TVRIUkVBRFM7IGkrKykKKyAgICAgeworICAgICAgIGludCBmYWlsID0gMDsKKy0gICAgICBpbnQg
cmVzdWx0ID0gMDsKKysgICAgICBsb25nIHJlc3VsdCA9IDA7CisgCisgICAgICAgLyoKKyAgICAg
ICAgKiBUaGUgdGhyZWFkIGRvZXMgbm90IGNvbnRhaW4gYW55IGNhbmNlbGF0aW9uIHBvaW50cywg
c28KK2RpZmYgLS1naXQgYS90ZXN0cy9jYW5jZWw1LmMgYi90ZXN0cy9jYW5jZWw1LmMKK2luZGV4
IDdlZDBlYjcuLmQ1MGJmM2YgMTAwNjQ0CistLS0gYS90ZXN0cy9jYW5jZWw1LmMKKysrKyBiL3Rl
c3RzL2NhbmNlbDUuYworQEAgLTE3Niw3ICsxNzYsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2NhbmNl
bDUoKQorICAgZm9yIChpID0gMTsgaSA8PSBOVU1USFJFQURTOyBpKyspCisgICAgIHsKKyAgICAg
ICBpbnQgZmFpbCA9IDA7CistICAgICAgaW50IHJlc3VsdCA9IDA7CisrICAgICAgbG9uZyByZXN1
bHQgPSAwOworIAorICAgICAgIC8qCisgICAgICAgICogVGhlIHRocmVhZCBkb2VzIG5vdCBjb250
YWluIGFueSBjYW5jZWxhdGlvbiBwb2ludHMsIHNvCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2FuY2Vs
NmEuYyBiL3Rlc3RzL2NhbmNlbDZhLmMKK2luZGV4IDMwOWM3YTUuLmU2ZDQ0YmYgMTAwNjQ0Cist
LS0gYS90ZXN0cy9jYW5jZWw2YS5jCisrKysgYi90ZXN0cy9jYW5jZWw2YS5jCitAQCAtMTY5LDcg
KzE2OSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY2FuY2VsNmEoKQorICAgZm9yIChpID0gMTsgaSA8
PSBOVU1USFJFQURTOyBpKyspCisgICAgIHsKKyAgICAgICBpbnQgZmFpbCA9IDA7CistICAgICAg
aW50IHJlc3VsdCA9IDA7CisrICAgICAgbG9uZyByZXN1bHQgPSAwOworIAorICAgICAgIC8qCisg
ICAgICAgICogVGhlIHRocmVhZCBkb2VzIG5vdCBjb250YWluIGFueSBjYW5jZWxhdGlvbiBwb2lu
dHMsIHNvCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2FuY2VsNmQuYyBiL3Rlc3RzL2NhbmNlbDZkLmMK
K2luZGV4IGU0NDg5MTUuLjI3ZjY4ZjkgMTAwNjQ0CistLS0gYS90ZXN0cy9jYW5jZWw2ZC5jCisr
KysgYi90ZXN0cy9jYW5jZWw2ZC5jCitAQCAtMTcxLDcgKzE3MSw3IEBAIGludCBwdGhyZWFkX3Rl
c3RfY2FuY2VsNmQoKQorICAgZm9yIChpID0gMTsgaSA8PSBOVU1USFJFQURTOyBpKyspCisgICAg
IHsKKyAgICAgICBpbnQgZmFpbCA9IDA7CistICAgICAgaW50IHJlc3VsdCA9IDA7CisrICAgICAg
bG9uZyByZXN1bHQgPSAwOworIAorICAgICAgIGFzc2VydChwdGhyZWFkX2pvaW4odFtpXSwgKHZv
aWQgKiopICZyZXN1bHQpID09IDApOworIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2NsZWFudXAwLmMg
Yi90ZXN0cy9jbGVhbnVwMC5jCitpbmRleCAwNjlmOThkLi5hNjQxOTg5IDEwMDY0NAorLS0tIGEv
dGVzdHMvY2xlYW51cDAuYworKysrIGIvdGVzdHMvY2xlYW51cDAuYworQEAgLTE5MSw3ICsxOTEs
NyBAQCBpbnQgcHRocmVhZF90ZXN0X2NsZWFudXAwKCkKKyAgIGZvciAoaSA9IDE7IGkgPD0gTlVN
VEhSRUFEUzsgaSsrKQorICAgICB7CisgICAgICAgaW50IGZhaWwgPSAwOworLSAgICAgIGludCBy
ZXN1bHQgPSAwOworKyAgICAgIGxvbmcgcmVzdWx0ID0gMDsKKyAKKyAgICAgICBhc3NlcnQocHRo
cmVhZF9qb2luKHRbaV0sICh2b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKKyAKK2RpZmYgLS1naXQg
YS90ZXN0cy9jbGVhbnVwMS5jIGIvdGVzdHMvY2xlYW51cDEuYworaW5kZXggODY1M2ZkNC4uNjhi
YzZhYiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2NsZWFudXAxLmMKKysrKyBiL3Rlc3RzL2NsZWFudXAx
LmMKK0BAIC0yMDYsNyArMjA2LDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jbGVhbnVwMSgpCisgICBm
b3IgKGkgPSAxOyBpIDw9IE5VTVRIUkVBRFM7IGkrKykKKyAgICAgeworICAgICAgIGludCBmYWls
ID0gMDsKKy0gICAgICBpbnQgcmVzdWx0ID0gMDsKKysgICAgICBsb25nIHJlc3VsdCA9IDA7Cisg
CisgICAgICAgYXNzZXJ0KHB0aHJlYWRfam9pbih0W2ldLCAodm9pZCAqKikgJnJlc3VsdCkgPT0g
MCk7CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2xlYW51cDIuYyBiL3Rlc3RzL2NsZWFudXAyLmMK
K2luZGV4IGI0YTI1MTMuLjVkZjgzNDYgMTAwNjQ0CistLS0gYS90ZXN0cy9jbGVhbnVwMi5jCisr
KysgYi90ZXN0cy9jbGVhbnVwMi5jCitAQCAtMTgxLDcgKzE4MSw3IEBAIGludCBwdGhyZWFkX3Rl
c3RfY2xlYW51cDIoKQorICAgZm9yIChpID0gMTsgaSA8PSBOVU1USFJFQURTOyBpKyspCisgICAg
IHsKKyAgICAgICBpbnQgZmFpbCA9IDA7CistICAgICAgaW50IHJlc3VsdCA9IDA7CisrICAgICAg
bG9uZyByZXN1bHQgPSAwOworIAorICAgICAgIGFzc2VydChwdGhyZWFkX2pvaW4odFtpXSwgKHZv
aWQgKiopICZyZXN1bHQpID09IDApOworIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2NsZWFudXAzLmMg
Yi90ZXN0cy9jbGVhbnVwMy5jCitpbmRleCAwNDViODQ4Li4xYjgzZDcxIDEwMDY0NAorLS0tIGEv
dGVzdHMvY2xlYW51cDMuYworKysrIGIvdGVzdHMvY2xlYW51cDMuYworQEAgLTE5Miw3ICsxOTIs
NyBAQCBpbnQgcHRocmVhZF90ZXN0X2NsZWFudXAzKCkKKyAgIGZvciAoaSA9IDE7IGkgPD0gTlVN
VEhSRUFEUzsgaSsrKQorICAgICB7CisgICAgICAgaW50IGZhaWwgPSAwOworLSAgICAgIGludCBy
ZXN1bHQgPSAwOworKyAgICAgIGxvbmcgcmVzdWx0ID0gMDsKKyAKKyAgICAgICBhc3NlcnQocHRo
cmVhZF9qb2luKHRbaV0sICh2b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKKyAKK2RpZmYgLS1naXQg
YS90ZXN0cy9jb25kdmFyMV8yLmMgYi90ZXN0cy9jb25kdmFyMV8yLmMKK2luZGV4IDY3MDQ3OGQu
LjI2ZjYzZjcgMTAwNjQ0CistLS0gYS90ZXN0cy9jb25kdmFyMV8yLmMKKysrKyBiL3Rlc3RzL2Nv
bmR2YXIxXzIuYworQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIHB0aHJlYWRfY29uZF90IGN2W05V
TV9DVl07CisgaW50IHB0aHJlYWRfdGVzdF9jb25kdmFyMV8yKCkKKyB7CisgICBpbnQgaSwgaiwg
azsKKy0gIGludCByZXN1bHQgPSAtMTsKKysgIGxvbmcgcmVzdWx0ID0gLTE7CisgICBwdGhyZWFk
X3QgdDsKKyAKKyAgIGZvciAoayA9IDA7IGsgPCBOVU1fTE9PUFM7IGsrKykKK2RpZmYgLS1naXQg
YS90ZXN0cy9jb25kdmFyMl8xLmMgYi90ZXN0cy9jb25kdmFyMl8xLmMKK2luZGV4IDM5ZjY3ODcu
LjAwM2FlODcgMTAwNjQ0CistLS0gYS90ZXN0cy9jb25kdmFyMl8xLmMKKysrKyBiL3Rlc3RzL2Nv
bmR2YXIyXzEuYworQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2NvbmR2YXIy
XzEoKQorIHsKKyAgIGludCBpOworICAgcHRocmVhZF90IHRbTlVNVEhSRUFEUyArIDFdOworLSAg
aW50IHJlc3VsdCA9IDA7CisrICBsb25nIHJlc3VsdCA9IDA7CisgICBzdHJ1Y3QgX3RpbWViIGN1
cnJTeXNUaW1lOworICAgY29uc3QgdW5zaWduZWQgaW50IE5BTk9TRUNfUEVSX01JTExJU0VDID0g
MTAwMDAwMDsKKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9jb25kdmFyM18xLmMgYi90ZXN0cy9jb25k
dmFyM18xLmMKK2luZGV4IDg3MjVhZWMuLmFlZGNiYTkgMTAwNjQ0CistLS0gYS90ZXN0cy9jb25k
dmFyM18xLmMKKysrKyBiL3Rlc3RzL2NvbmR2YXIzXzEuYworQEAgLTE0Niw3ICsxNDYsNyBAQCBp
bnQgcHRocmVhZF90ZXN0X2NvbmR2YXIzXzEoKQorIHsKKyAgIGludCBpOworICAgcHRocmVhZF90
IHRbTlVNVEhSRUFEUyArIDFdOworLSAgaW50IHJlc3VsdCA9IDA7CisrICBsb25nIHJlc3VsdCA9
IDA7CisgCisgICB0aW1lZG91dCA9IDA7CisgICBzaWduYWxlZCA9IDA7CitkaWZmIC0tZ2l0IGEv
dGVzdHMvY29uZHZhcjNfMi5jIGIvdGVzdHMvY29uZHZhcjNfMi5jCitpbmRleCA5MWFkZTQwLi4x
ZmQxODFlIDEwMDY0NAorLS0tIGEvdGVzdHMvY29uZHZhcjNfMi5jCisrKysgYi90ZXN0cy9jb25k
dmFyM18yLmMKK0BAIC0xNDAsNyArMTQwLDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jb25kdmFyM18y
KCkKKyB7CisgICBpbnQgaTsKKyAgIHB0aHJlYWRfdCB0W05VTVRIUkVBRFMgKyAxXTsKKy0gIGlu
dCByZXN1bHQgPSAwOworKyAgbG9uZyByZXN1bHQgPSAwOworICAgc3RydWN0IF90aW1lYiBjdXJy
U3lzVGltZTsKKyAgIGNvbnN0IHVuc2lnbmVkIGludCBOQU5PU0VDX1BFUl9NSUxMSVNFQyA9IDEw
MDAwMDA7CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZGVsYXkyLmMgYi90ZXN0cy9kZWxheTIuYwor
aW5kZXggNWVlYmI0MS4uNjZlZGVmNyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RlbGF5Mi5jCisrKysg
Yi90ZXN0cy9kZWxheTIuYworQEAgLTY3LDcgKzY3LDcgQEAgZnVuYyh2b2lkICogYXJnKQorIGlu
dCBwdGhyZWFkX3Rlc3RfZGVsYXkyKCkKKyB7CisgICBwdGhyZWFkX3QgdDsKKy0gIGludCByZXN1
bHQgPSAwOworKyAgbG9uZyByZXN1bHQgPSAwOworIAorICAgbXggPSBQVEhSRUFEX01VVEVYX0lO
SVRJQUxJWkVSOworIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2V4Y2VwdGlvbjEuYyBiL3Rlc3RzL2V4
Y2VwdGlvbjEuYworaW5kZXggYTczY2NkNC4uNDA5ZmQyMiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2V4
Y2VwdGlvbjEuYworKysrIGIvdGVzdHMvZXhjZXB0aW9uMS5jCitAQCAtMTg2LDcgKzE4Niw3IEBA
IHB0aHJlYWRfdGVzdF9leGNlcHRpb24xKCkKKyAgIGZvciAoaSA9IDA7IGkgPCBOVU1USFJFQURT
OyBpKyspCisgICAgIHsKKyAgICAgICBpbnQgZmFpbCA9IDA7CistICAgICAgaW50IHJlc3VsdCA9
IDA7CisrICAgICAgbG9uZyByZXN1bHQgPSAwOworIAorIAkvKiBDYW5jZWxlZCB0aHJlYWQgKi8K
KyAgICAgICBhc3NlcnQocHRocmVhZF9qb2luKGN0W2ldLCAodm9pZCAqKikgJnJlc3VsdCkgPT0g
MCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvaW5oZXJpdDEuYyBiL3Rlc3RzL2luaGVyaXQxLmMKK2lu
ZGV4IGQ3YzEwMDAuLjJmYmQyNWEgMTAwNjQ0CistLS0gYS90ZXN0cy9pbmhlcml0MS5jCisrKysg
Yi90ZXN0cy9pbmhlcml0MS5jCitAQCAtMTAwLDcgKzEwMCw3IEBAIGludCBwdGhyZWFkX3Rlc3Rf
aW5oZXJpdDEoKQorICAgcHRocmVhZF90IHQ7CisgICBwdGhyZWFkX3QgbWFpblRocmVhZCA9IHB0
aHJlYWRfc2VsZigpOworICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKKy0gIGludCByZXN1bHQgPSAw
OworKyAgbG9uZyByZXN1bHQgPSAwOworICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworICAg
c3RydWN0IHNjaGVkX3BhcmFtIG1haW5QYXJhbTsKKyAgIGludCBwcmlvOworZGlmZiAtLWdpdCBh
L3Rlc3RzL2pvaW4wLmMgYi90ZXN0cy9qb2luMC5jCitpbmRleCAwYTA2MzM3Li5iMGMxYWNhIDEw
MDY0NAorLS0tIGEvdGVzdHMvam9pbjAuYworKysrIGIvdGVzdHMvam9pbjAuYworQEAgLTYxLDcg
KzYxLDcgQEAgZnVuYyh2b2lkICogYXJnKQorIGludCBwdGhyZWFkX3Rlc3Rfam9pbjAoKQorIHsK
KyAgIHB0aHJlYWRfdCBpZDsKKy0gIGludCByZXN1bHQ7CisrICBsb25nIHJlc3VsdDsKKyAKKyAg
IC8qIENyZWF0ZSBhIHNpbmdsZSB0aHJlYWQgYW5kIHdhaXQgZm9yIGl0IHRvIGV4aXQuICovCisg
ICBhc3NlcnQocHRocmVhZF9jcmVhdGUoJmlkLCBOVUxMLCBmdW5jLCAodm9pZCAqKSAxMjMpID09
IDApOworZGlmZiAtLWdpdCBhL3Rlc3RzL2pvaW4xLmMgYi90ZXN0cy9qb2luMS5jCitpbmRleCA0
YjU1ZDZiLi4wZGQ5YWQ0IDEwMDY0NAorLS0tIGEvdGVzdHMvam9pbjEuYworKysrIGIvdGVzdHMv
am9pbjEuYworQEAgLTYxLDcgKzYxLDcgQEAgaW50IHB0aHJlYWRfdGVzdF9qb2luMSgpCisgewor
ICAgcHRocmVhZF90IGlkWzRdOworICAgaW50IGk7CistICBpbnQgcmVzdWx0OworKyAgbG9uZyBy
ZXN1bHQ7CisgCisgICAvKiBDcmVhdGUgYSBmZXcgdGhyZWFkcyBhbmQgdGhlbiBleGl0LiAqLwor
ICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKK2RpZmYgLS1naXQgYS90ZXN0cy9qb2luMi5jIGIv
dGVzdHMvam9pbjIuYworaW5kZXggYTJlMWRjMy4uNjNmZjE3NCAxMDA2NDQKKy0tLSBhL3Rlc3Rz
L2pvaW4yLmMKKysrKyBiL3Rlc3RzL2pvaW4yLmMKK0BAIC01NSw3ICs1NSw3IEBAIGludCBwdGhy
ZWFkX3Rlc3Rfam9pbjIoKQorIHsKKyAgIHB0aHJlYWRfdCBpZFs0XTsKKyAgIGludCBpOworLSAg
aW50IHJlc3VsdDsKKysgIGxvbmcgcmVzdWx0OworIAorICAgLyogQ3JlYXRlIGEgZmV3IHRocmVh
ZHMgYW5kIHRoZW4gZXhpdC4gKi8KKyAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCitkaWZmIC0t
Z2l0IGEvdGVzdHMvam9pbjMuYyBiL3Rlc3RzL2pvaW4zLmMKK2luZGV4IDdmMGQyMjYuLjk0N2Fh
ZmYgMTAwNjQ0CistLS0gYS90ZXN0cy9qb2luMy5jCisrKysgYi90ZXN0cy9qb2luMy5jCitAQCAt
NTUsNyArNTUsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2pvaW4zKCkKKyB7CisgICBwdGhyZWFkX3Qg
aWRbNF07CisgICBpbnQgaTsKKy0gIGludCByZXN1bHQ7CisrICBsb25nIHJlc3VsdDsKKyAKKyAg
IC8qIENyZWF0ZSBhIGZldyB0aHJlYWRzIGFuZCB0aGVuIGV4aXQuICovCisgICBmb3IgKGkgPSAw
OyBpIDwgNDsgaSsrKQorZGlmZiAtLWdpdCBhL3Rlc3RzL211dGV4NmUuYyBiL3Rlc3RzL211dGV4
NmUuYworaW5kZXggNWE3NGE1ZS4uNGJiYmZkNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL211dGV4NmUu
YworKysrIGIvdGVzdHMvbXV0ZXg2ZS5jCitAQCAtODMsNyArODMsNyBAQCBpbnQKKyBwdGhyZWFk
X3Rlc3RfbXV0ZXg2ZSgpCisgeworICAgcHRocmVhZF90IHQ7CistICBpbnQgcmVzdWx0ID0gMDsK
KysgIGxvbmcgcmVzdWx0ID0gMDsKKyAgIGludCBteFR5cGUgPSAtMTsKKyAKKyAgIGxvY2tDb3Vu
dCA9IDA7CitkaWZmIC0tZ2l0IGEvdGVzdHMvbXV0ZXg2ZXMuYyBiL3Rlc3RzL211dGV4NmVzLmMK
K2luZGV4IGE0Zjk4YWYuLjRhMzgxZTYgMTAwNjQ0CistLS0gYS90ZXN0cy9tdXRleDZlcy5jCisr
KysgYi90ZXN0cy9tdXRleDZlcy5jCitAQCAtODIsNyArODIsNyBAQCBpbnQKKyBwdGhyZWFkX3Rl
c3RfbXV0ZXg2ZXMoKQorIHsKKyAgIHB0aHJlYWRfdCB0OworLSAgaW50IHJlc3VsdCA9IDA7Cisr
ICBsb25nIHJlc3VsdCA9IDA7CisgCisgICBsb2NrQ291bnQgPSAwOworIAorZGlmZiAtLWdpdCBh
L3Rlc3RzL211dGV4NnIuYyBiL3Rlc3RzL211dGV4NnIuYworaW5kZXggOTczMzQ3MS4uMmM3MzE2
ZSAxMDA2NDQKKy0tLSBhL3Rlc3RzL211dGV4NnIuYworKysrIGIvdGVzdHMvbXV0ZXg2ci5jCitA
QCAtODIsNyArODIsNyBAQCBpbnQKKyBwdGhyZWFkX3Rlc3RfbXV0ZXg2cigpCisgeworICAgcHRo
cmVhZF90IHQ7CistICBpbnQgcmVzdWx0ID0gMDsKKysgIGxvbmcgcmVzdWx0ID0gMDsKKyAgIGlu
dCBteFR5cGUgPSAtMTsKKyAKKyAgIGxvY2tDb3VudCA9IDA7CitkaWZmIC0tZ2l0IGEvdGVzdHMv
bXV0ZXg2cnMuYyBiL3Rlc3RzL211dGV4NnJzLmMKK2luZGV4IDNiNTYzOWUuLmFkN2Y5YTUgMTAw
NjQ0CistLS0gYS90ZXN0cy9tdXRleDZycy5jCisrKysgYi90ZXN0cy9tdXRleDZycy5jCitAQCAt
ODEsNyArODEsNyBAQCBpbnQKKyBwdGhyZWFkX3Rlc3RfbXV0ZXg2cnMoKQorIHsKKyAgIHB0aHJl
YWRfdCB0OworLSAgaW50IHJlc3VsdCA9IDA7CisrICBsb25nIHJlc3VsdCA9IDA7CisgCisgICBs
b2NrQ291bnQgPSAwOworICAgbXV0ZXggPSBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFM
SVpFUjsKK2RpZmYgLS1naXQgYS90ZXN0cy9tdXRleDdlLmMgYi90ZXN0cy9tdXRleDdlLmMKK2lu
ZGV4IDU3Mjg0MWUuLjFiMzYyMzUgMTAwNjQ0CistLS0gYS90ZXN0cy9tdXRleDdlLmMKKysrKyBi
L3Rlc3RzL211dGV4N2UuYworQEAgLTgzLDcgKzgzLDcgQEAgaW50CisgcHRocmVhZF90ZXN0X211
dGV4N2UoKQorIHsKKyAgIHB0aHJlYWRfdCB0OworLSAgaW50IHJlc3VsdCA9IDA7CisrICBsb25n
IHJlc3VsdCA9IDA7CisgICBpbnQgbXhUeXBlID0gLTE7CisgCisgICBsb2NrQ291bnQgPSAwOwor
ZGlmZiAtLWdpdCBhL3Rlc3RzL211dGV4N3IuYyBiL3Rlc3RzL211dGV4N3IuYworaW5kZXggYWIy
YTA3MC4uMDllOTcwMSAxMDA2NDQKKy0tLSBhL3Rlc3RzL211dGV4N3IuYworKysrIGIvdGVzdHMv
bXV0ZXg3ci5jCitAQCAtODIsNyArODIsNyBAQCBpbnQKKyBwdGhyZWFkX3Rlc3RfbXV0ZXg3cigp
CisgeworICAgcHRocmVhZF90IHQ7CistICBpbnQgcmVzdWx0ID0gMDsKKysgIGxvbmcgcmVzdWx0
ID0gMDsKKyAgIGludCBteFR5cGUgPSAtMTsKKyAKKyAgIGxvY2tDb3VudCA9IDA7CitkaWZmIC0t
Z2l0IGEvdGVzdHMvcndsb2NrNi5jIGIvdGVzdHMvcndsb2NrNi5jCitpbmRleCAyYWIxNTk1Li41
NzJjOTFhIDEwMDY0NAorLS0tIGEvdGVzdHMvcndsb2NrNi5jCisrKysgYi90ZXN0cy9yd2xvY2s2
LmMKK0BAIC04Miw5ICs4Miw5IEBAIGludCBwdGhyZWFkX3Rlc3Rfcndsb2NrNigpCisgICBwdGhy
ZWFkX3Qgd3J0MTsKKyAgIHB0aHJlYWRfdCB3cnQyOworICAgcHRocmVhZF90IHJkdDsKKy0gIGlu
dCB3cjFSZXN1bHQgPSAwOworLSAgaW50IHdyMlJlc3VsdCA9IDA7CistICBpbnQgcmRSZXN1bHQg
PSAwOworKyAgbG9uZyB3cjFSZXN1bHQgPSAwOworKyAgbG9uZyB3cjJSZXN1bHQgPSAwOworKyAg
bG9uZyByZFJlc3VsdCA9IDA7CisgCisgICByd2xvY2sxID0gUFRIUkVBRF9SV0xPQ0tfSU5JVElB
TElaRVI7CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvcndsb2NrNl90LmMgYi90ZXN0cy9yd2xvY2s2
X3QuYworaW5kZXggY2Y5MjgyOC4uNmIzNGRkZSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3J3bG9jazZf
dC5jCisrKysgYi90ZXN0cy9yd2xvY2s2X3QuYworQEAgLTEwMiwxMCArMTAyLDEwIEBAIGludCBw
dGhyZWFkX3Rlc3Rfcndsb2NrNnQoKQorICAgcHRocmVhZF90IHdydDI7CisgICBwdGhyZWFkX3Qg
cmR0MTsKKyAgIHB0aHJlYWRfdCByZHQyOworLSAgaW50IHdyMVJlc3VsdCA9IDA7CistICBpbnQg
d3IyUmVzdWx0ID0gMDsKKy0gIGludCByZDFSZXN1bHQgPSAwOworLSAgaW50IHJkMlJlc3VsdCA9
IDA7CisrICBsb25nIHdyMVJlc3VsdCA9IDA7CisrICBsb25nIHdyMlJlc3VsdCA9IDA7CisrICBs
b25nIHJkMVJlc3VsdCA9IDA7CisrICBsb25nIHJkMlJlc3VsdCA9IDA7CisgCisgICByd2xvY2sx
ID0gUFRIUkVBRF9SV0xPQ0tfSU5JVElBTElaRVI7CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvcnds
b2NrNl90Mi5jIGIvdGVzdHMvcndsb2NrNl90Mi5jCitpbmRleCA5MTZjNGM1Li40ZjI0ZDdkIDEw
MDY0NAorLS0tIGEvdGVzdHMvcndsb2NrNl90Mi5jCisrKysgYi90ZXN0cy9yd2xvY2s2X3QyLmMK
K0BAIC05NCw5ICs5NCw5IEBAIGludCBwdGhyZWFkX3Rlc3Rfcndsb2NrNnQyKCkKKyAgIHB0aHJl
YWRfdCB3cnQxOworICAgcHRocmVhZF90IHdydDI7CisgICBwdGhyZWFkX3QgcmR0OworLSAgaW50
IHdyMVJlc3VsdCA9IDA7CistICBpbnQgd3IyUmVzdWx0ID0gMDsKKy0gIGludCByZFJlc3VsdCA9
IDA7CisrICBsb25nIHdyMVJlc3VsdCA9IDA7CisrICBsb25nIHdyMlJlc3VsdCA9IDA7CisrICBs
b25nIHJkUmVzdWx0ID0gMDsKKyAgIHN0cnVjdCBfdGltZWIgY3VyclN5c1RpbWU7CisgICBjb25z
dCBsb25nIGxvbmcgTkFOT1NFQ19QRVJfTUlMTElTRUMgPSAxMDAwMDAwOworIAorZGlmZiAtLWdp
dCBhL3Rlc3RzL3NlbWFwaG9yZTEuYyBiL3Rlc3RzL3NlbWFwaG9yZTEuYworaW5kZXggM2RkODVl
ZS4uNWJhYThhNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3NlbWFwaG9yZTEuYworKysrIGIvdGVzdHMv
c2VtYXBob3JlMS5jCitAQCAtMTExLDcgKzExMSw3IEBAIGludCBwdGhyZWFkX3Rlc3Rfc2VtYXBo
b3JlMSh2b2lkKQorIHsKKyAgIHB0aHJlYWRfdCB0OworICAgc2VtX3QgczsKKy0gIGludCByZXN1
bHQ7CisrICBsb25nIHJlc3VsdDsKKyAKKyAgIGFzc2VydChwdGhyZWFkX2NyZWF0ZSgmdCwgTlVM
TCwgdGhyLCBOVUxMKSA9PSAwKTsKKyAgIGFzc2VydChwdGhyZWFkX2pvaW4odCwgKHZvaWQgKiop
JnJlc3VsdCkgPT0gMCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvc2VtYXBob3JlNC5jIGIvdGVzdHMv
c2VtYXBob3JlNC5jCitpbmRleCA3NTMwNDI0Li5lMWJjOGY4IDEwMDY0NAorLS0tIGEvdGVzdHMv
c2VtYXBob3JlNC5jCisrKysgYi90ZXN0cy9zZW1hcGhvcmU0LmMKK0BAIC0xMzQsNyArMTM0LDcg
QEAgaW50IHB0aHJlYWRfdGVzdF9zZW1hcGhvcmU0KHZvaWQpCisgCisgICBhc3NlcnQocHRocmVh
ZF9jYW5jZWwodFs1XSkgPT0gMCk7CisgICB7CistICAgIGludCByZXN1bHQ7CisrICAgIGxvbmcg
cmVzdWx0OworICAgICBhc3NlcnQocHRocmVhZF9qb2luKHRbNV0sICh2b2lkICoqKSAmcmVzdWx0
KSA9PSAwKTsKKyAgIH0KKyAgIGFzc2VydChzZW1fZ2V0dmFsdWUoJnMsICZ2YWx1ZSkgPT0gMCk7
CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHNkMS5jIGIvdGVzdHMvdHNkMS5jCitpbmRleCA0YzUzMDhi
Li45MjljOTI5IDEwMDY0NAorLS0tIGEvdGVzdHMvdHNkMS5jCisrKysgYi90ZXN0cy90c2QxLmMK
K0BAIC0xOTcsNyArMTk3LDcgQEAgaW50IHB0aHJlYWRfdGVzdF90c2QxKCkKKyAgICAqLworICAg
Zm9yIChpID0gMTsgaSA8IE5VTV9USFJFQURTOyBpKyspCisgICAgIHsKKy0gICAgICBpbnQgcmVz
dWx0ID0gMDsKKysgICAgICBsb25nIHJlc3VsdCA9IDA7CisgCisgICAgICAgYXNzZXJ0KHB0aHJl
YWRfam9pbih0aHJlYWRbaV0sICh2b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKKyAgICAgfQorZGlm
ZiAtLWdpdCBhL3Rlc3RzL3RzZDIuYyBiL3Rlc3RzL3RzZDIuYworaW5kZXggYTk1NThhYi4uZDM2
ZGY5ZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzZDIuYworKysrIGIvdGVzdHMvdHNkMi5jCitAQCAt
MTk1LDcgKzE5NSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfdHNkMigpCisgICAgKi8KKyAgIGZvciAo
aSA9IDE7IGkgPCBOVU1fVEhSRUFEUzsgaSsrKQorICAgICB7CistICAgICAgaW50IHJlc3VsdCA9
IDA7CisrICAgICAgbG9uZyByZXN1bHQgPSAwOworIAorICAgICAgIGFzc2VydChwdGhyZWFkX2pv
aW4odGhyZWFkW2ldLCAodm9pZCAqKikgJnJlc3VsdCkgPT0gMCk7CisgICAgIH0KKy0tIAorMi4x
MS4wCisKZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAwMi10ZXN0cy1idWdmaXgtUGFzcy1yaWdodC1h
cmd1bWVudHMtb24tdGVzdHMtZXhpdDQtYW5kLnBhdGNoIGIvcGF0Y2hlcy8wMDAyLXRlc3RzLWJ1
Z2ZpeC1QYXNzLXJpZ2h0LWFyZ3VtZW50cy1vbi10ZXN0cy1leGl0NC1hbmQucGF0Y2gKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE0ZDgzNQotLS0gL2Rldi9udWxsCisrKyBi
L3BhdGNoZXMvMDAwMi10ZXN0cy1idWdmaXgtUGFzcy1yaWdodC1hcmd1bWVudHMtb24tdGVzdHMt
ZXhpdDQtYW5kLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gMWJjYWRmM2QzZGU1YjJlZjE0
MTcyMTZlM2VlNTZiN2VjMTJlZGRlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENv
c3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOSBNYXIgMjAxOSAx
OToyNzoxNiArMDIwMAorU3ViamVjdDogW1BBVENIIDIvNV0gdGVzdHMgYnVnZml4IFBhc3Mgcmln
aHQgYXJndW1lbnRzIG9uIHRlc3RzIGV4aXQ0IGFuZAorIGV4aXQ1CisKKworZGlmZiAtLWdpdCBh
L3Rlc3RzL2V4aXQ0LmMgYi90ZXN0cy9leGl0NC5jCitpbmRleCA2ZDNlOWFkLi4yNjQ1MjQ2IDEw
MDY0NAorLS0tIGEvdGVzdHMvZXhpdDQuYworKysrIGIvdGVzdHMvZXhpdDQuYworQEAgLTEwNSw3
ICsxMDUsNyBAQCBzdGF0aWMgYmFnX3QgdGhyZWFkYmFnW05VTVRIUkVBRFMgKyAxXTsKKyBzdGF0
aWMgaW50IG9zVGhyZWFkKHZvaWQgKiBhcmcpCisgeworICAgaW50IHJlc3VsdCA9IDE7CistICBi
YWdfdCAqIGJhZyA9ICooKGJhZ190ICoqKSBhcmcpOworKyAgYmFnX3QgKiBiYWcgPSBhcmc7Cisg
CisgICBhc3NlcnQoYmFnID09ICZ0aHJlYWRiYWdbYmFnLT50aHJlYWRudW1dKTsKKyAgIGFzc2Vy
dChiYWctPnN0YXJ0ZWQgPT0gMCk7CitAQCAtMTQyLDcgKzE0Miw3IEBAIGludCBwdGhyZWFkX3Rl
c3RfZXhpdDQoKQorICAgICAgIHB0ciA9ICYodGhyZWFkYmFnW2ldKTsKKyAKKyAgICAgICBwdGVf
b3NUaHJlYWRDcmVhdGUob3NUaHJlYWQsIDQwOTYsIDEwLAorLSAgICAgICAgICAgICAgICAgICAg
ICAgICAmcHRyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICZoW2ldKTsKKyAKKyAgICAgICBwdGVfb3NUaHJlYWRTdGFydChoW2ldKTsK
K2RpZmYgLS1naXQgYS90ZXN0cy9leGl0NS5jIGIvdGVzdHMvZXhpdDUuYworaW5kZXggNWUwOWMw
Zi4uYmNhZDZlOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2V4aXQ1LmMKKysrKyBiL3Rlc3RzL2V4aXQ1
LmMKK0BAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIGJhZ190IHRocmVhZGJhZ1tOVU1USFJFQURT
ICsgMV07Cisgc3RhdGljIGludCBvc1RocmVhZCh2b2lkICogYXJnKQorIHsKKyAgIGludCByZXN1
bHQgPSAxOworLSAgYmFnX3QgKiBiYWcgPSAqKChiYWdfdCAqKikgYXJnKTsKKysgIGJhZ190ICog
YmFnID0gYXJnOworIAorICAgYXNzZXJ0KGJhZyA9PSAmdGhyZWFkYmFnW2JhZy0+dGhyZWFkbnVt
XSk7CisgICBhc3NlcnQoYmFnLT5zdGFydGVkID09IDApOworQEAgLTEzOCw3ICsxMzgsNyBAQCBp
bnQgcHRocmVhZF90ZXN0X2V4aXQ1KCkKKyAgICAgICBwdHIgPSAmKHRocmVhZGJhZ1tpXSk7Cisg
CisgICAgICAgcHRlX29zVGhyZWFkQ3JlYXRlKG9zVGhyZWFkLCA0MDk2LCAxMCwKKy0gICAgICAg
ICAgICAgICAgICAgICAgICAgJnB0ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgcHRyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAmaFtpXSk7CisgCisgICAgICAgcHRlX29zVGhyZWFk
U3RhcnQoaFtpXSk7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDMtdGVz
dHMtYnVnZml4LUZpeC1tYWNyby1kZWZpbml0aW9ucy1mb3ItdGVzdHMtb25jZTMtYS5wYXRjaCBi
L3BhdGNoZXMvMDAwMy10ZXN0cy1idWdmaXgtRml4LW1hY3JvLWRlZmluaXRpb25zLWZvci10ZXN0
cy1vbmNlMy1hLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NjZl
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzLzAwMDMtdGVzdHMtYnVnZml4LUZpeC1tYWNy
by1kZWZpbml0aW9ucy1mb3ItdGVzdHMtb25jZTMtYS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitG
cm9tIDI3NTc1ZjI1NTliNmEwMTUwMWM0MDcwNTAyNmVjYTgzYWE1MTFmMzEgTW9uIFNlcCAxNyAw
MDowMDowMCAyMDAxCitGcm9tOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cEBnbWFpbC5jb20+CitE
YXRlOiBTYXQsIDkgTWFyIDIwMTkgMTk6MzA6MTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVd
IHRlc3RzIGJ1Z2ZpeCBGaXggbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRlc3RzIG9uY2UzIGFuZAor
IG9uY2U0CisKKworZGlmZiAtLWdpdCBhL3Rlc3RzL29uY2UzLmMgYi90ZXN0cy9vbmNlMy5jCitp
bmRleCA1MDUzNzRjLi5hYzI4ZTZkIDEwMDY0NAorLS0tIGEvdGVzdHMvb25jZTMuYworKysrIGIv
dGVzdHMvb25jZTMuYworQEAgLTU1LDcgKzU1LDcgQEAKKyAKKyAjaW5jbHVkZSAidGVzdC5oIgor
IAorLSNkZWZpbmUgTlVNX1RIUkVBRFMgT1NfTUFYX1NJTVVMX1RIUkVBRFMgLyA1IC8qIFRhcmdl
dGluZyBlYWNoIG9uY2UgY29udHJvbCAqLworKyNkZWZpbmUgTlVNX1RIUkVBRFMgKE9TX01BWF9T
SU1VTF9USFJFQURTIC8gNSkgLyogVGFyZ2V0aW5nIGVhY2ggb25jZSBjb250cm9sICovCisgI2Rl
ZmluZSBOVU1fT05DRSAgICA1CisgCisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvb25jZTQuYyBiL3Rl
c3RzL29uY2U0LmMKK2luZGV4IDAyN2JkYWEuLmRhNGE0NGMgMTAwNjQ0CistLS0gYS90ZXN0cy9v
bmNlNC5jCisrKysgYi90ZXN0cy9vbmNlNC5jCitAQCAtNTMsNyArNTMsNyBAQAorIAorICNpbmNs
dWRlICJ0ZXN0LmgiCisgCistI2RlZmluZSBOVU1fVEhSRUFEUyBPU19NQVhfU0lNVUxfVEhSRUFE
UyAvIDUgLyogVGFyZ2V0aW5nIGVhY2ggb25jZSBjb250cm9sICovCisrI2RlZmluZSBOVU1fVEhS
RUFEUyAoT1NfTUFYX1NJTVVMX1RIUkVBRFMgLyA1KSAvKiBUYXJnZXRpbmcgZWFjaCBvbmNlIGNv
bnRyb2wgKi8KKyAjZGVmaW5lIE5VTV9PTkNFICAgIDUKKyAKKyBzdGF0aWMgcHRocmVhZF9vbmNl
X3QgbyA9IFBUSFJFQURfT05DRV9JTklUOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcGF0
Y2hlcy8wMDA0LXRlc3RzLURpc2FibGUtcHJpb3JpdHktdGVzdHMtdW50aWwtd2UtYWRkLXByZWVt
cHRpdmUucGF0Y2ggYi9wYXRjaGVzLzAwMDQtdGVzdHMtRGlzYWJsZS1wcmlvcml0eS10ZXN0cy11
bnRpbC13ZS1hZGQtcHJlZW1wdGl2ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mMDc3M2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDA0LXRlc3RzLURp
c2FibGUtcHJpb3JpdHktdGVzdHMtdW50aWwtd2UtYWRkLXByZWVtcHRpdmUucGF0Y2gKQEAgLTAs
MCArMSwyOCBAQAorRnJvbSAzNmRlYzBkM2I1ZTVlZjI3OWJkYjMwZWU1MWIzZTk4Y2IyMWY1NTE5
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXBA
Z21haWwuY29tPgorRGF0ZTogU2F0LCA5IE1hciAyMDE5IDE5OjMyOjU4ICswMjAwCitTdWJqZWN0
OiBbUEFUQ0ggNC81XSB0ZXN0cyBEaXNhYmxlIHByaW9yaXR5IHRlc3RzIHVudGlsIHdlIGFkZCBw
cmVlbXB0aXZlCisgc2NoZWR1bGluZworCisKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0X21haW4u
YyBiL3Rlc3RzL3Rlc3RfbWFpbi5jCitpbmRleCBkNGJlYTQ4Li5iZDY0OThlIDEwMDY0NAorLS0t
IGEvdGVzdHMvdGVzdF9tYWluLmMKKysrKyBiL3Rlc3RzL3Rlc3RfbWFpbi5jCitAQCAtMTA5LDEx
ICsxMDksMTMgQEAgc3RhdGljIHZvaWQgcnVuVGhyZWFkVGVzdHModm9pZCkKKyAgICAgcHRocmVh
ZF90ZXN0X3JldXNlMigpOworICAgKi8KKyAKKysjaWYgMAorICAgcHJpbnRmKCJQcmlvcml0eSB0
ZXN0ICMxXG4iKTsKKyAgIHB0aHJlYWRfdGVzdF9wcmlvcml0eTEoKTsKKyAKKyAgIHByaW50Zigi
UHJpb3JpdHkgdGVzdCAjMlxuIik7CisgICBwdGhyZWFkX3Rlc3RfcHJpb3JpdHkyKCk7CisrI2Vu
ZGlmCisgCisgLy8gIHByaW50ZigiSW5oZXJpdCB0ZXN0ICMxXG4iKTsKKyAvLyAgcHRocmVhZF90
ZXN0X2luaGVyaXQxKCk7ICAvLy9AdG9kbworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcGF0
Y2hlcy8wMDA1LVVzZS1VbmlrcmFmdC15aWVsZC1mdW5jdGlvbi5wYXRjaCBiL3BhdGNoZXMvMDAw
NS1Vc2UtVW5pa3JhZnQteWllbGQtZnVuY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGVjOTNiNgotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAwNS1V
c2UtVW5pa3JhZnQteWllbGQtZnVuY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorRnJvbSA1
MmNjZjMyMjJkYTk0NmQyZWExMWE0ZjNlY2JhOGUzMWU3MTY1NTYyIE1vbiBTZXAgMTcgMDA6MDA6
MDAgMjAwMQorRnJvbTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXBAZ21haWwuY29tPgorRGF0ZTog
U2F0LCA5IE1hciAyMDE5IDE5OjM3OjA0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSBVc2Ug
VW5pa3JhZnQgeWllbGQgZnVuY3Rpb24KKworCitkaWZmIC0tZ2l0IGEvcHRlX2dlbmVyaWNfb3Nh
bC5oIGIvcHRlX2dlbmVyaWNfb3NhbC5oCitpbmRleCA0ZGIxZjUyLi5kZTFlYTVmIDEwMDY0NAor
LS0tIGEvcHRlX2dlbmVyaWNfb3NhbC5oCisrKysgYi9wdGVfZ2VuZXJpY19vc2FsLmgKK0BAIC0y
NDEsNyArMjQxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB0ZV9vc1lpZWxkKHZvaWQpCisgICov
Cisgc3RhdGljIGlubGluZSB2b2lkIHB0ZV9vc1lpZWxkKHZvaWQpCisgeworLQlwdGVfb3NUaHJl
YWRTbGVlcCgxKTsKKysJdWtfc2NoZWRfeWllbGQoKTsKKyB9CisgI2VuZGlmCisgCistLSAKKzIu
MTEuMAorCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDYtU2VwYXJhdGUtaGVhZGVyLWluY2x1c2lv
bnMtZm9yLWZ1bmN0aW9ucy1mcm9tLWhlYWRlci5wYXRjaCBiL3BhdGNoZXMvMDAwNi1TZXBhcmF0
ZS1oZWFkZXItaW5jbHVzaW9ucy1mb3ItZnVuY3Rpb25zLWZyb20taGVhZGVyLnBhdGNoCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZDY2YjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9wYXRjaGVzLzAwMDYtU2VwYXJhdGUtaGVhZGVyLWluY2x1c2lvbnMtZm9yLWZ1bmN0aW9ucy1m
cm9tLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDhjYTk1N2RkYzIyODU0Njlm
ZGI0MTM3YTliMzdmZmQwY2JjMDY0ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBD
b3N0aW4gTHVwdSA8Y29zdGluLmx1cEBnbWFpbC5jb20+CitEYXRlOiBNb24sIDExIE1hciAyMDE5
IDEwOjAxOjE1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFNlcGFyYXRlIGhlYWRlciBpbmNsdXNp
b25zIGZvciBmdW5jdGlvbnMgZnJvbSBoZWFkZXIKKyBpbmNsdXNpb24gZm9yIHR5cGVzCisKK0lu
Y2x1ZGluZyB0aW1lLmggYmVmb3JlIGRlZmluaW5nIHB0aHJlYWRfdCB0eXBlIGdlbmVyYXRlcyAi
dW5rbm93biB0eXBlIG5hbWUKK+KAmHB0aHJlYWRfdOKAmSIgY29tcGlsaW5nIGVycm9ycyB3aXRo
IE5ld2xpYiBiZWNhdXNlIG9mIHNvbWUgY2lyY3VsYXIgaW5jbHVzaW9ucy4KK1RodXMgd2UgYWRv
cHQgYSBtb3JlIGdlbmVyaWMgYXBwcm9hY2gsIHNlcGFyYXRpbmcgdGhlIGluY2x1c2lvbnMgbmVl
ZGVkIGZvcgorZGVmaW5pbmcgdHlwZXMgZnJvbSB0aGUgaW5jbHVzaW9ucyBuZWVkZWQgZm9yIGRl
Y2xhcmluZyBmdW5jdGlvbnMsIG1vdmluZyB0aGUKK2xhdHRlciBqdXN0IGJlZm9yZSBkZWNsYXJp
bmcgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMuCisKK2RpZmYgLS1naXQgYS9wdGhyZWFkLmggYi9w
dGhyZWFkLmgKK2luZGV4IDViNjkwNTMuLjMzZGY0NDYgMTAwNjQ0CistLS0gYS9wdGhyZWFkLmgK
KysrKyBiL3B0aHJlYWQuaAorQEAgLTE3NCw5ICsxNzQsNiBAQAorICAqIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKi8KKyAK
Ky0jaW5jbHVkZSA8dGltZS5oPgorLQorLSNpbmNsdWRlIDxzZXRqbXAuaD4KKyAjaW5jbHVkZSA8
bGltaXRzLmg+CisgCisgLyoKK0BAIC02NTMsNiArNjUwLDEwIEBAIGVudW0KKyAKKyAjZW5kaWYg
LyogUFRFX0NMRUFOVVBfQyAqLworIAorKyNpbmNsdWRlIDx0aW1lLmg+CisrCisrI2luY2x1ZGUg
PHNldGptcC5oPgorKworICAgICAvKgorICAgICAgKiA9PT09PT09PT09PT09PT0KKyAgICAgICog
PT09PT09PT09PT09PT09CistLSAKKzIuMTEuMAorCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:16:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15: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 1hXohn-0004oj-9X; Mon, 03 Jun 2019 15:16:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IA9N=UC=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hXohl-0004o1-Ly
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:16:57 +0000
X-Inumbo-ID: 9e60c436-8612-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 9e60c436-8612-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 15:16:53 +0000 (UTC)
IronPort-SDR: pKDpTWUilZbcNO9+BzQhXPQmnkOrPM4Rfv5DLZ6JS8zplTXXWvywORHzUDhZvnL2zCmR9Mk2yH
 pOjasxihu6hw==
IronPort-PHdr: =?us-ascii?q?9a23=3A1aTXkRd9/AJ7ZZiLfZSRralwlGMj4u6mDksu8p?=
 =?us-ascii?q?Mizoh2WeGdxcS8ZB7h7PlgxGXEQZ/co6odzbaP6ua5AjNLsc/JmUtBWaQEbw?=
 =?us-ascii?q?UCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFR?=
 =?us-ascii?q?rlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQi6oR/MusQYg4ZuJaU8xg?=
 =?us-ascii?q?bUqXZUZupawn9lK0iOlBjm/Mew+5Bj8yVUu/0/8sNLTLv3caclQ7FGFToqK2?=
 =?us-ascii?q?866tHluhnFVguP+2ATUn4KnRpSAgjK9w/1U5HsuSbnrOV92S2aPcrrTbAoXD?=
 =?us-ascii?q?mp8qlmRAP0hCoBKjU09nzchM5tg6JBuB+vpwJxzZPabo+WM/RxfK3dcMgGSW?=
 =?us-ascii?q?ZdRMtdSzZMDp+gY4YJEuEPPfxYr474p1YWsxa+AhKsBP/uyj9Om3T427A60/?=
 =?us-ascii?q?w8EQrb2wEvA9UOsG/IrNX0MqceS+S1zLTQzTXedP5ZxSz95JLQchA8uv6AR6?=
 =?us-ascii?q?hwcc3IxEQpCgjLgFKQqYn/MDOU0OQAq2eb7+t8VeKvlm4osBt9rSSoxscpjI?=
 =?us-ascii?q?TCm4Ebykjc+Clkz4s5OMe0RU17bNK+DpdcqSOXO5F4T886Xm1ltzs2xqcFtJ?=
 =?us-ascii?q?O7ZiQG1poqyhDFZ/CafIWE/BTuX/uLLzhinnJqYre/ig638Uin1+LzSNG50E?=
 =?us-ascii?q?1PripZitnMsW0N1wDL5siHVPR9+kCh1C6R1wDW8O5EIEQ0mbDHJJ462LIwjo?=
 =?us-ascii?q?cTvl/ZEi/sn0X6lK6WdkM69ei08+nrf7rrqoKGO4J3igzyKLoiltK9DOgiPA?=
 =?us-ascii?q?UCR22b9v691L3n8035WrJKjvgun6bFt5DaPtgbpq+/AwNP1oYj9g6/Dyq93d?=
 =?us-ascii?q?sEhnkLNkpFeA+cgITzIVHOJ+j0De2jjFS0jDdr2/fGM6XkApXMKHjDkbDhfa?=
 =?us-ascii?q?1k50FB1gUz085Q55ZPB7EFIfLzQVPxtMfCAh42LQO0xfzrCNJn1oMRQWiPGL?=
 =?us-ascii?q?OWMLvOsV+U4eIiO+mCZIsSuDbnKvgq/fjugWUkl1ABfamp2JoXZ22kHvl9JU?=
 =?us-ascii?q?WWf2bjgtMbHmgRpAYxUvHq2xW+VmtWZnCzWLl56jwlBYaOCYbYWpvrkLGHmi?=
 =?us-ascii?q?ChEc54fGdDX3uLCmvpcc2gRu8RIHaZJdR9kzpCUaW5Vqcqzle2qQW80b0xfb?=
 =?us-ascii?q?mcwTERqZ+2jIs93ObUjxxnrTE=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2AnAQB8OfVcjAPjVY1mHAEBAQQBAQc?=
 =?us-ascii?q?EAQGBVAQBAQsBgnpSAQEeEiiND6UJD4FYCQEBATMHAQIBAYFLgnUCgzU3Bg4?=
 =?us-ascii?q?BAwEBBQEBAQEEARMBAQEmTAyCOiKCbwMDGgEMUhA/ElcZgyIBgg4LqnkzhUe?=
 =?us-ascii?q?DHYFGgTQBhwKGLj+BEAGFXFUCAoEkJ4V2BIsrEAaIbWuTBloHAoIPWgSFYYx?=
 =?us-ascii?q?nJ4IiaIYJjVuSYIErkGo2IYFZMxpzgmsBBQSCEg4JFIM5hAiDcoJcPAEBMTJ?=
 =?us-ascii?q?UAQGNewEDIoIsAQE?=
X-IPAS-Result: =?us-ascii?q?A2AnAQB8OfVcjAPjVY1mHAEBAQQBAQcEAQGBVAQBAQsBg?=
 =?us-ascii?q?npSAQEeEiiND6UJD4FYCQEBATMHAQIBAYFLgnUCgzU3Bg4BAwEBBQEBAQEEA?=
 =?us-ascii?q?RMBAQEmTAyCOiKCbwMDGgEMUhA/ElcZgyIBgg4LqnkzhUeDHYFGgTQBhwKGL?=
 =?us-ascii?q?j+BEAGFXFUCAoEkJ4V2BIsrEAaIbWuTBloHAoIPWgSFYYxnJ4IiaIYJjVuSY?=
 =?us-ascii?q?IErkGo2IYFZMxpzgmsBBQSCEg4JFIM5hAiDcoJcPAEBMTJUAQGNewEDIoIsA?=
 =?us-ascii?q?QE?=
X-IronPort-AV: E=Sophos;i="5.60,547,1549922400"; 
   d="scan'208";a="3485107"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 03 Jun 2019 18:16:45 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id F09691A601A6;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id hXwyfLcvXsHT; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id C87F41A601F9;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id HrwscNsxIviN; Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 848EA1A60197;
 Mon,  3 Jun 2019 18:16:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 18:16:36 +0300
Message-Id: <20190603151640.22507-5-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 4/8] Initial
 port of pthread-embedded to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian.Schmidt@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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIHB0aHJlYWQtZW1iZWRkZWQgdG8gVW5pa3JhZnQg
YXMgZXh0ZXJuYWwKbGlicmFyeS4gRm9yIG5vdyB5b3UgbmVlZCBuZXdsaWIgdG8gbWFrZSBpdCB3
b3JrLiBXaGVuIGFkZGluZyB0aGUKbGlicmFyeSBpbiB0aGUgZGVwZW5kZW5jeSBsaXN0LCBwdGhy
ZWFkLWVtYmVkZGVkIHNob3VsZCBzdGF5IGJlZm9yZQpuZXdsaWIgKGUuZy4gLi4uOiQoVUtfTElC
UykvcHRocmVhZC1lbWJlZGRlZDokKFVLX0xJQlMpL25ld2xpYi5naXQ6Li4uKS4KClNpZ25lZC1v
ZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogQ29uZmlnLnVr
ICAgICAgICAgICAgICAgICAgIHwgIDMwICsrKwogTWFrZWZpbGUudWsgICAgICAgICAgICAgICAg
IHwgMzI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBSRUFETUUubWQgICAgICAgICAgICAg
ICAgICAgfCAgMTAgKwogZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgIHwgIDkwICsrKysrKysr
CiBpbmNsdWRlL3B0ZV9vc2FsLmggICAgICAgICAgfCAgMTYgKysKIGluY2x1ZGUvcHRlX3R5cGVz
LmggICAgICAgICB8ICAxMCArCiBpbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmggfCAgIDYgKwog
cHRlX29zYWwuYyAgICAgICAgICAgICAgICAgIHwgNTQyICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDEwMzEgaW5zZXJ0aW9ucygr
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2Vm
aWxlLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwb3J0c3ltcy51awogY3JlYXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUvcHRlX29zYWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvcHRlX3R5
cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBwdGVfb3NhbC5jCgpkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29u
ZmlnLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ODdjNTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Db25maWcudWsKQEAgLTAsMCArMSwzMCBAQAorbWVudWNvbmZpZyBMSUJQ
VEhSRUFEX0VNQkVEREVECisJYm9vbCAibGlicHRocmVhZC1lbWJlZGRlZCAtIEFuIGVtYmVkZGVk
IHB0aHJlYWQgbGlicmFyeSIKKwlkZWZhdWx0IG4KKwlzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZF
X0xJQkMKKwlzZWxlY3QgTElCVUtERUJVRworCXNlbGVjdCBMSUJVS0FMTE9DCisJc2VsZWN0IExJ
QlVLU0NIRUQKKwlzZWxlY3QgTElCVUtMT0NLCisJc2VsZWN0IExJQlVLTE9DS19NVVRFWAorCXNl
bGVjdCBMSUJVS0xPQ0tfU0VNQVBIT1JFCisKK2lmIExJQlBUSFJFQURfRU1CRURERUQKK2NvbmZp
ZyBMSUJQVEhSRUFEX0VNQkVEREVEX01BWF9TSU1VTF9USFJFQURTCisJaW50ICJNYXhpbXVtIG51
bWJlciBvZiBzaW11bHRhbmVvdXMgdGhyZWFkcyIKKwlkZWZhdWx0IDMyCisJaGVscAorCQlNYXhp
bXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgdGhyZWFkcy4KKworY29uZmlnIExJQlBUSFJFQURf
RU1CRURERURfTUFYX1RMUworCWludCAiTWF4aW11bSBudW1iZXIgb2YgVExTIHZhbHVlcyIKKwlk
ZWZhdWx0IDMyCisJaGVscAorCQlNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0ZWQgVExTIHZhbHVl
cy4KKworY29uZmlnIExJQlBUSFJFQURfRU1CRURERURfVVRFU1QKKwlib29sICJCdWlsZCB1bml0
IHRlc3RzIgorCWRlZmF1bHQgbgorCWhlbHAKKwkJQnVpbGRzIHRoZSB1bml0IHRlc3RzIGZvciBy
dW5uaW5nIHRoZW0gZnJvbSBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbi4KK2VuZGlmCmRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjEyYzY4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZS51awpAQCAtMCww
ICsxLDMyNyBAQAorIworIyBVbmlrcmFmdCBwb3J0IG9mIFBPU0lYIFRocmVhZHMgTGlicmFyeSBm
b3IgZW1iZWRkZWQgc3lzdGVtcworIyBDb3B5cmlnaHQoQykgMjAxOSBDb3N0aW4gTHVwdSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
IyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlIGZpbGUgQ09QWUlORy5MSUI7Cisj
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQQor
IworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWJyYXJ5IHJlZ2lzdHJhdGlvbgorIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicHRocmVhZC1l
bWJlZGRlZCwkKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEKSkpCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJQVEhSRUFE
LUVNQkVEREVEX1ZFUlNJT049NDRiNDFkNzYwYTQzMzkxNWQ3MGE3YmU5ODA5NjUxYjBhNjVlMDAx
ZAorTElCUFRIUkVBRC1FTUJFRERFRF9VUkw9aHR0cHM6Ly9naXRodWIuY29tL1JXVEgtT1MvcHRo
cmVhZC1lbWJlZGRlZC9hcmNoaXZlLyQoTElCUFRIUkVBRC1FTUJFRERFRF9WRVJTSU9OKS56aXAK
K0xJQlBUSFJFQUQtRU1CRURERURfUEFUQ0hESVI9JChMSUJQVEhSRUFELUVNQkVEREVEX0JBU0Up
L3BhdGNoZXMKKyQoZXZhbCAkKGNhbGwgZmV0Y2gsbGlicHRocmVhZC1lbWJlZGRlZCwkKExJQlBU
SFJFQUQtRU1CRURERURfVVJMKSkpCiskKGV2YWwgJChjYWxsIHBhdGNoLGxpYnB0aHJlYWQtZW1i
ZWRkZWQsJChMSUJQVEhSRUFELUVNQkVEREVEX1BBVENIRElSKSxwdGhyZWFkLWVtYmVkZGVkLSQo
TElCUFRIUkVBRC1FTUJFRERFRF9WRVJTSU9OKSkpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjIEhlbHBlcnMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCA9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9PUklHSU4pL3B0aHJlYWQtZW1iZWRk
ZWQtJChMSUJQVEhSRUFELUVNQkVEREVEX1ZFUlNJT04pCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjIExpYnJhcnkgaW5jbHVkZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitDSU5DTFVE
RVMtJChDT05GSUdfTElCUFRIUkVBRF9FTUJFRERFRCkgICArPSAtSSQoTElCUFRIUkVBRC1FTUJF
RERFRF9CQVNFKS9pbmNsdWRlCitDSU5DTFVERVMtJChDT05GSUdfTElCUFRIUkVBRF9FTUJFRERF
RCkgICArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpCitDSU5DTFVERVMtJChD
T05GSUdfTElCUFRIUkVBRF9FTUJFRERFRCkgICArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3BsYXRmb3JtL2hlbHBlcgorCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJQVEhS
RUFEX0VNQkVEREVEKSArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNFKS9pbmNsdWRlCitD
WFhJTkNMVURFUy0kKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEKSArPSAtSSQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJQVEhSRUFEX0VN
QkVEREVEKSArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3BsYXRmb3JtL2hl
bHBlcgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBHbG9iYWwgZmxhZ3MKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCitTVVBQUkVTU19GTEFHUyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIg
XAorLVduby1wb2ludGVyLXRvLWludC1jYXN0IC1Xbm8taW50LXRvLXBvaW50ZXItY2FzdCBcCist
V25vLXVudXNlZC12YXJpYWJsZSAtV25vLXVudXNlZC12YWx1ZSAtV25vLXVudXNlZC1mdW5jdGlv
biBcCistV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzCisKK0xJQlBUSFJFQUQtRU1CRURE
RURfQ0ZMQUdTLXkgICArPSAkKFNVUFBSRVNTX0ZMQUdTKQorTElCUFRIUkVBRC1FTUJFRERFRF9D
WFhGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpCisKK0xJQlBUSFJFQUQtRU1CRURERURfRVhQ
T1JUUyA9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNFKS9leHBvcnRzeW1zLnVrCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjIE9TIGRlcGVuZGVuY2llcyBjb2RlIC0gR2x1ZSBiZXR3ZWVu
IFVuaWtyYWZ0IGFuZCBwdGhyZWFkLWVtYmVkZGVkCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0JBU0Up
L3B0ZV9vc2FsLmN8Z2x1ZQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBwdGhyZWFkLWVt
YmVkZGVkIGNvZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9jbGVhbnVwLmMKK0xJ
QlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNU
RUQpL2NyZWF0ZS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS9nbG9iYWwuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkg
Kz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcGxhdGZvcm0vaGVscGVyL3Rscy1o
ZWxwZXIuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvcHRlX2NhbGxVc2VyRGVzdHJveVJvdXRpbmVzLmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9j
YW5jZWxsYWJsZV93YWl0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9jb25kX2NoZWNrX25lZWRfaW5pdC5jCitMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS9wdGVfZGV0YWNoLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9nZXRwcm9jZXNzb3JzLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9pc19h
dHRyLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3B0ZV9tdXRleF9jaGVja19uZWVkX2luaXQuYworTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX25ldy5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS9wdGVfcmVsbWlsbGlzZWNzLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9yZXVzZS5jCitMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGVf
cndsb2NrX2NhbmNlbHdyd2FpdC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGVfcndsb2NrX2NoZWNrX25lZWRfaW5pdC5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS9wdGVfc3BpbmxvY2tfY2hlY2tfbmVlZF9pbml0LmMKK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV90aHJlYWRE
ZXN0cm95LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3B0ZV90aHJlYWRTdGFydC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NS
Q1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGVfdGhyb3cuYworTElC
UFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RF
RCkvcHRlX3RrQXNzb2NDcmVhdGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChM
SUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX3RrQXNzb2NEZXN0cm95LmMKK0xJQlBU
SFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
L3B0aHJlYWRfYXR0cl9kZXN0cm95LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0
ZS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNjaGVkLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
YXR0cl9nZXRzY2hlZHBhcmFtLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeS5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS9wdGhyZWFkX2F0dHJfZ2V0c2NvcGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9hdHRyX2dldHN0
YWNrYWRkci5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplLmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfYXR0cl9pbml0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZS5jCitMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS9wdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9zZXRz
Y2hlZHBhcmFtLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeS5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9w
dGhyZWFkX2F0dHJfc2V0c2NvcGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChM
SUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9hdHRyX3NldHN0YWNrYWRkci5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS9wdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYmFycmll
cmF0dHJfZGVzdHJveS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2JhcnJpZXJhdHRyX2dldHBzaGFyZWQuYwor
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvcHRocmVhZF9iYXJyaWVyYXR0cl9pbml0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYmFycmllcmF0
dHJfc2V0cHNoYXJlZC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2JhcnJpZXJfZGVzdHJveS5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9w
dGhyZWFkX2JhcnJpZXJfaW5pdC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2JhcnJpZXJfd2FpdC5jCitMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS9wdGhyZWFkX2NhbmNlbC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2NvbmRhdHRyX2Rlc3Ryb3kuYworTElC
UFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RF
RCkvcHRocmVhZF9jb25kYXR0cl9nZXRwc2hhcmVkLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfY29uZGF0dHJf
aW5pdC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS9wdGhyZWFkX2NvbmRhdHRyX3NldHBzaGFyZWQuYworTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVh
ZF9jb25kX2Rlc3Ryb3kuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9jb25kX2luaXQuYworTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVh
ZF9jb25kX3NpZ25hbC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2NvbmRfd2FpdC5jCitMSUJQVEhSRUFELUVN
QkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFk
X2RlbGF5X25wLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfZGV0YWNoLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfZXF1YWwu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9leGl0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfZ2V0Y29uY3VycmVuY3kuYwor
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvcHRocmVhZF9nZXRzY2hlZHBhcmFtLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfZ2V0c3BlY2lmaWMu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9pbml0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfam9pbi5jCitMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhy
ZWFkX2tleV9jcmVhdGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9rZXlfZGVsZXRlLmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfa2lsbC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4YXR0cl9kZXN0cm95LmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfbXV0ZXhhdHRyX2dldGtpbmRfbnAuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRleGF0dHJfZ2V0cHNo
YXJlZC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4YXR0cl9nZXR0eXBlLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
bXV0ZXhhdHRyX2luaXQuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRleGF0dHJfc2V0a2luZF9ucC5jCitM
SUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFD
VEVEKS9wdGhyZWFkX211dGV4YXR0cl9zZXRwc2hhcmVkLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfbXV0ZXhh
dHRyX3NldHR5cGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRleF9kZXN0cm95LmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfbXV0ZXhfaW5pdC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4X2xvY2suYworTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVh
ZF9tdXRleF90aW1lZGxvY2suYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRleF90cnlsb2NrLmMKK0xJQlBU
SFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
L3B0aHJlYWRfbXV0ZXhfdW5sb2NrLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfbnVtX3Byb2Nlc3NvcnNfbnAu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9vbmNlLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrYXR0cl9kZXN0cm95
LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3B0aHJlYWRfcndsb2NrYXR0cl9nZXRwc2hhcmVkLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
cndsb2NrYXR0cl9pbml0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrYXR0cl9zZXRwc2hhcmVkLmMK
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3B0aHJlYWRfcndsb2NrX2Rlc3Ryb3kuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9yd2xvY2tfaW5p
dC5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS9wdGhyZWFkX3J3bG9ja19yZGxvY2suYworTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9yd2xvY2tf
dGltZWRyZGxvY2suYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2suYworTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
cHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrX3RyeXdybG9j
ay5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS9wdGhyZWFkX3J3bG9ja191bmxvY2suYworTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9yd2xvY2tf
d3Jsb2NrLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc2VsZi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3NldGNhbmNlbHN0
YXRlLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3B0aHJlYWRfc2V0Y2FuY2VsdHlwZS5jCitMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3NldGNv
bmN1cnJlbmN5LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc2V0c2NoZWRwYXJhbS5jCitMSUJQVEhSRUFELUVN
QkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFk
X3NldHNwZWNpZmljLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc3Bpbl9kZXN0cm95LmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfc3Bpbl9pbml0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc3Bpbl9sb2NrLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
c3Bpbl90cnlsb2NrLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc3Bpbl91bmxvY2suYworTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVh
ZF90ZXJtaW5hdGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF90ZXN0Y2FuY2VsLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
dGltZWNoYW5nZV9oYW5kbGVyX25wLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3NjaGVkX2dldF9wcmlvcml0eV9tYXguYwor
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvc2NoZWRfZ2V0X3ByaW9yaXR5X21pbi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zY2hlZF9zZXRzY2hlZHVsZXIu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvc2NoZWRfeWllbGQuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChM
SUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvc2VtX2Nsb3NlLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3NlbV9kZXN0
cm95LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3NlbV9nZXR2YWx1ZS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1faW5pdC5jCitMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1f
b3Blbi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS9zZW1fcG9zdF9tdWx0aXBsZS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NS
Q1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1fcG9zdC5jCitMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS9zZW1fdGltZWR3YWl0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3NlbV90cnl3YWl0LmMKK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3NlbV91bmxpbmsu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvc2VtX3dhaXQuYworCitpZmVxICgkKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVE
X1VURVNUKSx5KQorTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVN
QkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmFycmllcjEuYworTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmFycmllcjIu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvdGVzdHMvYmFycmllcjMuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmFycmllcjQuYworTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
dGVzdHMvYmFycmllcjUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmVuY2hsaWIuYworTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmVu
Y2h0ZXN0MS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS90ZXN0cy9iZW5jaHRlc3QyLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2JlbmNodGVz
dDMuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvYmVuY2h0ZXN0NC5jCisjTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmVuY2h0ZXN0NS5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9jYW5jZWwxLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NhbmNlbDIuYworTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMvY2FuY2VsMy5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jYW5jZWw0LmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NhbmNlbDUu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvdGVzdHMvY2FuY2VsNmEuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY2FuY2VsNmQuYworTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
dGVzdHMvY2xlYW51cDAuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY2xlYW51cDEuYworTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY2xl
YW51cDIuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvdGVzdHMvY2xlYW51cDMuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjFfMS5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9jb25kdmFyMV8yLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NvbmR2YXIxLmMKK0xJQlBU
SFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
L3Rlc3RzL2NvbmR2YXIyXzEuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjIuYworTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMv
Y29uZHZhcjNfMS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jb25kdmFyM18yLmMKK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NvbmR2
YXIzXzMuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjMuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjQuYwor
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvdGVzdHMvY29uZHZhcjUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChM
SUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjYuYworTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMvY29uZHZhcjcuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjguYworTElCUFRIUkVBRC1FTUJFRERF
RF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZh
cjkuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvY291bnQxLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NyZWF0ZTEuYworTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
dGVzdHMvY3JlYXRlMi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jcmVhdGUzLmMKK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2RlbGF5
MS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS90ZXN0cy9kZWxheTIuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvZGV0YWNoMS5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9lcXVhbDEuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvZXJybm8xLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2V4Y2VwdGlv
bjEuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvZXhjZXB0aW9uMi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9leGNlcHRpb24zLmMK
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL2V4aXQxLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2V4aXQyLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2V4
aXQzLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3Rlc3RzL2V4aXQ0LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2V4aXQ1LmMKK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rl
c3RzL2luaGVyaXQxLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2pvaW4wLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2pvaW4xLmMK
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL2pvaW4yLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2pvaW4zLmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2pv
aW40LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3Rlc3RzL2tpbGwxLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4MS5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9tdXRleDFlLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4MW4uYworTElCUFRIUkVBRC1FTUJFRERF
RF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXgx
ci5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS90ZXN0cy9tdXRleDIuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXgyZS5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9tdXRleDJyLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4My5jCitMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDNl
LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3Rlc3RzL211dGV4M3IuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg0LmMKK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rl
c3RzL211dGV4NS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDYuYworTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg2ZS5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9tdXRleDZlcy5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAk
KExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDZuLmMKK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rl
c3RzL211dGV4NnIuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg2cnMuYworTElCUFRIUkVBRC1FTUJFRERF
RF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg2
cy5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS90ZXN0cy9tdXRleDcuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg3ZS5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9tdXRleDduLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4N3IuYworTElCUFRIUkVBRC1FTUJFRERF
RF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg4
LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3Rlc3RzL211dGV4OGUuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg4bi5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9tdXRleDhyLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL29uY2UxLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL29uY2UyLmMK
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL29uY2UzLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL29uY2U0LmMKK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3By
aW9yaXR5MS5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS90ZXN0cy9wcmlvcml0eTIuYworTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcmV1c2UxLmMK
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL3JldXNlMi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9yd2xvY2sxLmMKK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3Rz
L3J3bG9jazIuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVN
QkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcndsb2NrMl90LmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazMu
YworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvdGVzdHMvcndsb2NrM190LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazQuYworTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
dGVzdHMvcndsb2NrNF90LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazUuYworTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcnds
b2NrNV90LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazYuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcndsb2NrNl90Mi5j
CitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9yd2xvY2s2X3QuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcndsb2NrNy5jCitMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9yd2xvY2s4LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NlbGYxLmMKK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NlbGYyLmMK
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL3NlbWFwaG9yZTEuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvc2VtYXBob3JlMi5jCitMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS90ZXN0cy9zZW1hcGhvcmUzLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NlbWFwaG9yZTQuYworTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMvc2VtYXBob3JlNHQuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvc2VtYXBob3JlNS5jCitMSUJQVEhSRUFELUVN
QkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9z
ZW1hcGhvcmU2LmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NwaW4xLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NwaW4yLmMKK0xJ
QlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNU
RUQpL3Rlc3RzL3NwaW4zLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NwaW40LmMKK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3N0cmVz
czEuYworTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvdGVzdF9tYWluLmMKK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3RzZDEuYworTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
dGVzdHMvdHNkMi5jCitMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy92YWxpZDEuYworTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvdmFsaWQyLmMK
K2VuZGlmCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKaW5kZXggMmVjYzIzOS4u
YjllYjU4MCAxMDA2NDQKLS0tIGEvUkVBRE1FLm1kCisrKyBiL1JFQURNRS5tZApAQCAtMSw1ICsx
LDE1IEBACiBwdGhyZWFkLWVtYmVkZGVkIGZvciBVbmlrcmFmdAogPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIAorVGhpcyBpcyB0aGUgcG9ydCBvZiBwdGhyZWFkLWVtYmVkZGVkIGZvciBV
bmlrcmFmdCBhcyBleHRlcm5hbCBsaWJyYXJ5LiBZb3Ugd2lsbAorbmVlZCBuZXdsaWIgdG8gbWFr
ZSBpdCB3b3JrLiBXaGVuIGFkZGluZyB0aGUgbGlicmFyeSBpbiB0aGUgZGVwZW5kZW5jeSBsaXN0
LAorcHRocmVhZC1lbWJlZGRlZCBzaG91bGQgc3RheSBiZWZvcmUgbmV3bGliLCBlLmcuOgorCisg
YC4uLjokKFVLX0xJQlMpL3B0aHJlYWQtZW1iZWRkZWQ6JChVS19MSUJTKS9uZXdsaWI6Li4uYAor
CitGb3IgcnVubmluZyB0aGUgdW5pdCB0ZXN0cywgZW5hYmxlIHRoZSAnQnVpbGQgdW5pdCB0ZXN0
cycgb3B0aW9uIGluIHRoZQorY29uZmlndXJhdGlvbiBtZW51IGFuZCBjYWxsIHRoZSBgcHRlX3Rl
c3RfbWFpbigpYCBmdW5jdGlvbiBpbiB5b3VyIG1haW4KK2FwcGxpY2F0aW9uLgorCiBQbGVhc2Ug
cmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3VtZW50YXRpb24gaW4g
dGhlIGBkb2MvYAogc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnku
CmRpZmYgLS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51awpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI1YzAyCi0tLSAvZGV2L251bGwKKysrIGIvZXhwb3J0
c3ltcy51awpAQCAtMCwwICsxLDkwIEBACitwdGhyZWFkX2luaXQKK3B0aHJlYWRfdGVybWluYXRl
CitwdGhyZWFkX2F0dHJfaW5pdAorcHRocmVhZF9hdHRyX2Rlc3Ryb3kKK3B0aHJlYWRfYXR0cl9n
ZXRkZXRhY2hzdGF0ZQorcHRocmVhZF9hdHRyX2dldHN0YWNrYWRkcgorcHRocmVhZF9hdHRyX2dl
dHN0YWNrc2l6ZQorcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlCitwdGhyZWFkX2F0dHJfc2V0
c3RhY2thZGRyCitwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplCitwdGhyZWFkX2F0dHJfZ2V0c2No
ZWRwYXJhbQorcHRocmVhZF9hdHRyX3NldHNjaGVkcGFyYW0KK3B0aHJlYWRfYXR0cl9zZXRzY2hl
ZHBvbGljeQorcHRocmVhZF9hdHRyX2dldHNjaGVkcG9saWN5CitwdGhyZWFkX2F0dHJfc2V0aW5o
ZXJpdHNjaGVkCitwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNjaGVkCitwdGhyZWFkX2F0dHJfc2V0
c2NvcGUKK3B0aHJlYWRfYXR0cl9nZXRzY29wZQorcHRocmVhZF9jcmVhdGUKK3B0aHJlYWRfZGV0
YWNoCitwdGhyZWFkX2VxdWFsCitwdGhyZWFkX2V4aXQKK3B0aHJlYWRfam9pbgorcHRocmVhZF9z
ZWxmCitwdGhyZWFkX2NhbmNlbAorcHRocmVhZF9zZXRjYW5jZWxzdGF0ZQorcHRocmVhZF9zZXRj
YW5jZWx0eXBlCitwdGhyZWFkX3Rlc3RjYW5jZWwKK3B0aHJlYWRfb25jZQorcHRocmVhZF9rZXlf
Y3JlYXRlCitwdGhyZWFkX2tleV9kZWxldGUKK3B0aHJlYWRfc2V0c3BlY2lmaWMKK3B0aHJlYWRf
Z2V0c3BlY2lmaWMKK3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQKK3B0aHJlYWRfbXV0ZXhhdHRyX2Rl
c3Ryb3kKK3B0aHJlYWRfbXV0ZXhhdHRyX2dldHBzaGFyZWQKK3B0aHJlYWRfbXV0ZXhhdHRyX3Nl
dHBzaGFyZWQKK3B0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUKK3B0aHJlYWRfbXV0ZXhhdHRyX2dl
dHR5cGUKK3B0aHJlYWRfYmFycmllcmF0dHJfaW5pdAorcHRocmVhZF9iYXJyaWVyYXR0cl9kZXN0
cm95CitwdGhyZWFkX2JhcnJpZXJhdHRyX2dldHBzaGFyZWQKK3B0aHJlYWRfYmFycmllcmF0dHJf
c2V0cHNoYXJlZAorcHRocmVhZF9tdXRleF9pbml0CitwdGhyZWFkX211dGV4X2Rlc3Ryb3kKK3B0
aHJlYWRfbXV0ZXhfbG9jaworcHRocmVhZF9tdXRleF90aW1lZGxvY2sKK3B0aHJlYWRfbXV0ZXhf
dHJ5bG9jaworcHRocmVhZF9tdXRleF91bmxvY2sKK3B0aHJlYWRfc3Bpbl9pbml0CitwdGhyZWFk
X3NwaW5fZGVzdHJveQorcHRocmVhZF9zcGluX2xvY2sKK3B0aHJlYWRfc3Bpbl90cnlsb2NrCitw
dGhyZWFkX3NwaW5fdW5sb2NrCitwdGhyZWFkX2JhcnJpZXJfaW5pdAorcHRocmVhZF9iYXJyaWVy
X2Rlc3Ryb3kKK3B0aHJlYWRfYmFycmllcl93YWl0CitwdGhyZWFkX2NvbmRhdHRyX2luaXQKK3B0
aHJlYWRfY29uZGF0dHJfZGVzdHJveQorcHRocmVhZF9jb25kYXR0cl9nZXRwc2hhcmVkCitwdGhy
ZWFkX2NvbmRhdHRyX3NldHBzaGFyZWQKK3B0aHJlYWRfY29uZF9pbml0CitwdGhyZWFkX2NvbmRf
ZGVzdHJveQorcHRocmVhZF9jb25kX3dhaXQKK3B0aHJlYWRfY29uZF90aW1lZHdhaXQKK3B0aHJl
YWRfY29uZF9zaWduYWwKK3B0aHJlYWRfY29uZF9icm9hZGNhc3QKK3B0aHJlYWRfc2V0c2NoZWRw
YXJhbQorcHRocmVhZF9nZXRzY2hlZHBhcmFtCitwdGhyZWFkX3NldGNvbmN1cnJlbmN5CitwdGhy
ZWFkX2dldGNvbmN1cnJlbmN5CitwdGhyZWFkX3J3bG9ja19pbml0CitwdGhyZWFkX3J3bG9ja19k
ZXN0cm95CitwdGhyZWFkX3J3bG9ja190cnlyZGxvY2sKK3B0aHJlYWRfcndsb2NrX3RyeXdybG9j
aworcHRocmVhZF9yd2xvY2tfcmRsb2NrCitwdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jaworcHRo
cmVhZF9yd2xvY2tfd3Jsb2NrCitwdGhyZWFkX3J3bG9ja190aW1lZHdybG9jaworcHRocmVhZF9y
d2xvY2tfdW5sb2NrCitwdGhyZWFkX3J3bG9ja2F0dHJfaW5pdAorcHRocmVhZF9yd2xvY2thdHRy
X2Rlc3Ryb3kKK3B0aHJlYWRfcndsb2NrYXR0cl9nZXRwc2hhcmVkCitwdGhyZWFkX3J3bG9ja2F0
dHJfc2V0cHNoYXJlZAorcHRocmVhZF9raWxsCitzY2hlZF95aWVsZAorc2NoZWRfZ2V0X3ByaW9y
aXR5X21pbgorc2NoZWRfZ2V0X3ByaW9yaXR5X21heAorc2NoZWRfc2V0c2NoZWR1bGVyCitwdGVf
dGVzdF9tYWluCmRpZmYgLS1naXQgYS9pbmNsdWRlL3B0ZV9vc2FsLmggYi9pbmNsdWRlL3B0ZV9v
c2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNmNTM3NAotLS0gL2Rl
di9udWxsCisrKyBiL2luY2x1ZGUvcHRlX29zYWwuaApAQCAtMCwwICsxLDE2IEBACisjaWZuZGVm
IF9fUFRFX09TQUxfSF9fCisjZGVmaW5lIF9fUFRFX09TQUxfSF9fCisKKyNpbmNsdWRlIDx1ay9t
dXRleC5oPgorI2luY2x1ZGUgPHVrL3NlbWFwaG9yZS5oPgorCit0eXBlZGVmIHN0cnVjdCB1a190
aHJlYWQqIHB0ZV9vc1RocmVhZEhhbmRsZTsKK3R5cGVkZWYgc3RydWN0IHVrX3NlbWFwaG9yZSAq
cHRlX29zU2VtYXBob3JlSGFuZGxlOwordHlwZWRlZiBzdHJ1Y3QgdWtfbXV0ZXggKnB0ZV9vc011
dGV4SGFuZGxlOworCisjZGVmaW5lIE9TX01BWF9TSU1VTF9USFJFQURTIFwKKwlDT05GSUdfTElC
UFRIUkVBRF9FTUJFRERFRF9NQVhfU0lNVUxfVEhSRUFEUworCisjaW5jbHVkZSAicHRlX2dlbmVy
aWNfb3NhbC5oIgorCisjZW5kaWYgLyogX19QVEVfT1NBTF9IX18gKi8KZGlmZiAtLWdpdCBhL2lu
Y2x1ZGUvcHRlX3R5cGVzLmggYi9pbmNsdWRlL3B0ZV90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM5MDgxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3B0
ZV90eXBlcy5oCkBAIC0wLDAgKzEsMTAgQEAKKyNpZm5kZWYgX19QVEVfVFlQRVNfSF9fCisjZGVm
aW5lIF9fUFRFX1RZUEVTX0hfXworCisjaW5jbHVkZSA8c3lzL3RpbWViLmg+CisKK3R5cGVkZWYg
dW5zaWduZWQgaW50IHRpZF90OworCit0eXBlZGVmIGludCBwaWRfdDsKKworI2VuZGlmIC8qIF9f
UFRFX1RZUEVTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXMvX3B0aHJlYWR0eXBlcy5o
IGIvaW5jbHVkZS9zeXMvX3B0aHJlYWR0eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVkOTg3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3N5cy9fcHRocmVh
ZHR5cGVzLmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9TWVNfX1BUSFJFQURUWVBFU19IXwor
I2RlZmluZSBfU1lTX19QVEhSRUFEVFlQRVNfSF8KKworI2luY2x1ZGUgPHB0aHJlYWQuaD4KKwor
I2VuZGlmIC8qIF9TWVNfX1BUSFJFQURUWVBFU19IXyAqLwpkaWZmIC0tZ2l0IGEvcHRlX29zYWwu
YyBiL3B0ZV9vc2FsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNiYzBh
MgotLS0gL2Rldi9udWxsCisrKyBiL3B0ZV9vc2FsLmMKQEAgLTAsMCArMSw1NDIgQEAKKy8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlciAqLworLyoKKyAqICAgICAg
VW5pa3JhZnQgcG9ydCBvZiBQT1NJWCBUaHJlYWRzIExpYnJhcnkgZm9yIGVtYmVkZGVkIHN5c3Rl
bXMKKyAqICAgICAgQ29weXJpZ2h0KEMpIDIwMTkgQ29zdGluIEx1cHUsIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0CisgKgorICogICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICAg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogICAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogICAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogICAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogICAgICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuTElCOworICogICAg
ICBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisg
KiAgICAgIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EKKyAqLworCisvKgorICogVGhpcyBwb3J0IGlzIGRlcml2ZWQgZnJvbSBoZXJtaXQvcHRl
X29zYWwuYy4KKyAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWsvZXNzZW50
aWFscy5oPgorI2luY2x1ZGUgPHVrL2FyY2gvdGltZS5oPgorI2luY2x1ZGUgPHVrL2FyY2gvYXRv
bWljLmg+CisjaW5jbHVkZSA8dWsvcHJpbnQuaD4KKyNpbmNsdWRlIDx1ay90aHJlYWQuaD4KKyNp
bmNsdWRlICJwdGVfb3NhbC5oIgorI2luY2x1ZGUgInB0aHJlYWQuaCIKKyNpbmNsdWRlICJ0bHMt
aGVscGVyLmgiCisKKwordHlwZWRlZiBzdHJ1Y3QgeworCS8qIHRocmVhZCByb3V0aW5lICovCisJ
cHRlX29zVGhyZWFkRW50cnlQb2ludCBlbnRyeV9wb2ludDsKKwkvKiB0aHJlYWQgcm91dGluZSBh
cmd1bWVudHMgKi8KKwl2b2lkICphcmd2OworCS8qIFVuaWtyYWZ0IHRocmVhZCAqLworCXN0cnVj
dCB1a190aHJlYWQgKnVrX3RocmVhZDsKKwkvKiBUTFMgKi8KKwl2b2lkICp0bHM7CisJLyogU2Vt
YXBob3JlIGZvciB0cmlnZ2VyaW5nIHRocmVhZCBzdGFydCAqLworCXN0cnVjdCB1a19zZW1hcGhv
cmUgc3RhcnRfc2VtOworCS8qIFNlbWFwaG9yZSBmb3IgY2FuY2VsbGF0aW9uICovCisJc3RydWN0
IHVrX3NlbWFwaG9yZSBjYW5jZWxfc2VtOworCS8qIElzIG5vbi16ZXJvIGlmIHRocmVhZCBleGl0
ZWQgKi8KKwlpbnQgZG9uZTsKK30gcHRlX3RocmVhZF9kYXRhX3Q7CisKKworLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyAqCisgKiBJbml0aWFsaXphdGlvbgorICoKKyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisKK2ludCBfX2NvbnN0cnVjdG9yIHB0aHJlYWRfY29uc3RydWN0b3Iodm9pZCkKK3sKKwl1a19w
cl9kZWJ1ZygicHRocmVhZC1lbWJlZGRlZCBjb25zdHJ1Y3RvclxuIik7CisJcmV0dXJuIHB0aHJl
YWRfaW5pdCgpOworfQorCitwdGVfb3NSZXN1bHQgcHRlX29zSW5pdCh2b2lkKQoreworCXB0ZV9v
c1Jlc3VsdCByZXN1bHQgPSBQVEVfT1NfT0s7CisJcHRlX3RocmVhZF9kYXRhX3QgKnB0ZDsKKwlz
dHJ1Y3QgdWtfdGhyZWFkICpjcm50OworCisJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgVExT
IHN1cHBvcnQgKi8KKwlyZXN1bHQgPSBwdGVUbHNHbG9iYWxJbml0KENPTkZJR19MSUJQVEhSRUFE
X0VNQkVEREVEX01BWF9UTFMpOworCWlmIChyZXN1bHQgIT0gUFRFX09TX09LKSB7CisJCXVrX3By
X2VycigiQ291bGQgbm90IGluaXQgZ2xvYmFsIFRMUyIpOworCQlnb3RvIG91dDsKKwl9CisKKwkv
KiBDcmVhdGUgYSBwdGQgZm9yIGluaXRpYWxpemluZyB0aHJlYWQuICovCisJcHRkID0gY2FsbG9j
KDEsIHNpemVvZihwdGVfdGhyZWFkX2RhdGFfdCkpOworCWlmIChwdGQgPT0gTlVMTCkgeworCQly
ZXN1bHQgPSBQVEVfT1NfTk9fUkVTT1VSQ0VTOworCQlnb3RvIG91dDsKKwl9CisKKwlwdGQtPnRs
cyA9IHB0ZVRsc1RocmVhZEluaXQoKTsKKwlpZiAocHRkLT50bHMgPT0gTlVMTCkgeworCQl1a19w
cl9lcnIoIkNvdWxkIG5vdCBpbml0IFRMUyIpOworCQlmcmVlKHB0ZCk7CisJCXJlc3VsdCA9IFBU
RV9PU19OT19SRVNPVVJDRVM7CisJCWdvdG8gb3V0OworCX0KKworCWNybnQgPSB1a190aHJlYWRf
Y3VycmVudCgpOworCWNybnQtPnBydiA9IHB0ZDsKKwlwdGQtPnVrX3RocmVhZCA9IGNybnQ7CisK
K291dDoKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAq
IFRocmVhZHMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgcHRlX3RocmVhZF9k
YXRhX3QgKmhhbmRsZV90b19wdGQocHRlX29zVGhyZWFkSGFuZGxlIGgpCit7CisJcmV0dXJuIGgt
PnBydjsKK30KKworc3RhdGljIHB0ZV90aHJlYWRfZGF0YV90ICpjdXJyZW50X3B0ZCh2b2lkKQor
eworCXJldHVybiB1a190aHJlYWRfY3VycmVudCgpLT5wcnY7Cit9CisKK3N0YXRpYyB2b2lkIHVr
X3N0dWJfdGhyZWFkX2VudHJ5KHZvaWQgKmFyZ3YpCit7CisJcHRlX3RocmVhZF9kYXRhX3QgKnB0
ZCA9IChwdGVfdGhyZWFkX2RhdGFfdCAqKSBhcmd2OworCisJLyogd2FpdCBmb3IgdGhlIHJlc3Vt
ZSBjb21tYW5kICovCisJdWtfc2VtYXBob3JlX2Rvd24oJnB0ZC0+c3RhcnRfc2VtKTsKKworCXB0
ZC0+ZW50cnlfcG9pbnQocHRkLT5hcmd2KTsKK30KKworcHRlX29zUmVzdWx0IHB0ZV9vc1RocmVh
ZENyZWF0ZShwdGVfb3NUaHJlYWRFbnRyeVBvaW50IGVudHJ5X3BvaW50LAorCWludCBzdGFja19z
aXplLCBpbnQgaW5pdGlhbF9wcmlvLCB2b2lkICphcmd2LAorCXB0ZV9vc1RocmVhZEhhbmRsZSAq
cGgpCit7CisJcHRlX3RocmVhZF9kYXRhX3QgKnB0ZDsKKworCXB0ZCA9IG1hbGxvYyhzaXplb2Yo
cHRlX3RocmVhZF9kYXRhX3QpKTsKKwlpZiAoIXB0ZCkKKwkJcmV0dXJuIFBURV9PU19OT19SRVNP
VVJDRVM7CisKKwlwdGQtPmVudHJ5X3BvaW50ID0gZW50cnlfcG9pbnQ7CisJcHRkLT5hcmd2ID0g
YXJndjsKKworCS8qIEFsbG9jYXRlIFRMUyBzdHJ1Y3R1cmUgZm9yIHRoaXMgdGhyZWFkLiAqLwor
CXB0ZC0+dGxzID0gcHRlVGxzVGhyZWFkSW5pdCgpOworCWlmIChwdGQtPnRscyA9PSBOVUxMKSB7
CisJCXVrX3ByX2VycigiQ291bGQgbm90IGFsbG9jYXRlIFRMU1xuIik7CisJCWZyZWUocHRkKTsK
KwkJcmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7CisJfQorCisJdWtfc2VtYXBob3JlX2luaXQo
JnB0ZC0+c3RhcnRfc2VtLCAwKTsKKwl1a19zZW1hcGhvcmVfaW5pdCgmcHRkLT5jYW5jZWxfc2Vt
LCAwKTsKKwlwdGQtPmRvbmUgPSAwOworCisJcHRkLT51a190aHJlYWQgPSB1a190aHJlYWRfY3Jl
YXRlX2F0dHIoTlVMTCwgTlVMTCwKKwkJdWtfc3R1Yl90aHJlYWRfZW50cnksIHB0ZCk7CisJaWYg
KHB0ZC0+dWtfdGhyZWFkID09IE5VTEwpIHsKKwkJcHRlVGxzVGhyZWFkRGVzdHJveShwdGQtPnRs
cyk7CisJCWZyZWUocHRkKTsKKwkJcmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7CisJfQorCisJ
cHRkLT51a190aHJlYWQtPnBydiA9IHB0ZDsKKworCSpwaCA9IHB0ZC0+dWtfdGhyZWFkOworCisJ
cmV0dXJuIFBURV9PU19PSzsKK30KKworcHRlX29zUmVzdWx0IHB0ZV9vc1RocmVhZFN0YXJ0KHB0
ZV9vc1RocmVhZEhhbmRsZSBoKQoreworCXB0ZV90aHJlYWRfZGF0YV90ICpwdGQgPSBoYW5kbGVf
dG9fcHRkKGgpOworCisJLyogd2FrZSB1cCB0aHJlYWQgKi8KKwl1a19zZW1hcGhvcmVfdXAoJnB0
ZC0+c3RhcnRfc2VtKTsKKworCXJldHVybiAwOworfQorCitwdGVfb3NSZXN1bHQgcHRlX29zVGhy
ZWFkRGVsZXRlKHB0ZV9vc1RocmVhZEhhbmRsZSBoKQoreworCXB0ZV90aHJlYWRfZGF0YV90ICpw
dGQgPSBoYW5kbGVfdG9fcHRkKGgpOworCisJLyogZnJlZSByZXNvdXJjZXMgKi8KKwlwdGVUbHNU
aHJlYWREZXN0cm95KHB0ZC0+dGxzKTsKKwlmcmVlKHB0ZCk7CisKKwlyZXR1cm4gUFRFX09TX09L
OworfQorCitwdGVfb3NSZXN1bHQgcHRlX29zVGhyZWFkRXhpdEFuZERlbGV0ZShwdGVfb3NUaHJl
YWRIYW5kbGUgaCkKK3sKKwlpZiAoaC0+c2NoZWQpCisJCXVrX3RocmVhZF9raWxsKGgpOworCXB0
ZV9vc1RocmVhZERlbGV0ZShoKTsKKworCXJldHVybiBQVEVfT1NfT0s7Cit9CisKK3ZvaWQgcHRl
X29zVGhyZWFkRXhpdCh2b2lkKQoreworCXB0ZV90aHJlYWRfZGF0YV90ICpwdGQgPSBjdXJyZW50
X3B0ZCgpOworCisJcHRkLT5kb25lID0gMTsKKwl1a19zY2hlZF90aHJlYWRfZXhpdCgpOworfQor
CitwdGVfb3NSZXN1bHQgcHRlX29zVGhyZWFkV2FpdEZvckVuZChwdGVfb3NUaHJlYWRIYW5kbGUg
aCkKK3sKKwlwdGVfdGhyZWFkX2RhdGFfdCAqcHRkID0gaGFuZGxlX3RvX3B0ZChoKTsKKwlwdGVf
dGhyZWFkX2RhdGFfdCAqc2VsZl9wdGQgPSBjdXJyZW50X3B0ZCgpOworCisJd2hpbGUgKDEpIHsK
KwkJaWYgKHB0ZC0+ZG9uZSkgeworCQkJdWtfdGhyZWFkX3dhaXQocHRkLT51a190aHJlYWQpOwor
CQkJcmV0dXJuIFBURV9PU19PSzsKKwkJfQorCisJCWlmIChzZWxmX3B0ZCAmJiBzZWxmX3B0ZC0+
Y2FuY2VsX3NlbS5jb3VudCA+IDApCisJCQlyZXR1cm4gUFRFX09TX0lOVEVSUlVQVEVEOworCisJ
CWVsc2UKKwkJCXVrX3NjaGVkX3lpZWxkKCk7CisJfQorfQorCitwdGVfb3NSZXN1bHQgcHRlX29z
VGhyZWFkQ2FuY2VsKHB0ZV9vc1RocmVhZEhhbmRsZSBoKQoreworCXB0ZV90aHJlYWRfZGF0YV90
ICpwdGQgPSBoYW5kbGVfdG9fcHRkKGgpOworCisJdWtfc2VtYXBob3JlX3VwKCZwdGQtPmNhbmNl
bF9zZW0pOworCisJcmV0dXJuIFBURV9PU19PSzsKK30KKworcHRlX29zUmVzdWx0IHB0ZV9vc1Ro
cmVhZENoZWNrQ2FuY2VsKHB0ZV9vc1RocmVhZEhhbmRsZSBoKQoreworCXB0ZV90aHJlYWRfZGF0
YV90ICpwdGQgPSBoYW5kbGVfdG9fcHRkKGgpOworCisJaWYgKHB0ZCAmJiBwdGQtPmNhbmNlbF9z
ZW0uY291bnQgPiAwKQorCQlyZXR1cm4gUFRFX09TX0lOVEVSUlVQVEVEOworCisJcmV0dXJuIFBU
RV9PU19PSzsKK30KKworcHRlX29zVGhyZWFkSGFuZGxlIHB0ZV9vc1RocmVhZEdldEhhbmRsZSh2
b2lkKQoreworCXJldHVybiB1a190aHJlYWRfY3VycmVudCgpOworfQorCitpbnQgcHRlX29zVGhy
ZWFkR2V0UHJpb3JpdHkocHRlX29zVGhyZWFkSGFuZGxlIGgpCit7CisJcHRlX3RocmVhZF9kYXRh
X3QgKnB0ZCA9IGhhbmRsZV90b19wdGQoaCk7CisJcHJpb190IHByaW87CisKKwlpbnQgcmV0ID0g
dWtfdGhyZWFkX2dldF9wcmlvKHB0ZC0+dWtfdGhyZWFkLCAmcHJpbyk7CisKKwlyZXR1cm4gcmV0
ID8gUFRFX09TX0dFTkVSQUxfRkFJTFVSRSA6IFBURV9PU19PSzsKK30KKworcHRlX29zUmVzdWx0
IHB0ZV9vc1RocmVhZFNldFByaW9yaXR5KHB0ZV9vc1RocmVhZEhhbmRsZSBoLCBpbnQgbmV3X3By
aW8pCit7CisJcHRlX3RocmVhZF9kYXRhX3QgKnB0ZCA9IGhhbmRsZV90b19wdGQoaCk7CisKKwlp
bnQgcmV0ID0gdWtfdGhyZWFkX3NldF9wcmlvKHB0ZC0+dWtfdGhyZWFkLCBuZXdfcHJpbyk7CisK
KwlyZXR1cm4gcmV0ID8gUFRFX09TX0dFTkVSQUxfRkFJTFVSRSA6IFBURV9PU19PSzsKK30KKwor
dm9pZCBwdGVfb3NUaHJlYWRTbGVlcCh1bnNpZ25lZCBpbnQgbXNlY3MpCit7CisJX19uc2VjIG5z
ZWMgPSB1a2FyY2hfdGltZV9tc2VjX3RvX25zZWMobXNlY3MpOworCisJdWtfc2NoZWRfdGhyZWFk
X3NsZWVwKG5zZWMpOworfQorCitpbnQgcHRlX29zVGhyZWFkR2V0TWluUHJpb3JpdHkodm9pZCkK
K3sKKwlyZXR1cm4gVUtfVEhSRUFEX0FUVFJfUFJJT19NSU47Cit9CisKK2ludCBwdGVfb3NUaHJl
YWRHZXRNYXhQcmlvcml0eSh2b2lkKQoreworCXJldHVybiBVS19USFJFQURfQVRUUl9QUklPX01B
WDsKK30KKworaW50IHB0ZV9vc1RocmVhZEdldERlZmF1bHRQcmlvcml0eSh2b2lkKQoreworCXJl
dHVybiBVS19USFJFQURfQVRUUl9QUklPX0RFRkFVTFQ7Cit9CisKKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisgKgorICogTXV0ZXhlcworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitwdGVfb3NS
ZXN1bHQgcHRlX29zTXV0ZXhDcmVhdGUocHRlX29zTXV0ZXhIYW5kbGUgKnBoKQoreworCXN0cnVj
dCB1a19tdXRleCAqbTsKKworCWlmICghcGgpCisJCXJldHVybiBQVEVfT1NfSU5WQUxJRF9QQVJB
TTsKKworCW0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB1a19tdXRleCkpOworCWlmICghbSkKKwkJ
cmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7CisKKwl1a19tdXRleF9pbml0KG0pOworCisJKnBo
ID0gbTsKKworCXJldHVybiBQVEVfT1NfT0s7Cit9CisKK3B0ZV9vc1Jlc3VsdCBwdGVfb3NNdXRl
eERlbGV0ZShwdGVfb3NNdXRleEhhbmRsZSBoKQoreworCWlmICghaCkKKwkJcmV0dXJuIFBURV9P
U19JTlZBTElEX1BBUkFNOworCisJZnJlZShoKTsKKworCXJldHVybiBQVEVfT1NfT0s7Cit9CisK
K3B0ZV9vc1Jlc3VsdCBwdGVfb3NNdXRleExvY2socHRlX29zTXV0ZXhIYW5kbGUgaCkKK3sKKwlp
ZiAoIWgpCisJCXJldHVybiBQVEVfT1NfSU5WQUxJRF9QQVJBTTsKKworCXVrX211dGV4X2xvY2so
aCk7CisKKwlyZXR1cm4gUFRFX09TX09LOworfQorCitwdGVfb3NSZXN1bHQgcHRlX29zTXV0ZXhU
aW1lZExvY2socHRlX29zTXV0ZXhIYW5kbGUgaCwKKwl1bnNpZ25lZCBpbnQgdGltZW91dE1zZWNz
KQoreworCXJldHVybiBQVEVfT1NfR0VORVJBTF9GQUlMVVJFOworfQorCisKK3B0ZV9vc1Jlc3Vs
dCBwdGVfb3NNdXRleFVubG9jayhwdGVfb3NNdXRleEhhbmRsZSBoKQoreworCWlmICghaCkKKwkJ
cmV0dXJuIFBURV9PU19JTlZBTElEX1BBUkFNOworCisJdWtfbXV0ZXhfdW5sb2NrKGgpOworCisJ
cmV0dXJuIFBURV9PU19PSzsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTZW1h
cGhvcmVzCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworcHRlX29zUmVzdWx0IHB0ZV9vc1Nl
bWFwaG9yZUNyZWF0ZShpbnQgaW5pdF92YWx1ZSwgcHRlX29zU2VtYXBob3JlSGFuZGxlICpwaCkK
K3sKKwlzdHJ1Y3QgdWtfc2VtYXBob3JlICpzOworCisJaWYgKCFwaCkKKwkJcmV0dXJuIFBURV9P
U19JTlZBTElEX1BBUkFNOworCisJcyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHVrX3NlbWFwaG9y
ZSkpOworCWlmICghcykKKwkJcmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7CisKKwl1a19zZW1h
cGhvcmVfaW5pdChzLCBpbml0X3ZhbHVlKTsKKworCSpwaCA9IHM7CisKKwlyZXR1cm4gUFRFX09T
X09LOworfQorCitwdGVfb3NSZXN1bHQgcHRlX29zU2VtYXBob3JlRGVsZXRlKHB0ZV9vc1NlbWFw
aG9yZUhhbmRsZSBoKQoreworCWlmICghaCkKKwkJcmV0dXJuIFBURV9PU19JTlZBTElEX1BBUkFN
OworCisJZnJlZShoKTsKKworCXJldHVybiBQVEVfT1NfT0s7Cit9CisKK3B0ZV9vc1Jlc3VsdCBw
dGVfb3NTZW1hcGhvcmVQb3N0KHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSBoLCBpbnQgY291bnQpCit7
CisJaW50IGk7CisKKwlpZiAoIWgpCisJCXJldHVybiBQVEVfT1NfSU5WQUxJRF9QQVJBTTsKKwor
CWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorCQl1a19zZW1hcGhvcmVfdXAoaCk7CisKKwly
ZXR1cm4gUFRFX09TX09LOworfQorCitwdGVfb3NSZXN1bHQgcHRlX29zU2VtYXBob3JlUGVuZChw
dGVfb3NTZW1hcGhvcmVIYW5kbGUgaCwKKwl1bnNpZ25lZCBpbnQgKnB0aW1lb3V0X21zZWNzKQor
eworCV9fbnNlYyB0aW1lb3V0OworCisJaWYgKCFoKQorCQlyZXR1cm4gUFRFX09TX0lOVkFMSURf
UEFSQU07CisKKwlpZiAocHRpbWVvdXRfbXNlY3MpIHsKKwkJdGltZW91dCA9IHVrYXJjaF90aW1l
X21zZWNfdG9fbnNlYygqcHRpbWVvdXRfbXNlY3MpOworCisJCWlmICh1a19zZW1hcGhvcmVfZG93
bl90byhoLCB0aW1lb3V0KSA9PSBfX05TRUNfTUFYKQorCQkJcmV0dXJuIFBURV9PU19USU1FT1VU
OworCisJfSBlbHNlCisJCXVrX3NlbWFwaG9yZV9kb3duKGgpOworCisJcmV0dXJuIFBURV9PU19P
SzsKK30KKworcHRlX29zUmVzdWx0IHB0ZV9vc1NlbWFwaG9yZUNhbmNlbGxhYmxlUGVuZChwdGVf
b3NTZW1hcGhvcmVIYW5kbGUgaCwKKwl1bnNpZ25lZCBpbnQgKnB0aW1lb3V0X21zZWNzKQorewor
CXB0ZV90aHJlYWRfZGF0YV90ICpwdGQgPSBjdXJyZW50X3B0ZCgpOworCXB0ZV9vc1Jlc3VsdCBy
ZXN1bHQgPSBQVEVfT1NfT0s7CisJX19uc2VjIHRpbWVvdXQgPSAwLCBzdGFydF90aW1lID0gdWtw
bGF0X21vbm90b25pY19jbG9jaygpOworCisJaWYgKHB0aW1lb3V0X21zZWNzKQorCQl0aW1lb3V0
ID0gdWthcmNoX3RpbWVfbXNlY190b19uc2VjKCpwdGltZW91dF9tc2Vjcyk7CisKKwl3aGlsZSAo
MSkgeworCQlpZiAodWtfc2VtYXBob3JlX2Rvd25fdHJ5KGgpKQorCQkJLyogc2VtYXBob3JlIGlz
IHVwICovCisJCQlicmVhazsKKworCQllbHNlIGlmICh0aW1lb3V0ICYmCisJCQkodWtwbGF0X21v
bm90b25pY19jbG9jaygpIC0gc3RhcnRfdGltZSA+IHRpbWVvdXQpKSB7CisJCQkvKiBUaGUgdGlt
ZW91dCBleHBpcmVkICovCisJCQlyZXN1bHQgPSBQVEVfT1NfVElNRU9VVDsKKwkJCWJyZWFrOwor
CisJCX0gZWxzZSBpZiAocHRkICYmIHB0ZC0+Y2FuY2VsX3NlbS5jb3VudCA+IDApIHsKKwkJCS8q
IFRoZSB0aHJlYWQgd2FzIGNhbmNlbGxlZCAqLworCQkJcmVzdWx0ID0gUFRFX09TX0lOVEVSUlVQ
VEVEOworCQkJYnJlYWs7CisKKwkJfSBlbHNlCisJCQkvKiBNYXliZSBuZXh0IHRpbWUuLi4gKi8K
KwkJCXVrX3NjaGVkX3lpZWxkKCk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqCisgKiBBdG9taWMgT3BlcmF0aW9ucworICoKKyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCisKK3N0YXRpYyBpbnQgYXRvbWljX2FkZChpbnQgKnB0YXJnLCBpbnQgdmFsKQor
eworCXJldHVybiBfX2F0b21pY19hZGRfZmV0Y2gocHRhcmcsIHZhbCwgX19BVE9NSUNfU0VRX0NT
VCk7Cit9CisKK2ludCBwdGVfb3NBdG9taWNFeGNoYW5nZShpbnQgKnB0YXJnLCBpbnQgdmFsKQor
eworCXJldHVybiB1a2FyY2hfZXhjaGFuZ2VfbihwdGFyZywgdmFsKTsKK30KKworaW50IHB0ZV9v
c0F0b21pY0NvbXBhcmVFeGNoYW5nZShpbnQgKnBkZXN0LCBpbnQgZXhjaGFuZ2UsIGludCBjb21w
KQoreworCWludCBvcmlnID0gKnBkZXN0OworCisJdWthcmNoX2NvbXBhcmVfZXhjaGFuZ2Vfc3lu
YyhwZGVzdCwgY29tcCwgZXhjaGFuZ2UpOworCisJcmV0dXJuIG9yaWc7Cit9CisKK2ludCBwdGVf
b3NBdG9taWNFeGNoYW5nZUFkZChpbnQgdm9sYXRpbGUgKnBhZGRlbmQsIGludCB2YWx1ZSkKK3sK
KwlyZXR1cm4gdWthcmNoX2ZldGNoX2FkZChwYWRkZW5kLCB2YWx1ZSk7Cit9CisKK2ludCBwdGVf
b3NBdG9taWNEZWNyZW1lbnQoaW50ICpwZGVzdCkKK3sKKwlyZXR1cm4gYXRvbWljX2FkZChwZGVz
dCwgLTEpOworfQorCitpbnQgcHRlX29zQXRvbWljSW5jcmVtZW50KGludCAqcGRlc3QpCit7CisJ
cmV0dXJuIGF0b21pY19hZGQocGRlc3QsIDEpOworfQorCisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
ICoKKyAqIFRocmVhZCBMb2NhbCBTdG9yYWdlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor
c3RhdGljIHZvaWQgKmN1cnJlbnRfdGxzKHZvaWQpCit7CisJcHRlX3RocmVhZF9kYXRhX3QgKnB0
ZCA9IGN1cnJlbnRfcHRkKCk7CisKKwlyZXR1cm4gcHRkID8gcHRkLT50bHMgOiBOVUxMOworfQor
CitwdGVfb3NSZXN1bHQgcHRlX29zVGxzU2V0VmFsdWUodW5zaWduZWQgaW50IGtleSwgdm9pZCAq
dmFsdWUpCit7CisJcmV0dXJuIHB0ZVRsc1NldFZhbHVlKGN1cnJlbnRfdGxzKCksIGtleSwgdmFs
dWUpOworfQorCit2b2lkICpwdGVfb3NUbHNHZXRWYWx1ZSh1bnNpZ25lZCBpbnQgaW5kZXgpCit7
CisJcmV0dXJuICh2b2lkICopIHB0ZVRsc0dldFZhbHVlKGN1cnJlbnRfdGxzKCksIGluZGV4KTsK
K30KKworcHRlX29zUmVzdWx0IHB0ZV9vc1Rsc0FsbG9jKHVuc2lnbmVkIGludCAqcGtleSkKK3sK
KwlyZXR1cm4gcHRlVGxzQWxsb2MocGtleSk7Cit9CisKK3B0ZV9vc1Jlc3VsdCBwdGVfb3NUbHNG
cmVlKHVuc2lnbmVkIGludCBpbmRleCkKK3sKKwlyZXR1cm4gcHRlVGxzRnJlZShpbmRleCk7Cit9
CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBNaXNjZWxsYW5lb3VzCisgKgorICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KKworaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqdGIpCit7CisJX19uc2Vj
IG5vdyA9IHVrcGxhdF9tb25vdG9uaWNfY2xvY2soKTsKKworCWlmICh0YikgeworCQl0Yi0+dGlt
ZSA9IHVrYXJjaF90aW1lX25zZWNfdG9fc2VjKG5vdyk7CisJCXRiLT5taWxsaXRtID0gdWthcmNo
X3RpbWVfbnNlY190b19tc2VjKHVrYXJjaF90aW1lX3N1YnNlYyhub3cpKTsKKwl9CisKKwlyZXR1
cm4gMDsKK30KLS0gCjIuMTEuMAoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 15:56:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 15:56: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 1hXpK6-0008So-9C; Mon, 03 Jun 2019 15:56: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=FyIO=UC=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hXpK5-0008Si-03
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 15:56:33 +0000
X-Inumbo-ID: 2591a344-8618-11e9-ae59-8b774d8eecf0
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2591a344-8618-11e9-ae59-8b774d8eecf0;
 Mon, 03 Jun 2019 15:56:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 67F74F2054;
 Mon,  3 Jun 2019 17:56:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ql4L2eCrYxiZ; Mon,  3 Jun 2019 17:56:27 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 3A983F2023
 for <minios-devel@lists.xen.org>; Mon,  3 Jun 2019 17:56:25 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Mon, 3 Jun 2019 17:56:24 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 3 Jun 2019 17:56:00 +0200
Message-ID: <20190603155600.3590-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH] build: fix forgotten
 $(CONFIG_ARCH_ARM_64)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SW4gdGhlIGNvbW1pdCAxZDg0ZjNkZDg5OGUgKCJidWlsZDogbWFrZSBhbGwgbGlua2VyIHNjcmlw
dHMKcHJlcHJvY2Vzc2FibGUiKSB0aGUgJy0kKENPTkZJR19BUkNIX0FSTV82NCknIGlzIGZvcmdv
dHRlbiBmb3IKS1ZNX0xEU0NSSVBUX1NSQy4gVGhpcyBicmVha3MgYXJtNjQgYnVpbGQuCgpTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBw
bGF0L2t2bS9NYWtlZmlsZS51ayB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr
KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxh
dC9rdm0vTWFrZWZpbGUudWsKaW5kZXggNjMzMzQ4YWIuLjcxYzRjNDE5IDEwMDY0NAotLS0gYS9w
bGF0L2t2bS9NYWtlZmlsZS51aworKysgYi9wbGF0L2t2bS9NYWtlZmlsZS51awpAQCAtNTYsNyAr
NTYsNyBAQCBlbmRpZgogIyMKICMjIEFyY2hpdGVjdHVyZSBsaWJyYXJ5IGRlZmluaXRpb25zIGZv
ciBhcm02NAogIyMKLUtWTV9MRFNDUklQVF9TUkMgOj0gJChDT05GSUdfVUtfQkFTRSkvcGxhdC9r
dm0vYXJtL2xpbms2NC5sZHMuUworS1ZNX0xEU0NSSVBUX1NSQy0kKENPTkZJR19BUkNIX0FSTV82
NCkgOj0gJChDT05GSUdfVUtfQkFTRSkvcGxhdC9rdm0vYXJtL2xpbms2NC5sZHMuUwogaWZlcSAo
JChmaW5kc3RyaW5nIHksJChDT05GSUdfS1ZNX0tFUk5FTF9TRVJJQUxfQ09OU09MRSkgJChDT05G
SUdfS1ZNX0RFQlVHX1NFUklBTF9DT05TT0xFKSkseSkKIExJQktWTVBMQVRfU1JDUy0kKENPTkZJ
R19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vcGwwMTEuY3xjb21t
b24KIGVuZGlmCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 03 19:46:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Jun 2019 19:46: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 1hXsut-0007HA-HG; Mon, 03 Jun 2019 19:46:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=fLs6=UC=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hXsus-0007H5-Qe
 for minios-devel@lists.xen.org; Mon, 03 Jun 2019 19:46:46 +0000
X-Inumbo-ID: 507869fd-8638-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 507869fd-8638-11e9-8980-bc764e045a96;
 Mon, 03 Jun 2019 19:46:44 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id w13so13328677wru.11
 for <minios-devel@lists.xen.org>; Mon, 03 Jun 2019 12:46:44 -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=an4U3rSFe+n4wY387nglOB6M7jSCusDr3RBj2IdIK+M=;
 b=nNfuPrHkN2NRiSTxI7Frjd6l2Ik0scqJsik8xJnaHqx02bgpIUErRwWIcEsssFmdyi
 3lAb0n8OJDSzypdzvS9MMoflTbMFNSjiCKZIl/lwQ2Us89531mh+cvGQnyFyfmmGocKD
 mdngaJFrQBMWjQMNBc2FN3HQ71XTebJchiTvql6pO83bU6StrS3Nzd+vDAiIgmV20k9e
 jaY+pZVOQIjt4XsgqcKrk/zGRa6ij5GuR7v39gxrmseWhR+44C/40MKqKhMC7BwJmsfW
 olkfx4TAoyV5OUEpuF8ElV+UVN3f9DyizCA0Yt2GpVjiZpk68CvIw17b27uSc7vJARWi
 IeDg==
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=an4U3rSFe+n4wY387nglOB6M7jSCusDr3RBj2IdIK+M=;
 b=cKQY1xWnHYzY4fR70f5Vyl52oTUymOySC6/jzrxE+vBHPoLTIk/FU/OUa9QzXqTk+4
 hnR/BhlDdOQBIQEj0BP/TjIQmK/jfc7M3f0NAh8B8Rw2ZdRWf/fPKcRFC6nCWl6d2PTd
 rC7kZK6/7ZwpGGZdwWaZ+Dc4aVT6M7I+w4TOfI80TjcVVu+ATcOlqZ0Sp2CI93yg1VDf
 jDjRmNTLqk7Q95je4LK70rXaGtT+M6pIoD99V7IqCafzFcov+yWbmwpqcqX0eh7S+E74
 illlRHM7pCGEdke9Ktojkql2VRZSEEoasNyvKWndr8T7KoXuuybBYEwKDKeICUG9mwH1
 ZViw==
X-Gm-Message-State: APjAAAVbn17zq7oLr/1Ysfl/O1Qo+/KJ00iOignK5Ea47iEiNp5dvuHO
 FvoJL1lJFOZbfMvZoLHzwzLX1HjE
X-Google-Smtp-Source: APXvYqwaJLjGa4sMw7EWoqXXuFev19EKU+T3qXVGR51bU9xSupIGNfXjTViCCEYj3PZ3nImBB5QBGw==
X-Received: by 2002:adf:e590:: with SMTP id l16mr3623031wrm.257.1559591203120; 
 Mon, 03 Jun 2019 12:46:43 -0700 (PDT)
Received: from localhost.localdomain ([86.120.237.66])
 by smtp.gmail.com with ESMTPSA id j123sm24055772wmb.32.2019.06.03.12.46.42
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 03 Jun 2019 12:46:42 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Mon,  3 Jun 2019 22:45:46 +0300
Message-Id: <20190603194546.11060-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LWIP] Fix select and poll wrappers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu, Mihai Pogonaru <pogonarumihai@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>

U2VsZWN0L3BvbGwgc2hvdWxkIHJldHVybiB0aGUgbHdpcF9zZWxlY3QvcG9sbCByZXN1bHQgYW5k
IHJlbGVhc2UgdGhlIHZmc2NvcmVfZmlsZSBhZnRlciBlYWNoIGFjY2VzcwoKU2lnbmVkLW9mZi1i
eTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgotLS0KIHNvY2tldHMu
YyB8IDIzICsrKysrKysrKysrKysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0
aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zb2NrZXRzLmMgYi9zb2NrZXRz
LmMKaW5kZXggOWFkNWNmYi4uNzcyMzVlOSAxMDA2NDQKLS0tIGEvc29ja2V0cy5jCisrKyBiL3Nv
Y2tldHMuYwpAQCAtMzM1LDcgKzMzNSw3IEBAIEVYSVQ6CiAKIGludCBwb2xsKHN0cnVjdCBwb2xs
ZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBpbnQgdGltZW91dCkKIHsKLQl1bnNpZ25lZCBpbnQgaTsK
Kwl1bnNpZ25lZCBpbnQgaSwgcmV0OwogCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlOwogCXN0
cnVjdCBwb2xsZmQgbHdpcF9mZHNbbmZkc107CiAKQEAgLTM0NywxNiArMzQ3LDIwIEBAIGludCBw
b2xsKHN0cnVjdCBwb2xsZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBpbnQgdGltZW91dCkKIAkJCWlm
IChQVFJJU0VSUihmaWxlKSkgewogCQkJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCiAJCQkJ
CSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVzY3JpcHRvclxuIikpOworCQkJCXJl
dCA9IC0xOwogCQkJCS8qIFNldHRpbmcgdGhlIGVycm5vICovCiAJCQkJU09DS19ORVRfU0VUX0VS
Uk5PKFBUUjJFUlIoZmlsZSkpOwotCQkJCXJldHVybiAtMTsKKwkJCQlnb3RvIEVYSVQ7CiAJCQl9
CiAJCQlsd2lwX2Zkc1tpXS5mZCA9IGZpbGUtPnNvY2tfZmQ7CiAJCQlsd2lwX2Zkc1tpXS5ldmVu
dHMgPSBmZHNbaV0uZXZlbnRzOworCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogCQl9CiAJfQogCi0JbHdpcF9wb2xsKGx3aXBf
ZmRzLCBuZmRzLCB0aW1lb3V0KTsKKwlyZXQgPSBsd2lwX3BvbGwobHdpcF9mZHMsIG5mZHMsIHRp
bWVvdXQpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIEVYSVQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwg
bmZkczsgaSsrKSB7CiAJCWlmIChmZHNbaV0uZmQgPCAwKQpAQCAtMzY0LDcgKzM2OCw5IEBAIGlu
dCBwb2xsKHN0cnVjdCBwb2xsZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBpbnQgdGltZW91dCkKIAkJ
ZWxzZQogCQkJZmRzW2ldLnJldmVudHMgPSBsd2lwX2Zkc1tpXS5yZXZlbnRzOwogCX0KLQlyZXR1
cm4gMDsKKworRVhJVDoKKwlyZXR1cm4gcmV0OwogfQogCiBpbnQgc2VsZWN0KGludCBuZmRzLCBm
ZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLApAQCAt
NDAwLDYgKzQwNiw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRf
c2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkJZ290byBFWElUOwogCQkJfQog
CQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZyZCk7CisJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxl
LT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRl
ZmRzICYmIEZEX0lTU0VUKGksIHdyaXRlZmRzKSkgewogCQkJbWF4ZmQgPSBpOwpAQCAtNDEzLDYg
KzQyMCw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3
cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkJZ290byBFWElUOwogCQkJfQogCQkJRkRf
U0VUKGZpbGUtPnNvY2tfZmQsICZ3cik7CisJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNj
b3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKGV4Y2VwdGZkcyAm
JiBGRF9JU1NFVChpLCBleGNlcHRmZHMpKSB7CiAJCQltYXhmZCA9IGk7CkBAIC00MjYsMTIgKzQz
NCwxMyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3Jp
dGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAogCQkJCWdvdG8gRVhJVDsKIAkJCX0KIAkJCUZEX1NF
VChmaWxlLT5zb2NrX2ZkLCAmeGMpOworCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogCQl9CiAJfQogCiAJcmV0ID0gbHdpcF9z
ZWxlY3QobWF4ZmQrMSwgJnJkLCAmd3IsICZ4YywgdGltZW91dCk7CiAJaWYgKHJldCA8IDApCi0J
CXJldHVybiByZXQ7CisJCWdvdG8gRVhJVDsKIAogCS8qIHRyYW5zbGF0ZSBiYWNrIGZyb20gbHdJ
UCBzb2NrZXQgZmRzIHRvIHB1YmxpYyAodmZzY29yZSkgZmRzLgogCSAqIEJ1dCB0aGVyZSdzIG5v
IHdheSB0byBnbyBmcm9tIGx3SVAgdG8gdmZzY29yZSwgc28gaXRlcmF0ZSBvdmVyCkBAIC00NDYs
NiArNDU1LDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQg
KndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKIAkJCWZpbGUgPSBzb2NrX25ldF9maWxlX2dl
dChpKTsKIAkJCWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJnJkKSkKIAkJCQlGRF9DTFIo
aSwgcmVhZGZkcyk7CisJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRlZmRzICYmIEZEX0lTU0VUKGks
IHdyaXRlZmRzKSkgewogCQkJLyogVGhpcyBsb29rdXAgY2FuJ3QgZmFpbCwgb3IgaXQgd291bGQg
YWxyZWFkeSBoYXZlCkBAIC00NTQsNiArNDY0LDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRf
c2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKIAkJCWZp
bGUgPSBzb2NrX25ldF9maWxlX2dldChpKTsKIAkJCWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19m
ZCwgJndyKSkKIAkJCQlGRF9DTFIoaSwgd3JpdGVmZHMpOworCQkJdmZzY29yZV9wdXRfZmlsZSgm
ZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogCQl9CiAJCWlmIChl
eGNlcHRmZHMgJiYgRkRfSVNTRVQoaSwgZXhjZXB0ZmRzKSkgewogCQkJLyogVGhpcyBsb29rdXAg
Y2FuJ3QgZmFpbCwgb3IgaXQgd291bGQgYWxyZWFkeSBoYXZlCkBAIC00NjIsOSArNDczLDkgQEAg
aW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBm
ZF9zZXQgKmV4Y2VwdGZkcywKIAkJCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChpKTsKIAkJCWlm
ICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJnhjKSkKIAkJCQlGRF9DTFIoaSwgZXhjZXB0ZmRz
KTsKKwkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2Ug
cmVmY291bnQgKi8KIAkJfQogCX0KLQlyZXR1cm4gMDsKIAogRVhJVDoKIAlyZXR1cm4gcmV0Owot
LSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 07:57:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 07:57: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 1hY4Jn-0007Uh-D7; Tue, 04 Jun 2019 07:57: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=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY4Jm-0007Uc-D6
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 07:57:14 +0000
X-Inumbo-ID: 59f4522c-869e-11e9-9c05-d7cadcb88e12
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 59f4522c-869e-11e9-9c05-d7cadcb88e12;
 Tue, 04 Jun 2019 07:57:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id F209AF206B;
 Tue,  4 Jun 2019 09:57:07 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 93r0yoCMFguC; Tue,  4 Jun 2019 09:57:07 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C2E24F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 09:57:05 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 09:57:05
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
 <20190603090437.19537-4-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <3e9724c1-54c0-44d8-e3e4-6efef00cb98f@neclab.eu>
Date: Tue, 4 Jun 2019 09:57:05 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603090437.19537-4-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/5] lib/vfscore: check
 return value of vfs_write in sys_write
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
Ck9uIDYvMy8xOSAxMTowNCBBTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBUaGlzIGNoZWNrIGhh
cyBiZWVuIGxvc3QgZHVyaW5nIHRoZSBwb3J0aW5nLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkg
Vm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYyB8IDIgKy0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk
ZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGli
L3Zmc2NvcmUvc3lzY2FsbHMuYwo+IGluZGV4IDEzMDFmMzUxLi4zODVkOTBjMCAxMDA2NDQKPiAt
LS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMu
Ywo+IEBAIC0zMzAsNyArMzMwLDcgQEAgc3lzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IG5pb3YsCj4gICAJdWlvLnVpb19vZmZz
ZXQgPSBvZmZzZXQ7Cj4gICAJdWlvLnVpb19yZXNpZCA9IGJ5dGVzOwo+ICAgCXVpby51aW9fcncg
PSBVSU9fV1JJVEU7Cj4gLQl2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6
IEZPRl9PRkZTRVQpOwo+ICsJZXJyb3IgPSB2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0g
LTEpID8gMCA6IEZPRl9PRkZTRVQpOwo+ICAgCSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNp
ZDsKPiAgIAo+ICAgCWZyZWUoY29weV9pb3YpOwo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK
44OV44Ot44O844Oq44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwK
U3lzdGVtcyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9w
ZQpLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkg
KDApNjIyMSA0MzQyLTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBm
bG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1h
bm5oZWltLCBHZXJtYW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 09:23:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 09:23: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 1hY5fA-0008H5-Ba; Tue, 04 Jun 2019 09:23: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=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY5f9-0008Gs-4J
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 09:23:23 +0000
X-Inumbo-ID: 63956b5c-86aa-11e9-bd2a-0fd422f5491a
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 63956b5c-86aa-11e9-bd2a-0fd422f5491a;
 Tue, 04 Jun 2019 09:23:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2BFAE1052DE;
 Tue,  4 Jun 2019 11:23:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ljav_6YDRtX4; Tue,  4 Jun 2019 11:23:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D3BA61052D0
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 11:23:17 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 11:23:17
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
 <20190603090437.19537-2-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <69b4eb2d-ecb4-8142-05e2-80bc7f2a1c98@neclab.eu>
Date: Tue, 4 Jun 2019 11:23:17 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603090437.19537-2-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/5] lib/vfscore: introduce
 vfscore_uioforeach
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgWXVyaSwKCgpPbiA2LzMvMTkgMTE6MDQgQU0sIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhp
cyBpcyBhIHRlbXBsYXRlLXR5cGUgb2YgZnVuY3Rpb24sIHRvIGF2b2lkIGNvZGUKPiBkdXBsaWNh
dGlvbi4gQ29tcGlsZXIgb3B0aW1pemVzIGV4dHJhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHBvaW50
ZXIKPiBwYXNzZWQgYXMgYXJndW1lbnQsIHNvIHRoaXMgc2hvdWxkIG5vdCBoYXZlIGFueSBwZXJm
b3JtYW5jZSBpbXBhY3RzCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUv
dWlvLmggfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvdmZzY29y
ZS9zdWJyX3Vpby5jICAgICAgICAgICAgfCAzNCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0K
PiAgIDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCj4g
Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92
ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaAo+IGluZGV4IGM3MzRmYTE5Li5mOTg4NWI5NCAx
MDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiArKysgYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiBAQCAtNTcsNiArNTcsNDUgQEAgc3Ry
dWN0IHVpbyB7Cj4gICAJZW51bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICovCj4gICB9
Owo+ICAgCj4gK3N0YXRpYyBpbmxpbmUKPiAraW50IHZmc2NvcmVfdWlvZm9yZWFjaChpbnQgKCpm
KSh2b2lkICosIHZvaWQgKiwgc2l6ZV90ICopLCB2b2lkICpjcCwKPiArCQkgICAgICBzaXplX3Qg
biwgc3RydWN0IHVpbyAqdWlvKQoKQmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgc2V2ZXJh
bCB0aW1lcyB0byBzdHJlYW1saW5lIGNvZGUsIGFuZCAKYmVjYXVzZSBJIGd1ZXNzIG90aGVyIHBl
b3BsZSBtaWdodCB3YW50IHRvIHVzZSBpdCBpbiB0aGUgZnV0dXJlLCBJIHRoaW5rIAp0aGlzIG1p
Z2h0IGJlbmVmaXQgZnJvbSBhIHNob3J0IGNvbW1lbnQgZXhwbGFpbmluZyB3aGF0IHRoZSBmdW5j
dGlvbiAKZG9lcyBhbmQgaG93IHRvIHVzZSBpdCBmb3IgdGhpcyBwdXJwb3NlLiBTb21ldGhpbmcg
bGlrZSB0aGlzOgoKLyogVGhpcyBpcyBhIHdyYXBwZXIgZm9yIGZ1bmN0aW9ucyBmIHdpdGggYSAi
bWVtY3B5LWxpa2UiIHNpZ25hdHVyZSAKImRzdCwgc3JjLAogICogY250IiB0byBiZSBleGVjdXRl
ZCBvdmVyIGEgc2NhdHRlci1nYXRoZXIgbGlzdCBwcm92aWRlZCBieSBhIHN0cnVjdCAKdWlvLiBm
KCkKICAqIG1pZ2h0IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byByZWFkIGZyb20gb3Igd3Jp
dGUgdG8gY3AgdXAgdG8gbiAKYnl0ZXMgb2YKICAqIGRhdGEgKG9yIHVwIHRvIHRoZSBjYXBhY2l0
eSBvZiB0aGUgdWlvIHNjYXR0ZXItZ2F0aGVyIGJ1ZmZlcnMpLgogICovCgpXaGF0IGRvIHlvdSB0
aGluaz8KCj4gK3sKPiArCWludCByZXQgPSAwOwo+ICsKPiArCVVLX0FTU0VSVCh1aW8tPnVpb19y
dyA9PSBVSU9fUkVBRCB8fCB1aW8tPnVpb19ydyA9PSBVSU9fV1JJVEUpOwo+ICsKPiArCXdoaWxl
IChuID4gMCAmJiB1aW8tPnVpb19yZXNpZCkgewo+ICsJCXN0cnVjdCBpb3ZlYyAqaW92ID0gdWlv
LT51aW9faW92Owo+ICsJCXNpemVfdCBjbnQgPSBpb3YtPmlvdl9sZW47Cj4gKwo+ICsJCWlmIChj
bnQgPT0gMCkgewo+ICsJCQl1aW8tPnVpb19pb3YrKzsKPiArCQkJdWlvLT51aW9faW92Y250LS07
Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCQlpZiAoY250ID4gbikKPiArCQkJY250ID0gbjsK
PiArCj4gKwkJaWYgKHVpby0+dWlvX3J3ID09IFVJT19SRUFEKQo+ICsJCQlyZXQgPSBmKGlvdi0+
aW92X2Jhc2UsIGNwLCAmY250KTsKPiArCQllbHNlCj4gKwkJCXJldCA9IGYoY3AsIGlvdi0+aW92
X2Jhc2UsICZjbnQpOwo+ICsKPiArCQlpb3YtPmlvdl9iYXNlID0gKGNoYXIgKilpb3YtPmlvdl9i
YXNlICsgY250Owo+ICsJCWlvdi0+aW92X2xlbiAtPSBjbnQ7Cj4gKwkJdWlvLT51aW9fcmVzaWQg
LT0gY250Owo+ICsJCXVpby0+dWlvX29mZnNldCArPSBjbnQ7Cj4gKwkJY3AgPSAoY2hhciAqKWNw
ICsgY250Owo+ICsJCW4gLT0gY250Owo+ICsKPiArCQlpZiAocmV0KQo+ICsJCQlicmVhazsKPiAr
CX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICAgaW50CXZmc2NvcmVfdWlvbW92ZSh2
b2lkICpjcCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbyk7Cj4gICAKPiAgICNlbmRpZiAvKiAhX1VJ
T19IXyAqLwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2Nv
cmUvc3Vicl91aW8uYwo+IGluZGV4IGFhMTc2MDc0Li5lNmUxY2RmMCAxMDA2NDQKPiAtLS0gYS9s
aWIvdmZzY29yZS9zdWJyX3Vpby5jCj4gKysrIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwo+IEBA
IC00NSwzNCArNDUsMTYgQEAKPiAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAgICNpbmNsdWRlIDx2
ZnNjb3JlL3Vpby5oPgo+ICAgCj4gK3N0YXRpYyBpbnQgX19tZW1jcHlfd3JhcHBlcih2b2lkICpk
c3QsIHZvaWQgKnNyYywgc2l6ZV90ICpjbnQpCj4gK3sKPiArCW1lbWNweShkc3QsIHNyYywgKmNu
dCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIGludAo+ICAgdmZzY29yZV91aW9tb3ZlKHZv
aWQgKmNwLCBpbnQgbiwgc3RydWN0IHVpbyAqdWlvKQo+ICAgewo+IC0JVUtfQVNTRVJUKHVpby0+
dWlvX3J3ID09IFVJT19SRUFEIHx8IHVpby0+dWlvX3J3ID09IFVJT19XUklURSk7Cj4gKwlpbnQg
cmV0ID0gdmZzY29yZV91aW9mb3JlYWNoKF9fbWVtY3B5X3dyYXBwZXIsIGNwLCBuLCB1aW8pOwo+
ICAgCj4gLQl3aGlsZSAobiA+IDAgJiYgdWlvLT51aW9fcmVzaWQpIHsKPiAtCQlzdHJ1Y3QgaW92
ZWMgKmlvdiA9IHVpby0+dWlvX2lvdjsKPiAtCQlpbnQgY250ID0gaW92LT5pb3ZfbGVuOwo+IC0J
CWlmIChjbnQgPT0gMCkgewo+IC0JCQl1aW8tPnVpb19pb3YrKzsKPiAtCQkJdWlvLT51aW9faW92
Y250LS07Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCQlpZiAoY250ID4gbikKPiAtCQkJY250
ID0gbjsKPiAtCj4gLQkJaWYgKHVpby0+dWlvX3J3ID09IFVJT19SRUFEKQo+IC0JCQltZW1jcHko
aW92LT5pb3ZfYmFzZSwgY3AsIGNudCk7Cj4gLQkJZWxzZQo+IC0JCQltZW1jcHkoY3AsIGlvdi0+
aW92X2Jhc2UsIGNudCk7Cj4gLQo+IC0JCWlvdi0+aW92X2Jhc2UgPSAoY2hhciAqKWlvdi0+aW92
X2Jhc2UgKyBjbnQ7Cj4gLQkJaW92LT5pb3ZfbGVuIC09IGNudDsKPiAtCQl1aW8tPnVpb19yZXNp
ZCAtPSBjbnQ7Cj4gLQkJdWlvLT51aW9fb2Zmc2V0ICs9IGNudDsKPiAtCQljcCA9IChjaGFyICop
Y3AgKyBjbnQ7Cj4gLQkJbiAtPSBjbnQ7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1
cm4gcmV0Owo+ICAgfQo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki
44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFj
aGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1B
bmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2
NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRA
bmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55
LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 09:23:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 09:23: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 1hY5fc-0008JP-E8; Tue, 04 Jun 2019 09:23:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY5fa-0008JG-Vp
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 09:23:51 +0000
X-Inumbo-ID: 74c2cd7a-86aa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 74c2cd7a-86aa-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 09:23:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 0D654F206D;
 Tue,  4 Jun 2019 11:23:47 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id GlR5G6n6MBrR; Tue,  4 Jun 2019 11:23:46 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D43F3F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 11:23:44 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 11:23:44
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
 <20190603090437.19537-5-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <6c57db18-9f34-4142-0e4a-c619d823014c@neclab.eu>
Date: Tue, 4 Jun 2019 11:23:44 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603090437.19537-5-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/5] lib/vfscore: do not
 advance position for stdio
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgWXVyaSwKCk9uIDYvMy8xOSAxMTowNCBBTSwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBXaXRo
IHRoZSBwcm9wZXIgaGFuZGxpbmcgb2YgdWlvIGZvciBzdGRpbyBmaWxlcywgdmZzIGFsc28gYWR2
YW5jZXMgdGhlCj4gcG9zaXRpb24gaW4gdGhlIHN0cnVjdCBmaWxlLiBXaGljaCBkb2VzIG5vdCBt
YWtlIGFueSBzZW5zZSBmb3IgY29uc29sZQo+IChhbmQgc29tZSBvdGhlciBjbGFzc2VzIG9mIGRl
dmljZXMpLgo+IAo+IFRoaXMgcGF0Y2ggYWRkcyBhbm90aGVyIGZsYWdzIHZhcmlhYmxlIGluc2lk
ZSBzdHJ1Y3QKPiB2ZnNjb3JlX2ZpbGUuIFVzaW5nIGZfZmxhZ3Mgd291bGQgYWRkIG1vcmUgbWVz
cyBpbiB0aGUgY29kZSwgYmVjYXVzZQo+IG1vc3Qgb2YgdGhlIGZsYWdzIGFyZSBkZWZpbmVkIGlu
IGZjbnRsLmgsIHdoaWNoIGlzIGV4dGVybmFsIGZyb20KPiB2ZnNjb3JlIGhlYWRlci4KPiAKPiBT
aWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAt
LS0KPiAgIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAgICAgfCAzICsrLQo+ICAgbGli
L3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2ZpbGUuaCB8IDMgKysrCj4gICBsaWIvdmZzY29yZS9z
dGRpby5jICAgICAgICAgICAgICAgIHwgMSArCj4gICAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0
aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3Bz
LmMgYi9saWIvdmZzY29yZS9mb3BzLmMKPiBpbmRleCA3OTExNGUyMS4uYWQ3OGQzYjEgMTAwNjQ0
Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZm9wcy5jCj4gKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4g
QEAgLTEwNyw3ICsxMDcsOCBAQCBpbnQgdmZzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFncykKPiAgIAllcnJvciA9IFZPUF9XUklURSh2cCwg
dWlvLCBpb2ZsYWdzKTsKPiAgIAlpZiAoIWVycm9yKSB7Cj4gICAJCWNvdW50ID0gYnl0ZXMgLSB1
aW8tPnVpb19yZXNpZDsKPiAtCQlpZiAoKGZsYWdzICYgRk9GX09GRlNFVCkgPT0gMCkKPiArCQlp
ZiAoIShmbGFncyAmIEZPRl9PRkZTRVQpICYmCj4gKwkJICAgICEoZnAtPmZfdmZzX2ZsYWdzICYg
VUtfVkZTQ09SRV9OT1BPUykpCj4gICAJCQlmcC0+Zl9vZmZzZXQgKz0gY291bnQ7Cj4gICAJfQo+
ICAgCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4gaW5kZXggMmMwMjUyZTIuLmJlMWM3
NzcyIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKPiAr
KysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5oCj4gQEAgLTQ2LDEyICs0Niwx
NSBAQCBleHRlcm4gIkMiIHsKPiAgIAo+ICAgc3RydWN0IHZmc2NvcmVfZmlsZTsKPiAgIAo+ICsj
ZGVmaW5lIFVLX1ZGU0NPUkVfTk9QT1MgKChpbnQpICgxIDw8IDApKQo+ICsKCkkgd2FzIHNjcmF0
Y2hpbmcgbXkgaGVhZCBoZXJlIHdvbmRlcmluZyB3aGF0IGEgTk9QLU9TIGlzLCB1bnRpbCBJIApy
ZWFsaXplZCAoYW5kIGl0IHRvb2sgbWUgd2F5IGxvbmdlciB0aGF0IGl0IHNob3VsZCBoYXZlISkg
dGhhdCBpdCdzIAphYm91dCBOTy1QT1MoaXNpdGlvbiBpbmZvcm1hdGlvbikuIE1heWJlIGV4cGxh
aW4gdGhhdCByZWFsbHkgcXVpY2tseSBpbiAKdGhlIGNvZGUgZm9yIG90aGVyIHBlb3BsZSB3aG8g
YXJlIGFzIHNsb3cgYXMgbWUuIDstKQoKQXMgYSBzaWRlIG5vdGU6IHRoZSBsd2lwPC0+dmZzY29y
ZSB0aGVuIHNob3VsZCBwcm9iYWJseSBhbHNvIHNldCB0aGlzIG9uIApsd2lwIHNvY2tldHM/IFNp
bmNlIHRoZXkgYXJlIGFsc28gbm90IHNlZWthYmxlIGFuZCBkb24ndCBoYXZlIGEgImZpbGUgCnBv
c2l0aW9uIj8KCj4gICBzdHJ1Y3QgdmZzY29yZV9maWxlIHsKPiAgIAlpbnQgZmQ7Cj4gICAJaW50
CQlmX2ZsYWdzOwkvKiBvcGVuIGZsYWdzICovCj4gICAJaW50CQlmX2NvdW50OwkvKiByZWZlcmVu
Y2UgY291bnQgKi8KPiAgIAlvZmZfdAkJZl9vZmZzZXQ7CS8qIGN1cnJlbnQgcG9zaXRpb24gaW4g
ZmlsZSAqLwo+ICAgCXZvaWQJCSpmX2RhdGE7ICAgICAgICAvKiBmaWxlIGRlc2NyaXB0b3Igc3Bl
Y2lmaWMgZGF0YSAqLwo+ICsJaW50CQlmX3Zmc19mbGFnczsgICAgLyogaW50ZXJuYWwgaW1wbGVt
ZW50YXRpb24gZmxhZ3MgKi8KPiAgIAlzdHJ1Y3QgZGVudHJ5ICAgKmZfZGVudHJ5Owo+ICAgfTsK
PiAgIAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zdGRpby5jIGIvbGliL3Zmc2NvcmUvc3Rk
aW8uYwo+IGluZGV4IDhlM2NjYmRiLi40MDI4OGJiMyAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29y
ZS9zdGRpby5jCj4gKysrIGIvbGliL3Zmc2NvcmUvc3RkaW8uYwo+IEBAIC0xNDQsNiArMTQ0LDcg
QEAgc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZGlvX2ZpbGUgPSB7Cj4gICAJLmZkID0g
MSwKPiAgIAkuZl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFELAo+ICAgCS5mX2RlbnRyeSA9
ICZzdGRpb19kZW50cnksCj4gKwkuZl92ZnNfZmxhZ3MgPSBVS19WRlNDT1JFX05PUE9TLAo+ICAg
CS8qIHJlZmVyZW5jZSBjb3VudCBpcyAyIGJlY2F1c2UgY2xvc2UoMCkgaXMgYSB2YWxpZAo+ICAg
CSAqIG9wZXJhdGlvbi4gSG93ZXZlciBpdCBpcyBub3QgcHJvcGVybHkgaGFuZGxlZCBpbiB0aGUK
PiAgIAkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAqLwo+IAoKLS0gCkRyLiBGbG9yaWFuIFNj
aG1pZHQK44OV44Ot44O844Oq44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVu
dGlzdCwKU3lzdGVtcyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVz
IEV1cm9wZQpLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAg
ICArNDkgKDApNjIyMSA0MzQyLTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1h
aWw6ICBmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJp
Y2h0IE1hbm5oZWltLCBHZXJtYW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 09:25:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 09:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hY5gz-0008Nu-J0; Tue, 04 Jun 2019 09:25: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=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY5gy-0008No-Hc
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 09:25:16 +0000
X-Inumbo-ID: a86f3ce4-86aa-11e9-aa51-6f722bd42bbf
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a86f3ce4-86aa-11e9-aa51-6f722bd42bbf;
 Tue, 04 Jun 2019 09:25:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BAEB81052D0;
 Tue,  4 Jun 2019 11:25:13 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id E8LCEC5ZUEII; Tue,  4 Jun 2019 11:25:13 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 94D6010524F
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 11:25:13 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 11:25:13
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190603090437.19537-1-yuri.volchkov@neclab.eu>
 <20190603090437.19537-6-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <1ddda0a8-0040-e765-ba06-785686fb8757@neclab.eu>
Date: Tue, 4 Jun 2019 11:25:12 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603090437.19537-6-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/5] lib/vfscore: make all
 vnops function return int
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgWXVyaSwKCnRoaXMgcGF0Y2ggbG9va3MgZ29vZC4KClJldmlld2VkLWJ5OiBGbG9yaWFuIFNj
aG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+CgpPbiA2LzMvMTkgMTE6MDQgQU0sIFl1
cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhpcyBtdXN0IGJlIGEgbWlzdGFrZSBtYWRlIGR1cmluZyBw
b3J0aW5nIGFuZCBhZGFwdGluZyB0eXBlcyBpbgo+IHBhcnRpY3VsYXIuIEFsbCB0aGUgdm5vcHMg
ZnVuY3Rpb25zIGFyZSByZXR1cm5pbmcgZXJyb3IgY29kZXMsIG5vdAo+IG9mZnNldHMgb3Igbm90
IHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNo
a292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi9yYW1mcy9yYW1mc192
bm9wcy5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zm
c2NvcmUvdm5vZGUuaCB8IDEwICsrKysrKy0tLS0KPiAgIGxpYi92ZnNjb3JlL3N0ZGlvLmMgICAg
ICAgICAgICAgICAgIHwgIDQgKystLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25z
KCspLCA5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvcmFtZnMvcmFtZnNfdm5v
cHMuYyBiL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gaW5kZXggZjA4NDhiZDAuLjZlY2E5YjI2
IDEwMDY0NAo+IC0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCj4gKysrIGIvbGliL3JhbWZz
L3JhbWZzX3Zub3BzLmMKPiBAQCAtMjk0LDcgKzI5NCw3IEBAIHJhbWZzX3N5bWxpbmsoc3RydWN0
IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIGNoYXIgKmxpbmspCj4gICAJcmV0dXJuIDA7Cj4gICB9
Cj4gICAKPiAtc3RhdGljIHNzaXplX3QKPiArc3RhdGljIGludAo+ICAgcmFtZnNfcmVhZGxpbmso
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvKQo+ICAgewo+ICAgCXN0cnVjdCByYW1m
c19ub2RlICpucCA9IHZwLT52X2RhdGE7Cj4gQEAgLTM5NCw3ICszOTQsNyBAQCByYW1mc19jcmVh
dGUoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlKQo+ICAgCXJldHVy
biAwOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzc2l6ZV90Cj4gK3N0YXRpYyBpbnQKPiAgIHJhbWZz
X3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVzZWQs
Cj4gICAJICAgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnIF9fdW51c2VkKQo+ICAgewo+IEBA
IC00NDQsNyArNDQ0LDcgQEAgcmFtZnNfc2V0X2ZpbGVfZGF0YShzdHJ1Y3Qgdm5vZGUgKnZwLCBj
b25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+
IC1zdGF0aWMgc3NpemVfdAo+ICtzdGF0aWMgaW50Cj4gICByYW1mc193cml0ZShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWcpCj4gICB7Cj4gICAJc3RydWN0IHJh
bWZzX25vZGUgKm5wID0gIHZwLT52X2RhdGE7Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS92bm9kZS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Zub2Rl
LmgKPiBpbmRleCAxMzQ4ZjU3OS4uZTdlYmM0YWQgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL3Zub2RlLmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvdm5vZGUuaAo+IEBAIC0xNDcsOSArMTQ3LDExIEBAIHN0cnVjdCB2YXR0ciB7Cj4gICAKPiAg
IHR5cGVkZWYJaW50ICgqdm5vcF9vcGVuX3QpCShzdHJ1Y3QgdmZzY29yZV9maWxlICopOwo+ICAg
dHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2Nv
cmVfZmlsZSAqKTsKPiAtdHlwZWRlZglzc2l6ZV90ICgqdm5vcF9yZWFkX3QpCShzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gLXR5cGVk
ZWYJc3NpemVfdCAoKnZub3Bfd3JpdGVfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICos
IGludCk7Cj4gLXR5cGVkZWYJb2ZmX3QgKCp2bm9wX3NlZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3QgdmZzY29yZV9maWxlICosIG9mZl90LCBvZmZfdCk7Cj4gK3R5cGVkZWYJaW50ICgqdm5v
cF9yZWFkX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLAo+ICsJCQkJ
IHN0cnVjdCB1aW8gKiwgaW50KTsKPiArdHlwZWRlZglpbnQgKCp2bm9wX3dyaXRlX3QpCShzdHJ1
Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwo+ICt0eXBlZGVmCWludCAoKnZub3Bfc2Vl
a190KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKiwKPiArCQkJCSBvZmZf
dCwgb2ZmX3QpOwo+ICAgdHlwZWRlZglpbnQgKCp2bm9wX2lvY3RsX3QpCShzdHJ1Y3Qgdm5vZGUg
Kiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwo+ICAgdHlw
ZWRlZglpbnQgKCp2bm9wX2ZzeW5jX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVf
ZmlsZSAqKTsKPiAgIHR5cGVkZWYJaW50ICgqdm5vcF9yZWFkZGlyX3QpCShzdHJ1Y3Qgdm5vZGUg
Kiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgZGlyZW50ICopOwo+IEBAIC0xNjcsNyAr
MTY5LDcgQEAgdHlwZWRlZglpbnQgKCp2bm9wX3RydW5jYXRlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
b2ZmX3QpOwo+ICAgdHlwZWRlZglpbnQgKCp2bm9wX2xpbmtfdCkgICAgICAoc3RydWN0IHZub2Rl
ICosIHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwo+ICAgdHlwZWRlZiBpbnQgKCp2bm9wX2NhY2hl
X3QpIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgdWlvICop
Owo+ICAgdHlwZWRlZiBpbnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2RlICosIGlu
dCwgb2ZmX3QsIG9mZl90KTsKPiAtdHlwZWRlZiBzc2l6ZV90ICgqdm5vcF9yZWFkbGlua190KSAg
KHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwo+ICt0eXBlZGVmIGludCAoKnZub3BfcmVh
ZGxpbmtfdCkgIChzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqKTsKPiAgIHR5cGVkZWYgaW50
ICgqdm5vcF9zeW1saW5rX3QpICAgKHN0cnVjdCB2bm9kZSAqLCBjaGFyICosIGNoYXIgKik7Cj4g
ICAKPiAgIC8qCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29y
ZS9zdGRpby5jCj4gaW5kZXggNDAyODhiYjMuLjhiZGUxNTJkIDEwMDY0NAo+IC0tLSBhL2xpYi92
ZnNjb3JlL3N0ZGlvLmMKPiArKysgYi9saWIvdmZzY29yZS9zdGRpby5jCj4gQEAgLTU3LDcgKzU3
LDcgQEAgc3RhdGljIGludCBfX2NvdXRrX3dyYXBwZXIodm9pZCAqZHN0IF9fdW51c2VkLCB2b2lk
ICpzcmMsIHNpemVfdCAqY250KQo+ICAgfQo+ICAgCj4gICAvKiBPbmUgZnVuY3Rpb24gZm9yIHN0
ZGVyciBhbmQgc3Rkb3V0ICovCj4gLXN0YXRpYyBzc2l6ZV90IHN0ZGlvX3dyaXRlKHN0cnVjdCB2
bm9kZSAqdnAgX191bnVzZWQsCj4gK3N0YXRpYyBpbnQgc3RkaW9fd3JpdGUoc3RydWN0IHZub2Rl
ICp2cCBfX3VudXNlZCwKPiAgIAkJCSAgIHN0cnVjdCB1aW8gKnVpbywKPiAgIAkJCSAgIGludCBp
b2ZsYWcgX191bnVzZWQpCj4gICB7Cj4gQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IF9f
cmVhZF9mbih2b2lkICpkc3QsIHZvaWQgKnNyYyBfX3VudXNlZCwgc2l6ZV90ICpjbnQpCj4gICAJ
cmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHNzaXplX3Qgc3RkaW9fcmVhZChzdHJ1Y3Qg
dm5vZGUgKnZwIF9fdW51c2VkLAo+ICtzdGF0aWMgaW50IHN0ZGlvX3JlYWQoc3RydWN0IHZub2Rl
ICp2cCBfX3VudXNlZCwKPiAgIAkJICAgICAgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSBfX3Vu
dXNlZCwKPiAgIAkJICAgICAgc3RydWN0IHVpbyAqdWlvLAo+ICAgCQkgICAgICBpbnQgaW9mbGFn
IF9fdW51c2VkKQo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki44Oz
44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFjaGlu
ZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1Bbmxh
Z2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2NQpG
YXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRAbmVj
bGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55LCBI
UkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 09:26:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 09:26: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 1hY5i0-0008Qu-Nh; Tue, 04 Jun 2019 09:26: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=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hY5hz-0008Qo-6w
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 09:26:19 +0000
X-Inumbo-ID: cbf11250-86aa-11e9-8a76-bb5add78ae28
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cbf11250-86aa-11e9-8a76-bb5add78ae28;
 Tue, 04 Jun 2019 09:26:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3E205F206D;
 Tue,  4 Jun 2019 11:26:13 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id nG4s9xzp5MB0; Tue,  4 Jun 2019 11:26:13 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 16F45F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 11:26:11 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 11:26:10 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 11:26:02 +0200
Message-ID: <20190604092602.25675-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: enable _BSD_SOURCE
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

Li4gd2hlcmUgbmVlZGVkIHRvIGNvbXBseSB3aXRoIG11c2wKClNpZ25lZC1vZmYtYnk6IFl1cmkg
Vm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi92ZnNjb3JlL2RlbnRy
eS5jICAgICAgICAgICAgICAgIHwgMiArKwogbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21v
dW50LmggfCAyICsrCiBsaWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAgICB8IDIgKysK
IGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAgIHwgMiArKwogbGliL3Zmc2NvcmUv
dGFzay5jICAgICAgICAgICAgICAgICAgfCAxICsKIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAg
ICAgICAgICAgIHwgMSArCiBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAgICAgICB8IDEg
KwogNyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zm
c2NvcmUvZGVudHJ5LmMgYi9saWIvdmZzY29yZS9kZW50cnkuYwppbmRleCBkYzlkYjM1Mi4uNzZm
N2E2YjggMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jCisrKyBiL2xpYi92ZnNjb3Jl
L2RlbnRyeS5jCkBAIC0zMCw2ICszMCw4IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCisjZGVm
aW5lIF9CU0RfU09VUkNFCisKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIu
aD4KIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9s
aWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAppbmRleCBjNzJmNTM4Yi4uYjg1ZTIx
MWUgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCisrKyBi
L2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCkBAIC0zMiw2ICszMiw4IEBACiAj
aWZuZGVmIF9TWVNfTU9VTlRfSF8KICNkZWZpbmUgX1NZU19NT1VOVF9IXwogCisjZGVmaW5lIF9C
U0RfU09VUkNFCisKICNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8dWsvbGlzdC5oPgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbG9va3VwLmMg
Yi9saWIvdmZzY29yZS9sb29rdXAuYwppbmRleCAxZTJjNDAwNS4uNTNlNTA4ZDggMTAwNjQ0Ci0t
LSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCisrKyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCkBAIC0z
MCw2ICszMCw4IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCisjZGVmaW5lIF9CU0RfU09VUkNF
CisKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxl
cnJuby5oPgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbW91bnQuYyBiL2xpYi92ZnNjb3JlL21v
dW50LmMKaW5kZXggNWQxYWY1MDMuLjI2MjlkMTMyIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9t
b3VudC5jCisrKyBiL2xpYi92ZnNjb3JlL21vdW50LmMKQEAgLTM0LDYgKzM0LDggQEAKICAqIHZm
c19tb3VudC5jIC0gbW91bnQgb3BlcmF0aW9ucwogICovCiAKKyNkZWZpbmUgX0JTRF9TT1VSQ0UK
KwogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUv
dGFzay5jCmluZGV4IGU2NThiZGFhLi4yMGM0NzRjNCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
dGFzay5jCisrKyBiL2xpYi92ZnNjb3JlL3Rhc2suYwpAQCAtMzQsNiArMzQsNyBAQAogICogdmZz
X3Rhc2suYyAtIFJvdXRpbmVzIHRvIG1hbmFnZSB0aGUgcGVyIHRhc2sgZGF0YS4KICAqLwogCisj
ZGVmaW5lIF9CU0RfU09VUkNFCiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRs
aWIuaD4KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgK
aW5kZXggODVlODEzZDQuLmZkNjBkZWM3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAor
KysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPGxpbWl0
cy5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2luY2x1
ZGUgPHN5cy90aW1lLmg+CiAKIC8qCiAgKiBUdW5hYmxlIHBhcmFtZXRlcnMKZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9saWIvdmZzY29yZS92bm9kZS5jCmluZGV4IGI5MDA4YWMy
Li41MWJkNzU2NCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvdm5vZGUuYworKysgYi9saWIvdmZz
Y29yZS92bm9kZS5jCkBAIC0zMyw2ICszMyw3IEBACiAvKgogICogdmZzX3Zub2RlLmMgLSB2bm9k
ZSBzZXJ2aWNlCiAgKi8KKyNkZWZpbmUgX0JTRF9TT1VSQ0UKIAogI2luY2x1ZGUgPGxpbWl0cy5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 09:27:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 09: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 1hY5ij-0008Ry-RM; Tue, 04 Jun 2019 09:27:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hY5ii-0008Rt-Ss
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 09:27:04 +0000
X-Inumbo-ID: e97a32dc-86aa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e97a32dc-86aa-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 09:27:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D8515F206D;
 Tue,  4 Jun 2019 11:27:02 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DaBAusO_6_kc; Tue,  4 Jun 2019 11:27:02 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B3382F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 11:27:00 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 11:27:00 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 11:26:58 +0200
Message-ID: <20190604092658.25801-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: remove NO_SYS
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

Tm90IHVzZWQKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVj
bGFiLmV1PgotLS0KIGxpYi92ZnNjb3JlL21haW4uYyB8IDggLS0tLS0tLS0KIDEgZmlsZSBjaGFu
Z2VkLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xp
Yi92ZnNjb3JlL21haW4uYwppbmRleCA2YTJhNjA0ZC4uZGZkNDNlYjMgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTc3LDEyICs3Nyw2
IEBAIHN0YXRpYyBtb2RlX3QgZ2xvYmFsX3VtYXNrID0gU19JV0dSUCB8IFNfSVdPVEg7CiB9IHdo
aWxlICgwKQogI2RlZmluZSBXQVJOX1NUVUJCRUQoKSBET19PTkNFKHVrX3ByX3dhcm4oIiVzKCkg
c3R1YmJlZFxuIiwgX19mdW5jX18pKQogCi0jZGVmaW5lIE5PX1NZUyhkZWNsKSBkZWNsIHsJCQkJ
XAotICAgIERPX09OQ0UodWtfcHJfd2FybigiJXMgbm90IGltcGxlbWVudGVkXG4iLCBfX2Z1bmNf
XykpOwlcCi0gICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCi0gICAgcmV0dXJuIC0xOwkJCQkJCVwK
LX0KLQogc3RhdGljIGlubGluZSBpbnQgbGliY19lcnJvcihpbnQgZXJyKQogewogICAgIGVycm5v
ID0gZXJyOwpAQCAtMjAyNSw4ICsyMDE5LDYgQEAgc3NpemVfdCBzZW5kZmlsZShpbnQgb3V0X2Zk
LCBpbnQgaW5fZmQsIG9mZl90ICpfb2Zmc2V0LCBzaXplX3QgY291bnQpCiBMRlM2NChzZW5kZmls
ZSk7CiAjZW5kaWYKIAotTk9fU1lTKGludCBmY2htb2RhdChpbnQgZGlyZmQgX191bnVzZWQsIGNv
bnN0IGNoYXIgKnBhdGhuYW1lIF9fdW51c2VkLCBtb2RlX3QgbW9kZSBfX3VudXNlZCwgaW50IGZs
YWdzIF9fdW51c2VkKSk7Ci0KIG1vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKIHsKIAlyZXR1
cm4gdWthcmNoX2V4Y2hhbmdlX24oJmdsb2JhbF91bWFzaywgbmV3bWFzayk7Ci0tIAoyLjE5LjIK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 10:11:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 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 1hY6Q5-0004Yw-5g; Tue, 04 Jun 2019 10:11:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY6Q4-0004Yr-6e
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 10:11:52 +0000
X-Inumbo-ID: 2a32b605-86b1-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2a32b605-86b1-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 10:11:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 69882F206D;
 Tue,  4 Jun 2019 12:11:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id FdU-Th4Ob5sx; Tue,  4 Jun 2019 12:11:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 419EEF206A;
 Tue,  4 Jun 2019 12:11:44 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 12:11:43
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
 <20190603151640.22507-2-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <4589814d-abf9-c516-175f-d9c470c34432@neclab.eu>
Date: Tue, 4 Jun 2019 12:11:43 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603151640.22507-2-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 1/8] Add
 documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLAoKbG9va2luZyBnb29kIG5vdy4KClJldmlld2VkLWJ5OiBGbG9yaWFuIFNjaG1p
ZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+CgpPbiA2LzMvMTkgNToxNiBQTSwgQ29zdGlu
IEx1cHUgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNz
LnB1Yi5ybz4KPiAtLS0KPiAgIENPRElOR19TVFlMRS5tZCB8ICA0ICsrKysKPiAgIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysKPiAgIENPUFlJTkcubWQgICAgICB8IDMwICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwo+ICAgTUFJTlRBSU5FUlMubWQgIHwgMTAgKysrKysrKysrKwo+ICAg
UkVBRE1FLm1kICAgICAgIHwgIDUgKysrKysKPiAgIDUgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0
aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZAo+ICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJ
TkcubWQKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZAo+ICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IFJFQURNRS5tZAo+IAo+IGRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9D
T0RJTkdfU1RZTEUubWQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjU3
MzAwNDEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvQ09ESU5HX1NUWUxFLm1kCj4gQEAgLTAsMCAr
MSw0IEBACj4gK0NvZGluZyBTdHlsZQo+ICs9PT09PT09PT09PT0KPiArCj4gK1BsZWFzZSByZWZl
ciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBv
c2l0b3J5Lgo+IGRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQK
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjVmNTVlY2EKPiAtLS0gL2Rl
di9udWxsCj4gKysrIGIvQ09OVFJJQlVUSU5HLm1kCj4gQEAgLTAsMCArMSw0IEBACj4gK0NvbnRy
aWJ1dGluZyB0byBVbmlrcmFmdAo+ICs9PT09PT09PT09PT09PT09PT09PT09PQo+ICsKPiArUGxl
YXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWty
YWZ0IHJlcG9zaXRvcnkuCj4gZGlmZiAtLWdpdCBhL0NPUFlJTkcubWQgYi9DT1BZSU5HLm1kCj4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xOTg1NWMyCj4gLS0tIC9kZXYv
bnVsbAo+ICsrKyBiL0NPUFlJTkcubWQKPiBAQCAtMCwwICsxLDMwIEBACj4gK0xpY2Vuc2UKPiAr
PT09PT09PQo+ICsKPiArVW5pa3JhZnQgcHRocmVhZC1lbWJlZGRlZCB3cmFwcGVycwo+ICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKwo+ICtUaGlzIHJlcG9zaXRvcnkgY29u
dGFpbnMgd3JhcHBlciBjb2RlIHRvIGJ1aWxkIHB0aHJlYWQtZW1iZWRkZWQgd2l0aCBVbmlrcmFm
dC4KPiArRWFjaCBDIGNvZGUgZmlsZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUg
d2hvIGlzIHRoZQo+ICtjb3B5cmlnaHQgb3duZXIgYW5kIHVuZGVyIHdoaWNoIHRlcm1zIGFuZCBj
b25kaXRpb25zIHRoZSBjb2RlIGlzCj4gK2xpY2Vuc2VkLiBJZiBzdWNoIGEgbGljZW5jZSBub3Rl
IGlzIG1pc3NpbmcsIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0Cj4gK25vdGljZSB3aWxsIGFwcGx5
Ogo+ICsKPiArCj4gKwlDb3B5cmlnaHQoQykgWWVhciBOYW1lLCBJbnN0aXR1dGlvbgo+ICsJCj4g
KwlUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCj4gKwltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCj4gKwlMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArCXZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArCQo+ICsJVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKwlidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
Zgo+ICsJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKPiArCUxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCj4gKwkKPiArCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArCUxpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnkgaW4gdGhlIGZpbGUgQ09QWUlORy5MSUI7Cj4gKwlpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCj4gKwk1OSBUZW1wbGUgUGxhY2UgLSBTdWl0
ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBCj4gKwo+IGRpZmYgLS1naXQgYS9NQUlO
VEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi5jZWFkZmNlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL01BSU5UQUlORVJTLm1k
Cj4gQEAgLTAsMCArMSwxMCBAQAo+ICtNYWludGFpbmVycyBMaXN0Cj4gKz09PT09PT09PT09PT09
PT0KPiArCj4gK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVh
c2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbgo+ICt0aGUgbWFpbiBVbmlrcmFmdCByZXBv
c2l0b3J5Lgo+ICsKPiArCVBUSFJFQUQtRU1CRURERUQtVU5JS1JBRlQKPiArCU06CUNvc3RpbiBM
dXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gKwlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVu
Lm9yZwo+ICsJRjogKgo+IGRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjJlY2MyMzkKPiAtLS0gL2Rldi9udWxs
Cj4gKysrIGIvUkVBRE1FLm1kCj4gQEAgLTAsMCArMSw1IEBACj4gK3B0aHJlYWQtZW1iZWRkZWQg
Zm9yIFVuaWtyYWZ0Cj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICtQbGVh
c2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3VtZW50YXRpb24g
aW4gdGhlIGBkb2MvYAo+ICtzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3Np
dG9yeS4KPiAKCi0tIApEci4gRmxvcmlhbiBTY2htaWR0CuODleODreODvOODquOCouODs+ODu+OC
t+ODpeODn+ODg+ODiApSZXNlYXJjaCBTY2llbnRpc3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVh
cm5pbmcgR3JvdXAKTkVDIExhYm9yYXRvcmllcyBFdXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2
LCBELTY5MTE1IEhlaWRlbGJlcmcKVGVsLiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAg
ICAgKzQ5ICgwKTYyMjEgNDM0Mi0xNTUKZS1tYWlsOiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5l
dQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUmVnaXN0ZXJlZCBhdCBBbXRzZ2VyaWNodCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4
NTU4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 10:37:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 10:37: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 1hY6os-0006hn-MD; Tue, 04 Jun 2019 10:37: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=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hY6or-0006hi-V2
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 10:37:29 +0000
X-Inumbo-ID: bd46a828-86b4-11e9-9fb0-c7c82d27f87b
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bd46a828-86b4-11e9-9fb0-c7c82d27f87b;
 Tue, 04 Jun 2019 10:37:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7E842F206E;
 Tue,  4 Jun 2019 12:37:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MkFsSEm_8K9t; Tue,  4 Jun 2019 12:37:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4C8DDF206D;
 Tue,  4 Jun 2019 12:37:17 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 12:37:16 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 1/2] Add .gitignore
Thread-Index: AQHVGZCYamgiuQE2G0++YJEd4v33A6aLT9KA
Date: Tue, 4 Jun 2019 10:37:16 +0000
Message-ID: <AD2D1462-E997-4B99-A845-ACCABF1604DB@neclab.eu>
References: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602221434.17542-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602221434.17542-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <981A17EBC054F0499C19C79E3AE356C2@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 1/2] Add
 .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZlbGlw
ZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0K
DQrvu79PbiAwMy4wNi4xOSwgMDA6MTQsICJWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2
bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPiB3cm90ZToNCg0KICAgIFNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4NCiAgICAtLS0NCiAgICAgLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KICAgICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQ0KICAgICBjcmVh
dGUgbW9kZSAxMDA2NDQgLmdpdGlnbm9yZQ0KICAgIA0KICAgIGRpZmYgLS1naXQgYS8uZ2l0aWdu
b3JlIGIvLmdpdGlnbm9yZQ0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAw
MDAwMC4uNzVkMmZkMw0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi8uZ2l0aWdub3JlDQog
ICAgQEAgLTAsMCArMSwyNyBAQA0KICAgICsqLmRlcGVuZA0KICAgICsqLm8NCiAgICArKi5hDQog
ICAgKyouZA0KICAgICsqLnNvDQogICAgKyoub3JpZw0KICAgICsqLnJlag0KICAgICsqLmJhaw0K
ICAgICsqLnN3cA0KICAgICsqfg0KICAgICssKg0KICAgICtcIypcIw0KICAgICsuXCMqDQogICAg
K1wjXypcIw0KICAgICsuXCNfKg0KICAgICshLmdpdGlnbm9yZQ0KICAgICsuKg0KICAgICsNCiAg
ICArIyBnbnUgZ2xvYmFsIGZpbGVzDQogICAgK0dQQVRIDQogICAgK0dSVEFHUw0KICAgICtHU1lN
Uw0KICAgICtHVEFHUw0KICAgICsNCiAgICArIyBjc2NvcGUgZmlsZXMNCiAgICArY3Njb3BlLioN
CiAgICArbmNzY29wZS4qDQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:06:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:06: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 1hY7Gc-000153-Uj; Tue, 04 Jun 2019 11:06: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=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hY6rI-0006tX-5a
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 10:40:00 +0000
X-Inumbo-ID: 17463492-86b5-11e9-aea8-fb7e761dc309
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 17463492-86b5-11e9-aea8-fb7e761dc309;
 Tue, 04 Jun 2019 10:39:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 702681052DF;
 Tue,  4 Jun 2019 12:39:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id D4wC0ycS5dbF; Tue,  4 Jun 2019 12:39:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B1F1010524F;
 Tue,  4 Jun 2019 12:39:53 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 12:39:52 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 2/2] Initial port of Intel
 Intrinsics on Unikraft
Thread-Index: AQHVGZChKnV2VLTyS0avMyYAuBYNjKaLUIoA
Date: Tue, 4 Jun 2019 10:39:51 +0000
Message-ID: <D9D9EC36-AA42-426A-9346-1D7A80B28771@neclab.eu>
References: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602221434.17542-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190602221434.17542-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <5F2B668566334F4EA3A5B339BA0F27F0@office.hd>
MIME-Version: 1.0
X-Mailman-Approved-At: Tue, 04 Jun 2019 11:06:09 +0000
Subject: Re: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 2/2] Initial
 port of Intel Intrinsics 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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KVGhhbmtzIGZvciB0aGUgcGF0Y2guIEkgbm90aWNlZCB0aGF0IG9uIG9sZGVy
IGdjYyB2ZXJzaW9ucyAoZS5nLiwgdjYpIHRoZSBidWlsZCBicmVha3MsIHBlcmhhcHMgeW91IGNh
biBzZW5kIGFuIHVwZGF0ZWQgcGF0Y2ggKGFzIGRpc2N1c3NlZCBvZmZsaW5lKSB0byBmaXggdGhp
cz8NCg0KVGhhbmtzLA0KDQotLSBGZWxpcGUNCg0K77u/T24gMDMuMDYuMTksIDAwOjE1LCAiVmxh
ZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIGlzIG91ciBpbml0aWFsIHBvcnQgb2YgaW50ZWwgaW50
cmluc2ljcyB0byBVbmlrcmFmdCBhcyBhbiBleHRlcm5hbCBsaWJyYXJ5Lg0KICAgIFRoaXMgcmVs
ZWFzZSBpcyBiYXNlZCBvbiB0aGUgTExWTSBoZWFkZXJzIHdoaWNoIHdlcmUgYWRhcHRlZCB0byB3
b3JrIG9uIFVuaWtyYWZ0DQogICAgd2l0aCBHQ0MuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTog
VmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0K
ICAgIC0tLQ0KICAgICBDT0RJTkdfU1RZTEUubWQgICAgICAgIHwgICAgNCArDQogICAgIENPTlRS
SUJVVElORy5tZCAgICAgICAgfCAgICA0ICsNCiAgICAgQ29uZmlnLnVrICAgICAgICAgICAgICB8
ICAgMjUgKw0KICAgICBNQUlOVEFJTkVSUy5tZCAgICAgICAgIHwgICAxMSArDQogICAgIE1ha2Vm
aWxlLnVrICAgICAgICAgICAgfCAgIDY5ICsNCiAgICAgUkVBRE1FLm1kICAgICAgICAgICAgICB8
ICAgIDUgKw0KICAgICBleHBvcnRzeW1zLnVrICAgICAgICAgIHwgICAgMSArDQogICAgIGluY2x1
ZGUvYXZ4aW50cmluLmggICAgfCA1MTIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysNCiAgICAgaW5jbHVkZS9lbW1pbnRyaW4uaCAgICB8IDUwMjEgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogICAgIGluY2x1ZGUvaW1taW50cmluLmggICAg
fCAgIDc1ICsNCiAgICAgaW5jbHVkZS9tbV9tYWxsb2MuaCAgICB8ICAgNzUgKw0KICAgICBpbmNs
dWRlL21taW50cmluLmggICAgIHwgMTU5OCArKysrKysrKysrKysrDQogICAgIGluY2x1ZGUvbm1t
aW50cmluLmggICAgfCAgIDMwICsNCiAgICAgaW5jbHVkZS9wbW1pbnRyaW4uaCAgICB8ICAzMjEg
KysrDQogICAgIGluY2x1ZGUvcG9wY250aW50cmluLmggfCAgMTAyICsNCiAgICAgaW5jbHVkZS9z
bW1pbnRyaW4uaCAgICB8IDI1MDQgKysrKysrKysrKysrKysrKysrKysNCiAgICAgaW5jbHVkZS90
bW1pbnRyaW4uaCAgICB8ICA3OTAgKysrKysrKw0KICAgICBpbmNsdWRlL3htbWludHJpbi5oICAg
IHwgMzEwMSArKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMTggZmlsZXMgY2hhbmdlZCwg
MTg4NTcgaW5zZXJ0aW9ucygrKQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxF
Lm1kDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQNCiAgICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IENvbmZpZy51aw0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5F
UlMubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrDQogICAgIGNyZWF0ZSBt
b2RlIDEwMDY0NCBSRUFETUUubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMu
dWsNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvYXZ4aW50cmluLmgNCiAgICAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZW1taW50cmluLmgNCiAgICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUvaW1taW50cmluLmgNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv
bW1fbWFsbG9jLmgNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbW1pbnRyaW4uaA0K
ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ubW1pbnRyaW4uaA0KICAgICBjcmVhdGUg
bW9kZSAxMDA2NDQgaW5jbHVkZS9wbW1pbnRyaW4uaA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQg
aW5jbHVkZS9wb3BjbnRpbnRyaW4uaA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9z
bW1pbnRyaW4uaA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS90bW1pbnRyaW4uaA0K
ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94bW1pbnRyaW4uaA0KICAgIA0KICAgIGRp
ZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCiAgICBuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjU3MzAwNDENCiAgICAtLS0gL2Rldi9u
dWxsDQogICAgKysrIGIvQ09ESU5HX1NUWUxFLm1kDQogICAgQEAgLTAsMCArMSw0IEBADQogICAg
K0NvZGluZyBTdHlsZQ0KICAgICs9PT09PT09PT09PT0NCiAgICArDQogICAgK1BsZWFzZSByZWZl
ciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBv
c2l0b3J5Lg0KICAgIGRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcu
bWQNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjVmNTVlY2EN
CiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvQ09OVFJJQlVUSU5HLm1kDQogICAgQEAgLTAs
MCArMSw0IEBADQogICAgK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdA0KICAgICs9PT09PT09PT09
PT09PT09PT09PT09PQ0KICAgICsNCiAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVU
SU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgZGlmZiAt
LWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQog
ICAgaW5kZXggMDAwMDAwMC4uNDEzYjEzNw0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9D
b25maWcudWsNCiAgICBAQCAtMCwwICsxLDI1IEBADQogICAgK21lbnVjb25maWcgTElCSU5URUxf
SU5UUklOU0lDUw0KICAgICsgICAgYm9vbCAiSW50ZWwgSW50cmluc2ljcyAtIEMgc3R5bGUgZnVu
Y3Rpb25zIHRoYXQgcHJvdmlkZSBhY2Nlc3MgSW50ZWwgaW5zdHJ1Y3Rpb25zIg0KICAgICsgICAg
ZGVmYXVsdCBuDQogICAgKw0KICAgICtpZiBMSUJJTlRFTF9JTlRSSU5TSUNTDQogICAgK2NvbmZp
ZyBTSU1EX1NTRQ0KICAgICsgICAgYm9vbCAiRW5hYmxlIFNTRSBzdXBwb3J0Ig0KICAgICsgICAg
ZGVmYXVsdCBuDQogICAgKw0KICAgICtjb25maWcgU0lNRF9TU0UyDQogICAgKyAgICBib29sICJF
bmFibGUgU1NFMiBzdXBwb3J0Ig0KICAgICsgICAgZGVmYXVsdCBuDQogICAgKw0KICAgICtjb25m
aWcgU0lNRF9TU0UzDQogICAgKyAgICBib29sICJFbmFibGUgU1NFMyBzdXBwb3J0Ig0KICAgICsg
ICAgZGVmYXVsdCBuDQogICAgKw0KICAgICtjb25maWcgU0lNRF9TU0U0DQogICAgKyAgICBib29s
ICJFbmFibGUgU1NFNCBzdXBwb3J0Ig0KICAgICsgICAgZGVmYXVsdCBuDQogICAgKw0KICAgICtj
b25maWcgU0lNRF9BVlgNCiAgICArICAgIGJvb2wgIkVuYWJsZSBBVlggc3VwcG9ydCINCiAgICAr
ICAgIGRlZmF1bHQgbg0KICAgICtlbmRpZg0KICAgIGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5t
ZCBiL01BSU5UQUlORVJTLm1kDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAw
MDAwMDAwLi5hM2QzYjBhDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL01BSU5UQUlORVJT
Lm1kDQogICAgQEAgLTAsMCArMSwxMSBAQA0KICAgICtNYWludGFpbmVycyBMaXN0DQogICAgKz09
PT09PT09PT09PT09PT0NCiAgICArDQogICAgK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlz
IGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KICAgICt0
aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KICAgICsNCiAgICArCUxJQklOVEVMX0lOVFJJ
TlNJQ1MtVU5JS1JBRlQNCiAgICArCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xh
Yi5ldT4NCiAgICArCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0
dWQuYWNzLnVwYi5ybz4NCiAgICArCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnDQogICAg
KwlGOiAqDQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICBu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjU4NWM0ZjMNCiAgICAtLS0g
L2Rldi9udWxsDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAtMCwwICsxLDY5IEBADQog
ICAgKyMgIGxpYmludGVsX2ludHJpbnNpY3MgTWFrZWZpbGUudWsNCiAgICArIw0KICAgICsjICBB
dXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+DQogICAgKyMNCiAgICArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBv
bGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICArIw0KICAg
ICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQNCiAgICArIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgKyMgIGFyZSBtZXQ6DQogICAg
KyMNCiAgICArIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgICsjICAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dA0KICAgICsjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogICAgKyMg
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1l
cyBvZiBpdHMNCiAgICArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICArIyAgICAgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgICArIw0KICAg
ICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCiAgICArIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAgICsj
ICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgICsjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgKyMgIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1INCiAgICArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICArIyAgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQog
ICAgKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElODQogICAgKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKyMgIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFDQogICAgKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAg
ICsjDQogICAgKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVE
IElOIEFOWSBXQVkuDQogICAgKyMNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQogICAgKyMgTGlicmFyeSByZWdpc3RyYXRpb24NCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMNCiAgICArJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJpbnRlbF9pbnRyaW5zaWNzLCQoQ09O
RklHX0xJQklOVEVMX0lOVFJJTlNJQ1MpKSkNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjDQogICAgKyMgTGlicmFyeSBpbmNsdWRlcw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIw0KICAgICtDSU5DTFVERVMtJChDT05GSUdfTElCSU5URUxfSU5UUklOU0lDUykgKz0gLUkk
KExJQklOVEVMX0lOVFJJTlNJQ1NfQkFTRSkvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENP
TkZJR19MSUJJTlRFTF9JTlRSSU5TSUNTKSArPSAtSSQoTElCSU5URUxfSU5UUklOU0lDU19CQVNF
KS9pbmNsdWRlDQogICAgKw0KICAgICtpZmRlZiBDT05GSUdfU0lNRF9TU0UNCiAgICArQ0ZMQUdT
CQkrPSAtbXNzZSAtbWZwbWF0aD1zc2UNCiAgICArQ1hYRkxBR1MJKz0gLW1zc2UgLW1mcG1hdGg9
c3NlDQogICAgK2VuZGlmDQogICAgKw0KICAgICtpZmRlZiBDT05GSUdfU0lNRF9TU0UyDQogICAg
K0NGTEFHUwkJKz0gLW1zc2UyDQogICAgK0NYWEZMQUdTCSs9IC1tc3NlMg0KICAgICtlbmRpZg0K
ICAgICsNCiAgICAraWZkZWYgQ09ORklHX1NJTURfU1NFMw0KICAgICtDRkxBR1MJCSs9IC1tc3Nl
Mw0KICAgICtDWFhGTEFHUwkrPSAtbXNzZTMNCiAgICArZW5kaWYNCiAgICArDQogICAgK2lmZGVm
IENPTkZJR19TSU1EX1NTRTQNCiAgICArQ0ZMQUdTCQkrPSAtbXNzZTQNCiAgICArQ1hYRkxBR1MJ
Kz0gLW1zc2U0DQogICAgK2VuZGlmDQogICAgKw0KICAgICtpZmRlZiBDT05GSUdfU0lNRF9BVlgN
CiAgICArQ0ZMQUdTCQkrPSAtbWF2eA0KICAgICtDWFhGTEFHUwkrPSAtbWF2eA0KICAgICtlbmRp
Zg0KICAgIGRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQNCiAgICBuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmVjOGM0NzQNCiAgICAtLS0gL2Rldi9udWxs
DQogICAgKysrIGIvUkVBRE1FLm1kDQogICAgQEAgLTAsMCArMSw1IEBADQogICAgK2xpYmludGVs
XF9pbnRyaW5pc2NzIGZvciBVbmlrcmFmdA0KICAgICs9PT09PT09PT09PT09PT09PT09DQogICAg
Kw0KICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRv
Y3VtZW50YXRpb24gaW4gdGhlIGBkb2MvYA0KICAgICtzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4g
dW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICBkaWZmIC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4
cG9ydHN5bXMudWsNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAu
LjYyMWU5NGYNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvZXhwb3J0c3ltcy51aw0KICAg
IEBAIC0wLDAgKzEgQEANCiAgICArbm9uZQ0KICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL2F2eGlu
dHJpbi5oIGIvaW5jbHVkZS9hdnhpbnRyaW4uaA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQog
ICAgaW5kZXggMDAwMDAwMC4uNjk5Njc3NQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9p
bmNsdWRlL2F2eGludHJpbi5oDQogICAgQEAgLTAsMCArMSw1MTIxIEBADQogICAgKy8qPT09LS0t
LSBhdnhpbnRyaW4uaCAtIEFWWCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS09PT0NCiAgICArICoNCiAgICArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KICAg
ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KICAgICsgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91
dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzDQog
ICAgKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwNCiAgICArICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQogICAgKyAqIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQog
ICAgKyAqDQogICAgKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQogICAgKyAqIGFsbCBjb3BpZXMgb3Ig
c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KICAgICsgKg0KICAgICsgKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUg0KICAgICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCiAgICArICogRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFDQogICAgKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB
QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCiAgICArICogTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwNCiAgICArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KICAgICsgKiBUSEUgU09GVFdBUkUu
DQogICAgKyAqDQogICAgKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCiAgICArICovDQogICAgKw0K
ICAgICsjaWZuZGVmIF9fSU1NSU5UUklOX0gNCiAgICArI2Vycm9yICJOZXZlciB1c2UgPGF2eGlu
dHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIg0KICAgICsj
ZW5kaWYNCiAgICArDQogICAgKyNpZm5kZWYgX19BVlhJTlRSSU5fSA0KICAgICsjZGVmaW5lIF9f
QVZYSU5UUklOX0gNCiAgICArDQogICAgK3R5cGVkZWYgZG91YmxlIF9fdjRkZiBfX2F0dHJpYnV0
ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCiAgICArdHlwZWRlZiBmbG9hdCBfX3Y4c2Yg
X19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQogICAgK3R5cGVkZWYgbG9u
ZyBsb25nIF9fdjRkaSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCiAg
ICArdHlwZWRlZiBpbnQgX192OHNpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMy
KSkpOw0KICAgICt0eXBlZGVmIHNob3J0IF9fdjE2aGkgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9y
X3NpemVfXyAoMzIpKSk7DQogICAgK3R5cGVkZWYgY2hhciBfX3YzMnFpIF9fYXR0cmlidXRlX18g
KChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KICAgICsNCiAgICArLyogVW5zaWduZWQgdHlwZXMg
Ki8NCiAgICArdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX192NGR1IF9fYXR0cmlidXRlX18g
KChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KICAgICt0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Y4
c3UgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQogICAgK3R5cGVkZWYg
dW5zaWduZWQgc2hvcnQgX192MTZodSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgz
MikpKTsNCiAgICArdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdjMycXUgX19hdHRyaWJ1dGVfXyAo
KF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQogICAgKw0KICAgICsvKiBXZSBuZWVkIGFuIGV4cGxp
Y2l0bHkgc2lnbmVkIHZhcmlhbnQgZm9yIGNoYXIuIE5vdGUgdGhhdCB0aGlzIHNob3VsZG4ndA0K
ICAgICsgKiBhcHBlYXIgaW4gdGhlIGludGVyZmFjZSB0aG91Z2guICovDQogICAgK3R5cGVkZWYg
c2lnbmVkIGNoYXIgX192MzJxcyBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpKSk7
DQogICAgKw0KICAgICt0eXBlZGVmIGZsb2F0IF9fbTI1NiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0
b3Jfc2l6ZV9fICgzMikpKTsNCiAgICArdHlwZWRlZiBkb3VibGUgX19tMjU2ZCBfX2F0dHJpYnV0
ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpKSk7DQogICAgK3R5cGVkZWYgbG9uZyBsb25nIF9fbTI1
NmkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDMyKSkpOw0KICAgICsNCiAgICArLyog
RGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBm
aWxlLiAqLw0KICAgICsjaWZkZWYgIF9fR05VQ19fDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZO
X0FUVFJTIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywg
X19hcnRpZmljaWFsX18pKQ0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0
dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh
bF9fKSkNCiAgICArI2Vsc2UNCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngi
KSwgX19taW5fdmVjdG9yX3dpZHRoX18oMjU2KSkpDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZO
X0FUVFJTMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywg
X190YXJnZXRfXygiYXZ4IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KICAgICsjZW5k
aWYNCiAgICArDQogICAgKy8qIEFyaXRobWV0aWMgKi8NCiAgICArLy8vIEFkZHMgdHdvIDI1Ni1i
aXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJv
dGgNCiAgICArLy8vICAgIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2FkZF9wZChfX20yNTZkIF9fYSwgX19tMjU2
ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZGYpX19hKyhfX3Y0
ZGYpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEFkZHMgdHdvIDI1Ni1iaXQgdmVjdG9y
cyBvZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQUREUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQog
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KICAgICsvLy8g
ICAgb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbTI1Nl9hZGRfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMjU2KSgoX192OHNmKV9fYSsoX192OHNmKV9fYik7DQogICAgK30N
CiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRv
dWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNV
QlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
bWludWVuZC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuDQogICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBk
aWZmZXJlbmNlcyBiZXR3ZWVuDQogICAgKy8vLyAgICBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0
aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3N1Yl9w
ZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1
NmQpKChfX3Y0ZGYpX19hLShfX3Y0ZGYpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1
YnRyYWN0cyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQUyA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWludWVuZC4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgc3VidHJhaGVuZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2Vlbg0KICAg
ICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RF
RkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3N1Yl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c2YpX19hLShfX3Y4c2YpX19i
KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEFkZHMgdGhlIGV2ZW4taW5kZXhlZCB2YWx1ZXMg
YW5kIHN1YnRyYWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQogICAgKy8vLyAgICB0d28g
MjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREU1VCUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQuDQogICAgKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBhbHRlcm5h
dGluZyBzdW1zDQogICAgKy8vLyAgICBhbmQgZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJh
bmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tMjU2X2FkZHN1Yl9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQogICAgK3sNCiAg
ICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYWRkc3VicGQyNTYoKF9fdjRkZilf
X2EsIChfX3Y0ZGYpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEFkZHMgdGhlIGV2ZW4t
aW5kZXhlZCB2YWx1ZXMgYW5kIHN1YnRyYWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQog
ICAgKy8vLyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTVUJQUyA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3Bl
cmFuZC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQuDQogICAg
Ky8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIGFsdGVybmF0aW5nIHN1bXMgYW5kDQogICAgKy8vLyAgICBkaWZmZXJlbmNlcyBiZXR3ZWVu
IGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbTI1Nl9hZGRzdWJfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCiAg
ICArew0KICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2FkZHN1YnBzMjU2KChf
X3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBEaXZpZGVz
IHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQRCA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFp
bmluZyB0aGUgZGl2aXNvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiBib3RoDQogICAgKy8vLyAg
ICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbTI1Nl9kaXZfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIChfX20yNTZkKSgoX192NGRmKV9fYS8oX192NGRmKV9fYik7DQogICAg
K30NCiAgICArDQogICAgKy8vLyBEaXZpZGVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBm
bG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJ
VlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBk
aXZpZGVuZC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aXNvci4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcXVvdGll
bnRzIG9mIGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUg
X19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfZGl2X3BzKF9fbTI1NiBfX2Es
IF9fbTI1NiBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2Ev
KF9fdjhzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdHdvIDI1Ni1i
aXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0gYW5kIHJldHVybnMgdGhlIGdyZWF0ZXINCiAgICAr
Ly8vICAgIG9mIGVhY2ggcGFpciBvZiB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFp
bmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWF4aW11bSB2YWx1ZXMNCiAgICAr
Ly8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1
NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9tYXhfcGQoX19tMjU2ZCBfX2EsIF9f
bTI1NmQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMy
X21heHBkMjU2KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb21wYXJlcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCByZXR1
cm5zIHRoZSBncmVhdGVyDQogICAgKy8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhQUyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJh
bmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQogICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1h
eGltdW0gdmFsdWVzDQogICAgKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQogICAgK3N0
YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9tYXhf
cHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2
KV9fYnVpbHRpbl9pYTMyX21heHBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQogICAg
K30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHgg
ZG91YmxlXSBhbmQgcmV0dXJucyB0aGUgbGVzc2VyDQogICAgKy8vLyAgICBvZiBlYWNoIHBhaXIg
b2YgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNSU5QRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVy
YW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIG1pbmltdW0gdmFsdWVzDQogICAgKy8vLyAgICBiZXR3ZWVuIGJvdGgg
b3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW0yNTZfbWluX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9taW5wZDI1NigoX192NGRmKV9f
YSwgKF9fdjRkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdHdvIDI1
Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgbGVzc2VyDQogICAg
Ky8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5QUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbmltdW0gdmFsdWVzDQogICAgKy8v
LyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9taW5fcHMoX19tMjU2IF9fYSwgX19tMjU2
IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX21pbnBz
MjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBN
dWx0aXBsaWVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQRCA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4N
CiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHByb2R1
Y3RzIG9mIGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUg
X19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X211bF9wZChfX20yNTZkIF9f
YSwgX19tMjU2ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZGYp
X19hICogKF9fdjRkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTXVsdGlwbGllcyB0
d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBh
cmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGgNCiAg
ICArLy8vICAgIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW0yNTZfbXVsX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQog
ICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2EgKiAoX192OHNmKV9fYik7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdHMgb2Yg
dGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGRvdWJs
ZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRQ
RCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICAr
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVy
bnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3F1YXJl
IHJvb3RzIG9mIHRoZQ0KICAgICsvLy8gICAgdmFsdWVzIGluIHRoZSBvcGVyYW5kLg0KICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3Nx
cnRfcGQoX19tMjU2ZCBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWls
dGluX2lhMzJfc3FydHBkMjU2KChfX3Y0ZGYpX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2
ZWN0b3Igb2YNCiAgICArLy8vICAgIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlDQogICAgKy8vLyAgICB2
YWx1ZXMgaW4gdGhlIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZB
VUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zcXJ0X3BzKF9fbTI1NiBfX2EpDQogICAgK3sNCiAg
ICArICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zcXJ0cHMyNTYoKF9fdjhzZilfX2Ep
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ2FsY3VsYXRlcyB0aGUgcmVjaXByb2NhbCBzcXVh
cmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQNCiAgICArLy8vICAgIHZlY3RvciBv
ZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUlNRUlRQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAg
Ky8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIHJlY2lwcm9jYWwgc3F1YXJlDQogICAgKy8vLyAgICByb290cyBvZiB0aGUgdmFsdWVzIGlu
IHRoZSBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW0yNTZfcnNxcnRfcHMoX19tMjU2IF9fYSkNCiAgICArew0KICAgICsgIHJl
dHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMyNTYoKF9fdjhzZilfX2EpOw0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gQ2FsY3VsYXRlcyB0aGUgcmVjaXByb2NhbHMgb2YgdGhlIHZh
bHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbOCB4IGZsb2F0XS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUkNQUFMgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByZWNpcHJvY2FscyBvZiB0
aGUNCiAgICArLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5s
aW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3JjcF9wcyhfX20yNTYg
X19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfcmNwcHMy
NTYoKF9fdjhzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUm91bmRzIHRoZSB2YWx1
ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkDQogICAg
Ky8vLyAgICBieSB0aGUgYnl0ZSBvcGVyYW5kLiBUaGUgc291cmNlIHZhbHVlcyBhcmUgcm91bmRl
ZCB0byBpbnRlZ2VyIHZhbHVlcyBhbmQNCiAgICArLy8vICAgIHJldHVybmVkIGFzIDY0LWJpdCBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAg
ICArLy8vIF9fbTI1NmQgX21tMjU2X3JvdW5kX3BkKF9fbTI1NmQgViwgY29uc3QgaW50IE0pOw0K
ICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIFYNCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUg
dGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0KICAgICsvLy8gICAgQml0IFszXSBpcyBhIHByZWNp
c2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQogICAgKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4
Y2VwdGlvbiBpcyB1c2VkLiBcbg0KICAgICsvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90
IHVwZGF0ZWQuIFxuDQogICAgKy8vLyAgICBCaXQgWzJdIGlzIHRoZSByb3VuZGluZyBjb250cm9s
IHNvdXJjZTogXG4NCiAgICArLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEgTS4gXG4N
CiAgICArLy8vICAgICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcuIFxuDQogICAg
Ky8vLyAgICBCaXRzIFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlv
bjogXG4NCiAgICArLy8vICAgICAgMDA6IE5lYXJlc3QuIFxuDQogICAgKy8vLyAgICAgIDAxOiBE
b3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGluZmluaXR5KS4gXG4NCiAgICArLy8vICAgICAgMTA6
IFVwd2FyZCAodG93YXJkIHBvc2l0aXZlIGluZmluaXR5KS4gXG4NCiAgICArLy8vICAgICAgMTE6
IFRydW5jYXRlZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbTI1
Nl9yb3VuZF9wZChWLCBNKSBcDQogICAgKyAgICAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yb3Vu
ZHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYpLCAoTSkpDQogICAgKw0KICAgICsvLy8gUm91bmRz
IHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYXMN
CiAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgYnl0ZSBvcGVyYW5kLiBUaGUgc291cmNlIHZh
bHVlcyBhcmUgcm91bmRlZCB0byBpbnRlZ2VyDQogICAgKy8vLyAgICB2YWx1ZXMgYW5kIHJldHVy
bmVkIGFzIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9f
bTI1NiBfbW0yNTZfcm91bmRfcHMoX19tMjU2IFYsIGNvbnN0IGludCBNKTsNCiAgICArLy8vIFxl
bmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBWDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAg
ICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZp
ZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzc6NF0gYXJl
IHJlc2VydmVkLiBcbg0KICAgICsvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRp
b24gdmFsdWU6IFxuDQogICAgKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1
c2VkLiBcbg0KICAgICsvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQuIFxu
DQogICAgKy8vLyAgICBCaXQgWzJdIGlzIHRoZSByb3VuZGluZyBjb250cm9sIHNvdXJjZTogXG4N
CiAgICArLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEgTS4gXG4NCiAgICArLy8vICAg
ICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcuIFxuDQogICAgKy8vLyAgICBCaXRz
IFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4NCiAgICAr
Ly8vICAgICAgMDA6IE5lYXJlc3QuIFxuDQogICAgKy8vLyAgICAgIDAxOiBEb3dud2FyZCAodG93
YXJkIG5lZ2F0aXZlIGluZmluaXR5KS4gXG4NCiAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93
YXJkIHBvc2l0aXZlIGluZmluaXR5KS4gXG4NCiAgICArLy8vICAgICAgMTE6IFRydW5jYXRlZC4N
CiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tMjU2X3JvdW5kX3BzKFYs
IE0pIFwNCiAgICArICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JvdW5kcHMyNTYoKF9fdjhzZiko
X19tMjU2KShWKSwgKE0pKQ0KICAgICsNCiAgICArLy8vIFJvdW5kcyB1cCB0aGUgdmFsdWVzIHN0
b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gVGhlDQogICAgKy8vLyAg
ICBzb3VyY2UgdmFsdWVzIGFyZSByb3VuZGVkIHVwIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1
cm5lZCBhcyA2NC1iaXQNCiAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMjU2ZCBfbW0yNTZfY2VpbF9w
ZChfX20yNTZkIFYpOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFYNCiAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCB1cCB2YWx1ZXMuDQogICAg
KyNkZWZpbmUgX21tMjU2X2NlaWxfcGQoVikgIF9tbTI1Nl9yb3VuZF9wZCgoViksIF9NTV9GUk9V
TkRfQ0VJTCkNCiAgICArDQogICAgKy8vLyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBp
biBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vICAgIFRoZSBzb3Vy
Y2UgdmFsdWVzIGFyZSByb3VuZGVkIGRvd24gdG8gaW50ZWdlciB2YWx1ZXMgYW5kIHJldHVybmVk
IGFzDQogICAgKy8vLyAgICA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20yNTZkIF9tbTI1Nl9mbG9vcl9wZChf
X20yNTZkIFYpOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFYNCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCBkb3duDQogICAgKy8vLyAgICB2
YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tMjU2X2Zsb29yX3BkKFYpIF9tbTI1Nl9yb3VuZF9wZCgo
ViksIF9NTV9GUk9VTkRfRkxPT1IpDQogICAgKw0KICAgICsvLy8gUm91bmRzIHVwIHRoZSB2YWx1
ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZQ0KICAgICsv
Ly8gICAgc291cmNlIHZhbHVlcyBhcmUgcm91bmRlZCB1cCB0byBpbnRlZ2VyIHZhbHVlcyBhbmQg
cmV0dXJuZWQgYXMNCiAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
XGNvZGUNCiAgICArLy8vIF9fbTI1NiBfbW0yNTZfY2VpbF9wcyhfX20yNTYgVik7DQogICAgKy8v
LyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gVg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4N
CiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgcm91bmRlZCB1cCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tMjU2X2NlaWxfcHMo
VikgIF9tbTI1Nl9yb3VuZF9wcygoViksIF9NTV9GUk9VTkRfQ0VJTCkNCiAgICArDQogICAgKy8v
LyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdLiBUaGUNCiAgICArLy8vICAgIHNvdXJjZSB2YWx1ZXMgYXJlIHJvdW5kZWQgZG93
biB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMNCiAgICArLy8vICAgIGZsb2F0aW5n
LXBvaW50IHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTI1NiBfbW0yNTZfZmxv
b3JfcHMoX19tMjU2IFYpOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFYNCiAgICArLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgZG93biB2YWx1ZXMuDQog
ICAgKyNkZWZpbmUgX21tMjU2X2Zsb29yX3BzKFYpIF9tbTI1Nl9yb3VuZF9wcygoViksIF9NTV9G
Uk9VTkRfRkxPT1IpDQogICAgKw0KICAgICsvKiBMb2dpY2FsICovDQogICAgKy8vLyBQZXJmb3Jt
cyBhIGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQRCA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMg
YmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2FuZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZHUpX19hICYgKF9fdjRk
dSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBv
ZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0
d2lzZSBBTkQgb2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRz
Lg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW0yNTZfYW5kX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQogICAgK3sNCiAgICArICByZXR1
cm4gKF9fbTI1NikoKF9fdjhzdSlfX2EgJiAoX192OHN1KV9fYik7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2Yg
WzQgeCBkb3VibGVdLCB1c2luZw0KICAgICsvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2Yg
dGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkROUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBv
cGVyYW5kLiBUaGUNCiAgICArLy8vICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyB2YWx1ZSBp
cyB1c2VkIGluIHRoZSBiaXR3aXNlIEFORC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0
IHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQogICAgKy8vLyAg
ICB2YWx1ZXMgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBv
ZiB0aGUgZmlyc3QNCiAgICArLy8vICAgIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZSBf
X20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfYW5kbm90X3BkKF9fbTI1NmQg
X19hLCBfX20yNTZkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2ZCkofihfX3Y0
ZHUpX19hICYgKF9fdjRkdSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMg
YSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCB1c2lu
Zw0KICAgICsvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWlu
ZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkROUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuIFRoZQ0KICAgICsv
Ly8gICAgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGJpdHdp
c2UgQU5ELg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFuZC4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgb2YgdGhlIHNlY29u
ZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QNCiAgICArLy8v
ICAgIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbTI1Nl9hbmRub3RfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCiAgICAr
ew0KICAgICsgIHJldHVybiAoX19tMjU2KSh+KF9fdjhzdSlfX2EgJiAoX192OHN1KV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1i
aXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk9SUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBh
cmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgT1Ig
b2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X29y
X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19t
MjU2ZCkoKF9fdjRkdSlfX2EgfCAoX192NGR1KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZs
b2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWT1JQ
UyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICAr
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUNCiAgICArLy8vICAgIHZhbHVl
cyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9vcl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3UpX19hIHwgKF9fdjhzdSlf
X2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIFhPUiBvZiB0
d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJp
dHdpc2UgWE9SIG9mIHRoZQ0KICAgICsvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5k
cy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAg
K19tbTI1Nl94b3JfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIChfX20yNTZkKSgoX192NGR1KV9fYSBeIChfX3Y0ZHUpX19iKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBYT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9y
cyBvZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQog
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9mIHRoZQ0KICAg
ICsvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5s
aW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3hvcl9wcyhfX20yNTYg
X19hLCBfX20yNTYgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3Up
X19hIF4gKF9fdjhzdSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvKiBIb3Jpem9udGFsIGFy
aXRobWV0aWMgKi8NCiAgICArLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWly
cyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0KICAgICsvLy8gICAgMjU2LWJpdCB2ZWN0b3Jz
IG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWSEFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vICAgIFRoZSBob3Jp
em9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGV2ZW4taW5kZXhl
ZA0KICAgICsvLy8gICAgZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vICAg
IFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIG9k
ZC1pbmRleGVkDQogICAgKy8vLyAgICBlbGVtZW50cyBvZiBhIHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YNCiAgICArLy8vICAgIGJvdGggb3BlcmFu
ZHMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW0yNTZfaGFkZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQogICAgK3sNCiAgICAr
ICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfaGFkZHBkMjU2KChfX3Y0ZGYpX19hLCAo
X192NGRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBIb3Jpem9udGFsbHkgYWRkcyB0
aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28NCiAgICArLy8vICAg
IDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsv
Ly8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0
aGUgZWxlbWVudHMgd2l0aA0KICAgICsvLy8gICAgaW5kZXggMCwgMSwgNCwgNSBvZiBhIHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4NCiAgICArLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBh
cmUgcmV0dXJuZWQgaW4gdGhlIGVsZW1lbnRzIHdpdGgNCiAgICArLy8vICAgIGluZGV4IDIsIDMs
IDYsIDcgb2YgYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3Vt
cyBvZg0KICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9f
bTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2hhZGRfcHMoX19tMjU2IF9fYSwg
X19tMjU2IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMy
X2hhZGRwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVz
IGNvbnRhaW5lZCBpbiB0d28NCiAgICArLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRv
dWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhT
VUJQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZm
ZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQ0KICAgICsvLy8g
ICAgZXZlbi1pbmRleGVkIGVsZW1lbnRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyAg
ICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVy
bmVkIGluIHRoZQ0KICAgICsvLy8gICAgb2RkLWluZGV4ZWQgZWxlbWVudHMgb2YgYSB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbA0KICAgICsvLy8gICAgZGlmZmVy
ZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9oc3ViX3BkKF9fbTI1NmQgX19hLCBfX20yNTZk
IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9oc3Vi
cGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250
YWluZWQgaW4gdHdvDQogICAgKy8vLyAgICAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0u
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQUyA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2Vz
IGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlDQogICAgKy8vLyAgICBlbGVt
ZW50cyB3aXRoIGluZGV4IDAsIDEsIDQsIDUgb2YgYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQog
ICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyAg
ICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVy
bmVkIGluIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgd2l0aCBpbmRleCAyLCAzLCA2LCA3IG9m
IGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsDQogICAgKy8vLyAg
ICBkaWZmZXJlbmNlcyBvZiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19t
MjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfaHN1Yl9wcyhfX20yNTYgX19hLCBf
X20yNTYgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJf
aHN1YnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAg
Ky8qIFZlY3RvciBwZXJtdXRhdGlvbnMgKi8NCiAgICArLy8vIENvcGllcyB0aGUgdmFsdWVzIGlu
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGFzIHNwZWNpZmllZA0KICAgICsvLy8g
ICAgYnkgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX2MNCiAgICArLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1
ZXMgYXJlIHRvIGJlDQogICAgKy8vLyAgICBjb3BpZWQuIFxuDQogICAgKy8vLyAgICBCaXQgWzFd
OiBcbg0KICAgICsvLy8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybmVkDQogICAgKy8vLyAgICAgICAgIHZlY3Rv
ci4gXG4NCiAgICArLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBj
b3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCiAgICArLy8vICAgIEJpdCBbNjVdOiBcbg0KICAgICsvLy8gICAgICAwOiBCaXRz
IFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUN
CiAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAxOiBC
aXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9m
IHRoZQ0KICAgICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQg
dmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMx
MjgNCiAgICArX21tX3Blcm11dGV2YXJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGkgX19jKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwZCgo
X192MmRmKV9fYSwgKF9fdjJkaSlfX2MpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29waWVz
IHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lm
aWVkDQogICAgKy8vLyAgICBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQRCA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIF9f
Yw0KICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgc3BlY2lmeWlu
ZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCiAgICArLy8vICAgIGNvcGllZC4gXG4NCiAgICAr
Ly8vICAgIEJpdCBbMV06IFxuDQogICAgKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUgcmV0dXJuZWQNCiAgICArLy8v
ICAgICAgICAgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUNCiAgICArLy8vICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgQml0IFs2NV06IFxuDQogICAgKy8v
LyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAg
Ky8vLyAgICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzEyNzo2NF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
CiAgICArLy8vICAgIEJpdCBbMTI5XTogXG4NCiAgICArLy8vICAgICAgMDogQml0cyBbMTkxOjEy
OF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KICAg
ICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDE6IEJpdHMg
WzI1NToxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBvZiB0
aGUNCiAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgQml0
IFsxOTNdOiBcbg0KICAgICsvLy8gICAgICAwOiBCaXRzIFsxOTE6MTI4XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgIHJl
dHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMTogQml0cyBbMjU1OjE5Ml0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KICAgICsvLy8gICAg
cmV0dXJuZWQgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9f
aW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9wZXJtdXRldmFy
X3BkKF9fbTI1NmQgX19hLCBfX20yNTZpIF9fYykNCiAgICArew0KICAgICsgIHJldHVybiAoX19t
MjU2ZClfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGkp
X19jKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvcGllcyB0aGUgdmFsdWVzIHN0b3JlZCBp
biBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFzDQogICAgKy8vLyAgICBzcGVjaWZp
ZWQgYnkgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19jDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBi
ZQ0KICAgICsvLy8gICAgY29waWVkLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTowXTogXG4NCiAg
ICArLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBi
aXRzIFszMTowXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
CiAgICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMzE6MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29w
aWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KICAgICsvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICBCaXRzIFszMzozMl06IFxuDQogICAgKy8vLyAgICAg
IDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJd
IG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8g
ICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2
MzozMl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAg
Ky8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzYzOjMyXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
CiAgICArLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCiAgICArLy8vICAgIEJpdHMgWzY1OjY0XTogXG4NCiAgICArLy8vICAgICAgMDA6IEJp
dHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhl
DQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDAx
OiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBv
ZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAg
ICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6
NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsv
Ly8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbOTU6NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0K
ICAgICsvLy8gICAgQml0cyBbOTc6OTZdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6
MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAg
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDAxOiBCaXRz
IFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhl
DQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEw
OiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0g
b2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAg
ICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6OTZdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBjb3BpZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9G
Tl9BVFRSUzEyOA0KICAgICtfbW1fcGVybXV0ZXZhcl9wcyhfX20xMjggX19hLCBfX20xMjhpIF9f
YykNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2
YXJwcygoX192NHNmKV9fYSwgKF9fdjRzaSlfX2MpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8g
Q29waWVzIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gYXMNCiAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8v
LyBccGFyYW0gX19jDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFu
ZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KICAgICsvLy8gICAgY29waWVk
LiBcbg0KICAgICsvLy8gICAgQml0cyBbMTowXTogXG4NCiAgICArLy8vICAgICAgMDA6IEJpdHMg
WzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCiAg
ICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMDE6IEJp
dHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhl
DQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEw
OiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9m
IHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAg
ICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6
MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8v
LyAgICBCaXRzIFszMzozMl06IFxuDQogICAgKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KICAgICsvLy8gICAg
ICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAwMTogQml0cyBbNjM6MzJd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQogICAgKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5
NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCiAg
ICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMTE6IEJp
dHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0
aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzY1OjY0XTogXG4NCiAgICArLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCiAgICArLy8vICAgICAg
ICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KICAgICsvLy8g
ICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAxMTogQml0cyBbMTI3
Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KICAg
ICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgQml0cyBbOTc6
OTZdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KICAgICsv
Ly8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTI5OjEy
OF06IFxuDQogICAgKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1
cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTky
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQogICAg
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRz
IFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2Yg
dGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICBC
aXRzIFsxNjE6MTYwXTogXG4NCiAgICArLy8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCiAgICArLy8vICAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMDE6IEJpdHMgWzE5MTox
NjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCiAg
ICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMTA6IEJp
dHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBv
ZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAg
ICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
OTE6MTYwXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAg
ICArLy8vICAgIEJpdHMgWzE5MzoxOTJdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMTU5
OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0K
ICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAwMTog
Qml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJd
IG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8g
ICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzIyMzoxOTJdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0K
ICAgICsvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KICAgICsvLy8gICAgQml0cyBbMjI1OjIyNF06IFxuDQogICAgKy8vLyAgICAgIDAw
OiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIy
NF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8v
LyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbMjU1OjIyNF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lu
bGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9wZXJtdXRldmFyX3Bz
KF9fbTI1NiBfX2EsIF9fbTI1NmkgX19jKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTYp
X19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNpKV9fYyk7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb3BpZXMgdGhlIHZhbHVlcyBpbiBhIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSBhcyBzcGVjaWZpZWQNCiAgICArLy8vICAgIGJ5IHRoZSBp
bW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4
ZCBfbW1fcGVybXV0ZV9wZChfX20xMjhkIEEsIGNvbnN0IGludCBDKTsNCiAgICArLy8vIFxlbmRj
b2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUEVSTUlMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gQQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAg
Ky8vLyBccGFyYW0gQw0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBz
cGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KICAgICsvLy8gICAgY29waWVkLiBc
bg0KICAgICsvLy8gICAgQml0IFswXTogXG4NCiAgICArLy8vICAgICAgMDogQml0cyBbNjM6MF0g
b2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSByZXR1cm5lZA0K
ICAgICsvLy8gICAgICAgICB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDE6IEJpdHMgWzEyNzo2
NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZQ0KICAgICsv
Ly8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICBCaXQgWzFdOiBcbg0K
ICAgICsvLy8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMTI3OjY0XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KICAgICsvLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGll
ZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0
b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbV9wZXJtdXRlX3Bk
KEEsIEMpIFwNCiAgICArICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92cGVybWlscGQoKF9fdjJk
ZikoX19tMTI4ZCkoQSksIChpbnQpKEMpKQ0KICAgICsNCiAgICArLy8vIENvcGllcyB0aGUgdmFs
dWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFzIHNwZWNpZmllZCBieQ0K
ICAgICsvLy8gICAgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2Rl
DQogICAgKy8vLyBfX20yNTZkIF9tbTI1Nl9wZXJtdXRlX3BkKF9fbTI1NmQgQSwgY29uc3QgaW50
IEMpOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQRCA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBBDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBDDQogICAgKy8vLyAgICBBbiBpbW1lZGlh
dGUgaW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQog
ICAgKy8vLyAgICBjb3BpZWQuIFxuDQogICAgKy8vLyAgICBCaXQgWzBdOiBcbg0KICAgICsvLy8g
ICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6
MF0gb2YgdGhlIHJldHVybmVkDQogICAgKy8vLyAgICAgICAgIHZlY3Rvci4gXG4NCiAgICArLy8v
ICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
NjM6MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICAr
Ly8vICAgIEJpdCBbMV06IFxuDQogICAgKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDE6IEJpdHMgWzEyNzo2NF0gb2Yg
dGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQogICAgKy8vLyAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgIEJpdCBbMl06IFxuDQogICAg
Ky8vLyAgICAgIDA6IEJpdHMgWzE5MToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBi
aXRzIFsxOTE6MTI4XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KICAgICsvLy8gICAgICAxOiBCaXRzIFsyNTU6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCiAgICArLy8vICAgIEJpdCBbM106IFxuDQogICAgKy8vLyAgICAgIDA6IEJpdHMg
WzE5MToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0
aGUNCiAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAx
OiBCaXRzIFsyNTU6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5
Ml0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNv
cGllZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tMjU2X3Blcm11dGVfcGQoQSwgQykgXA0KICAg
ICsgIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxwZDI1NigoX192NGRmKShfX20yNTZk
KShBKSwgKGludCkoQykpDQogICAgKw0KICAgICsvLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBhcyBzcGVjaWZpZWQgYnkNCiAgICArLy8vICAg
IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8g
X19tMTI4IF9tbV9wZXJtdXRlX3BzKF9fbTEyOCBBLCBjb25zdCBpbnQgQyk7DQogICAgKy8vLyBc
ZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBFUk1JTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQog
ICAgKy8vLyBccGFyYW0gQw0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFu
ZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KICAgICsvLy8gICAgY29waWVk
LiBcbg0KICAgICsvLy8gICAgQml0cyBbMTowXTogXG4NCiAgICArLy8vICAgICAgMDA6IEJpdHMg
WzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCiAg
ICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMDE6IEJp
dHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhl
DQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEw
OiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9m
IHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAg
ICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6
MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8v
LyAgICBCaXRzIFszOjJdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCiAgICArLy8vICAgICAg
ICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KICAgICsvLy8g
ICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAxMDogQml0cyBbOTU6
NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQogICAg
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRz
IFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhl
DQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICBCaXRz
IFs1OjRdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQogICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQogICAgKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICBCaXRzIFs3OjZdOiBc
bg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0
b3IuIFxuDQogICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KICAgICsvLy8gICAg
ICAgICAgcmV0dXJuZWQgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KICAgICsjZGVm
aW5lIF9tbV9wZXJtdXRlX3BzKEEsIEMpIFwNCiAgICArICAoX19tMTI4KV9fYnVpbHRpbl9pYTMy
X3ZwZXJtaWxwcygoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShDKSkNCiAgICArDQogICAgKy8v
LyBDb3BpZXMgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGFz
IHNwZWNpZmllZCBieQ0KICAgICsvLy8gICAgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQu
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20yNTYgX21tMjU2X3Blcm11dGVfcHMoX19tMjU2
IEEsIGNvbnN0IGludCBDKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gQQ0KICAgICsvLy8gICAgQSAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBDDQogICAgKy8vLyAg
ICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMg
YXJlIHRvIGJlDQogICAgKy8vLyAgICBjb3BpZWQuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxOjBd
OiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29w
aWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KICAgICsvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1
cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06IFxuDQogICAgKy8v
LyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
NjM6MzJdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAg
ICsvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBi
aXRzIFs2MzozMl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCiAgICArLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF06IFxuDQogICAgKy8vLyAgICAgIDAw
OiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9m
IHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAg
ICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2
NF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8v
LyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
Wzk1OjY0XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAg
ICArLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRv
IGJpdHMgWzk1OjY0XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCiAgICArLy8vICAgIEJpdHMgWzc6Nl06IFxuDQogICAgKy8vLyAgICAgIDAwOiBCaXRzIFsz
MTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCiAg
ICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAgMDE6IEJp
dHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0
aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAg
MTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2
XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8v
ICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzEyNzo5Nl0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQog
ICAgKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMTU5OjEy
OF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KICAg
ICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAwMTogQml0
cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9m
IHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAg
ICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1
OToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KICAg
ICsvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRv
IGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9y
LiBcbg0KICAgICsvLy8gICAgQml0cyBbMzoyXTogXG4NCiAgICArLy8vICAgICAgMDA6IEJpdHMg
WzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0
aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICArLy8vICAgICAg
MDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6
MTYwXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCiAgICAr
Ly8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBi
aXRzIFsxOTE6MTYwXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCiAgICArLy8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF06IFxuDQogICAgKy8vLyAgICAgIDAw
OiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5
Ml0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8v
LyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbMjIzOjE5Ml0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQogICAgKy8vLyAgICBCaXRzIFs3OjZdOiBcbg0KICAgICsvLy8g
ICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzI1NToyMjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0K
ICAgICsvLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KICAgICsvLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KICAgICsvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KICAgICsvLy8gICAg
ICAgICAgcmV0dXJuZWQgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KICAgICsjZGVm
aW5lIF9tbTI1Nl9wZXJtdXRlX3BzKEEsIEMpIFwNCiAgICArICAoX19tMjU2KV9fYnVpbHRpbl9p
YTMyX3ZwZXJtaWxwczI1NigoX192OHNmKShfX20yNTYpKEEpLCAoaW50KShDKSkNCiAgICArDQog
ICAgKy8vLyBQZXJtdXRlcyAxMjgtYml0IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0
aGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9f
bTI1NmQgX21tMjU2X3Blcm11dGUyZjEyOF9wZChfX20yNTZkIFYxLCBfX20yNTZkIFYyLCBjb25z
dCBpbnQgTSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk0yRjEyOCA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBWMQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFyYW0gVjINCiAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGUuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsv
Ly8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFs
dWVzIGFyZSB0byBiZQ0KICAgICsvLy8gICAgcGVybXV0ZWQuIFxuDQogICAgKy8vLyAgICBCaXRz
IFsxOjBdOiBcbg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEg
VjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQogICAgKy8vLyAgICAgICAgICBk
ZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgICAgMDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJh
bmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQogICAgKy8vLyAgICAg
ICAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgICAgMTA6IEJpdHMgWzEyNzowXSBvZiBv
cGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KICAgICsvLy8g
ICAgICAgICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MTI4
XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KICAg
ICsvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFs1OjRdOiBc
bg0KICAgICsvLy8gICAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNv
cGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCiAgICArLy8vICAgICAgICAgIGRlc3RpbmF0
aW9uLiBcbg0KICAgICsvLy8gICAgICAwMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBW
MSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgICAgICAg
ZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFu
ZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAg
ICAgICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MTI4XSBv
ZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQogICAg
Ky8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQogICAg
KyNkZWZpbmUgX21tMjU2X3Blcm11dGUyZjEyOF9wZChWMSwgVjIsIE0pIFwNCiAgICArICAoX19t
MjU2ZClfX2J1aWx0aW5faWEzMl92cGVybTJmMTI4X3BkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYx
KSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9f
djRkZikoX19tMjU2ZCkoVjIpLCAoaW50KShNKSkNCiAgICArDQogICAgKy8vLyBQZXJtdXRlcyAx
MjgtYml0IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQogICAg
Ky8vLyAgICBbOCB4IGZsb2F0XSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdl
ciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMjU2IF9tbTI1Nl9wZXJtdXRl
MmYxMjhfcHMoX19tMjU2IFYxLCBfX20yNTYgVjIsIGNvbnN0IGludCBNKTsNCiAgICArLy8vIFxl
bmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUEVSTTJGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIFYxDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
ICAgICsvLy8gXHBhcmFtIFYyDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRl
Z2VyIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCiAgICArLy8v
ICAgIHBlcm11dGVkLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTowXTogXG4NCiAgICArLy8vICAg
IDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEy
NzowXSBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAgMDE6
IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6
MF0gb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIDEwOiBC
aXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBv
ZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAgMTE6IEJpdHMg
WzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2Yg
dGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF06
IFxuDQogICAgKy8vLyAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNv
cGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBc
bg0KICAgICsvLy8gICAgMDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNv
cGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBc
bg0KICAgICsvLy8gICAgMTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4N
CiAgICArLy8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29waWVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJmMTI4X3Bz
KFYxLCBWMiwgTSkgXA0KICAgICsgIChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm0yZjEyOF9w
czI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKFYyKSwgKGludCkoTSkpDQogICAg
Kw0KICAgICsvLy8gUGVybXV0ZXMgMTI4LWJpdCBkYXRhIHZhbHVlcyBzdG9yZWQgaW4gdHdvIDI1
Ni1iaXQgaW50ZWdlciB2ZWN0b3JzLA0KICAgICsvLy8gICAgYXMgc3BlY2lmaWVkIGJ5IHRoZSBp
bW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMjU2
aSBfbW0yNTZfcGVybXV0ZTJmMTI4X3NpMjU2KF9fbTI1NmkgVjEsIF9fbTI1NmkgVjIsIGNvbnN0
IGludCBNKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTTJGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFYxDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50
ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gVjINCiAgICArLy8vICAgIEEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiBpbW1lZGlh
dGUgaW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNv
cGllZC4NCiAgICArLy8vICAgIEJpdHMgWzE6MF06IFxuDQogICAgKy8vLyAgICAwMDogQml0cyBb
MTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhl
DQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIDAxOiBCaXRzIFsyNTU6
MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0K
ICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICAxMDogQml0cyBbMTI3OjBd
IG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQogICAg
Ky8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBv
ZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KICAgICsv
Ly8gICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0KICAgICsv
Ly8gICAgMDA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0
cyBbMjU1OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8v
ICAgIDAxOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0
cyBbMjU1OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8v
ICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMg
WzI1NToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAg
ICAxMTogQml0cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMg
WzI1NToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8vLyBccmV0
dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVl
cy4NCiAgICArI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXA0K
ICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwZXJtMmYxMjhfc2kyNTYoKF9fdjhzaSko
X19tMjU2aSkoVjEpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoX192OHNpKShfX20yNTZpKShWMiksIChpbnQpKE0pKQ0KICAgICsNCiAgICArLyog
VmVjdG9yIEJsZW5kICovDQogICAgKy8vLyBNZXJnZXMgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24g
ZGF0YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCiAgICArLy8vICAgIHR3byAyNTYt
Yml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0
ZQ0KICAgICsvLy8gICAgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8g
X19tMjU2ZCBfbW0yNTZfYmxlbmRfcGQoX19tMjU2ZCBWMSwgX19tMjU2ZCBWMiwgY29uc3QgaW50
IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIFYxDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBWMg0KICAgICsvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAg
QW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgWzM6MF0gc3BlY2lm
eWluZyBob3cgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBv
c2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUNCiAgICArLy8vICAgIGlu
ZGV4IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3Bv
bmRpbmcgNjQtYml0DQogICAgKy8vLyAgICBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjEgaXMgY29w
aWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24u
IFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgZWxlbWVudCBp
bg0KICAgICsvLy8gICAgb3BlcmFuZCBcYSBWMiBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRp
b24gaW4gdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCiAgICArI2Rl
ZmluZSBfbW0yNTZfYmxlbmRfcGQoVjEsIFYyLCBNKSBcDQogICAgKyAgKF9fbTI1NmQpX19idWls
dGluX2lhMzJfYmxlbmRwZDI1NigoX192NGRmKShfX20yNTZkKShWMSksIFwNCiAgICArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFYyKSwgKGlu
dCkoTSkpDQogICAgKw0KICAgICsvLy8gTWVyZ2VzIDMyLWJpdCBzaW5nbGUtcHJlY2lzaW9uIGRh
dGEgdmFsdWVzIHN0b3JlZCBpbiBlaXRoZXIgb2YgdGhlDQogICAgKy8vLyAgICB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZQ0K
ICAgICsvLy8gICAgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19t
MjU2IF9tbTI1Nl9ibGVuZF9wcyhfX20yNTYgVjEsIF9fbTI1NiBWMiwgY29uc3QgaW50IE0pOw0K
ICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIFYxDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIFYyDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGltbWVk
aWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFs3OjBdIHNwZWNpZnlpbmcgaG93
IHRoZQ0KICAgICsvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBv
ZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQogICAgKy8vLyAgICBpbmRleCBvZiBh
IGNvcGllZCB2YWx1ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDMy
LWJpdA0KICAgICsvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0
aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBXaGVuIGEg
bWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4NCiAgICAr
Ly8vICAgIG9wZXJhbmQgXGEgVjIgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRo
ZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW0y
NTZfYmxlbmRfcHMoVjEsIFYyLCBNKSBcDQogICAgKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl9i
bGVuZHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQogICAgKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVjIpLCAoaW50KShNKSkNCiAgICAr
DQogICAgKy8vLyBNZXJnZXMgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gZGF0YSB2YWx1ZXMgc3Rv
cmVkIGluIGVpdGhlciBvZiB0aGUNCiAgICArLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2Yg
WzQgeCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIDI1Ni1iaXQgdmVjdG9yDQogICAgKy8v
LyAgICBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZCTEVORFZQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0uDQogICAgKy8vLyBccGFyYW0gX19jDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIDI1NSwgMTkxLCAxMjcsIGFuZCA2MyBzcGVjaWZ5aW5n
DQogICAgKy8vLyAgICBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRp
b24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzDQogICAgKy8vLyAgICB0byB0aGUgbW9zdCBz
aWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0
aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBc
YSBfX2EgaXMgY29waWVkIHRvIHRoZSBzYW1lDQogICAgKy8vLyAgICBwb3NpdGlvbiBpbiB0aGUg
ZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZw0KICAg
ICsvLy8gICAgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX2IgaXMgY29waWVkIHRvIHRo
ZSBzYW1lIHBvc2l0aW9uIGluIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8v
LyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb3BpZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tMjU2X2JsZW5kdl9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2Is
IF9fbTI1NmQgX19jKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9p
YTMyX2JsZW5kdnBkMjU2KA0KICAgICsgICAgKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iLCAoX192
NGRmKV9fYyk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBNZXJnZXMgMzItYml0IHNpbmdsZS1w
cmVjaXNpb24gZGF0YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCiAgICArLy8vICAg
IHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIGFzIHNwZWNpZmllZCBieSB0aGUg
MjU2LWJpdCB2ZWN0b3INCiAgICArLy8vICAgIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19jDQogICAgKy8v
LyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIDI1NSwgMjIzLCAx
OTEsIDE1OSwgMTI3LCA5NSwgNjMsDQogICAgKy8vLyAgICBhbmQgMzEgc3BlY2lmeWluZyBob3cg
dGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlDQogICAgKy8v
LyAgICBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2Yg
YSBjb3BpZWQgdmFsdWUuIFdoZW4NCiAgICArLy8vICAgIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNv
cnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX2EgaXMNCiAgICArLy8v
ICAgIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uIFdoZW4g
YSBtYXNrIGJpdCBpcyAxLCB0aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgMzItYml0IGVs
ZW1lbnQgaW4gb3BlcmFuZCBcYSBfX2IgaXMgY29waWVkIHRvIHRoZSBzYW1lDQogICAgKy8vLyAg
ICBwb3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQog
ICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1
Nl9ibGVuZHZfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYiwgX19tMjU2IF9fYykNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2JsZW5kdnBzMjU2KA0KICAgICsg
ICAgKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iLCAoX192OHNmKV9fYyk7DQogICAgK30NCiAgICAr
DQogICAgKy8qIFZlY3RvciBEb3QgUHJvZHVjdCAqLw0KICAgICsvLy8gQ29tcHV0ZXMgdHdvIGRv
dCBwcm9kdWN0cyBpbiBwYXJhbGxlbCwgdXNpbmcgdGhlIGxvd2VyIGFuZCB1cHBlcg0KICAgICsv
Ly8gICAgaGFsdmVzIG9mIHR3byBbOCB4IGZsb2F0XSB2ZWN0b3JzIGFzIGlucHV0IHRvIHRoZSB0
d28gY29tcHV0YXRpb25zLCBhbmQNCiAgICArLy8vICAgIHJldHVybmluZyB0aGUgdHdvIGRvdCBw
cm9kdWN0cyBpbiB0aGUgbG93ZXIgYW5kIHVwcGVyIGhhbHZlcyBvZiB0aGUNCiAgICArLy8vICAg
IFs4IHggZmxvYXRdIHJlc3VsdC4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgaW1tZWRpYXRl
IGludGVnZXIgb3BlcmFuZCBjb250cm9scyB3aGljaCBpbnB1dCBlbGVtZW50cyB3aWxsDQogICAg
Ky8vLyAgICBjb250cmlidXRlIHRvIHRoZSBkb3QgcHJvZHVjdCwgYW5kIHdoZXJlIHRoZSBmaW5h
bCByZXN1bHRzIGFyZSByZXR1cm5lZC4NCiAgICArLy8vICAgIEluIGdlbmVyYWwsIGZvciBlYWNo
IGRvdCBwcm9kdWN0LCB0aGUgZm91ciBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZQ0KICAg
ICsvLy8gICAgaW5wdXQgdmVjdG9ycyBhcmUgbXVsdGlwbGllZDsgdGhlIGZpcnN0IHR3byBhbmQg
c2Vjb25kIHR3byBwcm9kdWN0cyBhcmUNCiAgICArLy8vICAgIHN1bW1lZCwgdGhlbiB0aGUgdHdv
IHN1bXMgYXJlIGFkZGVkIHRvIGZvcm0gdGhlIGZpbmFsIHJlc3VsdC4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUN
CiAgICArLy8vIF9fbTI1NiBfbW0yNTZfZHBfcHMoX19tMjU2IFYxLCBfX20yNTYgVjIsIGNvbnN0
IGludCBNKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQUyA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBWMQ0KICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gdmFsdWVzLCB0cmVhdGVkIGFzIHR3byBbNCB4IGZsb2F0XSB2ZWN0b3JzLg0KICAgICsv
Ly8gXHBhcmFtIFYyDQogICAgKy8vLyAgICBBIHZlY3RvciBvZiBbOCB4IGZsb2F0XSB2YWx1ZXMs
IHRyZWF0ZWQgYXMgdHdvIFs0IHggZmxvYXRdIHZlY3RvcnMuDQogICAgKy8vLyBccGFyYW0gTQ0K
ICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgYXJndW1lbnQuIEJpdHMgWzc6NF0gZGV0
ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mDQogICAgKy8vLyAgICB0aGUgaW5wdXQgdmVjdG9ycyBh
cmUgdXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdA0KICAgICsv
Ly8gICAgZWxlbWVudCBhbmQgYml0IFs3XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVs
ZW1lbnQgb2YgZWFjaCBbNCB4DQogICAgKy8vLyAgICBmbG9hdF0gc3VidmVjdG9yLiBJZiBhIGJp
dCBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGZyb20gdGhlDQogICAgKy8vLyAg
ICB0d28gaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCBhcyBhbiBpbnB1dCBmb3IgZG90IHByb2R1Y3Q7
IG90aGVyd2lzZSB0aGF0DQogICAgKy8vLyAgICBpbnB1dCBpcyB0cmVhdGVkIGFzIHplcm8uIEJp
dHMgWzM6MF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mIHRoZQ0KICAgICsvLy8gICAgcmVz
dWx0IHdpbGwgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGZpbmFsIGRvdCBwcm9kdWN0LCB3aXRoIGJp
dCBbMF0NCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdCBlbGVtZW50IGFu
ZCBiaXQgWzNdIGNvcnJlc3BvbmRpbmcgdG8gdGhlDQogICAgKy8vLyAgICBoaWdoZXN0IGVsZW1l
bnQgb2YgZWFjaCBbNCB4IGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGRv
dA0KICAgICsvLy8gICAgcHJvZHVjdCBpcyByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50OyBvdGhlcndpc2UgdGhhdCBlbGVtZW50DQogICAgKy8vLyAgICBpcyBzZXQgdG8gemVy
by4gVGhlIGJpdG1hc2sgaXMgYXBwbGllZCBpbiB0aGUgc2FtZSB3YXkgdG8gZWFjaCBvZiB0aGUN
CiAgICArLy8vICAgIHR3byBwYXJhbGxlbCBkb3QgcHJvZHVjdCBjb21wdXRhdGlvbnMuDQogICAg
Ky8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIHR3byBkb3QgcHJvZHVjdHMuDQogICAgKyNkZWZpbmUgX21tMjU2X2RwX3BzKFYxLCBWMiwg
TSkgXA0KICAgICsgIChfX20yNTYpX19idWlsdGluX2lhMzJfZHBwczI1NigoX192OHNmKShfX20y
NTYpKFYxKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNm
KShfX20yNTYpKFYyKSwgKE0pKQ0KICAgICsNCiAgICArLyogVmVjdG9yIHNodWZmbGUgKi8NCiAg
ICArLy8vIFNlbGVjdHMgOCBmbG9hdCB2YWx1ZXMgZnJvbSB0aGUgMjU2LWJpdCBvcGVyYW5kcyBv
ZiBbOCB4IGZsb2F0XSwgYXMNCiAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRl
IHZhbHVlIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgVGhlIGZvdXIgc2VsZWN0ZWQg
ZWxlbWVudHMgaW4gZWFjaCBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uDQog
ICAgKy8vLyAgICBhY2NvcmRpbmcgdG8gdGhlIGJpdHMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlh
dGUgb3BlcmFuZC4gVGhlIHNlbGVjdGVkDQogICAgKy8vLyAgICBlbGVtZW50cyBmcm9tIHRoZSBm
aXJzdCAyNTYtYml0IG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBhbmQNCiAgICAr
Ly8vICAgIGJpdHMgWzE5MToxMjhdIG9mIHRoZSBkZXN0aW5hdGlvbiwgYW5kIHRoZSBzZWxlY3Rl
ZCBlbGVtZW50cyBmcm9tIHRoZQ0KICAgICsvLy8gICAgc2Vjb25kIDI1Ni1iaXQgb3BlcmFuZCBh
cmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMgWzI1NToxOTJdIG9mDQogICAgKy8v
LyAgICB0aGUgZGVzdGluYXRpb24uIEZvciBleGFtcGxlLCBpZiBiaXRzIFs3OjBdIG9mIHRoZSBp
bW1lZGlhdGUgb3BlcmFuZA0KICAgICsvLy8gICAgY29udGFpbiBhIHZhbHVlIG9mIDB4RkYsIHRo
ZSAyNTYtYml0IGRlc3RpbmF0aW9uIHZlY3RvciB3b3VsZCBjb250YWluIHRoZQ0KICAgICsvLy8g
ICAgZm9sbG93aW5nIHZhbHVlczogYls3XSwgYls3XSwgYVs3XSwgYVs3XSwgYlszXSwgYlszXSwg
YVszXSwgYVszXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTI1NiBfbW0yNTZfc2h1ZmZs
ZV9wcyhfX20yNTYgYSwgX19tMjU2IGIsIGNvbnN0IGludCBtYXNrKTsNCiAgICArLy8vIFxlbmRj
b2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWU0hVRlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IGENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZSBmb3Vy
IHNlbGVjdGVkIGVsZW1lbnRzIGluIHRoaXMNCiAgICArLy8vICAgIG9wZXJhbmQgYXJlIGNvcGll
ZCB0byBiaXRzIFs2MzowXSBhbmQgYml0cyBbMTkxOjEyOF0gaW4gdGhlIGRlc3RpbmF0aW9uLA0K
ICAgICsvLy8gICAgYWNjb3JkaW5nIHRvIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRp
YXRlIG9wZXJhbmQuDQogICAgKy8vLyBccGFyYW0gYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZl
Y3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlIGZvdXIgc2VsZWN0ZWQgZWxlbWVudHMgaW4gdGhpcw0K
ICAgICsvLy8gICAgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMg
WzI1NToxOTJdIGluIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24sIGFjY29yZGluZyB0byB0
aGUgYml0cyBzcGVjaWZpZWQgaW4gdGhlIGltbWVkaWF0ZSBvcGVyYW5kLg0KICAgICsvLy8gXHBh
cmFtIG1hc2sNCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgt
Yml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8NCiAgICArLy8vICAgIGNvcHkg
ZnJvbSBcYSBhIGFuZCBcYSBiIFxuLg0KICAgICsvLy8gICAgQml0cyBbMzowXSBzcGVjaWZ5IHRo
ZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBhLiBcbg0KICAgICsvLy8gICAgQml0cyBb
Nzo0XSBzcGVjaWZ5IHRoZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBiLiBcbg0KICAg
ICsvLy8gICAgVGhlIGRlc3RpbmF0aW9ucyB3aXRoaW4gdGhlIDI1Ni1iaXQgZGVzdGluYXRpb24g
YXJlIGFzc2lnbmVkIHZhbHVlcyBhcw0KICAgICsvLy8gICAgZm9sbG93cywgYWNjb3JkaW5nIHRv
IHRoZSBiaXQgdmFsdWUgYXNzaWdubWVudHMgZGVzY3JpYmVkIGJlbG93OiBcbg0KICAgICsvLy8g
ICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIGFu
ZCBbMTU5OjEyOF0gaW4gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8v
ICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs2MzozMl0g
YW5kIFsxOTE6MTYwXSBpbiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KICAgICsv
Ly8gICAgQml0cyBbNTo0XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzk1OjY0
XSBhbmQgWzIyMzoxOTJdIGluIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAg
Ky8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3
Ojk2XSBhbmQgWzI1NToyMjRdIGluDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uIFxuDQog
ICAgKy8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuDQogICAgKy8vLyAgICAwMDogQml0
cyBbMzE6MF0gYW5kIFsxNTk6MTI4XSBhcmUgY29waWVkIGZyb20gdGhlIHNlbGVjdGVkIG9wZXJh
bmQuIFxuDQogICAgKy8vLyAgICAwMTogQml0cyBbNjM6MzJdIGFuZCBbMTkxOjE2MF0gYXJlIGNv
cGllZCBmcm9tIHRoZSBzZWxlY3RlZCBvcGVyYW5kLiBcbg0KICAgICsvLy8gICAgMTA6IEJpdHMg
Wzk1OjY0XSBhbmQgWzIyMzoxOTJdIGFyZSBjb3BpZWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3BlcmFu
ZC4gXG4NCiAgICArLy8vICAgIDExOiBCaXRzIFsxMjc6OTZdIGFuZCBbMjU1OjIyNF0gYXJlIGNv
cGllZCBmcm9tIHRoZSBzZWxlY3RlZCBvcGVyYW5kLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMu
DQogICAgKyNkZWZpbmUgX21tMjU2X3NodWZmbGVfcHMoYSwgYiwgbWFzaykgXA0KICAgICsgIChf
X20yNTYpX19idWlsdGluX2lhMzJfc2h1ZnBzMjU2KChfX3Y4c2YpKF9fbTI1NikoYSksIFwNCiAg
ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKGIp
LCAoaW50KShtYXNrKSkNCiAgICArDQogICAgKy8vLyBTZWxlY3RzIGZvdXIgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgZnJvbSB0aGUgMjU2LWJpdCBvcGVyYW5kcyBvZg0KICAgICsvLy8gICAgWzQg
eCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSB2YWx1ZSBvcGVyYW5kLg0K
ICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBzZWxlY3RlZCBlbGVtZW50cyBmcm9tIHRoZSBmaXJz
dCAyNTYtYml0IG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRzDQogICAgKy8vLyAgICBbNjM6MF0g
YW5kIGJpdHMgWzE5MToxMjhdIGluIHRoZSBkZXN0aW5hdGlvbiwgYW5kIHRoZSBzZWxlY3RlZCBl
bGVtZW50cw0KICAgICsvLy8gICAgZnJvbSB0aGUgc2Vjb25kIDI1Ni1iaXQgb3BlcmFuZCBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMNCiAgICArLy8vICAgIFsyNTU6MTkyXSBp
biB0aGUgZGVzdGluYXRpb24uIEZvciBleGFtcGxlLCBpZiBiaXRzIFszOjBdIG9mIHRoZSBpbW1l
ZGlhdGUNCiAgICArLy8vICAgIG9wZXJhbmQgY29udGFpbiBhIHZhbHVlIG9mIDB4RiwgdGhlIDI1
Ni1iaXQgZGVzdGluYXRpb24gdmVjdG9yIHdvdWxkDQogICAgKy8vLyAgICBjb250YWluIHRoZSBm
b2xsb3dpbmcgdmFsdWVzOiBiWzNdLCBhWzNdLCBiWzFdLCBhWzFdLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0K
ICAgICsvLy8gX19tMjU2ZCBfbW0yNTZfc2h1ZmZsZV9wZChfX20yNTZkIGEsIF9fbTI1NmQgYiwg
Y29uc3QgaW50IG1hc2spOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTSFVGUEQgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gYQ0KICAgICsvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFyYW0gYg0KICAgICsvLy8gICAg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFyYW0gbWFzaw0K
ICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgOC1iaXQgdmFsdWVzIHNw
ZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8NCiAgICArLy8vICAgIGNvcHkgZnJvbSBcYSBhIGFu
ZCBcYSBiOiBcbg0KICAgICsvLy8gICAgQml0IFswXT0wOiBCaXRzIFs2MzowXSBhcmUgY29waWVk
IGZyb20gXGEgYSB0byBiaXRzIFs2MzowXSBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9u
LiBcbg0KICAgICsvLy8gICAgQml0IFswXT0xOiBCaXRzIFsxMjc6NjRdIGFyZSBjb3BpZWQgZnJv
bSBcYSBhIHRvIGJpdHMgWzYzOjBdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxu
DQogICAgKy8vLyAgICBCaXQgWzFdPTA6IEJpdHMgWzYzOjBdIGFyZSBjb3BpZWQgZnJvbSBcYSBi
IHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAg
ICArLy8vICAgIEJpdCBbMV09MTogQml0cyBbMTI3OjY0XSBhcmUgY29waWVkIGZyb20gXGEgYiB0
byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAg
Ky8vLyAgICBCaXQgWzJdPTA6IEJpdHMgWzE5MToxMjhdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRv
IGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAg
Ky8vLyAgICBCaXQgWzJdPTE6IEJpdHMgWzI1NToxOTJdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRv
IGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAg
Ky8vLyAgICBCaXQgWzNdPTA6IEJpdHMgWzE5MToxMjhdIGFyZSBjb3BpZWQgZnJvbSBcYSBiIHRv
IGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAg
Ky8vLyAgICBCaXQgWzNdPTE6IEJpdHMgWzI1NToxOTJdIGFyZSBjb3BpZWQgZnJvbSBcYSBiIHRv
IGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8v
LyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBzaHVmZmxlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tMjU2X3NodWZmbGVfcGQoYSwgYiwg
bWFzaykgXA0KICAgICsgIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3NodWZwZDI1NigoX192NGRm
KShfX20yNTZkKShhKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoX192NGRmKShfX20yNTZkKShiKSwgKGludCkobWFzaykpDQogICAgKw0KICAgICsvKiBDb21w
YXJlICovDQogICAgKyNkZWZpbmUgX0NNUF9FUV9PUSAgICAweDAwIC8qIEVxdWFsIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX0xUX09TICAgIDB4MDEgLyog
TGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KICAgICsjZGVmaW5lIF9DTVBfTEVf
T1MgICAgMHgwMiAvKiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgICov
DQogICAgKyNkZWZpbmUgX0NNUF9VTk9SRF9RICAweDAzIC8qIFVub3JkZXJlZCAobm9uLXNpZ25h
bGluZykgICovDQogICAgKyNkZWZpbmUgX0NNUF9ORVFfVVEgICAweDA0IC8qIE5vdC1lcXVhbCAo
dW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX05MVF9VUyAg
IDB4MDUgLyogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KICAgICsj
ZGVmaW5lIF9DTVBfTkxFX1VTICAgMHgwNiAvKiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9y
ZGVyZWQsIHNpZ25hbGluZykgICovDQogICAgKyNkZWZpbmUgX0NNUF9PUkRfUSAgICAweDA3IC8q
IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpICAgKi8NCiAgICArI2RlZmluZSBfQ01QX0VRX1VRICAg
IDB4MDggLyogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQogICAgKyNkZWZp
bmUgX0NNUF9OR0VfVVMgICAweDA5IC8qIE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3Jk
ZXJlZCwgc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX05HVF9VUyAgIDB4MGEgLyog
Tm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KICAgICsjZGVmaW5l
IF9DTVBfRkFMU0VfT1EgMHgwYiAvKiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICov
DQogICAgKyNkZWZpbmUgX0NNUF9ORVFfT1EgICAweDBjIC8qIE5vdC1lcXVhbCAob3JkZXJlZCwg
bm9uLXNpZ25hbGluZykgICovDQogICAgKyNkZWZpbmUgX0NNUF9HRV9PUyAgICAweDBkIC8qIEdy
ZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmlu
ZSBfQ01QX0dUX09TICAgIDB4MGUgLyogR3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcp
ICAqLw0KICAgICsjZGVmaW5lIF9DTVBfVFJVRV9VUSAgMHgwZiAvKiBUcnVlICh1bm9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpICAqLw0KICAgICsjZGVmaW5lIF9DTVBfRVFfT1MgICAgMHgxMCAvKiBF
cXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX0xUX09RICAg
IDB4MTEgLyogTGVzcy10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2Rl
ZmluZSBfQ01QX0xFX09RICAgIDB4MTIgLyogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX1VOT1JEX1MgIDB4MTMgLyogVW5v
cmRlcmVkIChzaWduYWxpbmcpICAqLw0KICAgICsjZGVmaW5lIF9DTVBfTkVRX1VTICAgMHgxNCAv
KiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01Q
X05MVF9VUSAgIDB4MTUgLyogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5n
KSAgKi8NCiAgICArI2RlZmluZSBfQ01QX05MRV9VUSAgIDB4MTYgLyogTm90LWxlc3MtdGhhbi1v
ci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01Q
X09SRF9TICAgIDB4MTcgLyogT3JkZXJlZCAoc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBf
Q01QX0VRX1VTICAgIDB4MTggLyogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCiAg
ICArI2RlZmluZSBfQ01QX05HRV9VUSAgIDB4MTkgLyogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVh
bCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX05HVF9V
USAgIDB4MWEgLyogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAg
Ki8NCiAgICArI2RlZmluZSBfQ01QX0ZBTFNFX09TIDB4MWIgLyogRmFsc2UgKG9yZGVyZWQsIHNp
Z25hbGluZykgICovDQogICAgKyNkZWZpbmUgX0NNUF9ORVFfT1MgICAweDFjIC8qIE5vdC1lcXVh
bCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX0dFX09RICAgIDB4
MWQgLyogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8N
CiAgICArI2RlZmluZSBfQ01QX0dUX09RICAgIDB4MWUgLyogR3JlYXRlci10aGFuIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSAgKi8NCiAgICArI2RlZmluZSBfQ01QX1RSVUVfVVMgIDB4MWYgLyog
VHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KICAgICsNCiAgICArLy8vIENvbXBhcmVz
IGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdHdv
DQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCB1c2luZyB0aGUg
b3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUNCiAgICArLy8vICAgIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgUmV0dXJucyBhIFsyIHggZG91YmxlXSB2
ZWN0b3IgY29uc2lzdGluZyBvZiB0d28gZG91YmxlcyBjb3JyZXNwb25kaW5nIHRvDQogICAgKy8v
LyAgICB0aGUgdHdvIGNvbXBhcmlzb24gcmVzdWx0czogemVybyBpZiB0aGUgY29tcGFyaXNvbiBp
cyBmYWxzZSwgYW5kIGFsbCAxJ3MNCiAgICArLy8vICAgIGlmIHRoZSBjb21wYXJpc29uIGlzIHRy
dWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhkIF9tbV9jbXBfcGQoX19tMTI4ZCBh
LCBfX20xMjhkIGIsIGNvbnN0IGludCBjKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFyYW0gYg0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFy
YW0gYw0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRz
IFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0KICAgICsvLy8gICAgb3BlcmF0aW9u
IHRvIHVzZTogXG4NCiAgICArLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFs
aW5nKSBcbg0KICAgICsvLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQogICAgKy8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25h
bGluZykgXG4NCiAgICArLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4N
CiAgICArLy8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBc
bg0KICAgICsvLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQogICAgKy8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcp
IFxuDQogICAgKy8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBc
bg0KICAgICsvLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVk
LCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9y
ZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVxdWFs
IChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4g
KG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBz
aWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1z
aWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25h
bGluZykgXG4NCiAgICArLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1z
aWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1
bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDE3OiBPcmRlcmVkIChz
aWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10
aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFCOiBGYWxz
ZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxQzogTm90LWVxdWFsIChv
cmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFEOiBHcmVhdGVyLXRoYW4tb3It
ZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFFOiBHcmVh
dGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFGOiBU
cnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykNCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4N
CiAgICArI2RlZmluZSBfbW1fY21wX3BkKGEsIGIsIGMpIFwNCiAgICArICAoX19tMTI4ZClfX2J1
aWx0aW5faWEzMl9jbXBwZCgoX192MmRmKShfX20xMjhkKShhKSwgXA0KICAgICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKGIpLCAoYykpDQogICAgKw0K
ICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgb2YgdHdv
IDEyOC1iaXQgdmVjdG9ycyBvZg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0sIHVzaW5nIHRoZSBv
cGVyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlcg0KICAgICsvLy8gICAg
b3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyAgICBSZXR1cm5zIGEgWzQgeCBmbG9hdF0gdmVj
dG9yIGNvbnNpc3Rpbmcgb2YgZm91ciBmbG9hdHMgY29ycmVzcG9uZGluZyB0bw0KICAgICsvLy8g
ICAgdGhlIGZvdXIgY29tcGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21wYXJpc29uIGlz
IGZhbHNlLCBhbmQgYWxsIDEncw0KICAgICsvLy8gICAgaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1
ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTEyOCBfbW1fY21wX3BzKF9fbTEyOCBhLCBf
X20xMjggYiwgY29uc3QgaW50IGMpOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBQUyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBhDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIGINCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gYw0K
ICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBd
IHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0KICAgICsvLy8gICAgb3BlcmF0aW9uIHRvIHVz
ZTogXG4NCiAgICArLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBc
bg0KICAgICsvLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQog
ICAgKy8vLyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykg
XG4NCiAgICArLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCiAgICAr
Ly8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAg
ICsvLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQog
ICAgKy8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25h
bGluZykgXG4NCiAgICArLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQog
ICAgKy8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAg
ICsvLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWdu
YWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykg
XG4NCiAgICArLy8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQogICAgKy8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQogICAgKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10aGFuICh1
bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFCOiBGYWxzZSAob3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxQzogTm90LWVxdWFsIChvcmRlcmVk
LCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwg
KG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFFOiBHcmVhdGVyLXRo
YW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFGOiBUcnVlICh1
bm9yZGVyZWQsIHNpZ25hbGluZykNCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICsj
ZGVmaW5lIF9tbV9jbXBfcHMoYSwgYiwgYykgXA0KICAgICsgIChfX20xMjgpX19idWlsdGluX2lh
MzJfY21wcHMoKF9fdjRzZikoX19tMTI4KShhKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShiKSwgKGMpKQ0KICAgICsNCiAgICArLy8vIENv
bXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMg
b2YgdHdvDQogICAgKy8vLyAgICAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCB1c2lu
ZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUNCiAgICArLy8vICAgIGltbWVkaWF0ZSBp
bnRlZ2VyIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgUmV0dXJucyBhIFs0IHggZG91
YmxlXSB2ZWN0b3IgY29uc2lzdGluZyBvZiBmb3VyIGRvdWJsZXMgY29ycmVzcG9uZGluZyB0bw0K
ICAgICsvLy8gICAgdGhlIGZvdXIgY29tcGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21w
YXJpc29uIGlzIGZhbHNlLCBhbmQgYWxsIDEncw0KICAgICsvLy8gICAgaWYgdGhlIGNvbXBhcmlz
b24gaXMgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTI1NmQgX21tMjU2X2NtcF9w
ZChfX20yNTZkIGEsIF9fbTI1NmQgYiwgY29uc3QgaW50IGMpOw0KICAgICsvLy8gXGVuZGNvZGUN
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBhDQog
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vIFxw
YXJhbSBiDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAg
ICArLy8vIFxwYXJhbSBjDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5k
LCB3aXRoIGJpdHMgWzQ6MF0gc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uDQogICAgKy8vLyAg
ICBvcGVyYXRpb24gdG8gdXNlOiBcbg0KICAgICsvLy8gICAgMHgwMDogRXF1YWwgKG9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDAxOiBMZXNzLXRoYW4gKG9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwMzogVW5vcmRlcmVkIChub24tc2ln
bmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1z
aWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDA1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1YWwg
KHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwNzogT3JkZXJlZCAobm9u
LXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDg6IEVxdWFsICh1bm9yZGVyZWQsIG5vbi1z
aWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDA5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFs
ICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEE6IE5vdC1ncmVhdGVy
LXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwQjogRmFsc2Ug
KG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBDOiBOb3QtZXF1YWwg
KG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBEOiBHcmVhdGVyLXRo
YW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEU6IEdy
ZWF0ZXItdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwRjogVHJ1
ZSAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxMDogRXF1YWwg
KG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1l
cXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTM6IFVub3Jk
ZXJlZCAoc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxNDogTm90LWVxdWFsICh1bm9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVub3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTY6IE5vdC1sZXNzLXRoYW4t
b3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTc6
IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTg6IEVxdWFsICh1bm9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MTk6IE5vdC1ncmVhdGVyLXRoYW4tb3It
ZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MUE6IE5v
dC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAg
IDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDFDOiBO
b3QtZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MUQ6IEdyZWF0
ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAg
IDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8v
ICAgIDB4MUY6IFRydWUgKHVub3JkZXJlZCwgc2lnbmFsaW5nKQ0KICAgICsvLy8gXHJldHVybnMg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29tcGFyaXNv
biByZXN1bHRzLg0KICAgICsjZGVmaW5lIF9tbTI1Nl9jbXBfcGQoYSwgYiwgYykgXA0KICAgICsg
IChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2NtcHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKGEpLCBc
DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2
ZCkoYiksIChjKSkNCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIHZhbHVlcyBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbOCB4
IGZsb2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBp
bnRlZ2VyDQogICAgKy8vLyAgICBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIFJldHVy
bnMgYSBbOCB4IGZsb2F0XSB2ZWN0b3IgY29uc2lzdGluZyBvZiBlaWdodCBmbG9hdHMgY29ycmVz
cG9uZGluZyB0bw0KICAgICsvLy8gICAgdGhlIGVpZ2h0IGNvbXBhcmlzb24gcmVzdWx0czogemVy
byBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZSwgYW5kIGFsbA0KICAgICsvLy8gICAgMSdzIGlm
IHRoZSBjb21wYXJpc29uIGlzIHRydWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20yNTYg
X21tMjU2X2NtcF9wcyhfX20yNTYgYSwgX19tMjU2IGIsIGNvbnN0IGludCBjKTsNCiAgICArLy8v
IFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCiAg
ICArLy8vIFxwYXJhbSBiDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdLg0KICAgICsvLy8gXHBhcmFtIGMNCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24NCiAg
ICArLy8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQogICAgKy8vLyAgICAweDAwOiBFcXVhbCAo
b3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDE6IExlc3MtdGhhbiAo
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwMjogTGVzcy10aGFuLW9yLWVx
dWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDAzOiBVbm9yZGVyZWQg
KG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwNjogTm90LWxlc3MtdGhhbi1v
ci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDA3OiBPcmRl
cmVkIChub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4t
b3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwQTogTm90
LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBC
OiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEM6IE5v
dC1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEQ6IEdy
ZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAg
MHgwRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAw
eDBGOiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDEw
OiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxMTogTGVzcy10
aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxMjogTGVzcy10
aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgx
MzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDE0OiBOb3QtZXF1YWwg
KHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxNTogTm90LWxlc3MtdGhh
biAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxNjogTm90LWxl
c3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8g
ICAgMHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxODogRXF1YWwg
KHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxOTogTm90LWdyZWF0ZXIt
dGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAg
MHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAg
ICsvLy8gICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAg
IDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgx
RDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAg
ICsvLy8gICAgMHgxRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
ICAgICsvLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQogICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4NCiAgICArI2RlZmluZSBfbW0yNTZfY21wX3BzKGEsIGIsIGMpIFwN
CiAgICArICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2NtcHBzMjU2KChfX3Y4c2YpKF9fbTI1Niko
YSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9f
bTI1NikoYiksIChjKSkNCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nIHNjYWxhciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZg0KICAgICsvLy8gICAg
dHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHVzaW5nIHRoZSBvcGVyYXRpb24g
c3BlY2lmaWVkIGJ5IHRoZQ0KICAgICsvLy8gICAgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4N
CiAgICArLy8vDQogICAgKy8vLyAgICBJZiB0aGUgcmVzdWx0IGlzIHRydWUsIGFsbCA2NCBiaXRz
IG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IgYXJlIHNldDsNCiAgICArLy8vICAgIG90aGVyd2lz
ZSB0aGV5IGFyZSBjbGVhcmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4ZCBfbW1f
Y21wX3NkKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBjb25zdCBpbnQgYyk7DQogICAgKy8vLyBcZW5k
Y29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkNNUFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IGENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsv
Ly8gXHBhcmFtIGINCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KICAgICsvLy8gXHBhcmFtIGMNCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9w
ZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24NCiAgICAr
Ly8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQogICAgKy8vLyAgICAweDAwOiBFcXVhbCAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDE6IExlc3MtdGhhbiAob3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwMjogTGVzcy10aGFuLW9yLWVxdWFs
IChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5v
bi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwg
bm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVub3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwNjogTm90LWxlc3MtdGhhbi1vci1l
cXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDA3OiBPcmRlcmVk
IChub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJlZCwg
bm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4tb3It
ZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwQTogTm90LWdy
ZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBCOiBG
YWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEM6IE5vdC1l
cXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MEQ6IEdyZWF0
ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgw
RTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBG
OiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDEwOiBF
cXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxMTogTGVzcy10aGFu
IChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxMjogTGVzcy10aGFu
LW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxMzog
VW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAweDE0OiBOb3QtZXF1YWwgKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxNTogTm90LWxlc3MtdGhhbiAo
dW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxNjogTm90LWxlc3Mt
dGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAg
MHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxODogRXF1YWwgKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxOTogTm90LWdyZWF0ZXItdGhh
bi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgx
QTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsv
Ly8gICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCiAgICArLy8vICAgIDB4
MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxRDog
R3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsv
Ly8gICAgMHgxRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAg
ICsvLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMuDQogICAgKyNkZWZpbmUgX21tX2NtcF9zZChhLCBiLCBjKSBcDQogICAg
KyAgKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wc2QoKF9fdjJkZikoX19tMTI4ZCkoYSksIFwN
CiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShi
KSwgKGMpKQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRp
bmcgc2NhbGFyIHZhbHVlcyBvZiB0d28gMTI4LWJpdA0KICAgICsvLy8gICAgdmVjdG9ycyBvZiBb
NCB4IGZsb2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0
ZQ0KICAgICsvLy8gICAgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIElm
IHRoZSByZXN1bHQgaXMgdHJ1ZSwgYWxsIDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rv
ciBhcmUgc2V0Ow0KICAgICsvLy8gICAgb3RoZXJ3aXNlIHRoZXkgYXJlIGNsZWFyZWQuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFxjb2RlDQogICAgKy8vLyBfX20xMjggX21tX2NtcF9zcyhfX20xMjggYSwgX19tMTI4IGIs
IGNvbnN0IGludCBjKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QU1MgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBiDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIGMNCiAgICArLy8v
ICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5
aW5nIHdoaWNoIGNvbXBhcmlzb24NCiAgICArLy8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQog
ICAgKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICAr
Ly8vICAgIDB4MDE6IExlc3MtdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8g
ICAgMHgwMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQogICAg
Ky8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQogICAgKy8vLyAgICAw
eDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAg
IDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsvLy8g
ICAgMHgwNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQogICAgKy8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8g
ICAgMHgwODogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCiAgICArLy8vICAg
IDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBc
bg0KICAgICsvLy8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDBCOiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykg
XG4NCiAgICArLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykg
XG4NCiAgICArLy8vICAgIDB4MEQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2ln
bmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgwRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWdu
YWxpbmcpIFxuDQogICAgKy8vLyAgICAweDBGOiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxp
bmcpIFxuDQogICAgKy8vLyAgICAweDEwOiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0K
ICAgICsvLy8gICAgMHgxMTogTGVzcy10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
ICAgICsvLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFs
aW5nKSBcbg0KICAgICsvLy8gICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQogICAg
Ky8vLyAgICAweDE0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsv
Ly8gICAgMHgxNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0K
ICAgICsvLy8gICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24t
c2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0K
ICAgICsvLy8gICAgMHgxODogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KICAgICsv
Ly8gICAgMHgxOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVk
LCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNp
Z25hbGluZykgXG4NCiAgICArLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFs
aW5nKSBcbg0KICAgICsvLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxRTogR3JlYXRlci10aGFuIChvcmRl
cmVkLCBub24tc2lnbmFsaW5nKSBcbg0KICAgICsvLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVk
LCBzaWduYWxpbmcpDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICArI2RlZmluZSBf
bW1fY21wX3NzKGEsIGIsIGMpIFwNCiAgICArICAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcHNz
KChfX3Y0c2YpKF9fbTEyOCkoYSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChfX3Y0c2YpKF9fbTEyOCkoYiksIChjKSkNCiAgICArDQogICAgKy8vLyBUYWtlcyBhIFs4
IHggaTMyXSB2ZWN0b3IgYW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQogICAg
Ky8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjgrQ09N
UE9TSVRFIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGkzMl0uDQog
ICAgKy8vLyBccGFyYW0gX19pbW0NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9w
ZXJhbmQgd2l0aCBiaXRzIFsyOjBdIGRldGVybWluaW5nIHdoaWNoIHZlY3Rvcg0KICAgICsvLy8g
ICAgZWxlbWVudCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkLg0KICAgICsvLy8gXHJldHVybnMg
QSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgMzIgYml0cyBvZiBleHRl
bmRlZA0KICAgICsvLy8gICAgcGFja2VkIGRhdGEuDQogICAgKyNkZWZpbmUgX21tMjU2X2V4dHJh
Y3RfZXBpMzIoWCwgTikgXA0KICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92OHNp
KChfX3Y4c2kpKF9fbTI1NmkpKFgpLCAoaW50KShOKSkNCiAgICArDQogICAgKy8vLyBUYWtlcyBh
IFsxNiB4IGkxNl0gdmVjdG9yIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQ0K
ICAgICsvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4
K0NPTVBPU0lURSA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
MTYgeCBpMTZdLg0KICAgICsvLy8gXHBhcmFtIF9faW1tDQogICAgKy8vLyAgICBBbiBpbW1lZGlh
dGUgaW50ZWdlciBvcGVyYW5kIHdpdGggYml0cyBbMzowXSBkZXRlcm1pbmluZyB3aGljaCB2ZWN0
b3INCiAgICArLy8vICAgIGVsZW1lbnQgaXMgZXh0cmFjdGVkIGFuZCByZXR1cm5lZC4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDE2
IGJpdHMgb2YgemVybyBleHRlbmRlZA0KICAgICsvLy8gICAgcGFja2VkIGRhdGEuDQogICAgKyNk
ZWZpbmUgX21tMjU2X2V4dHJhY3RfZXBpMTYoWCwgTikgXA0KICAgICsgIChpbnQpKHVuc2lnbmVk
IHNob3J0KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjE2aGkoKF9fdjE2aGkpKF9fbTI1NmkpKFgp
LCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoaW50KShOKSkNCiAgICArDQogICAgKy8vLyBUYWtlcyBhIFszMiB4IGk4XSB2ZWN0b3Ig
YW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQogICAgKy8vLyAgICBpbmRleGVk
IGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCiAg
ICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFszMiB4IGk4XS4NCiAgICArLy8v
IFxwYXJhbSBfX2ltbQ0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3
aXRoIGJpdHMgWzQ6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yDQogICAgKy8vLyAgICBlbGVt
ZW50IGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuDQogICAgKy8vLyBccmV0dXJucyBBIDMyLWJp
dCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCA4IGJpdHMgb2YgemVybyBleHRlbmRl
ZA0KICAgICsvLy8gICAgcGFja2VkIGRhdGEuDQogICAgKyNkZWZpbmUgX21tMjU2X2V4dHJhY3Rf
ZXBpOChYLCBOKSBcDQogICAgKyAgKGludCkodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl92
ZWNfZXh0X3YzMnFpKChfX3YzMnFpKShfX20yNTZpKShYKSwgXA0KICAgICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShOKSkNCiAgICArDQog
ICAgKyNpZmRlZiBfX3g4Nl82NF9fDQogICAgKy8vLyBUYWtlcyBhIFs0IHggaTY0XSB2ZWN0b3Ig
YW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQogICAgKy8vLyAgICBpbmRleGVk
IGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCiAg
ICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTY0XS4NCiAgICArLy8v
IFxwYXJhbSBfX2ltbQ0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3
aXRoIGJpdHMgWzE6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yDQogICAgKy8vLyAgICBlbGVt
ZW50IGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCA2NCBiaXRzIG9mIGV4dGVuZGVkDQog
ICAgKy8vLyAgICBwYWNrZWQgZGF0YS4NCiAgICArI2RlZmluZSBfbW0yNTZfZXh0cmFjdF9lcGk2
NChYLCBOKSBcDQogICAgKyAgKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Y0ZGko
KF9fdjRkaSkoX19tMjU2aSkoWCksIChpbnQpKE4pKQ0KICAgICsjZW5kaWYNCiAgICArDQogICAg
Ky8vLyBUYWtlcyBhIFs4IHggaTMyXSB2ZWN0b3IgYW5kIHJlcGxhY2VzIHRoZSB2ZWN0b3IgZWxl
bWVudCB2YWx1ZQ0KICAgICsvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50
IG9wZXJhbmQgYnkgYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQogICAgKy8vLyAgICBtb2RpZmll
ZCB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBp
MzJdIHRvIGJlIHVzZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUg
Zm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9faW1tDQogICAgKy8v
LyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVj
dG9yIGVsZW1lbnQgdG8gYmUNCiAgICArLy8vICAgIHJlcGxhY2VkLg0KICAgICsvLy8gXHJldHVy
bnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBp
bmRleGVkIGJ5DQogICAgKy8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4NCiAgICArI2RlZmlu
ZSBfbW0yNTZfaW5zZXJ0X2VwaTMyKFgsIEksIE4pIFwNCiAgICArICAoX19tMjU2aSlfX2J1aWx0
aW5faWEzMl92ZWNfc2V0X3Y4c2koKF9fdjhzaSkoX19tMjU2aSkoWCksIFwNCiAgICArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoSSksIChpbnQpKE4pKQ0KICAg
ICsNCiAgICArDQogICAgKy8vLyBUYWtlcyBhIFsxNiB4IGkxNl0gdmVjdG9yIGFuZCByZXBsYWNl
cyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCiAgICArLy8vICAgIGluZGV4ZWQgYnkgdGhlIGlt
bWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQog
ICAgKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4NCiAgICArLy8vICAg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSB2ZWN0b3Igb2YgWzE2IHggaTE2XSB0byBiZSB1c2VkIGJ5IHRoZSBpbnNlcnQgb3BlcmF0aW9u
Lg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQW4gaTE2IGludGVnZXIgdmFsdWUu
IFRoZSByZXBsYWNlbWVudCB2YWx1ZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb24uDQogICAgKy8v
LyBccGFyYW0gX19pbW0NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIHNwZWNpZnlp
bmcgdGhlIGluZGV4IG9mIHRoZSB2ZWN0b3IgZWxlbWVudCB0byBiZQ0KICAgICsvLy8gICAgcmVw
bGFjZWQuDQogICAgKy8vLyBccmV0dXJucyBBIGNvcHkgb2YgdmVjdG9yIFxhIF9fYSwgYWZ0ZXIg
cmVwbGFjaW5nIGl0cyBlbGVtZW50IGluZGV4ZWQgYnkNCiAgICArLy8vICAgIFxhIF9faW1tIHdp
dGggXGEgX19iLg0KICAgICsjZGVmaW5lIF9tbTI1Nl9pbnNlcnRfZXBpMTYoWCwgSSwgTikgXA0K
ICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjE2aGkoKF9fdjE2aGkpKF9f
bTI1NmkpKFgpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaW50KShJKSwgKGludCkoTikpDQogICAgKw0KICAgICsvLy8gVGFrZXMgYSBbMzIgeCBpOF0g
dmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCiAgICArLy8vICAg
IGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFs
dWUuIFJldHVybnMgdGhlDQogICAgKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRF
IDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzMyIHggaThdIHRvIGJlIHVzZWQgYnkgdGhl
IGluc2VydCBvcGVyYXRpb24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBbiBp
OCBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRoZSBpbnNlcnQgb3Bl
cmF0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9faW1tDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUg
aW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUN
CiAgICArLy8vICAgIHJlcGxhY2VkLg0KICAgICsvLy8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3Rv
ciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRleGVkIGJ5DQogICAgKy8v
LyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4NCiAgICArI2RlZmluZSBfbW0yNTZfaW5zZXJ0X2Vw
aTgoWCwgSSwgTikgXA0KICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjMy
cWkoKF9fdjMycWkpKF9fbTI1NmkpKFgpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpDQogICAgKw0KICAgICsjaWZkZWYg
X194ODZfNjRfXw0KICAgICsvLy8gVGFrZXMgYSBbNCB4IGk2NF0gdmVjdG9yIGFuZCByZXBsYWNl
cyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCiAgICArLy8vICAgIGluZGV4ZWQgYnkgdGhlIGlt
bWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQog
ICAgKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4NCiAgICArLy8vICAg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSB2ZWN0b3Igb2YgWzQgeCBpNjRdIHRvIGJlIHVzZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24u
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVl
LiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uLg0KICAgICsv
Ly8gXHBhcmFtIF9faW1tDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5
aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdG8gYmUNCiAgICArLy8vICAgIHJl
cGxhY2VkLg0KICAgICsvLy8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVy
IHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRleGVkIGJ5DQogICAgKy8vLyAgICAgXGEgX19pbW0g
d2l0aCBcYSBfX2IuDQogICAgKyNkZWZpbmUgX21tMjU2X2luc2VydF9lcGk2NChYLCBJLCBOKSBc
DQogICAgKyAgKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmVjX3NldF92NGRpKChfX3Y0ZGkpKF9f
bTI1NmkpKFgpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsb25nIGxvbmcpKEkpLCAoaW50KShOKSkNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsvKiBD
b252ZXJzaW9uICovDQogICAgKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGkzMl0gaW50
byBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNWVERRMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTMyXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBf
X2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfY3Z0ZXBpMzJf
cGQoX19tMTI4aSBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGlu
X2NvbnZlcnR2ZWN0b3IoKF9fdjRzaSlfX2EsIF9fdjRkZik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbOCB4IGkzMl0gaW50byBhIHZlY3RvciBvZiBbOCB4
IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q1ZURFEyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19h
DQogICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbTI1Nl9jdnRlcGkzMl9wcyhfX20yNTZpIF9fYSkNCiAgICArew0KICAgICsgIHJl
dHVybiAoX19tMjU2KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4c2kpX19hLCBfX3Y4c2Yp
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgYSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGZs
b2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZU
UEQyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29u
dmVydGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tMjU2X2N2dHBkX3BzKF9fbTI1NmQgX19hKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0cGQycHMyNTYoKF9fdjRkZikgX19hKTsN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRd
IGludG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJEUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1
NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9jdnRwc19lcGkzMihfX20yNTYgX19h
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMmRx
MjU2KChfX3Y4c2YpIF9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyBhIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSAyNTYtYml0IHZlY3RvciBvZiBbNA0K
ICAgICsvLy8gICAgeCBkb3VibGVdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZDVlRQUzJQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19t
MjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2N2dHBzX3BkKF9fbTEyOCBfX2Ep
DQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3Io
KF9fdjRzZilfX2EsIF9fdjRkZik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyBh
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQNCiAgICArLy8vICAgIHggaTMyXSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IGJ5IHJvdW5kaW5n
IHRvd2FyZHMgemVybyB3aGVuIGl0IGlzDQogICAgKy8vLyAgICBpbmV4YWN0Lg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUEQyRFEgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2N2
dHRwZF9lcGkzMihfX20yNTZkIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9jdnR0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIENvbnZlcnRzIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8g
YSAxMjgtYml0IHZlY3RvciBvZiBbNA0KICAgICsvLy8gICAgeCBpMzJdLiBXaGVuIGEgY29udmVy
c2lvbiBpcyBpbmV4YWN0LCB0aGUgdmFsdWUgcmV0dXJuZWQgaXMgcm91bmRlZA0KICAgICsvLy8g
ICAgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBjb250cm9sIGJpdHMgaW4gdGhlIE1YQ1NSIHJl
Z2lzdGVyLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
VlRQRDJEUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW0yNTZfY3Z0cGRfZXBpMzIoX19tMjU2ZCBfX2EpDQogICAgK3sNCiAgICArICBy
ZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRd
IGludG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJdLA0KICAgICsvLy8gICAgdHJ1bmNhdGluZyB0aGUg
cmVzdWx0IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVuIGl0IGlzIGluZXhhY3QuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRQUzJEUSA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCiAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1
Nl9jdnR0cHNfZXBpMzIoX19tMjU2IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2
aSlfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHEyNTYoKF9fdjhzZikgX19hKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPGF2eGlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBm
dW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQogICAgKy8vLyAg
ICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1cm5zIEEg
NjQgYml0IGRvdWJsZSBjb250YWluaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2
ZWN0b3IuDQogICAgK3N0YXRpYyBfX2lubGluZSBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbTI1Nl9jdnRzZF9mNjQoX19tMjU2ZCBfX2EpDQogICAgK3sNCiAgICArIHJldHVybiBf
X2FbMF07DQogICAgK30NCiAgICArDQogICAgKy8vLyBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50
IG9mIHRoZSBpbnB1dCB2ZWN0b3Igb2YgWzggeCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDxhdnhpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVj
aWZpYw0KICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGkzMl0uDQogICAgKy8v
LyBccmV0dXJucyBBIDMyIGJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGVsZW1lbnQg
b2YgdGhlIGlucHV0IHZlY3Rvci4NCiAgICArc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tMjU2X2N2dHNpMjU2X3NpMzIoX19tMjU2aSBfX2EpDQogICAgK3sN
CiAgICArIF9fdjhzaSBfX2IgPSAoX192OHNpKV9fYTsNCiAgICArIHJldHVybiBfX2JbMF07DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBp
bnB1dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPGF2eGludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEg
dXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQog
ICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJl
dHVybnMgQSAzMiBiaXQgZmxvYXQgY29udGFpbmluZyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUg
aW5wdXQgdmVjdG9yLg0KICAgICtzdGF0aWMgX19pbmxpbmUgZmxvYXQgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbTI1Nl9jdnRzc19mMzIoX19tMjU2IF9fYSkNCiAgICArew0KICAgICsgcmV0
dXJuIF9fYVswXTsNCiAgICArfQ0KICAgICsNCiAgICArLyogVmVjdG9yIHJlcGxpY2F0ZSAqLw0K
ICAgICsvLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb2RkLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAy
NTYtYml0IHZlY3RvciBvZg0KICAgICsvLy8gICAgWzggeCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVz
IGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNIRFVQIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzI1NToyMjRdIG9mIFxhIF9f
YSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyNTU6MjI0XSBhbmQgWzIyMzoxOTJdIG9mDQogICAgKy8v
LyAgICB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTkxOjE2MF0gb2Yg
XGEgX19hIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxNjBdIGFuZCBbMTU5OjEyOF0gb2YNCiAg
ICArLy8vICAgIHRoZSByZXR1cm4gdmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxMjc6OTZd
IG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mIHRo
ZQ0KICAgICsvLy8gICAgcmV0dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAgQml0cyBbNjM6MzJd
IG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFszMTowXSBvZiB0aGUN
CiAgICArLy8vICAgIHJldHVybiB2YWx1ZS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQN
CiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tMjU2X21vdmVoZHVwX3BzKF9fbTI1NiBfX2EpDQogICAgK3sN
CiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9p
YTMyX21vdnNoZHVwMjU2ICgoX192OHNmKV9fYSk7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJu
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYSwgMSwgMSwg
MywgMywgNSwgNSwgNywgNyk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8g
TW92ZXMgYW5kIGR1cGxpY2F0ZXMgZXZlbi1pbmRleGVkIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2
ZWN0b3Igb2YNCiAgICArLy8vICAgIFs4IHggZmxvYXRdIHRvIGZsb2F0IHZhbHVlcyBpbiBhIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTTERVUCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0uIFxuDQogICAgKy8vLyAgICBCaXRzIFsyMjM6MTkyXSBvZiBcYSBfX2EgYXJlIHdy
aXR0ZW4gdG8gYml0cyBbMjU1OjIyNF0gYW5kIFsyMjM6MTkyXSBvZg0KICAgICsvLy8gICAgdGhl
IHJldHVybiB2YWx1ZS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzE1OToxMjhdIG9mIFxhIF9fYSBh
cmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYwXSBhbmQgWzE1OToxMjhdIG9mDQogICAgKy8vLyAg
ICB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAgQml0cyBbOTU6NjRdIG9mIFxhIF9f
YSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mIHRoZQ0KICAgICsv
Ly8gICAgcmV0dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAgQml0cyBbMzE6MF0gb2YgXGEgX19h
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBhbmQgWzMxOjBdIG9mIHRoZQ0KICAgICsvLy8g
ICAgcmV0dXJuIHZhbHVlLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVwbGljYXRlZA0KICAgICsvLy8g
ICAgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW0yNTZfbW92ZWxkdXBfcHMoX19tMjU2IF9fYSkNCiAgICArew0KICAgICsjaWZk
ZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfbW92c2xk
dXAyNTYgKChfX3Y4c2YpX19hKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gX19idWlsdGlu
X3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAwLCAwLCAyLCAyLCA0LCA0
LCA2LCA2KTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBNb3ZlcyBhbmQg
ZHVwbGljYXRlcyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEN
CiAgICArLy8vICAgIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSB0byBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlcyBpbiBhIDI1Ni1iaXQNCiAgICArLy8vICAgIHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1P
VkREVVAgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCiAgICArLy8v
ICAgIEJpdHMgWzYzOjBdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIGFu
ZCBbNjM6MF0gb2YgdGhlDQogICAgKy8vLyAgICByZXR1cm4gdmFsdWUuIFxuDQogICAgKy8vLyAg
ICBCaXRzIFsxOTE6MTI4XSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjE5Ml0g
YW5kIFsxOTE6MTI4XSBvZg0KICAgICsvLy8gICAgdGhlIHJldHVybiB2YWx1ZS4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhl
IG1vdmVkIGFuZA0KICAgICsvLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBf
X2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfbW92ZWR1cF9w
ZChfX20yNTZkIF9fYSkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1
cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBkMjU2ICgoX192NGRmKV9fYSwgKF9f
djRkZilfX2EpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZl
Y3RvcigoX192NGRmKV9fYSwgKF9fdjRkZilfX2EsIDAsIDAsIDIsIDIpOw0KICAgICsjZW5kaWYN
CiAgICArfQ0KICAgICsNCiAgICArLyogVW5wYWNrIGFuZCBJbnRlcmxlYXZlICovDQogICAgKy8v
LyBVbnBhY2tzIHRoZSBvZGQtaW5kZXhlZCB2ZWN0b3IgZWxlbWVudHMgZnJvbSB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbNCB4IGRvdWJsZV0gYW5kIGludGVybGVhdmVzIHRo
ZW0gaW50byBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tIUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybiB2YWx1
ZS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzI1NToxOTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5
MToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4g
XG4NCiAgICArLy8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0
XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAgQml0cyBbMjU1OjE5Ml0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
dGhlIGludGVybGVhdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl91bnBhY2toaV9wZChfX20yNTZkIF9fYSwgX19t
MjU2ZCBfX2IpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChf
X20yNTZkKSBfX2J1aWx0aW5faWEzMl91bnBja2hwZDI1NiAoKF9fdjRkZilfX2EsIChfX3Y0ZGYp
X19iKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3Io
KF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iLCAxLCA1LCAxKzIsIDUrMik7DQogICAgKyNlbmRpZg0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gVW5wYWNrcyB0aGUgZXZlbi1pbmRleGVkIHZlY3RvciBl
bGVtZW50cyBmcm9tIHR3byAyNTYtYml0IHZlY3RvcnMgb2YNCiAgICArLy8vICAgIFs0IHggZG91
YmxlXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZV
TlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdLiBcbg0KICAgICsvLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6
MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzE5MToxMjhdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuDQogICAgKy8v
LyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzE5MToxMjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXR1cm4g
dmFsdWUuIFxuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lu
bGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfdW5wYWNrbG9fcGQo
X19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0K
ICAgICsgIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfdW5wY2tscGQyNTYgKChfX3Y0
ZGYpX19hLCAoX192NGRmKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIF9fYnVpbHRp
bl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYiwgMCwgNCwgMCsyLCA0KzIp
Ow0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3MgdGhlIDMyLWJp
dCB2ZWN0b3IgZWxlbWVudHMgMiwgMywgNiBhbmQgNyBmcm9tIGVhY2ggb2YgdGhlDQogICAgKy8v
LyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCBpbnRlcmxlYXZlcyB0
aGVtIGludG8gYSAyNTYtYml0DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLSFBTIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4NCiAgICArLy8vICAgIEJpdHMg
Wzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBc
bg0KICAgICsvLy8gICAgQml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0g
b2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzIyMzoxOTJdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQogICAgKy8v
LyAgICBCaXRzIFsyNTU6MjI0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMjM6MTkyXSBvZiB0aGUg
cmV0dXJuIHZhbHVlLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs2MzozMl0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAgICArLy8v
ICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgcmV0
dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAgQml0cyBbMjIzOjE5Ml0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbMTkxOjE2MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAgICArLy8vICAgIEJpdHMg
WzI1NToyMjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZSByZXR1cm4gdmFs
dWUuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNv
bnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lIF9f
bTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3VucGFja2hpX3BzKF9fbTI1NiBf
X2EsIF9fbTI1NiBfX2IpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0
dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBzMjU2ICgoX192OHNmKV9fYSwgKF9f
djhzZilfX2IpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZl
Y3RvcigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IsIDIsIDEwLCAyKzEsIDEwKzEsIDYsIDE0LCA2
KzEsIDE0KzEpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3Mg
dGhlIDMyLWJpdCB2ZWN0b3IgZWxlbWVudHMgMCwgMSwgNCBhbmQgNSBmcm9tIGVhY2ggb2YgdGhl
DQogICAgKy8vLyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCBpbnRl
cmxlYXZlcyB0aGVtIGludG8gYSAyNTYtYml0DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVO
UENLTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4NCiAgICArLy8v
ICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXR1cm4g
dmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBb
OTU6NjRdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxNTk6MTI4
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0K
ICAgICsvLy8gICAgQml0cyBbMTkxOjE2MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjIzOjE5Ml0g
b2YgdGhlIHJldHVybiB2YWx1ZS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQogICAgKy8vLyAgICBCaXRzIFszMTow
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCiAg
ICArLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIG9mIHRo
ZSByZXR1cm4gdmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxNTk6MTI4XSBhcmUgd3JpdHRl
biB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KICAgICsvLy8gICAg
Qml0cyBbMTkxOjE2MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlIHJldHVy
biB2YWx1ZS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxp
bmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfdW5wYWNrbG9fcHMoX19t
MjU2IF9fYSwgX19tMjU2IF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICAr
ICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfdW5wY2tscHMyNTYgKChfX3Y4c2YpX19h
LCAoX192OHNmKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVm
ZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYiwgMCwgOCwgMCsxLCA4KzEsIDQsIDEy
LCA0KzEsIDEyKzEpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLyogQml0IFRl
c3QgKi8NCiAgICArLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdLCBwZXJmb3JtIGFuDQogICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1l
bnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KICAg
ICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KICAgICsvLy8gICAgdmVjdG9yLg0KICAgICsvLy8NCiAg
ICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0K
ICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNp
c2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCiAgICArLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVs
ZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KICAg
ICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAgIElmIHRoZXJlIGlz
IGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhl
DQogICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUg
c2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQogICAgKy8vLyAgICBpcyAxLCB0aGUgQ0Yg
ZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0K
ICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZs
YWcuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQ
RCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAg
Ky8vLyBccmV0dXJucyB0aGUgWkYgZmxhZyBpbiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0KICAgICtz
dGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KICAgICtfbW1fdGVzdHpf
cGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVp
bHRpbl9pYTMyX3Z0ZXN0enBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9m
IFsyIHggZG91YmxlXSwgcGVyZm9ybSBhbg0KICAgICsvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50
IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudCBpbiB0aGUNCiAgICAr
Ly8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQg
aW4gdGhlIHNlY29uZCBzb3VyY2UNCiAgICArLy8vICAgIHZlY3Rvci4NCiAgICArLy8vDQogICAg
Ky8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCiAg
ICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNp
b24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAgKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVt
ZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCiAgICAr
Ly8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQogICAgKy8vLyAgICBJZiB0aGVyZSBpcyBh
dCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0K
ICAgICsvLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNp
Z24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KICAgICsvLy8gICAgaXMgMSwgdGhlIENGIGZs
YWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAg
ICArLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFn
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBf
X2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsv
Ly8gXHJldHVybnMgdGhlIENGIGZsYWcgaW4gdGhlIEVGTEFHUyByZWdpc3Rlci4NCiAgICArc3Rh
dGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCiAgICArX21tX3Rlc3RjX3Bk
KF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0
aW5faWEzMl92dGVzdGNwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAg
Kw0KICAgICsvLy8gR2l2ZW4gdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBb
MiB4IGRvdWJsZV0sIHBlcmZvcm0gYW4NCiAgICArLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBj
b21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlDQogICAgKy8v
LyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGlu
IHRoZSBzZWNvbmQgc291cmNlDQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsv
Ly8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQogICAg
Ky8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9u
IGVsZW1lbnRzIHdoZXJlIHRoZQ0KICAgICsvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVu
dHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQogICAgKy8v
LyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCiAg
ICArLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWdu
LWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCiAgICArLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFn
IGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQogICAg
Ky8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZs
YWdzIGFyZSBzZXQgdG8gMCwNCiAgICArLy8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBc
cmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsIG90aGVy
d2lzZSByZXR1cm5zIDAuDQogICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FU
VFJTMTI4DQogICAgK19tbV90ZXN0bnpjX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAg
ICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BkKChfX3YyZGYpX19h
LCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBHaXZlbiB0d28gMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCBwZXJmb3JtIGFuDQogICAg
Ky8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNp
c2lvbiBlbGVtZW50IGluIHRoZQ0KICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQg
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KICAgICsvLy8g
ICAgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMg
dXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qg
b25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCiAgICArLy8v
ICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQg
dG8gMC4gT3RoZXJ3aXNlIHRoZQ0KICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4N
CiAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVj
aXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmly
c3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQog
ICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBD
RiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJu
cyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgdGhlIFpGIGZsYWcuDQogICAgK3N0
YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQogICAgK19tbV90ZXN0el9w
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX3Z0ZXN0enBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0
IHggZmxvYXRdLCBwZXJmb3JtIGFuDQogICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29t
cGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KICAgICsvLy8g
ICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0
aGUgc2Vjb25kIHNvdXJjZQ0KICAgICsvLy8gICAgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8v
ICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KICAgICsv
Ly8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBl
bGVtZW50cyB3aGVyZSB0aGUNCiAgICArLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRz
IGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KICAgICsvLy8g
ICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxl
YXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAg
Ky8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1i
aXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQogICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBp
cyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsv
Ly8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIENGIGZsYWcuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJl
dHVybnMgdGhlIENGIGZsYWcuDQogICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZO
X0FUVFJTMTI4DQogICAgK19tbV90ZXN0Y19wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BzKChfX3Y0c2YpX19hLCAo
X192NHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCBwZXJmb3JtIGFuDQogICAgKy8v
LyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lv
biBlbGVtZW50IGluIHRoZQ0KICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KICAgICsvLy8gICAg
dmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBk
YXRlZCBhcyBmb2xsb3dzOiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25l
IHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCiAgICArLy8vICAg
IHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZQ0KICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAg
ICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNp
b24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3Qg
ZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQogICAg
Ky8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBm
bGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyAx
IGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsDQogICAgKy8vLyAgICBv
dGhlcndpc2UgaXQgcmV0dXJucyAwLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZURVNUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XS4NCiAgICArLy8vIFxyZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZs
YWdzIGFyZSBzZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVybnMgMC4NCiAgICArc3RhdGljIF9faW5s
aW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCiAgICArX21tX3Rlc3RuemNfcHMoX19tMTI4
IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl92
dGVzdG56Y3BzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZG91
YmxlXSwgcGVyZm9ybSBhbg0KICAgICsvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlz
b24gb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgaW4gdGhlDQogICAgKy8vLyAgICBm
aXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUg
c2Vjb25kIHNvdXJjZQ0KICAgICsvLy8gICAgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vICAg
IFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KICAgICsvLy8g
ICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVt
ZW50cyB3aGVyZSB0aGUNCiAgICArLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFy
ZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KICAgICsvLy8gICAg
WkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAgKy8v
LyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQg
b2YgdGhlIHNlY29uZCBlbGVtZW50DQogICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBz
ZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8g
ICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQogICAgKy8vLyBccmV0
dXJucyB0aGUgWkYgZmxhZy4NCiAgICArc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tMjU2X3Rlc3R6X3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCiAg
ICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdHpwZDI1NigoX192NGRmKV9f
YSwgKF9fdjRkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gR2l2ZW4gdHdvIDI1Ni1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIHBlcmZvcm0gYW4NCiAg
ICArLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJl
Y2lzaW9uIGVsZW1lbnRzIGluIHRoZQ0KICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBh
bmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNlY29uZCBzb3VyY2UNCiAgICAr
Ly8vICAgIHZlY3Rvci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVy
IGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCiAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxl
YXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAg
Ky8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMg
c2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCiAgICArLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEu
IFxuDQogICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUt
cHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KICAgICsvLy8gICAgc2lnbi1iaXQgb2YgdGhl
IGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVu
dA0KICAgICsvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0
aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAgIFRoaXMgaW50cmluc2ljIHJl
dHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFnLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgdGhlIENGIGZsYWcuDQog
ICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl90
ZXN0Y19wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4g
X19idWlsdGluX2lhMzJfdnRlc3RjcGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIEdpdmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvcnMgb2YgWzQgeCBkb3VibGVdLCBwZXJmb3JtIGFuDQogICAgKy8vLyAgICBlbGVtZW50LWJ5
LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyBpbiB0
aGUNCiAgICArLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5n
IGVsZW1lbnRzIGluIHRoZSBzZWNvbmQgc291cmNlDQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAg
Ky8vLw0KICAgICsvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxv
d3M6IFxuDQogICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3Vi
bGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KICAgICsvLy8gICAgc2lnbi1iaXRzIG9m
IGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2Ug
dGhlDQogICAgKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgSWYg
dGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3
aGVyZSB0aGUNCiAgICArLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAg
YW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCiAgICArLy8vICAgIGlzIDEs
IHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRv
IDEuIFxuDQogICAgKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUg
WkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCiAgICArLy8vICAgIG90aGVyd2lzZSBpdCBy
ZXR1cm5zIDAuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlRFU1RQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8g
XHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0u
DQogICAgKy8vLyBccmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0
IHRvIDAsIG90aGVyd2lzZSByZXR1cm5zIDAuDQogICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl90ZXN0bnpjX3BkKF9fbTI1NmQgX19hLCBfX20y
NTZkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3Bk
MjU2KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBH
aXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBw
ZXJmb3JtIGFuDQogICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0
aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KICAgICsvLy8gICAgZmlyc3Qgc291
cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNv
dXJjZQ0KICAgICsvLy8gICAgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBFRkxB
R1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KICAgICsvLy8gICAgSWYgdGhl
cmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVy
ZSB0aGUNCiAgICArLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUg
WkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KICAgICsvLy8gICAgWkYgZmxhZyBp
cyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWly
IG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQogICAgKy8vLyAgICBzaWdu
LWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNl
Y29uZCBlbGVtZW50DQogICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4g
T3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgVGhpcyBp
bnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgdGhlIFpG
IGZsYWcuDQogICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAg
K19tbTI1Nl90ZXN0el9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9f
Yik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBwZXJmb3JtIGFuDQogICAgKy8vLyAgICBlbGVt
ZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50
IGluIHRoZQ0KICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3Bv
bmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KICAgICsvLy8gICAgdmVjdG9yLg0K
ICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBm
b2xsb3dzOiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Yg
c2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCiAgICArLy8vICAgIHNpZ24tYml0
cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3
aXNlIHRoZQ0KICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAg
IElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVu
dHMgd2hlcmUgdGhlDQogICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBp
cyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQogICAgKy8vLyAgICBp
cyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNl
dCB0byAxLiBcbg0KICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUg
b2YgdGhlIENGIGZsYWcuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdLg0KICAgICsvLy8gXHJldHVybnMgdGhlIENGIGZsYWcuDQogICAgK3N0YXRpYyBfX2lubGlu
ZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl90ZXN0Y19wcyhfX20yNTYgX19h
LCBfX20yNTYgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0
Y3BzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRd
LCBwZXJmb3JtIGFuDQogICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBv
ZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyBpbiB0aGUNCiAgICArLy8vICAgIGZpcnN0
IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzZWNv
bmQgc291cmNlDQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gICAgVGhl
IEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQogICAgKy8vLyAgICBJ
ZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRz
IHdoZXJlIHRoZQ0KICAgICsvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEs
IHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQogICAgKy8vLyAgICBaRiBm
bGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25l
IHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCiAgICArLy8vICAg
IHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0
aGUgc2Vjb25kIGVsZW1lbnQNCiAgICArLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0
byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQogICAgKy8vLyAgICBU
aGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBz
ZXQgdG8gMCwNCiAgICArLy8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgMSBp
ZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLCBvdGhlcndpc2UgcmV0dXJu
cyAwLg0KICAgICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW0yNTZfdGVzdG56Y19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2Yp
X19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEdpdmVuIHR3byAyNTYtYml0IGludGVnZXIg
dmVjdG9ycywgcGVyZm9ybSBhIGJpdC1ieS1iaXQgY29tcGFyaXNvbg0KICAgICsvLy8gICAgb2Yg
dGhlIHR3byBzb3VyY2UgdmVjdG9ycy4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgRUZMQUdT
IHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCiAgICArLy8vICAgIElmIHRoZXJl
IGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJpdHMgd2hlcmUgYm90aCBiaXRzIGFyZSAxLCB0aGUg
WkYgZmxhZw0KICAgICsvLy8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgWkYgZmxhZyBp
cyBzZXQgdG8gMS4gXG4NCiAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWly
IG9mIGJpdHMgd2hlcmUgdGhlIGJpdCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UNCiAgICArLy8vICAg
IHZlY3RvciBpcyAwIGFuZCB0aGUgYml0IGZyb20gdGhlIHNlY29uZCBzb3VyY2UgdmVjdG9yIGlz
IDEsIHRoZSBDRiBmbGFnDQogICAgKy8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBD
RiBmbGFnIGlzIHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJu
cyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9y
Lg0KICAgICsvLy8gXHJldHVybnMgdGhlIFpGIGZsYWcuDQogICAgK3N0YXRpYyBfX2lubGluZSBp
bnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl90ZXN0el9zaTI1NihfX20yNTZpIF9f
YSwgX19tMjU2aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfcHRl
c3R6MjU2KChfX3Y0ZGkpX19hLCAoX192NGRpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBHaXZlbiB0d28gMjU2LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIHBlcmZvcm0gYSBiaXQtYnktYml0
IGNvbXBhcmlzb24NCiAgICArLy8vICAgIG9mIHRoZSB0d28gc291cmNlIHZlY3RvcnMuDQogICAg
Ky8vLw0KICAgICsvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxv
d3M6IFxuDQogICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRz
IHdoZXJlIGJvdGggYml0cyBhcmUgMSwgdGhlIFpGIGZsYWcNCiAgICArLy8vICAgIGlzIHNldCB0
byAwLiBPdGhlcndpc2UgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQogICAgKy8vLyAgICBJ
ZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJlIHRoZSBiaXQgZnJvbSB0
aGUgZmlyc3Qgc291cmNlDQogICAgKy8vLyAgICB2ZWN0b3IgaXMgMCBhbmQgdGhlIGJpdCBmcm9t
IHRoZSBzZWNvbmQgc291cmNlIHZlY3RvciBpcyAxLCB0aGUgQ0YgZmxhZw0KICAgICsvLy8gICAg
aXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCiAgICAr
Ly8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFnLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIHRoZSBDRiBm
bGFnLg0KICAgICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW0yNTZfdGVzdGNfc2kyNTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQ0KICAgICt7DQogICAg
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzI1NigoX192NGRpKV9fYSwgKF9fdjRkaSlf
X2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgaW50ZWdlciB2
ZWN0b3JzLCBwZXJmb3JtIGEgYml0LWJ5LWJpdCBjb21wYXJpc29uDQogICAgKy8vLyAgICBvZiB0
aGUgdHdvIHNvdXJjZSB2ZWN0b3JzLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBFRkxBR1Mg
cmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSBib3RoIGJpdHMgYXJlIDEsIHRoZSBa
RiBmbGFnDQogICAgKy8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBaRiBmbGFnIGlz
IHNldCB0byAxLiBcbg0KICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIg
b2YgYml0cyB3aGVyZSB0aGUgYml0IGZyb20gdGhlIGZpcnN0IHNvdXJjZQ0KICAgICsvLy8gICAg
dmVjdG9yIGlzIDAgYW5kIHRoZSBiaXQgZnJvbSB0aGUgc2Vjb25kIHNvdXJjZSB2ZWN0b3IgaXMg
MSwgdGhlIENGIGZsYWcNCiAgICArLy8vICAgIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENG
IGZsYWcgaXMgc2V0IHRvIDEuIFxuDQogICAgKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5z
IDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCiAgICArLy8vICAg
IG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0K
ICAgICsvLy8gXHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0
byAwLCBvdGhlcndpc2UgcmV0dXJucyAwLg0KICAgICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfdGVzdG56Y19zaTI1NihfX20yNTZpIF9fYSwgX19t
MjU2aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfcHRlc3RuemMy
NTYoKF9fdjRkaSlfX2EsIChfX3Y0ZGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLyogVmVj
dG9yIGV4dHJhY3Qgc2lnbiBtYXNrICovDQogICAgKy8vLyBFeHRyYWN0cyB0aGUgc2lnbiBiaXRz
IG9mIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMNCiAgICArLy8vICAg
IGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFuZCB3cml0ZXMgdGhlbSB0byB0
aGUgbG93ZXIgb3JkZXINCiAgICArLy8vICAgIGJpdHMgb2YgdGhlIHJldHVybiB2YWx1ZS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTVNLUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkb3VibGUt
cHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMgd2l0aCBzaWduIGJp
dHMgdG8gYmUgZXh0cmFjdGVkLg0KICAgICsvLy8gXHJldHVybnMgVGhlIHNpZ24gYml0cyBmcm9t
IHRoZSBvcGVyYW5kLCB3cml0dGVuIHRvIGJpdHMgWzM6MF0uDQogICAgK3N0YXRpYyBfX2lubGlu
ZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9tb3ZlbWFza19wZChfX20yNTZk
IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9tb3Ztc2twZDI1Nigo
X192NGRmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBFeHRyYWN0cyB0aGUgc2lnbiBi
aXRzIG9mIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMNCiAgICArLy8v
ICAgIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYW5kIHdyaXRlcyB0aGVtIHRv
IHRoZSBsb3dlciBvcmRlcg0KICAgICsvLy8gICAgYml0cyBvZiB0aGUgcmV0dXJuIHZhbHVlLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQUyA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2luZ2xl
LXByZWNpc2lvbiBmbG9hdGluZw0KICAgICsvLy8gICAgcG9pbnQgdmFsdWVzIHdpdGggc2lnbiBi
aXRzIHRvIGJlIGV4dHJhY3RlZC4NCiAgICArLy8vIFxyZXR1cm5zIFRoZSBzaWduIGJpdHMgZnJv
bSB0aGUgb3BlcmFuZCwgd3JpdHRlbiB0byBiaXRzIFs3OjBdLg0KICAgICtzdGF0aWMgX19pbmxp
bmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfbW92ZW1hc2tfcHMoX19tMjU2
IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9tb3Ztc2twczI1Nigo
X192OHNmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8qIFZlY3RvciBfX3plcm8gKi8NCiAg
ICArLy8vIFplcm9lcyB0aGUgY29udGVudHMgb2YgYWxsIFhNTSBvciBZTU0gcmVnaXN0ZXJzLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZaRVJPQUxMIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICtzdGF0aWMgX19pbmxp
bmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArI2Vsc2UNCiAgICArc3RhdGljIF9faW5s
aW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBf
X3RhcmdldF9fKCJhdngiKSkpDQogICAgKyNlbmRpZg0KICAgICtfbW0yNTZfemVyb2FsbCh2b2lk
KQ0KICAgICt7DQogICAgKyAgX19idWlsdGluX2lhMzJfdnplcm9hbGwoKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIFplcm9lcyB0aGUgdXBwZXIgMTI4IGJpdHMgKGJpdHMgMjU1OjEyOCkgb2Yg
YWxsIFlNTSByZWdpc3RlcnMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlpFUk9VUFBFUiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLw0KICAgICsjaWZk
ZWYgX19HTlVDX18NCiAgICArc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgKyNlbHNlDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4IikpKQ0KICAgICsj
ZW5kaWYNCiAgICArX21tMjU2X3plcm91cHBlcih2b2lkKQ0KICAgICt7DQogICAgKyAgX19idWls
dGluX2lhMzJfdnplcm91cHBlcigpOw0KICAgICt9DQogICAgKw0KICAgICsvKiBWZWN0b3IgbG9h
ZCB3aXRoIGJyb2FkY2FzdCAqLw0KICAgICsvLy8gTG9hZHMgYSBzY2FsYXIgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSBmcm9tIHRoZQ0KICAgICsvLy8gICAgc3BlY2lmaWVk
IGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2EgYW5kIGJyb2FkY2FzdHMgaXQgdG8gdGhlIGVs
ZW1lbnRzDQogICAgKy8vLyAgICBvZiBhIFs0IHggZmxvYXRdIHZlY3Rvci4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNUU1MgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBUaGUg
c2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBiZSBicm9hZGNhc3QuDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIDMy
LWJpdCBlbGVtZW50cyBhcmUgc2V0DQogICAgKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0
IHZhbHVlLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEy
OA0KICAgICtfbW1fYnJvYWRjYXN0X3NzKGZsb2F0IGNvbnN0ICpfX2EpDQogICAgK3sNCiAgICAr
ICBmbG9hdCBfX2YgPSAqX19hOw0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgp
KF9fdjRzZil7IF9fZiwgX19mLCBfX2YsIF9fZiB9Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8g
TG9hZHMgYSBzY2FsYXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSBmcm9t
IHRoZQ0KICAgICsvLy8gICAgc3BlY2lmaWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2Eg
YW5kIGJyb2FkY2FzdHMgaXQgdG8gdGhlIGVsZW1lbnRzDQogICAgKy8vLyAgICBvZiBhIFs0IHgg
ZG91YmxlXSB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkJST0FEQ0FTVFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgVGhlIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9p
bnQgdmFsdWUgdG8gYmUgYnJvYWRjYXN0Lg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gd2hvc2UgNjQtYml0IGVsZW1lbnRzIGFyZSBzZXQNCiAgICAr
Ly8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfYnJvYWRjYXN0X3NkKGRv
dWJsZSBjb25zdCAqX19hKQ0KICAgICt7DQogICAgKyAgZG91YmxlIF9fZCA9ICpfX2E7DQogICAg
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmQpKF9fdjRkZil7IF9fZCwgX19kLCBfX2Qs
IF9fZCB9Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gTG9hZHMgYSBzY2FsYXIgc2luZ2xlLXBy
ZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSBmcm9tIHRoZQ0KICAgICsvLy8gICAgc3BlY2lm
aWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2EgYW5kIGJyb2FkY2FzdHMgaXQgdG8gdGhl
IGVsZW1lbnRzDQogICAgKy8vLyAgICBvZiBhIFs4IHggZmxvYXRdIHZlY3Rvci4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNUU1MgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBU
aGUgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBiZSBicm9hZGNhc3Qu
DQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIHdob3Nl
IDMyLWJpdCBlbGVtZW50cyBhcmUgc2V0DQogICAgKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRj
YXN0IHZhbHVlLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW0yNTZfYnJvYWRjYXN0X3NzKGZsb2F0IGNvbnN0ICpfX2EpDQogICAgK3sNCiAg
ICArICBmbG9hdCBfX2YgPSAqX19hOw0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20y
NTYpKF9fdjhzZil7IF9fZiwgX19mLCBfX2YsIF9fZiwgX19mLCBfX2YsIF9fZiwgX19mIH07DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyB0aGUgZGF0YSBmcm9tIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGZyb20gdGhlDQogICAgKy8vLyAgICBzcGVjaWZpZWQgYWRkcmVz
cyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byAxMjgtYml0DQogICAg
Ky8vLyAgICBlbGVtZW50cyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNURjEy
OCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICAr
Ly8vICAgIFRoZSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgYnJvYWRjYXN0
Lg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2hv
c2UgMTI4LWJpdCBlbGVtZW50cyBhcmUgc2V0DQogICAgKy8vLyAgICBlcXVhbCB0byB0aGUgYnJv
YWRjYXN0IHZhbHVlLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tMjU2X2Jyb2FkY2FzdF9wZChfX20xMjhkIGNvbnN0ICpfX2EpDQogICAg
K3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0
aW5faWEzMl92YnJvYWRjYXN0ZjEyOF9wZDI1NiAoX19hKTsNCiAgICArI2Vsc2UNCiAgICArICBf
X20xMjhkIF9fYiA9IF9tbV9sb2FkdV9wZCgoY29uc3QgZG91YmxlICopX19hKTsNCiAgICArICBy
ZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2IsIChfX3Yy
ZGYpX19iLA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAxLCAwLCAxKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyB0
aGUgZGF0YSBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gZnJvbSB0aGUNCiAg
ICArLy8vICAgIHNwZWNpZmllZCBhZGRyZXNzIHBvaW50ZWQgdG8gYnkgXGEgX19hIGFuZCBicm9h
ZGNhc3RzIGl0IHRvIDEyOC1iaXQNCiAgICArLy8vICAgIGVsZW1lbnRzIGluIGEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkJST0FEQ0FTVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBUaGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gdG8gYmUgYnJvYWRjYXN0Lg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZl
Y3RvciBvZiBbOCB4IGZsb2F0XSB3aG9zZSAxMjgtYml0IGVsZW1lbnRzIGFyZSBzZXQNCiAgICAr
Ly8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9icm9hZGNhc3RfcHMoX19t
MTI4IGNvbnN0ICpfX2EpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0
dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3Zicm9hZGNhc3RmMTI4X3BzMjU2IChfX2EpOw0K
ICAgICsjZWxzZQ0KICAgICsgIF9fbTEyOCBfX2IgPSBfbW1fbG9hZHVfcHMoKGNvbnN0IGZsb2F0
ICopX19hKTsNCiAgICArICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rvcigo
X192NHNmKV9fYiwgKF9fdjRzZilfX2IsDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgMCwgMSwgMiwgMyk7DQogICAgKyNlbmRpZg0KICAg
ICt9DQogICAgKw0KICAgICsvKiBTSU1EIGxvYWQgb3BzICovDQogICAgKy8vLyBMb2FkcyA0IGRv
dWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAzMi1ieXRlIGFsaWdu
ZWQNCiAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRv
IGEgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0
byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nDQogICAgKy8vLyAgICBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCiAgICAr
c3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9s
b2FkX3BkKGRvdWJsZSBjb25zdCAqX19wKQ0KICAgICt7DQogICAgKyAgcmV0dXJuICooX19tMjU2
ZCAqKV9fcDsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIExvYWRzIDggc2luZ2xlLXByZWNpc2lv
biBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhIDMyLWJ5dGUgYWxpZ25lZA0KICAgICsvLy8g
ICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X3ANCiAgICArLy8vICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9j
YXRpb24gY29udGFpbmluZyBmbG9hdCB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCiAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2
X2xvYWRfcHMoZmxvYXQgY29uc3QgKl9fcCkNCiAgICArew0KICAgICsgIHJldHVybiAqKF9fbTI1
NiAqKV9fcDsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIExvYWRzIDQgZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhbiB1bmFsaWduZWQNCiAgICArLy8vICAgIG1l
bW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TU9WVVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0K
ICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZw0KICAgICsvLy8gICAgcG9pbnQgdmFsdWVzLg0KICAgICsv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgbW92ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tMjU2X2xvYWR1X3BkKGRvdWJsZSBjb25zdCAqX19wKQ0KICAgICt7
DQogICAgKyAgc3RydWN0IF9fbG9hZHVfcGQgew0KICAgICsgICAgX19tMjU2ZCBfX3Y7DQogICAg
KyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQogICAgKyAg
cmV0dXJuICgoc3RydWN0IF9fbG9hZHVfcGQqKV9fcCktPl9fdjsNCiAgICArfQ0KICAgICsNCiAg
ICArLy8vIExvYWRzIDggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJv
bSBhbiB1bmFsaWduZWQNCiAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5
IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBt
ZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nDQogICAg
Ky8vLyAgICBwb2ludCB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCiAgICArc3RhdGlj
IF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2xvYWR1X3Bz
KGZsb2F0IGNvbnN0ICpfX3ApDQogICAgK3sNCiAgICArICBzdHJ1Y3QgX19sb2FkdV9wcyB7DQog
ICAgKyAgICBfX20yNTYgX192Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywg
X19tYXlfYWxpYXNfXykpOw0KICAgICsgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3BzKilfX3Ap
LT5fX3Y7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2Vy
IGRhdGEgZnJvbSBhIDMyLWJ5dGUgYWxpZ25lZCBtZW1vcnkNCiAgICArLy8vICAgIGxvY2F0aW9u
IHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gZWxlbWVudHMgb2YgYSAyNTYtYml0IGludGVnZXIg
dmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZN
T1ZEUUEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQog
ICAgKy8vLyAgICBBIDMyLWJ5dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIGludGVnZXINCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtb3ZlZCB2
YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW0yNTZfbG9hZF9zaTI1NihfX20yNTZpIGNvbnN0ICpfX3ApDQogICAgK3sNCiAgICAr
ICByZXR1cm4gKl9fcDsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIExvYWRzIDI1NiBiaXRzIG9m
IGludGVnZXIgZGF0YSBmcm9tIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24NCiAgICArLy8v
ICAgIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUVUgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAg
ICBBIHBvaW50ZXIgdG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50ZWdl
ciB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2xvYWR1X3NpMjU2KF9fbTI1NmkgY29uc3Qg
Kl9fcCkNCiAgICArew0KICAgICsgIHN0cnVjdCBfX2xvYWR1X3NpMjU2IHsNCiAgICArICAgIF9f
bTI1NmkgX192Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KICAgICsgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3NpMjU2KilfX3ApLT5fX3Y7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2VyIGRhdGEg
ZnJvbSBhbiB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uDQogICAgKy8vLyAgICBwb2ludGVkIHRv
IGJ5IFxhIF9fcCBpbnRvIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhpcyBpbnRyaW5zaWMg
bWF5DQogICAgKy8vLyAgICBwZXJmb3JtIGJldHRlciB0aGFuIFxjIF9tbTI1Nl9sb2FkdV9zaTI1
NiB3aGVuIHRoZSBkYXRhIGNyb3NzZXMgYSBjYWNoZQ0KICAgICsvLy8gICAgbGluZSBib3VuZGFy
eS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTEREUVUg
PC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8v
LyAgICBBIHBvaW50ZXIgdG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50
ZWdlciB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2xkZHF1X3NpMjU2KF9fbTI1NmkgY29u
c3QgKl9fcCkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9s
ZGRxdTI1NigoY2hhciBjb25zdCAqKV9fcCk7DQogICAgK30NCiAgICArDQogICAgKy8qIFNJTUQg
c3RvcmUgb3BzICovDQogICAgKy8vLyBTdG9yZXMgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBw
b2ludCB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbNCB4IGRv
dWJsZV0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkN
CiAgICArLy8vICAgIFxhIF9fcC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhIG1l
bW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCiAgICArLy8vICAgIGRvdWJsZS1w
cmVjaXNpb24gZmxvYWluZyBwb2ludCB2YWx1ZXMuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2
YWx1ZXMgdG8gYmUgbW92ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW0yNTZfc3RvcmVfcGQoZG91YmxlICpfX3AsIF9fbTI1NmQgX19hKQ0K
ICAgICt7DQogICAgKyAgKihfX20yNTZkICopX19wID0gX19hOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gU3RvcmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20g
YSAyNTYtYml0IHZlY3Rvcg0KICAgICsvLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRl
IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAgICBBIDMyLWJ5
dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZl
IHRoZQ0KICAgICsvLy8gICAgZmxvYXQgdmFsdWVzLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2
YWx1ZXMgdG8gYmUgbW92ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW0yNTZfc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMjU2IF9fYSkNCiAg
ICArew0KICAgICsgICooX19tMjU2ICopX19wID0gX19hOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gU3RvcmVzIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAy
NTYtYml0IHZlY3Rvcg0KICAgICsvLy8gICAgb2YgWzQgeCBkb3VibGVdIHRvIGFuIHVuYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBh
IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZG91YmxlLXByZWNpc2lvbg0K
ICAgICsvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3N0b3JldV9wZChkb3VibGUgKl9fcCwgX19tMjU2ZCBf
X2EpDQogICAgK3sNCiAgICArICBzdHJ1Y3QgX19zdG9yZXVfcGQgew0KICAgICsgICAgX19tMjU2
ZCBfX3Y7DQogICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19f
KSk7DQogICAgKyAgKChzdHJ1Y3QgX19zdG9yZXVfcGQqKV9fcCktPl9fdiA9IF9fYTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50
IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3INCiAgICArLy8vICAgIG9mIFs4IHggZmxvYXRd
IHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQUyA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZmxv
YXQgdmFsdWVzLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IHZl
Y3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQog
ICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZf
c3RvcmV1X3BzKGZsb2F0ICpfX3AsIF9fbTI1NiBfX2EpDQogICAgK3sNCiAgICArICBzdHJ1Y3Qg
X19zdG9yZXVfcHMgew0KICAgICsgICAgX19tMjU2IF9fdjsNCiAgICArICB9IF9fYXR0cmlidXRl
X18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICAoKHN0cnVjdCBfX3N0b3Jl
dV9wcyopX19wKS0+X192ID0gX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3RvcmVzIGlu
dGVnZXIgdmFsdWVzIGZyb20gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMzItYnl0ZQ0K
ICAgICsvLy8gICAgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3Au
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRQSA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8v
ICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3
aWxsIHJlY2VpdmUgdGhlDQogICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlcy4NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc3RvcmVfc2kyNTYoX19tMjU2aSAqX19wLCBfX20y
NTZpIF9fYSkNCiAgICArew0KICAgICsgICpfX3AgPSBfX2E7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBTdG9yZXMgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Ig
dG8gYW4gdW5hbGlnbmVkDQogICAgKy8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBi
eSBcYSBfX3AuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1PVkRRVSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3AN
CiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVj
ZWl2ZSB0aGUgaW50ZWdlciB2YWx1ZXMuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1v
dmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tMjU2X3N0b3JldV9zaTI1NihfX20yNTZpICpfX3AsIF9fbTI1NmkgX19hKQ0KICAgICt7DQog
ICAgKyAgc3RydWN0IF9fc3RvcmV1X3NpMjU2IHsNCiAgICArICAgIF9fbTI1NmkgX192Ow0KICAg
ICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KICAgICsg
ICgoc3RydWN0IF9fc3RvcmV1X3NpMjU2KilfX3ApLT5fX3YgPSBfX2E7DQogICAgK30NCiAgICAr
DQogICAgKy8qIENvbmRpdGlvbmFsIGxvYWQgb3BzICovDQogICAgKy8vLyBDb25kaXRpb25hbGx5
IGxvYWRzIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMgZnJvbSBhDQog
ICAgKy8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDEy
OC1iaXQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbMiB4IGRvdWJsZV0sIGRlcGVuZGluZyBvbiB0
aGUgbWFzayBiaXRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGRhdGENCiAgICArLy8vICAgIGVsZW1l
bnQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tN
T1ZQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAg
ICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRo
ZSBkb3VibGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMuDQog
ICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQogICAgKy8v
LyAgICBlYWNoIGRhdGEgZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFz
ayBiaXQgaXMgemVybywgdGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRo
ZSBtZW1vcnkgbG9jYXRpb24gaXMgbm90IGxvYWRlZCBhbmQgdGhlDQogICAgKy8vLyAgICBjb3Jy
ZXNwb25kaW5nIGZpZWxkIGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IHRoZSBsb2FkZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMxMjgNCiAgICArX21tX21hc2tsb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wLCBf
X20xMjhpIF9fbSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEz
Ml9tYXNrbG9hZHBkKChjb25zdCBfX3YyZGYgKilfX3AsIChfX3YyZGkpX19tKTsNCiAgICArfQ0K
ICAgICsNCiAgICArLy8vIENvbmRpdGlvbmFsbHkgbG9hZHMgZG91YmxlLXByZWNpc2lvbiBmbG9h
dGluZyBwb2ludCBlbGVtZW50cyBmcm9tIGENCiAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBw
b2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YNCiAgICArLy8vICAg
IFs0IHggZG91YmxlXSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRo
IGVhY2ggZGF0YQ0KICAgICsvLy8gICAgZWxlbWVudC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVt
b3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhlIGRvdWJsZS1wcmVjaXNpb24NCiAgICArLy8v
ICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBfX20NCiAgICArLy8v
ICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IHF1YWR3b3JkXSBjb250YWluaW5n
IHRoZSBtYXNrLiBUaGUgbW9zdA0KICAgICsvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2gg
cXVhZHdvcmQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGENCiAgICArLy8v
ICAgIG1hc2sgYml0IGlzIHplcm8sIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1v
cnkgbG9jYXRpb24gaXMgbm90DQogICAgKy8vLyAgICBsb2FkZWQgYW5kIHRoZSBjb3JyZXNwb25k
aW5nIGZpZWxkIGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQogICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBs
b2FkZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tMjU2X21hc2tsb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wLCBfX20yNTZp
IF9fbSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9tYXNr
bG9hZHBkMjU2KChjb25zdCBfX3Y0ZGYgKilfX3AsDQogICAgKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX20pOw0KICAgICt9DQogICAgKw0K
ICAgICsvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBv
aW50IGVsZW1lbnRzIGZyb20gYQ0KICAgICsvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQg
dG8gYnkgXGEgX19wIGludG8gYSAxMjgtYml0IHZlY3RvciBvZg0KICAgICsvLy8gICAgWzQgeCBm
bG9hdF0sIGRlcGVuZGluZyBvbiB0aGUgbWFzayBiaXRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGRh
dGENCiAgICArLy8vICAgIGVsZW1lbnQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2Nh
dGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBzaW5nbGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9h
dGluZyBwb2ludCB2YWx1ZXMuDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlm
aWNhbnQgYml0IG9mDQogICAgKy8vLyAgICBlYWNoIGRhdGEgZWxlbWVudCByZXByZXNlbnRzIHRo
ZSBtYXNrIGJpdHMuIElmIGEgbWFzayBiaXQgaXMgemVybywgdGhlDQogICAgKy8vLyAgICBjb3Jy
ZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gaXMgbm90IGxvYWRlZCBhbmQg
dGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSByZXR1cm4gdmFsdWUg
aXMgc2V0IHRvIHplcm8uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lu
bGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQogICAgK19tbV9tYXNrbG9hZF9wcyhm
bG9hdCBjb25zdCAqX19wLCBfX20xMjhpIF9fbSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMoKGNvbnN0IF9fdjRzZiAqKV9fcCwgKF9fdjRz
aSlfX20pOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBzaW5n
bGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KICAgICsvLy8gICAg
bWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAyNTYtYml0IHZlY3Rv
ciBvZg0KICAgICsvLy8gICAgWzggeCBmbG9hdF0sIGRlcGVuZGluZyBvbiB0aGUgbWFzayBiaXRz
IGFzc29jaWF0ZWQgd2l0aCBlYWNoIGRhdGENCiAgICArLy8vICAgIGVsZW1lbnQuDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQUyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEg
cG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBzaW5nbGUtcHJl
Y2lzaW9uDQogICAgKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMuDQogICAgKy8vLyBccGFy
YW0gX19tDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBkd29y
ZF0gY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3QNCiAgICArLy8vICAgIHNpZ25pZmljYW50
IGJpdCBvZiBlYWNoIGR3b3JkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbWFzayBiaXRzLiBJZiBh
IG1hc2sNCiAgICArLy8vICAgIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBp
biB0aGUgbWVtb3J5IGxvY2F0aW9uIGlzIG5vdCBsb2FkZWQNCiAgICArLy8vICAgIGFuZCB0aGUg
Y29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGlzIHNldCB0byB6ZXJvLg0K
ICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBsb2FkZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfbWFza2xvYWRfcHMoZmxvYXQgY29uc3QgKl9fcCwg
X19tMjU2aSBfX20pDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEz
Ml9tYXNrbG9hZHBzMjU2KChjb25zdCBfX3Y4c2YgKilfX3AsIChfX3Y4c2kpX19tKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLyogQ29uZGl0aW9uYWwgc3RvcmUgb3BzICovDQogICAgKy8vLyBNb3Zl
cyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2
ZWN0b3INCiAgICArLy8vICAgIG9mIFs4IHggZmxvYXRdIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHBv
aW50ZWQgdG8gYnkgXGEgX19wLCBhY2NvcmRpbmcgdG8NCiAgICArLy8vICAgIHRoZSBzcGVjaWZp
ZWQgbWFzay4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
cA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCBy
ZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAg
ICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBkd29yZF0gY29udGFpbmluZyB0aGUg
bWFzay4gVGhlIG1vc3QNCiAgICArLy8vICAgIHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGR3b3Jk
IGVsZW1lbnQgaW4gdGhlIG1hc2sgdmVjdG9yIHJlcHJlc2VudHMgdGhlDQogICAgKy8vLyAgICBt
YXNrIGJpdHMuIElmIGEgbWFzayBiaXQgaXMgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUg
ZnJvbSB2ZWN0b3INCiAgICArLy8vICAgIFxhIF9fYSBpcyBub3Qgc3RvcmVkIGFuZCB0aGUgY29y
cmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uDQogICAgKy8vLyAgICBwb2lu
dGVkIHRvIGJ5IFxhIF9fcCBpcyBub3QgY2hhbmdlZC4NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIHN0b3JlZC4NCiAgICArc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbTI1Nl9tYXNrc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMjU2aSBf
X20sIF9fbTI1NiBfX2EpDQogICAgK3sNCiAgICArICBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVw
czI1NigoX192OHNmICopX19wLCAoX192OHNpKV9fbSwgKF9fdjhzZilfX2EpOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gTW92ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJvbSBhIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQ0KICAgICsvLy8gICAgdG8gYSBtZW1vcnkgbG9jYXRp
b24gcG9pbnRlZCB0byBieSBcYSBfX3AsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkDQogICAg
Ky8vLyAgICBtYXNrLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZNQVNLTU9WUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3
aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBfX20NCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUg
bW9zdCBzaWduaWZpY2FudCBiaXQgb2YNCiAgICArLy8vICAgIGVhY2ggZmllbGQgaW4gdGhlIG1h
c2sgdmVjdG9yIHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcw0KICAg
ICsvLy8gICAgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZnJvbSB2ZWN0b3IgXGEgX19h
IGlzIG5vdCBzdG9yZWQgYW5kIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBmaWVsZCBp
biB0aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlzIG5vdA0KICAgICsv
Ly8gICAgY2hhbmdlZC4NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9y
ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KICAg
ICtfbW1fbWFza3N0b3JlX3BkKGRvdWJsZSAqX19wLCBfX20xMjhpIF9fbSwgX19tMTI4ZCBfX2Ep
DQogICAgK3sNCiAgICArICBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVwZCgoX192MmRmICopX19w
LCAoX192MmRpKV9fbSwgKF9fdjJkZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92
ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXQ0KICAgICsvLy8gICAgdG8gYSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBc
YSBfX3AsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkDQogICAgKy8vLyAgICBtYXNrLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAg
ICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZs
b2F0IHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBfX20NCiAgICArLy8vICAgIEEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IHF1YWR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUg
bW9zdA0KICAgICsvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggcXVhZHdvcmQgZWxlbWVu
dCBpbiB0aGUgbWFzayB2ZWN0b3IgcmVwcmVzZW50cw0KICAgICsvLy8gICAgdGhlIG1hc2sgYml0
cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIHZl
Y3Rvcg0KICAgICsvLy8gICAgX19hIGlzIG5vdCBzdG9yZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5n
IGZpZWxkIGluIHRoZSBtZW1vcnkgbG9jYXRpb24NCiAgICArLy8vICAgIHBvaW50ZWQgdG8gYnkg
XGEgX19wIGlzIG5vdCBjaGFuZ2VkLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRv
IGJlIHN0b3JlZC4NCiAgICArc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbTI1Nl9tYXNrc3RvcmVfcGQoZG91YmxlICpfX3AsIF9fbTI1NmkgX19tLCBfX20y
NTZkIF9fYSkNCiAgICArew0KICAgICsgIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkMjU2KChf
X3Y0ZGYgKilfX3AsIChfX3Y0ZGkpX19tLCAoX192NGRmKV9fYSk7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBNb3ZlcyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9t
IGEgMTI4LWJpdCB2ZWN0b3INCiAgICArLy8vICAgIG9mIFs0IHggZmxvYXRdIHRvIGEgbWVtb3J5
IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLCBhY2NvcmRpbmcgdG8NCiAgICArLy8vICAg
IHRoZSBzcGVjaWZpZWQgbWFzay4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9u
IHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQogICAgKy8vLyBccGFyYW0gX19t
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWFz
ay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQogICAgKy8vLyAgICBlYWNoIGZpZWxkIGlu
IHRoZSBtYXNrIHZlY3RvciByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzayBiaXQg
aXMNCiAgICArLy8vICAgIHplcm8sIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdmVjdG9y
IF9fYSBpcyBub3Qgc3RvcmVkIGFuZCB0aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZmll
bGQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpcyBub3QNCiAg
ICArLy8vICAgIGNoYW5nZWQuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBz
dG9yZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOA0K
ICAgICtfbW1fbWFza3N0b3JlX3BzKGZsb2F0ICpfX3AsIF9fbTEyOGkgX19tLCBfX20xMjggX19h
KQ0KICAgICt7DQogICAgKyAgX19idWlsdGluX2lhMzJfbWFza3N0b3JlcHMoKF9fdjRzZiAqKV9f
cCwgKF9fdjRzaSlfX20sIChfX3Y0c2YpX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLyogQ2Fj
aGVhYmlsaXR5IHN1cHBvcnQgb3BzICovDQogICAgKy8vLyBNb3ZlcyBpbnRlZ2VyIGRhdGEgZnJv
bSBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gYSAzMi1ieXRlDQogICAgKy8vLyAgICBhbGln
bmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxh
Z2dlZCBhcw0KICAgICsvLy8gICAgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1c2VkIGFn
YWluIHNvb24pLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNT1ZOVERRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
YQ0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2Nh
dGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCiAgICArLy8vICAgIGludGVnZXIgdmFsdWVzLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4NCiAgICArc3RhdGljIF9faW5saW5l
IHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zdHJlYW1fc2kyNTYoX19tMjU2
aSAqX19hLCBfX20yNTZpIF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICAr
ICBfX2J1aWx0aW5faWEzMl9tb3ZudGRxMjU2ICgoX192NGRpICopX19hLCAoX192NGRpKV9fYik7
DQogICAgKyNlbHNlDQogICAgKyAgdHlwZWRlZiBfX3Y0ZGkgX192NGRpX2FsaWduZWQgX19hdHRy
aWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCiAgICArICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3Rv
cmUoKF9fdjRkaV9hbGlnbmVkKV9fYiwgKF9fdjRkaV9hbGlnbmVkKilfX2EpOw0KICAgICsjZW5k
aWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIE1vdmVzIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVz
IGZyb20gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0NCiAgICArLy8vICAgIHRvIGEg
MzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhl
IGRhdGEgaXMNCiAgICArLy8vICAgIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0
byBiZSB1c2VkIGFnYWluIHNvb24pLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZNT1ZOVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0ZSBhbGlnbmVk
IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCiAgICArLy8vICAgIGRvdWJs
ZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3N0cmVhbV9wZChkb3VibGUgKl9fYSwgX19tMjU2ZCBf
X2IpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgX19idWlsdGluX2lhMzJf
bW92bnRwZDI1NiAoX19hLCAoX192NGRmKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgdHlwZWRl
ZiBfX3Y0ZGYgX192NGRmX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCiAg
ICArICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjRkZl9hbGlnbmVkKV9fYiwgKF9f
djRkZl9hbGlnbmVkKilfX2EpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IE1vdmVzIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYt
Yml0IHZlY3Rvcg0KICAgICsvLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWdu
ZWQgbWVtb3J5IGxvY2F0aW9uLiBUbyBtaW5pbWl6ZQ0KICAgICsvLy8gICAgY2FjaGluZywgdGhl
IGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdh
aW4NCiAgICArLy8vICAgIHNvb24pLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZNT1ZOVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0ZSBhbGlnbmVk
IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCiAgICArLy8vICAgIHNpbmds
ZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc3RyZWFtX3BzKGZsb2F0ICpfX3AsIF9fbTI1NiBfX2Ep
DQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgX19idWlsdGluX2lhMzJfbW92
bnRwczI1NiAoX19wLCAoX192OHNmKV9fYSk7DQogICAgKyNlbHNlDQogICAgKyAgdHlwZWRlZiBf
X3Y4c2YgX192OHNmX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCiAgICAr
ICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjhzZl9hbGlnbmVkKV9fYSwgKF9fdjhz
Zl9hbGlnbmVkKilfX3ApOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLyogQ3Jl
YXRlIHZlY3RvcnMgKi8NCiAgICArLy8vIENyZWF0ZSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhh
cyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdW5kZWZpbmVk
IHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tMjU2X3VuZGVmaW5lZF9wZCh2b2lkKQ0KICAgICt7DQogICAgKyNpZmRlZiBf
X0dOVUNfXw0KICAgICsgIF9fbTI1NmQgX19YID0gX19YOw0KICAgICsgIHJldHVybiBfX1g7DQog
ICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3VuZGVmMjU2
KCk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ3JlYXRlIGEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2l0aCB1bmRlZmluZWQgdmFsdWVzLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMjU2IF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfdW5kZWZpbmVkX3BzKHZvaWQpDQogICAgK3sN
CiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgX19tMjU2IF9fWCA9IF9fWDsNCiAgICArICBy
ZXR1cm4gX19YOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9p
YTMyX3VuZGVmMjU2KCk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ3Jl
YXRlIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHVuZGVmaW5lZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTI1NmkgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl91bmRlZmluZWRfc2kyNTYodm9pZCkNCiAgICAr
ew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICBfX20yNTZpIF9fWCA9IF9fWDsNCiAgICAr
ICByZXR1cm4gX19YOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0
aW5faWEzMl91bmRlZjI1NigpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0NCiAgICArLy8vICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQrVklOU0VSVEYxMjggPC9jPg0KICAgICsvLy8g
ICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzI1NToxOTJdDQogICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8g
XHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XQ0KICAgICsvLy8gICAgb2Yg
dGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2MNCiAgICArLy8vICAgIEEgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3
OjY0XQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2QNCiAg
ICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbNjM6MF0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0uDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc2V0X3BkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRv
dWJsZSBfX2MsIGRvdWJsZSBfX2QpDQogICAgK3sNCiAgICArICByZXR1cm4gX19leHRlbnNpb25f
XyAoX19tMjU2ZCl7IF9fZCwgX19jLCBfX2IsIF9fYSB9Ow0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdIGluaXRpYWxpemVkDQogICAgKy8vLyAgICB3aXRoIHRoZSBzcGVjaWZpZWQgc2luZ2xlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlz
IGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmlj
DQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjIyNF0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoxOTJdDQogICAg
Ky8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYw0KICAgICsvLy8gICAg
QSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxOTE6MTYwXQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxw
YXJhbSBfX2QNCiAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjEyOF0NCiAgICArLy8vICAgIG9mIHRo
ZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19lDQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5
Nl0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19mDQogICAg
Ky8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzk1OjY0XQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICAr
Ly8vIFxwYXJhbSBfX2cNCiAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJdDQogICAgKy8vLyAgICBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9faA0KICAgICsvLy8gICAgQSBzaW5nbGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsz
MTowXQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGlu
aXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
ICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0y
NTZfc2V0X3BzKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MsIGZsb2F0IF9fZCwNCiAg
ICArICAgICAgICAgICAgICBmbG9hdCBfX2UsIGZsb2F0IF9fZiwgZmxvYXQgX19nLCBmbG9hdCBf
X2gpDQogICAgK3sNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2KXsgX19oLCBf
X2csIF9fZiwgX19lLCBfX2QsIF9fYywgX19iLCBfX2EgfTsNCiAgICArfQ0KICAgICsNCiAgICAr
Ly8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdpdGgg
dGhlIHNwZWNpZmllZA0KICAgICsvLy8gICAgMzItYml0IGludGVncmFsIHZhbHVlcy4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3Jy
ZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9faTANCiAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHBhcmFtIF9faTENCiAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MTkyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9faTINCiAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxOTE6MTYwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9f
aTMNCiAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9faTQNCiAg
ICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsxMjc6OTZdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19pNQ0KICAgICsvLy8g
ICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjY0
XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9faTYNCiAgICArLy8vICAgIEEgMzIt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2k3DQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0gb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW0yNTZfc2V0X2VwaTMyKGludCBfX2kwLCBpbnQgX19pMSwgaW50IF9faTIsIGludCBfX2kzLA0K
ICAgICsgICAgICAgICAgICAgICAgIGludCBfX2k0LCBpbnQgX19pNSwgaW50IF9faTYsIGludCBf
X2k3KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmkpKF9fdjhz
aSl7IF9faTcsIF9faTYsIF9faTUsIF9faTQsIF9faTMsIF9faTIsIF9faTEsIF9faTAgfTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9y
IGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KICAgICsvLy8gICAgMTYtYml0IGludGVn
cmFsIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9u
IGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICArLy8vICAgaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fdzE1DQogICAgKy8vLyAgICBBIDE2
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjI0MF0gb2Yg
dGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cxNA0KICAgICsvLy8gICAgQSAxNi1iaXQg
aW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOToyMjRdIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MTMNCiAgICArLy8vICAgIEEgMTYtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjA4XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fdzEyDQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjA3OjE5Ml0gb2YgdGhlIHJlc3VsdC4NCiAg
ICArLy8vIFxwYXJhbSBfX3cxMQ0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxNzZdIG9mIHRoZSByZXN1bHQuDQogICAgKy8v
LyBccGFyYW0gX193MTANCiAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTYwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9fdzA5DQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTU5OjE0NF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X3cwOA0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzE0MzoxMjhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MDcN
CiAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzA2DQogICAg
Ky8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzA1DQogICAgKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODBd
IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MDQNCiAgICArLy8vICAgIEEgMTYt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cwMw0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fdzAyDQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccGFyYW0gX193MDENCiAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxw
YXJhbSBfX3cwMA0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBB
biBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICtzdGF0aWMgX19pbmxp
bmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3NldF9lcGkxNihzaG9y
dCBfX3cxNSwgc2hvcnQgX193MTQsIHNob3J0IF9fdzEzLCBzaG9ydCBfX3cxMiwNCiAgICArICAg
ICAgICAgICAgICAgICBzaG9ydCBfX3cxMSwgc2hvcnQgX193MTAsIHNob3J0IF9fdzA5LCBzaG9y
dCBfX3cwOCwNCiAgICArICAgICAgICAgICAgICAgICBzaG9ydCBfX3cwNywgc2hvcnQgX193MDYs
IHNob3J0IF9fdzA1LCBzaG9ydCBfX3cwNCwNCiAgICArICAgICAgICAgICAgICAgICBzaG9ydCBf
X3cwMywgc2hvcnQgX193MDIsIHNob3J0IF9fdzAxLCBzaG9ydCBfX3cwMCkNCiAgICArew0KICAg
ICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20yNTZpKShfX3YxNmhpKXsgX193MDAsIF9fdzAx
LCBfX3cwMiwgX193MDMsIF9fdzA0LCBfX3cwNSwgX193MDYsDQogICAgKyAgICBfX3cwNywgX193
MDgsIF9fdzA5LCBfX3cxMCwgX193MTEsIF9fdzEyLCBfX3cxMywgX193MTQsIF9fdzE1IH07DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQNCiAgICArLy8vICAgIDgtYml0IGludGVn
cmFsIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9u
IGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICArLy8vICAgaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYjMxDQogICAgKy8vLyAgICBBbiA4
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjI0OF0gb2Yg
dGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IzMA0KICAgICsvLy8gICAgQW4gOC1iaXQg
aW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI0NzoyNDBdIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMjkNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzk6MjMyXSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fYjI4DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjMxOjIyNF0gb2YgdGhlIHJlc3VsdC4NCiAg
ICArLy8vIFxwYXJhbSBfX2IyNw0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoyMTZdIG9mIHRoZSByZXN1bHQuDQogICAgKy8v
LyBccGFyYW0gX19iMjYNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsyMTU6MjA4XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9fYjI1DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMjA3OjIwMF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X2IyNA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzE5OToxOTJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMjMN
CiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxOTE6MTg0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjIyDQogICAg
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MTgzOjE3Nl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IyMQ0KICAgICsvLy8g
ICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE3NTox
NjhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMjANCiAgICArLy8vICAgIEFu
IDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNjc6MTYwXSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjE5DQogICAgKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjE1Ml0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IxOA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1MToxNDRdIG9mIHRoZSByZXN1
bHQuDQogICAgKy8vLyBccGFyYW0gX19iMTcNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNDM6MTM2XSBvZiB0aGUgcmVzdWx0Lg0K
ICAgICsvLy8gXHBhcmFtIF9fYjE2DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTM1OjEyOF0gb2YgdGhlIHJlc3VsdC4NCiAgICAr
Ly8vIFxwYXJhbSBfX2IxNQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cGFyYW0gX19iMTQNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsxMTk6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFt
IF9fYjEzDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2Ix
Mg0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IxMQ0KICAg
ICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
Wzk1Ojg4XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjEwDQogICAgKy8vLyAg
ICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbODc6ODBd
IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMDkNCiAgICArLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo3Ml0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IwOA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fYjA3DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccGFyYW0gX19iMDYNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxw
YXJhbSBfX2IwNQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9f
YjA0DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMDMNCiAg
ICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFszMToyNF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IwMg0KICAgICsvLy8g
ICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2
XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjAxDQogICAgKy8vLyAgICBBbiA4
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6OF0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IwMA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW0yNTZfc2V0X2VwaTgoY2hhciBfX2IzMSwgY2hhciBfX2IzMCwgY2hhciBfX2IyOSwgY2hhciBf
X2IyOCwNCiAgICArICAgICAgICAgICAgICAgIGNoYXIgX19iMjcsIGNoYXIgX19iMjYsIGNoYXIg
X19iMjUsIGNoYXIgX19iMjQsDQogICAgKyAgICAgICAgICAgICAgICBjaGFyIF9fYjIzLCBjaGFy
IF9fYjIyLCBjaGFyIF9fYjIxLCBjaGFyIF9fYjIwLA0KICAgICsgICAgICAgICAgICAgICAgY2hh
ciBfX2IxOSwgY2hhciBfX2IxOCwgY2hhciBfX2IxNywgY2hhciBfX2IxNiwNCiAgICArICAgICAg
ICAgICAgICAgIGNoYXIgX19iMTUsIGNoYXIgX19iMTQsIGNoYXIgX19iMTMsIGNoYXIgX19iMTIs
DQogICAgKyAgICAgICAgICAgICAgICBjaGFyIF9fYjExLCBjaGFyIF9fYjEwLCBjaGFyIF9fYjA5
LCBjaGFyIF9fYjA4LA0KICAgICsgICAgICAgICAgICAgICAgY2hhciBfX2IwNywgY2hhciBfX2Iw
NiwgY2hhciBfX2IwNSwgY2hhciBfX2IwNCwNCiAgICArICAgICAgICAgICAgICAgIGNoYXIgX19i
MDMsIGNoYXIgX19iMDIsIGNoYXIgX19iMDEsIGNoYXIgX19iMDApDQogICAgK3sNCiAgICArICBy
ZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSkoX192MzJxaSl7DQogICAgKyAgICBfX2IwMCwg
X19iMDEsIF9fYjAyLCBfX2IwMywgX19iMDQsIF9fYjA1LCBfX2IwNiwgX19iMDcsDQogICAgKyAg
ICBfX2IwOCwgX19iMDksIF9fYjEwLCBfX2IxMSwgX19iMTIsIF9fYjEzLCBfX2IxNCwgX19iMTUs
DQogICAgKyAgICBfX2IxNiwgX19iMTcsIF9fYjE4LCBfX2IxOSwgX19iMjAsIF9fYjIxLCBfX2Iy
MiwgX19iMjMsDQogICAgKyAgICBfX2IyNCwgX19iMjUsIF9fYjI2LCBfX2IyNywgX19iMjgsIF9f
YjI5LCBfX2IzMCwgX19iMzENCiAgICArICB9Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29u
c3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3Bl
Y2lmaWVkDQogICAgKy8vLyAgICA2NC1iaXQgaW50ZWdyYWwgdmFsdWVzLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURRK1ZJTlNFUlRGMTI4
IDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iDQog
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMTkxOjEyOF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2MNCiAgICArLy8v
ICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6
NjRdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19kDQogICAgKy8vLyAgICBBIDY0
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MF0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW0yNTZfc2V0X2VwaTY0eChsb25nIGxvbmcgX19hLCBsb25nIGxvbmcgX19iLCBs
b25nIGxvbmcgX19jLCBsb25nIGxvbmcgX19kKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fZXh0
ZW5zaW9uX18gKF9fbTI1NmkpKF9fdjRkaSl7IF9fZCwgX19jLCBfX2IsIF9fYSB9Ow0KICAgICt9
DQogICAgKw0KICAgICsvKiBDcmVhdGUgdmVjdG9ycyB3aXRoIGVsZW1lbnRzIGluIHJldmVyc2Ug
b3JkZXIgKi8NCiAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0sDQogICAgKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNl
IG9yZGVyIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBm
bG9hdGluZy1wb2ludCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlVOUENLTFBEK1ZJTlNFUlRGMTI4IDwvYz4NCiAgICArLy8vICAgaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFs2MzowXQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjY0XQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxwYXJhbSBfX2MNCiAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9h
dGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjEyOF0NCiAgICAr
Ly8vICAgIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19kDQogICAgKy8vLyAgICBB
IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzI1NToxOTJdDQogICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tMjU2X3NldHJfcGQoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9f
YywgZG91YmxlIF9fZCkNCiAgICArew0KICAgICsgIHJldHVybiBfbW0yNTZfc2V0X3BkKF9fZCwg
X19jLCBfX2IsIF9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0sDQogICAgKy8vLyAgICBp
bml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGggdGhlIHNwZWNpZmllZCBzaW5nbGUtcHJl
Y2lzaW9uDQogICAgKy8vLyAgICBmbG9hdC1wb2ludCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBh
IHNwZWNpZmljDQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0NCiAgICArLy8vICAgIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXQ0K
ICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2MNCiAgICArLy8v
ICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbOTU6NjRdDQogICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8g
XHBhcmFtIF9fZA0KICAgICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdDQogICAgKy8vLyAgICBvZiB0
aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fZQ0KICAgICsvLy8gICAgQSBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6
MTI4XQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2YNCiAg
ICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMTkxOjE2MF0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQog
ICAgKy8vLyBccGFyYW0gX19nDQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRp
bmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoxOTJdDQogICAgKy8v
LyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9faA0KICAgICsvLy8gICAgQSBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsyNTU6MjI0XQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1
cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW0yNTZfc2V0cl9wcyhmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jLCBmbG9h
dCBfX2QsDQogICAgKyAgICAgICAgICAgICAgIGZsb2F0IF9fZSwgZmxvYXQgX19mLCBmbG9hdCBf
X2csIGZsb2F0IF9faCkNCiAgICArew0KICAgICsgIHJldHVybiBfbW0yNTZfc2V0X3BzKF9faCwg
X19nLCBfX2YsIF9fZSwgX19kLCBfX2MsIF9fYiwgX19hKTsNCiAgICArfQ0KICAgICsNCiAgICAr
Ly8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiBy
ZXZlcnNlIG9yZGVyDQogICAgKy8vLyAgICB3aXRoIHRoZSBzcGVjaWZpZWQgMzItYml0IGludGVn
cmFsIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9u
IGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICArLy8vICAgaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9faTANCiAgICArLy8vICAgIEEgMzIt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXSBvZiB0aGUg
cmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9faTENCiAgICArLy8vICAgIEEgMzItYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxwYXJhbSBfX2kyDQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuDQogICAgKy8v
LyBccGFyYW0gX19pMw0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJh
bSBfX2k0DQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2k1
DQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTkxOjE2MF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2k2DQogICAg
Ky8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MjIzOjE5Ml0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2k3DQogICAgKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjIy
NF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc2V0cl9lcGkzMihpbnQgX19pMCwgaW50IF9faTEsIGlu
dCBfX2kyLCBpbnQgX19pMywNCiAgICArICAgICAgICAgICAgICAgICAgaW50IF9faTQsIGludCBf
X2k1LCBpbnQgX19pNiwgaW50IF9faTcpDQogICAgK3sNCiAgICArICByZXR1cm4gX21tMjU2X3Nl
dF9lcGkzMihfX2k3LCBfX2k2LCBfX2k1LCBfX2k0LCBfX2kzLCBfX2kyLCBfX2kxLCBfX2kwKTsN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVj
dG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQogICAgKy8vLyAgICB3aXRoIHRoZSBz
cGVjaWZpZWQgMTYtYml0IGludGVncmFsIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
aXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lm
aWMNCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
dzE1DQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cxNA0KICAg
ICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzEzDQogICAgKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJd
IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MTINCiAgICArLy8vICAgIEEgMTYt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo0OF0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cxMQ0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fdzEwDQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccGFyYW0gX193MDkNCiAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cGFyYW0gX193MDgNCiAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFt
IF9fdzA3DQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTQzOjEyOF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cw
Ng0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzE1OToxNDRdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MDUNCiAg
ICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsxNzU6MTYwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzA0DQogICAgKy8v
LyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkx
OjE3Nl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cwMw0KICAgICsvLy8gICAg
QSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIwNzoxOTJd
IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MDINCiAgICArLy8vICAgIEEgMTYt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjA4XSBvZiB0
aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzAxDQogICAgKy8vLyAgICBBIDE2LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM5OjIyNF0gb2YgdGhlIHJl
c3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cwMA0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToyNDBdIG9mIHRoZSByZXN1bHQu
DQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9y
Lg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tMjU2X3NldHJfZXBpMTYoc2hvcnQgX193MTUsIHNob3J0IF9fdzE0LCBzaG9ydCBfX3cxMywg
c2hvcnQgX193MTIsDQogICAgKyAgICAgICBzaG9ydCBfX3cxMSwgc2hvcnQgX193MTAsIHNob3J0
IF9fdzA5LCBzaG9ydCBfX3cwOCwNCiAgICArICAgICAgIHNob3J0IF9fdzA3LCBzaG9ydCBfX3cw
Niwgc2hvcnQgX193MDUsIHNob3J0IF9fdzA0LA0KICAgICsgICAgICAgc2hvcnQgX193MDMsIHNo
b3J0IF9fdzAyLCBzaG9ydCBfX3cwMSwgc2hvcnQgX193MDApDQogICAgK3sNCiAgICArICByZXR1
cm4gX21tMjU2X3NldF9lcGkxNihfX3cwMCwgX193MDEsIF9fdzAyLCBfX3cwMywNCiAgICArICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3cwNCwgX193MDUsIF9fdzA2LCBfX3cwNywNCiAgICAr
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3cwOCwgX193MDksIF9fdzEwLCBfX3cxMSwNCiAg
ICArICAgICAgICAgICAgICAgICAgICAgICAgICBfX3cxMiwgX193MTMsIF9fdzE0LCBfX3cxNSk7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KICAgICsvLy8gICAgd2l0aCB0aGUg
c3BlY2lmaWVkIDgtYml0IGludGVncmFsIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
aXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lm
aWMNCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
YjMxDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjMwDQogICAg
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MTU6OF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IyOQ0KICAgICsvLy8gICAg
QW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjI4DQogICAgKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MjRdIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMjcNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxwYXJhbSBfX2IyNg0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHBhcmFtIF9fYjI1DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFy
YW0gX19iMjQNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2Iy
Mw0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjIyDQogICAg
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
Nzk6NzJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMjENCiAgICArLy8vICAg
IEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs4Nzo4MF0g
b2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IyMA0KICAgICsvLy8gICAgQW4gOC1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1Ojg4XSBvZiB0aGUg
cmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjE5DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fYjE4DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4NCiAg
ICArLy8vIFxwYXJhbSBfX2IxNw0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8v
LyBccGFyYW0gX19iMTYNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9fYjE1DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTM1OjEyOF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X2IxNA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzE0MzoxMzZdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMTMN
CiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxNTE6MTQ0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjEyDQogICAg
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MTU5OjE1Ml0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IxMQ0KICAgICsvLy8g
ICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE2Nzox
NjBdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMTANCiAgICArLy8vICAgIEFu
IDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTY4XSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjA5DQogICAgKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTgzOjE3Nl0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IwOA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxODRdIG9mIHRoZSByZXN1
bHQuDQogICAgKy8vLyBccGFyYW0gX19iMDcNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTk6MTkyXSBvZiB0aGUgcmVzdWx0Lg0K
ICAgICsvLy8gXHBhcmFtIF9fYjA2DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjA3OjIwMF0gb2YgdGhlIHJlc3VsdC4NCiAgICAr
Ly8vIFxwYXJhbSBfX2IwNQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzIxNToyMDhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cGFyYW0gX19iMDQNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFt
IF9fYjAzDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMjMxOjIyNF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2Iw
Mg0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzIzOToyMzJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMDENCiAg
ICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsyNDc6MjQwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjAwDQogICAgKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1
OjI0OF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1
Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc2V0cl9lcGk4KGNoYXIgX19iMzEsIGNoYXIgX19i
MzAsIGNoYXIgX19iMjksIGNoYXIgX19iMjgsDQogICAgKyAgICAgICAgICAgICAgICAgY2hhciBf
X2IyNywgY2hhciBfX2IyNiwgY2hhciBfX2IyNSwgY2hhciBfX2IyNCwNCiAgICArICAgICAgICAg
ICAgICAgICBjaGFyIF9fYjIzLCBjaGFyIF9fYjIyLCBjaGFyIF9fYjIxLCBjaGFyIF9fYjIwLA0K
ICAgICsgICAgICAgICAgICAgICAgIGNoYXIgX19iMTksIGNoYXIgX19iMTgsIGNoYXIgX19iMTcs
IGNoYXIgX19iMTYsDQogICAgKyAgICAgICAgICAgICAgICAgY2hhciBfX2IxNSwgY2hhciBfX2Ix
NCwgY2hhciBfX2IxMywgY2hhciBfX2IxMiwNCiAgICArICAgICAgICAgICAgICAgICBjaGFyIF9f
YjExLCBjaGFyIF9fYjEwLCBjaGFyIF9fYjA5LCBjaGFyIF9fYjA4LA0KICAgICsgICAgICAgICAg
ICAgICAgIGNoYXIgX19iMDcsIGNoYXIgX19iMDYsIGNoYXIgX19iMDUsIGNoYXIgX19iMDQsDQog
ICAgKyAgICAgICAgICAgICAgICAgY2hhciBfX2IwMywgY2hhciBfX2IwMiwgY2hhciBfX2IwMSwg
Y2hhciBfX2IwMCkNCiAgICArew0KICAgICsgIHJldHVybiBfbW0yNTZfc2V0X2VwaTgoX19iMDAs
IF9fYjAxLCBfX2IwMiwgX19iMDMsIF9fYjA0LCBfX2IwNSwgX19iMDYsIF9fYjA3LA0KICAgICsg
ICAgICAgICAgICAgICAgICAgICAgICAgX19iMDgsIF9fYjA5LCBfX2IxMCwgX19iMTEsIF9fYjEy
LCBfX2IxMywgX19iMTQsIF9fYjE1LA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgX19i
MTYsIF9fYjE3LCBfX2IxOCwgX19iMTksIF9fYjIwLCBfX2IyMSwgX19iMjIsIF9fYjIzLA0KICAg
ICsgICAgICAgICAgICAgICAgICAgICAgICAgX19iMjQsIF9fYjI1LCBfX2IyNiwgX19iMjcsIF9f
YjI4LCBfX2IyOSwgX19iMzAsIF9fYjMxKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0
cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9y
ZGVyDQogICAgKy8vLyAgICB3aXRoIHRoZSBzcGVjaWZpZWQgNjQtYml0IGludGVncmFsIHZhbHVl
cy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENL
TFFEUStWSU5TRVJURjEyOCA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8g
XHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X2MNCiAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxOTE6MTI4XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fZA0KICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzI1NToxOTJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXpl
ZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3NldHJfZXBpNjR4KGxvbmcgbG9uZyBfX2Es
IGxvbmcgbG9uZyBfX2IsIGxvbmcgbG9uZyBfX2MsIGxvbmcgbG9uZyBfX2QpDQogICAgK3sNCiAg
ICArICByZXR1cm4gX21tMjU2X3NldF9lcGk2NHgoX19kLCBfX2MsIF9fYiwgX19hKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLyogQ3JlYXRlIHZlY3RvcnMgd2l0aCByZXBlYXRlZCBlbGVtZW50cyAq
Lw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSwgd2l0aCBlYWNoDQogICAgKy8vLyAgICBvZiB0aGUgZm91ciBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQogICAg
Ky8vLyAgICBzcGVjaWZpZWQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCtW
SU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X3cNCiAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3INCiAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCiAgICArc3RhdGljIF9faW5saW5lIF9f
bTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zZXQxX3BkKGRvdWJsZSBfX3cp
DQogICAgK3sNCiAgICArICByZXR1cm4gX21tMjU2X3NldF9wZChfX3csIF9fdywgX193LCBfX3cp
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLCB3aXRoIGVhY2gNCiAgICArLy8vICAgIG9mIHRo
ZSBlaWdodCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBz
ZXQgdG8gdGhlDQogICAgKy8vLyAgICBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUEVSTUlMUFMrVklOU0VSVEYxMjggPC9jPg0KICAgICsvLy8gICBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX193DQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9y
DQogICAgKy8vLyAgICBlbGVtZW50IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBB
biBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0
XS4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tMjU2X3NldDFfcHMoZmxvYXQgX193KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9tbTI1Nl9z
ZXRfcHMoX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3cpOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzgg
eCBpMzJdLCB3aXRoIGVhY2ggb2YgdGhlDQogICAgKy8vLyAgICAzMi1iaXQgaW50ZWdyYWwgdmVj
dG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ3JhbA0KICAgICsv
Ly8gICAgdmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBFUk1JTFBTK1ZJTlNFUlRGMTI4IDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9faQ0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQog
ICAgKy8vLyAgICByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTMyXS4NCiAgICArc3RhdGljIF9faW5saW5lIF9f
bTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zZXQxX2VwaTMyKGludCBfX2kp
DQogICAgK3sNCiAgICArICByZXR1cm4gX21tMjU2X3NldF9lcGkzMihfX2ksIF9faSwgX19pLCBf
X2ksIF9faSwgX19pLCBfX2ksIF9faSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1
Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpMTZdLCB3aXRoIGVhY2ggb2Yg
dGhlDQogICAgKy8vLyAgICAxNi1iaXQgaW50ZWdyYWwgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0
aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ3JhbA0KICAgICsvLy8gICAgdmFsdWUuDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTSFVGQitWSU5TRVJURjEy
OCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3cNCiAgICAr
Ly8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZl
Y3RvciBlbGVtZW50IG9mIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpMTZdLg0K
ICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
MjU2X3NldDFfZXBpMTYoc2hvcnQgX193KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9tbTI1Nl9z
ZXRfZXBpMTYoX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csDQogICAgKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193
LCBfX3cpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzMyIHggaThdLCB3aXRoIGVhY2ggb2YgdGhlDQogICAgKy8vLyAgICA4
LWJpdCBpbnRlZ3JhbCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgOC1iaXQg
aW50ZWdyYWwgdmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBTSFVGQitWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KICAgICsvLy8gICAg
cmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbMzIgeCBpOF0uDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc2V0MV9lcGk4KGNoYXIgX19iKQ0KICAgICt7DQog
ICAgKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpOChfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19i
LCBfX2IsIF9fYiwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgIF9fYiwgX19iLCBfX2Is
IF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAg
X19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsDQogICAgKyAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGk2NF0sIHdpdGggZWFjaCBvZiB0aGUNCiAgICArLy8vICAgIDY0LWJpdCBpbnRl
Z3JhbCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgNjQtYml0IGludGVncmFs
DQogICAgKy8vLyAgICB2YWx1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWTU9WRERVUCtWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX3ENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KICAgICsv
Ly8gICAgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGk2NF0uDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZp
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc2V0MV9lcGk2NHgobG9uZyBsb25nIF9f
cSkNCiAgICArew0KICAgICsgIHJldHVybiBfbW0yNTZfc2V0X2VwaTY0eChfX3EsIF9fcSwgX19x
LCBfX3EpOw0KICAgICt9DQogICAgKw0KICAgICsvKiBDcmVhdGUgX196ZXJvZWQgdmVjdG9ycyAq
Lw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSB3aXRoIGFsbA0KICAgICsvLy8gICAgdmVjdG9yIGVsZW1lbnRzIGluaXRp
YWxpemVkIHRvIHplcm8uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHJldHVy
bnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2l0aCBhbGwgZWxlbWVudHMgc2V0
IHRvIHplcm8uDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW0yNTZfc2V0emVyb19wZCh2b2lkKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9f
ZXh0ZW5zaW9uX18gKF9fbTI1NmQpeyAwLCAwLCAwLCAwIH07DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gd2l0aCBhbGwNCiAgICArLy8vICAgIHZlY3RvciBlbGVtZW50cyBpbml0aWFsaXplZCB0
byB6ZXJvLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZY
T1JQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2l0aCBhbGwgZWxlbWVudHMgc2V0IHRvIHplcm8u
DQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bTI1Nl9zZXR6ZXJvX3BzKHZvaWQpDQogICAgK3sNCiAgICArICByZXR1cm4gX19leHRlbnNpb25f
XyAoX19tMjU2KXsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9Ow0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgdG8g
emVyby4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9S
UFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgdG8gemVyby4NCiAgICArc3RhdGljIF9faW5s
aW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zZXR6ZXJvX3NpMjU2
KHZvaWQpDQogICAgK3sNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSkoX192
NGRpKXsgMCwgMCwgMCwgMCB9Ow0KICAgICt9DQogICAgKw0KICAgICsvKiBDYXN0IGJldHdlZW4g
dmVjdG9yIHR5cGVzICovDQogICAgKy8vLyBDYXN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMjU2LWJpdA0KICAgICsvLy8gICAgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBo
YXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2FtZQ0KICAgICsvLy8gICAgYml0
d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9jYXN0cGRfcHMoX19tMjU2ZCBfX2Ep
DQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NilfX2E7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDYXN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBpbnRvIGEgMjU2LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhbWUgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZQ0K
ICAgICsvLy8gICAgcGFyYW1ldGVyLg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2Nhc3RwZF9zaTI1NihfX20yNTZkIF9fYSkNCiAg
ICArew0KICAgICsgIHJldHVybiAoX19tMjU2aSlfX2E7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBDYXN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGlu
dG8gYSAyNTYtYml0DQogICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1
Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJl
dHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgc2FtZQ0KICAgICsvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJh
bWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW0yNTZfY2FzdHBzX3BkKF9fbTI1NiBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4g
KF9fbTI1NmQpX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ2FzdHMgYSAyNTYtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBpbnRvIGEgMjU2LWJpdA0KICAgICsv
Ly8gICAgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3Jy
ZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0u
DQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQogICAgKy8vLyAgICBwYXJhbWV0ZXIuDQog
ICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0y
NTZfY2FzdHBzX3NpMjU2KF9fbTI1NiBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1
NmkpX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ2FzdHMgYSAyNTYtYml0IGludGVnZXIg
dmVjdG9yIGludG8gYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KICAgICsvLy8gICAg
b2YgWzggeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25k
aW5nIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2Ft
ZQ0KICAgICsvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQogICAgK3N0
YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9jYXN0
c2kyNTZfcHMoX19tMjU2aSBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NilfX2E7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDYXN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW50byBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbNCB4
IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNhbWUNCiAg
ICArLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLg0KICAgICtzdGF0aWMg
X19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2Nhc3RzaTI1
Nl9wZChfX20yNTZpIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2ZClfX2E7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBSZXR1cm5zIHRoZSBsb3dlciAxMjggYml0cyBvZiBhIDI1
Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGRvdWJsZV0g
YXMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUN
CiAgICArLy8vICAgIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSBwYXJhbWV0ZXIuDQogICAgK3N0YXRp
YyBfX2lubGluZSBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfY2FzdHBk
MjU2X3BkMTI4KF9fbTI1NmQgX19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAg
ICsgIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfcGRfcGQyNTYgKChfX3Y0ZGYpX19h
KTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9f
djRkZilfX2EsIChfX3Y0ZGYpX19hLCAwLCAxKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICAr
DQogICAgKy8vLyBSZXR1cm5zIHRoZSBsb3dlciAxMjggYml0cyBvZiBhIDI1Ni1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbOCB4IGZsb2F0XSBhcyBhIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZQ0KICAgICsvLy8gICAgbG93
ZXIgMTI4IGJpdHMgb2YgdGhlIHBhcmFtZXRlci4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2Nhc3RwczI1Nl9wczEyOChfX20yNTYg
X19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4
KSBfX2J1aWx0aW5faWEzMl9wc19wczI1NiAoKF9fdjhzZilfX2EpOw0KICAgICsjZWxzZQ0KICAg
ICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OHNmKV9fYSwgKF9fdjhzZilf
X2EsIDAsIDEsIDIsIDMpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFRy
dW5jYXRlcyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMjU2
LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUNCiAgICArLy8vICAg
IHBhcmFtZXRlci4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbTI1Nl9jYXN0c2kyNTZfc2kxMjgoX19tMjU2aSBfX2EpDQogICAgK3sNCiAg
ICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEz
Ml9zaV9zaTI1NiAoKF9fdjhzaSlfX2EpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiBfX2J1
aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NGRpKV9fYSwgKF9fdjRkaSlfX2EsIDAsIDEpOw0KICAg
ICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gZnJvbSBhDQogICAgKy8vLyAgICAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0K
ICAgICsvLy8gICAgVGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBz
b3VyY2UgdmVjdG9yLiBUaGUgY29udGVudHMNCiAgICArLy8vICAgIG9mIHRoZSB1cHBlciAxMjgg
Yml0cyBhcmUgdW5kZWZpbmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVz
cG9uZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBUaGUg
bG93ZXIgMTI4IGJpdHMNCiAgICArLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBwYXJh
bWV0ZXIuIFRoZSBjb250ZW50cyBvZiB0aGUgdXBwZXIgMTI4IGJpdHMNCiAgICArLy8vICAgIGFy
ZSB1bmRlZmluZWQuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW0yNTZfY2FzdHBkMTI4X3BkMjU2KF9fbTEyOGQgX19hKQ0KICAgICt7DQog
ICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lh
MzJfcGQyNTZfcGQgKChfX3YyZGYpX19hKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gX19i
dWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19hLCAwLCAxLCAtMSwg
LTEpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAy
NTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBmcm9tIGENCiAgICAr
Ly8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAg
ICsvLy8NCiAgICArLy8vICAgIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBv
ZiB0aGUgc291cmNlIHZlY3Rvci4gVGhlIGNvbnRlbnRzDQogICAgKy8vLyAgICBvZiB0aGUgdXBw
ZXIgMTI4IGJpdHMgYXJlIHVuZGVmaW5lZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5v
IGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
YQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0u
IFRoZSBsb3dlciAxMjggYml0cw0KICAgICsvLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhl
IHBhcmFtZXRlci4gVGhlIGNvbnRlbnRzIG9mIHRoZSB1cHBlciAxMjggYml0cw0KICAgICsvLy8g
ICAgYXJlIHVuZGVmaW5lZC4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tMjU2X2Nhc3RwczEyOF9wczI1NihfX20xMjggX19hKQ0KICAgICt7
DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5f
aWEzMl9wczI1Nl9wcyAoKF9fdjRzZilfX2EpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiBf
X2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9fdjRzZilfX2EsIDAsIDEsIDIs
IDMsIC0xLCAtMSwgLTEsIC0xKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8v
LyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBmcm9tIGEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgbG93ZXIgMTI4IGJpdHMgY29u
dGFpbiB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3IuIFRoZSBjb250ZW50cw0KICAgICsv
Ly8gICAgb2YgdGhlIHVwcGVyIDEyOCBiaXRzIGFyZSB1bmRlZmluZWQuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4N
CiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDEy
OCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mDQogICAgKy8vLyAgICB0aGUgcGFyYW1ldGVyLiBU
aGUgY29udGVudHMgb2YgdGhlIHVwcGVyIDEyOCBiaXRzIGFyZSB1bmRlZmluZWQuDQogICAgK3N0
YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfY2Fz
dHNpMTI4X3NpMjU2KF9fbTEyOGkgX19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0K
ICAgICsgIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2kyNTZfc2kgKChfX3Y0c2kp
X19hKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3Io
KF9fdjJkaSlfX2EsIChfX3YyZGkpX19hLCAwLCAxLCAtMSwgLTEpOw0KICAgICsjZW5kaWYNCiAg
ICArfQ0KICAgICsNCiAgICArLyoNCiAgICArICAgVmVjdG9yIGluc2VydC4NCiAgICArICAgV2Ug
dXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFj
Y2VwdA0KICAgICsgICBpbnZvY2F0aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0gaXMgYSBjb25z
dGFudCBleHByZXNzaW9uLg0KICAgICsqLw0KICAgICsvLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBieSBmaXJzdCBkdXBsaWNhdGluZw0KICAgICsvLy8g
ICAgYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBnaXZlbiBpbiB0aGUgZmlyc3QgcGFy
YW1ldGVyLCBhbmQgdGhlbg0KICAgICsvLy8gICAgcmVwbGFjaW5nIGVpdGhlciB0aGUgdXBwZXIg
b3IgdGhlIGxvd2VyIDEyOCBiaXRzIHdpdGggdGhlIGNvbnRlbnRzIG9mIGENCiAgICArLy8vICAg
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0K
ICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIgZGV0
ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXINCiAgICArLy8vICAgIDEyOCBi
aXRzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMjU2IF9tbTI1Nl9pbnNlcnRmMTI4X3Bz
KF9fbTI1NiBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7DQogICAgKy8vLyBcZW5kY29kZQ0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
VjENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoaXMgdmVj
dG9yIGlzIGNvcGllZCB0byB0aGUgcmVzdWx0DQogICAgKy8vLyAgICBmaXJzdCwgYW5kIHRoZW4g
ZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxs
DQogICAgKy8vLyAgICBiZSByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEgVjIuDQogICAg
Ky8vLyBccGFyYW0gVjINCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uIFRoZSBjb250ZW50cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUNCiAgICArLy8vICAgIHdyaXR0
ZW4gdG8gZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3Vs
dCBkZXBlbmRpbmcNCiAgICArLy8vICAgIG9uIHRoZSB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4N
CiAgICArLy8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhl
IGxlYXN0IHNpZ25pZmljYW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzDQogICAgKy8v
LyAgICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuDQogICAgKy8v
LyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6MF0gb2YgdGhlIHJlc3VsdCwNCiAgICArLy8vICAgIGFuZCBiaXRzIFsyNTU6MTI4XSBvZiBc
YSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgcmVz
dWx0LiBcbg0KICAgICsvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIFxhIFYyIGFyZSBj
b3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQsIGFuZCBi
aXRzIFsxMjc6MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQog
ICAgKy8vLyAgICByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCiAgICArI2Rl
ZmluZSBfbW0yNTZfaW5zZXJ0ZjEyOF9wcyhWMSwgVjIsIE0pIFwNCiAgICArICAoX19tMjU2KV9f
YnVpbHRpbl9pYTMyX3ZpbnNlcnRmMTI4X3BzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQog
ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShf
X20xMjgpKFYyKSwgKGludCkoTSkpDQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIG5ldyAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYnkgZmlyc3QgZHVwbGljYXRpbmcNCiAgICAr
Ly8vICAgIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGdpdmVuIGluIHRoZSBmaXJz
dCBwYXJhbWV0ZXIsIGFuZCB0aGVuDQogICAgKy8vLyAgICByZXBsYWNpbmcgZWl0aGVyIHRoZSB1
cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29udGVudHMgb2YgYQ0KICAgICsv
Ly8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGluIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0
ZXIgZGV0ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXINCiAgICArLy8vICAg
IDEyOCBiaXRzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMjU2ZCBfbW0yNTZfaW5zZXJ0
ZjEyOF9wZChfX20yNTZkIFYxLCBfX20xMjhkIFYyLCBjb25zdCBpbnQgTSk7DQogICAgKy8vLyBc
ZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gVjENCiAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVd
LiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlIHJlc3VsdA0KICAgICsvLy8gICAgZmlyc3Qs
IGFuZCB0aGVuIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSBy
ZXN1bHQgd2lsbA0KICAgICsvLy8gICAgYmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFxh
IFYyLg0KICAgICsvLy8gXHBhcmFtIFYyDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KICAgICsv
Ly8gICAgd3JpdHRlbiB0byBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBv
ZiB0aGUgcmVzdWx0IGRlcGVuZGluZw0KICAgICsvLy8gICAgb24gdGhlIHZhbHVlIG9mIHBhcmFt
ZXRlciBcYSBNLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBp
bnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRldGVybWluZXMgaG93IHRoZSB2YWx1
ZXMNCiAgICArLy8vICAgIGZyb20gdGhlIHR3byBwYXJhbWV0ZXJzIGFyZSBpbnRlcmxlYXZlZDog
XG4NCiAgICArLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBcYSBWMiBhcmUgY29waWVk
IHRvIGJpdHMgWzEyNzowXSBvZiB0aGUgcmVzdWx0LA0KICAgICsvLy8gICAgYW5kIGJpdHMgWzI1
NToxMjhdIG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQogICAg
Ky8vLyAgICByZXN1bHQuIFxuDQogICAgKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwg
XGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCiAgICArLy8vICAgIHJl
c3VsdCwgYW5kIGJpdHMgWzEyNzowXSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzow
XSBvZiB0aGUNCiAgICArLy8vICAgIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVl
cy4NCiAgICArI2RlZmluZSBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChWMSwgVjIsIE0pIFwNCiAgICAr
ICAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92aW5zZXJ0ZjEyOF9wZDI1NigoX192NGRmKShfX20y
NTZkKShWMSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoX192MmRmKShfX20xMjhkKShWMiksIChpbnQpKE0pKQ0KICAgICsNCiAgICArLy8vIENv
bnN0cnVjdHMgYSBuZXcgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBmaXJzdCBkdXBsaWNhdGlu
ZyBhDQogICAgKy8vLyAgICAyNTYtYml0IGludGVnZXIgdmVjdG9yIGdpdmVuIGluIHRoZSBmaXJz
dCBwYXJhbWV0ZXIsIGFuZCB0aGVuIHJlcGxhY2luZw0KICAgICsvLy8gICAgZWl0aGVyIHRoZSB1
cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29udGVudHMgb2YgYSAxMjgtYml0
DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAg
ICArLy8vDQogICAgKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyIGRldGVy
bWluZXMgYmV0d2VlbiB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyDQogICAgKy8vLyAgICAxMjggYml0
cy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTI1NmkgX21tMjU2X2luc2VydGYxMjhfc2ky
NTYoX19tMjU2aSBWMSwgX19tMTI4aSBWMiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNv
ZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIFYxDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoaXMgdmVjdG9y
IGlzIGNvcGllZCB0byB0aGUgcmVzdWx0IGZpcnN0LCBhbmQNCiAgICArLy8vICAgIHRoZW4gZWl0
aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxsIGJl
DQogICAgKy8vLyAgICByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEgVjIuDQogICAgKy8v
LyBccGFyYW0gVjINCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGNv
bnRlbnRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZSB3cml0dGVuIHRvDQogICAgKy8vLyAgICBlaXRo
ZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IGRlcGVuZGlu
ZyBvbiB0aGUNCiAgICArLy8vICAgICB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4NCiAgICArLy8v
IFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhlIGxlYXN0IHNp
Z25pZmljYW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzDQogICAgKy8vLyAgICBmcm9t
IHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuDQogICAgKy8vLyAgICBJZiBi
aXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2Yg
dGhlIHJlc3VsdCwNCiAgICArLy8vICAgIGFuZCBiaXRzIFsyNTU6MTI4XSBvZiBcYSBWMSBhcmUg
Y29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0LiBcbg0K
ICAgICsvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIFxhIFYyIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMjU1OjEyOF0gb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQsIGFuZCBiaXRzIFsxMjc6
MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQogICAgKy8vLyAg
ICByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbTI1Nl9pbnNl
cnRmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXA0KICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMy
X3ZpbnNlcnRmMTI4X3NpMjU2KChfX3Y4c2kpKF9fbTI1NmkpKFYxKSwgXA0KICAgICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFYy
KSwgKGludCkoTSkpDQogICAgKw0KICAgICsvKg0KICAgICsgICBWZWN0b3IgZXh0cmFjdC4NCiAg
ICArICAgV2UgdXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3
YW50IHRvIGFjY2VwdA0KICAgICsgICBpbnZvY2F0aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0g
aXMgYSBjb25zdGFudCBleHByZXNzaW9uLg0KICAgICsqLw0KICAgICsvLy8gRXh0cmFjdHMgZWl0
aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9y
DQogICAgKy8vLyAgICBvZiBbOCB4IGZsb2F0XSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgaW1tZWRp
YXRlIGludGVnZXIgcGFyYW1ldGVyLCBhbmQNCiAgICArLy8vICAgIHJldHVybnMgdGhlIGV4dHJh
Y3RlZCBiaXRzIGFzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxj
b2RlDQogICAgKy8vLyBfX20xMjggX21tMjU2X2V4dHJhY3RmMTI4X3BzKF9fbTI1NiBWLCBjb25z
dCBpbnQgTSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4IDwvYz4gaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFYNCiAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4g
aW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3
aGljaCBiaXRzIGFyZQ0KICAgICsvLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBhcmFt
ZXRlcjogXG4NCiAgICArLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBiaXRzIFsxMjc6
MF0gb2YgXGEgViBhcmUgY29waWVkIHRvIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0LiBcbg0KICAg
ICsvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYg
YXJlIGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgYml0cy4NCiAgICAr
I2RlZmluZSBfbW0yNTZfZXh0cmFjdGYxMjhfcHMoViwgTSkgXA0KICAgICsgIChfX20xMjgpX19i
dWlsdGluX2lhMzJfdmV4dHJhY3RmMTI4X3BzMjU2KChfX3Y4c2YpKF9fbTI1NikoViksIChpbnQp
KE0pKQ0KICAgICsNCiAgICArLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxv
d2VyIDEyOCBiaXRzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KICAgICsvLy8gICAgb2YgWzQgeCBk
b3VibGVdLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIs
IGFuZA0KICAgICsvLy8gICAgcmV0dXJucyB0aGUgZXh0cmFjdGVkIGJpdHMgYXMgYSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhk
IF9tbTI1Nl9leHRyYWN0ZjEyOF9wZChfX20yNTZkIFYsIGNvbnN0IGludCBNKTsNCiAgICArLy8v
IFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gVg0KICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0uDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIu
IFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQ0KICAg
ICsvLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBhcmFtZXRlcjogXG4NCiAgICArLy8v
ICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBiaXRzIFsxMjc6MF0gb2YgXGEgViBhcmUgY29w
aWVkIHRvIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgSWYgYml0IFsw
XSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYgYXJlIGNvcGllZCB0byB0aGUg
cmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIGJpdHMuDQogICAgKyNkZWZpbmUgX21tMjU2X2V4
dHJhY3RmMTI4X3BkKFYsIE0pIFwNCiAgICArICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92ZXh0
cmFjdGYxMjhfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoViksIChpbnQpKE0pKQ0KICAgICsNCiAg
ICArLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIGZy
b20gYSAyNTYtYml0DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciwgYXMgZGV0ZXJtaW5lZCBi
eSB0aGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyLCBhbmQNCiAgICArLy8vICAgIHJldHVy
bnMgdGhlIGV4dHJhY3RlZCBiaXRzIGFzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gXGNvZGUNCiAgICArLy8vIF9fbTEyOGkgX21tMjU2X2V4dHJhY3RmMTI4X3NpMjU2KF9fbTI1
NmkgViwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBWDQogICAgKy8vLyAgICBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAg
QW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5l
cyB3aGljaCBiaXRzIGFyZQ0KICAgICsvLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBh
cmFtZXRlcjogIFxuDQogICAgKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgYml0cyBb
MTI3OjBdIG9mIFxhIFYgYXJlIGNvcGllZCB0byB0aGUNCiAgICArLy8vICAgIHJlc3VsdC4gXG4N
CiAgICArLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAxLCBiaXRzIFsyNTU6MTI4XSBvZiBc
YSBWIGFyZSBjb3BpZWQgdG8gdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgYml0cy4NCiAgICArI2Rl
ZmluZSBfbW0yNTZfZXh0cmFjdGYxMjhfc2kyNTYoViwgTSkgXA0KICAgICsgIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3ZleHRyYWN0ZjEyOF9zaTI1NigoX192OHNpKShfX20yNTZpKShWKSwgKGlu
dCkoTSkpDQogICAgKw0KICAgICsvKiBTSU1EIGxvYWQgb3BzICh1bmFsaWduZWQpICovDQogICAg
Ky8vLyBMb2FkcyB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxv
YXRdIGZyb20NCiAgICArLy8vICAgIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zIGFuZCBjb25z
dHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3INCiAgICArLy8vICAgIG9mIFs4
IHggZmxvYXRdIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxv
d2VkIGJ5IHRoZQ0KICAgICsvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hZGRyX2hpDQogICAgKy8vLyAgICBBIHBvaW50
ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIDQgY29uc2VjdXRpdmUN
CiAgICArLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLiBUaGVz
ZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZCB0bw0KICAgICsvLy8gICAgYml0c1syNTU6MTI4XSBv
ZiB0aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90
DQogICAgKy8vLyAgICBoYXZlIHRvIGJlIGFsaWduZWQuDQogICAgKy8vLyBccGFyYW0gX19hZGRy
X2xvDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBj
b250YWluaW5nIDQgY29uc2VjdXRpdmUNCiAgICArLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWVzLiBUaGVzZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZCB0bw0KICAg
ICsvLy8gICAgYml0c1sxMjc6MF0gb2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1l
bW9yeSBsb2NhdGlvbiBkb2VzIG5vdA0KICAgICsvLy8gICAgaGF2ZSB0byBiZSBhbGlnbmVkLg0K
ICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZQ0KICAgICsvLy8gICAgY29uY2F0ZW5hdGVkIHJlc3VsdC4N
CiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
MjU2X2xvYWR1Ml9tMTI4KGZsb2F0IGNvbnN0ICpfX2FkZHJfaGksIGZsb2F0IGNvbnN0ICpfX2Fk
ZHJfbG8pDQogICAgK3sNCiAgICArICBfX20yNTYgX192MjU2ID0gX21tMjU2X2Nhc3RwczEyOF9w
czI1NihfbW1fbG9hZHVfcHMoX19hZGRyX2xvKSk7DQogICAgKyAgcmV0dXJuIF9tbTI1Nl9pbnNl
cnRmMTI4X3BzKF9fdjI1NiwgX21tX2xvYWR1X3BzKF9fYWRkcl9oaSksIDEpOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gTG9hZHMgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBv
ZiBbMiB4IGRvdWJsZV0gZnJvbQ0KICAgICsvLy8gICAgdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlv
bnMgYW5kIGNvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KICAgICsv
Ly8gICAgb2YgWzQgeCBkb3VibGVdIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHR3byAxMjgtYml0IHZl
Y3RvcnMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1
Y3Rpb25zIGZvbGxvd2VkIGJ5IHRoZQ0KICAgICsvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hZGRyX2hpDQogICAgKy8v
LyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHR3
byBjb25zZWN1dGl2ZQ0KICAgICsvLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCB2YWx1ZXMuIFRoZXNlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkIHRvDQogICAgKy8vLyAgICBi
aXRzWzI1NToxMjhdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9j
YXRpb24gZG9lcyBub3QNCiAgICArLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4NCiAgICArLy8v
IFxwYXJhbSBfX2FkZHJfbG8NCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVt
b3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdHdvIGNvbnNlY3V0aXZlDQogICAgKy8vLyAgICBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVzIGFyZSB0byBi
ZSBjb3BpZWQgdG8NCiAgICArLy8vICAgIGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZSBh
ZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QNCiAgICArLy8vICAgIGhhdmUg
dG8gYmUgYWxpZ25lZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlDQogICAgKy8vLyAgICBjb25j
YXRlbmF0ZWQgcmVzdWx0Lg0KICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tMjU2X2xvYWR1Ml9tMTI4ZChkb3VibGUgY29uc3QgKl9fYWRkcl9o
aSwgZG91YmxlIGNvbnN0ICpfX2FkZHJfbG8pDQogICAgK3sNCiAgICArICBfX20yNTZkIF9fdjI1
NiA9IF9tbTI1Nl9jYXN0cGQxMjhfcGQyNTYoX21tX2xvYWR1X3BkKF9fYWRkcl9sbykpOw0KICAg
ICsgIHJldHVybiBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChfX3YyNTYsIF9tbV9sb2FkdV9wZChfX2Fk
ZHJfaGkpLCAxKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIExvYWRzIHR3byAxMjgtYml0IGlu
dGVnZXIgdmVjdG9ycyBmcm9tIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zIGFuZA0KICAgICsv
Ly8gICAgY29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgY29uY2F0ZW5hdGlu
ZyB0aGUgdHdvIDEyOC1iaXQNCiAgICArLy8vICAgIHZlY3RvcnMuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2VkIGJ5IHRoZQ0K
ICAgICsvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19hZGRyX2hpDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgt
Yml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgMTI4LWJpdCBpbnRlZ2VyDQogICAgKy8v
LyAgICB2ZWN0b3IuIFRoaXMgdmVjdG9yIGlzIHRvIGJlIGNvcGllZCB0byBiaXRzWzI1NToxMjhd
IG9mIHRoZSByZXN1bHQuIFRoZQ0KICAgICsvLy8gICAgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxv
Y2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCiAgICArLy8vIFxwYXJhbSBfX2Fk
ZHJfbG8NCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9u
IGNvbnRhaW5pbmcgYSAxMjgtYml0IGludGVnZXINCiAgICArLy8vICAgIHZlY3Rvci4gVGhpcyB2
ZWN0b3IgaXMgdG8gYmUgY29waWVkIHRvIGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZQ0K
ICAgICsvLy8gICAgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90IGhhdmUg
dG8gYmUgYWxpZ25lZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0Lg0KICAgICtzdGF0aWMgX19pbmxp
bmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tMjU2X2xvYWR1Ml9tMTI4aShf
X20xMjhpIGNvbnN0ICpfX2FkZHJfaGksIF9fbTEyOGkgY29uc3QgKl9fYWRkcl9sbykNCiAgICAr
ew0KICAgICsgIF9fbTI1NmkgX192MjU2ID0gX21tMjU2X2Nhc3RzaTEyOF9zaTI1NihfbW1fbG9h
ZHVfc2kxMjgoX19hZGRyX2xvKSk7DQogICAgKyAgcmV0dXJuIF9tbTI1Nl9pbnNlcnRmMTI4X3Np
MjU2KF9fdjI1NiwgX21tX2xvYWR1X3NpMTI4KF9fYWRkcl9oaSksIDEpOw0KICAgICt9DQogICAg
Kw0KICAgICsvKiBTSU1EIHN0b3JlIG9wcyAodW5hbGlnbmVkKSAqLw0KICAgICsvLy8gU3RvcmVz
IHRoZSB1cHBlciBhbmQgbG93ZXIgMTI4IGJpdHMgb2YgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50
DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW50byB0d28gZGlmZmVyZW50IHVu
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uIGFuZCB0aGUNCiAg
ICArLy8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2FkZHJfaGkNCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uLiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBhcmUgdG8gYmUNCiAgICArLy8vICAgIGNvcGll
ZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9j
YXRpb24gZG9lcw0KICAgICsvLy8gICAgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCiAgICArLy8v
IFxwYXJhbSBfX2FkZHJfbG8NCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVt
b3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJlIHRvIGJlDQogICAgKy8vLyAg
ICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVt
b3J5IGxvY2F0aW9uIGRvZXMNCiAgICArLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQog
ICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tMjU2X3N0b3JldTJfbTEyOChmbG9hdCAqX19hZGRyX2hpLCBm
bG9hdCAqX19hZGRyX2xvLCBfX20yNTYgX19hKQ0KICAgICt7DQogICAgKyAgX19tMTI4IF9fdjEy
ODsNCiAgICArDQogICAgKyAgX192MTI4ID0gX21tMjU2X2Nhc3RwczI1Nl9wczEyOChfX2EpOw0K
ICAgICsgIF9tbV9zdG9yZXVfcHMoX19hZGRyX2xvLCBfX3YxMjgpOw0KICAgICsgIF9fdjEyOCA9
IF9tbTI1Nl9leHRyYWN0ZjEyOF9wcyhfX2EsIDEpOw0KICAgICsgIF9tbV9zdG9yZXVfcHMoX19h
ZGRyX2hpLCBfX3YxMjgpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3RvcmVzIHRoZSB1cHBl
ciBhbmQgbG93ZXIgMTI4IGJpdHMgb2YgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50DQogICAgKy8v
LyAgICB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGludG8gdHdvIGRpZmZlcmVudCB1bmFsaWduZWQg
bWVtb3J5IGxvY2F0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbiBhbmQgdGhlDQogICAgKy8vLyAg
IHN0b3JlIGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hZGRyX2hp
DQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gQml0
c1syNTU6MTI4XSBvZiBcYSBfX2EgYXJlIHRvIGJlDQogICAgKy8vLyAgICBjb3BpZWQgdG8gdGhp
cyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRv
ZXMNCiAgICArLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQogICAgKy8vLyBccGFyYW0g
X19hZGRyX2xvDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2Nh
dGlvbi4gQml0c1sxMjc6MF0gb2YgXGEgX19hIGFyZSB0byBiZQ0KICAgICsvLy8gICAgY29waWVk
IHRvIHRoaXMgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGlzIG1lbW9yeSBsb2Nh
dGlvbiBkb2VzDQogICAgKy8vLyAgICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0uDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW0yNTZfc3RvcmV1Ml9tMTI4ZChkb3VibGUgKl9fYWRkcl9oaSwgZG91Ymxl
ICpfX2FkZHJfbG8sIF9fbTI1NmQgX19hKQ0KICAgICt7DQogICAgKyAgX19tMTI4ZCBfX3YxMjg7
DQogICAgKw0KICAgICsgIF9fdjEyOCA9IF9tbTI1Nl9jYXN0cGQyNTZfcGQxMjgoX19hKTsNCiAg
ICArICBfbW1fc3RvcmV1X3BkKF9fYWRkcl9sbywgX192MTI4KTsNCiAgICArICBfX3YxMjggPSBf
bW0yNTZfZXh0cmFjdGYxMjhfcGQoX19hLCAxKTsNCiAgICArICBfbW1fc3RvcmV1X3BkKF9fYWRk
cl9oaSwgX192MTI4KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyB0aGUgdXBwZXIg
YW5kIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRvDQogICAg
Ky8vLyAgICB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+
IGluc3RydWN0aW9uIGFuZCB0aGUNCiAgICArLy8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2FkZHJfaGkNCiAgICArLy8vICAgIEEgcG9pbnRlciB0
byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBhcmUg
dG8gYmUNCiAgICArLy8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFk
ZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24gZG9lcw0KICAgICsvLy8gICAgbm90IGhhdmUg
dG8gYmUgYWxpZ25lZC4NCiAgICArLy8vIFxwYXJhbSBfX2FkZHJfbG8NCiAgICArLy8vICAgIEEg
cG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBf
X2EgYXJlIHRvIGJlDQogICAgKy8vLyAgICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24u
IFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRvZXMNCiAgICArLy8vICAgIG5v
dCBoYXZlIHRvIGJlIGFsaWduZWQuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc3RvcmV1Ml9tMTI4aShfX20xMjhpICpfX2FkZHJf
aGksIF9fbTEyOGkgKl9fYWRkcl9sbywgX19tMjU2aSBfX2EpDQogICAgK3sNCiAgICArICBfX20x
MjhpIF9fdjEyODsNCiAgICArDQogICAgKyAgX192MTI4ID0gX21tMjU2X2Nhc3RzaTI1Nl9zaTEy
OChfX2EpOw0KICAgICsgIF9tbV9zdG9yZXVfc2kxMjgoX19hZGRyX2xvLCBfX3YxMjgpOw0KICAg
ICsgIF9fdjEyOCA9IF9tbTI1Nl9leHRyYWN0ZjEyOF9zaTI1NihfX2EsIDEpOw0KICAgICsgIF9t
bV9zdG9yZXVfc2kxMjgoX19hZGRyX2hpLCBfX3YxMjgpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdIGJ5DQogICAgKy8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19oaQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyDQogICAg
Ky8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fbG8NCiAg
ICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
dG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcg0KICAgICsvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJl
c3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUNCiAgICArLy8vICAgIGNvbmNhdGVuYXRlZCBy
ZXN1bHQuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbTI1Nl9zZXRfbTEyOCAoX19tMTI4IF9faGksIF9fbTEyOCBfX2xvKQ0KICAgICt7DQog
ICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiBfbW0yNTZfaW5zZXJ0ZjEyOF9wcyAo
X21tMjU2X2Nhc3RwczEyOF9wczI1NiAoX19sbyksIF9faGksIDEpOw0KICAgICsjZWxzZQ0KICAg
ICsgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fbG8s
IChfX3Y0c2YpX19oaSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7DQogICAgKyNlbmRpZg0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBieQ0KICAgICsvLy8gICAgY29uY2F0ZW5hdGluZyB0d28g
MTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2hpDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBjb3Bp
ZWQgdG8gdGhlIHVwcGVyDQogICAgKy8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAg
ICsvLy8gXHBhcmFtIF9fbG8NCiAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXINCiAgICArLy8v
ICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZQ0KICAg
ICsvLy8gICAgY29uY2F0ZW5hdGVkIHJlc3VsdC4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1
NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zZXRfbTEyOGQgKF9fbTEyOGQgX19o
aSwgX19tMTI4ZCBfX2xvKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJl
dHVybiAoX19tMjU2ZCkgX21tMjU2X2luc2VydGYxMjhfcGQgKF9tbTI1Nl9jYXN0cGQxMjhfcGQy
NTYgKF9fbG8pLCBfX2hpLCAxKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTI1NmQp
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19sbywgKF9fdjJkZilfX2hpLCAwLCAx
LCAyLCAzKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3Rz
IGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0DQog
ICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19oaQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIHRvIGJlIGNvcGllZCB0byB0aGUgdXBwZXIgMTI4IGJpdHMgb2YgdGhlDQogICAgKy8vLyAg
ICByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19sbw0KICAgICsvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlDQog
ICAgKy8vLyAgICByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC4NCiAgICArc3RhdGljIF9f
aW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zZXRfbTEyOGkg
KF9fbTEyOGkgX19oaSwgX19tMTI4aSBfX2xvKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNf
Xw0KICAgICsgIHJldHVybiAoX19tMjU2aSkgX21tMjU2X2luc2VydGYxMjhfc2kyNTYgKF9tbTI1
Nl9jYXN0c2kxMjhfc2kyNTYgKF9fbG8pLCBfX2hpLCAxKTsNCiAgICArI2Vsc2UNCiAgICArICBy
ZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGkpX19sbywgKF9f
djJkaSlfX2hpLCAwLCAxLCAyLCAzKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gYnkNCiAgICArLy8vICAgIGNvbmNhdGVuYXRpbmcgdHdvIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4gVGhpcyBpcw0KICAgICsvLy8gICAgc2ltaWxh
ciB0byBfbW0yNTZfc2V0X20xMjgsIGJ1dCB0aGUgb3JkZXIgb2YgdGhlIGlucHV0IHBhcmFtZXRl
cnMgaXMNCiAgICArLy8vICAgIHN3YXBwZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19sbw0KICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyDQogICAg
Ky8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9faGkNCiAg
ICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
dG8gYmUgY29waWVkIHRvIHRoZSB1cHBlcg0KICAgICsvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJl
c3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUNCiAgICArLy8vICAgIGNvbmNhdGVuYXRlZCBy
ZXN1bHQuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbTI1Nl9zZXRyX20xMjggKF9fbTEyOCBfX2xvLCBfX20xMjggX19oaSkNCiAgICArew0K
ICAgICsgIHJldHVybiBfbW0yNTZfc2V0X20xMjgoX19oaSwgX19sbyk7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdIGJ5DQogICAgKy8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLiBUaGlzIGlzDQogICAgKy8vLyAg
ICBzaW1pbGFyIHRvIF9tbTI1Nl9zZXRfbTEyOGQsIGJ1dCB0aGUgb3JkZXIgb2YgdGhlIGlucHV0
IHBhcmFtZXRlcnMgaXMNCiAgICArLy8vICAgIHN3YXBwZWQuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19sbw0KICAgICsvLy8gICAgQSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgY29waWVkIHRvIHRoZSBs
b3dlcg0KICAgICsvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJh
bSBfX2hpDQogICAgKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyDQogICAgKy8vLyAgICAxMjggYml0
cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUNCiAgICArLy8vICAgIGNv
bmNhdGVuYXRlZCByZXN1bHQuDQogICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW0yNTZfc2V0cl9tMTI4ZCAoX19tMTI4ZCBfX2xvLCBfX20xMjhk
IF9faGkpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTI1NmQpX21tMjU2X3NldF9tMTI4ZChf
X2hpLCBfX2xvKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0
IGludGVnZXIgdmVjdG9yIGJ5IGNvbmNhdGVuYXRpbmcgdHdvIDEyOC1iaXQNCiAgICArLy8vICAg
IGludGVnZXIgdmVjdG9ycy4gVGhpcyBpcyBzaW1pbGFyIHRvIF9tbTI1Nl9zZXRfbTEyOGksIGJ1
dCB0aGUgb3JkZXIgb2YNCiAgICArLy8vICAgIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGlzIHN3YXBw
ZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VS
VEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19sbw0K
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUg
bG93ZXIgMTI4IGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQuDQogICAgKy8vLyBccGFy
YW0gX19oaQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGJlIGNvcGll
ZCB0byB0aGUgdXBwZXIgMTI4IGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQuDQogICAg
Ky8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29u
Y2F0ZW5hdGVkIHJlc3VsdC4NCiAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbTI1Nl9zZXRyX20xMjhpIChfX20xMjhpIF9fbG8sIF9fbTEyOGkg
X19oaSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMjU2aSlfbW0yNTZfc2V0X20xMjhpKF9f
aGksIF9fbG8pOw0KICAgICt9DQogICAgKw0KICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCiAgICArDQogICAgKyNlbmRpZiAv
KiBfX0FWWElOVFJJTl9IICovDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvZW1taW50cmluLmgg
Yi9pbmNsdWRlL2VtbWludHJpbi5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi40NTY5ZDk4DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2luY2x1ZGUv
ZW1taW50cmluLmgNCiAgICBAQCAtMCwwICsxLDUwMjEgQEANCiAgICArLyo9PT0tLS0tIGVtbWlu
dHJpbi5oIC0gU1NFMiBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLT09PQ0KICAgICsgKg0KICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQogICAgKyAqIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0byBkZWFsDQogICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCiAgICArICog
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbA0KICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCiAgICArICogZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgICArICoN
CiAgICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCiAgICArICogYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQogICAgKyAqDQogICAgKyAqIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SDQogICAgKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KICAgICsgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUNCiAgICArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LA0KICAgICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElODQogICAgKyAqIFRIRSBTT0ZUV0FSRS4NCiAgICAr
ICoNCiAgICArICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KICAgICsgKi8NCiAgICArDQogICAgKyNp
Zm5kZWYgX19FTU1JTlRSSU5fSA0KICAgICsjZGVmaW5lIF9fRU1NSU5UUklOX0gNCiAgICArDQog
ICAgKyNpbmNsdWRlIDx4bW1pbnRyaW4uaD4NCiAgICArDQogICAgK3R5cGVkZWYgZG91YmxlIF9f
bTEyOGQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KICAgICt0eXBlZGVm
IGxvbmcgbG9uZyBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsN
CiAgICArDQogICAgKy8qIFR5cGUgZGVmaW5lcy4gICovDQogICAgK3R5cGVkZWYgZG91YmxlIF9f
djJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsNCiAgICArdHlwZWRl
ZiBsb25nIGxvbmcgX192MmRpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkp
Ow0KICAgICt0eXBlZGVmIHNob3J0IF9fdjhoaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXpl
X18oMTYpKSk7DQogICAgK3R5cGVkZWYgY2hhciBfX3YxNnFpIF9fYXR0cmlidXRlX18oKF9fdmVj
dG9yX3NpemVfXygxNikpKTsNCiAgICArDQogICAgKy8qIFVuc2lnbmVkIHR5cGVzICovDQogICAg
K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdjJkdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0
b3Jfc2l6ZV9fICgxNikpKTsNCiAgICArdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Y4aHUgX19h
dHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KICAgICt0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgX192MTZxdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQogICAg
Kw0KICAgICsvKiBXZSBuZWVkIGFuIGV4cGxpY2l0bHkgc2lnbmVkIHZhcmlhbnQgZm9yIGNoYXIu
IE5vdGUgdGhhdCB0aGlzIHNob3VsZG4ndA0KICAgICsgKiBhcHBlYXIgaW4gdGhlIGludGVyZmFj
ZSB0aG91Z2guICovDQogICAgK3R5cGVkZWYgc2lnbmVkIGNoYXIgX192MTZxcyBfX2F0dHJpYnV0
ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQogICAgKw0KICAgICsvKiBEZWZpbmUgdGhlIGRl
ZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovDQogICAg
KyNpZmRlZiAgX19HTlVDX18NCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0ZV9fKChf
X2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCiAgICAr
I2Vsc2UNCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UyIiksIF9fbWluX3Zl
Y3Rvcl93aWR0aF9fKDEyOCkpKQ0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVgg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9f
KCJtbXgsc3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KICAgICsjZW5kaWYNCiAg
ICArDQogICAgKyNkZWZpbmUgX01NX1NIVUZGTEUyKHgsIHkpICgoKHgpIDw8IDEpIHwgKHkpKQ0K
ICAgICsNCiAgICArLy8vIEFkZHMgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaW4gYm90
aCBvcGVyYW5kcyBhbmQgcmV0dXJucyB0aGUNCiAgICArLy8vICAgIHN1bSBpbiB0aGUgbG93ZXIg
NjQgYml0cyBvZiB0aGUgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0DQog
ICAgKy8vLyAgICBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkFERFNEIC8gQUREU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMg
Y29udGFpbiB0aGUNCiAgICArLy8vICAgIHN1bSBvZiB0aGUgbG93ZXIgNjQgYml0cyBvZiBib3Ro
IG9wZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkDQogICAgKy8vLyAgICBmcm9t
IHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2FkZF9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICBfX2FbMF0gKz0gX19i
WzBdOw0KICAgICsgIHJldHVybiBfX2E7DQogICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIHR3
byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERQRCAvIEFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IHRoZSBzdW1zIG9mIGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYWRkX3BkKF9fbTEy
OGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZCkoKF9f
djJkZilfX2EgKyAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFj
dHMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5k
DQogICAgKy8vLyAgICBmcm9tIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRo
ZSBmaXJzdCBvcGVyYW5kIGFuZCByZXR1cm5zDQogICAgKy8vLyAgICB0aGUgZGlmZmVyZW5jZSBp
biB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZg0K
ICAgICsvLy8gICAgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5kLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJTRCAvIFNVQlNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWludWVu
ZC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNv
bnRhaW4gdGhlDQogICAgKy8vLyAgICBkaWZmZXJlbmNlIG9mIHRoZSBsb3dlciA2NCBiaXRzIG9m
IGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KICAgICsvLy8gICAgY29waWVk
IGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
c3ViX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIF9fYVswXSAt
PSBfX2JbMF07DQogICAgKyAgcmV0dXJuIF9fYTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1
YnRyYWN0cyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCUEQgLyBTVUJQRCA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuDQog
ICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLg0KICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMg
YmV0d2Vlbg0KICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N1Yl9wZChfX20xMjhkIF9f
YSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYp
X19hIC0gKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTXVsdGlwbGllcyBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpbiBib3RoIG9wZXJhbmRzIGFuZCByZXR1cm5z
DQogICAgKy8vLyAgICB0aGUgcHJvZHVjdCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVz
dWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIHJlc3VsdCBhcmUgY29w
aWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0DQog
ICAgKy8vLyAgICBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNVUxTRCAvIE1VTFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRh
aW4gdGhlDQogICAgKy8vLyAgICBwcm9kdWN0IG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIGJvdGgg
b3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KICAgICsvLy8gICAgY29waWVkIGZyb20g
dGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbXVsX3Nk
KF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIF9fYVswXSAqPSBfX2Jb
MF07DQogICAgKyAgcmV0dXJuIF9fYTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIE11bHRpcGxp
ZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1VTFBEIC8gTVVMUEQgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBwcm9k
dWN0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX211bF9wZChfX20xMjhkIF9f
YSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYp
X19hICogKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gRGl2aWRlcyB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSB0aGUN
CiAgICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIHNlY29uZCBv
cGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KICAgICsvLy8gICAgcXVvdGllbnQgaW4gdGhlIGxvd2Vy
IDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlDQogICAgKy8v
LyAgICByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBkb3VibGUtcHJlY2lzaW9uIHZh
bHVlIG9mIHRoZSBmaXJzdA0KICAgICsvLy8gICAgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRElWU0QgLyBESVZTRCA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBkaXZpc29yLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KICAgICsv
Ly8gICAgcXVvdGllbnQgb2YgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhl
IHVwcGVyIDY0IGJpdHMgYXJlDQogICAgKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQg
Yml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9kaXZfc2QoX19tMTI4ZCBfX2Es
IF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgX19hWzBdIC89IF9fYlswXTsNCiAgICArICBy
ZXR1cm4gX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYW4gZWxlbWVudC1i
eS1lbGVtZW50IGRpdmlzaW9uIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCiAgICArLy8vICAg
IFsyIHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWRElWUEQgLyBESVZQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGl2aXNv
ci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X2Rpdl9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4g
KF9fbTEyOGQpKChfX3YyZGYpX19hIC8gKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YNCiAgICArLy8vICAgIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJu
cyBpdCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gICAgVGhl
IHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyDQog
ICAgKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTUVJUU0QgLyBT
UVJUU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KICAgICsvLy8gICAgdXBwZXIgNjQgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIGNvcGllZCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCiAgICArLy8v
ICAgIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhl
DQogICAgKy8vLyAgICBzcXVhcmUgcm9vdCBpcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBsb3dlciA2
NCBiaXRzIG9mIHRoaXMgb3BlcmFuZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCiAgICAr
Ly8vICAgIHNxdWFyZSByb290IG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIG9wZXJhbmQgXGEgX19i
LCBhbmQgd2hvc2UgdXBwZXIgNjQNCiAgICArLy8vICAgIGJpdHMgYXJlIGNvcGllZCBmcm9tIHRo
ZSB1cHBlciA2NCBiaXRzIG9mIG9wZXJhbmQgXGEgX19hLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3FydF9zZChfX20xMjhkIF9f
YSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICBfX20xMjhkIF9fYyA9IF9fYnVpbHRpbl9p
YTMyX3NxcnRzZCgoX192MmRmKV9fYik7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENhbGN1
bGF0ZXMgdGhlIHNxdWFyZSByb290IG9mIHRoZSBlYWNoIG9mIHR3byB2YWx1ZXMgc3RvcmVkIGlu
IGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBEIC8gU1FSVFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzcXVhcmUgcm9v
dHMgb2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zcXJ0X3Bk
KF9fbTEyOGQgX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NxcnRw
ZCgoX192MmRmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBsb3dlciA2
NC1iaXQgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgYm90aCBvcGVyYW5kcywgYW5kDQogICAg
Ky8vLyAgICByZXR1cm5zIHRoZSBsZXNzZXIgb2YgdGhlIHBhaXIgb2YgdmFsdWVzIGluIHRoZSBs
b3dlciA2NC1iaXRzIG9mIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0
cyBvZiB0aGUgcmVzdWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXINCiAgICArLy8vICAgIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlNEIC8gTUlOU0QgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFu
ZHMuIFRoZQ0KICAgICsvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3Bl
cmFuZHMuIFRoZQ0KICAgICsvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJl
IHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQogICAg
Ky8vLyAgICBtaW5pbXVtIHZhbHVlIGJldHdlZW4gYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIGNvcGllZCBmcm9tDQogICAgKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0
aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9taW5fc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQg
X19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnNkKChfX3YyZGYp
X19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBQZXJmb3JtcyBlbGVt
ZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0K
ICAgICsvLy8gICAgWzIgeCBkb3VibGVdIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgbGVzc2VyIG9mIGVhY2ggcGFpciBvZg0KICAgICsvLy8gICAgdmFsdWVzLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5QRCAvIE1JTlBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmlu
ZyB0aGUgbWluaW11bSB2YWx1ZXMNCiAgICArLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4N
CiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX21pbl9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1
cm4gX19idWlsdGluX2lhMzJfbWlucGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGxvd2VyIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcyBvZiBib3RoIG9wZXJhbmRzLCBhbmQNCiAgICArLy8vICAgIHJldHVybnMgdGhlIGdy
ZWF0ZXIgb2YgdGhlIHBhaXIgb2YgdmFsdWVzIGluIHRoZSBsb3dlciA2NC1iaXRzIG9mIHRoZQ0K
ICAgICsvLy8gICAgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0IGFyZSBj
b3BpZWQgZnJvbSB0aGUgdXBwZXINCiAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
b2YgdGhlIGZpcnN0IG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVk1BWFNEIC8gTUFYU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KICAgICsvLy8gICAg
bG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24u
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KICAgICsvLy8g
ICAgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlz
b24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3
aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQogICAgKy8vLyAgICBtYXhpbXVtIHZhbHVl
IGJldHdlZW4gYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9t
DQogICAgKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJh
bmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9tYXhfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX21heHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBQZXJmb3JtcyBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFy
aXNvbiBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KICAgICsvLy8gICAgWzIgeCBkb3Vi
bGVdIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgY29udGFpbmluZyB0aGUgZ3JlYXRlciBvZiBlYWNo
IHBhaXINCiAgICArLy8vICAgIG9mIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFYUEQgLyBNQVhQRCA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCiAgICArLy8v
IFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1heGltdW0gdmFsdWVz
DQogICAgKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tYXhfcGQoX19tMTI4ZCBf
X2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21h
eHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBQ
ZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3Vi
bGVdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQU5E
IC8gUEFORCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQogICAgKy8v
LyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYW5kX3BkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkdSlf
X2EgJiAoX192MmR1KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBQZXJmb3JtcyBhIGJp
dHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCB1c2luZw0K
ICAgICsvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQg
aW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQQU5ETiAvIFBBTkROIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4gVGhlDQog
ICAgKy8vLyAgICBvbmUncyBjb21wbGVtZW50IG9mIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUg
Yml0d2lzZSBBTkQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFu
ZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KICAgICsvLy8gICAgdmFsdWVzIGluIHRo
ZSBzZWNvbmQgb3BlcmFuZCBhbmQgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0DQog
ICAgKy8vLyAgICBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYW5kbm90X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZCkofihfX3YyZHUpX19hICYgKF9fdjJk
dSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9m
IHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQT1IgLyBQT1IgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcg
dGhlIGJpdHdpc2UgT1Igb2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9w
ZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fb3JfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAg
KyAgcmV0dXJuIChfX20xMjhkKSgoX192MmR1KV9fYSB8IChfX3YyZHUpX19iKTsNCiAgICArfQ0K
ICAgICsNCiAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBYT1Igb2YgdHdvIDEyOC1iaXQgdmVj
dG9ycyBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBYT1IgLyBQWE9SIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBiaXR3aXNlIFhP
UiBvZiB0aGUNCiAgICArLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV94
b3JfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChf
X20xMjhkKSgoX192MmR1KV9fYSBeIChfX3YyZHUpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICAr
Ly8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVd
IGZvciBlcXVhbGl0eS4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDANCiAgICArLy8vICAgIGZv
ciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVBEIC8gQ01QRVFQRCA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X2NtcGVxX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVy
biAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBlcXBkKChfX3YyZGYpX19hLCAoX192MmRmKV9f
Yik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgMTI4LWJp
dCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0
aGUgZmlyc3QNCiAgICArLy8vICAgIG9wZXJhbmQgYXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUg
c2Vjb25kIG9wZXJhbmQuIEVhY2ggY29tcGFyaXNvbg0KICAgICsvLy8gICAgeWllbGRzIDB4MCBm
b3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRQRCAvIENNUExUUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9jbXBsdF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1
cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbHRwZCgoX192MmRmKV9fYSwgKF9fdjJkZilf
X2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVz
cG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCiAgICArLy8vICAgIDEyOC1i
aXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4g
dGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5kIGFyZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g
dGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIEVhY2gg
Y29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0
cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBM
RVBEIC8gQ01QTEVQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGxlX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsZXBk
KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21w
YXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9m
IHRoZQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRl
cm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCiAgICArLy8vICAgIG9wZXJhbmQgYXJl
IGdyZWF0ZXIgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQogICAgKy8vLw0KICAg
ICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZG
RkZGRkZGRkYgZm9yIHRydWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkNNUExUUEQgLyBDTVBMVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wZ3RfcGQoX19tMTI4ZCBf
X2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRp
bl9pYTMyX2NtcGx0cGQoKF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBk
b3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KICAgICsvLy8g
ICAgb3BlcmFuZCBhcmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNv
bmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRz
IDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVQRCAvIENNUExFUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9jbXBnZV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICAr
ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVwZCgoX192MmRmKV9fYiwgKF9f
djJkZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUg
Y29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCiAgICArLy8vICAg
IDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1
ZXMgaW4gdGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5kIGFyZSBvcmRlcmVkIHdpdGggcmVz
cGVjdCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8g
ICAgQSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAib3JkZXJlZCIgd2l0aCBy
ZXNwZWN0IHRvIGVhY2gNCiAgICArLy8vICAgIG90aGVyIGlmIG5laXRoZXIgdmFsdWUgaXMgYSBO
YU4uIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwNCiAgICArLy8vICAgIDB4
RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWQ01QT1JEUEQgLyBDTVBPUkRQRCA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcG9yZF9w
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEy
OGQpX19idWlsdGluX2lhMzJfY21wb3JkcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3Rv
cnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJz
dA0KICAgICsvLy8gICAgb3BlcmFuZCBhcmUgdW5vcmRlcmVkIHdpdGggcmVzcGVjdCB0byB0aG9z
ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgQSBwYWlyIG9m
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAidW5vcmRlcmVkIiB3aXRoIHJlc3BlY3QgdG8g
ZWFjaA0KICAgICsvLy8gICAgb3RoZXIgaWYgb25lIG9yIGJvdGggdmFsdWVzIGFyZSBOYU4uIEVh
Y2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvcg0KICAgICsvLy8gICAgZmFsc2UsIDB4RkZGRkZG
RkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QVU5PUkRQRCAvIENNUFVOT1JEUEQgPC9jPg0KICAgICsvLy8gICBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9jbXB1bm9yZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICBy
ZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wdW5vcmRwZCgoX192MmRmKV9fYSwgKF9f
djJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUg
Y29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCiAgICArLy8vICAg
IDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1
ZXMgaW4gdGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5kIGFyZSB1bmVxdWFsIHRvIHRob3Nl
IGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyAgICBFYWNoIGNvbXBh
cmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRUEQg
LyBDTVBORVFQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX2NtcG5lcV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2Ip
DQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmVxcGQo
KF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBh
cmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2Yg
dGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVy
bWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KICAgICsvLy8gICAgb3BlcmFuZCBhcmUg
bm90IGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQogICAgKy8vLw0KICAg
ICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZG
RkZGRkZGRkYgZm9yIHRydWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkNNUE5MVFBEIC8gQ01QTkxUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBubHRfcGQoX19tMTI4
ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVp
bHRpbl9pYTMyX2NtcG5sdHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsy
IHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCiAgICAr
Ly8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhl
IHNlY29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5
aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQRCAvIENNUE5M
RVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccGFy
YW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNv
biByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fY21wbmxlX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICAr
ew0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubGVwZCgoX192MmRm
KV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFj
aCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCiAg
ICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlm
IHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgZ3Jl
YXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8v
LyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZG
RkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ01QTkxUUEQgLyBDTVBOTFRQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcG5ndF9wZChfX20xMjhkIF9f
YSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGlu
X2lhMzJfY21wbmx0cGQoKF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBk
b3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KICAgICsvLy8g
ICAgb3BlcmFuZCBhcmUgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUg
c2Vjb25kIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlp
ZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVBEIC8gQ01QTkxF
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxwYXJh
bSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9jbXBuZ2VfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sZXBkKChfX3YyZGYp
X19iLCAoX192MmRmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0K
ICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIg
eCBkb3VibGVdIGZvciBlcXVhbGl0eS4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFy
aXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVNEIC8g
Q01QRVFTRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KICAgICsvLy8gXHBhcmFtIF9f
Yg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFy
aXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBm
cm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGVxX3NkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5f
aWEzMl9jbXBlcXNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCB2YWx1ZXMgaW4gZWFjaCBvZg0KICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8g
ICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHRoZSBjb3Jy
ZXNwb25kaW5nIHZhbHVlIGluDQogICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAg
ICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwg
MHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFNEIC8gQ01QTFRTRCA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0K
ICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
b2YgXGEgX19iLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlz
DQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93
ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4g
VGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxh
IF9fYS4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX2NtcGx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAg
ICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsdHNkKChfX3YyZGYpX19hLCAo
X192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KICAgICsv
Ly8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3Vi
bGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBw
YXJhbWV0ZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KICAgICsvLy8gICAgY29ycmVz
cG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8v
LyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZG
RkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDTVBMRVNEIC8gQ01QTEVTRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29t
cGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBj
b21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250
YWlucyB0aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0IGJp
dHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGxl
X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19t
MTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsZXNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KICAgICsvLy8gICAgdGhlIHR3byAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWlu
ZSBpZg0KICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3Jl
YXRlciB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlDQogICAgKy8vLyAgICBpbiB0aGUgc2Vj
b25kIHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVs
ZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFNEIC8gQ01QTFRTRCA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICAgY29tcGFyZWQgdG8gdGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24N
CiAgICArLy8vICAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20g
dGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wZ3Rfc2QoX19tMTI4ZCBfX2EsIF9f
bTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9j
bXBsdHNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5z
aW9uX18gKF9fbTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCiAgICArfQ0KICAgICsNCiAgICAr
Ly8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZh
bHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQogICAgKy8vLyAgICB0
aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gdGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFy
YW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAg
Zm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFU0QgLyBDTVBMRVNEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQogICAgKy8vLyAg
ICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0
IGJpdHMgb2YgXGEgX19hLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fY21wZ2Vfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0K
ICAgICt7DQogICAgKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9jbXBsZXNkKChfX3Yy
ZGYpX19iLCAoX192MmRmKV9fYSk7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEy
OGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVz
IHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNo
IG9mDQogICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBv
ZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQogICAgKy8vLyAgICB0aGUgdmFsdWUgaW4g
dGhlIGZpcnN0IHBhcmFtZXRlciBpcyAib3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIHRoZQ0KICAg
ICsvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAg
ICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwg
MHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLiBBIHBhaXINCiAgICArLy8vICAgIG9mIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAib3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3Ro
ZXIgaWYNCiAgICArLy8vICAgIG5laXRoZXIgdmFsdWUgaXMgYSBOYU4uDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE9SRFNEIC8gQ01QT1JEU0QgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24NCiAgICAr
Ly8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBw
ZXIgNjQgYml0cyBvZiBcYSBfX2EuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBvcmRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQg
X19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG9y
ZHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBD
b21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMg
aW4gZWFjaCBvZg0KICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8gICAgdGhlIHZh
bHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgInVub3JkZXJlZCIgd2l0aCByZXNwZWN0IHRv
IHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFt
ZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZv
ciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLiBBIHBhaXINCiAgICArLy8vICAg
IG9mIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAidW5vcmRlcmVkIiB3aXRoIHJlc3BlY3Qg
dG8gZWFjaCBvdGhlciBpZg0KICAgICsvLy8gICAgb25lIG9yIGJvdGggdmFsdWVzIGFyZSBOYU4u
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFVOT1JE
U0QgLyBDTVBVTk9SRFNEIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Iu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8v
ICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9f
YS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRz
IGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQogICAgKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIg
NjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
Y21wdW5vcmRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcHVub3Jkc2QoKF9fdjJkZilfX2EsIChfX3Yy
ZGYpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAg
ICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0g
dG8gZGV0ZXJtaW5lIGlmDQogICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFt
ZXRlciBpcyB1bmVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQogICAgKy8vLyAg
ICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFy
aXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBORVFTRCAv
IENNUE5FUVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
YQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21w
YXJpc29uDQogICAgKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVk
IGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wbmVxX3NkKF9fbTEyOGQg
X19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0
aW5faWEzMl9jbXBuZXFzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAg
Kw0KICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCiAgICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCiAgICAr
Ly8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBsZXNzIHRoYW4g
dGhlIGNvcnJlc3BvbmRpbmcNCiAgICArLy8vICAgIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9y
IGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFNEIC8gQ01QTkxUU0QgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlIG9mIFxhIF9fYi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAg
IHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQg
Yml0cyBvZiBcYSBfX2EuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV9jbXBubHRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0K
ICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHNkKChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJl
cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFj
aCBvZg0KICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8gICAgdGhlIHZhbHVlIGlu
IHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUNCiAg
ICArLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQog
ICAgKy8vLw0KICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2Us
IDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFU0QgLyBDTVBOTEVTRCA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBp
cw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgb2YgXGEgX19iLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyAgQSAxMjgtYml0IHZlY3Rvci4gVGhl
IGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgIHJlc3Vs
dHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBv
ZiBcYSBfX2EuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9jbXBubGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sZXNkKChfX3YyZGYp
X19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0K
ICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIg
eCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBm
aXJzdCBwYXJhbWV0ZXIgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZw0KICAg
ICsvLy8gICAgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQogICAgKy8vLw0KICAgICsv
Ly8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZG
RkZGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ01QTkxUU0QgLyBDTVBOTFRTRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAg
Y29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Eu
DQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBj
b250YWlucyB0aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2Nt
cG5ndF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICBfX20xMjhk
IF9fYyA9IF9fYnVpbHRpbl9pYTMyX2NtcG5sdHNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7
DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsgX19jWzBdLCBfX2FbMV0g
fTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAgICB0aGUg
dHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0
ZXJtaW5lIGlmDQogICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBp
cyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9u
ZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAg
ICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZG
IGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBOTEVTRCAvIENNUE5MRVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNv
bXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRh
aW5zIHRoZSBjb21wYXJpc29uDQogICAgKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0
cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wbmdl
X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIF9fbTEyOGQgX19j
ID0gX19idWlsdGluX2lhMzJfY21wbmxlc2QoKF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsNCiAg
ICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCkgeyBfX2NbMF0sIF9fYVsxXSB9Ow0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCiAgICArLy8vICAgIHRoZSB0d28g
MTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSBmb3IgZXF1YWxp
dHkuDQogICAgKy8vLw0KICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZh
bHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdl
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdv
DQogICAgKy8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMg
cmV0dXJuZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX2NvbWllcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAg
ICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZXEoKF9fdjJkZilfX2EsIChfX3YyZGYp
X19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAgICB0
aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8g
ZGV0ZXJtaW5lIGlmDQogICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRl
ciBpcyBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4NCiAgICArLy8vICAgIHRo
ZSBzZWNvbmQgcGFyYW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29u
IHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCiAg
ICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1
cm5lZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09N
SVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQogICAgKy8vLyBccGFy
YW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRv
IHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCiAgICArLy8vIFxy
ZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBl
aXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY29taWx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhk
IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RsdCgoX192
MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMg
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2gg
b2YNCiAgICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9m
IFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCiAgICArLy8vICAgIHRoZSB2YWx1ZSBpbiB0
aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUNCiAgICArLy8v
ICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQogICAgKy8v
Lw0KICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0
cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgbG93ZXIgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
aXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZh
bHVlIG9mIFxhIF9fYi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgaXMNCiAgICArLy8vICAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCiAgICArLy8v
ICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X2NvbWlsZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1
cm4gX19idWlsdGluX2lhMzJfY29taXNkbGUoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAgICB0aGUgdHdvIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5l
IGlmDQogICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVh
dGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUNCiAgICArLy8vICAgIGluIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxk
cyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCiAgICArLy8v
ICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8g
Q09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQogICAgKy8vLyBccGFyYW0gX19i
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1cm5z
IEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIg
b2YgdGhlIHR3bw0KICAgICsvLy8gICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlz
IE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fY29taWd0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikN
CiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RndCgoX192MmRmKV9f
YSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCiAg
ICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHgg
ZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCiAgICArLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmly
c3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUNCiAgICArLy8vICAg
IGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQogICAgKy8vLw0K
ICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVl
LiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMN
CiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBp
cw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgb2YgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRo
ZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQogICAgKy8vLyAgICBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NvbWln
ZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19i
dWlsdGluX2lhMzJfY29taXNkZ2UoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAgICArfQ0K
ICAgICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQog
ICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB1bmVxdWFsIHRv
IHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQogICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFt
ZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3Ig
ZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvDQogICAgKy8vLyAgICBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRl
Z2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0
d28NCiAgICArLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDEg
aXMgcmV0dXJuZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX2NvbWluZXFfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZG5lcSgoX192MmRmKV9fYSwgKF9f
djJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCiAgICArLy8v
ICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91Ymxl
XSBmb3IgZXF1YWxpdHkuIFRoZQ0KICAgICsvLy8gICAgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3Ig
ZmFsc2UsIDEgZm9yIHRydWUuDQogICAgKy8vLw0KICAgICsvLy8gICAgSWYgZWl0aGVyIG9mIHRo
ZSB0d28gbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNE
IC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0byB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0
dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0
aGVyIG9mIHRoZSB0d28NCiAgICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVz
IGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdWNvbWllcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGVxKChfX3Yy
ZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBv
Zg0KICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRo
ZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlu
DQogICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAg
ICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhl
ciBvZiB0aGUgdHdvIGxvd2VyDQogICAgKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBp
cyBOYU4sIDAgaXMgcmV0dXJuZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlVDT01JU0QgLyBVQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8v
LyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBf
X2IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICAr
Ly8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxh
IF9fYS4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICtzdGF0aWMg
X19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91Y29taWx0X3NkKF9f
bTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5f
aWEzMl91Y29taXNkbHQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IHZhbHVlcyBpbiBlYWNoIG9mDQogICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQogICAgKy8v
LyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gb3IgZXF1
YWwgdG8gdGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQg
cGFyYW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAw
IGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXINCiAgICAr
Ly8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVD
T01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCiAgICArLy8vICAgICBjb21wYXJlZCB0byB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJu
cyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVy
IG9mIHRoZSB0d28NCiAgICArLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBp
cyBOYU4sIDAgaXMgcmV0dXJuZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX3Vjb21pbGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RsZSgoX192MmRm
KV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YN
CiAgICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsy
IHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCiAgICArLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUg
Zmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZQ0K
ICAgICsvLy8gICAgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQogICAgKy8vLw0KICAgICsvLy8g
ICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRo
ZXIgb2YgdGhlIHR3byBsb3dlcg0KICAgICsvLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMg
aXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsv
Ly8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEg
X19iLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAg
ICsvLy8gICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9m
IFxhIF9fYS4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdWNvbWlndF9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWls
dGluX2lhMzJfdWNvbWlzZGd0KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAg
ICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIHRvIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUg
c2Vjb25kIHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5
aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuICBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAg
ICsvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVy
bmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09N
SVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAgICsvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KICAgICsvLy8gXHBh
cmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQogICAgKy8vLyAgICBjb21wYXJlZCB0
byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQogICAgKy8vLyBc
cmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYg
ZWl0aGVyIG9mIHRoZSB0d28NCiAgICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdWNvbWlnZV9zZChfX20xMjhkIF9fYSwgX19tMTI4
ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGdlKChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJl
cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFj
aCBvZg0KICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KICAgICsvLy8gICAgdGhlIHZhbHVlIGlu
IHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdW5lcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1
ZSBpbg0KICAgICsvLy8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQogICAgKy8vLw0KICAgICsv
Ly8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBl
aXRoZXIgb2YgdGhlIHR3byBsb3dlcg0KICAgICsvLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KICAg
ICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2Yg
XGEgX19iLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQog
ICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBv
ZiBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0LiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91Y29taW5lcV9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWls
dGluX2lhMzJfdWNvbWlzZG5lcSgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSBpbnRvIHR3byBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50DQogICAgKy8v
LyAgICB2YWx1ZXMsIHJldHVybmVkIGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyAgICBUaGUgdXBwZXIgNjQgYml0cyBvZiB0
aGUgcmVzdWx0IHZlY3RvciBhcmUgc2V0IHRvIHplcm8uDQogICAgKy8vLw0KICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBEMlBTIC8gQ1ZUUEQyUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KICAg
ICsvLy8gICAgY29udmVydGVkIHZhbHVlcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIHNldCB0byB6
ZXJvLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9jdnRwZF9wcyhfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9jdnRwZDJwcygoX192MmRmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBDb252ZXJ0cyB0aGUgbG93ZXIgdHdvIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQg
ZWxlbWVudHMgb2YgYQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
aW50byB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludA0KICAgICsvLy8gICAgdmFs
dWVzLCByZXR1cm5lZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVw
cGVyIHR3bw0KICAgICsvLy8gICAgZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3RvciBhcmUgdW51
c2VkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQ
UzJQRCAvIENWVFBTMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhl
IGxvd2VyIHR3byBzaW5nbGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCBl
bGVtZW50cyBhcmUgY29udmVydGVkIHRvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLiBUaGUNCiAg
ICArLy8vICAgIHVwcGVyIHR3byBlbGVtZW50cyBhcmUgdW51c2VkLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29udmVy
dGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX2N2dHBzX3BkKF9fbTEyOCBfX2EpDQogICAgK3sNCiAgICArI2lmZGVm
IF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnBk
ICgoX192NHNmKSBfX2EpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19tMTI4ZCkgX19i
dWlsdGluX2NvbnZlcnR2ZWN0b3IoDQogICAgKyAgICAgIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMSksIF9fdjJkZik7DQogICAgKyNlbmRpZg0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgdGhlIGxvd2VyIHR3byBpbnRlZ2VyIGVs
ZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFs0IHggaTMyXSBpbnRv
IHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcywgcmV0dXJuZWQgaW4g
YQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8N
CiAgICArLy8vICAgIFRoZSB1cHBlciB0d28gZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3RvciBh
cmUgdW51c2VkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDVlREUTJQRCAvIENWVERRMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTMyXS4gVGhlIGxvd2VyIHR3byBpbnRlZ2VyIGVsZW1lbnRzIGFyZQ0KICAgICsvLy8gICAg
Y29udmVydGVkIHRvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8v
ICAgIFRoZSB1cHBlciB0d28gZWxlbWVudHMgYXJlIHVudXNlZC4NCiAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9jdnRlcGkzMl9wZChfX20xMjhpIF9fYSkNCiAgICArew0KICAgICsjaWZk
ZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY3Z0ZHEy
cGQgKChfX3Y0c2kpIF9fYSk7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhkKSBf
X2J1aWx0aW5fY29udmVydHZlY3RvcigNCiAgICArICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0
b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19hLCAwLCAxKSwgX192MmRmKTsNCiAgICArI2VuZGlm
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgZWxlbWVudHMgb2YgYQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGludG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMs
DQogICAgKy8vLyAgICByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIHVwcGVyDQogICAgKy8vLyAgICA2NCBiaXRzIG9mIHRo
ZSByZXN1bHQgdmVjdG9yIGFyZSBzZXQgdG8gemVyby4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEQyRFEgLyBDVlRQRDJEUSA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGkzMl0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KICAgICsv
Ly8gICAgY29udmVydGVkIHZhbHVlcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIHNldCB0byB6ZXJv
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW1fY3Z0cGRfZXBpMzIoX19tMTI4ZCBfX2EpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05V
Q19fDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxICgoX192
MmRmKSBfX2EpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRw
ZDJkcSgoX192MmRmKV9fYSk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8g
Q29udmVydHMgdGhlIGxvdy1vcmRlciBlbGVtZW50IG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdDQogICAgKy8vLyAgICBpbnRvIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVl
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTRDJT
SSAvIENWVFNEMlNJIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBs
b3dlciA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZQ0KICAgICsvLy8gICAgY29udmVyc2lvbi4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNv
bnZlcnRlZCB2YWx1ZS4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fY3Z0c2Rfc2kzMihfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9jdnRzZDJzaSgoX192MmRmKV9fYSk7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBDb252ZXJ0cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCBlbGVtZW50IG9mIGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSwgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIsIGludG8gYQ0KICAgICsvLy8gICAgc2luZ2xl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSwgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDMy
IGJpdHMgb2YgYQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRo
ZSB1cHBlciA5NiBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yIGFyZQ0KICAgICsvLy8gICAgY29w
aWVkIGZyb20gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0QyU1MgLyBDVlRT
RDJTUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB1cHBlciA5NiBi
aXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KICAgICsvLy8gICAgY29waWVkIHRvIHRoZSB1cHBl
ciA5NiBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24NCiAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgdXNlZCBpbiB0aGUg
Y29udmVyc2lvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQogICAgKy8vLyAgICBjb252ZXJ0
ZWQgdmFsdWUgZnJvbSB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVwcGVyIDk2IGJpdHMgYXJl
IGNvcGllZA0KICAgICsvLy8gICAgZnJvbSB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qg
cGFyYW1ldGVyLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9jdnRzZF9zcyhfX20xMjggX19hLCBfX20xMjhkIF9fYikNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzKChfX3Y0c2YpX19h
LCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyBhIDMyLWJp
dCBzaWduZWQgaW50ZWdlciB2YWx1ZSwgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIsIGludG8NCiAg
ICArLy8vICAgIGEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSwgcmV0dXJu
ZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YNCiAgICArLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0IHZlY3Rvcg0K
ICAgICsvLy8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJz
dCBwYXJhbWV0ZXIuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkNWVFNJMlNEIC8gQ1ZUU0kyU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhpcyBwYXJhbWV0ZXIgYXJlDQogICAgKy8vLyAg
ICBjb3BpZWQgdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcg
dGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KICAg
ICsvLy8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1
cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQNCiAgICArLy8vICAgIGZyb20gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dHNpMzJfc2QoX19tMTI4ZCBfX2EsIGlu
dCBfX2IpDQogICAgK3sNCiAgICArICBfX2FbMF0gPSBfX2I7DQogICAgKyAgcmV0dXJuIF9fYTsN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIHRoZSBsb3dlciBzaW5nbGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgb2YgYQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0sIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLCBpbnRvIGENCiAgICAr
Ly8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUsIHJldHVybmVkIGlu
IHRoZSBsb3dlciA2NCBiaXRzIG9mDQogICAgKy8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3INCiAgICAr
Ly8vICAgIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFy
YW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
VlRTUzJTRCAvIENWVFNTMlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KICAgICsvLy8gICAgY29w
aWVkIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93
ZXIgc2luZ2xlLXByZWNpc2lvbg0KICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBp
cyB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQogICAg
Ky8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgZnJvbSB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVw
cGVyIDY0IGJpdHMgYXJlIGNvcGllZA0KICAgICsvLy8gICAgZnJvbSB0aGUgdXBwZXIgNjQgYml0
cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhk
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c3Nfc2QoX19tMTI4ZCBfX2EsIF9fbTEy
OCBfX2IpDQogICAgK3sNCiAgICArICBfX2FbMF0gPSBfX2JbMF07DQogICAgKyAgcmV0dXJuIF9f
YTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhDQogICAgKy8vLyAgICAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVl
cywNCiAgICArLy8vICAgIHJldHVybmVkIGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIHRoZSByZXN1
bHQgb2YgZWl0aGVyIGNvbnZlcnNpb24gaXMgaW5leGFjdCwgdGhlIHJlc3VsdCBpcyB0cnVuY2F0
ZWQNCiAgICArLy8vICAgIChyb3VuZGVkIHRvd2FyZHMgemVybykgcmVnYXJkbGVzcyBvZiB0aGUg
Y3VycmVudCBNWENTUiBzZXR0aW5nLiBUaGUgdXBwZXINCiAgICArLy8vICAgIDY0IGJpdHMgb2Yg
dGhlIHJlc3VsdCB2ZWN0b3IgYXJlIHNldCB0byB6ZXJvLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUEQyRFEgLyBDVlRUUEQyRFEgPC9jPg0KICAg
ICsvLy8gICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29u
dGFpbiB0aGUNCiAgICArLy8vICAgIGNvbnZlcnRlZCB2YWx1ZXMuIFRoZSB1cHBlciA2NCBiaXRz
IGFyZSBzZXQgdG8gemVyby4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX2N2dHRwZF9lcGkzMihfX20xMjhkIF9fYSkNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEoKF9fdjJkZilf
X2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgdGhlIGxvdy1vcmRlciBlbGVt
ZW50IG9mIGEgWzIgeCBkb3VibGVdIHZlY3RvciBpbnRvIGEgMzItYml0DQogICAgKy8vLyAgICBz
aWduZWQgaW50ZWdlciB2YWx1ZSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMgaW5l
eGFjdC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZU
VFNEMlNJIC8gQ1ZUVFNEMlNJIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZQ0KICAgICsvLy8g
ICAgY29udmVyc2lvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2Vy
IGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCiAgICArc3RhdGljIF9faW5saW5lX18g
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0dHNkX3NpMzIoX19tMTI4ZCBfX2Ep
DQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0dHNkMnNpKChfX3YyZGYp
X19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhDQogICAgKy8vLyAgICAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZh
bHVlcywNCiAgICArLy8vICAgIHJldHVybmVkIGluIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkz
Ml0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEQy
UEkgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgY29udmVydGVk
IHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KICAgICtfbW1fY3Z0cGRfcGkzMihfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0cGQycGkoKF9fdjJkZilfX2EpOw0KICAgICt9
DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBpbnRvIHR3byBzaWduZWQgMzItYml0IGludGVnZXIgdmFsdWVzLA0KICAgICsv
Ly8gICAgcmV0dXJuZWQgaW4gYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4NCiAgICArLy8v
DQogICAgKy8vLyAgICBJZiB0aGUgcmVzdWx0IG9mIGVpdGhlciBjb252ZXJzaW9uIGlzIGluZXhh
Y3QsIHRoZSByZXN1bHQgaXMgdHJ1bmNhdGVkDQogICAgKy8vLyAgICAocm91bmRlZCB0b3dhcmRz
IHplcm8pIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZy4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRUUEQyUEkgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0
IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtf
bW1fY3Z0dHBkX3BpMzIoX19tMTI4ZCBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX2N2dHRwZDJwaSgoX192MmRmKV9fYSk7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBDb252ZXJ0cyB0aGUgdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBv
ZiBhIDY0LWJpdCB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFsyIHggaTMyXSBpbnRvIHR3byBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcywgcmV0dXJuZWQgaW4gYQ0KICAgICsv
Ly8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9y
IG9mIFsyIHggaTMyXS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fY3Z0cGkz
Ml9wZChfX202NCBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0
cGkycGQoKF9fdjJzaSlfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUmV0dXJucyB0aGUg
bG93LW9yZGVyIGVsZW1lbnQgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gYXMN
CiAgICArLy8vICAgIGEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSByZXR1cm5lZC4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSBjb3Bp
ZWQgZnJvbSB0aGUgbG93ZXIgNjQNCiAgICArLy8vICAgIGJpdHMgb2YgXGEgX19hLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jdnRz
ZF9mNjQoX19tMTI4ZCBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gX19hWzBdOw0KICAgICt9
DQogICAgKw0KICAgICsvLy8gTG9hZHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gZnJvbSBhbiBhbGlnbmVkDQogICAgKy8vLyAgICBtZW1vcnkgbG9jYXRp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQ
RCAvIE1PVkFQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2RwDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4g
VGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KICAgICsvLy8gICAgbG9jYXRpb24gaGFzIHRvIGJl
IDE2LWJ5dGUgYWxpZ25lZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9sb2FkX3BkKGRv
dWJsZSBjb25zdCAqX19kcCkNCiAgICArew0KICAgICsgIHJldHVybiAqKF9fbTEyOGQqKV9fZHA7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyBhIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRp
bmctcG9pbnQgdmFsdWUgZnJvbSBhIHNwZWNpZmllZCBtZW1vcnkNCiAgICArLy8vICAgIGxvY2F0
aW9uIGFuZCBkdXBsaWNhdGVzIGl0IHRvIGJvdGggdmVjdG9yIGVsZW1lbnRzIG9mIGEgMTI4LWJp
dCB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFsyIHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCAvIE1PVkREVVAgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19kcA0KICAgICsvLy8gICAgQSBw
b2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgbG9hZGVkIGFuZA0KICAgICsvLy8gICAgZHVwbGljYXRlZCB2YWx1
ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9sb2FkMV9wZChkb3VibGUgY29uc3QgKl9fZHApDQogICAgK3sNCiAgICArICBzdHJ1
Y3QgX19tbV9sb2FkMV9wZF9zdHJ1Y3Qgew0KICAgICsgICAgZG91YmxlIF9fdTsNCiAgICArICB9
IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICBkb3Vi
bGUgX191ID0gKChzdHJ1Y3QgX19tbV9sb2FkMV9wZF9zdHJ1Y3QqKV9fZHApLT5fX3U7DQogICAg
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3UsIF9fdSB9Ow0KICAgICt9DQog
ICAgKw0KICAgICsjZGVmaW5lICAgICAgICBfbW1fbG9hZF9wZDEoZHApICAgICAgICBfbW1fbG9h
ZDFfcGQoZHApDQogICAgKw0KICAgICsvLy8gTG9hZHMgdHdvIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWVzLCBpbiByZXZlcnNlIG9yZGVyLCBmcm9tIGFuIGFsaWduZWQNCiAgICArLy8vICAgIG1lbW9y
eSBsb2NhdGlvbiBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQgLyBNT1ZBUEQg
PC9jPiBpbnN0cnVjdGlvbiArDQogICAgKy8vLyBuZWVkZWQgc2h1ZmZsaW5nIGluc3RydWN0aW9u
cy4gSW4gQVZYIG1vZGUsIHRoZSBzaHVmZmxpbmcgbWF5IGJlIGNvbWJpbmVkDQogICAgKy8vLyB3
aXRoIHRoZSBcYyBWTU9WQVBELCByZXN1bHRpbmcgaW4gb25seSBhIFxjIFZQRVJNSUxQRCBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19kcA0KICAgICsvLy8gICAgQSAx
Ni1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhbiBhcnJheSBvZiBkb3VibGUtcHJlY2lzaW9uIHZh
bHVlcyB0byBiZQ0KICAgICsvLy8gICAgbG9hZGVkIGluIHJldmVyc2Ugb3JkZXIuDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSByZXZlcnNlZCBsb2FkZWQNCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2xvYWRyX3BkKGRvdWJs
ZSBjb25zdCAqX19kcCkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICBfX20x
MjhkIF9fdG1wID0gX21tX2xvYWRfcGQgKF9fZHApOw0KICAgICsgIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9zaHVmcGQgKF9fdG1wLCBfX3RtcCwgX01NX1NIVUZGTEUyICgwLDEpKTsNCiAgICArI2Vs
c2UNCiAgICArICBfX20xMjhkIF9fdSA9ICooX19tMTI4ZCopX19kcDsNCiAgICArICByZXR1cm4g
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX3UsIChfX3YyZGYpX191LCAxLCAwKTsN
CiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyBhIDEyOC1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBmcm9tIGFuDQogICAgKy8vLyAgICB1
bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZNT1ZVUEQgLyBNT1ZVUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19kcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4
LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCiAgICArLy8v
ICAgIGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRl
ZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9sb2FkdV9wZChkb3VibGUgY29uc3QgKl9fZHApDQogICAgK3sNCiAgICAr
ICBzdHJ1Y3QgX19sb2FkdV9wZCB7DQogICAgKyAgICBfX20xMjhkIF9fdjsNCiAgICArICB9IF9f
YXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICByZXR1cm4g
KChzdHJ1Y3QgX19sb2FkdV9wZCopX19kcCktPl9fdjsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IExvYWRzIGEgNjQtYml0IGludGVnZXIgdmFsdWUgdG8gdGhlIGxvdyBlbGVtZW50IG9mIGEgMTI4
LWJpdCBpbnRlZ2VyDQogICAgKy8vLyAgICB2ZWN0b3IgYW5kIGNsZWFycyB0aGUgdXBwZXIgZWxl
bWVudC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9W
USAvIE1PVlEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19h
DQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUg
YWRkcmVzcyBvZiB0aGUgbWVtb3J5DQogICAgKy8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZl
IHRvIGJlIGFsaWduZWQuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggaTY0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9sb2FkdV9zaTY0KHZvaWQg
Y29uc3QgKl9fYSkNCiAgICArew0KICAgICsgIHN0cnVjdCBfX2xvYWR1X3NpNjQgew0KICAgICsg
ICAgbG9uZyBsb25nIF9fdjsNCiAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9f
bWF5X2FsaWFzX18pKTsNCiAgICArICBsb25nIGxvbmcgX191ID0gKChzdHJ1Y3QgX19sb2FkdV9z
aTY0KilfX2EpLT5fX3Y7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9f
djJkaSl7X191LCAwTH07DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyBhIDY0LWJpdCBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIHRvIHRoZSBsb3cgZWxlbWVudCBvZiBhDQogICAgKy8vLyAg
ICAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFuZCBjbGVhcnMgdGhlIHVwcGVyIGVsZW1lbnQuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNEIC8gTU9W
U0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19kcA0KICAg
ICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlLg0KICAgICsvLy8gICAgVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9y
eSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQg
dmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9sb2FkX3NkKGRvdWJsZSBjb25zdCAqX19kcCkNCiAgICArew0KICAgICsgIHN0
cnVjdCBfX21tX2xvYWRfc2Rfc3RydWN0IHsNCiAgICArICAgIGRvdWJsZSBfX3U7DQogICAgKyAg
fSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQogICAgKyAgZG91
YmxlIF9fdSA9ICgoc3RydWN0IF9fbW1fbG9hZF9zZF9zdHJ1Y3QqKV9fZHApLT5fX3U7DQogICAg
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3UsIDAgfTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIExvYWRzIGEgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpbnRvIHRoZSBoaWdo
LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLiBUaGUgbG93LW9yZGVyIGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSBsb3ctb3JkZXINCiAg
ICArLy8vICAgIGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkhQRCAvIE1PVkhQRCA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KICAgICsvLy8gICAgQml0cyBbNjM6MF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X2RwDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uIGNv
bnRhaW5pbmcgYSBkb3VibGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCB2
YWx1ZSB0aGF0IGlzIGxvYWRlZC4gVGhlIGxvYWRlZCB2YWx1ZSBpcyB3cml0dGVuIHRvIGJpdHMN
CiAgICArLy8vICAgIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBt
ZW1vcnkgbG9jYXRpb24gZG9lcyBub3QgaGF2ZQ0KICAgICsvLy8gICAgdG8gYmUgYWxpZ25lZC4N
CiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2xvYWRoX3BkKF9fbTEyOGQgX19hLCBkb3VibGUg
Y29uc3QgKl9fZHApDQogICAgK3sNCiAgICArICBzdHJ1Y3QgX19tbV9sb2FkaF9wZF9zdHJ1Y3Qg
ew0KICAgICsgICAgZG91YmxlIF9fdTsNCiAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2Vk
X18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICBkb3VibGUgX191ID0gKChzdHJ1Y3QgX19tbV9s
b2FkaF9wZF9zdHJ1Y3QqKV9fZHApLT5fX3U7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18g
KF9fbTEyOGQpeyBfX2FbMF0sIF9fdSB9Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gTG9hZHMg
YSBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGludG8gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgMTI4
LWJpdA0KICAgICsvLy8gICAgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGhpZ2gtb3JkZXIg
Yml0cyBhcmUgY29waWVkIGZyb20gdGhlDQogICAgKy8vLyAgICBoaWdoLW9yZGVyIGJpdHMgb2Yg
dGhlIGZpcnN0IG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVk1PVkxQRCAvIE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19kcA0KICAgICsvLy8g
ICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgZG91
YmxlLXByZWNpc2lvbg0KICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUgdGhhdCBpcyBs
b2FkZWQuIFRoZSBsb2FkZWQgdmFsdWUgaXMgd3JpdHRlbiB0byBiaXRzDQogICAgKy8vLyAgICBb
NjM6MF0gb2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBk
b2VzIG5vdCBoYXZlIHRvDQogICAgKy8vLyAgICBiZSBhbGlnbmVkLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92ZWQg
dmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fbG9hZGxfcGQoX19tMTI4ZCBfX2EsIGRvdWJsZSBjb25zdCAqX19kcCkNCiAg
ICArew0KICAgICsgIHN0cnVjdCBfX21tX2xvYWRsX3BkX3N0cnVjdCB7DQogICAgKyAgICBkb3Vi
bGUgX191Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNf
XykpOw0KICAgICsgIGRvdWJsZSBfX3UgPSAoKHN0cnVjdCBfX21tX2xvYWRsX3BkX3N0cnVjdCop
X19kcCktPl9fdTsNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fdSwg
X19hWzFdIH07DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdpdGgNCiAgICArLy8vICAgIHVu
c3BlY2lmaWVkIGNvbnRlbnQuIFRoaXMgY291bGQgYmUgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBh
bm90aGVyDQogICAgKy8vLyAgICBpbnRyaW5zaWMgZnVuY3Rpb24gd2hlcmUgdGhlIGFyZ3VtZW50
IGlzIHJlcXVpcmVkIGJ1dCB0aGUgdmFsdWUgaXMgbm90DQogICAgKy8vLyAgICBhY3R1YWxseSB1
c2VkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aXRoIHVuc3BlY2lmaWVkDQogICAgKy8vLyAgICBj
b250ZW50Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fdW5kZWZpbmVkX3BkKHZvaWQpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05V
Q19fDQogICAgKyAgX19tMTI4ZCBfX1ggPSBfX1g7DQogICAgKyAgcmV0dXJuIF9fWDsNCiAgICAr
I2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdW5kZWYxMjgoKTsN
CiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXINCiAgICAr
Ly8vICAgIDY0IGJpdHMgb2YgdGhlIHZlY3RvciBhcmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3Bl
Y2lmaWVkIGRvdWJsZS1wcmVjaXNpb24NCiAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVl
LiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgc2V0IHRvIHplcm8uDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fdw0KICAgICsvLy8gICAgQSBkb3VibGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIg
NjQNCiAgICArLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFu
IGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4gVGhlDQogICAgKy8vLyAgICBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRo
ZSBwYXJhbWV0ZXIuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KICAgICsvLy8gICAgc2V0IHRvIHpl
cm8uDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9zZXRfc2QoZG91YmxlIF9fdykNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVu
c2lvbl9fIChfX20xMjhkKXsgX193LCAwIH07DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25z
dHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLCB3
aXRoIGVhY2gNCiAgICArLy8vICAgIG9mIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZQ0KICAgICsvLy8gICAgc3BlY2lmaWVk
IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgLyBNT1ZMSFBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fdw0KICAgICsvLy8gICAgQSBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBl
YWNoIHZlY3Rvcg0KICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8g
XHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW1fc2V0MV9wZChkb3VibGUgX193KQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3csIF9fdyB9Ow0KICAgICt9DQogICAgKw0K
ICAgICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSwgd2l0aCBlYWNoDQogICAgKy8vLyAgICBvZiB0aGUgdHdvIGRvdWJsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUNCiAgICArLy8v
ICAgIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIC8gTU9W
TEhQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3cNCiAg
ICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgZWFjaCB2ZWN0b3INCiAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3Vs
dC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NldF9wZDEoZG91YmxlIF9fdykNCiAgICAr
ew0KICAgICsgIHJldHVybiBfbW1fc2V0MV9wZChfX3cpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXQ0KICAgICsvLy8gICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCAvIFVOUENLTFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fdw0KICAgICsvLy8gICAgQSBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBw
ZXIgNjQNCiAgICArLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X3gNCiAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0DQogICAgKy8vLyAgICBiaXRzIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zZXRfcGQoZG91YmxlIF9fdywgZG91
YmxlIF9feCkNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsg
X194LCBfX3cgfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0sDQogICAgKy8vLyAgICBpbml0
aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lz
aW9uDQogICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX193DQogICAgKy8vLyAgICBB
IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IHRoZSBsb3dlciA2NA0KICAgICsvLy8gICAgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8g
XHBhcmFtIF9feA0KICAgICsvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIgNjQNCiAgICArLy8vICAgIGJpdHMg
b2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NldHJfcGQoZG91Ymxl
IF9fdywgZG91YmxlIF9feCkNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChf
X20xMjhkKXsgX193LCBfX3ggfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0NCiAgICArLy8v
ICAgIGluaXRpYWxpemVkIHRvIHplcm8uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlhPUlBTIC8gWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2l0aA0KICAgICsvLy8gICAgYWxsIGVsZW1lbnRzIHNl
dCB0byB6ZXJvLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fc2V0emVyb19wZCh2b2lkKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9f
ZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyAwLCAwIH07DQogICAgK30NCiAgICArDQogICAgKy8vLyBD
b25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
LiBUaGUgbG93ZXINCiAgICArLy8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUgbG93ZXIgNjQg
Yml0cyBvZiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVwcGVyDQogICAgKy8vLyAgICA2NCBi
aXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQRCAv
IEJMRU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19h
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVy
IDY0IGJpdHMgYXJlIHdyaXR0ZW4gdG8gdGhlDQogICAgKy8vLyAgICB1cHBlciA2NCBiaXRzIG9m
IHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIHdyaXR0ZW4gdG8g
dGhlDQogICAgKy8vLyAgICBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBt
b3ZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9tb3ZlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICAr
ew0KICAgICsgIF9fYVswXSA9IF9fYlswXTsNCiAgICArICByZXR1cm4gX19hOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gU3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIHRvIGENCiAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU0QgLyBNT1ZT
RCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2RwDQogICAg
Ky8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3RvcmVfc2QoZG91YmxlICpfX2Rw
LCBfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHN0cnVjdCBfX21tX3N0b3JlX3NkX3N0cnVj
dCB7DQogICAgKyAgICBkb3VibGUgX191Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNr
ZWRfXywgX19tYXlfYWxpYXNfXykpOw0KICAgICsgICgoc3RydWN0IF9fbW1fc3RvcmVfc2Rfc3Ry
dWN0KilfX2RwKS0+X191ID0gX19hWzBdOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92ZXMg
cGFja2VkIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3RvciBvZg0K
ICAgICsvLy8gICAgWzIgeCBkb3VibGVdIHRvIGEgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+Vk1PVkFQRCAvIE1PVkFQUzwvYz4g
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fZHANCiAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhbiBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNhbiBzdG9yZSB0
d28NCiAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLg0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSBwYWNrZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZQ0KICAgICsvLy8gICAgbW92ZWQuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zdG9yZV9w
ZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0KICAgICt7DQogICAgKyAgKihfX20xMjhkKilf
X2RwID0gX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92ZXMgdGhlIGxvd2VyIDY0IGJp
dHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdHdpY2UgdG8NCiAgICArLy8v
ICAgIHRoZSB1cHBlciBhbmQgbG93ZXIgNjQgYml0cyBvZiBhIG1lbW9yeSBsb2NhdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlDQogICAgKy8vLyAgIDxjPiBW
TU9WRERVUCArIFZNT1ZBUEQgLyBNT1ZMSFBTICsgTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fZHANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBh
IG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNhbiBzdG9yZSB0d28gZG91YmxlLXByZWNpc2lvbg0KICAg
ICsvLy8gICAgdmFsdWVzLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBhcmUgY29waWVk
IHRvIGVhY2gNCiAgICArLy8vICAgIG9mIHRoZSB2YWx1ZXMgaW4gXGEgX19kcC4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N0b3JlMV9w
ZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNf
Xw0KICAgICsgIF9tbV9zdG9yZV9wZCAoX19kcCwgX19idWlsdGluX2lhMzJfc2h1ZnBkIChfX2Es
IF9fYSwgX01NX1NIVUZGTEUyICgwLDApKSk7DQogICAgKyNlbHNlDQogICAgKyAgX19hID0gX19i
dWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19hLCAwLCAwKTsNCiAg
ICArICBfbW1fc3RvcmVfcGQoX19kcCwgX19hKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICAr
DQogICAgKy8vLyBNb3ZlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSB0d2ljZSB0bw0KICAgICsvLy8gICAgdGhlIHVwcGVyIGFuZCBsb3dlciA2
NCBiaXRzIG9mIGEgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUNCiAgICArLy8vICAgPGM+IFZNT1ZERFVQICsgVk1PVkFQRCAvIE1PVkxI
UFMgKyBNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19kcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY2Fu
IHN0b3JlIHR3byBkb3VibGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgKy8v
LyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSB3aG9zZSBsb3dlciA2NCBiaXRzIGFyZSBjb3BpZWQgdG8gZWFjaA0KICAgICsvLy8gICAgb2Yg
dGhlIHZhbHVlcyBpbiBcYSBfX2RwLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3RvcmVfcGQxKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBf
X2EpDQogICAgK3sNCiAgICArICBfbW1fc3RvcmUxX3BkKF9fZHAsIF9fYSk7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBTdG9yZXMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50
byBhbiB1bmFsaWduZWQgbWVtb3J5DQogICAgKy8vLyAgICBsb2NhdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBEIC8gTU9WVVBEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fZHANCiAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0
aGUgbWVtb3J5DQogICAgKy8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWdu
ZWQuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3RvcmV1
X3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQogICAgK3sNCiAgICArICBzdHJ1Y3QgX19z
dG9yZXVfcGQgew0KICAgICsgICAgX19tMTI4ZCBfX3Y7DQogICAgKyAgfSBfX2F0dHJpYnV0ZV9f
KChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQogICAgKyAgKChzdHJ1Y3QgX19zdG9yZXVf
cGQqKV9fZHApLT5fX3YgPSBfX2E7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdG9yZXMgdHdv
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLCBpbiByZXZlcnNlIG9yZGVyLCBmcm9tIGEgMTI4LWJp
dA0KICAgICsvLy8gICAgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhIDE2LWJ5dGUgYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IGEgc2h1ZmZsaW5nIGluc3RydWN0aW9uIGZvbGxvd2VkIGJ5IGENCiAgICArLy8vIDxjPiBWTU9W
QVBEIC8gTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fZHANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDE2LWJ5dGUgYWxpZ25lZCBtZW1vcnkg
bG9jYXRpb24gdGhhdCBjYW4gc3RvcmUgdHdvDQogICAgKy8vLyAgICBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSByZXZlcnNlZCBh
bmQNCiAgICArLy8vICAgIHN0b3JlZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N0b3Jlcl9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQg
X19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIF9tbV9zdG9yZV9wZCAo
X19kcCwgX19idWlsdGluX2lhMzJfc2h1ZnBkIChfX2EsIF9fYSwgX01NX1NIVUZGTEUyICgwLDEp
KSk7DQogICAgKyNlbHNlDQogICAgKyAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9f
djJkZilfX2EsIChfX3YyZGYpX19hLCAxLCAwKTsNCiAgICArICAqKF9fbTEyOGQgKilfX2RwID0g
X19hOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyB0aGUgdXBw
ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhDQogICAg
Ky8vLyAgICBtZW1vcnkgbG9jYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVk1PVkhQRCAvIE1PVkhQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2RwDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1i
aXQgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUg
c3RvcmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW1fc3RvcmVoX3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQogICAgK3sNCiAg
ICArICBzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0IHsNCiAgICArICAgIGRvdWJsZSBfX3U7
DQogICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQog
ICAgKyAgKChzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0KilfX2RwKS0+X191ID0gX19hWzFd
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGENCiAgICArLy8vICAgIG1lbW9yeSBs
b2NhdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TU9WTFBEIC8gTU9WTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fZHANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRp
b24uDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zdG9yZWxf
cGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHN0cnVjdCBfX21t
X3N0b3JlaF9wZF9zdHJ1Y3Qgew0KICAgICsgICAgZG91YmxlIF9fdTsNCiAgICArICB9IF9fYXR0
cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICAoKHN0cnVjdCBf
X21tX3N0b3JlaF9wZF9zdHJ1Y3QqKV9fZHApLT5fX3UgPSBfX2FbMF07DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0
IHZlY3RvcnMgb2YgWzE2IHggaThdLA0KICAgICsvLy8gICAgc2F2aW5nIHRoZSBsb3dlciA4IGJp
dHMgb2YgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhDQogICAgKy8v
LyAgICAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KICAgICsvLy8NCiAgICAr
Ly8vICAgIFRoZSBpbnRlZ2VyIGVsZW1lbnRzIG9mIGJvdGggcGFyYW1ldGVycyBjYW4gYmUgZWl0
aGVyIHNpZ25lZCBvciB1bnNpZ25lZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUEFEREIgLyBQQUREQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2
IHggaThdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMTYgeCBpOF0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsx
NiB4IGk4XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCiAgICArLy8vICAgIHBhcmFtZXRl
cnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9hZGRfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICAr
ICByZXR1cm4gKF9fbTEyOGkpKChfX3YxNnF1KV9fYSArIChfX3YxNnF1KV9fYik7DQogICAgK30N
CiAgICArDQogICAgKy8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAx
MjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLA0KICAgICsvLy8gICAgc2F2aW5nIHRoZSBsb3dl
ciAxNiBiaXRzIG9mIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0K
ICAgICsvLy8gICAgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCiAgICArLy8v
DQogICAgKy8vLyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRlcnMgY2Fu
IGJlIGVpdGhlciBzaWduZWQgb3IgdW5zaWduZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERXIC8gUEFERFcgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs4IHggaTE2XS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQogICAgKy8vLyAgICBw
YXJhbWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fYWRkX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICAr
ew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjhodSlfX2EgKyAoX192OGh1KV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9m
IHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBpMzJdLA0KICAgICsvLy8gICAgc2F2aW5nIHRo
ZSBsb3dlciAzMiBiaXRzIG9mIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQg
b2YgYQ0KICAgICsvLy8gICAgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCiAg
ICArLy8vDQogICAgKy8vLyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRl
cnMgY2FuIGJlIGVpdGhlciBzaWduZWQgb3IgdW5zaWduZWQuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBREREIC8gUEFEREQgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggaTMyXS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQogICAgKy8v
LyAgICBwYXJhbWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fYWRkX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
CiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjRzdSlfX2EgKyAoX192NHN1KV9f
Yik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIHR3byBzaWduZWQgb3IgdW5zaWduZWQg
NjQtYml0IGludGVnZXIgdmFsdWVzLCByZXR1cm5pbmcgdGhlDQogICAgKy8vLyAgICBsb3dlciA2
NCBiaXRzIG9mIHRoZSBzdW0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gUEFERFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19hDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyLg0KICAgICsvLy8gXHBhcmFtIF9f
Yg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlci4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQt
Yml0IGludGVnZXIgY29udGFpbmluZyB0aGUgc3VtIG9mIGJvdGggcGFyYW1ldGVycy4NCiAgICAr
I2lmbmRlZiBfX0dOVUNfXw0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlNfTU1YDQogICAgK19tbV9hZGRfc2k2NChfX202NCBfX2EsIF9fbTY0IF9fYikNCiAg
ICArew0KICAgICsgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHEoKF9fdjFkaSlf
X2EsIChfX3YxZGkpX19iKTsNCiAgICArfQ0KICAgICsjZW5kaWYNCiAgICArDQogICAgKy8vLyBB
ZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2Yg
WzIgeCBpNjRdLA0KICAgICsvLy8gICAgc2F2aW5nIHRoZSBsb3dlciA2NCBiaXRzIG9mIGVhY2gg
c3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0KICAgICsvLy8gICAgMTI4LWJp
dCByZXN1bHQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUg
aW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRlcnMgY2FuIGJlIGVpdGhlciBzaWduZWQg
b3IgdW5zaWduZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBBRERRIC8gUEFERFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBp
NjRdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29u
dGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQogICAgKy8vLyAgICBwYXJhbWV0ZXJzLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYWRk
X2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAo
X19tMTI4aSkoKF9fdjJkdSlfX2EgKyAoX192MmR1KV9fYik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBBZGRzLCB3aXRoIHNhdHVyYXRpb24sIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9m
IHR3byAxMjgtYml0DQogICAgKy8vLyAgICBzaWduZWQgWzE2IHggaThdIHZlY3RvcnMsIHNhdmlu
ZyBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mDQogICAgKy8vLyAgICBh
IDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRl
ciB0aGFuIDB4N0YgYXJlDQogICAgKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHg3Ri4gTmVnYXRpdmUg
c3VtcyBsZXNzIHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERTQiAvIFBBRERTQiA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAg
ICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBz
YXR1cmF0ZWQgc3VtcyBvZg0KICAgICsvLy8gICAgYm90aCBwYXJhbWV0ZXJzLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYWRkc19l
cGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkc2IxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2Ip
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gQWRkcywgd2l0aCBzYXR1cmF0aW9uLCB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KICAgICsvLy8gICAgc2lnbmVkIFs4
IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBvZg0KICAgICsvLy8gICAgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBpMTZd
LiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweDdGRkYNCiAgICArLy8vICAgIGFyZSBzYXR1
cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBzdW1zIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVy
YXRlZCB0bw0KICAgICsvLy8gICAgMHg4MDAwLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQQUREU1cgLyBQQUREU1cgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVk
IFs4IHggaTE2XSB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1bXMg
b2YNCiAgICArLy8vICAgIGJvdGggcGFyYW1ldGVycy4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2FkZHNfZXBpMTYoX19tMTI4aSBf
X2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BhZGRzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KICAgICt9DQogICAg
Kw0KICAgICsvLy8gQWRkcywgd2l0aCBzYXR1cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVt
ZW50cyBvZiB0d28gMTI4LWJpdA0KICAgICsvLy8gICAgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rv
cnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50DQogICAgKy8v
LyAgICBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0uIFBvc2l0aXZlIHN1
bXMgZ3JlYXRlciB0aGFuIDB4RkYNCiAgICArLy8vICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4g
TmVnYXRpdmUgc3VtcyBhcmUgc2F0dXJhdGVkIHRvIDB4MDAuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERVU0IgLyBQQUREVVNCIDwvYz4gaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgt
Yml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IHNhdHVyYXRlZCBzdW1zDQogICAgKy8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9hZGRz
X2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGR1c2IxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlf
X2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQWRkcywgd2l0aCBzYXR1cmF0aW9uLCB0aGUg
Y29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KICAgICsvLy8gICAgdW5zaWdu
ZWQgWzggeCBpMTZdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGlu
ZyBlbGVtZW50DQogICAgKy8vLyAgICBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbOCB4
IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuDQogICAgKy8vLyAgICAweEZGRkYgYXJl
IHNhdHVyYXRlZCB0byAweEZGRkYuIE5lZ2F0aXZlIHN1bXMgYXJlIHNhdHVyYXRlZCB0byAweDAw
MDAuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERV
U0IgLyBQQUREVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQog
ICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBp
MTZdIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkx
Nl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQogICAgKy8vLyAgICBvZiBi
b3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV9hZGRzX2VwdTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
CiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkdXN3MTI4
KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21w
dXRlcyB0aGUgcm91bmRlZCBhdmFyYWdlcyBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3
bw0KICAgICsvLy8gICAgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9ycywgc2F2aW5n
IGVhY2ggcmVzdWx0IGluIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9m
IGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFWR0IgLyBQQVZHQiA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsv
Ly8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBy
b3VuZGVkDQogICAgKy8vLyAgICBhdmVyYWdlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9hdmdf
ZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICB0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IF9fdjE2aHUgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIp
KSk7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KICAg
ICsgICAgICAgICAgICAgICAoKF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YxNnF1KV9fYSwg
X192MTZodSkgKw0KICAgICsgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9y
KChfX3YxNnF1KV9fYiwgX192MTZodSkpICsgMSkNCiAgICArICAgICAgICAgICAgICAgICA+PiAx
LCBfX3YxNnF1KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXB1dGVzIHRoZSByb3VuZGVk
IGF2YXJhZ2VzIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvDQogICAgKy8vLyAgICAx
MjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCByZXN1bHQgaW4g
dGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3Vs
dCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQQVZHVyAvIFBBVkdXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHgg
aTE2XSB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1
bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQNCiAgICArLy8v
ICAgIGF2ZXJhZ2VzIG9mIGJvdGggcGFyYW1ldGVycy4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2F2Z19lcHUxNihfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Y4
c3UgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQogICAgKyAgcmV0dXJu
IChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KICAgICsgICAgICAgICAgICAgICAo
KF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aHUpX19hLCBfX3Y4c3UpICsNCiAgICArICAg
ICAgICAgICAgICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OGh1KV9fYiwgX192OHN1
KSkgKyAxKQ0KICAgICsgICAgICAgICAgICAgICAgID4+IDEsIF9fdjhodSk7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBNdWx0aXBsaWVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3
byAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0NCiAgICArLy8vICAgIHZlY3RvcnMsIHByb2R1Y2lu
ZyBlaWdodCBpbnRlcm1lZGlhdGUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHByb2R1Y3RzLCBhbmQN
CiAgICArLy8vICAgIGFkZHMgdGhlIGNvbnNlY3V0aXZlIHBhaXJzIG9mIDMyLWJpdCBwcm9kdWN0
cyB0byBmb3JtIGEgMTI4LWJpdCBzaWduZWQNCiAgICArLy8vICAgIFs0IHggaTMyXSB2ZWN0b3Iu
DQogICAgKy8vLw0KICAgICsvLy8gICAgRm9yIGV4YW1wbGUsIGJpdHMgWzE1OjBdIG9mIGJvdGgg
cGFyYW1ldGVycyBhcmUgbXVsdGlwbGllZCBwcm9kdWNpbmcgYQ0KICAgICsvLy8gICAgMzItYml0
IHByb2R1Y3QsIGJpdHMgWzMxOjE2XSBvZiBib3RoIHBhcmFtZXRlcnMgYXJlIG11bHRpcGxpZWQg
cHJvZHVjaW5nDQogICAgKy8vLyAgICBhIDMyLWJpdCBwcm9kdWN0LCBhbmQgdGhlIHN1bSBvZiB0
aG9zZSB0d28gcHJvZHVjdHMgYmVjb21lcyBiaXRzIFszMTowXQ0KICAgICsvLy8gICAgb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UE1BRERXRCAvIFBNQUREV0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3Iu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHgg
aTE2XSB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVkIFs0IHggaTMy
XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiBwcm9kdWN0cw0KICAgICsvLy8gICAgb2Yg
Ym90aCBwYXJhbWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fbWFkZF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1hZGR3ZDEy
OCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29t
cGFyZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCBzaWduZWQgWzggeCBp
MTZdDQogICAgKy8vLyAgICB2ZWN0b3JzLCBzYXZpbmcgdGhlIGdyZWF0ZXIgdmFsdWUgZnJvbSBl
YWNoIGNvbXBhcmlzb24gaW4gdGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQg
b2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFYU1cgLyBQTUFYU1cgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgZ3Jl
YXRlciB2YWx1ZSBvZg0KICAgICsvLy8gICAgZWFjaCBjb21wYXJpc29uLg0KICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWF4X2VwaTE2
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5faWEzMl9wbWF4c3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2Yg
dHdvIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdDQogICAgKy8vLyAgICB2ZWN0b3JzLCBzYXZp
bmcgdGhlIGdyZWF0ZXIgdmFsdWUgZnJvbSBlYWNoIGNvbXBhcmlzb24gaW4gdGhlDQogICAgKy8v
LyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2Yg
WzE2IHggaThdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQTUFYVUIgLyBQTUFYVUIgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rv
ci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBb
MTYgeCBpOF0gdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHVuc2lnbmVkIFsx
NiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZSBvZg0KICAgICsvLy8g
ICAgZWFjaCBjb21wYXJpc29uLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWF4X2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtYXh1YjEy
OCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBD
b21wYXJlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHNpZ25lZCBbOCB4
IGkxNl0NCiAgICArLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgc21hbGxlciB2YWx1ZSBmcm9t
IGVhY2ggY29tcGFyaXNvbiBpbiB0aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5TVyAvIFBNSU5TVyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAg
ICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSBz
bWFsbGVyIHZhbHVlIG9mDQogICAgKy8vLyAgICBlYWNoIGNvbXBhcmlzb24uDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9taW5fZXBp
MTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3BtaW5zdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBv
ZiB0d28gMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0NCiAgICArLy8vICAgIHZlY3RvcnMsIHNh
dmluZyB0aGUgc21hbGxlciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBpbiB0aGUNCiAgICAr
Ly8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBv
ZiBbMTYgeCBpOF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBNSU5VQiAvIFBNSU5VQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVj
dG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVk
IFsxNiB4IGk4XSB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdW5zaWduZWQg
WzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBzbWFsbGVyIHZhbHVlIG9mDQogICAgKy8v
LyAgICBlYWNoIGNvbXBhcmlzb24uDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9taW5fZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1pbnVi
MTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IE11bHRpcGxpZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIHNpZ25lZCBbOCB4
IGkxNl0NCiAgICArLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgdXBwZXIgMTYgYml0cyBvZiBl
YWNoIDMyLWJpdCBwcm9kdWN0IGluIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVt
ZW50IG9mIGEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHJlc3VsdCB2ZWN0b3IuDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxIVyAvIFBNVUxIVyA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBf
X2INCiAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5n
IHRoZSB1cHBlciAxNiBiaXRzIG9mDQogICAgKy8vLyAgICBlYWNoIG9mIHRoZSBlaWdodCAzMi1i
aXQgcHJvZHVjdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9tdWxoaV9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQog
ICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGh3MTI4KChf
X3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBNdWx0aXBs
aWVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byB1bnNpZ25lZCBbOCB4IGkxNl0N
CiAgICArLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgdXBwZXIgMTYgYml0cyBvZiBlYWNoIDMy
LWJpdCBwcm9kdWN0IGluIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9m
IGEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gcmVzdWx0IHZlY3Rvci4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTEhVVyAvIFBNVUxIVVcgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBf
X2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFp
bmluZyB0aGUgdXBwZXIgMTYgYml0cw0KICAgICsvLy8gICAgb2YgZWFjaCBvZiB0aGUgZWlnaHQg
MzItYml0IHByb2R1Y3RzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fbXVsaGlfZXB1MTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtdWxodXcx
MjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIE11
bHRpcGxpZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIHNpZ25lZCBbOCB4IGkx
Nl0NCiAgICArLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgbG93ZXIgMTYgYml0cyBvZiBlYWNo
IDMyLWJpdCBwcm9kdWN0IGluIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50
IG9mIGEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHJlc3VsdCB2ZWN0b3IuDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxMVyAvIFBNVUxMVyA8L2M+
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRo
ZSBsb3dlciAxNiBiaXRzIG9mDQogICAgKy8vLyAgICBlYWNoIG9mIHRoZSBlaWdodCAzMi1iaXQg
cHJvZHVjdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9tdWxsb19lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAg
K3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aHUpX19hICogKF9fdjhodSlfX2IpOw0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gTXVsdGlwbGllcyAzMi1iaXQgdW5zaWduZWQgaW50ZWdl
ciB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBsb3dlciBiaXRzDQogICAgKy8vLyAgICBvZiB0aGUg
dHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgYW5kIHJldHVybnMgdGhlIDY0LWJpdCB1bnNpZ25l
ZA0KICAgICsvLy8gICAgcHJvZHVjdC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBQTVVMVURRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgcHJvZHVjdCBvZiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQogICAgK19tbV9tdWxfc3UzMihfX202NCBfX2EsIF9f
bTY0IF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BtdWx1ZHEgKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQog
ICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BtdWx1ZHEoKF9fdjJzaSlf
X2EsIChfX3Yyc2kpX19iKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBN
dWx0aXBsaWVzIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBjb250YWluZWQgaW4gdGhl
IGxvd2VyDQogICAgKy8vLyAgICBiaXRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9m
IHR3byBbMiB4IGk2NF0gdmVjdG9ycywgYW5kIHJldHVybnMNCiAgICArLy8vICAgIHRoZSA2NC1i
aXQgcHJvZHVjdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgYSBbMiB4IGk2NF0g
dmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
TVVMVURRIC8gUE1VTFVEUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgIEEgWzIgeCBpNjRdIHZlY3RvciBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAg
QSBbMiB4IGk2NF0gdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQogICAgKy8vLyBccmV0dXJucyBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcHJv
ZHVjdCBvZiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbXVsX2VwdTMyKF9fbTEyOGkgX19hLCBfX20xMjhp
IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wbXVsdWRxMTI4KChf
X3Y0c2kpX19hLCAoX192NHNpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wdXRl
cyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2YgY29ycmVzcG9uZGluZyA4LWJpdCBpbnRlZ2Vy
DQogICAgKy8vLyAgICB2YWx1ZXMgaW4gdHdvIDEyOC1iaXQgdmVjdG9ycy4gU3VtcyB0aGUgZmly
c3QgOCBhYnNvbHV0ZSBkaWZmZXJlbmNlcywgYW5kDQogICAgKy8vLyAgICBzZXBhcmF0ZWx5IHN1
bXMgdGhlIHNlY29uZCA4IGFic29sdXRlIGRpZmZlcmVuY2VzLiBQYWNrcyB0aGVzZSB0d28NCiAg
ICArLy8vICAgIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHN1bXMgaW50byB0aGUgdXBwZXIgYW5k
IGxvd2VyIGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAgIFsyIHggaTY0XSB2ZWN0b3IuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTQURCVyAvIFBTQURC
VyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291
cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQog
ICAgKy8vLyBccmV0dXJucyBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBv
ZiB0aGUgc2V0cyBvZiBhYnNvbHV0ZQ0KICAgICsvLy8gICAgZGlmZmVyZW5jZXMgYmV0d2VlbiBi
b3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW1fc2FkX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzYWRidzEyOCgoX192MTZxaSlfX2Es
IChfX3YxNnFpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMgdGhlIGNv
cnJlc3BvbmRpbmcgOC1iaXQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIG9wZXJhbmRzLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCQiAvIFBTVUJCIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCiAg
ICArLy8vICAgIGluIHRoZSBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N1Yl9lcGk4KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjE2cXUpX19hIC0g
KF9fdjE2cXUpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1YnRyYWN0cyB0aGUgY29y
cmVzcG9uZGluZyAxNi1iaXQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIG9wZXJhbmRzLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCVyAvIFBTVUJXIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCiAg
ICArLy8vICAgIGluIHRoZSBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N1Yl9lcGkxNihfX20xMjhpIF9fYSwgX19t
MTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aHUpX19hIC0g
KF9fdjhodSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3VidHJhY3RzIHRoZSBjb3Jy
ZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJEIC8gUFNVQkQgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0KICAg
ICsvLy8gICAgaW4gdGhlIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3ViX2VwaTMyKF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjRzdSlfX2EgLSAo
X192NHN1KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMgc2lnbmVkIG9y
IHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcyBhbmQgd3JpdGVzIHRoZQ0KICAgICsvLy8g
ICAgZGlmZmVyZW5jZSB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1VCUSA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBzdWJ0cmFoZW5kLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgdmFsdWVzIGluDQogICAg
Ky8vLyAgICB0aGUgb3BlcmFuZHMuDQogICAgKw0KICAgICsjaWZuZGVmIF9fR05VQ19fDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICArX21t
X3N1Yl9zaTY0KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wc3VicSgoX192MWRpKV9fYSwgKF9fdjFkaSlfX2IpOw0KICAg
ICt9DQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLy8vIFN1YnRyYWN0cyB0aGUgY29ycmVzcG9u
ZGluZyBlbGVtZW50cyBvZiB0d28gWzIgeCBpNjRdIHZlY3RvcnMuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJRIC8gUFNVQlEgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQogICAgKy8vLyBccGFy
YW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgc3VidHJhaGVuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0KICAgICsvLy8gICAg
aW4gdGhlIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fc3ViX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
CiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjJkdSlfX2EgLSAoX192MmR1KV9f
Yik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMgY29ycmVzcG9uZGluZyA4LWJp
dCBzaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIGlucHV0IGFuZA0KICAgICsvLy8gICAgcmV0
dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMgaW4gdGhlIGRl
c3RpbmF0aW9uLg0KICAgICsvLy8gICAgRGlmZmVyZW5jZXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJl
IHNhdHVyYXRlZCB0byAweDdGLCBhbmQgZGlmZmVyZW5jZXMgbGVzcw0KICAgICsvLy8gICAgdGhh
biAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQlNCIC8gUFNVQlNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRy
YWhlbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCiAgICArLy8vICAgIGluIHRoZSBv
cGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX3N1YnNfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sN
CiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnNiMTI4KChfX3YxNnFp
KV9fYSwgKF9fdjE2cWkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1YnRyYWN0cyBj
b3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIGlucHV0IGFu
ZA0KICAgICsvLy8gICAgcmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRp
bmcgYnl0ZXMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gICAgRGlmZmVyZW5jZXMgZ3Jl
YXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRiwgYW5kIHZhbHVlcyBsZXNz
DQogICAgKy8vLyAgICB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQlNXIC8gUFNVQlNX
IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsv
Ly8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMN
CiAgICArLy8vICAgIGluIHRoZSBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N1YnNfZXBpMTYoX19tMTI4aSBfX2Es
IF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p
YTMyX3BzdWJzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KICAgICt9DQogICAgKw0K
ICAgICsvLy8gU3VidHJhY3RzIGNvcnJlc3BvbmRpbmcgOC1iaXQgdW5zaWduZWQgaW50ZWdlciB2
YWx1ZXMgaW4gdGhlIGlucHV0DQogICAgKy8vLyAgICBhbmQgcmV0dXJucyB0aGUgZGlmZmVyZW5j
ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMgaW4gdGhlDQogICAgKy8vLyAgICBkZXN0aW5h
dGlvbi4gRGlmZmVyZW5jZXMgbGVzcyB0aGFuIDB4MDAgYXJlIHNhdHVyYXRlZCB0byAweDAwLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCVVNCIC8g
UFNVQlVTQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51
ZW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB1bnNpZ25lZCBpbnRlZ2VyDQog
ICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVzIGluIHRoZSBvcGVyYW5kcy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X3N1YnNfZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnVzYjEyOCgoX192MTZxaSlfX2EsIChfX3Yx
NnFpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMgY29ycmVzcG9uZGlu
ZyAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIGlucHV0DQogICAgKy8vLyAg
ICBhbmQgcmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMg
aW4gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gRGlmZmVyZW5jZXMgbGVzcyB0aGFuIDB4
MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQlVTVyAvIFBTVUJVU1cgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQogICAgKy8vLyBccGFyYW0gX19i
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3Vi
dHJhaGVuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2Yg
dGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zdWJzX2VwdTE2KF9fbTEyOGkgX19hLCBf
X20xMjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wc3VidXN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IGludGVnZXIgdmVj
dG9ycy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFO
RCAvIFBBTkQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19h
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZSB2YWx1ZXMNCiAgICArLy8vICAgIGluIGJvdGggb3Bl
cmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9hbmRfc2kxMjgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQog
ICAgKyAgcmV0dXJuIChfX20xMjhpKSgoX192MmR1KV9fYSAmIChfX3YyZHUpX19iKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdHdvIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3JzLCB1c2luZyB0aGUNCiAgICArLy8vICAgIG9uZSdzIGNvbXBsZW1lbnQg
b2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQU5ETiAvIFBBTkRO
IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5k
LiBUaGUgb25lJ3MgY29tcGxlbWVudA0KICAgICsvLy8gICAgb2YgdGhpcyB2YWx1ZSBpcyB1c2Vk
IGluIHRoZSBiaXR3aXNlIEFORC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQuDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0
d2lzZSBBTkQgb2YgdGhlIG9uZSdzDQogICAgKy8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBmaXJz
dCBvcGVyYW5kIGFuZCB0aGUgdmFsdWVzIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2FuZG5v
dF9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4g
KF9fbTEyOGkpKH4oX192MmR1KV9fYSAmIChfX3YyZHUpX19iKTsNCiAgICArfQ0KICAgICsvLy8g
UGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9ycy4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE9SIC8gUE9SIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3
aXNlIE9SIG9mIHRoZSB2YWx1ZXMNCiAgICArLy8vICAgIGluIGJvdGggb3BlcmFuZHMuDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9v
cl9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4g
KF9fbTEyOGkpKChfX3YyZHUpX19hIHwgKF9fdjJkdSlfX2IpOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvZiB0d28gMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvcnMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBYT1IgLyBQWE9SIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvZiB0aGUNCiAgICArLy8vICAgIHZh
bHVlcyBpbiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1feG9yX3NpMTI4KF9fbTEyOGkgX19hLCBfX20xMjhp
IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjJkdSlfX2EgXiAoX192
MmR1KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMZWZ0LXNoaWZ0cyB0aGUgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQNCiAgICArLy8vICAgIG51
bWJlciBvZiBieXRlcy4gTG93LW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2Rl
DQogICAgKy8vLyBfX20xMjhpIF9tbV9zbGxpX3NpMTI4KF9fbTEyOGkgYSwgY29uc3QgaW50IGlt
bSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTTExEUSAvIFBTTExEUSA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBhDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQogICAgKy8vLyBccGFy
YW0gaW1tDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVt
YmVyIG9mIGJ5dGVzIHRvIGxlZnQtc2hpZnQgb3BlcmFuZA0KICAgICsvLy8gICAgXGEgYS4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBs
ZWZ0LXNoaWZ0ZWQgdmFsdWUuDQogICAgKyNkZWZpbmUgX21tX3NsbGlfc2kxMjgoYSwgaW1tKSBc
DQogICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGRxaTEyOF9ieXRlc2hpZnQoKF9f
djJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQogICAgKw0KICAgICsjZGVmaW5lIF9tbV9i
c2xsaV9zaTEyOChhLCBpbW0pIFwNCiAgICArICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xs
ZHFpMTI4X2J5dGVzaGlmdCgoX192MmRpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkNCiAgICAr
DQogICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBvcGVyYW5kDQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJl
ciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTFcgLyBQU0xMVyA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8v
IFxwYXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcg
dGhlIG51bWJlciBvZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KICAgICsvLy8gICAg
aW4gb3BlcmFuZCBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NsbGlfZXBpMTYo
X19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9pYTMyX3BzbGx3aTEyOCgoX192OGhpKV9fYSwgX19jb3VudCk7DQogICAgK30N
CiAgICArDQogICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVk
IG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTFcgLyBQU0xMVyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAg
ICArLy8vIFxwYXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCiAgICAr
Ly8vICAgIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0
LXNoaWZ0ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fc2xsX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291
bnQpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbHcx
MjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvcGVyYW5kDQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRz
LiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTEQgLyBQU0xMRCA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8vIFxwYXJhbSBf
X2NvdW50DQogICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJl
ciBvZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KICAgICsvLy8gICAgaW4gb3BlcmFu
ZCBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NsbGlfZXBpMzIoX19tMTI4aSBf
X2EsIGludCBfX2NvdW50KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BzbGxkaTEyOCgoX192NHNpKV9fYSwgX19jb3VudCk7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBvcGVyYW5kDQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBv
ZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTEQgLyBQU0xMRCA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8vIFxw
YXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hp
Y2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCiAgICArLy8vICAgIHRv
IGxlZnQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQg
dmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fc2xsX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQogICAg
K3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGQxMjgoKF9fdjRz
aSlfX2EsIChfX3Y0c2kpX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMZWZ0LXNo
aWZ0cyBlYWNoIDY0LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVy
YW5kDQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3Jk
ZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFNMTFEgLyBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8vIFxwYXJhbSBfX2NvdW50DQog
ICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRz
IHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KICAgICsvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2Eu
DQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NsbGlfZXBpNjQoX19tMTI4aSBfX2EsIGludCBf
X2NvdW50KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzbGxxaTEyOCgo
X192MmRpKV9fYSwgX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMZWZ0LXNoaWZ0
cyBlYWNoIDY0LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5k
DQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIg
Yml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUFNMTFEgLyBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8vIFxwYXJhbSBfX2NvdW50DQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3Bl
Y2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCiAgICArLy8vICAgIHRvIGxlZnQtc2hpZnQgZWFjaCB2
YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVzLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc2xsX2Vw
aTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQogICAgK3sNCiAgICArICByZXR1cm4g
X19idWlsdGluX2lhMzJfcHNsbHExMjgoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19jb3VudCk7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgdmFsdWUgaW4g
dGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZA0KICAgICsvLy8gICAgYnkgdGhlIHNw
ZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0
aGUgc2lnbg0KICAgICsvLy8gICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBVyAvIFBTUkFXIDwvYz4g
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0K
ICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3Bl
Y2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZQ0KICAg
ICsvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9z
cmFpX2VwaTE2KF9fbTEyOGkgX19hLCBpbnQgX19jb3VudCkNCiAgICArew0KICAgICsgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Jhd2kxMjgoKF9fdjhoaSlfX2EsIF9fY291bnQp
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gUmlnaHQtc2hpZnRzIGVhY2ggMTYtYml0IHZhbHVl
IGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQNCiAgICArLy8vICAgIGJ5IHRo
ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdp
dGggdGhlIHNpZ24NCiAgICArLy8vICAgIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZS4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSQVcgLyBQU1JBVyA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFu
ZC4NCiAgICArLy8vIFxwYXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMN
CiAgICArLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUgaW4gb3BlcmFuZCBcYSBfX2Eu
DQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zcmFfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEy
OGkgX19jb3VudCkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wc3JhdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2NvdW50KTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBvcGVyYW5kDQogICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJl
ciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduDQogICAg
Ky8vLyAgICBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkFEIC8gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQogICAgKy8vLyBccGFy
YW0gX19jb3VudA0KICAgICsvLy8gICAgQW4gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBu
dW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlDQogICAgKy8vLyAgICBpbiBv
cGVyYW5kIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NyYWlfZXBpMzIoX19t
MTI4aSBfX2EsIGludCBfX2NvdW50KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3BzcmFkaTEyOCgoX192NHNpKV9fYSwgX19jb3VudCk7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZA0KICAgICsvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBu
dW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbg0K
ICAgICsvLy8gICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBRCAvIFBTUkFEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8g
XHBhcmFtIF9fY291bnQNCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3
aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cw0KICAgICsvLy8gICAg
dG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlm
dGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX3NyYV9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0K
ICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmFkMTI4KChf
X3Y0c2kpX19hLCAoX192NHNpKV9fY291bnQpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUmln
aHQtc2hpZnRzIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgYnkgdGhlIHNwZWNp
ZmllZA0KICAgICsvLy8gICAgbnVtYmVyIG9mIGJ5dGVzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNs
ZWFyZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9zcmxpX3NpMTI4KF9f
bTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxEUSAvIFBT
UkxEUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBhDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9w
ZXJhbmQuDQogICAgKy8vLyBccGFyYW0gaW1tDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFs
dWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJpZ2h0LXNoaWZ0IG9wZXJhbmQN
CiAgICArLy8vICAgIFxhIGEuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZS4NCiAgICArI2lmZGVmIF9f
R05VQ19fDQogICAgKyNkZWZpbmUgX21tX2JzcmxpX3NpMTI4KGEsIG4pIFwNCiAgICArICAgICgo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMTI4ICgoX19tMTI4aSkoYSksIChpbnQpKG4p
ICogOCkpDQogICAgKyNkZWZpbmUgX21tX3NybGlfc2kxMjgoYSwgbikgXA0KICAgICsgICAgKChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkcWkxMjggKChfX20xMjhpKShhKSwgKGludCkobikg
KiA4KSkNCiAgICArI2Vsc2UNCiAgICArI2RlZmluZSBfbW1fc3JsaV9zaTEyOChhLCBpbW0pIFwN
CiAgICArICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMTI4X2J5dGVzaGlmdCgoX192
MmRpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkNCiAgICArI2RlZmluZSBfbW1fYnNybGlfc2kx
MjgoYSwgaW1tKSBcDQogICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybGRxaTEyOF9i
eXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQogICAgKyNlbmRpZg0K
ICAgICsNCiAgICArDQogICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCBvZiAxNi1iaXQgdmFsdWVz
IGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yDQogICAgKy8vLyAgICBvcGVyYW5kIGJ5IHRo
ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTFcgLyBQ
U1JMVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ug
b3BlcmFuZC4NCiAgICArLy8vIFxwYXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBbiBpbnRlZ2Vy
IHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0LXNoaWZ0IGVhY2gg
dmFsdWUNCiAgICArLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFs
dWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW1fc3JsaV9lcGkxNihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpDQogICAgK3sNCiAg
ICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHdpMTI4KChfX3Y4aGkpX19h
LCBfX2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9m
IDE2LWJpdCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCiAgICArLy8vICAg
IG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRz
IGFyZSBjbGVhcmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQU1JMVyAvIFBTUkxXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5
IHRoZSBudW1iZXIgb2YgYml0cw0KICAgICsvLy8gICAgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1
ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NybF9lcGkx
NihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bzcmx3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fY291
bnQpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUmlnaHQtc2hpZnRzIGVhY2ggb2YgMzItYml0
IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KICAgICsvLy8gICAgb3BlcmFu
ZCBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNs
ZWFyZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBT
UkxEIC8gUFNSTEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
c291cmNlIG9wZXJhbmQuDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsvLy8gICAgQW4g
aW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlm
dCBlYWNoIHZhbHVlDQogICAgKy8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlm
dGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX3NybGlfZXBpMzIoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxkaTEyOCgoX192
NHNpKV9fYSwgX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBSaWdodC1zaGlmdHMg
ZWFjaCBvZiAzMi1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yDQogICAg
Ky8vLyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3Jk
ZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFNSTEQgLyBQU1JMRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8vIFxwYXJhbSBfX2NvdW50DQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0g
c3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCiAgICArLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVh
Y2ggdmFsdWUgaW4gb3BlcmFuZCBcYSBfX2EuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9z
cmxfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCiAgICArew0KICAgICsgIHJl
dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZDEyOCgoX192NHNpKV9fYSwgKF9fdjRz
aSlfX2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9m
IDY0LWJpdCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCiAgICArLy8vICAg
IG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGlnaC1vcmRlciBiaXRz
IGFyZSBjbGVhcmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQU1JMUSAvIFBTUkxRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8v
ICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmln
aHQtc2hpZnQgZWFjaCB2YWx1ZQ0KICAgICsvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmln
aHQtc2hpZnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQogICAgK19tbV9zcmxpX2VwaTY0KF9fbTEyOGkgX19hLCBpbnQgX19jb3Vu
dCkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wc3JscWkxMjgoKF9fdjJk
aSlfX2EsIF9fY291bnQpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUmlnaHQtc2hpZnRzIGVh
Y2ggb2YgNjQtYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KICAgICsv
Ly8gICAgb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVy
IGJpdHMgYXJlIGNsZWFyZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBTUkxRIC8gUFNSTFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAg
ICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNw
ZWNpZnkgdGhlIG51bWJlciBvZiBiaXRzDQogICAgKy8vLyAgICB0byByaWdodC1zaGlmdCBlYWNo
IHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3Js
X2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQogICAgK3sNCiAgICArICByZXR1
cm4gX19idWlsdGluX2lhMzJfcHNybHExMjgoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19jb3VudCk7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25k
aW5nIDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0
b3JzIGZvciBlcXVhbGl0eS4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAw
eEZGDQogICAgKy8vLyAgICBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUENNUEVRQiAvIFBDTVBFUUIgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wZXFfZXBpOChfX20xMjhp
IF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3Yx
NnFpKV9fYSA9PSAoX192MTZxaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFy
ZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0
DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5LiBFYWNoIGNvbXBhcmlz
b24geWllbGRzIDB4MCBmb3IgZmFsc2UsDQogICAgKy8vLyAgICAweEZGRkYgZm9yIHRydWUuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFUVcgLyBQ
Q01QRVFXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9f
Yg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX2NtcGVxX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjhoaSlfX2EgPT0gKF9fdjhoaSlfX2IpOw0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAz
Mi1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMg
Zm9yIGVxdWFsaXR5LiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsDQogICAg
Ky8vLyAgICAweEZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVFEIC8gUENNUEVRRCA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBlcV9lcGkzMihfX20x
MjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpKChf
X3Y0c2kpX19hID09IChfX3Y0c2kpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBh
cmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDgtYml0IHZhbHVlcyBvZiB0aGUg
MTI4LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUg
dmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgZ3JlYXRlciB0aGFu
IHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAg
Zm9yDQogICAgKy8vLyAgICBmYWxzZSwgMHhGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEdUQiAvIFBDTVBHVEIgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wZ3Rf
ZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICAvKiBUaGlzIGZ1
bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBjb21wYXJpc29uLCBidXQgX192MTZxaSBp
cyBhIGNoYXINCiAgICArICAgICB3aGljaCBtYXkgYmUgc2lnbmVkIG9yIHVuc2lnbmVkLCBzbyB1
c2UgX192MTZxcy4gKi8NCiAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3YxNnFzKV9fYSA+IChf
X3YxNnFzKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIHNpZ25lZCAxNi1iaXQgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhl
IGZpcnN0IG9wZXJhbmQNCiAgICArLy8vICAgIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhl
IHNlY29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5
aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RXIC8gUENNUEdUVyA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBndF9l
cGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9f
bTEyOGkpKChfX3Y4aGkpX19hID4gKF9fdjhoaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWduZWQgMzItYml0IHZhbHVl
cyBvZiB0aGUNCiAgICArLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWlu
ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kDQogICAgKy8vLyAgICBhcmUgZ3Jl
YXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8v
LyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9y
IHRydWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBD
TVBHVEQgLyBQQ01QR1REIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8g
XHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX2NtcGd0X2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
CiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjRzaSlfX2EgPiAoX192NHNpKV9f
Yik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIHNpZ25lZCA4LWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQNCiAgICArLy8vICAgIGlu
dGVnZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgb3Bl
cmFuZCBhcmUgbGVzcw0KICAgICsvLy8gICAgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJh
bmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9y
IGZhbHNlLCAweEZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQQ01QR1RCIC8gUENNUEdUQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBsdF9lcGk4KF9fbTEyOGkgX19h
LCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfbW1fY21wZ3RfZXBpOChfX2Is
IF9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nIHNpZ25lZCAxNi1iaXQgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0
IG9wZXJhbmQNCiAgICArLy8vICAgIGFyZSBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBv
cGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgw
IGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RXIC8gUENNUEdUVyA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBsdF9lcGkxNihfX20x
MjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX21tX2NtcGd0X2Vw
aTE2KF9fYiwgX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkIDMyLWJpdCB2YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAg
ICAxMjgtYml0IGludGVnZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0
aGUgZmlyc3Qgb3BlcmFuZA0KICAgICsvLy8gICAgYXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUg
c2Vjb25kIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlp
ZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1REIC8gUENNUEdURCA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBs
dF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4g
X21tX2NtcGd0X2VwaTMyKF9fYiwgX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArI2lmZGVmIF9f
eDg2XzY0X18NCiAgICArLy8vIENvbnZlcnRzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVl
IGZyb20gdGhlIHNlY29uZCBvcGVyYW5kIGludG8gYQ0KICAgICsvLy8gICAgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZSBhbmQgcmV0dXJucyBpdCBpbiB0aGUgbG93ZXIgZWxlbWVudCBvZiBhIFsyIHgN
CiAgICArLy8vICAgIGRvdWJsZV0gdmVjdG9yOyB0aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUgcmV0
dXJuZWQgdmVjdG9yIGlzIGNvcGllZCBmcm9tDQogICAgKy8vLyAgICB0aGUgdXBwZXIgZWxlbWVu
dCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWQ1ZUU0kyU0QgLyBDVlRTSTJTRCA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQog
ICAgKy8vLyAgICBjb3BpZWQgdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9u
Lg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVn
ZXIgb3BlcmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2
NCBiaXRzIGNvbnRhaW4gdGhlDQogICAgKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgb2YgdGhlIHNl
Y29uZCBvcGVyYW5kLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20NCiAgICArLy8v
ICAgIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c2k2NF9z
ZChfX20xMjhkIF9fYSwgbG9uZyBsb25nIF9fYikNCiAgICArew0KICAgICsgIF9fYVswXSA9IF9f
YjsNCiAgICArICByZXR1cm4gX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMg
dGhlIGZpcnN0IChsb3dlcikgZWxlbWVudCBvZiBhIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50
byBhDQogICAgKy8vLyAgICA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUsIGFjY29yZGluZyB0
byB0aGUgY3VycmVudCByb3VuZGluZyBtb2RlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTRDJTSSAvIENWVFNEMlNJIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZQ0K
ICAgICsvLy8gICAgY29udmVyc2lvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IHNpZ25l
ZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCiAgICArc3RhdGljIF9f
aW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c2Rfc2k2
NChfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRz
ZDJzaTY0KChfX3YyZGYpX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIHRo
ZSBmaXJzdCAobG93ZXIpIGVsZW1lbnQgb2YgYSB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8g
YQ0KICAgICsvLy8gICAgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLCB0cnVuY2F0aW5nIHRo
ZSByZXN1bHQgd2hlbiBpdCBpcyBpbmV4YWN0Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUU0QyU0kgLyBDVlRUU0QyU0kgPC9jPg0KICAgICsvLy8g
ICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJl
IHVzZWQgaW4gdGhlDQogICAgKy8vLyAgICBjb252ZXJzaW9uLg0KICAgICsvLy8gXHJldHVybnMg
QSA2NC1iaXQgc2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0K
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAg
K19tbV9jdnR0c2Rfc2k2NChfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9jdnR0c2Qyc2k2NCgoX192MmRmKV9fYSk7DQogICAgK30NCiAgICArI2VuZGlm
DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgYSB2ZWN0b3Igb2YgWzQgeCBpMzJdIGludG8gYSB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkNWVERRMlBTIC8gQ1ZURFEyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dGVwaTMyX3BzKF9fbTEyOGkg
X19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2NvbnZlcnR2ZWN0
b3IoKF9fdjRzaSlfX2EsIF9fdjRzZik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0
cyBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgdmVjdG9yIG9mIFs0IHggaTMyXS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUFMyRFEgLyBD
VlRQUzJEUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcg
dGhlIGNvbnZlcnRlZA0KICAgICsvLy8gICAgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0cHNfZXBpMzIoX19tMTI4
IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnRw
czJkcSgoX192NHNmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyBhIHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgdmVjdG9yIG9mIFs0IHggaTMyXSwNCiAgICArLy8v
ICAgIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzIGluZXhhY3QuDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRQUzJEUSAvIENWVFRQUzJE
USA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0dHBzX2VwaTMyKF9fbTEyOCBfX2EpDQogICAgK3sN
CiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfY3Z0dHBzMmRxKChfX3Y0c2Yp
X19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJldHVybnMgYSB2ZWN0b3Igb2YgWzQgeCBp
MzJdIHdoZXJlIHRoZSBsb3dlc3QgZWxlbWVudCBpcyB0aGUgaW5wdXQNCiAgICArLy8vICAgIG9w
ZXJhbmQgYW5kIHRoZSByZW1haW5pbmcgZWxlbWVudHMgYXJlIHplcm8uDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkQgLyBNT1ZEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAzMi1i
aXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c2kzMl9zaTEyOChpbnQgX19hKQ0KICAgICt7DQog
ICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjRzaSl7IF9fYSwgMCwgMCwg
MCB9Ow0KICAgICt9DQogICAgKw0KICAgICsjaWZkZWYgX194ODZfNjRfXw0KICAgICsvLy8gUmV0
dXJucyBhIHZlY3RvciBvZiBbMiB4IGk2NF0gd2hlcmUgdGhlIGxvd2VyIGVsZW1lbnQgaXMgdGhl
IGlucHV0DQogICAgKy8vLyAgICBvcGVyYW5kIGFuZCB0aGUgdXBwZXIgZWxlbWVudCBpcyB6ZXJv
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8g
TU9WUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgY29udGFpbmluZyB0aGUg
dmFsdWUgdG8gYmUgY29udmVydGVkLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c2k2
NF9zaTEyOChsb25nIGxvbmcgX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9u
X18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fYSwgMCB9Ow0KICAgICt9DQogICAgKyNlbmRpZg0KICAg
ICsNCiAgICArLy8vIE1vdmVzIHRoZSBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGEgdmVj
dG9yIG9mIFs0IHggaTMyXSB0byBhDQogICAgKy8vLyAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIg
dmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1P
VkQgLyBNT1ZEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
YQ0KICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgbGVhc3Qgc2lnbmlmaWNh
bnQgMzIgYml0cyBhcmUgbW92ZWQgdG8gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG1v
dmVkIHZhbHVlLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9jdnRzaTEyOF9zaTMyKF9fbTEyOGkgX19hKQ0KICAgICt7DQogICAgKyAgX192
NHNpIF9fYiA9IChfX3Y0c2kpX19hOw0KICAgICsgIHJldHVybiBfX2JbMF07DQogICAgK30NCiAg
ICArDQogICAgKyNpZmRlZiBfX3g4Nl82NF9fDQogICAgKy8vLyBNb3ZlcyB0aGUgbGVhc3Qgc2ln
bmlmaWNhbnQgNjQgYml0cyBvZiBhIHZlY3RvciBvZiBbMiB4IGk2NF0gdG8gYQ0KICAgICsvLy8g
ICAgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgdmVjdG9yIG9mIFsyIHgg
aTY0XS4gVGhlIGxlYXN0IHNpZ25pZmljYW50IDY0IGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KICAg
ICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBzaWduZWQg
aW50ZWdlciBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZS4NCiAgICArc3RhdGljIF9faW5saW5l
X18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c2kxMjhfc2k2NChf
X20xMjhpIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2FbMF07DQogICAgK30NCiAgICAr
I2VuZGlmDQogICAgKw0KICAgICsvLy8gTW92ZXMgcGFja2VkIGludGVnZXIgdmFsdWVzIGZyb20g
YW4gYWxpZ25lZCAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbg0KICAgICsvLy8gICAgdG8gZWxlbWVu
dHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUUEgLyBNT1ZEUUEgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAgICBBbiBhbGlnbmVkIHBv
aW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBpbnRlZ2VyIHZhbHVlcy4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBt
b3ZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9sb2FkX3NpMTI4KF9fbTEyOGkgY29uc3QgKl9fcCkNCiAgICArew0K
ICAgICsgIHJldHVybiAqX19wOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92ZXMgcGFja2Vk
IGludGVnZXIgdmFsdWVzIGZyb20gYW4gdW5hbGlnbmVkIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9u
DQogICAgKy8vLyAgICB0byBlbGVtZW50cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRVSAvIE1P
VkRRVSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAg
ICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGludGVn
ZXIgdmFsdWVzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2xvYWR1X3NpMTI4KF9fbTEyOGkgY29uc3Qg
Kl9fcCkNCiAgICArew0KICAgICsgIHN0cnVjdCBfX2xvYWR1X3NpMTI4IHsNCiAgICArICAgIF9f
bTEyOGkgX192Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KICAgICsgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3NpMTI4KilfX3ApLT5fX3Y7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBSZXR1cm5zIGEgdmVjdG9yIG9mIFsyIHggaTY0XSB3
aGVyZSB0aGUgbG93ZXIgZWxlbWVudCBpcyB0YWtlbiBmcm9tDQogICAgKy8vLyAgICB0aGUgbG93
ZXIgZWxlbWVudCBvZiB0aGUgb3BlcmFuZCwgYW5kIHRoZSB1cHBlciBlbGVtZW50IGlzIHplcm8u
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBN
T1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIEJpdHMgWzYzOjBdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIGxvd2Vy
IG9yZGVyIGJpdHMgY29udGFpbiB0aGUNCiAgICArLy8vICAgIG1vdmVkIHZhbHVlLiBUaGUgaGln
aGVyIG9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9sb2FkbF9lcGk2NChfX20xMjhpIGNvbnN0
ICpfX3ApDQogICAgK3sNCiAgICArICBzdHJ1Y3QgX19tbV9sb2FkbF9lcGk2NF9zdHJ1Y3Qgew0K
ICAgICsgICAgbG9uZyBsb25nIF9fdTsNCiAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2Vk
X18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4
aSkgeyAoKHN0cnVjdCBfX21tX2xvYWRsX2VwaTY0X3N0cnVjdCopX19wKS0+X191LCAwfTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIEdlbmVyYXRlcyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
aTMyXSB3aXRoIHVuc3BlY2lmaWVkIGNvbnRlbnQuDQogICAgKy8vLyAgICBUaGlzIGNvdWxkIGJl
IHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gYW5vdGhlciBpbnRyaW5zaWMgZnVuY3Rpb24gd2hlcmUg
dGhlDQogICAgKy8vLyAgICBhcmd1bWVudCBpcyByZXF1aXJlZCBidXQgdGhlIHZhbHVlIGlzIG5v
dCBhY3R1YWxseSB1c2VkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9u
ZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoIHVuc3BlY2lmaWVkIGNvbnRlbnQuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91bmRlZmlu
ZWRfc2kxMjgodm9pZCkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICBfX20x
MjhpIF9fWCA9IF9fWDsNCiAgICArICByZXR1cm4gX19YOw0KICAgICsjZWxzZQ0KICAgICsgIHJl
dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl91bmRlZjEyOCgpOw0KICAgICsjZW5kaWYNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIEluaXRpYWxpemVzIGJvdGggNjQtYml0IHZhbHVlcyBpbiBh
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSB3aXRoDQogICAgKy8vLyAgICB0aGUgc3BlY2lm
aWVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1
dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAg
ICArLy8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ExDQog
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg
dXBwZXIgNjQgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBb
MiB4IGk2NF0uDQogICAgKy8vLyBccGFyYW0gX19xMA0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlDQog
ICAgKy8vLyAgICBkZXN0aW5hdGlvbiB2ZWN0b3Igb2YgWzIgeCBpNjRdLg0KICAgICsvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5p
bmcgdGhlIHZhbHVlcw0KICAgICsvLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
c2V0X2VwaTY0eChsb25nIGxvbmcgX19xMSwgbG9uZyBsb25nIF9fcTApDQogICAgK3sNCiAgICAr
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MmRpKXsgX19xMCwgX19xMSB9Ow0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gSW5pdGlhbGl6ZXMgYm90aCA2NC1iaXQgdmFsdWVzIGlu
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdpdGgNCiAgICArLy8vICAgIHRoZSBzcGVj
aWZpZWQgNjQtYml0IGludGVnZXIgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBh
IHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0K
ICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcTEN
CiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRo
ZSB1cHBlciA2NCBiaXRzIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24gdmVjdG9yIG9m
IFsyIHggaTY0XS4NCiAgICArLy8vIFxwYXJhbSBfX3EwDQogICAgKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUN
CiAgICArLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBbMiB4IGk2NF0uDQogICAgKy8vLyBc
cmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFp
bmluZyB0aGUgdmFsdWVzDQogICAgKy8vLyAgICBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZHMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9zZXRfZXBpNjQoX19tNjQgX19xMSwgX19tNjQgX19xMCkNCiAgICArew0KICAgICsgIHJldHVy
biBfbW1fc2V0X2VwaTY0eCgobG9uZyBsb25nKV9fcTEsIChsb25nIGxvbmcpX19xMCk7DQogICAg
K30NCiAgICArDQogICAgKy8vLyBJbml0aWFsaXplcyB0aGUgMzItYml0IHZhbHVlcyBpbiBhIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoDQogICAgKy8vLyAgICB0aGUgc3BlY2lmaWVk
IDMyLWJpdCBpbnRlZ2VyIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGls
aXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICAr
Ly8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2kzDQogICAg
Ky8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsx
Mjc6OTZdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24gdmVjdG9yLg0KICAgICsvLy8g
XHBhcmFtIF9faTINCiAgICArLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzk1OjY0XSBvZiB0aGUgZGVzdGluYXRpb24NCiAgICArLy8vICAgIHZl
Y3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX2kxDQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2Vy
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIGRlc3RpbmF0aW9u
DQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19pMA0KICAgICsvLy8gICAg
QSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0gb2Yg
dGhlIGRlc3RpbmF0aW9uDQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBB
biBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUg
dmFsdWVzDQogICAgKy8vLyAgICBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZHMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zZXRfZXBp
MzIoaW50IF9faTMsIGludCBfX2kyLCBpbnQgX19pMSwgaW50IF9faTApDQogICAgK3sNCiAgICAr
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192NHNpKXsgX19pMCwgX19pMSwgX19p
MiwgX19pM307DQogICAgK30NCiAgICArDQogICAgKy8vLyBJbml0aWFsaXplcyB0aGUgMTYtYml0
IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSB3aXRoDQogICAgKy8vLyAg
ICB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ2VyIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEg
c3BlY2lmaWMNCiAgICArLy8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX3c3DQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uIHZl
Y3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX3c2DQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2Vy
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZQ0KICAgICsvLy8g
ICAgZGVzdGluYXRpb24gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fdzUNCiAgICArLy8vICAg
IEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjgwXSBv
ZiB0aGUgZGVzdGluYXRpb24NCiAgICArLy8vICAgIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBf
X3c0DQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFs3OTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uDQogICAgKy8vLyAgICB2ZWN0b3IuDQog
ICAgKy8vLyBccGFyYW0gX193Mw0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9mIHRoZSBkZXN0aW5hdGlvbg0KICAgICsv
Ly8gICAgdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fdzINCiAgICArLy8vICAgIEEgMTYtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgZGVz
dGluYXRpb24NCiAgICArLy8vICAgIHZlY3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX3cxDQogICAg
Ky8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsz
MToxNl0gb2YgdGhlIGRlc3RpbmF0aW9uDQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAgKy8vLyBc
cGFyYW0gX193MA0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTU6MF0gb2YgdGhlIGRlc3RpbmF0aW9uDQogICAgKy8vLyAgICB2ZWN0
b3IuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBb
OCB4IGkxNl0gY29udGFpbmluZyB0aGUgdmFsdWVzDQogICAgKy8vLyAgICBwcm92aWRlZCBpbiB0
aGUgb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9zZXRfZXBpMTYoc2hvcnQgX193Nywgc2hvcnQgX193Niwgc2hvcnQg
X193NSwgc2hvcnQgX193NCwgc2hvcnQgX193Mywgc2hvcnQgX193Miwgc2hvcnQgX193MSwgc2hv
cnQgX193MCkNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShf
X3Y4aGkpeyBfX3cwLCBfX3cxLCBfX3cyLCBfX3czLCBfX3c0LCBfX3c1LCBfX3c2LCBfX3c3IH07
DQogICAgK30NCiAgICArDQogICAgKy8vLyBJbml0aWFsaXplcyB0aGUgOC1iaXQgdmFsdWVzIGlu
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHdpdGgNCiAgICArLy8vICAgIHRoZSBzcGVj
aWZpZWQgOC1iaXQgaW50ZWdlciB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEg
dXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQog
ICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19iMTUN
CiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSBkZXN0aW5hdGlv
biB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iMTQNCiAgICArLy8vICAgIEluaXRpYWxpemVz
IGJpdHMgWzExOToxMTJdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQogICAgKy8vLyBccGFy
YW0gX19iMTMNCiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzExMToxMDRdIG9mIHRoZSBk
ZXN0aW5hdGlvbiB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iMTINCiAgICArLy8vICAgIElu
aXRpYWxpemVzIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCiAgICAr
Ly8vIFxwYXJhbSBfX2IxMQ0KICAgICsvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbOTU6ODhdIG9m
IHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19iMTANCiAgICArLy8v
ICAgIEluaXRpYWxpemVzIGJpdHMgWzg3OjgwXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0K
ICAgICsvLy8gXHBhcmFtIF9fYjkNCiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzc5Ojcy
XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYjgNCiAgICAr
Ly8vICAgIEluaXRpYWxpemVzIGJpdHMgWzcxOjY0XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9y
Lg0KICAgICsvLy8gXHBhcmFtIF9fYjcNCiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzYz
OjU2XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYjYNCiAg
ICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzU1OjQ4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVj
dG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYjUNCiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMg
WzQ3OjQwXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYjQN
CiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzM5OjMyXSBvZiB0aGUgZGVzdGluYXRpb24g
dmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYjMNCiAgICArLy8vICAgIEluaXRpYWxpemVzIGJp
dHMgWzMxOjI0XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9f
YjINCiAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzIzOjE2XSBvZiB0aGUgZGVzdGluYXRp
b24gdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIF9fYjENCiAgICArLy8vICAgIEluaXRpYWxpemVz
IGJpdHMgWzE1OjhdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0g
X19iMA0KICAgICsvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbNzowXSBvZiB0aGUgZGVzdGluYXRp
b24gdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0
b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcw0KICAgICsvLy8gICAgcHJvdmlk
ZWQgaW4gdGhlIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc2V0X2VwaTgoY2hhciBfX2IxNSwgY2hhciBfX2IxNCwg
Y2hhciBfX2IxMywgY2hhciBfX2IxMiwgY2hhciBfX2IxMSwgY2hhciBfX2IxMCwgY2hhciBfX2I5
LCBjaGFyIF9fYjgsIGNoYXIgX19iNywgY2hhciBfX2I2LCBjaGFyIF9fYjUsIGNoYXIgX19iNCwg
Y2hhciBfX2IzLCBjaGFyIF9fYjIsIGNoYXIgX19iMSwgY2hhciBfX2IwKQ0KICAgICt7DQogICAg
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjE2cWkpeyBfX2IwLCBfX2IxLCBf
X2IyLCBfX2IzLCBfX2I0LCBfX2I1LCBfX2I2LCBfX2I3LCBfX2I4LCBfX2I5LCBfX2IxMCwgX19i
MTEsIF9fYjEyLCBfX2IxMywgX19iMTQsIF9fYjE1IH07DQogICAgK30NCiAgICArDQogICAgKy8v
LyBJbml0aWFsaXplcyBib3RoIHZhbHVlcyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igd2l0
aCB0aGUNCiAgICArLy8vICAgIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdlciB2YWx1ZS4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3Jy
ZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICArLy8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX3ENCiAgICArLy8vICAgIEludGVnZXIgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdlcg0KICAgICsv
Ly8gICAgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0aCBib3RoDQogICAgKy8vLyAgICBlbGVtZW50
cyBjb250YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NldDFf
ZXBpNjR4KGxvbmcgbG9uZyBfX3EpDQogICAgK3sNCiAgICArICByZXR1cm4gX21tX3NldF9lcGk2
NHgoX19xLCBfX3EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gSW5pdGlhbGl6ZXMgYm90aCB2
YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0aCB0aGUNCiAgICArLy8v
ICAgIHNwZWNpZmllZCA2NC1iaXQgdmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEg
dXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQog
ICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19xDQog
ICAgKy8vLyAgICBBIDY0LWJpdCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGVsZW1lbnRz
IG9mIHRoZSBkZXN0aW5hdGlvbiBpbnRlZ2VyDQogICAgKy8vLyAgICB2ZWN0b3IuDQogICAgKy8v
LyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0
aCBhbGwgZWxlbWVudHMNCiAgICArLy8vICAgIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHByb3ZpZGVk
IGluIHRoZSBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fc2V0MV9lcGk2NChfX202NCBfX3EpDQogICAgK3sNCiAgICAr
ICByZXR1cm4gX21tX3NldF9lcGk2NChfX3EsIF9fcSk7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBJbml0aWFsaXplcyBhbGwgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJd
IHdpdGggdGhlDQogICAgKy8vLyAgICBzcGVjaWZpZWQgMzItYml0IHZhbHVlLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3Bv
bmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9faQ0KICAgICsvLy8gICAgQSAzMi1iaXQgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdlcg0KICAgICsvLy8g
ICAgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBpMzJdIHdpdGggYWxsIGVsZW1lbnRzDQogICAgKy8vLyAgICBjb250YWluaW5n
IHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NldDFfZXBpMzIoaW50IF9f
aSkNCiAgICArew0KICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTMyKF9faSwgX19pLCBfX2ksIF9f
aSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBJbml0aWFsaXplcyBhbGwgdmFsdWVzIGluIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdpdGggdGhlDQogICAgKy8vLyAgICBzcGVjaWZp
ZWQgMTYtYml0IHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVu
Y3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fdw0KICAgICsvLy8gICAg
QSAxNi1iaXQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVz
dGluYXRpb24gaW50ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMg
QW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdpdGggYWxsIGVsZW1l
bnRzDQogICAgKy8vLyAgICBjb250YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3Bl
cmFuZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX3NldDFfZXBpMTYoc2hvcnQgX193KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9t
bV9zZXRfZXBpMTYoX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3cpOw0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gSW5pdGlhbGl6ZXMgYWxsIHZhbHVlcyBpbiBhIDEyOC1iaXQg
dmVjdG9yIG9mIFsxNiB4IGk4XSB3aXRoIHRoZQ0KICAgICsvLy8gICAgc3BlY2lmaWVkIDgtYml0
IHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5k
IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAgaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQW4gOC1iaXQg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24g
aW50ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlh
bGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHdpdGggYWxsIGVsZW1lbnRzDQogICAg
Ky8vLyAgICBjb250YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X3NldDFfZXBpOChjaGFyIF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTgo
X19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9f
YiwgX19iLCBfX2IsIF9fYiwgX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVj
dHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVy
DQogICAgKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZXMu
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZp
YyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19xMA0KICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciA2
NCBiaXRzIG9mIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fcTEN
CiAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0
aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIHJlc3VsdC4NCiAgICArLy8vIFxy
ZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zZXRyX2Vw
aTY0KF9fbTY0IF9fcTAsIF9fbTY0IF9fcTEpDQogICAgK3sNCiAgICArICByZXR1cm4gX21tX3Nl
dF9lcGk2NChfX3ExLCBfX3EwKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQog
ICAgKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3Qg
Y29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQogICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19pMA0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccGFyYW0gX19pMQ0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9faTINCiAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs5NTo2NF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2kz
DQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTI3Ojk2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlh
bGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NldHJfZXBpMzIoaW50IF9faTAsIGlu
dCBfX2kxLCBpbnQgX19pMiwgaW50IF9faTMpDQogICAgK3sNCiAgICArICByZXR1cm4gX21tX3Nl
dF9lcGkzMihfX2kzLCBfX2kyLCBfX2kxLCBfX2kwKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZl
cnNlIG9yZGVyDQogICAgKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ3Jh
bCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBh
bmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQogICAgKy8vLyAgICBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX193MA0KICAgICsvLy8gICAgQSAxNi1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX193MQ0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0K
ICAgICsvLy8gXHBhcmFtIF9fdzINCiAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8v
IFxwYXJhbSBfX3czDQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0g
X193NA0KICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzUNCiAg
ICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3c2DQogICAgKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTExOjk2
XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzcNCiAgICArLy8vICAgIEEgMTYt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0
aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX3NldHJfZXBpMTYoc2hvcnQgX193MCwgc2hvcnQgX193MSwgc2hvcnQg
X193Miwgc2hvcnQgX193Mywgc2hvcnQgX193NCwgc2hvcnQgX193NSwgc2hvcnQgX193Niwgc2hv
cnQgX193NykNCiAgICArew0KICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTE2KF9fdzcsIF9fdzYs
IF9fdzUsIF9fdzQsIF9fdzMsIF9fdzIsIF9fdzEsIF9fdzApOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGlu
IHJldmVyc2Ugb3JkZXINCiAgICArLy8vICAgICB3aXRoIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50
ZWdyYWwgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rp
b24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAgaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYjANCiAgICArLy8vICAgIEFu
IDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OjBdIG9mIHRo
ZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjhdIG9mIHRoZSByZXN1bHQu
DQogICAgKy8vLyBccGFyYW0gX19iMg0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHBhcmFtIF9fYjMNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJh
bSBfX2I0DQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iNQ0K
ICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjYNCiAgICArLy8v
ICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1NTo0
OF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2I3DQogICAgKy8vLyAgICBBbiA4
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NTZdIG9mIHRo
ZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iOA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fYjkNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4NCiAgICAr
Ly8vIFxwYXJhbSBfX2IxMA0KICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9fYjExDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbOTU6ODhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19i
MTINCiAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxMDM6OTZdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMTMNCiAg
ICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjE0DQogICAgKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTE5
OjExMl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IxNQ0KICAgICsvLy8gICAg
QW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMjBd
IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0
IGludGVnZXIgdmVjdG9yLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fc2V0cl9lcGk4KGNoYXIgX19iMCwgY2hhciBfX2IxLCBjaGFy
IF9fYjIsIGNoYXIgX19iMywgY2hhciBfX2I0LCBjaGFyIF9fYjUsIGNoYXIgX19iNiwgY2hhciBf
X2I3LCBjaGFyIF9fYjgsIGNoYXIgX19iOSwgY2hhciBfX2IxMCwgY2hhciBfX2IxMSwgY2hhciBf
X2IxMiwgY2hhciBfX2IxMywgY2hhciBfX2IxNCwgY2hhciBfX2IxNSkNCiAgICArew0KICAgICsg
IHJldHVybiBfbW1fc2V0X2VwaTgoX19iMTUsIF9fYjE0LCBfX2IxMywgX19iMTIsIF9fYjExLCBf
X2IxMCwgX19iOSwgX19iOCwgX19iNywgX19iNiwgX19iNSwgX19iNCwgX19iMywgX19iMiwgX19i
MSwgX19iMCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDcmVhdGVzIGEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBpbml0aWFsaXplZCB0byB6ZXJvLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciB3aXRoIGFsbCBlbGVtZW50cyBzZXQgdG8NCiAgICArLy8vICAgIHplcm8uDQogICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9z
ZXR6ZXJvX3NpMTI4KHZvaWQpDQogICAgK3sNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAo
X19tMTI4aSkoX192MmRpKXsgMExMLCAwTEwgfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0
b3JlcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gYSBtZW1vcnkgbG9jYXRpb24gYWxpZ25l
ZCBvbiBhDQogICAgKy8vLyAgICAxMjgtYml0IGJvdW5kYXJ5Lg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50
ZXIgdG8gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGlu
dGVnZXINCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUg
bW92ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9zdG9yZV9zaTEyOChfX20xMjhpICpfX3AsIF9fbTEyOGkgX19iKQ0KICAgICt7DQog
ICAgKyAgKl9fcCA9IF9fYjsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyBhIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgdG8gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBTIC8gTU9WVVBT
IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsv
Ly8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRo
ZSBpbnRlZ2VyIHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9z
dG9yZXVfc2kxMjgoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsgIHN0
cnVjdCBfX3N0b3JldV9zaTEyOCB7DQogICAgKyAgICBfX20xMjhpIF9fdjsNCiAgICArICB9IF9f
YXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICAoKHN0cnVj
dCBfX3N0b3JldV9zaTEyOCopX19wKS0+X192ID0gX19iOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gTW92ZXMgYnl0ZXMgc2VsZWN0ZWQgYnkgdGhlIG1hc2sgZnJvbSB0aGUgZmlyc3Qgb3BlcmFu
ZCB0byB0aGUNCiAgICArLy8vICAgIHNwZWNpZmllZCB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9u
LiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGJ5
dGUgaXMgd3JpdHRlbiwgb3RoZXJ3aXNlIGl0IGlzIG5vdCB3cml0dGVuLg0KICAgICsvLy8NCiAg
ICArLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9u
LXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KICAgICsvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4g
RXhjZXB0aW9uIGFuZCB0cmFwIGJlaGF2aW9yIGZvciBlbGVtZW50cyBub3Qgc2VsZWN0ZWQNCiAg
ICArLy8vICAgIGZvciBzdG9yYWdlIHRvIG1lbW9yeSBhcmUgaW1wbGVtZW50YXRpb24gZGVwZW5k
ZW50Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNL
TU9WRFFVIC8gTUFTS01PVkRRVSA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2QNCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQogICAgKy8vLyBccGFyYW0g
X19uDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
bWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQogICAgKy8vLyAgICBlYWNoIGJ5dGUg
cmVwcmVzZW50cyB0aGUgbWFzayBiaXRzLg0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8g
ICAgQSBwb2ludGVyIHRvIGFuIHVuYWxpZ25lZCAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiB3aGVy
ZSB0aGUgc3BlY2lmaWVkDQogICAgKy8vLyAgICB2YWx1ZXMgYXJlIG1vdmVkLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWFza21vdmV1
X3NpMTI4KF9fbTEyOGkgX19kLCBfX20xMjhpIF9fbiwgY2hhciAqX19wKQ0KICAgICt7DQogICAg
KyAgX19idWlsdGluX2lhMzJfbWFza21vdmRxdSgoX192MTZxaSlfX2QsIChfX3YxNnFpKV9fbiwg
X19wKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBv
ZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpNjRdIHRvDQogICAgKy8vLyAgICBh
IG1lbW9yeSBsb2NhdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTU9WTFBTIC8gTU9WTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9y
eSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbG93ZXIgNjQgYml0cw0KICAgICsvLy8g
ICAgb2YgdGhlIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlci4NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSBs
b3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQogICAgKy8vLyAgICB2YWx1ZSB0byBiZSBzdG9yZWQu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9zdG9yZWxfZXBpNjQoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYSkNCiAgICArew0KICAgICsg
IHN0cnVjdCBfX21tX3N0b3JlbF9lcGk2NF9zdHJ1Y3Qgew0KICAgICsgICAgbG9uZyBsb25nIF9f
dTsNCiAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsN
CiAgICArICAoKHN0cnVjdCBfX21tX3N0b3JlbF9lcGk2NF9zdHJ1Y3QqKV9fcCktPl9fdSA9IF9f
YVswXTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyBhIDEyOC1iaXQgZmxvYXRpbmcg
cG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhIDEyOC1iaXQNCiAgICArLy8vICAgIGFs
aWduZWQgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRvIG1pbmltaXpl
IGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0
byBiZQ0KICAgICsvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTlRQUyAvIE1PVk5UUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50
ZXIgdG8gdGhlIDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdXNlZCB0byBzdG9yZSB0
aGUgdmFsdWUuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgNjQtYml0IHZhbHVlcyB0byBiZSBzdG9yZWQuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9z
dHJlYW1fcGQoZG91YmxlICpfX3AsIF9fbTEyOGQgX19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBf
X0dOVUNfXw0KICAgICsgIF9fYnVpbHRpbl9pYTMyX21vdm50cGQgKF9fcCwgKF9fdjJkZilfX2Ep
Ow0KICAgICsjZWxzZQ0KICAgICsgIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192MmRm
KV9fYSwgKF9fdjJkZiopX19wKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8v
LyBTdG9yZXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMTI4LWJpdCBhbGlnbmVkIG1l
bW9yeSBsb2NhdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5n
LCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUNCiAg
ICArLy8vICAgIHVzZWQgYWdhaW4gc29vbikuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5UUFMgLyBNT1ZOVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIHRo
ZSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHVzZWQgdG8gc3RvcmUgdGhlIHZhbHVl
Lg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQogICAgK3N0YXRpYyBfX2lu
bGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zdHJlYW1fc2kxMjgoX19t
MTI4aSAqX19wLCBfX20xMjhpIF9fYSkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAg
ICArICBfX2J1aWx0aW5faWEzMl9tb3ZudGRxICgoX192MmRpICopX19wLCAoX192MmRpKV9fYSk7
DQogICAgKyNlbHNlDQogICAgKyAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3YyZGkp
X19hLCAoX192MmRpKilfX3ApOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IFN0b3JlcyBhIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGxv
Y2F0aW9uLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBk
YXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KICAgICsvLy8g
ICAgdXNlZCBhZ2FpbiBzb29uKS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBNT1ZOVEkgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBtZW1vcnkgbG9j
YXRpb24gdXNlZCB0byBzdG9yZSB0aGUgdmFsdWUuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3Jl
ZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gdm9pZA0KICAgICsjaWZkZWYgX19HTlVDX18NCiAg
ICArX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy
dGlmaWNpYWxfXykpDQogICAgKyNlbHNlDQogICAgK19fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpKSkNCiAgICArI2VuZGlmDQog
ICAgK19tbV9zdHJlYW1fc2kzMihpbnQgKl9fcCwgaW50IF9fYSkNCiAgICArew0KICAgICsgIF9f
YnVpbHRpbl9pYTMyX21vdm50aShfX3AsIF9fYSk7DQogICAgK30NCiAgICArDQogICAgKyNpZmRl
ZiBfX3g4Nl82NF9fDQogICAgKy8vLyBTdG9yZXMgYSA2NC1iaXQgaW50ZWdlciB2YWx1ZSBpbiB0
aGUgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyAgICBUbyBt
aW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5s
aWtlbHkgdG8gYmUNCiAgICArLy8vICAgIHVzZWQgYWdhaW4gc29vbikuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRJUSA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0
byB0aGUgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgY29udGFpbmlu
ZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkDQog
ICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICtfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywg
X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCiAgICArI2Vsc2UNCiAgICArX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJz
c2UyIikpKQ0KICAgICsjZW5kaWYNCiAgICArX21tX3N0cmVhbV9zaTY0KGxvbmcgbG9uZyAqX19w
LCBsb25nIGxvbmcgX19hKQ0KICAgICt7DQogICAgKyAgX19idWlsdGluX2lhMzJfbW92bnRpNjQo
X19wLCBfX2EpOw0KICAgICt9DQogICAgKyNlbmRpZg0KICAgICsNCiAgICArI2lmIGRlZmluZWQo
X19jcGx1c3BsdXMpDQogICAgK2V4dGVybiAiQyIgew0KICAgICsjZW5kaWYNCiAgICArDQogICAg
Ky8vLyBUaGUgY2FjaGUgbGluZSBjb250YWluaW5nIFxhIF9fcCBpcyBmbHVzaGVkIGFuZCBpbnZh
bGlkYXRlZCBmcm9tIGFsbA0KICAgICsvLy8gICAgY2FjaGVzIGluIHRoZSBjb2hlcmVuY3kgZG9t
YWluLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENMRkxV
U0ggPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAg
Ky8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIGlkZW50aWZ5
IHRoZSBjYWNoZSBsaW5lIHRvIGJlDQogICAgKy8vLyAgICBmbHVzaGVkLg0KICAgICt2b2lkIF9t
bV9jbGZsdXNoKHZvaWQgY29uc3QgKiBfX3ApOw0KICAgICsNCiAgICArLy8vIEZvcmNlcyBzdHJv
bmcgbWVtb3J5IG9yZGVyaW5nIChzZXJpYWxpemF0aW9uKSBiZXR3ZWVuIGxvYWQNCiAgICArLy8v
ICAgIGluc3RydWN0aW9ucyBwcmVjZWRpbmcgdGhpcyBpbnN0cnVjdGlvbiBhbmQgbG9hZCBpbnN0
cnVjdGlvbnMgZm9sbG93aW5nDQogICAgKy8vLyAgICB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmlu
ZyB0aGUgc3lzdGVtIGNvbXBsZXRlcyBhbGwgcHJldmlvdXMgbG9hZHMgYmVmb3JlDQogICAgKy8v
LyAgICBleGVjdXRpbmcgc3Vic2VxdWVudCBsb2Fkcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBMRkVOQ0UgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgK3ZvaWQgX21tX2xmZW5jZSh2b2lkKTsNCiAgICArDQogICAgKy8vLyBGb3JjZXMgc3Ry
b25nIG1lbW9yeSBvcmRlcmluZyAoc2VyaWFsaXphdGlvbikgYmV0d2VlbiBsb2FkIGFuZCBzdG9y
ZQ0KICAgICsvLy8gICAgaW5zdHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3RydWN0aW9uIGFu
ZCBsb2FkIGFuZCBzdG9yZSBpbnN0cnVjdGlvbnMNCiAgICArLy8vICAgIGZvbGxvd2luZyB0aGlz
IGluc3RydWN0aW9uLCBlbnN1cmluZyB0aGF0IHRoZSBzeXN0ZW0gY29tcGxldGVzIGFsbA0KICAg
ICsvLy8gICAgcHJldmlvdXMgbWVtb3J5IGFjY2Vzc2VzIGJlZm9yZSBleGVjdXRpbmcgc3Vic2Vx
dWVudCBtZW1vcnkgYWNjZXNzZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gTUZFTkNFIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICt2b2lk
IF9tbV9tZmVuY2Uodm9pZCk7DQogICAgKw0KICAgICsjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykN
CiAgICArfSAvLyBleHRlcm4gIkMiDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLy8vIENvbnZl
cnRzIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3INCiAgICArLy8vICAgIG9wZXJhbmRzIGludG8gOC1iaXQgc2lnbmVkIGludGVnZXJzLCBhbmQg
cGFja3MgdGhlIHJlc3VsdHMgaW50byB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBQb3Np
dGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLg0KICAg
ICsvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8g
MHg4MC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFD
S1NTV0IgLyBQQUNLU1NXQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2
XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzDQogICAgKy8vLyAgIGEgc2lnbmVk
IGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgN
CiAgICArLy8vICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1
cmF0ZWQgdG8gMHg3Ri4gVmFsdWVzIGxlc3MNCiAgICArLy8vICAgdGhhbiAweDgwIGFyZSBzYXR1
cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJlDQogICAgKy8v
LyAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8v
IFxwYXJhbSBfX2INCiAgICArLy8vICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHgg
aTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzDQogICAgKy8vLyAgIGEgc2ln
bmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdp
dGgNCiAgICArLy8vICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBz
YXR1cmF0ZWQgdG8gMHg3Ri4gVmFsdWVzIGxlc3MNCiAgICArLy8vICAgdGhhbiAweDgwIGFyZSBz
YXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJlDQogICAg
Ky8vLyAgIHdyaXR0ZW4gdG8gdGhlIGhpZ2hlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fcGFja3NfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkg
X19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2tz
c3diMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBDb252ZXJ0cyAzMi1iaXQgc2lnbmVkIGludGVnZXJzIGZyb20gYm90aCAxMjgtYml0IGludGVn
ZXIgdmVjdG9yDQogICAgKy8vLyAgICBvcGVyYW5kcyBpbnRvIDE2LWJpdCBzaWduZWQgaW50ZWdl
cnMsIGFuZCBwYWNrcyB0aGUgcmVzdWx0cyBpbnRvIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRp
b24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8g
MHg3RkZGLg0KICAgICsvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwMDAgYXJl
IHNhdHVyYXRlZCB0byAweDgwMDAuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBBQ0tTU0RXIC8gUEFDS1NTRFcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzQgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMNCiAg
ICArLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBz
aWduZWQgaW50ZWdlciB3aXRoDQogICAgKy8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRl
ciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gVmFsdWVzDQogICAgKy8vLyAg
ICBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVydGVk
IFs0IHggaTE2XSB2YWx1ZXMNCiAgICArLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciA2
NCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50
IGlzIHRyZWF0ZWQgYXMNCiAgICArLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZl
cnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQogICAgKy8vLyAgICBzYXR1cmF0
aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4g
VmFsdWVzDQogICAgKy8vLyAgICBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4
MDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMNCiAgICArLy8vICAgIGFyZSB3cml0
dGVuIHRvIHRoZSBoaWdoZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVk
IHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX3BhY2tzX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICAr
ew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWNrc3NkdzEyOCgoX192
NHNpKV9fYSwgKF9fdjRzaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMg
MTYtYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0K
ICAgICsvLy8gICAgb3BlcmFuZHMgaW50byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYW5kIHBh
Y2tzIHRoZSByZXN1bHRzIGludG8gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gVmFsdWVz
IGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MNCiAg
ICArLy8vICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBQ0tVU1dCIC8gUEFDS1VTV0IgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVt
ZW50IGlzIHRyZWF0ZWQgYXMNCiAgICArLy8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNv
bnZlcnRlZCB0byBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdpdGgNCiAgICArLy8vICAgIHNh
dHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYu
IFZhbHVlcyBsZXNzDQogICAgKy8vLyAgICB0aGFuIDB4MDAgYXJlIHNhdHVyYXRlZCB0byAweDAw
LiBUaGUgY29udmVydGVkIFs4IHggaThdIHZhbHVlcyBhcmUNCiAgICArLy8vICAgIHdyaXR0ZW4g
dG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0uIEVhY2gg
MTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcw0KICAgICsvLy8gICAgYSBzaWduZWQgaW50ZWdl
ciBhbmQgaXMgY29udmVydGVkIHRvIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgd2l0aA0KICAg
ICsvLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0
ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MNCiAgICArLy8vICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJh
dGVkIHRvIDB4MDAuIFRoZSBjb252ZXJ0ZWQgWzggeCBpOF0gdmFsdWVzIGFyZQ0KICAgICsvLy8g
ICAgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGNv
bnZlcnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV9wYWNrdXNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2t1c3di
MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBF
eHRyYWN0cyAxNiBiaXRzIGZyb20gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2
XSwgdXNpbmcNCiAgICArLy8vICAgIHRoZSBpbW1lZGlhdGUtdmFsdWUgcGFyYW1ldGVyIGFzIGEg
c2VsZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBFWFRSVyAvIFBFWFRSVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8v
IFxwYXJhbSBfX2ltbQ0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsyOjBd
IHNlbGVjdHMgdmFsdWVzIGZyb20gXGEgX19hIHRvIGJlIGFzc2lnbmVkDQogICAgKy8vLyAgICB0
byBiaXRzWzE1OjBdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICAwMDA6IGFzc2lnbiB2
YWx1ZXMgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBfX2EuIFxuDQogICAgKy8vLyAgICAwMDE6IGFz
c2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMToxNl0gb2YgXGEgX19hLiBcbg0KICAgICsvLy8gICAg
MDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNDc6MzJdIG9mIFxhIF9fYS4gXG4NCiAgICAr
Ly8vICAgIDAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBfX2EuIFxu
DQogICAgKy8vLyAgICAxMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs3OTo2NF0gb2YgXGEg
X19hLiBcbg0KICAgICsvLy8gICAgMTAxOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbOTU6ODBd
IG9mIFxhIF9fYS4gXG4NCiAgICArLy8vICAgIDExMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMg
WzExMTo5Nl0gb2YgXGEgX19hLiBcbg0KICAgICsvLy8gICAgMTExOiBhc3NpZ24gdmFsdWVzIGZy
b20gYml0cyBbMTI3OjExMl0gb2YgXGEgX19hLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdl
ciwgd2hvc2UgbG93ZXIgMTYgYml0cyBhcmUgc2VsZWN0ZWQgZnJvbSB0aGUgMTI4LWJpdA0KICAg
ICsvLy8gICAgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMg
YXJlIGFzc2lnbmVkIHplcm9zLg0KICAgICsjZGVmaW5lIF9tbV9leHRyYWN0X2VwaTE2KGEsIGlt
bSkgXA0KICAgICsgIChpbnQpKHVuc2lnbmVkIHNob3J0KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRf
djhoaSgoX192OGhpKShfX20xMjhpKShhKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pKQ0KICAgICsNCiAgICArLy8v
IENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IGZpcnN0IG1ha2luZyBhIGNv
cHkgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwg
YW5kIHRoZW4gaW5zZXJ0aW5nIHRoZSBsb3dlciAxNiBiaXRzDQogICAgKy8vLyAgICBvZiBhbiBp
bnRlZ2VyIHBhcmFtZXRlciBpbnRvIGFuIG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0
ZS12YWx1ZQ0KICAgICsvLy8gICAgcGFyYW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQSU5TUlcgLyBQSU5TUlcgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlDQog
ICAgKy8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBlaWdodCBlbGVtZW50cyBpbiB0
aGUgcmVzdWx0IGlzIHJlcGxhY2VkIGJ5DQogICAgKy8vLyAgICB0aGUgbG93ZXIgMTYgYml0cyBv
ZiBcYSBfX2IuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBbiBpbnRlZ2VyLiBU
aGUgbG93ZXIgMTYgYml0cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUgd3JpdHRlbiB0byB0aGUNCiAg
ICArLy8vICAgIHJlc3VsdCBiZWdpbm5pbmcgYXQgYW4gb2Zmc2V0IHNwZWNpZmllZCBieSBcYSBf
X2ltbS4NCiAgICArLy8vIFxwYXJhbSBfX2ltbQ0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZh
bHVlIHNwZWNpZnlpbmcgdGhlIGJpdCBvZmZzZXQgaW4gdGhlIHJlc3VsdCBhdCB3aGljaCB0aGUN
CiAgICArLy8vICAgIGxvd2VyIDE2IGJpdHMgb2YgXGEgX19iIGFyZSB3cml0dGVuLg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnN0
cnVjdGVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1faW5zZXJ0X2VwaTE2KGEsIGIsIGltbSkg
XA0KICAgICsgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjhoaSgoX192OGhpKShf
X20xMjhpKShhKSwgKGludCkoYiksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGludCkoaW1tKSkNCiAgICArDQogICAgKy8vLyBDb3BpZXMgdGhlIHZhbHVl
cyBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gZWFjaCA4LWJpdA0KICAgICsvLy8g
ICAgZWxlbWVudCBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIGNy
ZWF0ZSBhIDE2LWJpdCBtYXNrDQogICAgKy8vLyAgICB2YWx1ZSwgemVyby1leHRlbmRzIHRoZSB2
YWx1ZSwgYW5kIHdyaXRlcyBpdCB0byB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZNU0tCIC8gUE1PVk1TS0IgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggYml0cyB0
byBiZSBleHRyYWN0ZWQuDQogICAgKy8vLyBccmV0dXJucyBUaGUgbW9zdCBzaWduaWZpY2FudCBi
aXRzIGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGluIFxhIF9fYSwNCiAgICArLy8vICAgIHdyaXR0
ZW4gdG8gYml0cyBbMTU6MF0uIFRoZSBvdGhlciBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbW92
ZW1hc2tfZXBpOChfX20xMjhpIF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9wbW92bXNrYjEyOCgoX192MTZxaSlfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8g
Q29uc3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgMzIt
Yml0DQogICAgKy8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFy
YW1ldGVyLCB1c2luZyB0aGUgaW1tZWRpYXRlLXZhbHVlDQogICAgKy8vLyAgICBwYXJhbWV0ZXIg
YXMgYSBzcGVjaWZpZXIuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9zaHVm
ZmxlX2VwaTMyKF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQogICAgKy8vLyBcZW5kY29kZQ0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBTSFVGRCAvIFBTSFVGRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBhDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4NCiAgICArLy8vIFxwYXJhbSBpbW0NCiAgICArLy8vICAg
IEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNwZWNpZnlpbmcg
d2hpY2ggZWxlbWVudHMgdG8NCiAgICArLy8vICAgIGNvcHkgZnJvbSBhLiBUaGUgZGVzdGluYXRp
b25zIHdpdGhpbiB0aGUgMTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQNCiAgICArLy8v
ICAgIHZhbHVlcyBhcyBmb2xsb3dzOiBcbg0KICAgICsvLy8gICAgQml0cyBbMTowXSBhcmUgdXNl
ZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXN1bHQuIFxuDQogICAg
Ky8vLyAgICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6
MzJdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRv
IGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8v
LyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2
XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBc
bg0KICAgICsvLy8gICAgMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMTowXSBvZiBcYSBh
LiBcbg0KICAgICsvLy8gICAgMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs2MzozMl0gb2Yg
XGEgYS4gXG4NCiAgICArLy8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbOTU6NjRd
IG9mIFxhIGEuIFxuDQogICAgKy8vLyAgICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzEy
Nzo5Nl0gb2YgXGEgYS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX3NodWZm
bGVfZXBpMzIoYSwgaW1tKSBcDQogICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZk
KChfX3Y0c2kpKF9fbTEyOGkpKGEpLCAoaW50KShpbW0pKQ0KICAgICsNCiAgICArLy8vIENvbnN0
cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IHNodWZmbGluZyBmb3VyIGxvd2VyIDE2
LWJpdA0KICAgICsvLy8gICAgZWxlbWVudHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs4IHggaTE2XSwgdXNpbmcgdGhlIGltbWVkaWF0ZQ0KICAgICsvLy8gICAgdmFsdWUgcGFyYW1l
dGVyIGFzIGEgc3BlY2lmaWVyLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4aSBfbW1f
c2h1ZmZsZWxvX2VwaTE2KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQogICAgKy8vLyBcZW5k
Y29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBTSFVGTFcgLyBQU0hVRkxXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIGENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
OCB4IGkxNl0uIEJpdHMgWzEyNzo2NF0gYXJlIGNvcGllZCB0byBiaXRzDQogICAgKy8vLyAgICBb
MTI3OjY0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIGltbQ0KICAgICsvLy8gICAg
QW4gOC1iaXQgaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8gY29w
eSBmcm9tIFxhIGEuIFxuDQogICAgKy8vLyAgICBCaXRzWzE6MF0gYXJlIHVzZWQgdG8gYXNzaWdu
IHZhbHVlcyB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0
c1szOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMzE6MTZdIG9mIHRoZSBy
ZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVl
cyB0byBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHNbNzo2
XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0
LiBcbg0KICAgICsvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbg0KICAgICsvLy8gICAg
MDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBhLiBcbg0KICAgICsvLy8g
ICAgMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMToxNl0gb2YgXGEgYS4gXG4NCiAgICAr
Ly8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNDc6MzJdIG9mIFxhIGEuIFxuDQog
ICAgKy8vLyAgICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBhLiBc
bg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIHNodWZmbGVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1fc2h1ZmZsZWxvX2VwaTE2KGEs
IGltbSkgXA0KICAgICsgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHcoKF9fdjhoaSko
X19tMTI4aSkoYSksIChpbnQpKGltbSkpDQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgdXBwZXIgMTYtYml0DQogICAg
Ky8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZd
LCB1c2luZyB0aGUgaW1tZWRpYXRlDQogICAgKy8vLyAgICB2YWx1ZSBwYXJhbWV0ZXIgYXMgYSBz
cGVjaWZpZXIuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9zaHVmZmxlaGlf
ZXBpMTYoX19tMTI4aSBhLCBjb25zdCBpbnQgaW1tKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNI
VUZIVyAvIFBTSFVGSFcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4g
Qml0cyBbNjM6MF0gYXJlIGNvcGllZCB0byBiaXRzDQogICAgKy8vLyAgICBbNjM6MF0gb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBpbW0NCiAgICArLy8vICAgIEFuIDgtYml0IGltbWVk
aWF0ZSB2YWx1ZSBzcGVjaWZ5aW5nIHdoaWNoIGVsZW1lbnRzIHRvIGNvcHkgZnJvbSBcYSBhLiBc
bg0KICAgICsvLy8gICAgQml0c1sxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0
cyBbNzk6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzWzM6Ml0gYXJlIHVz
ZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAg
ICArLy8vICAgIEJpdHNbNTo0XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzEx
MTo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHNbNzo2XSBhcmUgdXNlZCB0
byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuIFxuDQogICAg
Ky8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuDQogICAgKy8vLyAgICAwMDogYXNzaWdu
IHZhbHVlcyBmcm9tIGJpdHMgWzc5OjY0XSBvZiBcYSBhLiBcbg0KICAgICsvLy8gICAgMDE6IGFz
c2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs5NTo4MF0gb2YgXGEgYS4gXG4NCiAgICArLy8vICAgIDEw
OiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMTExOjk2XSBvZiBcYSBhLiBcbg0KICAgICsvLy8g
ICAgMTE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFsxMjc6MTEyXSBvZiBcYSBhLiBcbg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNo
dWZmbGVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1fc2h1ZmZsZWhpX2VwaTE2KGEsIGltbSkg
XA0KICAgICsgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmaHcoKF9fdjhoaSkoX19tMTI4
aSkoYSksIChpbnQpKGltbSkpDQogICAgKw0KICAgICsvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRl
ciAoaW5kZXggOC0xNSkgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycw0KICAgICsvLy8g
ICAgb2YgWzE2IHggaThdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3Rv
ciBvZiBbMTYgeCBpOF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBVTlBDS0hCVyAvIFBVTlBDS0hCVyA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzE2IHggaThdLg0KICAgICsvLy8gICAgQml0cyBbNzE6NjRdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzc5Ojcy
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8v
ICAgIEJpdHMgWzg3OjgwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3Vs
dC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzk1Ojg4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs1NTo0
OF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzEwMzo5Nl0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFsx
MTE6MTA0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAg
ICArLy8vICAgIEJpdHMgWzExOToxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEwMzo5Nl0gb2Yg
dGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzEyNzoxMjBdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzcxOjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBcbg0K
ICAgICsvLy8gICAgQml0cyBbNzk6NzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0
aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbODc6ODBdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbOTU6ODhdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAg
Qml0cyBbMTAzOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4g
XG4NCiAgICArLy8vICAgIEJpdHMgWzExMToxMDRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1Ojg4
XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbMTE5OjExMl0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMg
WzEyNzoxMjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5n
IHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91bnBhY2toaV9lcGk4KF9fbTEyOGkgX19hLCBf
X20xMjhpIF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNraGJ3MTI4ICgoX192MTZxaSlfX2EsIChfX3Yx
NnFpKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iLCA4LCAxNis4LCA5LCAxNis5
LCAxMCwgMTYrMTAsIDExLCAxNisxMSwgMTIsIDE2KzEyLCAxMywgMTYrMTMsIDE0LCAxNisxNCwg
MTUsIDE2KzE1KTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBVbnBhY2tz
IHRoZSBoaWdoLW9yZGVyIChpbmRleCA0LTcpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YNCiAgICArLy8vICAgIFs4IHggaTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIV0QgLyBQVU5QQ0tIV0QgPC9jPg0KICAgICsvLy8g
ICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCiAgICArLy8vICAgIEJpdHMgWzc5OjY0
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8g
ICAgQml0cyBbOTU6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0
LiBcbg0KICAgICsvLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo2
NF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KICAgICsvLy8gICAg
Qml0cyBbNzk6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBc
bg0KICAgICsvLy8gICAgQml0cyBbOTU6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBv
ZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0
byBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzEyNzox
MTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBp
bnRlcmxlYXZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQogICAgK19tbV91bnBhY2toaV9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4
aSBfX2IpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2h3ZDEyOCAoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19i
KTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2
ZWN0b3IoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iLCA0LCA4KzQsIDUsIDgrNSwgNiwgOCs2LCA3
LCA4KzcpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3MgdGhl
IGhpZ2gtb3JkZXIgKGluZGV4IDIsMykgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBv
Zg0KICAgICsvLy8gICAgWzQgeCBpMzJdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0hEUSAvIFBVTlBDS0hEUSA8L2M+DQogICAgKy8vLyAgIGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KICAgICsvLy8gICAgQml0cyBbOTU6NjRd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4gXG4NCiAgICAr
Ly8vICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6NjRdIG9mIHRoZSBk
ZXN0aW5hdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KICAgICsvLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzY0OjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBC
aXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIGRlc3RpbmF0
aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29u
dGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdW5wYWNraGlfZXBpMzIoX19tMTI4
aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsg
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2toZHExMjggKChfX3Y0c2kpX19h
LCAoX192NHNpKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19hLCAoX192NHNpKV9fYiwgMiwgNCsyLCAzLCA0
KzMpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3MgdGhlIGhp
Z2gtb3JkZXIgNjQtYml0IGVsZW1lbnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KICAg
ICsvLy8gICAgWzIgeCBpNjRdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGk2NF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBVTlBDS0hRRFEgLyBQVU5QQ0tIUURRIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQogICAgKy8vLyAgICBCaXRzIFsxMjc6NjRdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBcbg0K
ICAgICsvLy8gICAgQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9m
IHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3VucGFja2hp
X2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19H
TlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNraHFkcTEy
OCAoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19iKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19i
LCAxLCAyKzEpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3Mg
dGhlIGxvdy1vcmRlciAoaW5kZXggMC03KSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3Jz
IG9mDQogICAgKy8vLyAgICBbMTYgeCBpOF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEy
OC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLTEJXIC8gUFVOUENLTEJXIDwvYz4NCiAgICArLy8vICAg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uIFxuDQogICAgKy8vLyAgICBCaXRzIFs3OjBd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAg
IEJpdHMgWzE1OjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0LiBc
bg0KICAgICsvLy8gICAgQml0cyBbMjM6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzM5OjMyXSBv
ZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbMzk6MzJd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8g
ICAgQml0cyBbNDc6NDBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0
LiBcbg0KICAgICsvLy8gICAgQml0cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEwMzo5
Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzYzOjU2XSBhcmUgd3JpdHRl
biB0byBiaXRzIFsxMTk6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQogICAgKy8vLyAgICBC
aXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjhdIG9mIHRoZSByZXN1bHQuIFxuDQog
ICAgKy8vLyAgICBCaXRzIFsxNTo4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToyNF0gb2YgdGhl
IHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzIzOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRz
IFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzMxOjI0XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4gXG4N
CiAgICArLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo4OF0gb2Yg
dGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU1OjQ4XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbNjM6NTZd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRl
cmxlYXZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV91bnBhY2tsb19lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9f
YikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcHVucGNrbGJ3MTI4ICgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7
DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVj
dG9yKChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iLCAwLCAxNiswLCAxLCAxNisxLCAyLCAxNisy
LCAzLCAxNiszLCA0LCAxNis0LCA1LCAxNis1LCA2LCAxNis2LCA3LCAxNis3KTsNCiAgICArI2Vu
ZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBVbnBhY2tzIHRoZSBsb3ctb3JkZXIgKGluZGV4
IDAtMykgdmFsdWVzIGZyb20gZWFjaCBvZiB0aGUgdHdvIDEyOC1iaXQNCiAgICArLy8vICAgIHZl
Y3RvcnMgb2YgWzggeCBpMTZdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZl
Y3RvciBvZg0KICAgICsvLy8gICAgWzggeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMV0QgLyBQVU5QQ0tMV0QgPC9jPg0KICAgICsv
Ly8gICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCiAgICArLy8vICAgIEJpdHMgWzE1
OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8v
LyAgICBCaXRzIFszMToxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1
bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFs0NzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzk6
NjRdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFs2Mzo0OF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQogICAgKy8vLyAgICBC
aXRzIFsxNTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4N
CiAgICArLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo0OF0gb2Yg
dGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBi
aXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzYzOjQ4XSBh
cmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgaW50ZXJs
ZWF2ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW1fdW5wYWNrbG9fZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9wdW5wY2tsd2QxMjggKChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQog
ICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYiwgMCwgOCswLCAxLCA4KzEsIDIsIDgrMiwgMywgOCsz
KTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBVbnBhY2tzIHRoZSBsb3ct
b3JkZXIgKGluZGV4IDAsMSkgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KICAg
ICsvLy8gICAgWzQgeCBpMzJdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBVTlBDS0xEUSAvIFBVTlBDS0xEUSA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KICAgICsvLy8gICAgQml0cyBbMzE6MF0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAg
Qml0cyBbNjM6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgZGVzdGluYXRp
b24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzY0OjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFs2Mzoz
Ml0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRo
ZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91bnBhY2tsb19lcGkzMihfX20xMjhpIF9fYSwgX19t
MTI4aSBfX2IpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2xkcTEyOCAoKF9fdjRzaSlfX2EsIChfX3Y0c2kp
X19iKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZm
bGV2ZWN0b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iLCAwLCA0KzAsIDEsIDQrMSk7DQogICAg
KyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVyIDY0
LWJpdCBlbGVtZW50cyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCiAgICArLy8vICAgIFsy
IHggaTY0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBpNjRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
VU5QQ0tMUURRIC8gUFVOUENLTFFEUSA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpNjRdLiBcbg0KICAgICsvLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQogICAgKy8vLyAg
ICBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5h
dGlvbi4gXG4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRd
IGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3VucGFja2xvX2VwaTY0KF9f
bTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAg
ICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNrbHFkcTEyOCAoKF9fdjJk
aSlfX2EsIChfX3YyZGkpX19iKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOGkp
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19iLCAwLCAyKzAp
Ow0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJldHVybnMgdGhlIGxvd2Vy
IDY0IGJpdHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFzIGEgNjQtYml0DQogICAgKy8v
LyAgICBpbnRlZ2VyLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IE1PVkRRMlEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4gVGhlIGxv
d2VyIDY0IGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uDQog
ICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDY0
IGJpdHMgb2YgdGhlIHBhcmFtZXRlci4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tb3ZlcGk2NF9waTY0KF9fbTEyOGkgX19hKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIChfX202NClfX2FbMF07DQogICAgK30NCiAgICArDQogICAgKy8v
LyBNb3ZlcyB0aGUgNjQtYml0IG9wZXJhbmQgdG8gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCB6
ZXJvaW5nIHRoZQ0KICAgICsvLy8gICAgdXBwZXIgYml0cy4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZEK1ZNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgdmFsdWUu
DQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoZSBsb3dlciA2
NCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIGZyb20NCiAgICArLy8vICAgIHRoZSBvcGVyYW5kLiBU
aGUgdXBwZXIgNjQgYml0cyBhcmUgYXNzaWduZWQgemVyb3MuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tb3ZwaTY0X2VwaTY0KF9f
bTY0IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShf
X3YyZGkpeyAobG9uZyBsb25nKV9fYSwgMCB9Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92
ZXMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMTI4
LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3IsIHplcm9pbmcgdGhlIHVwcGVyIGJpdHMu
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBN
T1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuIFRoZSBsb3dlciA2NCBi
aXRzIGFyZSBtb3ZlZCB0byB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0KICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250
YWluIHRoZSB2YWx1ZSBmcm9tDQogICAgKy8vLyAgICB0aGUgb3BlcmFuZC4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIGFzc2lnbmVkIHplcm9zLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbW92ZV9lcGk2NChfX20xMjhpIF9fYSkNCiAg
ICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWls
dGluX2lhMzJfbW92cTEyOCAoKF9fdjJkaSkgX19hKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1
cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIF9tbV9zZXR6ZXJvX3NpMTI4
KCksIDAsIDIpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3Mg
dGhlIGhpZ2gtb3JkZXIgNjQtYml0IGVsZW1lbnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBv
Zg0KICAgICsvLy8gICAgWzIgeCBkb3VibGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4DQogICAgKy8vLyAgICBkb3VibGVdLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQRCAvIFVOUENLSFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuDQogICAgKy8vLyAgICBCaXRz
IFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4N
CiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZh
bHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX3VucGFja2hpX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCiAgICArew0K
ICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lh
MzJfdW5wY2tocGQgKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQogICAgKyNlbHNlDQogICAg
KyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9f
YiwgMSwgMisxKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBVbnBhY2tz
IHRoZSBsb3ctb3JkZXIgNjQtYml0IGVsZW1lbnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycw0K
ICAgICsvLy8gICAgb2YgWzIgeCBkb3VibGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4DQogICAgKy8vLyAgICBkb3VibGVdLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCAvIFVOUENLTFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuDQogICAgKy8vLyAgICBCaXRz
IFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uDQog
ICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVz
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW1fdW5wYWNrbG9fcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAg
KyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl91
bnBja2xwZCAoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCiAgICArI2Vsc2UNCiAgICArICBy
ZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iLCAw
LCAyKzApOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEV4dHJhY3RzIHRo
ZSBzaWduIGJpdHMgb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIHRoZSAxMjgtYml0
DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLCB6ZXJvLWV4dGVuZHMgdGhlIHZh
bHVlLCBhbmQgd3JpdGVzIGl0IHRvIHRoZQ0KICAgICsvLy8gICAgbG93LW9yZGVyIGJpdHMgb2Yg
dGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNT1ZNU0tQRCAvIE1PVk1TS1BEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggc2lnbiBiaXRzIHRvDQogICAgKy8v
LyAgICBiZSBleHRyYWN0ZWQuDQogICAgKy8vLyBccmV0dXJucyBUaGUgc2lnbiBiaXRzIGZyb20g
ZWFjaCBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyBpbiBcYSBfX2EsDQogICAgKy8v
LyAgICB3cml0dGVuIHRvIGJpdHMgWzE6MF0uIFRoZSByZW1haW5pbmcgYml0cyBhcmUgYXNzaWdu
ZWQgdmFsdWVzIG9mIHplcm8uDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX21vdmVtYXNrX3BkKF9fbTEyOGQgX19hKQ0KICAgICt7DQogICAg
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BkKChfX3YyZGYpX19hKTsNCiAgICArfQ0K
ICAgICsNCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGZyb20gdHdvDQogICAgKy8vLyAgICAxMjgtYml0IHZl
Y3RvciBwYXJhbWV0ZXJzIG9mIFsyIHggZG91YmxlXSwgdXNpbmcgdGhlIGltbWVkaWF0ZS12YWx1
ZQ0KICAgICsvLy8gICAgIHBhcmFtZXRlciBhcyBhIHNwZWNpZmllci4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUN
CiAgICArLy8vIF9fbTEyOGQgX21tX3NodWZmbGVfcGQoX19tMTI4ZCBhLCBfX20xMjhkIGIsIGNv
bnN0IGludCBpKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU0hVRlBEIC8gU0hVRlBEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIGENCiAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIGINCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8gXHBhcmFtIGkN
CiAgICArLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSB2YWx1ZS4gVGhlIGxlYXN0IHNpZ25pZmlj
YW50IHR3byBiaXRzIHNwZWNpZnkgd2hpY2gNCiAgICArLy8vICAgIGVsZW1lbnRzIHRvIGNvcHkg
ZnJvbSBcYSBhIGFuZCBcYSBiOiBcbg0KICAgICsvLy8gICAgQml0WzBdID0gMDogbG93ZXIgZWxl
bWVudCBvZiBcYSBhIGNvcGllZCB0byBsb3dlciBlbGVtZW50IG9mIHJlc3VsdC4gXG4NCiAgICAr
Ly8vICAgIEJpdFswXSA9IDE6IHVwcGVyIGVsZW1lbnQgb2YgXGEgYSBjb3BpZWQgdG8gbG93ZXIg
ZWxlbWVudCBvZiByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRbMV0gPSAwOiBsb3dlciBlbGVt
ZW50IG9mIFxhIGIgY29waWVkIHRvIHVwcGVyIGVsZW1lbnQgb2YgcmVzdWx0LiBcbg0KICAgICsv
Ly8gICAgQml0WzFdID0gMTogdXBwZXIgZWxlbWVudCBvZiBcYSBiIGNvcGllZCB0byB1cHBlciBl
bGVtZW50IG9mIHJlc3VsdC4gXG4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4NCiAgICArI2Rl
ZmluZSBfbW1fc2h1ZmZsZV9wZChhLCBiLCBpKSBcDQogICAgKyAgKF9fbTEyOGQpX19idWlsdGlu
X2lhMzJfc2h1ZnBkKChfX3YyZGYpKF9fbTEyOGQpKGEpLCAoX192MmRmKShfX20xMjhkKShiKSwg
XA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpKSkNCiAgICAr
DQogICAgKy8vLyBDYXN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSBpbnRvIGEgMTI4LWJpdA0KICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9u
ZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgc2FtZQ0KICAgICsvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFz
IHRoZSBwYXJhbWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX2Nhc3RwZF9wcyhfX20xMjhkIF9fYSkNCiAgICArew0KICAgICsg
IHJldHVybiAoX19tMTI4KV9fYTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENhc3RzIGEgMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGludG8gYSAxMjgtYml0
DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFz
IG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQogICAgKy8vLyAgICBwYXJh
bWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9jYXN0cGRfc2kxMjgoX19tMTI4ZCBfX2EpDQogICAgK3sNCiAgICArICByZXR1
cm4gKF9fbTEyOGkpX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ2FzdHMgYSAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTI4LWJpdA0KICAg
ICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNhbWUN
CiAgICArLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY2FzdHBz
X3BkKF9fbTEyOCBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGQpX19hOw0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gQ2FzdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTI4LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0
b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBh
dHRlcm4gYXMgdGhlDQogICAgKy8vLyAgICBwYXJhbWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jYXN0cHNfc2kxMjgoX19t
MTI4IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2E7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBDYXN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbNCB4IGZsb2F0XS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzYW1lDQogICAgKy8vLyAgICBiaXR3
aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY2FzdHNpMTI4X3BzKF9fbTEyOGkgX19h
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19hOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ2FzdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3Rvcg0KICAgICsvLy8gICAgb2YgWzIgeCBkb3VibGVdLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzYW1lDQogICAgKy8vLyAgICBiaXR3aXNlIHBh
dHRlcm4gYXMgdGhlIHBhcmFtZXRlci4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2Nhc3RzaTEyOF9wZChfX20xMjhpIF9fYSkNCiAg
ICArew0KICAgICsgIHJldHVybiAoX19tMTI4ZClfX2E7DQogICAgK30NCiAgICArDQogICAgKyNp
ZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KICAgICtleHRlcm4gIkMiIHsNCiAgICArI2VuZGlmDQog
ICAgKw0KICAgICsvLy8gSW5kaWNhdGVzIHRoYXQgYSBzcGluIGxvb3AgaXMgYmVpbmcgZXhlY3V0
ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZg0KICAgICsvLy8gICAgb3B0aW1pemluZyBwb3dlciBjb25z
dW1wdGlvbiBkdXJpbmcgdGhlIGxvb3AuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gUEFVU0UgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgK3Zv
aWQgX21tX3BhdXNlKHZvaWQpOw0KICAgICsNCiAgICArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMp
DQogICAgK30gLy8gZXh0ZXJuICJDIg0KICAgICsjZW5kaWYNCiAgICArI3VuZGVmIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICsNCiAg
ICArI2lmbmRlZiBfTU1fREVOT1JNQUxTX1pFUk9fT04NCiAgICArI2RlZmluZSBfTU1fREVOT1JN
QUxTX1pFUk9fT04gICAoMHgwMDQwKQ0KICAgICsjZW5kaWYNCiAgICArI2lmbmRlZiBfTU1fREVO
T1JNQUxTX1pFUk9fT0ZGDQogICAgKyNkZWZpbmUgX01NX0RFTk9STUFMU19aRVJPX09GRiAgKDB4
MDAwMCkNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsjaWZuZGVmIF9NTV9ERU5PUk1BTFNfWkVS
T19NQVNLDQogICAgKyNkZWZpbmUgX01NX0RFTk9STUFMU19aRVJPX01BU0sgKDB4MDA0MCkNCiAg
ICArI2VuZGlmDQogICAgKw0KICAgICsjaWZuZGVmIF9NTV9HRVRfREVOT1JNQUxTX1pFUk9fTU9E
RQ0KICAgICsjZGVmaW5lIF9NTV9HRVRfREVOT1JNQUxTX1pFUk9fTU9ERSgpIChfbW1fZ2V0Y3Ny
KCkgJiBfTU1fREVOT1JNQUxTX1pFUk9fTUFTSykNCiAgICArI2RlZmluZSBfTU1fU0VUX0RFTk9S
TUFMU19aRVJPX01PREUoeCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fREVOT1JN
QUxTX1pFUk9fTUFTSykgfCAoeCkpKQ0KICAgICsjZW5kaWYNCiAgICArDQogICAgKyNlbmRpZiAv
KiBfX0VNTUlOVFJJTl9IICovDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvaW1taW50cmluLmgg
Yi9pbmNsdWRlL2ltbWludHJpbi5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi41NDYwMDViDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2luY2x1ZGUv
aW1taW50cmluLmgNCiAgICBAQCAtMCwwICsxLDc1IEBADQogICAgKy8qPT09LS0tLSBpbW1pbnRy
aW4uaCAtIEludGVsIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09PT0NCiAgICArICoNCiAgICArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KICAgICsgKiBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbA0KICAgICsgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzDQogICAgKyAqIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwNCiAgICArICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQogICAgKyAqIGZ1cm5pc2hlZCB0
byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICAgKyAqDQog
ICAgKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQogICAgKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KICAgICsgKg0KICAgICsgKiBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUg0KICAgICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCiAgICArICogRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFDQogICAgKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCiAgICArICogTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwN
CiAgICArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KICAgICsgKiBUSEUgU09GVFdBUkUuDQogICAgKyAq
DQogICAgKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCiAgICArICovDQogICAgKw0KICAgICsjaWZu
ZGVmIF9fSU1NSU5UUklOX0gNCiAgICArI2RlZmluZSBfX0lNTUlOVFJJTl9IDQogICAgKw0KICAg
ICsjaWYgZGVmaW5lZChfX01NWF9fKQ0KICAgICsjaW5jbHVkZSA8bW1pbnRyaW4uaD4NCiAgICAr
I2VuZGlmDQogICAgKw0KICAgICsjaWYgZGVmaW5lZChfX1NTRV9fKQ0KICAgICsjaW5jbHVkZSA8
eG1taW50cmluLmg+DQogICAgKyNlbmRpZg0KICAgICsNCiAgICArI2lmIGRlZmluZWQoX19TU0Uy
X18pDQogICAgKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4NCiAgICArI2VuZGlmDQogICAgKw0KICAg
ICsjaWYgZGVmaW5lZChfX1NTRTNfXykNCiAgICArI2luY2x1ZGUgPHBtbWludHJpbi5oPg0KICAg
ICsjZW5kaWYNCiAgICArDQogICAgKyNpZiBkZWZpbmVkKF9fU1NTRTNfXykNCiAgICArI2luY2x1
ZGUgPHRtbWludHJpbi5oPg0KICAgICsjZW5kaWYNCiAgICArDQogICAgKyNpZiBcDQogICAgKyAg
ICAoZGVmaW5lZChfX1NTRTRfMl9fKSB8fCBkZWZpbmVkKF9fU1NFNF8xX18pKQ0KICAgICsjaW5j
bHVkZSA8c21taW50cmluLmg+DQogICAgKyNlbmRpZg0KICAgICsNCiAgICArI2lmIGRlZmluZWQo
X19BVlhfXykNCiAgICArI2luY2x1ZGUgPGF2eGludHJpbi5oPg0KICAgICsjZW5kaWYNCiAgICAr
DQogICAgKyNpZiBkZWZpbmVkKF9fUE9QQ05UX18pDQogICAgKyNpbmNsdWRlIDxwb3BjbnRpbnRy
aW4uaD4NCiAgICArI2VuZGlmDQogICAgKw0KICAgICsNCiAgICArLyogX19iaXRfc2Nhbl9mb3J3
YXJkICovDQogICAgKy8qDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18pKQ0KICAgICtfYml0X3NjYW5fZm9yd2Fy
ZChpbnQgX19BKSB7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9jdHooX19BKTsNCiAgICArfQ0K
ICAgICsqLw0KICAgICsvKiBfX2JpdF9zY2FuX3JldmVyc2UgKi8NCiAgICArLyoNCiAgICArc3Rh
dGljIF9faW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25v
ZGVidWdfXykpDQogICAgK19iaXRfc2Nhbl9yZXZlcnNlKGludCBfX0EpIHsNCiAgICArICByZXR1
cm4gMzEgLSBfX2J1aWx0aW5fY2x6KF9fQSk7DQogICAgK30NCiAgICArKi8NCiAgICArI2VuZGlm
IC8qIF9fSU1NSU5UUklOX0ggKi8NCiAgICBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tbV9tYWxsb2Mu
aCBiL2luY2x1ZGUvbW1fbWFsbG9jLmgNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGlu
ZGV4IDAwMDAwMDAuLjMwNWFmZDMNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvaW5jbHVk
ZS9tbV9tYWxsb2MuaA0KICAgIEBAIC0wLDAgKzEsNzUgQEANCiAgICArLyo9PT0tLS0tIG1tX21h
bGxvYy5oIC0gQWxsb2NhdGluZyBhbmQgRnJlZWluZyBBbGlnbmVkIE1lbW9yeSBCbG9ja3MgLS0t
LS0tLT09PQ0KICAgICsgKg0KICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQogICAgKyAqIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0byBkZWFsDQogICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCiAgICArICog
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbA0KICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCiAgICArICogZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgICArICoN
CiAgICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCiAgICArICogYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQogICAgKyAqDQogICAgKyAqIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SDQogICAgKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KICAgICsgKiBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUNCiAgICArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S
IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LA0KICAgICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElODQogICAgKyAqIFRIRSBTT0ZUV0FSRS4NCiAgICAr
ICoNCiAgICArICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KICAgICsgKi8NCiAgICArDQogICAgKyNp
Zm5kZWYgX19NTV9NQUxMT0NfSA0KICAgICsjZGVmaW5lIF9fTU1fTUFMTE9DX0gNCiAgICArDQog
ICAgKyNpbmNsdWRlIDxzdGRsaWIuaD4NCiAgICArDQogICAgKyNpZmRlZiBfV0lOMzINCiAgICAr
I2luY2x1ZGUgPG1hbGxvYy5oPg0KICAgICsjZWxzZQ0KICAgICsjaWZuZGVmIF9fY3BsdXNwbHVz
DQogICAgK2V4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24odm9pZCAqKl9fbWVtcHRyLCBzaXplX3Qg
X19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpOw0KICAgICsjZWxzZQ0KICAgICsvLyBTb21lIHN5
c3RlbXMgKGUuZy4gdGhvc2Ugd2l0aCBHTlUgbGliYykgZGVjbGFyZSBwb3NpeF9tZW1hbGlnbiB3
aXRoIGFuDQogICAgKy8vIGV4Y2VwdGlvbiBzcGVjaWZpZXIuIFZpYSBhbiAiZWdyZWdpb3VzIHdv
cmthcm91bmQiIGluDQogICAgKy8vIFNlbWE6OkNoZWNrRXF1aXZhbGVudEV4Y2VwdGlvblNwZWMs
IENsYW5nIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhcyBhIHZhbGlkDQogICAgKy8vIHJlZGVjbGFy
YXRpb24gb2YgZ2xpYmMncyBkZWNsYXJhdGlvbi4NCiAgICArZXh0ZXJuICJDIiBpbnQgcG9zaXhf
bWVtYWxpZ24odm9pZCAqKl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3Np
emUpOw0KICAgICsjZW5kaWYNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsjaWYgIShkZWZpbmVk
KF9XSU4zMikgJiYgZGVmaW5lZChfbW1fbWFsbG9jKSkNCiAgICArc3RhdGljIF9faW5saW5lX18g
dm9pZCAqX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLA0KICAg
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21hbGxvY19fKSkNCiAg
ICArX21tX21hbGxvYyhzaXplX3QgX19zaXplLCBzaXplX3QgX19hbGlnbikNCiAgICArew0KICAg
ICsgIGlmIChfX2FsaWduID09IDEpIHsNCiAgICArICAgIHJldHVybiBtYWxsb2MoX19zaXplKTsN
CiAgICArICB9DQogICAgKw0KICAgICsgIGlmICghKF9fYWxpZ24gJiAoX19hbGlnbiAtIDEpKSAm
JiBfX2FsaWduIDwgc2l6ZW9mKHZvaWQgKikpDQogICAgKyAgICBfX2FsaWduID0gc2l6ZW9mKHZv
aWQgKik7DQogICAgKw0KICAgICsgIHZvaWQgKl9fbWFsbG9jZWRNZW1vcnk7DQogICAgKyNpZiBk
ZWZpbmVkKF9fTUlOR1czMl9fKQ0KICAgICsgIF9fbWFsbG9jZWRNZW1vcnkgPSBfX21pbmd3X2Fs
aWduZWRfbWFsbG9jKF9fc2l6ZSwgX19hbGlnbik7DQogICAgKyNlbGlmIGRlZmluZWQoX1dJTjMy
KQ0KICAgICsgIF9fbWFsbG9jZWRNZW1vcnkgPSBfYWxpZ25lZF9tYWxsb2MoX19zaXplLCBfX2Fs
aWduKTsNCiAgICArI2Vsc2UNCiAgICArICBpZiAocG9zaXhfbWVtYWxpZ24oJl9fbWFsbG9jZWRN
ZW1vcnksIF9fYWxpZ24sIF9fc2l6ZSkpDQogICAgKyAgICByZXR1cm4gMDsNCiAgICArI2VuZGlm
DQogICAgKw0KICAgICsgIHJldHVybiBfX21hbGxvY2VkTWVtb3J5Ow0KICAgICt9DQogICAgKw0K
ICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXykpDQogICAgK19tbV9mcmVlKHZvaWQgKl9fcCkNCiAgICArew0KICAg
ICsgIGZyZWUoX19wKTsNCiAgICArfQ0KICAgICsjZW5kaWYNCiAgICArDQogICAgKyNlbmRpZiAv
KiBfX01NX01BTExPQ19IICovDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvbW1pbnRyaW4uaCBi
L2luY2x1ZGUvbW1pbnRyaW4uaA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXgg
MDAwMDAwMC4uYTVjMjgyOQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9pbmNsdWRlL21t
aW50cmluLmgNCiAgICBAQCAtMCwwICsxLDE1OTggQEANCiAgICArLyo9PT0tLS0tIG1taW50cmlu
LmggLSBNTVggaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LT09PQ0KICAgICsgKg0KICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQogICAgKyAqIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0byBkZWFsDQogICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCiAgICArICogdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbA0KICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCiAgICArICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgICArICoNCiAg
ICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCiAgICArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQogICAgKyAqDQogICAgKyAqIFRIRSBTT0ZUV0FS
RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS
RVNTIE9SDQogICAgKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KICAgICsgKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUNCiAgICArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0K
ICAgICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg
VVNFIE9SIE9USEVSIERFQUxJTkdTIElODQogICAgKyAqIFRIRSBTT0ZUV0FSRS4NCiAgICArICoN
CiAgICArICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KICAgICsgKi8NCiAgICArDQogICAgKyNpZm5k
ZWYgX19NTUlOVFJJTl9IDQogICAgKyNkZWZpbmUgX19NTUlOVFJJTl9IDQogICAgKw0KICAgICsj
aWZkZWYgX19HTlVDX18NCiAgICArdHlwZWRlZiBpbnQgX19tNjQgX19hdHRyaWJ1dGVfXyAoKF9f
dmVjdG9yX3NpemVfXyAoOCksIF9fbWF5X2FsaWFzX18pKTsNCiAgICArI2Vsc2UNCiAgICArdHlw
ZWRlZiBsb25nIGxvbmcgX19tNjQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7
DQogICAgKyNlbmRpZg0KICAgICt0eXBlZGVmIGludCBfX202NF91IF9fYXR0cmlidXRlX18gKChf
X3ZlY3Rvcl9zaXplX18gKDgpLCBfX21heV9hbGlhc19fLCBfX2FsaWduZWRfXyAoMSkpKTsNCiAg
ICArDQogICAgK3R5cGVkZWYgbG9uZyBsb25nIF9fdjFkaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rv
cl9zaXplX18oOCkpKTsNCiAgICArdHlwZWRlZiBpbnQgX192MnNpIF9fYXR0cmlidXRlX18oKF9f
dmVjdG9yX3NpemVfXyg4KSkpOw0KICAgICt0eXBlZGVmIHNob3J0IF9fdjRoaSBfX2F0dHJpYnV0
ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsNCiAgICArdHlwZWRlZiBjaGFyIF9fdjhxaSBfX2F0
dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsNCiAgICArdHlwZWRlZiBmbG9hdCBfX3Yy
c2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsNCiAgICArLyogRGVmaW5l
IHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAq
Lw0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMg
X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm
aWNpYWxfXykpDQogICAgKyNlbHNlDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygi
bW14IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQogICAgKyNlbmRpZg0KICAgICsNCiAg
ICArLy8vIENsZWFycyB0aGUgTU1YIHN0YXRlIGJ5IHNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSB4
ODcgc3RhY2sgcmVnaXN0ZXJzDQogICAgKy8vLyAgICB0byBlbXB0eS4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBFTU1TIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkDQogICAgKyNpZmRlZiBfX0dOVUNf
Xw0KICAgICtfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18s
IF9fYXJ0aWZpY2lhbF9fKSkNCiAgICArI2Vsc2UNCiAgICArX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtbXgiKSkpDQogICAgKyNlbmRp
Zg0KICAgICtfbW1fZW1wdHkodm9pZCkNCiAgICArew0KICAgICsgICAgX19idWlsdGluX2lhMzJf
ZW1tcygpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRl
Z2VyIHZlY3Rvciwgc2V0dGluZyB0aGUgbG93ZXIgMzIgYml0cyB0byB0aGUNCiAgICArLy8vICAg
IHZhbHVlIG9mIHRoZSAzMi1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYW5kIHNldHRpbmcgdGhlIHVw
cGVyIDMyIGJpdHMgdG8gMC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBNT1ZEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9faQ0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgMzIgYml0cyBjb250YWluIHRo
ZSB2YWx1ZSBvZiB0aGUNCiAgICArLy8vICAgIHBhcmFtZXRlci4gVGhlIHVwcGVyIDMyIGJpdHMg
YXJlIHNldCB0byAwLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX2N2dHNpMzJfc2k2NChpbnQgX19pKQ0KICAgICt7DQogICAgKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3ZlY19pbml0X3Yyc2koX19pLCAwKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIFJldHVybnMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3IgYXMgYSAzMi1iaXQNCiAgICArLy8vICAgIHNpZ25lZCBpbnRlZ2VyLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVkQgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25l
ZCBpbnRlZ2VyIHZhbHVlIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlDQogICAg
Ky8vLyAgICBwYXJhbWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX2N2dHNpNjRfc2kzMihfX202NCBfX20pDQogICAgK3sNCiAgICAr
ICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Yyc2koKF9fdjJzaSlfX20sIDApOw0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gQ2FzdHMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFs
dWUgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9faQ0KICAgICsvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIu
DQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBzYW1lIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUNCiAgICArLy8vICAgIHBhcmFtZXRlci4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9j
dnRzaTY0X202NChsb25nIGxvbmcgX19pKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0
KV9faTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENhc3RzIGEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGludG8gYSA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20NCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgY29udGFp
bmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQogICAgKy8vLyAgICBwYXJhbWV0
ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX2N2dG02NF9zaTY0KF9fbTY0IF9fbSkNCiAgICArew0KICAgICsgICAgcmV0dXJu
IChsb25nIGxvbmcpX19tOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgMTYtYml0
IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggNjQtYml0IGludGVnZXIgdmVjdG9yDQogICAgKy8v
LyAgICBwYXJhbWV0ZXJzIG9mIFs0IHggaTE2XSBpbnRvIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHZh
bHVlcywgYW5kIGNvbnN0cnVjdHMNCiAgICArLy8vICAgIGEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs4IHggaThdIGFzIHRoZSByZXN1bHQuIFBvc2l0aXZlIHZhbHVlcw0KICAgICsvLy8gICAg
Z3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLiBOZWdhdGl2ZSB2YWx1ZXMg
bGVzcyB0aGFuIDB4ODANCiAgICArLy8vICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUNLU1NXQiA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQg
aXMgdHJlYXRlZCBhcyBhDQogICAgKy8vLyAgICAxNi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlz
IGNvbnZlcnRlZCB0byBhbiA4LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQogICAgKy8vLyAgICBz
YXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRl
ZCB0byAweDdGLg0KICAgICsvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwIGFy
ZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZA0KICAgICsvLy8gICAgWzQgeCBpOF0g
dmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQog
ICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQ0KICAgICsv
Ly8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQg
c2lnbmVkIGludGVnZXIgd2l0aA0KICAgICsvLy8gICAgc2F0dXJhdGlvbi4gUG9zaXRpdmUgdmFs
dWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4NCiAgICArLy8vICAg
IE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuIFRo
ZSBjb252ZXJ0ZWQNCiAgICArLy8vICAgIFs0IHggaThdIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0
aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgY29udmVydGVkDQog
ICAgKy8vLyAgICB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fcGFja3NfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0K
ICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhY2tzc3diKChf
X3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZl
cnRzIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
cg0KICAgICsvLy8gICAgcGFyYW1ldGVycyBvZiBbMiB4IGkzMl0gaW50byAxNi1iaXQgc2lnbmVk
IGludGVnZXIgdmFsdWVzLCBhbmQgY29uc3RydWN0cw0KICAgICsvLy8gICAgYSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGFzIHRoZSByZXN1bHQuIFBvc2l0aXZlIHZhbHVlcw0K
ICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4g
TmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbg0KICAgICsvLy8gICAgMHg4MDAwIGFyZSBzYXR1cmF0
ZWQgdG8gMHg4MDAwLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFBBQ0tTU0RXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4g
RWFjaCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCiAgICArLy8vICAgIDMyLWJpdCBz
aWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYtYml0IHNpZ25lZCBpbnRlZ2Vy
IHdpdGgNCiAgICArLy8vICAgIHNhdHVyYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRo
YW4gMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLg0KICAgICsvLy8gICAgTmVnYXRpdmUg
dmFsdWVzIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuIFRoZSBjb252
ZXJ0ZWQNCiAgICArLy8vICAgIFsyIHggaTE2XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGxv
d2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uIEVhY2ggMzItYml0IGVs
ZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQogICAgKy8vLyAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIg
YW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQogICAgKy8v
LyAgICBzYXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUg
c2F0dXJhdGVkIHRvIDB4N0ZGRi4NCiAgICArLy8vICAgIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRo
YW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVydGVkDQogICAgKy8v
LyAgICBbMiB4IGkxNl0gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSB1cHBlciAzMiBiaXRzIG9m
IHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVkDQogICAgKy8vLyAgICB2YWx1ZXMu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW1fcGFja3NfcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3KChfX3Yyc2kpX19tMSwgKF9fdjJz
aSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQg
aW50ZWdlcnMgZnJvbSBib3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KICAgICsvLy8gICAgcGFy
YW1ldGVycyBvZiBbNCB4IGkxNl0gaW50byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcywg
YW5kDQogICAgKy8vLyAgICBjb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdIGFzIHRoZSByZXN1bHQuIFZhbHVlcw0KICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIDB4
RkYgYXJlIHNhdHVyYXRlZCB0byAweEZGLiBWYWx1ZXMgbGVzcyB0aGFuIDAgYXJlIHNhdHVyYXRl
ZA0KICAgICsvLy8gICAgdG8gMC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQQUNLVVNXQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQogICAgKy8vLyAgICAx
Ni1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCB1bnNpZ25l
ZCBpbnRlZ2VyIHdpdGgNCiAgICArLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRo
YW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzDQogICAgKy8vLyAgICB0
aGFuIDAgYXJlIHNhdHVyYXRlZCB0byAwLiBUaGUgY29udmVydGVkIFs0IHggaThdIHZhbHVlcyBh
cmUgd3JpdHRlbiB0bw0KICAgICsvLy8gICAgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3Vs
dC4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQog
ICAgKy8vLyAgICAxNi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdpdGgNCiAgICArLy8vICAgIHNhdHVyYXRpb24uIFZhbHVl
cyBncmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzDQog
ICAgKy8vLyAgICB0aGFuIDAgYXJlIHNhdHVyYXRlZCB0byAwLiBUaGUgY29udmVydGVkIFs0IHgg
aThdIHZhbHVlcyBhcmUgd3JpdHRlbiB0bw0KICAgICsvLy8gICAgdGhlIHVwcGVyIDMyIGJpdHMg
b2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZA0KICAgICsvLy8gICAgdmFsdWVz
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3BhY2tzX3B1MTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWNrdXN3YigoX192NGhpKV9fbTEsIChfX3Y0
aGkpX19tMik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBVbnBhY2tzIHRoZSB1cHBlciAzMiBi
aXRzIGZyb20gdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YgWzggeCBpOF0NCiAgICArLy8v
ICAgIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpOF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
UFVOUENLSEJXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
bTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBcbg0K
ICAgICsvLy8gICAgQml0cyBbMzk6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhl
IHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsyMzoxNl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU1OjQ4XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzYzOjU2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCiAg
ICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XS4NCiAgICArLy8vICAgIEJpdHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbNDc6NDBdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0
cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0LiBcbg0K
ICAgICsvLy8gICAgQml0cyBbNjM6NTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0
aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpOF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQNCiAgICArLy8vICAgIHZhbHVlcy4N
CiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV91bnBhY2toaV9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wdW5wY2toYncoKF9fdjhxaSlfX20xLCAoX192
OHFpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gVW5wYWNrcyB0aGUgdXBwZXIgMzIg
Yml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbNCB4
IGkxNl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUFVOUENLSFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4N
CiAgICArLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0
aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAgQml0cyBbNjM6NDhdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8vICAgIEJp
dHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4gXG4N
CiAgICArLy8vICAgIEJpdHMgWzYzOjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo0OF0gb2Yg
dGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZA0KICAgICsvLy8gICAgdmFsdWVz
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3VucGFja2hpX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsg
ICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wdW5wY2tod2QoKF9fdjRoaSlfX20xLCAo
X192NGhpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gVW5wYWNrcyB0aGUgdXBwZXIg
MzIgYml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBb
MiB4IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUFVOUENLSERRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMy
XS4gVGhlIHVwcGVyIDMyIGJpdHMgYXJlIHdyaXR0ZW4gdG8NCiAgICArLy8vICAgIHRoZSBsb3dl
ciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgdXBwZXIgMzIgYml0
cyBhcmUgd3JpdHRlbiB0bw0KICAgICsvLy8gICAgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJl
c3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHgg
aTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZA0KICAgICsvLy8gICAgdmFsdWVzLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3Vu
cGFja2hpX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsgICAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wdW5wY2toZHEoKF9fdjJzaSlfX20xLCAoX192MnNp
KV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gVW5wYWNrcyB0aGUgbG93ZXIgMzIgYml0
cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mIFs4IHggaThdDQogICAgKy8vLyAg
ICBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBV
TlBDS0xCVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20x
DQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCiAgICAr
Ly8vICAgIEJpdHMgWzc6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0
LiBcbg0KICAgICsvLy8gICAgQml0cyBbMTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjM6MTZd
IG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFsyMzoxNl0gYXJlIHdyaXR0ZW4g
dG8gYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFszMToy
NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cGFyYW0gX19tMg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBp
OF0uDQogICAgKy8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjhdIG9m
IHRoZSByZXN1bHQuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxNTo4XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAgIEJpdHMgWzIzOjE2XSBh
cmUgd3JpdHRlbiB0byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4NCiAgICArLy8vICAg
IEJpdHMgWzMxOjI0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNv
bnRhaW5pbmcgdGhlIGludGVybGVhdmVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdW5wYWNrbG9f
cGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfcHVucGNrbGJ3KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIFVucGFja3MgdGhlIGxvd2VyIDMyIGJpdHMgZnJvbSB0
d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KICAgICsvLy8gICAgWzQgeCBpMTZdIGFuZCBp
bnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0xX
RCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20xDQogICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLyAg
ICBCaXRzIFsxNTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBc
bg0KICAgICsvLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjMyXSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8vICAgIEJpdHMgWzE1OjBdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KICAgICsvLy8gICAg
Qml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0K
ICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNv
bnRhaW5pbmcgdGhlIGludGVybGVhdmVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdW5wYWNrbG9f
cGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2x3ZCgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBVbnBhY2tzIHRoZSBsb3dlciAzMiBiaXRzIGZyb20g
dHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCiAgICArLy8vICAgIFsyIHggaTMyXSBhbmQg
aW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMy
XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQVU5QQ0tM
RFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tMQ0KICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIg
MzIgYml0cyBhcmUgd3JpdHRlbiB0bw0KICAgICsvLy8gICAgdGhlIGxvd2VyIDMyIGJpdHMgb2Yg
dGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dlciAzMiBiaXRzIGFyZSB3cml0dGVu
IHRvDQogICAgKy8vLyAgICB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5p
bmcgdGhlIGludGVybGVhdmVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdW5wYWNrbG9fcGkzMihf
X202NCBfX20xLCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9f
YnVpbHRpbl9pYTMyX3B1bnBja2xkcSgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7DQogICAg
K30NCiAgICArDQogICAgKy8vLyBBZGRzIGVhY2ggOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRo
ZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCiAgICArLy8vICAgIG9mIFs4IHggaThdIHRv
IHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kDQog
ICAgKy8vLyAgICA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFRoZSBsb3dlciA4
IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlDQogICAgKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XS4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KICAg
ICsvLy8gICAgcGFyYW1ldGVycy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZB
VUxUX0ZOX0FUVFJTDQogICAgK19tbV9hZGRfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQog
ICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZGIoKF9fdjhx
aSlfX20xLCAoX192OHFpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQWRkcyBlYWNo
IDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
cg0KICAgICsvLy8gICAgb2YgWzQgeCBpMTZdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBp
bnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZA0KICAgICsvLy8gICAgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XS4gVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJl
DQogICAgKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFE
RFcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tMQ0KICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8g
XHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHgg
aTE2XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHgg
aTE2XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCiAgICArLy8vICAgIHBhcmFtZXRlcnMu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW1fYWRkX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsgICAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19t
Mik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIGVhY2ggMzItYml0IGludGVnZXIgZWxl
bWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yDQogICAgKy8vLyAgICBvZiBb
MiB4IGkzMl0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIgZWxlbWVudCBvZiB0
aGUgc2Vjb25kDQogICAgKy8vLyAgICA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJd
LiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0cyBhcmUNCiAgICArLy8vICAgIHBhY2tl
ZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQURERCA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQogICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KICAgICsvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhl
IHN1bXMgb2YgYm90aA0KICAgICsvLy8gICAgcGFyYW1ldGVycy4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9hZGRfcGkzMihfX202NCBf
X20xLCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRp
bl9pYTMyX3BhZGRkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIEFkZHMgZWFjaCA4LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBm
aXJzdCA2NC1iaXQgaW50ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHggaThdIHRvIHRo
ZSBjb3JyZXNwb25kaW5nIDgtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YNCiAgICArLy8v
ICAgIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBQb3NpdGl2
ZSBzdW1zIGdyZWF0ZXIgdGhhbg0KICAgICsvLy8gICAgMHg3RiBhcmUgc2F0dXJhdGVkIHRvIDB4
N0YuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0bw0KICAgICsv
Ly8gICAgMHg4MC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaThdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFBBRERTQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4
XS4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbOCB4IGk4XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQogICAgKy8vLyAg
ICBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYWRkc19waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikN
CiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkc2IoKF9f
djhxaSlfX20xLCAoX192OHFpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQWRkcyBl
YWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50
ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yIG9mIFs0IHggaTE2XSB0byB0aGUgY29ycmVzcG9uZGlu
ZyAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZg0KICAgICsvLy8gICAgdGhlIHNlY29u
ZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0
ZXIgdGhhbg0KICAgICsvLy8gICAgMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdh
dGl2ZSBzdW1zIGxlc3MgdGhhbiAweDgwMDAgYXJlDQogICAgKy8vLyAgICBzYXR1cmF0ZWQgdG8g
MHg4MDAwLiBUaGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3INCiAgICArLy8vICAgIG9mIFs0IHggaTE2XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREU1cgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19tMQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQgc3Vt
cw0KICAgICsvLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2FkZHNfcGkxNihfX202NCBfX20x
LCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BhZGRzdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBBZGRzIGVhY2ggOC1iaXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBm
aXJzdCA2NC1iaXQgaW50ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHggaThdIHRvIHRo
ZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZg0KICAgICsv
Ly8gICAgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFN1bXMg
Z3JlYXRlciB0aGFuIDB4RkYgYXJlDQogICAgKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHhGRi4gVGhl
IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQogICAg
Ky8vLyAgICBbOCB4IGk4XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBQQUREVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThd
Lg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs4IHggaThdLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQogICAgKy8vLyAgICB1bnNp
Z25lZCBzdW1zIG9mIGJvdGggcGFyYW1ldGVycy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9hZGRzX3B1OChfX202NCBfX20xLCBfX202
NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bh
ZGR1c2IoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQWRkcyBlYWNoIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0
IDY0LWJpdCBpbnRlZ2VyDQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdIHRvIHRoZSBj
b3JyZXNwb25kaW5nIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQNCiAgICArLy8vICAg
IG9mIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gU3VtcyBn
cmVhdGVyIHRoYW4NCiAgICArLy8vICAgIDB4RkZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkZGRi4g
VGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQogICAgKy8vLyAgICBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gUEFERFVTVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0uDQogICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZA0KICAgICsvLy8g
ICAgdW5zaWduZWQgc3VtcyBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYWRkc19wdTE2KF9fbTY0IF9f
bTEsIF9fbTY0IF9fbTIpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGlu
X2lhMzJfcGFkZHVzdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBTdWJ0cmFjdHMgZWFjaCA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNl
Y29uZCA2NC1iaXQgaW50ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHggaThdIGZyb20g
dGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KICAgICsvLy8g
ICAgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBUaGUgbG93ZXIgOCBi
aXRzIG9mIHRoZSByZXN1bHRzDQogICAgKy8vLyAgICBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUFNVQkIgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19tMQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpOF0gY29udGFpbmluZyB0aGUgbWludWVuZHMuDQogICAgKy8vLyBccGFyYW0gX19tMg0K
ICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmlu
ZyB0aGUgc3VidHJhaGVuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZg0KICAgICsvLy8g
ICAgYm90aCBwYXJhbWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX3N1Yl9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAg
ICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3ViYigoX192OHFp
KV9fbTEsIChfX3Y4cWkpX19tMik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMg
ZWFjaCAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIN
CiAgICArLy8vICAgIHZlY3RvciBvZiBbNCB4IGkxNl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAx
Ni1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KICAgICsvLy8gICAgZmlyc3QgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlDQogICAg
Ky8vLyAgICByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUFNVQlcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19t
MQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRh
aW5pbmcgdGhlIG1pbnVlbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzdWJ0cmFo
ZW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHgg
aTE2XSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZg0KICAgICsvLy8gICAgYm90aCBwYXJh
bWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX3N1Yl9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQogICAgK3sNCiAgICAr
ICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YncoKF9fdjRoaSlfX20xLCAoX192
NGhpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3VidHJhY3RzIGVhY2ggMzItYml0
IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyDQogICAgKy8vLyAg
ICB2ZWN0b3Igb2YgWzIgeCBpMzJdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVn
ZXIgZWxlbWVudCBvZiB0aGUNCiAgICArLy8vICAgIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZQ0KICAgICsvLy8gICAgcmVz
dWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJd
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fbTENCiAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBt
aW51ZW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQogICAg
Ky8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFp
bmluZyB0aGUgZGlmZmVyZW5jZXMgb2YNCiAgICArLy8vICAgIGJvdGggcGFyYW1ldGVycy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9z
dWJfcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1YnRyYWN0cyBlYWNoIDgtYml0IHNpZ25lZCBpbnRl
Z2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQNCiAgICArLy8vICAgIGludGVnZXIgdmVj
dG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgc2lnbmVkIGludGVn
ZXINCiAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbOCB4IGk4XS4gUG9zaXRpdmUgcmVzdWx0cw0KICAgICsvLy8gICAgZ3JlYXRlciB0aGFu
IDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLiBOZWdhdGl2ZSByZXN1bHRzIGxlc3MgdGhhbiAw
eDgwDQogICAgKy8vLyAgICBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuIFRoZSByZXN1bHRzIGFyZSBw
YWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBp
OF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlNC
IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fbTENCiAgICAr
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhl
IG1pbnVlbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KICAg
ICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFp
bmluZyB0aGUgc2F0dXJhdGVkDQogICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFt
ZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW1fc3Vic19waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsg
ICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Vic2IoKF9fdjhxaSlfX20xLCAoX192
OHFpKV9fbTIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3VidHJhY3RzIGVhY2ggMTYtYml0
IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQNCiAgICArLy8vICAg
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJp
dCBzaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgcmVzdWx0cw0KICAgICsvLy8g
ICAgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUg
cmVzdWx0cyBsZXNzIHRoYW4NCiAgICArLy8vICAgIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4
ODAwMC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQogICAgKy8vLyAgICBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX20y
DQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFp
bmluZyB0aGUgc3VidHJhaGVuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQogICAgKy8vLyAg
ICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3Vic19waTE2KF9fbTY0IF9fbTEs
IF9fbTY0IF9fbTIpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lh
MzJfcHN1YnN3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAg
ICArLy8vIFN1YnRyYWN0cyBlYWNoIDgtYml0IHVuc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0
aGUgc2Vjb25kIDY0LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0g
ZnJvbSB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQogICAgKy8vLyAg
ICBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0u
DQogICAgKy8vLw0KICAgICsvLy8gICAgSWYgYW4gZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9y
IGlzIGxlc3MgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50DQogICAgKy8vLyAgICBvZiB0
aGUgc2Vjb25kIHZlY3RvciwgdGhlIHJlc3VsdCBpcyBzYXR1cmF0ZWQgdG8gMC4gVGhlIHJlc3Vs
dHMgYXJlDQogICAgKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQU1VCVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
bTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRh
aW5pbmcgdGhlIG1pbnVlbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhl
bmRzLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBp
OF0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQogICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBi
b3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW1fc3Vic19wdTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICAr
ew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3VidXNiKChfX3Y4cWkp
X19tMSwgKF9fdjhxaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1YnRyYWN0cyBl
YWNoIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQN
CiAgICArLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBmcm9tIHRoZSBjb3JyZXNw
b25kaW5nIDE2LWJpdCB1bnNpZ25lZA0KICAgICsvLy8gICAgaW50ZWdlciBlbGVtZW50IG9mIHRo
ZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8NCiAg
ICArLy8vICAgIElmIGFuIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBsZXNzIHRoYW4g
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudA0KICAgICsvLy8gICAgb2YgdGhlIHNlY29uZCB2ZWN0
b3IsIHRoZSByZXN1bHQgaXMgc2F0dXJhdGVkIHRvIDAuIFRoZSByZXN1bHRzIGFyZQ0KICAgICsv
Ly8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJVU1cgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tMQ0KICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIG1p
bnVlbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWlu
aW5nIHRoZSBzYXR1cmF0ZWQNCiAgICArLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggcGFyYW1l
dGVycy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9zdWJzX3B1MTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsg
ICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3VidXN3KChfX3Y0aGkpX19tMSwgKF9f
djRoaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIE11bHRpcGxpZXMgZWFjaCAxNi1i
aXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0DQogICAgKy8vLyAg
ICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gYnkgdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0
IHNpZ25lZCBpbnRlZ2VyDQogICAgKy8vLyAgICBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBhbmQgZ2V0IGZvdXINCiAgICArLy8vICAgIDMy
LWJpdCBwcm9kdWN0cy4gQWRkcyBhZGphY2VudCBwYWlycyBvZiBwcm9kdWN0cyB0byBnZXQgdHdv
IDMyLWJpdCBzdW1zLg0KICAgICsvLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlc2UgdHdv
IHN1bXMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCiAgICArLy8vICAgIHZlY3Rv
ciBvZiBbMiB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gICAgRm9yIGV4YW1wbGUsIGJpdHMg
WzE1OjBdIG9mIGJvdGggcGFyYW1ldGVycyBhcmUgbXVsdGlwbGllZCwgYml0cyBbMzE6MTZdDQog
ICAgKy8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMgYXJlIG11bHRpcGxpZWQsIGFuZCB0aGUgc3Vt
IG9mIGJvdGggcmVzdWx0cyBpcyB3cml0dGVuDQogICAgKy8vLyAgICB0byBiaXRzIFszMTowXSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFBNQUREV0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19tMQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0K
ICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTE2XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBzdW1zIG9mDQogICAgKy8vLyAgICBwcm9kdWN0
cyBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWFkZF9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIp
DQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG1hZGR3ZCgo
X192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBNdWx0
aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0
LWJpdA0KICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBjb3Jy
ZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAgZWxlbWVudCBvZiB0
aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIFBhY2tzIHRoZSB1
cHBlcg0KICAgICsvLy8gICAgMTYgYml0cyBvZiB0aGUgMzItYml0IHByb2R1Y3RzIGludG8gYSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNVUxIVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8gXHJldHVybnMgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHVwcGVyIDE2
IGJpdHMNCiAgICArLy8vICAgIG9mIHRoZSBwcm9kdWN0cyBvZiBib3RoIHBhcmFtZXRlcnMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
bXVsaGlfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1
cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxodygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19t
Mik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBNdWx0aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25l
ZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdA0KICAgICsvLy8gICAgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQg
aW50ZWdlcg0KICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uIFBhY2tzIHRoZSBsb3dlcg0KICAgICsvLy8gICAgMTYgYml0
cyBvZiB0aGUgMzItYml0IHByb2R1Y3RzIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFBNVUxMVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20x
DQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAg
Ky8vLyBccGFyYW0gX19tMg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDE2IGJpdHMNCiAgICArLy8vICAgIG9mIHRo
ZSBwcm9kdWN0cyBvZiBib3RoIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbXVsbG9fcGkxNihfX202NCBfX20xLCBf
X202NCBfX20yKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BtdWxsdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRo
ZSBmaXJzdA0KICAgICsvLy8gICAgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0sIGJ5IHRoZSBudW1iZXINCiAgICArLy8vICAgIG9mIGJpdHMg
c3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRl
Z2VyLiBUaGUNCiAgICArLy8vICAgIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBh
Y2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGkx
Nl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTFcg
PC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLyBccGFy
YW0gX19jb3VudA0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0
ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVk
DQogICAgKy8vLyAgICB2YWx1ZXMuIElmIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0
byAxNiwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gYWxsDQogICAgKy8vLyAgICAwLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NsbF9waTE2
KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18N
CiAgICArICAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzbGx3ICgoX192NGhpKV9f
bSwgKF9fdjRoaSlfX2NvdW50KTsNCiAgICArI2Vsc2UNCiAgICArICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHNsbHcoKF9fdjRoaSlfX20sIF9fY291bnQpOw0KICAgICsjZW5kaWYN
CiAgICArfQ0KICAgICsNCiAgICArLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0IHNpZ25lZCBp
bnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlcg0KICAgICsvLy8gICAgdmVjdG9yIG9m
IFs0IHggaTE2XSBieSB0aGUgbnVtYmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGlu
dGVnZXIuDQogICAgKy8vLyAgICBUaGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgcmVzdWx0cyBhcmUg
cGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCiAgICArLy8vICAgIG9mIFs0IHgg
aTE2XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU0xM
VyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20NCiAgICAr
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8vIFxw
YXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLg0KICAgICsv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5p
bmcgdGhlIGxlZnQtc2hpZnRlZA0KICAgICsvLy8gICAgdmFsdWVzLiBJZiBcYSBfX2NvdW50IGlz
IGdyZWF0ZXIgb3IgZXF1YWwgdG8gMTYsIHRoZSByZXN1bHQgaXMgc2V0IHRvIGFsbA0KICAgICsv
Ly8gICAgMC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9zbGxpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkNCiAgICArew0KICAg
ICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xsd2koKF9fdjRoaSlfX20sIF9f
Y291bnQpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTGVmdC1zaGlmdHMgZWFjaCAzMi1iaXQg
c2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QNCiAgICArLy8vICAgIHBhcmFtZXRl
ciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCBieSB0aGUg
bnVtYmVyDQogICAgKy8vLyAgICBvZiBiaXRzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFt
ZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4gVGhlDQogICAgKy8vLyAgICBsb3dlciAz
MiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZg0KICAgICsvLy8gICAgWzIgeCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fbQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLg0KICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8vICAgIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2Vy
Lg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJd
IGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZA0KICAgICsvLy8gICAgdmFsdWVzLiBJZiBcYSBf
X2NvdW50IGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMzIsIHRoZSByZXN1bHQgaXMgc2V0IHRvIGFs
bA0KICAgICsvLy8gICAgMC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV9zbGxfcGkzMihfX202NCBfX20sIF9fbTY0IF9fY291bnQpDQog
ICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNsbGQoKF9fdjJz
aSlfX20sIChfX3Yyc2kpX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMZWZ0LXNo
aWZ0cyBlYWNoIDMyLWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVn
ZXINCiAgICArLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBiaXRz
IHNwZWNpZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLg0KICAgICsvLy8gICAgVGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVj
dG9yDQogICAgKy8vLyAgICBvZiBbMiB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTEQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMiB4IGkzMl0uDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsvLy8gICAgQSAzMi1i
aXQgaW50ZWdlciB2YWx1ZS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQNCiAgICArLy8vICAg
IHZhbHVlcy4gSWYgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDMyLCB0aGUgcmVz
dWx0IGlzIHNldCB0byBhbGwNCiAgICArLy8vICAgIDAuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc2xsaV9waTMyKF9fbTY0IF9fbSwg
aW50IF9fY291bnQpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lh
MzJfcHNsbGRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IExlZnQtc2hpZnRzIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYnkgdGhlIG51
bWJlciBvZiBiaXRzDQogICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCA2NC1iaXQg
aW50ZWdlciBwYXJhbWV0ZXIuIFRoZSBsb3dlciA2NCBiaXRzIG9mDQogICAgKy8vLyAgICByZXN1
bHQgYXJlIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFBTTExRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fbQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMg
YSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQt
Yml0IGludGVnZXIuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWUuIElmDQogICAgKy8vLyAgICAgXGEgX19j
b3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDY0LCB0aGUgcmVzdWx0IGlzIHNldCB0byAwLg0K
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X3NsbF9zaTY0KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCiAgICArew0KICAgICsgICAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xscSgoX192MWRpKV9fbSwgKF9fdjFkaSlfX2Nv
dW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIExlZnQtc2hpZnRzIHRoZSBmaXJzdCBwYXJh
bWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIsIGJ5IHRoZQ0KICAgICsvLy8gICAgbnVt
YmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBh
IDMyLWJpdA0KICAgICsvLy8gICAgaW50ZWdlci4gVGhlIGxvd2VyIDY0IGJpdHMgb2YgcmVzdWx0
IGFyZSByZXR1cm5lZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X20NCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEg
c2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8v
ICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWUuIElmDQogICAg
Ky8vLyAgICAgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDY0LCB0aGUgcmVzdWx0
IGlzIHNldCB0byAwLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX3NsbGlfc2k2NChfX202NCBfX20sIGludCBfX2NvdW50KQ0KICAgICt7
DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzbGxxaSgoX192MWRpKV9f
bSwgX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAx
Ni1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIsDQogICAgKy8vLyAg
ICB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0sIGJ5IHRoZSBu
dW1iZXIgb2YgYml0cw0KICAgICsvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1l
dGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLg0KICAgICsvLy8NCiAgICArLy8vICAgIEhp
Z2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0aWFs
IHZhbHVlIG9mIGVhY2gNCiAgICArLy8vICAgIDE2LWJpdCBlbGVtZW50LiBUaGUgMTYtYml0IHJl
c3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCiAgICArLy8vICAgIHZlY3Rv
ciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUFNSQVcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19tDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQog
ICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQogICAgKy8vLyBccmV0
dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUg
cmlnaHQtc2hpZnRlZA0KICAgICsvLy8gICAgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NyYV9waTE2KF9fbTY0IF9fbSwg
X19tNjQgX19jb3VudCkNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wc3JhdygoX192NGhpKV9fbSwgKF9fdjRoaSlfX2NvdW50KTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3INCiAgICArLy8vICAgIG9mIFs0IHggaTE2XSBieSB0aGUgbnVt
YmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQogICAgKy8vLw0KICAg
ICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbiBiaXQgb2Yg
dGhlIGluaXRpYWwgdmFsdWUgb2YgZWFjaA0KICAgICsvLy8gICAgMTYtYml0IGVsZW1lbnQuIFRo
ZSAxNi1iaXQgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlcg0KICAgICsv
Ly8gICAgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQU1JBVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX20NCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XS4NCiAgICArLy8vIFxwYXJhbSBfX2NvdW50DQogICAgKy8vLyAgICBBIDMyLWJpdCBp
bnRlZ2VyIHZhbHVlLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQNCiAgICArLy8vICAgIHZh
bHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9zcmFpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkNCiAgICArew0KICAgICsg
ICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Jhd2koKF9fdjRoaSlfX20sIF9fY291
bnQpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUmlnaHQtc2hpZnRzIGVhY2ggMzItYml0IGlu
dGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLA0KICAgICsvLy8gICAgd2hpY2gg
aXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCBieSB0aGUgbnVtYmVyIG9m
IGJpdHMNCiAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hp
Y2ggaXMgYSA2NC1iaXQgaW50ZWdlci4NCiAgICArLy8vDQogICAgKy8vLyAgICBIaWdoLW9yZGVy
IGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZSBv
ZiBlYWNoDQogICAgKy8vLyAgICAzMi1iaXQgZWxlbWVudC4gVGhlIDMyLWJpdCByZXN1bHRzIGFy
ZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzIg
eCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBT
UkFEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fbQ0KICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KICAgICsvLy8g
XHBhcmFtIF9fY291bnQNCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVy
cHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KICAgICsvLy8gXHJldHVybnMgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNo
aWZ0ZWQNCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zcmFfcGkzMihfX202NCBfX20sIF9fbTY0IF9f
Y291bnQpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNy
YWQoKF9fdjJzaSlfX20sIChfX3Yyc2kpX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbMiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBi
aXRzIHNwZWNpZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLg0KICAgICsvLy8NCiAgICArLy8vICAg
IEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0
aWFsIHZhbHVlIG9mIGVhY2gNCiAgICArLy8vICAgIDMyLWJpdCBlbGVtZW50LiBUaGUgMzItYml0
IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCiAgICArLy8vICAgIHZl
Y3RvciBvZiBbMiB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19tDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0u
DQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2
YWx1ZS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHgg
aTMyXSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
c3JhaV9waTMyKF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQogICAgK3sNCiAgICArICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcHNyYWRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVs
ZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciwNCiAgICArLy8vICAgIHdoaWNoIGlzIGEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSwgYnkgdGhlIG51bWJlciBvZiBiaXRzDQog
ICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEg
NjQtYml0IGludGVnZXIuDQogICAgKy8vLw0KICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFy
ZSBjbGVhcmVkLiBUaGUgMTYtYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQog
ICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFcgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0
IGludGVnZXIuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
NCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KICAgICsvLy8gICAgdmFsdWVz
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3NybF9waTE2KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCiAgICArew0KICAgICsgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsdygoX192NGhpKV9fbSwgKF9fdjRoaSlf
X2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJp
dCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCiAgICArLy8vICAg
IG9mIFs0IHggaTE2XSBieSB0aGUgbnVtYmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0
IGludGVnZXIuDQogICAgKy8vLw0KICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVh
cmVkLiBUaGUgMTYtYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQogICAgKy8v
LyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0KICAgICsvLy8gICAgQSAz
Mi1iaXQgaW50ZWdlciB2YWx1ZS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkDQogICAgKy8v
LyAgICB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fc3JsaV9waTE2KF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQogICAgK3sN
CiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNybHdpKChfX3Y0aGkpX19t
LCBfX2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMy
LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciwNCiAgICArLy8vICAg
IHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSwgYnkgdGhlIG51
bWJlciBvZiBiaXRzDQogICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0
ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIuDQogICAgKy8vLw0KICAgICsvLy8gICAgSGln
aC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMzItYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBp
bnRvIGEgNjQtYml0DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTEQgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQogICAgKy8vLyBccGFyYW0gX19j
b3VudA0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMg
YSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KICAg
ICsvLy8gICAgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX3NybF9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCiAg
ICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsZCgoX192MnNp
KV9fbSwgKF9fdjJzaSlfX2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0LXNo
aWZ0cyBlYWNoIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3INCiAgICArLy8vICAgIG9mIFsyIHggaTMyXSBieSB0aGUgbnVtYmVyIG9mIGJpdHMgc3BlY2lm
aWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQogICAgKy8vLw0KICAgICsvLy8gICAgSGlnaC1vcmRl
ciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMzItYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEg
NjQtYml0DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTEQgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tDQogICAgKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQogICAgKy8vLyBccGFyYW0gX19jb3VudA0K
ICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCiAgICArLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSByaWdodC1z
aGlmdGVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3JsaV9waTMyKF9fbTY0IF9fbSwgaW50IF9f
Y291bnQpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNy
bGRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJpZ2h0
LXNoaWZ0cyB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgcGFyYW1ldGVyIGJ5IHRoZSBudW1iZXIg
b2YgYml0cw0KICAgICsvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgNjQtYml0IGludGVn
ZXIgcGFyYW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUg
Y2xlYXJlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQ
U1JMUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20NCiAg
ICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xl
IDY0LWJpdCBpbnRlZ2VyLg0KICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRl
Z2VyLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZS4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zcmxfc2k2NChfX202NCBfX20sIF9fbTY0IF9f
Y291bnQpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNy
bHEoKF9fdjFkaSlfX20sIChfX3YxZGkpX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8v
LyBSaWdodC1zaGlmdHMgdGhlIGZpcnN0IHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50
ZWdlciwgYnkgdGhlDQogICAgKy8vLyAgICBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgdGhl
IHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgMzItYml0DQogICAgKy8vLyAgICBpbnRlZ2Vy
Lg0KICAgICsvLy8NCiAgICArLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JMUSA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX20NCiAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRl
Z2VyLg0KICAgICsvLy8gXHBhcmFtIF9fY291bnQNCiAgICArLy8vICAgIEEgMzItYml0IGludGVn
ZXIgdmFsdWUuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NybGlfc2k2NChfX202NCBfX20sIGlu
dCBfX2NvdW50KQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BzcmxxaSgoX192MWRpKV9fbSwgX19jb3VudCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBQ
ZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBTkQgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tMQ0KICAgICsvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiBib3RoDQogICAgKy8vLyAg
ICBwYXJhbWV0ZXJzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCiAgICArX21tX2FuZF9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQogICAgK3sN
CiAgICArICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5kKF9fbTEsIF9fbTIpOw0KICAgICt9
DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE5PVCBvZiB0aGUgZmlyc3QgNjQt
Yml0IGludGVnZXIgdmVjdG9yLCBhbmQgdGhlbg0KICAgICsvLy8gICAgcGVyZm9ybXMgYSBiaXR3
aXNlIEFORCBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBhbmQgdGhlIHNlY29uZCA2NC1iaXQN
CiAgICArLy8vICAgIGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFBBTkROIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLiBU
aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHBhcmFtZXRlciBpcyB1c2VkDQogICAgKy8vLyAg
ICBpbiB0aGUgYml0d2lzZSBBTkQuDQogICAgKy8vLyBccGFyYW0gX19tMg0KICAgICsvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUgc2Vjb25kDQogICAg
Ky8vLyAgICBwYXJhbWV0ZXIgYW5kIHRoZSBvbmUncyBjb21wbGVtZW50IG9mIHRoZSBmaXJzdCBw
YXJhbWV0ZXIuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fYW5kbm90X3NpNjQoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0K
ICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5k
biAoX19tMSwgX19tMik7DQogICAgKyNlbHNlDQogICAgKyAgICByZXR1cm4gX19idWlsdGluX2lh
MzJfcGFuZG4oKF9fdjFkaSlfX20xLCAoX192MWRpKV9fbTIpOw0KICAgICsjZW5kaWYNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gNjQtYml0IGlu
dGVnZXIgdmVjdG9ycy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBQT1IgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19t
MQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0g
X19tMg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccmV0
dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIE9SIG9m
IGJvdGgNCiAgICArLy8vICAgIHBhcmFtZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fb3Jfc2k2NChfX202NCBfX20xLCBfX202
NCBfX20yKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgICAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX3BvcihfX20xLCBfX20yKTsNCiAgICArI2Vsc2UNCiAgICArICAgIHJldHVy
biBfX2J1aWx0aW5faWEzMl9wb3IoKF9fdjFkaSlfX20xLCAoX192MWRpKV9fbTIpOw0KICAgICsj
ZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBleGNsdXNp
dmUgT1Igb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFhPUiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX20xDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3Rvci4NCiAgICArLy8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9mIGJvdGgNCiAgICArLy8vICAgIHBhcmFt
ZXRlcnMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW1feG9yX3NpNjQoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsg
ICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B4b3IgKF9fbTEsIF9fbTIpOw0KICAgICt9DQogICAg
Kw0KICAgICsvLy8gQ29tcGFyZXMgdGhlIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCiAgICArLy8vICAgIFs4IHggaThdIHRvIGRldGVybWlu
ZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGVxdWFsIHRvIHRoZQ0KICAg
ICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KICAg
ICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhG
RiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQQ01QRVFCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
bTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KICAg
ICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs4IHggaThdLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpOF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4N
CiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9jbXBlcV9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCiAgICArew0KICAgICsgICAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wY21wZXFiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlf
X20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSAxNi1iaXQgaW50ZWdl
ciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KICAgICsvLy8gICAg
WzQgeCBpMTZdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9y
IGlzIGVxdWFsIHRvIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRo
ZSBzZWNvbmQgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlp
ZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBDTVBFUVcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19tMQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBjb21wYXJp
c29uDQogICAgKy8vLyAgICByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGVxX3BpMTYoX19tNjQgX19tMSwgX19tNjQg
X19tMikNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wY21w
ZXF3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IENvbXBhcmVzIHRoZSAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVn
ZXIgdmVjdG9ycyBvZg0KICAgICsvLy8gICAgWzIgeCBpMzJdIHRvIGRldGVybWluZSBpZiB0aGUg
ZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGVxdWFsIHRvIHRoZQ0KICAgICsvLy8gICAg
Y29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KICAgICsvLy8NCiAg
ICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGRkZGRiBm
b3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQ
Q01QRVFEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fbTEN
CiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCiAgICAr
Ly8vIFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
MiB4IGkzMl0uDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
MiB4IGkzMl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4N
CiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9jbXBlcV9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQogICAgK3sNCiAgICArICAgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGVxZCgoX192MnNpKV9fbTEsIChfX3Yyc2kp
X19tMik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgOC1iaXQgaW50ZWdl
ciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KICAgICsvLy8gICAg
WzggeCBpOF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBlbGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3Ig
aXMgZ3JlYXRlciB0aGFuDQogICAgKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9m
IHRoZSBzZWNvbmQgdmVjdG9yLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBjb21wYXJpc29u
IHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRiBmb3IgdHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QR1RCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIF9fbTENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaThdLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KICAgICsvLy8gXHJldHVybnMgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNv
bg0KICAgICsvLy8gICAgcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBndF9waTgoX19tNjQgX19tMSwgX19tNjQgX19t
MikNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wY21wZ3Ri
KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENv
bXBhcmVzIHRoZSAxNi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIg
dmVjdG9ycyBvZg0KICAgICsvLy8gICAgWzQgeCBpMTZdIHRvIGRldGVybWluZSBpZiB0aGUgZWxl
bWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGdyZWF0ZXIgdGhhbg0KICAgICsvLy8gICAgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4NCiAgICArLy8vDQog
ICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRiBmb3Ig
dHJ1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01Q
R1RXIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fbTENCiAg
ICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCiAgICArLy8v
IFxwYXJhbSBfX20yDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0uDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgcmVzdWx0cy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9j
bXBndF9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQogICAgK3sNCiAgICArICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGd0dygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19t
Mik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgMzItYml0IGludGVnZXIg
ZWxlbWVudHMgb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCiAgICArLy8vICAgIFsy
IHggaTMyXSB0byBkZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBp
cyBncmVhdGVyIHRoYW4NCiAgICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2Yg
dGhlIHNlY29uZCB2ZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24g
eWllbGRzIDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGIGZvciB0cnVlLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBDTVBHVEQgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19tMQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KICAgICsvLy8gXHBhcmFtIF9fbTINCiAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCiAgICArLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBj
b21wYXJpc29uDQogICAgKy8vLyAgICByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGd0X3BpMzIoX19tNjQgX19tMSwg
X19tNjQgX19tMikNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEz
Ml9wY21wZ3RkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCiAgICArfQ0KICAgICsNCiAg
ICArLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgdG8g
emVyby4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQWE9S
IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlh
bGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIHdpdGggYWxsIGVsZW1lbnRzIHNldCB0byB6ZXJv
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3NldHplcm9fc2k2NCh2b2lkKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gX19leHRlbnNp
b25fXyAoX19tNjQpeyAwTEwgfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMg
YSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkDQog
ICAgKy8vLyAgICAzMi1iaXQgaW50ZWdlciB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNp
ZmljDQogICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19pMQ0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQuDQogICAgKy8v
LyBccGFyYW0gX19pMA0KICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQu
DQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW1fc2V0X3BpMzIoaW50IF9faTEsIGludCBfX2kwKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3ZlY19pbml0X3Yyc2koX19pMCwgX19pMSk7DQogICAgK30N
CiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRp
YWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KICAgICsvLy8gICAgMTYtYml0IGludGVnZXIgdmFs
dWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRv
ZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fczMNCiAgICArLy8vICAgIEEgMTYtYml0IGlu
dGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fczINCiAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHBhcmFtIF9fczENCiAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFt
IF9fczANCiAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0
aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc2V0X3BpMTYoc2hvcnQgX19zMywgc2hv
cnQgX19zMiwgc2hvcnQgX19zMSwgc2hvcnQgX19zMCkNCiAgICArew0KICAgICsgICAgcmV0dXJu
IChfX202NClfX2J1aWx0aW5faWEzMl92ZWNfaW5pdF92NGhpKF9fczAsIF9fczEsIF9fczIsIF9f
czMpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQNCiAgICArLy8vICAgIDgtYml0
IGludGVnZXIgdmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVu
Y3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYjcNCiAgICArLy8vICAg
IEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjU2XSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjYNCiAgICArLy8vICAgIEFuIDgtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVz
dWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjUNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KICAg
ICsvLy8gXHBhcmFtIF9fYjQNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBh
cmFtIF9fYjMNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjIN
CiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjENCiAgICArLy8v
ICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1Ojhd
IG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX19iMA0KICAgICsvLy8gICAgQW4gOC1i
aXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBvZiB0aGUgcmVz
dWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVj
dG9yLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX3NldF9waTgoY2hhciBfX2I3LCBjaGFyIF9fYjYsIGNoYXIgX19iNSwgY2hhciBfX2I0
LCBjaGFyIF9fYjMsIGNoYXIgX19iMiwNCiAgICArICAgICAgICAgICAgY2hhciBfX2IxLCBjaGFy
IF9fYjApDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfdmVj
X2luaXRfdjhxaShfX2IwLCBfX2IxLCBfX2IyLCBfX2IzLA0KICAgICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYjQsIF9fYjUsIF9fYjYsIF9fYjcpOw0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0sIHdpdGggZWFjaCBvZiB0aGUNCiAgICArLy8vICAgIDMyLWJpdCBpbnRl
Z2VyIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlcg0K
ICAgICsvLy8gICAgdmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBm
dW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQogICAgKy8vLyAg
ICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19pDQogICAgKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBl
bGVtZW50IG9mIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zZXQxX3Bp
MzIoaW50IF9faSkNCiAgICArew0KICAgICsgICAgcmV0dXJuIF9tbV9zZXRfcGkzMihfX2ksIF9f
aSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XSwgd2l0aCBlYWNoIG9mIHRoZQ0KICAgICsvLy8gICAgMTYtYml0
IGludGVnZXIgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRl
Z2VyDQogICAgKy8vLyAgICB2YWx1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGls
aXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICAr
Ly8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3cNCiAgICAr
Ly8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVj
dG9yIGVsZW1lbnQgb2YgdGhlDQogICAgKy8vLyAgICByZXN1bHQuDQogICAgKy8vLyBccmV0dXJu
cyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3Nl
dDFfcGkxNihzaG9ydCBfX3cpDQogICAgK3sNCiAgICArICAgIHJldHVybiBfbW1fc2V0X3BpMTYo
X193LCBfX3csIF9fdywgX193KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMg
YSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0sIHdpdGggZWFjaCBvZiB0aGUNCiAg
ICArLy8vICAgIDgtYml0IGludGVnZXIgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lm
aWVkIDgtYml0IGludGVnZXIgdmFsdWUuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRp
bGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQogICAg
Ky8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZl
Y3RvciBlbGVtZW50IG9mIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3Nl
dDFfcGk4KGNoYXIgX19iKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gX21tX3NldF9waTgoX19i
LCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IpOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4g
cmV2ZXJzZSBvcmRlciB3aXRoDQogICAgKy8vLyAgICB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRl
Z2VyIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9u
IGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCiAgICArLy8vICAgIGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2kwDQogICAgKy8vLyAgICBBIDMy
LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgMzIgYml0cyBv
ZiB0aGUNCiAgICArLy8vICAgIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2kxDQogICAgKy8v
LyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIg
MzIgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFu
IGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zZXRyX3BpMzIoaW50IF9faTAs
IGludCBfX2kxKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gX21tX3NldF9waTMyKF9faTEsIF9f
aTApOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQogICAgKy8vLyAgICB0
aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ2VyIHZhbHVlcy4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3Bl
Y2lmaWMNCiAgICArLy8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX3cwDQogICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzENCiAg
ICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzINCiAgICArLy8vICAg
IEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjMyXSBv
ZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fdzMNCiAgICArLy8vICAgIEEgMTYtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVz
dWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVj
dG9yLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX3NldHJfcGkxNihzaG9ydCBfX3cwLCBzaG9ydCBfX3cxLCBzaG9ydCBfX3cyLCBzaG9y
dCBfX3czKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gX21tX3NldF9waTE2KF9fdzMsIF9fdzIs
IF9fdzEsIF9fdzApOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQogICAg
Ky8vLyAgICB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVnZXIgdmFsdWVzLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQg
dG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYjANCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBf
X2IxDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjINCiAgICAr
Ly8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIz
OjE2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjMNCiAgICArLy8vICAgIEFu
IDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0
aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9fYjQNCiAgICArLy8vICAgIEFuIDgtYml0IGlu
dGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIF9fYjUNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHBhcmFtIF9fYjYNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFt
IF9fYjcNCiAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQW4gaW5p
dGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NldHJfcGk4KGNoYXIgX19iMCwgY2hh
ciBfX2IxLCBjaGFyIF9fYjIsIGNoYXIgX19iMywgY2hhciBfX2I0LCBjaGFyIF9fYjUsDQogICAg
KyAgICAgICAgICAgICBjaGFyIF9fYjYsIGNoYXIgX19iNykNCiAgICArew0KICAgICsgICAgcmV0
dXJuIF9tbV9zZXRfcGk4KF9fYjcsIF9fYjYsIF9fYjUsIF9fYjQsIF9fYjMsIF9fYjIsIF9fYjEs
IF9fYjApOw0KICAgICt9DQogICAgKw0KICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgKw0KICAgICsvKiBBbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5LiAqLw0KICAgICsjZGVmaW5l
IF9tX2VtcHR5IF9tbV9lbXB0eQ0KICAgICsjZGVmaW5lIF9tX2Zyb21faW50IF9tbV9jdnRzaTMy
X3NpNjQNCiAgICArI2RlZmluZSBfbV9mcm9tX2ludDY0IF9tbV9jdnRzaTY0X202NA0KICAgICsj
ZGVmaW5lIF9tX3RvX2ludCBfbW1fY3Z0c2k2NF9zaTMyDQogICAgKyNkZWZpbmUgX21fdG9faW50
NjQgX21tX2N2dG02NF9zaTY0DQogICAgKyNkZWZpbmUgX21fcGFja3Nzd2IgX21tX3BhY2tzX3Bp
MTYNCiAgICArI2RlZmluZSBfbV9wYWNrc3NkdyBfbW1fcGFja3NfcGkzMg0KICAgICsjZGVmaW5l
IF9tX3BhY2t1c3diIF9tbV9wYWNrc19wdTE2DQogICAgKyNkZWZpbmUgX21fcHVucGNraGJ3IF9t
bV91bnBhY2toaV9waTgNCiAgICArI2RlZmluZSBfbV9wdW5wY2tod2QgX21tX3VucGFja2hpX3Bp
MTYNCiAgICArI2RlZmluZSBfbV9wdW5wY2toZHEgX21tX3VucGFja2hpX3BpMzINCiAgICArI2Rl
ZmluZSBfbV9wdW5wY2tsYncgX21tX3VucGFja2xvX3BpOA0KICAgICsjZGVmaW5lIF9tX3B1bnBj
a2x3ZCBfbW1fdW5wYWNrbG9fcGkxNg0KICAgICsjZGVmaW5lIF9tX3B1bnBja2xkcSBfbW1fdW5w
YWNrbG9fcGkzMg0KICAgICsjZGVmaW5lIF9tX3BhZGRiIF9tbV9hZGRfcGk4DQogICAgKyNkZWZp
bmUgX21fcGFkZHcgX21tX2FkZF9waTE2DQogICAgKyNkZWZpbmUgX21fcGFkZGQgX21tX2FkZF9w
aTMyDQogICAgKyNkZWZpbmUgX21fcGFkZHNiIF9tbV9hZGRzX3BpOA0KICAgICsjZGVmaW5lIF9t
X3BhZGRzdyBfbW1fYWRkc19waTE2DQogICAgKyNkZWZpbmUgX21fcGFkZHVzYiBfbW1fYWRkc19w
dTgNCiAgICArI2RlZmluZSBfbV9wYWRkdXN3IF9tbV9hZGRzX3B1MTYNCiAgICArI2RlZmluZSBf
bV9wc3ViYiBfbW1fc3ViX3BpOA0KICAgICsjZGVmaW5lIF9tX3BzdWJ3IF9tbV9zdWJfcGkxNg0K
ICAgICsjZGVmaW5lIF9tX3BzdWJkIF9tbV9zdWJfcGkzMg0KICAgICsjZGVmaW5lIF9tX3BzdWJz
YiBfbW1fc3Vic19waTgNCiAgICArI2RlZmluZSBfbV9wc3Vic3cgX21tX3N1YnNfcGkxNg0KICAg
ICsjZGVmaW5lIF9tX3BzdWJ1c2IgX21tX3N1YnNfcHU4DQogICAgKyNkZWZpbmUgX21fcHN1YnVz
dyBfbW1fc3Vic19wdTE2DQogICAgKyNkZWZpbmUgX21fcG1hZGR3ZCBfbW1fbWFkZF9waTE2DQog
ICAgKyNkZWZpbmUgX21fcG11bGh3IF9tbV9tdWxoaV9waTE2DQogICAgKyNkZWZpbmUgX21fcG11
bGx3IF9tbV9tdWxsb19waTE2DQogICAgKyNkZWZpbmUgX21fcHNsbHcgX21tX3NsbF9waTE2DQog
ICAgKyNkZWZpbmUgX21fcHNsbHdpIF9tbV9zbGxpX3BpMTYNCiAgICArI2RlZmluZSBfbV9wc2xs
ZCBfbW1fc2xsX3BpMzINCiAgICArI2RlZmluZSBfbV9wc2xsZGkgX21tX3NsbGlfcGkzMg0KICAg
ICsjZGVmaW5lIF9tX3BzbGxxIF9tbV9zbGxfc2k2NA0KICAgICsjZGVmaW5lIF9tX3BzbGxxaSBf
bW1fc2xsaV9zaTY0DQogICAgKyNkZWZpbmUgX21fcHNyYXcgX21tX3NyYV9waTE2DQogICAgKyNk
ZWZpbmUgX21fcHNyYXdpIF9tbV9zcmFpX3BpMTYNCiAgICArI2RlZmluZSBfbV9wc3JhZCBfbW1f
c3JhX3BpMzINCiAgICArI2RlZmluZSBfbV9wc3JhZGkgX21tX3NyYWlfcGkzMg0KICAgICsjZGVm
aW5lIF9tX3Bzcmx3IF9tbV9zcmxfcGkxNg0KICAgICsjZGVmaW5lIF9tX3Bzcmx3aSBfbW1fc3Js
aV9waTE2DQogICAgKyNkZWZpbmUgX21fcHNybGQgX21tX3NybF9waTMyDQogICAgKyNkZWZpbmUg
X21fcHNybGRpIF9tbV9zcmxpX3BpMzINCiAgICArI2RlZmluZSBfbV9wc3JscSBfbW1fc3JsX3Np
NjQNCiAgICArI2RlZmluZSBfbV9wc3JscWkgX21tX3NybGlfc2k2NA0KICAgICsjZGVmaW5lIF9t
X3BhbmQgX21tX2FuZF9zaTY0DQogICAgKyNkZWZpbmUgX21fcGFuZG4gX21tX2FuZG5vdF9zaTY0
DQogICAgKyNkZWZpbmUgX21fcG9yIF9tbV9vcl9zaTY0DQogICAgKyNkZWZpbmUgX21fcHhvciBf
bW1feG9yX3NpNjQNCiAgICArI2RlZmluZSBfbV9wY21wZXFiIF9tbV9jbXBlcV9waTgNCiAgICAr
I2RlZmluZSBfbV9wY21wZXF3IF9tbV9jbXBlcV9waTE2DQogICAgKyNkZWZpbmUgX21fcGNtcGVx
ZCBfbW1fY21wZXFfcGkzMg0KICAgICsjZGVmaW5lIF9tX3BjbXBndGIgX21tX2NtcGd0X3BpOA0K
ICAgICsjZGVmaW5lIF9tX3BjbXBndHcgX21tX2NtcGd0X3BpMTYNCiAgICArI2RlZmluZSBfbV9w
Y21wZ3RkIF9tbV9jbXBndF9waTMyDQogICAgKw0KICAgICsjZW5kaWYgLyogX19NTUlOVFJJTl9I
ICovDQogICAgKw0KICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL25tbWludHJpbi5oIGIvaW5jbHVk
ZS9ubW1pbnRyaW4uaA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAw
MC4uMzQ4ZmI4Yw0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9pbmNsdWRlL25tbWludHJp
bi5oDQogICAgQEAgLTAsMCArMSwzMCBAQA0KICAgICsvKj09PS0tLS0gbm1taW50cmluLmggLSBT
U0U0IGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQog
ICAgKyAqDQogICAgKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh
cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCiAgICArICogb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwNCiAgICArICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KICAgICsgKiB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
ciBzZWxsDQogICAgKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KICAgICsgKiBmdXJuaXNoZWQgdG8gZG8gc28s
IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAgICsgKg0KICAgICsgKiBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZSBpbmNsdWRlZCBpbg0KICAgICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4NCiAgICArICoNCiAgICArICogVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IN
CiAgICArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQogICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KICAg
ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSDQogICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQogICAgKyAq
IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig
T1RIRVIgREVBTElOR1MgSU4NCiAgICArICogVEhFIFNPRlRXQVJFLg0KICAgICsgKg0KICAgICsg
Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPT09DQogICAgKyAqLw0KICAgICsNCiAgICArI2lmbmRlZiBfX05N
TUlOVFJJTl9IDQogICAgKyNkZWZpbmUgX19OTU1JTlRSSU5fSA0KICAgICsNCiAgICArLyogVG8g
bWF0Y2ggZXhwZWN0YXRpb25zIG9mIGdjYyB3ZSBwdXQgdGhlIHNzZTQuMiBkZWZpbml0aW9ucyBp
bnRvIHNtbWludHJpbi5oLA0KICAgICsgICBqdXN0IGluY2x1ZGUgaXQgbm93IHRoZW4uICAqLw0K
ICAgICsjaW5jbHVkZSA8c21taW50cmluLmg+DQogICAgKyNlbmRpZiAvKiBfX05NTUlOVFJJTl9I
ICovDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvcG1taW50cmluLmggYi9pbmNsdWRlL3BtbWlu
dHJpbi5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi4yNGI3
ZDY4DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2luY2x1ZGUvcG1taW50cmluLmgNCiAg
ICBAQCAtMCwwICsxLDMyMSBAQA0KICAgICsvKj09PS0tLS0gcG1taW50cmluLmggLSBTU0UzIGlu
dHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQogICAgKyAq
DQogICAgKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCiAgICArICogb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwNCiAgICArICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KICAgICsgKiB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs
DQogICAgKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KICAgICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAgICsgKg0KICAgICsgKiBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbg0KICAgICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4NCiAgICArICoNCiAgICArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCiAgICAr
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksDQogICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KICAgICsgKiBB
VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B
R0VTIE9SIE9USEVSDQogICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQogICAgKyAqIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4NCiAgICArICogVEhFIFNPRlRXQVJFLg0KICAgICsgKg0KICAgICsgKj09PS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPT09DQogICAgKyAqLw0KICAgICsNCiAgICArI2lmbmRlZiBfX1BNTUlOVFJJ
Tl9IDQogICAgKyNkZWZpbmUgX19QTU1JTlRSSU5fSA0KICAgICsNCiAgICArI2luY2x1ZGUgPGVt
bWludHJpbi5oPg0KICAgICsNCiAgICArLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMg
Zm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KICAgICsjaWZkZWYgX19HTlVDX18N
CiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXA0KICAgICsgIF9fYXR0cmlidXRlX18o
KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KICAg
ICsjZWxzZQ0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBcDQogICAgKyAgX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2Uz
IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KICAgICsjZW5kaWYNCiAgICArDQogICAg
Ky8vLyBMb2FkcyBkYXRhIGZyb20gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0byBlbGVt
ZW50cyBpbiBhIDEyOC1iaXQNCiAgICArLy8vICAgIHZlY3Rvci4NCiAgICArLy8vDQogICAgKy8v
LyAgICBJZiB0aGUgYWRkcmVzcyBvZiB0aGUgZGF0YSBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0
aGUgaW5zdHJ1Y3Rpb24gbWF5DQogICAgKy8vLyAgICByZWFkIHR3byBhZGphY2VudCBhbGlnbmVk
IGJsb2NrcyBvZiBtZW1vcnkgdG8gcmV0cmlldmUgdGhlIHJlcXVlc3RlZA0KICAgICsvLy8gICAg
ZGF0YS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTERE
UVUgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAg
Ky8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
aW50ZWdlciB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2xkZHF1X3NpMTI4KF9fbTEyOGkgY29uc3QgKl9f
cCkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9sZGRxdSgo
Y2hhciBjb25zdCAqKV9fcCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIHRoZSBldmVu
LWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBvZg0K
ICAgICsvLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREU1VCUFMgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxlZnQgc291cmNlIG9w
ZXJhbmQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBhbHRlcm5hdGluZyBzdW1zIGFuZA0KICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90
aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fYWRkc3ViX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sN
CiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfYWRkc3VicHMoKF9fdjRzZilfX2EsIChfX3Y0
c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBh
ZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0KICAgICsvLy8gICAgMTI4
LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZIQUREUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyAg
ICBUaGUgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93
ZXIgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gICAgVGhlIGhvcml6b250
YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhl
DQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzdW1zIG9mDQog
ICAgKy8vLyAgICBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9oYWRkX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfaGFkZHBzKChfX3Y0c2Yp
X19hLCAoX192NHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBIb3Jpem9udGFsbHkg
c3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0K
ICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZIU1VCUFMgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQogICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2
YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXINCiAgICArLy8vICAgIGJpdHMgb2YgdGhlIGRl
c3RpbmF0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KICAgICsvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFs
dWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyDQogICAgKy8vLyAgICBiaXRzIG9mIHRoZSBkZXN0
aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbA0KICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2Yg
Ym90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW1faHN1Yl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hzdWJwcygoX192NHNmKV9fYSwgKF9fdjRz
ZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb2Rk
LWluZGV4ZWQgdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3Rvcg0KICAgICsvLy8gICAgb2YgWzQg
eCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQog
ICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTU9WU0hEVVAgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBcbg0KICAgICsvLy8gICAgQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzEyNzo5Nl0gYW5kIFs5NTo2NF0gb2YNCiAgICArLy8vICAgIHRoZSBkZXN0
aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBhbmQgWzMxOjBdIG9mIHRoZQ0KICAgICsvLy8gICAgZGVz
dGluYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFuZCBkdXBsaWNhdGVkDQogICAgKy8vLyAgICB2YWx1
ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX21vdmVoZHVwX3BzKF9fbTEyOCBfX2EpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05V
Q19fDQogICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNoZHVwICgoX192
NHNmKV9fYSk7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVj
dG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMSwgMSwgMywgMyk7DQogICAgKyNlbmRpZg0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gRHVwbGljYXRlcyBldmVuLWluZGV4ZWQgdmFsdWVzIGZy
b20gYSAxMjgtYml0IHZlY3RvciBvZg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0gdG8gZmxvYXQg
dmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTTERVUCA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gXG4NCiAgICArLy8vICAgIEJpdHMgWzk1OjY0
XSBvZiB0aGUgc291cmNlIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gYW5kIFs5NTo2NF0g
b2YNCiAgICArLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzMx
OjBdIG9mIHRoZSBzb3VyY2UgYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MzJdIGFuZCBbMzE6MF0g
b2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92ZWQgYW5kIGR1cGxp
Y2F0ZWQNCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbW92ZWxkdXBfcHMoX19tMTI4IF9fYSkNCiAg
ICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOCkgX19idWls
dGluX2lhMzJfbW92c2xkdXAgKChfX3Y0c2YpX19hKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1
cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAwLCAw
LCAyLCAyKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIHRoZSBl
dmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBv
Zg0KICAgICsvLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNVQlBEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbGVmdCBzb3Vy
Y2Ugb3BlcmFuZC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5k
Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgYWx0ZXJuYXRpbmcgc3Vtcw0KICAgICsvLy8gICAgYW5kIGRpZmZlcmVuY2Vz
IG9mIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZB
VUxUX0ZOX0FUVFJTDQogICAgK19tbV9hZGRzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FkZHN1YnBkKChfX3YyZGYp
X19hLCAoX192MmRmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBIb3Jpem9udGFsbHkg
YWRkcyB0aGUgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28gMTI4LWJpdA0KICAgICsv
Ly8gICAgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8v
LyAgICBUaGUgaG9yaXpvbnRhbCBzdW0gb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIGxv
d2VyIGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxwYXJh
bSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyAgICBUaGUgaG9yaXpv
bnRhbCBzdW0gb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhl
DQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0K
ICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2hhZGRfcGQoX19tMTI4ZCBfX2EsIF9fbTEy
OGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hhZGRwZCgoX192
MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gSG9yaXpvbnRh
bGx5IHN1YnRyYWN0cyB0aGUgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28gMTI4LWJp
dA0KICAgICsvLy8gICAgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQogICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1ZXMgaXMg
c3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24u
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsv
Ly8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZSBvZiB0aGUgdmFsdWVzIGlzIHN0b3JlZCBp
biB0aGUgdXBwZXIgYml0cyBvZg0KICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgaG9yaXpvbnRhbA0KICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4N
CiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX2hzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIF9fYnVpbHRpbl9pYTMyX2hzdWJwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb25lIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgdG8gZG91YmxlLXByZWNpc2lvbg0KICAgICsvLy8gICAgdmFsdWVzIHN0b3Jl
ZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAg
ICArLy8vIF9fbTEyOGQgX21tX2xvYWRkdXBfcGQoZG91YmxlIGNvbnN0ICpkcCk7DQogICAgKy8v
LyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVk1PVkREVVAgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gZHANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgdG8gYmUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQuDQogICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQNCiAg
ICArLy8vICAgIGR1cGxpY2F0ZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lICAgICAgICBfbW1fbG9h
ZGR1cF9wZChkcCkgICAgICAgIF9tbV9sb2FkMV9wZChkcCkNCiAgICArDQogICAgKy8vLyBNb3Zl
cyBhbmQgZHVwbGljYXRlcyB0aGUgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpbiB0aGUgbG93ZXIg
Yml0cyBvZg0KICAgICsvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8g
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgc3RvcmVkIGluIGENCiAgICArLy8vICAgIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTU9WRERVUCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLiBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzDQogICAgKy8vLyAgICBbMTI3OjY0
XSBhbmQgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFuZA0KICAg
ICsvLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tb3ZlZHVwX3BkKF9fbTEyOGQgX19hKQ0K
ICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiBfbW1fc2h1ZmZsZV9w
ZCAoX19hLCBfX2EsIF9NTV9TSFVGRkxFMiAoMCwwKSk7DQogICAgKyNlbHNlDQogICAgKyAgcmV0
dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwg
MCk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gRXN0YWJsaXNoZXMgYSBs
aW5lYXIgYWRkcmVzcyBtZW1vcnkgcmFuZ2UgdG8gYmUgbW9uaXRvcmVkIGFuZCBwdXRzDQogICAg
Ky8vLyAgICB0aGUgcHJvY2Vzc29yIGluIHRoZSBtb25pdG9yIGV2ZW50IHBlbmRpbmcgc3RhdGUu
IERhdGEgc3RvcmVkIGluIHRoZQ0KICAgICsvLy8gICAgbW9uaXRvcmVkIGFkZHJlc3MgcmFuZ2Ug
Y2F1c2VzIHRoZSBwcm9jZXNzb3IgdG8gZXhpdCB0aGUgcGVuZGluZyBzdGF0ZS4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT05JVE9SIDwvYz4gaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgVGhlIG1l
bW9yeSByYW5nZSB0byBiZSBtb25pdG9yZWQuIFRoZSBzaXplIG9mIHRoZSByYW5nZSBpcyBkZXRl
cm1pbmVkIGJ5DQogICAgKy8vLyAgICBDUFVJRCBmdW5jdGlvbiAwMDAwXzAwMDVoLg0KICAgICsv
Ly8gXHBhcmFtIF9fZXh0ZW5zaW9ucw0KICAgICsvLy8gICAgT3B0aW9uYWwgZXh0ZW5zaW9ucyBm
b3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUuDQogICAgKy8vLyBccGFyYW0gX19oaW50cw0KICAgICsv
Ly8gICAgT3B0aW9uYWwgaGludHMgZm9yIHRoZSBtb25pdG9yaW5nIHN0YXRlLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbW9uaXRvcih2
b2lkIGNvbnN0ICpfX3AsIHVuc2lnbmVkIF9fZXh0ZW5zaW9ucywgdW5zaWduZWQgX19oaW50cykN
CiAgICArew0KICAgICsgIF9fYnVpbHRpbl9pYTMyX21vbml0b3IoKHZvaWQgKilfX3AsIF9fZXh0
ZW5zaW9ucywgX19oaW50cyk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBVc2VkIHdpdGggdGhl
IE1PTklUT1IgaW5zdHJ1Y3Rpb24gdG8gd2FpdCB3aGlsZSB0aGUgcHJvY2Vzc29yIGlzIGluDQog
ICAgKy8vLyAgICB0aGUgbW9uaXRvciBldmVudCBwZW5kaW5nIHN0YXRlLiBEYXRhIHN0b3JlZCBp
biB0aGUgbW9uaXRvcmVkIGFkZHJlc3MNCiAgICArLy8vICAgIHJhbmdlIGNhdXNlcyB0aGUgcHJv
Y2Vzc29yIHRvIGV4aXQgdGhlIHBlbmRpbmcgc3RhdGUuDQogICAgKy8vLw0KICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTVdBSVQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19leHRlbnNpb25zDQogICAgKy8vLyAgICBPcHRpb25hbCBleHRl
bnNpb25zIGZvciB0aGUgbW9uaXRvcmluZyBzdGF0ZSwgd2hpY2ggbWF5IHZhcnkgYnkNCiAgICAr
Ly8vICAgIHByb2Nlc3Nvci4NCiAgICArLy8vIFxwYXJhbSBfX2hpbnRzDQogICAgKy8vLyAgICBP
cHRpb25hbCBoaW50cyBmb3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUsIHdoaWNoIG1heSB2YXJ5IGJ5
IHByb2Nlc3Nvci4NCiAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX213YWl0KHVuc2lnbmVkIF9fZXh0ZW5zaW9ucywgdW5zaWduZWQgX19oaW50
cykNCiAgICArew0KICAgICsgIF9fYnVpbHRpbl9pYTMyX213YWl0KF9fZXh0ZW5zaW9ucywgX19o
aW50cyk7DQogICAgK30NCiAgICArDQogICAgKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArDQogICAgKyNlbmRpZiAvKiBfX1BNTUlOVFJJTl9IICovDQogICAgZGlmZiAtLWdpdCBhL2lu
Y2x1ZGUvcG9wY250aW50cmluLmggYi9pbmNsdWRlL3BvcGNudGludHJpbi5oDQogICAgbmV3IGZp
bGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi5iYmEwNTczDQogICAgLS0tIC9kZXYv
bnVsbA0KICAgICsrKyBiL2luY2x1ZGUvcG9wY250aW50cmluLmgNCiAgICBAQCAtMCwwICsxLDEw
MiBAQA0KICAgICsvKj09PS0tLS0gcG9wY250aW50cmluLmggLSBQT1BDTlQgaW50cmluc2ljcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQogICAgKyAqDQogICAgKyAqIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkNCiAgICArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwNCiAgICArICogaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cw0KICAgICsgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQogICAgKyAqIGNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcw0KICAgICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOg0KICAgICsgKg0KICAgICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KICAg
ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4N
CiAgICArICoNCiAgICArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCiAgICArICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksDQogICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KICAgICsgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQog
ICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQogICAgKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCiAg
ICArICogVEhFIFNPRlRXQVJFLg0KICAgICsgKg0KICAgICsgKj09PS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09
DQogICAgKyAqLw0KICAgICsNCiAgICArI2lmbmRlZiBfX1BPUENOVElOVFJJTl9IDQogICAgKyNk
ZWZpbmUgX19QT1BDTlRJTlRSSU5fSA0KICAgICsNCiAgICArLyogRGVmaW5lIHRoZSBkZWZhdWx0
IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KICAgICsjaWZk
ZWYgX19HTlVDX18NCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVf
XygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQog
ICAgKyNlbHNlDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicG9wY250IikpKQ0K
ICAgICsjZW5kaWYNCiAgICArDQogICAgKy8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIGlu
IHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX0ENCiAgICArLy8vICAgIEFuIHVuc2lnbmVkIDMy
LWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQogICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2Vy
IGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdpdGggdmFsdWUgMSBpbiB0aGUNCiAgICAr
Ly8vICAgIHNvdXJjZSBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZB
VUxUX0ZOX0FUVFJTDQogICAgK19tbV9wb3BjbnRfdTMyKHVuc2lnbmVkIGludCBfX0EpDQogICAg
K3sNCiAgICArICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50KF9fQSk7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ugb3BlcmFu
ZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX0ENCiAgICArLy8vICAgIEEgc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQu
DQogICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJl
ciBvZiBiaXRzIHdpdGggdmFsdWUgMSBpbiB0aGUNCiAgICArLy8vICAgIHNvdXJjZSBvcGVyYW5k
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19w
b3BjbnQzMihpbnQgX19BKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3Vu
dChfX0EpOw0KICAgICt9DQogICAgKw0KICAgICsjaWZkZWYgX194ODZfNjRfXw0KICAgICsvLy8g
Q291bnRzIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgc291cmNlIG9wZXJhbmQgaGF2aW5nIGEg
dmFsdWUgb2YgMS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQT1BDTlQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19B
DQogICAgKy8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBvcGVyYW5kLg0KICAgICsv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgYml0
cyB3aXRoIHZhbHVlIDEgaW4gdGhlDQogICAgKy8vLyAgICBzb3VyY2Ugb3BlcmFuZC4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
cG9wY250X3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19BKQ0KICAgICt7DQogICAgKyAgcmV0dXJu
IF9fYnVpbHRpbl9wb3Bjb3VudGxsKF9fQSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb3Vu
dHMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZpbmcgYSB2YWx1
ZSBvZiAxLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBP
UENOVCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX0ENCiAg
ICArLy8vICAgIEEgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQogICAgKy8vLyBccmV0
dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdpdGgg
dmFsdWUgMSBpbiB0aGUNCiAgICArLy8vICAgIHNvdXJjZSBvcGVyYW5kLg0KICAgICtzdGF0aWMg
X19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19wb3BjbnQ2NChs
b25nIGxvbmcgX19BKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudGxs
KF9fQSk7DQogICAgK30NCiAgICArI2VuZGlmIC8qIF9feDg2XzY0X18gKi8NCiAgICArDQogICAg
KyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArDQogICAgKyNlbmRpZiAvKiBfX1BPUENO
VElOVFJJTl9IICovDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvc21taW50cmluLmggYi9pbmNs
dWRlL3NtbWludHJpbi5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAw
MDAwLi40ZjFkNjM3DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2luY2x1ZGUvc21taW50
cmluLmgNCiAgICBAQCAtMCwwICsxLDI1MDQgQEANCiAgICArLyo9PT0tLS0tIHNtbWludHJpbi5o
IC0gU1NFNCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09
PQ0KICAgICsgKg0KICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQogICAgKyAqIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsDQogICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCiAgICArICogdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBh
bmQvb3Igc2VsbA0KICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCiAgICArICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgICArICoNCiAgICAr
ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUgaW5jbHVkZWQgaW4NCiAgICArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQogICAgKyAqDQogICAgKyAqIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SDQogICAgKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KICAgICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUN
CiAgICArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g
QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KICAg
ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF
IE9SIE9USEVSIERFQUxJTkdTIElODQogICAgKyAqIFRIRSBTT0ZUV0FSRS4NCiAgICArICoNCiAg
ICArICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KICAgICsgKi8NCiAgICArDQogICAgKyNpZm5kZWYg
X19TTU1JTlRSSU5fSA0KICAgICsjZGVmaW5lIF9fU01NSU5UUklOX0gNCiAgICArDQogICAgKyNp
bmNsdWRlIDx0bW1pbnRyaW4uaD4NCiAgICArDQogICAgKy8qIERlZmluZSB0aGUgZGVmYXVsdCBh
dHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCiAgICArI2lmZGVm
IF9fR05VQ19fDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18o
KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KICAg
ICsjZWxzZQ0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTQuMSIpLCBfX21p
bl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsvKiBTU0U0
IFJvdW5kaW5nIG1hY3Jvcy4gKi8NCiAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FQVJFU1Rf
SU5UICAgIDB4MDANCiAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FR19JTkYgICAgICAgIDB4
MDENCiAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX1BPU19JTkYgICAgICAgIDB4MDINCiAgICAr
I2RlZmluZSBfTU1fRlJPVU5EX1RPX1pFUk8gICAgICAgICAgIDB4MDMNCiAgICArI2RlZmluZSBf
TU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04gICAgIDB4MDQNCiAgICArDQogICAgKyNkZWZpbmUgX01N
X0ZST1VORF9SQUlTRV9FWEMgICAgICAgICAweDAwDQogICAgKyNkZWZpbmUgX01NX0ZST1VORF9O
T19FWEMgICAgICAgICAgICAweDA4DQogICAgKw0KICAgICsjZGVmaW5lIF9NTV9GUk9VTkRfTklO
VCAgICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9GUk9VTkRfVE9fTkVBUkVTVF9JTlQp
DQogICAgKyNkZWZpbmUgX01NX0ZST1VORF9GTE9PUiAgICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhD
IHwgX01NX0ZST1VORF9UT19ORUdfSU5GKQ0KICAgICsjZGVmaW5lIF9NTV9GUk9VTkRfQ0VJTCAg
ICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9GUk9VTkRfVE9fUE9TX0lORikNCiAgICAr
I2RlZmluZSBfTU1fRlJPVU5EX1RSVU5DICAgICAoX01NX0ZST1VORF9SQUlTRV9FWEMgfCBfTU1f
RlJPVU5EX1RPX1pFUk8pDQogICAgKyNkZWZpbmUgX01NX0ZST1VORF9SSU5UICAgICAgKF9NTV9G
Uk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQ0KICAgICsjZGVmaW5l
IF9NTV9GUk9VTkRfTkVBUkJZSU5UIChfTU1fRlJPVU5EX05PX0VYQyB8IF9NTV9GUk9VTkRfQ1VS
X0RJUkVDVElPTikNCiAgICArDQogICAgKy8vLyBSb3VuZHMgdXAgZWFjaCBlbGVtZW50IG9mIHRo
ZSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhbg0KICAgICsvLy8gICAgaW50ZWdl
ciBhbmQgcmV0dXJucyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0K
ICAgICsvLy8gICAgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjgg
X21tX2NlaWxfcHMoX19tMTI4IFgpOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIC8gUk9V
TkRQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBYDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHZhbHVlcyB0byBiZSByb3Vu
ZGVkIHVwLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1fY2VpbF9w
cyhYKSAgICAgICBfbW1fcm91bmRfcHMoKFgpLCBfTU1fRlJPVU5EX0NFSUwpDQogICAgKw0KICAg
ICsvLy8gUm91bmRzIHVwIGVhY2ggZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIHRvIGFuDQogICAgKy8vLyAgICBpbnRlZ2VyIGFuZCByZXR1cm5zIHRoZSByb3Vu
ZGVkIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbMiB4IGRvdWJs
ZV0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhkIF9tbV9jZWlsX3BkKF9fbTEyOGQg
WCk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQgLyBST1VORFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFgNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHZhbHVlcyB0byBiZSByb3VuZGVkIHVwLg0KICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
cm91bmRlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX2NlaWxfcGQoWCkgICAgICAgX21tX3Jv
dW5kX3BkKChYKSwgX01NX0ZST1VORF9DRUlMKQ0KICAgICsNCiAgICArLy8vIENvcGllcyB0aHJl
ZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bw0K
ICAgICsvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhl
IDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5k
cyB1cCB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3Rvcg0KICAg
ICsvLy8gICAgb3BlcmFuZCB0byBhbiBpbnRlZ2VyIGFuZCBjb3BpZXMgaXQgdG8gdGhlIGxvd2Vz
dCBlbGVtZW50IG9mIHRoZSAxMjgtYml0DQogICAgKy8vLyAgICByZXN1bHQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4IF9tbV9jZWlsX3NzKF9f
bTEyOCBYLCBfX20xMjggWSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1MgLyBST1VORFNT
IDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFgNCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGlu
IGJpdHMgWzEyNzozMl0gYXJlDQogICAgKy8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRp
bmcgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIFkNCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBb
MzE6MF0gaXMNCiAgICArLy8vICAgIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBh
bmQgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMNCiAgICArLy8vICAgIG9mIHRoZSBy
ZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIGNvcGllZCBhbmQgcm91bmRlZA0KICAgICsvLy8gICAgdmFsdWVzLg0K
ICAgICsjZGVmaW5lIF9tbV9jZWlsX3NzKFgsIFkpICAgIF9tbV9yb3VuZF9zcygoWCksIChZKSwg
X01NX0ZST1VORF9DRUlMKQ0KICAgICsNCiAgICArLy8vIENvcGllcyB0aGUgdXBwZXIgZWxlbWVu
dCBvZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byB0aGUNCiAgICArLy8vICAg
IGNvcnJlc3BvbmRpbmcgdXBwZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vICAgIFJvdW5kcyB1cCB0aGUgbG93ZXIgZWxlbWVu
dCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gYW4NCiAgICArLy8vICAg
IGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJp
dCByZXN1bHQgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxj
b2RlDQogICAgKy8vLyBfX20xMjhkIF9tbV9jZWlsX3NkKF9fbTEyOGQgWCwgX19tMTI4ZCBZKTsN
CiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRTRCAvIFJPVU5EU0QgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gWA0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcw0K
ICAgICsvLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3Vs
dC4NCiAgICArLy8vIFxwYXJhbSBZDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcw0KICAgICsvLy8g
ICAgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNv
cnJlc3BvbmRpbmcgYml0cw0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNv
cGllZCBhbmQgcm91bmRlZA0KICAgICsvLy8gICAgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbV9j
ZWlsX3NkKFgsIFkpICAgIF9tbV9yb3VuZF9zZCgoWCksIChZKSwgX01NX0ZST1VORF9DRUlMKQ0K
ICAgICsNCiAgICArLy8vIFJvdW5kcyBkb3duIGVhY2ggZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4NCiAgICArLy8vICAgIGFuIGludGVnZXIgYW5kIHJl
dHVybnMgdGhlIHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCiAgICArLy8v
ICAgIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4IF9tbV9mbG9v
cl9wcyhfX20xMjggWCk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUFMgLyBST1VORFBTIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFgNCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdmFsdWVzIHRvIGJlIHJvdW5kZWQgZG93
bi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX2Zsb29yX3BzKFgp
ICAgICAgX21tX3JvdW5kX3BzKChYKSwgX01NX0ZST1VORF9GTE9PUikNCiAgICArDQogICAgKy8v
LyBSb3VuZHMgZG93biBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSB0byBhbg0KICAgICsvLy8gICAgaW50ZWdlciBhbmQgcmV0dXJucyB0aGUgcm91bmRl
ZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KICAgICsvLy8gICAgWzIgeCBkb3VibGVd
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4ZCBfbW1fZmxvb3JfcGQoX19tMTI4ZCBY
KTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCAvIFJPVU5EUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gWA0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCiAgICArI2Rl
ZmluZSBfbW1fZmxvb3JfcGQoWCkgICAgICBfbW1fcm91bmRfcGQoKFgpLCBfTU1fRlJPVU5EX0ZM
T09SKQ0KICAgICsNCiAgICArLy8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUg
Zmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bw0KICAgICsvLy8gICAgdGhlIGNvcnJlc3Bv
bmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBv
Zg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5kcyBkb3duIHRoZSBsb3dlc3QgZWxlbWVu
dCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yDQogICAgKy8vLyAgICBvcGVyYW5kIHRvIGFu
IGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIDEyOC1i
aXQNCiAgICArLy8vICAgIHJlc3VsdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxj
b2RlDQogICAgKy8vLyBfX20xMjggX21tX2Zsb29yX3NzKF9fbTEyOCBYLCBfX20xMjggWSk7DQog
ICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1MgLyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFgNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlDQog
ICAgKy8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0
Lg0KICAgICsvLy8gXHBhcmFtIFkNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMNCiAgICArLy8vICAg
IHJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNv
cnJlc3BvbmRpbmcgYml0cw0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29w
aWVkIGFuZCByb3VuZGVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX2Zs
b29yX3NzKFgsIFkpICAgX21tX3JvdW5kX3NzKChYKSwgKFkpLCBfTU1fRlJPVU5EX0ZMT09SKQ0K
ICAgICsNCiAgICArLy8vIENvcGllcyB0aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgMTI4
LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byB0aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgdXBw
ZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
CiAgICArLy8vICAgIFJvdW5kcyBkb3duIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQg
MTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byBhbg0KICAgICsvLy8gICAgaW50ZWdlciBhbmQgY29w
aWVzIGl0IHRvIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3IN
CiAgICArLy8vICAgIG9mIFsyIHggZG91YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9f
bTEyOGQgX21tX2Zsb29yX3NkKF9fbTEyOGQgWCwgX19tMTI4ZCBZKTsNCiAgICArLy8vIFxlbmRj
b2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUk9VTkRTRCAvIFJPVU5EU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gWA0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcw0KICAgICsvLy8gICAgY29w
aWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxw
YXJhbSBZDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhl
IHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcw0KICAgICsvLy8gICAgcm91bmRlZCBkb3du
IHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYW5kIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBi
aXRzDQogICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCByb3Vu
ZGVkDQogICAgKy8vLyAgICB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX2Zsb29yX3NkKFgsIFkp
ICAgX21tX3JvdW5kX3NkKChYKSwgKFkpLCBfTU1fRlJPVU5EX0ZMT09SKQ0KICAgICsNCiAgICAr
Ly8vIFJvdW5kcyBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIHRvIGFuDQogICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91
bmRpbmcgY29udHJvbCBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZA0KICAgICsvLy8gICAgYXJndW1l
bnQgYW5kIHJldHVybnMgdGhlIHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YN
CiAgICArLy8vICAgIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4
IF9tbV9yb3VuZF9wcyhfX20xMjggWCwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUN
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZST1VORFBTIC8gUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBYDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
ICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVj
aWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzc6NF0g
YXJlIHJlc2VydmVkLiBcbg0KICAgICsvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNl
cHRpb24gdmFsdWU6IFxuDQogICAgKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBp
cyB1c2VkIFxuDQogICAgKy8vLyAgICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBc
bg0KICAgICsvLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxu
DQogICAgKy8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCiAgICArLy8vICAg
ICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4NCiAgICArLy8vICAgIEJpdHMg
WzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KICAgICsv
Ly8gICAgICAwMDogTmVhcmVzdCBcbg0KICAgICsvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2Fy
ZCBuZWdhdGl2ZSBpbmZpbml0eSkgXG4NCiAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJk
IHBvc2l0aXZlIGluZmluaXR5KSBcbg0KICAgICsvLy8gICAgICAxMTogVHJ1bmNhdGVkDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIHJvdW5kZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbV9yb3VuZF9wcyhYLCBNKSBcDQog
ICAgKyAgKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yb3VuZHBzKChfX3Y0c2YpKF9fbTEyOCkoWCks
IChNKSkNCiAgICArDQogICAgKy8vLyBDb3BpZXMgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhl
IGZpcnN0IDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8NCiAgICArLy8vICAgIHRoZSBjb3JyZXNw
b25kaW5nIHRocmVlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Ig
b2YNCiAgICArLy8vICAgIFs0IHggZmxvYXRdLiBSb3VuZHMgdGhlIGxvd2VzdCBlbGVtZW50IG9m
IHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3INCiAgICArLy8vICAgIG9wZXJhbmQgdG8gYW4gaW50
ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJvdW5kaW5nIGNvbnRyb2wgc3BlY2lmaWVkDQog
ICAgKy8vLyAgICBieSB0aGUgdGhpcmQgYXJndW1lbnQgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93
ZXN0IGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQNCiAgICArLy8vICAgIHJlc3VsdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjggX21tX3JvdW5kX3Nz
KF9fbTEyOCBYLCBfX20xMjggWSwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZS
T1VORFNTIC8gUk9VTkRTUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBYDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUg
dmFsdWVzIHN0b3JlZCBpbiBiaXRzIFsxMjc6MzJdIGFyZQ0KICAgICsvLy8gICAgY29waWVkIHRv
IHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBZ
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdmFsdWUg
c3RvcmVkIGluIGJpdHMgWzMxOjBdIGlzDQogICAgKy8vLyAgICByb3VuZGVkIHRvIHRoZSBuZWFy
ZXN0IGludGVnZXIgdXNpbmcgdGhlIHNwZWNpZmllZCByb3VuZGluZyBjb250cm9sIGFuZA0KICAg
ICsvLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4N
CiAgICArLy8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgc3Bl
Y2lmaWVzIHRoZSByb3VuZGluZyBvcGVyYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFs3OjRd
IGFyZSByZXNlcnZlZC4gXG4NCiAgICArLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhj
ZXB0aW9uIHZhbHVlOiBcbg0KICAgICsvLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNlcHRpb24g
aXMgdXNlZCBcbg0KICAgICsvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQg
XG4NCiAgICArLy8vICAgIEJpdCBbMl0gaXMgdGhlIHJvdW5kaW5nIGNvbnRyb2wgc291cmNlOiBc
bg0KICAgICsvLy8gICAgICAwOiBVc2UgYml0cyBbMTowXSBvZiBcYSBNIFxuDQogICAgKy8vLyAg
ICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nIFxuDQogICAgKy8vLyAgICBCaXRz
IFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4NCiAgICAr
Ly8vICAgICAgMDA6IE5lYXJlc3QgXG4NCiAgICArLy8vICAgICAgMDE6IERvd253YXJkICh0b3dh
cmQgbmVnYXRpdmUgaW5maW5pdHkpIFxuDQogICAgKy8vLyAgICAgIDEwOiBVcHdhcmQgKHRvd2Fy
ZCBwb3NpdGl2ZSBpbmZpbml0eSkgXG4NCiAgICArLy8vICAgICAgMTE6IFRydW5jYXRlZA0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBjb3BpZWQgYW5kIHJvdW5kZWQNCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArI2RlZmlu
ZSBfbW1fcm91bmRfc3MoWCwgWSwgTSkgXA0KICAgICsgIChfX20xMjgpX19idWlsdGluX2lhMzJf
cm91bmRzcygoX192NHNmKShfX20xMjgpKFgpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoWSksIChNKSkNCiAgICArDQogICAgKy8vLyBS
b3VuZHMgZWFjaCBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
dG8gYW4NCiAgICArLy8vICAgIGludGVnZXIgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGlu
ZyBjb250cm9sIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kDQogICAgKy8vLyAgICBhcmd1bWVudCBh
bmQgcmV0dXJucyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KICAg
ICsvLy8gICAgWzIgeCBkb3VibGVdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4ZCBf
bW1fcm91bmRfcGQoX19tMTI4ZCBYLCBjb25zdCBpbnQgTSk7DQogICAgKy8vLyBcZW5kY29kZQ0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlJPVU5EUEQgLyBST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIFgNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0K
ICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVj
aWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzc6NF0g
YXJlIHJlc2VydmVkLiBcbg0KICAgICsvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNl
cHRpb24gdmFsdWU6IFxuDQogICAgKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBp
cyB1c2VkIFxuDQogICAgKy8vLyAgICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBc
bg0KICAgICsvLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxu
DQogICAgKy8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCiAgICArLy8vICAg
ICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4NCiAgICArLy8vICAgIEJpdHMg
WzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KICAgICsv
Ly8gICAgICAwMDogTmVhcmVzdCBcbg0KICAgICsvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2Fy
ZCBuZWdhdGl2ZSBpbmZpbml0eSkgXG4NCiAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJk
IHBvc2l0aXZlIGluZmluaXR5KSBcbg0KICAgICsvLy8gICAgICAxMTogVHJ1bmNhdGVkDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IHRoZSByb3VuZGVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1fcm91bmRfcGQoWCwgTSkgXA0K
ICAgICsgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JvdW5kcGQoKF9fdjJkZikoX19tMTI4ZCko
WCksIChNKSkNCiAgICArDQogICAgKy8vLyBDb3BpZXMgdGhlIHVwcGVyIGVsZW1lbnQgb2YgdGhl
IGZpcnN0IDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gdGhlDQogICAgKy8vLyAgICBjb3JyZXNw
b25kaW5nIHVwcGVyIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQogICAgKy8vLyAgICBSb3VuZHMgdGhlIGxvd2VyIGVsZW1lbnQgb2YgdGhlIHNl
Y29uZCAxMjgtYml0IHZlY3RvciBvcGVyYW5kIHRvIGFuDQogICAgKy8vLyAgICBpbnRlZ2VyIHZh
bHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJvbCBzcGVjaWZpZWQgYnkgdGhlIHRo
aXJkDQogICAgKy8vLyAgICBhcmd1bWVudCBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlciBlbGVt
ZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3INCiAgICArLy8vICAgIG9mIFsyIHggZG91
YmxlXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTEyOGQgX21tX3JvdW5kX3NkKF9fbTEy
OGQgWCwgX19tMTI4ZCBZLCBjb25zdCBpbnQgTSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5E
U0QgLyBST1VORFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IFgNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdmFs
dWUgc3RvcmVkIGluIGJpdHMgWzEyNzo2NF0gaXMNCiAgICArLy8vICAgIGNvcGllZCB0byB0aGUg
Y29ycmVzcG9uZGluZyBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gWQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9y
ZWQgaW4gYml0cyBbNjM6MF0gaXMNCiAgICArLy8vICAgIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3Qg
aW50ZWdlciB1c2luZyB0aGUgc3BlY2lmaWVkIHJvdW5kaW5nIGNvbnRyb2wgYW5kDQogICAgKy8v
LyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAg
ICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZp
ZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzc6NF0gYXJl
IHJlc2VydmVkLiBcbg0KICAgICsvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRp
b24gdmFsdWU6IFxuDQogICAgKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1
c2VkIFxuDQogICAgKy8vLyAgICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbg0K
ICAgICsvLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQog
ICAgKy8vLyAgICAgIDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCiAgICArLy8vICAgICAg
MTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4NCiAgICArLy8vICAgIEJpdHMgWzE6
MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KICAgICsvLy8g
ICAgICAwMDogTmVhcmVzdCBcbg0KICAgICsvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBu
ZWdhdGl2ZSBpbmZpbml0eSkgXG4NCiAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBv
c2l0aXZlIGluZmluaXR5KSBcbg0KICAgICsvLy8gICAgICAxMTogVHJ1bmNhdGVkDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb3BpZWQgYW5kIHJvdW5kZWQNCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArI2RlZmluZSBf
bW1fcm91bmRfc2QoWCwgWSwgTSkgXA0KICAgICsgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3Jv
dW5kc2QoKF9fdjJkZikoX19tMTI4ZCkoWCksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAoTSkpDQogICAgKw0KICAgICsvKiBT
U0U0IFBhY2tlZCBCbGVuZGluZyBJbnRyaW5zaWNzLiAgKi8NCiAgICArLy8vIFJldHVybnMgYSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hlcmUgdGhlIHZhbHVlcyBhcmUNCiAgICAr
Ly8vICAgIHNlbGVjdGVkIGZyb20gZWl0aGVyIHRoZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBh
cyBzcGVjaWZpZWQgYnkgdGhlDQogICAgKy8vLyAgICB0aGlyZCBvcGVyYW5kLCB0aGUgY29udHJv
bCBtYXNrLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tMTI4ZCBfbW1fYmxlbmRfcGQoX19t
MTI4ZCBWMSwgX19tMTI4ZCBWMiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZC
TEVORFBEIC8gQkxFTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBWMQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQog
ICAgKy8vLyBccGFyYW0gVjINCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRl
Z2VyIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFsxOjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0KICAg
ICsvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFz
ayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQogICAgKy8vLyAgICBpbmRleCBvZiBhIGNvcGllZCB2
YWx1ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDY0LWJpdA0KICAg
ICsvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBw
b3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gICAgV2hlbiBhIG1hc2sgYml0IGlzIDEs
IHRoZSBjb3JyZXNwb25kaW5nIDY0LWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjINCiAgICAr
Ly8vICAgIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmlu
ZyB0aGUgY29waWVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1fYmxlbmRfcGQoVjEsIFYyLCBN
KSBcDQogICAgKyAgKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2JsZW5kcGQgKChfX3YyZGYpKF9f
bTEyOGQpKFYxKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
X192MmRmKShfX20xMjhkKShWMiksIChpbnQpKE0pKQ0KICAgICsNCiAgICArLy8vIFJldHVybnMg
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aGVyZSB0aGUgdmFsdWVzIGFyZSBzZWxl
Y3RlZA0KICAgICsvLy8gICAgZnJvbSBlaXRoZXIgdGhlIGZpcnN0IG9yIHNlY29uZCBvcGVyYW5k
IGFzIHNwZWNpZmllZCBieSB0aGUgdGhpcmQNCiAgICArLy8vICAgIG9wZXJhbmQsIHRoZSBjb250
cm9sIG1hc2suDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjggX21tX2JsZW5kX3BzKF9f
bTEyOCBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJM
RU5EUFMgLyBCTEVORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIFYxDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAg
ICsvLy8gXHBhcmFtIFYyDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFszOjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0KICAgICsv
Ly8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBi
aXQgY29ycmVzcG9uZHMgdG8gdGhlDQogICAgKy8vLyAgICBpbmRleCBvZiBhIGNvcGllZCB2YWx1
ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdA0KICAgICsv
Ly8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3Np
dGlvbiBpbiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gICAgV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRo
ZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjINCiAgICArLy8v
ICAgIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBjb3BpZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbV9ibGVuZF9wcyhWMSwgVjIsIE0pIFwN
CiAgICArICAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9ibGVuZHBzICgoX192NHNmKShfX20xMjgp
KFYxKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2Yp
KF9fbTEyOCkoVjIpLCAoaW50KShNKSkNCiAgICArDQogICAgKy8vLyBSZXR1cm5zIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdoZXJlIHRoZSB2YWx1ZXMgYXJlDQogICAgKy8vLyAg
ICBzZWxlY3RlZCBmcm9tIGVpdGhlciB0aGUgZmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3Bl
Y2lmaWVkIGJ5IHRoZQ0KICAgICsvLy8gICAgdGhpcmQgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFz
ay4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRW
UEQgLyBCTEVORFZQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX1YxDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAg
ICArLy8vIFxwYXJhbSBfX1YyDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4NCiAgICArLy8vIFxwYXJhbSBfX00NCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMTI3IGFuZCA2MyBzcGVjaWZ5aW5nIGhvdyB0aGUN
CiAgICArLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhl
IG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQ0KICAgICsvLy8gICAgbW9zdCBzaWduaWZpY2Fu
dCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUNCiAgICAr
Ly8vICAgIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YxIGlz
IGNvcGllZCB0byB0aGUgc2FtZQ0KICAgICsvLy8gICAgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4g
V2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDY0LWJpdA0KICAgICsvLy8g
ICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjIgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0
aW9uIGluIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYmxlbmR2X3Bk
IChfX20xMjhkIF9fVjEsIF9fbTEyOGQgX19WMiwgX19tMTI4ZCBfX00pDQogICAgK3sNCiAgICAr
ICByZXR1cm4gKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2JsZW5kdnBkICgoX192MmRmKV9fVjEs
IChfX3YyZGYpX19WMiwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoX192MmRmKV9fTSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBSZXR1cm5zIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUNCiAgICAr
Ly8vICAgIHNlbGVjdGVkIGZyb20gZWl0aGVyIHRoZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBh
cyBzcGVjaWZpZWQgYnkgdGhlDQogICAgKy8vLyAgICB0aGlyZCBvcGVyYW5kLCB0aGUgY29udHJv
bCBtYXNrLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZC
TEVORFZQUyAvIEJMRU5EVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fVjENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQogICAgKy8vLyBccGFyYW0gX19WMg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBfX00NCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMTI3LCA5NSwgNjMsIGFuZCAzMSBzcGVjaWZ5
aW5nDQogICAgKy8vLyAgICBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9z
aXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzDQogICAgKy8vLyAgICB0byB0aGUgbW9z
dCBzaWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAw
LCB0aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3BlcmFu
ZCBcYSBfX1YxIGlzIGNvcGllZCB0byB0aGUgc2FtZQ0KICAgICsvLy8gICAgcG9zaXRpb24gaW4g
dGhlIHJlc3VsdC4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJp
dA0KICAgICsvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjIgaXMgY29waWVkIHRvIHRo
ZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X2JsZW5kdl9wcyAoX19tMTI4IF9fVjEsIF9fbTEyOCBfX1YyLCBfX20xMjggX19NKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2JsZW5kdnBzICgoX192NHNm
KV9fVjEsIChfX3Y0c2YpX19WMiwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3Y0c2YpX19NKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFJldHVy
bnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUgc2Vs
ZWN0ZWQNCiAgICArLy8vICAgIGZyb20gZWl0aGVyIG9mIHRoZSBmaXJzdCBvciBzZWNvbmQgb3Bl
cmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlIHRoaXJkDQogICAgKy8vLyAgICBvcGVyYW5kLCB0aGUg
Y29udHJvbCBtYXNrLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQQkxFTkRWQiAvIFBCTEVORFZCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fVjENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHgg
aThdLg0KICAgICsvLy8gXHBhcmFtIF9fVjINCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzE2IHggaThdLg0KICAgICsvLy8gXHBhcmFtIF9fTQ0KICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyAxMjcsIDExOSwgMTExLi4uNyBzcGVjaWZ5
aW5nDQogICAgKy8vLyAgICBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9z
aXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzDQogICAgKy8vLyAgICB0byB0aGUgbW9z
dCBzaWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAw
LCB0aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgOC1iaXQgZWxlbWVudCBpbiBvcGVyYW5k
IFxhIF9fVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lDQogICAgKy8vLyAgICBwb3NpdGlvbiBpbiB0
aGUgcmVzdWx0LiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQN
CiAgICArLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YyIGlzIGNvcGllZCB0byB0aGUg
c2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2Js
ZW5kdl9lcGk4IChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMiwgX19tMTI4aSBfX00pDQogICAg
K3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BibGVuZHZiMTI4ICgo
X192MTZxaSlfX1YxLCAoX192MTZxaSlfX1YyLA0KICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fTSk7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdoZXJlIHRoZSB2
YWx1ZXMgYXJlIHNlbGVjdGVkDQogICAgKy8vLyAgICBmcm9tIGVpdGhlciBvZiB0aGUgZmlyc3Qg
b3Igc2Vjb25kIG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZSB0aGlyZA0KICAgICsvLy8gICAg
b3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTEy
OGkgX21tX2JsZW5kX2VwaTE2KF9fbTEyOGkgVjEsIF9fbTEyOGkgVjIsIGNvbnN0IGludCBNKTsN
CiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUEJMRU5EVyAvIFBCTEVORFcgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gVjENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdLg0KICAgICsvLy8gXHBhcmFtIFYyDQogICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCiAgICArLy8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBB
biBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbNzowXSBzcGVjaWZ5
aW5nIGhvdyB0aGUNCiAgICArLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9z
aXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQ0KICAgICsvLy8gICAgaW5k
ZXggb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9u
ZGluZyAxNi1iaXQNCiAgICArLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3Bp
ZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4NCiAgICArLy8vICAgIFdoZW4g
YSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgZWxlbWVudCBpbiBvcGVy
YW5kIFxhIFYyDQogICAgKy8vLyAgICBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4g
dGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBp
MTZdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX2JsZW5k
X2VwaTE2KFYxLCBWMiwgTSkgXA0KICAgICsgIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wYmxl
bmR3MTI4ICgoX192OGhpKShfX20xMjhpKShWMSksIFwNCiAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoVjIpLCAoaW50KShNKSkNCiAg
ICArDQogICAgKy8qIFNTRTQgRHdvcmQgTXVsdGlwbHkgSW5zdHJ1Y3Rpb25zLiAgKi8NCiAgICAr
Ly8vIE11bHRpcGxlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YgWzQgeCBpMzJdDQogICAgKy8vLyAgICBhbmQgcmV0dXJucyB0aGUgbG93ZXIgMzIgYml0
cyBvZiB0aGUgZWFjaCBwcm9kdWN0IGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCiAgICArLy8vICAg
IFs0IHggaTMyXS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUE1VTExEIC8gUE1VTExEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fVjENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCiAgICAr
Ly8vIFxwYXJhbSBfX1YyDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
cHJvZHVjdHMgb2YgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tdWxsb19lcGkzMiAoX19tMTI4aSBfX1Yx
LCBfX20xMjhpIF9fVjIpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpICgoX192NHN1
KV9fVjEgKiAoX192NHN1KV9fVjIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTXVsdGlwbGll
cyBjb3JyZXNwb25kaW5nIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KICAg
ICsvLy8gICAgdmVjdG9ycyBvZiBbNCB4IGkzMl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGk2NF0NCiAgICArLy8vICAgIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMRFEgLyBQTVVM
RFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WMQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQogICAgKy8vLyBccGFyYW0g
X19WMg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBw
cm9kdWN0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tdWxfZXBpMzIgKF9f
bTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhp
KSBfX2J1aWx0aW5faWEzMl9wbXVsZHExMjggKChfX3Y0c2kpX19WMSwgKF9fdjRzaSlfX1YyKTsN
CiAgICArfQ0KICAgICsNCiAgICArLyogU1NFNCBGbG9hdGluZyBQb2ludCBEb3QgUHJvZHVjdCBJ
bnN0cnVjdGlvbnMuICAqLw0KICAgICsvLy8gQ29tcHV0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHRo
ZSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdDQogICAgKy8vLyAgICBhbmQgcmV0
dXJucyBpdCBpbiB0aGUgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZg0K
ICAgICsvLy8gICAgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gICAgVGhlIGltbWVk
aWF0ZSBpbnRlZ2VyIG9wZXJhbmQgY29udHJvbHMgd2hpY2ggaW5wdXQgZWxlbWVudHMNCiAgICAr
Ly8vICAgIHdpbGwgY29udHJpYnV0ZSB0byB0aGUgZG90IHByb2R1Y3QsIGFuZCB3aGVyZSB0aGUg
ZmluYWwgcmVzdWx0cyBhcmUNCiAgICArLy8vICAgIHJldHVybmVkLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0K
ICAgICsvLy8gX19tMTI4IF9tbV9kcF9wcyhfX20xMjggWCwgX19tMTI4IFksIGNvbnN0IGludCBN
KTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQUyAvIERQUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gWA0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBZDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFu
IGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuIE1hc2sgYml0cyBbNzo0XSBkZXRlcm1pbmUgd2hp
Y2ggZWxlbWVudHMNCiAgICArLy8vICAgIG9mIHRoZSBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkLCB3
aXRoIGJpdCBbNF0gY29ycmVzcG9uZGluZyB0byB0aGUgbG93ZXN0DQogICAgKy8vLyAgICBlbGVt
ZW50IGFuZCBiaXQgWzddIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhpZ2hlc3QgZWxlbWVudCBvZiBl
YWNoIFs0IHgNCiAgICArLy8vICAgIGZsb2F0XSB2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgdHdvDQogICAgKy8vLyAgICBpbnB1dCB2
ZWN0b3JzIGFyZSB1c2VkIGFzIGFuIGlucHV0IGZvciBkb3QgcHJvZHVjdDsgb3RoZXJ3aXNlIHRo
YXQgaW5wdXQNCiAgICArLy8vICAgIGlzIHRyZWF0ZWQgYXMgemVyby4gQml0cyBbMzowXSBkZXRl
cm1pbmUgd2hpY2ggZWxlbWVudHMgb2YgdGhlIHJlc3VsdA0KICAgICsvLy8gICAgd2lsbCByZWNl
aXZlIGEgY29weSBvZiB0aGUgZmluYWwgZG90IHByb2R1Y3QsIHdpdGggYml0IFswXSBjb3JyZXNw
b25kaW5nDQogICAgKy8vLyAgICB0byB0aGUgbG93ZXN0IGVsZW1lbnQgYW5kIGJpdCBbM10gY29y
cmVzcG9uZGluZyB0byB0aGUgaGlnaGVzdCBlbGVtZW50IG9mDQogICAgKy8vLyAgICBlYWNoIFs0
IHggZmxvYXRdIHN1YnZlY3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgZG90IHByb2R1Y3QgaXMg
cmV0dXJuZWQNCiAgICArLy8vICAgIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQ7IG90aGVy
d2lzZSB0aGF0IGVsZW1lbnQgaXMgc2V0IHRvIHplcm8uDQogICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRvdCBwcm9kdWN0Lg0K
ICAgICsjZGVmaW5lIF9tbV9kcF9wcyhYLCBZLCBNKSBcDQogICAgKyAgKF9fbTEyOCkgX19idWls
dGluX2lhMzJfZHBwcygoX192NHNmKShfX20xMjgpKFgpLCBcDQogICAgKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoTSkpDQogICAgKw0KICAgICsv
Ly8gQ29tcHV0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHRoZSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9m
IFsyIHggZG91YmxlXQ0KICAgICsvLy8gICAgYW5kIHJldHVybnMgaXQgaW4gdGhlIGVsZW1lbnRz
IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFsyIHggZG91Ymxl
XS4NCiAgICArLy8vDQogICAgKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBj
b250cm9scyB3aGljaCBpbnB1dA0KICAgICsvLy8gICAgZWxlbWVudHMgd2lsbCBjb250cmlidXRl
IHRvIHRoZSBkb3QgcHJvZHVjdCwgYW5kIHdoZXJlIHRoZSBmaW5hbCByZXN1bHRzDQogICAgKy8v
LyAgICBhcmUgcmV0dXJuZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhkIF9tbV9k
cF9wZChfX20xMjhkIFgsIF9fbTEyOGQgWSwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNv
ZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZEUFBEIC8gRFBQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBYDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCiAg
ICArLy8vIFxwYXJhbSBZDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4NCiAgICArLy8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdl
ciBvcGVyYW5kLiBNYXNrIGJpdHMgWzU6NF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzDQogICAg
Ky8vLyAgICBvZiB0aGUgaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGxvd2VzdA0KICAgICsvLy8gICAgZWxlbWVudCBhbmQgYml0IFs1XSBj
b3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YgZWFjaCBvZiBbMiB4DQogICAg
Ky8vLyAgICBkb3VibGVdIHZlY3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGlu
ZyBlbGVtZW50cyBmcm9tIHRoZSB0d28NCiAgICArLy8vICAgIGlucHV0IHZlY3RvcnMgYXJlIHVz
ZWQgYXMgYW4gaW5wdXQgZm9yIGRvdCBwcm9kdWN0OyBvdGhlcndpc2UgdGhhdCBpbnB1dA0KICAg
ICsvLy8gICAgaXMgdHJlYXRlZCBhcyB6ZXJvLiBCaXRzIFsxOjBdIGRldGVybWluZSB3aGljaCBl
bGVtZW50cyBvZiB0aGUgcmVzdWx0DQogICAgKy8vLyAgICB3aWxsIHJlY2VpdmUgYSBjb3B5IG9m
IHRoZSBmaW5hbCBkb3QgcHJvZHVjdCwgd2l0aCBiaXQgWzBdIGNvcnJlc3BvbmRpbmcNCiAgICAr
Ly8vICAgIHRvIHRoZSBsb3dlc3QgZWxlbWVudCBhbmQgYml0IFsxXSBjb3JyZXNwb25kaW5nIHRv
IHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YNCiAgICArLy8vICAgIGVhY2ggWzIgeCBkb3VibGVdIHZl
Y3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgZG90IHByb2R1Y3QgaXMgcmV0dXJuZWQgaW4NCiAg
ICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQ7IG90aGVyd2lzZSB0aGF0IGVsZW1l
bnQgaXMgc2V0IHRvIHplcm8uDQogICAgKyNkZWZpbmUgX21tX2RwX3BkKFgsIFksIE0pIFwNCiAg
ICArICAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfZHBwZCgoX192MmRmKShfX20xMjhkKShYKSwg
XA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQp
KFkpLCAoTSkpDQogICAgKw0KICAgICsvKiBTU0U0IFN0cmVhbWluZyBMb2FkIEhpbnQgSW5zdHJ1
Y3Rpb24uICAqLw0KICAgICsvLy8gTG9hZHMgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDEyOC1iaXQg
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdG8gYQ0KICAgICsvLy8gICAgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TU9WTlREUUEgLyBNT1ZOVERRQSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX1YNCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgYWxpZ25lZCBt
ZW1vcnkgbG9jYXRpb24gdGhhdCBjb250YWlucyB0aGUgaW50ZWdlcg0KICAgICsvLy8gICAgdmFs
dWVzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGRhdGEgc3RvcmVkIGF0IHRoZQ0KICAgICsvLy8gICAgc3BlY2lmaWVkIG1lbW9yeSBs
b2NhdGlvbi4NCiAgICArc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQogICAgK19tbV9zdHJlYW1fbG9hZF9zaTEyOCAoX19tMTI4aSBjb25zdCAqX19WKQ0KICAg
ICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWls
dGluX2lhMzJfbW92bnRkcWEgKChfX3YyZGkgKikgX19WKTsNCiAgICArI2Vsc2UNCiAgICArICBy
ZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9sb2FkICgoY29uc3QgX192MmRp
ICopIF9fVik7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvKiBTU0U0IFBhY2tl
ZCBJbnRlZ2VyIE1pbi9NYXggSW5zdHJ1Y3Rpb25zLiAgKi8NCiAgICArLy8vIENvbXBhcmVzIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCiAgICAr
Ly8vICAgIFsxNiB4IGk4XSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4
XSBjb250YWluaW5nIHRoZSBsZXNzZXINCiAgICArLy8vICAgIG9mIHRoZSB0d28gdmFsdWVzLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOU0IgLyBQ
TUlOU0IgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WMQ0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQogICAgKy8vLyBccGFy
YW0gX19WMg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhl
IGxlc3NlciB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fbWluX2VwaTggKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1Yy
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbWluc2Ix
MjggKChfX3YxNnFpKSBfX1YxLCAoX192MTZxaSkgX19WMik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2
ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbMTYgeCBpOF0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZl
Y3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUNCiAgICArLy8vICAgIGdyZWF0ZXIgdmFs
dWUgb2YgdGhlIHR3by4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUE1BWFNCIC8gUE1BWFNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fVjENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThd
Lg0KICAgICsvLy8gXHBhcmFtIF9fVjINCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzE2IHggaThdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBp
OF0gY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
ICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWF4X2VwaTggKF9fbTEyOGkg
X19WMSwgX19tMTI4aSBfX1YyKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1
aWx0aW5faWEzMl9wbWF4c2IxMjggKChfX3YxNnFpKSBfX1YxLCAoX192MTZxaSkgX19WMik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbOCB4IHUxNl0gYW5kIHJl
dHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0gY29udGFpbmluZyB0aGUgbGVzc2Vy
DQogICAgKy8vLyAgICB2YWx1ZSBvZiB0aGUgdHdvLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOVVcgLyBQTUlOVVcgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WMQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbOCB4IHUxNl0uDQogICAgKy8vLyBccGFyYW0gX19WMg0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggdTE2XSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX21p
bl9lcHUxNiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpDQogICAgK3sNCiAgICArICByZXR1
cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtaW51dzEyOCAoKF9fdjhoaSkgX19WMSwgKF9f
djhoaSkgX19WMik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0aGUgY29ycmVz
cG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBb
OCB4IHUxNl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0gY29udGFp
bmluZyB0aGUNCiAgICArLy8vICAgIGdyZWF0ZXIgdmFsdWUgb2YgdGhlIHR3by4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BWFVXIC8gUE1BWFVXIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fVjENCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdLg0KICAgICsvLy8gXHBhcmFtIF9fVjIN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdLg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0gY29udGFpbmluZyB0aGUgZ3JlYXRl
ciB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fbWF4X2VwdTE2IChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCiAg
ICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1heHV3MTI4ICgo
X192OGhpKSBfX1YxLCAoX192OGhpKSBfX1YyKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENv
bXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMg
b2YNCiAgICArLy8vICAgIFs0IHggaTMyXSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBsZXNzZXINCiAgICArLy8vICAgIHZhbHVlIG9mIHRo
ZSB0d28uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBN
SU5TRCAvIFBNSU5TRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX1YxDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCiAgICAr
Ly8vIFxwYXJhbSBfX1YyDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMy
XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRh
aW5pbmcgdGhlIGxlc3NlciB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWluX2VwaTMyIChfX20xMjhpIF9fVjEsIF9f
bTEyOGkgX19WMikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lh
MzJfcG1pbnNkMTI4ICgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAx
MjgtYml0IHZlY3RvcnMgb2YNCiAgICArLy8vICAgIFs0IHggaTMyXSBhbmQgcmV0dXJucyBhIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZQ0KICAgICsvLy8gICAgZ3Jl
YXRlciB2YWx1ZSBvZiB0aGUgdHdvLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQTUFYU0QgLyBQTUFYU0QgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19WMQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGkzMl0uDQogICAgKy8vLyBccGFyYW0gX19WMg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGkzMl0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlcy4NCiAgICArc3RhdGljIF9f
aW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tYXhfZXBpMzIg
KF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20x
MjhpKSBfX2J1aWx0aW5faWEzMl9wbWF4c2QxMjggKChfX3Y0c2kpIF9fVjEsIChfX3Y0c2kpIF9f
VjIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KICAgICsvLy8gICAgWzQgeCB1MzJd
IGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhl
IGxlc3Nlcg0KICAgICsvLy8gICAgdmFsdWUgb2YgdGhlIHR3by4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlVEIC8gUE1JTlVEIDwvYz4gIGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX1YxDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCiAgICArLy8vIFxwYXJhbSBfX1YyDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhlIGxlc3NlciB2YWx1ZXMu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW1fbWluX2VwdTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCiAgICArew0KICAg
ICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnVkMTI4KChfX3Y0c2kpIF9f
VjEsIChfX3Y0c2kpIF9fVjIpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KICAgICsv
Ly8gICAgWzQgeCB1MzJdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJd
IGNvbnRhaW5pbmcgdGhlDQogICAgKy8vLyAgICBncmVhdGVyIHZhbHVlIG9mIHRoZSB0d28uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVRCAvIFBN
QVhVRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX1YxDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCiAgICArLy8vIFxwYXJh
bSBfX1YyDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhl
IGdyZWF0ZXIgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX21heF9lcHUzMiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9f
VjIpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtYXh1
ZDEyOCgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsNCiAgICArfQ0KICAgICsNCiAgICAr
LyogU1NFNCBJbnNlcnRpb24gYW5kIEV4dHJhY3Rpb24gZnJvbSBYTU0gUmVnaXN0ZXIgSW5zdHJ1
Y3Rpb25zLiAgKi8NCiAgICArLy8vIFRha2VzIHRoZSBmaXJzdCBhcmd1bWVudCBcYSBYIGFuZCBp
bnNlcnRzIGFuIGVsZW1lbnQgZnJvbSB0aGUgc2Vjb25kDQogICAgKy8vLyAgICBhcmd1bWVudCBc
YSBZIGFzIHNlbGVjdGVkIGJ5IHRoZSB0aGlyZCBhcmd1bWVudCBcYSBOLiBUaGF0IHJlc3VsdCB0
aGVuDQogICAgKy8vLyAgICBoYXMgZWxlbWVudHMgemVyb2VkIG91dCBhbHNvIGFzIHNlbGVjdGVk
IGJ5IHRoZSB0aGlyZCBhcmd1bWVudCBcYSBOLiBUaGUNCiAgICArLy8vICAgIHJlc3VsdGluZyAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpcyB0aGVuIHJldHVybmVkLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBc
Y29kZQ0KICAgICsvLy8gX19tMTI4IF9tbV9pbnNlcnRfcHMoX19tMTI4IFgsIF9fbTEyOCBZLCBj
b25zdCBpbnQgTik7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVFBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIFgNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igc291cmNlIG9wZXJhbmQgb2YgWzQgeCBmbG9hdF0uIFdpdGggdGhlIGV4Y2VwdGlvbiBv
Zg0KICAgICsvLy8gICAgdGhvc2UgYml0cyBpbiB0aGUgcmVzdWx0IGNvcGllZCBmcm9tIHBhcmFt
ZXRlciBcYSBZIGFuZCB6ZXJvZWQgYnkgYml0cw0KICAgICsvLy8gICAgWzM6MF0gb2YgXGEgTiwg
YWxsIGJpdHMgZnJvbSB0aGlzIHBhcmFtZXRlciBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQuDQog
ICAgKy8vLyBccGFyYW0gWQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBzb3VyY2Ugb3Bl
cmFuZCBvZiBbNCB4IGZsb2F0XS4gT25lIHNpbmdsZS1wcmVjaXNpb24NCiAgICArLy8vICAgIGZs
b2F0aW5nLXBvaW50IGVsZW1lbnQgZnJvbSB0aGlzIHNvdXJjZSwgYXMgZGV0ZXJtaW5lZCBieSB0
aGUgaW1tZWRpYXRlDQogICAgKy8vLyAgICBwYXJhbWV0ZXIsIGlzIGNvcGllZCB0byB0aGUgcmVz
dWx0Lg0KICAgICsvLy8gXHBhcmFtIE4NCiAgICArLy8vICAgIFNwZWNpZmllcyB3aGljaCBiaXRz
IGZyb20gb3BlcmFuZCBcYSBZIHdpbGwgYmUgY29waWVkLCB3aGljaCBiaXRzIGluIHRoZQ0KICAg
ICsvLy8gICAgcmVzdWx0IHRoZXkgd2lsbCBiZSBiZSBjb3BpZWQgdG8sIGFuZCB3aGljaCBiaXRz
IGluIHRoZSByZXN1bHQgd2lsbCBiZQ0KICAgICsvLy8gICAgY2xlYXJlZC4gVGhlIGZvbGxvd2lu
ZyBhc3NpZ25tZW50cyBhcmUgbWFkZTogXG4NCiAgICArLy8vICAgIEJpdHMgWzc6Nl0gc3BlY2lm
eSB0aGUgYml0cyB0byBjb3B5IGZyb20gb3BlcmFuZCBcYSBZOiBcbg0KICAgICsvLy8gICAgICAw
MDogU2VsZWN0cyBiaXRzIFszMTowXSBmcm9tIG9wZXJhbmQgXGEgWS4gXG4NCiAgICArLy8vICAg
ICAgMDE6IFNlbGVjdHMgYml0cyBbNjM6MzJdIGZyb20gb3BlcmFuZCBcYSBZLiBcbg0KICAgICsv
Ly8gICAgICAxMDogU2VsZWN0cyBiaXRzIFs5NTo2NF0gZnJvbSBvcGVyYW5kIFxhIFkuIFxuDQog
ICAgKy8vLyAgICAgIDExOiBTZWxlY3RzIGJpdHMgWzEyNzo5Nl0gZnJvbSBvcGVyYW5kIFxhIFku
IFxuDQogICAgKy8vLyAgICBCaXRzIFs1OjRdIHNwZWNpZnkgdGhlIGJpdHMgaW4gdGhlIHJlc3Vs
dCB0byB3aGljaCB0aGUgc2VsZWN0ZWQgYml0cw0KICAgICsvLy8gICAgZnJvbSBvcGVyYW5kIFxh
IFkgYXJlIGNvcGllZDogXG4NCiAgICArLy8vICAgICAgMDA6IENvcGllcyB0aGUgc2VsZWN0ZWQg
Yml0cyBmcm9tIFxhIFkgdG8gcmVzdWx0IGJpdHMgWzMxOjBdLiBcbg0KICAgICsvLy8gICAgICAw
MTogQ29waWVzIHRoZSBzZWxlY3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0cyBbNjM6
MzJdLiBcbg0KICAgICsvLy8gICAgICAxMDogQ29waWVzIHRoZSBzZWxlY3RlZCBiaXRzIGZyb20g
XGEgWSB0byByZXN1bHQgYml0cyBbOTU6NjRdLiBcbg0KICAgICsvLy8gICAgICAxMTogQ29waWVz
IHRoZSBzZWxlY3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0cyBbMTI3Ojk2XS4gXG4N
CiAgICArLy8vICAgIEJpdHNbMzowXTogSWYgYW55IG9mIHRoZXNlIGJpdHMgYXJlIHNldCwgdGhl
IGNvcnJlc3BvbmRpbmcgcmVzdWx0DQogICAgKy8vLyAgICBlbGVtZW50IGlzIGNsZWFyZWQuDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGNvcGllZA0KICAgICsvLy8gICAgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2lu
dCBlbGVtZW50cyBmcm9tIHRoZSBvcGVyYW5kcy4NCiAgICArI2RlZmluZSBfbW1faW5zZXJ0X3Bz
KFgsIFksIE4pIF9fYnVpbHRpbl9pYTMyX2luc2VydHBzMTI4KChYKSwgKFkpLCAoTikpDQogICAg
Kw0KICAgICsvLy8gRXh0cmFjdHMgYSAzMi1iaXQgaW50ZWdlciBmcm9tIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gYW5kDQogICAgKy8vLyAgICByZXR1cm5zIGl0LCB1c2luZyB0aGUg
aW1tZWRpYXRlIHZhbHVlIHBhcmFtZXRlciBcYSBOIGFzIGEgc2VsZWN0b3IuDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxj
b2RlDQogICAgKy8vLyBpbnQgX21tX2V4dHJhY3RfcHMoX19tMTI4IFgsIGNvbnN0IGludCBOKTsN
CiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVFBTIC8gRVhUUkFDVFBTIDwvYz4NCiAgICArLy8v
IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBYDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIE4NCiAgICAr
Ly8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZS4gQml0cyBbMTowXSBkZXRlcm1pbmVzIHdoaWNoIGJp
dHMgZnJvbSB0aGUgYXJndW1lbnQNCiAgICArLy8vICAgIFxhIFggYXJlIGV4dHJhY3RlZCBhbmQg
cmV0dXJuZWQ6IFxuDQogICAgKy8vLyAgICAwMDogQml0cyBbMzE6MF0gb2YgcGFyYW1ldGVyIFxh
IFggYXJlIHJldHVybmVkLiBcbg0KICAgICsvLy8gICAgMDE6IEJpdHMgWzYzOjMyXSBvZiBwYXJh
bWV0ZXIgXGEgWCBhcmUgcmV0dXJuZWQuIFxuDQogICAgKy8vLyAgICAxMDogQml0cyBbOTU6NjRd
IG9mIHBhcmFtZXRlciBcYSBYIGFyZSByZXR1cm5lZC4gXG4NCiAgICArLy8vICAgIDExOiBCaXRz
IFsxMjc6OTZdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSByZXR1cm5lZC4NCiAgICArLy8vIFxyZXR1
cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDMyIGJpdHMgb2Yg
ZmxvYXQgZGF0YS4NCiAgICArI2RlZmluZSBfbW1fZXh0cmFjdF9wcyhYLCBOKSAoX19leHRlbnNp
b25fXyAgICAgICAgICAgICAgICAgICAgICBcDQogICAgKyAgKHsgdW5pb24geyBpbnQgX19pOyBm
bG9hdCBfX2Y7IH0gX190OyAgXA0KICAgICsgICAgIF9fdC5fX2YgPSBfX2J1aWx0aW5faWEzMl92
ZWNfZXh0X3Y0c2YoKF9fdjRzZikoX19tMTI4KShYKSwgKGludCkoTikpOyBcDQogICAgKyAgICAg
X190Ll9faTt9KSkNCiAgICArDQogICAgKy8qIE1pc2NlbGxhbmVvdXMgaW5zZXJ0IGFuZCBleHRy
YWN0IG1hY3Jvcy4gICovDQogICAgKy8qIEV4dHJhY3QgYSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
IGZyb20gWCBhdCBpbmRleCBOIGludG8gRC4gICovDQogICAgKyNkZWZpbmUgX01NX0VYVFJBQ1Rf
RkxPQVQoRCwgWCwgTikgXA0KICAgICsgIHsgKEQpID0gX19idWlsdGluX2lhMzJfdmVjX2V4dF92
NHNmKChfX3Y0c2YpKF9fbTEyOCkoWCksIChpbnQpKE4pKTsgfQ0KICAgICsNCiAgICArLyogT3Ig
dG9nZXRoZXIgMiBzZXRzIG9mIGluZGV4ZXMgKFggYW5kIFkpIHdpdGggdGhlIHplcm9pbmcgYml0
cyAoWikgdG8gY3JlYXRlDQogICAgKyAgIGFuIGluZGV4IHN1aXRhYmxlIGZvciBfbW1faW5zZXJ0
X3BzLiAgKi8NCiAgICArI2RlZmluZSBfTU1fTUtfSU5TRVJUUFNfTkRYKFgsIFksIFopICgoKFgp
IDw8IDYpIHwgKChZKSA8PCA0KSB8IChaKSkNCiAgICArDQogICAgKy8qIEV4dHJhY3QgYSBmbG9h
dCBmcm9tIFggYXQgaW5kZXggTiBpbnRvIHRoZSBmaXJzdCBpbmRleCBvZiB0aGUgcmV0dXJuLiAg
Ki8NCiAgICArI2RlZmluZSBfTU1fUElDS19PVVRfUFMoWCwgTikgX21tX2luc2VydF9wcyAoX21t
X3NldHplcm9fcHMoKSwgKFgpLCAgIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX01NX01LX0lOU0VSVFBTX05EWCgoTiksIDAsIDB4MGUpKQ0KICAg
ICsNCiAgICArLyogSW5zZXJ0IGludCBpbnRvIHBhY2tlZCBpbnRlZ2VyIGFycmF5IGF0IGluZGV4
LiAgKi8NCiAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0g
YnkgZmlyc3QgbWFraW5nIGEgY29weSBvZg0KICAgICsvLy8gICAgdGhlIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgcGFyYW1ldGVyLCBhbmQgdGhlbiBpbnNlcnRpbmcgdGhlIGxvd2VyIDggYml0cw0K
ICAgICsvLy8gICAgb2YgYW4gaW50ZWdlciBwYXJhbWV0ZXIgXGEgSSBpbnRvIGFuIG9mZnNldCBz
cGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZQ0KICAgICsvLy8gICAgdmFsdWUgcGFyYW1ldGVyIFxh
IE4uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9pbnNlcnRfZXBpOChfX20x
MjhpIFgsIGludCBJLCBjb25zdCBpbnQgTik7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBJTlNSQiAv
IFBJTlNSQiA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBYDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGlzIHZl
Y3RvciBpcyBjb3BpZWQgdG8gdGhlDQogICAgKy8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9m
IHRoZSBzaXh0ZWVuIGVsZW1lbnRzIGluIHRoZSByZXN1bHQgdmVjdG9yIGlzDQogICAgKy8vLyAg
ICByZXBsYWNlZCBieSB0aGUgbG93ZXIgOCBiaXRzIG9mIFxhIEkuDQogICAgKy8vLyBccGFyYW0g
SQ0KICAgICsvLy8gICAgQW4gaW50ZWdlci4gVGhlIGxvd2VyIDggYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlIHdyaXR0ZW4gdG8gdGhlIHJlc3VsdA0KICAgICsvLy8gICAgYmVnaW5uaW5nIGF0IHRo
ZSBvZmZzZXQgc3BlY2lmaWVkIGJ5IFxhIE4uDQogICAgKy8vLyBccGFyYW0gTg0KICAgICsvLy8g
ICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFszOjBdIHNwZWNpZnkgdGhlIGJpdCBvZmZzZXQg
aW4gdGhlIHJlc3VsdCBhdA0KICAgICsvLy8gICAgd2hpY2ggdGhlIGxvd2VyIDggYml0cyBvZiBc
YSBJIGFyZSB3cml0dGVuLiBcbg0KICAgICsvLy8gICAgMDAwMDogQml0cyBbNzowXSBvZiB0aGUg
cmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQogICAgKy8vLyAgICAwMDAxOiBCaXRz
IFsxNTo4XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQogICAgKy8v
LyAgICAwMDEwOiBCaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0
aW9uLiBcbg0KICAgICsvLy8gICAgMDAxMTogQml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQgYXJl
IHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCiAgICArLy8vICAgIDAxMDA6IEJpdHMgWzM5OjMyXSBv
ZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQogICAgKy8vLyAgICAwMTAx
OiBCaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0K
ICAgICsvLy8gICAgMDExMDogQml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9y
IGluc2VydGlvbi4gXG4NCiAgICArLy8vICAgIDAxMTE6IEJpdHMgWzYzOjU2XSBvZiB0aGUgcmVz
dWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQogICAgKy8vLyAgICAxMDAwOiBCaXRzIFs3
MTo2NF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KICAgICsvLy8g
ICAgMTAwMTogQml0cyBbNzk6NzJdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlv
bi4gXG4NCiAgICArLy8vICAgIDEwMTA6IEJpdHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0IGFyZSB1
c2VkIGZvciBpbnNlcnRpb24uIFxuDQogICAgKy8vLyAgICAxMDExOiBCaXRzIFs5NTo4OF0gb2Yg
dGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KICAgICsvLy8gICAgMTEwMDog
Qml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQog
ICAgKy8vLyAgICAxMTAxOiBCaXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZv
ciBpbnNlcnRpb24uIFxuDQogICAgKy8vLyAgICAxMTEwOiBCaXRzIFsxMTk6MTEyXSBvZiB0aGUg
cmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQogICAgKy8vLyAgICAxMTExOiBCaXRz
IFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uc3Ry
dWN0ZWQgdmFsdWVzLg0KICAgICsjZGVmaW5lIF9tbV9pbnNlcnRfZXBpOChYLCBJLCBOKSBcDQog
ICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92MTZxaSgoX192MTZxaSkoX19t
MTI4aSkoWCksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpbnQpKEkpLCAoaW50KShOKSkNCiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YNCiAgICArLy8v
ICAgIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRoZW4gaW5zZXJ0
aW5nIHRoZSAzMi1iaXQNCiAgICArLy8vICAgIGludGVnZXIgcGFyYW1ldGVyIFxhIEkgYXQgdGhl
IG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSB2YWx1ZQ0KICAgICsvLy8gICAgcGFy
YW1ldGVyIFxhIE4uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9pbnNlcnRf
ZXBpMzIoX19tMTI4aSBYLCBpbnQgSSwgY29uc3QgaW50IE4pOw0KICAgICsvLy8gXGVuZGNvZGUN
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQSU5TUkQgLyBQSU5TUkQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gWA0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMy
XS4gVGhpcyB2ZWN0b3IgaXMgY29waWVkIHRvIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0IGFuZCB0
aGVuIG9uZSBvZiB0aGUgZm91ciBlbGVtZW50cyBpbiB0aGUgcmVzdWx0IHZlY3RvciBpcw0KICAg
ICsvLy8gICAgcmVwbGFjZWQgYnkgXGEgSS4NCiAgICArLy8vIFxwYXJhbSBJDQogICAgKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ2VyIHRoYXQgaXMgd3JpdHRlbiB0byB0aGUgcmVzdWx0IGJlZ2lubmlu
ZyBhdCB0aGUgb2Zmc2V0DQogICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgXGEgTi4NCiAgICArLy8v
IFxwYXJhbSBODQogICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMgWzE6MF0gc3Bl
Y2lmeSB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQogICAgKy8vLyAgICB3aGljaCB0
aGUgaW50ZWdlciBcYSBJIGlzIHdyaXR0ZW4uIFxuDQogICAgKy8vLyAgICAwMDogQml0cyBbMzE6
MF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KICAgICsvLy8gICAg
MDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxu
DQogICAgKy8vLyAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9y
IGluc2VydGlvbi4gXG4NCiAgICArLy8vICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1
bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuDQogICAgKyNk
ZWZpbmUgX21tX2luc2VydF9lcGkzMihYLCBJLCBOKSBcDQogICAgKyAgKF9fbTEyOGkpX19idWls
dGluX2lhMzJfdmVjX3NldF92NHNpKChfX3Y0c2kpKF9fbTEyOGkpKFgpLCBcDQogICAgKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKEkpLCAoaW50KShOKSkNCiAg
ICArDQogICAgKyNpZmRlZiBfX3g4Nl82NF9fDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YNCiAgICArLy8v
ICAgIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRoZW4gaW5zZXJ0
aW5nIHRoZSA2NC1iaXQNCiAgICArLy8vICAgIGludGVnZXIgcGFyYW1ldGVyIFxhIEksIHVzaW5n
IHRoZSBpbW1lZGlhdGUgdmFsdWUgcGFyYW1ldGVyIFxhIE4gYXMgYW4NCiAgICArLy8vICAgIGlu
c2VydGlvbiBsb2NhdGlvbiBzZWxlY3Rvci4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTEy
OGkgX21tX2luc2VydF9lcGk2NChfX20xMjhpIFgsIGxvbmcgbG9uZyBJLCBjb25zdCBpbnQgTik7
DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBJTlNSUSAvIFBJTlNSUSA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBYDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlDQogICAg
Ky8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSB0d28gZWxlbWVudHMgaW4gdGhlIHJl
c3VsdCB2ZWN0b3IgaXMgcmVwbGFjZWQNCiAgICArLy8vICAgIGJ5IFxhIEkuDQogICAgKy8vLyBc
cGFyYW0gSQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB0aGF0IGlzIHdyaXR0ZW4gdG8g
dGhlIHJlc3VsdCBiZWdpbm5pbmcgYXQgdGhlIG9mZnNldA0KICAgICsvLy8gICAgc3BlY2lmaWVk
IGJ5IFxhIE4uDQogICAgKy8vLyBccGFyYW0gTg0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZh
bHVlLiBCaXQgWzBdIHNwZWNpZmllcyB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQog
ICAgKy8vLyAgICB3aGljaCB0aGUgaW50ZWdlciBcYSBJIGlzIHdyaXR0ZW4uIFxuDQogICAgKy8v
LyAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24u
IFxuDQogICAgKy8vLyAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQg
Zm9yIGluc2VydGlvbi4gXG4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21t
X2luc2VydF9lcGk2NChYLCBJLCBOKSBcDQogICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
dmVjX3NldF92MmRpKChfX3YyZGkpKF9fbTEyOGkpKFgpLCBcDQogICAgKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKEkpLCAoaW50KShOKSkNCiAgICAr
I2VuZGlmIC8qIF9feDg2XzY0X18gKi8NCiAgICArDQogICAgKy8qIEV4dHJhY3QgaW50IGZyb20g
cGFja2VkIGludGVnZXIgYXJyYXkgYXQgaW5kZXguICBUaGlzIHJldHVybnMgdGhlIGVsZW1lbnQN
CiAgICArICogYXMgYSB6ZXJvIGV4dGVuZGVkIHZhbHVlLCBzbyBpdCBpcyB1bnNpZ25lZC4NCiAg
ICArICovDQogICAgKy8vLyBFeHRyYWN0cyBhbiA4LWJpdCBlbGVtZW50IGZyb20gdGhlIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFsxNiB4IGk4XSwgdXNpbmcgdGhlIGlt
bWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhIHNlbGVjdG9yLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29k
ZQ0KICAgICsvLy8gaW50IF9tbV9leHRyYWN0X2VwaTgoX19tMTI4aSBYLCBjb25zdCBpbnQgTik7
DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSQiAvIFBFWFRSQiA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBYDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gTg0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZh
bHVlLiBCaXRzIFszOjBdIHNwZWNpZnkgd2hpY2ggOC1iaXQgdmVjdG9yIGVsZW1lbnQgZnJvbQ0K
ICAgICsvLy8gICAgdGhlIGFyZ3VtZW50IFxhIFggdG8gZXh0cmFjdCBhbmQgY29weSB0byB0aGUg
cmVzdWx0LiBcbg0KICAgICsvLy8gICAgMDAwMDogQml0cyBbNzowXSBvZiBwYXJhbWV0ZXIgXGEg
WCBhcmUgZXh0cmFjdGVkLiBcbg0KICAgICsvLy8gICAgMDAwMTogQml0cyBbMTU6OF0gb2YgdGhl
IHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAwMDEwOiBCaXRz
IFsyMzoxNl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8v
LyAgICAwMDExOiBCaXRzIFszMToyNF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0
ZWQuIFxuDQogICAgKy8vLyAgICAwMTAwOiBCaXRzIFszOTozMl0gb2YgdGhlIHBhcmFtZXRlciBc
YSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAwMTAxOiBCaXRzIFs0Nzo0MF0gb2Yg
dGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAwMTEwOiBC
aXRzIFs1NTo0OF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAg
Ky8vLyAgICAwMTExOiBCaXRzIFs2Mzo1Nl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRy
YWN0ZWQuIFxuDQogICAgKy8vLyAgICAxMDAwOiBCaXRzIFs3MTo2NF0gb2YgdGhlIHBhcmFtZXRl
ciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAxMDAxOiBCaXRzIFs3OTo3Ml0g
b2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAxMDEw
OiBCaXRzIFs4Nzo4MF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQog
ICAgKy8vLyAgICAxMDExOiBCaXRzIFs5NTo4OF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBl
eHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAxMTAwOiBCaXRzIFsxMDM6OTZdIG9mIHRoZSBwYXJh
bWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KICAgICsvLy8gICAgMTEwMTogQml0cyBbMTEx
OjEwNF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAg
ICAxMTEwOiBCaXRzIFsxMTk6MTEyXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3Rl
ZC4gXG4NCiAgICArLy8vICAgIDExMTE6IEJpdHMgWzEyNzoxMjBdIG9mIHRoZSBwYXJhbWV0ZXIg
XGEgWCBhcmUgZXh0cmFjdGVkLg0KICAgICsvLy8gXHJldHVybnMgIEFuIHVuc2lnbmVkIGludGVn
ZXIsIHdob3NlIGxvd2VyIDggYml0cyBhcmUgc2VsZWN0ZWQgZnJvbSB0aGUNCiAgICArLy8vICAg
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMg
YXJlIGFzc2lnbmVkDQogICAgKy8vLyAgICB6ZXJvcy4NCiAgICArI2RlZmluZSBfbW1fZXh0cmFj
dF9lcGk4KFgsIE4pIFwNCiAgICArICAoaW50KSh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMy
X3ZlY19leHRfdjE2cWkoKF9fdjE2cWkpKF9fbTEyOGkpKFgpLCBcDQogICAgKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE4pKQ0KICAgICsN
CiAgICArLy8vIEV4dHJhY3RzIGEgMzItYml0IGVsZW1lbnQgZnJvbSB0aGUgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZg0KICAgICsvLy8gICAgWzQgeCBpMzJdLCB1c2luZyB0aGUgaW1tZWRpYXRl
IHZhbHVlIHBhcmFtZXRlciBcYSBOIGFzIGEgc2VsZWN0b3IuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAg
Ky8vLyBpbnQgX21tX2V4dHJhY3RfZXBpMzIoX19tMTI4aSBYLCBjb25zdCBpbnQgTik7DQogICAg
Ky8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBFWFRSRCAvIFBFWFRSRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBYDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQogICAgKy8vLyBccGFyYW0gTg0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBC
aXRzIFsxOjBdIHNwZWNpZnkgd2hpY2ggMzItYml0IHZlY3RvciBlbGVtZW50IGZyb20NCiAgICAr
Ly8vICAgIHRoZSBhcmd1bWVudCBcYSBYIHRvIGV4dHJhY3QgYW5kIGNvcHkgdG8gdGhlIHJlc3Vs
dC4gXG4NCiAgICArLy8vICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFgg
YXJlIGV4dHJhY3RlZC4gXG4NCiAgICArLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHBh
cmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQogICAgKy8vLyAgICAxMDogQml0cyBbOTU6
NjRdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KICAgICsvLy8gICAg
MTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHJhY3RlZC4NCiAg
ICArLy8vIFxyZXR1cm5zICBBbiBpbnRlZ2VyLCB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzZWxl
Y3RlZCBmcm9tIHRoZSAxMjgtYml0DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0
ZXIgYW5kIHRoZSByZW1haW5pbmcgYml0cyBhcmUgYXNzaWduZWQgemVyb3MuDQogICAgKyNkZWZp
bmUgX21tX2V4dHJhY3RfZXBpMzIoWCwgTikgXA0KICAgICsgIChpbnQpX19idWlsdGluX2lhMzJf
dmVjX2V4dF92NHNpKChfX3Y0c2kpKF9fbTEyOGkpKFgpLCAoaW50KShOKSkNCiAgICArDQogICAg
KyNpZmRlZiBfX3g4Nl82NF9fDQogICAgKy8vLyBFeHRyYWN0cyBhIDY0LWJpdCBlbGVtZW50IGZy
b20gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFsyIHggaTY0XSwg
dXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhIHNlbGVjdG9yLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBcY29kZQ0KICAgICsvLy8gbG9uZyBsb25nIF9tbV9leHRyYWN0X2VwaTY0KF9fbTEy
OGkgWCwgY29uc3QgaW50IE4pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVhUUlEgLyBQRVhUUlEg
PC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gWA0KICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8gXHBhcmFtIE4NCiAgICArLy8v
ICAgIEFuIGltbWVkaWF0ZSB2YWx1ZS4gQml0IFswXSBzcGVjaWZpZXMgd2hpY2ggNjQtYml0IHZl
Y3RvciBlbGVtZW50IGZyb20NCiAgICArLy8vICAgIHRoZSBhcmd1bWVudCBcYSBYIHRvIHJldHVy
bi4gXG4NCiAgICArLy8vICAgIDA6IEJpdHMgWzYzOjBdIGFyZSByZXR1cm5lZC4gXG4NCiAgICAr
Ly8vICAgIDE6IEJpdHMgWzEyNzo2NF0gYXJlIHJldHVybmVkLiBcbg0KICAgICsvLy8gXHJldHVy
bnMgIEEgNjQtYml0IGludGVnZXIuDQogICAgKyNkZWZpbmUgX21tX2V4dHJhY3RfZXBpNjQoWCwg
TikgXA0KICAgICsgIChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmVjX2V4dF92MmRpKChfX3Yy
ZGkpKF9fbTEyOGkpKFgpLCAoaW50KShOKSkNCiAgICArI2VuZGlmIC8qIF9feDg2XzY0ICovDQog
ICAgKw0KICAgICsvKiBTU0U0IDEyOC1iaXQgUGFja2VkIEludGVnZXIgQ29tcGFyaXNvbnMuICAq
Lw0KICAgICsvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGFyZSBhbGwNCiAgICArLy8vICAgIHplcm9zLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fTQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVzdGVkLg0K
ICAgICsvLy8gXHBhcmFtIF9fVg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uDQogICAgKy8v
LyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgYWxsIHplcm9zOyBGQUxT
RSBvdGhlcndpc2UuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX3Rlc3R6X3NpMTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikNCiAgICAr
ew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdHoxMjgoKF9fdjJkaSlfX00sIChf
X3YyZGkpX19WKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFRlc3RzIHdoZXRoZXIgdGhlIHNw
ZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBhcmUgYWxsDQogICAgKy8v
LyAgICBvbmVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fTQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGJpdHMgdG8gYmUgdGVzdGVkLg0KICAgICsvLy8gXHBhcmFtIF9fVg0KICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4g
b3BlcmFuZCBcYSBfX00uDQogICAgKy8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQg
Yml0cyBhcmUgYWxsIG9uZXM7IEZBTFNFIG90aGVyd2lzZS4NCiAgICArc3RhdGljIF9faW5saW5l
X18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdGVzdGNfc2kxMjgoX19tMTI4aSBf
X00sIF9fbTEyOGkgX19WKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0
ZXN0YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlfX1YpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGFyZQ0KICAgICsvLy8gICAgbmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBU
RVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fTQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8g
YmUgdGVzdGVkLg0KICAgICsvLy8gXHBhcmFtIF9fVg0KICAgICsvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBf
X00uDQogICAgKy8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgbmVp
dGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzOw0KICAgICsvLy8gICAgRkFMU0Ugb3RoZXJ3aXNl
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV90ZXN0bnpjX3NpMTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikNCiAgICArew0KICAgICsg
IHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdG56YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlf
X1YpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVk
IGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZSBhbGwNCiAgICArLy8vICAgIG9u
ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBpbnQgX21tX3Rlc3RfYWxsX29uZXMoX19tMTI4
aSBWKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBWDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQogICAgKy8vLyBc
cmV0dXJucyBUUlVFIGlmIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgb3BlcmFuZCBhcmUgYWxs
IHNldCB0byAxOyBGQUxTRQ0KICAgICsvLy8gICAgb3RoZXJ3aXNlLg0KICAgICsjZGVmaW5lIF9t
bV90ZXN0X2FsbF9vbmVzKFYpIF9tbV90ZXN0Y19zaTEyOCgoViksIF9tbV9jbXBlcV9lcGkzMigo
ViksIChWKSkpDQogICAgKw0KICAgICsvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJp
dHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZQ0KICAgICsvLy8gICAgbmVpdGhlciBh
bGwgemVyb3Mgbm9yIGFsbCBvbmVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gaW50IF9tbV90
ZXN0X21peF9vbmVzX3plcm9zKF9fbTEyOGkgTSwgX19tMTI4aSBWKTsNCiAgICArLy8vIFxlbmRj
b2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBNDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQogICAgKy8vLyBccGFyYW0gVg0KICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4g
b3BlcmFuZCBcYSBNLg0KICAgICsvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJp
dHMgYXJlIG5laXRoZXIgYWxsIHplcm9zIG5vciBhbGwgb25lczsNCiAgICArLy8vICAgIEZBTFNF
IG90aGVyd2lzZS4NCiAgICArI2RlZmluZSBfbW1fdGVzdF9taXhfb25lc196ZXJvcyhNLCBWKSBf
bW1fdGVzdG56Y19zaTEyOCgoTSksIChWKSkNCiAgICArDQogICAgKy8vLyBUZXN0cyB3aGV0aGVy
IHRoZSBzcGVjaWZpZWQgYml0cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYXJlIGFsbA0K
ICAgICsvLy8gICAgemVyb3MuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBpbnQgX21tX3Rlc3Rf
YWxsX3plcm9zKF9fbTEyOGkgTSwgX19tMTI4aSBWKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRF
U1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBN
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0
cyB0byBiZSB0ZXN0ZWQuDQogICAgKy8vLyBccGFyYW0gVg0KICAgICsvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBc
YSBNLg0KICAgICsvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIGFs
bCB6ZXJvczsgRkFMU0Ugb3RoZXJ3aXNlLg0KICAgICsjZGVmaW5lIF9tbV90ZXN0X2FsbF96ZXJv
cyhNLCBWKSBfbW1fdGVzdHpfc2kxMjggKChNKSwgKFYpKQ0KICAgICsNCiAgICArLyogU1NFNCA2
NC1iaXQgUGFja2VkIEludGVnZXIgQ29tcGFyaXNvbnMuICAqLw0KICAgICsvLy8gQ29tcGFyZXMg
ZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0DQog
ICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5Lg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVFRIC8gUENNUEVRUSA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX1YxDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQogICAgKy8vLyBccGFyYW0gX19WMg0KICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2Nt
cGVxX2VwaTY0KF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIChfX20xMjhpKSgoX192MmRpKV9fVjEgPT0gKF9fdjJkaSlfX1YyKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLyogU1NFNCBQYWNrZWQgSW50ZWdlciBTaWduLUV4dGVuc2lvbi4gICovDQogICAg
Ky8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50ZWdlciBl
bGVtZW50cyBvZiBhDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gdG8g
MTYtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluIGENCiAgICArLy8vICAgIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVsZW1lbnRzIG9mIHRoZSBpbnB1
dCB2ZWN0b3INCiAgICArLy8vICAgIGFyZSB1bnVzZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWEJXIC8gUE1PVlNYQlcgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WDQogICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVsZW1lbnRzIGFy
ZSBzaWduLQ0KICAgICsvLy8gICAgZXh0ZW5kZWQgdG8gMTYtYml0IHZhbHVlcy4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNp
Z24tZXh0ZW5kZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0ZXBpOF9lcGkxNihfX20xMjhpIF9fVikNCiAgICAr
ew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRp
bl9pYTMyX3Btb3ZzeGJ3MTI4ICgoX192MTZxaSlfX1YpOw0KICAgICsjZWxzZQ0KICAgICsgIC8q
IFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lvbiwgYnV0IF9f
djE2cWkgaXMgYSBjaGFyDQogICAgKyAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBvciB1bnNpZ25l
ZCwgc28gdXNlIF9fdjE2cXMuICovDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9j
b252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFzKV9fViwgKF9fdjE2
cXMpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhpKTsNCiAgICArI2VuZGlmDQog
ICAgK30NCiAgICArDQogICAgKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZm91
ciA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9y
IG9mIFsxNiB4IGk4XSB0byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYQ0KICAg
ICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgdXBwZXIgdHdlbHZlIGVs
ZW1lbnRzIG9mIHRoZSBpbnB1dA0KICAgICsvLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWEJEIC8gUE1P
VlNYQkQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGZvdXIg
OC1iaXQgZWxlbWVudHMgYXJlDQogICAgKy8vLyAgICBzaWduLWV4dGVuZGVkIHRvIDMyLWJpdCB2
YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBj
b250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dGVwaThfZXBpMzIoX19t
MTI4aSBfX1YpDQogICAgK3sNCiAgICArICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3Jt
cyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcg0KICAgICsgICAgIHdo
aWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLw0KICAgICsj
aWZkZWYgX19HTlVDX18NCiAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Bt
b3ZzeGJkMTI4ICgoX192MTZxaSlfX1YpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192
MTZxcylfX1YsIChfX3YxNnFzKV9fViwgMCwgMSwgMiwgMyksIF9fdjRzaSk7DQogICAgKyNlbmRp
Zg0KICAgICt9DQogICAgKw0KICAgICsvLy8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2Vy
IHR3byA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAgIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhl
bSBpbg0KICAgICsvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBl
ciBmb3VydGVlbiBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCiAgICArLy8vICAgIHZlY3RvciBhcmUg
dW51c2VkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
TU9WU1hCUSAvIFBNT1ZTWEJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fVg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uIFRo
ZSBsb3dlciB0d28gOC1iaXQgZWxlbWVudHMgYXJlDQogICAgKy8vLyAgICBzaWduLWV4dGVuZGVk
IHRvIDY0LWJpdCB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dGVw
aThfZXBpNjQoX19tMTI4aSBfX1YpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAg
KyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3hicTEyOCAoKF9fdjE2cWkp
X19WKTsNCiAgICArI2Vsc2UNCiAgICArICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3Jt
cyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcg0KICAgICsgICAgIHdo
aWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLw0KICAgICsg
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZs
ZXZlY3RvcigoX192MTZxcylfX1YsIChfX3YxNnFzKV9fViwgMCwgMSksIF9fdjJkaSk7DQogICAg
KyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhl
IGxvd2VyIGZvdXIgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KICAgICsvLy8gICAgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gMzItYml0IHZhbHVlcyBhbmQgcmV0
dXJucyB0aGVtIGluDQogICAgKy8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4g
VGhlIHVwcGVyIGZvdXIgZWxlbWVudHMgb2YgdGhlIGlucHV0DQogICAgKy8vLyAgICB2ZWN0b3Ig
YXJlIHVudXNlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUE1PVlNYV0QgLyBQTU9WU1hXRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX1YNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZd
LiBUaGUgbG93ZXIgZm91ciAxNi1iaXQgZWxlbWVudHMgYXJlDQogICAgKy8vLyAgICBzaWduLWV4
dGVuZGVkIHRvIDMyLWJpdCB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X2N2dGVwaTE2X2VwaTMyKF9fbTEyOGkgX19WKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNf
Xw0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4d2QxMjggKChf
X3Y4aGkpX19WKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1YsIChfX3Y4
aGkpX19WLCAwLCAxLCAyLCAzKSwgX192NHNpKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICAr
DQogICAgKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDE2LWJpdCBpbnRl
Z2VyIGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpMTZdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbg0KICAgICsvLy8g
ICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciBzaXggZWxlbWVudHMg
b2YgdGhlIGlucHV0DQogICAgKy8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYV1EgLyBQTU9WU1hXUSA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX1YNCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgdHdvIDE2LWJpdCBl
bGVtZW50cyBhcmUNCiAgICArLy8vICAgICBzaWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMu
DQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWlu
aW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dGVwaTE2X2VwaTY0KF9fbTEyOGkg
X19WKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4
aSkgX19idWlsdGluX2lhMzJfcG1vdnN4d3ExMjggKChfX3Y4aGkpX19WKTsNCiAgICArI2Vsc2UN
CiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGlu
X3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1YsIChfX3Y4aGkpX19WLCAwLCAxKSwgX192MmRpKTsN
CiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBv
ZiB0aGUgbG93ZXIgdHdvIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCiAgICArLy8vICAg
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdIHRvIDY0LWJpdCB2YWx1ZXMgYW5k
IHJldHVybnMgdGhlbSBpbg0KICAgICsvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2
NF0uIFRoZSB1cHBlciB0d28gZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3Rvcg0KICAgICsvLy8g
ICAgYXJlIHVudXNlZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUE1PVlNYRFEgLyBQTU9WU1hEUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX1YNCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MzJdLiBUaGUgbG93ZXIgdHdvIDMyLWJpdCBlbGVtZW50cyBhcmUNCiAgICArLy8vICAgIHNpZ24t
ZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFsdWVzLg0K
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW1fY3Z0ZXBpMzJfZXBpNjQoX19tMTI4aSBfX1YpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05V
Q19fDQogICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3hkcTEyOCAo
KF9fdjRzaSlfX1YpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0
aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNpKV9fViwgKF9f
djRzaSlfX1YsIDAsIDEpLCBfX3YyZGkpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAg
ICArLyogU1NFNCBQYWNrZWQgSW50ZWdlciBaZXJvLUV4dGVuc2lvbi4gICovDQogICAgKy8vLyBa
ZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50ZWdlciBlbGVtZW50
cyBvZiBhDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gdG8gMTYtYml0
IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluIGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9y
IG9mIFs4IHggaTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0
b3INCiAgICArLy8vICAgIGFyZSB1bnVzZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJXIC8gUE1PVlpYQlcgPC9jPiBpbnN0cnVjdGlvbi4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVsZW1lbnRzIGFyZQ0KICAg
ICsvLy8gICAgemVyby1leHRlbmRlZCB0byAxNi1iaXQgdmFsdWVzLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgemVyby1leHRl
bmRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9jdnRlcHU4X2VwaTE2KF9fbTEyOGkgX19WKQ0KICAgICt7DQogICAg
KyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJf
cG1vdnp4YncxMjggKChfX3YxNnFpKV9fVik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChf
X3YxNnF1KV9fViwgKF9fdjE2cXUpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhp
KTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBaZXJvLWV4dGVuZHMgZWFj
aCBvZiB0aGUgbG93ZXIgZm91ciA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCiAgICArLy8v
ICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1
cm5zIHRoZW0gaW4gYQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBU
aGUgdXBwZXIgdHdlbHZlIGVsZW1lbnRzIG9mIHRoZSBpbnB1dA0KICAgICsvLy8gICAgdmVjdG9y
IGFyZSB1bnVzZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBNT1ZaWEJEIC8gUE1PVlpYQkQgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19WDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4
XS4gVGhlIGxvd2VyIGZvdXIgOC1iaXQgZWxlbWVudHMgYXJlDQogICAgKy8vLyAgICB6ZXJvLWV4
dGVuZGVkIHRvIDMyLWJpdCB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVlcy4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21t
X2N2dGVwdThfZXBpMzIoX19tMTI4aSBfX1YpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19f
DQogICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92enhiZDEyOCAoKF9f
djE2cWkpX19WKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2cXUpX19WLCAoX192
MTZxdSlfX1YsIDAsIDEsIDIsIDMpLCBfX3Y0c2kpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28gOC1iaXQgaW50
ZWdlciBlbGVtZW50cyBvZiBhDQogICAgKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9m
IFsxNiB4IGk4XSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCiAgICArLy8v
ICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgZm91cnRlZW4gZWxl
bWVudHMgb2YgdGhlIGlucHV0DQogICAgKy8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlpYQlEgLyBQTU9W
WlhCUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX1YNCiAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgdHdvIDgt
Yml0IGVsZW1lbnRzIGFyZQ0KICAgICsvLy8gICAgemVyby1leHRlbmRlZCB0byA2NC1iaXQgdmFs
dWVzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29u
dGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jdnRlcHU4X2VwaTY0KF9fbTEy
OGkgX19WKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19t
MTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnp4YnExMjggKChfX3YxNnFpKV9fVik7DQogICAgKyNl
bHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVp
bHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnF1KV9fViwgKF9fdjE2cXUpX19WLCAwLCAxKSwgX192
MmRpKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBaZXJvLWV4dGVuZHMg
ZWFjaCBvZiB0aGUgbG93ZXIgZm91ciAxNi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQogICAg
Ky8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSB0byAzMi1iaXQgdmFs
dWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCiAgICArLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMzJdLiBUaGUgdXBwZXIgZm91ciBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCiAgICArLy8v
ICAgIHZlY3RvciBhcmUgdW51c2VkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQTU9WWlhXRCAvIFBNT1ZaWFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIF9fVg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbOCB4IGkxNl0uIFRoZSBsb3dlciBmb3VyIDE2LWJpdCBlbGVtZW50cyBhcmUNCiAgICArLy8v
ICAgIHplcm8tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQg
dmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fY3Z0ZXB1MTZfZXBpMzIoX19tMTI4aSBfX1YpDQogICAgK3sNCiAgICArI2lm
ZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92
enh3ZDEyOCAoKF9fdjhoaSlfX1YpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OGh1
KV9fViwgKF9fdjhodSlfX1YsIDAsIDEsIDIsIDMpLCBfX3Y0c2kpOw0KICAgICsjZW5kaWYNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28g
MTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KICAgICsvLy8gICAgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGlu
DQogICAgKy8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIHVwcGVyIHNp
eCBlbGVtZW50cyBvZiB0aGUgaW5wdXQgdmVjdG9yDQogICAgKy8vLyAgICBhcmUgdW51c2VkLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WWlhXUSAv
IFBNT1ZaWFdRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
Vg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRoZSBsb3dlciB0
d28gMTYtYml0IGVsZW1lbnRzIGFyZQ0KICAgICsvLy8gICAgemVyby1leHRlbmRlZCB0byA2NC1i
aXQgdmFsdWVzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2
NF0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jdnRlcHUxNl9lcGk2
NChfX20xMjhpIF9fVikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICByZXR1
cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3Z6eHdxMTI4ICgoX192OGhpKV9fVik7DQog
ICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9y
KF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aHUpX19WLCAoX192OGh1KV9fViwgMCwgMSks
IF9fdjJkaSk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gWmVyby1leHRl
bmRzIGVhY2ggb2YgdGhlIGxvd2VyIHR3byAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQog
ICAgKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXSB0byA2NC1iaXQg
dmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCiAgICArLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpNjRdLiBUaGUgdXBwZXIgdHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3IN
CiAgICArLy8vICAgIGFyZSB1bnVzZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWERRIC8gUE1PVlpYRFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19WDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggaTMyXS4gVGhlIGxvd2VyIHR3byAzMi1iaXQgZWxlbWVudHMgYXJlDQogICAgKy8v
LyAgICB6ZXJvLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQogICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVk
IHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX2N2dGVwdTMyX2VwaTY0KF9fbTEyOGkgX19WKQ0KICAgICt7DQogICAgKyNp
ZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1v
dnp4ZHExMjggKChfX3Y0c2kpX19WKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRz
dSlfX1YsIChfX3Y0c3UpX19WLCAwLCAxKSwgX192MmRpKTsNCiAgICArI2VuZGlmDQogICAgK30N
CiAgICArDQogICAgKy8qIFNTRTQgUGFjayB3aXRoIFVuc2lnbmVkIFNhdHVyYXRpb24uICAqLw0K
ICAgICsvLy8gQ29udmVydHMgMzItYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggMTI4LWJp
dCBpbnRlZ2VyIHZlY3Rvcg0KICAgICsvLy8gICAgb3BlcmFuZHMgaW50byAxNi1iaXQgdW5zaWdu
ZWQgaW50ZWdlcnMsIGFuZCByZXR1cm5zIHRoZSBwYWNrZWQgcmVzdWx0Lg0KICAgICsvLy8gICAg
VmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYgYXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFZhbHVl
cyBsZXNzIHRoYW4NCiAgICArLy8vICAgIDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFDS1VTRFcg
LyBQQUNLVVNEVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X1YxDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gRWFjaCAzMi1i
aXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCiAgICArLy8vICAgIHNpZ25lZCBpbnRlZ2VyIGFu
ZCBpcyBjb252ZXJ0ZWQgdG8gYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoDQogICAgKy8v
LyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkZGRiBhcmUgc2F0dXJhdGVk
IHRvIDB4RkZGRi4gVmFsdWVzDQogICAgKy8vLyAgICBsZXNzIHRoYW4gMHgwMDAwIGFyZSBzYXR1
cmF0ZWQgdG8gMHgwMDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMNCiAgICArLy8v
ICAgIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAg
Ky8vLyBccGFyYW0gX19WMg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkz
Ml0uIEVhY2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQogICAgKy8vLyAgICBzaWdu
ZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIg
d2l0aA0KICAgICsvLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYg
YXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFZhbHVlcw0KICAgICsvLy8gICAgbGVzcyB0aGFuIDB4
MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGkxNl0gdmFs
dWVzDQogICAgKy8vLyAgICBhcmUgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhl
IHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZd
IGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9wYWNrdXNfZXBpMzIoX19tMTI4
aSBfX1YxLCBfX20xMjhpIF9fVjIpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOGkpIF9f
YnVpbHRpbl9pYTMyX3BhY2t1c2R3MTI4KChfX3Y0c2kpX19WMSwgKF9fdjRzaSlfX1YyKTsNCiAg
ICArfQ0KICAgICsNCiAgICArLyogU1NFNCBNdWx0aXBsZSBQYWNrZWQgU3VtcyBvZiBBYnNvbHV0
ZSBEaWZmZXJlbmNlLiAgKi8NCiAgICArLy8vIFN1YnRyYWN0cyA4LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlcyBhbmQgY29tcHV0ZXMgdGhlIGFic29sdXRlDQogICAgKy8vLyAgICB2YWx1ZXMg
b2YgdGhlIGRpZmZlcmVuY2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3Rp
bmF0aW9uLg0KICAgICsvLy8gICAgVGhlbiBzdW1zIG9mIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNl
cyBhcmUgcmV0dXJuZWQgYWNjb3JkaW5nIHRvIHRoZSBiaXQNCiAgICArLy8vICAgIGZpZWxkcyBp
biB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhp
IF9tbV9tcHNhZGJ3X2VwdTgoX19tMTI4aSBYLCBfX20xMjhpIFksIGNvbnN0IGludCBNKTsNCiAg
ICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTVBTQURCVyAvIE1QU0FEQlcgPC9jPiBpbnN0cnVjdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gWA0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMTYgeCBpOF0uDQogICAgKy8vLyBccGFyYW0gWQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMTYgeCBpOF0uDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4gOC1i
aXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgdGhlIGFic29sdXRlIGRpZmZlcmVu
Y2VzIGFyZSB0bw0KICAgICsvLy8gICAgYmUgY2FsY3VsYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBm
b2xsb3dpbmcgYWxnb3JpdGhtOg0KICAgICsvLy8gICAgXGNvZGUNCiAgICArLy8vICAgIC8vIE0y
IHJlcHJlc2VudHMgYml0IDIgb2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kDQogICAgKy8vLyAgICAv
LyBNMTAgcmVwcmVzZW50cyBiaXRzIFsxOjBdIG9mIHRoZSBpbW1lZGlhdGUgb3BlcmFuZA0KICAg
ICsvLy8gICAgaSA9IE0yICogNDsNCiAgICArLy8vICAgIGogPSBNMTAgKiA0Ow0KICAgICsvLy8g
ICAgZm9yIChrID0gMDsgayA8IDg7IGsgPSBrICsgMSkgew0KICAgICsvLy8gICAgICBkMCA9IGFi
cyhYW2kgKyBrICsgMF0gLSBZW2ogKyAwXSk7DQogICAgKy8vLyAgICAgIGQxID0gYWJzKFhbaSAr
IGsgKyAxXSAtIFlbaiArIDFdKTsNCiAgICArLy8vICAgICAgZDIgPSBhYnMoWFtpICsgayArIDJd
IC0gWVtqICsgMl0pOw0KICAgICsvLy8gICAgICBkMyA9IGFicyhYW2kgKyBrICsgM10gLSBZW2og
KyAzXSk7DQogICAgKy8vLyAgICAgIHJba10gPSBkMCArIGQxICsgZDIgKyBkMzsNCiAgICArLy8v
ICAgIH0NCiAgICArLy8vICAgIFxlbmRjb2RlDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiB0aGUgc2V0cyBvZg0KICAgICsv
Ly8gICAgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KICAgICsj
ZGVmaW5lIF9tbV9tcHNhZGJ3X2VwdTgoWCwgWSwgTSkgXA0KICAgICsgIChfX20xMjhpKSBfX2J1
aWx0aW5faWEzMl9tcHNhZGJ3MTI4KChfX3YxNnFpKShfX20xMjhpKShYKSwgXA0KICAgICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShZKSwg
KE0pKQ0KICAgICsNCiAgICArLy8vIEZpbmRzIHRoZSBtaW5pbXVtIHVuc2lnbmVkIDE2LWJpdCBl
bGVtZW50IGluIHRoZSBpbnB1dCAxMjgtYml0DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCB1
MTZdIGFuZCByZXR1cm5zIGl0IGFuZCBhbG9uZyB3aXRoIGl0cyBpbmRleC4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEhNSU5QT1NVVyAvIFBITUlOUE9T
VVcgPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fVg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0uDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmFsdWUgd2hlcmUgYml0cyBbMTU6MF0gY29udGFpbiB0aGUg
bWluaW11bSB2YWx1ZSBmb3VuZA0KICAgICsvLy8gICAgaW4gcGFyYW1ldGVyIFxhIF9fViwgYml0
cyBbMTg6MTZdIGNvbnRhaW4gdGhlIGluZGV4IG9mIHRoZSBtaW5pbXVtIHZhbHVlDQogICAgKy8v
LyAgICBhbmQgdGhlIHJlbWFpbmluZyBiaXRzIGFyZSBzZXQgdG8gMC4NCiAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX21pbnBvc19lcHUx
NihfX20xMjhpIF9fVikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGlu
X2lhMzJfcGhtaW5wb3N1dzEyOCgoX192OGhpKV9fVik7DQogICAgK30NCiAgICArDQogICAgKy8q
IEhhbmRsZSB0aGUgc3NlNC4yIGRlZmluaXRpb25zIGhlcmUuICovDQogICAgKw0KICAgICsvKiBU
aGVzZSBkZWZpbml0aW9ucyBhcmUgbm9ybWFsbHkgaW4gbm1taW50cmluLmgsIGJ1dCBnY2MgcHV0
cyB0aGVtIGluIGhlcmUNCiAgICArICAgc28gd2UnbGwgZG8gdGhlIHNhbWUuICAqLw0KICAgICsN
CiAgICArI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICsjaWZkZWYgX19HTlVDX18NCiAg
ICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l
X18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQogICAgKyNlbHNlDQogICAg
KyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlNC4yIikpKQ0KICAgICsjZW5kaWYNCiAg
ICArDQogICAgKy8qIFRoZXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHdlJ3JlIGNv
bXBhcmluZy4gICovDQogICAgKyNkZWZpbmUgX1NJRERfVUJZVEVfT1BTICAgICAgICAgICAgICAg
ICAweDAwDQogICAgKyNkZWZpbmUgX1NJRERfVVdPUkRfT1BTICAgICAgICAgICAgICAgICAweDAx
DQogICAgKyNkZWZpbmUgX1NJRERfU0JZVEVfT1BTICAgICAgICAgICAgICAgICAweDAyDQogICAg
KyNkZWZpbmUgX1NJRERfU1dPUkRfT1BTICAgICAgICAgICAgICAgICAweDAzDQogICAgKw0KICAg
ICsvKiBUaGVzZSBzcGVjaWZ5IHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gb3BlcmF0aW9uLiAgKi8N
CiAgICArI2RlZmluZSBfU0lERF9DTVBfRVFVQUxfQU5ZICAgICAgICAgICAgIDB4MDANCiAgICAr
I2RlZmluZSBfU0lERF9DTVBfUkFOR0VTICAgICAgICAgICAgICAgIDB4MDQNCiAgICArI2RlZmlu
ZSBfU0lERF9DTVBfRVFVQUxfRUFDSCAgICAgICAgICAgIDB4MDgNCiAgICArI2RlZmluZSBfU0lE
RF9DTVBfRVFVQUxfT1JERVJFRCAgICAgICAgIDB4MGMNCiAgICArDQogICAgKy8qIFRoZXNlIG1h
Y3JvcyBzcGVjaWZ5IHRoZSBwb2xhcml0eSBvZiB0aGUgb3BlcmF0aW9uLiAgKi8NCiAgICArI2Rl
ZmluZSBfU0lERF9QT1NJVElWRV9QT0xBUklUWSAgICAgICAgIDB4MDANCiAgICArI2RlZmluZSBf
U0lERF9ORUdBVElWRV9QT0xBUklUWSAgICAgICAgIDB4MTANCiAgICArI2RlZmluZSBfU0lERF9N
QVNLRURfUE9TSVRJVkVfUE9MQVJJVFkgIDB4MjANCiAgICArI2RlZmluZSBfU0lERF9NQVNLRURf
TkVHQVRJVkVfUE9MQVJJVFkgIDB4MzANCiAgICArDQogICAgKy8qIFRoZXNlIG1hY3JvcyBhcmUg
dXNlZCBpbiBfbW1fY21wWHN0cmkoKSB0byBzcGVjaWZ5IHRoZSByZXR1cm4uICAqLw0KICAgICsj
ZGVmaW5lIF9TSUREX0xFQVNUX1NJR05JRklDQU5UICAgICAgICAgMHgwMA0KICAgICsjZGVmaW5l
IF9TSUREX01PU1RfU0lHTklGSUNBTlQgICAgICAgICAgMHg0MA0KICAgICsNCiAgICArLyogVGhl
c2UgbWFjcm9zIGFyZSB1c2VkIGluIF9tbV9jbXBYc3RyaSgpIHRvIHNwZWNpZnkgdGhlIHJldHVy
bi4gICovDQogICAgKyNkZWZpbmUgX1NJRERfQklUX01BU0sgICAgICAgICAgICAgICAgICAweDAw
DQogICAgKyNkZWZpbmUgX1NJRERfVU5JVF9NQVNLICAgICAgICAgICAgICAgICAweDQwDQogICAg
Kw0KICAgICsvKiBTU0U0LjIgUGFja2VkIENvbXBhcmlzb24gSW50cmluc2ljcy4gICovDQogICAg
Ky8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJp
c29uIG9mIHN0cmluZw0KICAgICsvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBs
ZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KICAgICsvLy8gICAg
XGEgQSBhbmQgXGEgQi4gUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50
aW5nIHRoZSByZXN1bHQNCiAgICArLy8vICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9jbXBpc3RybShfX20xMjhpIEEsIF9fbTEy
OGkgQiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUk0gLyBQQ01Q
SVNUUk0gPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJlZC4NCiAg
ICArLy8vIFxwYXJhbSBCDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAgY29t
cGFyZWQuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRl
IG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0K
ICAgICsvLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5k
IHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0KICAgICsvLy8gICAgdmFsdWUuIFxuDQogICAgKy8v
LyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KICAgICsv
Ly8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCiAgICArLy8vICAgICAgMDE6IDggdW5z
aWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KICAg
ICsvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06
IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCiAg
ICArLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJl
ZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCiAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJz
IGluIFxhIEEuIFxuDQogICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGlu
IFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgICAg
ICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1l
bnRzIGluIFxhIEEsDQogICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZv
ciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KICAgICsvLy8gICAgICAxMDogTWF0
Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBB
IGFuZA0KICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQogICAgKy8vLyAg
ICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBc
YSBBLiBcbg0KICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVy
Zm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KICAgICsvLy8gICAgICAgICAgICAg
ICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KICAgICsvLy8gICAgICAwMDog
Tm8gZWZmZWN0LiBcbg0KICAgICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4N
CiAgICArLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMTE6IE5lZ2F0
ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBl
cXVhbA0KICAgICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0K
ICAgICsvLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSByZXN1bHQgaXMgemVy
by1leHRlbmRlZCBvciBleHBhbmRlZCB0byAxNg0KICAgICsvLy8gICAgICAgICAgICAgYnl0ZXMu
IFxuDQogICAgKy8vLyAgICAgIDA6IFRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCB0byAxNiBi
eXRlcy4gXG4NCiAgICArLy8vICAgICAgMTogVGhlIHJlc3VsdCBpcyBleHBhbmRlZCB0byAxNiBi
eXRlcyAodGhpcyBleHBhbnNpb24gaXMgcGVyZm9ybWVkIGJ5DQogICAgKy8vLyAgICAgICAgIHJl
cGVhdGluZyBlYWNoIGJpdCA4IG9yIDE2IHRpbWVzKS4NCiAgICArLy8vIFxyZXR1cm5zIFJldHVy
bnMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG1hc2sg
b2YNCiAgICArLy8vICAgIHRoZSBjb21wYXJpc29uLg0KICAgICsjZGVmaW5lIF9tbV9jbXBpc3Ry
bShBLCBCLCBNKSBcDQogICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGlzdHJtMTI4
KChfX3YxNnFpKShfX20xMjhpKShBKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKE0pKQ0KICAgICsNCiAg
ICArLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBh
cmlzb24gb2Ygc3RyaW5nDQogICAgKy8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVk
IGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQogICAgKy8vLyAg
ICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1
bHQgaW5kZXggb2YgdGhlDQogICAgKy8vLyAgICBjb21wYXJpc29uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0K
ICAgICsvLy8gaW50IF9tbV9jbXBpc3RyaShfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50
IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KICAg
ICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIEENCiAgICArLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJlZC4NCiAgICArLy8vIFxwYXJhbSBC
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAgY29tcGFyZWQuDQogICAgKy8v
LyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lm
eWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KICAgICsvLy8gICAgd29y
ZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2Yg
dGhlIHJldHVybg0KICAgICsvLy8gICAgdmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxOjBd
OiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KICAgICsvLy8gICAgICAwMDogMTYg
dW5zaWduZWQgYnl0ZXMgXG4NCiAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4N
CiAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KICAgICsvLy8gICAgICAxMTog
OCBzaWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21w
YXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCiAgICArLy8vICAgICAgMDA6
IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkg
d2l0aCBhbGwNCiAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQog
ICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFy
ZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQog
ICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBl
bGVtZW50cyBpbiBcYSBBLiBcbg0KICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFj
aCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KICAgICsvLy8g
ICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQogICAgKy8vLyAgICAgIDExOiBTdWJzdHJp
bmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KICAgICsvLy8g
ICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBs
ZW1lbnQgb24gdGhlIGJpdA0KICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBcbg0KICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KICAg
ICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCiAgICArLy8vICAgICAgMTA6
IE5vIGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25s
eSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KICAgICsvLy8gICAg
ICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KICAgICsvLy8gICAgQml0IFs2
XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3Ig
dGhlDQogICAgKy8vLyAgICAgICAgICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQuIFxu
DQogICAgKy8vLyAgICAgIDA6IFRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2V0
IGJpdC4gXG4NCiAgICArLy8vICAgICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmlj
YW50IHNldCBiaXQuIFxuDQogICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIGFuIGludGVnZXIgcmVw
cmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhlIGNvbXBhcmlzb24uDQogICAgKyNkZWZp
bmUgX21tX2NtcGlzdHJpKEEsIEIsIE0pIFwNCiAgICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3Bj
bXBpc3RyaTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCiAgICArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKE0pKQ0KICAg
ICsNCiAgICArLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBh
IGNvbXBhcmlzb24gb2Ygc3RyaW5nDQogICAgKy8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBk
ZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQogICAg
Ky8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBy
ZXByZXNlbnRpbmcgdGhlIHJlc3VsdA0KICAgICsvLy8gICAgbWFzayBvZiB0aGUgY29tcGFyaXNv
bi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIF9fbTEyOGkgX21tX2NtcGVzdHJtKF9fbTEyOGkg
QSwgaW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVu
ZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQQ01QRVNUUk0gLyBQQ01QRVNUUk0gPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQog
ICAgKy8vLyAgICBjb21wYXJlZC4NCiAgICArLy8vIFxwYXJhbSBMQQ0KICAgICsvLy8gICAgQW4g
aW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4N
CiAgICArLy8vIFxwYXJhbSBCDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAg
Y29tcGFyZWQuDQogICAgKy8vLyBccGFyYW0gTEINCiAgICArLy8vICAgIEFuIGludGVnZXIgdGhh
dCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQogICAgKy8vLyBc
cGFyYW0gTQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWlu
ZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KICAgICsvLy8gICAgd29yZHMs
IHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhl
IHJldHVybg0KICAgICsvLy8gICAgdmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxOjBdOiBE
ZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KICAgICsvLy8gICAgICAwMDogMTYgdW5z
aWduZWQgYnl0ZXMgXG4NCiAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCiAg
ICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KICAgICsvLy8gICAgICAxMTogOCBz
aWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJp
c29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCiAgICArLy8vICAgICAgMDA6IFN1
YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0
aCBhbGwNCiAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQogICAg
Ky8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQg
dG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQogICAg
Ky8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVt
ZW50cyBpbiBcYSBBLiBcbg0KICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBw
YWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KICAgICsvLy8gICAg
ICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQogICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6
IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KICAgICsvLy8g
ICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBs
ZW1lbnQgb24gdGhlIGJpdA0KICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBcbg0KICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KICAg
ICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCiAgICArLy8vICAgICAgMTA6
IE5vIGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25s
eSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KICAgICsvLy8gICAg
ICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KICAgICsvLy8gICAgQml0IFs2
XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCBvciBleHBh
bmRlZCB0byAxNg0KICAgICsvLy8gICAgICAgICAgICAgYnl0ZXMuIFxuDQogICAgKy8vLyAgICAg
IDA6IFRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCB0byAxNiBieXRlcy4gXG4NCiAgICArLy8v
ICAgICAgMTogVGhlIHJlc3VsdCBpcyBleHBhbmRlZCB0byAxNiBieXRlcyAodGhpcyBleHBhbnNp
b24gaXMgcGVyZm9ybWVkIGJ5DQogICAgKy8vLyAgICAgICAgIHJlcGVhdGluZyBlYWNoIGJpdCA4
IG9yIDE2IHRpbWVzKS4gXG4NCiAgICArLy8vIFxyZXR1cm5zIFJldHVybnMgYSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG1hc2sgb2YNCiAgICArLy8vICAg
IHRoZSBjb21wYXJpc29uLg0KICAgICsjZGVmaW5lIF9tbV9jbXBlc3RybShBLCBMQSwgQiwgTEIs
IE0pIFwNCiAgICArICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY21wZXN0cm0xMjgoKF9fdjE2
cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCiAg
ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQogICAg
Kw0KICAgICsvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEg
Y29tcGFyaXNvbiBvZiBzdHJpbmcNCiAgICArLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRl
ZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCiAgICAr
Ly8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhl
IHJlc3VsdCBpbmRleCBvZiB0aGUNCiAgICArLy8vICAgIGNvbXBhcmlzb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxj
b2RlDQogICAgKy8vLyBpbnQgX21tX2NtcGVzdHJpKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhp
IEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkg
LyBQQ01QRVNUUkkgPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJl
ZC4NCiAgICArLy8vIFxwYXJhbSBMQQ0KICAgICsvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNp
ZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCiAgICArLy8vIFxwYXJhbSBC
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAgY29tcGFyZWQuDQogICAgKy8v
LyBccGFyYW0gTEINCiAgICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxl
bmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8g
ICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFy
YWN0ZXJzIGFyZSBieXRlcyBvcg0KICAgICsvLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBh
cmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0KICAgICsvLy8g
ICAgdmFsdWUuIFxuDQogICAgKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRh
dGEgZm9ybWF0LiBcbg0KICAgICsvLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCiAg
ICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgICAgMTA6IDE2
IHNpZ25lZCBieXRlcyBcbg0KICAgICsvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCiAg
ICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3Jl
Z2F0aW9uIG1ldGhvZC4gXG4NCiAgICArLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0
ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCiAgICArLy8vICAg
ICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQogICAgKy8vLyAgICAgIDAxOiBSYW5n
ZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBh
cmlzb24NCiAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBm
b3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQogICAgKy8vLyAgICAgICAgICBhbmQg
bGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0K
ICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRp
bmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1
YWxpdHkuIFxuDQogICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJz
dHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJt
aW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KICAg
ICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0K
ICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KICAgICsvLy8gICAgICAwMTogTmVnYXRl
IHRoZSBiaXQgbWFzay4gXG4NCiAgICArLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCiAgICAr
Ly8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGlu
ZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KICAgICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2Yg
XGEgQSBvciBcYSBCLiBcbg0KICAgICsvLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVy
IHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3IgdGhlDQogICAgKy8vLyAgICAgICAg
ICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQuIFxuDQogICAgKy8vLyAgICAgIDA6IFRo
ZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2V0IGJpdC4gXG4NCiAgICArLy8vICAg
ICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IHNldCBiaXQuIFxuDQogICAg
Ky8vLyBccmV0dXJucyBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQg
aW5kZXggb2YgdGhlIGNvbXBhcmlzb24uDQogICAgKyNkZWZpbmUgX21tX2NtcGVzdHJpKEEsIExB
LCBCLCBMQiwgTSkgXA0KICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJpMTI4KChf
X3YxNnFpKShfX20xMjhpKShBKSwgKGludCkoTEEpLCBcDQogICAgKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCiAg
ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkNCiAgICArDQog
ICAgKy8qIFNTRTQuMiBQYWNrZWQgQ29tcGFyaXNvbiBJbnRyaW5zaWNzIGFuZCBFRmxhZyBSZWFk
aW5nLiAgKi8NCiAgICArLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVy
Zm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQogICAgKy8vLyAgICBkYXRhIHdpdGggaW1wbGlj
aXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRz
DQogICAgKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGJpdCBtYXNrIGlz
IHplcm8gYW5kIHRoZSBsZW5ndGggb2YgdGhlDQogICAgKy8vLyAgICBzdHJpbmcgaW4gXGEgQiBp
cyB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQogICAgKy8vLw0KICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAg
Ky8vLyBpbnQgX21tX2NtcGlzdHJhKF9fbTEyOGkgQSwgX19tMTI4aSBCLCBjb25zdCBpbnQgTSk7
DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBJU1RSSSAvIFBDTVBJU1RSSSA8L2M+DQogICAgKy8v
LyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gQQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMgdG8gYmUNCiAgICArLy8vICAgIGNvbXBhcmVkLg0KICAgICsvLy8gXHBhcmFtIEINCiAg
ICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJlZC4NCiAgICArLy8vIFxw
YXJhbSBNDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5n
IHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQogICAgKy8vLyAgICB3b3JkcyBh
bmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KICAgICsvLy8gICAgQml0
cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCiAgICArLy8vICAgICAg
MDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdv
cmRzIFxuDQogICAgKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCiAgICArLy8vICAg
ICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQogICAgKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1p
bmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQogICAgKy8vLyAg
ICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVx
dWFsaXR5IHdpdGggYWxsDQogICAgKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBB
LiBcbg0KICAgICsvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlz
IGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQogICAgKy8vLyAgICAgICAgICBiYXNp
cyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBc
YSBBLA0KICAgICsvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWlu
ZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAgMTA6IE1hdGNoOiBDb21w
YXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCiAg
ICArLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KICAgICsvLy8gICAgICAxMTog
U3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4N
CiAgICArLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBv
bmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCiAgICArLy8vICAgICAgICAgICAgICAgIG1hc2sg
b2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCiAgICArLy8vICAgICAgMDA6IE5vIGVmZmVj
dC4gXG4NCiAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQogICAgKy8v
LyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJp
dCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCiAg
ICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4NCiAgICArLy8v
IFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgemVybyBhbmQgdGhlIGxlbmd0
aCBvZiB0aGUgc3RyaW5nIGluDQogICAgKy8vLyAgICBcYSBCIGlzIHRoZSBtYXhpbXVtOyBvdGhl
cndpc2UsIHJldHVybnMgMC4NCiAgICArI2RlZmluZSBfbW1fY21waXN0cmEoQSwgQiwgTSkgXA0K
ICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJpYTEyOCgoX192MTZxaSkoX19tMTI4
aSkoQSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2
cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCiAgICArDQogICAgKy8vLyBVc2VzIHRoZSBpbW1l
ZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KICAg
ICsvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29u
dGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0
dXJucyAxIGlmIHRoZSBiaXQgbWFzayBpcyBub24temVybywgb3RoZXJ3aXNlLCByZXR1cm5zDQog
ICAgKy8vLyAgICAwLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gaW50IF9tbV9jbXBpc3RyYyhf
X20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
Q01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAg
ICBjb21wYXJlZC4NCiAgICArLy8vIFxwYXJhbSBCDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0K
ICAgICsvLy8gICAgY29tcGFyZWQuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4g
OC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJz
IGFyZSBieXRlcyBvcg0KICAgICsvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlz
b24gdG8gcGVyZm9ybS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3Vy
Y2UgZGF0YSBmb3JtYXQuIFxuDQogICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBc
bg0KICAgICsvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KICAgICsvLy8gICAgICAx
MDogMTYgc2lnbmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBc
bg0KICAgICsvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQg
YWdncmVnYXRpb24gbWV0aG9kLiBcbg0KICAgICsvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNo
YXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KICAgICsv
Ly8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAgMDE6
IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUg
Y29tcGFyaXNvbg0KICAgICsvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCiAgICArLy8vICAgICAgICAg
IGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEu
IFxuDQogICAgKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVz
cG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQogICAgKy8vLyAgICAgICAgICBcYSBCIGZv
ciBlcXVhbGl0eS4gXG4NCiAgICArLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9y
IHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQogICAgKy8vLyAgICBCaXRzIFs1OjRdOiBE
ZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0
DQogICAgKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMu
IFxuDQogICAgKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAgIDAxOiBO
ZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KICAgICsvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0K
ICAgICsvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGgg
YW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQogICAgKy8vLyAgICAgICAgICB0byB0aGUgc2l6
ZSBvZiBcYSBBIG9yIFxhIEIuDQogICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGJp
dCBtYXNrIGlzIG5vbi16ZXJvLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCiAgICArI2RlZmluZSBf
bW1fY21waXN0cmMoQSwgQiwgTSkgXA0KICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlz
dHJpYzEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCiAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCiAgICAr
DQogICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBj
b21wYXJpc29uIG9mIHN0cmluZw0KICAgICsvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVm
aW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KICAgICsv
Ly8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyBiaXQgMCBvZiB0aGUgcmVzdWx0aW5nIGJpdCBt
YXNrLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gaW50IF9tbV9jbXBpc3RybyhfX20xMjhpIEEs
IF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkg
LyBQQ01QSVNUUkkgPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJl
ZC4NCiAgICArLy8vIFxwYXJhbSBCDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8g
ICAgY29tcGFyZWQuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW1t
ZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRl
cyBvcg0KICAgICsvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVy
Zm9ybS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBm
b3JtYXQuIFxuDQogICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KICAgICsv
Ly8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KICAgICsvLy8gICAgICAxMDogMTYgc2ln
bmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KICAgICsv
Ly8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRp
b24gbWV0aG9kLiBcbg0KICAgICsvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBp
biBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KICAgICsvLy8gICAgICAg
ICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAgMDE6IFJhbmdlczog
RWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNv
bg0KICAgICsvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBl
dmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCiAgICArLy8vICAgICAgICAgIGFuZCBsZXNz
IHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQogICAg
Ky8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBj
aGFyYWN0ZXJzIGluIFxhIEEgYW5kDQogICAgKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0
eS4gXG4NCiAgICArLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9yIHN1YnN0cmlu
ZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQogICAgKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUg
d2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQogICAgKy8v
LyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQogICAg
Ky8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhl
IGJpdCBtYXNrLiBcbg0KICAgICsvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0KICAgICsvLy8g
ICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXgg
bGVzcyB0aGFuIG9yIGVxdWFsDQogICAgKy8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBB
IG9yIFxhIEIuIFxuDQogICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIGJpdCAwIG9mIHRoZSByZXN1
bHRpbmcgYml0IG1hc2suDQogICAgKyNkZWZpbmUgX21tX2NtcGlzdHJvKEEsIEIsIE0pIFwNCiAg
ICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaW8xMjgoKF9fdjE2cWkpKF9fbTEyOGkp
KEEpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFp
KShfX20xMjhpKShCKSwgKGludCkoTSkpDQogICAgKw0KICAgICsvLy8gVXNlcyB0aGUgaW1tZWRp
YXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCiAgICAr
Ly8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRh
aW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCiAgICArLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVy
bnMgMSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQSBpcyBsZXNzIHRoYW4NCiAg
ICArLy8vICAgIHRoZSBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNv
ZGUNCiAgICArLy8vIGludCBfbW1fY21waXN0cnMoX19tMTI4aSBBLCBfX20xMjhpIEIsIGNvbnN0
IGludCBNKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElTVFJJIDwvYz4N
CiAgICArLy8vIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBBDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAgY29tcGFyZWQuDQogICAgKy8vLyBccGFy
YW0gQg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCiAgICArLy8vICAgIGNvbXBhcmVkLg0KICAg
ICsvLy8gXHBhcmFtIE0NCiAgICArLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNw
ZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCiAgICArLy8vICAg
IHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQogICAgKy8v
LyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KICAgICsv
Ly8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCiAgICArLy8vICAgICAgMDE6IDggdW5z
aWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KICAg
ICsvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06
IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCiAg
ICArLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJl
ZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCiAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJz
IGluIFxhIEEuIFxuDQogICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGlu
IFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgICAg
ICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1l
bnRzIGluIFxhIEEsDQogICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZv
ciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KICAgICsvLy8gICAgICAxMDogTWF0
Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBB
IGFuZA0KICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQogICAgKy8vLyAg
ICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBc
YSBBLiBcbg0KICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVy
Zm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KICAgICsvLy8gICAgICAgICAgICAg
ICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KICAgICsvLy8gICAgICAwMDog
Tm8gZWZmZWN0LiBcbg0KICAgICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4N
CiAgICArLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMTE6IE5lZ2F0
ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBl
cXVhbA0KICAgICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0K
ICAgICsvLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBp
biBcYSBBIGlzIGxlc3MgdGhhbiB0aGUNCiAgICArLy8vICAgIG1heGltdW0sIG90aGVyd2lzZSwg
cmV0dXJucyAwLg0KICAgICsjZGVmaW5lIF9tbV9jbXBpc3RycyhBLCBCLCBNKSBcDQogICAgKyAg
KGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cmlzMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwg
XA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19t
MTI4aSkoQiksIChpbnQpKE0pKQ0KICAgICsNCiAgICArLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBv
cGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQogICAgKy8vLyAg
ICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQg
aW4gc291cmNlIG9wZXJhbmRzDQogICAgKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEg
aWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMgbGVzcyB0aGFuDQogICAgKy8v
LyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQog
ICAgKy8vLyBpbnQgX21tX2NtcGlzdHJ6KF9fbTEyOGkgQSwgX19tMTI4aSBCLCBjb25zdCBpbnQg
TSk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBJU1RSSSAvIFBDTVBJU1RSSSA8L2M+DQogICAg
Ky8vLyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gQQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMgdG8gYmUNCiAgICArLy8vICAgIGNvbXBhcmVkLg0KICAgICsvLy8gXHBhcmFtIEIN
CiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJlZC4NCiAgICArLy8v
IFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5
aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQogICAgKy8vLyAgICB3b3Jk
cyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KICAgICsvLy8gICAg
Qml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCiAgICArLy8vICAg
ICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVk
IHdvcmRzIFxuDQogICAgKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCiAgICArLy8v
ICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQogICAgKy8vLyAgICBCaXRzIFszOjJdOiBEZXRl
cm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQogICAgKy8v
LyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9y
IGVxdWFsaXR5IHdpdGggYWxsDQogICAgKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBc
YSBBLiBcbg0KICAgICsvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBC
IGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQogICAgKy8vLyAgICAgICAgICBi
YXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBp
biBcYSBBLA0KICAgICsvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2Rk
LWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAgMTA6IE1hdGNoOiBD
b21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQN
CiAgICArLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KICAgICsvLy8gICAgICAx
MTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4g
XG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0g
YSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCiAgICArLy8vICAgICAgICAgICAgICAgIG1h
c2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCiAgICArLy8vICAgICAgMDA6IE5vIGVm
ZmVjdC4gXG4NCiAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQogICAg
Ky8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAgIDExOiBOZWdhdGUgdGhl
IGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwN
CiAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4NCiAgICArLy8v
IFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQiBp
cyBsZXNzIHRoYW4gdGhlDQogICAgKy8vLyAgICBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMg
MC4NCiAgICArI2RlZmluZSBfbW1fY21waXN0cnooQSwgQiwgTSkgXA0KICAgICsgIChpbnQpX19i
dWlsdGluX2lhMzJfcGNtcGlzdHJpejEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCiAgICAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIp
LCAoaW50KShNKSkNCiAgICArDQogICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBc
YSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KICAgICsvLy8gICAgZGF0YSB3
aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJj
ZSBvcGVyYW5kcw0KICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBi
aXQgbWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQ0KICAgICsvLy8gICAgc3RyaW5n
IGluIFxhIEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBc
Y29kZQ0KICAgICsvLy8gaW50IF9tbV9jbXBlc3RyYShfX20xMjhpIEEsIGludCBMQSwgX19tMTI4
aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJJ
IC8gUENNUEVTVFJJIDwvYz4NCiAgICArLy8vIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBBDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAgY29tcGFy
ZWQuDQogICAgKy8vLyBccGFyYW0gTEENCiAgICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVj
aWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuDQogICAgKy8vLyBccGFyYW0g
Qg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCiAgICArLy8vICAgIGNvbXBhcmVkLg0KICAgICsv
Ly8gXHBhcmFtIExCDQogICAgKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBs
ZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLg0KICAgICsvLy8gXHBhcmFtIE0NCiAgICArLy8v
ICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hh
cmFjdGVycyBhcmUgYnl0ZXMgb3INCiAgICArLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBj
b21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQogICAgKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1p
bmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KICAgICsvLy8gICAgICAwMDogMTYgdW5zaWduZWQg
Ynl0ZXMgXG4NCiAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCiAgICArLy8v
ICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KICAgICsvLy8gICAgICAxMTogOCBzaWduZWQg
d29yZHMgXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5
cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCiAgICArLy8vICAgICAgMDA6IFN1YnNldDog
RWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwN
CiAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQogICAgKy8vLyAg
ICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEg
QS4gVGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQogICAgKy8vLyAg
ICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBp
biBcYSBBLiBcbg0KICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9m
IGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KICAgICsvLy8gICAgICAgICAg
XGEgQiBmb3IgZXF1YWxpdHkuIFxuDQogICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJj
aCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KICAgICsvLy8gICAgQml0
cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQg
b24gdGhlIGJpdA0KICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNv
biByZXN1bHRzLiBcbg0KICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KICAgICsvLy8g
ICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCiAgICArLy8vICAgICAgMTA6IE5vIGVm
ZmVjdC4gXG4NCiAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3Ig
Yml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KICAgICsvLy8gICAgICAgICAg
dG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLg0KICAgICsvLy8gXHJldHVybnMgUmV0dXJucyAx
IGlmIHRoZSBiaXQgbWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4N
CiAgICArLy8vICAgIFxhIEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0K
ICAgICsjZGVmaW5lIF9tbV9jbXBlc3RyYShBLCBMQSwgQiwgTEIsIE0pIFwNCiAgICArICAoaW50
KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaWExMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50
KShMQSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2
cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGludCkoTSkpDQogICAgKw0KICAgICsvLy8gVXNlcyB0aGUgaW1tZWRp
YXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCiAgICAr
Ly8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRh
aW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCiAgICArLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVy
bnMgMSBpZiB0aGUgcmVzdWx0aW5nIG1hc2sgaXMgbm9uLXplcm8sIG90aGVyd2lzZSwNCiAgICAr
Ly8vICAgIHJldHVybnMgMC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIGludCBfbW1fY21wZXN0
cmMoX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQog
ICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+DQogICAgKy8vLyBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gQQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMgdG8gYmUNCiAgICArLy8vICAgIGNvbXBhcmVkLg0KICAgICsvLy8gXHBhcmFtIExBDQogICAg
Ky8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmlu
ZyBpbiBcYSBBLg0KICAgICsvLy8gXHBhcmFtIEINCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQog
ICAgKy8vLyAgICBjb21wYXJlZC4NCiAgICArLy8vIFxwYXJhbSBMQg0KICAgICsvLy8gICAgQW4g
aW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4N
CiAgICArLy8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFu
ZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQogICAgKy8v
LyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KICAg
ICsvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCiAg
ICArLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDAxOiA4
IHVuc2lnbmVkIHdvcmRzIFxuDQogICAgKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4N
CiAgICArLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQogICAgKy8vLyAgICBCaXRzIFsz
OjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxu
DQogICAgKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29t
cGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQogICAgKy8vLyAgICAgICAgICB0aGUgY2hhcmFj
dGVycyBpbiBcYSBBLiBcbg0KICAgICsvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3Rl
ciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQogICAgKy8vLyAg
ICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBl
bGVtZW50cyBpbiBcYSBBLA0KICAgICsvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVh
bCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAgMTA6
IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4g
XGEgQSBhbmQNCiAgICArLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KICAgICsv
Ly8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMg
b2YgXGEgQS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRv
IHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCiAgICArLy8vICAgICAgICAg
ICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCiAgICArLy8vICAgICAg
MDA6IE5vIGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2su
IFxuDQogICAgKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAgIDExOiBO
ZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4g
b3IgZXF1YWwNCiAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4g
XG4NCiAgICArLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgcmVzdWx0aW5nIG1hc2sgaXMg
bm9uLXplcm8sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KICAgICsjZGVmaW5lIF9tbV9jbXBlc3Ry
YyhBLCBMQSwgQiwgTEIsIE0pIFwNCiAgICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3Ry
aWMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwNCiAgICArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShM
QiksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTSkp
DQogICAgKw0KICAgICsvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJm
b3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCiAgICArLy8vICAgIGRhdGEgd2l0aCBleHBsaWNp
dGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMN
CiAgICArLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGlu
ZyBiaXQgbWFzay4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gXGNvZGUNCiAgICArLy8vIGludCBfbW1fY21wZXN0cm8oX19t
MTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQogICAgKy8v
LyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+DQogICAgKy8vLyBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gQQ0KICAgICsvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8g
YmUNCiAgICArLy8vICAgIGNvbXBhcmVkLg0KICAgICsvLy8gXHBhcmFtIExBDQogICAgKy8vLyAg
ICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBc
YSBBLg0KICAgICsvLy8gXHBhcmFtIEINCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8v
LyAgICBjb21wYXJlZC4NCiAgICArLy8vIFxwYXJhbSBMQg0KICAgICsvLy8gICAgQW4gaW50ZWdl
ciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4NCiAgICAr
Ly8vIFxwYXJhbSBNDQogICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVj
aWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQogICAgKy8vLyAgICB3
b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KICAgICsvLy8g
ICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCiAgICArLy8v
ICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDAxOiA4IHVuc2ln
bmVkIHdvcmRzIFxuDQogICAgKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCiAgICAr
Ly8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQogICAgKy8vLyAgICBCaXRzIFszOjJdOiBE
ZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQogICAg
Ky8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQg
Zm9yIGVxdWFsaXR5IHdpdGggYWxsDQogICAgKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBp
biBcYSBBLiBcbg0KICAgICsvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBc
YSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQogICAgKy8vLyAgICAgICAg
ICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50
cyBpbiBcYSBBLA0KICAgICsvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Ig
b2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAgMTA6IE1hdGNo
OiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBh
bmQNCiAgICArLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KICAgICsvLy8gICAg
ICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEg
QS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZv
cm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCiAgICArLy8vICAgICAgICAgICAgICAg
IG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCiAgICArLy8vICAgICAgMDA6IE5v
IGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQog
ICAgKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAgIDExOiBOZWdhdGUg
dGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1
YWwNCiAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4NCiAgICAr
Ly8vIFxyZXR1cm5zIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4NCiAg
ICArI2RlZmluZSBfbW1fY21wZXN0cm8oQSwgTEEsIEIsIExCLCBNKSBcDQogICAgKyAgKGludClf
X2J1aWx0aW5faWEzMl9wY21wZXN0cmlvMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgKGludCko
TEEpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFp
KShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpbnQpKE0pKQ0KICAgICsNCiAgICArLy8vIFVzZXMgdGhlIGltbWVkaWF0
ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQogICAgKy8v
LyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWlu
ZWQgaW4gc291cmNlIG9wZXJhbmRzDQogICAgKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5z
IDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEgaXMgbGVzcyB0aGFuDQogICAg
Ky8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2Rl
DQogICAgKy8vLyBpbnQgX21tX2NtcGVzdHJzKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhpIEIs
IGludCBMQiwgY29uc3QgaW50IE0pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgLyBQ
Q01QRVNUUkkgPC9jPg0KICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQogICAgKy8vLyAgICBjb21wYXJlZC4N
CiAgICArLy8vIFxwYXJhbSBMQQ0KICAgICsvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmll
cyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCiAgICArLy8vIFxwYXJhbSBCDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAgY29tcGFyZWQuDQogICAgKy8vLyBc
cGFyYW0gTEINCiAgICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0
aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQogICAgKy8vLyBccGFyYW0gTQ0KICAgICsvLy8gICAg
QW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0
ZXJzIGFyZSBieXRlcyBvcg0KICAgICsvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBh
cmlzb24gdG8gcGVyZm9ybS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBz
b3VyY2UgZGF0YSBmb3JtYXQuIFxuDQogICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRl
cyBcbg0KICAgICsvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KICAgICsvLy8gICAg
ICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQogICAgKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3Jk
cyBcbg0KICAgICsvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBh
bmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KICAgICsvLy8gICAgICAwMDogU3Vic2V0OiBFYWNo
IGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KICAg
ICsvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCiAgICArLy8vICAgICAg
MDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBU
aGUgY29tcGFyaXNvbg0KICAgICsvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCiAgICArLy8vICAgICAg
ICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxh
IEEuIFxuDQogICAgKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29y
cmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQogICAgKy8vLyAgICAgICAgICBcYSBC
IGZvciBlcXVhbGl0eS4gXG4NCiAgICArLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxh
IEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQogICAgKy8vLyAgICBCaXRzIFs1
OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBpbiB0
aGUgYml0DQogICAgKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJl
c3VsdHMuIFxuDQogICAgKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQogICAgKy8vLyAgICAg
IDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KICAgICsvLy8gICAgICAxMDogTm8gZWZmZWN0
LiBcbg0KICAgICsvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRz
IHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQogICAgKy8vLyAgICAgICAgICB0byB0
aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuDQogICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIDEg
aWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEgaXMgbGVzcyB0aGFuIHRoZQ0KICAg
ICsvLy8gICAgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQogICAgKyNkZWZpbmUgX21t
X2NtcGVzdHJzKEEsIExBLCBCLCBMQiwgTSkgXA0KICAgICsgIChpbnQpX19idWlsdGluX2lhMzJf
cGNtcGVzdHJpczEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIChpbnQpKExBKSwgXA0KICAgICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiks
IChpbnQpKExCKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
aW50KShNKSkNCiAgICArDQogICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBN
IHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KICAgICsvLy8gICAgZGF0YSB3aXRo
IGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBv
cGVyYW5kcw0KICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBsZW5n
dGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlzIGxlc3MgdGhhbg0KICAgICsvLy8gICAgdGhlIG1h
eGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gaW50
IF9tbV9jbXBlc3RyeihfX20xMjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0
IGludCBNKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJJIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIEENCiAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQog
ICAgKy8vLyAgICBjb21wYXJlZC4NCiAgICArLy8vIFxwYXJhbSBMQQ0KICAgICsvLy8gICAgQW4g
aW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4N
CiAgICArLy8vIFxwYXJhbSBCDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KICAgICsvLy8gICAg
Y29tcGFyZWQuDQogICAgKy8vLyBccGFyYW0gTEINCiAgICArLy8vICAgIEFuIGludGVnZXIgdGhh
dCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQogICAgKy8vLyBc
cGFyYW0gTQ0KICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWlu
ZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KICAgICsvLy8gICAgd29yZHMg
YW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4NCiAgICArLy8vICAgIEJp
dHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQogICAgKy8vLyAgICAg
IDAwOiAxNiB1bnNpZ25lZCBieXRlcyAgXG4NCiAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQg
d29yZHMgXG4NCiAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KICAgICsvLy8g
ICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVy
bWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCiAgICArLy8v
ICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3Ig
ZXF1YWxpdHkgd2l0aCBhbGwNCiAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxh
IEEuIFxuDQogICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIg
aXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCiAgICArLy8vICAgICAgICAgIGJh
c2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGlu
IFxhIEEsDQogICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQt
aW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENv
bXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0K
ICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQogICAgKy8vLyAgICAgIDEx
OiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBc
bg0KICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBh
IG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KICAgICsvLy8gICAgICAgICAgICAgICAgbWFz
ayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KICAgICsvLy8gICAgICAwMDogTm8gZWZm
ZWN0LiBcbg0KICAgICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCiAgICAr
Ly8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCiAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUg
Yml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0K
ICAgICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLg0KICAgICsvLy8g
XHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlz
IGxlc3MgdGhhbiB0aGUNCiAgICArLy8vICAgIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAw
Lg0KICAgICsjZGVmaW5lIF9tbV9jbXBlc3RyeihBLCBMQSwgQiwgTEIsIE0pIFwNCiAgICArICAo
aW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaXoxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAo
aW50KShMQSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9f
djE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCiAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQogICAgKw0KICAgICsvKiBTU0U0LjIgQ29tcGFy
ZSBQYWNrZWQgRGF0YSAtLSBHcmVhdGVyIFRoYW4uICAqLw0KICAgICsvLy8gQ29tcGFyZXMgZWFj
aCBvZiB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0DQogICAg
Ky8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhl
IGZpcnN0IG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhl
IHNlY29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQQ01QR1RRIC8gUENNUEdUUSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX1YxDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQogICAgKy8vLyBccGFyYW0gX19WMg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGd0X2VwaTY0KF9fbTEyOGkgX19WMSwg
X19tMTI4aSBfX1YyKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjhpKSgoX192MmRpKV9f
VjEgPiAoX192MmRpKV9fVjIpOw0KICAgICt9DQogICAgKw0KICAgICsvKiBTU0U0LjIgQWNjdW11
bGF0ZSBDUkMzMi4gICovDQogICAgKy8vLyBBZGRzIHRoZSB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJh
bmQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YgdGhlDQogICAgKy8vLyAgICB1bnNpZ25lZCBj
aGFyIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gQ1JDMzJCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
Qw0KICAgICsvLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIGFkZCB0byB0aGUg
Q1JDLTMyQyBjaGVja3N1bSBvZiBvcGVyYW5kDQogICAgKy8vLyAgICBcYSAgX19ELg0KICAgICsv
Ly8gXHBhcmFtIF9fRA0KICAgICsvLy8gICAgQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlciBvcGVy
YW5kIHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4NCiAgICArLy8vIFxyZXR1
cm5zIFRoZSByZXN1bHQgb2YgYWRkaW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNo
ZWNrc3VtIG9mDQogICAgKy8vLyAgICBvcGVyYW5kIFxhIF9fRC4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3JjMzJfdTgo
dW5zaWduZWQgaW50IF9fQywgdW5zaWduZWQgY2hhciBfX0QpDQogICAgK3sNCiAgICArICByZXR1
cm4gX19idWlsdGluX2lhMzJfY3JjMzJxaShfX0MsIF9fRCk7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBBZGRzIHRoZSB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gdGhlIENSQy0zMkMgY2hl
Y2tzdW0gb2YgdGhlDQogICAgKy8vLyAgICB1bnNpZ25lZCBzaG9ydCBvcGVyYW5kLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENSQzMyVyA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX0MNCiAgICArLy8vICAgIEFuIHVu
c2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Yg
b3BlcmFuZA0KICAgICsvLy8gICAgXGEgX19ELg0KICAgICsvLy8gXHBhcmFtIF9fRA0KICAgICsv
Ly8gICAgQW4gdW5zaWduZWQgMTYtYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUg
dGhlIENSQy0zMkMgY2hlY2tzdW0uDQogICAgKy8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFk
ZGluZyBvcGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KICAgICsvLy8g
ICAgb3BlcmFuZCBcYSBfX0QuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NyYzMyX3UxNih1bnNpZ25lZCBpbnQgX19DLCB1
bnNpZ25lZCBzaG9ydCBfX0QpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJf
Y3JjMzJoaShfX0MsIF9fRCk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBBZGRzIHRoZSBmaXJz
dCB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YNCiAg
ICArLy8vICAgIHRoZSBzZWNvbmQgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENSQzMyTCA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX0MNCiAgICArLy8vICAgIEFuIHVuc2ln
bmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Ygb3Bl
cmFuZA0KICAgICsvLy8gICAgXGEgX19ELg0KICAgICsvLy8gXHBhcmFtIF9fRA0KICAgICsvLy8g
ICAgQW4gdW5zaWduZWQgMzItYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUgdGhl
IENSQy0zMkMgY2hlY2tzdW0uDQogICAgKy8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGlu
ZyBvcGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KICAgICsvLy8gICAg
b3BlcmFuZCBcYSBfX0QuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBfX0RF
RkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NyYzMyX3UzMih1bnNpZ25lZCBpbnQgX19DLCB1bnNp
Z25lZCBpbnQgX19EKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMy
c2koX19DLCBfX0QpOw0KICAgICt9DQogICAgKw0KICAgICsjaWZkZWYgX194ODZfNjRfXw0KICAg
ICsvLy8gQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNo
ZWNrc3VtIG9mIHRoZQ0KICAgICsvLy8gICAgdW5zaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFu
ZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMzMlEg
PC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19DDQogICAgKy8v
LyAgICBBbiB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNo
ZWNrc3VtIG9mIG9wZXJhbmQNCiAgICArLy8vICAgIFxhIF9fRC4NCiAgICArLy8vIFxwYXJhbSBf
X0QNCiAgICArLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQgdXNlZCB0
byBjb21wdXRlIHRoZSBDUkMtMzJDIGNoZWNrc3VtLg0KICAgICsvLy8gXHJldHVybnMgVGhlIHJl
c3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YN
CiAgICArLy8vICAgIG9wZXJhbmQgXGEgX19ELg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB1bnNp
Z25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jcmMzMl91NjQodW5z
aWduZWQgbG9uZyBsb25nIF9fQywgdW5zaWduZWQgbG9uZyBsb25nIF9fRCkNCiAgICArew0KICAg
ICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jcmMzMmRpKF9fQywgX19EKTsNCiAgICArfQ0KICAg
ICsjZW5kaWYgLyogX194ODZfNjRfXyAqLw0KICAgICsNCiAgICArI3VuZGVmIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICsNCiAgICArI2luY2x1ZGUgPHBvcGNudGludHJpbi5oPg0KICAgICsNCiAg
ICArI2VuZGlmIC8qIF9fU01NSU5UUklOX0ggKi8NCiAgICBkaWZmIC0tZ2l0IGEvaW5jbHVkZS90
bW1pbnRyaW4uaCBiL2luY2x1ZGUvdG1taW50cmluLmgNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KICAgIGluZGV4IDAwMDAwMDAuLjdhOTQwOTYNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysr
IGIvaW5jbHVkZS90bW1pbnRyaW4uaA0KICAgIEBAIC0wLDAgKzEsNzkwIEBADQogICAgKy8qPT09
LS0tLSB0bW1pbnRyaW4uaCAtIFNTU0UzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS09PT0NCiAgICArICoNCiAgICArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg
Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0K
ICAgICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls
ZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KICAgICsgKiBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
DQogICAgKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCiAgICArICogY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQogICAgKyAq
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
DQogICAgKyAqDQogICAgKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQogICAgKyAqIGFsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KICAgICsgKg0KICAgICsg
KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUg0KICAgICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCiAgICArICogRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFDQogICAgKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCiAgICArICogTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwNCiAgICArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KICAgICsgKiBUSEUgU09GVFdB
UkUuDQogICAgKyAqDQogICAgKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCiAgICArICovDQogICAg
Kw0KICAgICsjaWZuZGVmIF9fVE1NSU5UUklOX0gNCiAgICArI2RlZmluZSBfX1RNTUlOVFJJTl9I
DQogICAgKw0KICAgICsjaW5jbHVkZSA8cG1taW50cmluLmg+DQogICAgKw0KICAgICsvKiBEZWZp
bmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUu
ICovDQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRS
UyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0
aWZpY2lhbF9fKSkNCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmli
dXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p
KQ0KICAgICsjZWxzZQ0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzc2UzIiks
IF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQogICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9f
dGFyZ2V0X18oIm1teCxzc3NlMyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KICAgICsj
ZW5kaWYNCiAgICArDQogICAgKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFj
aCBvZiB0aGUgcGFja2VkIDgtYml0IHNpZ25lZA0KICAgICsvLy8gICAgaW50ZWdlcnMgaW4gdGhl
IHNvdXJjZSBvcGVyYW5kIGFuZCBzdG9yZXMgdGhlIDgtYml0IHVuc2lnbmVkIGludGVnZXINCiAg
ICArLy8vICAgIHJlc3VsdHMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFCU0IgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs4IHgg
aThdLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhl
IG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
U19NTVgNCiAgICArX21tX2Fic19waTgoX19tNjQgX19hKQ0KICAgICt7DQogICAgKyAgICByZXR1
cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhYnNiKChfX3Y4cWkpX19hKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBw
YWNrZWQgOC1iaXQgc2lnbmVkDQogICAgKy8vLyAgICBpbnRlZ2VycyBpbiB0aGUgc291cmNlIG9w
ZXJhbmQgYW5kIHN0b3JlcyB0aGUgOC1iaXQgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAg
cmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSBcYyBWUEFCU0IgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
YWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJh
bmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9hYnNfZXBpOChfX20xMjhpIF9fYSkNCiAgICArew0KICAgICsgICAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhYnNiMTI4KChfX3YxNnFpKV9fYSk7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUg
cGFja2VkIDE2LWJpdCBzaWduZWQNCiAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ug
b3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8g
ICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBQQUJTVyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0K
ICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
YWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJh
bmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgN
CiAgICArX21tX2Fic19waTE2KF9fbTY0IF9fYSkNCiAgICArew0KICAgICsgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wYWJzdygoX192NGhpKV9fYSk7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2Vk
IDE2LWJpdCBzaWduZWQNCiAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFu
ZCBhbmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAgcmVz
dWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSBcYyBWUEFCU1cgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJz
b2x1dGUgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAg
K19tbV9hYnNfZXBpMTYoX19tMTI4aSBfX2EpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9wYWJzdzEyOCgoX192OGhpKV9fYSk7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFj
a2VkIDMyLWJpdCBzaWduZWQNCiAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3Bl
cmFuZCBhbmQgc3RvcmVzIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAg
cmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSBcYyBQQUJTRCBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19hDQogICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KICAg
ICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJz
b2x1dGUgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAg
ICArX21tX2Fic19waTMyKF9fbTY0IF9fYSkNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202
NClfX2J1aWx0aW5faWEzMl9wYWJzZCgoX192MnNpKV9fYSk7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDMy
LWJpdCBzaWduZWQNCiAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBh
bmQgc3RvcmVzIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAgcmVzdWx0
cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSBcYyBWUEFCU0QgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQogICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1
dGUgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV9hYnNfZXBpMzIoX19tMTI4aSBfX2EpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5faWEzMl9wYWJzZDEyOCgoX192NHNpKV9fYSk7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBDb25jYXRlbmF0ZXMgdGhlIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJh
bmRzLCBhbmQNCiAgICArLy8vICAgIHJpZ2h0LXNoaWZ0cyB0aGUgcmVzdWx0IGJ5IHRoZSBudW1i
ZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUNCiAgICArLy8vICAgIG9wZXJh
bmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjhpIF9tbV9hbGlnbnJfZXBpOChfX20x
MjhpIGEsIF9fbTEyOGkgYiwgY29uc3QgaW50IG4pOw0KICAgICsvLy8gXGVuZGNvZGUNCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFMSUdO
UiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBiDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
ICAgICsvLy8gXHBhcmFtIG4NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNp
ZnlpbmcgaG93IG1hbnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25jYXRl
bmF0ZWQgcmlnaHQtc2hpZnRlZA0KICAgICsvLy8gICAgdmFsdWUuDQogICAgKyNkZWZpbmUgX21t
X2FsaWducl9lcGk4KGEsIGIsIG4pIFwNCiAgICArICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9w
YWxpZ25yMTI4KChfX3YxNnFpKShfX20xMjhpKShhKSwgXA0KICAgICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAobikpDQogICAgKw0K
ICAgICsvLy8gQ29uY2F0ZW5hdGVzIHRoZSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJh
bmRzLCBhbmQgcmlnaHQtc2hpZnRzDQogICAgKy8vLyAgICB0aGUgcmVzdWx0IGJ5IHRoZSBudW1i
ZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
XGNvZGUNCiAgICArLy8vIF9fbTY0IF9tbV9hbGlnbnJfcGk4KF9fbTY0IGEsIF9fbTY0IGIsIGNv
bnN0IGludCBuKTsNCiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBBTElHTlIgaW5zdHJ1Y3Rpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIGENCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBb
OCB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8g
XHBhcmFtIGINCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIG4NCiAgICAr
Ly8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1hbnkgYnl0ZXMgdG8g
cmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByaWdodC1zaGlmdGVkDQogICAg
Ky8vLyAgICB2YWx1ZS4NCiAgICArI2RlZmluZSBfbW1fYWxpZ25yX3BpOChhLCBiLCBuKSBcDQog
ICAgKyAgKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhbGlnbnIoKF9fdjhxaSkoX19tNjQpKGEpLCAo
X192OHFpKShfX202NCkoYiksIChuKSkNCiAgICArDQogICAgKy8vLyBIb3Jpem9udGFsbHkgYWRk
cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZA0KICAg
ICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs4IHggaTE2XS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSEFERFcgaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
OCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAg
Ky8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBs
b3dlciBiaXRzIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8vLyBccGFy
YW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCiAgICArLy8vICAgIGhvcml6b250
YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhl
DQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0KICAg
ICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2hhZGRfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEy
OGkgX19iKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cGhhZGR3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRh
aW5lZCBpbiAyIHBhY2tlZA0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTMy
XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSEFEREQg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4gVGhlDQogICAgKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVl
cyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGlu
YXRpb24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUN
CiAgICArLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4g
dGhlIHVwcGVyIGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhv
cml6b250YWwgc3VtcyBvZg0KICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2hhZGRfZXBp
MzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9f
bTEyOGkpX19idWlsdGluX2lhMzJfcGhhZGRkMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9fYik7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQg
cGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZA0KICAgICsvLy8gICAgNjQtYml0
IHZlY3RvcnMgb2YgWzQgeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgXGMgUEhBRERXIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAgKy8vLyAgICBob3Jpem9udGFs
IHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0K
ICAgICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAg
ICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuIFRoZQ0KICAgICsvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1
ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIGRlc3Rp
bmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBj
b250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YgYm90aA0KICAgICsvLy8gICAgb3BlcmFu
ZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgN
CiAgICArX21tX2hhZGRfcGkxNihfX202NCBfX2EsIF9fbTY0IF9fYikNCiAgICArew0KICAgICsg
ICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9waGFkZHcoKF9fdjRoaSlfX2EsIChfX3Y0
aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBh
ZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQogICAgKy8vLyAg
ICA2NC1iaXQgdmVjdG9ycyBvZiBbMiB4IGkzMl0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBQSEFEREQgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCiAgICArLy8vICAgIGhv
cml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMg
b2YgdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAg
ICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAgKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2Yg
dGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mIHRoZQ0KICAgICsvLy8g
ICAgZGVzdGluYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIg
eCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZiBib3RoDQogICAgKy8vLyAg
ICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWA0KICAgICtfbW1faGFkZF9waTMyKF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7
DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BoYWRkZCgoX192MnNpKV9f
YSwgKF9fdjJzaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gSG9yaXpvbnRhbGx5IGFk
ZHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMiBwYWNrZWQNCiAg
ICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbOCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3Jl
YXRlciB0aGFuIDB4N0ZGRiBhcmUNCiAgICArLy8vICAgIHNhdHVyYXRlZCB0byAweDdGRkYuIE5l
Z2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvDQogICAgKy8vLyAg
ICAweDgwMDAuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBW
UEhBRERTVyBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCiAgICArLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0
aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlDQogICAgKy8vLyAg
ICBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuIFRoZQ0KICAgICsvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0
b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0K
ICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmlu
ZyB0aGUgaG9yaXpvbnRhbCBzYXR1cmF0ZWQNCiAgICArLy8vICAgIHN1bXMgb2YgYm90aCBvcGVy
YW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CiAgICArX21tX2hhZGRzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0K
ICAgICsgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BoYWRkc3cxMjgoKF9fdjho
aSlfX2EsIChfX3Y4aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEhvcml6b250YWxs
eSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2Vk
DQogICAgKy8vLyAgICA2NC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMg
Z3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUNCiAgICArLy8vICAgIHNhdHVyYXRlZCB0byAweDdGRkYu
IE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvDQogICAgKy8v
LyAgICAweDgwMDAuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBc
YyBQSEFERFNXIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAgKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2Yg
dGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KICAgICsvLy8g
ICAgZGVzdGluYXRpb24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJp
dCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuIFRoZQ0KICAgICsvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0
b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0K
ICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5n
IHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZA0KICAgICsvLy8gICAgc3VtcyBvZiBib3RoIG9wZXJh
bmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1Y
DQogICAgK19tbV9oYWRkc19waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7DQogICAg
KyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BoYWRkc3coKF9fdjRoaSlfX2EsIChf
X3Y0aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEhvcml6b250YWxseSBzdWJ0cmFj
dHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KICAgICsvLy8g
ICAgcGFja2VkIDEyOC1iaXQgdmVjdG9ycyBvZiBbOCB4IGkxNl0uDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJXIGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KICAg
ICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0
b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4
IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAgKy8v
LyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVk
IGluIHRoZSB1cHBlciBiaXRzIG9mDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRo
ZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzDQogICAgKy8vLyAgICBvZiBib3RoIG9wZXJhbmRzLg0K
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW1faHN1Yl9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICAg
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waHN1YncxMjgoKF9fdjhoaSlfX2EsIChf
X3Y4aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEhvcml6b250YWxseSBzdWJ0cmFj
dHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KICAgICsvLy8g
ICAgcGFja2VkIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkzMl0uDQogICAgKy8vLw0KICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJEIGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KICAg
ICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0
b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAgKy8v
LyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVk
IGluIHRoZSB1cHBlciBiaXRzIG9mDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQogICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRo
ZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzDQogICAgKy8vLyAgICBvZiBib3RoIG9wZXJhbmRzLg0K
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtf
bW1faHN1Yl9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQogICAgK3sNCiAgICArICAg
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waHN1YmQxMjgoKF9fdjRzaSlfX2EsIChf
X3Y0c2kpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEhvcml6b250YWxseSBzdWJ0cmFj
dHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KICAgICsvLy8g
ICAgcGFja2VkIDY0LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIU1VCVyBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KICAgICsv
Ly8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3Jl
ZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCiAgICArLy8vICAg
IGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4g
dGhlIHVwcGVyIGJpdHMgb2YNCiAgICArLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8v
IFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgaG9y
aXpvbnRhbCBkaWZmZXJlbmNlcw0KICAgICsvLy8gICAgb2YgYm90aCBvcGVyYW5kcy4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1f
aHN1Yl9waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Boc3VidygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNl
bnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyDQogICAgKy8vLyAgICBwYWNrZWQgNjQt
Yml0IHZlY3RvcnMgb2YgWzIgeCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgXGMgUEhTVUJEIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFp
bmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQogICAgKy8vLyAgICBob3Jpem9u
dGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dl
ciBiaXRzIG9mDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KICAgICsvLy8gICAgaG9yaXpvbnRhbCBk
aWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0
cyBvZg0KICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSA2
NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZl
cmVuY2VzDQogICAgKy8vLyAgICBvZiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQogICAgK19tbV9oc3ViX3BpMzIoX19t
NjQgX19hLCBfX202NCBfX2IpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfcGhzdWJkKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2
YWx1ZXMgY29udGFpbmVkIGluIDINCiAgICArLy8vICAgIHBhY2tlZCAxMjgtYml0IHZlY3RvcnMg
b2YgWzggeCBpMTZdLiBQb3NpdGl2ZSBkaWZmZXJlbmNlcyBncmVhdGVyIHRoYW4NCiAgICArLy8v
ICAgIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgZGlmZmVyZW5jZXMg
bGVzcyB0aGFuIDB4ODAwMCBhcmUNCiAgICArLy8vICAgIHNhdHVyYXRlZCB0byAweDgwMDAuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJTVyBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLiBUaGUNCiAgICArLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0
aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCiAgICArLy8vICAgIHRo
ZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuIFRoZQ0KICAgICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2
YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZg0KICAgICsvLy8gICAgdGhlIGRl
c3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkx
Nl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzYXR1cmF0ZWQNCiAgICArLy8vICAgIGRpZmZl
cmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9oc3Vic19lcGkxNihfX20xMjhpIF9fYSwgX19t
MTI4aSBfX2IpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9waHN1YnN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1
ZXMgY29udGFpbmVkIGluIDINCiAgICArLy8vICAgIHBhY2tlZCA2NC1iaXQgdmVjdG9ycyBvZiBb
NCB4IGkxNl0uIFBvc2l0aXZlIGRpZmZlcmVuY2VzIGdyZWF0ZXIgdGhhbg0KICAgICsvLy8gICAg
MHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBkaWZmZXJlbmNlcyBsZXNz
IHRoYW4gMHg4MDAwIGFyZQ0KICAgICsvLy8gICAgc2F0dXJhdGVkIHRvIDB4ODAwMC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIU1VCU1cgaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQg
dmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
LiBUaGUNCiAgICArLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFs
dWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCiAgICArLy8vICAgIHRoZSBkZXN0
aW5hdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3Rv
ciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhl
DQogICAgKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBh
cmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRp
b24uDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRh
aW5pbmcgdGhlIGhvcml6b250YWwgc2F0dXJhdGVkDQogICAgKy8vLyAgICBkaWZmZXJlbmNlcyBv
ZiBib3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlNfTU1YDQogICAgK19tbV9oc3Vic19waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0K
ICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Boc3Vic3coKF9f
djRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIE11bHRpcGxp
ZXMgY29ycmVzcG9uZGluZyBwYWlycyBvZiBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50ZWdlcg0K
ICAgICsvLy8gICAgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQg
YW5kIHBhY2tlZCA4LWJpdCBzaWduZWQNCiAgICArLy8vICAgIGludGVnZXIgdmFsdWVzIGNvbnRh
aW5lZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLCBhZGRzIHBhaXJzIG9mDQogICAgKy8v
LyAgICBjb250aWd1b3VzIHByb2R1Y3RzIHdpdGggc2lnbmVkIHNhdHVyYXRpb24sIGFuZCB3cml0
ZXMgdGhlIDE2LWJpdCBzdW1zIHRvDQogICAgKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBiaXRz
IGluIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyAgICBGb3IgZXhhbXBsZSwg
Yml0cyBbNzowXSBvZiBib3RoIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkLCBiaXRzIFsxNTo4XSBv
Zg0KICAgICsvLy8gICAgYm90aCBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCwgYW5kIHRoZSBzdW0g
b2YgYm90aCByZXN1bHRzIGlzIHdyaXR0ZW4gdG8NCiAgICArLy8vICAgIGJpdHMgWzE1OjBdIG9m
IHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIFxjIFZQTUFERFVCU1cgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNlY29uZCBzb3VyY2Ugb3Bl
cmFuZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBzdW1zIG9mIHByb2R1Y3RzIG9mIGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzOiBc
bg0KICAgICsvLy8gICAgXGEgUjAgOj0gKFxhIF9fYTAgKiBcYSBfX2IwKSArIChcYSBfX2ExICog
XGEgX19iMSkgXG4NCiAgICArLy8vICAgIFxhIFIxIDo9IChcYSBfX2EyICogXGEgX19iMikgKyAo
XGEgX19hMyAqIFxhIF9fYjMpIFxuDQogICAgKy8vLyAgICBcYSBSMiA6PSAoXGEgX19hNCAqIFxh
IF9fYjQpICsgKFxhIF9fYTUgKiBcYSBfX2I1KSBcbg0KICAgICsvLy8gICAgXGEgUjMgOj0gKFxh
IF9fYTYgKiBcYSBfX2I2KSArIChcYSBfX2E3ICogXGEgX19iNykgXG4NCiAgICArLy8vICAgIFxh
IFI0IDo9IChcYSBfX2E4ICogXGEgX19iOCkgKyAoXGEgX19hOSAqIFxhIF9fYjkpIFxuDQogICAg
Ky8vLyAgICBcYSBSNSA6PSAoXGEgX19hMTAgKiBcYSBfX2IxMCkgKyAoXGEgX19hMTEgKiBcYSBf
X2IxMSkgXG4NCiAgICArLy8vICAgIFxhIFI2IDo9IChcYSBfX2ExMiAqIFxhIF9fYjEyKSArIChc
YSBfX2ExMyAqIFxhIF9fYjEzKSBcbg0KICAgICsvLy8gICAgXGEgUjcgOj0gKFxhIF9fYTE0ICog
XGEgX19iMTQpICsgKFxhIF9fYTE1ICogXGEgX19iMTUpDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tYWRkdWJzX2VwaTE2KF9fbTEy
OGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3BtYWRkdWJzdzEyOCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBNdWx0aXBsaWVzIGNvcnJlc3BvbmRpbmcgcGFpcnMgb2Yg
cGFja2VkIDgtYml0IHVuc2lnbmVkIGludGVnZXINCiAgICArLy8vICAgIHZhbHVlcyBjb250YWlu
ZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kIGFuZCBwYWNrZWQgOC1iaXQgc2lnbmVkDQog
ICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIHNlY29uZCBzb3VyY2Ug
b3BlcmFuZCwgYWRkcyBwYWlycyBvZg0KICAgICsvLy8gICAgY29udGlndW91cyBwcm9kdWN0cyB3
aXRoIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgd3JpdGVzIHRoZSAxNi1iaXQgc3VtcyB0bw0KICAg
ICsvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAg
Ky8vLw0KICAgICsvLy8gICAgRm9yIGV4YW1wbGUsIGJpdHMgWzc6MF0gb2YgYm90aCBvcGVyYW5k
cyBhcmUgbXVsdGlwbGllZCwgYml0cyBbMTU6OF0gb2YNCiAgICArLy8vICAgIGJvdGggb3BlcmFu
ZHMgYXJlIG11bHRpcGxpZWQsIGFuZCB0aGUgc3VtIG9mIGJvdGggcmVzdWx0cyBpcyB3cml0dGVu
IHRvDQogICAgKy8vLyAgICBiaXRzIFsxNTowXSBvZiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQTUFERFVCU1cgaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQogICAgKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdW1zIG9mIHByb2R1Y3RzIG9mIGJv
dGgNCiAgICArLy8vICAgIG9wZXJhbmRzOiBcbg0KICAgICsvLy8gICAgXGEgUjAgOj0gKFxhIF9f
YTAgKiBcYSBfX2IwKSArIChcYSBfX2ExICogXGEgX19iMSkgXG4NCiAgICArLy8vICAgIFxhIFIx
IDo9IChcYSBfX2EyICogXGEgX19iMikgKyAoXGEgX19hMyAqIFxhIF9fYjMpIFxuDQogICAgKy8v
LyAgICBcYSBSMiA6PSAoXGEgX19hNCAqIFxhIF9fYjQpICsgKFxhIF9fYTUgKiBcYSBfX2I1KSBc
bg0KICAgICsvLy8gICAgXGEgUjMgOj0gKFxhIF9fYTYgKiBcYSBfX2I2KSArIChcYSBfX2E3ICog
XGEgX19iNykNCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KICAgICtfbW1fbWFkZHVic19waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7
DQogICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtYWRkdWJzdygoX192OHFp
KV9fYSwgKF9fdjhxaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTXVsdGlwbGllcyBw
YWNrZWQgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgdHJ1bmNhdGVzIHRoZSAzMi1iaXQN
CiAgICArLy8vICAgIHByb2R1Y3RzIHRvIHRoZSAxOCBtb3N0IHNpZ25pZmljYW50IGJpdHMgYnkg
cmlnaHQtc2hpZnRpbmcsIHJvdW5kcyB0aGUNCiAgICArLy8vICAgIHRydW5jYXRlZCB2YWx1ZSBi
eSBhZGRpbmcgMSwgYW5kIHdyaXRlcyBiaXRzIFsxNjoxXSB0byB0aGUgZGVzdGluYXRpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUE1VTEhSU1cgaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQog
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5n
IHRoZSByb3VuZGVkIGFuZCBzY2FsZWQNCiAgICArLy8vICAgIHByb2R1Y3RzIG9mIGJvdGggb3Bl
cmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9tdWxocnNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7
DQogICAgKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGhyc3cxMjgoKF9f
djhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIE11bHRpcGxp
ZXMgcGFja2VkIDE2LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMsIHRydW5jYXRlcyB0aGUgMzIt
Yml0DQogICAgKy8vLyAgICBwcm9kdWN0cyB0byB0aGUgMTggbW9zdCBzaWduaWZpY2FudCBiaXRz
IGJ5IHJpZ2h0LXNoaWZ0aW5nLCByb3VuZHMgdGhlDQogICAgKy8vLyAgICB0cnVuY2F0ZWQgdmFs
dWUgYnkgYWRkaW5nIDEsIGFuZCB3cml0ZXMgYml0cyBbMTY6MV0gdG8gdGhlIGRlc3RpbmF0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUE1VTEhSU1cg
aW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVj
dG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
ICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5n
IHRoZSByb3VuZGVkIGFuZCBzY2FsZWQNCiAgICArLy8vICAgIHByb2R1Y3RzIG9mIGJvdGggb3Bl
cmFuZHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19N
TVgNCiAgICArX21tX211bGhyc19waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7DQog
ICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxocnN3KChfX3Y0aGkpX19h
LCAoX192NGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb3BpZXMgdGhlIDgtYml0
IGludGVnZXJzIGZyb20gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIHRoZQ0KICAgICsvLy8g
ICAgZGVzdGluYXRpb24gb3IgY2xlYXJzIDgtYml0IHZhbHVlcyBpbiB0aGUgZGVzdGluYXRpb24s
IGFzIHNwZWNpZmllZCBieQ0KICAgICsvLy8gICAgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQU0hVRkIgaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyBjb250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8NCiAgICArLy8vICAg
IHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb246DQogICAgKy8vLyAgICBCaXQgNzogXG4NCiAg
ICArLy8vICAgIDE6IENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4gdGhlIGRlc3RpbmF0
aW9uLiBcbg0KICAgICsvLy8gICAgMDogQ29weSB0aGUgc2VsZWN0ZWQgc291cmNlIGJ5dGUgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBc
bg0KICAgICsvLy8gICAgQml0cyBbNjo0XSBSZXNlcnZlZC4gIFxuDQogICAgKy8vLyAgICBCaXRz
IFszOjBdIHNlbGVjdCB0aGUgc291cmNlIGJ5dGUgdG8gYmUgY29waWVkLg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBvciBj
bGVhcmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX3NodWZmbGVfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2h1ZmIx
MjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8g
Q29waWVzIHRoZSA4LWJpdCBpbnRlZ2VycyBmcm9tIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIHRv
IHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24gb3IgY2xlYXJzIDgtYml0IHZhbHVlcyBpbiB0
aGUgZGVzdGluYXRpb24sIGFzIHNwZWNpZmllZCBieQ0KICAgICsvLy8gICAgdGhlIHNlY29uZCBz
b3VyY2Ugb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IFxjIFBTSFVGQiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMg
dG8gYmUgY29waWVkLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8N
CiAgICArLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb246DQogICAgKy8vLyAgICBC
aXQgNzogXG4NCiAgICArLy8vICAgIDE6IENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4g
dGhlIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAgMDogQ29weSB0aGUgc2VsZWN0ZWQgc291
cmNlIGJ5dGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUNCiAgICArLy8vICAgIGRl
c3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAgQml0cyBbMzowXSBzZWxlY3QgdGhlIHNvdXJjZSBi
eXRlIHRvIGJlIGNvcGllZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBvciBjbGVhcmVkIHZhbHVlcy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fc2h1ZmZs
ZV9waTgoX19tNjQgX19hLCBfX202NCBfX2IpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfcHNodWZiKChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQogICAg
K30NCiAgICArDQogICAgKy8vLyBGb3IgZWFjaCA4LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBz
b3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCiAgICArLy8vICAgIHRoZSBmb2xsb3dpbmcg
YWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCiAgICAr
Ly8vDQogICAgKy8vLyAgICBJZiB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdh
dGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KICAgICsvLy8gICAgY29tcGxlbWVudCBvZiB0aGUg
Y29ycmVzcG9uZGluZyBieXRlIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0DQog
ICAgKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSBieXRlIGluIHRoZSBz
ZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0KICAgICsvLy8gICAgY29weSB0aGUgY29ycmVzcG9u
ZGluZyBieXRlIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmDQog
ICAgKy8vLyAgICB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0
aGUgY29ycmVzcG9uZGluZyBieXRlIGluDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUFNJR05CIGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0K
ICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3JyZXNwb25kaW5nIHRvDQogICAgKy8vLyAgICBw
b3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zaWdu
X2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNpZ25iMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkp
X19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIEZvciBlYWNoIDE2LWJpdCBpbnRlZ2VyIGlu
IHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCiAgICArLy8vICAgIHRo
ZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3Bl
cmFuZC4NCiAgICArLy8vDQogICAgKy8vLyAgICBJZiB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNv
dXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KICAgICsvLy8gICAgY29tcGxl
bWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZCB3
cml0ZSB0aGF0DQogICAgKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSB3
b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0KICAgICsvLy8gICAgY29weSB0
aGUgY29ycmVzcG9uZGluZyB3b3JkIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGlu
YXRpb24uIElmDQogICAgKy8vLyAgICB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6
ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluDQogICAgKy8vLyAgICB0aGUgZGVz
dGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBW
UFNJR05XIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8g
YmUgY29waWVkLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCB3b3JkcyBjb3JyZXNwb25kaW5nIHRvDQog
ICAgKy8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1
ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9zaWduX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCiAgICArew0KICAg
ICsgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaWdudzEyOCgoX192OGhpKV9f
YSwgKF9fdjhoaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gRm9yIGVhY2ggMzItYml0
IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZg0KICAg
ICsvLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25k
IHNvdXJjZSBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIHRoZSBkb3VibGV3b3Jk
IGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzDQog
ICAgKy8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgaW4gdGhlIGZp
cnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQNCiAgICArLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0
aW5hdGlvbi4gSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMNCiAgICAr
Ly8vICAgIHBvc2l0aXZlLCBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgZnJvbSB0aGUgZmly
c3Qgc291cmNlIHRvIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIElmIHRoZSBkb3VibGV3
b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRoZQ0KICAgICsvLy8gICAg
Y29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQU0lHTkQgaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250
cm9sIGRvdWJsZXdvcmRzIGNvcnJlc3BvbmRpbmcgdG8NCiAgICArLy8vICAgIHBvc2l0aW9ucyBp
biB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3NpZ25fZXBpMzIoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcHNpZ25kMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9fYik7DQogICAg
K30NCiAgICArDQogICAgKy8vLyBGb3IgZWFjaCA4LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBz
b3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCiAgICArLy8vICAgIHRoZSBmb2xsb3dpbmcg
YWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCiAgICAr
Ly8vDQogICAgKy8vLyAgICBJZiB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdh
dGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KICAgICsvLy8gICAgY29tcGxlbWVudCBvZiB0aGUg
Y29ycmVzcG9uZGluZyBieXRlIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0DQog
ICAgKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSBieXRlIGluIHRoZSBz
ZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0KICAgICsvLy8gICAgY29weSB0aGUgY29ycmVzcG9u
ZGluZyBieXRlIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmDQog
ICAgKy8vLyAgICB0aGUgYnl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0
aGUgY29ycmVzcG9uZGluZyBieXRlIGluDQogICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQU0lHTkIgaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3JyZXNwb25kaW5nIHRvDQogICAgKy8vLyAgICBwb3Np
dGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fc2lnbl9w
aTgoX19tNjQgX19hLCBfX202NCBfX2IpDQogICAgK3sNCiAgICArICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHNpZ25iKChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQogICAgK30N
CiAgICArDQogICAgKy8vLyBGb3IgZWFjaCAxNi1iaXQgaW50ZWdlciBpbiB0aGUgZmlyc3Qgc291
cmNlIG9wZXJhbmQsIHBlcmZvcm0gb25lIG9mDQogICAgKy8vLyAgICB0aGUgZm9sbG93aW5nIGFj
dGlvbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQogICAgKy8v
Lw0KICAgICsvLy8gICAgSWYgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgbmVnYXRp
dmUsIGNhbGN1bGF0ZSB0aGUgdHdvJ3MNCiAgICArLy8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGNv
cnJlc3BvbmRpbmcgd29yZCBpbiB0aGUgZmlyc3Qgc291cmNlLCBhbmQgd3JpdGUgdGhhdA0KICAg
ICsvLy8gICAgdmFsdWUgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgd29yZCBpbiB0aGUgc2Vj
b25kIHNvdXJjZSBpcyBwb3NpdGl2ZSwNCiAgICArLy8vICAgIGNvcHkgdGhlIGNvcnJlc3BvbmRp
bmcgd29yZCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZg0KICAg
ICsvLy8gICAgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgemVybywgY2xlYXIgdGhl
IGNvcnJlc3BvbmRpbmcgd29yZCBpbg0KICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUFNJR05XIGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIGNvbnRyb2wgd29yZHMgY29ycmVzcG9uZGluZyB0bw0KICAgICsvLy8gICAgcG9zaXRp
b25zIGluIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQogICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICArX21tX3NpZ25fcGkx
NihfX202NCBfX2EsIF9fbTY0IF9fYikNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl9wc2lnbncoKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCiAgICArfQ0K
ICAgICsNCiAgICArLy8vIEZvciBlYWNoIDMyLWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3Vy
Y2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCiAgICArLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0
aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCiAgICArLy8v
DQogICAgKy8vLyAgICBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBu
ZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KICAgICsvLy8gICAgY29tcGxlbWVudCBvZiB0
aGUgY29ycmVzcG9uZGluZyBkb3VibGV3b3JkIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZA0KICAg
ICsvLy8gICAgd3JpdGUgdGhhdCB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSBkb3Vi
bGV3b3JkIGluIHRoZSBzZWNvbmQNCiAgICArLy8vICAgIHNvdXJjZSBpcyBwb3NpdGl2ZSwgY29w
eSB0aGUgY29ycmVzcG9uZGluZyBkb3VibGV3b3JkIGZyb20gdGhlIGZpcnN0DQogICAgKy8vLyAg
ICBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vj
b25kIHNvdXJjZSBpcw0KICAgICsvLy8gICAgemVybywgY2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcg
ZG91Ymxld29yZCBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBQU0lHTkQgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICAr
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdHdvIGNvbnRyb2wgZG91
Ymxld29yZHMgY29ycmVzcG9uZGluZw0KICAgICsvLy8gICAgdG8gcG9zaXRpb25zIGluIHRoZSBk
ZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICArX21tX3NpZ25fcGkzMihfX202NCBfX2Es
IF9fbTY0IF9fYikNCiAgICArew0KICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEz
Ml9wc2lnbmQoKF9fdjJzaSlfX2EsIChfX3Yyc2kpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICAr
I3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KICAgICsNCiAgICArI2VuZGlmIC8qIF9fVE1NSU5UUklOX0ggKi8NCiAgICBkaWZmIC0t
Z2l0IGEvaW5jbHVkZS94bW1pbnRyaW4uaCBiL2luY2x1ZGUveG1taW50cmluLmgNCiAgICBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmUyNTQzYTcNCiAgICAtLS0gL2Rl
di9udWxsDQogICAgKysrIGIvaW5jbHVkZS94bW1pbnRyaW4uaA0KICAgIEBAIC0wLDAgKzEsMzEw
MSBAQA0KICAgICsvKj09PS0tLS0geG1taW50cmluLmggLSBTU0UgaW50cmluc2ljcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQogICAgKyAqDQogICAgKyAqIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkNCiAgICArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwNCiAgICArICogaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cw0KICAgICsgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQogICAgKyAqIGNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcw0KICAgICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zOg0KICAgICsgKg0KICAgICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KICAg
ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4N
CiAgICArICoNCiAgICArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCiAgICArICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksDQogICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KICAgICsgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQog
ICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQogICAgKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCiAg
ICArICogVEhFIFNPRlRXQVJFLg0KICAgICsgKg0KICAgICsgKj09PS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09
DQogICAgKyAqLw0KICAgICsNCiAgICArI2lmbmRlZiBfX1hNTUlOVFJJTl9IDQogICAgKyNkZWZp
bmUgX19YTU1JTlRSSU5fSA0KICAgICsNCiAgICArI2luY2x1ZGUgPG1taW50cmluLmg+DQogICAg
Kw0KICAgICt0eXBlZGVmIGludCBfX3Y0c2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9f
KDE2KSkpOw0KICAgICt0eXBlZGVmIGZsb2F0IF9fdjRzZiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rv
cl9zaXplX18oMTYpKSk7DQogICAgK3R5cGVkZWYgZmxvYXQgX19tMTI4IF9fYXR0cmlidXRlX18o
KF9fdmVjdG9yX3NpemVfXygxNikpKTsNCiAgICArDQogICAgKy8qIFVuc2lnbmVkIHR5cGVzICov
DQogICAgK3R5cGVkZWYgdW5zaWduZWQgaW50IF9fdjRzdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rv
cl9zaXplX18oMTYpKSk7DQogICAgKw0KICAgICsvKiBUaGlzIGhlYWRlciBzaG91bGQgb25seSBi
ZSBpbmNsdWRlZCBpbiBhIGhvc3RlZCBlbnZpcm9ubWVudCBhcyBpdCBkZXBlbmRzIG9uDQogICAg
KyAqIGEgc3RhbmRhcmQgbGlicmFyeSB0byBwcm92aWRlIGFsbG9jYXRpb24gcm91dGluZXMuICov
DQogICAgKyNpZiBfX1NURENfSE9TVEVEX18NCiAgICArI2luY2x1ZGUgPG1tX21hbGxvYy5oPg0K
ICAgICsjZW5kaWYNCiAgICArDQogICAgKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVz
IGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCiAgICArI2lmZGVmICBfX0dOVUNf
Xw0KICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9p
bmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCiAgICArI2RlZmlu
ZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf
X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KICAgICsjZWxzZQ0KICAgICsjZGVm
aW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgp
KSkNCiAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9f
YWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW14LHNzZSIpLCBfX21p
bl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KICAgICsjZW5kaWYNCiAgICArDQogICAgKyNkZWZpbmUg
X01NX1NIVUZGTEUoeiwgeSwgeCwgdykgKCgoeikgPDwgNikgfCAoKHkpIDw8IDQpIHwgKCh4KSA8
PCAyKSB8ICh3KSkNCiAgICArDQogICAgKw0KICAgICsvLy8gQWRkcyB0aGUgMzItYml0IGZsb2F0
IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIG9wZXJhbmRzLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTUyAvIEFERFNTIDwvYz4g
aW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCiAgICArLy8vICAgIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3Bl
cmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQogICAgKy8vLyBccGFyYW0gX19iDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyAgICBUaGUgbG93ZXIgMzIgYml0cyBv
ZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRz
IGNvbnRhaW4gdGhlIHN1bQ0KICAgICsvLy8gICAgb2YgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYm90
aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9tDQogICAgKy8vLyAg
ICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2FkZF9z
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgX19hWzBdICs9IF9fYlsw
XTsNCiAgICArICByZXR1cm4gX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQWRkcyB0d28g
MTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cyBv
Zg0KICAgICsvLy8gICAgdGhlIGFkZGl0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZBRERQUyAvIEFERFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc3Vt
cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fYWRkX3BzKF9fbTEyOCBfX2EsIF9f
bTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilfX2EgKyAo
X192NHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdWJ0cmFjdHMgdGhlIDMyLWJp
dCBmbG9hdCB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIHNlY29uZA0KICAgICsv
Ly8gICAgb3BlcmFuZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBmaXJzdCBv
cGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZT
VUJTUyAvIFNVQlNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgbWludWVuZC4gVGhlIGxvd2VyIDMyIGJpdHMNCiAgICArLy8vICAgIG9mIHRoaXMg
b3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQogICAgKy8vLyBccGFyYW0gX19i
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIHN1YnRyYWhlbmQuIFRoZSBsb3dlciAzMg0KICAgICsvLy8gICAgYml0cyBvZiB0aGlzIG9w
ZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4g
dGhlDQogICAgKy8vLyAgICBkaWZmZXJlbmNlIG9mIHRoZSBsb3dlciAzMiBiaXRzIG9mIGJvdGgg
b3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZQ0KICAgICsvLy8gICAgY29waWVkIGZyb20g
dGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zdWJfc3Mo
X19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIF9fYVswXSAtPSBfX2JbMF07
DQogICAgKyAgcmV0dXJuIF9fYTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN1YnRyYWN0cyBl
YWNoIG9mIHRoZSB2YWx1ZXMgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGZyb20gdGhlIGZpcnN0DQog
ICAgKy8vLyAgICBvcGVyYW5kLCBib3RoIG9mIHdoaWNoIGFyZSAxMjgtYml0IHZlY3RvcnMgb2Yg
WzQgeCBmbG9hdF0gYW5kIHJldHVybnMNCiAgICArLy8vICAgIHRoZSByZXN1bHRzIG9mIHRoZSBz
dWJ0cmFjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWU1VCUFMgLyBTVUJQUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNv
bnRhaW5pbmcgdGhlIG1pbnVlbmQuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQu
DQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4NCiAgICArLy8vICAgIGJvdGggb3BlcmFuZHMu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3N1Yl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJu
IChfX20xMjgpKChfX3Y0c2YpX19hIC0gKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gTXVsdGlwbGllcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVy
IGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVMU1MgLyBNVUxTUyA8L2M+IGluc3RydWN0aW9u
cy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQogICAgKy8vLyAgICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVz
ZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291
cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcHJvZHVjdCBvZiB0aGUg
bG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2
IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA5Ng0KICAgICsvLy8gICAgYml0cyBvZiB0
aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX211bF9zcyhfX20xMjggX19hLCBfX20xMjggX19i
KQ0KICAgICt7DQogICAgKyAgX19hWzBdICo9IF9fYlswXTsNCiAgICArICByZXR1cm4gX19hOw0K
ICAgICt9DQogICAgKw0KICAgICsvLy8gTXVsdGlwbGllcyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9m
IFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0cyBvZiB0aGUg
bXVsdGlwbGljYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVk1VTFBTIC8gTVVMUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsv
Ly8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3Ro
DQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbXVsX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2Ip
DQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilfX2EgKiAoX192NHNmKV9f
Yik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBEaXZpZGVzIHRoZSB2YWx1ZSBpbiB0aGUgbG93
LW9yZGVyIDMyIGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYnkNCiAgICArLy8vICAgIHRoZSBj
b3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRElWU1MgLyBESVZTUyA8L2M+IGluc3Ry
dWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLiBUaGUg
bG93ZXIgMzINCiAgICArLy8vICAgIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRo
ZSBjYWxjdWxhdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aXNvci4gVGhlIGxvd2Vy
IDMyIGJpdHMNCiAgICArLy8vICAgIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2Fs
Y3VsYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiB0aGUNCiAgICArLy8vICAgIGxvd2VyIDMy
IGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9t
IHRoZQ0KICAgICsvLy8gICAgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJh
bmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX2Rpdl9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgX19h
WzBdIC89IF9fYlswXTsNCiAgICArICByZXR1cm4gX19hOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gRGl2aWRlcyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8N
CiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQUyAvIERJVlBTIDwvYz4g
aW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aWRlbmQu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuDQogICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiBi
b3RoDQogICAgKy8vLyAgICBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fZGl2X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilfX2EgLyAoX192NHNm
KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9v
dCBvZiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSBsb3ctb3JkZXIgYml0cw0KICAgICsvLy8gICAg
b2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFNTIC8gU1FSVFNTIDwvYz4gaW5zdHJ1Y3Rp
b25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzcXVh
cmUgcm9vdCBvZiB0aGUNCiAgICArLy8vICAgIHZhbHVlIGluIHRoZSBsb3ctb3JkZXIgYml0cyBv
ZiB0aGUgb3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgICtfbW1fc3FydF9zcyhfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc3FydHNzKChfX3Y0c2YpX19hKTsNCiAgICArfQ0K
ICAgICsNCiAgICArLy8vIENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgdmFsdWVz
IHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbNCB4IGZsb2F0XS4N
CiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0K
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBTIC8g
U1FSVFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2EN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNx
dWFyZSByb290cyBvZiB0aGUNCiAgICArLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1f
c3FydF9wcyhfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X3NxcnRwcygoX192NHNmKV9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDYWxjdWxhdGVz
IHRoZSBhcHByb3hpbWF0ZSByZWNpcHJvY2FsIG9mIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlDQog
ICAgKy8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICAr
Ly8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZSQ1BT
UyAvIFJDUFNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dl
ciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNh
bGN1bGF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBhcHByb3hpbWF0ZQ0KICAgICsvLy8gICAgcmVjaXByb2NhbCBv
ZiB0aGUgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBvcGVyYW5kLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9yY3Bf
c3MoX19tMTI4IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9p
YTMyX3JjcHNzKChfX3Y0c2YpX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENhbGN1bGF0
ZXMgdGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWxzIG9mIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEN
CiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZSQ1BQUyAvIFJDUFBTIDwvYz4gaW5z
dHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGFwcHJveGltYXRlDQogICAg
Ky8vLyAgICByZWNpcHJvY2FscyBvZiB0aGUgdmFsdWVzIGluIHRoZSBvcGVyYW5kLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9yY3Bf
cHMoX19tMTI4IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9p
YTMyX3JjcHBzKChfX3Y0c2YpX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENhbGN1bGF0
ZXMgdGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWwgb2YgdGhlIHNxdWFyZSByb290IG9mIHRoZSB2
YWx1ZQ0KICAgICsvLy8gICAgc3RvcmVkIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZSU1FSVFNTIC8gUlNRUlRTUyA8L2M+IGluc3RydWN0aW9ucy4NCiAg
ICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQog
ICAgKy8vLyAgICB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYXBwcm94aW1hdGUN
CiAgICArLy8vICAgIHJlY2lwcm9jYWwgb2YgdGhlIHNxdWFyZSByb290IG9mIHRoZSB2YWx1ZSBp
biB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlDQogICAgKy8vLyAgICBvcGVyYW5kLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9yc3Fy
dF9zcyhfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Jz
cXJ0c3MoKF9fdjRzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ2FsY3VsYXRlcyB0
aGUgYXBwcm94aW1hdGUgcmVjaXByb2NhbHMgb2YgdGhlIHNxdWFyZSByb290cyBvZiB0aGUNCiAg
ICArLy8vICAgIHZhbHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUlNRUlRQ
UyAvIFJTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgYXBwcm94aW1hdGUNCiAgICArLy8vICAgIHJlY2lwcm9jYWxzIG9mIHRoZSBzcXVhcmUgcm9v
dHMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fcnNxcnRfcHMoX19tMTI4IF9fYSkN
CiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9yc3FydHBzKChfX3Y0c2YpX19h
KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFs
dWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcyBh
bmQgcmV0dXJucyB0aGUgbGVzc2VyIHZhbHVlIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiB0aGUN
CiAgICArLy8vICAgIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlOU1MgLyBNSU5TUyA8L2M+IGluc3RydWN0aW9u
cy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhl
IGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0
aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBU
aGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGlu
IHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQogICAgKy8vLyAgICBt
aW5pbXVtIHZhbHVlIGJldHdlZW4gYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMgYXJl
IGNvcGllZCBmcm9tDQogICAgKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qg
c291cmNlIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX21pbl9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnNzKChfX3Y0c2YpX19hLCAoX192NHNm
KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0d28gMTI4LWJpdCB2ZWN0
b3JzIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZSBsZXNzZXINCiAgICArLy8vICAgIG9m
IGVhY2ggcGFpciBvZiB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVk1JTlBTIC8gTUlOUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWluaW11bSB2YWx1ZXMNCiAgICArLy8v
ICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbWluX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfbWlucHMoKF9fdjRzZilf
X2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAz
Mi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8v
LyAgICBvcGVyYW5kcyBhbmQgcmV0dXJucyB0aGUgZ3JlYXRlciB2YWx1ZSBpbiB0aGUgbG93LW9y
ZGVyIGJpdHMgb2YgYSAxMjgtYml0DQogICAgKy8vLyAgICB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFNTIC8g
TUFYU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccGFyYW0gX19i
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRo
aXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250
YWluIHRoZQ0KICAgICsvLy8gICAgbWF4aW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMu
IFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KICAgICsvLy8gICAgdGhlIHVwcGVy
IDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tYXhfc3MoX19tMTI4IF9f
YSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9tYXhz
cygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29t
cGFyZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUg
Z3JlYXRlcg0KICAgICsvLy8gICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFYUFMgLyBNQVhQUyA8L2M+IGlu
c3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVy
YW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBt
YXhpbXVtIHZhbHVlcw0KICAgICsvLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9tYXhf
cHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0
aW5faWEzMl9tYXhwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0K
ICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9m
IFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZBTkRQUyAvIEFORFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4N
CiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQogICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBi
b3RoIG9wZXJhbmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9hbmRfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMTI4KSgoX192NHN1KV9fYSAmIChfX3Y0c3UpX19iKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQgb2YgdHdvIDEyOC1iaXQg
dmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgdXNpbmcNCiAgICArLy8vICAgIHRoZSBvbmUncyBjb21w
bGVtZW50IG9mIHRoZSB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBmaXJzdCBzb3VyY2UNCiAgICAr
Ly8vICAgIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkFORE5QUyAvIEFORE5QUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLiBUaGUNCiAgICArLy8vICAg
IG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBiaXR3aXNlIEFO
RC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBiaXR3aXNlIEFORCBvZiB0aGUNCiAgICArLy8vICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhl
IGZpcnN0IG9wZXJhbmQgYW5kIHRoZSB2YWx1ZXMgaW4gdGhlIHNlY29uZA0KICAgICsvLy8gICAg
b3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fYW5kbm90X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAg
ICArICByZXR1cm4gKF9fbTEyOCkofihfX3Y0c3UpX19hICYgKF9fdjRzdSlfX2IpOw0KICAgICt9
DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAxMjgtYml0IHZl
Y3RvcnMgb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVk9SUFMgLyBPUlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxw
YXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBPUiBv
ZiB0aGUNCiAgICArLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX29yX3Bz
KF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOCko
KF9fdjRzdSlfX2EgfCAoX192NHN1KV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBQZXJm
b3JtcyBhIGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCiAg
ICArLy8vICAgIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZYT1JQUyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8N
CiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8v
IFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBl
eGNsdXNpdmUgT1INCiAgICArLy8vICAgIG9mIHRoZSB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJh
bmRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV94b3JfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJl
dHVybiAoX19tMTI4KSgoX192NHN1KV9fYSBeIChfX3Y0c3UpX19iKTsNCiAgICArfQ0KICAgICsN
CiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3Jk
ZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcyBmb3IgZXF1YWxpdHkgYW5kIHJl
dHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUNCiAgICArLy8vICAgIGxv
dy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVNTIC8gQ01QRVFTUyA8L2M+IGluc3Ry
dWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5k
cy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNl
ZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJh
bmRzLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1
c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCiAgICAr
Ly8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wZXFfc3MoX19tMTI4IF9fYSwgX19t
MTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2Nt
cGVxc3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8v
IENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBv
ZiB0aGUNCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBmb3IgZXF1
YWxpdHkuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAg
ICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNN
UEVRUFMgLyBDTVBFUVBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQog
ICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGVxX3BzKF9fbTEyOCBf
X2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5f
aWEzMl9jbXBlcXBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVy
IGJpdHMgb2YgYm90aA0KICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2
YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gdGhlDQogICAgKy8vLyAgICBj
b3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUg
cmVzdWx0IG9mIHRoZQ0KICAgICsvLy8gICAgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJp
dHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUU1MgLyBDTVBMVFNTIDwvYz4gaW5zdHJ1Y3Rpb25z
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUg
bG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRo
ZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRo
ZSBsb3dlcg0KICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4g
dGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KICAgICsvLy8gICAg
aW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19E
RUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBsdF9zcyhfX20xMjggX19hLCBfX20xMjggX19i
KQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbHRzcygo
X192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFy
ZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0K
ICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBp
ZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KICAgICsvLy8gICAgb3BlcmFuZCBhcmUgbGVzcyB0
aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRQUyAvIENNUExUUFMgPC9jPiBpbnN0cnVjdGlv
bnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW1fY21wbHRfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsg
IHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGx0cHMoKF9fdjRzZilfX2EsIChfX3Y0
c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxv
YXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVy
YW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGxl
c3MgdGhhbiBvcg0KICAgICsvLy8gICAgZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUg
aW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KICAgICsvLy8gICAgcmVzdWx0
IG9mIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZg0K
ICAgICsvLy8gICAgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkNNUExFU1MgLyBDTVBMRVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXIN
CiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21w
YXJpc29uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dl
cg0KICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNv
bXBhcmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KICAgICsvLy8gICAgaW4gdGhl
IGxvdy1vcmRlciBiaXRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV9jbXBsZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbGVzcygoX192NHNm
KV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFj
aCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KICAgICsv
Ly8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUg
dmFsdWVzIGluIHRoZSBmaXJzdA0KICAgICsvLy8gICAgb3BlcmFuZCBhcmUgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVQUyAvIENNUExFUFMgPC9jPiBpbnN0
cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlz
b24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fY21wbGVfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0K
ICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGxlcHMoKF9fdjRzZilfX2Es
IChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1i
aXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAg
ICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5k
IGlzIGdyZWF0ZXIgdGhhbg0KICAgICsvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4g
dGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YNCiAgICArLy8vICAg
IHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QTFRTUyAvIENNUExUU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8g
XHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KICAgICsvLy8gICAgMzIg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8v
LyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAz
MiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgY29tcGFyaXNvbiByZXN1bHRzDQogICAgKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX2NtcGd0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArI2lmZGVm
IF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNzICgo
X192NHNmKSBfX2EsIChfX3Y0c2YpDQogICAgKwkJX19idWlsdGluX2lhMzJfY21wbHRzcyAoKF9f
djRzZikgX19iLCAoX192NHNmKSBfX2EpKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9f
bTEyOClfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwNCiAgICArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fYnVpbHRpbl9pYTMyX2Nt
cGx0c3MoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKSwNCiAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsNCiAgICArI2VuZGlmDQogICAgK30N
CiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJp
dCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQg
eCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQogICAgKy8v
LyAgICBvcGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5k
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFBT
IC8gQ01QTFRQUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBndF9wcyhfX20xMjggX19hLCBf
X20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJf
Y21wbHRwcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRz
IG9mIGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUg
aW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuDQogICAgKy8vLyAgICBvciBlcXVh
bCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJl
dHVybnMNCiAgICArLy8vICAgIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxv
dy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVTUyAvIENN
UExFU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0K
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccGFyYW0gX19i
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRo
aXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNv
biByZXN1bHRzDQogICAgKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NtcGdlX3Nz
KF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQog
ICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX2Es
IChfX3Y0c2YpDQogICAgKwkJX19idWlsdGluX2lhMzJfY21wbGVzcyAoKF9fdjRzZikgX19iLCAo
X192NHNmKSBfX2EpKTsNCiAgICArI2Vsc2UNCiAgICArICByZXR1cm4gKF9fbTEyOClfX2J1aWx0
aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwNCiAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fYnVpbHRpbl9pYTMyX2NtcGxlc3MoKF9fdjRz
ZilfX2IsIChfX3Y0c2YpX19hKSwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LCAxLCAyLCAzKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8g
ZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5k
IGFyZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5k
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMRVBT
IC8gQ01QTEVQUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBnZV9wcyhfX20xMjggX19hLCBf
X20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJf
Y21wbGVwcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRz
IG9mIGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzIGZvciBpbmVxdWFsaXR5IGFuZCByZXR1cm5z
IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlDQogICAgKy8vLyAgICBsb3ctb3Jk
ZXIgYml0cyBvZiBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRU1MgLyBDTVBORVFTUyA8L2M+DQogICAg
Ky8vLyAgIGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3Bl
cmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUg
b2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBv
cGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJl
c3VsdHMNCiAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCiAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wbmVxX3NzKF9f
bTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOClfX2J1
aWx0aW5faWEzMl9jbXBuZXFzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQg
ZmxvYXQgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHgg
ZmxvYXRdIGZvciBpbmVxdWFsaXR5Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZDTVBORVFQUyAvIENNUE5FUVBTIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1
Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX2NtcG5lcV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQog
ICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmVxcHMoKF9fdjRzZilfX2Es
IChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1i
aXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAg
ICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5k
IGlzIG5vdCBsZXNzIHRoYW4NCiAgICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlu
IHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mDQogICAgKy8vLyAg
ICB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkNNUE5MVFNTIC8gQ01QTkxUU1MgPC9jPg0KICAgICsvLy8gICBpbnN0cnVjdGlvbnMuDQogICAg
Ky8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0K
ICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBh
cmlzb24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2Vy
DQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQogICAgKy8vLyAgICBpbiB0aGUg
bG93LW9yZGVyIGJpdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX2NtcG5sdF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmx0c3MoKF9fdjRz
ZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGVh
Y2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCiAgICAr
Ly8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhl
IHZhbHVlcyBpbiB0aGUgZmlyc3QNCiAgICArLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRo
YW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRQUyAvIENNUE5MVFBTIDwvYz4NCiAgICArLy8v
ICAgaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19i
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBj
b21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX2NtcG5sdF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
ICAgICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmx0cHMoKF9f
djRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVz
IHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQog
ICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBvcGVyYW5kIGlzIG5vdCBsZXNzIHRoYW4NCiAgICArLy8vICAgIG9yIGVxdWFsIHRvIHRoZSBj
b3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucw0KICAg
ICsvLy8gICAgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJp
dHMgb2YgYSB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVTUyAvIENNUE5MRVNTIDwv
Yz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KICAgICsvLy8gICAgMzIgYml0cyBv
ZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0cw0KICAgICsvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBu
bGVfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5sZXNzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5n
IDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMg
b2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQog
ICAgKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGlu
IHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QTkxFUFMgLyBDTVBOTEVQUyA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0
aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9jbXBubGVfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAg
ICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5sZXBzKChfX3Y0c2YpX19hLCAo
X192NHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0d28gMzItYml0
IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KICAgICsvLy8gICAg
b3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBp
cyBub3QgZ3JlYXRlcg0KICAgICsvLy8gICAgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBp
biB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlDQogICAgKy8vLyAgICByZXN1bHQg
b2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQog
ICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWQ01QTkxUU1MgLyBDTVBOTFRTUyA8L2M+DQogICAgKy8vLyAgIGluc3Ry
dWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5k
cy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNl
ZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJh
bmRzLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1
c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCiAgICAr
Ly8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wbmd0X3NzKF9fbTEyOCBfX2EsIF9f
bTEyOCBfX2IpDQogICAgK3sNCiAgICArDQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJl
dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZzcyAoKF9fdjRzZikgX19hLCAoX192NHNm
KQ0KICAgICsJCV9fYnVpbHRpbl9pYTMyX2NtcG5sdHNzICgoX192NHNmKSBfX2IsIChfX3Y0c2Yp
IF9fYSkpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVm
ZmxldmVjdG9yKChfX3Y0c2YpX19hLA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3Y0c2YpX19idWlsdGluX2lhMzJfY21wbmx0c3MoKF9fdjRzZilfX2Is
IChfX3Y0c2YpX19hKSwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0LCAxLCAyLCAzKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8vLyBD
b21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2Yg
dGhlDQogICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJt
aW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQogICAgKy8vLyAgICBvcGVyYW5kIGFyZSBu
b3QgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxUUFMgLyBDTVBOTFRQUyA8
L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jbXBuZ3RfcHMoX19tMTI4IF9fYSwg
X19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMy
X2NtcG5sdHBzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSk7DQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJp
dHMgb2YgYm90aA0KICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1
ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBub3QgZ3JlYXRlcg0KICAgICsvLy8gICAgdGhhbiBv
ciBlcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQg
YW5kDQogICAgKy8vLyAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4g
dGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yDQogICAgKy8vLyAgICBvZiBbNCB4IGZsb2F0
XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxF
U1MgLyBDTVBOTEVTUyA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8v
LyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4N
CiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCiAgICAr
Ly8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29u
Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCiAgICArLy8vICAgIGluIHRoZSBsb3ctb3Jk
ZXIgYml0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
Uw0KICAgICtfbW1fY21wbmdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAg
ICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy
X21vdnNzICgoX192NHNmKSBfX2EsIChfX3Y0c2YpDQogICAgKwkJX19idWlsdGluX2lhMzJfY21w
bmxlc3MgKChfX3Y0c2YpIF9fYiwgKF9fdjRzZikgX19hKSk7DQogICAgKyNlbHNlDQogICAgKyAg
cmV0dXJuIChfX20xMjgpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsDQogICAg
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX2J1aWx0
aW5faWEzMl9jbXBubGVzcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpLA0KICAgICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDEsIDIsIDMpOw0KICAgICsjZW5k
aWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCiAgICArLy8vICAgIDEyOC1iaXQgdmVj
dG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmly
c3QNCiAgICArLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
dGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQUyAvIENNUE5MRVBTIDwvYz4NCiAgICArLy8vICAg
aW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX2NtcG5nZV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAg
ICt7DQogICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmxlcHMoKF9fdjRz
ZilfX2IsIChfX3Y0c2YpX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3
byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAg
Ky8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBv
cGVyYW5kIGlzIG9yZGVyZWQgd2l0aA0KICAgICsvLy8gICAgcmVzcGVjdCB0byB0aGUgY29ycmVz
cG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlDQogICAg
Ky8vLyAgICByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9m
IGEgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QT1JEU1MgLyBDTVBPUkRTUyA8L2M+DQog
ICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMg
b3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMNCiAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCiAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wb3JkX3Nz
KF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTEyOClf
X2J1aWx0aW5faWEzMl9jbXBvcmRzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9
DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1i
aXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0
IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KICAgICsv
Ly8gICAgb3BlcmFuZCBhcmUgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNl
Y29uZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDTVBPUkRQUyAvIENNUE9SRFBTIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMu
DQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX2NtcG9yZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wb3JkcHMoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQg
dmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5k
cyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHVub3Jk
ZXJlZA0KICAgICsvLy8gICAgd2l0aCByZXNwZWN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVl
IGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQNCiAgICArLy8vICAgIHJldHVybnMgdGhlIHJlc3Vs
dCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3INCiAg
ICArLy8vICAgIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZDTVBVTk9SRFNTIC8gQ01QVU5PUkRTUyA8L2M+DQogICAgKy8vLyAg
IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBv
cGVyYW5kcy4gVGhlIGxvd2VyDQogICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBh
cmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5k
IGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMN
CiAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY21wdW5vcmRfc3MoX19tMTI4
IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRp
bl9pYTMyX2NtcHVub3Jkc3MoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZs
b2F0IHZhbHVlcyBvZiB0aGUNCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZs
b2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCiAgICArLy8vICAg
IG9wZXJhbmQgYXJlIHVub3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29u
ZCBvcGVyYW5kLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBVTk9SRFBTIC8gQ01QVU5PUkRQUyA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9ucy4N
CiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRz
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAg
K19tbV9jbXB1bm9yZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wdW5vcmRwcygoX192NHNmKV9fYSwgKF9f
djRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBm
bG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCiAgICArLy8vICAgIG9w
ZXJhbmRzIGZvciBlcXVhbGl0eSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJp
c29uLg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMy
LWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU1MgLyBDT01JU1MgPC9jPg0KICAgICsvLy8g
ICBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAg
ICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAg
IHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNv
bnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZQ0KICAgICsv
Ly8gICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jb21p
ZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9jb21pZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ct
b3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYg
dGhlIGZpcnN0IG9wZXJhbmQgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQNCiAgICArLy8vICAgIG9w
ZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8v
DQogICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlz
IE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNTIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb25z
Lg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBh
cmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccGFyYW0g
X19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93
ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICB1c2VkIGluIHRoZSBj
b21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBj
b21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQogICAgKy8vLyAgICAgbG93
ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQogICAgK3N0YXRpYyBfX2lu
bGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2NvbWlsdF9zcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2Nv
bWlsdCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8g
Q29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9m
IGJvdGgNCiAgICArLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3Bl
cmFuZCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlDQogICAgKy8vLyAgICBzZWNvbmQgb3Bl
cmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8N
CiAgICArLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMg
TmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZDT01JU1MgLyBDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KICAgICsvLy8g
ICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9m
IHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQog
ICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCiAgICArLy8vICAgICBsb3dlciAzMi1iaXQgdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY29taWxlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taWxlKChfX3Y0c2Yp
X19hLCAoX192NHNmKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJlcyB0d28g
MzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KICAgICsv
Ly8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGdyZWF0
ZXIgdGhhbiB0aGUgc2Vjb25kDQogICAgKy8vLyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSBy
ZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLw0KICAgICsvLy8gICAgSWYgZWl0aGVy
IG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENP
TUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQog
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJp
c29uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KICAg
ICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGlu
dGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhl
DQogICAgKy8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVy
bmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAg
K19tbV9jb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9jb21pZ3QoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAg
ICArfQ0KICAgICsNCiAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGlu
IHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQogICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRl
cm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvDQog
ICAgKy8vLyAgICB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0
aGUgY29tcGFyaXNvbi4NCiAgICArLy8vDQogICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3
byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArLy8vDQog
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNTIDwvYz4g
aW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRo
aXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICB1
c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQogICAg
Ky8vLyAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY29taWdl
X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWls
dGluX2lhMzJfY29taWdlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQogICAgK30NCiAgICAr
DQogICAgKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9y
ZGVyIGJpdHMgb2YgYm90aA0KICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRo
ZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBlcXVhbCB0byB0aGUgc2Vjb25kDQogICAgKy8vLyAgICBv
cGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQogICAgKy8v
Lw0KICAgICsvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBp
cyBOYU4sIDEgaXMgcmV0dXJuZWQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8v
LyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4N
CiAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlDQogICAgKy8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2
YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jb21pbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taW5lcSgoX192
NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMg
YW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNpbmcN
CiAgICArLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVy
bWluZSBlcXVhbGl0eSBhbmQgcmV0dXJucw0KICAgICsvLy8gICAgdGhlIHJlc3VsdCBvZiB0aGUg
Y29tcGFyaXNvbi4NCiAgICArLy8vDQogICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBs
b3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBp
bnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICAr
Ly8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRh
aW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCiAgICAr
Ly8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdWNvbWll
cV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVp
bHRpbl9pYTMyX3Vjb21pZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAg
ICsNCiAgICArLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1i
aXQgZmxvYXQgdmFsdWVzIHVzaW5nDQogICAgKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2Yg
Ym90aCBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCiAgICAr
Ly8vICAgIGxlc3MgdGhhbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3Vs
dCBvZiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vDQogICAgKy8vLyAgICBJZiBlaXRoZXIgb2Yg
dGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01J
U1MgPC9jPiBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNv
bi4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICAr
Ly8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRl
Z2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0
d28NCiAgICArLy8vICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19t
bV91Y29taWx0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1
cm4gX19idWlsdGluX2lhMzJfdWNvbWlsdCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAg
ICt9DQogICAgKw0KICAgICsvLy8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2Yg
dHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNpbmcNCiAgICArLy8vICAgIHRoZSBsb3ctb3JkZXIg
Yml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBp
cw0KICAgICsvLy8gICAgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgb3BlcmFuZCBh
bmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZQ0KICAgICsvLy8gICAgY29tcGFyaXNvbi4NCiAg
ICArLy8vDQogICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0K
ICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxwYXJhbSBfX2IN
CiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAz
MiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBh
cmlzb24uDQogICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCiAgICArLy8vICAgICBsb3dlciAz
Mi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCiAgICArc3RhdGljIF9faW5saW5l
X18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdWNvbWlsZV9zcyhfX20xMjggX19h
LCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21p
bGUoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFBl
cmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVz
IHVzaW5nDQogICAgKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVyYW5kcyB0
byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCiAgICArLy8vICAgIGdyZWF0ZXIg
dGhhbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUNCiAg
ICArLy8vICAgIGNvbXBhcmlzb24uDQogICAgKy8vLw0KICAgICsvLy8gICAgSWYgZWl0aGVyIG9m
IHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU1MgLyBVQ09N
SVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBi
aXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlz
b24uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAg
Ky8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHJldHVybnMgQW4gaW50
ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUg
dHdvDQogICAgKy8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJu
ZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3Vjb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl91Y29taWd0KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQog
ICAgK30NCiAgICArDQogICAgKy8vLyBQZXJmb3JtcyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBv
ZiB0d28gMzItYml0IGZsb2F0IHZhbHVlcyB1c2luZw0KICAgICsvLy8gICAgdGhlIGxvdy1vcmRl
ciBiaXRzIG9mIGJvdGggb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5k
IGlzDQogICAgKy8vLyAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlY29uZCBvcGVy
YW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YNCiAgICArLy8vICAgIHRoZSBjb21wYXJpc29u
Lg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJp
dCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9u
cy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlDQogICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8gXHBhcmFt
IF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxv
d2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgdXNlZCBpbiB0aGUg
Y29tcGFyaXNvbi4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KICAgICsvLy8gICAgIGxv
d2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KICAgICtzdGF0aWMgX19p
bmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91Y29taWdlX3NzKF9fbTEy
OCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJf
dWNvbWlnZSgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2
YWx1ZXMgdXNpbmcNCiAgICArLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJh
bmRzIHRvIGRldGVybWluZSBpbmVxdWFsaXR5IGFuZCByZXR1cm5zDQogICAgKy8vLyAgICB0aGUg
cmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIGVpdGhl
ciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8g
VUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19h
DQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIg
MzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21w
YXJpc29uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0K
ICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCiAgICArLy8vIFxyZXR1cm5zIEFu
IGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2Yg
dGhlIHR3bw0KICAgICsvLy8gICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0
dXJuZWQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX3Vjb21pbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICAr
ICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWluZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19i
KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUgY29udGFp
bmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4
IGZsb2F0XSBpbnRvIGEgMzItYml0IGludGVnZXIuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNTMlNJIC8gQ1ZUU1MyU0kgPC9jPg0KICAgICsvLy8g
ICBpbnN0cnVjdGlvbnMuDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZQ0KICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCiAg
ICArLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVk
IHZhbHVlLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQog
ICAgK19tbV9jdnRzc19zaTMyKF9fbTEyOCBfX2EpDQogICAgK3sNCiAgICArICByZXR1cm4gX19i
dWlsdGluX2lhMzJfY3Z0c3Myc2koKF9fdjRzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsv
Ly8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMg
b2YgYSB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50
ZWdlci4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAg
Ky8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZU
U1MyU0kgLyBDVlRTUzJTSSA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8v
LyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAzMi1iaXQg
aW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQogICAgK3N0YXRpYyBfX2lu
bGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dF9zczJzaShfX20xMjgg
X19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9tbV9jdnRzc19zaTMyKF9fYSk7DQogICAgK30N
CiAgICArDQogICAgKyNpZmRlZiBfX3g4Nl82NF9fDQogICAgKw0KICAgICsvLy8gQ29udmVydHMg
YSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Ig
b2YNCiAgICArLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSA2NC1iaXQgaW50ZWdlci4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU1MyU0kgLyBDVlRT
UzJTSSA8L2M+DQogICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBU
aGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICB1c2VkIGlu
IHRoZSBjb252ZXJzaW9uLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250
YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGxvbmcg
bG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dHNzX3NpNjQoX19tMTI4IF9fYSkN
CiAgICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzczJzaTY0KChfX3Y0c2Yp
X19hKTsNCiAgICArfQ0KICAgICsNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsvLy8gQ29udmVy
dHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KICAg
ICsvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQog
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICAr
X21tX2N2dHBzX3BpMzIoX19tMTI4IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfY3Z0cHMycGkoKF9fdjRzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZl
Y3RvciBvZg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBpMzJdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IENWVFBTMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9f
YQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
U19NTVgNCiAgICArX21tX2N2dF9wczJwaShfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0
dXJuIF9tbV9jdnRwc19waTMyKF9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0
cyBhIGZsb2F0IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3Rv
ciBvZg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDMyLWJpdCBpbnRlZ2VyLCB0cnVu
Y2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcw0KICAgICsvLy8gICAgaW5leGFjdC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFNTMlNJIC8gQ1ZU
VFNTMlNJIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KICAgICsvLy8NCiAgICArLy8v
IFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
IFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQg
aW4gdGhlIGNvbnZlcnNpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNv
bnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCiAgICArc3RhdGljIF9faW5saW5lX18gaW50
IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0dHNzX3NpMzIoX19tMTI4IF9fYSkNCiAg
ICArew0KICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2koKF9fdjRzZilfX2Ep
Ow0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWlu
ZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YNCiAgICArLy8vICAgIFs0IHgg
ZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdlciwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4g
aXQgaXMNCiAgICArLy8vICAgIGluZXhhY3QuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTUzJTSSAvIENWVFRTUzJTSSA8L2M+DQogICAgKy8vLyAg
IGluc3RydWN0aW9ucy4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0
aGlzIG9wZXJhbmQgYXJlDQogICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KICAg
ICsvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQg
dmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX2N2dHRfc3Myc2koX19tMTI4IF9fYSkNCiAgICArew0KICAgICsgIHJldHVybiBfbW1f
Y3Z0dHNzX3NpMzIoX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArI2lmZGVmIF9feDg2XzY0X18N
CiAgICArLy8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAz
MiBiaXRzIG9mIGEgdmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQt
Yml0IGludGVnZXIsIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzDQogICAgKy8vLyAg
ICBpbmV4YWN0Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDVlRUU1MyU0kgLyBDVlRUU1MyU0kgPC9jPg0KICAgICsvLy8gICBpbnN0cnVjdGlvbnMuDQog
ICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0K
ICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9jdnR0
c3Nfc2k2NChfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X2N2dHRzczJzaTY0KChfX3Y0c2YpX19hKTsNCiAgICArfQ0KICAgICsjZW5kaWYNCiAgICArDQog
ICAgKy8vLyBDb252ZXJ0cyB0d28gbG93LW9yZGVyIGZsb2F0IHZhbHVlcyBpbiBhIDEyOC1iaXQg
dmVjdG9yIG9mDQogICAgKy8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IHZlY3RvciBv
ZiBbMiB4IGkzMl0sIHRydW5jYXRpbmcgdGhlIHJlc3VsdA0KICAgICsvLy8gICAgd2hlbiBpdCBp
cyBpbmV4YWN0Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IENWVFRQUzJQSSAvIFZUVFBTMlBJIDwvYz4NCiAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQogICAgK19tbV9jdnR0cHNfcGkzMihfX20x
MjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnR0
cHMycGkoKF9fdjRzZilfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgdHdv
IGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4DQogICAg
Ky8vLyAgICBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLCB0cnVuY2F0
aW5nIHRoZSByZXN1bHQgd2hlbiBpdA0KICAgICsvLy8gICAgaXMgaW5leGFjdC4NCiAgICArLy8v
DQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRUUFMyUEkgPC9jPiBpbnN0
cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fY3Z0
dF9wczJwaShfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9tbV9jdnR0cHNfcGkz
MihfX2EpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgYSAzMi1iaXQgc2lnbmVk
IGludGVnZXIgdmFsdWUgaW50byBhIGZsb2F0aW5nIHBvaW50IHZhbHVlDQogICAgKy8vLyAgICBh
bmQgd3JpdGVzIGl0IHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbi4gVGhl
IHJlbWFpbmluZw0KICAgICsvLy8gICAgaGlnaGVyIG9yZGVyIGVsZW1lbnRzIG9mIHRoZSBkZXN0
aW5hdGlvbiB2ZWN0b3IgYXJlIGNvcGllZCBmcm9tIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9u
ZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0kyU1MgLyBDVlRTSTJTUyA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8v
LyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kIGNvbnRhaW5pbmcgdGhlIHZhbHVl
IHRvIGJlIGNvbnZlcnRlZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQ0KICAgICsvLy8gICAg
Y29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVwcGVyIDk2IGJpdHMg
YXJlIGNvcGllZCBmcm9tDQogICAgKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmly
c3Qgb3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KICAgICtfbW1fY3Z0c2kzMl9zcyhfX20xMjggX19hLCBpbnQgX19iKQ0KICAgICt7DQog
ICAgKyAgX19hWzBdID0gX19iOw0KICAgICsgIHJldHVybiBfX2E7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBDb252ZXJ0cyBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEgZmxv
YXRpbmcgcG9pbnQgdmFsdWUNCiAgICArLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2Vy
IDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQogICAgKy8vLyAgICBo
aWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0
aGUNCiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9wZXJh
bmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJ
MlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFy
YW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAg
ICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb3Bl
cmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMg
Y29udGFpbiB0aGUNCiAgICArLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9w
ZXJhbmQuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KICAgICsvLy8gICAgdGhl
IHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dF9zaTJzcyhfX20xMjgg
X19hLCBpbnQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIF9tbV9jdnRzaTMyX3NzKF9fYSwg
X19iKTsNCiAgICArfQ0KICAgICsNCiAgICArI2lmZGVmIF9feDg2XzY0X18NCiAgICArDQogICAg
Ky8vLyBDb252ZXJ0cyBhIDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEgZmxvYXRp
bmcgcG9pbnQgdmFsdWUNCiAgICArLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQogICAgKy8vLyAgICBoaWdo
ZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUN
CiAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9wZXJhbmQu
DQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8N
CiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNT
IC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsv
Ly8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFu
ZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQogICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29u
dGFpbiB0aGUNCiAgICArLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJh
bmQuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KICAgICsvLy8gICAgdGhlIHVw
cGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2N2dHNpNjRfc3MoX19tMTI4IF9f
YSwgbG9uZyBsb25nIF9fYikNCiAgICArew0KICAgICsgIF9fYVswXSA9IF9fYjsNCiAgICArICBy
ZXR1cm4gX19hOw0KICAgICt9DQogICAgKw0KICAgICsjZW5kaWYNCiAgICArDQogICAgKy8vLyBD
b252ZXJ0cyB0d28gZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBpbnRv
IHR3bw0KICAgICsvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGFuZCB3cml0ZXMgdGhlbSB0
byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBUaGUg
cmVtYWluaW5nIGhpZ2hlciBvcmRlciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlDQog
ICAgKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUg
Zmlyc3Qgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBDVlRQSTJQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJd
LiBUaGUgZWxlbWVudHMgaW4gdGhpcyB2ZWN0b3IgYXJlIGNvbnZlcnRlZA0KICAgICsvLy8gICAg
YW5kIHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1lbnRzIGluIHRo
ZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KICAgICsvLy8gICAgY29u
dmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVwcGVyIDY0IGJpdHMgYXJl
IGNvcGllZCBmcm9tDQogICAgKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qg
b3BlcmFuZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
U19NTVgNCiAgICArX21tX2N2dHBpMzJfcHMoX19tMTI4IF9fYSwgX19tNjQgX19iKQ0KICAgICt7
DQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHBpMnBzKChfX3Y0c2YpX19hLCAoX192
MnNpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyB0d28gZWxlbWVudHMg
b2YgYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBpbnRvIHR3bw0KICAgICsvLy8gICAgZmxv
YXRpbmcgcG9pbnQgdmFsdWVzIGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgNjQtYml0cyBv
ZiB0aGUNCiAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nIGhpZ2hlciBvcmRl
ciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlDQogICAgKy8vLyAgICBjb3BpZWQgZnJv
bSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gX19iDQogICAg
Ky8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgZWxlbWVudHMgaW4gdGhp
cyB2ZWN0b3IgYXJlIGNvbnZlcnRlZA0KICAgICsvLy8gICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGNv
cnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1lbnRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCiAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIg
NjQgYml0cyBjb250YWluIHRoZQ0KICAgICsvLy8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhl
IHNlY29uZCBvcGVyYW5kLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkDQogICAgKy8vLyAg
ICBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fY3Z0
X3BpMnBzKF9fbTEyOCBfX2EsIF9fbTY0IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiBfbW1f
Y3Z0cGkzMl9wcyhfX2EsIF9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBFeHRyYWN0cyBh
IGZsb2F0IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBv
Zg0KICAgICsvLy8gICAgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBu
byBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dl
ciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCiAgICArLy8vICAgIHVzZWQgaW4gdGhlIGV4
dHJhY3Rpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBmbG9hdCBjb250YWluaW5nIHRo
ZSBleHRyYWN0ZWQgdmFsdWUuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGZsb2F0IF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fY3Z0c3NfZjMyKF9fbTEyOCBfX2EpDQogICAgK3sNCiAgICAr
ICByZXR1cm4gX19hWzBdOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gTG9hZHMgdHdvIHBhY2tl
ZCBmbG9hdCB2YWx1ZXMgZnJvbSB0aGUgYWRkcmVzcyBcYSBfX3AgaW50byB0aGUNCiAgICArLy8v
ICAgICBoaWdoLW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4g
VGhlIGxvdy1vcmRlciBiaXRzDQogICAgKy8vLyAgICAgYXJlIGNvcGllZCBmcm9tIHRoZSBsb3ct
b3JkZXIgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WSFBEIC8gTU9WSFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4gQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6
MF0NCiAgICArLy8vICAgIG9mIHRoZSBkZXN0aW5hdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX3AN
CiAgICArLy8vICAgIEEgcG9pbnRlciB0byB0d28gcGFja2VkIGZsb2F0IHZhbHVlcy4gQml0cyBb
NjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cw0KICAgICsvLy8gICAgWzEyNzo2NF0gb2YgdGhlIGRl
c3RpbmF0aW9uLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX2xvYWRoX3BpKF9fbTEyOCBfX2Es
IGNvbnN0IF9fbTY0ICpfX3ApDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAg
cmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2xvYWRocHMgKChfX3Y0c2YpX19hLCAoY29u
c3QgX192MnNmICopX19wKTsNCiAgICArI2Vsc2UNCiAgICArICB0eXBlZGVmIGZsb2F0IF9fbW1f
bG9hZGhfcGlfdjJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7DQogICAg
KyAgc3RydWN0IF9fbW1fbG9hZGhfcGlfc3RydWN0IHsNCiAgICArICAgIF9fbW1fbG9hZGhfcGlf
djJmMzIgX191Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KICAgICsgIF9fbW1fbG9hZGhfcGlfdjJmMzIgX19iID0gKChzdHJ1Y3QgX19tbV9s
b2FkaF9waV9zdHJ1Y3QqKV9fcCktPl9fdTsNCiAgICArICBfX20xMjggX19iYiA9IF9fYnVpbHRp
bl9zaHVmZmxldmVjdG9yKF9fYiwgX19iLCAwLCAxLCAwLCAxKTsNCiAgICArICByZXR1cm4gX19i
dWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2JiLCAwLCAxLCA0LCA1KTsNCiAgICArI2VuZGlm
DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyB0d28gcGFja2VkIGZsb2F0IHZhbHVlcyBm
cm9tIHRoZSBhZGRyZXNzIFxhIF9fcCBpbnRvIHRoZQ0KICAgICsvLy8gICAgbG93LW9yZGVyIGJp
dHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGhpZ2gtb3JkZXIgYml0
cw0KICAgICsvLy8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSBoaWdoLW9yZGVyIGJpdHMgb2YgdGhl
IGZpcnN0IG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVk1PVkxQRCAvIE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cw0KICAgICsvLy8gICAgWzEyNzo2
NF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAg
QSBwb2ludGVyIHRvIHR3byBwYWNrZWQgZmxvYXQgdmFsdWVzLiBCaXRzIFs2MzowXSBhcmUgd3Jp
dHRlbiB0byBiaXRzDQogICAgKy8vLyAgICBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBtb3ZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlMNCiAgICArX21tX2xvYWRsX3BpKF9fbTEyOCBfX2EsIGNvbnN0IF9fbTY0ICpf
X3ApDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjgp
IF9fYnVpbHRpbl9pYTMyX2xvYWRscHMgKChfX3Y0c2YpX19hLCAoY29uc3QgX192MnNmICopX19w
KTsNCiAgICArI2Vsc2UNCiAgICArICB0eXBlZGVmIGZsb2F0IF9fbW1fbG9hZGxfcGlfdjJmMzIg
X19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7DQogICAgKyAgc3RydWN0IF9fbW1f
bG9hZGxfcGlfc3RydWN0IHsNCiAgICArICAgIF9fbW1fbG9hZGxfcGlfdjJmMzIgX191Ow0KICAg
ICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KICAgICsg
IF9fbW1fbG9hZGxfcGlfdjJmMzIgX19iID0gKChzdHJ1Y3QgX19tbV9sb2FkbF9waV9zdHJ1Y3Qq
KV9fcCktPl9fdTsNCiAgICArICBfX20xMjggX19iYiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KF9fYiwgX19iLCAwLCAxLCAwLCAxKTsNCiAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2
ZWN0b3IoX19hLCBfX2JiLCA0LCA1LCAyLCAzKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICAr
DQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGUgdmVjdG9y
IGFyZSBpbml0aWFsaXplZCB3aXRoIHRoZSBzaW5nbGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBm
bG9hdGluZy1wb2ludCB2YWx1ZSBsb2FkZWQgZnJvbSBhIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRp
b24uIFRoZSB1cHBlcg0KICAgICsvLy8gICAgOTYgYml0cyBhcmUgc2V0IHRvIHplcm8uDQogICAg
Ky8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNTIC8gTU9WU1Mg
PC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8v
LyAgICBBIHBvaW50ZXIgdG8gYSAzMi1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBz
aW5nbGUtcHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCiAgICAr
Ly8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLiBUaGUNCiAgICArLy8vICAgIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0
aGUgdmFsdWUgbG9hZGVkIGZyb20gdGhlIG1lbW9yeSBsb2NhdGlvbi4gVGhlDQogICAgKy8vLyAg
ICB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbG9hZF9zcyhjb25zdCBmbG9hdCAq
X19wKQ0KICAgICt7DQogICAgKyAgc3RydWN0IF9fbW1fbG9hZF9zc19zdHJ1Y3Qgew0KICAgICsg
ICAgZmxvYXQgX191Ow0KICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlf
YWxpYXNfXykpOw0KICAgICsgIGZsb2F0IF9fdSA9ICgoc3RydWN0IF9fbW1fbG9hZF9zc19zdHJ1
Y3QqKV9fcCktPl9fdTsNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KXsgX191
LCAwLCAwLCAwIH07DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyBhIDMyLWJpdCBmbG9h
dCB2YWx1ZSBhbmQgZHVwbGljYXRlcyBpdCB0byBhbGwgZm91ciB2ZWN0b3INCiAgICArLy8vICAg
IGVsZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJST0FEQ0FTVFNTIC8gTU9WU1Mg
KyBzaHVmZmxpbmcgPC9jPg0KICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAg
ICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgZmxvYXQgdmFsdWUg
dG8gYmUgbG9hZGVkIGFuZCBkdXBsaWNhdGVkLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgYW5kDQogICAgKy8v
LyAgICBkdXBsaWNhdGVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fbG9hZDFfcHMoY29uc3QgZmxvYXQgKl9fcCkNCiAg
ICArew0KICAgICsgIHN0cnVjdCBfX21tX2xvYWQxX3BzX3N0cnVjdCB7DQogICAgKyAgICBmbG9h
dCBfX3U7DQogICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19f
KSk7DQogICAgKyAgZmxvYXQgX191ID0gKChzdHJ1Y3QgX19tbV9sb2FkMV9wc19zdHJ1Y3QqKV9f
cCktPl9fdTsNCiAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KXsgX191LCBfX3Us
IF9fdSwgX191IH07DQogICAgK30NCiAgICArDQogICAgKyNkZWZpbmUgICAgICAgIF9tbV9sb2Fk
X3BzMShwKSBfbW1fbG9hZDFfcHMocCkNCiAgICArDQogICAgKy8vLyBMb2FkcyBhIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGZyb20gYW4gYWxpZ25lZA0KICAg
ICsvLy8gICAgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICAr
Ly8vDQogICAgKy8vLyBccGFyYW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgt
Yml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KICAgICsvLy8g
ICAgbG9jYXRpb24gaGFzIHRvIGJlIDEyOC1iaXQgYWxpZ25lZC4NCiAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZh
bHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0K
ICAgICtfbW1fbG9hZF9wcyhjb25zdCBmbG9hdCAqX19wKQ0KICAgICt7DQogICAgKyAgcmV0dXJu
ICooX19tMTI4KilfX3A7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2FkcyBhIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGZyb20gYW4NCiAgICArLy8vICAg
IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQUyAvIE1PVlVQUyA8L2M+IGluc3RydWN0aW9uLg0KICAg
ICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEy
OC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQogICAgKy8v
LyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQogICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRl
ZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRU
UlMNCiAgICArX21tX2xvYWR1X3BzKGNvbnN0IGZsb2F0ICpfX3ApDQogICAgK3sNCiAgICArICBz
dHJ1Y3QgX19sb2FkdV9wcyB7DQogICAgKyAgICBfX20xMjggX192Ow0KICAgICsgIH0gX19hdHRy
aWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KICAgICsgIHJldHVybiAoKHN0
cnVjdCBfX2xvYWR1X3BzKilfX3ApLT5fX3Y7DQogICAgK30NCiAgICArDQogICAgKy8vLyBMb2Fk
cyBmb3VyIHBhY2tlZCBmbG9hdCB2YWx1ZXMsIGluIHJldmVyc2Ugb3JkZXIsIGZyb20gYW4gYWxp
Z25lZA0KICAgICsvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHRvIDMyLWJpdCBlbGVtZW50cyBpbiBh
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgKyBzaHVmZmxpbmcgPC9jPg0K
ICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0K
ICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBh
ZGRyZXNzIG9mIHRoZSBtZW1vcnkNCiAgICArLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAxMjgt
Yml0IGFsaWduZWQuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcywgbG9hZGVkDQogICAgKy8vLyAgICBp
biByZXZlcnNlIG9yZGVyLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQogICAgK19tbV9sb2Fkcl9wcyhjb25zdCBmbG9hdCAqX19wKQ0KICAgICt7DQog
ICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEz
Ml9zaHVmcHMgKCooX192NHNmICopX19wLCAqKF9fdjRzZiAqKV9fcCwgX01NX1NIVUZGTEUgKDAs
MSwyLDMpKTsNCiAgICArI2Vsc2UNCiAgICArICBfX20xMjggX19hID0gX21tX2xvYWRfcHMoX19w
KTsNCiAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChf
X3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAg
Ky8vLyBDcmVhdGUgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aXRoIHVuZGVmaW5l
ZCB2YWx1ZXMuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
ICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB1bmRlZmluZWQgdmFsdWVzLg0KICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV91bmRlZmluZWRf
cHModm9pZCkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArICBfX20xMjggX19Y
ID0gX19YOw0KICAgICsgIHJldHVybiBfX1g7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIChf
X20xMjgpX19idWlsdGluX2lhMzJfdW5kZWYxMjgoKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAg
ICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGUgdmVj
dG9yIGFyZSBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbg0K
ICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBz
ZXQgdG8gemVyby4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWTU9WU1MgLyBNT1ZTUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX3cNCiAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDMyDQogICAgKy8vLyAgICBiaXRzIG9m
IHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlDQogICAgKy8vLyAgICBsb3dl
ciAzMiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSBzb3VyY2Ugb3BlcmFu
ZC4gVGhlDQogICAgKy8vLyAgICB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4NCiAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc2V0
X3NzKGZsb2F0IF9fdykNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20x
MjgpeyBfX3csIDAsIDAsIDAgfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwgd2l0aCBlYWNo
DQogICAgKy8vLyAgICBvZiB0aGUgZm91ciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQogICAgKy8vLyAgICBzcGVjaWZpZWQgc2luZ2xl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMgLyBQRVJNSUxQUyA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3cNCiAgICArLy8vICAgIEEgc2luZ2xl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2
ZWN0b3INCiAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1
cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQogICAgK19tbV9zZXQxX3BzKGZsb2F0IF9fdykNCiAgICArew0KICAgICsgIHJldHVybiBfX2V4
dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9fdywgX193LCBfX3cgfTsNCiAgICArfQ0KICAgICsN
CiAgICArLyogTWljcm9zb2Z0IHNwZWNpZmljLiAqLw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLCB3aXRoIGVhY2gNCiAg
ICArLy8vICAgIG9mIHRoZSBmb3VyIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVj
dG9yIGVsZW1lbnRzIHNldCB0byB0aGUNCiAgICArLy8vICAgIHNwZWNpZmllZCBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyAvIFBFUk1JTFBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fdw0KICAgICsvLy8gICAgQSBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3Rv
cg0KICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMg
QW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAg
ICArX21tX3NldF9wczEoZmxvYXQgX193KQ0KICAgICt7DQogICAgKyAgICByZXR1cm4gX21tX3Nl
dDFfcHMoX193KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XQ0KICAgICsvLy8gICAgaW5pdGlh
bGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQg
dmFsdWVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5k
IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KICAgICsvLy8gICAgaW5zdHJ1Y3Rp
b24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9feg0KICAgICsvLy8gICAgQSBzaW5nbGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsx
Mjc6OTZdDQogICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9feQ0K
ICAgICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQog
ICAgKy8vLyBccGFyYW0gX194DQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRp
bmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXQ0KICAgICsvLy8g
ICAgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX3cNCiAgICArLy8vICAgIEEgc2lu
Z2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMzE6MF0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccmV0dXJucyBB
biBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW1fc2V0X3BzKGZsb2F0IF9feiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykN
CiAgICArew0KICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9feCwg
X195LCBfX3ogfTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwNCiAgICArLy8vICAgIGluaXRp
YWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIDMyLWJpdCBzaW5nbGUt
cHJlY2lzaW9uDQogICAgKy8vLyAgICBmbG9hdC1wb2ludCB2YWx1ZXMuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0
byBhIHNwZWNpZmljDQogICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBccGFyYW0gX196DQogICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdDQogICAgKy8vLyAgICBvZiB0
aGUgcmVzdWx0Lg0KICAgICsvLy8gXHBhcmFtIF9feQ0KICAgICsvLy8gICAgQSBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzoz
Ml0NCiAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBccGFyYW0gX194DQogICAg
Ky8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzk1OjY0XQ0KICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCiAgICAr
Ly8vIFxwYXJhbSBfX3cNCiAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XQ0KICAgICsvLy8gICAg
b2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zZXRyX3BzKGZsb2F0IF9f
eiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykNCiAgICArew0KICAgICsgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3osIF9feSwgX194LCBfX3cgfTsNCiAgICArfQ0K
ICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBpbml0aWFsaXplZA0KICAgICsvLy8gICAgdG8gemVyby4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQUyA8
L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdpdGgNCiAg
ICArLy8vICAgIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4NCiAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc2V0emVyb19wcyh2b2lkKQ0K
ICAgICt7DQogICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCl7IDAsIDAsIDAsIDAg
fTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyB0aGUgdXBwZXIgNjQgYml0cyBvZiBh
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGENCiAgICArLy8vICAgIG1lbW9yeSBs
b2NhdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQog
ICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UEVYVFJRIC8gUEVYVFJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBh
cmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlv
bi4NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4NCiAgICArc3Rh
dGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N0b3JlaF9w
aShfX202NCAqX19wLCBfX20xMjggX19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0K
ICAgICsgIF9fYnVpbHRpbl9pYTMyX3N0b3JlaHBzKChfX3Yyc2YgKilfX3AsIChfX3Y0c2YpX19h
KTsNCiAgICArI2Vsc2UNCiAgICArICBfX2J1aWx0aW5faWEzMl9zdG9yZWhwcygoX192MnNpICop
X19wLCAoX192NHNmKV9fYSk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8g
U3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gdG8gYQ0KICAgICsvLy8gICAgIG1lbW9yeSBsb2NhdGlvbi4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBTIC8gTU9WTFBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2lu
dGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1
ZXMuDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQogICAgK3N0
YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQogICAgK19tbV9zdG9yZWxf
cGkoX19tNjQgKl9fcCwgX19tMTI4IF9fYSkNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18N
CiAgICArICBfX2J1aWx0aW5faWEzMl9zdG9yZWxwcyAoKF9fdjJzZiAqKV9fcCwgKF9fdjRzZilf
X2EpOw0KICAgICsjZWxzZQ0KICAgICsgIF9fYnVpbHRpbl9pYTMyX3N0b3JlbHBzKChfX3Yyc2kg
KilfX3AsIChfX3Y0c2YpX19hKTsNCiAgICArI2VuZGlmDQogICAgK30NCiAgICArDQogICAgKy8v
LyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSB0byBhDQogICAgKy8vLyAgICAgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTUyAvIE1PVlNTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fcA0KICAgICsvLy8gICAgQSBwb2lu
dGVyIHRvIGEgMzItYml0IG1lbW9yeSBsb2NhdGlvbi4NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
dmFsdWUgdG8gYmUgc3RvcmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fc3RvcmVfc3MoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkNCiAg
ICArew0KICAgICsgIHN0cnVjdCBfX21tX3N0b3JlX3NzX3N0cnVjdCB7DQogICAgKyAgICBmbG9h
dCBfX3U7DQogICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19f
KSk7DQogICAgKyAgKChzdHJ1Y3QgX19tbV9zdG9yZV9zc19zdHJ1Y3QqKV9fcCktPl9fdSA9IF9f
YVswXTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIFN0b3JlcyBhIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkNCiAgICArLy8vICAgIGxvY2F0aW9u
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMg
LyBNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19w
DQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhl
IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KICAgICsvLy8gICAgbG9jYXRpb24gZG9lcyBub3QgaGF2
ZSB0byBiZSBhbGlnbmVkLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3Rv
cmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW1fc3RvcmV1X3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpDQogICAgK3sNCiAgICArICBz
dHJ1Y3QgX19zdG9yZXVfcHMgew0KICAgICsgICAgX19tMTI4IF9fdjsNCiAgICArICB9IF9fYXR0
cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCiAgICArICAoKHN0cnVjdCBf
X3N0b3JldV9wcyopX19wKS0+X192ID0gX19hOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gU3Rv
cmVzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBhbiBhbGlnbmVkIG1lbW9y
eQ0KICAgICsvLy8gICAgbG9jYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsv
Ly8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1i
aXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQogICAgKy8vLyAg
ICBsb2NhdGlvbiBoYXMgdG8gYmUgMTYtYnl0ZSBhbGlnbmVkLg0KICAgICsvLy8gXHBhcmFtIF9f
YQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMTI4IF9f
YSkNCiAgICArew0KICAgICsgICooX19tMTI4KilfX3AgPSBfX2E7DQogICAgK30NCiAgICArDQog
ICAgKy8vLyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSBpbnRvDQogICAgKy8vLyAgICBmb3VyIGNvbnRpZ3VvdXMgZWxlbWVudHMgaW4g
YW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4NCiAgICArLy8v
ICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8v
ICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KICAgICsvLy8gXHBh
cmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9z
ZSBsb3dlciAzMiBiaXRzIGFyZSBzdG9yZWQgdG8gZWFjaA0KICAgICsvLy8gICAgb2YgdGhlIGZv
dXIgY29udGlndW91cyBlbGVtZW50cyBwb2ludGVkIGJ5IFxhIF9fcC4NCiAgICArc3RhdGljIF9f
aW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX3N0b3JlMV9wcyhmbG9h
dCAqX19wLCBfX20xMjggX19hKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsg
IF9fYSA9IChfX20xMjgpX19idWlsdGluX2lhMzJfc2h1ZnBzKChfX3Y0c2YpX19hLCAoX192NHNm
KV9fYSwgX01NX1NIVUZGTEUgKDAsMCwwLDApKTsNCiAgICArI2Vsc2UNCiAgICArICBfX2EgPSAo
X19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwg
MCwgMCwgMCwgMCk7DQogICAgKyNlbmRpZg0KICAgICsgIF9tbV9zdG9yZV9wcyhfX3AsIF9fYSk7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvDQogICAgKy8vLyAgICBmb3VyIGNvbnRp
Z3VvdXMgZWxlbWVudHMgaW4gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZs
aW5nIDwvYz4NCiAgICArLy8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxw
YXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzdG9yZWQgdG8gZWFjaA0KICAg
ICsvLy8gICAgb2YgdGhlIGZvdXIgY29udGlndW91cyBlbGVtZW50cyBwb2ludGVkIGJ5IFxhIF9f
cC4NCiAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICAr
X21tX3N0b3JlX3BzMShmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAgX21t
X3N0b3JlMV9wcyhfX3AsIF9fYSk7DQogICAgK30NCiAgICArDQogICAgKy8vLyBTdG9yZXMgZmxv
YXQgdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhbg0KICAg
ICsvLy8gICAgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gaW4gcmV2ZXJzZSBvcmRlci4NCiAgICAr
Ly8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIC8gTU9WQVBT
ICsgc2h1ZmZsaW5nIDwvYz4NCiAgICArLy8vICAgIGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVt
b3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQogICAgKy8vLyAgICBsb2Nh
dGlvbiBoYXMgdG8gYmUgMTI4LWJpdCBhbGlnbmVkLg0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2
YWx1ZXMgdG8gYmUgc3RvcmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fc3RvcmVyX3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpDQog
ICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgX19hID0gX19idWlsdGluX2lhMzJf
c2h1ZnBzICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2EsIF9NTV9TSFVGRkxFICgwLDEsMiwzKSk7
DQogICAgKyNlbHNlDQogICAgKyAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRz
ZilfX2EsIChfX3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsNCiAgICArI2VuZGlmDQogICAgKyAgX21t
X3N0b3JlX3BzKF9fcCwgX19hKTsNCiAgICArfQ0KICAgICsNCiAgICArI2RlZmluZSBfTU1fSElO
VF9FVDAgNw0KICAgICsjZGVmaW5lIF9NTV9ISU5UX0VUMSA2DQogICAgKyNkZWZpbmUgX01NX0hJ
TlRfVDAgIDMNCiAgICArI2RlZmluZSBfTU1fSElOVF9UMSAgMg0KICAgICsjZGVmaW5lIF9NTV9I
SU5UX1QyICAxDQogICAgKyNkZWZpbmUgX01NX0hJTlRfTlRBIDANCiAgICArDQogICAgKyNpZm5k
ZWYgX01TQ19WRVINCiAgICArLyogRklYTUU6IFdlIGhhdmUgdG8gI2RlZmluZSB0aGlzIGJlY2F1
c2UgInNlbCIgbXVzdCBiZSBhIGNvbnN0YW50IGludGVnZXIsIGFuZA0KICAgICsgICBTZW1hIGRv
ZXNuJ3QgZG8gYW55IGZvcm0gb2YgY29uc3RhbnQgcHJvcGFnYXRpb24geWV0LiAqLw0KICAgICsN
CiAgICArLy8vIExvYWRzIG9uZSBjYWNoZSBsaW5lIG9mIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVk
IGFkZHJlc3MgdG8gYSBsb2NhdGlvbg0KICAgICsvLy8gICAgY2xvc2VyIHRvIHRoZSBwcm9jZXNz
b3IuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsv
Ly8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyB2b2lkIF9tbV9wcmVmZXRjaChjb25zdCB2b2lk
ICogYSwgY29uc3QgaW50IHNlbCk7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFJFRkVUQ0hOVEEgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gYQ0KICAgICsvLy8gICAg
QSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBjYWNoZSBsaW5lIG9m
IGRhdGEuDQogICAgKy8vLyBccGFyYW0gc2VsDQogICAgKy8vLyAgICBBIHByZWRlZmluZWQgaW50
ZWdlciBjb25zdGFudCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHByZWZldGNoDQogICAgKy8vLyAg
ICBvcGVyYXRpb246IFxuDQogICAgKy8vLyAgICBfTU1fSElOVF9OVEE6IE1vdmUgZGF0YSB1c2lu
ZyB0aGUgbm9uLXRlbXBvcmFsIGFjY2VzcyAoTlRBKSBoaW50LiBUaGUNCiAgICArLy8vICAgIFBS
RUZFVENITlRBIGluc3RydWN0aW9uIHdpbGwgYmUgZ2VuZXJhdGVkLiBcbg0KICAgICsvLy8gICAg
X01NX0hJTlRfVDA6IE1vdmUgZGF0YSB1c2luZyB0aGUgVDAgaGludC4gVGhlIFBSRUZFVENIVDAg
aW5zdHJ1Y3Rpb24gd2lsbA0KICAgICsvLy8gICAgYmUgZ2VuZXJhdGVkLiBcbg0KICAgICsvLy8g
ICAgX01NX0hJTlRfVDE6IE1vdmUgZGF0YSB1c2luZyB0aGUgVDEgaGludC4gVGhlIFBSRUZFVENI
VDEgaW5zdHJ1Y3Rpb24gd2lsbA0KICAgICsvLy8gICAgYmUgZ2VuZXJhdGVkLiBcbg0KICAgICsv
Ly8gICAgX01NX0hJTlRfVDI6IE1vdmUgZGF0YSB1c2luZyB0aGUgVDIgaGludC4gVGhlIFBSRUZF
VENIVDIgaW5zdHJ1Y3Rpb24gd2lsbA0KICAgICsvLy8gICAgYmUgZ2VuZXJhdGVkLg0KICAgICsj
ZGVmaW5lIF9tbV9wcmVmZXRjaChhLCBzZWwpIChfX2J1aWx0aW5fcHJlZmV0Y2goKHZvaWQgKiko
YSksIFwNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgoc2VsKSA+PiAyKSAmIDEsIChzZWwpICYgMHgzKSkNCiAgICArI2VuZGlmDQogICAgKw0K
ICAgICsvLy8gU3RvcmVzIGEgNjQtYml0IGludGVnZXIgaW4gdGhlIHNwZWNpZmllZCBhbGlnbmVk
IG1lbW9yeSBsb2NhdGlvbi4gVG8NCiAgICArLy8vICAgIG1pbmltaXplIGNhY2hpbmcsIHRoZSBk
YXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KICAgICsvLy8g
ICAgdXNlZCBhZ2FpbiBzb29uKS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBNT1ZOVFEgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBc
cGFyYW0gX19wDQogICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYW4gYWxpZ25lZCBtZW1vcnkgbG9j
YXRpb24gdXNlZCB0byBzdG9yZSB0aGUgcmVnaXN0ZXIgdmFsdWUuDQogICAgKy8vLyBccGFyYW0g
X19hDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRv
IGJlIHN0b3JlZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRU
UlNfTU1YDQogICAgK19tbV9zdHJlYW1fcGkoX19tNjQgKl9fcCwgX19tNjQgX19hKQ0KICAgICt7
DQogICAgKyNpZmRlZiBfX0dOVUNfXw0KICAgICsgIF9fYnVpbHRpbl9pYTMyX21vdm50cSAoKHVu
c2lnbmVkIGxvbmcgbG9uZyAqKV9fcCwgKHVuc2lnbmVkIGxvbmcgbG9uZylfX2EpOw0KICAgICsj
ZWxzZQ0KICAgICsgIF9fYnVpbHRpbl9pYTMyX21vdm50cShfX3AsIF9fYSk7DQogICAgKyNlbmRp
Zg0KICAgICt9DQogICAgKw0KICAgICsvLy8gTW92ZXMgcGFja2VkIGZsb2F0IHZhbHVlcyBmcm9t
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYQ0KICAgICsvLy8gICAgMTI4LWJp
dCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEg
aXMgZmxhZ2dlZA0KICAgICsvLy8gICAgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1
c2VkIGFnYWluIHNvb24pLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNT1ZOVFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgYWxp
Z25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlDQogICAgKy8vLyAgICBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCiAgICArLy8vIFxwYXJhbSBf
X2ENCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9f
REVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fc3RyZWFtX3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBf
X2EpDQogICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgX19idWlsdGluX2lhMzJf
bW92bnRwcyAoX19wLCAoX192NHNmKV9fYSk7DQogICAgKyNlbHNlDQogICAgKyAgX19idWlsdGlu
X25vbnRlbXBvcmFsX3N0b3JlKChfX3Y0c2YpX19hLCAoX192NHNmKilfX3ApOw0KICAgICsjZW5k
aWYNCiAgICArfQ0KICAgICsNCiAgICArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQogICAgK2V4
dGVybiAiQyIgew0KICAgICsjZW5kaWYNCiAgICArDQogICAgKy8vLyBGb3JjZXMgc3Ryb25nIG1l
bW9yeSBvcmRlcmluZyAoc2VyaWFsaXphdGlvbikgYmV0d2VlbiBzdG9yZQ0KICAgICsvLy8gICAg
aW5zdHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3RydWN0aW9uIGFuZCBzdG9yZSBpbnN0cnVj
dGlvbnMgZm9sbG93aW5nDQogICAgKy8vLyAgICB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmluZyB0
aGUgc3lzdGVtIGNvbXBsZXRlcyBhbGwgcHJldmlvdXMgc3RvcmVzDQogICAgKy8vLyAgICBiZWZv
cmUgZXhlY3V0aW5nIHN1YnNlcXVlbnQgc3RvcmVzLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFNGRU5DRSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8N
CiAgICArdm9pZCBfbW1fc2ZlbmNlKHZvaWQpOw0KICAgICsNCiAgICArI2lmIGRlZmluZWQoX19j
cGx1c3BsdXMpDQogICAgK30gLy8gZXh0ZXJuICJDIg0KICAgICsjZW5kaWYNCiAgICArDQogICAg
Ky8vLyBFeHRyYWN0cyAxNi1iaXQgZWxlbWVudCBmcm9tIGEgNjQtYml0IHZlY3RvciBvZiBbNCB4
IGkxNl0gYW5kDQogICAgKy8vLyAgICByZXR1cm5zIGl0LCBhcyBzcGVjaWZpZWQgYnkgdGhlIGlt
bWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBpbnQgX21t
X2V4dHJhY3RfcGkxNihfX202NCBhLCBpbnQgbik7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsv
Ly8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRS
VyAvIFBFWFRSVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBh
DQogICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KICAgICsvLy8gXHBh
cmFtIG4NCiAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgdGhhdCBkZXRl
cm1pbmVzIHdoaWNoIGJpdHMgYXJlIGV4dHJhY3RlZDogXG4NCiAgICArLy8vICAgIDA6IEJpdHMg
WzE1OjBdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAgMTog
Qml0cyBbMzE6MTZdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8g
ICAgMjogQml0cyBbNDc6MzJdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KICAg
ICsvLy8gICAgMzogQml0cyBbNjM6NDhdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLg0K
ICAgICsvLy8gXHJldHVybnMgQSAxNi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0
ZWQgMTYgYml0cyBvZiBwYWNrZWQgZGF0YS4NCiAgICArI2RlZmluZSBfbW1fZXh0cmFjdF9waTE2
KGEsIG4pIFwNCiAgICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRoaSgoX19tNjQp
YSwgKGludCluKQ0KICAgICsNCiAgICArLy8vIENvcGllcyBkYXRhIGZyb20gdGhlIDY0LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMTZdIHRvIHRoZSBkZXN0aW5hdGlvbiwNCiAgICArLy8vICAgIGFuZCBp
bnNlcnRzIHRoZSBsb3dlciAxNi1iaXRzIG9mIGFuIGludGVnZXIgb3BlcmFuZCBhdCB0aGUgMTYt
Yml0IG9mZnNldA0KICAgICsvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgb3BlcmFu
ZCBcYSBuLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAg
ICArLy8vDQogICAgKy8vLyBcY29kZQ0KICAgICsvLy8gX19tNjQgX21tX2luc2VydF9waTE2KF9f
bTY0IGEsIGludCBkLCBpbnQgbik7DQogICAgKy8vLyBcZW5kY29kZQ0KICAgICsvLy8NCiAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUElOU1JXIDwvYz4gaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIGENCiAgICArLy8vICAgIEEgNjQt
Yml0IHZlY3RvciBvZiBbNCB4IGkxNl0uDQogICAgKy8vLyBccGFyYW0gZA0KICAgICsvLy8gICAg
QW4gaW50ZWdlci4gVGhlIGxvd2VyIDE2LWJpdCB2YWx1ZSBmcm9tIHRoaXMgb3BlcmFuZCBpcyB3
cml0dGVuIHRvIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24gYXQgdGhlIG9mZnNldCBzcGVj
aWZpZWQgYnkgb3BlcmFuZCBcYSBuLg0KICAgICsvLy8gXHBhcmFtIG4NCiAgICArLy8vICAgIEFu
IGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbnQgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIHRoZSBiaXRz
IHRvIGJlIHVzZWQNCiAgICArLy8vICAgIGluIHRoZSBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8v
ICAgIDA6IEJpdHMgWzE1OjBdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KICAg
ICsvLy8gICAgMTogQml0cyBbMzE6MTZdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBc
bg0KICAgICsvLy8gICAgMjogQml0cyBbNDc6MzJdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0
aW9uLiBcbg0KICAgICsvLy8gICAgMzogQml0cyBbNjM6NDhdIGFyZSBjb3BpZWQgdG8gdGhlIGRl
c3RpbmF0aW9uLiAgXG4NCiAgICArLy8vICAgIFRoZSByZW1haW5pbmcgYml0cyBpbiB0aGUgZGVz
dGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nDQogICAgKy8vLyAgICBi
aXRzIGluIG9wZXJhbmQgXGEgYS4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBwYWNrZWQgZGF0YSBmcm9tIHRoZQ0KICAgICsv
Ly8gICAgb3BlcmFuZHMuDQogICAgKyNkZWZpbmUgX21tX2luc2VydF9waTE2KGEsIGQsIG4pIFwN
CiAgICArICAoX19tNjQpX19idWlsdGluX2lhMzJfdmVjX3NldF92NGhpKChfX202NClhLCAoaW50
KWQsIChpbnQpbikNCiAgICArDQogICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIHBhY2tlZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMgb2YNCiAgICArLy8vICAgIHRoZSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQgd3JpdGVzIHRoZSBncmVhdGVyIHZhbHVlIHRvIHRo
ZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCiAg
ICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUFYU1cgPC9jPiBp
bnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KICAgICtfbW1fbWF4X3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpDQogICAgK3sNCiAg
ICArICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtYXhzdygoX192NGhpKV9fYSwgKF9f
djRoaSlfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUg
Y29ycmVzcG9uZGluZyBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50ZWdlcg0KICAgICsvLy8gICAg
dmFsdWVzIG9mIHRoZSA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQgd3JpdGVzIHRoZSBncmVh
dGVyIHZhbHVlIHRvIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBk
ZXN0aW5hdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQTUFYVUIgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19h
DQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fbWF4X3B1OChfX202NCBfX2EsIF9fbTY0IF9f
YikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG1heHViKChf
X3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb21wYXJl
cyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhY2tlZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMg
b2YNCiAgICArLy8vICAgIHRoZSA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQgd3JpdGVzIHRo
ZSBsZXNzZXIgdmFsdWUgdG8gdGhlDQogICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGJpdHMgaW4g
dGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFBNSU5TVyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQogICAgK19tbV9taW5fcGkxNihfX202NCBfX2EsIF9f
bTY0IF9fYikNCiAgICArew0KICAgICsgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG1p
bnN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBD
b21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhY2tlZCA4LWJpdCB1bnNpZ25lZCBp
bnRlZ2VyDQogICAgKy8vLyAgICB2YWx1ZXMgb2YgdGhlIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMs
IGFuZCB3cml0ZXMgdGhlIGxlc3NlciB2YWx1ZSB0byB0aGUNCiAgICArLy8vICAgIGNvcnJlc3Bv
bmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1JTlVCIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxwYXJhbSBf
X2INCiAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQogICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICArX21tX21pbl9wdTgo
X19tNjQgX19hLCBfX202NCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTY0KV9fYnVp
bHRpbl9pYTMyX3BtaW51YigoX192OHFpKV9fYSwgKF9fdjhxaSlfX2IpOw0KICAgICt9DQogICAg
Kw0KICAgICsvLy8gVGFrZXMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZyb20gZWFjaCA4LWJp
dCBlbGVtZW50IGluIGEgNjQtYml0DQogICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciB0byBjcmVh
dGUgYW4gOC1iaXQgbWFzayB2YWx1ZS4gWmVyby1leHRlbmRzIHRoZSB2YWx1ZSB0bw0KICAgICsv
Ly8gICAgMzItYml0IGludGVnZXIgYW5kIHdyaXRlcyBpdCB0byB0aGUgZGVzdGluYXRpb24uDQog
ICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1PVk1TS0IgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgd2l0aCBiaXRz
IHRvIGJlIGV4dHJhY3RlZC4NCiAgICArLy8vIFxyZXR1cm5zIFRoZSBtb3N0IHNpZ25pZmljYW50
IGJpdCBmcm9tIGVhY2ggOC1iaXQgZWxlbWVudCBpbiBcYSBfX2EsDQogICAgKy8vLyAgICB3cml0
dGVuIHRvIGJpdHMgWzc6MF0uDQogICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRf
Rk5fQVRUUlNfTU1YDQogICAgK19tbV9tb3ZlbWFza19waTgoX19tNjQgX19hKQ0KICAgICt7DQog
ICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiKChfX3Y4cWkpX19hKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIE11bHRpcGxpZXMgcGFja2VkIDE2LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlcyBhbmQgd3JpdGVzIHRoZQ0KICAgICsvLy8gICAgaGlnaC1vcmRlciAxNiBiaXRz
IG9mIGVhY2ggMzItYml0IHByb2R1Y3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbg0KICAg
ICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFBNVUxIVVcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICArX21tX211bGhp
X3B1MTYoX19tNjQgX19hLCBfX202NCBfX2IpDQogICAgK3sNCiAgICArICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BtdWxodXcoKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCiAgICAr
fQ0KICAgICsNCiAgICArLy8vIFNodWZmbGVzIHRoZSA0IDE2LWJpdCBpbnRlZ2VycyBmcm9tIGEg
NjQtYml0IGludGVnZXIgdmVjdG9yIHRvIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24sIGFz
IHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2Rl
DQogICAgKy8vLyBfX202NCBfbW1fc2h1ZmZsZV9waTE2KF9fbTY0IGEsIGNvbnN0IGludCBuKTsN
CiAgICArLy8vIFxlbmRjb2RlDQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBQU0hVRlcgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQog
ICAgKy8vLyBccGFyYW0gYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHNodWZmbGVkLg0KICAgICsvLy8gXHBhcmFtIG4NCiAg
ICArLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNw
ZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8NCiAgICArLy8vICAgIGNvcHkgZnJvbSBcYSBhLiBU
aGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgNjQtYml0IGRlc3RpbmF0aW9uIGFyZQ0KICAgICsv
Ly8gICAgYXNzaWduZWQgdmFsdWVzIGFzIGZvbGxvd3M6IFxuDQogICAgKy8vLyAgICBCaXRzIFsx
OjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTU6MF0gaW4gdGhlDQogICAg
Ky8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQg
dG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFszMToxNl0gaW4gdGhlDQogICAgKy8vLyAgICBkZXN0
aW5hdGlvbi4gXG4NCiAgICArLy8vICAgIEJpdHMgWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZh
bHVlcyB0byBiaXRzIFs0NzozMl0gaW4gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4N
CiAgICArLy8vICAgIEJpdHMgWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRz
IFs2Mzo0OF0gaW4gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCiAgICArLy8vICAg
IEJpdCB2YWx1ZSBhc3NpZ25tZW50czogXG4NCiAgICArLy8vICAgIDAwOiBhc3NpZ25lZCBmcm9t
IGJpdHMgWzE1OjBdIG9mIFxhIGEuIFxuDQogICAgKy8vLyAgICAwMTogYXNzaWduZWQgZnJvbSBi
aXRzIFszMToxNl0gb2YgXGEgYS4gXG4NCiAgICArLy8vICAgIDEwOiBhc3NpZ25lZCBmcm9tIGJp
dHMgWzQ3OjMyXSBvZiBcYSBhLiBcbg0KICAgICsvLy8gICAgMTE6IGFzc2lnbmVkIGZyb20gYml0
cyBbNjM6NDhdIG9mIFxhIGEuDQogICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQogICAgKyNkZWZpbmUgX21tX3No
dWZmbGVfcGkxNihhLCBuKSBcDQogICAgKyAgKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzaHVmdygo
X192NGhpKShfX202NCkoYSksIChuKSkNCiAgICArDQogICAgKy8vLyBDb25kaXRpb25hbGx5IGNv
cGllcyB0aGUgdmFsdWVzIGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGluIHRoZSBmaXJzdA0KICAg
ICsvLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgdG8gdGhlIHNwZWNpZmllZCBt
ZW1vcnkgbG9jYXRpb24sIGFzDQogICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIG1vc3Qgc2ln
bmlmaWNhbnQgYml0IGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlDQogICAgKy8v
LyAgICBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuDQogICAgKy8vLw0KICAg
ICsvLy8gICAgVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24t
dGVtcG9yYWwNCiAgICArLy8vICAgICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLg0K
ICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQog
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1BU0tNT1ZRIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fZA0KICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggZWxl
bWVudHMgdG8gYmUgY29waWVkLg0KICAgICsvLy8gXHBhcmFtIF9fbg0KICAgICsvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZy
b20gZWFjaCA4LWJpdA0KICAgICsvLy8gICAgZWxlbWVudCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fZA0KICAgICsvLy8gICAgaXMg
Y29waWVkLiBJZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBnaXZlbiBlbGVtZW50IGlz
IDEsIHRoZQ0KICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIG9wZXJhbmQgXGEg
X19kIGlzIGNvcGllZC4NCiAgICArLy8vIFxwYXJhbSBfX3ANCiAgICArLy8vICAgIEEgcG9pbnRl
ciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGNvbmRp
dGlvbmFsbHkNCiAgICArLy8vICAgIGNvcGllZCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGFkZHJlc3Mg
b2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlDQogICAgKy8vLyAgICB0byBiZSBh
bGlnbmVkLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSU19N
TVgNCiAgICArX21tX21hc2ttb3ZlX3NpNjQoX19tNjQgX19kLCBfX202NCBfX24sIGNoYXIgKl9f
cCkNCiAgICArew0KICAgICsgIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZxKChfX3Y4cWkpX19kLCAo
X192OHFpKV9fbiwgX19wKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXB1dGVzIHRoZSBy
b3VuZGVkIGF2ZXJhZ2VzIG9mIHRoZSBwYWNrZWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlcg0KICAg
ICsvLy8gICAgdmFsdWVzIGFuZCB3cml0ZXMgdGhlIGF2ZXJhZ2VzIHRvIHRoZSBjb3JyZXNwb25k
aW5nIGJpdHMgaW4gdGhlDQogICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVZHQiA8L2M+IGluc3RydWN0aW9uLg0K
ICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQogICAgKy8v
LyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYXZlcmFnZXMgb2YgYm90aCBvcGVyYW5k
cy4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0K
ICAgICtfbW1fYXZnX3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikNCiAgICArew0KICAgICsgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGF2Z2IoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19i
KTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2ZXJhZ2Vz
IG9mIHRoZSBwYWNrZWQgdW5zaWduZWQgMTYtYml0IGludGVnZXINCiAgICArLy8vICAgIHZhbHVl
cyBhbmQgd3JpdGVzIHRoZSBhdmVyYWdlcyB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRo
ZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUEFWR1cgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAg
Ky8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHBhcmFtIF9fYg0K
ICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCiAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIGF2ZXJhZ2VzIG9mIGJvdGggb3BlcmFuZHMuDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICArX21tX2F2Z19w
dTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7DQogICAgKyAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl9wYXZndygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KICAgICt9DQog
ICAgKw0KICAgICsvLy8gU3VidHJhY3RzIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVk
IGludGVnZXIgdmFsdWVzIG9mIHRoZSB0d28NCiAgICArLy8vICAgIDY0LWJpdCB2ZWN0b3Igb3Bl
cmFuZHMgYW5kIGNvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBmb3IgZWFjaCBvZiB0aGUNCiAg
ICArLy8vICAgIGRpZmZlcmVuY2UuIFRoZW4gc3VtIG9mIHRoZSA4IGFic29sdXRlIGRpZmZlcmVu
Y2VzIGlzIHdyaXR0ZW4gdG8gdGhlDQogICAgKy8vLyAgICBiaXRzIFsxNTowXSBvZiB0aGUgZGVz
dGluYXRpb247IHRoZSByZW1haW5pbmcgYml0cyBbNjM6MTZdIGFyZSBjbGVhcmVkLg0KICAgICsv
Ly8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTQURCVyA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQogICAgKy8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KICAgICsvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igd2hvc2UgbG93ZXIgMTYgYml0cyBjb250YWluIHRo
ZSBzdW1zIG9mIHRoZQ0KICAgICsvLy8gICAgc2V0cyBvZiBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBi
ZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciBiaXRzIGFyZQ0KICAgICsvLy8gICAgY2xl
YXJlZC4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01N
WA0KICAgICtfbW1fc2FkX3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikNCiAgICArew0KICAgICsg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNhZGJ3KChfX3Y4cWkpX19hLCAoX192OHFp
KV9fYik7DQogICAgK30NCiAgICArDQogICAgKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KICAg
ICtleHRlcm4gIkMiIHsNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsvLy8gUmV0dXJucyB0aGUg
Y29udGVudHMgb2YgdGhlIE1YQ1NSIHJlZ2lzdGVyIGFzIGEgMzItYml0IHVuc2lnbmVkDQogICAg
Ky8vLyAgICBpbnRlZ2VyIHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZXJlIGFyZSBz
ZXZlcmFsIGdyb3VwcyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMNCiAgICArLy8vICAg
IGludHJpbnNpYywgaW5jbHVkaW5nOg0KICAgICsvLy8gICAgPHVsPg0KICAgICsvLy8gICAgPGxp
Pg0KICAgICsvLy8gICAgICBGb3IgY2hlY2tpbmcgZXhjZXB0aW9uIHN0YXRlczogX01NX0VYQ0VQ
VF9JTlZBTElELCBfTU1fRVhDRVBUX0RJVl9aRVJPLA0KICAgICsvLy8gICAgICBfTU1fRVhDRVBU
X0RFTk9STSwgX01NX0VYQ0VQVF9PVkVSRkxPVywgX01NX0VYQ0VQVF9VTkRFUkZMT1csDQogICAg
Ky8vLyAgICAgIF9NTV9FWENFUFRfSU5FWEFDVC4gVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFw
cGVyDQogICAgKy8vLyAgICAgIF9NTV9HRVRfRVhDRVBUSU9OX1NUQVRFKCkuDQogICAgKy8vLyAg
ICA8L2xpPg0KICAgICsvLy8gICAgPGxpPg0KICAgICsvLy8gICAgICBGb3IgY2hlY2tpbmcgZXhj
ZXB0aW9uIG1hc2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLA0KICAg
ICsvLy8gICAgICBfTU1fTUFTS19JTlZBTElELCBfTU1fTUFTS19ERU5PUk0sIF9NTV9NQVNLX0RJ
Vl9aRVJPLCBfTU1fTUFTS19JTkVYQUNULg0KICAgICsvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZl
bmllbmNlIHdyYXBwZXIgX01NX0dFVF9FWENFUFRJT05fTUFTSygpLg0KICAgICsvLy8gICAgPC9s
aT4NCiAgICArLy8vICAgIDxsaT4NCiAgICArLy8vICAgICAgRm9yIGNoZWNraW5nIHJvdW5kaW5n
IG1vZGVzOiBfTU1fUk9VTkRfTkVBUkVTVCwgX01NX1JPVU5EX0RPV04sDQogICAgKy8vLyAgICAg
IF9NTV9ST1VORF9VUCwgX01NX1JPVU5EX1RPV0FSRF9aRVJPLiBUaGVyZSBpcyBhIGNvbnZlbmll
bmNlIHdyYXBwZXINCiAgICArLy8vICAgICAgX01NX0dFVF9ST1VORElOR19NT0RFKCkuDQogICAg
Ky8vLyAgICA8L2xpPg0KICAgICsvLy8gICAgPGxpPg0KICAgICsvLy8gICAgICBGb3IgY2hlY2tp
bmcgZmx1c2gtdG8temVybyBtb2RlOiBfTU1fRkxVU0hfWkVST19PTiwgX01NX0ZMVVNIX1pFUk9f
T0ZGLg0KICAgICsvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgX01NX0dF
VF9GTFVTSF9aRVJPX01PREUoKS4NCiAgICArLy8vICAgIDwvbGk+DQogICAgKy8vLyAgICA8bGk+
DQogICAgKy8vLyAgICAgIEZvciBjaGVja2luZyBkZW5vcm1hbHMtYXJlLXplcm8gbW9kZTogX01N
X0RFTk9STUFMU19aRVJPX09OLA0KICAgICsvLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZG
LiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXINCiAgICArLy8vICAgICAgX01NX0dFVF9E
RU5PUk1BTFNfWkVST19NT0RFKCkuDQogICAgKy8vLyAgICA8L2xpPg0KICAgICsvLy8gICAgPC91
bD4NCiAgICArLy8vDQogICAgKy8vLyAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBleHBy
ZXNzaW9uIGNoZWNrcyBpZiBhbiBvdmVyZmxvdyBleGNlcHRpb24gaGFzDQogICAgKy8vLyAgICBv
Y2N1cnJlZDoNCiAgICArLy8vICAgIFxjb2RlDQogICAgKy8vLyAgICAgICggX21tX2dldGNzcigp
ICYgX01NX0VYQ0VQVF9PVkVSRkxPVyApDQogICAgKy8vLyAgICBcZW5kY29kZQ0KICAgICsvLy8N
CiAgICArLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBnZXRzIHRoZSBjdXJyZW50IHJv
dW5kaW5nIG1vZGU6DQogICAgKy8vLyAgICBcY29kZQ0KICAgICsvLy8gICAgICBfTU1fR0VUX1JP
VU5ESU5HX01PREUoKQ0KICAgICsvLy8gICAgXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1RNWENTUiAvIFNUTVhDU1IgPC9jPiBpbnN0cnVj
dGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBNWENTUg0KICAgICsvLy8gICAgcmVn
aXN0ZXIuDQogICAgK3Vuc2lnbmVkIGludCBfbW1fZ2V0Y3NyKHZvaWQpOw0KICAgICsNCiAgICAr
Ly8vIFNldHMgdGhlIE1YQ1NSIHJlZ2lzdGVyIHdpdGggdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlLg0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZXJlIGFyZSBzZXZlcmFsIGdyb3Vw
cyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50cmluc2ljLA0KICAgICsvLy8gICAg
aW5jbHVkaW5nOg0KICAgICsvLy8gICAgPHVsPg0KICAgICsvLy8gICAgPGxpPg0KICAgICsvLy8g
ICAgICBGb3Igc2V0dGluZyBleGNlcHRpb24gc3RhdGVzOiBfTU1fRVhDRVBUX0lOVkFMSUQsIF9N
TV9FWENFUFRfRElWX1pFUk8sDQogICAgKy8vLyAgICAgIF9NTV9FWENFUFRfREVOT1JNLCBfTU1f
RVhDRVBUX09WRVJGTE9XLCBfTU1fRVhDRVBUX1VOREVSRkxPVywNCiAgICArLy8vICAgICAgX01N
X0VYQ0VQVF9JTkVYQUNULiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXINCiAgICArLy8v
ICAgICAgX01NX1NFVF9FWENFUFRJT05fU1RBVEUoeCkgd2hlcmUgeCBpcyBvbmUgb2YgdGhlc2Ug
bWFjcm9zLg0KICAgICsvLy8gICAgPC9saT4NCiAgICArLy8vICAgIDxsaT4NCiAgICArLy8vICAg
ICAgRm9yIHNldHRpbmcgZXhjZXB0aW9uIG1hc2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9N
QVNLX09WRVJGTE9XLA0KICAgICsvLy8gICAgICBfTU1fTUFTS19JTlZBTElELCBfTU1fTUFTS19E
RU5PUk0sIF9NTV9NQVNLX0RJVl9aRVJPLCBfTU1fTUFTS19JTkVYQUNULg0KICAgICsvLy8gICAg
ICBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgX01NX1NFVF9FWENFUFRJT05fTUFTSyh4
KSB3aGVyZSB4IGlzIG9uZQ0KICAgICsvLy8gICAgICBvZiB0aGVzZSBtYWNyb3MuDQogICAgKy8v
LyAgICA8L2xpPg0KICAgICsvLy8gICAgPGxpPg0KICAgICsvLy8gICAgICBGb3Igc2V0dGluZyBy
b3VuZGluZyBtb2RlczogX01NX1JPVU5EX05FQVJFU1QsIF9NTV9ST1VORF9ET1dOLA0KICAgICsv
Ly8gICAgICBfTU1fUk9VTkRfVVAsIF9NTV9ST1VORF9UT1dBUkRfWkVSTy4gVGhlcmUgaXMgYSBj
b252ZW5pZW5jZSB3cmFwcGVyDQogICAgKy8vLyAgICAgIF9NTV9TRVRfUk9VTkRJTkdfTU9ERSh4
KSB3aGVyZSB4IGlzIG9uZSBvZiB0aGVzZSBtYWNyb3MuDQogICAgKy8vLyAgICA8L2xpPg0KICAg
ICsvLy8gICAgPGxpPg0KICAgICsvLy8gICAgICBGb3Igc2V0dGluZyBmbHVzaC10by16ZXJvIG1v
ZGU6IF9NTV9GTFVTSF9aRVJPX09OLCBfTU1fRkxVU0hfWkVST19PRkYuDQogICAgKy8vLyAgICAg
IFRoZXJlIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBfTU1fU0VUX0ZMVVNIX1pFUk9fTU9ERSh4
KSB3aGVyZSB4IGlzDQogICAgKy8vLyAgICAgIG9uZSBvZiB0aGVzZSBtYWNyb3MuDQogICAgKy8v
LyAgICA8L2xpPg0KICAgICsvLy8gICAgPGxpPg0KICAgICsvLy8gICAgICBGb3Igc2V0dGluZyBk
ZW5vcm1hbHMtYXJlLXplcm8gbW9kZTogX01NX0RFTk9STUFMU19aRVJPX09OLA0KICAgICsvLy8g
ICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBw
ZXINCiAgICArLy8vICAgICAgX01NX1NFVF9ERU5PUk1BTFNfWkVST19NT0RFKHgpIHdoZXJlIHgg
aXMgb25lIG9mIHRoZXNlIG1hY3Jvcy4NCiAgICArLy8vICAgIDwvbGk+DQogICAgKy8vLyAgICA8
L3VsPg0KICAgICsvLy8NCiAgICArLy8vICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGV4
cHJlc3Npb24gY2F1c2VzIHN1YnNlcXVlbnQgZmxvYXRpbmctcG9pbnQNCiAgICArLy8vICAgIG9w
ZXJhdGlvbnMgdG8gcm91bmQgdXA6DQogICAgKy8vLyAgICAgIF9tbV9zZXRjc3IoX21tX2dldGNz
cigpIHwgX01NX1JPVU5EX1VQKQ0KICAgICsvLy8NCiAgICArLy8vICAgIFRoZSBmb2xsb3dpbmcg
ZXhhbXBsZSBzZXRzIHRoZSBEQVogYW5kIEZUWiBmbGFnczoNCiAgICArLy8vICAgIFxjb2RlDQog
ICAgKy8vLyAgICB2b2lkIHNldEZsYWdzKCkgew0KICAgICsvLy8gICAgICBfTU1fU0VUX0ZMVVNI
X1pFUk9fTU9ERShfTU1fRkxVU0hfWkVST19PTik7DQogICAgKy8vLyAgICAgIF9NTV9TRVRfREVO
T1JNQUxTX1pFUk9fTU9ERShfTU1fREVOT1JNQUxTX1pFUk9fT04pOw0KICAgICsvLy8gICAgfQ0K
ICAgICsvLy8gICAgXGVuZGNvZGUNCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWTERNWENTUiAvIExETVhDU1IgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICArLy8v
DQogICAgKy8vLyBccGFyYW0gX19pDQogICAgKy8vLyAgICBBIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIE1YQ1NSIHJlZ2lzdGVyLg0KICAgICt2b2lk
IF9tbV9zZXRjc3IodW5zaWduZWQgaW50IF9faSk7DQogICAgKw0KICAgICsjaWYgZGVmaW5lZChf
X2NwbHVzcGx1cykNCiAgICArfSAvLyBleHRlcm4gIkMiDQogICAgKyNlbmRpZg0KICAgICsNCiAg
ICArLy8vIFNlbGVjdHMgNCBmbG9hdCB2YWx1ZXMgZnJvbSB0aGUgMTI4LWJpdCBvcGVyYW5kcyBv
ZiBbNCB4IGZsb2F0XSwgYXMNCiAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRl
IHZhbHVlIG9wZXJhbmQuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KICAgICsvLy8NCiAgICArLy8vIFxjb2RlDQogICAgKy8vLyBfX20xMjggX21tX3NodWZm
bGVfcHMoX19tMTI4IGEsIF9fbTEyOCBiLCBjb25zdCBpbnQgbWFzayk7DQogICAgKy8vLyBcZW5k
Y29kZQ0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlNIVUZQUyAvIFNIVUZQUyA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICAr
Ly8vIFxwYXJhbSBhDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KICAgICsvLy8gXHBhcmFtIGINCiAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQogICAgKy8vLyBccGFyYW0gbWFzaw0KICAgICsvLy8gICAgQW4gaW1tZWRpYXRl
IHZhbHVlIGNvbnRhaW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50
cyB0bw0KICAgICsvLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGIuIFxuDQogICAgKy8vLyAg
ICBCaXRzIFszOjBdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGEu
IFxuDQogICAgKy8vLyAgICBCaXRzIFs3OjRdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJv
bSBvcGVyYW5kIFxhIGIuIFxuDQogICAgKy8vLyAgICBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0
aGUgMTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQgdmFsdWVzIGFzDQogICAgKy8vLyAg
ICBmb2xsb3dzOiBcbg0KICAgICsvLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24g
dmFsdWVzIHRvIGJpdHMgWzMxOjBdIGluIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxu
DQogICAgKy8vLyAgICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0
cyBbNjM6MzJdIGluIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAg
ICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIGlu
IHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFs3OjZd
IGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2XSBpbiB0aGUNCiAgICAr
Ly8vICAgIGRlc3RpbmF0aW9uLiBcbg0KICAgICsvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRz
OiBcbg0KICAgICsvLy8gICAgMDA6IEJpdHMgWzMxOjBdIGNvcGllZCBmcm9tIHRoZSBzcGVjaWZp
ZWQgb3BlcmFuZC4gXG4NCiAgICArLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gY29waWVkIGZyb20g
dGhlIHNwZWNpZmllZCBvcGVyYW5kLiBcbg0KICAgICsvLy8gICAgMTA6IEJpdHMgWzk1OjY0XSBj
b3BpZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuIFxuDQogICAgKy8vLyAgICAxMTogQml0
cyBbMTI3Ojk2XSBjb3BpZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuDQogICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNo
dWZmbGVkIHZhbHVlcy4NCiAgICArI2RlZmluZSBfbW1fc2h1ZmZsZV9wcyhhLCBiLCBtYXNrKSBc
DQogICAgKyAgKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zaHVmcHMoKF9fdjRzZikoX19tMTI4KShh
KSwgKF9fdjRzZikoX19tMTI4KShiKSwgXA0KICAgICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChpbnQpKG1hc2spKQ0KICAgICsNCiAgICArLy8vIFVucGFja3MgdGhlIGhpZ2gtb3Jk
ZXIgKGluZGV4IDIsMykgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KICAgICsv
Ly8gICAgWzQgeCBmbG9hdF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZVTlBDS0hQUyAvIFVOUENLSFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFsxMjc6
OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uDQogICAg
Ky8vLyBccGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KICAgICsvLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMy
XSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQogICAgKy8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBpbnRl
cmxlYXZlZCB2YWx1ZXMuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCiAgICArX21tX3VucGFja2hpX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQog
ICAgK3sNCiAgICArI2lmZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVp
bHRpbl9pYTMyX3VucGNraHBzICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KICAgICsjZWxz
ZQ0KICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9f
djRzZilfX2IsIDIsIDYsIDMsIDcpOw0KICAgICsjZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICAr
Ly8vIFVucGFja3MgdGhlIGxvdy1vcmRlciAoaW5kZXggMCwxKSB2YWx1ZXMgZnJvbSB0d28gMTI4
LWJpdCB2ZWN0b3JzIG9mDQogICAgKy8vLyAgICBbNCB4IGZsb2F0XSBhbmQgaW50ZXJsZWF2ZXMg
dGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLw0KICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBTIC8gVU5QQ0tMUFMgPC9j
PiBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBcbg0KICAgICsvLy8gICAgQml0cyBb
MzE6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiAgXG4N
CiAgICArLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2Yg
dGhlIGRlc3RpbmF0aW9uLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gXG4NCiAgICArLy8vICAgIEJpdHMgWzMxOjBdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQogICAgKy8v
LyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVz
dGluYXRpb24uDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAgICtfbW1fdW5wYWNrbG9fcHMoX19t
MTI4IF9fYSwgX19tMTI4IF9fYikNCiAgICArew0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICAr
ICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfdW5wY2tscHMgKChfX3Y0c2YpX19hLCAo
X192NHNmKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxl
dmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYiwgMCwgNCwgMSwgNSk7DQogICAgKyNlbmRp
Zg0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXINCiAgICArLy8vICAgIDMyIGJp
dHMgYXJlIHNldCB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgc2Vjb25kIHBhcmFtZXRlci4g
VGhlIHVwcGVyDQogICAgKy8vLyAgICA5NiBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDk2IGJp
dHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQUyAvIEJMRU5EUFMgLyBNT1ZTUyA8L2M+DQogICAgKy8v
LyAgICBpbnN0cnVjdGlvbi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8v
LyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUg
dXBwZXIgOTYgYml0cyBhcmUNCiAgICArLy8vICAgIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDk2IGJp
dHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBi
aXRzIGFyZQ0KICAgICsvLy8gICAgd3JpdHRlbiB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUg
cmVzdWx0Lg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVM
VF9GTl9BVFRSUw0KICAgICtfbW1fbW92ZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAg
ICt7DQogICAgKyAgX19hWzBdID0gX19iWzBdOw0KICAgICsgIHJldHVybiBfX2E7DQogICAgK30N
CiAgICArDQogICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KICAgICsvLy8gICAgNjQgYml0cyBhcmUgc2V0
IHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBwZXIN
CiAgICArLy8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUg
Zmlyc3QgcGFyYW1ldGVyLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZVTlBDS0hQRCAvIFVOUENLSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0K
ICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlDQogICAgKy8vLyAg
ICB3cml0dGVuIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQogICAgKy8vLyBc
cGFyYW0gX19iDQogICAgKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUNCiAgICArLy8vICAgIHdyaXR0ZW4g
dG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCiAgICArX21tX21vdmVobF9w
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KICAgICt7DQogICAgKyNpZmRlZiBfX0dOVUNfXw0K
ICAgICsgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZobHBzICgoX192NHNmKV9f
YSwgKF9fdjRzZilfX2IpOw0KICAgICsjZWxzZQ0KICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1
ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9fdjRzZilfX2IsIDYsIDcsIDIsIDMpOw0KICAgICsj
ZW5kaWYNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyDQogICAgKy8vLyAgICA2
NCBiaXRzIGFyZSBzZXQgdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRl
ci4gVGhlIHVwcGVyDQogICAgKy8vLyAgICA2NCBiaXRzIGFyZSBzZXQgdG8gdGhlIGxvd2VyIDY0
IGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQogICAgKy8vLw0KICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KICAgICsvLy8NCiAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCiAgICArLy8vDQogICAgKy8vLyBccGFyYW0gX19hDQogICAgKy8vLyAgICBBIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgNjQgYml0cyBh
cmUNCiAgICArLy8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3Vs
dC4NCiAgICArLy8vIFxwYXJhbSBfX2INCiAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZQ0KICAgICsv
Ly8gICAgd3JpdHRlbiB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KICAg
ICtfbW1fbW92ZWxoX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQogICAgK3sNCiAgICArI2lm
ZGVmIF9fR05VQ19fDQogICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdmxo
cHMgKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQogICAgKyNlbHNlDQogICAgKyAgcmV0dXJu
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYiwgMCwgMSwg
NCwgNSk7DQogICAgKyNlbmRpZg0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMgYSA2
NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeA0K
ICAgICsvLy8gICAgZmxvYXRdLg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8v
Lw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0
IHggaTE2XS4gVGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUgY29waWVkDQogICAg
Ky8vLyAgICBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoaXMgb3BlcmFuZC4N
CiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCiAgICArLy8vICAgIHZhbHVlcyBmcm9tIHRo
ZSBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTX01NWA0KICAgICtfbW1fY3Z0cGkxNl9wcyhfX202NCBfX2EpDQogICAgK3sNCiAgICArICBf
X202NCBfX2IsIF9fYzsNCiAgICArICBfX20xMjggX19yOw0KICAgICsNCiAgICArICBfX2IgPSBf
bW1fc2V0emVyb19zaTY0KCk7DQogICAgKyAgX19iID0gX21tX2NtcGd0X3BpMTYoX19iLCBfX2Ep
Ow0KICAgICsgIF9fYyA9IF9tbV91bnBhY2toaV9waTE2KF9fYSwgX19iKTsNCiAgICArICBfX3Ig
PSBfbW1fc2V0emVyb19wcygpOw0KICAgICsgIF9fciA9IF9tbV9jdnRwaTMyX3BzKF9fciwgX19j
KTsNCiAgICArICBfX3IgPSBfbW1fbW92ZWxoX3BzKF9fciwgX19yKTsNCiAgICArICBfX2MgPSBf
bW1fdW5wYWNrbG9fcGkxNihfX2EsIF9fYik7DQogICAgKyAgX19yID0gX21tX2N2dHBpMzJfcHMo
X19yLCBfX2MpOw0KICAgICsNCiAgICArICByZXR1cm4gX19yOw0KICAgICt9DQogICAgKw0KICAg
ICsvLy8gQ29udmVydHMgYSA2NC1iaXQgdmVjdG9yIG9mIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2Vy
IHZhbHVlcyBpbnRvIGENCiAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KICAgICsvLy8NCiAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8v
DQogICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBT
ICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFt
IF9fYQ0KICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIDE2LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlcy4gVGhlIGVsZW1lbnRzIG9mIHRoZQ0KICAgICsvLy8gICAgZGVzdGluYXRpb24g
YXJlIGNvcGllZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoaXMgb3BlcmFu
ZC4NCiAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCiAgICArLy8vICAgIHZhbHVlcyBmcm9t
IHRoZSBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZO
X0FUVFJTX01NWA0KICAgICtfbW1fY3Z0cHUxNl9wcyhfX202NCBfX2EpDQogICAgK3sNCiAgICAr
ICBfX202NCBfX2IsIF9fYzsNCiAgICArICBfX20xMjggX19yOw0KICAgICsNCiAgICArICBfX2Ig
PSBfbW1fc2V0emVyb19zaTY0KCk7DQogICAgKyAgX19jID0gX21tX3VucGFja2hpX3BpMTYoX19h
LCBfX2IpOw0KICAgICsgIF9fciA9IF9tbV9zZXR6ZXJvX3BzKCk7DQogICAgKyAgX19yID0gX21t
X2N2dHBpMzJfcHMoX19yLCBfX2MpOw0KICAgICsgIF9fciA9IF9tbV9tb3ZlbGhfcHMoX19yLCBf
X3IpOw0KICAgICsgIF9fYyA9IF9tbV91bnBhY2tsb19waTE2KF9fYSwgX19iKTsNCiAgICArICBf
X3IgPSBfbW1fY3Z0cGkzMl9wcyhfX3IsIF9fYyk7DQogICAgKw0KICAgICsgIHJldHVybiBfX3I7
DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyB0aGUgbG93ZXIgZm91ciA4LWJpdCB2
YWx1ZXMgZnJvbSBhIDY0LWJpdCB2ZWN0b3Igb2YgWzggeCBpOF0NCiAgICArLy8vICAgIGludG8g
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8L2M+IGluc3RydWN0
aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0
IHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUg
Y29waWVkDQogICAgKy8vLyAgICBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxvd2VyIDQgZWxlbWVu
dHMgaW4gdGhpcyBvcGVyYW5kLg0KICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIGNvbnZlcnRlZA0KICAgICsv
Ly8gICAgdmFsdWVzIGZyb20gdGhlIG9wZXJhbmQuDQogICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQogICAgK19tbV9jdnRwaThfcHMoX19tNjQgX19h
KQ0KICAgICt7DQogICAgKyAgX19tNjQgX19iOw0KICAgICsNCiAgICArICBfX2IgPSBfbW1fc2V0
emVyb19zaTY0KCk7DQogICAgKyAgX19iID0gX21tX2NtcGd0X3BpOChfX2IsIF9fYSk7DQogICAg
KyAgX19iID0gX21tX3VucGFja2xvX3BpOChfX2EsIF9fYik7DQogICAgKw0KICAgICsgIHJldHVy
biBfbW1fY3Z0cGkxNl9wcyhfX2IpOw0KICAgICt9DQogICAgKw0KICAgICsvLy8gQ29udmVydHMg
dGhlIGxvd2VyIGZvdXIgdW5zaWduZWQgOC1iaXQgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDY0LWJp
dA0KICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHggdThdIGludG8gYSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAg
ICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiB1bnNpZ25l
ZCA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGVsZW1lbnRzIG9mIHRoZQ0KICAgICsvLy8gICAg
ZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxvd2VyIDQgZWxl
bWVudHMgaW4gdGhpcw0KICAgICsvLy8gICAgb3BlcmFuZC4NCiAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCBj
b252ZXJ0ZWQNCiAgICArLy8vICAgIHZhbHVlcyBmcm9tIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCiAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCiAgICAr
X21tX2N2dHB1OF9wcyhfX202NCBfX2EpDQogICAgK3sNCiAgICArICBfX202NCBfX2I7DQogICAg
Kw0KICAgICsgIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsNCiAgICArICBfX2IgPSBfbW1fdW5w
YWNrbG9fcGk4KF9fYSwgX19iKTsNCiAgICArDQogICAgKyAgcmV0dXJuIF9tbV9jdnRwaTE2X3Bz
KF9fYik7DQogICAgK30NCiAgICArDQogICAgKy8vLyBDb252ZXJ0cyB0aGUgdHdvIDMyLWJpdCBz
aWduZWQgaW50ZWdlciB2YWx1ZXMgZnJvbSBlYWNoIDY0LWJpdCB2ZWN0b3INCiAgICArLy8vICAg
IG9wZXJhbmQgb2YgWzIgeCBpMzJdIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCiAgICArLy8vDQogICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8v
Lw0KICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQ
UyArIENPTVBPU0lURSA8L2M+IGluc3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJh
bSBfX2ENCiAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dl
ciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlDQogICAgKy8vLyAgICBjb3BpZWQgZnJv
bSB0aGUgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLg0KICAgICsvLy8gXHBhcmFtIF9fYg0KICAg
ICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIHVwcGVyIGVsZW1lbnRz
IG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUNCiAgICArLy8vICAgIGNvcGllZCBmcm9tIHRoZSBlbGVt
ZW50cyBpbiB0aGlzIG9wZXJhbmQuDQogICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCiAgICArLy8v
ICAgIGNvcGllZCBhbmQgY29udmVydGVkIHZhbHVlcyBmcm9tIHRoZSBmaXJzdCBvcGVyYW5kLiBU
aGUgdXBwZXIgNjQgYml0cw0KICAgICsvLy8gICAgY29udGFpbiB0aGUgY29waWVkIGFuZCBjb252
ZXJ0ZWQgdmFsdWVzIGZyb20gdGhlIHNlY29uZCBvcGVyYW5kLg0KICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fY3Z0cGkzMngyX3Bz
KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KICAgICt7DQogICAgKyAgX19tMTI4IF9fYzsNCiAgICAr
DQogICAgKyAgX19jID0gX21tX3NldHplcm9fcHMoKTsNCiAgICArICBfX2MgPSBfbW1fY3Z0cGkz
Ml9wcyhfX2MsIF9fYik7DQogICAgKyAgX19jID0gX21tX21vdmVsaF9wcyhfX2MsIF9fYyk7DQog
ICAgKw0KICAgICsgIHJldHVybiBfbW1fY3Z0cGkzMl9wcyhfX2MsIF9fYSk7DQogICAgK30NCiAg
ICArDQogICAgKy8vLyBDb252ZXJ0cyBlYWNoIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgZWxlbWVudCBvZiBhIDEyOC1iaXQNCiAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTYtYml0IHNpZ25lZCBpbnRlZ2VyLCBhbmQNCiAgICAr
Ly8vICAgIHBhY2tzIHRoZSByZXN1bHRzIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdLg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIHRoZSBmbG9hdGluZy1wb2ludCBl
bGVtZW50IGlzIE5hTiBvciBpbmZpbml0eSwgb3IgaWYgdGhlDQogICAgKy8vLyAgICBmbG9hdGlu
Zy1wb2ludCBlbGVtZW50IGlzIGdyZWF0ZXIgdGhhbiAweDdGRkZGRkZGIG9yIGxlc3MgdGhhbiAt
MHg4MDAwLA0KICAgICsvLy8gICAgaXQgaXMgY29udmVydGVkIHRvIDB4ODAwMC4gT3RoZXJ3aXNl
IGlmIHRoZSBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzDQogICAgKy8vLyAgICBncmVhdGVyIHRo
YW4gMHg3RkZGLCBpdCBpcyBjb252ZXJ0ZWQgdG8gMHg3RkZGLg0KICAgICsvLy8NCiAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICArLy8vDQogICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJICsgQ09NUE9TSVRFIDwvYz4gaW5z
dHJ1Y3Rpb24uDQogICAgKy8vLw0KICAgICsvLy8gXHBhcmFtIF9fYQ0KICAgICsvLy8gICAgQSAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCiAgICArLy8vIFxy
ZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQNCiAgICArLy8vICAgIHZhbHVlcy4NCiAgICArc3RhdGljIF9faW5saW5lX18g
X19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgICtfbW1fY3Z0cHNfcGkxNihfX20xMjgg
X19hKQ0KICAgICt7DQogICAgKyAgX19tNjQgX19iLCBfX2M7DQogICAgKw0KICAgICsgIF9fYiA9
IF9tbV9jdnRwc19waTMyKF9fYSk7DQogICAgKyAgX19hID0gX21tX21vdmVobF9wcyhfX2EsIF9f
YSk7DQogICAgKyAgX19jID0gX21tX2N2dHBzX3BpMzIoX19hKTsNCiAgICArDQogICAgKyAgcmV0
dXJuIF9tbV9wYWNrc19waTMyKF9fYiwgX19jKTsNCiAgICArfQ0KICAgICsNCiAgICArLy8vIENv
bnZlcnRzIGVhY2ggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50IG9mIGEg
MTI4LWJpdA0KICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGludG8gYW4gOC1iaXQgc2lnbmVkIGludGVnZXIsIGFuZA0KICAgICsvLy8gICAgcGFja3MgdGhl
IHJlc3VsdHMgaW50byB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZg0KICAgICsvLy8gICAgWzggeCBpOF0uIFRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSB2ZWN0
b3IgYXJlIHNldCB0byAwLg0KICAgICsvLy8NCiAgICArLy8vICAgIElmIHRoZSBmbG9hdGluZy1w
b2ludCBlbGVtZW50IGlzIE5hTiBvciBpbmZpbml0eSwgb3IgaWYgdGhlDQogICAgKy8vLyAgICBm
bG9hdGluZy1wb2ludCBlbGVtZW50IGlzIGdyZWF0ZXIgdGhhbiAweDdGRkZGRkZGIG9yIGxlc3Mg
dGhhbiAtMHg4MCwgaXQNCiAgICArLy8vICAgIGlzIGNvbnZlcnRlZCB0byAweDgwLiBPdGhlcndp
c2UgaWYgdGhlIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgZ3JlYXRlcg0KICAgICsvLy8gICAg
dGhhbiAweDdGLCBpdCBpcyBjb252ZXJ0ZWQgdG8gMHg3Ri4NCiAgICArLy8vDQogICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQUzJQSSArIENPTVBPU0lURSA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KICAgICsvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFRoZSBsb3dlciAzMiBiaXRz
IGNvbnRhaW4gdGhlDQogICAgKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWVzIGFuZCB0aGUgdXBwcGVy
IDMyIGJpdHMgYXJlIHNldCB0byB6ZXJvLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBf
X0RFRkFVTFRfRk5fQVRUUlNfTU1YDQogICAgK19tbV9jdnRwc19waTgoX19tMTI4IF9fYSkNCiAg
ICArew0KICAgICsgIF9fbTY0IF9fYiwgX19jOw0KICAgICsNCiAgICArICBfX2IgPSBfbW1fY3Z0
cHNfcGkxNihfX2EpOw0KICAgICsgIF9fYyA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsNCiAgICArDQog
ICAgKyAgcmV0dXJuIF9tbV9wYWNrc19waTE2KF9fYiwgX19jKTsNCiAgICArfQ0KICAgICsNCiAg
ICArLy8vIEV4dHJhY3RzIHRoZSBzaWduIGJpdHMgZnJvbSBlYWNoIHNpbmdsZS1wcmVjaXNpb24g
ZmxvYXRpbmctcG9pbnQNCiAgICArLy8vICAgIGVsZW1lbnQgb2YgYSAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUNCiAgICArLy8vICAg
IHNpZ24gYml0cyBpbiBiaXRzIFswOjNdIG9mIHRoZSByZXN1bHQuIEJpdHMgWzMxOjRdIG9mIHRo
ZSByZXN1bHQgYXJlIHNldA0KICAgICsvLy8gICAgdG8gemVyby4NCiAgICArLy8vDQogICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgKy8vLw0KICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTVNLUFMgLyBNT1ZNU0tQUyA8L2M+IGlu
c3RydWN0aW9uLg0KICAgICsvLy8NCiAgICArLy8vIFxwYXJhbSBfX2ENCiAgICArLy8vICAgIEEg
MTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQogICAgKy8vLyBc
cmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLiBCaXRzIFszOjBdIGNvbnRhaW4gdGhlIHNp
Z24gYml0cyBmcm9tIGVhY2gNCiAgICArLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgZWxlbWVudCBvZiB0aGUgcGFyYW1ldGVyLiBCaXRzIFszMTo0XSBhcmUNCiAgICArLy8v
ICAgIHNldCB0byB6ZXJvLg0KICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZO
X0FUVFJTDQogICAgK19tbV9tb3ZlbWFza19wcyhfX20xMjggX19hKQ0KICAgICt7DQogICAgKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BzKChfX3Y0c2YpX19hKTsNCiAgICArfQ0KICAg
ICsNCiAgICArDQogICAgKyNkZWZpbmUgX01NX0FMSUdOMTYgX19hdHRyaWJ1dGVfXygoYWxpZ25l
ZCgxNikpKQ0KICAgICsNCiAgICArDQogICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9JTlZBTElEICAg
ICgweDAwMDEpDQogICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9ERU5PUk0gICAgICgweDAwMDIpDQog
ICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9ESVZfWkVSTyAgICgweDAwMDQpDQogICAgKyNkZWZpbmUg
X01NX0VYQ0VQVF9PVkVSRkxPVyAgICgweDAwMDgpDQogICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9V
TkRFUkZMT1cgICgweDAwMTApDQogICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9JTkVYQUNUICAgICgw
eDAwMjApDQogICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9NQVNLICAgICAgICgweDAwM2YpDQogICAg
Kw0KICAgICsjZGVmaW5lIF9NTV9NQVNLX0lOVkFMSUQgICAgICAoMHgwMDgwKQ0KICAgICsjZGVm
aW5lIF9NTV9NQVNLX0RFTk9STSAgICAgICAoMHgwMTAwKQ0KICAgICsjZGVmaW5lIF9NTV9NQVNL
X0RJVl9aRVJPICAgICAoMHgwMjAwKQ0KICAgICsjZGVmaW5lIF9NTV9NQVNLX09WRVJGTE9XICAg
ICAoMHgwNDAwKQ0KICAgICsjZGVmaW5lIF9NTV9NQVNLX1VOREVSRkxPVyAgICAoMHgwODAwKQ0K
ICAgICsjZGVmaW5lIF9NTV9NQVNLX0lORVhBQ1QgICAgICAoMHgxMDAwKQ0KICAgICsjZGVmaW5l
IF9NTV9NQVNLX01BU0sgICAgICAgICAoMHgxZjgwKQ0KICAgICsNCiAgICArI2RlZmluZSBfTU1f
Uk9VTkRfTkVBUkVTVCAgICAgKDB4MDAwMCkNCiAgICArI2RlZmluZSBfTU1fUk9VTkRfRE9XTiAg
ICAgICAgKDB4MjAwMCkNCiAgICArI2RlZmluZSBfTU1fUk9VTkRfVVAgICAgICAgICAgKDB4NDAw
MCkNCiAgICArI2RlZmluZSBfTU1fUk9VTkRfVE9XQVJEX1pFUk8gKDB4NjAwMCkNCiAgICArI2Rl
ZmluZSBfTU1fUk9VTkRfTUFTSyAgICAgICAgKDB4NjAwMCkNCiAgICArDQogICAgKyNkZWZpbmUg
X01NX0ZMVVNIX1pFUk9fTUFTSyAgICgweDgwMDApDQogICAgKyNkZWZpbmUgX01NX0ZMVVNIX1pF
Uk9fT04gICAgICgweDgwMDApDQogICAgKyNkZWZpbmUgX01NX0ZMVVNIX1pFUk9fT0ZGICAgICgw
eDAwMDApDQogICAgKw0KICAgICsjZGVmaW5lIF9NTV9HRVRfRVhDRVBUSU9OX01BU0soKSAoX21t
X2dldGNzcigpICYgX01NX01BU0tfTUFTSykNCiAgICArI2RlZmluZSBfTU1fR0VUX0VYQ0VQVElP
Tl9TVEFURSgpIChfbW1fZ2V0Y3NyKCkgJiBfTU1fRVhDRVBUX01BU0spDQogICAgKyNkZWZpbmUg
X01NX0dFVF9GTFVTSF9aRVJPX01PREUoKSAoX21tX2dldGNzcigpICYgX01NX0ZMVVNIX1pFUk9f
TUFTSykNCiAgICArI2RlZmluZSBfTU1fR0VUX1JPVU5ESU5HX01PREUoKSAoX21tX2dldGNzcigp
ICYgX01NX1JPVU5EX01BU0spDQogICAgKw0KICAgICsjZGVmaW5lIF9NTV9TRVRfRVhDRVBUSU9O
X01BU0soeCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fTUFTS19NQVNLKSB8ICh4
KSkpDQogICAgKyNkZWZpbmUgX01NX1NFVF9FWENFUFRJT05fU1RBVEUoeCkgKF9tbV9zZXRjc3Io
KF9tbV9nZXRjc3IoKSAmIH5fTU1fRVhDRVBUX01BU0spIHwgKHgpKSkNCiAgICArI2RlZmluZSBf
TU1fU0VUX0ZMVVNIX1pFUk9fTU9ERSh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9N
TV9GTFVTSF9aRVJPX01BU0spIHwgKHgpKSkNCiAgICArI2RlZmluZSBfTU1fU0VUX1JPVU5ESU5H
X01PREUoeCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fUk9VTkRfTUFTSykgfCAo
eCkpKQ0KICAgICsNCiAgICArI2RlZmluZSBfTU1fVFJBTlNQT1NFNF9QUyhyb3cwLCByb3cxLCBy
b3cyLCByb3czKSBcDQogICAgK2RvIHsgXA0KICAgICsgIF9fbTEyOCB0bXAzLCB0bXAyLCB0bXAx
LCB0bXAwOyBcDQogICAgKyAgdG1wMCA9IF9tbV91bnBhY2tsb19wcygocm93MCksIChyb3cxKSk7
IFwNCiAgICArICB0bXAyID0gX21tX3VucGFja2xvX3BzKChyb3cyKSwgKHJvdzMpKTsgXA0KICAg
ICsgIHRtcDEgPSBfbW1fdW5wYWNraGlfcHMoKHJvdzApLCAocm93MSkpOyBcDQogICAgKyAgdG1w
MyA9IF9tbV91bnBhY2toaV9wcygocm93MiksIChyb3czKSk7IFwNCiAgICArICAocm93MCkgPSBf
bW1fbW92ZWxoX3BzKHRtcDAsIHRtcDIpOyBcDQogICAgKyAgKHJvdzEpID0gX21tX21vdmVobF9w
cyh0bXAyLCB0bXAwKTsgXA0KICAgICsgIChyb3cyKSA9IF9tbV9tb3ZlbGhfcHModG1wMSwgdG1w
Myk7IFwNCiAgICArICAocm93MykgPSBfbW1fbW92ZWhsX3BzKHRtcDMsIHRtcDEpOyBcDQogICAg
K30gd2hpbGUgKDApDQogICAgKw0KICAgICsvKiBBbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5LiAq
Lw0KICAgICsjZGVmaW5lIF9tX3BleHRydyBfbW1fZXh0cmFjdF9waTE2DQogICAgKyNkZWZpbmUg
X21fcGluc3J3IF9tbV9pbnNlcnRfcGkxNg0KICAgICsjZGVmaW5lIF9tX3BtYXhzdyBfbW1fbWF4
X3BpMTYNCiAgICArI2RlZmluZSBfbV9wbWF4dWIgX21tX21heF9wdTgNCiAgICArI2RlZmluZSBf
bV9wbWluc3cgX21tX21pbl9waTE2DQogICAgKyNkZWZpbmUgX21fcG1pbnViIF9tbV9taW5fcHU4
DQogICAgKyNkZWZpbmUgX21fcG1vdm1za2IgX21tX21vdmVtYXNrX3BpOA0KICAgICsjZGVmaW5l
IF9tX3BtdWxodXcgX21tX211bGhpX3B1MTYNCiAgICArI2RlZmluZSBfbV9wc2h1ZncgX21tX3No
dWZmbGVfcGkxNg0KICAgICsjZGVmaW5lIF9tX21hc2ttb3ZxIF9tbV9tYXNrbW92ZV9zaTY0DQog
ICAgKyNkZWZpbmUgX21fcGF2Z2IgX21tX2F2Z19wdTgNCiAgICArI2RlZmluZSBfbV9wYXZndyBf
bW1fYXZnX3B1MTYNCiAgICArI2RlZmluZSBfbV9wc2FkYncgX21tX3NhZF9wdTgNCiAgICArI2Rl
ZmluZSBfbV8gX21tXw0KICAgICsjZGVmaW5lIF9tXyBfbW1fDQogICAgKw0KICAgICsjdW5kZWYg
X19ERUZBVUxUX0ZOX0FUVFJTDQogICAgKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQog
ICAgKw0KICAgICsvKiBVZ2x5IGhhY2sgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IChjb21w
YXRpYmxlIHdpdGggZ2NjKSAqLw0KICAgICsjaWZkZWYgX19HTlVDX18NCiAgICArI2luY2x1ZGUg
PGVtbWludHJpbi5oPg0KICAgICsjZWxzZQ0KICAgICsjaWYgZGVmaW5lZChfX1NTRTJfXykgJiYg
IV9fYnVpbGRpbmdfbW9kdWxlKF9CdWlsdGluX2ludHJpbnNpY3MpDQogICAgKyNpbmNsdWRlIDxl
bW1pbnRyaW4uaD4NCiAgICArI2VuZGlmDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArI2VuZGlm
IC8qIF9fWE1NSU5UUklOX0ggKi8NCiAgICAtLSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0K
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:11:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11: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 1hY7LR-0001pm-Ko; Tue, 04 Jun 2019 11:11:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY7LR-0001ph-35
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:11:09 +0000
X-Inumbo-ID: 71a18f5e-86b9-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 71a18f5e-86b9-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:11:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 37FD7F206D;
 Tue,  4 Jun 2019 13:11:04 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id fJhTBZoiBJKE; Tue,  4 Jun 2019 13:11:04 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id F34E2F206A;
 Tue,  4 Jun 2019 13:10:59 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:10:59
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
 <20190603151640.22507-4-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <2ca8fcc5-b534-1aae-e32a-3292150a4cea@neclab.eu>
Date: Tue, 4 Jun 2019 13:10:59 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603151640.22507-4-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 3/8]
 patches: Add patches for proper building of original library
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgQ29zdGluLAoKdGhhbmtzIGZvciBnaXZpbmcgcGF0Y2ggMDAwNiBhIG1vcmUgdmVyYm9zZSBk
ZXNjcmlwdGlvbi4KClJldmlld2VkLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlk
dEBuZWNsYWIuZXU+CgpPbiA2LzMvMTkgNToxNiBQTSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4gQ3Vy
cmVudCBwYXRjaGVzIGluY2x1ZGUgYnVnZml4ZXMgYW5kIHJlZmluZW1lbnRzIGluIHRoZSBvcmln
aW5hbCBjb2RlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBj
cy5wdWIucm8+Cj4gLS0tCj4gICAuLi54LVNldC10eXBlLXNpemUtb2YtcmVzdWx0LXVzZWQtaW4t
cHRocmVhZC5wYXRjaCB8IDQ5NCArKysrKysrKysrKysrKysrKysrKysKPiAgIC4uLngtUGFzcy1y
aWdodC1hcmd1bWVudHMtb24tdGVzdHMtZXhpdDQtYW5kLnBhdGNoIHwgIDU0ICsrKwo+ICAgLi4u
eC1GaXgtbWFjcm8tZGVmaW5pdGlvbnMtZm9yLXRlc3RzLW9uY2UzLWEucGF0Y2ggfCAgMzYgKysK
PiAgIC4uLmxlLXByaW9yaXR5LXRlc3RzLXVudGlsLXdlLWFkZC1wcmVlbXB0aXZlLnBhdGNoIHwg
IDI4ICsrCj4gICBwYXRjaGVzLzAwMDUtVXNlLVVuaWtyYWZ0LXlpZWxkLWZ1bmN0aW9uLnBhdGNo
ICAgICB8ICAyMiArCj4gICAuLi5hZGVyLWluY2x1c2lvbnMtZm9yLWZ1bmN0aW9ucy1mcm9tLWhl
YWRlci5wYXRjaCB8ICA0MCArKwo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA2NzQgaW5zZXJ0aW9ucygr
KQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMS10ZXN0cy1idWdmaXgtU2V0LXR5
cGUtc2l6ZS1vZi1yZXN1bHQtdXNlZC1pbi1wdGhyZWFkLnBhdGNoCj4gICBjcmVhdGUgbW9kZSAx
MDA2NDQgcGF0Y2hlcy8wMDAyLXRlc3RzLWJ1Z2ZpeC1QYXNzLXJpZ2h0LWFyZ3VtZW50cy1vbi10
ZXN0cy1leGl0NC1hbmQucGF0Y2gKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDMt
dGVzdHMtYnVnZml4LUZpeC1tYWNyby1kZWZpbml0aW9ucy1mb3ItdGVzdHMtb25jZTMtYS5wYXRj
aAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwNC10ZXN0cy1EaXNhYmxlLXByaW9y
aXR5LXRlc3RzLXVudGlsLXdlLWFkZC1wcmVlbXB0aXZlLnBhdGNoCj4gICBjcmVhdGUgbW9kZSAx
MDA2NDQgcGF0Y2hlcy8wMDA1LVVzZS1VbmlrcmFmdC15aWVsZC1mdW5jdGlvbi5wYXRjaAo+ICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwNi1TZXBhcmF0ZS1oZWFkZXItaW5jbHVzaW9u
cy1mb3ItZnVuY3Rpb25zLWZyb20taGVhZGVyLnBhdGNoCj4gCj4gZGlmZiAtLWdpdCBhL3BhdGNo
ZXMvMDAwMS10ZXN0cy1idWdmaXgtU2V0LXR5cGUtc2l6ZS1vZi1yZXN1bHQtdXNlZC1pbi1wdGhy
ZWFkLnBhdGNoIGIvcGF0Y2hlcy8wMDAxLXRlc3RzLWJ1Z2ZpeC1TZXQtdHlwZS1zaXplLW9mLXJl
c3VsdC11c2VkLWluLXB0aHJlYWQucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4
IDAwMDAwMDAuLjhhYTJjZWMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGF0Y2hlcy8wMDAxLXRl
c3RzLWJ1Z2ZpeC1TZXQtdHlwZS1zaXplLW9mLXJlc3VsdC11c2VkLWluLXB0aHJlYWQucGF0Y2gK
PiBAQCAtMCwwICsxLDQ5NCBAQAo+ICtGcm9tIDkxOWViYmQ5N2IzOTkyYjVlNjYxNTNiMTk5ODJm
MjhjYjliZjczNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gK0Zyb206IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4KPiArRGF0ZTogU2F0LCA5IE1hciAyMDE5IDE5OjIyOjIz
ICswMjAwCj4gK1N1YmplY3Q6IFtQQVRDSCAxLzVdIHRlc3RzIGJ1Z2ZpeCBTZXQgdHlwZSBzaXpl
IG9mIHJlc3VsdCB1c2VkIGluIHB0aHJlYWRfam9pbgo+ICsgY2FsbHMgdG8gd29yZCBzaXplCj4g
Kwo+ICsKPiArZGlmZiAtLWdpdCBhL3Rlc3RzL2JhcnJpZXIzLmMgYi90ZXN0cy9iYXJyaWVyMy5j
Cj4gK2luZGV4IDFmMTZhNzkuLjQ1ZmMxY2YgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2JhcnJpZXIz
LmMKPiArKysrIGIvdGVzdHMvYmFycmllcjMuYwo+ICtAQCAtNDcsNyArNDcsNyBAQAo+ICsgI2lu
Y2x1ZGUgInRlc3QuaCIKPiArCj4gKyBzdGF0aWMgcHRocmVhZF9iYXJyaWVyX3QgYmFycmllciA9
IE5VTEw7Cj4gKy1zdGF0aWMgaW50IHJlc3VsdCA9IDE7Cj4gKytzdGF0aWMgbG9uZyByZXN1bHQg
PSAxOwo+ICsKPiArIHN0YXRpYyB2b2lkICogZnVuYyh2b2lkICogYXJnKQo+ICsgewo+ICtkaWZm
IC0tZ2l0IGEvdGVzdHMvYmFycmllcjUuYyBiL3Rlc3RzL2JhcnJpZXI1LmMKPiAraW5kZXggMTdl
MGZkNS4uNDA1NWM1MSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvYmFycmllcjUuYwo+ICsrKysgYi90
ZXN0cy9iYXJyaWVyNS5jCj4gK0BAIC05NCw4ICs5NCw4IEBAIGZ1bmModm9pZCAqIGJhcnJpZXJI
ZWlnaHQpCj4gKyBpbnQgcHRocmVhZF90ZXN0X2JhcnJpZXI1KCkKPiArIHsKPiArICAgaW50IGks
IGo7Cj4gKy0gIGludCByZXN1bHQ7Cj4gKy0gIGludCBzZXJpYWxUaHJlYWRzVG90YWw7Cj4gKysg
IGxvbmcgcmVzdWx0Owo+ICsrICBsb25nIHNlcmlhbFRocmVhZHNUb3RhbDsKPiArICAgcHRocmVh
ZF90IHRbTlVNVEhSRUFEUyArIDFdOwo+ICsKPiArICAgbXggPSBQVEhSRUFEX01VVEVYX0lOSVRJ
QUxJWkVSOwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvY2FuY2VsMi5jIGIvdGVzdHMvY2FuY2VsMi5j
Cj4gK2luZGV4IDBjMmIxNDMuLjM2MzU5MzMgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2NhbmNlbDIu
Ywo+ICsrKysgYi90ZXN0cy9jYW5jZWwyLmMKPiArQEAgLTIxNSw3ICsyMTUsNyBAQCBpbnQgcHRo
cmVhZF90ZXN0X2NhbmNlbDIoKQo+ICsgICBmb3IgKGkgPSAxOyBpIDw9IE5VTVRIUkVBRFM7IGkr
KykKPiArICAgICB7Cj4gKyAgICAgICBpbnQgZmFpbCA9IDA7Cj4gKy0gICAgICBpbnQgcmVzdWx0
ID0gMDsKPiArKyAgICAgIGxvbmcgcmVzdWx0ID0gMDsKPiArCj4gKyAgICAgICBhc3NlcnQocHRo
cmVhZF9qb2luKHRbaV0sICh2b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKPiArICAgICAgIGZhaWwg
PSAocmVzdWx0ICE9IChpbnQpIFBUSFJFQURfQ0FOQ0VMRUQpOwo+ICtkaWZmIC0tZ2l0IGEvdGVz
dHMvY2FuY2VsMy5jIGIvdGVzdHMvY2FuY2VsMy5jCj4gK2luZGV4IGM1OWZmNTguLmY5ZjU2M2Ig
MTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2NhbmNlbDMuYwo+ICsrKysgYi90ZXN0cy9jYW5jZWwzLmMK
PiArQEAgLTE4MCw3ICsxODAsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2NhbmNlbDMoKQo+ICsgICBm
b3IgKGkgPSAxOyBpIDw9IE5VTVRIUkVBRFM7IGkrKykKPiArICAgICB7Cj4gKyAgICAgICBpbnQg
ZmFpbCA9IDA7Cj4gKy0gICAgICBpbnQgcmVzdWx0ID0gMDsKPiArKyAgICAgIGxvbmcgcmVzdWx0
ID0gMDsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogVGhlIHRocmVhZCBkb2VzIG5vdCBj
b250YWluIGFueSBjYW5jZWxhdGlvbiBwb2ludHMsIHNvCj4gK2RpZmYgLS1naXQgYS90ZXN0cy9j
YW5jZWw0LmMgYi90ZXN0cy9jYW5jZWw0LmMKPiAraW5kZXggY2MwZTViMS4uMzg1M2NkOCAxMDA2
NDQKPiArLS0tIGEvdGVzdHMvY2FuY2VsNC5jCj4gKysrKyBiL3Rlc3RzL2NhbmNlbDQuYwo+ICtA
QCAtMTc5LDcgKzE3OSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY2FuY2VsNCgpCj4gKyAgIGZvciAo
aSA9IDE7IGkgPD0gTlVNVEhSRUFEUzsgaSsrKQo+ICsgICAgIHsKPiArICAgICAgIGludCBmYWls
ID0gMDsKPiArLSAgICAgIGludCByZXN1bHQgPSAwOwo+ICsrICAgICAgbG9uZyByZXN1bHQgPSAw
Owo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBUaGUgdGhyZWFkIGRvZXMgbm90IGNvbnRh
aW4gYW55IGNhbmNlbGF0aW9uIHBvaW50cywgc28KPiArZGlmZiAtLWdpdCBhL3Rlc3RzL2NhbmNl
bDUuYyBiL3Rlc3RzL2NhbmNlbDUuYwo+ICtpbmRleCA3ZWQwZWI3Li5kNTBiZjNmIDEwMDY0NAo+
ICstLS0gYS90ZXN0cy9jYW5jZWw1LmMKPiArKysrIGIvdGVzdHMvY2FuY2VsNS5jCj4gK0BAIC0x
NzYsNyArMTc2LDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jYW5jZWw1KCkKPiArICAgZm9yIChpID0g
MTsgaSA8PSBOVU1USFJFQURTOyBpKyspCj4gKyAgICAgewo+ICsgICAgICAgaW50IGZhaWwgPSAw
Owo+ICstICAgICAgaW50IHJlc3VsdCA9IDA7Cj4gKysgICAgICBsb25nIHJlc3VsdCA9IDA7Cj4g
Kwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFRoZSB0aHJlYWQgZG9lcyBub3QgY29udGFpbiBh
bnkgY2FuY2VsYXRpb24gcG9pbnRzLCBzbwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvY2FuY2VsNmEu
YyBiL3Rlc3RzL2NhbmNlbDZhLmMKPiAraW5kZXggMzA5YzdhNS4uZTZkNDRiZiAxMDA2NDQKPiAr
LS0tIGEvdGVzdHMvY2FuY2VsNmEuYwo+ICsrKysgYi90ZXN0cy9jYW5jZWw2YS5jCj4gK0BAIC0x
NjksNyArMTY5LDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jYW5jZWw2YSgpCj4gKyAgIGZvciAoaSA9
IDE7IGkgPD0gTlVNVEhSRUFEUzsgaSsrKQo+ICsgICAgIHsKPiArICAgICAgIGludCBmYWlsID0g
MDsKPiArLSAgICAgIGludCByZXN1bHQgPSAwOwo+ICsrICAgICAgbG9uZyByZXN1bHQgPSAwOwo+
ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBUaGUgdGhyZWFkIGRvZXMgbm90IGNvbnRhaW4g
YW55IGNhbmNlbGF0aW9uIHBvaW50cywgc28KPiArZGlmZiAtLWdpdCBhL3Rlc3RzL2NhbmNlbDZk
LmMgYi90ZXN0cy9jYW5jZWw2ZC5jCj4gK2luZGV4IGU0NDg5MTUuLjI3ZjY4ZjkgMTAwNjQ0Cj4g
Ky0tLSBhL3Rlc3RzL2NhbmNlbDZkLmMKPiArKysrIGIvdGVzdHMvY2FuY2VsNmQuYwo+ICtAQCAt
MTcxLDcgKzE3MSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY2FuY2VsNmQoKQo+ICsgICBmb3IgKGkg
PSAxOyBpIDw9IE5VTVRIUkVBRFM7IGkrKykKPiArICAgICB7Cj4gKyAgICAgICBpbnQgZmFpbCA9
IDA7Cj4gKy0gICAgICBpbnQgcmVzdWx0ID0gMDsKPiArKyAgICAgIGxvbmcgcmVzdWx0ID0gMDsK
PiArCj4gKyAgICAgICBhc3NlcnQocHRocmVhZF9qb2luKHRbaV0sICh2b2lkICoqKSAmcmVzdWx0
KSA9PSAwKTsKPiArCj4gK2RpZmYgLS1naXQgYS90ZXN0cy9jbGVhbnVwMC5jIGIvdGVzdHMvY2xl
YW51cDAuYwo+ICtpbmRleCAwNjlmOThkLi5hNjQxOTg5IDEwMDY0NAo+ICstLS0gYS90ZXN0cy9j
bGVhbnVwMC5jCj4gKysrKyBiL3Rlc3RzL2NsZWFudXAwLmMKPiArQEAgLTE5MSw3ICsxOTEsNyBA
QCBpbnQgcHRocmVhZF90ZXN0X2NsZWFudXAwKCkKPiArICAgZm9yIChpID0gMTsgaSA8PSBOVU1U
SFJFQURTOyBpKyspCj4gKyAgICAgewo+ICsgICAgICAgaW50IGZhaWwgPSAwOwo+ICstICAgICAg
aW50IHJlc3VsdCA9IDA7Cj4gKysgICAgICBsb25nIHJlc3VsdCA9IDA7Cj4gKwo+ICsgICAgICAg
YXNzZXJ0KHB0aHJlYWRfam9pbih0W2ldLCAodm9pZCAqKikgJnJlc3VsdCkgPT0gMCk7Cj4gKwo+
ICtkaWZmIC0tZ2l0IGEvdGVzdHMvY2xlYW51cDEuYyBiL3Rlc3RzL2NsZWFudXAxLmMKPiAraW5k
ZXggODY1M2ZkNC4uNjhiYzZhYiAxMDA2NDQKPiArLS0tIGEvdGVzdHMvY2xlYW51cDEuYwo+ICsr
KysgYi90ZXN0cy9jbGVhbnVwMS5jCj4gK0BAIC0yMDYsNyArMjA2LDcgQEAgaW50IHB0aHJlYWRf
dGVzdF9jbGVhbnVwMSgpCj4gKyAgIGZvciAoaSA9IDE7IGkgPD0gTlVNVEhSRUFEUzsgaSsrKQo+
ICsgICAgIHsKPiArICAgICAgIGludCBmYWlsID0gMDsKPiArLSAgICAgIGludCByZXN1bHQgPSAw
Owo+ICsrICAgICAgbG9uZyByZXN1bHQgPSAwOwo+ICsKPiArICAgICAgIGFzc2VydChwdGhyZWFk
X2pvaW4odFtpXSwgKHZvaWQgKiopICZyZXN1bHQpID09IDApOwo+ICsKPiArZGlmZiAtLWdpdCBh
L3Rlc3RzL2NsZWFudXAyLmMgYi90ZXN0cy9jbGVhbnVwMi5jCj4gK2luZGV4IGI0YTI1MTMuLjVk
ZjgzNDYgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2NsZWFudXAyLmMKPiArKysrIGIvdGVzdHMvY2xl
YW51cDIuYwo+ICtAQCAtMTgxLDcgKzE4MSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY2xlYW51cDIo
KQo+ICsgICBmb3IgKGkgPSAxOyBpIDw9IE5VTVRIUkVBRFM7IGkrKykKPiArICAgICB7Cj4gKyAg
ICAgICBpbnQgZmFpbCA9IDA7Cj4gKy0gICAgICBpbnQgcmVzdWx0ID0gMDsKPiArKyAgICAgIGxv
bmcgcmVzdWx0ID0gMDsKPiArCj4gKyAgICAgICBhc3NlcnQocHRocmVhZF9qb2luKHRbaV0sICh2
b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKPiArCj4gK2RpZmYgLS1naXQgYS90ZXN0cy9jbGVhbnVw
My5jIGIvdGVzdHMvY2xlYW51cDMuYwo+ICtpbmRleCAwNDViODQ4Li4xYjgzZDcxIDEwMDY0NAo+
ICstLS0gYS90ZXN0cy9jbGVhbnVwMy5jCj4gKysrKyBiL3Rlc3RzL2NsZWFudXAzLmMKPiArQEAg
LTE5Miw3ICsxOTIsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2NsZWFudXAzKCkKPiArICAgZm9yIChp
ID0gMTsgaSA8PSBOVU1USFJFQURTOyBpKyspCj4gKyAgICAgewo+ICsgICAgICAgaW50IGZhaWwg
PSAwOwo+ICstICAgICAgaW50IHJlc3VsdCA9IDA7Cj4gKysgICAgICBsb25nIHJlc3VsdCA9IDA7
Cj4gKwo+ICsgICAgICAgYXNzZXJ0KHB0aHJlYWRfam9pbih0W2ldLCAodm9pZCAqKikgJnJlc3Vs
dCkgPT0gMCk7Cj4gKwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvY29uZHZhcjFfMi5jIGIvdGVzdHMv
Y29uZHZhcjFfMi5jCj4gK2luZGV4IDY3MDQ3OGQuLjI2ZjYzZjcgMTAwNjQ0Cj4gKy0tLSBhL3Rl
c3RzL2NvbmR2YXIxXzIuYwo+ICsrKysgYi90ZXN0cy9jb25kdmFyMV8yLmMKPiArQEAgLTk1LDcg
Kzk1LDcgQEAgc3RhdGljIHB0aHJlYWRfY29uZF90IGN2W05VTV9DVl07Cj4gKyBpbnQgcHRocmVh
ZF90ZXN0X2NvbmR2YXIxXzIoKQo+ICsgewo+ICsgICBpbnQgaSwgaiwgazsKPiArLSAgaW50IHJl
c3VsdCA9IC0xOwo+ICsrICBsb25nIHJlc3VsdCA9IC0xOwo+ICsgICBwdGhyZWFkX3QgdDsKPiAr
Cj4gKyAgIGZvciAoayA9IDA7IGsgPCBOVU1fTE9PUFM7IGsrKykKPiArZGlmZiAtLWdpdCBhL3Rl
c3RzL2NvbmR2YXIyXzEuYyBiL3Rlc3RzL2NvbmR2YXIyXzEuYwo+ICtpbmRleCAzOWY2Nzg3Li4w
MDNhZTg3IDEwMDY0NAo+ICstLS0gYS90ZXN0cy9jb25kdmFyMl8xLmMKPiArKysrIGIvdGVzdHMv
Y29uZHZhcjJfMS5jCj4gK0BAIC0xMTQsNyArMTE0LDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jb25k
dmFyMl8xKCkKPiArIHsKPiArICAgaW50IGk7Cj4gKyAgIHB0aHJlYWRfdCB0W05VTVRIUkVBRFMg
KyAxXTsKPiArLSAgaW50IHJlc3VsdCA9IDA7Cj4gKysgIGxvbmcgcmVzdWx0ID0gMDsKPiArICAg
c3RydWN0IF90aW1lYiBjdXJyU3lzVGltZTsKPiArICAgY29uc3QgdW5zaWduZWQgaW50IE5BTk9T
RUNfUEVSX01JTExJU0VDID0gMTAwMDAwMDsKPiArCj4gK2RpZmYgLS1naXQgYS90ZXN0cy9jb25k
dmFyM18xLmMgYi90ZXN0cy9jb25kdmFyM18xLmMKPiAraW5kZXggODcyNWFlYy4uYWVkY2JhOSAx
MDA2NDQKPiArLS0tIGEvdGVzdHMvY29uZHZhcjNfMS5jCj4gKysrKyBiL3Rlc3RzL2NvbmR2YXIz
XzEuYwo+ICtAQCAtMTQ2LDcgKzE0Niw3IEBAIGludCBwdGhyZWFkX3Rlc3RfY29uZHZhcjNfMSgp
Cj4gKyB7Cj4gKyAgIGludCBpOwo+ICsgICBwdGhyZWFkX3QgdFtOVU1USFJFQURTICsgMV07Cj4g
Ky0gIGludCByZXN1bHQgPSAwOwo+ICsrICBsb25nIHJlc3VsdCA9IDA7Cj4gKwo+ICsgICB0aW1l
ZG91dCA9IDA7Cj4gKyAgIHNpZ25hbGVkID0gMDsKPiArZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbmR2
YXIzXzIuYyBiL3Rlc3RzL2NvbmR2YXIzXzIuYwo+ICtpbmRleCA5MWFkZTQwLi4xZmQxODFlIDEw
MDY0NAo+ICstLS0gYS90ZXN0cy9jb25kdmFyM18yLmMKPiArKysrIGIvdGVzdHMvY29uZHZhcjNf
Mi5jCj4gK0BAIC0xNDAsNyArMTQwLDcgQEAgaW50IHB0aHJlYWRfdGVzdF9jb25kdmFyM18yKCkK
PiArIHsKPiArICAgaW50IGk7Cj4gKyAgIHB0aHJlYWRfdCB0W05VTVRIUkVBRFMgKyAxXTsKPiAr
LSAgaW50IHJlc3VsdCA9IDA7Cj4gKysgIGxvbmcgcmVzdWx0ID0gMDsKPiArICAgc3RydWN0IF90
aW1lYiBjdXJyU3lzVGltZTsKPiArICAgY29uc3QgdW5zaWduZWQgaW50IE5BTk9TRUNfUEVSX01J
TExJU0VDID0gMTAwMDAwMDsKPiArCj4gK2RpZmYgLS1naXQgYS90ZXN0cy9kZWxheTIuYyBiL3Rl
c3RzL2RlbGF5Mi5jCj4gK2luZGV4IDVlZWJiNDEuLjY2ZWRlZjcgMTAwNjQ0Cj4gKy0tLSBhL3Rl
c3RzL2RlbGF5Mi5jCj4gKysrKyBiL3Rlc3RzL2RlbGF5Mi5jCj4gK0BAIC02Nyw3ICs2Nyw3IEBA
IGZ1bmModm9pZCAqIGFyZykKPiArIGludCBwdGhyZWFkX3Rlc3RfZGVsYXkyKCkKPiArIHsKPiAr
ICAgcHRocmVhZF90IHQ7Cj4gKy0gIGludCByZXN1bHQgPSAwOwo+ICsrICBsb25nIHJlc3VsdCA9
IDA7Cj4gKwo+ICsgICBteCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7Cj4gKwo+ICtkaWZm
IC0tZ2l0IGEvdGVzdHMvZXhjZXB0aW9uMS5jIGIvdGVzdHMvZXhjZXB0aW9uMS5jCj4gK2luZGV4
IGE3M2NjZDQuLjQwOWZkMjIgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2V4Y2VwdGlvbjEuYwo+ICsr
KysgYi90ZXN0cy9leGNlcHRpb24xLmMKPiArQEAgLTE4Niw3ICsxODYsNyBAQCBwdGhyZWFkX3Rl
c3RfZXhjZXB0aW9uMSgpCj4gKyAgIGZvciAoaSA9IDA7IGkgPCBOVU1USFJFQURTOyBpKyspCj4g
KyAgICAgewo+ICsgICAgICAgaW50IGZhaWwgPSAwOwo+ICstICAgICAgaW50IHJlc3VsdCA9IDA7
Cj4gKysgICAgICBsb25nIHJlc3VsdCA9IDA7Cj4gKwo+ICsgCS8qIENhbmNlbGVkIHRocmVhZCAq
Lwo+ICsgICAgICAgYXNzZXJ0KHB0aHJlYWRfam9pbihjdFtpXSwgKHZvaWQgKiopICZyZXN1bHQp
ID09IDApOwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvaW5oZXJpdDEuYyBiL3Rlc3RzL2luaGVyaXQx
LmMKPiAraW5kZXggZDdjMTAwMC4uMmZiZDI1YSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvaW5oZXJp
dDEuYwo+ICsrKysgYi90ZXN0cy9pbmhlcml0MS5jCj4gK0BAIC0xMDAsNyArMTAwLDcgQEAgaW50
IHB0aHJlYWRfdGVzdF9pbmhlcml0MSgpCj4gKyAgIHB0aHJlYWRfdCB0Owo+ICsgICBwdGhyZWFk
X3QgbWFpblRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwo+ICsgICBwdGhyZWFkX2F0dHJfdCBhdHRy
Owo+ICstICBpbnQgcmVzdWx0ID0gMDsKPiArKyAgbG9uZyByZXN1bHQgPSAwOwo+ICsgICBzdHJ1
Y3Qgc2NoZWRfcGFyYW0gcGFyYW07Cj4gKyAgIHN0cnVjdCBzY2hlZF9wYXJhbSBtYWluUGFyYW07
Cj4gKyAgIGludCBwcmlvOwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvam9pbjAuYyBiL3Rlc3RzL2pv
aW4wLmMKPiAraW5kZXggMGEwNjMzNy4uYjBjMWFjYSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvam9p
bjAuYwo+ICsrKysgYi90ZXN0cy9qb2luMC5jCj4gK0BAIC02MSw3ICs2MSw3IEBAIGZ1bmModm9p
ZCAqIGFyZykKPiArIGludCBwdGhyZWFkX3Rlc3Rfam9pbjAoKQo+ICsgewo+ICsgICBwdGhyZWFk
X3QgaWQ7Cj4gKy0gIGludCByZXN1bHQ7Cj4gKysgIGxvbmcgcmVzdWx0Owo+ICsKPiArICAgLyog
Q3JlYXRlIGEgc2luZ2xlIHRocmVhZCBhbmQgd2FpdCBmb3IgaXQgdG8gZXhpdC4gKi8KPiArICAg
YXNzZXJ0KHB0aHJlYWRfY3JlYXRlKCZpZCwgTlVMTCwgZnVuYywgKHZvaWQgKikgMTIzKSA9PSAw
KTsKPiArZGlmZiAtLWdpdCBhL3Rlc3RzL2pvaW4xLmMgYi90ZXN0cy9qb2luMS5jCj4gK2luZGV4
IDRiNTVkNmIuLjBkZDlhZDQgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2pvaW4xLmMKPiArKysrIGIv
dGVzdHMvam9pbjEuYwo+ICtAQCAtNjEsNyArNjEsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2pvaW4x
KCkKPiArIHsKPiArICAgcHRocmVhZF90IGlkWzRdOwo+ICsgICBpbnQgaTsKPiArLSAgaW50IHJl
c3VsdDsKPiArKyAgbG9uZyByZXN1bHQ7Cj4gKwo+ICsgICAvKiBDcmVhdGUgYSBmZXcgdGhyZWFk
cyBhbmQgdGhlbiBleGl0LiAqLwo+ICsgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQo+ICtkaWZm
IC0tZ2l0IGEvdGVzdHMvam9pbjIuYyBiL3Rlc3RzL2pvaW4yLmMKPiAraW5kZXggYTJlMWRjMy4u
NjNmZjE3NCAxMDA2NDQKPiArLS0tIGEvdGVzdHMvam9pbjIuYwo+ICsrKysgYi90ZXN0cy9qb2lu
Mi5jCj4gK0BAIC01NSw3ICs1NSw3IEBAIGludCBwdGhyZWFkX3Rlc3Rfam9pbjIoKQo+ICsgewo+
ICsgICBwdGhyZWFkX3QgaWRbNF07Cj4gKyAgIGludCBpOwo+ICstICBpbnQgcmVzdWx0Owo+ICsr
ICBsb25nIHJlc3VsdDsKPiArCj4gKyAgIC8qIENyZWF0ZSBhIGZldyB0aHJlYWRzIGFuZCB0aGVu
IGV4aXQuICovCj4gKyAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCj4gK2RpZmYgLS1naXQgYS90
ZXN0cy9qb2luMy5jIGIvdGVzdHMvam9pbjMuYwo+ICtpbmRleCA3ZjBkMjI2Li45NDdhYWZmIDEw
MDY0NAo+ICstLS0gYS90ZXN0cy9qb2luMy5jCj4gKysrKyBiL3Rlc3RzL2pvaW4zLmMKPiArQEAg
LTU1LDcgKzU1LDcgQEAgaW50IHB0aHJlYWRfdGVzdF9qb2luMygpCj4gKyB7Cj4gKyAgIHB0aHJl
YWRfdCBpZFs0XTsKPiArICAgaW50IGk7Cj4gKy0gIGludCByZXN1bHQ7Cj4gKysgIGxvbmcgcmVz
dWx0Owo+ICsKPiArICAgLyogQ3JlYXRlIGEgZmV3IHRocmVhZHMgYW5kIHRoZW4gZXhpdC4gKi8K
PiArICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPiArZGlmZiAtLWdpdCBhL3Rlc3RzL211dGV4
NmUuYyBiL3Rlc3RzL211dGV4NmUuYwo+ICtpbmRleCA1YTc0YTVlLi40YmJiZmQ0IDEwMDY0NAo+
ICstLS0gYS90ZXN0cy9tdXRleDZlLmMKPiArKysrIGIvdGVzdHMvbXV0ZXg2ZS5jCj4gK0BAIC04
Myw3ICs4Myw3IEBAIGludAo+ICsgcHRocmVhZF90ZXN0X211dGV4NmUoKQo+ICsgewo+ICsgICBw
dGhyZWFkX3QgdDsKPiArLSAgaW50IHJlc3VsdCA9IDA7Cj4gKysgIGxvbmcgcmVzdWx0ID0gMDsK
PiArICAgaW50IG14VHlwZSA9IC0xOwo+ICsKPiArICAgbG9ja0NvdW50ID0gMDsKPiArZGlmZiAt
LWdpdCBhL3Rlc3RzL211dGV4NmVzLmMgYi90ZXN0cy9tdXRleDZlcy5jCj4gK2luZGV4IGE0Zjk4
YWYuLjRhMzgxZTYgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL211dGV4NmVzLmMKPiArKysrIGIvdGVz
dHMvbXV0ZXg2ZXMuYwo+ICtAQCAtODIsNyArODIsNyBAQCBpbnQKPiArIHB0aHJlYWRfdGVzdF9t
dXRleDZlcygpCj4gKyB7Cj4gKyAgIHB0aHJlYWRfdCB0Owo+ICstICBpbnQgcmVzdWx0ID0gMDsK
PiArKyAgbG9uZyByZXN1bHQgPSAwOwo+ICsKPiArICAgbG9ja0NvdW50ID0gMDsKPiArCj4gK2Rp
ZmYgLS1naXQgYS90ZXN0cy9tdXRleDZyLmMgYi90ZXN0cy9tdXRleDZyLmMKPiAraW5kZXggOTcz
MzQ3MS4uMmM3MzE2ZSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvbXV0ZXg2ci5jCj4gKysrKyBiL3Rl
c3RzL211dGV4NnIuYwo+ICtAQCAtODIsNyArODIsNyBAQCBpbnQKPiArIHB0aHJlYWRfdGVzdF9t
dXRleDZyKCkKPiArIHsKPiArICAgcHRocmVhZF90IHQ7Cj4gKy0gIGludCByZXN1bHQgPSAwOwo+
ICsrICBsb25nIHJlc3VsdCA9IDA7Cj4gKyAgIGludCBteFR5cGUgPSAtMTsKPiArCj4gKyAgIGxv
Y2tDb3VudCA9IDA7Cj4gK2RpZmYgLS1naXQgYS90ZXN0cy9tdXRleDZycy5jIGIvdGVzdHMvbXV0
ZXg2cnMuYwo+ICtpbmRleCAzYjU2MzllLi5hZDdmOWE1IDEwMDY0NAo+ICstLS0gYS90ZXN0cy9t
dXRleDZycy5jCj4gKysrKyBiL3Rlc3RzL211dGV4NnJzLmMKPiArQEAgLTgxLDcgKzgxLDcgQEAg
aW50Cj4gKyBwdGhyZWFkX3Rlc3RfbXV0ZXg2cnMoKQo+ICsgewo+ICsgICBwdGhyZWFkX3QgdDsK
PiArLSAgaW50IHJlc3VsdCA9IDA7Cj4gKysgIGxvbmcgcmVzdWx0ID0gMDsKPiArCj4gKyAgIGxv
Y2tDb3VudCA9IDA7Cj4gKyAgIG11dGV4ID0gUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElB
TElaRVI7Cj4gK2RpZmYgLS1naXQgYS90ZXN0cy9tdXRleDdlLmMgYi90ZXN0cy9tdXRleDdlLmMK
PiAraW5kZXggNTcyODQxZS4uMWIzNjIzNSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvbXV0ZXg3ZS5j
Cj4gKysrKyBiL3Rlc3RzL211dGV4N2UuYwo+ICtAQCAtODMsNyArODMsNyBAQCBpbnQKPiArIHB0
aHJlYWRfdGVzdF9tdXRleDdlKCkKPiArIHsKPiArICAgcHRocmVhZF90IHQ7Cj4gKy0gIGludCBy
ZXN1bHQgPSAwOwo+ICsrICBsb25nIHJlc3VsdCA9IDA7Cj4gKyAgIGludCBteFR5cGUgPSAtMTsK
PiArCj4gKyAgIGxvY2tDb3VudCA9IDA7Cj4gK2RpZmYgLS1naXQgYS90ZXN0cy9tdXRleDdyLmMg
Yi90ZXN0cy9tdXRleDdyLmMKPiAraW5kZXggYWIyYTA3MC4uMDllOTcwMSAxMDA2NDQKPiArLS0t
IGEvdGVzdHMvbXV0ZXg3ci5jCj4gKysrKyBiL3Rlc3RzL211dGV4N3IuYwo+ICtAQCAtODIsNyAr
ODIsNyBAQCBpbnQKPiArIHB0aHJlYWRfdGVzdF9tdXRleDdyKCkKPiArIHsKPiArICAgcHRocmVh
ZF90IHQ7Cj4gKy0gIGludCByZXN1bHQgPSAwOwo+ICsrICBsb25nIHJlc3VsdCA9IDA7Cj4gKyAg
IGludCBteFR5cGUgPSAtMTsKPiArCj4gKyAgIGxvY2tDb3VudCA9IDA7Cj4gK2RpZmYgLS1naXQg
YS90ZXN0cy9yd2xvY2s2LmMgYi90ZXN0cy9yd2xvY2s2LmMKPiAraW5kZXggMmFiMTU5NS4uNTcy
YzkxYSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvcndsb2NrNi5jCj4gKysrKyBiL3Rlc3RzL3J3bG9j
azYuYwo+ICtAQCAtODIsOSArODIsOSBAQCBpbnQgcHRocmVhZF90ZXN0X3J3bG9jazYoKQo+ICsg
ICBwdGhyZWFkX3Qgd3J0MTsKPiArICAgcHRocmVhZF90IHdydDI7Cj4gKyAgIHB0aHJlYWRfdCBy
ZHQ7Cj4gKy0gIGludCB3cjFSZXN1bHQgPSAwOwo+ICstICBpbnQgd3IyUmVzdWx0ID0gMDsKPiAr
LSAgaW50IHJkUmVzdWx0ID0gMDsKPiArKyAgbG9uZyB3cjFSZXN1bHQgPSAwOwo+ICsrICBsb25n
IHdyMlJlc3VsdCA9IDA7Cj4gKysgIGxvbmcgcmRSZXN1bHQgPSAwOwo+ICsKPiArICAgcndsb2Nr
MSA9IFBUSFJFQURfUldMT0NLX0lOSVRJQUxJWkVSOwo+ICsKPiArZGlmZiAtLWdpdCBhL3Rlc3Rz
L3J3bG9jazZfdC5jIGIvdGVzdHMvcndsb2NrNl90LmMKPiAraW5kZXggY2Y5MjgyOC4uNmIzNGRk
ZSAxMDA2NDQKPiArLS0tIGEvdGVzdHMvcndsb2NrNl90LmMKPiArKysrIGIvdGVzdHMvcndsb2Nr
Nl90LmMKPiArQEAgLTEwMiwxMCArMTAyLDEwIEBAIGludCBwdGhyZWFkX3Rlc3Rfcndsb2NrNnQo
KQo+ICsgICBwdGhyZWFkX3Qgd3J0MjsKPiArICAgcHRocmVhZF90IHJkdDE7Cj4gKyAgIHB0aHJl
YWRfdCByZHQyOwo+ICstICBpbnQgd3IxUmVzdWx0ID0gMDsKPiArLSAgaW50IHdyMlJlc3VsdCA9
IDA7Cj4gKy0gIGludCByZDFSZXN1bHQgPSAwOwo+ICstICBpbnQgcmQyUmVzdWx0ID0gMDsKPiAr
KyAgbG9uZyB3cjFSZXN1bHQgPSAwOwo+ICsrICBsb25nIHdyMlJlc3VsdCA9IDA7Cj4gKysgIGxv
bmcgcmQxUmVzdWx0ID0gMDsKPiArKyAgbG9uZyByZDJSZXN1bHQgPSAwOwo+ICsKPiArICAgcnds
b2NrMSA9IFBUSFJFQURfUldMT0NLX0lOSVRJQUxJWkVSOwo+ICsKPiArZGlmZiAtLWdpdCBhL3Rl
c3RzL3J3bG9jazZfdDIuYyBiL3Rlc3RzL3J3bG9jazZfdDIuYwo+ICtpbmRleCA5MTZjNGM1Li40
ZjI0ZDdkIDEwMDY0NAo+ICstLS0gYS90ZXN0cy9yd2xvY2s2X3QyLmMKPiArKysrIGIvdGVzdHMv
cndsb2NrNl90Mi5jCj4gK0BAIC05NCw5ICs5NCw5IEBAIGludCBwdGhyZWFkX3Rlc3Rfcndsb2Nr
NnQyKCkKPiArICAgcHRocmVhZF90IHdydDE7Cj4gKyAgIHB0aHJlYWRfdCB3cnQyOwo+ICsgICBw
dGhyZWFkX3QgcmR0Owo+ICstICBpbnQgd3IxUmVzdWx0ID0gMDsKPiArLSAgaW50IHdyMlJlc3Vs
dCA9IDA7Cj4gKy0gIGludCByZFJlc3VsdCA9IDA7Cj4gKysgIGxvbmcgd3IxUmVzdWx0ID0gMDsK
PiArKyAgbG9uZyB3cjJSZXN1bHQgPSAwOwo+ICsrICBsb25nIHJkUmVzdWx0ID0gMDsKPiArICAg
c3RydWN0IF90aW1lYiBjdXJyU3lzVGltZTsKPiArICAgY29uc3QgbG9uZyBsb25nIE5BTk9TRUNf
UEVSX01JTExJU0VDID0gMTAwMDAwMDsKPiArCj4gK2RpZmYgLS1naXQgYS90ZXN0cy9zZW1hcGhv
cmUxLmMgYi90ZXN0cy9zZW1hcGhvcmUxLmMKPiAraW5kZXggM2RkODVlZS4uNWJhYThhNCAxMDA2
NDQKPiArLS0tIGEvdGVzdHMvc2VtYXBob3JlMS5jCj4gKysrKyBiL3Rlc3RzL3NlbWFwaG9yZTEu
Ywo+ICtAQCAtMTExLDcgKzExMSw3IEBAIGludCBwdGhyZWFkX3Rlc3Rfc2VtYXBob3JlMSh2b2lk
KQo+ICsgewo+ICsgICBwdGhyZWFkX3QgdDsKPiArICAgc2VtX3QgczsKPiArLSAgaW50IHJlc3Vs
dDsKPiArKyAgbG9uZyByZXN1bHQ7Cj4gKwo+ICsgICBhc3NlcnQocHRocmVhZF9jcmVhdGUoJnQs
IE5VTEwsIHRociwgTlVMTCkgPT0gMCk7Cj4gKyAgIGFzc2VydChwdGhyZWFkX2pvaW4odCwgKHZv
aWQgKiopJnJlc3VsdCkgPT0gMCk7Cj4gK2RpZmYgLS1naXQgYS90ZXN0cy9zZW1hcGhvcmU0LmMg
Yi90ZXN0cy9zZW1hcGhvcmU0LmMKPiAraW5kZXggNzUzMDQyNC4uZTFiYzhmOCAxMDA2NDQKPiAr
LS0tIGEvdGVzdHMvc2VtYXBob3JlNC5jCj4gKysrKyBiL3Rlc3RzL3NlbWFwaG9yZTQuYwo+ICtA
QCAtMTM0LDcgKzEzNCw3IEBAIGludCBwdGhyZWFkX3Rlc3Rfc2VtYXBob3JlNCh2b2lkKQo+ICsK
PiArICAgYXNzZXJ0KHB0aHJlYWRfY2FuY2VsKHRbNV0pID09IDApOwo+ICsgICB7Cj4gKy0gICAg
aW50IHJlc3VsdDsKPiArKyAgICBsb25nIHJlc3VsdDsKPiArICAgICBhc3NlcnQocHRocmVhZF9q
b2luKHRbNV0sICh2b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKPiArICAgfQo+ICsgICBhc3NlcnQo
c2VtX2dldHZhbHVlKCZzLCAmdmFsdWUpID09IDApOwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvdHNk
MS5jIGIvdGVzdHMvdHNkMS5jCj4gK2luZGV4IDRjNTMwOGIuLjkyOWM5MjkgMTAwNjQ0Cj4gKy0t
LSBhL3Rlc3RzL3RzZDEuYwo+ICsrKysgYi90ZXN0cy90c2QxLmMKPiArQEAgLTE5Nyw3ICsxOTcs
NyBAQCBpbnQgcHRocmVhZF90ZXN0X3RzZDEoKQo+ICsgICAgKi8KPiArICAgZm9yIChpID0gMTsg
aSA8IE5VTV9USFJFQURTOyBpKyspCj4gKyAgICAgewo+ICstICAgICAgaW50IHJlc3VsdCA9IDA7
Cj4gKysgICAgICBsb25nIHJlc3VsdCA9IDA7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KHB0aHJlYWRf
am9pbih0aHJlYWRbaV0sICh2b2lkICoqKSAmcmVzdWx0KSA9PSAwKTsKPiArICAgICB9Cj4gK2Rp
ZmYgLS1naXQgYS90ZXN0cy90c2QyLmMgYi90ZXN0cy90c2QyLmMKPiAraW5kZXggYTk1NThhYi4u
ZDM2ZGY5ZiAxMDA2NDQKPiArLS0tIGEvdGVzdHMvdHNkMi5jCj4gKysrKyBiL3Rlc3RzL3RzZDIu
Ywo+ICtAQCAtMTk1LDcgKzE5NSw3IEBAIGludCBwdGhyZWFkX3Rlc3RfdHNkMigpCj4gKyAgICAq
Lwo+ICsgICBmb3IgKGkgPSAxOyBpIDwgTlVNX1RIUkVBRFM7IGkrKykKPiArICAgICB7Cj4gKy0g
ICAgICBpbnQgcmVzdWx0ID0gMDsKPiArKyAgICAgIGxvbmcgcmVzdWx0ID0gMDsKPiArCj4gKyAg
ICAgICBhc3NlcnQocHRocmVhZF9qb2luKHRocmVhZFtpXSwgKHZvaWQgKiopICZyZXN1bHQpID09
IDApOwo+ICsgICAgIH0KPiArLS0KPiArMi4xMS4wCj4gKwo+IGRpZmYgLS1naXQgYS9wYXRjaGVz
LzAwMDItdGVzdHMtYnVnZml4LVBhc3MtcmlnaHQtYXJndW1lbnRzLW9uLXRlc3RzLWV4aXQ0LWFu
ZC5wYXRjaCBiL3BhdGNoZXMvMDAwMi10ZXN0cy1idWdmaXgtUGFzcy1yaWdodC1hcmd1bWVudHMt
b24tdGVzdHMtZXhpdDQtYW5kLnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwLi45MTRkODM1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvMDAwMi10ZXN0
cy1idWdmaXgtUGFzcy1yaWdodC1hcmd1bWVudHMtb24tdGVzdHMtZXhpdDQtYW5kLnBhdGNoCj4g
QEAgLTAsMCArMSw1NCBAQAo+ICtGcm9tIDFiY2FkZjNkM2RlNWIyZWYxNDE3MjE2ZTNlZTU2Yjdl
YzEyZWRkZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gK0Zyb206IENvc3RpbiBMdXB1IDxj
b3N0aW4ubHVwQGdtYWlsLmNvbT4KPiArRGF0ZTogU2F0LCA5IE1hciAyMDE5IDE5OjI3OjE2ICsw
MjAwCj4gK1N1YmplY3Q6IFtQQVRDSCAyLzVdIHRlc3RzIGJ1Z2ZpeCBQYXNzIHJpZ2h0IGFyZ3Vt
ZW50cyBvbiB0ZXN0cyBleGl0NCBhbmQKPiArIGV4aXQ1Cj4gKwo+ICsKPiArZGlmZiAtLWdpdCBh
L3Rlc3RzL2V4aXQ0LmMgYi90ZXN0cy9leGl0NC5jCj4gK2luZGV4IDZkM2U5YWQuLjI2NDUyNDYg
MTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL2V4aXQ0LmMKPiArKysrIGIvdGVzdHMvZXhpdDQuYwo+ICtA
QCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBiYWdfdCB0aHJlYWRiYWdbTlVNVEhSRUFEUyArIDFd
Owo+ICsgc3RhdGljIGludCBvc1RocmVhZCh2b2lkICogYXJnKQo+ICsgewo+ICsgICBpbnQgcmVz
dWx0ID0gMTsKPiArLSAgYmFnX3QgKiBiYWcgPSAqKChiYWdfdCAqKikgYXJnKTsKPiArKyAgYmFn
X3QgKiBiYWcgPSBhcmc7Cj4gKwo+ICsgICBhc3NlcnQoYmFnID09ICZ0aHJlYWRiYWdbYmFnLT50
aHJlYWRudW1dKTsKPiArICAgYXNzZXJ0KGJhZy0+c3RhcnRlZCA9PSAwKTsKPiArQEAgLTE0Miw3
ICsxNDIsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2V4aXQ0KCkKPiArICAgICAgIHB0ciA9ICYodGhy
ZWFkYmFnW2ldKTsKPiArCj4gKyAgICAgICBwdGVfb3NUaHJlYWRDcmVhdGUob3NUaHJlYWQsIDQw
OTYsIDEwLAo+ICstICAgICAgICAgICAgICAgICAgICAgICAgICZwdHIsCj4gKysgICAgICAgICAg
ICAgICAgICAgICAgICAgcHRyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZoW2ldKTsK
PiArCj4gKyAgICAgICBwdGVfb3NUaHJlYWRTdGFydChoW2ldKTsKPiArZGlmZiAtLWdpdCBhL3Rl
c3RzL2V4aXQ1LmMgYi90ZXN0cy9leGl0NS5jCj4gK2luZGV4IDVlMDljMGYuLmJjYWQ2ZTkgMTAw
NjQ0Cj4gKy0tLSBhL3Rlc3RzL2V4aXQ1LmMKPiArKysrIGIvdGVzdHMvZXhpdDUuYwo+ICtAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBiYWdfdCB0aHJlYWRiYWdbTlVNVEhSRUFEUyArIDFdOwo+
ICsgc3RhdGljIGludCBvc1RocmVhZCh2b2lkICogYXJnKQo+ICsgewo+ICsgICBpbnQgcmVzdWx0
ID0gMTsKPiArLSAgYmFnX3QgKiBiYWcgPSAqKChiYWdfdCAqKikgYXJnKTsKPiArKyAgYmFnX3Qg
KiBiYWcgPSBhcmc7Cj4gKwo+ICsgICBhc3NlcnQoYmFnID09ICZ0aHJlYWRiYWdbYmFnLT50aHJl
YWRudW1dKTsKPiArICAgYXNzZXJ0KGJhZy0+c3RhcnRlZCA9PSAwKTsKPiArQEAgLTEzOCw3ICsx
MzgsNyBAQCBpbnQgcHRocmVhZF90ZXN0X2V4aXQ1KCkKPiArICAgICAgIHB0ciA9ICYodGhyZWFk
YmFnW2ldKTsKPiArCj4gKyAgICAgICBwdGVfb3NUaHJlYWRDcmVhdGUob3NUaHJlYWQsIDQwOTYs
IDEwLAo+ICstICAgICAgICAgICAgICAgICAgICAgICAgICZwdHIsCj4gKysgICAgICAgICAgICAg
ICAgICAgICAgICAgcHRyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZoW2ldKTsKPiAr
Cj4gKyAgICAgICBwdGVfb3NUaHJlYWRTdGFydChoW2ldKTsKPiArLS0KPiArMi4xMS4wCj4gKwo+
IGRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDMtdGVzdHMtYnVnZml4LUZpeC1tYWNyby1kZWZpbml0
aW9ucy1mb3ItdGVzdHMtb25jZTMtYS5wYXRjaCBiL3BhdGNoZXMvMDAwMy10ZXN0cy1idWdmaXgt
Rml4LW1hY3JvLWRlZmluaXRpb25zLWZvci10ZXN0cy1vbmNlMy1hLnBhdGNoCj4gbmV3IGZpbGUg
bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5jNDY2ZTNhCj4gLS0tIC9kZXYvbnVsbAo+ICsr
KyBiL3BhdGNoZXMvMDAwMy10ZXN0cy1idWdmaXgtRml4LW1hY3JvLWRlZmluaXRpb25zLWZvci10
ZXN0cy1vbmNlMy1hLnBhdGNoCj4gQEAgLTAsMCArMSwzNiBAQAo+ICtGcm9tIDI3NTc1ZjI1NTli
NmEwMTUwMWM0MDcwNTAyNmVjYTgzYWE1MTFmMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4g
K0Zyb206IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4KPiArRGF0ZTogU2F0LCA5
IE1hciAyMDE5IDE5OjMwOjE3ICswMjAwCj4gK1N1YmplY3Q6IFtQQVRDSCAzLzVdIHRlc3RzIGJ1
Z2ZpeCBGaXggbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRlc3RzIG9uY2UzIGFuZAo+ICsgb25jZTQK
PiArCj4gKwo+ICtkaWZmIC0tZ2l0IGEvdGVzdHMvb25jZTMuYyBiL3Rlc3RzL29uY2UzLmMKPiAr
aW5kZXggNTA1Mzc0Yy4uYWMyOGU2ZCAxMDA2NDQKPiArLS0tIGEvdGVzdHMvb25jZTMuYwo+ICsr
KysgYi90ZXN0cy9vbmNlMy5jCj4gK0BAIC01NSw3ICs1NSw3IEBACj4gKwo+ICsgI2luY2x1ZGUg
InRlc3QuaCIKPiArCj4gKy0jZGVmaW5lIE5VTV9USFJFQURTIE9TX01BWF9TSU1VTF9USFJFQURT
IC8gNSAvKiBUYXJnZXRpbmcgZWFjaCBvbmNlIGNvbnRyb2wgKi8KPiArKyNkZWZpbmUgTlVNX1RI
UkVBRFMgKE9TX01BWF9TSU1VTF9USFJFQURTIC8gNSkgLyogVGFyZ2V0aW5nIGVhY2ggb25jZSBj
b250cm9sICovCj4gKyAjZGVmaW5lIE5VTV9PTkNFICAgIDUKPiArCj4gKwo+ICtkaWZmIC0tZ2l0
IGEvdGVzdHMvb25jZTQuYyBiL3Rlc3RzL29uY2U0LmMKPiAraW5kZXggMDI3YmRhYS4uZGE0YTQ0
YyAxMDA2NDQKPiArLS0tIGEvdGVzdHMvb25jZTQuYwo+ICsrKysgYi90ZXN0cy9vbmNlNC5jCj4g
K0BAIC01Myw3ICs1Myw3IEBACj4gKwo+ICsgI2luY2x1ZGUgInRlc3QuaCIKPiArCj4gKy0jZGVm
aW5lIE5VTV9USFJFQURTIE9TX01BWF9TSU1VTF9USFJFQURTIC8gNSAvKiBUYXJnZXRpbmcgZWFj
aCBvbmNlIGNvbnRyb2wgKi8KPiArKyNkZWZpbmUgTlVNX1RIUkVBRFMgKE9TX01BWF9TSU1VTF9U
SFJFQURTIC8gNSkgLyogVGFyZ2V0aW5nIGVhY2ggb25jZSBjb250cm9sICovCj4gKyAjZGVmaW5l
IE5VTV9PTkNFICAgIDUKPiArCj4gKyBzdGF0aWMgcHRocmVhZF9vbmNlX3QgbyA9IFBUSFJFQURf
T05DRV9JTklUOwo+ICstLQo+ICsyLjExLjAKPiArCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAw
NC10ZXN0cy1EaXNhYmxlLXByaW9yaXR5LXRlc3RzLXVudGlsLXdlLWFkZC1wcmVlbXB0aXZlLnBh
dGNoIGIvcGF0Y2hlcy8wMDA0LXRlc3RzLURpc2FibGUtcHJpb3JpdHktdGVzdHMtdW50aWwtd2Ut
YWRkLXByZWVtcHRpdmUucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw
MDAuLmYwNzczZDUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGF0Y2hlcy8wMDA0LXRlc3RzLURp
c2FibGUtcHJpb3JpdHktdGVzdHMtdW50aWwtd2UtYWRkLXByZWVtcHRpdmUucGF0Y2gKPiBAQCAt
MCwwICsxLDI4IEBACj4gK0Zyb20gMzZkZWMwZDNiNWU1ZWYyNzliZGIzMGVlNTFiM2U5OGNiMjFm
NTUxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiArRnJvbTogQ29zdGluIEx1cHUgPGNvc3Rp
bi5sdXBAZ21haWwuY29tPgo+ICtEYXRlOiBTYXQsIDkgTWFyIDIwMTkgMTk6MzI6NTggKzAyMDAK
PiArU3ViamVjdDogW1BBVENIIDQvNV0gdGVzdHMgRGlzYWJsZSBwcmlvcml0eSB0ZXN0cyB1bnRp
bCB3ZSBhZGQgcHJlZW1wdGl2ZQo+ICsgc2NoZWR1bGluZwo+ICsKPiArCj4gK2RpZmYgLS1naXQg
YS90ZXN0cy90ZXN0X21haW4uYyBiL3Rlc3RzL3Rlc3RfbWFpbi5jCj4gK2luZGV4IGQ0YmVhNDgu
LmJkNjQ5OGUgMTAwNjQ0Cj4gKy0tLSBhL3Rlc3RzL3Rlc3RfbWFpbi5jCj4gKysrKyBiL3Rlc3Rz
L3Rlc3RfbWFpbi5jCj4gK0BAIC0xMDksMTEgKzEwOSwxMyBAQCBzdGF0aWMgdm9pZCBydW5UaHJl
YWRUZXN0cyh2b2lkKQo+ICsgICAgIHB0aHJlYWRfdGVzdF9yZXVzZTIoKTsKPiArICAgKi8KPiAr
Cj4gKysjaWYgMAo+ICsgICBwcmludGYoIlByaW9yaXR5IHRlc3QgIzFcbiIpOwo+ICsgICBwdGhy
ZWFkX3Rlc3RfcHJpb3JpdHkxKCk7Cj4gKwo+ICsgICBwcmludGYoIlByaW9yaXR5IHRlc3QgIzJc
biIpOwo+ICsgICBwdGhyZWFkX3Rlc3RfcHJpb3JpdHkyKCk7Cj4gKysjZW5kaWYKPiArCj4gKyAv
LyAgcHJpbnRmKCJJbmhlcml0IHRlc3QgIzFcbiIpOwo+ICsgLy8gIHB0aHJlYWRfdGVzdF9pbmhl
cml0MSgpOyAgLy8vQHRvZG8KPiArLS0KPiArMi4xMS4wCj4gKwo+IGRpZmYgLS1naXQgYS9wYXRj
aGVzLzAwMDUtVXNlLVVuaWtyYWZ0LXlpZWxkLWZ1bmN0aW9uLnBhdGNoIGIvcGF0Y2hlcy8wMDA1
LVVzZS1VbmlrcmFmdC15aWVsZC1mdW5jdGlvbi5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMC4uMGVjOTNiNgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wYXRjaGVz
LzAwMDUtVXNlLVVuaWtyYWZ0LXlpZWxkLWZ1bmN0aW9uLnBhdGNoCj4gQEAgLTAsMCArMSwyMiBA
QAo+ICtGcm9tIDUyY2NmMzIyMmRhOTQ2ZDJlYTExYTRmM2VjYmE4ZTMxZTcxNjU1NjIgTW9uIFNl
cCAxNyAwMDowMDowMCAyMDAxCj4gK0Zyb206IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwQGdtYWls
LmNvbT4KPiArRGF0ZTogU2F0LCA5IE1hciAyMDE5IDE5OjM3OjA0ICswMjAwCj4gK1N1YmplY3Q6
IFtQQVRDSCA1LzVdIFVzZSBVbmlrcmFmdCB5aWVsZCBmdW5jdGlvbgo+ICsKPiArCj4gK2RpZmYg
LS1naXQgYS9wdGVfZ2VuZXJpY19vc2FsLmggYi9wdGVfZ2VuZXJpY19vc2FsLmgKPiAraW5kZXgg
NGRiMWY1Mi4uZGUxZWE1ZiAxMDA2NDQKPiArLS0tIGEvcHRlX2dlbmVyaWNfb3NhbC5oCj4gKysr
KyBiL3B0ZV9nZW5lcmljX29zYWwuaAo+ICtAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBwdGVfb3NZaWVsZCh2b2lkKQo+ICsgICovCj4gKyBzdGF0aWMgaW5saW5lIHZvaWQg
cHRlX29zWWllbGQodm9pZCkKPiArIHsKPiArLQlwdGVfb3NUaHJlYWRTbGVlcCgxKTsKPiArKwl1
a19zY2hlZF95aWVsZCgpOwo+ICsgfQo+ICsgI2VuZGlmCj4gKwo+ICstLQo+ICsyLjExLjAKPiAr
Cj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAwNi1TZXBhcmF0ZS1oZWFkZXItaW5jbHVzaW9ucy1m
b3ItZnVuY3Rpb25zLWZyb20taGVhZGVyLnBhdGNoIGIvcGF0Y2hlcy8wMDA2LVNlcGFyYXRlLWhl
YWRlci1pbmNsdXNpb25zLWZvci1mdW5jdGlvbnMtZnJvbS1oZWFkZXIucGF0Y2gKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjM2ZDY2YjAKPiAtLS0gL2Rldi9udWxsCj4g
KysrIGIvcGF0Y2hlcy8wMDA2LVNlcGFyYXRlLWhlYWRlci1pbmNsdXNpb25zLWZvci1mdW5jdGlv
bnMtZnJvbS1oZWFkZXIucGF0Y2gKPiBAQCAtMCwwICsxLDQwIEBACj4gK0Zyb20gOGNhOTU3ZGRj
MjI4NTQ2OWZkYjQxMzdhOWIzN2ZmZDBjYmMwNjRlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK
PiArRnJvbTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXBAZ21haWwuY29tPgo+ICtEYXRlOiBNb24s
IDExIE1hciAyMDE5IDEwOjAxOjE1ICswMjAwCj4gK1N1YmplY3Q6IFtQQVRDSF0gU2VwYXJhdGUg
aGVhZGVyIGluY2x1c2lvbnMgZm9yIGZ1bmN0aW9ucyBmcm9tIGhlYWRlcgo+ICsgaW5jbHVzaW9u
IGZvciB0eXBlcwo+ICsKPiArSW5jbHVkaW5nIHRpbWUuaCBiZWZvcmUgZGVmaW5pbmcgcHRocmVh
ZF90IHR5cGUgZ2VuZXJhdGVzICJ1bmtub3duIHR5cGUgbmFtZQo+ICvigJhwdGhyZWFkX3TigJki
IGNvbXBpbGluZyBlcnJvcnMgd2l0aCBOZXdsaWIgYmVjYXVzZSBvZiBzb21lIGNpcmN1bGFyIGlu
Y2x1c2lvbnMuCj4gK1RodXMgd2UgYWRvcHQgYSBtb3JlIGdlbmVyaWMgYXBwcm9hY2gsIHNlcGFy
YXRpbmcgdGhlIGluY2x1c2lvbnMgbmVlZGVkIGZvcgo+ICtkZWZpbmluZyB0eXBlcyBmcm9tIHRo
ZSBpbmNsdXNpb25zIG5lZWRlZCBmb3IgZGVjbGFyaW5nIGZ1bmN0aW9ucywgbW92aW5nIHRoZQo+
ICtsYXR0ZXIganVzdCBiZWZvcmUgZGVjbGFyaW5nIHRoZSBmdW5jdGlvbiBwcm90b3R5cGVzLgo+
ICsKPiArZGlmZiAtLWdpdCBhL3B0aHJlYWQuaCBiL3B0aHJlYWQuaAo+ICtpbmRleCA1YjY5MDUz
Li4zM2RmNDQ2IDEwMDY0NAo+ICstLS0gYS9wdGhyZWFkLmgKPiArKysrIGIvcHRocmVhZC5oCj4g
K0BAIC0xNzQsOSArMTc0LDYgQEAKPiArICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICAqLwo+ICsKPiArLSNpbmNsdWRl
IDx0aW1lLmg+Cj4gKy0KPiArLSNpbmNsdWRlIDxzZXRqbXAuaD4KPiArICNpbmNsdWRlIDxsaW1p
dHMuaD4KPiArCj4gKyAvKgo+ICtAQCAtNjUzLDYgKzY1MCwxMCBAQCBlbnVtCj4gKwo+ICsgI2Vu
ZGlmIC8qIFBURV9DTEVBTlVQX0MgKi8KPiArCj4gKysjaW5jbHVkZSA8dGltZS5oPgo+ICsrCj4g
KysjaW5jbHVkZSA8c2V0am1wLmg+Cj4gKysKPiArICAgICAvKgo+ICsgICAgICAqID09PT09PT09
PT09PT09PQo+ICsgICAgICAqID09PT09PT09PT09PT09PQo+ICstLQo+ICsyLjExLjAKPiArCj4g
CgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArjg5Xjg63jg7zjg6rjgqLjg7Pjg7vjgrfjg6Xjg5/j
g4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApTeXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdy
b3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlCkt1cmbDvHJzdGVuLUFubGFnZSAzNiwgRC02OTEx
NSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAoMCk2MjIxIDQzNDItMjY1CkZheDogICAgICs0OSAo
MCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXUKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJl
Z2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFubmhlaW0sIEdlcm1hbnksIEhSQjcyODU1OAoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:37:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:37: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 1hY7lN-0003hY-55; Tue, 04 Jun 2019 11:37:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY7lL-0003hT-Eh
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:37:55 +0000
X-Inumbo-ID: 2eff6e82-86bd-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2eff6e82-86bd-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:37:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 56150F206D;
 Tue,  4 Jun 2019 13:37:50 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dAdsWr_jURVT; Tue,  4 Jun 2019 13:37:50 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 184B7F206A;
 Tue,  4 Jun 2019 13:37:46 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:37:45
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
 <20190603151640.22507-5-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <1216262f-13f6-8673-a70a-a0919efb4501@neclab.eu>
Date: Tue, 4 Jun 2019 13:37:45 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603151640.22507-5-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 4/8] Initial
 port of pthread-embedded to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLAoKdGhpcyBwYXRjaCBsb29rcyBnb29kIG5vdywgZXNwZWNpYWxseSB3aXRoIHRo
ZSBjb25zdHJ1Y3RvciBhZGRlZC4KClJldmlld2VkLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3Jp
YW4uc2NobWlkdEBuZWNsYWIuZXU+CgpPbiA2LzMvMTkgNToxNiBQTSwgQ29zdGluIEx1cHUgd3Jv
dGU6Cj4gVGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIHB0aHJlYWQtZW1iZWRkZWQgdG8gVW5p
a3JhZnQgYXMgZXh0ZXJuYWwKPiBsaWJyYXJ5LiBGb3Igbm93IHlvdSBuZWVkIG5ld2xpYiB0byBt
YWtlIGl0IHdvcmsuIFdoZW4gYWRkaW5nIHRoZQo+IGxpYnJhcnkgaW4gdGhlIGRlcGVuZGVuY3kg
bGlzdCwgcHRocmVhZC1lbWJlZGRlZCBzaG91bGQgc3RheSBiZWZvcmUKPiBuZXdsaWIgKGUuZy4g
Li4uOiQoVUtfTElCUykvcHRocmVhZC1lbWJlZGRlZDokKFVLX0xJQlMpL25ld2xpYi5naXQ6Li4u
KS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJv
Pgo+IC0tLQo+ICAgQ29uZmlnLnVrICAgICAgICAgICAgICAgICAgIHwgIDMwICsrKwo+ICAgTWFr
ZWZpbGUudWsgICAgICAgICAgICAgICAgIHwgMzI3ICsrKysrKysrKysrKysrKysrKysrKysrKysr
Cj4gICBSRUFETUUubWQgICAgICAgICAgICAgICAgICAgfCAgMTAgKwo+ICAgZXhwb3J0c3ltcy51
ayAgICAgICAgICAgICAgIHwgIDkwICsrKysrKysrCj4gICBpbmNsdWRlL3B0ZV9vc2FsLmggICAg
ICAgICAgfCAgMTYgKysKPiAgIGluY2x1ZGUvcHRlX3R5cGVzLmggICAgICAgICB8ICAxMCArCj4g
ICBpbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmggfCAgIDYgKwo+ICAgcHRlX29zYWwuYyAgICAg
ICAgICAgICAgICAgIHwgNTQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCj4gICA4IGZpbGVzIGNoYW5nZWQsIDEwMzEgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IENvbmZpZy51awo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVr
Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwb3J0c3ltcy51awo+ICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUvcHRlX29zYWwuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvcHRl
X3R5cGVzLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVz
LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwdGVfb3NhbC5jCj4gCj4gZGlmZiAtLWdpdCBhL0Nv
bmZpZy51ayBiL0NvbmZpZy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MC4uMzU4N2M1NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Db25maWcudWsKPiBAQCAtMCwwICsx
LDMwIEBACj4gK21lbnVjb25maWcgTElCUFRIUkVBRF9FTUJFRERFRAo+ICsJYm9vbCAibGlicHRo
cmVhZC1lbWJlZGRlZCAtIEFuIGVtYmVkZGVkIHB0aHJlYWQgbGlicmFyeSIKPiArCWRlZmF1bHQg
bgo+ICsJc2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJDCj4gKwlzZWxlY3QgTElCVUtERUJV
Rwo+ICsJc2VsZWN0IExJQlVLQUxMT0MKPiArCXNlbGVjdCBMSUJVS1NDSEVECj4gKwlzZWxlY3Qg
TElCVUtMT0NLCj4gKwlzZWxlY3QgTElCVUtMT0NLX01VVEVYCj4gKwlzZWxlY3QgTElCVUtMT0NL
X1NFTUFQSE9SRQo+ICsKPiAraWYgTElCUFRIUkVBRF9FTUJFRERFRAo+ICtjb25maWcgTElCUFRI
UkVBRF9FTUJFRERFRF9NQVhfU0lNVUxfVEhSRUFEUwo+ICsJaW50ICJNYXhpbXVtIG51bWJlciBv
ZiBzaW11bHRhbmVvdXMgdGhyZWFkcyIKPiArCWRlZmF1bHQgMzIKPiArCWhlbHAKPiArCQlNYXhp
bXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgdGhyZWFkcy4KPiArCj4gK2NvbmZpZyBMSUJQVEhS
RUFEX0VNQkVEREVEX01BWF9UTFMKPiArCWludCAiTWF4aW11bSBudW1iZXIgb2YgVExTIHZhbHVl
cyIKPiArCWRlZmF1bHQgMzIKPiArCWhlbHAKPiArCQlNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0
ZWQgVExTIHZhbHVlcy4KPiArCj4gK2NvbmZpZyBMSUJQVEhSRUFEX0VNQkVEREVEX1VURVNUCj4g
Kwlib29sICJCdWlsZCB1bml0IHRlc3RzIgo+ICsJZGVmYXVsdCBuCj4gKwloZWxwCj4gKwkJQnVp
bGRzIHRoZSB1bml0IHRlc3RzIGZvciBydW5uaW5nIHRoZW0gZnJvbSBhbiBleHRlcm5hbCBhcHBs
aWNhdGlvbi4KPiArZW5kaWYKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51
awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTJjNjhiMgo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi9NYWtlZmlsZS51awo+IEBAIC0wLDAgKzEsMzI3IEBACj4gKyMKPiAr
IyBVbmlrcmFmdCBwb3J0IG9mIFBPU0lYIFRocmVhZHMgTGlicmFyeSBmb3IgZW1iZWRkZWQgc3lz
dGVtcwo+ICsjIENvcHlyaWdodChDKSAyMDE5IENvc3RpbiBMdXB1LCBVbml2ZXJzaXR5IFBvbGl0
ZWhuaWNhIG9mIEJ1Y2hhcmVzdAo+ICsjCj4gKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsjIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCj4gKyMKPiArIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsjIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyMgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArIwo+ICsjIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKPiArIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENP
UFlJTkcuTElCOwo+ICsjIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwKPiArIyA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBCj4gKyMKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMg
TGlicmFyeSByZWdpc3RyYXRpb24KPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArJChldmFs
ICQoY2FsbCBhZGRsaWJfcyxsaWJwdGhyZWFkLWVtYmVkZGVkLCQoQ09ORklHX0xJQlBUSFJFQURf
RU1CRURERUQpKSkKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgU291cmNlcwo+
ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1ZFUlNJT049
NDRiNDFkNzYwYTQzMzkxNWQ3MGE3YmU5ODA5NjUxYjBhNjVlMDAxZAo+ICtMSUJQVEhSRUFELUVN
QkVEREVEX1VSTD1odHRwczovL2dpdGh1Yi5jb20vUldUSC1PUy9wdGhyZWFkLWVtYmVkZGVkL2Fy
Y2hpdmUvJChMSUJQVEhSRUFELUVNQkVEREVEX1ZFUlNJT04pLnppcAo+ICtMSUJQVEhSRUFELUVN
QkVEREVEX1BBVENIRElSPSQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNFKS9wYXRjaGVzCj4gKyQo
ZXZhbCAkKGNhbGwgZmV0Y2gsbGlicHRocmVhZC1lbWJlZGRlZCwkKExJQlBUSFJFQUQtRU1CRURE
RURfVVJMKSkpCj4gKyQoZXZhbCAkKGNhbGwgcGF0Y2gsbGlicHRocmVhZC1lbWJlZGRlZCwkKExJ
QlBUSFJFQUQtRU1CRURERURfUEFUQ0hESVIpLHB0aHJlYWQtZW1iZWRkZWQtJChMSUJQVEhSRUFE
LUVNQkVEREVEX1ZFUlNJT04pKSkKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMg
SGVscGVycwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCA9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9PUklHSU4pL3B0aHJlYWQtZW1iZWRk
ZWQtJChMSUJQVEhSRUFELUVNQkVEREVEX1ZFUlNJT04pCj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+ICsjIExpYnJhcnkgaW5jbHVkZXMKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
PiArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURfRU1CRURERUQpICAgKz0gLUkkKExJQlBU
SFJFQUQtRU1CRURERURfQkFTRSkvaW5jbHVkZQo+ICtDSU5DTFVERVMtJChDT05GSUdfTElCUFRI
UkVBRF9FTUJFRERFRCkgICArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpCj4g
K0NJTkNMVURFUy0kKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEKSAgICs9IC1JJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcGxhdGZvcm0vaGVscGVyCj4gKwo+ICtDWFhJTkNMVURF
Uy0kKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEKSArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERF
RF9CQVNFKS9pbmNsdWRlCj4gK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURfRU1CRURE
RUQpICs9IC1JJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkKPiArQ1hYSU5DTFVERVMt
JChDT05GSUdfTElCUFRIUkVBRF9FTUJFRERFRCkgKz0gLUkkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS9wbGF0Zm9ybS9oZWxwZXIKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Cj4gKyMgR2xvYmFsIGZsYWdzCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gK1NVUFBSRVNT
X0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciBcCj4gKy1Xbm8tcG9pbnRlci10by1pbnQt
Y2FzdCAtV25vLWludC10by1wb2ludGVyLWNhc3QgXAo+ICstV25vLXVudXNlZC12YXJpYWJsZSAt
V25vLXVudXNlZC12YWx1ZSAtV25vLXVudXNlZC1mdW5jdGlvbiBcCj4gKy1Xbm8tbWlzc2luZy1m
aWVsZC1pbml0aWFsaXplcnMKPiArCj4gK0xJQlBUSFJFQUQtRU1CRURERURfQ0ZMQUdTLXkgICAr
PSAkKFNVUFBSRVNTX0ZMQUdTKQo+ICtMSUJQVEhSRUFELUVNQkVEREVEX0NYWEZMQUdTLXkgKz0g
JChTVVBQUkVTU19GTEFHUykKPiArCj4gK0xJQlBUSFJFQUQtRU1CRURERURfRVhQT1JUUyA9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9CQVNFKS9leHBvcnRzeW1zLnVrCj4gKwo+ICsjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwo+ICsjIE9TIGRlcGVuZGVuY2llcyBjb2RlIC0gR2x1ZSBiZXR3ZWVuIFVu
aWtyYWZ0IGFuZCBwdGhyZWFkLWVtYmVkZGVkCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4g
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNF
KS9wdGVfb3NhbC5jfGdsdWUKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgcHRo
cmVhZC1lbWJlZGRlZCBjb2RlCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL2Ns
ZWFudXAuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS9jcmVhdGUuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9nbG9iYWwuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wbGF0
Zm9ybS9oZWxwZXIvdGxzLWhlbHBlci5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9jYWxsVXNlckRlc3Ryb3lSb3V0
aW5lcy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3B0ZV9jYW5jZWxsYWJsZV93YWl0LmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX2NvbmRf
Y2hlY2tfbmVlZF9pbml0LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX2RldGFjaC5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9nZXRw
cm9jZXNzb3JzLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX2lzX2F0dHIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGVfbXV0ZXhfY2hl
Y2tfbmVlZF9pbml0LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX25ldy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV9yZWxtaWxsaXNl
Y3MuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS9wdGVfcmV1c2UuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGVfcndsb2NrX2NhbmNlbHdyd2Fp
dC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3B0ZV9yd2xvY2tfY2hlY2tfbmVlZF9pbml0LmMKPiArTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX3Nw
aW5sb2NrX2NoZWNrX25lZWRfaW5pdC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0ZV90aHJlYWREZXN0cm95LmMKPiAr
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvcHRlX3RocmVhZFN0YXJ0LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRlX3Rocm93LmMKPiArTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRl
X3RrQXNzb2NDcmVhdGUuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGVfdGtBc3NvY0Rlc3Ryb3kuYwo+ICtMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9w
dGhyZWFkX2F0dHJfZGVzdHJveS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0
ZS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9nZXRpbmhlcml0c2NoZWQuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhy
ZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9
ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9nZXRzY2hlZHBv
bGljeS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYXR0cl9nZXRzY29wZS5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
YXR0cl9nZXRzdGFja2FkZHIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplLmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9hdHRyX2luaXQuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfc2V0ZGV0
YWNoc3RhdGUuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkLmMKPiArTElC
UFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RF
RCkvcHRocmVhZF9hdHRyX3NldHNjaGVkcGFyYW0uYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NS
Q1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfc2V0
c2NoZWRwb2xpY3kuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2F0dHJfc2V0c2NvcGUuYwo+ICtMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9w
dGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkg
Kz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9hdHRyX3NldHN0YWNr
c2l6ZS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYmFycmllcmF0dHJfZGVzdHJveS5jCj4gK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0
aHJlYWRfYmFycmllcmF0dHJfZ2V0cHNoYXJlZC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYmFycmllcmF0
dHJfaW5pdC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfYmFycmllcmF0dHJfc2V0cHNoYXJlZC5jCj4gK0xJ
QlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNU
RUQpL3B0aHJlYWRfYmFycmllcl9kZXN0cm95LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9iYXJyaWVyX2lu
aXQuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS9wdGhyZWFkX2JhcnJpZXJfd2FpdC5jCj4gK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfY2Fu
Y2VsLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvcHRocmVhZF9jb25kYXR0cl9kZXN0cm95LmMKPiArTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVh
ZF9jb25kYXR0cl9nZXRwc2hhcmVkLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9jb25kYXR0cl9pbml0LmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9jb25kYXR0cl9zZXRwc2hhcmVkLmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9j
b25kX2Rlc3Ryb3kuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2NvbmRfaW5pdC5jCj4gK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfY29uZF9zaWduYWwuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2NvbmRfd2FpdC5jCj4gK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0
aHJlYWRfZGVsYXlfbnAuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2RldGFjaC5jCj4gK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfZXF1YWwuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2V4aXQuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX2dldGNv
bmN1cnJlbmN5LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9nZXRzY2hlZHBhcmFtLmMKPiArTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRo
cmVhZF9nZXRzcGVjaWZpYy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfaW5pdC5jCj4gK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJl
YWRfam9pbi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfa2V5X2NyZWF0ZS5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
a2V5X2RlbGV0ZS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfa2lsbC5jCj4gK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfbXV0
ZXhhdHRyX2Rlc3Ryb3kuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4YXR0cl9nZXRraW5kX25wLmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9tdXRleGF0dHJfZ2V0cHNoYXJlZC5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRf
bXV0ZXhhdHRyX2dldHR5cGUuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4YXR0cl9pbml0LmMKPiAr
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvcHRocmVhZF9tdXRleGF0dHJfc2V0a2luZF9ucC5jCj4gK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfbXV0
ZXhhdHRyX3NldHBzaGFyZWQuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlLmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvcHRocmVhZF9tdXRleF9kZXN0cm95LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRleF9p
bml0LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRleF9sb2NrLmMKPiArTElCUFRIUkVBRC1FTUJFRERF
RF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9tdXRl
eF90aW1lZGxvY2suYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX211dGV4X3RyeWxvY2suYwo+ICtMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9w
dGhyZWFkX211dGV4X3VubG9jay5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfbnVtX3Byb2Nlc3NvcnNfbnAu
Ywo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS9wdGhyZWFkX29uY2UuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3J3bG9ja2F0dHJfZGVz
dHJveS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrYXR0cl9nZXRwc2hhcmVkLmMKPiArTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
cHRocmVhZF9yd2xvY2thdHRyX2luaXQuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3J3bG9ja2F0dHJfc2V0
cHNoYXJlZC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrX2Rlc3Ryb3kuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhy
ZWFkX3J3bG9ja19pbml0LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9yd2xvY2tfcmRsb2NrLmMKPiArTElC
UFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RF
RCkvcHRocmVhZF9yd2xvY2tfdGltZWRyZGxvY2suYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NS
Q1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3J3bG9ja190
aW1lZHdybG9jay5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrX3RyeXJkbG9jay5jCj4gK0xJQlBU
SFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
L3B0aHJlYWRfcndsb2NrX3RyeXdybG9jay5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrX3VubG9j
ay5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3B0aHJlYWRfcndsb2NrX3dybG9jay5jCj4gK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc2Vs
Zi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3B0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUuYwo+ICtMSUJQVEhSRUFELUVNQkVE
REVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3Nl
dGNhbmNlbHR5cGUuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJF
QUQtRU1CRURERURfRVhUUkFDVEVEKS9wdGhyZWFkX3NldGNvbmN1cnJlbmN5LmMKPiArTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
cHRocmVhZF9zZXRzY2hlZHBhcmFtLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9zZXRzcGVjaWZpYy5jCj4g
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3B0aHJlYWRfc3Bpbl9kZXN0cm95LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF9zcGluX2luaXQu
Ywo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS9wdGhyZWFkX3NwaW5fbG9jay5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfc3Bpbl90cnls
b2NrLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvcHRocmVhZF9zcGluX3VubG9jay5jCj4gK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3B0aHJlYWRfdGVy
bWluYXRlLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVN
QkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF90ZXN0Y2FuY2VsLmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvcHRocmVhZF90
aW1lY2hhbmdlX2hhbmRsZXJfbnAuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAk
KExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvc2NoZWRfZ2V0X3ByaW9yaXR5X21pbi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3NjaGVkX3NldHNjaGVk
dWxlci5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3NjaGVkX3lpZWxkLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvc2VtX2Nsb3NlLmMKPiArTElC
UFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RF
RCkvc2VtX2Rlc3Ryb3kuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1fZ2V0dmFsdWUuYwo+ICtMSUJQVEhSRUFELUVN
QkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1faW5p
dC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERF
RF9FWFRSQUNURUQpL3NlbV9vcGVuLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvc2VtX3Bvc3RfbXVsdGlwbGUuYwo+ICtM
SUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFD
VEVEKS9zZW1fcG9zdC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3NlbV90aW1lZHdhaXQuYwo+ICtMSUJQVEhSRUFELUVN
QkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1fdHJ5
d2FpdC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3NlbV91bmxpbmsuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS9zZW1fd2FpdC5jCj4gKwo+ICtp
ZmVxICgkKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEX1VURVNUKSx5KQo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0
cy9iYXJyaWVyMS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2JhcnJpZXIyLmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvYmFy
cmllcjMuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS90ZXN0cy9iYXJyaWVyNC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2JhcnJpZXI1
LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvYmVuY2hsaWIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9iZW5jaHRlc3QxLmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvdGVzdHMvYmVuY2h0ZXN0Mi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2JlbmNodGVzdDMuYwo+
ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9iZW5jaHRlc3Q0LmMKPiArI0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2JlbmNodGVzdDUuYwo+
ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9jYW5jZWwxLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY2FuY2VsMi5jCj4gK0xJQlBU
SFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
L3Rlc3RzL2NhbmNlbDMuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jYW5jZWw0LmMKPiArTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMv
Y2FuY2VsNS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NhbmNlbDZhLmMKPiArTElCUFRIUkVBRC1FTUJFRERF
RF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY2FuY2Vs
NmQuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS90ZXN0cy9jbGVhbnVwMC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NsZWFudXAxLmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvdGVzdHMvY2xlYW51cDIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jbGVhbnVwMy5jCj4gK0xJ
QlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNU
RUQpL3Rlc3RzL2NvbmR2YXIxXzEuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAk
KExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jb25kdmFyMV8yLmMKPiArTElC
UFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RF
RCkvdGVzdHMvY29uZHZhcjEuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jb25kdmFyMl8xLmMKPiArTElCUFRI
UkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkv
dGVzdHMvY29uZHZhcjIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jb25kdmFyM18xLmMKPiArTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMvY29uZHZhcjNfMi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRI
UkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NvbmR2YXIzXzMuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0
cy9jb25kdmFyMy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NvbmR2YXI0LmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY29u
ZHZhcjUuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS90ZXN0cy9jb25kdmFyNi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NvbmR2YXI3
LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvY29uZHZhcjguYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9jb25kdmFyOS5jCj4g
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL2NvdW50MS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2NyZWF0ZTEuYwo+ICtMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9jcmVhdGUyLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvY3JlYXRlMy5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2Rl
bGF5MS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3Rlc3RzL2RlbGF5Mi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2RldGFjaDEuYwo+
ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9lcXVhbDEuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAk
KExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9lcnJubzEuYwo+ICtMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9leGNlcHRpb24xLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvZXhjZXB0aW9uMi5jCj4gK0xJQlBUSFJF
QUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rl
c3RzL2V4Y2VwdGlvbjMuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBU
SFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9leGl0MS5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2V4
aXQyLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvdGVzdHMvZXhpdDMuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9leGl0NC5jCj4gK0xJ
QlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNU
RUQpL3Rlc3RzL2V4aXQ1LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvaW5oZXJpdDEuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0
cy9qb2luMC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2pvaW4xLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvam9pbjIuYwo+
ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9qb2luMy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQo
TElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL2pvaW40LmMKPiArTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMva2lsbDEuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDEuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDFl
LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXgxbi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4MXIuYwo+ICtM
SUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFD
VEVEKS90ZXN0cy9tdXRleDIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDJlLmMKPiArTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMvbXV0ZXgyci5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4My5jCj4gK0xJQlBUSFJFQUQtRU1CRURE
RURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4
M2UuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURE
RURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDNyLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNT
LXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg0LmMKPiAr
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvdGVzdHMvbXV0ZXg1LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChM
SUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg2LmMKPiArTElCUFRIUkVB
RC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVz
dHMvbXV0ZXg2ZS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVB
RC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4NmVzLmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0
ZXg2bi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4NnIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NS
Q1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDZycy5j
Cj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3Rlc3RzL211dGV4NnMuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSAr
PSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDcuYwo+ICtMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS90ZXN0cy9tdXRleDdlLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg3bi5jCj4gK0xJQlBUSFJFQUQt
RU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3Rz
L211dGV4N3IuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQt
RU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDguYwo+ICtMSUJQVEhSRUFELUVNQkVEREVE
X1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9tdXRleDhl
LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVE
X0VYVFJBQ1RFRCkvdGVzdHMvbXV0ZXg4bi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL211dGV4OHIuYwo+ICtM
SUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFD
VEVEKS90ZXN0cy9vbmNlMS5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL29uY2UyLmMKPiArTElCUFRIUkVBRC1F
TUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMv
b25jZTMuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1C
RURERURfRVhUUkFDVEVEKS90ZXN0cy9vbmNlNC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JD
Uy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3ByaW9yaXR5MS5j
Cj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3Rlc3RzL3ByaW9yaXR5Mi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3JldXNlMS5jCj4gK0xJ
QlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNU
RUQpL3Rlc3RzL3JldXNlMi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazEuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0
cy9yd2xvY2syLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFE
LUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcndsb2NrMl90LmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcnds
b2NrMy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJF
RERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazNfdC5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURf
U1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3J3bG9jazQu
Ywo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURf
RVhUUkFDVEVEKS90ZXN0cy9yd2xvY2s0X3QuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9yd2xvY2s1LmMKPiAr
TElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJB
Q1RFRCkvdGVzdHMvcndsb2NrNV90LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0g
JChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcndsb2NrNi5jCj4gK0xJQlBU
SFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
L3Rlc3RzL3J3bG9jazZfdDIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJ
QlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9yd2xvY2s2X3QuYwo+ICtMSUJQVEhS
RUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90
ZXN0cy9yd2xvY2s3LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvcndsb2NrOC5jCj4gK0xJQlBUSFJFQUQtRU1C
RURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3Nl
bGYxLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVE
REVEX0VYVFJBQ1RFRCkvdGVzdHMvc2VsZjIuYwo+ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0cy9zZW1hcGhvcmUxLmMK
PiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VY
VFJBQ1RFRCkvdGVzdHMvc2VtYXBob3JlMi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NlbWFwaG9yZTMuYwo+
ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9zZW1hcGhvcmU0LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkg
Kz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvc2VtYXBob3JlNHQuYwo+
ICtMSUJQVEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhU
UkFDVEVEKS90ZXN0cy9zZW1hcGhvcmU1LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkg
Kz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvc2VtYXBob3JlNi5jCj4g
K0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRS
QUNURUQpL3Rlc3RzL3NwaW4xLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChM
SUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvc3BpbjIuYwo+ICtMSUJQVEhSRUFE
LUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVEKS90ZXN0
cy9zcGluMy5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1F
TUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3NwaW40LmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9T
UkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvc3RyZXNzMS5j
Cj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9F
WFRSQUNURUQpL3Rlc3RzL3Rlc3RfbWFpbi5jCj4gK0xJQlBUSFJFQUQtRU1CRURERURfU1JDUy15
ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQpL3Rlc3RzL3RzZDEuYwo+ICtMSUJQ
VEhSRUFELUVNQkVEREVEX1NSQ1MteSArPSAkKExJQlBUSFJFQUQtRU1CRURERURfRVhUUkFDVEVE
KS90ZXN0cy90c2QyLmMKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQVEhS
RUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvdmFsaWQxLmMKPiArTElCUFRIUkVBRC1FTUJF
RERFRF9TUkNTLXkgKz0gJChMSUJQVEhSRUFELUVNQkVEREVEX0VYVFJBQ1RFRCkvdGVzdHMvdmFs
aWQyLmMKPiArZW5kaWYKPiBkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCj4gaW5k
ZXggMmVjYzIzOS4uYjllYjU4MCAxMDA2NDQKPiAtLS0gYS9SRUFETUUubWQKPiArKysgYi9SRUFE
TUUubWQKPiBAQCAtMSw1ICsxLDE1IEBACj4gICBwdGhyZWFkLWVtYmVkZGVkIGZvciBVbmlrcmFm
dAo+ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAgIAo+ICtUaGlzIGlzIHRoZSBw
b3J0IG9mIHB0aHJlYWQtZW1iZWRkZWQgZm9yIFVuaWtyYWZ0IGFzIGV4dGVybmFsIGxpYnJhcnku
IFlvdSB3aWxsCj4gK25lZWQgbmV3bGliIHRvIG1ha2UgaXQgd29yay4gV2hlbiBhZGRpbmcgdGhl
IGxpYnJhcnkgaW4gdGhlIGRlcGVuZGVuY3kgbGlzdCwKPiArcHRocmVhZC1lbWJlZGRlZCBzaG91
bGQgc3RheSBiZWZvcmUgbmV3bGliLCBlLmcuOgo+ICsKPiArIGAuLi46JChVS19MSUJTKS9wdGhy
ZWFkLWVtYmVkZGVkOiQoVUtfTElCUykvbmV3bGliOi4uLmAKPiArCj4gK0ZvciBydW5uaW5nIHRo
ZSB1bml0IHRlc3RzLCBlbmFibGUgdGhlICdCdWlsZCB1bml0IHRlc3RzJyBvcHRpb24gaW4gdGhl
Cj4gK2NvbmZpZ3VyYXRpb24gbWVudSBhbmQgY2FsbCB0aGUgYHB0ZV90ZXN0X21haW4oKWAgZnVu
Y3Rpb24gaW4geW91ciBtYWluCj4gK2FwcGxpY2F0aW9uLgo+ICsKPiAgIFBsZWFzZSByZWZlciB0
byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRv
Yy9gCj4gICBzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4KPiBk
aWZmIC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsKPiBuZXcgZmlsZSBtb2Rl
IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjI0YjVjMDIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv
ZXhwb3J0c3ltcy51awo+IEBAIC0wLDAgKzEsOTAgQEAKPiArcHRocmVhZF9pbml0Cj4gK3B0aHJl
YWRfdGVybWluYXRlCj4gK3B0aHJlYWRfYXR0cl9pbml0Cj4gK3B0aHJlYWRfYXR0cl9kZXN0cm95
Cj4gK3B0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0ZQo+ICtwdGhyZWFkX2F0dHJfZ2V0c3RhY2th
ZGRyCj4gK3B0aHJlYWRfYXR0cl9nZXRzdGFja3NpemUKPiArcHRocmVhZF9hdHRyX3NldGRldGFj
aHN0YXRlCj4gK3B0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIKPiArcHRocmVhZF9hdHRyX3NldHN0
YWNrc2l6ZQo+ICtwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbQo+ICtwdGhyZWFkX2F0dHJfc2V0
c2NoZWRwYXJhbQo+ICtwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kKPiArcHRocmVhZF9hdHRy
X2dldHNjaGVkcG9saWN5Cj4gK3B0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQKPiArcHRocmVh
ZF9hdHRyX2dldGluaGVyaXRzY2hlZAo+ICtwdGhyZWFkX2F0dHJfc2V0c2NvcGUKPiArcHRocmVh
ZF9hdHRyX2dldHNjb3BlCj4gK3B0aHJlYWRfY3JlYXRlCj4gK3B0aHJlYWRfZGV0YWNoCj4gK3B0
aHJlYWRfZXF1YWwKPiArcHRocmVhZF9leGl0Cj4gK3B0aHJlYWRfam9pbgo+ICtwdGhyZWFkX3Nl
bGYKPiArcHRocmVhZF9jYW5jZWwKPiArcHRocmVhZF9zZXRjYW5jZWxzdGF0ZQo+ICtwdGhyZWFk
X3NldGNhbmNlbHR5cGUKPiArcHRocmVhZF90ZXN0Y2FuY2VsCj4gK3B0aHJlYWRfb25jZQo+ICtw
dGhyZWFkX2tleV9jcmVhdGUKPiArcHRocmVhZF9rZXlfZGVsZXRlCj4gK3B0aHJlYWRfc2V0c3Bl
Y2lmaWMKPiArcHRocmVhZF9nZXRzcGVjaWZpYwo+ICtwdGhyZWFkX211dGV4YXR0cl9pbml0Cj4g
K3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kKPiArcHRocmVhZF9tdXRleGF0dHJfZ2V0cHNoYXJl
ZAo+ICtwdGhyZWFkX211dGV4YXR0cl9zZXRwc2hhcmVkCj4gK3B0aHJlYWRfbXV0ZXhhdHRyX3Nl
dHR5cGUKPiArcHRocmVhZF9tdXRleGF0dHJfZ2V0dHlwZQo+ICtwdGhyZWFkX2JhcnJpZXJhdHRy
X2luaXQKPiArcHRocmVhZF9iYXJyaWVyYXR0cl9kZXN0cm95Cj4gK3B0aHJlYWRfYmFycmllcmF0
dHJfZ2V0cHNoYXJlZAo+ICtwdGhyZWFkX2JhcnJpZXJhdHRyX3NldHBzaGFyZWQKPiArcHRocmVh
ZF9tdXRleF9pbml0Cj4gK3B0aHJlYWRfbXV0ZXhfZGVzdHJveQo+ICtwdGhyZWFkX211dGV4X2xv
Y2sKPiArcHRocmVhZF9tdXRleF90aW1lZGxvY2sKPiArcHRocmVhZF9tdXRleF90cnlsb2NrCj4g
K3B0aHJlYWRfbXV0ZXhfdW5sb2NrCj4gK3B0aHJlYWRfc3Bpbl9pbml0Cj4gK3B0aHJlYWRfc3Bp
bl9kZXN0cm95Cj4gK3B0aHJlYWRfc3Bpbl9sb2NrCj4gK3B0aHJlYWRfc3Bpbl90cnlsb2NrCj4g
K3B0aHJlYWRfc3Bpbl91bmxvY2sKPiArcHRocmVhZF9iYXJyaWVyX2luaXQKPiArcHRocmVhZF9i
YXJyaWVyX2Rlc3Ryb3kKPiArcHRocmVhZF9iYXJyaWVyX3dhaXQKPiArcHRocmVhZF9jb25kYXR0
cl9pbml0Cj4gK3B0aHJlYWRfY29uZGF0dHJfZGVzdHJveQo+ICtwdGhyZWFkX2NvbmRhdHRyX2dl
dHBzaGFyZWQKPiArcHRocmVhZF9jb25kYXR0cl9zZXRwc2hhcmVkCj4gK3B0aHJlYWRfY29uZF9p
bml0Cj4gK3B0aHJlYWRfY29uZF9kZXN0cm95Cj4gK3B0aHJlYWRfY29uZF93YWl0Cj4gK3B0aHJl
YWRfY29uZF90aW1lZHdhaXQKPiArcHRocmVhZF9jb25kX3NpZ25hbAo+ICtwdGhyZWFkX2NvbmRf
YnJvYWRjYXN0Cj4gK3B0aHJlYWRfc2V0c2NoZWRwYXJhbQo+ICtwdGhyZWFkX2dldHNjaGVkcGFy
YW0KPiArcHRocmVhZF9zZXRjb25jdXJyZW5jeQo+ICtwdGhyZWFkX2dldGNvbmN1cnJlbmN5Cj4g
K3B0aHJlYWRfcndsb2NrX2luaXQKPiArcHRocmVhZF9yd2xvY2tfZGVzdHJveQo+ICtwdGhyZWFk
X3J3bG9ja190cnlyZGxvY2sKPiArcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrCj4gK3B0aHJlYWRf
cndsb2NrX3JkbG9jawo+ICtwdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jawo+ICtwdGhyZWFkX3J3
bG9ja193cmxvY2sKPiArcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2sKPiArcHRocmVhZF9yd2xv
Y2tfdW5sb2NrCj4gK3B0aHJlYWRfcndsb2NrYXR0cl9pbml0Cj4gK3B0aHJlYWRfcndsb2NrYXR0
cl9kZXN0cm95Cj4gK3B0aHJlYWRfcndsb2NrYXR0cl9nZXRwc2hhcmVkCj4gK3B0aHJlYWRfcnds
b2NrYXR0cl9zZXRwc2hhcmVkCj4gK3B0aHJlYWRfa2lsbAo+ICtzY2hlZF95aWVsZAo+ICtzY2hl
ZF9nZXRfcHJpb3JpdHlfbWluCj4gK3NjaGVkX2dldF9wcmlvcml0eV9tYXgKPiArc2NoZWRfc2V0
c2NoZWR1bGVyCj4gK3B0ZV90ZXN0X21haW4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wdGVfb3Nh
bC5oIGIvaW5jbHVkZS9wdGVfb3NhbC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwLi5iY2Y1Mzc0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvcHRlX29zYWwu
aAo+IEBAIC0wLDAgKzEsMTYgQEAKPiArI2lmbmRlZiBfX1BURV9PU0FMX0hfXwo+ICsjZGVmaW5l
IF9fUFRFX09TQUxfSF9fCj4gKwo+ICsjaW5jbHVkZSA8dWsvbXV0ZXguaD4KPiArI2luY2x1ZGUg
PHVrL3NlbWFwaG9yZS5oPgo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgdWtfdGhyZWFkKiBwdGVfb3NU
aHJlYWRIYW5kbGU7Cj4gK3R5cGVkZWYgc3RydWN0IHVrX3NlbWFwaG9yZSAqcHRlX29zU2VtYXBo
b3JlSGFuZGxlOwo+ICt0eXBlZGVmIHN0cnVjdCB1a19tdXRleCAqcHRlX29zTXV0ZXhIYW5kbGU7
Cj4gKwo+ICsjZGVmaW5lIE9TX01BWF9TSU1VTF9USFJFQURTIFwKPiArCUNPTkZJR19MSUJQVEhS
RUFEX0VNQkVEREVEX01BWF9TSU1VTF9USFJFQURTCj4gKwo+ICsjaW5jbHVkZSAicHRlX2dlbmVy
aWNfb3NhbC5oIgo+ICsKPiArI2VuZGlmIC8qIF9fUFRFX09TQUxfSF9fICovCj4gZGlmZiAtLWdp
dCBhL2luY2x1ZGUvcHRlX3R5cGVzLmggYi9pbmNsdWRlL3B0ZV90eXBlcy5oCj4gbmV3IGZpbGUg
bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5jOTA4MWZhCj4gLS0tIC9kZXYvbnVsbAo+ICsr
KyBiL2luY2x1ZGUvcHRlX3R5cGVzLmgKPiBAQCAtMCwwICsxLDEwIEBACj4gKyNpZm5kZWYgX19Q
VEVfVFlQRVNfSF9fCj4gKyNkZWZpbmUgX19QVEVfVFlQRVNfSF9fCj4gKwo+ICsjaW5jbHVkZSA8
c3lzL3RpbWViLmg+Cj4gKwo+ICt0eXBlZGVmIHVuc2lnbmVkIGludCB0aWRfdDsKPiArCj4gK3R5
cGVkZWYgaW50IHBpZF90Owo+ICsKPiArI2VuZGlmIC8qIF9fUFRFX1RZUEVTX0hfXyAqLwo+IGRp
ZmYgLS1naXQgYS9pbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmggYi9pbmNsdWRlL3N5cy9fcHRo
cmVhZHR5cGVzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmVkOTg3
YjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9zeXMvX3B0aHJlYWR0eXBlcy5oCj4g
QEAgLTAsMCArMSw2IEBACj4gKyNpZm5kZWYgX1NZU19fUFRIUkVBRFRZUEVTX0hfCj4gKyNkZWZp
bmUgX1NZU19fUFRIUkVBRFRZUEVTX0hfCj4gKwo+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICsK
PiArI2VuZGlmIC8qIF9TWVNfX1BUSFJFQURUWVBFU19IXyAqLwo+IGRpZmYgLS1naXQgYS9wdGVf
b3NhbC5jIGIvcHRlX29zYWwuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MC4uNWNiYzBhMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wdGVfb3NhbC5jCj4gQEAgLTAsMCAr
MSw1NDIgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4wLW9yLWxhdGVy
ICovCj4gKy8qCj4gKyAqICAgICAgVW5pa3JhZnQgcG9ydCBvZiBQT1NJWCBUaHJlYWRzIExpYnJh
cnkgZm9yIGVtYmVkZGVkIHN5c3RlbXMKPiArICogICAgICBDb3B5cmlnaHQoQykgMjAxOSBDb3N0
aW4gTHVwdSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKPiArICoKPiArICog
ICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCj4gKyAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiAgICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiAgICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
PiArICoKPiArICogICAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogICAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiAgICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCj4gKyAqICAgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KPiArICoKPiArICogICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqICAgICAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsKPiArICogICAgICBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCj4gKyAqICAg
ICAgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT
QQo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIFRoaXMgcG9ydCBpcyBkZXJpdmVkIGZyb20gaGVybWl0
L3B0ZV9vc2FsLmMuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVk
ZSA8dWsvZXNzZW50aWFscy5oPgo+ICsjaW5jbHVkZSA8dWsvYXJjaC90aW1lLmg+Cj4gKyNpbmNs
dWRlIDx1ay9hcmNoL2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPiArI2luY2x1
ZGUgPHVrL3RocmVhZC5oPgo+ICsjaW5jbHVkZSAicHRlX29zYWwuaCIKPiArI2luY2x1ZGUgInB0
aHJlYWQuaCIKPiArI2luY2x1ZGUgInRscy1oZWxwZXIuaCIKPiArCj4gKwo+ICt0eXBlZGVmIHN0
cnVjdCB7Cj4gKwkvKiB0aHJlYWQgcm91dGluZSAqLwo+ICsJcHRlX29zVGhyZWFkRW50cnlQb2lu
dCBlbnRyeV9wb2ludDsKPiArCS8qIHRocmVhZCByb3V0aW5lIGFyZ3VtZW50cyAqLwo+ICsJdm9p
ZCAqYXJndjsKPiArCS8qIFVuaWtyYWZ0IHRocmVhZCAqLwo+ICsJc3RydWN0IHVrX3RocmVhZCAq
dWtfdGhyZWFkOwo+ICsJLyogVExTICovCj4gKwl2b2lkICp0bHM7Cj4gKwkvKiBTZW1hcGhvcmUg
Zm9yIHRyaWdnZXJpbmcgdGhyZWFkIHN0YXJ0ICovCj4gKwlzdHJ1Y3QgdWtfc2VtYXBob3JlIHN0
YXJ0X3NlbTsKPiArCS8qIFNlbWFwaG9yZSBmb3IgY2FuY2VsbGF0aW9uICovCj4gKwlzdHJ1Y3Qg
dWtfc2VtYXBob3JlIGNhbmNlbF9zZW07Cj4gKwkvKiBJcyBub24temVybyBpZiB0aHJlYWQgZXhp
dGVkICovCj4gKwlpbnQgZG9uZTsKPiArfSBwdGVfdGhyZWFkX2RhdGFfdDsKPiArCj4gKwo+ICsv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKiBJbml0aWFsaXphdGlvbgo+ICsgKgo+ICsg
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwo+ICsKPiAraW50IF9fY29uc3RydWN0b3IgcHRocmVhZF9jb25z
dHJ1Y3Rvcih2b2lkKQo+ICt7Cj4gKwl1a19wcl9kZWJ1ZygicHRocmVhZC1lbWJlZGRlZCBjb25z
dHJ1Y3RvclxuIik7Cj4gKwlyZXR1cm4gcHRocmVhZF9pbml0KCk7Cj4gK30KPiArCj4gK3B0ZV9v
c1Jlc3VsdCBwdGVfb3NJbml0KHZvaWQpCj4gK3sKPiArCXB0ZV9vc1Jlc3VsdCByZXN1bHQgPSBQ
VEVfT1NfT0s7Cj4gKwlwdGVfdGhyZWFkX2RhdGFfdCAqcHRkOwo+ICsJc3RydWN0IHVrX3RocmVh
ZCAqY3JudDsKPiArCj4gKwkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBUTFMgc3VwcG9ydCAq
Lwo+ICsJcmVzdWx0ID0gcHRlVGxzR2xvYmFsSW5pdChDT05GSUdfTElCUFRIUkVBRF9FTUJFRERF
RF9NQVhfVExTKTsKPiArCWlmIChyZXN1bHQgIT0gUFRFX09TX09LKSB7Cj4gKwkJdWtfcHJfZXJy
KCJDb3VsZCBub3QgaW5pdCBnbG9iYWwgVExTIik7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+
ICsJLyogQ3JlYXRlIGEgcHRkIGZvciBpbml0aWFsaXppbmcgdGhyZWFkLiAqLwo+ICsJcHRkID0g
Y2FsbG9jKDEsIHNpemVvZihwdGVfdGhyZWFkX2RhdGFfdCkpOwo+ICsJaWYgKHB0ZCA9PSBOVUxM
KSB7Cj4gKwkJcmVzdWx0ID0gUFRFX09TX05PX1JFU09VUkNFUzsKPiArCQlnb3RvIG91dDsKPiAr
CX0KPiArCj4gKwlwdGQtPnRscyA9IHB0ZVRsc1RocmVhZEluaXQoKTsKPiArCWlmIChwdGQtPnRs
cyA9PSBOVUxMKSB7Cj4gKwkJdWtfcHJfZXJyKCJDb3VsZCBub3QgaW5pdCBUTFMiKTsKPiArCQlm
cmVlKHB0ZCk7Cj4gKwkJcmVzdWx0ID0gUFRFX09TX05PX1JFU09VUkNFUzsKPiArCQlnb3RvIG91
dDsKPiArCX0KPiArCj4gKwljcm50ID0gdWtfdGhyZWFkX2N1cnJlbnQoKTsKPiArCWNybnQtPnBy
diA9IHB0ZDsKPiArCXB0ZC0+dWtfdGhyZWFkID0gY3JudDsKPiArCj4gK291dDoKPiArCXJldHVy
biByZXN1bHQ7Cj4gK30KPiArCj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqIFRo
cmVhZHMKPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPiArCj4gK3N0YXRpYyBwdGVfdGhy
ZWFkX2RhdGFfdCAqaGFuZGxlX3RvX3B0ZChwdGVfb3NUaHJlYWRIYW5kbGUgaCkKPiArewo+ICsJ
cmV0dXJuIGgtPnBydjsKPiArfQo+ICsKPiArc3RhdGljIHB0ZV90aHJlYWRfZGF0YV90ICpjdXJy
ZW50X3B0ZCh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gdWtfdGhyZWFkX2N1cnJlbnQoKS0+cHJ2Owo+
ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1a19zdHViX3RocmVhZF9lbnRyeSh2b2lkICphcmd2KQo+
ICt7Cj4gKwlwdGVfdGhyZWFkX2RhdGFfdCAqcHRkID0gKHB0ZV90aHJlYWRfZGF0YV90ICopIGFy
Z3Y7Cj4gKwo+ICsJLyogd2FpdCBmb3IgdGhlIHJlc3VtZSBjb21tYW5kICovCj4gKwl1a19zZW1h
cGhvcmVfZG93bigmcHRkLT5zdGFydF9zZW0pOwo+ICsKPiArCXB0ZC0+ZW50cnlfcG9pbnQocHRk
LT5hcmd2KTsKPiArfQo+ICsKPiArcHRlX29zUmVzdWx0IHB0ZV9vc1RocmVhZENyZWF0ZShwdGVf
b3NUaHJlYWRFbnRyeVBvaW50IGVudHJ5X3BvaW50LAo+ICsJaW50IHN0YWNrX3NpemUsIGludCBp
bml0aWFsX3ByaW8sIHZvaWQgKmFyZ3YsCj4gKwlwdGVfb3NUaHJlYWRIYW5kbGUgKnBoKQo+ICt7
Cj4gKwlwdGVfdGhyZWFkX2RhdGFfdCAqcHRkOwo+ICsKPiArCXB0ZCA9IG1hbGxvYyhzaXplb2Yo
cHRlX3RocmVhZF9kYXRhX3QpKTsKPiArCWlmICghcHRkKQo+ICsJCXJldHVybiBQVEVfT1NfTk9f
UkVTT1VSQ0VTOwo+ICsKPiArCXB0ZC0+ZW50cnlfcG9pbnQgPSBlbnRyeV9wb2ludDsKPiArCXB0
ZC0+YXJndiA9IGFyZ3Y7Cj4gKwo+ICsJLyogQWxsb2NhdGUgVExTIHN0cnVjdHVyZSBmb3IgdGhp
cyB0aHJlYWQuICovCj4gKwlwdGQtPnRscyA9IHB0ZVRsc1RocmVhZEluaXQoKTsKPiArCWlmIChw
dGQtPnRscyA9PSBOVUxMKSB7Cj4gKwkJdWtfcHJfZXJyKCJDb3VsZCBub3QgYWxsb2NhdGUgVExT
XG4iKTsKPiArCQlmcmVlKHB0ZCk7Cj4gKwkJcmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7Cj4g
Kwl9Cj4gKwo+ICsJdWtfc2VtYXBob3JlX2luaXQoJnB0ZC0+c3RhcnRfc2VtLCAwKTsKPiArCXVr
X3NlbWFwaG9yZV9pbml0KCZwdGQtPmNhbmNlbF9zZW0sIDApOwo+ICsJcHRkLT5kb25lID0gMDsK
PiArCj4gKwlwdGQtPnVrX3RocmVhZCA9IHVrX3RocmVhZF9jcmVhdGVfYXR0cihOVUxMLCBOVUxM
LAo+ICsJCXVrX3N0dWJfdGhyZWFkX2VudHJ5LCBwdGQpOwo+ICsJaWYgKHB0ZC0+dWtfdGhyZWFk
ID09IE5VTEwpIHsKPiArCQlwdGVUbHNUaHJlYWREZXN0cm95KHB0ZC0+dGxzKTsKPiArCQlmcmVl
KHB0ZCk7Cj4gKwkJcmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7Cj4gKwl9Cj4gKwo+ICsJcHRk
LT51a190aHJlYWQtPnBydiA9IHB0ZDsKPiArCj4gKwkqcGggPSBwdGQtPnVrX3RocmVhZDsKPiAr
Cj4gKwlyZXR1cm4gUFRFX09TX09LOwo+ICt9Cj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zVGhy
ZWFkU3RhcnQocHRlX29zVGhyZWFkSGFuZGxlIGgpCj4gK3sKPiArCXB0ZV90aHJlYWRfZGF0YV90
ICpwdGQgPSBoYW5kbGVfdG9fcHRkKGgpOwo+ICsKPiArCS8qIHdha2UgdXAgdGhyZWFkICovCj4g
Kwl1a19zZW1hcGhvcmVfdXAoJnB0ZC0+c3RhcnRfc2VtKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAr
fQo+ICsKPiArcHRlX29zUmVzdWx0IHB0ZV9vc1RocmVhZERlbGV0ZShwdGVfb3NUaHJlYWRIYW5k
bGUgaCkKPiArewo+ICsJcHRlX3RocmVhZF9kYXRhX3QgKnB0ZCA9IGhhbmRsZV90b19wdGQoaCk7
Cj4gKwo+ICsJLyogZnJlZSByZXNvdXJjZXMgKi8KPiArCXB0ZVRsc1RocmVhZERlc3Ryb3kocHRk
LT50bHMpOwo+ICsJZnJlZShwdGQpOwo+ICsKPiArCXJldHVybiBQVEVfT1NfT0s7Cj4gK30KPiAr
Cj4gK3B0ZV9vc1Jlc3VsdCBwdGVfb3NUaHJlYWRFeGl0QW5kRGVsZXRlKHB0ZV9vc1RocmVhZEhh
bmRsZSBoKQo+ICt7Cj4gKwlpZiAoaC0+c2NoZWQpCj4gKwkJdWtfdGhyZWFkX2tpbGwoaCk7Cj4g
KwlwdGVfb3NUaHJlYWREZWxldGUoaCk7Cj4gKwo+ICsJcmV0dXJuIFBURV9PU19PSzsKPiArfQo+
ICsKPiArdm9pZCBwdGVfb3NUaHJlYWRFeGl0KHZvaWQpCj4gK3sKPiArCXB0ZV90aHJlYWRfZGF0
YV90ICpwdGQgPSBjdXJyZW50X3B0ZCgpOwo+ICsKPiArCXB0ZC0+ZG9uZSA9IDE7Cj4gKwl1a19z
Y2hlZF90aHJlYWRfZXhpdCgpOwo+ICt9Cj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zVGhyZWFk
V2FpdEZvckVuZChwdGVfb3NUaHJlYWRIYW5kbGUgaCkKPiArewo+ICsJcHRlX3RocmVhZF9kYXRh
X3QgKnB0ZCA9IGhhbmRsZV90b19wdGQoaCk7Cj4gKwlwdGVfdGhyZWFkX2RhdGFfdCAqc2VsZl9w
dGQgPSBjdXJyZW50X3B0ZCgpOwo+ICsKPiArCXdoaWxlICgxKSB7Cj4gKwkJaWYgKHB0ZC0+ZG9u
ZSkgewo+ICsJCQl1a190aHJlYWRfd2FpdChwdGQtPnVrX3RocmVhZCk7Cj4gKwkJCXJldHVybiBQ
VEVfT1NfT0s7Cj4gKwkJfQo+ICsKPiArCQlpZiAoc2VsZl9wdGQgJiYgc2VsZl9wdGQtPmNhbmNl
bF9zZW0uY291bnQgPiAwKQo+ICsJCQlyZXR1cm4gUFRFX09TX0lOVEVSUlVQVEVEOwo+ICsKPiAr
CQllbHNlCj4gKwkJCXVrX3NjaGVkX3lpZWxkKCk7Cj4gKwl9Cj4gK30KPiArCj4gK3B0ZV9vc1Jl
c3VsdCBwdGVfb3NUaHJlYWRDYW5jZWwocHRlX29zVGhyZWFkSGFuZGxlIGgpCj4gK3sKPiArCXB0
ZV90aHJlYWRfZGF0YV90ICpwdGQgPSBoYW5kbGVfdG9fcHRkKGgpOwo+ICsKPiArCXVrX3NlbWFw
aG9yZV91cCgmcHRkLT5jYW5jZWxfc2VtKTsKPiArCj4gKwlyZXR1cm4gUFRFX09TX09LOwo+ICt9
Cj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zVGhyZWFkQ2hlY2tDYW5jZWwocHRlX29zVGhyZWFk
SGFuZGxlIGgpCj4gK3sKPiArCXB0ZV90aHJlYWRfZGF0YV90ICpwdGQgPSBoYW5kbGVfdG9fcHRk
KGgpOwo+ICsKPiArCWlmIChwdGQgJiYgcHRkLT5jYW5jZWxfc2VtLmNvdW50ID4gMCkKPiArCQly
ZXR1cm4gUFRFX09TX0lOVEVSUlVQVEVEOwo+ICsKPiArCXJldHVybiBQVEVfT1NfT0s7Cj4gK30K
PiArCj4gK3B0ZV9vc1RocmVhZEhhbmRsZSBwdGVfb3NUaHJlYWRHZXRIYW5kbGUodm9pZCkKPiAr
ewo+ICsJcmV0dXJuIHVrX3RocmVhZF9jdXJyZW50KCk7Cj4gK30KPiArCj4gK2ludCBwdGVfb3NU
aHJlYWRHZXRQcmlvcml0eShwdGVfb3NUaHJlYWRIYW5kbGUgaCkKPiArewo+ICsJcHRlX3RocmVh
ZF9kYXRhX3QgKnB0ZCA9IGhhbmRsZV90b19wdGQoaCk7Cj4gKwlwcmlvX3QgcHJpbzsKPiArCj4g
KwlpbnQgcmV0ID0gdWtfdGhyZWFkX2dldF9wcmlvKHB0ZC0+dWtfdGhyZWFkLCAmcHJpbyk7Cj4g
Kwo+ICsJcmV0dXJuIHJldCA/IFBURV9PU19HRU5FUkFMX0ZBSUxVUkUgOiBQVEVfT1NfT0s7Cj4g
K30KPiArCj4gK3B0ZV9vc1Jlc3VsdCBwdGVfb3NUaHJlYWRTZXRQcmlvcml0eShwdGVfb3NUaHJl
YWRIYW5kbGUgaCwgaW50IG5ld19wcmlvKQo+ICt7Cj4gKwlwdGVfdGhyZWFkX2RhdGFfdCAqcHRk
ID0gaGFuZGxlX3RvX3B0ZChoKTsKPiArCj4gKwlpbnQgcmV0ID0gdWtfdGhyZWFkX3NldF9wcmlv
KHB0ZC0+dWtfdGhyZWFkLCBuZXdfcHJpbyk7Cj4gKwo+ICsJcmV0dXJuIHJldCA/IFBURV9PU19H
RU5FUkFMX0ZBSUxVUkUgOiBQVEVfT1NfT0s7Cj4gK30KPiArCj4gK3ZvaWQgcHRlX29zVGhyZWFk
U2xlZXAodW5zaWduZWQgaW50IG1zZWNzKQo+ICt7Cj4gKwlfX25zZWMgbnNlYyA9IHVrYXJjaF90
aW1lX21zZWNfdG9fbnNlYyhtc2Vjcyk7Cj4gKwo+ICsJdWtfc2NoZWRfdGhyZWFkX3NsZWVwKG5z
ZWMpOwo+ICt9Cj4gKwo+ICtpbnQgcHRlX29zVGhyZWFkR2V0TWluUHJpb3JpdHkodm9pZCkKPiAr
ewo+ICsJcmV0dXJuIFVLX1RIUkVBRF9BVFRSX1BSSU9fTUlOOwo+ICt9Cj4gKwo+ICtpbnQgcHRl
X29zVGhyZWFkR2V0TWF4UHJpb3JpdHkodm9pZCkKPiArewo+ICsJcmV0dXJuIFVLX1RIUkVBRF9B
VFRSX1BSSU9fTUFYOwo+ICt9Cj4gKwo+ICtpbnQgcHRlX29zVGhyZWFkR2V0RGVmYXVsdFByaW9y
aXR5KHZvaWQpCj4gK3sKPiArCXJldHVybiBVS19USFJFQURfQVRUUl9QUklPX0RFRkFVTFQ7Cj4g
K30KPiArCj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqIE11dGV4ZXMKPiArICoK
PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zTXV0ZXhD
cmVhdGUocHRlX29zTXV0ZXhIYW5kbGUgKnBoKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfbXV0ZXggKm07
Cj4gKwo+ICsJaWYgKCFwaCkKPiArCQlyZXR1cm4gUFRFX09TX0lOVkFMSURfUEFSQU07Cj4gKwo+
ICsJbSA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHVrX211dGV4KSk7Cj4gKwlpZiAoIW0pCj4gKwkJ
cmV0dXJuIFBURV9PU19OT19SRVNPVVJDRVM7Cj4gKwo+ICsJdWtfbXV0ZXhfaW5pdChtKTsKPiAr
Cj4gKwkqcGggPSBtOwo+ICsKPiArCXJldHVybiBQVEVfT1NfT0s7Cj4gK30KPiArCj4gK3B0ZV9v
c1Jlc3VsdCBwdGVfb3NNdXRleERlbGV0ZShwdGVfb3NNdXRleEhhbmRsZSBoKQo+ICt7Cj4gKwlp
ZiAoIWgpCj4gKwkJcmV0dXJuIFBURV9PU19JTlZBTElEX1BBUkFNOwo+ICsKPiArCWZyZWUoaCk7
Cj4gKwo+ICsJcmV0dXJuIFBURV9PU19PSzsKPiArfQo+ICsKPiArcHRlX29zUmVzdWx0IHB0ZV9v
c011dGV4TG9jayhwdGVfb3NNdXRleEhhbmRsZSBoKQo+ICt7Cj4gKwlpZiAoIWgpCj4gKwkJcmV0
dXJuIFBURV9PU19JTlZBTElEX1BBUkFNOwo+ICsKPiArCXVrX211dGV4X2xvY2soaCk7Cj4gKwo+
ICsJcmV0dXJuIFBURV9PU19PSzsKPiArfQo+ICsKPiArcHRlX29zUmVzdWx0IHB0ZV9vc011dGV4
VGltZWRMb2NrKHB0ZV9vc011dGV4SGFuZGxlIGgsCj4gKwl1bnNpZ25lZCBpbnQgdGltZW91dE1z
ZWNzKQo+ICt7Cj4gKwlyZXR1cm4gUFRFX09TX0dFTkVSQUxfRkFJTFVSRTsKPiArfQo+ICsKPiAr
Cj4gK3B0ZV9vc1Jlc3VsdCBwdGVfb3NNdXRleFVubG9jayhwdGVfb3NNdXRleEhhbmRsZSBoKQo+
ICt7Cj4gKwlpZiAoIWgpCj4gKwkJcmV0dXJuIFBURV9PU19JTlZBTElEX1BBUkFNOwo+ICsKPiAr
CXVrX211dGV4X3VubG9jayhoKTsKPiArCj4gKwlyZXR1cm4gUFRFX09TX09LOwo+ICt9Cj4gKwo+
ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKiBTZW1hcGhvcmVzCj4gKyAqCj4gKyAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zU2VtYXBob3JlQ3Jl
YXRlKGludCBpbml0X3ZhbHVlLCBwdGVfb3NTZW1hcGhvcmVIYW5kbGUgKnBoKQo+ICt7Cj4gKwlz
dHJ1Y3QgdWtfc2VtYXBob3JlICpzOwo+ICsKPiArCWlmICghcGgpCj4gKwkJcmV0dXJuIFBURV9P
U19JTlZBTElEX1BBUkFNOwo+ICsKPiArCXMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB1a19zZW1h
cGhvcmUpKTsKPiArCWlmICghcykKPiArCQlyZXR1cm4gUFRFX09TX05PX1JFU09VUkNFUzsKPiAr
Cj4gKwl1a19zZW1hcGhvcmVfaW5pdChzLCBpbml0X3ZhbHVlKTsKPiArCj4gKwkqcGggPSBzOwo+
ICsKPiArCXJldHVybiBQVEVfT1NfT0s7Cj4gK30KPiArCj4gK3B0ZV9vc1Jlc3VsdCBwdGVfb3NT
ZW1hcGhvcmVEZWxldGUocHRlX29zU2VtYXBob3JlSGFuZGxlIGgpCj4gK3sKPiArCWlmICghaCkK
PiArCQlyZXR1cm4gUFRFX09TX0lOVkFMSURfUEFSQU07Cj4gKwo+ICsJZnJlZShoKTsKPiArCj4g
KwlyZXR1cm4gUFRFX09TX09LOwo+ICt9Cj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zU2VtYXBo
b3JlUG9zdChwdGVfb3NTZW1hcGhvcmVIYW5kbGUgaCwgaW50IGNvdW50KQo+ICt7Cj4gKwlpbnQg
aTsKPiArCj4gKwlpZiAoIWgpCj4gKwkJcmV0dXJuIFBURV9PU19JTlZBTElEX1BBUkFNOwo+ICsK
PiArCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQo+ICsJCXVrX3NlbWFwaG9yZV91cChoKTsK
PiArCj4gKwlyZXR1cm4gUFRFX09TX09LOwo+ICt9Cj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29z
U2VtYXBob3JlUGVuZChwdGVfb3NTZW1hcGhvcmVIYW5kbGUgaCwKPiArCXVuc2lnbmVkIGludCAq
cHRpbWVvdXRfbXNlY3MpCj4gK3sKPiArCV9fbnNlYyB0aW1lb3V0Owo+ICsKPiArCWlmICghaCkK
PiArCQlyZXR1cm4gUFRFX09TX0lOVkFMSURfUEFSQU07Cj4gKwo+ICsJaWYgKHB0aW1lb3V0X21z
ZWNzKSB7Cj4gKwkJdGltZW91dCA9IHVrYXJjaF90aW1lX21zZWNfdG9fbnNlYygqcHRpbWVvdXRf
bXNlY3MpOwo+ICsKPiArCQlpZiAodWtfc2VtYXBob3JlX2Rvd25fdG8oaCwgdGltZW91dCkgPT0g
X19OU0VDX01BWCkKPiArCQkJcmV0dXJuIFBURV9PU19USU1FT1VUOwo+ICsKPiArCX0gZWxzZQo+
ICsJCXVrX3NlbWFwaG9yZV9kb3duKGgpOwo+ICsKPiArCXJldHVybiBQVEVfT1NfT0s7Cj4gK30K
PiArCj4gK3B0ZV9vc1Jlc3VsdCBwdGVfb3NTZW1hcGhvcmVDYW5jZWxsYWJsZVBlbmQocHRlX29z
U2VtYXBob3JlSGFuZGxlIGgsCj4gKwl1bnNpZ25lZCBpbnQgKnB0aW1lb3V0X21zZWNzKQo+ICt7
Cj4gKwlwdGVfdGhyZWFkX2RhdGFfdCAqcHRkID0gY3VycmVudF9wdGQoKTsKPiArCXB0ZV9vc1Jl
c3VsdCByZXN1bHQgPSBQVEVfT1NfT0s7Cj4gKwlfX25zZWMgdGltZW91dCA9IDAsIHN0YXJ0X3Rp
bWUgPSB1a3BsYXRfbW9ub3RvbmljX2Nsb2NrKCk7Cj4gKwo+ICsJaWYgKHB0aW1lb3V0X21zZWNz
KQo+ICsJCXRpbWVvdXQgPSB1a2FyY2hfdGltZV9tc2VjX3RvX25zZWMoKnB0aW1lb3V0X21zZWNz
KTsKPiArCj4gKwl3aGlsZSAoMSkgewo+ICsJCWlmICh1a19zZW1hcGhvcmVfZG93bl90cnkoaCkp
Cj4gKwkJCS8qIHNlbWFwaG9yZSBpcyB1cCAqLwo+ICsJCQlicmVhazsKPiArCj4gKwkJZWxzZSBp
ZiAodGltZW91dCAmJgo+ICsJCQkodWtwbGF0X21vbm90b25pY19jbG9jaygpIC0gc3RhcnRfdGlt
ZSA+IHRpbWVvdXQpKSB7Cj4gKwkJCS8qIFRoZSB0aW1lb3V0IGV4cGlyZWQgKi8KPiArCQkJcmVz
dWx0ID0gUFRFX09TX1RJTUVPVVQ7Cj4gKwkJCWJyZWFrOwo+ICsKPiArCQl9IGVsc2UgaWYgKHB0
ZCAmJiBwdGQtPmNhbmNlbF9zZW0uY291bnQgPiAwKSB7Cj4gKwkJCS8qIFRoZSB0aHJlYWQgd2Fz
IGNhbmNlbGxlZCAqLwo+ICsJCQlyZXN1bHQgPSBQVEVfT1NfSU5URVJSVVBURUQ7Cj4gKwkJCWJy
ZWFrOwo+ICsKPiArCQl9IGVsc2UKPiArCQkJLyogTWF5YmUgbmV4dCB0aW1lLi4uICovCj4gKwkJ
CXVrX3NjaGVkX3lpZWxkKCk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJlc3VsdDsKPiArfQo+ICsK
PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICogQXRvbWljIE9wZXJhdGlvbnMKPiAr
ICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KPiArCj4gK3N0YXRpYyBpbnQgYXRvbWljX2FkZChp
bnQgKnB0YXJnLCBpbnQgdmFsKQo+ICt7Cj4gKwlyZXR1cm4gX19hdG9taWNfYWRkX2ZldGNoKHB0
YXJnLCB2YWwsIF9fQVRPTUlDX1NFUV9DU1QpOwo+ICt9Cj4gKwo+ICtpbnQgcHRlX29zQXRvbWlj
RXhjaGFuZ2UoaW50ICpwdGFyZywgaW50IHZhbCkKPiArewo+ICsJcmV0dXJuIHVrYXJjaF9leGNo
YW5nZV9uKHB0YXJnLCB2YWwpOwo+ICt9Cj4gKwo+ICtpbnQgcHRlX29zQXRvbWljQ29tcGFyZUV4
Y2hhbmdlKGludCAqcGRlc3QsIGludCBleGNoYW5nZSwgaW50IGNvbXApCj4gK3sKPiArCWludCBv
cmlnID0gKnBkZXN0Owo+ICsKPiArCXVrYXJjaF9jb21wYXJlX2V4Y2hhbmdlX3N5bmMocGRlc3Qs
IGNvbXAsIGV4Y2hhbmdlKTsKPiArCj4gKwlyZXR1cm4gb3JpZzsKPiArfQo+ICsKPiAraW50IHB0
ZV9vc0F0b21pY0V4Y2hhbmdlQWRkKGludCB2b2xhdGlsZSAqcGFkZGVuZCwgaW50IHZhbHVlKQo+
ICt7Cj4gKwlyZXR1cm4gdWthcmNoX2ZldGNoX2FkZChwYWRkZW5kLCB2YWx1ZSk7Cj4gK30KPiAr
Cj4gK2ludCBwdGVfb3NBdG9taWNEZWNyZW1lbnQoaW50ICpwZGVzdCkKPiArewo+ICsJcmV0dXJu
IGF0b21pY19hZGQocGRlc3QsIC0xKTsKPiArfQo+ICsKPiAraW50IHB0ZV9vc0F0b21pY0luY3Jl
bWVudChpbnQgKnBkZXN0KQo+ICt7Cj4gKwlyZXR1cm4gYXRvbWljX2FkZChwZGVzdCwgMSk7Cj4g
K30KPiArCj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqIFRocmVhZCBMb2NhbCBT
dG9yYWdlCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gKwo+ICtzdGF0aWMgdm9pZCAq
Y3VycmVudF90bHModm9pZCkKPiArewo+ICsJcHRlX3RocmVhZF9kYXRhX3QgKnB0ZCA9IGN1cnJl
bnRfcHRkKCk7Cj4gKwo+ICsJcmV0dXJuIHB0ZCA/IHB0ZC0+dGxzIDogTlVMTDsKPiArfQo+ICsK
PiArcHRlX29zUmVzdWx0IHB0ZV9vc1Rsc1NldFZhbHVlKHVuc2lnbmVkIGludCBrZXksIHZvaWQg
KnZhbHVlKQo+ICt7Cj4gKwlyZXR1cm4gcHRlVGxzU2V0VmFsdWUoY3VycmVudF90bHMoKSwga2V5
LCB2YWx1ZSk7Cj4gK30KPiArCj4gK3ZvaWQgKnB0ZV9vc1Rsc0dldFZhbHVlKHVuc2lnbmVkIGlu
dCBpbmRleCkKPiArewo+ICsJcmV0dXJuICh2b2lkICopIHB0ZVRsc0dldFZhbHVlKGN1cnJlbnRf
dGxzKCksIGluZGV4KTsKPiArfQo+ICsKPiArcHRlX29zUmVzdWx0IHB0ZV9vc1Rsc0FsbG9jKHVu
c2lnbmVkIGludCAqcGtleSkKPiArewo+ICsJcmV0dXJuIHB0ZVRsc0FsbG9jKHBrZXkpOwo+ICt9
Cj4gKwo+ICtwdGVfb3NSZXN1bHQgcHRlX29zVGxzRnJlZSh1bnNpZ25lZCBpbnQgaW5kZXgpCj4g
K3sKPiArCXJldHVybiBwdGVUbHNGcmVlKGluZGV4KTsKPiArfQo+ICsKPiArLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgo+ICsgKgo+ICsgKiBNaXNjZWxsYW5lb3VzCj4gKyAqCj4gKyAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCj4gKwo+ICtpbnQgZnRpbWUoc3RydWN0IHRpbWViICp0YikKPiArewo+ICsJX19uc2Vj
IG5vdyA9IHVrcGxhdF9tb25vdG9uaWNfY2xvY2soKTsKPiArCj4gKwlpZiAodGIpIHsKPiArCQl0
Yi0+dGltZSA9IHVrYXJjaF90aW1lX25zZWNfdG9fc2VjKG5vdyk7Cj4gKwkJdGItPm1pbGxpdG0g
PSB1a2FyY2hfdGltZV9uc2VjX3RvX21zZWModWthcmNoX3RpbWVfc3Vic2VjKG5vdykpOwo+ICsJ
fQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArjg5Xj
g63jg7zjg6rjgqLjg7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApTeXN0
ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlCkt1
cmbDvHJzdGVuLUFubGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAoMCk2
MjIxIDQzNDItMjY1CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZsb3Jp
YW4uc2NobWlkdEBuZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFubmhl
aW0sIEdlcm1hbnksIEhSQjcyODU1OAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:39:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:39: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 1hY7n8-0003sk-CT; Tue, 04 Jun 2019 11:39:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=S+GC=UD=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hY7n7-0003sf-Ai
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:39:45 +0000
X-Inumbo-ID: 70b6b3fa-86bd-11e9-9b1d-53c416a0f54d
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 70b6b3fa-86bd-11e9-9b1d-53c416a0f54d;
 Tue, 04 Jun 2019 11:39:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B1820F206D;
 Tue,  4 Jun 2019 13:39:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LVFfYe7SV3VI; Tue,  4 Jun 2019 13:39:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 84A60F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 13:39:38 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:39:38
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190603155600.3590-1-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <dd20345c-b500-b3c6-e8e7-7fa9153258b7@neclab.eu>
Date: Tue, 4 Jun 2019 13:39:24 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190603155600.3590-1-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] build: fix forgotten
 $(CONFIG_ARCH_ARM_64)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhhbmtzIQoKUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFi
LmV1PgoKT24gMDMuMDYuMTkgMTc6NTYsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gSW4gdGhlIGNv
bW1pdCAxZDg0ZjNkZDg5OGUgKCJidWlsZDogbWFrZSBhbGwgbGlua2VyIHNjcmlwdHMKPiBwcmVw
cm9jZXNzYWJsZSIpIHRoZSAnLSQoQ09ORklHX0FSQ0hfQVJNXzY0KScgaXMgZm9yZ290dGVuIGZv
cgo+IEtWTV9MRFNDUklQVF9TUkMuIFRoaXMgYnJlYWtzIGFybTY0IGJ1aWxkLgo+IAo+IFNpZ25l
ZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+
ICAgcGxhdC9rdm0vTWFrZWZpbGUudWsgfCAyICstCj4gICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl
cnRpb24oKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTWFrZWZp
bGUudWsgYi9wbGF0L2t2bS9NYWtlZmlsZS51awo+IGluZGV4IDYzMzM0OGFiLi43MWM0YzQxOSAx
MDA2NDQKPiAtLS0gYS9wbGF0L2t2bS9NYWtlZmlsZS51awo+ICsrKyBiL3BsYXQva3ZtL01ha2Vm
aWxlLnVrCj4gQEAgLTU2LDcgKzU2LDcgQEAgZW5kaWYKPiAgICMjCj4gICAjIyBBcmNoaXRlY3R1
cmUgbGlicmFyeSBkZWZpbml0aW9ucyBmb3IgYXJtNjQKPiAgICMjCj4gLUtWTV9MRFNDUklQVF9T
UkMgOj0gJChDT05GSUdfVUtfQkFTRSkvcGxhdC9rdm0vYXJtL2xpbms2NC5sZHMuUwo+ICtLVk1f
TERTQ1JJUFRfU1JDLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSA6PSAkKENPTkZJR19VS19CQVNFKS9w
bGF0L2t2bS9hcm0vbGluazY0Lmxkcy5TCj4gICBpZmVxICgkKGZpbmRzdHJpbmcgeSwkKENPTkZJ
R19LVk1fS0VSTkVMX1NFUklBTF9DT05TT0xFKSAkKENPTkZJR19LVk1fREVCVUdfU0VSSUFMX0NP
TlNPTEUpKSx5KQo+ICAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAk
KFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS9wbDAxMS5jfGNvbW1vbgo+ICAgZW5kaWYKPiAKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:39:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:39:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hY7nI-0003tW-EJ; Tue, 04 Jun 2019 11:39:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY7nG-0003tN-Lf
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:39:54 +0000
X-Inumbo-ID: 777a3f25-86bd-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 777a3f25-86bd-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:39:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 071BB10529A;
 Tue,  4 Jun 2019 13:39:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1MTv33323_Y0; Tue,  4 Jun 2019 13:39:51 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D66C61050EE;
 Tue,  4 Jun 2019 13:39:51 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:39:51
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
 <20190603151640.22507-6-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <5c8c8a0c-47e9-f63b-93e3-e1cb63f09078@neclab.eu>
Date: Tue, 4 Jun 2019 13:39:51 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603151640.22507-6-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 5/8]
 patches: Fix atomic operations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
Ck9uIDYvMy8xOSA1OjE2IFBNLCBDb3N0aW4gTHVwdSB3cm90ZToKPiBXZSB1c2UgYXRvbWljIG9w
ZXJhdGlvbnMgYXMgbWFjcm9zIGJlY2F1c2UgcHRlIHVzZXMgdGhlbSBmb3IgYm90aCBpbnQKPiBh
bmQgbG9uZyB0eXBlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1
cHVAY3MucHViLnJvPgo+IC0tLQo+ICAgcGF0Y2hlcy8wMDA3LVVzZS1hdG9taWMtb3BlcmF0aW9u
cy1hcy1tYWNyb3MucGF0Y2ggfCA2MiArKysrKysrKysrKysrKysrKysrKysKPiAgIC4uLmJ1Z2Zp
eC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoIHwgNjMgKysrKysrKysr
KysrKysrKysrKysrKwo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKQo+ICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9wZXJhdGlvbnMtYXMt
bWFjcm9zLnBhdGNoCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDA4LWJ1Z2ZpeC1G
aXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoCj4gCj4gZGlmZiAtLWdpdCBh
L3BhdGNoZXMvMDAwNy1Vc2UtYXRvbWljLW9wZXJhdGlvbnMtYXMtbWFjcm9zLnBhdGNoIGIvcGF0
Y2hlcy8wMDA3LVVzZS1hdG9taWMtb3BlcmF0aW9ucy1hcy1tYWNyb3MucGF0Y2gKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjYzMzEzYjIKPiAtLS0gL2Rldi9udWxsCj4g
KysrIGIvcGF0Y2hlcy8wMDA3LVVzZS1hdG9taWMtb3BlcmF0aW9ucy1hcy1tYWNyb3MucGF0Y2gK
PiBAQCAtMCwwICsxLDYyIEBACj4gK0Zyb20gZTBjZjZiZTJjZWM4NzU0MmJlMDFiYjEyNzQxM2Yz
MWEwNWVjMTYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiArRnJvbTogQ29zdGluIEx1cHUg
PGNvc3Rpbi5sdXBAZ21haWwuY29tPgo+ICtEYXRlOiBXZWQsIDMgQXByIDIwMTkgMTg6NTQ6MjEg
KzAzMDAKPiArU3ViamVjdDogW1BBVENIIDEvMl0gVXNlIGF0b21pYyBvcGVyYXRpb25zIGFzIG1h
Y3Jvcwo+ICsKPiArV2UgdXNlIGF0b21pYyBvcGVyYXRpb25zIGFzIG1hY3JvcyBiZWNhdXNlIHB0
ZSB1c2VzIHRoZW0gZm9yIGJvdGggaW50Cj4gK2FuZCBsb25nIHR5cGVzIChzZWUgbmV4dCBwYXRj
aCkuCj4gKwo+ICtTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPgo+ICstLS0KPiArIHB0ZV9nZW5lcmljX29zYWwuaCB8IDI4ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysKPiArIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspCj4gKwo+ICtk
aWZmIC0tZ2l0IGEvcHRlX2dlbmVyaWNfb3NhbC5oIGIvcHRlX2dlbmVyaWNfb3NhbC5oCj4gK2lu
ZGV4IGRlMWVhNWYuLjZiMWY0MzkgMTAwNjQ0Cj4gKy0tLSBhL3B0ZV9nZW5lcmljX29zYWwuaAo+
ICsrKysgYi9wdGVfZ2VuZXJpY19vc2FsLmgKPiArQEAgLTM3OCw2ICszNzgsNyBAQCBwdGVfb3NS
ZXN1bHQgcHRlX29zVGxzRnJlZSh1bnNpZ25lZCBpbnQga2V5KTsKPiArIC8vQH0KPiArCj4gKyAv
KiogQG5hbWUgQXRvbWljIG9wZXJhdGlvbnMgKi8KPiArKyNpZiAwCj4gKyAvL0B7Cj4gKwo+ICsg
LyoqCj4gK0BAIC00NTUsNiArNDU2LDMzIEBAIGludCBwdGVfb3NBdG9taWNEZWNyZW1lbnQoaW50
ICpwZGVzdCk7Cj4gKyAgKiByZXR1cm4gb3JpZ1ZhbDsKPiArICAqLwo+ICsgaW50IHB0ZV9vc0F0
b21pY0luY3JlbWVudChpbnQgKnBkZXN0KTsKPiArKyNlbHNlCj4gKysKPiArKyNpbmNsdWRlIDx1
ay9hcmNoL2F0b21pYy5oPgo+ICsrCj4gKysjZGVmaW5lIHB0ZV9vc0F0b21pY0V4Y2hhbmdlKHB0
YXJnLCB2YWwpIFwKPiArKwl1a2FyY2hfZXhjaGFuZ2VfbihwdGFyZywgdmFsKQo+ICsrCj4gKysj
ZGVmaW5lIHB0ZV9vc0F0b21pY0NvbXBhcmVFeGNoYW5nZShwZGVzdCwgZXhjaGFuZ2UsIGNvbXAp
IFwKPiArKyh7IFwKPiArKwlfX3R5cGVvZl9fKCpwZGVzdCkgX19vcmlnID0gKnBkZXN0OyBcCj4g
KysJdWthcmNoX2NvbXBhcmVfZXhjaGFuZ2Vfc3luYyhwZGVzdCwgY29tcCwgZXhjaGFuZ2UpOyBc
Cj4gKysJX19vcmlnOyBcCj4gKyt9KQo+ICsrCj4gKysjZGVmaW5lIHB0ZV9vc0F0b21pY0V4Y2hh
bmdlQWRkKHBhZGRlbmQsIHZhbHVlKSBcCj4gKysJdWthcmNoX2ZldGNoX2FkZChwYWRkZW5kLCB2
YWx1ZSkKPiArKwo+ICsrI2RlZmluZSBhdG9taWNfYWRkKHB0YXJnLCB2YWwpIFwKPiArKwlfX2F0
b21pY19hZGRfZmV0Y2gocHRhcmcsIHZhbCwgX19BVE9NSUNfU0VRX0NTVCkKPiArKwo+ICsrI2Rl
ZmluZSBwdGVfb3NBdG9taWNEZWNyZW1lbnQocGRlc3QpIFwKPiArKwlhdG9taWNfYWRkKHBkZXN0
LCAtMSkKPiArKwo+ICsrI2RlZmluZSBwdGVfb3NBdG9taWNJbmNyZW1lbnQocGRlc3QpIFwKPiAr
KwlhdG9taWNfYWRkKHBkZXN0LCAxKQo+ICsrCj4gKysjZW5kaWYKPiArIC8vQH0KPiArCj4gKyBz
dHJ1Y3QgdGltZWI7Cj4gKy0tCj4gKzIuMTEuMAo+ICsKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8w
MDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNoIGIvcGF0
Y2hlcy8wMDA4LWJ1Z2ZpeC1GaXgtYXRvbWljLW9wZXJhdGlvbnMtb24tc2VtYXBob3JlLnBhdGNo
Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi42Y2EzMzlkCj4gLS0tIC9k
ZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvMDAwOC1idWdmaXgtRml4LWF0b21pYy1vcGVyYXRpb25z
LW9uLXNlbWFwaG9yZS5wYXRjaAo+IEBAIC0wLDAgKzEsNjMgQEAKPiArRnJvbSAwOWEyMTE4N2Y3
ZTQyNjE0N2Q0ZDVmYjkxNDUxZWE1NWNmN2FjMjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+
ICtGcm9tOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cEBnbWFpbC5jb20+Cj4gK0RhdGU6IFdlZCwg
MyBBcHIgMjAxOSAxODo1NjozMSArMDMwMAo+ICtTdWJqZWN0OiBbUEFUQ0ggMi8yXSBidWdmaXgg
Rml4IGF0b21pYyBvcGVyYXRpb25zIG9uIHNlbWFwaG9yZQo+ICsKPiArRmllbGQgJ3NlbWFwaG9y
ZScgb2Ygc3RydWN0IHB0aHJlYWRfb25jZV90XyBpcyBvZiB0eXBlICd2b2lkIConLgo+ICtUaGVy
ZWZvcmUgYXRvbWljIG9wZXJhdGlvbnMgc2hvdWxkIHVzZSBsb25nIHR5cGUgaW5zdGVhZCBvZiBp
bnQuCj4gKwo+ICtTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPgo+ICstLS0KPiArIHB0aHJlYWRfb25jZS5jIHwgMTIgKysrKysrLS0tLS0tCj4gKyAxIGZp
bGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ICsKPiArZGlmZiAt
LWdpdCBhL3B0aHJlYWRfb25jZS5jIGIvcHRocmVhZF9vbmNlLmMKPiAraW5kZXggYTgxNjZmNS4u
MmI2MDUwZiAxMDA2NDQKPiArLS0tIGEvcHRocmVhZF9vbmNlLmMKPiArKysrIGIvcHRocmVhZF9v
bmNlLmMKPiArQEAgLTU1LDcgKzU1LDcgQEAgcHRlX29uY2VfaW5pdF9yb3V0aW5lX2NsZWFudXAo
dm9pZCAqIGFyZykKPiArCj4gKyAgICh2b2lkKSBQVEVfQVRPTUlDX0VYQ0hBTkdFKCZvbmNlX2Nv
bnRyb2wtPnN0YXRlLFBURV9PTkNFX0lOSVQpOwo+ICsKPiArLSAgaWYgKFBURV9BVE9NSUNfRVhD
SEFOR0VfQUREKChpbnQqKSZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVu
Y2UgKi8KPiArKyAgaWYgKFBURV9BVE9NSUNfRVhDSEFOR0VfQUREKChsb25nKikmb25jZV9jb250
cm9sLT5zZW1hcGhvcmUsIDBMKSkgLyogTUJSIGZlbmNlICovCj4gKyAgICAgewo+ICsgICAgICAg
cHRlX29zU2VtYXBob3JlUG9zdCgocHRlX29zU2VtYXBob3JlSGFuZGxlKSBvbmNlX2NvbnRyb2wt
PnNlbWFwaG9yZSwgMSk7Cj4gKyAgICAgfQo+ICtAQCAtMTM0LDcgKzEzNCw3IEBAIHB0aHJlYWRf
b25jZSAocHRocmVhZF9vbmNlX3QgKiBvbmNlX2NvbnRyb2wsIHZvaWQgKCppbml0X3JvdXRpbmUp
ICh2b2lkKSkKPiArICAgICAgICAgICAgKiB3ZSBkaWRuJ3QgY3JlYXRlIHRoZSBzZW1hcGhvcmUu
Cj4gKyAgICAgICAgICAgICogaXQgaXMgb25seSB0aGVyZSBpZiB0aGVyZSBpcyBzb21lb25lIHdh
aXRpbmcuCj4gKyAgICAgICAgICAgICovCj4gKy0gICAgICAgICAgaWYgKFBURV9BVE9NSUNfRVhD
SEFOR0VfQUREKChpbnQqKSZvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVu
Y2UgKi8KPiArKyAgICAgICAgICBpZiAoUFRFX0FUT01JQ19FWENIQU5HRV9BREQoKGxvbmcqKSZv
bmNlX2NvbnRyb2wtPnNlbWFwaG9yZSwgMEwpKSAvKiBNQlIgZmVuY2UgKi8KPiArICAgICAgICAg
ICAgIHsKPiArICAgICAgICAgICAgICAgcHRlX29zU2VtYXBob3JlUG9zdCgocHRlX29zU2VtYXBo
b3JlSGFuZGxlKSBvbmNlX2NvbnRyb2wtPnNlbWFwaG9yZSxvbmNlX2NvbnRyb2wtPm51bVNlbWFw
aG9yZVVzZXJzKTsKPiArICAgICAgICAgICAgIH0KPiArQEAgLTE0MywxMiArMTQzLDEyIEBAIHB0
aHJlYWRfb25jZSAocHRocmVhZF9vbmNlX3QgKiBvbmNlX2NvbnRyb2wsIHZvaWQgKCppbml0X3Jv
dXRpbmUpICh2b2lkKSkKPiArICAgICAgICAgewo+ICsgICAgICAgICAgIFBURV9BVE9NSUNfSU5D
UkVNRU5UKCZvbmNlX2NvbnRyb2wtPm51bVNlbWFwaG9yZVVzZXJzKTsKPiArCj4gKy0gICAgICAg
ICAgaWYgKCFQVEVfQVRPTUlDX0VYQ0hBTkdFX0FERCgoaW50Kikmb25jZV9jb250cm9sLT5zZW1h
cGhvcmUsIDBMKSkgLyogTUJSIGZlbmNlICovCj4gKysgICAgICAgICAgaWYgKCFQVEVfQVRPTUlD
X0VYQ0hBTkdFX0FERCgobG9uZyopJm9uY2VfY29udHJvbC0+c2VtYXBob3JlLCAwTCkpIC8qIE1C
UiBmZW5jZSAqLwo+ICsgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICBwdGVfb3NTZW1h
cGhvcmVDcmVhdGUoMCwgKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSopICZzZW1hKTsKPiArCj4gKy0g
ICAgICAgICAgICAgIGlmIChQVEVfQVRPTUlDX0NPTVBBUkVfRVhDSEFOR0UoKGludCAqKSAmb25j
ZV9jb250cm9sLT5zZW1hcGhvcmUsCj4gKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGludCkgc2VtYSwKPiArKyAgICAgICAgICAgICAgaWYgKFBURV9BVE9N
SUNfQ09NUEFSRV9FWENIQU5HRSgobG9uZyAqKSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsCj4g
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIHNl
bWEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkp
Cj4gKyAgICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgcHRlX29zU2VtYXBo
b3JlRGVsZXRlKChwdGVfb3NTZW1hcGhvcmVIYW5kbGUpc2VtYSk7Cj4gK0BAIC0xNjgsNyArMTY4
LDcgQEAgcHRocmVhZF9vbmNlIChwdGhyZWFkX29uY2VfdCAqIG9uY2VfY29udHJvbCwgdm9pZCAo
KmluaXRfcm91dGluZSkgKHZvaWQpKQo+ICsgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAg
ICAvKiB3ZSB3ZXJlIGxhc3QgKi8KPiArICAgICAgICAgICAgICAgaWYgKChzZW1hID0KPiArLSAg
ICAgICAgICAgICAgICAgICAgIChwdGVfb3NTZW1hcGhvcmVIYW5kbGUpIFBURV9BVE9NSUNfRVhD
SEFOR0UoKGludCAqKSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsMCkpKQo+ICsrICAgICAgICAg
ICAgICAgICAgICAgKHB0ZV9vc1NlbWFwaG9yZUhhbmRsZSkgUFRFX0FUT01JQ19FWENIQU5HRSgo
bG9uZyAqKSAmb25jZV9jb250cm9sLT5zZW1hcGhvcmUsMCkpKQo+ICsgICAgICAgICAgICAgICAg
IHsKPiArICAgICAgICAgICAgICAgICAgIHB0ZV9vc1NlbWFwaG9yZURlbGV0ZShzZW1hKTsKPiAr
ICAgICAgICAgICAgICAgICB9Cj4gKy0tCj4gKzIuMTEuMAo+ICsKPiAKCi0tIApEci4gRmxvcmlh
biBTY2htaWR0CuODleODreODvOODquOCouODs+ODu+OCt+ODpeODn+ODg+ODiApSZXNlYXJjaCBT
Y2llbnRpc3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVhcm5pbmcgR3JvdXAKTkVDIExhYm9yYXRv
cmllcyBFdXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2LCBELTY5MTE1IEhlaWRlbGJlcmcKVGVs
LiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0xNTUK
ZS1tYWlsOiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVnaXN0ZXJlZCBhdCBBbXRz
Z2VyaWNodCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4CgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:40:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:40: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 1hY7ng-0004Tx-Gg; Tue, 04 Jun 2019 11:40:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY7ne-0004TC-Oe
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:40:18 +0000
X-Inumbo-ID: 864bb4d2-86bd-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 864bb4d2-86bd-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:40:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E97A710529A;
 Tue,  4 Jun 2019 13:40:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rWFuzRg2BjjG; Tue,  4 Jun 2019 13:40:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C6B491050EE;
 Tue,  4 Jun 2019 13:40:16 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:40:16
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
 <20190603151640.22507-7-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <2844cee3-4eb3-3cc9-3af9-d9d0ea5ab594@neclab.eu>
Date: Tue, 4 Jun 2019 13:40:16 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603151640.22507-7-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 6/8] Disable
 atomic functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
Ck9uIDYvMy8xOSA1OjE2IFBNLCBDb3N0aW4gTHVwdSB3cm90ZToKPiBXZSBkaXNhYmxlIHRoZSBh
dG9taWMgZnVuY3Rpb24gZ2l2ZW4gdGhhdCB3ZSBhcmUgdXNpbmcgdGhlbSBhcyBtYWNyb3MuCj4g
Cj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPiAt
LS0KPiAgIHB0ZV9vc2FsLmMgfCAzICsrKwo+ICAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9u
cygrKQo+IAo+IGRpZmYgLS1naXQgYS9wdGVfb3NhbC5jIGIvcHRlX29zYWwuYwo+IGluZGV4IDVj
YmMwYTIuLjIzZGNkMDEgMTAwNjQ0Cj4gLS0tIGEvcHRlX29zYWwuYwo+ICsrKyBiL3B0ZV9vc2Fs
LmMKPiBAQCAtNDUwLDYgKzQ1MCw4IEBAIHB0ZV9vc1Jlc3VsdCBwdGVfb3NTZW1hcGhvcmVDYW5j
ZWxsYWJsZVBlbmQocHRlX29zU2VtYXBob3JlSGFuZGxlIGgsCj4gICAJcmV0dXJuIHJlc3VsdDsK
PiAgIH0KPiAgIAo+ICsjaWYgMAo+ICsvKiBXZSB1c2UgbWFjcm9zIGluc3RlYWQgKi8KPiAgIC8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCj4gICAgKgo+ICAgICogQXRvbWljIE9wZXJhdGlvbnMKPiBAQCAt
NDg5LDYgKzQ5MSw3IEBAIGludCBwdGVfb3NBdG9taWNJbmNyZW1lbnQoaW50ICpwZGVzdCkKPiAg
IHsKPiAgIAlyZXR1cm4gYXRvbWljX2FkZChwZGVzdCwgMSk7Cj4gICB9Cj4gKyNlbmRpZgo+ICAg
Cj4gICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgo+ICAgICoKPiAKCi0tIApEci4gRmxvcmlhbiBTY2ht
aWR0CuODleODreODvOODquOCouODs+ODu+OCt+ODpeODn+ODg+ODiApSZXNlYXJjaCBTY2llbnRp
c3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVhcm5pbmcgR3JvdXAKTkVDIExhYm9yYXRvcmllcyBF
dXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2LCBELTY5MTE1IEhlaWRlbGJlcmcKVGVsLiAgICAg
KzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0xNTUKZS1tYWls
OiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVnaXN0ZXJlZCBhdCBBbXRzZ2VyaWNo
dCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4CgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:40:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:40: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 1hY7nu-0004Uk-Im; Tue, 04 Jun 2019 11:40:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=S+GC=UD=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hY7nt-0004Uf-EQ
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:40:33 +0000
X-Inumbo-ID: 8e9c2172-86bd-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8e9c2172-86bd-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:40:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D8A66F206D;
 Tue,  4 Jun 2019 13:40:30 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DiSydMKXC_xn; Tue,  4 Jun 2019 13:40:30 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A79D2F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 13:40:28 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:40:28
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604092602.25675-1-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <0c53bef3-d3e5-3789-32ca-8af684db4b43@neclab.eu>
Date: Tue, 4 Jun 2019 13:40:28 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604092602.25675-1-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: enable _BSD_SOURCE
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDQuMDYuMTkgMTE6MjYsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gLi4gd2hlcmUgbmVlZGVkIHRv
IGNvbXBseSB3aXRoIG11c2wKPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJp
LnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi92ZnNjb3JlL2RlbnRyeS5jICAgICAg
ICAgICAgICAgIHwgMiArKwo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50Lmgg
fCAyICsrCj4gICBsaWIvdmZzY29yZS9sb29rdXAuYyAgICAgICAgICAgICAgICB8IDIgKysKPiAg
IGxpYi92ZnNjb3JlL21vdW50LmMgICAgICAgICAgICAgICAgIHwgMiArKwo+ICAgbGliL3Zmc2Nv
cmUvdGFzay5jICAgICAgICAgICAgICAgICAgfCAxICsKPiAgIGxpYi92ZnNjb3JlL3Zmcy5oICAg
ICAgICAgICAgICAgICAgIHwgMSArCj4gICBsaWIvdmZzY29yZS92bm9kZS5jICAgICAgICAgICAg
ICAgICB8IDEgKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCj4gCj4gZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKPiBp
bmRleCBkYzlkYjM1Mi4uNzZmN2E2YjggMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZGVudHJ5
LmMKPiArKysgYi9saWIvdmZzY29yZS9kZW50cnkuYwo+IEBAIC0zMCw2ICszMCw4IEBACj4gICAg
KiBTVUNIIERBTUFHRS4KPiAgICAqLwo+ICAgCj4gKyNkZWZpbmUgX0JTRF9TT1VSQ0UKPiArCj4g
ICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gICAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gICAKPiBkaWZm
IC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL21vdW50LmggYi9saWIvdmZzY29y
ZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+IGluZGV4IGM3MmY1MzhiLi5iODVlMjExZSAxMDA2
NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvbW91bnQuaAo+ICsrKyBiL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9tb3VudC5oCj4gQEAgLTMyLDYgKzMyLDggQEAKPiAg
ICNpZm5kZWYgX1NZU19NT1VOVF9IXwo+ICAgI2RlZmluZSBfU1lTX01PVU5UX0hfCj4gICAKPiAr
I2RlZmluZSBfQlNEX1NPVVJDRQo+ICsKPiAgICNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Cj4gICAj
aW5jbHVkZSA8bGltaXRzLmg+Cj4gICAjaW5jbHVkZSA8dWsvbGlzdC5oPgo+IGRpZmYgLS1naXQg
YS9saWIvdmZzY29yZS9sb29rdXAuYyBiL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gaW5kZXggMWUy
YzQwMDUuLjUzZTUwOGQ4IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2xvb2t1cC5jCj4gKysr
IGIvbGliL3Zmc2NvcmUvbG9va3VwLmMKPiBAQCAtMzAsNiArMzAsOCBAQAo+ICAgICogU1VDSCBE
QU1BR0UuCj4gICAgKi8KPiAgIAo+ICsjZGVmaW5lIF9CU0RfU09VUkNFCj4gKwo+ICAgI2luY2x1
ZGUgPHVuaXN0ZC5oPgo+ICAgI2luY2x1ZGUgPHN0cmluZy5oPgo+ICAgI2luY2x1ZGUgPGVycm5v
Lmg+Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21vdW50LmMgYi9saWIvdmZzY29yZS9tb3Vu
dC5jCj4gaW5kZXggNWQxYWY1MDMuLjI2MjlkMTMyIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3Jl
L21vdW50LmMKPiArKysgYi9saWIvdmZzY29yZS9tb3VudC5jCj4gQEAgLTM0LDYgKzM0LDggQEAK
PiAgICAqIHZmc19tb3VudC5jIC0gbW91bnQgb3BlcmF0aW9ucwo+ICAgICovCj4gICAKPiArI2Rl
ZmluZSBfQlNEX1NPVVJDRQo+ICsKPiAgICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KPiAgICNpbmNs
dWRlIDxsaW1pdHMuaD4KPiAgICNpbmNsdWRlIDx1bmlzdGQuaD4KPiBkaWZmIC0tZ2l0IGEvbGli
L3Zmc2NvcmUvdGFzay5jIGIvbGliL3Zmc2NvcmUvdGFzay5jCj4gaW5kZXggZTY1OGJkYWEuLjIw
YzQ3NGM0IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3Rhc2suYwo+ICsrKyBiL2xpYi92ZnNj
b3JlL3Rhc2suYwo+IEBAIC0zNCw2ICszNCw3IEBACj4gICAgKiB2ZnNfdGFzay5jIC0gUm91dGlu
ZXMgdG8gbWFuYWdlIHRoZSBwZXIgdGFzayBkYXRhLgo+ICAgICovCj4gICAKPiArI2RlZmluZSBf
QlNEX1NPVVJDRQo+ICAgCj4gICAjaW5jbHVkZSA8bGltaXRzLmg+Cj4gICAjaW5jbHVkZSA8c3Rk
bGliLmg+Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZz
LmgKPiBpbmRleCA4NWU4MTNkNC4uZmQ2MGRlYzcgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUv
dmZzLmgKPiArKysgYi9saWIvdmZzY29yZS92ZnMuaAo+IEBAIC0zOSw2ICszOSw3IEBACj4gICAj
aW5jbHVkZSA8bGltaXRzLmg+Cj4gICAjaW5jbHVkZSA8ZmNudGwuaD4KPiAgICNpbmNsdWRlIDxz
eXMvc3RhdGZzLmg+Cj4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ICAgCj4gICAvKgo+ICAgICog
VHVuYWJsZSBwYXJhbWV0ZXJzCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zub2RlLmMgYi9s
aWIvdmZzY29yZS92bm9kZS5jCj4gaW5kZXggYjkwMDhhYzIuLjUxYmQ3NTY0IDEwMDY0NAo+IC0t
LSBhL2xpYi92ZnNjb3JlL3Zub2RlLmMKPiArKysgYi9saWIvdmZzY29yZS92bm9kZS5jCj4gQEAg
LTMzLDYgKzMzLDcgQEAKPiAgIC8qCj4gICAgKiB2ZnNfdm5vZGUuYyAtIHZub2RlIHNlcnZpY2UK
PiAgICAqLwo+ICsjZGVmaW5lIF9CU0RfU09VUkNFCj4gICAKPiAgICNpbmNsdWRlIDxsaW1pdHMu
aD4KPiAgICNpbmNsdWRlIDx1bmlzdGQuaD4KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:44:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:44: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 1hY7rb-0004Zc-7E; Tue, 04 Jun 2019 11:44:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=S+GC=UD=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hY7ra-0004ZM-Nd
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:44:22 +0000
X-Inumbo-ID: 17206312-86be-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 17206312-86be-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:44:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D8D7FF206D;
 Tue,  4 Jun 2019 13:44:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id wD58wMxft8OK; Tue,  4 Jun 2019 13:44:19 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AFB04F206A
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 13:44:17 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 13:44:17
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604092658.25801-1-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <c20fbe2d-05a6-ea56-f434-2f93d386b645@neclab.eu>
Date: Tue, 4 Jun 2019 13:44:17 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604092658.25801-1-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: remove NO_SYS
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDQuMDYuMTkgMTE6MjYsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gTm90IHVzZWQKPiAKPiBTaWdu
ZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0K
PiAgIGxpYi92ZnNjb3JlL21haW4uYyB8IDggLS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCA4
IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIv
dmZzY29yZS9tYWluLmMKPiBpbmRleCA2YTJhNjA0ZC4uZGZkNDNlYjMgMTAwNjQ0Cj4gLS0tIGEv
bGliL3Zmc2NvcmUvbWFpbi5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gQEAgLTc3LDEy
ICs3Nyw2IEBAIHN0YXRpYyBtb2RlX3QgZ2xvYmFsX3VtYXNrID0gU19JV0dSUCB8IFNfSVdPVEg7
Cj4gICB9IHdoaWxlICgwKQo+ICAgI2RlZmluZSBXQVJOX1NUVUJCRUQoKSBET19PTkNFKHVrX3By
X3dhcm4oIiVzKCkgc3R1YmJlZFxuIiwgX19mdW5jX18pKQo+ICAgCj4gLSNkZWZpbmUgTk9fU1lT
KGRlY2wpIGRlY2wgewkJCQlcCj4gLSAgICBET19PTkNFKHVrX3ByX3dhcm4oIiVzIG5vdCBpbXBs
ZW1lbnRlZFxuIiwgX19mdW5jX18pKTsJXAo+IC0gICAgZXJybm8gPSBFTk9TWVM7CQkJCQlcCj4g
LSAgICByZXR1cm4gLTE7CQkJCQkJXAo+IC19Cj4gLQo+ICAgc3RhdGljIGlubGluZSBpbnQgbGli
Y19lcnJvcihpbnQgZXJyKQo+ICAgewo+ICAgICAgIGVycm5vID0gZXJyOwo+IEBAIC0yMDI1LDgg
KzIwMTksNiBAQCBzc2l6ZV90IHNlbmRmaWxlKGludCBvdXRfZmQsIGludCBpbl9mZCwgb2ZmX3Qg
Kl9vZmZzZXQsIHNpemVfdCBjb3VudCkKPiAgIExGUzY0KHNlbmRmaWxlKTsKPiAgICNlbmRpZgo+
ICAgCj4gLU5PX1NZUyhpbnQgZmNobW9kYXQoaW50IGRpcmZkIF9fdW51c2VkLCBjb25zdCBjaGFy
ICpwYXRobmFtZSBfX3VudXNlZCwgbW9kZV90IG1vZGUgX191bnVzZWQsIGludCBmbGFncyBfX3Vu
dXNlZCkpOwo+IC0KPiAgIG1vZGVfdCB1bWFzayhtb2RlX3QgbmV3bWFzaykKPiAgIHsKPiAgIAly
ZXR1cm4gdWthcmNoX2V4Y2hhbmdlX24oJmdsb2JhbF91bWFzaywgbmV3bWFzayk7Cj4gCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:46:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:46: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 1hY7tY-0004h1-GK; Tue, 04 Jun 2019 11:46:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XtBW=UD=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hY7dn-0003R3-VU
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:30:08 +0000
X-Inumbo-ID: 17ab8d0b-86bc-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.85]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 17ab8d0b-86bc-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:30:03 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4921.eurprd01.prod.exchangelabs.com (20.177.210.140) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Tue, 4 Jun
 2019 11:29:49 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Tue, 4 Jun 2019
 11:29:49 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: Felipe Huici <Felipe.Huici@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 2/2] Initial port of Intel
 Intrinsics on Unikraft
Thread-Index: AQHVGZCY1DEOTxyknUqZKX5khcxZkKaLUIyAgAAN8YA=
Date: Tue, 4 Jun 2019 11:29:48 +0000
Message-ID: <9f99d8d3-d0af-0670-a526-6727e7bbab01@stud.acs.upb.ro>
References: <20190602221434.17542-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190602221434.17542-3-vlad_andrei.badoiu@stud.acs.upb.ro>
 <D9D9EC36-AA42-426A-9346-1D7A80B28771@neclab.eu>
In-Reply-To: <D9D9EC36-AA42-426A-9346-1D7A80B28771@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0172.eurprd07.prod.outlook.com
 (2603:10a6:802:3e::20) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9ca08cba-b4b4-4570-81ab-08d6e8dff37b
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4921; 
x-ms-traffictypediagnostic: PR1PR01MB4921:
x-microsoft-antispam-prvs: <PR1PR01MB49219618BC31867D9BE6F275A6150@PR1PR01MB4921.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0058ABBBC7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(1496009)(366004)(376002)(346002)(136003)(39850400004)(396003)(189003)(199004)(51914003)(25786009)(26005)(4326008)(8936002)(6506007)(386003)(66066001)(102836004)(53546011)(74482002)(52116002)(53946003)(31686004)(99286004)(76176011)(66556008)(64756008)(110136005)(14454004)(316002)(786003)(6512007)(66476007)(30864003)(73956011)(86362001)(66946007)(66446008)(66574012)(53936002)(81166006)(81156014)(8676002)(71190400001)(71200400001)(256004)(14444005)(31696002)(478600001)(2501003)(85182001)(476003)(2616005)(446003)(6486002)(305945005)(11346002)(486006)(5660300002)(7736002)(186003)(6116002)(85202003)(68736007)(3846002)(229853002)(2906002)(6246003)(45080400002)(6436002)(579004)(559001)(569006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4921;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 4cDt+SmcBEkZlENjLvTeNGlShEwxW5SxYEqKjjDE+CKAGJfT2nSo7mwHk21VPiwDV9sVv320OILCuk3mFEpF9Sy9hW82QSBoUFHqggCSr/GXbQGQaxnXcRke92/kIVgLN2WVUyY6a0dJU8afHqDgIAB991mgv/wJnMhhsdu6JeFzZgm2OeDj/mWUt6T7HqIKpY3ST1iPgAx0JJiBMhhsxQHxWaEmS6jLyfuTgFEMHRhcP4ZvHzuTWfnkHIHiLPXLmyaoxOl0X24N6enYuIFaUNwCyc7OO42ZyHX8EkWm9uZCPhCDYp//eKy7Kgp64BgPnWDH3nlwS/y9DzLs59wFaILh5O0h3UCg7PJ+oW8mPgRttN6X26XkE7Wohxdd5jtpeCLar9AoW7u84WrN4dp2DjT9kpWg2M/WkciB1er0Lek=
Content-ID: <4390900BB9B3F246AB6B22791665C257@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 9ca08cba-b4b4-4570-81ab-08d6e8dff37b
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2019 11:29:48.6468 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4921
X-Mailman-Approved-At: Tue, 04 Jun 2019 11:46:23 +0000
Subject: Re: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH 2/2] Initial
 port of Intel Intrinsics 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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGV5IEZlbGlwZSwNCg0KVGhhbmtzIGZvciBmaW5kaW5nIHRoaXMsIEknbGwgc2VuZCBhIHYyIG9m
IHRoaXMgcGF0Y2ggd2l0aCBuZWNlc3NhcnkgDQpjaGFuZ2VzLg0KDQpPbiA2LzQvMTkgMTozOSBQ
TSwgRmVsaXBlIEh1aWNpIHdyb3RlOg0KPiBIaSBWbGFkLA0KPg0KPiBUaGFua3MgZm9yIHRoZSBw
YXRjaC4gSSBub3RpY2VkIHRoYXQgb24gb2xkZXIgZ2NjIHZlcnNpb25zIChlLmcuLCB2NikgdGhl
IGJ1aWxkIGJyZWFrcywgcGVyaGFwcyB5b3UgY2FuIHNlbmQgYW4gdXBkYXRlZCBwYXRjaCAoYXMg
ZGlzY3Vzc2VkIG9mZmxpbmUpIHRvIGZpeCB0aGlzPw0KPg0KPiBUaGFua3MsDQo+DQo+IC0tIEZl
bGlwZQ0KPg0KPiDvu79PbiAwMy4wNi4xOSwgMDA6MTUsICJWbGFkLUFuZHJlaSBCxIJET0lVICg3
ODY5MikiIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPiB3cm90ZToNCj4NCj4g
ICAgICBUaGlzIGlzIG91ciBpbml0aWFsIHBvcnQgb2YgaW50ZWwgaW50cmluc2ljcyB0byBVbmlr
cmFmdCBhcyBhbiBleHRlcm5hbCBsaWJyYXJ5Lg0KPiAgICAgIFRoaXMgcmVsZWFzZSBpcyBiYXNl
ZCBvbiB0aGUgTExWTSBoZWFkZXJzIHdoaWNoIHdlcmUgYWRhcHRlZCB0byB3b3JrIG9uIFVuaWty
YWZ0DQo+ICAgICAgd2l0aCBHQ0MuDQo+ICAgICAgDQo+ICAgICAgU2lnbmVkLW9mZi1ieTogVmxh
ZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KPiAg
ICAgIC0tLQ0KPiAgICAgICBDT0RJTkdfU1RZTEUubWQgICAgICAgIHwgICAgNCArDQo+ICAgICAg
IENPTlRSSUJVVElORy5tZCAgICAgICAgfCAgICA0ICsNCj4gICAgICAgQ29uZmlnLnVrICAgICAg
ICAgICAgICB8ICAgMjUgKw0KPiAgICAgICBNQUlOVEFJTkVSUy5tZCAgICAgICAgIHwgICAxMSAr
DQo+ICAgICAgIE1ha2VmaWxlLnVrICAgICAgICAgICAgfCAgIDY5ICsNCj4gICAgICAgUkVBRE1F
Lm1kICAgICAgICAgICAgICB8ICAgIDUgKw0KPiAgICAgICBleHBvcnRzeW1zLnVrICAgICAgICAg
IHwgICAgMSArDQo+ICAgICAgIGluY2x1ZGUvYXZ4aW50cmluLmggICAgfCA1MTIxICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICAgICAgaW5jbHVkZS9lbW1pbnRy
aW4uaCAgICB8IDUwMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+
ICAgICAgIGluY2x1ZGUvaW1taW50cmluLmggICAgfCAgIDc1ICsNCj4gICAgICAgaW5jbHVkZS9t
bV9tYWxsb2MuaCAgICB8ICAgNzUgKw0KPiAgICAgICBpbmNsdWRlL21taW50cmluLmggICAgIHwg
MTU5OCArKysrKysrKysrKysrDQo+ICAgICAgIGluY2x1ZGUvbm1taW50cmluLmggICAgfCAgIDMw
ICsNCj4gICAgICAgaW5jbHVkZS9wbW1pbnRyaW4uaCAgICB8ICAzMjEgKysrDQo+ICAgICAgIGlu
Y2x1ZGUvcG9wY250aW50cmluLmggfCAgMTAyICsNCj4gICAgICAgaW5jbHVkZS9zbW1pbnRyaW4u
aCAgICB8IDI1MDQgKysrKysrKysrKysrKysrKysrKysNCj4gICAgICAgaW5jbHVkZS90bW1pbnRy
aW4uaCAgICB8ICA3OTAgKysrKysrKw0KPiAgICAgICBpbmNsdWRlL3htbWludHJpbi5oICAgIHwg
MzEwMSArKysrKysrKysrKysrKysrKysrKysrKysNCj4gICAgICAgMTggZmlsZXMgY2hhbmdlZCwg
MTg4NTcgaW5zZXJ0aW9ucygrKQ0KPiAgICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NU
WUxFLm1kDQo+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQNCj4gICAg
ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0KPiAgICAgICBjcmVhdGUgbW9kZSAxMDA2
NDQgTUFJTlRBSU5FUlMubWQNCj4gICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVr
DQo+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQNCj4gICAgICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsNCj4gICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUvYXZ4aW50cmluLmgNCj4gICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZW1taW50
cmluLmgNCj4gICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvaW1taW50cmluLmgNCj4g
ICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbW1fbWFsbG9jLmgNCj4gICAgICAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbW1pbnRyaW4uaA0KPiAgICAgICBjcmVhdGUgbW9kZSAx
MDA2NDQgaW5jbHVkZS9ubW1pbnRyaW4uaA0KPiAgICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j
bHVkZS9wbW1pbnRyaW4uaA0KPiAgICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9wb3Bj
bnRpbnRyaW4uaA0KPiAgICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zbW1pbnRyaW4u
aA0KPiAgICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS90bW1pbnRyaW4uaA0KPiAgICAg
ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94bW1pbnRyaW4uaA0KPiAgICAgIA0KPiAgICAg
IGRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCj4gICAgICBu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiAgICAgIGluZGV4IDAwMDAwMDAuLjU3MzAwNDENCj4gICAg
ICAtLS0gL2Rldi9udWxsDQo+ICAgICAgKysrIGIvQ09ESU5HX1NUWUxFLm1kDQo+ICAgICAgQEAg
LTAsMCArMSw0IEBADQo+ICAgICAgK0NvZGluZyBTdHlsZQ0KPiAgICAgICs9PT09PT09PT09PT0N
Cj4gICAgICArDQo+ICAgICAgK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAg
ZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KPiAgICAgIGRpZmYgLS1naXQg
YS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQNCj4gICAgICBuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KPiAgICAgIGluZGV4IDAwMDAwMDAuLjVmNTVlY2ENCj4gICAgICAtLS0gL2Rldi9u
dWxsDQo+ICAgICAgKysrIGIvQ09OVFJJQlVUSU5HLm1kDQo+ICAgICAgQEAgLTAsMCArMSw0IEBA
DQo+ICAgICAgK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdA0KPiAgICAgICs9PT09PT09PT09PT09
PT09PT09PT09PQ0KPiAgICAgICsNCj4gICAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJ
QlVUSU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQo+ICAgICAg
ZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KPiAgICAgIG5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQo+ICAgICAgaW5kZXggMDAwMDAwMC4uNDEzYjEzNw0KPiAgICAgIC0tLSAvZGV2L251
bGwNCj4gICAgICArKysgYi9Db25maWcudWsNCj4gICAgICBAQCAtMCwwICsxLDI1IEBADQo+ICAg
ICAgK21lbnVjb25maWcgTElCSU5URUxfSU5UUklOU0lDUw0KPiAgICAgICsgICAgYm9vbCAiSW50
ZWwgSW50cmluc2ljcyAtIEMgc3R5bGUgZnVuY3Rpb25zIHRoYXQgcHJvdmlkZSBhY2Nlc3MgSW50
ZWwgaW5zdHJ1Y3Rpb25zIg0KPiAgICAgICsgICAgZGVmYXVsdCBuDQo+ICAgICAgKw0KPiAgICAg
ICtpZiBMSUJJTlRFTF9JTlRSSU5TSUNTDQo+ICAgICAgK2NvbmZpZyBTSU1EX1NTRQ0KPiAgICAg
ICsgICAgYm9vbCAiRW5hYmxlIFNTRSBzdXBwb3J0Ig0KPiAgICAgICsgICAgZGVmYXVsdCBuDQo+
ICAgICAgKw0KPiAgICAgICtjb25maWcgU0lNRF9TU0UyDQo+ICAgICAgKyAgICBib29sICJFbmFi
bGUgU1NFMiBzdXBwb3J0Ig0KPiAgICAgICsgICAgZGVmYXVsdCBuDQo+ICAgICAgKw0KPiAgICAg
ICtjb25maWcgU0lNRF9TU0UzDQo+ICAgICAgKyAgICBib29sICJFbmFibGUgU1NFMyBzdXBwb3J0
Ig0KPiAgICAgICsgICAgZGVmYXVsdCBuDQo+ICAgICAgKw0KPiAgICAgICtjb25maWcgU0lNRF9T
U0U0DQo+ICAgICAgKyAgICBib29sICJFbmFibGUgU1NFNCBzdXBwb3J0Ig0KPiAgICAgICsgICAg
ZGVmYXVsdCBuDQo+ICAgICAgKw0KPiAgICAgICtjb25maWcgU0lNRF9BVlgNCj4gICAgICArICAg
IGJvb2wgIkVuYWJsZSBBVlggc3VwcG9ydCINCj4gICAgICArICAgIGRlZmF1bHQgbg0KPiAgICAg
ICtlbmRpZg0KPiAgICAgIGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJT
Lm1kDQo+ICAgICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi5h
M2QzYjBhDQo+ICAgICAgLS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL01BSU5UQUlORVJTLm1k
DQo+ICAgICAgQEAgLTAsMCArMSwxMSBAQA0KPiAgICAgICtNYWludGFpbmVycyBMaXN0DQo+ICAg
ICAgKz09PT09PT09PT09PT09PT0NCj4gICAgICArDQo+ICAgICAgK0ZvciBub3RlcyBvbiBob3cg
dG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1k
YCBpbg0KPiAgICAgICt0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KPiAgICAgICsNCj4g
ICAgICArCUxJQklOVEVMX0lOVFJJTlNJQ1MtVU5JS1JBRlQNCj4gICAgICArCU06CUZlbGlwZSBI
dWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCj4gICAgICArCU06CVZsYWQtQW5kcmVpIEJh
ZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCj4gICAgICArCUw6CW1p
bmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnDQo+ICAgICAgKwlGOiAqDQo+ICAgICAgZGlmZiAtLWdp
dCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCj4gICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KPiAgICAgIGluZGV4IDAwMDAwMDAuLjU4NWM0ZjMNCj4gICAgICAtLS0gL2Rldi9udWxsDQo+
ICAgICAgKysrIGIvTWFrZWZpbGUudWsNCj4gICAgICBAQCAtMCwwICsxLDY5IEBADQo+ICAgICAg
KyMgIGxpYmludGVsX2ludHJpbnNpY3MgTWFrZWZpbGUudWsNCj4gICAgICArIw0KPiAgICAgICsj
ICBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+DQo+ICAgICAgKyMNCj4gICAgICArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2
ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g
ICAgICArIw0KPiAgICAgICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gICAgICArIyAgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICAg
ICAgKyMgIGFyZSBtZXQ6DQo+ICAgICAgKyMNCj4gICAgICArIyAgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gICAgICAr
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLg0KPiAgICAgICsjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAgICAgICsjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlDQo+ICAgICAgKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ICAgICAgKyMgIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gICAg
ICArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20NCj4gICAgICArIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gICAgICArIw0KPiAgICAgICsj
ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyINCj4gICAgICArIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KPiAgICAg
ICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KPiAgICAgICsjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQo+ICAg
ICAgKyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCj4gICAgICArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCj4gICAgICArIyAgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTDQo+ICAgICAgKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQo+ICAgICAgKyMgIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpDQo+ICAgICAgKyMgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQo+ICAgICAgKyMgIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiAgICAgICsjDQo+ICAgICAgKyMgIFRISVMgSEVBREVS
IE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQo+ICAgICAgKyMN
Cj4gICAgICArDQo+ICAgICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ICAgICAgKyMgTGli
cmFyeSByZWdpc3RyYXRpb24NCj4gICAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gICAg
ICArJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJpbnRlbF9pbnRyaW5zaWNzLCQoQ09ORklHX0xJ
QklOVEVMX0lOVFJJTlNJQ1MpKSkNCj4gICAgICArDQo+ICAgICAgKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjDQo+ICAgICAgKyMgTGlicmFyeSBpbmNsdWRlcw0KPiAgICAgICsjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KPiAgICAgICtDSU5DTFVERVMtJChDT05GSUdfTElCSU5URUxfSU5UUklOU0lD
UykgKz0gLUkkKExJQklOVEVMX0lOVFJJTlNJQ1NfQkFTRSkvaW5jbHVkZQ0KPiAgICAgICtDWFhJ
TkNMVURFUy0kKENPTkZJR19MSUJJTlRFTF9JTlRSSU5TSUNTKSArPSAtSSQoTElCSU5URUxfSU5U
UklOU0lDU19CQVNFKS9pbmNsdWRlDQo+ICAgICAgKw0KPiAgICAgICtpZmRlZiBDT05GSUdfU0lN
RF9TU0UNCj4gICAgICArQ0ZMQUdTCQkrPSAtbXNzZSAtbWZwbWF0aD1zc2UNCj4gICAgICArQ1hY
RkxBR1MJKz0gLW1zc2UgLW1mcG1hdGg9c3NlDQo+ICAgICAgK2VuZGlmDQo+ICAgICAgKw0KPiAg
ICAgICtpZmRlZiBDT05GSUdfU0lNRF9TU0UyDQo+ICAgICAgK0NGTEFHUwkJKz0gLW1zc2UyDQo+
ICAgICAgK0NYWEZMQUdTCSs9IC1tc3NlMg0KPiAgICAgICtlbmRpZg0KPiAgICAgICsNCj4gICAg
ICAraWZkZWYgQ09ORklHX1NJTURfU1NFMw0KPiAgICAgICtDRkxBR1MJCSs9IC1tc3NlMw0KPiAg
ICAgICtDWFhGTEFHUwkrPSAtbXNzZTMNCj4gICAgICArZW5kaWYNCj4gICAgICArDQo+ICAgICAg
K2lmZGVmIENPTkZJR19TSU1EX1NTRTQNCj4gICAgICArQ0ZMQUdTCQkrPSAtbXNzZTQNCj4gICAg
ICArQ1hYRkxBR1MJKz0gLW1zc2U0DQo+ICAgICAgK2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICtp
ZmRlZiBDT05GSUdfU0lNRF9BVlgNCj4gICAgICArQ0ZMQUdTCQkrPSAtbWF2eA0KPiAgICAgICtD
WFhGTEFHUwkrPSAtbWF2eA0KPiAgICAgICtlbmRpZg0KPiAgICAgIGRpZmYgLS1naXQgYS9SRUFE
TUUubWQgYi9SRUFETUUubWQNCj4gICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiAgICAgIGlu
ZGV4IDAwMDAwMDAuLmVjOGM0NzQNCj4gICAgICAtLS0gL2Rldi9udWxsDQo+ICAgICAgKysrIGIv
UkVBRE1FLm1kDQo+ICAgICAgQEAgLTAsMCArMSw1IEBADQo+ICAgICAgK2xpYmludGVsXF9pbnRy
aW5pc2NzIGZvciBVbmlrcmFmdA0KPiAgICAgICs9PT09PT09PT09PT09PT09PT09DQo+ICAgICAg
Kw0KPiAgICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhl
IGRvY3VtZW50YXRpb24gaW4gdGhlIGBkb2MvYA0KPiAgICAgICtzdWJkaXJlY3Rvcnkgb2YgdGhl
IG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4NCj4gICAgICBkaWZmIC0tZ2l0IGEvZXhwb3J0c3lt
cy51ayBiL2V4cG9ydHN5bXMudWsNCj4gICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiAgICAg
IGluZGV4IDAwMDAwMDAuLjYyMWU5NGYNCj4gICAgICAtLS0gL2Rldi9udWxsDQo+ICAgICAgKysr
IGIvZXhwb3J0c3ltcy51aw0KPiAgICAgIEBAIC0wLDAgKzEgQEANCj4gICAgICArbm9uZQ0KPiAg
ICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL2F2eGludHJpbi5oIGIvaW5jbHVkZS9hdnhpbnRyaW4u
aA0KPiAgICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ICAgICAgaW5kZXggMDAwMDAwMC4uNjk5
Njc3NQ0KPiAgICAgIC0tLSAvZGV2L251bGwNCj4gICAgICArKysgYi9pbmNsdWRlL2F2eGludHJp
bi5oDQo+ICAgICAgQEAgLTAsMCArMSw1MTIxIEBADQo+ICAgICAgKy8qPT09LS0tLSBhdnhpbnRy
aW4uaCAtIEFWWCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09PT0NCj4gICAgICArICoNCj4gICAgICArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KPiAgICAg
ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg
KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KPiAgICAgICsgKiBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
DQo+ICAgICAgKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCj4gICAgICArICogY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQo+
ICAgICAgKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6DQo+ICAgICAgKyAqDQo+ICAgICAgKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+ICAg
ICAgKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
Lg0KPiAgICAgICsgKg0KPiAgICAgICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KPiAgICAgICsgKiBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwNCj4gICAgICArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+ICAgICAgKyAq
IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB
TUFHRVMgT1IgT1RIRVINCj4gICAgICArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwNCj4gICAgICAr
ICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UiBPVEhFUiBERUFMSU5HUyBJTg0KPiAgICAgICsgKiBUSEUgU09GVFdBUkUuDQo+ICAgICAgKyAq
DQo+ICAgICAgKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCj4gICAgICArICovDQo+ICAgICAgKw0K
PiAgICAgICsjaWZuZGVmIF9fSU1NSU5UUklOX0gNCj4gICAgICArI2Vycm9yICJOZXZlciB1c2Ug
PGF2eGludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3RlYWQuIg0K
PiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKyNpZm5kZWYgX19BVlhJTlRSSU5fSA0K
PiAgICAgICsjZGVmaW5lIF9fQVZYSU5UUklOX0gNCj4gICAgICArDQo+ICAgICAgK3R5cGVkZWYg
ZG91YmxlIF9fdjRkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCj4g
ICAgICArdHlwZWRlZiBmbG9hdCBfX3Y4c2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVf
XyAoMzIpKSk7DQo+ICAgICAgK3R5cGVkZWYgbG9uZyBsb25nIF9fdjRkaSBfX2F0dHJpYnV0ZV9f
ICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCj4gICAgICArdHlwZWRlZiBpbnQgX192OHNpIF9f
YXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KPiAgICAgICt0eXBlZGVmIHNo
b3J0IF9fdjE2aGkgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQo+ICAg
ICAgK3R5cGVkZWYgY2hhciBfX3YzMnFpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18g
KDMyKSkpOw0KPiAgICAgICsNCj4gICAgICArLyogVW5zaWduZWQgdHlwZXMgKi8NCj4gICAgICAr
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX192NGR1IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rv
cl9zaXplX18gKDMyKSkpOw0KPiAgICAgICt0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Y4c3UgX19h
dHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQo+ICAgICAgK3R5cGVkZWYgdW5z
aWduZWQgc2hvcnQgX192MTZodSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikp
KTsNCj4gICAgICArdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdjMycXUgX19hdHRyaWJ1dGVfXyAo
KF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQo+ICAgICAgKw0KPiAgICAgICsvKiBXZSBuZWVkIGFu
IGV4cGxpY2l0bHkgc2lnbmVkIHZhcmlhbnQgZm9yIGNoYXIuIE5vdGUgdGhhdCB0aGlzIHNob3Vs
ZG4ndA0KPiAgICAgICsgKiBhcHBlYXIgaW4gdGhlIGludGVyZmFjZSB0aG91Z2guICovDQo+ICAg
ICAgK3R5cGVkZWYgc2lnbmVkIGNoYXIgX192MzJxcyBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9z
aXplX18oMzIpKSk7DQo+ICAgICAgKw0KPiAgICAgICt0eXBlZGVmIGZsb2F0IF9fbTI1NiBfX2F0
dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCj4gICAgICArdHlwZWRlZiBkb3Vi
bGUgX19tMjU2ZCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMzIpKSk7DQo+ICAgICAg
K3R5cGVkZWYgbG9uZyBsb25nIF9fbTI1NmkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9f
KDMyKSkpOw0KPiAgICAgICsNCj4gICAgICArLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0
ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KPiAgICAgICsjaWZkZWYgIF9f
R05VQ19fDQo+ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18o
KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiAg
ICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUzEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9p
bmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gICAgICArI2Vs
c2UNCj4gICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngiKSwgX19taW5fdmVj
dG9yX3dpZHRoX18oMjU2KSkpDQo+ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRf
XygiYXZ4IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArDQo+ICAgICAgKy8qIEFyaXRobWV0aWMgKi8NCj4gICAgICArLy8vIEFkZHMgdHdvIDI1
Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJh
bmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tMjU2X2FkZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZGYpX19hKyhfX3Y0ZGYpX19iKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEFkZHMgdHdvIDI1Ni1iaXQgdmVjdG9y
cyBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIHN1bXMgb2YgYm90aA0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMuDQo+ICAgICAgK3N0
YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9h
ZGRfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVy
biAoX19tMjU2KSgoX192OHNmKV9fYSsoX192OHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8vLyBTdWJ0cmFjdHMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJs
ZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlNVQlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgbWludWVuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhl
IHN1YnRyYWhlbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuDQo+ICAgICAgKy8v
LyAgICBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3N1Yl9wZChfX20yNTZkIF9fYSwgX19tMjU2
ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZGYpX19h
LShfX3Y0ZGYpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN1YnRyYWN0
cyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQUyA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWludWVu
ZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZC4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
ZGlmZmVyZW5jZXMgYmV0d2Vlbg0KPiAgICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
MjU2X3N1Yl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX20yNTYpKChfX3Y4c2YpX19hLShfX3Y4c2YpX19iKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIEFkZHMgdGhlIGV2ZW4taW5kZXhlZCB2YWx1ZXMgYW5kIHN1YnRy
YWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQo+ICAgICAgKy8vLyAgICB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREU1VCUEQgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBv
cGVyYW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJh
bmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBjb250YWluaW5nIHRoZSBhbHRlcm5hdGluZyBzdW1zDQo+ICAgICAgKy8vLyAgICBhbmQgZGlm
ZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUg
X19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2FkZHN1Yl9wZChfX20y
NTZkIF9fYSwgX19tMjU2ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1
NmQpX19idWlsdGluX2lhMzJfYWRkc3VicGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEFkZHMgdGhlIGV2ZW4taW5kZXhlZCB2
YWx1ZXMgYW5kIHN1YnRyYWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQo+ICAgICAgKy8v
LyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTVUJQUyA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
bGVmdCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcmlnaHQg
c291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGFsdGVybmF0aW5nIHN1bXMgYW5kDQo+ICAgICAg
Ky8vLyAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9hZGRz
dWJfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVy
biAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2FkZHN1YnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNm
KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBEaXZpZGVzIHR3byAyNTYt
Yml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQRCA8L2M+IGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGl2aXNvci4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50
cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9kaXZfcGQoX19t
MjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20y
NTZkKSgoX192NGRmKV9fYS8oX192NGRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBEaXZpZGVzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJ
VlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBkaXZpZGVuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aXNvci4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgcXVvdGllbnRzIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJhbmRzLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW0yNTZfZGl2X3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2EvKF9fdjhzZilfX2IpOw0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBb
NCB4IGRvdWJsZV0gYW5kIHJldHVybnMgdGhlIGdyZWF0ZXINCj4gICAgICArLy8vICAgIG9mIGVh
Y2ggcGFpciBvZiB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWF4
aW11bSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bTI1Nl9tYXhfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX21heHBkMjU2KChfX3Y0ZGYpX19hLCAo
X192NGRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0
d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZSBncmVhdGVy
DQo+ICAgICAgKy8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVhQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFu
ZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIG1heGltdW0gdmFsdWVzDQo+ICAgICAgKy8vLyAgICBiZXR3ZWVuIGJv
dGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbTI1Nl9tYXhfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX21heHBzMjU2
KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBDb21wYXJlcyB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSBhbmQgcmV0
dXJucyB0aGUgbGVzc2VyDQo+ICAgICAgKy8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNSU5QRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4g
ICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1pbmltdW0gdmFsdWVzDQo+ICAgICAg
Ky8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBf
X20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfbWluX3BkKF9fbTI1NmQg
X19hLCBfX20yNTZkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2ZClf
X2J1aWx0aW5faWEzMl9taW5wZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBv
ZiBbOCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgbGVzc2VyDQo+ICAgICAgKy8vLyAgICBvZiBl
YWNoIHBhaXIgb2YgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5QUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbmlt
dW0gdmFsdWVzDQo+ICAgICAgKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1
Nl9taW5fcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJl
dHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX21pbnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNm
KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBNdWx0aXBsaWVzIHR3byAy
NTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQRCA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVy
YW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJhbmRzLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tMjU2X211bF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZGYpX19hICogKF9fdjRkZilfX2IpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTXVsdGlwbGllcyB0d28gMjU2LWJpdCB2ZWN0b3Jz
IG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3Rz
IG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfbXVsX3BzKF9fbTI1
NiBfX2EsIF9fbTI1NiBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1Niko
KF9fdjhzZilfX2EgKiAoX192OHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBpbiBhIDI1Ni1i
aXQgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRQRCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
c3F1YXJlIHJvb3RzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgdmFsdWVzIGluIHRoZSBvcGVyYW5k
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tMjU2X3NxcnRfcGQoX19tMjU2ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBy
ZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfc3FydHBkMjU2KChfX3Y0ZGYpX19hKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290
cyBvZiB0aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFs4
IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAg
ICB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9zcXJ0X3BzKF9fbTI1NiBfX2EpDQo+
ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zcXJ0cHMy
NTYoKF9fdjhzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ2FsY3Vs
YXRlcyB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBpbiBhIDI1Ni1i
aXQNCj4gICAgICArLy8vICAgIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUlNRUlRQUyA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJl
Y2lwcm9jYWwgc3F1YXJlDQo+ICAgICAgKy8vLyAgICByb290cyBvZiB0aGUgdmFsdWVzIGluIHRo
ZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW0yNTZfcnNxcnRfcHMoX19tMjU2IF9fYSkNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMyNTYoKF9fdjhzZilf
X2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ2FsY3VsYXRlcyB0aGUgcmVj
aXByb2NhbHMgb2YgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mDQo+ICAgICAgKy8v
LyAgICBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUkNQUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByZWNpcHJvY2FscyBvZiB0aGUNCj4gICAgICAr
Ly8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9f
bTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3JjcF9wcyhfX20yNTYgX19h
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfcmNw
cHMyNTYoKF9fdjhzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUm91
bmRzIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3Bl
Y2lmaWVkDQo+ICAgICAgKy8vLyAgICBieSB0aGUgYnl0ZSBvcGVyYW5kLiBUaGUgc291cmNlIHZh
bHVlcyBhcmUgcm91bmRlZCB0byBpbnRlZ2VyIHZhbHVlcyBhbmQNCj4gICAgICArLy8vICAgIHJl
dHVybmVkIGFzIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTI1NmQgX21tMjU2X3Jv
dW5kX3BkKF9fbTI1NmQgViwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIFYNCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVd
Lg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUg
dGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0KPiAgICAgICsvLy8gICAgQml0IFszXSBpcyBh
IHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IEEgbm9y
bWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkLiBcbg0KPiAgICAgICsvLy8gICAgICAxOiBUaGUgUEUg
ZmllbGQgaXMgbm90IHVwZGF0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXQgWzJdIGlzIHRoZSBy
b3VuZGluZyBjb250cm9sIHNvdXJjZTogXG4NCj4gICAgICArLy8vICAgICAgMDogVXNlIGJpdHMg
WzE6MF0gb2YgXGEgTS4gXG4NCj4gICAgICArLy8vICAgICAgMTogVXNlIHRoZSBjdXJyZW50IE1Y
Q1NSIHNldHRpbmcuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdIGNvbnRhaW4gdGhlIHJv
dW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4NCj4gICAgICArLy8vICAgICAgMDA6IE5lYXJl
c3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBEb3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGlu
ZmluaXR5KS4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZl
IGluZmluaXR5KS4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IFRydW5jYXRlZC4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
dGhlIHJvdW5kZWQgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbTI1Nl9yb3VuZF9wZChWLCBN
KSBcDQo+ICAgICAgKyAgICAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9yb3VuZHBkMjU2KChfX3Y0
ZGYpKF9fbTI1NmQpKFYpLCAoTSkpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gUm91bmRzIHRoZSB2
YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYXMNCj4gICAg
ICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgYnl0ZSBvcGVyYW5kLiBUaGUgc291cmNlIHZhbHVl
cyBhcmUgcm91bmRlZCB0byBpbnRlZ2VyDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYW5kIHJldHVy
bmVkIGFzIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUN
Cj4gICAgICArLy8vIF9fbTI1NiBfbW0yNTZfcm91bmRfcHMoX19tMjU2IFYsIGNvbnN0IGludCBN
KTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQUyA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBWDQo+ICAgICAgKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAg
ICArLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9w
ZXJhdGlvbi4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0K
PiAgICAgICsvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxu
DQo+ICAgICAgKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkLiBcbg0K
PiAgICAgICsvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQuIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXQgWzJdIGlzIHRoZSByb3VuZGluZyBjb250cm9sIHNvdXJjZTogXG4NCj4g
ICAgICArLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEgTS4gXG4NCj4gICAgICArLy8v
ICAgICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcuIFxuDQo+ICAgICAgKy8vLyAg
ICBCaXRzIFsxOjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4N
Cj4gICAgICArLy8vICAgICAgMDA6IE5lYXJlc3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBE
b3dud2FyZCAodG93YXJkIG5lZ2F0aXZlIGluZmluaXR5KS4gXG4NCj4gICAgICArLy8vICAgICAg
MTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZlIGluZmluaXR5KS4gXG4NCj4gICAgICArLy8vICAg
ICAgMTE6IFRydW5jYXRlZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQo+ICAgICAgKyNk
ZWZpbmUgX21tMjU2X3JvdW5kX3BzKFYsIE0pIFwNCj4gICAgICArICAoX19tMjU2KV9fYnVpbHRp
bl9pYTMyX3JvdW5kcHMyNTYoKF9fdjhzZikoX19tMjU2KShWKSwgKE0pKQ0KPiAgICAgICsNCj4g
ICAgICArLy8vIFJvdW5kcyB1cCB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXS4gVGhlDQo+ICAgICAgKy8vLyAgICBzb3VyY2UgdmFsdWVzIGFyZSBy
b3VuZGVkIHVwIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1cm5lZCBhcyA2NC1iaXQNCj4gICAg
ICArLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMjU2ZCBfbW0yNTZfY2VpbF9wZChf
X20yNTZkIFYpOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYNCj4gICAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRl
ZCB1cCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X2NlaWxfcGQoVikgIF9tbTI1Nl9y
b3VuZF9wZCgoViksIF9NTV9GUk9VTkRfQ0VJTCkNCj4gICAgICArDQo+ICAgICAgKy8vLyBSb3Vu
ZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXS4NCj4gICAgICArLy8vICAgIFRoZSBzb3VyY2UgdmFsdWVzIGFyZSByb3VuZGVkIGRvd24g
dG8gaW50ZWdlciB2YWx1ZXMgYW5kIHJldHVybmVkIGFzDQo+ICAgICAgKy8vLyAgICA2NC1iaXQg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20yNTZkIF9tbTI1Nl9mbG9vcl9wZChfX20yNTZkIFYp
Ow0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYNCj4gICAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYt
Yml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCBkb3duDQo+
ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X2Zsb29yX3BkKFYp
IF9tbTI1Nl9yb3VuZF9wZCgoViksIF9NTV9GUk9VTkRfRkxPT1IpDQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gUm91bmRzIHVwIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0uIFRoZQ0KPiAgICAgICsvLy8gICAgc291cmNlIHZhbHVlcyBhcmUgcm91bmRl
ZCB1cCB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMNCj4gICAgICArLy8vICAgIGZs
b2F0aW5nLXBvaW50IHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICAr
Ly8vIF9fbTI1NiBfbW0yNTZfY2VpbF9wcyhfX20yNTYgVik7DQo+ICAgICAgKy8vLyBcZW5kY29k
ZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gVg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgcm91bmRlZCB1cCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21t
MjU2X2NlaWxfcHMoVikgIF9tbTI1Nl9yb3VuZF9wcygoViksIF9NTV9GUk9VTkRfQ0VJTCkNCj4g
ICAgICArDQo+ICAgICAgKy8vLyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUNCj4gICAgICArLy8vICAgIHNvdXJjZSB2
YWx1ZXMgYXJlIHJvdW5kZWQgZG93biB0byBpbnRlZ2VyIHZhbHVlcyBhbmQgcmV0dXJuZWQgYXMN
Cj4gICAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGNvZGUNCj4gICAgICArLy8vIF9fbTI1NiBfbW0yNTZfZmxvb3JfcHMoX19tMjU2IFYpOw0K
PiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYNCj4gICAgICArLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgZG93biB2YWx1ZXMu
DQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X2Zsb29yX3BzKFYpIF9tbTI1Nl9yb3VuZF9wcygoViks
IF9NTV9GUk9VTkRfRkxPT1IpDQo+ICAgICAgKw0KPiAgICAgICsvKiBMb2dpY2FsICovDQo+ICAg
ICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2Yg
WzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZBTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmlu
ZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBi
b3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tMjU2X2FuZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2Ip
DQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZHUpX19hICYgKF9f
djRkdSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVyZm9ybXMgYSBi
aXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQ
UyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4g
ICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhl
DQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZf
YW5kX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gKF9fbTI1NikoKF9fdjhzdSlfX2EgJiAoX192OHN1KV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZl
Y3RvcnMgb2YgWzQgeCBkb3VibGVdLCB1c2luZw0KPiAgICAgICsvLy8gICAgdGhlIG9uZSdzIGNv
bXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVy
YW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZBTkROUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLiBUaGUNCj4gICAgICArLy8v
ICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBiaXR3aXNl
IEFORC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5k
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMg
b2YgdGhlIHNlY29uZCBvcGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmly
c3QNCj4gICAgICArLy8vICAgIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20y
NTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfYW5kbm90X3BkKF9fbTI1NmQg
X19hLCBfX20yNTZkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2ZCko
fihfX3Y0ZHUpX19hICYgKF9fdjRkdSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4
IHggZmxvYXRdLCB1c2luZw0KPiAgICAgICsvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2Yg
dGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRO
UFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuIFRoZQ0KPiAgICAgICsvLy8gICAgb25lJ3MgY29t
cGxlbWVudCBvZiB0aGlzIHZhbHVlIGlzIHVzZWQgaW4gdGhlIGJpdHdpc2UgQU5ELg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
Yml0d2lzZSBBTkQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgb2YgdGhlIHNlY29uZCBv
cGVyYW5kIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QNCj4gICAgICArLy8v
ICAgIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbTI1Nl9hbmRub3RfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2KSh+KF9fdjhzdSlfX2EgJiAoX192
OHN1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJp
dHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk9SUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgT1Igb2YgdGhl
DQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2
X29yX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJl
dHVybiAoX19tMjU2ZCkoKF9fdjRkdSlfX2EgfCAoX192NGR1KV9fYik7DQo+ICAgICAgK30NCj4g
ICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQg
dmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWT1JQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUNCj4gICAgICArLy8vICAgIHZhbHVlcyBiZXR3
ZWVuIGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9vcl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19i
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3UpX19hIHwgKF9f
djhzdSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVyZm9ybXMgYSBi
aXR3aXNlIFhPUiBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9S
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9m
IHRoZQ0KPiAgICAgICsvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bTI1Nl94b3JfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIChfX20yNTZkKSgoX192NGR1KV9fYSBeIChfX3Y0ZHUpX19iKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBYT1Igb2YgdHdvIDI1
Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgWE9SIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgdmFs
dWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1
NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3hvcl9wcyhfX20yNTYgX19hLCBf
X20yNTYgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3Up
X19hIF4gKF9fdjhzdSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvKiBIb3Jp
em9udGFsIGFyaXRobWV0aWMgKi8NCj4gICAgICArLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBh
ZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0KPiAgICAgICsvLy8gICAg
MjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhl
IHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGV2ZW4taW5kZXhlZA0KPiAgICAgICsvLy8gICAg
ZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vICAgIFRoZSBo
b3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIG9kZC1pbmRl
eGVkDQo+ICAgICAgKy8vLyAgICBlbGVtZW50cyBvZiBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0u
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YNCj4gICAgICArLy8vICAgIGJvdGggb3Bl
cmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW0yNTZfaGFkZF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfaGFkZHBkMjU2
KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRh
aW5lZCBpbiB0d28NCj4gICAgICArLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0
XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWSEFERFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gICAg
VGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUgZWxl
bWVudHMgd2l0aA0KPiAgICAgICsvLy8gICAgaW5kZXggMCwgMSwgNCwgNSBvZiBhIHZlY3RvciBv
ZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4NCj4gICAgICArLy8vICAgIFRoZSBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZh
bHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGVsZW1lbnRzIHdpdGgNCj4gICAgICArLy8vICAgIGlu
ZGV4IDIsIDMsIDYsIDcgb2YgYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhv
cml6b250YWwgc3VtcyBvZg0KPiAgICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCj4gICAgICAr
c3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2
X2hhZGRfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJl
dHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2hhZGRwczI1NigoX192OHNmKV9fYSwgKF9fdjhz
ZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gSG9yaXpvbnRhbGx5IHN1
YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28NCj4g
ICAgICArLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAgICBUaGUgaG9yaXpvbnRh
bCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQ0KPiAg
ICAgICsvLy8gICAgZXZlbi1pbmRleGVkIGVsZW1lbnRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZG91
YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQo+ICAgICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRo
ZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQ0KPiAgICAgICsvLy8gICAgb2RkLWluZGV4ZWQg
ZWxlbWVudHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgaG9yaXpv
bnRhbA0KPiAgICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bTI1Nl9oc3ViX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9oc3VicGQyNTYoKF9fdjRkZilfX2Es
IChfX3Y0ZGYpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEhvcml6b250
YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4g
dHdvDQo+ICAgICAgKy8vLyAgICAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhT
VUJQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFp
bmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vICAgIFRoZSBob3Jp
em9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gdGhl
DQo+ICAgICAgKy8vLyAgICBlbGVtZW50cyB3aXRoIGluZGV4IDAsIDEsIDQsIDUgb2YgYSB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHJldHVybmVkIGluIHRoZQ0KPiAgICAgICsvLy8gICAg
ZWxlbWVudHMgd2l0aCBpbmRleCAyLCAzLCA2LCA3IG9mIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRd
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZSBob3Jpem9udGFsDQo+ICAgICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBi
b3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW0yNTZfaHN1Yl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfaHN1YnBz
MjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8qIFZlY3RvciBwZXJtdXRhdGlvbnMgKi8NCj4gICAgICArLy8vIENvcGllcyB0aGUgdmFs
dWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGFzIHNwZWNpZmllZA0KPiAg
ICAgICsvLy8gICAgYnkgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVS
TUlMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2MNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQo+ICAgICAg
Ky8vLyAgICBjb3BpZWQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXQgWzFdOiBcbg0KPiAgICAgICsv
Ly8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
NjM6MF0gb2YgdGhlIHJldHVybmVkDQo+ICAgICAgKy8vLyAgICAgICAgIHZlY3Rvci4gXG4NCj4g
ICAgICArLy8vICAgICAgMTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbNjM6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCj4gICAgICArLy8vICAgIEJpdCBbNjVdOiBcbg0KPiAgICAgICsvLy8gICAgICAwOiBC
aXRzIFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0
aGUNCj4gICAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8g
ICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMxMjgNCj4gICAgICArX21tX3Blcm11dGV2YXJfcGQoX19tMTI4ZCBf
X2EsIF9fbTEyOGkgX19jKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhkKV9f
YnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwZCgoX192MmRmKV9fYSwgKF9fdjJkaSlfX2MpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAyNTYt
Yml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICBi
eSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQRCA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYw0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQg
c3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCj4gICAgICArLy8vICAgIGNvcGll
ZC4gXG4NCj4gICAgICArLy8vICAgIEJpdCBbMV06IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IEJp
dHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUg
cmV0dXJuZWQNCj4gICAgICArLy8vICAgICAgICAgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAg
ICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2Mzow
XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAg
ICsvLy8gICAgQml0IFs2NV06IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9m
IHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KPiAgICAgICsv
Ly8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDE6IEJpdHMg
WzEyNzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhl
DQo+ICAgICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAg
IEJpdCBbMTI5XTogXG4NCj4gICAgICArLy8vICAgICAgMDogQml0cyBbMTkxOjEyOF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8g
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDE6IEJpdHMgWzI1
NToxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUN
Cj4gICAgICArLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0IFsxOTNdOiBcbg0KPiAgICAgICsvLy8gICAgICAwOiBCaXRzIFsxOTE6MTI4XSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlDQo+ICAgICAgKy8vLyAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTogQml0cyBbMjU1
OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0K
PiAgICAgICsvLy8gICAgcmV0dXJuZWQgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVl
cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbTI1Nl9wZXJtdXRldmFyX3BkKF9fbTI1NmQgX19hLCBfX20yNTZpIF9fYykNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92cGVybWls
dmFycGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGkpX19jKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvcGllcyB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGFzDQo+ICAgICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19jDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVz
IGFyZSB0byBiZQ0KPiAgICAgICsvLy8gICAgY29waWVkLiBcbg0KPiAgICAgICsvLy8gICAgQml0
cyBbMTowXTogXG4NCj4gICAgICArLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQo+ICAgICAgKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBCaXRz
IFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0K
PiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAg
ICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6
MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXRzIFszMzozMl06IFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFsz
MTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAw
MTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0g
b2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAg
Ky8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzYzOjMyXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCj4gICAgICArLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzY1OjY0XTogXG4NCj4gICAgICAr
Ly8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRz
IFs5NTo2NF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQo+ICAgICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29w
aWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KPiAgICAg
ICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBb
OTc6OTZdOiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0g
b2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBC
aXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2Yg
dGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8v
LyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRz
IFsxMjc6OTZdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KPiAgICAgICtfbW1fcGVybXV0ZXZhcl9wcyhfX20xMjgg
X19hLCBfX20xMjhpIF9fYykNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9f
YnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwcygoX192NHNmKV9fYSwgKF9fdjRzaSlfX2MpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29waWVzIHRoZSB2YWx1ZXMgc3RvcmVkIGlu
IGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYXMNCj4gICAgICArLy8vICAgIHNwZWNp
ZmllZCBieSB0aGUgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8v
LyBccGFyYW0gX19jDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb3Bl
cmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KPiAgICAgICsvLy8gICAg
Y29waWVkLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXTogXG4NCj4gICAgICArLy8vICAg
ICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTow
XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAg
ICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMzE6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJu
ZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFszMzozMl06IFxu
DQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0g
b2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCj4gICAgICAr
Ly8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IEJp
dHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0
aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzY1OjY0XTogXG4NCj4gICAgICArLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9m
IHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQo+ICAgICAgKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBCaXRz
IFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUN
Cj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAg
ICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6
NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAg
ICAgICsvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbOTc6OTZdOiBcbg0KPiAgICAgICsvLy8gICAg
ICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5
Nl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAg
ICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRv
IGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0
b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9m
IHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KPiAgICAgICsv
Ly8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTI5
OjEyOF06IFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBCaXRzIFsxOTE6
MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQo+
ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAg
IDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTU5
OjEyOF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+
ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxNjE6MTYwXTogXG4NCj4gICAgICAr
Ly8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBi
aXRzIFsxOTE6MTYwXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2Ug
YXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCj4gICAg
ICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTE6
IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYw
XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAg
ICArLy8vICAgIEJpdHMgWzE5MzoxOTJdOiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogQml0cyBb
MTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8g
ICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzIyMzoxOTJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KPiAgICAgICsvLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2Yg
dGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KPiAgICAgICsv
Ly8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMjI1
OjIyNF06IFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBCaXRzIFsxOTE6
MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQo+
ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAg
IDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1
OjIyNF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+
ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9wZXJtdXRldmFy
X3BzKF9fbTI1NiBfX2EsIF9fbTI1NmkgX19jKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzMjU2KChfX3Y4c2YpX19hLCAoX192
OHNpKV9fYyk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb3BpZXMgdGhlIHZh
bHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBhcyBzcGVjaWZpZWQNCj4g
ICAgICArLy8vICAgIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4ZCBfbW1fcGVybXV0ZV9wZChfX20x
MjhkIEEsIGNvbnN0IGludCBDKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlM
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gQQ0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAg
Ky8vLyBccGFyYW0gQw0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFu
ZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KPiAgICAgICsvLy8gICAgY29w
aWVkLiBcbg0KPiAgICAgICsvLy8gICAgQml0IFswXTogXG4NCj4gICAgICArLy8vICAgICAgMDog
Qml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRo
ZSByZXR1cm5lZA0KPiAgICAgICsvLy8gICAgICAgICB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAg
ICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYz
OjBdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXQgWzFdOiBcbg0KPiAgICAgICsvLy8gICAgICAwOiBCaXRzIFs2MzowXSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUNCj4gICAgICAr
Ly8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxOiBCaXRz
IFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb3Bp
ZWQgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9wZXJtdXRlX3BkKEEsIEMpIFwNCj4gICAg
ICArICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92cGVybWlscGQoKF9fdjJkZikoX19tMTI4ZCko
QSksIChpbnQpKEMpKQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvcGllcyB0aGUgdmFsdWVzIGlu
IGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFzIHNwZWNpZmllZCBieQ0KPiAgICAg
ICsvLy8gICAgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20yNTZkIF9tbTI1Nl9wZXJtdXRlX3BkKF9fbTI1NmQg
QSwgY29uc3QgaW50IEMpOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBBDQo+ICAg
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8v
IFxwYXJhbSBDDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHNw
ZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQu
IFxuDQo+ICAgICAgKy8vLyAgICBCaXQgWzBdOiBcbg0KPiAgICAgICsvLy8gICAgICAwOiBCaXRz
IFs2MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJl
dHVybmVkDQo+ICAgICAgKy8vLyAgICAgICAgIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAg
MTogQml0cyBbMTI3OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0g
b2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICAr
Ly8vICAgIEJpdCBbMV06IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8g
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDE6IEJpdHMgWzEy
Nzo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQo+
ICAgICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgIEJp
dCBbMl06IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IEJpdHMgWzE5MToxMjhdIG9mIHRoZSBzb3Vy
Y2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxOiBCaXRzIFsyNTU6MTky
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlDQo+ICAg
ICAgKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgIEJpdCBb
M106IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IEJpdHMgWzE5MToxMjhdIG9mIHRoZSBzb3VyY2Ug
YXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxOiBCaXRzIFsyNTU6MTkyXSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMu
DQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X3Blcm11dGVfcGQoQSwgQykgXA0KPiAgICAgICsgIChf
X20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxwZDI1NigoX192NGRmKShfX20yNTZkKShBKSwg
KGludCkoQykpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBhcyBzcGVjaWZpZWQgYnkNCj4gICAgICArLy8v
ICAgIHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
Y29kZQ0KPiAgICAgICsvLy8gX19tMTI4IF9tbV9wZXJtdXRlX3BzKF9fbTEyOCBBLCBjb25zdCBp
bnQgQyk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gQw0K
PiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhv
dyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KPiAgICAgICsvLy8gICAgY29waWVkLiBcbg0KPiAgICAg
ICsvLy8gICAgQml0cyBbMTowXTogXG4NCj4gICAgICArLy8vICAgICAgMDA6IEJpdHMgWzMxOjBd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCj4gICAgICAr
Ly8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IEJp
dHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhl
DQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAg
ICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMx
OjBdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAg
ICAgICsvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMzE6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0
b3IuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFszOjJdOiBcbg0KPiAgICAgICsvLy8gICAgICAw
MDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBv
ZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICAr
Ly8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbNjM6MzJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KPiAgICAgICsvLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0K
PiAgICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9m
IHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQo+ICAgICAgKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBCaXRz
IFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhl
DQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAg
ICBCaXRzIFs3OjZdOiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+ICAgICAgKy8vLyAg
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBCaXRzIFs2
MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+
ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAg
IDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5
Nl0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAg
ICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0
byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9wZXJt
dXRlX3BzKEEsIEMpIFwNCj4gICAgICArICAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxw
cygoX192NHNmKShfX20xMjgpKEEpLCAoaW50KShDKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b3BpZXMgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGFzIHNw
ZWNpZmllZCBieQ0KPiAgICAgICsvLy8gICAgdGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20yNTYgX21tMjU2X3Bl
cm11dGVfcHMoX19tMjU2IEEsIGNvbnN0IGludCBDKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUEVSTUlMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gQQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0
XS4NCj4gICAgICArLy8vIFxwYXJhbSBDDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50
ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQo+ICAgICAg
Ky8vLyAgICBjb3BpZWQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KPiAgICAg
ICsvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzMxOjBdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KPiAgICAgICsvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCj4gICAgICAr
Ly8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6
Ml06IFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQo+ICAgICAgKy8vLyAg
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBCaXRzIFs5
NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCj4g
ICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAg
MTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMy
XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAg
ICArLy8vICAgIEJpdHMgWzU6NF06IFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFszMTow
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KPiAgICAg
ICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTog
Qml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2Yg
dGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8v
LyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
Wzk1OjY0XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
Cj4gICAgICArLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29w
aWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzc6Nl06IFxuDQo+ICAgICAgKy8vLyAg
ICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3
Ojk2XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4g
ICAgICArLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0g
b2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsx
OjBdOiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogQml0cyBbMTkxOjE2
MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAx
MDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1OTox
MjhdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAg
ICAgICsvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMzoyXTogXG4NCj4gICAgICArLy8vICAg
ICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
OTE6MTYwXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
Cj4gICAgICArLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCj4gICAgICArLy8v
ICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IEJpdHMg
WzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0
aGUNCj4gICAgICArLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzU6NF06IFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBC
aXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0g
b2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAg
Ky8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMjIzOjE5Ml0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0
b3IuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs3OjZdOiBcbg0KPiAg
ICAgICsvLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAg
ICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAgICAxMDogQml0cyBbMjIz
OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0K
PiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KPiAgICAgICsvLy8gICAg
ICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1
NToyMjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLg0KPiAg
ICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbTI1Nl9wZXJtdXRlX3Bz
KEEsIEMpIFwNCj4gICAgICArICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxwczI1Nigo
X192OHNmKShfX20yNTYpKEEpLCAoaW50KShDKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJt
dXRlcyAxMjgtYml0IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9m
DQo+ICAgICAgKy8vLyAgICBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRp
YXRlIGludGVnZXIgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICAr
Ly8vIF9fbTI1NmQgX21tMjU2X3Blcm11dGUyZjEyOF9wZChfX20yNTZkIFYxLCBfX20yNTZkIFYy
LCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk0yRjEyOCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBWMQ0KPiAg
ICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8v
LyBccGFyYW0gVjINCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGUuDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGlu
dGVnZXIgb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KPiAgICAg
ICsvLy8gICAgcGVybXV0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KPiAg
ICAgICsvLy8gICAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGll
ZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICBkZXN0aW5hdGlv
bi4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEg
VjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAg
ICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IEJpdHMgWzEyNzowXSBvZiBv
cGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KPiAgICAgICsv
Ly8gICAgICAgICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBCaXRzIFsy
NTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBC
aXRzIFs1OjRdOiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJh
bmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCj4gICAgICArLy8v
ICAgICAgICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogQml0cyBbMjU1
OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAg
IDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1
NToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxuDQo+ICAg
ICAgKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgICAgICBkZXN0aW5h
dGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21tMjU2
X3Blcm11dGUyZjEyOF9wZChWMSwgVjIsIE0pIFwNCj4gICAgICArICAoX19tMjU2ZClfX2J1aWx0
aW5faWEzMl92cGVybTJmMTI4X3BkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYxKSwgXA0KPiAgICAg
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19t
MjU2ZCkoVjIpLCAoaW50KShNKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJtdXRlcyAxMjgt
Yml0IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQo+ICAgICAg
Ky8vLyAgICBbOCB4IGZsb2F0XSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdl
ciBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMjU2
IF9tbTI1Nl9wZXJtdXRlMmYxMjhfcHMoX19tMjU2IFYxLCBfX20yNTYgVjIsIGNvbnN0IGludCBN
KTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTTJGMTI4IDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYxDQo+ICAgICAgKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIFYyDQo+
ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsv
Ly8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQg
c3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCj4gICAgICArLy8vICAgIHBlcm11
dGVkLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXTogXG4NCj4gICAgICArLy8vICAgIDAw
OiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzow
XSBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAg
MDE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8v
ICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMg
WzEyNzowXSBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsv
Ly8gICAgMTE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBi
aXRzIFsxMjc6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAg
ICArLy8vICAgIEJpdHMgWzU6NF06IFxuDQo+ICAgICAgKy8vLyAgICAwMDogQml0cyBbMTI3OjBd
IG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCj4g
ICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMDE6IEJpdHMgWzI1
NToxMjhdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0
aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMTA6IEJp
dHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0g
b2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIDEx
OiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1
OjEyOF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29w
aWVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJmMTI4X3BzKFYxLCBW
MiwgTSkgXA0KPiAgICAgICsgIChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm0yZjEyOF9wczI1
NigoX192OHNmKShfX20yNTYpKFYxKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20yNTYpKFYyKSwgKGludCkoTSkpDQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gUGVybXV0ZXMgMTI4LWJpdCBkYXRhIHZhbHVlcyBzdG9yZWQgaW4g
dHdvIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3JzLA0KPiAgICAgICsvLy8gICAgYXMgc3BlY2lmaWVk
IGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
Y29kZQ0KPiAgICAgICsvLy8gX19tMjU2aSBfbW0yNTZfcGVybXV0ZTJmMTI4X3NpMjU2KF9fbTI1
NmkgVjEsIF9fbTI1NmkgVjIsIGNvbnN0IGludCBNKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUEVSTTJGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIFYxDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+
ICAgICAgKy8vLyBccGFyYW0gVjINCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUg
aW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGll
ZC4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF06IFxuDQo+ICAgICAgKy8vLyAgICAwMDogQml0
cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2Yg
dGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIDAxOiBC
aXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBd
IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAx
MDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6
MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAg
IDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBb
MTI3OjBdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8v
LyAgICBCaXRzIFs1OjRdOiBcbg0KPiAgICAgICsvLy8gICAgMDA6IEJpdHMgWzEyNzowXSBvZiBv
cGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIDAxOiBCaXRzIFsyNTU6MTI4
XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQo+
ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIDEwOiBCaXRzIFsx
Mjc6MF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAxMTogQml0
cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhd
IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4N
Cj4gICAgICArI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXA0K
PiAgICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZwZXJtMmYxMjhfc2kyNTYoKF9fdjhz
aSkoX19tMjU2aSkoVjEpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShWMiksIChpbnQpKE0pKQ0KPiAgICAgICsN
Cj4gICAgICArLyogVmVjdG9yIEJsZW5kICovDQo+ICAgICAgKy8vLyBNZXJnZXMgNjQtYml0IGRv
dWJsZS1wcmVjaXNpb24gZGF0YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCj4gICAg
ICArLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBhcyBzcGVjaWZp
ZWQgYnkgdGhlIGltbWVkaWF0ZQ0KPiAgICAgICsvLy8gICAgaW50ZWdlciBvcGVyYW5kLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMjU2ZCBfbW0yNTZfYmxlbmRf
cGQoX19tMjU2ZCBWMSwgX19tMjU2ZCBWMiwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVu
ZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZCTEVORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXHBhcmFtIFYxDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBWMg0KPiAgICAgICsvLy8gICAgQSAyNTYt
Yml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAg
ICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgWzM6
MF0gc3BlY2lmeWluZyBob3cgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNv
cGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUNCj4g
ICAgICArLy8vICAgIGluZGV4IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMg
MCwgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0DQo+ICAgICAgKy8vLyAgICBlbGVtZW50IGluIG9w
ZXJhbmQgXGEgVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZQ0KPiAgICAg
ICsvLy8gICAgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9u
ZGluZyA2NC1iaXQgZWxlbWVudCBpbg0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBcYSBWMiBpcyBj
b3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgY29waWVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfYmxlbmRfcGQoVjEsIFYy
LCBNKSBcDQo+ICAgICAgKyAgKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYmxlbmRwZDI1NigoX192
NGRmKShfX20yNTZkKShWMSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChfX3Y0ZGYpKF9fbTI1NmQpKFYyKSwgKGludCkoTSkpDQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gTWVyZ2VzIDMyLWJpdCBzaW5nbGUtcHJlY2lzaW9uIGRhdGEgdmFsdWVzIHN0b3Jl
ZCBpbiBlaXRoZXIgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9m
IFs4IHggZmxvYXRdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZQ0KPiAgICAgICsvLy8g
ICAgaW50ZWdlciBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsv
Ly8gX19tMjU2IF9tbTI1Nl9ibGVuZF9wcyhfX20yNTYgVjEsIF9fbTI1NiBWMiwgY29uc3QgaW50
IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYxDQo+ICAgICAgKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIFYyDQo+
ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsv
Ly8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQs
IHdpdGggbWFzayBiaXRzIFs3OjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0KPiAgICAgICsvLy8gICAg
dmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29y
cmVzcG9uZHMgdG8gdGhlDQo+ICAgICAgKy8vLyAgICBpbmRleCBvZiBhIGNvcGllZCB2YWx1ZS4g
V2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdA0KPiAgICAgICsv
Ly8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3Np
dGlvbiBpbiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBXaGVuIGEgbWFzayBiaXQg
aXMgMSwgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4NCj4gICAgICArLy8vICAg
IG9wZXJhbmQgXGEgVjIgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSBkZXN0
aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW0y
NTZfYmxlbmRfcHMoVjEsIFYyLCBNKSBcDQo+ICAgICAgKyAgKF9fbTI1NilfX2J1aWx0aW5faWEz
Ml9ibGVuZHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQo+ICAgICAgKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVjIpLCAoaW50KShNKSkN
Cj4gICAgICArDQo+ICAgICAgKy8vLyBNZXJnZXMgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gZGF0
YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCj4gICAgICArLy8vICAgIHR3byAyNTYt
Yml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIDI1Ni1iaXQg
dmVjdG9yDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFZQRCA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
Yg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19jDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9wZXJh
bmQsIHdpdGggbWFzayBiaXRzIDI1NSwgMTkxLCAxMjcsIGFuZCA2MyBzcGVjaWZ5aW5nDQo+ICAg
ICAgKy8vLyAgICBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24g
b2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzDQo+ICAgICAgKy8vLyAgICB0byB0aGUgbW9zdCBz
aWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0
aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFu
ZCBcYSBfX2EgaXMgY29waWVkIHRvIHRoZSBzYW1lDQo+ICAgICAgKy8vLyAgICBwb3NpdGlvbiBp
biB0aGUgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGlu
Zw0KPiAgICAgICsvLy8gICAgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX2IgaXMgY29w
aWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRp
b24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUg
X19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2JsZW5kdl9wZChfX20y
NTZkIF9fYSwgX19tMjU2ZCBfX2IsIF9fbTI1NmQgX19jKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2JsZW5kdnBkMjU2KA0KPiAgICAgICsgICAg
KF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iLCAoX192NGRmKV9fYyk7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBNZXJnZXMgMzItYml0IHNpbmdsZS1wcmVjaXNpb24gZGF0YSB2YWx1
ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCj4gICAgICArLy8vICAgIHR3byAyNTYtYml0IHZl
Y3RvcnMgb2YgWzggeCBmbG9hdF0sIGFzIHNwZWNpZmllZCBieSB0aGUgMjU2LWJpdCB2ZWN0b3IN
Cj4gICAgICArLy8vICAgIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19jDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9wZXJhbmQsIHdpdGgg
bWFzayBiaXRzIDI1NSwgMjIzLCAxOTEsIDE1OSwgMTI3LCA5NSwgNjMsDQo+ICAgICAgKy8vLyAg
ICBhbmQgMzEgc3BlY2lmeWluZyBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUg
cG9zaXRpb24gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0
aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4NCj4gICAgICAr
Ly8vICAgIGEgbWFzayBiaXQgaXMgMCwgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQg
aW4gb3BlcmFuZCBcYSBfX2EgaXMNCj4gICAgICArLy8vICAgIGNvcGllZCB0byB0aGUgc2FtZSBw
b3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUNCj4g
ICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBf
X2IgaXMgY29waWVkIHRvIHRoZSBzYW1lDQo+ICAgICAgKy8vLyAgICBwb3NpdGlvbiBpbiB0aGUg
ZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9ibGVuZHZf
cHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYiwgX19tMjU2IF9fYykNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2JsZW5kdnBzMjU2KA0KPiAgICAgICsg
ICAgKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iLCAoX192OHNmKV9fYyk7DQo+ICAgICAgK30NCj4g
ICAgICArDQo+ICAgICAgKy8qIFZlY3RvciBEb3QgUHJvZHVjdCAqLw0KPiAgICAgICsvLy8gQ29t
cHV0ZXMgdHdvIGRvdCBwcm9kdWN0cyBpbiBwYXJhbGxlbCwgdXNpbmcgdGhlIGxvd2VyIGFuZCB1
cHBlcg0KPiAgICAgICsvLy8gICAgaGFsdmVzIG9mIHR3byBbOCB4IGZsb2F0XSB2ZWN0b3JzIGFz
IGlucHV0IHRvIHRoZSB0d28gY29tcHV0YXRpb25zLCBhbmQNCj4gICAgICArLy8vICAgIHJldHVy
bmluZyB0aGUgdHdvIGRvdCBwcm9kdWN0cyBpbiB0aGUgbG93ZXIgYW5kIHVwcGVyIGhhbHZlcyBv
ZiB0aGUNCj4gICAgICArLy8vICAgIFs4IHggZmxvYXRdIHJlc3VsdC4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBjb250cm9scyB3aGlj
aCBpbnB1dCBlbGVtZW50cyB3aWxsDQo+ICAgICAgKy8vLyAgICBjb250cmlidXRlIHRvIHRoZSBk
b3QgcHJvZHVjdCwgYW5kIHdoZXJlIHRoZSBmaW5hbCByZXN1bHRzIGFyZSByZXR1cm5lZC4NCj4g
ICAgICArLy8vICAgIEluIGdlbmVyYWwsIGZvciBlYWNoIGRvdCBwcm9kdWN0LCB0aGUgZm91ciBj
b3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgaW5wdXQgdmVjdG9y
cyBhcmUgbXVsdGlwbGllZDsgdGhlIGZpcnN0IHR3byBhbmQgc2Vjb25kIHR3byBwcm9kdWN0cyBh
cmUNCj4gICAgICArLy8vICAgIHN1bW1lZCwgdGhlbiB0aGUgdHdvIHN1bXMgYXJlIGFkZGVkIHRv
IGZvcm0gdGhlIGZpbmFsIHJlc3VsdC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAg
ICArLy8vIF9fbTI1NiBfbW0yNTZfZHBfcHMoX19tMjU2IFYxLCBfX20yNTYgVjIsIGNvbnN0IGlu
dCBNKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQUyA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBWMQ0KPiAgICAgICsvLy8gICAgQSB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gdmFsdWVzLCB0cmVhdGVkIGFzIHR3byBbNCB4IGZsb2F0XSB2
ZWN0b3JzLg0KPiAgICAgICsvLy8gXHBhcmFtIFYyDQo+ICAgICAgKy8vLyAgICBBIHZlY3RvciBv
ZiBbOCB4IGZsb2F0XSB2YWx1ZXMsIHRyZWF0ZWQgYXMgdHdvIFs0IHggZmxvYXRdIHZlY3RvcnMu
DQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVn
ZXIgYXJndW1lbnQuIEJpdHMgWzc6NF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mDQo+ICAg
ICAgKy8vLyAgICB0aGUgaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGxvd2VzdA0KPiAgICAgICsvLy8gICAgZWxlbWVudCBhbmQgYml0IFs3
XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YgZWFjaCBbNCB4DQo+ICAg
ICAgKy8vLyAgICBmbG9hdF0gc3VidmVjdG9yLiBJZiBhIGJpdCBpcyBzZXQsIHRoZSBjb3JyZXNw
b25kaW5nIGVsZW1lbnRzIGZyb20gdGhlDQo+ICAgICAgKy8vLyAgICB0d28gaW5wdXQgdmVjdG9y
cyBhcmUgdXNlZCBhcyBhbiBpbnB1dCBmb3IgZG90IHByb2R1Y3Q7IG90aGVyd2lzZSB0aGF0DQo+
ICAgICAgKy8vLyAgICBpbnB1dCBpcyB0cmVhdGVkIGFzIHplcm8uIEJpdHMgWzM6MF0gZGV0ZXJt
aW5lIHdoaWNoIGVsZW1lbnRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0IHdpbGwgcmVj
ZWl2ZSBhIGNvcHkgb2YgdGhlIGZpbmFsIGRvdCBwcm9kdWN0LCB3aXRoIGJpdCBbMF0NCj4gICAg
ICArLy8vICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdCBlbGVtZW50IGFuZCBiaXQgWzNd
IGNvcnJlc3BvbmRpbmcgdG8gdGhlDQo+ICAgICAgKy8vLyAgICBoaWdoZXN0IGVsZW1lbnQgb2Yg
ZWFjaCBbNCB4IGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGRvdA0KPiAg
ICAgICsvLy8gICAgcHJvZHVjdCBpcyByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVt
ZW50OyBvdGhlcndpc2UgdGhhdCBlbGVtZW50DQo+ICAgICAgKy8vLyAgICBpcyBzZXQgdG8gemVy
by4gVGhlIGJpdG1hc2sgaXMgYXBwbGllZCBpbiB0aGUgc2FtZSB3YXkgdG8gZWFjaCBvZiB0aGUN
Cj4gICAgICArLy8vICAgIHR3byBwYXJhbGxlbCBkb3QgcHJvZHVjdCBjb21wdXRhdGlvbnMuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHR3byBkb3QgcHJvZHVjdHMuDQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X2RwX3Bz
KFYxLCBWMiwgTSkgXA0KPiAgICAgICsgIChfX20yNTYpX19idWlsdGluX2lhMzJfZHBwczI1Nigo
X192OHNmKShfX20yNTYpKFYxKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoX192OHNmKShfX20yNTYpKFYyKSwgKE0pKQ0KPiAgICAgICsNCj4gICAgICArLyog
VmVjdG9yIHNodWZmbGUgKi8NCj4gICAgICArLy8vIFNlbGVjdHMgOCBmbG9hdCB2YWx1ZXMgZnJv
bSB0aGUgMjU2LWJpdCBvcGVyYW5kcyBvZiBbOCB4IGZsb2F0XSwgYXMNCj4gICAgICArLy8vICAg
IHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gICAgVGhlIGZvdXIgc2VsZWN0ZWQgZWxlbWVudHMgaW4gZWFjaCBvcGVyYW5k
IGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uDQo+ICAgICAgKy8vLyAgICBhY2NvcmRpbmcg
dG8gdGhlIGJpdHMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4gVGhlIHNlbGVj
dGVkDQo+ICAgICAgKy8vLyAgICBlbGVtZW50cyBmcm9tIHRoZSBmaXJzdCAyNTYtYml0IG9wZXJh
bmQgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBhbmQNCj4gICAgICArLy8vICAgIGJpdHMgWzE5
MToxMjhdIG9mIHRoZSBkZXN0aW5hdGlvbiwgYW5kIHRoZSBzZWxlY3RlZCBlbGVtZW50cyBmcm9t
IHRoZQ0KPiAgICAgICsvLy8gICAgc2Vjb25kIDI1Ni1iaXQgb3BlcmFuZCBhcmUgY29waWVkIHRv
IGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMgWzI1NToxOTJdIG9mDQo+ICAgICAgKy8vLyAgICB0aGUg
ZGVzdGluYXRpb24uIEZvciBleGFtcGxlLCBpZiBiaXRzIFs3OjBdIG9mIHRoZSBpbW1lZGlhdGUg
b3BlcmFuZA0KPiAgICAgICsvLy8gICAgY29udGFpbiBhIHZhbHVlIG9mIDB4RkYsIHRoZSAyNTYt
Yml0IGRlc3RpbmF0aW9uIHZlY3RvciB3b3VsZCBjb250YWluIHRoZQ0KPiAgICAgICsvLy8gICAg
Zm9sbG93aW5nIHZhbHVlczogYls3XSwgYls3XSwgYVs3XSwgYVs3XSwgYlszXSwgYlszXSwgYVsz
XSwgYVszXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTI1NiBf
bW0yNTZfc2h1ZmZsZV9wcyhfX20yNTYgYSwgX19tMjU2IGIsIGNvbnN0IGludCBtYXNrKTsNCj4g
ICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU0hVRlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIGENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZSBmb3VyIHNlbGVjdGVkIGVsZW1lbnRzIGluIHRoaXMN
Cj4gICAgICArLy8vICAgIG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBhbmQgYml0
cyBbMTkxOjEyOF0gaW4gdGhlIGRlc3RpbmF0aW9uLA0KPiAgICAgICsvLy8gICAgYWNjb3JkaW5n
IHRvIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRpYXRlIG9wZXJhbmQuDQo+ICAgICAg
Ky8vLyBccGFyYW0gYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XS4gVGhlIGZvdXIgc2VsZWN0ZWQgZWxlbWVudHMgaW4gdGhpcw0KPiAgICAgICsvLy8gICAg
b3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMgWzI1NToxOTJdIGlu
IHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24sIGFjY29yZGluZyB0byB0aGUgYml0cyBz
cGVjaWZpZWQgaW4gdGhlIGltbWVkaWF0ZSBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIG1h
c2sNCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgtYml0
IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8NCj4gICAgICArLy8vICAgIGNvcHkg
ZnJvbSBcYSBhIGFuZCBcYSBiIFxuLg0KPiAgICAgICsvLy8gICAgQml0cyBbMzowXSBzcGVjaWZ5
IHRoZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBhLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbNzo0XSBzcGVjaWZ5IHRoZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBiLiBc
bg0KPiAgICAgICsvLy8gICAgVGhlIGRlc3RpbmF0aW9ucyB3aXRoaW4gdGhlIDI1Ni1iaXQgZGVz
dGluYXRpb24gYXJlIGFzc2lnbmVkIHZhbHVlcyBhcw0KPiAgICAgICsvLy8gICAgZm9sbG93cywg
YWNjb3JkaW5nIHRvIHRoZSBiaXQgdmFsdWUgYXNzaWdubWVudHMgZGVzY3JpYmVkIGJlbG93OiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRv
IGJpdHMgWzMxOjBdIGFuZCBbMTU5OjEyOF0gaW4gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5h
dGlvbi4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQgdG8gYXNzaWduIHZh
bHVlcyB0byBiaXRzIFs2MzozMl0gYW5kIFsxOTE6MTYwXSBpbiB0aGUNCj4gICAgICArLy8vICAg
IGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNTo0XSBhcmUgdXNlZCB0byBh
c3NpZ24gdmFsdWVzIHRvIGJpdHMgWzk1OjY0XSBhbmQgWzIyMzoxOTJdIGluIHRoZQ0KPiAgICAg
ICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs3OjZdIGFyZSB1
c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2XSBhbmQgWzI1NToyMjRdIGluDQo+
ICAgICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXQgdmFs
dWUgYXNzaWdubWVudHM6IFxuDQo+ICAgICAgKy8vLyAgICAwMDogQml0cyBbMzE6MF0gYW5kIFsx
NTk6MTI4XSBhcmUgY29waWVkIGZyb20gdGhlIHNlbGVjdGVkIG9wZXJhbmQuIFxuDQo+ICAgICAg
Ky8vLyAgICAwMTogQml0cyBbNjM6MzJdIGFuZCBbMTkxOjE2MF0gYXJlIGNvcGllZCBmcm9tIHRo
ZSBzZWxlY3RlZCBvcGVyYW5kLiBcbg0KPiAgICAgICsvLy8gICAgMTA6IEJpdHMgWzk1OjY0XSBh
bmQgWzIyMzoxOTJdIGFyZSBjb3BpZWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3BlcmFuZC4gXG4NCj4g
ICAgICArLy8vICAgIDExOiBCaXRzIFsxMjc6OTZdIGFuZCBbMjU1OjIyNF0gYXJlIGNvcGllZCBm
cm9tIHRoZSBzZWxlY3RlZCBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQo+
ICAgICAgKyNkZWZpbmUgX21tMjU2X3NodWZmbGVfcHMoYSwgYiwgbWFzaykgXA0KPiAgICAgICsg
IChfX20yNTYpX19idWlsdGluX2lhMzJfc2h1ZnBzMjU2KChfX3Y4c2YpKF9fbTI1NikoYSksIFwN
Cj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192OHNmKShfX20y
NTYpKGIpLCAoaW50KShtYXNrKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBTZWxlY3RzIGZvdXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJvbSB0aGUgMjU2LWJpdCBvcGVyYW5kcyBvZg0KPiAg
ICAgICsvLy8gICAgWzQgeCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSB2
YWx1ZSBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBzZWxlY3RlZCBl
bGVtZW50cyBmcm9tIHRoZSBmaXJzdCAyNTYtYml0IG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRz
DQo+ICAgICAgKy8vLyAgICBbNjM6MF0gYW5kIGJpdHMgWzE5MToxMjhdIGluIHRoZSBkZXN0aW5h
dGlvbiwgYW5kIHRoZSBzZWxlY3RlZCBlbGVtZW50cw0KPiAgICAgICsvLy8gICAgZnJvbSB0aGUg
c2Vjb25kIDI1Ni1iaXQgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJp
dHMNCj4gICAgICArLy8vICAgIFsyNTU6MTkyXSBpbiB0aGUgZGVzdGluYXRpb24uIEZvciBleGFt
cGxlLCBpZiBiaXRzIFszOjBdIG9mIHRoZSBpbW1lZGlhdGUNCj4gICAgICArLy8vICAgIG9wZXJh
bmQgY29udGFpbiBhIHZhbHVlIG9mIDB4RiwgdGhlIDI1Ni1iaXQgZGVzdGluYXRpb24gdmVjdG9y
IHdvdWxkDQo+ICAgICAgKy8vLyAgICBjb250YWluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiBiWzNd
LCBhWzNdLCBiWzFdLCBhWzFdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsv
Ly8gX19tMjU2ZCBfbW0yNTZfc2h1ZmZsZV9wZChfX20yNTZkIGEsIF9fbTI1NmQgYiwgY29uc3Qg
aW50IG1hc2spOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTSFVGUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gYQ0KPiAgICAgICsvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccGFyYW0g
Yg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAg
ICAgKy8vLyBccGFyYW0gbWFzaw0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNv
bnRhaW5pbmcgOC1iaXQgdmFsdWVzIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8NCj4gICAg
ICArLy8vICAgIGNvcHkgZnJvbSBcYSBhIGFuZCBcYSBiOiBcbg0KPiAgICAgICsvLy8gICAgQml0
IFswXT0wOiBCaXRzIFs2MzowXSBhcmUgY29waWVkIGZyb20gXGEgYSB0byBiaXRzIFs2MzowXSBv
ZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgQml0
IFswXT0xOiBCaXRzIFsxMjc6NjRdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRvIGJpdHMgWzYzOjBd
IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBC
aXQgWzFdPTA6IEJpdHMgWzYzOjBdIGFyZSBjb3BpZWQgZnJvbSBcYSBiIHRvIGJpdHMgWzEyNzo2
NF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAg
IEJpdCBbMV09MTogQml0cyBbMTI3OjY0XSBhcmUgY29waWVkIGZyb20gXGEgYiB0byBiaXRzIFsx
Mjc6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAgICAgKy8v
LyAgICBCaXQgWzJdPTA6IEJpdHMgWzE5MToxMjhdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRvIGJp
dHMgWzE5MToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXQgWzJdPTE6IEJpdHMgWzI1NToxOTJdIGFyZSBjb3BpZWQgZnJvbSBcYSBh
IHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxu
DQo+ICAgICAgKy8vLyAgICBCaXQgWzNdPTA6IEJpdHMgWzE5MToxMjhdIGFyZSBjb3BpZWQgZnJv
bSBcYSBiIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRp
b24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXQgWzNdPTE6IEJpdHMgWzI1NToxOTJdIGFyZSBjb3Bp
ZWQgZnJvbSBcYSBiIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVz
dGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXSBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUg
X21tMjU2X3NodWZmbGVfcGQoYSwgYiwgbWFzaykgXA0KPiAgICAgICsgIChfX20yNTZkKV9fYnVp
bHRpbl9pYTMyX3NodWZwZDI1NigoX192NGRmKShfX20yNTZkKShhKSwgXA0KPiAgICAgICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShiKSwgKGlu
dCkobWFzaykpDQo+ICAgICAgKw0KPiAgICAgICsvKiBDb21wYXJlICovDQo+ICAgICAgKyNkZWZp
bmUgX0NNUF9FUV9PUSAgICAweDAwIC8qIEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAg
Ki8NCj4gICAgICArI2RlZmluZSBfQ01QX0xUX09TICAgIDB4MDEgLyogTGVzcy10aGFuIChvcmRl
cmVkLCBzaWduYWxpbmcpICAqLw0KPiAgICAgICsjZGVmaW5lIF9DTVBfTEVfT1MgICAgMHgwMiAv
KiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgICovDQo+ICAgICAgKyNk
ZWZpbmUgX0NNUF9VTk9SRF9RICAweDAzIC8qIFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgICov
DQo+ICAgICAgKyNkZWZpbmUgX0NNUF9ORVFfVVEgICAweDA0IC8qIE5vdC1lcXVhbCAodW5vcmRl
cmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX05MVF9VUyAgIDB4
MDUgLyogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KPiAgICAgICsj
ZGVmaW5lIF9DTVBfTkxFX1VTICAgMHgwNiAvKiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9y
ZGVyZWQsIHNpZ25hbGluZykgICovDQo+ICAgICAgKyNkZWZpbmUgX0NNUF9PUkRfUSAgICAweDA3
IC8qIE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpICAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX0VR
X1VRICAgIDB4MDggLyogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQo+ICAg
ICAgKyNkZWZpbmUgX0NNUF9OR0VfVVMgICAweDA5IC8qIE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1
YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX05HVF9V
UyAgIDB4MGEgLyogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0K
PiAgICAgICsjZGVmaW5lIF9DTVBfRkFMU0VfT1EgMHgwYiAvKiBGYWxzZSAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgICovDQo+ICAgICAgKyNkZWZpbmUgX0NNUF9ORVFfT1EgICAweDBjIC8qIE5v
dC1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQo+ICAgICAgKyNkZWZpbmUgX0NN
UF9HRV9PUyAgICAweDBkIC8qIEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFs
aW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX0dUX09TICAgIDB4MGUgLyogR3JlYXRlci10
aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KPiAgICAgICsjZGVmaW5lIF9DTVBfVFJVRV9V
USAgMHgwZiAvKiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLw0KPiAgICAgICsj
ZGVmaW5lIF9DTVBfRVFfT1MgICAgMHgxMCAvKiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAg
Ki8NCj4gICAgICArI2RlZmluZSBfQ01QX0xUX09RICAgIDB4MTEgLyogTGVzcy10aGFuIChvcmRl
cmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX0xFX09RICAgIDB4
MTIgLyogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4g
ICAgICArI2RlZmluZSBfQ01QX1VOT1JEX1MgIDB4MTMgLyogVW5vcmRlcmVkIChzaWduYWxpbmcp
ICAqLw0KPiAgICAgICsjZGVmaW5lIF9DTVBfTkVRX1VTICAgMHgxNCAvKiBOb3QtZXF1YWwgKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX05MVF9VUSAgIDB4
MTUgLyogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4gICAg
ICArI2RlZmluZSBfQ01QX05MRV9VUSAgIDB4MTYgLyogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAo
dW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX09SRF9T
ICAgIDB4MTcgLyogT3JkZXJlZCAoc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01Q
X0VRX1VTICAgIDB4MTggLyogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCj4gICAg
ICArI2RlZmluZSBfQ01QX05HRV9VUSAgIDB4MTkgLyogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVh
bCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX05H
VF9VUSAgIDB4MWEgLyogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5n
KSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX0ZBTFNFX09TIDB4MWIgLyogRmFsc2UgKG9yZGVy
ZWQsIHNpZ25hbGluZykgICovDQo+ICAgICAgKyNkZWZpbmUgX0NNUF9ORVFfT1MgICAweDFjIC8q
IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01Q
X0dFX09RICAgIDB4MWQgLyogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01QX0dUX09RICAgIDB4MWUgLyogR3JlYXRl
ci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCj4gICAgICArI2RlZmluZSBfQ01Q
X1RSVUVfVVMgIDB4MWYgLyogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KPiAgICAg
ICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZXMgb2YgdHdvDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdLCB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUNCj4g
ICAgICArLy8vICAgIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gICAgUmV0dXJucyBhIFsyIHggZG91YmxlXSB2ZWN0b3IgY29uc2lzdGluZyBvZiB0
d28gZG91YmxlcyBjb3JyZXNwb25kaW5nIHRvDQo+ICAgICAgKy8vLyAgICB0aGUgdHdvIGNvbXBh
cmlzb24gcmVzdWx0czogemVybyBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZSwgYW5kIGFsbCAx
J3MNCj4gICAgICArLy8vICAgIGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhkIF9tbV9jbXBfcGQoX19tMTI4ZCBh
LCBfX20xMjhkIGIsIGNvbnN0IGludCBjKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
YQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAg
ICAgKy8vLyBccGFyYW0gYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccGFyYW0gYw0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRp
YXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29t
cGFyaXNvbg0KPiAgICAgICsvLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4NCj4gICAgICArLy8v
ICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8g
ICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAg
ICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAg
ICArLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8v
ICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAg
ICsvLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+
ICAgICAgKy8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNp
Z25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcp
IFxuDQo+ICAgICAgKy8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5n
KSBcbg0KPiAgICAgICsvLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5v
cmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10
aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEI6IEZhbHNl
IChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwQzogTm90LWVx
dWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwRDogR3Jl
YXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAg
ICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8v
ICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8v
ICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAw
eDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAg
ICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+
ICAgICAgKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4NCj4gICAgICArLy8v
ICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8v
LyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+
ICAgICAgKy8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxpbmcp
IFxuDQo+ICAgICAgKy8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10
aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDFCOiBG
YWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxQzogTm90LWVx
dWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDFEOiBHcmVhdGVy
LXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAg
ICAweDFFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAg
Ky8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykNCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArI2RlZmluZSBfbW1fY21wX3BkKGEsIGIsIGMpIFwN
Cj4gICAgICArICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBwZCgoX192MmRmKShfX20xMjhk
KShhKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYp
KF9fbTEyOGQpKGIpLCAoYykpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAg
ICAgICsvLy8gICAgWzQgeCBmbG9hdF0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5
IHRoZSBpbW1lZGlhdGUgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgb3BlcmFuZC4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyAgICBSZXR1cm5zIGEgWzQgeCBmbG9hdF0gdmVjdG9yIGNvbnNpc3Rp
bmcgb2YgZm91ciBmbG9hdHMgY29ycmVzcG9uZGluZyB0bw0KPiAgICAgICsvLy8gICAgdGhlIGZv
dXIgY29tcGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLCBh
bmQgYWxsIDEncw0KPiAgICAgICsvLy8gICAgaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTEyOCBfbW1fY21wX3BzKF9f
bTEyOCBhLCBfX20xMjggYiwgY29uc3QgaW50IGMpOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDTVBQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBhDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
PiAgICAgICsvLy8gXHBhcmFtIGINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gYw0KPiAgICAgICsvLy8gICAgQW4gaW1t
ZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2gg
Y29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgb3BlcmF0aW9uIHRvIHVzZTogXG4NCj4gICAgICAr
Ly8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8v
LyAgICAweDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4g
ICAgICArLy8vICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCj4gICAgICAr
Ly8vICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAg
ICAgICsvLy8gICAgMHgwNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxp
bmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFs
aW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAo
dW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBBOiBOb3QtZ3JlYXRl
ci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEI6IEZh
bHNlIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwQzogTm90
LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwRDog
R3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8v
LyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICAr
Ly8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICAr
Ly8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAg
ICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8v
LyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4NCj4gICAgICAr
Ly8vICAgIDB4MTQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAg
Ky8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDE3OiBPcmRlcmVkIChzaWduYWxp
bmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQo+ICAgICAgKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDFBOiBOb3QtZ3JlYXRl
ci10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDFC
OiBGYWxzZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxQzogTm90
LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDFEOiBHcmVh
dGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8v
LyAgICAweDFFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAg
ICAgKy8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVyZWQsIHNpZ25hbGluZykNCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9jbXBfcHMoYSwgYiwgYykg
XA0KPiAgICAgICsgIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wcHMoKF9fdjRzZikoX19tMTI4
KShhKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZiko
X19tMTI4KShiKSwgKGMpKQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdHdvDQo+ICAgICAg
Ky8vLyAgICAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCB1c2luZyB0aGUgb3BlcmF0
aW9uIHNwZWNpZmllZCBieSB0aGUNCj4gICAgICArLy8vICAgIGltbWVkaWF0ZSBpbnRlZ2VyIG9w
ZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgUmV0dXJucyBhIFs0IHggZG91Ymxl
XSB2ZWN0b3IgY29uc2lzdGluZyBvZiBmb3VyIGRvdWJsZXMgY29ycmVzcG9uZGluZyB0bw0KPiAg
ICAgICsvLy8gICAgdGhlIGZvdXIgY29tcGFyaXNvbiByZXN1bHRzOiB6ZXJvIGlmIHRoZSBjb21w
YXJpc29uIGlzIGZhbHNlLCBhbmQgYWxsIDEncw0KPiAgICAgICsvLy8gICAgaWYgdGhlIGNvbXBh
cmlzb24gaXMgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9f
bTI1NmQgX21tMjU2X2NtcF9wZChfX20yNTZkIGEsIF9fbTI1NmQgYiwgY29uc3QgaW50IGMpOw0K
PiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBhDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBiDQo+ICAgICAgKy8v
LyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJh
bSBjDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIGJp
dHMgWzQ6MF0gc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uDQo+ICAgICAgKy8vLyAgICBvcGVy
YXRpb24gdG8gdXNlOiBcbg0KPiAgICAgICsvLy8gICAgMHgwMDogRXF1YWwgKG9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDAxOiBMZXNzLXRoYW4gKG9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAo
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwMzogVW5vcmRlcmVkIChu
b24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwNDogTm90LWVxdWFsICh1bm9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA1OiBOb3QtbGVzcy10aGFu
ICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDY6IE5vdC1sZXNz
LXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAg
MHgwNzogT3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDg6IEVx
dWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA5OiBO
b3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAg
ICArLy8vICAgIDB4MEE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBc
bg0KPiAgICAgICsvLy8gICAgMHgwQjogRmFsc2UgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDBDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcp
IFxuDQo+ICAgICAgKy8vLyAgICAweDBEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEU6IEdyZWF0ZXItdGhhbiAob3JkZXJl
ZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwRjogVHJ1ZSAodW5vcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMDogRXF1YWwgKG9yZGVyZWQsIHNp
Z25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTI6IExlc3MtdGhhbi1vci1lcXVhbCAo
b3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTM6IFVub3JkZXJl
ZCAoc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxNDogTm90LWVxdWFsICh1bm9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRoYW4gKHVu
b3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTY6IE5vdC1sZXNz
LXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8v
ICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTg6IEVx
dWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MTk6IE5vdC1n
cmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAg
ICArLy8vICAgIDB4MUE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGlu
ZykgXG4NCj4gICAgICArLy8vICAgIDB4MUI6IEZhbHNlIChvcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDFDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4N
Cj4gICAgICArLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MUY6IFRydWUgKHVub3JkZXJl
ZCwgc2lnbmFsaW5nKQ0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICsj
ZGVmaW5lIF9tbTI1Nl9jbXBfcGQoYSwgYiwgYykgXA0KPiAgICAgICsgIChfX20yNTZkKV9fYnVp
bHRpbl9pYTMyX2NtcHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKGEpLCBcDQo+ICAgICAgKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19tMjU2ZCkoYiksIChjKSkN
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5n
IHZhbHVlcyBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQo+ICAgICAgKy8vLyAgICBbOCB4IGZs
b2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRl
Z2VyDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAg
IFJldHVybnMgYSBbOCB4IGZsb2F0XSB2ZWN0b3IgY29uc2lzdGluZyBvZiBlaWdodCBmbG9hdHMg
Y29ycmVzcG9uZGluZyB0bw0KPiAgICAgICsvLy8gICAgdGhlIGVpZ2h0IGNvbXBhcmlzb24gcmVz
dWx0czogemVybyBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZSwgYW5kIGFsbA0KPiAgICAgICsv
Ly8gICAgMSdzIGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxjb2RlDQo+ICAgICAgKy8vLyBfX20yNTYgX21tMjU2X2NtcF9wcyhfX20yNTYgYSwgX19tMjU2
IGIsIGNvbnN0IGludCBjKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QUFMgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gYQ0KPiAgICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxw
YXJhbSBiDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
PiAgICAgICsvLy8gXHBhcmFtIGMNCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24NCj4g
ICAgICArLy8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQo+ICAgICAgKy8vLyAgICAweDAwOiBF
cXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDE6IExl
c3MtdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwMjogTGVz
cy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAw
eDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA0OiBO
b3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4
MDU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8g
ICAgMHgwNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxu
DQo+ICAgICAgKy8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KPiAgICAg
ICsvLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAg
ICArLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2ln
bmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBCOiBGYWxzZSAob3JkZXJlZCwg
bm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEQ6IEdyZWF0ZXItdGhhbi1v
ci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwRTogR3Jl
YXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBGOiBU
cnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDEwOiBF
cXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMTogTGVzcy10
aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMjogTGVz
cy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8g
ICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDE0OiBO
b3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxNTog
Tm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8g
ICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5n
KSBcbg0KPiAgICAgICsvLy8gICAgMHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KPiAgICAg
ICsvLy8gICAgMHgxODogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgxOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRl
cmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxQjogRmFsc2UgKG9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3JkZXJl
ZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9yLWVx
dWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxRTogR3Jl
YXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgx
RjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfY21wX3BzKGEsIGIsIGMpIFwNCj4gICAgICAr
ICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2NtcHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoYSksIFwN
Cj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1
NikoYiksIChjKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBj
b3JyZXNwb25kaW5nIHNjYWxhciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZg0KPiAgICAgICsv
Ly8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHVzaW5nIHRoZSBvcGVy
YXRpb24gc3BlY2lmaWVkIGJ5IHRoZQ0KPiAgICAgICsvLy8gICAgaW1tZWRpYXRlIGludGVnZXIg
b3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBJZiB0aGUgcmVzdWx0IGlzIHRy
dWUsIGFsbCA2NCBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IgYXJlIHNldDsNCj4gICAg
ICArLy8vICAgIG90aGVyd2lzZSB0aGV5IGFyZSBjbGVhcmVkLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4ZCBfbW1fY21wX3NkKF9fbTEyOGQgYSwgX19tMTI4
ZCBiLCBjb25zdCBpbnQgYyk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIGENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8g
XHBhcmFtIGINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KPiAgICAgICsvLy8gXHBhcmFtIGMNCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRl
Z2VyIG9wZXJhbmQsIHdpdGggYml0cyBbNDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24N
Cj4gICAgICArLy8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQo+ICAgICAgKy8vLyAgICAweDAw
OiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDE6
IExlc3MtdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwMjog
TGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAg
ICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA0
OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAg
IDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgwNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQo+ICAgICAgKy8vLyAgICAweDA3OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KPiAg
ICAgICsvLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4g
ICAgICArLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5v
cmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBCOiBGYWxzZSAob3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MEQ6IEdyZWF0ZXItdGhh
bi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwRTog
R3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBG
OiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDEw
OiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMTogTGVz
cy10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMjog
TGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDE0
OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgx
NTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgxNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFs
aW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KPiAg
ICAgICsvLy8gICAgMHgxODogRXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAg
ICsvLy8gICAgMHgxOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24t
c2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5v
cmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxQjogRmFsc2UgKG9y
ZGVyZWQsIHNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9y
LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxRTog
R3JlYXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAg
MHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWduYWxpbmcpDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMuDQo+ICAgICAgKyNkZWZpbmUgX21tX2NtcF9zZChhLCBiLCBjKSBcDQo+ICAgICAg
KyAgKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wc2QoKF9fdjJkZikoX19tMTI4ZCkoYSksIFwN
Cj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhk
KShiKSwgKGMpKQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNv
cnJlc3BvbmRpbmcgc2NhbGFyIHZhbHVlcyBvZiB0d28gMTI4LWJpdA0KPiAgICAgICsvLy8gICAg
dmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkg
dGhlIGltbWVkaWF0ZQ0KPiAgICAgICsvLy8gICAgaW50ZWdlciBvcGVyYW5kLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vICAgIElmIHRoZSByZXN1bHQgaXMgdHJ1ZSwgYWxsIDMyIGJpdHMgb2Yg
dGhlIGRlc3RpbmF0aW9uIHZlY3RvciBhcmUgc2V0Ow0KPiAgICAgICsvLy8gICAgb3RoZXJ3aXNl
IHRoZXkgYXJlIGNsZWFyZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8v
LyBfX20xMjggX21tX2NtcF9zcyhfX20xMjggYSwgX19tMTI4IGIsIGNvbnN0IGludCBjKTsNCj4g
ICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QU1MgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxwYXJhbSBiDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIGMN
Cj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggYml0cyBb
NDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24NCj4gICAgICArLy8vICAgIG9wZXJhdGlv
biB0byB1c2U6IFxuDQo+ICAgICAgKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9uLXNp
Z25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDE6IExlc3MtdGhhbiAob3JkZXJlZCwgc2ln
bmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1z
aWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwg
bm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwNjogTm90LWxlc3MtdGhh
bi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDA3
OiBPcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwODogRXF1YWwg
KHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4gICAgICArLy8vICAgIDB4MDk6IE5vdC1n
cmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQo+
ICAgICAgKy8vLyAgICAweDBCOiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCj4g
ICAgICArLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4N
Cj4gICAgICArLy8vICAgIDB4MEQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2ln
bmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgwRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBz
aWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDBGOiBUcnVlICh1bm9yZGVyZWQsIG5vbi1z
aWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDEwOiBFcXVhbCAob3JkZXJlZCwgc2lnbmFs
aW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMTogTGVzcy10aGFuIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRl
cmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxMzogVW5vcmRlcmVkIChz
aWduYWxpbmcpIFxuDQo+ICAgICAgKy8vLyAgICAweDE0OiBOb3QtZXF1YWwgKHVub3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxNTogTm90LWxlc3MtdGhhbiAodW5vcmRl
cmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxNjogTm90LWxlc3MtdGhh
bi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAg
MHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxODogRXF1YWwg
KHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxOTogTm90LWdyZWF0
ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsv
Ly8gICAgMHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBc
bg0KPiAgICAgICsvLy8gICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCj4g
ICAgICArLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KPiAg
ICAgICsvLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSBcbg0KPiAgICAgICsvLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBz
aWduYWxpbmcpDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArI2RlZmlu
ZSBfbW1fY21wX3NzKGEsIGIsIGMpIFwNCj4gICAgICArICAoX19tMTI4KV9fYnVpbHRpbl9pYTMy
X2NtcHNzKChfX3Y0c2YpKF9fbTEyOCkoYSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoYiksIChjKSkNCj4gICAgICArDQo+ICAgICAg
Ky8vLyBUYWtlcyBhIFs4IHggaTMyXSB2ZWN0b3IgYW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVt
ZW50IHZhbHVlDQo+ICAgICAgKy8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3Rh
bnQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCj4gICAgICArLy8vICAg
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGkzMl0uDQo+ICAgICAgKy8vLyBccGFy
YW0gX19pbW0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgd2l0
aCBiaXRzIFsyOjBdIGRldGVybWluaW5nIHdoaWNoIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgZWxl
bWVudCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAz
Mi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgMzIgYml0cyBvZiBleHRlbmRl
ZA0KPiAgICAgICsvLy8gICAgcGFja2VkIGRhdGEuDQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X2V4
dHJhY3RfZXBpMzIoWCwgTikgXA0KPiAgICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4
dF92OHNpKChfX3Y4c2kpKF9fbTI1NmkpKFgpLCAoaW50KShOKSkNCj4gICAgICArDQo+ICAgICAg
Ky8vLyBUYWtlcyBhIFsxNiB4IGkxNl0gdmVjdG9yIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgZWxl
bWVudCB2YWx1ZQ0KPiAgICAgICsvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0
YW50IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4K0NPTVBPU0lURSA8L2M+DQo+ICAgICAgKy8vLyAg
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpMTZdLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9faW1tDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBv
cGVyYW5kIHdpdGggYml0cyBbMzowXSBkZXRlcm1pbmluZyB3aGljaCB2ZWN0b3INCj4gICAgICAr
Ly8vICAgIGVsZW1lbnQgaXMgZXh0cmFjdGVkIGFuZCByZXR1cm5lZC4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDE2IGJpdHMg
b2YgemVybyBleHRlbmRlZA0KPiAgICAgICsvLy8gICAgcGFja2VkIGRhdGEuDQo+ICAgICAgKyNk
ZWZpbmUgX21tMjU2X2V4dHJhY3RfZXBpMTYoWCwgTikgXA0KPiAgICAgICsgIChpbnQpKHVuc2ln
bmVkIHNob3J0KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjE2aGkoKF9fdjE2aGkpKF9fbTI1Nmkp
KFgpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoaW50KShOKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBUYWtlcyBhIFszMiB4
IGk4XSB2ZWN0b3IgYW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQo+ICAgICAg
Ky8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhU
UkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0
IGludGVnZXIgdmVjdG9yIG9mIFszMiB4IGk4XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2ltbQ0K
PiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMgWzQ6
MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yDQo+ICAgICAgKy8vLyAgICBlbGVtZW50IGlzIGV4
dHJhY3RlZCBhbmQgcmV0dXJuZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRl
Z2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCA4IGJpdHMgb2YgemVybyBleHRlbmRlZA0KPiAg
ICAgICsvLy8gICAgcGFja2VkIGRhdGEuDQo+ICAgICAgKyNkZWZpbmUgX21tMjU2X2V4dHJhY3Rf
ZXBpOChYLCBOKSBcDQo+ICAgICAgKyAgKGludCkodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEz
Ml92ZWNfZXh0X3YzMnFpKChfX3YzMnFpKShfX20yNTZpKShYKSwgXA0KPiAgICAgICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShOKSkNCj4g
ICAgICArDQo+ICAgICAgKyNpZmRlZiBfX3g4Nl82NF9fDQo+ICAgICAgKy8vLyBUYWtlcyBhIFs0
IHggaTY0XSB2ZWN0b3IgYW5kIHJldHVybnMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQo+ICAg
ICAgKy8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
RVhUUkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTY0XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2lt
bQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMg
WzE6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yDQo+ICAgICAgKy8vLyAgICBlbGVtZW50IGlz
IGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCA2NCBiaXRzIG9mIGV4dGVuZGVkDQo+ICAg
ICAgKy8vLyAgICBwYWNrZWQgZGF0YS4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfZXh0cmFjdF9l
cGk2NChYLCBOKSBcDQo+ICAgICAgKyAgKGxvbmcgbG9uZylfX2J1aWx0aW5faWEzMl92ZWNfZXh0
X3Y0ZGkoKF9fdjRkaSkoX19tMjU2aSkoWCksIChpbnQpKE4pKQ0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArDQo+ICAgICAgKy8vLyBUYWtlcyBhIFs4IHggaTMyXSB2ZWN0b3IgYW5kIHJlcGxhY2Vz
IHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQ0KPiAgICAgICsvLy8gICAgaW5kZXhlZCBieSB0aGUg
aW1tZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQgYnkgYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQo+
ICAgICAgKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwv
Yz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBpMzJdIHRvIGJlIHVz
ZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRo
ZSBpbnNlcnQgb3BlcmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9faW1tDQo+ICAgICAgKy8v
LyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVj
dG9yIGVsZW1lbnQgdG8gYmUNCj4gICAgICArLy8vICAgIHJlcGxhY2VkLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxl
bWVudCBpbmRleGVkIGJ5DQo+ICAgICAgKy8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4NCj4g
ICAgICArI2RlZmluZSBfbW0yNTZfaW5zZXJ0X2VwaTMyKFgsIEksIE4pIFwNCj4gICAgICArICAo
X19tMjU2aSlfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3Y4c2koKF9fdjhzaSkoX19tMjU2aSkoWCks
IFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCko
SSksIChpbnQpKE4pKQ0KPiAgICAgICsNCj4gICAgICArDQo+ICAgICAgKy8vLyBUYWtlcyBhIFsx
NiB4IGkxNl0gdmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCj4g
ICAgICArLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdp
dGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQo+ICAgICAgKy8vLyAgICBtb2RpZmllZCB2ZWN0
b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSB2ZWN0b3Igb2YgWzE2IHggaTE2XSB0byBiZSB1c2VkIGJ5IHRoZSBpbnNlcnQgb3BlcmF0aW9u
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQW4gaTE2IGludGVnZXIg
dmFsdWUuIFRoZSByZXBsYWNlbWVudCB2YWx1ZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb24uDQo+
ICAgICAgKy8vLyBccGFyYW0gX19pbW0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRl
Z2VyIHNwZWNpZnlpbmcgdGhlIGluZGV4IG9mIHRoZSB2ZWN0b3IgZWxlbWVudCB0byBiZQ0KPiAg
ICAgICsvLy8gICAgcmVwbGFjZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIGNvcHkgb2YgdmVj
dG9yIFxhIF9fYSwgYWZ0ZXIgcmVwbGFjaW5nIGl0cyBlbGVtZW50IGluZGV4ZWQgYnkNCj4gICAg
ICArLy8vICAgIFxhIF9faW1tIHdpdGggXGEgX19iLg0KPiAgICAgICsjZGVmaW5lIF9tbTI1Nl9p
bnNlcnRfZXBpMTYoWCwgSSwgTikgXA0KPiAgICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMy
X3ZlY19zZXRfdjE2aGkoKF9fdjE2aGkpKF9fbTI1NmkpKFgpLCBcDQo+ICAgICAgKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpDQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gVGFrZXMgYSBbMzIgeCBpOF0gdmVjdG9yIGFuZCByZXBsYWNlcyB0
aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCj4gICAgICArLy8vICAgIGluZGV4ZWQgYnkgdGhlIGlt
bWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQo+
ICAgICAgKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwv
Yz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzMyIHggaThdIHRvIGJlIHVz
ZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBbiBpOCBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9y
IHRoZSBpbnNlcnQgb3BlcmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9faW1tDQo+ICAgICAg
Ky8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUg
dmVjdG9yIGVsZW1lbnQgdG8gYmUNCj4gICAgICArLy8vICAgIHJlcGxhY2VkLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMg
ZWxlbWVudCBpbmRleGVkIGJ5DQo+ICAgICAgKy8vLyAgICBcYSBfX2ltbSB3aXRoIFxhIF9fYi4N
Cj4gICAgICArI2RlZmluZSBfbW0yNTZfaW5zZXJ0X2VwaTgoWCwgSSwgTikgXA0KPiAgICAgICsg
IChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjMycWkoKF9fdjMycWkpKF9fbTI1Nmkp
KFgpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
aW50KShJKSwgKGludCkoTikpDQo+ICAgICAgKw0KPiAgICAgICsjaWZkZWYgX194ODZfNjRfXw0K
PiAgICAgICsvLy8gVGFrZXMgYSBbNCB4IGk2NF0gdmVjdG9yIGFuZCByZXBsYWNlcyB0aGUgdmVj
dG9yIGVsZW1lbnQgdmFsdWUNCj4gICAgICArLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0
ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQo+ICAgICAg
Ky8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjgrQ09NUE9TSVRFIDwvYz4NCj4g
ICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzQgeCBpNjRdIHRvIGJlIHVzZWQgYnkg
dGhlIGluc2VydCBvcGVyYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlLiBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgZm9yIHRo
ZSBpbnNlcnQgb3BlcmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9faW1tDQo+ICAgICAgKy8v
LyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVj
dG9yIGVsZW1lbnQgdG8gYmUNCj4gICAgICArLy8vICAgIHJlcGxhY2VkLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxl
bWVudCBpbmRleGVkIGJ5DQo+ICAgICAgKy8vLyAgICAgXGEgX19pbW0gd2l0aCBcYSBfX2IuDQo+
ICAgICAgKyNkZWZpbmUgX21tMjU2X2luc2VydF9lcGk2NChYLCBJLCBOKSBcDQo+ICAgICAgKyAg
KF9fbTI1NmkpX19idWlsdGluX2lhMzJfdmVjX3NldF92NGRpKChfX3Y0ZGkpKF9fbTI1NmkpKFgp
LCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25n
IGxvbmcpKEkpLCAoaW50KShOKSkNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsv
KiBDb252ZXJzaW9uICovDQo+ICAgICAgKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGkz
Ml0gaW50byBhIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVERRMlBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXS4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNv
bnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfY3Z0ZXBpMzJfcGQoX19tMTI4aSBfX2EpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3Io
KF9fdjRzaSlfX2EsIF9fdjRkZik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b252ZXJ0cyBhIHZlY3RvciBvZiBbOCB4IGkzMl0gaW50byBhIHZlY3RvciBvZiBbOCB4IGZsb2F0
XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ1ZURFEyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9jdnRlcGkzMl9wcyhfX20yNTZp
IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9jb252
ZXJ0dmVjdG9yKChfX3Y4c2kpX19hLCBfX3Y4c2YpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29udmVydHMgYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gaW50byBh
IDEyOC1iaXQgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEQy
UFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2N2dHBkX3BzKF9fbTI1NmQgX19hKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0cGQy
cHMyNTYoKF9fdjRkZikgX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENv
bnZlcnRzIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDVlRQUzJEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1
NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9jdnRwc19lcGkzMihfX20yNTYg
X19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTZpKV9fYnVpbHRpbl9pYTMy
X2N2dHBzMmRxMjU2KChfX3Y4c2YpIF9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBDb252ZXJ0cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSAyNTYt
Yml0IHZlY3RvciBvZiBbNA0KPiAgICAgICsvLy8gICAgeCBkb3VibGVdLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJQRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2N2dHBzX3BkKF9fbTEyOCBfX2EpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2NvbnZlcnR2ZWN0b3Io
KF9fdjRzZilfX2EsIF9fdjRkZik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b252ZXJ0cyBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQNCj4gICAgICArLy8vICAgIHggaTMyXSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0
IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVuIGl0IGlzDQo+ICAgICAgKy8vLyAgICBpbmV4
YWN0Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZDVlRUUEQyRFEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUg
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2N2dHRwZF9lcGkzMihf
X20yNTZkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0
aW5faWEzMl9jdnR0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvbnZlcnRzIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGlu
dG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNA0KPiAgICAgICsvLy8gICAgeCBpMzJdLiBXaGVuIGEg
Y29udmVyc2lvbiBpcyBpbmV4YWN0LCB0aGUgdmFsdWUgcmV0dXJuZWQgaXMgcm91bmRlZA0KPiAg
ICAgICsvLy8gICAgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBjb250cm9sIGJpdHMgaW4gdGhl
IE1YQ1NSIHJlZ2lzdGVyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQRDJEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfY3Z0
cGRfZXBpMzIoX19tMjU2ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfY3Z0cGQyZHEyNTYoKF9fdjRkZikgX19hKTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGlu
dG8gYSB2ZWN0b3Igb2YgWzggeCBpMzJdLA0KPiAgICAgICsvLy8gICAgdHJ1bmNhdGluZyB0aGUg
cmVzdWx0IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVuIGl0IGlzIGluZXhhY3QuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNW
VFRQUzJEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9jdnR0cHNfZXBpMzIoX19tMjU2IF9fYSkN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0
cHMyZHEyNTYoKF9fdjhzZikgX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPGF2eGludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBm
dW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8v
LyAgICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgNjQgYml0IGRvdWJsZSBjb250YWluaW5nIHRoZSBmaXJzdCBlbGVtZW50
IG9mIHRoZSBpbnB1dCB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBkb3VibGUgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9jdnRzZF9mNjQoX19tMjU2ZCBfX2EpDQo+
ICAgICAgK3sNCj4gICAgICArIHJldHVybiBfX2FbMF07DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3Ig
b2YgWzggeCBpMzJdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDxhdnhp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0
aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAg
ICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGkzMl0uDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDMyIGJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGVs
ZW1lbnQgb2YgdGhlIGlucHV0IHZlY3Rvci4NCj4gICAgICArc3RhdGljIF9faW5saW5lIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2N2dHNpMjU2X3NpMzIoX19tMjU2aSBf
X2EpDQo+ICAgICAgK3sNCj4gICAgICArIF9fdjhzaSBfX2IgPSAoX192OHNpKV9fYTsNCj4gICAg
ICArIHJldHVybiBfX2JbMF07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSZXR1
cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPGF2eGludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlv
biBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAgICBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAzMiBiaXQgZmxvYXQgY29udGFpbmluZyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUg
aW5wdXQgdmVjdG9yLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgZmxvYXQgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbTI1Nl9jdnRzc19mMzIoX19tMjU2IF9fYSkNCj4gICAgICArew0K
PiAgICAgICsgcmV0dXJuIF9fYVswXTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyog
VmVjdG9yIHJlcGxpY2F0ZSAqLw0KPiAgICAgICsvLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb2Rk
LWluZGV4ZWQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAg
WzggeCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVk1PVlNIRFVQIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4
IGZsb2F0XS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzI1NToyMjRdIG9mIFxhIF9fYSBhcmUg
d3JpdHRlbiB0byBiaXRzIFsyNTU6MjI0XSBhbmQgWzIyMzoxOTJdIG9mDQo+ICAgICAgKy8vLyAg
ICB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTkxOjE2MF0gb2Yg
XGEgX19hIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxNjBdIGFuZCBbMTU5OjEyOF0gb2YNCj4g
ICAgICArLy8vICAgIHRoZSByZXR1cm4gdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsx
Mjc6OTZdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRd
IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmV0dXJuIHZhbHVlLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbNjM6MzJdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gYW5kIFsz
MTowXSBvZiB0aGUNCj4gICAgICArLy8vICAgIHJldHVybiB2YWx1ZS4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92
ZWQgYW5kIGR1cGxpY2F0ZWQNCj4gICAgICArLy8vICAgIHZhbHVlcy4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X21vdmVo
ZHVwX3BzKF9fbTI1NiBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+
ICAgICAgKyAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX21vdnNoZHVwMjU2ICgoX192
OHNmKV9fYSk7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVm
ZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYSwgMSwgMSwgMywgMywgNSwgNSwgNywg
Nyk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTW92
ZXMgYW5kIGR1cGxpY2F0ZXMgZXZlbi1pbmRleGVkIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0
b3Igb2YNCj4gICAgICArLy8vICAgIFs4IHggZmxvYXRdIHRvIGZsb2F0IHZhbHVlcyBpbiBhIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTTERVUCA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsy
MjM6MTkyXSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjIyNF0gYW5kIFsyMjM6
MTkyXSBvZg0KPiAgICAgICsvLy8gICAgdGhlIHJldHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzE1OToxMjhdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYw
XSBhbmQgWzE1OToxMjhdIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgcmV0dXJuIHZhbHVlLiBcbg0K
PiAgICAgICsvLy8gICAgQml0cyBbOTU6NjRdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmV0dXJuIHZhbHVl
LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMzE6MF0gb2YgXGEgX19hIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzYzOjMyXSBhbmQgWzMxOjBdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmV0dXJuIHZh
bHVlLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVwbGljYXRlZA0KPiAgICAgICsvLy8gICAgdmFs
dWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW0yNTZfbW92ZWxkdXBfcHMoX19tMjU2IF9fYSkNCj4gICAgICArew0KPiAgICAg
ICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lh
MzJfbW92c2xkdXAyNTYgKChfX3Y4c2YpX19hKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICBy
ZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19hLCAw
LCAwLCAyLCAyLCA0LCA0LCA2LCA2KTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBNb3ZlcyBhbmQgZHVwbGljYXRlcyBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGENCj4gICAgICArLy8vICAgIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXSB0byBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpbiBhIDI1Ni1iaXQN
Cj4gICAgICArLy8vICAgIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzYzOjBdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIGFu
ZCBbNjM6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXR1cm4gdmFsdWUuIFxuDQo+ICAgICAg
Ky8vLyAgICBCaXRzIFsxOTE6MTI4XSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1
OjE5Ml0gYW5kIFsxOTE6MTI4XSBvZg0KPiAgICAgICsvLy8gICAgdGhlIHJldHVybiB2YWx1ZS4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIG1vdmVkIGFuZA0KPiAgICAgICsvLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW0yNTZfbW92ZWR1cF9wZChfX20yNTZkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsj
aWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpIF9fYnVpbHRpbl9pYTMy
X3VucGNraHBkMjU2ICgoX192NGRmKV9fYSwgKF9fdjRkZilfX2EpOw0KPiAgICAgICsjZWxzZQ0K
PiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NGRmKV9fYSwgKF9f
djRkZilfX2EsIDAsIDAsIDIsIDIpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLyogVW5wYWNrIGFuZCBJbnRlcmxlYXZlICovDQo+ICAgICAgKy8vLyBVbnBh
Y2tzIHRoZSBvZGQtaW5kZXhlZCB2ZWN0b3IgZWxlbWVudHMgZnJvbSB0d28gMjU2LWJpdCB2ZWN0
b3JzIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGRvdWJsZV0gYW5kIGludGVybGVhdmVzIHRoZW0g
aW50byBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tIUEQgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4g
XG4NCj4gICAgICArLy8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6
MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzI1NToxOTJd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzEy
Nzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbMjU1OjE5Ml0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1
OjE5Ml0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZh
bHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbTI1Nl91bnBhY2toaV9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20y
NTZkKSBfX2J1aWx0aW5faWEzMl91bnBja2hwZDI1NiAoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19i
KTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0
b3IoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iLCAxLCA1LCAxKzIsIDUrMik7DQo+ICAgICAgKyNl
bmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gVW5wYWNrcyB0aGUgZXZlbi1p
bmRleGVkIHZlY3RvciBlbGVtZW50cyBmcm9tIHR3byAyNTYtYml0IHZlY3RvcnMgb2YNCj4gICAg
ICArLy8vICAgIFs0IHggZG91YmxlXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBcbg0KPiAgICAgICsv
Ly8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVy
biB2YWx1ZS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE5MToxMjhdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzE5MToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8vICAgIEJp
dHMgWzE5MToxMjhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXR1cm4g
dmFsdWUuIFxuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfdW5w
YWNrbG9fcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyNp
ZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJf
dW5wY2tscGQyNTYgKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQo+ICAgICAgKyNlbHNlDQo+
ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192
NGRmKV9fYiwgMCwgNCwgMCsyLCA0KzIpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIFVucGFja3MgdGhlIDMyLWJpdCB2ZWN0b3IgZWxlbWVudHMgMiwg
MywgNiBhbmQgNyBmcm9tIGVhY2ggb2YgdGhlDQo+ICAgICAgKy8vLyAgICB0d28gMjU2LWJpdCB2
ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAyNTYtYml0
DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLSFBTIDwvYz4g
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgcmV0dXJu
IHZhbHVlLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFs5NTo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMg
WzIyMzoxOTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZSByZXR1cm4gdmFs
dWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsyNTU6MjI0XSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsyMjM6MTkyXSBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4NCj4gICAg
ICArLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gb2YgdGhl
IHJldHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KPiAgICAgICsvLy8g
ICAgQml0cyBbMjIzOjE5Ml0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTkxOjE2MF0gb2YgdGhlIHJl
dHVybiB2YWx1ZS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzI1NToyMjRdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZSByZXR1cm4gdmFsdWUuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVy
bGVhdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tMjU2X3VucGFja2hpX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBf
X2IpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJu
IChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBzMjU2ICgoX192OHNmKV9fYSwgKF9fdjhz
ZilfX2IpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZs
ZXZlY3RvcigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IsIDIsIDEwLCAyKzEsIDEwKzEsIDYsIDE0
LCA2KzEsIDE0KzEpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIFVucGFja3MgdGhlIDMyLWJpdCB2ZWN0b3IgZWxlbWVudHMgMCwgMSwgNCBhbmQgNSBm
cm9tIGVhY2ggb2YgdGhlDQo+ICAgICAgKy8vLyAgICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4
IHggZmxvYXRdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAyNTYtYml0DQo+ICAgICAgKy8v
LyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzMx
OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQo+
ICAgICAgKy8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6NjRdIG9m
IHRoZSByZXR1cm4gdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxNTk6MTI4XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0KPiAgICAg
ICsvLy8gICAgQml0cyBbMTkxOjE2MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjIzOjE5Ml0gb2Yg
dGhlIHJldHVybiB2YWx1ZS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRz
IFszMTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzozMl0gb2YgdGhlIHJldHVybiB2YWx1ZS4g
XG4NCj4gICAgICArLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6
OTZdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxNTk6MTI4
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0K
PiAgICAgICsvLy8gICAgQml0cyBbMTkxOjE2MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjIy
NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW0yNTZfdW5wYWNrbG9fcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCj4gICAgICArew0K
PiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTI1NikgX19idWls
dGluX2lhMzJfdW5wY2tscHMyNTYgKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQo+ICAgICAg
KyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4c2Yp
X19hLCAoX192OHNmKV9fYiwgMCwgOCwgMCsxLCA4KzEsIDQsIDEyLCA0KzEsIDEyKzEpOw0KPiAg
ICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogQml0IFRlc3QgKi8N
Cj4gICAgICArLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdLCBwZXJmb3JtIGFuDQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1l
bnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KPiAg
ICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBm
b2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIg
b2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAgIHNp
Z24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4g
T3RoZXJ3aXNlIHRoZQ0KPiAgICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCj4g
ICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVj
aXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUg
Zmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50
DQo+ICAgICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNl
IHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRyaW5z
aWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+
ICAgICAgKy8vLyBccmV0dXJucyB0aGUgWkYgZmxhZyBpbiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KPiAgICAg
ICtfbW1fdGVzdHpfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBkKChfX3YyZGYpX19hLCAoX192MmRm
KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBHaXZlbiB0d28gMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgcGVyZm9ybSBhbg0KPiAg
ICAgICsvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1w
cmVjaXNpb24gZWxlbWVudCBpbiB0aGUNCj4gICAgICArLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0
b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHNlY29uZCBzb3VyY2UNCj4g
ICAgICArLy8vICAgIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgRUZM
QUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCj4gICAgICArLy8vICAgIElm
IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMg
d2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUg
MSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCj4gICAgICArLy8vICAg
IFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQo+ICAgICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KPiAg
ICAgICsvLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNp
Z24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KPiAgICAgICsvLy8gICAgaXMgMSwgdGhlIENG
IGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4N
Cj4gICAgICArLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBD
RiBmbGFnLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZURVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgdGhlIENGIGZs
YWcgaW4gdGhlIEVGTEFHUyByZWdpc3Rlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMxMjgNCj4gICAgICArX21tX3Rlc3RjX3BkKF9fbTEyOGQgX19hLCBf
X20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl92
dGVzdGNwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gR2l2ZW4gdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBb
MiB4IGRvdWJsZV0sIHBlcmZvcm0gYW4NCj4gICAgICArLy8vICAgIGVsZW1lbnQtYnktZWxlbWVu
dCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlDQo+ICAg
ICAgKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVt
ZW50IGluIHRoZSBzZWNvbmQgc291cmNlDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IuDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZv
bGxvd3M6IFxuDQo+ICAgICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBv
ZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KPiAgICAgICsvLy8gICAgc2ln
bi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBP
dGhlcndpc2UgdGhlDQo+ICAgICAgKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAg
ICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNp
c2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAgIHNpZ24tYml0IG9mIHRoZSBm
aXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQN
Cj4gICAgICArLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2Ug
dGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQo+ICAgICAgKy8vLyAgICBUaGlzIGludHJpbnNp
YyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCj4g
ICAgICArLy8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+
ICAgICAgKy8vLyBccmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0
IHRvIDAsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBpbnQg
X19ERUZBVUxUX0ZOX0FUVFJTMTI4DQo+ICAgICAgK19tbV90ZXN0bnpjX3BkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml92dGVzdG56Y3BkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Jz
IG9mIFs0IHggZmxvYXRdLCBwZXJmb3JtIGFuDQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVs
ZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0K
PiAgICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBh
cyBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBh
aXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAg
IHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZQ0KPiAgICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4N
Cj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1w
cmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBvZiB0
aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVt
ZW50DQo+ICAgICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3
aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRy
aW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFy
YW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
PiAgICAgICsvLy8gXHJldHVybnMgdGhlIFpGIGZsYWcuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQo+ICAgICAgK19tbV90ZXN0el9wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX3Z0ZXN0enBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Jz
IG9mIFs0IHggZmxvYXRdLCBwZXJmb3JtIGFuDQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVs
ZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0K
PiAgICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBh
cyBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBh
aXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAg
IHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZQ0KPiAgICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4N
Cj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1w
cmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBvZiB0
aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVt
ZW50DQo+ICAgICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3
aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRy
aW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIENGIGZsYWcuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFy
YW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
PiAgICAgICsvLy8gXHJldHVybnMgdGhlIENGIGZsYWcuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQo+ICAgICAgK19tbV90ZXN0Y19wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX3Z0ZXN0Y3BzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBHaXZlbiB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Jz
IG9mIFs0IHggZmxvYXRdLCBwZXJmb3JtIGFuDQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVs
ZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0K
PiAgICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBh
cyBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBh
aXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAg
IHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZQ0KPiAgICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4N
Cj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1w
cmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBvZiB0
aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVt
ZW50DQo+ICAgICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3
aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRy
aW5zaWMgcmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAs
DQo+ICAgICAgKy8vLyAgICBvdGhlcndpc2UgaXQgcmV0dXJucyAwLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUFMgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBz
ZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVybnMgMC4NCj4gICAgICArc3RhdGljIF9faW5saW5lIGlu
dCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCj4gICAgICArX21tX3Rlc3RuemNfcHMoX19tMTI4IF9f
YSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml92dGVzdG56Y3BzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Jz
IG9mIFs0IHggZG91YmxlXSwgcGVyZm9ybSBhbg0KPiAgICAgICsvLy8gICAgZWxlbWVudC1ieS1l
bGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgaW4gdGhl
DQo+ICAgICAgKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGlu
ZyBlbGVtZW50cyBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRl
ZCBhcyBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25l
IHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8v
ICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQg
dG8gMC4gT3RoZXJ3aXNlIHRoZQ0KPiAgICAgICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4g
XG4NCj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJs
ZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBv
ZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBl
bGVtZW50DQo+ICAgICAgKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3Ro
ZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBp
bnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyB0aGUgWkYgZmxhZy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3Rlc3R6X3BkKF9f
bTI1NmQgX19hLCBfX20yNTZkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1
aWx0aW5faWEzMl92dGVzdHpwZDI1NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIHBlcmZvcm0gYW4NCj4gICAgICArLy8vICAgIGVs
ZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVsZW1l
bnRzIGluIHRoZQ0KPiAgICAgICsvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNv
cnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNlY29uZCBzb3VyY2UNCj4gICAgICArLy8vICAg
IHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVy
IGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQo+
ICAgICAgKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZs
YWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCj4gICAgICArLy8vICAgIFpGIGZsYWcgaXMg
c2V0IHRvIDEuIFxuDQo+ICAgICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFp
ciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KPiAgICAgICsvLy8gICAg
c2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRo
ZSBzZWNvbmQgZWxlbWVudA0KPiAgICAgICsvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0
IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCj4gICAgICArLy8v
ICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFnLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZU
RVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgdGhlIENGIGZsYWcuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl90
ZXN0Y19wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICBy
ZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3RjcGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19i
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEdpdmVuIHR3byAyNTYtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBwZXJmb3JtIGFuDQo+ICAgICAg
Ky8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNp
c2lvbiBlbGVtZW50cyBpbiB0aGUNCj4gICAgICArLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3Ig
YW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzZWNvbmQgc291cmNlDQo+ICAg
ICAgKy8vLyAgICB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhlIEVGTEFH
UyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQo+ICAgICAgKy8vLyAgICBJZiB0
aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdo
ZXJlIHRoZQ0KPiAgICAgICsvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEs
IHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQo+ICAgICAgKy8vLyAgICBa
RiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVh
c3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCj4gICAg
ICArLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWdu
LWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCj4gICAgICArLy8vICAgIGlzIDEsIHRoZSBDRiBm
bGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQo+
ICAgICAgKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5k
IENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCj4gICAgICArLy8vICAgIG90aGVyd2lzZSBpdCByZXR1
cm5zIDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyAxIGlmIGJvdGgg
dGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bTI1Nl90ZXN0bnpjX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BkMjU2KChfX3Y0ZGYpX19hLCAo
X192NGRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBHaXZlbiB0d28g
MjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBwZXJmb3JtIGFu
DQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2lu
Z2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KPiAgICAgICsvLy8gICAgZmlyc3Qgc291cmNl
IHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJj
ZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRo
ZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8g
ICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVt
ZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRz
IGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KPiAgICAgICsv
Ly8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCj4gICAgICArLy8vICAgIElmIHRoZXJlIGlz
IGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhl
DQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0
aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQo+ICAgICAgKy8vLyAgICBpcyAxLCB0
aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAx
LiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2Yg
dGhlIFpGIGZsYWcuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgdGhlIFpG
IGZsYWcuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbTI1Nl90ZXN0el9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBzMjU2KChfX3Y4c2YpX19h
LCAoX192OHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBHaXZlbiB0
d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBwZXJmb3Jt
IGFuDQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUg
c2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KPiAgICAgICsvLy8gICAgZmlyc3Qgc291
cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNv
dXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAg
IFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KPiAgICAgICsv
Ly8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBl
bGVtZW50cyB3aGVyZSB0aGUNCj4gICAgICArLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1l
bnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KPiAgICAg
ICsvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCj4gICAgICArLy8vICAgIElmIHRoZXJl
IGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUg
dGhlDQo+ICAgICAgKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFu
ZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQo+ICAgICAgKy8vLyAgICBpcyAx
LCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0
byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUg
b2YgdGhlIENGIGZsYWcuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgdGhl
IENGIGZsYWcuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbTI1Nl90ZXN0Y19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BzMjU2KChfX3Y4c2Yp
X19hLCAoX192OHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBHaXZl
biB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBwZXJm
b3JtIGFuDQo+ICAgICAgKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0
aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyBpbiB0aGUNCj4gICAgICArLy8vICAgIGZpcnN0
IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzZWNv
bmQgc291cmNlDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQo+ICAg
ICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lz
aW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KPiAgICAgICsvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGgg
ZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQo+
ICAgICAgKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgSWYg
dGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3
aGVyZSB0aGUNCj4gICAgICArLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlz
IDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCj4gICAgICArLy8vICAg
IGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMg
c2V0IHRvIDEuIFxuDQo+ICAgICAgKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYg
Ym90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCj4gICAgICArLy8vICAgIG90
aGVyd2lzZSBpdCByZXR1cm5zIDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8v
LyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLCBvdGhlcndpc2Ug
cmV0dXJucyAwLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW0yNTZfdGVzdG56Y19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMyNTYoKF9f
djhzZilfX2EsIChfX3Y4c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IEdpdmVuIHR3byAyNTYtYml0IGludGVnZXIgdmVjdG9ycywgcGVyZm9ybSBhIGJpdC1ieS1iaXQg
Y29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgb2YgdGhlIHR3byBzb3VyY2UgdmVjdG9ycy4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQg
YXMgZm9sbG93czogXG4NCj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBw
YWlyIG9mIGJpdHMgd2hlcmUgYm90aCBiaXRzIGFyZSAxLCB0aGUgWkYgZmxhZw0KPiAgICAgICsv
Ly8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4N
Cj4gICAgICArLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJpdHMgd2hl
cmUgdGhlIGJpdCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UNCj4gICAgICArLy8vICAgIHZlY3RvciBp
cyAwIGFuZCB0aGUgYml0IGZyb20gdGhlIHNlY29uZCBzb3VyY2UgdmVjdG9yIGlzIDEsIHRoZSBD
RiBmbGFnDQo+ICAgICAgKy8vLyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFn
IGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0
aGUgdmFsdWUgb2YgdGhlIFpGIGZsYWcuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0
IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAg
QSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgdGhlIFpGIGZs
YWcuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbTI1Nl90ZXN0el9zaTI1NihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfcHRlc3R6MjU2KChfX3Y0ZGkpX19h
LCAoX192NGRpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBHaXZlbiB0
d28gMjU2LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIHBlcmZvcm0gYSBiaXQtYnktYml0IGNvbXBhcmlz
b24NCj4gICAgICArLy8vICAgIG9mIHRoZSB0d28gc291cmNlIHZlY3RvcnMuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxv
d3M6IFxuDQo+ICAgICAgKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBi
aXRzIHdoZXJlIGJvdGggYml0cyBhcmUgMSwgdGhlIFpGIGZsYWcNCj4gICAgICArLy8vICAgIGlz
IHNldCB0byAwLiBPdGhlcndpc2UgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQo+ICAgICAg
Ky8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJlIHRoZSBi
aXQgZnJvbSB0aGUgZmlyc3Qgc291cmNlDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IgaXMgMCBhbmQg
dGhlIGJpdCBmcm9tIHRoZSBzZWNvbmQgc291cmNlIHZlY3RvciBpcyAxLCB0aGUgQ0YgZmxhZw0K
PiAgICAgICsvLy8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQg
dG8gMS4gXG4NCj4gICAgICArLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVl
IG9mIHRoZSBDRiBmbGFnLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIHRoZSBDRiBmbGFnLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0y
NTZfdGVzdGNfc2kyNTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzI1NigoX192NGRpKV9fYSwgKF9fdjRk
aSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gR2l2ZW4gdHdvIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3JzLCBwZXJmb3JtIGEgYml0LWJ5LWJpdCBjb21wYXJpc29uDQo+ICAg
ICAgKy8vLyAgICBvZiB0aGUgdHdvIHNvdXJjZSB2ZWN0b3JzLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0K
PiAgICAgICsvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVy
ZSBib3RoIGJpdHMgYXJlIDEsIHRoZSBaRiBmbGFnDQo+ICAgICAgKy8vLyAgICBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZSBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KPiAgICAgICsvLy8gICAg
SWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSB0aGUgYml0IGZyb20g
dGhlIGZpcnN0IHNvdXJjZQ0KPiAgICAgICsvLy8gICAgdmVjdG9yIGlzIDAgYW5kIHRoZSBiaXQg
ZnJvbSB0aGUgc2Vjb25kIHNvdXJjZSB2ZWN0b3IgaXMgMSwgdGhlIENGIGZsYWcNCj4gICAgICAr
Ly8vICAgIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxu
DQo+ICAgICAgKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYg
YW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwNCj4gICAgICArLy8vICAgIG90aGVyd2lzZSBpdCBy
ZXR1cm5zIDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9y
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IGludGVn
ZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgMSBpZiBib3RoIHRoZSBaRiBhbmQgQ0Yg
ZmxhZ3MgYXJlIHNldCB0byAwLCBvdGhlcndpc2UgcmV0dXJucyAwLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfdGVzdG56Y19z
aTI1NihfX20yNTZpIF9fYSwgX19tMjU2aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gX19idWlsdGluX2lhMzJfcHRlc3RuemMyNTYoKF9fdjRkaSlfX2EsIChfX3Y0ZGkpX19iKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogVmVjdG9yIGV4dHJhY3Qgc2lnbiBtYXNr
ICovDQo+ICAgICAgKy8vLyBFeHRyYWN0cyB0aGUgc2lnbiBiaXRzIG9mIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMNCj4gICAgICArLy8vICAgIGluIGEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgb3JkZXIN
Cj4gICAgICArLy8vICAgIGJpdHMgb2YgdGhlIHJldHVybiB2YWx1ZS4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTVNLUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBkb3VibGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMg
d2l0aCBzaWduIGJpdHMgdG8gYmUgZXh0cmFjdGVkLg0KPiAgICAgICsvLy8gXHJldHVybnMgVGhl
IHNpZ24gYml0cyBmcm9tIHRoZSBvcGVyYW5kLCB3cml0dGVuIHRvIGJpdHMgWzM6MF0uDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1
Nl9tb3ZlbWFza19wZChfX20yNTZkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBf
X2J1aWx0aW5faWEzMl9tb3Ztc2twZDI1NigoX192NGRmKV9fYSk7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBFeHRyYWN0cyB0aGUgc2lnbiBiaXRzIG9mIHNpbmdsZS1wcmVjaXNp
b24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMNCj4gICAgICArLy8vICAgIGluIGEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gYW5kIHdyaXRlcyB0aGVtIHRvIHRoZSBsb3dlciBvcmRlcg0K
PiAgICAgICsvLy8gICAgYml0cyBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQUyA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
c2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZw0KPiAgICAgICsvLy8gICAgcG9pbnQgdmFsdWVzIHdp
dGggc2lnbiBiaXRzIHRvIGJlIGV4dHJhY3RlZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIFRoZSBz
aWduIGJpdHMgZnJvbSB0aGUgb3BlcmFuZCwgd3JpdHRlbiB0byBiaXRzIFs3OjBdLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZf
bW92ZW1hc2tfcHMoX19tMjU2IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9tb3Ztc2twczI1NigoX192OHNmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8qIFZlY3RvciBfX3plcm8gKi8NCj4gICAgICArLy8vIFplcm9lcyB0aGUgY29u
dGVudHMgb2YgYWxsIFhNTSBvciBZTU0gcmVnaXN0ZXJzLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZaRVJPQUxMIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUg
dm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArI2Vsc2UNCj4gICAgICArc3RhdGljIF9f
aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
LCBfX3RhcmdldF9fKCJhdngiKSkpDQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICtfbW0yNTZfemVy
b2FsbCh2b2lkKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19idWlsdGluX2lhMzJfdnplcm9hbGwo
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFplcm9lcyB0aGUgdXBwZXIgMTI4
IGJpdHMgKGJpdHMgMjU1OjEyOCkgb2YgYWxsIFlNTSByZWdpc3RlcnMuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlpFUk9VUFBFUiA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLw0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4g
ICAgICArc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgKyNl
bHNlDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygiYXZ4IikpKQ0KPiAgICAgICsjZW5k
aWYNCj4gICAgICArX21tMjU2X3plcm91cHBlcih2b2lkKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
X19idWlsdGluX2lhMzJfdnplcm91cHBlcigpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvKiBWZWN0b3IgbG9hZCB3aXRoIGJyb2FkY2FzdCAqLw0KPiAgICAgICsvLy8gTG9hZHMgYSBz
Y2FsYXIgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSBmcm9tIHRoZQ0KPiAg
ICAgICsvLy8gICAgc3BlY2lmaWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2EgYW5kIGJy
b2FkY2FzdHMgaXQgdG8gdGhlIGVsZW1lbnRzDQo+ICAgICAgKy8vLyAgICBvZiBhIFs0IHggZmxv
YXRdIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNUU1MgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBUaGUgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBiZSBicm9hZGNhc3QuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIDMyLWJpdCBlbGVt
ZW50cyBhcmUgc2V0DQo+ICAgICAgKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0IHZhbHVl
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0K
PiAgICAgICtfbW1fYnJvYWRjYXN0X3NzKGZsb2F0IGNvbnN0ICpfX2EpDQo+ICAgICAgK3sNCj4g
ICAgICArICBmbG9hdCBfX2YgPSAqX19hOw0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9f
IChfX20xMjgpKF9fdjRzZil7IF9fZiwgX19mLCBfX2YsIF9fZiB9Ow0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gTG9hZHMgYSBzY2FsYXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
ZyBwb2ludCB2YWx1ZSBmcm9tIHRoZQ0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIGFkZHJlc3Mg
cG9pbnRlZCB0byBieSBcYSBfX2EgYW5kIGJyb2FkY2FzdHMgaXQgdG8gdGhlIGVsZW1lbnRzDQo+
ICAgICAgKy8vLyAgICBvZiBhIFs0IHggZG91YmxlXSB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJST0FEQ0FTVFNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgVGhlIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWUgdG8g
YmUgYnJvYWRjYXN0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gd2hvc2UgNjQtYml0IGVsZW1lbnRzIGFyZSBzZXQNCj4gICAgICArLy8vICAg
IGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBf
X20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfYnJvYWRjYXN0X3NkKGRv
dWJsZSBjb25zdCAqX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgZG91YmxlIF9fZCA9ICpfX2E7
DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmQpKF9fdjRkZil7IF9fZCwg
X19kLCBfX2QsIF9fZCB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTG9hZHMg
YSBzY2FsYXIgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSBmcm9tIHRoZQ0K
PiAgICAgICsvLy8gICAgc3BlY2lmaWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2EgYW5k
IGJyb2FkY2FzdHMgaXQgdG8gdGhlIGVsZW1lbnRzDQo+ICAgICAgKy8vLyAgICBvZiBhIFs4IHgg
ZmxvYXRdIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNUU1MgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBUaGUgc2luZ2xlLXBy
ZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBiZSBicm9hZGNhc3QuDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIHdob3NlIDMyLWJpdCBl
bGVtZW50cyBhcmUgc2V0DQo+ICAgICAgKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0IHZh
bHVlLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW0yNTZfYnJvYWRjYXN0X3NzKGZsb2F0IGNvbnN0ICpfX2EpDQo+ICAgICAgK3sN
Cj4gICAgICArICBmbG9hdCBfX2YgPSAqX19hOw0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lv
bl9fIChfX20yNTYpKF9fdjhzZil7IF9fZiwgX19mLCBfX2YsIF9fZiwgX19mLCBfX2YsIF9fZiwg
X19mIH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMb2FkcyB0aGUgZGF0YSBm
cm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGZyb20gdGhlDQo+ICAgICAgKy8v
LyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0
cyBpdCB0byAxMjgtYml0DQo+ICAgICAgKy8vLyAgICBlbGVtZW50cyBpbiBhIDI1Ni1iaXQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNURjEyOCA8L2M+IGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIFRoZSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgYnJvYWRjYXN0Lg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2hvc2UgMTI4LWJp
dCBlbGVtZW50cyBhcmUgc2V0DQo+ICAgICAgKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0
IHZhbHVlLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tMjU2X2Jyb2FkY2FzdF9wZChfX20xMjhkIGNvbnN0ICpfX2EpDQo+ICAg
ICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTZk
KSBfX2J1aWx0aW5faWEzMl92YnJvYWRjYXN0ZjEyOF9wZDI1NiAoX19hKTsNCj4gICAgICArI2Vs
c2UNCj4gICAgICArICBfX20xMjhkIF9fYiA9IF9tbV9sb2FkdV9wZCgoY29uc3QgZG91YmxlICop
X19hKTsNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX3NodWZmbGV2ZWN0b3Io
KF9fdjJkZilfX2IsIChfX3YyZGYpX19iLA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAxLCAwLCAxKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMb2FkcyB0aGUgZGF0YSBmcm9tIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gZnJvbSB0aGUNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCBh
ZGRyZXNzIHBvaW50ZWQgdG8gYnkgXGEgX19hIGFuZCBicm9hZGNhc3RzIGl0IHRvIDEyOC1iaXQN
Cj4gICAgICArLy8vICAgIGVsZW1lbnRzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkJST0FEQ0FTVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBUaGUgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gdG8gYmUgYnJvYWRjYXN0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSB3aG9zZSAxMjgtYml0IGVsZW1lbnRzIGFyZSBzZXQN
Cj4gICAgICArLy8vICAgIGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuDQo+ICAgICAgK3N0
YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9i
cm9hZGNhc3RfcHMoX19tMTI4IGNvbnN0ICpfX2EpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVm
IF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9pYTMyX3Zicm9h
ZGNhc3RmMTI4X3BzMjU2IChfX2EpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIF9fbTEyOCBf
X2IgPSBfbW1fbG9hZHVfcHMoKGNvbnN0IGZsb2F0ICopX19hKTsNCj4gICAgICArICByZXR1cm4g
KF9fbTI1NilfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYiwgKF9fdjRzZilfX2Is
DQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwg
MiwgMywgMCwgMSwgMiwgMyk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvKiBTSU1EIGxvYWQgb3BzICovDQo+ICAgICAgKy8vLyBMb2FkcyA0IGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAzMi1ieXRlIGFsaWduZWQNCj4g
ICAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEg
dmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSAzMi1ieXRl
IGFsaWduZWQgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nDQo+ICAgICAg
Ky8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
dGhlIG1vdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9sb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuICooX19tMjU2ZCAqKV9fcDsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIExvYWRzIDggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBw
b2ludCB2YWx1ZXMgZnJvbSBhIDMyLWJ5dGUgYWxpZ25lZA0KPiAgICAgICsvLy8gICAgbWVtb3J5
IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVk1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8g
YSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBmbG9hdCB2YWx1ZXMuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1v
dmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tMjU2X2xvYWRfcHMoZmxvYXQgY29uc3QgKl9fcCkNCj4gICAgICAr
ew0KPiAgICAgICsgIHJldHVybiAqKF9fbTI1NiAqKV9fcDsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIExvYWRzIDQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1
ZXMgZnJvbSBhbiB1bmFsaWduZWQNCj4gICAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2lu
dGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0K
PiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZw0KPiAgICAgICsvLy8gICAgcG9pbnQgdmFsdWVzLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2xvYWR1X3BkKGRvdWJsZSBjb25z
dCAqX19wKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgc3RydWN0IF9fbG9hZHVfcGQgew0KPiAgICAg
ICsgICAgX19tMjU2ZCBfX3Y7DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9f
LCBfX21heV9hbGlhc19fKSk7DQo+ICAgICAgKyAgcmV0dXJuICgoc3RydWN0IF9fbG9hZHVfcGQq
KV9fcCktPl9fdjsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIExvYWRzIDggc2lu
Z2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhbiB1bmFsaWduZWQNCj4g
ICAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEg
dmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIg
dG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5n
DQo+ICAgICAgKy8vLyAgICBwb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAg
ICArX21tMjU2X2xvYWR1X3BzKGZsb2F0IGNvbnN0ICpfX3ApDQo+ICAgICAgK3sNCj4gICAgICAr
ICBzdHJ1Y3QgX19sb2FkdV9wcyB7DQo+ICAgICAgKyAgICBfX20yNTYgX192Ow0KPiAgICAgICsg
IH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KPiAgICAgICsg
IHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3BzKilfX3ApLT5fX3Y7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2VyIGRhdGEgZnJvbSBhIDMy
LWJ5dGUgYWxpZ25lZCBtZW1vcnkNCj4gICAgICArLy8vICAgIGxvY2F0aW9uIHBvaW50ZWQgdG8g
YnkgXGEgX19wIGludG8gZWxlbWVudHMgb2YgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZN
T1ZEUUEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19wDQo+ICAgICAgKy8vLyAgICBBIDMyLWJ5dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGludGVnZXINCj4gICAgICArLy8vICAgIHZhbHVl
cy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBtb3ZlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfbG9hZF9zaTI1NihfX20yNTZpIGNvbnN0
ICpfX3ApDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKl9fcDsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIExvYWRzIDI1NiBiaXRzIG9mIGludGVnZXIgZGF0YSBmcm9tIGFu
IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24NCj4gICAgICArLy8vICAgIHBvaW50ZWQgdG8gYnkg
XGEgX19wIGludG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUVUgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8v
LyAgICBBIHBvaW50ZXIgdG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50
ZWdlciB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUg
X19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2xvYWR1X3NpMjU2KF9f
bTI1NmkgY29uc3QgKl9fcCkNCj4gICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX2xvYWR1X3Np
MjU2IHsNCj4gICAgICArICAgIF9fbTI1NmkgX192Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVf
XygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KPiAgICAgICsgIHJldHVybiAoKHN0cnVj
dCBfX2xvYWR1X3NpMjU2KilfX3ApLT5fX3Y7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2VyIGRhdGEgZnJvbSBhbiB1bmFsaWduZWQgbWVt
b3J5IGxvY2F0aW9uDQo+ICAgICAgKy8vLyAgICBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEg
MjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhpcyBpbnRyaW5zaWMgbWF5DQo+ICAgICAgKy8vLyAg
ICBwZXJmb3JtIGJldHRlciB0aGFuIFxjIF9tbTI1Nl9sb2FkdV9zaTI1NiB3aGVuIHRoZSBkYXRh
IGNyb3NzZXMgYSBjYWNoZQ0KPiAgICAgICsvLy8gICAgbGluZSBib3VuZGFyeS4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTEREUVUg
PC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+
ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgaW50ZWdlciB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2xkZHF1
X3NpMjU2KF9fbTI1NmkgY29uc3QgKl9fcCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMjU2aSlfX2J1aWx0aW5faWEzMl9sZGRxdTI1NigoY2hhciBjb25zdCAqKV9fcCk7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8qIFNJTUQgc3RvcmUgb3BzICovDQo+ICAgICAgKy8v
LyBTdG9yZXMgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhIDI1
Ni1iaXQgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBvZiBbNCB4IGRvdWJsZV0gdG8gYSAzMi1ieXRl
IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkNCj4gICAgICArLy8vICAgIFxh
IF9fcC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0
byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCj4gICAgICArLy8vICAg
IGRvdWJsZS1wcmVjaXNpb24gZmxvYWluZyBwb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBj
b250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc3RvcmVfcGQoZG91Ymxl
ICpfX3AsIF9fbTI1NmQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgKihfX20yNTZkICopX19w
ID0gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KPiAg
ICAgICsvLy8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxv
Y2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBIDMy
LWJ5dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNl
aXZlIHRoZQ0KPiAgICAgICsvLy8gICAgZmxvYXQgdmFsdWVzLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSB2
b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc3RvcmVfcHMoZmxvYXQgKl9f
cCwgX19tMjU2IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgICooX19tMjU2ICopX19wID0gX19h
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KPiAgICAgICsv
Ly8gICAgb2YgWzQgeCBkb3VibGVdIHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gcG9p
bnRlZCB0byBieSBcYSBfX3AuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBh
IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZG91YmxlLXByZWNpc2lvbg0K
PiAgICAgICsvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUg
dm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3N0b3JldV9wZChkb3VibGUg
Kl9fcCwgX19tMjU2ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBzdHJ1Y3QgX19zdG9yZXVf
cGQgew0KPiAgICAgICsgICAgX19tMjU2ZCBfX3Y7DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9f
KChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQo+ICAgICAgKyAgKChzdHJ1Y3QgX19zdG9y
ZXVfcGQqKV9fcCktPl9fdiA9IF9fYTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFN0b3JlcyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMjU2
LWJpdCB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFs4IHggZmxvYXRdIHRvIGFuIHVuYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlVQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICAr
Ly8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0
aGUgZmxvYXQgdmFsdWVzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8g
YmUgbW92ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW0yNTZfc3RvcmV1X3BzKGZsb2F0ICpfX3AsIF9fbTI1NiBfX2EpDQo+ICAg
ICAgK3sNCj4gICAgICArICBzdHJ1Y3QgX19zdG9yZXVfcHMgew0KPiAgICAgICsgICAgX19tMjU2
IF9fdjsNCj4gICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFz
X18pKTsNCj4gICAgICArICAoKHN0cnVjdCBfX3N0b3JldV9wcyopX19wKS0+X192ID0gX19hOw0K
PiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIGludGVnZXIgdmFsdWVzIGZy
b20gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMzItYnl0ZQ0KPiAgICAgICsvLy8gICAg
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRQSA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4g
ICAgICArLy8vICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRp
b24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlDQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlcy4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc3RvcmVf
c2kyNTYoX19tMjU2aSAqX19wLCBfX20yNTZpIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgICpf
X3AgPSBfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMgaW50ZWdl
ciB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gYW4gdW5hbGlnbmVkDQo+
ICAgICAgKy8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1P
VkRRVSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdp
bGwgcmVjZWl2ZSB0aGUgaW50ZWdlciB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFs
dWVzIHRvIGJlIG1vdmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tMjU2X3N0b3JldV9zaTI1NihfX20yNTZpICpfX3AsIF9fbTI1
NmkgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgc3RydWN0IF9fc3RvcmV1X3NpMjU2IHsNCj4g
ICAgICArICAgIF9fbTI1NmkgX192Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNr
ZWRfXywgX19tYXlfYWxpYXNfXykpOw0KPiAgICAgICsgICgoc3RydWN0IF9fc3RvcmV1X3NpMjU2
KilfX3ApLT5fX3YgPSBfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8qIENvbmRp
dGlvbmFsIGxvYWQgb3BzICovDQo+ICAgICAgKy8vLyBDb25kaXRpb25hbGx5IGxvYWRzIGRvdWJs
ZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxlbWVudHMgZnJvbSBhDQo+ICAgICAgKy8vLyAg
ICBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaW50byBhIDEyOC1iaXQgdmVj
dG9yIG9mDQo+ICAgICAgKy8vLyAgICBbMiB4IGRvdWJsZV0sIGRlcGVuZGluZyBvbiB0aGUgbWFz
ayBiaXRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGRhdGENCj4gICAgICArLy8vICAgIGVsZW1lbnQu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1BU0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlv
biB0aGF0IGNvbnRhaW5zIHRoZSBkb3VibGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9h
dGluZyBwb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qg
c2lnbmlmaWNhbnQgYml0IG9mDQo+ICAgICAgKy8vLyAgICBlYWNoIGRhdGEgZWxlbWVudCByZXBy
ZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzayBiaXQgaXMgemVybywgdGhlDQo+ICAgICAg
Ky8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gaXMgbm90
IGxvYWRlZCBhbmQgdGhlDQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRo
ZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVz
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgN
Cj4gICAgICArX21tX21hc2tsb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wLCBfX20xMjhpIF9fbSkN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9tYXNr
bG9hZHBkKChjb25zdCBfX3YyZGYgKilfX3AsIChfX3YyZGkpX19tKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvbmRpdGlvbmFsbHkgbG9hZHMgZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZyBwb2ludCBlbGVtZW50cyBmcm9tIGENCj4gICAgICArLy8vICAgIG1lbW9yeSBsb2Nh
dGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YNCj4gICAg
ICArLy8vICAgIFs0IHggZG91YmxlXSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2Np
YXRlZCB3aXRoIGVhY2ggZGF0YQ0KPiAgICAgICsvLy8gICAgZWxlbWVudC4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0K
PiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFp
bnMgdGhlIGRvdWJsZS1wcmVjaXNpb24NCj4gICAgICArLy8vICAgIGZsb2F0aW5nIHBvaW50IHZh
bHVlcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IHF1YWR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUg
bW9zdA0KPiAgICAgICsvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggcXVhZHdvcmQgZWxl
bWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGENCj4gICAgICArLy8vICAgIG1hc2sg
Yml0IGlzIHplcm8sIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1vcnkgbG9jYXRp
b24gaXMgbm90DQo+ICAgICAgKy8vLyAgICBsb2FkZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZp
ZWxkIGluIHRoZSByZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2Fk
ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tMjU2X21hc2tsb2FkX3BkKGRvdWJsZSBjb25zdCAqX19wLCBfX20y
NTZpIF9fbSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5f
aWEzMl9tYXNrbG9hZHBkMjU2KChjb25zdCBfX3Y0ZGYgKilfX3AsDQo+ICAgICAgKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkaSlfX20pOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBzaW5nbGUt
cHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KPiAgICAgICsvLy8gICAg
bWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAxMjgtYml0IHZlY3Rv
ciBvZg0KPiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0sIGRlcGVuZGluZyBvbiB0aGUgbWFzayBi
aXRzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGRhdGENCj4gICAgICArLy8vICAgIGVsZW1lbnQuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1BU0tNT1ZQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0
aGF0IGNvbnRhaW5zIHRoZSBzaW5nbGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdGlu
ZyBwb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2ln
bmlmaWNhbnQgYml0IG9mDQo+ICAgICAgKy8vLyAgICBlYWNoIGRhdGEgZWxlbWVudCByZXByZXNl
bnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzayBiaXQgaXMgemVybywgdGhlDQo+ICAgICAgKy8v
LyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gaXMgbm90IGxv
YWRlZCBhbmQgdGhlDQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSBy
ZXR1cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQo+ICAg
ICAgK19tbV9tYXNrbG9hZF9wcyhmbG9hdCBjb25zdCAqX19wLCBfX20xMjhpIF9fbSkNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMo
KGNvbnN0IF9fdjRzZiAqKV9fcCwgKF9fdjRzaSlfX20pOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5n
IHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KPiAgICAgICsvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBv
aW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAyNTYtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8g
ICAgWzggeCBmbG9hdF0sIGRlcGVuZGluZyBvbiB0aGUgbWFzayBiaXRzIGFzc29jaWF0ZWQgd2l0
aCBlYWNoIGRhdGENCj4gICAgICArLy8vICAgIGVsZW1lbnQuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICAr
Ly8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBz
aW5nbGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzggeCBkd29yZF0gY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3QNCj4gICAg
ICArLy8vICAgIHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGR3b3JkIGVsZW1lbnQgcmVwcmVzZW50
cyB0aGUgbWFzayBiaXRzLiBJZiBhIG1hc2sNCj4gICAgICArLy8vICAgIGJpdCBpcyB6ZXJvLCB0
aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIGlzIG5vdCBsb2Fk
ZWQNCj4gICAgICArLy8vICAgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgcmV0
dXJuIHZhbHVlIGlzIHNldCB0byB6ZXJvLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW0yNTZfbWFza2xvYWRfcHMoZmxvYXQgY29uc3QgKl9fcCwgX19tMjU2aSBfX20pDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHBzMjU2
KChjb25zdCBfX3Y4c2YgKilfX3AsIChfX3Y4c2kpX19tKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLyogQ29uZGl0aW9uYWwgc3RvcmUgb3BzICovDQo+ICAgICAgKy8vLyBNb3ZlcyBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0
b3INCj4gICAgICArLy8vICAgIG9mIFs4IHggZmxvYXRdIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHBv
aW50ZWQgdG8gYnkgXGEgX19wLCBhY2NvcmRpbmcgdG8NCj4gICAgICArLy8vICAgIHRoZSBzcGVj
aWZpZWQgbWFzay4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVt
b3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzggeCBkd29yZF0gY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3QNCj4gICAgICArLy8v
ICAgIHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGR3b3JkIGVsZW1lbnQgaW4gdGhlIG1hc2sgdmVj
dG9yIHJlcHJlc2VudHMgdGhlDQo+ICAgICAgKy8vLyAgICBtYXNrIGJpdHMuIElmIGEgbWFzayBi
aXQgaXMgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZnJvbSB2ZWN0b3INCj4gICAgICAr
Ly8vICAgIFxhIF9fYSBpcyBub3Qgc3RvcmVkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCBp
biB0aGUgbWVtb3J5IGxvY2F0aW9uDQo+ICAgICAgKy8vLyAgICBwb2ludGVkIHRvIGJ5IFxhIF9f
cCBpcyBub3QgY2hhbmdlZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRv
IGJlIHN0b3JlZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbTI1Nl9tYXNrc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMjU2aSBfX20s
IF9fbTI1NiBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBfX2J1aWx0aW5faWEzMl9tYXNrc3Rv
cmVwczI1NigoX192OHNmICopX19wLCAoX192OHNpKV9fbSwgKF9fdjhzZilfX2EpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTW92ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMg
ZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQ0KPiAgICAgICsvLy8gICAgdG8g
YSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AsIGFjY29yZGluZyB0byB0aGUg
c3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICBtYXNrLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUEQgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAg
ICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZs
b2F0IHZhbHVlcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtYXNrLiBUaGUgbW9zdCBzaWduaWZp
Y2FudCBiaXQgb2YNCj4gICAgICArLy8vICAgIGVhY2ggZmllbGQgaW4gdGhlIG1hc2sgdmVjdG9y
IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcw0KPiAgICAgICsvLy8g
ICAgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZnJvbSB2ZWN0b3IgXGEgX19hIGlzIG5v
dCBzdG9yZWQgYW5kIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0
aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlzIG5vdA0KPiAgICAgICsv
Ly8gICAgY2hhbmdlZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBi
ZSBzdG9yZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRS
UzEyOA0KPiAgICAgICtfbW1fbWFza3N0b3JlX3BkKGRvdWJsZSAqX19wLCBfX20xMjhpIF9fbSwg
X19tMTI4ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBfX2J1aWx0aW5faWEzMl9tYXNrc3Rv
cmVwZCgoX192MmRmICopX19wLCAoX192MmRpKV9fbSwgKF9fdjJkZilfX2EpOw0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTW92ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJv
bSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXQ0KPiAgICAgICsvLy8gICAgdG8gYSBt
ZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AsIGFjY29yZGluZyB0byB0aGUgc3Bl
Y2lmaWVkDQo+ICAgICAgKy8vLyAgICBtYXNrLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBB
IHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0
IHZhbHVlcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICArLy8vICAgIEEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IHF1YWR3b3JkXSBjb250YWluaW5nIHRoZSBtYXNrLiBU
aGUgbW9zdA0KPiAgICAgICsvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggcXVhZHdvcmQg
ZWxlbWVudCBpbiB0aGUgbWFzayB2ZWN0b3IgcmVwcmVzZW50cw0KPiAgICAgICsvLy8gICAgdGhl
IG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1
ZSBmcm9tIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgX19hIGlzIG5vdCBzdG9yZWQgYW5kIHRoZSBj
b3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSBtZW1vcnkgbG9jYXRpb24NCj4gICAgICArLy8vICAg
IHBvaW50ZWQgdG8gYnkgXGEgX19wIGlzIG5vdCBjaGFuZ2VkLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4NCj4gICAgICArc3RhdGljIF9faW5saW5l
IHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9tYXNrc3RvcmVfcGQoZG91
YmxlICpfX3AsIF9fbTI1NmkgX19tLCBfX20yNTZkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsg
IF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkMjU2KChfX3Y0ZGYgKilfX3AsIChfX3Y0ZGkpX19t
LCAoX192NGRmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBNb3ZlcyBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0
b3INCj4gICAgICArLy8vICAgIG9mIFs0IHggZmxvYXRdIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHBv
aW50ZWQgdG8gYnkgXGEgX19wLCBhY2NvcmRpbmcgdG8NCj4gICAgICArLy8vICAgIHRoZSBzcGVj
aWZpZWQgbWFzay4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVt
b3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQo+ICAgICAg
Ky8vLyAgICBlYWNoIGZpZWxkIGluIHRoZSBtYXNrIHZlY3RvciByZXByZXNlbnRzIHRoZSBtYXNr
IGJpdHMuIElmIGEgbWFzayBiaXQgaXMNCj4gICAgICArLy8vICAgIHplcm8sIHRoZSBjb3JyZXNw
b25kaW5nIHZhbHVlIGZyb20gdmVjdG9yIF9fYSBpcyBub3Qgc3RvcmVkIGFuZCB0aGUNCj4gICAg
ICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZmllbGQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2lu
dGVkIHRvIGJ5IFxhIF9fcCBpcyBub3QNCj4gICAgICArLy8vICAgIGNoYW5nZWQuDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KPiAgICAgICtfbW1fbWFza3N0
b3JlX3BzKGZsb2F0ICpfX3AsIF9fbTEyOGkgX19tLCBfX20xMjggX19hKQ0KPiAgICAgICt7DQo+
ICAgICAgKyAgX19idWlsdGluX2lhMzJfbWFza3N0b3JlcHMoKF9fdjRzZiAqKV9fcCwgKF9fdjRz
aSlfX20sIChfX3Y0c2YpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogQ2Fj
aGVhYmlsaXR5IHN1cHBvcnQgb3BzICovDQo+ICAgICAgKy8vLyBNb3ZlcyBpbnRlZ2VyIGRhdGEg
ZnJvbSBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gYSAzMi1ieXRlDQo+ICAgICAgKy8vLyAg
ICBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEg
aXMgZmxhZ2dlZCBhcw0KPiAgICAgICsvLy8gICAgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBi
ZSB1c2VkIGFnYWluIHNvb24pLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVERRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRv
IGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUN
Cj4gICAgICArLy8vICAgIGludGVnZXIgdmFsdWVzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZh
bHVlcyB0byBiZSBtb3ZlZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9zdHJlYW1fc2kyNTYoX19tMjU2aSAqX19hLCBfX20y
NTZpIF9fYikNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICBf
X2J1aWx0aW5faWEzMl9tb3ZudGRxMjU2ICgoX192NGRpICopX19hLCAoX192NGRpKV9fYik7DQo+
ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgdHlwZWRlZiBfX3Y0ZGkgX192NGRpX2FsaWduZWQgX19h
dHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gICAgICArICBfX2J1aWx0aW5fbm9udGVtcG9y
YWxfc3RvcmUoKF9fdjRkaV9hbGlnbmVkKV9fYiwgKF9fdjRkaV9hbGlnbmVkKilfX2EpOw0KPiAg
ICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE1vdmVzIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0N
Cj4gICAgICArLy8vICAgIHRvIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8g
bWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMNCj4gICAgICArLy8vICAgIGZsYWdnZWQgYXMg
bm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0K
PiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2Nh
dGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCj4gICAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAg
ICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
dmFsdWVzIHRvIGJlIG1vdmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3N0cmVhbV9wZChkb3VibGUgKl9fYSwgX19tMjU2
ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgX19i
dWlsdGluX2lhMzJfbW92bnRwZDI1NiAoX19hLCAoX192NGRmKV9fYik7DQo+ICAgICAgKyNlbHNl
DQo+ICAgICAgKyAgdHlwZWRlZiBfX3Y0ZGYgX192NGRmX2FsaWduZWQgX19hdHRyaWJ1dGVfXygo
YWxpZ25lZCgzMikpKTsNCj4gICAgICArICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9f
djRkZl9hbGlnbmVkKV9fYiwgKF9fdjRkZl9hbGlnbmVkKilfX2EpOw0KPiAgICAgICsjZW5kaWYN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE1vdmVzIHNpbmdsZS1wcmVjaXNpb24g
ZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KPiAgICAgICsvLy8g
ICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBU
byBtaW5pbWl6ZQ0KPiAgICAgICsvLy8gICAgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBh
cyBub24tdGVtcG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdhaW4NCj4gICAgICArLy8vICAg
IHNvb24pLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZOVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMzItYnl0ZSBh
bGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUNCj4gICAgICArLy8v
ICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc3RyZWFtX3BzKGZs
b2F0ICpfX3AsIF9fbTI1NiBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19f
DQo+ICAgICAgKyAgX19idWlsdGluX2lhMzJfbW92bnRwczI1NiAoX19wLCAoX192OHNmKV9fYSk7
DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgdHlwZWRlZiBfX3Y4c2YgX192OHNmX2FsaWduZWQg
X19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gICAgICArICBfX2J1aWx0aW5fbm9udGVt
cG9yYWxfc3RvcmUoKF9fdjhzZl9hbGlnbmVkKV9fYSwgKF9fdjhzZl9hbGlnbmVkKilfX3ApOw0K
PiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogQ3JlYXRlIHZl
Y3RvcnMgKi8NCj4gICAgICArLy8vIENyZWF0ZSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMjU2
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3VuZGVmaW5lZF9wZCh2b2lkKQ0K
PiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIF9fbTI1NmQgX19Y
ID0gX19YOw0KPiAgICAgICsgIHJldHVybiBfX1g7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAg
cmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3VuZGVmMjU2KCk7DQo+ICAgICAgKyNlbmRp
Zg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ3JlYXRlIGEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gd2l0aCB1bmRlZmluZWQgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfdW5kZWZpbmVk
X3BzKHZvaWQpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAg
X19tMjU2IF9fWCA9IF9fWDsNCj4gICAgICArICByZXR1cm4gX19YOw0KPiAgICAgICsjZWxzZQ0K
PiAgICAgICsgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3VuZGVmMjU2KCk7DQo+ICAg
ICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ3JlYXRlIGEgMjU2
LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHVuZGVmaW5lZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl91bmRlZmluZWRfc2ky
NTYodm9pZCkNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICBf
X20yNTZpIF9fWCA9IF9fWDsNCj4gICAgICArICByZXR1cm4gX19YOw0KPiAgICAgICsjZWxzZQ0K
PiAgICAgICsgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOw0KPiAg
ICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMg
YSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0NCj4gICAgICAr
Ly8vICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQrVklOU0VSVEYxMjggPC9jPg0KPiAgICAg
ICsvLy8gICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToxOTJdDQo+ICAgICAgKy8vLyAgICBvZiB0aGUg
cmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsx
OTE6MTI4XQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2MNCj4gICAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjY0XQ0KPiAgICAgICsvLy8gICAgb2Yg
dGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2QNCj4gICAgICArLy8vICAgIEEgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbNjM6MF0NCj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW0yNTZfc2V0X3BkKGRvdWJsZSBfX2EsIGRvdWJsZSBfX2IsIGRvdWJs
ZSBfX2MsIGRvdWJsZSBfX2QpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19leHRlbnNp
b25fXyAoX19tMjU2ZCl7IF9fZCwgX19jLCBfX2IsIF9fYSB9Ow0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGluaXRpYWxpemVkDQo+ICAgICAgKy8vLyAgICB3aXRoIHRoZSBzcGVj
aWZpZWQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBu
b3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgc2lu
Z2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMjU1OjIyNF0NCj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoxOTJdDQo+ICAgICAgKy8vLyAg
ICBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYw0KPiAgICAgICsvLy8gICAg
QSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxOTE6MTYwXQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2QNCj4gICAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjEyOF0NCj4gICAgICAr
Ly8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19lDQo+ICAgICAgKy8v
LyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzEyNzo5Nl0NCj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19mDQo+ICAgICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjY0XQ0KPiAgICAg
ICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2cNCj4gICAgICAr
Ly8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbNjM6MzJdDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9faA0KPiAgICAgICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXQ0KPiAgICAg
ICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0y
NTZfc2V0X3BzKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MsIGZsb2F0IF9fZCwNCj4g
ICAgICArICAgICAgICAgICAgICBmbG9hdCBfX2UsIGZsb2F0IF9fZiwgZmxvYXQgX19nLCBmbG9h
dCBfX2gpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2
KXsgX19oLCBfX2csIF9fZiwgX19lLCBfX2QsIF9fYywgX19iLCBfX2EgfTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9y
IGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KPiAgICAgICsvLy8gICAgMzItYml0IGlu
dGVncmFsIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1
dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4g
ICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9faTANCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsyNTU6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9faTENCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsyMjM6MTkyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9faTINCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxOTE6MTYwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9faTMNCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxNTk6MTI4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9faTQNCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19pNQ0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzk1OjY0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
aTYNCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2k3
DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMzE6MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGlu
aXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc2V0X2VwaTMyKGlu
dCBfX2kwLCBpbnQgX19pMSwgaW50IF9faTIsIGludCBfX2kzLA0KPiAgICAgICsgICAgICAgICAg
ICAgICAgIGludCBfX2k0LCBpbnQgX19pNSwgaW50IF9faTYsIGludCBfX2k3KQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmkpKF9fdjhzaSl7IF9faTcs
IF9faTYsIF9faTUsIF9faTQsIF9faTMsIF9faTIsIF9faTEsIF9faTAgfTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9y
IGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KPiAgICAgICsvLy8gICAgMTYtYml0IGlu
dGVncmFsIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1
dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4g
ICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fdzE1DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMjU1OjI0MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX3cxNA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzIzOToyMjRdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFy
YW0gX193MTMNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjA4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fdzEyDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMjA3OjE5Ml0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxw
YXJhbSBfX3cxMQ0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzE5MToxNzZdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX193MTANCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTYwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fdzA5DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjE0NF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8v
IFxwYXJhbSBfX3cwOA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzE0MzoxMjhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8v
LyBccGFyYW0gX193MDcNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fdzA2DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fdzA1DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8v
LyBccGFyYW0gX193MDQNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8v
IFxwYXJhbSBfX3cwMw0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fdzAyDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX193MDENCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxw
YXJhbSBfX3cwMA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3Nl
dF9lcGkxNihzaG9ydCBfX3cxNSwgc2hvcnQgX193MTQsIHNob3J0IF9fdzEzLCBzaG9ydCBfX3cx
MiwNCj4gICAgICArICAgICAgICAgICAgICAgICBzaG9ydCBfX3cxMSwgc2hvcnQgX193MTAsIHNo
b3J0IF9fdzA5LCBzaG9ydCBfX3cwOCwNCj4gICAgICArICAgICAgICAgICAgICAgICBzaG9ydCBf
X3cwNywgc2hvcnQgX193MDYsIHNob3J0IF9fdzA1LCBzaG9ydCBfX3cwNCwNCj4gICAgICArICAg
ICAgICAgICAgICAgICBzaG9ydCBfX3cwMywgc2hvcnQgX193MDIsIHNob3J0IF9fdzAxLCBzaG9y
dCBfX3cwMCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20y
NTZpKShfX3YxNmhpKXsgX193MDAsIF9fdzAxLCBfX3cwMiwgX193MDMsIF9fdzA0LCBfX3cwNSwg
X193MDYsDQo+ICAgICAgKyAgICBfX3cwNywgX193MDgsIF9fdzA5LCBfX3cxMCwgX193MTEsIF9f
dzEyLCBfX3cxMywgX193MTQsIF9fdzE1IH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRo
IHRoZSBzcGVjaWZpZWQNCj4gICAgICArLy8vICAgIDgtYml0IGludGVncmFsIHZhbHVlcy4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFu
ZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAgaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjMxDQo+ICAgICAgKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1
OjI0OF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IzMA0KPiAgICAgICsv
Ly8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI0
NzoyNDBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMjkNCj4gICAgICAr
Ly8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsy
Mzk6MjMyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjI4DQo+ICAgICAg
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MjMxOjIyNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IyNw0KPiAgICAg
ICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzIyMzoyMTZdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMjYNCj4gICAg
ICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsyMTU6MjA4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjI1DQo+ICAg
ICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMjA3OjIwMF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IyNA0KPiAg
ICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzE5OToxOTJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMjMNCj4g
ICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxOTE6MTg0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjIyDQo+
ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTgzOjE3Nl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IyMQ0K
PiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzE3NToxNjhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMjAN
Cj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxNjc6MTYwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjE5
DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMTU5OjE1Ml0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2Ix
OA0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzE1MToxNDRdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
MTcNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFsxNDM6MTM2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YjE2DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTM1OjEyOF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2IxNQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iMTQNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxMTk6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYjEzDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2IxMg0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2IxMQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYjEwDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbODc6ODBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iMDkNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2IwOA0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YjA3DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
MDYNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2Iw
NQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjA0
DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMDMN
Cj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFszMToyNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IwMg0K
PiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjAxDQo+
ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IwMA0KPiAg
ICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20y
NTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc2V0X2VwaTgoY2hhciBfX2Iz
MSwgY2hhciBfX2IzMCwgY2hhciBfX2IyOSwgY2hhciBfX2IyOCwNCj4gICAgICArICAgICAgICAg
ICAgICAgIGNoYXIgX19iMjcsIGNoYXIgX19iMjYsIGNoYXIgX19iMjUsIGNoYXIgX19iMjQsDQo+
ICAgICAgKyAgICAgICAgICAgICAgICBjaGFyIF9fYjIzLCBjaGFyIF9fYjIyLCBjaGFyIF9fYjIx
LCBjaGFyIF9fYjIwLA0KPiAgICAgICsgICAgICAgICAgICAgICAgY2hhciBfX2IxOSwgY2hhciBf
X2IxOCwgY2hhciBfX2IxNywgY2hhciBfX2IxNiwNCj4gICAgICArICAgICAgICAgICAgICAgIGNo
YXIgX19iMTUsIGNoYXIgX19iMTQsIGNoYXIgX19iMTMsIGNoYXIgX19iMTIsDQo+ICAgICAgKyAg
ICAgICAgICAgICAgICBjaGFyIF9fYjExLCBjaGFyIF9fYjEwLCBjaGFyIF9fYjA5LCBjaGFyIF9f
YjA4LA0KPiAgICAgICsgICAgICAgICAgICAgICAgY2hhciBfX2IwNywgY2hhciBfX2IwNiwgY2hh
ciBfX2IwNSwgY2hhciBfX2IwNCwNCj4gICAgICArICAgICAgICAgICAgICAgIGNoYXIgX19iMDMs
IGNoYXIgX19iMDIsIGNoYXIgX19iMDEsIGNoYXIgX19iMDApDQo+ICAgICAgK3sNCj4gICAgICAr
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSkoX192MzJxaSl7DQo+ICAgICAgKyAgICBf
X2IwMCwgX19iMDEsIF9fYjAyLCBfX2IwMywgX19iMDQsIF9fYjA1LCBfX2IwNiwgX19iMDcsDQo+
ICAgICAgKyAgICBfX2IwOCwgX19iMDksIF9fYjEwLCBfX2IxMSwgX19iMTIsIF9fYjEzLCBfX2Ix
NCwgX19iMTUsDQo+ICAgICAgKyAgICBfX2IxNiwgX19iMTcsIF9fYjE4LCBfX2IxOSwgX19iMjAs
IF9fYjIxLCBfX2IyMiwgX19iMjMsDQo+ICAgICAgKyAgICBfX2IyNCwgX19iMjUsIF9fYjI2LCBf
X2IyNywgX19iMjgsIF9fYjI5LCBfX2IzMCwgX19iMzENCj4gICAgICArICB9Ow0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0
b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICA2NC1iaXQg
aW50ZWdyYWwgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURRK1ZJTlNFUlRGMTI4IDwvYz4NCj4gICAgICAr
Ly8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0K
PiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+
ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTkxOjEyOF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2MNCj4g
ICAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19kDQo+ICAg
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbNjM6MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20y
NTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc2V0X2VwaTY0eChsb25nIGxv
bmcgX19hLCBsb25nIGxvbmcgX19iLCBsb25nIGxvbmcgX19jLCBsb25nIGxvbmcgX19kKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmkpKF9fdjRkaSl7
IF9fZCwgX19jLCBfX2IsIF9fYSB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvKiBD
cmVhdGUgdmVjdG9ycyB3aXRoIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIgKi8NCj4gICAgICAr
Ly8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0sDQo+ICAgICAgKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGgg
dGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdGluZy1w
b2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEK1ZJTlNFUlRGMTI4IDwvYz4NCj4gICAgICArLy8vICAg
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFs2MzowXQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3OjY0XQ0KPiAg
ICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2MNCj4gICAg
ICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMTkxOjEyOF0NCj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19kDQo+ICAgICAgKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToxOTJd
DQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVd
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tMjU2X3NldHJfcGQoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYywg
ZG91YmxlIF9fZCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW0yNTZfc2V0X3BkKF9f
ZCwgX19jLCBfX2IsIF9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25z
dHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0sDQo+
ICAgICAgKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGggdGhlIHNwZWNp
ZmllZCBzaW5nbGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdC1wb2ludCB2YWx1ZXMu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlv
biBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAgIGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMzE6MF0NCj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXQ0KPiAgICAg
ICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2MNCj4gICAgICAr
Ly8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbOTU6NjRdDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fZA0KPiAgICAgICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdDQo+ICAg
ICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fZQ0KPiAgICAg
ICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTI4XQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2YNCj4gICAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE2MF0N
Cj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19nDQo+
ICAgICAgKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoxOTJdDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVz
dWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9faA0KPiAgICAgICsvLy8gICAgQSBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6
MjI0XQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW0yNTZfc2V0cl9wcyhmbG9hdCBfX2EsIGZsb2F0IF9fYiwgZmxvYXQgX19jLCBm
bG9hdCBfX2QsDQo+ICAgICAgKyAgICAgICAgICAgICAgIGZsb2F0IF9fZSwgZmxvYXQgX19mLCBm
bG9hdCBfX2csIGZsb2F0IF9faCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW0yNTZf
c2V0X3BzKF9faCwgX19nLCBfX2YsIF9fZSwgX19kLCBfX2MsIF9fYiwgX19hKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVj
dG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQo+ICAgICAgKy8vLyAgICB3aXRoIHRo
ZSBzcGVjaWZpZWQgMzItYml0IGludGVncmFsIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNw
b25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXHBhcmFtIF9faTANCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHBhcmFtIF9faTENCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIHJlc3VsdC4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2kyDQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19pMw0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2k0DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2k1DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE2MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2k2DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjE5Ml0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2k3DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjIyNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW0yNTZfc2V0cl9lcGkzMihpbnQgX19pMCwgaW50IF9faTEsIGludCBfX2kyLCBpbnQgX19p
MywNCj4gICAgICArICAgICAgICAgICAgICAgICAgaW50IF9faTQsIGludCBfX2k1LCBpbnQgX19p
NiwgaW50IF9faTcpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tMjU2X3NldF9lcGkz
MihfX2k3LCBfX2k2LCBfX2k1LCBfX2k0LCBfX2kzLCBfX2kyLCBfX2kxLCBfX2kwKTsNCj4gICAg
ICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIg
dmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQo+ICAgICAgKy8vLyAgICB3aXRo
IHRoZSBzcGVjaWZpZWQgMTYtYml0IGludGVncmFsIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3Jy
ZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fdzE1DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6MF0gb2YgdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxwYXJhbSBfX3cxNA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fdzEzDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQu
DQo+ICAgICAgKy8vLyBccGFyYW0gX193MTINCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX3cxMQ0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHBhcmFtIF9fdzEwDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQuDQo+
ICAgICAgKy8vLyBccGFyYW0gX193MDkNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuDQo+
ICAgICAgKy8vLyBccGFyYW0gX193MDgNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHBhcmFtIF9fdzA3DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTQzOjEyOF0gb2YgdGhlIHJlc3VsdC4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX3cwNg0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OToxNDRdIG9mIHRoZSByZXN1bHQu
DQo+ICAgICAgKy8vLyBccGFyYW0gX193MDUNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTYwXSBvZiB0aGUgcmVzdWx0
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fdzA0DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE3Nl0gb2YgdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxwYXJhbSBfX3cwMw0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIwNzoxOTJdIG9mIHRoZSByZXN1
bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX193MDINCj4gICAgICArLy8vICAgIEEgMTYtYml0IGlu
dGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjA4XSBvZiB0aGUgcmVz
dWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fdzAxDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM5OjIyNF0gb2YgdGhlIHJl
c3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX3cwMA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQg
aW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToyNDBdIG9mIHRoZSBy
ZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVn
ZXIgdmVjdG9yLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tMjU2X3NldHJfZXBpMTYoc2hvcnQgX193MTUsIHNob3J0IF9fdzE0
LCBzaG9ydCBfX3cxMywgc2hvcnQgX193MTIsDQo+ICAgICAgKyAgICAgICBzaG9ydCBfX3cxMSwg
c2hvcnQgX193MTAsIHNob3J0IF9fdzA5LCBzaG9ydCBfX3cwOCwNCj4gICAgICArICAgICAgIHNo
b3J0IF9fdzA3LCBzaG9ydCBfX3cwNiwgc2hvcnQgX193MDUsIHNob3J0IF9fdzA0LA0KPiAgICAg
ICsgICAgICAgc2hvcnQgX193MDMsIHNob3J0IF9fdzAyLCBzaG9ydCBfX3cwMSwgc2hvcnQgX193
MDApDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tMjU2X3NldF9lcGkxNihfX3cwMCwg
X193MDEsIF9fdzAyLCBfX3cwMywNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICBf
X3cwNCwgX193MDUsIF9fdzA2LCBfX3cwNywNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3cwOCwgX193MDksIF9fdzEwLCBfX3cxMSwNCj4gICAgICArICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3cxMiwgX193MTMsIF9fdzE0LCBfX3cxNSk7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5p
dGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KPiAgICAgICsvLy8gICAgd2l0aCB0aGUgc3BlY2lm
aWVkIDgtYml0IGludGVncmFsIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEg
c3BlY2lmaWMNCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYjMxDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYjMwDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8v
IFxwYXJhbSBfX2IyOQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYjI4DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19iMjcNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxw
YXJhbSBfX2IyNg0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYjI1DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFy
YW0gX19iMjQNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2IyMw0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYjIyDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbNzk6NzJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iMjENCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2IyMA0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YjE5DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YjE4DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2IxNw0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iMTYNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYjE1DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTM1OjEyOF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2IxNA0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzE0MzoxMzZdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFy
YW0gX19iMTMNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsxNTE6MTQ0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYjEyDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMTU5OjE1Ml0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxw
YXJhbSBfX2IxMQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzE2NzoxNjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19iMTANCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTY4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYjA5DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMTgzOjE3Nl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8v
IFxwYXJhbSBfX2IwOA0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxODRdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8v
LyBccGFyYW0gX19iMDcNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTk6MTkyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYjA2DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjA3OjIwMF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2IwNQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIxNToyMDhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19iMDQNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYjAzDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjMxOjIyNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2IwMg0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOToyMzJdIG9mIHRoZSByZXN1bHQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19iMDENCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNDc6MjQwXSBvZiB0aGUgcmVzdWx0Lg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYjAwDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjI0OF0gb2YgdGhlIHJlc3VsdC4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW0yNTZfc2V0cl9lcGk4KGNoYXIgX19iMzEsIGNoYXIgX19iMzAsIGNoYXIgX19iMjks
IGNoYXIgX19iMjgsDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgY2hhciBfX2IyNywgY2hhciBf
X2IyNiwgY2hhciBfX2IyNSwgY2hhciBfX2IyNCwNCj4gICAgICArICAgICAgICAgICAgICAgICBj
aGFyIF9fYjIzLCBjaGFyIF9fYjIyLCBjaGFyIF9fYjIxLCBjaGFyIF9fYjIwLA0KPiAgICAgICsg
ICAgICAgICAgICAgICAgIGNoYXIgX19iMTksIGNoYXIgX19iMTgsIGNoYXIgX19iMTcsIGNoYXIg
X19iMTYsDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgY2hhciBfX2IxNSwgY2hhciBfX2IxNCwg
Y2hhciBfX2IxMywgY2hhciBfX2IxMiwNCj4gICAgICArICAgICAgICAgICAgICAgICBjaGFyIF9f
YjExLCBjaGFyIF9fYjEwLCBjaGFyIF9fYjA5LCBjaGFyIF9fYjA4LA0KPiAgICAgICsgICAgICAg
ICAgICAgICAgIGNoYXIgX19iMDcsIGNoYXIgX19iMDYsIGNoYXIgX19iMDUsIGNoYXIgX19iMDQs
DQo+ICAgICAgKyAgICAgICAgICAgICAgICAgY2hhciBfX2IwMywgY2hhciBfX2IwMiwgY2hhciBf
X2IwMSwgY2hhciBfX2IwMCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW0yNTZfc2V0
X2VwaTgoX19iMDAsIF9fYjAxLCBfX2IwMiwgX19iMDMsIF9fYjA0LCBfX2IwNSwgX19iMDYsIF9f
YjA3LA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgX19iMDgsIF9fYjA5LCBfX2Ix
MCwgX19iMTEsIF9fYjEyLCBfX2IxMywgX19iMTQsIF9fYjE1LA0KPiAgICAgICsgICAgICAgICAg
ICAgICAgICAgICAgICAgX19iMTYsIF9fYjE3LCBfX2IxOCwgX19iMTksIF9fYjIwLCBfX2IyMSwg
X19iMjIsIF9fYjIzLA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgX19iMjQsIF9f
YjI1LCBfX2IyNiwgX19iMjcsIF9fYjI4LCBfX2IyOSwgX19iMzAsIF9fYjMxKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVj
dG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQo+ICAgICAgKy8vLyAgICB3aXRoIHRo
ZSBzcGVjaWZpZWQgNjQtYml0IGludGVncmFsIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLTFFEUStWSU5TRVJU
RjEyOCA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8v
IFxwYXJhbSBfX2MNCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fZA0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzI1NToxOTJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2
X3NldHJfZXBpNjR4KGxvbmcgbG9uZyBfX2EsIGxvbmcgbG9uZyBfX2IsIGxvbmcgbG9uZyBfX2Ms
IGxvbmcgbG9uZyBfX2QpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tMjU2X3NldF9l
cGk2NHgoX19kLCBfX2MsIF9fYiwgX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
LyogQ3JlYXRlIHZlY3RvcnMgd2l0aCByZXBlYXRlZCBlbGVtZW50cyAqLw0KPiAgICAgICsvLy8g
Q29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSwgd2l0aCBlYWNoDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgZm91ciBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQo+ICAgICAgKy8vLyAg
ICBzcGVjaWZpZWQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9W
RERVUCtWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX3cNCj4gICAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3INCj4gICAgICArLy8v
ICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRp
YWxpemVkIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbTI1Nl9zZXQxX3BkKGRvdWJsZSBfX3cpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4g
X21tMjU2X3NldF9wZChfX3csIF9fdywgX193LCBfX3cpOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdLCB3aXRoIGVhY2gNCj4gICAgICArLy8vICAgIG9mIHRoZSBlaWdodCBzaW5n
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlDQo+
ICAgICAgKy8vLyAgICBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUEVSTUlMUFMrVklOU0VSVEYxMjggPC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX193DQo+ICAgICAgKy8vLyAg
ICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGVhY2ggdmVjdG9yDQo+ICAgICAgKy8vLyAgICBlbGVtZW50IG9mIHRoZSByZXN1bHQuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3NldDFfcHMoZmxvYXQgX193KQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9tbTI1Nl9zZXRfcHMoX193LCBfX3csIF9fdywgX193
LCBfX3csIF9fdywgX193LCBfX3cpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8g
Q29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMzJdLCB3aXRoIGVh
Y2ggb2YgdGhlDQo+ICAgICAgKy8vLyAgICAzMi1iaXQgaW50ZWdyYWwgdmVjdG9yIGVsZW1lbnRz
IHNldCB0byB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ3JhbA0KPiAgICAgICsvLy8gICAgdmFs
dWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBFUk1JTFBTK1ZJTlNFUlRGMTI4IDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9faQ0KPiAgICAgICsvLy8gICAg
QSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVs
ZW1lbnQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTMyXS4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbTI1Nl9zZXQxX2VwaTMyKGludCBfX2kpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4g
X21tMjU2X3NldF9lcGkzMihfX2ksIF9faSwgX19pLCBfX2ksIF9faSwgX19pLCBfX2ksIF9faSk7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpMTZdLCB3aXRoIGVhY2ggb2YgdGhlDQo+ICAgICAgKy8v
LyAgICAxNi1iaXQgaW50ZWdyYWwgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVk
IDE2LWJpdCBpbnRlZ3JhbA0KPiAgICAgICsvLy8gICAgdmFsdWUuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTSFVGQitWSU5TRVJU
RjEyOCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X3cNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMTYgeCBpMTZdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3NldDFfZXBpMTYoc2hvcnQgX193KQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpMTYoX193LCBfX3csIF9fdywgX193
LCBfX3csIF9fdywgX193LCBfX3csDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg
X193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3cpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzMyIHggaThdLCB3aXRoIGVhY2ggb2YgdGhlDQo+ICAgICAgKy8vLyAgICA4LWJpdCBpbnRlZ3Jh
bCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdyYWwgdmFs
dWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBTSFVGQitWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQg
MjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMzIgeCBpOF0uDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc2V0MV9lcGk4
KGNoYXIgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpOChf
X2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwNCj4gICAgICArICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLA0K
PiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgX19iLCBfX2IsIF9fYiwgX19iLCBfX2Is
IF9fYiwgX19iLCBfX2IsDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICBfX2IsIF9f
YiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGk2
NF0sIHdpdGggZWFjaCBvZiB0aGUNCj4gICAgICArLy8vICAgIDY0LWJpdCBpbnRlZ3JhbCB2ZWN0
b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgNjQtYml0IGludGVncmFsDQo+ICAgICAg
Ky8vLyAgICB2YWx1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCtWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ENCj4gICAgICArLy8vICAgIEEgNjQt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50
IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGk2NF0uDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0y
NTZfc2V0MV9lcGk2NHgobG9uZyBsb25nIF9fcSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVy
biBfbW0yNTZfc2V0X2VwaTY0eChfX3EsIF9fcSwgX19xLCBfX3EpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvKiBDcmVhdGUgX196ZXJvZWQgdmVjdG9ycyAqLw0KPiAgICAgICsvLy8g
Q29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSB3aXRoIGFsbA0KPiAgICAgICsvLy8gICAgdmVjdG9yIGVsZW1lbnRzIGluaXRpYWxpemVkIHRv
IHplcm8uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2l0aCBhbGwgZWxl
bWVudHMgc2V0IHRvIHplcm8uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc2V0emVyb19wZCh2b2lkKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmQpeyAwLCAwLCAwLCAwIH07
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2l0aCBhbGwNCj4gICAgICArLy8v
ICAgIHZlY3RvciBlbGVtZW50cyBpbml0aWFsaXplZCB0byB6ZXJvLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2l0aCBhbGwgZWxlbWVudHMgc2V0IHRvIHplcm8uDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bTI1Nl9zZXR6ZXJvX3BzKHZvaWQpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19leHRl
bnNpb25fXyAoX19tMjU2KXsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9Ow0KPiAgICAgICt9DQo+
ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW5pdGlhbGl6ZWQgdG8gemVyby4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlh
bGl6ZWQgdG8gemVyby4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9zZXR6ZXJvX3NpMjU2KHZvaWQpDQo+ICAgICAgK3sN
Cj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSkoX192NGRpKXsgMCwgMCwg
MCwgMCB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvKiBDYXN0IGJldHdlZW4gdmVj
dG9yIHR5cGVzICovDQo+ICAgICAgKy8vLyBDYXN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMjU2LWJpdA0KPiAgICAgICsvLy8gICAgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgc2FtZQ0KPiAgICAgICsvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0
ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbTI1Nl9jYXN0cGRfcHMoX19tMjU2ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICAr
ICByZXR1cm4gKF9fbTI1NilfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
YXN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRv
IGEgMjU2LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhbWUgYml0
d2lzZSBwYXR0ZXJuIGFzIHRoZQ0KPiAgICAgICsvLy8gICAgcGFyYW1ldGVyLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2
X2Nhc3RwZF9zaTI1NihfX20yNTZkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMjU2aSlfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDYXN0cyBhIDI1
Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSAyNTYtYml0
DQo+ICAgICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2FtZQ0KPiAgICAgICsvLy8gICAgYml0d2lzZSBw
YXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZk
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfY2FzdHBzX3BkKF9fbTI1NiBfX2Ep
DQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpX19hOw0KPiAgICAgICt9DQo+
ICAgICAgKw0KPiAgICAgICsvLy8gQ2FzdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XSBpbnRvIGEgMjU2LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2
ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNw
b25kaW5nIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQo+ICAgICAgKy8vLyAgICBw
YXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW0yNTZfY2FzdHBzX3NpMjU2KF9fbTI1NiBfX2EpDQo+ICAgICAgK3sN
Cj4gICAgICArICByZXR1cm4gKF9fbTI1NmkpX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ2FzdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSAyNTYtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb2YgWzggeCBmbG9hdF0uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
c2FtZQ0KPiAgICAgICsvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbTI1Nl9jYXN0c2kyNTZfcHMoX19tMjU2aSBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBy
ZXR1cm4gKF9fbTI1NilfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDYXN0
cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yDQo+ICAgICAgKy8vLyAgICBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNhbWUNCj4gICAg
ICArLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2Nh
c3RzaTI1Nl9wZChfX20yNTZpIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19t
MjU2ZClfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSZXR1cm5zIHRoZSBs
b3dlciAxMjggYml0cyBvZiBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mDQo+ICAg
ICAgKy8vLyAgICBbNCB4IGRvdWJsZV0gYXMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGhh
cyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUNCj4gICAgICAr
Ly8vICAgIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZSBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfY2FzdHBk
MjU2X3BkMTI4KF9fbTI1NmQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNf
Xw0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfcGRfcGQyNTYgKChf
X3Y0ZGYpX19hKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX3No
dWZmbGV2ZWN0b3IoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19hLCAwLCAxKTsNCj4gICAgICArI2Vu
ZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSZXR1cm5zIHRoZSBsb3dlciAx
MjggYml0cyBvZiBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mDQo+ICAgICAgKy8v
LyAgICBbOCB4IGZsb2F0XSBhcyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29y
cmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZQ0KPiAgICAgICsvLy8gICAgbG93
ZXIgMTI4IGJpdHMgb2YgdGhlIHBhcmFtZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2Nhc3RwczI1Nl9wczEyOChf
X20yNTYgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsg
IHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9wc19wczI1NiAoKF9fdjhzZilfX2EpOw0K
PiAgICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rvcigo
X192OHNmKV9fYSwgKF9fdjhzZilfX2EsIDAsIDEsIDIsIDMpOw0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFRydW5jYXRlcyBhIDI1Ni1iaXQgaW50ZWdl
ciB2ZWN0b3IgaW50byBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUNCj4gICAgICArLy8v
ICAgIHBhcmFtZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9jYXN0c2kyNTZfc2kxMjgoX19tMjU2aSBfX2EpDQo+
ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjhpKSBfX2J1aWx0aW5faWEzMl9zaV9zaTI1NiAoKF9fdjhzaSlfX2EpOw0KPiAgICAgICsjZWxz
ZQ0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NGRpKV9fYSwg
KF9fdjRkaSlfX2EsIDAsIDEpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0gZnJvbSBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAg
VGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9y
LiBUaGUgY29udGVudHMNCj4gICAgICArLy8vICAgIG9mIHRoZSB1cHBlciAxMjggYml0cyBhcmUg
dW5kZWZpbmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29y
cmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdLiBUaGUgbG93ZXIgMTI4IGJpdHMNCj4gICAgICArLy8vICAgIGNvbnRhaW4gdGhl
IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSBjb250ZW50cyBvZiB0aGUgdXBwZXIgMTI4IGJp
dHMNCj4gICAgICArLy8vICAgIGFyZSB1bmRlZmluZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfY2FzdHBkMTI4X3Bk
MjU2KF9fbTEyOGQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAg
ICAgICsgIHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfcGQyNTZfcGQgKChfX3YyZGYp
X19hKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2
ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19hLCAwLCAxLCAtMSwgLTEpOw0KPiAgICAgICsj
ZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBmcm9tIGENCj4gICAgICAr
Ly8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2
YWx1ZSBvZiB0aGUgc291cmNlIHZlY3Rvci4gVGhlIGNvbnRlbnRzDQo+ICAgICAgKy8vLyAgICBv
ZiB0aGUgdXBwZXIgMTI4IGJpdHMgYXJlIHVuZGVmaW5lZC4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoZSBsb3dlciAxMjggYml0cw0KPiAg
ICAgICsvLy8gICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4gVGhlIGNvbnRl
bnRzIG9mIHRoZSB1cHBlciAxMjggYml0cw0KPiAgICAgICsvLy8gICAgYXJlIHVuZGVmaW5lZC4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAg
ICArX21tMjU2X2Nhc3RwczEyOF9wczI1NihfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEz
Ml9wczI1Nl9wcyAoKF9fdjRzZilfX2EpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVy
biBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9fdjRzZilfX2EsIDAsIDEs
IDIsIDMsIC0xLCAtMSwgLTEsIC0xKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBmcm9t
IGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBU
aGUgbG93ZXIgMTI4IGJpdHMgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSB2ZWN0b3Iu
IFRoZSBjb250ZW50cw0KPiAgICAgICsvLy8gICAgb2YgdGhlIHVwcGVyIDEyOCBiaXRzIGFyZSB1
bmRlZmluZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3Jy
ZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDEyOCBiaXRzIGNv
bnRhaW4gdGhlIHZhbHVlIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgcGFyYW1ldGVyLiBUaGUgY29u
dGVudHMgb2YgdGhlIHVwcGVyIDEyOCBiaXRzIGFyZSB1bmRlZmluZWQuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfY2Fz
dHNpMTI4X3NpMjU2KF9fbTEyOGkgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dO
VUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMjU2aSkgX19idWlsdGluX2lhMzJfc2kyNTZfc2kg
KChfX3Y0c2kpX19hKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gX19idWlsdGlu
X3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19hLCAwLCAxLCAtMSwgLTEpOw0K
PiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyoNCj4gICAgICAr
ICAgVmVjdG9yIGluc2VydC4NCj4gICAgICArICAgV2UgdXNlIG1hY3JvcyByYXRoZXIgdGhhbiBp
bmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFjY2VwdA0KPiAgICAgICsgICBpbnZvY2F0
aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0gaXMgYSBjb25zdGFudCBleHByZXNzaW9uLg0KPiAg
ICAgICsqLw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XSBieSBmaXJzdCBkdXBsaWNhdGluZw0KPiAgICAgICsvLy8gICAgYSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBnaXZlbiBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyLCBhbmQg
dGhlbg0KPiAgICAgICsvLy8gICAgcmVwbGFjaW5nIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxv
d2VyIDEyOCBiaXRzIHdpdGggdGhlIGNvbnRlbnRzIG9mIGENCj4gICAgICArLy8vICAgIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIgZGV0
ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXINCj4gICAgICArLy8vICAgIDEy
OCBiaXRzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMjU2IF9t
bTI1Nl9pbnNlcnRmMTI4X3BzKF9fbTI1NiBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7DQo+
ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gVjENCj4gICAgICArLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUg
cmVzdWx0DQo+ICAgICAgKy8vLyAgICBmaXJzdCwgYW5kIHRoZW4gZWl0aGVyIHRoZSB1cHBlciBv
ciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxsDQo+ICAgICAgKy8vLyAgICBi
ZSByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEgVjIuDQo+ICAgICAgKy8vLyBccGFyYW0g
VjINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBj
b250ZW50cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUNCj4gICAgICArLy8vICAgIHdyaXR0ZW4gdG8g
ZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCBkZXBl
bmRpbmcNCj4gICAgICArLy8vICAgIG9uIHRoZSB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4NCj4g
ICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4g
VGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzDQo+ICAg
ICAgKy8vLyAgICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuDQo+
ICAgICAgKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0
byBiaXRzIFsxMjc6MF0gb2YgdGhlIHJlc3VsdCwNCj4gICAgICArLy8vICAgIGFuZCBiaXRzIFsy
NTU6MTI4XSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgSWYgYml0IFswXSBvZiBcYSBN
IGlzIDEsIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICByZXN1bHQsIGFuZCBiaXRzIFsxMjc6MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBi
aXRzIFsxMjc6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGlu
dGVybGVhdmVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfaW5zZXJ0ZjEyOF9wcyhW
MSwgVjIsIE0pIFwNCj4gICAgICArICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3ZpbnNlcnRmMTI4
X3BzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFYyKSwgKGludCkoTSkp
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYtYml0IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0gYnkgZmlyc3QgZHVwbGljYXRpbmcNCj4gICAgICArLy8vICAgIGEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGdpdmVuIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIs
IGFuZCB0aGVuDQo+ICAgICAgKy8vLyAgICByZXBsYWNpbmcgZWl0aGVyIHRoZSB1cHBlciBvciB0
aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29udGVudHMgb2YgYQ0KPiAgICAgICsvLy8gICAg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0
ZXIgZGV0ZXJtaW5lcyBiZXR3ZWVuIHRoZSB1cHBlciBvciB0aGUgbG93ZXINCj4gICAgICArLy8v
ICAgIDEyOCBiaXRzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19t
MjU2ZCBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChfX20yNTZkIFYxLCBfX20xMjhkIFYyLCBjb25zdCBp
bnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gVjENCj4gICAgICArLy8v
ICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLiBUaGlzIHZlY3RvciBpcyBjb3Bp
ZWQgdG8gdGhlIHJlc3VsdA0KPiAgICAgICsvLy8gICAgZmlyc3QsIGFuZCB0aGVuIGVpdGhlciB0
aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQgd2lsbA0KPiAgICAg
ICsvLy8gICAgYmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFxhIFYyLg0KPiAgICAgICsv
Ly8gXHBhcmFtIFYyDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KPiAgICAgICsvLy8gICAg
d3JpdHRlbiB0byBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUg
cmVzdWx0IGRlcGVuZGluZw0KPiAgICAgICsvLy8gICAgb24gdGhlIHZhbHVlIG9mIHBhcmFtZXRl
ciBcYSBNLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0
ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRldGVybWluZXMgaG93IHRoZSB2
YWx1ZXMNCj4gICAgICArLy8vICAgIGZyb20gdGhlIHR3byBwYXJhbWV0ZXJzIGFyZSBpbnRlcmxl
YXZlZDogXG4NCj4gICAgICArLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBcYSBWMiBh
cmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUgcmVzdWx0LA0KPiAgICAgICsvLy8gICAg
YW5kIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0g
b2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBJZiBiaXQg
WzBdIG9mIFxhIE0gaXMgMSwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0
aGUNCj4gICAgICArLy8vICAgIHJlc3VsdCwgYW5kIGJpdHMgWzEyNzowXSBvZiBcYSBWMSBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCj4gICAgICArLy8vICAgIHJlc3VsdC4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfaW5z
ZXJ0ZjEyOF9wZChWMSwgVjIsIE0pIFwNCj4gICAgICArICAoX19tMjU2ZClfX2J1aWx0aW5faWEz
Ml92aW5zZXJ0ZjEyOF9wZDI1NigoX192NGRmKShfX20yNTZkKShWMSksIFwNCj4gICAgICArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhk
KShWMiksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSBuZXcg
MjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBmaXJzdCBkdXBsaWNhdGluZyBhDQo+ICAgICAgKy8v
LyAgICAyNTYtYml0IGludGVnZXIgdmVjdG9yIGdpdmVuIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIs
IGFuZCB0aGVuIHJlcGxhY2luZw0KPiAgICAgICsvLy8gICAgZWl0aGVyIHRoZSB1cHBlciBvciB0
aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29udGVudHMgb2YgYSAxMjgtYml0DQo+ICAgICAg
Ky8vLyAgICBpbnRlZ2VyIHZlY3RvciBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyIGRldGVy
bWluZXMgYmV0d2VlbiB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAxMjgg
Yml0cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTI1NmkgX21t
MjU2X2luc2VydGYxMjhfc2kyNTYoX19tMjU2aSBWMSwgX19tMTI4aSBWMiwgY29uc3QgaW50IE0p
Ow0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYxDQo+ICAgICAgKy8vLyAgICBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUgcmVz
dWx0IGZpcnN0LCBhbmQNCj4gICAgICArLy8vICAgIHRoZW4gZWl0aGVyIHRoZSB1cHBlciBvciB0
aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxsIGJlDQo+ICAgICAgKy8vLyAgICBy
ZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgXGEgVjIuDQo+ICAgICAgKy8vLyBccGFyYW0gVjIN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGNvbnRlbnRzIG9m
IHRoaXMgcGFyYW1ldGVyIGFyZSB3cml0dGVuIHRvDQo+ICAgICAgKy8vLyAgICBlaXRoZXIgdGhl
IHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IGRlcGVuZGluZyBvbiB0
aGUNCj4gICAgICArLy8vICAgICB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4NCj4gICAgICArLy8v
IFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlci4gVGhlIGxlYXN0
IHNpZ25pZmljYW50IGJpdCBkZXRlcm1pbmVzIGhvdyB0aGUgdmFsdWVzDQo+ICAgICAgKy8vLyAg
ICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBhcmUgaW50ZXJsZWF2ZWQ6IFxuDQo+ICAgICAgKy8v
LyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6MF0gb2YgdGhlIHJlc3VsdCwNCj4gICAgICArLy8vICAgIGFuZCBiaXRzIFsyNTU6MTI4XSBv
ZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhdIG9mIHRoZQ0KPiAgICAgICsvLy8g
ICAgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIFxh
IFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBy
ZXN1bHQsIGFuZCBiaXRzIFsxMjc6MF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6
MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVz
Lg0KPiAgICAgICsjZGVmaW5lIF9tbTI1Nl9pbnNlcnRmMTI4X3NpMjU2KFYxLCBWMiwgTSkgXA0K
PiAgICAgICsgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZpbnNlcnRmMTI4X3NpMjU2KChfX3Y4
c2kpKF9fbTI1NmkpKFYxKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChfX3Y0c2kpKF9fbTEyOGkpKFYyKSwgKGludCkoTSkpDQo+ICAgICAg
Kw0KPiAgICAgICsvKg0KPiAgICAgICsgICBWZWN0b3IgZXh0cmFjdC4NCj4gICAgICArICAgV2Ug
dXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFj
Y2VwdA0KPiAgICAgICsgICBpbnZvY2F0aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0gaXMgYSBj
b25zdGFudCBleHByZXNzaW9uLg0KPiAgICAgICsqLw0KPiAgICAgICsvLy8gRXh0cmFjdHMgZWl0
aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9y
DQo+ICAgICAgKy8vLyAgICBvZiBbOCB4IGZsb2F0XSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgaW1t
ZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyLCBhbmQNCj4gICAgICArLy8vICAgIHJldHVybnMgdGhl
IGV4dHJhY3RlZCBiaXRzIGFzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjggX21tMjU2X2V4dHJhY3Rm
MTI4X3BzKF9fbTI1NiBWLCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkVYVFJBQ1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIFYNCj4gICAgICArLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGlu
dGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFy
ZQ0KPiAgICAgICsvLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBhcmFtZXRlcjogXG4N
Cj4gICAgICArLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBiaXRzIFsxMjc6MF0gb2Yg
XGEgViBhcmUgY29waWVkIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0LiBcbg0KPiAgICAg
ICsvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYg
YXJlIGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgYml0cy4NCj4g
ICAgICArI2RlZmluZSBfbW0yNTZfZXh0cmFjdGYxMjhfcHMoViwgTSkgXA0KPiAgICAgICsgIChf
X20xMjgpX19idWlsdGluX2lhMzJfdmV4dHJhY3RmMTI4X3BzMjU2KChfX3Y4c2YpKF9fbTI1Niko
ViksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUg
dXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KPiAgICAg
ICsvLy8gICAgb2YgWzQgeCBkb3VibGVdLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbW1lZGlhdGUg
aW50ZWdlciBwYXJhbWV0ZXIsIGFuZA0KPiAgICAgICsvLy8gICAgcmV0dXJucyB0aGUgZXh0cmFj
dGVkIGJpdHMgYXMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhkIF9tbTI1Nl9leHRyYWN0ZjEyOF9w
ZChfX20yNTZkIFYsIGNvbnN0IGludCBNKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
RVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gVg0KPiAgICAgICsvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0u
DQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVn
ZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQ0K
PiAgICAgICsvLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBhcmFtZXRlcjogXG4NCj4g
ICAgICArLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBiaXRzIFsxMjc6MF0gb2YgXGEg
ViBhcmUgY29waWVkIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0LiBcbg0KPiAgICAgICsv
Ly8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYgYXJl
IGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIGJpdHMuDQo+ICAg
ICAgKyNkZWZpbmUgX21tMjU2X2V4dHJhY3RmMTI4X3BkKFYsIE0pIFwNCj4gICAgICArICAoX19t
MTI4ZClfX2J1aWx0aW5faWEzMl92ZXh0cmFjdGYxMjhfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCko
ViksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUg
dXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBiaXRzIGZyb20gYSAyNTYtYml0DQo+ICAgICAgKy8vLyAg
ICBpbnRlZ2VyIHZlY3RvciwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgaW1tZWRpYXRlIGludGVnZXIg
cGFyYW1ldGVyLCBhbmQNCj4gICAgICArLy8vICAgIHJldHVybnMgdGhlIGV4dHJhY3RlZCBiaXRz
IGFzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUN
Cj4gICAgICArLy8vIF9fbTEyOGkgX21tMjU2X2V4dHJhY3RmMTI4X3NpMjU2KF9fbTI1NmkgViwg
Y29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBWDQo+ICAg
ICAgKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0g
TQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZp
Y2FudCBiaXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAgZXh0cmFj
dGVkIGZyb20gdGhlIGZpcnN0IHBhcmFtZXRlcjogIFxuDQo+ICAgICAgKy8vLyAgICBJZiBiaXQg
WzBdIG9mIFxhIE0gaXMgMCwgYml0cyBbMTI3OjBdIG9mIFxhIFYgYXJlIGNvcGllZCB0byB0aGUN
Cj4gICAgICArLy8vICAgIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIElmIGJpdCBbMF0gb2Yg
XGEgTSBpcyAxLCBiaXRzIFsyNTU6MTI4XSBvZiBcYSBWIGFyZSBjb3BpZWQgdG8gdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBleHRyYWN0ZWQgYml0cy4NCj4gICAgICArI2RlZmluZSBfbW0yNTZfZXh0cmFjdGYx
Mjhfc2kyNTYoViwgTSkgXA0KPiAgICAgICsgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZleHRy
YWN0ZjEyOF9zaTI1NigoX192OHNpKShfX20yNTZpKShWKSwgKGludCkoTSkpDQo+ICAgICAgKw0K
PiAgICAgICsvKiBTSU1EIGxvYWQgb3BzICh1bmFsaWduZWQpICovDQo+ICAgICAgKy8vLyBMb2Fk
cyB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGZyb20N
Cj4gICAgICArLy8vICAgIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zIGFuZCBjb25zdHJ1Y3Rz
IGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFs4IHgg
ZmxvYXRdIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMuDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rp
b25zIGZvbGxvd2VkIGJ5IHRoZQ0KPiAgICAgICsvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hZGRyX2hpDQo+
ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250
YWluaW5nIDQgY29uc2VjdXRpdmUNCj4gICAgICArLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWVzLiBUaGVzZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZCB0bw0KPiAg
ICAgICsvLy8gICAgYml0c1syNTU6MTI4XSBvZiB0aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0
aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90DQo+ICAgICAgKy8vLyAgICBoYXZlIHRvIGJlIGFs
aWduZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hZGRyX2xvDQo+ICAgICAgKy8vLyAgICBBIHBv
aW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIDQgY29uc2VjdXRp
dmUNCj4gICAgICArLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVz
LiBUaGVzZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZCB0bw0KPiAgICAgICsvLy8gICAgYml0c1sx
Mjc6MF0gb2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBk
b2VzIG5vdA0KPiAgICAgICsvLy8gICAgaGF2ZSB0byBiZSBhbGlnbmVkLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZQ0KPiAgICAgICsvLy8gICAgY29uY2F0ZW5hdGVkIHJlc3VsdC4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
MjU2X2xvYWR1Ml9tMTI4KGZsb2F0IGNvbnN0ICpfX2FkZHJfaGksIGZsb2F0IGNvbnN0ICpfX2Fk
ZHJfbG8pDQo+ICAgICAgK3sNCj4gICAgICArICBfX20yNTYgX192MjU2ID0gX21tMjU2X2Nhc3Rw
czEyOF9wczI1NihfbW1fbG9hZHVfcHMoX19hZGRyX2xvKSk7DQo+ICAgICAgKyAgcmV0dXJuIF9t
bTI1Nl9pbnNlcnRmMTI4X3BzKF9fdjI1NiwgX21tX2xvYWR1X3BzKF9fYWRkcl9oaSksIDEpOw0K
PiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTG9hZHMgdHdvIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gZnJvbQ0KPiAgICAgICsvLy8gICAgdW5h
bGlnbmVkIG1lbW9yeSBsb2NhdGlvbnMgYW5kIGNvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb2YgWzQgeCBkb3VibGVdIGJ5IGNvbmNhdGVu
YXRpbmcgdGhlIHR3byAxMjgtYml0IHZlY3RvcnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2VkIGJ5IHRo
ZQ0KPiAgICAgICsvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hZGRyX2hpDQo+ICAgICAgKy8vLyAgICBBIHBv
aW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHR3byBjb25zZWN1
dGl2ZQ0KPiAgICAgICsvLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1
ZXMuIFRoZXNlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkIHRvDQo+ICAgICAgKy8vLyAgICBiaXRz
WzI1NToxMjhdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRp
b24gZG9lcyBub3QNCj4gICAgICArLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2FkZHJfbG8NCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1i
aXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdHdvIGNvbnNlY3V0aXZlDQo+ICAgICAgKy8v
LyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVz
IGFyZSB0byBiZSBjb3BpZWQgdG8NCj4gICAgICArLy8vICAgIGJpdHNbMTI3OjBdIG9mIHRoZSBy
ZXN1bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QNCj4gICAg
ICArLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhl
DQo+ICAgICAgKy8vLyAgICBjb25jYXRlbmF0ZWQgcmVzdWx0Lg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2xvYWR1Ml9t
MTI4ZChkb3VibGUgY29uc3QgKl9fYWRkcl9oaSwgZG91YmxlIGNvbnN0ICpfX2FkZHJfbG8pDQo+
ICAgICAgK3sNCj4gICAgICArICBfX20yNTZkIF9fdjI1NiA9IF9tbTI1Nl9jYXN0cGQxMjhfcGQy
NTYoX21tX2xvYWR1X3BkKF9fYWRkcl9sbykpOw0KPiAgICAgICsgIHJldHVybiBfbW0yNTZfaW5z
ZXJ0ZjEyOF9wZChfX3YyNTYsIF9tbV9sb2FkdV9wZChfX2FkZHJfaGkpLCAxKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLy8vIExvYWRzIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9y
cyBmcm9tIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zIGFuZA0KPiAgICAgICsvLy8gICAgY29u
c3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgY29uY2F0ZW5hdGluZyB0aGUgdHdv
IDEyOC1iaXQNCj4gICAgICArLy8vICAgIHZlY3RvcnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2VkIGJ5
IHRoZQ0KPiAgICAgICsvLy8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hZGRyX2hpDQo+ICAgICAgKy8vLyAgICBB
IHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgMTI4LWJp
dCBpbnRlZ2VyDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IuIFRoaXMgdmVjdG9yIGlzIHRvIGJlIGNv
cGllZCB0byBiaXRzWzI1NToxMjhdIG9mIHRoZSByZXN1bHQuIFRoZQ0KPiAgICAgICsvLy8gICAg
YWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25l
ZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2FkZHJfbG8NCj4gICAgICArLy8vICAgIEEgcG9pbnRl
ciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSAxMjgtYml0IGludGVn
ZXINCj4gICAgICArLy8vICAgIHZlY3Rvci4gVGhpcyB2ZWN0b3IgaXMgdG8gYmUgY29waWVkIHRv
IGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZQ0KPiAgICAgICsvLy8gICAgYWRkcmVzcyBv
ZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBj
b25jYXRlbmF0ZWQgcmVzdWx0Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X2xvYWR1Ml9tMTI4aShfX20xMjhpIGNvbnN0
ICpfX2FkZHJfaGksIF9fbTEyOGkgY29uc3QgKl9fYWRkcl9sbykNCj4gICAgICArew0KPiAgICAg
ICsgIF9fbTI1NmkgX192MjU2ID0gX21tMjU2X2Nhc3RzaTEyOF9zaTI1NihfbW1fbG9hZHVfc2kx
MjgoX19hZGRyX2xvKSk7DQo+ICAgICAgKyAgcmV0dXJuIF9tbTI1Nl9pbnNlcnRmMTI4X3NpMjU2
KF9fdjI1NiwgX21tX2xvYWR1X3NpMTI4KF9fYWRkcl9oaSksIDEpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvKiBTSU1EIHN0b3JlIG9wcyAodW5hbGlnbmVkKSAqLw0KPiAgICAgICsv
Ly8gU3RvcmVzIHRoZSB1cHBlciBhbmQgbG93ZXIgMTI4IGJpdHMgb2YgYSAyNTYtYml0IGZsb2F0
aW5nLXBvaW50DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gaW50byB0d28g
ZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+
IGluc3RydWN0aW9uIGFuZCB0aGUNCj4gICAgICArLy8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2FkZHJfaGkNCj4gICAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzI1NToxMjhdIG9m
IFxhIF9fYSBhcmUgdG8gYmUNCj4gICAgICArLy8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBs
b2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24gZG9lcw0KPiAgICAg
ICsvLy8gICAgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2Fk
ZHJfbG8NCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJlIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb3Bp
ZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxv
Y2F0aW9uIGRvZXMNCj4gICAgICArLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmUgdm9pZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tMjU2X3N0b3JldTJfbTEyOChmbG9hdCAqX19h
ZGRyX2hpLCBmbG9hdCAqX19hZGRyX2xvLCBfX20yNTYgX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgX19tMTI4IF9fdjEyODsNCj4gICAgICArDQo+ICAgICAgKyAgX192MTI4ID0gX21tMjU2X2Nh
c3RwczI1Nl9wczEyOChfX2EpOw0KPiAgICAgICsgIF9tbV9zdG9yZXVfcHMoX19hZGRyX2xvLCBf
X3YxMjgpOw0KPiAgICAgICsgIF9fdjEyOCA9IF9tbTI1Nl9leHRyYWN0ZjEyOF9wcyhfX2EsIDEp
Ow0KPiAgICAgICsgIF9tbV9zdG9yZXVfcHMoX19hZGRyX2hpLCBfX3YxMjgpOw0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIHRoZSB1cHBlciBhbmQgbG93ZXIgMTI4IGJp
dHMgb2YgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdIGludG8gdHdvIGRpZmZlcmVudCB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9u
cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbiBhbmQgdGhlDQo+ICAgICAgKy8vLyAg
IHN0b3JlIGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
ZGRyX2hpDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2Nh
dGlvbi4gQml0c1syNTU6MTI4XSBvZiBcYSBfX2EgYXJlIHRvIGJlDQo+ICAgICAgKy8vLyAgICBj
b3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5
IGxvY2F0aW9uIGRvZXMNCj4gICAgICArLy8vICAgIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19hZGRyX2xvDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8g
YSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gQml0c1sxMjc6MF0gb2YgXGEgX19hIGFyZSB0byBi
ZQ0KPiAgICAgICsvLy8gICAgY29waWVkIHRvIHRoaXMgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRk
cmVzcyBvZiB0aGlzIG1lbW9yeSBsb2NhdGlvbiBkb2VzDQo+ICAgICAgKy8vLyAgICBub3QgaGF2
ZSB0byBiZSBhbGlnbmVkLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZf
c3RvcmV1Ml9tMTI4ZChkb3VibGUgKl9fYWRkcl9oaSwgZG91YmxlICpfX2FkZHJfbG8sIF9fbTI1
NmQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19tMTI4ZCBfX3YxMjg7DQo+ICAgICAgKw0K
PiAgICAgICsgIF9fdjEyOCA9IF9tbTI1Nl9jYXN0cGQyNTZfcGQxMjgoX19hKTsNCj4gICAgICAr
ICBfbW1fc3RvcmV1X3BkKF9fYWRkcl9sbywgX192MTI4KTsNCj4gICAgICArICBfX3YxMjggPSBf
bW0yNTZfZXh0cmFjdGYxMjhfcGQoX19hLCAxKTsNCj4gICAgICArICBfbW1fc3RvcmV1X3BkKF9f
YWRkcl9oaSwgX192MTI4KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN0b3Jl
cyB0aGUgdXBwZXIgYW5kIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBpbnRvDQo+ICAgICAgKy8vLyAgICB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9j
YXRpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uIGFuZCB0aGUNCj4gICAgICAr
Ly8vICAgc3RvcmUgaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2FkZHJfaGkNCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5
IGxvY2F0aW9uLiBCaXRzWzI1NToxMjhdIG9mIFxhIF9fYSBhcmUgdG8gYmUNCj4gICAgICArLy8v
ICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBt
ZW1vcnkgbG9jYXRpb24gZG9lcw0KPiAgICAgICsvLy8gICAgbm90IGhhdmUgdG8gYmUgYWxpZ25l
ZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2FkZHJfbG8NCj4gICAgICArLy8vICAgIEEgcG9pbnRl
ciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJl
IHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkgbG9jYXRpb24uIFRo
ZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRvZXMNCj4gICAgICArLy8vICAgIG5v
dCBoYXZlIHRvIGJlIGFsaWduZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSB2
b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW0yNTZfc3RvcmV1Ml9tMTI4aShfX20x
MjhpICpfX2FkZHJfaGksIF9fbTEyOGkgKl9fYWRkcl9sbywgX19tMjU2aSBfX2EpDQo+ICAgICAg
K3sNCj4gICAgICArICBfX20xMjhpIF9fdjEyODsNCj4gICAgICArDQo+ICAgICAgKyAgX192MTI4
ID0gX21tMjU2X2Nhc3RzaTI1Nl9zaTEyOChfX2EpOw0KPiAgICAgICsgIF9tbV9zdG9yZXVfc2kx
MjgoX19hZGRyX2xvLCBfX3YxMjgpOw0KPiAgICAgICsgIF9fdjEyOCA9IF9tbTI1Nl9leHRyYWN0
ZjEyOF9zaTI1NihfX2EsIDEpOw0KPiAgICAgICsgIF9tbV9zdG9yZXVfc2kxMjgoX19hZGRyX2hp
LCBfX3YxMjgpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBh
IDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGJ5DQo+ICAgICAg
Ky8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19oaQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIHVw
cGVyDQo+ICAgICAgKy8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fbG8NCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gdG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcg0KPiAgICAgICsvLy8g
ICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUNCj4g
ICAgICArLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9zZXRfbTEyOCAoX19t
MTI4IF9faGksIF9fbTEyOCBfX2xvKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNf
Xw0KPiAgICAgICsgIHJldHVybiBfbW0yNTZfaW5zZXJ0ZjEyOF9wcyAoX21tMjU2X2Nhc3RwczEy
OF9wczI1NiAoX19sbyksIF9faGksIDEpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVy
biAoX19tMjU2KSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fbG8sIChfX3Y0c2Yp
X19oaSwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBieQ0KPiAgICAgICsvLy8gICAgY29uY2F0ZW5hdGlu
ZyB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
SU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX2hpDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXSB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyDQo+ICAgICAgKy8vLyAg
ICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbG8NCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXINCj4gICAgICArLy8vICAgIDEyOCBiaXRzIG9mIHRo
ZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZQ0KPiAgICAgICsvLy8gICAgY29u
Y2F0ZW5hdGVkIHJlc3VsdC4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9zZXRfbTEyOGQgKF9fbTEyOGQgX19oaSwgX19t
MTI4ZCBfX2xvKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsg
IHJldHVybiAoX19tMjU2ZCkgX21tMjU2X2luc2VydGYxMjhfcGQgKF9tbTI1Nl9jYXN0cGQxMjhf
cGQyNTYgKF9fbG8pLCBfX2hpLCAxKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4g
KF9fbTI1NmQpIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19sbywgKF9fdjJkZilf
X2hpLCAwLCAxLCAyLCAzKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBjb25jYXRl
bmF0aW5nIHR3byAxMjgtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklO
U0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19oaQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGJlIGNv
cGllZCB0byB0aGUgdXBwZXIgMTI4IGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19sbw0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlDQo+ICAg
ICAgKy8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9z
ZXRfbTEyOGkgKF9fbTEyOGkgX19oaSwgX19tMTI4aSBfX2xvKQ0KPiAgICAgICt7DQo+ICAgICAg
KyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMjU2aSkgX21tMjU2X2luc2Vy
dGYxMjhfc2kyNTYgKF9tbTI1Nl9jYXN0c2kxMjhfc2kyNTYgKF9fbG8pLCBfX2hpLCAxKTsNCj4g
ICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmkpIF9fYnVpbHRpbl9zaHVmZmxl
dmVjdG9yKChfX3YyZGkpX19sbywgKF9fdjJkaSlfX2hpLCAwLCAxLCAyLCAzKTsNCj4gICAgICAr
I2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMjU2
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYnkNCj4gICAgICArLy8v
ICAgIGNvbmNhdGVuYXRpbmcgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBb
NCB4IGZsb2F0XS4gVGhpcyBpcw0KPiAgICAgICsvLy8gICAgc2ltaWxhciB0byBfbW0yNTZfc2V0
X20xMjgsIGJ1dCB0aGUgb3JkZXIgb2YgdGhlIGlucHV0IHBhcmFtZXRlcnMgaXMNCj4gICAgICAr
Ly8vICAgIHN3YXBwZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19sbw0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIGxv
d2VyDQo+ICAgICAgKy8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9faGkNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gdG8gYmUgY29waWVkIHRvIHRoZSB1cHBlcg0KPiAgICAgICsvLy8g
ICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUNCj4g
ICAgICArLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbTI1Nl9zZXRyX20xMjggKF9f
bTEyOCBfX2xvLCBfX20xMjggX19oaSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW0y
NTZfc2V0X20xMjgoX19oaSwgX19sbyk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGJ5DQo+ICAgICAgKy8vLyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLiBUaGlzIGlzDQo+ICAgICAgKy8vLyAgICBz
aW1pbGFyIHRvIF9tbTI1Nl9zZXRfbTEyOGQsIGJ1dCB0aGUgb3JkZXIgb2YgdGhlIGlucHV0IHBh
cmFtZXRlcnMgaXMNCj4gICAgICArLy8vICAgIHN3YXBwZWQuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19sbw0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
dG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMTI4IGJpdHMgb2YgdGhl
IHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2hpDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBjb3BpZWQgdG8g
dGhlIHVwcGVyDQo+ICAgICAgKy8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUNCj4gICAgICArLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW0yNTZfc2V0cl9tMTI4ZCAoX19tMTI4ZCBfX2xvLCBfX20xMjhkIF9faGkpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTI1NmQpX21tMjU2X3NldF9tMTI4ZChfX2hpLCBf
X2xvKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAyNTYt
Yml0IGludGVnZXIgdmVjdG9yIGJ5IGNvbmNhdGVuYXRpbmcgdHdvIDEyOC1iaXQNCj4gICAgICAr
Ly8vICAgIGludGVnZXIgdmVjdG9ycy4gVGhpcyBpcyBzaW1pbGFyIHRvIF9tbTI1Nl9zZXRfbTEy
OGksIGJ1dCB0aGUgb3JkZXIgb2YNCj4gICAgICArLy8vICAgIHRoZSBpbnB1dCBwYXJhbWV0ZXJz
IGlzIHN3YXBwZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19sbw0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlDQo+ICAg
ICAgKy8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19oaQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGJlIGNvcGllZCB0byB0aGUgdXBwZXIgMTI4
IGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJl
c3VsdC4NCj4gICAgICArc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbTI1Nl9zZXRyX20xMjhpIChfX20xMjhpIF9fbG8sIF9fbTEyOGkgX19oaSkN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMjU2aSlfbW0yNTZfc2V0X20xMjhpKF9f
aGksIF9fbG8pOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsjdW5kZWYgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCj4gICAgICAr
DQo+ICAgICAgKyNlbmRpZiAvKiBfX0FWWElOVFJJTl9IICovDQo+ICAgICAgZGlmZiAtLWdpdCBh
L2luY2x1ZGUvZW1taW50cmluLmggYi9pbmNsdWRlL2VtbWludHJpbi5oDQo+ICAgICAgbmV3IGZp
bGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi40NTY5ZDk4DQo+ICAgICAgLS0t
IC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL2luY2x1ZGUvZW1taW50cmluLmgNCj4gICAgICBAQCAt
MCwwICsxLDUwMjEgQEANCj4gICAgICArLyo9PT0tLS0tIGVtbWludHJpbi5oIC0gU1NFMiBpbnRy
aW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KPiAgICAgICsg
Kg0KPiAgICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQo+ICAgICAgKyAqIG9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0byBkZWFsDQo+ICAgICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCj4gICAgICArICogdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbA0KPiAgICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCj4gICAgICArICogZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gICAg
ICArICoNCj4gICAgICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gICAgICArICogYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICAgICAgKyAqDQo+
ICAgICAgKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+ICAgICAgKyAqIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0K
PiAgICAgICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gICAgICArICogQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0K
PiAgICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KPiAgICAgICsgKiBPVVQgT0YgT1IgSU4g
Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElODQo+ICAgICAgKyAqIFRIRSBTT0ZUV0FSRS4NCj4gICAgICArICoNCj4gICAgICArICo9PT0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT09PQ0KPiAgICAgICsgKi8NCj4gICAgICArDQo+ICAgICAgKyNpZm5kZWYg
X19FTU1JTlRSSU5fSA0KPiAgICAgICsjZGVmaW5lIF9fRU1NSU5UUklOX0gNCj4gICAgICArDQo+
ICAgICAgKyNpbmNsdWRlIDx4bW1pbnRyaW4uaD4NCj4gICAgICArDQo+ICAgICAgK3R5cGVkZWYg
ZG91YmxlIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KPiAg
ICAgICt0eXBlZGVmIGxvbmcgbG9uZyBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3Np
emVfXygxNikpKTsNCj4gICAgICArDQo+ICAgICAgKy8qIFR5cGUgZGVmaW5lcy4gICovDQo+ICAg
ICAgK3R5cGVkZWYgZG91YmxlIF9fdjJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9f
ICgxNikpKTsNCj4gICAgICArdHlwZWRlZiBsb25nIGxvbmcgX192MmRpIF9fYXR0cmlidXRlX18g
KChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOw0KPiAgICAgICt0eXBlZGVmIHNob3J0IF9fdjhoaSBf
X2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQo+ICAgICAgK3R5cGVkZWYgY2hh
ciBfX3YxNnFpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCj4gICAgICAr
DQo+ICAgICAgKy8qIFVuc2lnbmVkIHR5cGVzICovDQo+ICAgICAgK3R5cGVkZWYgdW5zaWduZWQg
bG9uZyBsb25nIF9fdjJkdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsN
Cj4gICAgICArdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Y4aHUgX19hdHRyaWJ1dGVfXygoX192
ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KPiAgICAgICt0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX192MTZx
dSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQo+ICAgICAgKw0KPiAgICAg
ICsvKiBXZSBuZWVkIGFuIGV4cGxpY2l0bHkgc2lnbmVkIHZhcmlhbnQgZm9yIGNoYXIuIE5vdGUg
dGhhdCB0aGlzIHNob3VsZG4ndA0KPiAgICAgICsgKiBhcHBlYXIgaW4gdGhlIGludGVyZmFjZSB0
aG91Z2guICovDQo+ICAgICAgK3R5cGVkZWYgc2lnbmVkIGNoYXIgX192MTZxcyBfX2F0dHJpYnV0
ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQo+ICAgICAgKw0KPiAgICAgICsvKiBEZWZpbmUg
dGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICov
DQo+ICAgICAgKyNpZmRlZiAgX19HTlVDX18NCj4gICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5f
QVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf
X2FydGlmaWNpYWxfXykpDQo+ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX01NWCBf
X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp
Y2lhbF9fKSkNCj4gICAgICArI2Vsc2UNCj4gICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRU
UlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3Rhcmdl
dF9fKCJzc2UyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KPiAgICAgICsjZGVmaW5l
IF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtbXgsc3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhf
Xyg2NCkpKQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKyNkZWZpbmUgX01NX1NI
VUZGTEUyKHgsIHkpICgoKHgpIDw8IDEpIHwgKHkpKQ0KPiAgICAgICsNCj4gICAgICArLy8vIEFk
ZHMgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaW4gYm90aCBvcGVyYW5kcyBhbmQgcmV0
dXJucyB0aGUNCj4gICAgICArLy8vICAgIHN1bSBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUg
cmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0DQo+ICAgICAgKy8vLyAgICBh
cmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZp
cnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkFERFNEIC8gQUREU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdo
b3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCj4gICAgICArLy8vICAgIHN1bSBvZiB0aGUg
bG93ZXIgNjQgYml0cyBvZiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29w
aWVkDQo+ICAgICAgKy8vLyAgICBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBz
b3VyY2Ugb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2FkZF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2Ip
DQo+ICAgICAgK3sNCj4gICAgICArICBfX2FbMF0gKz0gX19iWzBdOw0KPiAgICAgICsgIHJldHVy
biBfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRzIHR3byAxMjgtYml0
IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERQRCAvIEFERFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9w
ZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fYWRkX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkZilfX2EgKyAoX192MmRmKV9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdWJ0cmFjdHMgdGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kDQo+ICAgICAgKy8v
LyAgICBmcm9tIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBv
cGVyYW5kIGFuZCByZXR1cm5zDQo+ICAgICAgKy8vLyAgICB0aGUgZGlmZmVyZW5jZSBpbiB0aGUg
bG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZg0KPiAgICAg
ICsvLy8gICAgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJT
RCAvIFNVQlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgbWludWVuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHN1
YnRyYWhlbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBk
aWZmZXJlbmNlIG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBl
ciA2NCBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3ViX3NkKF9fbTEyOGQg
X19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIF9fYVswXSAtPSBfX2JbMF07
DQo+ICAgICAgKyAgcmV0dXJuIF9fYTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFN1YnRyYWN0cyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCUEQg
LyBTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIG1pbnVlbmQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdWJ0
cmFoZW5kLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2Vlbg0KPiAgICAgICsvLy8gICAg
Ym90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N1Yl9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2Ip
DQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYpX19hIC0gKF9f
djJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTXVsdGlwbGllcyBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpbiBib3RoIG9wZXJhbmRzIGFuZCByZXR1cm5z
DQo+ICAgICAgKy8vLyAgICB0aGUgcHJvZHVjdCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUg
cmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIHJlc3VsdCBh
cmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZp
cnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxTRCAvIE1VTFNEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8v
LyAgICBwcm9kdWN0IG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1
cHBlciA2NCBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0
IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbXVsX3NkKF9fbTEy
OGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIF9fYVswXSAqPSBfX2Jb
MF07DQo+ICAgICAgKyAgcmV0dXJuIF9fYTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIE11bHRpcGxpZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1V
TFBEIC8gTVVMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoDQo+
ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX211bF9wZChfX20xMjhkIF9fYSwgX19t
MTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYp
X19hICogKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gRGl2
aWRlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFu
ZCBieSB0aGUNCj4gICAgICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2Yg
dGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KPiAgICAgICsvLy8gICAgcXVvdGll
bnQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMg
b2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdA0KPiAgICAgICsvLy8gICAgb3BlcmFu
ZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWRElWU0QgLyBESVZTRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
Yg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFp
bmluZyBkaXZpc29yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KPiAgICAgICsvLy8g
ICAgcXVvdGllbnQgb2YgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVw
cGVyIDY0IGJpdHMgYXJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQg
Yml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9kaXZfc2QoX19tMTI4
ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19hWzBdIC89IF9fYlsw
XTsNCj4gICAgICArICByZXR1cm4gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gUGVyZm9ybXMgYW4gZWxlbWVudC1ieS1lbGVtZW50IGRpdmlzaW9uIG9mIHR3byAxMjgtYml0
IHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRElWUEQgLyBESVZQ
RCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIGRpdmlkZW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGl2aXNvci4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX2Rpdl9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYpX19hIC8gKF9fdjJkZilfX2IpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qg
b2YgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YNCj4gICAgICArLy8vICAgIHRo
ZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyBpdCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0
aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gICAgVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3Vs
dCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyDQo+ICAgICAgKy8vLyAgICBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTUVJUU0QgLyBTUVJUU0QgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBv
ZiB0aGUgb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgdXBwZXIgNjQgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIGNvcGllZCB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCj4gICAgICAr
Ly8vICAgIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVy
YW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBzcXVhcmUgcm9vdCBpcyBjYWxjdWxhdGVkIHVzaW5n
IHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoaXMgb3BlcmFuZC4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29u
dGFpbiB0aGUNCj4gICAgICArLy8vICAgIHNxdWFyZSByb290IG9mIHRoZSBsb3dlciA2NCBiaXRz
IG9mIG9wZXJhbmQgXGEgX19iLCBhbmQgd2hvc2UgdXBwZXIgNjQNCj4gICAgICArLy8vICAgIGJp
dHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIG9wZXJhbmQgXGEgX19hLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fc3FydF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4g
ICAgICArICBfX20xMjhkIF9fYyA9IF9fYnVpbHRpbl9pYTMyX3NxcnRzZCgoX192MmRmKV9fYik7
DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsgX19jWzBdLCBfX2Fb
MV0gfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENhbGN1bGF0ZXMgdGhlIHNx
dWFyZSByb290IG9mIHRoZSBlYWNoIG9mIHR3byB2YWx1ZXMgc3RvcmVkIGluIGENCj4gICAgICAr
Ly8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBEIC8gU1FSVFBE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgaW4gdGhlIG9w
ZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV9zcXJ0X3BkKF9fbTEyOGQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3NxcnRwZCgoX192MmRmKV9fYSk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBsb3dlciA2NC1iaXQgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgb2YgYm90aCBvcGVyYW5kcywgYW5kDQo+ICAgICAgKy8vLyAgICByZXR1cm5z
IHRoZSBsZXNzZXIgb2YgdGhlIHBhaXIgb2YgdmFsdWVzIGluIHRoZSBsb3dlciA2NC1iaXRzIG9m
IHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVz
dWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXINCj4gICAgICArLy8vICAgIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlNEIC8gTUlOU0QgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBv
ZiB0aGUgb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgbG93ZXIgNjQg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dl
ciA2NCBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBtaW5pbXVtIHZhbHVlIGJldHdl
ZW4gYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tDQo+ICAg
ICAgKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9taW5fc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+
ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnNkKChfX3YyZGYpX19hLCAoX192MmRm
KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBlbGVtZW50
LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAg
ICAgICsvLy8gICAgWzIgeCBkb3VibGVdIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgbGVzc2VyIG9mIGVhY2ggcGFpciBvZg0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZN
SU5QRCAvIE1JTlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
Yg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFp
bmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWluaW11bSB2YWx1ZXMNCj4g
ICAgICArLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX21pbl9wZChfX20x
MjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWls
dGluX2lhMzJfbWlucGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGxvd2VyIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcyBvZiBib3RoIG9wZXJhbmRzLCBhbmQNCj4gICAgICArLy8vICAgIHJldHVybnMgdGhl
IGdyZWF0ZXIgb2YgdGhlIHBhaXIgb2YgdmFsdWVzIGluIHRoZSBsb3dlciA2NC1iaXRzIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0
IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXINCj4gICAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFNEIC8gTUFYU0QgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0
aGUgb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlzIG9w
ZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgbG93ZXIgNjQgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2
NCBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBtYXhpbXVtIHZhbHVlIGJldHdlZW4g
Ym90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tDQo+ICAgICAg
Ky8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV9tYXhfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21heHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBlbGVtZW50LWJ5
LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAgICAg
ICsvLy8gICAgWzIgeCBkb3VibGVdIGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgY29udGFpbmluZyB0
aGUgZ3JlYXRlciBvZiBlYWNoIHBhaXINCj4gICAgICArLy8vICAgIG9mIHZhbHVlcy4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFY
UEQgLyBNQVhQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1heGltdW0gdmFsdWVzDQo+ICAg
ICAgKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tYXhfcGQoX19tMTI4
ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX21heHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZl
Y3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQU5EIC8gUEFORCA8L2M+IGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2
YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYW5kX3BkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZCkoKF9f
djJkdSlfX2EgJiAoX192MmR1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBk
b3VibGVdLCB1c2luZw0KPiAgICAgICsvLy8gICAgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhl
IHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQU5ETiAv
IFBBTkROIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4gVGhlDQo+ICAgICAgKy8vLyAgICBvbmUn
cyBjb21wbGVtZW50IG9mIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgYml0d2lzZSBBTkQuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgdmFsdWVzIGluIHRoZSBz
ZWNvbmQgb3BlcmFuZCBhbmQgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0DQo+ICAg
ICAgKy8vLyAgICBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYW5kbm90X3BkKF9fbTEyOGQgX19hLCBfX20x
MjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZCkofihfX3YyZHUp
X19hICYgKF9fdjJkdSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVy
Zm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQT1IgLyBQT1IgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJp
dHdpc2UgT1Igb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJh
bmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fb3JfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhkKSgoX192MmR1KV9fYSB8IChfX3YyZHUpX19iKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBYT1Ig
b2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBYT1IgLyBQWE9SIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBiaXR3aXNlIFhPUiBvZiB0aGUN
Cj4gICAgICArLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV94
b3JfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0
dXJuIChfX20xMjhkKSgoX192MmR1KV9fYSBeIChfX3YyZHUpX19iKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3Rv
cnMgb2YgWzIgeCBkb3VibGVdIGZvciBlcXVhbGl0eS4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAw
eDANCj4gICAgICArLy8vICAgIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVl
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDTVBFUVBEIC8gQ01QRVFQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X2NtcGVxX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBlcXBkKChfX3YyZGYpX19hLCAoX192
MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNo
IG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUg
aWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCj4gICAgICArLy8vICAgIG9wZXJhbmQgYXJlIGxl
c3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuIEVhY2ggY29tcGFyaXNvbg0KPiAg
ICAgICsvLy8gICAgeWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3Ig
dHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ01QTFRQRCAvIENNUExUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9jbXBsdF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbHRwZCgoX192MmRmKV9fYSwg
KF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMg
ZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUN
Cj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJt
aW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kIGFy
ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBm
YWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMRVBEIC8gQ01QTEVQRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcGxlX3BkKF9fbTEyOGQgX19hLCBf
X20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0
aW5faWEzMl9jbXBsZXBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4g
ICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0
b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmly
c3QNCj4gICAgICArLy8vICAgIG9wZXJhbmQgYXJlIGdyZWF0ZXIgdGhhbiB0aG9zZSBpbiB0aGUg
c2Vjb25kIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgRWFjaCBjb21wYXJp
c29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkNNUExUUEQgLyBDTVBMVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21w
Z3RfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0
dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0cGQoKF9fdjJkZilfX2IsIChfX3YyZGYp
X19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0
aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBhcmUgZ3JlYXRl
ciB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2Us
IDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVQRCAvIENNUExFUEQgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vIFxw
YXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBj
b21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBnZV9wZChfX20xMjhkIF9fYSwgX19tMTI4
ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lh
MzJfY21wbGVwZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBv
ZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQo+
ICAgICAgKy8vLyAgICBvcGVyYW5kIGFyZSBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byB0aG9zZSBp
biB0aGUgc2Vjb25kIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgQSBwYWly
IG9mIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAib3JkZXJlZCIgd2l0aCByZXNwZWN0IHRv
IGVhY2gNCj4gICAgICArLy8vICAgIG90aGVyIGlmIG5laXRoZXIgdmFsdWUgaXMgYSBOYU4uIEVh
Y2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwNCj4gICAgICArLy8vICAgIDB4RkZG
RkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QT1JEUEQgLyBDTVBPUkRQRCA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcG9yZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBf
X2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf
Y21wb3JkcGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KPiAg
ICAgICsvLy8gICAgb3BlcmFuZCBhcmUgdW5vcmRlcmVkIHdpdGggcmVzcGVjdCB0byB0aG9zZSBp
biB0aGUgc2Vjb25kIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgQSBwYWly
IG9mIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAidW5vcmRlcmVkIiB3aXRoIHJlc3BlY3Qg
dG8gZWFjaA0KPiAgICAgICsvLy8gICAgb3RoZXIgaWYgb25lIG9yIGJvdGggdmFsdWVzIGFyZSBO
YU4uIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvcg0KPiAgICAgICsvLy8gICAgZmFsc2Us
IDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QVU5PUkRQRCAvIENNUFVOT1JEUEQg
PC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXB1bm9y
ZF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wdW5vcmRwZCgoX192MmRmKV9fYSwgKF9fdjJk
ZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCj4gICAg
ICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlm
IHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kIGFyZSB1bmVx
dWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZG
RkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRUEQgLyBDTVBORVFQRCA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tX2NtcG5lcV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmVx
cGQoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBk
b3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KPiAgICAgICsv
Ly8gICAgb3BlcmFuZCBhcmUgbm90IGxlc3MgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJh
bmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAw
eDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFBEIC8g
Q01QTkxUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBj
b250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBubHRfcGQoX19t
MTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAg
MTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVl
cyBpbiB0aGUgZmlyc3QNCj4gICAgICArLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZG
RkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQRCAvIENNUE5MRVBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21wbmxlX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9j
bXBubGVwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlcyBvZiB0aGUNCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBb
MiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQo+ICAg
ICAgKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNv
bmQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBFYWNoIGNvbXBhcmlzb24g
eWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01Q
TkxUUEQgLyBDTVBOTFRQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcG5n
dF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmx0cGQoKF9fdjJkZilfX2IsIChfX3YyZGYp
X19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0
aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBhcmUgbm90IGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZh
bHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVBEIC8gQ01QTkxFUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5n
IHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBuZ2VfcGQoX19tMTI4ZCBfX2Es
IF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVp
bHRpbl9pYTMyX2NtcG5sZXBkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KPiAgICAgICsvLy8gICAgdGhlIHR3
byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIGZvciBlcXVh
bGl0eS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMg
MHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVNEIC8g
Q01QRVFTRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBU
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFy
ZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8v
LyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBf
X2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQg
Yml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0cy4gVGhl
IHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9f
YS4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX2NtcGVxX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICAr
ew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBlcXNkKChfX3Yy
ZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMg
aW4gZWFjaCBvZg0KPiAgICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAg
dGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNw
b25kaW5nIHZhbHVlIGluDQo+ICAgICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBm
YWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFNEIC8gQ01QTFRTRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250
YWlucyB0aGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tX2NtcGx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsdHNkKChfX3YyZGYpX19hLCAo
X192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBv
Zg0KPiAgICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZhbHVl
IGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KPiAg
ICAgICsvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZv
ciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMRVNEIC8gQ01QTEVT
RCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBj
b21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBj
b250YWlucyB0aGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVy
IDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAg
ICArX21tX2NtcGxlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsZXNkKChfX3YyZGYpX19h
LCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJl
cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFj
aCBvZg0KPiAgICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
cnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZh
bHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSBjb3JyZXNwb25k
aW5nIHZhbHVlDQo+ICAgICAgKy8vLyAgICBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxz
ZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFNEIC8gQ01QTFRTRCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgICBjb21wYXJlZCB0byB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQo+ICAgICAgKy8vLyBccGFy
YW0gX19iDQo+ICAgICAgKy8vLyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICAgY29t
cGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KPiAg
ICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29u
dGFpbnMgdGhlIGNvbXBhcmlzb24NCj4gICAgICArLy8vICAgICByZXN1bHRzLiBUaGUgdXBwZXIg
NjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fY21wZ3Rfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9jbXBsdHNkKChfX3YyZGYpX19iLCAo
X192MmRmKV9fYSk7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsg
X19jWzBdLCBfX2FbMV0gfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBh
cmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBl
YWNoIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8vLyAgICB0aGUg
dmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
dGhlDQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFy
YW1ldGVyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxk
cyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFU0Qg
LyBDTVBMRVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICAr
Ly8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxh
IF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2
NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQo+ICAgICAgKy8vLyAgICByZXN1bHRzLiBU
aGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEg
X19hLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fY21wZ2Vfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9jbXBsZXNkKChfX3Yy
ZGYpX19iLCAoX192MmRmKV9fYSk7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZh
bHVlcyBpbiBlYWNoIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8v
LyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyAib3JkZXJlZCIgd2l0aCBy
ZXNwZWN0IHRvIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUg
c2Vjb25kIHBhcmFtZXRlci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFy
aXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLiBB
IHBhaXINCj4gICAgICArLy8vICAgIG9mIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAib3Jk
ZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIgaWYNCj4gICAgICArLy8vICAgIG5laXRo
ZXIgdmFsdWUgaXMgYSBOYU4uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE9SRFNEIC8gQ01QT1JEU0QgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBh
cmlzb24NCj4gICAgICArLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3Bp
ZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBvcmRfc2Qo
X19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG9yZHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KPiAgICAgICsv
Ly8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3Vi
bGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBwYXJhbWV0ZXIgaXMgInVub3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIHRoZQ0KPiAgICAgICsv
Ly8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxz
ZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLiBBIHBhaXINCj4gICAgICArLy8vICAgIG9m
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAidW5vcmRlcmVkIiB3aXRoIHJlc3BlY3QgdG8g
ZWFjaCBvdGhlciBpZg0KPiAgICAgICsvLy8gICAgb25lIG9yIGJvdGggdmFsdWVzIGFyZSBOYU4u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkNNUFVOT1JEU0QgLyBDTVBVTk9SRFNEIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21w
YXJpc29uDQo+ICAgICAgKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29w
aWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21wdW5vcmRf
c2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcHVub3Jkc2QoKF9fdjJkZilfX2EsIChfX3YyZGYp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQo+ICAg
ICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4
IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhl
IGZpcnN0IHBhcmFtZXRlciBpcyB1bmVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlu
DQo+ICAgICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZG
RkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBORVFTRCAvIENNUE5FUVNEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21w
YXJpc29uDQo+ICAgICAgKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29w
aWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21wbmVxX3Nk
KF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBuZXFzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2Ip
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCj4gICAgICAr
Ly8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91
YmxlXSB0byBkZXRlcm1pbmUgaWYNCj4gICAgICArLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmly
c3QgcGFyYW1ldGVyIGlzIG5vdCBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcNCj4gICAgICAr
Ly8vICAgIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZG
RkZGRkZGRkYgZm9yIHRydWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFNEIC8gQ01QTkxUU0QgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBh
cmlzb24NCj4gICAgICArLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3Bp
ZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBubHRfc2Qo
X19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KPiAgICAgICsv
Ly8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3Vi
bGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBwYXJhbWV0ZXIgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUNCj4gICAgICArLy8v
ICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2Us
IDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFU0QgLyBDTVBOTEVTRCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxv
d2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21wYXJl
ZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyAgQSAxMjgtYml0IHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFp
bnMgdGhlIGNvbXBhcmlzb24NCj4gICAgICArLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBi
aXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9jbXBubGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sZXNkKChfX3YyZGYpX19hLCAo
X192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBv
Zg0KPiAgICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMg
b2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZhbHVl
IGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9u
ZGluZw0KPiAgICAgICsvLy8gICAgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFs
c2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxUU0QgLyBDTVBOTFRTRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250
YWlucyB0aGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0cy4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9fYS4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tX2NtcG5ndF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICBfX20xMjhkIF9fYyA9IF9fYnVpbHRpbl9pYTMyX2NtcG5sdHNkKChfX3YyZGYpX19iLCAo
X192MmRmKV9fYSk7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsg
X19jWzBdLCBfX2FbMV0gfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBh
cmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBl
YWNoIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8vLyAgICB0aGUg
dmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFs
IHRvIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25k
IHBhcmFtZXRlci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5
aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBO
TEVTRCAvIENNUE5MRVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Iu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4g
ICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBs
b3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQo+ICAgICAgKy8vLyAgICByZXN1
bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMg
b2YgXGEgX19hLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fY21wbmdlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikN
Cj4gICAgICArew0KPiAgICAgICsgIF9fbTEyOGQgX19jID0gX19idWlsdGluX2lhMzJfY21wbmxl
c2QoKF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsNCj4gICAgICArICByZXR1cm4gX19leHRlbnNp
b25fXyAoX19tMTI4ZCkgeyBfX2NbMF0sIF9fYVsxXSB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCj4gICAgICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSBmb3IgZXF1YWxpdHkuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNl
LCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0Qg
LyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBh
cmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsv
Ly8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEg
X19hLg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQo+ICAgICAgKy8vLyAgICBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2Nv
bWllcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICBy
ZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZXEoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQo+ICAgICAgKy8v
LyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJs
ZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0
IHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4NCj4gICAg
ICArLy8vICAgIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
ICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0
aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBl
aXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY29taWx0X3NkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml9jb21pc2RsdCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRp
bmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCj4gICAgICArLy8vICAgIHRoZSB0d28gMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYN
Cj4gICAgICArLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3Mg
dGhhbiBvciBlcXVhbCB0byB0aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUg
aW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhl
IGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2Yg
dGhlIHR3bw0KPiAgICAgICsvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMg
TmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICAr
Ly8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgICBjb21wYXJlZCB0byB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVy
IG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
cyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NvbWlsZV9zZChfX20xMjhkIF9fYSwgX19t
MTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29t
aXNkbGUoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4g
ICAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IHZhbHVlcyBpbiBlYWNoIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAg
ICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRo
YW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUNCj4gICAgICArLy8vICAgIGluIHRoZSBzZWNvbmQg
cGFyYW1ldGVyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlp
ZWxkcyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCj4gICAg
ICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1
cm5lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAg
ICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBv
ZiBcYSBfX2IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlIG9mIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAg
ICAgICsvLy8gICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyBy
ZXR1cm5lZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fY29taWd0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RndCgoX192MmRmKV9f
YSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFy
ZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVh
Y2ggb2YNCj4gICAgICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCj4gICAgICArLy8vICAgIHRoZSB2
YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0
aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJh
bWV0ZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRz
IDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsv
Ly8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICAr
Ly8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxh
IF9fYi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBp
cw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgb2YgXGEgX19hLg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWlu
aW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQo+ICAgICAg
Ky8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJu
ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX2NvbWlnZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sN
Cj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkZ2UoKF9fdjJkZilfX2EsIChf
X3YyZGYpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9m
DQo+ICAgICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBv
ZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8vLyAgICB0aGUgdmFsdWUg
aW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB1bmVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZh
bHVlIGluDQo+ICAgICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9y
IHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvDQo+ICAgICAgKy8vLyAgICBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlT
RCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBj
b21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgICBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NvbWluZXFf
c2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IF9fYnVpbHRpbl9pYTMyX2NvbWlzZG5lcSgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCj4gICAgICArLy8vICAg
IHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSBm
b3IgZXF1YWxpdHkuIFRoZQ0KPiAgICAgICsvLy8gICAgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3Ig
ZmFsc2UsIDEgZm9yIHRydWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgSWYgZWl0aGVy
IG9mIHRoZSB0d28gbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJl
dHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0K
PiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2Vy
IGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28N
Cj4gICAgICArLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBp
cyByZXR1cm5lZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fdWNvbWllcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGVxKChfX3Yy
ZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMg
aW4gZWFjaCBvZg0KPiAgICAgICsvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAg
dGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNw
b25kaW5nIHZhbHVlIGluDQo+ICAgICAgKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFs
c2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyDQo+ICAgICAgKy8vLyAg
ICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01J
U0QgLyBVQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBj
b21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAg
ICArLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9m
IFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV91Y29taWx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkbHQoKF9fdjJkZilfX2EsIChfX3YyZGYp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQo+ICAg
ICAgKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4
IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQo+ICAgICAgKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhl
IGZpcnN0IHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlDQo+ICAgICAgKy8v
LyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwg
MSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXINCj4gICAgICArLy8vICAgIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAv
IFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICArLy8vICAgIGNvbXBh
cmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCj4gICAgICAr
Ly8vICAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBc
YSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgICBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X3Vjb21pbGVfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RsZSgoX192MmRmKV9fYSwgKF9fdjJkZilf
X2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCj4gICAg
ICArLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHgg
ZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCj4gICAgICArLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUg
Zmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZQ0K
PiAgICAgICsvLy8gICAgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVl
LiBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlcg0KPiAgICAgICsvLy8gICAgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYg0KPiAgICAgICsvLy8gICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
LiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgIGNv
bXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAgIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdWNvbWlndF9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4g
X19idWlsdGluX2lhMzJfdWNvbWlzZGd0KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KPiAgICAgICsvLy8gICAg
dGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRv
IGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJh
bWV0ZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgY29y
cmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRy
dWUuICBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlT
RCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8g
dGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBj
b21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdWNvbWlnZV9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4g
X19idWlsdGluX2lhMzJfdWNvbWlzZGdlKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KPiAgICAgICsvLy8gICAg
dGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRv
IGRldGVybWluZSBpZg0KPiAgICAgICsvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJh
bWV0ZXIgaXMgdW5lcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbg0KPiAgICAgICsv
Ly8gICAgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAg
VGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIg
b2YgdGhlIHR3byBsb3dlcg0KPiAgICAgICsvLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMg
aXMgTmFOLCAxIGlzIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZSBpcw0KPiAgICAgICsvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZCB0byB0aGUg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0LiBJZiBlaXRo
ZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1
ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV91Y29taW5lcV9zZChfX20xMjhkIF9fYSwg
X19tMTI4ZCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJf
dWNvbWlzZG5lcSgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBpbnRvIHR3byBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50DQo+ICAg
ICAgKy8vLyAgICB2YWx1ZXMsIHJldHVybmVkIGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyAgICBUaGUgdXBwZXIgNjQg
Yml0cyBvZiB0aGUgcmVzdWx0IHZlY3RvciBhcmUgc2V0IHRvIHplcm8uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBEMlBTIC8g
Q1ZUUEQyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hv
c2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KPiAgICAgICsvLy8gICAgY29udmVydGVkIHZh
bHVlcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIHNldCB0byB6ZXJvLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRwZF9w
cyhfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml9jdnRwZDJwcygoX192MmRmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb252ZXJ0cyB0aGUgbG93ZXIgdHdvIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQg
ZWxlbWVudHMgb2YgYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gaW50byB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludA0KPiAgICAgICsvLy8g
ICAgdmFsdWVzLCByZXR1cm5lZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIHVwcGVyIHR3bw0KPiAgICAgICsvLy8gICAgZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3Rv
ciBhcmUgdW51c2VkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZDVlRQUzJQRCAvIENWVFBTMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIHR3byBzaW5nbGUtcHJlY2lzaW9u
DQo+ICAgICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBhcmUgY29udmVydGVkIHRv
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLiBUaGUNCj4gICAgICArLy8vICAgIHVwcGVyIHR3byBl
bGVtZW50cyBhcmUgdW51c2VkLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tX2N2dHBzX3BkKF9fbTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05V
Q19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2N2dHBzMnBkICgo
X192NHNmKSBfX2EpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZCkg
X19idWlsdGluX2NvbnZlcnR2ZWN0b3IoDQo+ICAgICAgKyAgICAgIF9fYnVpbHRpbl9zaHVmZmxl
dmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMSksIF9fdjJkZik7DQo+ICAgICAg
KyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgdGhlIGxv
d2VyIHR3byBpbnRlZ2VyIGVsZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCj4gICAgICAr
Ly8vICAgIFs0IHggaTMyXSBpbnRvIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZhbHVlcywgcmV0dXJuZWQgaW4gYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSB1cHBlciB0d28g
ZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3RvciBhcmUgdW51c2VkLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlREUTJQRCAvIENW
VERRMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMy
XS4gVGhlIGxvd2VyIHR3byBpbnRlZ2VyIGVsZW1lbnRzIGFyZQ0KPiAgICAgICsvLy8gICAgY29u
dmVydGVkIHRvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vICAgIFRoZSB1cHBlciB0d28gZWxlbWVudHMgYXJlIHVudXNlZC4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNv
bnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRlcGkzMl9wZChfX20xMjhpIF9fYSkNCj4gICAg
ICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQp
X19idWlsdGluX2lhMzJfY3Z0ZHEycGQgKChfX3Y0c2kpIF9fYSk7DQo+ICAgICAgKyNlbHNlDQo+
ICAgICAgKyAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5fY29udmVydHZlY3RvcigNCj4gICAg
ICArICAgICAgX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19h
LCAwLCAxKSwgX192MmRmKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgZWxlbWVudHMgb2YgYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIGludG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMsDQo+ICAgICAgKy8v
LyAgICByZXR1cm5lZCBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXS4gVGhlIHVwcGVyDQo+ICAgICAgKy8vLyAgICA2NCBiaXRzIG9mIHRoZSByZXN1
bHQgdmVjdG9yIGFyZSBzZXQgdG8gemVyby4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEQyRFEgLyBDVlRQRDJEUSA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gd2hvc2UgbG93ZXIgNjQgYml0cyBj
b250YWluIHRoZQ0KPiAgICAgICsvLy8gICAgY29udmVydGVkIHZhbHVlcy4gVGhlIHVwcGVyIDY0
IGJpdHMgYXJlIHNldCB0byB6ZXJvLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0cGRfZXBpMzIoX19tMTI4ZCBfX2Ep
DQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxICgoX192MmRmKSBfX2EpOw0KPiAgICAgICsj
ZWxzZQ0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcSgoX192MmRmKV9f
YSk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29u
dmVydHMgdGhlIGxvdy1vcmRlciBlbGVtZW50IG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdDQo+ICAgICAgKy8vLyAgICBpbnRvIGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVl
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDVlRTRDJTSSAvIENWVFNEMlNJIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZQ0KPiAgICAg
ICsvLy8gICAgY29udmVyc2lvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25l
ZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0c2Rfc2kz
MihfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml9jdnRzZDJzaSgoX192MmRmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb252ZXJ0cyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVt
ZW50IG9mIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSwg
aW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIsIGludG8gYQ0KPiAgICAgICsvLy8gICAgc2luZ2xlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSwgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDMyIGJp
dHMgb2YgYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRo
ZSB1cHBlciA5NiBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yIGFyZQ0KPiAgICAgICsvLy8gICAg
Y29waWVkIGZyb20gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q1ZUU0QyU1MgLyBDVlRTRDJTUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uIFRoZSB1cHBlciA5NiBiaXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KPiAgICAg
ICsvLy8gICAgY29waWVkIHRvIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24NCj4gICAgICArLy8vICAgIGZs
b2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAz
MiBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgZnJvbSB0
aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZA0KPiAgICAg
ICsvLy8gICAgZnJvbSB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV9jdnRzZF9zcyhfX20xMjggX19hLCBfX20xMjhkIF9fYikNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzKChfX3Y0c2YpX19h
LCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb252ZXJ0
cyBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSwgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIs
IGludG8NCj4gICAgICArLy8vICAgIGEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSwgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YNCj4gICAgICArLy8vICAgIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUg
cmVzdWx0IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2
NCBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNEIC8gQ1ZUU0kyU0QgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0
IGJpdHMgb2YgdGhpcyBwYXJhbWV0ZXIgYXJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgdG8gdGhl
IHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4g
ICAgICArLy8vICAgIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVl
IHRvIGJlIGNvbnZlcnRlZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KPiAgICAgICsv
Ly8gICAgY29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBl
ciA2NCBiaXRzIGFyZSBjb3BpZWQNCj4gICAgICArLy8vICAgIGZyb20gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dHNpMzJfc2QoX19tMTI4ZCBf
X2EsIGludCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICBfX2FbMF0gPSBfX2I7DQo+ICAgICAg
KyAgcmV0dXJuIF9fYTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnZlcnRz
IHRoZSBsb3dlciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgb2YgYQ0K
PiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0sIGluIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLCBpbnRvIGENCj4gICAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWUsIHJldHVybmVkIGluIHRoZSBsb3dlciA2NCBiaXRzIG9mDQo+ICAg
ICAgKy8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0
IGJpdHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3INCj4gICAgICArLy8vICAgIGFyZSBjb3BpZWQgZnJv
bSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTUzJTRCAv
IENWVFNTMlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KPiAgICAgICsvLy8gICAg
Y29waWVkIHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBUaGUgbG93ZXIgc2luZ2xlLXByZWNpc2lvbg0KPiAgICAgICsvLy8gICAgZmxvYXRpbmctcG9p
bnQgZWxlbWVudCBpcyB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGNv
bnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgZnJvbSB0aGUgc2Vjb25k
IHBhcmFtZXRlci4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZA0KPiAgICAgICsvLy8gICAg
ZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1f
Y3Z0c3Nfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICBf
X2FbMF0gPSBfX2JbMF07DQo+ICAgICAgKyAgcmV0dXJuIF9fYTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCBlbGVtZW50cyBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcywNCj4gICAg
ICArLy8vICAgIHJldHVybmVkIGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBpMzJdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIElmIHRoZSByZXN1
bHQgb2YgZWl0aGVyIGNvbnZlcnNpb24gaXMgaW5leGFjdCwgdGhlIHJlc3VsdCBpcyB0cnVuY2F0
ZWQNCj4gICAgICArLy8vICAgIChyb3VuZGVkIHRvd2FyZHMgemVybykgcmVnYXJkbGVzcyBvZiB0
aGUgY3VycmVudCBNWENTUiBzZXR0aW5nLiBUaGUgdXBwZXINCj4gICAgICArLy8vICAgIDY0IGJp
dHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3IgYXJlIHNldCB0byB6ZXJvLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUUEQyRFEgLyBD
VlRUUEQyRFEgPC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMzJdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCj4gICAgICArLy8vICAg
IGNvbnZlcnRlZCB2YWx1ZXMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBzZXQgdG8gemVyby4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAg
ICArX21tX2N2dHRwZF9lcGkzMihfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJl
dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEoKF9fdjJkZilfX2EpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgdGhlIGxvdy1vcmRlciBlbGVt
ZW50IG9mIGEgWzIgeCBkb3VibGVdIHZlY3RvciBpbnRvIGEgMzItYml0DQo+ICAgICAgKy8vLyAg
ICBzaWduZWQgaW50ZWdlciB2YWx1ZSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMg
aW5leGFjdC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ1ZUVFNEMlNJIC8gQ1ZUVFNEMlNJIDwvYz4NCj4gICAgICArLy8vICAgaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRz
IGFyZSB1c2VkIGluIHRoZQ0KPiAgICAgICsvLy8gICAgY29udmVyc2lvbi4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZS4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fY3Z0dHNkX3NpMzIoX19tMTI4ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAg
ICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0dHNkMnNpKChfX3YyZGYpX19hKTsNCj4gICAg
ICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZh
bHVlcywNCj4gICAgICArLy8vICAgIHJldHVybmVkIGluIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4
IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gQ1ZUUEQyUEkgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkz
Ml0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fY3Z0cGRfcGkz
MihfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfY3Z0cGQycGkoKF9fdjJkZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSBpbnRvIHR3byBzaWduZWQgMzItYml0IGludGVnZXIgdmFsdWVzLA0KPiAgICAgICsvLy8g
ICAgcmV0dXJuZWQgaW4gYSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyAgICBJZiB0aGUgcmVzdWx0IG9mIGVpdGhlciBjb252ZXJzaW9uIGlzIGlu
ZXhhY3QsIHRoZSByZXN1bHQgaXMgdHJ1bmNhdGVkDQo+ICAgICAgKy8vLyAgICAocm91bmRlZCB0
b3dhcmRzIHplcm8pIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgTVhDU1Igc2V0dGluZy4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBD
VlRUUEQyUEkgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFp
bmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fY3Z0dHBkX3BpMzIoX19tMTI4
ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X2N2dHRwZDJwaSgoX192MmRmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb252ZXJ0cyB0aGUgdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhIDY0
LWJpdCB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFsyIHggaTMyXSBpbnRvIHR3byBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcywgcmV0dXJuZWQgaW4gYQ0KPiAgICAgICsv
Ly8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZO
X0FUVFJTX01NWA0KPiAgICAgICtfbW1fY3Z0cGkzMl9wZChfX202NCBfX2EpDQo+ICAgICAgK3sN
Cj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0cGkycGQoKF9fdjJzaSlfX2EpOw0K
PiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUmV0dXJucyB0aGUgbG93LW9yZGVyIGVs
ZW1lbnQgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gYXMNCj4gICAgICArLy8v
ICAgIGEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSByZXR1
cm5lZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZSBjb3BpZWQgZnJvbSB0aGUgbG93ZXIgNjQNCj4gICAgICArLy8vICAgIGJpdHMg
b2YgXGEgX19hLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBkb3VibGUgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbV9jdnRzZF9mNjQoX19tMTI4ZCBfX2EpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gX19hWzBdOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8g
TG9hZHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gZnJv
bSBhbiBhbGlnbmVkDQo+ICAgICAgKy8vLyAgICBtZW1vcnkgbG9jYXRpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQRCAv
IE1PVkFQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2RwDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2Nh
dGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KPiAgICAgICsvLy8gICAgbG9jYXRpb24g
aGFzIHRvIGJlIDE2LWJ5dGUgYWxpZ25lZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV9sb2FkX3BkKGRvdWJsZSBjb25zdCAqX19kcCkNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiAqKF9fbTEyOGQqKV9fZHA7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBMb2FkcyBhIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgZnJvbSBhIHNw
ZWNpZmllZCBtZW1vcnkNCj4gICAgICArLy8vICAgIGxvY2F0aW9uIGFuZCBkdXBsaWNhdGVzIGl0
IHRvIGJvdGggdmVjdG9yIGVsZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCj4gICAgICAr
Ly8vICAgIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCAvIE1PVkREVVAgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19kcA0KPiAgICAgICsvLy8gICAg
QSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbG9hZGVkIGFuZA0KPiAgICAgICsvLy8gICAgZHVwbGlj
YXRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9sb2FkMV9wZChkb3VibGUgY29uc3QgKl9fZHApDQo+ICAg
ICAgK3sNCj4gICAgICArICBzdHJ1Y3QgX19tbV9sb2FkMV9wZF9zdHJ1Y3Qgew0KPiAgICAgICsg
ICAgZG91YmxlIF9fdTsNCj4gICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9f
bWF5X2FsaWFzX18pKTsNCj4gICAgICArICBkb3VibGUgX191ID0gKChzdHJ1Y3QgX19tbV9sb2Fk
MV9wZF9zdHJ1Y3QqKV9fZHApLT5fX3U7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18g
KF9fbTEyOGQpeyBfX3UsIF9fdSB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsjZGVm
aW5lICAgICAgICBfbW1fbG9hZF9wZDEoZHApICAgICAgICBfbW1fbG9hZDFfcGQoZHApDQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gTG9hZHMgdHdvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLCBpbiBy
ZXZlcnNlIG9yZGVyLCBmcm9tIGFuIGFsaWduZWQNCj4gICAgICArLy8vICAgIG1lbW9yeSBsb2Nh
dGlvbiBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQgLyBN
T1ZBUEQgPC9jPiBpbnN0cnVjdGlvbiArDQo+ICAgICAgKy8vLyBuZWVkZWQgc2h1ZmZsaW5nIGlu
c3RydWN0aW9ucy4gSW4gQVZYIG1vZGUsIHRoZSBzaHVmZmxpbmcgbWF5IGJlIGNvbWJpbmVkDQo+
ICAgICAgKy8vLyB3aXRoIHRoZSBcYyBWTU9WQVBELCByZXN1bHRpbmcgaW4gb25seSBhIFxjIFZQ
RVJNSUxQRCBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19k
cA0KPiAgICAgICsvLy8gICAgQSAxNi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhbiBhcnJheSBv
ZiBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyB0byBiZQ0KPiAgICAgICsvLy8gICAgbG9hZGVkIGlu
IHJldmVyc2Ugb3JkZXIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByZXZlcnNlZCBsb2FkZWQNCj4gICAgICArLy8v
ICAgIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX2xvYWRyX3BkKGRvdWJsZSBjb25zdCAqX19kcCkNCj4gICAg
ICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICBfX20xMjhkIF9fdG1wID0g
X21tX2xvYWRfcGQgKF9fZHApOw0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9zaHVm
cGQgKF9fdG1wLCBfX3RtcCwgX01NX1NIVUZGTEUyICgwLDEpKTsNCj4gICAgICArI2Vsc2UNCj4g
ICAgICArICBfX20xMjhkIF9fdSA9ICooX19tMTI4ZCopX19kcDsNCj4gICAgICArICByZXR1cm4g
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX3UsIChfX3YyZGYpX191LCAxLCAwKTsN
Cj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMb2FkcyBh
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBmcm9tIGFuDQo+
ICAgICAgKy8vLyAgICB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUEQgLyBNT1ZV
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19k
cA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24u
IFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCj4gICAgICArLy8vICAgIGxvY2F0aW9uIGRvZXMg
bm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9sb2FkdV9wZChkb3VibGUgY29uc3QgKl9fZHApDQo+ICAgICAgK3sNCj4gICAgICArICBz
dHJ1Y3QgX19sb2FkdV9wZCB7DQo+ICAgICAgKyAgICBfX20xMjhkIF9fdjsNCj4gICAgICArICB9
IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCj4gICAgICArICBy
ZXR1cm4gKChzdHJ1Y3QgX19sb2FkdV9wZCopX19kcCktPl9fdjsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIExvYWRzIGEgNjQtYml0IGludGVnZXIgdmFsdWUgdG8gdGhlIGxvdyBl
bGVtZW50IG9mIGEgMTI4LWJpdCBpbnRlZ2VyDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IgYW5kIGNs
ZWFycyB0aGUgdXBwZXIgZWxlbWVudC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WUSAvIE1PVlEgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIHBv
aW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVt
b3J5DQo+ICAgICAgKy8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250
YWluaW5nIHRoZSBsb2FkZWQgdmFsdWUuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9sb2FkdV9zaTY0KHZvaWQgY29uc3Qg
Kl9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX2xvYWR1X3NpNjQgew0KPiAgICAg
ICsgICAgbG9uZyBsb25nIF9fdjsNCj4gICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2Vk
X18sIF9fbWF5X2FsaWFzX18pKTsNCj4gICAgICArICBsb25nIGxvbmcgX191ID0gKChzdHJ1Y3Qg
X19sb2FkdV9zaTY0KilfX2EpLT5fX3Y7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18g
KF9fbTEyOGkpKF9fdjJkaSl7X191LCAwTH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBMb2FkcyBhIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIHRvIHRoZSBsb3cgZWxl
bWVudCBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFuZCBjbGVh
cnMgdGhlIHVwcGVyIGVsZW1lbnQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNEIC8gTU9WU0QgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19kcA0KPiAgICAgICsvLy8gICAgQSBw
b2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlLg0KPiAgICAgICsvLy8gICAgVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlv
biBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWUu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9sb2FkX3NkKGRvdWJsZSBjb25zdCAqX19kcCkNCj4gICAgICArew0KPiAgICAg
ICsgIHN0cnVjdCBfX21tX2xvYWRfc2Rfc3RydWN0IHsNCj4gICAgICArICAgIGRvdWJsZSBfX3U7
DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7
DQo+ICAgICAgKyAgZG91YmxlIF9fdSA9ICgoc3RydWN0IF9fbW1fbG9hZF9zZF9zdHJ1Y3QqKV9f
ZHApLT5fX3U7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3Us
IDAgfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIExvYWRzIGEgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZSBpbnRvIHRoZSBoaWdoLW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0DQo+ICAg
ICAgKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93LW9yZGVyIGJpdHMgYXJl
IGNvcGllZCBmcm9tIHRoZSBsb3ctb3JkZXINCj4gICAgICArLy8vICAgIGJpdHMgb2YgdGhlIGZp
cnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVk1PVkhQRCAvIE1PVkhQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNjM6MF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2RwDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0
aW9uIGNvbnRhaW5pbmcgYSBkb3VibGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdGlu
Zy1wb2ludCB2YWx1ZSB0aGF0IGlzIGxvYWRlZC4gVGhlIGxvYWRlZCB2YWx1ZSBpcyB3cml0dGVu
IHRvIGJpdHMNCj4gICAgICArLy8vICAgIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRy
ZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QgaGF2ZQ0KPiAgICAgICsvLy8gICAg
dG8gYmUgYWxpZ25lZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2xvYWRo
X3BkKF9fbTEyOGQgX19hLCBkb3VibGUgY29uc3QgKl9fZHApDQo+ICAgICAgK3sNCj4gICAgICAr
ICBzdHJ1Y3QgX19tbV9sb2FkaF9wZF9zdHJ1Y3Qgew0KPiAgICAgICsgICAgZG91YmxlIF9fdTsN
Cj4gICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsN
Cj4gICAgICArICBkb3VibGUgX191ID0gKChzdHJ1Y3QgX19tbV9sb2FkaF9wZF9zdHJ1Y3QqKV9f
ZHApLT5fX3U7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX2Fb
MF0sIF9fdSB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTG9hZHMgYSBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlIGludG8gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgMTI4LWJpdA0K
PiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGhpZ2gtb3JkZXIgYml0
cyBhcmUgY29waWVkIGZyb20gdGhlDQo+ICAgICAgKy8vLyAgICBoaWdoLW9yZGVyIGJpdHMgb2Yg
dGhlIGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQRCAvIE1PVkxQRCA8L2M+IGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTI3
OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19kcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1l
bW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGEgZG91YmxlLXByZWNpc2lvbg0KPiAgICAgICsvLy8g
ICAgZmxvYXRpbmctcG9pbnQgdmFsdWUgdGhhdCBpcyBsb2FkZWQuIFRoZSBsb2FkZWQgdmFsdWUg
aXMgd3JpdHRlbiB0byBiaXRzDQo+ICAgICAgKy8vLyAgICBbNjM6MF0gb2YgdGhlIHJlc3VsdC4g
VGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvDQo+ICAg
ICAgKy8vLyAgICBiZSBhbGlnbmVkLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fbG9hZGxfcGQoX19tMTI4ZCBfX2EsIGRvdWJsZSBjb25zdCAqX19kcCkNCj4gICAgICArew0K
PiAgICAgICsgIHN0cnVjdCBfX21tX2xvYWRsX3BkX3N0cnVjdCB7DQo+ICAgICAgKyAgICBkb3Vi
bGUgX191Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KPiAgICAgICsgIGRvdWJsZSBfX3UgPSAoKHN0cnVjdCBfX21tX2xvYWRsX3BkX3N0
cnVjdCopX19kcCktPl9fdTsNCj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4
ZCl7IF9fdSwgX19hWzFdIH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25z
dHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdp
dGgNCj4gICAgICArLy8vICAgIHVuc3BlY2lmaWVkIGNvbnRlbnQuIFRoaXMgY291bGQgYmUgdXNl
ZCBhcyBhbiBhcmd1bWVudCB0byBhbm90aGVyDQo+ICAgICAgKy8vLyAgICBpbnRyaW5zaWMgZnVu
Y3Rpb24gd2hlcmUgdGhlIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGJ1dCB0aGUgdmFsdWUgaXMgbm90
DQo+ICAgICAgKy8vLyAgICBhY3R1YWxseSB1c2VkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSB3aXRoIHVuc3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICBjb250ZW50Lg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fdW5kZWZpbmVkX3BkKHZvaWQpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9f
R05VQ19fDQo+ICAgICAgKyAgX19tMTI4ZCBfX1ggPSBfX1g7DQo+ICAgICAgKyAgcmV0dXJuIF9f
WDsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lh
MzJfdW5kZWYxMjgoKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDY0IGJpdHMgb2YgdGhlIHZlY3Rv
ciBhcmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1wcmVjaXNpb24NCj4g
ICAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUg
c2V0IHRvIHplcm8uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXHBhcmFtIF9fdw0KPiAgICAgICsvLy8gICAgQSBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQN
Cj4gICAgICArLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4gVGhlDQo+ICAgICAgKy8vLyAgICBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVl
IG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAg
c2V0IHRvIHplcm8uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXRfc2QoZG91YmxlIF9fdykNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX193LCAwIH07DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLCB3aXRoIGVhY2gNCj4gICAgICArLy8vICAgIG9m
IHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2ZWN0b3IgZWxlbWVudHMg
c2V0IHRvIHRoZQ0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIGRvdWJsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgLyBNT1ZMSFBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fdw0KPiAgICAgICsvLy8gICAgQSBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBl
YWNoIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2V0MV9wZChkb3VibGUgX193KQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3csIF9fdyB9
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSwgd2l0aCBlYWNoDQo+ICAgICAg
Ky8vLyAgICBvZiB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9y
IGVsZW1lbnRzIHNldCB0byB0aGUNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCBkb3VibGUtcHJl
Y2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIC8gTU9WTEhQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3cNCj4gICAgICAr
Ly8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgZWFjaCB2ZWN0b3INCj4gICAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldF9wZDEoZG91YmxlIF9f
dykNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW1fc2V0MV9wZChfX3cpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQ0KPiAgICAgICsvLy8gICAgaW5pdGlhbGl6ZWQg
d2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVz
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZVTlBDS0xQRCAvIFVOUENLTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fdw0KPiAgICAgICsvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIgNjQNCj4g
ICAgICArLy8vICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX3gN
Cj4gICAgICArLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0DQo+ICAgICAgKy8vLyAgICBiaXRzIG9mIHRo
ZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXRfcGQoZG91
YmxlIF9fdywgZG91YmxlIF9feCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVu
c2lvbl9fIChfX20xMjhkKXsgX194LCBfX3cgfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0sDQo+ICAgICAgKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdp
dGggdGhlIHNwZWNpZmllZCBkb3VibGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdGlu
Zy1wb2ludCB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX193DQo+ICAgICAgKy8vLyAgICBBIGRv
dWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRo
ZSBsb3dlciA2NA0KPiAgICAgICsvLy8gICAgYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9feA0KPiAgICAgICsvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIgNjQNCj4gICAgICArLy8v
ICAgIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tX3NldHJfcGQoZG91YmxlIF9fdywgZG91YmxlIF9feCkNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX193LCBfX3ggfTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0NCj4gICAgICArLy8vICAgIGluaXRpYWxpemVkIHRvIHpl
cm8uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlhPUlBTIC8gWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gd2l0aA0KPiAgICAgICsvLy8gICAgYWxsIGVsZW1lbnRzIHNl
dCB0byB6ZXJvLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fc2V0emVyb19wZCh2b2lkKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyAwLCAwIH07DQo+ICAgICAgK30NCj4g
ICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDY0IGJpdHMg
YXJlIHNldCB0byB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhl
IHVwcGVyDQo+ICAgICAgKy8vLyAgICA2NCBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQRCAvIEJMRU5EUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMg
YXJlIHdyaXR0ZW4gdG8gdGhlDQo+ICAgICAgKy8vLyAgICB1cHBlciA2NCBiaXRzIG9mIHRoZSBy
ZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIHdyaXR0ZW4gdG8g
dGhlDQo+ICAgICAgKy8vLyAgICBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IHRoZSBtb3ZlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tb3ZlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhk
IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIF9fYVswXSA9IF9fYlswXTsNCj4gICAgICArICBy
ZXR1cm4gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIHRoZSBs
b3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGENCj4g
ICAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU0QgLyBNT1ZTRCA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2RwDQo+ICAgICAgKy8v
LyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3RvcmVfc2QoZG91
YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX21t
X3N0b3JlX3NkX3N0cnVjdCB7DQo+ICAgICAgKyAgICBkb3VibGUgX191Ow0KPiAgICAgICsgIH0g
X19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KPiAgICAgICsgICgo
c3RydWN0IF9fbW1fc3RvcmVfc2Rfc3RydWN0KilfX2RwKS0+X191ID0gX19hWzBdOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTW92ZXMgcGFja2VkIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzIgeCBkb3Vi
bGVdIHRvIGEgbWVtb3J5IGxvY2F0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+Vk1PVkFQRCAvIE1PVkFQUzwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fZHANCj4gICAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhbiBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNhbiBzdG9yZSB0
d28NCj4gICAgICArLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSBwYWNrZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZQ0KPiAgICAgICsvLy8gICAgbW92
ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9zdG9yZV9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgKihfX20xMjhkKilfX2RwID0gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gTW92ZXMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gdHdpY2UgdG8NCj4gICAgICArLy8vICAgIHRoZSB1cHBlciBhbmQgbG93
ZXIgNjQgYml0cyBvZiBhIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlDQo+ICAgICAgKy8vLyAgIDxjPiBWTU9WRERV
UCArIFZNT1ZBUEQgLyBNT1ZMSFBTICsgTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fZHANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0
byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNhbiBzdG9yZSB0d28gZG91YmxlLXByZWNpc2lvbg0K
PiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0
cyBhcmUgY29waWVkIHRvIGVhY2gNCj4gICAgICArLy8vICAgIG9mIHRoZSB2YWx1ZXMgaW4gXGEg
X19kcC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX3N0b3JlMV9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIF9tbV9zdG9yZV9wZCAoX19k
cCwgX19idWlsdGluX2lhMzJfc2h1ZnBkIChfX2EsIF9fYSwgX01NX1NIVUZGTEUyICgwLDApKSk7
DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3Io
KF9fdjJkZilfX2EsIChfX3YyZGYpX19hLCAwLCAwKTsNCj4gICAgICArICBfbW1fc3RvcmVfcGQo
X19kcCwgX19hKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBNb3ZlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSB0d2ljZSB0bw0KPiAgICAgICsvLy8gICAgdGhlIHVwcGVyIGFuZCBsb3dlciA2NCBi
aXRzIG9mIGEgbWVtb3J5IGxvY2F0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUNCj4gICAgICArLy8vICAgPGM+IFZNT1ZERFVQICsgVk1P
VkFQRCAvIE1PVkxIUFMgKyBNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19kcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVt
b3J5IGxvY2F0aW9uIHRoYXQgY2FuIHN0b3JlIHR3byBkb3VibGUtcHJlY2lzaW9uDQo+ICAgICAg
Ky8vLyAgICB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGFyZSBj
b3BpZWQgdG8gZWFjaA0KPiAgICAgICsvLy8gICAgb2YgdGhlIHZhbHVlcyBpbiBcYSBfX2RwLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fc3RvcmVfcGQxKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQo+ICAgICAgK3sNCj4g
ICAgICArICBfbW1fc3RvcmUxX3BkKF9fZHAsIF9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBTdG9yZXMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byBh
biB1bmFsaWduZWQgbWVtb3J5DQo+ICAgICAgKy8vLyAgICBsb2NhdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBEIC8g
TU9WVVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fZHANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQo+ICAgICAgKy8vLyAgICBsb2NhdGlvbiBk
b2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3RvcmV1X3BkKGRvdWJsZSAqX19kcCwgX19t
MTI4ZCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBzdHJ1Y3QgX19zdG9yZXVfcGQgew0KPiAg
ICAgICsgICAgX19tMTI4ZCBfX3Y7DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tl
ZF9fLCBfX21heV9hbGlhc19fKSk7DQo+ICAgICAgKyAgKChzdHJ1Y3QgX19zdG9yZXVfcGQqKV9f
ZHApLT5fX3YgPSBfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMg
dHdvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLCBpbiByZXZlcnNlIG9yZGVyLCBmcm9tIGEgMTI4
LWJpdA0KPiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhIDE2LWJ5dGUg
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIGEgc2h1ZmZsaW5nIGluc3RydWN0aW9uIGZvbGxvd2VkIGJ5IGEN
Cj4gICAgICArLy8vIDxjPiBWTU9WQVBEIC8gTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fZHANCj4gICAgICArLy8vICAgIEEgcG9pbnRl
ciB0byBhIDE2LWJ5dGUgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCBjYW4gc3RvcmUgdHdv
DQo+ICAgICAgKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcy4NCj4gICAgICArLy8vIFxw
YXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSByZXZlcnNlZCBhbmQNCj4gICAgICArLy8vICAg
IHN0b3JlZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX3N0b3Jlcl9wZChkb3VibGUgKl9fZHAsIF9fbTEyOGQgX19hKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIF9tbV9zdG9yZV9wZCAo
X19kcCwgX19idWlsdGluX2lhMzJfc2h1ZnBkIChfX2EsIF9fYSwgX01NX1NIVUZGTEUyICgwLDEp
KSk7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0
b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19hLCAxLCAwKTsNCj4gICAgICArICAqKF9fbTEyOGQg
KilfX2RwID0gX19hOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIFN0b3JlcyB0aGUgdXBwZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSB0byBhDQo+ICAgICAgKy8vLyAgICBtZW1vcnkgbG9jYXRpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkhQ
RCAvIE1PVkhQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX2RwDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxv
Y2F0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVk
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fc3RvcmVoX3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQo+ICAgICAgK3sN
Cj4gICAgICArICBzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0IHsNCj4gICAgICArICAgIGRv
dWJsZSBfX3U7DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9h
bGlhc19fKSk7DQo+ICAgICAgKyAgKChzdHJ1Y3QgX19tbV9zdG9yZWhfcGRfc3RydWN0KilfX2Rw
KS0+X191ID0gX19hWzFdOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVz
IHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRv
IGENCj4gICAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBEIC8gTU9WTFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fZHANCj4g
ICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24uDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQuDQo+ICAgICAgK3N0
YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdG9y
ZWxfcGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHN0
cnVjdCBfX21tX3N0b3JlaF9wZF9zdHJ1Y3Qgew0KPiAgICAgICsgICAgZG91YmxlIF9fdTsNCj4g
ICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCj4g
ICAgICArICAoKHN0cnVjdCBfX21tX3N0b3JlaF9wZF9zdHJ1Y3QqKV9fZHApLT5fX3UgPSBfX2Fb
MF07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzE2IHggaThdLA0KPiAgICAg
ICsvLy8gICAgc2F2aW5nIHRoZSBsb3dlciA4IGJpdHMgb2YgZWFjaCBzdW0gaW4gdGhlIGNvcnJl
c3BvbmRpbmcgZWxlbWVudCBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHJlc3VsdCB2ZWN0
b3Igb2YgWzE2IHggaThdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBpbnRlZ2Vy
IGVsZW1lbnRzIG9mIGJvdGggcGFyYW1ldGVycyBjYW4gYmUgZWl0aGVyIHNpZ25lZCBvciB1bnNp
Z25lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUEFEREIgLyBQQUREQiA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzE2IHggaThdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCj4gICAgICAr
Ly8vICAgIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hZGRfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4
aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3YxNnF1KV9f
YSArIChfX3YxNnF1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRz
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzgg
eCBpMTZdLA0KPiAgICAgICsvLy8gICAgc2F2aW5nIHRoZSBsb3dlciAxNiBiaXRzIG9mIGVhY2gg
c3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0KPiAgICAgICsvLy8gICAgMTI4
LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRlcnMgY2FuIGJlIGVpdGhl
ciBzaWduZWQgb3IgdW5zaWduZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERXIC8gUEFERFcgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VtcyBv
ZiBib3RoDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYWRkX2VwaTE2KF9f
bTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19t
MTI4aSkoKF9fdjhodSlfX2EgKyAoX192OGh1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0
IHZlY3RvcnMgb2YgWzQgeCBpMzJdLA0KPiAgICAgICsvLy8gICAgc2F2aW5nIHRoZSBsb3dlciAz
MiBiaXRzIG9mIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0KPiAg
ICAgICsvLy8gICAgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRl
cnMgY2FuIGJlIGVpdGhlciBzaWduZWQgb3IgdW5zaWduZWQuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBREREIC8gUEFEREQgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCj4gICAgICArLy8vIFxw
YXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFp
bmluZyB0aGUgc3VtcyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXJzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fYWRkX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjRzdSlfX2EgKyAoX192NHN1KV9fYik7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRzIHR3byBzaWduZWQgb3IgdW5zaWduZWQgNjQt
Yml0IGludGVnZXIgdmFsdWVzLCByZXR1cm5pbmcgdGhlDQo+ICAgICAgKy8vLyAgICBsb3dlciA2
NCBiaXRzIG9mIHRoZSBzdW0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFERFEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUg
c3VtIG9mIGJvdGggcGFyYW1ldGVycy4NCj4gICAgICArI2lmbmRlZiBfX0dOVUNfXw0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAg
K19tbV9hZGRfc2k2NChfX202NCBfX2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHEoKF9fdjFkaSlfX2EsIChfX3YxZGkp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBB
ZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2Yg
WzIgeCBpNjRdLA0KPiAgICAgICsvLy8gICAgc2F2aW5nIHRoZSBsb3dlciA2NCBiaXRzIG9mIGVh
Y2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0KPiAgICAgICsvLy8gICAg
MTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRlcnMgY2FuIGJlIGVp
dGhlciBzaWduZWQgb3IgdW5zaWduZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERRIC8gUEFERFEgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgc3Vt
cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYWRkX2VwaTY0
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4aSkoKF9fdjJkdSlfX2EgKyAoX192MmR1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8vLyBBZGRzLCB3aXRoIHNhdHVyYXRpb24sIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnRzIG9mIHR3byAxMjgtYml0DQo+ICAgICAgKy8vLyAgICBzaWduZWQgWzE2IHggaThdIHZl
Y3RvcnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mDQo+
ICAgICAgKy8vLyAgICBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0uIFBvc2l0
aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlDQo+ICAgICAgKy8vLyAgICBzYXR1cmF0ZWQg
dG8gMHg3Ri4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4
ODAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBBRERTQiAvIFBBRERTQiA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzE2
IHggaThdIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBzaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQg
c3VtcyBvZg0KPiAgICAgICsvLy8gICAgYm90aCBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYWRkc19l
cGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkc2IxMjgoKF9fdjE2cWkpX19hLCAoX192MTZx
aSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQWRkcywgd2l0aCBzYXR1
cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KPiAgICAg
ICsvLy8gICAgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZg0KPiAgICAgICsvLy8gICAgYSAxMjgtYml0IHJlc3Vs
dCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweDdGRkYN
Cj4gICAgICArLy8vICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBzdW1zIGxl
c3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0bw0KPiAgICAgICsvLy8gICAgMHg4MDAwLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQQUREU1cgLyBQQUREU1cgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2
XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1bXMg
b2YNCj4gICAgICArLy8vICAgIGJvdGggcGFyYW1ldGVycy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2FkZHNfZXBpMTYo
X19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGRzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2Ip
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQWRkcywgd2l0aCBzYXR1cmF0aW9u
LCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KPiAgICAgICsvLy8g
ICAgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50DQo+ICAgICAgKy8vLyAgICBvZiBhIDEyOC1iaXQgcmVzdWx0IHZl
Y3RvciBvZiBbMTYgeCBpOF0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4RkYNCj4gICAg
ICArLy8vICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gTmVnYXRpdmUgc3VtcyBhcmUgc2F0dXJh
dGVkIHRvIDB4MDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBBRERVU0IgLyBQQUREVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIHNhdHVyYXRlZCBzdW1zDQo+ICAgICAgKy8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9hZGRzX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGR1c2IxMjgoKF9f
djE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gQWRkcywgd2l0aCBzYXR1cmF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0
d28gMTI4LWJpdA0KPiAgICAgICsvLy8gICAgdW5zaWduZWQgWzggeCBpMTZdIHZlY3RvcnMsIHNh
dmluZyBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50DQo+ICAgICAgKy8vLyAg
ICBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMg
Z3JlYXRlciB0aGFuDQo+ICAgICAgKy8vLyAgICAweEZGRkYgYXJlIHNhdHVyYXRlZCB0byAweEZG
RkYuIE5lZ2F0aXZlIHN1bXMgYXJlIHNhdHVyYXRlZCB0byAweDAwMDAuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERVU0IgLyBQ
QUREVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3Iu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWdu
ZWQgWzggeCBpMTZdIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNp
Z25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQo+ICAg
ICAgKy8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hZGRzX2VwdTE2KF9fbTEy
OGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5faWEzMl9wYWRkdXN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wdXRlcyB0aGUgcm91bmRlZCBhdmFy
YWdlcyBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3bw0KPiAgICAgICsvLy8gICAgMTI4
LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9ycywgc2F2aW5nIGVhY2ggcmVzdWx0IGluIHRo
ZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCByZXN1
bHQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFWR0IgLyBQQVZHQiA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB1bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
Yg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBj
b250YWluaW5nIHRoZSByb3VuZGVkDQo+ICAgICAgKy8vLyAgICBhdmVyYWdlcyBvZiBib3RoIHBh
cmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbV9hdmdfZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdjE2aHUgX19hdHRy
aWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KPiAgICAgICsgICAgICAgICAgICAgICAoKF9f
YnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YxNnF1KV9fYSwgX192MTZodSkgKw0KPiAgICAgICsg
ICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3YxNnF1KV9fYiwgX192
MTZodSkpICsgMSkNCj4gICAgICArICAgICAgICAgICAgICAgICA+PiAxLCBfX3YxNnF1KTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2YXJh
Z2VzIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvDQo+ICAgICAgKy8vLyAgICAxMjgt
Yml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCByZXN1bHQgaW4gdGhl
DQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3Vs
dCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQVZHVyAvIFBBVkdXIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHJvdW5kZWQNCj4gICAgICArLy8vICAgIGF2ZXJhZ2VzIG9mIGJvdGggcGFy
YW1ldGVycy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tX2F2Z19lcHUxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArICB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Y4c3UgX19hdHRyaWJ1
dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KPiAgICAgICsgICAgICAgICAgICAgICAoKF9fYnVp
bHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aHUpX19hLCBfX3Y4c3UpICsNCj4gICAgICArICAgICAg
ICAgICAgICAgICBfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192OGh1KV9fYiwgX192OHN1KSkg
KyAxKQ0KPiAgICAgICsgICAgICAgICAgICAgICAgID4+IDEsIF9fdjhodSk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBNdWx0aXBsaWVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1l
bnRzIG9mIHR3byAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0NCj4gICAgICArLy8vICAgIHZlY3Rv
cnMsIHByb2R1Y2luZyBlaWdodCBpbnRlcm1lZGlhdGUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHBy
b2R1Y3RzLCBhbmQNCj4gICAgICArLy8vICAgIGFkZHMgdGhlIGNvbnNlY3V0aXZlIHBhaXJzIG9m
IDMyLWJpdCBwcm9kdWN0cyB0byBmb3JtIGEgMTI4LWJpdCBzaWduZWQNCj4gICAgICArLy8vICAg
IFs0IHggaTMyXSB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgRm9yIGV4YW1w
bGUsIGJpdHMgWzE1OjBdIG9mIGJvdGggcGFyYW1ldGVycyBhcmUgbXVsdGlwbGllZCBwcm9kdWNp
bmcgYQ0KPiAgICAgICsvLy8gICAgMzItYml0IHByb2R1Y3QsIGJpdHMgWzMxOjE2XSBvZiBib3Ro
IHBhcmFtZXRlcnMgYXJlIG11bHRpcGxpZWQgcHJvZHVjaW5nDQo+ICAgICAgKy8vLyAgICBhIDMy
LWJpdCBwcm9kdWN0LCBhbmQgdGhlIHN1bSBvZiB0aG9zZSB0d28gcHJvZHVjdHMgYmVjb21lcyBi
aXRzIFszMTowXQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BRERXRCAvIFBN
QUREV0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4
IHggaTE2XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVkIFs0
IHggaTMyXSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiBwcm9kdWN0cw0KPiAgICAgICsv
Ly8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWFkZF9lcGkxNihfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19i
dWlsdGluX2lhMzJfcG1hZGR3ZDEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgY29ycmVzcG9uZGluZyBlbGVtZW50
cyBvZiB0d28gMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdDQo+ICAgICAgKy8vLyAgICB2ZWN0b3Jz
LCBzYXZpbmcgdGhlIGdyZWF0ZXIgdmFsdWUgZnJvbSBlYWNoIGNvbXBhcmlzb24gaW4gdGhlDQo+
ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2
ZWN0b3Igb2YgWzggeCBpMTZdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFYU1cgLyBQTUFYU1cgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgZ3JlYXRlciB2YWx1ZSBvZg0KPiAgICAgICsvLy8gICAgZWFjaCBjb21wYXJpc29uLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fbWF4X2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWF4c3cxMjgoKF9fdjho
aSlfX2EsIChfX3Y4aGkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENv
bXBhcmVzIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdW5zaWduZWQgWzE2
IHggaThdDQo+ICAgICAgKy8vLyAgICB2ZWN0b3JzLCBzYXZpbmcgdGhlIGdyZWF0ZXIgdmFsdWUg
ZnJvbSBlYWNoIGNvbXBhcmlzb24gaW4gdGhlDQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5n
IGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFY
VUIgLyBQTUFYVUIgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZl
Y3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB1
bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZSBv
Zg0KPiAgICAgICsvLy8gICAgZWFjaCBjb21wYXJpc29uLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWF4X2VwdTgoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3BtYXh1YjEyOCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBjb3JyZXNwb25kaW5n
IGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0NCj4gICAgICArLy8vICAg
IHZlY3RvcnMsIHNhdmluZyB0aGUgc21hbGxlciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBp
biB0aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQg
cmVzdWx0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5TVyAvIFBNSU5TVyA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBj
b250YWluaW5nIHRoZSBzbWFsbGVyIHZhbHVlIG9mDQo+ICAgICAgKy8vLyAgICBlYWNoIGNvbXBh
cmlzb24uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV9taW5fZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtaW5zdzEy
OCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gQ29tcGFyZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB1bnNp
Z25lZCBbMTYgeCBpOF0NCj4gICAgICArLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgc21hbGxl
ciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBpbiB0aGUNCj4gICAgICArLy8vICAgIGNvcnJl
c3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBpOF0u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBNSU5VQiAvIFBNSU5VQiA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBbMTYg
eCBpOF0gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvciBjb250YWluaW5nIHRoZSBzbWFsbGVy
IHZhbHVlIG9mDQo+ICAgICAgKy8vLyAgICBlYWNoIGNvbXBhcmlzb24uDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9taW5f
ZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1pbnViMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2
cWkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE11bHRpcGxpZXMgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIHNpZ25lZCBbOCB4IGkxNl0NCj4gICAgICAr
Ly8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgdXBwZXIgMTYgYml0cyBvZiBlYWNoIDMyLWJpdCBw
cm9kdWN0IGluIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEg
MTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHJlc3VsdCB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxIVyAvIFBNVUxI
VyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBp
MTZdIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBp
MTZdIHZlY3RvciBjb250YWluaW5nIHRoZSB1cHBlciAxNiBiaXRzIG9mDQo+ICAgICAgKy8vLyAg
ICBlYWNoIG9mIHRoZSBlaWdodCAzMi1iaXQgcHJvZHVjdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tdWxoaV9lcGkx
NihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4g
KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGh3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBNdWx0aXBsaWVzIHRoZSBjb3Jy
ZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byB1bnNpZ25lZCBbOCB4IGkxNl0NCj4gICAgICArLy8v
ICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgdXBwZXIgMTYgYml0cyBvZiBlYWNoIDMyLWJpdCBwcm9k
dWN0IGluIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4
LWJpdCB1bnNpZ25lZCBbOCB4IGkxNl0gcmVzdWx0IHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTEhVVyAvIFBNVUxI
VVcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB1bnNpZ25lZCBb
OCB4IGkxNl0gdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHVuc2lnbmVk
IFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgdXBwZXIgMTYgYml0cw0KPiAgICAgICsv
Ly8gICAgb2YgZWFjaCBvZiB0aGUgZWlnaHQgMzItYml0IHByb2R1Y3RzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbXVs
aGlfZXB1MTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BtdWxodXcxMjgoKF9fdjhoaSlfX2EsIChf
X3Y4aGkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE11bHRpcGxpZXMg
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIHNpZ25lZCBbOCB4IGkxNl0NCj4gICAg
ICArLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgbG93ZXIgMTYgYml0cyBvZiBlYWNoIDMyLWJp
dCBwcm9kdWN0IGluIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9m
IGEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHJlc3VsdCB2ZWN0b3IuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxMVyAvIFBN
VUxMVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzgg
eCBpMTZdIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzgg
eCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSBsb3dlciAxNiBiaXRzIG9mDQo+ICAgICAgKy8v
LyAgICBlYWNoIG9mIHRoZSBlaWdodCAzMi1iaXQgcHJvZHVjdHMuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tdWxsb19l
cGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gKF9fbTEyOGkpKChfX3Y4aHUpX19hICogKF9fdjhodSlfX2IpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gTXVsdGlwbGllcyAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1
ZXMgY29udGFpbmVkIGluIHRoZSBsb3dlciBiaXRzDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgdHdv
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgYW5kIHJldHVybnMgdGhlIDY0LWJpdCB1bnNpZ25lZA0K
PiAgICAgICsvLy8gICAgcHJvZHVjdC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTVVMVURRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQg
aW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcHJvZHVjdCBvZiBib3RoIG9wZXJhbmRz
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1Y
DQo+ICAgICAgK19tbV9tdWxfc3UzMihfX202NCBfX2EsIF9fbTY0IF9fYikNCj4gICAgICArew0K
PiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTY0KV9fYnVpbHRp
bl9pYTMyX3BtdWx1ZHEgKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQo+ICAgICAgKyNlbHNl
DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BtdWx1ZHEoKF9fdjJzaSlfX2EsIChf
X3Yyc2kpX19iKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBNdWx0aXBsaWVzIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBjb250YWluZWQg
aW4gdGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICBiaXRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnRzIG9mIHR3byBbMiB4IGk2NF0gdmVjdG9ycywgYW5kIHJldHVybnMNCj4gICAgICArLy8v
ICAgIHRoZSA2NC1iaXQgcHJvZHVjdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2Yg
YSBbMiB4IGk2NF0gdmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMVURRIC8gUE1VTFVEUSA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
WzIgeCBpNjRdIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSBbMiB4IGk2NF0gdmVjdG9y
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcHJvZHVjdCBvZiBib3RoIG9w
ZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fbXVsX2VwdTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wbXVsdWRxMTI4KChfX3Y0
c2kpX19hLCAoX192NHNpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b21wdXRlcyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2YgY29ycmVzcG9uZGluZyA4LWJpdCBp
bnRlZ2VyDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgaW4gdHdvIDEyOC1iaXQgdmVjdG9ycy4gU3Vt
cyB0aGUgZmlyc3QgOCBhYnNvbHV0ZSBkaWZmZXJlbmNlcywgYW5kDQo+ICAgICAgKy8vLyAgICBz
ZXBhcmF0ZWx5IHN1bXMgdGhlIHNlY29uZCA4IGFic29sdXRlIGRpZmZlcmVuY2VzLiBQYWNrcyB0
aGVzZSB0d28NCj4gICAgICArLy8vICAgIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHN1bXMgaW50
byB0aGUgdXBwZXIgYW5kIGxvd2VyIGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8vICAgIFsyIHgg
aTY0XSB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBTQURCVyAvIFBTQURCVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiB0aGUgc2V0
cyBvZiBhYnNvbHV0ZQ0KPiAgICAgICsvLy8gICAgZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9w
ZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fc2FkX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzYWRidzEyOCgoX192MTZx
aSlfX2EsIChfX3YxNnFpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBT
dWJ0cmFjdHMgdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIG9w
ZXJhbmRzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQU1VCQiAvIFBTVUJCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1
YnRyYWhlbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCj4gICAgICArLy8vICAg
IGluIHRoZSBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N1Yl9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhp
IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjE2cXUpX19h
IC0gKF9fdjE2cXUpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN1YnRy
YWN0cyB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIG9wZXJh
bmRzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQU1VCVyAvIFBTVUJXIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRy
YWhlbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGlu
IHRoZSBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N1Yl9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBf
X2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aHUpX19hIC0g
KF9fdjhodSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3VidHJhY3Rz
IHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBTVUJEIC8gUFNVQkQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbWludWVuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVu
ZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0KPiAgICAgICsvLy8gICAgaW4gdGhl
IG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fc3ViX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjRzdSlfX2EgLSAoX192
NHN1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdWJ0cmFjdHMgc2ln
bmVkIG9yIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcyBhbmQgd3JpdGVzIHRoZQ0KPiAg
ICAgICsvLy8gICAgZGlmZmVyZW5jZSB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBk
ZXN0aW5hdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBQU1VCUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5k
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgdmFsdWVzIGluDQo+ICAgICAgKy8vLyAgICB0aGUgb3Bl
cmFuZHMuDQo+ICAgICAgKw0KPiAgICAgICsjaWZuZGVmIF9fR05VQ19fDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX3N1
Yl9zaTY0KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IChfX202NClfX2J1aWx0aW5faWEzMl9wc3VicSgoX192MWRpKV9fYSwgKF9fdjFkaSlfX2IpOw0K
PiAgICAgICt9DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArLy8vIFN1YnRyYWN0
cyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gWzIgeCBpNjRdIHZlY3RvcnMuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBTVUJRIC8gUFNVQlEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgbWludWVuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0KPiAgICAgICsvLy8gICAgaW4gdGhlIG9w
ZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fc3ViX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjJkdSlfX2EgLSAoX192MmR1
KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdWJ0cmFjdHMgY29ycmVz
cG9uZGluZyA4LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIGlucHV0IGFuZA0KPiAg
ICAgICsvLy8gICAgcmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcg
Ynl0ZXMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gICAgRGlmZmVyZW5jZXMgZ3Jl
YXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLCBhbmQgZGlmZmVyZW5jZXMgbGVz
cw0KPiAgICAgICsvLy8gICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNV
QlNCIC8gUFNVQlNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGluIHRoZSBvcGVy
YW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX3N1YnNfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnNiMTI4
KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIFN1YnRyYWN0cyBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1
ZXMgaW4gdGhlIGlucHV0IGFuZA0KPiAgICAgICsvLy8gICAgcmV0dXJucyB0aGUgZGlmZmVyZW5j
ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAg
ICsvLy8gICAgRGlmZmVyZW5jZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRv
IDB4N0ZGRiwgYW5kIHZhbHVlcyBsZXNzDQo+ICAgICAgKy8vLyAgICB0aGFuIDB4ODAwMCBhcmUg
c2F0dXJhdGVkIHRvIDB4ODAwMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQlNXIC8gUFNVQlNXIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMN
Cj4gICAgICArLy8vICAgIGluIHRoZSBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N1YnNfZXBpMTYoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJzdzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0K
PiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3VidHJhY3RzIGNvcnJlc3BvbmRpbmcg
OC1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgaW4gdGhlIGlucHV0DQo+ICAgICAgKy8vLyAg
ICBhbmQgcmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMg
aW4gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gRGlmZmVyZW5jZXMgbGVzcyB0aGFu
IDB4MDAgYXJlIHNhdHVyYXRlZCB0byAweDAwLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCVVNCIC8gUFNVQlVTQiA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB1bnNpZ25lZCBpbnRlZ2Vy
DQo+ICAgICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVzIGluIHRoZSBvcGVyYW5k
cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX3N1YnNfZXB1OChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnVzYjEyOCgo
X192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBTdWJ0cmFjdHMgY29ycmVzcG9uZGluZyAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1
ZXMgaW4gdGhlIGlucHV0DQo+ICAgICAgKy8vLyAgICBhbmQgcmV0dXJucyB0aGUgZGlmZmVyZW5j
ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMgaW4gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0
aW5hdGlvbi4gRGlmZmVyZW5jZXMgbGVzcyB0aGFuIDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4
MDAwMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUFNVQlVTVyAvIFBTVUJVU1cgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
c3VidHJhaGVuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgdW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgZGlmZmVy
ZW5jZXMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdWJzX2VwdTE2
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3VidXN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2Ug
QU5EIG9mIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9ycy4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFORCAvIFBBTkQgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGluIGJv
dGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hbmRfc2kxMjgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19i
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKSgoX192MmR1KV9fYSAmIChf
X3YyZHUpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFBlcmZvcm1zIGEg
Yml0d2lzZSBBTkQgb2YgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzLCB1c2luZyB0aGUNCj4g
ICAgICArLy8vICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4g
dGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQU5ETiAvIFBBTkROIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVyYW5kLiBUaGUg
b25lJ3MgY29tcGxlbWVudA0KPiAgICAgICsvLy8gICAgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGlu
IHRoZSBiaXR3aXNlIEFORC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9wZXJhbmQuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgYml0d2lzZSBBTkQgb2YgdGhlIG9uZSdzDQo+ICAgICAgKy8vLyAgICBjb21wbGVtZW50IG9m
IHRoZSBmaXJzdCBvcGVyYW5kIGFuZCB0aGUgdmFsdWVzIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX2FuZG5vdF9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpKH4oX192MmR1KV9fYSAmIChfX3YyZHUpX19i
KTsNCj4gICAgICArfQ0KPiAgICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAx
MjgtYml0IGludGVnZXIgdmVjdG9ycy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE9SIC8gUE9SIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3
aXNlIE9SIG9mIHRoZSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGluIGJvdGggb3BlcmFuZHMuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV9vcl9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3YyZHUpX19hIHwgKF9fdjJkdSlfX2IpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIGV4Y2x1c2l2
ZSBPUiBvZiB0d28gMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBYT1IgLyBQWE9SIDwvYz4g
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvZiB0aGUNCj4gICAgICArLy8vICAgIHZh
bHVlcyBpbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1feG9yX3NpMTI4KF9fbTEyOGkgX19hLCBf
X20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjJk
dSlfX2EgXiAoX192MmR1KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBM
ZWZ0LXNoaWZ0cyB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIGJ5IHRoZSBzcGVj
aWZpZWQNCj4gICAgICArLy8vICAgIG51bWJlciBvZiBieXRlcy4gTG93LW9yZGVyIGJpdHMgYXJl
IGNsZWFyZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhp
IF9tbV9zbGxpX3NpMTI4KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQo+ICAgICAgKy8vLyBc
ZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBTTExEUSAvIFBTTExEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBhDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gaW1tDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWluZyB0
aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxlZnQtc2hpZnQgb3BlcmFuZA0KPiAgICAgICsvLy8gICAg
XGEgYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWUuDQo+ICAgICAgKyNkZWZpbmUgX21tX3NsbGlf
c2kxMjgoYSwgaW1tKSBcDQo+ICAgICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGRx
aTEyOF9ieXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQo+ICAgICAg
Kw0KPiAgICAgICsjZGVmaW5lIF9tbV9ic2xsaV9zaTEyOChhLCBpbW0pIFwNCj4gICAgICArICAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsZHFpMTI4X2J5dGVzaGlmdCgoX192MmRpKShfX20x
MjhpKShhKSwgKGludCkoaW1tKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBl
YWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQo+
ICAgICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIg
Yml0cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTFcgLyBQU0xMVyA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNp
ZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KPiAgICAg
ICsvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAg
ICArX21tX3NsbGlfZXBpMTYoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KPiAgICAgICt7DQo+
ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGx3aTEyOCgoX192OGhp
KV9fYSwgX19jb3VudCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNo
aWZ0cyBlYWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVy
YW5kDQo+ICAgICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ct
b3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTFcgLyBQU0xMVyA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMN
Cj4gICAgICArLy8vICAgIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9f
YS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2xsX2VwaTE2KF9fbTEyOGkg
X19hLCBfX20xMjhpIF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfcHNsbHcxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19jb3VudCk7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJp
dCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQo+ICAgICAgKy8v
LyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUg
Y2xlYXJlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFNMTEQgLyBQU0xMRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhl
IG51bWJlciBvZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KPiAgICAgICsvLy8gICAg
aW4gb3BlcmFuZCBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3Ns
bGlfZXBpMzIoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGxkaTEyOCgoX192NHNpKV9fYSwgX19j
b3VudCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNo
IDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQo+ICAg
ICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0
cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUFNMTEQgLyBQU0xMRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8v
IFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCj4gICAgICAr
Ly8vICAgIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBs
ZWZ0LXNoaWZ0ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2xsX2VwaTMyKF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWls
dGluX2lhMzJfcHNsbGQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19jb3VudCk7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDY0LWJpdCB2YWx1ZSBp
biB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQo+ICAgICAgKy8vLyAgICBieSB0
aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUFNMTFEgLyBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2NvdW50
DQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBv
ZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1ZQ0KPiAgICAgICsvLy8gICAgaW4gb3BlcmFu
ZCBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NsbGlfZXBpNjQo
X19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX3BzbGxxaTEyOCgoX192MmRpKV9fYSwgX19jb3VudCk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDY0LWJpdCB2YWx1ZSBpbiB0
aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kDQo+ICAgICAgKy8vLyAgICBieSB0aGUg
c3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UFNMTFEgLyBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2NvdW50DQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6
MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCj4gICAgICArLy8vICAgIHRvIGxlZnQtc2hp
ZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVz
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW1fc2xsX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNsbHExMjgoKF9fdjJkaSlf
X2EsIChfX3YyZGkpX19jb3VudCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBS
aWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3Igb3BlcmFuZA0KPiAgICAgICsvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0
cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbg0KPiAgICAgICsvLy8g
ICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBVyAvIFBTUkFXIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5k
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEFuIGludGVnZXIg
dmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmlnaHQtc2hpZnQgZWFjaCB2
YWx1ZQ0KPiAgICAgICsvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRl
ZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbV9zcmFpX2VwaTE2KF9fbTEyOGkgX19hLCBpbnQgX19jb3VudCkN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Jh
d2kxMjgoKF9fdjhoaSlfX2EsIF9fY291bnQpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gUmlnaHQtc2hpZnRzIGVhY2ggMTYtYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIG9wZXJhbmQNCj4gICAgICArLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVy
IG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24NCj4gICAg
ICArLy8vICAgIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZS4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSQVcgLyBQU1JBVyA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ug
b3BlcmFuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVt
YmVyIG9mIGJpdHMNCj4gICAgICArLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUgaW4g
b3BlcmFuZCBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zcmFf
ZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JhdzEyOCgoX192OGhpKV9fYSwgKF9f
djhoaSlfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFJpZ2h0LXNo
aWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVy
YW5kDQo+ICAgICAgKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdo
LW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduDQo+ICAgICAgKy8vLyAgICBiaXQg
b2YgdGhlIGluaXRpYWwgdmFsdWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkFEIC8gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8gICAgQW4gaW50ZWdlciB2YWx1ZSBz
cGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlDQo+
ICAgICAgKy8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVl
cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX3NyYWlfZXBpMzIoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmFkaTEyOCgo
X192NHNpKV9fYSwgX19jb3VudCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBS
aWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3Igb3BlcmFuZA0KPiAgICAgICsvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0
cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbg0KPiAgICAgICsvLy8g
ICAgYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBRCAvIFBTUkFEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5k
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2Yg
Yml0cw0KPiAgICAgICsvLy8gICAgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5k
IFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NyYV9lcGkzMihf
X20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmFkMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9f
Y291bnQpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUmlnaHQtc2hpZnRzIHRo
ZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZA0KPiAgICAg
ICsvLy8gICAgbnVtYmVyIG9mIGJ5dGVzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhpIF9tbV9zcmxpX3Np
MTI4KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBTUkxEUSAvIFBTUkxEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBhDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccGFyYW0gaW1tDQo+
ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHRvIHJpZ2h0LXNoaWZ0IG9wZXJhbmQNCj4gICAgICArLy8vICAgIFxhIGEuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
cmlnaHQtc2hpZnRlZCB2YWx1ZS4NCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyNk
ZWZpbmUgX21tX2JzcmxpX3NpMTI4KGEsIG4pIFwNCj4gICAgICArICAgICgoX19tMTI4aSlfX2J1
aWx0aW5faWEzMl9wc3JsZHFpMTI4ICgoX19tMTI4aSkoYSksIChpbnQpKG4pICogOCkpDQo+ICAg
ICAgKyNkZWZpbmUgX21tX3NybGlfc2kxMjgoYSwgbikgXA0KPiAgICAgICsgICAgKChfX20xMjhp
KV9fYnVpbHRpbl9pYTMyX3BzcmxkcWkxMjggKChfX20xMjhpKShhKSwgKGludCkobikgKiA4KSkN
Cj4gICAgICArI2Vsc2UNCj4gICAgICArI2RlZmluZSBfbW1fc3JsaV9zaTEyOChhLCBpbW0pIFwN
Cj4gICAgICArICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZHFpMTI4X2J5dGVzaGlmdCgo
X192MmRpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkNCj4gICAgICArI2RlZmluZSBfbW1fYnNy
bGlfc2kxMjgoYSwgaW1tKSBcDQo+ICAgICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNy
bGRxaTEyOF9ieXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQo+ICAg
ICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArDQo+ICAgICAgKy8vLyBSaWdodC1zaGlmdHMg
ZWFjaCBvZiAxNi1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yDQo+ICAg
ICAgKy8vLyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gt
b3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTFcgLyBQU1JMVyA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVl
IHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUN
Cj4gICAgICArLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFs
dWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fc3JsaV9lcGkxNihfX20xMjhpIF9fYSwgaW50IF9fY291bnQpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHdpMTI4
KChfX3Y4aGkpX19hLCBfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDE2LWJpdCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIg
b2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMVyAvIFBTUkxXIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJj
ZSBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBu
dW1iZXIgb2YgYml0cw0KPiAgICAgICsvLy8gICAgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBp
biBvcGVyYW5kIFxhIF9fYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3Ny
bF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bzcmx3MTI4KChfX3Y4aGkpX19hLCAo
X192OGhpKV9fY291bnQpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUmlnaHQt
c2hpZnRzIGVhY2ggb2YgMzItYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
cg0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRz
LiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxEIC8gUFNSTEQgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJh
bmQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8gICAgQW4gaW50ZWdl
ciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlmdCBlYWNo
IHZhbHVlDQo+ICAgICAgKy8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlm
dGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX3NybGlfZXBpMzIoX19tMTI4aSBfX2EsIGludCBfX2NvdW50
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bz
cmxkaTEyOCgoX192NHNpKV9fYSwgX19jb3VudCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCBvZiAzMi1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0
IGludGVnZXIgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQg
bnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTEQgLyBQ
U1JMRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lm
eSB0aGUgbnVtYmVyIG9mIGJpdHMNCj4gICAgICArLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVhY2gg
dmFsdWUgaW4gb3BlcmFuZCBcYSBfX2EuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9zcmxfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZDEyOCgoX192NHNp
KV9fYSwgKF9fdjRzaSlfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDY0LWJpdCB2YWx1ZXMgaW4gdGhlIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIg
b2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMUSAvIFBTUkxRIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJj
ZSBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEFu
IGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmlnaHQtc2hp
ZnQgZWFjaCB2YWx1ZQ0KPiAgICAgICsvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmln
aHQtc2hpZnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zcmxpX2VwaTY0KF9fbTEyOGkgX19hLCBpbnQg
X19jb3VudCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wc3Js
cWkxMjgoKF9fdjJkaSlfX2EsIF9fY291bnQpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gUmlnaHQtc2hpZnRzIGVhY2ggb2YgNjQtYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBp
bnRlZ2VyIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBieSB0aGUgc3BlY2lmaWVkIG51
bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkxRIC8gUFNS
TFEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
c291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNwZWNpZnkg
dGhlIG51bWJlciBvZiBiaXRzDQo+ICAgICAgKy8vLyAgICB0byByaWdodC1zaGlmdCBlYWNoIHZh
bHVlIGluIG9wZXJhbmQgXGEgX19hLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fc3JsX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNybHExMjgoKF9fdjJkaSlfX2EsIChfX3Yy
ZGkpX19jb3VudCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBl
YWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJpdA0KPiAg
ICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3JzIGZvciBlcXVhbGl0eS4gRWFjaCBjb21wYXJpc29u
IHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGDQo+ICAgICAgKy8vLyAgICBmb3IgdHJ1ZS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UENNUEVRQiAvIFBDTVBFUUIgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21wZXFfZXBpOChf
X20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9f
bTEyOGkpKChfX3YxNnFpKV9fYSA9PSAoX192MTZxaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQg
dmFsdWVzIG9mIHRoZSAxMjgtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9y
IGVxdWFsaXR5LiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsDQo+ICAgICAg
Ky8vLyAgICAweEZGRkYgZm9yIHRydWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFUVcgLyBQQ01QRVFXIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX2NtcGVxX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkoKF9fdjhoaSlfX2EgPT0gKF9fdjho
aSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0DQo+ICAgICAg
Ky8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5LiBFYWNoIGNvbXBhcmlzb24geWll
bGRzIDB4MCBmb3IgZmFsc2UsDQo+ICAgICAgKy8vLyAgICAweEZGRkZGRkZGIGZvciB0cnVlLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQQ01QRVFEIC8gUENNUEVRRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBlcV9lcGkz
MihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4g
KF9fbTEyOGkpKChfX3Y0c2kpX19hID09IChfX3Y0c2kpX19iKTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVk
IDgtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2ZWN0
b3JzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kIGFyZQ0K
PiAgICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4g
RWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yDQo+ICAgICAgKy8vLyAgICBmYWxzZSwgMHhG
RiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUENNUEdUQiAvIFBDTVBHVEIgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fY21wZ3RfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBjb21wYXJpc29u
LCBidXQgX192MTZxaSBpcyBhIGNoYXINCj4gICAgICArICAgICB3aGljaCBtYXkgYmUgc2lnbmVk
IG9yIHVuc2lnbmVkLCBzbyB1c2UgX192MTZxcy4gKi8NCj4gICAgICArICByZXR1cm4gKF9fbTEy
OGkpKChfX3YxNnFzKV9fYSA+IChfX3YxNnFzKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25lZCAxNi1i
aXQgdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMg
dG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQNCj4gICAgICAr
Ly8vICAgIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBm
YWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RXIC8gUENNUEdUVyA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbV9jbXBndF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAg
ICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aGkpX19hID4gKF9fdjhoaSlf
X2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0
aGUgY29ycmVzcG9uZGluZyBzaWduZWQgMzItYml0IHZhbHVlcyBvZiB0aGUNCj4gICAgICArLy8v
ICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGlu
IHRoZSBmaXJzdCBvcGVyYW5kDQo+ICAgICAgKy8vLyAgICBhcmUgZ3JlYXRlciB0aGFuIHRob3Nl
IGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBFYWNo
IGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9yIHRydWUuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBDTVBHVEQgLyBQQ01QR1REIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcGd0X2VwaTMy
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4aSkoKF9fdjRzaSlfX2EgPiAoX192NHNpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25lZCA4
LWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQNCj4gICAgICArLy8vICAgIGludGVnZXIgdmVjdG9y
cyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgbGVz
cw0KPiAgICAgICsvLy8gICAgdGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZh
bHNlLCAweEZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RCIC8gUENNUEdUQiA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9jbXBsdF9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICAr
ew0KPiAgICAgICsgIHJldHVybiBfbW1fY21wZ3RfZXBpOChfX2IsIF9fYSk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5n
IHNpZ25lZCAxNi1iaXQgdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJh
bmQNCj4gICAgICArLy8vICAgIGFyZSBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVy
YW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMg
MHgwIGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RXIC8gUENNUEdUVyA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBsdF9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBf
X2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tX2NtcGd0X2VwaTE2KF9fYiwgX19h
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhl
IGNvcnJlc3BvbmRpbmcgc2lnbmVkIDMyLWJpdCB2YWx1ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAg
ICAxMjgtYml0IGludGVnZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0
aGUgZmlyc3Qgb3BlcmFuZA0KPiAgICAgICsvLy8gICAgYXJlIGxlc3MgdGhhbiB0aG9zZSBpbiB0
aGUgc2Vjb25kIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgRWFjaCBjb21w
YXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01Q
R1REIC8gUENNUEdURCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBsdF9lcGkzMihfX20x
MjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tX2Nt
cGd0X2VwaTMyKF9fYiwgX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArI2lmZGVm
IF9feDg2XzY0X18NCj4gICAgICArLy8vIENvbnZlcnRzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2Vy
IHZhbHVlIGZyb20gdGhlIHNlY29uZCBvcGVyYW5kIGludG8gYQ0KPiAgICAgICsvLy8gICAgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBhbmQgcmV0dXJucyBpdCBpbiB0aGUgbG93ZXIgZWxlbWVudCBv
ZiBhIFsyIHgNCj4gICAgICArLy8vICAgIGRvdWJsZV0gdmVjdG9yOyB0aGUgdXBwZXIgZWxlbWVu
dCBvZiB0aGUgcmV0dXJuZWQgdmVjdG9yIGlzIGNvcGllZCBmcm9tDQo+ICAgICAgKy8vLyAgICB0
aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0kyU0QgLyBDVlRT
STJTRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUg
dXBwZXIgNjQgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQg
dG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBj
b250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNv
bnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgb2YgdGhlIHNlY29uZCBv
cGVyYW5kLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20NCj4gICAgICArLy8vICAg
IHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0c2k2
NF9zZChfX20xMjhkIF9fYSwgbG9uZyBsb25nIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIF9f
YVswXSA9IF9fYjsNCj4gICAgICArICByZXR1cm4gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29udmVydHMgdGhlIGZpcnN0IChsb3dlcikgZWxlbWVudCBvZiBhIHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gaW50byBhDQo+ICAgICAgKy8vLyAgICA2NC1iaXQgc2lnbmVkIGlu
dGVnZXIgdmFsdWUsIGFjY29yZGluZyB0byB0aGUgY3VycmVudCByb3VuZGluZyBtb2RlLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
VlRTRDJTSSAvIENWVFNEMlNJIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZQ0KPiAgICAgICsvLy8g
ICAgY29udmVyc2lvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IHNpZ25lZCBpbnRl
Z2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0c2Rfc2k2
NChfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml9jdnRzZDJzaTY0KChfX3YyZGYpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIENvbnZlcnRzIHRoZSBmaXJzdCAobG93ZXIpIGVsZW1lbnQgb2YgYSB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIGludG8gYQ0KPiAgICAgICsvLy8gICAgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZh
bHVlLCB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcyBpbmV4YWN0Lg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRUU0Qy
U0kgLyBDVlRUU0QyU0kgPC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIHVzZWQgaW4gdGhlDQo+
ICAgICAgKy8vLyAgICBjb252ZXJzaW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQg
c2lnbmVkIGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9jdnR0c2Rfc2k2NChfX20xMjhkIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBf
X2J1aWx0aW5faWEzMl9jdnR0c2Qyc2k2NCgoX192MmRmKV9fYSk7DQo+ICAgICAgK30NCj4gICAg
ICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgYSB2ZWN0b3Igb2YgWzQg
eCBpMzJdIGludG8gYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVERRMlBTIC8gQ1ZURFEy
UFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNv
bnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwaTMyX3BzKF9fbTEyOGkgX19hKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9f
djRzaSlfX2EsIF9fdjRzZik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb252
ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgdmVjdG9yIG9mIFs0IHggaTMyXS4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWQ1ZUUFMyRFEgLyBDVlRQUzJEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZA0KPiAgICAgICsvLy8gICAg
dmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fY3Z0cHNfZXBpMzIoX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnRwczJkcSgoX192NHNmKV9f
YSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBpbnRvIGEgdmVjdG9yIG9mIFs0IHggaTMyXSwNCj4gICAgICArLy8vICAg
IHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzIGluZXhhY3QuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRQUzJEUSAv
IENWVFRQUzJEUSA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0
dHBzX2VwaTMyKF9fbTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfY3Z0dHBzMmRxKChfX3Y0c2YpX19hKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIFJldHVybnMgYSB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdoZXJlIHRo
ZSBsb3dlc3QgZWxlbWVudCBpcyB0aGUgaW5wdXQNCj4gICAgICArLy8vICAgIG9wZXJhbmQgYW5k
IHRoZSByZW1haW5pbmcgZWxlbWVudHMgYXJlIHplcm8uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkQgLyBNT1ZEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZC4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0c2kzMl9zaTEy
OChpbnQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOGkpKF9fdjRzaSl7IF9fYSwgMCwgMCwgMCB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsjaWZkZWYgX194ODZfNjRfXw0KPiAgICAgICsvLy8gUmV0dXJucyBhIHZlY3RvciBvZiBb
MiB4IGk2NF0gd2hlcmUgdGhlIGxvd2VyIGVsZW1lbnQgaXMgdGhlIGlucHV0DQo+ICAgICAgKy8v
LyAgICBvcGVyYW5kIGFuZCB0aGUgdXBwZXIgZWxlbWVudCBpcyB6ZXJvLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9W
USA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgY29udGFpbmlu
ZyB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fY3Z0c2k2NF9zaTEyOChsb25nIGxvbmcgX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fYSwgMCB9Ow0KPiAg
ICAgICt9DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArLy8vIE1vdmVzIHRoZSBs
ZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mIFs0IHggaTMyXSB0byBhDQo+
ICAgICAgKy8vLyAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkQgLyBNT1ZE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0K
PiAgICAgICsvLy8gICAgQSB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgbGVhc3Qgc2lnbmlmaWNh
bnQgMzIgYml0cyBhcmUgbW92ZWQgdG8gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcg
dGhlIG1vdmVkIHZhbHVlLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRzaTEyOF9zaTMyKF9fbTEyOGkgX19hKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgX192NHNpIF9fYiA9IChfX3Y0c2kpX19hOw0KPiAgICAgICsgIHJldHVy
biBfX2JbMF07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKyNpZmRlZiBfX3g4Nl82NF9f
DQo+ICAgICAgKy8vLyBNb3ZlcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNjQgYml0cyBvZiBhIHZl
Y3RvciBvZiBbMiB4IGk2NF0gdG8gYQ0KPiAgICAgICsvLy8gICAgNjQtYml0IHNpZ25lZCBpbnRl
Z2VyIHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgdmVjdG9yIG9mIFsyIHgg
aTY0XS4gVGhlIGxlYXN0IHNpZ25pZmljYW50IDY0IGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KPiAg
ICAgICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBz
aWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZS4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0
c2kxMjhfc2k2NChfX20xMjhpIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2Fb
MF07DQo+ICAgICAgK30NCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsvLy8gTW92
ZXMgcGFja2VkIGludGVnZXIgdmFsdWVzIGZyb20gYW4gYWxpZ25lZCAxMjgtYml0IG1lbW9yeSBs
b2NhdGlvbg0KPiAgICAgICsvLy8gICAgdG8gZWxlbWVudHMgaW4gYSAxMjgtYml0IGludGVnZXIg
dmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZEUUEgLyBNT1ZEUUEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBbiBhbGlnbmVkIHBvaW50
ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBpbnRlZ2VyIHZhbHVlcy4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBt
b3ZlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9sb2FkX3NpMTI4KF9fbTEyOGkgY29uc3QgKl9fcCkNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiAqX19wOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gTW92ZXMgcGFja2VkIGludGVnZXIgdmFsdWVzIGZyb20gYW4gdW5hbGlnbmVkIDEy
OC1iaXQgbWVtb3J5IGxvY2F0aW9uDQo+ICAgICAgKy8vLyAgICB0byBlbGVtZW50cyBpbiBhIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRVSAvIE1PVkRRVSA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEg
cG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIGludGVnZXIgdmFsdWVzLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIG1vdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2xvYWR1X3NpMTI4KF9fbTEyOGkgY29uc3QgKl9f
cCkNCj4gICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX2xvYWR1X3NpMTI4IHsNCj4gICAgICAr
ICAgIF9fbTEyOGkgX192Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywg
X19tYXlfYWxpYXNfXykpOw0KPiAgICAgICsgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3NpMTI4
KilfX3ApLT5fX3Y7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSZXR1cm5zIGEg
dmVjdG9yIG9mIFsyIHggaTY0XSB3aGVyZSB0aGUgbG93ZXIgZWxlbWVudCBpcyB0YWtlbiBmcm9t
DQo+ICAgICAgKy8vLyAgICB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgb3BlcmFuZCwgYW5kIHRo
ZSB1cHBlciBlbGVtZW50IGlzIHplcm8uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzYzOjBdIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIGxvd2VyIG9yZGVy
IGJpdHMgY29udGFpbiB0aGUNCj4gICAgICArLy8vICAgIG1vdmVkIHZhbHVlLiBUaGUgaGlnaGVy
IG9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9sb2FkbF9lcGk2NChfX20xMjhpIGNv
bnN0ICpfX3ApDQo+ICAgICAgK3sNCj4gICAgICArICBzdHJ1Y3QgX19tbV9sb2FkbF9lcGk2NF9z
dHJ1Y3Qgew0KPiAgICAgICsgICAgbG9uZyBsb25nIF9fdTsNCj4gICAgICArICB9IF9fYXR0cmli
dXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCj4gICAgICArICByZXR1cm4gX19l
eHRlbnNpb25fXyAoX19tMTI4aSkgeyAoKHN0cnVjdCBfX21tX2xvYWRsX2VwaTY0X3N0cnVjdCop
X19wKS0+X191LCAwfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEdlbmVyYXRl
cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoIHVuc3BlY2lmaWVkIGNvbnRlbnQu
DQo+ICAgICAgKy8vLyAgICBUaGlzIGNvdWxkIGJlIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gYW5v
dGhlciBpbnRyaW5zaWMgZnVuY3Rpb24gd2hlcmUgdGhlDQo+ICAgICAgKy8vLyAgICBhcmd1bWVu
dCBpcyByZXF1aXJlZCBidXQgdGhlIHZhbHVlIGlzIG5vdCBhY3R1YWxseSB1c2VkLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggaTMyXSB3aXRoIHVuc3BlY2lmaWVkIGNvbnRlbnQuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV91bmRlZmlu
ZWRfc2kxMjgodm9pZCkNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAg
ICArICBfX20xMjhpIF9fWCA9IF9fWDsNCj4gICAgICArICByZXR1cm4gX19YOw0KPiAgICAgICsj
ZWxzZQ0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl91bmRlZjEyOCgp
Ow0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEluaXRp
YWxpemVzIGJvdGggNjQtYml0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0
XSB3aXRoDQo+ICAgICAgKy8vLyAgICB0aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVl
cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0
aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAg
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ExDQo+ICAg
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg
dXBwZXIgNjQgYml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBv
ZiBbMiB4IGk2NF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19xMA0KPiAgICAgICsvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0IGJpdHMg
b2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbiB2ZWN0b3Igb2YgWzIgeCBpNjRdLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBpNjRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcw0KPiAgICAgICsvLy8gICAgcHJvdmlkZWQgaW4g
dGhlIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2V0X2VwaTY0eChsb25nIGxvbmcgX19xMSwgbG9uZyBs
b25nIF9fcTApDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19t
MTI4aSkoX192MmRpKXsgX19xMCwgX19xMSB9Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gSW5pdGlhbGl6ZXMgYm90aCA2NC1iaXQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpNjRdIHdpdGgNCj4gICAgICArLy8vICAgIHRoZSBzcGVjaWZpZWQgNjQtYml0IGlu
dGVnZXIgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0
aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAg
ICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fcTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRp
b24gdmVjdG9yIG9mIFsyIHggaTY0XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX3EwDQo+ICAgICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93
ZXIgNjQgYml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBb
MiB4IGk2NF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgdmFsdWVzDQo+ICAgICAgKy8vLyAgICBw
cm92aWRlZCBpbiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXRfZXBpNjQoX19tNjQgX19xMSwg
X19tNjQgX19xMCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTY0eCgo
bG9uZyBsb25nKV9fcTEsIChsb25nIGxvbmcpX19xMCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBJbml0aWFsaXplcyB0aGUgMzItYml0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggaTMyXSB3aXRoDQo+ICAgICAgKy8vLyAgICB0aGUgc3BlY2lmaWVkIDMyLWJp
dCBpbnRlZ2VyIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMg
YSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMN
Cj4gICAgICArLy8vICAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX2kzDQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRp
b24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9faTINCj4gICAgICArLy8vICAgIEEgMzIt
Yml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjY0XSBvZiB0aGUg
ZGVzdGluYXRpb24NCj4gICAgICArLy8vICAgIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2kxDQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIGRlc3RpbmF0aW9uDQo+ICAgICAgKy8vLyAgICB2ZWN0
b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19pMA0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0
aW9uDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0
aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgdmFsdWVz
DQo+ICAgICAgKy8vLyAgICBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXRf
ZXBpMzIoaW50IF9faTMsIGludCBfX2kyLCBpbnQgX19pMSwgaW50IF9faTApDQo+ICAgICAgK3sN
Cj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192NHNpKXsgX19pMCwg
X19pMSwgX19pMiwgX19pM307DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBJbml0
aWFsaXplcyB0aGUgMTYtYml0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2
XSB3aXRoDQo+ICAgICAgKy8vLyAgICB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ2VyIHZhbHVl
cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0
aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAg
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3c3DQo+ICAg
ICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsxMjc6MTEyXSBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uIHZlY3Rvci4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX3c2DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZQ0KPiAgICAgICsvLy8g
ICAgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fdzUNCj4gICAgICAr
Ly8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1
OjgwXSBvZiB0aGUgZGVzdGluYXRpb24NCj4gICAgICArLy8vICAgIHZlY3Rvci4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX3c0DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uDQo+ICAgICAg
Ky8vLyAgICB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX193Mw0KPiAgICAgICsvLy8gICAg
QSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9m
IHRoZSBkZXN0aW5hdGlvbg0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fdzINCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgZGVzdGluYXRpb24NCj4gICAgICArLy8vICAg
IHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX3cxDQo+ICAgICAgKy8vLyAgICBBIDE2LWJp
dCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIGRl
c3RpbmF0aW9uDQo+ICAgICAgKy8vLyAgICB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX193
MA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMTU6MF0gb2YgdGhlIGRlc3RpbmF0aW9uDQo+ICAgICAgKy8vLyAgICB2ZWN0b3Iu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBb
OCB4IGkxNl0gY29udGFpbmluZyB0aGUgdmFsdWVzDQo+ICAgICAgKy8vLyAgICBwcm92aWRlZCBp
biB0aGUgb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXRfZXBpMTYoc2hvcnQgX193Nywgc2hvcnQgX193
Niwgc2hvcnQgX193NSwgc2hvcnQgX193NCwgc2hvcnQgX193Mywgc2hvcnQgX193Miwgc2hvcnQg
X193MSwgc2hvcnQgX193MCkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lv
bl9fIChfX20xMjhpKShfX3Y4aGkpeyBfX3cwLCBfX3cxLCBfX3cyLCBfX3czLCBfX3c0LCBfX3c1
LCBfX3c2LCBfX3c3IH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBJbml0aWFs
aXplcyB0aGUgOC1iaXQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHdp
dGgNCj4gICAgICArLy8vICAgIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdlciB2YWx1ZXMuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBh
bmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAgICBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMTUNCj4gICAgICAr
Ly8vICAgIEluaXRpYWxpemVzIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0
b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMTQNCj4gICAgICArLy8vICAgIEluaXRpYWxpemVz
IGJpdHMgWzExOToxMTJdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19iMTMNCj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzExMToxMDRdIG9m
IHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMTINCj4gICAg
ICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZl
Y3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IxMQ0KPiAgICAgICsvLy8gICAgSW5pdGlhbGl6
ZXMgYml0cyBbOTU6ODhdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19iMTANCj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzg3OjgwXSBvZiB0
aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjkNCj4gICAgICAr
Ly8vICAgIEluaXRpYWxpemVzIGJpdHMgWzc5OjcyXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9y
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjgNCj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJp
dHMgWzcxOjY0XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYjcNCj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzYzOjU2XSBvZiB0aGUgZGVz
dGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjYNCj4gICAgICArLy8vICAg
IEluaXRpYWxpemVzIGJpdHMgWzU1OjQ4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYjUNCj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzQ3
OjQwXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjQN
Cj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzM5OjMyXSBvZiB0aGUgZGVzdGluYXRp
b24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjMNCj4gICAgICArLy8vICAgIEluaXRp
YWxpemVzIGJpdHMgWzMxOjI0XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYjINCj4gICAgICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzIzOjE2XSBv
ZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjENCj4gICAg
ICArLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzE1OjhdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0
b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMA0KPiAgICAgICsvLy8gICAgSW5pdGlhbGl6ZXMg
Yml0cyBbNzowXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcg
dGhlIHZhbHVlcw0KPiAgICAgICsvLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fc2V0X2VwaTgoY2hhciBfX2IxNSwgY2hhciBfX2IxNCwgY2hhciBfX2IxMywgY2hhciBf
X2IxMiwgY2hhciBfX2IxMSwgY2hhciBfX2IxMCwgY2hhciBfX2I5LCBjaGFyIF9fYjgsIGNoYXIg
X19iNywgY2hhciBfX2I2LCBjaGFyIF9fYjUsIGNoYXIgX19iNCwgY2hhciBfX2IzLCBjaGFyIF9f
YjIsIGNoYXIgX19iMSwgY2hhciBfX2IwKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9f
ZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjE2cWkpeyBfX2IwLCBfX2IxLCBfX2IyLCBfX2IzLCBf
X2I0LCBfX2I1LCBfX2I2LCBfX2I3LCBfX2I4LCBfX2I5LCBfX2IxMCwgX19iMTEsIF9fYjEyLCBf
X2IxMywgX19iMTQsIF9fYjE1IH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBJ
bml0aWFsaXplcyBib3RoIHZhbHVlcyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igd2l0aCB0
aGUNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdlciB2YWx1ZS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBk
b2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAgIGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ENCj4gICAgICArLy8vICAg
IEludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVz
dGluYXRpb24gaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0g
d2l0aCBib3RoDQo+ICAgICAgKy8vLyAgICBlbGVtZW50cyBjb250YWluaW5nIHRoZSB2YWx1ZSBw
cm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldDFfZXBpNjR4KGxvbmcgbG9uZyBf
X3EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tX3NldF9lcGk2NHgoX19xLCBfX3Ep
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gSW5pdGlhbGl6ZXMgYm90aCB2YWx1
ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0aCB0aGUNCj4gICAgICArLy8v
ICAgIHNwZWNpZmllZCA2NC1iaXQgdmFsdWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBh
IHNwZWNpZmljDQo+ICAgICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBpbnRlZ2VyDQo+ICAg
ICAgKy8vLyAgICB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0aCBhbGwgZWxlbWVudHMNCj4gICAgICArLy8v
ICAgIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fc2V0MV9lcGk2NChfX202NCBfX3EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21t
X3NldF9lcGk2NChfX3EsIF9fcSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBJ
bml0aWFsaXplcyBhbGwgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdp
dGggdGhlDQo+ICAgICAgKy8vLyAgICBzcGVjaWZpZWQgMzItYml0IHZhbHVlLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMg
bm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAgICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9faQ0KPiAgICAgICsvLy8gICAgQSAz
Mi1iaXQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGlu
YXRpb24gaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdpdGggYWxsIGVs
ZW1lbnRzDQo+ICAgICAgKy8vLyAgICBjb250YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0
aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX3NldDFfZXBpMzIoaW50IF9faSkNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTMyKF9faSwgX19pLCBfX2ksIF9faSk7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBJbml0aWFsaXplcyBhbGwgdmFsdWVzIGluIGEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdpdGggdGhlDQo+ICAgICAgKy8vLyAgICBzcGVjaWZp
ZWQgMTYtYml0IHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBh
IHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0K
PiAgICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fdw0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdlcg0KPiAgICAgICsvLy8gICAg
dmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdIHdpdGggYWxsIGVsZW1lbnRzDQo+ICAgICAgKy8vLyAgICBjb250YWlu
aW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldDFfZXBp
MTYoc2hvcnQgX193KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9tbV9zZXRfZXBpMTYo
X193LCBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3cpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gSW5pdGlhbGl6ZXMgYWxsIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVj
dG9yIG9mIFsxNiB4IGk4XSB3aXRoIHRoZQ0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIDgtYml0
IHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkg
ZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAgICAgICsv
Ly8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQW4gOC1iaXQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVt
ZW50cyBvZiB0aGUgZGVzdGluYXRpb24gaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2
IHggaThdIHdpdGggYWxsIGVsZW1lbnRzDQo+ICAgICAgKy8vLyAgICBjb250YWluaW5nIHRoZSB2
YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldDFfZXBpOChjaGFyIF9f
YikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTgoX19iLCBfX2IsIF9f
YiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2Is
IF9fYiwgX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQo+
ICAgICAgKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZXMu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGRvZXMgbm90IGNvcnJlc3BvbmQg
dG8gYSBzcGVjaWZpYyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19xMA0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fcTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCj4g
ICAgICArLy8vICAgIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVk
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXRyX2VwaTY0KF9fbTY0IF9fcTAs
IF9fbTY0IF9fcTEpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21tX3NldF9lcGk2NChf
X3ExLCBfX3EwKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQo+
ICAgICAgKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZXMu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlv
biBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAgICBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19pMA0KPiAgICAg
ICsvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzMxOjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19pMQ0KPiAgICAgICsv
Ly8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYz
OjMyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9faTINCj4gICAgICArLy8v
ICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2
NF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2kzDQo+ICAgICAgKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2
XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4
LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldHJfZXBpMzIoaW50IF9faTAsIGludCBf
X2kxLCBpbnQgX19pMiwgaW50IF9faTMpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX21t
X3NldF9lcGkzMihfX2kzLCBfX2kyLCBfX2kxLCBfX2kwKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFs
aXplZCBpbiByZXZlcnNlIG9yZGVyDQo+ICAgICAgKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVk
IDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNw
ZWNpZmljDQo+ICAgICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX193MA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8v
LyBccGFyYW0gX193MQ0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fdzINCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxw
YXJhbSBfX3czDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFy
YW0gX193NA0KPiAgICAgICsvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fdzUNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBf
X3c2DQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
dzcNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMg
QW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldHJfZXBp
MTYoc2hvcnQgX193MCwgc2hvcnQgX193MSwgc2hvcnQgX193Miwgc2hvcnQgX193Mywgc2hvcnQg
X193NCwgc2hvcnQgX193NSwgc2hvcnQgX193Niwgc2hvcnQgX193NykNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTE2KF9fdzcsIF9fdzYsIF9fdzUsIF9fdzQsIF9fdzMs
IF9fdzIsIF9fdzEsIF9fdzApOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29u
c3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ug
b3JkZXINCj4gICAgICArLy8vICAgICB3aXRoIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdyYWwg
dmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkg
ZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAgICAgICsv
Ly8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjAN
Cj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMQ0KPiAg
ICAgICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzE1OjhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMg0KPiAgICAg
ICsvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjMNCj4gICAgICAr
Ly8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsz
MToyNF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2I0DQo+ICAgICAgKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzk6
MzJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iNQ0KPiAgICAgICsvLy8g
ICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQw
XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjYNCj4gICAgICArLy8vICAg
IEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs1NTo0OF0g
b2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2I3DQo+ICAgICAgKy8vLyAgICBB
biA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NTZdIG9m
IHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iOA0KPiAgICAgICsvLy8gICAgQW4g
OC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzcxOjY0XSBvZiB0
aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjkNCj4gICAgICArLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo3Ml0gb2YgdGhl
IHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IxMA0KPiAgICAgICsvLy8gICAgQW4gOC1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzg3OjgwXSBvZiB0aGUg
cmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjExDQo+ICAgICAgKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODhdIG9mIHRoZSBy
ZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMTINCj4gICAgICArLy8vICAgIEFuIDgtYml0
IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMDM6OTZdIG9mIHRoZSBy
ZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMTMNCj4gICAgICArLy8vICAgIEFuIDgtYml0
IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6MTA0XSBvZiB0aGUg
cmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjE0DQo+ICAgICAgKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTE5OjExMl0gb2YgdGhl
IHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IxNQ0KPiAgICAgICsvLy8gICAgQW4gOC1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMjBdIG9mIHRo
ZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2V0cl9lcGk4KGNoYXIgX19iMCwgY2hhciBfX2IxLCBj
aGFyIF9fYjIsIGNoYXIgX19iMywgY2hhciBfX2I0LCBjaGFyIF9fYjUsIGNoYXIgX19iNiwgY2hh
ciBfX2I3LCBjaGFyIF9fYjgsIGNoYXIgX19iOSwgY2hhciBfX2IxMCwgY2hhciBfX2IxMSwgY2hh
ciBfX2IxMiwgY2hhciBfX2IxMywgY2hhciBfX2IxNCwgY2hhciBfX2IxNSkNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiBfbW1fc2V0X2VwaTgoX19iMTUsIF9fYjE0LCBfX2IxMywgX19iMTIs
IF9fYjExLCBfX2IxMCwgX19iOSwgX19iOCwgX19iNywgX19iNiwgX19iNSwgX19iNCwgX19iMywg
X19iMiwgX19iMSwgX19iMCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDcmVh
dGVzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB0byB6ZXJvLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQ
UyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHJl
dHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIGFsbCBlbGVt
ZW50cyBzZXQgdG8NCj4gICAgICArLy8vICAgIHplcm8uDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXR6ZXJvX3NpMTI4
KHZvaWQpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4
aSkoX192MmRpKXsgMExMLCAwTEwgfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFN0b3JlcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gYSBtZW1vcnkgbG9jYXRpb24gYWxp
Z25lZCBvbiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IGJvdW5kYXJ5Lg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBN
T1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRp
b24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGludGVnZXINCj4gICAgICArLy8vICAgIHZhbHVlcy4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdG9yZV9z
aTEyOChfX20xMjhpICpfX3AsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgKl9f
cCA9IF9fYjsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN0b3JlcyBhIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgdG8gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9W
VVBTIC8gTU9WVVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9u
IHRoYXQgd2lsbCByZWNlaXZlIHRoZSBpbnRlZ2VyIHZhbHVlcy4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdG9yZXVfc2kxMjgoX19tMTI4aSAqX19w
LCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX3N0b3JldV9zaTEy
OCB7DQo+ICAgICAgKyAgICBfX20xMjhpIF9fdjsNCj4gICAgICArICB9IF9fYXR0cmlidXRlX18o
KF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCj4gICAgICArICAoKHN0cnVjdCBfX3N0b3Jl
dV9zaTEyOCopX19wKS0+X192ID0gX19iOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gTW92ZXMgYnl0ZXMgc2VsZWN0ZWQgYnkgdGhlIG1hc2sgZnJvbSB0aGUgZmlyc3Qgb3BlcmFu
ZCB0byB0aGUNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCB1bmFsaWduZWQgbWVtb3J5IGxvY2F0
aW9uLiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlDQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25k
aW5nIGJ5dGUgaXMgd3JpdHRlbiwgb3RoZXJ3aXNlIGl0IGlzIG5vdCB3cml0dGVuLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZs
YWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KPiAgICAgICsvLy8gICAgdXNl
ZCBhZ2FpbiBzb29uKS4gRXhjZXB0aW9uIGFuZCB0cmFwIGJlaGF2aW9yIGZvciBlbGVtZW50cyBu
b3Qgc2VsZWN0ZWQNCj4gICAgICArLy8vICAgIGZvciBzdG9yYWdlIHRvIG1lbW9yeSBhcmUgaW1w
bGVtZW50YXRpb24gZGVwZW5kZW50Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WRFFVIC8gTUFTS01PVkRRVSA8L2M+DQo+
ICAgICAgKy8vLyAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2QNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19uDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWFzay4gVGhl
IG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQo+ICAgICAgKy8vLyAgICBlYWNoIGJ5dGUgcmVwcmVz
ZW50cyB0aGUgbWFzayBiaXRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8g
ICAgQSBwb2ludGVyIHRvIGFuIHVuYWxpZ25lZCAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbiB3aGVy
ZSB0aGUgc3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgYXJlIG1vdmVkLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1f
bWFza21vdmV1X3NpMTI4KF9fbTEyOGkgX19kLCBfX20xMjhpIF9fbiwgY2hhciAqX19wKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgX19idWlsdGluX2lhMzJfbWFza21vdmRxdSgoX192MTZxaSlfX2Qs
IChfX3YxNnFpKV9fbiwgX19wKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN0
b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIg
eCBpNjRdIHRvDQo+ICAgICAgKy8vLyAgICBhIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBTIC8g
TU9WTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlv
biB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbG93ZXIgNjQgYml0cw0KPiAgICAgICsvLy8gICAgb2Yg
dGhlIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSBs
b3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZSB0byBiZSBzdG9y
ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9zdG9yZWxfZXBpNjQoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYSkNCj4gICAg
ICArew0KPiAgICAgICsgIHN0cnVjdCBfX21tX3N0b3JlbF9lcGk2NF9zdHJ1Y3Qgew0KPiAgICAg
ICsgICAgbG9uZyBsb25nIF9fdTsNCj4gICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2Vk
X18sIF9fbWF5X2FsaWFzX18pKTsNCj4gICAgICArICAoKHN0cnVjdCBfX21tX3N0b3JlbF9lcGk2
NF9zdHJ1Y3QqKV9fcCktPl9fdSA9IF9fYVswXTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIFN0b3JlcyBhIDEyOC1iaXQgZmxvYXRpbmcgcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSB0byBhIDEyOC1iaXQNCj4gICAgICArLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBk
YXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KPiAgICAgICsv
Ly8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTlRQUyAvIE1PVk5UUFMgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAg
ICBBIHBvaW50ZXIgdG8gdGhlIDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdXNlZCB0
byBzdG9yZSB0aGUgdmFsdWUuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAg
ICBBIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgNjQtYml0IHZhbHVlcyB0
byBiZSBzdG9yZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbV9zdHJlYW1fcGQoZG91YmxlICpfX3AsIF9fbTEyOGQgX19hKQ0K
PiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIF9fYnVpbHRpbl9p
YTMyX21vdm50cGQgKF9fcCwgKF9fdjJkZilfX2EpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsg
IF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192MmRmKV9fYSwgKF9fdjJkZiopX19wKTsN
Cj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMg
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEgMTI4LWJpdCBhbGlnbmVkIG1lbW9yeSBsb2Nh
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0
aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUNCj4gICAg
ICArLy8vICAgIHVzZWQgYWdhaW4gc29vbikuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5UUFMgLyBNT1ZOVFBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsv
Ly8gICAgQSBwb2ludGVyIHRvIHRoZSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHVz
ZWQgdG8gc3RvcmUgdGhlIHZhbHVlLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBi
ZSBzdG9yZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV9zdHJlYW1fc2kxMjgoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYSkN
Cj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICBfX2J1aWx0aW5f
aWEzMl9tb3ZudGRxICgoX192MmRpICopX19wLCAoX192MmRpKV9fYSk7DQo+ICAgICAgKyNlbHNl
DQo+ICAgICAgKyAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3YyZGkpX19hLCAoX192
MmRpKilfX3ApOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIFN0b3JlcyBhIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgbWVtb3J5
IGxvY2F0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRvIG1pbmltaXplIGNhY2hp
bmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0K
PiAgICAgICsvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZOVEkgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBB
IHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBtZW1vcnkgbG9jYXRpb24gdXNlZCB0byBzdG9yZSB0aGUg
dmFsdWUuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBp
bnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gdm9pZA0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQo+ICAgICAgKyNlbHNlDQo+ICAgICAgK19fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpKSkNCj4gICAgICArI2VuZGlmDQo+
ICAgICAgK19tbV9zdHJlYW1fc2kzMihpbnQgKl9fcCwgaW50IF9fYSkNCj4gICAgICArew0KPiAg
ICAgICsgIF9fYnVpbHRpbl9pYTMyX21vdm50aShfX3AsIF9fYSk7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKyNpZmRlZiBfX3g4Nl82NF9fDQo+ICAgICAgKy8vLyBTdG9yZXMgYSA2NC1i
aXQgaW50ZWdlciB2YWx1ZSBpbiB0aGUgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyAgICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBm
bGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUNCj4gICAgICArLy8vICAgIHVz
ZWQgYWdhaW4gc29vbikuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRJUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byB0aGUg
NjQtYml0IG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgY29udGFpbmlu
ZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lk
DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICtfX2F0dHJpYnV0ZV9fKChfX2dudV9p
bmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gICAgICArI2Vs
c2UNCj4gICAgICArX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
LCBfX3RhcmdldF9fKCJzc2UyIikpKQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArX21tX3N0cmVh
bV9zaTY0KGxvbmcgbG9uZyAqX19wLCBsb25nIGxvbmcgX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgX19idWlsdGluX2lhMzJfbW92bnRpNjQoX19wLCBfX2EpOw0KPiAgICAgICt9DQo+ICAgICAg
KyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQo+ICAg
ICAgK2V4dGVybiAiQyIgew0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBU
aGUgY2FjaGUgbGluZSBjb250YWluaW5nIFxhIF9fcCBpcyBmbHVzaGVkIGFuZCBpbnZhbGlkYXRl
ZCBmcm9tIGFsbA0KPiAgICAgICsvLy8gICAgY2FjaGVzIGluIHRoZSBjb2hlcmVuY3kgZG9tYWlu
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IENMRkxVU0ggPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBsb2NhdGlv
biB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjYWNoZSBsaW5lIHRvIGJlDQo+ICAgICAgKy8vLyAgICBm
bHVzaGVkLg0KPiAgICAgICt2b2lkIF9tbV9jbGZsdXNoKHZvaWQgY29uc3QgKiBfX3ApOw0KPiAg
ICAgICsNCj4gICAgICArLy8vIEZvcmNlcyBzdHJvbmcgbWVtb3J5IG9yZGVyaW5nIChzZXJpYWxp
emF0aW9uKSBiZXR3ZWVuIGxvYWQNCj4gICAgICArLy8vICAgIGluc3RydWN0aW9ucyBwcmVjZWRp
bmcgdGhpcyBpbnN0cnVjdGlvbiBhbmQgbG9hZCBpbnN0cnVjdGlvbnMgZm9sbG93aW5nDQo+ICAg
ICAgKy8vLyAgICB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmluZyB0aGUgc3lzdGVtIGNvbXBsZXRl
cyBhbGwgcHJldmlvdXMgbG9hZHMgYmVmb3JlDQo+ICAgICAgKy8vLyAgICBleGVjdXRpbmcgc3Vi
c2VxdWVudCBsb2Fkcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBMRkVOQ0UgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgK3ZvaWQgX21tX2xmZW5jZSh2b2lkKTsNCj4gICAgICArDQo+ICAgICAgKy8vLyBGb3Jj
ZXMgc3Ryb25nIG1lbW9yeSBvcmRlcmluZyAoc2VyaWFsaXphdGlvbikgYmV0d2VlbiBsb2FkIGFu
ZCBzdG9yZQ0KPiAgICAgICsvLy8gICAgaW5zdHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3Ry
dWN0aW9uIGFuZCBsb2FkIGFuZCBzdG9yZSBpbnN0cnVjdGlvbnMNCj4gICAgICArLy8vICAgIGZv
bGxvd2luZyB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmluZyB0aGF0IHRoZSBzeXN0ZW0gY29tcGxl
dGVzIGFsbA0KPiAgICAgICsvLy8gICAgcHJldmlvdXMgbWVtb3J5IGFjY2Vzc2VzIGJlZm9yZSBl
eGVjdXRpbmcgc3Vic2VxdWVudCBtZW1vcnkgYWNjZXNzZXMuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTUZFTkNFIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICt2b2lkIF9tbV9tZmVuY2Uodm9pZCk7DQo+ICAg
ICAgKw0KPiAgICAgICsjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCj4gICAgICArfSAvLyBleHRl
cm4gIkMiDQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnZlcnRzIDE2
LWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCj4g
ICAgICArLy8vICAgIG9wZXJhbmRzIGludG8gOC1iaXQgc2lnbmVkIGludGVnZXJzLCBhbmQgcGFj
a3MgdGhlIHJlc3VsdHMgaW50byB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBQb3Np
dGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLg0KPiAg
ICAgICsvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQg
dG8gMHg4MC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUEFDS1NTV0IgLyBQQUNLU1NXQiA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVk
IGFzDQo+ICAgICAgKy8vLyAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBh
IDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgNCj4gICAgICArLy8vICAgc2F0dXJhdGlvbi4gVmFs
dWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gVmFsdWVzIGxlc3MN
Cj4gICAgICArLy8vICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZl
cnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJlDQo+ICAgICAgKy8vLyAgIHdyaXR0ZW4gdG8gdGhlIGxv
d2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gRWFjaCAxNi1i
aXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzDQo+ICAgICAgKy8vLyAgIGEgc2lnbmVkIGludGVnZXIg
YW5kIGlzIGNvbnZlcnRlZCB0byBhIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgNCj4gICAgICAr
Ly8vICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQg
dG8gMHg3Ri4gVmFsdWVzIGxlc3MNCj4gICAgICArLy8vICAgdGhhbiAweDgwIGFyZSBzYXR1cmF0
ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZCBbOCB4IGk4XSB2YWx1ZXMgYXJlDQo+ICAgICAgKy8v
LyAgIHdyaXR0ZW4gdG8gdGhlIGhpZ2hlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fcGFja3NfZXBpMTYoX19tMTI4aSBfX2EsIF9f
bTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BhY2tzc3diMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb252ZXJ0cyAzMi1iaXQgc2lnbmVkIGludGVnZXJzIGZy
b20gYm90aCAxMjgtYml0IGludGVnZXIgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcyBp
bnRvIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMsIGFuZCBwYWNrcyB0aGUgcmVzdWx0cyBpbnRvIHRo
ZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRo
YW4gMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLg0KPiAgICAgICsvLy8gICAgTmVnYXRp
dmUgdmFsdWVzIGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBB
Q0tTU0RXIC8gUEFDS1NTRFcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMNCj4gICAgICAr
Ly8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWdu
ZWQgaW50ZWdlciB3aXRoDQo+ICAgICAgKy8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRl
ciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gVmFsdWVzDQo+ICAgICAgKy8v
LyAgICBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVy
dGVkIFs0IHggaTE2XSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBs
b3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBFYWNoIDMy
LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMNCj4gICAgICArLy8vICAgIGEgc2lnbmVkIGludGVn
ZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQo+ICAg
ICAgKy8vLyAgICBzYXR1cmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0
dXJhdGVkIHRvIDB4N0ZGRi4gVmFsdWVzDQo+ICAgICAgKy8vLyAgICBsZXNzIHRoYW4gMHg4MDAw
IGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMN
Cj4gICAgICArLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBoaWdoZXIgNjQgYml0cyBvZiB0aGUg
cmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkx
Nl0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3BhY2tzX2VwaTMy
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWNrc3NkdzEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlf
X2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgMTYtYml0IHNp
Z25lZCBpbnRlZ2VycyBmcm9tIGJvdGggMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KPiAgICAgICsv
Ly8gICAgb3BlcmFuZHMgaW50byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYW5kIHBhY2tzIHRo
ZSByZXN1bHRzIGludG8gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gVmFsdWVzIGdy
ZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MNCj4gICAg
ICArLy8vICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBQ0tVU1dCIC8g
UEFDS1VTV0IgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBp
MTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMNCj4gICAgICArLy8vICAgIGEg
c2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHdpdGgNCj4gICAgICArLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4g
MHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzDQo+ICAgICAgKy8vLyAgICB0
aGFuIDB4MDAgYXJlIHNhdHVyYXRlZCB0byAweDAwLiBUaGUgY29udmVydGVkIFs4IHggaThdIHZh
bHVlcyBhcmUNCj4gICAgICArLy8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2Yg
dGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQgaXMg
dHJlYXRlZCBhcw0KPiAgICAgICsvLy8gICAgYSBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVy
dGVkIHRvIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgd2l0aA0KPiAgICAgICsvLy8gICAgc2F0
dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4g
VmFsdWVzIGxlc3MNCj4gICAgICArLy8vICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVkIHRvIDB4
MDAuIFRoZSBjb252ZXJ0ZWQgWzggeCBpOF0gdmFsdWVzIGFyZQ0KPiAgICAgICsvLy8gICAgd3Jp
dHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbnZl
cnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9wYWNrdXNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkg
X19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X3BhY2t1c3diMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBFeHRyYWN0cyAxNiBiaXRzIGZyb20gYSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaTE2XSwgdXNpbmcNCj4gICAgICArLy8vICAgIHRoZSBpbW1lZGlhdGUt
dmFsdWUgcGFyYW1ldGVyIGFzIGEgc2VsZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSVyAvIFBFWFRSVyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX2lt
bQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsyOjBdIHNlbGVjdHMg
dmFsdWVzIGZyb20gXGEgX19hIHRvIGJlIGFzc2lnbmVkDQo+ICAgICAgKy8vLyAgICB0byBiaXRz
WzE1OjBdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICAwMDA6IGFzc2lnbiB2YWx1
ZXMgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBfX2EuIFxuDQo+ICAgICAgKy8vLyAgICAwMDE6IGFz
c2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMToxNl0gb2YgXGEgX19hLiBcbg0KPiAgICAgICsvLy8g
ICAgMDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNDc6MzJdIG9mIFxhIF9fYS4gXG4NCj4g
ICAgICArLy8vICAgIDAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBf
X2EuIFxuDQo+ICAgICAgKy8vLyAgICAxMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs3OTo2
NF0gb2YgXGEgX19hLiBcbg0KPiAgICAgICsvLy8gICAgMTAxOiBhc3NpZ24gdmFsdWVzIGZyb20g
Yml0cyBbOTU6ODBdIG9mIFxhIF9fYS4gXG4NCj4gICAgICArLy8vICAgIDExMDogYXNzaWduIHZh
bHVlcyBmcm9tIGJpdHMgWzExMTo5Nl0gb2YgXGEgX19hLiBcbg0KPiAgICAgICsvLy8gICAgMTEx
OiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMTI3OjExMl0gb2YgXGEgX19hLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQW4gaW50ZWdlciwgd2hvc2UgbG93ZXIgMTYgYml0cyBhcmUgc2VsZWN0ZWQg
ZnJvbSB0aGUgMTI4LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVy
IGFuZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIGFzc2lnbmVkIHplcm9zLg0KPiAgICAgICsjZGVm
aW5lIF9tbV9leHRyYWN0X2VwaTE2KGEsIGltbSkgXA0KPiAgICAgICsgIChpbnQpKHVuc2lnbmVk
IHNob3J0KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjhoaSgoX192OGhpKShfX20xMjhpKShhKSwg
XA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoaW50KShpbW0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRoZW4gaW5zZXJ0
aW5nIHRoZSBsb3dlciAxNiBiaXRzDQo+ICAgICAgKy8vLyAgICBvZiBhbiBpbnRlZ2VyIHBhcmFt
ZXRlciBpbnRvIGFuIG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZS12YWx1ZQ0KPiAg
ICAgICsvLy8gICAgcGFyYW1ldGVyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQSU5TUlcgLyBQSU5TUlcgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGlzIHZlY3RvciBpcyBjb3Bp
ZWQgdG8gdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBlaWdo
dCBlbGVtZW50cyBpbiB0aGUgcmVzdWx0IGlzIHJlcGxhY2VkIGJ5DQo+ICAgICAgKy8vLyAgICB0
aGUgbG93ZXIgMTYgYml0cyBvZiBcYSBfX2IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBbiBpbnRlZ2VyLiBUaGUgbG93ZXIgMTYgYml0cyBvZiB0aGlzIHBhcmFtZXRl
ciBhcmUgd3JpdHRlbiB0byB0aGUNCj4gICAgICArLy8vICAgIHJlc3VsdCBiZWdpbm5pbmcgYXQg
YW4gb2Zmc2V0IHNwZWNpZmllZCBieSBcYSBfX2ltbS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2lt
bQ0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGJpdCBv
ZmZzZXQgaW4gdGhlIHJlc3VsdCBhdCB3aGljaCB0aGUNCj4gICAgICArLy8vICAgIGxvd2VyIDE2
IGJpdHMgb2YgXGEgX19iIGFyZSB3cml0dGVuLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnN0cnVjdGVkIHZhbHVlcy4NCj4g
ICAgICArI2RlZmluZSBfbW1faW5zZXJ0X2VwaTE2KGEsIGIsIGltbSkgXA0KPiAgICAgICsgIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjhoaSgoX192OGhpKShfX20xMjhpKShhKSwg
KGludCkoYiksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGludCkoaW1tKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb3BpZXMgdGhlIHZhbHVlcyBv
ZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gZWFjaCA4LWJpdA0KPiAgICAgICsvLy8g
ICAgZWxlbWVudCBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIGNy
ZWF0ZSBhIDE2LWJpdCBtYXNrDQo+ICAgICAgKy8vLyAgICB2YWx1ZSwgemVyby1leHRlbmRzIHRo
ZSB2YWx1ZSwgYW5kIHdyaXRlcyBpdCB0byB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZNU0tCIC8g
UE1PVk1TS0IgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgdmFsdWVzIHdpdGggYml0cyB0byBiZSBleHRyYWN0ZWQuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGlu
IFxhIF9fYSwNCj4gICAgICArLy8vICAgIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0uIFRoZSBvdGhl
ciBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbW92ZW1hc2tfZXBpOChfX20xMjhpIF9f
YSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wbW92bXNrYjEy
OCgoX192MTZxaSlfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3Ry
dWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgMzItYml0DQo+
ICAgICAgKy8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1l
dGVyLCB1c2luZyB0aGUgaW1tZWRpYXRlLXZhbHVlDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXIg
YXMgYSBzcGVjaWZpZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBf
X20xMjhpIF9tbV9zaHVmZmxlX2VwaTMyKF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQo+ICAg
ICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTSFVGRCAvIFBTSFVGRCA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBhDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4N
Cj4gICAgICArLy8vIFxwYXJhbSBpbW0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1
ZSBjb250YWluaW5nIGFuIDgtYml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8N
Cj4gICAgICArLy8vICAgIGNvcHkgZnJvbSBhLiBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUg
MTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQNCj4gICAgICArLy8vICAgIHZhbHVlcyBh
cyBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3Np
Z24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAg
ICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6MzJdIG9m
IHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFz
c2lnbiB2YWx1ZXMgdG8gYml0cyBbOTU6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8v
LyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3Ojk2
XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRz
OiBcbg0KPiAgICAgICsvLy8gICAgMDA6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFszMTowXSBv
ZiBcYSBhLiBcbg0KPiAgICAgICsvLy8gICAgMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs2
MzozMl0gb2YgXGEgYS4gXG4NCj4gICAgICArLy8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZyb20g
Yml0cyBbOTU6NjRdIG9mIFxhIGEuIFxuDQo+ICAgICAgKy8vLyAgICAxMTogYXNzaWduIHZhbHVl
cyBmcm9tIGJpdHMgWzEyNzo5Nl0gb2YgXGEgYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQo+ICAg
ICAgKyNkZWZpbmUgX21tX3NodWZmbGVfZXBpMzIoYSwgaW1tKSBcDQo+ICAgICAgKyAgKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfcHNodWZkKChfX3Y0c2kpKF9fbTEyOGkpKGEpLCAoaW50KShpbW0p
KQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGJ5IHNodWZmbGluZyBmb3VyIGxvd2VyIDE2LWJpdA0KPiAgICAgICsvLy8gICAgZWxlbWVu
dHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSwgdXNpbmcgdGhlIGlt
bWVkaWF0ZQ0KPiAgICAgICsvLy8gICAgdmFsdWUgcGFyYW1ldGVyIGFzIGEgc3BlY2lmaWVyLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4aSBfbW1fc2h1ZmZs
ZWxvX2VwaTE2KF9fbTEyOGkgYSwgY29uc3QgaW50IGltbSk7DQo+ICAgICAgKy8vLyBcZW5kY29k
ZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBTSFVGTFcgLyBQU0hVRkxXIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXHBhcmFtIGENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbOCB4IGkxNl0uIEJpdHMgWzEyNzo2NF0gYXJlIGNvcGllZCB0byBiaXRzDQo+
ICAgICAgKy8vLyAgICBbMTI3OjY0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IGltbQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcg
d2hpY2ggZWxlbWVudHMgdG8gY29weSBmcm9tIFxhIGEuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRz
WzE6MF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVz
dWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0c1szOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1
ZXMgdG8gYml0cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRz
WzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs0NzozMl0gb2YgdGhlIHJl
c3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHNbNzo2XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFs
dWVzIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0
IHZhbHVlIGFzc2lnbm1lbnRzOiBcbg0KPiAgICAgICsvLy8gICAgMDA6IGFzc2lnbiB2YWx1ZXMg
ZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBhLiBcbg0KPiAgICAgICsvLy8gICAgMDE6IGFzc2lnbiB2
YWx1ZXMgZnJvbSBiaXRzIFszMToxNl0gb2YgXGEgYS4gXG4NCj4gICAgICArLy8vICAgIDEwOiBh
c3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNDc6MzJdIG9mIFxhIGEuIFxuDQo+ICAgICAgKy8vLyAg
ICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBhLiBcbg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNo
dWZmbGVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW1fc2h1ZmZsZWxvX2VwaTE2KGEsIGlt
bSkgXA0KPiAgICAgICsgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaHVmbHcoKF9fdjhoaSko
X19tMTI4aSkoYSksIChpbnQpKGltbSkpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0
cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgdXBwZXIgMTYtYml0
DQo+ICAgICAgKy8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpMTZdLCB1c2luZyB0aGUgaW1tZWRpYXRlDQo+ICAgICAgKy8vLyAgICB2YWx1ZSBwYXJh
bWV0ZXIgYXMgYSBzcGVjaWZpZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAg
Ky8vLyBfX20xMjhpIF9tbV9zaHVmZmxlaGlfZXBpMTYoX19tMTI4aSBhLCBjb25zdCBpbnQgaW1t
KTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNIVUZIVyAvIFBTSFVGSFcgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gYQ0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XS4gQml0cyBbNjM6MF0g
YXJlIGNvcGllZCB0byBiaXRzDQo+ICAgICAgKy8vLyAgICBbNjM6MF0gb2YgdGhlIHJlc3VsdC4N
Cj4gICAgICArLy8vIFxwYXJhbSBpbW0NCj4gICAgICArLy8vICAgIEFuIDgtYml0IGltbWVkaWF0
ZSB2YWx1ZSBzcGVjaWZ5aW5nIHdoaWNoIGVsZW1lbnRzIHRvIGNvcHkgZnJvbSBcYSBhLiBcbg0K
PiAgICAgICsvLy8gICAgQml0c1sxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0
cyBbNzk6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzWzM6Ml0gYXJl
IHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4N
Cj4gICAgICArLy8vICAgIEJpdHNbNTo0XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJp
dHMgWzExMTo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHNbNzo2XSBh
cmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQu
IFxuDQo+ICAgICAgKy8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuDQo+ICAgICAgKy8v
LyAgICAwMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzc5OjY0XSBvZiBcYSBhLiBcbg0KPiAg
ICAgICsvLy8gICAgMDE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFs5NTo4MF0gb2YgXGEgYS4g
XG4NCj4gICAgICArLy8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMTExOjk2XSBv
ZiBcYSBhLiBcbg0KPiAgICAgICsvLy8gICAgMTE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFsx
Mjc6MTEyXSBvZiBcYSBhLiBcbg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVlcy4NCj4gICAgICArI2RlZmlu
ZSBfbW1fc2h1ZmZsZWhpX2VwaTE2KGEsIGltbSkgXA0KPiAgICAgICsgIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX3BzaHVmaHcoKF9fdjhoaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciAoaW5kZXggOC0xNSkgdmFs
dWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycw0KPiAgICAgICsvLy8gICAgb2YgWzE2IHggaThd
IGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBVTlBDS0hCVyAvIFBVTlBDS0hCVyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KPiAgICAgICsvLy8gICAgQml0cyBbNzE6NjRd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzc5OjcyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3Vs
dC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzg3OjgwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsz
OTozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzk1Ojg4XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzEwMzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQu
IFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxMTE6MTA0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs4
Nzo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzExOToxMTJdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzEwMzo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzEyNzoxMjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzExOToxMTJdIG9mIHRoZSBy
ZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsxNiB4IGk4XS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzcxOjY0XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbNzk6NzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbODc6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjQw
XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbOTU6ODhdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0
cyBbMTAzOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4gXG4N
Cj4gICAgICArLy8vICAgIEJpdHMgWzExMToxMDRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1Ojg4
XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTE5OjExMl0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzEyNzoxMjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1
bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBj
b250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV91bnBhY2toaV9lcGk4
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19H
TlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNraGJ3
MTI4ICgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAg
KyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFpKV9fYSwg
KF9fdjE2cWkpX19iLCA4LCAxNis4LCA5LCAxNis5LCAxMCwgMTYrMTAsIDExLCAxNisxMSwgMTIs
IDE2KzEyLCAxMywgMTYrMTMsIDE0LCAxNisxNCwgMTUsIDE2KzE1KTsNCj4gICAgICArI2VuZGlm
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBVbnBhY2tzIHRoZSBoaWdoLW9yZGVy
IChpbmRleCA0LTcpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCj4gICAgICAr
Ly8vICAgIFs4IHggaTE2XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIV0QgLyBQVU5QQ0tIV0QgPC9jPg0KPiAgICAgICsv
Ly8gICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzc5OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0
LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbOTU6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3
OjMyXSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTExOjk2XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs3OTo2NF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzExMTo5Nl0gb2YgdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdLg0KPiAgICAgICsvLy8gICAgQml0cyBbNzk6NjRdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBb
OTU6ODBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAg
ICAgICsvLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo4MF0gb2Yg
dGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzEyNzoxMTJdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2
YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV91bnBhY2toaV9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2h3ZDEyOCAoKF9fdjhoaSlfX2EsIChfX3Y4aGkp
X19iKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iLCA0LCA4KzQsIDUsIDgrNSwg
NiwgOCs2LCA3LCA4KzcpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4g
ICAgICArLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgKGluZGV4IDIsMykgdmFsdWVzIGZyb20g
dHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8gICAgWzQgeCBpMzJdIGFuZCBpbnRl
cmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBD
S0hEUSAvIFBVTlBDS0hEUSA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6NjRdIG9mIHRoZSBkZXN0
aW5hdGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbOTU6NjRdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzY0OjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQo+ICAgICAg
Ky8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhl
IGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGkzMl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdW5w
YWNraGlfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAg
KyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wdW5wY2toZHExMjggKChfX3Y0c2kpX19hLCAoX192NHNpKV9fYik7DQo+ICAgICAgKyNlbHNl
DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0
c2kpX19hLCAoX192NHNpKV9fYiwgMiwgNCsyLCAzLCA0KzMpOw0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgNjQt
Yml0IGVsZW1lbnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8gICAg
WzIgeCBpNjRdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGk2NF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBVTlBDS0hRRFEgLyBQVU5QQ0tIUURRIDwvYz4NCj4gICAgICArLy8vICAg
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQo+ICAgICAgKy8vLyAg
ICBCaXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSBkZXN0aW5h
dGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBpNjRdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTI3OjY0XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIGlu
dGVybGVhdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3VucGFja2hpX2VwaTY0KF9fbTEyOGkgX19hLCBf
X20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICAr
ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNraHFkcTEyOCAoKF9fdjJkaSlf
X2EsIChfX3YyZGkpX19iKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19iLCAxLCAy
KzEpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVu
cGFja3MgdGhlIGxvdy1vcmRlciAoaW5kZXggMC03KSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2
ZWN0b3JzIG9mDQo+ICAgICAgKy8vLyAgICBbMTYgeCBpOF0gYW5kIGludGVybGVhdmVzIHRoZW0g
aW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLTEJXIC8gUFVOUENL
TEJXIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYg
eCBpOF0uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMg
Wzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE1OjhdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbMjM6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0LiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzU1OjQ4
XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMzk6MzJdIGFyZSB3cml0
dGVuIHRvIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0
cyBbNDc6NDBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0LiBcbg0K
PiAgICAgICsvLy8gICAgQml0cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEwMzo5Nl0g
b2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzYzOjU2XSBhcmUgd3JpdHRl
biB0byBiaXRzIFsxMTk6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
Yg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQo+ICAgICAg
Ky8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjhdIG9mIHRoZSByZXN1
bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxNTo4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsz
MToyNF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzIzOjE2XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzMxOjI0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4g
XG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo3
Ml0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3Jp
dHRlbiB0byBiaXRzIFs5NTo4OF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJp
dHMgWzU1OjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0LiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbNjM6NTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzox
MjBdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV91bnBhY2tsb19lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAg
ICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfcHVucGNrbGJ3MTI4ICgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQo+ICAgICAg
KyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iLCAwLCAxNiswLCAxLCAxNisxLCAyLCAxNisyLCAz
LCAxNiszLCA0LCAxNis0LCA1LCAxNis1LCA2LCAxNis2LCA3LCAxNis3KTsNCj4gICAgICArI2Vu
ZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBVbnBhY2tzIHRoZSBsb3ctb3Jk
ZXIgKGluZGV4IDAtMykgdmFsdWVzIGZyb20gZWFjaCBvZiB0aGUgdHdvIDEyOC1iaXQNCj4gICAg
ICArLy8vICAgIHZlY3RvcnMgb2YgWzggeCBpMTZdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8g
YSAxMjgtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzggeCBpMTZdLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tM
V0QgLyBQVU5QQ0tMV0QgPC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs4IHggaTE2XS4NCj4gICAgICArLy8vICAgIEJpdHMgWzE1OjBdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsz
MToxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXRzIFs0NzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzk6NjRdIG9mIHRo
ZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs2Mzo0OF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQo+ICAgICAgKy8vLyAg
ICBCaXRzIFsxNTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4g
XG4NCj4gICAgICArLy8vICAgIEJpdHMgWzMxOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo0
OF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3Jp
dHRlbiB0byBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJp
dHMgWzYzOjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFp
bmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdW5wYWNrbG9fZXBpMTYoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNf
Xw0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2tsd2QxMjgg
KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0
dXJuIChfX20xMjhpKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19hLCAoX192OGhp
KV9fYiwgMCwgOCswLCAxLCA4KzEsIDIsIDgrMiwgMywgOCszKTsNCj4gICAgICArI2VuZGlmDQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBVbnBhY2tzIHRoZSBsb3ctb3JkZXIgKGlu
ZGV4IDAsMSkgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8g
ICAgWzQgeCBpMzJdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0xEUSAvIFBVTlBDS0xEUSA8L2M+DQo+ICAgICAgKy8vLyAg
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBcbg0KPiAgICAgICsvLy8g
ICAgQml0cyBbMzE6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0
aW9uLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNjM6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMg
Wzk1OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gXG4NCj4gICAgICArLy8v
ICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzY0OjMyXSBvZiB0aGUgZGVzdGlu
YXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0
cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1
ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbV91bnBhY2tsb19lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2xkcTEyOCAoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19i
KTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3No
dWZmbGV2ZWN0b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iLCAwLCA0KzAsIDEsIDQrMSk7DQo+
ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gVW5wYWNrcyB0
aGUgbG93LW9yZGVyIDY0LWJpdCBlbGVtZW50cyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YN
Cj4gICAgICArLy8vICAgIFsyIHggaTY0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURRIC8gUFVOUENLTFFEUSA8L2M+
DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0g
b2YgdGhlIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQo+ICAgICAgKy8vLyAgICBC
aXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5hdGlv
bi4gXG4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRd
IGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3VucGFja2xvX2Vw
aTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYg
X19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNr
bHFkcTEyOCAoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19iKTsNCj4gICAgICArI2Vsc2UNCj4gICAg
ICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2Es
IChfX3YyZGkpX19iLCAwLCAyKzApOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIFJldHVybnMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGFzIGEgNjQtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PVkRR
MlEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4gVGhlIGxv
d2VyIDY0IGJpdHMgYXJlIG1vdmVkIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24u
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGxv
d2VyIDY0IGJpdHMgb2YgdGhlIHBhcmFtZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
X19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tb3ZlcGk2NF9waTY0KF9fbTEy
OGkgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX202NClfX2FbMF07DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBNb3ZlcyB0aGUgNjQtYml0IG9wZXJhbmQgdG8g
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCB6ZXJvaW5nIHRoZQ0KPiAgICAgICsvLy8gICAgdXBw
ZXIgYml0cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBNT1ZEK1ZNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgdmFsdWUuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuIFRoZSBsb3dlciA2NCBi
aXRzIGNvbnRhaW4gdGhlIHZhbHVlIGZyb20NCj4gICAgICArLy8vICAgIHRoZSBvcGVyYW5kLiBU
aGUgdXBwZXIgNjQgYml0cyBhcmUgYXNzaWduZWQgemVyb3MuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tb3ZwaTY0X2Vw
aTY0KF9fbTY0IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9f
IChfX20xMjhpKShfX3YyZGkpeyAobG9uZyBsb25nKV9fYSwgMCB9Ow0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gTW92ZXMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIHRvIGEgMTI4LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3Is
IHplcm9pbmcgdGhlIHVwcGVyIGJpdHMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuIFRoZSBsb3dlciA2NCBiaXRzIGFyZSBtb3Zl
ZCB0byB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWluIHRo
ZSB2YWx1ZSBmcm9tDQo+ICAgICAgKy8vLyAgICB0aGUgb3BlcmFuZC4gVGhlIHVwcGVyIDY0IGJp
dHMgYXJlIGFzc2lnbmVkIHplcm9zLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbW92ZV9lcGk2NChfX20xMjhpIF9fYSkN
Cj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9f
bTEyOGkpX19idWlsdGluX2lhMzJfbW92cTEyOCAoKF9fdjJkaSkgX19hKTsNCj4gICAgICArI2Vs
c2UNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2Es
IF9tbV9zZXR6ZXJvX3NpMTI4KCksIDAsIDIpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgNjQtYml0IGVsZW1l
bnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8gICAgWzIgeCBkb3Vi
bGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4DQo+
ICAgICAgKy8vLyAgICBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQRCAvIFVOUENLSFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuDQo+ICAgICAgKy8vLyAgICBC
aXRzIFsxMjc6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlv
bi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTI3OjY0XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhl
IGludGVybGVhdmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3VucGFja2hpX3BkKF9fbTEyOGQgX19hLCBf
X20xMjhkIF9fYikNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICAr
ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdW5wY2tocGQgKChfX3YyZGYpX19hLCAo
X192MmRmKV9fYik7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYiwgMSwgMisxKTsNCj4gICAgICAr
I2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBVbnBhY2tzIHRoZSBsb3ct
b3JkZXIgNjQtYml0IGVsZW1lbnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycw0KPiAgICAgICsv
Ly8gICAgb2YgWzIgeCBkb3VibGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4DQo+ICAgICAgKy8vLyAgICBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0xQRCAvIFVO
UENLTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxu
DQo+ICAgICAgKy8vLyAgICBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBv
ZiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4NCj4gICAgICArLy8vICAgIEJp
dHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9u
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdW5wYWNrbG9fcGQo
X19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dO
VUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl91bnBja2xwZCAo
KF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1
cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iLCAwLCAy
KzApOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEV4
dHJhY3RzIHRoZSBzaWduIGJpdHMgb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIHRo
ZSAxMjgtYml0DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLCB6ZXJvLWV4
dGVuZHMgdGhlIHZhbHVlLCBhbmQgd3JpdGVzIGl0IHRvIHRoZQ0KPiAgICAgICsvLy8gICAgbG93
LW9yZGVyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQRCAvIE1PVk1TS1BEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgdmFsdWVzIHdpdGggc2lnbiBiaXRzIHRvDQo+ICAgICAgKy8vLyAgICBiZSBleHRyYWN0ZWQu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBUaGUgc2lnbiBiaXRzIGZyb20gZWFjaCBvZiB0aGUgZG91
YmxlLXByZWNpc2lvbiBlbGVtZW50cyBpbiBcYSBfX2EsDQo+ICAgICAgKy8vLyAgICB3cml0dGVu
IHRvIGJpdHMgWzE6MF0uIFRoZSByZW1haW5pbmcgYml0cyBhcmUgYXNzaWduZWQgdmFsdWVzIG9m
IHplcm8uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX21vdmVtYXNrX3BkKF9fbTEyOGQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BkKChfX3YyZGYpX19hKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGZyb20gdHdvDQo+ICAgICAgKy8v
LyAgICAxMjgtYml0IHZlY3RvciBwYXJhbWV0ZXJzIG9mIFsyIHggZG91YmxlXSwgdXNpbmcgdGhl
IGltbWVkaWF0ZS12YWx1ZQ0KPiAgICAgICsvLy8gICAgIHBhcmFtZXRlciBhcyBhIHNwZWNpZmll
ci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTEyOGQgX21tX3No
dWZmbGVfcGQoX19tMTI4ZCBhLCBfX20xMjhkIGIsIGNvbnN0IGludCBpKTsNCj4gICAgICArLy8v
IFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWU0hVRlBEIC8gU0hVRlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIGENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIGINCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFt
IGkNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSB2YWx1ZS4gVGhlIGxlYXN0IHNp
Z25pZmljYW50IHR3byBiaXRzIHNwZWNpZnkgd2hpY2gNCj4gICAgICArLy8vICAgIGVsZW1lbnRz
IHRvIGNvcHkgZnJvbSBcYSBhIGFuZCBcYSBiOiBcbg0KPiAgICAgICsvLy8gICAgQml0WzBdID0g
MDogbG93ZXIgZWxlbWVudCBvZiBcYSBhIGNvcGllZCB0byBsb3dlciBlbGVtZW50IG9mIHJlc3Vs
dC4gXG4NCj4gICAgICArLy8vICAgIEJpdFswXSA9IDE6IHVwcGVyIGVsZW1lbnQgb2YgXGEgYSBj
b3BpZWQgdG8gbG93ZXIgZWxlbWVudCBvZiByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRb
MV0gPSAwOiBsb3dlciBlbGVtZW50IG9mIFxhIGIgY29waWVkIHRvIHVwcGVyIGVsZW1lbnQgb2Yg
cmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0WzFdID0gMTogdXBwZXIgZWxlbWVudCBvZiBc
YSBiIGNvcGllZCB0byB1cHBlciBlbGVtZW50IG9mIHJlc3VsdC4gXG4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNo
dWZmbGVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW1fc2h1ZmZsZV9wZChhLCBiLCBpKSBc
DQo+ICAgICAgKyAgKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2h1ZnBkKChfX3YyZGYpKF9fbTEy
OGQpKGEpLCAoX192MmRmKShfX20xMjhkKShiKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50KShpKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBDYXN0cyBh
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBpbnRvIGEgMTI4
LWJpdA0KPiAgICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGlu
ZyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2FtZQ0KPiAgICAgICsvLy8gICAgYml0d2lz
ZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2Nhc3RwZF9wcyhfX20xMjhkIF9f
YSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENhc3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGludG8gYSAxMjgtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2Vy
IHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJl
c3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQo+ICAgICAgKy8vLyAg
ICBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jYXN0cGRfc2kxMjgoX19tMTI4ZCBfX2EpDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ2FzdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBpbnRvIGEgMTI4LWJpdA0KPiAgICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
aGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNhbWUNCj4g
ICAgICArLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1f
Y2FzdHBzX3BkKF9fbTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEy
OGQpX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ2FzdHMgYSAxMjgtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTI4LWJpdA0KPiAg
ICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMg
dGhlDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jYXN0cHNfc2kxMjgoX19t
MTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2E7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDYXN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgaW50byBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBv
ZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5v
IGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBzYW1lDQo+ICAgICAgKy8vLyAgICBiaXR3aXNlIHBhdHRlcm4g
YXMgdGhlIHBhcmFtZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY2FzdHNpMTI4X3BzKF9fbTEyOGkgX19hKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19hOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ2FzdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSAxMjgt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb2YgWzIgeCBkb3VibGVd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGlu
ZyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSBzYW1lDQo+ICAgICAgKy8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFt
ZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX2Nhc3RzaTEyOF9wZChfX20xMjhpIF9fYSkNCj4gICAgICArew0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4ZClfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
KyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KPiAgICAgICtleHRlcm4gIkMiIHsNCj4gICAgICAr
I2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsvLy8gSW5kaWNhdGVzIHRoYXQgYSBzcGluIGxvb3Ag
aXMgYmVpbmcgZXhlY3V0ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZg0KPiAgICAgICsvLy8gICAgb3B0
aW1pemluZyBwb3dlciBjb25zdW1wdGlvbiBkdXJpbmcgdGhlIGxvb3AuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFVU0UgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgK3ZvaWQgX21tX3BhdXNlKHZvaWQpOw0K
PiAgICAgICsNCj4gICAgICArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQo+ICAgICAgK30gLy8g
ZXh0ZXJuICJDIg0KPiAgICAgICsjZW5kaWYNCj4gICAgICArI3VuZGVmIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICsNCj4g
ICAgICArI2lmbmRlZiBfTU1fREVOT1JNQUxTX1pFUk9fT04NCj4gICAgICArI2RlZmluZSBfTU1f
REVOT1JNQUxTX1pFUk9fT04gICAoMHgwMDQwKQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArI2lm
bmRlZiBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGDQo+ICAgICAgKyNkZWZpbmUgX01NX0RFTk9STUFM
U19aRVJPX09GRiAgKDB4MDAwMCkNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsj
aWZuZGVmIF9NTV9ERU5PUk1BTFNfWkVST19NQVNLDQo+ICAgICAgKyNkZWZpbmUgX01NX0RFTk9S
TUFMU19aRVJPX01BU0sgKDB4MDA0MCkNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAg
ICsjaWZuZGVmIF9NTV9HRVRfREVOT1JNQUxTX1pFUk9fTU9ERQ0KPiAgICAgICsjZGVmaW5lIF9N
TV9HRVRfREVOT1JNQUxTX1pFUk9fTU9ERSgpIChfbW1fZ2V0Y3NyKCkgJiBfTU1fREVOT1JNQUxT
X1pFUk9fTUFTSykNCj4gICAgICArI2RlZmluZSBfTU1fU0VUX0RFTk9STUFMU19aRVJPX01PREUo
eCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fREVOT1JNQUxTX1pFUk9fTUFTSykg
fCAoeCkpKQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKyNlbmRpZiAvKiBfX0VN
TUlOVFJJTl9IICovDQo+ICAgICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvaW1taW50cmluLmggYi9p
bmNsdWRlL2ltbWludHJpbi5oDQo+ICAgICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBp
bmRleCAwMDAwMDAwLi41NDYwMDViDQo+ICAgICAgLS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBi
L2luY2x1ZGUvaW1taW50cmluLmgNCj4gICAgICBAQCAtMCwwICsxLDc1IEBADQo+ICAgICAgKy8q
PT09LS0tLSBpbW1pbnRyaW4uaCAtIEludGVsIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09PT0NCj4gICAgICArICoNCj4gICAgICArICogUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQ0KPiAgICAgICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KPiAgICAgICsgKiBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzDQo+ICAgICAgKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCj4gICAgICArICog
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl
IFNvZnR3YXJlIGlzDQo+ICAgICAgKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ICAgICAgKyAqDQo+ICAgICAgKyAqIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluDQo+ICAgICAgKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLg0KPiAgICAgICsgKg0KPiAgICAgICsgKiBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
Ug0KPiAgICAgICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gICAgICArICogRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFDQo+ICAgICAgKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCj4gICAgICArICogTElBQklMSVRZLCBXSEVU
SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg
RlJPTSwNCj4gICAgICArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KPiAgICAgICsgKiBUSEUgU09GVFdB
UkUuDQo+ICAgICAgKyAqDQo+ICAgICAgKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCj4gICAgICAr
ICovDQo+ICAgICAgKw0KPiAgICAgICsjaWZuZGVmIF9fSU1NSU5UUklOX0gNCj4gICAgICArI2Rl
ZmluZSBfX0lNTUlOVFJJTl9IDQo+ICAgICAgKw0KPiAgICAgICsjaWYgZGVmaW5lZChfX01NWF9f
KQ0KPiAgICAgICsjaW5jbHVkZSA8bW1pbnRyaW4uaD4NCj4gICAgICArI2VuZGlmDQo+ICAgICAg
Kw0KPiAgICAgICsjaWYgZGVmaW5lZChfX1NTRV9fKQ0KPiAgICAgICsjaW5jbHVkZSA8eG1taW50
cmluLmg+DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArI2lmIGRlZmluZWQoX19T
U0UyX18pDQo+ICAgICAgKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4NCj4gICAgICArI2VuZGlmDQo+
ICAgICAgKw0KPiAgICAgICsjaWYgZGVmaW5lZChfX1NTRTNfXykNCj4gICAgICArI2luY2x1ZGUg
PHBtbWludHJpbi5oPg0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKyNpZiBkZWZp
bmVkKF9fU1NTRTNfXykNCj4gICAgICArI2luY2x1ZGUgPHRtbWludHJpbi5oPg0KPiAgICAgICsj
ZW5kaWYNCj4gICAgICArDQo+ICAgICAgKyNpZiBcDQo+ICAgICAgKyAgICAoZGVmaW5lZChfX1NT
RTRfMl9fKSB8fCBkZWZpbmVkKF9fU1NFNF8xX18pKQ0KPiAgICAgICsjaW5jbHVkZSA8c21taW50
cmluLmg+DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICArI2lmIGRlZmluZWQoX19B
VlhfXykNCj4gICAgICArI2luY2x1ZGUgPGF2eGludHJpbi5oPg0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArDQo+ICAgICAgKyNpZiBkZWZpbmVkKF9fUE9QQ05UX18pDQo+ICAgICAgKyNpbmNsdWRl
IDxwb3BjbnRpbnRyaW4uaD4NCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsNCj4g
ICAgICArLyogX19iaXRfc2Nhbl9mb3J3YXJkICovDQo+ICAgICAgKy8qDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2Rl
YnVnX18pKQ0KPiAgICAgICtfYml0X3NjYW5fZm9yd2FyZChpbnQgX19BKSB7DQo+ICAgICAgKyAg
cmV0dXJuIF9fYnVpbHRpbl9jdHooX19BKTsNCj4gICAgICArfQ0KPiAgICAgICsqLw0KPiAgICAg
ICsvKiBfX2JpdF9zY2FuX3JldmVyc2UgKi8NCj4gICAgICArLyoNCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdf
XykpDQo+ICAgICAgK19iaXRfc2Nhbl9yZXZlcnNlKGludCBfX0EpIHsNCj4gICAgICArICByZXR1
cm4gMzEgLSBfX2J1aWx0aW5fY2x6KF9fQSk7DQo+ICAgICAgK30NCj4gICAgICArKi8NCj4gICAg
ICArI2VuZGlmIC8qIF9fSU1NSU5UUklOX0ggKi8NCj4gICAgICBkaWZmIC0tZ2l0IGEvaW5jbHVk
ZS9tbV9tYWxsb2MuaCBiL2luY2x1ZGUvbW1fbWFsbG9jLmgNCj4gICAgICBuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KPiAgICAgIGluZGV4IDAwMDAwMDAuLjMwNWFmZDMNCj4gICAgICAtLS0gL2Rldi9u
dWxsDQo+ICAgICAgKysrIGIvaW5jbHVkZS9tbV9tYWxsb2MuaA0KPiAgICAgIEBAIC0wLDAgKzEs
NzUgQEANCj4gICAgICArLyo9PT0tLS0tIG1tX21hbGxvYy5oIC0gQWxsb2NhdGluZyBhbmQgRnJl
ZWluZyBBbGlnbmVkIE1lbW9yeSBCbG9ja3MgLS0tLS0tLT09PQ0KPiAgICAgICsgKg0KPiAgICAg
ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQo+ICAgICAgKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs
DQo+ICAgICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCj4gICAgICArICogdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Ig
c2VsbA0KPiAgICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCj4gICAgICArICogZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gICAgICArICoNCj4g
ICAgICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gICAgICArICogYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICAgICAgKyAqDQo+ICAgICAgKyAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SDQo+ICAgICAgKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KPiAgICAgICsg
KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gICAgICArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KPiAgICAgICsg
KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KPiAgICAgICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElODQo+ICAg
ICAgKyAqIFRIRSBTT0ZUV0FSRS4NCj4gICAgICArICoNCj4gICAgICArICo9PT0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLT09PQ0KPiAgICAgICsgKi8NCj4gICAgICArDQo+ICAgICAgKyNpZm5kZWYgX19NTV9NQUxM
T0NfSA0KPiAgICAgICsjZGVmaW5lIF9fTU1fTUFMTE9DX0gNCj4gICAgICArDQo+ICAgICAgKyNp
bmNsdWRlIDxzdGRsaWIuaD4NCj4gICAgICArDQo+ICAgICAgKyNpZmRlZiBfV0lOMzINCj4gICAg
ICArI2luY2x1ZGUgPG1hbGxvYy5oPg0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsjaWZuZGVmIF9f
Y3BsdXNwbHVzDQo+ICAgICAgK2V4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24odm9pZCAqKl9fbWVt
cHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpOw0KPiAgICAgICsjZWxzZQ0K
PiAgICAgICsvLyBTb21lIHN5c3RlbXMgKGUuZy4gdGhvc2Ugd2l0aCBHTlUgbGliYykgZGVjbGFy
ZSBwb3NpeF9tZW1hbGlnbiB3aXRoIGFuDQo+ICAgICAgKy8vIGV4Y2VwdGlvbiBzcGVjaWZpZXIu
IFZpYSBhbiAiZWdyZWdpb3VzIHdvcmthcm91bmQiIGluDQo+ICAgICAgKy8vIFNlbWE6OkNoZWNr
RXF1aXZhbGVudEV4Y2VwdGlvblNwZWMsIENsYW5nIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhcyBh
IHZhbGlkDQo+ICAgICAgKy8vIHJlZGVjbGFyYXRpb24gb2YgZ2xpYmMncyBkZWNsYXJhdGlvbi4N
Cj4gICAgICArZXh0ZXJuICJDIiBpbnQgcG9zaXhfbWVtYWxpZ24odm9pZCAqKl9fbWVtcHRyLCBz
aXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpOw0KPiAgICAgICsjZW5kaWYNCj4gICAg
ICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsjaWYgIShkZWZpbmVkKF9XSU4zMikgJiYgZGVm
aW5lZChfbW1fbWFsbG9jKSkNCj4gICAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCAqX19hdHRy
aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLA0KPiAgICAgICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX21hbGxvY19fKSkNCj4gICAgICArX21t
X21hbGxvYyhzaXplX3QgX19zaXplLCBzaXplX3QgX19hbGlnbikNCj4gICAgICArew0KPiAgICAg
ICsgIGlmIChfX2FsaWduID09IDEpIHsNCj4gICAgICArICAgIHJldHVybiBtYWxsb2MoX19zaXpl
KTsNCj4gICAgICArICB9DQo+ICAgICAgKw0KPiAgICAgICsgIGlmICghKF9fYWxpZ24gJiAoX19h
bGlnbiAtIDEpKSAmJiBfX2FsaWduIDwgc2l6ZW9mKHZvaWQgKikpDQo+ICAgICAgKyAgICBfX2Fs
aWduID0gc2l6ZW9mKHZvaWQgKik7DQo+ICAgICAgKw0KPiAgICAgICsgIHZvaWQgKl9fbWFsbG9j
ZWRNZW1vcnk7DQo+ICAgICAgKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQ0KPiAgICAgICsgIF9f
bWFsbG9jZWRNZW1vcnkgPSBfX21pbmd3X2FsaWduZWRfbWFsbG9jKF9fc2l6ZSwgX19hbGlnbik7
DQo+ICAgICAgKyNlbGlmIGRlZmluZWQoX1dJTjMyKQ0KPiAgICAgICsgIF9fbWFsbG9jZWRNZW1v
cnkgPSBfYWxpZ25lZF9tYWxsb2MoX19zaXplLCBfX2FsaWduKTsNCj4gICAgICArI2Vsc2UNCj4g
ICAgICArICBpZiAocG9zaXhfbWVtYWxpZ24oJl9fbWFsbG9jZWRNZW1vcnksIF9fYWxpZ24sIF9f
c2l6ZSkpDQo+ICAgICAgKyAgICByZXR1cm4gMDsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0K
PiAgICAgICsgIHJldHVybiBfX21hbGxvY2VkTWVtb3J5Ow0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu
bGluZV9fLCBfX25vZGVidWdfXykpDQo+ICAgICAgK19tbV9mcmVlKHZvaWQgKl9fcCkNCj4gICAg
ICArew0KPiAgICAgICsgIGZyZWUoX19wKTsNCj4gICAgICArfQ0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArDQo+ICAgICAgKyNlbmRpZiAvKiBfX01NX01BTExPQ19IICovDQo+ICAgICAgZGlmZiAt
LWdpdCBhL2luY2x1ZGUvbW1pbnRyaW4uaCBiL2luY2x1ZGUvbW1pbnRyaW4uaA0KPiAgICAgIG5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ICAgICAgaW5kZXggMDAwMDAwMC4uYTVjMjgyOQ0KPiAgICAg
IC0tLSAvZGV2L251bGwNCj4gICAgICArKysgYi9pbmNsdWRlL21taW50cmluLmgNCj4gICAgICBA
QCAtMCwwICsxLDE1OTggQEANCj4gICAgICArLyo9PT0tLS0tIG1taW50cmluLmggLSBNTVggaW50
cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KPiAgICAg
ICsgKg0KPiAgICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQo+ICAgICAgKyAqIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsDQo+ICAgICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCj4gICAgICArICog
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbA0KPiAgICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCj4gICAgICArICogZnVy
bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4g
ICAgICArICoNCj4gICAgICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg
cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gICAgICArICogYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICAgICAgKyAq
DQo+ICAgICAgKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+ICAgICAgKyAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LA0KPiAgICAgICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gICAgICArICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
Ug0KPiAgICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KPiAgICAgICsgKiBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTIElODQo+ICAgICAgKyAqIFRIRSBTT0ZUV0FSRS4NCj4gICAgICArICoNCj4gICAgICArICo9
PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT09PQ0KPiAgICAgICsgKi8NCj4gICAgICArDQo+ICAgICAgKyNpZm5k
ZWYgX19NTUlOVFJJTl9IDQo+ICAgICAgKyNkZWZpbmUgX19NTUlOVFJJTl9IDQo+ICAgICAgKw0K
PiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArdHlwZWRlZiBpbnQgX19tNjQgX19hdHRy
aWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCksIF9fbWF5X2FsaWFzX18pKTsNCj4gICAgICAr
I2Vsc2UNCj4gICAgICArdHlwZWRlZiBsb25nIGxvbmcgX19tNjQgX19hdHRyaWJ1dGVfXygoX192
ZWN0b3Jfc2l6ZV9fKDgpKSk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt0eXBlZGVmIGludCBf
X202NF91IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDgpLCBfX21heV9hbGlhc19f
LCBfX2FsaWduZWRfXyAoMSkpKTsNCj4gICAgICArDQo+ICAgICAgK3R5cGVkZWYgbG9uZyBsb25n
IF9fdjFkaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsNCj4gICAgICArdHlw
ZWRlZiBpbnQgX192MnNpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyg4KSkpOw0KPiAg
ICAgICt0eXBlZGVmIHNob3J0IF9fdjRoaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18o
OCkpKTsNCj4gICAgICArdHlwZWRlZiBjaGFyIF9fdjhxaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rv
cl9zaXplX18oOCkpKTsNCj4gICAgICArdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVf
XyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsNCj4gICAgICArLyogRGVmaW5lIHRoZSBkZWZhdWx0
IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KPiAgICAgICsj
aWZkZWYgX19HTlVDX18NCj4gICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygi
bW14IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQo+ICAgICAgKyNlbmRpZg0KPiAgICAg
ICsNCj4gICAgICArLy8vIENsZWFycyB0aGUgTU1YIHN0YXRlIGJ5IHNldHRpbmcgdGhlIHN0YXRl
IG9mIHRoZSB4ODcgc3RhY2sgcmVnaXN0ZXJzDQo+ICAgICAgKy8vLyAgICB0byBlbXB0eS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBF
TU1TIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyB2b2lkDQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICtfX2F0dHJpYnV0ZV9f
KChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4g
ICAgICArI2Vsc2UNCj4gICAgICArX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f
bm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtbXgiKSkpDQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICtf
bW1fZW1wdHkodm9pZCkNCj4gICAgICArew0KPiAgICAgICsgICAgX19idWlsdGluX2lhMzJfZW1t
cygpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3Rvciwgc2V0dGluZyB0aGUgbG93ZXIgMzIgYml0cyB0byB0aGUNCj4gICAg
ICArLy8vICAgIHZhbHVlIG9mIHRoZSAzMi1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYW5kIHNldHRp
bmcgdGhlIHVwcGVyIDMyIGJpdHMgdG8gMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9faQ0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQg
aW50ZWdlciB2YWx1ZS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yLiBUaGUgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUNCj4gICAgICAr
Ly8vICAgIHBhcmFtZXRlci4gVGhlIHVwcGVyIDMyIGJpdHMgYXJlIHNldCB0byAwLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X2N2dHNpMzJfc2k2NChpbnQgX19pKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3ZlY19pbml0X3Yyc2koX19pLCAwKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIFJldHVybnMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3IgYXMgYSAzMi1iaXQNCj4gICAgICArLy8vICAgIHNpZ25lZCBpbnRlZ2Vy
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IE1PVkQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlIGNvbnRhaW5pbmcgdGhl
IGxvd2VyIDMyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXIuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2
dHNpNjRfc2kzMihfX202NCBfX20pDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiBfX2J1
aWx0aW5faWEzMl92ZWNfZXh0X3Yyc2koKF9fdjJzaSlfX20sIDApOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gQ2FzdHMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgaW50
byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9faQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQg
c2lnbmVkIGludGVnZXIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUNCj4gICAgICAr
Ly8vICAgIHBhcmFtZXRlci4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRzaTY0X202NChsb25nIGxvbmcgX19pKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9faTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIENhc3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSA2NC1i
aXQgc2lnbmVkIGludGVnZXIgdmFsdWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICArLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgc2lnbmVkIGludGVn
ZXIgY29udGFpbmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQo+ICAgICAgKy8v
LyAgICBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dG02NF9zaTY0KF9fbTY0IF9fbSkNCj4gICAg
ICArew0KPiAgICAgICsgICAgcmV0dXJuIChsb25nIGxvbmcpX19tOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgMTYtYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJv
dGggNjQtYml0IGludGVnZXIgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXJzIG9mIFs0
IHggaTE2XSBpbnRvIDgtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgYW5kIGNvbnN0cnVjdHMN
Cj4gICAgICArLy8vICAgIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGFzIHRo
ZSByZXN1bHQuIFBvc2l0aXZlIHZhbHVlcw0KPiAgICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIDB4
N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLiBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIDB4ODAN
Cj4gICAgICArLy8vICAgIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUNLU1NXQiA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIEVhY2ggMTYtYml0
IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQo+ICAgICAgKy8vLyAgICAxNi1iaXQgc2lnbmVkIGlu
dGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQo+
ICAgICAgKy8vLyAgICBzYXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4
N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLg0KPiAgICAgICsvLy8gICAgTmVnYXRpdmUgdmFsdWVz
IGxlc3MgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4gVGhlIGNvbnZlcnRlZA0KPiAg
ICAgICsvLy8gICAgWzQgeCBpOF0gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciAzMiBi
aXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVt
ZW50IGlzIHRyZWF0ZWQgYXMgYQ0KPiAgICAgICsvLy8gICAgMTYtYml0IHNpZ25lZCBpbnRlZ2Vy
IGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgc2lnbmVkIGludGVnZXIgd2l0aA0KPiAgICAg
ICsvLy8gICAgc2F0dXJhdGlvbi4gUG9zaXRpdmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFy
ZSBzYXR1cmF0ZWQgdG8gMHg3Ri4NCj4gICAgICArLy8vICAgIE5lZ2F0aXZlIHZhbHVlcyBsZXNz
IHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuIFRoZSBjb252ZXJ0ZWQNCj4gICAgICAr
Ly8vICAgIFs0IHggaThdIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0aGUgdXBwZXIgMzIgYml0cyBv
ZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgY29udmVydGVkDQo+ICAgICAgKy8vLyAgICB2
YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fcGFja3NfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhY2tzc3diKChf
X3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIENvbnZlcnRzIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDY0LWJpdCBpbnRl
Z2VyIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgcGFyYW1ldGVycyBvZiBbMiB4IGkzMl0gaW50byAx
Ni1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzLCBhbmQgY29uc3RydWN0cw0KPiAgICAgICsvLy8g
ICAgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGFzIHRoZSByZXN1bHQuIFBv
c2l0aXZlIHZhbHVlcw0KPiAgICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0
dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgdmFsdWVzIGxlc3MgdGhhbg0KPiAgICAgICsvLy8g
ICAgMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBQ0tTU0RXIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gRWFjaCAzMi1iaXQgZWxl
bWVudCBpcyB0cmVhdGVkIGFzIGENCj4gICAgICArLy8vICAgIDMyLWJpdCBzaWduZWQgaW50ZWdl
ciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIHdpdGgNCj4gICAg
ICArLy8vICAgIHNhdHVyYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RkZG
IGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLg0KPiAgICAgICsvLy8gICAgTmVnYXRpdmUgdmFsdWVz
IGxlc3MgdGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuIFRoZSBjb252ZXJ0ZWQN
Cj4gICAgICArLy8vICAgIFsyIHggaTE2XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGxvd2Vy
IDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX20yDQo+ICAgICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uIEVhY2ggMzItYml0
IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQo+ICAgICAgKy8vLyAgICAzMi1iaXQgc2lnbmVkIGlu
dGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQo+
ICAgICAgKy8vLyAgICBzYXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDB4
N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4NCj4gICAgICArLy8vICAgIE5lZ2F0aXZlIHZh
bHVlcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29udmVy
dGVkDQo+ICAgICAgKy8vLyAgICBbMiB4IGkxNl0gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSB1
cHBlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29udmVydGVkDQo+
ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fcGFja3NfcGkzMihfX202NCBfX20xLCBfX202
NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BhY2tzc2R3KChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBi
b3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgcGFyYW1ldGVycyBvZiBb
NCB4IGkxNl0gaW50byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcywgYW5kDQo+ICAgICAg
Ky8vLyAgICBjb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGFz
IHRoZSByZXN1bHQuIFZhbHVlcw0KPiAgICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIDB4RkYgYXJl
IHNhdHVyYXRlZCB0byAweEZGLiBWYWx1ZXMgbGVzcyB0aGFuIDAgYXJlIHNhdHVyYXRlZA0KPiAg
ICAgICsvLy8gICAgdG8gMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBQQUNLVVNXQiA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBh
cyBhDQo+ICAgICAgKy8vLyAgICAxNi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRl
ZCB0byBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdpdGgNCj4gICAgICArLy8vICAgIHNhdHVy
YXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZh
bHVlcyBsZXNzDQo+ICAgICAgKy8vLyAgICB0aGFuIDAgYXJlIHNhdHVyYXRlZCB0byAwLiBUaGUg
Y29udmVydGVkIFs0IHggaThdIHZhbHVlcyBhcmUgd3JpdHRlbiB0bw0KPiAgICAgICsvLy8gICAg
dGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX20y
DQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIEVh
Y2ggMTYtYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQo+ICAgICAgKy8vLyAgICAxNi1iaXQg
c2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCB1bnNpZ25lZCBpbnRl
Z2VyIHdpdGgNCj4gICAgICArLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4g
MHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzDQo+ICAgICAgKy8vLyAgICB0
aGFuIDAgYXJlIHNhdHVyYXRlZCB0byAwLiBUaGUgY29udmVydGVkIFs0IHggaThdIHZhbHVlcyBh
cmUgd3JpdHRlbiB0bw0KPiAgICAgICsvLy8gICAgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJl
c3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAg
ICArX21tX3BhY2tzX3B1MTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAg
ICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWNrdXN3YigoX192NGhpKV9f
bTEsIChfX3Y0aGkpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBVbnBh
Y2tzIHRoZSB1cHBlciAzMiBiaXRzIGZyb20gdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2Yg
WzggeCBpOF0NCj4gICAgICArLy8vICAgIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLSEJXIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAg
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbMzk6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4gXG4N
Cj4gICAgICArLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsyMzoxNl0g
b2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzU1OjQ4XSBhcmUgd3JpdHRl
biB0byBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMg
WzYzOjU2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX20yDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbOCB4IGk4XS4NCj4gICAgICArLy8vICAgIEJpdHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0
byBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNDc6
NDBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAg
ICsvLy8gICAgQml0cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjQwXSBvZiB0aGUg
cmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNjM6NTZdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQNCj4g
ICAgICArLy8vICAgIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV91bnBhY2toaV9waTgoX19tNjQgX19tMSwgX19t
NjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wdW5wY2toYncoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOw0KPiAgICAgICt9DQo+
ICAgICAgKw0KPiAgICAgICsvLy8gVW5wYWNrcyB0aGUgdXBwZXIgMzIgYml0cyBmcm9tIHR3byA2
NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGkxNl0gYW5kIGlu
dGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUFVOUENLSFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XS4NCj4gICAgICArLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNjM6NDhdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHgg
aTE2XS4NCj4gICAgICArLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsz
MToxNl0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzYzOjQ4XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBp
bnRlcmxlYXZlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3VucGFja2hpX3BpMTYo
X19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wdW5wY2tod2QoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIp
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gVW5wYWNrcyB0aGUgdXBwZXIgMzIg
Yml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQo+ICAgICAgKy8vLyAgICBb
MiB4IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLSERRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIHVwcGVyIDMyIGJpdHMgYXJlIHdyaXR0ZW4gdG8N
Cj4gICAgICArLy8vICAgIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLiBUaGUgdXBwZXIgMzIgYml0cyBhcmUgd3JpdHRlbiB0bw0KPiAgICAgICsv
Ly8gICAgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBp
bnRlcmxlYXZlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3VucGFja2hpX3BpMzIo
X19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wdW5wY2toZHEoKF9fdjJzaSlfX20xLCAoX192MnNpKV9fbTIp
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gVW5wYWNrcyB0aGUgbG93ZXIgMzIg
Yml0cyBmcm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mIFs4IHggaThdDQo+ICAgICAg
Ky8vLyAgICBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFBVTlBDS0xCVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbOCB4IGk4XS4NCj4gICAgICArLy8vICAgIEJpdHMgWzc6MF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbNzowXSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBb
MTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQuIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXRzIFsyMzoxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzk6MzJdIG9mIHRo
ZSByZXN1bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFszMToyNF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAg
ICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQo+ICAgICAg
Ky8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjhdIG9mIHRoZSByZXN1
bHQuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxNTo4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsz
MToyNF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzIzOjE2XSBhcmUg
d3JpdHRlbiB0byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzMxOjI0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThd
IGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fdW5wYWNrbG9fcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQo+ICAgICAgK3sNCj4gICAg
ICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHVucGNrbGJ3KChfX3Y4cWkpX19t
MSwgKF9fdjhxaSlfX20yKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVucGFj
a3MgdGhlIGxvd2VyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0K
PiAgICAgICsvLy8gICAgWzQgeCBpMTZdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0xXRCA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyAgICBC
aXRzIFsxNTowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0K
PiAgICAgICsvLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3OjMyXSBv
ZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vICAgIEJpdHMg
WzE1OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KPiAg
ICAgICsvLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjQ4XSBvZiB0
aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkDQo+ICAgICAgKy8vLyAgICB2
YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fdW5wYWNrbG9fcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2x3
ZCgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBVbnBhY2tzIHRoZSBsb3dlciAzMiBiaXRzIGZyb20gdHdvIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFsyIHggaTMyXSBhbmQgaW50ZXJsZWF2ZXMgdGhl
bSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQVU5QQ0tMRFEg
PC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMQ0K
PiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUg
bG93ZXIgMzIgYml0cyBhcmUgd3JpdHRlbiB0bw0KPiAgICAgICsvLy8gICAgdGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX20yDQo+ICAgICAgKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dlciAzMiBi
aXRzIGFyZSB3cml0dGVuIHRvDQo+ICAgICAgKy8vLyAgICB0aGUgdXBwZXIgMzIgYml0cyBvZiB0
aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkDQo+ICAgICAgKy8vLyAgICB2
YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fdW5wYWNrbG9fcGkzMihfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2xk
cSgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBBZGRzIGVhY2ggOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1i
aXQgaW50ZWdlciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFs4IHggaThdIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIDgtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kDQo+ICAgICAgKy8v
LyAgICA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFRoZSBsb3dlciA4IGJpdHMg
b2YgdGhlIHJlc3VsdHMgYXJlDQo+ICAgICAgKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREQiA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX20yDQo+
ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRh
aW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KPiAgICAgICsvLy8gICAgcGFyYW1ldGVycy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9hZGRfcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQo+ICAgICAgK3sNCj4gICAgICArICAg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZGIoKF9fdjhxaSlfX20xLCAoX192OHFp
KV9fbTIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQWRkcyBlYWNoIDE2LWJp
dCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KPiAg
ICAgICsvLy8gICAgb2YgWzQgeCBpMTZdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRl
Z2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZA0KPiAgICAgICsvLy8gICAgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XS4gVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJl
DQo+ICAgICAgKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
NCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gUEFERFcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzdW1z
IG9mIGJvdGgNCj4gICAgICArLy8vICAgIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYWRkX3BpMTYoX19t
NjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202
NClfX2J1aWx0aW5faWEzMl9wYWRkdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRzIGVhY2ggMzItYml0IGludGVnZXIgZWxl
bWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBv
ZiBbMiB4IGkzMl0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIgZWxlbWVudCBv
ZiB0aGUgc2Vjb25kDQo+ICAgICAgKy8vLyAgICA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIg
eCBpMzJdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0cyBhcmUNCj4gICAgICArLy8v
ICAgIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQ
QURERCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0u
DQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KPiAg
ICAgICsvLy8gICAgcGFyYW1ldGVycy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hZGRfcGkzMihfX202NCBfX20xLCBfX202
NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BhZGRkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIEFkZHMgZWFjaCA4LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9m
IHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHgg
aThdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YN
Cj4gICAgICArLy8vICAgIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHgg
aThdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbg0KPiAgICAgICsvLy8gICAgMHg3RiBhcmUg
c2F0dXJhdGVkIHRvIDB4N0YuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVy
YXRlZCB0bw0KPiAgICAgICsvLy8gICAgMHg4MC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRv
IGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBRERTQiA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCj4gICAgICArLy8vIFxw
YXJhbSBfX20yDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4
IGk4XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQo+ICAgICAgKy8vLyAgICBvZiBi
b3RoIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYWRkc19waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikN
Cj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRk
c2IoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQWRkcyBlYWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBm
aXJzdCA2NC1iaXQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFs0IHggaTE2XSB0
byB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZg0KPiAg
ICAgICsvLy8gICAgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
LiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbg0KPiAgICAgICsvLy8gICAgMHg3RkZGIGFyZSBz
YXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBzdW1zIGxlc3MgdGhhbiAweDgwMDAgYXJlDQo+
ICAgICAgKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgcmVzdWx0cyBhcmUgcGFja2Vk
IGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFs0IHggaTE2
XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBQQUREU1cgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQg
eCBpMTZdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQg
c3Vtcw0KPiAgICAgICsvLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2FkZHNfcGkx
NihfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4g
KF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGRzdygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRzIGVhY2ggOC1iaXQgdW5zaWdu
ZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlcg0KPiAgICAgICsv
Ly8gICAgdmVjdG9yIG9mIFs4IHggaThdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2ln
bmVkIGludGVnZXIgZWxlbWVudCBvZg0KPiAgICAgICsvLy8gICAgdGhlIHNlY29uZCA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFN1bXMgZ3JlYXRlciB0aGFuIDB4RkYgYXJlDQo+
ICAgICAgKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHhGRi4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBp
bnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbOCB4IGk4XS4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQQUREVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHgg
aThdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQo+ICAg
ICAgKy8vLyAgICB1bnNpZ25lZCBzdW1zIG9mIGJvdGggcGFyYW1ldGVycy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hZGRz
X3B1OChfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1
cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGR1c2IoKF9fdjhxaSlfX20xLCAoX192OHFpKV9f
bTIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQWRkcyBlYWNoIDE2LWJpdCB1
bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyDQo+ICAg
ICAgKy8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJp
dCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQNCj4gICAgICArLy8vICAgIG9mIHRoZSBzZWNvbmQg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gU3VtcyBncmVhdGVyIHRoYW4NCj4g
ICAgICArLy8vICAgIDB4RkZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkZGRi4gVGhlIHJlc3VsdHMg
YXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBv
ZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gUEFERFVTVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhl
IHNhdHVyYXRlZA0KPiAgICAgICsvLy8gICAgdW5zaWduZWQgc3VtcyBvZiBib3RoIHBhcmFtZXRl
cnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW1fYWRkc19wdTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQo+ICAgICAgK3sN
Cj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHVzdygoX192NGhp
KV9fbTEsIChfX3Y0aGkpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBT
dWJ0cmFjdHMgZWFjaCA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQg
aW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJl
c3BvbmRpbmcgOC1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZmly
c3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBUaGUgbG93ZXIgOCBiaXRzIG9m
IHRoZSByZXN1bHRzDQo+ICAgICAgKy8vLyAgICBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQkIgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgbWludWVuZHMuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRo
ZSBkaWZmZXJlbmNlcyBvZg0KPiAgICAgICsvLy8gICAgYm90aCBwYXJhbWV0ZXJzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X3N1Yl9waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3ViYigoX192OHFpKV9fbTEsIChfX3Y4cWkp
X19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdWJ0cmFjdHMgZWFjaCAx
Ni1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXINCj4gICAg
ICArLy8vICAgIHZlY3RvciBvZiBbNCB4IGkxNl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAxNi1i
aXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZmlyc3QgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlDQo+ICAg
ICAgKy8vLyAgICByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBkaWZm
ZXJlbmNlcyBvZg0KPiAgICAgICsvLy8gICAgYm90aCBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N1Yl9w
aTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YncoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIp
Ow0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3VidHJhY3RzIGVhY2ggMzItYml0
IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyDQo+ICAgICAgKy8v
LyAgICB2ZWN0b3Igb2YgWzIgeCBpMzJdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGlu
dGVnZXIgZWxlbWVudCBvZiB0aGUNCj4gICAgICArLy8vICAgIGZpcnN0IDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZQ0KPiAgICAgICsv
Ly8gICAgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzIgeCBpMzJdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFBTVUJEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4NCj4gICAgICArLy8vIFxwYXJh
bSBfX20yDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkz
Ml0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5j
ZXMgb2YNCj4gICAgICArLy8vICAgIGJvdGggcGFyYW1ldGVycy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdWJfcGkzMihf
X202NCBfX20xLCBfX202NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN1YnRyYWN0cyBlYWNoIDgtYml0IHNpZ25l
ZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQNCj4gICAgICArLy8vICAgIGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgc2ln
bmVkIGludGVnZXINCj4gICAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gUG9zaXRpdmUgcmVzdWx0cw0KPiAgICAgICsvLy8g
ICAgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLiBOZWdhdGl2ZSByZXN1
bHRzIGxlc3MgdGhhbiAweDgwDQo+ICAgICAgKy8vLyAgICBhcmUgc2F0dXJhdGVkIHRvIDB4ODAu
IFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQo+ICAgICAgKy8v
LyAgICB2ZWN0b3Igb2YgWzggeCBpOF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0
aGUgc2F0dXJhdGVkDQo+ICAgICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRl
cnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW1fc3Vic19waTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0K
PiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Vic2IoKF9fdjhxaSlf
X20xLCAoX192OHFpKV9fbTIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3Vi
dHJhY3RzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2
NC1iaXQNCj4gICAgICArLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBmcm9tIHRo
ZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgZWxl
bWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gUG9z
aXRpdmUgcmVzdWx0cw0KPiAgICAgICsvLy8gICAgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0
dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgcmVzdWx0cyBsZXNzIHRoYW4NCj4gICAgICArLy8v
ICAgIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tl
ZCBpbnRvIGEgNjQtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkx
Nl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUFNVQlNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX20y
DQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29u
dGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQo+ICAg
ICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3Vic19w
aTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnN3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20y
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN1YnRyYWN0cyBlYWNoIDgtYml0
IHVuc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdA0KPiAgICAgICsv
Ly8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyA4
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQo+ICAgICAgKy8vLyAgICBlbGVtZW50IG9mIHRoZSBmaXJz
dCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gICAgSWYgYW4gZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGxlc3MgdGhhbiB0
aGUgY29ycmVzcG9uZGluZyBlbGVtZW50DQo+ICAgICAgKy8vLyAgICBvZiB0aGUgc2Vjb25kIHZl
Y3RvciwgdGhlIHJlc3VsdCBpcyBzYXR1cmF0ZWQgdG8gMC4gVGhlIHJlc3VsdHMgYXJlDQo+ICAg
ICAgKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4
XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBQU1VCVVNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTIN
Cj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRh
aW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQo+ICAgICAg
Ky8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3Vic19wdTgo
X19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wc3VidXNiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN1YnRyYWN0cyBlYWNoIDE2LWJpdCB1
bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCA2NC1iaXQNCj4gICAgICArLy8v
ICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDE2
LWJpdCB1bnNpZ25lZA0KPiAgICAgICsvLy8gICAgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJz
dCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vICAgIElmIGFuIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBsZXNzIHRoYW4g
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudA0KPiAgICAgICsvLy8gICAgb2YgdGhlIHNlY29uZCB2
ZWN0b3IsIHRoZSByZXN1bHQgaXMgc2F0dXJhdGVkIHRvIDAuIFRoZSByZXN1bHRzIGFyZQ0KPiAg
ICAgICsvLy8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBp
MTZdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFBTVUJVU1cgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
bTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBj
b250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzYXR1cmF0ZWQNCj4g
ICAgICArLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggcGFyYW1ldGVycy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdWJz
X3B1MTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3VidXN3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlf
X20yKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE11bHRpcGxpZXMgZWFjaCAx
Ni1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0DQo+ICAgICAg
Ky8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gYnkgdGhlIGNvcnJlc3BvbmRpbmcg
MTYtYml0IHNpZ25lZCBpbnRlZ2VyDQo+ICAgICAgKy8vLyAgICBlbGVtZW50IG9mIHRoZSBzZWNv
bmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBhbmQgZ2V0IGZvdXINCj4gICAg
ICArLy8vICAgIDMyLWJpdCBwcm9kdWN0cy4gQWRkcyBhZGphY2VudCBwYWlycyBvZiBwcm9kdWN0
cyB0byBnZXQgdHdvIDMyLWJpdCBzdW1zLg0KPiAgICAgICsvLy8gICAgVGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhlc2UgdHdvIHN1bXMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCj4g
ICAgICArLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gICAgRm9yIGV4YW1wbGUsIGJpdHMgWzE1OjBdIG9mIGJvdGggcGFyYW1ldGVycyBhcmUgbXVs
dGlwbGllZCwgYml0cyBbMzE6MTZdDQo+ICAgICAgKy8vLyAgICBvZiBib3RoIHBhcmFtZXRlcnMg
YXJlIG11bHRpcGxpZWQsIGFuZCB0aGUgc3VtIG9mIGJvdGggcmVzdWx0cyBpcyB3cml0dGVuDQo+
ICAgICAgKy8vLyAgICB0byBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBNQUREV0QgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMQ0KPiAg
ICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBzdW1zIG9mDQo+ICAgICAgKy8vLyAgICBw
cm9kdWN0cyBvZiBib3RoIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWFkZF9waTE2KF9fbTY0IF9fbTEs
IF9fbTY0IF9fbTIpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfcG1hZGR3ZCgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBNdWx0aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRl
Z2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2
ZWN0b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50
ZWdlcg0KPiAgICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uIFBhY2tzIHRoZSB1cHBlcg0KPiAgICAgICsvLy8gICAgMTYg
Yml0cyBvZiB0aGUgMzItYml0IHByb2R1Y3RzIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFBNVUxIVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhl
IHVwcGVyIDE2IGJpdHMNCj4gICAgICArLy8vICAgIG9mIHRoZSBwcm9kdWN0cyBvZiBib3RoIHBh
cmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fbXVsaGlfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxodygo
X192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBNdWx0aXBsaWVzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhl
IGZpcnN0IDY0LWJpdA0KPiAgICAgICsvLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
IGJ5IHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBzaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8g
ICAgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkx
Nl0uIFBhY2tzIHRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMTYgYml0cyBvZiB0aGUgMzItYml0
IHByb2R1Y3RzIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBN
VUxMVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X20xDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDE2IGJpdHMNCj4g
ICAgICArLy8vICAgIG9mIHRoZSBwcm9kdWN0cyBvZiBib3RoIHBhcmFtZXRlcnMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1f
bXVsbG9fcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
ICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxsdygoX192NGhpKV9fbTEsIChfX3Y0
aGkpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBl
YWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdA0KPiAgICAgICsv
Ly8gICAgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0sIGJ5IHRoZSBudW1iZXINCj4gICAgICArLy8vICAgIG9mIGJpdHMgc3BlY2lmaWVkIGJ5
IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBUaGUNCj4g
ICAgICArLy8vICAgIGxvd2VyIDE2IGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRv
IGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGkxNl0uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
UFNMTFcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29u
dGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMuIElmIFxhIF9f
Y291bnQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAxNiwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gYWxs
DQo+ICAgICAgKy8vLyAgICAwLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NsbF9waTE2KF9fbTY0IF9fbSwgX19tNjQgX19j
b3VudCkNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICAgIHJl
dHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzbGx3ICgoX192NGhpKV9fbSwgKF9fdjRoaSlf
X2NvdW50KTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWls
dGluX2lhMzJfcHNsbHcoKF9fdjRoaSlfX20sIF9fY291bnQpOw0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0IHNp
Z25lZCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAg
dmVjdG9yIG9mIFs0IHggaTE2XSBieSB0aGUgbnVtYmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEg
MzItYml0IGludGVnZXIuDQo+ICAgICAgKy8vLyAgICBUaGUgbG93ZXIgMTYgYml0cyBvZiB0aGUg
cmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCj4gICAgICAr
Ly8vICAgIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU0xMVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2NvdW50DQo+ICAg
ICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGxlZnQt
c2hpZnRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLiBJZiBcYSBfX2NvdW50IGlzIGdyZWF0ZXIg
b3IgZXF1YWwgdG8gMTYsIHRoZSByZXN1bHQgaXMgc2V0IHRvIGFsbA0KPiAgICAgICsvLy8gICAg
MC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9zbGxpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkNCj4gICAgICArew0K
PiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2xsd2koKF9fdjRoaSlf
X20sIF9fY291bnQpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTGVmdC1zaGlm
dHMgZWFjaCAzMi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QNCj4gICAg
ICArLy8vICAgIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzIgeCBpMzJdLCBieSB0aGUgbnVtYmVyDQo+ICAgICAgKy8vLyAgICBvZiBiaXRzIHNwZWNpZmll
ZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4gVGhl
DQo+ICAgICAgKy8vLyAgICBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHRzIGFyZSBwYWNrZWQg
aW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzIgeCBpMzJd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fbQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBp
MzJdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJd
IGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLiBJZiBc
YSBfX2NvdW50IGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMzIsIHRoZSByZXN1bHQgaXMgc2V0IHRv
IGFsbA0KPiAgICAgICsvLy8gICAgMC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zbGxfcGkzMihfX202NCBfX20sIF9fbTY0
IF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGlu
X2lhMzJfcHNsbGQoKF9fdjJzaSlfX20sIChfX3Yyc2kpX19jb3VudCk7DQo+ICAgICAgK30NCj4g
ICAgICArDQo+ICAgICAgKy8vLyBMZWZ0LXNoaWZ0cyBlYWNoIDMyLWJpdCBzaWduZWQgaW50ZWdl
ciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVnZXINCj4gICAgICArLy8vICAgIHZlY3RvciBvZiBb
MiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSBhIDMyLWJpdCBpbnRl
Z2VyLg0KPiAgICAgICsvLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJl
IHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBvZiBb
MiB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gUFNMTEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8gICAg
QSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQNCj4g
ICAgICArLy8vICAgIHZhbHVlcy4gSWYgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRv
IDMyLCB0aGUgcmVzdWx0IGlzIHNldCB0byBhbGwNCj4gICAgICArLy8vICAgIDAuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1f
c2xsaV9waTMyKF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICAg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNsbGRpKChfX3Yyc2kpX19tLCBfX2NvdW50
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIExlZnQtc2hpZnRzIHRoZSBmaXJz
dCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYnkgdGhlIG51bWJlciBvZiBiaXRzDQo+ICAgICAg
Ky8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIu
IFRoZSBsb3dlciA2NCBiaXRzIG9mDQo+ICAgICAgKy8vLyAgICByZXN1bHQgYXJlIHJldHVybmVk
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFBTTExRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fbQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0
ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3Vu
dA0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMg
YSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWUuIElmDQo+ICAg
ICAgKy8vLyAgICAgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIDY0LCB0aGUgcmVz
dWx0IGlzIHNldCB0byAwLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NsbF9zaTY0KF9fbTY0IF9fbSwgX19tNjQgX19jb3Vu
dCkNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9w
c2xscSgoX192MWRpKV9fbSwgKF9fdjFkaSlfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIExlZnQtc2hpZnRzIHRoZSBmaXJzdCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEg
NjQtYml0IGludGVnZXIsIGJ5IHRoZQ0KPiAgICAgICsvLy8gICAgbnVtYmVyIG9mIGJpdHMgc3Bl
Y2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDMyLWJpdA0KPiAgICAg
ICsvLy8gICAgaW50ZWdlci4gVGhlIGxvd2VyIDY0IGJpdHMgb2YgcmVzdWx0IGFyZSByZXR1cm5l
ZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX20NCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJl
dGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291
bnQNCj4gICAgICArLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0
ZWQgdmFsdWUuIElmDQo+ICAgICAgKy8vLyAgICAgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVx
dWFsIHRvIDY0LCB0aGUgcmVzdWx0IGlzIHNldCB0byAwLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NsbGlfc2k2NChfX202
NCBfX20sIGludCBfX2NvdW50KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BzbGxxaSgoX192MWRpKV9fbSwgX19jb3VudCk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgaW50ZWdlciBl
bGVtZW50IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIsDQo+ICAgICAgKy8vLyAgICB3aGljaCBpcyBh
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0sIGJ5IHRoZSBudW1iZXIgb2YgYml0
cw0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGlj
aCBpcyBhIDY0LWJpdCBpbnRlZ2VyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIEhpZ2gt
b3JkZXIgYml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0aWFsIHZh
bHVlIG9mIGVhY2gNCj4gICAgICArLy8vICAgIDE2LWJpdCBlbGVtZW50LiBUaGUgMTYtYml0IHJl
c3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCj4gICAgICArLy8vICAgIHZl
Y3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSQVcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUg
NjQtYml0IGludGVnZXIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KPiAgICAgICsv
Ly8gICAgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX3NyYV9waTE2KF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkN
Cj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Jh
dygoX192NGhpKV9fbSwgKF9fdjRoaSlfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4g
ICAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFs0IHggaTE2XSBieSB0aGUg
bnVtYmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2ln
biBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUgb2YgZWFjaA0KPiAgICAgICsvLy8gICAgMTYtYml0
IGVsZW1lbnQuIFRoZSAxNi1iaXQgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50
ZWdlcg0KPiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JBVyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICAr
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8v
IFxwYXJhbSBfX2NvdW50DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
IGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQNCj4gICAgICArLy8vICAgIHZhbHVlcy4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9zcmFpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkNCj4gICAgICArew0KPiAgICAg
ICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Jhd2koKF9fdjRoaSlfX20sIF9f
Y291bnQpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUmlnaHQtc2hpZnRzIGVh
Y2ggMzItYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLA0KPiAgICAg
ICsvLy8gICAgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCBi
eSB0aGUgbnVtYmVyIG9mIGJpdHMNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgc2Vj
b25kIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlci4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduIGJp
dCBvZiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBlYWNoDQo+ICAgICAgKy8vLyAgICAzMi1iaXQgZWxl
bWVudC4gVGhlIDMyLWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2Vy
DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkFEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbQ0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVy
cHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0
LXNoaWZ0ZWQNCj4gICAgICArLy8vICAgIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zcmFfcGkzMihfX202NCBf
X20sIF9fbTY0IF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHNyYWQoKF9fdjJzaSlfX20sIChfX3Yyc2kpX19jb3VudCk7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAzMi1iaXQgaW50
ZWdlciBlbGVtZW50IG9mIGEgNjQtYml0IGludGVnZXIgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBv
ZiBbMiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSBhIDMyLWJpdCBp
bnRlZ2VyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUg
ZmlsbGVkIHdpdGggdGhlIHNpZ24gYml0IG9mIHRoZSBpbml0aWFsIHZhbHVlIG9mIGVhY2gNCj4g
ICAgICArLy8vICAgIDMyLWJpdCBlbGVtZW50LiBUaGUgMzItYml0IHJlc3VsdHMgYXJlIHBhY2tl
ZCBpbnRvIGEgNjQtYml0IGludGVnZXINCj4gICAgICArLy8vICAgIHZlY3RvciBvZiBbMiB4IGkz
Ml0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUFNSQUQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4
IGkzMl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8gICAgQSAzMi1i
aXQgaW50ZWdlciB2YWx1ZS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkDQo+ICAgICAg
Ky8vLyAgICB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3JhaV9waTMyKF9fbTY0IF9fbSwgaW50IF9fY291bnQp
DQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNy
YWRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0
IHBhcmFtZXRlciwNCj4gICAgICArLy8vICAgIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs0IHggaTE2XSwgYnkgdGhlIG51bWJlciBvZiBiaXRzDQo+ICAgICAgKy8vLyAgICBz
cGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVn
ZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVh
cmVkLiBUaGUgMTYtYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQo+ICAgICAg
Ky8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFcgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyBccGFy
YW0gX19jb3VudA0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJw
cmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgcmlnaHQt
c2hpZnRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NybF9waTE2KF9fbTY0IF9f
bSwgX19tNjQgX19jb3VudCkNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl9wc3JsdygoX192NGhpKV9fbSwgKF9fdjRoaSlfX2NvdW50KTsNCj4gICAg
ICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRl
Z2VyIGVsZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9m
IFs0IHggaTE2XSBieSB0aGUgbnVtYmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGlu
dGVnZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBj
bGVhcmVkLiBUaGUgMTYtYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQo+ICAg
ICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFcgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19jb3VudA0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBj
b250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fc3JsaV9waTE2KF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICAr
ICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNybHdpKChfX3Y0aGkpX19tLCBfX2Nv
dW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNo
IDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciwNCj4gICAgICAr
Ly8vICAgIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSwgYnkg
dGhlIG51bWJlciBvZiBiaXRzDQo+ICAgICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29u
ZCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMzItYml0IHJlc3Vs
dHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUFNSTEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAgICsv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQt
Yml0IGludGVnZXIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KPiAgICAgICsvLy8g
ICAgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tX3NybF9waTMyKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkNCj4g
ICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsZCgo
X192MnNpKV9fbSwgKF9fdjJzaSlfX2NvdW50KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgYSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFsyIHggaTMyXSBieSB0aGUgbnVt
YmVyIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IGEgMzItYml0IGludGVnZXIuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMzItYml0IHJl
c3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZl
Y3RvciBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19tDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19jb3VudA0KPiAgICAg
ICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSByaWdodC1z
aGlmdGVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3JsaV9waTMyKF9fbTY0IF9f
bSwgaW50IF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19i
dWlsdGluX2lhMzJfcHNybGRpKChfX3Yyc2kpX19tLCBfX2NvdW50KTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIFJpZ2h0LXNoaWZ0cyB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIg
cGFyYW1ldGVyIGJ5IHRoZSBudW1iZXIgb2YgYml0cw0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVk
IGJ5IHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgcGFyYW1ldGVyLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JMUSA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICAr
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0
LWJpdCBpbnRlZ2VyLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAg
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBp
bnRlZ2VyLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZS4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zcmxfc2k2NChfX202NCBf
X20sIF9fbTY0IF9fY291bnQpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHNybHEoKF9fdjFkaSlfX20sIChfX3YxZGkpX19jb3VudCk7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSaWdodC1zaGlmdHMgdGhlIGZpcnN0IHBhcmFt
ZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciwgYnkgdGhlDQo+ICAgICAgKy8vLyAgICBu
dW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdoaWNoIGlz
IGEgMzItYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vICAgIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JMUSA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20NCj4gICAgICArLy8vICAg
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBp
bnRlZ2VyLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fY291bnQNCj4gICAgICArLy8vICAgIEEgMzIt
Yml0IGludGVnZXIgdmFsdWUuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NybGlf
c2k2NChfX202NCBfX20sIGludCBfX2NvdW50KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1
cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzcmxxaSgoX192MWRpKV9fbSwgX19jb3VudCk7DQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9m
IHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBTkQgPC9jPiBpbnN0cnVjdGlvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiBib3RoDQo+ICAg
ICAgKy8vLyAgICBwYXJhbWV0ZXJzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2FuZF9zaTY0KF9fbTY0IF9fbTEsIF9fbTY0
IF9fbTIpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5k
KF9fbTEsIF9fbTIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVyZm9ybXMg
YSBiaXR3aXNlIE5PVCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXIgdmVjdG9yLCBhbmQgdGhl
bg0KPiAgICAgICsvLy8gICAgcGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0aGUgaW50ZXJtZWRp
YXRlIHJlc3VsdCBhbmQgdGhlIHNlY29uZCA2NC1iaXQNCj4gICAgICArLy8vICAgIGludGVnZXIg
dmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFBBTkROIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLiBU
aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHBhcmFtZXRlciBpcyB1c2VkDQo+ICAgICAgKy8v
LyAgICBpbiB0aGUgYml0d2lzZSBBTkQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUg
c2Vjb25kDQo+ICAgICAgKy8vLyAgICBwYXJhbWV0ZXIgYW5kIHRoZSBvbmUncyBjb21wbGVtZW50
IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYW5kbm90X3NpNjQoX19tNjQgX19tMSwg
X19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICAr
ICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5kbiAoX19tMSwgX19tMik7DQo+ICAgICAgKyNl
bHNlDQo+ICAgICAgKyAgICByZXR1cm4gX19idWlsdGluX2lhMzJfcGFuZG4oKF9fdjFkaSlfX20x
LCAoX192MWRpKV9fbTIpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4g
ICAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gNjQtYml0IGludGVnZXIgdmVj
dG9ycy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBQT1IgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19tMg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBiaXR3aXNlIE9SIG9mIGJvdGgNCj4gICAgICArLy8vICAgIHBhcmFtZXRlcnMuDQo+
ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fb3Jfc2k2NChfX202NCBfX20xLCBfX202NCBfX20yKQ0KPiAgICAgICt7DQo+ICAgICAg
KyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Bvcihf
X20xLCBfX20yKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICAgIHJldHVybiBfX2J1aWx0aW5f
aWEzMl9wb3IoKF9fdjFkaSlfX20xLCAoX192MWRpKV9fbTIpOw0KPiAgICAgICsjZW5kaWYNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBleGNsdXNp
dmUgT1Igb2YgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFhPUiA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX20xDQo+ICAgICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBfX20yDQo+ICAg
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgZXhjbHVzaXZl
IE9SIG9mIGJvdGgNCj4gICAgICArLy8vICAgIHBhcmFtZXRlcnMuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1feG9yX3NpNjQo
X19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX3B4b3IgKF9fbTEsIF9fbTIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29tcGFyZXMgdGhlIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFs4IHggaThdIHRvIGRldGVybWlu
ZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGVxdWFsIHRvIHRoZQ0KPiAg
ICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBm
YWxzZSwgMHhGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QRVFCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAg
ICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmlu
ZyB0aGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0cy4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBlcV9w
aTgoX19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJu
IChfX202NClfX2J1aWx0aW5faWEzMl9wY21wZXFiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20y
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSAxNi1iaXQg
aW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KPiAgICAg
ICsvLy8gICAgWzQgeCBpMTZdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmly
c3QgdmVjdG9yIGlzIGVxdWFsIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBl
bGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAg
IFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBD
TVBFUVcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19tMQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uDQo+ICAg
ICAgKy8vLyAgICByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcGVxX3BpMTYoX19tNjQgX19tMSwgX19tNjQg
X19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEz
Ml9wY21wZXF3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0
d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8gICAgWzIgeCBpMzJdIHRv
IGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGVxdWFsIHRv
IHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQg
dmVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxk
cyAwIGZvciBmYWxzZSwgMHhGRkZGRkZGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QRVFEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCj4gICAgICArLy8vIFxw
YXJhbSBfX20yDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4
IGkzMl0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
MiB4IGkzMl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0
cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+
ICAgICAgK19tbV9jbXBlcV9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQo+ICAgICAgK3sN
Cj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGNtcGVxZCgoX192MnNp
KV9fbTEsIChfX3Yyc2kpX19tMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b21wYXJlcyB0aGUgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIg
dmVjdG9ycyBvZg0KPiAgICAgICsvLy8gICAgWzggeCBpOF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBl
bGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZ3JlYXRlciB0aGFuDQo+ICAgICAgKy8vLyAg
ICB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwg
MHhGRiBmb3IgdHJ1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQQ01QR1RCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fbTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbTINCj4gICAgICArLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBndF9waTgoX19t
NjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202
NClfX2J1aWx0aW5faWEzMl9wY21wZ3RiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSAxNi1iaXQgaW50ZWdl
ciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8g
ICAgWzQgeCBpMTZdIHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVj
dG9yIGlzIGdyZWF0ZXIgdGhhbg0KPiAgICAgICsvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBU
aGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRiBmb3IgdHJ1ZS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01Q
R1RXIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
bTENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4N
Cj4gICAgICArLy8vIFxwYXJhbSBfX20yDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KPiAgICAg
ICsvLy8gICAgcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBndF9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJf
cGNtcGd0dygoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgMzItYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdv
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFsyIHggaTMyXSB0byBk
ZXRlcm1pbmUgaWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBncmVhdGVyIHRo
YW4NCj4gICAgICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29u
ZCB2ZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhlIGNvbXBhcmlzb24geWll
bGRzIDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGIGZvciB0cnVlLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBDTVBHVEQgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19tMQ0KPiAgICAgICsv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fbTINCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsy
IHggaTMyXS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uDQo+ICAgICAgKy8vLyAgICByZXN1
bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX2NtcGd0X3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikNCj4gICAgICAr
ew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wY21wZ3RkKChfX3Yy
c2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgdG8gemVyby4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQWE9SIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIHdpdGggYWxsIGVsZW1lbnRz
IHNldCB0byB6ZXJvLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX3NldHplcm9fc2k2NCh2b2lkKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNjQpeyAwTEwgfTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICAzMi1iaXQgaW50
ZWdlciB2YWx1ZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRp
bGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAg
ICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19pMQ0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19pMA0KPiAgICAgICsvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2V0X3BpMzIoaW50IF9faTEsIGludCBfX2kwKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3ZlY19p
bml0X3Yyc2koX19pMCwgX19pMSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdpdGggdGhlIHNw
ZWNpZmllZA0KPiAgICAgICsvLy8gICAgMTYtYml0IGludGVnZXIgdmFsdWVzLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMg
bm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAgICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fczMNCj4gICAgICArLy8vICAgIEEg
MTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0
aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fczINCj4gICAgICArLy8vICAgIEEgMTYt
Yml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUg
cmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fczENCj4gICAgICArLy8vICAgIEEgMTYtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVz
dWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fczANCj4gICAgICArLy8vICAgIEEgMTYtYml0IGlu
dGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW1fc2V0X3BpMTYoc2hvcnQgX19zMywgc2hvcnQgX19zMiwgc2hvcnQgX19zMSwg
c2hvcnQgX19zMCkNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0
aW5faWEzMl92ZWNfaW5pdF92NGhpKF9fczAsIF9fczEsIF9fczIsIF9fczMpOw0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQNCj4gICAgICArLy8vICAgIDgtYml0IGlu
dGVnZXIgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0
aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAg
ICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYjcNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YjYNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjUN
Cj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjQNCj4g
ICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjMNCj4gICAg
ICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzMxOjI0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjINCj4gICAgICAr
Ly8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIz
OjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjENCj4gICAgICArLy8v
ICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1Ojhd
IG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iMA0KPiAgICAgICsvLy8gICAg
QW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzowXSBvZiB0
aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGlu
dGVnZXIgdmVjdG9yLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX3NldF9waTgoY2hhciBfX2I3LCBjaGFyIF9fYjYsIGNoYXIg
X19iNSwgY2hhciBfX2I0LCBjaGFyIF9fYjMsIGNoYXIgX19iMiwNCj4gICAgICArICAgICAgICAg
ICAgY2hhciBfX2IxLCBjaGFyIF9fYjApDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAo
X19tNjQpX19idWlsdGluX2lhMzJfdmVjX2luaXRfdjhxaShfX2IwLCBfX2IxLCBfX2IyLCBfX2Iz
LA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fYjQsIF9fYjUsIF9fYjYsIF9fYjcpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0sIHdpdGgg
ZWFjaCBvZiB0aGUNCj4gICAgICArLy8vICAgIDMyLWJpdCBpbnRlZ2VyIHZlY3RvciBlbGVtZW50
cyBzZXQgdG8gdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmFs
dWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5j
dGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAg
ICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19pDQo+ICAg
ICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNo
IHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHgg
aTMyXS4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbV9zZXQxX3BpMzIoaW50IF9faSkNCj4gICAgICArew0KPiAgICAgICsgICAg
cmV0dXJuIF9tbV9zZXRfcGkzMihfX2ksIF9faSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSwg
d2l0aCBlYWNoIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgMTYtYml0IGludGVnZXIgdmVjdG9yIGVs
ZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDE2LWJpdCBpbnRlZ2VyDQo+ICAgICAgKy8vLyAg
ICB2YWx1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5
IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICAr
Ly8vICAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3cN
Cj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQuDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tX3NldDFfcGkxNihzaG9ydCBfX3cpDQo+ICAgICAgK3sNCj4gICAg
ICArICAgIHJldHVybiBfbW1fc2V0X3BpMTYoX193LCBfX3csIF9fdywgX193KTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzggeCBpOF0sIHdpdGggZWFjaCBvZiB0aGUNCj4gICAgICArLy8vICAgIDgtYml0IGlu
dGVnZXIgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVnZXIg
dmFsdWUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBm
dW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8v
LyAgICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+
ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBl
YWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX3NldDFfcGk4KGNoYXIgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
ICByZXR1cm4gX21tX3NldF9waTgoX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBf
X2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQo+ICAg
ICAgKy8vLyAgICB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcy4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2Vz
IG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCj4gICAgICArLy8vICAgIGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2kwDQo+ICAgICAgKy8vLyAgICBB
IDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgMzIgYml0
cyBvZiB0aGUNCj4gICAgICArLy8vICAgIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2kx
DQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9zZXRyX3BpMzIoaW50IF9faTAsIGludCBfX2kxKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
ICByZXR1cm4gX21tX3NldF9waTMyKF9faTEsIF9faTApOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciwgaW5pdGlhbGl6
ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQo+ICAgICAgKy8vLyAgICB0aGUgc3BlY2lmaWVkIDE2
LWJpdCBpbnRlZ2VyIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
aXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lm
aWMNCj4gICAgICArLy8vICAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX3cwDQo+ICAgICAgKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fdzENCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fdzINCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
dzMNCj4gICAgICArLy8vICAgIEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldHJfcGkxNihzaG9y
dCBfX3cwLCBzaG9ydCBfX3cxLCBzaG9ydCBfX3cyLCBzaG9ydCBfX3czKQ0KPiAgICAgICt7DQo+
ICAgICAgKyAgICByZXR1cm4gX21tX3NldF9waTE2KF9fdzMsIF9fdzIsIF9fdzEsIF9fdzApOw0K
PiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciwgaW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQo+ICAgICAgKy8v
LyAgICB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVnZXIgdmFsdWVzLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNv
cnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAgICAgICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYjANCj4gICAgICArLy8vICAgIEFuIDgtYml0
IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IxDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbnRl
Z2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYjINCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYjMNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYjQNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYjUNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYjYNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYjcNCj4gICAgICArLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldHJfcGk4
KGNoYXIgX19iMCwgY2hhciBfX2IxLCBjaGFyIF9fYjIsIGNoYXIgX19iMywgY2hhciBfX2I0LCBj
aGFyIF9fYjUsDQo+ICAgICAgKyAgICAgICAgICAgICBjaGFyIF9fYjYsIGNoYXIgX19iNykNCj4g
ICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIF9tbV9zZXRfcGk4KF9fYjcsIF9fYjYsIF9fYjUs
IF9fYjQsIF9fYjMsIF9fYjIsIF9fYjEsIF9fYjApOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgKw0KPiAgICAgICsvKiBBbGlh
c2VzIGZvciBjb21wYXRpYmlsaXR5LiAqLw0KPiAgICAgICsjZGVmaW5lIF9tX2VtcHR5IF9tbV9l
bXB0eQ0KPiAgICAgICsjZGVmaW5lIF9tX2Zyb21faW50IF9tbV9jdnRzaTMyX3NpNjQNCj4gICAg
ICArI2RlZmluZSBfbV9mcm9tX2ludDY0IF9tbV9jdnRzaTY0X202NA0KPiAgICAgICsjZGVmaW5l
IF9tX3RvX2ludCBfbW1fY3Z0c2k2NF9zaTMyDQo+ICAgICAgKyNkZWZpbmUgX21fdG9faW50NjQg
X21tX2N2dG02NF9zaTY0DQo+ICAgICAgKyNkZWZpbmUgX21fcGFja3Nzd2IgX21tX3BhY2tzX3Bp
MTYNCj4gICAgICArI2RlZmluZSBfbV9wYWNrc3NkdyBfbW1fcGFja3NfcGkzMg0KPiAgICAgICsj
ZGVmaW5lIF9tX3BhY2t1c3diIF9tbV9wYWNrc19wdTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcHVu
cGNraGJ3IF9tbV91bnBhY2toaV9waTgNCj4gICAgICArI2RlZmluZSBfbV9wdW5wY2tod2QgX21t
X3VucGFja2hpX3BpMTYNCj4gICAgICArI2RlZmluZSBfbV9wdW5wY2toZHEgX21tX3VucGFja2hp
X3BpMzINCj4gICAgICArI2RlZmluZSBfbV9wdW5wY2tsYncgX21tX3VucGFja2xvX3BpOA0KPiAg
ICAgICsjZGVmaW5lIF9tX3B1bnBja2x3ZCBfbW1fdW5wYWNrbG9fcGkxNg0KPiAgICAgICsjZGVm
aW5lIF9tX3B1bnBja2xkcSBfbW1fdW5wYWNrbG9fcGkzMg0KPiAgICAgICsjZGVmaW5lIF9tX3Bh
ZGRiIF9tbV9hZGRfcGk4DQo+ICAgICAgKyNkZWZpbmUgX21fcGFkZHcgX21tX2FkZF9waTE2DQo+
ICAgICAgKyNkZWZpbmUgX21fcGFkZGQgX21tX2FkZF9waTMyDQo+ICAgICAgKyNkZWZpbmUgX21f
cGFkZHNiIF9tbV9hZGRzX3BpOA0KPiAgICAgICsjZGVmaW5lIF9tX3BhZGRzdyBfbW1fYWRkc19w
aTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcGFkZHVzYiBfbW1fYWRkc19wdTgNCj4gICAgICArI2Rl
ZmluZSBfbV9wYWRkdXN3IF9tbV9hZGRzX3B1MTYNCj4gICAgICArI2RlZmluZSBfbV9wc3ViYiBf
bW1fc3ViX3BpOA0KPiAgICAgICsjZGVmaW5lIF9tX3BzdWJ3IF9tbV9zdWJfcGkxNg0KPiAgICAg
ICsjZGVmaW5lIF9tX3BzdWJkIF9tbV9zdWJfcGkzMg0KPiAgICAgICsjZGVmaW5lIF9tX3BzdWJz
YiBfbW1fc3Vic19waTgNCj4gICAgICArI2RlZmluZSBfbV9wc3Vic3cgX21tX3N1YnNfcGkxNg0K
PiAgICAgICsjZGVmaW5lIF9tX3BzdWJ1c2IgX21tX3N1YnNfcHU4DQo+ICAgICAgKyNkZWZpbmUg
X21fcHN1YnVzdyBfbW1fc3Vic19wdTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcG1hZGR3ZCBfbW1f
bWFkZF9waTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcG11bGh3IF9tbV9tdWxoaV9waTE2DQo+ICAg
ICAgKyNkZWZpbmUgX21fcG11bGx3IF9tbV9tdWxsb19waTE2DQo+ICAgICAgKyNkZWZpbmUgX21f
cHNsbHcgX21tX3NsbF9waTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcHNsbHdpIF9tbV9zbGxpX3Bp
MTYNCj4gICAgICArI2RlZmluZSBfbV9wc2xsZCBfbW1fc2xsX3BpMzINCj4gICAgICArI2RlZmlu
ZSBfbV9wc2xsZGkgX21tX3NsbGlfcGkzMg0KPiAgICAgICsjZGVmaW5lIF9tX3BzbGxxIF9tbV9z
bGxfc2k2NA0KPiAgICAgICsjZGVmaW5lIF9tX3BzbGxxaSBfbW1fc2xsaV9zaTY0DQo+ICAgICAg
KyNkZWZpbmUgX21fcHNyYXcgX21tX3NyYV9waTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcHNyYXdp
IF9tbV9zcmFpX3BpMTYNCj4gICAgICArI2RlZmluZSBfbV9wc3JhZCBfbW1fc3JhX3BpMzINCj4g
ICAgICArI2RlZmluZSBfbV9wc3JhZGkgX21tX3NyYWlfcGkzMg0KPiAgICAgICsjZGVmaW5lIF9t
X3Bzcmx3IF9tbV9zcmxfcGkxNg0KPiAgICAgICsjZGVmaW5lIF9tX3Bzcmx3aSBfbW1fc3JsaV9w
aTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcHNybGQgX21tX3NybF9waTMyDQo+ICAgICAgKyNkZWZp
bmUgX21fcHNybGRpIF9tbV9zcmxpX3BpMzINCj4gICAgICArI2RlZmluZSBfbV9wc3JscSBfbW1f
c3JsX3NpNjQNCj4gICAgICArI2RlZmluZSBfbV9wc3JscWkgX21tX3NybGlfc2k2NA0KPiAgICAg
ICsjZGVmaW5lIF9tX3BhbmQgX21tX2FuZF9zaTY0DQo+ICAgICAgKyNkZWZpbmUgX21fcGFuZG4g
X21tX2FuZG5vdF9zaTY0DQo+ICAgICAgKyNkZWZpbmUgX21fcG9yIF9tbV9vcl9zaTY0DQo+ICAg
ICAgKyNkZWZpbmUgX21fcHhvciBfbW1feG9yX3NpNjQNCj4gICAgICArI2RlZmluZSBfbV9wY21w
ZXFiIF9tbV9jbXBlcV9waTgNCj4gICAgICArI2RlZmluZSBfbV9wY21wZXF3IF9tbV9jbXBlcV9w
aTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcGNtcGVxZCBfbW1fY21wZXFfcGkzMg0KPiAgICAgICsj
ZGVmaW5lIF9tX3BjbXBndGIgX21tX2NtcGd0X3BpOA0KPiAgICAgICsjZGVmaW5lIF9tX3BjbXBn
dHcgX21tX2NtcGd0X3BpMTYNCj4gICAgICArI2RlZmluZSBfbV9wY21wZ3RkIF9tbV9jbXBndF9w
aTMyDQo+ICAgICAgKw0KPiAgICAgICsjZW5kaWYgLyogX19NTUlOVFJJTl9IICovDQo+ICAgICAg
Kw0KPiAgICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL25tbWludHJpbi5oIGIvaW5jbHVkZS9ubW1p
bnRyaW4uaA0KPiAgICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ICAgICAgaW5kZXggMDAwMDAw
MC4uMzQ4ZmI4Yw0KPiAgICAgIC0tLSAvZGV2L251bGwNCj4gICAgICArKysgYi9pbmNsdWRlL25t
bWludHJpbi5oDQo+ICAgICAgQEAgLTAsMCArMSwzMCBAQA0KPiAgICAgICsvKj09PS0tLS0gbm1t
aW50cmluLmggLSBTU0U0IGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tPT09DQo+ICAgICAgKyAqDQo+ICAgICAgKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCj4g
ICAgICArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp
bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwNCj4gICAgICArICogaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp
Z2h0cw0KPiAgICAgICsgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQo+ICAgICAgKyAqIGNvcGllcyBvZiB0
aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp
cw0KPiAgICAgICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOg0KPiAgICAgICsgKg0KPiAgICAgICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0K
PiAgICAgICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0
d2FyZS4NCj4gICAgICArICoNCj4gICAgICArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gICAgICAr
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksDQo+ICAgICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiAgICAg
ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSDQo+ICAgICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQo+ICAg
ICAgKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCj4gICAgICArICogVEhFIFNPRlRXQVJFLg0KPiAgICAg
ICsgKg0KPiAgICAgICsgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQo+ICAgICAgKyAqLw0KPiAgICAg
ICsNCj4gICAgICArI2lmbmRlZiBfX05NTUlOVFJJTl9IDQo+ICAgICAgKyNkZWZpbmUgX19OTU1J
TlRSSU5fSA0KPiAgICAgICsNCj4gICAgICArLyogVG8gbWF0Y2ggZXhwZWN0YXRpb25zIG9mIGdj
YyB3ZSBwdXQgdGhlIHNzZTQuMiBkZWZpbml0aW9ucyBpbnRvIHNtbWludHJpbi5oLA0KPiAgICAg
ICsgICBqdXN0IGluY2x1ZGUgaXQgbm93IHRoZW4uICAqLw0KPiAgICAgICsjaW5jbHVkZSA8c21t
aW50cmluLmg+DQo+ICAgICAgKyNlbmRpZiAvKiBfX05NTUlOVFJJTl9IICovDQo+ICAgICAgZGlm
ZiAtLWdpdCBhL2luY2x1ZGUvcG1taW50cmluLmggYi9pbmNsdWRlL3BtbWludHJpbi5oDQo+ICAg
ICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi4yNGI3ZDY4DQo+
ICAgICAgLS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL2luY2x1ZGUvcG1taW50cmluLmgNCj4g
ICAgICBAQCAtMCwwICsxLDMyMSBAQA0KPiAgICAgICsvKj09PS0tLS0gcG1taW50cmluLmggLSBT
U0UzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQo+
ICAgICAgKyAqDQo+ICAgICAgKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg
b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCj4gICAgICArICogb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwNCj4gICAgICArICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz
dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KPiAgICAg
ICsgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQo+ICAgICAgKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs
IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KPiAgICAgICsg
KiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Og0KPiAgICAgICsgKg0KPiAgICAgICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiAgICAgICsgKiBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gICAg
ICArICoNCj4gICAgICArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gICAgICArICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksDQo+ICAgICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiAgICAgICsgKiBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSDQo+ICAgICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQo+ICAgICAgKyAqIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4NCj4gICAgICArICogVEhFIFNPRlRXQVJFLg0KPiAgICAgICsgKg0KPiAgICAg
ICsgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQo+ICAgICAgKyAqLw0KPiAgICAgICsNCj4gICAgICAr
I2lmbmRlZiBfX1BNTUlOVFJJTl9IDQo+ICAgICAgKyNkZWZpbmUgX19QTU1JTlRSSU5fSA0KPiAg
ICAgICsNCj4gICAgICArI2luY2x1ZGUgPGVtbWludHJpbi5oPg0KPiAgICAgICsNCj4gICAgICAr
LyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhp
cyBmaWxlLiAqLw0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArI2RlZmluZSBfX0RF
RkFVTFRfRk5fQVRUUlMgXA0KPiAgICAgICsgIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f
LCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiAgICAgICsjZWxzZQ0KPiAg
ICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBcDQo+ICAgICAgKyAgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UzIiksIF9f
bWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAg
ICAgKy8vLyBMb2FkcyBkYXRhIGZyb20gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0byBl
bGVtZW50cyBpbiBhIDEyOC1iaXQNCj4gICAgICArLy8vICAgIHZlY3Rvci4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyAgICBJZiB0aGUgYWRkcmVzcyBvZiB0aGUgZGF0YSBpcyBub3QgMTYtYnl0
ZSBhbGlnbmVkLCB0aGUgaW5zdHJ1Y3Rpb24gbWF5DQo+ICAgICAgKy8vLyAgICByZWFkIHR3byBh
ZGphY2VudCBhbGlnbmVkIGJsb2NrcyBvZiBtZW1vcnkgdG8gcmV0cmlldmUgdGhlIHJlcXVlc3Rl
ZA0KPiAgICAgICsvLy8gICAgZGF0YS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTEREUVUgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIg
dG8gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50ZWdlciB2YWx1ZXMuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1vdmVk
IHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tX2xkZHF1X3NpMTI4KF9fbTEyOGkgY29uc3QgKl9fcCkNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9sZGRxdSgoY2hh
ciBjb25zdCAqKV9fcCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBBZGRzIHRo
ZSBldmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVl
cyBvZg0KPiAgICAgICsvLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWQUREU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBhbHRlcm5hdGluZyBz
dW1zIGFuZA0KPiAgICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fYWRkc3ViX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICByZXR1cm4gX19idWlsdGluX2lhMzJfYWRkc3VicHMoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEhvcml6b250YWxseSBhZGRz
IHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0KPiAgICAgICsv
Ly8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZIQUREUFMgPC9jPiBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW1zIG9m
IHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZiB0aGUNCj4gICAgICAr
Ly8vICAgIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0
aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8v
LyAgICBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzdW1zIG9mDQo+ICAgICAg
Ky8vLyAgICBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9oYWRkX3BzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfaGFkZHBz
KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMg
Y29udGFpbmVkIGluIHR3bw0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHgg
ZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZIU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8v
LyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0
b3JlZCBpbiB0aGUgbG93ZXINCj4gICAgICArLy8vICAgIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9u
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
PiAgICAgICsvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFs
dWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyDQo+ICAgICAgKy8vLyAgICBiaXRzIG9mIHRoZSBk
ZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbA0KPiAgICAgICsvLy8gICAgZGlmZmVy
ZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1faHN1Yl9wcyhfX20xMjggX19hLCBfX20x
MjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hzdWJw
cygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgb2RkLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAxMjgt
Yml0IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb2YgWzQgeCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVz
IHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0
XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WU0hEVVAgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gYW5kIFs5NTo2NF0gb2YNCj4gICAgICArLy8vICAgIHRo
ZSBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzYzOjMyXSBvZiB0aGUgc291
cmNlIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBhbmQgWzMxOjBdIG9mIHRoZQ0KPiAgICAg
ICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFuZCBkdXBsaWNhdGVkDQo+
ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX21vdmVoZHVwX3BzKF9fbTEyOCBfX2EpDQo+
ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjgpIF9fYnVpbHRpbl9pYTMyX21vdnNoZHVwICgoX192NHNmKV9fYSk7DQo+ICAgICAgKyNlbHNl
DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAo
X192NHNmKV9fYSwgMSwgMSwgMywgMyk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gRHVwbGljYXRlcyBldmVuLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAx
MjgtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0gdG8gZmxvYXQgdmFs
dWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTTERV
UCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gXG4NCj4gICAg
ICArLy8vICAgIEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzEyNzo5Nl0gYW5kIFs5NTo2NF0gb2YNCj4gICAgICArLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4g
XG4NCj4gICAgICArLy8vICAgIEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIHdyaXR0ZW4g
dG8gYml0cyBbNjM6MzJdIGFuZCBbMzE6MF0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5h
dGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQNCj4gICAgICArLy8vICAgIHZh
bHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fbW92ZWxkdXBfcHMoX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAg
ICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lh
MzJfbW92c2xkdXAgKChfX3Y0c2YpX19hKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1
cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAwLCAw
LCAyLCAyKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBBZGRzIHRoZSBldmVuLWluZGV4ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRl
eGVkIHZhbHVlcyBvZg0KPiAgICAgICsvLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4
IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkFERFNVQlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
YWx0ZXJuYXRpbmcgc3Vtcw0KPiAgICAgICsvLy8gICAgYW5kIGRpZmZlcmVuY2VzIG9mIGJvdGgg
b3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgICAgK19tbV9hZGRzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FkZHN1YnBkKChfX3Yy
ZGYpX19hLCAoX192MmRmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBI
b3Jpem9udGFsbHkgYWRkcyB0aGUgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28gMTI4
LWJpdA0KPiAgICAgICsvLy8gICAgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQRCA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAgICBUaGUgaG9yaXpvbnRh
bCBzdW0gb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlDQo+
ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBz
dW0gb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQo+ICAg
ICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0K
PiAgICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2hhZGRfcGQoX19tMTI4ZCBf
X2EsIF9fbTEyOGQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX2hhZGRwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUgcGFpcnMgb2YgdmFsdWVz
IGNvbnRhaW5lZCBpbiB0d28gMTI4LWJpdA0KPiAgICAgICsvLy8gICAgdmVjdG9ycyBvZiBbMiB4
IGRvdWJsZV0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkhTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAg
Ky8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlIG9mIHRoZSB2YWx1ZXMgaXMgc3RvcmVk
IGluIHRoZSBsb3dlciBiaXRzIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+
ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAg
ICAgICsvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZSBvZiB0aGUgdmFsdWVzIGlzIHN0
b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZg0KPiAgICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9u
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgaG9yaXpvbnRhbA0KPiAgICAgICsvLy8gICAgZGlmZmVyZW5jZXMgb2Yg
Ym90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2hzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19i
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hzdWJwZCgoX192
MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8g
TW92ZXMgYW5kIGR1cGxpY2F0ZXMgb25lIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gZG91Ymxl
LXByZWNpc2lvbg0KPiAgICAgICsvLy8gICAgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICAr
Ly8vIF9fbTEyOGQgX21tX2xvYWRkdXBfcGQoZG91YmxlIGNvbnN0ICpkcCk7DQo+ICAgICAgKy8v
LyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkREVVAgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gZHANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gYmUgbW92ZWQgYW5kIGR1cGxpY2F0ZWQuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5n
IHRoZSBtb3ZlZCBhbmQNCj4gICAgICArLy8vICAgIGR1cGxpY2F0ZWQgdmFsdWVzLg0KPiAgICAg
ICsjZGVmaW5lICAgICAgICBfbW1fbG9hZGR1cF9wZChkcCkgICAgICAgIF9tbV9sb2FkMV9wZChk
cCkNCj4gICAgICArDQo+ICAgICAgKy8vLyBNb3ZlcyBhbmQgZHVwbGljYXRlcyB0aGUgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZSBpbiB0aGUgbG93ZXIgYml0cyBvZg0KPiAgICAgICsvLy8gICAgYSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMg
c3RvcmVkIGluIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WRERVUCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLiBCaXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzDQo+ICAgICAgKy8vLyAgICBbMTI3
OjY0XSBhbmQgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFu
ZA0KPiAgICAgICsvLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tb3ZlZHVwX3Bk
KF9fbTEyOGQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAg
ICsgIHJldHVybiBfbW1fc2h1ZmZsZV9wZCAoX19hLCBfX2EsIF9NTV9TSFVGRkxFMiAoMCwwKSk7
DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwgMCk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gRXN0YWJsaXNoZXMgYSBsaW5lYXIgYWRkcmVzcyBt
ZW1vcnkgcmFuZ2UgdG8gYmUgbW9uaXRvcmVkIGFuZCBwdXRzDQo+ICAgICAgKy8vLyAgICB0aGUg
cHJvY2Vzc29yIGluIHRoZSBtb25pdG9yIGV2ZW50IHBlbmRpbmcgc3RhdGUuIERhdGEgc3RvcmVk
IGluIHRoZQ0KPiAgICAgICsvLy8gICAgbW9uaXRvcmVkIGFkZHJlc3MgcmFuZ2UgY2F1c2VzIHRo
ZSBwcm9jZXNzb3IgdG8gZXhpdCB0aGUgcGVuZGluZyBzdGF0ZS4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT05JVE9SIDwvYz4gaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsv
Ly8gICAgVGhlIG1lbW9yeSByYW5nZSB0byBiZSBtb25pdG9yZWQuIFRoZSBzaXplIG9mIHRoZSBy
YW5nZSBpcyBkZXRlcm1pbmVkIGJ5DQo+ICAgICAgKy8vLyAgICBDUFVJRCBmdW5jdGlvbiAwMDAw
XzAwMDVoLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fZXh0ZW5zaW9ucw0KPiAgICAgICsvLy8gICAg
T3B0aW9uYWwgZXh0ZW5zaW9ucyBmb3IgdGhlIG1vbml0b3Jpbmcgc3RhdGUuDQo+ICAgICAgKy8v
LyBccGFyYW0gX19oaW50cw0KPiAgICAgICsvLy8gICAgT3B0aW9uYWwgaGludHMgZm9yIHRoZSBt
b25pdG9yaW5nIHN0YXRlLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbW9uaXRvcih2b2lkIGNvbnN0ICpfX3AsIHVuc2lnbmVk
IF9fZXh0ZW5zaW9ucywgdW5zaWduZWQgX19oaW50cykNCj4gICAgICArew0KPiAgICAgICsgIF9f
YnVpbHRpbl9pYTMyX21vbml0b3IoKHZvaWQgKilfX3AsIF9fZXh0ZW5zaW9ucywgX19oaW50cyk7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBVc2VkIHdpdGggdGhlIE1PTklUT1Ig
aW5zdHJ1Y3Rpb24gdG8gd2FpdCB3aGlsZSB0aGUgcHJvY2Vzc29yIGlzIGluDQo+ICAgICAgKy8v
LyAgICB0aGUgbW9uaXRvciBldmVudCBwZW5kaW5nIHN0YXRlLiBEYXRhIHN0b3JlZCBpbiB0aGUg
bW9uaXRvcmVkIGFkZHJlc3MNCj4gICAgICArLy8vICAgIHJhbmdlIGNhdXNlcyB0aGUgcHJvY2Vz
c29yIHRvIGV4aXQgdGhlIHBlbmRpbmcgc3RhdGUuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTVdBSVQgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19leHRlbnNpb25zDQo+ICAgICAgKy8v
LyAgICBPcHRpb25hbCBleHRlbnNpb25zIGZvciB0aGUgbW9uaXRvcmluZyBzdGF0ZSwgd2hpY2gg
bWF5IHZhcnkgYnkNCj4gICAgICArLy8vICAgIHByb2Nlc3Nvci4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2hpbnRzDQo+ICAgICAgKy8vLyAgICBPcHRpb25hbCBoaW50cyBmb3IgdGhlIG1vbml0b3Jp
bmcgc3RhdGUsIHdoaWNoIG1heSB2YXJ5IGJ5IHByb2Nlc3Nvci4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX213YWl0KHVuc2ln
bmVkIF9fZXh0ZW5zaW9ucywgdW5zaWduZWQgX19oaW50cykNCj4gICAgICArew0KPiAgICAgICsg
IF9fYnVpbHRpbl9pYTMyX213YWl0KF9fZXh0ZW5zaW9ucywgX19oaW50cyk7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArDQo+
ICAgICAgKyNlbmRpZiAvKiBfX1BNTUlOVFJJTl9IICovDQo+ICAgICAgZGlmZiAtLWdpdCBhL2lu
Y2x1ZGUvcG9wY250aW50cmluLmggYi9pbmNsdWRlL3BvcGNudGludHJpbi5oDQo+ICAgICAgbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi5iYmEwNTczDQo+ICAgICAg
LS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL2luY2x1ZGUvcG9wY250aW50cmluLmgNCj4gICAg
ICBAQCAtMCwwICsxLDEwMiBAQA0KPiAgICAgICsvKj09PS0tLS0gcG9wY250aW50cmluLmggLSBQ
T1BDTlQgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQo+ICAg
ICAgKyAqDQo+ICAgICAgKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCj4gICAgICArICogb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwNCj4gICAgICArICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp
Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KPiAgICAgICsg
KiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp
Y2Vuc2UsIGFuZC9vciBzZWxsDQo+ICAgICAgKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KPiAgICAgICsgKiBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0K
PiAgICAgICsgKg0KPiAgICAgICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiAgICAgICsgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gICAgICAr
ICoNCj4gICAgICArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gICAgICArICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksDQo+ICAgICAgKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiAgICAgICsgKiBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U
SEVSDQo+ICAgICAgKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQo+ICAgICAgKyAqIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4NCj4gICAgICArICogVEhFIFNPRlRXQVJFLg0KPiAgICAgICsgKg0KPiAgICAgICsg
Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPT09DQo+ICAgICAgKyAqLw0KPiAgICAgICsNCj4gICAgICArI2lm
bmRlZiBfX1BPUENOVElOVFJJTl9IDQo+ICAgICAgKyNkZWZpbmUgX19QT1BDTlRJTlRSSU5fSA0K
PiAgICAgICsNCj4gICAgICArLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRo
ZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4g
ICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s
aW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQo+ICAgICAgKyNlbHNl
DQo+ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3
YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygicG9wY250IikpKQ0KPiAgICAg
ICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRz
IGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX0ENCj4gICAg
ICArLy8vICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRz
IHdpdGggdmFsdWUgMSBpbiB0aGUNCj4gICAgICArLy8vICAgIHNvdXJjZSBvcGVyYW5kLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9wb3BjbnRfdTMyKHVuc2lnbmVkIGludCBfX0EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1
cm4gX19idWlsdGluX3BvcGNvdW50KF9fQSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZp
bmcgYSB2YWx1ZSBvZiAxLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX0ENCj4gICAgICArLy8vICAgIEEgc2lnbmVkIDMyLWJpdCBp
bnRlZ2VyIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNv
bnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdpdGggdmFsdWUgMSBpbiB0aGUNCj4gICAgICAr
Ly8vICAgIHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19wb3BjbnQzMihpbnQgX19BKQ0KPiAgICAgICt7DQo+
ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudChfX0EpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsjaWZkZWYgX194ODZfNjRfXw0KPiAgICAgICsvLy8gQ291bnRzIHRoZSBu
dW1iZXIgb2YgYml0cyBpbiB0aGUgc291cmNlIG9wZXJhbmQgaGF2aW5nIGEgdmFsdWUgb2YgMS4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQT1BDTlQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19BDQo+ICAgICAgKy8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBvcGVyYW5k
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBu
dW1iZXIgb2YgYml0cyB3aXRoIHZhbHVlIDEgaW4gdGhlDQo+ICAgICAgKy8vLyAgICBzb3VyY2Ug
b3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fcG9wY250X3U2NCh1bnNpZ25lZCBsb25nIGxvbmcgX19BKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudGxsKF9fQSk7DQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRz
IGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBPUENOVCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX0ENCj4gICAg
ICArLy8vICAgIEEgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdp
dGggdmFsdWUgMSBpbiB0aGUNCj4gICAgICArLy8vICAgIHNvdXJjZSBvcGVyYW5kLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19wb3BjbnQ2NChsb25nIGxvbmcgX19BKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9f
YnVpbHRpbl9wb3Bjb3VudGxsKF9fQSk7DQo+ICAgICAgK30NCj4gICAgICArI2VuZGlmIC8qIF9f
eDg2XzY0X18gKi8NCj4gICAgICArDQo+ICAgICAgKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArDQo+ICAgICAgKyNlbmRpZiAvKiBfX1BPUENOVElOVFJJTl9IICovDQo+ICAgICAg
ZGlmZiAtLWdpdCBhL2luY2x1ZGUvc21taW50cmluLmggYi9pbmNsdWRlL3NtbWludHJpbi5oDQo+
ICAgICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi40ZjFkNjM3
DQo+ICAgICAgLS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL2luY2x1ZGUvc21taW50cmluLmgN
Cj4gICAgICBAQCAtMCwwICsxLDI1MDQgQEANCj4gICAgICArLyo9PT0tLS0tIHNtbWludHJpbi5o
IC0gU1NFNCBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09
PQ0KPiAgICAgICsgKg0KPiAgICAgICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5DQo+ICAgICAgKyAq
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
ICJTb2Z0d2FyZSIpLCB0byBkZWFsDQo+ICAgICAgKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCj4g
ICAgICArICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KPiAgICAgICsgKiBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCj4gICAg
ICArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoNCj4gICAgICArICoNCj4gICAgICArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gICAgICAr
ICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+
ICAgICAgKyAqDQo+ICAgICAgKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+ICAgICAgKyAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLA0KPiAgICAgICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gICAgICArICogQVVU
SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF
UyBPUiBPVEhFUg0KPiAgICAgICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KPiAgICAgICsgKiBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElODQo+ICAgICAgKyAqIFRIRSBTT0ZUV0FSRS4NCj4gICAgICArICoNCj4g
ICAgICArICo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KPiAgICAgICsgKi8NCj4gICAgICArDQo+ICAg
ICAgKyNpZm5kZWYgX19TTU1JTlRSSU5fSA0KPiAgICAgICsjZGVmaW5lIF9fU01NSU5UUklOX0gN
Cj4gICAgICArDQo+ICAgICAgKyNpbmNsdWRlIDx0bW1pbnRyaW4uaD4NCj4gICAgICArDQo+ICAg
ICAgKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGlu
IHRoaXMgZmlsZS4gKi8NCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyNkZWZpbmUg
X19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5
c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsjZGVm
aW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg
X19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTQuMSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygx
MjgpKSkNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0IFJvdW5kaW5n
IG1hY3Jvcy4gKi8NCj4gICAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FQVJFU1RfSU5UICAg
IDB4MDANCj4gICAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FR19JTkYgICAgICAgIDB4MDEN
Cj4gICAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX1BPU19JTkYgICAgICAgIDB4MDINCj4gICAg
ICArI2RlZmluZSBfTU1fRlJPVU5EX1RPX1pFUk8gICAgICAgICAgIDB4MDMNCj4gICAgICArI2Rl
ZmluZSBfTU1fRlJPVU5EX0NVUl9ESVJFQ1RJT04gICAgIDB4MDQNCj4gICAgICArDQo+ICAgICAg
KyNkZWZpbmUgX01NX0ZST1VORF9SQUlTRV9FWEMgICAgICAgICAweDAwDQo+ICAgICAgKyNkZWZp
bmUgX01NX0ZST1VORF9OT19FWEMgICAgICAgICAgICAweDA4DQo+ICAgICAgKw0KPiAgICAgICsj
ZGVmaW5lIF9NTV9GUk9VTkRfTklOVCAgICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9NTV9G
Uk9VTkRfVE9fTkVBUkVTVF9JTlQpDQo+ICAgICAgKyNkZWZpbmUgX01NX0ZST1VORF9GTE9PUiAg
ICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9UT19ORUdfSU5GKQ0KPiAgICAg
ICsjZGVmaW5lIF9NTV9GUk9VTkRfQ0VJTCAgICAgIChfTU1fRlJPVU5EX1JBSVNFX0VYQyB8IF9N
TV9GUk9VTkRfVE9fUE9TX0lORikNCj4gICAgICArI2RlZmluZSBfTU1fRlJPVU5EX1RSVU5DICAg
ICAoX01NX0ZST1VORF9SQUlTRV9FWEMgfCBfTU1fRlJPVU5EX1RPX1pFUk8pDQo+ICAgICAgKyNk
ZWZpbmUgX01NX0ZST1VORF9SSU5UICAgICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZS
T1VORF9DVVJfRElSRUNUSU9OKQ0KPiAgICAgICsjZGVmaW5lIF9NTV9GUk9VTkRfTkVBUkJZSU5U
IChfTU1fRlJPVU5EX05PX0VYQyB8IF9NTV9GUk9VTkRfQ1VSX0RJUkVDVElPTikNCj4gICAgICAr
DQo+ICAgICAgKy8vLyBSb3VuZHMgdXAgZWFjaCBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSB0byBhbg0KPiAgICAgICsvLy8gICAgaW50ZWdlciBhbmQgcmV0dXJu
cyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8g
ICAgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBf
X20xMjggX21tX2NlaWxfcHMoX19tMTI4IFgpOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZST1VORFBTIC8gUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIHZhbHVlcyB0byBiZSByb3VuZGVkIHVwLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVl
cy4NCj4gICAgICArI2RlZmluZSBfbW1fY2VpbF9wcyhYKSAgICAgICBfbW1fcm91bmRfcHMoKFgp
LCBfTU1fRlJPVU5EX0NFSUwpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gUm91bmRzIHVwIGVhY2gg
ZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRvIGFuDQo+ICAg
ICAgKy8vLyAgICBpbnRlZ2VyIGFuZCByZXR1cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBpbiBhIDEy
OC1iaXQgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhkIF9tbV9jZWlsX3BkKF9fbTEyOGQg
WCk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQgLyBST1VORFBEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFgNCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHZhbHVlcyB0byBiZSByb3Vu
ZGVkIHVwLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21t
X2NlaWxfcGQoWCkgICAgICAgX21tX3JvdW5kX3BkKChYKSwgX01NX0ZST1VORF9DRUlMKQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmly
c3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bw0KPiAgICAgICsvLy8gICAgdGhlIGNvcnJlc3Bv
bmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBv
Zg0KPiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5kcyB1cCB0aGUgbG93ZXN0IGVsZW1l
bnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb3BlcmFuZCB0
byBhbiBpbnRlZ2VyIGFuZCBjb3BpZXMgaXQgdG8gdGhlIGxvd2VzdCBlbGVtZW50IG9mIHRoZSAx
MjgtYml0DQo+ICAgICAgKy8vLyAgICByZXN1bHQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4IF9tbV9jZWlsX3NzKF9f
bTEyOCBYLCBfX20xMjggWSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1Mg
LyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIFgNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRo
ZSB2YWx1ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlDQo+ICAgICAgKy8vLyAgICBjb3Bp
ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHBhcmFtIFkNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
IFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMNCj4gICAgICArLy8vICAgIHJvdW5k
ZWQgdXAgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBhbmQgY29waWVkIHRvIHRoZSBjb3JyZXNwb25k
aW5nIGJpdHMNCj4gICAgICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGll
ZCBhbmQgcm91bmRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9t
bV9jZWlsX3NzKFgsIFkpICAgIF9tbV9yb3VuZF9zcygoWCksIChZKSwgX01NX0ZST1VORF9DRUlM
KQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvcGllcyB0aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUg
Zmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byB0aGUNCj4gICAgICArLy8vICAgIGNvcnJl
c3BvbmRpbmcgdXBwZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4NCj4gICAgICArLy8vICAgIFJvdW5kcyB1cCB0aGUgbG93ZXIgZWxlbWVudCBv
ZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gYW4NCj4gICAgICArLy8vICAg
IGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJp
dCByZXN1bHQgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhkIF9tbV9jZWlsX3NkKF9fbTEy
OGQgWCwgX19tMTI4ZCBZKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRTRCAv
IFJPVU5EU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gWA0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRo
ZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcw0KPiAgICAgICsvLy8gICAgY29waWVk
IHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxw
YXJhbSBZDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4g
VGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcw0KPiAgICAgICsvLy8gICAgcm91bmRl
ZCB1cCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRp
bmcgYml0cw0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGll
ZCBhbmQgcm91bmRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9t
bV9jZWlsX3NkKFgsIFkpICAgIF9tbV9yb3VuZF9zZCgoWCksIChZKSwgX01NX0ZST1VORF9DRUlM
KQ0KPiAgICAgICsNCj4gICAgICArLy8vIFJvdW5kcyBkb3duIGVhY2ggZWxlbWVudCBvZiB0aGUg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4NCj4gICAgICArLy8vICAgIGFuIGlu
dGVnZXIgYW5kIHJldHVybnMgdGhlIHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YNCj4gICAgICArLy8vICAgIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29k
ZQ0KPiAgICAgICsvLy8gX19tMTI4IF9tbV9mbG9vcl9wcyhfX20xMjggWCk7DQo+ICAgICAgKy8v
LyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUFMgLyBST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFgNCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdmFsdWVzIHRvIGJlIHJvdW5kZWQgZG93bi4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21tX2Zsb29yX3BzKFgpICAg
ICAgX21tX3JvdW5kX3BzKChYKSwgX01NX0ZST1VORF9GTE9PUikNCj4gICAgICArDQo+ICAgICAg
Ky8vLyBSb3VuZHMgZG93biBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSB0byBhbg0KPiAgICAgICsvLy8gICAgaW50ZWdlciBhbmQgcmV0dXJucyB0aGUg
cm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzIg
eCBkb3VibGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4
ZCBfbW1fZmxvb3JfcGQoX19tMTI4ZCBYKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Uk9VTkRQRCAvIFJPVU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gWA0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW1f
Zmxvb3JfcGQoWCkgICAgICBfbW1fcm91bmRfcGQoKFgpLCBfTU1fRlJPVU5EX0ZMT09SKQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvcGllcyB0aHJlZSB1cHBlciBlbGVtZW50cyBvZiB0aGUgZmly
c3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0bw0KPiAgICAgICsvLy8gICAgdGhlIGNvcnJlc3Bv
bmRpbmcgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBv
Zg0KPiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0uIFJvdW5kcyBkb3duIHRoZSBsb3dlc3QgZWxl
bWVudCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBvcGVyYW5k
IHRvIGFuIGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhl
IDEyOC1iaXQNCj4gICAgICArLy8vICAgIHJlc3VsdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjggX21tX2Zsb29yX3Nz
KF9fbTEyOCBYLCBfX20xMjggWSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5E
U1MgLyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIFgNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
IFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJpdHMgWzEyNzozMl0gYXJlDQo+ICAgICAgKy8vLyAgICBj
b3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsv
Ly8gXHBhcmFtIFkNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMNCj4gICAgICArLy8vICAgIHJv
dW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNvcnJl
c3BvbmRpbmcgYml0cw0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
Y29waWVkIGFuZCByb3VuZGVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAgICAgKyNkZWZp
bmUgX21tX2Zsb29yX3NzKFgsIFkpICAgX21tX3JvdW5kX3NzKChYKSwgKFkpLCBfTU1fRlJPVU5E
X0ZMT09SKQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvcGllcyB0aGUgdXBwZXIgZWxlbWVudCBv
ZiB0aGUgZmlyc3QgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byB0aGUNCj4gICAgICArLy8vICAg
IGNvcnJlc3BvbmRpbmcgdXBwZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vICAgIFJvdW5kcyBkb3duIHRoZSBsb3dlciBl
bGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byBhbg0KPiAgICAg
ICsvLy8gICAgaW50ZWdlciBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlciBlbGVtZW50IG9mIHRo
ZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFsyIHggZG91YmxlXS4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTEyOGQgX21tX2Zsb29y
X3NkKF9fbTEyOGQgWCwgX19tMTI4ZCBZKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Uk9VTkRTRCAvIFJPVU5EU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gWA0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcw0KPiAgICAgICsvLy8g
ICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBZDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcw0KPiAgICAgICsvLy8g
ICAgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYW5kIGNvcGllZCB0byB0aGUg
Y29ycmVzcG9uZGluZyBiaXRzDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmlu
ZyB0aGUgY29waWVkIGFuZCByb3VuZGVkDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMuDQo+ICAgICAg
KyNkZWZpbmUgX21tX2Zsb29yX3NkKFgsIFkpICAgX21tX3JvdW5kX3NkKChYKSwgKFkpLCBfTU1f
RlJPVU5EX0ZMT09SKQ0KPiAgICAgICsNCj4gICAgICArLy8vIFJvdW5kcyBlYWNoIGVsZW1lbnQg
b2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGFuDQo+ICAgICAgKy8vLyAg
ICBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJvbCBzcGVjaWZp
ZWQgYnkgdGhlIHNlY29uZA0KPiAgICAgICsvLy8gICAgYXJndW1lbnQgYW5kIHJldHVybnMgdGhl
IHJvdW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFs0
IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4
IF9tbV9yb3VuZF9wcyhfX20xMjggWCwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNv
ZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZST1VORFBTIC8gUk9VTkRQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFu
IGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4N
Cj4gICAgICArLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0KPiAgICAgICsvLy8g
ICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQo+ICAgICAgKy8v
LyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuDQo+ICAgICAgKy8vLyAg
ICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbg0KPiAgICAgICsvLy8gICAgQml0
IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQo+ICAgICAgKy8vLyAgICAg
IDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCj4gICAgICArLy8vICAgICAgMTogVXNlIHRo
ZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF0gY29u
dGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KPiAgICAgICsvLy8gICAg
ICAwMDogTmVhcmVzdCBcbg0KPiAgICAgICsvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBu
ZWdhdGl2ZSBpbmZpbml0eSkgXG4NCj4gICAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJk
IHBvc2l0aXZlIGluZmluaXR5KSBcbg0KPiAgICAgICsvLy8gICAgICAxMTogVHJ1bmNhdGVkDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9yb3VuZF9wcyhY
LCBNKSBcDQo+ICAgICAgKyAgKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yb3VuZHBzKChfX3Y0c2Yp
KF9fbTEyOCkoWCksIChNKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb3BpZXMgdGhyZWUgdXBw
ZXIgZWxlbWVudHMgb2YgdGhlIGZpcnN0IDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8NCj4gICAg
ICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHRocmVlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSAx
MjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFs0IHggZmxvYXRdLiBSb3Vu
ZHMgdGhlIGxvd2VzdCBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3INCj4gICAg
ICArLy8vICAgIG9wZXJhbmQgdG8gYW4gaW50ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJv
dW5kaW5nIGNvbnRyb2wgc3BlY2lmaWVkDQo+ICAgICAgKy8vLyAgICBieSB0aGUgdGhpcmQgYXJn
dW1lbnQgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQN
Cj4gICAgICArLy8vICAgIHJlc3VsdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjggX21tX3JvdW5kX3NzKF9fbTEyOCBY
LCBfX20xMjggWSwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZS
T1VORFNTIC8gUk9VTkRTUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBUaGUgdmFsdWVzIHN0b3JlZCBpbiBiaXRzIFsxMjc6MzJdIGFyZQ0KPiAgICAgICsvLy8g
ICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBZDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzMxOjBdIGlzDQo+ICAgICAgKy8vLyAg
ICByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgdXNpbmcgdGhlIHNwZWNpZmllZCByb3Vu
ZGluZyBjb250cm9sIGFuZA0KPiAgICAgICsvLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25k
aW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8v
LyAgICBBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSByb3VuZGluZyBvcGVyYXRp
b24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4NCj4gICAg
ICArLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZhbHVlOiBcbg0KPiAg
ICAgICsvLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNlcHRpb24gaXMgdXNlZCBcbg0KPiAgICAg
ICsvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQgXG4NCj4gICAgICArLy8v
ICAgIEJpdCBbMl0gaXMgdGhlIHJvdW5kaW5nIGNvbnRyb2wgc291cmNlOiBcbg0KPiAgICAgICsv
Ly8gICAgICAwOiBVc2UgYml0cyBbMTowXSBvZiBcYSBNIFxuDQo+ICAgICAgKy8vLyAgICAgIDE6
IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsx
OjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4NCj4gICAgICAr
Ly8vICAgICAgMDA6IE5lYXJlc3QgXG4NCj4gICAgICArLy8vICAgICAgMDE6IERvd253YXJkICh0
b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkpIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBVcHdhcmQg
KHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkgXG4NCj4gICAgICArLy8vICAgICAgMTE6IFRydW5j
YXRlZA0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIHJvdW5kZWQNCj4gICAgICArLy8vICAgIHZhbHVl
cy4NCj4gICAgICArI2RlZmluZSBfbW1fcm91bmRfc3MoWCwgWSwgTSkgXA0KPiAgICAgICsgIChf
X20xMjgpX19idWlsdGluX2lhMzJfcm91bmRzcygoX192NHNmKShfX20xMjgpKFgpLCBcDQo+ICAg
ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoWSks
IChNKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBSb3VuZHMgZWFjaCBlbGVtZW50IG9mIHRoZSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYW4NCj4gICAgICArLy8vICAgIGludGVn
ZXIgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByb3VuZGluZyBjb250cm9sIHNwZWNpZmllZCBieSB0
aGUgc2Vjb25kDQo+ICAgICAgKy8vLyAgICBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgcm91bmRl
ZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzIgeCBkb3Vi
bGVdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4ZCBfbW1f
cm91bmRfcGQoX19tMTI4ZCBYLCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlJPVU5EUEQgLyBST1VORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIFgNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGlu
dGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCj4g
ICAgICArLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQo+ICAgICAgKy8vLyAg
ICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuDQo+ICAgICAgKy8vLyAgICAg
IDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbg0KPiAgICAgICsvLy8gICAgQml0IFsy
XSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6
IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCj4gICAgICArLy8vICAgICAgMTogVXNlIHRoZSBj
dXJyZW50IE1YQ1NSIHNldHRpbmcgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF0gY29udGFp
biB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KPiAgICAgICsvLy8gICAgICAw
MDogTmVhcmVzdCBcbg0KPiAgICAgICsvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBuZWdh
dGl2ZSBpbmZpbml0eSkgXG4NCj4gICAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBv
c2l0aXZlIGluZmluaXR5KSBcbg0KPiAgICAgICsvLy8gICAgICAxMTogVHJ1bmNhdGVkDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCj4gICAgICArI2RlZmluZSBfbW1fcm91bmRfcGQoWCwg
TSkgXA0KPiAgICAgICsgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JvdW5kcGQoKF9fdjJkZiko
X19tMTI4ZCkoWCksIChNKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb3BpZXMgdGhlIHVwcGVy
IGVsZW1lbnQgb2YgdGhlIGZpcnN0IDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gdGhlDQo+ICAg
ICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIHVwcGVyIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgcmVz
dWx0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQo+ICAgICAgKy8vLyAgICBSb3VuZHMgdGhlIGxv
d2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3RvciBvcGVyYW5kIHRvIGFuDQo+
ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29u
dHJvbCBzcGVjaWZpZWQgYnkgdGhlIHRoaXJkDQo+ICAgICAgKy8vLyAgICBhcmd1bWVudCBhbmQg
Y29waWVzIGl0IHRvIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0
b3INCj4gICAgICArLy8vICAgIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGNvZGUNCj4gICAgICArLy8vIF9fbTEyOGQgX21tX3JvdW5kX3NkKF9fbTEyOGQgWCwgX19tMTI4
ZCBZLCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU0Qg
LyBST1VORFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIFgNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBU
aGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzEyNzo2NF0gaXMNCj4gICAgICArLy8vICAgIGNvcGll
ZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gWQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
IFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbNjM6MF0gaXMNCj4gICAgICArLy8vICAgIHJvdW5k
ZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciB1c2luZyB0aGUgc3BlY2lmaWVkIHJvdW5kaW5nIGNv
bnRyb2wgYW5kDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0
cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFu
IGludGVnZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4N
Cj4gICAgICArLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVkLiBcbg0KPiAgICAgICsvLy8g
ICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQo+ICAgICAgKy8v
LyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkIFxuDQo+ICAgICAgKy8vLyAg
ICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbg0KPiAgICAgICsvLy8gICAgQml0
IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQo+ICAgICAgKy8vLyAgICAg
IDA6IFVzZSBiaXRzIFsxOjBdIG9mIFxhIE0gXG4NCj4gICAgICArLy8vICAgICAgMTogVXNlIHRo
ZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF0gY29u
dGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KPiAgICAgICsvLy8gICAg
ICAwMDogTmVhcmVzdCBcbg0KPiAgICAgICsvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBu
ZWdhdGl2ZSBpbmZpbml0eSkgXG4NCj4gICAgICArLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJk
IHBvc2l0aXZlIGluZmluaXR5KSBcbg0KPiAgICAgICsvLy8gICAgICAxMTogVHJ1bmNhdGVkDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250
YWluaW5nIHRoZSBjb3BpZWQgYW5kIHJvdW5kZWQNCj4gICAgICArLy8vICAgIHZhbHVlcy4NCj4g
ICAgICArI2RlZmluZSBfbW1fcm91bmRfc2QoWCwgWSwgTSkgXA0KPiAgICAgICsgIChfX20xMjhk
KV9fYnVpbHRpbl9pYTMyX3JvdW5kc2QoKF9fdjJkZikoX19tMTI4ZCkoWCksIFwNCj4gICAgICAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQpKFkpLCAo
TSkpDQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0IFBhY2tlZCBCbGVuZGluZyBJbnRyaW5zaWNz
LiAgKi8NCj4gICAgICArLy8vIFJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gd2hlcmUgdGhlIHZhbHVlcyBhcmUNCj4gICAgICArLy8vICAgIHNlbGVjdGVkIGZyb20gZWl0
aGVyIHRoZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ICAg
ICAgKy8vLyAgICB0aGlyZCBvcGVyYW5kLCB0aGUgY29udHJvbCBtYXNrLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tMTI4ZCBfbW1fYmxlbmRfcGQoX19tMTI4ZCBW
MSwgX19tMTI4ZCBWMiwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZCTEVORFBEIC8gQkxFTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBWMQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQo+ICAgICAgKy8vLyBccGFyYW0gVjINCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAgICAr
Ly8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFsxOjBd
IHNwZWNpZnlpbmcgaG93IHRoZQ0KPiAgICAgICsvLy8gICAgdmFsdWVzIGFyZSB0byBiZSBjb3Bp
ZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMgdG8gdGhlDQo+ICAg
ICAgKy8vLyAgICBpbmRleCBvZiBhIGNvcGllZCB2YWx1ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAs
IHRoZSBjb3JyZXNwb25kaW5nIDY0LWJpdA0KPiAgICAgICsvLy8gICAgZWxlbWVudCBpbiBvcGVy
YW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gICAgV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDY0
LWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjINCj4gICAgICArLy8vICAgIGlzIGNvcGllZCB0
byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29waWVkIHZh
bHVlcy4NCj4gICAgICArI2RlZmluZSBfbW1fYmxlbmRfcGQoVjEsIFYyLCBNKSBcDQo+ICAgICAg
KyAgKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2JsZW5kcGQgKChfX3YyZGYpKF9fbTEyOGQpKFYx
KSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRm
KShfX20xMjhkKShWMiksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIFJldHVybnMg
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aGVyZSB0aGUgdmFsdWVzIGFyZSBzZWxl
Y3RlZA0KPiAgICAgICsvLy8gICAgZnJvbSBlaXRoZXIgdGhlIGZpcnN0IG9yIHNlY29uZCBvcGVy
YW5kIGFzIHNwZWNpZmllZCBieSB0aGUgdGhpcmQNCj4gICAgICArLy8vICAgIG9wZXJhbmQsIHRo
ZSBjb250cm9sIG1hc2suDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBf
X20xMjggX21tX2JsZW5kX3BzKF9fbTEyOCBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7DQo+
ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUFMgLyBCTEVORFBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFYxDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIFYy
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAg
ICsvLy8gXHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJh
bmQsIHdpdGggbWFzayBiaXRzIFszOjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0KPiAgICAgICsvLy8g
ICAgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWFzayBiaXQg
Y29ycmVzcG9uZHMgdG8gdGhlDQo+ICAgICAgKy8vLyAgICBpbmRleCBvZiBhIGNvcGllZCB2YWx1
ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdA0KPiAgICAg
ICsvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBw
b3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gICAgV2hlbiBhIG1hc2sgYml0IGlz
IDEsIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjINCj4g
ICAgICArLy8vICAgIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9ibGVuZF9w
cyhWMSwgVjIsIE0pIFwNCj4gICAgICArICAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9ibGVuZHBz
ICgoX192NHNmKShfX20xMjgpKFYxKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3Y0c2YpKF9fbTEyOCkoVjIpLCAoaW50KShNKSkNCj4gICAgICArDQo+
ICAgICAgKy8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdoZXJl
IHRoZSB2YWx1ZXMgYXJlDQo+ICAgICAgKy8vLyAgICBzZWxlY3RlZCBmcm9tIGVpdGhlciB0aGUg
Zmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZQ0KPiAgICAgICsvLy8g
ICAgdGhpcmQgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRWUEQgLyBCTEVORFZQ
RCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1Yx
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX1YyDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX00NCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMTI3IGFuZCA2MyBzcGVjaWZ5aW5n
IGhvdyB0aGUNCj4gICAgICArLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9z
aXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQ0KPiAgICAgICsvLy8gICAg
bW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBp
cyAwLCB0aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4g
b3BlcmFuZCBcYSBfX1YxIGlzIGNvcGllZCB0byB0aGUgc2FtZQ0KPiAgICAgICsvLy8gICAgcG9z
aXRpb24gaW4gdGhlIHJlc3VsdC4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25k
aW5nIDY0LWJpdA0KPiAgICAgICsvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjIgaXMg
Y29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBj
b3BpZWQgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYmxlbmR2X3BkIChfX20xMjhkIF9fVjEsIF9fbTEyOGQg
X19WMiwgX19tMTI4ZCBfX00pDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGQp
IF9fYnVpbHRpbl9pYTMyX2JsZW5kdnBkICgoX192MmRmKV9fVjEsIChfX3YyZGYpX19WMiwNCj4g
ICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRm
KV9fTSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSZXR1cm5zIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUNCj4gICAgICArLy8v
ICAgIHNlbGVjdGVkIGZyb20gZWl0aGVyIHRoZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBhcyBz
cGVjaWZpZWQgYnkgdGhlDQo+ICAgICAgKy8vLyAgICB0aGlyZCBvcGVyYW5kLCB0aGUgY29udHJv
bCBtYXNrLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZCTEVORFZQUyAvIEJMRU5EVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fVjENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19WMg0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxwYXJh
bSBfX00NCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNr
IGJpdHMgMTI3LCA5NSwgNjMsIGFuZCAzMSBzcGVjaWZ5aW5nDQo+ICAgICAgKy8vLyAgICBob3cg
dGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sgYml0
IGNvcnJlc3BvbmRzDQo+ICAgICAgKy8vLyAgICB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQg
b2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUNCj4gICAgICArLy8v
ICAgIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YxIGlzIGNv
cGllZCB0byB0aGUgc2FtZQ0KPiAgICAgICsvLy8gICAgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4g
V2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdA0KPiAgICAgICsv
Ly8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjIgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBv
c2l0aW9uIGluIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X2JsZW5kdl9wcyAoX19tMTI4IF9fVjEsIF9fbTEyOCBfX1YyLCBfX20xMjggX19NKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2JsZW5kdnBzICgo
X192NHNmKV9fVjEsIChfX3Y0c2YpX19WMiwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19NKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIFJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gd2hlcmUg
dGhlIHZhbHVlcyBhcmUgc2VsZWN0ZWQNCj4gICAgICArLy8vICAgIGZyb20gZWl0aGVyIG9mIHRo
ZSBmaXJzdCBvciBzZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlIHRoaXJkDQo+ICAg
ICAgKy8vLyAgICBvcGVyYW5kLCB0aGUgY29udHJvbCBtYXNrLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQkxFTkRWQiAvIFBCTEVO
RFZCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
VjENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fVjINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2
IHggaThdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fTQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvcGVyYW5kLCB3aXRoIG1hc2sgYml0cyAxMjcsIDExOSwgMTExLi4uNyBzcGVjaWZ5
aW5nDQo+ICAgICAgKy8vLyAgICBob3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUg
cG9zaXRpb24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzDQo+ICAgICAgKy8vLyAgICB0byB0
aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJp
dCBpcyAwLCB0aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgOC1iaXQgZWxlbWVudCBp
biBvcGVyYW5kIFxhIF9fVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lDQo+ICAgICAgKy8vLyAgICBw
b3NpdGlvbiBpbiB0aGUgcmVzdWx0LiBXaGVuIGEgbWFzayBiaXQgaXMgMSwgdGhlIGNvcnJlc3Bv
bmRpbmcgOC1iaXQNCj4gICAgICArLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX1YyIGlz
IGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgY29w
aWVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX2JsZW5kdl9lcGk4IChfX20xMjhpIF9fVjEsIF9fbTEyOGkg
X19WMiwgX19tMTI4aSBfX00pDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkp
IF9fYnVpbHRpbl9pYTMyX3BibGVuZHZiMTI4ICgoX192MTZxaSlfX1YxLCAoX192MTZxaSlfX1Yy
LA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChfX3YxNnFpKV9fTSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBSZXR1cm5z
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdoZXJlIHRoZSB2YWx1ZXMgYXJlIHNlbGVj
dGVkDQo+ICAgICAgKy8vLyAgICBmcm9tIGVpdGhlciBvZiB0aGUgZmlyc3Qgb3Igc2Vjb25kIG9w
ZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZSB0aGlyZA0KPiAgICAgICsvLy8gICAgb3BlcmFuZCwg
dGhlIGNvbnRyb2wgbWFzay4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8v
IF9fbTEyOGkgX21tX2JsZW5kX2VwaTE2KF9fbTEyOGkgVjEsIF9fbTEyOGkgVjIsIGNvbnN0IGlu
dCBNKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEJMRU5EVyAvIFBCTEVORFcgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gVjENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KPiAgICAgICsvLy8gXHBh
cmFtIFYyDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCj4g
ICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBv
cGVyYW5kLCB3aXRoIG1hc2sgYml0cyBbNzowXSBzcGVjaWZ5aW5nIGhvdyB0aGUNCj4gICAgICAr
Ly8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sg
Yml0IGNvcnJlc3BvbmRzIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgaW5kZXggb2YgYSBjb3BpZWQg
dmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQNCj4g
ICAgICArLy8vICAgIGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMSBpcyBjb3BpZWQgdG8gdGhlIHNh
bWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4NCj4gICAgICArLy8vICAgIFdoZW4gYSBtYXNrIGJp
dCBpcyAxLCB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYy
DQo+ICAgICAgKy8vLyAgICBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJl
c3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZd
IGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21tX2JsZW5k
X2VwaTE2KFYxLCBWMiwgTSkgXA0KPiAgICAgICsgIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9w
YmxlbmR3MTI4ICgoX192OGhpKShfX20xMjhpKShWMSksIFwNCj4gICAgICArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhoaSkoX19tMTI4aSkoVjIpLCAoaW50KShN
KSkNCj4gICAgICArDQo+ICAgICAgKy8qIFNTRTQgRHdvcmQgTXVsdGlwbHkgSW5zdHJ1Y3Rpb25z
LiAgKi8NCj4gICAgICArLy8vIE11bHRpcGxlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3
byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBpMzJdDQo+ICAgICAgKy8vLyAgICBhbmQgcmV0dXJu
cyB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgZWFjaCBwcm9kdWN0IGluIGEgMTI4LWJpdCB2ZWN0
b3Igb2YNCj4gICAgICArLy8vICAgIFs0IHggaTMyXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1VTExEIC8gUE1VTExEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fVjENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vIFxwYXJhbSBf
X1YyDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcHJvZHVj
dHMgb2YgYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tdWxsb19lcGkzMiAoX19tMTI4aSBfX1Yx
LCBfX20xMjhpIF9fVjIpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpICgo
X192NHN1KV9fVjEgKiAoX192NHN1KV9fVjIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gTXVsdGlwbGllcyBjb3JyZXNwb25kaW5nIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBvZiB0
d28gMTI4LWJpdA0KPiAgICAgICsvLy8gICAgdmVjdG9ycyBvZiBbNCB4IGkzMl0gYW5kIHJldHVy
bnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0NCj4gICAgICArLy8vICAgIGNvbnRhaW5p
bmcgdGhlIHByb2R1Y3RzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMRFEgLyBQTVVMRFEgPC9jPiBpbnN0cnVjdGlvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19WMQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19WMg0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0
cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tdWxfZXBpMzIg
KF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbXVsZHExMjggKChfX3Y0c2kpX19WMSwgKF9fdjRz
aSlfX1YyKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogU1NFNCBGbG9hdGluZyBQ
b2ludCBEb3QgUHJvZHVjdCBJbnN0cnVjdGlvbnMuICAqLw0KPiAgICAgICsvLy8gQ29tcHV0ZXMg
dGhlIGRvdCBwcm9kdWN0IG9mIHRoZSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRd
DQo+ICAgICAgKy8vLyAgICBhbmQgcmV0dXJucyBpdCBpbiB0aGUgZWxlbWVudHMgb2YgdGhlIDEy
OC1iaXQgcmVzdWx0IHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gICAgVGhlIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgY29u
dHJvbHMgd2hpY2ggaW5wdXQgZWxlbWVudHMNCj4gICAgICArLy8vICAgIHdpbGwgY29udHJpYnV0
ZSB0byB0aGUgZG90IHByb2R1Y3QsIGFuZCB3aGVyZSB0aGUgZmluYWwgcmVzdWx0cyBhcmUNCj4g
ICAgICArLy8vICAgIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAg
ICsvLy8gX19tMTI4IF9tbV9kcF9wcyhfX20xMjggWCwgX19tMTI4IFksIGNvbnN0IGludCBNKTsN
Cj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQUyAvIERQUFMgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gWA0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxwYXJhbSBZDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8g
XHBhcmFtIE0NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuIE1h
c2sgYml0cyBbNzo0XSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMNCj4gICAgICArLy8vICAgIG9m
IHRoZSBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkLCB3aXRoIGJpdCBbNF0gY29ycmVzcG9uZGluZyB0
byB0aGUgbG93ZXN0DQo+ICAgICAgKy8vLyAgICBlbGVtZW50IGFuZCBiaXQgWzddIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIGhpZ2hlc3QgZWxlbWVudCBvZiBlYWNoIFs0IHgNCj4gICAgICArLy8vICAg
IGZsb2F0XSB2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dHMgZnJvbSB0aGUgdHdvDQo+ICAgICAgKy8vLyAgICBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkIGFz
IGFuIGlucHV0IGZvciBkb3QgcHJvZHVjdDsgb3RoZXJ3aXNlIHRoYXQgaW5wdXQNCj4gICAgICAr
Ly8vICAgIGlzIHRyZWF0ZWQgYXMgemVyby4gQml0cyBbMzowXSBkZXRlcm1pbmUgd2hpY2ggZWxl
bWVudHMgb2YgdGhlIHJlc3VsdA0KPiAgICAgICsvLy8gICAgd2lsbCByZWNlaXZlIGEgY29weSBv
ZiB0aGUgZmluYWwgZG90IHByb2R1Y3QsIHdpdGggYml0IFswXSBjb3JyZXNwb25kaW5nDQo+ICAg
ICAgKy8vLyAgICB0byB0aGUgbG93ZXN0IGVsZW1lbnQgYW5kIGJpdCBbM10gY29ycmVzcG9uZGlu
ZyB0byB0aGUgaGlnaGVzdCBlbGVtZW50IG9mDQo+ICAgICAgKy8vLyAgICBlYWNoIFs0IHggZmxv
YXRdIHN1YnZlY3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgZG90IHByb2R1Y3QgaXMgcmV0dXJu
ZWQNCj4gICAgICArLy8vICAgIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQ7IG90aGVyd2lz
ZSB0aGF0IGVsZW1lbnQgaXMgc2V0IHRvIHplcm8uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRvdCBwcm9kdWN0Lg0K
PiAgICAgICsjZGVmaW5lIF9tbV9kcF9wcyhYLCBZLCBNKSBcDQo+ICAgICAgKyAgKF9fbTEyOCkg
X19idWlsdGluX2lhMzJfZHBwcygoX192NHNmKShfX20xMjgpKFgpLCBcDQo+ICAgICAgKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKFkpLCAoTSkpDQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gQ29tcHV0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHRoZSB0d28gMTI4
LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXQ0KPiAgICAgICsvLy8gICAgYW5kIHJldHVybnMg
aXQgaW4gdGhlIGVsZW1lbnRzIG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCj4gICAg
ICArLy8vICAgIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBUaGUg
aW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBjb250cm9scyB3aGljaCBpbnB1dA0KPiAgICAgICsv
Ly8gICAgZWxlbWVudHMgd2lsbCBjb250cmlidXRlIHRvIHRoZSBkb3QgcHJvZHVjdCwgYW5kIHdo
ZXJlIHRoZSBmaW5hbCByZXN1bHRzDQo+ICAgICAgKy8vLyAgICBhcmUgcmV0dXJuZWQuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhkIF9tbV9kcF9wZChfX20x
MjhkIFgsIF9fbTEyOGQgWSwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZEUFBEIC8gRFBQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBZDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCj4gICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAg
ICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLiBNYXNrIGJpdHMgWzU6NF0gZGV0ZXJtaW5l
IHdoaWNoIGVsZW1lbnRzDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgaW5wdXQgdmVjdG9ycyBhcmUg
dXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdA0KPiAgICAgICsv
Ly8gICAgZWxlbWVudCBhbmQgYml0IFs1XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVs
ZW1lbnQgb2YgZWFjaCBvZiBbMiB4DQo+ICAgICAgKy8vLyAgICBkb3VibGVdIHZlY3Rvci4gSWYg
YSBiaXQgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBmcm9tIHRoZSB0d28NCj4g
ICAgICArLy8vICAgIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQgYXMgYW4gaW5wdXQgZm9yIGRvdCBw
cm9kdWN0OyBvdGhlcndpc2UgdGhhdCBpbnB1dA0KPiAgICAgICsvLy8gICAgaXMgdHJlYXRlZCBh
cyB6ZXJvLiBCaXRzIFsxOjBdIGRldGVybWluZSB3aGljaCBlbGVtZW50cyBvZiB0aGUgcmVzdWx0
DQo+ICAgICAgKy8vLyAgICB3aWxsIHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBmaW5hbCBkb3QgcHJv
ZHVjdCwgd2l0aCBiaXQgWzBdIGNvcnJlc3BvbmRpbmcNCj4gICAgICArLy8vICAgIHRvIHRoZSBs
b3dlc3QgZWxlbWVudCBhbmQgYml0IFsxXSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVs
ZW1lbnQgb2YNCj4gICAgICArLy8vICAgIGVhY2ggWzIgeCBkb3VibGVdIHZlY3Rvci4gSWYgYSBi
aXQgaXMgc2V0LCB0aGUgZG90IHByb2R1Y3QgaXMgcmV0dXJuZWQgaW4NCj4gICAgICArLy8vICAg
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQ7IG90aGVyd2lzZSB0aGF0IGVsZW1lbnQgaXMgc2V0
IHRvIHplcm8uDQo+ICAgICAgKyNkZWZpbmUgX21tX2RwX3BkKFgsIFksIE0pIFwNCj4gICAgICAr
ICAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfZHBwZCgoX192MmRmKShfX20xMjhkKShYKSwgXA0K
PiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YyZGYpKF9fbTEyOGQp
KFkpLCAoTSkpDQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0IFN0cmVhbWluZyBMb2FkIEhpbnQg
SW5zdHJ1Y3Rpb24uICAqLw0KPiAgICAgICsvLy8gTG9hZHMgaW50ZWdlciB2YWx1ZXMgZnJvbSBh
IDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdG8gYQ0KPiAgICAgICsvLy8gICAgMTI4
LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTlREUUEgLyBNT1ZOVERRQSA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YNCj4gICAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhIDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdGhhdCBjb250
YWlucyB0aGUgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmFsdWVzLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRhdGEgc3RvcmVk
IGF0IHRoZQ0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9zdHJlYW1fbG9hZF9zaTEyOCAoX19tMTI4aSBjb25zdCAqX19WKQ0KPiAgICAgICt7DQo+
ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWls
dGluX2lhMzJfbW92bnRkcWEgKChfX3YyZGkgKikgX19WKTsNCj4gICAgICArI2Vsc2UNCj4gICAg
ICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9sb2FkICgoY29uc3Qg
X192MmRpICopIF9fVik7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvKiBTU0U0IFBhY2tlZCBJbnRlZ2VyIE1pbi9NYXggSW5zdHJ1Y3Rpb25zLiAgKi8NCj4g
ICAgICArLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgt
Yml0IHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFsxNiB4IGk4XSBhbmQgcmV0dXJucyBhIDEy
OC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBsZXNzZXINCj4gICAgICAr
Ly8vICAgIG9mIHRoZSB0d28gdmFsdWVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOU0IgLyBQTUlOU0IgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19WMQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19W
Mg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhl
IGxlc3NlciB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWluX2VwaTggKF9fbTEyOGkgX19WMSwgX19tMTI4
aSBfX1YyKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5f
aWEzMl9wbWluc2IxMjggKChfX3YxNnFpKSBfX1YxLCAoX192MTZxaSkgX19WMik7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVt
ZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQo+ICAgICAgKy8vLyAgICBbMTYgeCBpOF0g
YW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUN
Cj4gICAgICArLy8vICAgIGdyZWF0ZXIgdmFsdWUgb2YgdGhlIHR3by4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BWFNCIC8gUE1B
WFNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
VjENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fVjINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2
IHggaThdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBp
OF0gY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWF4X2VwaTggKF9f
bTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbWF4c2IxMjggKChfX3YxNnFpKSBfX1YxLCAoX192MTZx
aSkgX19WMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyB0aGUg
Y29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQo+ICAgICAg
Ky8vLyAgICBbOCB4IHUxNl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUx
Nl0gY29udGFpbmluZyB0aGUgbGVzc2VyDQo+ICAgICAgKy8vLyAgICB2YWx1ZSBvZiB0aGUgdHdv
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQTUlOVVcgLyBQTUlOVVcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19WMQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
OCB4IHUxNl0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19WMg0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbOCB4IHUxNl0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggdTE2XSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tX21pbl9lcHUxNiAoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BtaW51dzEyOCAoKF9fdjho
aSkgX19WMSwgKF9fdjhoaSkgX19WMik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0
b3JzIG9mDQo+ICAgICAgKy8vLyAgICBbOCB4IHUxNl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZl
Y3RvciBvZiBbOCB4IHUxNl0gY29udGFpbmluZyB0aGUNCj4gICAgICArLy8vICAgIGdyZWF0ZXIg
dmFsdWUgb2YgdGhlIHR3by4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BWFVXIC8gUE1BWFVXIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fVjENCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fVjINCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCB1MTZdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0gY29udGFpbmluZyB0aGUgZ3JlYXRl
ciB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fbWF4X2VwdTE2IChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19W
MikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJf
cG1heHV3MTI4ICgoX192OGhpKSBfX1YxLCAoX192OGhpKSBfX1YyKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9m
IHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFs0IHggaTMyXSBhbmQgcmV0
dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBsZXNzZXIN
Cj4gICAgICArLy8vICAgIHZhbHVlIG9mIHRoZSB0d28uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5TRCAvIFBNSU5TRCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YxDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4NCj4gICAgICArLy8vIFxw
YXJhbSBfX1YyDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4N
Cj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRh
aW5pbmcgdGhlIGxlc3NlciB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWluX2VwaTMyIChfX20xMjhpIF9f
VjEsIF9fbTEyOGkgX19WMikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkg
X19idWlsdGluX2lhMzJfcG1pbnNkMTI4ICgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFs0
IHggaTMyXSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWlu
aW5nIHRoZQ0KPiAgICAgICsvLy8gICAgZ3JlYXRlciB2YWx1ZSBvZiB0aGUgdHdvLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFY
U0QgLyBQTUFYU0QgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19WMQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0u
DQo+ICAgICAgKy8vLyBccGFyYW0gX19WMg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGkzMl0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlcy4NCj4gICAgICArc3RhdGlj
IF9faW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tYXhf
ZXBpMzIgKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbWF4c2QxMjggKChfX3Y0c2kpIF9fVjEs
IChfX3Y0c2kpIF9fVjIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFy
ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0K
PiAgICAgICsvLy8gICAgWzQgeCB1MzJdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhlIGxlc3Nlcg0KPiAgICAgICsvLy8gICAgdmFsdWUgb2Yg
dGhlIHR3by4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUE1JTlVEIC8gUE1JTlVEIDwvYz4gIGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YxDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggdTMyXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX1YyDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhlIGxlc3NlciB2YWx1ZXMu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW1fbWluX2VwdTMyIChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnVkMTI4
KChfX3Y0c2kpIF9fVjEsIChfX3Y0c2kpIF9fVjIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29tcGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1i
aXQgdmVjdG9ycyBvZg0KPiAgICAgICsvLy8gICAgWzQgeCB1MzJdIGFuZCByZXR1cm5zIGEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhlDQo+ICAgICAgKy8vLyAgICBn
cmVhdGVyIHZhbHVlIG9mIHRoZSB0d28uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVRCAvIFBNQVhVRCA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YxDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCj4gICAgICArLy8vIFxwYXJhbSBfX1Yy
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMyXS4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNvbnRhaW5pbmcgdGhl
IGdyZWF0ZXIgdmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyAgX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX21heF9lcHUzMiAoX19tMTI4aSBfX1YxLCBfX20x
MjhpIF9fVjIpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRp
bl9pYTMyX3BtYXh1ZDEyOCgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLyogU1NFNCBJbnNlcnRpb24gYW5kIEV4dHJhY3Rpb24gZnJv
bSBYTU0gUmVnaXN0ZXIgSW5zdHJ1Y3Rpb25zLiAgKi8NCj4gICAgICArLy8vIFRha2VzIHRoZSBm
aXJzdCBhcmd1bWVudCBcYSBYIGFuZCBpbnNlcnRzIGFuIGVsZW1lbnQgZnJvbSB0aGUgc2Vjb25k
DQo+ICAgICAgKy8vLyAgICBhcmd1bWVudCBcYSBZIGFzIHNlbGVjdGVkIGJ5IHRoZSB0aGlyZCBh
cmd1bWVudCBcYSBOLiBUaGF0IHJlc3VsdCB0aGVuDQo+ICAgICAgKy8vLyAgICBoYXMgZWxlbWVu
dHMgemVyb2VkIG91dCBhbHNvIGFzIHNlbGVjdGVkIGJ5IHRoZSB0aGlyZCBhcmd1bWVudCBcYSBO
LiBUaGUNCj4gICAgICArLy8vICAgIHJlc3VsdGluZyAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBpcyB0aGVuIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAg
ICsvLy8gX19tMTI4IF9tbV9pbnNlcnRfcHMoX19tMTI4IFgsIF9fbTEyOCBZLCBjb25zdCBpbnQg
Tik7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVFBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIFgNCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igc291cmNlIG9wZXJhbmQgb2YgWzQgeCBmbG9hdF0uIFdpdGggdGhlIGV4
Y2VwdGlvbiBvZg0KPiAgICAgICsvLy8gICAgdGhvc2UgYml0cyBpbiB0aGUgcmVzdWx0IGNvcGll
ZCBmcm9tIHBhcmFtZXRlciBcYSBZIGFuZCB6ZXJvZWQgYnkgYml0cw0KPiAgICAgICsvLy8gICAg
WzM6MF0gb2YgXGEgTiwgYWxsIGJpdHMgZnJvbSB0aGlzIHBhcmFtZXRlciBhcmUgY29waWVkIHRv
IHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gWQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBzb3VyY2Ugb3BlcmFuZCBvZiBbNCB4IGZsb2F0XS4gT25lIHNpbmdsZS1wcmVj
aXNpb24NCj4gICAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgZnJvbSB0aGlzIHNv
dXJjZSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgaW1tZWRpYXRlDQo+ICAgICAgKy8vLyAgICBwYXJh
bWV0ZXIsIGlzIGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHBhcmFtIE4NCj4g
ICAgICArLy8vICAgIFNwZWNpZmllcyB3aGljaCBiaXRzIGZyb20gb3BlcmFuZCBcYSBZIHdpbGwg
YmUgY29waWVkLCB3aGljaCBiaXRzIGluIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0IHRoZXkg
d2lsbCBiZSBiZSBjb3BpZWQgdG8sIGFuZCB3aGljaCBiaXRzIGluIHRoZSByZXN1bHQgd2lsbCBi
ZQ0KPiAgICAgICsvLy8gICAgY2xlYXJlZC4gVGhlIGZvbGxvd2luZyBhc3NpZ25tZW50cyBhcmUg
bWFkZTogXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzc6Nl0gc3BlY2lmeSB0aGUgYml0cyB0byBj
b3B5IGZyb20gb3BlcmFuZCBcYSBZOiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogU2VsZWN0cyBi
aXRzIFszMTowXSBmcm9tIG9wZXJhbmQgXGEgWS4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IFNl
bGVjdHMgYml0cyBbNjM6MzJdIGZyb20gb3BlcmFuZCBcYSBZLiBcbg0KPiAgICAgICsvLy8gICAg
ICAxMDogU2VsZWN0cyBiaXRzIFs5NTo2NF0gZnJvbSBvcGVyYW5kIFxhIFkuIFxuDQo+ICAgICAg
Ky8vLyAgICAgIDExOiBTZWxlY3RzIGJpdHMgWzEyNzo5Nl0gZnJvbSBvcGVyYW5kIFxhIFkuIFxu
DQo+ICAgICAgKy8vLyAgICBCaXRzIFs1OjRdIHNwZWNpZnkgdGhlIGJpdHMgaW4gdGhlIHJlc3Vs
dCB0byB3aGljaCB0aGUgc2VsZWN0ZWQgYml0cw0KPiAgICAgICsvLy8gICAgZnJvbSBvcGVyYW5k
IFxhIFkgYXJlIGNvcGllZDogXG4NCj4gICAgICArLy8vICAgICAgMDA6IENvcGllcyB0aGUgc2Vs
ZWN0ZWQgYml0cyBmcm9tIFxhIFkgdG8gcmVzdWx0IGJpdHMgWzMxOjBdLiBcbg0KPiAgICAgICsv
Ly8gICAgICAwMTogQ29waWVzIHRoZSBzZWxlY3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQg
Yml0cyBbNjM6MzJdLiBcbg0KPiAgICAgICsvLy8gICAgICAxMDogQ29waWVzIHRoZSBzZWxlY3Rl
ZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0cyBbOTU6NjRdLiBcbg0KPiAgICAgICsvLy8g
ICAgICAxMTogQ29waWVzIHRoZSBzZWxlY3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0
cyBbMTI3Ojk2XS4gXG4NCj4gICAgICArLy8vICAgIEJpdHNbMzowXTogSWYgYW55IG9mIHRoZXNl
IGJpdHMgYXJlIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgcmVzdWx0DQo+ICAgICAgKy8vLyAgICBl
bGVtZW50IGlzIGNsZWFyZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZA0KPiAgICAgICsvLy8gICAgc2lu
Z2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cyBmcm9tIHRoZSBvcGVyYW5kcy4N
Cj4gICAgICArI2RlZmluZSBfbW1faW5zZXJ0X3BzKFgsIFksIE4pIF9fYnVpbHRpbl9pYTMyX2lu
c2VydHBzMTI4KChYKSwgKFkpLCAoTikpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gRXh0cmFjdHMg
YSAzMi1iaXQgaW50ZWdlciBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gYW5k
DQo+ICAgICAgKy8vLyAgICByZXR1cm5zIGl0LCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBh
cmFtZXRlciBcYSBOIGFzIGEgc2VsZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+
ICAgICAgKy8vLyBpbnQgX21tX2V4dHJhY3RfcHMoX19tMTI4IFgsIGNvbnN0IGludCBOKTsNCj4g
ICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVFBTIC8gRVhUUkFDVFBTIDwvYz4NCj4g
ICAgICArLy8vIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBY
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAg
ICsvLy8gXHBhcmFtIE4NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZS4gQml0cyBb
MTowXSBkZXRlcm1pbmVzIHdoaWNoIGJpdHMgZnJvbSB0aGUgYXJndW1lbnQNCj4gICAgICArLy8v
ICAgIFxhIFggYXJlIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQ6IFxuDQo+ICAgICAgKy8vLyAgICAw
MDogQml0cyBbMzE6MF0gb2YgcGFyYW1ldGVyIFxhIFggYXJlIHJldHVybmVkLiBcbg0KPiAgICAg
ICsvLy8gICAgMDE6IEJpdHMgWzYzOjMyXSBvZiBwYXJhbWV0ZXIgXGEgWCBhcmUgcmV0dXJuZWQu
IFxuDQo+ICAgICAgKy8vLyAgICAxMDogQml0cyBbOTU6NjRdIG9mIHBhcmFtZXRlciBcYSBYIGFy
ZSByZXR1cm5lZC4gXG4NCj4gICAgICArLy8vICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHBhcmFt
ZXRlciBcYSBYIGFyZSByZXR1cm5lZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMzItYml0IGlu
dGVnZXIgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDMyIGJpdHMgb2YgZmxvYXQgZGF0YS4NCj4g
ICAgICArI2RlZmluZSBfbW1fZXh0cmFjdF9wcyhYLCBOKSAoX19leHRlbnNpb25fXyAgICAgICAg
ICAgICAgICAgICAgICBcDQo+ICAgICAgKyAgKHsgdW5pb24geyBpbnQgX19pOyBmbG9hdCBfX2Y7
IH0gX190OyAgXA0KPiAgICAgICsgICAgIF9fdC5fX2YgPSBfX2J1aWx0aW5faWEzMl92ZWNfZXh0
X3Y0c2YoKF9fdjRzZikoX19tMTI4KShYKSwgKGludCkoTikpOyBcDQo+ICAgICAgKyAgICAgX190
Ll9faTt9KSkNCj4gICAgICArDQo+ICAgICAgKy8qIE1pc2NlbGxhbmVvdXMgaW5zZXJ0IGFuZCBl
eHRyYWN0IG1hY3Jvcy4gICovDQo+ICAgICAgKy8qIEV4dHJhY3QgYSBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0IGZyb20gWCBhdCBpbmRleCBOIGludG8gRC4gICovDQo+ICAgICAgKyNkZWZpbmUgX01N
X0VYVFJBQ1RfRkxPQVQoRCwgWCwgTikgXA0KPiAgICAgICsgIHsgKEQpID0gX19idWlsdGluX2lh
MzJfdmVjX2V4dF92NHNmKChfX3Y0c2YpKF9fbTEyOCkoWCksIChpbnQpKE4pKTsgfQ0KPiAgICAg
ICsNCj4gICAgICArLyogT3IgdG9nZXRoZXIgMiBzZXRzIG9mIGluZGV4ZXMgKFggYW5kIFkpIHdp
dGggdGhlIHplcm9pbmcgYml0cyAoWikgdG8gY3JlYXRlDQo+ICAgICAgKyAgIGFuIGluZGV4IHN1
aXRhYmxlIGZvciBfbW1faW5zZXJ0X3BzLiAgKi8NCj4gICAgICArI2RlZmluZSBfTU1fTUtfSU5T
RVJUUFNfTkRYKFgsIFksIFopICgoKFgpIDw8IDYpIHwgKChZKSA8PCA0KSB8IChaKSkNCj4gICAg
ICArDQo+ICAgICAgKy8qIEV4dHJhY3QgYSBmbG9hdCBmcm9tIFggYXQgaW5kZXggTiBpbnRvIHRo
ZSBmaXJzdCBpbmRleCBvZiB0aGUgcmV0dXJuLiAgKi8NCj4gICAgICArI2RlZmluZSBfTU1fUElD
S19PVVRfUFMoWCwgTikgX21tX2luc2VydF9wcyAoX21tX3NldHplcm9fcHMoKSwgKFgpLCAgIFwN
Cj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01N
X01LX0lOU0VSVFBTX05EWCgoTiksIDAsIDB4MGUpKQ0KPiAgICAgICsNCj4gICAgICArLyogSW5z
ZXJ0IGludCBpbnRvIHBhY2tlZCBpbnRlZ2VyIGFycmF5IGF0IGluZGV4LiAgKi8NCj4gICAgICAr
Ly8vIENvbnN0cnVjdHMgYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gYnkgZmlyc3QgbWFr
aW5nIGEgY29weSBvZg0KPiAgICAgICsvLy8gICAgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
cGFyYW1ldGVyLCBhbmQgdGhlbiBpbnNlcnRpbmcgdGhlIGxvd2VyIDggYml0cw0KPiAgICAgICsv
Ly8gICAgb2YgYW4gaW50ZWdlciBwYXJhbWV0ZXIgXGEgSSBpbnRvIGFuIG9mZnNldCBzcGVjaWZp
ZWQgYnkgdGhlIGltbWVkaWF0ZQ0KPiAgICAgICsvLy8gICAgdmFsdWUgcGFyYW1ldGVyIFxhIE4u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhpIF9tbV9pbnNl
cnRfZXBpOChfX20xMjhpIFgsIGludCBJLCBjb25zdCBpbnQgTik7DQo+ICAgICAgKy8vLyBcZW5k
Y29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBJTlNSQiAvIFBJTlNSQiA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlDQo+ICAg
ICAgKy8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSBzaXh0ZWVuIGVsZW1lbnRzIGlu
IHRoZSByZXN1bHQgdmVjdG9yIGlzDQo+ICAgICAgKy8vLyAgICByZXBsYWNlZCBieSB0aGUgbG93
ZXIgOCBiaXRzIG9mIFxhIEkuDQo+ICAgICAgKy8vLyBccGFyYW0gSQ0KPiAgICAgICsvLy8gICAg
QW4gaW50ZWdlci4gVGhlIGxvd2VyIDggYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHdyaXR0ZW4g
dG8gdGhlIHJlc3VsdA0KPiAgICAgICsvLy8gICAgYmVnaW5uaW5nIGF0IHRoZSBvZmZzZXQgc3Bl
Y2lmaWVkIGJ5IFxhIE4uDQo+ICAgICAgKy8vLyBccGFyYW0gTg0KPiAgICAgICsvLy8gICAgQW4g
aW1tZWRpYXRlIHZhbHVlLiBCaXRzIFszOjBdIHNwZWNpZnkgdGhlIGJpdCBvZmZzZXQgaW4gdGhl
IHJlc3VsdCBhdA0KPiAgICAgICsvLy8gICAgd2hpY2ggdGhlIGxvd2VyIDggYml0cyBvZiBcYSBJ
IGFyZSB3cml0dGVuLiBcbg0KPiAgICAgICsvLy8gICAgMDAwMDogQml0cyBbNzowXSBvZiB0aGUg
cmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAwMDAxOiBC
aXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAg
ICAgKy8vLyAgICAwMDEwOiBCaXRzIFsyMzoxNl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3Ig
aW5zZXJ0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMDAxMTogQml0cyBbMzE6MjRdIG9mIHRoZSBy
ZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCj4gICAgICArLy8vICAgIDAxMDA6IEJp
dHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAg
ICAgKy8vLyAgICAwMTAxOiBCaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3Ig
aW5zZXJ0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMDExMDogQml0cyBbNTU6NDhdIG9mIHRoZSBy
ZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCj4gICAgICArLy8vICAgIDAxMTE6IEJp
dHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAg
ICAgKy8vLyAgICAxMDAwOiBCaXRzIFs3MTo2NF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3Ig
aW5zZXJ0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMTAwMTogQml0cyBbNzk6NzJdIG9mIHRoZSBy
ZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCj4gICAgICArLy8vICAgIDEwMTA6IEJp
dHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAg
ICAgKy8vLyAgICAxMDExOiBCaXRzIFs5NTo4OF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3Ig
aW5zZXJ0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMTEwMDogQml0cyBbMTAzOjk2XSBvZiB0aGUg
cmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAxMTAxOiBC
aXRzIFsxMTE6MTA0XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+
ICAgICAgKy8vLyAgICAxMTEwOiBCaXRzIFsxMTk6MTEyXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2Vk
IGZvciBpbnNlcnRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAxMTExOiBCaXRzIFsxMjc6MTIwXSBv
ZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uc3RydWN0ZWQgdmFs
dWVzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9pbnNlcnRfZXBpOChYLCBJLCBOKSBcDQo+ICAgICAg
KyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92MTZxaSgoX192MTZxaSkoX19tMTI4
aSkoWCksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpbnQpKEkpLCAoaW50KShOKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YNCj4g
ICAgICArLy8vICAgIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRo
ZW4gaW5zZXJ0aW5nIHRoZSAzMi1iaXQNCj4gICAgICArLy8vICAgIGludGVnZXIgcGFyYW1ldGVy
IFxhIEkgYXQgdGhlIG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSB2YWx1ZQ0KPiAg
ICAgICsvLy8gICAgcGFyYW1ldGVyIFxhIE4uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+
ICAgICAgKy8vLyBfX20xMjhpIF9tbV9pbnNlcnRfZXBpMzIoX19tMTI4aSBYLCBpbnQgSSwgY29u
c3QgaW50IE4pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQSU5TUkQgLyBQSU5TUkQg
PC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gWA0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhpcyB2
ZWN0b3IgaXMgY29waWVkIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgcmVzdWx0IGFuZCB0aGVuIG9u
ZSBvZiB0aGUgZm91ciBlbGVtZW50cyBpbiB0aGUgcmVzdWx0IHZlY3RvciBpcw0KPiAgICAgICsv
Ly8gICAgcmVwbGFjZWQgYnkgXGEgSS4NCj4gICAgICArLy8vIFxwYXJhbSBJDQo+ICAgICAgKy8v
LyAgICBBIDMyLWJpdCBpbnRlZ2VyIHRoYXQgaXMgd3JpdHRlbiB0byB0aGUgcmVzdWx0IGJlZ2lu
bmluZyBhdCB0aGUgb2Zmc2V0DQo+ICAgICAgKy8vLyAgICBzcGVjaWZpZWQgYnkgXGEgTi4NCj4g
ICAgICArLy8vIFxwYXJhbSBODQo+ICAgICAgKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJp
dHMgWzE6MF0gc3BlY2lmeSB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQo+ICAgICAg
Ky8vLyAgICB3aGljaCB0aGUgaW50ZWdlciBcYSBJIGlzIHdyaXR0ZW4uIFxuDQo+ICAgICAgKy8v
LyAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9u
LiBcbg0KPiAgICAgICsvLy8gICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0IGFyZSB1
c2VkIGZvciBpbnNlcnRpb24uIFxuDQo+ICAgICAgKy8vLyAgICAxMDogQml0cyBbOTU6NjRdIG9m
IHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCj4gICAgICArLy8vICAgIDEx
OiBCaXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUgX21tX2luc2VydF9lcGkzMihY
LCBJLCBOKSBcDQo+ICAgICAgKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92NHNp
KChfX3Y0c2kpKF9fbTEyOGkpKFgpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChpbnQpKEkpLCAoaW50KShOKSkNCj4gICAgICArDQo+ICAgICAgKyNp
ZmRlZiBfX3g4Nl82NF9fDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpNjRdIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YNCj4gICAgICArLy8vICAgIHRo
ZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRoZW4gaW5zZXJ0aW5nIHRo
ZSA2NC1iaXQNCj4gICAgICArLy8vICAgIGludGVnZXIgcGFyYW1ldGVyIFxhIEksIHVzaW5nIHRo
ZSBpbW1lZGlhdGUgdmFsdWUgcGFyYW1ldGVyIFxhIE4gYXMgYW4NCj4gICAgICArLy8vICAgIGlu
c2VydGlvbiBsb2NhdGlvbiBzZWxlY3Rvci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4g
ICAgICArLy8vIF9fbTEyOGkgX21tX2luc2VydF9lcGk2NChfX20xMjhpIFgsIGxvbmcgbG9uZyBJ
LCBjb25zdCBpbnQgTik7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBJTlNSUSAvIFBJ
TlNSUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBY
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBU
aGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQgYW5kIHRo
ZW4gb25lIG9mIHRoZSB0d28gZWxlbWVudHMgaW4gdGhlIHJlc3VsdCB2ZWN0b3IgaXMgcmVwbGFj
ZWQNCj4gICAgICArLy8vICAgIGJ5IFxhIEkuDQo+ICAgICAgKy8vLyBccGFyYW0gSQ0KPiAgICAg
ICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB0aGF0IGlzIHdyaXR0ZW4gdG8gdGhlIHJlc3VsdCBi
ZWdpbm5pbmcgYXQgdGhlIG9mZnNldA0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIGJ5IFxhIE4u
DQo+ICAgICAgKy8vLyBccGFyYW0gTg0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVl
LiBCaXQgWzBdIHNwZWNpZmllcyB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQo+ICAg
ICAgKy8vLyAgICB3aGljaCB0aGUgaW50ZWdlciBcYSBJIGlzIHdyaXR0ZW4uIFxuDQo+ICAgICAg
Ky8vLyAgICAwOiBCaXRzIFs2MzowXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRp
b24uIFxuDQo+ICAgICAgKy8vLyAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQgYXJl
IHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuDQo+ICAgICAg
KyNkZWZpbmUgX21tX2luc2VydF9lcGk2NChYLCBJLCBOKSBcDQo+ICAgICAgKyAgKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfdmVjX3NldF92MmRpKChfX3YyZGkpKF9fbTEyOGkpKFgpLCBcDQo+ICAg
ICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpKEkp
LCAoaW50KShOKSkNCj4gICAgICArI2VuZGlmIC8qIF9feDg2XzY0X18gKi8NCj4gICAgICArDQo+
ICAgICAgKy8qIEV4dHJhY3QgaW50IGZyb20gcGFja2VkIGludGVnZXIgYXJyYXkgYXQgaW5kZXgu
ICBUaGlzIHJldHVybnMgdGhlIGVsZW1lbnQNCj4gICAgICArICogYXMgYSB6ZXJvIGV4dGVuZGVk
IHZhbHVlLCBzbyBpdCBpcyB1bnNpZ25lZC4NCj4gICAgICArICovDQo+ICAgICAgKy8vLyBFeHRy
YWN0cyBhbiA4LWJpdCBlbGVtZW50IGZyb20gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YN
Cj4gICAgICArLy8vICAgIFsxNiB4IGk4XSwgdXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJh
bWV0ZXIgXGEgTiBhcyBhIHNlbGVjdG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAg
ICAgICsvLy8gaW50IF9tbV9leHRyYWN0X2VwaTgoX19tMTI4aSBYLCBjb25zdCBpbnQgTik7DQo+
ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSQiAvIFBFWFRSQiA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gTg0KPiAgICAgICsv
Ly8gICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFszOjBdIHNwZWNpZnkgd2hpY2ggOC1iaXQg
dmVjdG9yIGVsZW1lbnQgZnJvbQ0KPiAgICAgICsvLy8gICAgdGhlIGFyZ3VtZW50IFxhIFggdG8g
ZXh0cmFjdCBhbmQgY29weSB0byB0aGUgcmVzdWx0LiBcbg0KPiAgICAgICsvLy8gICAgMDAwMDog
Qml0cyBbNzowXSBvZiBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KPiAgICAgICsv
Ly8gICAgMDAwMTogQml0cyBbMTU6OF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0
ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAwMDEwOiBCaXRzIFsyMzoxNl0gb2YgdGhlIHBhcmFtZXRl
ciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAwMDExOiBCaXRzIFszMToy
NF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAg
ICAwMTAwOiBCaXRzIFszOTozMl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQu
IFxuDQo+ICAgICAgKy8vLyAgICAwMTAxOiBCaXRzIFs0Nzo0MF0gb2YgdGhlIHBhcmFtZXRlciBc
YSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAwMTEwOiBCaXRzIFs1NTo0OF0g
b2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAw
MTExOiBCaXRzIFs2Mzo1Nl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxu
DQo+ICAgICAgKy8vLyAgICAxMDAwOiBCaXRzIFs3MTo2NF0gb2YgdGhlIHBhcmFtZXRlciBcYSBY
IGFyZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAxMDAxOiBCaXRzIFs3OTo3Ml0gb2Yg
dGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAxMDEw
OiBCaXRzIFs4Nzo4MF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+
ICAgICAgKy8vLyAgICAxMDExOiBCaXRzIFs5NTo4OF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFy
ZSBleHRyYWN0ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAxMTAwOiBCaXRzIFsxMDM6OTZdIG9mIHRo
ZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KPiAgICAgICsvLy8gICAgMTEwMTog
Qml0cyBbMTExOjEwNF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQo+
ICAgICAgKy8vLyAgICAxMTEwOiBCaXRzIFsxMTk6MTEyXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFgg
YXJlIGV4dHJhY3RlZC4gXG4NCj4gICAgICArLy8vICAgIDExMTE6IEJpdHMgWzEyNzoxMjBdIG9m
IHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLg0KPiAgICAgICsvLy8gXHJldHVybnMg
IEFuIHVuc2lnbmVkIGludGVnZXIsIHdob3NlIGxvd2VyIDggYml0cyBhcmUgc2VsZWN0ZWQgZnJv
bSB0aGUNCj4gICAgICArLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyIGFu
ZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIGFzc2lnbmVkDQo+ICAgICAgKy8vLyAgICB6ZXJvcy4N
Cj4gICAgICArI2RlZmluZSBfbW1fZXh0cmFjdF9lcGk4KFgsIE4pIFwNCj4gICAgICArICAoaW50
KSh1bnNpZ25lZCBjaGFyKV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjE2cWkoKF9fdjE2cWkpKF9f
bTEyOGkpKFgpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChpbnQpKE4pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIEV4dHJhY3Rz
IGEgMzItYml0IGVsZW1lbnQgZnJvbSB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZg0KPiAg
ICAgICsvLy8gICAgWzQgeCBpMzJdLCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBhcmFtZXRl
ciBcYSBOIGFzIGEgc2VsZWN0b3IuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAg
Ky8vLyBpbnQgX21tX2V4dHJhY3RfZXBpMzIoX19tMTI4aSBYLCBjb25zdCBpbnQgTik7DQo+ICAg
ICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRSRCAvIFBFWFRSRCA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBYDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0gTg0KPiAgICAgICsvLy8g
ICAgQW4gaW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsxOjBdIHNwZWNpZnkgd2hpY2ggMzItYml0IHZl
Y3RvciBlbGVtZW50IGZyb20NCj4gICAgICArLy8vICAgIHRoZSBhcmd1bWVudCBcYSBYIHRvIGV4
dHJhY3QgYW5kIGNvcHkgdG8gdGhlIHJlc3VsdC4gXG4NCj4gICAgICArLy8vICAgIDAwOiBCaXRz
IFszMTowXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCj4gICAgICAr
Ly8vICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0
ZWQuIFxuDQo+ICAgICAgKy8vLyAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBwYXJhbWV0ZXIg
XGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KPiAgICAgICsvLy8gICAgMTE6IEJpdHMgWzEyNzo5Nl0g
b2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHJhY3RlZC4NCj4gICAgICArLy8vIFxyZXR1cm5z
ICBBbiBpbnRlZ2VyLCB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzZWxlY3RlZCBmcm9tIHRoZSAx
MjgtYml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBwYXJhbWV0ZXIgYW5kIHRoZSBy
ZW1haW5pbmcgYml0cyBhcmUgYXNzaWduZWQgemVyb3MuDQo+ICAgICAgKyNkZWZpbmUgX21tX2V4
dHJhY3RfZXBpMzIoWCwgTikgXA0KPiAgICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4
dF92NHNpKChfX3Y0c2kpKF9fbTEyOGkpKFgpLCAoaW50KShOKSkNCj4gICAgICArDQo+ICAgICAg
KyNpZmRlZiBfX3g4Nl82NF9fDQo+ICAgICAgKy8vLyBFeHRyYWN0cyBhIDY0LWJpdCBlbGVtZW50
IGZyb20gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFsyIHgg
aTY0XSwgdXNpbmcgdGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhIHNlbGVj
dG9yLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gbG9uZyBsb25nIF9t
bV9leHRyYWN0X2VwaTY0KF9fbTEyOGkgWCwgY29uc3QgaW50IE4pOw0KPiAgICAgICsvLy8gXGVu
ZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQRVhUUlEgLyBQRVhUUlEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gWA0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yLg0KPiAgICAgICsvLy8gXHBhcmFtIE4NCj4gICAgICArLy8vICAgIEFuIGltbWVk
aWF0ZSB2YWx1ZS4gQml0IFswXSBzcGVjaWZpZXMgd2hpY2ggNjQtYml0IHZlY3RvciBlbGVtZW50
IGZyb20NCj4gICAgICArLy8vICAgIHRoZSBhcmd1bWVudCBcYSBYIHRvIHJldHVybi4gXG4NCj4g
ICAgICArLy8vICAgIDA6IEJpdHMgWzYzOjBdIGFyZSByZXR1cm5lZC4gXG4NCj4gICAgICArLy8v
ICAgIDE6IEJpdHMgWzEyNzo2NF0gYXJlIHJldHVybmVkLiBcbg0KPiAgICAgICsvLy8gXHJldHVy
bnMgIEEgNjQtYml0IGludGVnZXIuDQo+ICAgICAgKyNkZWZpbmUgX21tX2V4dHJhY3RfZXBpNjQo
WCwgTikgXA0KPiAgICAgICsgIChsb25nIGxvbmcpX19idWlsdGluX2lhMzJfdmVjX2V4dF92MmRp
KChfX3YyZGkpKF9fbTEyOGkpKFgpLCAoaW50KShOKSkNCj4gICAgICArI2VuZGlmIC8qIF9feDg2
XzY0ICovDQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0IDEyOC1iaXQgUGFja2VkIEludGVnZXIg
Q29tcGFyaXNvbnMuICAqLw0KPiAgICAgICsvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVk
IGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZSBhbGwNCj4gICAgICArLy8vICAg
IHplcm9zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fTQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVzdGVkLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGlu
ZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uDQo+ICAgICAgKy8vLyBccmV0
dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgYWxsIHplcm9zOyBGQUxTRSBvdGhl
cndpc2UuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX3Rlc3R6X3NpMTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdHoxMjgoKF9fdjJkaSlf
X00sIChfX3YyZGkpX19WKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFRlc3Rz
IHdoZXRoZXIgdGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBh
cmUgYWxsDQo+ICAgICAgKy8vLyAgICBvbmVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fTQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVz
dGVkLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBf
X00uDQo+ICAgICAgKy8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUg
YWxsIG9uZXM7IEZBTFNFIG90aGVyd2lzZS4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdGVzdGNfc2kxMjgoX19tMTI4aSBfX00s
IF9fbTEyOGkgX19WKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X3B0ZXN0YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlfX1YpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGFyZQ0KPiAgICAgICsvLy8gICAgbmVpdGhlciBhbGwgemVyb3Mg
bm9yIGFsbCBvbmVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fTQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHMgdG8gYmUgdGVzdGVkLg0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNl
bGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBfX00uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBUUlVFIGlmIHRoZSBzcGVjaWZpZWQgYml0cyBhcmUgbmVpdGhlciBhbGwgemVy
b3Mgbm9yIGFsbCBvbmVzOw0KPiAgICAgICsvLy8gICAgRkFMU0Ugb3RoZXJ3aXNlLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV90
ZXN0bnpjX3NpMTI4KF9fbTEyOGkgX19NLCBfX20xMjhpIF9fVikNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wdGVzdG56YzEyOCgoX192MmRpKV9fTSwgKF9fdjJk
aSlfX1YpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gVGVzdHMgd2hldGhlciB0
aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZSBhbGwNCj4g
ICAgICArLy8vICAgIG9uZXMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8v
LyBpbnQgX21tX3Rlc3RfYWxsX29uZXMoX19tMTI4aSBWKTsNCj4gICAgICArLy8vIFxlbmRjb2Rl
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBWDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBUUlVFIGlmIHRoZSBiaXRzIHNwZWNpZmllZCBpbiB0aGUgb3BlcmFuZCBhcmUgYWxsIHNldCB0
byAxOyBGQUxTRQ0KPiAgICAgICsvLy8gICAgb3RoZXJ3aXNlLg0KPiAgICAgICsjZGVmaW5lIF9t
bV90ZXN0X2FsbF9vbmVzKFYpIF9tbV90ZXN0Y19zaTEyOCgoViksIF9tbV9jbXBlcV9lcGkzMigo
ViksIChWKSkpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lm
aWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFyZQ0KPiAgICAgICsvLy8gICAg
bmVpdGhlciBhbGwgemVyb3Mgbm9yIGFsbCBvbmVzLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29k
ZQ0KPiAgICAgICsvLy8gaW50IF9tbV90ZXN0X21peF9vbmVzX3plcm9zKF9fbTEyOGkgTSwgX19t
MTI4aSBWKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBi
ZSB0ZXN0ZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBc
YSBNLg0KPiAgICAgICsvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJl
IG5laXRoZXIgYWxsIHplcm9zIG5vciBhbGwgb25lczsNCj4gICAgICArLy8vICAgIEZBTFNFIG90
aGVyd2lzZS4NCj4gICAgICArI2RlZmluZSBfbW1fdGVzdF9taXhfb25lc196ZXJvcyhNLCBWKSBf
bW1fdGVzdG56Y19zaTEyOCgoTSksIChWKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBUZXN0cyB3
aGV0aGVyIHRoZSBzcGVjaWZpZWQgYml0cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYXJl
IGFsbA0KPiAgICAgICsvLy8gICAgemVyb3MuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+
ICAgICAgKy8vLyBpbnQgX21tX3Rlc3RfYWxsX3plcm9zKF9fbTEyOGkgTSwgX19tMTI4aSBWKTsN
Cj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0cyB0byBiZSB0ZXN0ZWQu
DQo+ICAgICAgKy8vLyBccGFyYW0gVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIHNlbGVjdGluZyB3aGljaCBiaXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBNLg0KPiAg
ICAgICsvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIGFsbCB6ZXJv
czsgRkFMU0Ugb3RoZXJ3aXNlLg0KPiAgICAgICsjZGVmaW5lIF9tbV90ZXN0X2FsbF96ZXJvcyhN
LCBWKSBfbW1fdGVzdHpfc2kxMjggKChNKSwgKFYpKQ0KPiAgICAgICsNCj4gICAgICArLyogU1NF
NCA2NC1iaXQgUGFja2VkIEludGVnZXIgQ29tcGFyaXNvbnMuICAqLw0KPiAgICAgICsvLy8gQ29t
cGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgt
Yml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5Lg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01Q
RVFRIC8gUENNUEVRUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX1YxDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+
ICAgICAgKy8vLyBccGFyYW0gX19WMg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcGVxX2VwaTY0KF9f
bTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChf
X20xMjhpKSgoX192MmRpKV9fVjEgPT0gKF9fdjJkaSlfX1YyKTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLyogU1NFNCBQYWNrZWQgSW50ZWdlciBTaWduLUV4dGVuc2lvbi4gICovDQo+
ICAgICAgKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50
ZWdlciBlbGVtZW50cyBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMTYg
eCBpOF0gdG8gMTYtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluIGENCj4gICAgICArLy8v
ICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVsZW1lbnRz
IG9mIHRoZSBpbnB1dCB2ZWN0b3INCj4gICAgICArLy8vICAgIGFyZSB1bnVzZWQuDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZT
WEJXIC8gUE1PVlNYQlcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19WDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4
XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVsZW1lbnRzIGFyZSBzaWduLQ0KPiAgICAgICsvLy8g
ICAgZXh0ZW5kZWQgdG8gMTYtYml0IHZhbHVlcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFs
dWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fY3Z0ZXBpOF9lcGkxNihfX20xMjhpIF9fVikNCj4gICAgICArew0KPiAg
ICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRp
bl9pYTMyX3Btb3ZzeGJ3MTI4ICgoX192MTZxaSlfX1YpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAg
ICsgIC8qIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGV4dGVuc2lvbiwg
YnV0IF9fdjE2cWkgaXMgYSBjaGFyDQo+ICAgICAgKyAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBv
ciB1bnNpZ25lZCwgc28gdXNlIF9fdjE2cXMuICovDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFz
KV9fViwgKF9fdjE2cXMpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhpKTsNCj4g
ICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTaWduLWV4dGVu
ZHMgZWFjaCBvZiB0aGUgbG93ZXIgZm91ciA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCj4g
ICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byAzMi1iaXQgdmFsdWVz
IGFuZCByZXR1cm5zIHRoZW0gaW4gYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMzJdLiBUaGUgdXBwZXIgdHdlbHZlIGVsZW1lbnRzIG9mIHRoZSBpbnB1dA0KPiAgICAg
ICsvLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWEJEIC8gUE1PVlNYQkQgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19WDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGZvdXIgOC1i
aXQgZWxlbWVudHMgYXJlDQo+ICAgICAgKy8vLyAgICBzaWduLWV4dGVuZGVkIHRvIDMyLWJpdCB2
YWx1ZXMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMy
XSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwaThf
ZXBpMzIoX19tMTI4aSBfX1YpDQo+ICAgICAgK3sNCj4gICAgICArICAvKiBUaGlzIGZ1bmN0aW9u
IGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hh
cg0KPiAgICAgICsgICAgIHdoaWNoIG1heSBiZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBf
X3YxNnFzLiAqLw0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9f
bTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzeGJkMTI4ICgoX192MTZxaSlfX1YpOw0KPiAgICAg
ICsjZWxzZQ0KPiAgICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3Rv
cihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxcylfX1YsIChfX3YxNnFzKV9fViwgMCwg
MSwgMiwgMyksIF9fdjRzaSk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIHR3byA4LWJpdCBpbnRl
Z2VyIGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzE2IHggaThdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbg0KPiAgICAg
ICsvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciBmb3VydGVl
biBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCj4gICAgICArLy8vICAgIHZlY3RvciBhcmUgdW51c2Vk
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQTU9WU1hCUSAvIFBNT1ZTWEJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMTYgeCBpOF0uIFRoZSBsb3dlciB0d28gOC1iaXQgZWxlbWVudHMgYXJlDQo+ICAgICAgKy8v
LyAgICBzaWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQo+ICAgICAgKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBzaWduLWV4dGVu
ZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwaThfZXBpNjQoX19tMTI4aSBfX1YpDQo+ICAgICAg
K3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKSBf
X2J1aWx0aW5faWEzMl9wbW92c3hicTEyOCAoKF9fdjE2cWkpX19WKTsNCj4gICAgICArI2Vsc2UN
Cj4gICAgICArICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNpZ25lZCBleHRl
bnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcg0KPiAgICAgICsgICAgIHdoaWNoIG1heSBiZSBz
aWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLw0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rvcigo
X192MTZxcylfX1YsIChfX3YxNnFzKV9fViwgMCwgMSksIF9fdjJkaSk7DQo+ICAgICAgKyNlbmRp
Zg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU2lnbi1leHRlbmRzIGVhY2ggb2Yg
dGhlIGxvd2VyIGZvdXIgMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KPiAgICAgICsvLy8g
ICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gMzItYml0IHZhbHVlcyBh
bmQgcmV0dXJucyB0aGVtIGluDQo+ICAgICAgKy8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggaTMyXS4gVGhlIHVwcGVyIGZvdXIgZWxlbWVudHMgb2YgdGhlIGlucHV0DQo+ICAgICAgKy8v
LyAgICB2ZWN0b3IgYXJlIHVudXNlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYV0QgLyBQTU9WU1hXRCA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YNCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgZm91ciAxNi1iaXQg
ZWxlbWVudHMgYXJlDQo+ICAgICAgKy8vLyAgICBzaWduLWV4dGVuZGVkIHRvIDMyLWJpdCB2YWx1
ZXMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBj
b250YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwaTE2X2Vw
aTMyKF9fbTEyOGkgX19WKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4d2QxMjggKChfX3Y4
aGkpX19WKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWls
dGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1YsIChf
X3Y4aGkpX19WLCAwLCAxLCAyLCAzKSwgX192NHNpKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIg
dHdvIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMg
dGhlbSBpbg0KPiAgICAgICsvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRo
ZSB1cHBlciBzaXggZWxlbWVudHMgb2YgdGhlIGlucHV0DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Ig
YXJlIHVudXNlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUE1PVlNYV1EgLyBQTU9WU1hXUSA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YNCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgdHdvIDE2LWJpdCBlbGVtZW50cyBhcmUN
Cj4gICAgICArLy8vICAgICBzaWduLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQo+ICAgICAg
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRo
ZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwaTE2X2VwaTY0KF9fbTEyOGkg
X19WKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVy
biAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnN4d3ExMjggKChfX3Y4aGkpX19WKTsNCj4g
ICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2
ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1YsIChfX3Y4aGkpX19WLCAw
LCAxKSwgX192MmRpKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBTaWduLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgdHdvIDMyLWJpdCBpbnRlZ2Vy
IGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMzJdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbg0KPiAgICAgICsv
Ly8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciB0d28gZWxlbWVu
dHMgb2YgdGhlIGlucHV0IHZlY3Rvcg0KPiAgICAgICsvLy8gICAgYXJlIHVudXNlZC4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1P
VlNYRFEgLyBQTU9WU1hEUSA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX1YNCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MzJdLiBUaGUgbG93ZXIgdHdvIDMyLWJpdCBlbGVtZW50cyBhcmUNCj4gICAgICArLy8vICAgIHNp
Z24tZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFs
dWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fY3Z0ZXBpMzJfZXBpNjQoX19tMTI4aSBfX1YpDQo+ICAgICAgK3sNCj4g
ICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0
aW5faWEzMl9wbW92c3hkcTEyOCAoKF9fdjRzaSlfX1YpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAg
ICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1
ZmZsZXZlY3RvcigoX192NHNpKV9fViwgKF9fdjRzaSlfX1YsIDAsIDEpLCBfX3YyZGkpOw0KPiAg
ICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogU1NFNCBQYWNrZWQg
SW50ZWdlciBaZXJvLUV4dGVuc2lvbi4gICovDQo+ICAgICAgKy8vLyBaZXJvLWV4dGVuZHMgZWFj
aCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQo+ICAgICAg
Ky8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gdG8gMTYtYml0IHZhbHVlcyBhbmQg
cmV0dXJucyB0aGVtIGluIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHgg
aTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3INCj4gICAg
ICArLy8vICAgIGFyZSB1bnVzZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJXIC8gUE1PVlpYQlcgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19WDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGVpZ2h0IDgtYml0IGVs
ZW1lbnRzIGFyZQ0KPiAgICAgICsvLy8gICAgemVyby1leHRlbmRlZCB0byAxNi1iaXQgdmFsdWVz
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29u
dGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRlcHU4X2VwaTE2
KF9fbTEyOGkgX19WKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAg
ICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnp4YncxMjggKChfX3YxNnFp
KV9fVik7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnF1KV9fViwgKF9f
djE2cXUpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhpKTsNCj4gICAgICArI2Vu
ZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBv
ZiB0aGUgbG93ZXIgZm91ciA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCj4gICAgICArLy8v
ICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1
cm5zIHRoZW0gaW4gYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJd
LiBUaGUgdXBwZXIgdHdlbHZlIGVsZW1lbnRzIG9mIHRoZSBpbnB1dA0KPiAgICAgICsvLy8gICAg
dmVjdG9yIGFyZSB1bnVzZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWEJEIC8gUE1PVlpYQkQgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19WDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4gVGhlIGxvd2VyIGZvdXIgOC1iaXQgZWxlbWVu
dHMgYXJlDQo+ICAgICAgKy8vLyAgICB6ZXJvLWV4dGVuZGVkIHRvIDMyLWJpdCB2YWx1ZXMuDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWlu
aW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
X19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwdThfZXBpMzIoX19t
MTI4aSBfX1YpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAg
cmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92enhiZDEyOCAoKF9fdjE2cWkpX19W
KTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2Nv
bnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2cXUpX19WLCAoX192MTZx
dSlfX1YsIDAsIDEsIDIsIDMpLCBfX3Y0c2kpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28g
OC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0g
aW4NCj4gICAgICArLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBUaGUgdXBw
ZXIgZm91cnRlZW4gZWxlbWVudHMgb2YgdGhlIGlucHV0DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Ig
YXJlIHVudXNlZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUE1PVlpYQlEgLyBQTU9WWlhCUSA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YNCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgdHdvIDgtYml0IGVsZW1lbnRzIGFyZQ0K
PiAgICAgICsvLy8gICAgemVyby1leHRlbmRlZCB0byA2NC1iaXQgdmFsdWVzLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUg
emVyby1leHRlbmRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRlcHU4X2VwaTY0KF9fbTEyOGkgX19W
KQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAo
X19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnp4YnExMjggKChfX3YxNnFpKV9fVik7DQo+ICAg
ICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVj
dG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnF1KV9fViwgKF9fdjE2cXUpX19WLCAw
LCAxKSwgX192MmRpKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUgbG93ZXIgZm91ciAxNi1iaXQgaW50ZWdl
ciBlbGVtZW50cyBvZiBhDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs4IHggaTE2XSB0byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCj4gICAgICAr
Ly8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgdXBwZXIgZm91ciBlbGVt
ZW50cyBvZiB0aGUgaW5wdXQNCj4gICAgICArLy8vICAgIHZlY3RvciBhcmUgdW51c2VkLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
TU9WWlhXRCAvIFBNT1ZaWFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4
IGkxNl0uIFRoZSBsb3dlciBmb3VyIDE2LWJpdCBlbGVtZW50cyBhcmUNCj4gICAgICArLy8vICAg
IHplcm8tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQg
dmFsdWVzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fY3Z0ZXB1MTZfZXBpMzIoX19tMTI4aSBfX1YpDQo+ICAgICAgK3sN
Cj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1
aWx0aW5faWEzMl9wbW92enh3ZDEyOCAoKF9fdjhoaSlfX1YpOw0KPiAgICAgICsjZWxzZQ0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5f
c2h1ZmZsZXZlY3RvcigoX192OGh1KV9fViwgKF9fdjhodSlfX1YsIDAsIDEsIDIsIDMpLCBfX3Y0
c2kpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFpl
cm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28gMTYtYml0IGludGVnZXIgZWxlbWVudHMg
b2YgYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0g
dG8gNjQtYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluDQo+ICAgICAgKy8vLyAgICBhIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhlIHVwcGVyIHNpeCBlbGVtZW50cyBvZiB0aGUg
aW5wdXQgdmVjdG9yDQo+ICAgICAgKy8vLyAgICBhcmUgdW51c2VkLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WWlhXUSAvIFBN
T1ZaWFdRIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRoZSBs
b3dlciB0d28gMTYtYml0IGVsZW1lbnRzIGFyZQ0KPiAgICAgICsvLy8gICAgemVyby1leHRlbmRl
ZCB0byA2NC1iaXQgdmFsdWVzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9jdnRlcHUxNl9lcGk2NChfX20xMjhpIF9fVikNCj4gICAgICArew0KPiAgICAgICsjaWZk
ZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Bt
b3Z6eHdxMTI4ICgoX192OGhpKV9fVik7DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJu
IChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3Y4aHUpX19WLCAoX192OGh1KV9fViwgMCwgMSksIF9fdjJkaSk7DQo+ICAgICAgKyNlbmRp
Zg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gWmVyby1leHRlbmRzIGVhY2ggb2Yg
dGhlIGxvd2VyIHR3byAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQo+ICAgICAgKy8vLyAg
ICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXSB0byA2NC1iaXQgdmFsdWVzIGFu
ZCByZXR1cm5zIHRoZW0gaW4NCj4gICAgICArLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBpNjRdLiBUaGUgdXBwZXIgdHdvIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3INCj4gICAg
ICArLy8vICAgIGFyZSB1bnVzZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWERRIC8gUE1PVlpYRFEgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19WDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIGxvd2VyIHR3byAzMi1iaXQgZWxl
bWVudHMgYXJlDQo+ICAgICAgKy8vLyAgICB6ZXJvLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250
YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dGVwdTMyX2VwaTY0
KF9fbTEyOGkgX19WKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAg
ICsgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnp4ZHExMjggKChfX3Y0c2kp
X19WKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzdSlfX1YsIChfX3Y0
c3UpX19WLCAwLCAxKSwgX192MmRpKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8qIFNTRTQgUGFjayB3aXRoIFVuc2lnbmVkIFNhdHVyYXRpb24uICAqLw0K
PiAgICAgICsvLy8gQ29udmVydHMgMzItYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggMTI4
LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMgaW50byAxNi1iaXQg
dW5zaWduZWQgaW50ZWdlcnMsIGFuZCByZXR1cm5zIHRoZSBwYWNrZWQgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gICAgVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYgYXJlIHNhdHVyYXRlZCB0byAweEZG
RkYuIFZhbHVlcyBsZXNzIHRoYW4NCj4gICAgICArLy8vICAgIDB4MDAwMCBhcmUgc2F0dXJhdGVk
IHRvIDB4MDAwMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUEFDS1VTRFcgLyBQQUNLVVNEVyA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YxDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gRWFjaCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFz
IGENCj4gICAgICArLy8vICAgIHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSAx
Ni1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoDQo+ICAgICAgKy8vLyAgICBzYXR1cmF0aW9uLiBW
YWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkZGRi4gVmFsdWVz
DQo+ICAgICAgKy8vLyAgICBsZXNzIHRoYW4gMHgwMDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMDAw
LiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMNCj4gICAgICArLy8vICAgIGFyZSB3cml0
dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFy
YW0gX19WMg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIEVh
Y2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQo+ICAgICAgKy8vLyAgICBzaWduZWQg
aW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgd2l0
aA0KPiAgICAgICsvLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYg
YXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFZhbHVlcw0KPiAgICAgICsvLy8gICAgbGVzcyB0aGFu
IDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGkxNl0g
dmFsdWVzDQo+ICAgICAgKy8vLyAgICBhcmUgd3JpdHRlbiB0byB0aGUgaGlnaGVyIDY0IGJpdHMg
b2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9wYWNr
dXNfZXBpMzIoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpDQo+ICAgICAgK3sNCj4gICAgICAr
ICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3BhY2t1c2R3MTI4KChfX3Y0c2kpX19W
MSwgKF9fdjRzaSlfX1YyKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogU1NFNCBN
dWx0aXBsZSBQYWNrZWQgU3VtcyBvZiBBYnNvbHV0ZSBEaWZmZXJlbmNlLiAgKi8NCj4gICAgICAr
Ly8vIFN1YnRyYWN0cyA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBhbmQgY29tcHV0ZXMg
dGhlIGFic29sdXRlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMgb2YgdGhlIGRpZmZlcmVuY2VzIHRv
IHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8g
ICAgVGhlbiBzdW1zIG9mIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBhcmUgcmV0dXJuZWQgYWNj
b3JkaW5nIHRvIHRoZSBiaXQNCj4gICAgICArLy8vICAgIGZpZWxkcyBpbiB0aGUgaW1tZWRpYXRl
IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhp
IF9tbV9tcHNhZGJ3X2VwdTgoX19tMTI4aSBYLCBfX20xMjhpIFksIGNvbnN0IGludCBNKTsNCj4g
ICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVBTQURCVyAvIE1QU0FEQlcgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gWA0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQo+ICAgICAgKy8vLyBccGFyYW0gWQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQo+ICAgICAgKy8vLyBc
cGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lm
eWluZyBob3cgdGhlIGFic29sdXRlIGRpZmZlcmVuY2VzIGFyZSB0bw0KPiAgICAgICsvLy8gICAg
YmUgY2FsY3VsYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOg0KPiAg
ICAgICsvLy8gICAgXGNvZGUNCj4gICAgICArLy8vICAgIC8vIE0yIHJlcHJlc2VudHMgYml0IDIg
b2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kDQo+ICAgICAgKy8vLyAgICAvLyBNMTAgcmVwcmVzZW50
cyBiaXRzIFsxOjBdIG9mIHRoZSBpbW1lZGlhdGUgb3BlcmFuZA0KPiAgICAgICsvLy8gICAgaSA9
IE0yICogNDsNCj4gICAgICArLy8vICAgIGogPSBNMTAgKiA0Ow0KPiAgICAgICsvLy8gICAgZm9y
IChrID0gMDsgayA8IDg7IGsgPSBrICsgMSkgew0KPiAgICAgICsvLy8gICAgICBkMCA9IGFicyhY
W2kgKyBrICsgMF0gLSBZW2ogKyAwXSk7DQo+ICAgICAgKy8vLyAgICAgIGQxID0gYWJzKFhbaSAr
IGsgKyAxXSAtIFlbaiArIDFdKTsNCj4gICAgICArLy8vICAgICAgZDIgPSBhYnMoWFtpICsgayAr
IDJdIC0gWVtqICsgMl0pOw0KPiAgICAgICsvLy8gICAgICBkMyA9IGFicyhYW2kgKyBrICsgM10g
LSBZW2ogKyAzXSk7DQo+ICAgICAgKy8vLyAgICAgIHJba10gPSBkMCArIGQxICsgZDIgKyBkMzsN
Cj4gICAgICArLy8vICAgIH0NCj4gICAgICArLy8vICAgIFxlbmRjb2RlDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VtcyBvZiB0
aGUgc2V0cyBvZg0KPiAgICAgICsvLy8gICAgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBi
b3RoIG9wZXJhbmRzLg0KPiAgICAgICsjZGVmaW5lIF9tbV9tcHNhZGJ3X2VwdTgoWCwgWSwgTSkg
XA0KPiAgICAgICsgIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9tcHNhZGJ3MTI4KChfX3YxNnFp
KShfX20xMjhpKShYKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChfX3YxNnFpKShfX20xMjhpKShZKSwgKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8v
IEZpbmRzIHRoZSBtaW5pbXVtIHVuc2lnbmVkIDE2LWJpdCBlbGVtZW50IGluIHRoZSBpbnB1dCAx
MjgtYml0DQo+ICAgICAgKy8vLyAgICB2ZWN0b3Igb2YgWzggeCB1MTZdIGFuZCByZXR1cm5zIGl0
IGFuZCBhbG9uZyB3aXRoIGl0cyBpbmRleC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEhNSU5QT1NVVyAvIFBITUlOUE9TVVcgPC9j
Pg0KPiAgICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fVg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IHUxNl0uDQo+
ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmFsdWUgd2hlcmUgYml0cyBbMTU6MF0gY29u
dGFpbiB0aGUgbWluaW11bSB2YWx1ZSBmb3VuZA0KPiAgICAgICsvLy8gICAgaW4gcGFyYW1ldGVy
IFxhIF9fViwgYml0cyBbMTg6MTZdIGNvbnRhaW4gdGhlIGluZGV4IG9mIHRoZSBtaW5pbXVtIHZh
bHVlDQo+ICAgICAgKy8vLyAgICBhbmQgdGhlIHJlbWFpbmluZyBiaXRzIGFyZSBzZXQgdG8gMC4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX21pbnBvc19lcHUxNihfX20xMjhpIF9fVikNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcGhtaW5wb3N1dzEyOCgoX192OGhpKV9f
Vik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8qIEhhbmRsZSB0aGUgc3NlNC4yIGRl
ZmluaXRpb25zIGhlcmUuICovDQo+ICAgICAgKw0KPiAgICAgICsvKiBUaGVzZSBkZWZpbml0aW9u
cyBhcmUgbm9ybWFsbHkgaW4gbm1taW50cmluLmgsIGJ1dCBnY2MgcHV0cyB0aGVtIGluIGhlcmUN
Cj4gICAgICArICAgc28gd2UnbGwgZG8gdGhlIHNhbWUuICAqLw0KPiAgICAgICsNCj4gICAgICAr
I3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAg
ICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l
X18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQo+ICAgICAgKyNlbHNlDQo+
ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz
X2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlNC4yIikpKQ0KPiAgICAgICsj
ZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8qIFRoZXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgZGF0
YSB0aGF0IHdlJ3JlIGNvbXBhcmluZy4gICovDQo+ICAgICAgKyNkZWZpbmUgX1NJRERfVUJZVEVf
T1BTICAgICAgICAgICAgICAgICAweDAwDQo+ICAgICAgKyNkZWZpbmUgX1NJRERfVVdPUkRfT1BT
ICAgICAgICAgICAgICAgICAweDAxDQo+ICAgICAgKyNkZWZpbmUgX1NJRERfU0JZVEVfT1BTICAg
ICAgICAgICAgICAgICAweDAyDQo+ICAgICAgKyNkZWZpbmUgX1NJRERfU1dPUkRfT1BTICAgICAg
ICAgICAgICAgICAweDAzDQo+ICAgICAgKw0KPiAgICAgICsvKiBUaGVzZSBzcGVjaWZ5IHRoZSB0
eXBlIG9mIGNvbXBhcmlzb24gb3BlcmF0aW9uLiAgKi8NCj4gICAgICArI2RlZmluZSBfU0lERF9D
TVBfRVFVQUxfQU5ZICAgICAgICAgICAgIDB4MDANCj4gICAgICArI2RlZmluZSBfU0lERF9DTVBf
UkFOR0VTICAgICAgICAgICAgICAgIDB4MDQNCj4gICAgICArI2RlZmluZSBfU0lERF9DTVBfRVFV
QUxfRUFDSCAgICAgICAgICAgIDB4MDgNCj4gICAgICArI2RlZmluZSBfU0lERF9DTVBfRVFVQUxf
T1JERVJFRCAgICAgICAgIDB4MGMNCj4gICAgICArDQo+ICAgICAgKy8qIFRoZXNlIG1hY3JvcyBz
cGVjaWZ5IHRoZSBwb2xhcml0eSBvZiB0aGUgb3BlcmF0aW9uLiAgKi8NCj4gICAgICArI2RlZmlu
ZSBfU0lERF9QT1NJVElWRV9QT0xBUklUWSAgICAgICAgIDB4MDANCj4gICAgICArI2RlZmluZSBf
U0lERF9ORUdBVElWRV9QT0xBUklUWSAgICAgICAgIDB4MTANCj4gICAgICArI2RlZmluZSBfU0lE
RF9NQVNLRURfUE9TSVRJVkVfUE9MQVJJVFkgIDB4MjANCj4gICAgICArI2RlZmluZSBfU0lERF9N
QVNLRURfTkVHQVRJVkVfUE9MQVJJVFkgIDB4MzANCj4gICAgICArDQo+ICAgICAgKy8qIFRoZXNl
IG1hY3JvcyBhcmUgdXNlZCBpbiBfbW1fY21wWHN0cmkoKSB0byBzcGVjaWZ5IHRoZSByZXR1cm4u
ICAqLw0KPiAgICAgICsjZGVmaW5lIF9TSUREX0xFQVNUX1NJR05JRklDQU5UICAgICAgICAgMHgw
MA0KPiAgICAgICsjZGVmaW5lIF9TSUREX01PU1RfU0lHTklGSUNBTlQgICAgICAgICAgMHg0MA0K
PiAgICAgICsNCj4gICAgICArLyogVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIF9tbV9jbXBYc3Ry
aSgpIHRvIHNwZWNpZnkgdGhlIHJldHVybi4gICovDQo+ICAgICAgKyNkZWZpbmUgX1NJRERfQklU
X01BU0sgICAgICAgICAgICAgICAgICAweDAwDQo+ICAgICAgKyNkZWZpbmUgX1NJRERfVU5JVF9N
QVNLICAgICAgICAgICAgICAgICAweDQwDQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0LjIgUGFj
a2VkIENvbXBhcmlzb24gSW50cmluc2ljcy4gICovDQo+ICAgICAgKy8vLyBVc2VzIHRoZSBpbW1l
ZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KPiAg
ICAgICsvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMg
Y29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KPiAgICAgICsvLy8gICAgXGEgQSBhbmQgXGEg
Qi4gUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSByZXN1
bHQNCj4gICAgICArLy8vICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhpIF9tbV9jbXBpc3RybShfX20xMjhpIEEs
IF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
Q01QSVNUUk0gLyBQQ01QSVNUUk0gPC9jPg0KPiAgICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJl
DQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBCDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8v
LyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3Bl
Y2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KPiAgICAgICsvLy8g
ICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3Jt
YXQgb2YgdGhlIHJldHVybg0KPiAgICAgICsvLy8gICAgdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAg
ICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KPiAgICAgICsv
Ly8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDgg
dW5zaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBc
bg0KPiAgICAgICsvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1l
dGhvZC4gXG4NCj4gICAgICArLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4g
XGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAg
ICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5n
ZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBh
cmlzb24NCj4gICAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAg
ICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBB
LiBcbg0KPiAgICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNv
cnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAg
XGEgQiBmb3IgZXF1YWxpdHkuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNl
YXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8g
ICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBs
ZW1lbnQgb24gdGhlIGJpdA0KPiAgICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBc
bg0KPiAgICAgICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICAr
Ly8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0
aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVh
bA0KPiAgICAgICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0K
PiAgICAgICsvLy8gICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSByZXN1bHQgaXMg
emVyby1leHRlbmRlZCBvciBleHBhbmRlZCB0byAxNg0KPiAgICAgICsvLy8gICAgICAgICAgICAg
Ynl0ZXMuIFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IFRoZSByZXN1bHQgaXMgemVyby1leHRlbmRl
ZCB0byAxNiBieXRlcy4gXG4NCj4gICAgICArLy8vICAgICAgMTogVGhlIHJlc3VsdCBpcyBleHBh
bmRlZCB0byAxNiBieXRlcyAodGhpcyBleHBhbnNpb24gaXMgcGVyZm9ybWVkIGJ5DQo+ICAgICAg
Ky8vLyAgICAgICAgIHJlcGVhdGluZyBlYWNoIGJpdCA4IG9yIDE2IHRpbWVzKS4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIFJldHVybnMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGlu
ZyB0aGUgcmVzdWx0IG1hc2sgb2YNCj4gICAgICArLy8vICAgIHRoZSBjb21wYXJpc29uLg0KPiAg
ICAgICsjZGVmaW5lIF9tbV9jbXBpc3RybShBLCBCLCBNKSBcDQo+ICAgICAgKyAgKF9fbTEyOGkp
X19idWlsdGluX2lhMzJfcGNtcGlzdHJtMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXA0KPiAg
ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19t
MTI4aSkoQiksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVzZXMgdGhlIGltbWVk
aWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQo+ICAg
ICAgKy8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBj
b250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQo+ICAgICAgKy8vLyAgICBcYSBBIGFuZCBcYSBC
LiBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhl
DQo+ICAgICAgKy8vLyAgICBjb21wYXJpc29uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0K
PiAgICAgICsvLy8gaW50IF9tbV9jbXBpc3RyaShfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3Qg
aW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNU
UkkgPC9jPg0KPiAgICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIEENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAgICBj
b21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBCDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBi
ZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAg
ICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRo
ZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KPiAgICAgICsvLy8gICAgd29yZHMsIHRoZSB0eXBl
IG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0K
PiAgICAgICsvLy8gICAgdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRl
cm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogMTYgdW5z
aWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4N
Cj4gICAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KPiAgICAgICsvLy8gICAg
ICAxMTogOCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVy
bWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCj4gICAgICAr
Ly8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBm
b3IgZXF1YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJz
IGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVy
IGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCj4gICAgICArLy8v
ICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVk
IGVsZW1lbnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9y
IGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KPiAgICAgICsvLy8g
ICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFj
dGVycyBpbiBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHku
IFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJp
bmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJt
aW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KPiAg
ICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBc
bg0KPiAgICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KPiAgICAgICsvLy8gICAgICAw
MTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IE5vIGVmZmVj
dC4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3Ig
Yml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KPiAgICAgICsvLy8gICAgICAg
ICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KPiAgICAgICsvLy8gICAgQml0IFs2
XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3Ig
dGhlDQo+ICAgICAgKy8vLyAgICAgICAgICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQu
IFxuDQo+ICAgICAgKy8vLyAgICAgIDA6IFRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNh
bnQgc2V0IGJpdC4gXG4NCj4gICAgICArLy8vICAgICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0
IHNpZ25pZmljYW50IHNldCBiaXQuIFxuDQo+ICAgICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIGFu
IGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhlIGNvbXBhcmlzb24u
DQo+ICAgICAgKyNkZWZpbmUgX21tX2NtcGlzdHJpKEEsIEIsIE0pIFwNCj4gICAgICArICAoaW50
KV9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCj4g
ICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4
aSkoQiksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVzZXMgdGhlIGltbWVkaWF0
ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQo+ICAgICAg
Ky8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250
YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQo+ICAgICAgKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBS
ZXR1cm5zIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIHJlc3VsdA0K
PiAgICAgICsvLy8gICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGNvZGUNCj4gICAgICArLy8vIF9fbTEyOGkgX21tX2NtcGVzdHJtKF9fbTEyOGkgQSwgaW50
IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNv
ZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQQ01QRVNUUk0gLyBQQ01QRVNUUk0gPC9jPg0KPiAgICAgICsvLy8gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJh
bSBMQQ0KPiAgICAgICsvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3Ro
IG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCj4gICAgICArLy8vIFxwYXJhbSBCDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gTEINCj4gICAgICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxl
bmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAg
ICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRo
ZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KPiAgICAgICsvLy8gICAgd29yZHMsIHRoZSB0eXBl
IG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0K
PiAgICAgICsvLy8gICAgdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRl
cm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogMTYgdW5z
aWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4N
Cj4gICAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KPiAgICAgICsvLy8gICAg
ICAxMTogOCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVy
bWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCj4gICAgICAr
Ly8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBm
b3IgZXF1YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJz
IGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVy
IGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCj4gICAgICArLy8v
ICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVk
IGVsZW1lbnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9y
IGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KPiAgICAgICsvLy8g
ICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFj
dGVycyBpbiBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHku
IFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJz
dHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0
ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0K
PiAgICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRz
LiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KPiAgICAgICsvLy8gICAg
ICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IE5vIGVm
ZmVjdC4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBm
b3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KPiAgICAgICsvLy8gICAg
ICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KPiAgICAgICsvLy8gICAgQml0
IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCBvciBl
eHBhbmRlZCB0byAxNg0KPiAgICAgICsvLy8gICAgICAgICAgICAgYnl0ZXMuIFxuDQo+ICAgICAg
Ky8vLyAgICAgIDA6IFRoZSByZXN1bHQgaXMgemVyby1leHRlbmRlZCB0byAxNiBieXRlcy4gXG4N
Cj4gICAgICArLy8vICAgICAgMTogVGhlIHJlc3VsdCBpcyBleHBhbmRlZCB0byAxNiBieXRlcyAo
dGhpcyBleHBhbnNpb24gaXMgcGVyZm9ybWVkIGJ5DQo+ICAgICAgKy8vLyAgICAgICAgIHJlcGVh
dGluZyBlYWNoIGJpdCA4IG9yIDE2IHRpbWVzKS4gXG4NCj4gICAgICArLy8vIFxyZXR1cm5zIFJl
dHVybnMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG1h
c2sgb2YNCj4gICAgICArLy8vICAgIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsjZGVmaW5lIF9t
bV9jbXBlc3RybShBLCBMQSwgQiwgTEIsIE0pIFwNCj4gICAgICArICAoX19tMTI4aSlfX2J1aWx0
aW5faWEzMl9wY21wZXN0cm0xMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwN
Cj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkp
KF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gVXNlcyB0
aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJp
bmcNCj4gICAgICArLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0
aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCj4gICAgICArLy8vICAgIFxhIEEg
YW5kIFxhIEIuIFJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBpbmRl
eCBvZiB0aGUNCj4gICAgICArLy8vICAgIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxjb2RlDQo+ICAgICAgKy8vLyBpbnQgX21tX2NtcGVzdHJpKF9fbTEyOGkgQSwgaW50IExBLCBf
X20xMjhpIEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQQ01QRVNUUkkgLyBQQ01QRVNUUkkgPC9jPg0KPiAgICAgICsvLy8gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
IHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBMQQ0K
PiAgICAgICsvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRo
ZSBzdHJpbmcgaW4gXGEgQS4NCj4gICAgICArLy8vIFxwYXJhbSBCDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcyB0byBiZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBccGFyYW0g
TEINCj4gICAgICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBv
ZiB0aGUgc3RyaW5nIGluIFxhIEIuDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8g
ICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFy
YWN0ZXJzIGFyZSBieXRlcyBvcg0KPiAgICAgICsvLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNv
bXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0KPiAgICAg
ICsvLy8gICAgdmFsdWUuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUg
c291cmNlIGRhdGEgZm9ybWF0LiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogMTYgdW5zaWduZWQg
Ynl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCj4gICAg
ICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KPiAgICAgICsvLy8gICAgICAxMTog
OCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBj
b21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCj4gICAgICArLy8vICAg
ICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1
YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxh
IEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxh
IEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCj4gICAgICArLy8vICAgICAg
ICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1l
bnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFs
IGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgICAx
MDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBp
biBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQo+
ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBCIGZvciBzdWJzdHJpbmcgbWF0
Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdo
ZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KPiAgICAgICsv
Ly8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KPiAg
ICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogTmVn
YXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4N
Cj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3
aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KPiAgICAgICsvLy8gICAgICAgICAgdG8g
dGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KPiAgICAgICsvLy8gICAgQml0IFs2XTogRGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNldCBiaXQgb3IgdGhlDQo+
ICAgICAgKy8vLyAgICAgICAgICAgICBoaWdoZXN0IHNldCBiaXQgaXMgcmV0dXJuZWQuIFxuDQo+
ICAgICAgKy8vLyAgICAgIDA6IFRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2V0
IGJpdC4gXG4NCj4gICAgICArLy8vICAgICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25p
ZmljYW50IHNldCBiaXQuIFxuDQo+ICAgICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIGFuIGludGVn
ZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5kZXggb2YgdGhlIGNvbXBhcmlzb24uDQo+ICAg
ICAgKyNkZWZpbmUgX21tX2NtcGVzdHJpKEEsIExBLCBCLCBMQiwgTSkgXA0KPiAgICAgICsgIChp
bnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJpMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgKGlu
dCkoTEEpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9f
djE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCj4gICAgICArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoaW50KShNKSkNCj4gICAgICArDQo+ICAgICAgKy8qIFNTRTQu
MiBQYWNrZWQgQ29tcGFyaXNvbiBJbnRyaW5zaWNzIGFuZCBFRmxhZyBSZWFkaW5nLiAgKi8NCj4g
ICAgICArLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNv
bXBhcmlzb24gb2Ygc3RyaW5nDQo+ICAgICAgKy8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBk
ZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQo+ICAg
ICAgKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGJpdCBtYXNrIGlzIHpl
cm8gYW5kIHRoZSBsZW5ndGggb2YgdGhlDQo+ICAgICAgKy8vLyAgICBzdHJpbmcgaW4gXGEgQiBp
cyB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxjb2RlDQo+ICAgICAgKy8vLyBpbnQgX21tX2NtcGlzdHJhKF9fbTEyOGkgQSwgX19tMTI4aSBC
LCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBJU1RSSSAv
IFBDTVBJU1RSSSA8L2M+DQo+ICAgICAgKy8vLyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gQQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCj4gICAgICAr
Ly8vICAgIGNvbXBhcmVkLg0KPiAgICAgICsvLy8gXHBhcmFtIEINCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBN
DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdo
ZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQo+ICAgICAgKy8vLyAgICB3b3JkcyBh
bmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCj4gICAgICArLy8v
ICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiA4IHVu
c2lnbmVkIHdvcmRzIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4N
Cj4gICAgICArLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQo+ICAgICAgKy8vLyAgICBC
aXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRo
b2QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxh
IEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQo+ICAgICAgKy8vLyAgICAgICAg
ICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogUmFuZ2Vz
OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJp
c29uDQo+ICAgICAgKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
Zm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KPiAgICAgICsvLy8gICAgICAgICAg
YW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4g
XG4NCj4gICAgICArLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3Jy
ZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCj4gICAgICArLy8vICAgICAgICAgIFxh
IEIgZm9yIGVxdWFsaXR5LiBcbg0KPiAgICAgICsvLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFy
Y2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVt
ZW50IG9uIHRoZSBiaXQNCj4gICAgICArLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4gXG4NCj4gICAgICArLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4N
Cj4gICAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQo+ICAgICAgKy8v
LyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBOZWdhdGUgdGhl
IGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwN
Cj4gICAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgemVybyBhbmQg
dGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluDQo+ICAgICAgKy8vLyAgICBcYSBCIGlzIHRoZSBt
YXhpbXVtOyBvdGhlcndpc2UsIHJldHVybnMgMC4NCj4gICAgICArI2RlZmluZSBfbW1fY21waXN0
cmEoQSwgQiwgTSkgXA0KPiAgICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJpYTEy
OCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCj4gICAgICAr
DQo+ICAgICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0g
YSBjb21wYXJpc29uIG9mIHN0cmluZw0KPiAgICAgICsvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0
bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0K
PiAgICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBiaXQgbWFzayBp
cyBub24temVybywgb3RoZXJ3aXNlLCByZXR1cm5zDQo+ICAgICAgKy8vLyAgICAwLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gaW50IF9tbV9jbXBpc3RyYyhfX20xMjhp
IEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KPiAgICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRv
IGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBCDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAg
Ky8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQg
c3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KPiAgICAgICsv
Ly8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4NCj4g
ICAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxu
DQo+ICAgICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KPiAgICAgICsvLy8g
ICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KPiAgICAgICsvLy8gICAgICAxMDogMTYgc2ln
bmVkIGJ5dGVzIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KPiAg
ICAgICsvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdn
cmVnYXRpb24gbWV0aG9kLiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNo
YXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KPiAgICAg
ICsvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCj4gICAgICArLy8vICAg
ICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBB
LiBUaGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0
aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCj4gICAgICAr
Ly8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1l
bnRzIGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNo
IHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQo+ICAgICAgKy8v
LyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IFN1
YnN0cmluZzogU2VhcmNoIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQo+ICAg
ICAgKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25l
J3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQo+ICAgICAgKy8vLyAgICAgICAgICAgICAgICBtYXNr
IG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBObyBl
ZmZlY3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0K
PiAgICAgICsvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0KPiAgICAgICsvLy8gICAgICAxMTog
TmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFu
IG9yIGVxdWFsDQo+ICAgICAgKy8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxh
IEIuDQo+ICAgICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGJpdCBtYXNrIGlzIG5v
bi16ZXJvLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCj4gICAgICArI2RlZmluZSBfbW1fY21waXN0
cmMoQSwgQiwgTSkgXA0KPiAgICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJpYzEy
OCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCj4gICAgICAr
DQo+ICAgICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0g
YSBjb21wYXJpc29uIG9mIHN0cmluZw0KPiAgICAgICsvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0
bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0K
PiAgICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyBiaXQgMCBvZiB0aGUgcmVzdWx0
aW5nIGJpdCBtYXNrLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gaW50
IF9tbV9jbXBpc3RybyhfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KPiAgICAg
ICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KPiAgICAg
ICsvLy8gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAg
ICArLy8vIFxwYXJhbSBCDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsvLy8g
ICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gOC1i
aXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFy
ZSBieXRlcyBvcg0KPiAgICAgICsvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlz
b24gdG8gcGVyZm9ybS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBz
b3VyY2UgZGF0YSBmb3JtYXQuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBi
eXRlcyBcbg0KPiAgICAgICsvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KPiAgICAg
ICsvLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiA4
IHNpZ25lZCB3b3JkcyBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNv
bXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KPiAgICAgICsvLy8gICAg
ICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVh
bGl0eSB3aXRoIGFsbA0KPiAgICAgICsvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEg
QS4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEg
QiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgICAg
ICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVu
dHMgaW4gXGEgQSwNCj4gICAgICArLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwg
Zm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEw
OiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGlu
IFxhIEEgYW5kDQo+ICAgICAgKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCj4g
ICAgICArLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9yIHN1YnN0cmluZyBtYXRj
aGVzIG9mIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hl
dGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQo+ICAgICAgKy8v
LyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQo+ICAg
ICAgKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBOZWdh
dGUgdGhlIGJpdCBtYXNrLiBcbg0KPiAgICAgICsvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0K
PiAgICAgICsvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdp
dGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQo+ICAgICAgKy8vLyAgICAgICAgICB0byB0
aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuDQo+ICAgICAgKy8vLyBccmV0dXJucyBSZXR1cm5z
IGJpdCAwIG9mIHRoZSByZXN1bHRpbmcgYml0IG1hc2suDQo+ICAgICAgKyNkZWZpbmUgX21tX2Nt
cGlzdHJvKEEsIEIsIE0pIFwNCj4gICAgICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBpc3Ry
aW8xMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkpDQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJm
b3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCj4gICAgICArLy8vICAgIGRhdGEgd2l0aCBpbXBs
aWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFu
ZHMNCj4gICAgICArLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0aGUgbGVuZ3Ro
IG9mIHRoZSBzdHJpbmcgaW4gXGEgQSBpcyBsZXNzIHRoYW4NCj4gICAgICArLy8vICAgIHRoZSBt
YXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUN
Cj4gICAgICArLy8vIGludCBfbW1fY21waXN0cnMoX19tMTI4aSBBLCBfX20xMjhpIEIsIGNvbnN0
IGludCBNKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElT
VFJJIDwvYz4NCj4gICAgICArLy8vIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBBDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsvLy8gICAg
Y29tcGFyZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gQg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8g
YmUNCj4gICAgICArLy8vICAgIGNvbXBhcmVkLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4gICAg
ICArLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0
aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCj4gICAgICArLy8vICAgIHdvcmRzIGFuZCB0aGUg
dHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsx
OjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KPiAgICAgICsvLy8gICAgICAw
MDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQg
d29yZHMgXG4NCj4gICAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KPiAgICAg
ICsvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6
Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4N
Cj4gICAgICArLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBj
b21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAgICAgIHRoZSBj
aGFyYWN0ZXJzIGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2gg
Y2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCj4g
ICAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZl
bi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAgICBhbmQgbGVz
cyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KPiAg
ICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRp
bmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAgXGEgQiBmb3Ig
ZXF1YWxpdHkuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBC
IGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBb
NTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24g
dGhlIGJpdA0KPiAgICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNv
biByZXN1bHRzLiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KPiAgICAg
ICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICArLy8vICAgICAg
MTA6IE5vIGVmZmVjdC4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1h
c2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KPiAgICAg
ICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KPiAgICAgICsv
Ly8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBB
IGlzIGxlc3MgdGhhbiB0aGUNCj4gICAgICArLy8vICAgIG1heGltdW0sIG90aGVyd2lzZSwgcmV0
dXJucyAwLg0KPiAgICAgICsjZGVmaW5lIF9tbV9jbXBpc3RycyhBLCBCLCBNKSBcDQo+ICAgICAg
KyAgKGludClfX2J1aWx0aW5faWEzMl9wY21waXN0cmlzMTI4KChfX3YxNnFpKShfX20xMjhpKShB
KSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZx
aSkoX19tMTI4aSkoQiksIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVzZXMgdGhl
IGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5n
DQo+ICAgICAgKy8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhh
dCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQo+ICAgICAgKy8vLyAgICBcYSBBIGFu
ZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMg
bGVzcyB0aGFuDQo+ICAgICAgKy8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5z
IDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBpbnQgX21tX2NtcGlz
dHJ6KF9fbTEyOGkgQSwgX19tMTI4aSBCLCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8vLyBcZW5k
Y29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBDTVBJU1RSSSAvIFBDTVBJU1RSSSA8L2M+DQo+ICAgICAgKy8vLyBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gQQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMgdG8gYmUNCj4gICAgICArLy8vICAgIGNvbXBhcmVkLg0KPiAgICAgICsvLy8gXHBh
cmFtIEINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJl
ZC4NCj4gICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlh
dGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9y
DQo+ICAgICAgKy8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJm
b3JtLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRh
IGZvcm1hdC4gXG4NCj4gICAgICArLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQo+
ICAgICAgKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQo+ICAgICAgKy8vLyAgICAg
IDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMTE6IDggc2lnbmVkIHdv
cmRzIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0
eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBTdWJz
ZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGgg
YWxsDQo+ICAgICAgKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KPiAg
ICAgICsvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBh
cmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQo+ICAgICAgKy8vLyAgICAgICAgICBiYXNpcyBp
cyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBB
LA0KPiAgICAgICsvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWlu
ZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IE1hdGNoOiBD
b21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQN
Cj4gICAgICArLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KPiAgICAgICsvLy8g
ICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2Yg
XGEgQS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRv
IHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCj4gICAgICArLy8vICAgICAg
ICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCj4gICAgICArLy8v
ICAgICAgMDA6IE5vIGVmZmVjdC4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUg
Yml0IG1hc2suIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQo+ICAgICAg
Ky8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBp
bmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCj4gICAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXpl
IG9mIFxhIEEgb3IgXGEgQi4NCj4gICAgICArLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUg
bGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQiBpcyBsZXNzIHRoYW4gdGhlDQo+ICAgICAgKy8v
LyAgICBtYXhpbXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCj4gICAgICArI2RlZmluZSBfbW1f
Y21waXN0cnooQSwgQiwgTSkgXA0KPiAgICAgICsgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlz
dHJpejEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCj4gICAgICArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCj4g
ICAgICArDQo+ICAgICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBl
cmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KPiAgICAgICsvLy8gICAgZGF0YSB3aXRoIGV4
cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVy
YW5kcw0KPiAgICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBiaXQg
bWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgc3RyaW5n
IGluIFxhIEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gaW50IF9tbV9jbXBlc3RyYShfX20xMjhpIEEs
IGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsNCj4gICAgICArLy8vIFxl
bmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJJIC8gUENNUEVTVFJJIDwvYz4NCj4gICAgICArLy8vIGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBBDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBc
cGFyYW0gTEENCj4gICAgICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxl
bmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuDQo+ICAgICAgKy8vLyBccGFyYW0gQg0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMgdG8gYmUNCj4gICAgICArLy8vICAgIGNvbXBhcmVkLg0KPiAgICAgICsv
Ly8gXHBhcmFtIExCDQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRo
ZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLg0KPiAgICAgICsvLy8gXHBhcmFtIE0NCj4g
ICAgICArLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhl
ciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCj4gICAgICArLy8vICAgIHdvcmRzIGFuZCB0
aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRz
IFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KPiAgICAgICsvLy8gICAg
ICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDggdW5zaWdu
ZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KPiAg
ICAgICsvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgIEJpdHMg
WzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4g
XG4NCj4gICAgICArLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBp
cyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAgICAgIHRo
ZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVh
Y2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24N
Cj4gICAgICArLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3Ig
ZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAgICBhbmQg
bGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0K
PiAgICAgICsvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3Bv
bmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAgXGEgQiBm
b3IgZXF1YWxpdHkuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBc
YSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgQml0
cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQg
b24gdGhlIGJpdA0KPiAgICAgICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFy
aXNvbiByZXN1bHRzLiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KPiAg
ICAgICsvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICArLy8vICAg
ICAgMTA6IE5vIGVmZmVjdC4gXG4NCj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0
IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KPiAg
ICAgICsvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSBiaXQgbWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVu
Z3RoIG9mIHRoZSBzdHJpbmcgaW4NCj4gICAgICArLy8vICAgIFxhIEIgaXMgdGhlIG1heGltdW0s
IG90aGVyd2lzZSwgcmV0dXJucyAwLg0KPiAgICAgICsjZGVmaW5lIF9tbV9jbXBlc3RyYShBLCBM
QSwgQiwgTEIsIE0pIFwNCj4gICAgICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaWEx
MjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwNCj4gICAgICArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShM
QiksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCko
TSkpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEg
TSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCj4gICAgICArLy8vICAgIGRhdGEg
d2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3Vy
Y2Ugb3BlcmFuZHMNCj4gICAgICArLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0
aGUgcmVzdWx0aW5nIG1hc2sgaXMgbm9uLXplcm8sIG90aGVyd2lzZSwNCj4gICAgICArLy8vICAg
IHJldHVybnMgMC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIGludCBf
bW1fY21wZXN0cmMoX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBp
bnQgTSk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RS
SSA8L2M+DQo+ICAgICAgKy8vLyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gQQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCj4gICAgICArLy8vICAgIGNv
bXBhcmVkLg0KPiAgICAgICsvLy8gXHBhcmFtIExBDQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2Vy
IHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLg0KPiAgICAg
ICsvLy8gXHBhcmFtIEINCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAg
ICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBMQg0KPiAgICAgICsvLy8gICAgQW4gaW50
ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4NCj4g
ICAgICArLy8vIFxwYXJhbSBNDQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3Bl
cmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQo+ICAg
ICAgKy8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1h
dC4gXG4NCj4gICAgICArLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQo+ICAgICAg
Ky8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiAx
NiBzaWduZWQgYnl0ZXMgXG4NCj4gICAgICArLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxu
DQo+ICAgICAgKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFu
ZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVh
Y2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQo+
ICAgICAgKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KPiAgICAgICsv
Ly8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRv
IFxhIEEuIFRoZSBjb21wYXJpc29uDQo+ICAgICAgKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KPiAg
ICAgICsvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQg
ZWxlbWVudHMgaW4gXGEgQS4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJl
IGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCj4gICAg
ICArLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KPiAgICAgICsvLy8gICAgICAx
MTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4g
XG4NCj4gICAgICArLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZv
cm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCj4gICAgICArLy8vICAgICAgICAgICAg
ICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCj4gICAgICArLy8vICAgICAg
MDA6IE5vIGVmZmVjdC4gXG4NCj4gICAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1h
c2suIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQo+ICAgICAgKy8vLyAg
ICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBs
ZXNzIHRoYW4gb3IgZXF1YWwNCj4gICAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxh
IEEgb3IgXGEgQi4gXG4NCj4gICAgICArLy8vIFxyZXR1cm5zIFJldHVybnMgMSBpZiB0aGUgcmVz
dWx0aW5nIG1hc2sgaXMgbm9uLXplcm8sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KPiAgICAgICsj
ZGVmaW5lIF9tbV9jbXBlc3RyYyhBLCBMQSwgQiwgTEIsIE0pIFwNCj4gICAgICArICAoaW50KV9f
YnVpbHRpbl9pYTMyX3BjbXBlc3RyaWMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShM
QSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2
cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQo+ICAgICAgKw0KPiAgICAgICsvLy8gVXNlcyB0
aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJp
bmcNCj4gICAgICArLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0
aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCj4gICAgICArLy8vICAgIFxhIEEg
YW5kIFxhIEIuIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIGludCBfbW1fY21wZXN0cm8oX19tMTI4
aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQo+ICAgICAgKy8v
LyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+DQo+ICAgICAgKy8v
LyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gQQ0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMgdG8gYmUNCj4gICAgICArLy8vICAgIGNvbXBhcmVkLg0KPiAgICAgICsv
Ly8gXHBhcmFtIExBDQo+ICAgICAgKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRo
ZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLg0KPiAgICAgICsvLy8gXHBhcmFtIEINCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAg
ICArLy8vIFxwYXJhbSBMQg0KPiAgICAgICsvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmll
cyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4NCj4gICAgICArLy8vIFxwYXJhbSBN
DQo+ICAgICAgKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdo
ZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQo+ICAgICAgKy8vLyAgICB3b3JkcyBh
bmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KPiAgICAgICsvLy8gICAg
Qml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCj4gICAgICArLy8v
ICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiA4IHVu
c2lnbmVkIHdvcmRzIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4N
Cj4gICAgICArLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQo+ICAgICAgKy8vLyAgICBC
aXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRo
b2QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxh
IEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQo+ICAgICAgKy8vLyAgICAgICAg
ICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgICAwMTogUmFuZ2Vz
OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJp
c29uDQo+ICAgICAgKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
Zm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KPiAgICAgICsvLy8gICAgICAgICAg
YW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4g
XG4NCj4gICAgICArLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3Jy
ZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCj4gICAgICArLy8vICAgICAgICAgIFxh
IEIgZm9yIGVxdWFsaXR5LiBcbg0KPiAgICAgICsvLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFy
Y2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVt
ZW50IG9uIHRoZSBiaXQNCj4gICAgICArLy8vICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4gXG4NCj4gICAgICArLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4N
Cj4gICAgICArLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQo+ICAgICAgKy8v
LyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiBOZWdhdGUgdGhl
IGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwN
Cj4gICAgICArLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4N
Cj4gICAgICArI2RlZmluZSBfbW1fY21wZXN0cm8oQSwgTEEsIEIsIExCLCBNKSBcDQo+ICAgICAg
KyAgKGludClfX2J1aWx0aW5faWEzMl9wY21wZXN0cmlvMTI4KChfX3YxNnFpKShfX20xMjhpKShB
KSwgKGludCkoTEEpLCBcDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcDQo+ICAgICAgKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0pKQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlz
b24gb2Ygc3RyaW5nDQo+ICAgICAgKy8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVk
IGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQo+ICAgICAgKy8v
LyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5n
IGluIFxhIEEgaXMgbGVzcyB0aGFuDQo+ICAgICAgKy8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3
aXNlLCByZXR1cm5zIDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBp
bnQgX21tX2NtcGVzdHJzKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29u
c3QgaW50IE0pOw0KPiAgICAgICsvLy8gXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgLyBQQ01Q
RVNUUkkgPC9jPg0KPiAgICAgICsvLy8gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+ICAgICAgKy8vLyAg
ICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBMQQ0KPiAgICAgICsvLy8gICAgQW4gaW50
ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCj4g
ICAgICArLy8vIFxwYXJhbSBCDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KPiAgICAgICsv
Ly8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gTEINCj4gICAgICArLy8vICAgIEFu
IGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIu
DQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRl
IG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0K
PiAgICAgICsvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9y
bS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBm
b3JtYXQuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KPiAg
ICAgICsvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KPiAgICAgICsvLy8gICAgICAx
MDogMTYgc2lnbmVkIGJ5dGVzIFxuDQo+ICAgICAgKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3Jk
cyBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlw
ZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KPiAgICAgICsvLy8gICAgICAwMDogU3Vic2V0
OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFs
bA0KPiAgICAgICsvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCj4gICAg
ICArLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJl
ZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbg0KPiAgICAgICsvLy8gICAgICAgICAgYmFzaXMgaXMg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwN
Cj4gICAgICArLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRl
eGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDEwOiBNYXRjaDogQ29t
cGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQo+
ICAgICAgKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCj4gICAgICArLy8vICAg
ICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxh
IEEuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBw
ZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBpbiB0aGUgYml0DQo+ICAgICAgKy8vLyAgICAgICAg
ICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQo+ICAgICAgKy8vLyAg
ICAgIDAwOiBObyBlZmZlY3QuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJp
dCBtYXNrLiBcbg0KPiAgICAgICsvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0KPiAgICAgICsv
Ly8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5k
ZXggbGVzcyB0aGFuIG9yIGVxdWFsDQo+ICAgICAgKy8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBv
ZiBcYSBBIG9yIFxhIEIuIFxuDQo+ICAgICAgKy8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhl
IGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEgaXMgbGVzcyB0aGFuIHRoZQ0KPiAgICAgICsv
Ly8gICAgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQo+ICAgICAgKyNkZWZpbmUgX21t
X2NtcGVzdHJzKEEsIExBLCBCLCBMQiwgTSkgXA0KPiAgICAgICsgIChpbnQpX19idWlsdGluX2lh
MzJfcGNtcGVzdHJpczEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIChpbnQpKExBKSwgXA0KPiAg
ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4
aSkoQiksIChpbnQpKExCKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoaW50KShNKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBVc2VzIHRoZSBpbW1lZGlh
dGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KPiAgICAg
ICsvLy8gICAgZGF0YSB3aXRoIGV4cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29u
dGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KPiAgICAgICsvLy8gICAgXGEgQSBhbmQgXGEgQi4g
UmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlzIGxlc3MgdGhh
bg0KPiAgICAgICsvLy8gICAgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gaW50IF9tbV9jbXBlc3RyeihfX20x
MjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsNCj4gICAgICAr
Ly8vIFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEVTVFJJIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIEENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQo+
ICAgICAgKy8vLyAgICBjb21wYXJlZC4NCj4gICAgICArLy8vIFxwYXJhbSBMQQ0KPiAgICAgICsv
Ly8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcg
aW4gXGEgQS4NCj4gICAgICArLy8vIFxwYXJhbSBCDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBi
ZQ0KPiAgICAgICsvLy8gICAgY29tcGFyZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gTEINCj4gICAg
ICArLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3Ry
aW5nIGluIFxhIEIuDQo+ICAgICAgKy8vLyBccGFyYW0gTQ0KPiAgICAgICsvLy8gICAgQW4gOC1i
aXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFy
ZSBieXRlcyBvcg0KPiAgICAgICsvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlz
b24gdG8gcGVyZm9ybS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBz
b3VyY2UgZGF0YSBmb3JtYXQuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBi
eXRlcyAgXG4NCj4gICAgICArLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCj4gICAg
ICArLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KPiAgICAgICsvLy8gICAgICAxMTog
OCBzaWduZWQgd29yZHMgXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBj
b21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCj4gICAgICArLy8vICAg
ICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1
YWxpdHkgd2l0aCBhbGwNCj4gICAgICArLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxh
IEEuIFxuDQo+ICAgICAgKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxh
IEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCj4gICAgICArLy8vICAgICAg
ICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1l
bnRzIGluIFxhIEEsDQo+ICAgICAgKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFs
IGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgICAx
MDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBp
biBcYSBBIGFuZA0KPiAgICAgICsvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQo+
ICAgICAgKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcg
bWF0Y2hlcyBvZiBcYSBBLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5l
IHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KPiAgICAg
ICsvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0K
PiAgICAgICsvLy8gICAgICAwMDogTm8gZWZmZWN0LiBcbg0KPiAgICAgICsvLy8gICAgICAwMTog
TmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCj4gICAgICArLy8vICAgICAgMTA6IE5vIGVmZmVjdC4g
XG4NCj4gICAgICArLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3IgYml0
cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KPiAgICAgICsvLy8gICAgICAgICAg
dG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLg0KPiAgICAgICsvLy8gXHJldHVybnMgUmV0dXJu
cyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlzIGxlc3MgdGhhbiB0aGUN
Cj4gICAgICArLy8vICAgIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KPiAgICAgICsj
ZGVmaW5lIF9tbV9jbXBlc3RyeihBLCBMQSwgQiwgTEIsIE0pIFwNCj4gICAgICArICAoaW50KV9f
YnVpbHRpbl9pYTMyX3BjbXBlc3RyaXoxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShM
QSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2
cWkpKF9fbTEyOGkpKEIpLCAoaW50KShMQiksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0LjIg
Q29tcGFyZSBQYWNrZWQgRGF0YSAtLSBHcmVhdGVyIFRoYW4uICAqLw0KPiAgICAgICsvLy8gQ29t
cGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQgdmFsdWVzIG9mIHRoZSAxMjgt
Yml0DQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2
YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICBncmVhdGVyIHRo
YW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1RRIC8gUENNUEdUUSA8L2M+
IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX1YxDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQo+ICAgICAgKy8vLyBccGFyYW0g
X19WMg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcGd0X2VwaTY0KF9fbTEyOGkgX19WMSwgX19tMTI4
aSBfX1YyKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjhpKSgoX192MmRpKV9f
VjEgPiAoX192MmRpKV9fVjIpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvKiBTU0U0
LjIgQWNjdW11bGF0ZSBDUkMzMi4gICovDQo+ICAgICAgKy8vLyBBZGRzIHRoZSB1bnNpZ25lZCBp
bnRlZ2VyIG9wZXJhbmQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YgdGhlDQo+ICAgICAgKy8v
LyAgICB1bnNpZ25lZCBjaGFyIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fQw0KPiAgICAgICsvLy8gICAgQW4gdW5z
aWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIGFkZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiBv
cGVyYW5kDQo+ICAgICAgKy8vLyAgICBcYSAgX19ELg0KPiAgICAgICsvLy8gXHBhcmFtIF9fRA0K
PiAgICAgICsvLy8gICAgQW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlciBvcGVyYW5kIHVzZWQgdG8g
Y29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4NCj4gICAgICArLy8vIFxyZXR1cm5zIFRoZSBy
ZXN1bHQgb2YgYWRkaW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9m
DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kIFxhIF9fRC4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3JjMzJfdTgo
dW5zaWduZWQgaW50IF9fQywgdW5zaWduZWQgY2hhciBfX0QpDQo+ICAgICAgK3sNCj4gICAgICAr
ICByZXR1cm4gX19idWlsdGluX2lhMzJfY3JjMzJxaShfX0MsIF9fRCk7DQo+ICAgICAgK30NCj4g
ICAgICArDQo+ICAgICAgKy8vLyBBZGRzIHRoZSB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8g
dGhlIENSQy0zMkMgY2hlY2tzdW0gb2YgdGhlDQo+ICAgICAgKy8vLyAgICB1bnNpZ25lZCBzaG9y
dCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IENSQzMyVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX0MNCj4gICAgICArLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3Bl
cmFuZCB0byBhZGQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Ygb3BlcmFuZA0KPiAgICAgICsv
Ly8gICAgXGEgX19ELg0KPiAgICAgICsvLy8gXHBhcmFtIF9fRA0KPiAgICAgICsvLy8gICAgQW4g
dW5zaWduZWQgMTYtYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUgdGhlIENSQy0z
MkMgY2hlY2tzdW0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBv
cGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KPiAgICAgICsvLy8gICAg
b3BlcmFuZCBcYSBfX0QuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NyYzMyX3UxNih1bnNpZ25lZCBpbnQgX19D
LCB1bnNpZ25lZCBzaG9ydCBfX0QpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWls
dGluX2lhMzJfY3JjMzJoaShfX0MsIF9fRCk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBBZGRzIHRoZSBmaXJzdCB1bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gdGhlIENSQy0z
MkMgY2hlY2tzdW0gb2YNCj4gICAgICArLy8vICAgIHRoZSBzZWNvbmQgdW5zaWduZWQgaW50ZWdl
ciBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IENSQzMyTCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX0MNCj4gICAgICArLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3Bl
cmFuZCB0byBhZGQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2Ygb3BlcmFuZA0KPiAgICAgICsv
Ly8gICAgXGEgX19ELg0KPiAgICAgICsvLy8gXHBhcmFtIF9fRA0KPiAgICAgICsvLy8gICAgQW4g
dW5zaWduZWQgMzItYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1dGUgdGhlIENSQy0z
MkMgY2hlY2tzdW0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBv
cGVyYW5kIFxhIF9fQyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KPiAgICAgICsvLy8gICAg
b3BlcmFuZCBcYSBfX0QuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NyYzMyX3UzMih1bnNpZ25lZCBpbnQgX19D
LCB1bnNpZ25lZCBpbnQgX19EKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX2NyYzMyc2koX19DLCBfX0QpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsj
aWZkZWYgX194ODZfNjRfXw0KPiAgICAgICsvLy8gQWRkcyB0aGUgdW5zaWduZWQgaW50ZWdlciBv
cGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgdW5z
aWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMzMlEgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19DDQo+ICAgICAgKy8vLyAgICBBbiB1
bnNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9m
IG9wZXJhbmQNCj4gICAgICArLy8vICAgIFxhIF9fRC4NCj4gICAgICArLy8vIFxwYXJhbSBfX0QN
Cj4gICAgICArLy8vICAgIEFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIG9wZXJhbmQgdXNlZCB0
byBjb21wdXRlIHRoZSBDUkMtMzJDIGNoZWNrc3VtLg0KPiAgICAgICsvLy8gXHJldHVybnMgVGhl
IHJlc3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0g
b2YNCj4gICAgICArLy8vICAgIG9wZXJhbmQgXGEgX19ELg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyB1bnNpZ25lZCBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9j
cmMzMl91NjQodW5zaWduZWQgbG9uZyBsb25nIF9fQywgdW5zaWduZWQgbG9uZyBsb25nIF9fRCkN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jcmMzMmRpKF9fQywg
X19EKTsNCj4gICAgICArfQ0KPiAgICAgICsjZW5kaWYgLyogX194ODZfNjRfXyAqLw0KPiAgICAg
ICsNCj4gICAgICArI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICsNCj4gICAgICAr
I2luY2x1ZGUgPHBvcGNudGludHJpbi5oPg0KPiAgICAgICsNCj4gICAgICArI2VuZGlmIC8qIF9f
U01NSU5UUklOX0ggKi8NCj4gICAgICBkaWZmIC0tZ2l0IGEvaW5jbHVkZS90bW1pbnRyaW4uaCBi
L2luY2x1ZGUvdG1taW50cmluLmgNCj4gICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiAgICAg
IGluZGV4IDAwMDAwMDAuLjdhOTQwOTYNCj4gICAgICAtLS0gL2Rldi9udWxsDQo+ICAgICAgKysr
IGIvaW5jbHVkZS90bW1pbnRyaW4uaA0KPiAgICAgIEBAIC0wLDAgKzEsNzkwIEBADQo+ICAgICAg
Ky8qPT09LS0tLSB0bW1pbnRyaW4uaCAtIFNTU0UzIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCj4gICAgICArICoNCj4gICAgICArICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQ0KPiAgICAgICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KPiAgICAgICsgKiBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzDQo+ICAgICAgKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCj4gICAgICAr
ICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzDQo+ICAgICAgKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ICAgICAgKyAqDQo+ICAgICAgKyAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluDQo+ICAgICAgKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv
bnMgb2YgdGhlIFNvZnR3YXJlLg0KPiAgICAgICsgKg0KPiAgICAgICsgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUg0KPiAgICAgICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gICAgICArICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFDQo+ICAgICAgKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCj4gICAgICArICogTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwNCj4gICAgICArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KPiAgICAgICsgKiBUSEUgU09G
VFdBUkUuDQo+ICAgICAgKyAqDQo+ICAgICAgKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCj4gICAg
ICArICovDQo+ICAgICAgKw0KPiAgICAgICsjaWZuZGVmIF9fVE1NSU5UUklOX0gNCj4gICAgICAr
I2RlZmluZSBfX1RNTUlOVFJJTl9IDQo+ICAgICAgKw0KPiAgICAgICsjaW5jbHVkZSA8cG1taW50
cmluLmg+DQo+ICAgICAgKw0KPiAgICAgICsvKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRl
cyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovDQo+ICAgICAgKyNpZmRlZiBfX0dO
VUNfXw0KPiAgICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChf
X2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gICAg
ICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fZ251X2lu
bGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiAgICAgICsjZWxz
ZQ0KPiAgICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzc2UzIiksIF9fbWluX3Zl
Y3Rvcl93aWR0aF9fKDY0KSkpDQo+ICAgICAgKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX01N
WCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0
X18oIm1teCxzc3NlMyIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KPiAgICAgICsjZW5k
aWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2Yg
ZWFjaCBvZiB0aGUgcGFja2VkIDgtYml0IHNpZ25lZA0KPiAgICAgICsvLy8gICAgaW50ZWdlcnMg
aW4gdGhlIHNvdXJjZSBvcGVyYW5kIGFuZCBzdG9yZXMgdGhlIDgtYml0IHVuc2lnbmVkIGludGVn
ZXINCj4gICAgICArLy8vICAgIHJlc3VsdHMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFCU0IgaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs4IHggaThdLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9m
IHRoZQ0KPiAgICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21t
X2Fic19waTgoX19tNjQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3BhYnNiKChfX3Y4cWkpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBw
YWNrZWQgOC1iaXQgc2lnbmVkDQo+ICAgICAgKy8vLyAgICBpbnRlZ2VycyBpbiB0aGUgc291cmNl
IG9wZXJhbmQgYW5kIHN0b3JlcyB0aGUgOC1iaXQgdW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsv
Ly8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEFCU0IgaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hYnNfZXBpOChf
X20xMjhpIF9fYSkNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX3BhYnNiMTI4KChfX3YxNnFpKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFj
a2VkIDE2LWJpdCBzaWduZWQNCj4gICAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ug
b3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsv
Ly8gICAgcmVzdWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQQUJTVyBpbnN0cnVjdGlvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDY0LWJp
dCB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KPiAgICAg
ICsvLy8gICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2Fic19waTE2KF9f
bTY0IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9wYWJzdygoX192NGhpKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDE2LWJp
dCBzaWduZWQNCj4gICAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBh
bmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgcmVz
dWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEFCU1cgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8g
ICAgZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hYnNfZXBpMTYoX19tMTI4aSBf
X2EpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wYWJzdzEyOCgoX192OGhpKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDMyLWJp
dCBzaWduZWQNCj4gICAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBh
bmQgc3RvcmVzIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgcmVz
dWx0cyBpbiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQQUJTRCBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAg
ZWxlbWVudHMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0
IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2Fic19waTMyKF9fbTY0IF9fYSkN
Cj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWJz
ZCgoX192MnNpKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wdXRl
cyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDMyLWJpdCBzaWduZWQN
Cj4gICAgICArLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVz
IHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgcmVzdWx0cyBpbiB0
aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSBcYyBWUEFCU0QgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGkzMl0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZWxlbWVu
dHMgaW4gdGhlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hYnNfZXBpMzIoX19tMTI4aSBfX2EpDQo+ICAg
ICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWJzZDEy
OCgoX192NHNpKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb25jYXRl
bmF0ZXMgdGhlIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmRzLCBhbmQNCj4gICAg
ICArLy8vICAgIHJpZ2h0LXNoaWZ0cyB0aGUgcmVzdWx0IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMg
c3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUNCj4gICAgICArLy8vICAgIG9wZXJhbmQuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBfX20xMjhpIF9tbV9hbGlnbnJfZXBp
OChfX20xMjhpIGEsIF9fbTEyOGkgYiwgY29uc3QgaW50IG4pOw0KPiAgICAgICsvLy8gXGVuZGNv
ZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgXGMgUEFMSUdOUiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBi
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIG4NCj4gICAg
ICArLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1hbnkgYnl0ZXMg
dG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb25jYXRlbmF0ZWQgcmlnaHQtc2hpZnRl
ZA0KPiAgICAgICsvLy8gICAgdmFsdWUuDQo+ICAgICAgKyNkZWZpbmUgX21tX2FsaWducl9lcGk4
KGEsIGIsIG4pIFwNCj4gICAgICArICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWxpZ25yMTI4
KChfX3YxNnFpKShfX20xMjhpKShhKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAobikpDQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29uY2F0ZW5hdGVzIHRoZSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJh
bmRzLCBhbmQgcmlnaHQtc2hpZnRzDQo+ICAgICAgKy8vLyAgICB0aGUgcmVzdWx0IGJ5IHRoZSBu
dW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGNvZGUNCj4gICAgICArLy8vIF9fbTY0IF9tbV9hbGlnbnJfcGk4KF9f
bTY0IGEsIF9fbTY0IGIsIGNvbnN0IGludCBuKTsNCj4gICAgICArLy8vIFxlbmRjb2RlDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxj
IFBBTElHTlIgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIGEN
Cj4gICAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIGINCj4gICAgICAr
Ly8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIG4NCj4gICAgICArLy8vICAgIEFu
IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1hbnkgYnl0ZXMgdG8gcmlnaHQtc2hp
ZnQgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByaWdodC1zaGlmdGVkDQo+ICAgICAgKy8v
LyAgICB2YWx1ZS4NCj4gICAgICArI2RlZmluZSBfbW1fYWxpZ25yX3BpOChhLCBiLCBuKSBcDQo+
ICAgICAgKyAgKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhbGlnbnIoKF9fdjhxaSkoX19tNjQpKGEp
LCAoX192OHFpKShfX202NCkoYiksIChuKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBIb3Jpem9u
dGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBh
Y2tlZA0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs4IHggaTE2XS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSEFE
RFcgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFsIHN1
bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCj4gICAgICArLy8vICAgIGhvcml6b250YWwgc3VtcyBv
ZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQo+ICAgICAg
Ky8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0KPiAgICAg
ICsvLy8gICAgYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2hhZGRfZXBpMTYoX19tMTI4aSBfX2Es
IF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTEyOGkpX19i
dWlsdGluX2lhMzJfcGhhZGR3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQg
cGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZA0KPiAgICAgICsvLy8gICAgMTI4
LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTMyXS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSEFEREQgaW5zdHJ1Y3Rpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4g
VGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3Rv
cmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24u
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUN
Cj4gICAgICArLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQg
aW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5p
bmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0KPiAgICAgICsvLy8gICAgYm90aCBvcGVyYW5kcy4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX2hhZGRfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGhhZGRkMTI4KChf
X3Y0c2kpX19hLCAoX192NHNpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5l
ZCBpbiAyIHBhY2tlZA0KPiAgICAgICsvLy8gICAgNjQtYml0IHZlY3RvcnMgb2YgWzQgeCBpMTZd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
XGMgUEhBRERXIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9u
dGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRo
ZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+
ICAgICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBz
dW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUNCj4g
ICAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQg
dmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YgYm90
aA0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2hhZGRfcGkxNihfX202NCBf
X2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1
aWx0aW5faWEzMl9waGFkZHcoKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWly
cyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQo+ICAgICAgKy8vLyAgICA2NC1iaXQg
dmVjdG9ycyBvZiBbMiB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQSEFEREQgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9m
IFsyIHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCj4g
ICAgICArLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4g
dGhlIGxvd2VyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4
IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAg
Ky8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1
cHBlciBiaXRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhv
cml6b250YWwgc3VtcyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAgICAr
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtf
bW1faGFkZF9waTMyKF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
ICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BoYWRkZCgoX192MnNpKV9fYSwgKF9fdjJz
aSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gSG9yaXpvbnRhbGx5IGFk
ZHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMiBwYWNrZWQNCj4g
ICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbOCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMg
Z3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUNCj4gICAgICArLy8vICAgIHNhdHVyYXRlZCB0byAweDdG
RkYuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvDQo+ICAg
ICAgKy8vLyAgICAweDgwMDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhBRERTVyBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCj4g
ICAgICArLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4g
dGhlIGxvd2VyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzgg
eCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KPiAgICAg
ICsvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUg
dXBwZXIgYml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUg
aG9yaXpvbnRhbCBzYXR1cmF0ZWQNCj4gICAgICArLy8vICAgIHN1bXMgb2YgYm90aCBvcGVyYW5k
cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX2hhZGRzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAg
ICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BoYWRkc3cx
MjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29u
dGFpbmVkIGluIDIgcGFja2VkDQo+ICAgICAgKy8vLyAgICA2NC1iaXQgdmVjdG9ycyBvZiBbNCB4
IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUNCj4gICAgICArLy8v
ICAgIHNhdHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBh
cmUgc2F0dXJhdGVkIHRvDQo+ICAgICAgKy8vLyAgICAweDgwMDAuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQSEFERFNXIGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZh
bHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAg
ZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDY0
LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMg
YXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIGRlc3Rp
bmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2
XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZA0KPiAgICAgICsvLy8gICAgc3Vt
cyBvZiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RF
RkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAgK19tbV9oYWRkc19waTE2KF9fbTY0IF9fYSwgX19t
NjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BoYWRkc3coKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJz
IG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KPiAgICAgICsvLy8gICAgcGFja2VkIDEyOC1iaXQg
dmVjdG9ycyBvZiBbOCB4IGkxNl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJXIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0K
PiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMg
YXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KPiAgICAgICsvLy8gICAgdGhlIGRlc3Rp
bmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhl
IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mDQo+ICAgICAgKy8vLyAgICB0
aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzDQo+ICAgICAg
Ky8vLyAgICBvZiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1faHN1Yl9lcGkxNihfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9waHN1YncxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCj4gICAg
ICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFk
amFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KPiAgICAgICsvLy8gICAgcGFj
a2VkIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkzMl0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJEIGluc3RydWN0aW9uLg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVu
IHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KPiAgICAgICsvLy8g
ICAgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2Vz
IGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBiaXRzIG9mDQo+ICAg
ICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZlcmVu
Y2VzDQo+ICAgICAgKy8vLyAgICBvZiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1faHN1Yl9lcGkz
MihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waHN1YmQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEhvcml6b250YWxseSBzdWJ0
cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMg0KPiAgICAg
ICsvLy8gICAgcGFja2VkIDY0LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIU1VCVyBpbnN0
cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZg0KPiAg
ICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCj4gICAgICArLy8vICAgIGhvcml6b250YWwgZGlm
ZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMg
b2YNCj4gICAgICArLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5z
IEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBk
aWZmZXJlbmNlcw0KPiAgICAgICsvLy8gICAgb2YgYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1f
aHN1Yl9waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Boc3VidygoX192NGhpKV9fYSwgKF9fdjRoaSlf
X2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gSG9yaXpvbnRhbGx5IHN1YnRy
YWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyDQo+ICAgICAg
Ky8vLyAgICBwYWNrZWQgNjQtYml0IHZlY3RvcnMgb2YgWzIgeCBpMzJdLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEhTVUJEIGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2Vz
IGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQo+ICAg
ICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBkaWZm
ZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBv
Zg0KPiAgICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRp
ZmZlcmVuY2VzDQo+ICAgICAgKy8vLyAgICBvZiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAgK19tbV9o
c3ViX3BpMzIoX19tNjQgX19hLCBfX202NCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhzdWJkKChfX3Yyc2kpX19hLCAoX192MnNpKV9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBIb3Jpem9udGFsbHkgc3VidHJh
Y3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDINCj4gICAgICAr
Ly8vICAgIHBhY2tlZCAxMjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLiBQb3NpdGl2ZSBkaWZm
ZXJlbmNlcyBncmVhdGVyIHRoYW4NCj4gICAgICArLy8vICAgIDB4N0ZGRiBhcmUgc2F0dXJhdGVk
IHRvIDB4N0ZGRi4gTmVnYXRpdmUgZGlmZmVyZW5jZXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUNCj4g
ICAgICArLy8vICAgIHNhdHVyYXRlZCB0byAweDgwMDAuDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUEhTVUJTVyBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLiBUaGUNCj4gICAgICArLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2Vl
biB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCj4gICAgICArLy8v
ICAgIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuIFRoZQ0KPiAgICAgICsvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZg0KPiAg
ICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzYXR1cmF0
ZWQNCj4gICAgICArLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9oc3Vic19lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9waHN1YnN3MTI4KChfX3Y4aGkp
X19hLCAoX192OGhpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBIb3Jp
em9udGFsbHkgc3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVk
IGluIDINCj4gICAgICArLy8vICAgIHBhY2tlZCA2NC1iaXQgdmVjdG9ycyBvZiBbNCB4IGkxNl0u
IFBvc2l0aXZlIGRpZmZlcmVuY2VzIGdyZWF0ZXIgdGhhbg0KPiAgICAgICsvLy8gICAgMHg3RkZG
IGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBkaWZmZXJlbmNlcyBsZXNzIHRoYW4g
MHg4MDAwIGFyZQ0KPiAgICAgICsvLy8gICAgc2F0dXJhdGVkIHRvIDB4ODAwMC4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBIU1VCU1cg
aW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCj4gICAgICArLy8vICAgIGhvcml6b250YWwgZGlmZmVy
ZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YN
Cj4gICAgICArLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IN
Cj4gICAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQo+ICAgICAgKy8vLyAgICBob3Jpem9udGFs
IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSB1cHBlciBi
aXRzIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250
YWwgc2F0dXJhdGVkDQo+ICAgICAgKy8vLyAgICBkaWZmZXJlbmNlcyBvZiBib3RoIG9wZXJhbmRz
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1Y
DQo+ICAgICAgK19tbV9oc3Vic19waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Boc3Vic3coKF9fdjRo
aSlfX2EsIChfX3Y0aGkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE11
bHRpcGxpZXMgY29ycmVzcG9uZGluZyBwYWlycyBvZiBwYWNrZWQgOC1iaXQgdW5zaWduZWQgaW50
ZWdlcg0KPiAgICAgICsvLy8gICAgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNl
IG9wZXJhbmQgYW5kIHBhY2tlZCA4LWJpdCBzaWduZWQNCj4gICAgICArLy8vICAgIGludGVnZXIg
dmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLCBhZGRzIHBhaXJz
IG9mDQo+ICAgICAgKy8vLyAgICBjb250aWd1b3VzIHByb2R1Y3RzIHdpdGggc2lnbmVkIHNhdHVy
YXRpb24sIGFuZCB3cml0ZXMgdGhlIDE2LWJpdCBzdW1zIHRvDQo+ICAgICAgKy8vLyAgICB0aGUg
Y29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyAgICBGb3IgZXhhbXBsZSwgYml0cyBbNzowXSBvZiBib3RoIG9wZXJhbmRzIGFyZSBt
dWx0aXBsaWVkLCBiaXRzIFsxNTo4XSBvZg0KPiAgICAgICsvLy8gICAgYm90aCBvcGVyYW5kcyBh
cmUgbXVsdGlwbGllZCwgYW5kIHRoZSBzdW0gb2YgYm90aCByZXN1bHRzIGlzIHdyaXR0ZW4gdG8N
Cj4gICAgICArLy8vICAgIGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQTUFERFVC
U1cgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGZpcnN0
IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNlY29uZCBzb3VyY2Ugb3Bl
cmFuZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSBzdW1zIG9mIHByb2R1Y3RzIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJh
bmRzOiBcbg0KPiAgICAgICsvLy8gICAgXGEgUjAgOj0gKFxhIF9fYTAgKiBcYSBfX2IwKSArIChc
YSBfX2ExICogXGEgX19iMSkgXG4NCj4gICAgICArLy8vICAgIFxhIFIxIDo9IChcYSBfX2EyICog
XGEgX19iMikgKyAoXGEgX19hMyAqIFxhIF9fYjMpIFxuDQo+ICAgICAgKy8vLyAgICBcYSBSMiA6
PSAoXGEgX19hNCAqIFxhIF9fYjQpICsgKFxhIF9fYTUgKiBcYSBfX2I1KSBcbg0KPiAgICAgICsv
Ly8gICAgXGEgUjMgOj0gKFxhIF9fYTYgKiBcYSBfX2I2KSArIChcYSBfX2E3ICogXGEgX19iNykg
XG4NCj4gICAgICArLy8vICAgIFxhIFI0IDo9IChcYSBfX2E4ICogXGEgX19iOCkgKyAoXGEgX19h
OSAqIFxhIF9fYjkpIFxuDQo+ICAgICAgKy8vLyAgICBcYSBSNSA6PSAoXGEgX19hMTAgKiBcYSBf
X2IxMCkgKyAoXGEgX19hMTEgKiBcYSBfX2IxMSkgXG4NCj4gICAgICArLy8vICAgIFxhIFI2IDo9
IChcYSBfX2ExMiAqIFxhIF9fYjEyKSArIChcYSBfX2ExMyAqIFxhIF9fYjEzKSBcbg0KPiAgICAg
ICsvLy8gICAgXGEgUjcgOj0gKFxhIF9fYTE0ICogXGEgX19iMTQpICsgKFxhIF9fYTE1ICogXGEg
X19iMTUpDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV9tYWRkdWJzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bt
YWRkdWJzdzEyOCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBNdWx0aXBsaWVzIGNvcnJlc3BvbmRpbmcgcGFpcnMgb2YgcGFja2Vk
IDgtYml0IHVuc2lnbmVkIGludGVnZXINCj4gICAgICArLy8vICAgIHZhbHVlcyBjb250YWluZWQg
aW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kIGFuZCBwYWNrZWQgOC1iaXQgc2lnbmVkDQo+ICAg
ICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIHNlY29uZCBzb3VyY2Ug
b3BlcmFuZCwgYWRkcyBwYWlycyBvZg0KPiAgICAgICsvLy8gICAgY29udGlndW91cyBwcm9kdWN0
cyB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgd3JpdGVzIHRoZSAxNi1iaXQgc3VtcyB0bw0K
PiAgICAgICsvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgRm9yIGV4YW1wbGUsIGJpdHMgWzc6MF0gb2Yg
Ym90aCBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCwgYml0cyBbMTU6OF0gb2YNCj4gICAgICArLy8v
ICAgIGJvdGggb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQsIGFuZCB0aGUgc3VtIG9mIGJvdGggcmVz
dWx0cyBpcyB3cml0dGVuIHRvDQo+ICAgICAgKy8vLyAgICBiaXRzIFsxNTowXSBvZiB0aGUgZGVz
dGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSBcYyBQTUFERFVCU1cgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
DQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBz
ZWNvbmQgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdW1zIG9mIHByb2R1Y3RzIG9mIGJvdGgNCj4gICAg
ICArLy8vICAgIG9wZXJhbmRzOiBcbg0KPiAgICAgICsvLy8gICAgXGEgUjAgOj0gKFxhIF9fYTAg
KiBcYSBfX2IwKSArIChcYSBfX2ExICogXGEgX19iMSkgXG4NCj4gICAgICArLy8vICAgIFxhIFIx
IDo9IChcYSBfX2EyICogXGEgX19iMikgKyAoXGEgX19hMyAqIFxhIF9fYjMpIFxuDQo+ICAgICAg
Ky8vLyAgICBcYSBSMiA6PSAoXGEgX19hNCAqIFxhIF9fYjQpICsgKFxhIF9fYTUgKiBcYSBfX2I1
KSBcbg0KPiAgICAgICsvLy8gICAgXGEgUjMgOj0gKFxhIF9fYTYgKiBcYSBfX2I2KSArIChcYSBf
X2E3ICogXGEgX19iNykNCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fbWFkZHVic19waTE2KF9fbTY0IF9fYSwgX19tNjQg
X19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BtYWRkdWJzdygoX192OHFpKV9fYSwgKF9fdjhxaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gTXVsdGlwbGllcyBwYWNrZWQgMTYtYml0IHNpZ25lZCBpbnRlZ2VyIHZh
bHVlcywgdHJ1bmNhdGVzIHRoZSAzMi1iaXQNCj4gICAgICArLy8vICAgIHByb2R1Y3RzIHRvIHRo
ZSAxOCBtb3N0IHNpZ25pZmljYW50IGJpdHMgYnkgcmlnaHQtc2hpZnRpbmcsIHJvdW5kcyB0aGUN
Cj4gICAgICArLy8vICAgIHRydW5jYXRlZCB2YWx1ZSBieSBhZGRpbmcgMSwgYW5kIHdyaXRlcyBi
aXRzIFsxNjoxXSB0byB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUE1VTEhSU1cgaW5zdHJ1Y3Rpb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250
YWluaW5nIHRoZSByb3VuZGVkIGFuZCBzY2FsZWQNCj4gICAgICArLy8vICAgIHByb2R1Y3RzIG9m
IGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tdWxocnNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEy
OGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu
X2lhMzJfcG11bGhyc3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIE11bHRpcGxpZXMgcGFja2VkIDE2LWJpdCBzaWduZWQgaW50
ZWdlciB2YWx1ZXMsIHRydW5jYXRlcyB0aGUgMzItYml0DQo+ICAgICAgKy8vLyAgICBwcm9kdWN0
cyB0byB0aGUgMTggbW9zdCBzaWduaWZpY2FudCBiaXRzIGJ5IHJpZ2h0LXNoaWZ0aW5nLCByb3Vu
ZHMgdGhlDQo+ICAgICAgKy8vLyAgICB0cnVuY2F0ZWQgdmFsdWUgYnkgYWRkaW5nIDEsIGFuZCB3
cml0ZXMgYml0cyBbMTY6MV0gdG8gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUE1VTEhSU1cgaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1i
aXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBj
b250YWluaW5nIHRoZSByb3VuZGVkIGFuZCBzY2FsZWQNCj4gICAgICArLy8vICAgIHByb2R1Y3Rz
IG9mIGJvdGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX211bGhyc19waTE2KF9fbTY0IF9fYSwgX19t
NjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BtdWxocnN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBDb3BpZXMgdGhlIDgtYml0IGludGVnZXJzIGZyb20gYSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24gb3IgY2xl
YXJzIDgtYml0IHZhbHVlcyBpbiB0aGUgZGVzdGluYXRpb24sIGFzIHNwZWNpZmllZCBieQ0KPiAg
ICAgICsvLy8gICAgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQU0hVRkIgaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3Bp
ZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8NCj4g
ICAgICArLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb246DQo+ICAgICAgKy8vLyAg
ICBCaXQgNzogXG4NCj4gICAgICArLy8vICAgIDE6IENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5
dGUgaW4gdGhlIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMDogQ29weSB0aGUgc2Vs
ZWN0ZWQgc291cmNlIGJ5dGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUNCj4gICAg
ICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbNjo0XSBSZXNl
cnZlZC4gIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFszOjBdIHNlbGVjdCB0aGUgc291cmNlIGJ5
dGUgdG8gYmUgY29waWVkLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBvciBjbGVhcmVkIHZhbHVlcy4NCj4gICAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X3NodWZmbGVfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2h1ZmIxMjgoKF9fdjE2cWkp
X19hLCAoX192MTZxaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29w
aWVzIHRoZSA4LWJpdCBpbnRlZ2VycyBmcm9tIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIHRvIHRo
ZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24gb3IgY2xlYXJzIDgtYml0IHZhbHVlcyBpbiB0
aGUgZGVzdGluYXRpb24sIGFzIHNwZWNpZmllZCBieQ0KPiAgICAgICsvLy8gICAgdGhlIHNlY29u
ZCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIFxjIFBTSFVGQiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBj
b250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8NCj4gICAgICArLy8vICAgIHBvc2l0aW9ucyBp
biB0aGUgZGVzdGluYXRpb246DQo+ICAgICAgKy8vLyAgICBCaXQgNzogXG4NCj4gICAgICArLy8v
ICAgIDE6IENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4gdGhlIGRlc3RpbmF0aW9uLiBc
bg0KPiAgICAgICsvLy8gICAgMDogQ29weSB0aGUgc2VsZWN0ZWQgc291cmNlIGJ5dGUgdG8gdGhl
IGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBc
bg0KPiAgICAgICsvLy8gICAgQml0cyBbMzowXSBzZWxlY3QgdGhlIHNvdXJjZSBieXRlIHRvIGJl
IGNvcGllZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGNvcGllZCBvciBjbGVhcmVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fc2h1ZmZs
ZV9waTgoX19tNjQgX19hLCBfX202NCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcHNodWZiKChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBGb3IgZWFjaCA4LWJpdCBpbnRlZ2Vy
IGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCj4gICAgICArLy8v
ICAgIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3Vy
Y2Ugb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBJZiB0aGUgYnl0ZSBpbiB0
aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KPiAgICAg
ICsvLy8gICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyBieXRlIGluIHRoZSBmaXJz
dCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0DQo+ICAgICAgKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVz
dGluYXRpb24uIElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0K
PiAgICAgICsvLy8gICAgY29weSB0aGUgY29ycmVzcG9uZGluZyBieXRlIGZyb20gdGhlIGZpcnN0
IHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmDQo+ICAgICAgKy8vLyAgICB0aGUgYnl0ZSBp
biB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyBieXRl
IGluDQo+ICAgICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUFNJR05CIGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVk
Lg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3JyZXNwb25kaW5nIHRvDQo+ICAg
ICAgKy8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2
YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV9zaWduX2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNpZ25i
MTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4g
ICAgICArLy8vIEZvciBlYWNoIDE2LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3Bl
cmFuZCwgcGVyZm9ybSBvbmUgb2YNCj4gICAgICArLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0aW9u
cyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyAgICBJZiB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdh
dGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KPiAgICAgICsvLy8gICAgY29tcGxlbWVudCBvZiB0
aGUgY29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0
DQo+ICAgICAgKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSB3b3JkIGlu
IHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0KPiAgICAgICsvLy8gICAgY29weSB0aGUg
Y29ycmVzcG9uZGluZyB3b3JkIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRp
b24uIElmDQo+ICAgICAgKy8vLyAgICB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6
ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluDQo+ICAgICAgKy8vLyAgICB0aGUg
ZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSBcYyBWUFNJR05XIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KPiAgICAgICsvLy8gXHBhcmFtIF9f
Yg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29u
dHJvbCB3b3JkcyBjb3JyZXNwb25kaW5nIHRvDQo+ICAgICAgKy8vLyAgICBwb3NpdGlvbnMgaW4g
dGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zaWduX2Vw
aTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0
dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzaWdudzEyOCgoX192OGhpKV9fYSwgKF9fdjho
aSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gRm9yIGVhY2ggMzItYml0
IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZg0KPiAg
ICAgICsvLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUgc2Vj
b25kIHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIElmIHRoZSBk
b3VibGV3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhl
IHR3bydzDQo+ICAgICAgKy8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIHdv
cmQgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQNCj4gICAgICArLy8vICAgIHZh
bHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZCBz
b3VyY2UgaXMNCj4gICAgICArLy8vICAgIHBvc2l0aXZlLCBjb3B5IHRoZSBjb3JyZXNwb25kaW5n
IHdvcmQgZnJvbSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGlu
YXRpb24uIElmIHRoZSBkb3VibGV3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNs
ZWFyIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyB3b3JkIGluIHRoZSBkZXN0aW5h
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIFxjIFZQU0lHTkQgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIGRv
dWJsZXdvcmRzIGNvcnJlc3BvbmRpbmcgdG8NCj4gICAgICArLy8vICAgIHBvc2l0aW9ucyBpbiB0
aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NpZ25fZXBp
MzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNpZ25kMTI4KChfX3Y0c2kpX19hLCAoX192NHNp
KV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBGb3IgZWFjaCA4LWJpdCBp
bnRlZ2VyIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCj4gICAg
ICArLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29u
ZCBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBJZiB0aGUgYnl0
ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0K
PiAgICAgICsvLy8gICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyBieXRlIGluIHRo
ZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0DQo+ICAgICAgKy8vLyAgICB2YWx1ZSB0byB0
aGUgZGVzdGluYXRpb24uIElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0
aXZlLA0KPiAgICAgICsvLy8gICAgY29weSB0aGUgY29ycmVzcG9uZGluZyBieXRlIGZyb20gdGhl
IGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24uIElmDQo+ICAgICAgKy8vLyAgICB0aGUg
Ynl0ZSBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyB6ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGlu
ZyBieXRlIGluDQo+ICAgICAgKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQU0lHTkIgaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIGNv
cGllZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3JyZXNwb25kaW5nIHRvDQo+
ICAgICAgKy8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50
IHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWA0KPiAgICAgICtfbW1fc2lnbl9waTgoX19tNjQgX19hLCBfX202NCBfX2IpDQo+ICAg
ICAgK3sNCj4gICAgICArICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNpZ25iKChf
X3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBGb3IgZWFjaCAxNi1iaXQgaW50ZWdlciBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQsIHBl
cmZvcm0gb25lIG9mDQo+ICAgICAgKy8vLyAgICB0aGUgZm9sbG93aW5nIGFjdGlvbnMgYXMgc3Bl
Y2lmaWVkIGJ5IHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gICAgSWYgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgbmVnYXRpdmUsIGNh
bGN1bGF0ZSB0aGUgdHdvJ3MNCj4gICAgICArLy8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGNvcnJl
c3BvbmRpbmcgd29yZCBpbiB0aGUgZmlyc3Qgc291cmNlLCBhbmQgd3JpdGUgdGhhdA0KPiAgICAg
ICsvLy8gICAgdmFsdWUgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgd29yZCBpbiB0aGUgc2Vj
b25kIHNvdXJjZSBpcyBwb3NpdGl2ZSwNCj4gICAgICArLy8vICAgIGNvcHkgdGhlIGNvcnJlc3Bv
bmRpbmcgd29yZCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZg0K
PiAgICAgICsvLy8gICAgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgemVybywgY2xl
YXIgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBpbg0KPiAgICAgICsvLy8gICAgdGhlIGRlc3RpbmF0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgXGMgUFNJR05XIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgd29yZHMg
Y29ycmVzcG9uZGluZyB0bw0KPiAgICAgICsvLy8gICAgcG9zaXRpb25zIGluIHRoZSBkZXN0aW5h
dGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX3NpZ25fcGkxNihfX202NCBf
X2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChfX202NClfX2J1
aWx0aW5faWEzMl9wc2lnbncoKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIEZvciBlYWNoIDMyLWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJz
dCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCj4gICAgICArLy8vICAgIHRoZSBmb2xs
b3dpbmcgYWN0aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vj
b25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KPiAgICAgICsvLy8g
ICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGV3b3JkIGluIHRoZSBmaXJz
dCBzb3VyY2UsIGFuZA0KPiAgICAgICsvLy8gICAgd3JpdGUgdGhhdCB2YWx1ZSB0byB0aGUgZGVz
dGluYXRpb24uIElmIHRoZSBkb3VibGV3b3JkIGluIHRoZSBzZWNvbmQNCj4gICAgICArLy8vICAg
IHNvdXJjZSBpcyBwb3NpdGl2ZSwgY29weSB0aGUgY29ycmVzcG9uZGluZyBkb3VibGV3b3JkIGZy
b20gdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLiBJ
ZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcw0KPiAgICAgICsvLy8gICAg
emVybywgY2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgZG91Ymxld29yZCBpbiB0aGUgZGVzdGluYXRp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSBcYyBQU0lHTkQgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICAr
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdHdvIGNvbnRyb2wgZG91
Ymxld29yZHMgY29ycmVzcG9uZGluZw0KPiAgICAgICsvLy8gICAgdG8gcG9zaXRpb25zIGluIHRo
ZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFudCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX3NpZ25fcGkz
MihfX202NCBfX2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wc2lnbmQoKF9fdjJzaSlfX2EsIChfX3Yyc2kpX19iKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICsNCj4gICAgICArI2Vu
ZGlmIC8qIF9fVE1NSU5UUklOX0ggKi8NCj4gICAgICBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94bW1p
bnRyaW4uaCBiL2luY2x1ZGUveG1taW50cmluLmgNCj4gICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KPiAgICAgIGluZGV4IDAwMDAwMDAuLmUyNTQzYTcNCj4gICAgICAtLS0gL2Rldi9udWxsDQo+
ICAgICAgKysrIGIvaW5jbHVkZS94bW1pbnRyaW4uaA0KPiAgICAgIEBAIC0wLDAgKzEsMzEwMSBA
QA0KPiAgICAgICsvKj09PS0tLS0geG1taW50cmluLmggLSBTU0UgaW50cmluc2ljcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQo+ICAgICAgKyAqDQo+ICAgICAgKyAq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkNCj4gICAgICArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwNCj4g
ICAgICArICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KPiAgICAgICsgKiB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs
DQo+ICAgICAgKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u
cyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KPiAgICAgICsgKiBmdXJuaXNoZWQgdG8gZG8gc28s
IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiAgICAgICsgKg0KPiAgICAg
ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiAgICAgICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gICAgICArICoNCj4gICAgICArICogVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1INCj4gICAgICArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+ICAgICAgKyAqIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQ0KPiAgICAgICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQo+ICAgICAgKyAqIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sDQo+ICAgICAgKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCj4gICAgICAr
ICogVEhFIFNPRlRXQVJFLg0KPiAgICAgICsgKg0KPiAgICAgICsgKj09PS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
PT09DQo+ICAgICAgKyAqLw0KPiAgICAgICsNCj4gICAgICArI2lmbmRlZiBfX1hNTUlOVFJJTl9I
DQo+ICAgICAgKyNkZWZpbmUgX19YTU1JTlRSSU5fSA0KPiAgICAgICsNCj4gICAgICArI2luY2x1
ZGUgPG1taW50cmluLmg+DQo+ICAgICAgKw0KPiAgICAgICt0eXBlZGVmIGludCBfX3Y0c2kgX19h
dHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KPiAgICAgICt0eXBlZGVmIGZsb2F0
IF9fdjRzZiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQo+ICAgICAgK3R5
cGVkZWYgZmxvYXQgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsN
Cj4gICAgICArDQo+ICAgICAgKy8qIFVuc2lnbmVkIHR5cGVzICovDQo+ICAgICAgK3R5cGVkZWYg
dW5zaWduZWQgaW50IF9fdjRzdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7
DQo+ICAgICAgKw0KPiAgICAgICsvKiBUaGlzIGhlYWRlciBzaG91bGQgb25seSBiZSBpbmNsdWRl
ZCBpbiBhIGhvc3RlZCBlbnZpcm9ubWVudCBhcyBpdCBkZXBlbmRzIG9uDQo+ICAgICAgKyAqIGEg
c3RhbmRhcmQgbGlicmFyeSB0byBwcm92aWRlIGFsbG9jYXRpb24gcm91dGluZXMuICovDQo+ICAg
ICAgKyNpZiBfX1NURENfSE9TVEVEX18NCj4gICAgICArI2luY2x1ZGUgPG1tX21hbGxvYy5oPg0K
PiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8qIERlZmluZSB0aGUgZGVmYXVsdCBh
dHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCj4gICAgICArI2lm
ZGVmICBfX0dOVUNfXw0KPiAgICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJp
YnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f
KSkNCj4gICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18o
KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiAg
ICAgICsjZWxzZQ0KPiAgICAgICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZSIpLCBf
X21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkNCj4gICAgICArI2RlZmluZSBfX0RFRkFVTFRfRk5f
QVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywg
X190YXJnZXRfXygibW14LHNzZSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KPiAgICAg
ICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKyNkZWZpbmUgX01NX1NIVUZGTEUoeiwgeSwgeCwg
dykgKCgoeikgPDwgNikgfCAoKHkpIDw8IDQpIHwgKCh4KSA8PCAyKSB8ICh3KSkNCj4gICAgICAr
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQWRkcyB0aGUgMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0
aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTUyAvIEFERFNTIDwvYz4g
aW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vICAgIFRoZSBsb3dlciAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQo+ICAgICAgKy8v
LyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAg
ICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1
bGF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHN1bQ0KPiAgICAgICsvLy8gICAg
b2YgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMg
YXJlIGNvcGllZCBmcm9tDQo+ICAgICAgKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUg
Zmlyc3Qgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2FkZF9zcyhfX20xMjggX19hLCBfX20xMjgg
X19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19hWzBdICs9IF9fYlswXTsNCj4gICAgICArICBy
ZXR1cm4gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQWRkcyB0d28gMTI4
LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cyBvZg0K
PiAgICAgICsvLy8gICAgdGhlIGFkZGl0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERQUyAvIEFERFBTIDwvYz4gaW5zdHJ1
Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBv
cGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICAgICtfbW1fYWRkX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAg
K3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilfX2EgKyAoX192NHNmKV9fYik7
DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdWJ0cmFjdHMgdGhlIDMyLWJpdCBm
bG9hdCB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIHNlY29uZA0KPiAgICAgICsv
Ly8gICAgb3BlcmFuZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBmaXJzdCBv
cGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZTVUJTUyAvIFNVQlNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWludWVuZC4gVGhlIGxvd2VyIDMyIGJpdHMN
Cj4gICAgICArLy8vICAgIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRp
b24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuIFRoZSBsb3dlciAz
Mg0KPiAgICAgICsvLy8gICAgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNh
bGN1bGF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBk
aWZmZXJlbmNlIG9mIHRoZSBsb3dlciAzMiBiaXRzIG9mIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBl
ciA5NiBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAgY29waWVkIGZyb20gdGhlIHVwcGVyIDk2IGJp
dHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zdWJfc3MoX19tMTI4IF9f
YSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIF9fYVswXSAtPSBfX2JbMF07DQo+
ICAgICAgKyAgcmV0dXJuIF9fYTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN1
YnRyYWN0cyBlYWNoIG9mIHRoZSB2YWx1ZXMgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGZyb20gdGhl
IGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kLCBib3RoIG9mIHdoaWNoIGFyZSAxMjgtYml0
IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gYW5kIHJldHVybnMNCj4gICAgICArLy8vICAgIHRoZSBy
ZXN1bHRzIG9mIHRoZSBzdWJ0cmFjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCUFMgLyBTVUJQUyA8L2M+IGluc3RydWN0
aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmQuDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRp
ZmZlcmVuY2VzIGJldHdlZW4NCj4gICAgICArLy8vICAgIGJvdGggb3BlcmFuZHMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X3N1Yl9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0
dXJuIChfX20xMjgpKChfX3Y0c2YpX19hIC0gKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gTXVsdGlwbGllcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0
aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTVVM
U1MgLyBNVUxTUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyAgICBU
aGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0
aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KPiAgICAgICsvLy8gICAgVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1
c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcHJvZHVjdCBvZiB0aGUgbG93ZXIN
Cj4gICAgICArLy8vICAgIDMyIGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJp
dHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA5Ng0KPiAgICAgICsvLy8gICAgYml0cyBvZiB0
aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX211bF9zcyhfX20xMjggX19hLCBfX20x
MjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19hWzBdICo9IF9fYlswXTsNCj4gICAgICAr
ICByZXR1cm4gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTXVsdGlwbGll
cyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZQ0KPiAg
ICAgICsvLy8gICAgcmVzdWx0cyBvZiB0aGUgbXVsdGlwbGljYXRpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1VTFBTIC8gTVVM
UFMgPC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3Ro
DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbXVsX3BzKF9fbTEyOCBfX2EsIF9f
bTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilf
X2EgKiAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBEaXZp
ZGVzIHRoZSB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIDMyIGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJh
bmQgYnkNCj4gICAgICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNv
bmQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWRElWU1MgLyBESVZTUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlkZW5kLiBUaGUgbG93ZXIgMzIN
Cj4gICAgICArLy8vICAgIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjYWxj
dWxhdGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aXNvci4gVGhlIGxvd2Vy
IDMyIGJpdHMNCj4gICAgICArLy8vICAgIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUg
Y2FsY3VsYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiB0aGUNCj4gICAgICArLy8vICAg
IGxvd2VyIDMyIGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNv
cGllZCBmcm9tIHRoZQ0KPiAgICAgICsvLy8gICAgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qg
c291cmNlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2Rpdl9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgX19hWzBdIC89IF9fYlswXTsNCj4gICAgICArICByZXR1cm4g
X19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gRGl2aWRlcyB0d28gMTI4LWJp
dCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQUyAvIERJVlBTIDwvYz4gaW5zdHJ1Y3Rp
b25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aWRlbmQu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGRpdmlzb3IuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHF1b3Rp
ZW50cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fZGl2X3BzKF9f
bTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEy
OCkoKF9fdjRzZilfX2EgLyAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgc3RvcmVkIGlu
IHRoZSBsb3ctb3JkZXIgYml0cw0KPiAgICAgICsvLy8gICAgb2YgYSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWU1FSVFNTIC8gU1FSVFNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KPiAgICAgICsv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBzcXVhcmUgcm9vdCBvZiB0aGUNCj4gICAgICArLy8vICAgIHZhbHVlIGluIHRoZSBsb3ctb3Jk
ZXIgYml0cyBvZiB0aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3FydF9zcyhfX20xMjggX19hKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc3FydHNzKChf
X3Y0c2YpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENhbGN1bGF0ZXMg
dGhlIHNxdWFyZSByb290cyBvZiB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDEyOC1iaXQgdmVjdG9y
DQo+ICAgICAgKy8vLyAgICBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBTIC8gU1FSVFBTIDwvYz4g
aW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAg
ICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNx
dWFyZSByb290cyBvZiB0aGUNCj4gICAgICArLy8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fc3FydF9wcyhfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IF9fYnVpbHRpbl9pYTMyX3NxcnRwcygoX192NHNmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8vLyBDYWxjdWxhdGVzIHRoZSBhcHByb3hpbWF0ZSByZWNpcHJvY2FsIG9mIHRo
ZSB2YWx1ZSBzdG9yZWQgaW4gdGhlDQo+ICAgICAgKy8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBh
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZSQ1BTUyAvIFJDUFNTIDwvYz4gaW5z
dHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNhbGN1bGF0
aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBhcHByb3hpbWF0ZQ0KPiAgICAgICsvLy8gICAgcmVjaXByb2NhbCBv
ZiB0aGUgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBvcGVyYW5kLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9yY3Bfc3MoX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4
KV9fYnVpbHRpbl9pYTMyX3JjcHNzKChfX3Y0c2YpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENhbGN1bGF0ZXMgdGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWxzIG9mIHRo
ZSB2YWx1ZXMgc3RvcmVkIGluIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZSQ1BQUyAvIFJDUFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGFwcHJveGltYXRlDQo+ICAgICAgKy8vLyAg
ICByZWNpcHJvY2FscyBvZiB0aGUgdmFsdWVzIGluIHRoZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9yY3Bf
cHMoX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVp
bHRpbl9pYTMyX3JjcHBzKChfX3Y0c2YpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIENhbGN1bGF0ZXMgdGhlIGFwcHJveGltYXRlIHJlY2lwcm9jYWwgb2YgdGhlIHNxdWFy
ZSByb290IG9mIHRoZSB2YWx1ZQ0KPiAgICAgICsvLy8gICAgc3RvcmVkIGluIHRoZSBsb3ctb3Jk
ZXIgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZSU1FSVFNTIC8g
UlNRUlRTUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBU
aGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2Vk
IGluIHRoZSBjYWxjdWxhdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYXBwcm94aW1hdGUNCj4gICAgICArLy8v
ICAgIHJlY2lwcm9jYWwgb2YgdGhlIHNxdWFyZSByb290IG9mIHRoZSB2YWx1ZSBpbiB0aGUgbG93
LW9yZGVyIGJpdHMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9yc3Fy
dF9zcyhfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX3JzcXJ0c3MoKF9fdjRzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gQ2FsY3VsYXRlcyB0aGUgYXBwcm94aW1hdGUgcmVjaXByb2NhbHMgb2YgdGhlIHNxdWFyZSBy
b290cyBvZiB0aGUNCj4gICAgICArLy8vICAgIHZhbHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUlNRUlRQUyAvIFJTUVJUUFMgPC9jPiBpbnN0cnVjdGlv
bnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYXBwcm94aW1hdGUN
Cj4gICAgICArLy8vICAgIHJlY2lwcm9jYWxzIG9mIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlIHZh
bHVlcyBpbiB0aGUgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9f
REVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fcnNxcnRfcHMoX19tMTI4IF9fYSkNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9yc3FydHBzKChfX3Y0c2YpX19h
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQg
ZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAgICAgKy8vLyAg
ICBvcGVyYW5kcyBhbmQgcmV0dXJucyB0aGUgbGVzc2VyIHZhbHVlIGluIHRoZSBsb3ctb3JkZXIg
Yml0cyBvZiB0aGUNCj4gICAgICArLy8vICAgIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUlO
U1MgLyBNSU5TUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAg
ICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCj4g
ICAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21w
YXJpc29uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBtaW5p
bXVtIHZhbHVlIGJldHdlZW4gYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNv
cGllZCBmcm9tDQo+ICAgICAgKy8vLyAgICB0aGUgdXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qg
c291cmNlIG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX21pbl9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnNzKChfX3Y0c2Yp
X19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21w
YXJlcyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZSBs
ZXNzZXINCj4gICAgICArLy8vICAgIG9mIGVhY2ggcGFpciBvZiB2YWx1ZXMuDQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlBTIC8g
TUlOUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFt
IF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWluaW11bSB2YWx1ZXMNCj4gICAgICArLy8v
ICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbWluX3BzKF9fbTEyOCBfX2EsIF9f
bTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfbWlu
cHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAg
ICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIg
Yml0cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcyBhbmQgcmV0dXJucyB0aGUgZ3Jl
YXRlciB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0DQo+ICAgICAgKy8v
LyAgICB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFNTIC8gTUFYU1MgPC9jPiBpbnN0cnVj
dGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
b3BlcmFuZHMuIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9m
IHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0
cyBjb250YWluIHRoZQ0KPiAgICAgICsvLy8gICAgbWF4aW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGgg
b3BlcmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KPiAgICAgICsvLy8g
ICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9tYXhfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9tYXhzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdHdvIDEyOC1iaXQgdmVjdG9y
cyBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgZ3JlYXRlcg0KPiAgICAgICsvLy8gICAg
b2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFYUFMgLyBNQVhQUyA8L2M+IGluc3RydWN0aW9u
cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVy
YW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KPiAg
ICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBtYXhpbXVtIHZhbHVlcw0KPiAgICAgICsvLy8gICAgYmV0d2VlbiBib3RoIG9wZXJh
bmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbV9tYXhfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9tYXhwcygoX192NHNmKV9fYSwgKF9fdjRz
ZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVyZm9ybXMgYSBiaXR3
aXNlIEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBTkRQUyAv
IEFORFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQo+ICAgICAgKy8vLyAgICB2YWx1ZXMg
YmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9hbmRfcHMoX19tMTI4IF9fYSwgX19tMTI4
IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KSgoX192NHN1KV9fYSAm
IChfX3Y0c3UpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFBlcmZvcm1z
IGEgYml0d2lzZSBBTkQgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgdXNp
bmcNCj4gICAgICArLy8vICAgIHRoZSBvbmUncyBjb21wbGVtZW50IG9mIHRoZSB2YWx1ZXMgY29u
dGFpbmVkIGluIHRoZSBmaXJzdCBzb3VyY2UNCj4gICAgICArLy8vICAgIG9wZXJhbmQuDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFO
RE5QUyAvIEFORE5QUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLiBUaGUNCj4gICAgICArLy8v
ICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBiaXR3aXNl
IEFORC4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5k
Lg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUNCj4gICAgICArLy8vICAgIG9uZSdzIGNv
bXBsZW1lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYW5kIHRoZSB2YWx1ZXMgaW4gdGhlIHNlY29u
ZA0KPiAgICAgICsvLy8gICAgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fYW5kbm90X3BzKF9fbTEyOCBfX2Es
IF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOCkofihfX3Y0
c3UpX19hICYgKF9fdjRzdSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8g
UGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9h
dF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVk9SUFMgLyBPUlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
Yml0d2lzZSBPUiBvZiB0aGUNCj4gICAgICArLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3Bl
cmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX29yX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sN
Cj4gICAgICArICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzdSlfX2EgfCAoX192NHN1KV9fYik7DQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgZXhjbHVz
aXZlIE9SIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YNCj4gICAgICArLy8vICAgIFs0IHggZmxv
YXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZYT1JQUyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgYml0d2lzZSBleGNsdXNpdmUgT1INCj4gICAgICArLy8vICAgIG9mIHRoZSB2YWx1ZXMgYmV0
d2VlbiBib3RoIG9wZXJhbmRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV94b3JfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9f
YikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KSgoX192NHN1KV9fYSBeIChf
X3Y0c3UpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3
byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAg
ICAgKy8vLyAgICBvcGVyYW5kcyBmb3IgZXF1YWxpdHkgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBv
ZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUNCj4gICAgICArLy8vICAgIGxvdy1vcmRlciBiaXRzIG9m
IGEgdmVjdG9yIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVNTIC8gQ01QRVFTUyA8L2M+IGluc3RydWN0
aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBv
cGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMNCj4gICAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCj4g
ICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fY21wZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAg
ICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGVxc3MoKF9fdjRzZilfX2EsIChf
X3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVh
Y2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCj4gICAg
ICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBmb3IgZXF1YWxpdHkuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkNNUEVRUFMgLyBDTVBFUVBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX2NtcGVxX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBlcXBzKChfX3Y0c2YpX19h
LCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJl
cyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0K
PiAgICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUg
Zmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gdGhlDQo+ICAgICAgKy8vLyAgICBjb3JyZXNwb25k
aW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9m
IHRoZQ0KPiAgICAgICsvLy8gICAgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2Yg
YSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExUU1MgLyBDTVBMVFNTIDwvYz4gaW5zdHJ1
Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBv
ZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cw0KPiAgICAgICsvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV9jbXBsdF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbHRzcygoX192NHNmKV9fYSwg
KF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMg
ZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KPiAg
ICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBp
ZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBhcmUgbGVz
cyB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRQUyAvIENNUExUUFMg
PC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21wbHRfcHMo
X19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9pYTMyX2NtcGx0cHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQg
dmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVy
YW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGxl
c3MgdGhhbiBvcg0KPiAgICAgICsvLy8gICAgZXF1YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFs
dWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KPiAgICAgICsvLy8gICAg
cmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3Rv
ciBvZg0KPiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFU1MgLyBDTVBMRVNTIDwv
Yz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAg
MzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KPiAgICAgICsvLy8gICAgaW4gdGhlIGxvdy1vcmRl
ciBiaXRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQo+ICAgICAgK19tbV9jbXBsZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbGVzcygoX192
NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8g
Q29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9m
IHRoZQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRl
dGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KPiAgICAgICsvLy8gICAgb3BlcmFu
ZCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWQ01QTEVQUyAvIENNUExFUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0
cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0K
PiAgICAgICtfbW1fY21wbGVfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGxlcHMoKF9fdjRzZilf
X2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBh
cmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3Ro
DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRo
ZSBmaXJzdCBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbg0KPiAgICAgICsvLy8gICAgdGhlIGNvcnJl
c3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1
bHQgb2YNCj4gICAgICArLy8vICAgIHRoZSBjb21wYXJpc29uIGluIHRoZSBsb3ctb3JkZXIgYml0
cyBvZiBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRTUyAvIENNUExUU1MgPC9jPiBp
bnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBv
ZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBi
aXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICAr
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgY29tcGFyaXNvbiByZXN1bHRzDQo+ICAgICAgKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJp
dHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX2NtcGd0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sN
Cj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVp
bHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX2EsIChfX3Y0c2YpDQo+ICAgICAgKwkJX19idWls
dGluX2lhMzJfY21wbHRzcyAoKF9fdjRzZikgX19iLCAoX192NHNmKSBfX2EpKTsNCj4gICAgICAr
I2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rvcigo
X192NHNmKV9fYSwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoX192NHNmKV9fYnVpbHRpbl9pYTMyX2NtcGx0c3MoKF9fdjRzZilfX2IsIChfX3Y0c2Yp
X19hKSwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LCAxLCAyLCAzKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAg
Ky8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0g
dG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBv
cGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
TVBMVFBTIC8gQ01QTFRQUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV9jbXBndF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbHRwcygoX192NHNmKV9fYiwg
KF9fdjRzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMg
dHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCj4g
ICAgICArLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZp
cnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuDQo+ICAgICAgKy8vLyAgICBvciBlcXVhbCB0byB0
aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMN
Cj4gICAgICArLy8vICAgIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QTEVTUyAvIENNUExFU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KPiAgICAg
ICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlz
b24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxv
d2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0
aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQo+ICAgICAgKy8v
LyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcGdlX3NzKF9fbTEyOCBfX2Es
IF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAg
KyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX2EsIChf
X3Y0c2YpDQo+ICAgICAgKwkJX19idWlsdGluX2lhMzJfY21wbGVzcyAoKF9fdjRzZikgX19iLCAo
X192NHNmKSBfX2EpKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICByZXR1cm4gKF9fbTEyOClf
X2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwNCj4gICAgICArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fYnVpbHRpbl9pYTMyX2NtcGxl
c3MoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKSwNCj4gICAgICArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsNCj4gICAgICArI2VuZGlmDQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAxMjgtYml0
IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhl
IGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwg
dG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMRVBTIC8gQ01QTEVQUyA8L2M+
IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBnZV9wcyhfX20x
MjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgp
X19idWlsdGluX2lhMzJfY21wbGVwcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJhbmRz
IGZvciBpbmVxdWFsaXR5IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24g
aW4gdGhlDQo+ICAgICAgKy8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QTkVRU1MgLyBDTVBORVFTUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3Ry
dWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3Bl
cmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2IN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBj
b21wYXJpc29uIHJlc3VsdHMNCj4gICAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAg
ICAgICtfbW1fY21wbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBuZXFzcygoX192NHNmKV9f
YSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFy
ZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0K
PiAgICAgICsvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGZvciBpbmVxdWFs
aXR5Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZDTVBORVFQUyAvIENNUE5FUVBTIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rp
b25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19i
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcG5lcV9wcyhfX20xMjggX19hLCBf
X20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGlu
X2lhMzJfY21wbmVxcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAg
ICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRo
ZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRl
cm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBsZXNzIHRoYW4N
Cj4gICAgICArLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3Bl
cmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mDQo+ICAgICAgKy8vLyAgICB0aGUgY29tcGFy
aXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkNNUE5MVFNTIC8gQ01QTkxUU1MgPC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlvbnMuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMu
IFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3Bl
cmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzDQo+ICAgICAgKy8vLyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQo+ICAgICAgK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2Nt
cG5sdF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0
dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmx0c3MoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCj4gICAgICArLy8v
ICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZh
bHVlcyBpbiB0aGUgZmlyc3QNCj4gICAgICArLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRo
YW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRQUyAvIENNUE5MVFBTIDwv
Yz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICAr
X21tX2NtcG5sdF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmx0cHMoKF9fdjRzZilfX2EsIChf
X3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3
byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAg
ICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJz
dCBvcGVyYW5kIGlzIG5vdCBsZXNzIHRoYW4NCj4gICAgICArLy8vICAgIG9yIGVxdWFsIHRvIHRo
ZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucw0K
PiAgICAgICsvLy8gICAgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9y
ZGVyIGJpdHMgb2YgYSB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFs0IHggZmxvYXRdLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
TVBOTEVTUyAvIENNUE5MRVNTIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBU
aGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2Vk
IGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
b3BlcmFuZHMuIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJh
bmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cw0KPiAgICAgICsvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBu
bGVfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVy
biAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5sZXNzKChfX3Y0c2YpX19hLCAoX192NHNmKV9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQo+ICAgICAgKy8vLyAg
ICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1
ZXMgaW4gdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFUFMgLyBD
TVBOTEVQUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1
bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQo+ICAgICAgK19tbV9jbXBubGVfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICAr
ew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5sZXBzKChfX3Y0
c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2Yg
Ym90aA0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBp
biB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBub3QgZ3JlYXRlcg0KPiAgICAgICsvLy8gICAgdGhhbiB0
aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMg
dGhlDQo+ICAgICAgKy8vLyAgICByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QTkxUU1MgLyBDTVBOTFRTUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4g
VGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNl
ZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJl
c3VsdHMNCj4gICAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21w
bmd0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArDQo+ICAg
ICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5f
aWEzMl9tb3ZzcyAoKF9fdjRzZikgX19hLCAoX192NHNmKQ0KPiAgICAgICsJCV9fYnVpbHRpbl9p
YTMyX2NtcG5sdHNzICgoX192NHNmKSBfX2IsIChfX3Y0c2YpIF9fYSkpOw0KPiAgICAgICsjZWxz
ZQ0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0
c2YpX19hLA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChfX3Y0c2YpX19idWlsdGluX2lhMzJfY21wbmx0c3MoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19h
KSwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAx
LCAyLCAzKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMg
b2YgdGhlDQo+ICAgICAgKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8g
ZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQo+ICAgICAgKy8vLyAgICBvcGVy
YW5kIGFyZSBub3QgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QTkxUUFMgLyBDTVBOTFRQUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXBuZ3RfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9f
YikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2Nt
cG5sdHBzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9y
ZGVyIGJpdHMgb2YgYm90aA0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlm
IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBub3QgZ3JlYXRlcg0KPiAgICAgICsv
Ly8gICAgdGhhbiBvciBlcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vj
b25kIG9wZXJhbmQgYW5kDQo+ICAgICAgKy8vLyAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhl
IGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yDQo+ICAgICAgKy8v
LyAgICBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFU1MgLyBDTVBOTEVTUyA8L2M+DQo+ICAgICAg
Ky8vLyAgIGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19h
DQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8v
IFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8v
ICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCj4gICAgICArLy8vICAgIGluIHRoZSBsb3ct
b3JkZXIgYml0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fY21wbmdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+
ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20x
MjgpIF9fYnVpbHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX2EsIChfX3Y0c2YpDQo+ICAgICAg
KwkJX19idWlsdGluX2lhMzJfY21wbmxlc3MgKChfX3Y0c2YpIF9fYiwgKF9fdjRzZikgX19hKSk7
DQo+ICAgICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX3NodWZm
bGV2ZWN0b3IoKF9fdjRzZilfX2EsDQo+ICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fdjRzZilfX2J1aWx0aW5faWEzMl9jbXBubGVzcygoX192NHNmKV9f
YiwgKF9fdjRzZilfX2EpLA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQsIDEsIDIsIDMpOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0
IGZsb2F0IHZhbHVlcyBvZiB0aGUNCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBb
NCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCj4gICAg
ICArLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2Ug
aW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQUyAvIENNUE5MRVBTIDwvYz4NCj4gICAg
ICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAgK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NtcG5n
ZV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJu
IChfX20xMjgpX19idWlsdGluX2lhMzJfY21wbmxlcHMoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19h
KTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3byAzMi1iaXQg
ZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAgICAgKy8vLyAg
ICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5k
IGlzIG9yZGVyZWQgd2l0aA0KPiAgICAgICsvLy8gICAgcmVzcGVjdCB0byB0aGUgY29ycmVzcG9u
ZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlDQo+ICAgICAg
Ky8vLyAgICByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9m
IGEgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QT1JEU1MgLyBD
TVBPUkRTUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQo+
ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBU
aGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2Vk
IGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCj4gICAg
ICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21wb3JkX3NzKF9fbTEy
OCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTEyOClf
X2J1aWx0aW5faWEzMl9jbXBvcmRzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9u
ZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCB2
ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBm
aXJzdA0KPiAgICAgICsvLy8gICAgb3BlcmFuZCBhcmUgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8g
dGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBPUkRQUyAvIENNUE9SRFBTIDwvYz4N
Cj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxw
YXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21t
X2NtcG9yZF9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wb3JkcHMoKF9fdjRzZilfX2EsIChfX3Y0
c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIHR3byAz
Mi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQo+ICAgICAg
Ky8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBv
cGVyYW5kIGlzIHVub3JkZXJlZA0KPiAgICAgICsvLy8gICAgd2l0aCByZXNwZWN0IHRvIHRoZSBj
b3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQNCj4gICAgICArLy8v
ICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVy
IGJpdHMgb2YgYSB2ZWN0b3INCj4gICAgICArLy8vICAgIG9mIFs0IHggZmxvYXRdLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBV
Tk9SRFNTIC8gQ01QVU5PUkRTUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4g
VGhlIGxvd2VyDQo+ICAgICAgKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNl
ZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVy
YW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJl
c3VsdHMNCj4gICAgICArLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY21w
dW5vcmRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJl
dHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcHVub3Jkc3MoKF9fdjRzZilfX2EsIChfX3Y0
c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXBhcmVzIGVhY2gg
b2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCj4gICAgICAr
Ly8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhl
IHZhbHVlcyBpbiB0aGUgZmlyc3QNCj4gICAgICArLy8vICAgIG9wZXJhbmQgYXJlIHVub3JkZXJl
ZCB3aXRoIHJlc3BlY3QgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBVTk9S
RFBTIC8gQ01QVU5PUkRQUyA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jbXB1bm9yZF9wcyhfX20xMjggX19hLCBfX20xMjggX19i
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21w
dW5vcmRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJhbmRzIGZvciBlcXVhbGl0eSBh
bmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMg
TmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU1MgLyBDT01JU1MgPC9jPg0KPiAgICAgICsvLy8g
ICBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4g
SWYgZWl0aGVyIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMg
aXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jb21pZXFfc3MoX19tMTI4IF9fYSwgX19tMTI4
IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pZXEo
KF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0
cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZp
cnN0IG9wZXJhbmQgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQNCj4gICAgICArLy8vICAgIG9wZXJh
bmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVz
IGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNTIDwvYz4NCj4gICAgICAr
Ly8vICAgaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dl
ciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhl
IGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9w
ZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQo+ICAgICAgKy8vLyAgICAgbG93ZXIgMzItYml0IHZh
bHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGlu
dCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2NvbWlsdF9zcyhfX20xMjggX19hLCBf
X20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2Nv
bWlsdCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRl
ciBiaXRzIG9mIGJvdGgNCj4gICAgICArLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0
aGUgZmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlDQo+ICAgICAgKy8v
LyAgICBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJp
c29uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxv
d2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU1MgLyBDT01J
U1MgPC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
YQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxv
d2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0
aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMg
b3BlcmFuZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgICBsb3dlciAzMi1iaXQg
dmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18g
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY29taWxlX3NzKF9fbTEyOCBfX2Es
IF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJf
Y29taWxlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9y
ZGVyIGJpdHMgb2YgYm90aA0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlm
IHRoZSBmaXJzdCBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kDQo+ICAgICAgKy8v
LyAgICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzIt
Yml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+
IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21w
YXJpc29uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5k
IGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8v
IFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJ
ZiBlaXRoZXIgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMg
aXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4
IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pZ3Qo
KF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
Ly8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0
cyBvZiBib3RoDQo+ICAgICAgKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZp
cnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvDQo+ICAgICAgKy8vLyAgICB0
aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dl
ciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNT
IDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dl
ciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhl
IGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9w
ZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQo+ICAgICAgKy8vLyAgICBsb3dlciAzMi1iaXQgdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY29taWdlX3NzKF9fbTEyOCBfX2EsIF9f
bTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29t
aWdlKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVy
IGJpdHMgb2YgYm90aA0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRo
ZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBlcXVhbCB0byB0aGUgc2Vjb25kDQo+ICAgICAgKy8vLyAg
ICBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0
IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTUyAvIENPTUlTUyA8L2M+IGlu
c3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJp
c29uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFy
ZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBl
aXRoZXIgb2YgdGhlDQo+ICAgICAgKy8vLyAgICAgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMg
TmFOLCAxIGlzIHJldHVybmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZB
VUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jb21pbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taW5lcSgo
X192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2
YWx1ZXMgdXNpbmcNCj4gICAgICArLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9w
ZXJhbmRzIHRvIGRldGVybWluZSBlcXVhbGl0eSBhbmQgcmV0dXJucw0KPiAgICAgICsvLy8gICAg
dGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyAg
ICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyBy
ZXR1cm5lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFy
ZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxw
YXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
IFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCj4gICAgICArLy8vICAgIHVz
ZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNv
bnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCj4g
ICAgICArLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4N
Cj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fdWNvbWllcV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pZXEoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFBlcmZvcm1zIGFuIHVub3Jk
ZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIHVzaW5nDQo+ICAgICAg
Ky8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVyYW5kcyB0byBkZXRlcm1pbmUg
aWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCj4gICAgICArLy8vICAgIGxlc3MgdGhhbiB0aGUgc2Vj
b25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1i
aXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9j
PiBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAg
ICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8v
LyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4g
SWYgZWl0aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMg
aXMgTmFOLCAwIGlzIHJldHVybmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV91Y29taWx0X3NzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWls
dCgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAg
ICsvLy8gUGVyZm9ybXMgYW4gdW5vcmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9h
dCB2YWx1ZXMgdXNpbmcNCj4gICAgICArLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3Ro
IG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcw0KPiAgICAgICsv
Ly8gICAgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJu
cyB0aGUgcmVzdWx0IG9mIHRoZQ0KPiAgICAgICsvLy8gICAgY29tcGFyaXNvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTUyAvIFVDT01JU1MgPC9jPiBpbnN0
cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNv
bi4NCj4gICAgICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUN
Cj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0
aGVyIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5h
TiwgMCBpcyByZXR1cm5lZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVM
VF9GTl9BVFRSUw0KPiAgICAgICtfbW1fdWNvbWlsZV9zcyhfX20xMjggX19hLCBfX20xMjggX19i
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pbGUoKF9f
djRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8v
IFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFs
dWVzIHVzaW5nDQo+ICAgICAgKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVy
YW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCj4gICAgICArLy8vICAg
IGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBv
ZiB0aGUNCj4gICAgICArLy8vICAgIGNvbXBhcmlzb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAg
aXMgcmV0dXJuZWQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlVDT01JU1MgLyBVQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFu
ZCBhcmUNCj4gICAgICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQo+ICAgICAgKy8v
LyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAg
ICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQW4gaW50ZWdl
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdv
DQo+ICAgICAgKy8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJu
ZWQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4g
ICAgICArX21tX3Vjb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taWd0KChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBQZXJmb3JtcyBhbiB1
bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0IGZsb2F0IHZhbHVlcyB1c2luZw0KPiAg
ICAgICsvLy8gICAgdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGggb3BlcmFuZHMgdG8gZGV0ZXJt
aW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzDQo+ICAgICAgKy8vLyAgICBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YN
Cj4gICAgICArLy8vICAgIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
ICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlz
IHJldHVybmVkLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAg
dXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIg
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0K
PiAgICAgICsvLy8gICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAg
ICAgK19tbV91Y29taWdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4g
ICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlnZSgoX192NHNmKV9fYSwgKF9fdjRz
ZilfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gUGVyZm9ybXMgYW4gdW5v
cmRlcmVkIGNvbXBhcmlzb24gb2YgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgdXNpbmcNCj4gICAg
ICArLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWlu
ZSBpbmVxdWFsaXR5IGFuZCByZXR1cm5zDQo+ICAgICAgKy8vLyAgICB0aGUgcmVzdWx0IG9mIHRo
ZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIElmIGVpdGhlciBvZiB0
aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09N
SVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAg
ICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFy
aXNvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KPiAgICAgICsvLy8gICAgbG93
ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3Vjb21pbmVxX3Nz
KF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19i
dWlsdGluX2lhMzJfdWNvbWluZXEoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVk
IGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVjdG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4
IGZsb2F0XSBpbnRvIGEgMzItYml0IGludGVnZXIuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNTMlNJIC8gQ1ZUU1MyU0kgPC9j
Pg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlvbnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAg
dXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMzItYml0IGlu
dGVnZXIgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnRzc19zaTMyKF9f
bTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0
c3Myc2koKF9fdjRzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29u
dmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2
ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdl
ci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ1ZUU1MyU0kgLyBDVlRTUzJTSSA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9u
cy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KPiAg
ICAgICsvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0
ZWQgdmFsdWUuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX2N2dF9zczJzaShfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAg
KyAgcmV0dXJuIF9tbV9jdnRzc19zaTMyKF9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKyNpZmRlZiBfX3g4Nl82NF9fDQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgYSBm
bG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YN
Cj4gICAgICArLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSA2NC1iaXQgaW50ZWdlci4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8v
Lw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZU
U1MyU0kgLyBDVlRTUzJTSSA8L2M+DQo+ICAgICAgKy8vLyAgIGluc3RydWN0aW9ucy4NCj4gICAg
ICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUu
DQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX2N2dHNzX3NpNjQoX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsg
IHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzczJzaTY0KChfX3Y0c2YpX19hKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVy
dHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KPiAg
ICAgICsvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IENWVFBTMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
XHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0
IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2N2dHBzX3BpMzIoX19tMTI4IF9f
YSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0
cHMycGkoKF9fdjRzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29u
dmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0K
PiAgICAgICsvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBp
MzJdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IENWVFBTMlBJIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2N2dF9wczJwaShfX20xMjgg
X19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9tbV9jdnRwc19waTMyKF9fYSk7DQo+
ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb252ZXJ0cyBhIGZsb2F0IHZhbHVlIGNv
bnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZg0KPiAgICAgICsvLy8g
ICAgWzQgeCBmbG9hdF0gaW50byBhIDMyLWJpdCBpbnRlZ2VyLCB0cnVuY2F0aW5nIHRoZSByZXN1
bHQgd2hlbiBpdCBpcw0KPiAgICAgICsvLy8gICAgaW5leGFjdC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFNTMlNJIC8gQ1ZU
VFNTMlNJIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rpb25zLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCj4gICAg
ICArLy8vICAgIHVzZWQgaW4gdGhlIGNvbnZlcnNpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCj4gICAgICAr
c3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0
dHNzX3NpMzIoX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0
aW5faWEzMl9jdnR0c3Myc2koKF9fdjRzZilfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMy
IGJpdHMgb2YgYSB2ZWN0b3Igb2YNCj4gICAgICArLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAz
Mi1iaXQgaW50ZWdlciwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQgaXMNCj4gICAgICAr
Ly8vICAgIGluZXhhY3QuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTUzJTSSAvIENWVFRTUzJTSSA8L2M+DQo+ICAgICAgKy8v
LyAgIGluc3RydWN0aW9ucy4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIg
MzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQo+ICAgICAgKy8vLyAgICB1c2VkIGluIHRoZSBj
b252ZXJzaW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWlu
aW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dHRfc3Myc2koX19tMTI4IF9fYSkNCj4g
ICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW1fY3Z0dHNzX3NpMzIoX19hKTsNCj4gICAgICAr
fQ0KPiAgICAgICsNCj4gICAgICArI2lmZGVmIF9feDg2XzY0X18NCj4gICAgICArLy8vIENvbnZl
cnRzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVj
dG9yIG9mDQo+ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IGludGVnZXIs
IHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzDQo+ICAgICAgKy8vLyAgICBpbmV4YWN0
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDVlRUU1MyU0kgLyBDVlRUU1MyU0kgPC9jPg0KPiAgICAgICsvLy8gICBpbnN0cnVjdGlv
bnMuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZQ0KPiAgICAgICsvLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCj4g
ICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgY29udmVy
dGVkIHZhbHVlLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxU
X0ZOX0FUVFJTDQo+ICAgICAgK19tbV9jdnR0c3Nfc2k2NChfX20xMjggX19hKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaTY0KChfX3Y0c2YpX19h
KTsNCj4gICAgICArfQ0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBDb252
ZXJ0cyB0d28gbG93LW9yZGVyIGZsb2F0IHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQo+
ICAgICAgKy8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkz
Ml0sIHRydW5jYXRpbmcgdGhlIHJlc3VsdA0KPiAgICAgICsvLy8gICAgd2hlbiBpdCBpcyBpbmV4
YWN0Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IENWVFRQUzJQSSAvIFZUVFBTMlBJIDwvYz4NCj4gICAgICArLy8vICAgaW5zdHJ1Y3Rp
b25zLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+
ICAgICAgK19tbV9jdnR0cHNfcGkzMihfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnR0cHMycGkoKF9fdjRzZilfX2EpOw0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9h
dCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4DQo+ICAgICAgKy8vLyAgICBmbG9h
dF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLCB0cnVuY2F0aW5nIHRoZSByZXN1
bHQgd2hlbiBpdA0KPiAgICAgICsvLy8gICAgaXMgaW5leGFjdC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRUUFMyUEkgPC9jPiBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAg
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZh
bHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KPiAgICAgICtfbW1fY3Z0dF9wczJwaShfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAg
ICAgKyAgcmV0dXJuIF9tbV9jdnR0cHNfcGkzMihfX2EpOw0KPiAgICAgICt9DQo+ICAgICAgKw0K
PiAgICAgICsvLy8gQ29udmVydHMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgaW50byBh
IGZsb2F0aW5nIHBvaW50IHZhbHVlDQo+ICAgICAgKy8vLyAgICBhbmQgd3JpdGVzIGl0IHRvIHRo
ZSBsb3dlciAzMiBiaXRzIG9mIHRoZSBkZXN0aW5hdGlvbi4gVGhlIHJlbWFpbmluZw0KPiAgICAg
ICsvLy8gICAgaGlnaGVyIG9yZGVyIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3Ig
YXJlIGNvcGllZCBmcm9tIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50
cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU0kyU1MgLyBDVlRTSTJTUyA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFyYW0g
X19iDQo+ICAgICAgKy8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBvcGVyYW5kIGNvbnRh
aW5pbmcgdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWlu
IHRoZQ0KPiAgICAgICsvLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFu
ZC4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9tDQo+ICAgICAgKy8vLyAgICB0aGUg
dXBwZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5s
aW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0c2kzMl9zcyhf
X20xMjggX19hLCBpbnQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19hWzBdID0gX19iOw0K
PiAgICAgICsgIHJldHVybiBfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b252ZXJ0cyBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEgZmxvYXRpbmcgcG9p
bnQgdmFsdWUNCj4gICAgICArLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMyIGJp
dHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQo+ICAgICAgKy8vLyAgICBoaWdo
ZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUN
Cj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIGZpcnN0IG9wZXJh
bmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkNWVFNJMlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAg
QSAzMi1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBi
ZSBjb252ZXJ0ZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUNCj4gICAgICArLy8vICAg
IGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA5NiBiaXRz
IGFyZSBjb3BpZWQgZnJvbQ0KPiAgICAgICsvLy8gICAgdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhl
IGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dF9zaTJzcyhfX20xMjggX19hLCBpbnQgX19iKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9tbV9jdnRzaTMyX3NzKF9fYSwgX19iKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArI2lmZGVmIF9feDg2XzY0X18NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb252ZXJ0cyBhIDY0LWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEg
ZmxvYXRpbmcgcG9pbnQgdmFsdWUNCj4gICAgICArLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhl
IGxvd2VyIDMyIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQo+ICAgICAg
Ky8vLyAgICBoaWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3Bp
ZWQgZnJvbSB0aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhl
IGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAg
ICAgICsvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIgb3BlcmFuZCBjb250YWluaW5nIHRo
ZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUNCj4g
ICAgICArLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSB1
cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KPiAgICAgICsvLy8gICAgdGhlIHVwcGVyIDk2
IGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2N2dHNpNjRfc3MoX19tMTI4IF9f
YSwgbG9uZyBsb25nIF9fYikNCj4gICAgICArew0KPiAgICAgICsgIF9fYVswXSA9IF9fYjsNCj4g
ICAgICArICByZXR1cm4gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsjZW5kaWYN
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb252ZXJ0cyB0d28gZWxlbWVudHMgb2YgYSA2NC1iaXQg
dmVjdG9yIG9mIFsyIHggaTMyXSBpbnRvIHR3bw0KPiAgICAgICsvLy8gICAgZmxvYXRpbmcgcG9p
bnQgdmFsdWVzIGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUNCj4g
ICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nIGhpZ2hlciBvcmRlciBlbGVt
ZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgZnJvbSB0
aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQ
UyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAg
Ky8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBp
MzJdLiBUaGUgZWxlbWVudHMgaW4gdGhpcyB2ZWN0b3IgYXJlIGNvbnZlcnRlZA0KPiAgICAgICsv
Ly8gICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1lbnRz
IGluIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KPiAgICAg
ICsvLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVwcGVy
IDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tDQo+ICAgICAgKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0
cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2N2dHBpMzJfcHMoX19tMTI4IF9f
YSwgX19tNjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X2N2dHBpMnBzKChfX3Y0c2YpX19hLCAoX192MnNpKV9fYik7DQo+ICAgICAgK30NCj4gICAgICAr
DQo+ICAgICAgKy8vLyBDb252ZXJ0cyB0d28gZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9yIG9m
IFsyIHggaTMyXSBpbnRvIHR3bw0KPiAgICAgICsvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVz
IGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUNCj4gICAgICArLy8v
ICAgIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nIGhpZ2hlciBvcmRlciBlbGVtZW50cyBvZiB0
aGUgZGVzdGluYXRpb24gYXJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgY29ycmVz
cG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICAr
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLyBccGFy
YW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUg
ZWxlbWVudHMgaW4gdGhpcyB2ZWN0b3IgYXJlIGNvbnZlcnRlZA0KPiAgICAgICsvLy8gICAgYW5k
IHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgbG93LW9yZGVyIGVsZW1lbnRzIGluIHRoZSBk
ZXN0aW5hdGlvbi4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KPiAgICAgICsvLy8gICAg
Y29udmVydGVkIHZhbHVlIGZyb20gdGhlIHNlY29uZCBvcGVyYW5kLiBUaGUgdXBwZXIgNjQgYml0
cyBhcmUgY29waWVkDQo+ICAgICAgKy8vLyAgICBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRo
ZSBmaXJzdCBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZB
VUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fY3Z0X3BpMnBzKF9fbTEyOCBfX2EsIF9fbTY0
IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfbW1fY3Z0cGkzMl9wcyhfX2EsIF9f
Yik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBFeHRyYWN0cyBhIGZsb2F0IHZh
bHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZg0KPiAgICAg
ICsvLy8gICAgWzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCj4gICAgICArLy8v
ICAgIHVzZWQgaW4gdGhlIGV4dHJhY3Rpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDMyLWJp
dCBmbG9hdCBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgdmFsdWUuDQo+ICAgICAgK3N0YXRpYyBf
X2lubGluZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fY3Z0c3NfZjMy
KF9fbTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gX19hWzBdOw0KPiAgICAg
ICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTG9hZHMgdHdvIHBhY2tlZCBmbG9hdCB2YWx1ZXMg
ZnJvbSB0aGUgYWRkcmVzcyBcYSBfX3AgaW50byB0aGUNCj4gICAgICArLy8vICAgICBoaWdoLW9y
ZGVyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvdy1vcmRl
ciBiaXRzDQo+ICAgICAgKy8vLyAgICAgYXJlIGNvcGllZCBmcm9tIHRoZSBsb3ctb3JkZXIgYml0
cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WSFBEIC8gTU9WSFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4g
dG8gYml0cyBbNjM6MF0NCj4gICAgICArLy8vICAgIG9mIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byB0d28gcGFja2Vk
IGZsb2F0IHZhbHVlcy4gQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cw0KPiAgICAgICsv
Ly8gICAgWzEyNzo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1
ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX2xvYWRoX3BpKF9fbTEyOCBfX2EsIGNvbnN0IF9fbTY0ICpfX3ApDQo+ICAg
ICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgp
IF9fYnVpbHRpbl9pYTMyX2xvYWRocHMgKChfX3Y0c2YpX19hLCAoY29uc3QgX192MnNmICopX19w
KTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICB0eXBlZGVmIGZsb2F0IF9fbW1fbG9hZGhfcGlf
djJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDgpKSk7DQo+ICAgICAgKyAgc3Ry
dWN0IF9fbW1fbG9hZGhfcGlfc3RydWN0IHsNCj4gICAgICArICAgIF9fbW1fbG9hZGhfcGlfdjJm
MzIgX191Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KPiAgICAgICsgIF9fbW1fbG9hZGhfcGlfdjJmMzIgX19iID0gKChzdHJ1Y3QgX19t
bV9sb2FkaF9waV9zdHJ1Y3QqKV9fcCktPl9fdTsNCj4gICAgICArICBfX20xMjggX19iYiA9IF9f
YnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYiwgX19iLCAwLCAxLCAwLCAxKTsNCj4gICAgICArICBy
ZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2JiLCAwLCAxLCA0LCA1KTsNCj4g
ICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMb2FkcyB0d28g
cGFja2VkIGZsb2F0IHZhbHVlcyBmcm9tIHRoZSBhZGRyZXNzIFxhIF9fcCBpbnRvIHRoZQ0KPiAg
ICAgICsvLy8gICAgbG93LW9yZGVyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4gVGhlIGhpZ2gtb3JkZXIgYml0cw0KPiAgICAgICsvLy8gICAgYXJlIGNvcGllZCBmcm9t
IHRoZSBoaWdoLW9yZGVyIGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkxQRCAvIE1P
VkxQRCA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIEJpdHMg
WzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cw0KPiAgICAgICsvLy8gICAgWzEyNzo2NF0gb2Yg
dGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAg
QSBwb2ludGVyIHRvIHR3byBwYWNrZWQgZmxvYXQgdmFsdWVzLiBCaXRzIFs2MzowXSBhcmUgd3Jp
dHRlbiB0byBiaXRzDQo+ICAgICAgKy8vLyAgICBbNjM6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0K
PiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX2xvYWRsX3BpKF9fbTEyOCBfX2EsIGNv
bnN0IF9fbTY0ICpfX3ApDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAg
ICAgKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2xvYWRscHMgKChfX3Y0c2YpX19h
LCAoY29uc3QgX192MnNmICopX19wKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICB0eXBlZGVm
IGZsb2F0IF9fbW1fbG9hZGxfcGlfdjJmMzIgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9f
KDgpKSk7DQo+ICAgICAgKyAgc3RydWN0IF9fbW1fbG9hZGxfcGlfc3RydWN0IHsNCj4gICAgICAr
ICAgIF9fbW1fbG9hZGxfcGlfdjJmMzIgX191Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygo
X19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KPiAgICAgICsgIF9fbW1fbG9hZGxfcGlfdjJm
MzIgX19iID0gKChzdHJ1Y3QgX19tbV9sb2FkbF9waV9zdHJ1Y3QqKV9fcCktPl9fdTsNCj4gICAg
ICArICBfX20xMjggX19iYiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYiwgX19iLCAwLCAx
LCAwLCAxKTsNCj4gICAgICArICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBf
X2JiLCA0LCA1LCAyLCAzKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGUgdmVj
dG9yIGFyZSBpbml0aWFsaXplZCB3aXRoIHRoZSBzaW5nbGUtcHJlY2lzaW9uDQo+ICAgICAgKy8v
LyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZSBsb2FkZWQgZnJvbSBhIHNwZWNpZmllZCBtZW1vcnkg
bG9jYXRpb24uIFRoZSB1cHBlcg0KPiAgICAgICsvLy8gICAgOTYgYml0cyBhcmUgc2V0IHRvIHpl
cm8uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
PiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVk1PVlNTIC8gTU9WU1MgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1iaXQg
bWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBzaW5nbGUtcHJlY2lzaW9uDQo+ICAgICAgKy8v
LyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRp
YWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUN
Cj4gICAgICArLy8vICAgIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUgdmFsdWUgbG9hZGVkIGZy
b20gdGhlIG1lbW9yeSBsb2NhdGlvbi4gVGhlDQo+ICAgICAgKy8vLyAgICB1cHBlciA5NiBiaXRz
IGFyZSBzZXQgdG8gemVyby4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbG9hZF9zcyhjb25zdCBmbG9hdCAqX19wKQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgc3RydWN0IF9fbW1fbG9hZF9zc19zdHJ1Y3Qgew0KPiAgICAgICsg
ICAgZmxvYXQgX191Ow0KPiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19t
YXlfYWxpYXNfXykpOw0KPiAgICAgICsgIGZsb2F0IF9fdSA9ICgoc3RydWN0IF9fbW1fbG9hZF9z
c19zdHJ1Y3QqKV9fcCktPl9fdTsNCj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAoX19t
MTI4KXsgX191LCAwLCAwLCAwIH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBM
b2FkcyBhIDMyLWJpdCBmbG9hdCB2YWx1ZSBhbmQgZHVwbGljYXRlcyBpdCB0byBhbGwgZm91ciB2
ZWN0b3INCj4gICAgICArLy8vICAgIGVsZW1lbnRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkJST0FEQ0FTVFNTIC8gTU9WU1MgKyBzaHVmZmxpbmcgPC9jPg0KPiAgICAg
ICsvLy8gICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9f
cA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgZmxvYXQgdmFsdWUgdG8gYmUgbG9hZGVk
IGFuZCBkdXBsaWNhdGVkLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgYW5kDQo+ICAgICAgKy8vLyAgICBk
dXBsaWNhdGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fbG9hZDFfcHMoY29uc3QgZmxvYXQgKl9fcCkNCj4g
ICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX21tX2xvYWQxX3BzX3N0cnVjdCB7DQo+ICAgICAg
KyAgICBmbG9hdCBfX3U7DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBf
X21heV9hbGlhc19fKSk7DQo+ICAgICAgKyAgZmxvYXQgX191ID0gKChzdHJ1Y3QgX19tbV9sb2Fk
MV9wc19zdHJ1Y3QqKV9fcCktPl9fdTsNCj4gICAgICArICByZXR1cm4gX19leHRlbnNpb25fXyAo
X19tMTI4KXsgX191LCBfX3UsIF9fdSwgX191IH07DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAg
ICAgKyNkZWZpbmUgICAgICAgIF9tbV9sb2FkX3BzMShwKSBfbW1fbG9hZDFfcHMocCkNCj4gICAg
ICArDQo+ICAgICAgKy8vLyBMb2FkcyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGZyb20gYW4gYWxpZ25lZA0KPiAgICAgICsvLy8gICAgbWVtb3J5IGxvY2F0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgt
Yml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KPiAgICAgICsv
Ly8gICAgbG9jYXRpb24gaGFzIHRvIGJlIDEyOC1iaXQgYWxpZ25lZC4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbG9h
ZGVkIHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9G
Tl9BVFRSUw0KPiAgICAgICtfbW1fbG9hZF9wcyhjb25zdCBmbG9hdCAqX19wKQ0KPiAgICAgICt7
DQo+ICAgICAgKyAgcmV0dXJuICooX19tMTI4KilfX3A7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBMb2FkcyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGZyb20gYW4NCj4gICAgICArLy8vICAgIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1PVlVQUyAvIE1PVlVQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQg
bWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQo+ICAgICAgKy8vLyAg
ICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQo+ICAgICAgKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRl
ZCB2YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5f
QVRUUlMNCj4gICAgICArX21tX2xvYWR1X3BzKGNvbnN0IGZsb2F0ICpfX3ApDQo+ICAgICAgK3sN
Cj4gICAgICArICBzdHJ1Y3QgX19sb2FkdV9wcyB7DQo+ICAgICAgKyAgICBfX20xMjggX192Ow0K
PiAgICAgICsgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0K
PiAgICAgICsgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3BzKilfX3ApLT5fX3Y7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBMb2FkcyBmb3VyIHBhY2tlZCBmbG9hdCB2YWx1ZXMs
IGluIHJldmVyc2Ugb3JkZXIsIGZyb20gYW4gYWxpZ25lZA0KPiAgICAgICsvLy8gICAgbWVtb3J5
IGxvY2F0aW9uIHRvIDMyLWJpdCBlbGVtZW50cyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgKyBzaHVmZmxpbmcgPC9jPg0KPiAgICAgICsvLy8g
ICAgaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAg
ICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBh
ZGRyZXNzIG9mIHRoZSBtZW1vcnkNCj4gICAgICArLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAx
MjgtYml0IGFsaWduZWQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcywgbG9hZGVkDQo+ICAgICAg
Ky8vLyAgICBpbiByZXZlcnNlIG9yZGVyLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9sb2Fkcl9wcyhjb25zdCBmbG9hdCAq
X19wKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIHJldHVy
biAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zaHVmcHMgKCooX192NHNmICopX19wLCAqKF9fdjRz
ZiAqKV9fcCwgX01NX1NIVUZGTEUgKDAsMSwyLDMpKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICAr
ICBfX20xMjggX19hID0gX21tX2xvYWRfcHMoX19wKTsNCj4gICAgICArICByZXR1cm4gX19idWls
dGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsN
Cj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDcmVhdGUg
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB1bmRlZmluZWQgdmFsdWVzLg0KPiAgICAg
ICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV91bmRlZmluZWRfcHModm9pZCkNCj4gICAgICArew0KPiAgICAgICsjaWZkZWYgX19HTlVDX18N
Cj4gICAgICArICBfX20xMjggX19YID0gX19YOw0KPiAgICAgICsgIHJldHVybiBfX1g7DQo+ICAg
ICAgKyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdW5kZWYx
MjgoKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
IFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgMzIgYml0cyBvZiB0aGUgdmVjdG9yIGFyZSBpbml0
aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgc2luZ2xlLXByZWNpc2lvbg0KPiAgICAgICsvLy8g
ICAgZmxvYXRpbmctcG9pbnQgdmFsdWUuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVy
by4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WU1MgLyBNT1ZTUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBfX3cNCj4gICAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9h
dGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDMyDQo+ICAgICAg
Ky8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0
aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhl
DQo+ICAgICAgKy8vLyAgICBsb3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIHByb3ZpZGVk
IGluIHRoZSBzb3VyY2Ugb3BlcmFuZC4gVGhlDQo+ICAgICAgKy8vLyAgICB1cHBlciA5NiBiaXRz
IGFyZSBzZXQgdG8gemVyby4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2V0X3NzKGZsb2F0IF9fdykNCj4gICAgICArew0K
PiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIDAsIDAsIDAgfTsN
Cj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwgd2l0aCBlYWNoDQo+ICAgICAgKy8v
LyAgICBvZiB0aGUgZm91ciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBl
bGVtZW50cyBzZXQgdG8gdGhlDQo+ICAgICAgKy8vLyAgICBzcGVjaWZpZWQgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVSTUlMUFMgLyBQRVJNSUxQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3cNCj4gICAgICAr
Ly8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgZWFjaCB2ZWN0b3INCj4gICAgICArLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3Vs
dC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9zZXQxX3BzKGZsb2F0IF9fdykN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3cs
IF9fdywgX193LCBfX3cgfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLyogTWljcm9z
b2Z0IHNwZWNpZmljLiAqLw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLCB3aXRoIGVhY2gNCj4gICAgICArLy8vICAg
IG9mIHRoZSBmb3VyIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmVjdG9yIGVsZW1l
bnRzIHNldCB0byB0aGUNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyAvIFBFUk1JTFBTIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fdw0KPiAgICAgICsvLy8g
ICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBlYWNoIHZlY3Rvcg0KPiAgICAgICsvLy8gICAgZWxlbWVudCBvZiB0aGUgcmVzdWx0Lg0K
PiAgICAgICsvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3NldF9wczEoZmxvYXQgX193KQ0KPiAg
ICAgICt7DQo+ICAgICAgKyAgICByZXR1cm4gX21tX3NldDFfcHMoX193KTsNCj4gICAgICArfQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbNCB4IGZsb2F0XQ0KPiAgICAgICsvLy8gICAgaW5pdGlhbGl6ZWQgd2l0aCB0
aGUgc3BlY2lmaWVkIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5k
IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KPiAgICAgICsvLy8gICAgaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9feg0KPiAgICAgICsvLy8g
ICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFsxMjc6OTZdDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9feQ0KPiAgICAgICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0NCj4gICAgICAr
Ly8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX194DQo+ICAgICAgKy8v
LyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzYzOjMyXQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX3cNCj4gICAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9h
dGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0NCj4gICAgICAr
Ly8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXpl
ZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICAr
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1f
c2V0X3BzKGZsb2F0IF9feiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykNCj4gICAg
ICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9feCwg
X195LCBfX3ogfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwNCj4gICAgICAr
Ly8vICAgIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIDMy
LWJpdCBzaW5nbGUtcHJlY2lzaW9uDQo+ICAgICAgKy8vLyAgICBmbG9hdC1wb2ludCB2YWx1ZXMu
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlv
biBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQo+ICAgICAgKy8vLyAgICBp
bnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX196DQo+ICAgICAg
Ky8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzMxOjBdDQo+ICAgICAgKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9feQ0KPiAgICAgICsvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0NCj4gICAg
ICArLy8vICAgIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX194DQo+ICAgICAg
Ky8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzk1OjY0XQ0KPiAgICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4g
ICAgICArLy8vIFxwYXJhbSBfX3cNCj4gICAgICArLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2XQ0KPiAg
ICAgICsvLy8gICAgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRp
YWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAg
ICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
K19tbV9zZXRyX3BzKGZsb2F0IF9feiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykN
Cj4gICAgICArew0KPiAgICAgICsgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3os
IF9feSwgX194LCBfX3cgfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0
cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbml0
aWFsaXplZA0KPiAgICAgICsvLy8gICAgdG8gemVyby4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQUyA8L2M+IGlu
c3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdpdGgNCj4g
ICAgICArLy8vICAgIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc2V0emVyb19w
cyh2b2lkKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEy
OCl7IDAsIDAsIDAsIDAgfTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFN0b3Jl
cyB0aGUgdXBwZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRv
IGENCj4gICAgICArLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJRIC8gUEVYVFJRIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAg
ICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4NCj4gICAgICArc3Rh
dGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N0b3Jl
aF9waShfX202NCAqX19wLCBfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBf
X0dOVUNfXw0KPiAgICAgICsgIF9fYnVpbHRpbl9pYTMyX3N0b3JlaHBzKChfX3Yyc2YgKilfX3As
IChfX3Y0c2YpX19hKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICBfX2J1aWx0aW5faWEzMl9z
dG9yZWhwcygoX192MnNpICopX19wLCAoX192NHNmKV9fYSk7DQo+ICAgICAgKyNlbmRpZg0KPiAg
ICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9m
IGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYQ0KPiAgICAgICsvLy8gICAgIG1l
bW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBTIC8gTU9WTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSBwb2ludGVy
IHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMu
DQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19t
bV9zdG9yZWxfcGkoX19tNjQgKl9fcCwgX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsj
aWZkZWYgX19HTlVDX18NCj4gICAgICArICBfX2J1aWx0aW5faWEzMl9zdG9yZWxwcyAoKF9fdjJz
ZiAqKV9fcCwgKF9fdjRzZilfX2EpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIF9fYnVpbHRp
bl9pYTMyX3N0b3JlbHBzKChfX3Yyc2kgKilfX3AsIChfX3Y0c2YpX19hKTsNCj4gICAgICArI2Vu
ZGlmDQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMgdGhlIGxvd2VyIDMy
IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhDQo+ICAgICAgKy8v
LyAgICAgbWVtb3J5IGxvY2F0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTUyAvIE1PVlNTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fcA0KPiAgICAgICsvLy8gICAgQSBw
b2ludGVyIHRvIGEgMzItYml0IG1lbW9yeSBsb2NhdGlvbi4NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3RvcmVfc3MoZmxvYXQgKl9fcCwg
X19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIHN0cnVjdCBfX21tX3N0b3JlX3NzX3N0
cnVjdCB7DQo+ICAgICAgKyAgICBmbG9hdCBfX3U7DQo+ICAgICAgKyAgfSBfX2F0dHJpYnV0ZV9f
KChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQo+ICAgICAgKyAgKChzdHJ1Y3QgX19tbV9z
dG9yZV9zc19zdHJ1Y3QqKV9fcCktPl9fdSA9IF9fYVswXTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIFN0b3JlcyBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHRvIGFu
IHVuYWxpZ25lZCBtZW1vcnkNCj4gICAgICArLy8vICAgIGxvY2F0aW9uLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgLyBN
T1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0g
X19wDQo+ICAgICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlv
bi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KPiAgICAgICsvLy8gICAgbG9jYXRpb24gZG9l
cyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAg
ICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2
YWx1ZXMgdG8gYmUgc3RvcmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVG
QVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3RvcmV1X3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBf
X2EpDQo+ICAgICAgK3sNCj4gICAgICArICBzdHJ1Y3QgX19zdG9yZXVfcHMgew0KPiAgICAgICsg
ICAgX19tMTI4IF9fdjsNCj4gICAgICArICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9f
bWF5X2FsaWFzX18pKTsNCj4gICAgICArICAoKHN0cnVjdCBfX3N0b3JldV9wcyopX19wKS0+X192
ID0gX19hOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIGEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byBhbiBhbGlnbmVkIG1lbW9yeQ0KPiAgICAgICsv
Ly8gICAgbG9jYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRl
ciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5
DQo+ICAgICAgKy8vLyAgICBsb2NhdGlvbiBoYXMgdG8gYmUgMTYtYnl0ZSBhbGlnbmVkLg0KPiAg
ICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KPiAgICAgICtz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3Rv
cmVfcHMoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgICooX19t
MTI4KilfX3AgPSBfX2E7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMg
dGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRv
DQo+ICAgICAgKy8vLyAgICBmb3VyIGNvbnRpZ3VvdXMgZWxlbWVudHMgaW4gYW4gYWxpZ25lZCBt
ZW1vcnkgbG9jYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4NCj4gICAgICAr
Ly8vICAgIGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3AN
Cj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzdG9yZWQgdG8gZWFjaA0KPiAg
ICAgICsvLy8gICAgb2YgdGhlIGZvdXIgY29udGlndW91cyBlbGVtZW50cyBwb2ludGVkIGJ5IFxh
IF9fcC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMN
Cj4gICAgICArX21tX3N0b3JlMV9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KPiAgICAgICt7
DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIF9fYSA9IChfX20xMjgpX19idWls
dGluX2lhMzJfc2h1ZnBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgX01NX1NIVUZGTEUgKDAs
MCwwLDApKTsNCj4gICAgICArI2Vsc2UNCj4gICAgICArICBfX2EgPSAoX19tMTI4KV9fYnVpbHRp
bl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMCwgMCwgMCk7DQo+
ICAgICAgKyNlbmRpZg0KPiAgICAgICsgIF9tbV9zdG9yZV9wcyhfX3AsIF9fYSk7DQo+ICAgICAg
K30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvDQo+ICAgICAgKy8vLyAgICBmb3VyIGNv
bnRpZ3VvdXMgZWxlbWVudHMgaW4gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIDxjPiBWTU9WQVBTIC8g
TU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4NCj4gICAgICArLy8vICAgIGluc3RydWN0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRl
ciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0K
PiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dl
ciAzMiBiaXRzIGFyZSBzdG9yZWQgdG8gZWFjaA0KPiAgICAgICsvLy8gICAgb2YgdGhlIGZvdXIg
Y29udGlndW91cyBlbGVtZW50cyBwb2ludGVkIGJ5IFxhIF9fcC4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX3N0b3JlX3BzMShm
bG9hdCAqX19wLCBfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX21tX3N0b3JlMV9w
cyhfX3AsIF9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBTdG9yZXMgZmxv
YXQgdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhbg0KPiAg
ICAgICsvLy8gICAgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gaW4gcmV2ZXJzZSBvcmRlci4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAg
Ky8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4NCj4gICAgICArLy8vICAgIGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAg
IEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0
aGUgbWVtb3J5DQo+ICAgICAgKy8vLyAgICBsb2NhdGlvbiBoYXMgdG8gYmUgMTI4LWJpdCBhbGln
bmVkLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0K
PiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAg
ICtfbW1fc3RvcmVyX3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAg
ICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgX19hID0gX19idWlsdGluX2lhMzJfc2h1ZnBz
ICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2EsIF9NTV9TSFVGRkxFICgwLDEsMiwzKSk7DQo+ICAg
ICAgKyNlbHNlDQo+ICAgICAgKyAgX19hID0gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRz
ZilfX2EsIChfX3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsNCj4gICAgICArI2VuZGlmDQo+ICAgICAg
KyAgX21tX3N0b3JlX3BzKF9fcCwgX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
I2RlZmluZSBfTU1fSElOVF9FVDAgNw0KPiAgICAgICsjZGVmaW5lIF9NTV9ISU5UX0VUMSA2DQo+
ICAgICAgKyNkZWZpbmUgX01NX0hJTlRfVDAgIDMNCj4gICAgICArI2RlZmluZSBfTU1fSElOVF9U
MSAgMg0KPiAgICAgICsjZGVmaW5lIF9NTV9ISU5UX1QyICAxDQo+ICAgICAgKyNkZWZpbmUgX01N
X0hJTlRfTlRBIDANCj4gICAgICArDQo+ICAgICAgKyNpZm5kZWYgX01TQ19WRVINCj4gICAgICAr
LyogRklYTUU6IFdlIGhhdmUgdG8gI2RlZmluZSB0aGlzIGJlY2F1c2UgInNlbCIgbXVzdCBiZSBh
IGNvbnN0YW50IGludGVnZXIsIGFuZA0KPiAgICAgICsgICBTZW1hIGRvZXNuJ3QgZG8gYW55IGZv
cm0gb2YgY29uc3RhbnQgcHJvcGFnYXRpb24geWV0LiAqLw0KPiAgICAgICsNCj4gICAgICArLy8v
IExvYWRzIG9uZSBjYWNoZSBsaW5lIG9mIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIGFkZHJlc3Mg
dG8gYSBsb2NhdGlvbg0KPiAgICAgICsvLy8gICAgY2xvc2VyIHRvIHRoZSBwcm9jZXNzb3IuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyB2b2lkIF9tbV9wcmVmZXRjaChj
b25zdCB2b2lkICogYSwgY29uc3QgaW50IHNlbCk7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUFJFRkVUQ0hOVEEgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBccGFyYW0gYQ0KPiAgICAgICsvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9u
IGNvbnRhaW5pbmcgYSBjYWNoZSBsaW5lIG9mIGRhdGEuDQo+ICAgICAgKy8vLyBccGFyYW0gc2Vs
DQo+ICAgICAgKy8vLyAgICBBIHByZWRlZmluZWQgaW50ZWdlciBjb25zdGFudCBzcGVjaWZ5aW5n
IHRoZSB0eXBlIG9mIHByZWZldGNoDQo+ICAgICAgKy8vLyAgICBvcGVyYXRpb246IFxuDQo+ICAg
ICAgKy8vLyAgICBfTU1fSElOVF9OVEE6IE1vdmUgZGF0YSB1c2luZyB0aGUgbm9uLXRlbXBvcmFs
IGFjY2VzcyAoTlRBKSBoaW50LiBUaGUNCj4gICAgICArLy8vICAgIFBSRUZFVENITlRBIGluc3Ry
dWN0aW9uIHdpbGwgYmUgZ2VuZXJhdGVkLiBcbg0KPiAgICAgICsvLy8gICAgX01NX0hJTlRfVDA6
IE1vdmUgZGF0YSB1c2luZyB0aGUgVDAgaGludC4gVGhlIFBSRUZFVENIVDAgaW5zdHJ1Y3Rpb24g
d2lsbA0KPiAgICAgICsvLy8gICAgYmUgZ2VuZXJhdGVkLiBcbg0KPiAgICAgICsvLy8gICAgX01N
X0hJTlRfVDE6IE1vdmUgZGF0YSB1c2luZyB0aGUgVDEgaGludC4gVGhlIFBSRUZFVENIVDEgaW5z
dHJ1Y3Rpb24gd2lsbA0KPiAgICAgICsvLy8gICAgYmUgZ2VuZXJhdGVkLiBcbg0KPiAgICAgICsv
Ly8gICAgX01NX0hJTlRfVDI6IE1vdmUgZGF0YSB1c2luZyB0aGUgVDIgaGludC4gVGhlIFBSRUZF
VENIVDIgaW5zdHJ1Y3Rpb24gd2lsbA0KPiAgICAgICsvLy8gICAgYmUgZ2VuZXJhdGVkLg0KPiAg
ICAgICsjZGVmaW5lIF9tbV9wcmVmZXRjaChhLCBzZWwpIChfX2J1aWx0aW5fcHJlZmV0Y2goKHZv
aWQgKikoYSksIFwNCj4gICAgICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgoc2VsKSA+PiAyKSAmIDEsIChzZWwpICYgMHgzKSkNCj4gICAgICArI2Vu
ZGlmDQo+ICAgICAgKw0KPiAgICAgICsvLy8gU3RvcmVzIGEgNjQtYml0IGludGVnZXIgaW4gdGhl
IHNwZWNpZmllZCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8NCj4gICAgICArLy8vICAgIG1p
bmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxp
a2VseSB0byBiZQ0KPiAgICAgICsvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAg
ICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZOVFEgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19wDQo+ICAg
ICAgKy8vLyAgICBBIHBvaW50ZXIgdG8gYW4gYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdXNlZCB0
byBzdG9yZSB0aGUgcmVnaXN0ZXIgdmFsdWUuDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAg
ICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0
b3JlZC4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlNf
TU1YDQo+ICAgICAgK19tbV9zdHJlYW1fcGkoX19tNjQgKl9fcCwgX19tNjQgX19hKQ0KPiAgICAg
ICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAgICAgICsgIF9fYnVpbHRpbl9pYTMyX21v
dm50cSAoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKV9fcCwgKHVuc2lnbmVkIGxvbmcgbG9uZylfX2Ep
Ow0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIF9fYnVpbHRpbl9pYTMyX21vdm50cShfX3AsIF9f
YSk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gTW92
ZXMgcGFja2VkIGZsb2F0IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gdG8gYQ0KPiAgICAgICsvLy8gICAgMTI4LWJpdCBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4g
VG8gbWluaW1pemUgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZA0KPiAgICAgICsvLy8gICAg
YXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8v
DQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZO
VFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxwYXJhbSBfX3ANCj4gICAgICArLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlDQo+ICAgICAgKy8vLyAgICBz
aW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2ENCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtfbW1fc3RyZWFtX3BzKGZsb2F0ICpf
X3AsIF9fbTEyOCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAg
ICAgKyAgX19idWlsdGluX2lhMzJfbW92bnRwcyAoX19wLCAoX192NHNmKV9fYSk7DQo+ICAgICAg
KyNlbHNlDQo+ICAgICAgKyAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3Y0c2YpX19h
LCAoX192NHNmKilfX3ApOw0KPiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4g
ICAgICArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQo+ICAgICAgK2V4dGVybiAiQyIgew0KPiAg
ICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBGb3JjZXMgc3Ryb25nIG1lbW9yeSBv
cmRlcmluZyAoc2VyaWFsaXphdGlvbikgYmV0d2VlbiBzdG9yZQ0KPiAgICAgICsvLy8gICAgaW5z
dHJ1Y3Rpb25zIHByZWNlZGluZyB0aGlzIGluc3RydWN0aW9uIGFuZCBzdG9yZSBpbnN0cnVjdGlv
bnMgZm9sbG93aW5nDQo+ICAgICAgKy8vLyAgICB0aGlzIGluc3RydWN0aW9uLCBlbnN1cmluZyB0
aGUgc3lzdGVtIGNvbXBsZXRlcyBhbGwgcHJldmlvdXMgc3RvcmVzDQo+ICAgICAgKy8vLyAgICBi
ZWZvcmUgZXhlY3V0aW5nIHN1YnNlcXVlbnQgc3RvcmVzLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFNGRU5DRSA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArdm9pZCBfbW1fc2ZlbmNlKHZvaWQpOw0KPiAgICAg
ICsNCj4gICAgICArI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQo+ICAgICAgK30gLy8gZXh0ZXJu
ICJDIg0KPiAgICAgICsjZW5kaWYNCj4gICAgICArDQo+ICAgICAgKy8vLyBFeHRyYWN0cyAxNi1i
aXQgZWxlbWVudCBmcm9tIGEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gYW5kDQo+ICAgICAg
Ky8vLyAgICByZXR1cm5zIGl0LCBhcyBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBpbnQgX21t
X2V4dHJhY3RfcGkxNihfX202NCBhLCBpbnQgbik7DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBFWFRSVyAvIFBFWFRSVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vIFxwYXJhbSBhDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MTZdLg0KPiAgICAgICsvLy8gXHBhcmFtIG4NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSBp
bnRlZ2VyIG9wZXJhbmQgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIGJpdHMgYXJlIGV4dHJhY3RlZDog
XG4NCj4gICAgICArLy8vICAgIDA6IEJpdHMgWzE1OjBdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3Rp
bmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMTogQml0cyBbMzE6MTZdIGFyZSBjb3BpZWQgdG8g
dGhlIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMjogQml0cyBbNDc6MzJdIGFyZSBj
b3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMzogQml0cyBbNjM6
NDhdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMg
QSAxNi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgMTYgYml0cyBvZiBwYWNr
ZWQgZGF0YS4NCj4gICAgICArI2RlZmluZSBfbW1fZXh0cmFjdF9waTE2KGEsIG4pIFwNCj4gICAg
ICArICAoaW50KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRoaSgoX19tNjQpYSwgKGludCluKQ0K
PiAgICAgICsNCj4gICAgICArLy8vIENvcGllcyBkYXRhIGZyb20gdGhlIDY0LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIHRvIHRoZSBkZXN0aW5hdGlvbiwNCj4gICAgICArLy8vICAgIGFuZCBpbnNl
cnRzIHRoZSBsb3dlciAxNi1iaXRzIG9mIGFuIGludGVnZXIgb3BlcmFuZCBhdCB0aGUgMTYtYml0
IG9mZnNldA0KPiAgICAgICsvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgb3BlcmFu
ZCBcYSBuLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcY29kZQ0KPiAgICAgICsvLy8gX19tNjQgX21t
X2luc2VydF9waTE2KF9fbTY0IGEsIGludCBkLCBpbnQgbik7DQo+ICAgICAgKy8vLyBcZW5kY29k
ZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gUElOU1JXIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXHBhcmFtIGENCj4gICAgICArLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0u
DQo+ICAgICAgKy8vLyBccGFyYW0gZA0KPiAgICAgICsvLy8gICAgQW4gaW50ZWdlci4gVGhlIGxv
d2VyIDE2LWJpdCB2YWx1ZSBmcm9tIHRoaXMgb3BlcmFuZCBpcyB3cml0dGVuIHRvIHRoZQ0KPiAg
ICAgICsvLy8gICAgZGVzdGluYXRpb24gYXQgdGhlIG9mZnNldCBzcGVjaWZpZWQgYnkgb3BlcmFu
ZCBcYSBuLg0KPiAgICAgICsvLy8gXHBhcmFtIG4NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0
ZSBpbnRlZ2VyIG9wZXJhbnQgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIHRoZSBiaXRzIHRvIGJlIHVz
ZWQNCj4gICAgICArLy8vICAgIGluIHRoZSBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAg
IDA6IEJpdHMgWzE1OjBdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAg
ICsvLy8gICAgMTogQml0cyBbMzE6MTZdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBc
bg0KPiAgICAgICsvLy8gICAgMjogQml0cyBbNDc6MzJdIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3Rp
bmF0aW9uLiBcbg0KPiAgICAgICsvLy8gICAgMzogQml0cyBbNjM6NDhdIGFyZSBjb3BpZWQgdG8g
dGhlIGRlc3RpbmF0aW9uLiAgXG4NCj4gICAgICArLy8vICAgIFRoZSByZW1haW5pbmcgYml0cyBp
biB0aGUgZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nDQo+ICAg
ICAgKy8vLyAgICBiaXRzIGluIG9wZXJhbmQgXGEgYS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvcGllZCBwYWNrZWQgZGF0YSBm
cm9tIHRoZQ0KPiAgICAgICsvLy8gICAgb3BlcmFuZHMuDQo+ICAgICAgKyNkZWZpbmUgX21tX2lu
c2VydF9waTE2KGEsIGQsIG4pIFwNCj4gICAgICArICAoX19tNjQpX19idWlsdGluX2lhMzJfdmVj
X3NldF92NGhpKChfX202NClhLCAoaW50KWQsIChpbnQpbikNCj4gICAgICArDQo+ICAgICAgKy8v
LyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhY2tlZCAxNi1iaXQgaW50ZWdl
ciB2YWx1ZXMgb2YNCj4gICAgICArLy8vICAgIHRoZSA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBh
bmQgd3JpdGVzIHRoZSBncmVhdGVyIHZhbHVlIHRvIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVz
cG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUFYU1cgPC9jPiBpbnN0cnVjdGlv
bi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAg
ICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZB
VUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fbWF4X3BpMTYoX19tNjQgX19hLCBfX202NCBf
X2IpDQo+ICAgICAgK3sNCj4gICAgICArICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bt
YXhzdygoX192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAg
ICAgICsvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgOC1iaXQg
dW5zaWduZWQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAgdmFsdWVzIG9mIHRoZSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3JzLCBhbmQgd3JpdGVzIHRoZSBncmVhdGVyIHZhbHVlIHRvIHRoZQ0KPiAgICAg
ICsvLy8gICAgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUFYVUIg
PC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+
ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8g
ICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fbWF4X3B1OChfX202
NCBfX2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tNjQpX19i
dWlsdGluX2lhMzJfcG1heHViKChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQo+ICAgICAgK30N
Cj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5n
IHBhY2tlZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMgb2YNCj4gICAgICArLy8vICAgIHRoZSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQgd3JpdGVzIHRoZSBsZXNzZXIgdmFsdWUgdG8gdGhlDQo+
ICAgICAgKy8vLyAgICBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBN
SU5TVyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBf
X2ENCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAg
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291
cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KPiAgICAgICtzdGF0aWMgX19p
bmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAgK19tbV9taW5fcGkx
NihfX202NCBfX2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfcG1pbnN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNw
b25kaW5nIHBhY2tlZCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQo+ICAgICAgKy8vLyAgICB2YWx1
ZXMgb2YgdGhlIDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIGFuZCB3cml0ZXMgdGhlIGxlc3NlciB2
YWx1ZSB0byB0aGUNCj4gICAgICArLy8vICAgIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVz
dGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gUE1JTlVCIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2INCj4gICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAg
ICArX21tX21pbl9wdTgoX19tNjQgX19hLCBfX202NCBfX2IpDQo+ICAgICAgK3sNCj4gICAgICAr
ICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtaW51YigoX192OHFpKV9fYSwgKF9fdjhx
aSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gVGFrZXMgdGhlIG1vc3Qg
c2lnbmlmaWNhbnQgYml0IGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGluIGEgNjQtYml0DQo+ICAg
ICAgKy8vLyAgICBpbnRlZ2VyIHZlY3RvciB0byBjcmVhdGUgYW4gOC1iaXQgbWFzayB2YWx1ZS4g
WmVyby1leHRlbmRzIHRoZSB2YWx1ZSB0bw0KPiAgICAgICsvLy8gICAgMzItYml0IGludGVnZXIg
YW5kIHdyaXRlcyBpdCB0byB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1PVk1TS0IgPC9jPiBpbnN0cnVj
dGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgd2l0aCBiaXRz
IHRvIGJlIGV4dHJhY3RlZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIFRoZSBtb3N0IHNpZ25pZmlj
YW50IGJpdCBmcm9tIGVhY2ggOC1iaXQgZWxlbWVudCBpbiBcYSBfX2EsDQo+ICAgICAgKy8vLyAg
ICB3cml0dGVuIHRvIGJpdHMgWzc6MF0uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIGludCBf
X0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAgK19tbV9tb3ZlbWFza19waTgoX19tNjQgX19h
KQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiKChf
X3Y4cWkpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIE11bHRpcGxpZXMg
cGFja2VkIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBhbmQgd3JpdGVzIHRoZQ0KPiAg
ICAgICsvLy8gICAgaGlnaC1vcmRlciAxNiBiaXRzIG9mIGVhY2ggMzItYml0IHByb2R1Y3QgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbg0KPiAgICAgICsvLy8gICAgdGhlIGRlc3RpbmF0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFBNVUxIVVcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBc
cGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0K
PiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGggb3BlcmFuZHMuDQo+ICAg
ICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAg
ICArX21tX211bGhpX3B1MTYoX19tNjQgX19hLCBfX202NCBfX2IpDQo+ICAgICAgK3sNCj4gICAg
ICArICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtdWxodXcoKF9fdjRoaSlfX2EsIChf
X3Y0aGkpX19iKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFNodWZmbGVzIHRo
ZSA0IDE2LWJpdCBpbnRlZ2VycyBmcm9tIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIHRvIHRoZQ0K
PiAgICAgICsvLy8gICAgZGVzdGluYXRpb24sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRl
IHZhbHVlIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBf
X202NCBfbW1fc2h1ZmZsZV9waTE2KF9fbTY0IGEsIGNvbnN0IGludCBuKTsNCj4gICAgICArLy8v
IFxlbmRjb2RlDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQU0hVRlcgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBccGFyYW0gYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHNodWZmbGVkLg0KPiAgICAgICsvLy8gXHBh
cmFtIG4NCj4gICAgICArLy8vICAgIEFuIGltbWVkaWF0ZSB2YWx1ZSBjb250YWluaW5nIGFuIDgt
Yml0IHZhbHVlIHNwZWNpZnlpbmcgd2hpY2ggZWxlbWVudHMgdG8NCj4gICAgICArLy8vICAgIGNv
cHkgZnJvbSBcYSBhLiBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0aGUgNjQtYml0IGRlc3RpbmF0
aW9uIGFyZQ0KPiAgICAgICsvLy8gICAgYXNzaWduZWQgdmFsdWVzIGFzIGZvbGxvd3M6IFxuDQo+
ICAgICAgKy8vLyAgICBCaXRzIFsxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0
cyBbMTU6MF0gaW4gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICAr
Ly8vICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFszMTox
Nl0gaW4gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs0NzozMl0gaW4g
dGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIEJpdHMg
Wzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs2Mzo0OF0gaW4gdGhlDQo+
ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCj4gICAgICArLy8vICAgIEJpdCB2YWx1ZSBh
c3NpZ25tZW50czogXG4NCj4gICAgICArLy8vICAgIDAwOiBhc3NpZ25lZCBmcm9tIGJpdHMgWzE1
OjBdIG9mIFxhIGEuIFxuDQo+ICAgICAgKy8vLyAgICAwMTogYXNzaWduZWQgZnJvbSBiaXRzIFsz
MToxNl0gb2YgXGEgYS4gXG4NCj4gICAgICArLy8vICAgIDEwOiBhc3NpZ25lZCBmcm9tIGJpdHMg
WzQ3OjMyXSBvZiBcYSBhLiBcbg0KPiAgICAgICsvLy8gICAgMTE6IGFzc2lnbmVkIGZyb20gYml0
cyBbNjM6NDhdIG9mIFxhIGEuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQo+ICAgICAgKyNkZWZpbmUg
X21tX3NodWZmbGVfcGkxNihhLCBuKSBcDQo+ICAgICAgKyAgKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BzaHVmdygoX192NGhpKShfX202NCkoYSksIChuKSkNCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b25kaXRpb25hbGx5IGNvcGllcyB0aGUgdmFsdWVzIGZyb20gZWFjaCA4LWJpdCBlbGVtZW50IGlu
IHRoZSBmaXJzdA0KPiAgICAgICsvLy8gICAgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQg
dG8gdGhlIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24sIGFzDQo+ICAgICAgKy8vLyAgICBzcGVj
aWZpZWQgYnkgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGluIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnQgaW4gdGhlDQo+ICAgICAgKy8vLyAgICBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gICAgVG8gbWluaW1pemUgY2FjaGlu
ZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVtcG9yYWwNCj4gICAgICArLy8vICAgICh1
bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1BU0tNT1ZRIDwvYz4gaW5zdHJ1Y3Rp
b24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fZA0KPiAgICAgICsvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggZWxlbWVu
dHMgdG8gYmUgY29waWVkLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fbg0KPiAgICAgICsvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0
IGZyb20gZWFjaCA4LWJpdA0KPiAgICAgICsvLy8gICAgZWxlbWVudCBkZXRlcm1pbmVzIHdoZXRo
ZXIgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fZA0KPiAgICAgICsv
Ly8gICAgaXMgY29waWVkLiBJZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBnaXZlbiBl
bGVtZW50IGlzIDEsIHRoZQ0KPiAgICAgICsvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IGlu
IG9wZXJhbmQgXGEgX19kIGlzIGNvcGllZC4NCj4gICAgICArLy8vIFxwYXJhbSBfX3ANCj4gICAg
ICArLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxs
IHJlY2VpdmUgdGhlIGNvbmRpdGlvbmFsbHkNCj4gICAgICArLy8vICAgIGNvcGllZCBpbnRlZ2Vy
IHZhbHVlcy4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZl
DQo+ICAgICAgKy8vLyAgICB0byBiZSBhbGlnbmVkLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX21hc2ttb3ZlX3NpNjQo
X19tNjQgX19kLCBfX202NCBfX24sIGNoYXIgKl9fcCkNCj4gICAgICArew0KPiAgICAgICsgIF9f
YnVpbHRpbl9pYTMyX21hc2ttb3ZxKChfX3Y4cWkpX19kLCAoX192OHFpKV9fbiwgX19wKTsNCj4g
ICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2ZXJh
Z2VzIG9mIHRoZSBwYWNrZWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlcg0KPiAgICAgICsvLy8gICAg
dmFsdWVzIGFuZCB3cml0ZXMgdGhlIGF2ZXJhZ2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMg
aW4gdGhlDQo+ICAgICAgKy8vLyAgICBkZXN0aW5hdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVZHQiA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAg
ICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
YXZlcmFnZXMgb2YgYm90aCBvcGVyYW5kcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fYXZnX3B1OChfX202NCBfX2Es
IF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19tNjQpX19idWlsdGlu
X2lhMzJfcGF2Z2IoKF9fdjhxaSlfX2EsIChfX3Y4cWkpX19iKTsNCj4gICAgICArfQ0KPiAgICAg
ICsNCj4gICAgICArLy8vIENvbXB1dGVzIHRoZSByb3VuZGVkIGF2ZXJhZ2VzIG9mIHRoZSBwYWNr
ZWQgdW5zaWduZWQgMTYtYml0IGludGVnZXINCj4gICAgICArLy8vICAgIHZhbHVlcyBhbmQgd3Jp
dGVzIHRoZSBhdmVyYWdlcyB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZQ0KPiAgICAg
ICsvLy8gICAgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFWR1cgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KPiAgICAg
ICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCj4gICAgICArLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGF2ZXJhZ2VzIG9mIGJv
dGggb3BlcmFuZHMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9G
Tl9BVFRSU19NTVgNCj4gICAgICArX21tX2F2Z19wdTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0K
PiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYXZndygo
X192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsv
Ly8gU3VidHJhY3RzIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0IHVuc2lnbmVkIGludGVnZXIgdmFs
dWVzIG9mIHRoZSB0d28NCj4gICAgICArLy8vICAgIDY0LWJpdCB2ZWN0b3Igb3BlcmFuZHMgYW5k
IGNvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBmb3IgZWFjaCBvZiB0aGUNCj4gICAgICArLy8v
ICAgIGRpZmZlcmVuY2UuIFRoZW4gc3VtIG9mIHRoZSA4IGFic29sdXRlIGRpZmZlcmVuY2VzIGlz
IHdyaXR0ZW4gdG8gdGhlDQo+ICAgICAgKy8vLyAgICBiaXRzIFsxNTowXSBvZiB0aGUgZGVzdGlu
YXRpb247IHRoZSByZW1haW5pbmcgYml0cyBbNjM6MTZdIGFyZSBjbGVhcmVkLg0KPiAgICAgICsv
Ly8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+
ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTQURCVyA8
L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4g
ICAgICArLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBzb3VyY2Ugb3BlcmFuZHMuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igd2hv
c2UgbG93ZXIgMTYgYml0cyBjb250YWluIHRoZSBzdW1zIG9mIHRoZQ0KPiAgICAgICsvLy8gICAg
c2V0cyBvZiBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1
cHBlciBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAgY2xlYXJlZC4NCj4gICAgICArc3RhdGljIF9f
aW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fc2FkX3B1
OChfX202NCBfX2EsIF9fbTY0IF9fYikNCj4gICAgICArew0KPiAgICAgICsgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfcHNhZGJ3KChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQo+ICAg
ICAgK30NCj4gICAgICArDQo+ICAgICAgKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KPiAgICAg
ICtleHRlcm4gIkMiIHsNCj4gICAgICArI2VuZGlmDQo+ICAgICAgKw0KPiAgICAgICsvLy8gUmV0
dXJucyB0aGUgY29udGVudHMgb2YgdGhlIE1YQ1NSIHJlZ2lzdGVyIGFzIGEgMzItYml0IHVuc2ln
bmVkDQo+ICAgICAgKy8vLyAgICBpbnRlZ2VyIHZhbHVlLg0KPiAgICAgICsvLy8NCj4gICAgICAr
Ly8vICAgIFRoZXJlIGFyZSBzZXZlcmFsIGdyb3VwcyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRo
IHRoaXMNCj4gICAgICArLy8vICAgIGludHJpbnNpYywgaW5jbHVkaW5nOg0KPiAgICAgICsvLy8g
ICAgPHVsPg0KPiAgICAgICsvLy8gICAgPGxpPg0KPiAgICAgICsvLy8gICAgICBGb3IgY2hlY2tp
bmcgZXhjZXB0aW9uIHN0YXRlczogX01NX0VYQ0VQVF9JTlZBTElELCBfTU1fRVhDRVBUX0RJVl9a
RVJPLA0KPiAgICAgICsvLy8gICAgICBfTU1fRVhDRVBUX0RFTk9STSwgX01NX0VYQ0VQVF9PVkVS
RkxPVywgX01NX0VYQ0VQVF9VTkRFUkZMT1csDQo+ICAgICAgKy8vLyAgICAgIF9NTV9FWENFUFRf
SU5FWEFDVC4gVGhlcmUgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyDQo+ICAgICAgKy8vLyAgICAg
IF9NTV9HRVRfRVhDRVBUSU9OX1NUQVRFKCkuDQo+ICAgICAgKy8vLyAgICA8L2xpPg0KPiAgICAg
ICsvLy8gICAgPGxpPg0KPiAgICAgICsvLy8gICAgICBGb3IgY2hlY2tpbmcgZXhjZXB0aW9uIG1h
c2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLA0KPiAgICAgICsvLy8g
ICAgICBfTU1fTUFTS19JTlZBTElELCBfTU1fTUFTS19ERU5PUk0sIF9NTV9NQVNLX0RJVl9aRVJP
LCBfTU1fTUFTS19JTkVYQUNULg0KPiAgICAgICsvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmll
bmNlIHdyYXBwZXIgX01NX0dFVF9FWENFUFRJT05fTUFTSygpLg0KPiAgICAgICsvLy8gICAgPC9s
aT4NCj4gICAgICArLy8vICAgIDxsaT4NCj4gICAgICArLy8vICAgICAgRm9yIGNoZWNraW5nIHJv
dW5kaW5nIG1vZGVzOiBfTU1fUk9VTkRfTkVBUkVTVCwgX01NX1JPVU5EX0RPV04sDQo+ICAgICAg
Ky8vLyAgICAgIF9NTV9ST1VORF9VUCwgX01NX1JPVU5EX1RPV0FSRF9aRVJPLiBUaGVyZSBpcyBh
IGNvbnZlbmllbmNlIHdyYXBwZXINCj4gICAgICArLy8vICAgICAgX01NX0dFVF9ST1VORElOR19N
T0RFKCkuDQo+ICAgICAgKy8vLyAgICA8L2xpPg0KPiAgICAgICsvLy8gICAgPGxpPg0KPiAgICAg
ICsvLy8gICAgICBGb3IgY2hlY2tpbmcgZmx1c2gtdG8temVybyBtb2RlOiBfTU1fRkxVU0hfWkVS
T19PTiwgX01NX0ZMVVNIX1pFUk9fT0ZGLg0KPiAgICAgICsvLy8gICAgICBUaGVyZSBpcyBhIGNv
bnZlbmllbmNlIHdyYXBwZXIgX01NX0dFVF9GTFVTSF9aRVJPX01PREUoKS4NCj4gICAgICArLy8v
ICAgIDwvbGk+DQo+ICAgICAgKy8vLyAgICA8bGk+DQo+ICAgICAgKy8vLyAgICAgIEZvciBjaGVj
a2luZyBkZW5vcm1hbHMtYXJlLXplcm8gbW9kZTogX01NX0RFTk9STUFMU19aRVJPX09OLA0KPiAg
ICAgICsvLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVyZSBpcyBhIGNvbnZlbmll
bmNlIHdyYXBwZXINCj4gICAgICArLy8vICAgICAgX01NX0dFVF9ERU5PUk1BTFNfWkVST19NT0RF
KCkuDQo+ICAgICAgKy8vLyAgICA8L2xpPg0KPiAgICAgICsvLy8gICAgPC91bD4NCj4gICAgICAr
Ly8vDQo+ICAgICAgKy8vLyAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBleHByZXNzaW9u
IGNoZWNrcyBpZiBhbiBvdmVyZmxvdyBleGNlcHRpb24gaGFzDQo+ICAgICAgKy8vLyAgICBvY2N1
cnJlZDoNCj4gICAgICArLy8vICAgIFxjb2RlDQo+ICAgICAgKy8vLyAgICAgICggX21tX2dldGNz
cigpICYgX01NX0VYQ0VQVF9PVkVSRkxPVyApDQo+ICAgICAgKy8vLyAgICBcZW5kY29kZQ0KPiAg
ICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBnZXRzIHRo
ZSBjdXJyZW50IHJvdW5kaW5nIG1vZGU6DQo+ICAgICAgKy8vLyAgICBcY29kZQ0KPiAgICAgICsv
Ly8gICAgICBfTU1fR0VUX1JPVU5ESU5HX01PREUoKQ0KPiAgICAgICsvLy8gICAgXGVuZGNvZGUN
Cj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAg
ICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWU1RNWENTUiAvIFNUTVhDU1IgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhl
IGNvbnRlbnRzIG9mIHRoZSBNWENTUg0KPiAgICAgICsvLy8gICAgcmVnaXN0ZXIuDQo+ICAgICAg
K3Vuc2lnbmVkIGludCBfbW1fZ2V0Y3NyKHZvaWQpOw0KPiAgICAgICsNCj4gICAgICArLy8vIFNl
dHMgdGhlIE1YQ1NSIHJlZ2lzdGVyIHdpdGggdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZh
bHVlLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZXJlIGFyZSBzZXZlcmFsIGdyb3Vw
cyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50cmluc2ljLA0KPiAgICAgICsvLy8g
ICAgaW5jbHVkaW5nOg0KPiAgICAgICsvLy8gICAgPHVsPg0KPiAgICAgICsvLy8gICAgPGxpPg0K
PiAgICAgICsvLy8gICAgICBGb3Igc2V0dGluZyBleGNlcHRpb24gc3RhdGVzOiBfTU1fRVhDRVBU
X0lOVkFMSUQsIF9NTV9FWENFUFRfRElWX1pFUk8sDQo+ICAgICAgKy8vLyAgICAgIF9NTV9FWENF
UFRfREVOT1JNLCBfTU1fRVhDRVBUX09WRVJGTE9XLCBfTU1fRVhDRVBUX1VOREVSRkxPVywNCj4g
ICAgICArLy8vICAgICAgX01NX0VYQ0VQVF9JTkVYQUNULiBUaGVyZSBpcyBhIGNvbnZlbmllbmNl
IHdyYXBwZXINCj4gICAgICArLy8vICAgICAgX01NX1NFVF9FWENFUFRJT05fU1RBVEUoeCkgd2hl
cmUgeCBpcyBvbmUgb2YgdGhlc2UgbWFjcm9zLg0KPiAgICAgICsvLy8gICAgPC9saT4NCj4gICAg
ICArLy8vICAgIDxsaT4NCj4gICAgICArLy8vICAgICAgRm9yIHNldHRpbmcgZXhjZXB0aW9uIG1h
c2tzOiBfTU1fTUFTS19VTkRFUkZMT1csIF9NTV9NQVNLX09WRVJGTE9XLA0KPiAgICAgICsvLy8g
ICAgICBfTU1fTUFTS19JTlZBTElELCBfTU1fTUFTS19ERU5PUk0sIF9NTV9NQVNLX0RJVl9aRVJP
LCBfTU1fTUFTS19JTkVYQUNULg0KPiAgICAgICsvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmll
bmNlIHdyYXBwZXIgX01NX1NFVF9FWENFUFRJT05fTUFTSyh4KSB3aGVyZSB4IGlzIG9uZQ0KPiAg
ICAgICsvLy8gICAgICBvZiB0aGVzZSBtYWNyb3MuDQo+ICAgICAgKy8vLyAgICA8L2xpPg0KPiAg
ICAgICsvLy8gICAgPGxpPg0KPiAgICAgICsvLy8gICAgICBGb3Igc2V0dGluZyByb3VuZGluZyBt
b2RlczogX01NX1JPVU5EX05FQVJFU1QsIF9NTV9ST1VORF9ET1dOLA0KPiAgICAgICsvLy8gICAg
ICBfTU1fUk9VTkRfVVAsIF9NTV9ST1VORF9UT1dBUkRfWkVSTy4gVGhlcmUgaXMgYSBjb252ZW5p
ZW5jZSB3cmFwcGVyDQo+ICAgICAgKy8vLyAgICAgIF9NTV9TRVRfUk9VTkRJTkdfTU9ERSh4KSB3
aGVyZSB4IGlzIG9uZSBvZiB0aGVzZSBtYWNyb3MuDQo+ICAgICAgKy8vLyAgICA8L2xpPg0KPiAg
ICAgICsvLy8gICAgPGxpPg0KPiAgICAgICsvLy8gICAgICBGb3Igc2V0dGluZyBmbHVzaC10by16
ZXJvIG1vZGU6IF9NTV9GTFVTSF9aRVJPX09OLCBfTU1fRkxVU0hfWkVST19PRkYuDQo+ICAgICAg
Ky8vLyAgICAgIFRoZXJlIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBfTU1fU0VUX0ZMVVNIX1pF
Uk9fTU9ERSh4KSB3aGVyZSB4IGlzDQo+ICAgICAgKy8vLyAgICAgIG9uZSBvZiB0aGVzZSBtYWNy
b3MuDQo+ICAgICAgKy8vLyAgICA8L2xpPg0KPiAgICAgICsvLy8gICAgPGxpPg0KPiAgICAgICsv
Ly8gICAgICBGb3Igc2V0dGluZyBkZW5vcm1hbHMtYXJlLXplcm8gbW9kZTogX01NX0RFTk9STUFM
U19aRVJPX09OLA0KPiAgICAgICsvLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVy
ZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXINCj4gICAgICArLy8vICAgICAgX01NX1NFVF9ERU5P
Uk1BTFNfWkVST19NT0RFKHgpIHdoZXJlIHggaXMgb25lIG9mIHRoZXNlIG1hY3Jvcy4NCj4gICAg
ICArLy8vICAgIDwvbGk+DQo+ICAgICAgKy8vLyAgICA8L3VsPg0KPiAgICAgICsvLy8NCj4gICAg
ICArLy8vICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2F1c2VzIHN1
YnNlcXVlbnQgZmxvYXRpbmctcG9pbnQNCj4gICAgICArLy8vICAgIG9wZXJhdGlvbnMgdG8gcm91
bmQgdXA6DQo+ICAgICAgKy8vLyAgICAgIF9tbV9zZXRjc3IoX21tX2dldGNzcigpIHwgX01NX1JP
VU5EX1VQKQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBs
ZSBzZXRzIHRoZSBEQVogYW5kIEZUWiBmbGFnczoNCj4gICAgICArLy8vICAgIFxjb2RlDQo+ICAg
ICAgKy8vLyAgICB2b2lkIHNldEZsYWdzKCkgew0KPiAgICAgICsvLy8gICAgICBfTU1fU0VUX0ZM
VVNIX1pFUk9fTU9ERShfTU1fRkxVU0hfWkVST19PTik7DQo+ICAgICAgKy8vLyAgICAgIF9NTV9T
RVRfREVOT1JNQUxTX1pFUk9fTU9ERShfTU1fREVOT1JNQUxTX1pFUk9fT04pOw0KPiAgICAgICsv
Ly8gICAgfQ0KPiAgICAgICsvLy8gICAgXGVuZGNvZGUNCj4gICAgICArLy8vDQo+ICAgICAgKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTERNWENTUiAvIExETVhDU1IgPC9j
PiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19pDQo+ICAg
ICAgKy8vLyAgICBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIHRvIGJlIHdyaXR0ZW4g
dG8gdGhlIE1YQ1NSIHJlZ2lzdGVyLg0KPiAgICAgICt2b2lkIF9tbV9zZXRjc3IodW5zaWduZWQg
aW50IF9faSk7DQo+ICAgICAgKw0KPiAgICAgICsjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCj4g
ICAgICArfSAvLyBleHRlcm4gIkMiDQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAgICAr
Ly8vIFNlbGVjdHMgNCBmbG9hdCB2YWx1ZXMgZnJvbSB0aGUgMTI4LWJpdCBvcGVyYW5kcyBvZiBb
NCB4IGZsb2F0XSwgYXMNCj4gICAgICArLy8vICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRl
IHZhbHVlIG9wZXJhbmQuDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxjb2RlDQo+ICAgICAgKy8vLyBf
X20xMjggX21tX3NodWZmbGVfcHMoX19tMTI4IGEsIF9fbTEyOCBiLCBjb25zdCBpbnQgbWFzayk7
DQo+ICAgICAgKy8vLyBcZW5kY29kZQ0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNIVUZQUyAvIFNIVUZQUyA8L2M+IGluc3Ry
dWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBhDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8gXHBhcmFtIGIN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAg
Ky8vLyBccGFyYW0gbWFzaw0KPiAgICAgICsvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRh
aW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0bw0KPiAgICAg
ICsvLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGIuIFxuDQo+ICAgICAgKy8vLyAgICBCaXRz
IFszOjBdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGEuIFxuDQo+
ICAgICAgKy8vLyAgICBCaXRzIFs3OjRdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBv
cGVyYW5kIFxhIGIuIFxuDQo+ICAgICAgKy8vLyAgICBUaGUgZGVzdGluYXRpb25zIHdpdGhpbiB0
aGUgMTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQgdmFsdWVzIGFzDQo+ICAgICAgKy8v
LyAgICBmb2xsb3dzOiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBh
c3NpZ24gdmFsdWVzIHRvIGJpdHMgWzMxOjBdIGluIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGlu
YXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFszOjJdIGFyZSB1c2VkIHRvIGFzc2lnbiB2
YWx1ZXMgdG8gYml0cyBbNjM6MzJdIGluIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24u
IFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFs1OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMg
dG8gYml0cyBbOTU6NjRdIGluIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24uIFxuDQo+
ICAgICAgKy8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0
cyBbMTI3Ojk2XSBpbiB0aGUNCj4gICAgICArLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KPiAgICAg
ICsvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbg0KPiAgICAgICsvLy8gICAgMDA6IEJp
dHMgWzMxOjBdIGNvcGllZCBmcm9tIHRoZSBzcGVjaWZpZWQgb3BlcmFuZC4gXG4NCj4gICAgICAr
Ly8vICAgIDAxOiBCaXRzIFs2MzozMl0gY29waWVkIGZyb20gdGhlIHNwZWNpZmllZCBvcGVyYW5k
LiBcbg0KPiAgICAgICsvLy8gICAgMTA6IEJpdHMgWzk1OjY0XSBjb3BpZWQgZnJvbSB0aGUgc3Bl
Y2lmaWVkIG9wZXJhbmQuIFxuDQo+ICAgICAgKy8vLyAgICAxMTogQml0cyBbMTI3Ojk2XSBjb3Bp
ZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNodWZmbGVkIHZhbHVl
cy4NCj4gICAgICArI2RlZmluZSBfbW1fc2h1ZmZsZV9wcyhhLCBiLCBtYXNrKSBcDQo+ICAgICAg
KyAgKF9fbTEyOClfX2J1aWx0aW5faWEzMl9zaHVmcHMoKF9fdjRzZikoX19tMTI4KShhKSwgKF9f
djRzZikoX19tMTI4KShiKSwgXA0KPiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChpbnQpKG1hc2spKQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVucGFja3MgdGhlIGhpZ2gt
b3JkZXIgKGluZGV4IDIsMykgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KPiAg
ICAgICsvLy8gICAgWzQgeCBmbG9hdF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQUyAvIFVOUENLSFBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gXG4NCj4gICAgICArLy8vICAg
IEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRp
b24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMg
Wzk1OjY0XSBvZiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAg
ICAgKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8g
ICAgQml0cyBbOTU6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgZGVzdGlu
YXRpb24uIFxuDQo+ICAgICAgKy8vLyAgICBCaXRzIFsxMjc6OTZdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzEyNzo5Nl0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2
YWx1ZXMuDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRU
UlMNCj4gICAgICArX21tX3VucGFja2hpX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAg
ICAgK3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgp
IF9fYnVpbHRpbl9pYTMyX3VucGNraHBzICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KPiAg
ICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192
NHNmKV9fYSwgKF9fdjRzZilfX2IsIDIsIDYsIDMsIDcpOw0KPiAgICAgICsjZW5kaWYNCj4gICAg
ICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIFVucGFja3MgdGhlIGxvdy1vcmRlciAoaW5kZXgg
MCwxKSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQo+ICAgICAgKy8vLyAgICBb
NCB4IGZsb2F0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBTIC8gVU5QQ0tMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBcbg0KPiAgICAgICsvLy8gICAgQml0cyBbMzE6MF0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLiAgXG4NCj4gICAg
ICArLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhl
IGRlc3RpbmF0aW9uLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gXG4NCj4gICAgICArLy8vICAgIEJpdHMgWzMx
OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQo+
ICAgICAgKy8vLyAgICBCaXRzIFs2MzozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBv
ZiB0aGUgZGVzdGluYXRpb24uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fdW5wYWNrbG9fcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCj4gICAgICArew0KPiAgICAg
ICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lh
MzJfdW5wY2tscHMgKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAgKyNlbHNlDQo+
ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYiwgMCwgNCwgMSwgNSk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9DQo+ICAgICAg
Kw0KPiAgICAgICsvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXINCj4gICAgICArLy8vICAgIDMyIGJpdHMgYXJlIHNl
dCB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVwcGVy
DQo+ICAgICAgKy8vLyAgICA5NiBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDk2IGJpdHMgb2Yg
dGhlIGZpcnN0IHBhcmFtZXRlci4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQUyAvIEJMRU5EUFMgLyBNT1ZTUyA8L2M+DQo+
ICAgICAgKy8vLyAgICBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBccGFy
YW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUNCj4gICAgICArLy8vICAgIHdyaXR0
ZW4gdG8gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxwYXJh
bSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIGFyZQ0KPiAgICAgICsvLy8gICAgd3JpdHRl
biB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAgICsvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAg
ICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICAgICtf
bW1fbW92ZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAg
X19hWzBdID0gX19iWzBdOw0KPiAgICAgICsgIHJldHVybiBfX2E7DQo+ICAgICAgK30NCj4gICAg
ICArDQo+ICAgICAgKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KPiAgICAgICsvLy8gICAgNjQgYml0cyBhcmUg
c2V0IHRvIHRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBUaGUgdXBw
ZXINCj4gICAgICArLy8vICAgIDY0IGJpdHMgYXJlIHNldCB0byB0aGUgdXBwZXIgNjQgYml0cyBv
ZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBDS0hQRCAvIFVOUENLSFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8g
ICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHVw
cGVyIDY0IGJpdHMgYXJlDQo+ICAgICAgKy8vLyAgICB3cml0dGVuIHRvIHRoZSB1cHBlciA2NCBi
aXRzIG9mIHRoZSByZXN1bHQuDQo+ICAgICAgKy8vLyBccGFyYW0gX19iDQo+ICAgICAgKy8vLyAg
ICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdXBw
ZXIgNjQgYml0cyBhcmUNCj4gICAgICArLy8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJp
dHMgb2YgdGhlIHJlc3VsdC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQo+ICAgICAgK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCj4gICAgICArX21tX21vdmVobF9wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyNpZmRlZiBfX0dOVUNfXw0KPiAg
ICAgICsgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZobHBzICgoX192NHNmKV9f
YSwgKF9fdjRzZilfX2IpOw0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsgIHJldHVybiBfX2J1aWx0
aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwgKF9fdjRzZilfX2IsIDYsIDcsIDIsIDMpOw0K
PiAgICAgICsjZW5kaWYNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIENvbnN0cnVj
dHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxv
d2VyDQo+ICAgICAgKy8vLyAgICA2NCBiaXRzIGFyZSBzZXQgdG8gdGhlIGxvd2VyIDY0IGJpdHMg
b2YgdGhlIGZpcnN0IHBhcmFtZXRlci4gVGhlIHVwcGVyDQo+ICAgICAgKy8vLyAgICA2NCBiaXRz
IGFyZSBzZXQgdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQo+
ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAgICAg
ICsvLy8NCj4gICAgICArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBccGFyYW0gX19hDQo+ICAgICAgKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUNCj4gICAgICAr
Ly8vICAgIHdyaXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCj4gICAg
ICArLy8vIFxwYXJhbSBfX2INCj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZQ0KPiAgICAgICsv
Ly8gICAgd3JpdHRlbiB0byB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KPiAgICAg
ICsvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
Uw0KPiAgICAgICtfbW1fbW92ZWxoX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQo+ICAgICAg
K3sNCj4gICAgICArI2lmZGVmIF9fR05VQ19fDQo+ICAgICAgKyAgcmV0dXJuIChfX20xMjgpIF9f
YnVpbHRpbl9pYTMyX21vdmxocHMgKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQo+ICAgICAg
KyNlbHNlDQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2Yp
X19hLCAoX192NHNmKV9fYiwgMCwgMSwgNCwgNSk7DQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICt9
DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgYSA2NC1iaXQgdmVjdG9yIG9mIFs0IHgg
aTE2XSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeA0KPiAgICAgICsvLy8gICAgZmxvYXRd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4g
ICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0K
PiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9m
IFs0IHggaTE2XS4gVGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUgY29waWVkDQo+
ICAgICAgKy8vLyAgICBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoaXMgb3Bl
cmFuZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCj4gICAgICArLy8vICAgIHZh
bHVlcyBmcm9tIHRoZSBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fY3Z0cGkxNl9wcyhfX202NCBfX2Ep
DQo+ICAgICAgK3sNCj4gICAgICArICBfX202NCBfX2IsIF9fYzsNCj4gICAgICArICBfX20xMjgg
X19yOw0KPiAgICAgICsNCj4gICAgICArICBfX2IgPSBfbW1fc2V0emVyb19zaTY0KCk7DQo+ICAg
ICAgKyAgX19iID0gX21tX2NtcGd0X3BpMTYoX19iLCBfX2EpOw0KPiAgICAgICsgIF9fYyA9IF9t
bV91bnBhY2toaV9waTE2KF9fYSwgX19iKTsNCj4gICAgICArICBfX3IgPSBfbW1fc2V0emVyb19w
cygpOw0KPiAgICAgICsgIF9fciA9IF9tbV9jdnRwaTMyX3BzKF9fciwgX19jKTsNCj4gICAgICAr
ICBfX3IgPSBfbW1fbW92ZWxoX3BzKF9fciwgX19yKTsNCj4gICAgICArICBfX2MgPSBfbW1fdW5w
YWNrbG9fcGkxNihfX2EsIF9fYik7DQo+ICAgICAgKyAgX19yID0gX21tX2N2dHBpMzJfcHMoX19y
LCBfX2MpOw0KPiAgICAgICsNCj4gICAgICArICByZXR1cm4gX19yOw0KPiAgICAgICt9DQo+ICAg
ICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMgYSA2NC1iaXQgdmVjdG9yIG9mIDE2LWJpdCB1bnNp
Z25lZCBpbnRlZ2VyIHZhbHVlcyBpbnRvIGENCj4gICAgICArLy8vICAgIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IENWVFBJMlBTICsgQ09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24u
DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBhcmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSA2
NC1iaXQgdmVjdG9yIG9mIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGVsZW1l
bnRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoaXMgb3BlcmFuZC4NCj4gICAgICArLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29w
aWVkIGFuZCBjb252ZXJ0ZWQNCj4gICAgICArLy8vICAgIHZhbHVlcyBmcm9tIHRoZSBvcGVyYW5k
Lg0KPiAgICAgICtzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01N
WA0KPiAgICAgICtfbW1fY3Z0cHUxNl9wcyhfX202NCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICAr
ICBfX202NCBfX2IsIF9fYzsNCj4gICAgICArICBfX20xMjggX19yOw0KPiAgICAgICsNCj4gICAg
ICArICBfX2IgPSBfbW1fc2V0emVyb19zaTY0KCk7DQo+ICAgICAgKyAgX19jID0gX21tX3VucGFj
a2hpX3BpMTYoX19hLCBfX2IpOw0KPiAgICAgICsgIF9fciA9IF9tbV9zZXR6ZXJvX3BzKCk7DQo+
ICAgICAgKyAgX19yID0gX21tX2N2dHBpMzJfcHMoX19yLCBfX2MpOw0KPiAgICAgICsgIF9fciA9
IF9tbV9tb3ZlbGhfcHMoX19yLCBfX3IpOw0KPiAgICAgICsgIF9fYyA9IF9tbV91bnBhY2tsb19w
aTE2KF9fYSwgX19iKTsNCj4gICAgICArICBfX3IgPSBfbW1fY3Z0cGkzMl9wcyhfX3IsIF9fYyk7
DQo+ICAgICAgKw0KPiAgICAgICsgIHJldHVybiBfX3I7DQo+ICAgICAgK30NCj4gICAgICArDQo+
ICAgICAgKy8vLyBDb252ZXJ0cyB0aGUgbG93ZXIgZm91ciA4LWJpdCB2YWx1ZXMgZnJvbSBhIDY0
LWJpdCB2ZWN0b3Igb2YgWzggeCBpOF0NCj4gICAgICArLy8vICAgIGludG8gYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgNjQtYml0IHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5h
dGlvbiBhcmUgY29waWVkDQo+ICAgICAgKy8vLyAgICBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxv
d2VyIDQgZWxlbWVudHMgaW4gdGhpcyBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIGNv
bnZlcnRlZA0KPiAgICAgICsvLy8gICAgdmFsdWVzIGZyb20gdGhlIG9wZXJhbmQuDQo+ICAgICAg
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAg
K19tbV9jdnRwaThfcHMoX19tNjQgX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19tNjQgX19i
Ow0KPiAgICAgICsNCj4gICAgICArICBfX2IgPSBfbW1fc2V0emVyb19zaTY0KCk7DQo+ICAgICAg
KyAgX19iID0gX21tX2NtcGd0X3BpOChfX2IsIF9fYSk7DQo+ICAgICAgKyAgX19iID0gX21tX3Vu
cGFja2xvX3BpOChfX2EsIF9fYik7DQo+ICAgICAgKw0KPiAgICAgICsgIHJldHVybiBfbW1fY3Z0
cGkxNl9wcyhfX2IpOw0KPiAgICAgICt9DQo+ICAgICAgKw0KPiAgICAgICsvLy8gQ29udmVydHMg
dGhlIGxvd2VyIGZvdXIgdW5zaWduZWQgOC1iaXQgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDY0LWJp
dA0KPiAgICAgICsvLy8gICAgdmVjdG9yIG9mIFs4IHggdThdIGludG8gYSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIEEg
NjQtYml0IHZlY3RvciBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGVsZW1l
bnRzIG9mIHRoZQ0KPiAgICAgICsvLy8gICAgZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRo
ZSBjb3JyZXNwb25kaW5nIGxvd2VyIDQgZWxlbWVudHMgaW4gdGhpcw0KPiAgICAgICsvLy8gICAg
b3BlcmFuZC4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCj4gICAgICArLy8vICAg
IHZhbHVlcyBmcm9tIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCj4gICAgICArc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICAgICArX21tX2N2dHB1OF9wcyhf
X202NCBfX2EpDQo+ICAgICAgK3sNCj4gICAgICArICBfX202NCBfX2I7DQo+ICAgICAgKw0KPiAg
ICAgICsgIF9fYiA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsNCj4gICAgICArICBfX2IgPSBfbW1fdW5w
YWNrbG9fcGk4KF9fYSwgX19iKTsNCj4gICAgICArDQo+ICAgICAgKyAgcmV0dXJuIF9tbV9jdnRw
aTE2X3BzKF9fYik7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBDb252ZXJ0cyB0
aGUgdHdvIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMgZnJvbSBlYWNoIDY0LWJpdCB2ZWN0
b3INCj4gICAgICArLy8vICAgIG9wZXJhbmQgb2YgWzIgeCBpMzJdIGludG8gYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8L2M+IGluc3RydWN0
aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAg
IEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dlciBlbGVtZW50cyBvZiB0aGUg
ZGVzdGluYXRpb24gYXJlDQo+ICAgICAgKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgZWxlbWVudHMg
aW4gdGhpcyBvcGVyYW5kLg0KPiAgICAgICsvLy8gXHBhcmFtIF9fYg0KPiAgICAgICsvLy8gICAg
QSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSBk
ZXN0aW5hdGlvbiBhcmUNCj4gICAgICArLy8vICAgIGNvcGllZCBmcm9tIHRoZSBlbGVtZW50cyBp
biB0aGlzIG9wZXJhbmQuDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCj4gICAgICArLy8v
ICAgIGNvcGllZCBhbmQgY29udmVydGVkIHZhbHVlcyBmcm9tIHRoZSBmaXJzdCBvcGVyYW5kLiBU
aGUgdXBwZXIgNjQgYml0cw0KPiAgICAgICsvLy8gICAgY29udGFpbiB0aGUgY29waWVkIGFuZCBj
b252ZXJ0ZWQgdmFsdWVzIGZyb20gdGhlIHNlY29uZCBvcGVyYW5kLg0KPiAgICAgICtzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgICAgICtfbW1fY3Z0
cGkzMngyX3BzKF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgX19t
MTI4IF9fYzsNCj4gICAgICArDQo+ICAgICAgKyAgX19jID0gX21tX3NldHplcm9fcHMoKTsNCj4g
ICAgICArICBfX2MgPSBfbW1fY3Z0cGkzMl9wcyhfX2MsIF9fYik7DQo+ICAgICAgKyAgX19jID0g
X21tX21vdmVsaF9wcyhfX2MsIF9fYyk7DQo+ICAgICAgKw0KPiAgICAgICsgIHJldHVybiBfbW1f
Y3Z0cGkzMl9wcyhfX2MsIF9fYSk7DQo+ICAgICAgK30NCj4gICAgICArDQo+ICAgICAgKy8vLyBD
b252ZXJ0cyBlYWNoIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudCBvZiBh
IDEyOC1iaXQNCj4gICAgICArLy8vICAgIGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBpbnRvIGEgMTYtYml0IHNpZ25lZCBpbnRlZ2VyLCBhbmQNCj4gICAgICArLy8vICAgIHBh
Y2tzIHRoZSByZXN1bHRzIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vICAgIElmIHRoZSBmbG9hdGluZy1wb2ludCBlbGVt
ZW50IGlzIE5hTiBvciBpbmZpbml0eSwgb3IgaWYgdGhlDQo+ICAgICAgKy8vLyAgICBmbG9hdGlu
Zy1wb2ludCBlbGVtZW50IGlzIGdyZWF0ZXIgdGhhbiAweDdGRkZGRkZGIG9yIGxlc3MgdGhhbiAt
MHg4MDAwLA0KPiAgICAgICsvLy8gICAgaXQgaXMgY29udmVydGVkIHRvIDB4ODAwMC4gT3RoZXJ3
aXNlIGlmIHRoZSBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzDQo+ICAgICAgKy8vLyAgICBncmVh
dGVyIHRoYW4gMHg3RkZGLCBpdCBpcyBjb252ZXJ0ZWQgdG8gMHg3RkZGLg0KPiAgICAgICsvLy8N
Cj4gICAgICArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gICAgICArLy8vDQo+ICAg
ICAgKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJICsg
Q09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gXHBh
cmFtIF9fYQ0KPiAgICAgICsvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCj4gICAgICArLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQNCj4gICAgICArLy8vICAg
IHZhbHVlcy4NCj4gICAgICArc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWA0KPiAgICAgICtfbW1fY3Z0cHNfcGkxNihfX20xMjggX19hKQ0KPiAgICAgICt7DQo+
ICAgICAgKyAgX19tNjQgX19iLCBfX2M7DQo+ICAgICAgKw0KPiAgICAgICsgIF9fYiA9IF9tbV9j
dnRwc19waTMyKF9fYSk7DQo+ICAgICAgKyAgX19hID0gX21tX21vdmVobF9wcyhfX2EsIF9fYSk7
DQo+ICAgICAgKyAgX19jID0gX21tX2N2dHBzX3BpMzIoX19hKTsNCj4gICAgICArDQo+ICAgICAg
KyAgcmV0dXJuIF9tbV9wYWNrc19waTMyKF9fYiwgX19jKTsNCj4gICAgICArfQ0KPiAgICAgICsN
Cj4gICAgICArLy8vIENvbnZlcnRzIGVhY2ggc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCBlbGVtZW50IG9mIGEgMTI4LWJpdA0KPiAgICAgICsvLy8gICAgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGludG8gYW4gOC1iaXQgc2lnbmVkIGludGVnZXIsIGFuZA0KPiAg
ICAgICsvLy8gICAgcGFja3MgdGhlIHJlc3VsdHMgaW50byB0aGUgbG93ZXIgMzIgYml0cyBvZiBh
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZg0KPiAgICAgICsvLy8gICAgWzggeCBpOF0uIFRoZSB1
cHBlciAzMiBiaXRzIG9mIHRoZSB2ZWN0b3IgYXJlIHNldCB0byAwLg0KPiAgICAgICsvLy8NCj4g
ICAgICArLy8vICAgIElmIHRoZSBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlzIE5hTiBvciBpbmZp
bml0eSwgb3IgaWYgdGhlDQo+ICAgICAgKy8vLyAgICBmbG9hdGluZy1wb2ludCBlbGVtZW50IGlz
IGdyZWF0ZXIgdGhhbiAweDdGRkZGRkZGIG9yIGxlc3MgdGhhbiAtMHg4MCwgaXQNCj4gICAgICAr
Ly8vICAgIGlzIGNvbnZlcnRlZCB0byAweDgwLiBPdGhlcndpc2UgaWYgdGhlIGZsb2F0aW5nLXBv
aW50IGVsZW1lbnQgaXMgZ3JlYXRlcg0KPiAgICAgICsvLy8gICAgdGhhbiAweDdGLCBpdCBpcyBj
b252ZXJ0ZWQgdG8gMHg3Ri4NCj4gICAgICArLy8vDQo+ICAgICAgKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQUzJQSSArIENPTVBPU0lURSA8L2M+IGluc3RydWN0aW9u
Lg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2ENCj4gICAgICArLy8vICAgIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KPiAgICAgICsvLy8g
XHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFRoZSBsb3dlciAz
MiBiaXRzIGNvbnRhaW4gdGhlDQo+ICAgICAgKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWVzIGFuZCB0
aGUgdXBwcGVyIDMyIGJpdHMgYXJlIHNldCB0byB6ZXJvLg0KPiAgICAgICtzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAgK19tbV9jdnRwc19waTgo
X19tMTI4IF9fYSkNCj4gICAgICArew0KPiAgICAgICsgIF9fbTY0IF9fYiwgX19jOw0KPiAgICAg
ICsNCj4gICAgICArICBfX2IgPSBfbW1fY3Z0cHNfcGkxNihfX2EpOw0KPiAgICAgICsgIF9fYyA9
IF9tbV9zZXR6ZXJvX3NpNjQoKTsNCj4gICAgICArDQo+ICAgICAgKyAgcmV0dXJuIF9tbV9wYWNr
c19waTE2KF9fYiwgX19jKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICArLy8vIEV4dHJh
Y3RzIHRoZSBzaWduIGJpdHMgZnJvbSBlYWNoIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQNCj4gICAgICArLy8vICAgIGVsZW1lbnQgb2YgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUNCj4gICAgICArLy8vICAgIHNpZ24g
Yml0cyBpbiBiaXRzIFswOjNdIG9mIHRoZSByZXN1bHQuIEJpdHMgWzMxOjRdIG9mIHRoZSByZXN1
bHQgYXJlIHNldA0KPiAgICAgICsvLy8gICAgdG8gemVyby4NCj4gICAgICArLy8vDQo+ICAgICAg
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQo+ICAgICAgKy8vLw0KPiAgICAgICsvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTVNLUFMgLyBNT1ZNU0tQ
UyA8L2M+IGluc3RydWN0aW9uLg0KPiAgICAgICsvLy8NCj4gICAgICArLy8vIFxwYXJhbSBfX2EN
Cj4gICAgICArLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQo+ICAgICAgKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLiBCaXRz
IFszOjBdIGNvbnRhaW4gdGhlIHNpZ24gYml0cyBmcm9tIGVhY2gNCj4gICAgICArLy8vICAgIHNp
bmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudCBvZiB0aGUgcGFyYW1ldGVyLiBC
aXRzIFszMTo0XSBhcmUNCj4gICAgICArLy8vICAgIHNldCB0byB6ZXJvLg0KPiAgICAgICtzdGF0
aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAgK19tbV9tb3ZlbWFz
a19wcyhfX20xMjggX19hKQ0KPiAgICAgICt7DQo+ICAgICAgKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX21vdm1za3BzKChfX3Y0c2YpX19hKTsNCj4gICAgICArfQ0KPiAgICAgICsNCj4gICAgICAr
DQo+ICAgICAgKyNkZWZpbmUgX01NX0FMSUdOMTYgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikp
KQ0KPiAgICAgICsNCj4gICAgICArDQo+ICAgICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9JTlZBTElE
ICAgICgweDAwMDEpDQo+ICAgICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9ERU5PUk0gICAgICgweDAw
MDIpDQo+ICAgICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9ESVZfWkVSTyAgICgweDAwMDQpDQo+ICAg
ICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9PVkVSRkxPVyAgICgweDAwMDgpDQo+ICAgICAgKyNkZWZp
bmUgX01NX0VYQ0VQVF9VTkRFUkZMT1cgICgweDAwMTApDQo+ICAgICAgKyNkZWZpbmUgX01NX0VY
Q0VQVF9JTkVYQUNUICAgICgweDAwMjApDQo+ICAgICAgKyNkZWZpbmUgX01NX0VYQ0VQVF9NQVNL
ICAgICAgICgweDAwM2YpDQo+ICAgICAgKw0KPiAgICAgICsjZGVmaW5lIF9NTV9NQVNLX0lOVkFM
SUQgICAgICAoMHgwMDgwKQ0KPiAgICAgICsjZGVmaW5lIF9NTV9NQVNLX0RFTk9STSAgICAgICAo
MHgwMTAwKQ0KPiAgICAgICsjZGVmaW5lIF9NTV9NQVNLX0RJVl9aRVJPICAgICAoMHgwMjAwKQ0K
PiAgICAgICsjZGVmaW5lIF9NTV9NQVNLX09WRVJGTE9XICAgICAoMHgwNDAwKQ0KPiAgICAgICsj
ZGVmaW5lIF9NTV9NQVNLX1VOREVSRkxPVyAgICAoMHgwODAwKQ0KPiAgICAgICsjZGVmaW5lIF9N
TV9NQVNLX0lORVhBQ1QgICAgICAoMHgxMDAwKQ0KPiAgICAgICsjZGVmaW5lIF9NTV9NQVNLX01B
U0sgICAgICAgICAoMHgxZjgwKQ0KPiAgICAgICsNCj4gICAgICArI2RlZmluZSBfTU1fUk9VTkRf
TkVBUkVTVCAgICAgKDB4MDAwMCkNCj4gICAgICArI2RlZmluZSBfTU1fUk9VTkRfRE9XTiAgICAg
ICAgKDB4MjAwMCkNCj4gICAgICArI2RlZmluZSBfTU1fUk9VTkRfVVAgICAgICAgICAgKDB4NDAw
MCkNCj4gICAgICArI2RlZmluZSBfTU1fUk9VTkRfVE9XQVJEX1pFUk8gKDB4NjAwMCkNCj4gICAg
ICArI2RlZmluZSBfTU1fUk9VTkRfTUFTSyAgICAgICAgKDB4NjAwMCkNCj4gICAgICArDQo+ICAg
ICAgKyNkZWZpbmUgX01NX0ZMVVNIX1pFUk9fTUFTSyAgICgweDgwMDApDQo+ICAgICAgKyNkZWZp
bmUgX01NX0ZMVVNIX1pFUk9fT04gICAgICgweDgwMDApDQo+ICAgICAgKyNkZWZpbmUgX01NX0ZM
VVNIX1pFUk9fT0ZGICAgICgweDAwMDApDQo+ICAgICAgKw0KPiAgICAgICsjZGVmaW5lIF9NTV9H
RVRfRVhDRVBUSU9OX01BU0soKSAoX21tX2dldGNzcigpICYgX01NX01BU0tfTUFTSykNCj4gICAg
ICArI2RlZmluZSBfTU1fR0VUX0VYQ0VQVElPTl9TVEFURSgpIChfbW1fZ2V0Y3NyKCkgJiBfTU1f
RVhDRVBUX01BU0spDQo+ICAgICAgKyNkZWZpbmUgX01NX0dFVF9GTFVTSF9aRVJPX01PREUoKSAo
X21tX2dldGNzcigpICYgX01NX0ZMVVNIX1pFUk9fTUFTSykNCj4gICAgICArI2RlZmluZSBfTU1f
R0VUX1JPVU5ESU5HX01PREUoKSAoX21tX2dldGNzcigpICYgX01NX1JPVU5EX01BU0spDQo+ICAg
ICAgKw0KPiAgICAgICsjZGVmaW5lIF9NTV9TRVRfRVhDRVBUSU9OX01BU0soeCkgKF9tbV9zZXRj
c3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fTUFTS19NQVNLKSB8ICh4KSkpDQo+ICAgICAgKyNkZWZp
bmUgX01NX1NFVF9FWENFUFRJT05fU1RBVEUoeCkgKF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAm
IH5fTU1fRVhDRVBUX01BU0spIHwgKHgpKSkNCj4gICAgICArI2RlZmluZSBfTU1fU0VUX0ZMVVNI
X1pFUk9fTU9ERSh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9NTV9GTFVTSF9aRVJP
X01BU0spIHwgKHgpKSkNCj4gICAgICArI2RlZmluZSBfTU1fU0VUX1JPVU5ESU5HX01PREUoeCkg
KF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fUk9VTkRfTUFTSykgfCAoeCkpKQ0KPiAg
ICAgICsNCj4gICAgICArI2RlZmluZSBfTU1fVFJBTlNQT1NFNF9QUyhyb3cwLCByb3cxLCByb3cy
LCByb3czKSBcDQo+ICAgICAgK2RvIHsgXA0KPiAgICAgICsgIF9fbTEyOCB0bXAzLCB0bXAyLCB0
bXAxLCB0bXAwOyBcDQo+ICAgICAgKyAgdG1wMCA9IF9tbV91bnBhY2tsb19wcygocm93MCksIChy
b3cxKSk7IFwNCj4gICAgICArICB0bXAyID0gX21tX3VucGFja2xvX3BzKChyb3cyKSwgKHJvdzMp
KTsgXA0KPiAgICAgICsgIHRtcDEgPSBfbW1fdW5wYWNraGlfcHMoKHJvdzApLCAocm93MSkpOyBc
DQo+ICAgICAgKyAgdG1wMyA9IF9tbV91bnBhY2toaV9wcygocm93MiksIChyb3czKSk7IFwNCj4g
ICAgICArICAocm93MCkgPSBfbW1fbW92ZWxoX3BzKHRtcDAsIHRtcDIpOyBcDQo+ICAgICAgKyAg
KHJvdzEpID0gX21tX21vdmVobF9wcyh0bXAyLCB0bXAwKTsgXA0KPiAgICAgICsgIChyb3cyKSA9
IF9tbV9tb3ZlbGhfcHModG1wMSwgdG1wMyk7IFwNCj4gICAgICArICAocm93MykgPSBfbW1fbW92
ZWhsX3BzKHRtcDMsIHRtcDEpOyBcDQo+ICAgICAgK30gd2hpbGUgKDApDQo+ICAgICAgKw0KPiAg
ICAgICsvKiBBbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5LiAqLw0KPiAgICAgICsjZGVmaW5lIF9t
X3BleHRydyBfbW1fZXh0cmFjdF9waTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcGluc3J3IF9tbV9p
bnNlcnRfcGkxNg0KPiAgICAgICsjZGVmaW5lIF9tX3BtYXhzdyBfbW1fbWF4X3BpMTYNCj4gICAg
ICArI2RlZmluZSBfbV9wbWF4dWIgX21tX21heF9wdTgNCj4gICAgICArI2RlZmluZSBfbV9wbWlu
c3cgX21tX21pbl9waTE2DQo+ICAgICAgKyNkZWZpbmUgX21fcG1pbnViIF9tbV9taW5fcHU4DQo+
ICAgICAgKyNkZWZpbmUgX21fcG1vdm1za2IgX21tX21vdmVtYXNrX3BpOA0KPiAgICAgICsjZGVm
aW5lIF9tX3BtdWxodXcgX21tX211bGhpX3B1MTYNCj4gICAgICArI2RlZmluZSBfbV9wc2h1Zncg
X21tX3NodWZmbGVfcGkxNg0KPiAgICAgICsjZGVmaW5lIF9tX21hc2ttb3ZxIF9tbV9tYXNrbW92
ZV9zaTY0DQo+ICAgICAgKyNkZWZpbmUgX21fcGF2Z2IgX21tX2F2Z19wdTgNCj4gICAgICArI2Rl
ZmluZSBfbV9wYXZndyBfbW1fYXZnX3B1MTYNCj4gICAgICArI2RlZmluZSBfbV9wc2FkYncgX21t
X3NhZF9wdTgNCj4gICAgICArI2RlZmluZSBfbV8gX21tXw0KPiAgICAgICsjZGVmaW5lIF9tXyBf
bW1fDQo+ICAgICAgKw0KPiAgICAgICsjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgICAg
KyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgICAgKw0KPiAgICAgICsvKiBVZ2x5
IGhhY2sgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IChjb21wYXRpYmxlIHdpdGggZ2NjKSAq
Lw0KPiAgICAgICsjaWZkZWYgX19HTlVDX18NCj4gICAgICArI2luY2x1ZGUgPGVtbWludHJpbi5o
Pg0KPiAgICAgICsjZWxzZQ0KPiAgICAgICsjaWYgZGVmaW5lZChfX1NTRTJfXykgJiYgIV9fYnVp
bGRpbmdfbW9kdWxlKF9CdWlsdGluX2ludHJpbnNpY3MpDQo+ICAgICAgKyNpbmNsdWRlIDxlbW1p
bnRyaW4uaD4NCj4gICAgICArI2VuZGlmDQo+ICAgICAgKyNlbmRpZg0KPiAgICAgICsNCj4gICAg
ICArI2VuZGlmIC8qIF9fWE1NSU5UUklOX0ggKi8NCj4gICAgICAtLQ0KPiAgICAgIDIuMjEuMA0K
PiAgICAgIA0KPiAgICAgIA0KPg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:46:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:46: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 1hY7tY-0004h8-QP; Tue, 04 Jun 2019 11:46:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XtBW=UD=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hY7kM-0003gd-Lp
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:36:55 +0000
X-Inumbo-ID: 0b639d56-86bd-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.58]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0b639d56-86bd-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:36:51 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4890.eurprd01.prod.exchangelabs.com (20.177.212.76) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.22; Tue, 4 Jun
 2019 11:36:37 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Tue, 4 Jun 2019
 11:36:37 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH v2 1/1] Initial port of
 Intel Intrinsics on Unikraft
Thread-Index: AQHVGsnEnWW4ILfKD0CYSHkK9WWl6A==
Date: Tue, 4 Jun 2019 11:36:37 +0000
Message-ID: <20190604113623.5275-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0020.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:800:d0::30) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: bde32dee-e0fd-422f-92bd-08d6e8e0e6d3
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4890; 
x-ms-traffictypediagnostic: PR1PR01MB4890:
x-microsoft-antispam-prvs: <PR1PR01MB489089A848DD65BAFEF991E7A6150@PR1PR01MB4890.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 0058ABBBC7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(1496009)(136003)(376002)(346002)(366004)(39850400004)(396003)(189003)(199004)(386003)(316002)(6506007)(7736002)(6486002)(8936002)(45080400002)(8676002)(71190400001)(25786009)(53936002)(2906002)(305945005)(102836004)(81156014)(256004)(74482002)(71200400001)(86362001)(81166006)(5640700003)(2616005)(476003)(14444005)(50226002)(6916009)(6436002)(53946003)(6116002)(486006)(66946007)(786003)(1076003)(85202003)(30864003)(85182001)(2501003)(14454004)(6512007)(5660300002)(66556008)(66066001)(66476007)(26005)(54906003)(99286004)(73956011)(508600001)(3846002)(66446008)(52116002)(2351001)(64756008)(186003)(68736007)(4326008)(559001)(579004)(569006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4890;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: oGqO1/x18XG5HiskIGji2Gc4f8ELKMlwD9rc0uJo3rCNqwS1Xas+IFjB5qzcsHas6QUk9Uo2EjqxF/uDcw9W0z+hSE9G6orcETKtlzSlaF02ISNeI2WImzhzNJ0eVM183cq2LmNq+toGwpFYbkfMhzGkjGQNBDzxDySc7fuPhWz0vcztAi9ykV86BoLsBOeldZ7W9ozS5Lx4m3oh88mptpZqaDOFpKI10W2xJvuw+d8QtRNRQjNAALvwJdm0ZS9bekVnczyBCVYoj0oiMFSUVx1GZamRObUIqlnVg4ZTTt7W0kRbtgqAQXZdOX3JgZ0U2jbhm3YFbpjQShrPkUgxl4SNE1YxnpKJdbAsdPEj3/wE4mTYDbUmM81LarrmbTmZTnrSJE+9jn+/6rR0wBapKp5xrd8mc96LDxGpixvqkVs=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: bde32dee-e0fd-422f-92bd-08d6e8e0e6d3
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2019 11:36:37.3431 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4890
X-Mailman-Approved-At: Tue, 04 Jun 2019 11:46:23 +0000
Subject: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH v2 1/1] Initial
 port of Intel Intrinsics 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGludGVsIGludHJpbnNpY3MgdG8gVW5pa3JhZnQg
YXMgYW4gZXh0ZXJuYWwgbGlicmFyeS4NClRoaXMgcmVsZWFzZSBpcyBiYXNlZCBvbiB0aGUgTExW
TSBoZWFkZXJzIHdoaWNoIHdlcmUgYWRhcHRlZCB0byB3b3JrIG9uIFVuaWtyYWZ0DQp3aXRoIEdD
Qy4NCg0KVGhlIGxpYnJhcnkgbm93IHdvcmtzIHdpdGggR0NDIDYrLg0KDQpTaWduZWQtb2ZmLWJ5
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQotLS0NCiBDT0RJTkdfU1RZTEUubWQgICAgICAgIHwgICAgNCArDQogQ09OVFJJQlVUSU5HLm1k
ICAgICAgICB8ICAgIDQgKw0KIENvbmZpZy51ayAgICAgICAgICAgICAgfCAgIDI1ICsNCiBNQUlO
VEFJTkVSUy5tZCAgICAgICAgIHwgICAxMSArDQogTWFrZWZpbGUudWsgICAgICAgICAgICB8ICAg
NjkgKw0KIFJFQURNRS5tZCAgICAgICAgICAgICAgfCAgICA1ICsNCiBleHBvcnRzeW1zLnVrICAg
ICAgICAgIHwgICAgMSArDQogaW5jbHVkZS9hdnhpbnRyaW4uaCAgICB8IDUxMzMgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGluY2x1ZGUvZW1taW50cmluLmggICAg
fCA1MDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGluY2x1ZGUv
aW1taW50cmluLmggICAgfCAgIDc1ICsNCiBpbmNsdWRlL21tX21hbGxvYy5oICAgIHwgICA3NSAr
DQogaW5jbHVkZS9tbWludHJpbi5oICAgICB8IDE1OTggKysrKysrKysrKysrKw0KIGluY2x1ZGUv
bm1taW50cmluLmggICAgfCAgIDMwICsNCiBpbmNsdWRlL3BtbWludHJpbi5oICAgIHwgIDMyMSAr
KysNCiBpbmNsdWRlL3BvcGNudGludHJpbi5oIHwgIDEwMiArDQogaW5jbHVkZS9zbW1pbnRyaW4u
aCAgICB8IDI1MDQgKysrKysrKysrKysrKysrKysrKysNCiBpbmNsdWRlL3RtbWludHJpbi5oICAg
IHwgIDc5MCArKysrKysrDQogaW5jbHVkZS94bW1pbnRyaW4uaCAgICB8IDMxMDEgKysrKysrKysr
KysrKysrKysrKysrKysrDQogMTggZmlsZXMgY2hhbmdlZCwgMTg4ODEgaW5zZXJ0aW9ucygrKQ0K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQg
Q09OVFJJQlVUSU5HLm1kDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0KIGNyZWF0ZSBt
b2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51
aw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXhw
b3J0c3ltcy51aw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2F2eGludHJpbi5oDQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZW1taW50cmluLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQg
aW5jbHVkZS9pbW1pbnRyaW4uaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL21tX21hbGxv
Yy5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbW1pbnRyaW4uaA0KIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL25tbWludHJpbi5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv
cG1taW50cmluLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9wb3BjbnRpbnRyaW4uaA0K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NtbWludHJpbi5oDQogY3JlYXRlIG1vZGUgMTAw
NjQ0IGluY2x1ZGUvdG1taW50cmluLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS94bW1p
bnRyaW4uaA0KDQpkaWZmIC0tZ2l0IGEvQ09ESU5HX1NUWUxFLm1kIGIvQ09ESU5HX1NUWUxFLm1k
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNTczMDA0MQ0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvQ09ESU5HX1NUWUxFLm1kDQpAQCAtMCwwICsxLDQgQEANCitDb2RpbmcgU3R5
bGUNCis9PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT0RJTkdfU1RZTEUu
bWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCmRpZmYgLS1naXQgYS9D
T05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp
bmRleCAwMDAwMDAwLi41ZjU1ZWNhDQotLS0gL2Rldi9udWxsDQorKysgYi9DT05UUklCVVRJTkcu
bWQNCkBAIC0wLDAgKzEsNCBAQA0KK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdA0KKz09PT09PT09
PT09PT09PT09PT09PT09DQorDQorUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1k
YCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQpkaWZmIC0tZ2l0IGEvQ29u
ZmlnLnVrIGIvQ29uZmlnLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4u
NDEzYjEzNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQ29uZmlnLnVrDQpAQCAtMCwwICsxLDI1IEBA
DQorbWVudWNvbmZpZyBMSUJJTlRFTF9JTlRSSU5TSUNTDQorICAgIGJvb2wgIkludGVsIEludHJp
bnNpY3MgLSBDIHN0eWxlIGZ1bmN0aW9ucyB0aGF0IHByb3ZpZGUgYWNjZXNzIEludGVsIGluc3Ry
dWN0aW9ucyINCisgICAgZGVmYXVsdCBuDQorDQoraWYgTElCSU5URUxfSU5UUklOU0lDUw0KK2Nv
bmZpZyBTSU1EX1NTRQ0KKyAgICBib29sICJFbmFibGUgU1NFIHN1cHBvcnQiDQorICAgIGRlZmF1
bHQgbg0KKw0KK2NvbmZpZyBTSU1EX1NTRTINCisgICAgYm9vbCAiRW5hYmxlIFNTRTIgc3VwcG9y
dCINCisgICAgZGVmYXVsdCBuDQorDQorY29uZmlnIFNJTURfU1NFMw0KKyAgICBib29sICJFbmFi
bGUgU1NFMyBzdXBwb3J0Ig0KKyAgICBkZWZhdWx0IG4NCisNCitjb25maWcgU0lNRF9TU0U0DQor
ICAgIGJvb2wgIkVuYWJsZSBTU0U0IHN1cHBvcnQiDQorICAgIGRlZmF1bHQgbg0KKw0KK2NvbmZp
ZyBTSU1EX0FWWA0KKyAgICBib29sICJFbmFibGUgQVZYIHN1cHBvcnQiDQorICAgIGRlZmF1bHQg
bg0KK2VuZGlmDQpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZA0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmEzZDNiMGENCi0tLSAvZGV2L251
bGwNCisrKyBiL01BSU5UQUlORVJTLm1kDQpAQCAtMCwwICsxLDExIEBADQorTWFpbnRhaW5lcnMg
TGlzdA0KKz09PT09PT09PT09PT09PT0NCisNCitGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhp
cyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4NCit0aGUg
bWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KKw0KKwlMSUJJTlRFTF9JTlRSSU5TSUNTLVVOSUtS
QUZUDQorCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCisJTToJVmxh
ZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KKwlM
OgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZw0KKwlGOiAqDQpkaWZmIC0tZ2l0IGEvTWFrZWZp
bGUudWsgYi9NYWtlZmlsZS51aw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAu
LjU4NWM0ZjMNCi0tLSAvZGV2L251bGwNCisrKyBiL01ha2VmaWxlLnVrDQpAQCAtMCwwICsxLDY5
IEBADQorIyAgbGliaW50ZWxfaW50cmluc2ljcyBNYWtlZmlsZS51aw0KKyMNCisjICBBdXRob3Jz
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBC
dWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIw0KKyMgIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyMgIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucw0KKyMgIGFyZSBtZXQ6DQorIw0KKyMgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyMg
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0DQorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorIyAg
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVz
IG9mIGl0cw0KKyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisjDQorIyAgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiDQorIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyMgIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQorIyAg
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRQ0KKyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisjICBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyMgIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUw0KKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorIyAgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisj
ICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQ0KKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyMN
CisjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkg
V0FZLg0KKyMNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgTGlicmFyeSByZWdpc3Ry
YXRpb24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyQoZXZhbCAkKGNhbGwgYWRkbGliX3Ms
bGliaW50ZWxfaW50cmluc2ljcywkKENPTkZJR19MSUJJTlRFTF9JTlRSSU5TSUNTKSkpDQorDQor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIExpYnJhcnkgaW5jbHVkZXMNCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KK0NJTkNMVURFUy0kKENPTkZJR19MSUJJTlRFTF9JTlRSSU5TSUNTKSAr
PSAtSSQoTElCSU5URUxfSU5UUklOU0lDU19CQVNFKS9pbmNsdWRlDQorQ1hYSU5DTFVERVMtJChD
T05GSUdfTElCSU5URUxfSU5UUklOU0lDUykgKz0gLUkkKExJQklOVEVMX0lOVFJJTlNJQ1NfQkFT
RSkvaW5jbHVkZQ0KKw0KK2lmZGVmIENPTkZJR19TSU1EX1NTRQ0KK0NGTEFHUwkJKz0gLW1zc2Ug
LW1mcG1hdGg9c3NlDQorQ1hYRkxBR1MJKz0gLW1zc2UgLW1mcG1hdGg9c3NlDQorZW5kaWYNCisN
CitpZmRlZiBDT05GSUdfU0lNRF9TU0UyDQorQ0ZMQUdTCQkrPSAtbXNzZTINCitDWFhGTEFHUwkr
PSAtbXNzZTINCitlbmRpZg0KKw0KK2lmZGVmIENPTkZJR19TSU1EX1NTRTMNCitDRkxBR1MJCSs9
IC1tc3NlMw0KK0NYWEZMQUdTCSs9IC1tc3NlMw0KK2VuZGlmDQorDQoraWZkZWYgQ09ORklHX1NJ
TURfU1NFNA0KK0NGTEFHUwkJKz0gLW1zc2U0DQorQ1hYRkxBR1MJKz0gLW1zc2U0DQorZW5kaWYN
CisNCitpZmRlZiBDT05GSUdfU0lNRF9BVlgNCitDRkxBR1MJCSs9IC1tYXZ4DQorQ1hYRkxBR1MJ
Kz0gLW1hdngNCitlbmRpZg0KZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZA0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmVjOGM0NzQNCi0tLSAvZGV2L251bGwN
CisrKyBiL1JFQURNRS5tZA0KQEAgLTAsMCArMSw1IEBADQorbGliaW50ZWxcX2ludHJpbmlzY3Mg
Zm9yIFVuaWtyYWZ0DQorPT09PT09PT09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0
aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9g
DQorc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQpkaWZmIC0t
Z2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
DQppbmRleCAwMDAwMDAwLi42MjFlOTRmDQotLS0gL2Rldi9udWxsDQorKysgYi9leHBvcnRzeW1z
LnVrDQpAQCAtMCwwICsxIEBADQorbm9uZQ0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXZ4aW50cmlu
LmggYi9pbmNsdWRlL2F2eGludHJpbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw
MDAwMC4uNmI5NTQxZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvaW5jbHVkZS9hdnhpbnRyaW4uaA0K
QEAgLTAsMCArMSw1MTMzIEBADQorLyo9PT0tLS0tIGF2eGludHJpbi5oIC0gQVZYIGludHJpbnNp
Y3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAqDQorICogUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j
dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQorICogaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlIHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCisgKiBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0K
KyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQor
ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQorICogQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUg0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KKyAq
IFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKi8NCisNCisj
aWZuZGVmIF9fSU1NSU5UUklOX0gNCisjZXJyb3IgIk5ldmVyIHVzZSA8YXZ4aW50cmluLmg+IGRp
cmVjdGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iDQorI2VuZGlmDQorDQorI2lm
bmRlZiBfX0FWWElOVFJJTl9IDQorI2RlZmluZSBfX0FWWElOVFJJTl9IDQorDQordHlwZWRlZiBk
b3VibGUgX192NGRmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KK3R5
cGVkZWYgZmxvYXQgX192OHNmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkp
Ow0KK3R5cGVkZWYgbG9uZyBsb25nIF9fdjRkaSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6
ZV9fICgzMikpKTsNCit0eXBlZGVmIGludCBfX3Y4c2kgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9y
X3NpemVfXyAoMzIpKSk7DQordHlwZWRlZiBzaG9ydCBfX3YxNmhpIF9fYXR0cmlidXRlX18gKChf
X3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KK3R5cGVkZWYgY2hhciBfX3YzMnFpIF9fYXR0cmlidXRl
X18gKChfX3ZlY3Rvcl9zaXplX18gKDMyKSkpOw0KKw0KKy8qIFVuc2lnbmVkIHR5cGVzICovDQor
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX192NGR1IF9fYXR0cmlidXRlX18gKChfX3ZlY3Rv
cl9zaXplX18gKDMyKSkpOw0KK3R5cGVkZWYgdW5zaWduZWQgaW50IF9fdjhzdSBfX2F0dHJpYnV0
ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
djE2aHUgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIpKSk7DQordHlwZWRlZiB1
bnNpZ25lZCBjaGFyIF9fdjMycXUgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMzIp
KSk7DQorDQorLyogV2UgbmVlZCBhbiBleHBsaWNpdGx5IHNpZ25lZCB2YXJpYW50IGZvciBjaGFy
LiBOb3RlIHRoYXQgdGhpcyBzaG91bGRuJ3QNCisgKiBhcHBlYXIgaW4gdGhlIGludGVyZmFjZSB0
aG91Z2guICovDQordHlwZWRlZiBzaWduZWQgY2hhciBfX3YzMnFzIF9fYXR0cmlidXRlX18oKF9f
dmVjdG9yX3NpemVfXygzMikpKTsNCisNCit0eXBlZGVmIGZsb2F0IF9fbTI1NiBfX2F0dHJpYnV0
ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgzMikpKTsNCit0eXBlZGVmIGRvdWJsZSBfX20yNTZkIF9f
YXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygzMikpKTsNCit0eXBlZGVmIGxvbmcgbG9uZyBf
X20yNTZpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygzMikpKTsNCisNCisvKiBEZWZp
bmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUu
ICovDQorI2lmZGVmICBfX0dOVUNfXw0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0
cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFs
X18pKQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTMTI4IF9fYXR0cmlidXRlX18oKF9fZ251
X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNlDQor
I2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngiKSwgX19taW5fdmVjdG9yX3dpZHRoX18o
MjU2KSkpDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMxMjggX19hdHRyaWJ1dGVfXygoX19h
bHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJhdngiKSwgX19taW5fdmVj
dG9yX3dpZHRoX18oMTI4KSkpDQorI2VuZGlmDQorDQorLyogQXJpdGhtZXRpYyAqLw0KKy8vLyBB
ZGRzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291
cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQorc3Rh
dGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2FkZF9wZChf
X20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKSgoX192NGRm
KV9fYSsoX192NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBBZGRzIHR3byAyNTYtYml0IHZlY3RvcnMg
b2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQUREUFMgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJu
cyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2Yg
Ym90aA0KKy8vLyAgICBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbTI1Nl9hZGRfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTI1NikoKF9fdjhzZilfX2ErKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8g
U3VidHJhY3RzIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNVQlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgbWludWVuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLg0KKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBk
aWZmZXJlbmNlcyBiZXR3ZWVuDQorLy8vICAgIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5s
aW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3N1Yl9wZChfX20yNTZkIF9f
YSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKSgoX192NGRmKV9fYS0oX192
NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBb
OCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQUyA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWludWVuZC4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhl
IHN1YnRyYWhlbmQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2Vlbg0KKy8vLyAgICBib3RoIG9wZXJh
bmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2
X3N1Yl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KSgo
X192OHNmKV9fYS0oX192OHNmKV9fYik7DQorfQ0KKw0KKy8vLyBBZGRzIHRoZSBldmVuLWluZGV4
ZWQgdmFsdWVzIGFuZCBzdWJ0cmFjdHMgdGhlIG9kZC1pbmRleGVkIHZhbHVlcyBvZg0KKy8vLyAg
ICB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZBRERTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIGxlZnQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNl
IG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIGFsdGVybmF0aW5nIHN1bXMNCisvLy8gICAgYW5kIGRpZmZlcmVuY2Vz
IGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW0yNTZfYWRkc3ViX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikN
Cit7DQorICByZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfYWRkc3VicGQyNTYoKF9fdjRk
ZilfX2EsIChfX3Y0ZGYpX19iKTsNCit9DQorDQorLy8vIEFkZHMgdGhlIGV2ZW4taW5kZXhlZCB2
YWx1ZXMgYW5kIHN1YnRyYWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQorLy8vICAgIHR3
byAyNTYtYml0IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQUREU1VCUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhl
IGxlZnQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFu
ZC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBhbHRlcm5hdGluZyBzdW1zIGFuZA0KKy8vLyAgICBkaWZmZXJlbmNlcyBiZXR3ZWVu
IGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfYWRkc3ViX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0
dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfYWRkc3VicHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4
c2YpX19iKTsNCit9DQorDQorLy8vIERpdmlkZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4
IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRElWUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBkaXZpc29yLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcy4NCitz
dGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfZGl2X3Bk
KF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0
ZGYpX19hLyhfX3Y0ZGYpX19iKTsNCit9DQorDQorLy8vIERpdmlkZXMgdHdvIDI1Ni1iaXQgdmVj
dG9ycyBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZESVZQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aWRlbmQuDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBkaXZpc29yLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50cyBvZiBib3RoDQorLy8vICAgIG9wZXJh
bmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2
X2Rpdl9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KSgo
X192OHNmKV9fYS8oX192OHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSBhbmQgcmV0dXJucyB0aGUgZ3JlYXRlcg0KKy8vLyAg
ICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1BWFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9w
ZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMg
QSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWF4aW11bSB2
YWx1ZXMNCisvLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBf
X20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9tYXhfcGQoX19tMjU2ZCBfX2EsIF9f
bTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl9tYXhwZDI1
NigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDI1
Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSBhbmQgcmV0dXJucyB0aGUgZ3JlYXRlcg0KKy8v
LyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1BWFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
b3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5z
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbWF4aW11bSB2
YWx1ZXMNCisvLy8gICAgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBf
X20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X21heF9wcyhfX20yNTYgX19hLCBfX20y
NTYgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX21heHBzMjU2KChf
X3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXSBhbmQgcmV0dXJucyB0aGUgbGVzc2VyDQorLy8vICAg
IG9mIGVhY2ggcGFpciBvZiB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
TUlOUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3Bl
cmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtaW5pbXVtIHZh
bHVlcw0KKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9f
bTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X21pbl9wZChfX20yNTZkIF9fYSwgX19t
MjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX21pbnBkMjU2
KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMjU2
LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZSBsZXNzZXINCisvLy8g
ICAgb2YgZWFjaCBwYWlyIG9mIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNSU5QUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9w
ZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbmltdW0gdmFs
dWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19t
MjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9taW5fcHMoX19tMjU2IF9fYSwgX19tMjU2
IF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9taW5wczI1NigoX192
OHNmKV9fYSwgKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyB0d28gMjU2LWJp
dCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZNVUxQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBv
cGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5z
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3Rz
IG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X211bF9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20yNTZkKSgoX192NGRmKV9fYSAqIChfX3Y0ZGYpX19iKTsNCit9
DQorDQorLy8vIE11bHRpcGxpZXMgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNVUxQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3RzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQor
c3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbXVsX3Bz
KF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c2Yp
X19hICogKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJv
b3RzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGRv
dWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1FSVFBEIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdIGNvbnRhaW5pbmcgdGhlIHNxdWFyZSByb290cyBvZiB0aGUNCisvLy8gICAgdmFsdWVz
IGluIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbTI1Nl9zcXJ0X3BkKF9fbTI1NmQgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMjU2
ZClfX2J1aWx0aW5faWEzMl9zcXJ0cGQyNTYoKF9fdjRkZilfX2EpOw0KK30NCisNCisvLy8gQ2Fs
Y3VsYXRlcyB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3Rv
ciBvZg0KKy8vLyAgICBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHNxdWFyZSByb290cyBvZiB0
aGUNCisvLy8gICAgdmFsdWVzIGluIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NxcnRfcHMoX19tMjU2IF9fYSkNCit7DQor
ICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zcXJ0cHMyNTYoKF9fdjhzZilfX2EpOw0K
K30NCisNCisvLy8gQ2FsY3VsYXRlcyB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdHMgb2YgdGhl
IHZhbHVlcyBpbiBhIDI1Ni1iaXQNCisvLy8gICAgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJTUVJUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHJlY2lwcm9jYWwgc3F1YXJlDQorLy8vICAgIHJvb3RzIG9mIHRoZSB2YWx1ZXMg
aW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfcnNxcnRfcHMoX19tMjU2IF9fYSkNCit7DQorICByZXR1cm4gKF9fbTI1Nilf
X2J1aWx0aW5faWEzMl9yc3FydHBzMjU2KChfX3Y4c2YpX19hKTsNCit9DQorDQorLy8vIENhbGN1
bGF0ZXMgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZSB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBv
Zg0KKy8vLyAgICBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZS
Q1BQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcmVjaXByb2NhbHMgb2YgdGhlDQor
Ly8vICAgIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9yY3BfcHMoX19tMjU2IF9fYSkNCit7DQorICByZXR1
cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9yY3BwczI1NigoX192OHNmKV9fYSk7DQorfQ0KKw0K
Ky8vLyBSb3VuZHMgdGhlIHZhbHVlcyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBhcyBzcGVjaWZpZWQNCisvLy8gICAgYnkgdGhlIGJ5dGUgb3BlcmFuZC4gVGhlIHNvdXJjZSB2
YWx1ZXMgYXJlIHJvdW5kZWQgdG8gaW50ZWdlciB2YWx1ZXMgYW5kDQorLy8vICAgIHJldHVybmVk
IGFzIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBf
X20yNTZkIF9tbTI1Nl9yb3VuZF9wZChfX20yNTZkIFYsIGNvbnN0IGludCBNKTsNCisvLy8gXGVu
ZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Uk9VTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVg0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAg
QW4gaW50ZWdlciB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgcm91bmRpbmcgb3BlcmF0aW9uLiBc
bg0KKy8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4NCisvLy8gICAgQml0IFszXSBp
cyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQorLy8vICAgICAgMDogQSBub3JtYWwg
UEUgZXhjZXB0aW9uIGlzIHVzZWQuIFxuDQorLy8vICAgICAgMTogVGhlIFBFIGZpZWxkIGlzIG5v
dCB1cGRhdGVkLiBcbg0KKy8vLyAgICBCaXQgWzJdIGlzIHRoZSByb3VuZGluZyBjb250cm9sIHNv
dXJjZTogXG4NCisvLy8gICAgICAwOiBVc2UgYml0cyBbMTowXSBvZiBcYSBNLiBcbg0KKy8vLyAg
ICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nLiBcbg0KKy8vLyAgICBCaXRzIFsx
OjBdIGNvbnRhaW4gdGhlIHJvdW5kaW5nIGNvbnRyb2wgZGVmaW5pdGlvbjogXG4NCisvLy8gICAg
ICAwMDogTmVhcmVzdC4gXG4NCisvLy8gICAgICAwMTogRG93bndhcmQgKHRvd2FyZCBuZWdhdGl2
ZSBpbmZpbml0eSkuIFxuDQorLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZlIGlu
ZmluaXR5KS4gXG4NCisvLy8gICAgICAxMTogVHJ1bmNhdGVkLg0KKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVl
cy4NCisjZGVmaW5lIF9tbTI1Nl9yb3VuZF9wZChWLCBNKSBcDQorICAgIChfX20yNTZkKV9fYnVp
bHRpbl9pYTMyX3JvdW5kcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoViksIChNKSkNCisNCisvLy8g
Um91bmRzIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gYXMNCisvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSBieXRlIG9wZXJhbmQuIFRoZSBzb3VyY2Ug
dmFsdWVzIGFyZSByb3VuZGVkIHRvIGludGVnZXINCisvLy8gICAgdmFsdWVzIGFuZCByZXR1cm5l
ZCBhcyBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2IF9tbTI1Nl9yb3VuZF9wcyhf
X20yNTYgViwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBWDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgdGhhdCBzcGVj
aWZpZXMgdGhlIHJvdW5kaW5nIG9wZXJhdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNzo0XSBhcmUg
cmVzZXJ2ZWQuIFxuDQorLy8vICAgIEJpdCBbM10gaXMgYSBwcmVjaXNpb24gZXhjZXB0aW9uIHZh
bHVlOiBcbg0KKy8vLyAgICAgIDA6IEEgbm9ybWFsIFBFIGV4Y2VwdGlvbiBpcyB1c2VkLiBcbg0K
Ky8vLyAgICAgIDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZC4gXG4NCisvLy8gICAgQml0
IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQorLy8vICAgICAgMDogVXNl
IGJpdHMgWzE6MF0gb2YgXGEgTS4gXG4NCisvLy8gICAgICAxOiBVc2UgdGhlIGN1cnJlbnQgTVhD
U1Igc2V0dGluZy4gXG4NCisvLy8gICAgQml0cyBbMTowXSBjb250YWluIHRoZSByb3VuZGluZyBj
b250cm9sIGRlZmluaXRpb246IFxuDQorLy8vICAgICAgMDA6IE5lYXJlc3QuIFxuDQorLy8vICAg
ICAgMDE6IERvd253YXJkICh0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkpLiBcbg0KKy8vLyAgICAg
IDEwOiBVcHdhcmQgKHRvd2FyZCBwb3NpdGl2ZSBpbmZpbml0eSkuIFxuDQorLy8vICAgICAgMTE6
IFRydW5jYXRlZC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1Nl9yb3VuZF9w
cyhWLCBNKSBcDQorICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3JvdW5kcHMyNTYoKF9fdjhzZiko
X19tMjU2KShWKSwgKE0pKQ0KKw0KKy8vLyBSb3VuZHMgdXAgdGhlIHZhbHVlcyBzdG9yZWQgaW4g
YSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFRoZQ0KKy8vLyAgICBzb3VyY2UgdmFs
dWVzIGFyZSByb3VuZGVkIHVwIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1cm5lZCBhcyA2NC1i
aXQNCisvLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8g
X19tMjU2ZCBfbW0yNTZfY2VpbF9wZChfX20yNTZkIFYpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VORFBEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHVwIHZhbHVlcy4NCisjZGVmaW5lIF9t
bTI1Nl9jZWlsX3BkKFYpICBfbW0yNTZfcm91bmRfcGQoKFYpLCBfTU1fRlJPVU5EX0NFSUwpDQor
DQorLy8vIFJvdW5kcyBkb3duIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdLg0KKy8vLyAgICBUaGUgc291cmNlIHZhbHVlcyBhcmUgcm91bmRlZCBk
b3duIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1cm5lZCBhcw0KKy8vLyAgICA2NC1iaXQgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2ZCBfbW0yNTZf
Zmxvb3JfcGQoX19tMjU2ZCBWKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gVg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91
YmxlXS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgcm91bmRlZCBkb3duDQorLy8vICAgIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1
Nl9mbG9vcl9wZChWKSBfbW0yNTZfcm91bmRfcGQoKFYpLCBfTU1fRlJPVU5EX0ZMT09SKQ0KKw0K
Ky8vLyBSb3VuZHMgdXAgdGhlIHZhbHVlcyBzdG9yZWQgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XS4gVGhlDQorLy8vICAgIHNvdXJjZSB2YWx1ZXMgYXJlIHJvdW5kZWQgdXAgdG8g
aW50ZWdlciB2YWx1ZXMgYW5kIHJldHVybmVkIGFzDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZh
bHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBc
Y29kZQ0KKy8vLyBfX20yNTYgX21tMjU2X2NlaWxfcHMoX19tMjU2IFYpOw0KKy8vLyBcZW5kY29k
ZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZST1VO
RFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcm91bmRlZCB1cCB2YWx1ZXMuDQorI2Rl
ZmluZSBfbW0yNTZfY2VpbF9wcyhWKSAgX21tMjU2X3JvdW5kX3BzKChWKSwgX01NX0ZST1VORF9D
RUlMKQ0KKw0KKy8vLyBSb3VuZHMgZG93biB0aGUgdmFsdWVzIHN0b3JlZCBpbiBhIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUNCisvLy8gICAgc291cmNlIHZhbHVlcyBhcmUgcm91
bmRlZCBkb3duIHRvIGludGVnZXIgdmFsdWVzIGFuZCByZXR1cm5lZCBhcw0KKy8vLyAgICBmbG9h
dGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMjU2IF9tbTI1Nl9mbG9vcl9wcyhfX20yNTYgVik7
DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMg
QSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSByb3VuZGVkIGRv
d24gdmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2X2Zsb29yX3BzKFYpIF9tbTI1Nl9yb3VuZF9wcygo
ViksIF9NTV9GUk9VTkRfRkxPT1IpDQorDQorLyogTG9naWNhbCAqLw0KKy8vLyBQZXJmb3JtcyBh
IGJpdHdpc2UgQU5EIG9mIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFORFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUNCisvLy8g
ICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfYW5kX3BkKF9fbTI1NmQgX19hLCBfX20yNTZk
IF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NmQpKChfX3Y0ZHUpX19hICYgKF9fdjRkdSlfX2Ip
Ow0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0
b3JzIG9mIFs4IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFORFBT
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYt
Yml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJl
dHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBiaXR3
aXNlIEFORCBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitz
dGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9hbmRfcHMo
X19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQorICByZXR1cm4gKF9fbTI1NikoKF9fdjhzdSlf
X2EgJiAoX192OHN1KV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9m
IHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCB1c2luZw0KKy8vLyAgICB0aGUg
b25lJ3MgY29tcGxlbWVudCBvZiB0aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291
cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQU5ETlBEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4g
VGhlDQorLy8vICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRo
ZSBiaXR3aXNlIEFORC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSByaWdodCBzb3VyY2Ugb3BlcmFuZC4NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgYml0d2lzZSBBTkQgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBvZiB0aGUgc2Vjb25kIG9wZXJh
bmQgYW5kIHRoZSBvbmUncyBjb21wbGVtZW50IG9mIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5k
Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9h
bmRub3RfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2
ZCkofihfX3Y0ZHUpX19hICYgKF9fdjRkdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBi
aXR3aXNlIEFORCBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCB1c2luZw0K
Ky8vLyAgICB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB0
aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
QU5ETlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJj
ZSBvcGVyYW5kLiBUaGUNCisvLy8gICAgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHZhbHVlIGlz
IHVzZWQgaW4gdGhlIGJpdHdpc2UgQU5ELg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgcmlnaHQgc291cmNlIG9w
ZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBvZiB0aGUgc2Vj
b25kIG9wZXJhbmQgYW5kIHRoZSBvbmUncyBjb21wbGVtZW50IG9mIHRoZSBmaXJzdA0KKy8vLyAg
ICBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X2FuZG5vdF9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVybiAo
X19tMjU2KSh+KF9fdjhzdSlfX2EgJiAoX192OHN1KV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3Jt
cyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWT1JQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUNCisvLy8g
ICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfb3JfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQg
X19iKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZCkoKF9fdjRkdSlfX2EgfCAoX192NGR1KV9fYik7
DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9y
cyBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZPUlBTIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVy
bnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBiaXR3aXNl
IE9SIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRp
YyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X29yX3BzKF9fbTI1
NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3UpX19hIHwg
KF9fdjhzdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIFhPUiBvZiB0d28g
MjU2LWJpdCB2ZWN0b3JzIG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZYT1JQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgYml0d2lzZSBYT1Igb2YgdGhlDQorLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJv
dGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tMjU2X3hvcl9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJu
IChfX20yNTZkKSgoX192NGR1KV9fYSBeIChfX3Y0ZHUpX19iKTsNCit9DQorDQorLy8vIFBlcmZv
cm1zIGEgYml0d2lzZSBYT1Igb2YgdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZYT1JQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFt
IF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
b25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBYT1Igb2YgdGhlDQorLy8v
ICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1
NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfeG9yX3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBf
X2IpDQorew0KKyAgcmV0dXJuIChfX20yNTYpKChfX3Y4c3UpX19hIF4gKF9fdjhzdSlfX2IpOw0K
K30NCisNCisvKiBIb3Jpem9udGFsIGFyaXRobWV0aWMgKi8NCisvLy8gSG9yaXpvbnRhbGx5IGFk
ZHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gdHdvDQorLy8vICAg
IDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWSEFERFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUg
b2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0
aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUgZXZlbi1pbmRleGVkDQorLy8vICAgIGVsZW1l
bnRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1
ZXMgYXJlIHJldHVybmVkIGluIHRoZSBvZGQtaW5kZXhlZA0KKy8vLyAgICBlbGVtZW50cyBvZiBh
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0KKy8vLyAg
ICBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbTI1Nl9oYWRkX3BkKF9fbTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7DQorICBy
ZXR1cm4gKF9fbTI1NmQpX19idWlsdGluX2lhMzJfaGFkZHBkMjU2KChfX3Y0ZGYpX19hLCAoX192
NGRmKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgYWRkcyB0aGUgYWRqYWNlbnQgcGFp
cnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28NCisvLy8gICAgMjU2LWJpdCB2ZWN0b3JzIG9m
IFs4IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhBRERQUyA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSByZXR1cm5l
ZCBpbiB0aGUgZWxlbWVudHMgd2l0aA0KKy8vLyAgICBpbmRleCAwLCAxLCA0LCA1IG9mIGEgdmVj
dG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSByZXR1cm5l
ZCBpbiB0aGUgZWxlbWVudHMgd2l0aA0KKy8vLyAgICBpbmRleCAyLCAzLCA2LCA3IG9mIGEgdmVj
dG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0KKy8vLyAgICBib3Ro
IG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X2hhZGRfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQorICByZXR1cm4gKF9f
bTI1NilfX2J1aWx0aW5faWEzMl9oYWRkcHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2YpX19iKTsN
Cit9DQorDQorLy8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9m
IHZhbHVlcyBjb250YWluZWQgaW4gdHdvDQorLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4
IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSFNVQlBEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4N
CisvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFy
ZSByZXR1cm5lZCBpbiB0aGUNCisvLy8gICAgZXZlbi1pbmRleGVkIGVsZW1lbnRzIG9mIGEgdmVj
dG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzLg0KKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1
ZXMgYXJlIHJldHVybmVkIGluIHRoZQ0KKy8vLyAgICBvZGQtaW5kZXhlZCBlbGVtZW50cyBvZiBh
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwNCisvLy8gICAgZGlmZmVy
ZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW0yNTZfaHN1Yl9wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQor
ew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2hzdWJwZDI1NigoX192NGRmKV9f
YSwgKF9fdjRkZilfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IHN1YnRyYWN0cyB0aGUg
YWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiB0d28NCisvLy8gICAgMjU2LWJp
dCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkhTVUJQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2Vl
biB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUNCisvLy8gICAgZWxlbWVudHMgd2l0aCBp
bmRleCAwLCAxLCA0LCA1IG9mIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVy
ZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiB0aGUNCisvLy8gICAgZWxl
bWVudHMgd2l0aCBpbmRleCAyLCAzLCA2LCA3IG9mIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
Ky8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlIGhvcml6b250YWwNCisvLy8gICAgZGlmZmVyZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCitz
dGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9oc3ViX3Bz
KF9fbTI1NiBfX2EsIF9fbTI1NiBfX2IpDQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGlu
X2lhMzJfaHN1YnBzMjU2KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYik7DQorfQ0KKw0KKy8qIFZl
Y3RvciBwZXJtdXRhdGlvbnMgKi8NCisvLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkDQorLy8vICAgIGJ5IHRoZSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUEVSTUlMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYw0K
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVjaWZ5aW5nIGhvdyB0
aGUgdmFsdWVzIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8vICAgIEJpdCBbMV06
IFxuDQorLy8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRv
IGJpdHMgWzYzOjBdIG9mIHRoZSByZXR1cm5lZA0KKy8vLyAgICAgICAgIHZlY3Rvci4gXG4NCisv
Ly8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRz
IFs2MzowXSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAg
IEJpdCBbNjVdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCisvLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFp
bmluZyB0aGUgY29waWVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMxMjgNCitfbW1fcGVybXV0ZXZhcl9wZChfX20xMjhkIF9fYSwgX19tMTI4aSBf
X2MpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwZCgo
X192MmRmKV9fYSwgKF9fdjJkaSlfX2MpOw0KK30NCisNCisvLy8gQ29waWVzIHRoZSB2YWx1ZXMg
aW4gYSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkDQorLy8vICAg
IGJ5IHRoZSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUEVSTUlMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8g
XHBhcmFtIF9fYw0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVj
aWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8v
ICAgIEJpdCBbMV06IFxuDQorLy8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSByZXR1cm5lZA0KKy8vLyAgICAgICAgIHZl
Y3Rvci4gXG4NCisvLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFs2MzowXSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQorLy8vICAgIEJpdCBbNjVdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzYzOjBdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJl
dHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0IFsxMjldOiBcbg0KKy8vLyAgICAgIDA6IEJp
dHMgWzE5MToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTI4XSBv
ZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0
cyBbMjU1OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxMjhdIG9m
IHRoZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0IFsxOTNd
OiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzE5MToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGll
ZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQorLy8vICAgICAgMTogQml0cyBbMjU1OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KKy8vLyAgICByZXR1cm5lZCB2ZWN0b3IuDQorLy8v
IFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhl
IGNvcGllZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X3Blcm11dGV2YXJfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmkgX19jKQ0KK3sN
CisgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycGQyNTYoKF9fdjRk
ZilfX2EsIChfX3Y0ZGkpX19jKTsNCit9DQorDQorLy8vIENvcGllcyB0aGUgdmFsdWVzIHN0b3Jl
ZCBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFzDQorLy8vICAgIHNwZWNpZmll
ZCBieSB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLg0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBFUk1JTFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFt
IF9fYw0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZCBzcGVjaWZ5aW5n
IGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8vICAgIEJp
dHMgWzE6MF06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29w
aWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
CisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8g
Yml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisv
Ly8gICAgQml0cyBbMzM6MzJdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1
cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBh
cmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFs2NTo2NF06IFxuDQorLy8vICAgICAgMDA6IEJpdHMg
WzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQor
Ly8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0cyBbNjM6
MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQorLy8v
ICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBbOTU6NjRd
IG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQorLy8vICAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMgWzk3Ojk2XTogXG4NCisvLy8g
ICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEy
Nzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAg
ICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6
OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAg
MTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEx
OiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZd
IG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVl
cy4NCitzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV9w
ZXJtdXRldmFyX3BzKF9fbTEyOCBfX2EsIF9fbTEyOGkgX19jKQ0KK3sNCisgIHJldHVybiAoX19t
MTI4KV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwcygoX192NHNmKV9fYSwgKF9fdjRzaSlfX2Mp
Ow0KK30NCisNCisvLy8gQ29waWVzIHRoZSB2YWx1ZXMgc3RvcmVkIGluIGEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gYXMNCisvLy8gICAgc3BlY2lmaWVkIGJ5IHRoZSAyNTYtYml0IGlu
dGVnZXIgdmVjdG9yIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVS
TUlMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19jDQorLy8vICAg
IEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1
ZXMgYXJlIHRvIGJlDQorLy8vICAgIGNvcGllZC4gXG4NCisvLy8gICAgQml0cyBbMTowXTogXG4N
CisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8v
ICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
MzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAg
ICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTow
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEx
OiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBv
ZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFsz
MzozMl06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzMxOjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNv
cGllZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rv
ci4gXG4NCisvLy8gICAgICAwMTogQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGll
ZCB0byBiaXRzIFs2MzozMl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCisvLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0
byBiaXRzIFs2MzozMl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4N
CisvLy8gICAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8g
Yml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQor
Ly8vICAgIEJpdHMgWzY1OjY0XTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJu
ZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2Ug
YXJlIGNvcGllZCB0byBiaXRzIFs5NTo2NF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbOTc6OTZdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRz
IFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUN
CisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2
MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQor
Ly8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBbOTU6
NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KKy8v
LyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5
Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQorLy8v
ICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbMTI5OjEyOF06IFxu
DQorLy8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0
byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBc
bg0KKy8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4g
XG4NCisvLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVk
IHRvIGJpdHMgWzE1OToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGll
ZCB0byBiaXRzIFsxNTk6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9y
LiBcbg0KKy8vLyAgICBCaXRzIFsxNjE6MTYwXTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMTU5
OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxNjBdIG9mIHRoZQ0K
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzE5
MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUN
CisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFsy
MjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTkxOjE2MF0gb2YgdGhl
DQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBb
MjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxNjBdIG9mIHRo
ZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdHMgWzE5Mzox
OTJdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBj
b3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4gXG4NCisvLy8gICAgICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzIyMzoxOTJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsyMjM6MTkyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVk
IHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbMjI1OjIyNF06IFxuDQorLy8vICAgICAgMDA6IEJp
dHMgWzE1OToxMjhdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MjI0XSBv
ZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBC
aXRzIFsxOTE6MTYwXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0g
b2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDog
Qml0cyBbMjIzOjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRd
IG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6
IEJpdHMgWzI1NToyMjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MjI0
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZf
cGVybXV0ZXZhcl9wcyhfX20yNTYgX19hLCBfX20yNTZpIF9fYykNCit7DQorICByZXR1cm4gKF9f
bTI1NilfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycHMyNTYoKF9fdjhzZilfX2EsIChfX3Y4c2kp
X19jKTsNCit9DQorDQorLy8vIENvcGllcyB0aGUgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGFzIHNwZWNpZmllZA0KKy8vLyAgICBieSB0aGUgaW1tZWRpYXRlIGlu
dGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhkIF9tbV9wZXJtdXRlX3BkKF9fbTEyOGQgQSwgY29u
c3QgaW50IEMpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisv
Ly8gXHBhcmFtIEMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCBzcGVjaWZ5
aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQuIFxuDQorLy8vICAg
IEJpdCBbMF06IFxuDQorLy8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSByZXR1cm5lZA0KKy8vLyAgICAgICAgIHZlY3Rv
ci4gXG4NCisvLy8gICAgICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGll
ZCB0byBiaXRzIFs2MzowXSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQorLy8vICAgIEJpdCBbMV06IFxuDQorLy8vICAgICAgMDogQml0cyBbNjM6MF0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0
dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNvdXJj
ZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0dXJu
ZWQgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX3Blcm11dGVfcGQo
QSwgQykgXA0KKyAgKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdnBlcm1pbHBkKChfX3YyZGYpKF9f
bTEyOGQpKEEpLCAoaW50KShDKSkNCisNCisvLy8gQ29waWVzIHRoZSB2YWx1ZXMgaW4gYSAyNTYt
Yml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gYXMgc3BlY2lmaWVkIGJ5DQorLy8vICAgIHRoZSBp
bW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NmQgX21tMjU2X3Blcm11dGVfcGQo
X19tMjU2ZCBBLCBjb25zdCBpbnQgQyk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdLg0KKy8vLyBccGFyYW0gQw0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBv
cGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQorLy8vICAgIGNvcGll
ZC4gXG4NCisvLy8gICAgQml0IFswXTogXG4NCisvLy8gICAgICAwOiBCaXRzIFs2MzowXSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybmVkDQorLy8v
ICAgICAgICAgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDE6IEJpdHMgWzEyNzo2NF0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0IFsxXTogXG4NCisvLy8gICAgICAwOiBCaXRzIFs2
MzowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUNCisv
Ly8gICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMTI3OjY0
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUNCisvLy8g
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgIEJpdCBbMl06IFxuDQorLy8vICAg
ICAgMDogQml0cyBbMTkxOjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5
MToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAg
ICAxOiBCaXRzIFsyNTU6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTkx
OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBC
aXQgWzNdOiBcbg0KKy8vLyAgICAgIDA6IEJpdHMgWzE5MToxMjhdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFsyNTU6MTkyXSBvZiB0aGUNCisvLy8gICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMTogQml0cyBbMjU1OjE5Ml0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzI1NToxOTJdIG9mIHRoZQ0KKy8vLyAgICAgICAgIHJldHVybmVkIHZl
Y3Rvci4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1Nl9wZXJtdXRlX3BkKEEs
IEMpIFwNCisgIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZwZXJtaWxwZDI1NigoX192NGRmKShf
X20yNTZkKShBKSwgKGludCkoQykpDQorDQorLy8vIENvcGllcyB0aGUgdmFsdWVzIGluIGEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gYXMgc3BlY2lmaWVkIGJ5DQorLy8vICAgIHRoZSBp
bW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fcGVybXV0ZV9wcyhfX20x
MjggQSwgY29uc3QgaW50IEMpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KKy8vLyBccGFyYW0gQw0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5k
IHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQorLy8vICAgIGNvcGllZC4gXG4N
CisvLy8gICAgQml0cyBbMTowXTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVy
bmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2Ug
YXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQg
dmVjdG9yLiBcbg0KKy8vLyAgICAgIDExOiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJl
IGNvcGllZCB0byBiaXRzIFszMTowXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTow
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAg
ICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBv
ZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0
aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0KKy8vLyAgICAgIDAw
OiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9m
IHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJp
dHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRo
ZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMg
Wzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0K
Ky8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEy
Nzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisv
Ly8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFs3OjZdOiBcbg0K
Ky8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0
cyBbMTI3Ojk2XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8v
LyAgICAgIDAxOiBCaXRzIFs2MzozMl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzEyNzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8g
ICAgICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
Mjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAg
ICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEy
Nzo5Nl0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQg
dmFsdWVzLg0KKyNkZWZpbmUgX21tX3Blcm11dGVfcHMoQSwgQykgXA0KKyAgKF9fbTEyOClfX2J1
aWx0aW5faWEzMl92cGVybWlscHMoKF9fdjRzZikoX19tMTI4KShBKSwgKGludCkoQykpDQorDQor
Ly8vIENvcGllcyB0aGUgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0g
YXMgc3BlY2lmaWVkIGJ5DQorLy8vICAgIHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQor
Ly8vIF9fbTI1NiBfbW0yNTZfcGVybXV0ZV9wcyhfX20yNTYgQSwgY29uc3QgaW50IEMpOw0KKy8v
LyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gQQ0KKy8v
LyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gQw0KKy8v
LyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1
ZXMgYXJlIHRvIGJlDQorLy8vICAgIGNvcGllZC4gXG4NCisvLy8gICAgQml0cyBbMTowXTogXG4N
CisvLy8gICAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzMxOjBdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8v
ICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
MzE6MF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAg
ICAxMDogQml0cyBbOTU6NjRdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTow
XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEx
OiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFszMTowXSBv
ZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFsz
OjJdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291cmNlIGFyZSBjb3Bp
ZWQgdG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3Iu
IFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQg
dG8gYml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxu
DQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8g
Yml0cyBbNjM6MzJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQor
Ly8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJp
dHMgWzYzOjMyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8v
LyAgICBCaXRzIFs1OjRdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTowXSBvZiB0aGUgc291
cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1
cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgc291cmNl
IGFyZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5l
ZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTA6IEJpdHMgWzk1OjY0XSBvZiB0aGUgc291cmNlIGFy
ZSBjb3BpZWQgdG8gYml0cyBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2
ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUg
Y29waWVkIHRvIGJpdHMgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVj
dG9yLiBcbg0KKy8vLyAgICBCaXRzIFs3OjZdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFszMTow
XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUNCisvLy8g
ICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFs2MzozMl0g
b2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQorLy8vICAg
ICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBbOTU6NjRdIG9m
IHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZQ0KKy8vLyAgICAg
ICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2Yg
dGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlDQorLy8vICAgICAg
ICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgQml0cyBbMTowXTogXG4NCisvLy8gICAg
ICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE1
OToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAg
ICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsx
NTk6MTI4XSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAg
ICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
MTU5OjEyOF0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8g
ICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMg
WzE1OToxMjhdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8v
ICAgIEJpdHMgWzM6Ml06IFxuDQorLy8vICAgICAgMDA6IEJpdHMgWzE1OToxMjhdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCisvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDAxOiBCaXRzIFsxOTE6MTYwXSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMTkxOjE2MF0gb2YgdGhlDQorLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMDogQml0cyBbMjIzOjE5Ml0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzE5MToxNjBdIG9mIHRoZQ0KKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzI1NToyMjRdIG9mIHRo
ZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsxOTE6MTYwXSBvZiB0aGUNCisvLy8gICAgICAg
ICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0KKy8vLyAgICAg
IDAwOiBCaXRzIFsxNTk6MTI4XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjIz
OjE5Ml0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAg
ICAwMTogQml0cyBbMTkxOjE2MF0gb2YgdGhlIHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzIy
MzoxOTJdIG9mIHRoZQ0KKy8vLyAgICAgICAgICByZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAg
ICAgMTA6IEJpdHMgWzIyMzoxOTJdIG9mIHRoZSBzb3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsy
MjM6MTkyXSBvZiB0aGUNCisvLy8gICAgICAgICAgcmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAg
ICAgIDExOiBCaXRzIFsyNTU6MjI0XSBvZiB0aGUgc291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBb
MjIzOjE5Ml0gb2YgdGhlDQorLy8vICAgICAgICAgIHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8g
ICAgQml0cyBbNzo2XTogXG4NCisvLy8gICAgICAwMDogQml0cyBbMTU5OjEyOF0gb2YgdGhlIHNv
dXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KKy8vLyAgICAgICAgICBy
ZXR1cm5lZCB2ZWN0b3IuIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzE5MToxNjBdIG9mIHRoZSBz
b3VyY2UgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MjI0XSBvZiB0aGUNCisvLy8gICAgICAgICAg
cmV0dXJuZWQgdmVjdG9yLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFsyMjM6MTkyXSBvZiB0aGUg
c291cmNlIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjIyNF0gb2YgdGhlDQorLy8vICAgICAgICAg
IHJldHVybmVkIHZlY3Rvci4gXG4NCisvLy8gICAgICAxMTogQml0cyBbMjU1OjIyNF0gb2YgdGhl
IHNvdXJjZSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToyMjRdIG9mIHRoZQ0KKy8vLyAgICAgICAg
ICByZXR1cm5lZCB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1Nl9w
ZXJtdXRlX3BzKEEsIEMpIFwNCisgIChfX20yNTYpX19idWlsdGluX2lhMzJfdnBlcm1pbHBzMjU2
KChfX3Y4c2YpKF9fbTI1NikoQSksIChpbnQpKEMpKQ0KKw0KKy8vLyBQZXJtdXRlcyAxMjgtYml0
IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs0
IHggZG91YmxlXSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5k
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2Rl
DQorLy8vIF9fbTI1NmQgX21tMjU2X3Blcm11dGUyZjEyOF9wZChfX20yNTZkIFYxLCBfX20yNTZk
IFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk0yRjEyOCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gVjENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0uDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVy
YW5kIHNwZWNpZnlpbmcgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlDQorLy8vICAgIHBlcm11dGVk
LiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBcbg0KKy8vLyAgICAgIDAwOiBCaXRzIFsxMjc6MF0g
b2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8g
ICAgICAgICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgICAgMDE6IEJpdHMgWzI1NToxMjhdIG9m
IG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQorLy8vICAg
ICAgICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAgIDEwOiBCaXRzIFsxMjc6MF0gb2Ygb3Bl
cmFuZCBcYSBWMiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgICAg
ICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgICAgMTE6IEJpdHMgWzI1NToxMjhdIG9mIG9wZXJh
bmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlDQorLy8vICAgICAgICAg
IGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0KKy8vLyAgICAgIDAwOiBC
aXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhd
IG9mIHRoZQ0KKy8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgICAwMTogQml0
cyBbMjU1OjEyOF0gb2Ygb3BlcmFuZCBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzI1NToxMjhd
IG9mIHRoZQ0KKy8vLyAgICAgICAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgICAxMDogQml0
cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBv
ZiB0aGUNCisvLy8gICAgICAgICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgICAgMTE6IEJpdHMg
WzI1NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBv
ZiB0aGUNCisvLy8gICAgICAgICAgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQor
I2RlZmluZSBfbW0yNTZfcGVybXV0ZTJmMTI4X3BkKFYxLCBWMiwgTSkgXA0KKyAgKF9fbTI1NmQp
X19idWlsdGluX2lhMzJfdnBlcm0yZjEyOF9wZDI1NigoX192NGRmKShfX20yNTZkKShWMSksIFwN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRkZikoX19t
MjU2ZCkoVjIpLCAoaW50KShNKSkNCisNCisvLy8gUGVybXV0ZXMgMTI4LWJpdCBkYXRhIHZhbHVl
cyBzdG9yZWQgaW4gdHdvIDI1Ni1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbOCB4IGZsb2F0XSwg
YXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1
NiBfbW0yNTZfcGVybXV0ZTJmMTI4X3BzKF9fbTI1NiBWMSwgX19tMjU2IFYyLCBjb25zdCBpbnQg
TSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBFUk0yRjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gVjENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHBh
cmFtIFYyDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxw
YXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgc3BlY2lmeWluZyBo
b3cgdGhlIHZhbHVlcyBhcmUgdG8gYmUNCisvLy8gICAgcGVybXV0ZWQuIFxuDQorLy8vICAgIEJp
dHMgWzE6MF06IFxuDQorLy8vICAgIDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBh
cmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxu
DQorLy8vICAgIDAxOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQg
dG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAg
MTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3
OjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMTE6IEJpdHMgWzI1
NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhl
DQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0KKy8vLyAg
ICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsy
NTU6MTI4XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDAxOiBCaXRz
IFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0g
b2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAxMDogQml0cyBbMTI3OjBd
IG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisv
Ly8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVy
YW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIGRl
c3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorI2RlZmluZSBfbW0yNTZfcGVybXV0ZTJm
MTI4X3BzKFYxLCBWMiwgTSkgXA0KKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl92cGVybTJmMTI4
X3BzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fdjhzZikoX19tMjU2KShWMiksIChpbnQpKE0pKQ0KKw0KKy8v
LyBQZXJtdXRlcyAxMjgtYml0IGRhdGEgdmFsdWVzIHN0b3JlZCBpbiB0d28gMjU2LWJpdCBpbnRl
Z2VyIHZlY3RvcnMsDQorLy8vICAgIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIGludGVn
ZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBcY29kZQ0KKy8vLyBfX20yNTZpIF9tbTI1Nl9wZXJtdXRlMmYxMjhfc2kyNTYoX19tMjU2
aSBWMSwgX19tMjU2aSBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNMkYxMjggPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEgMjU2LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIFYyDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3Rvci4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFu
ZCBzcGVjaWZ5aW5nIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuDQorLy8vICAgIEJp
dHMgWzE6MF06IFxuDQorLy8vICAgIDAwOiBCaXRzIFsxMjc6MF0gb2Ygb3BlcmFuZCBcYSBWMSBh
cmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxu
DQorLy8vICAgIDAxOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQg
dG8gYml0cyBbMTI3OjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAg
MTA6IEJpdHMgWzEyNzowXSBvZiBvcGVyYW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3
OjBdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMTE6IEJpdHMgWzI1
NToxMjhdIG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhl
DQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBcbg0KKy8vLyAg
ICAwMDogQml0cyBbMTI3OjBdIG9mIG9wZXJhbmQgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsy
NTU6MTI4XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDAxOiBCaXRz
IFsyNTU6MTI4XSBvZiBvcGVyYW5kIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0g
b2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAxMDogQml0cyBbMTI3OjBd
IG9mIG9wZXJhbmQgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisv
Ly8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDExOiBCaXRzIFsyNTU6MTI4XSBvZiBvcGVy
YW5kIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIGRl
c3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgY29waWVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1Nl9wZXJtdXRlMmYxMjhfc2ky
NTYoVjEsIFYyLCBNKSBcDQorICAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92cGVybTJmMTI4X3Np
MjU2KChfX3Y4c2kpKF9fbTI1NmkpKFYxKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoX192OHNpKShfX20yNTZpKShWMiksIChpbnQpKE0pKQ0KKw0KKy8q
IFZlY3RvciBCbGVuZCAqLw0KKy8vLyBNZXJnZXMgNjQtYml0IGRvdWJsZS1wcmVjaXNpb24gZGF0
YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCisvLy8gICAgdHdvIDI1Ni1iaXQgdmVj
dG9ycyBvZiBbNCB4IGRvdWJsZV0sIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlDQorLy8v
ICAgIGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20yNTZkIF9tbTI1Nl9ibGVuZF9wZChfX20yNTZk
IFYxLCBfX20yNTZkIFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gVjINCisvLy8gICAgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBp
bnRlZ2VyIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFszOjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0K
Ky8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNr
IGJpdCBjb3JyZXNwb25kcyB0byB0aGUNCisvLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUu
IFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyA2NC1iaXQNCisvLy8gICAg
ZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBp
biB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29y
cmVzcG9uZGluZyA2NC1iaXQgZWxlbWVudCBpbg0KKy8vLyAgICBvcGVyYW5kIFxhIFYyIGlzIGNv
cGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1
cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGll
ZCB2YWx1ZXMuDQorI2RlZmluZSBfbW0yNTZfYmxlbmRfcGQoVjEsIFYyLCBNKSBcDQorICAoX19t
MjU2ZClfX2J1aWx0aW5faWEzMl9ibGVuZHBkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYxKSwgXA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShW
MiksIChpbnQpKE0pKQ0KKw0KKy8vLyBNZXJnZXMgMzItYml0IHNpbmdsZS1wcmVjaXNpb24gZGF0
YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCisvLy8gICAgdHdvIDI1Ni1iaXQgdmVj
dG9ycyBvZiBbOCB4IGZsb2F0XSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUNCisvLy8g
ICAgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NiBfbW0yNTZfYmxlbmRfcHMoX19tMjU2IFYx
LCBfX20yNTYgVjIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQUyA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVjENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIFYyDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2Vy
IG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFs3OjBdIHNwZWNpZnlpbmcgaG93IHRoZQ0KKy8vLyAg
ICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBj
b3JyZXNwb25kcyB0byB0aGUNCisvLy8gICAgaW5kZXggb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4g
YSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQNCisvLy8gICAgZWxlbWVu
dCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUN
CisvLy8gICAgZGVzdGluYXRpb24uIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9u
ZGluZyAzMi1iaXQgZWxlbWVudCBpbg0KKy8vLyAgICBvcGVyYW5kIFxhIFYyIGlzIGNvcGllZCB0
byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIHZhbHVl
cy4NCisjZGVmaW5lIF9tbTI1Nl9ibGVuZF9wcyhWMSwgVjIsIE0pIFwNCisgIChfX20yNTYpX19i
dWlsdGluX2lhMzJfYmxlbmRwczI1NigoX192OHNmKShfX20yNTYpKFYxKSwgXA0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4c2YpKF9fbTI1NikoVjIpLCAoaW50KShN
KSkNCisNCisvLy8gTWVyZ2VzIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIGRhdGEgdmFsdWVzIHN0
b3JlZCBpbiBlaXRoZXIgb2YgdGhlDQorLy8vICAgIHR3byAyNTYtYml0IHZlY3RvcnMgb2YgWzQg
eCBkb3VibGVdLCBhcyBzcGVjaWZpZWQgYnkgdGhlIDI1Ni1iaXQgdmVjdG9yDQorLy8vICAgIG9w
ZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRWUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYw0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIDI1NSwgMTkxLCAxMjcsIGFuZCA2MyBzcGVj
aWZ5aW5nDQorLy8vICAgIGhvdyB0aGUgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQuIFRoZSBwb3Np
dGlvbiBvZiB0aGUgbWFzayBiaXQgY29ycmVzcG9uZHMNCisvLy8gICAgdG8gdGhlIG1vc3Qgc2ln
bmlmaWNhbnQgYml0IG9mIGEgY29waWVkIHZhbHVlLiBXaGVuIGEgbWFzayBiaXQgaXMgMCwgdGhl
DQorLy8vICAgIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBfX2Eg
aXMgY29waWVkIHRvIHRoZSBzYW1lDQorLy8vICAgIHBvc2l0aW9uIGluIHRoZSBkZXN0aW5hdGlv
bi4gV2hlbiBhIG1hc2sgYml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nDQorLy8vICAgIDY0LWJp
dCBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19iIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlv
biBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2
ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMuDQorc3Rh
dGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2JsZW5kdl9w
ZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IsIF9fbTI1NmQgX19jKQ0KK3sNCisgIHJldHVybiAo
X19tMjU2ZClfX2J1aWx0aW5faWEzMl9ibGVuZHZwZDI1NigNCisgICAgKF9fdjRkZilfX2EsIChf
X3Y0ZGYpX19iLCAoX192NGRmKV9fYyk7DQorfQ0KKw0KKy8vLyBNZXJnZXMgMzItYml0IHNpbmds
ZS1wcmVjaXNpb24gZGF0YSB2YWx1ZXMgc3RvcmVkIGluIGVpdGhlciBvZiB0aGUNCisvLy8gICAg
dHdvIDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSAy
NTYtYml0IHZlY3Rvcg0KKy8vLyAgICBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVkJMRU5EVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccGFyYW0g
X19jDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgMjU1
LCAyMjMsIDE5MSwgMTU5LCAxMjcsIDk1LCA2MywNCisvLy8gICAgYW5kIDMxIHNwZWNpZnlpbmcg
aG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZQ0KKy8v
LyAgICBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2Yg
YSBjb3BpZWQgdmFsdWUuIFdoZW4NCisvLy8gICAgYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVz
cG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fYSBpcw0KKy8vLyAgICBjb3Bp
ZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIGRlc3RpbmF0aW9uLiBXaGVuIGEgbWFzayBi
aXQgaXMgMSwgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgMzItYml0IGVsZW1lbnQgaW4gb3Bl
cmFuZCBcYSBfX2IgaXMgY29waWVkIHRvIHRoZSBzYW1lDQorLy8vICAgIHBvc2l0aW9uIGluIHRo
ZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2JsZW5kdl9wcyhfX20yNTYgX19hLCBfX20y
NTYgX19iLCBfX20yNTYgX19jKQ0KK3sNCisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMy
X2JsZW5kdnBzMjU2KA0KKyAgICAoX192OHNmKV9fYSwgKF9fdjhzZilfX2IsIChfX3Y4c2YpX19j
KTsNCit9DQorDQorLyogVmVjdG9yIERvdCBQcm9kdWN0ICovDQorLy8vIENvbXB1dGVzIHR3byBk
b3QgcHJvZHVjdHMgaW4gcGFyYWxsZWwsIHVzaW5nIHRoZSBsb3dlciBhbmQgdXBwZXINCisvLy8g
ICAgaGFsdmVzIG9mIHR3byBbOCB4IGZsb2F0XSB2ZWN0b3JzIGFzIGlucHV0IHRvIHRoZSB0d28g
Y29tcHV0YXRpb25zLCBhbmQNCisvLy8gICAgcmV0dXJuaW5nIHRoZSB0d28gZG90IHByb2R1Y3Rz
IGluIHRoZSBsb3dlciBhbmQgdXBwZXIgaGFsdmVzIG9mIHRoZQ0KKy8vLyAgICBbOCB4IGZsb2F0
XSByZXN1bHQuDQorLy8vDQorLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIGNv
bnRyb2xzIHdoaWNoIGlucHV0IGVsZW1lbnRzIHdpbGwNCisvLy8gICAgY29udHJpYnV0ZSB0byB0
aGUgZG90IHByb2R1Y3QsIGFuZCB3aGVyZSB0aGUgZmluYWwgcmVzdWx0cyBhcmUgcmV0dXJuZWQu
DQorLy8vICAgIEluIGdlbmVyYWwsIGZvciBlYWNoIGRvdCBwcm9kdWN0LCB0aGUgZm91ciBjb3Jy
ZXNwb25kaW5nIGVsZW1lbnRzIG9mIHRoZQ0KKy8vLyAgICBpbnB1dCB2ZWN0b3JzIGFyZSBtdWx0
aXBsaWVkOyB0aGUgZmlyc3QgdHdvIGFuZCBzZWNvbmQgdHdvIHByb2R1Y3RzIGFyZQ0KKy8vLyAg
ICBzdW1tZWQsIHRoZW4gdGhlIHR3byBzdW1zIGFyZSBhZGRlZCB0byBmb3JtIHRoZSBmaW5hbCBy
ZXN1bHQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
XGNvZGUNCisvLy8gX19tMjU2IF9tbTI1Nl9kcF9wcyhfX20yNTYgVjEsIF9fbTI1NiBWMiwgY29u
c3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZEUFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBWMQ0KKy8vLyAgICBBIHZlY3RvciBvZiBbOCB4IGZsb2F0XSB2YWx1ZXMsIHRyZWF0ZWQg
YXMgdHdvIFs0IHggZmxvYXRdIHZlY3RvcnMuDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBBIHZl
Y3RvciBvZiBbOCB4IGZsb2F0XSB2YWx1ZXMsIHRyZWF0ZWQgYXMgdHdvIFs0IHggZmxvYXRdIHZl
Y3RvcnMuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIGFyZ3Vt
ZW50LiBCaXRzIFs3OjRdIGRldGVybWluZSB3aGljaCBlbGVtZW50cyBvZg0KKy8vLyAgICB0aGUg
aW5wdXQgdmVjdG9ycyBhcmUgdXNlZCwgd2l0aCBiaXQgWzRdIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGxvd2VzdA0KKy8vLyAgICBlbGVtZW50IGFuZCBiaXQgWzddIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGhpZ2hlc3QgZWxlbWVudCBvZiBlYWNoIFs0IHgNCisvLy8gICAgZmxvYXRdIHN1YnZlY3Rvci4g
SWYgYSBiaXQgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBmcm9tIHRoZQ0KKy8v
LyAgICB0d28gaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCBhcyBhbiBpbnB1dCBmb3IgZG90IHByb2R1
Y3Q7IG90aGVyd2lzZSB0aGF0DQorLy8vICAgIGlucHV0IGlzIHRyZWF0ZWQgYXMgemVyby4gQml0
cyBbMzowXSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdCB3
aWxsIHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBmaW5hbCBkb3QgcHJvZHVjdCwgd2l0aCBiaXQgWzBd
DQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdCBlbGVtZW50IGFuZCBiaXQgWzNd
IGNvcnJlc3BvbmRpbmcgdG8gdGhlDQorLy8vICAgIGhpZ2hlc3QgZWxlbWVudCBvZiBlYWNoIFs0
IHggZmxvYXRdIHN1YnZlY3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgZG90DQorLy8vICAgIHBy
b2R1Y3QgaXMgcmV0dXJuZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudDsgb3RoZXJ3aXNl
IHRoYXQgZWxlbWVudA0KKy8vLyAgICBpcyBzZXQgdG8gemVyby4gVGhlIGJpdG1hc2sgaXMgYXBw
bGllZCBpbiB0aGUgc2FtZSB3YXkgdG8gZWFjaCBvZiB0aGUNCisvLy8gICAgdHdvIHBhcmFsbGVs
IGRvdCBwcm9kdWN0IGNvbXB1dGF0aW9ucy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB0d28gZG90IHByb2R1Y3RzLg0KKyNkZWZp
bmUgX21tMjU2X2RwX3BzKFYxLCBWMiwgTSkgXA0KKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl9k
cHBzMjU2KChfX3Y4c2YpKF9fbTI1NikoVjEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fdjhzZikoX19tMjU2KShWMiksIChNKSkNCisNCisvKiBWZWN0b3Igc2h1ZmZs
ZSAqLw0KKy8vLyBTZWxlY3RzIDggZmxvYXQgdmFsdWVzIGZyb20gdGhlIDI1Ni1iaXQgb3BlcmFu
ZHMgb2YgWzggeCBmbG9hdF0sIGFzDQorLy8vICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRl
IHZhbHVlIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIFRoZSBmb3VyIHNlbGVjdGVkIGVsZW1lbnRz
IGluIGVhY2ggb3BlcmFuZCBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbg0KKy8vLyAgICBh
Y2NvcmRpbmcgdG8gdGhlIGJpdHMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4g
VGhlIHNlbGVjdGVkDQorLy8vICAgIGVsZW1lbnRzIGZyb20gdGhlIGZpcnN0IDI1Ni1iaXQgb3Bl
cmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzYzOjBdIGFuZA0KKy8vLyAgICBiaXRzIFsxOTE6MTI4
XSBvZiB0aGUgZGVzdGluYXRpb24sIGFuZCB0aGUgc2VsZWN0ZWQgZWxlbWVudHMgZnJvbSB0aGUN
CisvLy8gICAgc2Vjb25kIDI1Ni1iaXQgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzo2
NF0gYW5kIGJpdHMgWzI1NToxOTJdIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4gRm9yIGV4
YW1wbGUsIGlmIGJpdHMgWzc6MF0gb2YgdGhlIGltbWVkaWF0ZSBvcGVyYW5kDQorLy8vICAgIGNv
bnRhaW4gYSB2YWx1ZSBvZiAweEZGLCB0aGUgMjU2LWJpdCBkZXN0aW5hdGlvbiB2ZWN0b3Igd291
bGQgY29udGFpbiB0aGUNCisvLy8gICAgZm9sbG93aW5nIHZhbHVlczogYls3XSwgYls3XSwgYVs3
XSwgYVs3XSwgYlszXSwgYlszXSwgYVszXSwgYVszXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20yNTYgX21tMjU2X3NodWZm
bGVfcHMoX19tMjU2IGEsIF9fbTI1NiBiLCBjb25zdCBpbnQgbWFzayk7DQorLy8vIFxlbmRjb2Rl
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNIVUZQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGUgZm91ciBzZWxlY3RlZCBlbGVtZW50cyBpbiB0
aGlzDQorLy8vICAgIG9wZXJhbmQgYXJlIGNvcGllZCB0byBiaXRzIFs2MzowXSBhbmQgYml0cyBb
MTkxOjEyOF0gaW4gdGhlIGRlc3RpbmF0aW9uLA0KKy8vLyAgICBhY2NvcmRpbmcgdG8gdGhlIGJp
dHMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4NCisvLy8gXHBhcmFtIGINCisv
Ly8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlIGZvdXIgc2VsZWN0ZWQg
ZWxlbWVudHMgaW4gdGhpcw0KKy8vLyAgICBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3
OjY0XSBhbmQgYml0cyBbMjU1OjE5Ml0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLCBhY2Nv
cmRpbmcgdG8gdGhlIGJpdHMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4NCisv
Ly8gXHBhcmFtIG1hc2sNCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgYW4g
OC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0bw0KKy8vLyAgICBjb3B5IGZy
b20gXGEgYSBhbmQgXGEgYiBcbi4NCisvLy8gICAgQml0cyBbMzowXSBzcGVjaWZ5IHRoZSB2YWx1
ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBhLiBcbg0KKy8vLyAgICBCaXRzIFs3OjRdIHNwZWNp
ZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBvcGVyYW5kIFxhIGIuIFxuDQorLy8vICAgIFRoZSBk
ZXN0aW5hdGlvbnMgd2l0aGluIHRoZSAyNTYtYml0IGRlc3RpbmF0aW9uIGFyZSBhc3NpZ25lZCB2
YWx1ZXMgYXMNCisvLy8gICAgZm9sbG93cywgYWNjb3JkaW5nIHRvIHRoZSBiaXQgdmFsdWUgYXNz
aWdubWVudHMgZGVzY3JpYmVkIGJlbG93OiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdIGFyZSB1c2Vk
IHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMzE6MF0gYW5kIFsxNTk6MTI4XSBpbiB0aGUNCisv
Ly8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQgdG8gYXNz
aWduIHZhbHVlcyB0byBiaXRzIFs2MzozMl0gYW5kIFsxOTE6MTYwXSBpbiB0aGUNCisvLy8gICAg
ZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZh
bHVlcyB0byBiaXRzIFs5NTo2NF0gYW5kIFsyMjM6MTkyXSBpbiB0aGUNCisvLy8gICAgZGVzdGlu
YXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0
byBiaXRzIFsxMjc6OTZdIGFuZCBbMjU1OjIyNF0gaW4NCisvLy8gICAgdGhlIGRlc3RpbmF0aW9u
LiBcbg0KKy8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuDQorLy8vICAgIDAwOiBCaXRz
IFszMTowXSBhbmQgWzE1OToxMjhdIGFyZSBjb3BpZWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3BlcmFu
ZC4gXG4NCisvLy8gICAgMDE6IEJpdHMgWzYzOjMyXSBhbmQgWzE5MToxNjBdIGFyZSBjb3BpZWQg
ZnJvbSB0aGUgc2VsZWN0ZWQgb3BlcmFuZC4gXG4NCisvLy8gICAgMTA6IEJpdHMgWzk1OjY0XSBh
bmQgWzIyMzoxOTJdIGFyZSBjb3BpZWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3BlcmFuZC4gXG4NCisv
Ly8gICAgMTE6IEJpdHMgWzEyNzo5Nl0gYW5kIFsyNTU6MjI0XSBhcmUgY29waWVkIGZyb20gdGhl
IHNlbGVjdGVkIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzgg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tMjU2
X3NodWZmbGVfcHMoYSwgYiwgbWFzaykgXA0KKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl9zaHVm
cHMyNTYoKF9fdjhzZikoX19tMjU2KShhKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fdjhzZikoX19tMjU2KShiKSwgKGludCkobWFzaykpDQorDQorLy8vIFNlbGVj
dHMgZm91ciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBmcm9tIHRoZSAyNTYtYml0IG9wZXJhbmRz
IG9mDQorLy8vICAgIFs0IHggZG91YmxlXSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGUg
dmFsdWUgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgVGhlIHNlbGVjdGVkIGVsZW1lbnRzIGZyb20g
dGhlIGZpcnN0IDI1Ni1iaXQgb3BlcmFuZCBhcmUgY29waWVkIHRvIGJpdHMNCisvLy8gICAgWzYz
OjBdIGFuZCBiaXRzIFsxOTE6MTI4XSBpbiB0aGUgZGVzdGluYXRpb24sIGFuZCB0aGUgc2VsZWN0
ZWQgZWxlbWVudHMNCisvLy8gICAgZnJvbSB0aGUgc2Vjb25kIDI1Ni1iaXQgb3BlcmFuZCBhcmUg
Y29waWVkIHRvIGJpdHMgWzEyNzo2NF0gYW5kIGJpdHMNCisvLy8gICAgWzI1NToxOTJdIGluIHRo
ZSBkZXN0aW5hdGlvbi4gRm9yIGV4YW1wbGUsIGlmIGJpdHMgWzM6MF0gb2YgdGhlIGltbWVkaWF0
ZQ0KKy8vLyAgICBvcGVyYW5kIGNvbnRhaW4gYSB2YWx1ZSBvZiAweEYsIHRoZSAyNTYtYml0IGRl
c3RpbmF0aW9uIHZlY3RvciB3b3VsZA0KKy8vLyAgICBjb250YWluIHRoZSBmb2xsb3dpbmcgdmFs
dWVzOiBiWzNdLCBhWzNdLCBiWzFdLCBhWzFdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NmQgX21tMjU2X3NodWZmbGVf
cGQoX19tMjU2ZCBhLCBfX20yNTZkIGIsIGNvbnN0IGludCBtYXNrKTsNCisvLy8gXGVuZGNvZGUN
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU0hVRlBE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gYg0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIG1hc2sNCisvLy8gICAgQW4g
aW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgOC1iaXQgdmFsdWVzIHNwZWNpZnlpbmcgd2hpY2gg
ZWxlbWVudHMgdG8NCisvLy8gICAgY29weSBmcm9tIFxhIGEgYW5kIFxhIGI6IFxuDQorLy8vICAg
IEJpdCBbMF09MDogQml0cyBbNjM6MF0gYXJlIGNvcGllZCBmcm9tIFxhIGEgdG8gYml0cyBbNjM6
MF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXQgWzBdPTE6IEJp
dHMgWzEyNzo2NF0gYXJlIGNvcGllZCBmcm9tIFxhIGEgdG8gYml0cyBbNjM6MF0gb2YgdGhlDQor
Ly8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXQgWzFdPTA6IEJpdHMgWzYzOjBdIGFy
ZSBjb3BpZWQgZnJvbSBcYSBiIHRvIGJpdHMgWzEyNzo2NF0gb2YgdGhlDQorLy8vICAgIGRlc3Rp
bmF0aW9uLiBcbg0KKy8vLyAgICBCaXQgWzFdPTE6IEJpdHMgWzEyNzo2NF0gYXJlIGNvcGllZCBm
cm9tIFxhIGIgdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxu
DQorLy8vICAgIEJpdCBbMl09MDogQml0cyBbMTkxOjEyOF0gYXJlIGNvcGllZCBmcm9tIFxhIGEg
dG8gYml0cyBbMTkxOjEyOF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAg
ICBCaXQgWzJdPTE6IEJpdHMgWzI1NToxOTJdIGFyZSBjb3BpZWQgZnJvbSBcYSBhIHRvIGJpdHMg
WzE5MToxMjhdIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0IFsz
XT0wOiBCaXRzIFsxOTE6MTI4XSBhcmUgY29waWVkIGZyb20gXGEgYiB0byBiaXRzIFsyNTU6MTky
XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdCBbM109MTogQml0
cyBbMjU1OjE5Ml0gYXJlIGNvcGllZCBmcm9tIFxhIGIgdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhl
DQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQorI2RlZmluZSBf
bW0yNTZfc2h1ZmZsZV9wZChhLCBiLCBtYXNrKSBcDQorICAoX19tMjU2ZClfX2J1aWx0aW5faWEz
Ml9zaHVmcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoYSksIFwNCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoX192NGRmKShfX20yNTZkKShiKSwgKGludCkobWFzaykpDQorDQor
LyogQ29tcGFyZSAqLw0KKyNkZWZpbmUgX0NNUF9FUV9PUSAgICAweDAwIC8qIEVxdWFsIChvcmRl
cmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTFRfT1MgICAgMHgwMSAvKiBM
ZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX0xFX09TICAg
IDB4MDIgLyogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNk
ZWZpbmUgX0NNUF9VTk9SRF9RICAweDAzIC8qIFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgICov
DQorI2RlZmluZSBfQ01QX05FUV9VUSAgIDB4MDQgLyogTm90LWVxdWFsICh1bm9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9OTFRfVVMgICAweDA1IC8qIE5vdC1sZXNz
LXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkxFX1VTICAg
MHgwNiAvKiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgICov
DQorI2RlZmluZSBfQ01QX09SRF9RICAgIDB4MDcgLyogT3JkZXJlZCAobm9uLXNpZ25hbGluZykg
ICAqLw0KKyNkZWZpbmUgX0NNUF9FUV9VUSAgICAweDA4IC8qIEVxdWFsICh1bm9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9OR0VfVVMgICAweDA5IC8qIE5vdC1ncmVh
dGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9D
TVBfTkdUX1VTICAgMHgwYSAvKiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGlu
ZykgICovDQorI2RlZmluZSBfQ01QX0ZBTFNFX09RIDB4MGIgLyogRmFsc2UgKG9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9ORVFfT1EgICAweDBjIC8qIE5vdC1lcXVh
bCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX0dFX09TICAgIDB4
MGQgLyogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNk
ZWZpbmUgX0NNUF9HVF9PUyAgICAweDBlIC8qIEdyZWF0ZXItdGhhbiAob3JkZXJlZCwgc2lnbmFs
aW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfVFJVRV9VUSAgMHgwZiAvKiBUcnVlICh1bm9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9FUV9PUyAgICAweDEwIC8qIEVxdWFs
IChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9MVF9PUSAgICAweDExIC8q
IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX0xF
X09RICAgIDB4MTIgLyogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5n
KSAgKi8NCisjZGVmaW5lIF9DTVBfVU5PUkRfUyAgMHgxMyAvKiBVbm9yZGVyZWQgKHNpZ25hbGlu
ZykgICovDQorI2RlZmluZSBfQ01QX05FUV9VUyAgIDB4MTQgLyogTm90LWVxdWFsICh1bm9yZGVy
ZWQsIHNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX05MVF9VUSAgIDB4MTUgLyogTm90LWxl
c3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkxF
X1VRICAgMHgxNiAvKiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWdu
YWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9PUkRfUyAgICAweDE3IC8qIE9yZGVyZWQgKHNpZ25h
bGluZykgICovDQorI2RlZmluZSBfQ01QX0VRX1VTICAgIDB4MTggLyogRXF1YWwgKHVub3JkZXJl
ZCwgc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfTkdFX1VRICAgMHgxOSAvKiBOb3QtZ3Jl
YXRlci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpICAqLw0KKyNkZWZp
bmUgX0NNUF9OR1RfVVEgICAweDFhIC8qIE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX0ZBTFNFX09TIDB4MWIgLyogRmFsc2UgKG9y
ZGVyZWQsIHNpZ25hbGluZykgICovDQorI2RlZmluZSBfQ01QX05FUV9PUyAgIDB4MWMgLyogTm90
LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpICAqLw0KKyNkZWZpbmUgX0NNUF9HRV9PUSAgICAw
eDFkIC8qIEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgICov
DQorI2RlZmluZSBfQ01QX0dUX09RICAgIDB4MWUgLyogR3JlYXRlci10aGFuIChvcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSAgKi8NCisjZGVmaW5lIF9DTVBfVFJVRV9VUyAgMHgxZiAvKiBUcnVlICh1
bm9yZGVyZWQsIHNpZ25hbGluZykgICovDQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNv
cnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdHdvDQorLy8vICAgIDEyOC1i
aXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVk
IGJ5IHRoZQ0KKy8vLyAgICBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8vLyAg
ICBSZXR1cm5zIGEgWzIgeCBkb3VibGVdIHZlY3RvciBjb25zaXN0aW5nIG9mIHR3byBkb3VibGVz
IGNvcnJlc3BvbmRpbmcgdG8NCisvLy8gICAgdGhlIHR3byBjb21wYXJpc29uIHJlc3VsdHM6IHpl
cm8gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UsIGFuZCBhbGwgMSdzDQorLy8vICAgIGlmIHRo
ZSBjb21wYXJpc29uIGlzIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fY21wX3BkKF9fbTEyOGQgYSwg
X19tMTI4ZCBiLCBjb25zdCBpbnQgYyk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLg0KKy8vLyBccGFyYW0gYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4NCisvLy8gXHBhcmFtIGMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3Bl
cmFuZCwgd2l0aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0KKy8vLyAg
ICBvcGVyYXRpb24gdG8gdXNlOiBcbg0KKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxp
bmcpIFxuDQorLy8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFs
aW5nKSBcbg0KKy8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MDQ6IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDA1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgwNjogTm90LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQor
Ly8vICAgIDB4MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDg6IEVx
dWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDk6IE5vdC1ncmVh
dGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBB
OiBOb3QtZ3JlYXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgw
QjogRmFsc2UgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEM6IE5vdC1l
cXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRDogR3JlYXRlci10
aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEU6IEdyZWF0
ZXItdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBGOiBUcnVlICh1bm9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBz
aWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25h
bGluZykgXG4NCisvLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24t
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgxNDogTm90LWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgxNTogTm90LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAg
ICAweDE2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxODog
RXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRl
ci10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MUE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgxQjogRmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQzogTm90
LWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhh
bi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRTogR3Jl
YXRlci10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFGOiBUcnVl
ICh1bm9yZGVyZWQsIHNpZ25hbGluZykNCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KKyNkZWZp
bmUgX21tX2NtcF9wZChhLCBiLCBjKSBcDQorICAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBw
ZCgoX192MmRmKShfX20xMjhkKShhKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKF9fdjJkZikoX19tMTI4ZCkoYiksIChjKSkNCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0
aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAg
ICBbNCB4IGZsb2F0XSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGltbWVk
aWF0ZSBpbnRlZ2VyDQorLy8vICAgIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIFJldHVybnMgYSBb
NCB4IGZsb2F0XSB2ZWN0b3IgY29uc2lzdGluZyBvZiBmb3VyIGZsb2F0cyBjb3JyZXNwb25kaW5n
IHRvDQorLy8vICAgIHRoZSBmb3VyIGNvbXBhcmlzb24gcmVzdWx0czogemVybyBpZiB0aGUgY29t
cGFyaXNvbiBpcyBmYWxzZSwgYW5kIGFsbCAxJ3MNCisvLy8gICAgaWYgdGhlIGNvbXBhcmlzb24g
aXMgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBcY29kZQ0KKy8vLyBfX20xMjggX21tX2NtcF9wcyhfX20xMjggYSwgX19tMTI4IGIsIGNvbnN0
IGludCBjKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWQ01QUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIGENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBh
cmFtIGINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBh
cmFtIGMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBiaXRzIFs0
OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0KKy8vLyAgICBvcGVyYXRpb24gdG8gdXNl
OiBcbg0KKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAw
eDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDQ6IE5vdC1lcXVh
bCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA1OiBOb3QtbGVzcy10
aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNjogTm90LWxlc3MtdGhh
bi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDc6IE9yZGVy
ZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDg6IEVxdWFsICh1bm9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwg
KHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBBOiBOb3QtZ3JlYXRlci10aGFu
ICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwQjogRmFsc2UgKG9yZGVyZWQs
IG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3JkZXJlZCwgbm9u
LXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEU6IEdyZWF0ZXItdGhhbiAob3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBGOiBUcnVlICh1bm9yZGVyZWQsIG5vbi1zaWduYWxp
bmcpIFxuDQorLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8v
LyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxNDogTm90LWVx
dWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxNTogTm90LWxlc3MtdGhh
biAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE2OiBOb3QtbGVzcy10
aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTc6
IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxODogRXF1YWwgKHVub3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFsICh1
bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUE6IE5vdC1ncmVhdGVyLXRo
YW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQjogRmFsc2UgKG9y
ZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQzogTm90LWVxdWFsIChvcmRlcmVkLCBz
aWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRTogR3JlYXRlci10aGFuIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVyZWQsIHNpZ25h
bGluZykNCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorI2RlZmluZSBfbW1fY21wX3BzKGEsIGIs
IGMpIFwNCisgIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wcHMoKF9fdjRzZikoX19tMTI4KShh
KSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShfX20xMjgpKGIp
LCAoYykpDQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91Ymxl
LXByZWNpc2lvbiB2YWx1ZXMgb2YgdHdvDQorLy8vICAgIDI1Ni1iaXQgdmVjdG9ycyBvZiBbNCB4
IGRvdWJsZV0sIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZQ0KKy8vLyAgICBp
bW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBSZXR1cm5zIGEgWzQgeCBk
b3VibGVdIHZlY3RvciBjb25zaXN0aW5nIG9mIGZvdXIgZG91YmxlcyBjb3JyZXNwb25kaW5nIHRv
DQorLy8vICAgIHRoZSBmb3VyIGNvbXBhcmlzb24gcmVzdWx0czogemVybyBpZiB0aGUgY29tcGFy
aXNvbiBpcyBmYWxzZSwgYW5kIGFsbCAxJ3MNCisvLy8gICAgaWYgdGhlIGNvbXBhcmlzb24gaXMg
dHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBc
Y29kZQ0KKy8vLyBfX20yNTZkIF9tbTI1Nl9jbXBfcGQoX19tMjU2ZCBhLCBfX20yNTZkIGIsIGNv
bnN0IGludCBjKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIGENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8v
IFxwYXJhbSBiDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8v
LyBccGFyYW0gYw0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIGJp
dHMgWzQ6MF0gc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uDQorLy8vICAgIG9wZXJhdGlvbiB0
byB1c2U6IFxuDQorLy8vICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBc
bg0KKy8vLyAgICAweDAxOiBMZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8g
ICAgMHgwMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MDM6IFVub3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNDogTm90
LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDU6IE5vdC1s
ZXNzLXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA2OiBOb3QtbGVz
cy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNzog
T3JkZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1l
cXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEE6IE5vdC1ncmVhdGVy
LXRoYW4gKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBCOiBGYWxzZSAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwg
KG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRTogR3JlYXRlci10aGFuIChvcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNp
Z25hbGluZykgXG4NCisvLy8gICAgMHgxMDogRXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4N
CisvLy8gICAgMHgxMTogTGVzcy10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8v
LyAgICAweDEyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxu
DQorLy8vICAgIDB4MTM6IFVub3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE0OiBO
b3QtZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE1OiBOb3QtbGVz
cy10aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTY6IE5vdC1s
ZXNzLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgxNzogT3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRl
cmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1
YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQTogTm90LWdyZWF0
ZXItdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFCOiBGYWxz
ZSAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFDOiBOb3QtZXF1YWwgKG9yZGVy
ZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChv
cmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFFOiBHcmVhdGVyLXRoYW4gKG9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUY6IFRydWUgKHVub3JkZXJlZCwg
c2lnbmFsaW5nKQ0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorI2RlZmluZSBfbW0yNTZfY21w
X3BkKGEsIGIsIGMpIFwNCisgIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX2NtcHBkMjU2KChfX3Y0
ZGYpKF9fbTI1NmQpKGEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
X192NGRmKShfX20yNTZkKShiKSwgKGMpKQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBj
b3JyZXNwb25kaW5nIHZhbHVlcyBvZiB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs4
IHggZmxvYXRdLCB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRl
IGludGVnZXINCisvLy8gICAgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgUmV0dXJucyBhIFs4IHgg
ZmxvYXRdIHZlY3RvciBjb25zaXN0aW5nIG9mIGVpZ2h0IGZsb2F0cyBjb3JyZXNwb25kaW5nIHRv
DQorLy8vICAgIHRoZSBlaWdodCBjb21wYXJpc29uIHJlc3VsdHM6IHplcm8gaWYgdGhlIGNvbXBh
cmlzb24gaXMgZmFsc2UsIGFuZCBhbGwNCisvLy8gICAgMSdzIGlmIHRoZSBjb21wYXJpc29uIGlz
IHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
XGNvZGUNCisvLy8gX19tMjU2IF9tbTI1Nl9jbXBfcHMoX19tMjU2IGEsIF9fbTI1NiBiLCBjb25z
dCBpbnQgYyk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBhDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxw
YXJhbSBiDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxw
YXJhbSBjDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggYml0cyBb
NDowXSBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24NCisvLy8gICAgb3BlcmF0aW9uIHRvIHVz
ZTogXG4NCisvLy8gICAgMHgwMDogRXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQor
Ly8vICAgIDB4MDE6IExlc3MtdGhhbiAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAw
eDAyOiBMZXNzLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAg
MHgwMzogVW5vcmRlcmVkIChub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA0OiBOb3QtZXF1
YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNTogTm90LWxlc3Mt
dGhhbiAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDY6IE5vdC1sZXNzLXRo
YW4tb3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA3OiBPcmRl
cmVkIChub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA4OiBFcXVhbCAodW5vcmRlcmVkLCBu
b24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA5OiBOb3QtZ3JlYXRlci10aGFuLW9yLWVxdWFs
ICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwQTogTm90LWdyZWF0ZXItdGhh
biAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEI6IEZhbHNlIChvcmRlcmVk
LCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEQ6IEdyZWF0ZXItdGhhbi1vci1lcXVhbCAob3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRjogVHJ1ZSAodW5vcmRlcmVkLCBub24tc2lnbmFs
aW5nKSBcbg0KKy8vLyAgICAweDEwOiBFcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8v
LyAgICAweDExOiBMZXNzLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAg
IDB4MTI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgxMzogVW5vcmRlcmVkIChzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTQ6IE5vdC1l
cXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTU6IE5vdC1sZXNzLXRo
YW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxNjogTm90LWxlc3Mt
dGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE3
OiBPcmRlcmVkIChzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTg6IEVxdWFsICh1bm9yZGVyZWQs
IHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAo
dW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFBOiBOb3QtZ3JlYXRlci10
aGFuICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUI6IEZhbHNlIChv
cmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUM6IE5vdC1lcXVhbCAob3JkZXJlZCwg
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUU6IEdyZWF0ZXItdGhhbiAob3JkZXJl
ZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRjogVHJ1ZSAodW5vcmRlcmVkLCBzaWdu
YWxpbmcpDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KKyNkZWZpbmUgX21tMjU2X2NtcF9wcyhh
LCBiLCBjKSBcDQorICAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX2NtcHBzMjU2KChfX3Y4c2YpKF9f
bTI1NikoYSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZiko
X19tMjU2KShiKSwgKGMpKQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25k
aW5nIHNjYWxhciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZg0KKy8vLyAgICB0d28gMTI4LWJp
dCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgdXNpbmcgdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQg
YnkgdGhlDQorLy8vICAgIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vDQorLy8vICAg
IElmIHRoZSByZXN1bHQgaXMgdHJ1ZSwgYWxsIDY0IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uIHZl
Y3RvciBhcmUgc2V0Ow0KKy8vLyAgICBvdGhlcndpc2UgdGhleSBhcmUgY2xlYXJlZC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBf
X20xMjhkIF9tbV9jbXBfc2QoX19tMTI4ZCBhLCBfX20xMjhkIGIsIGNvbnN0IGludCBjKTsNCisv
Ly8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ01QU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBiDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gYw0KKy8v
LyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kLCB3aXRoIGJpdHMgWzQ6MF0gc3BlY2lm
eWluZyB3aGljaCBjb21wYXJpc29uDQorLy8vICAgIG9wZXJhdGlvbiB0byB1c2U6IFxuDQorLy8v
ICAgIDB4MDA6IEVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDAx
OiBMZXNzLXRoYW4gKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwMjogTGVzcy10
aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDM6IFVub3Jk
ZXJlZCAobm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNDogTm90LWVxdWFsICh1bm9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDU6IE5vdC1sZXNzLXRoYW4gKHVub3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA2OiBOb3QtbGVzcy10aGFuLW9yLWVxdWFs
ICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNzogT3JkZXJlZCAobm9uLXNp
Z25hbGluZykgXG4NCisvLy8gICAgMHgwODogRXF1YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGlu
ZykgXG4NCisvLy8gICAgMHgwOTogTm90LWdyZWF0ZXItdGhhbi1vci1lcXVhbCAodW5vcmRlcmVk
LCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEE6IE5vdC1ncmVhdGVyLXRoYW4gKHVub3JkZXJl
ZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBCOiBGYWxzZSAob3JkZXJlZCwgbm9uLXNpZ25h
bGluZykgXG4NCisvLy8gICAgMHgwQzogTm90LWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5n
KSBcbg0KKy8vLyAgICAweDBEOiBHcmVhdGVyLXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIHNpZ25h
bGluZykgXG4NCisvLy8gICAgMHgwRTogR3JlYXRlci10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MEY6IFRydWUgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisv
Ly8gICAgMHgxMDogRXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxMTog
TGVzcy10aGFuIChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDEyOiBMZXNz
LXRoYW4tb3ItZXF1YWwgKG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTM6
IFVub3JkZXJlZCAoc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE0OiBOb3QtZXF1YWwgKHVub3Jk
ZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE1OiBOb3QtbGVzcy10aGFuICh1bm9yZGVy
ZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTY6IE5vdC1sZXNzLXRoYW4tb3ItZXF1
YWwgKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxNzogT3JkZXJlZCAo
c2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE4OiBFcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MTk6IE5vdC1ncmVhdGVyLXRoYW4tb3ItZXF1YWwgKHVub3JkZXJlZCwg
bm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQTogTm90LWdyZWF0ZXItdGhhbiAodW5vcmRl
cmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFCOiBGYWxzZSAob3JkZXJlZCwgc2ln
bmFsaW5nKSBcbg0KKy8vLyAgICAweDFDOiBOb3QtZXF1YWwgKG9yZGVyZWQsIHNpZ25hbGluZykg
XG4NCisvLy8gICAgMHgxRDogR3JlYXRlci10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2ln
bmFsaW5nKSBcbg0KKy8vLyAgICAweDFFOiBHcmVhdGVyLXRoYW4gKG9yZGVyZWQsIG5vbi1zaWdu
YWxpbmcpIFxuDQorLy8vICAgIDB4MUY6IFRydWUgKHVub3JkZXJlZCwgc2lnbmFsaW5nKQ0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb21wYXJpc29uIHJlc3VsdHMuDQorI2RlZmluZSBfbW1fY21wX3NkKGEsIGIsIGMpIFwNCisg
IChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcHNkKChfX3YyZGYpKF9fbTEyOGQpKGEpLCBcDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShiKSwgKGMp
KQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNjYWxhciB2YWx1
ZXMgb2YgdHdvIDEyOC1iaXQNCisvLy8gICAgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgdXNpbmcg
dGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZQ0KKy8vLyAgICBpbnRlZ2Vy
IG9wZXJhbmQuDQorLy8vDQorLy8vICAgIElmIHRoZSByZXN1bHQgaXMgdHJ1ZSwgYWxsIDMyIGJp
dHMgb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBhcmUgc2V0Ow0KKy8vLyAgICBvdGhlcndpc2Ug
dGhleSBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjggX21tX2NtcF9zcyhfX20xMjggYSwgX19tMTI4
IGIsIGNvbnN0IGludCBjKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QU1MgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIGENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
CisvLy8gXHBhcmFtIGINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
CisvLy8gXHBhcmFtIGMNCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0
aCBiaXRzIFs0OjBdIHNwZWNpZnlpbmcgd2hpY2ggY29tcGFyaXNvbg0KKy8vLyAgICBvcGVyYXRp
b24gdG8gdXNlOiBcbg0KKy8vLyAgICAweDAwOiBFcXVhbCAob3JkZXJlZCwgbm9uLXNpZ25hbGlu
ZykgXG4NCisvLy8gICAgMHgwMTogTGVzcy10aGFuIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQor
Ly8vICAgIDB4MDI6IExlc3MtdGhhbi1vci1lcXVhbCAob3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0K
Ky8vLyAgICAweDAzOiBVbm9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDQ6
IE5vdC1lcXVhbCAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDA1OiBO
b3QtbGVzcy10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwNjogTm90
LWxlc3MtdGhhbi1vci1lcXVhbCAodW5vcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4
MDc6IE9yZGVyZWQgKG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDg6IEVxdWFsICh1bm9y
ZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MDk6IE5vdC1ncmVhdGVyLXRoYW4t
b3ItZXF1YWwgKHVub3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBBOiBOb3QtZ3Jl
YXRlci10aGFuICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwQjogRmFsc2Ug
KG9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEM6IE5vdC1lcXVhbCAob3Jk
ZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgwRDogR3JlYXRlci10aGFuLW9yLWVx
dWFsIChvcmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MEU6IEdyZWF0ZXItdGhhbiAo
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDBGOiBUcnVlICh1bm9yZGVyZWQsIG5v
bi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MTA6IEVxdWFsIChvcmRlcmVkLCBzaWduYWxpbmcp
IFxuDQorLy8vICAgIDB4MTE6IExlc3MtdGhhbiAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4N
CisvLy8gICAgMHgxMjogTGVzcy10aGFuLW9yLWVxdWFsIChvcmRlcmVkLCBub24tc2lnbmFsaW5n
KSBcbg0KKy8vLyAgICAweDEzOiBVbm9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgx
NDogTm90LWVxdWFsICh1bm9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxNTogTm90
LWxlc3MtdGhhbiAodW5vcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE2OiBO
b3QtbGVzcy10aGFuLW9yLWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8v
ICAgIDB4MTc6IE9yZGVyZWQgKHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxODogRXF1YWwgKHVu
b3JkZXJlZCwgc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDE5OiBOb3QtZ3JlYXRlci10aGFuLW9y
LWVxdWFsICh1bm9yZGVyZWQsIG5vbi1zaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUE6IE5vdC1n
cmVhdGVyLXRoYW4gKHVub3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQjog
RmFsc2UgKG9yZGVyZWQsIHNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxQzogTm90LWVxdWFsIChv
cmRlcmVkLCBzaWduYWxpbmcpIFxuDQorLy8vICAgIDB4MUQ6IEdyZWF0ZXItdGhhbi1vci1lcXVh
bCAob3JkZXJlZCwgbm9uLXNpZ25hbGluZykgXG4NCisvLy8gICAgMHgxRTogR3JlYXRlci10aGFu
IChvcmRlcmVkLCBub24tc2lnbmFsaW5nKSBcbg0KKy8vLyAgICAweDFGOiBUcnVlICh1bm9yZGVy
ZWQsIHNpZ25hbGluZykNCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorI2RlZmluZSBfbW1fY21w
X3NzKGEsIGIsIGMpIFwNCisgIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wc3MoKF9fdjRzZiko
X19tMTI4KShhKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKShf
X20xMjgpKGIpLCAoYykpDQorDQorLy8vIFRha2VzIGEgWzggeCBpMzJdIHZlY3RvciBhbmQgcmV0
dXJucyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCisvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1t
ZWRpYXRlIGNvbnN0YW50IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
RVhUUkFDVEYxMjgrQ09NUE9TSVRFIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggaTMyXS4NCisv
Ly8gXHBhcmFtIF9faW1tDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQgd2l0
aCBiaXRzIFsyOjBdIGRldGVybWluaW5nIHdoaWNoIHZlY3Rvcg0KKy8vLyAgICBlbGVtZW50IGlz
IGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuDQorLy8vIFxyZXR1cm5zIEEgMzItYml0IGludGVnZXIg
Y29udGFpbmluZyB0aGUgZXh0cmFjdGVkIDMyIGJpdHMgb2YgZXh0ZW5kZWQNCisvLy8gICAgcGFj
a2VkIGRhdGEuDQorI2RlZmluZSBfbW0yNTZfZXh0cmFjdF9lcGkzMihYLCBOKSBcDQorICAoaW50
KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjhzaSgoX192OHNpKShfX20yNTZpKShYKSwgKGludCko
TikpDQorDQorLy8vIFRha2VzIGEgWzE2IHggaTE2XSB2ZWN0b3IgYW5kIHJldHVybnMgdGhlIHZl
Y3RvciBlbGVtZW50IHZhbHVlDQorLy8vICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25z
dGFudCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4
K0NPTVBPU0lURSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFsxNiB4IGkxNl0uDQorLy8v
IFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHdpdGgg
Yml0cyBbMzowXSBkZXRlcm1pbmluZyB3aGljaCB2ZWN0b3INCisvLy8gICAgZWxlbWVudCBpcyBl
eHRyYWN0ZWQgYW5kIHJldHVybmVkLg0KKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNv
bnRhaW5pbmcgdGhlIGV4dHJhY3RlZCAxNiBiaXRzIG9mIHplcm8gZXh0ZW5kZWQNCisvLy8gICAg
cGFja2VkIGRhdGEuDQorI2RlZmluZSBfbW0yNTZfZXh0cmFjdF9lcGkxNihYLCBOKSBcDQorICAo
aW50KSh1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YxNmhpKChfX3YxNmhp
KShfX20yNTZpKShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaW50KShOKSkNCisNCisvLy8gVGFrZXMgYSBbMzIgeCBpOF0gdmVjdG9y
IGFuZCByZXR1cm5zIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQ0KKy8vLyAgICBpbmRleGVkIGJ5
IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZFWFRSQUNURjEyOCtDT01QT1NJVEUgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMzIgeCBpOF0uDQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50
ZWdlciBvcGVyYW5kIHdpdGggYml0cyBbNDowXSBkZXRlcm1pbmluZyB3aGljaCB2ZWN0b3INCisv
Ly8gICAgZWxlbWVudCBpcyBleHRyYWN0ZWQgYW5kIHJldHVybmVkLg0KKy8vLyBccmV0dXJucyBB
IDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCA4IGJpdHMgb2YgemVybyBl
eHRlbmRlZA0KKy8vLyAgICBwYWNrZWQgZGF0YS4NCisjZGVmaW5lIF9tbTI1Nl9leHRyYWN0X2Vw
aTgoWCwgTikgXA0KKyAgKGludCkodW5zaWduZWQgY2hhcilfX2J1aWx0aW5faWEzMl92ZWNfZXh0
X3YzMnFpKChfX3YzMnFpKShfX20yNTZpKShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE4pKQ0KKw0KKyNpZmRlZiBfX3g4Nl82
NF9fDQorLy8vIFRha2VzIGEgWzQgeCBpNjRdIHZlY3RvciBhbmQgcmV0dXJucyB0aGUgdmVjdG9y
IGVsZW1lbnQgdmFsdWUNCisvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRpYXRlIGNvbnN0YW50
IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjgrQ09N
UE9TSVRFIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpNjRdLg0KKy8vLyBccGFy
YW0gX19pbW0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCB3aXRoIGJpdHMg
WzE6MF0gZGV0ZXJtaW5pbmcgd2hpY2ggdmVjdG9yDQorLy8vICAgIGVsZW1lbnQgaXMgZXh0cmFj
dGVkIGFuZCByZXR1cm5lZC4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWlu
aW5nIHRoZSBleHRyYWN0ZWQgNjQgYml0cyBvZiBleHRlbmRlZA0KKy8vLyAgICBwYWNrZWQgZGF0
YS4NCisjZGVmaW5lIF9tbTI1Nl9leHRyYWN0X2VwaTY0KFgsIE4pIFwNCisgIChsb25nIGxvbmcp
X19idWlsdGluX2lhMzJfdmVjX2V4dF92NGRpKChfX3Y0ZGkpKF9fbTI1NmkpKFgpLCAoaW50KShO
KSkNCisjZW5kaWYNCisNCisvLy8gVGFrZXMgYSBbOCB4IGkzMl0gdmVjdG9yIGFuZCByZXBsYWNl
cyB0aGUgdmVjdG9yIGVsZW1lbnQgdmFsdWUNCisvLy8gICAgaW5kZXhlZCBieSB0aGUgaW1tZWRp
YXRlIGNvbnN0YW50IG9wZXJhbmQgYnkgYSBuZXcgdmFsdWUuIFJldHVybnMgdGhlDQorLy8vICAg
IG1vZGlmaWVkIHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRG
MTI4K0NPTVBPU0lURSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSB2ZWN0b3Igb2YgWzggeCBpMzJdIHRvIGJlIHVzZWQgYnkgdGhlIGlu
c2VydCBvcGVyYXRpb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQW4gaW50ZWdlciB2YWx1
ZS4gVGhlIHJlcGxhY2VtZW50IHZhbHVlIGZvciB0aGUgaW5zZXJ0IG9wZXJhdGlvbi4NCisvLy8g
XHBhcmFtIF9faW1tDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhl
IGluZGV4IG9mIHRoZSB2ZWN0b3IgZWxlbWVudCB0byBiZQ0KKy8vLyAgICByZXBsYWNlZC4NCisv
Ly8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMg
ZWxlbWVudCBpbmRleGVkIGJ5DQorLy8vICAgIFxhIF9faW1tIHdpdGggXGEgX19iLg0KKyNkZWZp
bmUgX21tMjU2X2luc2VydF9lcGkzMihYLCBJLCBOKSBcDQorICAoX19tMjU2aSlfX2J1aWx0aW5f
aWEzMl92ZWNfc2V0X3Y4c2koKF9fdjhzaSkoX19tMjU2aSkoWCksIFwNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpDQorDQorDQorLy8v
IFRha2VzIGEgWzE2IHggaTE2XSB2ZWN0b3IgYW5kIHJlcGxhY2VzIHRoZSB2ZWN0b3IgZWxlbWVu
dCB2YWx1ZQ0KKy8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFu
ZCB3aXRoIGEgbmV3IHZhbHVlLiBSZXR1cm5zIHRoZQ0KKy8vLyAgICBtb2RpZmllZCB2ZWN0b3Iu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCtDT01QT1NJVEUgPC9j
Pg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
dmVjdG9yIG9mIFsxNiB4IGkxNl0gdG8gYmUgdXNlZCBieSB0aGUgaW5zZXJ0IG9wZXJhdGlvbi4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBbiBpMTYgaW50ZWdlciB2YWx1ZS4gVGhlIHJlcGxh
Y2VtZW50IHZhbHVlIGZvciB0aGUgaW5zZXJ0IG9wZXJhdGlvbi4NCisvLy8gXHBhcmFtIF9faW1t
DQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGluZGV4IG9mIHRo
ZSB2ZWN0b3IgZWxlbWVudCB0byBiZQ0KKy8vLyAgICByZXBsYWNlZC4NCisvLy8gXHJldHVybnMg
QSBjb3B5IG9mIHZlY3RvciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRl
eGVkIGJ5DQorLy8vICAgIFxhIF9faW1tIHdpdGggXGEgX19iLg0KKyNkZWZpbmUgX21tMjU2X2lu
c2VydF9lcGkxNihYLCBJLCBOKSBcDQorICAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl92ZWNfc2V0
X3YxNmhpKChfX3YxNmhpKShfX20yNTZpKShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50KShJKSwgKGludCkoTikpDQorDQorLy8vIFRha2VzIGEgWzMy
IHggaThdIHZlY3RvciBhbmQgcmVwbGFjZXMgdGhlIHZlY3RvciBlbGVtZW50IHZhbHVlDQorLy8v
ICAgIGluZGV4ZWQgYnkgdGhlIGltbWVkaWF0ZSBjb25zdGFudCBvcGVyYW5kIHdpdGggYSBuZXcg
dmFsdWUuIFJldHVybnMgdGhlDQorLy8vICAgIG1vZGlmaWVkIHZlY3Rvci4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4K0NPTVBPU0lURSA8L2M+DQorLy8vICAgaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSB2ZWN0b3Igb2YgWzMy
IHggaThdIHRvIGJlIHVzZWQgYnkgdGhlIGluc2VydCBvcGVyYXRpb24uDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQW4gaTggaW50ZWdlciB2YWx1ZS4gVGhlIHJlcGxhY2VtZW50IHZhbHVlIGZv
ciB0aGUgaW5zZXJ0IG9wZXJhdGlvbi4NCisvLy8gXHBhcmFtIF9faW1tDQorLy8vICAgIEFuIGlt
bWVkaWF0ZSBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGluZGV4IG9mIHRoZSB2ZWN0b3IgZWxlbWVu
dCB0byBiZQ0KKy8vLyAgICByZXBsYWNlZC4NCisvLy8gXHJldHVybnMgQSBjb3B5IG9mIHZlY3Rv
ciBcYSBfX2EsIGFmdGVyIHJlcGxhY2luZyBpdHMgZWxlbWVudCBpbmRleGVkIGJ5DQorLy8vICAg
IFxhIF9faW1tIHdpdGggXGEgX19iLg0KKyNkZWZpbmUgX21tMjU2X2luc2VydF9lcGk4KFgsIEks
IE4pIFwNCisgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjMycWkoKF9fdjMycWkp
KF9fbTI1NmkpKFgpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChpbnQpKEkpLCAoaW50KShOKSkNCisNCisjaWZkZWYgX194ODZfNjRfXw0KKy8vLyBUYWtlcyBh
IFs0IHggaTY0XSB2ZWN0b3IgYW5kIHJlcGxhY2VzIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQ0K
Ky8vLyAgICBpbmRleGVkIGJ5IHRoZSBpbW1lZGlhdGUgY29uc3RhbnQgb3BlcmFuZCB3aXRoIGEg
bmV3IHZhbHVlLiBSZXR1cm5zIHRoZQ0KKy8vLyAgICBtb2RpZmllZCB2ZWN0b3IuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCtDT01QT1NJVEUgPC9jPg0KKy8vLyAg
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgdmVjdG9yIG9m
IFs0IHggaTY0XSB0byBiZSB1c2VkIGJ5IHRoZSBpbnNlcnQgb3BlcmF0aW9uLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFsdWUuIFRoZSByZXBsYWNlbWVudCB2
YWx1ZSBmb3IgdGhlIGluc2VydCBvcGVyYXRpb24uDQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAg
ICBBbiBpbW1lZGlhdGUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBpbmRleCBvZiB0aGUgdmVjdG9y
IGVsZW1lbnQgdG8gYmUNCisvLy8gICAgcmVwbGFjZWQuDQorLy8vIFxyZXR1cm5zIEEgY29weSBv
ZiB2ZWN0b3IgXGEgX19hLCBhZnRlciByZXBsYWNpbmcgaXRzIGVsZW1lbnQgaW5kZXhlZCBieQ0K
Ky8vLyAgICAgXGEgX19pbW0gd2l0aCBcYSBfX2IuDQorI2RlZmluZSBfbW0yNTZfaW5zZXJ0X2Vw
aTY0KFgsIEksIE4pIFwNCisgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjRkaSgo
X192NGRpKShfX20yNTZpKShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChsb25nIGxvbmcpKEkpLCAoaW50KShOKSkNCisjZW5kaWYNCisNCisvKiBDb252ZXJz
aW9uICovDQorLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs0IHggaTMyXSBpbnRvIGEgdmVjdG9y
IG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlREUTJQ
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMu
DQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2N2
dGVwaTMyX3BkKF9fbTEyOGkgX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAo
X19tMjU2ZClfX2J1aWx0aW5faWEzMl9jdnRkcTJwZDI1NiAoKF9fdjRzaSkgX19hKTsNCisjZWxz
ZQ0KKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y0c2kpX19h
LCBfX3Y0ZGYpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gQ29udmVydHMgYSB2ZWN0b3Igb2YgWzgg
eCBpMzJdIGludG8gYSB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ1ZURFEyUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9jdnRlcGkzMl9wcyhfX20yNTZpIF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1
cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl9jdnRkcTJwczI1NiAoKF9fdjhzaSkgX19hKTsNCisj
ZWxzZQ0KKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjhzaSlf
X2EsIF9fdjhzZik7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIDI1Ni1iaXQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAgWzQg
eCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUUEQyUFMgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2N2dHBkX3BzKF9fbTI1NmQg
X19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2N2dHBkMnBzMjU2KChf
X3Y0ZGYpIF9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbOCB4IGZsb2F0
XSBpbnRvIGEgdmVjdG9yIG9mIFs4IHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZDVlRQUzJEUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEg
MjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0K
K3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jdnRw
c19lcGkzMihfX20yNTYgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEz
Ml9jdnRwczJkcTI1NigoX192OHNmKSBfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgYSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQNCisv
Ly8gICAgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFBTMlBE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IHZlY3Rv
ciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0
aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0cHNfcGQo
X19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTI1NmQpX19i
dWlsdGluX2lhMzJfY3Z0cHMycGQyNTYgKChfX3Y0c2YpIF9fYSk7DQorI2Vsc2UNCisgIHJldHVy
biAoX19tMjU2ZClfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192NHNmKV9fYSwgX192NGRmKTsN
CisjZW5kaWYNCit9DQorDQorLy8vIENvbnZlcnRzIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBk
b3VibGVdIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNA0KKy8vLyAgICB4IGkzMl0sIHRydW5j
YXRpbmcgdGhlIHJlc3VsdCBieSByb3VuZGluZyB0b3dhcmRzIHplcm8gd2hlbiBpdCBpcw0KKy8v
LyAgICBpbmV4YWN0Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRQRDJEUSA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJp
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxp
bmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0dHBkX2VwaTMyKF9fbTI1
NmQgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEy
NTYoKF9fdjRkZikgX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIGEgMjU2LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBkb3VibGVdIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBbNA0KKy8vLyAgICB4IGkz
Ml0uIFdoZW4gYSBjb252ZXJzaW9uIGlzIGluZXhhY3QsIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBy
b3VuZGVkDQorLy8vICAgIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJvbCBiaXRzIGlu
IHRoZSBNWENTUiByZWdpc3Rlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQ
RDJEUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMg
X19pbmxpbmUgX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0cGRfZXBpMzIo
X19tMjU2ZCBfX2EpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBk
MmRxMjU2KChfX3Y0ZGYpIF9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBb
OCB4IGZsb2F0XSBpbnRvIGEgdmVjdG9yIG9mIFs4IHggaTMyXSwNCisvLy8gICAgdHJ1bmNhdGlu
ZyB0aGUgcmVzdWx0IGJ5IHJvdW5kaW5nIHRvd2FyZHMgemVybyB3aGVuIGl0IGlzIGluZXhhY3Qu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFBTMkRRIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBb
OCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2N2dHRwc19lcGkzMihfX20yNTYgX19hKQ0KK3sNCisg
IHJldHVybiAoX19tMjU2aSlfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHEyNTYoKF9fdjhzZikgX19h
KTsNCit9DQorDQorLy8vIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGlucHV0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDxhdnhpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBk
b2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgNjQgYml0IGRvdWJsZSBjb250YWluaW5nIHRoZSBmaXJz
dCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lIGRvdWJsZSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY3Z0c2RfZjY0KF9fbTI1NmQgX19hKQ0KK3sNCisg
cmV0dXJuIF9fYVswXTsNCit9DQorDQorLy8vIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2Yg
dGhlIGlucHV0IHZlY3RvciBvZiBbOCB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDxh
dnhpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0
aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBv
ZiBbOCB4IGkzMl0uDQorLy8vIFxyZXR1cm5zIEEgMzIgYml0IGludGVnZXIgY29udGFpbmluZyB0
aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgaW5wdXQgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZSBp
bnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2N2dHNpMjU2X3NpMzIoX19tMjU2aSBfX2Ep
DQorew0KKyBfX3Y4c2kgX19iID0gKF9fdjhzaSlfX2E7DQorIHJldHVybiBfX2JbMF07DQorfQ0K
Kw0KKy8vLyBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBpbnB1dCB2ZWN0b3Igb2Yg
WzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDxhdnhpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBj
b3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisv
Ly8gXHJldHVybnMgQSAzMiBiaXQgZmxvYXQgY29udGFpbmluZyB0aGUgZmlyc3QgZWxlbWVudCBv
ZiB0aGUgaW5wdXQgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZSBmbG9hdCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW0yNTZfY3Z0c3NfZjMyKF9fbTI1NiBfX2EpDQorew0KKyByZXR1cm4gX19hWzBd
Ow0KK30NCisNCisvKiBWZWN0b3IgcmVwbGljYXRlICovDQorLy8vIE1vdmVzIGFuZCBkdXBsaWNh
dGVzIG9kZC1pbmRleGVkIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAg
WzggeCBmbG9hdF0gdG8gZmxvYXQgdmFsdWVzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU0hEVVAgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdLiBcbg0KKy8vLyAgICBCaXRzIFsyNTU6MjI0XSBvZiBcYSBfX2EgYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMjU1OjIyNF0gYW5kIFsyMjM6MTkyXSBvZg0KKy8vLyAgICB0aGUg
cmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsxOTE6MTYwXSBvZiBcYSBfX2EgYXJlIHdy
aXR0ZW4gdG8gYml0cyBbMTkxOjE2MF0gYW5kIFsxNTk6MTI4XSBvZg0KKy8vLyAgICB0aGUgcmV0
dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsxMjc6OTZdIG9mIFxhIF9fYSBhcmUgd3JpdHRl
biB0byBiaXRzIFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mIHRoZQ0KKy8vLyAgICByZXR1cm4gdmFs
dWUuIFxuDQorLy8vICAgIEJpdHMgWzYzOjMyXSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0
cyBbNjM6MzJdIGFuZCBbMzE6MF0gb2YgdGhlDQorLy8vICAgIHJldHVybiB2YWx1ZS4NCisvLy8g
XHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBt
b3ZlZCBhbmQgZHVwbGljYXRlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9f
bTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbW92ZWhkdXBfcHMoX19tMjU2IF9fYSkN
Cit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJf
bW92c2hkdXAyNTYgKChfX3Y4c2YpX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYSwgMSwgMSwgMywgMywgNSwgNSwg
NywgNyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBNb3ZlcyBhbmQgZHVwbGljYXRlcyBldmVuLWlu
ZGV4ZWQgdmFsdWVzIGZyb20gYSAyNTYtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbOCB4IGZsb2F0
XSB0byBmbG9hdCB2YWx1ZXMgaW4gYSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTTERVUCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBm
bG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzIyMzoxOTJdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0
byBiaXRzIFsyNTU6MjI0XSBhbmQgWzIyMzoxOTJdIG9mDQorLy8vICAgIHRoZSByZXR1cm4gdmFs
dWUuIFxuDQorLy8vICAgIEJpdHMgWzE1OToxMjhdIG9mIFxhIF9fYSBhcmUgd3JpdHRlbiB0byBi
aXRzIFsxOTE6MTYwXSBhbmQgWzE1OToxMjhdIG9mDQorLy8vICAgIHRoZSByZXR1cm4gdmFsdWUu
IFxuDQorLy8vICAgIEJpdHMgWzk1OjY0XSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBb
MTI3Ojk2XSBhbmQgWzk1OjY0XSBvZiB0aGUNCisvLy8gICAgcmV0dXJuIHZhbHVlLiBcbg0KKy8v
LyAgICBCaXRzIFszMTowXSBvZiBcYSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MzJdIGFu
ZCBbMzE6MF0gb2YgdGhlDQorLy8vICAgIHJldHVybiB2YWx1ZS4NCisvLy8gXHJldHVybnMgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVw
bGljYXRlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW0yNTZfbW92ZWxkdXBfcHMoX19tMjU2IF9fYSkNCit7DQorI2lmZGVm
IF9fR05VQ19fDQorICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfbW92c2xkdXAyNTYg
KChfX3Y4c2YpX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3Y4c2YpX19hLCAoX192OHNmKV9fYSwgMCwgMCwgMiwgMiwgNCwgNCwgNiwgNik7DQorI2Vu
ZGlmDQorfQ0KKw0KKy8vLyBNb3ZlcyBhbmQgZHVwbGljYXRlcyBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGENCisvLy8gICAgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIHRvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIGEgMjU2LWJpdA0KKy8vLyAg
ICB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1PVkREVVAgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbNjM6
MF0gb2YgXGEgX19hIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0gYW5kIFs2MzowXSBvZiB0
aGUNCisvLy8gICAgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsxOTE6MTI4XSBvZiBc
YSBfX2EgYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjE5Ml0gYW5kIFsxOTE6MTI4XSBvZg0KKy8v
LyAgICB0aGUgcmV0dXJuIHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQNCisvLy8gICAgZHVwbGljYXRl
ZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X21vdmVkdXBfcGQoX19tMjU2ZCBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAg
cmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl91bnBja2hwZDI1NiAoKF9fdjRkZilfX2Es
IChfX3Y0ZGYpX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y
KChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYSwgMCwgMCwgMiwgMik7DQorI2VuZGlmDQorfQ0KKw0K
Ky8qIFVucGFjayBhbmQgSW50ZXJsZWF2ZSAqLw0KKy8vLyBVbnBhY2tzIHRoZSBvZGQtaW5kZXhl
ZCB2ZWN0b3IgZWxlbWVudHMgZnJvbSB0d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs0
IHggZG91YmxlXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLSFBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFxuDQorLy8vICAgIEJpdHMg
WzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJldHVybiB2YWx1ZS4g
XG4NCisvLy8gICAgQml0cyBbMjU1OjE5Ml0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTkxOjEyOF0g
b2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0
cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSByZXR1cm4gdmFs
dWUuIFxuDQorLy8vICAgIEJpdHMgWzI1NToxOTJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzI1NTox
OTJdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCitz
dGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdW5wYWNr
aGlfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisg
IHJldHVybiAoX19tMjU2ZCkgX19idWlsdGluX2lhMzJfdW5wY2tocGQyNTYgKChfX3Y0ZGYpX19h
LCAoX192NGRmKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rv
cigoX192NGRmKV9fYSwgKF9fdjRkZilfX2IsIDEsIDUsIDErMiwgNSsyKTsNCisjZW5kaWYNCit9
DQorDQorLy8vIFVucGFja3MgdGhlIGV2ZW4taW5kZXhlZCB2ZWN0b3IgZWxlbWVudHMgZnJvbSB0
d28gMjU2LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs0IHggZG91YmxlXSBhbmQgaW50ZXJsZWF2
ZXMgdGhlbSBpbnRvIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbNCB4IGRvdWJsZV0uIFxuDQorLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzYzOjBdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzE5MToxMjhd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzE5MToxMjhdIG9mIHRoZSByZXR1cm4gdmFsdWUuDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBb
NCB4IGRvdWJsZV0uIFxuDQorLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzEyNzo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMTkxOjEyOF0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0
aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbTI1Nl91bnBhY2tsb19wZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2Ip
DQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEz
Ml91bnBja2xwZDI1NiAoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCisjZWxzZQ0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0ZGYpX19hLCAoX192NGRmKV9fYiwgMCwg
NCwgMCsyLCA0KzIpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgMzItYml0IHZl
Y3RvciBlbGVtZW50cyAyLCAzLCA2IGFuZCA3IGZyb20gZWFjaCBvZiB0aGUNCisvLy8gICAgdHdv
IDI1Ni1iaXQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRv
IGEgMjU2LWJpdA0KKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tIUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBcbg0K
Ky8vLyAgICBCaXRzIFs5NTo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MF0gb2YgdGhlIHJl
dHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBiaXRz
IFs5NTo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMjIzOjE5Ml0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisv
Ly8gICAgQml0cyBbMjU1OjIyNF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhl
IHJldHVybiB2YWx1ZS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdLiBcbg0KKy8vLyAgICBCaXRzIFs5NTo2NF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbNjM6MzJdIG9mIHRoZSByZXR1cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzEyNzo5
Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgcmV0dXJuIHZhbHVlLiBcbg0K
Ky8vLyAgICBCaXRzIFsyMjM6MTkyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxOTE6MTYwXSBvZiB0
aGUgcmV0dXJuIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsyNTU6MjI0XSBhcmUgd3JpdHRlbiB0
byBiaXRzIFsyNTU6MjI0XSBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl91bnBhY2toaV9wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVD
X18NCisgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEzMl91bnBja2hwczI1NiAoKF9fdjhz
ZilfX2EsIChfX3Y4c2YpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxl
dmVjdG9yKChfX3Y4c2YpX19hLCAoX192OHNmKV9fYiwgMiwgMTAsIDIrMSwgMTArMSwgNiwgMTQs
IDYrMSwgMTQrMSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSAzMi1iaXQgdmVj
dG9yIGVsZW1lbnRzIDAsIDEsIDQgYW5kIDUgZnJvbSBlYWNoIG9mIHRoZQ0KKy8vLyAgICB0d28g
MjU2LWJpdCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8g
YSAyNTYtYml0DQorLy8vICAgIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZVTlBDS0xQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uIFxuDQor
Ly8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXR1
cm4gdmFsdWUuIFxuDQorLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5
NTo2NF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMTU5OjEyOF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8g
ICAgQml0cyBbMTkxOjE2MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjIzOjE5Ml0gb2YgdGhlIHJl
dHVybiB2YWx1ZS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdLiBcbg0KKy8vLyAgICBCaXRzIFszMTowXSBhcmUgd3JpdHRlbiB0byBiaXRz
IFs2MzozMl0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbNjM6MzJdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJldHVybiB2YWx1ZS4gXG4NCisvLy8g
ICAgQml0cyBbMTU5OjEyOF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTkxOjE2MF0gb2YgdGhlIHJl
dHVybiB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMTkxOjE2MF0gYXJlIHdyaXR0ZW4gdG8gYml0
cyBbMjU1OjIyNF0gb2YgdGhlIHJldHVybiB2YWx1ZS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0
IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMu
DQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdW5w
YWNrbG9fcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQor
ICByZXR1cm4gKF9fbTI1NikgX19idWlsdGluX2lhMzJfdW5wY2tscHMyNTYgKChfX3Y4c2YpX19h
LCAoX192OHNmKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rv
cigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IsIDAsIDgsIDArMSwgOCsxLCA0LCAxMiwgNCsxLCAx
MisxKTsNCisjZW5kaWYNCit9DQorDQorLyogQml0IFRlc3QgKi8NCisvLy8gR2l2ZW4gdHdvIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0sIHBlcmZvcm0gYW4N
CisvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1wcmVj
aXNpb24gZWxlbWVudCBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8vLyAgICB2ZWN0
b3IuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xs
b3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBkb3VibGUt
cHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBl
bGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCisv
Ly8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVh
c3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8g
ICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9m
IHRoZSBzZWNvbmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBUaGlzIGlu
dHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZURVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisv
Ly8gXHJldHVybnMgdGhlIFpGIGZsYWcgaW4gdGhlIEVGTEFHUyByZWdpc3Rlci4NCitzdGF0aWMg
X19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV90ZXN0el9wZChfX20xMjhk
IF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBk
KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBHaXZlbiB0d28gMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgcGVyZm9ybSBhbg0KKy8v
LyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lv
biBlbGVtZW50IGluIHRoZQ0KKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFuZCB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNlDQorLy8vICAgIHZlY3Rvci4N
CisvLy8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6
IFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVj
aXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1l
bnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KKy8vLyAg
ICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBv
bmUgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBz
aWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhl
IHNlY29uZCBlbGVtZW50DQorLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBP
dGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIFRoaXMgaW50cmlu
c2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDRiBmbGFnLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlRFU1RQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBc
cmV0dXJucyB0aGUgQ0YgZmxhZyBpbiB0aGUgRUZMQUdTIHJlZ2lzdGVyLg0KK3N0YXRpYyBfX2lu
bGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX3Rlc3RjX3BkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3RjcGQoKF9f
djJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIEdpdmVuIHR3byAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLCBwZXJmb3JtIGFuDQorLy8vICAg
IGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUtcHJlY2lzaW9uIGVs
ZW1lbnQgaW4gdGhlDQorLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNw
b25kaW5nIGVsZW1lbnQgaW4gdGhlIHNlY29uZCBzb3VyY2UNCisvLy8gICAgdmVjdG9yLg0KKy8v
Lw0KKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4N
CisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lv
biBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMg
YXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQorLy8vICAgIFpG
IGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBw
YWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24t
Yml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vj
b25kIGVsZW1lbnQNCisvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVy
d2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgVGhpcyBpbnRyaW5zaWMg
cmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsDQorLy8v
ICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWVEVTVFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIDEg
aWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwgb3RoZXJ3aXNlIHJldHVy
bnMgMC4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV90
ZXN0bnpjX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWls
dGluX2lhMzJfdnRlc3RuemNwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisv
Ly8gR2l2ZW4gdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0
XSwgcGVyZm9ybSBhbg0KKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0
aGUgc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50IGluIHRoZQ0KKy8vLyAgICBmaXJzdCBzb3VyY2Ug
dmVjdG9yIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSBzZWNvbmQgc291cmNl
DQorLy8vICAgIHZlY3Rvci4NCisvLy8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1
cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBw
YWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24t
Yml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3Ro
ZXJ3aXNlIHRoZQ0KKy8vLyAgICBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0
aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdo
ZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0
aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVtZW50DQorLy8vICAgIGlzIDEsIHRoZSBDRiBm
bGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQor
Ly8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBaRiBmbGFnLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCisvLy8gXHJldHVybnMgdGhlIFpGIGZsYWcuDQorc3RhdGljIF9faW5saW5lIGlu
dCBfX0RFRkFVTFRfRk5fQVRUUlMxMjgNCitfbW1fdGVzdHpfcHMoX19tMTI4IF9fYSwgX19tMTI4
IF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRlc3R6cHMoKF9fdjRzZilfX2Es
IChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIEdpdmVuIHR3byAxMjgtYml0IGZsb2F0aW5nLXBv
aW50IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0sIHBlcmZvcm0gYW4NCisvLy8gICAgZWxlbWVudC1i
eS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudCBpbiB0
aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8vLyAgICB2ZWN0b3IuDQorLy8vDQorLy8vICAg
IFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJ
ZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRz
IHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMgb2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhl
IFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUNCisvLy8gICAgWkYgZmxhZyBpcyBz
ZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2lu
Z2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXQgb2YgdGhl
IGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVu
dA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBD
RiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRo
ZSB2YWx1ZSBvZiB0aGUgQ0YgZmxhZy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZU
RVNUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIHRoZSBDRiBm
bGFnLg0KK3N0YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX3Rl
c3RjX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX3Z0ZXN0Y3BzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBHaXZl
biB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCBwZXJm
b3JtIGFuDQorLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5n
bGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhlDQorLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3Ig
YW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIHNlY29uZCBzb3VyY2UNCisvLy8g
ICAgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQg
YXMgZm9sbG93czogXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Yg
c2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXRzIG9m
IGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2Ug
dGhlDQorLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJlIGlz
IGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhl
DQorLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWdu
LWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCisvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMg
c2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAg
VGhpcyBpbnRyaW5zaWMgcmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUg
c2V0IHRvIDAsDQorLy8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8v
LyBccmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsIG90
aGVyd2lzZSByZXR1cm5zIDAuDQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMxMjgNCitfbW1fdGVzdG56Y19wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7
DQorfQ0KKw0KKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9m
IFs0IHggZG91YmxlXSwgcGVyZm9ybSBhbg0KKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29t
cGFyaXNvbiBvZiB0aGUgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyBpbiB0aGUNCisvLy8gICAg
Zmlyc3Qgc291cmNlIHZlY3RvciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhl
IHNlY29uZCBzb3VyY2UNCisvLy8gICAgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgRUZMQUdT
IHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCisvLy8gICAgSWYgdGhlcmUgaXMg
YXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUN
CisvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlz
IHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQorLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxu
DQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNp
b24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVt
ZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCisvLy8gICAg
aXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBz
ZXQgdG8gMS4gXG4NCisvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFsdWUgb2Yg
dGhlIFpGIGZsYWcuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZl
Y3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0
IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIHRoZSBaRiBmbGFnLg0KK3N0
YXRpYyBfX2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3Rlc3R6X3BkKF9f
bTI1NmQgX19hLCBfX20yNTZkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdnRl
c3R6cGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCit9DQorDQorLy8vIEdpdmVuIHR3
byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzQgeCBkb3VibGVdLCBwZXJmb3Jt
IGFuDQorLy8vICAgIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBkb3VibGUt
cHJlY2lzaW9uIGVsZW1lbnRzIGluIHRoZQ0KKy8vLyAgICBmaXJzdCBzb3VyY2UgdmVjdG9yIGFu
ZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8vLyAg
ICB2ZWN0b3IuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRlZCBh
cyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBk
b3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMgb2Yg
Ym90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0
aGUNCisvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUgaXMg
YXQgbGVhc3Qgb25lIHBhaXIgb2YgZG91YmxlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUN
CisvLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNpZ24t
Yml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBpcyBz
ZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBU
aGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ0YgZmxhZy4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XS4NCisvLy8gXHJldHVybnMgdGhlIENGIGZsYWcuDQorc3RhdGljIF9faW5saW5lIGludCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdGVzdGNfcGQoX19tMjU2ZCBfX2EsIF9fbTI1NmQgX19i
KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdGNwZDI1NigoX192NGRmKV9fYSwg
KF9fdjRkZilfX2IpOw0KK30NCisNCisvLy8gR2l2ZW4gdHdvIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9ycyBvZiBbNCB4IGRvdWJsZV0sIHBlcmZvcm0gYW4NCisvLy8gICAgZWxlbWVudC1i
eS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgaW4g
dGhlDQorLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnRzIGluIHRoZSBzZWNvbmQgc291cmNlDQorLy8vICAgIHZlY3Rvci4NCisvLy8NCisvLy8g
ICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFzIGZvbGxvd3M6IFxuDQorLy8vICAg
IElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVu
dHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0cyBvZiBib3RoIGVsZW1lbnRzIGFyZSAxLCB0
aGUgWkYgZmxhZyBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZQ0KKy8vLyAgICBaRiBmbGFnIGlz
IHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBk
b3VibGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdCBvZiB0
aGUgZmlyc3QgZWxlbWVudCBpcyAwIGFuZCB0aGUgc2lnbi1iaXQgb2YgdGhlIHNlY29uZCBlbGVt
ZW50DQorLy8vICAgIGlzIDEsIHRoZSBDRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhl
IENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIFRoaXMgaW50cmluc2ljIHJldHVybnMg
MSBpZiBib3RoIHRoZSBaRiBhbmQgQ0YgZmxhZ3MgYXJlIHNldCB0byAwLA0KKy8vLyAgICBvdGhl
cndpc2UgaXQgcmV0dXJucyAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlRFU1RQ
RCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2
LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyAxIGlmIGJvdGgg
dGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAsIG90aGVyd2lzZSByZXR1cm5zIDAuDQor
c3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdGVzdG56Y19w
ZChfX20yNTZkIF9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X3Z0ZXN0bnpjcGQyNTYoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19iKTsNCit9DQorDQorLy8vIEdp
dmVuIHR3byAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzggeCBmbG9hdF0sIHBl
cmZvcm0gYW4NCisvLy8gICAgZWxlbWVudC1ieS1lbGVtZW50IGNvbXBhcmlzb24gb2YgdGhlIHNp
bmdsZS1wcmVjaXNpb24gZWxlbWVudCBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3Rv
ciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgc2Vjb25kIHNvdXJjZQ0KKy8v
LyAgICB2ZWN0b3IuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVnaXN0ZXIgaXMgdXBkYXRl
ZCBhcyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBv
ZiBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnRzIHdoZXJlIHRoZQ0KKy8vLyAgICBzaWduLWJpdHMg
b2YgYm90aCBlbGVtZW50cyBhcmUgMSwgdGhlIFpGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lz
ZSB0aGUNCisvLy8gICAgWkYgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgSWYgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0
aGUNCisvLy8gICAgc2lnbi1iaXQgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaXMgMCBhbmQgdGhlIHNp
Z24tYml0IG9mIHRoZSBzZWNvbmQgZWxlbWVudA0KKy8vLyAgICBpcyAxLCB0aGUgQ0YgZmxhZyBp
cyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAg
ICBUaGlzIGludHJpbnNpYyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgWkYgZmxhZy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZURVNUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRd
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0uDQorLy8vIFxyZXR1cm5zIHRoZSBaRiBmbGFnLg0KK3N0YXRpYyBfX2lubGluZSBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3Rlc3R6X3BzKF9fbTI1NiBfX2EsIF9fbTI1NiBfX2Ip
DQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBzMjU2KChfX3Y4c2YpX19hLCAo
X192OHNmKV9fYik7DQorfQ0KKw0KKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3JzIG9mIFs4IHggZmxvYXRdLCBwZXJmb3JtIGFuDQorLy8vICAgIGVsZW1lbnQtYnkt
ZWxlbWVudCBjb21wYXJpc29uIG9mIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGVsZW1lbnQgaW4gdGhl
DQorLy8vICAgIGZpcnN0IHNvdXJjZSB2ZWN0b3IgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1l
bnQgaW4gdGhlIHNlY29uZCBzb3VyY2UNCisvLy8gICAgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBU
aGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCisvLy8gICAgSWYg
dGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3
aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXRzIG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBa
RiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlDQorLy8vICAgIFpGIGZsYWcgaXMgc2V0
IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmds
ZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUgdGhlDQorLy8vICAgIHNpZ24tYml0IG9mIHRoZSBm
aXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBzaWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQN
CisvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0Yg
ZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUg
dmFsdWUgb2YgdGhlIENGIGZsYWcuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVT
VFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyB0aGUgQ0YgZmxh
Zy4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl90ZXN0
Y19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml92dGVzdGNwczI1NigoX192OHNmKV9fYSwgKF9fdjhzZilfX2IpOw0KK30NCisNCisvLy8gR2l2
ZW4gdHdvIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbOCB4IGZsb2F0XSwgcGVy
Zm9ybSBhbg0KKy8vLyAgICBlbGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgc2lu
Z2xlLXByZWNpc2lvbiBlbGVtZW50cyBpbiB0aGUNCisvLy8gICAgZmlyc3Qgc291cmNlIHZlY3Rv
ciBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNlY29uZCBzb3VyY2UNCisv
Ly8gICAgdmVjdG9yLg0KKy8vLw0KKy8vLyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0
ZWQgYXMgZm9sbG93czogXG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIg
b2Ygc2luZ2xlLXByZWNpc2lvbiBlbGVtZW50cyB3aGVyZSB0aGUNCisvLy8gICAgc2lnbi1iaXRz
IG9mIGJvdGggZWxlbWVudHMgYXJlIDEsIHRoZSBaRiBmbGFnIGlzIHNldCB0byAwLiBPdGhlcndp
c2UgdGhlDQorLy8vICAgIFpGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJl
IGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIHNpbmdsZS1wcmVjaXNpb24gZWxlbWVudHMgd2hlcmUg
dGhlDQorLy8vICAgIHNpZ24tYml0IG9mIHRoZSBmaXJzdCBlbGVtZW50IGlzIDAgYW5kIHRoZSBz
aWduLWJpdCBvZiB0aGUgc2Vjb25kIGVsZW1lbnQNCisvLy8gICAgaXMgMSwgdGhlIENGIGZsYWcg
aXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxhZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8g
ICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBh
cmUgc2V0IHRvIDAsDQorLy8vICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWVEVTVFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0K
Ky8vLyBccmV0dXJucyAxIGlmIGJvdGggdGhlIFpGIGFuZCBDRiBmbGFncyBhcmUgc2V0IHRvIDAs
IG90aGVyd2lzZSByZXR1cm5zIDAuDQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW0yNTZfdGVzdG56Y19wcyhfX20yNTYgX19hLCBfX20yNTYgX19iKQ0KK3sNCisg
IHJldHVybiBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BzMjU2KChfX3Y4c2YpX19hLCAoX192OHNm
KV9fYik7DQorfQ0KKw0KKy8vLyBHaXZlbiB0d28gMjU2LWJpdCBpbnRlZ2VyIHZlY3RvcnMsIHBl
cmZvcm0gYSBiaXQtYnktYml0IGNvbXBhcmlzb24NCisvLy8gICAgb2YgdGhlIHR3byBzb3VyY2Ug
dmVjdG9ycy4NCisvLy8NCisvLy8gICAgVGhlIEVGTEFHUyByZWdpc3RlciBpcyB1cGRhdGVkIGFz
IGZvbGxvd3M6IFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwYWlyIG9mIGJp
dHMgd2hlcmUgYm90aCBiaXRzIGFyZSAxLCB0aGUgWkYgZmxhZw0KKy8vLyAgICBpcyBzZXQgdG8g
MC4gT3RoZXJ3aXNlIHRoZSBaRiBmbGFnIGlzIHNldCB0byAxLiBcbg0KKy8vLyAgICBJZiB0aGVy
ZSBpcyBhdCBsZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJlIHRoZSBiaXQgZnJvbSB0aGUgZmly
c3Qgc291cmNlDQorLy8vICAgIHZlY3RvciBpcyAwIGFuZCB0aGUgYml0IGZyb20gdGhlIHNlY29u
ZCBzb3VyY2UgdmVjdG9yIGlzIDEsIHRoZSBDRiBmbGFnDQorLy8vICAgIGlzIHNldCB0byAwLiBP
dGhlcndpc2UgdGhlIENGIGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIFRoaXMgaW50cmlu
c2ljIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBaRiBmbGFnLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBURVNUIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgdGhlIFpGIGZs
YWcuDQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfdGVz
dHpfc2kyNTYoX19tMjU2aSBfX2EsIF9fbTI1NmkgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0
aW5faWEzMl9wdGVzdHoyNTYoKF9fdjRkaSlfX2EsIChfX3Y0ZGkpX19iKTsNCit9DQorDQorLy8v
IEdpdmVuIHR3byAyNTYtYml0IGludGVnZXIgdmVjdG9ycywgcGVyZm9ybSBhIGJpdC1ieS1iaXQg
Y29tcGFyaXNvbg0KKy8vLyAgICBvZiB0aGUgdHdvIHNvdXJjZSB2ZWN0b3JzLg0KKy8vLw0KKy8v
LyAgICBUaGUgRUZMQUdTIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYXMgZm9sbG93czogXG4NCisvLy8g
ICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSBib3RoIGJpdHMg
YXJlIDEsIHRoZSBaRiBmbGFnDQorLy8vICAgIGlzIHNldCB0byAwLiBPdGhlcndpc2UgdGhlIFpG
IGZsYWcgaXMgc2V0IHRvIDEuIFxuDQorLy8vICAgIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBw
YWlyIG9mIGJpdHMgd2hlcmUgdGhlIGJpdCBmcm9tIHRoZSBmaXJzdCBzb3VyY2UNCisvLy8gICAg
dmVjdG9yIGlzIDAgYW5kIHRoZSBiaXQgZnJvbSB0aGUgc2Vjb25kIHNvdXJjZSB2ZWN0b3IgaXMg
MSwgdGhlIENGIGZsYWcNCisvLy8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgQ0YgZmxh
ZyBpcyBzZXQgdG8gMS4gXG4NCisvLy8gICAgVGhpcyBpbnRyaW5zaWMgcmV0dXJucyB0aGUgdmFs
dWUgb2YgdGhlIENGIGZsYWcuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1Qg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAyNTYtYml0IGlu
dGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyB0aGUgQ0YgZmxhZy4NCitzdGF0aWMgX19pbmxp
bmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl90ZXN0Y19zaTI1NihfX20yNTZpIF9f
YSwgX19tMjU2aSBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzI1Nigo
X192NGRpKV9fYSwgKF9fdjRkaSlfX2IpOw0KK30NCisNCisvLy8gR2l2ZW4gdHdvIDI1Ni1iaXQg
aW50ZWdlciB2ZWN0b3JzLCBwZXJmb3JtIGEgYml0LWJ5LWJpdCBjb21wYXJpc29uDQorLy8vICAg
IG9mIHRoZSB0d28gc291cmNlIHZlY3RvcnMuDQorLy8vDQorLy8vICAgIFRoZSBFRkxBR1MgcmVn
aXN0ZXIgaXMgdXBkYXRlZCBhcyBmb2xsb3dzOiBcbg0KKy8vLyAgICBJZiB0aGVyZSBpcyBhdCBs
ZWFzdCBvbmUgcGFpciBvZiBiaXRzIHdoZXJlIGJvdGggYml0cyBhcmUgMSwgdGhlIFpGIGZsYWcN
CisvLy8gICAgaXMgc2V0IHRvIDAuIE90aGVyd2lzZSB0aGUgWkYgZmxhZyBpcyBzZXQgdG8gMS4g
XG4NCisvLy8gICAgSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhaXIgb2YgYml0cyB3aGVyZSB0
aGUgYml0IGZyb20gdGhlIGZpcnN0IHNvdXJjZQ0KKy8vLyAgICB2ZWN0b3IgaXMgMCBhbmQgdGhl
IGJpdCBmcm9tIHRoZSBzZWNvbmQgc291cmNlIHZlY3RvciBpcyAxLCB0aGUgQ0YgZmxhZw0KKy8v
LyAgICBpcyBzZXQgdG8gMC4gT3RoZXJ3aXNlIHRoZSBDRiBmbGFnIGlzIHNldCB0byAxLiBcbg0K
Ky8vLyAgICBUaGlzIGludHJpbnNpYyByZXR1cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZs
YWdzIGFyZSBzZXQgdG8gMCwNCisvLy8gICAgb3RoZXJ3aXNlIGl0IHJldHVybnMgMC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1
cm5zIDEgaWYgYm90aCB0aGUgWkYgYW5kIENGIGZsYWdzIGFyZSBzZXQgdG8gMCwgb3RoZXJ3aXNl
IHJldHVybnMgMC4NCitzdGF0aWMgX19pbmxpbmUgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bTI1Nl90ZXN0bnpjX3NpMjU2KF9fbTI1NmkgX19hLCBfX20yNTZpIF9fYikNCit7DQorICByZXR1
cm4gX19idWlsdGluX2lhMzJfcHRlc3RuemMyNTYoKF9fdjRkaSlfX2EsIChfX3Y0ZGkpX19iKTsN
Cit9DQorDQorLyogVmVjdG9yIGV4dHJhY3Qgc2lnbiBtYXNrICovDQorLy8vIEV4dHJhY3RzIHRo
ZSBzaWduIGJpdHMgb2YgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cw0K
Ky8vLyAgICBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBhbmQgd3JpdGVzIHRo
ZW0gdG8gdGhlIGxvd2VyIG9yZGVyDQorLy8vICAgIGJpdHMgb2YgdGhlIHJldHVybiB2YWx1ZS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQRCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGRvdWJsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRp
bmcgcG9pbnQgdmFsdWVzIHdpdGggc2lnbiBiaXRzIHRvIGJlIGV4dHJhY3RlZC4NCisvLy8gXHJl
dHVybnMgVGhlIHNpZ24gYml0cyBmcm9tIHRoZSBvcGVyYW5kLCB3cml0dGVuIHRvIGJpdHMgWzM6
MF0uDQorc3RhdGljIF9faW5saW5lIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbW92
ZW1hc2tfcGQoX19tMjU2ZCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1z
a3BkMjU2KChfX3Y0ZGYpX19hKTsNCit9DQorDQorLy8vIEV4dHJhY3RzIHRoZSBzaWduIGJpdHMg
b2Ygc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cw0KKy8vLyAgICBpbiBh
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGFuZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93
ZXIgb3JkZXINCisvLy8gICAgYml0cyBvZiB0aGUgcmV0dXJuIHZhbHVlLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk1TS1BTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250
YWluaW5nIHRoZSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nDQorLy8vICAgIHBvaW50IHZhbHVl
cyB3aXRoIHNpZ24gYml0cyB0byBiZSBleHRyYWN0ZWQuDQorLy8vIFxyZXR1cm5zIFRoZSBzaWdu
IGJpdHMgZnJvbSB0aGUgb3BlcmFuZCwgd3JpdHRlbiB0byBiaXRzIFs3OjBdLg0KK3N0YXRpYyBf
X2lubGluZSBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X21vdmVtYXNrX3BzKF9fbTI1
NiBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BzMjU2KChfX3Y4c2Yp
X19hKTsNCit9DQorDQorLyogVmVjdG9yIF9femVybyAqLw0KKy8vLyBaZXJvZXMgdGhlIGNvbnRl
bnRzIG9mIGFsbCBYTU0gb3IgWU1NIHJlZ2lzdGVycy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZaRVJPQUxMIDwvYz4gaW5zdHJ1Y3Rpb24uDQorI2lmZGVmIF9fR05VQ19fDQorc3Rh
dGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorI2Vsc2UNCitzdGF0aWMgX19p
bmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18s
IF9fdGFyZ2V0X18oImF2eCIpKSkNCisjZW5kaWYNCitfbW0yNTZfemVyb2FsbCh2b2lkKQ0KK3sN
CisgIF9fYnVpbHRpbl9pYTMyX3Z6ZXJvYWxsKCk7DQorfQ0KKw0KKy8vLyBaZXJvZXMgdGhlIHVw
cGVyIDEyOCBiaXRzIChiaXRzIDI1NToxMjgpIG9mIGFsbCBZTU0gcmVnaXN0ZXJzLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlpFUk9VUFBFUiA8L2M+IGluc3RydWN0aW9uLg0KKy8v
DQorI2lmZGVmIF9fR05VQ19fDQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorI2Vsc2UNCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5
c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oImF2eCIpKSkNCisjZW5kaWYNCitf
bW0yNTZfemVyb3VwcGVyKHZvaWQpDQorew0KKyAgX19idWlsdGluX2lhMzJfdnplcm91cHBlcigp
Ow0KK30NCisNCisvKiBWZWN0b3IgbG9hZCB3aXRoIGJyb2FkY2FzdCAqLw0KKy8vLyBMb2FkcyBh
IHNjYWxhciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZyb20gdGhlDQor
Ly8vICAgIHNwZWNpZmllZCBhZGRyZXNzIHBvaW50ZWQgdG8gYnkgXGEgX19hIGFuZCBicm9hZGNh
c3RzIGl0IHRvIHRoZSBlbGVtZW50cw0KKy8vLyAgICBvZiBhIFs0IHggZmxvYXRdIHZlY3Rvci4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RTUyA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIFRoZSBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nIHBvaW50IHZhbHVlIHRvIGJlIGJyb2FkY2FzdC4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSAzMi1iaXQgZWxlbWVudHMgYXJlIHNl
dA0KKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0IHZhbHVlLg0KK3N0YXRpYyBfX2lubGlu
ZSBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTMTI4DQorX21tX2Jyb2FkY2FzdF9zcyhmbG9hdCBj
b25zdCAqX19hKQ0KK3sNCisgIGZsb2F0IF9fZiA9ICpfX2E7DQorICByZXR1cm4gX19leHRlbnNp
b25fXyAoX19tMTI4KShfX3Y0c2YpeyBfX2YsIF9fZiwgX19mLCBfX2YgfTsNCit9DQorDQorLy8v
IExvYWRzIGEgc2NhbGFyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWUgZnJv
bSB0aGUNCisvLy8gICAgc3BlY2lmaWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2EgYW5k
IGJyb2FkY2FzdHMgaXQgdG8gdGhlIGVsZW1lbnRzDQorLy8vICAgIG9mIGEgWzQgeCBkb3VibGVd
IHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RTRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIFRoZSBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIHRvIGJlIGJyb2FkY2FzdC4NCisvLy8gXHJl
dHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gd2hvc2UgNjQtYml0IGVsZW1l
bnRzIGFyZSBzZXQNCisvLy8gICAgZXF1YWwgdG8gdGhlIGJyb2FkY2FzdCB2YWx1ZS4NCitzdGF0
aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfYnJvYWRjYXN0
X3NkKGRvdWJsZSBjb25zdCAqX19hKQ0KK3sNCisgIGRvdWJsZSBfX2QgPSAqX19hOw0KKyAgcmV0
dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NmQpKF9fdjRkZil7IF9fZCwgX19kLCBfX2QsIF9fZCB9
Ow0KK30NCisNCisvLy8gTG9hZHMgYSBzY2FsYXIgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBw
b2ludCB2YWx1ZSBmcm9tIHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgYWRkcmVzcyBwb2ludGVkIHRv
IGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byB0aGUgZWxlbWVudHMNCisvLy8gICAgb2Yg
YSBbOCB4IGZsb2F0XSB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJP
QURDQVNUU1MgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBUaGUgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBiZSBicm9hZGNh
c3QuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2hvc2Ug
MzItYml0IGVsZW1lbnRzIGFyZSBzZXQNCisvLy8gICAgZXF1YWwgdG8gdGhlIGJyb2FkY2FzdCB2
YWx1ZS4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9icm9hZGNhc3Rfc3MoZmxvYXQgY29uc3QgKl9fYSkNCit7DQorICBmbG9hdCBfX2YgPSAqX19h
Ow0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1NikoX192OHNmKXsgX19mLCBfX2YsIF9f
ZiwgX19mLCBfX2YsIF9fZiwgX19mLCBfX2YgfTsNCit9DQorDQorLy8vIExvYWRzIHRoZSBkYXRh
IGZyb20gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gZnJvbSB0aGUNCisvLy8gICAg
c3BlY2lmaWVkIGFkZHJlc3MgcG9pbnRlZCB0byBieSBcYSBfX2EgYW5kIGJyb2FkY2FzdHMgaXQg
dG8gMTI4LWJpdA0KKy8vLyAgICBlbGVtZW50cyBpbiBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHgg
ZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCUk9BRENBU1RGMTI4IDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgVGhlIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBiZSBicm9hZGNhc3QuDQorLy8vIFxyZXR1cm5z
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIHdob3NlIDEyOC1iaXQgZWxlbWVudHMg
YXJlIHNldA0KKy8vLyAgICBlcXVhbCB0byB0aGUgYnJvYWRjYXN0IHZhbHVlLg0KK3N0YXRpYyBf
X2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9icm9hZGNhc3RfcGQo
X19tMTI4ZCBjb25zdCAqX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19t
MjU2ZCkgX19idWlsdGluX2lhMzJfdmJyb2FkY2FzdGYxMjhfcGQyNTYgKF9fYSk7DQorI2Vsc2UN
CisgIF9fbTEyOGQgX19iID0gX21tX2xvYWR1X3BkKChjb25zdCBkb3VibGUgKilfX2EpOw0KKyAg
cmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19iLCAoX192
MmRmKV9fYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAx
LCAwLCAxKTsNCisjZW5kaWYNCit9DQorDQorLy8vIExvYWRzIHRoZSBkYXRhIGZyb20gYSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBmcm9tIHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgYWRk
cmVzcyBwb2ludGVkIHRvIGJ5IFxhIF9fYSBhbmQgYnJvYWRjYXN0cyBpdCB0byAxMjgtYml0DQor
Ly8vICAgIGVsZW1lbnRzIGluIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQlJPQURDQVNURjEyOCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIFRoZSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSB0byBiZSBicm9hZGNhc3QuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0
b3Igb2YgWzggeCBmbG9hdF0gd2hvc2UgMTI4LWJpdCBlbGVtZW50cyBhcmUgc2V0DQorLy8vICAg
IGVxdWFsIHRvIHRoZSBicm9hZGNhc3QgdmFsdWUuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfYnJvYWRjYXN0X3BzKF9fbTEyOCBjb25zdCAqX19h
KQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMjU2KSBfX2J1aWx0aW5faWEz
Ml92YnJvYWRjYXN0ZjEyOF9wczI1NiAoX19hKTsNCisjZWxzZQ0KKyAgX19tMTI4IF9fYiA9IF9t
bV9sb2FkdV9wcygoY29uc3QgZmxvYXQgKilfX2EpOw0KKyAgcmV0dXJuIChfX20yNTYpX19idWls
dGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2IsIChfX3Y0c2YpX19iLA0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMiwgMywgMCwgMSwgMiwgMyk7DQor
I2VuZGlmDQorfQ0KKw0KKy8qIFNJTUQgbG9hZCBvcHMgKi8NCisvLy8gTG9hZHMgNCBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMzItYnl0ZSBhbGlnbmVkDQor
Ly8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9y
IG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIDMyLWJ5
dGUgYWxpZ25lZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcNCisvLy8g
ICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5z
IEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0y
NTZfbG9hZF9wZChkb3VibGUgY29uc3QgKl9fcCkNCit7DQorICByZXR1cm4gKihfX20yNTZkICop
X19wOw0KK30NCisNCisvLy8gTG9hZHMgOCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50
IHZhbHVlcyBmcm9tIGEgMzItYnl0ZSBhbGlnbmVkDQorLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBw
b2ludGVkIHRvIGJ5IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgMzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBt
ZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBmbG9hdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVz
Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2xv
YWRfcHMoZmxvYXQgY29uc3QgKl9fcCkNCit7DQorICByZXR1cm4gKihfX20yNTYgKilfX3A7DQor
fQ0KKw0KKy8vLyBMb2FkcyA0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVz
IGZyb20gYW4gdW5hbGlnbmVkDQorLy8vICAgIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5
IFxhIF9fcCBpbnRvIGEgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZNT1ZVUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBk
b3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nDQorLy8vICAgIHBvaW50IHZhbHVlcy4NCisvLy8gXHJl
dHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92
ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl9sb2FkdV9wZChkb3VibGUgY29uc3QgKl9fcCkNCit7DQorICBzdHJ1Y3QgX19sb2Fk
dV9wZCB7DQorICAgIF9fbTI1NmQgX192Ow0KKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9f
LCBfX21heV9hbGlhc19fKSk7DQorICByZXR1cm4gKChzdHJ1Y3QgX19sb2FkdV9wZCopX19wKS0+
X192Ow0KK30NCisNCisvLy8gTG9hZHMgOCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50
IHZhbHVlcyBmcm9tIGFuIHVuYWxpZ25lZA0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9pbnRl
ZCB0byBieSBcYSBfX3AgaW50byBhIHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFp
bmluZyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nDQorLy8vICAgIHBvaW50IHZhbHVlcy4NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRo
ZSBtb3ZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfbG9hZHVfcHMoZmxvYXQgY29uc3QgKl9fcCkNCit7DQorICBzdHJ1Y3QgX19s
b2FkdV9wcyB7DQorICAgIF9fbTI1NiBfX3Y7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2Vk
X18sIF9fbWF5X2FsaWFzX18pKTsNCisgIHJldHVybiAoKHN0cnVjdCBfX2xvYWR1X3BzKilfX3Ap
LT5fX3Y7DQorfQ0KKw0KKy8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2VyIGRhdGEgZnJvbSBh
IDMyLWJ5dGUgYWxpZ25lZCBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24gcG9pbnRlZCB0byBieSBc
YSBfX3AgaW50byBlbGVtZW50cyBvZiBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRFFBIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSAzMi1ieXRlIGFsaWduZWQgcG9pbnRlciB0byBhIDI1
Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBpbnRlZ2VyDQorLy8vICAgIHZhbHVlcy4N
CisvLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1v
dmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW0yNTZfbG9hZF9zaTI1NihfX20yNTZpIGNvbnN0ICpfX3ApDQorew0KKyAgcmV0dXJuICpf
X3A7DQorfQ0KKw0KKy8vLyBMb2FkcyAyNTYgYml0cyBvZiBpbnRlZ2VyIGRhdGEgZnJvbSBhbiB1
bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uDQorLy8vICAgIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlu
dG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1PVkRRVSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8v
ICAgIEEgcG9pbnRlciB0byBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBpbnRl
Z2VyIHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW0yNTZfbG9hZHVfc2kyNTYoX19tMjU2aSBjb25zdCAqX19wKQ0KK3sN
CisgIHN0cnVjdCBfX2xvYWR1X3NpMjU2IHsNCisgICAgX19tMjU2aSBfX3Y7DQorICB9IF9fYXR0
cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIHJldHVybiAoKHN0cnVj
dCBfX2xvYWR1X3NpMjU2KilfX3ApLT5fX3Y7DQorfQ0KKw0KKy8vLyBMb2FkcyAyNTYgYml0cyBv
ZiBpbnRlZ2VyIGRhdGEgZnJvbSBhbiB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9uDQorLy8vICAg
IHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAyNTYtYml0IGludGVnZXIgdmVjdG9yLiBUaGlz
IGludHJpbnNpYyBtYXkNCisvLy8gICAgcGVyZm9ybSBiZXR0ZXIgdGhhbiBcYyBfbW0yNTZfbG9h
ZHVfc2kyNTYgd2hlbiB0aGUgZGF0YSBjcm9zc2VzIGEgY2FjaGUNCisvLy8gICAgbGluZSBib3Vu
ZGFyeS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZMRERRVSA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBpbnRlZ2VyIHZhbHVlcy4NCisvLy8gXHJldHVy
bnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4N
CitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbGRk
cXVfc2kyNTYoX19tMjU2aSBjb25zdCAqX19wKQ0KK3sNCisgIHJldHVybiAoX19tMjU2aSlfX2J1
aWx0aW5faWEzMl9sZGRxdTI1NigoY2hhciBjb25zdCAqKV9fcCk7DQorfQ0KKw0KKy8qIFNJTUQg
c3RvcmUgb3BzICovDQorLy8vIFN0b3JlcyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50
IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBkb3VibGVdIHRv
IGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5DQorLy8vICAg
IFxhIF9fcC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIDMyLWJ5dGUgYWxpZ25l
ZCBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQ0KKy8v
LyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2FpbmcgcG9pbnQgdmFsdWVzLg0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcg
dGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW0yNTZfc3RvcmVfcGQoZG91YmxlICpfX3AsIF9fbTI1NmQgX19hKQ0KK3sN
CisgICooX19tMjU2ZCAqKV9fcCA9IF9fYTsNCit9DQorDQorLy8vIFN0b3JlcyBzaW5nbGUtcHJl
Y2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3INCisvLy8g
ICAgb2YgWzggeCBmbG9hdF0gdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHBv
aW50ZWQgdG8gYnkgXGEgX19wLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgMzIt
Ynl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2Vp
dmUgdGhlDQorLy8vICAgIGZsb2F0IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBi
ZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0y
NTZfc3RvcmVfcHMoZmxvYXQgKl9fcCwgX19tMjU2IF9fYSkNCit7DQorICAqKF9fbTI1NiAqKV9f
cCA9IF9fYTsNCit9DQorDQorLy8vIFN0b3JlcyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBv
aW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBkb3VibGVd
IHRvIGFuIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0
aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBkb3VibGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0
aW5nIHBvaW50IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgdmVj
dG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQor
c3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3N0b3JldV9w
ZChkb3VibGUgKl9fcCwgX19tMjU2ZCBfX2EpDQorew0KKyAgc3RydWN0IF9fc3RvcmV1X3BkIHsN
CisgICAgX19tMjU2ZCBfX3Y7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5
X2FsaWFzX18pKTsNCisgICgoc3RydWN0IF9fc3RvcmV1X3BkKilfX3ApLT5fX3YgPSBfX2E7DQor
fQ0KKw0KKy8vLyBTdG9yZXMgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMg
ZnJvbSBhIDI1Ni1iaXQgdmVjdG9yDQorLy8vICAgIG9mIFs4IHggZmxvYXRdIHRvIGFuIHVuYWxp
Z25lZCBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2ls
bCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAy
NTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUg
bW92ZWQuDQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2
X3N0b3JldV9wcyhmbG9hdCAqX19wLCBfX20yNTYgX19hKQ0KK3sNCisgIHN0cnVjdCBfX3N0b3Jl
dV9wcyB7DQorICAgIF9fbTI1NiBfX3Y7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18s
IF9fbWF5X2FsaWFzX18pKTsNCisgICgoc3RydWN0IF9fc3RvcmV1X3BzKilfX3ApLT5fX3YgPSBf
X2E7DQorfQ0KKw0KKy8vLyBTdG9yZXMgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgaW50
ZWdlciB2ZWN0b3IgdG8gYSAzMi1ieXRlDQorLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9u
IHBvaW50ZWQgdG8gYnkgXGEgX19wLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1P
VkRRQSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEg
MzItYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJl
Y2VpdmUgdGhlDQorLy8vICAgIGludGVnZXIgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUg
bW92ZWQuDQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2
X3N0b3JlX3NpMjU2KF9fbTI1NmkgKl9fcCwgX19tMjU2aSBfX2EpDQorew0KKyAgKl9fcCA9IF9f
YTsNCit9DQorDQorLy8vIFN0b3JlcyBpbnRlZ2VyIHZhbHVlcyBmcm9tIGEgMjU2LWJpdCBpbnRl
Z2VyIHZlY3RvciB0byBhbiB1bmFsaWduZWQNCisvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50
ZWQgdG8gYnkgXGEgX19wLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkRRVSA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRl
ciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgaW50ZWdlciB2YWx1
ZXMuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmUgdm9pZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc3RvcmV1X3NpMjU2KF9fbTI1NmkgKl9fcCwgX19t
MjU2aSBfX2EpDQorew0KKyAgc3RydWN0IF9fc3RvcmV1X3NpMjU2IHsNCisgICAgX19tMjU2aSBf
X3Y7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisg
ICgoc3RydWN0IF9fc3RvcmV1X3NpMjU2KilfX3ApLT5fX3YgPSBfX2E7DQorfQ0KKw0KKy8qIENv
bmRpdGlvbmFsIGxvYWQgb3BzICovDQorLy8vIENvbmRpdGlvbmFsbHkgbG9hZHMgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cyBmcm9tIGENCisvLy8gICAgbWVtb3J5IGxv
Y2F0aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8v
LyAgICBbMiB4IGRvdWJsZV0sIGRlcGVuZGluZyBvbiB0aGUgbWFzayBiaXRzIGFzc29jaWF0ZWQg
d2l0aCBlYWNoIGRhdGENCisvLy8gICAgZWxlbWVudC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNQVNLTU9WUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
cA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCBjb250YWlucyB0
aGUgZG91YmxlLXByZWNpc2lvbg0KKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMuDQorLy8v
IFxwYXJhbSBfX20NCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcg
dGhlIG1hc2suIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZg0KKy8vLyAgICBlYWNoIGRhdGEg
ZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzayBiaXQgaXMgemVybywg
dGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBp
cyBub3QgbG9hZGVkIGFuZCB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUg
cmV0dXJuIHZhbHVlIGlzIHNldCB0byB6ZXJvLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLg0KK3N0YXRp
YyBfX2lubGluZSBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV9tYXNrbG9hZF9w
ZChkb3VibGUgY29uc3QgKl9fcCwgX19tMTI4aSBfX20pDQorew0KKyAgcmV0dXJuIChfX20xMjhk
KV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcGQoKGNvbnN0IF9fdjJkZiAqKV9fcCwgKF9fdjJkaSlf
X20pOw0KK30NCisNCisvLy8gQ29uZGl0aW9uYWxseSBsb2FkcyBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nIHBvaW50IGVsZW1lbnRzIGZyb20gYQ0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24gcG9p
bnRlZCB0byBieSBcYSBfX3AgaW50byBhIDI1Ni1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHgg
ZG91YmxlXSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRoIGVhY2gg
ZGF0YQ0KKy8vLyAgICBlbGVtZW50Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1B
U0tNT1ZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAg
IEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBkb3VibGUt
cHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9f
bQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBxdWFkd29yZF0gY29u
dGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3QNCisvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVh
Y2ggcXVhZHdvcmQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGENCisvLy8g
ICAgbWFzayBiaXQgaXMgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG1lbW9y
eSBsb2NhdGlvbiBpcyBub3QNCisvLy8gICAgbG9hZGVkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBm
aWVsZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGlzIHNldCB0byB6ZXJvLg0KKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFs
dWVzLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9tYXNrbG9hZF9wZChkb3VibGUgY29uc3QgKl9fcCwgX19tMjU2aSBfX20pDQorew0KKyAgcmV0
dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcGQyNTYoKGNvbnN0IF9fdjRkZiAq
KV9fcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChf
X3Y0ZGkpX19tKTsNCit9DQorDQorLy8vIENvbmRpdGlvbmFsbHkgbG9hZHMgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZyBwb2ludCBlbGVtZW50cyBmcm9tIGENCisvLy8gICAgbWVtb3J5IGxvY2F0
aW9uIHBvaW50ZWQgdG8gYnkgXGEgX19wIGludG8gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAg
ICBbNCB4IGZsb2F0XSwgZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRo
IGVhY2ggZGF0YQ0KKy8vLyAgICBlbGVtZW50Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVk1BU0tNT1ZQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQor
Ly8vICAgIEEgcG9pbnRlciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBz
aW5nbGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCisvLy8gXHBh
cmFtIF9fbQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
bWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQorLy8vICAgIGVhY2ggZGF0YSBlbGVt
ZW50IHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUN
CisvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIGlzIG5v
dCBsb2FkZWQgYW5kIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSByZXR1
cm4gdmFsdWUgaXMgc2V0IHRvIHplcm8uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZhbHVlcy4NCitzdGF0aWMgX19p
bmxpbmUgX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV9tYXNrbG9hZF9wcyhmbG9h
dCBjb25zdCAqX19wLCBfX20xMjhpIF9fbSkNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0
aW5faWEzMl9tYXNrbG9hZHBzKChjb25zdCBfX3Y0c2YgKilfX3AsIChfX3Y0c2kpX19tKTsNCit9
DQorDQorLy8vIENvbmRpdGlvbmFsbHkgbG9hZHMgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBw
b2ludCBlbGVtZW50cyBmcm9tIGENCisvLy8gICAgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8g
YnkgXGEgX19wIGludG8gYSAyNTYtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbOCB4IGZsb2F0XSwg
ZGVwZW5kaW5nIG9uIHRoZSBtYXNrIGJpdHMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZGF0YQ0KKy8v
LyAgICBlbGVtZW50Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BU0tNT1ZQUyA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRl
ciB0byBhIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBzaW5nbGUtcHJlY2lzaW9u
DQorLy8vICAgIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBkd29yZF0gY29udGFpbmluZyB0aGUg
bWFzay4gVGhlIG1vc3QNCisvLy8gICAgc2lnbmlmaWNhbnQgYml0IG9mIGVhY2ggZHdvcmQgZWxl
bWVudCByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzaw0KKy8vLyAgICBiaXQgaXMg
emVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBpcyBu
b3QgbG9hZGVkDQorLy8vICAgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgcmV0
dXJuIHZhbHVlIGlzIHNldCB0byB6ZXJvLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbWFza2xvYWRfcHMoZmxv
YXQgY29uc3QgKl9fcCwgX19tMjU2aSBfX20pDQorew0KKyAgcmV0dXJuIChfX20yNTYpX19idWls
dGluX2lhMzJfbWFza2xvYWRwczI1NigoY29uc3QgX192OHNmICopX19wLCAoX192OHNpKV9fbSk7
DQorfQ0KKw0KKy8qIENvbmRpdGlvbmFsIHN0b3JlIG9wcyAqLw0KKy8vLyBNb3ZlcyBzaW5nbGUt
cHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMjU2LWJpdCB2ZWN0b3INCisv
Ly8gICAgb2YgWzggeCBmbG9hdF0gdG8gYSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBc
YSBfX3AsIGFjY29yZGluZyB0bw0KKy8vLyAgICB0aGUgc3BlY2lmaWVkIG1hc2suDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9u
IHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQorLy8vIFxwYXJhbSBfX20NCisv
Ly8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggZHdvcmRdIGNvbnRhaW5pbmcg
dGhlIG1hc2suIFRoZSBtb3N0DQorLy8vICAgIHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGR3b3Jk
IGVsZW1lbnQgaW4gdGhlIG1hc2sgdmVjdG9yIHJlcHJlc2VudHMgdGhlDQorLy8vICAgIG1hc2sg
Yml0cy4gSWYgYSBtYXNrIGJpdCBpcyB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9t
IHZlY3Rvcg0KKy8vLyAgICBcYSBfX2EgaXMgbm90IHN0b3JlZCBhbmQgdGhlIGNvcnJlc3BvbmRp
bmcgZmllbGQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbg0KKy8vLyAgICBwb2ludGVkIHRvIGJ5IFxh
IF9fcCBpcyBub3QgY2hhbmdlZC4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQg
dmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQu
DQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X21hc2tz
dG9yZV9wcyhmbG9hdCAqX19wLCBfX20yNTZpIF9fbSwgX19tMjU2IF9fYSkNCit7DQorICBfX2J1
aWx0aW5faWEzMl9tYXNrc3RvcmVwczI1NigoX192OHNmICopX19wLCAoX192OHNpKV9fbSwgKF9f
djhzZilfX2EpOw0KK30NCisNCisvLy8gTW92ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJv
bSBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQ0KKy8vLyAgICB0byBhIG1lbW9yeSBs
b2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQN
CisvLy8gICAgbWFzay4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50
ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVl
cy4NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mDQorLy8vICAgIGVh
Y2ggZmllbGQgaW4gdGhlIG1hc2sgdmVjdG9yIHJlcHJlc2VudHMgdGhlIG1hc2sgYml0cy4gSWYg
YSBtYXNrIGJpdCBpcw0KKy8vLyAgICB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9t
IHZlY3RvciBcYSBfX2EgaXMgbm90IHN0b3JlZCBhbmQgdGhlDQorLy8vICAgIGNvcnJlc3BvbmRp
bmcgZmllbGQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCBpcyBu
b3QNCisvLy8gICAgY2hhbmdlZC4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVk
Lg0KK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV9tYXNr
c3RvcmVfcGQoZG91YmxlICpfX3AsIF9fbTEyOGkgX19tLCBfX20xMjhkIF9fYSkNCit7DQorICBf
X2J1aWx0aW5faWEzMl9tYXNrc3RvcmVwZCgoX192MmRmICopX19wLCAoX192MmRpKV9fbSwgKF9f
djJkZilfX2EpOw0KK30NCisNCisvLy8gTW92ZXMgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJv
bSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXQ0KKy8vLyAgICB0byBhIG1lbW9yeSBs
b2NhdGlvbiBwb2ludGVkIHRvIGJ5IFxhIF9fcCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQN
CisvLy8gICAgbWFzay4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNQVNLTU9WUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50
ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVl
cy4NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBxdWFkd29yZF0gY29udGFpbmluZyB0aGUgbWFzay4gVGhlIG1vc3QNCisvLy8gICAgc2ln
bmlmaWNhbnQgYml0IG9mIGVhY2ggcXVhZHdvcmQgZWxlbWVudCBpbiB0aGUgbWFzayB2ZWN0b3Ig
cmVwcmVzZW50cw0KKy8vLyAgICB0aGUgbWFzayBiaXRzLiBJZiBhIG1hc2sgYml0IGlzIHplcm8s
IHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdmVjdG9yDQorLy8vICAgIF9fYSBpcyBub3Qg
c3RvcmVkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9u
DQorLy8vICAgIHBvaW50ZWQgdG8gYnkgXGEgX19wIGlzIG5vdCBjaGFuZ2VkLg0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lIHZvaWQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tMjU2X21hc2tzdG9yZV9wZChkb3VibGUgKl9fcCwgX19tMjU2aSBf
X20sIF9fbTI1NmQgX19hKQ0KK3sNCisgIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkMjU2KChf
X3Y0ZGYgKilfX3AsIChfX3Y0ZGkpX19tLCAoX192NGRmKV9fYSk7DQorfQ0KKw0KKy8vLyBNb3Zl
cyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2
ZWN0b3INCisvLy8gICAgb2YgWzQgeCBmbG9hdF0gdG8gYSBtZW1vcnkgbG9jYXRpb24gcG9pbnRl
ZCB0byBieSBcYSBfX3AsIGFjY29yZGluZyB0bw0KKy8vLyAgICB0aGUgc3BlY2lmaWVkIG1hc2su
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFTS01PVlBTIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5
IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBmbG9hdCB2YWx1ZXMuDQorLy8vIFxwYXJh
bSBfX20NCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1h
c2suIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZg0KKy8vLyAgICBlYWNoIGZpZWxkIGluIHRo
ZSBtYXNrIHZlY3RvciByZXByZXNlbnRzIHRoZSBtYXNrIGJpdHMuIElmIGEgbWFzayBiaXQgaXMN
CisvLy8gICAgemVybywgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZnJvbSB2ZWN0b3IgX19hIGlz
IG5vdCBzdG9yZWQgYW5kIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHRoZSBt
ZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSBcYSBfX3AgaXMgbm90DQorLy8vICAgIGNoYW5n
ZWQuDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGlu
ZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUzEyOA0KK19tbV9tYXNrc3RvcmVfcHMoZmxvYXQgKl9f
cCwgX19tMTI4aSBfX20sIF9fbTEyOCBfX2EpDQorew0KKyAgX19idWlsdGluX2lhMzJfbWFza3N0
b3JlcHMoKF9fdjRzZiAqKV9fcCwgKF9fdjRzaSlfX20sIChfX3Y0c2YpX19hKTsNCit9DQorDQor
LyogQ2FjaGVhYmlsaXR5IHN1cHBvcnQgb3BzICovDQorLy8vIE1vdmVzIGludGVnZXIgZGF0YSBm
cm9tIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDMyLWJ5dGUNCisvLy8gICAgYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24uIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdn
ZWQgYXMNCisvLy8gICAgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNv
b24pLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5URFEgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1i
eXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZQ0KKy8vLyAg
ICBpbnRlZ2VyIHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KK3N0YXRpYyBf
X2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zdHJlYW1fc2kyNTYoX19t
MjU2aSAqX19hLCBfX20yNTZpIF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICBfX2J1aWx0
aW5faWEzMl9tb3ZudGRxMjU2ICgoX192NGRpICopX19hLCAoX192NGRpKV9fYik7DQorI2Vsc2UN
CisgIHR5cGVkZWYgX192NGRpIF9fdjRkaV9hbGlnbmVkIF9fYXR0cmlidXRlX18oKGFsaWduZWQo
MzIpKSk7DQorICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjRkaV9hbGlnbmVkKV9f
YiwgKF9fdjRkaV9hbGlnbmVkKilfX2EpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gTW92ZXMgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91Ymxl
XQ0KKy8vLyAgICB0byBhIDMyLWJ5dGUgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uIFRvIG1pbmlt
aXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzDQorLy8vICAgIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFs
ICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNvb24pLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVk1PVk5UUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAzMi1ieXRlIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9u
IHRoYXQgd2lsbCByZWNlaXZlIHRoZQ0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDI1Ni1iaXQgdmVjdG9y
IG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQorc3Rh
dGljIF9faW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3N0cmVhbV9wZChk
b3VibGUgKl9fYSwgX19tMjU2ZCBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgX19idWls
dGluX2lhMzJfbW92bnRwZDI1NiAoX19hLCAoX192NGRmKV9fYik7DQorI2Vsc2UNCisgIHR5cGVk
ZWYgX192NGRmIF9fdjRkZl9hbGlnbmVkIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQor
ICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjRkZl9hbGlnbmVkKV9fYiwgKF9fdjRk
Zl9hbGlnbmVkKilfX2EpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gTW92ZXMgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgZnJvbSBhIDI1Ni1iaXQgdmVjdG9yDQorLy8vICAg
IG9mIFs4IHggZmxvYXRdIHRvIGEgMzItYnl0ZSBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gVG8g
bWluaW1pemUNCisvLy8gICAgY2FjaGluZywgdGhlIGRhdGEgaXMgZmxhZ2dlZCBhcyBub24tdGVt
cG9yYWwgKHVubGlrZWx5IHRvIGJlIHVzZWQgYWdhaW4NCisvLy8gICAgc29vbikuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDMyLWJ5dGUgYWxpZ25lZCBt
ZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlDQorLy8vICAgIHNpbmdsZS1wcmVj
aXNpb24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJl
IG1vdmVkLg0KK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1
Nl9zdHJlYW1fcHMoZmxvYXQgKl9fcCwgX19tMjU2IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19f
DQorICBfX2J1aWx0aW5faWEzMl9tb3ZudHBzMjU2IChfX3AsIChfX3Y4c2YpX19hKTsNCisjZWxz
ZQ0KKyAgdHlwZWRlZiBfX3Y4c2YgX192OHNmX2FsaWduZWQgX19hdHRyaWJ1dGVfXygoYWxpZ25l
ZCgzMikpKTsNCisgIF9fYnVpbHRpbl9ub250ZW1wb3JhbF9zdG9yZSgoX192OHNmX2FsaWduZWQp
X19hLCAoX192OHNmX2FsaWduZWQqKV9fcCk7DQorI2VuZGlmDQorfQ0KKw0KKy8qIENyZWF0ZSB2
ZWN0b3JzICovDQorLy8vIENyZWF0ZSBhIDI1Ni1iaXQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSB3
aXRoIHVuZGVmaW5lZCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20y
NTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl91bmRlZmluZWRfcGQodm9pZCkNCit7DQor
I2lmZGVmIF9fR05VQ19fDQorICBfX20yNTZkIF9fWCA9IF9fWDsNCisgIHJldHVybiBfX1g7DQor
I2Vsc2UNCisgIHJldHVybiAoX19tMjU2ZClfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOw0KKyNl
bmRpZg0KK30NCisNCisvLy8gQ3JlYXRlIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0g
d2l0aCB1bmRlZmluZWQgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxv
YXRdIGNvbnRhaW5pbmcgdW5kZWZpbmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3VuZGVmaW5lZF9wcyh2b2lkKQ0KK3sNCisj
aWZkZWYgX19HTlVDX18NCisgIF9fbTI1NiBfX1ggPSBfX1g7DQorICByZXR1cm4gX19YOw0KKyNl
bHNlDQorICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl91bmRlZjI1NigpOw0KKyNlbmRp
Zg0KK30NCisNCisvLy8gQ3JlYXRlIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIHVuZGVm
aW5lZCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHVu
ZGVmaW5lZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMjU2aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW0yNTZfdW5kZWZpbmVkX3NpMjU2KHZvaWQpDQorew0KKyNpZmRlZiBfX0dOVUNf
Xw0KKyAgX19tMjU2aSBfX1ggPSBfX1g7DQorICByZXR1cm4gX19YOw0KKyNlbHNlDQorICByZXR1
cm4gKF9fbTI1NmkpX19idWlsdGluX2lhMzJfdW5kZWYyNTYoKTsNCisjZW5kaWYNCit9DQorDQor
Ly8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0NCisvLy8gICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlVOUENLTFBEK1ZJTlNFUlRGMTI4IDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzI1NToxOTJdDQorLy8vICAgIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTI4XQ0KKy8v
LyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19jDQorLy8vICAgIEEgZG91YmxlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3
OjY0XQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19kDQorLy8vICAgIEEg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbNjM6MF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5p
dGlhbGl6ZWQgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0K
K3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRf
cGQoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYywgZG91YmxlIF9fZCkNCit7DQor
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2ZCl7IF9fZCwgX19jLCBfX2IsIF9fYSB9Ow0K
K30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdIGluaXRpYWxpemVkDQorLy8vICAgIHdpdGggdGhlIHNwZWNpZmllZCBzaW5n
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkg
ZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjIy
NF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIHNp
bmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzIyMzoxOTJdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2MNCisv
Ly8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsxOTE6MTYwXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19kDQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjEyOF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fZQ0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9p
bnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0NCisvLy8gICAgb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fZg0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjY0XQ0KKy8vLyAg
ICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19nDQorLy8vICAgIEEgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJd
DQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2gNCisvLy8gICAgQSBzaW5n
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFszMTowXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFs
aXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4NCitzdGF0
aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRfcHMoZmxv
YXQgX19hLCBmbG9hdCBfX2IsIGZsb2F0IF9fYywgZmxvYXQgX19kLA0KKyAgICAgICAgICAgICAg
ZmxvYXQgX19lLCBmbG9hdCBfX2YsIGZsb2F0IF9fZywgZmxvYXQgX19oKQ0KK3sNCisgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20yNTYpeyBfX2gsIF9fZywgX19mLCBfX2UsIF9fZCwgX19jLCBf
X2IsIF9fYSB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0
b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkDQorLy8vICAgIDMyLWJpdCBpbnRlZ3Jh
bCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3Jy
ZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9faTANCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzI1NToyMjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2kxDQorLy8v
ICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6
MTkyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pMg0KKy8vLyAgICBBIDMyLWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjE2MF0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9faTMNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OToxMjhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxw
YXJhbSBfX2k0DQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFsxMjc6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2k1DQorLy8v
ICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2
NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9faTYNCisvLy8gICAgQSAzMi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19pNw0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMzE6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMg
QW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmUg
X19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0X2VwaTMyKGludCBfX2kwLCBp
bnQgX19pMSwgaW50IF9faTIsIGludCBfX2kzLA0KKyAgICAgICAgICAgICAgICAgaW50IF9faTQs
IGludCBfX2k1LCBpbnQgX19pNiwgaW50IF9faTcpDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9u
X18gKF9fbTI1NmkpKF9fdjhzaSl7IF9faTcsIF9faTYsIF9faTUsIF9faTQsIF9faTMsIF9faTIs
IF9faTEsIF9faTAgfTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIg
dmVjdG9yIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZA0KKy8vLyAgICAxNi1iaXQgaW50
ZWdyYWwgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3Qg
Y29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX3cxNQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMjU1OjI0MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzE0
DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsyMzk6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MTMNCisvLy8gICAgQSAx
Ni1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIyMzoyMDhdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cxMg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjA3OjE5Ml0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fdzExDQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxOTE6MTc2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X193MTANCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzE3NToxNjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwOQ0KKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjE0
NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzA4DQorLy8vICAgIEEgMTYtYml0IGlu
dGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNDM6MTI4XSBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX193MDcNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxw
YXJhbSBfX3cwNg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDUNCisv
Ly8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1
OjgwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDQNCisvLy8gICAgQSAxNi1iaXQg
aW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX193MDMNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX193MDINCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDENCisvLy8g
ICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDANCisvLy8gICAgQSAxNi1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQor
c3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldF9l
cGkxNihzaG9ydCBfX3cxNSwgc2hvcnQgX193MTQsIHNob3J0IF9fdzEzLCBzaG9ydCBfX3cxMiwN
CisgICAgICAgICAgICAgICAgIHNob3J0IF9fdzExLCBzaG9ydCBfX3cxMCwgc2hvcnQgX193MDks
IHNob3J0IF9fdzA4LA0KKyAgICAgICAgICAgICAgICAgc2hvcnQgX193MDcsIHNob3J0IF9fdzA2
LCBzaG9ydCBfX3cwNSwgc2hvcnQgX193MDQsDQorICAgICAgICAgICAgICAgICBzaG9ydCBfX3cw
Mywgc2hvcnQgX193MDIsIHNob3J0IF9fdzAxLCBzaG9ydCBfX3cwMCkNCit7DQorICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMjU2aSkoX192MTZoaSl7IF9fdzAwLCBfX3cwMSwgX193MDIsIF9f
dzAzLCBfX3cwNCwgX193MDUsIF9fdzA2LA0KKyAgICBfX3cwNywgX193MDgsIF9fdzA5LCBfX3cx
MCwgX193MTEsIF9fdzEyLCBfX3cxMywgX193MTQsIF9fdzE1IH07DQorfQ0KKw0KKy8vLyBDb25z
dHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRoIHRoZSBzcGVj
aWZpZWQNCisvLy8gICAgOC1iaXQgaW50ZWdyYWwgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0
eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2IzMQ0KKy8vLyAgICBBbiA4LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjI0OF0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9fYjMwDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNDc6MjQwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iMjkNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzIzOToyMzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyOA0K
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MjMxOjIyNF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjI3DQorLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMjM6MjE2XSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjYNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIxNToyMDhdIG9mIHRoZSByZXN1bHQuDQor
Ly8vIFxwYXJhbSBfX2IyNQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMjA3OjIwMF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
YjI0DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxOTk6MTkyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjMNCisvLy8gICAg
QW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxODRd
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyMg0KKy8vLyAgICBBbiA4LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTgzOjE3Nl0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9fYjIxDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNzU6MTY4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19iMjANCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzE2NzoxNjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxOQ0KKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5
OjE1Ml0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjE4DQorLy8vICAgIEFuIDgtYml0
IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTE6MTQ0XSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTcNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE0MzoxMzZdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBfX2IxNg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTM1OjEyOF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjE1
DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTQNCisvLy8gICAgQW4g
OC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExOToxMTJdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxMw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTExOjEwNF0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fYjEyDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxMDM6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2IxMQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbOTU6ODhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxMA0KKy8vLyAgICBB
biA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbODc6ODBdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwOQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzk6NzJdIG9mIHRoZSByZXN1bHQuDQor
Ly8vIFxwYXJhbSBfX2IwOA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2Iw
Nw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwNg0KKy8vLyAgICBBbiA4
LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNTU6NDhdIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwNQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6NDBdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBfX2IwNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwMw0K
Ky8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBb
MzE6MjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwMg0KKy8vLyAgICBBbiA4LWJp
dCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM6MTZdIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwMQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fYjAwDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldF9lcGk4KGNoYXIgX19iMzEsIGNoYXIgX19iMzAs
IGNoYXIgX19iMjksIGNoYXIgX19iMjgsDQorICAgICAgICAgICAgICAgIGNoYXIgX19iMjcsIGNo
YXIgX19iMjYsIGNoYXIgX19iMjUsIGNoYXIgX19iMjQsDQorICAgICAgICAgICAgICAgIGNoYXIg
X19iMjMsIGNoYXIgX19iMjIsIGNoYXIgX19iMjEsIGNoYXIgX19iMjAsDQorICAgICAgICAgICAg
ICAgIGNoYXIgX19iMTksIGNoYXIgX19iMTgsIGNoYXIgX19iMTcsIGNoYXIgX19iMTYsDQorICAg
ICAgICAgICAgICAgIGNoYXIgX19iMTUsIGNoYXIgX19iMTQsIGNoYXIgX19iMTMsIGNoYXIgX19i
MTIsDQorICAgICAgICAgICAgICAgIGNoYXIgX19iMTEsIGNoYXIgX19iMTAsIGNoYXIgX19iMDks
IGNoYXIgX19iMDgsDQorICAgICAgICAgICAgICAgIGNoYXIgX19iMDcsIGNoYXIgX19iMDYsIGNo
YXIgX19iMDUsIGNoYXIgX19iMDQsDQorICAgICAgICAgICAgICAgIGNoYXIgX19iMDMsIGNoYXIg
X19iMDIsIGNoYXIgX19iMDEsIGNoYXIgX19iMDApDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9u
X18gKF9fbTI1NmkpKF9fdjMycWkpew0KKyAgICBfX2IwMCwgX19iMDEsIF9fYjAyLCBfX2IwMywg
X19iMDQsIF9fYjA1LCBfX2IwNiwgX19iMDcsDQorICAgIF9fYjA4LCBfX2IwOSwgX19iMTAsIF9f
YjExLCBfX2IxMiwgX19iMTMsIF9fYjE0LCBfX2IxNSwNCisgICAgX19iMTYsIF9fYjE3LCBfX2Ix
OCwgX19iMTksIF9fYjIwLCBfX2IyMSwgX19iMjIsIF9fYjIzLA0KKyAgICBfX2IyNCwgX19iMjUs
IF9fYjI2LCBfX2IyNywgX19iMjgsIF9fYjI5LCBfX2IzMCwgX19iMzENCisgIH07DQorfQ0KKw0K
Ky8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBpbml0aWFsaXplZCB3aXRo
IHRoZSBzcGVjaWZpZWQNCisvLy8gICAgNjQtYml0IGludGVncmFsIHZhbHVlcy4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURRK1ZJTlNFUlRGMTI4IDwvYz4NCisvLy8g
ICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1
c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjEyOF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fYw0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbMTI3OjY0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19kDQorLy8vICAg
IEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzowXSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVn
ZXIgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbTI1Nl9zZXRfZXBpNjR4KGxvbmcgbG9uZyBfX2EsIGxvbmcgbG9uZyBfX2IsIGxvbmcgbG9u
ZyBfX2MsIGxvbmcgbG9uZyBfX2QpDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTI1
NmkpKF9fdjRkaSl7IF9fZCwgX19jLCBfX2IsIF9fYSB9Ow0KK30NCisNCisvKiBDcmVhdGUgdmVj
dG9ycyB3aXRoIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXIgKi8NCisvLy8gQ29uc3RydWN0cyBh
IDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSwNCisvLy8gICAg
aW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoIHRoZSBzcGVjaWZpZWQgZG91YmxlLXBy
ZWNpc2lvbg0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQrVklOU0VSVEYxMjggPC9jPg0KKy8vLyAgIGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MF0NCisvLy8g
ICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIGRvdWJsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo2
NF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYw0KKy8vLyAgICBBIGRv
dWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzE5MToxMjhdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2QNCisv
Ly8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFsyNTU6MTkyXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0
dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGRvdWJsZV0uDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tMjU2X3NldHJfcGQoZG91YmxlIF9fYSwgZG91YmxlIF9fYiwgZG91YmxlIF9fYywgZG91Ymxl
IF9fZCkNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9wZChfX2QsIF9fYywgX19iLCBfX2EpOw0K
K30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs4IHggZmxvYXRdLA0KKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdpdGgg
dGhlIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0LXBvaW50IHZhbHVl
cy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQg
dG8gYSBzcGVjaWZpYw0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRv
IGluaXRpYWxpemUgYml0cyBbMzE6MF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjMyXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19jDQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2lu
dCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6NjRdDQorLy8vICAgIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2QNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6OTZdDQorLy8vICAg
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2UNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTI4
XQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19mDQorLy8vICAgIEEgc2lu
Z2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMTkxOjE2MF0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fZw0KKy8v
LyAgICBBIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzIyMzoxOTJdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJh
bSBfX2gNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjI0XQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbOCB4IGZsb2F0XS4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbTI1Nl9zZXRyX3BzKGZsb2F0IF9fYSwgZmxvYXQgX19iLCBmbG9hdCBfX2MsIGZs
b2F0IF9fZCwNCisgICAgICAgICAgICAgICBmbG9hdCBfX2UsIGZsb2F0IF9fZiwgZmxvYXQgX19n
LCBmbG9hdCBfX2gpDQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfcHMoX19oLCBfX2csIF9fZiwg
X19lLCBfX2QsIF9fYywgX19iLCBfX2EpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXINCisvLy8gICAg
d2l0aCB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1
dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisv
Ly8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9faTANCisvLy8gICAgQSAzMi1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjBdIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2kxDQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2MzozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBh
cmFtIF9faTINCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzk1OjY0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pMw0KKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTI3Ojk2
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pNA0KKy8vLyAgICBBIDMyLWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU5OjEyOF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9faTUNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxNjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJh
bSBfX2k2DQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsyMjM6MTkyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19pNw0KKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjIy
NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBp
bnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW0yNTZfc2V0cl9lcGkzMihpbnQgX19pMCwgaW50IF9faTEsIGludCBfX2kyLCBpbnQg
X19pMywNCisgICAgICAgICAgICAgICAgICBpbnQgX19pNCwgaW50IF9faTUsIGludCBfX2k2LCBp
bnQgX19pNykNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9lcGkzMihfX2k3LCBfX2k2LCBfX2k1
LCBfX2k0LCBfX2kzLCBfX2kyLCBfX2kxLCBfX2kwKTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMg
YSAyNTYtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQor
Ly8vICAgIHdpdGggdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdyYWwgdmFsdWVzLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNp
ZmljDQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cxNQ0KKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6MF0g
b2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzE0DQorLy8vICAgIEEgMTYtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fdzEzDQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
dzEyDQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzExDQorLy8vICAgIEEg
MTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2Yg
dGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzEwDQorLy8vICAgIEEgMTYtYml0IGludGVncmFs
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHBhcmFtIF9fdzA5DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cw
OA0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMTI3OjExMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzA3DQorLy8vICAgIEEg
MTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNDM6MTI4XSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDYNCisvLy8gICAgQSAxNi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OToxNDRdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX3cwNQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMTc1OjE2MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fdzA0DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFsxOTE6MTc2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193MDMNCisvLy8g
ICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIwNzox
OTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cwMg0KKy8vLyAgICBBIDE2LWJpdCBp
bnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjIwOF0gb2YgdGhlIHJl
c3VsdC4NCisvLy8gXHBhcmFtIF9fdzAxDQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyMzk6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX193MDANCisvLy8gICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzI1NToyNDBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGlu
aXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorc3RhdGljIF9faW5saW5lIF9fbTI1
NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldHJfZXBpMTYoc2hvcnQgX193MTUsIHNo
b3J0IF9fdzE0LCBzaG9ydCBfX3cxMywgc2hvcnQgX193MTIsDQorICAgICAgIHNob3J0IF9fdzEx
LCBzaG9ydCBfX3cxMCwgc2hvcnQgX193MDksIHNob3J0IF9fdzA4LA0KKyAgICAgICBzaG9ydCBf
X3cwNywgc2hvcnQgX193MDYsIHNob3J0IF9fdzA1LCBzaG9ydCBfX3cwNCwNCisgICAgICAgc2hv
cnQgX193MDMsIHNob3J0IF9fdzAyLCBzaG9ydCBfX3cwMSwgc2hvcnQgX193MDApDQorew0KKyAg
cmV0dXJuIF9tbTI1Nl9zZXRfZXBpMTYoX193MDAsIF9fdzAxLCBfX3cwMiwgX193MDMsDQorICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3cwNCwgX193MDUsIF9fdzA2LCBfX3cwNywNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdzA4LCBfX3cwOSwgX193MTAsIF9fdzExLA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgX193MTIsIF9fdzEzLCBfX3cxNCwgX193MTUpOw0KK30NCisN
CisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGlu
IHJldmVyc2Ugb3JkZXINCisvLy8gICAgd2l0aCB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVncmFs
IHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJl
c3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19iMzENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFs
aXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjMwDQorLy8vICAg
IEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjkNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19iMjgNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19i
MjcNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzM5OjMyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjYNCisvLy8gICAgQW4g
OC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjUNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gX19iMjQNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBp
bml0aWFsaXplIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjMN
CisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMg
WzcxOjY0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjINCisvLy8gICAgQW4gOC1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjcyXSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMjENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzg3OjgwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iMjANCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzk1Ojg4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTkNCisv
Ly8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEw
Mzo5Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjE4DQorLy8vICAgIEFuIDgtYml0
IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6MTA0XSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTcNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBfX2IxNg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbMTI3OjEyMF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjE1
DQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRz
IFsxMzU6MTI4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMTQNCisvLy8gICAgQW4g
OC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE0MzoxMzZdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxMw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTUxOjE0NF0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fYjEyDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTk6MTUyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X19iMTENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGJpdHMgWzE2NzoxNjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxMA0KKy8vLyAg
ICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTc1OjE2
OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA5DQorLy8vICAgIEFuIDgtYml0IGlu
dGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxODM6MTc2XSBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX19iMDgNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE5MToxODRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxw
YXJhbSBfX2IwNw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbMTk5OjE5Ml0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjA2DQor
Ly8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsy
MDc6MjAwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMDUNCisvLy8gICAgQW4gOC1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIxNToyMDhdIG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjIzOjIxNl0gb2YgdGhlIHJlc3VsdC4NCisv
Ly8gXHBhcmFtIF9fYjAzDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBiaXRzIFsyMzE6MjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19i
MDINCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzIzOToyMzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IwMQ0KKy8vLyAgICBB
biA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjQ3OjI0MF0g
b2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjAwDQorLy8vICAgIEFuIDgtYml0IGludGVn
cmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsyNTU6MjQ4XSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0K
K3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRy
X2VwaTgoY2hhciBfX2IzMSwgY2hhciBfX2IzMCwgY2hhciBfX2IyOSwgY2hhciBfX2IyOCwNCisg
ICAgICAgICAgICAgICAgIGNoYXIgX19iMjcsIGNoYXIgX19iMjYsIGNoYXIgX19iMjUsIGNoYXIg
X19iMjQsDQorICAgICAgICAgICAgICAgICBjaGFyIF9fYjIzLCBjaGFyIF9fYjIyLCBjaGFyIF9f
YjIxLCBjaGFyIF9fYjIwLA0KKyAgICAgICAgICAgICAgICAgY2hhciBfX2IxOSwgY2hhciBfX2Ix
OCwgY2hhciBfX2IxNywgY2hhciBfX2IxNiwNCisgICAgICAgICAgICAgICAgIGNoYXIgX19iMTUs
IGNoYXIgX19iMTQsIGNoYXIgX19iMTMsIGNoYXIgX19iMTIsDQorICAgICAgICAgICAgICAgICBj
aGFyIF9fYjExLCBjaGFyIF9fYjEwLCBjaGFyIF9fYjA5LCBjaGFyIF9fYjA4LA0KKyAgICAgICAg
ICAgICAgICAgY2hhciBfX2IwNywgY2hhciBfX2IwNiwgY2hhciBfX2IwNSwgY2hhciBfX2IwNCwN
CisgICAgICAgICAgICAgICAgIGNoYXIgX19iMDMsIGNoYXIgX19iMDIsIGNoYXIgX19iMDEsIGNo
YXIgX19iMDApDQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpOChfX2IwMCwgX19iMDEsIF9f
YjAyLCBfX2IwMywgX19iMDQsIF9fYjA1LCBfX2IwNiwgX19iMDcsDQorICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fYjA4LCBfX2IwOSwgX19iMTAsIF9fYjExLCBfX2IxMiwgX19iMTMsIF9fYjE0
LCBfX2IxNSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgX19iMTYsIF9fYjE3LCBfX2IxOCwg
X19iMTksIF9fYjIwLCBfX2IyMSwgX19iMjIsIF9fYjIzLA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2IyNCwgX19iMjUsIF9fYjI2LCBfX2IyNywgX19iMjgsIF9fYjI5LCBfX2IzMCwgX19i
MzEpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IsIGlu
aXRpYWxpemVkIGluIHJldmVyc2Ugb3JkZXINCisvLy8gICAgd2l0aCB0aGUgc3BlY2lmaWVkIDY0
LWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVO
UENLTFFEUStWSU5TRVJURjEyOCA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0
aWFsaXplIGJpdHMgWzYzOjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSA2NC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo2
NF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYw0KKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTkxOjEyOF0gb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9fZA0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbMjU1OjE5Ml0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxp
bmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0cl9lcGk2NHgobG9uZyBs
b25nIF9fYSwgbG9uZyBsb25nIF9fYiwgbG9uZyBsb25nIF9fYywgbG9uZyBsb25nIF9fZCkNCit7
DQorICByZXR1cm4gX21tMjU2X3NldF9lcGk2NHgoX19kLCBfX2MsIF9fYiwgX19hKTsNCit9DQor
DQorLyogQ3JlYXRlIHZlY3RvcnMgd2l0aCByZXBlYXRlZCBlbGVtZW50cyAqLw0KKy8vLyBDb25z
dHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLCB3
aXRoIGVhY2gNCisvLy8gICAgb2YgdGhlIGZvdXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgZG91Ymxl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZNT1ZERFVQK1ZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX3cNCisvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3Rvcg0KKy8vLyAgICBlbGVtZW50IG9mIHRo
ZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0MV9wZChkb3VibGUgX193KQ0KK3sNCisgIHJl
dHVybiBfbW0yNTZfc2V0X3BkKF9fdywgX193LCBfX3csIF9fdyk7DQorfQ0KKw0KKy8vLyBDb25z
dHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0sIHdp
dGggZWFjaA0KKy8vLyAgICBvZiB0aGUgZWlnaHQgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgc2luZ2xl
LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQRVJNSUxQUytWSU5TRVJURjEyOCA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3Rvcg0KKy8vLyAgICBlbGVt
ZW50IG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KK3N0YXRpYyBfX2lubGluZSBf
X20yNTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldDFfcHMoZmxvYXQgX193KQ0KK3sN
CisgIHJldHVybiBfbW0yNTZfc2V0X3BzKF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9f
dywgX193KTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs4IHggaTMyXSwgd2l0aCBlYWNoIG9mIHRoZQ0KKy8vLyAgICAzMi1iaXQgaW50ZWdyYWwg
dmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ3JhbA0KKy8v
LyAgICB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVJNSUxQUytWSU5T
RVJURjEyOCA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2kN
CisvLy8gICAgQSAzMi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2gg
dmVjdG9yIGVsZW1lbnQgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkzMl0uDQorc3RhdGlj
IF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldDFfZXBpMzIo
aW50IF9faSkNCit7DQorICByZXR1cm4gX21tMjU2X3NldF9lcGkzMihfX2ksIF9faSwgX19pLCBf
X2ksIF9faSwgX19pLCBfX2ksIF9faSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbMTYgeCBpMTZdLCB3aXRoIGVhY2ggb2YgdGhlDQorLy8vICAg
IDE2LWJpdCBpbnRlZ3JhbCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVjaWZpZWQgMTYt
Yml0IGludGVncmFsDQorLy8vICAgIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVlBTSFVGQitWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX193DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1
cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaTE2XS4N
CitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0
MV9lcGkxNihzaG9ydCBfX3cpDQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpMTYoX193LCBf
X3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3csIF9fdywgX193LCBfX3csIF9fdywgX193LCBfX3csIF9fdyk7DQorfQ0KKw0KKy8v
LyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMzIgeCBpOF0sIHdpdGgg
ZWFjaCBvZiB0aGUNCisvLy8gICAgOC1iaXQgaW50ZWdyYWwgdmVjdG9yIGVsZW1lbnRzIHNldCB0
byB0aGUgc3BlY2lmaWVkIDgtYml0IGludGVncmFsIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBTSFVGQitWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQor
Ly8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzMy
IHggaThdLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bTI1Nl9zZXQxX2VwaTgoY2hhciBfX2IpDQorew0KKyAgcmV0dXJuIF9tbTI1Nl9zZXRfZXBpOChf
X2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsDQorICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19i
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19i
LCBfX2IsIF9fYik7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGk2NF0sIHdpdGggZWFjaCBvZiB0aGUNCisvLy8gICAgNjQtYml0IGludGVn
cmFsIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmllZCA2NC1iaXQgaW50ZWdyYWwN
CisvLy8gICAgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WRERVUCtW
SU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19xDQorLy8v
ICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3Rv
ciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRp
YWxpemVkIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpNjRdLg0KK3N0YXRpYyBfX2lu
bGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXQxX2VwaTY0eChsb25n
IGxvbmcgX19xKQ0KK3sNCisgIHJldHVybiBfbW0yNTZfc2V0X2VwaTY0eChfX3EsIF9fcSwgX19x
LCBfX3EpOw0KK30NCisNCisvKiBDcmVhdGUgX196ZXJvZWQgdmVjdG9ycyAqLw0KKy8vLyBDb25z
dHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIHdp
dGggYWxsDQorLy8vICAgIHZlY3RvciBlbGVtZW50cyBpbml0aWFsaXplZCB0byB6ZXJvLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIHdpdGggYWxs
IGVsZW1lbnRzIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbTI1Nl9zZXR6ZXJvX3BkKHZvaWQpDQorew0KKyAgcmV0dXJuIF9fZXh0
ZW5zaW9uX18gKF9fbTI1NmQpeyAwLCAwLCAwLCAwIH07DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3Rz
IGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gd2l0aCBhbGwN
CisvLy8gICAgdmVjdG9yIGVsZW1lbnRzIGluaXRpYWxpemVkIHRvIHplcm8uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHJldHVybnMgQSAyNTYtYml0IHZlY3RvciBvZiBbOCB4IGZsb2F0XSB3aXRoIGFsbCBlbGVtZW50
cyBzZXQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9zZXR6ZXJvX3BzKHZvaWQpDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18g
KF9fbTI1Nil7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsNCit9DQorDQorLy8vIENvbnN0cnVj
dHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHRvIHplcm8uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHRvIHplcm8u
DQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3Nl
dHplcm9fc2kyNTYodm9pZCkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMjU2aSko
X192NGRpKXsgMCwgMCwgMCwgMCB9Ow0KK30NCisNCisvKiBDYXN0IGJldHdlZW4gdmVjdG9yIHR5
cGVzICovDQorLy8vIENhc3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQg
eCBkb3VibGVdIGludG8gYSAyNTYtYml0DQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQg
dmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzYW1lDQorLy8vICAg
IGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZSBfX20y
NTYgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3RwZF9wcyhfX20yNTZkIF9fYSkNCit7
DQorICByZXR1cm4gKF9fbTI1NilfX2E7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDI1Ni1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBpbnRvIGEgMjU2LWJpdA0KKy8vLyAg
ICBpbnRlZ2VyIHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhbWUgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZQ0KKy8v
LyAgICBwYXJhbWV0ZXIuDQorc3RhdGljIF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tMjU2X2Nhc3RwZF9zaTI1NihfX20yNTZkIF9fYSkNCit7DQorICByZXR1cm4gKF9f
bTI1NmkpX19hOw0KK30NCisNCisvLy8gQ2FzdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbOCB4IGZsb2F0XSBpbnRvIGEgMjU2LWJpdA0KKy8vLyAgICBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNh
bWUNCisvLy8gICAgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQorc3RhdGljIF9f
aW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2Nhc3Rwc19wZChfX20y
NTYgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZClfX2E7DQorfQ0KKw0KKy8vLyBDYXN0cyBh
IDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGludG8gYSAyNTYt
Yml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5n
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBm
bG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMjU2
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdpc2UgcGF0dGVybiBh
cyB0aGUNCisvLy8gICAgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZpIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jYXN0cHNfc2kyNTYoX19tMjU2IF9fYSkNCit7DQorICBy
ZXR1cm4gKF9fbTI1NmkpX19hOw0KK30NCisNCisvLy8gQ2FzdHMgYSAyNTYtYml0IGludGVnZXIg
dmVjdG9yIGludG8gYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KKy8vLyAgICBvZiBb
OCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQor
Ly8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgc2FtZQ0KKy8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBh
cmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bTI1Nl9jYXN0c2kyNTZfcHMoX19tMjU2aSBfX2EpDQorew0KKyAgcmV0dXJuIChfX20yNTYpX19h
Ow0KK30NCisNCisvLy8gQ2FzdHMgYSAyNTYtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSAyNTYt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGRvdWJsZV0uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDI1
Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBzYW1lDQorLy8vICAgIGJpdHdpc2UgcGF0dGVybiBhcyB0aGUgcGFyYW1ldGVyLg0KK3N0YXRp
YyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jYXN0c2kyNTZf
cGQoX19tMjU2aSBfX2EpDQorew0KKyAgcmV0dXJuIChfX20yNTZkKV9fYTsNCit9DQorDQorLy8v
IFJldHVybnMgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2
ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBkb3VibGVdIGFzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZQ0K
Ky8vLyAgICBsb3dlciAxMjggYml0cyBvZiB0aGUgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGlu
ZSBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jYXN0cGQyNTZfcGQxMjgoX19t
MjU2ZCBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhkKSBfX2J1
aWx0aW5faWEzMl9wZF9wZDI1NiAoKF9fdjRkZilfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gX19i
dWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRkZilfX2EsIChfX3Y0ZGYpX19hLCAwLCAxKTsNCisj
ZW5kaWYNCit9DQorDQorLy8vIFJldHVybnMgdGhlIGxvd2VyIDEyOCBiaXRzIG9mIGEgMjU2LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YNCisvLy8gICAgWzggeCBmbG9hdF0gYXMgYSAxMjgt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8g
Y29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNv
bnRhaW5pbmcgdGhlDQorLy8vICAgIGxvd2VyIDEyOCBiaXRzIG9mIHRoZSBwYXJhbWV0ZXIuDQor
c3RhdGljIF9faW5saW5lIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfY2FzdHBz
MjU2X3BzMTI4KF9fbTI1NiBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChf
X20xMjgpIF9fYnVpbHRpbl9pYTMyX3BzX3BzMjU2ICgoX192OHNmKV9fYSk7DQorI2Vsc2UNCisg
IHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OHNmKV9fYSwgKF9fdjhzZilfX2Es
IDAsIDEsIDIsIDMpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVHJ1bmNhdGVzIGEgMjU2LWJpdCBp
bnRlZ2VyIHZlY3RvciBpbnRvIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMg
bm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUNCisvLy8g
ICAgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9jYXN0c2kyNTZfc2kxMjgoX19tMjU2aSBfX2EpDQorew0KKyNpZmRlZiBfX0dO
VUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9zaV9zaTI1NiAoKF9fdjhz
aSlfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRk
aSlfX2EsIChfX3Y0ZGkpX19hLCAwLCAxKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnN0cnVj
dHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gZnJvbSBh
DQorLy8vICAgIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
CisvLy8NCisvLy8gICAgVGhlIGxvd2VyIDEyOCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRo
ZSBzb3VyY2UgdmVjdG9yLiBUaGUgY29udGVudHMNCisvLy8gICAgb2YgdGhlIHVwcGVyIDEyOCBi
aXRzIGFyZSB1bmRlZmluZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBkb3VibGVdLiBUaGUgbG93ZXIgMTI4IGJpdHMNCisvLy8gICAgY29udGFpbiB0
aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4gVGhlIGNvbnRlbnRzIG9mIHRoZSB1cHBlciAxMjgg
Yml0cw0KKy8vLyAgICBhcmUgdW5kZWZpbmVkLg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jYXN0cGQxMjhfcGQyNTYoX19tMTI4ZCBfX2EpDQor
ew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTZkKSBfX2J1aWx0aW5faWEzMl9w
ZDI1Nl9wZCAoKF9fdjJkZilfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX3NodWZm
bGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYpX19hLCAwLCAxLCAtMSwgLTEpOw0KKyNlbmRp
Zg0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9y
IG9mIFs4IHggZmxvYXRdIGZyb20gYQ0KKy8vLyAgICAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gICAgVGhlIGxvd2VyIDEyOCBiaXRzIGNv
bnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2UgdmVjdG9yLiBUaGUgY29udGVudHMNCisvLy8g
ICAgb2YgdGhlIHVwcGVyIDEyOCBiaXRzIGFyZSB1bmRlZmluZWQuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaGFzIG5vIGNv
cnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0
IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbOCB4IGZsb2F0XS4gVGhlIGxvd2VyIDEyOCBiaXRz
DQorLy8vICAgIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSBjb250ZW50
cyBvZiB0aGUgdXBwZXIgMTI4IGJpdHMNCisvLy8gICAgYXJlIHVuZGVmaW5lZC4NCitzdGF0aWMg
X19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jYXN0cHMxMjhfcHMy
NTYoX19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTI1Nikg
X19idWlsdGluX2lhMzJfcHMyNTZfcHMgKChfX3Y0c2YpX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJu
IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgMCwgMSwg
MiwgMywgLTEsIC0xLCAtMSwgLTEpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gQ29uc3RydWN0cyBh
IDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgZnJvbSBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQor
Ly8vDQorLy8vICAgIFRoZSBsb3dlciAxMjggYml0cyBjb250YWluIHRoZSB2YWx1ZSBvZiB0aGUg
c291cmNlIHZlY3Rvci4gVGhlIGNvbnRlbnRzDQorLy8vICAgIG9mIHRoZSB1cHBlciAxMjggYml0
cyBhcmUgdW5kZWZpbmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ci4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgMTI4
IGJpdHMgY29udGFpbiB0aGUgdmFsdWUgb2YNCisvLy8gICAgdGhlIHBhcmFtZXRlci4gVGhlIGNv
bnRlbnRzIG9mIHRoZSB1cHBlciAxMjggYml0cyBhcmUgdW5kZWZpbmVkLg0KK3N0YXRpYyBfX2lu
bGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9jYXN0c2kxMjhfc2kyNTYo
X19tMTI4aSBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20yNTZpKSBf
X2J1aWx0aW5faWEzMl9zaTI1Nl9zaSAoKF9fdjRzaSlfX2EpOw0KKyNlbHNlDQorICByZXR1cm4g
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19hLCAwLCAxLCAt
MSwgLTEpOw0KKyNlbmRpZg0KK30NCisNCisvKg0KKyAgIFZlY3RvciBpbnNlcnQuDQorICAgV2Ug
dXNlIG1hY3JvcyByYXRoZXIgdGhhbiBpbmxpbmVzIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGFj
Y2VwdA0KKyAgIGludm9jYXRpb25zIHdoZXJlIHRoZSBpbW1lZGlhdGUgTSBpcyBhIGNvbnN0YW50
IGV4cHJlc3Npb24uDQorKi8NCisvLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYtYml0IHZlY3RvciBv
ZiBbOCB4IGZsb2F0XSBieSBmaXJzdCBkdXBsaWNhdGluZw0KKy8vLyAgICBhIDI1Ni1iaXQgdmVj
dG9yIG9mIFs4IHggZmxvYXRdIGdpdmVuIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIsIGFuZCB0aGVu
DQorLy8vICAgIHJlcGxhY2luZyBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0
cyB3aXRoIHRoZSBjb250ZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgaW1tZWRp
YXRlIGludGVnZXIgcGFyYW1ldGVyIGRldGVybWluZXMgYmV0d2VlbiB0aGUgdXBwZXIgb3IgdGhl
IGxvd2VyDQorLy8vICAgIDEyOCBiaXRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTI1NiBfbW0yNTZfaW5zZXJ0ZjEyOF9w
cyhfX20yNTYgVjEsIF9fbTEyOCBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8vLyAgICBBIDI1Ni1i
aXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLiBUaGlzIHZlY3RvciBpcyBjb3BpZWQgdG8gdGhlIHJl
c3VsdA0KKy8vLyAgICBmaXJzdCwgYW5kIHRoZW4gZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93
ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCB3aWxsDQorLy8vICAgIGJlIHJlcGxhY2VkIGJ5IHRo
ZSBjb250ZW50cyBvZiBcYSBWMi4NCisvLy8gXHBhcmFtIFYyDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBjb250ZW50cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUN
CisvLy8gICAgd3JpdHRlbiB0byBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0
cyBvZiB0aGUgcmVzdWx0IGRlcGVuZGluZw0KKy8vLyAgICBvbiB0aGUgdmFsdWUgb2YgcGFyYW1l
dGVyIFxhIE0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBU
aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRldGVybWluZXMgaG93IHRoZSB2YWx1ZXMNCisvLy8g
ICAgZnJvbSB0aGUgdHdvIHBhcmFtZXRlcnMgYXJlIGludGVybGVhdmVkOiBcbg0KKy8vLyAgICBJ
ZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0g
b2YgdGhlIHJlc3VsdCwNCisvLy8gICAgYW5kIGJpdHMgWzI1NToxMjhdIG9mIFxhIFYxIGFyZSBj
b3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIHJlc3VsdC4gXG4NCisvLy8g
ICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1
OjEyOF0gb2YgdGhlDQorLy8vICAgIHJlc3VsdCwgYW5kIGJpdHMgWzEyNzowXSBvZiBcYSBWMSBh
cmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUNCisvLy8gICAgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGlu
dGVybGVhdmVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbTI1Nl9pbnNlcnRmMTI4X3BzKFYxLCBWMiwg
TSkgXA0KKyAgKF9fbTI1NilfX2J1aWx0aW5faWEzMl92aW5zZXJ0ZjEyOF9wczI1NigoX192OHNm
KShfX20yNTYpKFYxKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoX192NHNmKShfX20xMjgpKFYyKSwgKGludCkoTSkpDQorDQorLy8vIENvbnN0cnVjdHMg
YSBuZXcgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGJ5IGZpcnN0IGR1cGxpY2F0aW5n
DQorLy8vICAgIGEgMjU2LWJpdCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdIGdpdmVuIGluIHRoZSBm
aXJzdCBwYXJhbWV0ZXIsIGFuZCB0aGVuDQorLy8vICAgIHJlcGxhY2luZyBlaXRoZXIgdGhlIHVw
cGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyB3aXRoIHRoZSBjb250ZW50cyBvZiBhDQorLy8vICAg
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4N
CisvLy8NCisvLy8gICAgVGhlIGltbWVkaWF0ZSBpbnRlZ2VyIHBhcmFtZXRlciBkZXRlcm1pbmVz
IGJldHdlZW4gdGhlIHVwcGVyIG9yIHRoZSBsb3dlcg0KKy8vLyAgICAxMjggYml0cy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBf
X20yNTZkIF9tbTI1Nl9pbnNlcnRmMTI4X3BkKF9fbTI1NmQgVjEsIF9fbTEyOGQgVjIsIGNvbnN0
IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gVjENCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uIFRo
aXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUgcmVzdWx0DQorLy8vICAgIGZpcnN0LCBhbmQgdGhl
biBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IHdp
bGwNCisvLy8gICAgYmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFxhIFYyLg0KKy8vLyBc
cGFyYW0gVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBj
b250ZW50cyBvZiB0aGlzIHBhcmFtZXRlciBhcmUNCisvLy8gICAgd3JpdHRlbiB0byBlaXRoZXIg
dGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVzdWx0IGRlcGVuZGluZw0K
Ky8vLyAgICBvbiB0aGUgdmFsdWUgb2YgcGFyYW1ldGVyIFxhIE0uDQorLy8vIFxwYXJhbSBNDQor
Ly8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRl
dGVybWluZXMgaG93IHRoZSB2YWx1ZXMNCisvLy8gICAgZnJvbSB0aGUgdHdvIHBhcmFtZXRlcnMg
YXJlIGludGVybGVhdmVkOiBcbg0KKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMCwgXGEg
VjIgYXJlIGNvcGllZCB0byBiaXRzIFsxMjc6MF0gb2YgdGhlIHJlc3VsdCwNCisvLy8gICAgYW5k
IGJpdHMgWzI1NToxMjhdIG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2Yg
dGhlDQorLy8vICAgIHJlc3VsdC4gXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEs
IFxhIFYyIGFyZSBjb3BpZWQgdG8gYml0cyBbMjU1OjEyOF0gb2YgdGhlDQorLy8vICAgIHJlc3Vs
dCwgYW5kIGJpdHMgWzEyNzowXSBvZiBcYSBWMSBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBv
ZiB0aGUNCisvLy8gICAgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgdmVjdG9yIG9m
IFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorI2RlZmlu
ZSBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChWMSwgVjIsIE0pIFwNCisgIChfX20yNTZkKV9fYnVpbHRp
bl9pYTMyX3ZpbnNlcnRmMTI4X3BkMjU2KChfX3Y0ZGYpKF9fbTI1NmQpKFYxKSwgXA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJkZikoX19tMTI4ZCko
VjIpLCAoaW50KShNKSkNCisNCisvLy8gQ29uc3RydWN0cyBhIG5ldyAyNTYtYml0IGludGVnZXIg
dmVjdG9yIGJ5IGZpcnN0IGR1cGxpY2F0aW5nIGENCisvLy8gICAgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3RvciBnaXZlbiBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyLCBhbmQgdGhlbiByZXBsYWNpbmcNCisv
Ly8gICAgZWl0aGVyIHRoZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgd2l0aCB0aGUgY29u
dGVudHMgb2YgYSAxMjgtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIGluIHRoZSBzZWNvbmQg
cGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVy
IGRldGVybWluZXMgYmV0d2VlbiB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyDQorLy8vICAgIDEyOCBi
aXRzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxj
b2RlDQorLy8vIF9fbTI1NmkgX21tMjU2X2luc2VydGYxMjhfc2kyNTYoX19tMjU2aSBWMSwgX19t
MTI4aSBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0
b3IuIFRoaXMgdmVjdG9yIGlzIGNvcGllZCB0byB0aGUgcmVzdWx0IGZpcnN0LCBhbmQNCisvLy8g
ICAgdGhlbiBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUgcmVz
dWx0IHdpbGwgYmUNCisvLy8gICAgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFxhIFYyLg0K
Ky8vLyBccGFyYW0gVjINCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgY29u
dGVudHMgb2YgdGhpcyBwYXJhbWV0ZXIgYXJlIHdyaXR0ZW4gdG8NCisvLy8gICAgZWl0aGVyIHRo
ZSB1cHBlciBvciB0aGUgbG93ZXIgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdCBkZXBlbmRpbmcgb24g
dGhlDQorLy8vICAgICB2YWx1ZSBvZiBwYXJhbWV0ZXIgXGEgTS4NCisvLy8gXHBhcmFtIE0NCisv
Ly8gICAgQW4gaW1tZWRpYXRlIGludGVnZXIuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgZGV0
ZXJtaW5lcyBob3cgdGhlIHZhbHVlcw0KKy8vLyAgICBmcm9tIHRoZSB0d28gcGFyYW1ldGVycyBh
cmUgaW50ZXJsZWF2ZWQ6IFxuDQorLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBcYSBW
MiBhcmUgY29waWVkIHRvIGJpdHMgWzEyNzowXSBvZiB0aGUgcmVzdWx0LA0KKy8vLyAgICBhbmQg
Yml0cyBbMjU1OjEyOF0gb2YgXGEgVjEgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0
aGUNCisvLy8gICAgcmVzdWx0LiBcbg0KKy8vLyAgICBJZiBiaXQgWzBdIG9mIFxhIE0gaXMgMSwg
XGEgVjIgYXJlIGNvcGllZCB0byBiaXRzIFsyNTU6MTI4XSBvZiB0aGUNCisvLy8gICAgcmVzdWx0
LCBhbmQgYml0cyBbMTI3OjBdIG9mIFxhIFYxIGFyZSBjb3BpZWQgdG8gYml0cyBbMTI3OjBdIG9m
IHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW0yNTZf
aW5zZXJ0ZjEyOF9zaTI1NihWMSwgVjIsIE0pIFwNCisgIChfX20yNTZpKV9fYnVpbHRpbl9pYTMy
X3ZpbnNlcnRmMTI4X3NpMjU2KChfX3Y4c2kpKF9fbTI1NmkpKFYxKSwgXA0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzaSkoX19tMTI4aSkoVjIpLCAo
aW50KShNKSkNCisNCisvKg0KKyAgIFZlY3RvciBleHRyYWN0Lg0KKyAgIFdlIHVzZSBtYWNyb3Mg
cmF0aGVyIHRoYW4gaW5saW5lcyBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBhY2NlcHQNCisgICBp
bnZvY2F0aW9ucyB3aGVyZSB0aGUgaW1tZWRpYXRlIE0gaXMgYSBjb25zdGFudCBleHByZXNzaW9u
Lg0KKyovDQorLy8vIEV4dHJhY3RzIGVpdGhlciB0aGUgdXBwZXIgb3IgdGhlIGxvd2VyIDEyOCBi
aXRzIGZyb20gYSAyNTYtYml0IHZlY3Rvcg0KKy8vLyAgICBvZiBbOCB4IGZsb2F0XSwgYXMgZGV0
ZXJtaW5lZCBieSB0aGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyLCBhbmQNCisvLy8gICAg
cmV0dXJucyB0aGUgZXh0cmFjdGVkIGJpdHMgYXMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBc
Y29kZQ0KKy8vLyBfX20xMjggX21tMjU2X2V4dHJhY3RmMTI4X3BzKF9fbTI1NiBWLCBjb25zdCBp
bnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBWDQorLy8vICAgIEEgMjU2LWJpdCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0uDQorLy8v
IFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlm
aWNhbnQgYml0IGRldGVybWluZXMgd2hpY2ggYml0cyBhcmUNCisvLy8gICAgZXh0cmFjdGVkIGZy
b20gdGhlIGZpcnN0IHBhcmFtZXRlcjogXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlz
IDAsIGJpdHMgWzEyNzowXSBvZiBcYSBWIGFyZSBjb3BpZWQgdG8gdGhlDQorLy8vICAgIHJlc3Vs
dC4gXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9m
IFxhIFYgYXJlIGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCBiaXRzLg0KKyNk
ZWZpbmUgX21tMjU2X2V4dHJhY3RmMTI4X3BzKFYsIE0pIFwNCisgIChfX20xMjgpX19idWlsdGlu
X2lhMzJfdmV4dHJhY3RmMTI4X3BzMjU2KChfX3Y4c2YpKF9fbTI1NikoViksIChpbnQpKE0pKQ0K
Kw0KKy8vLyBFeHRyYWN0cyBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0cyBm
cm9tIGEgMjU2LWJpdCB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBkb3VibGVdLCBhcyBkZXRlcm1p
bmVkIGJ5IHRoZSBpbW1lZGlhdGUgaW50ZWdlciBwYXJhbWV0ZXIsIGFuZA0KKy8vLyAgICByZXR1
cm5zIHRoZSBleHRyYWN0ZWQgYml0cyBhcyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29k
ZQ0KKy8vLyBfX20xMjhkIF9tbTI1Nl9leHRyYWN0ZjEyOF9wZChfX20yNTZkIFYsIGNvbnN0IGlu
dCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWRVhUUkFDVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIFYNCisvLy8gICAgQSAyNTYtYml0IHZlY3RvciBvZiBbNCB4IGRvdWJsZV0uDQorLy8v
IFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlm
aWNhbnQgYml0IGRldGVybWluZXMgd2hpY2ggYml0cyBhcmUNCisvLy8gICAgZXh0cmFjdGVkIGZy
b20gdGhlIGZpcnN0IHBhcmFtZXRlcjogXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlz
IDAsIGJpdHMgWzEyNzowXSBvZiBcYSBWIGFyZSBjb3BpZWQgdG8gdGhlDQorLy8vICAgIHJlc3Vs
dC4gXG4NCisvLy8gICAgSWYgYml0IFswXSBvZiBcYSBNIGlzIDEsIGJpdHMgWzI1NToxMjhdIG9m
IFxhIFYgYXJlIGNvcGllZCB0byB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgYml0cy4NCisj
ZGVmaW5lIF9tbTI1Nl9leHRyYWN0ZjEyOF9wZChWLCBNKSBcDQorICAoX19tMTI4ZClfX2J1aWx0
aW5faWEzMl92ZXh0cmFjdGYxMjhfcGQyNTYoKF9fdjRkZikoX19tMjU2ZCkoViksIChpbnQpKE0p
KQ0KKw0KKy8vLyBFeHRyYWN0cyBlaXRoZXIgdGhlIHVwcGVyIG9yIHRoZSBsb3dlciAxMjggYml0
cyBmcm9tIGEgMjU2LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciwgYXMgZGV0ZXJtaW5lZCBi
eSB0aGUgaW1tZWRpYXRlIGludGVnZXIgcGFyYW1ldGVyLCBhbmQNCisvLy8gICAgcmV0dXJucyB0
aGUgZXh0cmFjdGVkIGJpdHMgYXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEy
OGkgX21tMjU2X2V4dHJhY3RmMTI4X3NpMjU2KF9fbTI1NmkgViwgY29uc3QgaW50IE0pOw0KKy8v
LyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVg0K
Ky8vLyAgICBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBNDQorLy8vICAg
IEFuIGltbWVkaWF0ZSBpbnRlZ2VyLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGRldGVybWlu
ZXMgd2hpY2ggYml0cyBhcmUNCisvLy8gICAgZXh0cmFjdGVkIGZyb20gdGhlIGZpcnN0IHBhcmFt
ZXRlcjogIFxuDQorLy8vICAgIElmIGJpdCBbMF0gb2YgXGEgTSBpcyAwLCBiaXRzIFsxMjc6MF0g
b2YgXGEgViBhcmUgY29waWVkIHRvIHRoZQ0KKy8vLyAgICByZXN1bHQuIFxuDQorLy8vICAgIElm
IGJpdCBbMF0gb2YgXGEgTSBpcyAxLCBiaXRzIFsyNTU6MTI4XSBvZiBcYSBWIGFyZSBjb3BpZWQg
dG8gdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGV4dHJhY3RlZCBiaXRzLg0KKyNkZWZpbmUgX21tMjU2X2V4dHJhY3RmMTI4
X3NpMjU2KFYsIE0pIFwNCisgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZleHRyYWN0ZjEyOF9z
aTI1NigoX192OHNpKShfX20yNTZpKShWKSwgKGludCkoTSkpDQorDQorLyogU0lNRCBsb2FkIG9w
cyAodW5hbGlnbmVkKSAqLw0KKy8vLyBMb2FkcyB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2
ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGZyb20NCisvLy8gICAgdW5hbGlnbmVkIG1lbW9yeSBsb2Nh
dGlvbnMgYW5kIGNvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rvcg0KKy8v
LyAgICBvZiBbOCB4IGZsb2F0XSBieSBjb25jYXRlbmF0aW5nIHRoZSB0d28gMTI4LWJpdCB2ZWN0
b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2VkIGJ5
IHRoZQ0KKy8vLyAgIDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hZGRyX2hpDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5
IGxvY2F0aW9uIGNvbnRhaW5pbmcgNCBjb25zZWN1dGl2ZQ0KKy8vLyAgICBzaW5nbGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gVGhlc2UgdmFsdWVzIGFyZSB0byBiZSBjb3BpZWQg
dG8NCisvLy8gICAgYml0c1syNTU6MTI4XSBvZiB0aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0
aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMgbm90DQorLy8vICAgIGhhdmUgdG8gYmUgYWxpZ25lZC4N
CisvLy8gXHBhcmFtIF9fYWRkcl9sbw0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1l
bW9yeSBsb2NhdGlvbiBjb250YWluaW5nIDQgY29uc2VjdXRpdmUNCisvLy8gICAgc2luZ2xlLXBy
ZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuIFRoZXNlIHZhbHVlcyBhcmUgdG8gYmUgY29w
aWVkIHRvDQorLy8vICAgIGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1bHQuIFRoZSBhZGRyZXNzIG9m
IHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QNCisvLy8gICAgaGF2ZSB0byBiZSBhbGlnbmVk
Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlDQorLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQorc3Rh
dGljIF9faW5saW5lIF9fbTI1NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfbG9hZHUyX20x
MjgoZmxvYXQgY29uc3QgKl9fYWRkcl9oaSwgZmxvYXQgY29uc3QgKl9fYWRkcl9sbykNCit7DQor
ICBfX20yNTYgX192MjU2ID0gX21tMjU2X2Nhc3RwczEyOF9wczI1NihfbW1fbG9hZHVfcHMoX19h
ZGRyX2xvKSk7DQorICByZXR1cm4gX21tMjU2X2luc2VydGYxMjhfcHMoX192MjU2LCBfbW1fbG9h
ZHVfcHMoX19hZGRyX2hpKSwgMSk7DQorfQ0KKw0KKy8vLyBMb2FkcyB0d28gMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSBmcm9tDQorLy8vICAgIHVuYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb25zIGFuZCBjb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBkb3VibGVdIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHR3
byAxMjgtYml0IHZlY3RvcnMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gbG9hZCBpbnN0cnVjdGlv
bnMgZm9sbG93ZWQgYnkgdGhlDQorLy8vICAgPGM+IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2FkZHJfaGkNCisvLy8gICAgQSBwb2ludGVyIHRvIGEg
MTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0d28gY29uc2VjdXRpdmUNCisvLy8g
ICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuIFRoZXNlIHZhbHVlcyBh
cmUgdG8gYmUgY29waWVkIHRvDQorLy8vICAgIGJpdHNbMjU1OjEyOF0gb2YgdGhlIHJlc3VsdC4g
VGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdA0KKy8vLyAgICBoYXZl
IHRvIGJlIGFsaWduZWQuDQorLy8vIFxwYXJhbSBfX2FkZHJfbG8NCisvLy8gICAgQSBwb2ludGVy
IHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0d28gY29uc2VjdXRpdmUN
CisvLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMuIFRoZXNlIHZh
bHVlcyBhcmUgdG8gYmUgY29waWVkIHRvDQorLy8vICAgIGJpdHNbMTI3OjBdIG9mIHRoZSByZXN1
bHQuIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3QNCisvLy8gICAg
aGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZQ0KKy8vLyAgICBjb25jYXRl
bmF0ZWQgcmVzdWx0Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9sb2FkdTJfbTEyOGQoZG91YmxlIGNvbnN0ICpfX2FkZHJfaGksIGRvdWJsZSBj
b25zdCAqX19hZGRyX2xvKQ0KK3sNCisgIF9fbTI1NmQgX192MjU2ID0gX21tMjU2X2Nhc3RwZDEy
OF9wZDI1NihfbW1fbG9hZHVfcGQoX19hZGRyX2xvKSk7DQorICByZXR1cm4gX21tMjU2X2luc2Vy
dGYxMjhfcGQoX192MjU2LCBfbW1fbG9hZHVfcGQoX19hZGRyX2hpKSwgMSk7DQorfQ0KKw0KKy8v
LyBMb2FkcyB0d28gMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMgZnJvbSB1bmFsaWduZWQgbWVtb3J5
IGxvY2F0aW9ucyBhbmQNCisvLy8gICAgY29uc3RydWN0cyBhIDI1Ni1iaXQgaW50ZWdlciB2ZWN0
b3IgYnkgY29uY2F0ZW5hdGluZyB0aGUgdHdvIDEyOC1iaXQNCisvLy8gICAgdmVjdG9ycy4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byBsb2FkIGluc3RydWN0aW9ucyBmb2xsb3dlZCBieSB0aGUNCisv
Ly8gICA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYWRkcl9oaQ0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlv
biBjb250YWluaW5nIGEgMTI4LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3Rvci4gVGhpcyB2ZWN0
b3IgaXMgdG8gYmUgY29waWVkIHRvIGJpdHNbMjU1OjEyOF0gb2YgdGhlIHJlc3VsdC4gVGhlDQor
Ly8vICAgIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJl
IGFsaWduZWQuDQorLy8vIFxwYXJhbSBfX2FkZHJfbG8NCisvLy8gICAgQSBwb2ludGVyIHRvIGEg
MTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIDEyOC1iaXQgaW50ZWdlcg0KKy8v
LyAgICB2ZWN0b3IuIFRoaXMgdmVjdG9yIGlzIHRvIGJlIGNvcGllZCB0byBiaXRzWzEyNzowXSBv
ZiB0aGUgcmVzdWx0LiBUaGUNCisvLy8gICAgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9u
IGRvZXMgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCisvLy8gXHJldHVybnMgQSAyNTYtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuDQorc3RhdGlj
IF9faW5saW5lIF9fbTI1NmkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X2xvYWR1Ml9tMTI4
aShfX20xMjhpIGNvbnN0ICpfX2FkZHJfaGksIF9fbTEyOGkgY29uc3QgKl9fYWRkcl9sbykNCit7
DQorICBfX20yNTZpIF9fdjI1NiA9IF9tbTI1Nl9jYXN0c2kxMjhfc2kyNTYoX21tX2xvYWR1X3Np
MTI4KF9fYWRkcl9sbykpOw0KKyAgcmV0dXJuIF9tbTI1Nl9pbnNlcnRmMTI4X3NpMjU2KF9fdjI1
NiwgX21tX2xvYWR1X3NpMTI4KF9fYWRkcl9oaSksIDEpOw0KK30NCisNCisvKiBTSU1EIHN0b3Jl
IG9wcyAodW5hbGlnbmVkKSAqLw0KKy8vLyBTdG9yZXMgdGhlIHVwcGVyIGFuZCBsb3dlciAxMjgg
Yml0cyBvZiBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQNCisvLy8gICAgdmVjdG9yIG9mIFs4IHgg
ZmxvYXRdIGludG8gdHdvIGRpZmZlcmVudCB1bmFsaWduZWQgbWVtb3J5IGxvY2F0aW9ucy4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZFWFRSQUNURjEyOCA8L2M+IGluc3RydWN0aW9u
IGFuZCB0aGUNCisvLy8gICBzdG9yZSBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBf
X2FkZHJfaGkNCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24u
IEJpdHNbMjU1OjEyOF0gb2YgXGEgX19hIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQgdG8gdGhp
cyBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRv
ZXMNCisvLy8gICAgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCisvLy8gXHBhcmFtIF9fYWRkcl9s
bw0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gQml0c1sx
Mjc6MF0gb2YgXGEgX19hIGFyZSB0byBiZQ0KKy8vLyAgICBjb3BpZWQgdG8gdGhpcyBtZW1vcnkg
bG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoaXMgbWVtb3J5IGxvY2F0aW9uIGRvZXMNCisvLy8g
ICAgbm90IGhhdmUgdG8gYmUgYWxpZ25lZC4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDI1
Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdLg0KK3N0YXRpYyBfX2lu
bGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zdG9yZXUyX20xMjgoZmxvYXQg
Kl9fYWRkcl9oaSwgZmxvYXQgKl9fYWRkcl9sbywgX19tMjU2IF9fYSkNCit7DQorICBfX20xMjgg
X192MTI4Ow0KKw0KKyAgX192MTI4ID0gX21tMjU2X2Nhc3RwczI1Nl9wczEyOChfX2EpOw0KKyAg
X21tX3N0b3JldV9wcyhfX2FkZHJfbG8sIF9fdjEyOCk7DQorICBfX3YxMjggPSBfbW0yNTZfZXh0
cmFjdGYxMjhfcHMoX19hLCAxKTsNCisgIF9tbV9zdG9yZXVfcHMoX19hZGRyX2hpLCBfX3YxMjgp
Ow0KK30NCisNCisvLy8gU3RvcmVzIHRoZSB1cHBlciBhbmQgbG93ZXIgMTI4IGJpdHMgb2YgYSAy
NTYtYml0IGZsb2F0aW5nLXBvaW50DQorLy8vICAgIHZlY3RvciBvZiBbNCB4IGRvdWJsZV0gaW50
byB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24gYW5kIHRoZQ0K
Ky8vLyAgIHN0b3JlIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYWRkcl9oaQ0K
Ky8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gQml0c1syNTU6
MTI4XSBvZiBcYSBfX2EgYXJlIHRvIGJlDQorLy8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBs
b2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24gZG9lcw0KKy8vLyAg
ICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hZGRyX2xvDQorLy8vICAg
IEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBc
YSBfX2EgYXJlIHRvIGJlDQorLy8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4g
VGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkgbG9jYXRpb24gZG9lcw0KKy8vLyAgICBub3QgaGF2
ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3VibGVdLg0KK3N0YXRpYyBfX2lubGluZSB2b2lk
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zdG9yZXUyX20xMjhkKGRvdWJsZSAqX19hZGRy
X2hpLCBkb3VibGUgKl9fYWRkcl9sbywgX19tMjU2ZCBfX2EpDQorew0KKyAgX19tMTI4ZCBfX3Yx
Mjg7DQorDQorICBfX3YxMjggPSBfbW0yNTZfY2FzdHBkMjU2X3BkMTI4KF9fYSk7DQorICBfbW1f
c3RvcmV1X3BkKF9fYWRkcl9sbywgX192MTI4KTsNCisgIF9fdjEyOCA9IF9tbTI1Nl9leHRyYWN0
ZjEyOF9wZChfX2EsIDEpOw0KKyAgX21tX3N0b3JldV9wZChfX2FkZHJfaGksIF9fdjEyOCk7DQor
fQ0KKw0KKy8vLyBTdG9yZXMgdGhlIHVwcGVyIGFuZCBsb3dlciAxMjggYml0cyBvZiBhIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgaW50bw0KKy8vLyAgICB0d28gZGlmZmVyZW50IHVuYWxpZ25lZCBt
ZW1vcnkgbG9jYXRpb25zLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RG
MTI4IDwvYz4gaW5zdHJ1Y3Rpb24gYW5kIHRoZQ0KKy8vLyAgIHN0b3JlIGluc3RydWN0aW9ucy4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYWRkcl9oaQ0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgt
Yml0IG1lbW9yeSBsb2NhdGlvbi4gQml0c1syNTU6MTI4XSBvZiBcYSBfX2EgYXJlIHRvIGJlDQor
Ly8vICAgIGNvcGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhp
cyBtZW1vcnkgbG9jYXRpb24gZG9lcw0KKy8vLyAgICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0K
Ky8vLyBccGFyYW0gX19hZGRyX2xvDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVt
b3J5IGxvY2F0aW9uLiBCaXRzWzEyNzowXSBvZiBcYSBfX2EgYXJlIHRvIGJlDQorLy8vICAgIGNv
cGllZCB0byB0aGlzIG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhpcyBtZW1vcnkg
bG9jYXRpb24gZG9lcw0KKy8vLyAgICBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMjU2LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxp
bmUgdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc3RvcmV1Ml9tMTI4aShfX20xMjhp
ICpfX2FkZHJfaGksIF9fbTEyOGkgKl9fYWRkcl9sbywgX19tMjU2aSBfX2EpDQorew0KKyAgX19t
MTI4aSBfX3YxMjg7DQorDQorICBfX3YxMjggPSBfbW0yNTZfY2FzdHNpMjU2X3NpMTI4KF9fYSk7
DQorICBfbW1fc3RvcmV1X3NpMTI4KF9fYWRkcl9sbywgX192MTI4KTsNCisgIF9fdjEyOCA9IF9t
bTI1Nl9leHRyYWN0ZjEyOF9zaTI1NihfX2EsIDEpOw0KKyAgX21tX3N0b3JldV9zaTEyOChfX2Fk
ZHJfaGksIF9fdjEyOCk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gYnkNCisvLy8gICAgY29uY2F0ZW5hdGluZyB0
d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9faGkNCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyDQorLy8vICAgIDEy
OCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2xvDQorLy8vICAgIEEgMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYmUgY29waWVkIHRvIHRo
ZSBsb3dlcg0KKy8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBB
IDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs4IHggZmxvYXRdIGNvbnRhaW5pbmcg
dGhlDQorLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQorc3RhdGljIF9faW5saW5lIF9fbTI1
NiBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW0yNTZfc2V0X20xMjggKF9fbTEyOCBfX2hpLCBfX20x
MjggX19sbykNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gX21tMjU2X2luc2VydGYx
MjhfcHMgKF9tbTI1Nl9jYXN0cHMxMjhfcHMyNTYgKF9fbG8pLCBfX2hpLCAxKTsNCisjZWxzZQ0K
KyAgcmV0dXJuIChfX20yNTYpIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19sbywg
KF9fdjRzZilfX2hpLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsNCisjZW5kaWYNCit9DQorDQor
Ly8vIENvbnN0cnVjdHMgYSAyNTYtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGRv
dWJsZV0gYnkNCisvLy8gICAgY29uY2F0ZW5hdGluZyB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2lu
dCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZJTlNFUlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2hpDQor
Ly8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHRv
IGJlIGNvcGllZCB0byB0aGUgdXBwZXINCisvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fbG8NCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgY29waWVkIHRvIHRoZSBsb3dlcg0KKy8vLyAgICAxMjgg
Yml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgZmxvYXRpbmctcG9p
bnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBjb250YWluaW5nIHRoZQ0KKy8vLyAgICBjb25jYXRl
bmF0ZWQgcmVzdWx0Lg0KK3N0YXRpYyBfX2lubGluZSBfX20yNTZkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9zZXRfbTEyOGQgKF9fbTEyOGQgX19oaSwgX19tMTI4ZCBfX2xvKQ0KK3sNCisj
aWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMjU2ZCkgX21tMjU2X2luc2VydGYxMjhfcGQg
KF9tbTI1Nl9jYXN0cGQxMjhfcGQyNTYgKF9fbG8pLCBfX2hpLCAxKTsNCisjZWxzZQ0KKyAgcmV0
dXJuIChfX20yNTZkKSBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fbG8sIChfX3Yy
ZGYpX19oaSwgMCwgMSwgMiwgMyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEg
MjU2LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0DQorLy8v
ICAgIGludGVnZXIgdmVjdG9ycy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZJTlNF
UlRGMTI4IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2hpDQorLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyIDEyOCBi
aXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2xvDQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBiZSBjb3BpZWQgdG8gdGhlIGxvd2VyIDEyOCBiaXRz
IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBjb25jYXRlbmF0ZWQgcmVzdWx0Lg0KK3N0YXRpYyBfX2lu
bGluZSBfX20yNTZpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbTI1Nl9zZXRfbTEyOGkgKF9fbTEy
OGkgX19oaSwgX19tMTI4aSBfX2xvKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAo
X19tMjU2aSkgX21tMjU2X2luc2VydGYxMjhfc2kyNTYgKF9tbTI1Nl9jYXN0c2kxMjhfc2kyNTYg
KF9fbG8pLCBfX2hpLCAxKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20yNTZpKSBfX2J1aWx0aW5f
c2h1ZmZsZXZlY3RvcigoX192MmRpKV9fbG8sIChfX3YyZGkpX19oaSwgMCwgMSwgMiwgMyk7DQor
I2VuZGlmDQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2
ZWN0b3Igb2YgWzggeCBmbG9hdF0gYnkNCisvLy8gICAgY29uY2F0ZW5hdGluZyB0d28gMTI4LWJp
dCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLiBUaGlzIGlzDQorLy8vICAg
IHNpbWlsYXIgdG8gX21tMjU2X3NldF9tMTI4LCBidXQgdGhlIG9yZGVyIG9mIHRoZSBpbnB1dCBw
YXJhbWV0ZXJzIGlzDQorLy8vICAgIHN3YXBwZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19s
bw0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IHRvIGJlIGNvcGllZCB0byB0aGUgbG93ZXINCisvLy8gICAgMTI4IGJpdHMgb2YgdGhlIHJlc3Vs
dC4NCisvLy8gXHBhcmFtIF9faGkNCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSB0byBiZSBjb3BpZWQgdG8gdGhlIHVwcGVyDQorLy8vICAgIDEy
OCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzggeCBmbG9hdF0gY29udGFpbmluZyB0aGUNCisvLy8gICAgY29uY2F0
ZW5hdGVkIHJlc3VsdC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbTI1Nl9zZXRyX20xMjggKF9fbTEyOCBfX2xvLCBfX20xMjggX19oaSkNCit7DQorICBy
ZXR1cm4gX21tMjU2X3NldF9tMTI4KF9faGksIF9fbG8pOw0KK30NCisNCisvLy8gQ29uc3RydWN0
cyBhIDI1Ni1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZG91YmxlXSBieQ0KKy8v
LyAgICBjb25jYXRlbmF0aW5nIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdLiBUaGlzIGlzDQorLy8vICAgIHNpbWlsYXIgdG8gX21tMjU2X3NldF9tMTI4
ZCwgYnV0IHRoZSBvcmRlciBvZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBpcw0KKy8vLyAgICBzd2Fw
cGVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVklOU0VSVEYxMjggPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbG8NCisvLy8gICAgQSAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYmUgY29waWVkIHRvIHRoZSBsb3dl
cg0KKy8vLyAgICAxMjggYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19oaQ0KKy8v
LyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBi
ZSBjb3BpZWQgdG8gdGhlIHVwcGVyDQorLy8vICAgIDEyOCBiaXRzIG9mIHRoZSByZXN1bHQuDQor
Ly8vIFxyZXR1cm5zIEEgMjU2LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdGhlDQorLy8vICAgIGNvbmNhdGVuYXRlZCByZXN1bHQuDQorc3RhdGlj
IF9faW5saW5lIF9fbTI1NmQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tMjU2X3NldHJfbTEyOGQg
KF9fbTEyOGQgX19sbywgX19tMTI4ZCBfX2hpKQ0KK3sNCisgIHJldHVybiAoX19tMjU2ZClfbW0y
NTZfc2V0X20xMjhkKF9faGksIF9fbG8pOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDI1Ni1i
aXQgaW50ZWdlciB2ZWN0b3IgYnkgY29uY2F0ZW5hdGluZyB0d28gMTI4LWJpdA0KKy8vLyAgICBp
bnRlZ2VyIHZlY3RvcnMuIFRoaXMgaXMgc2ltaWxhciB0byBfbW0yNTZfc2V0X20xMjhpLCBidXQg
dGhlIG9yZGVyIG9mDQorLy8vICAgIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGlzIHN3YXBwZWQuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJURjEyOCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19sbw0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgdG8gYmUgY29waWVkIHRvIHRoZSBsb3dlciAxMjggYml0cyBvZiB0aGUNCisvLy8gICAgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX19oaQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
dG8gYmUgY29waWVkIHRvIHRoZSB1cHBlciAxMjggYml0cyBvZiB0aGUNCisvLy8gICAgcmVzdWx0
Lg0KKy8vLyBccmV0dXJucyBBIDI1Ni1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
Y29uY2F0ZW5hdGVkIHJlc3VsdC4NCitzdGF0aWMgX19pbmxpbmUgX19tMjU2aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW0yNTZfc2V0cl9tMTI4aSAoX19tMTI4aSBfX2xvLCBfX20xMjhpIF9faGkp
DQorew0KKyAgcmV0dXJuIChfX20yNTZpKV9tbTI1Nl9zZXRfbTEyOGkoX19oaSwgX19sbyk7DQor
fQ0KKw0KKyN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlMNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FU
VFJTMTI4DQorDQorI2VuZGlmIC8qIF9fQVZYSU5UUklOX0ggKi8NCmRpZmYgLS1naXQgYS9pbmNs
dWRlL2VtbWludHJpbi5oIGIvaW5jbHVkZS9lbW1pbnRyaW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQNCmluZGV4IDAwMDAwMDAuLjg3MDNiOWENCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUv
ZW1taW50cmluLmgNCkBAIC0wLDAgKzEsNTAzMyBAQA0KKy8qPT09LS0tLSBlbW1pbnRyaW4uaCAt
IFNTRTIgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0N
CisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0K
KyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzDQorICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBv
ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
RVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0K
KyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVINCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4NCisgKiBUSEUgU09GVFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09
DQorICovDQorDQorI2lmbmRlZiBfX0VNTUlOVFJJTl9IDQorI2RlZmluZSBfX0VNTUlOVFJJTl9I
DQorDQorI2luY2x1ZGUgPHhtbWludHJpbi5oPg0KKw0KK3R5cGVkZWYgZG91YmxlIF9fbTEyOGQg
X19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KK3R5cGVkZWYgbG9uZyBsb25n
IF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KKw0KKy8qIFR5
cGUgZGVmaW5lcy4gICovDQordHlwZWRlZiBkb3VibGUgX192MmRmIF9fYXR0cmlidXRlX18gKChf
X3ZlY3Rvcl9zaXplX18gKDE2KSkpOw0KK3R5cGVkZWYgbG9uZyBsb25nIF9fdjJkaSBfX2F0dHJp
YnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsNCit0eXBlZGVmIHNob3J0IF9fdjhoaSBf
X2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQordHlwZWRlZiBjaGFyIF9fdjE2
cWkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KKw0KKy8qIFVuc2lnbmVk
IHR5cGVzICovDQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX192MmR1IF9fYXR0cmlidXRl
X18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOw0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX192
OGh1IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCit0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgX192MTZxdSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQor
DQorLyogV2UgbmVlZCBhbiBleHBsaWNpdGx5IHNpZ25lZCB2YXJpYW50IGZvciBjaGFyLiBOb3Rl
IHRoYXQgdGhpcyBzaG91bGRuJ3QNCisgKiBhcHBlYXIgaW4gdGhlIGludGVyZmFjZSB0aG91Z2gu
ICovDQordHlwZWRlZiBzaWduZWQgY2hhciBfX3YxNnFzIF9fYXR0cmlidXRlX18oKF9fdmVjdG9y
X3NpemVfXygxNikpKTsNCisNCisvKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3Ig
dGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovDQorI2lmZGVmICBfX0dOVUNfXw0KKyNkZWZp
bmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fs
d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18s
IF9fYXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9f
YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygi
c3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkNCisjZGVmaW5lIF9fREVGQVVMVF9G
Tl9BVFRSU19NTVggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19f
LCBfX3RhcmdldF9fKCJtbXgsc3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQ0KKyNl
bmRpZg0KKw0KKyNkZWZpbmUgX01NX1NIVUZGTEUyKHgsIHkpICgoKHgpIDw8IDEpIHwgKHkpKQ0K
Kw0KKy8vLyBBZGRzIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIGJvdGggb3BlcmFu
ZHMgYW5kIHJldHVybnMgdGhlDQorLy8vICAgIHN1bSBpbiB0aGUgbG93ZXIgNjQgYml0cyBvZiB0
aGUgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0DQorLy8vICAgIGFyZSBj
b3BpZWQgZnJvbSB0aGUgdXBwZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3Qg
b3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTRCAvIEFERFNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRz
IGNvbnRhaW4gdGhlDQorLy8vICAgIHN1bSBvZiB0aGUgbG93ZXIgNjQgYml0cyBvZiBib3RoIG9w
ZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkDQorLy8vICAgIGZyb20gdGhlIHVw
cGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZF9zZChfX20xMjhkIF9fYSwg
X19tMTI4ZCBfX2IpDQorew0KKyAgX19hWzBdICs9IF9fYlswXTsNCisgIHJldHVybiBfX2E7DQor
fQ0KKw0KKy8vLyBBZGRzIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkFERFBEIC8gQUREUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KKy8v
LyAgICBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9hZGRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVy
biAoX19tMTI4ZCkoKF9fdjJkZilfX2EgKyAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBTdWJ0
cmFjdHMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVy
YW5kDQorLy8vICAgIGZyb20gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhl
IGZpcnN0IG9wZXJhbmQgYW5kIHJldHVybnMNCisvLy8gICAgdGhlIGRpZmZlcmVuY2UgaW4gdGhl
IGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YNCisvLy8g
ICAgdGhlIHJlc3VsdCBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgb2YgdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWU1VCU0QgLyBTVUJTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIG1pbnVlbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZC4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0
cyBjb250YWluIHRoZQ0KKy8vLyAgICBkaWZmZXJlbmNlIG9mIHRoZSBsb3dlciA2NCBiaXRzIG9m
IGJvdGggb3BlcmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KKy8vLyAgICBjb3BpZWQgZnJv
bSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3ViX3NkKF9fbTEy
OGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBfX2FbMF0gLT0gX19iWzBdOw0KKyAgcmV0dXJu
IF9fYTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHgg
ZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTVUJQRCAvIFNVQlBEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbWludWVuZC4NCisvLy8gXHBh
cmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSBzdWJ0cmFoZW5kLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuDQorLy8vICAgIGJv
dGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fc3ViX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4g
KF9fbTEyOGQpKChfX3YyZGYpX19hIC0gKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gTXVsdGlw
bGllcyBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpbiBib3RoIG9wZXJhbmRzIGFuZCBy
ZXR1cm5zDQorLy8vICAgIHRoZSBwcm9kdWN0IGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBy
ZXN1bHQuIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQgYXJlIGNvcGll
ZCBmcm9tIHRoZSB1cHBlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdA0KKy8v
LyAgICBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1VTFNEIC8gTVVM
U0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0
IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgcHJvZHVjdCBvZiB0aGUgbG93ZXIgNjQgYml0cyBv
ZiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUNCisvLy8gICAgY29waWVkIGZy
b20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX211bF9zZChfX20x
MjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgX19hWzBdICo9IF9fYlswXTsNCisgIHJldHVy
biBfX2E7DQorfQ0KKw0KKy8vLyBNdWx0aXBsaWVzIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIg
eCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1VTFBEIC8gTVVMUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3Ro
DQorLy8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX211bF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAg
cmV0dXJuIChfX20xMjhkKSgoX192MmRmKV9fYSAqIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8v
IERpdmlkZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhlIGZpcnN0IG9w
ZXJhbmQgYnkgdGhlDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhl
IHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZQ0KKy8vLyAgICBxdW90aWVudCBpbiB0aGUg
bG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0LiBUaGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCisv
Ly8gICAgcmVzdWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZESVZTRCAvIERJVlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFp
bmluZyB0aGUgZGl2aWRlbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBkaXZpc29yLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRh
aW4gdGhlDQorLy8vICAgIHF1b3RpZW50IG9mIHRoZSBsb3dlciA2NCBiaXRzIG9mIGJvdGggb3Bl
cmFuZHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZQ0KKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgdXBw
ZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fZGl2X3NkKF9fbTEyOGQgX19hLCBf
X20xMjhkIF9fYikNCit7DQorICBfX2FbMF0gLz0gX19iWzBdOw0KKyAgcmV0dXJuIF9fYTsNCit9
DQorDQorLy8vIFBlcmZvcm1zIGFuIGVsZW1lbnQtYnktZWxlbWVudCBkaXZpc2lvbiBvZiB0d28g
MTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZESVZQRCAvIERJVlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
Y29udGFpbmluZyB0aGUgZGl2aWRlbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgZGl2aXNvci4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
cXVvdGllbnRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fZGl2X3BkKF9fbTEyOGQgX19hLCBfX20x
MjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZGYpX19hIC8gKF9fdjJkZilf
X2IpOw0KK30NCisNCisvLy8gQ2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YNCisvLy8gICAgdGhlIHNlY29uZCBvcGVyYW5kIGFu
ZCByZXR1cm5zIGl0IGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vICAg
IFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBl
cg0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRTRCAvIFNRUlRTRCA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlDQorLy8v
ICAgIHVwcGVyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSBjb3BpZWQgdG8gdGhlIHVwcGVy
IDY0IGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUg
b3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBzcXVhcmUgcm9vdCBpcyBjYWxjdWxhdGVkIHVzaW5nIHRo
ZSBsb3dlciA2NCBiaXRzIG9mIHRoaXMgb3BlcmFuZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0K
Ky8vLyAgICBzcXVhcmUgcm9vdCBvZiB0aGUgbG93ZXIgNjQgYml0cyBvZiBvcGVyYW5kIFxhIF9f
YiwgYW5kIHdob3NlIHVwcGVyIDY0DQorLy8vICAgIGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1
cHBlciA2NCBiaXRzIG9mIG9wZXJhbmQgXGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NxcnRfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQg
X19iKQ0KK3sNCisgIF9fbTEyOGQgX19jID0gX19idWlsdGluX2lhMzJfc3FydHNkKChfX3YyZGYp
X19iKTsNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKSB7IF9fY1swXSwgX19hWzFd
IH07DQorfQ0KKw0KKy8vLyBDYWxjdWxhdGVzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgZWFjaCBv
ZiB0d28gdmFsdWVzIHN0b3JlZCBpbiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTUVJUUEQgLyBTUVJUUEQg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZQ0KKy8v
LyAgICB2YWx1ZXMgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3FydF9wZChfX20xMjhkIF9fYSkNCit7DQorICByZXR1
cm4gX19idWlsdGluX2lhMzJfc3FydHBkKChfX3YyZGYpX19hKTsNCit9DQorDQorLy8vIENvbXBh
cmVzIGxvd2VyIDY0LWJpdCBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiBib3RoIG9wZXJhbmRz
LCBhbmQNCisvLy8gICAgcmV0dXJucyB0aGUgbGVzc2VyIG9mIHRoZSBwYWlyIG9mIHZhbHVlcyBp
biB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUNCisvLy8gICAgcmVzdWx0LiBUaGUgdXBwZXIgNjQg
Yml0cyBvZiB0aGUgcmVzdWx0IGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXINCisvLy8gICAgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZNSU5TRCAvIE1JTlNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgbG93ZXIgNjQgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0
aGUNCisvLy8gICAgbWluaW11bSB2YWx1ZSBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuIFRoZSB1cHBl
ciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0
aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fbWluX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7
DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfbWluc2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19i
KTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGVsZW1lbnQtYnktZWxlbWVudCBjb21wYXJpc29uIG9m
IHRoZSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFsyIHggZG91YmxlXSBhbmQgcmV0
dXJucyB0aGUgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlc3NlciBvZiBlYWNoIHBhaXIgb2YNCisv
Ly8gICAgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1JTlBEIC8gTUlO
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFu
ZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtaW5pbXVtIHZhbHVl
cw0KKy8vLyAgICBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbWluX3BkKF9fbTEyOGQgX19hLCBfX20xMjhk
IF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfbWlucGQoKF9fdjJkZilfX2EsIChf
X3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGxvd2VyIDY0LWJpdCBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlcyBvZiBib3RoIG9wZXJhbmRzLCBhbmQNCisvLy8gICAgcmV0dXJucyB0aGUg
Z3JlYXRlciBvZiB0aGUgcGFpciBvZiB2YWx1ZXMgaW4gdGhlIGxvd2VyIDY0LWJpdHMgb2YgdGhl
DQorLy8vICAgIHJlc3VsdC4gVGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdCBhcmUgY29w
aWVkIGZyb20gdGhlIHVwcGVyDQorLy8vICAgIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgdGhl
IGZpcnN0IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFYU0QgLyBN
QVhTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVy
YW5kcy4gVGhlDQorLy8vICAgIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2Vk
IGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhl
DQorLy8vICAgIGxvd2VyIDY0IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBj
b21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIG1heGltdW0gdmFsdWUg
YmV0d2VlbiBib3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20N
CisvLy8gICAgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21heF9z
ZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X21heHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBl
bGVtZW50LWJ5LWVsZW1lbnQgY29tcGFyaXNvbiBvZiB0aGUgdHdvIDEyOC1iaXQgdmVjdG9ycyBv
Zg0KKy8vLyAgICBbMiB4IGRvdWJsZV0gYW5kIHJldHVybnMgdGhlIHZlY3RvciBjb250YWluaW5n
IHRoZSBncmVhdGVyIG9mIGVhY2ggcGFpcg0KKy8vLyAgICBvZiB2YWx1ZXMuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWTUFYUEQgLyBNQVhQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0
aGUgb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdIGNvbnRhaW5pbmcgdGhlIG1heGltdW0gdmFsdWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBv
cGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9tYXhfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9tYXhwZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8g
UGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91
YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQU5EIC8gUEFORCA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgYml0d2lzZSBB
TkQgb2YgdGhlDQorLy8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYW5kX3BkKF9fbTEy
OGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpKChfX3YyZHUpX19h
ICYgKF9fdjJkdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIEFORCBvZiB0
d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSwgdXNpbmcNCisvLy8gICAgdGhlIG9u
ZSdzIGNvbXBsZW1lbnQgb2YgdGhlIHZhbHVlcyBjb250YWluZWQgaW4gdGhlIGZpcnN0IHNvdXJj
ZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBTkROIC8gUEFORE4g
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsZWZ0IHNvdXJjZSBvcGVy
YW5kLiBUaGUNCisvLy8gICAgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHZhbHVlIGlzIHVzZWQg
aW4gdGhlIGJpdHdpc2UgQU5ELg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0IHNvdXJjZSBvcGVyYW5k
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSBiaXR3aXNlIEFORCBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGluIHRoZSBzZWNvbmQg
b3BlcmFuZCBhbmQgdGhlIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0DQorLy8vICAgIG9w
ZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fYW5kbm90X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9f
bTEyOGQpKH4oX192MmR1KV9fYSAmIChfX3YyZHUpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1z
IGEgYml0d2lzZSBPUiBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQT1IgLyBQT1IgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgT1Igb2YgdGhlDQor
Ly8vICAgIHZhbHVlcyBiZXR3ZWVuIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fb3JfcGQoX19tMTI4ZCBfX2EsIF9fbTEy
OGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZCkoKF9fdjJkdSlfX2EgfCAoX192MmR1KV9f
Yik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgWE9SIG9mIHR3byAxMjgtYml0IHZl
Y3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBY
T1IgLyBQWE9SIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWlu
aW5nIHRoZSBiaXR3aXNlIFhPUiBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBv
cGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV94b3JfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19t
MTI4ZCkoKF9fdjJkdSlfX2EgXiAoX192MmR1KV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBl
YWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0K
Ky8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIGZvciBlcXVhbGl0eS4gRWFj
aCBjb21wYXJpc29uIHlpZWxkcyAweDANCisvLy8gICAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZG
RkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QRVFQRCAv
IENNUEVRUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZXFfcGQoX19t
MTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5f
aWEzMl9jbXBlcXBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21w
YXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9m
IHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWlu
ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBsZXNzIHRo
YW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLiBFYWNoIGNvbXBhcmlzb24NCisvLy8gICAg
eWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFBEIC8gQ01QTFRQRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBsdF9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0cGQoKF9fdjJkZilf
X2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJl
c3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQg
dmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhl
IGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBp
biB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5aWVs
ZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFUEQgLyBDTVBMRVBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0
aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX2NtcGxlX3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVwZCgoX192MmRmKV9fYSwg
KF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9u
ZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0
b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmly
c3QNCisvLy8gICAgb3BlcmFuZCBhcmUgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQg
b3BlcmFuZC4NCisvLy8NCisvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZh
bHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ01QTFRQRCAvIENNUExUUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fY21wZ3RfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAo
X19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsdHBkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7
DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBk
b3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBv
cGVyYW5kIGFyZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBv
cGVyYW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFs
c2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZDTVBMRVBEIC8gQ01QTEVQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8v
LyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9jbXBnZV9wZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGxlcGQoKF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbMiB4IGRv
dWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9w
ZXJhbmQgYXJlIG9yZGVyZWQgd2l0aCByZXNwZWN0IHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3Bl
cmFuZC4NCisvLy8NCisvLy8gICAgQSBwYWlyIG9mIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGFy
ZSAib3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2gNCisvLy8gICAgb3RoZXIgaWYgbmVpdGhl
ciB2YWx1ZSBpcyBhIE5hTi4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLA0K
Ky8vLyAgICAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ01QT1JEUEQgLyBDTVBPUkRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3Vi
bGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBh
cmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9jbXBvcmRfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJl
dHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBvcmRwZCgoX192MmRmKV9fYSwgKF9fdjJk
ZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9m
IFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCisv
Ly8gICAgb3BlcmFuZCBhcmUgdW5vcmRlcmVkIHdpdGggcmVzcGVjdCB0byB0aG9zZSBpbiB0aGUg
c2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEEgcGFpciBvZiBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcyBhcmUgInVub3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2gNCisvLy8gICAgb3Ro
ZXIgaWYgb25lIG9yIGJvdGggdmFsdWVzIGFyZSBOYU4uIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMg
MHgwIGZvcg0KKy8vLyAgICBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUFVOT1JEUEQgLyBDTVBVTk9SRFBEIDwvYz4N
CisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wdW5vcmRfcGQoX19tMTI4
ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEz
Ml9jbXB1bm9yZHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21w
YXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9m
IHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWlu
ZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSB1bmVxdWFs
IHRvIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgRWFjaCBjb21w
YXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkVRUEQgLyBDTVBORVFQRCA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBuZXFfcGQoX19tMTI4ZCBfX2EsIF9f
bTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBuZXFw
ZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBv
ZiB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisvLy8g
ICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZh
bHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbm90IGxlc3MgdGhhbiB0aG9z
ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVhY2ggY29tcGFyaXNvbiB5
aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MVFBEIC8gQ01QTkxUUEQgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBjb250YWlu
aW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmx0X3BkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmx0cGQoKF9fdjJk
ZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNv
cnJlc3BvbmRpbmcgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1i
aXQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4g
dGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g
dGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNvbXBhcmlz
b24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVQRCAvIENNUE5MRVBEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5sZV9wZChfX20xMjhkIF9fYSwgX19tMTI4
ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sZXBkKChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAx
MjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVz
IGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBub3QgZ3JlYXRlciB0aGFuIHRob3Nl
IGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgRWFjaCBjb21wYXJpc29uIHlp
ZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxUUEQgLyBDTVBOTFRQRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBuZ3RfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19i
KQ0KK3sNCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBubHRwZCgoX192MmRm
KV9fYiwgKF9fdjJkZilfX2EpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29y
cmVzcG9uZGluZyBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJp
dCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0
aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0
byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVhY2ggY29tcGFy
aXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVBEIC8gQ01QTkxFUEQgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBj
b250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmdlX3BkKF9fbTEyOGQgX19hLCBfX20x
MjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmxlcGQo
KF9fdjJkZilfX2IsIChfX3YyZGYpX19hKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8v
ICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91Ymxl
XSBmb3IgZXF1YWxpdHkuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAg
Zm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWQ01QRVFTRCAvIENNUEVRU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQg
dG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQor
Ly8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBw
ZXIgNjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fY21wZXFfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBlcXNkKChfX3YyZGYpX19hLCAo
X192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5l
IGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhh
biB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbg0KKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRl
ci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4
RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBMVFNEIC8gQ01QTFRTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rvci4g
VGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbnMgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVzdWx0
cy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9m
IFxhIF9fYS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9jbXBsdF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGx0c2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsN
Cit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5n
LXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAg
dGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
IHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVy
Lg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhG
RkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VkNNUExFU0QgLyBDTVBMRVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBU
aGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRz
LiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2Yg
XGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2NtcGxlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9f
bTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0K
K30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0
aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gdGhlIGNvcnJl
c3BvbmRpbmcgdmFsdWUNCisvLy8gICAgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQor
Ly8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZG
RkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTFRTRCAv
IENNUExUU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJl
Y2lzaW9uIHZhbHVlIGlzDQorLy8vICAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXBy
ZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBpcw0KKy8vLyAgICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93
ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICAgcmVzdWx0cy4gVGhl
IHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA2NCBiaXRzIG9mIFxhIF9f
YS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9j
bXBndF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgX19tMTI4ZCBfX2MgPSBf
X2J1aWx0aW5faWEzMl9jbXBsdHNkKChfX3YyZGYpX19iLCAoX192MmRmKV9fYSk7DQorICByZXR1
cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCkgeyBfX2NbMF0sIF9fYVsxXSB9Ow0KK30NCisNCisv
Ly8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFs
dWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUg
aW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlDQor
Ly8vICAgIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8v
DQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZG
RkZGRkZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTEVT
RCAvIENNUExFU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dl
ciA2NCBiaXRzIGNvbnRhaW5zIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1
cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2Eu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21w
Z2Vfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIF9fbTEyOGQgX19jID0gX19i
dWlsdGluX2lhMzJfY21wbGVzZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOw0KKyAgcmV0dXJu
IF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCit9DQorDQorLy8v
IENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVl
cyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGlu
IHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgIm9yZGVyZWQiIHdpdGggcmVzcGVjdCB0byB0aGUNCisv
Ly8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8N
CisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZG
RkZGRkZGRiBmb3IgdHJ1ZS4gQSBwYWlyDQorLy8vICAgIG9mIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWVzIGFyZSAib3JkZXJlZCIgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIgaWYNCisvLy8gICAg
bmVpdGhlciB2YWx1ZSBpcyBhIE5hTi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
TVBPUkRTRCAvIENNUE9SRFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBU
aGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRz
LiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2Yg
XGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2NtcG9yZF9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG9yZHNkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7
DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAg
IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzICJ1bm9yZGVyZWQiIHdpdGggcmVz
cGVjdCB0byB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBh
cmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFs
c2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4gQSBwYWlyDQorLy8vICAgIG9mIGRvdWJs
ZS1wcmVjaXNpb24gdmFsdWVzIGFyZSAidW5vcmRlcmVkIiB3aXRoIHJlc3BlY3QgdG8gZWFjaCBv
dGhlciBpZg0KKy8vLyAgICBvbmUgb3IgYm90aCB2YWx1ZXMgYXJlIE5hTi4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDTVBVTk9SRFNEIC8gQ01QVU5PUkRTRCA8L2M+DQorLy8vICAg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlz
DQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9m
IFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAg
Y29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlu
cyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUg
Y29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcHVub3JkX3NkKF9fbTEyOGQg
X19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf
Y21wdW5vcmRzZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFy
ZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVh
Y2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2Yg
WzIgeCBkb3VibGVdIHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZp
cnN0IHBhcmFtZXRlciBpcyB1bmVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQor
Ly8vICAgIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNv
biB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRkZGRkZGRkZGIGZvciB0cnVlLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5FUVNEIC8gQ01QTkVRU0QgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisv
Ly8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEg
X19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21w
YXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5zIHRo
ZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3Bp
ZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5saW5lX18g
X19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmVxX3NkKF9fbTEyOGQgX19hLCBf
X20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbmVx
c2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBs
b3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQor
Ly8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91
YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJh
bWV0ZXIgaXMgbm90IGxlc3MgdGhhbiB0aGUgY29ycmVzcG9uZGluZw0KKy8vLyAgICB2YWx1ZSBp
biB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWll
bGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRTRCAvIENNUE5MVFNEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAg
IGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQg
dG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0aGUgY29t
cGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkIGZy
b20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5sdF9zZChfX20xMjhkIF9fYSwgX19tMTI4
ZCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHNkKChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAg
ICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0g
dG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVy
IGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcg
dmFsdWUgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJp
c29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkZGRkZGRkZGRkZGRkYgZm9yIHRydWUuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFU0QgLyBDTVBOTEVTRCA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0K
Ky8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBc
YSBfX2IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNv
bXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisv
Ly8gXHJldHVybnMgIEEgMTI4LWJpdCB2ZWN0b3IuIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW5z
IHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBj
b3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmxlX3NkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21w
bmxlc2QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9m
DQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHgg
ZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBw
YXJhbWV0ZXIgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZw0KKy8vLyAgICB2
YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlz
b24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1ZS4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRTRCAvIENNUE5MVFNEIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQor
Ly8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxh
IF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29t
cGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19hLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250YWlucyB0
aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29w
aWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KK3N0YXRpYyBfX2lubGluZV9f
IF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5ndF9zZChfX20xMjhkIF9fYSwg
X19tMTI4ZCBfX2IpDQorew0KKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9jbXBubHRz
ZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOw0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dl
ciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8v
ICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91Ymxl
XSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0
ZXIgaXMgbm90IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUNCisvLy8gICAgY29ycmVzcG9u
ZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNv
bXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkZGRkZGRkZGRiBmb3IgdHJ1
ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVTRCAvIENNUE5MRVNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8g
ICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19h
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yLiBUaGUgbG93ZXIgNjQgYml0cyBjb250
YWlucyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICByZXN1bHRzLiBUaGUgdXBwZXIgNjQgYml0cyBh
cmUgY29waWVkIGZyb20gdGhlIHVwcGVyIDY0IGJpdHMgb2YgXGEgX19hLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5nZV9zZChfX20xMjhk
IF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgX19tMTI4ZCBfX2MgPSBfX2J1aWx0aW5faWEzMl9j
bXBubGVzZCgoX192MmRmKV9fYiwgKF9fdjJkZilfX2EpOw0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9u
X18gKF9fbTEyOGQpIHsgX19jWzBdLCBfX2FbMV0gfTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRo
ZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9m
DQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHgg
ZG91YmxlXSBmb3IgZXF1YWxpdHkuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxk
cyAwIGZvciBmYWxzZSwgMSBmb3IgdHJ1ZS4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAg
bG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNPTUlTRCAvIENPTUlTRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Iu
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVk
IHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJl
dHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVp
dGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlz
IE5hTiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2NvbWllcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGVxKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7
DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAg
IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiB0aGUgY29ycmVz
cG9uZGluZyB2YWx1ZSBpbg0KKy8vLyAgICB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisv
Ly8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBl
aXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBp
cyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09N
SVNEIC8gQ09NSVNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUt
cHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24g
dmFsdWUgb2YgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhl
IGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMg
X19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NvbWlsdF9zZChfX20xMjhk
IF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZGx0
KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8v
LyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJs
ZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1l
dGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB2
YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlz
b24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0K
Ky8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJu
ZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNEIC8gQ09NSVNEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlz
DQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIG9m
IFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAg
ICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2Eu
DQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1
bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY29taWxlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9f
YikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taXNkbGUoKF9fdjJkZilfX2EsIChf
X3YyZGYpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lz
aW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBpbiBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4
LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUg
aWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0
aGFuIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlDQorLy8vICAgIGluIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEg
Zm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIg
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0K
Ky8vLyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVy
bmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY29t
aWd0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGlu
X2lhMzJfY29taXNkZ3QoKF9fdjJkZilfX2EsIChfX3YyZGYpX19iKTsNCit9DQorDQorLy8vIENv
bXBhcmVzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBp
biBlYWNoIG9mDQorLy8vICAgIHRoZSB0d28gMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Jz
IG9mIFsyIHggZG91YmxlXSB0byBkZXRlcm1pbmUgaWYNCisvLy8gICAgdGhlIHZhbHVlIGluIHRo
ZSBmaXJzdCBwYXJhbWV0ZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQ0KKy8vLyAg
ICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8v
LyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVp
dGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlz
IE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01J
U0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9f
aW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jb21pZ2Vfc2QoX19tMTI4ZCBf
X2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RnZSgo
X192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8g
ICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVd
IHRvIGRldGVybWluZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRl
ciBpcyB1bmVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQorLy8vICAgIHRoZSBz
ZWNvbmQgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBm
b3IgZmFsc2UsIDEgZm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2Vy
IGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGlzIE5hTiwgMSBpcyByZXR1cm5lZC4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDT01JU0QgLyBDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
ZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29t
cGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8v
LyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBU
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5z
IEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIg
b2YgdGhlIHR3bw0KKy8vLyAgICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFO
LCAxIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fY29taW5lcV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlzZG5lcSgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0K
K30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIGZvciBlcXVhbGl0eS4gVGhlDQorLy8vICAg
IGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLg0KKy8vLw0KKy8vLyAg
ICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBO
YU4sIDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlT
RCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1w
cmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2
YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9f
aW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91Y29taWVxX3NkKF9fbTEyOGQg
X19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGVx
KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93
ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8v
LyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJs
ZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1l
dGVyIGlzIGxlc3MgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbg0KKy8vLyAgICB0aGUg
c2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAg
Zm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlcg0KKy8vLyAg
ICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAg
Y29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
LiBUaGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0
byB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2EuDQorLy8vIFxyZXR1
cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRo
ZXIgb2YgdGhlIHR3bw0KKy8vLyAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBO
YU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV91Y29taWx0X3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICBy
ZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGx0KChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7
DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRp
bmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAg
IHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0
byB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRl
ci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZv
ciB0cnVlLiBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlcg0KKy8vLyAgICBkb3VibGUtcHJlY2lz
aW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWVUNPTUlTRCAvIFVDT01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhl
IGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRv
dWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8gICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdl
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdv
DQorLy8vICAgICBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0
dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91
Y29taWxlX3NkKF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWls
dGluX2lhMzJfdWNvbWlzZGxlKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8v
LyBDb21wYXJlcyB0aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1
ZXMgaW4gZWFjaCBvZg0KKy8vLyAgICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9ycyBvZiBbMiB4IGRvdWJsZV0gdG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBp
biB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyB2
YWx1ZQ0KKy8vLyAgICBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhl
IGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiBJZiBlaXRoZXIgb2Yg
dGhlIHR3byBsb3dlcg0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAg
aXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVUNPTUlTRCAvIFVD
T01JU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgaXMNCisvLy8gICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUg
aXMNCisvLy8gICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21w
YXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgICBsb3dlciBkb3Vi
bGUtcHJlY2lzaW9uIHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5s
aW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91Y29taWd0X3NkKF9fbTEyOGQgX19h
LCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZGd0KChf
X3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0aGUgbG93ZXIg
ZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgaW4gZWFjaCBvZg0KKy8vLyAg
ICB0aGUgdHdvIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9ycyBvZiBbMiB4IGRvdWJsZV0g
dG8gZGV0ZXJtaW5lIGlmDQorLy8vICAgIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3QgcGFyYW1ldGVy
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyB2
YWx1ZSBpbiB0aGUgc2Vjb25kIHBhcmFtZXRlci4NCisvLy8NCisvLy8gICAgVGhlIGNvbXBhcmlz
b24geWllbGRzIDAgZm9yIGZhbHNlLCAxIGZvciB0cnVlLiAgSWYgZWl0aGVyIG9mIHRoZSB0d28N
CisvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVy
bmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU0QgLyBVQ09NSVNEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIHZhbHVl
IG9mIFxhIF9fYi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaXMNCisvLy8g
ICAgY29tcGFyZWQgdG8gdGhlIGxvd2VyIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgb2YgXGEgX19h
Lg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVz
dWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lv
biB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdWNvbWlnZV9zZChfX20xMjhkIF9fYSwgX19tMTI4ZCBf
X2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RnZSgoX192MmRmKV9fYSwg
KF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzIGluIGVhY2ggb2YNCisvLy8gICAgdGhlIHR3byAx
MjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdIHRvIGRldGVybWlu
ZSBpZg0KKy8vLyAgICB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB1bmVxdWFs
IHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluDQorLy8vICAgIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLg0KKy8vLw0KKy8vLyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDEg
Zm9yIHRydWUuIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyDQorLy8vICAgIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWVzIGlzIE5hTiwgMSBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZVQ09NSVNEIC8gVUNPTUlTRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBU
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBpcw0KKy8vLyAgICBjb21wYXJlZCB0byB0
aGUgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSBvZiBcYSBfX2IuDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIGlzDQorLy8vICAgIGNvbXBhcmVkIHRvIHRoZSBsb3dlciBk
b3VibGUtcHJlY2lzaW9uIHZhbHVlIG9mIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdl
ciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdC4gSWYgZWl0aGVyIG9mIHRoZSB0d28N
CisvLy8gICAgbG93ZXIgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVy
bmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdWNv
bWluZXFfc2QoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0
aW5faWEzMl91Y29taXNkbmVxKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8v
LyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVu
dHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gaW50byB0d28g
c2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludA0KKy8vLyAgICB2YWx1ZXMsIHJldHVybmVk
IGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
DQorLy8vICAgIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yIGFyZSBzZXQg
dG8gemVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQRDJQUyAvIENWVFBE
MlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KKy8v
LyAgICBjb252ZXJ0ZWQgdmFsdWVzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgc2V0IHRvIHplcm8u
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRw
ZF9wcyhfX20xMjhkIF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0cGQycHMo
KF9fdjJkZilfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIGxvd2VyIHR3byBzaW5nbGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaW50byB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludA0KKy8vLyAgICB2YWx1ZXMsIHJldHVybmVkIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLiBUaGUgdXBwZXIgdHdvDQorLy8vICAgIGVsZW1lbnRzIG9mIHRoZSBpbnB1dCB2
ZWN0b3IgYXJlIHVudXNlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQUzJQ
RCAvIENWVFBTMlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIHR3byBzaW5n
bGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnRzIGFyZSBjb252ZXJ0
ZWQgdG8gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMuIFRoZQ0KKy8vLyAgICB1cHBlciB0d28gZWxl
bWVudHMgYXJlIHVudXNlZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRwc19wZChfX20xMjggX19h
KQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEz
Ml9jdnRwczJwZCAoKF9fdjRzZikgX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhkKSBf
X2J1aWx0aW5fY29udmVydHZlY3RvcigNCisgICAgICBfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rvcigo
X192NHNmKV9fYSwgKF9fdjRzZilfX2EsIDAsIDEpLCBfX3YyZGYpOw0KKyNlbmRpZg0KK30NCisN
CisvLy8gQ29udmVydHMgdGhlIGxvd2VyIHR3byBpbnRlZ2VyIGVsZW1lbnRzIG9mIGEgMTI4LWJp
dCB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBpMzJdIGludG8gdHdvIGRvdWJsZS1wcmVjaXNpb24g
ZmxvYXRpbmctcG9pbnQgdmFsdWVzLCByZXR1cm5lZCBpbiBhDQorLy8vICAgIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gICAgVGhlIHVwcGVyIHR3byBlbGVtZW50
cyBvZiB0aGUgaW5wdXQgdmVjdG9yIGFyZSB1bnVzZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ1ZURFEyUEQgLyBDVlREUTJQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkz
Ml0uIFRoZSBsb3dlciB0d28gaW50ZWdlciBlbGVtZW50cyBhcmUNCisvLy8gICAgY29udmVydGVk
IHRvIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzLg0KKy8vLw0KKy8vLyAgICBUaGUgdXBwZXIgdHdv
IGVsZW1lbnRzIGFyZSB1bnVzZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXBpMzJfcGQoX19t
MTI4aSBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhkKV9fYnVp
bHRpbl9pYTMyX2N2dGRxMnBkICgoX192NHNpKSBfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gKF9f
bTEyOGQpIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKA0KKyAgICAgIF9fYnVpbHRpbl9zaHVmZmxl
dmVjdG9yKChfX3Y0c2kpX19hLCAoX192NHNpKV9fYSwgMCwgMSksIF9fdjJkZik7DQorI2VuZGlm
DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gaW50byB0d28gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcywNCisvLy8gICAgcmV0dXJu
ZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0u
IFRoZSB1cHBlcg0KKy8vLyAgICA2NCBiaXRzIG9mIHRoZSByZXN1bHQgdmVjdG9yIGFyZSBzZXQg
dG8gemVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRQRDJEUSAvIENWVFBE
MkRRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUNCisvLy8g
ICAgY29udmVydGVkIHZhbHVlcy4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIHNldCB0byB6ZXJvLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHBk
X2VwaTMyKF9fbTEyOGQgX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9jdnRwZDJkcSAoKF9fdjJkZikgX19hKTsNCisjZWxzZQ0KKyAg
cmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxKChfX3YyZGYpX19hKTsNCisjZW5kaWYNCit9
DQorDQorLy8vIENvbnZlcnRzIHRoZSBsb3ctb3JkZXIgZWxlbWVudCBvZiBhIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXQ0KKy8vLyAgICBpbnRvIGEgMzItYml0IHNpZ25lZCBpbnRlZ2Vy
IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNEMlNJIC8gQ1ZUU0Qy
U0kgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIHVzZWQg
aW4gdGhlDQorLy8vICAgIGNvbnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgMzItYml0IHNpZ25l
ZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxp
bmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHNkX3NpMzIoX19tMTI4ZCBfX2Ep
DQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNpKChfX3YyZGYpX19hKTsNCit9
DQorDQorLy8vIENvbnZlcnRzIHRoZSBsb3dlciBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IGVsZW1lbnQgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0s
IGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyLCBpbnRvIGENCisvLy8gICAgc2luZ2xlLXByZWNpc2lv
biBmbG9hdGluZy1wb2ludCB2YWx1ZSwgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2Yg
YQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHVwcGVyIDk2IGJp
dHMgb2YgdGhlIHJlc3VsdCB2ZWN0b3IgYXJlDQorLy8vICAgIGNvcGllZCBmcm9tIHRoZSB1cHBl
ciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ1ZUU0QyU1MgLyBDVlRTRDJTUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRo
ZSB1cHBlciA5NiBiaXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZQ0KKy8vLyAgICBjb3BpZWQgdG8g
dGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGxvd2VyIGRvdWJsZS1wcmVj
aXNpb24NCisvLy8gICAgZmxvYXRpbmctcG9pbnQgZWxlbWVudCBpcyB1c2VkIGluIHRoZSBjb252
ZXJzaW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBU
aGUgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQ0KKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWUgZnJv
bSB0aGUgc2Vjb25kIHBhcmFtZXRlci4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZA0KKy8v
LyAgICBmcm9tIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzZF9zcyhf
X20xMjggX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5f
aWEzMl9jdnRzZDJzcygoX192NHNmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gQ29u
dmVydHMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUsIGluIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLCBpbnRvDQorLy8vICAgIGEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1
ZSwgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YNCisvLy8gICAgYSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQgdmVj
dG9yDQorLy8vICAgIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmly
c3QgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNEIC8g
Q1ZUU0kyU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMgb2Yg
dGhpcyBwYXJhbWV0ZXIgYXJlDQorLy8vICAgIGNvcGllZCB0byB0aGUgdXBwZXIgNjQgYml0cyBv
ZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMzItYml0IHNpZ25lZCBp
bnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGNv
bnRhaW4gdGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBmcm9tIHRoZSBzZWNvbmQgcGFyYW1l
dGVyLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkDQorLy8vICAgIGZyb20gdGhlIHVwcGVy
IDY0IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzaTMyX3NkKF9fbTEyOGQgX19hLCBpbnQg
X19iKQ0KK3sNCisgIF9fYVswXSA9IF9fYjsNCisgIHJldHVybiBfX2E7DQorfQ0KKw0KKy8vLyBD
b252ZXJ0cyB0aGUgbG93ZXIgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50
IG9mIGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0sIGluIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLCBpbnRvIGENCisvLy8gICAgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZSwgcmV0dXJuZWQgaW4gdGhlIGxvd2VyIDY0IGJpdHMgb2YNCisvLy8gICAgYSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB1cHBlciA2NCBiaXRzIG9mIHRoZSBy
ZXN1bHQgdmVjdG9yDQorLy8vICAgIGFyZSBjb3BpZWQgZnJvbSB0aGUgdXBwZXIgNjQgYml0cyBv
ZiB0aGUgZmlyc3QgcGFyYW1ldGVyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNW
VFNTMlNEIC8gQ1ZUU1MyU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0
IGJpdHMgb2YgdGhpcyBwYXJhbWV0ZXIgYXJlDQorLy8vICAgIGNvcGllZCB0byB0aGUgdXBwZXIg
NjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciBzaW5nbGUtcHJlY2lzaW9uDQorLy8v
ICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgaXMgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2
NCBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBmcm9tIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgY29waWVkDQorLy8vICAgIGZyb20g
dGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzc19zZChfX20xMjhkIF9f
YSwgX19tMTI4IF9fYikNCit7DQorICBfX2FbMF0gPSBfX2JbMF07DQorICByZXR1cm4gX19hOw0K
K30NCisNCisvLy8gQ29udmVydHMgdGhlIHR3byBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGludG8gdHdvIHNpZ25lZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMsDQorLy8vICAgIHJldHVybmVk
IGluIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0K
Ky8vLw0KKy8vLyAgICBJZiB0aGUgcmVzdWx0IG9mIGVpdGhlciBjb252ZXJzaW9uIGlzIGluZXhh
Y3QsIHRoZSByZXN1bHQgaXMgdHJ1bmNhdGVkDQorLy8vICAgIChyb3VuZGVkIHRvd2FyZHMgemVy
bykgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nLiBUaGUgdXBwZXINCisv
Ly8gICAgNjQgYml0cyBvZiB0aGUgcmVzdWx0IHZlY3RvciBhcmUgc2V0IHRvIHplcm8uDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFBEMkRRIC8gQ1ZUVFBEMkRRIDwvYz4NCisv
Ly8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGkzMl0gd2hvc2UgbG93ZXIgNjQgYml0cyBjb250YWluIHRoZQ0KKy8vLyAgICBj
b252ZXJ0ZWQgdmFsdWVzLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUgc2V0IHRvIHplcm8uDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0dHBkX2Vw
aTMyKF9fbTEyOGQgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9j
dnR0cGQyZHEoKF9fdjJkZilfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgdGhlIGxvdy1vcmRl
ciBlbGVtZW50IG9mIGEgWzIgeCBkb3VibGVdIHZlY3RvciBpbnRvIGEgMzItYml0DQorLy8vICAg
IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLCB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcyBp
bmV4YWN0Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTRDJTSSAvIENWVFRT
RDJTSSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRz
IGFyZSB1c2VkIGluIHRoZQ0KKy8vLyAgICBjb252ZXJzaW9uLg0KKy8vLyBccmV0dXJucyBBIDMy
LWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3Rh
dGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnR0c2Rfc2kzMihf
X20xMjhkIF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0dHNkMnNpKChfX3Yy
ZGYpX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBpbnRvIHR3byBzaWduZWQgMzItYml0IGludGVnZXIgdmFsdWVzLA0KKy8vLyAg
ICByZXR1cm5lZCBpbiBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEQyUEkgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisv
Ly8gXHJldHVybnMgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBj
b252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9B
VFRSU19NTVgNCitfbW1fY3Z0cGRfcGkzMihfX20xMjhkIF9fYSkNCit7DQorICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX2N2dHBkMnBpKChfX3YyZGYpX19hKTsNCit9DQorDQorLy8vIENv
bnZlcnRzIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBlbGVtZW50cyBv
ZiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBpbnRvIHR3byBzaWdu
ZWQgMzItYml0IGludGVnZXIgdmFsdWVzLA0KKy8vLyAgICByZXR1cm5lZCBpbiBhIDY0LWJpdCB2
ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgcmVzdWx0IG9mIGVpdGhl
ciBjb252ZXJzaW9uIGlzIGluZXhhY3QsIHRoZSByZXN1bHQgaXMgdHJ1bmNhdGVkDQorLy8vICAg
IChyb3VuZGVkIHRvd2FyZHMgemVybykgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBNWENTUiBz
ZXR0aW5nLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUVFBEMlBJIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4
IGkzMl0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHRwZF9waTMyKF9fbTEyOGQg
X19hKQ0KK3sNCisgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0dHBkMnBpKChfX3Yy
ZGYpX19hKTsNCit9DQorDQorLy8vIENvbnZlcnRzIHRoZSB0d28gc2lnbmVkIDMyLWJpdCBpbnRl
Z2VyIGVsZW1lbnRzIG9mIGEgNjQtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbMiB4IGkzMl0gaW50
byB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZXMsIHJldHVybmVkIGlu
IGENCisvLy8gICAgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBj
b252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZO
X0FUVFJTX01NWA0KK19tbV9jdnRwaTMyX3BkKF9fbTY0IF9fYSkNCit7DQorICByZXR1cm4gX19i
dWlsdGluX2lhMzJfY3Z0cGkycGQoKF9fdjJzaSlfX2EpOw0KK30NCisNCisvLy8gUmV0dXJucyB0
aGUgbG93LW9yZGVyIGVsZW1lbnQgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0g
YXMNCisvLy8gICAgYSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93ZXIg
NjQgYml0cyBhcmUgcmV0dXJuZWQuDQorLy8vIFxyZXR1cm5zIEEgZG91YmxlLXByZWNpc2lvbiBm
bG9hdGluZy1wb2ludCB2YWx1ZSBjb3BpZWQgZnJvbSB0aGUgbG93ZXIgNjQNCisvLy8gICAgYml0
cyBvZiBcYSBfX2EuDQorc3RhdGljIF9faW5saW5lX18gZG91YmxlIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jdnRzZF9mNjQoX19tMTI4ZCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYVswXTsNCit9
DQorDQorLy8vIExvYWRzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIGZyb20gYW4gYWxpZ25lZA0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBEIC8gTU9WQVBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2RwDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQg
bWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQorLy8vICAgIGxvY2F0
aW9uIGhhcyB0byBiZSAxNi1ieXRlIGFsaWduZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZF9wZChk
b3VibGUgY29uc3QgKl9fZHApDQorew0KKyAgcmV0dXJuICooX19tMTI4ZCopX19kcDsNCit9DQor
DQorLy8vIExvYWRzIGEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSBmcm9t
IGEgc3BlY2lmaWVkIG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbiBhbmQgZHVwbGljYXRlcyBpdCB0
byBib3RoIHZlY3RvciBlbGVtZW50cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFsy
IHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZERFVQIC8gTU9W
RERVUCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBB
IHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIGRvdWJsZS1wcmVjaXNp
b24gdmFsdWUuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIGxvYWRlZCBhbmQNCisvLy8gICAgZHVwbGljYXRlZCB2YWx1ZXMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZDFf
cGQoZG91YmxlIGNvbnN0ICpfX2RwKQ0KK3sNCisgIHN0cnVjdCBfX21tX2xvYWQxX3BkX3N0cnVj
dCB7DQorICAgIGRvdWJsZSBfX3U7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9f
bWF5X2FsaWFzX18pKTsNCisgIGRvdWJsZSBfX3UgPSAoKHN0cnVjdCBfX21tX2xvYWQxX3BkX3N0
cnVjdCopX19kcCktPl9fdTsNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX191
LCBfX3UgfTsNCit9DQorDQorI2RlZmluZSAgICAgICAgX21tX2xvYWRfcGQxKGRwKSAgICAgICAg
X21tX2xvYWQxX3BkKGRwKQ0KKw0KKy8vLyBMb2FkcyB0d28gZG91YmxlLXByZWNpc2lvbiB2YWx1
ZXMsIGluIHJldmVyc2Ugb3JkZXIsIGZyb20gYW4gYWxpZ25lZA0KKy8vLyAgICBtZW1vcnkgbG9j
YXRpb24gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUEQgLyBNT1ZBUEQgPC9jPiBpbnN0cnVjdGlvbiArDQor
Ly8vIG5lZWRlZCBzaHVmZmxpbmcgaW5zdHJ1Y3Rpb25zLiBJbiBBVlggbW9kZSwgdGhlIHNodWZm
bGluZyBtYXkgYmUgY29tYmluZWQNCisvLy8gd2l0aCB0aGUgXGMgVk1PVkFQRCwgcmVzdWx0aW5n
IGluIG9ubHkgYSBcYyBWUEVSTUlMUEQgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2RwDQorLy8vICAgIEEgMTYtYnl0ZSBhbGlnbmVkIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZXMgdG8gYmUNCisvLy8gICAgbG9hZGVkIGluIHJldmVyc2Ugb3Jk
ZXIuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIHJldmVyc2VkIGxvYWRlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZHJfcGQoZG91YmxlIGNv
bnN0ICpfX2RwKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIF9fbTEyOGQgX190bXAgPSBfbW1f
bG9hZF9wZCAoX19kcCk7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfc2h1ZnBkIChfX3RtcCwg
X190bXAsIF9NTV9TSFVGRkxFMiAoMCwxKSk7DQorI2Vsc2UNCisgIF9fbTEyOGQgX191ID0gKihf
X20xMjhkKilfX2RwOw0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYp
X191LCAoX192MmRmKV9fdSwgMSwgMCk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBMb2FkcyBhIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBmcm9tIGFuDQorLy8v
ICAgIHVuYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTU9WVVBEIC8gTU9WVVBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2RwDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBU
aGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5DQorLy8vICAgIGxvY2F0aW9uIGRvZXMgbm90IGhhdmUg
dG8gYmUgYWxpZ25lZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgbG9hZGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2FkdV9wZChkb3VibGUgY29uc3QgKl9f
ZHApDQorew0KKyAgc3RydWN0IF9fbG9hZHVfcGQgew0KKyAgICBfX20xMjhkIF9fdjsNCisgIH0g
X19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgcmV0dXJuICgo
c3RydWN0IF9fbG9hZHVfcGQqKV9fZHApLT5fX3Y7DQorfQ0KKw0KKy8vLyBMb2FkcyBhIDY0LWJp
dCBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBsb3cgZWxlbWVudCBvZiBhIDEyOC1iaXQgaW50ZWdlcg0K
Ky8vLyAgICB2ZWN0b3IgYW5kIGNsZWFycyB0aGUgdXBwZXIgZWxlbWVudC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9j
YXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24gZG9lcyBu
b3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZHVfc2k2NCh2b2lkIGNvbnN0
ICpfX2EpDQorew0KKyAgc3RydWN0IF9fbG9hZHVfc2k2NCB7DQorICAgIGxvbmcgbG9uZyBfX3Y7
DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIGxv
bmcgbG9uZyBfX3UgPSAoKHN0cnVjdCBfX2xvYWR1X3NpNjQqKV9fYSktPl9fdjsNCisgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20xMjhpKShfX3YyZGkpe19fdSwgMEx9Ow0KK30NCisNCisvLy8g
TG9hZHMgYSA2NC1iaXQgZG91YmxlLXByZWNpc2lvbiB2YWx1ZSB0byB0aGUgbG93IGVsZW1lbnQg
b2YgYQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIGFuZCBjbGVhcnMgdGhlIHVwcGVy
IGVsZW1lbnQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WU0QgLyBNT1ZTRCA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50
ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBhIGRvdWJsZS1wcmVjaXNpb24gdmFs
dWUuDQorLy8vICAgIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgbG9jYXRpb24gZG9lcyBub3Qg
aGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZF9zZChkb3VibGUgY29uc3Qg
Kl9fZHApDQorew0KKyAgc3RydWN0IF9fbW1fbG9hZF9zZF9zdHJ1Y3Qgew0KKyAgICBkb3VibGUg
X191Ow0KKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQor
ICBkb3VibGUgX191ID0gKChzdHJ1Y3QgX19tbV9sb2FkX3NkX3N0cnVjdCopX19kcCktPl9fdTsN
CisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX191LCAwIH07DQorfQ0KKw0KKy8v
LyBMb2FkcyBhIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaW50byB0aGUgaGlnaC1vcmRlciBiaXRz
IG9mIGEgMTI4LWJpdA0KKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgbG93LW9y
ZGVyIGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZSBsb3ctb3JkZXINCisvLy8gICAgYml0cyBvZiB0
aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZIUEQg
LyBNT1ZIUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbNjM6
MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiBjb250
YWluaW5nIGEgZG91YmxlLXByZWNpc2lvbg0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZSB0
aGF0IGlzIGxvYWRlZC4gVGhlIGxvYWRlZCB2YWx1ZSBpcyB3cml0dGVuIHRvIGJpdHMNCisvLy8g
ICAgWzEyNzo2NF0gb2YgdGhlIHJlc3VsdC4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSBsb2Nh
dGlvbiBkb2VzIG5vdCBoYXZlDQorLy8vICAgIHRvIGJlIGFsaWduZWQuDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9sb2FkaF9wZChfX20xMjhkIF9fYSwgZG91YmxlIGNvbnN0ICpfX2RwKQ0KK3sNCisgIHN0cnVj
dCBfX21tX2xvYWRoX3BkX3N0cnVjdCB7DQorICAgIGRvdWJsZSBfX3U7DQorICB9IF9fYXR0cmli
dXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIGRvdWJsZSBfX3UgPSAoKHN0
cnVjdCBfX21tX2xvYWRoX3BkX3N0cnVjdCopX19kcCktPl9fdTsNCisgIHJldHVybiBfX2V4dGVu
c2lvbl9fIChfX20xMjhkKXsgX19hWzBdLCBfX3UgfTsNCit9DQorDQorLy8vIExvYWRzIGEgZG91
YmxlLXByZWNpc2lvbiB2YWx1ZSBpbnRvIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIDEyOC1iaXQN
CisvLy8gICAgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIGhpZ2gtb3JkZXIgYml0cyBhcmUg
Y29waWVkIGZyb20gdGhlDQorLy8vICAgIGhpZ2gtb3JkZXIgYml0cyBvZiB0aGUgZmlyc3Qgb3Bl
cmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZMUEQgLyBNT1ZMUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbMTI3OjY0XSBhcmUgd3Jp
dHRlbiB0byBiaXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2RwDQor
Ly8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBh
IGRvdWJsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUgdGhhdCBpcyBs
b2FkZWQuIFRoZSBsb2FkZWQgdmFsdWUgaXMgd3JpdHRlbiB0byBiaXRzDQorLy8vICAgIFs2Mzow
XSBvZiB0aGUgcmVzdWx0LiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IGxvY2F0aW9uIGRvZXMg
bm90IGhhdmUgdG8NCisvLy8gICAgYmUgYWxpZ25lZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2xvYWRsX3Bk
KF9fbTEyOGQgX19hLCBkb3VibGUgY29uc3QgKl9fZHApDQorew0KKyAgc3RydWN0IF9fbW1fbG9h
ZGxfcGRfc3RydWN0IHsNCisgICAgZG91YmxlIF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19w
YWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgZG91YmxlIF9fdSA9ICgoc3RydWN0IF9fbW1f
bG9hZGxfcGRfc3RydWN0KilfX2RwKS0+X191Ow0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9f
bTEyOGQpeyBfX3UsIF9fYVsxXSB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aXRoDQorLy8vICAgIHVuc3Bl
Y2lmaWVkIGNvbnRlbnQuIFRoaXMgY291bGQgYmUgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBhbm90
aGVyDQorLy8vICAgIGludHJpbnNpYyBmdW5jdGlvbiB3aGVyZSB0aGUgYXJndW1lbnQgaXMgcmVx
dWlyZWQgYnV0IHRoZSB2YWx1ZSBpcyBub3QNCisvLy8gICAgYWN0dWFsbHkgdXNlZC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gd2l0aCB1bnNw
ZWNpZmllZA0KKy8vLyAgICBjb250ZW50Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3VuZGVmaW5lZF9wZCh2b2lkKQ0KK3sNCisjaWZkZWYgX19H
TlVDX18NCisgIF9fbTEyOGQgX19YID0gX19YOw0KKyAgcmV0dXJuIF9fWDsNCisjZWxzZQ0KKyAg
cmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3VuZGVmMTI4KCk7DQorI2VuZGlmDQorfQ0K
Kw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLiBUaGUgbG93ZXINCisvLy8gICAgNjQgYml0cyBvZiB0aGUgdmVjdG9yIGFyZSBp
bml0aWFsaXplZCB3aXRoIHRoZSBzcGVjaWZpZWQgZG91YmxlLXByZWNpc2lvbg0KKy8vLyAgICBm
bG9hdGluZy1wb2ludCB2YWx1ZS4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIHNldCB0byB6ZXJvLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSBkb3VibGUtcHJlY2lzaW9uIGZs
b2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQNCisvLy8g
ICAgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgt
Yml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZQ0KKy8vLyAgICBs
b3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIuIFRoZSB1cHBl
ciA2NCBiaXRzIGFyZQ0KKy8vLyAgICBzZXQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRfc2QoZG91YmxlIF9fdykNCit7DQor
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fdywgMCB9Ow0KK30NCisNCisvLy8g
Q29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSwgd2l0aCBlYWNoDQorLy8vICAgIG9mIHRoZSB0d28gZG91YmxlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZQ0KKy8vLyAgICBzcGVjaWZpZWQgZG91
YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZERFVQIC8gTU9WTEhQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX193DQorLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3INCisvLy8gICAgZWxlbWVudCBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0MV9wZChkb3VibGUgX193KQ0KK3sNCisgIHJl
dHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsgX193LCBfX3cgfTsNCit9DQorDQorLy8vIENv
bnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0s
IHdpdGggZWFjaA0KKy8vLyAgICBvZiB0aGUgdHdvIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUNCisvLy8gICAgc3BlY2lmaWVkIGRvdWJs
ZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTU9WRERVUCAvIE1PVkxIUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fdw0KKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yDQorLy8vICAgIGVsZW1lbnQgb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldF9wZDEoZG91YmxlIF9fdykNCit7DQorICByZXR1
cm4gX21tX3NldDFfcGQoX193KTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0NCisvLy8gICAgaW5pdGlhbGl6ZWQg
d2l0aCB0aGUgc3BlY2lmaWVkIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLTFBEIC8gVU5QQ0tMUEQgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBBIGRvdWJsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB1cHBl
ciA2NA0KKy8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3gNCisvLy8g
ICAgQSBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSB0aGUgbG93ZXIgNjQNCisvLy8gICAgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0
dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4
IGRvdWJsZV0uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fc2V0X3BkKGRvdWJsZSBfX3csIGRvdWJsZSBfX3gpDQorew0KKyAgcmV0dXJuIF9fZXh0
ZW5zaW9uX18gKF9fbTEyOGQpeyBfX3gsIF9fdyB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBh
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSwNCisvLy8gICAg
aW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoIHRoZSBzcGVjaWZpZWQgZG91YmxlLXBy
ZWNpc2lvbg0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQgLyBVTlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX193DQorLy8vICAgIEEgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZy1w
b2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0DQorLy8vICAgIGJpdHMg
b2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9feA0KKy8vLyAgICBBIGRvdWJsZS1wcmVjaXNp
b24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB1cHBlciA2NA0K
Ky8vLyAgICBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVk
IDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRyX3BkKGRvdWJs
ZSBfX3csIGRvdWJsZSBfX3gpDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQp
eyBfX3csIF9feCB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmct
cG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXQ0KKy8vLyAgICBpbml0aWFsaXplZCB0byB6ZXJv
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlhPUlBTIC8gWE9SUFMgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdpdGgNCisvLy8gICAgYWxsIGVsZW1l
bnRzIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX3NldHplcm9fcGQodm9pZCkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25f
XyAoX19tMTI4ZCl7IDAsIDAgfTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSAxMjgtYml0IGZs
b2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSBsb3dlcg0KKy8vLyAgICA2
NCBiaXRzIGFyZSBzZXQgdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0
ZXIuIFRoZSB1cHBlcg0KKy8vLyAgICA2NCBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZCTEVORFBEIC8gQkxFTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdXBwZXIg
NjQgYml0cyBhcmUgd3JpdHRlbiB0byB0aGUNCisvLy8gICAgdXBwZXIgNjQgYml0cyBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgd3JpdHRlbiB0byB0aGUNCisvLy8gICAg
bG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1ZXMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbW92ZV9zZChfX20x
MjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgX19hWzBdID0gX19iWzBdOw0KKyAgcmV0dXJu
IF9fYTsNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhDQorLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTRCAvIE1PVlNEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2RwDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDY0LWJp
dCBtZW1vcnkgbG9jYXRpb24uDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0K
K3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0b3JlX3Nk
KGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQorew0KKyAgc3RydWN0IF9fbW1fc3RvcmVfc2Rf
c3RydWN0IHsNCisgICAgZG91YmxlIF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRf
XywgX19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19tbV9zdG9yZV9zZF9zdHJ1Y3QqKV9f
ZHApLT5fX3UgPSBfX2FbMF07DQorfQ0KKw0KKy8vLyBNb3ZlcyBwYWNrZWQgZG91YmxlLXByZWNp
c2lvbiB2YWx1ZXMgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFsyIHggZG91Ymxl
XSB0byBhIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+Vk1P
VkFQRCAvIE1PVkFQUzwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2RwDQor
Ly8vICAgIEEgcG9pbnRlciB0byBhbiBhbGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB0aGF0IGNhbiBz
dG9yZSB0d28NCisvLy8gICAgZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMuDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSBwYWNrZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRh
aW5pbmcgdGhlIHZhbHVlcyB0byBiZQ0KKy8vLyAgICBtb3ZlZC4NCitzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZV9wZChkb3VibGUgKl9fZHAsIF9f
bTEyOGQgX19hKQ0KK3sNCisgICooX19tMTI4ZCopX19kcCA9IF9fYTsNCit9DQorDQorLy8vIE1v
dmVzIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IHR3aWNlIHRvDQorLy8vICAgIHRoZSB1cHBlciBhbmQgbG93ZXIgNjQgYml0cyBvZiBhIG1lbW9y
eSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUNCisvLy8gICA8Yz4gVk1PVkRE
VVAgKyBWTU9WQVBEIC8gTU9WTEhQUyArIE1PVkFQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24g
dGhhdCBjYW4gc3RvcmUgdHdvIGRvdWJsZS1wcmVjaXNpb24NCisvLy8gICAgdmFsdWVzLg0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIHdo
b3NlIGxvd2VyIDY0IGJpdHMgYXJlIGNvcGllZCB0byBlYWNoDQorLy8vICAgIG9mIHRoZSB2YWx1
ZXMgaW4gXGEgX19kcC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9zdG9yZTFfcGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCit7DQorI2lmZGVm
IF9fR05VQ19fDQorICBfbW1fc3RvcmVfcGQgKF9fZHAsIF9fYnVpbHRpbl9pYTMyX3NodWZwZCAo
X19hLCBfX2EsIF9NTV9TSFVGRkxFMiAoMCwwKSkpOw0KKyNlbHNlDQorICBfX2EgPSBfX2J1aWx0
aW5fc2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2EsIDAsIDApOw0KKyAgX21t
X3N0b3JlX3BkKF9fZHAsIF9fYSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBNb3ZlcyB0aGUgbG93
ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0d2ljZSB0bw0K
Ky8vLyAgICB0aGUgdXBwZXIgYW5kIGxvd2VyIDY0IGJpdHMgb2YgYSBtZW1vcnkgbG9jYXRpb24u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlDQorLy8vICAgPGM+IFZNT1ZERFVQICsgVk1PVkFQ
RCAvIE1PVkxIUFMgKyBNT1ZBUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY2FuIHN0
b3JlIHR3byBkb3VibGUtcHJlY2lzaW9uDQorLy8vICAgIHZhbHVlcy4NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBsb3dlciA2
NCBiaXRzIGFyZSBjb3BpZWQgdG8gZWFjaA0KKy8vLyAgICBvZiB0aGUgdmFsdWVzIGluIFxhIF9f
ZHAuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3Rv
cmVfcGQxKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQorew0KKyAgX21tX3N0b3JlMV9wZChf
X2RwLCBfX2EpOw0KK30NCisNCisvLy8gU3RvcmVzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIGludG8gYW4gdW5hbGlnbmVkIG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbi4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUEQgLyBNT1ZVUEQgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJp
dCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisvLy8gICAgbG9j
YXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHZhbHVl
cyB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fc3RvcmV1X3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQorew0KKyAgc3Ry
dWN0IF9fc3RvcmV1X3BkIHsNCisgICAgX19tMTI4ZCBfX3Y7DQorICB9IF9fYXR0cmlidXRlX18o
KF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgICgoc3RydWN0IF9fc3RvcmV1X3BkKilf
X2RwKS0+X192ID0gX19hOw0KK30NCisNCisvLy8gU3RvcmVzIHR3byBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcywgaW4gcmV2ZXJzZSBvcmRlciwgZnJvbSBhIDEyOC1iaXQNCisvLy8gICAgdmVjdG9y
IG9mIFsyIHggZG91YmxlXSB0byBhIDE2LWJ5dGUgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gYSBzaHVmZmxpbmcgaW5zdHJ1Y3Rpb24gZm9sbG93ZWQgYnkg
YQ0KKy8vLyA8Yz4gVk1PVkFQRCAvIE1PVkFQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19kcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxNi1ieXRlIGFsaWduZWQgbWVt
b3J5IGxvY2F0aW9uIHRoYXQgY2FuIHN0b3JlIHR3bw0KKy8vLyAgICBkb3VibGUtcHJlY2lzaW9u
IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgcmV2ZXJzZWQgYW5kDQorLy8v
ICAgIHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9zdG9yZXJfcGQoZG91YmxlICpfX2RwLCBfX20xMjhkIF9fYSkNCit7DQorI2lmZGVmIF9f
R05VQ19fDQorICBfbW1fc3RvcmVfcGQgKF9fZHAsIF9fYnVpbHRpbl9pYTMyX3NodWZwZCAoX19h
LCBfX2EsIF9NTV9TSFVGRkxFMiAoMCwxKSkpOw0KKyNlbHNlDQorICBfX2EgPSBfX2J1aWx0aW5f
c2h1ZmZsZXZlY3RvcigoX192MmRmKV9fYSwgKF9fdjJkZilfX2EsIDEsIDApOw0KKyAgKihfX20x
MjhkICopX19kcCA9IF9fYTsNCisjZW5kaWYNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgdXBwZXIg
NjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhDQorLy8vICAg
IG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZIUEQg
LyBNT1ZIUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fZHANCisvLy8g
ICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbi4NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSB2YWx1ZSB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fc3RvcmVoX3BkKGRvdWJsZSAqX19kcCwgX19tMTI4ZCBfX2EpDQorew0K
KyAgc3RydWN0IF9fbW1fc3RvcmVoX3BkX3N0cnVjdCB7DQorICAgIGRvdWJsZSBfX3U7DQorICB9
IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgICgoc3RydWN0
IF9fbW1fc3RvcmVoX3BkX3N0cnVjdCopX19kcCktPl9fdSA9IF9fYVsxXTsNCit9DQorDQorLy8v
IFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSB0byBhDQorLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZMUEQgLyBNT1ZMUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fZHANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlv
bi4NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91
YmxlXSBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5l
X18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3RvcmVsX3BkKGRvdWJsZSAqX19kcCwg
X19tMTI4ZCBfX2EpDQorew0KKyAgc3RydWN0IF9fbW1fc3RvcmVoX3BkX3N0cnVjdCB7DQorICAg
IGRvdWJsZSBfX3U7DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFz
X18pKTsNCisgICgoc3RydWN0IF9fbW1fc3RvcmVoX3BkX3N0cnVjdCopX19kcCktPl9fdSA9IF9f
YVswXTsNCit9DQorDQorLy8vIEFkZHMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdv
IDEyOC1iaXQgdmVjdG9ycyBvZiBbMTYgeCBpOF0sDQorLy8vICAgIHNhdmluZyB0aGUgbG93ZXIg
OCBiaXRzIG9mIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0KKy8v
LyAgICAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLw0KKy8vLyAgICBU
aGUgaW50ZWdlciBlbGVtZW50cyBvZiBib3RoIHBhcmFtZXRlcnMgY2FuIGJlIGVpdGhlciBzaWdu
ZWQgb3IgdW5zaWduZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFEREIgLyBQ
QUREQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCisvLy8gICAgcGFy
YW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9hZGRfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjhpKSgoX192MTZxdSlfX2EgKyAoX192MTZxdSlfX2IpOw0KK30NCisNCisvLy8gQWRkcyB0
aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs4IHgg
aTE2XSwNCisvLy8gICAgc2F2aW5nIHRoZSBsb3dlciAxNiBiaXRzIG9mIGVhY2ggc3VtIGluIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHJlc3VsdCB2ZWN0
b3Igb2YgWzggeCBpMTZdLg0KKy8vLw0KKy8vLyAgICBUaGUgaW50ZWdlciBlbGVtZW50cyBvZiBi
b3RoIHBhcmFtZXRlcnMgY2FuIGJlIGVpdGhlciBzaWduZWQgb3IgdW5zaWduZWQuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFERFcgLyBQQUREVyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBp
MTZdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBp
MTZdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWlu
aW5nIHRoZSBzdW1zIG9mIGJvdGgNCisvLy8gICAgcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hZGRfZXBpMTYoX19tMTI4aSBf
X2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkoKF9fdjhodSlfX2EgKyAo
X192OGh1KV9fYik7DQorfQ0KKw0KKy8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRz
IG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBpMzJdLA0KKy8vLyAgICBzYXZpbmcgdGhl
IGxvd2VyIDMyIGJpdHMgb2YgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBv
ZiBhDQorLy8vICAgIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQorLy8vDQor
Ly8vICAgIFRoZSBpbnRlZ2VyIGVsZW1lbnRzIG9mIGJvdGggcGFyYW1ldGVycyBjYW4gYmUgZWl0
aGVyIHNpZ25lZCBvciB1bnNpZ25lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
QURERCAvIFBBREREIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KKy8v
LyAgICBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2FkZF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAg
cmV0dXJuIChfX20xMjhpKSgoX192NHN1KV9fYSArIChfX3Y0c3UpX19iKTsNCit9DQorDQorLy8v
IEFkZHMgdHdvIHNpZ25lZCBvciB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciB2YWx1ZXMsIHJldHVy
bmluZyB0aGUNCisvLy8gICAgbG93ZXIgNjQgYml0cyBvZiB0aGUgc3VtLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gUEFERFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgNjQtYml0IGludGVnZXIuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgY29u
dGFpbmluZyB0aGUgc3VtIG9mIGJvdGggcGFyYW1ldGVycy4NCisjaWZuZGVmIF9fR05VQ19fDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9hZGRf
c2k2NChfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRp
bl9pYTMyX3BhZGRxKChfX3YxZGkpX19hLCAoX192MWRpKV9fYik7DQorfQ0KKyNlbmRpZg0KKw0K
Ky8vLyBBZGRzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YgWzIgeCBpNjRdLA0KKy8vLyAgICBzYXZpbmcgdGhlIGxvd2VyIDY0IGJpdHMgb2YgZWFj
aCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhDQorLy8vICAgIDEyOC1iaXQg
cmVzdWx0IHZlY3RvciBvZiBbMiB4IGk2NF0uDQorLy8vDQorLy8vICAgIFRoZSBpbnRlZ2VyIGVs
ZW1lbnRzIG9mIGJvdGggcGFyYW1ldGVycyBjYW4gYmUgZWl0aGVyIHNpZ25lZCBvciB1bnNpZ25l
ZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREUSAvIFBBRERRIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGk2NF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMiB4IGk2NF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBp
NjRdIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgYm90aA0KKy8vLyAgICBwYXJhbWV0ZXJzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZF9lcGk2
NChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192
MmR1KV9fYSArIChfX3YyZHUpX19iKTsNCit9DQorDQorLy8vIEFkZHMsIHdpdGggc2F0dXJhdGlv
biwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQNCisvLy8gICAgc2ln
bmVkIFsxNiB4IGk4XSB2ZWN0b3JzLCBzYXZpbmcgZWFjaCBzdW0gaW4gdGhlIGNvcnJlc3BvbmRp
bmcgZWxlbWVudCBvZg0KKy8vLyAgICBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBp
OF0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4N0YgYXJlDQorLy8vICAgIHNhdHVyYXRl
ZCB0byAweDdGLiBOZWdhdGl2ZSBzdW1zIGxlc3MgdGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8g
MHg4MC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREU0IgLyBQQUREU0IgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
c2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2ln
bmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1bXMgb2YNCisv
Ly8gICAgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX2FkZHNfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQor
ew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGRzYjEyOCgoX192MTZxaSlf
X2EsIChfX3YxNnFpKV9fYik7DQorfQ0KKw0KKy8vLyBBZGRzLCB3aXRoIHNhdHVyYXRpb24sIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0DQorLy8vICAgIHNpZ25lZCBb
OCB4IGkxNl0gdmVjdG9ycywgc2F2aW5nIGVhY2ggc3VtIGluIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnQgb2YNCisvLy8gICAgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBQ
b3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbiAweDdGRkYNCisvLy8gICAgYXJlIHNhdHVyYXRlZCB0
byAweDdGRkYuIE5lZ2F0aXZlIHN1bXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRv
DQorLy8vICAgIDB4ODAwMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUREU1cg
LyBQQUREU1cgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2F0dXJhdGVk
IHN1bXMgb2YNCisvLy8gICAgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FkZHNfZXBpMTYoX19tMTI4aSBfX2EsIF9f
bTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkc3cx
MjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIEFkZHMsIHdpdGggc2F0
dXJhdGlvbiwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQNCisvLy8g
ICAgdW5zaWduZWQgWzE2IHggaThdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50DQorLy8vICAgIG9mIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9m
IFsxNiB4IGk4XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4gMHhGRg0KKy8vLyAgICBhcmUg
c2F0dXJhdGVkIHRvIDB4RkYuIE5lZ2F0aXZlIHN1bXMgYXJlIHNhdHVyYXRlZCB0byAweDAwLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERVU0IgLyBQQUREVVNCIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHVuc2ln
bmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNp
Z25lZCBbMTYgeCBpOF0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQorLy8v
ICAgIG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9hZGRzX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0K
K3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWRkdXNiMTI4KChfX3YxNnFp
KV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIEFkZHMsIHdpdGggc2F0dXJhdGlvbiwg
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQNCisvLy8gICAgdW5zaWdu
ZWQgWzggeCBpMTZdIHZlY3RvcnMsIHNhdmluZyBlYWNoIHN1bSBpbiB0aGUgY29ycmVzcG9uZGlu
ZyBlbGVtZW50DQorLy8vICAgIG9mIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs4IHggaTE2
XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4NCisvLy8gICAgMHhGRkZGIGFyZSBzYXR1cmF0
ZWQgdG8gMHhGRkZGLiBOZWdhdGl2ZSBzdW1zIGFyZSBzYXR1cmF0ZWQgdG8gMHgwMDAwLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBRERVU0IgLyBQQUREVVNCIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVk
IFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHVu
c2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25l
ZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZCBzdW1zDQorLy8vICAg
IG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9hZGRzX2VwdTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHVzdzEyOCgoX192OGhpKV9f
YSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gQ29tcHV0ZXMgdGhlIHJvdW5kZWQgYXZhcmFn
ZXMgb2YgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28NCisvLy8gICAgMTI4LWJpdCB1bnNp
Z25lZCBbMTYgeCBpOF0gdmVjdG9ycywgc2F2aW5nIGVhY2ggcmVzdWx0IGluIHRoZQ0KKy8vLyAg
ICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzE2
IHggaThdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBVkdCIC8gUEFWR0IgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEy
OC1iaXQgdW5zaWduZWQgWzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcm91bmRlZA0KKy8vLyAg
ICBhdmVyYWdlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYXZnX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkg
X19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f
aWEzMl9wYXZnYjEyOCAoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KKyNlbHNlDQorICB0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdjE2aHUgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3Np
emVfXyAoMzIpKSk7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3Io
DQorICAgICAgICAgICAgICAgKChfX2J1aWx0aW5fY29udmVydHZlY3RvcigoX192MTZxdSlfX2Es
IF9fdjE2aHUpICsNCisgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChf
X3YxNnF1KV9fYiwgX192MTZodSkpICsgMSkNCisgICAgICAgICAgICAgICAgID4+IDEsIF9fdjE2
cXUpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gQ29tcHV0ZXMgdGhlIHJvdW5kZWQgYXZhcmFnZXMg
b2YgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28NCisvLy8gICAgMTI4LWJpdCB1bnNpZ25l
ZCBbOCB4IGkxNl0gdmVjdG9ycywgc2F2aW5nIGVhY2ggcmVzdWx0IGluIHRoZQ0KKy8vLyAgICBj
b3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBp
MTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBVkdXIC8gUEFWR1cgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdW5z
aWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1i
aXQgdW5zaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHVu
c2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgcm91bmRlZA0KKy8vLyAgICBh
dmVyYWdlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYXZnX2VwdTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9f
YikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lh
MzJfcGF2Z3cxMjggKChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorI2Vsc2UNCisgIHR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdjhzdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgz
MikpKTsNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcigNCisgICAg
ICAgICAgICAgICAoKF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aHUpX19hLCBfX3Y4c3Up
ICsNCisgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKChfX3Y4aHUpX19i
LCBfX3Y4c3UpKSArIDEpDQorICAgICAgICAgICAgICAgICA+PiAxLCBfX3Y4aHUpOw0KKyNlbmRp
Zg0KK30NCisNCisvLy8gTXVsdGlwbGllcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0
d28gMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdDQorLy8vICAgIHZlY3RvcnMsIHByb2R1Y2luZyBl
aWdodCBpbnRlcm1lZGlhdGUgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHByb2R1Y3RzLCBhbmQNCisv
Ly8gICAgYWRkcyB0aGUgY29uc2VjdXRpdmUgcGFpcnMgb2YgMzItYml0IHByb2R1Y3RzIHRvIGZv
cm0gYSAxMjgtYml0IHNpZ25lZA0KKy8vLyAgICBbNCB4IGkzMl0gdmVjdG9yLg0KKy8vLw0KKy8v
LyAgICBGb3IgZXhhbXBsZSwgYml0cyBbMTU6MF0gb2YgYm90aCBwYXJhbWV0ZXJzIGFyZSBtdWx0
aXBsaWVkIHByb2R1Y2luZyBhDQorLy8vICAgIDMyLWJpdCBwcm9kdWN0LCBiaXRzIFszMToxNl0g
b2YgYm90aCBwYXJhbWV0ZXJzIGFyZSBtdWx0aXBsaWVkIHByb2R1Y2luZw0KKy8vLyAgICBhIDMy
LWJpdCBwcm9kdWN0LCBhbmQgdGhlIHN1bSBvZiB0aG9zZSB0d28gcHJvZHVjdHMgYmVjb21lcyBi
aXRzIFszMTowXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVlBNQUREV0QgLyBQTUFERFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rv
ci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHNpZ25lZCBbNCB4IGkzMl0gdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIHN1bXMgb2YgcHJvZHVjdHMNCisvLy8gICAgb2YgYm90aCBwYXJhbWV0ZXJzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21hZGRf
ZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9wbWFkZHdkMTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0K
Kw0KKy8vLyBDb21wYXJlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHNp
Z25lZCBbOCB4IGkxNl0NCisvLy8gICAgdmVjdG9ycywgc2F2aW5nIHRoZSBncmVhdGVyIHZhbHVl
IGZyb20gZWFjaCBjb21wYXJpc29uIGluIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1l
bnQgb2YgYSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhTVyAvIFBNQVhTVyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZl
Y3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2
XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBncmVhdGVyIHZhbHVlIG9mDQorLy8vICAgIGVhY2ggY29tcGFyaXNv
bi4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9t
YXhfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4
aSlfX2J1aWx0aW5faWEzMl9wbWF4c3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9
DQorDQorLy8vIENvbXBhcmVzIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQg
dW5zaWduZWQgWzE2IHggaThdDQorLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgZ3JlYXRlciB2
YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBpbiB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBl
bGVtZW50IG9mIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUFYVUIgLyBQTUFYVUIgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQgWzE2IHgg
aThdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdW5zaWduZWQg
WzE2IHggaThdIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHVuc2lnbmVkIFsxNiB4
IGk4XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZSBvZg0KKy8vLyAgICBlYWNo
IGNvbXBhcmlzb24uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fbWF4X2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWF4dWIxMjgoKF9fdjE2cWkpX19hLCAoX192MTZx
aSlfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0
d28gMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdDQorLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUg
c21hbGxlciB2YWx1ZSBmcm9tIGVhY2ggY29tcGFyaXNvbiBpbiB0aGUNCisvLy8gICAgY29ycmVz
cG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFs4IHggaTE2XS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTUlOU1cgLyBQTUlOU1cgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgc2lnbmVk
IFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHNp
Z25lZCBbOCB4IGkxNl0gdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgc2lnbmVkIFs4
IHggaTE2XSB2ZWN0b3IgY29udGFpbmluZyB0aGUgc21hbGxlciB2YWx1ZSBvZg0KKy8vLyAgICBl
YWNoIGNvbXBhcmlzb24uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fbWluX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICBy
ZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1pbnN3MTI4KChfX3Y4aGkpX19hLCAoX192
OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9m
IHR3byAxMjgtYml0IHVuc2lnbmVkIFsxNiB4IGk4XQ0KKy8vLyAgICB2ZWN0b3JzLCBzYXZpbmcg
dGhlIHNtYWxsZXIgdmFsdWUgZnJvbSBlYWNoIGNvbXBhcmlzb24gaW4gdGhlDQorLy8vICAgIGNv
cnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZiBbMTYgeCBp
OF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlVCIC8gUE1JTlVCIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHVu
c2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgt
Yml0IHVuc2lnbmVkIFsxNiB4IGk4XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1
bnNpZ25lZCBbMTYgeCBpOF0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNtYWxsZXIgdmFsdWUgb2YN
CisvLy8gICAgZWFjaCBjb21wYXJpc29uLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX21pbl9lcHU4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1pbnViMTI4KChfX3YxNnFp
KV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIE11bHRpcGxpZXMgdGhlIGNvcnJlc3Bv
bmRpbmcgZWxlbWVudHMgb2YgdHdvIHNpZ25lZCBbOCB4IGkxNl0NCisvLy8gICAgdmVjdG9ycywg
c2F2aW5nIHRoZSB1cHBlciAxNiBiaXRzIG9mIGVhY2ggMzItYml0IHByb2R1Y3QgaW4gdGhlDQor
Ly8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2
XSByZXN1bHQgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxIVyAv
IFBNVUxIVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgc2lnbmVkIFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3RvciBjb250YWluaW5nIHRoZSB1cHBlciAxNiBi
aXRzIG9mDQorLy8vICAgIGVhY2ggb2YgdGhlIGVpZ2h0IDMyLWJpdCBwcm9kdWN0cy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tdWxoaV9lcGkx
NihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVp
bHRpbl9pYTMyX3BtdWxodzEyOCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisv
Ly8gTXVsdGlwbGllcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gdW5zaWduZWQg
WzggeCBpMTZdDQorLy8vICAgIHZlY3RvcnMsIHNhdmluZyB0aGUgdXBwZXIgMTYgYml0cyBvZiBl
YWNoIDMyLWJpdCBwcm9kdWN0IGluIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQg
b2YgYSAxMjgtYml0IHVuc2lnbmVkIFs4IHggaTE2XSByZXN1bHQgdmVjdG9yLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxIVVcgLyBQTVVMSFVXIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVkIFs4IHgg
aTE2XSB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHVuc2lnbmVk
IFs4IHggaTE2XSB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB1bnNpZ25lZCBbOCB4
IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHVwcGVyIDE2IGJpdHMNCisvLy8gICAgb2YgZWFj
aCBvZiB0aGUgZWlnaHQgMzItYml0IHByb2R1Y3RzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX211bGhpX2VwdTE2KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGh1dzEy
OCgoX192OGhpKV9fYSwgKF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyB0aGUg
Y29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gc2lnbmVkIFs4IHggaTE2XQ0KKy8vLyAgICB2
ZWN0b3JzLCBzYXZpbmcgdGhlIGxvd2VyIDE2IGJpdHMgb2YgZWFjaCAzMi1iaXQgcHJvZHVjdCBp
biB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIGEgMTI4LWJpdCBzaWduZWQg
WzggeCBpMTZdIHJlc3VsdCB2ZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UE1VTExXIC8gUE1VTExXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCBzaWduZWQgWzggeCBpMTZdIHZlY3Rvci4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHNpZ25lZCBbOCB4IGkxNl0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxv
d2VyIDE2IGJpdHMgb2YNCisvLy8gICAgZWFjaCBvZiB0aGUgZWlnaHQgMzItYml0IHByb2R1Y3Rz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX211
bGxvX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEy
OGkpKChfX3Y4aHUpX19hICogKF9fdjhodSlfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyAz
Mi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBsb3dlciBiaXRz
DQorLy8vICAgIG9mIHRoZSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBhbmQgcmV0dXJucyB0
aGUgNjQtYml0IHVuc2lnbmVkDQorLy8vICAgIHByb2R1Y3QuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQTVVMVURRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcHJvZHVjdCBvZiBib3RoIG9wZXJhbmRz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1f
bXVsX3N1MzIoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbXVsdWRxICgoX192MnNpKV9fYSwgKF9fdjJz
aSlfX2IpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGluX2lhMzJfcG11bHVkcSgoX192MnNp
KV9fYSwgKF9fdjJzaSlfX2IpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gTXVsdGlwbGllcyAzMi1i
aXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBsb3dlcg0KKy8vLyAg
ICBiaXRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byBbMiB4IGk2NF0gdmVj
dG9ycywgYW5kIHJldHVybnMNCisvLy8gICAgdGhlIDY0LWJpdCBwcm9kdWN0cyBpbiB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50cyBvZiBhIFsyIHggaTY0XSB2ZWN0b3IuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUE1VTFVEUSAvIFBNVUxVRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IFsyIHggaTY0XSB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4N
CisvLy8gXHJldHVybnMgQSBbMiB4IGk2NF0gdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3Qg
b2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9tdWxfZXB1MzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisg
IHJldHVybiBfX2J1aWx0aW5faWEzMl9wbXVsdWRxMTI4KChfX3Y0c2kpX19hLCAoX192NHNpKV9f
Yik7DQorfQ0KKw0KKy8vLyBDb21wdXRlcyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgb2YgY29y
cmVzcG9uZGluZyA4LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZhbHVlcyBpbiB0d28gMTI4LWJpdCB2
ZWN0b3JzLiBTdW1zIHRoZSBmaXJzdCA4IGFic29sdXRlIGRpZmZlcmVuY2VzLCBhbmQNCisvLy8g
ICAgc2VwYXJhdGVseSBzdW1zIHRoZSBzZWNvbmQgOCBhYnNvbHV0ZSBkaWZmZXJlbmNlcy4gUGFj
a3MgdGhlc2UgdHdvDQorLy8vICAgIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyIHN1bXMgaW50byB0
aGUgdXBwZXIgYW5kIGxvd2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgWzIgeCBpNjRdIHZlY3Rv
ci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0FEQlcgLyBQU0FEQlcgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSBbMiB4IGk2NF0gdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHN1bXMgb2YgdGhlIHNldHMgb2YgYWJzb2x1dGUNCisvLy8gICAg
ZGlmZmVyZW5jZXMgYmV0d2VlbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NhZF9lcHU4KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfcHNhZGJ3MTI4KChfX3YxNnFp
KV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyB0aGUgY29ycmVzcG9u
ZGluZyA4LWJpdCBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUFNVQkIgLyBQU1VCQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBtaW51ZW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZiB0aGUg
dmFsdWVzDQorLy8vICAgIGluIHRoZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdWJfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4
aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192MTZxdSlfX2EgLSAoX192MTZxdSlf
X2IpOw0KK30NCisNCisvLy8gU3VidHJhY3RzIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRl
Z2VyIHZhbHVlcyBpbiB0aGUgb3BlcmFuZHMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUFNVQlcgLyBQU1VCVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51ZW5k
cy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZiB0aGUgdmFsdWVzDQorLy8vICAg
IGluIHRoZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zdWJfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisg
IHJldHVybiAoX19tMTI4aSkoKF9fdjhodSlfX2EgLSAoX192OGh1KV9fYik7DQorfQ0KKw0KKy8v
LyBTdWJ0cmFjdHMgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGludGVnZXIgdmFsdWVzIGluIHRo
ZSBvcGVyYW5kcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCRCAvIFBTVUJE
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzdWJ0
cmFoZW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCisvLy8gICAgaW4gdGhlIG9wZXJhbmRz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1
Yl9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhp
KSgoX192NHN1KV9fYSAtIChfX3Y0c3UpX19iKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBzaWdu
ZWQgb3IgdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmFsdWVzIGFuZCB3cml0ZXMgdGhlDQorLy8v
ICAgIGRpZmZlcmVuY2UgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRp
b24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1VCUSA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3VidHJhaGVuZC4NCisvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGlmZmVyZW5jZSBvZiB0
aGUgdmFsdWVzIGluDQorLy8vICAgIHRoZSBvcGVyYW5kcy4NCisNCisjaWZuZGVmIF9fR05VQ19f
DQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9z
dWJfc2k2NChfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVp
bHRpbl9pYTMyX3BzdWJxKChfX3YxZGkpX19hLCAoX192MWRpKV9fYik7DQorfQ0KKyNlbmRpZg0K
Kw0KKy8vLyBTdWJ0cmFjdHMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIFsyIHgg
aTY0XSB2ZWN0b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTVUJRIC8gUFNV
QlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1
YnRyYWhlbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgZGlmZmVyZW5jZXMgb2YgdGhlIHZhbHVlcw0KKy8vLyAgICBpbiB0aGUgb3BlcmFu
ZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
c3ViX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEy
OGkpKChfX3YyZHUpX19hIC0gKF9fdjJkdSlfX2IpOw0KK30NCisNCisvLy8gU3VidHJhY3RzIGNv
cnJlc3BvbmRpbmcgOC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dCBhbmQN
CisvLy8gICAgcmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0
ZXMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyAgICBEaWZmZXJlbmNlcyBncmVhdGVyIHRoYW4g
MHg3RiBhcmUgc2F0dXJhdGVkIHRvIDB4N0YsIGFuZCBkaWZmZXJlbmNlcyBsZXNzDQorLy8vICAg
IHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUFNVQlNCIC8gUFNVQlNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IG1pbnVlbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMN
CisvLy8gICAgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJzYjEyOCgoX192MTZx
aSlfX2EsIChfX3YxNnFpKV9fYik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgY29ycmVzcG9uZGlu
ZyAxNi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dCBhbmQNCisvLy8gICAg
cmV0dXJucyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMgaW4gdGhl
IGRlc3RpbmF0aW9uLg0KKy8vLyAgICBEaWZmZXJlbmNlcyBncmVhdGVyIHRoYW4gMHg3RkZGIGFy
ZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLCBhbmQgdmFsdWVzIGxlc3MNCisvLy8gICAgdGhhbiAweDgw
MDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUFNVQlNXIC8gUFNVQlNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1pbnVl
bmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2VzIG9mIHRoZSB2YWx1ZXMNCisvLy8g
ICAgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3N1YnNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Vic3cxMjgoKF9fdjhoaSlfX2Es
IChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBjb3JyZXNwb25kaW5nIDgtYml0
IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGluIHRoZSBpbnB1dA0KKy8vLyAgICBhbmQgcmV0dXJu
cyB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMgaW4gdGhlDQorLy8v
ICAgIGRlc3RpbmF0aW9uLiBEaWZmZXJlbmNlcyBsZXNzIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVk
IHRvIDB4MDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNVQlVTQiAvIFBTVUJV
U0IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHN1
YnRyYWhlbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgdW5zaWduZWQgaW50ZWdlcg0KKy8vLyAgICBkaWZmZXJlbmNlcyBvZiB0aGUgdmFs
dWVzIGluIHRoZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9zdWJzX2VwdTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3VidXNiMTI4KChfX3YxNnFpKV9f
YSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBjb3JyZXNwb25kaW5nIDE2
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUgaW5wdXQNCisvLy8gICAgYW5kIHJl
dHVybnMgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzIGluIHRoZQ0K
Ky8vLyAgICBkZXN0aW5hdGlvbi4gRGlmZmVyZW5jZXMgbGVzcyB0aGFuIDB4MDAwMCBhcmUgc2F0
dXJhdGVkIHRvIDB4MDAwMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1VCVVNX
IC8gUFNVQlVTVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSB1bnNpZ25lZCBpbnRlZ2VyDQorLy8vICAgIGRpZmZlcmVuY2VzIG9m
IHRoZSB2YWx1ZXMgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfZXB1MTYoX19tMTI4aSBfX2EsIF9fbTEyOGkg
X19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3VidXN3MTI4KChf
X3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJpdHdpc2Ug
QU5EIG9mIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9ycy4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQQU5EIC8gUEFORCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYml0
d2lzZSBBTkQgb2YgdGhlIHZhbHVlcw0KKy8vLyAgICBpbiBib3RoIG9wZXJhbmRzLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2FuZF9zaTEyOChf
X20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSgoX192MmR1
KV9fYSAmIChfX3YyZHUpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBBTkQg
b2YgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzLCB1c2luZyB0aGUNCisvLy8gICAgb25lJ3Mg
Y29tcGxlbWVudCBvZiB0aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNlIG9w
ZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEFORE4gLyBQQU5ETiA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4gVGhlIG9uZSdzIGNvbXBs
ZW1lbnQNCisvLy8gICAgb2YgdGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBiaXR3aXNlIEFORC4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IHJpZ2h0IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlIG9uZSdzDQorLy8vICAgIGNv
bXBsZW1lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYW5kIHRoZSB2YWx1ZXMgaW4gdGhlIHNlY29u
ZCBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2FuZG5vdF9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0
dXJuIChfX20xMjhpKSh+KF9fdjJkdSlfX2EgJiAoX192MmR1KV9fYik7DQorfQ0KKy8vLyBQZXJm
b3JtcyBhIGJpdHdpc2UgT1Igb2YgdHdvIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3JzLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBPUiAvIFBPUiA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgYml0d2lzZSBPUiBvZiB0aGUgdmFsdWVzDQorLy8vICAgIGluIGJvdGggb3BlcmFu
ZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
b3Jfc2kxMjgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4
aSkoKF9fdjJkdSlfX2EgfCAoX192MmR1KV9fYik7DQorfQ0KKw0KKy8vLyBQZXJmb3JtcyBhIGJp
dHdpc2UgZXhjbHVzaXZlIE9SIG9mIHR3byAxMjgtYml0IGludGVnZXIgdmVjdG9ycy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQWE9SIC8gUFhPUiA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291
cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgYml0d2lzZSBleGNsdXNpdmUgT1Igb2YgdGhlDQorLy8vICAgIHZhbHVlcyBp
biBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX3hvcl9zaTEyOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAg
cmV0dXJuIChfX20xMjhpKSgoX192MmR1KV9fYSBeIChfX3YyZHUpX19iKTsNCit9DQorDQorLy8v
IExlZnQtc2hpZnRzIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQgYnkgdGhlIHNw
ZWNpZmllZA0KKy8vLyAgICBudW1iZXIgb2YgYnl0ZXMuIExvdy1vcmRlciBiaXRzIGFyZSBjbGVh
cmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxj
b2RlDQorLy8vIF9fbTEyOGkgX21tX3NsbGlfc2kxMjgoX19tMTI4aSBhLCBjb25zdCBpbnQgaW1t
KTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFNMTERRIC8gUFNMTERRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIGltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUg
dmFsdWUgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxlZnQtc2hpZnQgb3BlcmFu
ZA0KKy8vLyAgICBcYSBhLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlLg0KKyNkZWZpbmUgX21tX3NsbGlfc2kx
MjgoYSwgaW1tKSBcDQorICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsZHFpMTI4X2J5dGVz
aGlmdCgoX192MmRpKShfX20xMjhpKShhKSwgKGludCkoaW1tKSkNCisNCisjZGVmaW5lIF9tbV9i
c2xsaV9zaTEyOChhLCBpbW0pIFwNCisgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGxkcWkx
MjhfYnl0ZXNoaWZ0KChfX3YyZGkpKF9fbTEyOGkpKGEpLCAoaW50KShpbW0pKQ0KKw0KKy8vLyBM
ZWZ0LXNoaWZ0cyBlYWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvcGVyYW5kDQorLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1v
cmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBT
TExXIC8gUFNMTFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJh
bmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3BlY2lm
eWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlDQorLy8vICAg
IGluIG9wZXJhbmQgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zbGxpX2VwaTE2KF9fbTEyOGkgX19h
LCBpbnQgX19jb3VudCkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNs
bHdpMTI4KChfX3Y4aGkpX19hLCBfX2NvdW50KTsNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIGVh
Y2ggMTYtYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQNCisv
Ly8gICAgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gTG93LW9yZGVyIGJpdHMgYXJl
IGNsZWFyZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNMTFcgLyBQU0xMVyA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBh
cmFtIF9fY291bnQNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJp
dHMgWzYzOjBdIHNwZWNpZnkgdGhlIG51bWJlciBvZiBiaXRzDQorLy8vICAgIHRvIGxlZnQtc2hp
ZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsX2VwaTE2
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3BzbGx3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fY291bnQpOw0KK30N
CisNCisvLy8gTGVmdC1zaGlmdHMgZWFjaCAzMi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3Igb3BlcmFuZA0KKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBi
aXRzLiBMb3ctb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQU0xMRCAvIFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNv
dXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBbiBpbnRlZ2VyIHZh
bHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIGxlZnQtc2hpZnQgZWFjaCB2YWx1
ZQ0KKy8vLyAgICBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxlZnQtc2hpZnRlZCB2YWx1ZXMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsaV9lcGkzMihf
X20xMjhpIF9fYSwgaW50IF9fY291bnQpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BzbGxkaTEyOCgoX192NHNpKV9fYSwgX19jb3VudCk7DQorfQ0KKw0KKy8vLyBMZWZ0
LXNoaWZ0cyBlYWNoIDMyLWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBv
cGVyYW5kDQorLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIExvdy1vcmRl
ciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTTExE
IC8gUFNMTEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQu
DQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBp
biB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cw0KKy8vLyAgICB0
byBsZWZ0LXNoaWZ0IGVhY2ggdmFsdWUgaW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFs
dWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X3NsbF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KK3sNCisgIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xsZDEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2Nv
dW50KTsNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIGVhY2ggNjQtYml0IHZhbHVlIGluIHRoZSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIG9wZXJhbmQNCisvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBu
dW1iZXIgb2YgYml0cy4gTG93LW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUFNMTFEgLyBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQW4g
aW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byBsZWZ0LXNoaWZ0
IGVhY2ggdmFsdWUNCisvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQgdmFsdWVz
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Ns
bGlfZXBpNjQoX19tMTI4aSBfX2EsIGludCBfX2NvdW50KQ0KK3sNCisgIHJldHVybiBfX2J1aWx0
aW5faWEzMl9wc2xscWkxMjgoKF9fdjJkaSlfX2EsIF9fY291bnQpOw0KK30NCisNCisvLy8gTGVm
dC1zaGlmdHMgZWFjaCA2NC1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b3BlcmFuZA0KKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBMb3ctb3Jk
ZXIgYml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU0xM
USAvIFBTTExRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5k
Lg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCisvLy8gICAg
dG8gbGVmdC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbGVmdC1zaGlmdGVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9zbGxfZXBpNjQoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19jb3VudCkNCit7DQorICByZXR1cm4g
X19idWlsdGluX2lhMzJfcHNsbHExMjgoKF9fdjJkaSlfX2EsIChfX3YyZGkpX19jb3VudCk7DQor
fQ0KKw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3Igb3BlcmFuZA0KKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBv
ZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduDQorLy8vICAg
IGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQU1JBVyAvIFBTUkFXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBv
cGVyYW5kLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNw
ZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUNCisv
Ly8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmFpX2VwaTE2KF9fbTEy
OGkgX19hLCBpbnQgX19jb3VudCkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lh
MzJfcHNyYXdpMTI4KChfX3Y4aGkpX19hLCBfX2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNo
aWZ0cyBlYWNoIDE2LWJpdCB2YWx1ZSBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVy
YW5kDQorLy8vICAgIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIg
Yml0cyBhcmUgZmlsbGVkIHdpdGggdGhlIHNpZ24NCisvLy8gICAgYml0IG9mIHRoZSBpbml0aWFs
IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBTUkFXIC8gUFNSQVcgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJh
bSBfX2NvdW50DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRz
IFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0cw0KKy8vLyAgICB0byByaWdodC1zaGlm
dCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3JhX2VwaTE2
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291bnQpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3BzcmF3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fY291bnQpOw0KK30N
CisNCisvLy8gUmlnaHQtc2hpZnRzIGVhY2ggMzItYml0IHZhbHVlIGluIHRoZSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIG9wZXJhbmQNCisvLy8gICAgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Yg
Yml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbg0KKy8vLyAgICBi
aXQgb2YgdGhlIGluaXRpYWwgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UFNSQUQgLyBQU1JBRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3Bl
cmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQW4gaW50ZWdlciB2YWx1ZSBzcGVj
aWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlDQorLy8v
ICAgIGluIG9wZXJhbmQgXGEgX19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3JhaV9lcGkzMihfX20xMjhp
IF9fYSwgaW50IF9fY291bnQpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X3BzcmFkaTEyOCgoX192NHNpKV9fYSwgX19jb3VudCk7DQorfQ0KKw0KKy8vLyBSaWdodC1zaGlm
dHMgZWFjaCAzMi1iaXQgdmFsdWUgaW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFu
ZA0KKy8vLyAgICBieSB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJp
dHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduDQorLy8vICAgIGJpdCBvZiB0aGUgaW5pdGlhbCB2
YWx1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JBRCAvIFBTUkFEIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0g
X19jb3VudA0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgaW4gd2hpY2ggYml0cyBb
NjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCisvLy8gICAgdG8gcmlnaHQtc2hpZnQg
ZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NyYV9lcGkzMihf
X20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1
aWx0aW5faWEzMl9wc3JhZDEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2NvdW50KTsNCit9DQor
DQorLy8vIFJpZ2h0LXNoaWZ0cyB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kIGJ5
IHRoZSBzcGVjaWZpZWQNCisvLy8gICAgbnVtYmVyIG9mIGJ5dGVzLiBIaWdoLW9yZGVyIGJpdHMg
YXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBfbW1fc3JsaV9zaTEyOChfX20xMjhpIGEsIGNvbnN0
IGludCBpbW0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMRFEgLyBQU1JMRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIGENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gaW1tDQorLy8vICAgIEFuIGlt
bWVkaWF0ZSB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmlnaHQtc2hp
ZnQgb3BlcmFuZA0KKy8vLyAgICBcYSBhLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZS4NCisjaWZkZWYgX19H
TlVDX18NCisjZGVmaW5lIF9tbV9ic3JsaV9zaTEyOChhLCBuKSBcDQorICAgICgoX19tMTI4aSlf
X2J1aWx0aW5faWEzMl9wc3JsZHFpMTI4ICgoX19tMTI4aSkoYSksIChpbnQpKG4pICogOCkpDQor
I2RlZmluZSBfbW1fc3JsaV9zaTEyOChhLCBuKSBcDQorICAgICgoX19tMTI4aSlfX2J1aWx0aW5f
aWEzMl9wc3JsZHFpMTI4ICgoX19tMTI4aSkoYSksIChpbnQpKG4pICogOCkpDQorI2Vsc2UNCisj
ZGVmaW5lIF9tbV9zcmxpX3NpMTI4KGEsIGltbSkgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lh
MzJfcHNybGRxaTEyOF9ieXRlc2hpZnQoKF9fdjJkaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkp
DQorI2RlZmluZSBfbW1fYnNybGlfc2kxMjgoYSwgaW1tKSBcDQorICAoX19tMTI4aSlfX2J1aWx0
aW5faWEzMl9wc3JsZHFpMTI4X2J5dGVzaGlmdCgoX192MmRpKShfX20xMjhpKShhKSwgKGludCko
aW1tKSkNCisjZW5kaWYNCisNCisNCisvLy8gUmlnaHQtc2hpZnRzIGVhY2ggb2YgMTYtYml0IHZh
bHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8vLyAgICBvcGVyYW5kIGJ5IHRo
ZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3JkZXIgYml0cyBhcmUgY2xlYXJlZC4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JMVyAvIFBTUkxXIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccGFyYW0gX19jb3Vu
dA0KKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBiaXRz
IHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUNCisvLy8gICAgaW4gb3BlcmFuZCBcYSBfX2EuDQor
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSByaWdo
dC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9zcmxpX2VwaTE2KF9fbTEyOGkgX19hLCBpbnQgX19jb3VudCkNCit7DQor
ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHdpMTI4KChfX3Y4aGkpX19hLCBf
X2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDE2LWJpdCB2YWx1ZXMg
aW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb3BlcmFuZCBieSB0aGUgc3Bl
Y2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTFcgLyBQU1JMVyA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisv
Ly8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluIHdoaWNoIGJpdHMgWzYzOjBdIHNwZWNp
ZnkgdGhlIG51bWJlciBvZiBiaXRzDQorLy8vICAgIHRvIHJpZ2h0LXNoaWZ0IGVhY2ggdmFsdWUg
aW4gb3BlcmFuZCBcYSBfX2EuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmxfZXBpMTYoX19tMTI4aSBfX2Es
IF9fbTEyOGkgX19jb3VudCkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cHNybHcxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19jb3VudCk7DQorfQ0KKw0KKy8vLyBSaWdo
dC1zaGlmdHMgZWFjaCBvZiAzMi1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0IGludGVnZXIgdmVj
dG9yDQorLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYml0cy4gSGln
aC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBTUkxEIC8gUFNSTEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc291cmNlIG9w
ZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEFuIGludGVnZXIgdmFsdWUgc3Bl
Y2lmeWluZyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZQ0KKy8v
LyAgICBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybGlfZXBpMzIoX19tMTI4
aSBfX2EsIGludCBfX2NvdW50KQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wc3JsZGkxMjgoKF9fdjRzaSlfX2EsIF9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hp
ZnRzIGVhY2ggb2YgMzItYml0IHZhbHVlcyBpbiB0aGUgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvcg0K
Ky8vLyAgICBvcGVyYW5kIGJ5IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJpdHMuIEhpZ2gtb3Jk
ZXIgYml0cyBhcmUgY2xlYXJlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQU1JM
RCAvIFBTUkxEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBvcGVyYW5k
Lg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
aW4gd2hpY2ggYml0cyBbNjM6MF0gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJpdHMNCisvLy8gICAg
dG8gcmlnaHQtc2hpZnQgZWFjaCB2YWx1ZSBpbiBvcGVyYW5kIFxhIF9fYS4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQg
dmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3NybF9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2NvdW50KQ0KK3sNCisgIHJldHVy
biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3JsZDEyOCgoX192NHNpKV9fYSwgKF9fdjRzaSlf
X2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIG9mIDY0LWJpdCB2YWx1ZXMg
aW4gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb3BlcmFuZCBieSB0aGUgc3Bl
Y2lmaWVkIG51bWJlciBvZiBiaXRzLiBIaWdoLW9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFNSTFEgLyBQU1JMUSA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIHRoZSBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fY291bnQNCisv
Ly8gICAgQW4gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byBy
aWdodC1zaGlmdCBlYWNoIHZhbHVlDQorLy8vICAgIGluIG9wZXJhbmQgXGEgX19hLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hp
ZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fc3JsaV9lcGk2NChfX20xMjhpIF9fYSwgaW50IF9fY291bnQpDQorew0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9pYTMyX3BzcmxxaTEyOCgoX192MmRpKV9fYSwgX19jb3VudCk7DQorfQ0K
Kw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCBvZiA2NC1iaXQgdmFsdWVzIGluIHRoZSAxMjgtYml0
IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9wZXJhbmQgYnkgdGhlIHNwZWNpZmllZCBudW1iZXIg
b2YgYml0cy4gSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlBTUkxRIC8gUFNSTFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBpbiB3aGljaCBiaXRzIFs2MzowXSBzcGVjaWZ5IHRoZSBudW1iZXIg
b2YgYml0cw0KKy8vLyAgICB0byByaWdodC1zaGlmdCBlYWNoIHZhbHVlIGluIG9wZXJhbmQgXGEg
X19hLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0
aGUgcmlnaHQtc2hpZnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fc3JsX2VwaTY0KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fY291
bnQpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BzcmxxMTI4KChfX3YyZGkpX19hLCAo
X192MmRpKV9fY291bnQpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVz
cG9uZGluZyA4LWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0
b3JzIGZvciBlcXVhbGl0eS4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAw
eEZGDQorLy8vICAgIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBD
TVBFUUIgLyBQQ01QRVFCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBlcV9lcGk4KF9f
bTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3YxNnFp
KV9fYSA9PSAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUg
Y29ycmVzcG9uZGluZyAxNi1iaXQgdmFsdWVzIG9mIHRoZSAxMjgtYml0DQorLy8vICAgIGludGVn
ZXIgdmVjdG9ycyBmb3IgZXF1YWxpdHkuIEVhY2ggY29tcGFyaXNvbiB5aWVsZHMgMHgwIGZvciBm
YWxzZSwNCisvLy8gICAgMHhGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBDTVBFUVcgLyBQQ01QRVFXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFyYW0g
X19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBl
cV9lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhp
KSgoX192OGhpKV9fYSA9PSAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNo
IG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCB2YWx1ZXMgb2YgdGhlIDEyOC1iaXQNCisvLy8g
ICAgaW50ZWdlciB2ZWN0b3JzIGZvciBlcXVhbGl0eS4gRWFjaCBjb21wYXJpc29uIHlpZWxkcyAw
eDAgZm9yIGZhbHNlLA0KKy8vLyAgICAweEZGRkZGRkZGIGZvciB0cnVlLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFUUQgLyBQQ01QRVFEIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlz
b24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jbXBlcV9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAgcmV0
dXJuIChfX20xMjhpKSgoX192NHNpKV9fYSA9PSAoX192NHNpKV9fYik7DQorfQ0KKw0KKy8vLyBD
b21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25lZCA4LWJpdCB2YWx1ZXMgb2Yg
dGhlIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBpZiB0aGUg
dmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kIGFyZQ0KKy8vLyAgICBncmVhdGVyIHRoYW4gdGhv
c2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLiBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IN
CisvLy8gICAgZmFsc2UsIDB4RkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUENNUEdUQiAvIFBDTVBHVEIgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGd0
X2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIC8qIFRoaXMgZnVuY3Rpb24g
YWx3YXlzIHBlcmZvcm1zIGEgc2lnbmVkIGNvbXBhcmlzb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hh
cg0KKyAgICAgd2hpY2ggbWF5IGJlIHNpZ25lZCBvciB1bnNpZ25lZCwgc28gdXNlIF9fdjE2cXMu
ICovDQorICByZXR1cm4gKF9fbTEyOGkpKChfX3YxNnFzKV9fYSA+IChfX3YxNnFzKV9fYik7DQor
fQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25lZCAxNi1i
aXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9ycyB0byBkZXRl
cm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgb3BlcmFuZA0KKy8vLyAgICBhcmUgZ3Jl
YXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gICAgRWFj
aCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNlLCAweEZGRkYgZm9yIHRydWUuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEdUVyAvIFBDTVBHVFcgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2NtcGd0X2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOGkpKChfX3Y4aGkpX19hID4gKF9fdjhoaSlfX2IpOw0KK30NCisN
CisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBzaWduZWQgMzItYml0IHZh
bHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5l
IGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQNCisvLy8gICAgYXJlIGdyZWF0ZXIg
dGhhbiB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIEVhY2ggY29t
cGFyaXNvbiB5aWVsZHMgMHgwIGZvciBmYWxzZSwgMHhGRkZGRkZGRiBmb3IgdHJ1ZS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QR1REIC8gUENNUEdURCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3Rvci4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Iu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBj
b21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY21wZ3RfZXBpMzIoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4aSkoKF9fdjRzaSlfX2EgPiAoX192NHNpKV9fYik7DQorfQ0KKw0K
Ky8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNpZ25lZCA4LWJpdCB2YWx1
ZXMgb2YgdGhlIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3JzIHRvIGRldGVybWluZSBp
ZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSBsZXNzDQorLy8vICAgIHRoYW4g
dGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBFYWNoIGNvbXBhcmlz
b24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUENNUEdUQiAvIFBDTVBHVEIgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiBy
ZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX2NtcGx0X2VwaTgoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgIHJldHVybiBf
bW1fY21wZ3RfZXBpOChfX2IsIF9fYSk7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRo
ZSBjb3JyZXNwb25kaW5nIHNpZ25lZCAxNi1iaXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgt
Yml0IGludGVnZXIgdmVjdG9ycyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmly
c3Qgb3BlcmFuZA0KKy8vLyAgICBhcmUgbGVzcyB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3Bl
cmFuZC4NCisvLy8NCisvLy8gICAgRWFjaCBjb21wYXJpc29uIHlpZWxkcyAweDAgZm9yIGZhbHNl
LCAweEZGRkYgZm9yIHRydWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEdU
VyAvIFBDTVBHVFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
QSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGx0X2VwaTE2KF9fbTEy
OGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICByZXR1cm4gX21tX2NtcGd0X2VwaTE2KF9fYiwg
X19hKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2ln
bmVkIDMyLWJpdCB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Jz
IHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdCBvcGVyYW5kDQorLy8vICAg
IGFyZSBsZXNzIHRoYW4gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0KKy8vLyAg
ICBFYWNoIGNvbXBhcmlzb24geWllbGRzIDB4MCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9yIHRy
dWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUEdURCAvIFBDTVBHVEQgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVn
ZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGx0X2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhp
IF9fYikNCit7DQorICByZXR1cm4gX21tX2NtcGd0X2VwaTMyKF9fYiwgX19hKTsNCit9DQorDQor
I2lmZGVmIF9feDg2XzY0X18NCisvLy8gQ29udmVydHMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIg
dmFsdWUgZnJvbSB0aGUgc2Vjb25kIG9wZXJhbmQgaW50byBhDQorLy8vICAgIGRvdWJsZS1wcmVj
aXNpb24gdmFsdWUgYW5kIHJldHVybnMgaXQgaW4gdGhlIGxvd2VyIGVsZW1lbnQgb2YgYSBbMiB4
DQorLy8vICAgIGRvdWJsZV0gdmVjdG9yOyB0aGUgdXBwZXIgZWxlbWVudCBvZiB0aGUgcmV0dXJu
ZWQgdmVjdG9yIGlzIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciBlbGVtZW50IG9mIHRo
ZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNE
IC8gQ1ZUU0kyU0QgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhlIHVwcGVyIDY0IGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICBjb3BpZWQgdG8gdGhlIHVwcGVyIDY0IGJpdHMg
b2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHNp
Z25lZCBpbnRlZ2VyIG9wZXJhbmQgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVk
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB3aG9zZSBs
b3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUg
c2Vjb25kIG9wZXJhbmQuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KKy8vLyAg
ICB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzaTY0X3NkKF9fbTEyOGQg
X19hLCBsb25nIGxvbmcgX19iKQ0KK3sNCisgIF9fYVswXSA9IF9fYjsNCisgIHJldHVybiBfX2E7
DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgZmlyc3QgKGxvd2VyKSBlbGVtZW50IG9mIGEgdmVj
dG9yIG9mIFsyIHggZG91YmxlXSBpbnRvIGENCisvLy8gICAgNjQtYml0IHNpZ25lZCBpbnRlZ2Vy
IHZhbHVlLCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgcm91bmRpbmcgbW9kZS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTRDJTSSAvIENWVFNEMlNJIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZSB1c2VkIGluIHRoZQ0KKy8vLyAgICBj
b252ZXJzaW9uLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBzaWduZWQgaW50ZWdlciBjb250YWlu
aW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzZF9zaTY0KF9fbTEyOGQgX19hKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9jdnRzZDJzaTY0KChfX3YyZGYpX19hKTsNCit9DQorDQorLy8v
IENvbnZlcnRzIHRoZSBmaXJzdCAobG93ZXIpIGVsZW1lbnQgb2YgYSB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIGludG8gYQ0KKy8vLyAgICA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUsIHRydW5j
YXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzIGluZXhhY3QuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQ1ZUVFNEMlNJIC8gQ1ZUVFNEMlNJIDwvYz4NCisvLy8gICBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlIHVzZWQgaW4gdGhlDQorLy8vICAgIGNv
bnZlcnNpb24uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5p
bmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHRzZF9zaTY0KF9fbTEyOGQgX19hKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c2Qyc2k2NCgoX192MmRmKV9fYSk7DQorfQ0KKyNlbmRp
Zg0KKw0KKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGkzMl0gaW50byBhIHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlREUTJQUyAv
IENWVERRMlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3Rh
dGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRlcGkzMl9w
cyhfX20xMjhpIF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOClf
X2J1aWx0aW5faWEzMl9jdnRkcTJwcyAoKF9fdjRzaSkgX19hKTsNCisjZWxzZQ0KKyAgcmV0dXJu
IChfX20xMjgpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoKF9fdjRzaSlfX2EsIF9fdjRzZik7DQor
I2VuZGlmDQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRv
IGEgdmVjdG9yIG9mIFs0IHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZD
VlRQUzJEUSAvIENWVFBTMkRRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSBj
b252ZXJ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHBzX2VwaTMyKF9fbTEyOCBfX2EpDQorew0KKyAgcmV0
dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBzMmRxKChfX3Y0c2YpX19hKTsNCit9DQor
DQorLy8vIENvbnZlcnRzIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8gYSB2ZWN0b3Igb2Yg
WzQgeCBpMzJdLA0KKy8vLyAgICB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcyBpbmV4
YWN0Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRQUzJEUSAvIENWVFRQUzJE
USA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnR0
cHNfZXBpMzIoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lh
MzJfY3Z0dHBzMmRxKChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIFJldHVybnMgYSB2ZWN0b3Ig
b2YgWzQgeCBpMzJdIHdoZXJlIHRoZSBsb3dlc3QgZWxlbWVudCBpcyB0aGUgaW5wdXQNCisvLy8g
ICAgb3BlcmFuZCBhbmQgdGhlIHJlbWFpbmluZyBlbGVtZW50cyBhcmUgemVyby4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEIC8gTU9WRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9wZXJh
bmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHNpMzJfc2kx
MjgoaW50IF9fYSkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192NHNp
KXsgX19hLCAwLCAwLCAwIH07DQorfQ0KKw0KKyNpZmRlZiBfX3g4Nl82NF9fDQorLy8vIFJldHVy
bnMgYSB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdoZXJlIHRoZSBsb3dlciBlbGVtZW50IGlzIHRoZSBp
bnB1dA0KKy8vLyAgICBvcGVyYW5kIGFuZCB0aGUgdXBwZXIgZWxlbWVudCBpcyB6ZXJvLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgc2lnbmVkIGludGVnZXIg
b3BlcmFuZCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRl
ZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9jdnRzaTY0X3NpMTI4KGxvbmcgbG9uZyBfX2EpDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5z
aW9uX18gKF9fbTEyOGkpKF9fdjJkaSl7IF9fYSwgMCB9Ow0KK30NCisjZW5kaWYNCisNCisvLy8g
TW92ZXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBp
MzJdIHRvIGENCisvLy8gICAgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkQgLyBNT1ZEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgbGVh
c3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBhcmUgbW92ZWQgdG8gdGhlDQorLy8vICAgIGRlc3RpbmF0
aW9uLg0KKy8vLyBccmV0dXJucyBBIDMyLWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRo
ZSBtb3ZlZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2N2dHNpMTI4X3NpMzIoX19tMTI4aSBfX2EpDQorew0KKyAgX192NHNpIF9fYiA9IChf
X3Y0c2kpX19hOw0KKyAgcmV0dXJuIF9fYlswXTsNCit9DQorDQorI2lmZGVmIF9feDg2XzY0X18N
CisvLy8gTW92ZXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IDY0IGJpdHMgb2YgYSB2ZWN0b3Igb2Yg
WzIgeCBpNjRdIHRvIGENCisvLy8gICAgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSB2ZWN0b3Igb2YgWzIgeCBpNjRdLiBU
aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNjQgYml0cyBhcmUgbW92ZWQgdG8gdGhlDQorLy8vICAgIGRl
c3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBzaWduZWQgaW50ZWdlciBjb250YWlu
aW5nIHRoZSBtb3ZlZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX2N2dHNpMTI4X3NpNjQoX19tMTI4aSBfX2EpDQorew0KKyAgcmV0
dXJuIF9fYVswXTsNCit9DQorI2VuZGlmDQorDQorLy8vIE1vdmVzIHBhY2tlZCBpbnRlZ2VyIHZh
bHVlcyBmcm9tIGFuIGFsaWduZWQgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24NCisvLy8gICAgdG8g
ZWxlbWVudHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVk1PVkRRQSAvIE1PVkRRQSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19wDQorLy8vICAgIEFuIGFsaWduZWQgcG9pbnRlciB0byBhIG1lbW9yeSBsb2Nh
dGlvbiBjb250YWluaW5nIGludGVnZXIgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2xvYWRfc2kxMjgoX19tMTI4
aSBjb25zdCAqX19wKQ0KK3sNCisgIHJldHVybiAqX19wOw0KK30NCisNCisvLy8gTW92ZXMgcGFj
a2VkIGludGVnZXIgdmFsdWVzIGZyb20gYW4gdW5hbGlnbmVkIDEyOC1iaXQgbWVtb3J5IGxvY2F0
aW9uDQorLy8vICAgIHRvIGVsZW1lbnRzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisv
Ly8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJp
bnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZEUVUgLyBNT1ZEUVUgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1v
cnkgbG9jYXRpb24gY29udGFpbmluZyBpbnRlZ2VyIHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1vdmVkIHZhbHVlcy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2FkdV9zaTEy
OChfX20xMjhpIGNvbnN0ICpfX3ApDQorew0KKyAgc3RydWN0IF9fbG9hZHVfc2kxMjggew0KKyAg
ICBfX20xMjhpIF9fdjsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxp
YXNfXykpOw0KKyAgcmV0dXJuICgoc3RydWN0IF9fbG9hZHVfc2kxMjgqKV9fcCktPl9fdjsNCit9
DQorDQorLy8vIFJldHVybnMgYSB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdoZXJlIHRoZSBsb3dlciBl
bGVtZW50IGlzIHRha2VuIGZyb20NCisvLy8gICAgdGhlIGxvd2VyIGVsZW1lbnQgb2YgdGhlIG9w
ZXJhbmQsIGFuZCB0aGUgdXBwZXIgZWxlbWVudCBpcyB6ZXJvLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVk1PVlEgLyBNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX3ANCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIEJpdHMgWzYz
OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlv
bi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSBsb3dl
ciBvcmRlciBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIG1vdmVkIHZhbHVlLiBUaGUgaGlnaGVy
IG9yZGVyIGJpdHMgYXJlIGNsZWFyZWQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZGxfZXBpNjQoX19tMTI4aSBjb25zdCAqX19wKQ0KK3sN
CisgIHN0cnVjdCBfX21tX2xvYWRsX2VwaTY0X3N0cnVjdCB7DQorICAgIGxvbmcgbG9uZyBfX3U7
DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgIHJl
dHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhpKSB7ICgoc3RydWN0IF9fbW1fbG9hZGxfZXBpNjRf
c3RydWN0KilfX3ApLT5fX3UsIDB9Ow0KK30NCisNCisvLy8gR2VuZXJhdGVzIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdIHdpdGggdW5zcGVjaWZpZWQgY29udGVudC4NCisvLy8gICAgVGhp
cyBjb3VsZCBiZSB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGFub3RoZXIgaW50cmluc2ljIGZ1bmN0
aW9uIHdoZXJlIHRoZQ0KKy8vLyAgICBhcmd1bWVudCBpcyByZXF1aXJlZCBidXQgdGhlIHZhbHVl
IGlzIG5vdCBhY3R1YWxseSB1c2VkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5nIGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMy
XSB3aXRoIHVuc3BlY2lmaWVkIGNvbnRlbnQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5kZWZpbmVkX3NpMTI4KHZvaWQpDQorew0KKyNpZmRl
ZiBfX0dOVUNfXw0KKyAgX19tMTI4aSBfX1ggPSBfX1g7DQorICByZXR1cm4gX19YOw0KKyNlbHNl
DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdW5kZWYxMjgoKTsNCisjZW5kaWYN
Cit9DQorDQorLy8vIEluaXRpYWxpemVzIGJvdGggNjQtYml0IHZhbHVlcyBpbiBhIDEyOC1iaXQg
dmVjdG9yIG9mIFsyIHggaTY0XSB3aXRoDQorLy8vICAgIHRoZSBzcGVjaWZpZWQgNjQtYml0IGlu
dGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3Qg
Y29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19xMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSB0aGUgdXBwZXIgNjQgYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24gdmVj
dG9yIG9mIFsyIHggaTY0XS4NCisvLy8gXHBhcmFtIF9fcTANCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlDQor
Ly8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBbMiB4IGk2NF0uDQorLy8vIFxyZXR1cm5zIEFu
IGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSB2
YWx1ZXMNCisvLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldF9lcGk2NHgobG9uZyBsb25n
IF9fcTEsIGxvbmcgbG9uZyBfX3EwKQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20x
MjhpKShfX3YyZGkpeyBfX3EwLCBfX3ExIH07DQorfQ0KKw0KKy8vLyBJbml0aWFsaXplcyBib3Ro
IDY0LWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gd2l0aA0KKy8v
LyAgICB0aGUgc3BlY2lmaWVkIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcy4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0
aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8v
LyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcTENCisvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDY0IGJpdHMgb2Yg
dGhlDQorLy8vICAgIGRlc3RpbmF0aW9uIHZlY3RvciBvZiBbMiB4IGk2NF0uDQorLy8vIFxwYXJh
bSBfX3EwDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbiB2ZWN0b3Igb2Yg
WzIgeCBpNjRdLg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgdmFsdWVzDQorLy8vICAgIHByb3ZpZGVkIGluIHRo
ZSBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9zZXRfZXBpNjQoX19tNjQgX19xMSwgX19tNjQgX19xMCkNCit7DQorICByZXR1cm4g
X21tX3NldF9lcGk2NHgoKGxvbmcgbG9uZylfX3ExLCAobG9uZyBsb25nKV9fcTApOw0KK30NCisN
CisvLy8gSW5pdGlhbGl6ZXMgdGhlIDMyLWJpdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGkzMl0gd2l0aA0KKy8vLyAgICB0aGUgc3BlY2lmaWVkIDMyLWJpdCBpbnRlZ2VyIHZh
bHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3Bv
bmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9faTMNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTI3Ojk2XSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBc
cGFyYW0gX19pMg0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFs5NTo2NF0gb2YgdGhlIGRlc3RpbmF0aW9uDQorLy8vICAgIHZlY3Rvci4NCisv
Ly8gXHBhcmFtIF9faTENCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgYml0cyBbNjM6MzJdIG9mIHRoZSBkZXN0aW5hdGlvbg0KKy8vLyAgICB2ZWN0b3Iu
DQorLy8vIFxwYXJhbSBfX2kwDQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5hdGlvbg0KKy8vLyAgICB2ZWN0
b3IuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
aTMyXSBjb250YWluaW5nIHRoZSB2YWx1ZXMNCisvLy8gICAgcHJvdmlkZWQgaW4gdGhlIG9wZXJh
bmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X3NldF9lcGkzMihpbnQgX19pMywgaW50IF9faTIsIGludCBfX2kxLCBpbnQgX19pMCkNCit7DQor
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192NHNpKXsgX19pMCwgX19pMSwgX19p
MiwgX19pM307DQorfQ0KKw0KKy8vLyBJbml0aWFsaXplcyB0aGUgMTYtYml0IHZhbHVlcyBpbiBh
IDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSB3aXRoDQorLy8vICAgIHRoZSBzcGVjaWZpZWQg
MTYtYml0IGludGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX193Nw0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVz
ZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTEyXSBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRp
b24gdmVjdG9yLg0KKy8vLyBccGFyYW0gX193Ng0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZh
bHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZQ0KKy8vLyAgICBkZXN0
aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX3c1DQorLy8vICAgIEEgMTYtYml0IGludGVn
ZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzk1OjgwXSBvZiB0aGUgZGVzdGluYXRp
b24NCisvLy8gICAgdmVjdG9yLg0KKy8vLyBccGFyYW0gX193NA0KKy8vLyAgICBBIDE2LWJpdCBp
bnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs3OTo2NF0gb2YgdGhlIGRlc3Rp
bmF0aW9uDQorLy8vICAgIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fdzMNCisvLy8gICAgQSAxNi1i
aXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6NDhdIG9mIHRoZSBk
ZXN0aW5hdGlvbg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX3cyDQorLy8vICAgIEEg
MTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjMyXSBvZiB0
aGUgZGVzdGluYXRpb24NCisvLy8gICAgdmVjdG9yLg0KKy8vLyBccGFyYW0gX193MQ0KKy8vLyAg
ICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMToxNl0g
b2YgdGhlIGRlc3RpbmF0aW9uDQorLy8vICAgIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fdzANCisv
Ly8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6
MF0gb2YgdGhlIGRlc3RpbmF0aW9uDQorLy8vICAgIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQW4g
aW5pdGlhbGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHZh
bHVlcw0KKy8vLyAgICBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0X2VwaTE2KHNob3J0IF9fdzcs
IHNob3J0IF9fdzYsIHNob3J0IF9fdzUsIHNob3J0IF9fdzQsIHNob3J0IF9fdzMsIHNob3J0IF9f
dzIsIHNob3J0IF9fdzEsIHNob3J0IF9fdzApDQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18g
KF9fbTEyOGkpKF9fdjhoaSl7IF9fdzAsIF9fdzEsIF9fdzIsIF9fdzMsIF9fdzQsIF9fdzUsIF9f
dzYsIF9fdzcgfTsNCit9DQorDQorLy8vIEluaXRpYWxpemVzIHRoZSA4LWJpdCB2YWx1ZXMgaW4g
YSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gd2l0aA0KKy8vLyAgICB0aGUgc3BlY2lmaWVk
IDgtYml0IGludGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19iMTUNCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbMTI3OjEy
MF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjE0DQorLy8vICAg
IEluaXRpYWxpemVzIGJpdHMgWzExOToxMTJdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQor
Ly8vIFxwYXJhbSBfX2IxMw0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxMTE6MTA0XSBvZiB0
aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iMTINCisvLy8gICAgSW5pdGlh
bGl6ZXMgYml0cyBbMTAzOjk2XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFy
YW0gX19iMTENCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbOTU6ODhdIG9mIHRoZSBkZXN0aW5h
dGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2IxMA0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRz
IFs4Nzo4MF0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fYjkNCisv
Ly8gICAgSW5pdGlhbGl6ZXMgYml0cyBbNzk6NzJdIG9mIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3Iu
DQorLy8vIFxwYXJhbSBfX2I4DQorLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzcxOjY0XSBvZiB0
aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iNw0KKy8vLyAgICBJbml0aWFs
aXplcyBiaXRzIFs2Mzo1Nl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisvLy8gXHBhcmFt
IF9fYjYNCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbNTU6NDhdIG9mIHRoZSBkZXN0aW5hdGlv
biB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2I1DQorLy8vICAgIEluaXRpYWxpemVzIGJpdHMgWzQ3
OjQwXSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19iNA0KKy8vLyAg
ICBJbml0aWFsaXplcyBiaXRzIFszOTozMl0gb2YgdGhlIGRlc3RpbmF0aW9uIHZlY3Rvci4NCisv
Ly8gXHBhcmFtIF9fYjMNCisvLy8gICAgSW5pdGlhbGl6ZXMgYml0cyBbMzE6MjRdIG9mIHRoZSBk
ZXN0aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxwYXJhbSBfX2IyDQorLy8vICAgIEluaXRpYWxpemVz
IGJpdHMgWzIzOjE2XSBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yLg0KKy8vLyBccGFyYW0gX19i
MQ0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRzIFsxNTo4XSBvZiB0aGUgZGVzdGluYXRpb24gdmVj
dG9yLg0KKy8vLyBccGFyYW0gX19iMA0KKy8vLyAgICBJbml0aWFsaXplcyBiaXRzIFs3OjBdIG9m
IHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEy
OC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSB2YWx1ZXMNCisvLy8gICAg
cHJvdmlkZWQgaW4gdGhlIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldF9lcGk4KGNoYXIgX19iMTUsIGNoYXIgX19iMTQsIGNo
YXIgX19iMTMsIGNoYXIgX19iMTIsIGNoYXIgX19iMTEsIGNoYXIgX19iMTAsIGNoYXIgX19iOSwg
Y2hhciBfX2I4LCBjaGFyIF9fYjcsIGNoYXIgX19iNiwgY2hhciBfX2I1LCBjaGFyIF9fYjQsIGNo
YXIgX19iMywgY2hhciBfX2IyLCBjaGFyIF9fYjEsIGNoYXIgX19iMCkNCit7DQorICByZXR1cm4g
X19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MTZxaSl7IF9fYjAsIF9fYjEsIF9fYjIsIF9fYjMs
IF9fYjQsIF9fYjUsIF9fYjYsIF9fYjcsIF9fYjgsIF9fYjksIF9fYjEwLCBfX2IxMSwgX19iMTIs
IF9fYjEzLCBfX2IxNCwgX19iMTUgfTsNCit9DQorDQorLy8vIEluaXRpYWxpemVzIGJvdGggdmFs
dWVzIGluIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciB3aXRoIHRoZQ0KKy8vLyAgICBzcGVjaWZp
ZWQgNjQtYml0IGludGVnZXIgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFu
ZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX3ENCisvLy8gICAgSW50ZWdlciB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBpbnRlZ2VyDQorLy8vICAg
IHZlY3Rvci4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbMiB4IGk2NF0gd2l0aCBib3RoDQorLy8vICAgIGVsZW1lbnRzIGNvbnRhaW5pbmcg
dGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldDFfZXBpNjR4KGxvbmcgbG9uZyBfX3Ep
DQorew0KKyAgcmV0dXJuIF9tbV9zZXRfZXBpNjR4KF9fcSwgX19xKTsNCit9DQorDQorLy8vIElu
aXRpYWxpemVzIGJvdGggdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIHdp
dGggdGhlDQorLy8vICAgIHNwZWNpZmllZCA2NC1iaXQgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGls
aXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8g
ICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ENCisvLy8gICAgQSA2NC1iaXQg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24g
aW50ZWdlcg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XSB3aXRoIGFsbCBlbGVtZW50cw0KKy8vLyAgICBjb250
YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXQxX2VwaTY0KF9fbTY0IF9f
cSkNCit7DQorICByZXR1cm4gX21tX3NldF9lcGk2NChfX3EsIF9fcSk7DQorfQ0KKw0KKy8vLyBJ
bml0aWFsaXplcyBhbGwgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIHdp
dGggdGhlDQorLy8vICAgIHNwZWNpZmllZCAzMi1iaXQgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGls
aXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8g
ICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2kNCisvLy8gICAgQSAzMi1iaXQg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24g
aW50ZWdlcg0KKy8vLyAgICB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSB3aXRoIGFsbCBlbGVtZW50cw0KKy8vLyAgICBjb250
YWluaW5nIHRoZSB2YWx1ZSBwcm92aWRlZCBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXQxX2VwaTMyKGludCBfX2kp
DQorew0KKyAgcmV0dXJuIF9tbV9zZXRfZXBpMzIoX19pLCBfX2ksIF9faSwgX19pKTsNCit9DQor
DQorLy8vIEluaXRpYWxpemVzIGFsbCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbOCB4
IGkxNl0gd2l0aCB0aGUNCisvLy8gICAgc3BlY2lmaWVkIDE2LWJpdCB2YWx1ZS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBp
cyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZp
Yw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBB
IDE2LWJpdCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0
aW5hdGlvbiBpbnRlZ2VyDQorLy8vICAgIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlh
bGl6ZWQgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdpdGggYWxsIGVsZW1lbnRzDQorLy8v
ICAgIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHByb3ZpZGVkIGluIHRoZSBvcGVyYW5kLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldDFfZXBpMTYo
c2hvcnQgX193KQ0KK3sNCisgIHJldHVybiBfbW1fc2V0X2VwaTE2KF9fdywgX193LCBfX3csIF9f
dywgX193LCBfX3csIF9fdywgX193KTsNCit9DQorDQorLy8vIEluaXRpYWxpemVzIGFsbCB2YWx1
ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gd2l0aCB0aGUNCisvLy8gICAgc3Bl
Y2lmaWVkIDgtYml0IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9l
cyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEFuIDgtYml0IHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGludGVnZXINCisvLy8gICAgdmVj
dG9yLg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IHZlY3RvciBvZiBbMTYg
eCBpOF0gd2l0aCBhbGwgZWxlbWVudHMNCisvLy8gICAgY29udGFpbmluZyB0aGUgdmFsdWUgcHJv
dmlkZWQgaW4gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fc2V0MV9lcGk4KGNoYXIgX19iKQ0KK3sNCisgIHJldHVybiBfbW1f
c2V0X2VwaTgoX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19i
LCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iKTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyDQor
Ly8vICAgICB3aXRoIHRoZSBzcGVjaWZpZWQgNjQtYml0IGludGVncmFsIHZhbHVlcy4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMgaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX3EwDQorLy8vICAgIEEgNjQtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8g
aW5pdGlhbGl6ZSB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUNCisvLy8gICAgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gX19xMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGlu
aXRpYWxpemUgdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlDQorLy8vICAgIHJlc3VsdC4NCisvLy8g
XHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRyX2VwaTY0KF9f
bTY0IF9fcTAsIF9fbTY0IF9fcTEpDQorew0KKyAgcmV0dXJuIF9tbV9zZXRfZXBpNjQoX19xMSwg
X19xMCk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvciwg
aW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlcg0KKy8vLyAgICAgd2l0aCB0aGUgc3BlY2lmaWVk
IDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFu
ZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2kwDQorLy8vICAgIEEgMzItYml0IGludGVncmFsIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19pMQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxp
emUgYml0cyBbNjM6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2kyDQorLy8vICAg
IEEgMzItYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0g
b2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9faTMNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdy
YWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRyX2Vw
aTMyKGludCBfX2kwLCBpbnQgX19pMSwgaW50IF9faTIsIGludCBfX2kzKQ0KK3sNCisgIHJldHVy
biBfbW1fc2V0X2VwaTMyKF9faTMsIF9faTIsIF9faTEsIF9faTApOw0KK30NCisNCisvLy8gQ29u
c3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IsIGluaXRpYWxpemVkIGluIHJldmVyc2Ug
b3JkZXINCisvLy8gICAgIHdpdGggdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdyYWwgdmFsdWVz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0
byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX193
MA0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMTU6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzENCisvLy8gICAgQSAxNi1i
aXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX193Mg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ3JhbCB2YWx1
ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxw
YXJhbSBfX3czDQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzQNCisvLy8g
ICAgQSAxNi1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzc5OjY0
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX193NQ0KKy8vLyAgICBBIDE2LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODBdIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX3c2DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X3c3DQorLy8vICAgIEEgMTYtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBi
aXRzIFsxMjc6MTEyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXpl
ZCAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldHJfZXBpMTYoc2hvcnQgX193MCwgc2hvcnQgX193MSwg
c2hvcnQgX193Miwgc2hvcnQgX193Mywgc2hvcnQgX193NCwgc2hvcnQgX193NSwgc2hvcnQgX193
Niwgc2hvcnQgX193NykNCit7DQorICByZXR1cm4gX21tX3NldF9lcGkxNihfX3c3LCBfX3c2LCBf
X3c1LCBfX3c0LCBfX3czLCBfX3cyLCBfX3cxLCBfX3cwKTsNCit9DQorDQorLy8vIENvbnN0cnVj
dHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVy
DQorLy8vICAgICB3aXRoIHRoZSBzcGVjaWZpZWQgOC1iaXQgaW50ZWdyYWwgdmFsdWVzLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNw
ZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19iMA0KKy8v
LyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNzow
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRl
Z3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHBhcmFtIF9fYjINCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19i
Mw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2I0DQorLy8vICAgIEFuIDgt
Yml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhl
IHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjUNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFs
dWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19iNg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2I3DQorLy8v
ICAgIEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs2Mzo1
Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjgNCisvLy8gICAgQW4gOC1iaXQgaW50
ZWdyYWwgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzcxOjY0XSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19iOQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2Vk
IHRvIGluaXRpYWxpemUgYml0cyBbNzk6NzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2IxMA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbODc6ODBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxMQ0KKy8vLyAgICBB
biA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbOTU6ODhdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IxMg0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3Jh
bCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19iMTMNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdyYWwgdmFsdWUgdXNlZCB0
byBpbml0aWFsaXplIGJpdHMgWzExMToxMDRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X2IxNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ3JhbCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUg
Yml0cyBbMTE5OjExMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjE1DQorLy8vICAg
IEFuIDgtYml0IGludGVncmFsIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxMjc6MTIw
XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX3NldHJfZXBpOChjaGFyIF9fYjAsIGNoYXIgX19iMSwgY2hhciBfX2IyLCBjaGFy
IF9fYjMsIGNoYXIgX19iNCwgY2hhciBfX2I1LCBjaGFyIF9fYjYsIGNoYXIgX19iNywgY2hhciBf
X2I4LCBjaGFyIF9fYjksIGNoYXIgX19iMTAsIGNoYXIgX19iMTEsIGNoYXIgX19iMTIsIGNoYXIg
X19iMTMsIGNoYXIgX19iMTQsIGNoYXIgX19iMTUpDQorew0KKyAgcmV0dXJuIF9tbV9zZXRfZXBp
OChfX2IxNSwgX19iMTQsIF9fYjEzLCBfX2IxMiwgX19iMTEsIF9fYjEwLCBfX2I5LCBfX2I4LCBf
X2I3LCBfX2I2LCBfX2I1LCBfX2I0LCBfX2IzLCBfX2IyLCBfX2IxLCBfX2IwKTsNCit9DQorDQor
Ly8vIENyZWF0ZXMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHRvIHplcm8u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWWE9SUFMgLyBYT1JQUyA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIHdpdGggYWxsIGVsZW1lbnRzIHNldCB0bw0KKy8vLyAgICB6ZXJvLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldHplcm9fc2kx
Mjgodm9pZCkNCit7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MmRpKXsg
MExMLCAwTEwgfTsNCit9DQorDQorLy8vIFN0b3JlcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
dG8gYSBtZW1vcnkgbG9jYXRpb24gYWxpZ25lZCBvbiBhDQorLy8vICAgIDEyOC1iaXQgYm91bmRh
cnkuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WQVBTIC8gTU9WQVBTIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRv
IGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBpbnRlZ2Vy
DQorLy8vICAgIHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIG1vdmVkLg0KK3N0YXRpYyBf
X2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0b3JlX3NpMTI4KF9fbTEy
OGkgKl9fcCwgX19tMTI4aSBfX2IpDQorew0KKyAgKl9fcCA9IF9fYjsNCit9DQorDQorLy8vIFN0
b3JlcyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gYW4gdW5hbGlnbmVkIG1lbW9yeSBsb2Nh
dGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgLyBNT1ZVUFMgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIg
dG8gYSBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGludGVnZXIgdmFsdWVz
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3RvcmV1X3NpMTI4KF9fbTEyOGkgKl9fcCwgX19tMTI4
aSBfX2IpDQorew0KKyAgc3RydWN0IF9fc3RvcmV1X3NpMTI4IHsNCisgICAgX19tMTI4aSBfX3Y7
DQorICB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgICgo
c3RydWN0IF9fc3RvcmV1X3NpMTI4KilfX3ApLT5fX3YgPSBfX2I7DQorfQ0KKw0KKy8vLyBNb3Zl
cyBieXRlcyBzZWxlY3RlZCBieSB0aGUgbWFzayBmcm9tIHRoZSBmaXJzdCBvcGVyYW5kIHRvIHRo
ZQ0KKy8vLyAgICBzcGVjaWZpZWQgdW5hbGlnbmVkIG1lbW9yeSBsb2NhdGlvbi4gV2hlbiBhIG1h
c2sgYml0IGlzIDEsIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGJ5dGUgaXMgd3JpdHRlbiwg
b3RoZXJ3aXNlIGl0IGlzIG5vdCB3cml0dGVuLg0KKy8vLw0KKy8vLyAgICBUbyBtaW5pbWl6ZSBj
YWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3JhbCAodW5saWtlbHkgdG8g
YmUNCisvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4gRXhjZXB0aW9uIGFuZCB0cmFwIGJlaGF2aW9y
IGZvciBlbGVtZW50cyBub3Qgc2VsZWN0ZWQNCisvLy8gICAgZm9yIHN0b3JhZ2UgdG8gbWVtb3J5
IGFyZSBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWTUFTS01PVkRRVSAvIE1BU0tNT1ZEUVUgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19kDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgbW92ZWQuDQorLy8vIFxwYXJhbSBfX24NCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG1hc2suIFRoZSBtb3N0
IHNpZ25pZmljYW50IGJpdCBvZg0KKy8vLyAgICBlYWNoIGJ5dGUgcmVwcmVzZW50cyB0aGUgbWFz
ayBiaXRzLg0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhbiB1bmFsaWdu
ZWQgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24gd2hlcmUgdGhlIHNwZWNpZmllZA0KKy8vLyAgICB2
YWx1ZXMgYXJlIG1vdmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX21hc2ttb3ZldV9zaTEyOChfX20xMjhpIF9fZCwgX19tMTI4aSBfX24sIGNoYXIg
Kl9fcCkNCit7DQorICBfX2J1aWx0aW5faWEzMl9tYXNrbW92ZHF1KChfX3YxNnFpKV9fZCwgKF9f
djE2cWkpX19uLCBfX3ApOw0KK30NCisNCisvLy8gU3RvcmVzIHRoZSBsb3dlciA2NCBiaXRzIG9m
IGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGk2NF0gdG8NCisvLy8gICAgYSBtZW1v
cnkgbG9jYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBTIC8gTU9W
TFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBw
b2ludGVyIHRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUg
bG93ZXIgNjQgYml0cw0KKy8vLyAgICBvZiB0aGUgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyLg0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4
IGk2NF0uIFRoZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIHZhbHVlIHRvIGJl
IHN0b3JlZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9zdG9yZWxfZXBpNjQoX19tMTI4aSAqX19wLCBfX20xMjhpIF9fYSkNCit7DQorICBzdHJ1Y3Qg
X19tbV9zdG9yZWxfZXBpNjRfc3RydWN0IHsNCisgICAgbG9uZyBsb25nIF9fdTsNCisgIH0gX19h
dHRyaWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgKChzdHJ1Y3QgX19t
bV9zdG9yZWxfZXBpNjRfc3RydWN0KilfX3ApLT5fX3UgPSBfX2FbMF07DQorfQ0KKw0KKy8vLyBT
dG9yZXMgYSAxMjgtYml0IGZsb2F0aW5nIHBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8g
YSAxMjgtYml0DQorLy8vICAgIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyAg
ICBUbyBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkIGFzIG5vbi10ZW1wb3Jh
bCAodW5saWtlbHkgdG8gYmUNCisvLy8gICAgdXNlZCBhZ2FpbiBzb29uKS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byB0aGUgMTI4LWJpdCBh
bGlnbmVkIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
NjQtYml0IHZhbHVlcyB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fc3RyZWFtX3BkKGRvdWJsZSAqX19wLCBfX20xMjhkIF9fYSkN
Cit7DQorI2lmZGVmIF9fR05VQ19fDQorICBfX2J1aWx0aW5faWEzMl9tb3ZudHBkIChfX3AsIChf
X3YyZGYpX19hKTsNCisjZWxzZQ0KKyAgX19idWlsdGluX25vbnRlbXBvcmFsX3N0b3JlKChfX3Yy
ZGYpX19hLCAoX192MmRmKilfX3ApOw0KKyNlbmRpZg0KK30NCisNCisvLy8gU3RvcmVzIGEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciB0byBhIDEyOC1iaXQgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb24u
DQorLy8vDQorLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQg
YXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KKy8vLyAgICB1c2VkIGFnYWluIHNvb24p
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5UUFMgLyBNT1ZOVFBTIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRv
IHRoZSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHVzZWQgdG8gc3RvcmUgdGhlIHZh
bHVlLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZv
aWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0cmVhbV9zaTEyOChfX20xMjhpICpfX3AsIF9f
bTEyOGkgX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIF9fYnVpbHRpbl9pYTMyX21vdm50
ZHEgKChfX3YyZGkgKilfX3AsIChfX3YyZGkpX19hKTsNCisjZWxzZQ0KKyAgX19idWlsdGluX25v
bnRlbXBvcmFsX3N0b3JlKChfX3YyZGkpX19hLCAoX192MmRpKilfX3ApOw0KKyNlbmRpZg0KK30N
CisNCisvLy8gU3RvcmVzIGEgMzItYml0IGludGVnZXIgdmFsdWUgaW4gdGhlIHNwZWNpZmllZCBt
ZW1vcnkgbG9jYXRpb24uDQorLy8vDQorLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBk
YXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KKy8vLyAgICB1
c2VkIGFnYWluIHNvb24pLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRJIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVy
IHRvIHRoZSAzMi1iaXQgbWVtb3J5IGxvY2F0aW9uIHVzZWQgdG8gc3RvcmUgdGhlIHZhbHVlLg0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUg
dmFsdWUgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQNCisjaWZkZWYgX19H
TlVDX18NCitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18s
IF9fYXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KK19fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu
ZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpKSkNCisjZW5kaWYNCitfbW1fc3Ry
ZWFtX3NpMzIoaW50ICpfX3AsIGludCBfX2EpDQorew0KKyAgX19idWlsdGluX2lhMzJfbW92bnRp
KF9fcCwgX19hKTsNCit9DQorDQorI2lmZGVmIF9feDg2XzY0X18NCisvLy8gU3RvcmVzIGEgNjQt
Yml0IGludGVnZXIgdmFsdWUgaW4gdGhlIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24uDQorLy8v
DQorLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9u
LXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KKy8vLyAgICB1c2VkIGFnYWluIHNvb24pLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRJUSA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byB0aGUgNjQtYml0IG1lbW9y
eSBsb2NhdGlvbiB1c2VkIHRvIHN0b3JlIHRoZSB2YWx1ZS4NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZC4N
CitzdGF0aWMgX19pbmxpbmVfXyB2b2lkDQorI2lmZGVmIF9fR05VQ19fDQorX19hdHRyaWJ1dGVf
XygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQor
I2Vsc2UNCitfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9f
dGFyZ2V0X18oInNzZTIiKSkpDQorI2VuZGlmDQorX21tX3N0cmVhbV9zaTY0KGxvbmcgbG9uZyAq
X19wLCBsb25nIGxvbmcgX19hKQ0KK3sNCisgIF9fYnVpbHRpbl9pYTMyX21vdm50aTY0KF9fcCwg
X19hKTsNCit9DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQorZXh0ZXJu
ICJDIiB7DQorI2VuZGlmDQorDQorLy8vIFRoZSBjYWNoZSBsaW5lIGNvbnRhaW5pbmcgXGEgX19w
IGlzIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGZyb20gYWxsDQorLy8vICAgIGNhY2hlcyBpbiB0
aGUgY29oZXJlbmN5IGRvbWFpbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENMRkxV
U0ggPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBv
aW50ZXIgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjYWNoZSBs
aW5lIHRvIGJlDQorLy8vICAgIGZsdXNoZWQuDQordm9pZCBfbW1fY2xmbHVzaCh2b2lkIGNvbnN0
ICogX19wKTsNCisNCisvLy8gRm9yY2VzIHN0cm9uZyBtZW1vcnkgb3JkZXJpbmcgKHNlcmlhbGl6
YXRpb24pIGJldHdlZW4gbG9hZA0KKy8vLyAgICBpbnN0cnVjdGlvbnMgcHJlY2VkaW5nIHRoaXMg
aW5zdHJ1Y3Rpb24gYW5kIGxvYWQgaW5zdHJ1Y3Rpb25zIGZvbGxvd2luZw0KKy8vLyAgICB0aGlz
IGluc3RydWN0aW9uLCBlbnN1cmluZyB0aGUgc3lzdGVtIGNvbXBsZXRlcyBhbGwgcHJldmlvdXMg
bG9hZHMgYmVmb3JlDQorLy8vICAgIGV4ZWN1dGluZyBzdWJzZXF1ZW50IGxvYWRzLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTEZFTkNFIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
dm9pZCBfbW1fbGZlbmNlKHZvaWQpOw0KKw0KKy8vLyBGb3JjZXMgc3Ryb25nIG1lbW9yeSBvcmRl
cmluZyAoc2VyaWFsaXphdGlvbikgYmV0d2VlbiBsb2FkIGFuZCBzdG9yZQ0KKy8vLyAgICBpbnN0
cnVjdGlvbnMgcHJlY2VkaW5nIHRoaXMgaW5zdHJ1Y3Rpb24gYW5kIGxvYWQgYW5kIHN0b3JlIGlu
c3RydWN0aW9ucw0KKy8vLyAgICBmb2xsb3dpbmcgdGhpcyBpbnN0cnVjdGlvbiwgZW5zdXJpbmcg
dGhhdCB0aGUgc3lzdGVtIGNvbXBsZXRlcyBhbGwNCisvLy8gICAgcHJldmlvdXMgbWVtb3J5IGFj
Y2Vzc2VzIGJlZm9yZSBleGVjdXRpbmcgc3Vic2VxdWVudCBtZW1vcnkgYWNjZXNzZXMuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBNRkVOQ0UgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
Cit2b2lkIF9tbV9tZmVuY2Uodm9pZCk7DQorDQorI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQor
fSAvLyBleHRlcm4gIkMiDQorI2VuZGlmDQorDQorLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQg
aW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb3BlcmFu
ZHMgaW50byA4LWJpdCBzaWduZWQgaW50ZWdlcnMsIGFuZCBwYWNrcyB0aGUgcmVzdWx0cyBpbnRv
IHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gUG9zaXRpdmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAw
eDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4NCisvLy8gICAgTmVnYXRpdmUgdmFsdWVzIGxlc3Mg
dGhhbiAweDgwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZQQUNLU1NXQiAvIFBBQ0tTU1dCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZd
LiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMNCisvLy8gICBhIHNpZ25lZCBpbnRl
Z2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYSA4LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQorLy8v
ICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8g
MHg3Ri4gVmFsdWVzIGxlc3MNCisvLy8gICB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0byAweDgw
LiBUaGUgY29udmVydGVkIFs4IHggaThdIHZhbHVlcyBhcmUNCisvLy8gICB3cml0dGVuIHRvIHRo
ZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50
IGlzIHRyZWF0ZWQgYXMNCisvLy8gICBhIHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQg
dG8gYSA4LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQorLy8vICAgc2F0dXJhdGlvbi4gVmFsdWVz
IGdyZWF0ZXIgdGhhbiAweDdGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3Ri4gVmFsdWVzIGxlc3MNCisv
Ly8gICB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0byAweDgwLiBUaGUgY29udmVydGVkIFs4IHgg
aThdIHZhbHVlcyBhcmUNCisvLy8gICB3cml0dGVuIHRvIHRoZSBoaWdoZXIgNjQgYml0cyBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBj
b250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3BhY2tzX2VwaTE2KF9fbTEyOGkgX19hLCBfX20x
MjhpIF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFja3Nzd2Ix
MjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIENvbnZlcnRzIDMyLWJp
dCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8g
ICAgb3BlcmFuZHMgaW50byAxNi1iaXQgc2lnbmVkIGludGVnZXJzLCBhbmQgcGFja3MgdGhlIHJl
c3VsdHMgaW50byB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVh
dGVyIHRoYW4gMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLg0KKy8vLyAgICBOZWdhdGl2
ZSB2YWx1ZXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQUNLU1NEVyAvIFBBQ0tTU0RXIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTMyXS4gRWFjaCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzDQor
Ly8vICAgIGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWdu
ZWQgaW50ZWdlciB3aXRoDQorLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4g
MHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBWYWx1ZXMNCisvLy8gICAgbGVzcyB0aGFu
IDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGkxNl0g
dmFsdWVzDQorLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTMyXS4gRWFjaCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzDQorLy8vICAg
IGEgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCBzaWduZWQgaW50
ZWdlciB3aXRoDQorLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RkZG
IGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBWYWx1ZXMNCisvLy8gICAgbGVzcyB0aGFuIDB4ODAw
MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGkxNl0gdmFsdWVz
DQorLy8vICAgIGFyZSB3cml0dGVuIHRvIHRoZSBoaWdoZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5n
IHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX3BhY2tzX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFja3NzZHcxMjgoKF9fdjRz
aSlfX2EsIChfX3Y0c2kpX19iKTsNCit9DQorDQorLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQg
aW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb3BlcmFu
ZHMgaW50byA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycywgYW5kIHBhY2tzIHRoZSByZXN1bHRzIGlu
dG8gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkYgYXJl
IHNhdHVyYXRlZCB0byAweEZGLiBWYWx1ZXMgbGVzcw0KKy8vLyAgICB0aGFuIDB4MDAgYXJlIHNh
dHVyYXRlZCB0byAweDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBBQ0tVU1dC
IC8gUEFDS1VTV0IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBFYWNoIDE2LWJpdCBl
bGVtZW50IGlzIHRyZWF0ZWQgYXMNCisvLy8gICAgYSBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29u
dmVydGVkIHRvIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgd2l0aA0KKy8vLyAgICBzYXR1cmF0
aW9uLiBWYWx1ZXMgZ3JlYXRlciB0aGFuIDB4RkYgYXJlIHNhdHVyYXRlZCB0byAweEZGLiBWYWx1
ZXMgbGVzcw0KKy8vLyAgICB0aGFuIDB4MDAgYXJlIHNhdHVyYXRlZCB0byAweDAwLiBUaGUgY29u
dmVydGVkIFs4IHggaThdIHZhbHVlcyBhcmUNCisvLy8gICAgd3JpdHRlbiB0byB0aGUgbG93ZXIg
NjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0uIEVhY2ggMTYtYml0IGVsZW1lbnQgaXMgdHJl
YXRlZCBhcw0KKy8vLyAgICBhIHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4g
OC1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoDQorLy8vICAgIHNhdHVyYXRpb24uIFZhbHVlcyBn
cmVhdGVyIHRoYW4gMHhGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkYuIFZhbHVlcyBsZXNzDQorLy8v
ICAgIHRoYW4gMHgwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAuIFRoZSBjb252ZXJ0ZWQgWzggeCBp
OF0gdmFsdWVzIGFyZQ0KKy8vLyAgICB3cml0dGVuIHRvIHRoZSBoaWdoZXIgNjQgYml0cyBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBj
b250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3BhY2t1c19lcGkxNihfX20xMjhpIF9fYSwgX19t
MTI4aSBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2t1c3di
MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8vLyBFeHRyYWN0cyAxNiBi
aXRzIGZyb20gYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSwgdXNpbmcNCisv
Ly8gICAgdGhlIGltbWVkaWF0ZS12YWx1ZSBwYXJhbWV0ZXIgYXMgYSBzZWxlY3Rvci4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVhUUlcgLyBQRVhUUlcgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMg
WzI6MF0gc2VsZWN0cyB2YWx1ZXMgZnJvbSBcYSBfX2EgdG8gYmUgYXNzaWduZWQNCisvLy8gICAg
dG8gYml0c1sxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICAwMDA6IGFzc2lnbiB2YWx1
ZXMgZnJvbSBiaXRzIFsxNTowXSBvZiBcYSBfX2EuIFxuDQorLy8vICAgIDAwMTogYXNzaWduIHZh
bHVlcyBmcm9tIGJpdHMgWzMxOjE2XSBvZiBcYSBfX2EuIFxuDQorLy8vICAgIDAxMDogYXNzaWdu
IHZhbHVlcyBmcm9tIGJpdHMgWzQ3OjMyXSBvZiBcYSBfX2EuIFxuDQorLy8vICAgIDAxMTogYXNz
aWduIHZhbHVlcyBmcm9tIGJpdHMgWzYzOjQ4XSBvZiBcYSBfX2EuIFxuDQorLy8vICAgIDEwMDog
YXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzc5OjY0XSBvZiBcYSBfX2EuIFxuDQorLy8vICAgIDEw
MTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzk1OjgwXSBvZiBcYSBfX2EuIFxuDQorLy8vICAg
IDExMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzExMTo5Nl0gb2YgXGEgX19hLiBcbg0KKy8v
LyAgICAxMTE6IGFzc2lnbiB2YWx1ZXMgZnJvbSBiaXRzIFsxMjc6MTEyXSBvZiBcYSBfX2EuDQor
Ly8vIFxyZXR1cm5zIEFuIGludGVnZXIsIHdob3NlIGxvd2VyIDE2IGJpdHMgYXJlIHNlbGVjdGVk
IGZyb20gdGhlIDEyOC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3IgcGFyYW1ldGVyIGFuZCB0
aGUgcmVtYWluaW5nIGJpdHMgYXJlIGFzc2lnbmVkIHplcm9zLg0KKyNkZWZpbmUgX21tX2V4dHJh
Y3RfZXBpMTYoYSwgaW1tKSBcDQorICAoaW50KSh1bnNpZ25lZCBzaG9ydClfX2J1aWx0aW5faWEz
Ml92ZWNfZXh0X3Y4aGkoKF9fdjhoaSkoX19tMTI4aSkoYSksIFwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShpbW0pKQ0KKw0KKy8vLyBD
b25zdHJ1Y3RzIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBieSBmaXJzdCBtYWtpbmcgYSBjb3B5
IG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciwgYW5kIHRo
ZW4gaW5zZXJ0aW5nIHRoZSBsb3dlciAxNiBiaXRzDQorLy8vICAgIG9mIGFuIGludGVnZXIgcGFy
YW1ldGVyIGludG8gYW4gb2Zmc2V0IHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlLXZhbHVlDQor
Ly8vICAgIHBhcmFtZXRlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQSU5TUlcg
LyBQSU5TUlcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGlzIHZlY3RvciBpcyBj
b3BpZWQgdG8gdGhlDQorLy8vICAgIHJlc3VsdCBhbmQgdGhlbiBvbmUgb2YgdGhlIGVpZ2h0IGVs
ZW1lbnRzIGluIHRoZSByZXN1bHQgaXMgcmVwbGFjZWQgYnkNCisvLy8gICAgdGhlIGxvd2VyIDE2
IGJpdHMgb2YgXGEgX19iLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEFuIGludGVnZXIuIFRo
ZSBsb3dlciAxNiBiaXRzIG9mIHRoaXMgcGFyYW1ldGVyIGFyZSB3cml0dGVuIHRvIHRoZQ0KKy8v
LyAgICByZXN1bHQgYmVnaW5uaW5nIGF0IGFuIG9mZnNldCBzcGVjaWZpZWQgYnkgXGEgX19pbW0u
DQorLy8vIFxwYXJhbSBfX2ltbQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUgc3BlY2lmeWlu
ZyB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0IHdoaWNoIHRoZQ0KKy8vLyAgICBsb3dl
ciAxNiBiaXRzIG9mIFxhIF9fYiBhcmUgd3JpdHRlbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnN0cnVjdGVkIHZhbHVlcy4NCisjZGVm
aW5lIF9tbV9pbnNlcnRfZXBpMTYoYSwgYiwgaW1tKSBcDQorICAoX19tMTI4aSlfX2J1aWx0aW5f
aWEzMl92ZWNfc2V0X3Y4aGkoKF9fdjhoaSkoX19tMTI4aSkoYSksIChpbnQpKGIpLCBcDQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoaW1tKSkNCisNCisvLy8g
Q29waWVzIHRoZSB2YWx1ZXMgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBmcm9tIGVhY2gg
OC1iaXQNCisvLy8gICAgZWxlbWVudCBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2
IHggaThdIHRvIGNyZWF0ZSBhIDE2LWJpdCBtYXNrDQorLy8vICAgIHZhbHVlLCB6ZXJvLWV4dGVu
ZHMgdGhlIHZhbHVlLCBhbmQgd3JpdGVzIGl0IHRvIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WTVNLQiAvIFBNT1ZNU0tCIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB3aXRoIGJpdHMgdG8gYmUgZXh0cmFjdGVkLg0KKy8v
LyBccmV0dXJucyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gZWFjaCA4LWJpdCBlbGVt
ZW50IGluIFxhIF9fYSwNCisvLy8gICAgd3JpdHRlbiB0byBiaXRzIFsxNTowXS4gVGhlIG90aGVy
IGJpdHMgYXJlIGFzc2lnbmVkIHplcm9zLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fbW92ZW1hc2tfZXBpOChfX20xMjhpIF9fYSkNCit7DQorICByZXR1
cm4gX19idWlsdGluX2lhMzJfcG1vdm1za2IxMjgoKF9fdjE2cWkpX19hKTsNCit9DQorDQorLy8v
IENvbnN0cnVjdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IHNodWZmbGluZyBmb3VyIDMy
LWJpdA0KKy8vLyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1l
dGVyLCB1c2luZyB0aGUgaW1tZWRpYXRlLXZhbHVlDQorLy8vICAgIHBhcmFtZXRlciBhcyBhIHNw
ZWNpZmllci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9zaHVmZmxlX2VwaTMyKF9fbTEyOGkgYSwgY29uc3Qg
aW50IGltbSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlBTSFVGRCAvIFBTSFVGRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgdmFsdWVzIHRvIGJlIGNvcGllZC4NCisvLy8gXHBhcmFtIGltbQ0KKy8vLyAgICBB
biBpbW1lZGlhdGUgdmFsdWUgY29udGFpbmluZyBhbiA4LWJpdCB2YWx1ZSBzcGVjaWZ5aW5nIHdo
aWNoIGVsZW1lbnRzIHRvDQorLy8vICAgIGNvcHkgZnJvbSBhLiBUaGUgZGVzdGluYXRpb25zIHdp
dGhpbiB0aGUgMTI4LWJpdCBkZXN0aW5hdGlvbiBhcmUgYXNzaWduZWQNCisvLy8gICAgdmFsdWVz
IGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIEJpdHMgWzE6MF0gYXJlIHVzZWQgdG8gYXNzaWduIHZh
bHVlcyB0byBiaXRzIFszMTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFszOjJd
IGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNjM6MzJdIG9mIHRoZSByZXN1bHQu
IFxuDQorLy8vICAgIEJpdHMgWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRz
IFs5NTo2NF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNzo2XSBhcmUgdXNlZCB0
byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzEyNzo5Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8g
ICAgQml0IHZhbHVlIGFzc2lnbm1lbnRzOiBcbg0KKy8vLyAgICAwMDogYXNzaWduIHZhbHVlcyBm
cm9tIGJpdHMgWzMxOjBdIG9mIFxhIGEuIFxuDQorLy8vICAgIDAxOiBhc3NpZ24gdmFsdWVzIGZy
b20gYml0cyBbNjM6MzJdIG9mIFxhIGEuIFxuDQorLy8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZy
b20gYml0cyBbOTU6NjRdIG9mIFxhIGEuIFxuDQorLy8vICAgIDExOiBhc3NpZ24gdmFsdWVzIGZy
b20gYml0cyBbMTI3Ojk2XSBvZiBcYSBhLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX3No
dWZmbGVfZXBpMzIoYSwgaW1tKSBcDQorICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2h1ZmQo
KF9fdjRzaSkoX19tMTI4aSkoYSksIChpbnQpKGltbSkpDQorDQorLy8vIENvbnN0cnVjdHMgYSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGJ5IHNodWZmbGluZyBmb3VyIGxvd2VyIDE2LWJpdA0KKy8v
LyAgICBlbGVtZW50cyBvZiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLCB1
c2luZyB0aGUgaW1tZWRpYXRlDQorLy8vICAgIHZhbHVlIHBhcmFtZXRlciBhcyBhIHNwZWNpZmll
ci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29k
ZQ0KKy8vLyBfX20xMjhpIF9tbV9zaHVmZmxlbG9fZXBpMTYoX19tMTI4aSBhLCBjb25zdCBpbnQg
aW1tKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBWUFNIVUZMVyAvIFBTSFVGTFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIGENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHgg
aTE2XS4gQml0cyBbMTI3OjY0XSBhcmUgY29waWVkIHRvIGJpdHMNCisvLy8gICAgWzEyNzo2NF0g
b2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIGltbQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlh
dGUgdmFsdWUgc3BlY2lmeWluZyB3aGljaCBlbGVtZW50cyB0byBjb3B5IGZyb20gXGEgYS4gXG4N
CisvLy8gICAgQml0c1sxOjBdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTU6
MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0c1szOjJdIGFyZSB1c2VkIHRvIGFzc2ln
biB2YWx1ZXMgdG8gYml0cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHNb
NTo0XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVz
dWx0LiBcbg0KKy8vLyAgICBCaXRzWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBi
aXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0IHZhbHVlIGFzc2lnbm1l
bnRzOiBcbg0KKy8vLyAgICAwMDogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzE1OjBdIG9mIFxh
IGEuIFxuDQorLy8vICAgIDAxOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMzE6MTZdIG9mIFxh
IGEuIFxuDQorLy8vICAgIDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNDc6MzJdIG9mIFxh
IGEuIFxuDQorLy8vICAgIDExOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNjM6NDhdIG9mIFxh
IGEuIFxuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IHRoZSBzaHVmZmxlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1fc2h1ZmZsZWxvX2VwaTE2KGEsIGlt
bSkgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZsdygoX192OGhpKShfX20xMjhp
KShhKSwgKGludCkoaW1tKSkNCisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgYnkgc2h1ZmZsaW5nIGZvdXIgdXBwZXIgMTYtYml0DQorLy8vICAgIGVsZW1lbnRzIG9m
IGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGkxNl0sIHVzaW5nIHRoZSBpbW1lZGlh
dGUNCisvLy8gICAgdmFsdWUgcGFyYW1ldGVyIGFzIGEgc3BlY2lmaWVyLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGkg
X21tX3NodWZmbGVoaV9lcGkxNihfX20xMjhpIGEsIGNvbnN0IGludCBpbW0pOw0KKy8vLyBcZW5k
Y29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQ
U0hVRkhXIC8gUFNIVUZIVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdLiBCaXRzIFs2Mzow
XSBhcmUgY29waWVkIHRvIGJpdHMNCisvLy8gICAgWzYzOjBdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxwYXJhbSBpbW0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIHZhbHVlIHNwZWNpZnlpbmcg
d2hpY2ggZWxlbWVudHMgdG8gY29weSBmcm9tIFxhIGEuIFxuDQorLy8vICAgIEJpdHNbMTowXSBh
cmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzc5OjY0XSBvZiB0aGUgcmVzdWx0LiBc
bg0KKy8vLyAgICBCaXRzWzM6Ml0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFs5
NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0c1s1OjRdIGFyZSB1c2VkIHRvIGFz
c2lnbiB2YWx1ZXMgdG8gYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBC
aXRzWzc6Nl0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRzIFsxMjc6MTEyXSBvZiB0
aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXQgdmFsdWUgYXNzaWdubWVudHM6IFxuDQorLy8vICAg
IDAwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbNzk6NjRdIG9mIFxhIGEuIFxuDQorLy8vICAg
IDAxOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbOTU6ODBdIG9mIFxhIGEuIFxuDQorLy8vICAg
IDEwOiBhc3NpZ24gdmFsdWVzIGZyb20gYml0cyBbMTExOjk2XSBvZiBcYSBhLiBcbg0KKy8vLyAg
ICAxMTogYXNzaWduIHZhbHVlcyBmcm9tIGJpdHMgWzEyNzoxMTJdIG9mIFxhIGEuIFxuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzaHVmZmxl
ZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1fc2h1ZmZsZWhpX2VwaTE2KGEsIGltbSkgXA0KKyAgKF9f
bTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZodygoX192OGhpKShfX20xMjhpKShhKSwgKGludCko
aW1tKSkNCisNCisvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciAoaW5kZXggOC0xNSkgdmFsdWVz
IGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycw0KKy8vLyAgICBvZiBbMTYgeCBpOF0gYW5kIGludGVy
bGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tIQlcgLyBQVU5QQ0tIQlcgPC9jPg0KKy8vLyAg
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyAgICBCaXRzIFs3MTo2NF0gYXJlIHdyaXR0ZW4gdG8g
Yml0cyBbNzowXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs3OTo3Ml0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzg3
OjgwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8g
ICAgQml0cyBbOTU6ODhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0
LiBcbg0KKy8vLyAgICBCaXRzIFsxMDM6OTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzcxOjY0XSBv
ZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFsxMTE6MTA0XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTE5OjExMl0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRz
IFsxMjc6MTIwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMTk6MTEyXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBc
bg0KKy8vLyAgICBCaXRzIFs3MTo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6OF0gb2YgdGhl
IHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNzk6NzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMx
OjI0XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs4Nzo4MF0gYXJlIHdyaXR0ZW4g
dG8gYml0cyBbNDc6NDBdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzk1Ojg4XSBh
cmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0
cyBbMTAzOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3OTo3Ml0gb2YgdGhlIHJlc3VsdC4gXG4N
CisvLy8gICAgQml0cyBbMTExOjEwNF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6ODhdIG9mIHRo
ZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzExOToxMTJdIGFyZSB3cml0dGVuIHRvIGJpdHMg
WzExMToxMDRdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzEyNzoxMjBdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzEyNzoxMjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV91bnBhY2toaV9lcGk4KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorI2lmZGVmIF9f
R05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNraGJ3MTI4ICgo
X192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYiwgOCwgMTYr
OCwgOSwgMTYrOSwgMTAsIDE2KzEwLCAxMSwgMTYrMTEsIDEyLCAxNisxMiwgMTMsIDE2KzEzLCAx
NCwgMTYrMTQsIDE1LCAxNisxNSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSBo
aWdoLW9yZGVyIChpbmRleCA0LTcpIHZhbHVlcyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMgb2YN
CisvLy8gICAgWzggeCBpMTZdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZl
Y3RvciBvZiBbOCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFVOUENL
SFdEIC8gUFVOUENLSFdEIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4NCisvLy8gICAg
Qml0cyBbNzk6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzE1OjBdIG9mIHRoZSByZXN1bHQuIFxu
DQorLy8vICAgIEJpdHMgWzk1OjgwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0NzozMl0gb2YgdGhl
IHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs3
OTo2NF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTI3OjExMl0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTExOjk2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLg0KKy8vLyAgICBCaXRzIFs3OTo2NF0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJp
dHMgWzk1OjgwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2Mzo0OF0gb2YgdGhlIHJlc3VsdC4gXG4N
CisvLy8gICAgQml0cyBbMTExOjk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo4MF0gb2YgdGhl
IHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTI3OjExMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBb
MTI3OjExMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbOCB4IGkxNl0gY29udGFpbmluZyB0aGUgaW50ZXJsZWF2ZWQgdmFsdWVzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3VucGFja2hpX2VwaTE2
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNraHdkMTI4ICgoX192OGhpKV9fYSwgKF9f
djhoaSlfX2IpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2
ZWN0b3IoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iLCA0LCA4KzQsIDUsIDgrNSwgNiwgOCs2LCA3
LCA4KzcpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciAoaW5k
ZXggMiwzKSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs0IHgg
aTMyXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MzJdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0hEUSAvIFBVTlBDS0hE
USA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuDQorLy8vICAgIEJpdHMgWzk1OjY0
XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTowXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8v
ICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbOTU6NjRdIG9mIHRoZSBkZXN0
aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggaTMyXS4gXG4NCisvLy8gICAgQml0cyBbOTU6NjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzY0
OjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbMTI3Ojk2XSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5z
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVk
IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV91bnBhY2toaV9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyNpZmRl
ZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2hkcTEy
OCAoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2kpX19hLCAoX192NHNpKV9fYiwgMiwgNCsy
LCAzLCA0KzMpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciA2
NC1iaXQgZWxlbWVudHMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFsyIHgg
aTY0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBp
NjRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBDS0hRRFEgLyBQVU5QQ0tI
UURRIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gXG4NCisvLy8gICAgQml0cyBbMTI3
OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQor
Ly8vICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUg
ZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRd
IGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2toaV9lcGk2NChfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhp
KV9fYnVpbHRpbl9pYTMyX3B1bnBja2hxZHExMjggKChfX3YyZGkpX19hLCAoX192MmRpKV9fYik7
DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192
MmRpKV9fYSwgKF9fdjJkaSlfX2IsIDEsIDIrMSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBh
Y2tzIHRoZSBsb3ctb3JkZXIgKGluZGV4IDAtNykgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVj
dG9ycyBvZg0KKy8vLyAgICBbMTYgeCBpOF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEy
OC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQVU5QQ0tMQlcgLyBQVU5QQ0tMQlcgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBc
bg0KKy8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2YgdGhlIHJl
c3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMjM6MTZd
IG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzIzOjE2XSBhcmUgd3JpdHRlbiB0byBi
aXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFsz
OTozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8v
ICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs4Nzo4MF0gb2YgdGhlIHJlc3Vs
dC4gXG4NCisvLy8gICAgQml0cyBbNTU6NDhdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEwMzo5Nl0g
b2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNjM6NTZdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzExOToxMTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uDQorLy8vICAgIEJpdHMgWzc6MF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTU6OF0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJp
dHMgWzIzOjE2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4N
CisvLy8gICAgQml0cyBbMzE6MjRdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0aGUg
cmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFszOTozMl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNzk6
NzJdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzQ3OjQwXSBhcmUgd3JpdHRlbiB0
byBiaXRzIFs5NTo4OF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNTU6NDhdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzExMToxMDRdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJp
dHMgWzYzOjU2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRo
ZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fdW5wYWNrbG9fZXBpOChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2Ip
DQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy
X3B1bnBja2xidzEyOCAoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KKyNlbHNlDQorICBy
ZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2cWkpX19hLCAoX192
MTZxaSlfX2IsIDAsIDE2KzAsIDEsIDE2KzEsIDIsIDE2KzIsIDMsIDE2KzMsIDQsIDE2KzQsIDUs
IDE2KzUsIDYsIDE2KzYsIDcsIDE2KzcpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0
aGUgbG93LW9yZGVyIChpbmRleCAwLTMpIHZhbHVlcyBmcm9tIGVhY2ggb2YgdGhlIHR3byAxMjgt
Yml0DQorLy8vICAgIHZlY3RvcnMgb2YgWzggeCBpMTZdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGlu
dG8gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbOCB4IGkxNl0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUFVOUENLTFdEIC8gUFVOUENLTFdEIDwvYz4NCisvLy8gICBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs4IHggaTE2XS4NCisvLy8gICAgQml0cyBbMTU6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBb
MTU6MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs0NzozMl0g
YXJlIHdyaXR0ZW4gdG8gYml0cyBbNzk6NjRdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJp
dHMgWzYzOjQ4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMTE6OTZdIG9mIHRoZSByZXN1bHQuDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uDQor
Ly8vICAgIEJpdHMgWzE1OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVz
dWx0LiBcbg0KKy8vLyAgICBCaXRzIFszMToxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6NDhd
IG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBi
aXRzIFs5NTo4MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNjM6NDhdIGFyZSB3
cml0dGVuIHRvIGJpdHMgWzEyNzoxMTJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV91bnBhY2tsb19lcGkxNihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyNpZmRlZiBf
X0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2x3ZDEyOCAo
KF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9f
YnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y4aGkpX19hLCAoX192OGhpKV9fYiwgMCwgOCswLCAx
LCA4KzEsIDIsIDgrMiwgMywgOCszKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFVucGFja3MgdGhl
IGxvdy1vcmRlciAoaW5kZXggMCwxKSB2YWx1ZXMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9m
DQorLy8vICAgIFs0IHggaTMyXSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBpMzJdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBVTlBD
S0xEUSAvIFBVTlBDS0xEUSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuDQorLy8v
ICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5h
dGlvbi4gXG4NCisvLy8gICAgQml0cyBbNjM6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzk1OjY0
XSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGkzMl0uIFxuDQorLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVu
IHRvIGJpdHMgWzY0OjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzYz
OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUg
aW50ZXJsZWF2ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3VucGFja2xvX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikN
Cit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cHVucGNrbGRxMTI4ICgoX192NHNpKV9fYSwgKF9fdjRzaSlfX2IpOw0KKyNlbHNlDQorICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX2EsIChfX3Y0c2kp
X19iLCAwLCA0KzAsIDEsIDQrMSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSBs
b3ctb3JkZXIgNjQtYml0IGVsZW1lbnRzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8v
LyAgICBbMiB4IGk2NF0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDEyOC1iaXQgdmVjdG9y
IG9mIFsyIHggaTY0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVU5QQ0tMUURR
IC8gUFVOUENLTFFEUSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFxuDQorLy8vICAg
IEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlv
bi4gXG4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHgg
aTY0XS4gXG4NCisvLy8gICAgQml0cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0
XSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2tsb19lcGk2
NChfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0
dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2xxZHExMjggKChfX3YyZGkpX19hLCAo
X192MmRpKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fc2h1ZmZs
ZXZlY3RvcigoX192MmRpKV9fYSwgKF9fdjJkaSlfX2IsIDAsIDIrMCk7DQorI2VuZGlmDQorfQ0K
Kw0KKy8vLyBSZXR1cm5zIHRoZSBsb3dlciA2NCBiaXRzIG9mIGEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBhcyBhIDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gTU9WRFEyUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kLiBUaGUgbG93ZXIgNjQg
Yml0cyBhcmUgbW92ZWQgdG8gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJu
cyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHBh
cmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fbW92ZXBpNjRfcGk2NChfX20xMjhpIF9fYSkNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYVsw
XTsNCit9DQorDQorLy8vIE1vdmVzIHRoZSA2NC1iaXQgb3BlcmFuZCB0byBhIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IsIHplcm9pbmcgdGhlDQorLy8vICAgIHVwcGVyIGJpdHMuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBNT1ZEK1ZNT1ZRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgdmFsdWUuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4gVGhlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0aGUgdmFs
dWUgZnJvbQ0KKy8vLyAgICB0aGUgb3BlcmFuZC4gVGhlIHVwcGVyIDY0IGJpdHMgYXJlIGFzc2ln
bmVkIHplcm9zLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX21vdnBpNjRfZXBpNjQoX19tNjQgX19hKQ0KK3sNCisgIHJldHVybiBfX2V4dGVuc2lv
bl9fIChfX20xMjhpKShfX3YyZGkpeyAobG9uZyBsb25nKV9fYSwgMCB9Ow0KK30NCisNCisvLy8g
TW92ZXMgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHRvIGEg
MTI4LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciwgemVyb2luZyB0aGUgdXBwZXIgYml0cy4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZRIC8gTU9WUSA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvcGVyYW5kLiBUaGUgbG93ZXIgNjQgYml0cyBhcmUgbW92ZWQgdG8gdGhlDQorLy8vICAg
IGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuIFRo
ZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4gdGhlIHZhbHVlIGZyb20NCisvLy8gICAgdGhlIG9wZXJh
bmQuIFRoZSB1cHBlciA2NCBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tb3ZlX2VwaTY0KF9fbTEyOGkg
X19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f
aWEzMl9tb3ZxMTI4ICgoX192MmRpKSBfX2EpOw0KKyNlbHNlDQorICByZXR1cm4gX19idWlsdGlu
X3NodWZmbGV2ZWN0b3IoKF9fdjJkaSlfX2EsIF9tbV9zZXR6ZXJvX3NpMTI4KCksIDAsIDIpOw0K
KyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgaGlnaC1vcmRlciA2NC1iaXQgZWxlbWVu
dHMgZnJvbSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFsyIHggZG91YmxlXSBhbmQg
aW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeA0KKy8vLyAgICBk
b3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVOUENLSFBEIC8gVU5QQ0tI
UEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gXG4NCisvLy8gICAgQml0cyBbMTI3OjY0XSBh
cmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFxuDQorLy8v
ICAgIEJpdHMgWzEyNzo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTI3OjY0XSBvZiB0aGUgZGVz
dGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2toaV9wZChfX20xMjhkIF9fYSwg
X19tMTI4ZCBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhkKV9f
YnVpbHRpbl9pYTMyX3VucGNraHBkICgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KKyNlbHNl
DQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjJkZilfX2EsIChfX3YyZGYp
X19iLCAxLCAyKzEpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgbG93LW9yZGVy
IDY0LWJpdCBlbGVtZW50cyBmcm9tIHR3byAxMjgtYml0IHZlY3RvcnMNCisvLy8gICAgb2YgWzIg
eCBkb3VibGVdIGFuZCBpbnRlcmxlYXZlcyB0aGVtIGludG8gYSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4DQorLy8vICAgIGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5Q
Q0tMUEQgLyBVTlBDS0xQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBcbg0KKy8vLyAgICBC
aXRzIFs2MzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs2MzowXSBvZiB0aGUgZGVzdGluYXRpb24u
DQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0uIFxuDQorLy8vICAgIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo2NF0g
b2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fdW5wYWNrbG9fcGQoX19t
MTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAo
X19tMTI4ZClfX2J1aWx0aW5faWEzMl91bnBja2xwZCAoKF9fdjJkZilfX2EsIChfX3YyZGYpX19i
KTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19h
LCAoX192MmRmKV9fYiwgMCwgMiswKTsNCisjZW5kaWYNCit9DQorDQorLy8vIEV4dHJhY3RzIHRo
ZSBzaWduIGJpdHMgb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gdmFsdWVzIGluIHRoZSAxMjgtYml0
DQorLy8vICAgIHZlY3RvciBvZiBbMiB4IGRvdWJsZV0sIHplcm8tZXh0ZW5kcyB0aGUgdmFsdWUs
IGFuZCB3cml0ZXMgaXQgdG8gdGhlDQorLy8vICAgIGxvdy1vcmRlciBiaXRzIG9mIHRoZSBkZXN0
aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZNU0tQRCAvIE1PVk1T
S1BEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGgg
c2lnbiBiaXRzIHRvDQorLy8vICAgIGJlIGV4dHJhY3RlZC4NCisvLy8gXHJldHVybnMgVGhlIHNp
Z24gYml0cyBmcm9tIGVhY2ggb2YgdGhlIGRvdWJsZS1wcmVjaXNpb24gZWxlbWVudHMgaW4gXGEg
X19hLA0KKy8vLyAgICB3cml0dGVuIHRvIGJpdHMgWzE6MF0uIFRoZSByZW1haW5pbmcgYml0cyBh
cmUgYXNzaWduZWQgdmFsdWVzIG9mIHplcm8uDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9tb3ZlbWFza19wZChfX20xMjhkIF9fYSkNCit7DQorICByZXR1
cm4gX19idWlsdGluX2lhMzJfbW92bXNrcGQoKF9fdjJkZilfX2EpOw0KK30NCisNCisNCisvLy8g
Q29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSBmcm9tIHR3bw0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBwYXJhbWV0ZXJzIG9mIFsyIHggZG91
YmxlXSwgdXNpbmcgdGhlIGltbWVkaWF0ZS12YWx1ZQ0KKy8vLyAgICAgcGFyYW1ldGVyIGFzIGEg
c3BlY2lmaWVyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFxjb2RlDQorLy8vIF9fbTEyOGQgX21tX3NodWZmbGVfcGQoX19tMTI4ZCBhLCBfX20xMjhk
IGIsIGNvbnN0IGludCBpKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU0hVRlBEIC8gU0hVRlBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdLg0KKy8vLyBccGFyYW0gYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXS4NCisvLy8gXHBhcmFtIGkNCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIHZh
bHVlLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgdHdvIGJpdHMgc3BlY2lmeSB3aGljaA0KKy8vLyAg
ICBlbGVtZW50cyB0byBjb3B5IGZyb20gXGEgYSBhbmQgXGEgYjogXG4NCisvLy8gICAgQml0WzBd
ID0gMDogbG93ZXIgZWxlbWVudCBvZiBcYSBhIGNvcGllZCB0byBsb3dlciBlbGVtZW50IG9mIHJl
c3VsdC4gXG4NCisvLy8gICAgQml0WzBdID0gMTogdXBwZXIgZWxlbWVudCBvZiBcYSBhIGNvcGll
ZCB0byBsb3dlciBlbGVtZW50IG9mIHJlc3VsdC4gXG4NCisvLy8gICAgQml0WzFdID0gMDogbG93
ZXIgZWxlbWVudCBvZiBcYSBiIGNvcGllZCB0byB1cHBlciBlbGVtZW50IG9mIHJlc3VsdC4gXG4N
CisvLy8gICAgQml0WzFdID0gMTogdXBwZXIgZWxlbWVudCBvZiBcYSBiIGNvcGllZCB0byB1cHBl
ciBlbGVtZW50IG9mIHJlc3VsdC4gXG4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLg0KKyNkZWZpbmUg
X21tX3NodWZmbGVfcGQoYSwgYiwgaSkgXA0KKyAgKF9fbTEyOGQpX19idWlsdGluX2lhMzJfc2h1
ZnBkKChfX3YyZGYpKF9fbTEyOGQpKGEpLCAoX192MmRmKShfX20xMjhkKShiKSwgXA0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGkpKQ0KKw0KKy8vLyBDYXN0cyBhIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBpbnRvIGEgMTI4LWJp
dA0KKy8vLyAgICBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
aGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgc2FtZQ0KKy8vLyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhl
IHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2Nhc3RwZF9wcyhfX20xMjhkIF9fYSkNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2E7
DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsy
IHggZG91YmxlXSBpbnRvIGEgMTI4LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3Rvci4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IHNhbWUgYml0d2lzZSBwYXR0ZXJuIGFzIHRoZQ0KKy8vLyAgICBwYXJhbWV0ZXIuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY2FzdHBkX3NpMTI4
KF9fbTEyOGQgX19hKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSlfX2E7DQorfQ0KKw0KKy8vLyBD
YXN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8g
YSAxMjgtYml0DQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgc2FtZQ0KKy8vLyAgICBiaXR3aXNlIHBhdHRl
cm4gYXMgdGhlIHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9jYXN0cHNfcGQoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4gKF9f
bTEyOGQpX19hOw0KK30NCisNCisvLy8gQ2FzdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTI4LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3Rv
ci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgc2FtZSBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlDQorLy8vICAgIHBhcmFtZXRlci4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jYXN0
cHNfc2kxMjgoX19tMTI4IF9fYSkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19hOw0KK30NCisN
CisvLy8gQ2FzdHMgYSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGludG8gYSAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8g
Y29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2FtZQ0KKy8v
LyAgICBiaXR3aXNlIHBhdHRlcm4gYXMgdGhlIHBhcmFtZXRlci4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Nhc3RzaTEyOF9wcyhfX20xMjhpIF9f
YSkNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2E7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgaW50byBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yDQor
Ly8vICAgIG9mIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIHNhbWUNCisvLy8gICAgYml0d2lzZSBwYXR0
ZXJuIGFzIHRoZSBwYXJhbWV0ZXIuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fY2FzdHNpMTI4X3BkKF9fbTEyOGkgX19hKQ0KK3sNCisgIHJldHVy
biAoX19tMTI4ZClfX2E7DQorfQ0KKw0KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KK2V4dGVy
biAiQyIgew0KKyNlbmRpZg0KKw0KKy8vLyBJbmRpY2F0ZXMgdGhhdCBhIHNwaW4gbG9vcCBpcyBi
ZWluZyBleGVjdXRlZCBmb3IgdGhlIHB1cnBvc2VzIG9mDQorLy8vICAgIG9wdGltaXppbmcgcG93
ZXIgY29uc3VtcHRpb24gZHVyaW5nIHRoZSBsb29wLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUEFVU0UgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCit2b2lkIF9tbV9wYXVzZSh2b2lk
KTsNCisNCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCit9IC8vIGV4dGVybiAiQyINCisjZW5k
aWYNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQorI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRS
U19NTVgNCisNCisjaWZuZGVmIF9NTV9ERU5PUk1BTFNfWkVST19PTg0KKyNkZWZpbmUgX01NX0RF
Tk9STUFMU19aRVJPX09OICAgKDB4MDA0MCkNCisjZW5kaWYNCisjaWZuZGVmIF9NTV9ERU5PUk1B
TFNfWkVST19PRkYNCisjZGVmaW5lIF9NTV9ERU5PUk1BTFNfWkVST19PRkYgICgweDAwMDApDQor
I2VuZGlmDQorDQorI2lmbmRlZiBfTU1fREVOT1JNQUxTX1pFUk9fTUFTSw0KKyNkZWZpbmUgX01N
X0RFTk9STUFMU19aRVJPX01BU0sgKDB4MDA0MCkNCisjZW5kaWYNCisNCisjaWZuZGVmIF9NTV9H
RVRfREVOT1JNQUxTX1pFUk9fTU9ERQ0KKyNkZWZpbmUgX01NX0dFVF9ERU5PUk1BTFNfWkVST19N
T0RFKCkgKF9tbV9nZXRjc3IoKSAmIF9NTV9ERU5PUk1BTFNfWkVST19NQVNLKQ0KKyNkZWZpbmUg
X01NX1NFVF9ERU5PUk1BTFNfWkVST19NT0RFKHgpIChfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkg
JiB+X01NX0RFTk9STUFMU19aRVJPX01BU0spIHwgKHgpKSkNCisjZW5kaWYNCisNCisjZW5kaWYg
LyogX19FTU1JTlRSSU5fSCAqLw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvaW1taW50cmluLmggYi9p
bmNsdWRlL2ltbWludHJpbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4u
NTQ2MDA1Yg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvaW5jbHVkZS9pbW1pbnRyaW4uaA0KQEAgLTAs
MCArMSw3NSBAQA0KKy8qPT09LS0tLSBpbW1pbnRyaW4uaCAtIEludGVsIGludHJpbnNpY3MgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdo
dHMNCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs
IHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCisg
KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBUSEUgU09G
VFdBUkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lmbmRlZiBf
X0lNTUlOVFJJTl9IDQorI2RlZmluZSBfX0lNTUlOVFJJTl9IDQorDQorI2lmIGRlZmluZWQoX19N
TVhfXykNCisjaW5jbHVkZSA8bW1pbnRyaW4uaD4NCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZChf
X1NTRV9fKQ0KKyNpbmNsdWRlIDx4bW1pbnRyaW4uaD4NCisjZW5kaWYNCisNCisjaWYgZGVmaW5l
ZChfX1NTRTJfXykNCisjaW5jbHVkZSA8ZW1taW50cmluLmg+DQorI2VuZGlmDQorDQorI2lmIGRl
ZmluZWQoX19TU0UzX18pDQorI2luY2x1ZGUgPHBtbWludHJpbi5oPg0KKyNlbmRpZg0KKw0KKyNp
ZiBkZWZpbmVkKF9fU1NTRTNfXykNCisjaW5jbHVkZSA8dG1taW50cmluLmg+DQorI2VuZGlmDQor
DQorI2lmIFwNCisgICAgKGRlZmluZWQoX19TU0U0XzJfXykgfHwgZGVmaW5lZChfX1NTRTRfMV9f
KSkNCisjaW5jbHVkZSA8c21taW50cmluLmg+DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19B
VlhfXykNCisjaW5jbHVkZSA8YXZ4aW50cmluLmg+DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQo
X19QT1BDTlRfXykNCisjaW5jbHVkZSA8cG9wY250aW50cmluLmg+DQorI2VuZGlmDQorDQorDQor
LyogX19iaXRfc2Nhbl9mb3J3YXJkICovDQorLyoNCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkNCitfYml0X3NjYW5f
Zm9yd2FyZChpbnQgX19BKSB7DQorICByZXR1cm4gX19idWlsdGluX2N0eihfX0EpOw0KK30NCisq
Lw0KKy8qIF9fYml0X3NjYW5fcmV2ZXJzZSAqLw0KKy8qDQorc3RhdGljIF9faW5saW5lX18gaW50
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXykpDQorX2JpdF9z
Y2FuX3JldmVyc2UoaW50IF9fQSkgew0KKyAgcmV0dXJuIDMxIC0gX19idWlsdGluX2NseihfX0Ep
Ow0KK30NCisqLw0KKyNlbmRpZiAvKiBfX0lNTUlOVFJJTl9IICovDQpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS9tbV9tYWxsb2MuaCBiL2luY2x1ZGUvbW1fbWFsbG9jLmgNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwLi4zMDVhZmQzDQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRl
L21tX21hbGxvYy5oDQpAQCAtMCwwICsxLDc1IEBADQorLyo9PT0tLS0tIG1tX21hbGxvYy5oIC0g
QWxsb2NhdGluZyBhbmQgRnJlZWluZyBBbGlnbmVkIE1lbW9yeSBCbG9ja3MgLS0tLS0tLT09PQ0K
KyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQor
ICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCisgKiBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMNCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg
cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQor
ICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg
REFNQUdFUyBPUiBPVEhFUg0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQorICogT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM
SU5HUyBJTg0KKyAqIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0N
CisgKi8NCisNCisjaWZuZGVmIF9fTU1fTUFMTE9DX0gNCisjZGVmaW5lIF9fTU1fTUFMTE9DX0gN
CisNCisjaW5jbHVkZSA8c3RkbGliLmg+DQorDQorI2lmZGVmIF9XSU4zMg0KKyNpbmNsdWRlIDxt
YWxsb2MuaD4NCisjZWxzZQ0KKyNpZm5kZWYgX19jcGx1c3BsdXMNCitleHRlcm4gaW50IHBvc2l4
X21lbWFsaWduKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z
aXplKTsNCisjZWxzZQ0KKy8vIFNvbWUgc3lzdGVtcyAoZS5nLiB0aG9zZSB3aXRoIEdOVSBsaWJj
KSBkZWNsYXJlIHBvc2l4X21lbWFsaWduIHdpdGggYW4NCisvLyBleGNlcHRpb24gc3BlY2lmaWVy
LiBWaWEgYW4gImVncmVnaW91cyB3b3JrYXJvdW5kIiBpbg0KKy8vIFNlbWE6OkNoZWNrRXF1aXZh
bGVudEV4Y2VwdGlvblNwZWMsIENsYW5nIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhcyBhIHZhbGlk
DQorLy8gcmVkZWNsYXJhdGlvbiBvZiBnbGliYydzIGRlY2xhcmF0aW9uLg0KK2V4dGVybiAiQyIg
aW50IHBvc2l4X21lbWFsaWduKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBz
aXplX3QgX19zaXplKTsNCisjZW5kaWYNCisjZW5kaWYNCisNCisjaWYgIShkZWZpbmVkKF9XSU4z
MikgJiYgZGVmaW5lZChfbW1fbWFsbG9jKSkNCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkICpfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tYWxsb2NfXykpDQorX21tX21hbGxvYyhzaXpl
X3QgX19zaXplLCBzaXplX3QgX19hbGlnbikNCit7DQorICBpZiAoX19hbGlnbiA9PSAxKSB7DQor
ICAgIHJldHVybiBtYWxsb2MoX19zaXplKTsNCisgIH0NCisNCisgIGlmICghKF9fYWxpZ24gJiAo
X19hbGlnbiAtIDEpKSAmJiBfX2FsaWduIDwgc2l6ZW9mKHZvaWQgKikpDQorICAgIF9fYWxpZ24g
PSBzaXplb2Yodm9pZCAqKTsNCisNCisgIHZvaWQgKl9fbWFsbG9jZWRNZW1vcnk7DQorI2lmIGRl
ZmluZWQoX19NSU5HVzMyX18pDQorICBfX21hbGxvY2VkTWVtb3J5ID0gX19taW5nd19hbGlnbmVk
X21hbGxvYyhfX3NpemUsIF9fYWxpZ24pOw0KKyNlbGlmIGRlZmluZWQoX1dJTjMyKQ0KKyAgX19t
YWxsb2NlZE1lbW9yeSA9IF9hbGlnbmVkX21hbGxvYyhfX3NpemUsIF9fYWxpZ24pOw0KKyNlbHNl
DQorICBpZiAocG9zaXhfbWVtYWxpZ24oJl9fbWFsbG9jZWRNZW1vcnksIF9fYWxpZ24sIF9fc2l6
ZSkpDQorICAgIHJldHVybiAwOw0KKyNlbmRpZg0KKw0KKyAgcmV0dXJuIF9fbWFsbG9jZWRNZW1v
cnk7DQorfQ0KKw0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdh
eXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fKSkNCitfbW1fZnJlZSh2b2lkICpfX3ApDQorew0KKyAg
ZnJlZShfX3ApOw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLyogX19NTV9NQUxMT0NfSCAqLw0K
ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbW1pbnRyaW4uaCBiL2luY2x1ZGUvbW1pbnRyaW4uaA0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmE1YzI4MjkNCi0tLSAvZGV2L251bGwN
CisrKyBiL2luY2x1ZGUvbW1pbnRyaW4uaA0KQEAgLTAsMCArMSwxNTk4IEBADQorLyo9PT0tLS0t
IG1taW50cmluLmggLSBNTVggaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLT09PQ0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsDQorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl
bGwNCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMNCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisg
KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisg
Kg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg
TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFDQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
DQorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KKyAqIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS09PT0NCisgKi8NCisNCisjaWZuZGVmIF9fTU1JTlRSSU5fSA0KKyNkZWZpbmUg
X19NTUlOVFJJTl9IDQorDQorI2lmZGVmIF9fR05VQ19fDQordHlwZWRlZiBpbnQgX19tNjQgX19h
dHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCksIF9fbWF5X2FsaWFzX18pKTsNCisjZWxz
ZQ0KK3R5cGVkZWYgbG9uZyBsb25nIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVf
Xyg4KSkpOw0KKyNlbmRpZg0KK3R5cGVkZWYgaW50IF9fbTY0X3UgX19hdHRyaWJ1dGVfXyAoKF9f
dmVjdG9yX3NpemVfXyAoOCksIF9fbWF5X2FsaWFzX18sIF9fYWxpZ25lZF9fICgxKSkpOw0KKw0K
K3R5cGVkZWYgbG9uZyBsb25nIF9fdjFkaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18o
OCkpKTsNCit0eXBlZGVmIGludCBfX3Yyc2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9f
KDgpKSk7DQordHlwZWRlZiBzaG9ydCBfX3Y0aGkgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6
ZV9fKDgpKSk7DQordHlwZWRlZiBjaGFyIF9fdjhxaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9z
aXplX18oOCkpKTsNCit0eXBlZGVmIGZsb2F0IF9fdjJzZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0
b3Jfc2l6ZV9fICg4KSkpOw0KKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0
aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCisjaWZkZWYgX19HTlVDX18NCisjZGVmaW5l
IF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdh
eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KKyNkZWZpbmUgX19ERUZBVUxU
X0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywg
X190YXJnZXRfXygibW14IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQorI2VuZGlmDQor
DQorLy8vIENsZWFycyB0aGUgTU1YIHN0YXRlIGJ5IHNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSB4
ODcgc3RhY2sgcmVnaXN0ZXJzDQorLy8vICAgIHRvIGVtcHR5Lg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gRU1NUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KK3N0YXRpYyBfX2lubGlu
ZV9fIHZvaWQNCisjaWZkZWYgX19HTlVDX18NCitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf
XywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KK19fYXR0cmli
dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygibW14Iikp
KQ0KKyNlbmRpZg0KK19tbV9lbXB0eSh2b2lkKQ0KK3sNCisgICAgX19idWlsdGluX2lhMzJfZW1t
cygpOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvciwgc2V0
dGluZyB0aGUgbG93ZXIgMzIgYml0cyB0byB0aGUNCisvLy8gICAgdmFsdWUgb2YgdGhlIDMyLWJp
dCBpbnRlZ2VyIHBhcmFtZXRlciBhbmQgc2V0dGluZyB0aGUgdXBwZXIgMzIgYml0cyB0byAwLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WRCA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19pDQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUuDQorLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLiBUaGUgbG93ZXIgMzIgYml0cyBjb250
YWluIHRoZSB2YWx1ZSBvZiB0aGUNCisvLy8gICAgcGFyYW1ldGVyLiBUaGUgdXBwZXIgMzIgYml0
cyBhcmUgc2V0IHRvIDAuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2N2dHNpMzJfc2k2NChpbnQgX19pKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl92ZWNfaW5pdF92MnNpKF9faSwgMCk7DQorfQ0KKw0KKy8vLyBSZXR1cm5z
IHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGFzIGEgMzItYml0
DQorLy8vICAgIHNpZ25lZCBpbnRlZ2VyLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
TU9WRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccmV0dXJucyBBIDMyLWJpdCBzaWduZWQgaW50
ZWdlciB2YWx1ZSBjb250YWluaW5nIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZQ0KKy8vLyAgICBw
YXJhbWV0ZXIuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9jdnRzaTY0X3NpMzIoX19tNjQgX19tKQ0KK3sNCisgICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMy
X3ZlY19leHRfdjJzaSgoX192MnNpKV9fbSwgMCk7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDY0LWJp
dCBzaWduZWQgaW50ZWdlciB2YWx1ZSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19pDQorLy8vICAgIEEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyLg0KKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdp
c2UgcGF0dGVybiBhcyB0aGUNCisvLy8gICAgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZV9f
IF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzaTY0X202NChsb25nIGxvbmcgX19p
KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2k7DQorfQ0KKw0KKy8vLyBDYXN0cyBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBpbnRvIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBzaWduZWQgaW50ZWdlciBjb250YWluaW5nIHRoZSBzYW1lIGJpdHdp
c2UgcGF0dGVybiBhcyB0aGUNCisvLy8gICAgcGFyYW1ldGVyLg0KK3N0YXRpYyBfX2lubGluZV9f
IGxvbmcgbG9uZyBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0bTY0X3NpNjQoX19tNjQgX19t
KQ0KK3sNCisgICAgcmV0dXJuIChsb25nIGxvbmcpX19tOw0KK30NCisNCisvLy8gQ29udmVydHMg
MTYtYml0IHNpZ25lZCBpbnRlZ2VycyBmcm9tIGJvdGggNjQtYml0IGludGVnZXIgdmVjdG9yDQor
Ly8vICAgIHBhcmFtZXRlcnMgb2YgWzQgeCBpMTZdIGludG8gOC1iaXQgc2lnbmVkIGludGVnZXIg
dmFsdWVzLCBhbmQgY29uc3RydWN0cw0KKy8vLyAgICBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XSBhcyB0aGUgcmVzdWx0LiBQb3NpdGl2ZSB2YWx1ZXMNCisvLy8gICAgZ3JlYXRl
ciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLiBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0
aGFuIDB4ODANCisvLy8gICAgYXJlIHNhdHVyYXRlZCB0byAweDgwLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gUEFDS1NTV0IgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBF
YWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQ0KKy8vLyAgICAxNi1iaXQgc2lnbmVk
IGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCBzaWduZWQgaW50ZWdlciB3aXRo
DQorLy8vICAgIHNhdHVyYXRpb24uIFBvc2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RiBh
cmUgc2F0dXJhdGVkIHRvIDB4N0YuDQorLy8vICAgIE5lZ2F0aXZlIHZhbHVlcyBsZXNzIHRoYW4g
MHg4MCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAuIFRoZSBjb252ZXJ0ZWQNCisvLy8gICAgWzQgeCBp
OF0gdmFsdWVzIGFyZSB3cml0dGVuIHRvIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XS4gRWFjaCAxNi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCisvLy8gICAgMTYt
Yml0IHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252ZXJ0ZWQgdG8gYW4gOC1iaXQgc2lnbmVkIGlu
dGVnZXIgd2l0aA0KKy8vLyAgICBzYXR1cmF0aW9uLiBQb3NpdGl2ZSB2YWx1ZXMgZ3JlYXRlciB0
aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdGLg0KKy8vLyAgICBOZWdhdGl2ZSB2YWx1ZXMg
bGVzcyB0aGFuIDB4ODAgYXJlIHNhdHVyYXRlZCB0byAweDgwLiBUaGUgY29udmVydGVkDQorLy8v
ICAgIFs0IHggaThdIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0aGUgdXBwZXIgMzIgYml0cyBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4
IGk4XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9wYWNrc19waTE2KF9fbTY0
IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BhY2tzc3diKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQorLy8vIENvbnZl
cnRzIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
cg0KKy8vLyAgICBwYXJhbWV0ZXJzIG9mIFsyIHggaTMyXSBpbnRvIDE2LWJpdCBzaWduZWQgaW50
ZWdlciB2YWx1ZXMsIGFuZCBjb25zdHJ1Y3RzDQorLy8vICAgIGEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs0IHggaTE2XSBhcyB0aGUgcmVzdWx0LiBQb3NpdGl2ZSB2YWx1ZXMNCisvLy8gICAg
Z3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgdmFs
dWVzIGxlc3MgdGhhbg0KKy8vLyAgICAweDgwMDAgYXJlIHNhdHVyYXRlZCB0byAweDgwMDAuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUNLU1NEVyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMiB4IGkzMl0uIEVhY2ggMzItYml0IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQorLy8vICAg
IDMyLWJpdCBzaWduZWQgaW50ZWdlciBhbmQgaXMgY29udmVydGVkIHRvIGEgMTYtYml0IHNpZ25l
ZCBpbnRlZ2VyIHdpdGgNCisvLy8gICAgc2F0dXJhdGlvbi4gUG9zaXRpdmUgdmFsdWVzIGdyZWF0
ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuDQorLy8vICAgIE5lZ2F0aXZl
IHZhbHVlcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgY29u
dmVydGVkDQorLy8vICAgIFsyIHggaTE2XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGxvd2Vy
IDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBFYWNoIDMyLWJpdCBlbGVtZW50IGlzIHRy
ZWF0ZWQgYXMgYQ0KKy8vLyAgICAzMi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRl
ZCB0byBhIDE2LWJpdCBzaWduZWQgaW50ZWdlciB3aXRoDQorLy8vICAgIHNhdHVyYXRpb24uIFBv
c2l0aXZlIHZhbHVlcyBncmVhdGVyIHRoYW4gMHg3RkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHg3RkZG
Lg0KKy8vLyAgICBOZWdhdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIDB4ODAwMCBhcmUgc2F0dXJhdGVk
IHRvIDB4ODAwMC4gVGhlIGNvbnZlcnRlZA0KKy8vLyAgICBbMiB4IGkxNl0gdmFsdWVzIGFyZSB3
cml0dGVuIHRvIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5z
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBjb252
ZXJ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9wYWNrc19waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0K
KyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3KChfX3Yyc2kpX19tMSwg
KF9fdjJzaSlfX20yKTsNCit9DQorDQorLy8vIENvbnZlcnRzIDE2LWJpdCBzaWduZWQgaW50ZWdl
cnMgZnJvbSBib3RoIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8vLyAgICBwYXJhbWV0ZXJzIG9m
IFs0IHggaTE2XSBpbnRvIDgtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLCBhbmQNCisvLy8g
ICAgY29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBhcyB0aGUg
cmVzdWx0LiBWYWx1ZXMNCisvLy8gICAgZ3JlYXRlciB0aGFuIDB4RkYgYXJlIHNhdHVyYXRlZCB0
byAweEZGLiBWYWx1ZXMgbGVzcyB0aGFuIDAgYXJlIHNhdHVyYXRlZA0KKy8vLyAgICB0byAwLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFDS1VTV0IgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdLiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQ0KKy8vLyAg
ICAxNi1iaXQgc2lnbmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCB1bnNp
Z25lZCBpbnRlZ2VyIHdpdGgNCisvLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhh
biAweEZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MNCisvLy8gICAgdGhhbiAw
IGFyZSBzYXR1cmF0ZWQgdG8gMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGk4XSB2YWx1ZXMgYXJlIHdy
aXR0ZW4gdG8NCisvLy8gICAgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZd
LiBFYWNoIDE2LWJpdCBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYQ0KKy8vLyAgICAxNi1iaXQgc2ln
bmVkIGludGVnZXIgYW5kIGlzIGNvbnZlcnRlZCB0byBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2Vy
IHdpdGgNCisvLy8gICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGIGFyZSBz
YXR1cmF0ZWQgdG8gMHhGRi4gVmFsdWVzIGxlc3MNCisvLy8gICAgdGhhbiAwIGFyZSBzYXR1cmF0
ZWQgdG8gMC4gVGhlIGNvbnZlcnRlZCBbNCB4IGk4XSB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8NCisv
Ly8gICAgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgY29udmVydGVk
DQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fcGFja3NfcHUxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWNrdXN3YigoX192NGhpKV9fbTEsIChfX3Y0
aGkpX19tMik7DQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSB1cHBlciAzMiBiaXRzIGZyb20gdHdv
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YgWzggeCBpOF0NCisvLy8gICAgYW5kIGludGVybGVh
dmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0hCVyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
OCB4IGk4XS4gXG4NCisvLy8gICAgQml0cyBbMzk6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6
MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNDc6NDBdIGFyZSB3cml0dGVuIHRv
IGJpdHMgWzIzOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs1NTo0OF0gYXJl
IHdyaXR0ZW4gdG8gYml0cyBbMzk6MzJdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMg
WzYzOjU2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFs1NTo0OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8g
XHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0u
DQorLy8vICAgIEJpdHMgWzM5OjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTo4XSBvZiB0aGUg
cmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs0Nzo0MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMzE6
MjRdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzU1OjQ4XSBhcmUgd3JpdHRlbiB0
byBiaXRzIFs0Nzo0MF0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbNjM6NTZdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzYzOjU2XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBpbnRlcmxl
YXZlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX3VucGFja2hpX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sN
CisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wdW5wY2toYncoKF9fdjhxaSlfX20x
LCAoX192OHFpKV9fbTIpOw0KK30NCisNCisvLy8gVW5wYWNrcyB0aGUgdXBwZXIgMzIgYml0cyBm
cm9tIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQorLy8vICAgIFs0IHggaTE2XSBhbmQg
aW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2
XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBVTlBDS0hXRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0uDQorLy8vICAgIEJpdHMgWzQ3OjMyXSBhcmUgd3JpdHRlbiB0byBi
aXRzIFsxNTowXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFs2Mzo0OF0gYXJlIHdy
aXR0ZW4gdG8gYml0cyBbNDc6MzJdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX20yDQor
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gICAgQml0
cyBbNDc6MzJdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0K
Ky8vLyAgICBCaXRzIFs2Mzo0OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6NDhdIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2
XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3VucGFja2hpX3BpMTYoX19t
NjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lh
MzJfcHVucGNraHdkKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQorLy8vIFVu
cGFja3MgdGhlIHVwcGVyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBv
Zg0KKy8vLyAgICBbMiB4IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQVU5QQ0tIRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgdXBwZXIgMzIg
Yml0cyBhcmUgd3JpdHRlbiB0bw0KKy8vLyAgICB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbMiB4IGkzMl0uIFRoZSB1cHBlciAzMiBiaXRzIGFyZSB3cml0dGVuIHRvDQorLy8vICAgIHRo
ZSB1cHBlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZA0KKy8v
LyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX3VucGFja2hpX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHVucGNraGRxKChfX3Yyc2kpX19tMSwgKF9fdjJz
aSlfX20yKTsNCit9DQorDQorLy8vIFVucGFja3MgdGhlIGxvd2VyIDMyIGJpdHMgZnJvbSB0d28g
NjQtYml0IGludGVnZXIgdmVjdG9ycyBvZiBbOCB4IGk4XQ0KKy8vLyAgICBhbmQgaW50ZXJsZWF2
ZXMgdGhlbSBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLTEJXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdLg0KKy8vLyAgICBCaXRzIFs3OjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzc6MF0gb2Yg
dGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMTU6OF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBb
MjM6MTZdIG9mIHRoZSByZXN1bHQuIFxuDQorLy8vICAgIEJpdHMgWzIzOjE2XSBhcmUgd3JpdHRl
biB0byBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzE6MjRd
IGFyZSB3cml0dGVuIHRvIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0g
X19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8g
ICAgQml0cyBbNzowXSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0LiBc
bg0KKy8vLyAgICBCaXRzIFsxNTo4XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMToyNF0gb2YgdGhl
IHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMjM6MTZdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzQ3
OjQwXSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRzIFszMToyNF0gYXJlIHdyaXR0ZW4g
dG8gYml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkDQorLy8v
ICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fdW5wYWNrbG9fcGk4KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1
cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3B1bnBja2xidygoX192OHFpKV9fbTEsIChfX3Y4cWkp
X19tMik7DQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSBsb3dlciAzMiBiaXRzIGZyb20gdHdvIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCisvLy8gICAgWzQgeCBpMTZdIGFuZCBpbnRlcmxlYXZl
cyB0aGVtIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFVOUENLTFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0
IHggaTE2XS4NCisvLy8gICAgQml0cyBbMTU6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbMTU6MF0g
b2YgdGhlIHJlc3VsdC4gXG4NCisvLy8gICAgQml0cyBbMzE6MTZdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzQ3OjMyXSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vICAgIEJpdHMgWzE1OjBdIGFy
ZSB3cml0dGVuIHRvIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICBCaXRz
IFszMToxNl0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6NDhdIG9mIHRoZSByZXN1bHQuDQorLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5n
IHRoZSBpbnRlcmxlYXZlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3VucGFja2xvX3BpMTYoX19tNjQgX19tMSwgX19t
NjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHVucGNrbHdk
KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQorLy8vIFVucGFja3MgdGhlIGxv
d2VyIDMyIGJpdHMgZnJvbSB0d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KKy8vLyAgICBb
MiB4IGkzMl0gYW5kIGludGVybGVhdmVzIHRoZW0gaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQVU5QQ0tMRFEg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgMzIgYml0cyBhcmUgd3Jp
dHRlbiB0bw0KKy8vLyAgICB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0u
IFRoZSBsb3dlciAzMiBiaXRzIGFyZSB3cml0dGVuIHRvDQorLy8vICAgIHRoZSB1cHBlciAzMiBi
aXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZA0KKy8vLyAgICB2YWx1ZXMu
DQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3VucGFj
a2xvX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcHVucGNrbGRxKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCit9
DQorDQorLy8vIEFkZHMgZWFjaCA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0
LWJpdCBpbnRlZ2VyIHZlY3Rvcg0KKy8vLyAgICBvZiBbOCB4IGk4XSB0byB0aGUgY29ycmVzcG9u
ZGluZyA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZA0KKy8vLyAgICA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFRoZSBsb3dlciA4IGJpdHMgb2YgdGhlIHJlc3Vs
dHMgYXJlDQorLy8vICAgIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFEREIgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCisvLy8gICAg
cGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fYWRkX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChf
X202NClfX2J1aWx0aW5faWEzMl9wYWRkYigoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7DQor
fQ0KKw0KKy8vLyBBZGRzIGVhY2ggMTYtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3Qg
NjQtYml0IGludGVnZXIgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggaTE2XSB0byB0aGUgY29ycmVz
cG9uZGluZyAxNi1iaXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQNCisvLy8gICAgNjQt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4gVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhl
IHJlc3VsdHMgYXJlDQorLy8vICAgIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBRERXIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc3VtcyBvZiBib3Ro
DQorLy8vICAgIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2FkZF9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAg
ICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BhZGR3KChfX3Y0aGkpX19tMSwgKF9fdjRo
aSlfX20yKTsNCit9DQorDQorLy8vIEFkZHMgZWFjaCAzMi1iaXQgaW50ZWdlciBlbGVtZW50IG9m
IHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb2YgWzIgeCBpMzJdIHRv
IHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZA0K
Ky8vLyAgICA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgMzIg
Yml0cyBvZiB0aGUgcmVzdWx0cyBhcmUNCisvLy8gICAgcGFja2VkIGludG8gYSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
UEFEREQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBccGFyYW0gX19tMg0K
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBz
dW1zIG9mIGJvdGgNCisvLy8gICAgcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkX3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19t
MikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZGQoKF9fdjJzaSlf
X20xLCAoX192MnNpKV9fbTIpOw0KK30NCisNCisvLy8gQWRkcyBlYWNoIDgtYml0IHNpZ25lZCBp
bnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3Rv
ciBvZiBbOCB4IGk4XSB0byB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCBzaWduZWQgaW50ZWdlciBl
bGVtZW50IG9mDQorLy8vICAgIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4
IHggaThdLiBQb3NpdGl2ZSBzdW1zIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICAweDdGIGFyZSBzYXR1
cmF0ZWQgdG8gMHg3Ri4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MCBhcmUgc2F0dXJhdGVk
IHRvDQorLy8vICAgIDB4ODAuIFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFBBRERTQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8gXHBhcmFtIF9fbTIN
CisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vIFxyZXR1
cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNh
dHVyYXRlZCBzdW1zDQorLy8vICAgIG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYWRkc19waTgoX19tNjQgX19tMSwg
X19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHNi
KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsNCit9DQorDQorLy8vIEFkZHMgZWFjaCAxNi1i
aXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVnZXINCisv
Ly8gICAgdmVjdG9yIG9mIFs0IHggaTE2XSB0byB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2ln
bmVkIGludGVnZXIgZWxlbWVudCBvZg0KKy8vLyAgICB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuDQorLy8vICAg
IDB4N0ZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4g
MHg4MDAwIGFyZQ0KKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHg4MDAwLiBUaGUgcmVzdWx0cyBhcmUg
cGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBpMTZd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFERFNXIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkIHN1bXMNCisvLy8gICAg
b2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9hZGRzX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHN3KChfX3Y0aGkpX19tMSwgKF9fdjRo
aSlfX20yKTsNCit9DQorDQorLy8vIEFkZHMgZWFjaCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVs
ZW1lbnQgb2YgdGhlIGZpcnN0IDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBvZiBbOCB4
IGk4XSB0byB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQg
b2YNCisvLy8gICAgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0u
IFN1bXMgZ3JlYXRlciB0aGFuIDB4RkYgYXJlDQorLy8vICAgIHNhdHVyYXRlZCB0byAweEZGLiBU
aGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YNCisv
Ly8gICAgWzggeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREVVNCIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQor
Ly8vICAgIHVuc2lnbmVkIHN1bXMgb2YgYm90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hZGRzX3B1OChfX202NCBfX20xLCBf
X202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wYWRkdXNi
KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsNCit9DQorDQorLy8vIEFkZHMgZWFjaCAxNi1i
aXQgdW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlcg0K
Ky8vLyAgICB2ZWN0b3Igb2YgWzQgeCBpMTZdIHRvIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCB1
bnNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQNCisvLy8gICAgb2YgdGhlIHNlY29uZCA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBTdW1zIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICAweEZG
RkYgYXJlIHNhdHVyYXRlZCB0byAweEZGRkYuIFRoZSByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBh
IDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBQQUREVVNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2
XS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVkDQorLy8vICAgIHVuc2lnbmVkIHN1bXMgb2Yg
Ym90aCBwYXJhbWV0ZXJzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9hZGRzX3B1MTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJl
dHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFkZHVzdygoX192NGhpKV9fbTEsIChfX3Y0aGkp
X19tMik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgZWFjaCA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQg
b2YgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3Igb2YgWzggeCBpOF0g
ZnJvbSB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlDQorLy8v
ICAgIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGxvd2VyIDgg
Yml0cyBvZiB0aGUgcmVzdWx0cw0KKy8vLyAgICBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQ
U1VCQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBtaW51ZW5k
cy4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzggeCBpOF0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVuY2Vz
IG9mDQorLy8vICAgIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3ViX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQ0K
K3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3ViYigoX192OHFpKV9fbTEs
IChfX3Y4cWkpX19tMik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgZWFjaCAxNi1iaXQgaW50ZWdl
ciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0IGludGVnZXINCisvLy8gICAgdmVjdG9yIG9m
IFs0IHggaTE2XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQg
b2YgdGhlDQorLy8vICAgIGZpcnN0IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
IFRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHRzIGFyZSBwYWNrZWQgaW50
byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBQU1VCVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFp
bmluZyB0aGUgbWludWVuZHMuDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisv
Ly8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5p
bmcgdGhlIGRpZmZlcmVuY2VzIG9mDQorLy8vICAgIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3ViX3BpMTYoX19tNjQg
X19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJf
cHN1YncoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOw0KK30NCisNCisvLy8gU3VidHJhY3Rz
IGVhY2ggMzItYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2Vy
DQorLy8vICAgIHZlY3RvciBvZiBbMiB4IGkzMl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAzMi1i
aXQgaW50ZWdlciBlbGVtZW50IG9mIHRoZQ0KKy8vLyAgICBmaXJzdCA2NC1iaXQgaW50ZWdlciB2
ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGUNCisvLy8gICAgcmVz
dWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQkQgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmRzLg0KKy8vLyBccGFyYW0gX19tMg0K
Ky8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0
aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBvZg0KKy8vLyAgICBib3RoIHBh
cmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3N1Yl9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJkKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsNCit9
DQorDQorLy8vIFN1YnRyYWN0cyBlYWNoIDgtYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2Yg
dGhlIHNlY29uZCA2NC1iaXQNCisvLy8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gZnJv
bSB0aGUgY29ycmVzcG9uZGluZyA4LWJpdCBzaWduZWQgaW50ZWdlcg0KKy8vLyAgICBlbGVtZW50
IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uIFBvc2l0aXZl
IHJlc3VsdHMNCisvLy8gICAgZ3JlYXRlciB0aGFuIDB4N0YgYXJlIHNhdHVyYXRlZCB0byAweDdG
LiBOZWdhdGl2ZSByZXN1bHRzIGxlc3MgdGhhbiAweDgwDQorLy8vICAgIGFyZSBzYXR1cmF0ZWQg
dG8gMHg4MC4gVGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCisv
Ly8gICAgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
UFNVQlNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAg
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIG1pbnVl
bmRzLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBv
ZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJldHVybnMgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVk
DQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3Vic19waTgoX19tNjQgX19tMSwg
X19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHN1YnNi
KChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsNCit9DQorDQorLy8vIFN1YnRyYWN0cyBlYWNo
IDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0DQorLy8v
ICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIDE2
LWJpdCBzaWduZWQgaW50ZWdlcg0KKy8vLyAgICBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLiBQb3NpdGl2ZSByZXN1bHRzDQorLy8vICAgIGdy
ZWF0ZXIgdGhhbiAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdGRkYuIE5lZ2F0aXZlIHJlc3Vs
dHMgbGVzcyB0aGFuDQorLy8vICAgIDB4ODAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4ODAwMC4gVGhl
IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTVUJTVyA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgbWludWVuZHMuDQorLy8v
IFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2
XSBjb250YWluaW5nIHRoZSBzdWJ0cmFoZW5kcy4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZA0KKy8vLyAg
ICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfcGkxNihfX202NCBfX20xLCBfX202NCBf
X20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Vic3coKF9fdjRo
aSlfX20xLCAoX192NGhpKV9fbTIpOw0KK30NCisNCisvLy8gU3VidHJhY3RzIGVhY2ggOC1iaXQg
dW5zaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0DQorLy8vICAgIGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgdW5z
aWduZWQgaW50ZWdlcg0KKy8vLyAgICBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vDQorLy8vICAgIElmIGFuIGVsZW1lbnQgb2YgdGhl
IGZpcnN0IHZlY3RvciBpcyBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudA0KKy8v
LyAgICBvZiB0aGUgc2Vjb25kIHZlY3RvciwgdGhlIHJlc3VsdCBpcyBzYXR1cmF0ZWQgdG8gMC4g
VGhlIHJlc3VsdHMgYXJlDQorLy8vICAgIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs4IHggaThdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNVQlVTQiA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBtaW51ZW5kcy4NCisv
Ly8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBp
OF0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgdGhlIHNhdHVyYXRlZA0KKy8vLyAg
ICBkaWZmZXJlbmNlcyBvZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19t
NjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N1YnNfcHU4KF9fbTY0IF9fbTEsIF9fbTY0IF9f
bTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJ1c2IoKF9fdjhx
aSlfX20xLCAoX192OHFpKV9fbTIpOw0KK30NCisNCisvLy8gU3VidHJhY3RzIGVhY2ggMTYtYml0
IHVuc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdA0KKy8vLyAgICBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gZnJvbSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQg
dW5zaWduZWQNCisvLy8gICAgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyAgICBJZiBhbiBlbGVtZW50IG9m
IHRoZSBmaXJzdCB2ZWN0b3IgaXMgbGVzcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQN
CisvLy8gICAgb2YgdGhlIHNlY29uZCB2ZWN0b3IsIHRoZSByZXN1bHQgaXMgc2F0dXJhdGVkIHRv
IDAuIFRoZSByZXN1bHRzIGFyZQ0KKy8vLyAgICBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1VC
VVNXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBtaW51ZW5k
cy4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHN1YnRyYWhlbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgc2F0dXJhdGVk
DQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3Vic19wdTE2KF9fbTY0IF9fbTEs
IF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzdWJ1
c3coKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyBl
YWNoIDE2LWJpdCBzaWduZWQgaW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCA2NC1iaXQNCisv
Ly8gICAgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGJ5IHRoZSBjb3JyZXNwb25kaW5nIDE2
LWJpdCBzaWduZWQgaW50ZWdlcg0KKy8vLyAgICBlbGVtZW50IG9mIHRoZSBzZWNvbmQgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBhbmQgZ2V0IGZvdXINCisvLy8gICAgMzItYml0
IHByb2R1Y3RzLiBBZGRzIGFkamFjZW50IHBhaXJzIG9mIHByb2R1Y3RzIHRvIGdldCB0d28gMzIt
Yml0IHN1bXMuDQorLy8vICAgIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZXNlIHR3byBzdW1zIGFy
ZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBvZiBbMiB4IGkz
Ml0uDQorLy8vDQorLy8vICAgIEZvciBleGFtcGxlLCBiaXRzIFsxNTowXSBvZiBib3RoIHBhcmFt
ZXRlcnMgYXJlIG11bHRpcGxpZWQsIGJpdHMgWzMxOjE2XQ0KKy8vLyAgICBvZiBib3RoIHBhcmFt
ZXRlcnMgYXJlIG11bHRpcGxpZWQsIGFuZCB0aGUgc3VtIG9mIGJvdGggcmVzdWx0cyBpcyB3cml0
dGVuDQorLy8vICAgIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSByZXN1bHQuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQTUFERFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4N
CisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQg
eCBpMTZdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkz
Ml0gY29udGFpbmluZyB0aGUgc3VtcyBvZg0KKy8vLyAgICBwcm9kdWN0cyBvZiBib3RoIHBhcmFt
ZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X21hZGRfcGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202
NClfX2J1aWx0aW5faWEzMl9wbWFkZHdkKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCit9
DQorDQorLy8vIE11bHRpcGxpZXMgZWFjaCAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBv
ZiB0aGUgZmlyc3QgNjQtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBi
eSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXINCisvLy8gICAgZWxlbWVu
dCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uIFBhY2tz
IHRoZSB1cHBlcg0KKy8vLyAgICAxNiBiaXRzIG9mIHRoZSAzMi1iaXQgcHJvZHVjdHMgaW50byBh
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQTVVMSFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
bTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBc
cGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
DQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250
YWluaW5nIHRoZSB1cHBlciAxNiBiaXRzDQorLy8vICAgIG9mIHRoZSBwcm9kdWN0cyBvZiBib3Ro
IHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX211bGhpX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVy
biAoX19tNjQpX19idWlsdGluX2lhMzJfcG11bGh3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20y
KTsNCit9DQorDQorLy8vIE11bHRpcGxpZXMgZWFjaCAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxl
bWVudCBvZiB0aGUgZmlyc3QgNjQtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHgg
aTE2XSBieSB0aGUgY29ycmVzcG9uZGluZyAxNi1iaXQgc2lnbmVkIGludGVnZXINCisvLy8gICAg
ZWxlbWVudCBvZiB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0u
IFBhY2tzIHRoZSBsb3dlcg0KKy8vLyAgICAxNiBiaXRzIG9mIHRoZSAzMi1iaXQgcHJvZHVjdHMg
aW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQTVVMTFcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0K
Ky8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4
IGkxNl0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2
XSBjb250YWluaW5nIHRoZSBsb3dlciAxNiBiaXRzDQorLy8vICAgIG9mIHRoZSBwcm9kdWN0cyBv
ZiBib3RoIHBhcmFtZXRlcnMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX211bGxvX3BpMTYoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG11bGx3KChfX3Y0aGkpX19tMSwgKF9fdjRo
aSlfX20yKTsNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIGVhY2ggMTYtYml0IHNpZ25lZCBpbnRl
Z2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0DQorLy8vICAgIHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLCBieSB0aGUgbnVtYmVyDQorLy8vICAg
IG9mIGJpdHMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0
LWJpdCBpbnRlZ2VyLiBUaGUNCisvLy8gICAgbG93ZXIgMTYgYml0cyBvZiB0aGUgcmVzdWx0cyBh
cmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBp
MTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTFcgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KKy8v
LyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmlu
ZyB0aGUgbGVmdC1zaGlmdGVkDQorLy8vICAgIHZhbHVlcy4gSWYgXGEgX19jb3VudCBpcyBncmVh
dGVyIG9yIGVxdWFsIHRvIDE2LCB0aGUgcmVzdWx0IGlzIHNldCB0byBhbGwNCisvLy8gICAgMC4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsX3Bp
MTYoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgICAg
cmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHNsbHcgKChfX3Y0aGkpX19tLCAoX192NGhp
KV9fY291bnQpOw0KKyNlbHNlDQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNs
bHcoKF9fdjRoaSlfX20sIF9fY291bnQpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gTGVmdC1zaGlm
dHMgZWFjaCAxNi1iaXQgc2lnbmVkIGludGVnZXIgZWxlbWVudCBvZiBhIDY0LWJpdCBpbnRlZ2Vy
DQorLy8vICAgIHZlY3RvciBvZiBbNCB4IGkxNl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNp
ZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLg0KKy8vLyAgICBUaGUgbG93ZXIgMTYgYml0cyBvZiB0
aGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8g
ICAgb2YgWzQgeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTFcgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAg
IEEgMzItYml0IGludGVnZXIgdmFsdWUuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSBsZWZ0LXNoaWZ0ZWQNCisvLy8gICAg
dmFsdWVzLiBJZiBcYSBfX2NvdW50IGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMTYsIHRoZSByZXN1
bHQgaXMgc2V0IHRvIGFsbA0KKy8vLyAgICAwLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9zbGxpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkN
Cit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNsbHdpKChfX3Y0aGkpX19t
LCBfX2NvdW50KTsNCit9DQorDQorLy8vIExlZnQtc2hpZnRzIGVhY2ggMzItYml0IHNpZ25lZCBp
bnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZpcnN0DQorLy8vICAgIHBhcmFtZXRlciwgd2hpY2ggaXMg
YSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCBieSB0aGUgbnVtYmVyDQorLy8v
ICAgIG9mIGJpdHMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBh
IDY0LWJpdCBpbnRlZ2VyLiBUaGUNCisvLy8gICAgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0
cyBhcmUgcGFja2VkIGludG8gYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YNCisvLy8gICAgWzIg
eCBpMzJdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNMTEQgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZiBbMiB4IGkzMl0uDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIGludGVycHJldGVkIGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0K
Ky8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFp
bmluZyB0aGUgbGVmdC1zaGlmdGVkDQorLy8vICAgIHZhbHVlcy4gSWYgXGEgX19jb3VudCBpcyBn
cmVhdGVyIG9yIGVxdWFsIHRvIDMyLCB0aGUgcmVzdWx0IGlzIHNldCB0byBhbGwNCisvLy8gICAg
MC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xs
X3BpMzIoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClf
X2J1aWx0aW5faWEzMl9wc2xsZCgoX192MnNpKV9fbSwgKF9fdjJzaSlfX2NvdW50KTsNCit9DQor
DQorLy8vIExlZnQtc2hpZnRzIGVhY2ggMzItYml0IHNpZ25lZCBpbnRlZ2VyIGVsZW1lbnQgb2Yg
YSA2NC1iaXQgaW50ZWdlcg0KKy8vLyAgICB2ZWN0b3Igb2YgWzIgeCBpMzJdIGJ5IHRoZSBudW1i
ZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4NCisvLy8gICAgVGhlIGxv
d2VyIDMyIGJpdHMgb2YgdGhlIHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVn
ZXIgdmVjdG9yDQorLy8vICAgIG9mIFsyIHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFBTTExEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20NCisv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBccGFyYW0g
X19jb3VudA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLg0KKy8vLyBccmV0dXJucyBB
IDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgbGVmdC1z
aGlmdGVkDQorLy8vICAgIHZhbHVlcy4gSWYgXGEgX19jb3VudCBpcyBncmVhdGVyIG9yIGVxdWFs
IHRvIDMyLCB0aGUgcmVzdWx0IGlzIHNldCB0byBhbGwNCisvLy8gICAgMC4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsaV9waTMyKF9fbTY0IF9f
bSwgaW50IF9fY291bnQpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bz
bGxkaSgoX192MnNpKV9fbSwgX19jb3VudCk7DQorfQ0KKw0KKy8vLyBMZWZ0LXNoaWZ0cyB0aGUg
Zmlyc3QgNjQtYml0IGludGVnZXIgcGFyYW1ldGVyIGJ5IHRoZSBudW1iZXIgb2YgYml0cw0KKy8v
LyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIuIFRo
ZSBsb3dlciA2NCBiaXRzIG9mDQorLy8vICAgIHJlc3VsdCBhcmUgcmV0dXJuZWQuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU0xMUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGludGVycHJldGVk
IGFzIGEgc2luZ2xlIDY0LWJpdCBpbnRlZ2VyLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQg
aW50ZWdlci4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyB0aGUgbGVmdC1zaGlmdGVkIHZhbHVlLiBJZg0KKy8vLyAgICAgXGEgX19jb3VudCBpcyBncmVh
dGVyIG9yIGVxdWFsIHRvIDY0LCB0aGUgcmVzdWx0IGlzIHNldCB0byAwLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zbGxfc2k2NChfX202NCBfX20s
IF9fbTY0IF9fY291bnQpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3Bz
bGxxKChfX3YxZGkpX19tLCAoX192MWRpKV9fY291bnQpOw0KK30NCisNCisvLy8gTGVmdC1zaGlm
dHMgdGhlIGZpcnN0IHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciwgYnkgdGhl
DQorLy8vICAgIG51bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRl
ciwgd2hpY2ggaXMgYSAzMi1iaXQNCisvLy8gICAgaW50ZWdlci4gVGhlIGxvd2VyIDY0IGJpdHMg
b2YgcmVzdWx0IGFyZSByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBT
TExRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2
NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVn
ZXIuDQorLy8vIFxwYXJhbSBfX2NvdW50DQorLy8vICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUu
DQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGxl
ZnQtc2hpZnRlZCB2YWx1ZS4gSWYNCisvLy8gICAgIFxhIF9fY291bnQgaXMgZ3JlYXRlciBvciBl
cXVhbCB0byA2NCwgdGhlIHJlc3VsdCBpcyBzZXQgdG8gMC4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2xsaV9zaTY0KF9fbTY0IF9fbSwgaW50IF9f
Y291bnQpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzbGxxaSgoX192
MWRpKV9fbSwgX19jb3VudCk7DQorfQ0KKw0KKy8vLyBSaWdodC1zaGlmdHMgZWFjaCAxNi1iaXQg
aW50ZWdlciBlbGVtZW50IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIsDQorLy8vICAgIHdoaWNoIGlz
IGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSwgYnkgdGhlIG51bWJlciBvZiBi
aXRzDQorLy8vICAgIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMg
YSA2NC1iaXQgaW50ZWdlci4NCisvLy8NCisvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxs
ZWQgd2l0aCB0aGUgc2lnbiBiaXQgb2YgdGhlIGluaXRpYWwgdmFsdWUgb2YgZWFjaA0KKy8vLyAg
ICAxNi1iaXQgZWxlbWVudC4gVGhlIDE2LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0
LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQU1JBVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisv
Ly8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJw
cmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVk
DQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fc3JhX3BpMTYoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQ0KK3sNCisgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JhdygoX192NGhpKV9fbSwgKF9fdjRoaSlf
X2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVs
ZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBpMTZdIGJ5
IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4NCisvLy8N
CisvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBmaWxsZWQgd2l0aCB0aGUgc2lnbiBiaXQgb2Yg
dGhlIGluaXRpYWwgdmFsdWUgb2YgZWFjaA0KKy8vLyAgICAxNi1iaXQgZWxlbWVudC4gVGhlIDE2
LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdCBpbnRlZ2VyDQorLy8vICAgIHZl
Y3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQU1JBVyA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tDQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIF9fY291bnQNCisvLy8g
ICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQNCisvLy8g
ICAgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9zcmFpX3BpMTYoX19tNjQgX19tLCBpbnQgX19jb3VudCkNCit7DQorICAgIHJldHVybiAo
X19tNjQpX19idWlsdGluX2lhMzJfcHNyYXdpKChfX3Y0aGkpX19tLCBfX2NvdW50KTsNCit9DQor
DQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnQgb2YgdGhlIGZp
cnN0IHBhcmFtZXRlciwNCisvLy8gICAgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLCBieSB0aGUgbnVtYmVyIG9mIGJpdHMNCisvLy8gICAgc3BlY2lmaWVkIGJ5
IHRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyLg0KKy8vLw0K
Ky8vLyAgICBIaWdoLW9yZGVyIGJpdHMgYXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduIGJpdCBvZiB0
aGUgaW5pdGlhbCB2YWx1ZSBvZiBlYWNoDQorLy8vICAgIDMyLWJpdCBlbGVtZW50LiBUaGUgMzIt
Yml0IHJlc3VsdHMgYXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0IGludGVnZXINCisvLy8gICAgdmVj
dG9yIG9mIFsyIHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkFEIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQg
aW50ZWdlci4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBp
MzJdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQNCisvLy8gICAgdmFsdWVzLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcmFfcGkzMihfX202
NCBfX20sIF9fbTY0IF9fY291bnQpDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9p
YTMyX3BzcmFkKChfX3Yyc2kpX19tLCAoX192MnNpKV9fY291bnQpOw0KK30NCisNCisvLy8gUmln
aHQtc2hpZnRzIGVhY2ggMzItYml0IGludGVnZXIgZWxlbWVudCBvZiBhIDY0LWJpdCBpbnRlZ2Vy
IHZlY3Rvcg0KKy8vLyAgICBvZiBbMiB4IGkzMl0gYnkgdGhlIG51bWJlciBvZiBiaXRzIHNwZWNp
ZmllZCBieSBhIDMyLWJpdCBpbnRlZ2VyLg0KKy8vLw0KKy8vLyAgICBIaWdoLW9yZGVyIGJpdHMg
YXJlIGZpbGxlZCB3aXRoIHRoZSBzaWduIGJpdCBvZiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBlYWNo
DQorLy8vICAgIDMyLWJpdCBlbGVtZW50LiBUaGUgMzItYml0IHJlc3VsdHMgYXJlIHBhY2tlZCBp
bnRvIGEgNjQtYml0IGludGVnZXINCisvLy8gICAgdmVjdG9yIG9mIFsyIHggaTMyXS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkFEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBp
MzJdLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVl
Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0gY29u
dGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NyYWlfcGkzMihfX202NCBfX20s
IGludCBfX2NvdW50KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3Jh
ZGkoKF9fdjJzaSlfX20sIF9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRzIGVhY2gg
MTYtYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLA0KKy8vLyAgICB3
aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0sIGJ5IHRoZSBudW1i
ZXIgb2YgYml0cw0KKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0ZXIsIHdo
aWNoIGlzIGEgNjQtYml0IGludGVnZXIuDQorLy8vDQorLy8vICAgIEhpZ2gtb3JkZXIgYml0cyBh
cmUgY2xlYXJlZC4gVGhlIDE2LWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0LWJpdA0K
Ky8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQU1JMVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19t
DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBh
cmFtIF9fY291bnQNCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQg
YXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVkDQorLy8v
ICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fc3JsX3BpMTYoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQ0KK3sNCisgICAgcmV0dXJu
IChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsdygoX192NGhpKV9fbSwgKF9fdjRoaSlfX2NvdW50
KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnQg
b2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb2YgWzQgeCBpMTZdIGJ5IHRoZSBu
dW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4NCisvLy8NCisvLy8g
ICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMTYtYml0IHJlc3VsdHMgYXJlIHBh
Y2tlZCBpbnRvIGEgNjQtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkxXIDwvYz4gaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2Yg
WzQgeCBpMTZdLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2Vy
IHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkx
Nl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KKy8vLyAgICB2YWx1ZXMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybGlfcGkxNihfX202
NCBfX20sIGludCBfX2NvdW50KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEz
Ml9wc3Jsd2koKF9fdjRoaSlfX20sIF9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQtc2hpZnRz
IGVhY2ggMzItYml0IGludGVnZXIgZWxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVyLA0KKy8v
LyAgICB3aGljaCBpcyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0sIGJ5IHRo
ZSBudW1iZXIgb2YgYml0cw0KKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0
ZXIsIHdoaWNoIGlzIGEgNjQtYml0IGludGVnZXIuDQorLy8vDQorLy8vICAgIEhpZ2gtb3JkZXIg
Yml0cyBhcmUgY2xlYXJlZC4gVGhlIDMyLWJpdCByZXN1bHRzIGFyZSBwYWNrZWQgaW50byBhIDY0
LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBQU1JMRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19tDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXS4NCisv
Ly8gXHBhcmFtIF9fY291bnQNCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJw
cmV0ZWQgYXMgYSBzaW5nbGUgNjQtYml0IGludGVnZXIuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSByaWdodC1zaGlmdGVk
DQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fc3JsX3BpMzIoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQ0KK3sNCisgICAg
cmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc3JsZCgoX192MnNpKV9fbSwgKF9fdjJzaSlf
X2NvdW50KTsNCit9DQorDQorLy8vIFJpZ2h0LXNoaWZ0cyBlYWNoIDMyLWJpdCBpbnRlZ2VyIGVs
ZW1lbnQgb2YgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3INCisvLy8gICAgb2YgWzIgeCBpMzJdIGJ5
IHRoZSBudW1iZXIgb2YgYml0cyBzcGVjaWZpZWQgYnkgYSAzMi1iaXQgaW50ZWdlci4NCisvLy8N
CisvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLiBUaGUgMzItYml0IHJlc3VsdHMg
YXJlIHBhY2tlZCBpbnRvIGEgNjQtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIG9mIFsyIHgg
aTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBTUkxEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBccGFyYW0gX19jb3VudA0KKy8vLyAgICBBIDMyLWJpdCBp
bnRlZ2VyIHZhbHVlLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
MiB4IGkzMl0gY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRlZA0KKy8vLyAgICB2YWx1ZXMuDQor
c3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybGlfcGkz
MihfX202NCBfX20sIGludCBfX2NvdW50KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0
aW5faWEzMl9wc3JsZGkoKF9fdjJzaSlfX20sIF9fY291bnQpOw0KK30NCisNCisvLy8gUmlnaHQt
c2hpZnRzIHRoZSBmaXJzdCA2NC1iaXQgaW50ZWdlciBwYXJhbWV0ZXIgYnkgdGhlIG51bWJlciBv
ZiBiaXRzDQorLy8vICAgIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIDY0LWJpdCBpbnRlZ2VyIHBh
cmFtZXRlci4NCisvLy8NCisvLy8gICAgSGlnaC1vcmRlciBiaXRzIGFyZSBjbGVhcmVkLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBpbnRlcnBy
ZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQgaW50ZWdlci4NCisvLy8gXHBhcmFtIF9fY291bnQNCisv
Ly8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW50ZXJwcmV0ZWQgYXMgYSBzaW5nbGUgNjQt
Yml0IGludGVnZXIuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIHJpZ2h0LXNoaWZ0ZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NybF9zaTY0KF9fbTY0IF9fbSwgX19tNjQgX19jb3Vu
dCkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNybHEoKF9fdjFkaSlf
X20sIChfX3YxZGkpX19jb3VudCk7DQorfQ0KKw0KKy8vLyBSaWdodC1zaGlmdHMgdGhlIGZpcnN0
IHBhcmFtZXRlciwgd2hpY2ggaXMgYSA2NC1iaXQgaW50ZWdlciwgYnkgdGhlDQorLy8vICAgIG51
bWJlciBvZiBiaXRzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMg
YSAzMi1iaXQNCisvLy8gICAgaW50ZWdlci4NCisvLy8NCisvLy8gICAgSGlnaC1vcmRlciBiaXRz
IGFyZSBjbGVhcmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNSTFEgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3RvciBpbnRlcnByZXRlZCBhcyBhIHNpbmdsZSA2NC1iaXQgaW50ZWdlci4NCisvLy8g
XHBhcmFtIF9fY291bnQNCisvLy8gICAgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4NCisvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmlnaHQtc2hpZnRl
ZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fc3JsaV9zaTY0KF9fbTY0IF9fbSwgaW50IF9fY291bnQpDQorew0KKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BzcmxxaSgoX192MWRpKV9fbSwgX19jb3VudCk7DQorfQ0KKw0K
Ky8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3Jz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFORCA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4N
CisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2Ug
QU5EIG9mIGJvdGgNCisvLy8gICAgcGFyYW1ldGVycy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYW5kX3NpNjQoX19tNjQgX19tMSwgX19tNjQgX19t
MikNCit7DQorICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9wYW5kKF9fbTEsIF9fbTIpOw0KK30N
CisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE5PVCBvZiB0aGUgZmlyc3QgNjQtYml0IGludGVn
ZXIgdmVjdG9yLCBhbmQgdGhlbg0KKy8vLyAgICBwZXJmb3JtcyBhIGJpdHdpc2UgQU5EIG9mIHRo
ZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCB0aGUgc2Vjb25kIDY0LWJpdA0KKy8vLyAgICBpbnRl
Z2VyIHZlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBBTkROIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yLiBUaGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGlzIHBhcmFtZXRlciBpcyB1c2Vk
DQorLy8vICAgIGluIHRoZSBiaXR3aXNlIEFORC4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZSBzZWNvbmQNCisvLy8gICAg
cGFyYW1ldGVyIGFuZCB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgZmlyc3QgcGFyYW1ldGVy
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hbmRu
b3Rfc2k2NChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisg
ICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BhbmRuIChfX20xLCBfX20yKTsNCisjZWxzZQ0KKyAg
ICByZXR1cm4gX19idWlsdGluX2lhMzJfcGFuZG4oKF9fdjFkaSlfX20xLCAoX192MWRpKV9fbTIp
Ow0KKyNlbmRpZg0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIE9SIG9mIHR3byA2NC1i
aXQgaW50ZWdlciB2ZWN0b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE9SIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0
IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRl
Z2VyIHZlY3Rvci4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgYml0d2lzZSBPUiBvZiBib3RoDQorLy8vICAgIHBhcmFtZXRlcnMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX29yX3NpNjQoX19tNjQg
X19tMSwgX19tNjQgX19tMikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICAgIHJldHVybiBfX2J1
aWx0aW5faWEzMl9wb3IoX19tMSwgX19tMik7DQorI2Vsc2UNCisgICAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX3BvcigoX192MWRpKV9fbTEsIChfX3YxZGkpX19tMik7DQorI2VuZGlmDQorfQ0KKw0K
Ky8vLyBQZXJmb3JtcyBhIGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9mIHR3byA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3JzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFhPUiA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3Rvci4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9mIGJvdGgNCisvLy8gICAgcGFyYW1ldGVycy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1feG9yX3NpNjQoX19t
NjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9weG9y
IChfX20xLCBfX20yKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSA4LWJpdCBpbnRlZ2VyIGVs
ZW1lbnRzIG9mIHR3byA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQorLy8vICAgIFs4IHggaThd
IHRvIGRldGVybWluZSBpZiB0aGUgZWxlbWVudCBvZiB0aGUgZmlyc3QgdmVjdG9yIGlzIGVxdWFs
IHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29uZCB2ZWN0
b3IuDQorLy8vDQorLy8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhG
RiBmb3IgdHJ1ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBDTVBFUUIgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzggeCBpOF0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBp
bnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uDQorLy8v
ICAgIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2NtcGVxX3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJu
IChfX202NClfX2J1aWx0aW5faWEzMl9wY21wZXFiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20y
KTsNCit9DQorDQorLy8vIENvbXBhcmVzIHRoZSAxNi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0
d28gNjQtYml0IGludGVnZXIgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4IGkxNl0gdG8gZGV0ZXJt
aW5lIGlmIHRoZSBlbGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZXF1YWwgdG8gdGhlDQor
Ly8vICAgIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiB0aGUgc2Vjb25kIHZlY3Rvci4NCisvLy8N
CisvLy8gICAgVGhlIGNvbXBhcmlzb24geWllbGRzIDAgZm9yIGZhbHNlLCAweEZGRkYgZm9yIHRy
dWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QRVFXIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICBy
ZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9jbXBlcV9waTE2KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BjbXBlcXcoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOw0K
K30NCisNCisvLy8gQ29tcGFyZXMgdGhlIDMyLWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIHR3byA2
NC1iaXQgaW50ZWdlciB2ZWN0b3JzIG9mDQorLy8vICAgIFsyIHggaTMyXSB0byBkZXRlcm1pbmUg
aWYgdGhlIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHZlY3RvciBpcyBlcXVhbCB0byB0aGUNCisvLy8g
ICAgY29ycmVzcG9uZGluZyBlbGVtZW50IG9mIHRoZSBzZWNvbmQgdmVjdG9yLg0KKy8vLw0KKy8v
LyAgICBUaGUgY29tcGFyaXNvbiB5aWVsZHMgMCBmb3IgZmFsc2UsIDB4RkZGRkZGRkYgZm9yIHRy
dWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQ01QRVFEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX20xDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFsyIHggaTMyXS4NCisvLy8gXHBhcmFtIF9fbTINCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbg0KKy8vLyAgICBy
ZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9jbXBlcV9waTMyKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpDQorew0KKyAgICByZXR1cm4gKF9f
bTY0KV9fYnVpbHRpbl9pYTMyX3BjbXBlcWQoKF9fdjJzaSlfX20xLCAoX192MnNpKV9fbTIpOw0K
K30NCisNCisvLy8gQ29tcGFyZXMgdGhlIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgdHdvIDY0
LWJpdCBpbnRlZ2VyIHZlY3RvcnMgb2YNCisvLy8gICAgWzggeCBpOF0gdG8gZGV0ZXJtaW5lIGlm
IHRoZSBlbGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZ3JlYXRlciB0aGFuDQorLy8vICAg
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29uZCB2ZWN0b3IuDQorLy8vDQor
Ly8vICAgIFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRiBmb3IgdHJ1ZS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBDTVBHVEIgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzggeCBpOF0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIG9mIFs4IHggaThdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbOCB4IGk4XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3VsdHMu
DQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGd0
X3BpOChfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1
aWx0aW5faWEzMl9wY21wZ3RiKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsNCit9DQorDQor
Ly8vIENvbXBhcmVzIHRoZSAxNi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGlu
dGVnZXIgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4IGkxNl0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBl
bGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZ3JlYXRlciB0aGFuDQorLy8vICAgIHRoZSBj
b3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29uZCB2ZWN0b3IuDQorLy8vDQorLy8vICAg
IFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGIGZvciB0cnVlLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUENNUEdUVyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19tMQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBb
NCB4IGkxNl0uDQorLy8vIFxwYXJhbSBfX20yDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24NCisvLy8gICAgcmVzdWx0cy4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZ3Rf
cGkxNihfX202NCBfX20xLCBfX202NCBfX20yKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1
aWx0aW5faWEzMl9wY21wZ3R3KChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsNCit9DQorDQor
Ly8vIENvbXBhcmVzIHRoZSAzMi1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiB0d28gNjQtYml0IGlu
dGVnZXIgdmVjdG9ycyBvZg0KKy8vLyAgICBbMiB4IGkzMl0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBl
bGVtZW50IG9mIHRoZSBmaXJzdCB2ZWN0b3IgaXMgZ3JlYXRlciB0aGFuDQorLy8vICAgIHRoZSBj
b3JyZXNwb25kaW5nIGVsZW1lbnQgb2YgdGhlIHNlY29uZCB2ZWN0b3IuDQorLy8vDQorLy8vICAg
IFRoZSBjb21wYXJpc29uIHlpZWxkcyAwIGZvciBmYWxzZSwgMHhGRkZGRkZGRiBmb3IgdHJ1ZS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBDTVBHVEQgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fbTENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YgWzIgeCBpMzJdLg0KKy8vLyBccGFyYW0gX19tMg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvZiBbMiB4IGkzMl0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVj
dG9yIG9mIFsyIHggaTMyXSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uDQorLy8vICAgIHJlc3Vs
dHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Nt
cGd0X3BpMzIoX19tNjQgX19tMSwgX19tNjQgX19tMikNCit7DQorICAgIHJldHVybiAoX19tNjQp
X19idWlsdGluX2lhMzJfcGNtcGd0ZCgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7DQorfQ0K
Kw0KKy8vLyBDb25zdHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHRv
IHplcm8uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQWE9SIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciB3aXRoIGFsbCBlbGVtZW50cyBzZXQgdG8gemVyby4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0emVyb19zaTY0KHZvaWQpDQorew0KKyAg
ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tNjQpeyAwTEwgfTsNCit9DQorDQorLy8vIENvbnN0
cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lm
aWVkDQorLy8vICAgIDMyLWJpdCBpbnRlZ2VyIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkg
ZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9faTENCisvLy8gICAgQSAzMi1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlDQor
Ly8vICAgIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9faTANCisvLy8gICAgQSAzMi1iaXQgaW50ZWdl
ciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlDQorLy8v
ICAgIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIg
dmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9zZXRfcGkzMihpbnQgX19pMSwgaW50IF9faTApDQorew0KKyAgICByZXR1cm4gKF9fbTY0KV9f
YnVpbHRpbl9pYTMyX3ZlY19pbml0X3Yyc2koX19pMCwgX19pMSk7DQorfQ0KKw0KKy8vLyBDb25z
dHJ1Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNp
ZmllZA0KKy8vLyAgICAxNi1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5
IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3MzDQorLy8vICAgIEEgMTYtYml0IGlu
dGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzYzOjQ4XSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19zMg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
czENCisvLy8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMzE6MTZdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3MwDQorLy8vICAgIEEgMTYt
Yml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0
X3BpMTYoc2hvcnQgX19zMywgc2hvcnQgX19zMiwgc2hvcnQgX19zMSwgc2hvcnQgX19zMCkNCit7
DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfdmVjX2luaXRfdjRoaShfX3MwLCBf
X3MxLCBfX3MyLCBfX3MzKTsNCit9DQorDQorLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdl
ciB2ZWN0b3IgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc3BlY2lmaWVkDQorLy8vICAgIDgtYml0IGlu
dGVnZXIgdmFsdWVzLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQgZG9lcyBub3Qg
Y29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19iNw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjYNCisv
Ly8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNTU6
NDhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2I1DQorLy8vICAgIEFuIDgtYml0IGlu
dGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzQ3OjQwXSBvZiB0aGUgcmVzdWx0
Lg0KKy8vLyBccGFyYW0gX19iNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
YjMNCisvLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IyDQorLy8vICAgIEFuIDgt
Yml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzIzOjE2XSBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccGFyYW0gX19iMQ0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFsxNTo4XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19iMA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFs3OjBdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVk
IDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fc2V0X3BpOChjaGFyIF9fYjcsIGNoYXIgX19iNiwgY2hhciBfX2I1
LCBjaGFyIF9fYjQsIGNoYXIgX19iMywgY2hhciBfX2IyLA0KKyAgICAgICAgICAgIGNoYXIgX19i
MSwgY2hhciBfX2IwKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl92ZWNf
aW5pdF92OHFpKF9fYjAsIF9fYjEsIF9fYjIsIF9fYjMsDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2I0LCBfX2I1LCBfX2I2LCBfX2I3KTsNCit9DQor
DQorLy8vIENvbnN0cnVjdHMgYSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzIgeCBpMzJdLCB3
aXRoIGVhY2ggb2YgdGhlDQorLy8vICAgIDMyLWJpdCBpbnRlZ2VyIHZlY3RvciBlbGVtZW50cyBz
ZXQgdG8gdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlcg0KKy8vLyAgICB2YWx1ZS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBpcyBhIHV0aWxpdHkgZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVj
aWZpYw0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9faQ0KKy8vLyAg
ICBBIDMyLWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBlYWNoIHZlY3RvciBl
bGVtZW50IG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxp
emVkIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbMiB4IGkzMl0uDQorc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldDFfcGkzMihpbnQgX19pKQ0KK3sN
CisgICAgcmV0dXJuIF9tbV9zZXRfcGkzMihfX2ksIF9faSk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1
Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTE2XSwgd2l0aCBlYWNoIG9mIHRo
ZQ0KKy8vLyAgICAxNi1iaXQgaW50ZWdlciB2ZWN0b3IgZWxlbWVudHMgc2V0IHRvIHRoZSBzcGVj
aWZpZWQgMTYtYml0IGludGVnZXINCisvLy8gICAgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5
IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAg
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cNCisvLy8gICAgQSAxNi1iaXQgaW50
ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3IgZWxlbWVudCBvZiB0aGUN
CisvLy8gICAgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCA2NC1iaXQgaW50
ZWdlciB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9zZXQxX3BpMTYoc2hvcnQgX193KQ0KK3sNCisgICAgcmV0dXJu
IF9tbV9zZXRfcGkxNihfX3csIF9fdywgX193LCBfX3cpOw0KK30NCisNCisvLy8gQ29uc3RydWN0
cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbOCB4IGk4XSwgd2l0aCBlYWNoIG9mIHRoZQ0K
Ky8vLyAgICA4LWJpdCBpbnRlZ2VyIHZlY3RvciBlbGVtZW50cyBzZXQgdG8gdGhlIHNwZWNpZmll
ZCA4LWJpdCBpbnRlZ2VyIHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGlzIGEgdXRpbGl0eSBmdW5jdGlvbiBhbmQg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHNwZWNpZmljDQorLy8vICAgIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGVhY2ggdmVjdG9yIGVsZW1lbnQgb2YgdGhlDQorLy8vICAgIHJlc3Vs
dC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9m
IFs4IHggaThdLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9zZXQxX3BpOChjaGFyIF9fYikNCit7DQorICAgIHJldHVybiBfbW1fc2V0X3BpOChfX2Is
IF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYik7DQorfQ0KKw0KKy8vLyBDb25zdHJ1
Y3RzIGEgNjQtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVy
IHdpdGgNCisvLy8gICAgdGhlIHNwZWNpZmllZCAzMi1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3Bl
Y2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2kwDQorLy8v
ICAgIEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsb3dlciAz
MiBiaXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2kxDQorLy8vICAg
IEEgMzItYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB1cHBlciAzMiBi
aXRzIG9mIHRoZQ0KKy8vLyAgICByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVk
IDY0LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fc2V0cl9waTMyKGludCBfX2kwLCBpbnQgX19pMSkNCit7DQorICAg
IHJldHVybiBfbW1fc2V0X3BpMzIoX19pMSwgX19pMCk7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3Rz
IGEgNjQtYml0IGludGVnZXIgdmVjdG9yLCBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVyIHdp
dGgNCisvLy8gICAgdGhlIHNwZWNpZmllZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
aXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lm
aWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3cwDQorLy8vICAg
IEEgMTYtYml0IGludGVnZXIgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzE1OjBdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3cxDQorLy8vICAgIEEgMTYtYml0IGludGVnZXIg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjE2XSBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gX193Mg0KKy8vLyAgICBBIDE2LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs0NzozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdzMNCisv
Ly8gICAgQSAxNi1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6
NDhdIG9mIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEFuIGluaXRpYWxpemVkIDY0LWJpdCBp
bnRlZ2VyIHZlY3Rvci4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fc2V0cl9waTE2KHNob3J0IF9fdzAsIHNob3J0IF9fdzEsIHNob3J0IF9fdzIsIHNo
b3J0IF9fdzMpDQorew0KKyAgICByZXR1cm4gX21tX3NldF9waTE2KF9fdzMsIF9fdzIsIF9fdzEs
IF9fdzApOw0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rvciwg
aW5pdGlhbGl6ZWQgaW4gcmV2ZXJzZSBvcmRlciB3aXRoDQorLy8vICAgIHRoZSBzcGVjaWZpZWQg
OC1iaXQgaW50ZWdlciB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBk
b2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2IwDQorLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUgdXNl
ZCB0byBpbml0aWFsaXplIGJpdHMgWzc6MF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
YjENCisvLy8gICAgQW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0
cyBbMTU6OF0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjINCisvLy8gICAgQW4gOC1i
aXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbMjM6MTZdIG9mIHRoZSBy
ZXN1bHQuDQorLy8vIFxwYXJhbSBfX2IzDQorLy8vICAgIEFuIDgtYml0IGludGVnZXIgdmFsdWUg
dXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzMxOjI0XSBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFy
YW0gX19iNA0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBiaXRzIFszOTozMl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYjUNCisvLy8gICAg
QW4gOC1iaXQgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNDc6NDBdIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX2I2DQorLy8vICAgIEFuIDgtYml0IGludGVnZXIg
dmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzU1OjQ4XSBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gX19iNw0KKy8vLyAgICBBbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIHVzZWQgdG8gaW5p
dGlhbGl6ZSBiaXRzIFs2Mzo1Nl0gb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5p
dGlhbGl6ZWQgNjQtYml0IGludGVnZXIgdmVjdG9yLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRyX3BpOChjaGFyIF9fYjAsIGNoYXIgX19iMSwg
Y2hhciBfX2IyLCBjaGFyIF9fYjMsIGNoYXIgX19iNCwgY2hhciBfX2I1LA0KKyAgICAgICAgICAg
ICBjaGFyIF9fYjYsIGNoYXIgX19iNykNCit7DQorICAgIHJldHVybiBfbW1fc2V0X3BpOChfX2I3
LCBfX2I2LCBfX2I1LCBfX2I0LCBfX2IzLCBfX2IyLCBfX2IxLCBfX2IwKTsNCit9DQorDQorI3Vu
ZGVmIF9fREVGQVVMVF9GTl9BVFRSUw0KKw0KKy8qIEFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHku
ICovDQorI2RlZmluZSBfbV9lbXB0eSBfbW1fZW1wdHkNCisjZGVmaW5lIF9tX2Zyb21faW50IF9t
bV9jdnRzaTMyX3NpNjQNCisjZGVmaW5lIF9tX2Zyb21faW50NjQgX21tX2N2dHNpNjRfbTY0DQor
I2RlZmluZSBfbV90b19pbnQgX21tX2N2dHNpNjRfc2kzMg0KKyNkZWZpbmUgX21fdG9faW50NjQg
X21tX2N2dG02NF9zaTY0DQorI2RlZmluZSBfbV9wYWNrc3N3YiBfbW1fcGFja3NfcGkxNg0KKyNk
ZWZpbmUgX21fcGFja3NzZHcgX21tX3BhY2tzX3BpMzINCisjZGVmaW5lIF9tX3BhY2t1c3diIF9t
bV9wYWNrc19wdTE2DQorI2RlZmluZSBfbV9wdW5wY2toYncgX21tX3VucGFja2hpX3BpOA0KKyNk
ZWZpbmUgX21fcHVucGNraHdkIF9tbV91bnBhY2toaV9waTE2DQorI2RlZmluZSBfbV9wdW5wY2to
ZHEgX21tX3VucGFja2hpX3BpMzINCisjZGVmaW5lIF9tX3B1bnBja2xidyBfbW1fdW5wYWNrbG9f
cGk4DQorI2RlZmluZSBfbV9wdW5wY2tsd2QgX21tX3VucGFja2xvX3BpMTYNCisjZGVmaW5lIF9t
X3B1bnBja2xkcSBfbW1fdW5wYWNrbG9fcGkzMg0KKyNkZWZpbmUgX21fcGFkZGIgX21tX2FkZF9w
aTgNCisjZGVmaW5lIF9tX3BhZGR3IF9tbV9hZGRfcGkxNg0KKyNkZWZpbmUgX21fcGFkZGQgX21t
X2FkZF9waTMyDQorI2RlZmluZSBfbV9wYWRkc2IgX21tX2FkZHNfcGk4DQorI2RlZmluZSBfbV9w
YWRkc3cgX21tX2FkZHNfcGkxNg0KKyNkZWZpbmUgX21fcGFkZHVzYiBfbW1fYWRkc19wdTgNCisj
ZGVmaW5lIF9tX3BhZGR1c3cgX21tX2FkZHNfcHUxNg0KKyNkZWZpbmUgX21fcHN1YmIgX21tX3N1
Yl9waTgNCisjZGVmaW5lIF9tX3BzdWJ3IF9tbV9zdWJfcGkxNg0KKyNkZWZpbmUgX21fcHN1YmQg
X21tX3N1Yl9waTMyDQorI2RlZmluZSBfbV9wc3Vic2IgX21tX3N1YnNfcGk4DQorI2RlZmluZSBf
bV9wc3Vic3cgX21tX3N1YnNfcGkxNg0KKyNkZWZpbmUgX21fcHN1YnVzYiBfbW1fc3Vic19wdTgN
CisjZGVmaW5lIF9tX3BzdWJ1c3cgX21tX3N1YnNfcHUxNg0KKyNkZWZpbmUgX21fcG1hZGR3ZCBf
bW1fbWFkZF9waTE2DQorI2RlZmluZSBfbV9wbXVsaHcgX21tX211bGhpX3BpMTYNCisjZGVmaW5l
IF9tX3BtdWxsdyBfbW1fbXVsbG9fcGkxNg0KKyNkZWZpbmUgX21fcHNsbHcgX21tX3NsbF9waTE2
DQorI2RlZmluZSBfbV9wc2xsd2kgX21tX3NsbGlfcGkxNg0KKyNkZWZpbmUgX21fcHNsbGQgX21t
X3NsbF9waTMyDQorI2RlZmluZSBfbV9wc2xsZGkgX21tX3NsbGlfcGkzMg0KKyNkZWZpbmUgX21f
cHNsbHEgX21tX3NsbF9zaTY0DQorI2RlZmluZSBfbV9wc2xscWkgX21tX3NsbGlfc2k2NA0KKyNk
ZWZpbmUgX21fcHNyYXcgX21tX3NyYV9waTE2DQorI2RlZmluZSBfbV9wc3Jhd2kgX21tX3NyYWlf
cGkxNg0KKyNkZWZpbmUgX21fcHNyYWQgX21tX3NyYV9waTMyDQorI2RlZmluZSBfbV9wc3JhZGkg
X21tX3NyYWlfcGkzMg0KKyNkZWZpbmUgX21fcHNybHcgX21tX3NybF9waTE2DQorI2RlZmluZSBf
bV9wc3Jsd2kgX21tX3NybGlfcGkxNg0KKyNkZWZpbmUgX21fcHNybGQgX21tX3NybF9waTMyDQor
I2RlZmluZSBfbV9wc3JsZGkgX21tX3NybGlfcGkzMg0KKyNkZWZpbmUgX21fcHNybHEgX21tX3Ny
bF9zaTY0DQorI2RlZmluZSBfbV9wc3JscWkgX21tX3NybGlfc2k2NA0KKyNkZWZpbmUgX21fcGFu
ZCBfbW1fYW5kX3NpNjQNCisjZGVmaW5lIF9tX3BhbmRuIF9tbV9hbmRub3Rfc2k2NA0KKyNkZWZp
bmUgX21fcG9yIF9tbV9vcl9zaTY0DQorI2RlZmluZSBfbV9weG9yIF9tbV94b3Jfc2k2NA0KKyNk
ZWZpbmUgX21fcGNtcGVxYiBfbW1fY21wZXFfcGk4DQorI2RlZmluZSBfbV9wY21wZXF3IF9tbV9j
bXBlcV9waTE2DQorI2RlZmluZSBfbV9wY21wZXFkIF9tbV9jbXBlcV9waTMyDQorI2RlZmluZSBf
bV9wY21wZ3RiIF9tbV9jbXBndF9waTgNCisjZGVmaW5lIF9tX3BjbXBndHcgX21tX2NtcGd0X3Bp
MTYNCisjZGVmaW5lIF9tX3BjbXBndGQgX21tX2NtcGd0X3BpMzINCisNCisjZW5kaWYgLyogX19N
TUlOVFJJTl9IICovDQorDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ubW1pbnRyaW4uaCBiL2luY2x1
ZGUvbm1taW50cmluLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4zNDhm
YjhjDQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL25tbWludHJpbi5oDQpAQCAtMCwwICsx
LDMwIEBADQorLyo9PT0tLS0tIG5tbWludHJpbi5oIC0gU1NFNCBpbnRyaW5zaWNzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAqDQorICogUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQ0KKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0K
KyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwNCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCisgKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg
YmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KKyAqIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sDQorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KKyAqIFRIRSBTT0ZUV0FS
RS4NCisgKg0KKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKi8NCisNCisjaWZuZGVmIF9fTk1N
SU5UUklOX0gNCisjZGVmaW5lIF9fTk1NSU5UUklOX0gNCisNCisvKiBUbyBtYXRjaCBleHBlY3Rh
dGlvbnMgb2YgZ2NjIHdlIHB1dCB0aGUgc3NlNC4yIGRlZmluaXRpb25zIGludG8gc21taW50cmlu
LmgsDQorICAganVzdCBpbmNsdWRlIGl0IG5vdyB0aGVuLiAgKi8NCisjaW5jbHVkZSA8c21taW50
cmluLmg+DQorI2VuZGlmIC8qIF9fTk1NSU5UUklOX0ggKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRl
L3BtbWludHJpbi5oIGIvaW5jbHVkZS9wbW1pbnRyaW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN
CmluZGV4IDAwMDAwMDAuLjI0YjdkNjgNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUvcG1t
aW50cmluLmgNCkBAIC0wLDAgKzEsMzIxIEBADQorLyo9PT0tLS0tIHBtbWludHJpbi5oIC0gU1NF
MyBpbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAq
DQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu
eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQorICog
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCisgKiBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMNCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FS
RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS
RVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQorICog
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUg0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O
VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQorICogT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTg0KKyAqIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisg
Ki8NCisNCisjaWZuZGVmIF9fUE1NSU5UUklOX0gNCisjZGVmaW5lIF9fUE1NSU5UUklOX0gNCisN
CisjaW5jbHVkZSA8ZW1taW50cmluLmg+DQorDQorLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJp
YnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KKyNpZmRlZiBfX0dOVUNf
Xw0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIFwNCisgIF9fYXR0cmlidXRlX18oKF9fZ251
X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNlbHNlDQor
I2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgXA0KKyAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf
aW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UzIiksIF9fbWluX3ZlY3Rvcl93
aWR0aF9fKDEyOCkpKQ0KKyNlbmRpZg0KKw0KKy8vLyBMb2FkcyBkYXRhIGZyb20gYW4gdW5hbGln
bmVkIG1lbW9yeSBsb2NhdGlvbiB0byBlbGVtZW50cyBpbiBhIDEyOC1iaXQNCisvLy8gICAgdmVj
dG9yLg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgYWRkcmVzcyBvZiB0aGUgZGF0YSBpcyBub3QgMTYt
Ynl0ZSBhbGlnbmVkLCB0aGUgaW5zdHJ1Y3Rpb24gbWF5DQorLy8vICAgIHJlYWQgdHdvIGFkamFj
ZW50IGFsaWduZWQgYmxvY2tzIG9mIG1lbW9yeSB0byByZXRyaWV2ZSB0aGUgcmVxdWVzdGVkDQor
Ly8vICAgIGRhdGEuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTEREUVUgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8g
YSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgaW50ZWdlciB2YWx1ZXMuDQorLy8v
IFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3IgY29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2xkZHF1
X3NpMTI4KF9fbTEyOGkgY29uc3QgKl9fcCkNCit7DQorICByZXR1cm4gKF9fbTEyOGkpX19idWls
dGluX2lhMzJfbGRkcXUoKGNoYXIgY29uc3QgKilfX3ApOw0KK30NCisNCisvLy8gQWRkcyB0aGUg
ZXZlbi1pbmRleGVkIHZhbHVlcyBhbmQgc3VidHJhY3RzIHRoZSBvZGQtaW5kZXhlZCB2YWx1ZXMg
b2YNCisvLy8gICAgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZBRERTVUJQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHJpZ2h0
IHNvdXJjZSBvcGVyYW5kLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGFsdGVybmF0aW5nIHN1bXMgYW5kDQorLy8vICAgIGRpZmZl
cmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9hZGRzdWJfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7
DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfYWRkc3VicHMoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19iKTsNCit9DQorDQorLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBv
ZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3bw0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQg
eCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBTIDwvYz4gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
Ky8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0
aGUgbG93ZXIgYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW1zIG9m
IHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUNCisvLy8gICAg
ZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzdW1zIG9mDQorLy8vICAgIGJvdGggb3BlcmFu
ZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9o
YWRkX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9p
YTMyX2hhZGRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gSG9yaXpv
bnRhbGx5IHN1YnRyYWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBp
biB0d28NCisvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkhTVUJQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250
YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2Vy
DQorLy8vICAgIGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gICAgVGhlIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0
d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyDQorLy8vICAgIGJpdHMgb2Yg
dGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwNCisvLy8gICAgZGlmZmVyZW5jZXMgb2Yg
Ym90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2hzdWJfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4g
X19idWlsdGluX2lhMzJfaHN1YnBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0K
Ky8vLyBNb3ZlcyBhbmQgZHVwbGljYXRlcyBvZGQtaW5kZXhlZCB2YWx1ZXMgZnJvbSBhIDEyOC1i
aXQgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggZmxvYXRdIHRvIGZsb2F0IHZhbHVlcyBzdG9yZWQg
aW4gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZTSERVUCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFxu
DQorLy8vICAgIEJpdHMgWzEyNzo5Nl0gb2YgdGhlIHNvdXJjZSBhcmUgd3JpdHRlbiB0byBiaXRz
IFsxMjc6OTZdIGFuZCBbOTU6NjRdIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4gXG4NCisv
Ly8gICAgQml0cyBbNjM6MzJdIG9mIHRoZSBzb3VyY2UgYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6
MzJdIGFuZCBbMzE6MF0gb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1vdmVkIGFu
ZCBkdXBsaWNhdGVkDQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21vdmVoZHVwX3BzKF9fbTEyOCBfX2EpDQorew0KKyNp
ZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNoZHVw
ICgoX192NHNmKV9fYSk7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3Rv
cigoX192NHNmKV9fYSwgKF9fdjRzZilfX2EsIDEsIDEsIDMsIDMpOw0KKyNlbmRpZg0KK30NCisN
CisvLy8gRHVwbGljYXRlcyBldmVuLWluZGV4ZWQgdmFsdWVzIGZyb20gYSAxMjgtYml0IHZlY3Rv
ciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XSB0byBmbG9hdCB2YWx1ZXMgc3RvcmVkIGluIGEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWTU9WU0xEVVAgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIFxuDQorLy8vICAgIEJpdHMgWzk1
OjY0XSBvZiB0aGUgc291cmNlIGFyZSB3cml0dGVuIHRvIGJpdHMgWzEyNzo5Nl0gYW5kIFs5NTo2
NF0gb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFszMTowXSBv
ZiB0aGUgc291cmNlIGFyZSB3cml0dGVuIHRvIGJpdHMgWzYzOjMyXSBhbmQgWzMxOjBdIG9mIHRo
ZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCBhbmQgZHVwbGljYXRlZA0KKy8vLyAg
ICB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV9tb3ZlbGR1cF9wcyhfX20xMjggX19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJl
dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZzbGR1cCAoKF9fdjRzZilfX2EpOw0KKyNl
bHNlDQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0
c2YpX19hLCAwLCAwLCAyLCAyKTsNCisjZW5kaWYNCit9DQorDQorLy8vIEFkZHMgdGhlIGV2ZW4t
aW5kZXhlZCB2YWx1ZXMgYW5kIHN1YnRyYWN0cyB0aGUgb2RkLWluZGV4ZWQgdmFsdWVzIG9mDQor
Ly8vICAgIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkFERFNVQlBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29u
dGFpbmluZyB0aGUgbGVmdCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByaWdodCBz
b3VyY2Ugb3BlcmFuZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRv
dWJsZV0gY29udGFpbmluZyB0aGUgYWx0ZXJuYXRpbmcgc3Vtcw0KKy8vLyAgICBhbmQgZGlmZmVy
ZW5jZXMgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9hZGRzdWJfcGQoX19tMTI4ZCBfX2EsIF9fbTEyOGQgX19iKQ0K
K3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9hZGRzdWJwZCgoX192MmRmKV9fYSwgKF9fdjJk
ZilfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IGFkZHMgdGhlIHBhaXJzIG9mIHZhbHVl
cyBjb250YWluZWQgaW4gdHdvIDEyOC1iaXQNCisvLy8gICAgdmVjdG9ycyBvZiBbMiB4IGRvdWJs
ZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSEFERFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGRvdWJsZV0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8g
ICAgVGhlIGhvcml6b250YWwgc3VtIG9mIHRoZSB2YWx1ZXMgaXMgc3RvcmVkIGluIHRoZSBsb3dl
ciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgaG9yaXpvbnRhbCBzdW0gb2YgdGhlIHZh
bHVlcyBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0
aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250
YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YNCisvLy8gICAgYm90aCBvcGVyYW5kcy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9oYWRkX3Bk
KF9fbTEyOGQgX19hLCBfX20xMjhkIF9fYikNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJf
aGFkZHBkKChfX3YyZGYpX19hLCAoX192MmRmKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFs
bHkgc3VidHJhY3RzIHRoZSBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIHR3byAxMjgtYml0
DQorLy8vICAgIHZlY3RvcnMgb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkhTVUJQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVu
Y2Ugb2YgdGhlIHZhbHVlcyBpcyBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCisvLy8gICAg
dGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
DQorLy8vICAgIFRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2Ugb2YgdGhlIHZhbHVlcyBpcyBzdG9y
ZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSBo
b3Jpem9udGFsDQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1faHN1Yl9wZChfX20x
MjhkIF9fYSwgX19tMTI4ZCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2hzdWJw
ZCgoX192MmRmKV9fYSwgKF9fdjJkZilfX2IpOw0KK30NCisNCisvLy8gTW92ZXMgYW5kIGR1cGxp
Y2F0ZXMgb25lIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gZG91YmxlLXByZWNpc2lvbg0KKy8v
LyAgICB2YWx1ZXMgc3RvcmVkIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQor
Ly8vIF9fbTEyOGQgX21tX2xvYWRkdXBfcGQoZG91YmxlIGNvbnN0ICpkcCk7DQorLy8vIFxlbmRj
b2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1P
VkREVVAgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGRwDQorLy8vICAgIEEg
cG9pbnRlciB0byBhIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgdG8gYmUgbW92ZWQgYW5kIGR1cGxp
Y2F0ZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNv
bnRhaW5pbmcgdGhlIG1vdmVkIGFuZA0KKy8vLyAgICBkdXBsaWNhdGVkIHZhbHVlcy4NCisjZGVm
aW5lICAgICAgICBfbW1fbG9hZGR1cF9wZChkcCkgICAgICAgIF9tbV9sb2FkMV9wZChkcCkNCisN
CisvLy8gTW92ZXMgYW5kIGR1cGxpY2F0ZXMgdGhlIGRvdWJsZS1wcmVjaXNpb24gdmFsdWUgaW4g
dGhlIGxvd2VyIGJpdHMgb2YNCisvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJs
ZV0gdG8gZG91YmxlLXByZWNpc2lvbiB2YWx1ZXMgc3RvcmVkIGluIGENCisvLy8gICAgMTI4LWJp
dCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
Vk1PVkREVVAgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gQml0cyBbNjM6MF0gYXJlIHdyaXR0
ZW4gdG8gYml0cw0KKy8vLyAgICBbMTI3OjY0XSBhbmQgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlv
bi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFp
bmluZyB0aGUgbW92ZWQgYW5kDQorLy8vICAgIGR1cGxpY2F0ZWQgdmFsdWVzLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOGQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21vdmVkdXBfcGQoX19t
MTI4ZCBfX2EpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIF9tbV9zaHVmZmxlX3Bk
IChfX2EsIF9fYSwgX01NX1NIVUZGTEUyICgwLDApKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVp
bHRpbl9zaHVmZmxldmVjdG9yKChfX3YyZGYpX19hLCAoX192MmRmKV9fYSwgMCwgMCk7DQorI2Vu
ZGlmDQorfQ0KKw0KKy8vLyBFc3RhYmxpc2hlcyBhIGxpbmVhciBhZGRyZXNzIG1lbW9yeSByYW5n
ZSB0byBiZSBtb25pdG9yZWQgYW5kIHB1dHMNCisvLy8gICAgdGhlIHByb2Nlc3NvciBpbiB0aGUg
bW9uaXRvciBldmVudCBwZW5kaW5nIHN0YXRlLiBEYXRhIHN0b3JlZCBpbiB0aGUNCisvLy8gICAg
bW9uaXRvcmVkIGFkZHJlc3MgcmFuZ2UgY2F1c2VzIHRoZSBwcm9jZXNzb3IgdG8gZXhpdCB0aGUg
cGVuZGluZyBzdGF0ZS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IE1PTklUT1IgPC9j
PiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBUaGUgbWVtb3J5
IHJhbmdlIHRvIGJlIG1vbml0b3JlZC4gVGhlIHNpemUgb2YgdGhlIHJhbmdlIGlzIGRldGVybWlu
ZWQgYnkNCisvLy8gICAgQ1BVSUQgZnVuY3Rpb24gMDAwMF8wMDA1aC4NCisvLy8gXHBhcmFtIF9f
ZXh0ZW5zaW9ucw0KKy8vLyAgICBPcHRpb25hbCBleHRlbnNpb25zIGZvciB0aGUgbW9uaXRvcmlu
ZyBzdGF0ZS4NCisvLy8gXHBhcmFtIF9faGludHMNCisvLy8gICAgT3B0aW9uYWwgaGludHMgZm9y
IHRoZSBtb25pdG9yaW5nIHN0YXRlLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX21vbml0b3Iodm9pZCBjb25zdCAqX19wLCB1bnNpZ25lZCBfX2V4dGVu
c2lvbnMsIHVuc2lnbmVkIF9faGludHMpDQorew0KKyAgX19idWlsdGluX2lhMzJfbW9uaXRvcigo
dm9pZCAqKV9fcCwgX19leHRlbnNpb25zLCBfX2hpbnRzKTsNCit9DQorDQorLy8vIFVzZWQgd2l0
aCB0aGUgTU9OSVRPUiBpbnN0cnVjdGlvbiB0byB3YWl0IHdoaWxlIHRoZSBwcm9jZXNzb3IgaXMg
aW4NCisvLy8gICAgdGhlIG1vbml0b3IgZXZlbnQgcGVuZGluZyBzdGF0ZS4gRGF0YSBzdG9yZWQg
aW4gdGhlIG1vbml0b3JlZCBhZGRyZXNzDQorLy8vICAgIHJhbmdlIGNhdXNlcyB0aGUgcHJvY2Vz
c29yIHRvIGV4aXQgdGhlIHBlbmRpbmcgc3RhdGUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBNV0FJVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19leHRlbnNp
b25zDQorLy8vICAgIE9wdGlvbmFsIGV4dGVuc2lvbnMgZm9yIHRoZSBtb25pdG9yaW5nIHN0YXRl
LCB3aGljaCBtYXkgdmFyeSBieQ0KKy8vLyAgICBwcm9jZXNzb3IuDQorLy8vIFxwYXJhbSBfX2hp
bnRzDQorLy8vICAgIE9wdGlvbmFsIGhpbnRzIGZvciB0aGUgbW9uaXRvcmluZyBzdGF0ZSwgd2hp
Y2ggbWF5IHZhcnkgYnkgcHJvY2Vzc29yLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX213YWl0KHVuc2lnbmVkIF9fZXh0ZW5zaW9ucywgdW5zaWduZWQg
X19oaW50cykNCit7DQorICBfX2J1aWx0aW5faWEzMl9td2FpdChfX2V4dGVuc2lvbnMsIF9faGlu
dHMpOw0KK30NCisNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQorDQorI2VuZGlmIC8qIF9f
UE1NSU5UUklOX0ggKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRlL3BvcGNudGludHJpbi5oIGIvaW5j
bHVkZS9wb3BjbnRpbnRyaW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAu
LmJiYTA1NzMNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUvcG9wY250aW50cmluLmgNCkBA
IC0wLDAgKzEsMTAyIEBADQorLyo9PT0tLS0tIHBvcGNudGludHJpbi5oIC0gUE9QQ05UIGludHJp
bnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAqDQorICogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQorICogaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl
LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCisgKiBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAq
DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICog
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQorICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
Ug0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KKyAqIFRI
RSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKi8NCisNCisjaWZu
ZGVmIF9fUE9QQ05USU5UUklOX0gNCisjZGVmaW5lIF9fUE9QQ05USU5UUklOX0gNCisNCisvKiBE
ZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZp
bGUuICovDQorI2lmZGVmIF9fR05VQ19fDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19h
dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp
YWxfXykpDQorI2Vsc2UNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9f
KChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInBvcGNudCIpKSkN
CisjZW5kaWYNCisNCisvLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgc291cmNl
IG9wZXJhbmQgaGF2aW5nIGEgdmFsdWUgb2YgMS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFBPUENOVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19BDQorLy8v
ICAgIEFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEg
MzItYml0IGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGJpdHMgd2l0aCB2YWx1ZSAx
IGluIHRoZQ0KKy8vLyAgICBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3BvcGNudF91MzIodW5zaWduZWQgaW50IF9fQSkNCit7
DQorICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50KF9fQSk7DQorfQ0KKw0KKy8vLyBDb3VudHMg
dGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBoYXZpbmcgYSB2YWx1ZSBv
ZiAxLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE9QQ05UIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX0ENCisvLy8gICAgQSBzaWduZWQgMzItYml0IGludGVn
ZXIgb3BlcmFuZC4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRo
ZSBudW1iZXIgb2YgYml0cyB3aXRoIHZhbHVlIDEgaW4gdGhlDQorLy8vICAgIHNvdXJjZSBvcGVy
YW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfcG9wY250
MzIoaW50IF9fQSkNCit7DQorICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50KF9fQSk7DQorfQ0K
Kw0KKyNpZmRlZiBfX3g4Nl82NF9fDQorLy8vIENvdW50cyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4g
dGhlIHNvdXJjZSBvcGVyYW5kIGhhdmluZyBhIHZhbHVlIG9mIDEuDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9u
ZHMgdG8gdGhlIDxjPiBQT1BDTlQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fQQ0KKy8vLyAgICBBbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBvcGVyYW5kLg0KKy8vLyBc
cmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBiaXRzIHdp
dGggdmFsdWUgMSBpbiB0aGUNCisvLy8gICAgc291cmNlIG9wZXJhbmQuDQorc3RhdGljIF9faW5s
aW5lX18gbG9uZyBsb25nIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9wb3BjbnRfdTY0KHVuc2ln
bmVkIGxvbmcgbG9uZyBfX0EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudGxsKF9f
QSk7DQorfQ0KKw0KKy8vLyBDb3VudHMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBzb3VyY2Ug
b3BlcmFuZCBoYXZpbmcgYSB2YWx1ZSBvZiAxLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUE9QQ05UIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX0ENCisvLy8g
ICAgQSBzaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZC4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgYml0cyB3aXRoIHZhbHVlIDEgaW4g
dGhlDQorLy8vICAgIHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIGxvbmcgbG9u
ZyBfX0RFRkFVTFRfRk5fQVRUUlMNCitfcG9wY250NjQobG9uZyBsb25nIF9fQSkNCit7DQorICBy
ZXR1cm4gX19idWlsdGluX3BvcGNvdW50bGwoX19BKTsNCit9DQorI2VuZGlmIC8qIF9feDg2XzY0
X18gKi8NCisNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQorDQorI2VuZGlmIC8qIF9fUE9Q
Q05USU5UUklOX0ggKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NtbWludHJpbi5oIGIvaW5jbHVk
ZS9zbW1pbnRyaW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjRmMWQ2
MzcNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUvc21taW50cmluLmgNCkBAIC0wLDAgKzEs
MjUwNCBAQA0KKy8qPT09LS0tLSBzbW1pbnRyaW4uaCAtIFNTRTQgaW50cmluc2ljcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
IGNvcHkNCisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbA0KKyAqIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMN
CisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQorICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluDQorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLA0KKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCisgKiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS
V0lTRSwgQVJJU0lORyBGUk9NLA0KKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4NCisgKiBUSEUgU09GVFdB
UkUuDQorICoNCisgKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09DQorICovDQorDQorI2lmbmRlZiBfX1NN
TUlOVFJJTl9IDQorI2RlZmluZSBfX1NNTUlOVFJJTl9IDQorDQorI2luY2x1ZGUgPHRtbWludHJp
bi5oPg0KKw0KKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rp
b25zIGluIHRoaXMgZmlsZS4gKi8NCisjaWZkZWYgX19HTlVDX18NCisjZGVmaW5lIF9fREVGQVVM
VF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5l
X18sIF9fYXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJT
IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRf
Xygic3NlNC4xIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KKyNlbmRpZg0KKw0KKy8q
IFNTRTQgUm91bmRpbmcgbWFjcm9zLiAqLw0KKyNkZWZpbmUgX01NX0ZST1VORF9UT19ORUFSRVNU
X0lOVCAgICAweDAwDQorI2RlZmluZSBfTU1fRlJPVU5EX1RPX05FR19JTkYgICAgICAgIDB4MDEN
CisjZGVmaW5lIF9NTV9GUk9VTkRfVE9fUE9TX0lORiAgICAgICAgMHgwMg0KKyNkZWZpbmUgX01N
X0ZST1VORF9UT19aRVJPICAgICAgICAgICAweDAzDQorI2RlZmluZSBfTU1fRlJPVU5EX0NVUl9E
SVJFQ1RJT04gICAgIDB4MDQNCisNCisjZGVmaW5lIF9NTV9GUk9VTkRfUkFJU0VfRVhDICAgICAg
ICAgMHgwMA0KKyNkZWZpbmUgX01NX0ZST1VORF9OT19FWEMgICAgICAgICAgICAweDA4DQorDQor
I2RlZmluZSBfTU1fRlJPVU5EX05JTlQgICAgICAoX01NX0ZST1VORF9SQUlTRV9FWEMgfCBfTU1f
RlJPVU5EX1RPX05FQVJFU1RfSU5UKQ0KKyNkZWZpbmUgX01NX0ZST1VORF9GTE9PUiAgICAgKF9N
TV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9UT19ORUdfSU5GKQ0KKyNkZWZpbmUgX01N
X0ZST1VORF9DRUlMICAgICAgKF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9UT19Q
T1NfSU5GKQ0KKyNkZWZpbmUgX01NX0ZST1VORF9UUlVOQyAgICAgKF9NTV9GUk9VTkRfUkFJU0Vf
RVhDIHwgX01NX0ZST1VORF9UT19aRVJPKQ0KKyNkZWZpbmUgX01NX0ZST1VORF9SSU5UICAgICAg
KF9NTV9GUk9VTkRfUkFJU0VfRVhDIHwgX01NX0ZST1VORF9DVVJfRElSRUNUSU9OKQ0KKyNkZWZp
bmUgX01NX0ZST1VORF9ORUFSQllJTlQgKF9NTV9GUk9VTkRfTk9fRVhDIHwgX01NX0ZST1VORF9D
VVJfRElSRUNUSU9OKQ0KKw0KKy8vLyBSb3VuZHMgdXAgZWFjaCBlbGVtZW50IG9mIHRoZSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB0byBhbg0KKy8vLyAgICBpbnRlZ2VyIGFuZCByZXR1
cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQorLy8vICAgIFs0
IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fY2VpbF9wcyhfX20xMjggWCk7DQorLy8vIFxlbmRj
b2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJP
VU5EUFMgLyBST1VORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdmFsdWVzIHRvIGJlIHJvdW5k
ZWQgdXAuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgcm91bmRlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1fY2VpbF9wcyhYKSAgICAg
ICBfbW1fcm91bmRfcHMoKFgpLCBfTU1fRlJPVU5EX0NFSUwpDQorDQorLy8vIFJvdW5kcyB1cCBl
YWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSB0byBhbg0K
Ky8vLyAgICBpbnRlZ2VyIGFuZCByZXR1cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBpbiBhIDEyOC1i
aXQgdmVjdG9yIG9mDQorLy8vICAgIFsyIHggZG91YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhkIF9tbV9jZWls
X3BkKF9fbTEyOGQgWCk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EUEQgLyBST1VORFBEIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIg
eCBkb3VibGVdIHZhbHVlcyB0byBiZSByb3VuZGVkIHVwLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRoZSByb3VuZGVkIHZhbHVlcy4N
CisjZGVmaW5lIF9tbV9jZWlsX3BkKFgpICAgICAgIF9tbV9yb3VuZF9wZCgoWCksIF9NTV9GUk9V
TkRfQ0VJTCkNCisNCisvLy8gQ29waWVzIHRocmVlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSBmaXJz
dCAxMjgtYml0IHZlY3RvciBvcGVyYW5kIHRvDQorLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHRo
cmVlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCisvLy8g
ICAgWzQgeCBmbG9hdF0uIFJvdW5kcyB1cCB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIHNlY29u
ZCAxMjgtYml0IHZlY3Rvcg0KKy8vLyAgICBvcGVyYW5kIHRvIGFuIGludGVnZXIgYW5kIGNvcGll
cyBpdCB0byB0aGUgbG93ZXN0IGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQNCisvLy8gICAgcmVzdWx0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjggX21tX2NlaWxfc3MoX19tMTI4IFgs
IF9fbTEyOCBZKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRTUyAvIFJPVU5EU1MgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4gVGhlIHZhbHVlcyBzdG9yZWQgaW4gYml0cyBbMTI3OjMyXSBhcmUNCisvLy8gICAgY29w
aWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFt
IFkNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHZhbHVlIHN0
b3JlZCBpbiBiaXRzIFszMTowXSBpcw0KKy8vLyAgICByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0
IGludGVnZXIgYW5kIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzDQorLy8vICAgIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCByb3VuZGVkDQorLy8vICAgIHZhbHVlcy4NCisj
ZGVmaW5lIF9tbV9jZWlsX3NzKFgsIFkpICAgIF9tbV9yb3VuZF9zcygoWCksIChZKSwgX01NX0ZS
T1VORF9DRUlMKQ0KKw0KKy8vLyBDb3BpZXMgdGhlIHVwcGVyIGVsZW1lbnQgb2YgdGhlIGZpcnN0
IDEyOC1iaXQgdmVjdG9yIG9wZXJhbmQgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdXBw
ZXIgZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4N
CisvLy8gICAgUm91bmRzIHVwIHRoZSBsb3dlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJp
dCB2ZWN0b3Igb3BlcmFuZCB0byBhbg0KKy8vLyAgICBpbnRlZ2VyIGFuZCBjb3BpZXMgaXQgdG8g
dGhlIGxvd2VyIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3Rvcg0KKy8vLyAgICBv
ZiBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fY2VpbF9zZChfX20xMjhkIFgsIF9fbTEy
OGQgWSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlJPVU5EU0QgLyBST1VORFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
LiBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdHMgWzEyNzo2NF0gaXMNCisvLy8gICAgY29waWVkIHRv
IHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIFkNCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQg
aW4gYml0cyBbNjM6MF0gaXMNCisvLy8gICAgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCBpbnRl
Z2VyIGFuZCBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cw0KKy8vLyAgICBvZiB0aGUg
cmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBj
b250YWluaW5nIHRoZSBjb3BpZWQgYW5kIHJvdW5kZWQNCisvLy8gICAgdmFsdWVzLg0KKyNkZWZp
bmUgX21tX2NlaWxfc2QoWCwgWSkgICAgX21tX3JvdW5kX3NkKChYKSwgKFkpLCBfTU1fRlJPVU5E
X0NFSUwpDQorDQorLy8vIFJvdW5kcyBkb3duIGVhY2ggZWxlbWVudCBvZiB0aGUgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4NCisvLy8gICAgYW4gaW50ZWdlciBhbmQgcmV0dXJu
cyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4
IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBcY29kZQ0KKy8vLyBfX20xMjggX21tX2Zsb29yX3BzKF9fbTEyOCBYKTsNCisvLy8gXGVuZGNv
ZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9V
TkRQUyAvIFJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB2YWx1ZXMgdG8gYmUgcm91bmRl
ZCBkb3duLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNv
bnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX2Zsb29yX3BzKFgpICAg
ICAgX21tX3JvdW5kX3BzKChYKSwgX01NX0ZST1VORF9GTE9PUikNCisNCisvLy8gUm91bmRzIGRv
d24gZWFjaCBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8g
YW4NCisvLy8gICAgaW50ZWdlciBhbmQgcmV0dXJucyB0aGUgcm91bmRlZCB2YWx1ZXMgaW4gYSAx
MjgtYml0IHZlY3RvciBvZg0KKy8vLyAgICBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFk
ZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1f
Zmxvb3JfcGQoX19tMTI4ZCBYKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQRCAvIFJPVU5EUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBk
b3VibGVdIGNvbnRhaW5pbmcgdGhlIHJvdW5kZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX2Zsb29y
X3BkKFgpICAgICAgX21tX3JvdW5kX3BkKChYKSwgX01NX0ZST1VORF9GTE9PUikNCisNCisvLy8g
Q29waWVzIHRocmVlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSBmaXJzdCAxMjgtYml0IHZlY3RvciBv
cGVyYW5kIHRvDQorLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIHRocmVlIHVwcGVyIGVsZW1lbnRz
IG9mIHRoZSAxMjgtYml0IHJlc3VsdCB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uIFJv
dW5kcyBkb3duIHRoZSBsb3dlc3QgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQgdmVjdG9y
DQorLy8vICAgIG9wZXJhbmQgdG8gYW4gaW50ZWdlciBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dl
c3QgZWxlbWVudCBvZiB0aGUgMTI4LWJpdA0KKy8vLyAgICByZXN1bHQgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fZmxvb3Jfc3MoX19tMTI4IFgsIF9fbTEyOCBZKTsNCisv
Ly8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWUk9VTkRTUyAvIFJPVU5EU1MgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHZhbHVl
cyBzdG9yZWQgaW4gYml0cyBbMTI3OjMyXSBhcmUNCisvLy8gICAgY29waWVkIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIFkNCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXRzIFsz
MTowXSBpcw0KKy8vLyAgICByb3VuZGVkIGRvd24gdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBhbmQg
Y29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMNCisvLy8gICAgb2YgdGhlIHJlc3VsdC4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBjb3BpZWQgYW5kIHJvdW5kZWQNCisvLy8gICAgdmFsdWVzLg0KKyNkZWZpbmUgX21tX2Zs
b29yX3NzKFgsIFkpICAgX21tX3JvdW5kX3NzKChYKSwgKFkpLCBfTU1fRlJPVU5EX0ZMT09SKQ0K
Kw0KKy8vLyBDb3BpZXMgdGhlIHVwcGVyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDEyOC1iaXQgdmVj
dG9yIG9wZXJhbmQgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdXBwZXIgZWxlbWVudCBv
ZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gICAgUm91
bmRzIGRvd24gdGhlIGxvd2VyIGVsZW1lbnQgb2YgdGhlIHNlY29uZCAxMjgtYml0IHZlY3RvciBv
cGVyYW5kIHRvIGFuDQorLy8vICAgIGludGVnZXIgYW5kIGNvcGllcyBpdCB0byB0aGUgbG93ZXIg
ZWxlbWVudCBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yDQorLy8vICAgIG9mIFsyIHggZG91
YmxlXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBc
Y29kZQ0KKy8vLyBfX20xMjhkIF9tbV9mbG9vcl9zZChfX20xMjhkIFgsIF9fbTEyOGQgWSk7DQor
Ly8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlJPVU5EU0QgLyBST1VORFNEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLiBUaGUgdmFs
dWUgc3RvcmVkIGluIGJpdHMgWzEyNzo2NF0gaXMNCisvLy8gICAgY29waWVkIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIFkNCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBb
NjM6MF0gaXMNCisvLy8gICAgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYW5k
IGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzDQorLy8vICAgIG9mIHRoZSByZXN1bHQu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5p
bmcgdGhlIGNvcGllZCBhbmQgcm91bmRlZA0KKy8vLyAgICB2YWx1ZXMuDQorI2RlZmluZSBfbW1f
Zmxvb3Jfc2QoWCwgWSkgICBfbW1fcm91bmRfc2QoKFgpLCAoWSksIF9NTV9GUk9VTkRfRkxPT1Ip
DQorDQorLy8vIFJvdW5kcyBlYWNoIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIHRvIGFuDQorLy8vICAgIGludGVnZXIgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBy
b3VuZGluZyBjb250cm9sIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kDQorLy8vICAgIGFyZ3VtZW50
IGFuZCByZXR1cm5zIHRoZSByb3VuZGVkIHZhbHVlcyBpbiBhIDEyOC1iaXQgdmVjdG9yIG9mDQor
Ly8vICAgIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fcm91bmRfcHMoX19tMTI4IFgsIGNv
bnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRQUyAvIFJPVU5EUFMgPC9jPiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW50ZWdlciB2YWx1ZSB0aGF0IHNwZWNp
ZmllcyB0aGUgcm91bmRpbmcgb3BlcmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs3OjRdIGFyZSBy
ZXNlcnZlZC4gXG4NCisvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFs
dWU6IFxuDQorLy8vICAgICAgMDogQSBub3JtYWwgUEUgZXhjZXB0aW9uIGlzIHVzZWQgXG4NCisv
Ly8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQgXG4NCisvLy8gICAgQml0IFsy
XSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQorLy8vICAgICAgMDogVXNlIGJp
dHMgWzE6MF0gb2YgXGEgTSBcbg0KKy8vLyAgICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBz
ZXR0aW5nIFxuDQorLy8vICAgIEJpdHMgWzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJv
bCBkZWZpbml0aW9uOiBcbg0KKy8vLyAgICAgIDAwOiBOZWFyZXN0IFxuDQorLy8vICAgICAgMDE6
IERvd253YXJkICh0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkpIFxuDQorLy8vICAgICAgMTA6IFVw
d2FyZCAodG93YXJkIHBvc2l0aXZlIGluZmluaXR5KSBcbg0KKy8vLyAgICAgIDExOiBUcnVuY2F0
ZWQNCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSByb3VuZGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9yb3VuZF9wcyhYLCBNKSBcDQor
ICAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3JvdW5kcHMoKF9fdjRzZikoX19tMTI4KShYKSwgKE0p
KQ0KKw0KKy8vLyBDb3BpZXMgdGhyZWUgdXBwZXIgZWxlbWVudHMgb2YgdGhlIGZpcnN0IDEyOC1i
aXQgdmVjdG9yIG9wZXJhbmQgdG8NCisvLy8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdGhyZWUgdXBw
ZXIgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBvZg0KKy8vLyAgICBbNCB4
IGZsb2F0XS4gUm91bmRzIHRoZSBsb3dlc3QgZWxlbWVudCBvZiB0aGUgc2Vjb25kIDEyOC1iaXQg
dmVjdG9yDQorLy8vICAgIG9wZXJhbmQgdG8gYW4gaW50ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8g
dGhlIHJvdW5kaW5nIGNvbnRyb2wgc3BlY2lmaWVkDQorLy8vICAgIGJ5IHRoZSB0aGlyZCBhcmd1
bWVudCBhbmQgY29waWVzIGl0IHRvIHRoZSBsb3dlc3QgZWxlbWVudCBvZiB0aGUgMTI4LWJpdA0K
Ky8vLyAgICByZXN1bHQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fcm91
bmRfc3MoX19tMTI4IFgsIF9fbTEyOCBZLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJPVU5EU1Mg
LyBST1VORFNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZXMgc3RvcmVkIGluIGJp
dHMgWzEyNzozMl0gYXJlDQorLy8vICAgIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRz
IG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMzE6MF0gaXMNCisvLy8g
ICAgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHVzaW5nIHRoZSBzcGVjaWZpZWQgcm91
bmRpbmcgY29udHJvbCBhbmQNCisvLy8gICAgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJp
dHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW50ZWdlciB2YWx1
ZSB0aGF0IHNwZWNpZmllcyB0aGUgcm91bmRpbmcgb3BlcmF0aW9uLiBcbg0KKy8vLyAgICBCaXRz
IFs3OjRdIGFyZSByZXNlcnZlZC4gXG4NCisvLy8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBl
eGNlcHRpb24gdmFsdWU6IFxuDQorLy8vICAgICAgMDogQSBub3JtYWwgUEUgZXhjZXB0aW9uIGlz
IHVzZWQgXG4NCisvLy8gICAgICAxOiBUaGUgUEUgZmllbGQgaXMgbm90IHVwZGF0ZWQgXG4NCisv
Ly8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRpbmcgY29udHJvbCBzb3VyY2U6IFxuDQorLy8vICAg
ICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEgTSBcbg0KKy8vLyAgICAgIDE6IFVzZSB0aGUgY3Vy
cmVudCBNWENTUiBzZXR0aW5nIFxuDQorLy8vICAgIEJpdHMgWzE6MF0gY29udGFpbiB0aGUgcm91
bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBcbg0KKy8vLyAgICAgIDAwOiBOZWFyZXN0IFxuDQor
Ly8vICAgICAgMDE6IERvd253YXJkICh0b3dhcmQgbmVnYXRpdmUgaW5maW5pdHkpIFxuDQorLy8v
ICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBvc2l0aXZlIGluZmluaXR5KSBcbg0KKy8vLyAgICAg
IDExOiBUcnVuY2F0ZWQNCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBjb3BpZWQgYW5kIHJvdW5kZWQNCisvLy8gICAgdmFsdWVzLg0K
KyNkZWZpbmUgX21tX3JvdW5kX3NzKFgsIFksIE0pIFwNCisgIChfX20xMjgpX19idWlsdGluX2lh
MzJfcm91bmRzcygoX192NHNmKShfX20xMjgpKFgpLCBcDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShZKSwgKE0pKQ0KKw0KKy8vLyBSb3VuZHMgZWFj
aCBlbGVtZW50IG9mIHRoZSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gdG8gYW4NCisv
Ly8gICAgaW50ZWdlciB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJvdW5kaW5nIGNvbnRyb2wgc3Bl
Y2lmaWVkIGJ5IHRoZSBzZWNvbmQNCisvLy8gICAgYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIHJv
dW5kZWQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAgWzIgeCBkb3VibGVd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2Rl
DQorLy8vIF9fbTEyOGQgX21tX3JvdW5kX3BkKF9fbTEyOGQgWCwgY29uc3QgaW50IE0pOw0KKy8v
LyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZST1VORFBEIC8gUk9VTkRQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gWA0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gXHBh
cmFtIE0NCisvLy8gICAgQW4gaW50ZWdlciB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgcm91bmRp
bmcgb3BlcmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs3OjRdIGFyZSByZXNlcnZlZC4gXG4NCisv
Ly8gICAgQml0IFszXSBpcyBhIHByZWNpc2lvbiBleGNlcHRpb24gdmFsdWU6IFxuDQorLy8vICAg
ICAgMDogQSBub3JtYWwgUEUgZXhjZXB0aW9uIGlzIHVzZWQgXG4NCisvLy8gICAgICAxOiBUaGUg
UEUgZmllbGQgaXMgbm90IHVwZGF0ZWQgXG4NCisvLy8gICAgQml0IFsyXSBpcyB0aGUgcm91bmRp
bmcgY29udHJvbCBzb3VyY2U6IFxuDQorLy8vICAgICAgMDogVXNlIGJpdHMgWzE6MF0gb2YgXGEg
TSBcbg0KKy8vLyAgICAgIDE6IFVzZSB0aGUgY3VycmVudCBNWENTUiBzZXR0aW5nIFxuDQorLy8v
ICAgIEJpdHMgWzE6MF0gY29udGFpbiB0aGUgcm91bmRpbmcgY29udHJvbCBkZWZpbml0aW9uOiBc
bg0KKy8vLyAgICAgIDAwOiBOZWFyZXN0IFxuDQorLy8vICAgICAgMDE6IERvd253YXJkICh0b3dh
cmQgbmVnYXRpdmUgaW5maW5pdHkpIFxuDQorLy8vICAgICAgMTA6IFVwd2FyZCAodG93YXJkIHBv
c2l0aXZlIGluZmluaXR5KSBcbg0KKy8vLyAgICAgIDExOiBUcnVuY2F0ZWQNCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUgcm91bmRl
ZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1fcm91bmRfcGQoWCwgTSkgXA0KKyAgKF9fbTEyOGQpX19i
dWlsdGluX2lhMzJfcm91bmRwZCgoX192MmRmKShfX20xMjhkKShYKSwgKE0pKQ0KKw0KKy8vLyBD
b3BpZXMgdGhlIHVwcGVyIGVsZW1lbnQgb2YgdGhlIGZpcnN0IDEyOC1iaXQgdmVjdG9yIG9wZXJh
bmQgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgdXBwZXIgZWxlbWVudCBvZiB0aGUgMTI4
LWJpdCByZXN1bHQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8gICAgUm91bmRzIHRoZSBs
b3dlciBlbGVtZW50IG9mIHRoZSBzZWNvbmQgMTI4LWJpdCB2ZWN0b3Igb3BlcmFuZCB0byBhbg0K
Ky8vLyAgICBpbnRlZ2VyIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcm91bmRpbmcgY29udHJvbCBz
cGVjaWZpZWQgYnkgdGhlIHRoaXJkDQorLy8vICAgIGFyZ3VtZW50IGFuZCBjb3BpZXMgaXQgdG8g
dGhlIGxvd2VyIGVsZW1lbnQgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3Rvcg0KKy8vLyAgICBv
ZiBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fcm91bmRfc2QoX19tMTI4ZCBYLCBfX20x
MjhkIFksIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUk9VTkRTRCAvIFJPVU5EU0QgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0cyBbMTI3OjY0XSBpcw0KKy8v
LyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccGFyYW0gWQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4gVGhl
IHZhbHVlIHN0b3JlZCBpbiBiaXRzIFs2MzowXSBpcw0KKy8vLyAgICByb3VuZGVkIHRvIHRoZSBu
ZWFyZXN0IGludGVnZXIgdXNpbmcgdGhlIHNwZWNpZmllZCByb3VuZGluZyBjb250cm9sIGFuZA0K
Ky8vLyAgICBjb3BpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRo
ZSByb3VuZGluZyBvcGVyYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzc6NF0gYXJlIHJlc2VydmVk
LiBcbg0KKy8vLyAgICBCaXQgWzNdIGlzIGEgcHJlY2lzaW9uIGV4Y2VwdGlvbiB2YWx1ZTogXG4N
CisvLy8gICAgICAwOiBBIG5vcm1hbCBQRSBleGNlcHRpb24gaXMgdXNlZCBcbg0KKy8vLyAgICAg
IDE6IFRoZSBQRSBmaWVsZCBpcyBub3QgdXBkYXRlZCBcbg0KKy8vLyAgICBCaXQgWzJdIGlzIHRo
ZSByb3VuZGluZyBjb250cm9sIHNvdXJjZTogXG4NCisvLy8gICAgICAwOiBVc2UgYml0cyBbMTow
XSBvZiBcYSBNIFxuDQorLy8vICAgICAgMTogVXNlIHRoZSBjdXJyZW50IE1YQ1NSIHNldHRpbmcg
XG4NCisvLy8gICAgQml0cyBbMTowXSBjb250YWluIHRoZSByb3VuZGluZyBjb250cm9sIGRlZmlu
aXRpb246IFxuDQorLy8vICAgICAgMDA6IE5lYXJlc3QgXG4NCisvLy8gICAgICAwMTogRG93bndh
cmQgKHRvd2FyZCBuZWdhdGl2ZSBpbmZpbml0eSkgXG4NCisvLy8gICAgICAxMDogVXB3YXJkICh0
b3dhcmQgcG9zaXRpdmUgaW5maW5pdHkpIFxuDQorLy8vICAgICAgMTE6IFRydW5jYXRlZA0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXSBjb250YWluaW5nIHRo
ZSBjb3BpZWQgYW5kIHJvdW5kZWQNCisvLy8gICAgdmFsdWVzLg0KKyNkZWZpbmUgX21tX3JvdW5k
X3NkKFgsIFksIE0pIFwNCisgIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3JvdW5kc2QoKF9fdjJk
ZikoX19tMTI4ZCkoWCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9f
djJkZikoX19tMTI4ZCkoWSksIChNKSkNCisNCisvKiBTU0U0IFBhY2tlZCBCbGVuZGluZyBJbnRy
aW5zaWNzLiAgKi8NCisvLy8gUmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91Ymxl
XSB3aGVyZSB0aGUgdmFsdWVzIGFyZQ0KKy8vLyAgICBzZWxlY3RlZCBmcm9tIGVpdGhlciB0aGUg
Zmlyc3Qgb3Igc2Vjb25kIG9wZXJhbmQgYXMgc3BlY2lmaWVkIGJ5IHRoZQ0KKy8vLyAgICB0aGly
ZCBvcGVyYW5kLCB0aGUgY29udHJvbCBtYXNrLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGQgX21tX2JsZW5kX3BkKF9f
bTEyOGQgVjEsIF9fbTEyOGQgVjIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQkxFTkRQRCAvIEJM
RU5EUEQgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFYxDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gVjINCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAg
IEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIFsxOjBdIHNwZWNp
ZnlpbmcgaG93IHRoZQ0KKy8vLyAgICB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0
aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0byB0aGUNCisvLy8gICAgaW5kZXggb2Yg
YSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUgY29ycmVzcG9uZGluZyA2
NC1iaXQNCisvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYxIGlzIGNvcGllZCB0byB0aGUg
c2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KKy8vLyAgICBXaGVuIGEgbWFzayBiaXQgaXMg
MSwgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0IGVsZW1lbnQgaW4gb3BlcmFuZCBcYSBWMg0KKy8v
LyAgICBpcyBjb3BpZWQgdG8gdGhlIHNhbWUgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4NCisvLy8g
XHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0gY29udGFpbmluZyB0aGUg
Y29waWVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9ibGVuZF9wZChWMSwgVjIsIE0pIFwNCisgIChf
X20xMjhkKSBfX2J1aWx0aW5faWEzMl9ibGVuZHBkICgoX192MmRmKShfX20xMjhkKShWMSksIFwN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKShfX20xMjhkKShW
MiksIChpbnQpKE0pKQ0KKw0KKy8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUgc2VsZWN0ZWQNCisvLy8gICAgZnJvbSBlaXRoZXIg
dGhlIGZpcnN0IG9yIHNlY29uZCBvcGVyYW5kIGFzIHNwZWNpZmllZCBieSB0aGUgdGhpcmQNCisv
Ly8gICAgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjggX21tX2JsZW5kX3Bz
KF9fbTEyOCBWMSwgX19tMTI4IFYyLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkJMRU5EUFMgLyBC
TEVORFBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWMQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gVjINCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAg
QW4gaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgWzM6MF0gc3BlY2lm
eWluZyBob3cgdGhlDQorLy8vICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRp
b24gb2YgdGhlIG1hc2sgYml0IGNvcnJlc3BvbmRzIHRvIHRoZQ0KKy8vLyAgICBpbmRleCBvZiBh
IGNvcGllZCB2YWx1ZS4gV2hlbiBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDMy
LWJpdA0KKy8vLyAgICBlbGVtZW50IGluIG9wZXJhbmQgXGEgVjEgaXMgY29waWVkIHRvIHRoZSBz
YW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuDQorLy8vICAgIFdoZW4gYSBtYXNrIGJpdCBpcyAx
LCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYyDQorLy8v
ICAgIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNv
cGllZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1fYmxlbmRfcHMoVjEsIFYyLCBNKSBcDQorICAoX19t
MTI4KSBfX2J1aWx0aW5faWEzMl9ibGVuZHBzICgoX192NHNmKShfX20xMjgpKFYxKSwgXA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZikoX19tMTI4KShWMiksIChp
bnQpKE0pKQ0KKw0KKy8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVd
IHdoZXJlIHRoZSB2YWx1ZXMgYXJlDQorLy8vICAgIHNlbGVjdGVkIGZyb20gZWl0aGVyIHRoZSBm
aXJzdCBvciBzZWNvbmQgb3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlDQorLy8vICAgIHRoaXJk
IG9wZXJhbmQsIHRoZSBjb250cm9sIG1hc2suDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWQkxFTkRWUEQgLyBCTEVORFZQRCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggZG91YmxlXS4NCisvLy8g
XHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGRvdWJsZV0uDQor
Ly8vIFxwYXJhbSBfX00NCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvcGVyYW5kLCB3aXRoIG1h
c2sgYml0cyAxMjcgYW5kIDYzIHNwZWNpZnlpbmcgaG93IHRoZQ0KKy8vLyAgICB2YWx1ZXMgYXJl
IHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNrIGJpdCBjb3JyZXNwb25kcyB0
byB0aGUNCisvLy8gICAgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdo
ZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyA2NC1iaXQgZWxl
bWVudCBpbiBvcGVyYW5kIFxhIF9fVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lDQorLy8vICAgIHBv
c2l0aW9uIGluIHRoZSByZXN1bHQuIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9u
ZGluZyA2NC1iaXQNCisvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjIgaXMgY29waWVk
IHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBkb3VibGVdIGNvbnRhaW5pbmcgdGhlIGNvcGllZCB2YWx1ZXMu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4ZCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYmxl
bmR2X3BkIChfX20xMjhkIF9fVjEsIF9fbTEyOGQgX19WMiwgX19tMTI4ZCBfX00pDQorew0KKyAg
cmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9ibGVuZHZwZCAoKF9fdjJkZilfX1YxLCAo
X192MmRmKV9fVjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoX192MmRmKV9fTSk7DQorfQ0KKw0KKy8vLyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUNCisvLy8gICAgc2VsZWN0ZWQgZnJvbSBl
aXRoZXIgdGhlIGZpcnN0IG9yIHNlY29uZCBvcGVyYW5kIGFzIHNwZWNpZmllZCBieSB0aGUNCisv
Ly8gICAgdGhpcmQgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZCTEVORFZQUyAvIEJMRU5EVlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxwYXJhbSBfX00NCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvcGVyYW5k
LCB3aXRoIG1hc2sgYml0cyAxMjcsIDk1LCA2MywgYW5kIDMxIHNwZWNpZnlpbmcNCisvLy8gICAg
aG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRoZSBtYXNr
IGJpdCBjb3JyZXNwb25kcw0KKy8vLyAgICB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2Yg
YSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUNCisvLy8gICAgY29ycmVz
cG9uZGluZyAzMi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIF9fVjEgaXMgY29waWVkIHRvIHRo
ZSBzYW1lDQorLy8vICAgIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuIFdoZW4gYSBtYXNrIGJpdCBp
cyAxLCB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQNCisvLy8gICAgZWxlbWVudCBpbiBvcGVyYW5k
IFxhIF9fVjIgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRoZSByZXN1bHQuDQor
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgY29waWVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2JsZW5kdl9wcyAoX19tMTI4IF9fVjEsIF9fbTEyOCBfX1YyLCBfX20xMjgg
X19NKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9ibGVuZHZwcyAoKF9f
djRzZilfX1YxLCAoX192NHNmKV9fVjIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX3Y0c2YpX19NKTsNCit9DQorDQorLy8vIFJldHVybnMgYSAxMjgtYml0
IHZlY3RvciBvZiBbMTYgeCBpOF0gd2hlcmUgdGhlIHZhbHVlcyBhcmUgc2VsZWN0ZWQNCisvLy8g
ICAgZnJvbSBlaXRoZXIgb2YgdGhlIGZpcnN0IG9yIHNlY29uZCBvcGVyYW5kIGFzIHNwZWNpZmll
ZCBieSB0aGUgdGhpcmQNCisvLy8gICAgb3BlcmFuZCwgdGhlIGNvbnRyb2wgbWFzay4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQkxFTkRWQiAvIFBCTEVORFZCIDwvYz4gaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzE2IHggaThdLg0KKy8vLyBccGFyYW0gX19WMg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFsxNiB4IGk4XS4NCisvLy8gXHBhcmFtIF9fTQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9wZXJhbmQsIHdpdGggbWFzayBiaXRzIDEyNywgMTE5LCAxMTEuLi43IHNwZWNpZnlpbmcNCisv
Ly8gICAgaG93IHRoZSB2YWx1ZXMgYXJlIHRvIGJlIGNvcGllZC4gVGhlIHBvc2l0aW9uIG9mIHRo
ZSBtYXNrIGJpdCBjb3JyZXNwb25kcw0KKy8vLyAgICB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBi
aXQgb2YgYSBjb3BpZWQgdmFsdWUuIFdoZW4gYSBtYXNrIGJpdCBpcyAwLCB0aGUNCisvLy8gICAg
Y29ycmVzcG9uZGluZyA4LWJpdCBlbGVtZW50IGluIG9wZXJhbmQgXGEgX19WMSBpcyBjb3BpZWQg
dG8gdGhlIHNhbWUNCisvLy8gICAgcG9zaXRpb24gaW4gdGhlIHJlc3VsdC4gV2hlbiBhIG1hc2sg
Yml0IGlzIDEsIHRoZSBjb3JyZXNwb25kaW5nIDgtYml0DQorLy8vICAgIGVsZW1lbnQgaW4gb3Bl
cmFuZCBcYSBfX1YyIGlzIGNvcGllZCB0byB0aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5n
IHRoZSBjb3BpZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2JsZW5kdl9lcGk4IChfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMiwg
X19tMTI4aSBfX00pDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wYmxl
bmR2YjEyOCAoKF9fdjE2cWkpX19WMSwgKF9fdjE2cWkpX19WMiwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKV9fTSk7DQorfQ0KKw0KKy8v
LyBSZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIHdoZXJlIHRoZSB2YWx1ZXMg
YXJlIHNlbGVjdGVkDQorLy8vICAgIGZyb20gZWl0aGVyIG9mIHRoZSBmaXJzdCBvciBzZWNvbmQg
b3BlcmFuZCBhcyBzcGVjaWZpZWQgYnkgdGhlIHRoaXJkDQorLy8vICAgIG9wZXJhbmQsIHRoZSBj
b250cm9sIG1hc2suDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBfbW1fYmxlbmRfZXBpMTYoX19tMTI4aSBWMSwgX19t
MTI4aSBWMiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQkxFTkRXIC8gUEJMRU5EVyA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbOCB4IGkxNl0uDQorLy8vIFxwYXJhbSBWMg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs4IHggaTE2XS4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gaW1tZWRpYXRlIGludGVn
ZXIgb3BlcmFuZCwgd2l0aCBtYXNrIGJpdHMgWzc6MF0gc3BlY2lmeWluZyBob3cgdGhlDQorLy8v
ICAgIHZhbHVlcyBhcmUgdG8gYmUgY29waWVkLiBUaGUgcG9zaXRpb24gb2YgdGhlIG1hc2sgYml0
IGNvcnJlc3BvbmRzIHRvIHRoZQ0KKy8vLyAgICBpbmRleCBvZiBhIGNvcGllZCB2YWx1ZS4gV2hl
biBhIG1hc2sgYml0IGlzIDAsIHRoZSBjb3JyZXNwb25kaW5nIDE2LWJpdA0KKy8vLyAgICBlbGVt
ZW50IGluIG9wZXJhbmQgXGEgVjEgaXMgY29waWVkIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGluIHRo
ZSByZXN1bHQuDQorLy8vICAgIFdoZW4gYSBtYXNrIGJpdCBpcyAxLCB0aGUgY29ycmVzcG9uZGlu
ZyAxNi1iaXQgZWxlbWVudCBpbiBvcGVyYW5kIFxhIFYyDQorLy8vICAgIGlzIGNvcGllZCB0byB0
aGUgc2FtZSBwb3NpdGlvbiBpbiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBjb3BpZWQgdmFsdWVzLg0KKyNkZWZp
bmUgX21tX2JsZW5kX2VwaTE2KFYxLCBWMiwgTSkgXA0KKyAgKF9fbTEyOGkpIF9fYnVpbHRpbl9p
YTMyX3BibGVuZHcxMjggKChfX3Y4aGkpKF9fbTEyOGkpKFYxKSwgXA0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Y4aGkpKF9fbTEyOGkpKFYyKSwgKGludCkoTSkp
DQorDQorLyogU1NFNCBEd29yZCBNdWx0aXBseSBJbnN0cnVjdGlvbnMuICAqLw0KKy8vLyBNdWx0
aXBsZXMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0
IHggaTMyXQ0KKy8vLyAgICBhbmQgcmV0dXJucyB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgZWFj
aCBwcm9kdWN0IGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBpMzJdLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNVUxMRCAvIFBNVUxMRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IuDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rv
ci4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IHByb2R1Y3RzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX211bGxvX2VwaTMyIChfX20xMjhpIF9fVjEsIF9fbTEy
OGkgX19WMikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpICgoX192NHN1KV9fVjEgKiAoX192NHN1
KV9fVjIpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyBjb3JyZXNwb25kaW5nIGV2ZW4taW5kZXhl
ZCBlbGVtZW50cyBvZiB0d28gMTI4LWJpdA0KKy8vLyAgICB2ZWN0b3JzIG9mIFs0IHggaTMyXSBh
bmQgcmV0dXJucyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XQ0KKy8vLyAgICBjb250YWlu
aW5nIHRoZSBwcm9kdWN0cy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTVVMRFEg
LyBQTVVMRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVjENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uDQorLy8vIFxwYXJhbSBfX1YyDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFsyIHggaTY0XSBjb250YWluaW5nIHRoZSBwcm9kdWN0cyBvZiBib3RoDQor
Ly8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV9tdWxfZXBpMzIgKF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KK3sN
CisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG11bGRxMTI4ICgoX192NHNpKV9f
VjEsIChfX3Y0c2kpX19WMik7DQorfQ0KKw0KKy8qIFNTRTQgRmxvYXRpbmcgUG9pbnQgRG90IFBy
b2R1Y3QgSW5zdHJ1Y3Rpb25zLiAgKi8NCisvLy8gQ29tcHV0ZXMgdGhlIGRvdCBwcm9kdWN0IG9m
IHRoZSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdDQorLy8vICAgIGFuZCByZXR1
cm5zIGl0IGluIHRoZSBlbGVtZW50cyBvZiB0aGUgMTI4LWJpdCByZXN1bHQgdmVjdG9yIG9mDQor
Ly8vICAgIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyAgICBUaGUgaW1tZWRpYXRlIGludGVnZXIg
b3BlcmFuZCBjb250cm9scyB3aGljaCBpbnB1dCBlbGVtZW50cw0KKy8vLyAgICB3aWxsIGNvbnRy
aWJ1dGUgdG8gdGhlIGRvdCBwcm9kdWN0LCBhbmQgd2hlcmUgdGhlIGZpbmFsIHJlc3VsdHMgYXJl
DQorLy8vICAgIHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOCBfbW1fZHBfcHMoX19tMTI4IFgsIF9fbTEy
OCBZLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRQUFMgLyBEUFBTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIGltbWVkaWF0ZSBpbnRlZ2VyIG9wZXJh
bmQuIE1hc2sgYml0cyBbNzo0XSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMNCisvLy8gICAgb2Yg
dGhlIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQsIHdpdGggYml0IFs0XSBjb3JyZXNwb25kaW5nIHRv
IHRoZSBsb3dlc3QNCisvLy8gICAgZWxlbWVudCBhbmQgYml0IFs3XSBjb3JyZXNwb25kaW5nIHRv
IHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YgZWFjaCBbNCB4DQorLy8vICAgIGZsb2F0XSB2ZWN0b3Iu
IElmIGEgYml0IGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgdHdv
DQorLy8vICAgIGlucHV0IHZlY3RvcnMgYXJlIHVzZWQgYXMgYW4gaW5wdXQgZm9yIGRvdCBwcm9k
dWN0OyBvdGhlcndpc2UgdGhhdCBpbnB1dA0KKy8vLyAgICBpcyB0cmVhdGVkIGFzIHplcm8uIEJp
dHMgWzM6MF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIG9mIHRoZSByZXN1bHQNCisvLy8gICAg
d2lsbCByZWNlaXZlIGEgY29weSBvZiB0aGUgZmluYWwgZG90IHByb2R1Y3QsIHdpdGggYml0IFsw
XSBjb3JyZXNwb25kaW5nDQorLy8vICAgIHRvIHRoZSBsb3dlc3QgZWxlbWVudCBhbmQgYml0IFsz
XSBjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGVsZW1lbnQgb2YNCisvLy8gICAgZWFjaCBb
NCB4IGZsb2F0XSBzdWJ2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGRvdCBwcm9kdWN0IGlz
IHJldHVybmVkDQorLy8vICAgIGluIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQ7IG90aGVyd2lz
ZSB0aGF0IGVsZW1lbnQgaXMgc2V0IHRvIHplcm8uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZG90IHByb2R1Y3QuDQorI2RlZmlu
ZSBfbW1fZHBfcHMoWCwgWSwgTSkgXA0KKyAgKF9fbTEyOCkgX19idWlsdGluX2lhMzJfZHBwcygo
X192NHNmKShfX20xMjgpKFgpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChf
X3Y0c2YpKF9fbTEyOCkoWSksIChNKSkNCisNCisvLy8gQ29tcHV0ZXMgdGhlIGRvdCBwcm9kdWN0
IG9mIHRoZSB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFsyIHggZG91YmxlXQ0KKy8vLyAgICBhbmQg
cmV0dXJucyBpdCBpbiB0aGUgZWxlbWVudHMgb2YgdGhlIDEyOC1iaXQgcmVzdWx0IHZlY3RvciBv
Zg0KKy8vLyAgICBbMiB4IGRvdWJsZV0uDQorLy8vDQorLy8vICAgIFRoZSBpbW1lZGlhdGUgaW50
ZWdlciBvcGVyYW5kIGNvbnRyb2xzIHdoaWNoIGlucHV0DQorLy8vICAgIGVsZW1lbnRzIHdpbGwg
Y29udHJpYnV0ZSB0byB0aGUgZG90IHByb2R1Y3QsIGFuZCB3aGVyZSB0aGUgZmluYWwgcmVzdWx0
cw0KKy8vLyAgICBhcmUgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4ZCBfbW1fZHBfcGQoX19tMTI4ZCBY
LCBfX20xMjhkIFksIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWRFBQRCAvIERQUEQgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbMiB4IGRvdWJsZV0uDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBkb3VibGVdLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50
ZWdlciBvcGVyYW5kLiBNYXNrIGJpdHMgWzU6NF0gZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzDQor
Ly8vICAgIG9mIHRoZSBpbnB1dCB2ZWN0b3JzIGFyZSB1c2VkLCB3aXRoIGJpdCBbNF0gY29ycmVz
cG9uZGluZyB0byB0aGUgbG93ZXN0DQorLy8vICAgIGVsZW1lbnQgYW5kIGJpdCBbNV0gY29ycmVz
cG9uZGluZyB0byB0aGUgaGlnaGVzdCBlbGVtZW50IG9mIGVhY2ggb2YgWzIgeA0KKy8vLyAgICBk
b3VibGVdIHZlY3Rvci4gSWYgYSBiaXQgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
cyBmcm9tIHRoZSB0d28NCisvLy8gICAgaW5wdXQgdmVjdG9ycyBhcmUgdXNlZCBhcyBhbiBpbnB1
dCBmb3IgZG90IHByb2R1Y3Q7IG90aGVyd2lzZSB0aGF0IGlucHV0DQorLy8vICAgIGlzIHRyZWF0
ZWQgYXMgemVyby4gQml0cyBbMTowXSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMgb2YgdGhlIHJl
c3VsdA0KKy8vLyAgICB3aWxsIHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBmaW5hbCBkb3QgcHJvZHVj
dCwgd2l0aCBiaXQgWzBdIGNvcnJlc3BvbmRpbmcNCisvLy8gICAgdG8gdGhlIGxvd2VzdCBlbGVt
ZW50IGFuZCBiaXQgWzFdIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhpZ2hlc3QgZWxlbWVudCBvZg0K
Ky8vLyAgICBlYWNoIFsyIHggZG91YmxlXSB2ZWN0b3IuIElmIGEgYml0IGlzIHNldCwgdGhlIGRv
dCBwcm9kdWN0IGlzIHJldHVybmVkIGluDQorLy8vICAgIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1l
bnQ7IG90aGVyd2lzZSB0aGF0IGVsZW1lbnQgaXMgc2V0IHRvIHplcm8uDQorI2RlZmluZSBfbW1f
ZHBfcGQoWCwgWSwgTSkgXA0KKyAgKF9fbTEyOGQpIF9fYnVpbHRpbl9pYTMyX2RwcGQoKF9fdjJk
ZikoX19tMTI4ZCkoWCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3Yy
ZGYpKF9fbTEyOGQpKFkpLCAoTSkpDQorDQorLyogU1NFNCBTdHJlYW1pbmcgTG9hZCBIaW50IElu
c3RydWN0aW9uLiAgKi8NCisvLy8gTG9hZHMgaW50ZWdlciB2YWx1ZXMgZnJvbSBhIDEyOC1iaXQg
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb24gdG8gYQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVj
dG9yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVk5URFFBIC8gTU9WTlREUUEg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIHBvaW50
ZXIgdG8gYSAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgY29udGFpbnMgdGhl
IGludGVnZXINCisvLy8gICAgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdl
ciB2ZWN0b3IgY29udGFpbmluZyB0aGUgZGF0YSBzdG9yZWQgYXQgdGhlDQorLy8vICAgIHNwZWNp
ZmllZCBtZW1vcnkgbG9jYXRpb24uDQorc3RhdGljIF9faW5saW5lX18gIF9fbTEyOGkgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX3N0cmVhbV9sb2FkX3NpMTI4IChfX20xMjhpIGNvbnN0ICpfX1Yp
DQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEz
Ml9tb3ZudGRxYSAoKF9fdjJkaSAqKSBfX1YpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkp
IF9fYnVpbHRpbl9ub250ZW1wb3JhbF9sb2FkICgoY29uc3QgX192MmRpICopIF9fVik7DQorI2Vu
ZGlmDQorfQ0KKw0KKy8qIFNTRTQgUGFja2VkIEludGVnZXIgTWluL01heCBJbnN0cnVjdGlvbnMu
ICAqLw0KKy8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4
LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFsxNiB4IGk4XSBhbmQgcmV0dXJucyBhIDEyOC1iaXQg
dmVjdG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBsZXNzZXINCisvLy8gICAgb2YgdGhl
IHR3byB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1JTlNCIC8gUE1J
TlNCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyBccGFyYW0gX19WMg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XQ0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLg0KK3N0YXRpYyBf
X2lubGluZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5fZXBpOCAoX19t
MTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0
aW5faWEzMl9wbWluc2IxMjggKChfX3YxNnFpKSBfX1YxLCAoX192MTZxaSkgX19WMik7DQorfQ0K
Kw0KKy8vLyBDb21wYXJlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiB0d28gMTI4LWJp
dCB2ZWN0b3JzIG9mDQorLy8vICAgIFsxNiB4IGk4XSBhbmQgcmV0dXJucyBhIDEyOC1iaXQgdmVj
dG9yIG9mIFsxNiB4IGk4XSBjb250YWluaW5nIHRoZQ0KKy8vLyAgICBncmVhdGVyIHZhbHVlIG9m
IHRoZSB0d28uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1BWFNCIC8gUE1BWFNC
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyBccGFyYW0gX19WMg0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyB0aGUgZ3JlYXRlciB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21heF9lcGk4IChfX20x
MjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRp
bl9pYTMyX3BtYXhzYjEyOCAoKF9fdjE2cWkpIF9fVjEsIChfX3YxNnFpKSBfX1YyKTsNCit9DQor
DQorLy8vIENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0
IHZlY3RvcnMgb2YNCisvLy8gICAgWzggeCB1MTZdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCB1MTZdIGNvbnRhaW5pbmcgdGhlIGxlc3Nlcg0KKy8vLyAgICB2YWx1ZSBvZiB0
aGUgdHdvLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5VVyAvIFBNSU5VVyA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs4IHggdTE2XS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbOCB4IHUxNl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzggeCB1MTZdIGNvbnRhaW5pbmcgdGhlIGxlc3NlciB2YWx1ZXMuDQorc3RhdGljIF9faW5s
aW5lX18gIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21pbl9lcHUxNiAoX19tMTI4
aSBfX1YxLCBfX20xMjhpIF9fVjIpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5f
aWEzMl9wbWludXcxMjggKChfX3Y4aGkpIF9fVjEsIChfX3Y4aGkpIF9fVjIpOw0KK30NCisNCisv
Ly8gQ29tcGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVj
dG9ycyBvZg0KKy8vLyAgICBbOCB4IHUxNl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBv
ZiBbOCB4IHUxNl0gY29udGFpbmluZyB0aGUNCisvLy8gICAgZ3JlYXRlciB2YWx1ZSBvZiB0aGUg
dHdvLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVVyAvIFBNQVhVVyA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggdTE2XS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbOCB4IHUxNl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzggeCB1MTZdIGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fICBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXhfZXB1MTYgKF9fbTEyOGkg
X19WMSwgX19tMTI4aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lh
MzJfcG1heHV3MTI4ICgoX192OGhpKSBfX1YxLCAoX192OGhpKSBfX1YyKTsNCit9DQorDQorLy8v
IENvbXBhcmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3Rv
cnMgb2YNCisvLy8gICAgWzQgeCBpMzJdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGxlc3Nlcg0KKy8vLyAgICB2YWx1ZSBvZiB0aGUgdHdv
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5TRCAvIFBNSU5TRCA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggaTMyXS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGkzMl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMzJdIGNvbnRhaW5pbmcgdGhlIGxlc3NlciB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18g
IF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21pbl9lcGkzMiAoX19tMTI4aSBfX1Yx
LCBfX20xMjhpIF9fVjIpDQorew0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9w
bWluc2QxMjggKChfX3Y0c2kpIF9fVjEsIChfX3Y0c2kpIF9fVjIpOw0KK30NCisNCisvLy8gQ29t
cGFyZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBv
Zg0KKy8vLyAgICBbNCB4IGkzMl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGkzMl0gY29udGFpbmluZyB0aGUNCisvLy8gICAgZ3JlYXRlciB2YWx1ZSBvZiB0aGUgdHdvLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhTRCAvIFBNQVhTRCA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggaTMyXS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGkzMl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBp
MzJdIGNvbnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fICBf
X20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXhfZXBpMzIgKF9fbTEyOGkgX19WMSwg
X19tMTI4aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1h
eHNkMTI4ICgoX192NHNpKSBfX1YxLCAoX192NHNpKSBfX1YyKTsNCit9DQorDQorLy8vIENvbXBh
cmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YN
CisvLy8gICAgWzQgeCB1MzJdIGFuZCByZXR1cm5zIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1
MzJdIGNvbnRhaW5pbmcgdGhlIGxlc3Nlcg0KKy8vLyAgICB2YWx1ZSBvZiB0aGUgdHdvLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNSU5VRCAvIFBNSU5VRCA8L2M+ICBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVjENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IHUzMl0uDQorLy8vIFxwYXJhbSBfX1YyDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCB1MzJdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggdTMy
XSBjb250YWluaW5nIHRoZSBsZXNzZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9taW5fZXB1MzIgKF9fbTEyOGkgX19WMSwgX19t
MTI4aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1pbnVk
MTI4KChfX3Y0c2kpIF9fVjEsIChfX3Y0c2kpIF9fVjIpOw0KK30NCisNCisvLy8gQ29tcGFyZXMg
dGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8v
LyAgICBbNCB4IHUzMl0gYW5kIHJldHVybnMgYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IHUzMl0g
Y29udGFpbmluZyB0aGUNCisvLy8gICAgZ3JlYXRlciB2YWx1ZSBvZiB0aGUgdHdvLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNQVhVRCAvIFBNQVhVRCA8L2M+IGluc3RydWN0aW9u
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggdTMyXS4NCisvLy8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IHUzMl0uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCB1MzJdIGNv
bnRhaW5pbmcgdGhlIGdyZWF0ZXIgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fICBfX20xMjhp
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tYXhfZXB1MzIgKF9fbTEyOGkgX19WMSwgX19tMTI4
aSBfX1YyKQ0KK3sNCisgIHJldHVybiAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1heHVkMTI4
KChfX3Y0c2kpIF9fVjEsIChfX3Y0c2kpIF9fVjIpOw0KK30NCisNCisvKiBTU0U0IEluc2VydGlv
biBhbmQgRXh0cmFjdGlvbiBmcm9tIFhNTSBSZWdpc3RlciBJbnN0cnVjdGlvbnMuICAqLw0KKy8v
LyBUYWtlcyB0aGUgZmlyc3QgYXJndW1lbnQgXGEgWCBhbmQgaW5zZXJ0cyBhbiBlbGVtZW50IGZy
b20gdGhlIHNlY29uZA0KKy8vLyAgICBhcmd1bWVudCBcYSBZIGFzIHNlbGVjdGVkIGJ5IHRoZSB0
aGlyZCBhcmd1bWVudCBcYSBOLiBUaGF0IHJlc3VsdCB0aGVuDQorLy8vICAgIGhhcyBlbGVtZW50
cyB6ZXJvZWQgb3V0IGFsc28gYXMgc2VsZWN0ZWQgYnkgdGhlIHRoaXJkIGFyZ3VtZW50IFxhIE4u
IFRoZQ0KKy8vLyAgICByZXN1bHRpbmcgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gaXMg
dGhlbiByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjggX21tX2luc2VydF9wcyhfX20xMjggWCwgX19tMTI4
IFksIGNvbnN0IGludCBOKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWSU5TRVJUUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBzb3VyY2Ugb3BlcmFu
ZCBvZiBbNCB4IGZsb2F0XS4gV2l0aCB0aGUgZXhjZXB0aW9uIG9mDQorLy8vICAgIHRob3NlIGJp
dHMgaW4gdGhlIHJlc3VsdCBjb3BpZWQgZnJvbSBwYXJhbWV0ZXIgXGEgWSBhbmQgemVyb2VkIGJ5
IGJpdHMNCisvLy8gICAgWzM6MF0gb2YgXGEgTiwgYWxsIGJpdHMgZnJvbSB0aGlzIHBhcmFtZXRl
ciBhcmUgY29waWVkIHRvIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igc291cmNlIG9wZXJhbmQgb2YgWzQgeCBmbG9hdF0uIE9uZSBzaW5nbGUtcHJl
Y2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgZnJvbSB0aGlzIHNvdXJjZSwg
YXMgZGV0ZXJtaW5lZCBieSB0aGUgaW1tZWRpYXRlDQorLy8vICAgIHBhcmFtZXRlciwgaXMgY29w
aWVkIHRvIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBODQorLy8vICAgIFNwZWNpZmllcyB3aGlj
aCBiaXRzIGZyb20gb3BlcmFuZCBcYSBZIHdpbGwgYmUgY29waWVkLCB3aGljaCBiaXRzIGluIHRo
ZQ0KKy8vLyAgICByZXN1bHQgdGhleSB3aWxsIGJlIGJlIGNvcGllZCB0bywgYW5kIHdoaWNoIGJp
dHMgaW4gdGhlIHJlc3VsdCB3aWxsIGJlDQorLy8vICAgIGNsZWFyZWQuIFRoZSBmb2xsb3dpbmcg
YXNzaWdubWVudHMgYXJlIG1hZGU6IFxuDQorLy8vICAgIEJpdHMgWzc6Nl0gc3BlY2lmeSB0aGUg
Yml0cyB0byBjb3B5IGZyb20gb3BlcmFuZCBcYSBZOiBcbg0KKy8vLyAgICAgIDAwOiBTZWxlY3Rz
IGJpdHMgWzMxOjBdIGZyb20gb3BlcmFuZCBcYSBZLiBcbg0KKy8vLyAgICAgIDAxOiBTZWxlY3Rz
IGJpdHMgWzYzOjMyXSBmcm9tIG9wZXJhbmQgXGEgWS4gXG4NCisvLy8gICAgICAxMDogU2VsZWN0
cyBiaXRzIFs5NTo2NF0gZnJvbSBvcGVyYW5kIFxhIFkuIFxuDQorLy8vICAgICAgMTE6IFNlbGVj
dHMgYml0cyBbMTI3Ojk2XSBmcm9tIG9wZXJhbmQgXGEgWS4gXG4NCisvLy8gICAgQml0cyBbNTo0
XSBzcGVjaWZ5IHRoZSBiaXRzIGluIHRoZSByZXN1bHQgdG8gd2hpY2ggdGhlIHNlbGVjdGVkIGJp
dHMNCisvLy8gICAgZnJvbSBvcGVyYW5kIFxhIFkgYXJlIGNvcGllZDogXG4NCisvLy8gICAgICAw
MDogQ29waWVzIHRoZSBzZWxlY3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0cyBbMzE6
MF0uIFxuDQorLy8vICAgICAgMDE6IENvcGllcyB0aGUgc2VsZWN0ZWQgYml0cyBmcm9tIFxhIFkg
dG8gcmVzdWx0IGJpdHMgWzYzOjMyXS4gXG4NCisvLy8gICAgICAxMDogQ29waWVzIHRoZSBzZWxl
Y3RlZCBiaXRzIGZyb20gXGEgWSB0byByZXN1bHQgYml0cyBbOTU6NjRdLiBcbg0KKy8vLyAgICAg
IDExOiBDb3BpZXMgdGhlIHNlbGVjdGVkIGJpdHMgZnJvbSBcYSBZIHRvIHJlc3VsdCBiaXRzIFsx
Mjc6OTZdLiBcbg0KKy8vLyAgICBCaXRzWzM6MF06IElmIGFueSBvZiB0aGVzZSBiaXRzIGFyZSBz
ZXQsIHRoZSBjb3JyZXNwb25kaW5nIHJlc3VsdA0KKy8vLyAgICBlbGVtZW50IGlzIGNsZWFyZWQu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29waWVkDQorLy8vICAgIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgZWxl
bWVudHMgZnJvbSB0aGUgb3BlcmFuZHMuDQorI2RlZmluZSBfbW1faW5zZXJ0X3BzKFgsIFksIE4p
IF9fYnVpbHRpbl9pYTMyX2luc2VydHBzMTI4KChYKSwgKFkpLCAoTikpDQorDQorLy8vIEV4dHJh
Y3RzIGEgMzItYml0IGludGVnZXIgZnJvbSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGFuZA0KKy8vLyAgICByZXR1cm5zIGl0LCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBhcmFt
ZXRlciBcYSBOIGFzIGEgc2VsZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9leHRyYWN0X3BzKF9fbTEyOCBY
LCBjb25zdCBpbnQgTik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkVYVFJBQ1RQUyAvIEVYVFJBQ1RQUyA8L2M+DQorLy8v
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gTg0KKy8vLyAgICBBbiBpbW1lZGlhdGUg
dmFsdWUuIEJpdHMgWzE6MF0gZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGZyb20gdGhlIGFyZ3VtZW50
DQorLy8vICAgIFxhIFggYXJlIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQ6IFxuDQorLy8vICAgIDAw
OiBCaXRzIFszMTowXSBvZiBwYXJhbWV0ZXIgXGEgWCBhcmUgcmV0dXJuZWQuIFxuDQorLy8vICAg
IDAxOiBCaXRzIFs2MzozMl0gb2YgcGFyYW1ldGVyIFxhIFggYXJlIHJldHVybmVkLiBcbg0KKy8v
LyAgICAxMDogQml0cyBbOTU6NjRdIG9mIHBhcmFtZXRlciBcYSBYIGFyZSByZXR1cm5lZC4gXG4N
CisvLy8gICAgMTE6IEJpdHMgWzEyNzo5Nl0gb2YgcGFyYW1ldGVyIFxhIFggYXJlIHJldHVybmVk
Lg0KKy8vLyBccmV0dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGV4dHJhY3Rl
ZCAzMiBiaXRzIG9mIGZsb2F0IGRhdGEuDQorI2RlZmluZSBfbW1fZXh0cmFjdF9wcyhYLCBOKSAo
X19leHRlbnNpb25fXyAgICAgICAgICAgICAgICAgICAgICBcDQorICAoeyB1bmlvbiB7IGludCBf
X2k7IGZsb2F0IF9fZjsgfSBfX3Q7ICBcDQorICAgICBfX3QuX19mID0gX19idWlsdGluX2lhMzJf
dmVjX2V4dF92NHNmKChfX3Y0c2YpKF9fbTEyOCkoWCksIChpbnQpKE4pKTsgXA0KKyAgICAgX190
Ll9faTt9KSkNCisNCisvKiBNaXNjZWxsYW5lb3VzIGluc2VydCBhbmQgZXh0cmFjdCBtYWNyb3Mu
ICAqLw0KKy8qIEV4dHJhY3QgYSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0IGZyb20gWCBhdCBpbmRl
eCBOIGludG8gRC4gICovDQorI2RlZmluZSBfTU1fRVhUUkFDVF9GTE9BVChELCBYLCBOKSBcDQor
ICB7IChEKSA9IF9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRzZigoX192NHNmKShfX20xMjgpKFgp
LCAoaW50KShOKSk7IH0NCisNCisvKiBPciB0b2dldGhlciAyIHNldHMgb2YgaW5kZXhlcyAoWCBh
bmQgWSkgd2l0aCB0aGUgemVyb2luZyBiaXRzIChaKSB0byBjcmVhdGUNCisgICBhbiBpbmRleCBz
dWl0YWJsZSBmb3IgX21tX2luc2VydF9wcy4gICovDQorI2RlZmluZSBfTU1fTUtfSU5TRVJUUFNf
TkRYKFgsIFksIFopICgoKFgpIDw8IDYpIHwgKChZKSA8PCA0KSB8IChaKSkNCisNCisvKiBFeHRy
YWN0IGEgZmxvYXQgZnJvbSBYIGF0IGluZGV4IE4gaW50byB0aGUgZmlyc3QgaW5kZXggb2YgdGhl
IHJldHVybi4gICovDQorI2RlZmluZSBfTU1fUElDS19PVVRfUFMoWCwgTikgX21tX2luc2VydF9w
cyAoX21tX3NldHplcm9fcHMoKSwgKFgpLCAgIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfTU1fTUtfSU5TRVJUUFNfTkRYKChOKSwgMCwgMHgwZSkpDQor
DQorLyogSW5zZXJ0IGludCBpbnRvIHBhY2tlZCBpbnRlZ2VyIGFycmF5IGF0IGluZGV4LiAgKi8N
CisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSBieSBmaXJzdCBt
YWtpbmcgYSBjb3B5IG9mDQorLy8vICAgIHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHBhcmFt
ZXRlciwgYW5kIHRoZW4gaW5zZXJ0aW5nIHRoZSBsb3dlciA4IGJpdHMNCisvLy8gICAgb2YgYW4g
aW50ZWdlciBwYXJhbWV0ZXIgXGEgSSBpbnRvIGFuIG9mZnNldCBzcGVjaWZpZWQgYnkgdGhlIGlt
bWVkaWF0ZQ0KKy8vLyAgICB2YWx1ZSBwYXJhbWV0ZXIgXGEgTi4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9p
bnNlcnRfZXBpOChfX20xMjhpIFgsIGludCBJLCBjb25zdCBpbnQgTik7DQorLy8vIFxlbmRjb2Rl
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBJTlNS
QiAvIFBJTlNSQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gWA0KKy8vLyAg
ICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGlzIHZlY3RvciBpcyBj
b3BpZWQgdG8gdGhlDQorLy8vICAgIHJlc3VsdCBhbmQgdGhlbiBvbmUgb2YgdGhlIHNpeHRlZW4g
ZWxlbWVudHMgaW4gdGhlIHJlc3VsdCB2ZWN0b3IgaXMNCisvLy8gICAgcmVwbGFjZWQgYnkgdGhl
IGxvd2VyIDggYml0cyBvZiBcYSBJLg0KKy8vLyBccGFyYW0gSQ0KKy8vLyAgICBBbiBpbnRlZ2Vy
LiBUaGUgbG93ZXIgOCBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgd3JpdHRlbiB0byB0aGUgcmVz
dWx0DQorLy8vICAgIGJlZ2lubmluZyBhdCB0aGUgb2Zmc2V0IHNwZWNpZmllZCBieSBcYSBOLg0K
Ky8vLyBccGFyYW0gTg0KKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdHMgWzM6MF0gc3Bl
Y2lmeSB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQorLy8vICAgIHdoaWNoIHRoZSBs
b3dlciA4IGJpdHMgb2YgXGEgSSBhcmUgd3JpdHRlbi4gXG4NCisvLy8gICAgMDAwMDogQml0cyBb
NzowXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDAw
MDE6IEJpdHMgWzE1OjhdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4N
CisvLy8gICAgMDAxMDogQml0cyBbMjM6MTZdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGlu
c2VydGlvbi4gXG4NCisvLy8gICAgMDAxMTogQml0cyBbMzE6MjRdIG9mIHRoZSByZXN1bHQgYXJl
IHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMDEwMDogQml0cyBbMzk6MzJdIG9mIHRo
ZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMDEwMTogQml0cyBb
NDc6NDBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAg
MDExMDogQml0cyBbNTU6NDhdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4g
XG4NCisvLy8gICAgMDExMTogQml0cyBbNjM6NTZdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9y
IGluc2VydGlvbi4gXG4NCisvLy8gICAgMTAwMDogQml0cyBbNzE6NjRdIG9mIHRoZSByZXN1bHQg
YXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMTAwMTogQml0cyBbNzk6NzJdIG9m
IHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMTAxMDogQml0
cyBbODc6ODBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8g
ICAgMTAxMTogQml0cyBbOTU6ODhdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlv
bi4gXG4NCisvLy8gICAgMTEwMDogQml0cyBbMTAzOjk2XSBvZiB0aGUgcmVzdWx0IGFyZSB1c2Vk
IGZvciBpbnNlcnRpb24uIFxuDQorLy8vICAgIDExMDE6IEJpdHMgWzExMToxMDRdIG9mIHRoZSBy
ZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8gICAgMTExMDogQml0cyBbMTE5
OjExMl0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KKy8vLyAgICAx
MTExOiBCaXRzIFsxMjc6MTIwXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24u
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBj
b25zdHJ1Y3RlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1faW5zZXJ0X2VwaTgoWCwgSSwgTikgXA0K
KyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92MTZxaSgoX192MTZxaSkoX19tMTI4
aSkoWCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCko
SSksIChpbnQpKE4pKQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMzJdIGJ5IGZpcnN0IG1ha2luZyBhIGNvcHkgb2YNCisvLy8gICAgdGhlIDEyOC1iaXQgaW50
ZWdlciB2ZWN0b3IgcGFyYW1ldGVyLCBhbmQgdGhlbiBpbnNlcnRpbmcgdGhlIDMyLWJpdA0KKy8v
LyAgICBpbnRlZ2VyIHBhcmFtZXRlciBcYSBJIGF0IHRoZSBvZmZzZXQgc3BlY2lmaWVkIGJ5IHRo
ZSBpbW1lZGlhdGUgdmFsdWUNCisvLy8gICAgcGFyYW1ldGVyIFxhIE4uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4aSBf
bW1faW5zZXJ0X2VwaTMyKF9fbTEyOGkgWCwgaW50IEksIGNvbnN0IGludCBOKTsNCisvLy8gXGVu
ZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UElOU1JEIC8gUElOU1JEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQor
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkzMl0uIFRoaXMgdmVjdG9y
IGlzIGNvcGllZCB0byB0aGUNCisvLy8gICAgcmVzdWx0IGFuZCB0aGVuIG9uZSBvZiB0aGUgZm91
ciBlbGVtZW50cyBpbiB0aGUgcmVzdWx0IHZlY3RvciBpcw0KKy8vLyAgICByZXBsYWNlZCBieSBc
YSBJLg0KKy8vLyBccGFyYW0gSQ0KKy8vLyAgICBBIDMyLWJpdCBpbnRlZ2VyIHRoYXQgaXMgd3Jp
dHRlbiB0byB0aGUgcmVzdWx0IGJlZ2lubmluZyBhdCB0aGUgb2Zmc2V0DQorLy8vICAgIHNwZWNp
ZmllZCBieSBcYSBOLg0KKy8vLyBccGFyYW0gTg0KKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUu
IEJpdHMgWzE6MF0gc3BlY2lmeSB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQorLy8v
ICAgIHdoaWNoIHRoZSBpbnRlZ2VyIFxhIEkgaXMgd3JpdHRlbi4gXG4NCisvLy8gICAgMDA6IEJp
dHMgWzMxOjBdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4gXG4NCisvLy8g
ICAgMDE6IEJpdHMgWzYzOjMyXSBvZiB0aGUgcmVzdWx0IGFyZSB1c2VkIGZvciBpbnNlcnRpb24u
IFxuDQorLy8vICAgIDEwOiBCaXRzIFs5NTo2NF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3Ig
aW5zZXJ0aW9uLiBcbg0KKy8vLyAgICAxMTogQml0cyBbMTI3Ojk2XSBvZiB0aGUgcmVzdWx0IGFy
ZSB1c2VkIGZvciBpbnNlcnRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBjb25zdHJ1Y3RlZCB2YWx1ZXMuDQorI2RlZmluZSBfbW1faW5z
ZXJ0X2VwaTMyKFgsIEksIE4pIFwNCisgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3ZlY19zZXRf
djRzaSgoX192NHNpKShfX20xMjhpKShYKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpbnQpKEkpLCAoaW50KShOKSkNCisNCisjaWZkZWYgX194ODZfNjRfXw0K
Ky8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGJ5IGZpcnN0IG1h
a2luZyBhIGNvcHkgb2YNCisvLy8gICAgdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcGFyYW1l
dGVyLCBhbmQgdGhlbiBpbnNlcnRpbmcgdGhlIDY0LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHBhcmFt
ZXRlciBcYSBJLCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBhcmFtZXRlciBcYSBOIGFzIGFu
DQorLy8vICAgIGluc2VydGlvbiBsb2NhdGlvbiBzZWxlY3Rvci4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9p
bnNlcnRfZXBpNjQoX19tMTI4aSBYLCBsb25nIGxvbmcgSSwgY29uc3QgaW50IE4pOw0KKy8vLyBc
ZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQSU5TUlEgLyBQSU5TUlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgN
CisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhpcyB2ZWN0
b3IgaXMgY29waWVkIHRvIHRoZQ0KKy8vLyAgICByZXN1bHQgYW5kIHRoZW4gb25lIG9mIHRoZSB0
d28gZWxlbWVudHMgaW4gdGhlIHJlc3VsdCB2ZWN0b3IgaXMgcmVwbGFjZWQNCisvLy8gICAgYnkg
XGEgSS4NCisvLy8gXHBhcmFtIEkNCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB0aGF0IGlzIHdy
aXR0ZW4gdG8gdGhlIHJlc3VsdCBiZWdpbm5pbmcgYXQgdGhlIG9mZnNldA0KKy8vLyAgICBzcGVj
aWZpZWQgYnkgXGEgTi4NCisvLy8gXHBhcmFtIE4NCisvLy8gICAgQW4gaW1tZWRpYXRlIHZhbHVl
LiBCaXQgWzBdIHNwZWNpZmllcyB0aGUgYml0IG9mZnNldCBpbiB0aGUgcmVzdWx0IGF0DQorLy8v
ICAgIHdoaWNoIHRoZSBpbnRlZ2VyIFxhIEkgaXMgd3JpdHRlbi4gXG4NCisvLy8gICAgMDogQml0
cyBbNjM6MF0gb2YgdGhlIHJlc3VsdCBhcmUgdXNlZCBmb3IgaW5zZXJ0aW9uLiBcbg0KKy8vLyAg
ICAxOiBCaXRzIFsxMjc6NjRdIG9mIHRoZSByZXN1bHQgYXJlIHVzZWQgZm9yIGluc2VydGlvbi4g
XG4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGNvbnN0cnVjdGVkIHZhbHVlcy4NCisjZGVmaW5lIF9tbV9pbnNlcnRfZXBpNjQoWCwgSSwgTikg
XA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfdmVjX3NldF92MmRpKChfX3YyZGkpKF9fbTEy
OGkpKFgpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcg
bG9uZykoSSksIChpbnQpKE4pKQ0KKyNlbmRpZiAvKiBfX3g4Nl82NF9fICovDQorDQorLyogRXh0
cmFjdCBpbnQgZnJvbSBwYWNrZWQgaW50ZWdlciBhcnJheSBhdCBpbmRleC4gIFRoaXMgcmV0dXJu
cyB0aGUgZWxlbWVudA0KKyAqIGFzIGEgemVybyBleHRlbmRlZCB2YWx1ZSwgc28gaXQgaXMgdW5z
aWduZWQuDQorICovDQorLy8vIEV4dHJhY3RzIGFuIDgtYml0IGVsZW1lbnQgZnJvbSB0aGUgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBvZg0KKy8vLyAgICBbMTYgeCBpOF0sIHVzaW5nIHRoZSBpbW1l
ZGlhdGUgdmFsdWUgcGFyYW1ldGVyIFxhIE4gYXMgYSBzZWxlY3Rvci4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX2V4
dHJhY3RfZXBpOChfX20xMjhpIFgsIGNvbnN0IGludCBOKTsNCisvLy8gXGVuZGNvZGUNCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVYVFJCIC8gUEVY
VFJCIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIE4NCisvLy8gICAgQW4gaW1tZWRpYXRl
IHZhbHVlLiBCaXRzIFszOjBdIHNwZWNpZnkgd2hpY2ggOC1iaXQgdmVjdG9yIGVsZW1lbnQgZnJv
bQ0KKy8vLyAgICB0aGUgYXJndW1lbnQgXGEgWCB0byBleHRyYWN0IGFuZCBjb3B5IHRvIHRoZSBy
ZXN1bHQuIFxuDQorLy8vICAgIDAwMDA6IEJpdHMgWzc6MF0gb2YgcGFyYW1ldGVyIFxhIFggYXJl
IGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMDAwMTogQml0cyBbMTU6OF0gb2YgdGhlIHBhcmFtZXRl
ciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDAwMTA6IEJpdHMgWzIzOjE2XSBvZiB0
aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMDAxMTogQml0cyBb
MzE6MjRdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAw
MTAwOiBCaXRzIFszOTozMl0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxu
DQorLy8vICAgIDAxMDE6IEJpdHMgWzQ3OjQwXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4
dHJhY3RlZC4gXG4NCisvLy8gICAgMDExMDogQml0cyBbNTU6NDhdIG9mIHRoZSBwYXJhbWV0ZXIg
XGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0KKy8vLyAgICAwMTExOiBCaXRzIFs2Mzo1Nl0gb2YgdGhl
IHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDEwMDA6IEJpdHMgWzcx
OjY0XSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMTAw
MTogQml0cyBbNzk6NzJdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBcbg0K
Ky8vLyAgICAxMDEwOiBCaXRzIFs4Nzo4MF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRy
YWN0ZWQuIFxuDQorLy8vICAgIDEwMTE6IEJpdHMgWzk1Ojg4XSBvZiB0aGUgcGFyYW1ldGVyIFxh
IFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMTEwMDogQml0cyBbMTAzOjk2XSBvZiB0aGUg
cGFyYW1ldGVyIFxhIFggYXJlIGV4dHJhY3RlZC4gXG4NCisvLy8gICAgMTEwMTogQml0cyBbMTEx
OjEwNF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDEx
MTA6IEJpdHMgWzExOToxMTJdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXh0cmFjdGVkLiBc
bg0KKy8vLyAgICAxMTExOiBCaXRzIFsxMjc6MTIwXSBvZiB0aGUgcGFyYW1ldGVyIFxhIFggYXJl
IGV4dHJhY3RlZC4NCisvLy8gXHJldHVybnMgIEFuIHVuc2lnbmVkIGludGVnZXIsIHdob3NlIGxv
d2VyIDggYml0cyBhcmUgc2VsZWN0ZWQgZnJvbSB0aGUNCisvLy8gICAgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBwYXJhbWV0ZXIgYW5kIHRoZSByZW1haW5pbmcgYml0cyBhcmUgYXNzaWduZWQNCisv
Ly8gICAgemVyb3MuDQorI2RlZmluZSBfbW1fZXh0cmFjdF9lcGk4KFgsIE4pIFwNCisgIChpbnQp
KHVuc2lnbmVkIGNoYXIpX19idWlsdGluX2lhMzJfdmVjX2V4dF92MTZxaSgoX192MTZxaSkoX19t
MTI4aSkoWCksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoaW50KShOKSkNCisNCisvLy8gRXh0cmFjdHMgYSAzMi1iaXQgZWxlbWVudCBmcm9t
IHRoZSAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggaTMyXSwgdXNpbmcg
dGhlIGltbWVkaWF0ZSB2YWx1ZSBwYXJhbWV0ZXIgXGEgTiBhcyBhIHNlbGVjdG9yLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGlu
dCBfbW1fZXh0cmFjdF9lcGkzMihfX20xMjhpIFgsIGNvbnN0IGludCBOKTsNCisvLy8gXGVuZGNv
ZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUEVY
VFJEIC8gUEVYVFJEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBYDQorLy8v
ICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisvLy8gXHBhcmFtIE4NCisvLy8gICAgQW4g
aW1tZWRpYXRlIHZhbHVlLiBCaXRzIFsxOjBdIHNwZWNpZnkgd2hpY2ggMzItYml0IHZlY3RvciBl
bGVtZW50IGZyb20NCisvLy8gICAgdGhlIGFyZ3VtZW50IFxhIFggdG8gZXh0cmFjdCBhbmQgY29w
eSB0byB0aGUgcmVzdWx0LiBcbg0KKy8vLyAgICAwMDogQml0cyBbMzE6MF0gb2YgdGhlIHBhcmFt
ZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDAxOiBCaXRzIFs2MzozMl0gb2Yg
dGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDEwOiBCaXRzIFs5
NTo2NF0gb2YgdGhlIHBhcmFtZXRlciBcYSBYIGFyZSBleHRyYWN0ZWQuIFxuDQorLy8vICAgIDEx
OiBCaXRzIFsxMjc6OTZdIG9mIHRoZSBwYXJhbWV0ZXIgXGEgWCBhcmUgZXhyYWN0ZWQuDQorLy8v
IFxyZXR1cm5zICBBbiBpbnRlZ2VyLCB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzZWxlY3RlZCBm
cm9tIHRoZSAxMjgtYml0DQorLy8vICAgIGludGVnZXIgdmVjdG9yIHBhcmFtZXRlciBhbmQgdGhl
IHJlbWFpbmluZyBiaXRzIGFyZSBhc3NpZ25lZCB6ZXJvcy4NCisjZGVmaW5lIF9tbV9leHRyYWN0
X2VwaTMyKFgsIE4pIFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfdmVjX2V4dF92NHNpKChfX3Y0
c2kpKF9fbTEyOGkpKFgpLCAoaW50KShOKSkNCisNCisjaWZkZWYgX194ODZfNjRfXw0KKy8vLyBF
eHRyYWN0cyBhIDY0LWJpdCBlbGVtZW50IGZyb20gdGhlIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b2YNCisvLy8gICAgWzIgeCBpNjRdLCB1c2luZyB0aGUgaW1tZWRpYXRlIHZhbHVlIHBhcmFtZXRl
ciBcYSBOIGFzIGEgc2VsZWN0b3IuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gbG9uZyBsb25nIF9tbV9leHRyYWN0X2VwaTY0KF9f
bTEyOGkgWCwgY29uc3QgaW50IE4pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQRVhUUlEgLyBQRVhUUlEgPC9jPiBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIg
dmVjdG9yLg0KKy8vLyBccGFyYW0gTg0KKy8vLyAgICBBbiBpbW1lZGlhdGUgdmFsdWUuIEJpdCBb
MF0gc3BlY2lmaWVzIHdoaWNoIDY0LWJpdCB2ZWN0b3IgZWxlbWVudCBmcm9tDQorLy8vICAgIHRo
ZSBhcmd1bWVudCBcYSBYIHRvIHJldHVybi4gXG4NCisvLy8gICAgMDogQml0cyBbNjM6MF0gYXJl
IHJldHVybmVkLiBcbg0KKy8vLyAgICAxOiBCaXRzIFsxMjc6NjRdIGFyZSByZXR1cm5lZC4gXG4N
CisvLy8gXHJldHVybnMgIEEgNjQtYml0IGludGVnZXIuDQorI2RlZmluZSBfbW1fZXh0cmFjdF9l
cGk2NChYLCBOKSBcDQorICAobG9uZyBsb25nKV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjJkaSgo
X192MmRpKShfX20xMjhpKShYKSwgKGludCkoTikpDQorI2VuZGlmIC8qIF9feDg2XzY0ICovDQor
DQorLyogU1NFNCAxMjgtYml0IFBhY2tlZCBJbnRlZ2VyIENvbXBhcmlzb25zLiAgKi8NCisvLy8g
VGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGFyZSBhbGwNCisvLy8gICAgemVyb3MuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19N
DQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXRzIHRv
IGJlIHRlc3RlZC4NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3Igc2VsZWN0aW5nIHdoaWNoIGJpdHMgdG8gdGVzdCBpbiBvcGVyYW5kIFxhIF9fTS4NCisv
Ly8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIGFsbCB6ZXJvczsgRkFM
U0Ugb3RoZXJ3aXNlLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRUUlMN
CitfbW1fdGVzdHpfc2kxMjgoX19tMTI4aSBfX00sIF9fbTEyOGkgX19WKQ0KK3sNCisgIHJldHVy
biBfX2J1aWx0aW5faWEzMl9wdGVzdHoxMjgoKF9fdjJkaSlfX00sIChfX3YyZGkpX19WKTsNCit9
DQorDQorLy8vIFRlc3RzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBhcmUgYWxsDQorLy8vICAgIG9uZXMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19NDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBiaXRzIHRvIGJlIHRlc3RlZC4NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3Igc2VsZWN0aW5nIHdoaWNoIGJpdHMgdG8gdGVzdCBpbiBvcGVyYW5kIFxh
IF9fTS4NCisvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIGFsbCBv
bmVzOyBGQUxTRSBvdGhlcndpc2UuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9G
Tl9BVFRSUw0KK19tbV90ZXN0Y19zaTEyOChfX20xMjhpIF9fTSwgX19tMTI4aSBfX1YpDQorew0K
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzEyOCgoX192MmRpKV9fTSwgKF9fdjJkaSlf
X1YpOw0KK30NCisNCisvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGFyZQ0KKy8vLyAgICBuZWl0aGVyIGFsbCB6ZXJvcyBub3Ig
YWxsIG9uZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19NDQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXRzIHRvIGJlIHRlc3RlZC4NCisvLy8g
XHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igc2VsZWN0aW5nIHdo
aWNoIGJpdHMgdG8gdGVzdCBpbiBvcGVyYW5kIFxhIF9fTS4NCisvLy8gXHJldHVybnMgVFJVRSBp
ZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIG5laXRoZXIgYWxsIHplcm9zIG5vciBhbGwgb25lczsN
CisvLy8gICAgRkFMU0Ugb3RoZXJ3aXNlLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fdGVzdG56Y19zaTEyOChfX20xMjhpIF9fTSwgX19tMTI4aSBfX1Yp
DQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3B0ZXN0bnpjMTI4KChfX3YyZGkpX19NLCAo
X192MmRpKV9fVik7DQorfQ0KKw0KKy8vLyBUZXN0cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgYml0
cyBpbiBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgYXJlIGFsbA0KKy8vLyAgICBvbmVzLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8v
IGludCBfbW1fdGVzdF9hbGxfb25lcyhfX20xMjhpIFYpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNU
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBWDQorLy8vICAgIEEgMTI4LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXRzIHRvIGJlIHRlc3RlZC4NCisvLy8g
XHJldHVybnMgVFJVRSBpZiB0aGUgYml0cyBzcGVjaWZpZWQgaW4gdGhlIG9wZXJhbmQgYXJlIGFs
bCBzZXQgdG8gMTsgRkFMU0UNCisvLy8gICAgb3RoZXJ3aXNlLg0KKyNkZWZpbmUgX21tX3Rlc3Rf
YWxsX29uZXMoVikgX21tX3Rlc3RjX3NpMTI4KChWKSwgX21tX2NtcGVxX2VwaTMyKChWKSwgKFYp
KSkNCisNCisvLy8gVGVzdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGJpdHMgaW4gYSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGFyZQ0KKy8vLyAgICBuZWl0aGVyIGFsbCB6ZXJvcyBub3IgYWxsIG9u
ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNv
ZGUNCisvLy8gaW50IF9tbV90ZXN0X21peF9vbmVzX3plcm9zKF9fbTEyOGkgTSwgX19tMTI4aSBW
KTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWUFRFU1QgLyBQVEVTVCA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gTQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
Yml0cyB0byBiZSB0ZXN0ZWQuDQorLy8vIFxwYXJhbSBWDQorLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBzZWxlY3Rpbmcgd2hpY2ggYml0cyB0byB0ZXN0IGluIG9wZXJhbmQgXGEgTS4N
CisvLy8gXHJldHVybnMgVFJVRSBpZiB0aGUgc3BlY2lmaWVkIGJpdHMgYXJlIG5laXRoZXIgYWxs
IHplcm9zIG5vciBhbGwgb25lczsNCisvLy8gICAgRkFMU0Ugb3RoZXJ3aXNlLg0KKyNkZWZpbmUg
X21tX3Rlc3RfbWl4X29uZXNfemVyb3MoTSwgVikgX21tX3Rlc3RuemNfc2kxMjgoKE0pLCAoVikp
DQorDQorLy8vIFRlc3RzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBiaXRzIGluIGEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBhcmUgYWxsDQorLy8vICAgIHplcm9zLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fdGVzdF9h
bGxfemVyb3MoX19tMTI4aSBNLCBfX20xMjhpIFYpOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQVEVTVCAvIFBURVNUIDwv
Yz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBiaXRzIHRvIGJlIHRlc3RlZC4NCisvLy8gXHBh
cmFtIFYNCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIHNlbGVjdGluZyB3aGljaCBi
aXRzIHRvIHRlc3QgaW4gb3BlcmFuZCBcYSBNLg0KKy8vLyBccmV0dXJucyBUUlVFIGlmIHRoZSBz
cGVjaWZpZWQgYml0cyBhcmUgYWxsIHplcm9zOyBGQUxTRSBvdGhlcndpc2UuDQorI2RlZmluZSBf
bW1fdGVzdF9hbGxfemVyb3MoTSwgVikgX21tX3Rlc3R6X3NpMTI4ICgoTSksIChWKSkNCisNCisv
KiBTU0U0IDY0LWJpdCBQYWNrZWQgSW50ZWdlciBDb21wYXJpc29ucy4gICovDQorLy8vIENvbXBh
cmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0IHZhbHVlcyBvZiB0aGUgMTI4LWJp
dA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgZm9yIGVxdWFsaXR5Lg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBDTVBFUVEgLyBQQ01QRVFRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX1YxDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3Rvci4NCisv
Ly8gXHBhcmFtIF9fVjINCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNv
biByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2NtcGVxX2VwaTY0KF9fbTEyOGkgX19WMSwgX19tMTI4aSBfX1YyKQ0KK3sNCisgIHJl
dHVybiAoX19tMTI4aSkoKF9fdjJkaSlfX1YxID09IChfX3YyZGkpX19WMik7DQorfQ0KKw0KKy8q
IFNTRTQgUGFja2VkIEludGVnZXIgU2lnbi1FeHRlbnNpb24uICAqLw0KKy8vLyBTaWduLWV4dGVu
ZHMgZWFjaCBvZiB0aGUgbG93ZXIgZWlnaHQgOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQor
Ly8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byAxNi1iaXQgdmFsdWVzIGFuZCBy
ZXR1cm5zIHRoZW0gaW4gYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRo
ZSB1cHBlciBlaWdodCBlbGVtZW50cyBvZiB0aGUgaW5wdXQgdmVjdG9yDQorLy8vICAgIGFyZSB1
bnVzZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlNYQlcgLyBQTU9WU1hC
VyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgZWlnaHQgOC1iaXQgZWxlbWVudHMg
YXJlIHNpZ24tDQorLy8vICAgIGV4dGVuZGVkIHRvIDE2LWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0
ZW5kZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2N2dGVwaThfZXBpMTYoX19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBfX0dOVUNf
Xw0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3hidzEyOCAoKF9fdjE2
cWkpX19WKTsNCisjZWxzZQ0KKyAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBz
aWduZWQgZXh0ZW5zaW9uLCBidXQgX192MTZxaSBpcyBhIGNoYXINCisgICAgIHdoaWNoIG1heSBi
ZSBzaWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLw0KKyAgcmV0dXJuIChfX20x
MjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Yx
NnFzKV9fViwgKF9fdjE2cXMpX19WLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KSwgX192OGhpKTsN
CisjZW5kaWYNCit9DQorDQorLy8vIFNpZ24tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciBmb3Vy
IDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvciBvZiBb
MTYgeCBpOF0gdG8gMzItYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVtIGluIGENCisvLy8gICAg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgdXBwZXIgdHdlbHZlIGVsZW1lbnRzIG9m
IHRoZSBpbnB1dA0KKy8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZQTU9WU1hCRCAvIFBNT1ZTWEJEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0u
IFRoZSBsb3dlciBmb3VyIDgtYml0IGVsZW1lbnRzIGFyZQ0KKy8vLyAgICBzaWduLWV4dGVuZGVk
IHRvIDMyLWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBpMzJdIGNvbnRhaW5pbmcgdGhlIHNpZ24tZXh0ZW5kZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dGVwaThfZXBpMzIoX19t
MTI4aSBfX1YpDQorew0KKyAgLyogVGhpcyBmdW5jdGlvbiBhbHdheXMgcGVyZm9ybXMgYSBzaWdu
ZWQgZXh0ZW5zaW9uLCBidXQgX192MTZxaSBpcyBhIGNoYXINCisgICAgIHdoaWNoIG1heSBiZSBz
aWduZWQgb3IgdW5zaWduZWQsIHNvIHVzZSBfX3YxNnFzLiAqLw0KKyNpZmRlZiBfX0dOVUNfXw0K
KyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3hiZDEyOCAoKF9fdjE2cWkp
X19WKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9y
KF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnFzKV9fViwgKF9fdjE2cXMpX19WLCAwLCAx
LCAyLCAzKSwgX192NHNpKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFNpZ24tZXh0ZW5kcyBlYWNo
IG9mIHRoZSBsb3dlciB0d28gOC1iaXQgaW50ZWdlciBlbGVtZW50cyBvZiBhDQorLy8vICAgIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIDY0LWJpdCB2YWx1ZXMgYW5kIHJl
dHVybnMgdGhlbSBpbg0KKy8vLyAgICBhIDEyOC1iaXQgdmVjdG9yIG9mIFsyIHggaTY0XS4gVGhl
IHVwcGVyIGZvdXJ0ZWVuIGVsZW1lbnRzIG9mIHRoZSBpbnB1dA0KKy8vLyAgICB2ZWN0b3IgYXJl
IHVudXNlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WU1hCUSAvIFBNT1ZT
WEJRIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0uIFRoZSBsb3dlciB0d28gOC1iaXQgZWxlbWVudHMg
YXJlDQorLy8vICAgIHNpZ24tZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgc2lnbi1leHRl
bmRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fY3Z0ZXBpOF9lcGk2NChfX20xMjhpIF9fVikNCit7DQorI2lmZGVmIF9fR05VQ19f
DQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX3Btb3ZzeGJxMTI4ICgoX192MTZx
aSlfX1YpOw0KKyNlbHNlDQorICAvKiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBwZXJmb3JtcyBhIHNp
Z25lZCBleHRlbnNpb24sIGJ1dCBfX3YxNnFpIGlzIGEgY2hhcg0KKyAgICAgd2hpY2ggbWF5IGJl
IHNpZ25lZCBvciB1bnNpZ25lZCwgc28gdXNlIF9fdjE2cXMuICovDQorICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjE2
cXMpX19WLCAoX192MTZxcylfX1YsIDAsIDEpLCBfX3YyZGkpOw0KKyNlbmRpZg0KK30NCisNCisv
Ly8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIGZvdXIgMTYtYml0IGludGVnZXIgZWxl
bWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaTE2XSB0
byAzMi1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCisvLy8gICAgYSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGkzMl0uIFRoZSB1cHBlciBmb3VyIGVsZW1lbnRzIG9mIHRoZSBpbnB1dA0K
Ky8vLyAgICB2ZWN0b3IgYXJlIHVudXNlZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZQTU9WU1hXRCAvIFBNT1ZTWFdEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX1YNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0uIFRoZSBsb3dlciBm
b3VyIDE2LWJpdCBlbGVtZW50cyBhcmUNCisvLy8gICAgc2lnbi1leHRlbmRlZCB0byAzMi1iaXQg
dmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250
YWluaW5nIHRoZSBzaWduLWV4dGVuZGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20x
MjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRlcGkxNl9lcGkzMihfX20xMjhpIF9fVikN
Cit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMy
X3Btb3ZzeHdkMTI4ICgoX192OGhpKV9fVik7DQorI2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlf
X2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192OGhpKV9f
ViwgKF9fdjhoaSlfX1YsIDAsIDEsIDIsIDMpLCBfX3Y0c2kpOw0KKyNlbmRpZg0KK30NCisNCisv
Ly8gU2lnbi1leHRlbmRzIGVhY2ggb2YgdGhlIGxvd2VyIHR3byAxNi1iaXQgaW50ZWdlciBlbGVt
ZW50cyBvZiBhDQorLy8vICAgIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Igb2YgWzggeCBpMTZdIHRv
IDY0LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbg0KKy8vLyAgICBhIDEyOC1iaXQgdmVj
dG9yIG9mIFsyIHggaTY0XS4gVGhlIHVwcGVyIHNpeCBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisv
Ly8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
UE1PVlNYV1EgLyBQTU9WU1hXUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19WDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgdHdv
IDE2LWJpdCBlbGVtZW50cyBhcmUNCisvLy8gICAgIHNpZ24tZXh0ZW5kZWQgdG8gNjQtYml0IHZh
bHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFp
bmluZyB0aGUgc2lnbi1leHRlbmRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXBpMTZfZXBpNjQoX19tMTI4aSBfX1YpDQor
ew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9w
bW92c3h3cTEyOCAoKF9fdjhoaSlfX1YpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19i
dWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjhoaSlfX1Ys
IChfX3Y4aGkpX19WLCAwLCAxKSwgX192MmRpKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFNpZ24t
ZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28gMzItYml0IGludGVnZXIgZWxlbWVudHMgb2Yg
YQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9yIG9mIFs0IHggaTMyXSB0byA2NC1iaXQg
dmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCisvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGk2NF0uIFRoZSB1cHBlciB0d28gZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3Rvcg0KKy8v
LyAgICBhcmUgdW51c2VkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQor
Ly8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZTWERR
IC8gUE1PVlNYRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIGxvd2VyIHR3byAzMi1iaXQg
ZWxlbWVudHMgYXJlDQorLy8vICAgIHNpZ24tZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4NCisv
Ly8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUg
c2lnbi1leHRlbmRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXBpMzJfZXBpNjQoX19tMTI4aSBfX1YpDQorew0KKyNpZmRl
ZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92c3hkcTEy
OCAoKF9fdjRzaSlfX1YpOw0KKyNlbHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2Nv
bnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzaSlfX1YsIChfX3Y0c2kp
X19WLCAwLCAxKSwgX192MmRpKTsNCisjZW5kaWYNCit9DQorDQorLyogU1NFNCBQYWNrZWQgSW50
ZWdlciBaZXJvLUV4dGVuc2lvbi4gICovDQorLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBs
b3dlciBlaWdodCA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3Igb2YgWzE2IHggaThdIHRvIDE2LWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhlbSBpbiBh
DQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XS4gVGhlIHVwcGVyIGVpZ2h0IGVs
ZW1lbnRzIG9mIHRoZSBpbnB1dCB2ZWN0b3INCisvLy8gICAgYXJlIHVudXNlZC4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZQTU9WWlhCVyAvIFBNT1ZaWEJXIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX1YNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBb
MTYgeCBpOF0uIFRoZSBsb3dlciBlaWdodCA4LWJpdCBlbGVtZW50cyBhcmUNCisvLy8gICAgemVy
by1leHRlbmRlZCB0byAxNi1iaXQgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVlcy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRlcHU4
X2VwaTE2KF9fbTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19t
MTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnp4YncxMjggKChfX3YxNnFpKV9fVik7DQorI2Vsc2UN
CisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0aW5fc2h1
ZmZsZXZlY3RvcigoX192MTZxdSlfX1YsIChfX3YxNnF1KV9fViwgMCwgMSwgMiwgMywgNCwgNSwg
NiwgNyksIF9fdjhoaSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBv
ZiB0aGUgbG93ZXIgZm91ciA4LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4
LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdIHRvIDMyLWJpdCB2YWx1ZXMgYW5kIHJldHVybnMgdGhl
bSBpbiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gVGhlIHVwcGVyIHR3
ZWx2ZSBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisvLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQor
Ly8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlpYQkQgLyBQTU9WWlhCRCA8L2M+IGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgZm91ciA4LWJpdCBlbGVtZW50cyBhcmUNCisvLy8g
ICAgemVyby1leHRlbmRlZCB0byAzMi1iaXQgdmFsdWVzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIHRoZSB6ZXJvLWV4dGVuZGVkIHZhbHVl
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9j
dnRlcHU4X2VwaTMyKF9fbTEyOGkgX19WKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVy
biAoX19tMTI4aSkgX19idWlsdGluX2lhMzJfcG1vdnp4YmQxMjggKChfX3YxNnFpKV9fVik7DQor
I2Vsc2UNCisgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5fY29udmVydHZlY3RvcihfX2J1aWx0
aW5fc2h1ZmZsZXZlY3RvcigoX192MTZxdSlfX1YsIChfX3YxNnF1KV9fViwgMCwgMSwgMiwgMyks
IF9fdjRzaSk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBaZXJvLWV4dGVuZHMgZWFjaCBvZiB0aGUg
bG93ZXIgdHdvIDgtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIG9mIFsxNiB4IGk4XSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRo
ZW0gaW4NCisvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciBm
b3VydGVlbiBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisvLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlpYQlEgLyBQTU9WWlhCUSA8L2M+
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzE2IHggaThdLiBUaGUgbG93ZXIgdHdvIDgtYml0IGVsZW1lbnRzIGFyZQ0KKy8v
LyAgICB6ZXJvLWV4dGVuZGVkIHRvIDY0LWJpdCB2YWx1ZXMuDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzIgeCBpNjRdIGNvbnRhaW5pbmcgdGhlIHplcm8tZXh0ZW5kZWQgdmFs
dWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21t
X2N2dGVwdThfZXBpNjQoX19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0
dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92enhicTEyOCAoKF9fdjE2cWkpX19WKTsN
CisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9jb252ZXJ0dmVjdG9yKF9fYnVp
bHRpbl9zaHVmZmxldmVjdG9yKChfX3YxNnF1KV9fViwgKF9fdjE2cXUpX19WLCAwLCAxKSwgX192
MmRpKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dl
ciBmb3VyIDE2LWJpdCBpbnRlZ2VyIGVsZW1lbnRzIG9mIGENCisvLy8gICAgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBvZiBbOCB4IGkxNl0gdG8gMzItYml0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGVt
IGluDQorLy8vICAgIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLiBUaGUgdXBwZXIgZm91
ciBlbGVtZW50cyBvZiB0aGUgaW5wdXQNCisvLy8gICAgdmVjdG9yIGFyZSB1bnVzZWQuDQorLy8v
DQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5z
aWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUE1PVlpYV0QgLyBQTU9WWlhXRCA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19WDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzggeCBpMTZdLiBUaGUgbG93ZXIgZm91ciAxNi1iaXQgZWxlbWVudHMgYXJlDQorLy8vICAg
IHplcm8tZXh0ZW5kZWQgdG8gMzItYml0IHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0
ZXB1MTZfZXBpMzIoX19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJu
IChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92enh3ZDEyOCAoKF9fdjhoaSlfX1YpOw0KKyNl
bHNlDQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGlu
X3NodWZmbGV2ZWN0b3IoKF9fdjhodSlfX1YsIChfX3Y4aHUpX19WLCAwLCAxLCAyLCAzKSwgX192
NHNpKTsNCisjZW5kaWYNCit9DQorDQorLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dl
ciB0d28gMTYtYml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IGludGVn
ZXIgdmVjdG9yIG9mIFs4IHggaTE2XSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0g
aW4NCisvLy8gICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciBzaXgg
ZWxlbWVudHMgb2YgdGhlIGlucHV0IHZlY3Rvcg0KKy8vLyAgICBhcmUgdW51c2VkLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWFdRIC8gUE1PVlpYV1EgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs4IHggaTE2XS4gVGhlIGxvd2VyIHR3byAxNi1iaXQgZWxlbWVudHMgYXJlDQorLy8vICAgIHpl
cm8tZXh0ZW5kZWQgdG8gNjQtYml0IHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZl
Y3RvciBvZiBbMiB4IGk2NF0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXB1
MTZfZXBpNjQoX19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChf
X20xMjhpKSBfX2J1aWx0aW5faWEzMl9wbW92enh3cTEyOCAoKF9fdjhoaSlfX1YpOw0KKyNlbHNl
DQorICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3No
dWZmbGV2ZWN0b3IoKF9fdjhodSlfX1YsIChfX3Y4aHUpX19WLCAwLCAxKSwgX192MmRpKTsNCisj
ZW5kaWYNCit9DQorDQorLy8vIFplcm8tZXh0ZW5kcyBlYWNoIG9mIHRoZSBsb3dlciB0d28gMzIt
Yml0IGludGVnZXIgZWxlbWVudHMgb2YgYQ0KKy8vLyAgICAxMjgtYml0IGludGVnZXIgdmVjdG9y
IG9mIFs0IHggaTMyXSB0byA2NC1iaXQgdmFsdWVzIGFuZCByZXR1cm5zIHRoZW0gaW4NCisvLy8g
ICAgYSAxMjgtYml0IHZlY3RvciBvZiBbMiB4IGk2NF0uIFRoZSB1cHBlciB0d28gZWxlbWVudHMg
b2YgdGhlIGlucHV0IHZlY3Rvcg0KKy8vLyAgICBhcmUgdW51c2VkLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVlBNT1ZaWERRIC8gUE1PVlpYRFEgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMy
XS4gVGhlIGxvd2VyIHR3byAzMi1iaXQgZWxlbWVudHMgYXJlDQorLy8vICAgIHplcm8tZXh0ZW5k
ZWQgdG8gNjQtYml0IHZhbHVlcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
MiB4IGk2NF0gY29udGFpbmluZyB0aGUgemVyby1leHRlbmRlZCB2YWx1ZXMuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0ZXB1MzJfZXBpNjQo
X19tMTI4aSBfX1YpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjhpKSBf
X2J1aWx0aW5faWEzMl9wbW92enhkcTEyOCAoKF9fdjRzaSlfX1YpOw0KKyNlbHNlDQorICByZXR1
cm4gKF9fbTEyOGkpX19idWlsdGluX2NvbnZlcnR2ZWN0b3IoX19idWlsdGluX3NodWZmbGV2ZWN0
b3IoKF9fdjRzdSlfX1YsIChfX3Y0c3UpX19WLCAwLCAxKSwgX192MmRpKTsNCisjZW5kaWYNCit9
DQorDQorLyogU1NFNCBQYWNrIHdpdGggVW5zaWduZWQgU2F0dXJhdGlvbi4gICovDQorLy8vIENv
bnZlcnRzIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgZnJvbSBib3RoIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3INCisvLy8gICAgb3BlcmFuZHMgaW50byAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcnMsIGFu
ZCByZXR1cm5zIHRoZSBwYWNrZWQgcmVzdWx0Lg0KKy8vLyAgICBWYWx1ZXMgZ3JlYXRlciB0aGFu
IDB4RkZGRiBhcmUgc2F0dXJhdGVkIHRvIDB4RkZGRi4gVmFsdWVzIGxlc3MgdGhhbg0KKy8vLyAg
ICAweDAwMDAgYXJlIHNhdHVyYXRlZCB0byAweDAwMDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUEFDS1VTRFcgLyBQQUNLVVNEVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19WMQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMyXS4gRWFj
aCAzMi1iaXQgZWxlbWVudCBpcyB0cmVhdGVkIGFzIGENCisvLy8gICAgc2lnbmVkIGludGVnZXIg
YW5kIGlzIGNvbnZlcnRlZCB0byBhIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdpdGgNCisvLy8g
ICAgc2F0dXJhdGlvbi4gVmFsdWVzIGdyZWF0ZXIgdGhhbiAweEZGRkYgYXJlIHNhdHVyYXRlZCB0
byAweEZGRkYuIFZhbHVlcw0KKy8vLyAgICBsZXNzIHRoYW4gMHgwMDAwIGFyZSBzYXR1cmF0ZWQg
dG8gMHgwMDAwLiBUaGUgY29udmVydGVkIFs0IHggaTE2XSB2YWx1ZXMNCisvLy8gICAgYXJlIHdy
aXR0ZW4gdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9f
VjINCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0uIEVhY2ggMzItYml0IGVs
ZW1lbnQgaXMgdHJlYXRlZCBhcyBhDQorLy8vICAgIHNpZ25lZCBpbnRlZ2VyIGFuZCBpcyBjb252
ZXJ0ZWQgdG8gYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB3aXRoDQorLy8vICAgIHNhdHVyYXRp
b24uIFZhbHVlcyBncmVhdGVyIHRoYW4gMHhGRkZGIGFyZSBzYXR1cmF0ZWQgdG8gMHhGRkZGLiBW
YWx1ZXMNCisvLy8gICAgbGVzcyB0aGFuIDB4MDAwMCBhcmUgc2F0dXJhdGVkIHRvIDB4MDAwMC4g
VGhlIGNvbnZlcnRlZCBbNCB4IGkxNl0gdmFsdWVzDQorLy8vICAgIGFyZSB3cml0dGVuIHRvIHRo
ZSBoaWdoZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3BhY2t1c19l
cGkzMihfX20xMjhpIF9fVjEsIF9fbTEyOGkgX19WMikNCit7DQorICByZXR1cm4gKF9fbTEyOGkp
IF9fYnVpbHRpbl9pYTMyX3BhY2t1c2R3MTI4KChfX3Y0c2kpX19WMSwgKF9fdjRzaSlfX1YyKTsN
Cit9DQorDQorLyogU1NFNCBNdWx0aXBsZSBQYWNrZWQgU3VtcyBvZiBBYnNvbHV0ZSBEaWZmZXJl
bmNlLiAgKi8NCisvLy8gU3VidHJhY3RzIDgtYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGFu
ZCBjb21wdXRlcyB0aGUgYWJzb2x1dGUNCisvLy8gICAgdmFsdWVzIG9mIHRoZSBkaWZmZXJlbmNl
cyB0byB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gICAg
VGhlbiBzdW1zIG9mIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBhcmUgcmV0dXJuZWQgYWNjb3Jk
aW5nIHRvIHRoZSBiaXQNCisvLy8gICAgZmllbGRzIGluIHRoZSBpbW1lZGlhdGUgb3BlcmFuZC4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0K
Ky8vLyBfX20xMjhpIF9tbV9tcHNhZGJ3X2VwdTgoX19tMTI4aSBYLCBfX20xMjhpIFksIGNvbnN0
IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWTVBTQURCVyAvIE1QU0FEQlcgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIFgNCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0u
DQorLy8vIFxwYXJhbSBZDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0K
Ky8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5
aW5nIGhvdyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYXJlIHRvDQorLy8vICAgIGJlIGNhbGN1
bGF0ZWQsIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGFsZ29yaXRobToNCisvLy8gICAgXGNv
ZGUNCisvLy8gICAgLy8gTTIgcmVwcmVzZW50cyBiaXQgMiBvZiB0aGUgaW1tZWRpYXRlIG9wZXJh
bmQNCisvLy8gICAgLy8gTTEwIHJlcHJlc2VudHMgYml0cyBbMTowXSBvZiB0aGUgaW1tZWRpYXRl
IG9wZXJhbmQNCisvLy8gICAgaSA9IE0yICogNDsNCisvLy8gICAgaiA9IE0xMCAqIDQ7DQorLy8v
ICAgIGZvciAoayA9IDA7IGsgPCA4OyBrID0gayArIDEpIHsNCisvLy8gICAgICBkMCA9IGFicyhY
W2kgKyBrICsgMF0gLSBZW2ogKyAwXSk7DQorLy8vICAgICAgZDEgPSBhYnMoWFtpICsgayArIDFd
IC0gWVtqICsgMV0pOw0KKy8vLyAgICAgIGQyID0gYWJzKFhbaSArIGsgKyAyXSAtIFlbaiArIDJd
KTsNCisvLy8gICAgICBkMyA9IGFicyhYW2kgKyBrICsgM10gLSBZW2ogKyAzXSk7DQorLy8vICAg
ICAgcltrXSA9IGQwICsgZDEgKyBkMiArIGQzOw0KKy8vLyAgICB9DQorLy8vICAgIFxlbmRjb2Rl
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBz
dW1zIG9mIHRoZSBzZXRzIG9mDQorLy8vICAgIGFic29sdXRlIGRpZmZlcmVuY2VzIGJldHdlZW4g
Ym90aCBvcGVyYW5kcy4NCisjZGVmaW5lIF9tbV9tcHNhZGJ3X2VwdTgoWCwgWSwgTSkgXA0KKyAg
KF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMyX21wc2FkYncxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKFgp
LCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19t
MTI4aSkoWSksIChNKSkNCisNCisvLy8gRmluZHMgdGhlIG1pbmltdW0gdW5zaWduZWQgMTYtYml0
IGVsZW1lbnQgaW4gdGhlIGlucHV0IDEyOC1iaXQNCisvLy8gICAgdmVjdG9yIG9mIFs4IHggdTE2
XSBhbmQgcmV0dXJucyBpdCBhbmQgYWxvbmcgd2l0aCBpdHMgaW5kZXguDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWUEhNSU5QT1NVVyAvIFBITUlOUE9TVVcgPC9jPg0KKy8vLyBpbnN0
cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fVg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs4IHggdTE2XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZhbHVlIHdoZXJlIGJpdHMg
WzE1OjBdIGNvbnRhaW4gdGhlIG1pbmltdW0gdmFsdWUgZm91bmQNCisvLy8gICAgaW4gcGFyYW1l
dGVyIFxhIF9fViwgYml0cyBbMTg6MTZdIGNvbnRhaW4gdGhlIGluZGV4IG9mIHRoZSBtaW5pbXVt
IHZhbHVlDQorLy8vICAgIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIHNldCB0byAwLg0KK3N0
YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21pbnBvc19l
cHUxNihfX20xMjhpIF9fVikNCit7DQorICByZXR1cm4gKF9fbTEyOGkpIF9fYnVpbHRpbl9pYTMy
X3BobWlucG9zdXcxMjgoKF9fdjhoaSlfX1YpOw0KK30NCisNCisvKiBIYW5kbGUgdGhlIHNzZTQu
MiBkZWZpbml0aW9ucyBoZXJlLiAqLw0KKw0KKy8qIFRoZXNlIGRlZmluaXRpb25zIGFyZSBub3Jt
YWxseSBpbiBubW1pbnRyaW4uaCwgYnV0IGdjYyBwdXRzIHRoZW0gaW4gaGVyZQ0KKyAgIHNvIHdl
J2xsIGRvIHRoZSBzYW1lLiAgKi8NCisNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQorI2lm
ZGVmIF9fR05VQ19fDQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygo
X19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQorI2Vs
c2UNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p
bmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZTQuMiIpKSkNCisjZW5kaWYNCisN
CisvKiBUaGVzZSBzcGVjaWZ5IHRoZSB0eXBlIG9mIGRhdGEgdGhhdCB3ZSdyZSBjb21wYXJpbmcu
ICAqLw0KKyNkZWZpbmUgX1NJRERfVUJZVEVfT1BTICAgICAgICAgICAgICAgICAweDAwDQorI2Rl
ZmluZSBfU0lERF9VV09SRF9PUFMgICAgICAgICAgICAgICAgIDB4MDENCisjZGVmaW5lIF9TSURE
X1NCWVRFX09QUyAgICAgICAgICAgICAgICAgMHgwMg0KKyNkZWZpbmUgX1NJRERfU1dPUkRfT1BT
ICAgICAgICAgICAgICAgICAweDAzDQorDQorLyogVGhlc2Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBj
b21wYXJpc29uIG9wZXJhdGlvbi4gICovDQorI2RlZmluZSBfU0lERF9DTVBfRVFVQUxfQU5ZICAg
ICAgICAgICAgIDB4MDANCisjZGVmaW5lIF9TSUREX0NNUF9SQU5HRVMgICAgICAgICAgICAgICAg
MHgwNA0KKyNkZWZpbmUgX1NJRERfQ01QX0VRVUFMX0VBQ0ggICAgICAgICAgICAweDA4DQorI2Rl
ZmluZSBfU0lERF9DTVBfRVFVQUxfT1JERVJFRCAgICAgICAgIDB4MGMNCisNCisvKiBUaGVzZSBt
YWNyb3Mgc3BlY2lmeSB0aGUgcG9sYXJpdHkgb2YgdGhlIG9wZXJhdGlvbi4gICovDQorI2RlZmlu
ZSBfU0lERF9QT1NJVElWRV9QT0xBUklUWSAgICAgICAgIDB4MDANCisjZGVmaW5lIF9TSUREX05F
R0FUSVZFX1BPTEFSSVRZICAgICAgICAgMHgxMA0KKyNkZWZpbmUgX1NJRERfTUFTS0VEX1BPU0lU
SVZFX1BPTEFSSVRZICAweDIwDQorI2RlZmluZSBfU0lERF9NQVNLRURfTkVHQVRJVkVfUE9MQVJJ
VFkgIDB4MzANCisNCisvKiBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgaW4gX21tX2NtcFhzdHJpKCkg
dG8gc3BlY2lmeSB0aGUgcmV0dXJuLiAgKi8NCisjZGVmaW5lIF9TSUREX0xFQVNUX1NJR05JRklD
QU5UICAgICAgICAgMHgwMA0KKyNkZWZpbmUgX1NJRERfTU9TVF9TSUdOSUZJQ0FOVCAgICAgICAg
ICAweDQwDQorDQorLyogVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIF9tbV9jbXBYc3RyaSgpIHRv
IHNwZWNpZnkgdGhlIHJldHVybi4gICovDQorI2RlZmluZSBfU0lERF9CSVRfTUFTSyAgICAgICAg
ICAgICAgICAgIDB4MDANCisjZGVmaW5lIF9TSUREX1VOSVRfTUFTSyAgICAgICAgICAgICAgICAg
MHg0MA0KKw0KKy8qIFNTRTQuMiBQYWNrZWQgQ29tcGFyaXNvbiBJbnRyaW5zaWNzLiAgKi8NCisv
Ly8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNv
biBvZiBzdHJpbmcNCisvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhz
IHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBc
YSBCLiBSZXR1cm5zIGEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIHJl
c3VsdA0KKy8vLyAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIF9fbTEyOGkgX21tX2Nt
cGlzdHJtKF9fbTEyOGkgQSwgX19tMTI4aSBCLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2Rl
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBJ
U1RSTSAvIFBDTVBJU1RSTSA8L2M+DQorLy8vIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFt
IEINCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBN
DQorLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0
aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCisvLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNv
bXBhcmlzb24gdG8gcGVyZm9ybSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0KKy8vLyAg
ICB2YWx1ZS4gXG4NCisvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZv
cm1hdC4gXG4NCisvLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAw
MTogOCB1bnNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4N
CisvLy8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0
ZXJtaW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAg
ICAgIDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVx
dWFsaXR5IHdpdGggYWxsDQorLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxu
DQorLy8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJl
ZCB0byBcYSBBLiBUaGUgY29tcGFyaXNvbg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAg
ICAgICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBp
biBcYSBBLiBcbg0KKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29y
cmVzcG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9y
IGVxdWFsaXR5LiBcbg0KKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBz
dWJzdHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1p
bmUgd2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8v
ICAgICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8g
ICAgICAwMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNr
LiBcbg0KKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0
aGUgYml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVh
bA0KKy8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuDQorLy8vICAg
IEJpdCBbNl06IERldGVybWluZXMgd2hldGhlciB0aGUgcmVzdWx0IGlzIHplcm8tZXh0ZW5kZWQg
b3IgZXhwYW5kZWQgdG8gMTYNCisvLy8gICAgICAgICAgICAgYnl0ZXMuIFxuDQorLy8vICAgICAg
MDogVGhlIHJlc3VsdCBpcyB6ZXJvLWV4dGVuZGVkIHRvIDE2IGJ5dGVzLiBcbg0KKy8vLyAgICAg
IDE6IFRoZSByZXN1bHQgaXMgZXhwYW5kZWQgdG8gMTYgYnl0ZXMgKHRoaXMgZXhwYW5zaW9uIGlz
IHBlcmZvcm1lZCBieQ0KKy8vLyAgICAgICAgIHJlcGVhdGluZyBlYWNoIGJpdCA4IG9yIDE2IHRp
bWVzKS4NCisvLy8gXHJldHVybnMgUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVw
cmVzZW50aW5nIHRoZSByZXN1bHQgbWFzayBvZg0KKy8vLyAgICB0aGUgY29tcGFyaXNvbi4NCisj
ZGVmaW5lIF9tbV9jbXBpc3RybShBLCBCLCBNKSBcDQorICAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wY21waXN0cm0xMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCBcDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkN
CisNCisvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29t
cGFyaXNvbiBvZiBzdHJpbmcNCisvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBs
ZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBB
IGFuZCBcYSBCLiBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgaW5k
ZXggb2YgdGhlDQorLy8vICAgIGNvbXBhcmlzb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9jbXBpc3RyaShfX20x
MjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01Q
SVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBCDQorLy8vICAg
IEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBB
biA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3Rl
cnMgYXJlIGJ5dGVzIG9yDQorLy8vICAgIHdvcmRzLCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRv
IHBlcmZvcm0sIGFuZCB0aGUgZm9ybWF0IG9mIHRoZSByZXR1cm4NCisvLy8gICAgdmFsdWUuIFxu
DQorLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQor
Ly8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWdu
ZWQgd29yZHMgXG4NCisvLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAg
MTE6IDggc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21w
YXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vi
c2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRo
IGFsbA0KKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAg
IDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4g
VGhlIGNvbXBhcmlzb24NCisvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5k
IGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4N
CisvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcg
Y2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4g
XG4NCisvLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggQiBmb3Igc3Vic3RyaW5nIG1hdGNo
ZXMgb2YgXGEgQS4gXG4NCisvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8g
cGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAg
ICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVm
ZmVjdC4gXG4NCisvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAg
ICAxMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9u
bHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAg
ICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLiBcbg0KKy8vLyAgICBCaXQgWzZdOiBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIGluZGV4IG9mIHRoZSBsb3dlc3Qgc2V0IGJpdCBvciB0aGUNCisv
Ly8gICAgICAgICAgICAgaGlnaGVzdCBzZXQgYml0IGlzIHJldHVybmVkLiBcbg0KKy8vLyAgICAg
IDA6IFRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2V0IGJpdC4gXG4NCisvLy8g
ICAgICAxOiBUaGUgaW5kZXggb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgc2V0IGJpdC4gXG4NCisv
Ly8gXHJldHVybnMgUmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IGlu
ZGV4IG9mIHRoZSBjb21wYXJpc29uLg0KKyNkZWZpbmUgX21tX2NtcGlzdHJpKEEsIEIsIE0pIFwN
CisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJpMTI4KChfX3YxNnFpKShfX20xMjhpKShB
KSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEy
OGkpKEIpLCAoaW50KShNKSkNCisNCisvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEg
TSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCisvLy8gICAgZGF0YSB3aXRoIGV4
cGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVy
YW5kcw0KKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIGEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciByZXByZXNlbnRpbmcgdGhlIHJlc3VsdA0KKy8vLyAgICBtYXNrIG9mIHRoZSBjb21wYXJp
c29uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxj
b2RlDQorLy8vIF9fbTEyOGkgX21tX2NtcGVzdHJtKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhp
IEIsIGludCBMQiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUk0gLyBQQ01QRVNUUk0g
PC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAx
MjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFu
ZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBMQQ0KKy8vLyAgICBBbiBp
bnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLg0K
Ky8vLyBccGFyYW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisv
Ly8gXHBhcmFtIExCDQorLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0
aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIDgtYml0
IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUg
Ynl0ZXMgb3INCisvLy8gICAgd29yZHMsIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9y
bSwgYW5kIHRoZSBmb3JtYXQgb2YgdGhlIHJldHVybg0KKy8vLyAgICB2YWx1ZS4gXG4NCisvLy8g
ICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCisvLy8gICAg
ICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3Jk
cyBcbg0KKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAxMTogOCBz
aWduZWQgd29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24g
dHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVh
Y2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQor
Ly8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMDE6IFJh
bmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29t
cGFyaXNvbg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9y
IGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAgICAgICBhbmQgbGVzcyB0
aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KKy8vLyAg
ICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0
ZXJzIGluIFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KKy8v
LyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBv
ZiBcYSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJm
b3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAgICAgICAgICAgICAgIG1h
c2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAgICAwMDogTm8gZWZmZWN0
LiBcbg0KKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAgICAgIDEw
OiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBm
b3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KKy8vLyAgICAgICAgICB0
byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuIFxuDQorLy8vICAgIEJpdCBbNl06IERldGVybWlu
ZXMgd2hldGhlciB0aGUgcmVzdWx0IGlzIHplcm8tZXh0ZW5kZWQgb3IgZXhwYW5kZWQgdG8gMTYN
CisvLy8gICAgICAgICAgICAgYnl0ZXMuIFxuDQorLy8vICAgICAgMDogVGhlIHJlc3VsdCBpcyB6
ZXJvLWV4dGVuZGVkIHRvIDE2IGJ5dGVzLiBcbg0KKy8vLyAgICAgIDE6IFRoZSByZXN1bHQgaXMg
ZXhwYW5kZWQgdG8gMTYgYnl0ZXMgKHRoaXMgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCBieQ0KKy8v
LyAgICAgICAgIHJlcGVhdGluZyBlYWNoIGJpdCA4IG9yIDE2IHRpbWVzKS4gXG4NCisvLy8gXHJl
dHVybnMgUmV0dXJucyBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBy
ZXN1bHQgbWFzayBvZg0KKy8vLyAgICB0aGUgY29tcGFyaXNvbi4NCisjZGVmaW5lIF9tbV9jbXBl
c3RybShBLCBMQSwgQiwgTEIsIE0pIFwNCisgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BjbXBl
c3RybTEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIChpbnQpKExBKSwgXA0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCko
TEIpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTSkp
DQorDQorLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNv
bXBhcmlzb24gb2Ygc3RyaW5nDQorLy8vICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQg
bGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEg
QSBhbmQgXGEgQi4gUmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IGlu
ZGV4IG9mIHRoZQ0KKy8vLyAgICBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fY21wZXN0cmkoX19t
MTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQorLy8vIFxl
bmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4g
VlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+DQorLy8vIGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8g
XHBhcmFtIExBDQorLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBv
ZiB0aGUgc3RyaW5nIGluIFxhIEEuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEgMTI4LWJpdCBp
bnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJl
DQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTEINCisvLy8gICAgQW4gaW50ZWdlciB0
aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4NCisvLy8gXHBh
cmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0
aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8vLyAgICB3b3JkcywgdGhlIHR5cGUg
b2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLCBhbmQgdGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuDQor
Ly8vICAgIHZhbHVlLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRh
dGEgZm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KKy8vLyAg
ICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRl
cyBcbg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJd
OiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQor
Ly8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBm
b3IgZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEg
QS4gXG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNv
bXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQor
Ly8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1l
bnRzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBv
ZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEg
QiBmb3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIEIgZm9y
IHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQorLy8vICAgIEJpdHMgWzU6NF06IERldGVy
bWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisv
Ly8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8v
LyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1h
c2suIFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRl
IHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVx
dWFsDQorLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4NCisvLy8g
ICAgQml0IFs2XTogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IHNl
dCBiaXQgb3IgdGhlDQorLy8vICAgICAgICAgICAgIGhpZ2hlc3Qgc2V0IGJpdCBpcyByZXR1cm5l
ZC4gXG4NCisvLy8gICAgICAwOiBUaGUgaW5kZXggb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IHNl
dCBiaXQuIFxuDQorLy8vICAgICAgMTogVGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50
IHNldCBiaXQuIFxuDQorLy8vIFxyZXR1cm5zIFJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRp
bmcgdGhlIHJlc3VsdCBpbmRleCBvZiB0aGUgY29tcGFyaXNvbi4NCisjZGVmaW5lIF9tbV9jbXBl
c3RyaShBLCBMQSwgQiwgTEIsIE0pIFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJp
MTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgKGludCkoTEEpLCBcDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKExCKSwgXA0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQorDQorLyogU1NF
NC4yIFBhY2tlZCBDb21wYXJpc29uIEludHJpbnNpY3MgYW5kIEVGbGFnIFJlYWRpbmcuICAqLw0K
Ky8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJp
c29uIG9mIHN0cmluZw0KKy8vLyAgICBkYXRhIHdpdGggaW1wbGljaXRseSBkZWZpbmVkIGxlbmd0
aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8vICAgIFxhIEEgYW5k
IFxhIEIuIFJldHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgemVybyBhbmQgdGhlIGxlbmd0aCBv
ZiB0aGUNCisvLy8gICAgc3RyaW5nIGluIFxhIEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwg
cmV0dXJucyAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFxjb2RlDQorLy8vIGludCBfbW1fY21waXN0cmEoX19tMTI4aSBBLCBfX20xMjhpIEIsIGNv
bnN0IGludCBNKTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIDxjPiBWUENNUElTVFJJIC8gUENNUElTVFJJIDwvYz4NCisvLy8gaW5z
dHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8v
ICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gQg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAg
ICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9w
ZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8v
LyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KKy8v
LyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAg
ICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdv
cmRzIFxuDQorLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDExOiA4
IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNv
biB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQorLy8vICAgICAgMDA6IFN1YnNldDog
RWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwN
CisvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAwMTog
UmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBj
b21wYXJpc29uDQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBm
b3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQorLy8vICAgICAgICAgIGFuZCBsZXNz
IHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQorLy8v
ICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJh
Y3RlcnMgaW4gXGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQor
Ly8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVz
IG9mIFxhIEEuIFxuDQorLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBl
cmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8gICAgICAgICAgICAgICAg
bWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAgICAgIDAwOiBObyBlZmZl
Y3QuIFxuDQorLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQorLy8vICAgICAg
MTA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5
IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQorLy8vICAgICAgICAg
IHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4gXG4NCisvLy8gXHJldHVybnMgUmV0dXJucyAx
IGlmIHRoZSBiaXQgbWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4N
CisvLy8gICAgXGEgQiBpcyB0aGUgbWF4aW11bTsgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQorI2Rl
ZmluZSBfbW1fY21waXN0cmEoQSwgQiwgTSkgXA0KKyAgKGludClfX2J1aWx0aW5faWEzMl9wY21w
aXN0cmlhMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkpDQorDQorLy8v
IFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24g
b2Ygc3RyaW5nDQorLy8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0
aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEgQSBhbmQgXGEg
Qi4gUmV0dXJucyAxIGlmIHRoZSBiaXQgbWFzayBpcyBub24temVybywgb3RoZXJ3aXNlLCByZXR1
cm5zDQorLy8vICAgIDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9jbXBpc3RyYyhfX20xMjhpIEEsIF9fbTEyOGkg
QiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KKy8v
LyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUN
CisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEgMTI4LWJpdCBpbnRl
Z2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQor
Ly8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlh
dGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9y
DQorLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxu
DQorLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQor
Ly8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWdu
ZWQgd29yZHMgXG4NCisvLy8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAg
MTE6IDggc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21w
YXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vi
c2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRo
IGFsbA0KKy8vLyAgICAgICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAg
IDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4g
VGhlIGNvbXBhcmlzb24NCisvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVx
dWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5k
IGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4N
CisvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcg
Y2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4g
XG4NCisvLy8gICAgICAxMTogU3Vic3RyaW5nOiBTZWFyY2ggQiBmb3Igc3Vic3RyaW5nIG1hdGNo
ZXMgb2YgXGEgQS4gXG4NCisvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8g
cGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAg
ICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVm
ZmVjdC4gXG4NCisvLy8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAg
ICAxMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9u
bHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAg
ICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBCLg0KKy8vLyBccmV0dXJucyBSZXR1cm5zIDEg
aWYgdGhlIGJpdCBtYXNrIGlzIG5vbi16ZXJvLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCisjZGVm
aW5lIF9tbV9jbXBpc3RyYyhBLCBCLCBNKSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBp
c3RyaWMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCBcDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fdjE2cWkpKF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCisNCisvLy8g
VXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJhbmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBv
ZiBzdHJpbmcNCisvLy8gICAgZGF0YSB3aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRo
YXQgaXMgY29udGFpbmVkIGluIHNvdXJjZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBcYSBC
LiBSZXR1cm5zIGJpdCAwIG9mIHRoZSByZXN1bHRpbmcgYml0IG1hc2suDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9j
bXBpc3RybyhfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0pOw0KKy8vLyBcZW5kY29k
ZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZQQ01Q
SVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBh
cmFtIEENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJh
bSBCDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0
aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0g
TQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIg
dGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQorLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBv
ZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQorLy8vICAgIEJpdHMgWzE6MF06IERldGVybWlu
ZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVz
IFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCisvLy8gICAgICAxMDogMTYg
c2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQorLy8vICAg
IEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0aW9uIG1l
dGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlz
IGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KKy8vLyAgICAgICAgICB0aGUgY2hhcmFj
dGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFjdGVyIGlu
IFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCisvLy8gICAgICAgICAg
YmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxlbWVudHMg
aW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Igb2RkLWlu
ZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAxMDogTWF0Y2g6IENvbXBhcmUg
ZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0KKy8vLyAg
ICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCisvLy8gICAgICAxMTogU3Vic3RyaW5nOiBT
ZWFyY2ggQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4NCisvLy8gICAgQml0cyBb
NTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBsZW1lbnQgb24g
dGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAwMTogTmVnYXRl
IHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAg
IDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBpbmRleCBsZXNz
IHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEgQSBvciBcYSBC
LiBcbg0KKy8vLyBccmV0dXJucyBSZXR1cm5zIGJpdCAwIG9mIHRoZSByZXN1bHRpbmcgYml0IG1h
c2suDQorI2RlZmluZSBfbW1fY21waXN0cm8oQSwgQiwgTSkgXA0KKyAgKGludClfX2J1aWx0aW5f
aWEzMl9wY21waXN0cmlvMTI4KChfX3YxNnFpKShfX20xMjhpKShBKSwgXA0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTSkp
DQorDQorLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNv
bXBhcmlzb24gb2Ygc3RyaW5nDQorLy8vICAgIGRhdGEgd2l0aCBpbXBsaWNpdGx5IGRlZmluZWQg
bGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEg
QSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBB
IGlzIGxlc3MgdGhhbg0KKy8vLyAgICB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUN
CisvLy8gaW50IF9tbV9jbXBpc3RycyhfX20xMjhpIEEsIF9fbTEyOGkgQiwgY29uc3QgaW50IE0p
Ow0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZQQ01QSVNUUkkgLyBQQ01QSVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFy
ZWQuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVk
Lg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVj
aWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQorLy8vICAgIHdvcmRz
IGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQorLy8vICAgIEJpdHMg
WzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8vICAgICAgMDA6IDE2
IHVuc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCisv
Ly8gICAgICAxMDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6IDggc2lnbmVkIHdv
cmRzIFxuDQorLy8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5k
IGFnZ3JlZ2F0aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJh
Y3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KKy8vLyAgICAg
ICAgICB0aGUgY2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVh
Y2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24N
CisvLy8gICAgICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWlu
ZGV4ZWQgZWxlbWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBl
cXVhbCBmb3Igb2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAxMDog
TWF0Y2g6IENvbXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBc
YSBBIGFuZA0KKy8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCisvLy8gICAgICAx
MTogU3Vic3RyaW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4g
XG4NCisvLy8gICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9u
ZSdzIGNvbXBsZW1lbnQgb24gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRo
ZSBjb21wYXJpc29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4NCisv
Ly8gICAgICAwMTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAgICAxMDogTm8gZWZm
ZWN0LiBcbg0KKy8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMg
d2l0aCBhbiBpbmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAgICAgdG8gdGhlIHNp
emUgb2YgXGEgQSBvciBcYSBCLiBcbg0KKy8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGxl
bmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEgaXMgbGVzcyB0aGFuIHRoZQ0KKy8vLyAgICBtYXhp
bXVtLCBvdGhlcndpc2UsIHJldHVybnMgMC4NCisjZGVmaW5lIF9tbV9jbXBpc3RycyhBLCBCLCBN
KSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaXMxMjgoKF9fdjE2cWkpKF9fbTEy
OGkpKEEpLCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjE2cWkp
KF9fbTEyOGkpKEIpLCAoaW50KShNKSkNCisNCisvLy8gVXNlcyB0aGUgaW1tZWRpYXRlIG9wZXJh
bmQgXGEgTSB0byBwZXJmb3JtIGEgY29tcGFyaXNvbiBvZiBzdHJpbmcNCisvLy8gICAgZGF0YSB3
aXRoIGltcGxpY2l0bHkgZGVmaW5lZCBsZW5ndGhzIHRoYXQgaXMgY29udGFpbmVkIGluIHNvdXJj
ZSBvcGVyYW5kcw0KKy8vLyAgICBcYSBBIGFuZCBcYSBCLiBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0
aCBvZiB0aGUgc3RyaW5nIGluIFxhIEIgaXMgbGVzcyB0aGFuDQorLy8vICAgIHRoZSBtYXhpbXVt
LCBvdGhlcndpc2UsIHJldHVybnMgMC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQgX21tX2NtcGlzdHJ6KF9fbTEyOGkgQSwg
X19tMTI4aSBCLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBJU1RSSSAvIFBDTVBJU1RSSSA8
L2M+DQorLy8vIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIEINCisvLy8gICAgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMg
dG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIDgtYml0
IGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUg
Ynl0ZXMgb3INCisvLy8gICAgd29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVy
Zm9ybS4gXG4NCisvLy8gICAgQml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1h
dC4gXG4NCisvLy8gICAgICAwMDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAwMTog
OCB1bnNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisv
Ly8gICAgICAxMTogOCBzaWduZWQgd29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJt
aW5lIGNvbXBhcmlzb24gdHlwZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAg
IDAwOiBTdWJzZXQ6IEVhY2ggY2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFs
aXR5IHdpdGggYWxsDQorLy8vICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQor
Ly8vICAgICAgMDE6IFJhbmdlczogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0
byBcYSBBLiBUaGUgY29tcGFyaXNvbg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgZm9yIGV2ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAg
ICAgICBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBc
YSBBLiBcbg0KKy8vLyAgICAgIDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVz
cG9uZGluZyBjaGFyYWN0ZXJzIGluIFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVx
dWFsaXR5LiBcbg0KKy8vLyAgICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJz
dHJpbmcgbWF0Y2hlcyBvZiBcYSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUg
d2hldGhlciB0byBwZXJmb3JtIGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAg
ICAgICAgICAgICAgIG1hc2sgb2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAg
ICAwMDogTm8gZWZmZWN0LiBcbg0KKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBc
bg0KKy8vLyAgICAgIDEwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUg
Yml0IG1hc2sgb25seSBmb3IgYml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0K
Ky8vLyAgICAgICAgICB0byB0aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuDQorLy8vIFxyZXR1cm5z
IFJldHVybnMgMSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQiBpcyBsZXNzIHRo
YW4gdGhlDQorLy8vICAgIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAwLg0KKyNkZWZpbmUg
X21tX2NtcGlzdHJ6KEEsIEIsIE0pIFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGlzdHJp
ejEyOCgoX192MTZxaSkoX19tMTI4aSkoQSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKE0pKQ0KKw0KKy8vLyBVc2Vz
IHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJpc29uIG9mIHN0
cmluZw0KKy8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0aHMgdGhhdCBp
cyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8vICAgIFxhIEEgYW5kIFxhIEIuIFJl
dHVybnMgMSBpZiB0aGUgYml0IG1hc2sgaXMgemVybyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUNCisv
Ly8gICAgc3RyaW5nIGluIFxhIEIgaXMgdGhlIG1heGltdW0sIG90aGVyd2lzZSwgcmV0dXJucyAw
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2Rl
DQorLy8vIGludCBfbW1fY21wZXN0cmEoX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50
IExCLCBjb25zdCBpbnQgTSk7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+DQor
Ly8vIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQg
aW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBi
ZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIExBDQorLy8vICAgIEFuIGludGVnZXIg
dGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuDQorLy8vIFxw
YXJhbSBCDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFy
YW0gTEINCisvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRo
ZSBzdHJpbmcgaW4gXGEgQi4NCisvLy8gXHBhcmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRp
YXRlIG9wZXJhbmQgc3BlY2lmeWluZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBv
cg0KKy8vLyAgICB3b3JkcyBhbmQgdGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBc
bg0KKy8vLyAgICBCaXRzIFsxOjBdOiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0K
Ky8vLyAgICAgIDAwOiAxNiB1bnNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDAxOiA4IHVuc2ln
bmVkIHdvcmRzIFxuDQorLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAg
IDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29t
cGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQorLy8vICAgICAgMDA6IFN1
YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0
aCBhbGwNCisvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCisvLy8gICAg
ICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEu
IFRoZSBjb21wYXJpc29uDQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBl
cXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQorLy8vICAgICAgICAgIGFu
ZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxu
DQorLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5n
IGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHku
IFxuDQorLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBt
YXRjaGVzIG9mIFxhIEEuIFxuDQorLy8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVy
IHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8gICAgICAgICAg
ICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAgICAgIDAwOiBO
byBlZmZlY3QuIFxuDQorLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQorLy8v
ICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFz
ayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQorLy8vICAg
ICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4NCisvLy8gXHJldHVybnMgUmV0dXJu
cyAxIGlmIHRoZSBiaXQgbWFzayBpcyB6ZXJvIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcg
aW4NCisvLy8gICAgXGEgQiBpcyB0aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQor
I2RlZmluZSBfbW1fY21wZXN0cmEoQSwgTEEsIEIsIExCLCBNKSBcDQorICAoaW50KV9fYnVpbHRp
bl9pYTMyX3BjbXBlc3RyaWExMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwN
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSko
QiksIChpbnQpKExCKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp
bnQpKE0pKQ0KKw0KKy8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZv
cm0gYSBjb21wYXJpc29uIG9mIHN0cmluZw0KKy8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBk
ZWZpbmVkIGxlbmd0aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8v
ICAgIFxhIEEgYW5kIFxhIEIuIFJldHVybnMgMSBpZiB0aGUgcmVzdWx0aW5nIG1hc2sgaXMgbm9u
LXplcm8sIG90aGVyd2lzZSwNCisvLy8gICAgcmV0dXJucyAwLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxjb2RlDQorLy8vIGludCBfbW1fY21wZXN0
cmMoX19tMTI4aSBBLCBpbnQgTEEsIF9fbTEyOGkgQiwgaW50IExCLCBjb25zdCBpbnQgTSk7DQor
Ly8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gVlBDTVBFU1RSSSAvIFBDTVBFU1RSSSA8L2M+DQorLy8vIGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gQQ0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4N
CisvLy8gXHBhcmFtIExBDQorLy8vICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxl
bmd0aCBvZiB0aGUgc3RyaW5nIGluIFxhIEEuDQorLy8vIFxwYXJhbSBCDQorLy8vICAgIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
IHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTEINCisvLy8gICAgQW4gaW50
ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQi4NCisv
Ly8gXHBhcmFtIE0NCisvLy8gICAgQW4gOC1iaXQgaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWlu
ZyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGFyZSBieXRlcyBvcg0KKy8vLyAgICB3b3JkcyBhbmQg
dGhlIHR5cGUgb2YgY29tcGFyaXNvbiB0byBwZXJmb3JtLiBcbg0KKy8vLyAgICBCaXRzIFsxOjBd
OiBEZXRlcm1pbmUgc291cmNlIGRhdGEgZm9ybWF0LiBcbg0KKy8vLyAgICAgIDAwOiAxNiB1bnNp
Z25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDAxOiA4IHVuc2lnbmVkIHdvcmRzIFxuDQorLy8vICAg
ICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0KKy8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBc
bg0KKy8vLyAgICBCaXRzIFszOjJdOiBEZXRlcm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dy
ZWdhdGlvbiBtZXRob2QuIFxuDQorLy8vICAgICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIg
aW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1YWxpdHkgd2l0aCBhbGwNCisvLy8gICAgICAgICAg
dGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNo
YXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVkIHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQorLy8v
ICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVk
IGVsZW1lbnRzIGluIFxhIEEsDQorLy8vICAgICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwg
Zm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMTA6IE1hdGNo
OiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBh
bmQNCisvLy8gICAgICAgICAgXGEgQiBmb3IgZXF1YWxpdHkuIFxuDQorLy8vICAgICAgMTE6IFN1
YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQor
Ly8vICAgIEJpdHMgWzU6NF06IERldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBj
b21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8gICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAgICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8vICAg
ICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2suIFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVjdC4g
XG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRoZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGgg
YW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFsDQorLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9m
IFxhIEEgb3IgXGEgQi4gXG4NCisvLy8gXHJldHVybnMgUmV0dXJucyAxIGlmIHRoZSByZXN1bHRp
bmcgbWFzayBpcyBub24temVybywgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQorI2RlZmluZSBfbW1f
Y21wZXN0cmMoQSwgTEEsIEIsIExCLCBNKSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3BjbXBl
c3RyaWMxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChpbnQpKExC
KSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0pKQ0KKw0K
Ky8vLyBVc2VzIHRoZSBpbW1lZGlhdGUgb3BlcmFuZCBcYSBNIHRvIHBlcmZvcm0gYSBjb21wYXJp
c29uIG9mIHN0cmluZw0KKy8vLyAgICBkYXRhIHdpdGggZXhwbGljaXRseSBkZWZpbmVkIGxlbmd0
aHMgdGhhdCBpcyBjb250YWluZWQgaW4gc291cmNlIG9wZXJhbmRzDQorLy8vICAgIFxhIEEgYW5k
IFxhIEIuIFJldHVybnMgYml0IDAgb2YgdGhlIHJlc3VsdGluZyBiaXQgbWFzay4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0KKy8vLyBpbnQg
X21tX2NtcGVzdHJvKF9fbTEyOGkgQSwgaW50IExBLCBfX20xMjhpIEIsIGludCBMQiwgY29uc3Qg
aW50IE0pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZQQ01QRVNUUkkgLyBQQ01QRVNUUkkgPC9jPg0KKy8vLyBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIEENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVj
dG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAg
Y29tcGFyZWQuDQorLy8vIFxwYXJhbSBMQQ0KKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lm
aWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBLg0KKy8vLyBccGFyYW0gQg0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcyB0byBiZQ0KKy8vLyAgICBjb21wYXJlZC4NCisvLy8gXHBhcmFtIExCDQorLy8v
ICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlu
IFxhIEIuDQorLy8vIFxwYXJhbSBNDQorLy8vICAgIEFuIDgtYml0IGltbWVkaWF0ZSBvcGVyYW5k
IHNwZWNpZnlpbmcgd2hldGhlciB0aGUgY2hhcmFjdGVycyBhcmUgYnl0ZXMgb3INCisvLy8gICAg
d29yZHMgYW5kIHRoZSB0eXBlIG9mIGNvbXBhcmlzb24gdG8gcGVyZm9ybS4gXG4NCisvLy8gICAg
Qml0cyBbMTowXTogRGV0ZXJtaW5lIHNvdXJjZSBkYXRhIGZvcm1hdC4gXG4NCisvLy8gICAgICAw
MDogMTYgdW5zaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAwMTogOCB1bnNpZ25lZCB3b3JkcyBc
bg0KKy8vLyAgICAgIDEwOiAxNiBzaWduZWQgYnl0ZXMgXG4NCisvLy8gICAgICAxMTogOCBzaWdu
ZWQgd29yZHMgXG4NCisvLy8gICAgQml0cyBbMzoyXTogRGV0ZXJtaW5lIGNvbXBhcmlzb24gdHlw
ZSBhbmQgYWdncmVnYXRpb24gbWV0aG9kLiBcbg0KKy8vLyAgICAgIDAwOiBTdWJzZXQ6IEVhY2gg
Y2hhcmFjdGVyIGluIFxhIEIgaXMgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggYWxsDQorLy8v
ICAgICAgICAgIHRoZSBjaGFyYWN0ZXJzIGluIFxhIEEuIFxuDQorLy8vICAgICAgMDE6IFJhbmdl
czogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCB0byBcYSBBLiBUaGUgY29tcGFy
aXNvbg0KKy8vLyAgICAgICAgICBiYXNpcyBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgZm9yIGV2
ZW4taW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLA0KKy8vLyAgICAgICAgICBhbmQgbGVzcyB0aGFu
IG9yIGVxdWFsIGZvciBvZGQtaW5kZXhlZCBlbGVtZW50cyBpbiBcYSBBLiBcbg0KKy8vLyAgICAg
IDEwOiBNYXRjaDogQ29tcGFyZSBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJz
IGluIFxhIEEgYW5kDQorLy8vICAgICAgICAgIFxhIEIgZm9yIGVxdWFsaXR5LiBcbg0KKy8vLyAg
ICAgIDExOiBTdWJzdHJpbmc6IFNlYXJjaCBcYSBCIGZvciBzdWJzdHJpbmcgbWF0Y2hlcyBvZiBc
YSBBLiBcbg0KKy8vLyAgICBCaXRzIFs1OjRdOiBEZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3Jt
IGEgb25lJ3MgY29tcGxlbWVudCBvbiB0aGUgYml0DQorLy8vICAgICAgICAgICAgICAgIG1hc2sg
b2YgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gXG4NCisvLy8gICAgICAwMDogTm8gZWZmZWN0LiBc
bg0KKy8vLyAgICAgIDAxOiBOZWdhdGUgdGhlIGJpdCBtYXNrLiBcbg0KKy8vLyAgICAgIDEwOiBO
byBlZmZlY3QuIFxuDQorLy8vICAgICAgMTE6IE5lZ2F0ZSB0aGUgYml0IG1hc2sgb25seSBmb3Ig
Yml0cyB3aXRoIGFuIGluZGV4IGxlc3MgdGhhbiBvciBlcXVhbA0KKy8vLyAgICAgICAgICB0byB0
aGUgc2l6ZSBvZiBcYSBBIG9yIFxhIEIuDQorLy8vIFxyZXR1cm5zIFJldHVybnMgYml0IDAgb2Yg
dGhlIHJlc3VsdGluZyBiaXQgbWFzay4NCisjZGVmaW5lIF9tbV9jbXBlc3RybyhBLCBMQSwgQiwg
TEIsIE0pIFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJpbzEyOCgoX192MTZxaSko
X19tMTI4aSkoQSksIChpbnQpKExBKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQorDQorLy8vIFVzZXMgdGhlIGltbWVk
aWF0ZSBvcGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQorLy8v
ICAgIGRhdGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5l
ZCBpbiBzb3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlm
IHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBBIGlzIGxlc3MgdGhhbg0KKy8vLyAgICB0
aGUgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9jbXBlc3Rycyhf
X20xMjhpIEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsNCisvLy8g
XGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUENNUEVTVFJJIC8gUENNUEVTVFJJIDwvYz4NCisvLy8gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBBDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5n
IG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8v
LyBccGFyYW0gTEENCisvLy8gICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3Ro
IG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4NCisvLy8gXHBhcmFtIEINCisvLy8gICAgQSAxMjgtYml0
IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8g
YmUNCisvLy8gICAgY29tcGFyZWQuDQorLy8vIFxwYXJhbSBMQg0KKy8vLyAgICBBbiBpbnRlZ2Vy
IHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLg0KKy8vLyBc
cGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJpdCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdo
ZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJlIGJ5dGVzIG9yDQorLy8vICAgIHdvcmRzIGFuZCB0aGUg
dHlwZSBvZiBjb21wYXJpc29uIHRvIHBlcmZvcm0uIFxuDQorLy8vICAgIEJpdHMgWzE6MF06IERl
dGVybWluZSBzb3VyY2UgZGF0YSBmb3JtYXQuIFxuDQorLy8vICAgICAgMDA6IDE2IHVuc2lnbmVk
IGJ5dGVzIFxuDQorLy8vICAgICAgMDE6IDggdW5zaWduZWQgd29yZHMgXG4NCisvLy8gICAgICAx
MDogMTYgc2lnbmVkIGJ5dGVzIFxuDQorLy8vICAgICAgMTE6IDggc2lnbmVkIHdvcmRzIFxuDQor
Ly8vICAgIEJpdHMgWzM6Ml06IERldGVybWluZSBjb21wYXJpc29uIHR5cGUgYW5kIGFnZ3JlZ2F0
aW9uIG1ldGhvZC4gXG4NCisvLy8gICAgICAwMDogU3Vic2V0OiBFYWNoIGNoYXJhY3RlciBpbiBc
YSBCIGlzIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIGFsbA0KKy8vLyAgICAgICAgICB0aGUg
Y2hhcmFjdGVycyBpbiBcYSBBLiBcbg0KKy8vLyAgICAgIDAxOiBSYW5nZXM6IEVhY2ggY2hhcmFj
dGVyIGluIFxhIEIgaXMgY29tcGFyZWQgdG8gXGEgQS4gVGhlIGNvbXBhcmlzb24NCisvLy8gICAg
ICAgICAgYmFzaXMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGZvciBldmVuLWluZGV4ZWQgZWxl
bWVudHMgaW4gXGEgQSwNCisvLy8gICAgICAgICAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCBmb3Ig
b2RkLWluZGV4ZWQgZWxlbWVudHMgaW4gXGEgQS4gXG4NCisvLy8gICAgICAxMDogTWF0Y2g6IENv
bXBhcmUgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBpbiBcYSBBIGFuZA0K
Ky8vLyAgICAgICAgICBcYSBCIGZvciBlcXVhbGl0eS4gXG4NCisvLy8gICAgICAxMTogU3Vic3Ry
aW5nOiBTZWFyY2ggXGEgQiBmb3Igc3Vic3RyaW5nIG1hdGNoZXMgb2YgXGEgQS4gXG4NCisvLy8g
ICAgQml0cyBbNTo0XTogRGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBhIG9uZSdzIGNvbXBs
ZW1lbnQgaW4gdGhlIGJpdA0KKy8vLyAgICAgICAgICAgICAgICBtYXNrIG9mIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMuIFxuDQorLy8vICAgICAgMDA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAw
MTogTmVnYXRlIHRoZSBiaXQgbWFzay4gXG4NCisvLy8gICAgICAxMDogTm8gZWZmZWN0LiBcbg0K
Ky8vLyAgICAgIDExOiBOZWdhdGUgdGhlIGJpdCBtYXNrIG9ubHkgZm9yIGJpdHMgd2l0aCBhbiBp
bmRleCBsZXNzIHRoYW4gb3IgZXF1YWwNCisvLy8gICAgICAgICAgdG8gdGhlIHNpemUgb2YgXGEg
QSBvciBcYSBCLiBcbg0KKy8vLyBccmV0dXJucyBSZXR1cm5zIDEgaWYgdGhlIGxlbmd0aCBvZiB0
aGUgc3RyaW5nIGluIFxhIEEgaXMgbGVzcyB0aGFuIHRoZQ0KKy8vLyAgICBtYXhpbXVtLCBvdGhl
cndpc2UsIHJldHVybnMgMC4NCisjZGVmaW5lIF9tbV9jbXBlc3RycyhBLCBMQSwgQiwgTEIsIE0p
IFwNCisgIChpbnQpX19idWlsdGluX2lhMzJfcGNtcGVzdHJpczEyOCgoX192MTZxaSkoX19tMTI4
aSkoQSksIChpbnQpKExBKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChfX3YxNnFpKShfX20xMjhpKShCKSwgKGludCkoTEIpLCBcDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGludCkoTSkpDQorDQorLy8vIFVzZXMgdGhlIGltbWVkaWF0ZSBv
cGVyYW5kIFxhIE0gdG8gcGVyZm9ybSBhIGNvbXBhcmlzb24gb2Ygc3RyaW5nDQorLy8vICAgIGRh
dGEgd2l0aCBleHBsaWNpdGx5IGRlZmluZWQgbGVuZ3RocyB0aGF0IGlzIGNvbnRhaW5lZCBpbiBz
b3VyY2Ugb3BlcmFuZHMNCisvLy8gICAgXGEgQSBhbmQgXGEgQi4gUmV0dXJucyAxIGlmIHRoZSBs
ZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlzIGxlc3MgdGhhbg0KKy8vLyAgICB0aGUgbWF4
aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gaW50IF9tbV9jbXBlc3RyeihfX20xMjhp
IEEsIGludCBMQSwgX19tMTI4aSBCLCBpbnQgTEIsIGNvbnN0IGludCBNKTsNCisvLy8gXGVuZGNv
ZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWUENN
UEVTVFJJIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBBDQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJh
bmRzIHRvIGJlDQorLy8vICAgIGNvbXBhcmVkLg0KKy8vLyBccGFyYW0gTEENCisvLy8gICAgQW4g
aW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gXGEgQS4N
CisvLy8gXHBhcmFtIEINCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMgdG8gYmUNCisvLy8gICAgY29tcGFyZWQuDQor
Ly8vIFxwYXJhbSBMQg0KKy8vLyAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5n
dGggb2YgdGhlIHN0cmluZyBpbiBcYSBCLg0KKy8vLyBccGFyYW0gTQ0KKy8vLyAgICBBbiA4LWJp
dCBpbW1lZGlhdGUgb3BlcmFuZCBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGNoYXJhY3RlcnMgYXJl
IGJ5dGVzIG9yDQorLy8vICAgIHdvcmRzIGFuZCB0aGUgdHlwZSBvZiBjb21wYXJpc29uIHRvIHBl
cmZvcm0uIFxuDQorLy8vICAgIEJpdHMgWzE6MF06IERldGVybWluZSBzb3VyY2UgZGF0YSBmb3Jt
YXQuIFxuDQorLy8vICAgICAgMDA6IDE2IHVuc2lnbmVkIGJ5dGVzICBcbg0KKy8vLyAgICAgIDAx
OiA4IHVuc2lnbmVkIHdvcmRzIFxuDQorLy8vICAgICAgMTA6IDE2IHNpZ25lZCBieXRlcyBcbg0K
Ky8vLyAgICAgIDExOiA4IHNpZ25lZCB3b3JkcyBcbg0KKy8vLyAgICBCaXRzIFszOjJdOiBEZXRl
cm1pbmUgY29tcGFyaXNvbiB0eXBlIGFuZCBhZ2dyZWdhdGlvbiBtZXRob2QuIFxuDQorLy8vICAg
ICAgMDA6IFN1YnNldDogRWFjaCBjaGFyYWN0ZXIgaW4gXGEgQiBpcyBjb21wYXJlZCBmb3IgZXF1
YWxpdHkgd2l0aCBhbGwNCisvLy8gICAgICAgICAgdGhlIGNoYXJhY3RlcnMgaW4gXGEgQS4gXG4N
CisvLy8gICAgICAwMTogUmFuZ2VzOiBFYWNoIGNoYXJhY3RlciBpbiBcYSBCIGlzIGNvbXBhcmVk
IHRvIFxhIEEuIFRoZSBjb21wYXJpc29uDQorLy8vICAgICAgICAgIGJhc2lzIGlzIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCBmb3IgZXZlbi1pbmRleGVkIGVsZW1lbnRzIGluIFxhIEEsDQorLy8vICAg
ICAgICAgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgZm9yIG9kZC1pbmRleGVkIGVsZW1lbnRzIGlu
IFxhIEEuIFxuDQorLy8vICAgICAgMTA6IE1hdGNoOiBDb21wYXJlIGVhY2ggcGFpciBvZiBjb3Jy
ZXNwb25kaW5nIGNoYXJhY3RlcnMgaW4gXGEgQSBhbmQNCisvLy8gICAgICAgICAgXGEgQiBmb3Ig
ZXF1YWxpdHkuIFxuDQorLy8vICAgICAgMTE6IFN1YnN0cmluZzogU2VhcmNoIFxhIEIgZm9yIHN1
YnN0cmluZyBtYXRjaGVzIG9mIFxhIEEuIFxuDQorLy8vICAgIEJpdHMgWzU6NF06IERldGVybWlu
ZSB3aGV0aGVyIHRvIHBlcmZvcm0gYSBvbmUncyBjb21wbGVtZW50IG9uIHRoZSBiaXQNCisvLy8g
ICAgICAgICAgICAgICAgbWFzayBvZiB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBcbg0KKy8vLyAg
ICAgIDAwOiBObyBlZmZlY3QuIFxuDQorLy8vICAgICAgMDE6IE5lZ2F0ZSB0aGUgYml0IG1hc2su
IFxuDQorLy8vICAgICAgMTA6IE5vIGVmZmVjdC4gXG4NCisvLy8gICAgICAxMTogTmVnYXRlIHRo
ZSBiaXQgbWFzayBvbmx5IGZvciBiaXRzIHdpdGggYW4gaW5kZXggbGVzcyB0aGFuIG9yIGVxdWFs
DQorLy8vICAgICAgICAgIHRvIHRoZSBzaXplIG9mIFxhIEEgb3IgXGEgQi4NCisvLy8gXHJldHVy
bnMgUmV0dXJucyAxIGlmIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiBcYSBCIGlzIGxlc3Mg
dGhhbiB0aGUNCisvLy8gICAgbWF4aW11bSwgb3RoZXJ3aXNlLCByZXR1cm5zIDAuDQorI2RlZmlu
ZSBfbW1fY21wZXN0cnooQSwgTEEsIEIsIExCLCBNKSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMy
X3BjbXBlc3RyaXoxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKEEpLCAoaW50KShMQSksIFwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoQiksIChp
bnQpKExCKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKE0p
KQ0KKw0KKy8qIFNTRTQuMiBDb21wYXJlIFBhY2tlZCBEYXRhIC0tIEdyZWF0ZXIgVGhhbi4gICov
DQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgNjQtYml0IHZhbHVlcyBv
ZiB0aGUgMTI4LWJpdA0KKy8vLyAgICBpbnRlZ2VyIHZlY3RvcnMgdG8gZGV0ZXJtaW5lIGlmIHRo
ZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IG9wZXJhbmQgYXJlDQorLy8vICAgIGdyZWF0ZXIgdGhhbiB0
aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWUENNUEdUUSAvIFBDTVBHVFEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFt
IF9fVjENCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yLg0KKy8vLyBccGFyYW0gX19W
Mg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZ3Rf
ZXBpNjQoX19tMTI4aSBfX1YxLCBfX20xMjhpIF9fVjIpDQorew0KKyAgcmV0dXJuIChfX20xMjhp
KSgoX192MmRpKV9fVjEgPiAoX192MmRpKV9fVjIpOw0KK30NCisNCisvKiBTU0U0LjIgQWNjdW11
bGF0ZSBDUkMzMi4gICovDQorLy8vIEFkZHMgdGhlIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0
byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiB0aGUNCisvLy8gICAgdW5zaWduZWQgY2hhciBvcGVy
YW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJCIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX0MNCisvLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciBv
cGVyYW5kIHRvIGFkZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiBvcGVyYW5kDQorLy8vICAg
IFxhICBfX0QuDQorLy8vIFxwYXJhbSBfX0QNCisvLy8gICAgQW4gdW5zaWduZWQgOC1iaXQgaW50
ZWdlciBvcGVyYW5kIHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4NCisvLy8g
XHJldHVybnMgVGhlIHJlc3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0z
MkMgY2hlY2tzdW0gb2YNCisvLy8gICAgb3BlcmFuZCBcYSBfX0QuDQorc3RhdGljIF9faW5saW5l
X18gdW5zaWduZWQgaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jcmMzMl91OCh1bnNpZ25l
ZCBpbnQgX19DLCB1bnNpZ25lZCBjaGFyIF9fRCkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lh
MzJfY3JjMzJxaShfX0MsIF9fRCk7DQorfQ0KKw0KKy8vLyBBZGRzIHRoZSB1bnNpZ25lZCBpbnRl
Z2VyIG9wZXJhbmQgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0gb2YgdGhlDQorLy8vICAgIHVuc2ln
bmVkIHNob3J0IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDUkMzMlcg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fQw0KKy8vLyAgICBBbiB1bnNp
Z25lZCBpbnRlZ2VyIG9wZXJhbmQgdG8gYWRkIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mIG9w
ZXJhbmQNCisvLy8gICAgXGEgX19ELg0KKy8vLyBccGFyYW0gX19EDQorLy8vICAgIEFuIHVuc2ln
bmVkIDE2LWJpdCBpbnRlZ2VyIG9wZXJhbmQgdXNlZCB0byBjb21wdXRlIHRoZSBDUkMtMzJDIGNo
ZWNrc3VtLg0KKy8vLyBccmV0dXJucyBUaGUgcmVzdWx0IG9mIGFkZGluZyBvcGVyYW5kIFxhIF9f
QyB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZg0KKy8vLyAgICBvcGVyYW5kIFxhIF9fRC4NCitz
dGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Ny
YzMyX3UxNih1bnNpZ25lZCBpbnQgX19DLCB1bnNpZ25lZCBzaG9ydCBfX0QpDQorew0KKyAgcmV0
dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMyaGkoX19DLCBfX0QpOw0KK30NCisNCisvLy8gQWRkcyB0
aGUgZmlyc3QgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3Vt
IG9mDQorLy8vICAgIHRoZSBzZWNvbmQgdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1JDMzJMIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX0MNCisvLy8gICAgQW4gdW5zaWduZWQgaW50ZWdlciBvcGVyYW5kIHRvIGFk
ZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiBvcGVyYW5kDQorLy8vICAgIFxhIF9fRC4NCisv
Ly8gXHBhcmFtIF9fRA0KKy8vLyAgICBBbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlciBvcGVyYW5k
IHVzZWQgdG8gY29tcHV0ZSB0aGUgQ1JDLTMyQyBjaGVja3N1bS4NCisvLy8gXHJldHVybnMgVGhl
IHJlc3VsdCBvZiBhZGRpbmcgb3BlcmFuZCBcYSBfX0MgdG8gdGhlIENSQy0zMkMgY2hlY2tzdW0g
b2YNCisvLy8gICAgb3BlcmFuZCBcYSBfX0QuDQorc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQg
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jcmMzMl91MzIodW5zaWduZWQgaW50IF9fQywg
dW5zaWduZWQgaW50IF9fRCkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY3JjMzJzaShf
X0MsIF9fRCk7DQorfQ0KKw0KKyNpZmRlZiBfX3g4Nl82NF9fDQorLy8vIEFkZHMgdGhlIHVuc2ln
bmVkIGludGVnZXIgb3BlcmFuZCB0byB0aGUgQ1JDLTMyQyBjaGVja3N1bSBvZiB0aGUNCisvLy8g
ICAgdW5zaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IENSQzMyUSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19D
DQorLy8vICAgIEFuIHVuc2lnbmVkIGludGVnZXIgb3BlcmFuZCB0byBhZGQgdG8gdGhlIENSQy0z
MkMgY2hlY2tzdW0gb2Ygb3BlcmFuZA0KKy8vLyAgICBcYSBfX0QuDQorLy8vIFxwYXJhbSBfX0QN
CisvLy8gICAgQW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgb3BlcmFuZCB1c2VkIHRvIGNvbXB1
dGUgdGhlIENSQy0zMkMgY2hlY2tzdW0uDQorLy8vIFxyZXR1cm5zIFRoZSByZXN1bHQgb2YgYWRk
aW5nIG9wZXJhbmQgXGEgX19DIHRvIHRoZSBDUkMtMzJDIGNoZWNrc3VtIG9mDQorLy8vICAgIG9w
ZXJhbmQgXGEgX19ELg0KK3N0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgbG9uZyBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fY3JjMzJfdTY0KHVuc2lnbmVkIGxvbmcgbG9uZyBfX0MsIHVu
c2lnbmVkIGxvbmcgbG9uZyBfX0QpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NyYzMy
ZGkoX19DLCBfX0QpOw0KK30NCisjZW5kaWYgLyogX194ODZfNjRfXyAqLw0KKw0KKyN1bmRlZiBf
X0RFRkFVTFRfRk5fQVRUUlMNCisNCisjaW5jbHVkZSA8cG9wY250aW50cmluLmg+DQorDQorI2Vu
ZGlmIC8qIF9fU01NSU5UUklOX0ggKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RtbWludHJpbi5o
IGIvaW5jbHVkZS90bW1pbnRyaW4uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw
MDAuLjdhOTQwOTYNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUvdG1taW50cmluLmgNCkBA
IC0wLDAgKzEsNzkwIEBADQorLyo9PT0tLS0tIHRtbWludHJpbi5oIC0gU1NTRTMgaW50cmluc2lj
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PQ0KKyAqDQorICogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsDQorICogaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp
YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl
LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCisgKiBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAq
DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv
cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICog
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQorICogQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
Ug0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTg0KKyAqIFRI
RSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0NCisgKi8NCisNCisjaWZu
ZGVmIF9fVE1NSU5UUklOX0gNCisjZGVmaW5lIF9fVE1NSU5UUklOX0gNCisNCisjaW5jbHVkZSA8
cG1taW50cmluLmg+DQorDQorLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRo
ZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLw0KKyNpZmRlZiBfX0dOVUNfXw0KKyNkZWZpbmUg
X19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5
c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9f
YXJ0aWZpY2lhbF9fKSkNCisjZWxzZQ0KKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0
cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3Nz
ZTMiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNjQpKSkNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9B
VFRSU19NTVggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBf
X3RhcmdldF9fKCJtbXgsc3NzZTMiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNjQpKSkNCisjZW5k
aWYNCisNCisvLy8gQ29tcHV0ZXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIGVhY2ggb2YgdGhlIHBh
Y2tlZCA4LWJpdCBzaWduZWQNCisvLy8gICAgaW50ZWdlcnMgaW4gdGhlIHNvdXJjZSBvcGVyYW5k
IGFuZCBzdG9yZXMgdGhlIDgtYml0IHVuc2lnbmVkIGludGVnZXINCisvLy8gICAgcmVzdWx0cyBp
biB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBBQlNCIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IHZlY3Rv
ciBvZiBbOCB4IGk4XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29u
dGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICBlbGVtZW50cyBpbiB0
aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNf
TU1YDQorX21tX2Fic19waTgoX19tNjQgX19hKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1
aWx0aW5faWEzMl9wYWJzYigoX192OHFpKV9fYSk7DQorfQ0KKw0KKy8vLyBDb21wdXRlcyB0aGUg
YWJzb2x1dGUgdmFsdWUgb2YgZWFjaCBvZiB0aGUgcGFja2VkIDgtYml0IHNpZ25lZA0KKy8vLyAg
ICBpbnRlZ2VycyBpbiB0aGUgc291cmNlIG9wZXJhbmQgYW5kIHN0b3JlcyB0aGUgOC1iaXQgdW5z
aWduZWQgaW50ZWdlcg0KKy8vLyAgICByZXN1bHRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBBQlNCIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzE2IHggaThdLg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUg
dmFsdWVzIG9mIHRoZQ0KKy8vLyAgICBlbGVtZW50cyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hYnNfZXBpOChfX20x
MjhpIF9fYSkNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWJzYjEy
OCgoX192MTZxaSlfX2EpOw0KK30NCisNCisvLy8gQ29tcHV0ZXMgdGhlIGFic29sdXRlIHZhbHVl
IG9mIGVhY2ggb2YgdGhlIHBhY2tlZCAxNi1iaXQgc2lnbmVkDQorLy8vICAgIGludGVnZXJzIGlu
IHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdl
cg0KKy8vLyAgICByZXN1bHRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgXGMgUEFCU1cgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XS4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0K
Ky8vLyAgICBlbGVtZW50cyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2Fic19waTE2KF9fbTY0IF9fYSkNCit7DQor
ICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGFic3coKF9fdjRoaSlfX2EpOw0KK30N
CisNCisvLy8gQ29tcHV0ZXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIGVhY2ggb2YgdGhlIHBhY2tl
ZCAxNi1iaXQgc2lnbmVkDQorLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBh
bmQgc3RvcmVzIHRoZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KKy8vLyAgICByZXN1bHRzIGlu
IHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBBQlNXIGlu
c3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3Ig
Y29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICBlbGVtZW50cyBp
biB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV9hYnNfZXBpMTYoX19tMTI4aSBfX2EpDQorew0KKyAgICByZXR1cm4gKF9fbTEy
OGkpX19idWlsdGluX2lhMzJfcGFic3cxMjgoKF9fdjhoaSlfX2EpOw0KK30NCisNCisvLy8gQ29t
cHV0ZXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIGVhY2ggb2YgdGhlIHBhY2tlZCAzMi1iaXQgc2ln
bmVkDQorLy8vICAgIGludGVnZXJzIGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRo
ZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KKy8vLyAgICByZXN1bHRzIGluIHRoZSBkZXN0aW5h
dGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFCU0QgaW5zdHJ1Y3Rpb24uDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMy
XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
YWJzb2x1dGUgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICBlbGVtZW50cyBpbiB0aGUgb3BlcmFuZC4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2Fi
c19waTMyKF9fbTY0IF9fYSkNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJf
cGFic2QoKF9fdjJzaSlfX2EpOw0KK30NCisNCisvLy8gQ29tcHV0ZXMgdGhlIGFic29sdXRlIHZh
bHVlIG9mIGVhY2ggb2YgdGhlIHBhY2tlZCAzMi1iaXQgc2lnbmVkDQorLy8vICAgIGludGVnZXJz
IGluIHRoZSBzb3VyY2Ugb3BlcmFuZCBhbmQgc3RvcmVzIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50
ZWdlcg0KKy8vLyAgICByZXN1bHRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgXGMgVlBBQlNEIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMzJdLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9m
IHRoZQ0KKy8vLyAgICBlbGVtZW50cyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hYnNfZXBpMzIoX19tMTI4aSBfX2Ep
DQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFic2QxMjgoKF9fdjRz
aSlfX2EpOw0KK30NCisNCisvLy8gQ29uY2F0ZW5hdGVzIHRoZSB0d28gMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBvcGVyYW5kcywgYW5kDQorLy8vICAgIHJpZ2h0LXNoaWZ0cyB0aGUgcmVzdWx0IGJ5
IHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlhdGUNCisvLy8gICAg
b3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBcY29kZQ0KKy8vLyBfX20xMjhpIF9tbV9hbGlnbnJfZXBpOChfX20xMjhpIGEsIF9fbTEyOGkg
YiwgY29uc3QgaW50IG4pOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEFMSUdOUiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIGENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIGINCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbMTYgeCBpOF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4NCisvLy8gXHBhcmFtIG4NCisvLy8gICAgQW4gaW1tZWRpYXRlIG9wZXJhbmQgc3Bl
Y2lmeWluZyBob3cgbWFueSBieXRlcyB0byByaWdodC1zaGlmdCB0aGUgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5h
dGVkIHJpZ2h0LXNoaWZ0ZWQNCisvLy8gICAgdmFsdWUuDQorI2RlZmluZSBfbW1fYWxpZ25yX2Vw
aTgoYSwgYiwgbikgXA0KKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFsaWducjEyOCgoX192
MTZxaSkoX19tMTI4aSkoYSksIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAobikpDQorDQorLy8vIENvbmNhdGVuYXRlcyB0aGUg
dHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kcywgYW5kIHJpZ2h0LXNoaWZ0cw0KKy8v
LyAgICB0aGUgcmVzdWx0IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBp
bW1lZGlhdGUgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0K
Ky8vLw0KKy8vLyBcY29kZQ0KKy8vLyBfX202NCBfbW1fYWxpZ25yX3BpOChfX202NCBhLCBfX202
NCBiLCBjb25zdCBpbnQgbik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQQUxJR05SIGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzggeCBpOF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIGINCisvLy8gICAgQSA2
NC1iaXQgdmVjdG9yIG9mIFs4IHggaThdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3Bl
cmFuZHMuDQorLy8vIFxwYXJhbSBuDQorLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNp
ZnlpbmcgaG93IG1hbnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4NCisvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVk
IHJpZ2h0LXNoaWZ0ZWQNCisvLy8gICAgdmFsdWUuDQorI2RlZmluZSBfbW1fYWxpZ25yX3BpOChh
LCBiLCBuKSBcDQorICAoX19tNjQpX19idWlsdGluX2lhMzJfcGFsaWducigoX192OHFpKShfX202
NCkoYSksIChfX3Y4cWkpKF9fbTY0KShiKSwgKG4pKQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgYWRk
cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyIHBhY2tlZA0KKy8v
LyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSBcYyBWUEhBRERXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIHN1bXMgb2YgdGhlIHZhbHVl
cyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlv
bi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgaG9y
aXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBv
ZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZg0KKy8vLyAg
ICBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX2hhZGRfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisg
ICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BoYWRkdzEyOCgoX192OGhpKV9fYSwg
KF9fdjhoaSlfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IGFkZHMgdGhlIGFkamFjZW50
IHBhaXJzIG9mIHZhbHVlcyBjb250YWluZWQgaW4gMiBwYWNrZWQNCisvLy8gICAgMTI4LWJpdCB2
ZWN0b3JzIG9mIFs0IHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBIQURE
RCBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggaTMyXSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRz
LiBUaGUNCisvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBp
biB0aGUgbG93ZXIgYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgc3VtcyBv
ZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQorLy8vICAg
IGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMy
XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHN1bXMgb2YNCisvLy8gICAgYm90aCBvcGVyYW5k
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9o
YWRkX2VwaTMyKF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19t
MTI4aSlfX2J1aWx0aW5faWEzMl9waGFkZGQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsN
Cit9DQorDQorLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1
ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQorLy8vICAgIDY0LWJpdCB2ZWN0b3JzIG9mIFs0IHgg
aTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEhBRERXIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkx
Nl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhv
cml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMg
b2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
NjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBz
dG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8v
LyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhv
cml6b250YWwgc3VtcyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1faGFkZF9waTE2KF9fbTY0IF9f
YSwgX19tNjQgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9waGFk
ZHcoKF9fdjRoaSlfX2EsIChfX3Y0aGkpX19iKTsNCit9DQorDQorLy8vIEhvcml6b250YWxseSBh
ZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQor
Ly8vICAgIDY0LWJpdCB2ZWN0b3JzIG9mIFsyIHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgXGMgUEhBREREIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgc3VtcyBvZiB0aGUgdmFsdWVz
IGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9u
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6
b250YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2Yg
dGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCB2ZWN0b3Ig
b2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc3VtcyBvZiBib3RoDQorLy8v
ICAgIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRS
U19NTVgNCitfbW1faGFkZF9waTMyKF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgICAgcmV0
dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9waGFkZGQoKF9fdjJzaSlfX2EsIChfX3Yyc2kpX19i
KTsNCit9DQorDQorLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2
YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBb
OCB4IGkxNl0uIFBvc2l0aXZlIHN1bXMgZ3JlYXRlciB0aGFuIDB4N0ZGRiBhcmUNCisvLy8gICAg
c2F0dXJhdGVkIHRvIDB4N0ZGRi4gTmVnYXRpdmUgc3VtcyBsZXNzIHRoYW4gMHg4MDAwIGFyZSBz
YXR1cmF0ZWQgdG8NCisvLy8gICAgMHg4MDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBc
YyBWUEhBRERTVyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNl
IG9wZXJhbmRzLiBUaGUNCisvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJl
IHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29u
dGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250
YWwgc3VtcyBvZiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YgdGhl
DQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs4IHggaTE2XSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIHNhdHVyYXRlZA0KKy8vLyAgICBz
dW1zIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFV
TFRfRk5fQVRUUlMNCitfbW1faGFkZHNfZXBpMTYoX19tMTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0K
K3sNCisgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BoYWRkc3cxMjgoKF9fdjho
aSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIEhvcml6b250YWxseSBhZGRzIHRoZSBh
ZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDIgcGFja2VkDQorLy8vICAgIDY0
LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4gUG9zaXRpdmUgc3VtcyBncmVhdGVyIHRoYW4gMHg3
RkZGIGFyZQ0KKy8vLyAgICBzYXR1cmF0ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBzdW1zIGxlc3Mg
dGhhbiAweDgwMDAgYXJlIHNhdHVyYXRlZCB0bw0KKy8vLyAgICAweDgwMDAuDQorLy8vDQorLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29y
cmVzcG9uZHMgdG8gdGhlIFxjIFBIQUREU1cgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFs0IHggaTE2XSBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgaG9yaXpvbnRhbCBzdW1zIG9m
IHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbG93ZXIgYml0cyBvZiB0aGUNCisvLy8gICAg
ZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9m
IFs0IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCisv
Ly8gICAgaG9yaXpvbnRhbCBzdW1zIG9mIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBw
ZXIgYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgNjQt
Yml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyB0aGUgaG9yaXpvbnRhbCBzYXR1cmF0
ZWQNCisvLy8gICAgc3VtcyBvZiBib3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1faGFkZHNfcGkxNihfX202NCBfX2EsIF9f
bTY0IF9fYikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhhZGRzdygo
X192NGhpKV9fYSwgKF9fdjRoaSlfX2IpOw0KK30NCisNCisvLy8gSG9yaXpvbnRhbGx5IHN1YnRy
YWN0cyB0aGUgYWRqYWNlbnQgcGFpcnMgb2YgdmFsdWVzIGNvbnRhaW5lZCBpbiAyDQorLy8vICAg
IHBhY2tlZCAxMjgtYml0IHZlY3RvcnMgb2YgWzggeCBpMTZdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSBcYyBWUEhTVUJXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBzb3VyY2Ugb3BlcmFuZHMuIFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQorLy8vICAg
IHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBU
aGUNCisvLy8gICAgaG9yaXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJl
IHN0b3JlZCBpbiB0aGUgdXBwZXIgYml0cyBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQor
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhl
IGhvcml6b250YWwgZGlmZmVyZW5jZXMNCisvLy8gICAgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9oc3ViX2VwaTE2
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1
aWx0aW5faWEzMl9waHN1YncxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQor
Ly8vIEhvcml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBj
b250YWluZWQgaW4gMg0KKy8vLyAgICBwYWNrZWQgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggaTMy
XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgVlBIU1VCRCBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggaTMy
XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgaG9y
aXpvbnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUg
bG93ZXIgYml0cyBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGkzMl0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMg
YmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVwcGVyIGJpdHMgb2YNCisvLy8g
ICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggaTMyXSBjb250YWluaW5nIHRoZSBob3Jpem9udGFsIGRpZmZlcmVuY2VzDQorLy8vICAgIG9m
IGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1faHN1Yl9lcGkzMihfX20xMjhpIF9fYSwgX19tMTI4aSBfX2IpDQorew0KKyAg
ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGhzdWJkMTI4KChfX3Y0c2kpX19hLCAo
X192NHNpKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3RzIHRoZSBhZGph
Y2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDINCisvLy8gICAgcGFja2VkIDY0LWJp
dCB2ZWN0b3JzIG9mIFs0IHggaTE2XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJp
bi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUEhT
VUJXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0
IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5k
cy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVz
IGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9u
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6
b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIHVw
cGVyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDY0
LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgZGlmZmVy
ZW5jZXMNCisvLy8gICAgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202
NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2hzdWJfcGkxNihfX202NCBfX2EsIF9fbTY0
IF9fYikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhzdWJ3KChfX3Y0
aGkpX19hLCAoX192NGhpKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkgc3VidHJhY3Rz
IHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDINCisvLy8gICAgcGFj
a2VkIDY0LWJpdCB2ZWN0b3JzIG9mIFsyIHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgXGMgUEhTVUJEIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgNjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJj
ZSBvcGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0
aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRl
c3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBb
MiB4IGkzMl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8v
ICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQg
aW4gdGhlIHVwcGVyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0
dXJucyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250
YWwgZGlmZmVyZW5jZXMNCisvLy8gICAgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2hzdWJfcGkzMihfX202NCBf
X2EsIF9fbTY0IF9fYikNCit7DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGhz
dWJkKChfX3Yyc2kpX19hLCAoX192MnNpKV9fYik7DQorfQ0KKw0KKy8vLyBIb3Jpem9udGFsbHkg
c3VidHJhY3RzIHRoZSBhZGphY2VudCBwYWlycyBvZiB2YWx1ZXMgY29udGFpbmVkIGluIDINCisv
Ly8gICAgcGFja2VkIDEyOC1iaXQgdmVjdG9ycyBvZiBbOCB4IGkxNl0uIFBvc2l0aXZlIGRpZmZl
cmVuY2VzIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICAweDdGRkYgYXJlIHNhdHVyYXRlZCB0byAweDdG
RkYuIE5lZ2F0aXZlIGRpZmZlcmVuY2VzIGxlc3MgdGhhbiAweDgwMDAgYXJlDQorLy8vICAgIHNh
dHVyYXRlZCB0byAweDgwMDAuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFZQSFNVQlNX
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMu
IFRoZQ0KKy8vLyAgICBob3Jpem9udGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHZhbHVlcyBh
cmUgc3RvcmVkIGluIHRoZSBsb3dlciBiaXRzIG9mDQorLy8vICAgIHRoZSBkZXN0aW5hdGlvbi4N
CisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLiBUaGUNCisvLy8gICAgaG9yaXpv
bnRhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgdXBw
ZXIgYml0cyBvZg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzggeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwgc2F0dXJh
dGVkDQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1faHN1YnNfZXBpMTYoX19tMTI4
aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p
YTMyX3Boc3Vic3cxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19iKTsNCit9DQorDQorLy8vIEhv
cml6b250YWxseSBzdWJ0cmFjdHMgdGhlIGFkamFjZW50IHBhaXJzIG9mIHZhbHVlcyBjb250YWlu
ZWQgaW4gMg0KKy8vLyAgICBwYWNrZWQgNjQtYml0IHZlY3RvcnMgb2YgWzQgeCBpMTZdLiBQb3Np
dGl2ZSBkaWZmZXJlbmNlcyBncmVhdGVyIHRoYW4NCisvLy8gICAgMHg3RkZGIGFyZSBzYXR1cmF0
ZWQgdG8gMHg3RkZGLiBOZWdhdGl2ZSBkaWZmZXJlbmNlcyBsZXNzIHRoYW4gMHg4MDAwIGFyZQ0K
Ky8vLyAgICBzYXR1cmF0ZWQgdG8gMHg4MDAwLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBc
YyBQSFNVQlNXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
NjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBv
cGVyYW5kcy4gVGhlDQorLy8vICAgIGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUg
dmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3Rp
bmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4
IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4gVGhlDQorLy8vICAg
IGhvcml6b250YWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdmFsdWVzIGFyZSBzdG9yZWQgaW4g
dGhlIHVwcGVyIGJpdHMgb2YNCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJu
cyBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgdGhlIGhvcml6b250YWwg
c2F0dXJhdGVkDQorLy8vICAgIGRpZmZlcmVuY2VzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9oc3Vic19waTE2
KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5f
aWEzMl9waHN1YnN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQorfQ0KKw0KKy8vLyBNdWx0
aXBsaWVzIGNvcnJlc3BvbmRpbmcgcGFpcnMgb2YgcGFja2VkIDgtYml0IHVuc2lnbmVkIGludGVn
ZXINCisvLy8gICAgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQg
YW5kIHBhY2tlZCA4LWJpdCBzaWduZWQNCisvLy8gICAgaW50ZWdlciB2YWx1ZXMgY29udGFpbmVk
IGluIHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQsIGFkZHMgcGFpcnMgb2YNCisvLy8gICAgY29u
dGlndW91cyBwcm9kdWN0cyB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgd3JpdGVzIHRoZSAx
Ni1iaXQgc3VtcyB0bw0KKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBkZXN0
aW5hdGlvbi4NCisvLy8NCisvLy8gICAgRm9yIGV4YW1wbGUsIGJpdHMgWzc6MF0gb2YgYm90aCBv
cGVyYW5kcyBhcmUgbXVsdGlwbGllZCwgYml0cyBbMTU6OF0gb2YNCisvLy8gICAgYm90aCBvcGVy
YW5kcyBhcmUgbXVsdGlwbGllZCwgYW5kIHRoZSBzdW0gb2YgYm90aCByZXN1bHRzIGlzIHdyaXR0
ZW4gdG8NCisvLy8gICAgYml0cyBbMTU6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSBcYyBWUE1BRERVQlNXIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBc
cGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc3Vt
cyBvZiBwcm9kdWN0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzOiBcbg0KKy8vLyAgICBcYSBS
MCA6PSAoXGEgX19hMCAqIFxhIF9fYjApICsgKFxhIF9fYTEgKiBcYSBfX2IxKSBcbg0KKy8vLyAg
ICBcYSBSMSA6PSAoXGEgX19hMiAqIFxhIF9fYjIpICsgKFxhIF9fYTMgKiBcYSBfX2IzKSBcbg0K
Ky8vLyAgICBcYSBSMiA6PSAoXGEgX19hNCAqIFxhIF9fYjQpICsgKFxhIF9fYTUgKiBcYSBfX2I1
KSBcbg0KKy8vLyAgICBcYSBSMyA6PSAoXGEgX19hNiAqIFxhIF9fYjYpICsgKFxhIF9fYTcgKiBc
YSBfX2I3KSBcbg0KKy8vLyAgICBcYSBSNCA6PSAoXGEgX19hOCAqIFxhIF9fYjgpICsgKFxhIF9f
YTkgKiBcYSBfX2I5KSBcbg0KKy8vLyAgICBcYSBSNSA6PSAoXGEgX19hMTAgKiBcYSBfX2IxMCkg
KyAoXGEgX19hMTEgKiBcYSBfX2IxMSkgXG4NCisvLy8gICAgXGEgUjYgOj0gKFxhIF9fYTEyICog
XGEgX19iMTIpICsgKFxhIF9fYTEzICogXGEgX19iMTMpIFxuDQorLy8vICAgIFxhIFI3IDo9IChc
YSBfX2ExNCAqIFxhIF9fYjE0KSArIChcYSBfX2ExNSAqIFxhIF9fYjE1KQ0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21hZGR1YnNfZXBpMTYoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BtYWRkdWJzdzEyOCgoX192MTZxaSlfX2EsIChfX3YxNnFpKV9fYik7DQorfQ0KKw0K
Ky8vLyBNdWx0aXBsaWVzIGNvcnJlc3BvbmRpbmcgcGFpcnMgb2YgcGFja2VkIDgtYml0IHVuc2ln
bmVkIGludGVnZXINCisvLy8gICAgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgc291cmNl
IG9wZXJhbmQgYW5kIHBhY2tlZCA4LWJpdCBzaWduZWQNCisvLy8gICAgaW50ZWdlciB2YWx1ZXMg
Y29udGFpbmVkIGluIHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQsIGFkZHMgcGFpcnMgb2YNCisv
Ly8gICAgY29udGlndW91cyBwcm9kdWN0cyB3aXRoIHNpZ25lZCBzYXR1cmF0aW9uLCBhbmQgd3Jp
dGVzIHRoZSAxNi1iaXQgc3VtcyB0bw0KKy8vLyAgICB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGlu
IHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gICAgRm9yIGV4YW1wbGUsIGJpdHMgWzc6MF0g
b2YgYm90aCBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCwgYml0cyBbMTU6OF0gb2YNCisvLy8gICAg
Ym90aCBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCwgYW5kIHRoZSBzdW0gb2YgYm90aCByZXN1bHRz
IGlzIHdyaXR0ZW4gdG8NCisvLy8gICAgYml0cyBbMTU6MF0gb2YgdGhlIGRlc3RpbmF0aW9uLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBQTUFERFVCU1cgaW5zdHJ1Y3Rpb24uDQorLy8v
DQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgc2Vjb25kIHNvdXJjZSBvcGVy
YW5kLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRo
ZSBzdW1zIG9mIHByb2R1Y3RzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHM6IFxuDQorLy8vICAg
IFxhIFIwIDo9IChcYSBfX2EwICogXGEgX19iMCkgKyAoXGEgX19hMSAqIFxhIF9fYjEpIFxuDQor
Ly8vICAgIFxhIFIxIDo9IChcYSBfX2EyICogXGEgX19iMikgKyAoXGEgX19hMyAqIFxhIF9fYjMp
IFxuDQorLy8vICAgIFxhIFIyIDo9IChcYSBfX2E0ICogXGEgX19iNCkgKyAoXGEgX19hNSAqIFxh
IF9fYjUpIFxuDQorLy8vICAgIFxhIFIzIDo9IChcYSBfX2E2ICogXGEgX19iNikgKyAoXGEgX19h
NyAqIFxhIF9fYjcpDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJT
X01NWA0KK19tbV9tYWRkdWJzX3BpMTYoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BtYWRkdWJzdygoX192OHFpKV9fYSwgKF9fdjhx
aSlfX2IpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyBwYWNrZWQgMTYtYml0IHNpZ25lZCBpbnRl
Z2VyIHZhbHVlcywgdHJ1bmNhdGVzIHRoZSAzMi1iaXQNCisvLy8gICAgcHJvZHVjdHMgdG8gdGhl
IDE4IG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBieSByaWdodC1zaGlmdGluZywgcm91bmRzIHRoZQ0K
Ky8vLyAgICB0cnVuY2F0ZWQgdmFsdWUgYnkgYWRkaW5nIDEsIGFuZCB3cml0ZXMgYml0cyBbMTY6
MV0gdG8gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUE1V
TEhSU1cgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbOCB4IGkxNl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVy
YW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHgg
aTE2XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs4IHggaTE2XSBjb250YWluaW5nIHRoZSByb3VuZGVkIGFu
ZCBzY2FsZWQNCisvLy8gICAgcHJvZHVjdHMgb2YgYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9tdWxocnNfZXBpMTYoX19t
MTI4aSBfX2EsIF9fbTEyOGkgX19iKQ0KK3sNCisgICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp
bl9pYTMyX3BtdWxocnN3MTI4KChfX3Y4aGkpX19hLCAoX192OGhpKV9fYik7DQorfQ0KKw0KKy8v
LyBNdWx0aXBsaWVzIHBhY2tlZCAxNi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWVzLCB0cnVuY2F0
ZXMgdGhlIDMyLWJpdA0KKy8vLyAgICBwcm9kdWN0cyB0byB0aGUgMTggbW9zdCBzaWduaWZpY2Fu
dCBiaXRzIGJ5IHJpZ2h0LXNoaWZ0aW5nLCByb3VuZHMgdGhlDQorLy8vICAgIHRydW5jYXRlZCB2
YWx1ZSBieSBhZGRpbmcgMSwgYW5kIHdyaXRlcyBiaXRzIFsxNjoxXSB0byB0aGUgZGVzdGluYXRp
b24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBNVUxIUlNXIGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkx
Nl0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IHZlY3RvciBvZiBb
NCB4IGkxNl0gY29udGFpbmluZyB0aGUgcm91bmRlZCBhbmQgc2NhbGVkDQorLy8vICAgIHByb2R1
Y3RzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxU
X0ZOX0FUVFJTX01NWA0KK19tbV9tdWxocnNfcGkxNihfX202NCBfX2EsIF9fbTY0IF9fYikNCit7
DQorICAgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG11bGhyc3coKF9fdjRoaSlfX2Es
IChfX3Y0aGkpX19iKTsNCit9DQorDQorLy8vIENvcGllcyB0aGUgOC1iaXQgaW50ZWdlcnMgZnJv
bSBhIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgdG8gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uIG9y
IGNsZWFycyA4LWJpdCB2YWx1ZXMgaW4gdGhlIGRlc3RpbmF0aW9uLCBhcyBzcGVjaWZpZWQgYnkN
CisvLy8gICAgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgXGMgVlBTSFVGQiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJl
IGNvcGllZC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyBjb250cm9sIGJ5dGVzIGNvcnJlc3BvbmRpbmcgdG8NCisvLy8gICAgcG9z
aXRpb25zIGluIHRoZSBkZXN0aW5hdGlvbjoNCisvLy8gICAgQml0IDc6IFxuDQorLy8vICAgIDE6
IENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgaW4gdGhlIGRlc3RpbmF0aW9uLiBcbg0KKy8v
LyAgICAwOiBDb3B5IHRoZSBzZWxlY3RlZCBzb3VyY2UgYnl0ZSB0byB0aGUgY29ycmVzcG9uZGlu
ZyBieXRlIGluIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNjo0
XSBSZXNlcnZlZC4gIFxuDQorLy8vICAgIEJpdHMgWzM6MF0gc2VsZWN0IHRoZSBzb3VyY2UgYnl0
ZSB0byBiZSBjb3BpZWQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSBjb3BpZWQgb3IgY2xlYXJlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4aSBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2h1ZmZsZV9lcGk4KF9fbTEyOGkg
X19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEz
Ml9wc2h1ZmIxMjgoKF9fdjE2cWkpX19hLCAoX192MTZxaSlfX2IpOw0KK30NCisNCisvLy8gQ29w
aWVzIHRoZSA4LWJpdCBpbnRlZ2VycyBmcm9tIGEgNjQtYml0IGludGVnZXIgdmVjdG9yIHRvIHRo
ZQ0KKy8vLyAgICBkZXN0aW5hdGlvbiBvciBjbGVhcnMgOC1iaXQgdmFsdWVzIGluIHRoZSBkZXN0
aW5hdGlvbiwgYXMgc3BlY2lmaWVkIGJ5DQorLy8vICAgIHRoZSBzZWNvbmQgc291cmNlIG9wZXJh
bmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBTSFVGQiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250
YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAg
IEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3JyZXNw
b25kaW5nIHRvDQorLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb246DQorLy8vICAg
IEJpdCA3OiBcbg0KKy8vLyAgICAxOiBDbGVhciB0aGUgY29ycmVzcG9uZGluZyBieXRlIGluIHRo
ZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMDogQ29weSB0aGUgc2VsZWN0ZWQgc291cmNlIGJ5
dGUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24u
IFxuDQorLy8vICAgIEJpdHMgWzM6MF0gc2VsZWN0IHRoZSBzb3VyY2UgYnl0ZSB0byBiZSBjb3Bp
ZWQuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhl
IGNvcGllZCBvciBjbGVhcmVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RF
RkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX3NodWZmbGVfcGk4KF9fbTY0IF9fYSwgX19tNjQgX19i
KQ0KK3sNCisgICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wc2h1ZmIoKF9fdjhxaSlf
X2EsIChfX3Y4cWkpX19iKTsNCit9DQorDQorLy8vIEZvciBlYWNoIDgtYml0IGludGVnZXIgaW4g
dGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBwZXJmb3JtIG9uZSBvZg0KKy8vLyAgICB0aGUgZm9s
bG93aW5nIGFjdGlvbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQu
DQorLy8vDQorLy8vICAgIElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0
aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzDQorLy8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGNvcnJl
c3BvbmRpbmcgYnl0ZSBpbiB0aGUgZmlyc3Qgc291cmNlLCBhbmQgd3JpdGUgdGhhdA0KKy8vLyAg
ICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24uIElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291
cmNlIGlzIHBvc2l0aXZlLA0KKy8vLyAgICBjb3B5IHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgZnJv
bSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYNCisvLy8gICAgdGhlIGJ5
dGUgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgemVybywgY2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcg
Ynl0ZSBpbg0KKy8vLyAgICB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIFxjIFZQU0lHTkIgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBj
b3BpZWQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3JyZXNwb25kaW5nIHRvDQorLy8vICAgIHBvc2l0
aW9ucyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSByZXN1bHRhbnQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOGkgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NpZ25fZXBpOChfX20xMjhpIF9f
YSwgX19tMTI4aSBfX2IpDQorew0KKyAgICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cHNpZ25iMTI4KChfX3YxNnFpKV9fYSwgKF9fdjE2cWkpX19iKTsNCit9DQorDQorLy8vIEZvciBl
YWNoIDE2LWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZCwgcGVyZm9ybSBv
bmUgb2YNCisvLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFzIHNwZWNpZmllZCBieSB0aGUg
c2Vjb25kIHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyAgICBJZiB0aGUgd29yZCBpbiB0aGUg
c2Vjb25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2FsY3VsYXRlIHRoZSB0d28ncw0KKy8vLyAgICBj
b21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgaW4gdGhlIGZpcnN0IHNvdXJjZSwg
YW5kIHdyaXRlIHRoYXQNCisvLy8gICAgdmFsdWUgdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUg
d29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBwb3NpdGl2ZSwNCisvLy8gICAgY29weSB0aGUg
Y29ycmVzcG9uZGluZyB3b3JkIGZyb20gdGhlIGZpcnN0IHNvdXJjZSB0byB0aGUgZGVzdGluYXRp
b24uIElmDQorLy8vICAgIHRoZSB3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNs
ZWFyIHRoZSBjb3JyZXNwb25kaW5nIHdvcmQgaW4NCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSBcYyBWUFNJR05XIGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWlu
aW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEg
MTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIGNvbnRyb2wgd29yZHMgY29ycmVzcG9u
ZGluZyB0bw0KKy8vLyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZh
bHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9zaWduX2VwaTE2KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVybiAo
X19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2lnbncxMjgoKF9fdjhoaSlfX2EsIChfX3Y4aGkpX19i
KTsNCit9DQorDQorLy8vIEZvciBlYWNoIDMyLWJpdCBpbnRlZ2VyIGluIHRoZSBmaXJzdCBzb3Vy
Y2Ugb3BlcmFuZCwgcGVyZm9ybSBvbmUgb2YNCisvLy8gICAgdGhlIGZvbGxvd2luZyBhY3Rpb25z
IGFzIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIHNvdXJjZSBvcGVyYW5kLg0KKy8vLw0KKy8vLyAg
ICBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcyBuZWdhdGl2ZSwgY2Fs
Y3VsYXRlIHRoZSB0d28ncw0KKy8vLyAgICBjb21wbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5n
IHdvcmQgaW4gdGhlIGZpcnN0IHNvdXJjZSwgYW5kIHdyaXRlIHRoYXQNCisvLy8gICAgdmFsdWUg
dG8gdGhlIGRlc3RpbmF0aW9uLiBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vjb25kIHNvdXJj
ZSBpcw0KKy8vLyAgICBwb3NpdGl2ZSwgY29weSB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGZyb20g
dGhlIGZpcnN0IHNvdXJjZSB0byB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIElmIHRoZSBkb3Vi
bGV3b3JkIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHplcm8sIGNsZWFyIHRoZQ0KKy8vLyAgICBj
b3JyZXNwb25kaW5nIHdvcmQgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSBcYyBWUFNJR05EIGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8g
YmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIGNvbnRyb2wgZG91Ymxld29yZHMgY29ycmVzcG9uZGluZyB0bw0KKy8v
LyAgICBwb3NpdGlvbnMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcmVzdWx0YW50IHZhbHVlcy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjhpIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zaWduX2VwaTMy
KF9fbTEyOGkgX19hLCBfX20xMjhpIF9fYikNCit7DQorICAgIHJldHVybiAoX19tMTI4aSlfX2J1
aWx0aW5faWEzMl9wc2lnbmQxMjgoKF9fdjRzaSlfX2EsIChfX3Y0c2kpX19iKTsNCit9DQorDQor
Ly8vIEZvciBlYWNoIDgtYml0IGludGVnZXIgaW4gdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLCBw
ZXJmb3JtIG9uZSBvZg0KKy8vLyAgICB0aGUgZm9sbG93aW5nIGFjdGlvbnMgYXMgc3BlY2lmaWVk
IGJ5IHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQorLy8vDQorLy8vICAgIElmIHRoZSBieXRl
IGluIHRoZSBzZWNvbmQgc291cmNlIGlzIG5lZ2F0aXZlLCBjYWxjdWxhdGUgdGhlIHR3bydzDQor
Ly8vICAgIGNvbXBsZW1lbnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbiB0aGUgZmlyc3Qg
c291cmNlLCBhbmQgd3JpdGUgdGhhdA0KKy8vLyAgICB2YWx1ZSB0byB0aGUgZGVzdGluYXRpb24u
IElmIHRoZSBieXRlIGluIHRoZSBzZWNvbmQgc291cmNlIGlzIHBvc2l0aXZlLA0KKy8vLyAgICBj
b3B5IHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgZnJvbSB0aGUgZmlyc3Qgc291cmNlIHRvIHRoZSBk
ZXN0aW5hdGlvbi4gSWYNCisvLy8gICAgdGhlIGJ5dGUgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMg
emVybywgY2xlYXIgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZSBpbg0KKy8vLyAgICB0aGUgZGVzdGlu
YXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIFxjIFBTSUdOQiBpbnN0cnVjdGlvbi4N
CisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBj
b250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgY29waWVkLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgY29udHJvbCBieXRlcyBjb3Jy
ZXNwb25kaW5nIHRvDQorLy8vICAgIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8v
IFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJlc3VsdGFu
dCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01N
WA0KK19tbV9zaWduX3BpOChfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICAgIHJldHVybiAo
X19tNjQpX19idWlsdGluX2lhMzJfcHNpZ25iKChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQor
fQ0KKw0KKy8vLyBGb3IgZWFjaCAxNi1iaXQgaW50ZWdlciBpbiB0aGUgZmlyc3Qgc291cmNlIG9w
ZXJhbmQsIHBlcmZvcm0gb25lIG9mDQorLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcyBz
cGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8NCisvLy8gICAgSWYg
dGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgbmVnYXRpdmUsIGNhbGN1bGF0ZSB0aGUg
dHdvJ3MNCisvLy8gICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluIHRo
ZSBmaXJzdCBzb3VyY2UsIGFuZCB3cml0ZSB0aGF0DQorLy8vICAgIHZhbHVlIHRvIHRoZSBkZXN0
aW5hdGlvbi4gSWYgdGhlIHdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgcG9zaXRpdmUsDQor
Ly8vICAgIGNvcHkgdGhlIGNvcnJlc3BvbmRpbmcgd29yZCBmcm9tIHRoZSBmaXJzdCBzb3VyY2Ug
dG8gdGhlIGRlc3RpbmF0aW9uLiBJZg0KKy8vLyAgICB0aGUgd29yZCBpbiB0aGUgc2Vjb25kIHNv
dXJjZSBpcyB6ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyB3b3JkIGluDQorLy8vICAgIHRo
ZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUFNJR05XIGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQorLy8vIFxwYXJhbSBf
X2INCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyBjb250cm9sIHdv
cmRzIGNvcnJlc3BvbmRpbmcgdG8NCisvLy8gICAgcG9zaXRpb25zIGluIHRoZSBkZXN0aW5hdGlv
bi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUg
cmVzdWx0YW50IHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5f
QVRUUlNfTU1YDQorX21tX3NpZ25fcGkxNihfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICAg
IHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcHNpZ253KChfX3Y0aGkpX19hLCAoX192NGhp
KV9fYik7DQorfQ0KKw0KKy8vLyBGb3IgZWFjaCAzMi1iaXQgaW50ZWdlciBpbiB0aGUgZmlyc3Qg
c291cmNlIG9wZXJhbmQsIHBlcmZvcm0gb25lIG9mDQorLy8vICAgIHRoZSBmb2xsb3dpbmcgYWN0
aW9ucyBhcyBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBzb3VyY2Ugb3BlcmFuZC4NCisvLy8NCisv
Ly8gICAgSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNlY29uZCBzb3VyY2UgaXMgbmVnYXRpdmUs
IGNhbGN1bGF0ZSB0aGUgdHdvJ3MNCisvLy8gICAgY29tcGxlbWVudCBvZiB0aGUgY29ycmVzcG9u
ZGluZyBkb3VibGV3b3JkIGluIHRoZSBmaXJzdCBzb3VyY2UsIGFuZA0KKy8vLyAgICB3cml0ZSB0
aGF0IHZhbHVlIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgdGhlIGRvdWJsZXdvcmQgaW4gdGhlIHNl
Y29uZA0KKy8vLyAgICBzb3VyY2UgaXMgcG9zaXRpdmUsIGNvcHkgdGhlIGNvcnJlc3BvbmRpbmcg
ZG91Ymxld29yZCBmcm9tIHRoZSBmaXJzdA0KKy8vLyAgICBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0
aW9uLiBJZiB0aGUgZG91Ymxld29yZCBpbiB0aGUgc2Vjb25kIHNvdXJjZSBpcw0KKy8vLyAgICB6
ZXJvLCBjbGVhciB0aGUgY29ycmVzcG9uZGluZyBkb3VibGV3b3JkIGluIHRoZSBkZXN0aW5hdGlv
bi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgXGMgUFNJR05EIGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRh
aW5pbmcgdGhlIHZhbHVlcyB0byBiZSBjb3BpZWQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
QSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0d28gY29udHJvbCBkb3VibGV3b3Jk
cyBjb3JyZXNwb25kaW5nDQorLy8vICAgIHRvIHBvc2l0aW9ucyBpbiB0aGUgZGVzdGluYXRpb24u
DQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHJl
c3VsdGFudCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWA0KK19tbV9zaWduX3BpMzIoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgICBy
ZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX3BzaWduZCgoX192MnNpKV9fYSwgKF9fdjJzaSlf
X2IpOw0KK30NCisNCisjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQorI3VuZGVmIF9fREVGQVVM
VF9GTl9BVFRSU19NTVgNCisNCisjZW5kaWYgLyogX19UTU1JTlRSSU5fSCAqLw0KZGlmZiAtLWdp
dCBhL2luY2x1ZGUveG1taW50cmluLmggYi9pbmNsdWRlL3htbWludHJpbi5oDQpuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uZTI1NDNhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIv
aW5jbHVkZS94bW1pbnRyaW4uaA0KQEAgLTAsMCArMSwzMTAxIEBADQorLyo9PT0tLS0tIHhtbWlu
dHJpbi5oIC0gU1NFIGludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLT09PQ0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0KKyAqIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
byBkZWFsDQorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu
ZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cw0KKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCisg
KiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgU29mdHdhcmUgaXMNCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCisgKiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAq
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFDQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUg0KKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sDQorICog
T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP
VEhFUiBERUFMSU5HUyBJTg0KKyAqIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqPT09LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS09PT0NCisgKi8NCisNCisjaWZuZGVmIF9fWE1NSU5UUklOX0gNCisjZGVmaW5lIF9fWE1N
SU5UUklOX0gNCisNCisjaW5jbHVkZSA8bW1pbnRyaW4uaD4NCisNCit0eXBlZGVmIGludCBfX3Y0
c2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KK3R5cGVkZWYgZmxvYXQg
X192NHNmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCit0eXBlZGVmIGZs
b2F0IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQorDQorLyog
VW5zaWduZWQgdHlwZXMgKi8NCit0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Y0c3UgX19hdHRyaWJ1
dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KKw0KKy8qIFRoaXMgaGVhZGVyIHNob3VsZCBv
bmx5IGJlIGluY2x1ZGVkIGluIGEgaG9zdGVkIGVudmlyb25tZW50IGFzIGl0IGRlcGVuZHMgb24N
CisgKiBhIHN0YW5kYXJkIGxpYnJhcnkgdG8gcHJvdmlkZSBhbGxvY2F0aW9uIHJvdXRpbmVzLiAq
Lw0KKyNpZiBfX1NURENfSE9TVEVEX18NCisjaW5jbHVkZSA8bW1fbWFsbG9jLmg+DQorI2VuZGlm
DQorDQorLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMg
aW4gdGhpcyBmaWxlLiAqLw0KKyNpZmRlZiAgX19HTlVDX18NCisjZGVmaW5lIF9fREVGQVVMVF9G
Tl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18s
IF9fYXJ0aWZpY2lhbF9fKSkNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQorI2Vsc2UNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChf
X2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNzZSIpLCBfX21pbl92
ZWN0b3Jfd2lkdGhfXygxMjgpKSkNCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19h
dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJt
bXgsc3NlIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQorI2VuZGlmDQorDQorI2RlZmlu
ZSBfTU1fU0hVRkZMRSh6LCB5LCB4LCB3KSAoKCh6KSA8PCA2KSB8ICgoeSkgPDwgNCkgfCAoKHgp
IDw8IDIpIHwgKHcpKQ0KKw0KKw0KKy8vLyBBZGRzIHRoZSAzMi1iaXQgZmxvYXQgdmFsdWVzIGlu
IHRoZSBsb3ctb3JkZXIgYml0cyBvZiB0aGUgb3BlcmFuZHMuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQUREU1MgLyBBRERTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBsb3dlciAzMiBi
aXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQorLy8vIFxw
YXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgbG93ZXIgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccmV0
dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMg
Y29udGFpbiB0aGUgc3VtDQorLy8vICAgIG9mIHRoZSBsb3dlciAzMiBiaXRzIG9mIGJvdGggb3Bl
cmFuZHMuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBw
ZXIgOTYgYml0cyBvZiB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hZGRfc3MoX19tMTI4IF9fYSwgX19t
MTI4IF9fYikNCit7DQorICBfX2FbMF0gKz0gX19iWzBdOw0KKyAgcmV0dXJuIF9fYTsNCit9DQor
DQorLy8vIEFkZHMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSwgYW5kIHJldHVy
bnMgdGhlIHJlc3VsdHMgb2YNCisvLy8gICAgdGhlIGFkZGl0aW9uLg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkFERFBTIC8gQUREUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBzdW1zIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMu
DQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9hZGRf
cHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOCkoKF9fdjRz
ZilfX2EgKyAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBTdWJ0cmFjdHMgdGhlIDMyLWJpdCBm
bG9hdCB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIHNlY29uZA0KKy8vLyAgICBv
cGVyYW5kIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQu
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWU1VCU1MgLyBTVUJTUyA8L2M+IGluc3Ry
dWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbnVlbmQuIFRoZSBsb3dlciAzMiBiaXRz
DQorLy8vICAgIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZSBzdWJ0cmFoZW5kLiBUaGUgbG93ZXIgMzINCisvLy8gICAgYml0cyBvZiB0
aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccmV0dXJucyBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFp
biB0aGUNCisvLy8gICAgZGlmZmVyZW5jZSBvZiB0aGUgbG93ZXIgMzIgYml0cyBvZiBib3RoIG9w
ZXJhbmRzLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUNCisvLy8gICAgY29waWVkIGZyb20gdGhlIHVw
cGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc3ViX3NzKF9fbTEyOCBfX2EsIF9f
bTEyOCBfX2IpDQorew0KKyAgX19hWzBdIC09IF9fYlswXTsNCisgIHJldHVybiBfX2E7DQorfQ0K
Kw0KKy8vLyBTdWJ0cmFjdHMgZWFjaCBvZiB0aGUgdmFsdWVzIG9mIHRoZSBzZWNvbmQgb3BlcmFu
ZCBmcm9tIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kLCBib3RoIG9mIHdoaWNoIGFyZSAxMjgt
Yml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gYW5kIHJldHVybnMNCisvLy8gICAgdGhlIHJlc3Vs
dHMgb2YgdGhlIHN1YnRyYWN0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlNV
QlBTIC8gU1VCUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtaW51
ZW5kLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgc3VidHJhaGVuZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVu
DQorLy8vICAgIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9zdWJfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQor
ICByZXR1cm4gKF9fbTEyOCkoKF9fdjRzZilfX2EgLSAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8v
LyBNdWx0aXBsaWVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0
cyBvZiB0aGUNCisvLy8gICAgb3BlcmFuZHMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWTVVMU1MgLyBNVUxTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25l
IG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vICAgIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRo
aXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24uDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBv
ZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyAgICBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHByb2R1Y3Qgb2YgdGhl
IGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJp
dHMgYXJlIGNvcGllZCBmcm9tIHRoZSB1cHBlciA5Ng0KKy8vLyAgICBiaXRzIG9mIHRoZSBmaXJz
dCBzb3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX211bF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIF9fYVsw
XSAqPSBfX2JbMF07DQorICByZXR1cm4gX19hOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyB0d28g
MTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZQ0KKy8vLyAgICBy
ZXN1bHRzIG9mIHRoZSBtdWx0aXBsaWNhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZNVUxQUyAvIE1VTFBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0g
X19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBv
bmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ug
b3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgcHJvZHVjdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcy4NCitzdGF0
aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX211bF9wcyhfX20x
MjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KSgoX192NHNmKV9fYSAq
IChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIERpdmlkZXMgdGhlIHZhbHVlIGluIHRoZSBsb3ct
b3JkZXIgMzIgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieQ0KKy8vLyAgICB0aGUgY29ycmVz
cG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWRElWU1MgLyBESVZTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIGRpdmlkZW5kLiBUaGUgbG93ZXIgMzINCisvLy8gICAgYml0cyBvZiB0aGlzIG9w
ZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgZGl2aXNv
ci4gVGhlIGxvd2VyIDMyIGJpdHMNCisvLy8gICAgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGlu
IHRoZSBjYWxjdWxhdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBxdW90aWVudHMgb2YgdGhlDQorLy8vICAgIGxvd2VyIDMy
IGJpdHMgb2YgYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9t
IHRoZQ0KKy8vLyAgICB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBzb3VyY2Ugb3BlcmFuZC4N
CitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2Rpdl9z
cyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIF9fYVswXSAvPSBfX2JbMF07DQorICBy
ZXR1cm4gX19hOw0KK30NCisNCisvLy8gRGl2aWRlcyB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0
IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkRJVlBTIC8gRElWUFMg
PC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBkaXZpZGVuZC4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIGRpdmlzb3IuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgcXVvdGllbnRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFu
ZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9k
aXZfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOCkoKF9f
djRzZilfX2EgLyAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDYWxjdWxhdGVzIHRoZSBzcXVh
cmUgcm9vdCBvZiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSBsb3ctb3JkZXIgYml0cw0KKy8vLyAg
ICBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlNRUlRTUyAvIFNRUlRTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBU
aGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhl
IGNhbGN1bGF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIHNxdWFyZSByb290IG9mIHRoZQ0KKy8vLyAgICB2YWx1ZSBpbiB0
aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19t
MTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zcXJ0X3NzKF9fbTEyOCBfX2EpDQorew0KKyAg
cmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfc3FydHNzKChfX3Y0c2YpX19hKTsNCit9DQor
DQorLy8vIENhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgdmFsdWVzIHN0b3JlZCBp
biBhIDEyOC1iaXQgdmVjdG9yDQorLy8vICAgIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVlNRUlRQUyAvIFNRUlRQUyA8L2M+IGluc3RydWN0aW9ucy4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRh
aW5pbmcgdGhlIHNxdWFyZSByb290cyBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGluIHRoZSBvcGVy
YW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
c3FydF9wcyhfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9zcXJ0cHMo
KF9fdjRzZilfX2EpOw0KK30NCisNCisvLy8gQ2FsY3VsYXRlcyB0aGUgYXBwcm94aW1hdGUgcmVj
aXByb2NhbCBvZiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZQ0KKy8vLyAgICBsb3ctb3JkZXIgYml0
cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlJDUFNTIC8gUkNQU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8v
IFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhl
IGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBj
YWxjdWxhdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0
XSBjb250YWluaW5nIHRoZSBhcHByb3hpbWF0ZQ0KKy8vLyAgICByZWNpcHJvY2FsIG9mIHRoZSB2
YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5s
aW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9yY3Bfc3MoX19tMTI4IF9fYSkN
Cit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9yY3BzcygoX192NHNmKV9fYSk7
DQorfQ0KKw0KKy8vLyBDYWxjdWxhdGVzIHRoZSBhcHByb3hpbWF0ZSByZWNpcHJvY2FscyBvZiB0
aGUgdmFsdWVzIHN0b3JlZCBpbiBhDQorLy8vICAgIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlJDUFBTIC8gUkNQUFMgPC9jPiBp
bnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBhcHByb3hpbWF0ZQ0KKy8vLyAgICByZWNpcHJvY2Fs
cyBvZiB0aGUgdmFsdWVzIGluIHRoZSBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEy
OCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fcmNwX3BzKF9fbTEyOCBfX2EpDQorew0KKyAgcmV0
dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfcmNwcHMoKF9fdjRzZilfX2EpOw0KK30NCisNCisv
Ly8gQ2FsY3VsYXRlcyB0aGUgYXBwcm94aW1hdGUgcmVjaXByb2NhbCBvZiB0aGUgc3F1YXJlIHJv
b3Qgb2YgdGhlIHZhbHVlDQorLy8vICAgIHN0b3JlZCBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2Yg
YSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFZSU1FSVFNTIC8gUlNRUlRTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUg
bG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNh
bGN1bGF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIGFwcHJveGltYXRlDQorLy8vICAgIHJlY2lwcm9jYWwgb2YgdGhlIHNx
dWFyZSByb290IG9mIHRoZSB2YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlDQorLy8v
ICAgIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9yc3FydF9zcyhfX20xMjggX19hKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEz
Ml9yc3FydHNzKChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENhbGN1bGF0ZXMgdGhlIGFwcHJv
eGltYXRlIHJlY2lwcm9jYWxzIG9mIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlDQorLy8vICAgIHZh
bHVlcyBzdG9yZWQgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisv
Ly8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBj
b3JyZXNwb25kcyB0byB0aGUgPGM+IFZSU1FSVFBTIC8gUlNRUlRQUyA8L2M+IGluc3RydWN0aW9u
cy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgdGhlIGFwcHJveGltYXRlDQorLy8vICAgIHJlY2lwcm9jYWxzIG9mIHRoZSBz
cXVhcmUgcm9vdHMgb2YgdGhlIHZhbHVlcyBpbiB0aGUgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxp
bmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3JzcXJ0X3BzKF9fbTEyOCBfX2Ep
DQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMoKF9fdjRzZilfX2EpOw0KK30N
CisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRl
ciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgYW5kIHJldHVybnMgdGhlIGxlc3NlciB2
YWx1ZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlDQorLy8vICAgIHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5TUyAvIE1JTlNTIDwv
Yz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBU
aGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhl
IGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0K
Ky8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNv
bi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBs
b3dlciAzMiBiaXRzIGNvbnRhaW4gdGhlDQorLy8vICAgIG1pbmltdW0gdmFsdWUgYmV0d2VlbiBi
b3RoIG9wZXJhbmRzLiBUaGUgdXBwZXIgOTYgYml0cyBhcmUgY29waWVkIGZyb20NCisvLy8gICAg
dGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHNvdXJjZSBvcGVyYW5kLg0KK3N0YXRpYyBf
X2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbWluX3NzKF9fbTEyOCBf
X2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21pbnNzKChfX3Y0
c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMTI4LWJpdCB2
ZWN0b3JzIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZSBsZXNzZXINCisvLy8gICAgb2Yg
ZWFjaCBwYWlyIG9mIHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNSU5Q
UyAvIE1JTlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhl
IG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIG1pbmltdW0g
dmFsdWVzDQorLy8vICAgIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21pbl9wcyhfX20xMjggX19hLCBfX20x
MjggX19iKQ0KK3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9taW5wcygoX192NHNmKV9fYSwg
KF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgYW5kIHJl
dHVybnMgdGhlIGdyZWF0ZXIgdmFsdWUgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgMTI4LWJp
dA0KKy8vLyAgICB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWTUFYU1MgLyBNQVhTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0gd2hvc2UgbG93ZXIgMzIgYml0cyBjb250YWluIHRoZQ0KKy8vLyAg
ICBtYXhpbXVtIHZhbHVlIGJldHdlZW4gYm90aCBvcGVyYW5kcy4gVGhlIHVwcGVyIDk2IGJpdHMg
YXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBz
b3VyY2Ugb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX21heF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiBf
X2J1aWx0aW5faWEzMl9tYXhzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisv
Ly8gQ29tcGFyZXMgdHdvIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSBhbmQgcmV0dXJu
cyB0aGUgZ3JlYXRlcg0KKy8vLyAgICBvZiBlYWNoIHBhaXIgb2YgdmFsdWVzLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1BWFBTIC8gTUFYUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQor
Ly8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0
aGUgb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyB0aGUgbWF4aW11bSB2YWx1ZXMNCisvLy8gICAgYmV0d2VlbiBib3RoIG9w
ZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fbWF4X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX21heHBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBQZXJm
b3JtcyBhIGJpdHdpc2UgQU5EIG9mIHR3byAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBp
bnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQU5EUFMgLyBBTkRQUyA8L2M+IGluc3Ry
dWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2IN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNv
bnRhaW5pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIHRoZQ0KKy8vLyAgICB2YWx1ZXMgYmV0d2VlbiBi
b3RoIG9wZXJhbmRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fYW5kX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjgpKChfX3Y0c3UpX19hICYgKF9fdjRzdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMg
YSBiaXR3aXNlIEFORCBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdLCB1c2lu
Zw0KKy8vLyAgICB0aGUgb25lJ3MgY29tcGxlbWVudCBvZiB0aGUgdmFsdWVzIGNvbnRhaW5lZCBp
biB0aGUgZmlyc3Qgc291cmNlDQorLy8vICAgIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBWQU5ETlBTIC8gQU5ETlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29u
dGFpbmluZyB0aGUgZmlyc3Qgc291cmNlIG9wZXJhbmQuIFRoZQ0KKy8vLyAgICBvbmUncyBjb21w
bGVtZW50IG9mIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgYml0d2lzZSBBTkQuDQorLy8vIFxw
YXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSBzZWNvbmQgc291cmNlIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgYml0d2lzZSBBTkQgb2YgdGhlDQor
Ly8vICAgIG9uZSdzIGNvbXBsZW1lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYW5kIHRoZSB2YWx1
ZXMgaW4gdGhlIHNlY29uZA0KKy8vLyAgICBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fYW5kbm90X3BzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpKH4oX192NHN1KV9fYSAmIChfX3Y0c3UpX19i
KTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGEgYml0d2lzZSBPUiBvZiB0d28gMTI4LWJpdCB2ZWN0
b3JzIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk9SUFMg
LyBPUlBTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIHNv
dXJjZSBvcGVyYW5kcy4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQor
Ly8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0
aGUgYml0d2lzZSBPUiBvZiB0aGUNCisvLy8gICAgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5k
cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX29y
X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpKChfX3Y0
c3UpX19hIHwgKF9fdjRzdSlfX2IpOw0KK30NCisNCisvLy8gUGVyZm9ybXMgYSBiaXR3aXNlIGV4
Y2x1c2l2ZSBPUiBvZiB0d28gMTI4LWJpdCB2ZWN0b3JzIG9mDQorLy8vICAgIFs0IHggZmxvYXRd
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlhPUlBTIC8gWE9SUFMgPC9jPiBpbnN0
cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBiaXR3aXNlIGV4Y2x1
c2l2ZSBPUg0KKy8vLyAgICBvZiB0aGUgdmFsdWVzIGJldHdlZW4gYm90aCBvcGVyYW5kcy4NCitz
dGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3hvcl9wcyhf
X20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KSgoX192NHN1KV9f
YSBeIChfX3Y0c3UpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQg
dmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIGZv
ciBlcXVhbGl0eSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGluIHRo
ZQ0KKy8vLyAgICBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBbNCB4IGZsb2F0XS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBFUVNTIC8gQ01QRVFTUyA8L2M+IGluc3RydWN0
aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQor
Ly8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29u
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzDQorLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGVxX3NzKF9fbTEy
OCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJf
Y21wZXFzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMg
ZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8v
LyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gZm9yIGVxdWFsaXR5Lg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUEVRUFMgLyBDTVBFUVBTIDwvYz4gaW5zdHJ1Y3Rp
b25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBlcV9wcyhfX20xMjggX19hLCBf
X20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGVxcHMo
KF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1i
aXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9w
ZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMg
bGVzcyB0aGFuIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNvbmQg
b3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZQ0KKy8vLyAgICBjb21wYXJpc29u
IGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8N
CisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNp
YyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBMVFNTIC8gQ01QTFRTUyA8L2M+IGluc3RydWN0
aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQor
Ly8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29u
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIg
Yml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzDQorLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcGx0X3NzKF9fbTEy
OCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJf
Y21wbHRzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMg
ZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8v
LyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2
YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIGxlc3MgdGhhbiB0aG9zZSBp
biB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01Q
TFRQUyAvIENNUExUUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlz
b24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2NtcGx0X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjgpX19idWlsdGluX2lhMzJfY21wbHRwcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0K
K30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2
YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gb3INCisvLy8gICAgZXF1YWwg
dG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1
cm5zIHRoZQ0KKy8vLyAgICByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRl
ciBiaXRzIG9mIGEgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBc
aGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJl
c3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFU1MgLyBDTVBMRVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAg
MzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9m
IHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMNCisvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbGVfc3MoX19tMTI4IF9fYSwg
X19tMTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBsZXNz
KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9m
IHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEy
OC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBp
biB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRo
b3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDTVBMRVBTIC8gQ01QTEVQUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fY21wbGVfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1
cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBsZXBzKChfX3Y0c2YpX19hLCAoX192NHNmKV9f
Yik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUg
bG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYg
dGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbg0KKy8vLyAgICB0
aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMg
dGhlIHJlc3VsdCBvZg0KKy8vLyAgICB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJp
dHMgb2YgYSB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhl
IDxjPiBWQ01QTFRTUyAvIENNUExUU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRo
aXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9m
IHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5k
IGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KKy8v
LyAgICBpbiB0aGUgbG93LW9yZGVyIGJpdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBndF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
K3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9t
b3ZzcyAoKF9fdjRzZikgX19hLCAoX192NHNmKQ0KKwkJX19idWlsdGluX2lhMzJfY21wbHRzcyAo
KF9fdjRzZikgX19iLCAoX192NHNmKSBfX2EpKTsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjgp
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fYnVpbHRpbl9pYTMyX2NtcGx0c3MoKF9f
djRzZilfX2IsIChfX3Y0c2YpX19hKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQsIDEsIDIsIDMpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFj
aCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQgZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAg
ICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9hdF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1
ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJhbmQgYXJlIGdyZWF0ZXIgdGhhbiB0aG9zZSBp
biB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01Q
TFRQUyAvIENNUExUUFMgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9f
Yg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJu
cyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlz
b24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX2NtcGd0X3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChf
X20xMjgpX19idWlsdGluX2lhMzJfY21wbHRwcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpOw0K
K30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2
YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4NCisvLy8gICAgb3IgZXF1
YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCBy
ZXR1cm5zDQorLy8vICAgIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8v
LyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNv
cnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFU1MgLyBDTVBMRVNTIDwvYz4gaW5zdHJ1Y3Rpb25z
Lg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8g
ICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVy
bnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMNCisvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wZ2Vfc3MoX19tMTI4IF9f
YSwgX19tMTI4IF9fYikNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkg
X19idWlsdGluX2lhMzJfbW92c3MgKChfX3Y0c2YpIF9fYSwgKF9fdjRzZikNCisJCV9fYnVpbHRp
bl9pYTMyX2NtcGxlc3MgKChfX3Y0c2YpIF9fYiwgKF9fdjRzZikgX19hKSk7DQorI2Vsc2UNCisg
IHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX2J1aWx0aW5f
aWEzMl9jbXBsZXNzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSksDQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsNCisjZW5kaWYNCit9DQorDQor
Ly8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVl
cyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVy
bWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVyYW5kLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUExFUFMgLyBDTVBMRVBTIDwvYz4gaW5zdHJ1Y3Rp
b25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2Yg
WzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBnZV9wcyhfX20xMjggX19hLCBf
X20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcGxlcHMo
KF9fdjRzZilfX2IsIChfX3Y0c2YpX19hKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1i
aXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9w
ZXJhbmRzIGZvciBpbmVxdWFsaXR5IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBh
cmlzb24gaW4gdGhlDQorLy8vICAgIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mIFs0IHgg
ZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8v
IFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5FUVNTIC8gQ01QTkVR
U1MgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRo
ZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFy
ZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRz
LiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4g
dGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzDQorLy8vICAgIGluIHRoZSBs
b3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2NtcG5lcV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVy
biAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5lcXNzKChfX3Y0c2YpX19hLCAoX192NHNmKV9f
Yik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJp
dCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZs
b2F0XSBmb3IgaW5lcXVhbGl0eS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBO
RVFQUyAvIENNUE5FUVBTIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhl
IGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxU
X0ZOX0FUVFJTDQorX21tX2NtcG5lcV9wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisg
IHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2NtcG5lcXBzKChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBp
biB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1p
bmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBsZXNzIHRoYW4NCisv
Ly8gICAgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCBy
ZXR1cm5zIHRoZSByZXN1bHQgb2YNCisvLy8gICAgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1v
cmRlciBiaXRzIG9mIGEgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVkNNUE5MVFNTIC8gQ01QTkxUU1MgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9u
cy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8v
ICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHRzDQorLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5sdF9zcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2Nt
cG5sdHNzKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBl
YWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQorLy8v
ICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZh
bHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbm90IGxlc3MgdGhhbiB0aG9z
ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QTkxUUFMgLyBDTVBOTFRQUyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9jbXBubHRfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBubHRwcygoX192NHNmKV9fYSwg
KF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0
ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBub3QgbGVzcyB0aGFu
DQorLy8vICAgIG9yIGVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNv
bmQgb3BlcmFuZCBhbmQgcmV0dXJucw0KKy8vLyAgICB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJp
c29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTEVTUyAvIENNUE5MRVNT
IDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUg
b3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUg
dXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1i
aXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4g
VGhlIGxvd2VyDQorLy8vICAgIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRo
ZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cw0KKy8vLyAgICBpbiB0aGUgbG93
LW9yZGVyIGJpdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV9jbXBubGVfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4g
KF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBubGVzcygoX192NHNmKV9fYSwgKF9fdjRzZilfX2Ip
Ow0KK30NCisNCisvLy8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyAzMi1iaXQg
ZmxvYXQgdmFsdWVzIG9mIHRoZQ0KKy8vLyAgICAxMjgtYml0IHZlY3RvcnMgb2YgWzQgeCBmbG9h
dF0gdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0DQorLy8vICAgIG9wZXJh
bmQgYXJlIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIHNlY29uZCBvcGVy
YW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNNUE5MRVBTIC8gQ01QTkxFUFMg
PC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1
bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
Y21wbmxlX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgp
X19idWlsdGluX2lhMzJfY21wbmxlcHMoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQor
DQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRoZSBsb3ctb3JkZXIg
Yml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUg
aW4gdGhlIGZpcnN0IG9wZXJhbmQgaXMgbm90IGdyZWF0ZXINCisvLy8gICAgdGhhbiB0aGUgY29y
cmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlDQor
Ly8vICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2Yg
YSB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWQ01QTkxUU1MgLyBDTVBOTFRTUyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAg
MzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8v
IFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250
YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9m
IHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdHMNCisvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wbmd0X3NzKF9fbTEyOCBfX2Es
IF9fbTEyOCBfX2IpDQorew0KKw0KKyNpZmRlZiBfX0dOVUNfXw0KKyAgcmV0dXJuIChfX20xMjgp
IF9fYnVpbHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX2EsIChfX3Y0c2YpDQorCQlfX2J1aWx0
aW5faWEzMl9jbXBubHRzcyAoKF9fdjRzZikgX19iLCAoX192NHNmKSBfX2EpKTsNCisjZWxzZQ0K
KyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsDQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fYnVpbHRp
bl9pYTMyX2NtcG5sdHNzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSksDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAxLCAyLCAzKTsNCisjZW5kaWYNCit9DQor
DQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhlIGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZh
bHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJpdCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRl
dGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRoZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBu
b3QgZ3JlYXRlciB0aGFuIHRob3NlIGluIHRoZSBzZWNvbmQgb3BlcmFuZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDTVBOTFRQUyAvIENNUE5MVFBTIDwvYz4NCisvLy8gICBpbnN0
cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3Rv
ciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0
IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMgX19p
bmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5ndF9wcyhfX20xMjgg
X19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX2Nt
cG5sdHBzKChfX3Y0c2YpX19iLCAoX192NHNmKV9fYSk7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0
d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8v
LyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGluIHRoZSBmaXJzdCBvcGVy
YW5kIGlzIG5vdCBncmVhdGVyDQorLy8vICAgIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGNvcnJlc3Bv
bmRpbmcgdmFsdWUgaW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZA0KKy8vLyAgICByZXR1cm5zIHRo
ZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGEgdmVj
dG9yDQorLy8vICAgIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gVkNNUE5MRVNTIC8gQ01QTkxFU1MgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8N
CisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBvcGVyYW5kcy4gVGhlIGxvd2VyDQorLy8vICAgIDMyIGJp
dHMgb2YgdGhpcyBvcGVyYW5kIGFyZSB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4
LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1
bHRzDQorLy8vICAgIGluIHRoZSBsb3ctb3JkZXIgYml0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X20xMjggX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2NtcG5nZV9zcyhfX20xMjggX19hLCBfX20x
MjggX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0
aW5faWEzMl9tb3ZzcyAoKF9fdjRzZikgX19hLCAoX192NHNmKQ0KKwkJX19idWlsdGluX2lhMzJf
Y21wbmxlc3MgKChfX3Y0c2YpIF9fYiwgKF9fdjRzZikgX19hKSk7DQorI2Vsc2UNCisgIHJldHVy
biAoX19tMTI4KV9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLA0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX2J1aWx0aW5faWEzMl9j
bXBubGVzcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpLA0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNCwgMSwgMiwgMyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBD
b21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2Yg
dGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBbNCB4IGZsb2F0XSB0byBkZXRlcm1pbmUg
aWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCisvLy8gICAgb3BlcmFuZCBhcmUgbm90IGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QTkxFUFMgLyBDTVBOTEVQUyA8L2M+DQorLy8vICAg
aW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jbXBuZ2VfcHMoX19t
MTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEz
Ml9jbXBubGVwcygoX192NHNmKV9fYiwgKF9fdjRzZilfX2EpOw0KK30NCisNCisvLy8gQ29tcGFy
ZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgN
CisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qg
b3BlcmFuZCBpcyBvcmRlcmVkIHdpdGgNCisvLy8gICAgcmVzcGVjdCB0byB0aGUgY29ycmVzcG9u
ZGluZyB2YWx1ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlDQorLy8vICAg
IHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpbiB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYSB2ZWN0
b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWQ01QT1JEU1MgLyBDTVBPUkRTUyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyBvbmUgb2YgdGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IG9uZSBvZiB0aGUgb3BlcmFuZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMg
b3BlcmFuZCBhcmUgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3Vs
dHMNCisvLy8gICAgaW4gdGhlIGxvdy1vcmRlciBiaXRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY21wb3JkX3NzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQorew0KKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY21wb3Jkc3MoKF9f
djRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIGVhY2ggb2YgdGhl
IGNvcnJlc3BvbmRpbmcgMzItYml0IGZsb2F0IHZhbHVlcyBvZiB0aGUNCisvLy8gICAgMTI4LWJp
dCB2ZWN0b3JzIG9mIFs0IHggZmxvYXRdIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWVzIGluIHRo
ZSBmaXJzdA0KKy8vLyAgICBvcGVyYW5kIGFyZSBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byB0aG9z
ZSBpbiB0aGUgc2Vjb25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q01QT1JEUFMgLyBDTVBPUkRQUyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
CisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5n
IHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9jbXBvcmRfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7
DQorICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXBvcmRwcygoX192NHNmKV9fYSwg
KF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0
ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyB1bm9yZGVyZWQNCisv
Ly8gICAgd2l0aCByZXNwZWN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBzZWNv
bmQgb3BlcmFuZCBhbmQNCisvLy8gICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJp
c29uIGluIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBhIHZlY3Rvcg0KKy8vLyAgICBvZiBbNCB4IGZs
b2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBU
aGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDTVBVTk9SRFNTIC8gQ01QVU5P
UkRTUyA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyBvbmUgb2Yg
dGhlIG9wZXJhbmRzLiBUaGUgbG93ZXINCisvLy8gICAgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIG9uZSBvZiB0aGUgb3BlcmFu
ZHMuIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUgdXNlZCBp
biB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMNCisvLy8gICAgaW4gdGhl
IGxvdy1vcmRlciBiaXRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fY21wdW5vcmRfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICBy
ZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXB1bm9yZHNzKChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5n
IDMyLWJpdCBmbG9hdCB2YWx1ZXMgb2YgdGhlDQorLy8vICAgIDEyOC1iaXQgdmVjdG9ycyBvZiBb
NCB4IGZsb2F0XSB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3QNCisvLy8g
ICAgb3BlcmFuZCBhcmUgdW5vcmRlcmVkIHdpdGggcmVzcGVjdCB0byB0aG9zZSBpbiB0aGUgc2Vj
b25kIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8N
CisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ01QVU5PUkRQUyAv
IENNUFVOT1JEUFMgPC9jPg0KKy8vLyAgIGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFt
IF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccGFy
YW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxy
ZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fY21wdW5vcmRfcHMoX19tMTI4IF9fYSwgX19tMTI4IF9fYikNCit7DQorICBy
ZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl9jbXB1bm9yZHBzKChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBp
biB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyBmb3IgZXF1YWxp
dHkgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8NCisvLy8g
ICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMg
cmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNT
IDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBs
b3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUNCisvLy8gICAgdHdvIGxvd2VyIDMyLWJpdCB2
YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RF
RkFVTFRfRk5fQVRUUlMNCitfbW1fY29taWVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQor
ew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWllcSgoX192NHNmKV9fYSwgKF9fdjRzZilf
X2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMgaW4gdGhl
IGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJtaW5lIGlm
IHRoZSBmaXJzdCBvcGVyYW5kIGlzIGxlc3MgdGhhbiB0aGUgc2Vjb25kDQorLy8vICAgIG9wZXJh
bmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCisvLy8NCisvLy8g
ICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMg
cmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNTIC8gQ09NSVNT
IDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2Yg
dGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBc
cGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBs
b3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29t
cGFyaXNvbi4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBjb21wYXJp
c29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgICBsb3dlciAzMi1iaXQg
dmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX2NvbWlsdF9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0K
K3sNCisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pbHQoKF9fdjRzZilfX2EsIChfX3Y0c2Yp
X19iKTsNCit9DQorDQorLy8vIENvbXBhcmVzIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIGluIHRo
ZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoDQorLy8vICAgIG9wZXJhbmRzIHRvIGRldGVybWluZSBp
ZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlDQorLy8vICAg
IHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24u
DQorLy8vDQorLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMg
aXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNP
TUlTUyAvIENPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0
cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQor
Ly8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4g
VGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRo
ZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNv
bXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgIGxvd2VyIDMy
LWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGlu
dCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY29taWxlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlsZSgoX192NHNmKV9fYSwgKF9f
djRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1ZXMg
aW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0ZXJt
aW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kDQorLy8v
ICAgIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4NCisv
Ly8NCisvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBpcyBO
YU4sIDAgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09NSVNT
IC8gQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8v
ICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9m
IHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUg
bG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNv
bXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlDQorLy8vICAgICB0d28gbG93ZXIgMzItYml0
IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9jb21pZ3Rfc3MoX19tMTI4IF9fYSwgX19tMTI4IF9fYikN
Cit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taWd0KChfX3Y0c2YpX19hLCAoX192NHNm
KV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyB0d28gMzItYml0IGZsb2F0IHZhbHVlcyBpbiB0
aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aA0KKy8vLyAgICBvcGVyYW5kcyB0byBkZXRlcm1pbmUg
aWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvDQorLy8vICAg
IHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJp
c29uLg0KKy8vLw0KKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFs
dWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4Nmlu
dHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFZDT01JU1MgLyBDT01JU1MgPC9jPiBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29u
Lg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBp
biB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHJldHVybnMgQW4gaW50ZWdlciBjb250YWluaW5nIHRo
ZSBjb21wYXJpc29uIHJlc3VsdHMuIElmIGVpdGhlciBvZiB0aGUgdHdvDQorLy8vICAgIGxvd2Vy
IDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9f
IGludCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY29taWdlX3NzKF9fbTEyOCBfX2EsIF9fbTEy
OCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWlnZSgoX192NHNmKV9fYSwg
KF9fdjRzZilfX2IpOw0KK30NCisNCisvLy8gQ29tcGFyZXMgdHdvIDMyLWJpdCBmbG9hdCB2YWx1
ZXMgaW4gdGhlIGxvdy1vcmRlciBiaXRzIG9mIGJvdGgNCisvLy8gICAgb3BlcmFuZHMgdG8gZGV0
ZXJtaW5lIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIG5vdCBlcXVhbCB0byB0aGUgc2Vjb25kDQor
Ly8vICAgIG9wZXJhbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbi4N
CisvLy8NCisvLy8gICAgSWYgZWl0aGVyIG9mIHRoZSB0d28gbG93ZXIgMzItYml0IHZhbHVlcyBp
cyBOYU4sIDEgaXMgcmV0dXJuZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ09N
SVNTIC8gQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBU
aGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhl
IGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlDQorLy8vICAgICB0d28gbG93ZXIgMzIt
Yml0IHZhbHVlcyBpcyBOYU4sIDEgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jb21pbmVxX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWluZXEoKF9fdjRzZilfX2EsIChf
X3Y0c2YpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29u
IG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIHVzaW5nDQorLy8vICAgIHRoZSBsb3ctb3JkZXIg
Yml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBlcXVhbGl0eSBhbmQgcmV0dXJucw0K
Ky8vLyAgICB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLg0KKy8vLw0KKy8vLyAgICBJZiBl
aXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5l
ZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+
IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQg
YXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisv
Ly8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMg
b2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8v
LyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4g
SWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAgIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFO
LCAwIGlzIHJldHVybmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIGludCBfX0RFRkFVTFRfRk5fQVRU
UlMNCitfbW1fdWNvbWllcV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIHJldHVy
biBfX2J1aWx0aW5faWEzMl91Y29taWVxKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0K
Kw0KKy8vLyBQZXJmb3JtcyBhbiB1bm9yZGVyZWQgY29tcGFyaXNvbiBvZiB0d28gMzItYml0IGZs
b2F0IHZhbHVlcyB1c2luZw0KKy8vLyAgICB0aGUgbG93LW9yZGVyIGJpdHMgb2YgYm90aCBvcGVy
YW5kcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMNCisvLy8gICAgbGVzcyB0
aGFuIHRoZSBzZWNvbmQgb3BlcmFuZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBjb21w
YXJpc29uLg0KKy8vLw0KKy8vLyAgICBJZiBlaXRoZXIgb2YgdGhlIHR3byBsb3dlciAzMi1iaXQg
dmFsdWVzIGlzIE5hTiwgMCBpcyByZXR1cm5lZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZVQ09NSVNTIC8gVUNPTUlTUyA8L2M+IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBh
cmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93
ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBh
cmlzb24uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1
c2VkIGluIHRoZSBjb21wYXJpc29uLg0KKy8vLyBccmV0dXJucyBBbiBpbnRlZ2VyIGNvbnRhaW5p
bmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4gSWYgZWl0aGVyIG9mIHRoZSB0d28NCisvLy8gICAg
bG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5s
aW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91Y29taWx0X3NzKF9fbTEyOCBfX2Es
IF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pbHQoKF9fdjRz
ZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBj
b21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIHVzaW5nDQorLy8vICAgIHRoZSBs
b3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qg
b3BlcmFuZCBpcw0KKy8vLyAgICBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlY29uZCBvcGVy
YW5kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlDQorLy8vICAgIGNvbXBhcmlzb24uDQor
Ly8vDQorLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMg
TmFOLCAwIGlzIHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01J
U1MgLyBVQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRz
IG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisv
Ly8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBU
aGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhl
IGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICAgbG93ZXIgMzIt
Yml0IHZhbHVlcyBpcyBOYU4sIDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91Y29taWxlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBf
X2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pbGUoKF9fdjRzZilfX2EsIChf
X3Y0c2YpX19iKTsNCit9DQorDQorLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29u
IG9mIHR3byAzMi1iaXQgZmxvYXQgdmFsdWVzIHVzaW5nDQorLy8vICAgIHRoZSBsb3ctb3JkZXIg
Yml0cyBvZiBib3RoIG9wZXJhbmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBp
cw0KKy8vLyAgICBncmVhdGVyIHRoYW4gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRo
ZSByZXN1bHQgb2YgdGhlDQorLy8vICAgIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAgIElmIGVp
dGhlciBvZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVk
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU1MgLyBVQ09NSVNTIDwvYz4g
aW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBh
cmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8v
LyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBv
ZiB0aGlzIG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8v
IFxyZXR1cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJ
ZiBlaXRoZXIgb2YgdGhlIHR3bw0KKy8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4s
IDAgaXMgcmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRS
Uw0KK19tbV91Y29taWd0X3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJu
IF9fYnVpbHRpbl9pYTMyX3Vjb21pZ3QoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQor
DQorLy8vIFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxv
YXQgdmFsdWVzIHVzaW5nDQorLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJh
bmRzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcw0KKy8vLyAgICBncmVhdGVy
IHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlY29uZCBvcGVyYW5kIGFuZCByZXR1cm5zIHRoZSByZXN1
bHQgb2YNCisvLy8gICAgdGhlIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAgIElmIGVpdGhlciBv
ZiB0aGUgdHdvIGxvd2VyIDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAwIGlzIHJldHVybmVkLg0KKy8v
Lw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmlu
c2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlVDT01JU1MgLyBVQ09NSVNTIDwvYz4gaW5zdHJ1
Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisv
Ly8gICAgdXNlZCBpbiB0aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlz
IG9wZXJhbmQgYXJlDQorLy8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1
cm5zIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRo
ZXIgb2YgdGhlIHR3bw0KKy8vLyAgICAgbG93ZXIgMzItYml0IHZhbHVlcyBpcyBOYU4sIDAgaXMg
cmV0dXJuZWQuDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV91Y29taWdlX3NzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVp
bHRpbl9pYTMyX3Vjb21pZ2UoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCit9DQorDQorLy8v
IFBlcmZvcm1zIGFuIHVub3JkZXJlZCBjb21wYXJpc29uIG9mIHR3byAzMi1iaXQgZmxvYXQgdmFs
dWVzIHVzaW5nDQorLy8vICAgIHRoZSBsb3ctb3JkZXIgYml0cyBvZiBib3RoIG9wZXJhbmRzIHRv
IGRldGVybWluZSBpbmVxdWFsaXR5IGFuZCByZXR1cm5zDQorLy8vICAgIHRoZSByZXN1bHQgb2Yg
dGhlIGNvbXBhcmlzb24uDQorLy8vDQorLy8vICAgIElmIGVpdGhlciBvZiB0aGUgdHdvIGxvd2Vy
IDMyLWJpdCB2YWx1ZXMgaXMgTmFOLCAxIGlzIHJldHVybmVkLg0KKy8vLw0KKy8vLyBcaGVhZGVy
ZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRz
IHRvIHRoZSA8Yz4gVlVDT01JU1MgLyBVQ09NSVNTIDwvYz4gaW5zdHJ1Y3Rpb25zLg0KKy8vLw0K
Ky8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0u
IFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0
aGUgY29tcGFyaXNvbi4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9y
IG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBvZiB0aGlzIG9wZXJhbmQgYXJlDQor
Ly8vICAgIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24uDQorLy8vIFxyZXR1cm5zIEFuIGludGVnZXIg
Y29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1bHRzLiBJZiBlaXRoZXIgb2YgdGhlIHR3bw0K
Ky8vLyAgICBsb3dlciAzMi1iaXQgdmFsdWVzIGlzIE5hTiwgMSBpcyByZXR1cm5lZC4NCitzdGF0
aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3Vjb21pbmVxX3NzKF9f
bTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21p
bmVxKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYik7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyBhIGZs
b2F0IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZg0K
Ky8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgMzItYml0IGludGVnZXIuDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWQ1ZUU1MyU0kgLyBDVlRTUzJTSSA8L2M+DQorLy8vICAgaW5zdHJ1
Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisv
Ly8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50
ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5lX18g
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzc19zaTMyKF9fbTEyOCBfX2EpDQorew0K
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNzMnNpKChfX3Y0c2YpX19hKTsNCit9DQorDQor
Ly8vIENvbnZlcnRzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRz
IG9mIGEgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSAzMi1iaXQgaW50ZWdl
ci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlz
IGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTUzJTSSAvIENWVFNTMlNJIDwv
Yz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhp
cyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJzaW9uLg0KKy8vLyBccmV0
dXJucyBBIDMyLWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZS4NCitz
dGF0aWMgX19pbmxpbmVfXyBpbnQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dF9zczJzaShf
X20xMjggX19hKQ0KK3sNCisgIHJldHVybiBfbW1fY3Z0c3Nfc2kzMihfX2EpOw0KK30NCisNCisj
aWZkZWYgX194ODZfNjRfXw0KKw0KKy8vLyBDb252ZXJ0cyBhIGZsb2F0IHZhbHVlIGNvbnRhaW5l
ZCBpbiB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0
XSBpbnRvIGEgNjQtYml0IGludGVnZXIuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRy
aW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBW
Q1ZUU1MyU0kgLyBDVlRTUzJTSSA8L2M+DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRo
ZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUg
Y29udmVyc2lvbi4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRo
ZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5lX18gbG9uZyBsb25nIF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9jdnRzc19zaTY0KF9fbTEyOCBfX2EpDQorew0KKyAgcmV0dXJuIF9f
YnVpbHRpbl9pYTMyX2N2dHNzMnNpNjQoKF9fdjRzZilfX2EpOw0KK30NCisNCisjZW5kaWYNCisN
CisvLy8gQ29udmVydHMgdHdvIGxvdy1vcmRlciBmbG9hdCB2YWx1ZXMgaW4gYSAxMjgtYml0IHZl
Y3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XSBpbnRvIGEgNjQtYml0IHZlY3RvciBvZiBbMiB4
IGkzMl0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQUzJQSSA8L2M+IGluc3Ry
dWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQg
X19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9jdnRwc19waTMyKF9fbTEyOCBfX2EpDQorew0K
KyAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9jdnRwczJwaSgoX192NHNmKV9fYSk7DQor
fQ0KKw0KKy8vLyBDb252ZXJ0cyB0d28gbG93LW9yZGVyIGZsb2F0IHZhbHVlcyBpbiBhIDEyOC1i
aXQgdmVjdG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRdIGludG8gYSA2NC1iaXQgdmVjdG9yIG9m
IFsyIHggaTMyXS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0
b3IgY29udGFpbmluZyB0aGUgY29udmVydGVkIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVfXyBf
X202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dF9wczJwaShfX20xMjggX19hKQ0K
K3sNCisgIHJldHVybiBfbW1fY3Z0cHNfcGkzMihfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMg
YSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJpdHMgb2YgYSB2ZWN0b3Ig
b2YNCisvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDMyLWJpdCBpbnRlZ2VyLCB0cnVuY2F0aW5n
IHRoZSByZXN1bHQgd2hlbiBpdCBpcw0KKy8vLyAgICBpbmV4YWN0Lg0KKy8vLw0KKy8vLyBcaGVh
ZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gVkNWVFRTUzJTSSAvIENWVFRTUzJTSSA8L2M+DQorLy8vICAgaW5zdHJ1
Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBhcmUNCisv
Ly8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50
ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3RhdGljIF9faW5saW5lX18g
aW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnR0c3Nfc2kzMihfX20xMjggX19hKQ0KK3sN
CisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2koKF9fdjRzZilfX2EpOw0KK30NCisN
CisvLy8gQ29udmVydHMgYSBmbG9hdCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxvd2VyIDMyIGJp
dHMgb2YgYSB2ZWN0b3Igb2YNCisvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDMyLWJpdCBpbnRl
Z2VyLCB0cnVuY2F0aW5nIHRoZSByZXN1bHQgd2hlbiBpdCBpcw0KKy8vLyAgICBpbmV4YWN0Lg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFRTUzJTSSAvIENWVFRTUzJTSSA8L2M+
DQorLy8vICAgaW5zdHJ1Y3Rpb25zLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMg
b3BlcmFuZCBhcmUNCisvLy8gICAgdXNlZCBpbiB0aGUgY29udmVyc2lvbi4NCisvLy8gXHJldHVy
bnMgQSAzMi1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWUuDQorc3Rh
dGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnR0X3NzMnNpKF9f
bTEyOCBfX2EpDQorew0KKyAgcmV0dXJuIF9tbV9jdnR0c3Nfc2kzMihfX2EpOw0KK30NCisNCisj
aWZkZWYgX194ODZfNjRfXw0KKy8vLyBDb252ZXJ0cyBhIGZsb2F0IHZhbHVlIGNvbnRhaW5lZCBp
biB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIHZlY3RvciBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XSBp
bnRvIGEgNjQtYml0IGludGVnZXIsIHRydW5jYXRpbmcgdGhlIHJlc3VsdCB3aGVuIGl0IGlzDQor
Ly8vICAgIGluZXhhY3QuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWQ1ZUVFNTMlNJ
IC8gQ1ZUVFNTMlNJIDwvYz4NCisvLy8gICBpbnN0cnVjdGlvbnMuDQorLy8vDQorLy8vIFxwYXJh
bSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2Vy
IDMyIGJpdHMgb2YgdGhpcyBvcGVyYW5kIGFyZQ0KKy8vLyAgICB1c2VkIGluIHRoZSBjb252ZXJz
aW9uLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNvbnZl
cnRlZCB2YWx1ZS4NCitzdGF0aWMgX19pbmxpbmVfXyBsb25nIGxvbmcgX19ERUZBVUxUX0ZOX0FU
VFJTDQorX21tX2N2dHRzc19zaTY0KF9fbTEyOCBfX2EpDQorew0KKyAgcmV0dXJuIF9fYnVpbHRp
bl9pYTMyX2N2dHRzczJzaTY0KChfX3Y0c2YpX19hKTsNCit9DQorI2VuZGlmDQorDQorLy8vIENv
bnZlcnRzIHR3byBsb3ctb3JkZXIgZmxvYXQgdmFsdWVzIGluIGEgMTI4LWJpdCB2ZWN0b3Igb2YN
CisvLy8gICAgWzQgeCBmbG9hdF0gaW50byBhIDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLCB0
cnVuY2F0aW5nIHRoZSByZXN1bHQNCisvLy8gICAgd2hlbiBpdCBpcyBpbmV4YWN0Lg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUVFBTMlBJIC8gVlRUUFMyUEkgPC9jPg0KKy8vLyAg
IGluc3RydWN0aW9ucy4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSBjb252ZXJ0ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9f
IF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fY3Z0dHBzX3BpMzIoX19tMTI4IF9f
YSkNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX2N2dHRwczJwaSgoX192NHNm
KV9fYSk7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0d28gbG93LW9yZGVyIGZsb2F0IHZhbHVlcyBp
biBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgNCisvLy8gICAgZmxvYXRdIGludG8gYSA2NC1iaXQg
dmVjdG9yIG9mIFsyIHggaTMyXSwgdHJ1bmNhdGluZyB0aGUgcmVzdWx0IHdoZW4gaXQNCisvLy8g
ICAgaXMgaW5leGFjdC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFRQUzJQSSA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIg
dmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbnZlcnRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9jdnR0X3BzMnBpKF9fbTEyOCBf
X2EpDQorew0KKyAgcmV0dXJuIF9tbV9jdnR0cHNfcGkzMihfX2EpOw0KK30NCisNCisvLy8gQ29u
dmVydHMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgaW50byBhIGZsb2F0aW5nIHBvaW50
IHZhbHVlDQorLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhl
IGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQorLy8vICAgIGhpZ2hlciBvcmRlciBlbGVtZW50
cyBvZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yIGFyZSBjb3BpZWQgZnJvbSB0aGUNCisvLy8gICAg
Y29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZDVlRTSTJTUyAvIENWVFNJMlNTIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDMyLWJpdCBzaWduZWQgaW50ZWdl
ciBvcGVyYW5kIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRz
IGNvbnRhaW4gdGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJh
bmQuIFRoZSB1cHBlciA5NiBiaXRzIGFyZSBjb3BpZWQgZnJvbQ0KKy8vLyAgICB0aGUgdXBwZXIg
OTYgYml0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX2N2dHNpMzJfc3MoX19tMTI4IF9fYSwgaW50IF9fYikN
Cit7DQorICBfX2FbMF0gPSBfX2I7DQorICByZXR1cm4gX19hOw0KK30NCisNCisvLy8gQ29udmVy
dHMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgaW50byBhIGZsb2F0aW5nIHBvaW50IHZh
bHVlDQorLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIGRl
c3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQorLy8vICAgIGhpZ2hlciBvcmRlciBlbGVtZW50cyBv
ZiB0aGUgZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25k
aW5nIGVsZW1lbnRzIGluIHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gVkNWVFNJMlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisv
Ly8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMzItYml0IHNpZ25lZCBpbnRlZ2VyIG9wZXJhbmQg
Y29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0
aGUNCisvLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVw
cGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciA5NiBiaXRzIG9m
IHRoZSBmaXJzdCBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlMNCitfbW1fY3Z0X3NpMnNzKF9fbTEyOCBfX2EsIGludCBfX2IpDQorew0KKyAgcmV0
dXJuIF9tbV9jdnRzaTMyX3NzKF9fYSwgX19iKTsNCit9DQorDQorI2lmZGVmIF9feDg2XzY0X18N
CisNCisvLy8gQ29udmVydHMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWUgaW50byBhIGZs
b2F0aW5nIHBvaW50IHZhbHVlDQorLy8vICAgIGFuZCB3cml0ZXMgaXQgdG8gdGhlIGxvd2VyIDMy
IGJpdHMgb2YgdGhlIGRlc3RpbmF0aW9uLiBUaGUgcmVtYWluaW5nDQorLy8vICAgIGhpZ2hlciBv
cmRlciBlbGVtZW50cyBvZiB0aGUgZGVzdGluYXRpb24gYXJlIGNvcGllZCBmcm9tIHRoZQ0KKy8v
LyAgICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBmaXJzdCBvcGVyYW5kLg0KKy8vLw0K
Ky8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVkNWVFNJMlNTIC8gQ1ZUU0kyU1MgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IHNpZ25lZCBp
bnRlZ2VyIG9wZXJhbmQgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkLg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDMy
IGJpdHMgY29udGFpbiB0aGUNCisvLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQg
b3BlcmFuZC4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1
cHBlciA5NiBiaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9f
bTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fY3Z0c2k2NF9zcyhfX20xMjggX19hLCBsb25n
IGxvbmcgX19iKQ0KK3sNCisgIF9fYVswXSA9IF9fYjsNCisgIHJldHVybiBfX2E7DQorfQ0KKw0K
KyNlbmRpZg0KKw0KKy8vLyBDb252ZXJ0cyB0d28gZWxlbWVudHMgb2YgYSA2NC1iaXQgdmVjdG9y
IG9mIFsyIHggaTMyXSBpbnRvIHR3bw0KKy8vLyAgICBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYW5k
IHdyaXRlcyB0aGVtIHRvIHRoZSBsb3dlciA2NC1iaXRzIG9mIHRoZQ0KKy8vLyAgICBkZXN0aW5h
dGlvbi4gVGhlIHJlbWFpbmluZyBoaWdoZXIgb3JkZXIgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0
aW9uIGFyZQ0KKy8vLyAgICBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBp
biB0aGUgZmlyc3Qgb3BlcmFuZC4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBJ
MlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBB
IDY0LWJpdCB2ZWN0b3Igb2YgWzIgeCBpMzJdLiBUaGUgZWxlbWVudHMgaW4gdGhpcyB2ZWN0b3Ig
YXJlIGNvbnZlcnRlZA0KKy8vLyAgICBhbmQgd3JpdHRlbiB0byB0aGUgY29ycmVzcG9uZGluZyBs
b3ctb3JkZXIgZWxlbWVudHMgaW4gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdob3NlIGxvd2VyIDY0IGJpdHMgY29udGFpbiB0
aGUNCisvLy8gICAgY29udmVydGVkIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHVw
cGVyIDY0IGJpdHMgYXJlIGNvcGllZCBmcm9tDQorLy8vICAgIHRoZSB1cHBlciA2NCBiaXRzIG9m
IHRoZSBmaXJzdCBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRf
Rk5fQVRUUlNfTU1YDQorX21tX2N2dHBpMzJfcHMoX19tMTI4IF9fYSwgX19tNjQgX19iKQ0KK3sN
CisgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRwaTJwcygoX192NHNmKV9fYSwgKF9fdjJzaSlf
X2IpOw0KK30NCisNCisvLy8gQ29udmVydHMgdHdvIGVsZW1lbnRzIG9mIGEgNjQtYml0IHZlY3Rv
ciBvZiBbMiB4IGkzMl0gaW50byB0d28NCisvLy8gICAgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGFu
ZCB3cml0ZXMgdGhlbSB0byB0aGUgbG93ZXIgNjQtYml0cyBvZiB0aGUNCisvLy8gICAgZGVzdGlu
YXRpb24uIFRoZSByZW1haW5pbmcgaGlnaGVyIG9yZGVyIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5h
dGlvbiBhcmUNCisvLy8gICAgY29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMg
aW4gdGhlIGZpcnN0IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4u
aD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQ
STJQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAg
QSA2NC1iaXQgdmVjdG9yIG9mIFsyIHggaTMyXS4gVGhlIGVsZW1lbnRzIGluIHRoaXMgdmVjdG9y
IGFyZSBjb252ZXJ0ZWQNCisvLy8gICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGNvcnJlc3BvbmRpbmcg
bG93LW9yZGVyIGVsZW1lbnRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRhaW4g
dGhlDQorLy8vICAgIGNvbnZlcnRlZCB2YWx1ZSBmcm9tIHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhl
IHVwcGVyIDY0IGJpdHMgYXJlIGNvcGllZA0KKy8vLyAgICBmcm9tIHRoZSB1cHBlciA2NCBiaXRz
IG9mIHRoZSBmaXJzdCBvcGVyYW5kLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFV
TFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dF9waTJwcyhfX20xMjggX19hLCBfX202NCBfX2IpDQor
ew0KKyAgcmV0dXJuIF9tbV9jdnRwaTMyX3BzKF9fYSwgX19iKTsNCit9DQorDQorLy8vIEV4dHJh
Y3RzIGEgZmxvYXQgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsb3dlciAzMiBiaXRzIG9mIGEgdmVj
dG9yIG9mDQorLy8vICAgIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGhhcyBubyBjb3JyZXNwb25kaW5n
IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciAzMiBiaXRzIG9mIHRoaXMgb3BlcmFuZCBh
cmUNCisvLy8gICAgdXNlZCBpbiB0aGUgZXh0cmFjdGlvbi4NCisvLy8gXHJldHVybnMgQSAzMi1i
aXQgZmxvYXQgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIHZhbHVlLg0KK3N0YXRpYyBfX2lubGlu
ZV9fIGZsb2F0IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9jdnRzc19mMzIoX19tMTI4IF9fYSkN
Cit7DQorICByZXR1cm4gX19hWzBdOw0KK30NCisNCisvLy8gTG9hZHMgdHdvIHBhY2tlZCBmbG9h
dCB2YWx1ZXMgZnJvbSB0aGUgYWRkcmVzcyBcYSBfX3AgaW50byB0aGUNCisvLy8gICAgIGhpZ2gt
b3JkZXIgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93LW9y
ZGVyIGJpdHMNCisvLy8gICAgIGFyZSBjb3BpZWQgZnJvbSB0aGUgbG93LW9yZGVyIGJpdHMgb2Yg
dGhlIGZpcnN0IG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WSFBE
IC8gTU9WSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gQml0cyBbNjM6MF0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbNjM6MF0NCisvLy8gICAgb2YgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccGFy
YW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byB0d28gcGFja2VkIGZsb2F0IHZhbHVlcy4gQml0
cyBbNjM6MF0gYXJlIHdyaXR0ZW4gdG8gYml0cw0KKy8vLyAgICBbMTI3OjY0XSBvZiB0aGUgZGVz
dGluYXRpb24uDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
Y29udGFpbmluZyB0aGUgbW92ZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZGhfcGkoX19tMTI4IF9fYSwgY29uc3QgX19tNjQg
Kl9fcCkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGlu
X2lhMzJfbG9hZGhwcyAoKF9fdjRzZilfX2EsIChjb25zdCBfX3Yyc2YgKilfX3ApOw0KKyNlbHNl
DQorICB0eXBlZGVmIGZsb2F0IF9fbW1fbG9hZGhfcGlfdjJmMzIgX19hdHRyaWJ1dGVfXygoX192
ZWN0b3Jfc2l6ZV9fKDgpKSk7DQorICBzdHJ1Y3QgX19tbV9sb2FkaF9waV9zdHJ1Y3Qgew0KKyAg
ICBfX21tX2xvYWRoX3BpX3YyZjMyIF9fdTsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRf
XywgX19tYXlfYWxpYXNfXykpOw0KKyAgX19tbV9sb2FkaF9waV92MmYzMiBfX2IgPSAoKHN0cnVj
dCBfX21tX2xvYWRoX3BpX3N0cnVjdCopX19wKS0+X191Ow0KKyAgX19tMTI4IF9fYmIgPSBfX2J1
aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2IsIF9fYiwgMCwgMSwgMCwgMSk7DQorICByZXR1cm4gX19i
dWlsdGluX3NodWZmbGV2ZWN0b3IoX19hLCBfX2JiLCAwLCAxLCA0LCA1KTsNCisjZW5kaWYNCit9
DQorDQorLy8vIExvYWRzIHR3byBwYWNrZWQgZmxvYXQgdmFsdWVzIGZyb20gdGhlIGFkZHJlc3Mg
XGEgX19wIGludG8gdGhlDQorLy8vICAgIGxvdy1vcmRlciBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBoaWdoLW9yZGVyIGJpdHMNCisvLy8gICAgYXJlIGNvcGll
ZCBmcm9tIHRoZSBoaWdoLW9yZGVyIGJpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WTFBEIC8gTU9WTFBEIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4
IGZsb2F0XS4gQml0cyBbMTI3OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzDQorLy8vICAgIFsxMjc6
NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50
ZXIgdG8gdHdvIHBhY2tlZCBmbG9hdCB2YWx1ZXMuIEJpdHMgWzYzOjBdIGFyZSB3cml0dGVuIHRv
IGJpdHMNCisvLy8gICAgWzYzOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBtb3ZlZCB2YWx1
ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9s
b2FkbF9waShfX20xMjggX19hLCBjb25zdCBfX202NCAqX19wKQ0KK3sNCisjaWZkZWYgX19HTlVD
X18NCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9sb2FkbHBzICgoX192NHNmKV9f
YSwgKGNvbnN0IF9fdjJzZiAqKV9fcCk7DQorI2Vsc2UNCisgIHR5cGVkZWYgZmxvYXQgX19tbV9s
b2FkbF9waV92MmYzMiBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oOCkpKTsNCisgIHN0
cnVjdCBfX21tX2xvYWRsX3BpX3N0cnVjdCB7DQorICAgIF9fbW1fbG9hZGxfcGlfdjJmMzIgX191
Ow0KKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICBf
X21tX2xvYWRsX3BpX3YyZjMyIF9fYiA9ICgoc3RydWN0IF9fbW1fbG9hZGxfcGlfc3RydWN0Kilf
X3ApLT5fX3U7DQorICBfX20xMjggX19iYiA9IF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKF9fYiwg
X19iLCAwLCAxLCAwLCAxKTsNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcihfX2Es
IF9fYmIsIDQsIDUsIDIsIDMpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXINCisv
Ly8gICAgMzIgYml0cyBvZiB0aGUgdmVjdG9yIGFyZSBpbml0aWFsaXplZCB3aXRoIHRoZSBzaW5n
bGUtcHJlY2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlIGxvYWRlZCBmcm9tIGEg
c3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4gVGhlIHVwcGVyDQorLy8vICAgIDk2IGJpdHMgYXJl
IHNldCB0byB6ZXJvLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNTIC8gTU9W
U1MgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBv
aW50ZXIgdG8gYSAzMi1iaXQgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgYSBzaW5nbGUtcHJl
Y2lzaW9uDQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZhbHVlLg0KKy8vLyBccmV0dXJucyBBbiBp
bml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4g
VGhlDQorLy8vICAgIGxvd2VyIDMyIGJpdHMgY29udGFpbiB0aGUgdmFsdWUgbG9hZGVkIGZyb20g
dGhlIG1lbW9yeSBsb2NhdGlvbi4gVGhlDQorLy8vICAgIHVwcGVyIDk2IGJpdHMgYXJlIHNldCB0
byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitf
bW1fbG9hZF9zcyhjb25zdCBmbG9hdCAqX19wKQ0KK3sNCisgIHN0cnVjdCBfX21tX2xvYWRfc3Nf
c3RydWN0IHsNCisgICAgZmxvYXQgX191Ow0KKyAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9f
LCBfX21heV9hbGlhc19fKSk7DQorICBmbG9hdCBfX3UgPSAoKHN0cnVjdCBfX21tX2xvYWRfc3Nf
c3RydWN0KilfX3ApLT5fX3U7DQorICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KXsgX191
LCAwLCAwLCAwIH07DQorfQ0KKw0KKy8vLyBMb2FkcyBhIDMyLWJpdCBmbG9hdCB2YWx1ZSBhbmQg
ZHVwbGljYXRlcyBpdCB0byBhbGwgZm91ciB2ZWN0b3INCisvLy8gICAgZWxlbWVudHMgb2YgYSAx
MjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZCUk9BRENBU1RTUyAvIE1PVlNTICsgc2h1ZmZsaW5nIDwvYz4NCisvLy8gICAgaW5zdHJ1
Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgZmxv
YXQgdmFsdWUgdG8gYmUgbG9hZGVkIGFuZCBkdXBsaWNhdGVkLg0KKy8vLyBccmV0dXJucyBBIDEy
OC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIGxvYWRlZCBhbmQNCisv
Ly8gICAgZHVwbGljYXRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVG
QVVMVF9GTl9BVFRSUw0KK19tbV9sb2FkMV9wcyhjb25zdCBmbG9hdCAqX19wKQ0KK3sNCisgIHN0
cnVjdCBfX21tX2xvYWQxX3BzX3N0cnVjdCB7DQorICAgIGZsb2F0IF9fdTsNCisgIH0gX19hdHRy
aWJ1dGVfXygoX19wYWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgZmxvYXQgX191ID0gKChz
dHJ1Y3QgX19tbV9sb2FkMV9wc19zdHJ1Y3QqKV9fcCktPl9fdTsNCisgIHJldHVybiBfX2V4dGVu
c2lvbl9fIChfX20xMjgpeyBfX3UsIF9fdSwgX191LCBfX3UgfTsNCit9DQorDQorI2RlZmluZSAg
ICAgICAgX21tX2xvYWRfcHMxKHApIF9tbV9sb2FkMV9wcyhwKQ0KKw0KKy8vLyBMb2FkcyBhIDEy
OC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGZyb20gYW4gYWxpZ25l
ZA0KKy8vLyAgICBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBWTU9WQVBTIC8gTU9WQVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBh
ZGRyZXNzIG9mIHRoZSBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24gaGFzIHRvIGJlIDEyOC1iaXQg
YWxpZ25lZC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZSBsb2FkZWQgdmFsdWVzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBf
X0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbG9hZF9wcyhjb25zdCBmbG9hdCAqX19wKQ0KK3sNCisg
IHJldHVybiAqKF9fbTEyOCopX19wOw0KK30NCisNCisvLy8gTG9hZHMgYSAxMjgtYml0IGZsb2F0
aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBmcm9tIGFuDQorLy8vICAgIHVuYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWTU9WVVBT
IC8gTU9WVVBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8g
ICAgQSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uIFRoZSBhZGRyZXNzIG9m
IHRoZSBtZW1vcnkNCisvLy8gICAgbG9jYXRpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBhbGlnbmVk
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIGxvYWRlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVM
VF9GTl9BVFRSUw0KK19tbV9sb2FkdV9wcyhjb25zdCBmbG9hdCAqX19wKQ0KK3sNCisgIHN0cnVj
dCBfX2xvYWR1X3BzIHsNCisgICAgX19tMTI4IF9fdjsNCisgIH0gX19hdHRyaWJ1dGVfXygoX19w
YWNrZWRfXywgX19tYXlfYWxpYXNfXykpOw0KKyAgcmV0dXJuICgoc3RydWN0IF9fbG9hZHVfcHMq
KV9fcCktPl9fdjsNCit9DQorDQorLy8vIExvYWRzIGZvdXIgcGFja2VkIGZsb2F0IHZhbHVlcywg
aW4gcmV2ZXJzZSBvcmRlciwgZnJvbSBhbiBhbGlnbmVkDQorLy8vICAgIG1lbW9yeSBsb2NhdGlv
biB0byAzMi1iaXQgZWxlbWVudHMgaW4gYSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZBUFMgLyBNT1ZBUFMgKyBzaHVmZmxp
bmcgPC9jPg0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8v
LyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mg
b2YgdGhlIG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbiBoYXMgdG8gYmUgMTI4LWJpdCBhbGlnbmVk
Lg0KKy8vLyBccmV0dXJucyBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5p
bmcgdGhlIG1vdmVkIHZhbHVlcywgbG9hZGVkDQorLy8vICAgIGluIHJldmVyc2Ugb3JkZXIuDQor
c3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9sb2Fkcl9w
cyhjb25zdCBmbG9hdCAqX19wKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19t
MTI4KSBfX2J1aWx0aW5faWEzMl9zaHVmcHMgKCooX192NHNmICopX19wLCAqKF9fdjRzZiAqKV9f
cCwgX01NX1NIVUZGTEUgKDAsMSwyLDMpKTsNCisjZWxzZQ0KKyAgX19tMTI4IF9fYSA9IF9tbV9s
b2FkX3BzKF9fcCk7DQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilf
X2EsIChfX3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENyZWF0
ZSBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIHdpdGggdW5kZWZpbmVkIHZhbHVlcy4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGlu
dHJpbnNpYyBoYXMgbm8gY29ycmVzcG9uZGluZyBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHVuZGVmaW5l
ZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0K
K19tbV91bmRlZmluZWRfcHModm9pZCkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICBfX20xMjgg
X19YID0gX19YOw0KKyAgcmV0dXJuIF9fWDsNCisjZWxzZQ0KKyAgcmV0dXJuIChfX20xMjgpX19i
dWlsdGluX2lhMzJfdW5kZWYxMjgoKTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnN0cnVjdHMg
YSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlIGxvd2Vy
DQorLy8vICAgIDMyIGJpdHMgb2YgdGhlIHZlY3RvciBhcmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUg
c3BlY2lmaWVkIHNpbmdsZS1wcmVjaXNpb24NCisvLy8gICAgZmxvYXRpbmctcG9pbnQgdmFsdWUu
IFRoZSB1cHBlciA5NiBiaXRzIGFyZSBzZXQgdG8gemVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZTUyAvIE1PVlNTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxw
YXJhbSBfX3cNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVl
IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbG93ZXIgMzINCisvLy8gICAgYml0cyBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50
IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4gVGhlDQorLy8vICAgIGxvd2VyIDMyIGJpdHMgY29udGFp
biB0aGUgdmFsdWUgcHJvdmlkZWQgaW4gdGhlIHNvdXJjZSBvcGVyYW5kLiBUaGUNCisvLy8gICAg
dXBwZXIgOTYgYml0cyBhcmUgc2V0IHRvIHplcm8uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4
IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRfc3MoZmxvYXQgX193KQ0KK3sNCisgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIDAsIDAsIDAgfTsNCit9DQorDQorLy8vIENv
bnN0cnVjdHMgYSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSwg
d2l0aCBlYWNoDQorLy8vICAgIG9mIHRoZSBmb3VyIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmct
cG9pbnQgdmVjdG9yIGVsZW1lbnRzIHNldCB0byB0aGUNCisvLy8gICAgc3BlY2lmaWVkIHNpbmds
ZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8g
dGhlIDxjPiBWUEVSTUlMUFMgLyBQRVJNSUxQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX193DQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2
YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgZWFjaCB2ZWN0b3INCisvLy8gICAgZWxlbWVudCBvZiB0
aGUgcmVzdWx0Lg0KKy8vLyBccmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3NldDFfcHMoZmxvYXQgX193KQ0KK3sNCisgIHJldHVy
biBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyBfX3csIF9fdywgX193LCBfX3cgfTsNCit9DQorDQor
LyogTWljcm9zb2Z0IHNwZWNpZmljLiAqLw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9h
dGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0sIHdpdGggZWFjaA0KKy8vLyAgICBvZiB0
aGUgZm91ciBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZlY3RvciBlbGVtZW50cyBz
ZXQgdG8gdGhlDQorLy8vICAgIHNwZWNpZmllZCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBv
aW50IHZhbHVlLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFUk1JTFBTIC8gUEVS
TUlMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBB
IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXpl
IGVhY2ggdmVjdG9yDQorLy8vICAgIGVsZW1lbnQgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVy
bnMgQW4gaW5pdGlhbGl6ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19t
bV9zZXRfcHMxKGZsb2F0IF9fdykNCit7DQorICAgIHJldHVybiBfbW1fc2V0MV9wcyhfX3cpOw0K
K30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdDQorLy8vICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHNwZWNpZmllZCBzaW5n
bGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBpcyBhIHV0aWxpdHkg
ZnVuY3Rpb24gYW5kIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBzcGVjaWZpYw0KKy8vLyAgICBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9feg0KKy8vLyAgICBBIHNpbmdsZS1wcmVj
aXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEyNzo5
Nl0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9feQ0KKy8vLyAgICBBIHNp
bmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJp
dHMgWzk1OjY0XQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBccGFyYW0gX194DQorLy8v
ICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRp
YWxpemUgYml0cyBbNjM6MzJdDQorLy8vICAgIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBf
X3cNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQg
dG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXQ0KKy8vLyAgICBvZiB0aGUgcmVzdWx0Lg0KKy8vLyBc
cmV0dXJucyBBbiBpbml0aWFsaXplZCAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBb
NCB4IGZsb2F0XS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjggX19ERUZBVUxUX0ZOX0FUVFJT
DQorX21tX3NldF9wcyhmbG9hdCBfX3osIGZsb2F0IF9feSwgZmxvYXQgX194LCBmbG9hdCBfX3cp
DQorew0KKyAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOCl7IF9fdywgX194LCBfX3ksIF9f
eiB9Ow0KK30NCisNCisvLy8gQ29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVj
dG9yIG9mIFs0IHggZmxvYXRdLA0KKy8vLyAgICBpbml0aWFsaXplZCBpbiByZXZlcnNlIG9yZGVy
IHdpdGggdGhlIHNwZWNpZmllZCAzMi1iaXQgc2luZ2xlLXByZWNpc2lvbg0KKy8vLyAgICBmbG9h
dC1wb2ludCB2YWx1ZXMuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisv
Ly8NCisvLy8gVGhpcyBpbnRyaW5zaWMgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uIGFuZCBkb2VzIG5v
dCBjb3JyZXNwb25kIHRvIGEgc3BlY2lmaWMNCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX3oNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50
IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFszMTowXQ0KKy8vLyAgICBvZiB0aGUgcmVz
dWx0Lg0KKy8vLyBccGFyYW0gX195DQorLy8vICAgIEEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGlu
Zy1wb2ludCB2YWx1ZSB1c2VkIHRvIGluaXRpYWxpemUgYml0cyBbNjM6MzJdDQorLy8vICAgIG9m
IHRoZSByZXN1bHQuDQorLy8vIFxwYXJhbSBfX3gNCisvLy8gICAgQSBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHZhbHVlIHVzZWQgdG8gaW5pdGlhbGl6ZSBiaXRzIFs5NTo2NF0NCisv
Ly8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fdw0KKy8vLyAgICBBIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWUgdXNlZCB0byBpbml0aWFsaXplIGJpdHMgWzEy
Nzo5Nl0NCisvLy8gICAgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQW4gaW5pdGlhbGl6
ZWQgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorc3RhdGlj
IF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zZXRyX3BzKGZsb2F0
IF9feiwgZmxvYXQgX195LCBmbG9hdCBfX3gsIGZsb2F0IF9fdykNCit7DQorICByZXR1cm4gX19l
eHRlbnNpb25fXyAoX19tMTI4KXsgX196LCBfX3ksIF9feCwgX193IH07DQorfQ0KKw0KKy8vLyBD
b25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0g
aW5pdGlhbGl6ZWQNCisvLy8gICAgdG8gemVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4
NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUg
PGM+IFZYT1JQUyAvIFhPUlBTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxyZXR1cm5z
IEFuIGluaXRpYWxpemVkIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdIHdpdGgNCisvLy8gICAgYWxsIGVsZW1lbnRzIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lu
bGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fc2V0emVyb19wcyh2b2lkKQ0K
K3sNCisgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyAwLCAwLCAwLCAwIH07DQorfQ0K
Kw0KKy8vLyBTdG9yZXMgdGhlIHVwcGVyIDY0IGJpdHMgb2YgYSAxMjgtYml0IHZlY3RvciBvZiBb
NCB4IGZsb2F0XSB0byBhDQorLy8vICAgIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZQRVhUUlEgLyBQRVhUUlEgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxv
Y2F0aW9uLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZC4NCitzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9yZWhfcGkoX19tNjQgKl9f
cCwgX19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICBfX2J1aWx0aW5faWEzMl9z
dG9yZWhwcygoX192MnNmICopX19wLCAoX192NHNmKV9fYSk7DQorI2Vsc2UNCisgIF9fYnVpbHRp
bl9pYTMyX3N0b3JlaHBzKChfX3Yyc2kgKilfX3AsIChfX3Y0c2YpX19hKTsNCisjZW5kaWYNCit9
DQorDQorLy8vIFN0b3JlcyB0aGUgbG93ZXIgNjQgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9m
IFs0IHggZmxvYXRdIHRvIGENCisvLy8gICAgIG1lbW9yeSBsb2NhdGlvbi4NCisvLy8NCisvLy8g
XGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3Jy
ZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZMUFMgLyBNT1ZMUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisv
Ly8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRp
b24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGZsb2F0IHZhbHVlcy4NCisvLy8gXHBhcmFtIF9fYQ0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGNvbnRhaW5pbmcgdGhlIHZh
bHVlcyB0byBiZSBzdG9yZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5f
QVRUUlMNCitfbW1fc3RvcmVsX3BpKF9fbTY0ICpfX3AsIF9fbTEyOCBfX2EpDQorew0KKyNpZmRl
ZiBfX0dOVUNfXw0KKyAgX19idWlsdGluX2lhMzJfc3RvcmVscHMgKChfX3Yyc2YgKilfX3AsIChf
X3Y0c2YpX19hKTsNCisjZWxzZQ0KKyAgX19idWlsdGluX2lhMzJfc3RvcmVscHMoKF9fdjJzaSAq
KV9fcCwgKF9fdjRzZilfX2EpOw0KKyNlbmRpZg0KK30NCisNCisvLy8gU3RvcmVzIHRoZSBsb3dl
ciAzMiBiaXRzIG9mIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYQ0KKy8vLyAg
ICAgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVlNT
IC8gTU9WU1MgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAg
ICBBIHBvaW50ZXIgdG8gYSAzMi1iaXQgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLyBccGFyYW0gX19h
DQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUg
dmFsdWUgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZO
X0FUVFJTDQorX21tX3N0b3JlX3NzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpDQorew0KKyAgc3Ry
dWN0IF9fbW1fc3RvcmVfc3Nfc3RydWN0IHsNCisgICAgZmxvYXQgX191Ow0KKyAgfSBfX2F0dHJp
YnV0ZV9fKChfX3BhY2tlZF9fLCBfX21heV9hbGlhc19fKSk7DQorICAoKHN0cnVjdCBfX21tX3N0
b3JlX3NzX3N0cnVjdCopX19wKS0+X191ID0gX19hWzBdOw0KK30NCisNCisvLy8gU3RvcmVzIGEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4gdW5hbGlnbmVkIG1lbW9yeQ0KKy8v
LyAgICBsb2NhdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZVUFMgLyBN
T1ZVUFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBB
IHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBsb2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhl
IG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsaWduZWQuDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBj
b250YWluaW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZv
aWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0b3JldV9wcyhmbG9hdCAqX19wLCBfX20xMjgg
X19hKQ0KK3sNCisgIHN0cnVjdCBfX3N0b3JldV9wcyB7DQorICAgIF9fbTEyOCBfX3Y7DQorICB9
IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18sIF9fbWF5X2FsaWFzX18pKTsNCisgICgoc3RydWN0
IF9fc3RvcmV1X3BzKilfX3ApLT5fX3YgPSBfX2E7DQorfQ0KKw0KKy8vLyBTdG9yZXMgYSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGFuIGFsaWduZWQgbWVtb3J5DQorLy8vICAg
IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQor
Ly8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVk1PVkFQUyAvIE1PVkFQ
UyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9p
bnRlciB0byBhIDEyOC1iaXQgbWVtb3J5IGxvY2F0aW9uLiBUaGUgYWRkcmVzcyBvZiB0aGUgbWVt
b3J5DQorLy8vICAgIGxvY2F0aW9uIGhhcyB0byBiZSAxNi1ieXRlIGFsaWduZWQuDQorLy8vIFxw
YXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWlu
aW5nIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19E
RUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0b3JlX3BzKGZsb2F0ICpfX3AsIF9fbTEyOCBfX2EpDQor
ew0KKyAgKihfX20xMjgqKV9fcCA9IF9fYTsNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgbG93ZXIg
MzIgYml0cyBvZiBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8NCisvLy8gICAg
Zm91ciBjb250aWd1b3VzIGVsZW1lbnRzIGluIGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwv
Yz4NCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAg
QSBwb2ludGVyIHRvIGEgMTI4LWJpdCBtZW1vcnkgbG9jYXRpb24uDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBi
aXRzIGFyZSBzdG9yZWQgdG8gZWFjaA0KKy8vLyAgICBvZiB0aGUgZm91ciBjb250aWd1b3VzIGVs
ZW1lbnRzIHBvaW50ZWQgYnkgXGEgX19wLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZB
VUxUX0ZOX0FUVFJTDQorX21tX3N0b3JlMV9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KK3sN
CisjaWZkZWYgX19HTlVDX18NCisgIF9fYSA9IChfX20xMjgpX19idWlsdGluX2lhMzJfc2h1ZnBz
KChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgX01NX1NIVUZGTEUgKDAsMCwwLDApKTsNCisjZWxz
ZQ0KKyAgX19hID0gKF9fbTEyOClfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192NHNmKV9fYSwg
KF9fdjRzZilfX2EsIDAsIDAsIDAsIDApOw0KKyNlbmRpZg0KKyAgX21tX3N0b3JlX3BzKF9fcCwg
X19hKTsNCit9DQorDQorLy8vIFN0b3JlcyB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIDEyOC1iaXQg
dmVjdG9yIG9mIFs0IHggZmxvYXRdIGludG8NCisvLy8gICAgZm91ciBjb250aWd1b3VzIGVsZW1l
bnRzIGluIGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmls
ZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IDxjPiBWTU9WQVBTIC8gTU9WQVBTICsgc2h1ZmZsaW5nIDwvYz4NCisvLy8gICAgaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2ludGVyIHRvIGEgMTI4LWJp
dCBtZW1vcnkgbG9jYXRpb24uDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IHZl
Y3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciAzMiBiaXRzIGFyZSBzdG9yZWQgdG8gZWFj
aA0KKy8vLyAgICBvZiB0aGUgZm91ciBjb250aWd1b3VzIGVsZW1lbnRzIHBvaW50ZWQgYnkgXGEg
X19wLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX3N0
b3JlX3BzMShmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KK3sNCisgIF9tbV9zdG9yZTFfcHMoX19w
LCBfX2EpOw0KK30NCisNCisvLy8gU3RvcmVzIGZsb2F0IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2
ZWN0b3Igb2YgWzQgeCBmbG9hdF0gdG8gYW4NCisvLy8gICAgYWxpZ25lZCBtZW1vcnkgbG9jYXRp
b24gaW4gcmV2ZXJzZSBvcmRlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZNT1ZB
UFMgLyBNT1ZBUFMgKyBzaHVmZmxpbmcgPC9jPg0KKy8vLyAgICBpbnN0cnVjdGlvbi4NCisvLy8N
CisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSAxMjgtYml0IG1lbW9yeSBs
b2NhdGlvbi4gVGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeQ0KKy8vLyAgICBsb2NhdGlvbiBoYXMg
dG8gYmUgMTI4LWJpdCBhbGlnbmVkLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJp
dCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIGJlIHN0b3Jl
ZC4NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV9zdG9y
ZXJfcHMoZmxvYXQgKl9fcCwgX19tMTI4IF9fYSkNCit7DQorI2lmZGVmIF9fR05VQ19fDQorICBf
X2EgPSBfX2J1aWx0aW5faWEzMl9zaHVmcHMgKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYSwgX01N
X1NIVUZGTEUgKDAsMSwyLDMpKTsNCisjZWxzZQ0KKyAgX19hID0gX19idWlsdGluX3NodWZmbGV2
ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19hLCAzLCAyLCAxLCAwKTsNCisjZW5kaWYNCisg
IF9tbV9zdG9yZV9wcyhfX3AsIF9fYSk7DQorfQ0KKw0KKyNkZWZpbmUgX01NX0hJTlRfRVQwIDcN
CisjZGVmaW5lIF9NTV9ISU5UX0VUMSA2DQorI2RlZmluZSBfTU1fSElOVF9UMCAgMw0KKyNkZWZp
bmUgX01NX0hJTlRfVDEgIDINCisjZGVmaW5lIF9NTV9ISU5UX1QyICAxDQorI2RlZmluZSBfTU1f
SElOVF9OVEEgMA0KKw0KKyNpZm5kZWYgX01TQ19WRVINCisvKiBGSVhNRTogV2UgaGF2ZSB0byAj
ZGVmaW5lIHRoaXMgYmVjYXVzZSAic2VsIiBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciwgYW5k
DQorICAgU2VtYSBkb2Vzbid0IGRvIGFueSBmb3JtIG9mIGNvbnN0YW50IHByb3BhZ2F0aW9uIHll
dC4gKi8NCisNCisvLy8gTG9hZHMgb25lIGNhY2hlIGxpbmUgb2YgZGF0YSBmcm9tIHRoZSBzcGVj
aWZpZWQgYWRkcmVzcyB0byBhIGxvY2F0aW9uDQorLy8vICAgIGNsb3NlciB0byB0aGUgcHJvY2Vz
c29yLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFxj
b2RlDQorLy8vIHZvaWQgX21tX3ByZWZldGNoKGNvbnN0IHZvaWQgKiBhLCBjb25zdCBpbnQgc2Vs
KTsNCisvLy8gXGVuZGNvZGUNCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQUkVGRVRDSE5UQSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFy
YW0gYQ0KKy8vLyAgICBBIHBvaW50ZXIgdG8gYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyBh
IGNhY2hlIGxpbmUgb2YgZGF0YS4NCisvLy8gXHBhcmFtIHNlbA0KKy8vLyAgICBBIHByZWRlZmlu
ZWQgaW50ZWdlciBjb25zdGFudCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHByZWZldGNoDQorLy8v
ICAgIG9wZXJhdGlvbjogXG4NCisvLy8gICAgX01NX0hJTlRfTlRBOiBNb3ZlIGRhdGEgdXNpbmcg
dGhlIG5vbi10ZW1wb3JhbCBhY2Nlc3MgKE5UQSkgaGludC4gVGhlDQorLy8vICAgIFBSRUZFVENI
TlRBIGluc3RydWN0aW9uIHdpbGwgYmUgZ2VuZXJhdGVkLiBcbg0KKy8vLyAgICBfTU1fSElOVF9U
MDogTW92ZSBkYXRhIHVzaW5nIHRoZSBUMCBoaW50LiBUaGUgUFJFRkVUQ0hUMCBpbnN0cnVjdGlv
biB3aWxsDQorLy8vICAgIGJlIGdlbmVyYXRlZC4gXG4NCisvLy8gICAgX01NX0hJTlRfVDE6IE1v
dmUgZGF0YSB1c2luZyB0aGUgVDEgaGludC4gVGhlIFBSRUZFVENIVDEgaW5zdHJ1Y3Rpb24gd2ls
bA0KKy8vLyAgICBiZSBnZW5lcmF0ZWQuIFxuDQorLy8vICAgIF9NTV9ISU5UX1QyOiBNb3ZlIGRh
dGEgdXNpbmcgdGhlIFQyIGhpbnQuIFRoZSBQUkVGRVRDSFQyIGluc3RydWN0aW9uIHdpbGwNCisv
Ly8gICAgYmUgZ2VuZXJhdGVkLg0KKyNkZWZpbmUgX21tX3ByZWZldGNoKGEsIHNlbCkgKF9fYnVp
bHRpbl9wcmVmZXRjaCgodm9pZCAqKShhKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoKHNlbCkgPj4gMikgJiAxLCAoc2VsKSAmIDB4MykpDQor
I2VuZGlmDQorDQorLy8vIFN0b3JlcyBhIDY0LWJpdCBpbnRlZ2VyIGluIHRoZSBzcGVjaWZpZWQg
YWxpZ25lZCBtZW1vcnkgbG9jYXRpb24uIFRvDQorLy8vICAgIG1pbmltaXplIGNhY2hpbmcsIHRo
ZSBkYXRhIGlzIGZsYWdnZWQgYXMgbm9uLXRlbXBvcmFsICh1bmxpa2VseSB0byBiZQ0KKy8vLyAg
ICB1c2VkIGFnYWluIHNvb24pLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTU9WTlRR
IDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX3ANCisvLy8gICAgQSBwb2lu
dGVyIHRvIGFuIGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uIHVzZWQgdG8gc3RvcmUgdGhlIHJlZ2lz
dGVyIHZhbHVlLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgY29u
dGFpbmluZyB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQg
X19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9zdHJlYW1fcGkoX19tNjQgKl9fcCwgX19tNjQg
X19hKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIF9fYnVpbHRpbl9pYTMyX21vdm50cSAoKHVu
c2lnbmVkIGxvbmcgbG9uZyAqKV9fcCwgKHVuc2lnbmVkIGxvbmcgbG9uZylfX2EpOw0KKyNlbHNl
DQorICBfX2J1aWx0aW5faWEzMl9tb3ZudHEoX19wLCBfX2EpOw0KKyNlbmRpZg0KK30NCisNCisv
Ly8gTW92ZXMgcGFja2VkIGZsb2F0IHZhbHVlcyBmcm9tIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0gdG8gYQ0KKy8vLyAgICAxMjgtYml0IGFsaWduZWQgbWVtb3J5IGxvY2F0aW9uLiBU
byBtaW5pbWl6ZSBjYWNoaW5nLCB0aGUgZGF0YSBpcyBmbGFnZ2VkDQorLy8vICAgIGFzIG5vbi10
ZW1wb3JhbCAodW5saWtlbHkgdG8gYmUgdXNlZCBhZ2FpbiBzb29uKS4NCisvLy8NCisvLy8gXGhl
YWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNw
b25kcyB0byB0aGUgPGM+IFZNT1ZOVFBTIC8gTU9WTlRQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8v
Lw0KKy8vLyBccGFyYW0gX19wDQorLy8vICAgIEEgcG9pbnRlciB0byBhIDEyOC1iaXQgYWxpZ25l
ZCBtZW1vcnkgbG9jYXRpb24gdGhhdCB3aWxsIHJlY2VpdmUgdGhlDQorLy8vICAgIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLg0KKy8vLyBccGFyYW0gX19hDQorLy8vICAg
IEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgdmFsdWVzIHRv
IGJlIG1vdmVkLg0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTDQor
X21tX3N0cmVhbV9wcyhmbG9hdCAqX19wLCBfX20xMjggX19hKQ0KK3sNCisjaWZkZWYgX19HTlVD
X18NCisgIF9fYnVpbHRpbl9pYTMyX21vdm50cHMgKF9fcCwgKF9fdjRzZilfX2EpOw0KKyNlbHNl
DQorICBfX2J1aWx0aW5fbm9udGVtcG9yYWxfc3RvcmUoKF9fdjRzZilfX2EsIChfX3Y0c2YqKV9f
cCk7DQorI2VuZGlmDQorfQ0KKw0KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KK2V4dGVybiAi
QyIgew0KKyNlbmRpZg0KKw0KKy8vLyBGb3JjZXMgc3Ryb25nIG1lbW9yeSBvcmRlcmluZyAoc2Vy
aWFsaXphdGlvbikgYmV0d2VlbiBzdG9yZQ0KKy8vLyAgICBpbnN0cnVjdGlvbnMgcHJlY2VkaW5n
IHRoaXMgaW5zdHJ1Y3Rpb24gYW5kIHN0b3JlIGluc3RydWN0aW9ucyBmb2xsb3dpbmcNCisvLy8g
ICAgdGhpcyBpbnN0cnVjdGlvbiwgZW5zdXJpbmcgdGhlIHN5c3RlbSBjb21wbGV0ZXMgYWxsIHBy
ZXZpb3VzIHN0b3Jlcw0KKy8vLyAgICBiZWZvcmUgZXhlY3V0aW5nIHN1YnNlcXVlbnQgc3RvcmVz
Lg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMg
aW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gU0ZFTkNFIDwvYz4gaW5zdHJ1Y3Rpb24u
DQorLy8vDQordm9pZCBfbW1fc2ZlbmNlKHZvaWQpOw0KKw0KKyNpZiBkZWZpbmVkKF9fY3BsdXNw
bHVzKQ0KK30gLy8gZXh0ZXJuICJDIg0KKyNlbmRpZg0KKw0KKy8vLyBFeHRyYWN0cyAxNi1iaXQg
ZWxlbWVudCBmcm9tIGEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0gYW5kDQorLy8vICAgIHJl
dHVybnMgaXQsIGFzIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlIGludGVnZXIgb3BlcmFuZC4N
CisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBcY29kZQ0K
Ky8vLyBpbnQgX21tX2V4dHJhY3RfcGkxNihfX202NCBhLCBpbnQgbik7DQorLy8vIFxlbmRjb2Rl
DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gVlBFWFRS
VyAvIFBFWFRSVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gYQ0KKy8vLyAg
ICBBIDY0LWJpdCB2ZWN0b3Igb2YgWzQgeCBpMTZdLg0KKy8vLyBccGFyYW0gbg0KKy8vLyAgICBB
biBpbW1lZGlhdGUgaW50ZWdlciBvcGVyYW5kIHRoYXQgZGV0ZXJtaW5lcyB3aGljaCBiaXRzIGFy
ZSBleHRyYWN0ZWQ6IFxuDQorLy8vICAgIDA6IEJpdHMgWzE1OjBdIGFyZSBjb3BpZWQgdG8gdGhl
IGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAxOiBCaXRzIFszMToxNl0gYXJlIGNvcGllZCB0byB0
aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDI6IEJpdHMgWzQ3OjMyXSBhcmUgY29waWVkIHRv
IHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMzogQml0cyBbNjM6NDhdIGFyZSBjb3BpZWQg
dG8gdGhlIGRlc3RpbmF0aW9uLg0KKy8vLyBccmV0dXJucyBBIDE2LWJpdCBpbnRlZ2VyIGNvbnRh
aW5pbmcgdGhlIGV4dHJhY3RlZCAxNiBiaXRzIG9mIHBhY2tlZCBkYXRhLg0KKyNkZWZpbmUgX21t
X2V4dHJhY3RfcGkxNihhLCBuKSBcDQorICAoaW50KV9fYnVpbHRpbl9pYTMyX3ZlY19leHRfdjRo
aSgoX19tNjQpYSwgKGludCluKQ0KKw0KKy8vLyBDb3BpZXMgZGF0YSBmcm9tIHRoZSA2NC1iaXQg
dmVjdG9yIG9mIFs0IHggaTE2XSB0byB0aGUgZGVzdGluYXRpb24sDQorLy8vICAgIGFuZCBpbnNl
cnRzIHRoZSBsb3dlciAxNi1iaXRzIG9mIGFuIGludGVnZXIgb3BlcmFuZCBhdCB0aGUgMTYtYml0
IG9mZnNldA0KKy8vLyAgICBzcGVjaWZpZWQgYnkgdGhlIGltbWVkaWF0ZSBvcGVyYW5kIFxhIG4u
DQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUN
CisvLy8gX19tNjQgX21tX2luc2VydF9waTE2KF9fbTY0IGEsIGludCBkLCBpbnQgbik7DQorLy8v
IFxlbmRjb2RlDQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUElOU1JXIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAg
IEEgNjQtYml0IHZlY3RvciBvZiBbNCB4IGkxNl0uDQorLy8vIFxwYXJhbSBkDQorLy8vICAgIEFu
IGludGVnZXIuIFRoZSBsb3dlciAxNi1iaXQgdmFsdWUgZnJvbSB0aGlzIG9wZXJhbmQgaXMgd3Jp
dHRlbiB0byB0aGUNCisvLy8gICAgZGVzdGluYXRpb24gYXQgdGhlIG9mZnNldCBzcGVjaWZpZWQg
Ynkgb3BlcmFuZCBcYSBuLg0KKy8vLyBccGFyYW0gbg0KKy8vLyAgICBBbiBpbW1lZGlhdGUgaW50
ZWdlciBvcGVyYW50IHRoYXQgZGV0ZXJtaW5lcyB3aGljaCB0aGUgYml0cyB0byBiZSB1c2VkDQor
Ly8vICAgIGluIHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMDogQml0cyBbMTU6MF0gYXJl
IGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIDE6IEJpdHMgWzMxOjE2XSBh
cmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgMjogQml0cyBbNDc6MzJd
IGFyZSBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICAzOiBCaXRzIFs2Mzo0
OF0gYXJlIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24uICBcbg0KKy8vLyAgICBUaGUgcmVtYWlu
aW5nIGJpdHMgaW4gdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9u
ZGluZw0KKy8vLyAgICBiaXRzIGluIG9wZXJhbmQgXGEgYS4NCisvLy8gXHJldHVybnMgQSA2NC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29waWVkIHBhY2tlZCBkYXRhIGZyb20g
dGhlDQorLy8vICAgIG9wZXJhbmRzLg0KKyNkZWZpbmUgX21tX2luc2VydF9waTE2KGEsIGQsIG4p
IFwNCisgIChfX202NClfX2J1aWx0aW5faWEzMl92ZWNfc2V0X3Y0aGkoKF9fbTY0KWEsIChpbnQp
ZCwgKGludCluKQ0KKw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBh
Y2tlZCAxNi1iaXQgaW50ZWdlciB2YWx1ZXMgb2YNCisvLy8gICAgdGhlIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvcnMsIGFuZCB3cml0ZXMgdGhlIGdyZWF0ZXIgdmFsdWUgdG8gdGhlDQorLy8vICAgIGNv
cnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMg
dG8gdGhlIDxjPiBQTUFYU1cgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUg
c291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVn
ZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxy
ZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24g
cmVzdWx0cy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1Y
DQorX21tX21heF9waTE2KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgIHJldHVybiAoX19t
NjQpX19idWlsdGluX2lhMzJfcG1heHN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQorfQ0K
Kw0KKy8vLyBDb21wYXJlcyBlYWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhY2tlZCA4LWJpdCB1
bnNpZ25lZCBpbnRlZ2VyDQorLy8vICAgIHZhbHVlcyBvZiB0aGUgNjQtYml0IGludGVnZXIgdmVj
dG9ycywgYW5kIHdyaXRlcyB0aGUgZ3JlYXRlciB2YWx1ZSB0byB0aGUNCisvLy8gICAgY29ycmVz
cG9uZGluZyBiaXRzIGluIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUg
PHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0
aGUgPGM+IFBNQVhVQiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29tcGFyaXNvbiByZXN1
bHRzLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitf
bW1fbWF4X3B1OChfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0KV9f
YnVpbHRpbl9pYTMyX3BtYXh1YigoX192OHFpKV9fYSwgKF9fdjhxaSlfX2IpOw0KK30NCisNCisv
Ly8gQ29tcGFyZXMgZWFjaCBvZiB0aGUgY29ycmVzcG9uZGluZyBwYWNrZWQgMTYtYml0IGludGVn
ZXIgdmFsdWVzIG9mDQorLy8vICAgIHRoZSA2NC1iaXQgaW50ZWdlciB2ZWN0b3JzLCBhbmQgd3Jp
dGVzIHRoZSBsZXNzZXIgdmFsdWUgdG8gdGhlDQorLy8vICAgIGNvcnJlc3BvbmRpbmcgYml0cyBp
biB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTUlOU1cg
PC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0K
Ky8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5p
bmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGlu
dGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbXBhcmlzb24gcmVzdWx0cy4NCitzdGF0aWMg
X19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX21pbl9waTE2KF9f
bTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJf
cG1pbnN3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQorfQ0KKw0KKy8vLyBDb21wYXJlcyBl
YWNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhY2tlZCA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQor
Ly8vICAgIHZhbHVlcyBvZiB0aGUgNjQtYml0IGludGVnZXIgdmVjdG9ycywgYW5kIHdyaXRlcyB0
aGUgbGVzc2VyIHZhbHVlIHRvIHRoZQ0KKy8vLyAgICBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhl
IGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8v
DQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUE1JTlVCIDwvYz4g
aW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSA2NC1iaXQgaW50
ZWdlciB2ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8g
XHBhcmFtIF9fYg0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9u
ZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2Vy
IHZlY3RvciBjb250YWluaW5nIHRoZSBjb21wYXJpc29uIHJlc3VsdHMuDQorc3RhdGljIF9faW5s
aW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9taW5fcHU4KF9fbTY0IF9f
YSwgX19tNjQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcG1pbnVi
KChfX3Y4cWkpX19hLCAoX192OHFpKV9fYik7DQorfQ0KKw0KKy8vLyBUYWtlcyB0aGUgbW9zdCBz
aWduaWZpY2FudCBiaXQgZnJvbSBlYWNoIDgtYml0IGVsZW1lbnQgaW4gYSA2NC1iaXQNCisvLy8g
ICAgaW50ZWdlciB2ZWN0b3IgdG8gY3JlYXRlIGFuIDgtYml0IG1hc2sgdmFsdWUuIFplcm8tZXh0
ZW5kcyB0aGUgdmFsdWUgdG8NCisvLy8gICAgMzItYml0IGludGVnZXIgYW5kIHdyaXRlcyBpdCB0
byB0aGUgZGVzdGluYXRpb24uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQTU9WTVNL
QiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB3aXRoIGJpdHMgdG8gYmUg
ZXh0cmFjdGVkLg0KKy8vLyBccmV0dXJucyBUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgZnJvbSBl
YWNoIDgtYml0IGVsZW1lbnQgaW4gXGEgX19hLA0KKy8vLyAgICB3cml0dGVuIHRvIGJpdHMgWzc6
MF0uDQorc3RhdGljIF9faW5saW5lX18gaW50IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1f
bW92ZW1hc2tfcGk4KF9fbTY0IF9fYSkNCit7DQorICByZXR1cm4gX19idWlsdGluX2lhMzJfcG1v
dm1za2IoKF9fdjhxaSlfX2EpOw0KK30NCisNCisvLy8gTXVsdGlwbGllcyBwYWNrZWQgMTYtYml0
IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzIGFuZCB3cml0ZXMgdGhlDQorLy8vICAgIGhpZ2gtb3Jk
ZXIgMTYgYml0cyBvZiBlYWNoIDMyLWJpdCBwcm9kdWN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGJp
dHMgaW4NCisvLy8gICAgdGhlIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gUE1VTEhVVyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3Vy
Y2Ugb3BlcmFuZHMuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2
ZWN0b3IgY29udGFpbmluZyBvbmUgb2YgdGhlIHNvdXJjZSBvcGVyYW5kcy4NCisvLy8gXHJldHVy
bnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgcHJvZHVjdHMgb2YgYm90
aCBvcGVyYW5kcy4NCitzdGF0aWMgX19pbmxpbmVfXyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNf
TU1YDQorX21tX211bGhpX3B1MTYoX19tNjQgX19hLCBfX202NCBfX2IpDQorew0KKyAgcmV0dXJu
IChfX202NClfX2J1aWx0aW5faWEzMl9wbXVsaHV3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7
DQorfQ0KKw0KKy8vLyBTaHVmZmxlcyB0aGUgNCAxNi1iaXQgaW50ZWdlcnMgZnJvbSBhIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciB0byB0aGUNCisvLy8gICAgZGVzdGluYXRpb24sIGFzIHNwZWNpZmll
ZCBieSB0aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxl
IDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tNjQgX21tX3NodWZmbGVf
cGkxNihfX202NCBhLCBjb25zdCBpbnQgbik7DQorLy8vIFxlbmRjb2RlDQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUFNIVUZXIDwvYz4gaW5zdHJ1Y3Rp
b24uDQorLy8vDQorLy8vIFxwYXJhbSBhDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byBiZSBzaHVmZmxlZC4NCisvLy8gXHBhcmFtIG4NCisv
Ly8gICAgQW4gaW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lm
eWluZyB3aGljaCBlbGVtZW50cyB0bw0KKy8vLyAgICBjb3B5IGZyb20gXGEgYS4gVGhlIGRlc3Rp
bmF0aW9ucyB3aXRoaW4gdGhlIDY0LWJpdCBkZXN0aW5hdGlvbiBhcmUNCisvLy8gICAgYXNzaWdu
ZWQgdmFsdWVzIGFzIGZvbGxvd3M6IFxuDQorLy8vICAgIEJpdHMgWzE6MF0gYXJlIHVzZWQgdG8g
YXNzaWduIHZhbHVlcyB0byBiaXRzIFsxNTowXSBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24u
IFxuDQorLy8vICAgIEJpdHMgWzM6Ml0gYXJlIHVzZWQgdG8gYXNzaWduIHZhbHVlcyB0byBiaXRz
IFszMToxNl0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0KKy8vLyAgICBCaXRzIFs1
OjRdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbNDc6MzJdIGluIHRoZQ0KKy8v
LyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBbNzo2XSBhcmUgdXNlZCB0byBhc3Np
Z24gdmFsdWVzIHRvIGJpdHMgWzYzOjQ4XSBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxu
DQorLy8vICAgIEJpdCB2YWx1ZSBhc3NpZ25tZW50czogXG4NCisvLy8gICAgMDA6IGFzc2lnbmVk
IGZyb20gYml0cyBbMTU6MF0gb2YgXGEgYS4gXG4NCisvLy8gICAgMDE6IGFzc2lnbmVkIGZyb20g
Yml0cyBbMzE6MTZdIG9mIFxhIGEuIFxuDQorLy8vICAgIDEwOiBhc3NpZ25lZCBmcm9tIGJpdHMg
WzQ3OjMyXSBvZiBcYSBhLiBcbg0KKy8vLyAgICAxMTogYXNzaWduZWQgZnJvbSBiaXRzIFs2Mzo0
OF0gb2YgXGEgYS4NCisvLy8gXHJldHVybnMgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFp
bmluZyB0aGUgc2h1ZmZsZWQgdmFsdWVzLg0KKyNkZWZpbmUgX21tX3NodWZmbGVfcGkxNihhLCBu
KSBcDQorICAoX19tNjQpX19idWlsdGluX2lhMzJfcHNodWZ3KChfX3Y0aGkpKF9fbTY0KShhKSwg
KG4pKQ0KKw0KKy8vLyBDb25kaXRpb25hbGx5IGNvcGllcyB0aGUgdmFsdWVzIGZyb20gZWFjaCA4
LWJpdCBlbGVtZW50IGluIHRoZSBmaXJzdA0KKy8vLyAgICA2NC1iaXQgaW50ZWdlciB2ZWN0b3Ig
b3BlcmFuZCB0byB0aGUgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbiwgYXMNCisvLy8gICAgc3Bl
Y2lmaWVkIGJ5IHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpbiB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50IGluIHRoZQ0KKy8vLyAgICBzZWNvbmQgNjQtYml0IGludGVnZXIgdmVjdG9yIG9wZXJh
bmQuDQorLy8vDQorLy8vICAgIFRvIG1pbmltaXplIGNhY2hpbmcsIHRoZSBkYXRhIGlzIGZsYWdn
ZWQgYXMgbm9uLXRlbXBvcmFsDQorLy8vICAgICh1bmxpa2VseSB0byBiZSB1c2VkIGFnYWluIHNv
b24pLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gTUFTS01PVlEgPC9jPiBpbnN0cnVj
dGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fZA0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBjb250YWluaW5nIHRoZSB2YWx1ZXMgd2l0aCBlbGVtZW50cyB0byBiZSBjb3BpZWQuDQor
Ly8vIFxwYXJhbSBfX24NCisvLy8gICAgQSA2NC1iaXQgaW50ZWdlciB2ZWN0b3Igb3BlcmFuZC4g
VGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZyb20gZWFjaCA4LWJpdA0KKy8vLyAgICBlbGVtZW50
IGRldGVybWluZXMgd2hldGhlciB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIG9wZXJhbmQg
XGEgX19kDQorLy8vICAgIGlzIGNvcGllZC4gSWYgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9m
IGEgZ2l2ZW4gZWxlbWVudCBpcyAxLCB0aGUNCisvLy8gICAgY29ycmVzcG9uZGluZyBlbGVtZW50
IGluIG9wZXJhbmQgXGEgX19kIGlzIGNvcGllZC4NCisvLy8gXHBhcmFtIF9fcA0KKy8vLyAgICBB
IHBvaW50ZXIgdG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRo
ZSBjb25kaXRpb25hbGx5DQorLy8vICAgIGNvcGllZCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGFkZHJl
c3Mgb2YgdGhlIG1lbW9yeSBsb2NhdGlvbiBkb2VzIG5vdCBoYXZlDQorLy8vICAgIHRvIGJlIGFs
aWduZWQuDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQor
X21tX21hc2ttb3ZlX3NpNjQoX19tNjQgX19kLCBfX202NCBfX24sIGNoYXIgKl9fcCkNCit7DQor
ICBfX2J1aWx0aW5faWEzMl9tYXNrbW92cSgoX192OHFpKV9fZCwgKF9fdjhxaSlfX24sIF9fcCk7
DQorfQ0KKw0KKy8vLyBDb21wdXRlcyB0aGUgcm91bmRlZCBhdmVyYWdlcyBvZiB0aGUgcGFja2Vk
IHVuc2lnbmVkIDgtYml0IGludGVnZXINCisvLy8gICAgdmFsdWVzIGFuZCB3cml0ZXMgdGhlIGF2
ZXJhZ2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0
aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRo
aXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFWR0IgPC9jPiBpbnN0cnVjdGlv
bi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9wZXJhbmRzLg0KKy8vLyBccGFyYW0gX19i
DQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgb25lIG9mIHRoZSBz
b3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIGNv
bnRhaW5pbmcgdGhlIGF2ZXJhZ2VzIG9mIGJvdGggb3BlcmFuZHMuDQorc3RhdGljIF9faW5saW5l
X18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KK19tbV9hdmdfcHU4KF9fbTY0IF9fYSwg
X19tNjQgX19iKQ0KK3sNCisgIHJldHVybiAoX19tNjQpX19idWlsdGluX2lhMzJfcGF2Z2IoKF9f
djhxaSlfX2EsIChfX3Y4cWkpX19iKTsNCit9DQorDQorLy8vIENvbXB1dGVzIHRoZSByb3VuZGVk
IGF2ZXJhZ2VzIG9mIHRoZSBwYWNrZWQgdW5zaWduZWQgMTYtYml0IGludGVnZXINCisvLy8gICAg
dmFsdWVzIGFuZCB3cml0ZXMgdGhlIGF2ZXJhZ2VzIHRvIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMg
aW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2
aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8
Yz4gUEFWR1cgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGF2ZXJhZ2VzIG9mIGJvdGggb3Bl
cmFuZHMuDQorc3RhdGljIF9faW5saW5lX18gX19tNjQgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0K
K19tbV9hdmdfcHUxNihfX202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0
KV9fYnVpbHRpbl9pYTMyX3Bhdmd3KChfX3Y0aGkpX19hLCAoX192NGhpKV9fYik7DQorfQ0KKw0K
Ky8vLyBTdWJ0cmFjdHMgdGhlIGNvcnJlc3BvbmRpbmcgOC1iaXQgdW5zaWduZWQgaW50ZWdlciB2
YWx1ZXMgb2YgdGhlIHR3bw0KKy8vLyAgICA2NC1iaXQgdmVjdG9yIG9wZXJhbmRzIGFuZCBjb21w
dXRlcyB0aGUgYWJzb2x1dGUgdmFsdWUgZm9yIGVhY2ggb2YgdGhlDQorLy8vICAgIGRpZmZlcmVu
Y2UuIFRoZW4gc3VtIG9mIHRoZSA4IGFic29sdXRlIGRpZmZlcmVuY2VzIGlzIHdyaXR0ZW4gdG8g
dGhlDQorLy8vICAgIGJpdHMgWzE1OjBdIG9mIHRoZSBkZXN0aW5hdGlvbjsgdGhlIHJlbWFpbmlu
ZyBiaXRzIFs2MzoxNl0gYXJlIGNsZWFyZWQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxj
PiBQU0FEQlcgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAg
ICBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBjb250YWluaW5nIG9uZSBvZiB0aGUgc291cmNlIG9w
ZXJhbmRzLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgNjQtYml0IGludGVnZXIgdmVjdG9y
IGNvbnRhaW5pbmcgb25lIG9mIHRoZSBzb3VyY2Ugb3BlcmFuZHMuDQorLy8vIFxyZXR1cm5zIEEg
NjQtYml0IGludGVnZXIgdmVjdG9yIHdob3NlIGxvd2VyIDE2IGJpdHMgY29udGFpbiB0aGUgc3Vt
cyBvZiB0aGUNCisvLy8gICAgc2V0cyBvZiBhYnNvbHV0ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJv
dGggb3BlcmFuZHMuIFRoZSB1cHBlciBiaXRzIGFyZQ0KKy8vLyAgICBjbGVhcmVkLg0KK3N0YXRp
YyBfX2lubGluZV9fIF9fbTY0IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fc2FkX3B1OChf
X202NCBfX2EsIF9fbTY0IF9fYikNCit7DQorICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMy
X3BzYWRidygoX192OHFpKV9fYSwgKF9fdjhxaSlfX2IpOw0KK30NCisNCisjaWYgZGVmaW5lZChf
X2NwbHVzcGx1cykNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvLy8gUmV0dXJucyB0aGUg
Y29udGVudHMgb2YgdGhlIE1YQ1NSIHJlZ2lzdGVyIGFzIGEgMzItYml0IHVuc2lnbmVkDQorLy8v
ICAgIGludGVnZXIgdmFsdWUuDQorLy8vDQorLy8vICAgIFRoZXJlIGFyZSBzZXZlcmFsIGdyb3Vw
cyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMNCisvLy8gICAgaW50cmluc2ljLCBpbmNs
dWRpbmc6DQorLy8vICAgIDx1bD4NCisvLy8gICAgPGxpPg0KKy8vLyAgICAgIEZvciBjaGVja2lu
ZyBleGNlcHRpb24gc3RhdGVzOiBfTU1fRVhDRVBUX0lOVkFMSUQsIF9NTV9FWENFUFRfRElWX1pF
Uk8sDQorLy8vICAgICAgX01NX0VYQ0VQVF9ERU5PUk0sIF9NTV9FWENFUFRfT1ZFUkZMT1csIF9N
TV9FWENFUFRfVU5ERVJGTE9XLA0KKy8vLyAgICAgIF9NTV9FWENFUFRfSU5FWEFDVC4gVGhlcmUg
aXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyDQorLy8vICAgICAgX01NX0dFVF9FWENFUFRJT05fU1RB
VEUoKS4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPGxpPg0KKy8vLyAgICAgIEZvciBjaGVja2lu
ZyBleGNlcHRpb24gbWFza3M6IF9NTV9NQVNLX1VOREVSRkxPVywgX01NX01BU0tfT1ZFUkZMT1cs
DQorLy8vICAgICAgX01NX01BU0tfSU5WQUxJRCwgX01NX01BU0tfREVOT1JNLCBfTU1fTUFTS19E
SVZfWkVSTywgX01NX01BU0tfSU5FWEFDVC4NCisvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmll
bmNlIHdyYXBwZXIgX01NX0dFVF9FWENFUFRJT05fTUFTSygpLg0KKy8vLyAgICA8L2xpPg0KKy8v
LyAgICA8bGk+DQorLy8vICAgICAgRm9yIGNoZWNraW5nIHJvdW5kaW5nIG1vZGVzOiBfTU1fUk9V
TkRfTkVBUkVTVCwgX01NX1JPVU5EX0RPV04sDQorLy8vICAgICAgX01NX1JPVU5EX1VQLCBfTU1f
Uk9VTkRfVE9XQVJEX1pFUk8uIFRoZXJlIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlcg0KKy8vLyAg
ICAgIF9NTV9HRVRfUk9VTkRJTkdfTU9ERSgpLg0KKy8vLyAgICA8L2xpPg0KKy8vLyAgICA8bGk+
DQorLy8vICAgICAgRm9yIGNoZWNraW5nIGZsdXNoLXRvLXplcm8gbW9kZTogX01NX0ZMVVNIX1pF
Uk9fT04sIF9NTV9GTFVTSF9aRVJPX09GRi4NCisvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmll
bmNlIHdyYXBwZXIgX01NX0dFVF9GTFVTSF9aRVJPX01PREUoKS4NCisvLy8gICAgPC9saT4NCisv
Ly8gICAgPGxpPg0KKy8vLyAgICAgIEZvciBjaGVja2luZyBkZW5vcm1hbHMtYXJlLXplcm8gbW9k
ZTogX01NX0RFTk9STUFMU19aRVJPX09OLA0KKy8vLyAgICAgIF9NTV9ERU5PUk1BTFNfWkVST19P
RkYuIFRoZXJlIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlcg0KKy8vLyAgICAgIF9NTV9HRVRfREVO
T1JNQUxTX1pFUk9fTU9ERSgpLg0KKy8vLyAgICA8L2xpPg0KKy8vLyAgICA8L3VsPg0KKy8vLw0K
Ky8vLyAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNoZWNrcyBpZiBh
biBvdmVyZmxvdyBleGNlcHRpb24gaGFzDQorLy8vICAgIG9jY3VycmVkOg0KKy8vLyAgICBcY29k
ZQ0KKy8vLyAgICAgICggX21tX2dldGNzcigpICYgX01NX0VYQ0VQVF9PVkVSRkxPVyApDQorLy8v
ICAgIFxlbmRjb2RlDQorLy8vDQorLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBnZXRz
IHRoZSBjdXJyZW50IHJvdW5kaW5nIG1vZGU6DQorLy8vICAgIFxjb2RlDQorLy8vICAgICAgX01N
X0dFVF9ST1VORElOR19NT0RFKCkNCisvLy8gICAgXGVuZGNvZGUNCisvLy8NCisvLy8gXGhlYWRl
cmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25k
cyB0byB0aGUgPGM+IFZTVE1YQ1NSIC8gU1RNWENTUiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0K
Ky8vLyBccmV0dXJucyBBIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIGNv
bnRlbnRzIG9mIHRoZSBNWENTUg0KKy8vLyAgICByZWdpc3Rlci4NCit1bnNpZ25lZCBpbnQgX21t
X2dldGNzcih2b2lkKTsNCisNCisvLy8gU2V0cyB0aGUgTVhDU1IgcmVnaXN0ZXIgd2l0aCB0aGUg
MzItYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUuDQorLy8vDQorLy8vICAgIFRoZXJlIGFyZSBz
ZXZlcmFsIGdyb3VwcyBvZiBtYWNyb3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50cmluc2ljLA0K
Ky8vLyAgICBpbmNsdWRpbmc6DQorLy8vICAgIDx1bD4NCisvLy8gICAgPGxpPg0KKy8vLyAgICAg
IEZvciBzZXR0aW5nIGV4Y2VwdGlvbiBzdGF0ZXM6IF9NTV9FWENFUFRfSU5WQUxJRCwgX01NX0VY
Q0VQVF9ESVZfWkVSTywNCisvLy8gICAgICBfTU1fRVhDRVBUX0RFTk9STSwgX01NX0VYQ0VQVF9P
VkVSRkxPVywgX01NX0VYQ0VQVF9VTkRFUkZMT1csDQorLy8vICAgICAgX01NX0VYQ0VQVF9JTkVY
QUNULiBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXINCisvLy8gICAgICBfTU1fU0VUX0VY
Q0VQVElPTl9TVEFURSh4KSB3aGVyZSB4IGlzIG9uZSBvZiB0aGVzZSBtYWNyb3MuDQorLy8vICAg
IDwvbGk+DQorLy8vICAgIDxsaT4NCisvLy8gICAgICBGb3Igc2V0dGluZyBleGNlcHRpb24gbWFz
a3M6IF9NTV9NQVNLX1VOREVSRkxPVywgX01NX01BU0tfT1ZFUkZMT1csDQorLy8vICAgICAgX01N
X01BU0tfSU5WQUxJRCwgX01NX01BU0tfREVOT1JNLCBfTU1fTUFTS19ESVZfWkVSTywgX01NX01B
U0tfSU5FWEFDVC4NCisvLy8gICAgICBUaGVyZSBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgX01N
X1NFVF9FWENFUFRJT05fTUFTSyh4KSB3aGVyZSB4IGlzIG9uZQ0KKy8vLyAgICAgIG9mIHRoZXNl
IG1hY3Jvcy4NCisvLy8gICAgPC9saT4NCisvLy8gICAgPGxpPg0KKy8vLyAgICAgIEZvciBzZXR0
aW5nIHJvdW5kaW5nIG1vZGVzOiBfTU1fUk9VTkRfTkVBUkVTVCwgX01NX1JPVU5EX0RPV04sDQor
Ly8vICAgICAgX01NX1JPVU5EX1VQLCBfTU1fUk9VTkRfVE9XQVJEX1pFUk8uIFRoZXJlIGlzIGEg
Y29udmVuaWVuY2Ugd3JhcHBlcg0KKy8vLyAgICAgIF9NTV9TRVRfUk9VTkRJTkdfTU9ERSh4KSB3
aGVyZSB4IGlzIG9uZSBvZiB0aGVzZSBtYWNyb3MuDQorLy8vICAgIDwvbGk+DQorLy8vICAgIDxs
aT4NCisvLy8gICAgICBGb3Igc2V0dGluZyBmbHVzaC10by16ZXJvIG1vZGU6IF9NTV9GTFVTSF9a
RVJPX09OLCBfTU1fRkxVU0hfWkVST19PRkYuDQorLy8vICAgICAgVGhlcmUgaXMgYSBjb252ZW5p
ZW5jZSB3cmFwcGVyIF9NTV9TRVRfRkxVU0hfWkVST19NT0RFKHgpIHdoZXJlIHggaXMNCisvLy8g
ICAgICBvbmUgb2YgdGhlc2UgbWFjcm9zLg0KKy8vLyAgICA8L2xpPg0KKy8vLyAgICA8bGk+DQor
Ly8vICAgICAgRm9yIHNldHRpbmcgZGVub3JtYWxzLWFyZS16ZXJvIG1vZGU6IF9NTV9ERU5PUk1B
TFNfWkVST19PTiwNCisvLy8gICAgICBfTU1fREVOT1JNQUxTX1pFUk9fT0ZGLiBUaGVyZSBpcyBh
IGNvbnZlbmllbmNlIHdyYXBwZXINCisvLy8gICAgICBfTU1fU0VUX0RFTk9STUFMU19aRVJPX01P
REUoeCkgd2hlcmUgeCBpcyBvbmUgb2YgdGhlc2UgbWFjcm9zLg0KKy8vLyAgICA8L2xpPg0KKy8v
LyAgICA8L3VsPg0KKy8vLw0KKy8vLyAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBleHBy
ZXNzaW9uIGNhdXNlcyBzdWJzZXF1ZW50IGZsb2F0aW5nLXBvaW50DQorLy8vICAgIG9wZXJhdGlv
bnMgdG8gcm91bmQgdXA6DQorLy8vICAgICAgX21tX3NldGNzcihfbW1fZ2V0Y3NyKCkgfCBfTU1f
Uk9VTkRfVVApDQorLy8vDQorLy8vICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzZXRzIHRoZSBE
QVogYW5kIEZUWiBmbGFnczoNCisvLy8gICAgXGNvZGUNCisvLy8gICAgdm9pZCBzZXRGbGFncygp
IHsNCisvLy8gICAgICBfTU1fU0VUX0ZMVVNIX1pFUk9fTU9ERShfTU1fRkxVU0hfWkVST19PTik7
DQorLy8vICAgICAgX01NX1NFVF9ERU5PUk1BTFNfWkVST19NT0RFKF9NTV9ERU5PUk1BTFNfWkVS
T19PTik7DQorLy8vICAgIH0NCisvLy8gICAgXGVuZGNvZGUNCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZMRE1YQ1NSIC8gTERNWENTUiA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8v
LyBccGFyYW0gX19pDQorLy8vICAgIEEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUgdG8g
YmUgd3JpdHRlbiB0byB0aGUgTVhDU1IgcmVnaXN0ZXIuDQordm9pZCBfbW1fc2V0Y3NyKHVuc2ln
bmVkIGludCBfX2kpOw0KKw0KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQ0KK30gLy8gZXh0ZXJu
ICJDIg0KKyNlbmRpZg0KKw0KKy8vLyBTZWxlY3RzIDQgZmxvYXQgdmFsdWVzIGZyb20gdGhlIDEy
OC1iaXQgb3BlcmFuZHMgb2YgWzQgeCBmbG9hdF0sIGFzDQorLy8vICAgIHNwZWNpZmllZCBieSB0
aGUgaW1tZWRpYXRlIHZhbHVlIG9wZXJhbmQuDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZp
bnRyaW4uaD4NCisvLy8NCisvLy8gXGNvZGUNCisvLy8gX19tMTI4IF9tbV9zaHVmZmxlX3BzKF9f
bTEyOCBhLCBfX20xMjggYiwgY29uc3QgaW50IG1hc2spOw0KKy8vLyBcZW5kY29kZQ0KKy8vLw0K
Ky8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZTSFVGUFMgLyBTSFVG
UFMgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIGENCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIGINCisvLy8gICAgQSAxMjgt
Yml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCisvLy8gXHBhcmFtIG1hc2sNCisvLy8gICAgQW4g
aW1tZWRpYXRlIHZhbHVlIGNvbnRhaW5pbmcgYW4gOC1iaXQgdmFsdWUgc3BlY2lmeWluZyB3aGlj
aCBlbGVtZW50cyB0bw0KKy8vLyAgICBjb3B5IGZyb20gXGEgYSBhbmQgXGEgYi4gXG4NCisvLy8g
ICAgQml0cyBbMzowXSBzcGVjaWZ5IHRoZSB2YWx1ZXMgY29waWVkIGZyb20gb3BlcmFuZCBcYSBh
LiBcbg0KKy8vLyAgICBCaXRzIFs3OjRdIHNwZWNpZnkgdGhlIHZhbHVlcyBjb3BpZWQgZnJvbSBv
cGVyYW5kIFxhIGIuIFxuDQorLy8vICAgIFRoZSBkZXN0aW5hdGlvbnMgd2l0aGluIHRoZSAxMjgt
Yml0IGRlc3RpbmF0aW9uIGFyZSBhc3NpZ25lZCB2YWx1ZXMgYXMNCisvLy8gICAgZm9sbG93czog
XG4NCisvLy8gICAgQml0cyBbMTowXSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMg
WzMxOjBdIGluIHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbi4gXG4NCisvLy8gICAgQml0cyBbMzoy
XSBhcmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGJpdHMgWzYzOjMyXSBpbiB0aGUNCisvLy8g
ICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzU6NF0gYXJlIHVzZWQgdG8gYXNzaWdu
IHZhbHVlcyB0byBiaXRzIFs5NTo2NF0gaW4gdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uLiBcbg0K
Ky8vLyAgICBCaXRzIFs3OjZdIGFyZSB1c2VkIHRvIGFzc2lnbiB2YWx1ZXMgdG8gYml0cyBbMTI3
Ojk2XSBpbiB0aGUNCisvLy8gICAgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdCB2YWx1ZSBh
c3NpZ25tZW50czogXG4NCisvLy8gICAgMDA6IEJpdHMgWzMxOjBdIGNvcGllZCBmcm9tIHRoZSBz
cGVjaWZpZWQgb3BlcmFuZC4gXG4NCisvLy8gICAgMDE6IEJpdHMgWzYzOjMyXSBjb3BpZWQgZnJv
bSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuIFxuDQorLy8vICAgIDEwOiBCaXRzIFs5NTo2NF0gY29w
aWVkIGZyb20gdGhlIHNwZWNpZmllZCBvcGVyYW5kLiBcbg0KKy8vLyAgICAxMTogQml0cyBbMTI3
Ojk2XSBjb3BpZWQgZnJvbSB0aGUgc3BlY2lmaWVkIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEg
MTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgc2h1ZmZsZWQgdmFs
dWVzLg0KKyNkZWZpbmUgX21tX3NodWZmbGVfcHMoYSwgYiwgbWFzaykgXA0KKyAgKF9fbTEyOClf
X2J1aWx0aW5faWEzMl9zaHVmcHMoKF9fdjRzZikoX19tMTI4KShhKSwgKF9fdjRzZikoX19tMTI4
KShiKSwgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobWFzaykpDQor
DQorLy8vIFVucGFja3MgdGhlIGhpZ2gtb3JkZXIgKGluZGV4IDIsMykgdmFsdWVzIGZyb20gdHdv
IDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8vLyAgICBbNCB4IGZsb2F0XSBhbmQgaW50ZXJsZWF2ZXMg
dGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxo
ZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVz
cG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tIUFMgLyBVTlBDS0hQUyA8L2M+IGluc3RydWN0aW9uLg0K
Ky8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzk1OjY0XSBhcmUgd3JpdHRlbiB0byBiaXRzIFszMTow
XSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzEyNzo5Nl0gYXJlIHdyaXR0
ZW4gdG8gYml0cyBbOTU6NjRdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHBhcmFtIF9fYg0K
Ky8vLyAgICBBIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLyAgICBCaXRzIFs5
NTo2NF0gYXJlIHdyaXR0ZW4gdG8gYml0cyBbNjM6MzJdIG9mIHRoZSBkZXN0aW5hdGlvbi4gXG4N
CisvLy8gICAgQml0cyBbMTI3Ojk2XSBhcmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIG9mIHRo
ZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZs
b2F0XSBjb250YWluaW5nIHRoZSBpbnRlcmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5l
X18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSUw0KK19tbV91bnBhY2toaV9wcyhfX20xMjggX19h
LCBfX20xMjggX19iKQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4KSBf
X2J1aWx0aW5faWEzMl91bnBja2hwcyAoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCisjZWxz
ZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNm
KV9fYiwgMiwgNiwgMywgNyk7DQorI2VuZGlmDQorfQ0KKw0KKy8vLyBVbnBhY2tzIHRoZSBsb3ct
b3JkZXIgKGluZGV4IDAsMSkgdmFsdWVzIGZyb20gdHdvIDEyOC1iaXQgdmVjdG9ycyBvZg0KKy8v
LyAgICBbNCB4IGZsb2F0XSBhbmQgaW50ZXJsZWF2ZXMgdGhlbSBpbnRvIGEgMTI4LWJpdCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4N
CisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tM
UFMgLyBVTlBDS0xQUyA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQor
Ly8vICAgIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFxuDQorLy8vICAgIEJpdHMg
WzMxOjBdIGFyZSB3cml0dGVuIHRvIGJpdHMgWzMxOjBdIG9mIHRoZSBkZXN0aW5hdGlvbi4gIFxu
DQorLy8vICAgIEJpdHMgWzYzOjMyXSBhcmUgd3JpdHRlbiB0byBiaXRzIFs5NTo2NF0gb2YgdGhl
IGRlc3RpbmF0aW9uLg0KKy8vLyBccGFyYW0gX19iDQorLy8vICAgIEEgMTI4LWJpdCB2ZWN0b3Ig
b2YgWzQgeCBmbG9hdF0uIFxuDQorLy8vICAgIEJpdHMgWzMxOjBdIGFyZSB3cml0dGVuIHRvIGJp
dHMgWzYzOjMyXSBvZiB0aGUgZGVzdGluYXRpb24uIFxuDQorLy8vICAgIEJpdHMgWzYzOjMyXSBh
cmUgd3JpdHRlbiB0byBiaXRzIFsxMjc6OTZdIG9mIHRoZSBkZXN0aW5hdGlvbi4NCisvLy8gXHJl
dHVybnMgQSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBjb250YWluaW5nIHRoZSBpbnRl
cmxlYXZlZCB2YWx1ZXMuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9B
VFRSUw0KK19tbV91bnBhY2tsb19wcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisjaWZk
ZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl91bnBja2xwcyAo
KF9fdjRzZilfX2EsIChfX3Y0c2YpX19iKTsNCisjZWxzZQ0KKyAgcmV0dXJuIF9fYnVpbHRpbl9z
aHVmZmxldmVjdG9yKChfX3Y0c2YpX19hLCAoX192NHNmKV9fYiwgMCwgNCwgMSwgNSk7DQorI2Vu
ZGlmDQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0
b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KKy8vLyAgICAzMiBiaXRzIGFyZSBzZXQgdG8g
dGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRoZSB1cHBlcg0KKy8v
LyAgICA5NiBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDk2IGJpdHMgb2YgdGhlIGZpcnN0IHBh
cmFtZXRlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8v
LyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZCTEVORFBTIC8gQkxFTkRQ
UyAvIE1PVlNTIDwvYz4NCisvLy8gICAgaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBf
X2ENCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0
XS4gVGhlIHVwcGVyIDk2IGJpdHMgYXJlDQorLy8vICAgIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDk2
IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQg
ZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgbG93ZXIgMzIgYml0cyBh
cmUNCisvLy8gICAgd3JpdHRlbiB0byB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVzdWx0Lg0K
Ky8vLyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxv
YXRdLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1f
bW92ZV9zcyhfX20xMjggX19hLCBfX20xMjggX19iKQ0KK3sNCisgIF9fYVswXSA9IF9fYlswXTsN
CisgIHJldHVybiBfX2E7DQorfQ0KKw0KKy8vLyBDb25zdHJ1Y3RzIGEgMTI4LWJpdCBmbG9hdGlu
Zy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlcg0KKy8vLyAgICA2NCBiaXRz
IGFyZSBzZXQgdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIuIFRo
ZSB1cHBlcg0KKy8vLyAgICA2NCBiaXRzIGFyZSBzZXQgdG8gdGhlIHVwcGVyIDY0IGJpdHMgb2Yg
dGhlIGZpcnN0IHBhcmFtZXRlci4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5o
Pg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFZVTlBD
S0hQRCAvIFVOUENLSFBEIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2EN
CisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4g
VGhlIHVwcGVyIDY0IGJpdHMgYXJlDQorLy8vICAgIHdyaXR0ZW4gdG8gdGhlIHVwcGVyIDY0IGJp
dHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHBhcmFtIF9fYg0KKy8vLyAgICBBIDEyOC1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLiBUaGUgdXBwZXIgNjQgYml0cyBhcmUN
CisvLy8gICAgd3JpdHRlbiB0byB0aGUgbG93ZXIgNjQgYml0cyBvZiB0aGUgcmVzdWx0Lg0KKy8v
LyBccmV0dXJucyBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlMNCitfbW1fbW92
ZWhsX3BzKF9fbTEyOCBfX2EsIF9fbTEyOCBfX2IpDQorew0KKyNpZmRlZiBfX0dOVUNfXw0KKyAg
cmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdmhscHMgKChfX3Y0c2YpX19hLCAoX192
NHNmKV9fYik7DQorI2Vsc2UNCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvcigoX192
NHNmKV9fYSwgKF9fdjRzZilfX2IsIDYsIDcsIDIsIDMpOw0KKyNlbmRpZg0KK30NCisNCisvLy8g
Q29uc3RydWN0cyBhIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
LiBUaGUgbG93ZXINCisvLy8gICAgNjQgYml0cyBhcmUgc2V0IHRvIHRoZSBsb3dlciA2NCBiaXRz
IG9mIHRoZSBmaXJzdCBwYXJhbWV0ZXIuIFRoZSB1cHBlcg0KKy8vLyAgICA2NCBiaXRzIGFyZSBz
ZXQgdG8gdGhlIGxvd2VyIDY0IGJpdHMgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIuDQorLy8vDQor
Ly8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhpcyBpbnRyaW5zaWMg
Y29ycmVzcG9uZHMgdG8gdGhlIDxjPiBWVU5QQ0tMUEQgLyBVTlBDS0xQRCA8L2M+IGluc3RydWN0
aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgMTI4LWJpdCBmbG9hdGluZy1w
b2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uIFRoZSBsb3dlciA2NCBiaXRzIGFyZQ0KKy8vLyAg
ICB3cml0dGVuIHRvIHRoZSBsb3dlciA2NCBiaXRzIG9mIHRoZSByZXN1bHQuDQorLy8vIFxwYXJh
bSBfX2INCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4IGZs
b2F0XS4gVGhlIGxvd2VyIDY0IGJpdHMgYXJlDQorLy8vICAgIHdyaXR0ZW4gdG8gdGhlIHVwcGVy
IDY0IGJpdHMgb2YgdGhlIHJlc3VsdC4NCisvLy8gXHJldHVybnMgQSAxMjgtYml0IGZsb2F0aW5n
LXBvaW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XS4NCitzdGF0aWMgX19pbmxpbmVfXyBfX20xMjgg
X19ERUZBVUxUX0ZOX0FUVFJTDQorX21tX21vdmVsaF9wcyhfX20xMjggX19hLCBfX20xMjggX19i
KQ0KK3sNCisjaWZkZWYgX19HTlVDX18NCisgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEz
Ml9tb3ZsaHBzICgoX192NHNmKV9fYSwgKF9fdjRzZilfX2IpOw0KKyNlbHNlDQorICByZXR1cm4g
X19idWlsdGluX3NodWZmbGV2ZWN0b3IoKF9fdjRzZilfX2EsIChfX3Y0c2YpX19iLCAwLCAxLCA0
LCA1KTsNCisjZW5kaWYNCit9DQorDQorLy8vIENvbnZlcnRzIGEgNjQtYml0IHZlY3RvciBvZiBb
NCB4IGkxNl0gaW50byBhIDEyOC1iaXQgdmVjdG9yIG9mIFs0IHgNCisvLy8gICAgZmxvYXRdLg0K
Ky8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50
cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBp
bnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0
b3Igb2YgWzQgeCBpMTZdLiBUaGUgZWxlbWVudHMgb2YgdGhlIGRlc3RpbmF0aW9uIGFyZSBjb3Bp
ZWQNCisvLy8gICAgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGlzIG9wZXJh
bmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFp
bmluZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCisvLy8gICAgdmFsdWVzIGZyb20gdGhlIG9w
ZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgN
CitfbW1fY3Z0cGkxNl9wcyhfX202NCBfX2EpDQorew0KKyAgX19tNjQgX19iLCBfX2M7DQorICBf
X20xMjggX19yOw0KKw0KKyAgX19iID0gX21tX3NldHplcm9fc2k2NCgpOw0KKyAgX19iID0gX21t
X2NtcGd0X3BpMTYoX19iLCBfX2EpOw0KKyAgX19jID0gX21tX3VucGFja2hpX3BpMTYoX19hLCBf
X2IpOw0KKyAgX19yID0gX21tX3NldHplcm9fcHMoKTsNCisgIF9fciA9IF9tbV9jdnRwaTMyX3Bz
KF9fciwgX19jKTsNCisgIF9fciA9IF9tbV9tb3ZlbGhfcHMoX19yLCBfX3IpOw0KKyAgX19jID0g
X21tX3VucGFja2xvX3BpMTYoX19hLCBfX2IpOw0KKyAgX19yID0gX21tX2N2dHBpMzJfcHMoX19y
LCBfX2MpOw0KKw0KKyAgcmV0dXJuIF9fcjsNCit9DQorDQorLy8vIENvbnZlcnRzIGEgNjQtYml0
IHZlY3RvciBvZiAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMgaW50byBhDQorLy8vICAg
IDEyOC1iaXQgdmVjdG9yIG9mIFs0IHggZmxvYXRdLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8
eDg2aW50cmluLmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRo
ZSA8Yz4gQ1ZUUEkyUFMgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8g
XHBhcmFtIF9fYQ0KKy8vLyAgICBBIDY0LWJpdCB2ZWN0b3Igb2YgMTYtYml0IHVuc2lnbmVkIGlu
dGVnZXIgdmFsdWVzLiBUaGUgZWxlbWVudHMgb2YgdGhlDQorLy8vICAgIGRlc3RpbmF0aW9uIGFy
ZSBjb3BpZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGlzIG9wZXJhbmQu
DQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmlu
ZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCisvLy8gICAgdmFsdWVzIGZyb20gdGhlIG9wZXJh
bmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitf
bW1fY3Z0cHUxNl9wcyhfX202NCBfX2EpDQorew0KKyAgX19tNjQgX19iLCBfX2M7DQorICBfX20x
MjggX19yOw0KKw0KKyAgX19iID0gX21tX3NldHplcm9fc2k2NCgpOw0KKyAgX19jID0gX21tX3Vu
cGFja2hpX3BpMTYoX19hLCBfX2IpOw0KKyAgX19yID0gX21tX3NldHplcm9fcHMoKTsNCisgIF9f
ciA9IF9tbV9jdnRwaTMyX3BzKF9fciwgX19jKTsNCisgIF9fciA9IF9tbV9tb3ZlbGhfcHMoX19y
LCBfX3IpOw0KKyAgX19jID0gX21tX3VucGFja2xvX3BpMTYoX19hLCBfX2IpOw0KKyAgX19yID0g
X21tX2N2dHBpMzJfcHMoX19yLCBfX2MpOw0KKw0KKyAgcmV0dXJuIF9fcjsNCit9DQorDQorLy8v
IENvbnZlcnRzIHRoZSBsb3dlciBmb3VyIDgtYml0IHZhbHVlcyBmcm9tIGEgNjQtYml0IHZlY3Rv
ciBvZiBbOCB4IGk4XQ0KKy8vLyAgICBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0
IHZlY3RvciBvZiBbOCB4IGk4XS4gVGhlIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUg
Y29waWVkDQorLy8vICAgIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbG93ZXIgNCBlbGVtZW50cyBp
biB0aGlzIG9wZXJhbmQuDQorLy8vIFxyZXR1cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBm
bG9hdF0gY29udGFpbmluZyB0aGUgY29waWVkIGFuZCBjb252ZXJ0ZWQNCisvLy8gICAgdmFsdWVz
IGZyb20gdGhlIG9wZXJhbmQuDQorc3RhdGljIF9faW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9G
Tl9BVFRSU19NTVgNCitfbW1fY3Z0cGk4X3BzKF9fbTY0IF9fYSkNCit7DQorICBfX202NCBfX2I7
DQorDQorICBfX2IgPSBfbW1fc2V0emVyb19zaTY0KCk7DQorICBfX2IgPSBfbW1fY21wZ3RfcGk4
KF9fYiwgX19hKTsNCisgIF9fYiA9IF9tbV91bnBhY2tsb19waTgoX19hLCBfX2IpOw0KKw0KKyAg
cmV0dXJuIF9tbV9jdnRwaTE2X3BzKF9fYik7DQorfQ0KKw0KKy8vLyBDb252ZXJ0cyB0aGUgbG93
ZXIgZm91ciB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHZhbHVlcyBmcm9tIGEgNjQtYml0DQorLy8v
ICAgIHZlY3RvciBvZiBbOCB4IHU4XSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9h
dF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisvLy8gVGhp
cyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBPU0lURSA8
L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEgNjQtYml0
IHZlY3RvciBvZiB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHZhbHVlcy4gVGhlIGVsZW1lbnRzIG9m
IHRoZQ0KKy8vLyAgICBkZXN0aW5hdGlvbiBhcmUgY29waWVkIGZyb20gdGhlIGNvcnJlc3BvbmRp
bmcgbG93ZXIgNCBlbGVtZW50cyBpbiB0aGlzDQorLy8vICAgIG9wZXJhbmQuDQorLy8vIFxyZXR1
cm5zIEEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0gY29udGFpbmluZyB0aGUgY29waWVk
IGFuZCBjb252ZXJ0ZWQNCisvLy8gICAgdmFsdWVzIGZyb20gdGhlIHNvdXJjZSBvcGVyYW5kLg0K
K3N0YXRpYyBfX2lubGluZV9fIF9fbTEyOCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2
dHB1OF9wcyhfX202NCBfX2EpDQorew0KKyAgX19tNjQgX19iOw0KKw0KKyAgX19iID0gX21tX3Nl
dHplcm9fc2k2NCgpOw0KKyAgX19iID0gX21tX3VucGFja2xvX3BpOChfX2EsIF9fYik7DQorDQor
ICByZXR1cm4gX21tX2N2dHBpMTZfcHMoX19iKTsNCit9DQorDQorLy8vIENvbnZlcnRzIHRoZSB0
d28gMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlcyBmcm9tIGVhY2ggNjQtYml0IHZlY3Rvcg0K
Ky8vLyAgICBvcGVyYW5kIG9mIFsyIHggaTMyXSBpbnRvIGEgMTI4LWJpdCB2ZWN0b3Igb2YgWzQg
eCBmbG9hdF0uDQorLy8vDQorLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCisvLy8NCisv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBDVlRQSTJQUyArIENPTVBP
U0lURSA8L2M+IGluc3RydWN0aW9uLg0KKy8vLw0KKy8vLyBccGFyYW0gX19hDQorLy8vICAgIEEg
NjQtYml0IHZlY3RvciBvZiBbMiB4IGkzMl0uIFRoZSBsb3dlciBlbGVtZW50cyBvZiB0aGUgZGVz
dGluYXRpb24gYXJlDQorLy8vICAgIGNvcGllZCBmcm9tIHRoZSBlbGVtZW50cyBpbiB0aGlzIG9w
ZXJhbmQuDQorLy8vIFxwYXJhbSBfX2INCisvLy8gICAgQSA2NC1iaXQgdmVjdG9yIG9mIFsyIHgg
aTMyXS4gVGhlIHVwcGVyIGVsZW1lbnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmUNCisvLy8gICAg
Y29waWVkIGZyb20gdGhlIGVsZW1lbnRzIGluIHRoaXMgb3BlcmFuZC4NCisvLy8gXHJldHVybnMg
QSAxMjgtYml0IHZlY3RvciBvZiBbNCB4IGZsb2F0XSB3aG9zZSBsb3dlciA2NCBiaXRzIGNvbnRh
aW4gdGhlDQorLy8vICAgIGNvcGllZCBhbmQgY29udmVydGVkIHZhbHVlcyBmcm9tIHRoZSBmaXJz
dCBvcGVyYW5kLiBUaGUgdXBwZXIgNjQgYml0cw0KKy8vLyAgICBjb250YWluIHRoZSBjb3BpZWQg
YW5kIGNvbnZlcnRlZCB2YWx1ZXMgZnJvbSB0aGUgc2Vjb25kIG9wZXJhbmQuDQorc3RhdGljIF9f
aW5saW5lX18gX19tMTI4IF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCitfbW1fY3Z0cGkzMngyX3Bz
KF9fbTY0IF9fYSwgX19tNjQgX19iKQ0KK3sNCisgIF9fbTEyOCBfX2M7DQorDQorICBfX2MgPSBf
bW1fc2V0emVyb19wcygpOw0KKyAgX19jID0gX21tX2N2dHBpMzJfcHMoX19jLCBfX2IpOw0KKyAg
X19jID0gX21tX21vdmVsaF9wcyhfX2MsIF9fYyk7DQorDQorICByZXR1cm4gX21tX2N2dHBpMzJf
cHMoX19jLCBfX2EpOw0KK30NCisNCisvLy8gQ29udmVydHMgZWFjaCBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IGVsZW1lbnQgb2YgYSAxMjgtYml0DQorLy8vICAgIGZsb2F0aW5nLXBv
aW50IHZlY3RvciBvZiBbNCB4IGZsb2F0XSBpbnRvIGEgMTYtYml0IHNpZ25lZCBpbnRlZ2VyLCBh
bmQNCisvLy8gICAgcGFja3MgdGhlIHJlc3VsdHMgaW50byBhIDY0LWJpdCBpbnRlZ2VyIHZlY3Rv
ciBvZiBbNCB4IGkxNl0uDQorLy8vDQorLy8vICAgIElmIHRoZSBmbG9hdGluZy1wb2ludCBlbGVt
ZW50IGlzIE5hTiBvciBpbmZpbml0eSwgb3IgaWYgdGhlDQorLy8vICAgIGZsb2F0aW5nLXBvaW50
IGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuIDB4N0ZGRkZGRkYgb3IgbGVzcyB0aGFuIC0weDgwMDAs
DQorLy8vICAgIGl0IGlzIGNvbnZlcnRlZCB0byAweDgwMDAuIE90aGVyd2lzZSBpZiB0aGUgZmxv
YXRpbmctcG9pbnQgZWxlbWVudCBpcw0KKy8vLyAgICBncmVhdGVyIHRoYW4gMHg3RkZGLCBpdCBp
cyBjb252ZXJ0ZWQgdG8gMHg3RkZGLg0KKy8vLw0KKy8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQorLy8vDQorLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gQ1ZU
UFMyUEkgKyBDT01QT1NJVEUgPC9jPiBpbnN0cnVjdGlvbi4NCisvLy8NCisvLy8gXHBhcmFtIF9f
YQ0KKy8vLyAgICBBIDEyOC1iaXQgZmxvYXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRd
Lg0KKy8vLyBccmV0dXJucyBBIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvZiBbNCB4IGkxNl0gY29u
dGFpbmluZyB0aGUgY29udmVydGVkDQorLy8vICAgIHZhbHVlcy4NCitzdGF0aWMgX19pbmxpbmVf
XyBfX202NCBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQorX21tX2N2dHBzX3BpMTYoX19tMTI4IF9f
YSkNCit7DQorICBfX202NCBfX2IsIF9fYzsNCisNCisgIF9fYiA9IF9tbV9jdnRwc19waTMyKF9f
YSk7DQorICBfX2EgPSBfbW1fbW92ZWhsX3BzKF9fYSwgX19hKTsNCisgIF9fYyA9IF9tbV9jdnRw
c19waTMyKF9fYSk7DQorDQorICByZXR1cm4gX21tX3BhY2tzX3BpMzIoX19iLCBfX2MpOw0KK30N
CisNCisvLy8gQ29udmVydHMgZWFjaCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGVs
ZW1lbnQgb2YgYSAxMjgtYml0DQorLy8vICAgIGZsb2F0aW5nLXBvaW50IHZlY3RvciBvZiBbNCB4
IGZsb2F0XSBpbnRvIGFuIDgtYml0IHNpZ25lZCBpbnRlZ2VyLCBhbmQNCisvLy8gICAgcGFja3Mg
dGhlIHJlc3VsdHMgaW50byB0aGUgbG93ZXIgMzIgYml0cyBvZiBhIDY0LWJpdCBpbnRlZ2VyIHZl
Y3RvciBvZg0KKy8vLyAgICBbOCB4IGk4XS4gVGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIHZlY3Rv
ciBhcmUgc2V0IHRvIDAuDQorLy8vDQorLy8vICAgIElmIHRoZSBmbG9hdGluZy1wb2ludCBlbGVt
ZW50IGlzIE5hTiBvciBpbmZpbml0eSwgb3IgaWYgdGhlDQorLy8vICAgIGZsb2F0aW5nLXBvaW50
IGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuIDB4N0ZGRkZGRkYgb3IgbGVzcyB0aGFuIC0weDgwLCBp
dA0KKy8vLyAgICBpcyBjb252ZXJ0ZWQgdG8gMHg4MC4gT3RoZXJ3aXNlIGlmIHRoZSBmbG9hdGlu
Zy1wb2ludCBlbGVtZW50IGlzIGdyZWF0ZXINCisvLy8gICAgdGhhbiAweDdGLCBpdCBpcyBjb252
ZXJ0ZWQgdG8gMHg3Ri4NCisvLy8NCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KKy8v
Lw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IENWVFBTMlBJICsg
Q09NUE9TSVRFIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQorLy8vIFxwYXJhbSBfX2ENCisvLy8g
ICAgMTI4LWJpdCBmbG9hdGluZy1wb2ludCB2ZWN0b3Igb2YgWzQgeCBmbG9hdF0uDQorLy8vIFxy
ZXR1cm5zIEEgNjQtYml0IGludGVnZXIgdmVjdG9yIG9mIFs4IHggaThdLiBUaGUgbG93ZXIgMzIg
Yml0cyBjb250YWluIHRoZQ0KKy8vLyAgICBjb252ZXJ0ZWQgdmFsdWVzIGFuZCB0aGUgdXBwcGVy
IDMyIGJpdHMgYXJlIHNldCB0byB6ZXJvLg0KK3N0YXRpYyBfX2lubGluZV9fIF9fbTY0IF9fREVG
QVVMVF9GTl9BVFRSU19NTVgNCitfbW1fY3Z0cHNfcGk4KF9fbTEyOCBfX2EpDQorew0KKyAgX19t
NjQgX19iLCBfX2M7DQorDQorICBfX2IgPSBfbW1fY3Z0cHNfcGkxNihfX2EpOw0KKyAgX19jID0g
X21tX3NldHplcm9fc2k2NCgpOw0KKw0KKyAgcmV0dXJuIF9tbV9wYWNrc19waTE2KF9fYiwgX19j
KTsNCit9DQorDQorLy8vIEV4dHJhY3RzIHRoZSBzaWduIGJpdHMgZnJvbSBlYWNoIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQNCisvLy8gICAgZWxlbWVudCBvZiBhIDEyOC1iaXQgZmxv
YXRpbmctcG9pbnQgdmVjdG9yIG9mIFs0IHggZmxvYXRdIGFuZCByZXR1cm5zIHRoZQ0KKy8vLyAg
ICBzaWduIGJpdHMgaW4gYml0cyBbMDozXSBvZiB0aGUgcmVzdWx0LiBCaXRzIFszMTo0XSBvZiB0
aGUgcmVzdWx0IGFyZSBzZXQNCisvLy8gICAgdG8gemVyby4NCisvLy8NCisvLy8gXGhlYWRlcmZp
bGUgPHg4NmludHJpbi5oPg0KKy8vLw0KKy8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0
byB0aGUgPGM+IFZNT1ZNU0tQUyAvIE1PVk1TS1BTIDwvYz4gaW5zdHJ1Y3Rpb24uDQorLy8vDQor
Ly8vIFxwYXJhbSBfX2ENCisvLy8gICAgQSAxMjgtYml0IGZsb2F0aW5nLXBvaW50IHZlY3RvciBv
ZiBbNCB4IGZsb2F0XS4NCisvLy8gXHJldHVybnMgQSAzMi1iaXQgaW50ZWdlciB2YWx1ZS4gQml0
cyBbMzowXSBjb250YWluIHRoZSBzaWduIGJpdHMgZnJvbSBlYWNoDQorLy8vICAgIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmctcG9pbnQgZWxlbWVudCBvZiB0aGUgcGFyYW1ldGVyLiBCaXRzIFsz
MTo0XSBhcmUNCisvLy8gICAgc2V0IHRvIHplcm8uDQorc3RhdGljIF9faW5saW5lX18gaW50IF9f
REVGQVVMVF9GTl9BVFRSUw0KK19tbV9tb3ZlbWFza19wcyhfX20xMjggX19hKQ0KK3sNCisgIHJl
dHVybiBfX2J1aWx0aW5faWEzMl9tb3Ztc2twcygoX192NHNmKV9fYSk7DQorfQ0KKw0KKw0KKyNk
ZWZpbmUgX01NX0FMSUdOMTYgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKQ0KKw0KKw0KKyNk
ZWZpbmUgX01NX0VYQ0VQVF9JTlZBTElEICAgICgweDAwMDEpDQorI2RlZmluZSBfTU1fRVhDRVBU
X0RFTk9STSAgICAgKDB4MDAwMikNCisjZGVmaW5lIF9NTV9FWENFUFRfRElWX1pFUk8gICAoMHgw
MDA0KQ0KKyNkZWZpbmUgX01NX0VYQ0VQVF9PVkVSRkxPVyAgICgweDAwMDgpDQorI2RlZmluZSBf
TU1fRVhDRVBUX1VOREVSRkxPVyAgKDB4MDAxMCkNCisjZGVmaW5lIF9NTV9FWENFUFRfSU5FWEFD
VCAgICAoMHgwMDIwKQ0KKyNkZWZpbmUgX01NX0VYQ0VQVF9NQVNLICAgICAgICgweDAwM2YpDQor
DQorI2RlZmluZSBfTU1fTUFTS19JTlZBTElEICAgICAgKDB4MDA4MCkNCisjZGVmaW5lIF9NTV9N
QVNLX0RFTk9STSAgICAgICAoMHgwMTAwKQ0KKyNkZWZpbmUgX01NX01BU0tfRElWX1pFUk8gICAg
ICgweDAyMDApDQorI2RlZmluZSBfTU1fTUFTS19PVkVSRkxPVyAgICAgKDB4MDQwMCkNCisjZGVm
aW5lIF9NTV9NQVNLX1VOREVSRkxPVyAgICAoMHgwODAwKQ0KKyNkZWZpbmUgX01NX01BU0tfSU5F
WEFDVCAgICAgICgweDEwMDApDQorI2RlZmluZSBfTU1fTUFTS19NQVNLICAgICAgICAgKDB4MWY4
MCkNCisNCisjZGVmaW5lIF9NTV9ST1VORF9ORUFSRVNUICAgICAoMHgwMDAwKQ0KKyNkZWZpbmUg
X01NX1JPVU5EX0RPV04gICAgICAgICgweDIwMDApDQorI2RlZmluZSBfTU1fUk9VTkRfVVAgICAg
ICAgICAgKDB4NDAwMCkNCisjZGVmaW5lIF9NTV9ST1VORF9UT1dBUkRfWkVSTyAoMHg2MDAwKQ0K
KyNkZWZpbmUgX01NX1JPVU5EX01BU0sgICAgICAgICgweDYwMDApDQorDQorI2RlZmluZSBfTU1f
RkxVU0hfWkVST19NQVNLICAgKDB4ODAwMCkNCisjZGVmaW5lIF9NTV9GTFVTSF9aRVJPX09OICAg
ICAoMHg4MDAwKQ0KKyNkZWZpbmUgX01NX0ZMVVNIX1pFUk9fT0ZGICAgICgweDAwMDApDQorDQor
I2RlZmluZSBfTU1fR0VUX0VYQ0VQVElPTl9NQVNLKCkgKF9tbV9nZXRjc3IoKSAmIF9NTV9NQVNL
X01BU0spDQorI2RlZmluZSBfTU1fR0VUX0VYQ0VQVElPTl9TVEFURSgpIChfbW1fZ2V0Y3NyKCkg
JiBfTU1fRVhDRVBUX01BU0spDQorI2RlZmluZSBfTU1fR0VUX0ZMVVNIX1pFUk9fTU9ERSgpIChf
bW1fZ2V0Y3NyKCkgJiBfTU1fRkxVU0hfWkVST19NQVNLKQ0KKyNkZWZpbmUgX01NX0dFVF9ST1VO
RElOR19NT0RFKCkgKF9tbV9nZXRjc3IoKSAmIF9NTV9ST1VORF9NQVNLKQ0KKw0KKyNkZWZpbmUg
X01NX1NFVF9FWENFUFRJT05fTUFTSyh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9N
TV9NQVNLX01BU0spIHwgKHgpKSkNCisjZGVmaW5lIF9NTV9TRVRfRVhDRVBUSU9OX1NUQVRFKHgp
IChfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+X01NX0VYQ0VQVF9NQVNLKSB8ICh4KSkpDQor
I2RlZmluZSBfTU1fU0VUX0ZMVVNIX1pFUk9fTU9ERSh4KSAoX21tX3NldGNzcigoX21tX2dldGNz
cigpICYgfl9NTV9GTFVTSF9aRVJPX01BU0spIHwgKHgpKSkNCisjZGVmaW5lIF9NTV9TRVRfUk9V
TkRJTkdfTU9ERSh4KSAoX21tX3NldGNzcigoX21tX2dldGNzcigpICYgfl9NTV9ST1VORF9NQVNL
KSB8ICh4KSkpDQorDQorI2RlZmluZSBfTU1fVFJBTlNQT1NFNF9QUyhyb3cwLCByb3cxLCByb3cy
LCByb3czKSBcDQorZG8geyBcDQorICBfX20xMjggdG1wMywgdG1wMiwgdG1wMSwgdG1wMDsgXA0K
KyAgdG1wMCA9IF9tbV91bnBhY2tsb19wcygocm93MCksIChyb3cxKSk7IFwNCisgIHRtcDIgPSBf
bW1fdW5wYWNrbG9fcHMoKHJvdzIpLCAocm93MykpOyBcDQorICB0bXAxID0gX21tX3VucGFja2hp
X3BzKChyb3cwKSwgKHJvdzEpKTsgXA0KKyAgdG1wMyA9IF9tbV91bnBhY2toaV9wcygocm93Miks
IChyb3czKSk7IFwNCisgIChyb3cwKSA9IF9tbV9tb3ZlbGhfcHModG1wMCwgdG1wMik7IFwNCisg
IChyb3cxKSA9IF9tbV9tb3ZlaGxfcHModG1wMiwgdG1wMCk7IFwNCisgIChyb3cyKSA9IF9tbV9t
b3ZlbGhfcHModG1wMSwgdG1wMyk7IFwNCisgIChyb3czKSA9IF9tbV9tb3ZlaGxfcHModG1wMywg
dG1wMSk7IFwNCit9IHdoaWxlICgwKQ0KKw0KKy8qIEFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHku
ICovDQorI2RlZmluZSBfbV9wZXh0cncgX21tX2V4dHJhY3RfcGkxNg0KKyNkZWZpbmUgX21fcGlu
c3J3IF9tbV9pbnNlcnRfcGkxNg0KKyNkZWZpbmUgX21fcG1heHN3IF9tbV9tYXhfcGkxNg0KKyNk
ZWZpbmUgX21fcG1heHViIF9tbV9tYXhfcHU4DQorI2RlZmluZSBfbV9wbWluc3cgX21tX21pbl9w
aTE2DQorI2RlZmluZSBfbV9wbWludWIgX21tX21pbl9wdTgNCisjZGVmaW5lIF9tX3Btb3Ztc2ti
IF9tbV9tb3ZlbWFza19waTgNCisjZGVmaW5lIF9tX3BtdWxodXcgX21tX211bGhpX3B1MTYNCisj
ZGVmaW5lIF9tX3BzaHVmdyBfbW1fc2h1ZmZsZV9waTE2DQorI2RlZmluZSBfbV9tYXNrbW92cSBf
bW1fbWFza21vdmVfc2k2NA0KKyNkZWZpbmUgX21fcGF2Z2IgX21tX2F2Z19wdTgNCisjZGVmaW5l
IF9tX3Bhdmd3IF9tbV9hdmdfcHUxNg0KKyNkZWZpbmUgX21fcHNhZGJ3IF9tbV9zYWRfcHU4DQor
I2RlZmluZSBfbV8gX21tXw0KKyNkZWZpbmUgX21fIF9tbV8NCisNCisjdW5kZWYgX19ERUZBVUxU
X0ZOX0FUVFJTDQorI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCisNCisvKiBVZ2x5IGhh
Y2sgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IChjb21wYXRpYmxlIHdpdGggZ2NjKSAqLw0K
KyNpZmRlZiBfX0dOVUNfXw0KKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4NCisjZWxzZQ0KKyNpZiBk
ZWZpbmVkKF9fU1NFMl9fKSAmJiAhX19idWlsZGluZ19tb2R1bGUoX0J1aWx0aW5faW50cmluc2lj
cykNCisjaW5jbHVkZSA8ZW1taW50cmluLmg+DQorI2VuZGlmDQorI2VuZGlmDQorDQorI2VuZGlm
IC8qIF9fWE1NSU5UUklOX0ggKi8NCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 11:55:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 11:55:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hY82C-0005fs-BT; Tue, 04 Jun 2019 11:55:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hY82B-0005fK-AG
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 11:55:19 +0000
X-Inumbo-ID: 9e910262-86bf-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9e910262-86bf-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 11:55:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 81287F206D;
 Tue,  4 Jun 2019 13:55:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id q1DMn69zRPIU; Tue,  4 Jun 2019 13:55:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5A2F9F206A;
 Tue,  4 Jun 2019 13:55:10 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 13:55:09 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBINTEL-INTRINSICS PATCH v2 1/1] Initial port of
 Intel Intrinsics on Unikraft
Thread-Index: AQHVGsnEnWW4ILfKD0CYSHkK9WWl6KaLYyOA
Date: Tue, 4 Jun 2019 11:55:09 +0000
Message-ID: <490DB266-7C9F-4826-9221-5BDE35880B73@neclab.eu>
References: <20190604113623.5275-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190604113623.5275-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <6CECF20418154D4889E37C06592FD240@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBINTEL-INTRINSICS PATCH v2 1/1]
 Initial port of Intel Intrinsics 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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KVGhpcyB3b3JrcyBub3csIHRoYW5rcyENCg0KLS0gRmVsaXBlDQoNClJldmll
d2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQoNCu+7v09uIDA0
LjA2LjE5LCAxMzozNiwgIlZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSIgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOg0KDQogICAgVGhpcyBpcyBvdXIgaW5pdGlh
bCBwb3J0IG9mIGludGVsIGludHJpbnNpY3MgdG8gVW5pa3JhZnQgYXMgYW4gZXh0ZXJuYWwgbGli
cmFyeS4NCiAgICBUaGlzIHJlbGVhc2UgaXMgYmFzZWQgb24gdGhlIExMVk0gaGVhZGVycyB3aGlj
aCB3ZXJlIGFkYXB0ZWQgdG8gd29yayBvbiBVbmlrcmFmdA0KICAgIHdpdGggR0NDLg0KICAgIA0K
ICAgIFRoZSBsaWJyYXJ5IG5vdyB3b3JrcyB3aXRoIEdDQyA2Ky4NCiAgICANCiAgICBTaWduZWQt
b2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+DQogICAgLS0tDQogICAgIENPRElOR19TVFlMRS5tZCAgICAgICAgfCAgICA0ICsNCiAg
ICAgQ09OVFJJQlVUSU5HLm1kICAgICAgICB8ICAgIDQgKw0KICAgICBDb25maWcudWsgICAgICAg
ICAgICAgIHwgICAyNSArDQogICAgIE1BSU5UQUlORVJTLm1kICAgICAgICAgfCAgIDExICsNCiAg
ICAgTWFrZWZpbGUudWsgICAgICAgICAgICB8ICAgNjkgKw0KICAgICBSRUFETUUubWQgICAgICAg
ICAgICAgIHwgICAgNSArDQogICAgIGV4cG9ydHN5bXMudWsgICAgICAgICAgfCAgICAxICsNCiAg
ICAgaW5jbHVkZS9hdnhpbnRyaW4uaCAgICB8IDUxMzMgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKw0KICAgICBpbmNsdWRlL2VtbWludHJpbi5oICAgIHwgNTAzMyArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgaW5jbHVkZS9pbW1pbnRy
aW4uaCAgICB8ICAgNzUgKw0KICAgICBpbmNsdWRlL21tX21hbGxvYy5oICAgIHwgICA3NSArDQog
ICAgIGluY2x1ZGUvbW1pbnRyaW4uaCAgICAgfCAxNTk4ICsrKysrKysrKysrKysNCiAgICAgaW5j
bHVkZS9ubW1pbnRyaW4uaCAgICB8ICAgMzAgKw0KICAgICBpbmNsdWRlL3BtbWludHJpbi5oICAg
IHwgIDMyMSArKysNCiAgICAgaW5jbHVkZS9wb3BjbnRpbnRyaW4uaCB8ICAxMDIgKw0KICAgICBp
bmNsdWRlL3NtbWludHJpbi5oICAgIHwgMjUwNCArKysrKysrKysrKysrKysrKysrKw0KICAgICBp
bmNsdWRlL3RtbWludHJpbi5oICAgIHwgIDc5MCArKysrKysrDQogICAgIGluY2x1ZGUveG1taW50
cmluLmggICAgfCAzMTAxICsrKysrKysrKysrKysrKysrKysrKysrKw0KICAgICAxOCBmaWxlcyBj
aGFuZ2VkLCAxODg4MSBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJ
TkdfU1RZTEUubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZA0KICAg
ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBN
QUlOVEFJTkVSUy5tZA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsNCiAgICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5tZA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgZXhw
b3J0c3ltcy51aw0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hdnhpbnRyaW4uaA0K
ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9lbW1pbnRyaW4uaA0KICAgICBjcmVhdGUg
bW9kZSAxMDA2NDQgaW5jbHVkZS9pbW1pbnRyaW4uaA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQg
aW5jbHVkZS9tbV9tYWxsb2MuaA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9tbWlu
dHJpbi5oDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL25tbWludHJpbi5oDQogICAg
IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3BtbWludHJpbi5oDQogICAgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL3BvcGNudGludHJpbi5oDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBp
bmNsdWRlL3NtbWludHJpbi5oDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3RtbWlu
dHJpbi5oDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3htbWludHJpbi5oDQogICAg
DQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 12:17:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 12:17: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 1hY8O2-0007h2-0o; Tue, 04 Jun 2019 12:17: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=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY8O0-0007gw-UX
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 12:17:52 +0000
X-Inumbo-ID: c415d09e-86c2-11e9-9a7f-ebe52e402618
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c415d09e-86c2-11e9-9a7f-ebe52e402618;
 Tue, 04 Jun 2019 12:17:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 09AA01052CE;
 Tue,  4 Jun 2019 14:17:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id cXPVRB83Ne4P; Tue,  4 Jun 2019 14:17:47 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D8DEC10524F;
 Tue,  4 Jun 2019 14:17:47 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 14:17:47
 +0200
To: Mihai Pogonaru <pogonarumihai@gmail.com>, <minios-devel@lists.xen.org>
References: <20190603194546.11060-1-pogonarumihai@gmail.com>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <9310774b-35dc-140d-ca3d-d10b3f18476b@neclab.eu>
Date: Tue, 4 Jun 2019 14:17:47 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603194546.11060-1-pogonarumihai@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP] Fix select and poll wrappers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgTWloYWksCgp0aGFua3MgZm9yIHRoZSBwYXRjaCEKClJldmlld2VkLWJ5OiBGbG9yaWFuIFNj
aG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+CgpPbiA2LzMvMTkgOTo0NSBQTSwgTWlo
YWkgUG9nb25hcnUgd3JvdGU6Cj4gU2VsZWN0L3BvbGwgc2hvdWxkIHJldHVybiB0aGUgbHdpcF9z
ZWxlY3QvcG9sbCByZXN1bHQgYW5kIHJlbGVhc2UgdGhlIHZmc2NvcmVfZmlsZSBhZnRlciBlYWNo
IGFjY2Vzcwo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFp
QGdtYWlsLmNvbT4KPiAtLS0KPiAgIHNvY2tldHMuYyB8IDIzICsrKysrKysrKysrKysrKysrLS0t
LS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK
PiAKPiBkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggOWFkNWNmYi4u
NzcyMzVlOSAxMDA2NDQKPiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAt
MzM1LDcgKzMzNSw3IEBAIEVYSVQ6Cj4gICAKPiAgIGludCBwb2xsKHN0cnVjdCBwb2xsZmQgZmRz
W10sIG5mZHNfdCBuZmRzLCBpbnQgdGltZW91dCkKPiAgIHsKPiAtCXVuc2lnbmVkIGludCBpOwo+
ICsJdW5zaWduZWQgaW50IGksIHJldDsKPiAgIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZTsK
PiAgIAlzdHJ1Y3QgcG9sbGZkIGx3aXBfZmRzW25mZHNdOwo+ICAgCj4gQEAgLTM0NywxNiArMzQ3
LDIwIEBAIGludCBwb2xsKHN0cnVjdCBwb2xsZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBpbnQgdGlt
ZW91dCkKPiAgIAkJCWlmIChQVFJJU0VSUihmaWxlKSkgewo+ICAgCQkJCUxXSVBfREVCVUdGKFNP
Q0tFVFNfREVCVUcsCj4gICAJCQkJCSAgICAoImZhaWxlZCB0byBpZGVudGlmeSBzb2NrZXQgZGVz
Y3JpcHRvclxuIikpOwo+ICsJCQkJcmV0ID0gLTE7Cj4gICAJCQkJLyogU2V0dGluZyB0aGUgZXJy
bm8gKi8KPiAgIAkJCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4gLQkJCQly
ZXR1cm4gLTE7Cj4gKwkJCQlnb3RvIEVYSVQ7Cj4gICAJCQl9Cj4gICAJCQlsd2lwX2Zkc1tpXS5m
ZCA9IGZpbGUtPnNvY2tfZmQ7Cj4gICAJCQlsd2lwX2Zkc1tpXS5ldmVudHMgPSBmZHNbaV0uZXZl
bnRzOwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCj4gICAJCX0KPiAgIAl9Cj4gICAKPiAtCWx3aXBfcG9sbChsd2lwX2Zk
cywgbmZkcywgdGltZW91dCk7Cj4gKwlyZXQgPSBsd2lwX3BvbGwobHdpcF9mZHMsIG5mZHMsIHRp
bWVvdXQpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBFWElUOwo+ICAgCj4gICAJZm9yIChp
ID0gMDsgaSA8IG5mZHM7IGkrKykgewo+ICAgCQlpZiAoZmRzW2ldLmZkIDwgMCkKPiBAQCAtMzY0
LDcgKzM2OCw5IEBAIGludCBwb2xsKHN0cnVjdCBwb2xsZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBp
bnQgdGltZW91dCkKPiAgIAkJZWxzZQo+ICAgCQkJZmRzW2ldLnJldmVudHMgPSBsd2lwX2Zkc1tp
XS5yZXZlbnRzOwo+ICAgCX0KPiAtCXJldHVybiAwOwo+ICsKPiArRVhJVDoKPiArCXJldHVybiBy
ZXQ7Cj4gICB9Cj4gICAKPiAgIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywg
ZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCj4gQEAgLTQwMCw2ICs0MDYsNyBA
QCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMs
IGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAgCQkJCWdvdG8gRVhJVDsKPiAgIAkJCX0KPiAgIAkJCUZE
X1NFVChmaWxlLT5zb2NrX2ZkLCAmcmQpOwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gICAJCX0KPiAgIAkJaWYgKHdy
aXRlZmRzICYmIEZEX0lTU0VUKGksIHdyaXRlZmRzKSkgewo+ICAgCQkJbWF4ZmQgPSBpOwo+IEBA
IC00MTMsNiArNDIwLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBm
ZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgIAkJCQlnb3RvIEVYSVQ7Cj4g
ICAJCQl9Cj4gICAJCQlGRF9TRVQoZmlsZS0+c29ja19mZCwgJndyKTsKPiArCQkJdmZzY29yZV9w
dXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICAg
CQl9Cj4gICAJCWlmIChleGNlcHRmZHMgJiYgRkRfSVNTRVQoaSwgZXhjZXB0ZmRzKSkgewo+ICAg
CQkJbWF4ZmQgPSBpOwo+IEBAIC00MjYsMTIgKzQzNCwxMyBAQCBpbnQgc2VsZWN0KGludCBuZmRz
LCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+
ICAgCQkJCWdvdG8gRVhJVDsKPiAgIAkJCX0KPiAgIAkJCUZEX1NFVChmaWxlLT5zb2NrX2ZkLCAm
eGMpOwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCj4gICAJCX0KPiAgIAl9Cj4gICAKPiAgIAlyZXQgPSBsd2lwX3NlbGVj
dChtYXhmZCsxLCAmcmQsICZ3ciwgJnhjLCB0aW1lb3V0KTsKPiAgIAlpZiAocmV0IDwgMCkKPiAt
CQlyZXR1cm4gcmV0Owo+ICsJCWdvdG8gRVhJVDsKPiAgIAo+ICAgCS8qIHRyYW5zbGF0ZSBiYWNr
IGZyb20gbHdJUCBzb2NrZXQgZmRzIHRvIHB1YmxpYyAodmZzY29yZSkgZmRzLgo+ICAgCSAqIEJ1
dCB0aGVyZSdzIG5vIHdheSB0byBnbyBmcm9tIGx3SVAgdG8gdmZzY29yZSwgc28gaXRlcmF0ZSBv
dmVyCj4gQEAgLTQ0Niw2ICs0NTUsNyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJl
YWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAgCQkJZmlsZSA9
IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwo+ICAgCQkJaWYgKCFGRF9JU1NFVChmaWxlLT5zb2NrX2Zk
LCAmcmQpKQo+ICAgCQkJCUZEX0NMUihpLCByZWFkZmRzKTsKPiArCQkJdmZzY29yZV9wdXRfZmls
ZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICAgCQl9Cj4g
ICAJCWlmICh3cml0ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsKPiAgIAkJCS8qIFRo
aXMgbG9va3VwIGNhbid0IGZhaWwsIG9yIGl0IHdvdWxkIGFscmVhZHkgaGF2ZQo+IEBAIC00NTQs
NiArNDY0LDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQg
KndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgIAkJCWZpbGUgPSBzb2NrX25ldF9maWxl
X2dldChpKTsKPiAgIAkJCWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJndyKSkKPiAgIAkJ
CQlGRF9DTFIoaSwgd3JpdGVmZHMpOwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNj
b3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gICAJCX0KPiAgIAkJaWYgKGV4Y2Vw
dGZkcyAmJiBGRF9JU1NFVChpLCBleGNlcHRmZHMpKSB7Cj4gICAJCQkvKiBUaGlzIGxvb2t1cCBj
YW4ndCBmYWlsLCBvciBpdCB3b3VsZCBhbHJlYWR5IGhhdmUKPiBAQCAtNDYyLDkgKzQ3Myw5IEBA
IGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywg
ZmRfc2V0ICpleGNlcHRmZHMsCj4gICAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7Cj4g
ICAJCQlpZiAoIUZEX0lTU0VUKGZpbGUtPnNvY2tfZmQsICZ4YykpCj4gICAJCQkJRkRfQ0xSKGks
IGV4Y2VwdGZkcyk7Cj4gKwkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7
IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgIAkJfQo+ICAgCX0KPiAtCXJldHVybiAwOwo+ICAg
Cj4gICBFWElUOgo+ICAgCXJldHVybiByZXQ7Cj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArj
g5Xjg63jg7zjg6rjgqLjg7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApT
eXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3Bl
Ckt1cmbDvHJzdGVuLUFubGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAo
MCk2MjIxIDQzNDItMjY1CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZs
b3JpYW4uc2NobWlkdEBuZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFu
bmhlaW0sIEdlcm1hbnksIEhSQjcyODU1OAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 13:48:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 13:48: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 1hY9nF-00017X-Ca; Tue, 04 Jun 2019 13:48:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hY9nE-00017P-6t
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 13:48:00 +0000
X-Inumbo-ID: 5acc2bee-86cf-11e9-897a-e7a24ee417c5
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5acc2bee-86cf-11e9-897a-e7a24ee417c5;
 Tue, 04 Jun 2019 13:47:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A400C1052D3;
 Tue,  4 Jun 2019 15:47:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id NLE22ar0Ygbe; Tue,  4 Jun 2019 15:47:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7DAA71052D0;
 Tue,  4 Jun 2019 15:47:54 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 15:47:54
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190603151640.22507-1-costin.lupu@cs.pub.ro>
 <20190603151640.22507-8-costin.lupu@cs.pub.ro>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <bdf82134-b38d-b08b-9039-4bb50e089d04@neclab.eu>
Date: Tue, 4 Jun 2019 15:47:53 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190603151640.22507-8-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH v2 7/8] Add
 missing pthread functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLAoKbG9va3MgZ29vZCwgdGhhbmtzLgoKUmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2No
bWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KCk9uIDYvMy8xOSA1OjE2IFBNLCBDb3N0
aW4gTHVwdSB3cm90ZToKPiBUaGlzIHBhdGNoIGFkZHMgc29tZSBtaXNzaW5nIGZ1bmN0aW9ucyBm
b3IgdXBkYXRpbmcgdGhyZWFkcyBhdHRyaWJ1dGVzLAo+IHN1Y2ggYXMgdGhlIHRocmVhZCBuYW1l
IG9yIHRoZSBzdGFjayBhZGRyZXNzIGFuZCBzaXplLiBDdXJyZW50bHkgd2UKPiBzdXBwb3J0IG9u
bHkgdGhlIGZpeGVkIHN0YWNrIHNpemUgb2YgNjRLQi4KPiAKPiBUaGVzZSBuZXcgZnVuY3Rpb25z
IGFyZSB1c2VkIGJ5IHRoZSBSdWJ5IGludGVycHJldGVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENv
c3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gLS0tCj4gICBNYWtlZmlsZS51ayAg
ICAgICB8ICAgMSArCj4gICBhdHRyaWJ1dGVzLmMgICAgICB8IDE1NCArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGluY2x1ZGUvcHRocmVh
ZC5oIHwgIDUxICsrKysrKysrKysrKysrKysrKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5z
ZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGF0dHJpYnV0ZXMuYwo+ICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGluY2x1ZGUvcHRocmVhZC5oCj4gCj4gZGlmZiAtLWdpdCBhL01ha2VmaWxl
LnVrIGIvTWFrZWZpbGUudWsKPiBpbmRleCAxMmM2OGIyLi5mZTk5NzYwIDEwMDY0NAo+IC0tLSBh
L01ha2VmaWxlLnVrCj4gKysrIGIvTWFrZWZpbGUudWsKPiBAQCAtNjUsNiArNjUsNyBAQCBMSUJQ
VEhSRUFELUVNQkVEREVEX0VYUE9SVFMgPSAkKExJQlBUSFJFQUQtRU1CRURERURfQkFTRSkvZXhw
b3J0c3ltcy51awo+ICAgIyBPUyBkZXBlbmRlbmNpZXMgY29kZSAtIEdsdWUgYmV0d2VlbiBVbmlr
cmFmdCBhbmQgcHRocmVhZC1lbWJlZGRlZAo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAg
IExJQlBUSFJFQUQtRU1CRURERURfU1JDUy15ICs9ICQoTElCUFRIUkVBRC1FTUJFRERFRF9CQVNF
KS9wdGVfb3NhbC5jfGdsdWUKPiArTElCUFRIUkVBRC1FTUJFRERFRF9TUkNTLXkgKz0gJChMSUJQ
VEhSRUFELUVNQkVEREVEX0JBU0UpL2F0dHJpYnV0ZXMuY3xnbHVlCj4gICAKPiAgICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCj4gICAjIHB0aHJlYWQtZW1iZWRkZWQgY29kZQo+IGRpZmYgLS1naXQg
YS9hdHRyaWJ1dGVzLmMgYi9hdHRyaWJ1dGVzLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu
ZGV4IDAwMDAwMDAuLjc3MjkwOTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXR0cmlidXRlcy5j
Cj4gQEAgLTAsMCArMSwxNTQgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwt
Mi4wLW9yLWxhdGVyICovCj4gKy8qCj4gKyAqICAgICAgVW5pa3JhZnQgcG9ydCBvZiBQT1NJWCBU
aHJlYWRzIExpYnJhcnkgZm9yIGVtYmVkZGVkIHN5c3RlbXMKPiArICogICAgICBDb3B5cmlnaHQo
QykgMjAxOSBDb3N0aW4gTHVwdSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QK
PiArICoKPiArICogICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gKyAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiAgICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiAg
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KPiArICoKPiArICogICAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogICAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsg
KiAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCj4gKyAqICAgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqICAgICAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsKPiAr
ICogICAgICBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sCj4gKyAqICAgICAgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQQo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArI2luY2x1
ZGUgPHN0ZGlvLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+
Cj4gKyNpZmRlZiBfR05VX1NPVVJDRQo+ICsjaW5jbHVkZSA8dWsvYXJjaC9saW1pdHMuaD4KPiAr
I2VuZGlmCj4gKyNpbmNsdWRlIDxwdGhyZWFkLmg+Cj4gKyNpbmNsdWRlIDxpbXBsZW1lbnQuaD4K
PiArCj4gKwo+ICsvKiBUT0RPIFdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBndWFyZHMgKi8K
PiAraW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUocHRocmVhZF9hdHRyX3QgKmF0dHIsIHNp
emVfdCBndWFyZHNpemUpCj4gK3sKPiArCWlmIChndWFyZHNpemUgIT0gMCkKPiArCQlyZXR1cm4g
RUlOVkFMOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgcHRocmVhZF9hdHRyX2dl
dGd1YXJkc2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqYXR0ciwgc2l6ZV90ICpndWFyZHNpemUp
Cj4gK3sKPiArCWlmICghZ3VhcmRzaXplKQo+ICsJCXJldHVybiBFSU5WQUw7Cj4gKwo+ICsJKmd1
YXJkc2l6ZSA9IDA7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBwdGhyZWFkX2F0
dHJfc2V0c3RhY2socHRocmVhZF9hdHRyX3QgKmF0dHIsCj4gKwkJdm9pZCAqc3RhY2thZGRyLCBz
aXplX3Qgc3RhY2tzaXplKQo+ICt7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJcmMgPSBwdGhyZWFkX2F0
dHJfc2V0c3RhY2tzaXplKGF0dHIsIHN0YWNrc2l6ZSk7Cj4gKwlpZiAocmMpCj4gKwkJZ290byBv
dXQ7Cj4gKwo+ICsJcmMgPSBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyKGF0dHIsIHN0YWNrYWRk
cik7Cj4gKwo+ICtvdXQ6Cj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gK2ludCBwdGhyZWFkX2F0
dHJfZ2V0c3RhY2soY29uc3QgcHRocmVhZF9hdHRyX3QgKmF0dHIsCj4gKwkJdm9pZCAqKnN0YWNr
YWRkciwgc2l6ZV90ICpzdGFja3NpemUpCj4gK3sKPiArCWludCByYzsKPiArCj4gKwlyYyA9IHB0
aHJlYWRfYXR0cl9nZXRzdGFja3NpemUoYXR0ciwgc3RhY2tzaXplKTsKPiArCWlmIChyYykKPiAr
CQlnb3RvIG91dDsKPiArCj4gKwlyYyA9IHB0aHJlYWRfYXR0cl9nZXRzdGFja2FkZHIoYXR0ciwg
c3RhY2thZGRyKTsKPiArCj4gK291dDoKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiArI2lmZGVm
IF9HTlVfU09VUkNFCj4gK2ludCBwdGhyZWFkX2dldGF0dHJfbnAocHRocmVhZF90IHRocmVhZCwg
cHRocmVhZF9hdHRyX3QgKmF0dHIpCj4gK3sKPiArCXB0ZV90aHJlYWRfdCAqdHAgPSAocHRlX3Ro
cmVhZF90ICopIHRocmVhZC5wOwo+ICsJc3RydWN0IHVrX3RocmVhZCAqX3VrX3RocmVhZDsKPiAr
CXB0aHJlYWRfYXR0cl90IF9hdHRyOwo+ICsJcHJpb190IHByaW87Cj4gKwlpbnQgcmM7Cj4gKwo+
ICsJaWYgKHRwID09IE5VTEwgfHwgdHAtPnRocmVhZElkID09IE5VTEwpCj4gKwkJcmV0dXJuIEVO
T0VOVDsKPiArCj4gKwlpZiAoYXR0ciA9PSBOVUxMIHx8ICphdHRyID09IE5VTEwpCj4gKwkJcmV0
dXJuIEVJTlZBTDsKPiArCj4gKwlfdWtfdGhyZWFkID0gdHAtPnRocmVhZElkOwo+ICsJX2F0dHIg
PSAqYXR0cjsKPiArCV9hdHRyLT5zdGFja2FkZHIgPSBfdWtfdGhyZWFkLT5zdGFjazsKPiArCV9h
dHRyLT5zdGFja3NpemUgPSBfX1NUQUNLX1NJWkU7Cj4gKwo+ICsJX2F0dHItPmRldGFjaHN0YXRl
ID0gKF91a190aHJlYWQtPmRldGFjaGVkCj4gKwkJPyBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRCA6
IFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKTsKPiArCj4gKwlyYyA9IHVrX3RocmVhZF9nZXRfcHJp
byhfdWtfdGhyZWFkLCAmcHJpbyk7Cj4gKwlpZiAocmMgPT0gMCkKPiArCQlfYXR0ci0+cGFyYW0u
c2NoZWRfcHJpb3JpdHkgPSBwcmlvOwo+ICsKPiArCS8qIFRPRE8gaW5oZXJpdHNjaGVkIGFuZCBj
b250ZW50aW9uc2NvcGUgKi8KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IHB0aHJl
YWRfc2V0bmFtZV9ucChwdGhyZWFkX3QgdGhyZWFkLCBjb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4g
KwlwdGVfdGhyZWFkX3QgKnRwID0gKHB0ZV90aHJlYWRfdCAqKSB0aHJlYWQucDsKPiArCXN0cnVj
dCB1a190aHJlYWQgKl91a190aHJlYWQ7Cj4gKwlzaXplX3QgbGVuOwo+ICsKPiArCWlmICh0cCA9
PSBOVUxMIHx8IHRwLT50aHJlYWRJZCA9PSBOVUxMKQo+ICsJCXJldHVybiBFTk9FTlQ7Cj4gKwo+
ICsJX3VrX3RocmVhZCA9IHRwLT50aHJlYWRJZDsKPiArCj4gKwlsZW4gPSBzdHJubGVuKG5hbWUs
IDE2KTsKPiArCWlmIChsZW4gPiAxNSkKPiArCQlyZXR1cm4gRVJBTkdFOwo+ICsKPiArCV91a190
aHJlYWQtPm5hbWUgPSBuYW1lOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgcHRo
cmVhZF9nZXRuYW1lX25wKHB0aHJlYWRfdCB0aHJlYWQsIGNoYXIgKm5hbWUsIHNpemVfdCBsZW4p
Cj4gK3sKPiArCXB0ZV90aHJlYWRfdCAqdHAgPSAocHRlX3RocmVhZF90ICopIHRocmVhZC5wOwo+
ICsJc3RydWN0IHVrX3RocmVhZCAqX3VrX3RocmVhZDsKPiArCXNpemVfdCBfbGVuOwo+ICsKPiAr
CWlmICh0cCA9PSBOVUxMIHx8IHRwLT50aHJlYWRJZCA9PSBOVUxMKQo+ICsJCXJldHVybiBFTk9F
TlQ7Cj4gKwo+ICsJX3VrX3RocmVhZCA9IHRwLT50aHJlYWRJZDsKPiArCj4gKwlfbGVuID0gc3Ry
bGVuKF91a190aHJlYWQtPm5hbWUpOwo+ICsJaWYgKGxlbiA8IF9sZW4gKyAxKQo+ICsJCXJldHVy
biBFUkFOR0U7Cj4gKwo+ICsJc3ByaW50ZihuYW1lLCBfdWtfdGhyZWFkLT5uYW1lKTsKPiArCj4g
KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArI2VuZGlmIC8qIF9HTlVfU09VUkNFICovCj4gZGlmZiAt
LWdpdCBhL2luY2x1ZGUvcHRocmVhZC5oIGIvaW5jbHVkZS9wdGhyZWFkLmgKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjhjZDFhZGUKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvaW5jbHVkZS9wdGhyZWFkLmgKPiBAQCAtMCwwICsxLDUxIEBACj4gKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBMR1BMLTIuMC1vci1sYXRlciAqLwo+ICsvKgo+ICsgKiAgICAgIFVuaWty
YWZ0IHBvcnQgb2YgUE9TSVggVGhyZWFkcyBMaWJyYXJ5IGZvciBlbWJlZGRlZCBzeXN0ZW1zCj4g
KyAqICAgICAgQ29weXJpZ2h0KEMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVj
aGFyZXN0Cj4gKyAqCj4gKyAqICAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiAgICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogICAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
PiArICogICAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqICAgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqICAgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKPiArICogICAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiAgICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqICAgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiAg
ICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlIGZpbGUgQ09QWUlORy5M
SUI7Cj4gKyAqICAgICAgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLAo+ICsgKiAgICAgIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EKPiArICovCj4gKwo+ICsjaWZuZGVmIF9fR0xVRV9QVEhSRUFE
X0hfXwo+ICsjZGVmaW5lIF9fR0xVRV9QVEhSRUFEX0hfXwo+ICsKPiArI2luY2x1ZGVfbmV4dCA8
cHRocmVhZC5oPgo+ICsKPiArLyogQyBmdW5jdGlvbnMgbm90IGltcGxlbWVudGVkIGluIHB0aHJl
YWQtZW1iZWRkZWQgKi8KPiArI2lmZGVmIF9fY3BsdXNwbHVzCj4gK2V4dGVybiAiQyIgewo+ICsj
ZW5kaWYKPiArCj4gK2ludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplKHB0aHJlYWRfYXR0cl90
ICphdHRyLCBzaXplX3QgZ3VhcmRzaXplKTsKPiAraW50IHB0aHJlYWRfYXR0cl9nZXRndWFyZHNp
emUoY29uc3QgcHRocmVhZF9hdHRyX3QgKmF0dHIsIHNpemVfdCAqZ3VhcmRzaXplKTsKPiArCj4g
K2ludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2socHRocmVhZF9hdHRyX3QgKmF0dHIsCj4gKwkJdm9p
ZCAqc3RhY2thZGRyLCBzaXplX3Qgc3RhY2tzaXplKTsKPiAraW50IHB0aHJlYWRfYXR0cl9nZXRz
dGFjayhjb25zdCBwdGhyZWFkX2F0dHJfdCAqYXR0ciwKPiArCQl2b2lkICoqc3RhY2thZGRyLCBz
aXplX3QgKnN0YWNrc2l6ZSk7Cj4gKwo+ICsjaWZkZWYgX0dOVV9TT1VSQ0UKPiAraW50IHB0aHJl
YWRfZ2V0YXR0cl9ucChwdGhyZWFkX3QgdGhyZWFkLCBwdGhyZWFkX2F0dHJfdCAqYXR0cik7Cj4g
Kwo+ICtpbnQgcHRocmVhZF9zZXRuYW1lX25wKHB0aHJlYWRfdCB0aHJlYWQsIGNvbnN0IGNoYXIg
Km5hbWUpOwo+ICtpbnQgcHRocmVhZF9nZXRuYW1lX25wKHB0aHJlYWRfdCB0aHJlYWQsIGNoYXIg
Km5hbWUsIHNpemVfdCBsZW4pOwo+ICsjZW5kaWYgLyogX0dOVV9TT1VSQ0UgKi8KPiArCj4gKyNp
ZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9fR0xVRV9Q
VEhSRUFEX0hfXyAqLwo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki
44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFj
aGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1B
bmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2
NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRA
bmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55
LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:01:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:01: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 1hYA0S-0003Kj-Ry; Tue, 04 Jun 2019 14:01:40 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYA0R-0003Ke-RW
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:01:39 +0000
X-Inumbo-ID: 4462ed1e-86d1-11e9-8763-2b75ada6f3a6
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4462ed1e-86d1-11e9-8763-2b75ada6f3a6;
 Tue, 04 Jun 2019 14:01:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 443EBF2072;
 Tue,  4 Jun 2019 16:01:36 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bzAuqUnV78Q2; Tue,  4 Jun 2019 16:01:36 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1975EF2034
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:01:34 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:01:33 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 01/11] Initial public release: basic
 unikraft files
Thread-Index: AQHVGQdwgtfnuGxpo0eYv9bd65GiTqaLifcA
Date: Tue, 4 Jun 2019 14:01:32 +0000
Message-ID: <7FC78D12-83A8-4F79-86E5-C930F5EC9B3C@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-2-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-2-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <15CE0D68BDD82549B5EA7CE3E2C9ED74@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KVGhhbmtzIGZvciB0aGUgc2VyaWVzISBSZWdhcmRpbmcgdGhpcyBwYXRj
aDoNCg0KKiBUaGUgbGljZW5zZSBoZWFkZXJzIGFyZSBtaXNzaW5nDQoqIFRoZSAubWQgZmlsZXMg
YXJlIG1pc3NpbmcNCiogV2hlbiBjb25maWd1cmluZyBsd2lwLCBJIG5vdGljZWQgdGhhdCBpZiB0
aGUgb3B0aW9uICJBdXRvbWF0aWNhbGx5IGF0dGFjaCBuZXRpZnMiIGlzIHNlbGVjdGVkLCB0aGUg
cm91dGVyIGZhaWxzIHRvIGluaXRpYWxpemUgKCJGYWlsZWQgdG8gY29uZmlndXJlIGRldmljZSIs
IGZyb20gY2xpY2suY2MpLiBDb3VsZCB5b3UgcGxlYXNlIHVuc2VsZWN0IHRoaXMgYnkgYWRkaW5n
IGFuIG9wdGlvbiBpbiBDb25maWcudWs/DQoNClRoYW5rcywNCg0KLS0gRmVsaXBlDQoNCu+7v09u
IDAyLjA2LjE5LCAwNzo1MywgIkZsb3JpYW4gU2NobWlkdCIgPEZsb3JpYW4uU2NobWlkdEBuZWNs
YWIuZXU+IHdyb3RlOg0KDQogICAgQWRkIE1ha2VmaWxlLCBNYWtlZmlsZS51aywgQ29uZmlnLnVr
LCAuZ2l0aWdub3JlDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxp
cGUuaHVpY2lAbmVjbGFiLmV1Pg0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8
Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4NCiAgICAtLS0NCiAgICAgLmdpdGlnbm9yZSAgfCAg
IDQgKysNCiAgICAgQ29uZmlnLnVrICAgfCAgODUgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKw0KICAgICBNYWtlZmlsZSAgICB8ICAgOSArKysrDQogICAgIE1ha2VmaWxlLnVrIHwgMTQz
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAg
ICAgNCBmaWxlcyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygrKQ0KICAgICBjcmVhdGUgbW9kZSAx
MDA2NDQgLmdpdGlnbm9yZQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrDQogICAg
IGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgTWFr
ZWZpbGUudWsNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUN
CiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmE5ZmI3MWINCiAg
ICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvLmdpdGlnbm9yZQ0KICAgIEBAIC0wLDAgKzEsNCBA
QA0KICAgICsuY29uZmlnDQogICAgKy5jb25maWcub2xkDQogICAgKy4uY29uZmlnLnRtcA0KICAg
ICtidWlsZC8NCiAgICBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrDQogICAgbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi4yMGQ5MTMxDQogICAgLS0tIC9k
ZXYvbnVsbA0KICAgICsrKyBiL0NvbmZpZy51aw0KICAgIEBAIC0wLDAgKzEsODUgQEANCiAgICAr
IyMjIEludmlzaWJsZSBvcHRpb24gZm9yIGRlcGVuZGVuY2llcw0KICAgICtjb25maWcgQVBQX0RF
UEVOREVOQ0lFUw0KICAgICsJYm9vbA0KICAgICsJZGVmYXVsdCB5DQogICAgKw0KICAgICttZW51
Y29uZmlnIExJQkNMSUNLDQogICAgKwlib29sICJUaGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIiDQog
ICAgKwkjIGRlcGVuZHMgb24gKEhBVkVfTElCQykgICMgJiYgSEFWRV9OV19TVEFDSyAmJiAuLi4N
CiAgICArCWRlZmF1bHQgeQ0KICAgICsNCiAgICAraWYgTElCQ0xJQ0sNCiAgICArDQogICAgK2Nv
bmZpZyBMSUJDTElDS19NQUlODQogICAgKwlib29sICJFbmFibGUgQ2xpY2sgbWFpbiBmdW5jdGlv
biINCiAgICArCWRlZmF1bHQgbg0KICAgICsJaGVscA0KICAgICsJICBEZWZpbmUgbWFpbiBmdW5j
dGlvbiBpbnN0ZWFkIG9mIGNsaWNrX21haW4gZnVuY3Rpb24NCiAgICArDQogICAgK2NvbmZpZyBM
SUJDTElDS19FTEVNU19BUU0NCiAgICArCWJvb2wgIkVuYWJsZSBBUU0gZWxlbWVudHMiDQogICAg
KwlkZWZhdWx0IHkNCiAgICArCWhlbHANCiAgICArCSAgQnVpbGQgd2l0aCBJUCBlbGVtZW50cw0K
ICAgICsNCiAgICArY29uZmlnIExJQkNMSUNLX0VMRU1TX0VUSEVSTkVUDQogICAgKwlib29sICJF
bmFibGUgRXRoZXJuZXQgZWxlbWVudHMiDQogICAgKwlkZWZhdWx0IHkNCiAgICArCWhlbHANCiAg
ICArCSAgQnVpbGQgd2l0aCBFdGhlcm5ldCBlbGVtZW50cw0KICAgICsNCiAgICArY29uZmlnIExJ
QkNMSUNLX0VMRU1TX0VUSEVSU1dJVENIDQogICAgKwlib29sICJFbmFibGUgRXRoZXJuZXQgc3dp
dGNoIGVsZW1lbnRzIg0KICAgICsJZGVmYXVsdCB5DQogICAgKwloZWxwDQogICAgKwkgIEJ1aWxk
IHdpdGggRXRoZXJuZXQgc3dpdGNoIGVsZW1lbnRzDQogICAgKw0KICAgICtjb25maWcgTElCQ0xJ
Q0tfRUxFTVNfSUNNUA0KICAgICsJYm9vbCAiRW5hYmxlIElDTVAgZWxlbWVudHMiDQogICAgKwlk
ZWZhdWx0IHkNCiAgICArCWhlbHANCiAgICArCSAgQnVpbGQgd2l0aCBJQ01QIGVsZW1lbnRzDQog
ICAgKw0KICAgICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfSVANCiAgICArCWJvb2wgIkVuYWJsZSBJ
UCBlbGVtZW50cyINCiAgICArCWRlZmF1bHQgeQ0KICAgICsJaGVscA0KICAgICsJICBCdWlsZCB3
aXRoIGFkYXB0aXZlIHF1ZXVlIG1hbmFnZW1lbnQgZWxlbWVudHMNCiAgICArDQogICAgK2NvbmZp
ZyBMSUJDTElDS19FTEVNU19VTklLUkFGVA0KICAgICsJYm9vbCAiRW5hYmxlIFVuaWtyYWZ0IG5l
dHdvcmtpbmciDQogICAgKwlkZWZhdWx0IHkNCiAgICArCWhlbHANCiAgICArCSAgQnVpbGQgd2l0
aCBVbmlrcmFmdCBGcm9tRGV2aWNlIGFuZCBUb0RldmljZSBlbGVtZW50cw0KICAgICsNCiAgICAr
Y29uZmlnIExJQkNMSUNLX0VMRU1TX0xPQ0FMDQogICAgKwlib29sICJFbmFibGUgbG9jYWwgZWxl
bWVudHMiDQogICAgKwlkZWZhdWx0IHkNCiAgICArCWhlbHANCiAgICArCSAgQnVpbGQgd2l0aCBs
b2NhbCBlbGVtZW50cw0KICAgICsNCiAgICArY29uZmlnIExJQkNMSUNLX0VMRU1TX1NJTVBMRQ0K
ICAgICsJYm9vbCAiRW5hYmxlIHNpbXBsZSBlbGVtZW50cyINCiAgICArCWRlZmF1bHQgeQ0KICAg
ICsJaGVscA0KICAgICsJICBCdWlsZCB3aXRoIHNpbXBsZSBlbGVtZW50cw0KICAgICsNCiAgICAr
Y29uZmlnIExJQkNMSUNLX0VMRU1TX1NUQU5EQVJEDQogICAgKwlib29sICJFbmFibGUgc3RhbmRh
cmQgZWxlbWVudHMiDQogICAgKwlkZWZhdWx0IHkNCiAgICArCWhlbHANCiAgICArCSAgQnVpbGQg
d2l0aCBzdGFuZGFyZCBlbGVtZW50cw0KICAgICsNCiAgICArY29uZmlnIExJQkNMSUNLX0VMRU1T
X1RDUFVEUA0KICAgICsJYm9vbCAiRW5hYmxlIFRDUC9VRFAgZWxlbWVudHMiDQogICAgKwlkZWZh
dWx0IHkNCiAgICArCWhlbHANCiAgICArCSAgQnVpbGQgd2l0aCBUQ1AvVURQIGVsZW1lbnRzDQog
ICAgKw0KICAgICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfVEhSRUFEUw0KICAgICsJYm9vbCAiRW5h
YmxlIG11bHRpLXRocmVhZGluZyBlbGVtZW50cyINCiAgICArCWRlZmF1bHQgeQ0KICAgICsJaGVs
cA0KICAgICsJICBCdWlsZCB3aXRoIG11bHRpLXRocmVhZGluZyBlbGVtZW50cw0KICAgICsNCiAg
ICArZW5kaWYNCiAgICBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQ0KICAgIG5ldyBm
aWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uOGVjZjgwYg0KICAgIC0tLSAvZGV2
L251bGwNCiAgICArKysgYi9NYWtlZmlsZQ0KICAgIEBAIC0wLDAgKzEsOSBAQA0KICAgICtVS19S
T09UID89ICQoUFdEKS8uLi91bmlrcmFmdA0KICAgICtVS19MSUJTID89ICQoUFdEKS8uLg0KICAg
ICtMSUJTIDo9ICQoVUtfTElCUykvbmV3bGliOiQoVUtfTElCUykvbHdpcA0KICAgICsNCiAgICAr
YWxsOg0KICAgICsJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykNCiAg
ICArDQogICAgKyQoTUFLRUNNREdPQUxTKToNCiAgICArCUAkKE1BS0UpIC1DICQoVUtfUk9PVCkg
QT0kKFBXRCkgTD0kKExJQlMpICQoTUFLRUNNREdPQUxTKQ0KICAgIGRpZmYgLS1naXQgYS9NYWtl
ZmlsZS51ayBiL01ha2VmaWxlLnVrDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi5iMjdiYjEwDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL01ha2VmaWxl
LnVrDQogICAgQEAgLTAsMCArMSwxNDMgQEANCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN
CiAgICArIyBSZWdpc3RlciB3aXRoIHVuaWtyYWZ0DQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjDQogICAgKyQoZXZhbCAkKGNhbGwgYWRkbGliLGxpYmNsaWNrKSkNCiAgICArDQogICAgKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgU291cmNlcw0KICAgICsjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KICAgICtMSUJDTElDS19DT01NSVRfSEFTSD1hNTM4NDgzNWE2Y2FjMTBmOGQ0
NGRhNGVlZWE4ZWFhOGY4ZTZhMGMyDQogICAgK0xJQkNMSUNLX1VSTD1odHRwczovL2NvZGVsb2Fk
LmdpdGh1Yi5jb20va29obGVyL2NsaWNrL3ppcC8kKExJQkNMSUNLX0NPTU1JVF9IQVNIKQ0KICAg
ICskKGV2YWwgJChjYWxsIGZldGNoYXMsbGliY2xpY2ssJChMSUJDTElDS19VUkwpLGNsaWNrLSQo
TElCQ0xJQ0tfQ09NTUlUX0hBU0gpLnppcCkpDQogICAgK0xJQkNMSUNLX1BBVENIRElSPSQoTElC
Q0xJQ0tfQkFTRSkvcGF0Y2hlcw0KICAgICskKGV2YWwgJChjYWxsIHBhdGNoLGxpYmNsaWNrLCQo
TElCQ0xJQ0tfUEFUQ0hESVIpLGNsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpKSkNCiAgICAr
DQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgQ29weSBVbmlrcmFmdCBmcm9t
L3RvIGRldmljZXMNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAraWZuZXEgKCQo
Q09ORklHX0xJQkNMSUNLX0VMRU1TX1VOSUtSQUZUKSwpDQogICAgKyQoc2hlbGwgbWtkaXIgLXAg
JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1lbnRz
KQ0KICAgICskKHNoZWxsIGNwIC1yICQoTElCQ0xJQ0tfQkFTRSkvdW5pa3JhZnQgJChMSUJDTElD
S19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1lbnRzLykNCiAgICAr
ZW5kaWYNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgSGVscGVy
cw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJDTElDS19FWFRSQUNURUQ9
JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpDQogICAgK0xJ
QkNMSUNLX0VMRU1FTlRTX0RJUj0kKExJQkNMSUNLX0VYVFJBQ1RFRCkvZWxlbWVudHMNCiAgICAr
TElCQ0xJQ0tfQlVJTERUT09MPSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9iaW4vY2xpY2stYnVpbGR0
b29sDQogICAgK0xJQkNMSUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNt
cCBpcCB1bmlrcmFmdCBcDQogICAgKwkJICAgbG9jYWwgc2ltcGxlIHN0YW5kYXJkIHRjcHVkcCB0
aHJlYWRzDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIENvbmZp
ZyBNZW51IC0gRmlsdGVyIHdoaWNoIGVsZW1lbnQgY2F0ZWdvcmllcyBhY3R1YWxseSBnZXQgYnVp
bHQNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArTElCQ0xJQ0tfRUxFTV9ESVJT
X1U9JChjYWxsIHVjLCQoTElCQ0xJQ0tfRUxFTV9ESVJTKSkNCiAgICArTElCQ0xJQ0tfRklMVEVS
RURfRUxFTV9ESVJTX1UgOj0gJChmb3JlYWNoIFYsICQoTElCQ0xJQ0tfRUxFTV9ESVJTX1UpLCBc
DQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaWYgJChmaWx0ZXIgeSwk
KENPTkZJR19MSUJDTElDS19FTEVNU18kVikpLCRWKSkNCiAgICArTElCQ0xJQ0tfRklMVEVSRURf
RUxFTV9ESVJTPSQoY2FsbCBsYywkKExJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSU19VKSkNCiAg
ICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgQXBwLXNwZWNpZmljIFRh
cmdldHMNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArDQogICAgKyMgUnVuIENs
aWNrJ3MgY29uZmlndXJlIHNjcmlwdA0KICAgICskKExJQkNMSUNLX0JVSUxEKS8uY29uZmlndXJl
ZDogJChMSUJDTElDS19CVUlMRCkvLm9yaWdpbg0KICAgICsJJChjYWxsIHZlcmJvc2VfY21kLENP
TkZJR1VSRSxsaWJhcHA6ICRALFwNCiAgICArCSAgICAgICBjZCAkKExJQkNMSUNLX0VYVFJBQ1RF
RCkgJiYgLi9jb25maWd1cmUgLS1lbmFibGUtbWluaW9zIC0td2l0aC14ZW49JChMSUJDTElDS19C
VUlMRCkgLS13aXRoLW1pbmlvcz0kKExJQkNMSUNLX0JVSUxEKSAtLXdpdGgtbmV3bGliPSQoTElC
Q0xJQ0tfQlVJTEQpIC0td2l0aC1sd2lwPSQoTElCQ0xJQ0tfQlVJTEQpICYmIFwNCiAgICArCSAg
ICAgICAkKFRPVUNIKSAkQCkNCiAgICArDQogICAgKyMgR2VuZXJhdGUgZWxlbWVudCBidWlsZCBy
dWxlcyB1c2luZyBjbGljay1idWlsZHRvb2wNCiAgICArJChMSUJDTElDS19CVUlMRCkvLmVsZW1l
bnRzbWs6ICQoTElCQ0xJQ0tfQlVJTEQpLy5jb25maWd1cmVkICQoVUtfQ09ORklHX09VVCkNCiAg
ICArCSQoY2FsbCB2ZXJib3NlX2NtZCxFTEVNTUssbGliYXBwOiAkQCxcDQogICAgKwkgICAgICAg
Y2QgJChMSUJDTElDS19FTEVNRU5UU19ESVIpICYmIGVjaG8gIiQoTElCQ0xJQ0tfRklMVEVSRURf
RUxFTV9ESVJTKSIgfCAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZmluZGVsZW0gLXIgdW5pa3JhZnQg
LVggJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuZXhjbHVkZSB8IGdyZXAgLUUgIl5bXiNdIiB8
IGF3ayAne3ByaW50ICJMSUJDTElDS19TUkNTLXkgKz0gJCQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9l
bGVtZW50cy8iICQkMX0nID4gJEApDQogICAgKw0KICAgICsjIEdlbmVyYXRlIGVsZW1lbnRzLmNj
IGFuZCBhZGQgaXQgdG8gdGhlIGJ1aWxkIGxpc3QNCiAgICArJChMSUJDTElDS19CVUlMRCkvZWxl
bWVudHMuY2M6ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rDQogICAgKwkkKGNhbGwgdmVy
Ym9zZV9jbWQsRUxFTUNDLGxpYmFwcDogJEAsXA0KICAgICsJICAgICAgIGVjaG8gIiQoTElCQ0xJ
Q0tfRklMVEVSRURfRUxFTV9ESVJTKSIgfCAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZmluZGVsZW0g
LXIgdW5pa3JhZnQgLXAgJChMSUJDTElDS19FTEVNRU5UU19ESVIpIC1YICQoTElCQ0xJQ0tfQlVJ
TEQpL2VsZW1lbnRzLmV4Y2x1ZGUgPiAkKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNjb25mICYm
IFwNCiAgICArCSAgICAgICAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZWxlbTJleHBvcnQgPCAkKExJ
QkNMSUNLX0JVSUxEKS8uZWxlbWVudHNjb25mID4gJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMu
Y2MpDQogICAgKw0KICAgICskKExJQkNMSUNLX0JVSUxEKS8ucHJlcGFyZWQ6ICQoTElCQ0xJQ0tf
QlVJTEQpL2VsZW1lbnRzLmNjDQogICAgKw0KICAgICtVS19QUkVQQVJFICs9ICQoTElCQ0xJQ0tf
QlVJTEQpLy5wcmVwYXJlZA0KICAgICsNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAg
ICArIyBBcHAgaW5jbHVkZXMsIGNvbXBpbGUgZmxhZ3MNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMNCiAgICArTElCQ0xJQ0tfQ0lOQ0xVREVTICAgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2lu
Y2x1ZGUgICAgICAgIFwNCiAgICArCQkgICAgICAgIC1JJChMSUJDTElDS19FWFRSQUNURUQpCSAg
ICAgXA0KICAgICsJCQktSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwNCiAgICArCQkJ
LUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRlL3Bvc2l4DQogICAgK0xJQkNMSUNLX0NYWElO
Q0xVREVTICs9IC1JJChMSUJDTElDS19CQVNFKS9pbmNsdWRlICAgICAgICBcDQogICAgKwkJICAg
ICAgICAtSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKSAgICAgICAgICAgXA0KICAgICsJCQktSSQoTElC
Q0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwNCiAgICArCQkJLUkkKExJQkxXSVBfTFdJUF9TUkNT
KS9pbmNsdWRlL3Bvc2l4DQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAg
ICsjIEdsb2JhbCBmbGFncw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJD
TElDS19DRkxBR1MteSAgICAgICArPSAtRExXSVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElDS19V
U0VSTEVWRUwNCiAgICArTElCQ0xJQ0tfQ1hYRkxBR1MteSAgICAgKz0gLURMV0lQX1RJTUVWQUxf
UFJJVkFURT0wIC1EQ0xJQ0tfVVNFUkxFVkVMIC1ESEFWRV9JUDYNCiAgICArTElCQ0xJQ0tfQ1hY
RkxBR1MgICAgICAgKz0gLWZuby1leGNlcHRpb25zIC1mbm8tcnR0aSAtc3RkPWMrKzExDQogICAg
Kw0KICAgICsjIFN1cHByZXNzIHNvbWUgd2FybmluZ3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJvY2Vz
cyBsb29rIG5lYXRlcg0KICAgICtMSUJDTElDS19TVVBQUkVTU19GTEFHUyA6PSAtV25vLXN0cmlj
dC1hbGlhc2luZw0KICAgICtMSUJDTElDS19DRkxBR1MteSArPSAkKExJQkNMSUNLX1NVUFBSRVNT
X0ZMQUdTKQ0KICAgICtMSUJDTElDS19DWFhGTEFHUy15ICs9ICQoTElCQ0xJQ0tfU1VQUFJFU1Nf
RkxBR1MpDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIFVuaWty
YWZ0IDwtPiBDbGljayBnbHVlIGNvZGUNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAg
ICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfQkFTRSkvY2xpY2suY2MNCiAgICArDQog
ICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgQ2xpY2sgc291cmNlcw0KICAgICsj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElD
S19FWFRSQUNURUQpL2xpYi9hcmNoaXZlLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL2FyZ3MuY2MNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQo
TElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXRvbWljLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2JpZ2hhc2htYXBfYXJlbmEuY2MNCiAgICArTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYml0dmVjdG9yLmNjDQog
ICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2NvbmZwYXJz
ZS5jYw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9j
cmMzMi5jDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L2RyaXZlci5jYw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9lbGVtZW50LmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJB
Q1RFRCkvbGliL2VsZW1maWx0ZXIuY2MNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJ
Q0tfRVhUUkFDVEVEKS9saWIvZXJyb3IuY2MNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElC
Q0xJQ0tfRVhUUkFDVEVEKS9saWIvZXRoZXJhZGRyZXNzLmNjDQogICAgK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2dhcHJhdGUuY2MNCiAgICArTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZ2x1ZS5jYw0KICAgICtMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9oYW5kbGVyY2FsbC5jYw0KICAg
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9oYXNoYWxsb2Nh
dG9yLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L2luX2Nrc3VtLmMNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9saWIvaW50ZWdlcnMuY2MNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhU
UkFDVEVEKS9saWIvaXBhZGRyZXNzLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNM
SUNLX0VYVFJBQ1RFRCkvbGliL2lwZmxvd2lkLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAk
KExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwdGFibGUuY2MNCiAgICArTElCQ0xJQ0tfU1JDUy15
ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbGV4ZXIuY2MNCiAgICArTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWFzdGVyLmNjDQogICAgK0xJQkNMSUNL
X1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL21kNS5jYw0KICAgICtMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9uYW1laW5mby5jYw0KICAgICtM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ub3RpZmllci5jYw0K
ICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9wYWNrZXQu
Y2MNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvcm91
dGVyLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3JvdXRlcnRocmVhZC5jYw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9yb3V0ZXJ2aXNpdG9yLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL3N0cmFjY3VtLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3N0cmluZy5jYw0KICAgICtMSUJDTElDS19TUkNT
LXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi90YXNrLmNjDQogICAgK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVyLmNjDQogICAgK0xJQkNMSUNL
X1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVyc2V0LmNjDQogICAgK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVzdGFtcC5jYw0K
ICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi92YXJpYWJs
ZWVudi5jYw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi9pcDZ0YWJsZS5jYw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNU
RUQpL2xpYi9pcDZhZGRyZXNzLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNL
X0VYVFJBQ1RFRCkvbGliL2lwNmZsb3dpZC5jYw0KICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChM
SUJDTElDS19FWFRSQUNURUQpL2xpYi9zZWxlY3RzZXQuY2MNCiAgICArDQogICAgKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjDQogICAgKyMgQ2xpY2sgZWxlbWVudHMNCiAgICArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMNCiAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfQlVJTEQpL2Vs
ZW1lbnRzLmNjDQogICAgKy1pbmNsdWRlICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rDQog
ICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:05:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:05: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 1hYA4Y-0003Ti-JH; Tue, 04 Jun 2019 14:05: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=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYA4X-0003Td-NQ
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:05:53 +0000
X-Inumbo-ID: dabf3b6e-86d1-11e9-974b-2f24233724e7
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dabf3b6e-86d1-11e9-974b-2f24233724e7;
 Tue, 04 Jun 2019 14:05:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 803A4105281;
 Tue,  4 Jun 2019 16:05:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DeBoq-Iar9aU; Tue,  4 Jun 2019 16:05:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5B93D105277
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:05:48 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:05:47 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 02/11] Initial public release: click.cc
Thread-Index: AQHVGQdzfOHAopFPoE60Aye1BbEz0aaLiyYA
Date: Tue, 4 Jun 2019 14:05:46 +0000
Message-ID: <C43F730B-06BF-438A-B2E7-9F737195076C@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-3-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-3-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <A4498D957B57604E96B0E8048E732835@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 02/11] Initial public
 release: click.cc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFRoaXMgaXMgdGFrZW4gZnJvbSBmcm9tIGtv
aGxlci9jbGljay9taW5pb3MvLCB3aXRoIGFuIHVwZGF0ZWQgY29weXJpZ2h0DQogICAgaGVhZGVy
Lg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4NCiAgICAtLS0NCiAgICAgY2xpY2suY2MgfCAzODQgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KICAgICAxIGZpbGUg
Y2hhbmdlZCwgMzg0IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGNsaWNr
LmNjDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2NsaWNrLmNjIGIvY2xpY2suY2MNCiAgICBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjI1YmM1MjQNCiAgICAtLS0gL2Rl
di9udWxsDQogICAgKysrIGIvY2xpY2suY2MNCiAgICBAQCAtMCwwICsxLDM4NCBAQA0KICAgICsv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQogICAgKy8qDQogICAg
KyAqIENvcHlyaWdodCAoYykgMjAxNCBORUMgRXVyb3BlIEx0ZCwNCiAgICArICogICAgICAgICAg
ICAgICAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24u
DQogICAgKyAqICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICArICoNCiAg
ICArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0DQogICAgKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICAgICsgKiBhcmUgbWV0Og0KICAg
ICsgKg0KICAgICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICAgICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICAgKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0DQogICAgKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAgICArICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAgICAr
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cw0KICAgICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KICAgICsgKiAgICB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICAgICsgKg0K
ICAgICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCiAgICArICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAg
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1INCiAgICArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICArICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQogICAgKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQogICAgKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFDQogICAgKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
ICAgICsgKg0KICAgICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLg0KICAgICsgKi8NCiAgICArDQogICAgKyNpbmNsdWRlIDxjbGljay9j
b25maWcuaD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL2xleGVyLmhoPg0KICAgICsjaW5jbHVkZSA8
Y2xpY2svcm91dGVyLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2svbWFzdGVyLmhoPg0KICAgICsj
aW5jbHVkZSA8Y2xpY2svZXJyb3IuaGg+DQogICAgKyNpbmNsdWRlIDxjbGljay90aW1lci5oaD4N
CiAgICArI2luY2x1ZGUgPGNsaWNrL3N0cmluZy5oaD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL3N0
cmFjY3VtLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2svZHJpdmVyLmhoPg0KICAgICsNCiAgICAr
ZXh0ZXJuICJDInsNCiAgICArI2luY2x1ZGUgPHN0ZGxpYi5oPg0KICAgICsjaW5jbHVkZSA8c3Rk
aW8uaD4NCiAgICArI2luY2x1ZGUgPHN0cmluZy5oPg0KICAgICsNCiAgICArI2luY2x1ZGUgPG1p
bmktb3MveGVuYnVzLmg+DQogICAgKyNpbmNsdWRlIDxtaW5pLW9zL3NodXRkb3duLmg+DQogICAg
KyNpbmNsdWRlIDxtaW5pLW9zL3NjaGVkLmg+DQogICAgK30NCiAgICArDQogICAgK3ZvaWQgKl9f
ZHNvX2hhbmRsZSA9IE5VTEw7DQogICAgKw0KICAgICsjZGVmaW5lIE5MT0coZm10LCAuLi4pDQog
ICAgKyNkZWZpbmUgTE9HKGZtdCwgLi4uKSBcDQogICAgKwlwcmludGYoIlslczolZF0gIiBmbXQg
IlxuIiwgXA0KICAgICsJCV9fRlVOQ1RJT05fXywgX19MSU5FX18sICMjX19WQV9BUkdTX18pDQog
ICAgKw0KICAgICsvKioNCiAgICArICogeGVuc3RvcmUgaGVscGVycw0KICAgICsgKi8NCiAgICAr
I2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3MiDQogICAgKyNkZWZpbmUgUEFUSF9NQVhfTEVOCTEw
MjQNCiAgICArDQogICAgK3N0cnVjdCB4ZW5zdG9yZV9kZXYgew0KICAgICsJZG9taWRfdCBkb207
DQogICAgKwljaGFyICpub2RlbmFtZTsNCiAgICArCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7
DQogICAgK30gKnhzZGV2ID0gTlVMTDsNCiAgICArDQogICAgK3VpbnQzMl90IGRvbWlkID0gLTE7
DQogICAgK3VfaW50IF9zaHV0ZG93biA9IDA7DQogICAgK3VfaW50IF9yZWFzb24gPSAwOw0KICAg
ICsNCiAgICArY2hhcioNCiAgICArZXZlbnRfdG9rZW4oY2hhciAqKmtleSkNCiAgICArew0KICAg
ICsJY2hhciAqcCA9ICprZXksICpwMjsNCiAgICArCWNoYXIgKnRva2VuOw0KICAgICsJdV9pbnQg
c3o7DQogICAgKw0KICAgICsJcDIgPSBzdHJjaHIoKytwLCAnLycpOw0KICAgICsJc3ogPSAocDIg
IT0gTlVMTCA/IHAyIC0gcCA6IHN0cmxlbihwKSk7DQogICAgKwl0b2tlbiA9IHN0cm5kdXAocCwg
c3opOw0KICAgICsJKmtleSA9IChwK3N6KTsNCiAgICArDQogICAgKwlyZXR1cm4gdG9rZW47DQog
ICAgK30NCiAgICArDQogICAgK2NoYXIqDQogICAgK3JlYWRfcmlkKGNoYXIgKnBhdGgpDQogICAg
K3sNCiAgICArCWNoYXIgKmlkID0gc3RyZHVwKHBhdGggKyAxKTsNCiAgICArCWNoYXIgKmlkX2Vu
ZCA9IHN0cmNocihpZCwgJy8nKTsNCiAgICArCSppZF9lbmQgPSAnXDAnOw0KICAgICsJcmV0dXJu
IGlkOw0KICAgICt9DQogICAgKw0KICAgICtTdHJpbmcgKg0KICAgICtyZWFkX2NvbmZpZyh1X2lu
dCByaWQgPSAwKQ0KICAgICt7DQogICAgKwljaGFyIHBhdGhbUEFUSF9NQVhfTEVOXTsNCiAgICAr
CVN0cmluZyAqY2ZnID0gbmV3IFN0cmluZygpOw0KICAgICsJY2hhciAqdG9rZW47DQogICAgKw0K
ICAgICsJZm9yIChpbnQgaSA9IDA7OyBpKyspIHsNCiAgICArCQlzbnByaW50ZihwYXRoLCBQQVRI
X01BWF9MRU4sICIlcy8lZC9jb25maWcvJWQiLA0KICAgICsJCQkJUEFUSF9ST09ULCByaWQsIGkp
Ow0KICAgICsJCXhlbmJ1c19yZWFkKFhCVF9OSUwsIHBhdGgsICZ0b2tlbik7DQogICAgKwkJaWYg
KHRva2VuID09IE5VTEwpDQogICAgKwkJCWJyZWFrOw0KICAgICsJCSpjZmcgKz0gdG9rZW47DQog
ICAgKwl9DQogICAgKw0KICAgICsJcmV0dXJuIGNmZzsNCiAgICArfQ0KICAgICsNCiAgICArLyoN
CiAgICArICogY2xpY2sgZ2x1ZQ0KICAgICsgKi8NCiAgICArDQogICAgKyNkZWZpbmUgTUFYX1JP
VVRFUlMJNjQNCiAgICArc3RhdGljIEVycm9ySGFuZGxlciAqZXJyaDsNCiAgICArc3RhdGljIE1h
c3RlciBtYXN0ZXIoMSk7DQogICAgKw0KICAgICtzdHJ1Y3Qgcm91dGVyX2luc3RhbmNlIHsNCiAg
ICArCVJvdXRlciAqcjsNCiAgICArCXVfaW50IGZfc3RvcDsNCiAgICArfSByb3V0ZXJfbGlzdFtN
QVhfUk9VVEVSU107DQogICAgKw0KICAgICt2b2lkDQogICAgK3JvdXRlcl90aHJlYWQodm9pZCAq
dGhyZWFkX2RhdGEpDQogICAgK3sNCiAgICArCXVfaW50ICpyaWQgPSAodV9pbnQqKSB0aHJlYWRf
ZGF0YTsNCiAgICArCVN0cmluZyAqY29uZmlnID0gcmVhZF9jb25maWcoKnJpZCk7DQogICAgKwlz
dHJ1Y3Qgcm91dGVyX2luc3RhbmNlICpyaSA9ICZyb3V0ZXJfbGlzdFsqcmlkXTsNCiAgICArDQog
ICAgKwlyaS0+ciA9IGNsaWNrX3JlYWRfcm91dGVyKCpjb25maWcsIHRydWUsIGVycmgsIGZhbHNl
LCAmbWFzdGVyKTsNCiAgICArCWlmIChyaS0+ci0+aW5pdGlhbGl6ZShlcnJoKSA8IDApIHsNCiAg
ICArCQlMT0coIlJvdXRlciBpbml0IGZhaWxlZCEiKTsNCiAgICArCQlyaS0+Zl9zdG9wID0gMTsN
CiAgICArCQlyZXR1cm47DQogICAgKwl9DQogICAgKw0KICAgICsJcmktPnItPnVzZSgpOw0KICAg
ICsJcmktPnItPmFjdGl2YXRlKGVycmgpOw0KICAgICsNCiAgICArCUxPRygiU3RhcnRpbmcgZHJp
dmVyLi4uXG5cbiIpOw0KICAgICsJcmktPnItPm1hc3RlcigpLT50aHJlYWQoMCktPmRyaXZlcigp
Ow0KICAgICsNCiAgICArCUxPRygiU3RvcHBpbmcgZHJpdmVyLi4uXG5cbiIpOw0KICAgICsJcmkt
PnItPnVudXNlKCk7DQogICAgKwlyaS0+Zl9zdG9wID0gMTsNCiAgICArDQogICAgKwlMT0coIk1h
c3Rlci9kcml2ZXIgc3RvcHBlZCwgY2xvc2luZyByb3V0ZXJfdGhyZWFkIik7DQogICAgKwlmcmVl
KGNvbmZpZyk7DQogICAgKwlmcmVlKHJpZCk7DQogICAgK30NCiAgICArDQogICAgK3ZvaWQNCiAg
ICArcm91dGVyX3N0b3AoaW50IG4gPSBNQVhfUk9VVEVSUykNCiAgICArew0KICAgICsJTE9HKCJT
dG9wcGluZyBhbGwgcm91dGVycy4uLlxuXG4iKTsNCiAgICArCWZvciAoaW50IGkgPSBuIC0gMTsg
aSA+PSAwOyAtLWkpIHsNCiAgICArCQlSb3V0ZXIgKnIgPSByb3V0ZXJfbGlzdFtpXS5yOw0KICAg
ICsNCiAgICArCQlpZiAocm91dGVyX2xpc3RbaV0uZl9zdG9wKQ0KICAgICsJCQljb250aW51ZTsN
CiAgICArDQogICAgKwkJTE9HKCJTdG9wcGluZyBpbnN0YW5jZSA9ICVkLi4uXG5cbiIsIGkpOw0K
ICAgICsNCiAgICArCQlkbyB7DQogICAgKwkJCXItPnBsZWFzZV9zdG9wX2RyaXZlcigpOw0KICAg
ICsJCQlzY2hlZHVsZSgpOw0KICAgICsJCX0gd2hpbGUgKCEocm91dGVyX2xpc3RbaV0uZl9zdG9w
KSk7DQogICAgKwl9DQogICAgKwlMT0coIlN0b3BwZWQgYWxsIHJvdXRlcnMuLi5cblxuIik7DQog
ICAgK30NCiAgICArDQogICAgK3ZvaWQNCiAgICArcm91dGVyX3N1c3BlbmQoaW50IG4gPSBNQVhf
Uk9VVEVSUykNCiAgICArew0KICAgICt9DQogICAgKw0KICAgICt2b2lkDQogICAgK3JvdXRlcl9y
ZXN1bWUoaW50IG4gPSBNQVhfUk9VVEVSUykNCiAgICArew0KICAgICt9DQogICAgKw0KICAgICt1
X2ludA0KICAgICtvbl9zdGF0dXMoaW50IHJpZCwgY2hhciAqa2V5LCB2b2lkICpkYXRhKQ0KICAg
ICt7DQogICAgKwlTdHJpbmcgc3RhdHVzID0gKGNoYXIgKikgZGF0YTsNCiAgICArCXN0cnVjdCBy
b3V0ZXJfaW5zdGFuY2UgKnIgPSAmcm91dGVyX2xpc3RbcmlkXTsNCiAgICArDQogICAgKwlMT0co
InJvdXRlciBpZCAlZCIsIHJpZCk7DQogICAgKwlMT0coInN0YXR1cyBjaGFuZ2UgdG8gJXMiLCBk
YXRhKTsNCiAgICArCWlmIChzdGF0dXMgPT0gIlJ1bm5pbmciKSB7DQogICAgKwkJdV9pbnQgKmFy
ZzA7DQogICAgKw0KICAgICsJCWlmICghci0+Zl9zdG9wKQ0KICAgICsJCQlnb3RvIHN0YXR1c19l
cnI7DQogICAgKw0KICAgICsJCWFyZzAgPSAodV9pbnQqKSBtYWxsb2Moc2l6ZW9mKHVfaW50KSk7
DQogICAgKwkJKmFyZzAgPSByaWQ7DQogICAgKwkJci0+Zl9zdG9wID0gMDsNCiAgICArCQljcmVh
dGVfdGhyZWFkKChjaGFyKikiY2xpY2siLCByb3V0ZXJfdGhyZWFkLCBhcmcwKTsNCiAgICArCX0g
ZWxzZSBpZiAoc3RhdHVzID09ICJIYWx0ZWQiKSB7DQogICAgKwkJaWYgKHItPmZfc3RvcCkNCiAg
ICArCQkJZ290byBzdGF0dXNfZXJyOw0KICAgICsNCiAgICArCQlyb3V0ZXJfc3RvcChyaWQpOw0K
ICAgICsJfQ0KICAgICsNCiAgICArCXJldHVybiAwOw0KICAgICtzdGF0dXNfZXJyOg0KICAgICsJ
cmV0dXJuIC1FSU5WQUw7DQogICAgK30NCiAgICArDQogICAgK3N0YXRpYyB2b2lkDQogICAgK3Jl
YWRfY25hbWUoY2hhciAqcGF0aCwgRWxlbWVudCAqKmUsIGNvbnN0IEhhbmRsZXIgKipoLCBpbnQg
cmlkKQ0KICAgICt7DQogICAgKwlpbnQgc2VwID0gc3RyY2hyKHBhdGgsICcvJykgLSBwYXRoOw0K
ICAgICsJU3RyaW5nIGVuYW1lKHBhdGgsIHNlcCksIGhuYW1lKHBhdGggKyBzZXAgKyAxKTsNCiAg
ICArCVJvdXRlciAqciA9IHJvdXRlcl9saXN0W3JpZF0ucjsNCiAgICArDQogICAgKwlOTE9HKCJz
ZXA9JWQgZWxlbWVudD0lcyBoYW5kbGVyPSVzIiwgc2VwLA0KICAgICsJCQllbmFtZS5jX3N0cigp
LCBobmFtZS5jX3N0cigpKTsNCiAgICArDQogICAgKwkqZSA9IHItPmZpbmQoZW5hbWUpOw0KICAg
ICsJKmggPSBSb3V0ZXI6OmhhbmRsZXIoKmUsIGhuYW1lKTsNCiAgICArCU5MT0coImVuYW1lICVz
PSVwIGhuYW1lICVzPSVwIiwgZW5hbWUuY19zdHIoKSwgZSwgaG5hbWUuY19zdHIoKSwgaCk7DQog
ICAgK30NCiAgICArDQogICAgK3VfaW50DQogICAgK29uX2VsZW1fcmVhZGgoaW50IHJpZCwgY2hh
ciAqa2V5LCB2b2lkICpkYXRhKQ0KICAgICt7DQogICAgKwlFbGVtZW50ICplOw0KICAgICsJY29u
c3QgSGFuZGxlciogaDsNCiAgICArCVN0cmluZyB2YWwsIGhfcGF0aCwgbG9ja19wYXRoOw0KICAg
ICsJaW50IGZfc3RvcCA9IHJvdXRlcl9saXN0W3JpZF0uZl9zdG9wOw0KICAgICsNCiAgICArCWlm
IChzdHJuY21wKGtleSwgIi9yZWFkLyIsIDYpKQ0KICAgICsJCXJldHVybiAwOw0KICAgICsNCiAg
ICArCWlmIChmX3N0b3ApDQogICAgKwkJcmV0dXJuIDA7DQogICAgKw0KICAgICsJcmVhZF9jbmFt
ZShrZXkrNiwgJmUsICZoLCByaWQpOw0KICAgICsNCiAgICArCWlmICghaCB8fCAhaC0+cmVhZGFi
bGUoKSkNCiAgICArCQlyZXR1cm4gRUlOVkFMOw0KICAgICsNCiAgICArCXZhbCA9IGgtPmNhbGxf
cmVhZChlLCAiIiwgRXJyb3JIYW5kbGVyOjpkZWZhdWx0X2hhbmRsZXIoKSk7DQogICAgKwloX3Bh
dGggPSBTdHJpbmcoUEFUSF9ST09UKSArICIvMC9lbGVtZW50cy8iICsgZS0+bmFtZSgpICsgIi8i
ICsgaC0+bmFtZSgpOw0KICAgICsJbG9ja19wYXRoID0gaF9wYXRoICsgIi9sb2NrIjsNCiAgICAr
DQogICAgKwl4ZW5idXNfd3JpdGUoWEJUX05JTCwgaF9wYXRoLmNfc3RyKCksIHZhbC5jX3N0cigp
KTsNCiAgICArCXhlbmJ1c193cml0ZShYQlRfTklMLCBsb2NrX3BhdGguY19zdHIoKSwgIjAiKTsN
CiAgICArDQogICAgKwlOTE9HKCJlbGVtZW50IGhhbmRsZXIgcmVhZCAlcyIsIHZhbC5jX3N0cigp
KTsNCiAgICArCXJldHVybiAwOw0KICAgICt9DQogICAgKw0KICAgICt1X2ludA0KICAgICtvbl9l
bGVtX3dyaXRlaChpbnQgcmlkLCBjaGFyICprZXksIHZvaWQgKmRhdGEpDQogICAgK3sNCiAgICAr
CUVsZW1lbnQgKmU7DQogICAgKwljb25zdCBIYW5kbGVyKiBoOw0KICAgICsJaW50IGZfc3RvcCA9
IHJvdXRlcl9saXN0W3JpZF0uZl9zdG9wOw0KICAgICsNCiAgICArCWlmIChmX3N0b3AgfHwgc3Ry
bGVuKChjaGFyICopIGRhdGEpID09IDApDQogICAgKwkJcmV0dXJuIDA7DQogICAgKw0KICAgICsJ
cmVhZF9jbmFtZShrZXkrMSwgJmUsICZoLCByaWQpOw0KICAgICsNCiAgICArCWlmICghaCB8fCAh
aC0+d3JpdGFibGUoKSkNCiAgICArCQlyZXR1cm4gRUlOVkFMOw0KICAgICsNCiAgICArCWgtPmNh
bGxfd3JpdGUoU3RyaW5nKGRhdGEpLCBlLCBFcnJvckhhbmRsZXI6OmRlZmF1bHRfaGFuZGxlcigp
KTsNCiAgICArCU5MT0coImVsZW1lbnQgaGFuZGxlciB3cml0ZSAlcyB2YWx1ZSAlcyIsIGRhdGEs
ICIiKTsNCiAgICArCXJldHVybiAwOw0KICAgICt9DQogICAgKw0KICAgICt1X2ludA0KICAgICtv
bl9yb3V0ZXIoY2hhciAqa2V5LCB2b2lkICpkYXRhKQ0KICAgICt7DQogICAgKwljaGFyICpwID0g
a2V5Ow0KICAgICsJU3RyaW5nIHJldjsNCiAgICArCXVfaW50IHJpZDsNCiAgICArDQogICAgKwlp
ZiAoc3RybGVuKGtleSkgPT0gMCkNCiAgICArCQlyZXR1cm4gMDsNCiAgICArDQogICAgKwlyaWQg
PSBhdG9pKGV2ZW50X3Rva2VuKCZwKSk7DQogICAgKwlyZXYgPSBldmVudF90b2tlbigmcCk7DQog
ICAgKw0KICAgICsJaWYgKHJldiA9PSAiY29udHJvbCIpDQogICAgKwkJb25fZWxlbV9yZWFkaChy
aWQsIHAsIGRhdGEpOw0KICAgICsJZWxzZSBpZiAocmV2ID09ICJlbGVtZW50cyIpDQogICAgKwkJ
b25fZWxlbV93cml0ZWgocmlkLCBwLCBkYXRhKTsNCiAgICArCWVsc2UgaWYgKHJldiA9PSAic3Rh
dHVzIikNCiAgICArCQlvbl9zdGF0dXMocmlkLCBrZXksIGRhdGEpOw0KICAgICsNCiAgICArCXJl
dHVybiAwOw0KICAgICt9DQogICAgKw0KICAgICsvKiBydW5zIHRoZSBldmVudCBsb29wICovDQog
ICAgK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAgICArew0KICAgICsJc2l6ZV90
IGxlbiA9IHNpemVvZihzdHJ1Y3QgeGVuc3RvcmVfZGV2KTsNCiAgICArDQogICAgKwljbGlja19z
dGF0aWNfaW5pdGlhbGl6ZSgpOw0KICAgICsJZXJyaCA9IEVycm9ySGFuZGxlcjo6ZGVmYXVsdF9o
YW5kbGVyKCk7DQogICAgKw0KICAgICsJeHNkZXYgPSAoc3RydWN0IHhlbnN0b3JlX2RldiopIG1h
bGxvYyhsZW4pOw0KICAgICsJbWVtc2V0KHhzZGV2LCAwLCBsZW4pOw0KICAgICsJbWVtc2V0KHJv
dXRlcl9saXN0LCAwLCBNQVhfUk9VVEVSUyAqIHNpemVvZihzdHJ1Y3Qgcm91dGVyX2luc3RhbmNl
KSk7DQogICAgKwlmb3IgKGludCBpID0gMDsgaSA8IE1BWF9ST1VURVJTOyArK2kpIHsNCiAgICAr
CQlyb3V0ZXJfbGlzdFtpXS5mX3N0b3AgPSAxOw0KICAgICsJfQ0KICAgICsNCiAgICArCXhlbmJ1
c193YXRjaF9wYXRoX3Rva2VuKFhCVF9OSUwsIFBBVEhfUk9PVCwgInJvdXRlci13YXRjaCIsDQog
ICAgKwkJCSZ4c2Rldi0+ZXZlbnRzKTsNCiAgICArDQogICAgKwl3aGlsZSAoIV9zaHV0ZG93bikg
ew0KICAgICsJCVN0cmluZyB2YWx1ZTsNCiAgICArCQljaGFyICplcnIsICp2YWwsICoqcGF0aDsN
CiAgICArDQogICAgKwkJcGF0aCA9IHhlbmJ1c193YWl0X2Zvcl93YXRjaF9yZXR1cm4oJnhzZGV2
LT5ldmVudHMpOw0KICAgICsJCWlmICghcGF0aCB8fCBfc2h1dGRvd24pDQogICAgKwkJCWNvbnRp
bnVlOw0KICAgICsNCiAgICArCQllcnIgPSB4ZW5idXNfcmVhZChYQlRfTklMLCAqcGF0aCwgJnZh
bCk7DQogICAgKwkJaWYgKGVycikNCiAgICArCQkJY29udGludWU7DQogICAgKw0KICAgICsJCW9u
X3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7DQogICAgKwl9DQogICAg
Kw0KICAgICsJTE9HKCJTaHV0dGluZyBkb3duLi4uIik7DQogICAgKwl4ZW5idXNfdW53YXRjaF9w
YXRoX3Rva2VuKFhCVF9OSUwsIFBBVEhfUk9PVCwgInJvdXRlci13YXRjaCIpOw0KICAgICsNCiAg
ICArCWZpbmlfeGVuYnVzKCk7DQogICAgKwlmcmVlKHhzZGV2KTsNCiAgICArDQogICAgKwlyZXR1
cm4gX3JlYXNvbjsNCiAgICArfQ0KICAgICsNCiAgICArLyogYXBwIHNodXRkb3duIGhvb2sgZnJv
bSBtaW5pb3MgKi8NCiAgICArZXh0ZXJuICJDIiB7DQogICAgK2ludCBhcHBfc2h1dGRvd24odW5z
aWduZWQgcmVhc29uKQ0KICAgICt7DQogICAgKwlzd2l0Y2ggKHJlYXNvbikgew0KICAgICsJY2Fz
ZSBTSFVURE9XTl9wb3dlcm9mZjoNCiAgICArCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFz
b249cG93ZXJvZmYiKTsNCiAgICArCQlfc2h1dGRvd24gPSAxOw0KICAgICsJCV9yZWFzb24gPSBy
ZWFzb247DQogICAgKwkJcm91dGVyX3N0b3AoKTsNCiAgICArCQl4ZW5idXNfcmVsZWFzZV93YWl0
X2Zvcl93YXRjaCgmeHNkZXYtPmV2ZW50cyk7DQogICAgKwkJYnJlYWs7DQogICAgKwljYXNlIFNI
VVRET1dOX3JlYm9vdDoNCiAgICArCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cmVi
b290Iik7DQogICAgKwkJX3NodXRkb3duID0gMTsNCiAgICArCQlfcmVhc29uID0gcmVhc29uOw0K
ICAgICsJCXJvdXRlcl9zdG9wKCk7DQogICAgKwkJeGVuYnVzX3JlbGVhc2Vfd2FpdF9mb3Jfd2F0
Y2goJnhzZGV2LT5ldmVudHMpOw0KICAgICsJCWJyZWFrOw0KICAgICsJY2FzZSBTSFVURE9XTl9z
dXNwZW5kOg0KICAgICsJCUxPRygiUmVxdWVzdGVkIHNodXRkb3duIHJlYXNvbj1zdXNwZW5kIik7
DQogICAgKwkJcm91dGVyX3N1c3BlbmQoKTsNCiAgICArCQlrZXJuZWxfc3VzcGVuZCgpOw0KICAg
ICsJCXJvdXRlcl9yZXN1bWUoKTsNCiAgICArCWRlZmF1bHQ6DQogICAgKwkJTE9HKCJSZXF1ZXN0
ZWQgc2h1dGRvd24gd2l0aCBpbnZhbGlkIHJlYXNvbiAoJWQpIiwgcmVhc29uKTsNCiAgICArCQli
cmVhazsNCiAgICArCX0NCiAgICArDQogICAgKwlyZXR1cm4gMDsNCiAgICArfQ0KICAgICt9DQog
ICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:07:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:07: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 1hYA5j-0003WV-Ni; Tue, 04 Jun 2019 14:07:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYA5i-0003WQ-JS
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:07:06 +0000
X-Inumbo-ID: 06fb5dca-86d2-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 06fb5dca-86d2-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:07:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id AC711F2072;
 Tue,  4 Jun 2019 16:07:02 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id zP8R0ikESnjZ; Tue,  4 Jun 2019 16:07:02 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8435AF2034
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:07:00 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:07:00 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 03/11] Initial public release: click.cc:
 ifdef out xen-specific code.
Thread-Index: AQHVGQd4Ey437j/R9UmjzFyc5YqraKaLi32A
Date: Tue, 4 Jun 2019 14:06:59 +0000
Message-ID: <B3046FB6-C290-45D2-ABFA-AEE99A93D4A1@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-4-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-4-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <995C254DF167B04FBF1F83E670EAA8DC@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 03/11] Initial public
 release: click.cc: ifdef out xen-specific code.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLiBJbiB0aGUgZW5kLCBJIHdvdWxk
IHByZWZlciB3ZSB1c2Ugc29tZXRoaW5nIGxpa2UgdGhlIENvbnRyb2xTb2NrZXQgZWxlbWVudCB0
byBpbnRlcmFjdCB3aXRoIGhhbmRsZXJzLCByYXRoZXIgdGhhbiB0aGUgY29uc29sZSwgYnV0IHdl
J2xsIHNlZS4NCg0KVGhhbmtzLA0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQtYnk6IEZlbGlwZSBI
dWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpEci4gRmVsaXBlIEh1aWNpDQpD
aGllZiBSZXNlYXJjaGVyLCBTeXN0ZW1zIGFuZCBNYWNoaW5lIExlYXJuaW5nIEdyb3VwDQpORUMg
TGFib3JhdG9yaWVzIEV1cm9wZSBHbWJIDQpLdXJmdWVyc3RlbmFubGFnZSAzNiwgRC02OTExNSBI
ZWlkZWxiZXJnDQpUZWwuICArNDkNCigwKTYyMjEgNDM0Mi0yNDENCkZheDogICs0OQ0KKDApNjIy
MSA0MzQyLTE1NQ0KIA0KZS1tYWlsOg0KZmVsaXBlLmh1aWNpQG5lY2xhYi5ldQ0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSZWdp
c3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55LCBIUkI3Mjg1NTgNCg0K77u/
T24gMDIuMDYuMTksIDA3OjUzLCAiRmxvcmlhbiBTY2htaWR0IiA8Rmxvcmlhbi5TY2htaWR0QG5l
Y2xhYi5ldT4gd3JvdGU6DQoNCiAgICBJbiB0aGUgQ2xpY2tPUyBwb3J0LCB0aGlzIGNvZGUgbW9z
dGx5IGRlYWxzIHdpdGggcHJvdmlkaW5nIGEgY29uc29sZSBmb3INCiAgICBpbnRlcmFjdGluZyB3
aXRoIENsaWNrLiBUaGlzIGluaXRpYWwgcmVsZWFzZSBkb2Vzbid0IGhhdmUgc3VjaCBzdXBwb3J0
LA0KICAgIGJ1dCB0aGlzIGNvdWxkIGJlIHJldmlzaXRlZCBhdCBhIGxhdGVyIHBvaW50Lg0KICAg
IA0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5l
Y2xhYi5ldT4NCiAgICAtLS0NCiAgICAgY2xpY2suY2MgfCA3NyArKysrKysrKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICAxIGZpbGUgY2hhbmdl
ZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pDQogICAgDQogICAgZGlmZiAtLWdp
dCBhL2NsaWNrLmNjIGIvY2xpY2suY2MNCiAgICBpbmRleCAyNWJjNTI0Li5hM2JmYmE4IDEwMDY0
NA0KICAgIC0tLSBhL2NsaWNrLmNjDQogICAgKysrIGIvY2xpY2suY2MNCiAgICBAQCAtMzIsNiAr
MzIsMTYgQEANCiAgICAgICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9E
SUZJRUQgSU4gQU5ZIFdBWS4NCiAgICAgICovDQogICAgIA0KICAgICsvKiBUbyBiZSBpbXBsZW1l
bnRlZCBhdCBhIGxhdGVyIHBvaW50ICovDQogICAgKyNkZWZpbmUgQ0xJQ0tfQ09OU09MRV9TVVBQ
T1JUX0lNUExFTUVOVEVEIDANCiAgICArDQogICAgK2V4dGVybiAiQyJ7DQogICAgKyNpbmNsdWRl
IDxzdGRsaWIuaD4NCiAgICArI2luY2x1ZGUgPHN0ZGlvLmg+DQogICAgKyNpbmNsdWRlIDxzdHJp
bmcuaD4NCiAgICArI2luY2x1ZGUgPHBvbGwuaD4NCiAgICArfQ0KICAgICsNCiAgICAgI2luY2x1
ZGUgPGNsaWNrL2NvbmZpZy5oPg0KICAgICAjaW5jbHVkZSA8Y2xpY2svbGV4ZXIuaGg+DQogICAg
ICNpbmNsdWRlIDxjbGljay9yb3V0ZXIuaGg+DQogICAgQEAgLTQyLDE1ICs1MiwxMCBAQA0KICAg
ICAjaW5jbHVkZSA8Y2xpY2svc3RyYWNjdW0uaGg+DQogICAgICNpbmNsdWRlIDxjbGljay9kcml2
ZXIuaGg+DQogICAgIA0KICAgIC1leHRlcm4gIkMiew0KICAgIC0jaW5jbHVkZSA8c3RkbGliLmg+
DQogICAgLSNpbmNsdWRlIDxzdGRpby5oPg0KICAgIC0jaW5jbHVkZSA8c3RyaW5nLmg+DQogICAg
KyNpbmNsdWRlIDx1ay9zY2hlZC5oPg0KICAgICsjaW5jbHVkZSA8dWsvdGhyZWFkLmg+DQogICAg
IA0KICAgIC0jaW5jbHVkZSA8bWluaS1vcy94ZW5idXMuaD4NCiAgICAtI2luY2x1ZGUgPG1pbmkt
b3Mvc2h1dGRvd24uaD4NCiAgICAtI2luY2x1ZGUgPG1pbmktb3Mvc2NoZWQuaD4NCiAgICAtfQ0K
ICAgICtpbnQgY2xpY2tfbnRocmVhZHMgPSAxOw0KICAgICANCiAgICAgdm9pZCAqX19kc29faGFu
ZGxlID0gTlVMTDsNCiAgICAgDQogICAgQEAgLTU5LDE5ICs2NCw2IEBAIHZvaWQgKl9fZHNvX2hh
bmRsZSA9IE5VTEw7DQogICAgIAlwcmludGYoIlslczolZF0gIiBmbXQgIlxuIiwgXA0KICAgICAJ
CV9fRlVOQ1RJT05fXywgX19MSU5FX18sICMjX19WQV9BUkdTX18pDQogICAgIA0KICAgIC0vKioN
CiAgICAtICogeGVuc3RvcmUgaGVscGVycw0KICAgIC0gKi8NCiAgICAtI2RlZmluZSBQQVRIX1JP
T1QJImNsaWNrb3MiDQogICAgLSNkZWZpbmUgUEFUSF9NQVhfTEVOCTEwMjQNCiAgICAtDQogICAg
LXN0cnVjdCB4ZW5zdG9yZV9kZXYgew0KICAgIC0JZG9taWRfdCBkb207DQogICAgLQljaGFyICpu
b2RlbmFtZTsNCiAgICAtCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7DQogICAgLX0gKnhzZGV2
ID0gTlVMTDsNCiAgICAtDQogICAgLXVpbnQzMl90IGRvbWlkID0gLTE7DQogICAgIHVfaW50IF9z
aHV0ZG93biA9IDA7DQogICAgIHVfaW50IF9yZWFzb24gPSAwOw0KICAgICANCiAgICBAQCAtOTks
NiArOTEsNyBAQCByZWFkX3JpZChjaGFyICpwYXRoKQ0KICAgICAJcmV0dXJuIGlkOw0KICAgICB9
DQogICAgIA0KICAgICsjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVEDQogICAg
IFN0cmluZyAqDQogICAgIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApDQogICAgIHsNCiAgICBA
QCAtMTE3LDcgKzExMCw3IEBAIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApDQogICAgIA0KICAg
ICAJcmV0dXJuIGNmZzsNCiAgICAgfQ0KICAgIC0NCiAgICArI2VuZGlmIC8qIENMSUNLX0NPTlNP
TEVfU1VQUE9SVF9JTVBMRU1FTlRFRCAqLw0KICAgICAvKg0KICAgICAgKiBjbGljayBnbHVlDQog
ICAgICAqLw0KICAgIEBAIC0xMzUsNyArMTI4LDcgQEAgdm9pZA0KICAgICByb3V0ZXJfdGhyZWFk
KHZvaWQgKnRocmVhZF9kYXRhKQ0KICAgICB7DQogICAgIAl1X2ludCAqcmlkID0gKHVfaW50Kikg
dGhyZWFkX2RhdGE7DQogICAgLQlTdHJpbmcgKmNvbmZpZyA9IHJlYWRfY29uZmlnKCpyaWQpOw0K
ICAgICsJU3RyaW5nICpjb25maWcgPSBuZXcgU3RyaW5nOyAvL3JlYWRfY29uZmlnKCpyaWQpOw0K
ICAgICAJc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAqcmkgPSAmcm91dGVyX2xpc3RbKnJpZF07DQog
ICAgIA0KICAgICAJcmktPnIgPSBjbGlja19yZWFkX3JvdXRlcigqY29uZmlnLCB0cnVlLCBlcnJo
LCBmYWxzZSwgJm1hc3Rlcik7DQogICAgQEAgLTE3NCwxMiArMTY3LDEzIEBAIHJvdXRlcl9zdG9w
KGludCBuID0gTUFYX1JPVVRFUlMpDQogICAgIA0KICAgICAJCWRvIHsNCiAgICAgCQkJci0+cGxl
YXNlX3N0b3BfZHJpdmVyKCk7DQogICAgLQkJCXNjaGVkdWxlKCk7DQogICAgKwkJCXVrX3NjaGVk
X3lpZWxkKCk7DQogICAgIAkJfSB3aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsNCiAg
ICAgCX0NCiAgICAgCUxPRygiU3RvcHBlZCBhbGwgcm91dGVycy4uLlxuXG4iKTsNCiAgICAgfQ0K
ICAgICANCiAgICArI2lmIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRFRA0KICAgICB2
b2lkDQogICAgIHJvdXRlcl9zdXNwZW5kKGludCBuID0gTUFYX1JPVVRFUlMpDQogICAgIHsNCiAg
ICBAQCAtMzA3LDI1ICszMDEsMzIgQEAgb25fcm91dGVyKGNoYXIgKmtleSwgdm9pZCAqZGF0YSkN
CiAgICAgDQogICAgIAlyZXR1cm4gMDsNCiAgICAgfQ0KICAgICsjZW5kaWYgLyogQ0xJQ0tfQ09O
U09MRV9TVVBQT1JUX0lNUExFTUVOVEVEICovDQogICAgKw0KICAgICsjaWYgQ09ORklHX0xJQkNM
SUNLX01BSU4NCiAgICArI2RlZmluZSBDTElDS19NQUlOIG1haW4NCiAgICArI2Vsc2UNCiAgICAr
I2RlZmluZSBDTElDS19NQUlOIGNsaWNrX21haW4NCiAgICArZXh0ZXJuICJDIiBpbnQgY2xpY2tf
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KICAgICsjZW5kaWYNCiAgICAgDQogICAgIC8q
IHJ1bnMgdGhlIGV2ZW50IGxvb3AgKi8NCiAgICAtaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph
cmd2KQ0KICAgICtpbnQgQ0xJQ0tfTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogICAgIHsN
CiAgICAtCXNpemVfdCBsZW4gPSBzaXplb2Yoc3RydWN0IHhlbnN0b3JlX2Rldik7DQogICAgKwlz
dHJ1Y3QgdWtfdGhyZWFkICpyb3V0ZXI7DQogICAgIA0KICAgICAJY2xpY2tfc3RhdGljX2luaXRp
YWxpemUoKTsNCiAgICAgCWVycmggPSBFcnJvckhhbmRsZXI6OmRlZmF1bHRfaGFuZGxlcigpOw0K
ICAgICANCiAgICAtCXhzZGV2ID0gKHN0cnVjdCB4ZW5zdG9yZV9kZXYqKSBtYWxsb2MobGVuKTsN
CiAgICAtCW1lbXNldCh4c2RldiwgMCwgbGVuKTsNCiAgICAgCW1lbXNldChyb3V0ZXJfbGlzdCwg
MCwgTUFYX1JPVVRFUlMgKiBzaXplb2Yoc3RydWN0IHJvdXRlcl9pbnN0YW5jZSkpOw0KICAgICAJ
Zm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfUk9VVEVSUzsgKytpKSB7DQogICAgIAkJcm91dGVyX2xp
c3RbaV0uZl9zdG9wID0gMTsNCiAgICAgCX0NCiAgICAgDQogICAgLQl4ZW5idXNfd2F0Y2hfcGF0
aF90b2tlbihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giLA0KICAgIC0JCQkmeHNk
ZXYtPmV2ZW50cyk7DQogICAgLQ0KICAgICsjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExF
TUVOVEVEDQogICAgKy8qIFRPRE86IFRoaXMgaW50ZXJhY3Rpb24gYmV0d2VlbiB4ZW5idXMgYW5k
IGNsaWNrIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGENCiAgICArICogZ2VuZXJpYyB1bmlrcmFm
dCBpbnRlcmFjdGlvbiBzY2hlbWUsIGZvciBleGFtcGxlLCB2aWEgYSBjb25zb2xlLg0KICAgICsg
Ki8NCiAgICAgCXdoaWxlICghX3NodXRkb3duKSB7DQogICAgIAkJU3RyaW5nIHZhbHVlOw0KICAg
ICAJCWNoYXIgKmVyciwgKnZhbCwgKipwYXRoOw0KICAgIEBAIC0zNDAsMTcgKzM0MSwxOCBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogICAgIA0KICAgICAJCW9uX3JvdXRlcigo
KnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7DQogICAgIAl9DQogICAgLQ0KICAgICsj
ZWxzZQ0KICAgICsJcm91dGVyID0gdWtfdGhyZWFkX2NyZWF0ZSgiY2xpY2stcm91dGVyIiwgcm91
dGVyX3RocmVhZCwgMCk7DQogICAgKwl1a190aHJlYWRfd2FpdChyb3V0ZXIpOw0KICAgICsjZW5k
aWYNCiAgICAgCUxPRygiU2h1dHRpbmcgZG93bi4uLiIpOw0KICAgIC0JeGVuYnVzX3Vud2F0Y2hf
cGF0aF90b2tlbihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giKTsNCiAgICAtDQog
ICAgLQlmaW5pX3hlbmJ1cygpOw0KICAgIC0JZnJlZSh4c2Rldik7DQogICAgIA0KICAgICAJcmV0
dXJuIF9yZWFzb247DQogICAgIH0NCiAgICAgDQogICAgIC8qIGFwcCBzaHV0ZG93biBob29rIGZy
b20gbWluaW9zICovDQogICAgKy8qIFRPRE86IGNvdWxkIGJlIHJldXNlZCBhcyBjYWxsLWluIGZy
b20gdW5pa3JhZnQgKi8NCiAgICArI2lmIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRF
RA0KICAgICBleHRlcm4gIkMiIHsNCiAgICAgaW50IGFwcF9zaHV0ZG93bih1bnNpZ25lZCByZWFz
b24pDQogICAgIHsNCiAgICBAQCAtMzYwLDE0ICszNjIsMTIgQEAgaW50IGFwcF9zaHV0ZG93bih1
bnNpZ25lZCByZWFzb24pDQogICAgIAkJX3NodXRkb3duID0gMTsNCiAgICAgCQlfcmVhc29uID0g
cmVhc29uOw0KICAgICAJCXJvdXRlcl9zdG9wKCk7DQogICAgLQkJeGVuYnVzX3JlbGVhc2Vfd2Fp
dF9mb3Jfd2F0Y2goJnhzZGV2LT5ldmVudHMpOw0KICAgICAJCWJyZWFrOw0KICAgICAJY2FzZSBT
SFVURE9XTl9yZWJvb3Q6DQogICAgIAkJTE9HKCJSZXF1ZXN0ZWQgc2h1dGRvd24gcmVhc29uPXJl
Ym9vdCIpOw0KICAgICAJCV9zaHV0ZG93biA9IDE7DQogICAgIAkJX3JlYXNvbiA9IHJlYXNvbjsN
CiAgICAgCQlyb3V0ZXJfc3RvcCgpOw0KICAgIC0JCXhlbmJ1c19yZWxlYXNlX3dhaXRfZm9yX3dh
dGNoKCZ4c2Rldi0+ZXZlbnRzKTsNCiAgICAgCQlicmVhazsNCiAgICAgCWNhc2UgU0hVVERPV05f
c3VzcGVuZDoNCiAgICAgCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249c3VzcGVuZCIp
Ow0KICAgIEBAIC0zODIsMyArMzgyLDQgQEAgaW50IGFwcF9zaHV0ZG93bih1bnNpZ25lZCByZWFz
b24pDQogICAgIAlyZXR1cm4gMDsNCiAgICAgfQ0KICAgICB9DQogICAgKyNlbmRpZiAvKiBDTElD
S19DT05TT0xFX1NVUFBPUlRfSU1QTEVNRU5URUQgKi8NCiAgICAtLSANCiAgICAyLjIxLjANCiAg
ICANCiAgICANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:07:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:07: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 1hYA6N-0003Xq-Qv; Tue, 04 Jun 2019 14:07:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYA6M-0003Xl-U1
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:07:46 +0000
X-Inumbo-ID: 1f512fe9-86d2-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1f512fe9-86d2-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:07:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 88F3C105281;
 Tue,  4 Jun 2019 16:07:43 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id joJwQYVWqRzU; Tue,  4 Jun 2019 16:07:43 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5925F105277
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:07:43 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:07:43 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 04/11] Initial public release: click
 config-userlevel.h
Thread-Index: AQHVGQd5+BbUKH/hZECwHjKMAW1RzaaLi7EA
Date: Tue, 4 Jun 2019 14:07:42 +0000
Message-ID: <F7ECD546-E0FB-429C-B5B1-2C7F7BC6B112@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-5-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-5-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <B2AB5880586BF94D923F91E1DC0C3BFF@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 04/11] Initial public
 release: click config-userlevel.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFdlIHVzZSB1c2VybGV2ZWwgbW9kZSBmb3Ig
b3VyIHVuaWtyYWZ0IGNsaWNrIHBvcnQuIFRoaXMgY29uZmlnIHNldHMNCiAgICBvcHRpb25zIGFj
Y29yZGluZyB0byB3aGljaCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGluIHVuaWtyYWZ0Lg0KICAg
IA0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5l
Y2xhYi5ldT4NCiAgICAtLS0NCiAgICAgaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVsLmgg
fCAzNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KICAgICAxIGZpbGUgY2hhbmdl
ZCwgMzQ4IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY2xp
Y2svY29uZmlnLXVzZXJsZXZlbC5oDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2xp
Y2svY29uZmlnLXVzZXJsZXZlbC5oIGIvaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVsLmgN
CiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjIyNTQ4YmMNCiAg
ICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVs
LmgNCiAgICBAQCAtMCwwICsxLDM0OCBAQA0KICAgICsvKiBpbmNsdWRlL2NsaWNrL2NvbmZpZy11
c2VybGV2ZWwuaC4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZy11c2VybGV2ZWwuaC5pbiBieSBjb25m
aWd1cmUuICAqLw0KICAgICsvKiBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGNvbmZpZ3VyZSB0byBw
cm9kdWNlIGNvbmZpZy11c2VybGV2ZWwuaC4gLSotIG1vZGU6IGMgLSotICovDQogICAgKyNpZm5k
ZWYgQ0xJQ0tfQ09ORklHX1VTRVJMRVZFTF9IDQogICAgKyNkZWZpbmUgQ0xJQ0tfQ09ORklHX1VT
RVJMRVZFTF9IDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9fdGhyZWFk
IHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVyLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfX19USFJFQURf
U1RPUkFHRV9DTEFTUyAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgYWNjZXB0KCkgdXNlcyBz
b2NrbGVuX3QuICovDQogICAgKyNkZWZpbmUgSEFWRV9BQ0NFUFRfU09DS0xFTl9UIDENCiAgICAr
DQogICAgKy8qIERlZmluZSBpZiBrcXVldWUoKSBtYXkgYmUgdXNlZCB0byB3YWl0IGZvciBmaWxl
IGRlc2NyaXB0b3IgZXZlbnRzLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfQUxMT1dfS1FVRVVFIDAN
CiAgICArDQogICAgKy8qIERlZmluZSBpZiBwb2xsKCkgbWF5IGJlIHVzZWQgdG8gd2FpdCBmb3Ig
ZmlsZSBkZXNjcmlwdG9yIGV2ZW50cy4gKi8NCiAgICArI2RlZmluZSBIQVZFX0FMTE9XX1BPTEwg
MQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHNlbGVjdCgpIG1heSBiZSB1c2VkIHRvIHdhaXQg
Zm9yIGZpbGUgZGVzY3JpcHRvciBldmVudHMuICovDQogICAgKyNkZWZpbmUgSEFWRV9BTExPV19T
RUxFQ1QgMQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIDxwY2FwLmg+IHVzZXMgYnBmX3RpbWV2
YWwuICovDQogICAgKy8qICN1bmRlZiBIQVZFX0JQRl9USU1FVkFMICovDQogICAgKw0KICAgICsv
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxieXRlc3dhcC5oPiBoZWFkZXIgZmlsZS4gKi8NCiAg
ICArI2RlZmluZSBIQVZFX0JZVEVTV0FQX0ggMQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSBjbG9ja19nZXR0aW1lIGZ1bmN0aW9uLiAqLw0KICAgICsjZGVmaW5lIEhBVkVf
Q0xPQ0tfR0VUVElNRSAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgZGVjbGFyYXRpb24NCiAgICArICAgb2YgJ2Nsb2NrX2dldHRpbWUnLCBhbmQgdG8gMCBpZiB5
b3UgZG9uJ3QuICovDQogICAgKyNkZWZpbmUgSEFWRV9ERUNMX0NMT0NLX0dFVFRJTUUgMQ0KICAg
ICsNCiAgICArLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uDQogICAg
KyAgIG9mICdtYWR2aXNlJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LiAqLw0KICAgICsjZGVmaW5l
IEhBVkVfREVDTF9NQURWSVNFIDANCiAgICArDQogICAgKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBkZWNsYXJhdGlvbg0KICAgICsgICBvZiAncGNhcF9zZXRub25ibG9jaycsIGFuZCB0
byAwIGlmIHlvdSBkb24ndC4gKi8NCiAgICArI2RlZmluZSBIQVZFX0RFQ0xfUENBUF9TRVROT05C
TE9DSyAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBo
ZWFkZXIgZmlsZS4gKi8NCiAgICArLyogI3VuZGVmIEhBVkVfRExGQ05fSCAqLw0KICAgICsNCiAg
ICArLyogRGVmaW5lIGlmIGR5bmFtaWMgbGlua2luZyBpcyBwb3NzaWJsZS4gKi8NCiAgICArLyog
I3VuZGVmIEhBVkVfRFlOQU1JQ19MSU5LSU5HICovDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIDxleGVjaW5mby5oPiBoZWFkZXIgZmlsZS4gKi8NCiAgICArLyogI3VuZGVm
IEhBVkVfRVhFQ0lORk9fSCAqLw0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSBmZnMgZnVuY3Rpb24uICovDQogICAgKyNkZWZpbmUgSEFWRV9GRlMgMQ0KICAgICsNCiAgICAr
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmZnNsIGZ1bmN0aW9uLiAqLw0KICAgICsjZGVmaW5l
IEhBVkVfRkZTTCAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZmc2xs
IGZ1bmN0aW9uLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfRkZTTEwgMQ0KICAgICsNCiAgICArLyog
RmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBpcyBhbGxvd2VkLiAqLw0KICAgICsjZGVmaW5lIEhB
VkVfRkxPQVRfVFlQRVMgMQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8
Z3JwLmg+IGhlYWRlciBmaWxlLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfR1JQX0ggMQ0KICAgICsN
CiAgICArLyogRGVmaW5lIGlmIHRoZSBsYXN0IGFyZ3VtZW50IHRvIEVWX1NFVCBoYXMgcG9pbnRl
ciB0eXBlLiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9FVl9TRVRfVURBVEFfUE9JTlRFUiAqLw0K
ICAgICsNCiAgICArLyogRGVmaW5lIGlmICdzdHJ1Y3QgaWZfZGF0YScgaGFzIGFuICdpZmlfZGF0
YWxlbicgbWVtYmVyLiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9JRl9EQVRBX0lGSV9EQVRBTEVO
ICovDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxpZmFkZHJzLmg+IGhl
YWRlciBmaWxlLiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9JRkFERFJTX0ggKi8NCiAgICArDQog
ICAgKy8qIERlZmluZSBpZiAnaW50NjRfdCcgaXMgdHlwZWRlZmVkIHRvICdsb25nJyBhdCB1c2Vy
IGxldmVsLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfSU5UNjRfSVNfTE9OR19VU0VSTEVWRUwgMQ0K
ICAgICsNCiAgICArLyogRGVmaW5lIGlmICdpbnQ2NF90JyBpcyB0eXBlZGVmZWQgdG8gJ2xvbmcg
bG9uZycgYXQgdXNlciBsZXZlbC4gKi8NCiAgICArLyogI3VuZGVmIEhBVkVfSU5UNjRfSVNfTE9O
R19MT05HX1VTRVJMRVZFTCAqLw0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovDQogICAgKyNkZWZpbmUgSEFWRV9JTlRUWVBF
U19IIDENCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUga3F1ZXVlIGZ1bmN0
aW9uLiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9LUVVFVUUgKi8NCiAgICArDQogICAgKy8qIERl
ZmluZSBpZiB5b3VyIEMgbGlicmFyeSBjb250YWlucyBsYXJnZSBmaWxlIHN1cHBvcnQuICovDQog
ICAgKyNkZWZpbmUgSEFWRV9MQVJHRV9GSUxFX1NVUFBPUlQgMQ0KICAgICsNCiAgICArLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvaWZfdHVuLmg+IGhlYWRlciBmaWxlLiAqLw0KICAg
ICsvKiAjdW5kZWYgSEFWRV9MSU5VWF9JRl9UVU5fSCAqLw0KICAgICsNCiAgICArLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBtYWR2aXNlIGZ1bmN0aW9uLiAqLw0KICAgICsjZGVmaW5lIEhBVkVf
TUFEVklTRSAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIG1tYXAgZnVu
Y3Rpb24uICovDQogICAgKyNkZWZpbmUgSEFWRV9NTUFQIDENCiAgICArDQogICAgKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9icGYuaD4gaGVhZGVyIGZpbGUuICovDQogICAgKy8qICN1
bmRlZiBIQVZFX05FVF9CUEZfSCAqLw0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSA8bmV0L2lmX2RsLmg+IGhlYWRlciBmaWxlLiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9O
RVRfSUZfRExfSCAqLw0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bmV0
L2lmX3RhcC5oPiBoZWFkZXIgZmlsZS4gKi8NCiAgICArLyogI3VuZGVmIEhBVkVfTkVUX0lGX1RB
UF9IICovDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXQvaWZfdHVu
Lmg+IGhlYWRlciBmaWxlLiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9ORVRfSUZfVFVOX0ggKi8N
CiAgICArDQogICAgKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl90eXBlcy5oPiBo
ZWFkZXIgZmlsZS4gKi8NCiAgICArLyogI3VuZGVmIEhBVkVfTkVUX0lGX1RZUEVTX0ggKi8NCiAg
ICArDQogICAgKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGRiLmg+IGhlYWRlciBmaWxl
LiAqLw0KICAgICsvKiAjdW5kZWYgSEFWRV9ORVREQl9IICovDQogICAgKw0KICAgICsvKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIDxuZXQvbmV0bWFwLmg+IGhlYWRlciBmaWxlLiAqLw0KICAgICsv
KiAjdW5kZWYgSEFWRV9ORVRfTkVUTUFQX0ggKi8NCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgPG5ldHBhY2tldC9wYWNrZXQuaD4gaGVhZGVyIGZpbGUuICovDQogICAgKy8q
ICN1bmZlZCBIQVZFX05FVFBBQ0tFVF9QQUNLRVRfSCAqLw0KICAgICsNCiAgICArLyogRGVmaW5l
IGlmIDxuZXcuaD4gZXhpc3RzIGFuZCB3b3Jrcy4gKi8NCiAgICArLyogI3VuZGVmIEhBVkVfTkVX
X0ggKi8NCiAgICArDQogICAgKy8qIERlZmluZSBpZiA8bmV3PiBleGlzdHMgYW5kIHdvcmtzLiAq
Lw0KICAgICsvKiAjdW5kZWYgSEFWRV9ORVdfSERSIDEgKi8NCiAgICArDQogICAgKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSAtbHBjYXAgYW5kIHBjYXAuaC4gKi8NCiAgICArI2RlZmluZSBIQVZFX1BD
QVAgMQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwY2FwX2luamVjdCBm
dW5jdGlvbi4gKi8NCiAgICArI2RlZmluZSBIQVZFX1BDQVBfSU5KRUNUIDENCiAgICArDQogICAg
Ky8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcGNhcF9zZW5kcGFja2V0IGZ1bmN0aW9uLiAqLw0K
ICAgICsjZGVmaW5lIEhBVkVfUENBUF9TRU5EUEFDS0VUIDENCiAgICArDQogICAgKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgcGNhcF9zZXRkaXJlY3Rpb24gZnVuY3Rpb24uICovDQogICAgKyNk
ZWZpbmUgSEFWRV9QQ0FQX1NFVERJUkVDVElPTiAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIHBjYXBfc2V0bm9uYmxvY2sgZnVuY3Rpb24uICovDQogICAgKyNkZWZpbmUg
SEFWRV9QQ0FQX1NFVE5PTkJMT0NLIDENCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgcGNhcF9zZXRfaW1tZWRpYXRlX21vZGUgZnVuY3Rpb24uICovDQogICAgKyNkZWZpbmUg
SEFWRV9QQ0FQX1NFVF9JTU1FRElBVEVfTU9ERSAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYg
eW91IGhhdmUgLWxwcm9wZXIgYW5kIHByb3AuaCwgYW5kIHByb3BlciBvcGVyYXRpb25zIHNob3Vs
ZCBiZQ0KICAgICsgICBwcmVmZXJyZWQgdG8gdGhlaXIgbm9uLXByb3BlciBjb3VudGVycGFydHMu
ICovDQogICAgKy8qICN1bmRlZiBIQVZFX1BST1BFUiAqLw0KICAgICsNCiAgICArLyogRGVmaW5l
IGlmIHlvdSBoYXZlIGEgbm9uLWVtdWxhdGVkIDxwb2xsLmg+IGhlYWRlciBmaWxlLiAqLw0KICAg
ICsvKiAjdW5kZWYgSEFWRV9QT0xMX0ggKi8NCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgcHNlbGVjdCBmdW5jdGlvbi4gKi8NCiAgICArI2RlZmluZSBIQVZFX1BTRUxFQ1Qg
MQ0KICAgICsNCiAgICArLyogUGxhY2VtZW50IG5ldyBpcyBhbHdheXMgcHJvdmlkZWQgYmVsb3cu
ICovDQogICAgKyNkZWZpbmUgSEFWRV9QTEFDRU1FTlRfTkVXIDENCiAgICArDQogICAgKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbg0KICAgICsgICBvZiAncHRocmVh
ZF9zZXRhZmZpbml0eV9ucCcsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8NCiAgICArLyogI3Vu
ZGVmIEhBVkVfREVDTF9QVEhSRUFEX1NFVEFGRklOSVRZX05QICovDQogICAgKw0KICAgICsvKiBE
ZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxwd2QuaD4gaGVhZGVyIGZpbGUuICovDQogICAgKyNkZWZp
bmUgSEFWRV9QV0RfSCAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHJh
bmRvbSBmdW5jdGlvbi4gKi8NCiAgICArI2RlZmluZSBIQVZFX1JBTkRPTSAxDQogICAgKw0KICAg
ICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBmdW5jdGlvbi4gKi8NCiAgICAr
LyogI3VuZGVmIEhBVkVfU0lHQUNUSU9OICovDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91
IGhhdmUgdGhlIHNucHJpbnRmIGZ1bmN0aW9uLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfU05QUklO
VEYgMQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmICdzdHJ1Y3Qgc29ja2FkZHJfaW4nIGhhcyBh
ICdzaW5fbGVuJyBtZW1iZXIuICovDQogICAgKy8qICN1bmRlZiBIQVZFX1NPQ0tBRERSX0lOX1NJ
Tl9MRU4gKi8NCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RyZXJyb3Ig
ZnVuY3Rpb24uICovDQogICAgKyNkZWZpbmUgSEFWRV9TVFJFUlJPUiAxDQogICAgKw0KICAgICsv
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLw0KICAg
ICsjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDENCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgc3RybmxlbiBmdW5jdGlvbi4gKi8NCiAgICArI2RlZmluZSBIQVZFX1NUUk5MRU4g
MQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2YgZnVuY3Rpb24u
ICovDQogICAgKyNkZWZpbmUgSEFWRV9TVFJUT0YgMQ0KICAgICsNCiAgICArLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSBzdHJ0b2xkIGZ1bmN0aW9uLiAqLw0KICAgICsjZGVmaW5lIEhBVkVfU1RS
VE9MRCAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnRvdWwgZnVu
Y3Rpb24uICovDQogICAgKyNkZWZpbmUgSEFWRV9TVFJUT1VMIDENCiAgICArDQogICAgKy8qIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9ldmVudC5oPiBoZWFkZXIgZmlsZS4gKi8NCiAgICAr
LyogI3VuZGVmIEhBVkVfU1lTX0VWRU5UX0ggKi8NCiAgICArDQogICAgKy8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+IGhlYWRlciBmaWxlLiAqLw0KICAgICsjZGVmaW5lIEhB
VkVfU1lTX01NQU5fSCAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRj
Z2V0cGdycCBmdW5jdGlvbi4gKi8NCiAgICArI2RlZmluZSBIQVZFX1RDR0VUUEdSUCAxDQogICAg
Kw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx0ZXJtaW8uaD4gaGVhZGVyIGZpbGUu
ICovDQogICAgKyNkZWZpbmUgSEFWRV9URVJNSU9fSCAxDQogICAgKw0KICAgICsvKiBEZWZpbmUg
aWYgeW91IGhhdmUgdV9pbnRYWF90IHR5cGVzIGJ1dCBub3QgdWludFhYX3QgdHlwZXMuICovDQog
ICAgKy8qICN1bmRlZiBIQVZFX1VfSU5UX1RZUEVTICovDQogICAgKw0KICAgICsvKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovDQogICAgKyNkZWZpbmUg
SEFWRV9VTklTVERfSCAxDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgYSBDbGljayB1c2VyLWxl
dmVsIGRyaXZlciBtaWdodCBydW4gbXVsdGlwbGUgdGhyZWFkcy4gKi8NCiAgICArLyogI3VuZGVm
IEhBVkVfVVNFUl9NVUxUSVRIUkVBRCAqLw0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIGEgQ2xp
Y2sgdXNlci1sZXZlbCBkcml2ZXIgdXNlcyBJbnRlbCBEUERLLiAqLw0KICAgICsvKiAjdW5kZWYg
SEFWRV9EUERLICovDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgQ2xpY2sgc2hvdWxkIHVzZSBW
YWxncmluZCBjbGllbnQgcmVxdWVzdHMuICovDQogICAgKy8qICN1bmRlZiBIQVZFX1ZBTEdSSU5E
ICovDQogICAgKw0KICAgICsvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx2YWxncmluZC9tZW1j
aGVjay5oPiBoZWFkZXIgZmlsZS4gKi8NCiAgICArLyogI3VuZGVmIEhBVkVfVkFMR1JJTkRfTUVN
Q0hFQ0tfSCAqLw0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB2c25wcmlu
dGYgZnVuY3Rpb24uICovDQogICAgKyNkZWZpbmUgSEFWRV9WU05QUklOVEYgMQ0KICAgICsNCiAg
ICArLyogVGhlIHNpemUgb2YgYSBgY2xpY2tfamlmZmllc190JywgYXMgY29tcHV0ZWQgYnkgc2l6
ZW9mLiAqLw0KICAgICsjZGVmaW5lIFNJWkVPRl9DTElDS19KSUZGSUVTX1QgU0laRU9GX0lOVA0K
ICAgICsNCiAgICArLyogVGhlIHNpemUgb2YgYSBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXpl
b2YuICovDQogICAgKyNkZWZpbmUgU0laRU9GX09GRl9UIDgNCiAgICArDQogICAgKw0KICAgICsv
KiBTZXQgZmVhdHVyZSB0ZXN0IG1hY3JvcyBiZWZvcmUgYW55dGhpbmcgaXMgaW5jbHVkZWQuICov
DQogICAgKyNpZiBIQVZFX0xBUkdFX0ZJTEVfU1VQUE9SVCAmJiBIQVZFX0lOVDY0X1RZUEVTDQog
ICAgKyMgaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMg
IT0gNjQNCiAgICArIyAgZXJyb3IgImJhZCBfRklMRV9PRkZTRVRfQklUUywgZGlkIHlvdSAjaW5j
bHVkZSA8Y2xpY2svY29uZmlnLmg+IGZpcnN0PyINCiAgICArIyBlbmRpZg0KICAgICsjIGRlZmlu
ZSBfTEFSR0VGSUxFX1NPVVJDRSAxDQogICAgKyMgZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0
DQogICAgKyNlbmRpZg0KICAgICsjaWZkZWYgX19BUFBMRV9fDQogICAgKyMgZGVmaW5lIF9EQVJX
SU5fVU5MSU1JVEVEX1NFTEVDVCAxDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLyogSW5jbHVk
ZSBpbnRlZ2VyIHR5cGUgZGVmaW5pdGlvbnMuICovDQogICAgKyNpZmRlZiBIQVZFX0lOVFRZUEVT
X0gNCiAgICArIyBpbmNsdWRlIDxpbnR0eXBlcy5oPg0KICAgICsjZW5kaWYNCiAgICArI2luY2x1
ZGUgPHN5cy90eXBlcy5oPg0KICAgICsNCiAgICArLyogRGVmaW5lIHVpbnQgdHlwZXMgaW4gdGVy
bXMgb2YgdV9pbnQgdHlwZXMsIGlmIG5lY2Vzc2FyeS4gKi8NCiAgICArI2lmZGVmIEhBVkVfVV9J
TlRfVFlQRVMNCiAgICArdHlwZWRlZiB1X2ludDhfdCB1aW50OF90Ow0KICAgICt0eXBlZGVmIHVf
aW50MTZfdCB1aW50MTZfdDsNCiAgICArdHlwZWRlZiB1X2ludDMyX3QgdWludDMyX3Q7DQogICAg
KyMgaWZkZWYgSEFWRV9JTlQ2NF9UWVBFUw0KICAgICt0eXBlZGVmIHVfaW50NjRfdCB1aW50NjRf
dDsNCiAgICArIyBlbmRpZg0KICAgICt0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CQkvKiBYWFg/ICov
DQogICAgK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7DQogICAgKyNlbmRpZg0KICAg
ICsNCiAgICArLyogRGVmaW5lIEhBVkVfSU5UNjRfSVNfTE9ORyBiYXNlZCBvbiBIQVZFX0lOVDY0
X0lTX0xPTkdfVVNFUkxFVkVMLiAqLw0KICAgICsjaWZkZWYgSEFWRV9JTlQ2NF9JU19MT05HX1VT
RVJMRVZFTA0KICAgICsjIGRlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkcgSEFWRV9JTlQ2NF9JU19M
T05HX1VTRVJMRVZFTA0KICAgICsjZW5kaWYNCiAgICArDQogICAgKy8qIERlZmluZSBIQVZFX0lO
VDY0X0lTX0xPTkdfTE9ORyBiYXNlZCBvbiBIQVZFX0lOVDY0X0lTX0xPTkdfTE9OR19VU0VSTEVW
RUwuICovDQogICAgKyNpZmRlZiBIQVZFX0lOVDY0X0lTX0xPTkdfTE9OR19VU0VSTEVWRUwNCiAg
ICArIyBkZWZpbmUgSEFWRV9JTlQ2NF9JU19MT05HX0xPTkcgSEFWRV9JTlQ2NF9JU19MT05HX0xP
TkdfVVNFUkxFVkVMDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLyogSWYgNjQtYml0IGludGVn
ZXJzIGV4aXN0LCB0aGVuIDY0LWJpdCBkaXZpZGUgZXhpc3RzLiAqLw0KICAgICsjaWZkZWYgSEFW
RV9JTlQ2NF9UWVBFUw0KICAgICsjIGRlZmluZSBIQVZFX0lOVDY0X0RJVklERSAxDQogICAgKyNl
bmRpZg0KICAgICsNCiAgICArLyogRGVmaW5lIEhBVkVfTVVMVElUSFJFQUQgYmFzZWQgb24gSEFW
RV9VU0VSX01VTFRJVEhSRUFELiAqLw0KICAgICsjaWZkZWYgSEFWRV9VU0VSX01VTFRJVEhSRUFE
DQogICAgKyMgZGVmaW5lIEhBVkVfTVVMVElUSFJFQUQgSEFWRV9VU0VSX01VTFRJVEhSRUFEDQog
ICAgKyNlbmRpZg0KICAgICsNCiAgICArLyogRGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUg
aWYgdGhlIGNsb2NrX2dldHRpbWUgZnVuY3Rpb24gaXMgdXNhYmxlLiAqLw0KICAgICsjaWZuZGVm
IEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUNCiAgICArIyBpZiBIQVZFX0RFQ0xfQ0xPQ0tfR0VUVElN
RSAmJiBIQVZFX0NMT0NLX0dFVFRJTUUNCiAgICArIyAgZGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dF
VFRJTUUgMQ0KICAgICsjIGVuZGlmDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLyogSW5jbHVk
ZSBhc3NlcnQgbWFjcm8uICovDQogICAgKyNpbmNsdWRlIDxhc3NlcnQuaD4NCiAgICArDQogICAg
Ky8qIERlZmluZSBsaWtlbHkgYW5kIHVubGlrZWx5IG1hY3Jvcy4gKi8NCiAgICArI2lmIF9fR05V
Q19fID49IDMNCiAgICArIyBkZWZpbmUgbGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCks
IDEpDQogICAgKyMgZGVmaW5lIHVubGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCksIDAp
DQogICAgKyNlbHNlDQogICAgKyMgZGVmaW5lIGxpa2VseSh4KQkoeCkNCiAgICArIyBkZWZpbmUg
dW5saWtlbHkoeCkJKHgpDQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLyogRGVmaW5lIGlmIG1t
YXAgaXMgYWxsb3dlZC4gKi8NCiAgICArI2lmIGRlZmluZWQoSEFWRV9TWVNfTU1BTl9IKSAmJiBk
ZWZpbmVkKEhBVkVfTU1BUCkNCiAgICArIyBkZWZpbmUgQUxMT1dfTU1BUCAxDQogICAgKyNlbmRp
Zg0KICAgICsNCiAgICArLyogUHJvdG90eXBlIHN0cmVycm9yIGlmIHdlIGRvbid0IGhhdmUgaXQu
ICovDQogICAgKyNpZm5kZWYgSEFWRV9TVFJFUlJPUg0KICAgICtjaGFyICpzdHJlcnJvcihpbnQg
ZXJybm8pOw0KICAgICsjZW5kaWYNCiAgICArDQogICAgKy8qIFVzZSBuYW5vc2Vjb25kLWdyYW51
bGFyaXR5IHRpbWVzdGFtcHMgaWYgdGhleSBhcmUgZW5hYmxlZC4gKi8NCiAgICArI2lmIEhBVkVf
TkFOT1RJTUVTVEFNUF9FTkFCTEVEDQogICAgKyMgZGVmaW5lIFRJTUVTVEFNUF9OQU5PU0VDIDEN
CiAgICArIyBkZWZpbmUgSEFWRV9OQU5PVElNRVNUQU1QIDEJLyogRGVwcmVjYXRlZCAqLw0KICAg
ICsjZW5kaWYNCiAgICArDQogICAgKyNpZmRlZiBfX2NwbHVzcGx1cw0KICAgICsNCiAgICArLyog
UHJvdmlkZSBwbGFjZW1lbnQgbmV3LiAqLw0KICAgICsjaWYgSEFWRV9ORVdfSERSDQogICAgKyMg
aW5jbHVkZSA8bmV3Pg0KICAgICsjZWxpZiBIQVZFX05FV19IDQogICAgKyMgaW5jbHVkZSA8bmV3
Lmg+DQogICAgKyNlbHNlDQogICAgK2lubGluZSB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90LCB2
b2lkICp2KSB7IHJldHVybiB2OyB9DQogICAgKyNlbmRpZg0KICAgICsNCiAgICArLyogUHJvdG90
eXBlIG1hZHZpc2UgaWYgd2UgaGF2ZSBpdCwgYnV0IG5vdCB0aGUgcHJvdG90eXBlLiAqLw0KICAg
ICsjaWYgQUxMT1dfTU1BUCAmJiBIQVZFX01BRFZJU0UgJiYgIUhBVkVfREVDTF9NQURWSVNFDQog
ICAgK2V4dGVybiAiQyIgaW50IG1hZHZpc2Uodm9pZCAqYWRkciwgc2l6ZV90IGxlbiwgaW50IGJl
aGF2KTsNCiAgICArI2VuZGlmDQogICAgKw0KICAgICsvKiBEZWZpbmUgbWFjcm9zIHRoYXQgc3Vy
cm91bmQgQ2xpY2sgZGVjbGFyYXRpb25zLiAqLw0KICAgICsjaWZuZGVmIENMSUNLX0RFQ0xTDQog
ICAgKyMgZGVmaW5lIENMSUNLX0RFQ0xTCQkvKiAqLw0KICAgICsjIGRlZmluZSBDTElDS19FTkRE
RUNMUwkJLyogKi8NCiAgICArIyBkZWZpbmUgQ0xJQ0tfVVNJTkdfREVDTFMJLyogKi8NCiAgICAr
IyBkZWZpbmUgQ0xJQ0tfTkFNRShuYW1lKQk6Om5hbWUNCiAgICArI2VuZGlmDQogICAgKw0KICAg
ICsjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCiAgICArDQogICAgKyNlbmRpZiAvKiBDTElDS19D
T05GSUdfVVNFUkxFVkVMX0ggKi8NCiAgICAtLSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0K
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:09:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:09: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 1hYA7u-0003Za-1M; Tue, 04 Jun 2019 14:09:22 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYA7s-0003ZV-PG
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:09:20 +0000
X-Inumbo-ID: 5783d1ab-86d2-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5783d1ab-86d2-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:09:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C7D51F2072;
 Tue,  4 Jun 2019 16:09:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gw8xnVgXPYpv; Tue,  4 Jun 2019 16:09:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8FCE9F2034
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:09:15 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:09:15 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 06/11] Initial public release:
 FromDevice and ToDevice
Thread-Index: AQHVGQd7htpYaE3X7UeuM2Eep2UsCqaLjB4A
Date: Tue, 4 Jun 2019 14:09:15 +0000
Message-ID: <C07D19DB-CD9C-4C2D-91CF-E4A1300A42A8@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-7-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-7-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <102F1BA8F5E04349AB7F5C51CAAB8515@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 06/11] Initial public
 release: FromDevice and ToDevice
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFRoZSByb3VnaCBjb25jZXB0IGlzIHRha2Vu
IGZyb20ga29obGVyL2NsaWNrL2VsZW1lbnRzL21pbmlvcywgYnV0IGlzDQogICAgdGhlbiBhZGFw
dGVkIHRvIHVzZSB1bmlrcmFmdCBpbnN0ZWFkIG9mIE1pbmktT1MuDQogICAgDQogICAgU2lnbmVk
LW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pg0KICAg
IC0tLQ0KICAgICB1bmlrcmFmdC9mcm9tZGV2aWNlLmNjIHwgMjAzICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrDQogICAgIHVuaWtyYWZ0L2Zyb21kZXZpY2UuaGggfCAg
NzkgKysrKysrKysrKysrKysrKw0KICAgICB1bmlrcmFmdC90b2RldmljZS5jYyAgIHwgMTMxICsr
KysrKysrKysrKysrKysrKysrKysrKysrDQogICAgIHVuaWtyYWZ0L3RvZGV2aWNlLmhoICAgfCAg
NzYgKysrKysrKysrKysrKysrDQogICAgIDQgZmlsZXMgY2hhbmdlZCwgNDg5IGluc2VydGlvbnMo
KykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVuaWtyYWZ0L2Zyb21kZXZpY2UuY2MNCiAgICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IHVuaWtyYWZ0L2Zyb21kZXZpY2UuaGgNCiAgICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IHVuaWtyYWZ0L3RvZGV2aWNlLmNjDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB1
bmlrcmFmdC90b2RldmljZS5oaA0KICAgIA0KICAgIGRpZmYgLS1naXQgYS91bmlrcmFmdC9mcm9t
ZGV2aWNlLmNjIGIvdW5pa3JhZnQvZnJvbWRldmljZS5jYw0KICAgIG5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQogICAgaW5kZXggMDAwMDAwMC4uZDUwZmY0Zg0KICAgIC0tLSAvZGV2L251bGwNCiAgICAr
KysgYi91bmlrcmFmdC9mcm9tZGV2aWNlLmNjDQogICAgQEAgLTAsMCArMSwyMDMgQEANCiAgICAr
LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLw0KICAgICsvKg0KICAg
ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5F
QyBDb3Jwb3JhdGlvbi4NCiAgICArICogICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVk
Lg0KICAgICsgKg0KICAgICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAgICArICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgKyAq
IGFyZSBtZXQ6DQogICAgKyAqDQogICAgKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogICAgKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAg
ICArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICAgICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLg0KICAgICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9s
ZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzDQogICAgKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQogICAgKyAq
ICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uDQogICAgKyAqDQogICAgKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAgICsgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFDQogICAgKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQogICAgKyAqIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUNCiAgICArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KICAgICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KICAgICsgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MNCiAgICArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCiAgICArICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkNCiAgICArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCiAgICArICogUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuDQogICAgKyAqDQogICAgKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQogICAgKyAqLw0KICAgICsNCiAgICArI2lu
Y2x1ZGUgImZyb21kZXZpY2UuaGgiDQogICAgKw0KICAgICsjaW5jbHVkZSA8Y2xpY2svYXJncy5o
aD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL2RlcXVlLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2sv
ZXJyb3IuaGg+DQogICAgKyNpbmNsdWRlIDxjbGljay9zdGFuZGFyZC9zY2hlZHVsZWluZm8uaGg+
DQogICAgKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPg0KICAgICsjaW5jbHVkZSA8dWsvbmV0ZGV2
Lmg+DQogICAgKw0KICAgICsjaWZkZWYgeG1pdA0KICAgICsjdW5kZWYgeG1pdA0KICAgICsjZW5k
aWYNCiAgICArI2lmZGVmIHJlY3YNCiAgICArI3VuZGVmIHJlY3YNCiAgICArI2VuZGlmDQogICAg
Kw0KICAgICsjaW5jbHVkZSA8dWsvYWxsb2MuaD4NCiAgICArI2luY2x1ZGUgPHVrL25ldGRldi5o
Pg0KICAgICsNCiAgICArQ0xJQ0tfREVDTFMNCiAgICArDQogICAgKyNkZWZpbmUgREVTQ19DT1VO
VCAweDEwMA0KICAgICsjZGVmaW5lIEJVRlNJWkUgMjA0OA0KICAgICsNCiAgICArRnJvbURldmlj
ZTo6RnJvbURldmljZSgpDQogICAgKwk6IF90YXNrKHRoaXMpDQogICAgK3sNCiAgICArfQ0KICAg
ICsNCiAgICArRnJvbURldmljZTo6fkZyb21EZXZpY2UoKQ0KICAgICt7DQogICAgK30NCiAgICAr
DQogICAgK2ludA0KICAgICtGcm9tRGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNv
bmYsIEVycm9ySGFuZGxlciAqZXJyaCkNCiAgICArew0KICAgICsJX2RldmlkID0gMDsNCiAgICAr
DQogICAgKwl1a19wcl9pbmZvKCJGcm9tRGV2aWNlOjpjb25maWd1cmUgJXBcbiIsIHRoaXMpOw0K
ICAgICsJaWYgKEFyZ3MoY29uZiwgdGhpcywgZXJyaCkNCiAgICArCQkJLnJlYWRfcCgiREVWSUQi
LCBJbnRBcmcoKSwgX2RldmlkKQ0KICAgICsJCQkuY29tcGxldGUoKSA8IDApDQogICAgKwkJcmV0
dXJuIC0xOw0KICAgICsNCiAgICArCWlmIChfZGV2aWQgPCAwKQ0KICAgICsJCXJldHVybiBlcnJo
LT5lcnJvcigiRGV2aWNlIElEIG11c3QgYmUgPj0gMCIpOw0KICAgICsNCiAgICArCV9kZXYgPSB1
a19uZXRkZXZfZ2V0KCh1bnNpZ25lZCBpbnQpIF9kZXZpZCk7DQogICAgKwlpZiAoIV9kZXYpDQog
ICAgKwkJcmV0dXJuIGVycmgtPmVycm9yKCJObyBzdWNoIGRldmljZSAlZCIsIF9kZXZpZCk7DQog
ICAgKwl1a19uZXRkZXZfaW5mb19nZXQoX2RldiwgJl9kZXZfaW5mbyk7DQogICAgKw0KICAgICsJ
cmV0dXJuIDA7DQogICAgK30NCiAgICArDQogICAgK2V4dGVybiAiQyIgdm9pZA0KICAgICtjbGlj
a19mcm9tZGV2aWNlX3J4X2NhbGxiYWNrKHN0cnVjdCB1a19uZXRkZXYgKmRldiBfX3VudXNlZCwg
Lyogd2UgaGF2ZSBhbGwNCiAgICArCQkJCXRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIHZpYSB0aGUg
Y29va2llICovDQogICAgKwkJdWludDE2X3QgcXVldWVfaWQsIHZvaWQgKmNvb2tpZSkNCiAgICAr
ew0KICAgICsJRnJvbURldmljZSAqZnJvbWRldmljZSA9IChGcm9tRGV2aWNlICopY29va2llOw0K
ICAgICsNCiAgICArCXVrX3ByX2RlYnVnKCJGcm9tRGV2aWNlICVwIHF1ZXVlICV1IGNhbGxiYWNr
XG4iLCBjb29raWUsIHF1ZXVlX2lkKTsNCiAgICArCWZyb21kZXZpY2UtPnRha2VfcGFja2V0cygp
Ow0KICAgICt9DQogICAgKw0KICAgICt1aW50MTZfdA0KICAgICtGcm9tRGV2aWNlOjpuZXRkZXZf
YWxsb2Nfcnhwa3RzKHZvaWQgKmFyZ3AsIHN0cnVjdCB1a19uZXRidWYgKnBrdHNbXSwNCiAgICAr
CQl1aW50MTZfdCBjb3VudCkNCiAgICArew0KICAgICsJaW50IGk7DQogICAgKw0KICAgICsJRnJv
bURldmljZSAqZmQgPSBzdGF0aWNfY2FzdDxGcm9tRGV2aWNlICo+KGFyZ3ApOw0KICAgICsJZm9y
IChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsNCiAgICArCQlwa3RzW2ldID0gdWtfbmV0YnVmX2Fs
bG9jX2J1Zih1a19hbGxvY19nZXRfZGVmYXVsdCgpLA0KICAgICsJCQkJQlVGU0laRSwgZmQtPl9k
ZXZfaW5mby5uYl9lbmNhcF9yeCwgMCwgTlVMTCk7DQogICAgKwkJaWYgKCFwa3RzW2ldKQ0KICAg
ICsJCQlyZXR1cm4gaTsNCiAgICArCQlwa3RzW2ldLT5sZW4gPSBCVUZTSVpFOw0KICAgICsJfQ0K
ICAgICsJcmV0dXJuIGNvdW50Ow0KICAgICt9DQogICAgKw0KICAgICtpbnQNCiAgICArRnJvbURl
dmljZTo6aW5pdGlhbGl6ZShFcnJvckhhbmRsZXIgKmVycmgpDQogICAgK3sNCiAgICArCXN0cnVj
dCB1a19uZXRkZXZfaW5mbyBkaW5mOw0KICAgICsJc3RydWN0IHVrX25ldGRldl9yeHF1ZXVlX2Nv
bmYgcnhfY29uZjsNCiAgICArCXN0cnVjdCB1a19uZXRkZXZfdHhxdWV1ZV9jb25mIHR4X2NvbmY7
DQogICAgKwlpbnQgcmM7DQogICAgKw0KICAgICsJdWtfcHJfaW5mbygiRnJvbURldmljZTo6aW5p
dGlhbGl6ZSAlcCBkZXZpY2UgJXAgc3RhdGUgJWRcbiIsDQogICAgKwkJCXRoaXMsIF9kZXYsIF9k
ZXYtPl9kYXRhLT5zdGF0ZSk7DQogICAgKwl1a19uZXRkZXZfaW5mb19nZXQoX2RldiwgJmRpbmYp
Ow0KICAgICsJcnhfY29uZi5zID0gdWtfc2NoZWRfZ2V0X2RlZmF1bHQoKTsNCiAgICArCXJ4X2Nv
bmYuYSA9IHVrX2FsbG9jX2dldF9kZWZhdWx0KCk7DQogICAgKwlyeF9jb25mLmNhbGxiYWNrID0g
Y2xpY2tfZnJvbWRldmljZV9yeF9jYWxsYmFjazsNCiAgICArCXJ4X2NvbmYuY2FsbGJhY2tfY29v
a2llID0gKHZvaWQgKikodGhpcyk7DQogICAgKwlyeF9jb25mLmFsbG9jX3J4cGt0cyA9ICZGcm9t
RGV2aWNlOjpuZXRkZXZfYWxsb2Nfcnhwa3RzOw0KICAgICsJcnhfY29uZi5hbGxvY19yeHBrdHNf
YXJncCA9IHRoaXM7DQogICAgKwlpZiAodWtfbmV0ZGV2X3J4cV9jb25maWd1cmUoX2RldiwgMCwg
REVTQ19DT1VOVCwgJnJ4X2NvbmYpKQ0KICAgICsJCXJldHVybiBlcnJoLT5lcnJvcigiRmFpbGVk
IHRvIHNldCB1cCBSWCBxdWV1ZSBmb3IgZGV2aWNlICVkIiwgX2RldmlkKTsNCiAgICArCXR4X2Nv
bmYuYSA9IHVrX2FsbG9jX2dldF9kZWZhdWx0KCk7DQogICAgKwlpZiAodWtfbmV0ZGV2X3R4cV9j
b25maWd1cmUoX2RldiwgMCwgREVTQ19DT1VOVCwgJnR4X2NvbmYpKQ0KICAgICsJCXJldHVybiBl
cnJoLT5lcnJvcigiRmFpbGVkIHRvIHNldCB1cCBUWCBxdWV1ZSBmb3IgZGV2aWNlICVkIiwgX2Rl
dmlkKTsNCiAgICArCWlmICh1a19uZXRkZXZfc3RhcnQoX2RldikpDQogICAgKwkJcmV0dXJuIGVy
cmgtPmVycm9yKCJGYWlsZWQgdG8gc3RhcnQgZGV2aWNlICVkIiwgX2RldmlkKTsNCiAgICArCXJj
ID0gdWtfbmV0ZGV2X3J4cV9pbnRyX2VuYWJsZShfZGV2LCAwKTsNCiAgICArCQlpZiAocmMgPCAw
KQ0KICAgICsJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAgUlggcXVldWUg
aW50ZXJydXB0IGZvciBkZXZpY2UgJWQiLCBfZGV2aWQpOw0KICAgICsJCWVsc2UgaWYgKHJjID4g
MCkNCiAgICArCQkJdGFrZV9wYWNrZXRzKCk7IC8vIGVtcHR5IHRoZSBxdWV1ZSB0byBlbmFibGUg
aW50ZXJydXB0DQogICAgKwlTY2hlZHVsZUluZm86OmluaXRpYWxpemVfdGFzayh0aGlzLCAmX3Rh
c2ssIGVycmgpOw0KICAgICsJX3Rhc2sucmVzY2hlZHVsZSgpOw0KICAgICsJcmV0dXJuIDA7DQog
ICAgKw0KICAgICt9DQogICAgKw0KICAgICt2b2lkDQogICAgK0Zyb21EZXZpY2U6OmNsZWFudXAo
Q2xlYW51cFN0YWdlIHN0YWdlKQ0KICAgICt7DQogICAgKwlpZiAoc3RhZ2UgPj0gQ0xFQU5VUF9J
TklUSUFMSVpFRCkgew0KICAgICsJCXVrX25ldGRldl9yeHFfaW50cl9kaXNhYmxlKF9kZXYsIDAp
Ow0KICAgICsJfQ0KICAgICt9DQogICAgKw0KICAgICt2b2lkDQogICAgK0Zyb21EZXZpY2U6OnRh
a2VfcGFja2V0cygpDQogICAgK3sNCiAgICArCWludCByZXQ7DQogICAgKwlpbnQgaSA9IDA7DQog
ICAgKwlzdHJ1Y3QgdWtfbmV0YnVmICpidWYgPSBOVUxMOw0KICAgICsJUGFja2V0ICpwOw0KICAg
ICsNCiAgICArCWRvIHsNCiAgICArCQlyZXQgPSB1a19uZXRkZXZfcnhfb25lKF9kZXYsIDAsICZi
dWYpOw0KICAgICsJCWlmIChyZXQgPCAwKQ0KICAgICsJCQlVS19DUkFTSCgiZXJyb3IgcmVjZWl2
aW5nIHBhY2tldHMgaW4gRnJvbURldmljZSIpOw0KICAgICsJCWlmICh1a19uZXRkZXZfc3RhdHVz
X25vdHJlYWR5KHJldCkpIHsNCiAgICArCQkJLyogTm8gKG1vcmUpIHBhY2tldHMgcmVjZWl2ZWQg
Ki8NCiAgICArCQkJYnJlYWs7DQogICAgKwkJfQ0KICAgICsNCiAgICArCQkrK2k7DQogICAgKwkJ
cCA9IFBhY2tldDo6bWFrZSgwLCBidWYtPmRhdGEsIGJ1Zi0+bGVuLCAwKTsNCiAgICArCQlwLT5z
ZXRfdGltZXN0YW1wX2Fubm8oVGltZXN0YW1wOjpub3coKSk7DQogICAgKwkJb3V0cHV0KDApLnB1
c2gocCk7IC8qIG1lbWNweSdzIHBrdCAqLw0KICAgICsJCXVrX25ldGJ1Zl9mcmVlKGJ1Zik7DQog
ICAgKwl9IHdoaWxlICh1a19uZXRkZXZfc3RhdHVzX21vcmUocmV0KSk7DQogICAgKwlpZiAoaSkN
CiAgICArCQl1a19wcl9kZWJ1ZygidG9vayAlZCBwYWNrZXRzIGZyb20gdGhlIHF1ZXVlXG4iLCBp
KTsNCiAgICArfQ0KICAgICsNCiAgICArYm9vbA0KICAgICtGcm9tRGV2aWNlOjpydW5fdGFzayhU
YXNrICopDQogICAgK3sNCiAgICArCS8qIGlmIHlvdSdyZSByZWFsbHkgZGVzcGVyYXRlIGZvciBs
ZXNzIENQVSB1c2FnZQ0KICAgICsJICogdW50aWwgd2UgaGF2ZSBhIHByb3BlciBibG9ja2luZyBz
ZWxlY3QoKS4uLg0KICAgICsJc3RydWN0IHRpbWVzcGVjIHJlcTsNCiAgICArCXJlcS50dl9zZWMg
PSAwOw0KICAgICsJcmVxLnR2X25zZWMgPSAxMDAwMDAwOw0KICAgICsJbmFub3NsZWVwKCZyZXEs
IE5VTEwpOw0KICAgICsJKi8NCiAgICArCXVrX3NjaGVkX3lpZWxkKCk7DQogICAgKwlfdGFzay5y
ZXNjaGVkdWxlKCk7DQogICAgKwlyZXR1cm4gZmFsc2U7DQogICAgK30NCiAgICArDQogICAgK0NM
SUNLX0VORERFQ0xTDQogICAgK0VYUE9SVF9FTEVNRU5UKEZyb21EZXZpY2UpDQogICAgZGlmZiAt
LWdpdCBhL3VuaWtyYWZ0L2Zyb21kZXZpY2UuaGggYi91bmlrcmFmdC9mcm9tZGV2aWNlLmhoDQog
ICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi44ZDYyYTk1DQogICAg
LS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL3VuaWtyYWZ0L2Zyb21kZXZpY2UuaGgNCiAgICBAQCAt
MCwwICsxLDc5IEBADQogICAgKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1
c2UgKi8NCiAgICArLyoNCiAgICArICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uDQogICAgKyAqICAgICAgICAgICAgICAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICArICoNCiAgICArICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogICAgKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KICAgICsgKiBhcmUgbWV0Og0KICAgICsgKg0KICAgICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0K
ICAgICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuDQogICAgKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQogICAgKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUNCiAgICArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAgICArICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cw0KICAgICsgKiAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQ0KICAgICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICAgICsgKg0KICAgICsgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyINCiAgICArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAgICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0K
ICAgICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCiAgICArICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YNCiAgICArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogICAgKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
DQogICAgKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogICAg
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAgICsgKg0KICAgICsgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KICAgICsg
Ki8NCiAgICArDQogICAgKyNpZm5kZWYgQ0xJQ0tfRlJPTURFVklDRV9ISA0KICAgICsjZGVmaW5l
IENMSUNLX0ZST01ERVZJQ0VfSEgNCiAgICArDQogICAgKyNpbmNsdWRlIDxjbGljay9jb25maWcu
aD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL2RlcXVlLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2sv
ZWxlbWVudC5oaD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL2Vycm9yLmhoPg0KICAgICsjaW5jbHVk
ZSA8Y2xpY2svdGFzay5oaD4NCiAgICArDQogICAgKyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4NCiAg
ICArDQogICAgK0NMSUNLX0RFQ0xTDQogICAgKw0KICAgICtleHRlcm4gIkMiIHsNCiAgICArICAg
IHN0cnVjdCB1a19uZXRkZXY7DQogICAgK30NCiAgICArDQogICAgK2NsYXNzIEZyb21EZXZpY2Ug
OiBwdWJsaWMgRWxlbWVudCB7DQogICAgK3B1YmxpYzoNCiAgICArICAgIEZyb21EZXZpY2UoKTsN
CiAgICArICAgIH5Gcm9tRGV2aWNlKCk7DQogICAgKw0KICAgICsgICAgY29uc3QgY2hhciAqY2xh
c3NfbmFtZSgpIGNvbnN0IHsgcmV0dXJuICJGcm9tRGV2aWNlIjsgfQ0KICAgICsgICAgY29uc3Qg
Y2hhciAqcG9ydF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuICIwLzEiOyB9DQogICAgKyAgICBjb25z
dCBjaGFyICpwcm9jZXNzaW5nKCkgY29uc3QgeyByZXR1cm4gIi9oIjsgfQ0KICAgICsgICAgaW50
IGNvbmZpZ3VyZV9waGFzZSgpIGNvbnN0IHsgcmV0dXJuIENPTkZJR1VSRV9QSEFTRV9GSVJTVDsg
fQ0KICAgICsNCiAgICArICAgIGludCBjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJiwgRXJyb3JI
YW5kbGVyICopOw0KICAgICsgICAgaW50IGluaXRpYWxpemUoRXJyb3JIYW5kbGVyICopOw0KICAg
ICsgICAgdm9pZCBjbGVhbnVwKENsZWFudXBTdGFnZSk7DQogICAgKw0KICAgICsgICAgYm9vbCBy
dW5fdGFzayhUYXNrICopOw0KICAgICsgICAgdm9pZCB0YWtlX3BhY2tldHMoKTsNCiAgICArDQog
ICAgK3ByaXZhdGU6DQogICAgKyAgICBzdGF0aWMgdWludDE2X3QgbmV0ZGV2X2FsbG9jX3J4cGt0
cyh2b2lkICphcmdwLCBzdHJ1Y3QgdWtfbmV0YnVmICpwa3RzW10sIHVpbnQxNl90IGNvdW50KTsN
CiAgICArDQogICAgKyAgICBUYXNrIF90YXNrOw0KICAgICsgICAgRGVxdWU8UGFja2V0Kj4gX2Rl
cXVlOw0KICAgICsgICAgaW50IF9kZXZpZDsNCiAgICArICAgIHN0cnVjdCB1a19uZXRkZXYgKl9k
ZXY7DQogICAgKyAgICBzdHJ1Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOw0KICAgICt9Ow0K
ICAgICsNCiAgICArQ0xJQ0tfRU5EREVDTFMNCiAgICArI2VuZGlmDQogICAgZGlmZiAtLWdpdCBh
L3VuaWtyYWZ0L3RvZGV2aWNlLmNjIGIvdW5pa3JhZnQvdG9kZXZpY2UuY2MNCiAgICBuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmY1ZDc1MGQNCiAgICAtLS0gL2Rldi9u
dWxsDQogICAgKysrIGIvdW5pa3JhZnQvdG9kZXZpY2UuY2MNCiAgICBAQCAtMCwwICsxLDEzMSBA
QA0KICAgICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQogICAg
Ky8qDQogICAgKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUg
R21iSCwgTkVDIENvcnBvcmF0aW9uLg0KICAgICsgKiAgICAgICAgICAgICAgIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQogICAgKyAqDQogICAgKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICAgICsgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMN
CiAgICArICogYXJlIG1ldDoNCiAgICArICoNCiAgICArICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLg0KICAgICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICAgICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uDQogICAgKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHly
aWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAgICArICogICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20N
CiAgICArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4NCiAgICArICoNCiAgICArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogICAgKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUNCiAgICArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCiAgICArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQ0KICAgICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAgKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQog
ICAgKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KICAgICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KICAgICsgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQ0KICAgICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KICAgICsgKiBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4NCiAgICArICoNCiAgICArICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCiAgICArICovDQogICAgKw0K
ICAgICsjaW5jbHVkZSAidG9kZXZpY2UuaGgiDQogICAgKw0KICAgICsjaW5jbHVkZSA8Y2xpY2sv
YXJncy5oaD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL2Vycm9yLmhoPg0KICAgICsjaW5jbHVkZSA8
Y2xpY2svcm91dGVyLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2svc3RhbmRhcmQvc2NoZWR1bGVp
bmZvLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2svdGFzay5oaD4NCiAgICArI2luY2x1ZGUgPHN0
ZGlvLmg+DQogICAgKw0KICAgICsjaWZkZWYgeG1pdA0KICAgICsjdW5kZWYgeG1pdA0KICAgICsj
ZW5kaWYNCiAgICArI2lmZGVmIHJlY3YNCiAgICArI3VuZGVmIHJlY3YNCiAgICArI2VuZGlmDQog
ICAgKw0KICAgICsjaW5jbHVkZSA8dWsvYWxsb2MuaD4NCiAgICArI2luY2x1ZGUgPHVrL25ldGRl
di5oPg0KICAgICsNCiAgICArQ0xJQ0tfREVDTFMNCiAgICArDQogICAgK1RvRGV2aWNlOjpUb0Rl
dmljZSgpDQogICAgKwk6IF90YXNrKHRoaXMpDQogICAgK3sNCiAgICArfQ0KICAgICsNCiAgICAr
VG9EZXZpY2U6On5Ub0RldmljZSgpDQogICAgK3sNCiAgICArfQ0KICAgICsNCiAgICAraW50DQog
ICAgK1RvRGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYsIEVycm9ySGFuZGxl
ciAqZXJyaCkNCiAgICArew0KICAgICsJX2RldmlkID0gMDsNCiAgICArDQogICAgKwl1a19wcl9p
bmZvKCJUb0RldmljZTo6Y29uZmlndXJlICVwXG4iLCB0aGlzKTsNCiAgICArCWlmIChBcmdzKGNv
bmYsIHRoaXMsIGVycmgpDQogICAgKwkJCS5yZWFkX3AoIkRFVklEIiwgSW50QXJnKCksIF9kZXZp
ZCkNCiAgICArCQkJLmNvbXBsZXRlKCkgPCAwKQ0KICAgICsJCXJldHVybiAtMTsNCiAgICArDQog
ICAgKwlpZiAoX2RldmlkIDwgMCkNCiAgICArCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkRldmljZSBJ
RCBtdXN0IGJlID49IDAiKTsNCiAgICArDQogICAgKwlfZGV2ID0gdWtfbmV0ZGV2X2dldCgodW5z
aWduZWQgaW50KSBfZGV2aWQpOw0KICAgICsJaWYgKCFfZGV2KQ0KICAgICsJCXJldHVybiBlcnJo
LT5lcnJvcigiTm8gc3VjaCBkZXZpY2UgJWQiLCBfZGV2aWQpOw0KICAgICsJdWtfbmV0ZGV2X2lu
Zm9fZ2V0KF9kZXYsICZfZGV2X2luZm8pOw0KICAgICsNCiAgICArCXJldHVybiAwOw0KICAgICt9
DQogICAgKw0KICAgICtpbnQNCiAgICArVG9EZXZpY2U6OmluaXRpYWxpemUoRXJyb3JIYW5kbGVy
ICplcnJoIF9fdW51c2VkKQ0KICAgICt7DQogICAgKwkvKiB1ayBuZXRkZXYgaXMgaW5pdGlhbGl6
ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZSAqLw0KICAgICsJcmV0dXJuIDA7DQog
ICAgK30NCiAgICArDQogICAgK3ZvaWQNCiAgICArVG9EZXZpY2U6OmNsZWFudXAoQ2xlYW51cFN0
YWdlIHN0YWdlIF9fdW51c2VkKQ0KICAgICt7DQogICAgKwkvKiBhbnkgcG90ZW50aWFsbHkgbmVj
ZXNzYXJ5IHVrIG5ldGRldiBjbGVhbnVwIGlzIGRvbmUgaW4gdGhlDQogICAgKwkgKiBjb3JyZXNw
b25kaW5nIEZyb21EZXZpY2UNCiAgICArCSAqLw0KICAgICt9DQogICAgKw0KICAgICt2b2lkDQog
ICAgK1RvRGV2aWNlOjpwdXNoKGludCBwb3J0LCBQYWNrZXQgKnApDQogICAgK3sNCiAgICArCWlu
dCByZXQ7DQogICAgKwlzdHJ1Y3QgdWtfbmV0YnVmICpidWY7DQogICAgKw0KICAgICsJdWtfcHJf
ZGVidWcoInB1c2goKSBwYWNrZXQgJXAgKGxlbiAldSkgLT4gJWRcbiIsIHAsIHAtPmxlbmd0aCgp
LCBwb3J0KTsNCiAgICArCWJ1ZiA9IHVrX25ldGJ1Zl9hbGxvY19idWYodWtfYWxsb2NfZ2V0X2Rl
ZmF1bHQoKSwNCiAgICArCQkJcC0+bGVuZ3RoKCkrX2Rldl9pbmZvLm5iX2VuY2FwX3J4LA0KICAg
ICsJCQlfZGV2X2luZm8ubmJfZW5jYXBfcngsIDAsIE5VTEwpOw0KICAgICsJaWYgKCFidWYpIHsN
CiAgICArCQl1a19wcl9jcml0KCJGYWlsZWQgdG8gYWxsb2NhdGUgbmV0YnVmIGZvciBzZW5kaW5n
Iik7DQogICAgKwkJcmV0dXJuOw0KICAgICsJfQ0KICAgICsJbWVtY3B5KGJ1Zi0+ZGF0YSwgcC0+
ZGF0YSgpLCBwLT5sZW5ndGgoKSk7DQogICAgKwlidWYtPmxlbiA9IHAtPmxlbmd0aCgpOw0KICAg
ICsJZG8gew0KICAgICsJCXJldCA9IHVrX25ldGRldl90eF9vbmUoX2RldiwgMCwgYnVmKTsNCiAg
ICArCX0gd2hpbGUgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSk7DQogICAgKwljaGVj
a2VkX291dHB1dF9wdXNoKHBvcnQsIHApOw0KICAgICt9DQogICAgKw0KICAgICtib29sDQogICAg
K1RvRGV2aWNlOjpydW5fdGFzayhUYXNrICopDQogICAgK3sNCiAgICArCS8qIG5vIHJlZ3VsYXIg
dGFzayBzY2hlZHVsaW5nIG5lZWRlZCwgYWxsIHdvcmsgaXMgZG9uZSBpbiBwdXNoICgpICovDQog
ICAgKwlyZXR1cm4gZmFsc2U7DQogICAgK30NCiAgICArDQogICAgK0NMSUNLX0VORERFQ0xTDQog
ICAgK0VYUE9SVF9FTEVNRU5UKFRvRGV2aWNlKQ0KICAgIGRpZmYgLS1naXQgYS91bmlrcmFmdC90
b2RldmljZS5oaCBiL3VuaWtyYWZ0L3RvZGV2aWNlLmhoDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2
NDQNCiAgICBpbmRleCAwMDAwMDAwLi4zOGVmN2JiDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsr
KyBiL3VuaWtyYWZ0L3RvZGV2aWNlLmhoDQogICAgQEAgLTAsMCArMSw3NiBAQA0KICAgICsvKiBT
UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQogICAgKy8qDQogICAgKyAq
IENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENv
cnBvcmF0aW9uLg0KICAgICsgKiAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQog
ICAgKyAqDQogICAgKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICAgICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAgICArICogYXJl
IG1ldDoNCiAgICArICoNCiAgICArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgICsg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodA0KICAgICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uDQogICAgKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIg
bm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAgICArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICArICogICAg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4N
CiAgICArICoNCiAgICArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogICAgKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUNCiAgICArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCiAgICArICogQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RQ0KICAgICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAgKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQogICAgKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUw0KICAgICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KICAgICsgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQ0KICAgICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KICAgICsgKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4NCiAgICArICoNCiAgICArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNU
RUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCiAgICArICovDQogICAgKw0KICAgICsjaWZuZGVm
IENMSUNLX1RPREVWSUNFX0hIDQogICAgKyNkZWZpbmUgQ0xJQ0tfVE9ERVZJQ0VfSEgNCiAgICAr
DQogICAgKyNpbmNsdWRlIDxjbGljay9jb25maWcuaD4NCiAgICArI2luY2x1ZGUgPGNsaWNrL2Vs
ZW1lbnQuaGg+DQogICAgKyNpbmNsdWRlIDxjbGljay9lcnJvci5oaD4NCiAgICArI2luY2x1ZGUg
PGNsaWNrL3Rhc2suaGg+DQogICAgKw0KICAgICsjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+DQogICAg
Kw0KICAgICtDTElDS19ERUNMUw0KICAgICsNCiAgICArZXh0ZXJuICJDIiB7DQogICAgKyAgICBz
dHJ1Y3QgdWtfbmV0ZGV2Ow0KICAgICt9DQogICAgKw0KICAgICtjbGFzcyBUb0RldmljZSA6IHB1
YmxpYyBFbGVtZW50IHsNCiAgICArcHVibGljOg0KICAgICsgICAgVG9EZXZpY2UoKTsNCiAgICAr
ICAgIH5Ub0RldmljZSgpOw0KICAgICsNCiAgICArICAgIGNvbnN0IGNoYXIgKmNsYXNzX25hbWUo
KSBjb25zdCB7IHJldHVybiAiVG9EZXZpY2UiOyB9DQogICAgKyAgICBjb25zdCBjaGFyICpwb3J0
X2NvdW50KCkgY29uc3QgeyByZXR1cm4gIjEvMC0xIjsgfQ0KICAgICsgICAgY29uc3QgY2hhciAq
cHJvY2Vzc2luZygpIGNvbnN0IHsgcmV0dXJuICJhL2giOyB9DQogICAgKyAgICBpbnQgY29uZmln
dXJlX3BoYXNlKCkgY29uc3QgeyByZXR1cm4gQ09ORklHVVJFX1BIQVNFX0ZJUlNUOyB9DQogICAg
Kw0KICAgICsgICAgaW50IGNvbmZpZ3VyZShWZWN0b3I8U3RyaW5nPiAmLCBFcnJvckhhbmRsZXIg
Kik7DQogICAgKyAgICBpbnQgaW5pdGlhbGl6ZShFcnJvckhhbmRsZXIgKik7DQogICAgKyAgICB2
b2lkIGNsZWFudXAoQ2xlYW51cFN0YWdlKTsNCiAgICArDQogICAgKyAgICBib29sIHJ1bl90YXNr
KFRhc2sgKik7DQogICAgKyAgICB2b2lkIHB1c2goaW50LCBQYWNrZXQgKnApOw0KICAgICsNCiAg
ICArcHJpdmF0ZToNCiAgICArICAgIFRhc2sgX3Rhc2s7DQogICAgKw0KICAgICsgICAgaW50IF9k
ZXZpZDsNCiAgICArICAgIHN0cnVjdCB1a19uZXRkZXYgKl9kZXY7DQogICAgKyAgICBzdHJ1Y3Qg
dWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOw0KICAgICt9Ow0KICAgICsNCiAgICArQ0xJQ0tfRU5E
REVDTFMNCiAgICArI2VuZGlmDQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:12:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:12: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 1hYAAj-0004IF-7t; Tue, 04 Jun 2019 14:12:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYAAi-0004IA-4a
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:12:16 +0000
X-Inumbo-ID: c05f8861-86d2-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c05f8861-86d2-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:12:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DEBEB105281;
 Tue,  4 Jun 2019 16:08:03 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HWr64pIJ29hU; Tue,  4 Jun 2019 16:08:03 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 88F33105277
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:08:03 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:08:03 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 05/11] Initial public release: stubs.cc
 for unfinished glue implementations
Thread-Index: AQHVGQd7LlX0NjD75UGHJYsLOrVQ16aLi8gA
Date: Tue, 4 Jun 2019 14:08:02 +0000
Message-ID: <93F0BE18-0A6D-4014-87C0-5976CEB96BF3@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-6-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-6-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <050D55578A7F8145BE8B2A5F7E7D3686@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 05/11] Initial public
 release: stubs.cc for unfinished glue implementations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2No
bWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4NCiAgICAtLS0NCiAgICAgTWFrZWZpbGUu
dWsgfCAgMSArDQogICAgIHN0dWJzLmNjICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrDQogICAgIDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKQ0KICAg
ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3R1YnMuY2MNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvTWFr
ZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KICAgIGluZGV4IGIyN2JiMTAuLjUwMzBmZmQgMTAwNjQ0
DQogICAgLS0tIGEvTWFrZWZpbGUudWsNCiAgICArKysgYi9NYWtlZmlsZS51aw0KICAgIEBAIC05
MCw2ICs5MCw3IEBAIExJQkNMSUNLX0NYWEZMQUdTLXkgKz0gJChMSUJDTElDS19TVVBQUkVTU19G
TEFHUykNCiAgICAgIyBVbmlrcmFmdCA8LT4gQ2xpY2sgZ2x1ZSBjb2RlDQogICAgICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjDQogICAgIExJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0JBU0Up
L2NsaWNrLmNjDQogICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0JBU0UpL3N0dWJz
LmNjDQogICAgIA0KICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAjIENsaWNrIHNv
dXJjZXMNCiAgICBkaWZmIC0tZ2l0IGEvc3R1YnMuY2MgYi9zdHVicy5jYw0KICAgIG5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uZmNjNzJkOA0KICAgIC0tLSAvZGV2L251
bGwNCiAgICArKysgYi9zdHVicy5jYw0KICAgIEBAIC0wLDAgKzEsMzYgQEANCiAgICArI2luY2x1
ZGUgPGVycm5vLmg+DQogICAgKyNpbmNsdWRlIDxjbGljay9jb25maWcuaD4NCiAgICArI2luY2x1
ZGUgPGNsaWNrL2Vycm9yLmhoPg0KICAgICsjaW5jbHVkZSA8Y2xpY2svc3RyaW5nLmhoPg0KICAg
ICsNCiAgICArLyogVW5pa3JhZnQgZG9lcyBub3Qgc3VwcG9ydCBmaWxlcyB5ZXQsIHRoaXMgZnVu
Y3Rpb24gaXMgdG8NCiAgICArICAgYmUgYWJsZSB0byByZWFkIENsaWNrIGNvbmZpZ3MgZnJvbSBm
aWxlcy4gKi8NCiAgICArU3RyaW5nIGZpbGVfc3RyaW5nKFN0cmluZyBzIF9fdW51c2VkLCBFcnJv
ckhhbmRsZXIgKmVycmgpDQogICAgK3sNCiAgICArCWVycmgtPmVycm9yKCJubyBzdXBwb3J0IGZv
ciBmaWxlcyB5ZXQhIik7DQogICAgKwlyZXR1cm4gU3RyaW5nKCk7DQogICAgK30NCiAgICArDQog
ICAgK1N0cmluZyBjbGlja3BhdGhfZmluZF9maWxlKGNvbnN0IFN0cmluZyAmZmlsZW5hbWUgX191
bnVzZWQsDQogICAgKwkJY29uc3QgY2hhciAqc3ViZGlyIF9fdW51c2VkLCBTdHJpbmcgZGVmYXVs
dF9wYXRoIF9fdW51c2VkLA0KICAgICsJCUVycm9ySGFuZGxlciAqZXJyaCkNCiAgICArew0KICAg
ICsJZXJyaC0+ZXJyb3IoIm5vIHN1cHBvcnQgZm9yIGZpbmRpbmcgZmlsZXMhIik7DQogICAgKwly
ZXR1cm4gU3RyaW5nKCk7DQogICAgK30NCiAgICArDQogICAgK3ZvaWQgY2xpY2tfc2lnbmFsKGlu
dCBzaWdudW0gX191bnVzZWQsIHZvaWQgKCpoYW5kbGVyKShpbnQpIF9fdW51c2VkLA0KICAgICsJ
CWJvb2wgcmVzZXRoYW5kIF9fdW51c2VkKQ0KICAgICt7DQogICAgK30NCiAgICArDQogICAgK2V4
dGVybiAiQyIgew0KICAgICtpbnQgZHVwKGludCBvbGRmZCk7IC8qIHdlIGRvbid0IGhhdmUgYSBo
ZWFkZXIgZmlsZSwgYnV0IHRoZSBzeW1ib2wgaXMgdGhlcmUgKi8NCiAgICArDQogICAgK2ludCBw
aXBlKGludCBwaXBlZmRbMl0pDQogICAgK3sNCiAgICArCXBpcGVmZFswXSA9IGR1cCgwKTsNCiAg
ICArCXBpcGVmZFsxXSA9IGR1cCgxKTsNCiAgICArCXJldHVybiAwOw0KICAgICt9DQogICAgK30g
LyogZXh0ZXJuICJDIiAqLw0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:14:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:14: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 1hYADE-0004LN-GQ; Tue, 04 Jun 2019 14:14:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYADD-0004LI-KW
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:14:51 +0000
X-Inumbo-ID: 1cdb3d03-86d3-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1cdb3d03-86d3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:14:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E364E105307;
 Tue,  4 Jun 2019 16:14:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RoV8Onx1R4Xu; Tue,  4 Jun 2019 16:14:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id BF0B31052C3
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:14:48 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:14:48 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 07/11] Initial public release: patches
 to make click build with unikraft
Thread-Index: AQHVGQd96PKilqqmV0aRN7D1f7tUCqaLjauA
Date: Tue, 4 Jun 2019 14:14:47 +0000
Message-ID: <BC816BFC-655E-4D30-A41F-3340AB797C75@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-8-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-8-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <85F71C87CBCAF049ADFA8184D5B04825@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 07/11] Initial public
 release: patches to make click build with unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2No
bWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4NCiAgICAtLS0NCiAgICAgcGF0Y2hlcy8w
MDAxLXVzZXJsZXZlbC1uZXctZGVsZXRlLWN4YS5wYXRjaCAgIHwgMjAgKysrKysrKysrKysNCiAg
ICAgLi4uLXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoIHwgMzUgKysr
KysrKysrKysrKysrKysrKw0KICAgICAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKykN
CiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0
ZS1jeGEucGF0Y2gNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMi1NYWtlLXN1
cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoDQogICAgDQogICAgZGlmZiAt
LWdpdCBhL3BhdGNoZXMvMDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2ggYi9wYXRj
aGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hhLnBhdGNoDQogICAgbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi5hZjljZGY0DQogICAgLS0tIC9kZXYvbnVsbA0K
ICAgICsrKyBiL3BhdGNoZXMvMDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2gNCiAg
ICBAQCAtMCwwICsxLDIwIEBADQogICAgKy0tLSBhL2xpYi9nbHVlLmNjLm9yaWcJMjAxOC0wMi0x
NCAxMToxMTozOC4zNjQwMjQ3MjkgKzAxMDANCiAgICArKysrIGIvbGliL2dsdWUuY2MJMjAxOC0w
Mi0xNCAxMTo0NDozMS44ODA5MDgwOTkgKzAxMDANCiAgICArQEAgLTE3OSw3ICsxNzksNyBAQA0K
ICAgICsgc2l6ZV90IGNsaWNrX2RtYWxsb2NfbWF4bWVtID0gMDsNCiAgICArICNlbmRpZg0KICAg
ICsgDQogICAgKy0jaWYgQ0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENM
SUNLX01JTklPUw0KICAgICsrI2lmIENMSUNLX0xJTlVYTU9EVUxFIHx8IENMSUNLX0JTRE1PRFVM
RSB8fCBDTElDS19NSU5JT1MgfHwgQ0xJQ0tfVVNFUkxFVkVMDQogICAgKyANCiAgICArICMgaWYg
Q0xJQ0tfTElOVVhNT0RVTEUNCiAgICArIHN0cnVjdCB0YXNrX3N0cnVjdCAqY2xpY2tmc190YXNr
Ow0KICAgICtAQCAtNzIxLDcgKzcyMSw3IEBADQogICAgKyANCiAgICArIC8vIE9USEVSDQogICAg
KyANCiAgICArLSNpZiBDTElDS19MSU5VWE1PRFVMRSB8fCBDTElDS19CU0RNT0RVTEUgfHwgQ0xJ
Q0tfTUlOSU9TDQogICAgKysjaWYgQ0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxF
IHx8IENMSUNLX01JTklPUyB8fCBDTElDS19VU0VSTEVWRUwNCiAgICArIA0KICAgICsgI2lmIENM
SUNLX0JTRE1PRFVMRQ0KICAgICsgDQogICAgZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDAwMi1NYWtl
LXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoIGIvcGF0Y2hlcy8wMDAy
LU1ha2Utc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2gNCiAgICBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmUxMWFmNTANCiAgICAtLS0gL2Rl
di9udWxsDQogICAgKysrIGIvcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4tUE9MTE9VVC1h
cmUtbm90LWRlZmluZWQucGF0Y2gNCiAgICBAQCAtMCwwICsxLDM1IEBADQogICAgK0Zyb20gYjlm
MDRmNmRkYzM4OGY2YTUwYTgyZTg4MzBlNDJiYWRiZmM0NzE3YiBNb24gU2VwIDE3IDAwOjAwOjAw
IDIwMDENCiAgICArRnJvbTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFi
LmV1Pg0KICAgICtEYXRlOiBXZWQsIDE3IEFwciAyMDE5IDExOjAzOjU1ICswMjAwDQogICAgK1N1
YmplY3Q6IFtQQVRDSF0gTWFrZSBzdXJlIFBPTExJTi9QT0xMT1VUIGFyZSBub3QgZGVmaW5lZA0K
ICAgICsNCiAgICArV2UgdXNlIHNlbGVjdCBpbnN0ZWFkIG9mIHBvbGwsIGJlY2F1c2UgbHdpcCBw
cm92aWRlcyBhIHNlbGVjdCB2aWEgaXRzDQogICAgK3NvY2tldCBBUEkuIEhvd2V2ZXIsIHRoYXQg
b25lIGFsc28gZGVmaW5lcyBhIGNvdXBsZSBvZiBQT0xMKiB2YWx1ZXMsDQogICAgK3doaWNoIGxl
YWQgdG8gYSBjb21waWxlciBlcnJvciBoZXJlIGJlY2F1c2UgeW91IGVuZCB1cCB3aXRoIGEgbGlu
ZSB0aGF0DQogICAgK3NheXMgImVudW0geyAweDEgPSBFbGVtZW50OjpTRUxFQ1RfUkVBRCIgZXRj
Lg0KICAgICsNCiAgICArU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNj
aG1pZHRAbmVjbGFiLmV1Pg0KICAgICstLS0NCiAgICArIGxpYi9zZWxlY3RzZXQuY2MgfCA2ICsr
KysrKw0KICAgICsgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQ0KICAgICsNCiAgICAr
ZGlmZiAtLWdpdCBhL2xpYi9zZWxlY3RzZXQuY2MgYi9saWIvc2VsZWN0c2V0LmNjDQogICAgK2lu
ZGV4IGFjNWNjYWU0OS4uNjQxYjYzZjkwIDEwMDY0NA0KICAgICstLS0gYS9saWIvc2VsZWN0c2V0
LmNjDQogICAgKysrKyBiL2xpYi9zZWxlY3RzZXQuY2MNCiAgICArQEAgLTM4LDYgKzM4LDEyIEBA
IENMSUNLX0RFQ0xTDQogICAgKyBuYW1lc3BhY2Ugew0KICAgICsgZW51bSB7IFNFTEVDVF9SRUFE
ID0gRWxlbWVudDo6U0VMRUNUX1JFQUQsIFNFTEVDVF9XUklURSA9IEVsZW1lbnQ6OlNFTEVDVF9X
UklURSB9Ow0KICAgICsgI2lmICFIQVZFX0FMTE9XX1BPTEwNCiAgICArKyNpZmRlZiBQT0xMSU4N
CiAgICArKyN1bmRlZiBQT0xMSU4NCiAgICArKyNlbmRpZg0KICAgICsrI2lmZGVmIFBPTExPVVQN
CiAgICArKyN1bmRlZiBQT0xMT1VUDQogICAgKysjZW5kaWYNCiAgICArIGVudW0geyBQT0xMSU4g
PSBFbGVtZW50OjpTRUxFQ1RfUkVBRCwgUE9MTE9VVCA9IEVsZW1lbnQ6OlNFTEVDVF9XUklURSB9
Ow0KICAgICsgI2VuZGlmDQogICAgKyB9DQogICAgKy0tIA0KICAgICsyLjIxLjANCiAgICArDQog
ICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:15:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:15: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 1hYADU-0004MD-Il; Tue, 04 Jun 2019 14:15:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYADT-0004M7-OM
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:15:07 +0000
X-Inumbo-ID: 26dd459e-86d3-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 26dd459e-86d3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:15:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BB802105309;
 Tue,  4 Jun 2019 16:15:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id biL-LrbbI6mJ; Tue,  4 Jun 2019 16:15:05 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9A45B105307
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:15:05 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:15:05 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 08/11] Initial public release: Add
 exportsyms.uk
Thread-Index: AQHVGQd+xXoBv+3Fv0eEA70w0MKePqaLjb8A
Date: Tue, 4 Jun 2019 14:15:04 +0000
Message-ID: <DAB594D6-B5B3-4A53-905F-233A68052C29@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-9-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-9-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <AF3BFE23D8139546ABFAB490A684A819@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 08/11] Initial public
 release: Add 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>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFRoaXMgaXMgYSBtaW5pbWFsIHNldCB0aGF0
IHNob3VsZCBhbGxvdyBzcGF3bmluZyBjbGljayBmcm9tIGFuIGV4dGVybmFsDQogICAgbWFpbiBm
dW5jdGlvbiBpbnN0ZWFkIG9mIHVzaW5nIGNsaWNrJ3MgaW50ZXJuYWwgbWFpbigpLg0KICAgIA0K
ICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldT4NCiAgICAtLS0NCiAgICAgZXhwb3J0c3ltcy51ayB8IDcgKysrKysrKw0KICAgICAxIGZp
bGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBv
cnRzeW1zLnVrDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRz
eW1zLnVrDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi5hYjQ1
ZDdiDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2V4cG9ydHN5bXMudWsNCiAgICBAQCAt
MCwwICsxLDcgQEANCiAgICArY2xpY2tfbWFpbg0KICAgICttYWluDQogICAgK2NsaWNrX3JlYWRf
cm91dGVyDQogICAgK2NsaWNrX3N0YXRpY19pbml0aWFsaXplDQogICAgK2NvbmZpZ3VyYXRvcl9z
dGFydA0KICAgICtjb25maWd1cmF0b3Jfc3RvcA0KICAgICtyb3V0ZXJfdGhyZWFkDQogICAgLS0g
DQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:16:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:16: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 1hYAEm-0004U1-NM; Tue, 04 Jun 2019 14:16: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=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYAEl-0004Tw-Cl
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:16:27 +0000
X-Inumbo-ID: 54dd9c32-86d3-11e9-89d9-a3f30c1c371d
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 54dd9c32-86d3-11e9-89d9-a3f30c1c371d;
 Tue, 04 Jun 2019 14:16:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E9522F2073;
 Tue,  4 Jun 2019 16:16:22 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id nVQuEmEzkgkD; Tue,  4 Jun 2019 16:16:22 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id BB53AF2072
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:16:20 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:16:20 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 09/11] support for loading click configs
Thread-Index: AQHVGQeEYDLeDvWeX0S+JA4Zawr9RqaLjhmA
Date: Tue, 4 Jun 2019 14:16:19 +0000
Message-ID: <0B426607-33BB-46CA-AC68-DF5EB8639356@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-10-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-10-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <A426ADA41963F64D95E31A0AF4506972@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 09/11] support for loading
 click configs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLiBJdCBtaWdodCBiZSBjbGVhcmVy
IGlmIHRoZSBjb21taXQgbWVzc2FnZSBzYWlkIHRoZSBpbml0cmQgZmlsZSBzaG91bGQgYmUgYSBw
bGFpbiB0ZXh0IGZpbGUgKHVubGlrZSBpbmNsdWRlL3N0YXRpY19jb25maWcuaCksIGJ1dCBJIGNh
biBmaXggdGhhdCBvbiB1cHN0cmVhbS4NCg0KVGhhbmtzLA0KDQotLSBGZWxpcGUNCg0KUmV2aWV3
ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0KDQrvu79PbiAw
Mi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNjaG1pZHRAbmVjbGFi
LmV1PiB3cm90ZToNCg0KICAgIFRoZSBleHBlY3RlZCB3YXkgaXMgdG8gcHJvdmlkZSBhIGNvbmZp
ZyBmaWxlIGFzIGluaXRyZC4gSWYgbm8gaW5pdHJkIGlzDQogICAgcHJvdmlkZWQsIGNsaWNrIHdp
bGwgZmFsbCBiYWNrIHRvIGEgc3RhdGljLCBjb21waWxlZC1pbiBjb25maWcgdGhhdA0KICAgIHJl
cGxpZXMgdG8gcGluZ3MuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0
IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pg0KICAgIC0tLQ0KICAgICBjbGljay5jYyAgICAg
ICAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCiAg
ICAgaW5jbHVkZS9zdGF0aWNfY29uZmlnLmggfCAyMiArKysrKysrKysrKysrKysrKysrKysrDQog
ICAgIDIgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkNCiAg
ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3RhdGljX2NvbmZpZy5oDQogICAgDQogICAg
ZGlmZiAtLWdpdCBhL2NsaWNrLmNjIGIvY2xpY2suY2MNCiAgICBpbmRleCBhM2JmYmE4Li44NWE5
MzhiIDEwMDY0NA0KICAgIC0tLSBhL2NsaWNrLmNjDQogICAgKysrIGIvY2xpY2suY2MNCiAgICBA
QCAtNTIsMTEgKzUyLDE0IEBAIGV4dGVybiAiQyJ7DQogICAgICNpbmNsdWRlIDxjbGljay9zdHJh
Y2N1bS5oaD4NCiAgICAgI2luY2x1ZGUgPGNsaWNrL2RyaXZlci5oaD4NCiAgICAgDQogICAgKyNp
bmNsdWRlIDxzdGF0aWNfY29uZmlnLmg+DQogICAgKw0KICAgICAjaW5jbHVkZSA8dWsvc2NoZWQu
aD4NCiAgICAgI2luY2x1ZGUgPHVrL3RocmVhZC5oPg0KICAgICsjaW5jbHVkZSA8dWsvbmV0ZGV2
Lmg+DQogICAgKyNpbmNsdWRlIDx1ay9wbGF0L21lbW9yeS5oPg0KICAgICANCiAgICAgaW50IGNs
aWNrX250aHJlYWRzID0gMTsNCiAgICAtDQogICAgIHZvaWQgKl9fZHNvX2hhbmRsZSA9IE5VTEw7
DQogICAgIA0KICAgICAjZGVmaW5lIE5MT0coZm10LCAuLi4pDQogICAgQEAgLTExOSw2ICsxMjIs
MzIgQEAgcmVhZF9jb25maWcodV9pbnQgcmlkID0gMCkNCiAgICAgc3RhdGljIEVycm9ySGFuZGxl
ciAqZXJyaDsNCiAgICAgc3RhdGljIE1hc3RlciBtYXN0ZXIoMSk7DQogICAgIA0KICAgICtzdGF0
aWMgU3RyaW5nICoNCiAgICArZ2V0X2NvbmZpZygpDQogICAgK3sNCiAgICArCVN0cmluZyAqY2Zn
Ow0KICAgICsJc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVzYyBpbWc7DQogICAgKwljaGFyICpj
c3RyOw0KICAgICsJc2l6ZV90IGNzdHJfbGVuOw0KICAgICsNCiAgICArCS8qIEZpcnN0LCB0cnkg
aW5pdHJkICovDQogICAgKwlpZiAodWtwbGF0X21lbXJlZ2lvbl9maW5kX2luaXRyZDAoJmltZykg
Pj0gMCkgew0KICAgICsJCWNzdHIgPSAoY2hhciAqKWltZy5iYXNlOw0KICAgICsJCWNzdHJfbGVu
ID0gaW1nLmxlbjsNCiAgICArCX0gZWxzZSB7DQogICAgKwkJLyogSWYgd2UgY2FuJ3QgZmluZCBh
IGNvbmZpZzogdXNlIGEgZmFsbGJhY2sgb25lIHN0YXRpY2FsbHkNCiAgICArCQkgKiBjb21waWxl
ZCBpbi4NCiAgICArCQkgKi8NCiAgICArCQl1a19wcl93YXJuKCJDb3VsZCBub3QgZmluZCBhIGNv
bmZpZywgdXNpbmcgc3RhbmRhcmQgY29uZmlnIVxuIik7DQogICAgKwkJY3N0ciA9IENPTkZJR1NU
UklORzsNCiAgICArCQljc3RyX2xlbiA9IHN0cmxlbihDT05GSUdTVFJJTkcpOw0KICAgICsJfQ0K
ICAgICsJY2ZnID0gbmV3IFN0cmluZyhjc3RyLCBjc3RyX2xlbik7DQogICAgKwlwcmludGYoIlJl
Y2VpdmVkIGNvbmZpZyAobGVuZ3RoICVkKTpcbiIsIGNmZy0+bGVuZ3RoKCkpOw0KICAgICsJcHJp
bnRmKCIlc1xuIiwgY2ZnLT5jX3N0cigpKTsNCiAgICArCXJldHVybiBjZmc7DQogICAgK30NCiAg
ICArDQogICAgIHN0cnVjdCByb3V0ZXJfaW5zdGFuY2Ugew0KICAgICAJUm91dGVyICpyOw0KICAg
ICAJdV9pbnQgZl9zdG9wOw0KICAgIEBAIC0xMjcsOSArMTU2LDggQEAgc3RydWN0IHJvdXRlcl9p
bnN0YW5jZSB7DQogICAgIHZvaWQNCiAgICAgcm91dGVyX3RocmVhZCh2b2lkICp0aHJlYWRfZGF0
YSkNCiAgICAgew0KICAgIC0JdV9pbnQgKnJpZCA9ICh1X2ludCopIHRocmVhZF9kYXRhOw0KICAg
IC0JU3RyaW5nICpjb25maWcgPSBuZXcgU3RyaW5nOyAvL3JlYWRfY29uZmlnKCpyaWQpOw0KICAg
IC0Jc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAqcmkgPSAmcm91dGVyX2xpc3RbKnJpZF07DQogICAg
KwlzdHJ1Y3Qgcm91dGVyX2luc3RhbmNlICpyaSA9ICZyb3V0ZXJfbGlzdFsodW5zaWduZWQgbG9u
Zyl0aHJlYWRfZGF0YV07DQogICAgKwlTdHJpbmcgKmNvbmZpZyA9IGdldF9jb25maWcoKTsNCiAg
ICAgDQogICAgIAlyaS0+ciA9IGNsaWNrX3JlYWRfcm91dGVyKCpjb25maWcsIHRydWUsIGVycmgs
IGZhbHNlLCAmbWFzdGVyKTsNCiAgICAgCWlmIChyaS0+ci0+aW5pdGlhbGl6ZShlcnJoKSA8IDAp
IHsNCiAgICBAQCAtMTUwLDcgKzE3OCw2IEBAIHJvdXRlcl90aHJlYWQodm9pZCAqdGhyZWFkX2Rh
dGEpDQogICAgIA0KICAgICAJTE9HKCJNYXN0ZXIvZHJpdmVyIHN0b3BwZWQsIGNsb3Npbmcgcm91
dGVyX3RocmVhZCIpOw0KICAgICAJZnJlZShjb25maWcpOw0KICAgIC0JZnJlZShyaWQpOw0KICAg
ICB9DQogICAgIA0KICAgICB2b2lkDQogICAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3RhdGljX2Nv
bmZpZy5oIGIvaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KICAgIGluZGV4IDAwMDAwMDAuLjg1YzVkMTINCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysr
IGIvaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgNCiAgICBAQCAtMCwwICsxLDIyIEBADQogICAgK3N0
YXRpYyBjaGFyIENPTkZJR1NUUklOR1tdID0gIiAgICBkZWZpbmUoJElQIDEwLjAuMTAuMTIzKTtc
blwNCiAgICArICAgIGRlZmluZSgkTUFDMCAxMToyMjozMzo0NDo1NTo2Nik7XG5cDQogICAgK1xu
XA0KICAgICsgICAgc291cmNlIDo6IEZyb21EZXZpY2U7XG5cDQogICAgKyAgICBzaW5rICAgOjog
VG9EZXZpY2U7XG5cDQogICAgKyAgICAvLyBjbGFzc2lmaWVzIHBhY2tldHMgXG5cDQogICAgKyAg
ICBjIDo6IENsYXNzaWZpZXIoXG5cDQogICAgKyAgICAgICAgMTIvMDgwNiAyMC8wMDAxLCAvLyBB
UlAgUmVxdWVzdHMgZ29lcyB0byBvdXRwdXQgMFxuXA0KICAgICsgICAgICAgIDEyLzA4MDYgMjAv
MDAwMiwgLy8gQVJQIFJlcGxpZXMgdG8gb3V0cHV0IDFcblwNCiAgICArICAgICAgICAxMi8wODAw
IDE0LzQ1IDM0LzA4LCAvLyBJQ01QIFJlcXVlc3RzIHRvIG91dHB1dCAyXG5cDQogICAgKyAgICAg
ICAgLSk7IC8vIHdpdGhvdXQgYSBtYXRjaCB0byBvdXRwdXQgM1xuXA0KICAgICtcblwNCiAgICAr
ICAgIGFycHEgOjogQVJQUXVlcmllcigkSVAsICRNQUMwKTtcblwNCiAgICArICAgIGFycHIgOjog
QVJQUmVzcG9uZGVyKCRJUCAkTUFDMCk7XG5cDQogICAgK1xuXA0KICAgICsgICAgc291cmNlIC0+
IGM7XG5cDQogICAgKyAgICBjWzBdIC0+IENoZWNrQVJQSGVhZGVyKDE0KSAtPiBBUlBQcmludCAt
PiBhcnByIC0+IEFSUFByaW50IC0+IHNpbms7XG5cDQogICAgKyAgICBjWzFdIC0+IFsxXWFycHE7
XG5cDQogICAgKyAgICBJZGxlIC0+IFswXWFycHE7XG5cDQogICAgKyAgICBhcnBxIC0+IHNpbms7
XG5cDQogICAgKyAgICBjWzJdIC0+IENoZWNrSVBIZWFkZXIoMTQpIC0+IElQUHJpbnQgLT4gSUNN
UFBpbmdSZXNwb25kZXIoKSAtPiBFdGhlck1pcnJvcigpIC0+IElQUHJpbnQgLT4gc2luaztcblwN
CiAgICArICAgIGNbM10gLT4gRGlzY2FyZDsiOw0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0K
ICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:16:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:16: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 1hYAF3-0004Ul-Q1; Tue, 04 Jun 2019 14:16:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYAF2-0004Ue-7Z
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:16:44 +0000
X-Inumbo-ID: 601b7d2b-86d3-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 601b7d2b-86d3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:16:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C37ED105307;
 Tue,  4 Jun 2019 16:16:41 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id NIsZ3bwNM1Jm; Tue,  4 Jun 2019 16:16:41 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9F6F11052C3
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:16:41 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:16:41 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 10/11] Provide MAC preamble
Thread-Index: AQHVGQeFL6l6JzqYKkaPxJglrtTinaaLjjIA
Date: Tue, 4 Jun 2019 14:16:40 +0000
Message-ID: <5C399B9A-A5FF-4B7E-A00D-26F197C206CB@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-11-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-11-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <D13B2CC340E22143940BE1C30FDB94ED@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 10/11] Provide MAC preamble
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNj
aG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFdlIGNyZWF0ZSBhIGNvbmZpZyBzY3JpcHQg
c25pcHBldCB0aGF0IGRlZmluZXMgYSAiTUFDMCIsICJNQUMxIiwgZXRjLg0KICAgIHZhcmlhYmxl
IGZvciBlYWNoIG5ldHdvcmsgZGV2aWNlLiBUaGlzIGlzIHByZXBlbmRlZCB0byB0aGUgdXNlci1w
cm92aWRlZA0KICAgIGNvbmZpZywgc28gdGhhdCB1c2VycyBjYW4gdXNlIHRob3NlIHZhcmlhYmxl
cyB0byBhY2Nlc3MgdGhlIE1BQw0KICAgIGFkZHJlc3NlcyBvZiBuZXR3b3JrIGRldmljZXMuDQog
ICAgDQogICAgU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRA
bmVjbGFiLmV1Pg0KICAgIC0tLQ0KICAgICBjbGljay5jYyAgICAgICAgICAgICAgICB8IDU4ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQogICAgIGluY2x1ZGUvc3Rh
dGljX2NvbmZpZy5oIHwgIDEgLQ0KICAgICAyIGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMo
KyksIDMgZGVsZXRpb25zKC0pDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2NsaWNrLmNjIGIvY2xp
Y2suY2MNCiAgICBpbmRleCA4NWE5MzhiLi41YjBmMzRmIDEwMDY0NA0KICAgIC0tLSBhL2NsaWNr
LmNjDQogICAgKysrIGIvY2xpY2suY2MNCiAgICBAQCAtMTIxLDE1ICsxMjEsNDUgQEAgcmVhZF9j
b25maWcodV9pbnQgcmlkID0gMCkNCiAgICAgI2RlZmluZSBNQVhfUk9VVEVSUwk2NA0KICAgICBz
dGF0aWMgRXJyb3JIYW5kbGVyICplcnJoOw0KICAgICBzdGF0aWMgTWFzdGVyIG1hc3RlcigxKTsN
CiAgICArc3RhdGljIFN0cmluZyBtYWNhZGRyX3ByZWFtYmxlOw0KICAgICsNCiAgICArc3RhdGlj
IHZvaWQNCiAgICArbWFrZV9tYWNhZGRyX3ByZWFtYmxlKCkNCiAgICArew0KICAgICsJdW5zaWdu
ZWQgaW50IG5kZXYgPSB1a19uZXRkZXZfY291bnQoKTsNCiAgICArCWNvbnN0IHNpemVfdCBidWZs
ZW4gPSA2NDsNCiAgICArCWNoYXIgYnVmW2J1Zmxlbl07DQogICAgKwljb25zdCBzdHJ1Y3QgdWtf
aHdhZGRyICptYWM7DQogICAgKwlTdHJpbmdBY2N1bSBhY2M7DQogICAgKw0KICAgICsJVUtfQVNT
RVJUKG1hY2FkZHJfcHJlYW1ibGUuZW1wdHkoKSk7DQogICAgKw0KICAgICsJdWtfcHJfaW5mbygi
Rm91bmQgJWQgbmV0d29yayBkZXZpY2UocylcbiIsIHVrX25ldGRldl9jb3VudCgpKTsNCiAgICAr
CWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbmRldjsgKytpKSB7DQogICAgKwkJbWFjID0g
dWtfbmV0ZGV2X2h3YWRkcl9nZXQodWtfbmV0ZGV2X2dldChpKSk7DQogICAgKwkJc25wcmludGYo
YnVmLCBidWZsZW4sDQogICAgKwkJCSJkZWZpbmUoJE1BQyVkICUwMng6JTAyeDolMDJ4OiUwMng6
JTAyeDolMDJ4KTtcbiIsDQogICAgKwkJCWksIG1hYy0+YWRkcl9ieXRlc1swXSwgbWFjLT5hZGRy
X2J5dGVzWzFdLA0KICAgICsJCQltYWMtPmFkZHJfYnl0ZXNbMl0sIG1hYy0+YWRkcl9ieXRlc1sz
XSwNCiAgICArCQkJbWFjLT5hZGRyX2J5dGVzWzRdLCBtYWMtPmFkZHJfYnl0ZXNbNV0pOw0KICAg
ICsJCXVrX3ByX2luZm8oImFwcGVuZGluZyAlcyIsIGJ1Zik7DQogICAgKwkJYWNjLmFwcGVuZChi
dWYpOw0KICAgICsJfQ0KICAgICsJYWNjLmFwcGVuZCgiLyogRW5kIHVuaWtyYWZ0LXByb3ZpZGVk
IE1BQyBwcmVhbWJsZSAqL1xuIik7DQogICAgKwltYWNhZGRyX3ByZWFtYmxlID0gYWNjLnRha2Vf
c3RyaW5nKCk7DQogICAgKwl1a19wcl9pbmZvKCJNQUMgYWRkcmVzcyBtYWNyb3M6XG4lc1xuIiwg
bWFjYWRkcl9wcmVhbWJsZS5jX3N0cigpKTsNCiAgICArfQ0KICAgICANCiAgICAgc3RhdGljIFN0
cmluZyAqDQogICAgIGdldF9jb25maWcoKQ0KICAgICB7DQogICAgLQlTdHJpbmcgKmNmZzsNCiAg
ICArCVN0cmluZyAqY2ZnID0gbmV3IFN0cmluZyhtYWNhZGRyX3ByZWFtYmxlKTsNCiAgICAgCXN0
cnVjdCB1a3BsYXRfbWVtcmVnaW9uX2Rlc2MgaW1nOw0KICAgICAJY2hhciAqY3N0cjsNCiAgICAg
CXNpemVfdCBjc3RyX2xlbjsNCiAgICAgDQogICAgKwlVS19BU1NFUlQoIW1hY2FkZHJfcHJlYW1i
bGUuZW1wdHkoKSk7DQogICAgKw0KICAgICAJLyogRmlyc3QsIHRyeSBpbml0cmQgKi8NCiAgICAg
CWlmICh1a3BsYXRfbWVtcmVnaW9uX2ZpbmRfaW5pdHJkMCgmaW1nKSA+PSAwKSB7DQogICAgIAkJ
Y3N0ciA9IChjaGFyICopaW1nLmJhc2U7DQogICAgQEAgLTE0Miw3ICsxNzIsNyBAQCBnZXRfY29u
ZmlnKCkNCiAgICAgCQljc3RyID0gQ09ORklHU1RSSU5HOw0KICAgICAJCWNzdHJfbGVuID0gc3Ry
bGVuKENPTkZJR1NUUklORyk7DQogICAgIAl9DQogICAgLQljZmcgPSBuZXcgU3RyaW5nKGNzdHIs
IGNzdHJfbGVuKTsNCiAgICArCWNmZy0+YXBwZW5kKGNzdHIsIGNzdHJfbGVuKTsNCiAgICAgCXBy
aW50ZigiUmVjZWl2ZWQgY29uZmlnIChsZW5ndGggJWQpOlxuIiwgY2ZnLT5sZW5ndGgoKSk7DQog
ICAgIAlwcmludGYoIiVzXG4iLCBjZmctPmNfc3RyKCkpOw0KICAgICAJcmV0dXJuIGNmZzsNCiAg
ICBAQCAtMjAwLDYgKzIzMCwyNiBAQCByb3V0ZXJfc3RvcChpbnQgbiA9IE1BWF9ST1VURVJTKQ0K
ICAgICAJTE9HKCJTdG9wcGVkIGFsbCByb3V0ZXJzLi4uXG5cbiIpOw0KICAgICB9DQogICAgIA0K
ICAgICsvKiBJbml0aWFsaXplIGFsbCBuZXRkZXYgZGV2aWNlcyB0byB0aGUgcG9pbnQgd2hlcmUg
eW91IGNhbiBnZXQgYSBNQUMNCiAgICArICogYWRkcmVzcyBmcm9tIHRoZW0uDQogICAgKyAqLw0K
ICAgICtzdGF0aWMgaW50DQogICAgK3VrX25ldGRldl9lYXJseV9pbml0KEVycm9ySGFuZGxlciAq
ZXJyaCkNCiAgICArew0KICAgICsJc3RydWN0IHVrX25ldGRldiAqbmV0ZGV2Ow0KICAgICsJc3Ry
dWN0IHVrX25ldGRldl9jb25mIG5ldGRldl9jb25mOw0KICAgICsNCiAgICArCW5ldGRldl9jb25m
Lm5iX3J4X3F1ZXVlcyA9IDE7DQogICAgKwluZXRkZXZfY29uZi5uYl90eF9xdWV1ZXMgPSAxOw0K
ICAgICsJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB1a19uZXRkZXZfY291bnQoKTsgKytp
KSB7DQogICAgKwkJbmV0ZGV2ID0gdWtfbmV0ZGV2X2dldChpKTsNCiAgICArCQl1a19wcl9pbmZv
KCJuZXRkZXYgJWQgZWFybHkgaW5pdFxuIiwgaSk7DQogICAgKwkJaWYgKHVrX25ldGRldl9jb25m
aWd1cmUobmV0ZGV2LCAmbmV0ZGV2X2NvbmYpIDwgMCkNCiAgICArCQkJcmV0dXJuIGVycmgtPmVy
cm9yKCJGYWlsZWQgdG8gY29uZmlndXJlIGRldmljZSAlZFxuIiwgaSk7DQogICAgKwl9DQogICAg
KwlyZXR1cm4gMDsNCiAgICArfQ0KICAgICsNCiAgICAgI2lmIENMSUNLX0NPTlNPTEVfU1VQUE9S
VF9JTVBMRU1FTlRFRA0KICAgICB2b2lkDQogICAgIHJvdXRlcl9zdXNwZW5kKGludCBuID0gTUFY
X1JPVVRFUlMpDQogICAgQEAgLTM1MCw2ICs0MDAsMTAgQEAgaW50IENMSUNLX01BSU4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KQ0KICAgICAJCXJvdXRlcl9saXN0W2ldLmZfc3RvcCA9IDE7DQogICAg
IAl9DQogICAgIA0KICAgICsJaWYgKHVrX25ldGRldl9lYXJseV9pbml0KGVycmgpKQ0KICAgICsJ
CXJldHVybiAtRUlOVkFMOw0KICAgICsJbWFrZV9tYWNhZGRyX3ByZWFtYmxlKCk7DQogICAgKw0K
ICAgICAjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVEDQogICAgIC8qIFRPRE86
IFRoaXMgaW50ZXJhY3Rpb24gYmV0d2VlbiB4ZW5idXMgYW5kIGNsaWNrIHNob3VsZCBiZSByZXBs
YWNlZCB3aXRoIGENCiAgICAgICogZ2VuZXJpYyB1bmlrcmFmdCBpbnRlcmFjdGlvbiBzY2hlbWUs
IGZvciBleGFtcGxlLCB2aWEgYSBjb25zb2xlLg0KICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL3N0
YXRpY19jb25maWcuaCBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oDQogICAgaW5kZXggODVjNWQx
Mi4uMTgwODc2MSAxMDA2NDQNCiAgICAtLS0gYS9pbmNsdWRlL3N0YXRpY19jb25maWcuaA0KICAg
ICsrKyBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oDQogICAgQEAgLTEsNSArMSw0IEBADQogICAg
IHN0YXRpYyBjaGFyIENPTkZJR1NUUklOR1tdID0gIiAgICBkZWZpbmUoJElQIDEwLjAuMTAuMTIz
KTtcblwNCiAgICAtICAgIGRlZmluZSgkTUFDMCAxMToyMjozMzo0NDo1NTo2Nik7XG5cDQogICAg
IFxuXA0KICAgICAgICAgc291cmNlIDo6IEZyb21EZXZpY2U7XG5cDQogICAgICAgICBzaW5rICAg
OjogVG9EZXZpY2U7XG5cDQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:17:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:17: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 1hYAG9-0004W8-UO; Tue, 04 Jun 2019 14:17:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYAG9-0004W3-0Z
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:17:53 +0000
X-Inumbo-ID: 899a8665-86d3-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 899a8665-86d3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:17:52 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 2F561F2072;
 Tue,  4 Jun 2019 16:17:51 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dG1RezioXpON; Tue,  4 Jun 2019 16:17:51 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id F3EE3F2034
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:17:48 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 16:17:48 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 11/11] config: Add userlevel module option.
Thread-Index: AQHVGQeHol8VK1lpt029r9thhClHo6aLjoKA
Date: Tue, 4 Jun 2019 14:17:48 +0000
Message-ID: <446FFBC5-0FB8-43EB-A96D-A93885F3F666@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-12-florian.schmidt@neclab.eu>
In-Reply-To: <20190602055238.3818-12-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <4929132ADCD9294CB95222AC557BA5E7@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 11/11] config: Add
 userlevel module option.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KSSB3YXMgaGVzaXRhdGluZyBhcyB0byB3aGV0aGVyIHRoaXMgcGF0Y2gg
c2hvdWxkIGV4aXN0IGF0IGFsbCBvciBub3QgKGFmdGVyIGFsbCwgaXQgcHJvdmlkZXMgYnJva2Vu
IGZ1bmN0aW9uYWxpdHkpLCBidXQgdGhlbiBhZ2FpbiBpdCBkb2Vzbid0IGh1cnQgdG8gaGF2ZSBp
dC4NCg0KVGhhbmtzLA0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8
ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0KDQrvu79PbiAwMi4wNi4xOSwgMDc6NTMsICJGbG9y
aWFuIFNjaG1pZHQiIDxGbG9yaWFuLlNjaG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIEFk
ZCBhIG1lbnVjb25maWcgb3B0aW9uIHRvIGJ1aWxkIENsaWNrIHdpdGggdXNlcmxldmVsIGVsZW1l
bnRzLiBCZSBhd2FyZQ0KICAgIHRoYXQgdGhpcyBjdXJyZW50bHkgZG9lc24ndCBidWlsZCBiZWNh
dXNlIG9mIG1pc3NpbmcgaGVhZGVyIGZpbGVzLg0KICAgIEhlbmNlLCB0aGlzIG9wdGlvbiBpcyBk
aXNhYmxlZCBieSBkZWZhdWx0Lg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2No
bWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4NCiAgICAtLS0NCiAgICAgQ29uZmlnLnVr
ICAgfCA3ICsrKysrKysNCiAgICAgTWFrZWZpbGUudWsgfCAyICstDQogICAgIDIgZmlsZXMgY2hh
bmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQogICAgDQogICAgZGlmZiAtLWdp
dCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KICAgIGluZGV4IDIwZDkxMzEuLmFiYTM5ZjIgMTAw
NjQ0DQogICAgLS0tIGEvQ29uZmlnLnVrDQogICAgKysrIGIvQ29uZmlnLnVrDQogICAgQEAgLTgy
LDQgKzgyLDExIEBAIGNvbmZpZyBMSUJDTElDS19FTEVNU19USFJFQURTDQogICAgIAloZWxwDQog
ICAgIAkgIEJ1aWxkIHdpdGggbXVsdGktdGhyZWFkaW5nIGVsZW1lbnRzDQogICAgIA0KICAgICtj
b25maWcgTElCQ0xJQ0tfRUxFTVNfVVNFUkxFVkVMDQogICAgKwlib29sICJFbmFibGUgdXNlcmxl
dmVsIGVsZW1lbnRzIFtCUk9LRU5dIg0KICAgICsJZGVmYXVsdCBuDQogICAgKwloZWxwDQogICAg
KwkgIEJ1aWxkIHdpdGggQ2xpY2sgdXNlcmxldmVsIGVsZW1lbnRzLg0KICAgICsJICBCZSBhd2Fy
ZSB0aGlzIGN1cnJlbnRseSBkb2Vzbid0IGNvbXBpbGUuDQogICAgKw0KICAgICBlbmRpZg0KICAg
IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrDQogICAgaW5kZXggNTAzMGZm
ZC4uY2QyYjRjMSAxMDA2NDQNCiAgICAtLS0gYS9NYWtlZmlsZS51aw0KICAgICsrKyBiL01ha2Vm
aWxlLnVrDQogICAgQEAgLTI3LDcgKzI3LDcgQEAgTElCQ0xJQ0tfRVhUUkFDVEVEPSQoTElCQ0xJ
Q0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKQ0KICAgICBMSUJDTElDS19F
TEVNRU5UU19ESVI9JChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzDQogICAgIExJQkNMSUNL
X0JVSUxEVE9PTD0kKExJQkNMSUNLX0VYVFJBQ1RFRCkvYmluL2NsaWNrLWJ1aWxkdG9vbA0KICAg
ICBMSUJDTElDS19FTEVNX0RJUlM9YXFtIGV0aGVybmV0IGV0aGVyc3dpdGNoIGljbXAgaXAgdW5p
a3JhZnQgXA0KICAgIC0JCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFkcw0K
ICAgICsJCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFkcyB1c2VybGV2ZWwN
CiAgICAgDQogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICMgQ29uZmlnIE1lbnUg
LSBGaWx0ZXIgd2hpY2ggZWxlbWVudCBjYXRlZ29yaWVzIGFjdHVhbGx5IGdldCBidWlsdA0KICAg
IC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:20:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:20: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 1hYAIp-0005IL-9P; Tue, 04 Jun 2019 14:20:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYAIn-0005IG-Q7
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:20:37 +0000
X-Inumbo-ID: eae9d226-86d3-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id eae9d226-86d3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 14:20:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A38C310529A;
 Tue,  4 Jun 2019 16:20:34 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LyKE8zRGp7HN; Tue,  4 Jun 2019 16:20:34 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7F2901050EE
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:20:34 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 16:20:34
 +0200
To: Felipe Huici <Felipe.Huici@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-2-florian.schmidt@neclab.eu>
 <7FC78D12-83A8-4F79-86E5-C930F5EC9B3C@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <8e41915c-e1da-ecd7-b6ec-53ec81865df5@neclab.eu>
Date: Tue, 4 Jun 2019 16:20:33 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <7FC78D12-83A8-4F79-86E5-C930F5EC9B3C@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmVsaXBlLAoKYWdyZWVkLCBJJ2xsIGZpeCB0aG9zZSB0aGluZ3MgZm9yIHRoZSB2Mi4KCk9u
IDYvNC8xOSA0OjAxIFBNLCBGZWxpcGUgSHVpY2kgd3JvdGU6Cj4gSGkgRmxvcmlhbiwKPiAKPiBU
aGFua3MgZm9yIHRoZSBzZXJpZXMhIFJlZ2FyZGluZyB0aGlzIHBhdGNoOgo+IAo+ICogVGhlIGxp
Y2Vuc2UgaGVhZGVycyBhcmUgbWlzc2luZwo+ICogVGhlIC5tZCBmaWxlcyBhcmUgbWlzc2luZwo+
ICogV2hlbiBjb25maWd1cmluZyBsd2lwLCBJIG5vdGljZWQgdGhhdCBpZiB0aGUgb3B0aW9uICJB
dXRvbWF0aWNhbGx5IGF0dGFjaCBuZXRpZnMiIGlzIHNlbGVjdGVkLCB0aGUgcm91dGVyIGZhaWxz
IHRvIGluaXRpYWxpemUgKCJGYWlsZWQgdG8gY29uZmlndXJlIGRldmljZSIsIGZyb20gY2xpY2su
Y2MpLiBDb3VsZCB5b3UgcGxlYXNlIHVuc2VsZWN0IHRoaXMgYnkgYWRkaW5nIGFuIG9wdGlvbiBp
biBDb25maWcudWs/Cj4gCj4gVGhhbmtzLAo+IAo+IC0tIEZlbGlwZQo+IAo+IO+7v09uIDAyLjA2
LjE5LCAwNzo1MywgIkZsb3JpYW4gU2NobWlkdCIgPEZsb3JpYW4uU2NobWlkdEBuZWNsYWIuZXU+
IHdyb3RlOgo+IAo+ICAgICAgQWRkIE1ha2VmaWxlLCBNYWtlZmlsZS51aywgQ29uZmlnLnVrLCAu
Z2l0aWdub3JlCj4gICAgICAKPiAgICAgIFNpZ25lZC1vZmYtYnk6IEZlbGlwZSBIdWljaSA8ZmVs
aXBlLmh1aWNpQG5lY2xhYi5ldT4KPiAgICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlk
dCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiAgICAgIC0tLQo+ICAgICAgIC5naXRpZ25v
cmUgIHwgICA0ICsrCj4gICAgICAgQ29uZmlnLnVrICAgfCAgODUgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwo+ICAgICAgIE1ha2VmaWxlICAgIHwgICA5ICsrKysKPiAgICAgICBNYWtl
ZmlsZS51ayB8IDE0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCj4gICAgICAgNCBmaWxlcyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygrKQo+ICAg
ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCAuZ2l0aWdub3JlCj4gICAgICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IENvbmZpZy51awo+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZQo+ICAgICAg
IGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51awo+ICAgICAgCj4gICAgICBkaWZmIC0tZ2l0
IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKPiAgICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g
ICAgICBpbmRleCAwMDAwMDAwLi5hOWZiNzFiCj4gICAgICAtLS0gL2Rldi9udWxsCj4gICAgICAr
KysgYi8uZ2l0aWdub3JlCj4gICAgICBAQCAtMCwwICsxLDQgQEAKPiAgICAgICsuY29uZmlnCj4g
ICAgICArLmNvbmZpZy5vbGQKPiAgICAgICsuLmNvbmZpZy50bXAKPiAgICAgICtidWlsZC8KPiAg
ICAgIGRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsKPiAgICAgIG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0Cj4gICAgICBpbmRleCAwMDAwMDAwLi4yMGQ5MTMxCj4gICAgICAtLS0gL2Rldi9u
dWxsCj4gICAgICArKysgYi9Db25maWcudWsKPiAgICAgIEBAIC0wLDAgKzEsODUgQEAKPiAgICAg
ICsjIyMgSW52aXNpYmxlIG9wdGlvbiBmb3IgZGVwZW5kZW5jaWVzCj4gICAgICArY29uZmlnIEFQ
UF9ERVBFTkRFTkNJRVMKPiAgICAgICsJYm9vbAo+ICAgICAgKwlkZWZhdWx0IHkKPiAgICAgICsK
PiAgICAgICttZW51Y29uZmlnIExJQkNMSUNLCj4gICAgICArCWJvb2wgIlRoZSBDbGljayBtb2R1
bGFyIHJvdXRlciIKPiAgICAgICsJIyBkZXBlbmRzIG9uIChIQVZFX0xJQkMpICAjICYmIEhBVkVf
TldfU1RBQ0sgJiYgLi4uCj4gICAgICArCWRlZmF1bHQgeQo+ICAgICAgKwo+ICAgICAgK2lmIExJ
QkNMSUNLCj4gICAgICArCj4gICAgICArY29uZmlnIExJQkNMSUNLX01BSU4KPiAgICAgICsJYm9v
bCAiRW5hYmxlIENsaWNrIG1haW4gZnVuY3Rpb24iCj4gICAgICArCWRlZmF1bHQgbgo+ICAgICAg
KwloZWxwCj4gICAgICArCSAgRGVmaW5lIG1haW4gZnVuY3Rpb24gaW5zdGVhZCBvZiBjbGlja19t
YWluIGZ1bmN0aW9uCj4gICAgICArCj4gICAgICArY29uZmlnIExJQkNMSUNLX0VMRU1TX0FRTQo+
ICAgICAgKwlib29sICJFbmFibGUgQVFNIGVsZW1lbnRzIgo+ICAgICAgKwlkZWZhdWx0IHkKPiAg
ICAgICsJaGVscAo+ICAgICAgKwkgIEJ1aWxkIHdpdGggSVAgZWxlbWVudHMKPiAgICAgICsKPiAg
ICAgICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfRVRIRVJORVQKPiAgICAgICsJYm9vbCAiRW5hYmxl
IEV0aGVybmV0IGVsZW1lbnRzIgo+ICAgICAgKwlkZWZhdWx0IHkKPiAgICAgICsJaGVscAo+ICAg
ICAgKwkgIEJ1aWxkIHdpdGggRXRoZXJuZXQgZWxlbWVudHMKPiAgICAgICsKPiAgICAgICtjb25m
aWcgTElCQ0xJQ0tfRUxFTVNfRVRIRVJTV0lUQ0gKPiAgICAgICsJYm9vbCAiRW5hYmxlIEV0aGVy
bmV0IHN3aXRjaCBlbGVtZW50cyIKPiAgICAgICsJZGVmYXVsdCB5Cj4gICAgICArCWhlbHAKPiAg
ICAgICsJICBCdWlsZCB3aXRoIEV0aGVybmV0IHN3aXRjaCBlbGVtZW50cwo+ICAgICAgKwo+ICAg
ICAgK2NvbmZpZyBMSUJDTElDS19FTEVNU19JQ01QCj4gICAgICArCWJvb2wgIkVuYWJsZSBJQ01Q
IGVsZW1lbnRzIgo+ICAgICAgKwlkZWZhdWx0IHkKPiAgICAgICsJaGVscAo+ICAgICAgKwkgIEJ1
aWxkIHdpdGggSUNNUCBlbGVtZW50cwo+ICAgICAgKwo+ICAgICAgK2NvbmZpZyBMSUJDTElDS19F
TEVNU19JUAo+ICAgICAgKwlib29sICJFbmFibGUgSVAgZWxlbWVudHMiCj4gICAgICArCWRlZmF1
bHQgeQo+ICAgICAgKwloZWxwCj4gICAgICArCSAgQnVpbGQgd2l0aCBhZGFwdGl2ZSBxdWV1ZSBt
YW5hZ2VtZW50IGVsZW1lbnRzCj4gICAgICArCj4gICAgICArY29uZmlnIExJQkNMSUNLX0VMRU1T
X1VOSUtSQUZUCj4gICAgICArCWJvb2wgIkVuYWJsZSBVbmlrcmFmdCBuZXR3b3JraW5nIgo+ICAg
ICAgKwlkZWZhdWx0IHkKPiAgICAgICsJaGVscAo+ICAgICAgKwkgIEJ1aWxkIHdpdGggVW5pa3Jh
ZnQgRnJvbURldmljZSBhbmQgVG9EZXZpY2UgZWxlbWVudHMKPiAgICAgICsKPiAgICAgICtjb25m
aWcgTElCQ0xJQ0tfRUxFTVNfTE9DQUwKPiAgICAgICsJYm9vbCAiRW5hYmxlIGxvY2FsIGVsZW1l
bnRzIgo+ICAgICAgKwlkZWZhdWx0IHkKPiAgICAgICsJaGVscAo+ICAgICAgKwkgIEJ1aWxkIHdp
dGggbG9jYWwgZWxlbWVudHMKPiAgICAgICsKPiAgICAgICtjb25maWcgTElCQ0xJQ0tfRUxFTVNf
U0lNUExFCj4gICAgICArCWJvb2wgIkVuYWJsZSBzaW1wbGUgZWxlbWVudHMiCj4gICAgICArCWRl
ZmF1bHQgeQo+ICAgICAgKwloZWxwCj4gICAgICArCSAgQnVpbGQgd2l0aCBzaW1wbGUgZWxlbWVu
dHMKPiAgICAgICsKPiAgICAgICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfU1RBTkRBUkQKPiAgICAg
ICsJYm9vbCAiRW5hYmxlIHN0YW5kYXJkIGVsZW1lbnRzIgo+ICAgICAgKwlkZWZhdWx0IHkKPiAg
ICAgICsJaGVscAo+ICAgICAgKwkgIEJ1aWxkIHdpdGggc3RhbmRhcmQgZWxlbWVudHMKPiAgICAg
ICsKPiAgICAgICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfVENQVURQCj4gICAgICArCWJvb2wgIkVu
YWJsZSBUQ1AvVURQIGVsZW1lbnRzIgo+ICAgICAgKwlkZWZhdWx0IHkKPiAgICAgICsJaGVscAo+
ICAgICAgKwkgIEJ1aWxkIHdpdGggVENQL1VEUCBlbGVtZW50cwo+ICAgICAgKwo+ICAgICAgK2Nv
bmZpZyBMSUJDTElDS19FTEVNU19USFJFQURTCj4gICAgICArCWJvb2wgIkVuYWJsZSBtdWx0aS10
aHJlYWRpbmcgZWxlbWVudHMiCj4gICAgICArCWRlZmF1bHQgeQo+ICAgICAgKwloZWxwCj4gICAg
ICArCSAgQnVpbGQgd2l0aCBtdWx0aS10aHJlYWRpbmcgZWxlbWVudHMKPiAgICAgICsKPiAgICAg
ICtlbmRpZgo+ICAgICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKPiAgICAgIG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gICAgICBpbmRleCAwMDAwMDAwLi44ZWNmODBiCj4gICAgICAt
LS0gL2Rldi9udWxsCj4gICAgICArKysgYi9NYWtlZmlsZQo+ICAgICAgQEAgLTAsMCArMSw5IEBA
Cj4gICAgICArVUtfUk9PVCA/PSAkKFBXRCkvLi4vdW5pa3JhZnQKPiAgICAgICtVS19MSUJTID89
ICQoUFdEKS8uLgo+ICAgICAgK0xJQlMgOj0gJChVS19MSUJTKS9uZXdsaWI6JChVS19MSUJTKS9s
d2lwCj4gICAgICArCj4gICAgICArYWxsOgo+ICAgICAgKwlAJChNQUtFKSAtQyAkKFVLX1JPT1Qp
IEE9JChQV0QpIEw9JChMSUJTKQo+ICAgICAgKwo+ICAgICAgKyQoTUFLRUNNREdPQUxTKToKPiAg
ICAgICsJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykgJChNQUtFQ01E
R09BTFMpCj4gICAgICBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awo+ICAg
ICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiAgICAgIGluZGV4IDAwMDAwMDAuLmIyN2JiMTAKPiAg
ICAgIC0tLSAvZGV2L251bGwKPiAgICAgICsrKyBiL01ha2VmaWxlLnVrCj4gICAgICBAQCAtMCww
ICsxLDE0MyBAQAo+ICAgICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gICAgICArIyBSZWdp
c3RlciB3aXRoIHVuaWtyYWZ0Cj4gICAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgICAg
ICskKGV2YWwgJChjYWxsIGFkZGxpYixsaWJjbGljaykpCj4gICAgICArCj4gICAgICArIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKPiAgICAgICsjIFNvdXJjZXMKPiAgICAgICsjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIwo+ICAgICAgK0xJQkNMSUNLX0NPTU1JVF9IQVNIPWE1Mzg0ODM1YTZjYWMxMGY4
ZDQ0ZGE0ZWVlYThlYWE4ZjhlNmEwYzIKPiAgICAgICtMSUJDTElDS19VUkw9aHR0cHM6Ly9jb2Rl
bG9hZC5naXRodWIuY29tL2tvaGxlci9jbGljay96aXAvJChMSUJDTElDS19DT01NSVRfSEFTSCkK
PiAgICAgICskKGV2YWwgJChjYWxsIGZldGNoYXMsbGliY2xpY2ssJChMSUJDTElDS19VUkwpLGNs
aWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpLnppcCkpCj4gICAgICArTElCQ0xJQ0tfUEFUQ0hE
SVI9JChMSUJDTElDS19CQVNFKS9wYXRjaGVzCj4gICAgICArJChldmFsICQoY2FsbCBwYXRjaCxs
aWJjbGljaywkKExJQkNMSUNLX1BBVENIRElSKSxjbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNI
KSkpCj4gICAgICArCj4gICAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgICAgICsjIENv
cHkgVW5pa3JhZnQgZnJvbS90byBkZXZpY2VzCj4gICAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKPiAgICAgICtpZm5lcSAoJChDT05GSUdfTElCQ0xJQ0tfRUxFTVNfVU5JS1JBRlQpLCkKPiAg
ICAgICskKHNoZWxsIG1rZGlyIC1wICQoTElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNL
X0NPTU1JVF9IQVNIKS9lbGVtZW50cykKPiAgICAgICskKHNoZWxsIGNwIC1yICQoTElCQ0xJQ0tf
QkFTRSkvdW5pa3JhZnQgJChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlU
X0hBU0gpL2VsZW1lbnRzLykKPiAgICAgICtlbmRpZgo+ICAgICAgKwo+ICAgICAgKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCj4gICAgICArIyBIZWxwZXJzCj4gICAgICArIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKPiAgICAgICtMSUJDTElDS19FWFRSQUNURUQ9JChMSUJDTElDS19PUklHSU4pL2Ns
aWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpCj4gICAgICArTElCQ0xJQ0tfRUxFTUVOVFNfRElS
PSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9lbGVtZW50cwo+ICAgICAgK0xJQkNMSUNLX0JVSUxEVE9P
TD0kKExJQkNMSUNLX0VYVFJBQ1RFRCkvYmluL2NsaWNrLWJ1aWxkdG9vbAo+ICAgICAgK0xJQkNM
SUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNtcCBpcCB1bmlrcmFmdCBc
Cj4gICAgICArCQkgICBsb2NhbCBzaW1wbGUgc3RhbmRhcmQgdGNwdWRwIHRocmVhZHMKPiAgICAg
ICsKPiAgICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAgKyMgQ29uZmlnIE1lbnUg
LSBGaWx0ZXIgd2hpY2ggZWxlbWVudCBjYXRlZ29yaWVzIGFjdHVhbGx5IGdldCBidWlsdAo+ICAg
ICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gICAgICArTElCQ0xJQ0tfRUxFTV9ESVJTX1U9
JChjYWxsIHVjLCQoTElCQ0xJQ0tfRUxFTV9ESVJTKSkKPiAgICAgICtMSUJDTElDS19GSUxURVJF
RF9FTEVNX0RJUlNfVSA6PSAkKGZvcmVhY2ggViwgJChMSUJDTElDS19FTEVNX0RJUlNfVSksIFwK
PiAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlmICQoZmlsdGVyIHks
JChDT05GSUdfTElCQ0xJQ0tfRUxFTVNfJFYpKSwkVikpCj4gICAgICArTElCQ0xJQ0tfRklMVEVS
RURfRUxFTV9ESVJTPSQoY2FsbCBsYywkKExJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSU19VKSkK
PiAgICAgICsKPiAgICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAgKyMgQXBwLXNw
ZWNpZmljIFRhcmdldHMKPiAgICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAgKwo+
ICAgICAgKyMgUnVuIENsaWNrJ3MgY29uZmlndXJlIHNjcmlwdAo+ICAgICAgKyQoTElCQ0xJQ0tf
QlVJTEQpLy5jb25maWd1cmVkOiAkKExJQkNMSUNLX0JVSUxEKS8ub3JpZ2luCj4gICAgICArCSQo
Y2FsbCB2ZXJib3NlX2NtZCxDT05GSUdVUkUsbGliYXBwOiAkQCxcCj4gICAgICArCSAgICAgICBj
ZCAkKExJQkNMSUNLX0VYVFJBQ1RFRCkgJiYgLi9jb25maWd1cmUgLS1lbmFibGUtbWluaW9zIC0t
d2l0aC14ZW49JChMSUJDTElDS19CVUlMRCkgLS13aXRoLW1pbmlvcz0kKExJQkNMSUNLX0JVSUxE
KSAtLXdpdGgtbmV3bGliPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1sd2lwPSQoTElCQ0xJQ0tf
QlVJTEQpICYmIFwKPiAgICAgICsJICAgICAgICQoVE9VQ0gpICRAKQo+ICAgICAgKwo+ICAgICAg
KyMgR2VuZXJhdGUgZWxlbWVudCBidWlsZCBydWxlcyB1c2luZyBjbGljay1idWlsZHRvb2wKPiAg
ICAgICskKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNtazogJChMSUJDTElDS19CVUlMRCkvLmNv
bmZpZ3VyZWQgJChVS19DT05GSUdfT1VUKQo+ICAgICAgKwkkKGNhbGwgdmVyYm9zZV9jbWQsRUxF
TU1LLGxpYmFwcDogJEAsXAo+ICAgICAgKwkgICAgICAgY2QgJChMSUJDTElDS19FTEVNRU5UU19E
SVIpICYmIGVjaG8gIiQoTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTKSIgfCAkKExJQkNMSUNL
X0JVSUxEVE9PTCkgZmluZGVsZW0gLXIgdW5pa3JhZnQgLVggJChMSUJDTElDS19CVUlMRCkvZWxl
bWVudHMuZXhjbHVkZSB8IGdyZXAgLUUgIl5bXiNdIiB8IGF3ayAne3ByaW50ICJMSUJDTElDS19T
UkNTLXkgKz0gJCQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9lbGVtZW50cy8iICQkMX0nID4gJEApCj4g
ICAgICArCj4gICAgICArIyBHZW5lcmF0ZSBlbGVtZW50cy5jYyBhbmQgYWRkIGl0IHRvIHRoZSBi
dWlsZCBsaXN0Cj4gICAgICArJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2M6ICQoTElCQ0xJ
Q0tfQlVJTEQpLy5lbGVtZW50c21rCj4gICAgICArCSQoY2FsbCB2ZXJib3NlX2NtZCxFTEVNQ0Ms
bGliYXBwOiAkQCxcCj4gICAgICArCSAgICAgICBlY2hvICIkKExJQkNMSUNLX0ZJTFRFUkVEX0VM
RU1fRElSUykiIHwgJChMSUJDTElDS19CVUlMRFRPT0wpIGZpbmRlbGVtIC1yIHVuaWtyYWZ0IC1w
ICQoTElCQ0xJQ0tfRUxFTUVOVFNfRElSKSAtWCAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5l
eGNsdWRlID4gJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzY29uZiAmJiBcCj4gICAgICArCSAg
ICAgICAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZWxlbTJleHBvcnQgPCAkKExJQkNMSUNLX0JVSUxE
KS8uZWxlbWVudHNjb25mID4gJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2MpCj4gICAgICAr
Cj4gICAgICArJChMSUJDTElDS19CVUlMRCkvLnByZXBhcmVkOiAkKExJQkNMSUNLX0JVSUxEKS9l
bGVtZW50cy5jYwo+ICAgICAgKwo+ICAgICAgK1VLX1BSRVBBUkUgKz0gJChMSUJDTElDS19CVUlM
RCkvLnByZXBhcmVkCj4gICAgICArCj4gICAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAg
ICAgICsjIEFwcCBpbmNsdWRlcywgY29tcGlsZSBmbGFncwo+ICAgICAgKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4gICAgICArTElCQ0xJQ0tfQ0lOQ0xVREVTICAgKz0gLUkkKExJQkNMSUNLX0JB
U0UpL2luY2x1ZGUgICAgICAgIFwKPiAgICAgICsJCSAgICAgICAgLUkkKExJQkNMSUNLX0VYVFJB
Q1RFRCkJICAgICBcCj4gICAgICArCQkJLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkvaW5jbHVkZSBc
Cj4gICAgICArCQkJLUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRlL3Bvc2l4Cj4gICAgICAr
TElCQ0xJQ0tfQ1hYSU5DTFVERVMgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2luY2x1ZGUgICAgICAg
IFwKPiAgICAgICsJCSAgICAgICAgLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkgICAgICAgICAgIFwK
PiAgICAgICsJCQktSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwKPiAgICAgICsJCQkt
SSQoTElCTFdJUF9MV0lQX1NSQ1MpL2luY2x1ZGUvcG9zaXgKPiAgICAgICsKPiAgICAgICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAgKyMgR2xvYmFsIGZsYWdzCj4gICAgICArIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKPiAgICAgICtMSUJDTElDS19DRkxBR1MteSAgICAgICArPSAtRExX
SVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElDS19VU0VSTEVWRUwKPiAgICAgICtMSUJDTElDS19D
WFhGTEFHUy15ICAgICArPSAtRExXSVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElDS19VU0VSTEVW
RUwgLURIQVZFX0lQNgo+ICAgICAgK0xJQkNMSUNLX0NYWEZMQUdTICAgICAgICs9IC1mbm8tZXhj
ZXB0aW9ucyAtZm5vLXJ0dGkgLXN0ZD1jKysxMQo+ICAgICAgKwo+ICAgICAgKyMgU3VwcHJlc3Mg
c29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sgbmVhdGVyCj4gICAg
ICArTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MgOj0gLVduby1zdHJpY3QtYWxpYXNpbmcKPiAgICAg
ICtMSUJDTElDS19DRkxBR1MteSArPSAkKExJQkNMSUNLX1NVUFBSRVNTX0ZMQUdTKQo+ICAgICAg
K0xJQkNMSUNLX0NYWEZMQUdTLXkgKz0gJChMSUJDTElDS19TVVBQUkVTU19GTEFHUykKPiAgICAg
ICsKPiAgICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAgKyMgVW5pa3JhZnQgPC0+
IENsaWNrIGdsdWUgY29kZQo+ICAgICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gICAgICAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfQkFTRSkvY2xpY2suY2MKPiAgICAgICsKPiAg
ICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAgKyMgQ2xpY2sgc291cmNlcwo+ICAg
ICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQo
TElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXJjaGl2ZS5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2FyZ3MuY2MKPiAgICAgICtMSUJDTElDS19T
UkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9hdG9taWMuY2MKPiAgICAgICtMSUJD
TElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9iaWdoYXNobWFwX2FyZW5h
LmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIv
Yml0dmVjdG9yLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFD
VEVEKS9saWIvY29uZnBhcnNlLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJ
Q0tfRVhUUkFDVEVEKS9saWIvY3JjMzIuYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL2RyaXZlci5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2VsZW1lbnQuY2MKPiAgICAgICtMSUJDTElDS19T
UkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lbGVtZmlsdGVyLmNjCj4gICAgICAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZXJyb3IuY2MKPiAg
ICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ldGhlcmFk
ZHJlc3MuY2MKPiAgICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9nYXByYXRlLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhU
UkFDVEVEKS9saWIvZ2x1ZS5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNL
X0VYVFJBQ1RFRCkvbGliL2hhbmRsZXJjYWxsLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaGFzaGFsbG9jYXRvci5jYwo+ICAgICAgK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2luX2Nrc3VtLmMKPiAgICAg
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pbnRlZ2Vycy5j
Ywo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lw
YWRkcmVzcy5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RF
RCkvbGliL2lwZmxvd2lkLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tf
RVhUUkFDVEVEKS9saWIvaXB0YWJsZS5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL2xleGVyLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWFzdGVyLmNjCj4gICAgICArTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWQ1LmNjCj4gICAgICArTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbmFtZWluZm8uY2MKPiAgICAgICtM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ub3RpZmllci5jYwo+
ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3BhY2tl
dC5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3JvdXRlci5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RF
RCkvbGliL3JvdXRlcnRocmVhZC5jYwo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNM
SUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlcnZpc2l0b3IuY2MKPiAgICAgICtMSUJDTElDS19TUkNT
LXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9zdHJhY2N1bS5jYwo+ICAgICAgK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3N0cmluZy5jYwo+ICAgICAg
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3Rhc2suY2MKPiAg
ICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi90aW1lci5j
Ywo+ICAgICAgK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3Rp
bWVyc2V0LmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9saWIvdGltZXN0YW1wLmNjCj4gICAgICArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tf
RVhUUkFDVEVEKS9saWIvdmFyaWFibGVlbnYuY2MKPiAgICAgICtMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZ0YWJsZS5jYwo+ICAgICAgK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwNmFkZHJlc3MuY2MKPiAgICAgICtM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZmbG93aWQuY2MK
PiAgICAgICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9zZWxl
Y3RzZXQuY2MKPiAgICAgICsKPiAgICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAg
KyMgQ2xpY2sgZWxlbWVudHMKPiAgICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAgICAg
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYwo+ICAgICAg
Ky1pbmNsdWRlICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rCj4gICAgICAtLQo+ICAgICAg
Mi4yMS4wCj4gICAgICAKPiAgICAgIAo+IAoKLS0gCkRyLiBGbG9yaWFuIFNjaG1pZHQK44OV44Ot
44O844Oq44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2VhcmNoIFNjaWVudGlzdCwKU3lzdGVt
cyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFib3JhdG9yaWVzIEV1cm9wZQpLdXJm
w7xyc3Rlbi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVyZwpUZWwuICAgICArNDkgKDApNjIy
MSA0MzQyLTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQyLTE1NQplLW1haWw6ICBmbG9yaWFu
LnNjaG1pZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0IEFtdHNnZXJpY2h0IE1hbm5oZWlt
LCBHZXJtYW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 14:21:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 14:21: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 1hYAJV-0005K4-Co; Tue, 04 Jun 2019 14:21: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=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYAJU-0005Jz-7O
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 14:21:20 +0000
X-Inumbo-ID: 036ec636-86d4-11e9-9430-4742f6d3351b
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 036ec636-86d4-11e9-9430-4742f6d3351b;
 Tue, 04 Jun 2019 14:21:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id CEBE410529A;
 Tue,  4 Jun 2019 16:21:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gkfXJZPyuwx8; Tue,  4 Jun 2019 16:21:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id AB2C11050EE
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 16:21:15 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 16:21:15
 +0200
To: Felipe Huici <Felipe.Huici@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-10-florian.schmidt@neclab.eu>
 <0B426607-33BB-46CA-AC68-DF5EB8639356@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <a95460bb-f84e-5ab2-3325-2bfd3a13b0f5@neclab.eu>
Date: Tue, 4 Jun 2019 16:21:15 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <0B426607-33BB-46CA-AC68-DF5EB8639356@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 09/11] support for loading
 click configs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmVsaXBlLAoKc2luY2UgSSdtIGRvaW5nIGEgdjIgYW55d2F5LCBJIGNhbiBnaXZlIHRoYXQg
YSBzaG90LgoKT24gNi80LzE5IDQ6MTYgUE0sIEZlbGlwZSBIdWljaSB3cm90ZToKPiBIaSBGbG9y
aWFuLAo+IAo+IFRoaXMgcGF0Y2ggbG9va3MgZ29vZC4gSXQgbWlnaHQgYmUgY2xlYXJlciBpZiB0
aGUgY29tbWl0IG1lc3NhZ2Ugc2FpZCB0aGUgaW5pdHJkIGZpbGUgc2hvdWxkIGJlIGEgcGxhaW4g
dGV4dCBmaWxlICh1bmxpa2UgaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgpLCBidXQgSSBjYW4gZml4
IHRoYXQgb24gdXBzdHJlYW0uCj4gCj4gVGhhbmtzLAo+IAo+IC0tIEZlbGlwZQo+IAo+IFJldmll
d2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+Cj4gCj4gCj4g77u/
T24gMDIuMDYuMTksIDA3OjUzLCAiRmxvcmlhbiBTY2htaWR0IiA8Rmxvcmlhbi5TY2htaWR0QG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gICAgICBUaGUgZXhwZWN0ZWQgd2F5IGlzIHRvIHByb3ZpZGUg
YSBjb25maWcgZmlsZSBhcyBpbml0cmQuIElmIG5vIGluaXRyZCBpcwo+ICAgICAgcHJvdmlkZWQs
IGNsaWNrIHdpbGwgZmFsbCBiYWNrIHRvIGEgc3RhdGljLCBjb21waWxlZC1pbiBjb25maWcgdGhh
dAo+ICAgICAgcmVwbGllcyB0byBwaW5ncy4KPiAgICAgIAo+ICAgICAgU2lnbmVkLW9mZi1ieTog
RmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pgo+ICAgICAgLS0tCj4g
ICAgICAgY2xpY2suY2MgICAgICAgICAgICAgICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKy0tLS0tCj4gICAgICAgaW5jbHVkZS9zdGF0aWNfY29uZmlnLmggfCAyMiArKysr
KysrKysrKysrKysrKysrKysrCj4gICAgICAgMiBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25z
KCspLCA1IGRlbGV0aW9ucygtKQo+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0
YXRpY19jb25maWcuaAo+ICAgICAgCj4gICAgICBkaWZmIC0tZ2l0IGEvY2xpY2suY2MgYi9jbGlj
ay5jYwo+ICAgICAgaW5kZXggYTNiZmJhOC4uODVhOTM4YiAxMDA2NDQKPiAgICAgIC0tLSBhL2Ns
aWNrLmNjCj4gICAgICArKysgYi9jbGljay5jYwo+ICAgICAgQEAgLTUyLDExICs1MiwxNCBAQCBl
eHRlcm4gIkMiewo+ICAgICAgICNpbmNsdWRlIDxjbGljay9zdHJhY2N1bS5oaD4KPiAgICAgICAj
aW5jbHVkZSA8Y2xpY2svZHJpdmVyLmhoPgo+ICAgICAgIAo+ICAgICAgKyNpbmNsdWRlIDxzdGF0
aWNfY29uZmlnLmg+Cj4gICAgICArCj4gICAgICAgI2luY2x1ZGUgPHVrL3NjaGVkLmg+Cj4gICAg
ICAgI2luY2x1ZGUgPHVrL3RocmVhZC5oPgo+ICAgICAgKyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4K
PiAgICAgICsjaW5jbHVkZSA8dWsvcGxhdC9tZW1vcnkuaD4KPiAgICAgICAKPiAgICAgICBpbnQg
Y2xpY2tfbnRocmVhZHMgPSAxOwo+ICAgICAgLQo+ICAgICAgIHZvaWQgKl9fZHNvX2hhbmRsZSA9
IE5VTEw7Cj4gICAgICAgCj4gICAgICAgI2RlZmluZSBOTE9HKGZtdCwgLi4uKQo+ICAgICAgQEAg
LTExOSw2ICsxMjIsMzIgQEAgcmVhZF9jb25maWcodV9pbnQgcmlkID0gMCkKPiAgICAgICBzdGF0
aWMgRXJyb3JIYW5kbGVyICplcnJoOwo+ICAgICAgIHN0YXRpYyBNYXN0ZXIgbWFzdGVyKDEpOwo+
ICAgICAgIAo+ICAgICAgK3N0YXRpYyBTdHJpbmcgKgo+ICAgICAgK2dldF9jb25maWcoKQo+ICAg
ICAgK3sKPiAgICAgICsJU3RyaW5nICpjZmc7Cj4gICAgICArCXN0cnVjdCB1a3BsYXRfbWVtcmVn
aW9uX2Rlc2MgaW1nOwo+ICAgICAgKwljaGFyICpjc3RyOwo+ICAgICAgKwlzaXplX3QgY3N0cl9s
ZW47Cj4gICAgICArCj4gICAgICArCS8qIEZpcnN0LCB0cnkgaW5pdHJkICovCj4gICAgICArCWlm
ICh1a3BsYXRfbWVtcmVnaW9uX2ZpbmRfaW5pdHJkMCgmaW1nKSA+PSAwKSB7Cj4gICAgICArCQlj
c3RyID0gKGNoYXIgKilpbWcuYmFzZTsKPiAgICAgICsJCWNzdHJfbGVuID0gaW1nLmxlbjsKPiAg
ICAgICsJfSBlbHNlIHsKPiAgICAgICsJCS8qIElmIHdlIGNhbid0IGZpbmQgYSBjb25maWc6IHVz
ZSBhIGZhbGxiYWNrIG9uZSBzdGF0aWNhbGx5Cj4gICAgICArCQkgKiBjb21waWxlZCBpbi4KPiAg
ICAgICsJCSAqLwo+ICAgICAgKwkJdWtfcHJfd2FybigiQ291bGQgbm90IGZpbmQgYSBjb25maWcs
IHVzaW5nIHN0YW5kYXJkIGNvbmZpZyFcbiIpOwo+ICAgICAgKwkJY3N0ciA9IENPTkZJR1NUUklO
RzsKPiAgICAgICsJCWNzdHJfbGVuID0gc3RybGVuKENPTkZJR1NUUklORyk7Cj4gICAgICArCX0K
PiAgICAgICsJY2ZnID0gbmV3IFN0cmluZyhjc3RyLCBjc3RyX2xlbik7Cj4gICAgICArCXByaW50
ZigiUmVjZWl2ZWQgY29uZmlnIChsZW5ndGggJWQpOlxuIiwgY2ZnLT5sZW5ndGgoKSk7Cj4gICAg
ICArCXByaW50ZigiJXNcbiIsIGNmZy0+Y19zdHIoKSk7Cj4gICAgICArCXJldHVybiBjZmc7Cj4g
ICAgICArfQo+ICAgICAgKwo+ICAgICAgIHN0cnVjdCByb3V0ZXJfaW5zdGFuY2Ugewo+ICAgICAg
IAlSb3V0ZXIgKnI7Cj4gICAgICAgCXVfaW50IGZfc3RvcDsKPiAgICAgIEBAIC0xMjcsOSArMTU2
LDggQEAgc3RydWN0IHJvdXRlcl9pbnN0YW5jZSB7Cj4gICAgICAgdm9pZAo+ICAgICAgIHJvdXRl
cl90aHJlYWQodm9pZCAqdGhyZWFkX2RhdGEpCj4gICAgICAgewo+ICAgICAgLQl1X2ludCAqcmlk
ID0gKHVfaW50KikgdGhyZWFkX2RhdGE7Cj4gICAgICAtCVN0cmluZyAqY29uZmlnID0gbmV3IFN0
cmluZzsgLy9yZWFkX2NvbmZpZygqcmlkKTsKPiAgICAgIC0Jc3RydWN0IHJvdXRlcl9pbnN0YW5j
ZSAqcmkgPSAmcm91dGVyX2xpc3RbKnJpZF07Cj4gICAgICArCXN0cnVjdCByb3V0ZXJfaW5zdGFu
Y2UgKnJpID0gJnJvdXRlcl9saXN0Wyh1bnNpZ25lZCBsb25nKXRocmVhZF9kYXRhXTsKPiAgICAg
ICsJU3RyaW5nICpjb25maWcgPSBnZXRfY29uZmlnKCk7Cj4gICAgICAgCj4gICAgICAgCXJpLT5y
ID0gY2xpY2tfcmVhZF9yb3V0ZXIoKmNvbmZpZywgdHJ1ZSwgZXJyaCwgZmFsc2UsICZtYXN0ZXIp
Owo+ICAgICAgIAlpZiAocmktPnItPmluaXRpYWxpemUoZXJyaCkgPCAwKSB7Cj4gICAgICBAQCAt
MTUwLDcgKzE3OCw2IEBAIHJvdXRlcl90aHJlYWQodm9pZCAqdGhyZWFkX2RhdGEpCj4gICAgICAg
Cj4gICAgICAgCUxPRygiTWFzdGVyL2RyaXZlciBzdG9wcGVkLCBjbG9zaW5nIHJvdXRlcl90aHJl
YWQiKTsKPiAgICAgICAJZnJlZShjb25maWcpOwo+ICAgICAgLQlmcmVlKHJpZCk7Cj4gICAgICAg
fQo+ICAgICAgIAo+ICAgICAgIHZvaWQKPiAgICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL3N0YXRp
Y19jb25maWcuaCBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCj4gICAgICBuZXcgZmlsZSBtb2Rl
IDEwMDY0NAo+ICAgICAgaW5kZXggMDAwMDAwMC4uODVjNWQxMgo+ICAgICAgLS0tIC9kZXYvbnVs
bAo+ICAgICAgKysrIGIvaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgKPiAgICAgIEBAIC0wLDAgKzEs
MjIgQEAKPiAgICAgICtzdGF0aWMgY2hhciBDT05GSUdTVFJJTkdbXSA9ICIgICAgZGVmaW5lKCRJ
UCAxMC4wLjEwLjEyMyk7XG5cCj4gICAgICArICAgIGRlZmluZSgkTUFDMCAxMToyMjozMzo0NDo1
NTo2Nik7XG5cCj4gICAgICArXG5cCj4gICAgICArICAgIHNvdXJjZSA6OiBGcm9tRGV2aWNlO1xu
XAo+ICAgICAgKyAgICBzaW5rICAgOjogVG9EZXZpY2U7XG5cCj4gICAgICArICAgIC8vIGNsYXNz
aWZpZXMgcGFja2V0cyBcblwKPiAgICAgICsgICAgYyA6OiBDbGFzc2lmaWVyKFxuXAo+ICAgICAg
KyAgICAgICAgMTIvMDgwNiAyMC8wMDAxLCAvLyBBUlAgUmVxdWVzdHMgZ29lcyB0byBvdXRwdXQg
MFxuXAo+ICAgICAgKyAgICAgICAgMTIvMDgwNiAyMC8wMDAyLCAvLyBBUlAgUmVwbGllcyB0byBv
dXRwdXQgMVxuXAo+ICAgICAgKyAgICAgICAgMTIvMDgwMCAxNC80NSAzNC8wOCwgLy8gSUNNUCBS
ZXF1ZXN0cyB0byBvdXRwdXQgMlxuXAo+ICAgICAgKyAgICAgICAgLSk7IC8vIHdpdGhvdXQgYSBt
YXRjaCB0byBvdXRwdXQgM1xuXAo+ICAgICAgK1xuXAo+ICAgICAgKyAgICBhcnBxIDo6IEFSUFF1
ZXJpZXIoJElQLCAkTUFDMCk7XG5cCj4gICAgICArICAgIGFycHIgOjogQVJQUmVzcG9uZGVyKCRJ
UCAkTUFDMCk7XG5cCj4gICAgICArXG5cCj4gICAgICArICAgIHNvdXJjZSAtPiBjO1xuXAo+ICAg
ICAgKyAgICBjWzBdIC0+IENoZWNrQVJQSGVhZGVyKDE0KSAtPiBBUlBQcmludCAtPiBhcnByIC0+
IEFSUFByaW50IC0+IHNpbms7XG5cCj4gICAgICArICAgIGNbMV0gLT4gWzFdYXJwcTtcblwKPiAg
ICAgICsgICAgSWRsZSAtPiBbMF1hcnBxO1xuXAo+ICAgICAgKyAgICBhcnBxIC0+IHNpbms7XG5c
Cj4gICAgICArICAgIGNbMl0gLT4gQ2hlY2tJUEhlYWRlcigxNCkgLT4gSVBQcmludCAtPiBJQ01Q
UGluZ1Jlc3BvbmRlcigpIC0+IEV0aGVyTWlycm9yKCkgLT4gSVBQcmludCAtPiBzaW5rO1xuXAo+
ICAgICAgKyAgICBjWzNdIC0+IERpc2NhcmQ7IjsKPiAgICAgIC0tCj4gICAgICAyLjIxLjAKPiAg
ICAgIAo+ICAgICAgCj4gCgotLSAKRHIuIEZsb3JpYW4gU2NobWlkdArjg5Xjg63jg7zjg6rjgqLj
g7Pjg7vjgrfjg6Xjg5/jg4Pjg4gKUmVzZWFyY2ggU2NpZW50aXN0LApTeXN0ZW1zIGFuZCBNYWNo
aW5lIExlYXJuaW5nIEdyb3VwCk5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlCkt1cmbDvHJzdGVuLUFu
bGFnZSAzNiwgRC02OTExNSBIZWlkZWxiZXJnClRlbC4gICAgICs0OSAoMCk2MjIxIDQzNDItMjY1
CkZheDogICAgICs0OSAoMCk2MjIxIDQzNDItMTU1CmUtbWFpbDogIGZsb3JpYW4uc2NobWlkdEBu
ZWNsYWIuZXUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJlZ2lzdGVyZWQgYXQgQW10c2dlcmljaHQgTWFubmhlaW0sIEdlcm1hbnks
IEhSQjcyODU1OAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 15:17:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 15:17: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 1hYBBV-000242-Ut; Tue, 04 Jun 2019 15:17:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Shkz=UD=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYBBV-00023x-Cu
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 15:17:09 +0000
X-Inumbo-ID: cfeefb7e-86db-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cfeefb7e-86db-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 15:17:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 4AD2C1052E2;
 Tue,  4 Jun 2019 17:17:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id wsukiKpPcgTX; Tue,  4 Jun 2019 17:17:05 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 27EA11052D3
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 17:17:05 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 4 Jun 2019 17:17:04
 +0200
To: Felipe Huici <Felipe.Huici@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-2-florian.schmidt@neclab.eu>
 <7FC78D12-83A8-4F79-86E5-C930F5EC9B3C@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <fb264956-20c4-981e-fe03-2b2b6669635e@neclab.eu>
Date: Tue, 4 Jun 2019 17:17:04 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <7FC78D12-83A8-4F79-86E5-C930F5EC9B3C@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Ck9uIDYvNC8xOSA0OjAxIFBNLCBGZWxpcGUgSHVpY2kgd3JvdGU6Cj4gSGkgRmxvcmlhbiwKPiAK
PiBUaGFua3MgZm9yIHRoZSBzZXJpZXMhIFJlZ2FyZGluZyB0aGlzIHBhdGNoOgo+IAo+ICogVGhl
IGxpY2Vuc2UgaGVhZGVycyBhcmUgbWlzc2luZwoKRm9yIE1ha2VmaWxlLnVrIHlvdSBtZWFuPyBJ
J2xsIGFkZCBpdC4KCj4gKiBUaGUgLm1kIGZpbGVzIGFyZSBtaXNzaW5nCgpSaWdodCwgSSdsbCBh
ZGQgdGhlbQoKPiAqIFdoZW4gY29uZmlndXJpbmcgbHdpcCwgSSBub3RpY2VkIHRoYXQgaWYgdGhl
IG9wdGlvbiAiQXV0b21hdGljYWxseSBhdHRhY2ggbmV0aWZzIiBpcyBzZWxlY3RlZCwgdGhlIHJv
dXRlciBmYWlscyB0byBpbml0aWFsaXplICgiRmFpbGVkIHRvIGNvbmZpZ3VyZSBkZXZpY2UiLCBm
cm9tIGNsaWNrLmNjKS4gQ291bGQgeW91IHBsZWFzZSB1bnNlbGVjdCB0aGlzIGJ5IGFkZGluZyBh
biBvcHRpb24gaW4gQ29uZmlnLnVrPwoKVGhpcyBpcyBhIGJpdCBtb3JlIHRyaWNreSwgYmVjYXVz
ZSB0aGVyZSdzIG5vICJkZXNlbGVjdCIgZnVuY3Rpb25hbGl0eSAKaW4ga2NvbmZpZy4gSXQgYWxz
byBpcyBwcm9iYWJseSB2ZXJ5IGNvbmZ1c2luZyB0byBkbyBhICJkZXBlbmRzIG9uIAohTFdJUF9B
VVRPSUZBQ0UiLCBiZWNhdXNlIGl0J3Mgbm90IHZlcnkgY2xlYXIgaW4gbWVudWNvbmZpZyB3aHkg
eW91IApzdWRkZW5seSBjYW4ndCBlbmFibGUgYW5kIGNob29zZSBvcHRpb25zIGZvciBjbGljayBh
bnkgbW9yZS4KClRoZSBuZXh0IGJlc3QgdGhpbmcsIGV2ZW4gdGhvdWdoIHNsaWdodGx5IHVnbHks
IG1pZ2h0IGJlIHRvIGFkZCBhIGNoZWNrIAp0byBDbGljaydzIE1ha2VmaWxlLnVrIHRoYXQgc3Rv
cHMgdGhlIGJ1aWxkIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiAKTFdJUF9BVVRPSUZBQ0UgaXMg
c2VsZWN0ZWQuCgpDaGVlcnMsCkZsb3JpYW4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJM-0001W7-OV; Tue, 04 Jun 2019 16:29:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJL-0001W2-Ju
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:19 +0000
X-Inumbo-ID: e4eb3f8c-86e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e4eb3f8c-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 840741052FB;
 Tue,  4 Jun 2019 18:29:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Bxcd2S2O3OIb; Tue,  4 Jun 2019 18:29:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 62EE81052F7
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:15 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:15 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:34 +0200
Message-ID: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 00/10] introduce syscall_shim
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBzZXJpZXMgYWRkcyBhIG5ldyBsaWJyYXJ5OiBzeXNjYWxsX3NoaW0uIFRoaXMgcHJvdmlk
ZXMgYQpmcmFtZXdvcmsgdG8gbWFwIGludm9jYXRpb25zIHN1Y2ggYXMgc3lzY2FsbChTWVNfZm9v
LCBiYXIsIGJheikgdG8gdGhlCnJlc3BvbnNpYmxlIGZ1bmN0aW9uIGluIHRoZSBVbmlrcmFmdC4g
T3IgdG8gdGhlIHN0dWIsIGlmIHRoZSBzeXNjYWxsCmlzIG5vdCBpbXBsZW1lbnRlZC4KCll1cmkg
Vm9sY2hrb3YgKDEwKToKICBpbmNsdWRlOiBtb3ZlIFVLX0NPTkNBVCB0byBlc3NlbnRpYWxzCiAg
aW1wb3J0IHN5c2NhbGwuaC5pbiBmcm9tIG11c2wKICByZW1vdmUgZHVwbGljYXRlIHN5c2NhbGxz
CiAgYnVpbGQ6IGludHJvZHVjZSB1a19ta19kaXIKICBsaWIvc3lzY2FsbF9zaGltOiBnZW5lcmF0
ZSBiYXNlIGhlYWRlcnMKICBsaWIvc3lzY2FsbF9zaGltOiBnZW5lcmF0ZSBwcm92aWRlZF9zeXNj
YWxscy5oCiAgbGliL3N5c2NhbGxfc2hpbTogaW50cm9kdWNlIHN5c2NhbGxzIG1hY3JvIGxheWVy
CiAgbGliL3Zmc2NvcmU6IHN5c2NhbGwgd3JpdGV2CiAgbGliL3N5c2NhbGxfc2hpbTogaW50cm9k
dWNlIHVrX3N5c2NhbGxfZHluYW1pYwogIGRvYzogYWRkIHNlY3Rpb24gYWJvdXQgc3lzY2FsbCBz
aGltIGxheWVyCgogZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QgICAgICAgICAgICAgfCAg
MzYgKysrCiBpbmNsdWRlL3VrL2Vzc2VudGlhbHMuaCAgICAgICAgICAgICAgICAgICB8ICAgNSAr
CiBsaWIvQ29uZmlnLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIv
TWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvc3lzY2Fs
bF9zaGltL0NvbmZpZy51ayAgICAgICAgICAgICAgICB8ICAgMyArCiBsaWIvc3lzY2FsbF9zaGlt
L01ha2VmaWxlLnVrICAgICAgICAgICAgICB8ICA2NSArKysrCiBsaWIvc3lzY2FsbF9zaGltL2Fy
Y2gvYXJtL3N5c2NhbGwuaC5pbiAgICB8IDM2MiArKysrKysrKysrKysrKysrKysrKysrCiBsaWIv
c3lzY2FsbF9zaGltL2FyY2gvYXJtNjQvc3lzY2FsbC5oLmluICB8IDI3OCArKysrKysrKysrKysr
KysrKwogbGliL3N5c2NhbGxfc2hpbS9hcmNoL3g4Nl82NC9zeXNjYWxsLmguaW4gfCAzMzYgKysr
KysrKysrKysrKysrKysrKysKIGxpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQgICAgICAg
ICAgIHwgIDE1ICsKIGxpYi9zeXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3ayAgICAgICAgICAgIHwg
IDQwICsrKwogbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrICAgICAgICAgICAgfCAgIDgg
KwogbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaCAgICAgfCAxMDIgKysrKysr
CiBsaWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmggICAgICAgICAgICB8ICAgNCAtCiBsaWIv
dmZzY29yZS9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogbGliL3Zmc2Nv
cmUvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL3Zmc2NvcmUvbWFp
bi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3VwcG9ydC9idWlsZC9NYWtlZmls
ZS5ydWxlcyAgICAgICAgICAgICAgfCAgIDggKy0KIDE4IGZpbGVzIGNoYW5nZWQsIDEyNjkgaW5z
ZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2Fs
bF9zaGltL0NvbmZpZy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vTWFr
ZWZpbGUudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5
c2NhbGwuaC5pbgogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02
NC9zeXNjYWxsLmguaW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gv
eDg2XzY0L3N5c2NhbGwuaC5pbgogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0v
ZW50cnkuYy5pbl9lbmQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2dlbl9l
bnRyeS5hd2sKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2dlbl9zdHVicy5h
d2sKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2Fs
bC5oCgotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJO-0001WZ-R3; Tue, 04 Jun 2019 16:29:22 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJN-0001WJ-S0
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:21 +0000
X-Inumbo-ID: e6ec1931-86e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e6ec1931-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E4A9B10530F;
 Tue,  4 Jun 2019 18:29:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id EtaOlHkkvenH; Tue,  4 Jun 2019 18:29:18 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C00ED1052F7
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:18 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:18 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:36 +0200
Message-ID: <20190604162844.2712-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 02/10] import syscall.h.in from musl
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Q29tbWl0IDY1MTYyODJkMmFkZmFkMmM3ZTY2ZDg1NGNkZTMzNTcxMjBjNzVkYmQKU2lnbmVkLW9m
Zi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3N5
c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4gICAgfCAzNjQgKysrKysrKysrKysrKysr
KysrKysrKwogbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybTY0L3N5c2NhbGwuaC5pbiAgfCAyNzgg
KysrKysrKysrKysrKysrKysKIGxpYi9zeXNjYWxsX3NoaW0vYXJjaC94ODZfNjQvc3lzY2FsbC5o
LmluIHwgMzM2ICsrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDk3OCBpbnNl
cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9z
eXNjYWxsLmguaW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJt
NjQvc3lzY2FsbC5oLmluCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9hcmNo
L3g4Nl82NC9zeXNjYWxsLmguaW4KCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2FyY2gv
YXJtL3N5c2NhbGwuaC5pbiBiL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmlu
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4xM2EzYjY2YwotLS0gL2Rldi9u
dWxsCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluCkBAIC0wLDAg
KzEsMzY0IEBACisjZGVmaW5lIF9fTlJfcmVzdGFydF9zeXNjYWxsCTAKKyNkZWZpbmUgX19OUl9l
eGl0CTEKKyNkZWZpbmUgX19OUl9mb3JrCTIKKyNkZWZpbmUgX19OUl9yZWFkCTMKKyNkZWZpbmUg
X19OUl93cml0ZQk0CisjZGVmaW5lIF9fTlJfb3Blbgk1CisjZGVmaW5lIF9fTlJfY2xvc2UJNgor
I2RlZmluZSBfX05SX2NyZWF0CTgKKyNkZWZpbmUgX19OUl9saW5rCTkKKyNkZWZpbmUgX19OUl91
bmxpbmsJMTAKKyNkZWZpbmUgX19OUl9leGVjdmUJMTEKKyNkZWZpbmUgX19OUl9jaGRpcgkxMgor
I2RlZmluZSBfX05SX21rbm9kCTE0CisjZGVmaW5lIF9fTlJfY2htb2QJMTUKKyNkZWZpbmUgX19O
Ul9sY2hvd24JMTYKKyNkZWZpbmUgX19OUl9sc2VlawkxOQorI2RlZmluZSBfX05SX2dldHBpZAky
MAorI2RlZmluZSBfX05SX21vdW50CTIxCisjZGVmaW5lIF9fTlJfc2V0dWlkCTIzCisjZGVmaW5l
IF9fTlJfZ2V0dWlkCTI0CisjZGVmaW5lIF9fTlJfcHRyYWNlCTI2CisjZGVmaW5lIF9fTlJfcGF1
c2UJMjkKKyNkZWZpbmUgX19OUl9hY2Nlc3MJMzMKKyNkZWZpbmUgX19OUl9uaWNlCTM0CisjZGVm
aW5lIF9fTlJfc3luYwkzNgorI2RlZmluZSBfX05SX2tpbGwJMzcKKyNkZWZpbmUgX19OUl9yZW5h
bWUJMzgKKyNkZWZpbmUgX19OUl9ta2RpcgkzOQorI2RlZmluZSBfX05SX3JtZGlyCTQwCisjZGVm
aW5lIF9fTlJfZHVwCTQxCisjZGVmaW5lIF9fTlJfcGlwZQk0MgorI2RlZmluZSBfX05SX3RpbWVz
CTQzCisjZGVmaW5lIF9fTlJfYnJrCTQ1CisjZGVmaW5lIF9fTlJfc2V0Z2lkCTQ2CisjZGVmaW5l
IF9fTlJfZ2V0Z2lkCTQ3CisjZGVmaW5lIF9fTlJfZ2V0ZXVpZAk0OQorI2RlZmluZSBfX05SX2dl
dGVnaWQJNTAKKyNkZWZpbmUgX19OUl9hY2N0CTUxCisjZGVmaW5lIF9fTlJfdW1vdW50Mgk1Mgor
I2RlZmluZSBfX05SX2lvY3RsCTU0CisjZGVmaW5lIF9fTlJfZmNudGwJNTUKKyNkZWZpbmUgX19O
Ul9zZXRwZ2lkCTU3CisjZGVmaW5lIF9fTlJfdW1hc2sJNjAKKyNkZWZpbmUgX19OUl9jaHJvb3QJ
NjEKKyNkZWZpbmUgX19OUl91c3RhdAk2MgorI2RlZmluZSBfX05SX2R1cDIJNjMKKyNkZWZpbmUg
X19OUl9nZXRwcGlkCTY0CisjZGVmaW5lIF9fTlJfZ2V0cGdycAk2NQorI2RlZmluZSBfX05SX3Nl
dHNpZAk2NgorI2RlZmluZSBfX05SX3NpZ2FjdGlvbgk2NworI2RlZmluZSBfX05SX3NldHJldWlk
CTcwCisjZGVmaW5lIF9fTlJfc2V0cmVnaWQJNzEKKyNkZWZpbmUgX19OUl9zaWdzdXNwZW5kCTcy
CisjZGVmaW5lIF9fTlJfc2lncGVuZGluZwk3MworI2RlZmluZSBfX05SX3NldGhvc3RuYW1lCTc0
CisjZGVmaW5lIF9fTlJfc2V0cmxpbWl0CTc1CisjZGVmaW5lIF9fTlJfZ2V0cnVzYWdlCTc3Cisj
ZGVmaW5lIF9fTlJfZ2V0dGltZW9mZGF5CTc4CisjZGVmaW5lIF9fTlJfc2V0dGltZW9mZGF5CTc5
CisjZGVmaW5lIF9fTlJfZ2V0Z3JvdXBzCTgwCisjZGVmaW5lIF9fTlJfc2V0Z3JvdXBzCTgxCisj
ZGVmaW5lIF9fTlJfc3ltbGluawk4MworI2RlZmluZSBfX05SX3JlYWRsaW5rCTg1CisjZGVmaW5l
IF9fTlJfdXNlbGliCTg2CisjZGVmaW5lIF9fTlJfc3dhcG9uCTg3CisjZGVmaW5lIF9fTlJfcmVi
b290CTg4CisjZGVmaW5lIF9fTlJfbXVubWFwCTkxCisjZGVmaW5lIF9fTlJfdHJ1bmNhdGUJOTIK
KyNkZWZpbmUgX19OUl9mdHJ1bmNhdGUJOTMKKyNkZWZpbmUgX19OUl9mY2htb2QJOTQKKyNkZWZp
bmUgX19OUl9mY2hvd24JOTUKKyNkZWZpbmUgX19OUl9nZXRwcmlvcml0eQk5NgorI2RlZmluZSBf
X05SX3NldHByaW9yaXR5CTk3CisjZGVmaW5lIF9fTlJfc3RhdGZzCTk5CisjZGVmaW5lIF9fTlJf
ZnN0YXRmcwkxMDAKKyNkZWZpbmUgX19OUl9zeXNsb2cJMTAzCisjZGVmaW5lIF9fTlJfc2V0aXRp
bWVyCTEwNAorI2RlZmluZSBfX05SX2dldGl0aW1lcgkxMDUKKyNkZWZpbmUgX19OUl9zdGF0CTEw
NgorI2RlZmluZSBfX05SX2xzdGF0CTEwNworI2RlZmluZSBfX05SX2ZzdGF0CTEwOAorI2RlZmlu
ZSBfX05SX3ZoYW5ndXAJMTExCisjZGVmaW5lIF9fTlJfd2FpdDQJMTE0CisjZGVmaW5lIF9fTlJf
c3dhcG9mZgkxMTUKKyNkZWZpbmUgX19OUl9zeXNpbmZvCTExNgorI2RlZmluZSBfX05SX2ZzeW5j
CTExOAorI2RlZmluZSBfX05SX3NpZ3JldHVybgkxMTkKKyNkZWZpbmUgX19OUl9jbG9uZQkxMjAK
KyNkZWZpbmUgX19OUl9zZXRkb21haW5uYW1lCTEyMQorI2RlZmluZSBfX05SX3VuYW1lCTEyMgor
I2RlZmluZSBfX05SX2FkanRpbWV4CTEyNAorI2RlZmluZSBfX05SX21wcm90ZWN0CTEyNQorI2Rl
ZmluZSBfX05SX3NpZ3Byb2NtYXNrCTEyNgorI2RlZmluZSBfX05SX2luaXRfbW9kdWxlCTEyOAor
I2RlZmluZSBfX05SX2RlbGV0ZV9tb2R1bGUJMTI5CisjZGVmaW5lIF9fTlJfcXVvdGFjdGwJMTMx
CisjZGVmaW5lIF9fTlJfZ2V0cGdpZAkxMzIKKyNkZWZpbmUgX19OUl9mY2hkaXIJMTMzCisjZGVm
aW5lIF9fTlJfYmRmbHVzaAkxMzQKKyNkZWZpbmUgX19OUl9zeXNmcwkxMzUKKyNkZWZpbmUgX19O
Ul9wZXJzb25hbGl0eQkxMzYKKyNkZWZpbmUgX19OUl9zZXRmc3VpZAkxMzgKKyNkZWZpbmUgX19O
Ul9zZXRmc2dpZAkxMzkKKyNkZWZpbmUgX19OUl9fbGxzZWVrCTE0MAorI2RlZmluZSBfX05SX2dl
dGRlbnRzCTE0MQorI2RlZmluZSBfX05SX19uZXdzZWxlY3QJMTQyCisjZGVmaW5lIF9fTlJfZmxv
Y2sJMTQzCisjZGVmaW5lIF9fTlJfbXN5bmMJMTQ0CisjZGVmaW5lIF9fTlJfcmVhZHYJMTQ1Cisj
ZGVmaW5lIF9fTlJfd3JpdGV2CTE0NgorI2RlZmluZSBfX05SX2dldHNpZAkxNDcKKyNkZWZpbmUg
X19OUl9mZGF0YXN5bmMJMTQ4CisjZGVmaW5lIF9fTlJfX3N5c2N0bAkxNDkKKyNkZWZpbmUgX19O
Ul9tbG9jawkxNTAKKyNkZWZpbmUgX19OUl9tdW5sb2NrCTE1MQorI2RlZmluZSBfX05SX21sb2Nr
YWxsCTE1MgorI2RlZmluZSBfX05SX211bmxvY2thbGwJMTUzCisjZGVmaW5lIF9fTlJfc2NoZWRf
c2V0cGFyYW0JMTU0CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0cGFyYW0JMTU1CisjZGVmaW5lIF9f
TlJfc2NoZWRfc2V0c2NoZWR1bGVyCTE1NgorI2RlZmluZSBfX05SX3NjaGVkX2dldHNjaGVkdWxl
cgkxNTcKKyNkZWZpbmUgX19OUl9zY2hlZF95aWVsZAkxNTgKKyNkZWZpbmUgX19OUl9zY2hlZF9n
ZXRfcHJpb3JpdHlfbWF4CTE1OQorI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9taW4J
MTYwCisjZGVmaW5lIF9fTlJfc2NoZWRfcnJfZ2V0X2ludGVydmFsCTE2MQorI2RlZmluZSBfX05S
X25hbm9zbGVlcAkxNjIKKyNkZWZpbmUgX19OUl9tcmVtYXAJMTYzCisjZGVmaW5lIF9fTlJfc2V0
cmVzdWlkCTE2NAorI2RlZmluZSBfX05SX2dldHJlc3VpZAkxNjUKKyNkZWZpbmUgX19OUl9wb2xs
CTE2OAorI2RlZmluZSBfX05SX25mc3NlcnZjdGwJMTY5CisjZGVmaW5lIF9fTlJfc2V0cmVzZ2lk
CTE3MAorI2RlZmluZSBfX05SX2dldHJlc2dpZAkxNzEKKyNkZWZpbmUgX19OUl9wcmN0bAkxNzIK
KyNkZWZpbmUgX19OUl9ydF9zaWdyZXR1cm4JMTczCisjZGVmaW5lIF9fTlJfcnRfc2lnYWN0aW9u
CTE3NAorI2RlZmluZSBfX05SX3J0X3NpZ3Byb2NtYXNrCTE3NQorI2RlZmluZSBfX05SX3J0X3Np
Z3BlbmRpbmcJMTc2CisjZGVmaW5lIF9fTlJfcnRfc2lndGltZWR3YWl0CTE3NworI2RlZmluZSBf
X05SX3J0X3NpZ3F1ZXVlaW5mbwkxNzgKKyNkZWZpbmUgX19OUl9ydF9zaWdzdXNwZW5kCTE3OQor
I2RlZmluZSBfX05SX3ByZWFkNjQJMTgwCisjZGVmaW5lIF9fTlJfcHdyaXRlNjQJMTgxCisjZGVm
aW5lIF9fTlJfY2hvd24JMTgyCisjZGVmaW5lIF9fTlJfZ2V0Y3dkCTE4MworI2RlZmluZSBfX05S
X2NhcGdldAkxODQKKyNkZWZpbmUgX19OUl9jYXBzZXQJMTg1CisjZGVmaW5lIF9fTlJfc2lnYWx0
c3RhY2sJMTg2CisjZGVmaW5lIF9fTlJfc2VuZGZpbGUJMTg3CisjZGVmaW5lIF9fTlJfdmZvcmsJ
MTkwCisjZGVmaW5lIF9fTlJfdWdldHJsaW1pdAkxOTEKKyNkZWZpbmUgX19OUl9tbWFwMgkxOTIK
KyNkZWZpbmUgX19OUl90cnVuY2F0ZTY0CTE5MworI2RlZmluZSBfX05SX2Z0cnVuY2F0ZTY0CTE5
NAorI2RlZmluZSBfX05SX3N0YXQ2NAkxOTUKKyNkZWZpbmUgX19OUl9sc3RhdDY0CTE5NgorI2Rl
ZmluZSBfX05SX2ZzdGF0NjQJMTk3CisjZGVmaW5lIF9fTlJfbGNob3duMzIJMTk4CisjZGVmaW5l
IF9fTlJfZ2V0dWlkMzIJMTk5CisjZGVmaW5lIF9fTlJfZ2V0Z2lkMzIJMjAwCisjZGVmaW5lIF9f
TlJfZ2V0ZXVpZDMyCTIwMQorI2RlZmluZSBfX05SX2dldGVnaWQzMgkyMDIKKyNkZWZpbmUgX19O
Ul9zZXRyZXVpZDMyCTIwMworI2RlZmluZSBfX05SX3NldHJlZ2lkMzIJMjA0CisjZGVmaW5lIF9f
TlJfZ2V0Z3JvdXBzMzIJMjA1CisjZGVmaW5lIF9fTlJfc2V0Z3JvdXBzMzIJMjA2CisjZGVmaW5l
IF9fTlJfZmNob3duMzIJMjA3CisjZGVmaW5lIF9fTlJfc2V0cmVzdWlkMzIJMjA4CisjZGVmaW5l
IF9fTlJfZ2V0cmVzdWlkMzIJMjA5CisjZGVmaW5lIF9fTlJfc2V0cmVzZ2lkMzIJMjEwCisjZGVm
aW5lIF9fTlJfZ2V0cmVzZ2lkMzIJMjExCisjZGVmaW5lIF9fTlJfY2hvd24zMgkyMTIKKyNkZWZp
bmUgX19OUl9zZXR1aWQzMgkyMTMKKyNkZWZpbmUgX19OUl9zZXRnaWQzMgkyMTQKKyNkZWZpbmUg
X19OUl9zZXRmc3VpZDMyCTIxNQorI2RlZmluZSBfX05SX3NldGZzZ2lkMzIJMjE2CisjZGVmaW5l
IF9fTlJfZ2V0ZGVudHM2NAkyMTcKKyNkZWZpbmUgX19OUl9waXZvdF9yb290CTIxOAorI2RlZmlu
ZSBfX05SX21pbmNvcmUJMjE5CisjZGVmaW5lIF9fTlJfbWFkdmlzZQkyMjAKKyNkZWZpbmUgX19O
Ul9mY250bDY0CTIyMQorI2RlZmluZSBfX05SX2dldHRpZAkyMjQKKyNkZWZpbmUgX19OUl9yZWFk
YWhlYWQJMjI1CisjZGVmaW5lIF9fTlJfc2V0eGF0dHIJMjI2CisjZGVmaW5lIF9fTlJfbHNldHhh
dHRyCTIyNworI2RlZmluZSBfX05SX2ZzZXR4YXR0cgkyMjgKKyNkZWZpbmUgX19OUl9nZXR4YXR0
cgkyMjkKKyNkZWZpbmUgX19OUl9sZ2V0eGF0dHIJMjMwCisjZGVmaW5lIF9fTlJfZmdldHhhdHRy
CTIzMQorI2RlZmluZSBfX05SX2xpc3R4YXR0cgkyMzIKKyNkZWZpbmUgX19OUl9sbGlzdHhhdHRy
CTIzMworI2RlZmluZSBfX05SX2ZsaXN0eGF0dHIJMjM0CisjZGVmaW5lIF9fTlJfcmVtb3ZleGF0
dHIJMjM1CisjZGVmaW5lIF9fTlJfbHJlbW92ZXhhdHRyCTIzNgorI2RlZmluZSBfX05SX2ZyZW1v
dmV4YXR0cgkyMzcKKyNkZWZpbmUgX19OUl90a2lsbAkyMzgKKyNkZWZpbmUgX19OUl9zZW5kZmls
ZTY0CTIzOQorI2RlZmluZSBfX05SX2Z1dGV4CTI0MAorI2RlZmluZSBfX05SX3NjaGVkX3NldGFm
ZmluaXR5CTI0MQorI2RlZmluZSBfX05SX3NjaGVkX2dldGFmZmluaXR5CTI0MgorI2RlZmluZSBf
X05SX2lvX3NldHVwCTI0MworI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kJMjQ0CisjZGVmaW5lIF9f
TlJfaW9fZ2V0ZXZlbnRzCTI0NQorI2RlZmluZSBfX05SX2lvX3N1Ym1pdAkyNDYKKyNkZWZpbmUg
X19OUl9pb19jYW5jZWwJMjQ3CisjZGVmaW5lIF9fTlJfZXhpdF9ncm91cAkyNDgKKyNkZWZpbmUg
X19OUl9sb29rdXBfZGNvb2tpZQkyNDkKKyNkZWZpbmUgX19OUl9lcG9sbF9jcmVhdGUJMjUwCisj
ZGVmaW5lIF9fTlJfZXBvbGxfY3RsCTI1MQorI2RlZmluZSBfX05SX2Vwb2xsX3dhaXQJMjUyCisj
ZGVmaW5lIF9fTlJfcmVtYXBfZmlsZV9wYWdlcwkyNTMKKyNkZWZpbmUgX19OUl9zZXRfdGlkX2Fk
ZHJlc3MJMjU2CisjZGVmaW5lIF9fTlJfdGltZXJfY3JlYXRlCTI1NworI2RlZmluZSBfX05SX3Rp
bWVyX3NldHRpbWUJMjU4CisjZGVmaW5lIF9fTlJfdGltZXJfZ2V0dGltZQkyNTkKKyNkZWZpbmUg
X19OUl90aW1lcl9nZXRvdmVycnVuCTI2MAorI2RlZmluZSBfX05SX3RpbWVyX2RlbGV0ZQkyNjEK
KyNkZWZpbmUgX19OUl9jbG9ja19zZXR0aW1lCTI2MgorI2RlZmluZSBfX05SX2Nsb2NrX2dldHRp
bWUJMjYzCisjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzCTI2NAorI2RlZmluZSBfX05SX2Nsb2Nr
X25hbm9zbGVlcAkyNjUKKyNkZWZpbmUgX19OUl9zdGF0ZnM2NAkyNjYKKyNkZWZpbmUgX19OUl9m
c3RhdGZzNjQJMjY3CisjZGVmaW5lIF9fTlJfdGdraWxsCTI2OAorI2RlZmluZSBfX05SX3V0aW1l
cwkyNjkKKyNkZWZpbmUgX19OUl9mYWR2aXNlNjRfNjQJMjcwCisjZGVmaW5lIF9fTlJfYXJtX2Zh
ZHZpc2U2NF82NAkyNzAKKyNkZWZpbmUgX19OUl9wY2ljb25maWdfaW9iYXNlCTI3MQorI2RlZmlu
ZSBfX05SX3BjaWNvbmZpZ19yZWFkCTI3MgorI2RlZmluZSBfX05SX3BjaWNvbmZpZ193cml0ZQky
NzMKKyNkZWZpbmUgX19OUl9tcV9vcGVuCTI3NAorI2RlZmluZSBfX05SX21xX3VubGluawkyNzUK
KyNkZWZpbmUgX19OUl9tcV90aW1lZHNlbmQJMjc2CisjZGVmaW5lIF9fTlJfbXFfdGltZWRyZWNl
aXZlCTI3NworI2RlZmluZSBfX05SX21xX25vdGlmeQkyNzgKKyNkZWZpbmUgX19OUl9tcV9nZXRz
ZXRhdHRyCTI3OQorI2RlZmluZSBfX05SX3dhaXRpZAkyODAKKyNkZWZpbmUgX19OUl9zb2NrZXQJ
MjgxCisjZGVmaW5lIF9fTlJfYmluZAkyODIKKyNkZWZpbmUgX19OUl9jb25uZWN0CTI4MworI2Rl
ZmluZSBfX05SX2xpc3RlbgkyODQKKyNkZWZpbmUgX19OUl9hY2NlcHQJMjg1CisjZGVmaW5lIF9f
TlJfZ2V0c29ja25hbWUJMjg2CisjZGVmaW5lIF9fTlJfZ2V0cGVlcm5hbWUJMjg3CisjZGVmaW5l
IF9fTlJfc29ja2V0cGFpcgkyODgKKyNkZWZpbmUgX19OUl9zZW5kCTI4OQorI2RlZmluZSBfX05S
X3NlbmR0bwkyOTAKKyNkZWZpbmUgX19OUl9yZWN2CTI5MQorI2RlZmluZSBfX05SX3JlY3Zmcm9t
CTI5MgorI2RlZmluZSBfX05SX3NodXRkb3duCTI5MworI2RlZmluZSBfX05SX3NldHNvY2tvcHQJ
Mjk0CisjZGVmaW5lIF9fTlJfZ2V0c29ja29wdAkyOTUKKyNkZWZpbmUgX19OUl9zZW5kbXNnCTI5
NgorI2RlZmluZSBfX05SX3JlY3Ztc2cJMjk3CisjZGVmaW5lIF9fTlJfc2Vtb3AJMjk4CisjZGVm
aW5lIF9fTlJfc2VtZ2V0CTI5OQorI2RlZmluZSBfX05SX3NlbWN0bAkzMDAKKyNkZWZpbmUgX19O
Ul9tc2dzbmQJMzAxCisjZGVmaW5lIF9fTlJfbXNncmN2CTMwMgorI2RlZmluZSBfX05SX21zZ2dl
dAkzMDMKKyNkZWZpbmUgX19OUl9tc2djdGwJMzA0CisjZGVmaW5lIF9fTlJfc2htYXQJMzA1Cisj
ZGVmaW5lIF9fTlJfc2htZHQJMzA2CisjZGVmaW5lIF9fTlJfc2htZ2V0CTMwNworI2RlZmluZSBf
X05SX3NobWN0bAkzMDgKKyNkZWZpbmUgX19OUl9hZGRfa2V5CTMwOQorI2RlZmluZSBfX05SX3Jl
cXVlc3Rfa2V5CTMxMAorI2RlZmluZSBfX05SX2tleWN0bAkzMTEKKyNkZWZpbmUgX19OUl9zZW10
aW1lZG9wCTMxMgorI2RlZmluZSBfX05SX3ZzZXJ2ZXIJMzEzCisjZGVmaW5lIF9fTlJfaW9wcmlv
X3NldAkzMTQKKyNkZWZpbmUgX19OUl9pb3ByaW9fZ2V0CTMxNQorI2RlZmluZSBfX05SX2lub3Rp
ZnlfaW5pdAkzMTYKKyNkZWZpbmUgX19OUl9pbm90aWZ5X2FkZF93YXRjaAkzMTcKKyNkZWZpbmUg
X19OUl9pbm90aWZ5X3JtX3dhdGNoCTMxOAorI2RlZmluZSBfX05SX21iaW5kCTMxOQorI2RlZmlu
ZSBfX05SX2dldF9tZW1wb2xpY3kJMzIwCisjZGVmaW5lIF9fTlJfc2V0X21lbXBvbGljeQkzMjEK
KyNkZWZpbmUgX19OUl9vcGVuYXQJMzIyCisjZGVmaW5lIF9fTlJfbWtkaXJhdAkzMjMKKyNkZWZp
bmUgX19OUl9ta25vZGF0CTMyNAorI2RlZmluZSBfX05SX2ZjaG93bmF0CTMyNQorI2RlZmluZSBf
X05SX2Z1dGltZXNhdAkzMjYKKyNkZWZpbmUgX19OUl9mc3RhdGF0NjQJMzI3CisjZGVmaW5lIF9f
TlJfdW5saW5rYXQJMzI4CisjZGVmaW5lIF9fTlJfcmVuYW1lYXQJMzI5CisjZGVmaW5lIF9fTlJf
bGlua2F0CTMzMAorI2RlZmluZSBfX05SX3N5bWxpbmthdAkzMzEKKyNkZWZpbmUgX19OUl9yZWFk
bGlua2F0CTMzMgorI2RlZmluZSBfX05SX2ZjaG1vZGF0CTMzMworI2RlZmluZSBfX05SX2ZhY2Nl
c3NhdAkzMzQKKyNkZWZpbmUgX19OUl9wc2VsZWN0NgkzMzUKKyNkZWZpbmUgX19OUl9wcG9sbAkz
MzYKKyNkZWZpbmUgX19OUl91bnNoYXJlCTMzNworI2RlZmluZSBfX05SX3NldF9yb2J1c3RfbGlz
dAkzMzgKKyNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QJMzM5CisjZGVmaW5lIF9fTlJfc3Bs
aWNlCTM0MAorI2RlZmluZSBfX05SX3N5bmNfZmlsZV9yYW5nZTIJMzQxCisjZGVmaW5lIF9fTlJf
YXJtX3N5bmNfZmlsZV9yYW5nZQkzNDEKKyNkZWZpbmUgX19OUl90ZWUJMzQyCisjZGVmaW5lIF9f
TlJfdm1zcGxpY2UJMzQzCisjZGVmaW5lIF9fTlJfbW92ZV9wYWdlcwkzNDQKKyNkZWZpbmUgX19O
Ul9nZXRjcHUJMzQ1CisjZGVmaW5lIF9fTlJfZXBvbGxfcHdhaXQJMzQ2CisjZGVmaW5lIF9fTlJf
a2V4ZWNfbG9hZAkzNDcKKyNkZWZpbmUgX19OUl91dGltZW5zYXQJMzQ4CisjZGVmaW5lIF9fTlJf
c2lnbmFsZmQJMzQ5CisjZGVmaW5lIF9fTlJfdGltZXJmZF9jcmVhdGUJMzUwCisjZGVmaW5lIF9f
TlJfZXZlbnRmZAkzNTEKKyNkZWZpbmUgX19OUl9mYWxsb2NhdGUJMzUyCisjZGVmaW5lIF9fTlJf
dGltZXJmZF9zZXR0aW1lCTM1MworI2RlZmluZSBfX05SX3RpbWVyZmRfZ2V0dGltZQkzNTQKKyNk
ZWZpbmUgX19OUl9zaWduYWxmZDQJMzU1CisjZGVmaW5lIF9fTlJfZXZlbnRmZDIJMzU2CisjZGVm
aW5lIF9fTlJfZXBvbGxfY3JlYXRlMQkzNTcKKyNkZWZpbmUgX19OUl9kdXAzCTM1OAorI2RlZmlu
ZSBfX05SX3BpcGUyCTM1OQorI2RlZmluZSBfX05SX2lub3RpZnlfaW5pdDEJMzYwCisjZGVmaW5l
IF9fTlJfcHJlYWR2CTM2MQorI2RlZmluZSBfX05SX3B3cml0ZXYJMzYyCisjZGVmaW5lIF9fTlJf
cnRfdGdzaWdxdWV1ZWluZm8JMzYzCisjZGVmaW5lIF9fTlJfcGVyZl9ldmVudF9vcGVuCTM2NAor
I2RlZmluZSBfX05SX3JlY3ZtbXNnCTM2NQorI2RlZmluZSBfX05SX2FjY2VwdDQJMzY2CisjZGVm
aW5lIF9fTlJfZmFub3RpZnlfaW5pdAkzNjcKKyNkZWZpbmUgX19OUl9mYW5vdGlmeV9tYXJrCTM2
OAorI2RlZmluZSBfX05SX3BybGltaXQ2NAkzNjkKKyNkZWZpbmUgX19OUl9uYW1lX3RvX2hhbmRs
ZV9hdAkzNzAKKyNkZWZpbmUgX19OUl9vcGVuX2J5X2hhbmRsZV9hdAkzNzEKKyNkZWZpbmUgX19O
Ul9jbG9ja19hZGp0aW1lCTM3MgorI2RlZmluZSBfX05SX3N5bmNmcwkzNzMKKyNkZWZpbmUgX19O
Ul9zZW5kbW1zZwkzNzQKKyNkZWZpbmUgX19OUl9zZXRucwkzNzUKKyNkZWZpbmUgX19OUl9wcm9j
ZXNzX3ZtX3JlYWR2CTM3NgorI2RlZmluZSBfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2CTM3NworI2Rl
ZmluZSBfX05SX2tjbXAJCTM3OAorI2RlZmluZSBfX05SX2Zpbml0X21vZHVsZQkzNzkKKyNkZWZp
bmUgX19OUl9zY2hlZF9zZXRhdHRyCTM4MAorI2RlZmluZSBfX05SX3NjaGVkX2dldGF0dHIJMzgx
CisjZGVmaW5lIF9fTlJfcmVuYW1lYXQyCTM4MgorI2RlZmluZSBfX05SX3NlY2NvbXAJMzgzCisj
ZGVmaW5lIF9fTlJfZ2V0cmFuZG9tCTM4NAorI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZQkzODUK
KyNkZWZpbmUgX19OUl9icGYJMzg2CisjZGVmaW5lIF9fTlJfZXhlY3ZlYXQJMzg3CisjZGVmaW5l
IF9fTlJfdXNlcmZhdWx0ZmQJMzg4CisjZGVmaW5lIF9fTlJfbWVtYmFycmllcgkJMzg5CisjZGVm
aW5lIF9fTlJfbWxvY2syCQkzOTAKKyNkZWZpbmUgX19OUl9jb3B5X2ZpbGVfcmFuZ2UJMzkxCisj
ZGVmaW5lIF9fTlJfcHJlYWR2MgkzOTIKKyNkZWZpbmUgX19OUl9wd3JpdGV2MgkzOTMKKyNkZWZp
bmUgX19OUl9wa2V5X21wcm90ZWN0CTM5NAorI2RlZmluZSBfX05SX3BrZXlfYWxsb2MJMzk1Cisj
ZGVmaW5lIF9fTlJfcGtleV9mcmVlCTM5NgorI2RlZmluZSBfX05SX3N0YXR4CTM5NworI2RlZmlu
ZSBfX05SX3JzZXEJMzk4CisKKyNkZWZpbmUgX19BUk1fTlJfYnJlYWtwb2ludAkweDBmMDAwMQor
I2RlZmluZSBfX0FSTV9OUl9jYWNoZWZsdXNoCTB4MGYwMDAyCisjZGVmaW5lIF9fQVJNX05SX3Vz
cjI2CQkweDBmMDAwMworI2RlZmluZSBfX0FSTV9OUl91c3IzMgkJMHgwZjAwMDQKKyNkZWZpbmUg
X19BUk1fTlJfc2V0X3RscwkweDBmMDAwNQorI2RlZmluZSBfX0FSTV9OUl9nZXRfdGxzCTB4MGYw
MDA2CisKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxsLmgu
aW4gYi9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtNjQvc3lzY2FsbC5oLmluCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi40N2E5NjliYwotLS0gL2Rldi9udWxsCisrKyBiL2xp
Yi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxsLmguaW4KQEAgLTAsMCArMSwyNzggQEAK
KyNkZWZpbmUgX19OUl9pb19zZXR1cCAwCisjZGVmaW5lIF9fTlJfaW9fZGVzdHJveSAxCisjZGVm
aW5lIF9fTlJfaW9fc3VibWl0IDIKKyNkZWZpbmUgX19OUl9pb19jYW5jZWwgMworI2RlZmluZSBf
X05SX2lvX2dldGV2ZW50cyA0CisjZGVmaW5lIF9fTlJfc2V0eGF0dHIgNQorI2RlZmluZSBfX05S
X2xzZXR4YXR0ciA2CisjZGVmaW5lIF9fTlJfZnNldHhhdHRyIDcKKyNkZWZpbmUgX19OUl9nZXR4
YXR0ciA4CisjZGVmaW5lIF9fTlJfbGdldHhhdHRyIDkKKyNkZWZpbmUgX19OUl9mZ2V0eGF0dHIg
MTAKKyNkZWZpbmUgX19OUl9saXN0eGF0dHIgMTEKKyNkZWZpbmUgX19OUl9sbGlzdHhhdHRyIDEy
CisjZGVmaW5lIF9fTlJfZmxpc3R4YXR0ciAxMworI2RlZmluZSBfX05SX3JlbW92ZXhhdHRyIDE0
CisjZGVmaW5lIF9fTlJfbHJlbW92ZXhhdHRyIDE1CisjZGVmaW5lIF9fTlJfZnJlbW92ZXhhdHRy
IDE2CisjZGVmaW5lIF9fTlJfZ2V0Y3dkIDE3CisjZGVmaW5lIF9fTlJfbG9va3VwX2Rjb29raWUg
MTgKKyNkZWZpbmUgX19OUl9ldmVudGZkMiAxOQorI2RlZmluZSBfX05SX2Vwb2xsX2NyZWF0ZTEg
MjAKKyNkZWZpbmUgX19OUl9lcG9sbF9jdGwgMjEKKyNkZWZpbmUgX19OUl9lcG9sbF9wd2FpdCAy
MgorI2RlZmluZSBfX05SX2R1cCAyMworI2RlZmluZSBfX05SX2R1cDMgMjQKKyNkZWZpbmUgX19O
Ul9mY250bCAyNQorI2RlZmluZSBfX05SX2lub3RpZnlfaW5pdDEgMjYKKyNkZWZpbmUgX19OUl9p
bm90aWZ5X2FkZF93YXRjaCAyNworI2RlZmluZSBfX05SX2lub3RpZnlfcm1fd2F0Y2ggMjgKKyNk
ZWZpbmUgX19OUl9pb2N0bCAyOQorI2RlZmluZSBfX05SX2lvcHJpb19zZXQgMzAKKyNkZWZpbmUg
X19OUl9pb3ByaW9fZ2V0IDMxCisjZGVmaW5lIF9fTlJfZmxvY2sgMzIKKyNkZWZpbmUgX19OUl9t
a25vZGF0IDMzCisjZGVmaW5lIF9fTlJfbWtkaXJhdCAzNAorI2RlZmluZSBfX05SX3VubGlua2F0
IDM1CisjZGVmaW5lIF9fTlJfc3ltbGlua2F0IDM2CisjZGVmaW5lIF9fTlJfbGlua2F0IDM3Cisj
ZGVmaW5lIF9fTlJfcmVuYW1lYXQgMzgKKyNkZWZpbmUgX19OUl91bW91bnQyIDM5CisjZGVmaW5l
IF9fTlJfbW91bnQgNDAKKyNkZWZpbmUgX19OUl9waXZvdF9yb290IDQxCisjZGVmaW5lIF9fTlJf
bmZzc2VydmN0bCA0MgorI2RlZmluZSBfX05SX3N0YXRmcyA0MworI2RlZmluZSBfX05SX2ZzdGF0
ZnMgNDQKKyNkZWZpbmUgX19OUl90cnVuY2F0ZSA0NQorI2RlZmluZSBfX05SX2Z0cnVuY2F0ZSA0
NgorI2RlZmluZSBfX05SX2ZhbGxvY2F0ZSA0NworI2RlZmluZSBfX05SX2ZhY2Nlc3NhdCA0OAor
I2RlZmluZSBfX05SX2NoZGlyIDQ5CisjZGVmaW5lIF9fTlJfZmNoZGlyIDUwCisjZGVmaW5lIF9f
TlJfY2hyb290IDUxCisjZGVmaW5lIF9fTlJfZmNobW9kIDUyCisjZGVmaW5lIF9fTlJfZmNobW9k
YXQgNTMKKyNkZWZpbmUgX19OUl9mY2hvd25hdCA1NAorI2RlZmluZSBfX05SX2ZjaG93biA1NQor
I2RlZmluZSBfX05SX29wZW5hdCA1NgorI2RlZmluZSBfX05SX2Nsb3NlIDU3CisjZGVmaW5lIF9f
TlJfdmhhbmd1cCA1OAorI2RlZmluZSBfX05SX3BpcGUyIDU5CisjZGVmaW5lIF9fTlJfcXVvdGFj
dGwgNjAKKyNkZWZpbmUgX19OUl9nZXRkZW50czY0IDYxCisjZGVmaW5lIF9fTlJfbHNlZWsgNjIK
KyNkZWZpbmUgX19OUl9yZWFkIDYzCisjZGVmaW5lIF9fTlJfd3JpdGUgNjQKKyNkZWZpbmUgX19O
Ul9yZWFkdiA2NQorI2RlZmluZSBfX05SX3dyaXRldiA2NgorI2RlZmluZSBfX05SX3ByZWFkNjQg
NjcKKyNkZWZpbmUgX19OUl9wd3JpdGU2NCA2OAorI2RlZmluZSBfX05SX3ByZWFkdiA2OQorI2Rl
ZmluZSBfX05SX3B3cml0ZXYgNzAKKyNkZWZpbmUgX19OUl9zZW5kZmlsZSA3MQorI2RlZmluZSBf
X05SX3BzZWxlY3Q2IDcyCisjZGVmaW5lIF9fTlJfcHBvbGwgNzMKKyNkZWZpbmUgX19OUl9zaWdu
YWxmZDQgNzQKKyNkZWZpbmUgX19OUl92bXNwbGljZSA3NQorI2RlZmluZSBfX05SX3NwbGljZSA3
NgorI2RlZmluZSBfX05SX3RlZSA3NworI2RlZmluZSBfX05SX3JlYWRsaW5rYXQgNzgKKyNkZWZp
bmUgX19OUl9uZXdmc3RhdGF0IDc5CisjZGVmaW5lIF9fTlJfZnN0YXQgODAKKyNkZWZpbmUgX19O
Ul9zeW5jIDgxCisjZGVmaW5lIF9fTlJfZnN5bmMgODIKKyNkZWZpbmUgX19OUl9mZGF0YXN5bmMg
ODMKKyNkZWZpbmUgX19OUl9zeW5jX2ZpbGVfcmFuZ2UgODQKKyNkZWZpbmUgX19OUl90aW1lcmZk
X2NyZWF0ZSA4NQorI2RlZmluZSBfX05SX3RpbWVyZmRfc2V0dGltZSA4NgorI2RlZmluZSBfX05S
X3RpbWVyZmRfZ2V0dGltZSA4NworI2RlZmluZSBfX05SX3V0aW1lbnNhdCA4OAorI2RlZmluZSBf
X05SX2FjY3QgODkKKyNkZWZpbmUgX19OUl9jYXBnZXQgOTAKKyNkZWZpbmUgX19OUl9jYXBzZXQg
OTEKKyNkZWZpbmUgX19OUl9wZXJzb25hbGl0eSA5MgorI2RlZmluZSBfX05SX2V4aXQgOTMKKyNk
ZWZpbmUgX19OUl9leGl0X2dyb3VwIDk0CisjZGVmaW5lIF9fTlJfd2FpdGlkIDk1CisjZGVmaW5l
IF9fTlJfc2V0X3RpZF9hZGRyZXNzIDk2CisjZGVmaW5lIF9fTlJfdW5zaGFyZSA5NworI2RlZmlu
ZSBfX05SX2Z1dGV4IDk4CisjZGVmaW5lIF9fTlJfc2V0X3JvYnVzdF9saXN0IDk5CisjZGVmaW5l
IF9fTlJfZ2V0X3JvYnVzdF9saXN0IDEwMAorI2RlZmluZSBfX05SX25hbm9zbGVlcCAxMDEKKyNk
ZWZpbmUgX19OUl9nZXRpdGltZXIgMTAyCisjZGVmaW5lIF9fTlJfc2V0aXRpbWVyIDEwMworI2Rl
ZmluZSBfX05SX2tleGVjX2xvYWQgMTA0CisjZGVmaW5lIF9fTlJfaW5pdF9tb2R1bGUgMTA1Cisj
ZGVmaW5lIF9fTlJfZGVsZXRlX21vZHVsZSAxMDYKKyNkZWZpbmUgX19OUl90aW1lcl9jcmVhdGUg
MTA3CisjZGVmaW5lIF9fTlJfdGltZXJfZ2V0dGltZSAxMDgKKyNkZWZpbmUgX19OUl90aW1lcl9n
ZXRvdmVycnVuIDEwOQorI2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUgMTEwCisjZGVmaW5lIF9f
TlJfdGltZXJfZGVsZXRlIDExMQorI2RlZmluZSBfX05SX2Nsb2NrX3NldHRpbWUgMTEyCisjZGVm
aW5lIF9fTlJfY2xvY2tfZ2V0dGltZSAxMTMKKyNkZWZpbmUgX19OUl9jbG9ja19nZXRyZXMgMTE0
CisjZGVmaW5lIF9fTlJfY2xvY2tfbmFub3NsZWVwIDExNQorI2RlZmluZSBfX05SX3N5c2xvZyAx
MTYKKyNkZWZpbmUgX19OUl9wdHJhY2UgMTE3CisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0cGFyYW0g
MTE4CisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyIDExOQorI2RlZmluZSBfX05SX3Nj
aGVkX2dldHNjaGVkdWxlciAxMjAKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRwYXJhbSAxMjEKKyNk
ZWZpbmUgX19OUl9zY2hlZF9zZXRhZmZpbml0eSAxMjIKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRh
ZmZpbml0eSAxMjMKKyNkZWZpbmUgX19OUl9zY2hlZF95aWVsZCAxMjQKKyNkZWZpbmUgX19OUl9z
Y2hlZF9nZXRfcHJpb3JpdHlfbWF4IDEyNQorI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0
eV9taW4gMTI2CisjZGVmaW5lIF9fTlJfc2NoZWRfcnJfZ2V0X2ludGVydmFsIDEyNworI2RlZmlu
ZSBfX05SX3Jlc3RhcnRfc3lzY2FsbCAxMjgKKyNkZWZpbmUgX19OUl9raWxsIDEyOQorI2RlZmlu
ZSBfX05SX3RraWxsIDEzMAorI2RlZmluZSBfX05SX3Rna2lsbCAxMzEKKyNkZWZpbmUgX19OUl9z
aWdhbHRzdGFjayAxMzIKKyNkZWZpbmUgX19OUl9ydF9zaWdzdXNwZW5kIDEzMworI2RlZmluZSBf
X05SX3J0X3NpZ2FjdGlvbiAxMzQKKyNkZWZpbmUgX19OUl9ydF9zaWdwcm9jbWFzayAxMzUKKyNk
ZWZpbmUgX19OUl9ydF9zaWdwZW5kaW5nIDEzNgorI2RlZmluZSBfX05SX3J0X3NpZ3RpbWVkd2Fp
dCAxMzcKKyNkZWZpbmUgX19OUl9ydF9zaWdxdWV1ZWluZm8gMTM4CisjZGVmaW5lIF9fTlJfcnRf
c2lncmV0dXJuIDEzOQorI2RlZmluZSBfX05SX3NldHByaW9yaXR5IDE0MAorI2RlZmluZSBfX05S
X2dldHByaW9yaXR5IDE0MQorI2RlZmluZSBfX05SX3JlYm9vdCAxNDIKKyNkZWZpbmUgX19OUl9z
ZXRyZWdpZCAxNDMKKyNkZWZpbmUgX19OUl9zZXRnaWQgMTQ0CisjZGVmaW5lIF9fTlJfc2V0cmV1
aWQgMTQ1CisjZGVmaW5lIF9fTlJfc2V0dWlkIDE0NgorI2RlZmluZSBfX05SX3NldHJlc3VpZCAx
NDcKKyNkZWZpbmUgX19OUl9nZXRyZXN1aWQgMTQ4CisjZGVmaW5lIF9fTlJfc2V0cmVzZ2lkIDE0
OQorI2RlZmluZSBfX05SX2dldHJlc2dpZCAxNTAKKyNkZWZpbmUgX19OUl9zZXRmc3VpZCAxNTEK
KyNkZWZpbmUgX19OUl9zZXRmc2dpZCAxNTIKKyNkZWZpbmUgX19OUl90aW1lcyAxNTMKKyNkZWZp
bmUgX19OUl9zZXRwZ2lkIDE1NAorI2RlZmluZSBfX05SX2dldHBnaWQgMTU1CisjZGVmaW5lIF9f
TlJfZ2V0c2lkIDE1NgorI2RlZmluZSBfX05SX3NldHNpZCAxNTcKKyNkZWZpbmUgX19OUl9nZXRn
cm91cHMgMTU4CisjZGVmaW5lIF9fTlJfc2V0Z3JvdXBzIDE1OQorI2RlZmluZSBfX05SX3VuYW1l
IDE2MAorI2RlZmluZSBfX05SX3NldGhvc3RuYW1lIDE2MQorI2RlZmluZSBfX05SX3NldGRvbWFp
bm5hbWUgMTYyCisjZGVmaW5lIF9fTlJfZ2V0cmxpbWl0IDE2MworI2RlZmluZSBfX05SX3NldHJs
aW1pdCAxNjQKKyNkZWZpbmUgX19OUl9nZXRydXNhZ2UgMTY1CisjZGVmaW5lIF9fTlJfdW1hc2sg
MTY2CisjZGVmaW5lIF9fTlJfcHJjdGwgMTY3CisjZGVmaW5lIF9fTlJfZ2V0Y3B1IDE2OAorI2Rl
ZmluZSBfX05SX2dldHRpbWVvZmRheSAxNjkKKyNkZWZpbmUgX19OUl9zZXR0aW1lb2ZkYXkgMTcw
CisjZGVmaW5lIF9fTlJfYWRqdGltZXggMTcxCisjZGVmaW5lIF9fTlJfZ2V0cGlkIDE3MgorI2Rl
ZmluZSBfX05SX2dldHBwaWQgMTczCisjZGVmaW5lIF9fTlJfZ2V0dWlkIDE3NAorI2RlZmluZSBf
X05SX2dldGV1aWQgMTc1CisjZGVmaW5lIF9fTlJfZ2V0Z2lkIDE3NgorI2RlZmluZSBfX05SX2dl
dGVnaWQgMTc3CisjZGVmaW5lIF9fTlJfZ2V0dGlkIDE3OAorI2RlZmluZSBfX05SX3N5c2luZm8g
MTc5CisjZGVmaW5lIF9fTlJfbXFfb3BlbiAxODAKKyNkZWZpbmUgX19OUl9tcV91bmxpbmsgMTgx
CisjZGVmaW5lIF9fTlJfbXFfdGltZWRzZW5kIDE4MgorI2RlZmluZSBfX05SX21xX3RpbWVkcmVj
ZWl2ZSAxODMKKyNkZWZpbmUgX19OUl9tcV9ub3RpZnkgMTg0CisjZGVmaW5lIF9fTlJfbXFfZ2V0
c2V0YXR0ciAxODUKKyNkZWZpbmUgX19OUl9tc2dnZXQgMTg2CisjZGVmaW5lIF9fTlJfbXNnY3Rs
IDE4NworI2RlZmluZSBfX05SX21zZ3JjdiAxODgKKyNkZWZpbmUgX19OUl9tc2dzbmQgMTg5Cisj
ZGVmaW5lIF9fTlJfc2VtZ2V0IDE5MAorI2RlZmluZSBfX05SX3NlbWN0bCAxOTEKKyNkZWZpbmUg
X19OUl9zZW10aW1lZG9wIDE5MgorI2RlZmluZSBfX05SX3NlbW9wIDE5MworI2RlZmluZSBfX05S
X3NobWdldCAxOTQKKyNkZWZpbmUgX19OUl9zaG1jdGwgMTk1CisjZGVmaW5lIF9fTlJfc2htYXQg
MTk2CisjZGVmaW5lIF9fTlJfc2htZHQgMTk3CisjZGVmaW5lIF9fTlJfc29ja2V0IDE5OAorI2Rl
ZmluZSBfX05SX3NvY2tldHBhaXIgMTk5CisjZGVmaW5lIF9fTlJfYmluZCAyMDAKKyNkZWZpbmUg
X19OUl9saXN0ZW4gMjAxCisjZGVmaW5lIF9fTlJfYWNjZXB0IDIwMgorI2RlZmluZSBfX05SX2Nv
bm5lY3QgMjAzCisjZGVmaW5lIF9fTlJfZ2V0c29ja25hbWUgMjA0CisjZGVmaW5lIF9fTlJfZ2V0
cGVlcm5hbWUgMjA1CisjZGVmaW5lIF9fTlJfc2VuZHRvIDIwNgorI2RlZmluZSBfX05SX3JlY3Zm
cm9tIDIwNworI2RlZmluZSBfX05SX3NldHNvY2tvcHQgMjA4CisjZGVmaW5lIF9fTlJfZ2V0c29j
a29wdCAyMDkKKyNkZWZpbmUgX19OUl9zaHV0ZG93biAyMTAKKyNkZWZpbmUgX19OUl9zZW5kbXNn
IDIxMQorI2RlZmluZSBfX05SX3JlY3Ztc2cgMjEyCisjZGVmaW5lIF9fTlJfcmVhZGFoZWFkIDIx
MworI2RlZmluZSBfX05SX2JyayAyMTQKKyNkZWZpbmUgX19OUl9tdW5tYXAgMjE1CisjZGVmaW5l
IF9fTlJfbXJlbWFwIDIxNgorI2RlZmluZSBfX05SX2FkZF9rZXkgMjE3CisjZGVmaW5lIF9fTlJf
cmVxdWVzdF9rZXkgMjE4CisjZGVmaW5lIF9fTlJfa2V5Y3RsIDIxOQorI2RlZmluZSBfX05SX2Ns
b25lIDIyMAorI2RlZmluZSBfX05SX2V4ZWN2ZSAyMjEKKyNkZWZpbmUgX19OUl9tbWFwIDIyMgor
I2RlZmluZSBfX05SX2ZhZHZpc2U2NCAyMjMKKyNkZWZpbmUgX19OUl9zd2Fwb24gMjI0CisjZGVm
aW5lIF9fTlJfc3dhcG9mZiAyMjUKKyNkZWZpbmUgX19OUl9tcHJvdGVjdCAyMjYKKyNkZWZpbmUg
X19OUl9tc3luYyAyMjcKKyNkZWZpbmUgX19OUl9tbG9jayAyMjgKKyNkZWZpbmUgX19OUl9tdW5s
b2NrIDIyOQorI2RlZmluZSBfX05SX21sb2NrYWxsIDIzMAorI2RlZmluZSBfX05SX211bmxvY2th
bGwgMjMxCisjZGVmaW5lIF9fTlJfbWluY29yZSAyMzIKKyNkZWZpbmUgX19OUl9tYWR2aXNlIDIz
MworI2RlZmluZSBfX05SX3JlbWFwX2ZpbGVfcGFnZXMgMjM0CisjZGVmaW5lIF9fTlJfbWJpbmQg
MjM1CisjZGVmaW5lIF9fTlJfZ2V0X21lbXBvbGljeSAyMzYKKyNkZWZpbmUgX19OUl9zZXRfbWVt
cG9saWN5IDIzNworI2RlZmluZSBfX05SX21pZ3JhdGVfcGFnZXMgMjM4CisjZGVmaW5lIF9fTlJf
bW92ZV9wYWdlcyAyMzkKKyNkZWZpbmUgX19OUl9ydF90Z3NpZ3F1ZXVlaW5mbyAyNDAKKyNkZWZp
bmUgX19OUl9wZXJmX2V2ZW50X29wZW4gMjQxCisjZGVmaW5lIF9fTlJfYWNjZXB0NCAyNDIKKyNk
ZWZpbmUgX19OUl9yZWN2bW1zZyAyNDMKKyNkZWZpbmUgX19OUl93YWl0NCAyNjAKKyNkZWZpbmUg
X19OUl9wcmxpbWl0NjQgMjYxCisjZGVmaW5lIF9fTlJfZmFub3RpZnlfaW5pdCAyNjIKKyNkZWZp
bmUgX19OUl9mYW5vdGlmeV9tYXJrIDI2MworI2RlZmluZSBfX05SX25hbWVfdG9faGFuZGxlX2F0
IDI2NAorI2RlZmluZSBfX05SX29wZW5fYnlfaGFuZGxlX2F0IDI2NQorI2RlZmluZSBfX05SX2Ns
b2NrX2FkanRpbWUgMjY2CisjZGVmaW5lIF9fTlJfc3luY2ZzIDI2NworI2RlZmluZSBfX05SX3Nl
dG5zIDI2OAorI2RlZmluZSBfX05SX3NlbmRtbXNnIDI2OQorI2RlZmluZSBfX05SX3Byb2Nlc3Nf
dm1fcmVhZHYgMjcwCisjZGVmaW5lIF9fTlJfcHJvY2Vzc192bV93cml0ZXYgMjcxCisjZGVmaW5l
IF9fTlJfa2NtcCAyNzIKKyNkZWZpbmUgX19OUl9maW5pdF9tb2R1bGUgMjczCisjZGVmaW5lIF9f
TlJfc2NoZWRfc2V0YXR0ciAyNzQKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRhdHRyIDI3NQorI2Rl
ZmluZSBfX05SX3JlbmFtZWF0MiAyNzYKKyNkZWZpbmUgX19OUl9zZWNjb21wIDI3NworI2RlZmlu
ZSBfX05SX2dldHJhbmRvbSAyNzgKKyNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgMjc5CisjZGVm
aW5lIF9fTlJfYnBmIDI4MAorI2RlZmluZSBfX05SX2V4ZWN2ZWF0IDI4MQorI2RlZmluZSBfX05S
X3VzZXJmYXVsdGZkIDI4MgorI2RlZmluZSBfX05SX21lbWJhcnJpZXIgMjgzCisjZGVmaW5lIF9f
TlJfbWxvY2syIDI4NAorI2RlZmluZSBfX05SX2NvcHlfZmlsZV9yYW5nZSAyODUKKyNkZWZpbmUg
X19OUl9wcmVhZHYyIDI4NgorI2RlZmluZSBfX05SX3B3cml0ZXYyIDI4NworI2RlZmluZSBfX05S
X3BrZXlfbXByb3RlY3QgMjg4CisjZGVmaW5lIF9fTlJfcGtleV9hbGxvYyAyODkKKyNkZWZpbmUg
X19OUl9wa2V5X2ZyZWUgMjkwCisjZGVmaW5lIF9fTlJfc3RhdHggMjkxCisjZGVmaW5lIF9fTlJf
aW9fcGdldGV2ZW50cyAyOTIKKwpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9hcmNoL3g4
Nl82NC9zeXNjYWxsLmguaW4gYi9saWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwu
aC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOWNkYjc3ODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9saWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwuaC5pbgpA
QCAtMCwwICsxLDMzNiBAQAorI2RlZmluZSBfX05SX3JlYWQJCQkJMAorI2RlZmluZSBfX05SX3dy
aXRlCQkJCTEKKyNkZWZpbmUgX19OUl9vcGVuCQkJCTIKKyNkZWZpbmUgX19OUl9jbG9zZQkJCQkz
CisjZGVmaW5lIF9fTlJfc3RhdAkJCQk0CisjZGVmaW5lIF9fTlJfZnN0YXQJCQkJNQorI2RlZmlu
ZSBfX05SX2xzdGF0CQkJCTYKKyNkZWZpbmUgX19OUl9wb2xsCQkJCTcKKyNkZWZpbmUgX19OUl9s
c2VlawkJCQk4CisjZGVmaW5lIF9fTlJfbW1hcAkJCQk5CisjZGVmaW5lIF9fTlJfbXByb3RlY3QJ
CQkxMAorI2RlZmluZSBfX05SX211bm1hcAkJCQkxMQorI2RlZmluZSBfX05SX2JyawkJCQkxMgor
I2RlZmluZSBfX05SX3J0X3NpZ2FjdGlvbgkJMTMKKyNkZWZpbmUgX19OUl9ydF9zaWdwcm9jbWFz
awkJMTQKKyNkZWZpbmUgX19OUl9ydF9zaWdyZXR1cm4JCTE1CisjZGVmaW5lIF9fTlJfaW9jdGwJ
CQkJMTYKKyNkZWZpbmUgX19OUl9wcmVhZDY0CQkJMTcKKyNkZWZpbmUgX19OUl9wd3JpdGU2NAkJ
CTE4CisjZGVmaW5lIF9fTlJfcmVhZHYJCQkJMTkKKyNkZWZpbmUgX19OUl93cml0ZXYJCQkJMjAK
KyNkZWZpbmUgX19OUl9hY2Nlc3MJCQkJMjEKKyNkZWZpbmUgX19OUl9waXBlCQkJCTIyCisjZGVm
aW5lIF9fTlJfc2VsZWN0CQkJCTIzCisjZGVmaW5lIF9fTlJfc2NoZWRfeWllbGQJCTI0CisjZGVm
aW5lIF9fTlJfbXJlbWFwCQkJCTI1CisjZGVmaW5lIF9fTlJfbXN5bmMJCQkJMjYKKyNkZWZpbmUg
X19OUl9taW5jb3JlCQkJMjcKKyNkZWZpbmUgX19OUl9tYWR2aXNlCQkJMjgKKyNkZWZpbmUgX19O
Ul9zaG1nZXQJCQkJMjkKKyNkZWZpbmUgX19OUl9zaG1hdAkJCQkzMAorI2RlZmluZSBfX05SX3No
bWN0bAkJCQkzMQorI2RlZmluZSBfX05SX2R1cAkJCQkzMgorI2RlZmluZSBfX05SX2R1cDIJCQkJ
MzMKKyNkZWZpbmUgX19OUl9wYXVzZQkJCQkzNAorI2RlZmluZSBfX05SX25hbm9zbGVlcAkJCTM1
CisjZGVmaW5lIF9fTlJfZ2V0aXRpbWVyCQkJMzYKKyNkZWZpbmUgX19OUl9hbGFybQkJCQkzNwor
I2RlZmluZSBfX05SX3NldGl0aW1lcgkJCTM4CisjZGVmaW5lIF9fTlJfZ2V0cGlkCQkJCTM5Cisj
ZGVmaW5lIF9fTlJfc2VuZGZpbGUJCQk0MAorI2RlZmluZSBfX05SX3NvY2tldAkJCQk0MQorI2Rl
ZmluZSBfX05SX2Nvbm5lY3QJCQk0MgorI2RlZmluZSBfX05SX2FjY2VwdAkJCQk0MworI2RlZmlu
ZSBfX05SX3NlbmR0bwkJCQk0NAorI2RlZmluZSBfX05SX3JlY3Zmcm9tCQkJNDUKKyNkZWZpbmUg
X19OUl9zZW5kbXNnCQkJNDYKKyNkZWZpbmUgX19OUl9yZWN2bXNnCQkJNDcKKyNkZWZpbmUgX19O
Ul9zaHV0ZG93bgkJCTQ4CisjZGVmaW5lIF9fTlJfYmluZAkJCQk0OQorI2RlZmluZSBfX05SX2xp
c3RlbgkJCQk1MAorI2RlZmluZSBfX05SX2dldHNvY2tuYW1lCQk1MQorI2RlZmluZSBfX05SX2dl
dHBlZXJuYW1lCQk1MgorI2RlZmluZSBfX05SX3NvY2tldHBhaXIJCQk1MworI2RlZmluZSBfX05S
X3NldHNvY2tvcHQJCQk1NAorI2RlZmluZSBfX05SX2dldHNvY2tvcHQJCQk1NQorI2RlZmluZSBf
X05SX2Nsb25lCQkJCTU2CisjZGVmaW5lIF9fTlJfZm9yawkJCQk1NworI2RlZmluZSBfX05SX3Zm
b3JrCQkJCTU4CisjZGVmaW5lIF9fTlJfZXhlY3ZlCQkJCTU5CisjZGVmaW5lIF9fTlJfZXhpdAkJ
CQk2MAorI2RlZmluZSBfX05SX3dhaXQ0CQkJCTYxCisjZGVmaW5lIF9fTlJfa2lsbAkJCQk2Mgor
I2RlZmluZSBfX05SX3VuYW1lCQkJCTYzCisjZGVmaW5lIF9fTlJfc2VtZ2V0CQkJCTY0CisjZGVm
aW5lIF9fTlJfc2Vtb3AJCQkJNjUKKyNkZWZpbmUgX19OUl9zZW1jdGwJCQkJNjYKKyNkZWZpbmUg
X19OUl9zaG1kdAkJCQk2NworI2RlZmluZSBfX05SX21zZ2dldAkJCQk2OAorI2RlZmluZSBfX05S
X21zZ3NuZAkJCQk2OQorI2RlZmluZSBfX05SX21zZ3JjdgkJCQk3MAorI2RlZmluZSBfX05SX21z
Z2N0bAkJCQk3MQorI2RlZmluZSBfX05SX2ZjbnRsCQkJCTcyCisjZGVmaW5lIF9fTlJfZmxvY2sJ
CQkJNzMKKyNkZWZpbmUgX19OUl9mc3luYwkJCQk3NAorI2RlZmluZSBfX05SX2ZkYXRhc3luYwkJ
CTc1CisjZGVmaW5lIF9fTlJfdHJ1bmNhdGUJCQk3NgorI2RlZmluZSBfX05SX2Z0cnVuY2F0ZQkJ
CTc3CisjZGVmaW5lIF9fTlJfZ2V0ZGVudHMJCQk3OAorI2RlZmluZSBfX05SX2dldGN3ZAkJCQk3
OQorI2RlZmluZSBfX05SX2NoZGlyCQkJCTgwCisjZGVmaW5lIF9fTlJfZmNoZGlyCQkJCTgxCisj
ZGVmaW5lIF9fTlJfcmVuYW1lCQkJCTgyCisjZGVmaW5lIF9fTlJfbWtkaXIJCQkJODMKKyNkZWZp
bmUgX19OUl9ybWRpcgkJCQk4NAorI2RlZmluZSBfX05SX2NyZWF0CQkJCTg1CisjZGVmaW5lIF9f
TlJfbGluawkJCQk4NgorI2RlZmluZSBfX05SX3VubGluawkJCQk4NworI2RlZmluZSBfX05SX3N5
bWxpbmsJCQk4OAorI2RlZmluZSBfX05SX3JlYWRsaW5rCQkJODkKKyNkZWZpbmUgX19OUl9jaG1v
ZAkJCQk5MAorI2RlZmluZSBfX05SX2ZjaG1vZAkJCQk5MQorI2RlZmluZSBfX05SX2Nob3duCQkJ
CTkyCisjZGVmaW5lIF9fTlJfZmNob3duCQkJCTkzCisjZGVmaW5lIF9fTlJfbGNob3duCQkJCTk0
CisjZGVmaW5lIF9fTlJfdW1hc2sJCQkJOTUKKyNkZWZpbmUgX19OUl9nZXR0aW1lb2ZkYXkJCTk2
CisjZGVmaW5lIF9fTlJfZ2V0cmxpbWl0CQkJOTcKKyNkZWZpbmUgX19OUl9nZXRydXNhZ2UJCQk5
OAorI2RlZmluZSBfX05SX3N5c2luZm8JCQk5OQorI2RlZmluZSBfX05SX3RpbWVzCQkJCTEwMAor
I2RlZmluZSBfX05SX3B0cmFjZQkJCQkxMDEKKyNkZWZpbmUgX19OUl9nZXR1aWQJCQkJMTAyCisj
ZGVmaW5lIF9fTlJfc3lzbG9nCQkJCTEwMworI2RlZmluZSBfX05SX2dldGdpZAkJCQkxMDQKKyNk
ZWZpbmUgX19OUl9zZXR1aWQJCQkJMTA1CisjZGVmaW5lIF9fTlJfc2V0Z2lkCQkJCTEwNgorI2Rl
ZmluZSBfX05SX2dldGV1aWQJCQkxMDcKKyNkZWZpbmUgX19OUl9nZXRlZ2lkCQkJMTA4CisjZGVm
aW5lIF9fTlJfc2V0cGdpZAkJCTEwOQorI2RlZmluZSBfX05SX2dldHBwaWQJCQkxMTAKKyNkZWZp
bmUgX19OUl9nZXRwZ3JwCQkJMTExCisjZGVmaW5lIF9fTlJfc2V0c2lkCQkJCTExMgorI2RlZmlu
ZSBfX05SX3NldHJldWlkCQkJMTEzCisjZGVmaW5lIF9fTlJfc2V0cmVnaWQJCQkxMTQKKyNkZWZp
bmUgX19OUl9nZXRncm91cHMJCQkxMTUKKyNkZWZpbmUgX19OUl9zZXRncm91cHMJCQkxMTYKKyNk
ZWZpbmUgX19OUl9zZXRyZXN1aWQJCQkxMTcKKyNkZWZpbmUgX19OUl9nZXRyZXN1aWQJCQkxMTgK
KyNkZWZpbmUgX19OUl9zZXRyZXNnaWQJCQkxMTkKKyNkZWZpbmUgX19OUl9nZXRyZXNnaWQJCQkx
MjAKKyNkZWZpbmUgX19OUl9nZXRwZ2lkCQkJMTIxCisjZGVmaW5lIF9fTlJfc2V0ZnN1aWQJCQkx
MjIKKyNkZWZpbmUgX19OUl9zZXRmc2dpZAkJCTEyMworI2RlZmluZSBfX05SX2dldHNpZAkJCQkx
MjQKKyNkZWZpbmUgX19OUl9jYXBnZXQJCQkJMTI1CisjZGVmaW5lIF9fTlJfY2Fwc2V0CQkJCTEy
NgorI2RlZmluZSBfX05SX3J0X3NpZ3BlbmRpbmcJCTEyNworI2RlZmluZSBfX05SX3J0X3NpZ3Rp
bWVkd2FpdAkxMjgKKyNkZWZpbmUgX19OUl9ydF9zaWdxdWV1ZWluZm8JMTI5CisjZGVmaW5lIF9f
TlJfcnRfc2lnc3VzcGVuZAkJMTMwCisjZGVmaW5lIF9fTlJfc2lnYWx0c3RhY2sJCTEzMQorI2Rl
ZmluZSBfX05SX3V0aW1lCQkJCTEzMgorI2RlZmluZSBfX05SX21rbm9kCQkJCTEzMworI2RlZmlu
ZSBfX05SX3VzZWxpYgkJCQkxMzQKKyNkZWZpbmUgX19OUl9wZXJzb25hbGl0eQkJMTM1CisjZGVm
aW5lIF9fTlJfdXN0YXQJCQkJMTM2CisjZGVmaW5lIF9fTlJfc3RhdGZzCQkJCTEzNworI2RlZmlu
ZSBfX05SX2ZzdGF0ZnMJCQkxMzgKKyNkZWZpbmUgX19OUl9zeXNmcwkJCQkxMzkKKyNkZWZpbmUg
X19OUl9nZXRwcmlvcml0eQkJCTE0MAorI2RlZmluZSBfX05SX3NldHByaW9yaXR5CQkJMTQxCisj
ZGVmaW5lIF9fTlJfc2NoZWRfc2V0cGFyYW0JCQkxNDIKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRw
YXJhbQkJCTE0MworI2RlZmluZSBfX05SX3NjaGVkX3NldHNjaGVkdWxlcgkJMTQ0CisjZGVmaW5l
IF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyCQkxNDUKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJp
b3JpdHlfbWF4CTE0NgorI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9taW4JMTQ3Cisj
ZGVmaW5lIF9fTlJfc2NoZWRfcnJfZ2V0X2ludGVydmFsCTE0OAorI2RlZmluZSBfX05SX21sb2Nr
CQkJCQkxNDkKKyNkZWZpbmUgX19OUl9tdW5sb2NrCQkJCTE1MAorI2RlZmluZSBfX05SX21sb2Nr
YWxsCQkJCTE1MQorI2RlZmluZSBfX05SX211bmxvY2thbGwJCQkJMTUyCisjZGVmaW5lIF9fTlJf
dmhhbmd1cAkJCQkxNTMKKyNkZWZpbmUgX19OUl9tb2RpZnlfbGR0CQkJCTE1NAorI2RlZmluZSBf
X05SX3Bpdm90X3Jvb3QJCQkJMTU1CisjZGVmaW5lIF9fTlJfX3N5c2N0bAkJCQkxNTYKKyNkZWZp
bmUgX19OUl9wcmN0bAkJCQkJMTU3CisjZGVmaW5lIF9fTlJfYXJjaF9wcmN0bAkJCQkxNTgKKyNk
ZWZpbmUgX19OUl9hZGp0aW1leAkJCQkxNTkKKyNkZWZpbmUgX19OUl9zZXRybGltaXQJCQkJMTYw
CisjZGVmaW5lIF9fTlJfY2hyb290CQkJCQkxNjEKKyNkZWZpbmUgX19OUl9zeW5jCQkJCQkxNjIK
KyNkZWZpbmUgX19OUl9hY2N0CQkJCQkxNjMKKyNkZWZpbmUgX19OUl9zZXR0aW1lb2ZkYXkJCQkx
NjQKKyNkZWZpbmUgX19OUl9tb3VudAkJCQkJMTY1CisjZGVmaW5lIF9fTlJfdW1vdW50MgkJCQkx
NjYKKyNkZWZpbmUgX19OUl9zd2Fwb24JCQkJCTE2NworI2RlZmluZSBfX05SX3N3YXBvZmYJCQkJ
MTY4CisjZGVmaW5lIF9fTlJfcmVib290CQkJCQkxNjkKKyNkZWZpbmUgX19OUl9zZXRob3N0bmFt
ZQkJCTE3MAorI2RlZmluZSBfX05SX3NldGRvbWFpbm5hbWUJCQkxNzEKKyNkZWZpbmUgX19OUl9p
b3BsCQkJCQkxNzIKKyNkZWZpbmUgX19OUl9pb3Blcm0JCQkJCTE3MworI2RlZmluZSBfX05SX2Ny
ZWF0ZV9tb2R1bGUJCQkxNzQKKyNkZWZpbmUgX19OUl9pbml0X21vZHVsZQkJCTE3NQorI2RlZmlu
ZSBfX05SX2RlbGV0ZV9tb2R1bGUJCQkxNzYKKyNkZWZpbmUgX19OUl9nZXRfa2VybmVsX3N5bXMJ
CTE3NworI2RlZmluZSBfX05SX3F1ZXJ5X21vZHVsZQkJCTE3OAorI2RlZmluZSBfX05SX3F1b3Rh
Y3RsCQkJCTE3OQorI2RlZmluZSBfX05SX25mc3NlcnZjdGwJCQkJMTgwCisjZGVmaW5lIF9fTlJf
Z2V0cG1zZwkJCQkxODEKKyNkZWZpbmUgX19OUl9wdXRwbXNnCQkJCTE4MgorI2RlZmluZSBfX05S
X2Fmc19zeXNjYWxsCQkJMTgzCisjZGVmaW5lIF9fTlJfdHV4Y2FsbAkJCQkxODQKKyNkZWZpbmUg
X19OUl9zZWN1cml0eQkJCQkxODUKKyNkZWZpbmUgX19OUl9nZXR0aWQJCQkJCTE4NgorI2RlZmlu
ZSBfX05SX3JlYWRhaGVhZAkJCQkxODcKKyNkZWZpbmUgX19OUl9zZXR4YXR0cgkJCQkxODgKKyNk
ZWZpbmUgX19OUl9sc2V0eGF0dHIJCQkJMTg5CisjZGVmaW5lIF9fTlJfZnNldHhhdHRyCQkJCTE5
MAorI2RlZmluZSBfX05SX2dldHhhdHRyCQkJCTE5MQorI2RlZmluZSBfX05SX2xnZXR4YXR0cgkJ
CQkxOTIKKyNkZWZpbmUgX19OUl9mZ2V0eGF0dHIJCQkJMTkzCisjZGVmaW5lIF9fTlJfbGlzdHhh
dHRyCQkJCTE5NAorI2RlZmluZSBfX05SX2xsaXN0eGF0dHIJCQkJMTk1CisjZGVmaW5lIF9fTlJf
Zmxpc3R4YXR0cgkJCQkxOTYKKyNkZWZpbmUgX19OUl9yZW1vdmV4YXR0cgkJCTE5NworI2RlZmlu
ZSBfX05SX2xyZW1vdmV4YXR0cgkJCTE5OAorI2RlZmluZSBfX05SX2ZyZW1vdmV4YXR0cgkJCTE5
OQorI2RlZmluZSBfX05SX3RraWxsCQkJCQkyMDAKKyNkZWZpbmUgX19OUl90aW1lCQkJCQkyMDEK
KyNkZWZpbmUgX19OUl9mdXRleAkJCQkJMjAyCisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0YWZmaW5p
dHkJCTIwMworI2RlZmluZSBfX05SX3NjaGVkX2dldGFmZmluaXR5CQkyMDQKKyNkZWZpbmUgX19O
Ul9zZXRfdGhyZWFkX2FyZWEJCTIwNQorI2RlZmluZSBfX05SX2lvX3NldHVwCQkJCTIwNgorI2Rl
ZmluZSBfX05SX2lvX2Rlc3Ryb3kJCQkJMjA3CisjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZlbnRzCQkJ
MjA4CisjZGVmaW5lIF9fTlJfaW9fc3VibWl0CQkJCTIwOQorI2RlZmluZSBfX05SX2lvX2NhbmNl
bAkJCQkyMTAKKyNkZWZpbmUgX19OUl9nZXRfdGhyZWFkX2FyZWEJCTIxMQorI2RlZmluZSBfX05S
X2xvb2t1cF9kY29va2llCQkJMjEyCisjZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRlCQkJMjEzCisj
ZGVmaW5lIF9fTlJfZXBvbGxfY3RsX29sZAkJCTIxNAorI2RlZmluZSBfX05SX2Vwb2xsX3dhaXRf
b2xkCQkJMjE1CisjZGVmaW5lIF9fTlJfcmVtYXBfZmlsZV9wYWdlcwkJMjE2CisjZGVmaW5lIF9f
TlJfZ2V0ZGVudHM2NAkJCQkyMTcKKyNkZWZpbmUgX19OUl9zZXRfdGlkX2FkZHJlc3MJCTIxOAor
I2RlZmluZSBfX05SX3Jlc3RhcnRfc3lzY2FsbAkJMjE5CisjZGVmaW5lIF9fTlJfc2VtdGltZWRv
cAkJCQkyMjAKKyNkZWZpbmUgX19OUl9mYWR2aXNlNjQJCQkJMjIxCisjZGVmaW5lIF9fTlJfdGlt
ZXJfY3JlYXRlCQkJMjIyCisjZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZQkJCTIyMworI2RlZmlu
ZSBfX05SX3RpbWVyX2dldHRpbWUJCQkyMjQKKyNkZWZpbmUgX19OUl90aW1lcl9nZXRvdmVycnVu
CQkyMjUKKyNkZWZpbmUgX19OUl90aW1lcl9kZWxldGUJCQkyMjYKKyNkZWZpbmUgX19OUl9jbG9j
a19zZXR0aW1lCQkJMjI3CisjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0dGltZQkJCTIyOAorI2RlZmlu
ZSBfX05SX2Nsb2NrX2dldHJlcwkJCTIyOQorI2RlZmluZSBfX05SX2Nsb2NrX25hbm9zbGVlcAkJ
MjMwCisjZGVmaW5lIF9fTlJfZXhpdF9ncm91cAkJCQkyMzEKKyNkZWZpbmUgX19OUl9lcG9sbF93
YWl0CQkJCTIzMgorI2RlZmluZSBfX05SX2Vwb2xsX2N0bAkJCQkyMzMKKyNkZWZpbmUgX19OUl90
Z2tpbGwJCQkJCTIzNAorI2RlZmluZSBfX05SX3V0aW1lcwkJCQkJMjM1CisjZGVmaW5lIF9fTlJf
dnNlcnZlcgkJCQkyMzYKKyNkZWZpbmUgX19OUl9tYmluZAkJCQkJMjM3CisjZGVmaW5lIF9fTlJf
c2V0X21lbXBvbGljeQkJCTIzOAorI2RlZmluZSBfX05SX2dldF9tZW1wb2xpY3kJCQkyMzkKKyNk
ZWZpbmUgX19OUl9tcV9vcGVuCQkJCTI0MAorI2RlZmluZSBfX05SX21xX3VubGluawkJCQkyNDEK
KyNkZWZpbmUgX19OUl9tcV90aW1lZHNlbmQJCQkyNDIKKyNkZWZpbmUgX19OUl9tcV90aW1lZHJl
Y2VpdmUJCTI0MworI2RlZmluZSBfX05SX21xX25vdGlmeQkJCQkyNDQKKyNkZWZpbmUgX19OUl9t
cV9nZXRzZXRhdHRyCQkJMjQ1CisjZGVmaW5lIF9fTlJfa2V4ZWNfbG9hZAkJCQkyNDYKKyNkZWZp
bmUgX19OUl93YWl0aWQJCQkJCTI0NworI2RlZmluZSBfX05SX2FkZF9rZXkJCQkJMjQ4CisjZGVm
aW5lIF9fTlJfcmVxdWVzdF9rZXkJCQkyNDkKKyNkZWZpbmUgX19OUl9rZXljdGwJCQkJCTI1MAor
I2RlZmluZSBfX05SX2lvcHJpb19zZXQJCQkJMjUxCisjZGVmaW5lIF9fTlJfaW9wcmlvX2dldAkJ
CQkyNTIKKyNkZWZpbmUgX19OUl9pbm90aWZ5X2luaXQJCQkyNTMKKyNkZWZpbmUgX19OUl9pbm90
aWZ5X2FkZF93YXRjaAkJMjU0CisjZGVmaW5lIF9fTlJfaW5vdGlmeV9ybV93YXRjaAkJMjU1Cisj
ZGVmaW5lIF9fTlJfbWlncmF0ZV9wYWdlcwkJCTI1NgorI2RlZmluZSBfX05SX29wZW5hdAkJCQkJ
MjU3CisjZGVmaW5lIF9fTlJfbWtkaXJhdAkJCQkyNTgKKyNkZWZpbmUgX19OUl9ta25vZGF0CQkJ
CTI1OQorI2RlZmluZSBfX05SX2ZjaG93bmF0CQkJCTI2MAorI2RlZmluZSBfX05SX2Z1dGltZXNh
dAkJCQkyNjEKKyNkZWZpbmUgX19OUl9uZXdmc3RhdGF0CQkJCTI2MgorI2RlZmluZSBfX05SX3Vu
bGlua2F0CQkJCTI2MworI2RlZmluZSBfX05SX3JlbmFtZWF0CQkJCTI2NAorI2RlZmluZSBfX05S
X2xpbmthdAkJCQkJMjY1CisjZGVmaW5lIF9fTlJfc3ltbGlua2F0CQkJCTI2NgorI2RlZmluZSBf
X05SX3JlYWRsaW5rYXQJCQkJMjY3CisjZGVmaW5lIF9fTlJfZmNobW9kYXQJCQkJMjY4CisjZGVm
aW5lIF9fTlJfZmFjY2Vzc2F0CQkJCTI2OQorI2RlZmluZSBfX05SX3BzZWxlY3Q2CQkJCTI3MAor
I2RlZmluZSBfX05SX3Bwb2xsCQkJCQkyNzEKKyNkZWZpbmUgX19OUl91bnNoYXJlCQkJCTI3Mgor
I2RlZmluZSBfX05SX3NldF9yb2J1c3RfbGlzdAkJMjczCisjZGVmaW5lIF9fTlJfZ2V0X3JvYnVz
dF9saXN0CQkyNzQKKyNkZWZpbmUgX19OUl9zcGxpY2UJCQkJCTI3NQorI2RlZmluZSBfX05SX3Rl
ZQkJCQkJMjc2CisjZGVmaW5lIF9fTlJfc3luY19maWxlX3JhbmdlCQkyNzcKKyNkZWZpbmUgX19O
Ul92bXNwbGljZQkJCQkyNzgKKyNkZWZpbmUgX19OUl9tb3ZlX3BhZ2VzCQkJCTI3OQorI2RlZmlu
ZSBfX05SX3V0aW1lbnNhdAkJCQkyODAKKyNkZWZpbmUgX19OUl9lcG9sbF9wd2FpdAkJCTI4MQor
I2RlZmluZSBfX05SX3NpZ25hbGZkCQkJCTI4MgorI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRl
CQkJMjgzCisjZGVmaW5lIF9fTlJfZXZlbnRmZAkJCQkyODQKKyNkZWZpbmUgX19OUl9mYWxsb2Nh
dGUJCQkJMjg1CisjZGVmaW5lIF9fTlJfdGltZXJmZF9zZXR0aW1lCQkyODYKKyNkZWZpbmUgX19O
Ul90aW1lcmZkX2dldHRpbWUJCTI4NworI2RlZmluZSBfX05SX2FjY2VwdDQJCQkJMjg4CisjZGVm
aW5lIF9fTlJfc2lnbmFsZmQ0CQkJCTI4OQorI2RlZmluZSBfX05SX2V2ZW50ZmQyCQkJCTI5MAor
I2RlZmluZSBfX05SX2Vwb2xsX2NyZWF0ZTEJCQkyOTEKKyNkZWZpbmUgX19OUl9kdXAzCQkJCQky
OTIKKyNkZWZpbmUgX19OUl9waXBlMgkJCQkJMjkzCisjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0
MQkJCTI5NAorI2RlZmluZSBfX05SX3ByZWFkdgkJCQkJMjk1CisjZGVmaW5lIF9fTlJfcHdyaXRl
dgkJCQkyOTYKKyNkZWZpbmUgX19OUl9ydF90Z3NpZ3F1ZXVlaW5mbwkJMjk3CisjZGVmaW5lIF9f
TlJfcGVyZl9ldmVudF9vcGVuCQkyOTgKKyNkZWZpbmUgX19OUl9yZWN2bW1zZwkJCQkyOTkKKyNk
ZWZpbmUgX19OUl9mYW5vdGlmeV9pbml0CQkJMzAwCisjZGVmaW5lIF9fTlJfZmFub3RpZnlfbWFy
awkJCTMwMQorI2RlZmluZSBfX05SX3BybGltaXQ2NAkJCQkzMDIKKyNkZWZpbmUgX19OUl9uYW1l
X3RvX2hhbmRsZV9hdAkJCTMwMworI2RlZmluZSBfX05SX29wZW5fYnlfaGFuZGxlX2F0CQkJMzA0
CisjZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZQkJCTMwNQorI2RlZmluZSBfX05SX3N5bmNmcwkJ
CQkzMDYKKyNkZWZpbmUgX19OUl9zZW5kbW1zZwkJCQkzMDcKKyNkZWZpbmUgX19OUl9zZXRucwkJ
CQkzMDgKKyNkZWZpbmUgX19OUl9nZXRjcHUJCQkJMzA5CisjZGVmaW5lIF9fTlJfcHJvY2Vzc192
bV9yZWFkdgkJCTMxMAorI2RlZmluZSBfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2CQkJMzExCisjZGVm
aW5lIF9fTlJfa2NtcAkJCQkzMTIKKyNkZWZpbmUgX19OUl9maW5pdF9tb2R1bGUJCQkzMTMKKyNk
ZWZpbmUgX19OUl9zY2hlZF9zZXRhdHRyCQkJMzE0CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YXR0
cgkJCTMxNQorI2RlZmluZSBfX05SX3JlbmFtZWF0MgkJCQkzMTYKKyNkZWZpbmUgX19OUl9zZWNj
b21wCQkJCTMxNworI2RlZmluZSBfX05SX2dldHJhbmRvbQkJCQkzMTgKKyNkZWZpbmUgX19OUl9t
ZW1mZF9jcmVhdGUJCQkzMTkKKyNkZWZpbmUgX19OUl9rZXhlY19maWxlX2xvYWQJCQkzMjAKKyNk
ZWZpbmUgX19OUl9icGYJCQkJMzIxCisjZGVmaW5lIF9fTlJfZXhlY3ZlYXQJCQkJMzIyCisjZGVm
aW5lIF9fTlJfdXNlcmZhdWx0ZmQJCQkzMjMKKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyCQkJCTMy
NAorI2RlZmluZSBfX05SX21sb2NrMgkJCQkzMjUKKyNkZWZpbmUgX19OUl9jb3B5X2ZpbGVfcmFu
Z2UJCQkzMjYKKyNkZWZpbmUgX19OUl9wcmVhZHYyCQkJCTMyNworI2RlZmluZSBfX05SX3B3cml0
ZXYyCQkJCTMyOAorI2RlZmluZSBfX05SX3BrZXlfbXByb3RlY3QJCQkzMjkKKyNkZWZpbmUgX19O
Ul9wa2V5X2FsbG9jCQkJCTMzMAorI2RlZmluZSBfX05SX3BrZXlfZnJlZQkJCQkzMzEKKyNkZWZp
bmUgX19OUl9zdGF0eAkJCQkzMzIKKyNkZWZpbmUgX19OUl9pb19wZ2V0ZXZlbnRzCQkJMzMzCisj
ZGVmaW5lIF9fTlJfcnNlcQkJCQkzMzQKKwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16: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 1hYCJP-0001X6-UC; Tue, 04 Jun 2019 16:29: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=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJP-0001Wx-EA
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:23 +0000
X-Inumbo-ID: e6939192-86e5-11e9-865b-670c94a7bf4f
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e6939192-86e5-11e9-865b-670c94a7bf4f;
 Tue, 04 Jun 2019 16:29:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4B8F2F2073;
 Tue,  4 Jun 2019 18:29:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id r149HzKtfJTu; Tue,  4 Jun 2019 18:29:18 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1A83FF2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:16 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:15 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:35 +0200
Message-ID: <20190604162844.2712-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 01/10] include: move UK_CONCAT to
 essentials
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBtYWNybyBpcyB1c2VmdWwgbm90IGp1c3QgZm9yIHRyYWNpbmcuCgpTaWduZWQtb2ZmLWJ5
OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBpbmNsdWRlL3Vr
L2Vzc2VudGlhbHMuaCAgICAgICAgfCA1ICsrKysrCiBsaWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3Ry
YWNlLmggfCA0IC0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWsvZXNzZW50aWFscy5oIGIvaW5jbHVkZS91
ay9lc3NlbnRpYWxzLmgKaW5kZXggNjE3MGM1ZDIuLmU4MjY0YzVmIDEwMDY0NAotLS0gYS9pbmNs
dWRlL3VrL2Vzc2VudGlhbHMuaAorKysgYi9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaApAQCAtMTQ3
LDYgKzE0NywxMSBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgU1RSSU5HSUZZKHgpIF9fU1RSSU5H
SUZZKHgpCiAjZW5kaWYKIAorI2lmbmRlZiBVS19DT05DQVQKKyNkZWZpbmUgX19VS19DT05DQVRf
WChhLCBiKSBhIyNiCisjZGVmaW5lIFVLX0NPTkNBVChhLCBiKSBfX1VLX0NPTkNBVF9YKGEsIGIp
CisjZW5kaWYKKwogI2lmbmRlZiBNSU4KICNkZWZpbmUgTUlOKGEsIGIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJKHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCmRpZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmggYi9s
aWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgKaW5kZXggOTExY2E2YTYuLjg3NDUzODI2IDEw
MDY0NAotLS0gYS9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgKKysrIGIvbGliL3VrZGVi
dWcvaW5jbHVkZS91ay90cmFjZS5oCkBAIC02NiwxMCArNjYsNiBAQCBzdHJ1Y3QgdWtfdHJhY2Vw
b2ludF9oZWFkZXIgewogZXh0ZXJuIHNpemVfdCB1a190cmFjZV9idWZmZXJfZnJlZTsKIGV4dGVy
biBjaGFyICp1a190cmFjZV9idWZmZXJfd3JpdGVwOwogCi0vKiBUT0RPOiBjb25zaWRlciB0byBt
b3ZlIFVLX0NPTkNBVCBpbnRvIHB1YmxpYyBoZWFkZXJzICovCi0jZGVmaW5lIF9fVUtfQ09OQ0FU
X1goYSwgYikgYSMjYgotI2RlZmluZSBVS19DT05DQVQoYSwgYikgX19VS19DT05DQVRfWChhLCBi
KQotCiAjZGVmaW5lIF9fVUtfTkFSR1NfWChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBuLCAuLi4p
IG4KICNkZWZpbmUgVUtfTkFSR1MoLi4uKSAgX19VS19OQVJHU19YKCwgIyNfX1ZBX0FSR1NfXywg
NywgNiwgNSwgNCwgMywgMiwgMSwgMCkKIAotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJQ-0001XY-Vu; Tue, 04 Jun 2019 16:29:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJP-0001X3-SW
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:23 +0000
X-Inumbo-ID: e8dbe85b-86e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e8dbe85b-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2DFDC1052FB;
 Tue,  4 Jun 2019 18:29:22 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id im2Op1xqEQq8; Tue,  4 Jun 2019 18:29:22 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0F4D21052F7
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:22 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:21 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:38 +0200
Message-ID: <20190604162844.2712-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 04/10] build: introduce uk_mk_dir
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVzZWZ1bCBmb3IgbGlicmFyaWVzIHRvbwoKU2lnbmVkLW9m
Zi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogc3VwcG9y
dC9idWlsZC9NYWtlZmlsZS5ydWxlcyB8IDggKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGlu
c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3VwcG9ydC9idWlsZC9N
YWtlZmlsZS5ydWxlcyBiL3N1cHBvcnQvYnVpbGQvTWFrZWZpbGUucnVsZXMKaW5kZXggZDkwODA3
ZTAuLmUxYTVjMjA2IDEwMDY0NAotLS0gYS9zdXBwb3J0L2J1aWxkL01ha2VmaWxlLnJ1bGVzCisr
KyBiL3N1cHBvcnQvYnVpbGQvTWFrZWZpbGUucnVsZXMKQEAgLTQ4LDkgKzQ4LDEzIEBAIGVuZGVm
CiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitkZWZpbmUgdWtfbWtfZGlyID0KKyQoaWYg
JChzaGVsbCBta2RpciAtcCAkMSAmJiBjZCAkMSA+L2Rldi9udWxsICYmIHB3ZCksLFwKKwkkKGVy
cm9yIGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5ICQxKSkKK2VuZGVmCisKIGRlZmluZSBta19z
dWJfYnVpbGRfZGlyID0KLSQoaWYgJChzaGVsbCBta2RpciAtcCAiJChCVUlMRF9ESVIpLyQoMSki
ICYmIGNkICIkKEJVSUxEX0RJUikvJCgxKSIgPi9kZXYvbnVsbCAmJiBwd2QpLCxcCi0gICAgICQo
ZXJyb3IgY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgIiQoQlVJTERfRElSKS8kKDEpIikpCisk
KGNhbGwgdWtfbWtfZGlyLCAkKEJVSUxEX0RJUikvJDEpCiBlbmRlZgogCiBzdWJfYnVpbGRfZGly
ID0gJChhZGRwcmVmaXggJChCVUlMRF9ESVIpLywkKG5vdGRpciAkKDEpKSkKLS0gCjIuMTkuMgoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJU-0001YZ-22; Tue, 04 Jun 2019 16:29:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJS-0001Y9-Mt
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:26 +0000
X-Inumbo-ID: e8bd9cba-86e5-11e9-8fa3-37af814ca6fc
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e8bd9cba-86e5-11e9-8fa3-37af814ca6fc;
 Tue, 04 Jun 2019 16:29:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B8614F2074;
 Tue,  4 Jun 2019 18:29:21 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id XZ_6f1ypuhJl; Tue,  4 Jun 2019 18:29:21 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5986EF2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:19 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:19 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:37 +0200
Message-ID: <20190604162844.2712-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 03/10] remove duplicate syscalls
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhlIGltcGxlbWVudGF0aW9uIG9mIHN5c2NhbGxfc2hpbSByZWxpZXMgb24gdW5pcXVlbmVzcyBv
ZiB0aGUgc3lzY2FsbApudW1iZXJzLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVy
aS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNj
YWxsLmguaW4gfCAyIC0tCiAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbiBiL2xpYi9zeXNjYWxs
X3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluCmluZGV4IDEzYTNiNjZjLi4xZDc5MzY4YSAxMDA2
NDQKLS0tIGEvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4KKysrIGIvbGli
L3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4KQEAgLTIyNCw3ICsyMjQsNiBAQAog
I2RlZmluZSBfX05SX3Rna2lsbAkyNjgKICNkZWZpbmUgX19OUl91dGltZXMJMjY5CiAjZGVmaW5l
IF9fTlJfZmFkdmlzZTY0XzY0CTI3MAotI2RlZmluZSBfX05SX2FybV9mYWR2aXNlNjRfNjQJMjcw
CiAjZGVmaW5lIF9fTlJfcGNpY29uZmlnX2lvYmFzZQkyNzEKICNkZWZpbmUgX19OUl9wY2ljb25m
aWdfcmVhZAkyNzIKICNkZWZpbmUgX19OUl9wY2ljb25maWdfd3JpdGUJMjczCkBAIC0yOTYsNyAr
Mjk1LDYgQEAKICNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QJMzM5CiAjZGVmaW5lIF9fTlJf
c3BsaWNlCTM0MAogI2RlZmluZSBfX05SX3N5bmNfZmlsZV9yYW5nZTIJMzQxCi0jZGVmaW5lIF9f
TlJfYXJtX3N5bmNfZmlsZV9yYW5nZQkzNDEKICNkZWZpbmUgX19OUl90ZWUJMzQyCiAjZGVmaW5l
IF9fTlJfdm1zcGxpY2UJMzQzCiAjZGVmaW5lIF9fTlJfbW92ZV9wYWdlcwkzNDQKLS0gCjIuMTku
MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJU-0001Yj-5F; Tue, 04 Jun 2019 16:29:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJT-0001YK-H0
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:27 +0000
X-Inumbo-ID: ead5a55c-86e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ead5a55c-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7A7E11052FB;
 Tue,  4 Jun 2019 18:29:25 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id jEhG2KZp8PLt; Tue,  4 Jun 2019 18:29:25 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5BC7F1052F7
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:25 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:25 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:40 +0200
Message-ID: <20190604162844.2712-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 06/10] lib/syscall_shim: generate
 provided_syscalls.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIHByb3ZpZGVkX3N5c2NhbGxzLmggd2lsbCBiZSBjb250YWluaW5nIHByb3RvdHlwZXMgZm9y
IGV2ZXJ5CnN5c2NhbGwgcHJlc2VudCBpbiB0aGUgc3lzdGVtLgoKSXQgd2lsbCBiZSB0aGUgcmVz
cG9uc2liaWxpdHkgb2YgdGhlIGxpYnJhcmllcyB0byB0ZWxsIHN5c2NhbGxfc2hpbSBpZgpjZXJ0
YWluIHN5c2NhbGwgaXMgcHJvdmlkZWQuIElmIHN5c2NhbGwgaXMgYXZhaWxhYmxlLCBpdCBtdXN0
IGJlCmxpc3RlZCBpbiB0aGUgbWFrZWZpbGUncyB2YXJpYWJsZSAnVUtfUFJPVklERURfU1lTQ0FM
TFMnIGluIHRoZSBmb3JtYXQKPHN5c2NhbGxfbmFtZT4tPG51bWJlcl9vZl9hcmd1bWVudHM+LiBG
b3IgZXhhbXBsZToKClVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9
IHdyaXRldi0zCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5l
Y2xhYi5ldT4KLS0tCiBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrIHwgMTcgKysrKysrKysr
KysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgYi9saWIvc3lzY2Fs
bF9zaGltL01ha2VmaWxlLnVrCmluZGV4IDUyYTEyZjE4Li5iYjc2ZDdiMSAxMDA2NDQKLS0tIGEv
bGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51aworKysgYi9saWIvc3lzY2FsbF9zaGltL01ha2Vm
aWxlLnVrCkBAIC00LDkgKzQsMTIgQEAgX19HRU5fSU5DTFVERVNfUEFUSCA6PSAkKExJQlNZU0NB
TExfU0hJTV9CVUlMRCkvaW5jbHVkZS91ay9iaXRzCiAKIF9fUEhPTllfR0VOX1NSQyA6PSBzeXNj
YWxsX21hcC5oIHN5c2NhbGxfc3R1YnMuaCBzeXNjYWxsX25ycy5oCiBfX1BIT05ZX0dFTl9TUkMg
Oj0gJChhZGRwcmVmaXggJChfX0dFTl9JTkNMVURFU19QQVRIKS8sICQoX19QSE9OWV9HRU5fU1JD
KSkKK19fUEhPTllfR0VOX1NSQyArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRf
c3lzY2FsbHMuaC5pbgogX19QSE9OWV9HRU5fU1JDX05FVyA6PSAkKGFkZHN1ZmZpeCAubmV3LCAk
KF9fUEhPTllfR0VOX1NSQykpCiAKLVVLX1BSRVBBUkUtJChDT05GSUdfTElCU1lTQ0FMTF9TSElN
KSArPSAkKF9fUEhPTllfR0VOX1NSQykKK19fR0VOX1NSQyA6PSAkKF9fR0VOX0lOQ0xVREVTX1BB
VEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmgKKworVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxM
X1NISU0pICs9ICQoX19QSE9OWV9HRU5fU1JDKSAkKF9fR0VOX1NSQykKIAogCiBfX1NZU0NBTExf
U0hJTV9URU1QTCA6PSAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9hcmNoLyQoQ09ORklHX1VLX0FS
Q0gpL3N5c2NhbGwuaC5pbgpAQCAtMzMsOCArMzYsMTggQEAgJChfX0dFTl9JTkNMVURFU19QQVRI
KS9zeXNjYWxsX21hcC5oLm5ldzoKIAkJfScgXAogCQkkKF9fU1lTQ0FMTF9TSElNX1RFTVBMKSA+
ICRACiAKKyQoX19HRU5fSU5DTFVERVNfUEFUSCkvcHJvdmlkZWRfc3lzY2FsbHMuaDogJChMSUJT
WVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4KKwkkUSAkKEFXSykgLUYg
Jy0nIFwKKwknQkVHSU4ge3ByaW50ICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlOyBE
TyBOT1QgRURJVCAqLyJ9IFwKKwkvW2EtekEtWjAtOV0rLVswLTldKy97cHJpbnRmICJcbiNkZWZp
bmUgSEFWRV91a19zeXNjYWxsXyVzIHQiLCAkJDE7IFwKKwkgcHJpbnRmICJcblVLX1NZU0NBTExf
UFJPVE8oJXMsICVzKTtcbiIsICQkMiwgJCQxO30nIFwKKwkkXiA+ICRACisKKyQoTElCU1lTQ0FM
TF9TSElNX0JVSUxEKS9wcm92aWRlZF9zeXNjYWxscy5oLmluLm5ldzoKKwkkUSBlY2hvICQoVUtf
UFJPVklERURfU1lTQ0FMTFMteSkgfCB0ciAnICcgJ1xuJyA+ICRACisKICQoX19HRU5fSU5DTFVE
RVNfUEFUSCkvc3lzY2FsbF9zdHVicy5oLm5ldzoKIAkkKFEpICQoQVdLKSAtZiAkKExJQlNZU0NB
TExfU0hJTV9CQVNFKS9nZW5fc3R1YnMuYXdrIFwKIAkJJChfX1NZU0NBTExfU0hJTV9URU1QTCkg
PiAkQAogCi1MSUJTWVNDQUxMX1NISU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX1BI
T05ZX0dFTl9TUkNfTkVXKQorTElCU1lTQ0FMTF9TSElNX0NMRUFOID0gJChfX1BIT05ZX0dFTl9T
UkMpICQoX19QSE9OWV9HRU5fU1JDX05FVykgJChfX0dFTl9TUkMpCi0tIAoyLjE5LjIKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYCJV-0001aG-7A; Tue, 04 Jun 2019 16:29: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=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJT-0001YW-Vu
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:28 +0000
X-Inumbo-ID: ea70765e-86e5-11e9-9233-23d4c87658cc
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ea70765e-86e5-11e9-9233-23d4c87658cc;
 Tue, 04 Jun 2019 16:29:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CBA9CF2073;
 Tue,  4 Jun 2019 18:29:24 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LrjJ93K6Yn0k; Tue,  4 Jun 2019 18:29:24 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A1CF8F2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:22 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:22 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:39 +0200
Message-ID: <20190604162844.2712-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 05/10] lib/syscall_shim: generate
 base headers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhlIGZvbGxvd2luZyBoZWFkZXJzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGNvZGUgaW4gdGhpcyBw
YXRjaDoKICAtIHN5c2NhbGxfbnJzLmggLSBqdXN0IGRlZmluaXRpb25zIG9mIGFsbCB0aGUgc3lz
Y2FsbHMgd2l0aCB0aGVpcgogICAgbnVtYmVycwogIC0gc3lzY2FsbF9tYXAuaCAgLSBwcm92aWRl
cyBtYXBzIGZyb20gc3lzY2FsbCBudW1iZXIgdG8gYSBjb25jcmV0ZQogICAgZnVuY3Rpb24gaW4g
dGhlIFVuaWthcmZ0CiAgLSBzeXNjYWxsX3N0dWJzLmggLSBpZiBubyBsaWJyYXJ5IGlzIHByb3Zp
ZGluZyBhIHN5c2NhbGwsIGl0IHdpbGwgYmUKICAgIHJlc29sdmVkIHRvIGEgc3R1YiwgZGVmaW5l
ZCBpbiB0aGlzIGZpbGUKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hr
b3ZAbmVjbGFiLmV1PgotLS0KIGxpYi9Db25maWcudWsgICAgICAgICAgICAgICAgICB8ICAxICsK
IGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8ICAxICsKIGxpYi9zeXNjYWxsX3NoaW0v
Q29uZmlnLnVrICAgICB8ICAzICsrKwogbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayAgIHwg
NDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL3N5c2NhbGxfc2hpbS9n
ZW5fc3R1YnMuYXdrIHwgIDggKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25z
KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCgpkaWZmIC0tZ2l0IGEvbGliL0Nv
bmZpZy51ayBiL2xpYi9Db25maWcudWsKaW5kZXggODIyYzYyNGYuLmI1MTdhYmQ4IDEwMDY0NAot
LS0gYS9saWIvQ29uZmlnLnVrCisrKyBiL2xpYi9Db25maWcudWsKQEAgLTQ3LDMgKzQ3LDQgQEAg
c291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtidXMvQ29uZmln
LnVrIgogc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtuZXRk
ZXYvQ29uZmlnLnVrIgorc291cmNlICJsaWIvc3lzY2FsbF9zaGltL0NvbmZpZy51ayIKZGlmZiAt
LWdpdCBhL2xpYi9NYWtlZmlsZS51ayBiL2xpYi9NYWtlZmlsZS51awppbmRleCBkMDY4MzdmMS4u
ZTY2NjQ5NTIgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS51aworKysgYi9saWIvTWFrZWZpbGUu
dWsKQEAgLTI0LDMgKzI0LDQgQEAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19V
S19CQVNFKS9saWIvdWttcGkpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19V
S19CQVNFKS9saWIvdWtidXMpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19V
S19CQVNFKS9saWIvdWtzZ2xpc3QpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJ
R19VS19CQVNFKS9saWIvdWtuZXRkZXYpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvc3lzY2FsbF9zaGltKSkKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxs
X3NoaW0vQ29uZmlnLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmY4OGNmOTcwCi0tLSAvZGV2L251bGwKKysrIGIvbGli
L3N5c2NhbGxfc2hpbS9Db25maWcudWsKQEAgLTAsMCArMSwzIEBACitjb25maWcgTElCU1lTQ0FM
TF9TSElNCisJYm9vbCAiU3lzY2FsbCBzaGltIGxheWVyIgorCWRlZmF1bHQgbgpkaWZmIC0tZ2l0
IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZp
bGUudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjUyYTEyZjE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awpAQCAtMCwwICsxLDQw
IEBACiskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnN5c2NhbGxfc2hpbSwkKENPTkZJR19MSUJT
WVNDQUxMX1NISU0pKSkKKworX19HRU5fSU5DTFVERVNfUEFUSCA6PSAkKExJQlNZU0NBTExfU0hJ
TV9CVUlMRCkvaW5jbHVkZS91ay9iaXRzCisKK19fUEhPTllfR0VOX1NSQyA6PSBzeXNjYWxsX21h
cC5oIHN5c2NhbGxfc3R1YnMuaCBzeXNjYWxsX25ycy5oCitfX1BIT05ZX0dFTl9TUkMgOj0gJChh
ZGRwcmVmaXggJChfX0dFTl9JTkNMVURFU19QQVRIKS8sICQoX19QSE9OWV9HRU5fU1JDKSkKK19f
UEhPTllfR0VOX1NSQ19ORVcgOj0gJChhZGRzdWZmaXggLm5ldywgJChfX1BIT05ZX0dFTl9TUkMp
KQorCitVS19QUkVQQVJFLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkgKz0gJChfX1BIT05ZX0dF
Tl9TUkMpCisKKworX19TWVNDQUxMX1NISU1fVEVNUEwgOj0gJChMSUJTWVNDQUxMX1NISU1fQkFT
RSkvYXJjaC8kKENPTkZJR19VS19BUkNIKS9zeXNjYWxsLmguaW4KKworJChjYWxsIHVrX21rX2Rp
ciwgJChfX0dFTl9JTkNMVURFU19QQVRIKSkKKworLlBIT05ZOiAkKF9fUEhPTllfR0VOX1NSQ19O
RVcpCisKKyQoX19QSE9OWV9HRU5fU1JDKTogJTogJS5uZXcKKwlAY21wIC1zICReICRAOyBpZiBb
ICQkPyAtbmUgMCBdOyB0aGVuIGNwICReICRAOyBmaQorCiskKF9fR0VOX0lOQ0xVREVTX1BBVEgp
L3N5c2NhbGxfbnJzLmgubmV3OgorCSQoUSkgYXdrICdCRUdJTiB7cHJpbnQgIi8qIEF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElUICovIn0gXAorCQl7cHJpbnRmICJcbiNk
ZWZpbmUgU1lTXyVzXHRcdCVzIiwgXAorCQlzdWJzdHIoJCQyLDYpLCQkM30nIFwKKwkJJChfX1NZ
U0NBTExfU0hJTV9URU1QTCkgPiAkQAorCiskKF9fR0VOX0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxf
bWFwLmgubmV3OgorCSQoUSkgYXdrICdCRUdJTiBcCisJCXtwcmludCAiLyogQXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZmlsZTsgRE8gTk9UIEVESVQgKi9cbiJ9IFwKKwkJLyNkZWZpbmUgX19OUl8v
e1wKKwkJCXByaW50ZiAiI2RlZmluZSB1a19zeXNjYWxsX2ZuXyVzKC4uLikgdWtfc3lzY2FsbF8l
cyhfX1ZBX0FSR1NfXylcbiIsIFwKKwkJCQkkJDMsc3Vic3RyKCQkMiw2KVwKKwkJfScgXAorCQkk
KF9fU1lTQ0FMTF9TSElNX1RFTVBMKSA+ICRACisKKyQoX19HRU5fSU5DTFVERVNfUEFUSCkvc3lz
Y2FsbF9zdHVicy5oLm5ldzoKKwkkKFEpICQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNF
KS9nZW5fc3R1YnMuYXdrIFwKKwkJJChfX1NZU0NBTExfU0hJTV9URU1QTCkgPiAkQAorCitMSUJT
WVNDQUxMX1NISU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX1BIT05ZX0dFTl9TUkNf
TkVXKQpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrIGIvbGliL3N5
c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwLi45ZTBhZDZjNgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX3N0
dWJzLmF3awpAQCAtMCwwICsxLDggQEAKK0JFR0lOIHsgcHJpbnQgIi8qIEF1dG8gZ2VuZXJhdGVk
IGZpbGUuIERvIG5vdCBlZGl0ICovIiB9Cit7CisJbmFtZSA9IHN1YnN0cigkMiw2KTsKKwl1a19u
YW1lID0gInVrX3N5c2NhbGxfIiBuYW1lCisJcHJpbnRmICJcbiNpZm5kZWYgSEFWRV8lcyIsIHVr
X25hbWU7CisJcHJpbnRmICJcbiNkZWZpbmUgJXMoLi4uKSB1a19zeXNjYWxsX3N0dWIoXCIlc1wi
KSIsIHVrX25hbWUsIG5hbWU7CisJcHJpbnRmICJcbiNlbmRpZiAvKiBIQVZFXyVzICovXG4iLCB1
a19uYW1lOworfQotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJX-0001dQ-8p; Tue, 04 Jun 2019 16:29:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJW-0001bD-G9
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:30 +0000
X-Inumbo-ID: ecce595c-86e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ecce595c-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C569D1052FB;
 Tue,  4 Jun 2019 18:29:28 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id T7WUJtmbqxvt; Tue,  4 Jun 2019 18:29:28 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A76AE1052F7
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:28 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:28 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:42 +0200
Message-ID: <20190604162844.2712-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 08/10] lib/vfscore: syscall writev
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

Rmlyc3QgZXZlciB1c2VyIG9mIHN5c2NhbGwgc2hpbSBsYXllcgoKU2lnbmVkLW9mZi1ieTogWXVy
aSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3Zmc2NvcmUvTWFr
ZWZpbGUudWsgICB8IDQgKysrLQogbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayB8IDEgKwogbGli
L3Zmc2NvcmUvbWFpbi5jICAgICAgICB8IDcgKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMSBp
bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvTWFr
ZWZpbGUudWsgYi9saWIvdmZzY29yZS9NYWtlZmlsZS51awppbmRleCAxZmQzNTg1OC4uMDE2NmU2
MTIgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCisrKyBiL2xpYi92ZnNjb3Jl
L01ha2VmaWxlLnVrCkBAIC0xNSw0ICsxNSw2IEBAIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElC
VkZTQ09SRV9CQVNFKS9sb29rdXAuYwogTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JF
X0JBU0UpL2ZvcHMuYwogTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL3N1
YnJfdWlvLmMKIAotRVhUUkFfTERfU0NSSVBULSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElC
VkZTQ09SRV9CQVNFKS9leHRyYS5sZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0VYVFJB
X0xEX1NDUklQVC0kKENPTkZJR19MSUJWRlNDT1JFKSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZXh0
cmEubGQKKworVUtfUFJPVklERURfU1lTQ0FMTFMtJChDT05GSUdfTElCVkZTQ09SRSkgKz0gd3Jp
dGV2LTMKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgYi9saWIvdmZzY29y
ZS9leHBvcnRzeW1zLnVrCmluZGV4IDM0ZWVlZTU5Li5kYTdmYmFlYSAxMDA2NDQKLS0tIGEvbGli
L3Zmc2NvcmUvZXhwb3J0c3ltcy51aworKysgYi9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCkBA
IC03NCwzICs3NCw0IEBAIGZhY2Nlc3NhdAogcmVhZGxpbmsKIGZhbGxvY2F0ZQogbHNlZWsKK3Vr
X3N5c2NhbGxfd3JpdGV2CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZz
Y29yZS9tYWluLmMKaW5kZXggZGZkNDNlYjMuLmZmZjIzM2YzIDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC00OSw2ICs0OSw3IEBACiAj
aW5jbHVkZSA8dWsvZXJycHRyLmg+CiAjaW5jbHVkZSA8dWsvY3RvcnMuaD4KICNpbmNsdWRlIDx1
ay90cmFjZS5oPgorI2luY2x1ZGUgPHVrL3N5c2NhbGwuaD4KIAogI2lmZGVmIERFQlVHX1ZGUwog
aW50CXZmc19kZWJ1ZyA9IFZGU0RCX0ZMQUdTOwpAQCAtNDU4LDYgKzQ1OSwxMiBAQCBzc2l6ZV90
IHdyaXRldihpbnQgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250KQogCXJl
dHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNudCwgLTEpOwogfQogCitVS19TWVNDQUxMX0RFRklO
RSh3cml0ZXYsIHVuc2lnbmVkIGxvbmcsIGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdmVjLAor
CQkgIHVuc2lnbmVkIGxvbmcsIHZsZW4pCit7CisJcmV0dXJuIHB3cml0ZXYoZmQsIHZlYywgdmxl
biwgLTEpOworfQorCiBVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBp
bnQsIHVuc2lnbmVkIGxvbmcpOwogVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGxfcmV0LCAi
Iik7CiBVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGludCk7Ci0tIAoy
LjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16: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 1hYCJa-0001ef-Av; Tue, 04 Jun 2019 16:29: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=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJZ-0001e9-7E
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:33 +0000
X-Inumbo-ID: ec76372c-86e5-11e9-bbe1-0b888da1337f
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ec76372c-86e5-11e9-bbe1-0b888da1337f;
 Tue, 04 Jun 2019 16:29:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 35735F2073;
 Tue,  4 Jun 2019 18:29:28 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id m9W-JWRSI4jW; Tue,  4 Jun 2019 18:29:28 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0BDEEF2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:26 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:25 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:41 +0200
Message-ID: <20190604162844.2712-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 07/10] lib/syscall_shim: introduce
 syscalls macro layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VG8gcHJvdmlkZSBhIHN5c2NhbGwgdXNlciBuZWVkcyB0byB1c2UgbWFjcm8gVUtfU1lTQ0FMTF9Q
Uk9UTy4gVGhlCnN5bnRheCBpcyB0aGUgZm9sbG93aW5nOgoKVUtfU1lTQ0FMTF9QUk9UTyhzeXNj
YWxsX25hbWUsIGFyZ3VtZW50XzFfdHlwZSwgYXJndW1lbnRfMV9uYW1lLCAuLi4pCnsKICAgIDxz
eXNjYWxsX2JvZHk+Owp9CgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNo
a292QG5lY2xhYi5ldT4KLS0tCiBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAgICAgICAg
IHwgICA1ICsrCiBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgMTAwICsr
KysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25z
KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2Nh
bGwuaAoKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgYi9saWIvc3lz
Y2FsbF9zaGltL01ha2VmaWxlLnVrCmluZGV4IGJiNzZkN2IxLi42NzY3N2ZjNiAxMDA2NDQKLS0t
IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51aworKysgYi9saWIvc3lzY2FsbF9zaGltL01h
a2VmaWxlLnVrCkBAIC01MCw0ICs1MCw5IEBAICQoX19HRU5fSU5DTFVERVNfUEFUSCkvc3lzY2Fs
bF9zdHVicy5oLm5ldzoKIAkkKFEpICQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9n
ZW5fc3R1YnMuYXdrIFwKIAkJJChfX1NZU0NBTExfU0hJTV9URU1QTCkgPiAkQAogCitDSU5DTFVE
RVMtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSAgICs9IC1JJChMSUJTWVNDQUxMX1NISU1fQlVJ
TEQpL2luY2x1ZGUKK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkgKz0gLUkk
KExJQlNZU0NBTExfU0hJTV9CVUlMRCkvaW5jbHVkZQorQ0lOQ0xVREVTLXkgICArPSAtSSQoTElC
U1lTQ0FMTF9TSElNX0JBU0UpL2luY2x1ZGUKK0NYWElOQ0xVREVTLXkgKz0gLUkkKExJQlNZU0NB
TExfU0hJTV9CQVNFKS9pbmNsdWRlCisKIExJQlNZU0NBTExfU0hJTV9DTEVBTiA9ICQoX19QSE9O
WV9HRU5fU1JDKSAkKF9fUEhPTllfR0VOX1NSQ19ORVcpICQoX19HRU5fU1JDKQpkaWZmIC0tZ2l0
IGEvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaCBiL2xpYi9zeXNjYWxsX3No
aW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAuLjE5MTYxZTVlCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRl
L3VrL3N5c2NhbGwuaApAQCAtMCwwICsxLDEwMCBAQAorI2lmbmRlZiBfX1VLX1NZU0NBTExfSF9f
CisjZGVmaW5lIF9fVUtfU1lTQ0FMTF9IX18KKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVk
ZSA8dWsvcHJpbnQuaD4KKworI2RlZmluZSBfX3VrX3NjYyhYKSAoKGxvbmcpIChYKSkKK3R5cGVk
ZWYgbG9uZyBzeXNjYWxsX2FyZ190OworCisjZGVmaW5lIF9fdWtfc3lzY2FsbChzeXNjYWxsX25y
LCAuLi4pIFwKKwlVS19DT05DQVQodWtfc3lzY2FsbF9mbl8sIHN5c2NhbGxfbnIpIChfX1ZBX0FS
R1NfXykKKworI2RlZmluZSBfX3VrX3N5c2NhbGwwKG4pIF9fdWtfc3lzY2FsbChuKQorI2RlZmlu
ZSBfX3VrX3N5c2NhbGwxKG4sYSkgX191a19zeXNjYWxsKG4sX191a19zY2MoYSkpCisjZGVmaW5l
IF9fdWtfc3lzY2FsbDIobixhLGIpIF9fdWtfc3lzY2FsbChuLF9fdWtfc2NjKGEpLF9fdWtfc2Nj
KGIpKQorI2RlZmluZSBfX3VrX3N5c2NhbGwzKG4sYSxiLGMpIF9fdWtfc3lzY2FsbChuLF9fdWtf
c2NjKGEpLF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMpKQorI2RlZmluZSBfX3VrX3N5c2NhbGw0KG4s
YSxiLGMsZCkgX191a19zeXNjYWxsKG4sX191a19zY2MoYSksX191a19zY2MoYiksX191a19zY2Mo
YyksX191a19zY2MoZCkpCisjZGVmaW5lIF9fdWtfc3lzY2FsbDUobixhLGIsYyxkLGUpIF9fdWtf
c3lzY2FsbChuLF9fdWtfc2NjKGEpLF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMpLF9fdWtfc2NjKGQp
LF9fdWtfc2NjKGUpKQorI2RlZmluZSBfX3VrX3N5c2NhbGw2KG4sYSxiLGMsZCxlLGYpIF9fdWtf
c3lzY2FsbChuLF9fdWtfc2NjKGEpLF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMpLF9fdWtfc2NjKGQp
LF9fdWtfc2NjKGUpLF9fdWtfc2NjKGYpKQorI2RlZmluZSBfX3VrX3N5c2NhbGw3KG4sYSxiLGMs
ZCxlLGYsZykgKF9fdWtfc3lzY2FsbCkobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhiKSxfX3VrX3Nj
YyhjKSxfX3VrX3NjYyhkKSxfX3VrX3NjYyhlKSxfX3VrX3NjYyhmKSxfX3VrX3NjYyhnKSkKKwor
CisjZGVmaW5lIF9fU1lTQ0FMTF9OQVJHU19YKGEsYixjLGQsZSxmLGcsaCxuLC4uLikgbgorI2Rl
ZmluZSBfX1NZU0NBTExfTkFSR1MoLi4uKSBfX1NZU0NBTExfTkFSR1NfWChfX1ZBX0FSR1NfXyw3
LDYsNSw0LDMsMiwxLDAsKQorCisjZGVmaW5lIF9fU1lTQ0FMTF9ERUZfTkFSR1NfWCh6LCBhMSxh
MiwgYjEsYjIsIGMxLGMyLCBkMSxkMiwgZTEsZTIsIGYxLGYyLCBnMSxnMiwgbnIsIC4uLikgbnIK
KyNkZWZpbmUgX19TWVNDQUxMX0RFRl9OQVJHUyguLi4pIF9fU1lTQ0FMTF9ERUZfTkFSR1NfWChf
X1ZBX0FSR1NfXywgNyw3LCA2LDYsIDUsNSwgNCw0LCAzLDMsIDIsMiwgMSwxLDApCisKKyNkZWZp
bmUgX19VS19OQU1FMlNDQUxMX0ZOKG5hbWUpIFVLX0NPTkNBVCh1a19zeXNjYWxsXywgbmFtZSkK
KworI2RlZmluZSBVS19BUkdfTUFQMShtLCB0eXBlLCBhcmcpIG0odHlwZSwgYXJnKQorI2RlZmlu
ZSBVS19BUkdfTUFQMihtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQ
MShtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgVUtfQVJHX01BUDMobSwgdHlwZSwgYXJnLCAuLi4p
IG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDIobSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFVLX0FS
R19NQVA0KG0sIHR5cGUsIGFyZywgLi4uKSBtKHR5cGUsIGFyZyksIFVLX0FSR19NQVAzKG0sIF9f
VkFfQVJHU19fKQorI2RlZmluZSBVS19BUkdfTUFQNShtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBl
LCBhcmcpLCBVS19BUkdfTUFQNChtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgVUtfQVJHX01BUDYo
bSwgdHlwZSwgYXJnLCAuLi4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDUobSwgX19WQV9BUkdT
X18pCisjZGVmaW5lIFVLX0FSR19NQVA3KG0sIHR5cGUsIGFyZywgLi4uKSBtKHR5cGUsIGFyZyks
IFVLX0FSR19NQVA2KG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBVS19BUkdfTUFQeChucl9hcmdz
LCAuLi4pIFVLX0NPTkNBVChVS19BUkdfTUFQLCBucl9hcmdzKShfX1ZBX0FSR1NfXykKKworI2Rl
ZmluZSBTX0FSR19MT05HKHR5cGUsIGFyZykgdW5zaWduZWQgbG9uZyBhcmcKKyNkZWZpbmUgU19B
UkdfQUNUVUFMKHR5cGUsIGFyZykgdHlwZSBhcmcKKyNkZWZpbmUgU19BUkdfQ0FTVCh0eXBlLCBh
cmcpICh0eXBlKSBhcmcKKworCisjaWZkZWYgQ09ORklHX0xJQlNZU0NBTExfU0hJTQorI2RlZmlu
ZSBfX1VLX1NZU0NBTExfREVGSU5FKHgsIG5hbWUsIC4uLikJCQkJXAorCXN0YXRpYyBpbmxpbmUg
bG9uZyBfXyMjbmFtZShVS19BUkdfTUFQeCh4LCBTX0FSR19BQ1RVQUwsIF9fVkFfQVJHU19fKSk7
IFwKKwlpbnQgbmFtZShVS19BUkdfTUFQeCh4LCBTX0FSR19MT05HLCBfX1ZBX0FSR1NfXykpCQkJ
XAorCXsJCQkJCQkJCVwKKwkJbG9uZyByZXQgPSBfXyMjbmFtZSgJCQkJCVwKKwkJCVVLX0FSR19N
QVB4KHgsIFNfQVJHX0NBU1QsIF9fVkFfQVJHU19fKSk7CQlcCisJCXJldHVybiByZXQ7CQkJCQkJ
XAorCX0JCQkJCQkJCVwKKwlzdGF0aWMgaW5saW5lIGxvbmcgX18jI25hbWUoVUtfQVJHX01BUHgo
eCwgU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykpCisjZWxzZQorI2RlZmluZSBfX1VLX1NZU0NB
TExfREVGSU5FKHgsIG5hbWUsIC4uLikJCQkJXAorCXN0YXRpYyBpbmxpbmUgbG9uZyBuYW1lKFVL
X0FSR19NQVB4KHgsIFNfQVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKQorI2VuZGlmCisKKyNkZWZp
bmUgX1VLX1NZU0NBTExfREVGSU5FKC4uLikgX19VS19TWVNDQUxMX0RFRklORShfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgVUtfU1lTQ0FMTF9ERUZJTkUobmFtZSwgLi4uKQkJCQlcCisJX1VLX1NZU0NB
TExfREVGSU5FKF9fU1lTQ0FMTF9ERUZfTkFSR1MoX19WQV9BUkdTX18pLAlcCisJCQkgICAgX19V
S19OQU1FMlNDQUxMX0ZOKG5hbWUpLAkJXAorCQkJICAgIF9fVkFfQVJHU19fKQorCisjZGVmaW5l
IF9fVUtfU1BST1RPX0FSR1NfVFlQRSB1bnNpZ25lZCBsb25nCisjZGVmaW5lIF9fVUtfU1BST1RP
X0FSR1MwKCkgIHZvaWQKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzEoKSAgX19VS19TUFJPVE9f
QVJHU19UWVBFIGEKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzIoKSAgX19VS19TUFJPVE9fQVJH
UzEoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGIKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzMo
KSAgX19VS19TUFJPVE9fQVJHUzIoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGMKKyNkZWZpbmUg
X19VS19TUFJPVE9fQVJHUzQoKSAgX19VS19TUFJPVE9fQVJHUzMoKSwgX19VS19TUFJPVE9fQVJH
U19UWVBFIGQKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzUoKSAgX19VS19TUFJPVE9fQVJHUzQo
KSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGUKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzYoKSAg
X19VS19TUFJPVE9fQVJHUzUoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGYKKyNkZWZpbmUgX19V
S19TUFJPVE9fQVJHUzcoKSAgX19VS19TUFJPVE9fQVJHUzYoKSwgX19VS19TUFJPVE9fQVJHU19U
WVBFIGcKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHU3goYXJnc19ucikgIFwKKwlVS19DT05DQVQo
X19VS19TUFJPVE9fQVJHUywgYXJnc19ucikoKQorCisjZGVmaW5lIFVLX1NZU0NBTExfUFJPVE8o
YXJnc19uciwgc3lzY2FsbF9uYW1lKQkJCVwKKwlpbnQgVUtfQ09OQ0FUKHVrX3N5c2NhbGxfLCBz
eXNjYWxsX25hbWUpKAlcCisJCV9fVUtfU1BST1RPX0FSR1N4KGFyZ3NfbnIpKQorCisjZGVmaW5l
IHVrX3N5c2NhbGxfc3R1YihzeXNjYWxsX25hbWUpICh7CQkJXAorCQkJdWtfcHJfZGVidWcoInN5
c2NhbGwgXCIiIHN5c2NhbGxfbmFtZQlcCisJCQkJICAgICJcIiBpcyBub3QgaW1wbGVtZW50ZWQi
KTsJXAorCQkJZXJybm8gPSAtRU5PU1lTOwkJCVwKKwkJCS0xOwkJCQkJXAorCQl9KQorCisKKyNp
ZmRlZiBDT05GSUdfTElCU1lTQ0FMTF9TSElNCisjaW5jbHVkZSA8dWsvYml0cy9zeXNjYWxsX25y
cy5oPgorI2luY2x1ZGUgPHVrL2JpdHMvc3lzY2FsbF9tYXAuaD4KKyNpbmNsdWRlIDx1ay9iaXRz
L3Byb3ZpZGVkX3N5c2NhbGxzLmg+CisjaW5jbHVkZSA8dWsvYml0cy9zeXNjYWxsX3N0dWJzLmg+
CisKKyNkZWZpbmUgc3lzY2FsbCguLi4pCQkJCQkJCVwKKwlVS19DT05DQVQoX191a19zeXNjYWxs
LCBfX1NZU0NBTExfTkFSR1MoX19WQV9BUkdTX18pKShfX1ZBX0FSR1NfXykKKyNlbmRpZgorCisj
ZW5kaWYgLyogX19VS19TWVNDQUxMX0hfXyAqLwotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16: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 1hYCJa-0001el-Cj; Tue, 04 Jun 2019 16:29:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJZ-0001eK-K9
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:33 +0000
X-Inumbo-ID: ee67b028-86e5-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ee67b028-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 6F2D2F2074;
 Tue,  4 Jun 2019 18:29:31 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yaSNqMiljvds; Tue,  4 Jun 2019 18:29:31 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4B8DEF2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:29 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:28 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:43 +0200
Message-ID: <20190604162844.2712-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 09/10] lib/syscall_shim: introduce
 uk_syscall_dynamic
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhlIG1hY3JvIGxheWVyIGlzIGVmZmljaWVudCwgYnV0IHRoZSBleGFjdCBzeXNjYWxsIG11c3Qg
YmUga25vd24gYXQKdGhlIGNvbXBpbGF0aW9uIHN0YWdlLiBJZiBhIHN5c2NhbGwgbnVtYmVyIGlz
IGtlcHQgaW4gYSB2YXJpYWJsZSBtYWNybwpsYXllciB3aWxsIG5vdCBiZSBhYmxlIHRvIHJlc29s
dmUgaXQgdG8gdGhlIHN5c2NhbGwgZnVuY3Rpb24uCgpGb3IgdGhpcyBjYXNlIGFub3RoZXIgZmls
ZSBpcyBnZW5lcmF0ZWQgLSBzeXNjYWxsX2VudHJ5LmMuIFdoZXJlCnN5c2NhbGxzIGFyZSAnZHlu
YW1pY2FsbHknIHJlc29sdmVkIGludG8gYSBkZXN0aW5hdGlvbiBmdW5jdGlvbnMuCgpTaWduZWQt
b2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBsaWIv
c3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAgICAgICAgIHwgIDkgKysrKystCiBsaWIvc3lzY2Fs
bF9zaGltL2VudHJ5LmMuaW5fZW5kICAgICAgIHwgMTUgKysrKysrKysrKwogbGliL3N5c2NhbGxf
c2hpbS9nZW5fZW50cnkuYXdrICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysr
KwogbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaCB8ICAyICsrCiA0IGZpbGVz
IGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvc3lzY2FsbF9zaGltL2VudHJ5LmMuaW5fZW5kCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3N5c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdrCgpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxf
c2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKaW5kZXggNjc2
NzdmYzYuLjVlYTE1OTYzIDEwMDY0NAotLS0gYS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVr
CisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKQEAgLTcsNyArNyw4IEBAIF9fUEhP
TllfR0VOX1NSQyA6PSAkKGFkZHByZWZpeCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpLywgJChfX1BI
T05ZX0dFTl9TUkMpKQogX19QSE9OWV9HRU5fU1JDICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxE
KS9wcm92aWRlZF9zeXNjYWxscy5oLmluCiBfX1BIT05ZX0dFTl9TUkNfTkVXIDo9ICQoYWRkc3Vm
Zml4IC5uZXcsICQoX19QSE9OWV9HRU5fU1JDKSkKIAotX19HRU5fU1JDIDo9ICQoX19HRU5fSU5D
TFVERVNfUEFUSCkvcHJvdmlkZWRfc3lzY2FsbHMuaAorX19HRU5fU1JDIDo9ICQoX19HRU5fSU5D
TFVERVNfUEFUSCkvcHJvdmlkZWRfc3lzY2FsbHMuaCBcCisJCSQoTElCU1lTQ0FMTF9TSElNX0JV
SUxEKS9zeXNjYWxsX2VudHJ5LmMKIAogVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxMX1NI
SU0pICs9ICQoX19QSE9OWV9HRU5fU1JDKSAkKF9fR0VOX1NSQykKIApAQCAtNDMsNiArNDQsMTAg
QEAgJChfX0dFTl9JTkNMVURFU19QQVRIKS9wcm92aWRlZF9zeXNjYWxscy5oOiAkKExJQlNZU0NB
TExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3kKIAkgcHJpbnRmICJcblVLX1NZU0NBTExfUFJPVE8o
JXMsICVzKTtcbiIsICQkMiwgJCQxO30nIFwKIAkkXiA+ICRACiAKKyQoTElCU1lTQ0FMTF9TSElN
X0JVSUxEKS9zeXNjYWxsX2VudHJ5LmM6ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9wcm92aWRl
ZF9zeXNjYWxscy5oLmluICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl9lbnRyeS5hd2sKKwkk
KFEpIGF3ayAtRiAnLScgLWYgJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvZ2VuX2VudHJ5LmF3ayAk
PCA+ICRACisJJChRKSBjYXQgJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvZW50cnkuYy5pbl9lbmQg
Pj4gJEAKKwogJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4u
bmV3OgogCSRRIGVjaG8gJChVS19QUk9WSURFRF9TWVNDQUxMUy15KSB8IHRyICcgJyAnXG4nID4g
JEAKIApAQCAtNTUsNCArNjAsNiBAQCBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJTWVNDQUxMX1NI
SU0pICs9IC1JJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2luY2x1ZGUKIENJTkNMVURFUy15ICAg
Kz0gLUkkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9pbmNsdWRlCiBDWFhJTkNMVURFUy15ICs9IC1J
JChMSUJTWVNDQUxMX1NISU1fQkFTRSkvaW5jbHVkZQogCitMSUJTWVNDQUxMX1NISU1fU1JDUy15
ICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9zeXNjYWxsX2VudHJ5LmMKKwogTElCU1lTQ0FM
TF9TSElNX0NMRUFOID0gJChfX1BIT05ZX0dFTl9TUkMpICQoX19QSE9OWV9HRU5fU1JDX05FVykg
JChfX0dFTl9TUkMpCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2VudHJ5LmMuaW5fZW5k
IGIvbGliL3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2VuZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMC4uNTgxNDViYmMKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvc3lzY2FsbF9z
aGltL2VudHJ5LmMuaW5fZW5kCkBAIC0wLDAgKzEsMTUgQEAKKworbG9uZyB1a19zeXNjYWxsX2R5
bmFtaWMobG9uZyBuLCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKwlzeXNjYWxsX2FyZ190IGEsYixj
LGQsZSxmOworCXZhX3N0YXJ0KGFwLCBuKTsKKwlhPXZhX2FyZyhhcCwgbG9uZyk7CisJYj12YV9h
cmcoYXAsIGxvbmcpOworCWM9dmFfYXJnKGFwLCBsb25nKTsKKwlkPXZhX2FyZyhhcCwgbG9uZyk7
CisJZT12YV9hcmcoYXAsIGxvbmcpOworCWY9dmFfYXJnKGFwLCBsb25nKTsKKwl2YV9lbmQoYXAp
OworCXJldHVybiBfX3N5c2NhbGxfZHluYW1pYyhuLGEsYixjLGQsZSxmKTsKK30KZGlmZiAtLWdp
dCBhL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3ayBiL2xpYi9zeXNjYWxsX3NoaW0vZ2Vu
X2VudHJ5LmF3awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOTI0NTcwODkK
LS0tIC9kZXYvbnVsbAorKysgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9lbnRyeS5hd2sKQEAgLTAs
MCArMSw0MCBAQAorQkVHSU4geworCW1heF9hcmdzID0gNgorCXByaW50ICIvKiBBdXRvIGdlbmVy
YXRlZCBmaWxlLiBETyBOT1QgRURJVCAqL1xuXG4iCisKKwlwcmludCAiI2luY2x1ZGUgPHVrL3N5
c2NhbGwuaD4iCisJcHJpbnQgIiNpbmNsdWRlIDx1ay9wcmludC5oPlxuIgorCisJcHJpbnRmICJz
dGF0aWMgaW5saW5lIGxvbmcgX19zeXNjYWxsX2R5bmFtaWMobG9uZyBuciwgIgorCWZvciAoaSA9
IDE7IGkgPCBtYXhfYXJnczsgaSsrKQorCQlwcmludGYgImxvbmcgYXJnJWQsICIsaQorCXByaW50
ZiAibG9uZyBhcmclZClcbntcbiIsIG1heF9hcmdzCisKKwlmb3IgKGkgPSAxOyBpIDw9IG1heF9h
cmdzOyBpKyspCisJCXByaW50ZiAiXHQodm9pZCkgYXJnJWQ7XG4iLCBpCisKKwlwcmludCAiXG5c
dHN3aXRjaCAobnIpIHsiCit9CisKKworL1thLXpBLVowLTldKy1bMC05XSsveworCW5hbWUgPSAk
MQorCXN5c19uYW1lID0gIlNZU18iIG5hbWUKKwl1a19uYW1lID0gInVrX3N5c2NhbGxfIiBuYW1l
CisJYXJnc19uciA9ICQyICsgMAorCXByaW50ZiAiXHRjYXNlICVzOlxuIiwgc3lzX25hbWU7CisJ
cHJpbnRmICJcdFx0cmV0dXJuICVzKCIsIHVrX25hbWU7CisJZm9yIChpID0gMTsgaSA8IGFyZ3Nf
bnI7IGkrKykKKwkJcHJpbnRmKCJhcmclZCwgIiwgaSkKKwlpZiAoYXJnc19uciA+IDApCisJCXBy
aW50ZigiYXJnJWQiLCBhcmdzX25yKQorCXByaW50ZigiKTtcbiIpCit9CisKK0VORCB7CisJcHJp
bnRmICJcdGRlZmF1bHQ6XG4iCisJcHJpbnRmICJcdFx0dWtfcHJfZGVidWcoXCJzeXNjYWxsIG5y
ICUlbGQgaXMgbm90IGltcGxlbWVudGVkXCIsIG5yKTtcbiIKKwlwcmludGYgIlx0XHRlcnJubyA9
IC1FTk9TWVM7XG4iCisJcHJpbnRmICJcdFx0cmV0dXJuIC0xO1xuIgorCXByaW50ZiAiXHR9XG59
XG4iCit9CmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5o
IGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAppbmRleCAxOTE2MWU1ZS4u
MTM5MTNiYWIgMTAwNjQ0Ci0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxs
LmgKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaApAQCAtOTMsNiAr
OTMsOCBAQCB0eXBlZGVmIGxvbmcgc3lzY2FsbF9hcmdfdDsKICNpbmNsdWRlIDx1ay9iaXRzL3By
b3ZpZGVkX3N5c2NhbGxzLmg+CiAjaW5jbHVkZSA8dWsvYml0cy9zeXNjYWxsX3N0dWJzLmg+CiAK
K2xvbmcgdWtfc3lzY2FsbF9keW5hbWljKGxvbmcgbiwgLi4uKTsKKwogI2RlZmluZSBzeXNjYWxs
KC4uLikJCQkJCQkJXAogCVVLX0NPTkNBVChfX3VrX3N5c2NhbGwsIF9fU1lTQ0FMTF9OQVJHUyhf
X1ZBX0FSR1NfXykpKF9fVkFfQVJHU19fKQogI2VuZGlmCi0tIAoyLjE5LjIKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 16:29:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 16:29: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 1hYCJb-0001jc-FN; Tue, 04 Jun 2019 16:29:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYCJZ-0001eV-TN
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 16:29:33 +0000
X-Inumbo-ID: eecadd6b-86e5-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id eecadd6b-86e5-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 16:29:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 238F31052FB;
 Tue,  4 Jun 2019 18:29:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id wB0A0cPOyby9; Tue,  4 Jun 2019 18:29:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0596C1052F7
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 18:29:32 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 18:29:31 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 18:28:44 +0200
Message-ID: <20190604162844.2712-11-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH 10/10] doc: add section about
 syscall shim layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QgfCAzNiArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKykKCmRpZmYg
LS1naXQgYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCBiL2RvYy9ndWlkZXMvZGV2ZWxv
cGVycy1hcHAucnN0CmluZGV4IGJiZDNiYmRhLi4yMzM4OTE1MiAxMDA2NDQKLS0tIGEvZG9jL2d1
aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKKysrIGIvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5y
c3QKQEAgLTMyMyw2ICszMjMsNDIgQEAgQW4gZXhhbXBsZSBjb250ZXh0IG9mIGV4dHJhLmxkOiA6
OgogCiBUaGlzIHdpbGwgYWRkIHRoZSBzZWN0aW9uIC51a19mc19saXN0IGFmdGVyIHRoZSAudGV4
dAogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTeXNjYWxsIHNoaW0gbGF5ZXIKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgeW91IGxpYnJhcnkgcHJvdmlkZXMgYSBz
eXNjYWxsLCB5b3UgbmVlZCB0byBpbmZvcm0gVW5pa3JhZnQgdGhhdCBpdAorY2FuIHVzZSB5b3Vy
IGltcGxlbWVudGF0aW9uLiBBZGQgYSBsaW5lIGluIHlvdSBNYWtlZmlsZS51azogOjoKKworICAg
IFVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQllPVVJMSUJOQU1FKSArPSA8c3lzY2Fs
bF9uYW1lPi08bnVtYmVyX29mX2FyZ3VtZW50cz4KKworV2hlcmUgYDxudW1iZXJfb2ZfYXJndW1l
bnRzPmAgaXMgaG93IG1hbnkgYXJndW1lbnRzIHlvdXIgc3lzY2FsbCBhY2NlcHRzLgorCitGb3Ig
ZXhhbXBsZTogOjoKKworICAgIFVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQlZGU0NP
UkUpICs9IHdyaXRldi0zCisKKy4uIG5vdGU6OiBQbGVhc2UgY29uc3VsdCBjb3JyZXNwb25kaW5n
IG1hbiBwYWdlIGluIG9yZGVyIHRvIGtlZXAgQVBJCisgICAgICAgICAgIG1hdGNoaW5nIHRvIHRo
ZSBlcXVpdmFsZW50IGxpbnV4IHN5c2NhbGwKKworRm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5
b3Ugc3lzY2FsbCB1c2UgdGhlIGZvbGxvd2luZyB0ZW1wbGF0ZToKKworLi4gY29kZS1ibG9jazo6
IGMKKworICBVS19TWVNDQUxMX0RFRklORShzeXNjYWxsX25hbWUsIGFyZzFfdHlwZSwgYXJnMV9u
YW1lLCBhcmcyX3R5cGUsIGFyZzJfbmFtZSwgLi4pCisgIHsKKyAgCWRvX2Nvb2xfc3R1ZmYoKTsK
KyAgfQorCitGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGMKKworICBVS19TWVNDQUxM
X0RFRklORSh3cml0ZXYsIHVuc2lnbmVkIGxvbmcsIGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwg
dmVjLAorICAJCSAgdW5zaWduZWQgbG9uZywgdmxlbikKKyAgeworICAJcHdyaXRldihmZCwgdmVj
LCB2bGVuLCAtMSk7CisgIH0KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogTWFrZSBU
YXJnZXRzCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:25:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:25: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 1hYDBR-0008Nt-SX; Tue, 04 Jun 2019 17:25:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYDBR-0008No-De
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:25:13 +0000
X-Inumbo-ID: b4a3295e-86ed-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b4a3295e-86ed-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 17:25:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 77228F2075;
 Tue,  4 Jun 2019 19:25:10 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hsjTnuvn9LOe; Tue,  4 Jun 2019 19:25:10 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 528E0F2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 19:25:08 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 19:25:08 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 19:24:49 +0200
Message-ID: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 0/5] Fix multiline printfs with
 newlib
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UHJvYmxlbTogaWYgY29tcGlsZWQgd2l0aCBuZXdsaWIsIHByaW50ZigiZm9vXG5iYXJcbmJhelxu
Iikgd291bGQKcHJpbnQgb25seSAiZm9vIi4gVGhhdCBpcyBiZWNhdXNlIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gb2Ygc3RkaW8gd2FzCnJldHVybmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0
ZW4uIEJ1dCB2ZnMgZXhwZWN0cyBhIGVycm9yIGNvZGUKaW5zdGVhZC4KClRoaXMgc2VyaWVzIGFs
c28gZml4ZXMgZmV3IG90aGVyIG1pbm9yIHByb2JsZW1zIGluIHZmcywgcmFtZnMgYW5kCnN0ZGlv
LCByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBpc3N1ZS4KCkNoYW5nZXMgc2luY2UgdjE6CiAgLSBy
ZWJhc2UgdG8gY3VycmVudCBvcmlnaW4vc3RhZ2luZwoKQ2hhbmdlcyBzaW5jZSB2MjoKICAtIGNo
ZWNrIGZsYWcgVUtfVkZTQ09SRV9OT1BPUyBmb3IgcmVhZCBvcGVyYXRpb24gdG9vCiAgLSByZW5h
bWUgX19jb3V0a193cmFwcGVyIHRvIF9fcmVhZF9mbgogIC0gQSBiaXQgbW9yZSBjb21tZW50cwoK
WXVyaSBWb2xjaGtvdiAoNSk6CiAgbGliL3Zmc2NvcmU6IGludHJvZHVjZSB2ZnNjb3JlX3Vpb2Zv
cmVhY2gKICBsaWIvdmZzY29yZTogaGFuZGxlIHVpbyBwcm9wZXJseSBpbiBzdGRpbyBmdW5jdGlv
bnMKICBsaWIvdmZzY29yZTogY2hlY2sgcmV0dXJuIHZhbHVlIG9mIHZmc193cml0ZSBpbiBzeXNf
d3JpdGUKICBsaWIvdmZzY29yZTogZG8gbm90IGFkdmFuY2UgcG9zaXRpb24gZm9yIHN0ZGlvCiAg
bGliL3Zmc2NvcmU6IG1ha2UgYWxsIHZub3BzIGZ1bmN0aW9uIHJldHVybiBpbnQKCiBsaWIvcmFt
ZnMvcmFtZnNfdm5vcHMuYyAgICAgICAgICAgICB8ICA2ICstLQogbGliL3Zmc2NvcmUvZm9wcy5j
ICAgICAgICAgICAgICAgICAgfCAgNiArKy0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9m
aWxlLmggIHwgIDYgKysrCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmggICB8IDQ1
ICsrKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5o
IHwgMTAgKysrLS0KIGxpYi92ZnNjb3JlL3N0ZGlvLmMgICAgICAgICAgICAgICAgIHwgNjcgKysr
KysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMgICAgICAg
ICAgICAgIHwgMzQgKysrKy0tLS0tLS0tLS0tCiBsaWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAg
ICAgICAgICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA1MSBk
ZWxldGlvbnMoLSkKCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:25:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYDBU-0008OS-UL; Tue, 04 Jun 2019 17:25:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYDBT-0008OB-MU
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:25:15 +0000
X-Inumbo-ID: b68f0b7a-86ed-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b68f0b7a-86ed-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 17:25:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B569EF2075;
 Tue,  4 Jun 2019 19:25:13 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RyVUq9rDk6hN; Tue,  4 Jun 2019 19:25:13 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 885FFF2020
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 19:25:11 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 19:25:11 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 19:24:51 +0200
Message-ID: <20190604172454.10628-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 2/5] lib/vfscore: handle uio
 properly in stdio 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: florian.schmidt@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogbGliL3Zmc2NvcmUvc3RkaW8uYyB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDE0IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29y
ZS9zdGRpby5jCmluZGV4IGI3M2IxMzJjLi41NmMxMWE5MiAxMDA2NDQKLS0tIGEvbGliL3Zmc2Nv
cmUvc3RkaW8uYworKysgYi9saWIvdmZzY29yZS9zdGRpby5jCkBAIC00MCwzMSArNDAsNDEgQEAK
ICNpbmNsdWRlIDx0ZXJtaW9zLmg+CiAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgogI2luY2x1
ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+CisKK3N0YXRpYyBpbnQgX193
cml0ZV9mbih2b2lkICpkc3QgX191bnVzZWQsIHZvaWQgKnNyYywgc2l6ZV90ICpjbnQpCit7CisJ
aW50IHJldCA9IHVrcGxhdF9jb3V0ayhzcmMsICpjbnQpOworCisJaWYgKHJldCA8IDApCisJCS8q
IFRPRE86IHJlbW92ZSAtMSB3aGVuIHZmc2NvcmUgc3dpdGNoZXMgdG8gbmVnYXRpdmUKKwkJICog
ZXJyb3IgbnVtYmVycworCQkgKi8KKwkJcmV0dXJuIHJldCAqIC0xOworCisJKmNudCA9IChzaXpl
X3QpIHJldDsKKwlyZXR1cm4gMDsKK30KIAogLyogT25lIGZ1bmN0aW9uIGZvciBzdGRlcnIgYW5k
IHN0ZG91dCAqLwogc3RhdGljIHNzaXplX3Qgc3RkaW9fd3JpdGUoc3RydWN0IHZub2RlICp2cCBf
X3VudXNlZCwKIAkJCSAgIHN0cnVjdCB1aW8gKnVpbywKIAkJCSAgIGludCBpb2ZsYWcgX191bnVz
ZWQpCiB7Ci0JVUtfQVNTRVJUKCF1aW8tPnVpb19vZmZzZXQpOwotCVVLX0FTU0VSVCh1aW8tPnVp
b19pb3ZjbnQgPT0gMSk7Ci0JcmV0dXJuIHVrcGxhdF9jb3V0ayh1aW8tPnVpb19pb3YtPmlvdl9i
YXNlLCB1aW8tPnVpb19pb3YtPmlvdl9sZW4pOworCWlmICh1aW8tPnVpb19vZmZzZXQpCisJCXJl
dHVybiBFU1BJUEU7CisKKwlyZXR1cm4gdmZzY29yZV91aW9mb3JlYWNoKF9fd3JpdGVfZm4sIE5V
TEwsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOwogfQogCi1zdGF0aWMgc3NpemVfdCBzdGRpb19yZWFk
KHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCi0JCSAgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZpbGUgX191bnVzZWQsCi0JCSAgICAgIHN0cnVjdCB1aW8gKnVpbywKLQkJICAgICAgaW50IGlv
ZmxhZyBfX3VudXNlZCkKKworc3RhdGljIGludCBfX3JlYWRfZm4odm9pZCAqZHN0LCB2b2lkICpz
cmMgX191bnVzZWQsIHNpemVfdCAqY250KQogewogCWludCBieXRlc19yZWFkOwogCXNpemVfdCBi
eXRlc190b3RhbCA9IDAsIGNvdW50OwotCWNoYXIgKmJ1ZjsKLQotCVVLX0FTU0VSVCghdWlvLT51
aW9fb2Zmc2V0KTsKLQlVS19BU1NFUlQodWlvLT51aW9faW92Y250ID09IDEpOworCWNoYXIgKmJ1
ZiA9IGRzdDsKIAotCWJ1ZiA9IHVpby0+dWlvX2lvdi0+aW92X2Jhc2U7Ci0JY291bnQgPSB1aW8t
PnVpb19pb3YtPmlvdl9sZW47CisJY291bnQgPSAqY250OwogCiAJZG8gewogCQl3aGlsZSAoKGJ5
dGVzX3JlYWQgPSB1a3BsYXRfY2luayhidWYsCkBAIC04Miw3ICs5MiwzMyBAQCBzdGF0aWMgc3Np
emVfdCBzdGRpb19yZWFkKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCiAJfSB3aGlsZSAoYnl0
ZXNfdG90YWwgPCBjb3VudCAmJiAqKGJ1ZiAtIDEpICE9ICdcbicKIAkJCSYmICooYnVmIC0gMSkg
IT0gVkVPRik7CiAKLQlyZXR1cm4gYnl0ZXNfdG90YWw7CisJKmNudCA9IGJ5dGVzX3RvdGFsOwor
CisJLyogVGhlIElOVF9NSU4gaGVyZSBpcyBhIHNwZWNpYWwgcmV0dXJuIGNvZGUuIEl0IG1ha2Vz
IHRoZQorCSAqIHZmc2NvcmVfdWlvZm9yZWFjaCB0byBxdWl0IGZyb20gdGhlIGxvb3AuIEJ1dCB0
aGlzIGlzIG5vdAorCSAqIGFuIGVycm9yIChmb3IgZXhhbXBsZSBhIHVzZXIgaGl0IEN0cmwtQyku
IFRoYXQgaXMgd2h5IHRoaXMKKwkgKiBzcGVjaWFsIHJldHVybiB2YWx1ZSBpcyBmaXhlZCB1cCB0
byAwIGluIHRoZSBzdGRpb19yZWFkLgorCSAqLworCWlmICgqKGJ1ZiAtIDEpID09ICdcbicgfHwg
KihidWYgLSAxKSA9PSBWRU9GKQorCQlyZXR1cm4gSU5UX01JTjsKKworCXJldHVybiAwOworfQor
CitzdGF0aWMgc3NpemVfdCBzdGRpb19yZWFkKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCisJ
CSAgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUgX191bnVzZWQsCisJCSAgICAgIHN0cnVj
dCB1aW8gKnVpbywKKwkJICAgICAgaW50IGlvZmxhZyBfX3VudXNlZCkKK3sKKwlpbnQgcmV0Owor
CisJaWYgKHVpby0+dWlvX29mZnNldCkKKwkJcmV0dXJuIEVTUElQRTsKKworCXJldCA9IHZmc2Nv
cmVfdWlvZm9yZWFjaChfX3JlYWRfZm4sIE5VTEwsIHVpby0+dWlvX3Jlc2lkLCB1aW8pOworCXJl
dCA9IChyZXQgPT0gSU5UX01JTikgPyAwIDogcmV0OworCisJcmV0dXJuIHJldDsKIH0KIAogc3Rh
dGljIGludAotLSAKMi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:25:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYDBU-0008OX-W9; Tue, 04 Jun 2019 17:25:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYDBT-0008OC-Oe
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:25:15 +0000
X-Inumbo-ID: b6ea64ea-86ed-11e9-be80-33028e846166
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b6ea64ea-86ed-11e9-be80-33028e846166;
 Tue, 04 Jun 2019 17:25:15 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 550BA105315;
 Tue,  4 Jun 2019 19:25:14 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id PEKFjR8eehbN; Tue,  4 Jun 2019 19:25:14 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 35F9710530F
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 19:25:14 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 19:25:13 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 19:24:52 +0200
Message-ID: <20190604172454.10628-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 3/5] lib/vfscore: check return
 value of vfs_write in sys_write
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBjaGVjayBoYXMgYmVlbiBsb3N0IGR1cmluZyB0aGUgcG9ydGluZy4KClNpZ25lZC1vZmYt
Ynk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTog
RmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgotLS0KIGxpYi92ZnNj
b3JlL3N5c2NhbGxzLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg
ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zm
c2NvcmUvc3lzY2FsbHMuYwppbmRleCAxMzAxZjM1MS4uMzg1ZDkwYzAgMTAwNjQ0Ci0tLSBhL2xp
Yi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMzMw
LDcgKzMzMCw3IEBAIHN5c193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgY29uc3Qgc3Ry
dWN0IGlvdmVjICppb3YsIHNpemVfdCBuaW92LAogCXVpby51aW9fb2Zmc2V0ID0gb2Zmc2V0Owog
CXVpby51aW9fcmVzaWQgPSBieXRlczsKIAl1aW8udWlvX3J3ID0gVUlPX1dSSVRFOwotCXZmc193
cml0ZShmcCwgJnVpbywgKG9mZnNldCA9PSAtMSkgPyAwIDogRk9GX09GRlNFVCk7CisJZXJyb3Ig
PSB2ZnNfd3JpdGUoZnAsICZ1aW8sIChvZmZzZXQgPT0gLTEpID8gMCA6IEZPRl9PRkZTRVQpOwog
CSpjb3VudCA9IGJ5dGVzIC0gdWlvLnVpb19yZXNpZDsKIAogCWZyZWUoY29weV9pb3YpOwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:25:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:25:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYDBV-0008Og-1r; Tue, 04 Jun 2019 17:25: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=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYDBT-0008OD-Oe
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:25:15 +0000
X-Inumbo-ID: b4f8c41a-86ed-11e9-bbaf-b32f00e3c030
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b4f8c41a-86ed-11e9-bbaf-b32f00e3c030;
 Tue, 04 Jun 2019 17:25:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1558C105312;
 Tue,  4 Jun 2019 19:25:11 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SUvpQJxl84y8; Tue,  4 Jun 2019 19:25:10 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id EA3E610530F
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 19:25:10 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 19:25:10 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 19:24:50 +0200
Message-ID: <20190604172454.10628-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 1/5] lib/vfscore: introduce
 vfscore_uioforeach
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyBhIHRlbXBsYXRlLXR5cGUgb2YgZnVuY3Rpb24sIHRvIGF2b2lkIGNvZGUKZHVwbGlj
YXRpb24uIENvbXBpbGVyIG9wdGltaXplcyBleHRyYSBjYWxsIHRvIHRoZSBmdW5jdGlvbiBwb2lu
dGVyCnBhc3NlZCBhcyBhcmd1bWVudCwgc28gdGhpcyBzaG91bGQgbm90IGhhdmUgYW55IHBlcmZv
cm1hbmNlIGltcGFjdHMKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hr
b3ZAbmVjbGFiLmV1PgotLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCB8IDQ1
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi92ZnNjb3JlL3N1YnJfdWlvLmMg
ICAgICAgICAgICB8IDM0ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQs
IDUzIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91
aW8uaAppbmRleCBjNzM0ZmExOS4uODNkZDViOWEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS91aW8uaAorKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlv
LmgKQEAgLTU3LDYgKzU3LDUxIEBAIHN0cnVjdCB1aW8gewogCWVudW0JdWlvX3J3IHVpb19ydzsJ
CS8qIG9wZXJhdGlvbiAqLwogfTsKIAorLyogVGhpcyBpcyBhIHdyYXBwZXIgZm9yIGZ1bmN0aW9u
cyBmIHdpdGggYSAibWVtY3B5LWxpa2UiIHNpZ25hdHVyZQorICogImRzdCwgc3JjLCBjbnQiIHRv
IGJlIGV4ZWN1dGVkIG92ZXIgYSBzY2F0dGVyLWdhdGhlciBsaXN0IHByb3ZpZGVkCisgKiBieSBh
IHN0cnVjdCB1aW8uIGYoKSBtaWdodCBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gcmVhZCBm
cm9tIG9yCisgKiB3cml0ZSB0byBjcCB1cCB0byBuIGJ5dGVzIG9mIGRhdGEgKG9yIHVwIHRvIHRo
ZSBjYXBhY2l0eSBvZiB0aGUgdWlvCisgKiBzY2F0dGVyLWdhdGhlciBidWZmZXJzKS4KKyAqLwor
c3RhdGljIGlubGluZQoraW50IHZmc2NvcmVfdWlvZm9yZWFjaChpbnQgKCpmKSh2b2lkICosIHZv
aWQgKiwgc2l6ZV90ICopLCB2b2lkICpjcCwKKwkJICAgICAgc2l6ZV90IG4sIHN0cnVjdCB1aW8g
KnVpbykKK3sKKwlpbnQgcmV0ID0gMDsKKworCVVLX0FTU0VSVCh1aW8tPnVpb19ydyA9PSBVSU9f
UkVBRCB8fCB1aW8tPnVpb19ydyA9PSBVSU9fV1JJVEUpOworCisJd2hpbGUgKG4gPiAwICYmIHVp
by0+dWlvX3Jlc2lkKSB7CisJCXN0cnVjdCBpb3ZlYyAqaW92ID0gdWlvLT51aW9faW92OworCQlz
aXplX3QgY250ID0gaW92LT5pb3ZfbGVuOworCisJCWlmIChjbnQgPT0gMCkgeworCQkJdWlvLT51
aW9faW92Kys7CisJCQl1aW8tPnVpb19pb3ZjbnQtLTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlm
IChjbnQgPiBuKQorCQkJY250ID0gbjsKKworCQlpZiAodWlvLT51aW9fcncgPT0gVUlPX1JFQUQp
CisJCQlyZXQgPSBmKGlvdi0+aW92X2Jhc2UsIGNwLCAmY250KTsKKwkJZWxzZQorCQkJcmV0ID0g
ZihjcCwgaW92LT5pb3ZfYmFzZSwgJmNudCk7CisKKwkJaW92LT5pb3ZfYmFzZSA9IChjaGFyICop
aW92LT5pb3ZfYmFzZSArIGNudDsKKwkJaW92LT5pb3ZfbGVuIC09IGNudDsKKwkJdWlvLT51aW9f
cmVzaWQgLT0gY250OworCQl1aW8tPnVpb19vZmZzZXQgKz0gY250OworCQljcCA9IChjaGFyICop
Y3AgKyBjbnQ7CisJCW4gLT0gY250OworCisJCWlmIChyZXQpCisJCQlicmVhazsKKwl9CisKKwly
ZXR1cm4gcmV0OworfQorCiBpbnQJdmZzY29yZV91aW9tb3ZlKHZvaWQgKmNwLCBpbnQgbiwgc3Ry
dWN0IHVpbyAqdWlvKTsKIAogI2VuZGlmIC8qICFfVUlPX0hfICovCmRpZmYgLS1naXQgYS9saWIv
dmZzY29yZS9zdWJyX3Vpby5jIGIvbGliL3Zmc2NvcmUvc3Vicl91aW8uYwppbmRleCBhYTE3NjA3
NC4uZTZlMWNkZjAgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKKysrIGIvbGli
L3Zmc2NvcmUvc3Vicl91aW8uYwpAQCAtNDUsMzQgKzQ1LDE2IEBACiAjaW5jbHVkZSA8c3RyaW5n
Lmg+CiAjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KIAorc3RhdGljIGludCBfX21lbWNweV93cmFw
cGVyKHZvaWQgKmRzdCwgdm9pZCAqc3JjLCBzaXplX3QgKmNudCkKK3sKKwltZW1jcHkoZHN0LCBz
cmMsICpjbnQpOworCXJldHVybiAwOworfQorCiBpbnQKIHZmc2NvcmVfdWlvbW92ZSh2b2lkICpj
cCwgaW50IG4sIHN0cnVjdCB1aW8gKnVpbykKIHsKLQlVS19BU1NFUlQodWlvLT51aW9fcncgPT0g
VUlPX1JFQUQgfHwgdWlvLT51aW9fcncgPT0gVUlPX1dSSVRFKTsKKwlpbnQgcmV0ID0gdmZzY29y
ZV91aW9mb3JlYWNoKF9fbWVtY3B5X3dyYXBwZXIsIGNwLCBuLCB1aW8pOwogCi0Jd2hpbGUgKG4g
PiAwICYmIHVpby0+dWlvX3Jlc2lkKSB7Ci0JCXN0cnVjdCBpb3ZlYyAqaW92ID0gdWlvLT51aW9f
aW92OwotCQlpbnQgY250ID0gaW92LT5pb3ZfbGVuOwotCQlpZiAoY250ID09IDApIHsKLQkJCXVp
by0+dWlvX2lvdisrOwotCQkJdWlvLT51aW9faW92Y250LS07Ci0JCQljb250aW51ZTsKLQkJfQot
CQlpZiAoY250ID4gbikKLQkJCWNudCA9IG47Ci0KLQkJaWYgKHVpby0+dWlvX3J3ID09IFVJT19S
RUFEKQotCQkJbWVtY3B5KGlvdi0+aW92X2Jhc2UsIGNwLCBjbnQpOwotCQllbHNlCi0JCQltZW1j
cHkoY3AsIGlvdi0+aW92X2Jhc2UsIGNudCk7Ci0KLQkJaW92LT5pb3ZfYmFzZSA9IChjaGFyICop
aW92LT5pb3ZfYmFzZSArIGNudDsKLQkJaW92LT5pb3ZfbGVuIC09IGNudDsKLQkJdWlvLT51aW9f
cmVzaWQgLT0gY250OwotCQl1aW8tPnVpb19vZmZzZXQgKz0gY250OwotCQljcCA9IChjaGFyICop
Y3AgKyBjbnQ7Ci0JCW4gLT0gY250OwotCX0KLQotCXJldHVybiAwOworCXJldHVybiByZXQ7CiB9
Ci0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:25:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:25: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 1hYDBb-0008QM-3q; Tue, 04 Jun 2019 17:25: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=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYDBa-0008Q3-28
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:25:22 +0000
X-Inumbo-ID: b9bb9acc-86ed-11e9-8845-e3c869c09a4f
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b9bb9acc-86ed-11e9-8845-e3c869c09a4f;
 Tue, 04 Jun 2019 17:25:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 12652F2075;
 Tue,  4 Jun 2019 19:25:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4P4R9MmngRaw; Tue,  4 Jun 2019 19:25:18 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id DD4DEF2020;
 Tue,  4 Jun 2019 19:25:14 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 19:25:14 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 19:24:53 +0200
Message-ID: <20190604172454.10628-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 4/5] lib/vfscore: do not advance
 position for stdio
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu,
 Vlad-Andrei Badoiu <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>

V2l0aCB0aGUgcHJvcGVyIGhhbmRsaW5nIG9mIHVpbyBmb3Igc3RkaW8gZmlsZXMsIHZmcyBhbHNv
IGFkdmFuY2VzIHRoZQpwb3NpdGlvbiBpbiB0aGUgc3RydWN0IGZpbGUuIFdoaWNoIGRvZXMgbm90
IG1ha2UgYW55IHNlbnNlIGZvciBjb25zb2xlCihhbmQgc29tZSBvdGhlciBjbGFzc2VzIG9mIGRl
dmljZXMpLgoKVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgZmxhZ3MgdmFyaWFibGUgaW5zaWRlIHN0
cnVjdAp2ZnNjb3JlX2ZpbGUuIFVzaW5nIGZfZmxhZ3Mgd291bGQgYWRkIG1vcmUgbWVzcyBpbiB0
aGUgY29kZSwgYmVjYXVzZQptb3N0IG9mIHRoZSBmbGFncyBhcmUgZGVmaW5lZCBpbiBmY250bC5o
LCB3aGljaCBpcyBleHRlcm5hbCBmcm9tCnZmc2NvcmUgaGVhZGVyLgoKU2lnbmVkLW9mZi1ieTog
WXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClNpZ25lZC1vZmYtYnk6IFZs
YWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KLS0t
CiBsaWIvdmZzY29yZS9mb3BzLmMgICAgICAgICAgICAgICAgIHwgNiArKysrLS0KIGxpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmggfCA2ICsrKysrKwogbGliL3Zmc2NvcmUvc3RkaW8u
YyAgICAgICAgICAgICAgICB8IDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCsp
LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZvcHMuYyBiL2xpYi92
ZnNjb3JlL2ZvcHMuYwppbmRleCA3OTExNGUyMS4uOGY1YzJlMWIgMTAwNjQ0Ci0tLSBhL2xpYi92
ZnNjb3JlL2ZvcHMuYworKysgYi9saWIvdmZzY29yZS9mb3BzLmMKQEAgLTc1LDcgKzc1LDggQEAg
aW50IHZmc19yZWFkKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGlu
dCBmbGFncykKIAllcnJvciA9IFZPUF9SRUFEKHZwLCBmcCwgdWlvLCAwKTsKIAlpZiAoIWVycm9y
KSB7CiAJCWNvdW50ID0gYnl0ZXMgLSB1aW8tPnVpb19yZXNpZDsKLQkJaWYgKChmbGFncyAmIEZP
Rl9PRkZTRVQpID09IDApCisJCWlmICgoKGZsYWdzICYgRk9GX09GRlNFVCkgPT0gMCkgJiYKKwkJ
ICAgICEoZnAtPmZfdmZzX2ZsYWdzICYgVUtfVkZTQ09SRV9OT1BPUykpCiAJCQlmcC0+Zl9vZmZz
ZXQgKz0gY291bnQ7CiAJfQogCXZuX3VubG9jayh2cCk7CkBAIC0xMDcsNyArMTA4LDggQEAgaW50
IHZmc193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQg
ZmxhZ3MpCiAJZXJyb3IgPSBWT1BfV1JJVEUodnAsIHVpbywgaW9mbGFncyk7CiAJaWYgKCFlcnJv
cikgewogCQljb3VudCA9IGJ5dGVzIC0gdWlvLT51aW9fcmVzaWQ7Ci0JCWlmICgoZmxhZ3MgJiBG
T0ZfT0ZGU0VUKSA9PSAwKQorCQlpZiAoIShmbGFncyAmIEZPRl9PRkZTRVQpICYmCisJCSAgICAh
KGZwLT5mX3Zmc19mbGFncyAmIFVLX1ZGU0NPUkVfTk9QT1MpKQogCQkJZnAtPmZfb2Zmc2V0ICs9
IGNvdW50OwogCX0KIApkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Zp
bGUuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKaW5kZXggMmMwMjUyZTIu
LmU2MDJkMzJkIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZmlsZS5o
CisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9maWxlLmgKQEAgLTQ2LDEyICs0Niwx
OCBAQCBleHRlcm4gIkMiIHsKIAogc3RydWN0IHZmc2NvcmVfZmlsZTsKIAorLyogU2V0IHRoaXMg
ZmxhZyBpZiB2ZnMgc2hvdWxkIE5PdCBoYW5kZSBQT1NpdGlvbiBmb3IgdGhpcyBmaWxlLiBUaGUK
KyAqIGZpbGUgaXMgbm90IHNlZWstYWJsZSwgdXBkYXRpbmcgZl9vZmZzZXQgZG9lcyBub3QgbWFr
ZSBzZW5zZSBmb3IKKyAqIGl0ICovCisjZGVmaW5lIFVLX1ZGU0NPUkVfTk9QT1MgKChpbnQpICgx
IDw8IDApKQorCiBzdHJ1Y3QgdmZzY29yZV9maWxlIHsKIAlpbnQgZmQ7CiAJaW50CQlmX2ZsYWdz
OwkvKiBvcGVuIGZsYWdzICovCiAJaW50CQlmX2NvdW50OwkvKiByZWZlcmVuY2UgY291bnQgKi8K
IAlvZmZfdAkJZl9vZmZzZXQ7CS8qIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZSAqLwogCXZvaWQJ
CSpmX2RhdGE7ICAgICAgICAvKiBmaWxlIGRlc2NyaXB0b3Igc3BlY2lmaWMgZGF0YSAqLworCWlu
dAkJZl92ZnNfZmxhZ3M7ICAgIC8qIGludGVybmFsIGltcGxlbWVudGF0aW9uIGZsYWdzICovCiAJ
c3RydWN0IGRlbnRyeSAgICpmX2RlbnRyeTsKIH07CiAKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L3N0ZGlvLmMgYi9saWIvdmZzY29yZS9zdGRpby5jCmluZGV4IDU2YzExYTkyLi5iZDgxNGZhMCAx
MDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3RkaW8uYworKysgYi9saWIvdmZzY29yZS9zdGRpby5j
CkBAIC0xNDksNiArMTQ5LDcgQEAgc3RhdGljIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgIHN0ZGlvX2Zp
bGUgPSB7CiAJLmZkID0gMSwKIAkuZl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFELAogCS5m
X2RlbnRyeSA9ICZzdGRpb19kZW50cnksCisJLmZfdmZzX2ZsYWdzID0gVUtfVkZTQ09SRV9OT1BP
UywKIAkvKiByZWZlcmVuY2UgY291bnQgaXMgMiBiZWNhdXNlIGNsb3NlKDApIGlzIGEgdmFsaWQK
IAkgKiBvcGVyYXRpb24uIEhvd2V2ZXIgaXQgaXMgbm90IHByb3Blcmx5IGhhbmRsZWQgaW4gdGhl
CiAJICogY3VycmVudCBpbXBsZW1lbnRhdGlvbi4gKi8KLS0gCjIuMTkuMgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:25:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:25: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 1hYDBb-0008QR-5Z; Tue, 04 Jun 2019 17:25:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Go7c=UD=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYDBa-0008Q4-4W
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:25:22 +0000
X-Inumbo-ID: ba0faa1c-86ed-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ba0faa1c-86ed-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 17:25:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9ED24105312;
 Tue,  4 Jun 2019 19:25:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id V_txmwYYnjc5; Tue,  4 Jun 2019 19:25:19 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 80D2F10530F
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 19:25:19 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Tue, 4 Jun 2019 19:25:19 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Tue, 4 Jun 2019 19:24:54 +0200
Message-ID: <20190604172454.10628-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v3 5/5] lib/vfscore: make all vnops
 function return int
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: florian.schmidt@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBtdXN0IGJlIGEgbWlzdGFrZSBtYWRlIGR1cmluZyBwb3J0aW5nIGFuZCBhZGFwdGluZyB0
eXBlcyBpbgpwYXJ0aWN1bGFyLiBBbGwgdGhlIHZub3BzIGZ1bmN0aW9ucyBhcmUgcmV0dXJuaW5n
IGVycm9yIGNvZGVzLCBub3QKb2Zmc2V0cyBvciBub3QgdGhlIG51bWJlciBvZiBieXRlcyByZWFk
LgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+
ClJldmlld2VkLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+
Ci0tLQogbGliL3JhbWZzL3JhbWZzX3Zub3BzLmMgICAgICAgICAgICAgfCAgNiArKystLS0KIGxp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oIHwgMTAgKysrKysrLS0tLQogbGliL3Zm
c2NvcmUvc3RkaW8uYyAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiAzIGZpbGVzIGNoYW5nZWQs
IDExIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3JhbWZz
L3JhbWZzX3Zub3BzLmMgYi9saWIvcmFtZnMvcmFtZnNfdm5vcHMuYwppbmRleCBmMDg0OGJkMC4u
NmVjYTliMjYgMTAwNjQ0Ci0tLSBhL2xpYi9yYW1mcy9yYW1mc192bm9wcy5jCisrKyBiL2xpYi9y
YW1mcy9yYW1mc192bm9wcy5jCkBAIC0yOTQsNyArMjk0LDcgQEAgcmFtZnNfc3ltbGluayhzdHJ1
Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgY2hhciAqbGluaykKIAlyZXR1cm4gMDsKIH0KIAot
c3RhdGljIHNzaXplX3QKK3N0YXRpYyBpbnQKIHJhbWZzX3JlYWRsaW5rKHN0cnVjdCB2bm9kZSAq
dnAsIHN0cnVjdCB1aW8gKnVpbykKIHsKIAlzdHJ1Y3QgcmFtZnNfbm9kZSAqbnAgPSB2cC0+dl9k
YXRhOwpAQCAtMzk0LDcgKzM5NCw3IEBAIHJhbWZzX2NyZWF0ZShzdHJ1Y3Qgdm5vZGUgKmR2cCwg
Y2hhciAqbmFtZSwgbW9kZV90IG1vZGUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzc2l6ZV90
CitzdGF0aWMgaW50CiByYW1mc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKmZwIF9fdW51c2VkLAogCSAgIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZyBfX3Vu
dXNlZCkKIHsKQEAgLTQ0NCw3ICs0NDQsNyBAQCByYW1mc19zZXRfZmlsZV9kYXRhKHN0cnVjdCB2
bm9kZSAqdnAsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKQogCXJldHVybiAwOwogfQog
Ci1zdGF0aWMgc3NpemVfdAorc3RhdGljIGludAogcmFtZnNfd3JpdGUoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKQogewogCXN0cnVjdCByYW1mc19ub2RlICpu
cCA9ICB2cC0+dl9kYXRhOwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3Jl
L3Zub2RlLmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdm5vZGUuaAppbmRleCAxMzQ4
ZjU3OS4uZTdlYmM0YWQgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92
bm9kZS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS92bm9kZS5oCkBAIC0xNDcs
OSArMTQ3LDExIEBAIHN0cnVjdCB2YXR0ciB7CiAKIHR5cGVkZWYJaW50ICgqdm5vcF9vcGVuX3Qp
CShzdHJ1Y3QgdmZzY29yZV9maWxlICopOwogdHlwZWRlZglpbnQgKCp2bm9wX2Nsb3NlX3QpCShz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqKTsKLXR5cGVkZWYJc3NpemVfdCAo
KnZub3BfcmVhZF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKiwgc3Ry
dWN0IHVpbyAqLCBpbnQpOwotdHlwZWRlZglzc2l6ZV90ICgqdm5vcF93cml0ZV90KQkoc3RydWN0
IHZub2RlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKLXR5cGVkZWYJb2ZmX3QgKCp2bm9wX3NlZWtf
dCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIG9mZl90LCBvZmZfdCk7
Cit0eXBlZGVmCWludCAoKnZub3BfcmVhZF90KQkoc3RydWN0IHZub2RlICosIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKiwKKwkJCQkgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglpbnQgKCp2bm9w
X3dyaXRlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwordHlwZWRlZglp
bnQgKCp2bm9wX3NlZWtfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICos
CisJCQkJIG9mZl90LCBvZmZfdCk7CiB0eXBlZGVmCWludCAoKnZub3BfaW9jdGxfdCkJKHN0cnVj
dCB2bm9kZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7
CiB0eXBlZGVmCWludCAoKnZub3BfZnN5bmNfdCkJKHN0cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdmZz
Y29yZV9maWxlICopOwogdHlwZWRlZglpbnQgKCp2bm9wX3JlYWRkaXJfdCkJKHN0cnVjdCB2bm9k
ZSAqLCBzdHJ1Y3QgdmZzY29yZV9maWxlICosIHN0cnVjdCBkaXJlbnQgKik7CkBAIC0xNjcsNyAr
MTY5LDcgQEAgdHlwZWRlZglpbnQgKCp2bm9wX3RydW5jYXRlX3QpCShzdHJ1Y3Qgdm5vZGUgKiwg
b2ZmX3QpOwogdHlwZWRlZglpbnQgKCp2bm9wX2xpbmtfdCkgICAgICAoc3RydWN0IHZub2RlICos
IHN0cnVjdCB2bm9kZSAqLCBjaGFyICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX2NhY2hlX3QpIChz
dHJ1Y3Qgdm5vZGUgKiwgc3RydWN0IHZmc2NvcmVfZmlsZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlw
ZWRlZiBpbnQgKCp2bm9wX2ZhbGxvY2F0ZV90KSAoc3RydWN0IHZub2RlICosIGludCwgb2ZmX3Qs
IG9mZl90KTsKLXR5cGVkZWYgc3NpemVfdCAoKnZub3BfcmVhZGxpbmtfdCkgIChzdHJ1Y3Qgdm5v
ZGUgKiwgc3RydWN0IHVpbyAqKTsKK3R5cGVkZWYgaW50ICgqdm5vcF9yZWFkbGlua190KSAgKHN0
cnVjdCB2bm9kZSAqLCBzdHJ1Y3QgdWlvICopOwogdHlwZWRlZiBpbnQgKCp2bm9wX3N5bWxpbmtf
dCkgICAoc3RydWN0IHZub2RlICosIGNoYXIgKiwgY2hhciAqKTsKIAogLyoKZGlmZiAtLWdpdCBh
L2xpYi92ZnNjb3JlL3N0ZGlvLmMgYi9saWIvdmZzY29yZS9zdGRpby5jCmluZGV4IGJkODE0ZmEw
Li4wODMzNTM2NyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvc3RkaW8uYworKysgYi9saWIvdmZz
Y29yZS9zdGRpby5jCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBpbnQgX193cml0ZV9mbih2b2lk
ICpkc3QgX191bnVzZWQsIHZvaWQgKnNyYywgc2l6ZV90ICpjbnQpCiB9CiAKIC8qIE9uZSBmdW5j
dGlvbiBmb3Igc3RkZXJyIGFuZCBzdGRvdXQgKi8KLXN0YXRpYyBzc2l6ZV90IHN0ZGlvX3dyaXRl
KHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCitzdGF0aWMgaW50IHN0ZGlvX3dyaXRlKHN0cnVj
dCB2bm9kZSAqdnAgX191bnVzZWQsCiAJCQkgICBzdHJ1Y3QgdWlvICp1aW8sCiAJCQkgICBpbnQg
aW9mbGFnIF9fdW51c2VkKQogewpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBpbnQgX19yZWFk
X2ZuKHZvaWQgKmRzdCwgdm9pZCAqc3JjIF9fdW51c2VkLCBzaXplX3QgKmNudCkKIAlyZXR1cm4g
MDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc3RkaW9fcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwIF9fdW51
c2VkLAorc3RhdGljIGludCBzdGRpb19yZWFkKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQsCiAJ
CSAgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUgX191bnVzZWQsCiAJCSAgICAgIHN0cnVj
dCB1aW8gKnVpbywKIAkJICAgICAgaW50IGlvZmxhZyBfX3VudXNlZCkKLS0gCjIuMTkuMgoKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:44:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:44: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 1hYDUY-0002Ku-Di; Tue, 04 Jun 2019 17:44:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XtBW=UD=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hYDUX-0002Kp-74
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:44:57 +0000
X-Inumbo-ID: 74a53594-86f0-11e9-9d31-c75e8dff7a9f
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.48]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 74a53594-86f0-11e9-9d31-c75e8dff7a9f;
 Tue, 04 Jun 2019 17:44:52 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.17; Tue, 4 Jun
 2019 17:44:49 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Tue, 4 Jun 2019
 17:44:49 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPYTHON PATCH 0/3] Initial port of Python on Unikraft
Thread-Index: AQHVGv01ESKbzmfZ5Eq9lhW3dJ1J6g==
Date: Tue, 4 Jun 2019 17:44:49 +0000
Message-ID: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P194CA0031.EURP194.PROD.OUTLOOK.COM
 (2603:10a6:803:3c::20) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b35a540b-724e-44e1-726d-08d6e914575d
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB4955B534AEC3B0A739F4F264A6150@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:7219;
x-forefront-prvs: 0058ABBBC7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(39850400004)(376002)(136003)(366004)(396003)(199004)(189003)(81156014)(6916009)(81166006)(4326008)(3846002)(6116002)(68736007)(2351001)(26005)(2906002)(6506007)(54906003)(50226002)(85202003)(14454004)(8676002)(25786009)(99286004)(386003)(316002)(786003)(52116002)(66556008)(71200400001)(64756008)(476003)(186003)(73956011)(66476007)(86362001)(66446008)(66946007)(71190400001)(2616005)(256004)(8936002)(66066001)(5660300002)(5640700003)(6512007)(6436002)(1076003)(508600001)(74482002)(53936002)(85182001)(486006)(6486002)(102836004)(2501003)(4744005)(305945005)(7736002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: M58YyiXJqoyeG4eD4wltQssamT/CWICkst+Q024cjVU4apZVVtFKJ6PHR5XfCoL842x+dPdfwDVfErXqBupkYgTvTKf9lMh3j02ZCnMoGXnVXukmlgiFqdAJHYM6yrePS6dAigAnDiqqm+a/TwKmlaeTu3yKId3Kjaun6ky65kdIun62qINkZt2CKKdO9sKCEh3Yy81d1OeK8+dxaWyathusPhTnLkDebk/C5/E1qeW9IaNAwKmNq0ekTQu7UHg/lzuFGGIitbCPX84l6qebC2Xe+RKU/WwqxNFZtokEtUpVDYCjon6al8N+LW2Af3i8VyXIyHPlgUeGnIbdvIe1V9KZdCWKrrR8n1qqFMDK1J5D6ha6/oh0hixZFWps/cASXX2QDH6TBZnZx/z6OOKPemSsVlI3mMJoXVCDtGYm6ik=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: b35a540b-724e-44e1-726d-08d6e914575d
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2019 17:44:49.6052 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LIBPYTHON PATCH 0/3] Initial port of
 Python 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaGVzIGludHJvZHVjZSBzdXBwb3J0IGZvciBQeXRob24gdG8gVW5pa3JhZnQuIFRo
aXMgaXMgQ1B5dGhvbjINCndpdGhvdXQgdGhlIHN0YW5kYXJkIHB5dGhvbiBsaWJyYXJ5LiBTaW5j
ZSB3ZSBoYXZlIG5vIHNpdGUucHksICB0aGUgIi1TIiANCmFyZ3VtZW50IG11c3QgYmUgcGFzc2Vk
IHRvIHRoZSBpbnRlcnByZXRlciB0byB3b3JrLg0KDQpWbGFkIEJhZG9pdSAoMSk6DQogIEluaXRp
YWwgcG9ydCBvZiBDUHl0aG9uIG9uIFVuaWtyYWZ0DQoNClZsYWQtQW5kcmVpIEJhZG9pdSAoMik6
DQogIEFkZCAuZ2l0aWdub3JlDQogIEFkZCBleHBvcnRzeW1zLnVrDQoNCi0tIA0KMi4yMS4wDQoN
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:45:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:45: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 1hYDUc-0002LP-FY; Tue, 04 Jun 2019 17:45: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=XtBW=UD=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hYDUb-0002LI-Jk
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:45:01 +0000
X-Inumbo-ID: 787486d4-86f0-11e9-b20a-dfd46cb46961
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.43]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 787486d4-86f0-11e9-b20a-dfd46cb46961;
 Tue, 04 Jun 2019 17:44:59 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.17; Tue, 4 Jun
 2019 17:44:50 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Tue, 4 Jun 2019
 17:44:50 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPYTHON PATCH 1/3] Add .gitignore
Thread-Index: AQHVGv01LWGNOO8LNEG3D5S6lYF4EQ==
Date: Tue, 4 Jun 2019 17:44:50 +0000
Message-ID: <20190604174439.30029-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P194CA0031.EURP194.PROD.OUTLOOK.COM
 (2603:10a6:803:3c::20) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 59e1e112-96e1-4f80-29e2-08d6e91457cc
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB4955466E9BF39DB51CADDD1EA6150@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0058ABBBC7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(39850400004)(376002)(136003)(366004)(396003)(199004)(189003)(81156014)(6916009)(81166006)(4326008)(3846002)(6116002)(68736007)(2351001)(26005)(2906002)(6506007)(54906003)(50226002)(85202003)(14454004)(8676002)(25786009)(99286004)(386003)(316002)(786003)(52116002)(66556008)(71200400001)(64756008)(476003)(186003)(73956011)(66476007)(86362001)(76176011)(66446008)(66946007)(71190400001)(2616005)(256004)(11346002)(8936002)(446003)(66066001)(5660300002)(5640700003)(6512007)(6436002)(1076003)(508600001)(74482002)(53936002)(85182001)(486006)(6486002)(102836004)(2501003)(4744005)(305945005)(7736002)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 8ybrIkqOf4GtDFIClUhFM61gUzK24dxXm7U5Ga7j0drbBhGuu4IwssL6OOoI8AEOvNgJP15ik3H9PuXPpRMSLrL/aKdlsV2Qq7+vRY3T/MtB+mpJTm1ht74D5ZU3a8dduZv8SRfYIlFWEu9zw1+HZRWfq7cL4Kw7oOzAYBZti4qq5azGVG5ITGLp5JkhFt7Kulk8G/t+gOOUEoIeiGvRcI0cdRxGTrRWi5GM2Ug0c4QqXDHPyu5p4Z6OZcjdDHRqLLMhR6YyuyarmAd+HNRJ/GEQNnBoK2t0SrOqEzsEqSxfz++FMlHQoaCzJr3ku5Wh2fLE8WmLQaUKZmdNEo7S2jccxv4Vu9CGOFNVNVXhCfeg7kM2hAA9ppxlVIfylgT+H8HVy4FHdA0PBo1nmSd0D1LHdNVNVDB7G/hKs95YNf4=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 59e1e112-96e1-4f80-29e2-08d6e91457cc
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2019 17:44:50.3478 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LIBPYTHON PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:45:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:45: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 1hYDUg-0002M6-Hl; Tue, 04 Jun 2019 17:45:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XtBW=UD=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hYDUg-0002Ly-04
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:45:06 +0000
X-Inumbo-ID: 79e9f648-86f0-11e9-9d1d-5fc1a4e0c16e
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.43]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 79e9f648-86f0-11e9-9d1d-5fc1a4e0c16e;
 Tue, 04 Jun 2019 17:45:00 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.17; Tue, 4 Jun
 2019 17:44:57 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Tue, 4 Jun 2019
 17:44:57 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPYTHON PATCH 2/3] Initial port of CPython on
 Unikraft
Thread-Index: AQHVGv02fxN7mwapL0u6xHuns+qLbw==
Date: Tue, 4 Jun 2019 17:44:52 +0000
Message-ID: <20190604174439.30029-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P194CA0031.EURP194.PROD.OUTLOOK.COM
 (2603:10a6:803:3c::20) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b0e56de5-e219-4e52-9e40-08d6e9145858
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB4955C443D513B0E6F35CC56DA6150@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:6108;
x-forefront-prvs: 0058ABBBC7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(39850400004)(376002)(136003)(366004)(396003)(38564003)(199004)(189003)(81156014)(6916009)(81166006)(4326008)(3846002)(6116002)(68736007)(2351001)(26005)(2906002)(6506007)(54906003)(50226002)(85202003)(14454004)(8676002)(25786009)(99286004)(386003)(316002)(6666004)(786003)(52116002)(66556008)(71200400001)(64756008)(476003)(186003)(73956011)(66476007)(86362001)(76176011)(66446008)(66946007)(71190400001)(2616005)(256004)(11346002)(30864003)(8936002)(446003)(66066001)(5660300002)(5640700003)(6512007)(6306002)(6436002)(1076003)(508600001)(74482002)(53946003)(53936002)(85182001)(486006)(6486002)(102836004)(2501003)(305945005)(7736002)(14444005)(569006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: +LZmUJfEDofzYS3CoLvsPVux0n0M3P1wU6OR8vBbqIH4NBd19SLsF2cZHx6S8awWoMmwwXmRKt9Ywn8OrFrSzA0SRhOIim/VBzU0FCfrfuNw0LtQNhJRyTUrKlW5QJ1/VR5vxztf7FdejNqhztYp6mTQNkCNXKlqnFqv9+J5iLYgV3qwTro47MIXa94tCMQWTBsoFypQEUGXMUMGis5hrsxLnCibncCxjdOFkbGFbwjY57z03cbxOnliJplKgn1afEK4KQ16DFplGyFjZLupuTZG9zy98oam/3BAfLGmfVOftd+sR2sApLZmzreZkWg/bDGKEGVbM9pO9P4la9B/FbCKLpcKaPlc2oiC1K4eadKOscf5xU+w2Nu9+yLSaYB7En5el8IfbbmMByNjq2yc1UaS6Edw5i3+m3kq67muTXk=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: b0e56de5-e219-4e52-9e40-08d6e9145858
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2019 17:44:52.7914 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LIBPYTHON PATCH 2/3] Initial port of
 CPython 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

RnJvbTogVmxhZCBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQoN
ClRoaXMgaXMgb3VyIGluaXRpYWwgcG9ydCBvZiBDUHl0aG9uIHRvIFVuaWtyYWZ0IGFzIGV4dGVy
bmFsIGxpYnJhcnkuIE5ld2xpYiBpcw0KcmVxdWlyZWQuIFdoZW4gYWRkaW5nIHRoZSBsaWJyYXJ5
IHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QsIHB5dGhvbiBzaG91bGQgc3RheQ0KYWZ0ZXIgbmV3bGli
IChlLmcuIC4uLjokKFVLX0xJQlMpL25ld2xpYi5naXQ6JChVS19MSUJTKS9weXRob24uLi4pLg0K
DQpUaGlzIGlzIENQeXRob24yIGFuZCBDUHl0aG9uMyB3aWxsIGJlIGFkZGVkIGluIGZ1dHVyZSBw
YXRjaGVzIHZpYSBhIGNvbmZpZw0Kb3B0aW9uLiBUaGlzIHZlcnNpb24gZG9lcyBub3QgdXNlIHRo
ZSBzdGFuZGFyZCBweXRob24gbGlicmFyeSBhbmQgbmVlZHMgdG8gYmUNCnJhbiB3aXRoIHRoZSAi
LVMiIGFyZ3VtZW50Lg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRf
YW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQotLS0NCiBDT0RJTkdfU1RZTEUubWQgICAg
ICAgICB8ICAgIDQgKw0KIENPTlRSSUJVVElORy5tZCAgICAgICAgIHwgICAgNCArDQogQ29uZmln
LnVrICAgICAgICAgICAgICAgfCAgIDI1ICsNCiBNQUlOVEFJTkVSUy5tZCAgICAgICAgICB8ICAg
MTEgKw0KIE1ha2VmaWxlLnVrICAgICAgICAgICAgIHwgIDMyOCArKysrKysrKysrDQogUkVBRE1F
Lm1kICAgICAgICAgICAgICAgfCAgICA1ICsNCiBjb25maWcuYyAgICAgICAgICAgICAgICB8ICAx
OTQgKysrKysrDQogaW5jbHVkZS9weWNvbmZpZy5oICAgICAgfCAxMzMwICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKw0KIGluY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIHwgICAx
NSArDQogbWFpbl9maWxlLmMgICAgICAgICAgICAgfCAgICA3ICsNCiAxMCBmaWxlcyBjaGFuZ2Vk
LCAxOTIzIGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1k
DQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZA0KIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDb25maWcudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTWFrZWZpbGUudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbmZpZy5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv
cHljb25maWcuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N5cy9zeXNtYWNyb3MuaA0K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBtYWluX2ZpbGUuYw0KDQpkaWZmIC0tZ2l0IGEvQ09ESU5HX1NU
WUxFLm1kIGIvQ09ESU5HX1NUWUxFLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw
MDAwMC4uNTczMDA0MQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQ09ESU5HX1NUWUxFLm1kDQpAQCAt
MCwwICsxLDQgQEANCitDb2RpbmcgU3R5bGUNCis9PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVm
ZXIgdG8gdGhlIGBDT0RJTkdfU1RZTEUubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVw
b3NpdG9yeS4NCmRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQN
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi41ZjU1ZWNhDQotLS0gL2Rldi9u
dWxsDQorKysgYi9DT05UUklCVVRJTkcubWQNCkBAIC0wLDAgKzEsNCBAQA0KK0NvbnRyaWJ1dGlu
ZyB0byBVbmlrcmFmdA0KKz09PT09PT09PT09PT09PT09PT09PT09DQorDQorUGxlYXNlIHJlZmVy
IHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9z
aXRvcnkuDQpkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrDQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMDdkZDdkZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQ29u
ZmlnLnVrDQpAQCAtMCwwICsxLDI1IEBADQorbWVudWNvbmZpZyBMSUJQWVRIT04NCisJICAgYm9v
bCAibGlicHl0aG9uIC0gUHl0aG9uIg0KKwkgICBkZWZhdWx0IG4NCisgICAgICAgc2VsZWN0IExJ
Qk5FV0xJQkMNCisgICAgICAgc2VsZWN0IExJQlVLRlMNCisgICAgICAgc2VsZWN0IExJQlVLU0NI
RURDT09QDQoraWYgTElCUFlUSE9ODQorDQorY29uZmlnIFBZVEhPTl9USFJFQURTDQorCWJvb2wg
IkVuYWJsZSB0aHJlYWRzIHN1cHBvcnQiDQorCXNlbGVjdCBMSUJQVEhSRUFEX0VNQkVEREVEDQor
CWRlZmF1bHQgbg0KKw0KK2NvbmZpZyBQWVRIT05fTkVUV09SS0lORw0KKwlib29sICJFbmFibGUg
bmV0d29ya2luZyBzdXBwb3J0IHN1cHBvcnQiDQorCXNlbGVjdCBDT05GSUdfTElCTFdJUA0KKwlk
ZWZhdWx0IG4NCisNCitjb25maWcgUFlUSE9OX1NJR05BTFMNCisJYm9vbCAiRW5hYmxlIHB5dGhv
biBzaWduYWxzIG1vZHVsZSINCisJZGVmYXVsdCBuDQorDQorZW5kaWYNCisNCisNCmRpZmYgLS1n
aXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0
NA0KaW5kZXggMDAwMDAwMC4uY2EwN2QxZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTUFJTlRBSU5F
UlMubWQNCkBAIC0wLDAgKzEsMTEgQEANCitNYWludGFpbmVycyBMaXN0DQorPT09PT09PT09PT09
PT09PQ0KKw0KK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVh
c2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9z
aXRvcnkuDQorDQorCUxJQlBZVEhPTi1VTklLUkFGVA0KKwlNOglGZWxpcGUgSHVpY2kgPGZlbGlw
ZS5odWljaUBuZWNsYWIuZXU+DQorCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCisJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcN
CisJRjogKg0KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5iMDE1NjU3DQotLS0gL2Rldi9udWxsDQorKysg
Yi9NYWtlZmlsZS51aw0KQEAgLTAsMCArMSwzMjggQEANCisjICBsaWJweXRob24gTWFrZWZpbGUu
dWMNCisjDQorIyAgQXV0aG9yczogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KKyMJICAgIEJhZG9pdSBWbGFkICA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5y
bz4NCisjDQorIyAgQ29weXJpZ2h0IChjKSAyMDE4LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisjICBDb3B5cmlnaHQgKGMpIDIwMTksIFVu
aXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
KyMNCisjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQNCisjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisjICBhcmUgbWV0Og0KKyMNCisjICAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodA0KKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4NCisjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUN
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHly
aWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisjICAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKyMg
ICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uDQorIw0KKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisj
ICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUNCisjICBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
DQorIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YNCisjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisjICBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
Tg0KKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpDQorIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCisjICBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4NCisjDQorIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCisjDQorDQorIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMNCisjIExpYnJhcnkgcmVnaXN0cmF0aW9uDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN
CiskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnB5dGhvbiwkKENPTkZJR19MSUJQWVRIT04pKSkN
CisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgU291cmNlcw0KKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQorTElCUFlUSE9OX1ZFUlNJT049Mi43LjE1DQorTElCUFlUSE9OX1VSTD1odHRw
czovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vMi43LjE1L1B5dGhvbi0kKExJQlBZVEhPTl9W
RVJTSU9OKS50Z3oNCitMSUJQWVRIT05fUEFUQ0hESVI9JChMSUJQWVRIT05fQkFTRSkvcGF0Y2hl
cw0KKyQoZXZhbCAkKGNhbGwgZmV0Y2gsbGlicHl0aG9uLCQoTElCUFlUSE9OX1VSTCkpKQ0KKyQo
ZXZhbCAkKGNhbGwgcGF0Y2gsbGlicHl0aG9uLCQoTElCUFlUSE9OX1BBVENIRElSKSxQeXRob24t
JChMSUJQWVRIT05fVkVSU0lPTikpKQ0KKw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fQkFTRSkvbWFpbl9maWxlLmMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgSGVscGVy
cw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorTElCUFlUSE9OX1NVQkRJUj1QeXRob24tJChM
SUJQWVRIT05fVkVSU0lPTikNCitMSUJQWVRIT05fU1JDID0gJChMSUJQWVRIT05fT1JJR0lOKS8k
KExJQlBZVEhPTl9TVUJESVIpDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIExpYnJh
cnkgaW5jbHVkZXMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK0NJTkNMVURFUy0kKENPTkZJ
R19MSUJQWVRIT04pICs9IC1JJChMSUJQWVRIT05fQkFTRSkvaW5jbHVkZQ0KK0NJTkNMVURFUy0k
KENPTkZJR19MSUJQWVRIT04pICs9IC1JJChMSUJQWVRIT05fU1JDKS9JbmNsdWRlDQorQ0lOQ0xV
REVTLSQoQ09ORklHX0xJQlBZVEhPTikgKz0gLUkkKExJQlBZVEhPTl9TUkMpL3B5ZmlsZXMNCitD
SU5DTFVERVMtJChDT05GSUdfTElCUFlUSE9OKSArPSAtSSQoTElCUFlUSE9OX1NSQykvUHl0aG9u
DQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlBZVEhPTikgKz0gLUkkKExJQlBZVEhPTl9TUkMpL01v
ZHVsZXMNCitDSU5DTFVERVMtJChDT05GSUdfTElCUFlUSE9OKSArPSAtSSQoTElCUFlUSE9OX1NS
QykvT2JqZWN0cw0KKw0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlBZVEhPTikgKz0gLUkkKExJ
QlBZVEhPTl9CQVNFKS9pbmNsdWRlDQorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCUFlUSE9OKSAr
PSAtSSQoTElCUFlUSE9OX1NSQykvSW5jbHVkZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlBZ
VEhPTikgKz0gLUkkKExJQlBZVEhPTl9TUkMpL3B5ZmlsZXMNCitDWFhJTkNMVURFUy0kKENPTkZJ
R19MSUJQWVRIT04pICs9IC1JJChMSUJQWVRIT05fU1JDKS9QeXRob24NCitDWFhJTkNMVURFUy0k
KENPTkZJR19MSUJQWVRIT04pICs9IC1JJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzDQorQ1hYSU5D
TFVERVMtJChDT05GSUdfTElCUFlUSE9OKSArPSAtSSQoTElCUFlUSE9OX1NSQykvT2JqZWN0cw0K
Kw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBHbG9iYWwgZmxhZ3MNCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KKw0KK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRl
ciAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwgICBcDQorLVduby11bnVzZWQtZnVu
Y3Rpb24gLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQg
ICAgIFwNCistV25vLWFycmF5LWJvdW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgLVduby1w
b2ludGVyLXNpZ24gLVduby11bnVzZWQtdmFsdWUgIFwNCistV25vLXVudXNlZC1tYWNyb3MgLVdu
by1wYXJlbnRoZXNlcyAtV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uICAgICAgXA0K
Ky1Xbm8tbWlzc2luZy1icmFjZXMgLVduby1lbmRpZi1sYWJlbHMgLVduby11bnVzZWQtYnV0LXNl
dC12YXJpYWJsZSAgICAgIFwNCistV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1X
bm8tdHlwZS1saW1pdHMgLVduby1zaWduLWNvbXBhcmUNCisNCitMSUJQWVRIT05fQ0ZMQUdTLXkg
Kz0gJChTVVBQUkVTU19GTEFHUykgLUQgX19EWU5BTUlDX1JFRU5UX18NCisNCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KKyMgT1MgZGVwZW5kZW5jaWVzIGNvZGUgLSBHbHVlIGJldHdlZW4gVW5p
Y29yZSBhbmQgbmV3bGliDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJQWVRIT05fU1JD
Uy15ICs9ICQoTElCUFlUSE9OX0JBU0UpL2NvbmZpZy5jDQorDQorIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMNCisjIFB5dG9uIHNvdXJjZXMgLSBQeXRob24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vYXNkbC5jDQor
TElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9hc3QuYw0KK0xJQlBZ
VEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vYmx0aW5tb2R1bGUuYw0KK0xJ
QlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vY2V2YWwuYw0KK0xJQlBZ
VEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vY29kZWNzLmMNCitMSUJQWVRI
T05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL2NvbXBpbGUuYw0KK0xJQlBZVEhP
Tl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZHRvYS5jDQorTElCUFlUSE9OX1NS
Q1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9keW5sb2FkX3N0dWIuYw0KK0xJQlBZVEhP
Tl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZXJyb3JzLmMNCitMSUJQWVRIT05f
U1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL2Zvcm1hdHRlcl9zdHJpbmcuYw0KK0xJ
QlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZm9ybWF0dGVyX3VuaWNv
ZGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZnJvemVu
LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL2Zyb3plbm1h
aW4uYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZnV0dXJl
LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL2dldGFyZ3Mu
Yw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZ2V0Y29tcGls
ZXIuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vZ2V0Y29w
eXJpZ2h0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL2dl
dG9wdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9nZXRw
bGF0Zm9ybS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9n
ZXR2ZXJzaW9uLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9u
L2dyYW1pbml0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9u
L2ltcG9ydC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9p
bXBvcnRkbC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9t
YXJzaGFsLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL21v
ZHN1cHBvcnQuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24v
bXlzbnByaW50Zi5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhv
bi9teXN0cnRvdWwuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRo
b24vcGVlcGhvbGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRo
b24vcHlhcmVuYS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhv
bi9weWN0eXBlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9u
L3B5ZnBlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL3B5
bWF0aC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9weXN0
YXRlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL3B5c3Ry
Y21wLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL3B5c3Ry
dG9kLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL1B5dGhv
bi1hc3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vcHl0
aG9ucnVuLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUHl0aG9uL3Jh
bmRvbS5jDQoraWZuZGVmIENPTkZJR19QWVRIT05fU0lHTkFMUw0KK0xJQlBZVEhPTl9TUkNTLXkg
Kz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vc2lnY2hlY2suYw0KK2VuZGlmDQorTElCUFlUSE9O
X1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYw0KK0xJQlBZ
VEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vc3ltdGFibGUuYw0KK0xJQlBZ
VEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QeXRob24vc3lzbW9kdWxlLmMNCitpZmRl
ZiBDT05GSUdfUFlUSE9OX1RIUkVBRFMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9O
X1NSQykvUHl0aG9uL3RocmVhZC5jDQorZW5kaWYNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElC
UFlUSE9OX1NSQykvUHl0aG9uL3RyYWNlYmFjay5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJ
QlBZVEhPTl9TUkMpL1B5dGhvbi9fd2FybmluZ3MuYw0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjDQorIyBQeXRvbiBzb3VyY2VzIC0gTW9kdWxlcw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2FsbW9kdWxl
LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9hcnJheW1v
ZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2F0
ZXhpdG1vZHVsZS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVs
ZXMvYXVkaW9vcC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVs
ZXMvYmluYXNjaWkuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1
bGVzL19iaXNlY3Rtb2R1bGUuYw0KKyNMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NS
QykvTW9kdWxlcy9fYnNkZGIuYw0KKyNMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NS
QykvTW9kdWxlcy9ic2RkYm1vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fU1JDKS9Nb2R1bGVzL2J6Mm1vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQ
WVRIT05fU1JDKS9Nb2R1bGVzL2NkbW9kdWxlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElC
UFlUSE9OX1NSQykvTW9kdWxlcy9jZ2Vuc3VwcG9ydC5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0g
JChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2NsbW9kdWxlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9
ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9jbWF0aG1vZHVsZS5jDQorTElCUFlUSE9OX1NSQ1Mt
eSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jDQorTElCUFlUSE9O
X1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMN
CitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9jUGlja2xlLmMN
CisjTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvY3J5cHRtb2R1
bGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2NTdHJp
bmdJTy5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvX2Nz
di5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL19jdXJz
ZXNtb2R1bGUuYw0KKyNMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxl
cy9fY3Vyc2VzX3BhbmVsLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykv
TW9kdWxlcy9kYXRldGltZW1vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fU1JDKS9Nb2R1bGVzL2RibW1vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQ
WVRIT05fU1JDKS9Nb2R1bGVzL2RsbW9kdWxlLmMNCisjTElCUFlUSE9OX1NSQ1MteSArPSAkKExJ
QlBZVEhPTl9TUkMpL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9
ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9lcnJub21vZHVsZS5jDQorTElCUFlUSE9OX1NSQ1Mt
eSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvZmNudGxtb2R1bGUuYw0KKyNMSUJQWVRIT05f
U1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9mbG1vZHVsZS5jDQorI0xJQlBZVEhP
Tl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2ZtbW9kdWxlLmMNCisjTElCUFlU
SE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMNCitM
SUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9mcGV0ZXN0bW9kdWxl
LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9fZnVuY3Rv
b2xzbW9kdWxlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxl
cy9mdXR1cmVfYnVpbHRpbnMuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JD
KS9Nb2R1bGVzL2djbW9kdWxlLmMNCisjTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9T
UkMpL01vZHVsZXMvZ2RibW1vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fU1JDKS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElC
UFlUSE9OX1NSQykvTW9kdWxlcy9nZXRidWlsZGluZm8uYw0KKyNMSUJQWVRIT05fU1JDUy15ICs9
ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9nZXRuYW1laW5mby5jDQorTElCUFlUSE9OX1NSQ1Mt
eSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvZ2V0cGF0aC5jDQorI0xJQlBZVEhPTl9TUkNT
LXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2dsbW9kdWxlLmMNCisjTElCUFlUSE9OX1NS
Q1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvZ3JwbW9kdWxlLmMNCisjTElCUFlUSE9O
X1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMNCitMSUJQ
WVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9faGVhcHFtb2R1bGUuYw0K
K0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL19ob3RzaG90LmMN
CitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9pbWFnZW9wLmMN
CisjTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvaW1nZmlsZS5j
DQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvaXRlcnRvb2xz
bW9kdWxlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9f
anNvbi5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL2xp
bnV4YXVkaW9kZXYuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1
bGVzL19sb2NhbGVtb2R1bGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JD
KS9Nb2R1bGVzL19sc3Byb2YuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JD
KS9Nb2R1bGVzL21haW4uYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9N
b2R1bGVzL19tYXRoLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9k
dWxlcy9tYXRobW9kdWxlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykv
TW9kdWxlcy9tZDUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1
bGVzL21kNW1vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9N
b2R1bGVzL21tYXBtb2R1bGUuYw0KKyNMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NS
QykvTW9kdWxlcy9uaXNtb2R1bGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05f
U1JDKS9Nb2R1bGVzL29wZXJhdG9yLmMNCisjTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhP
Tl9TUkMpL01vZHVsZXMvb3NzYXVkaW9kZXYuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQ
WVRIT05fU1JDKS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAk
KExJQlBZVEhPTl9TUkMpL01vZHVsZXMvcG9zaXhtb2R1bGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkg
Kz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3B1cmVtb2R1bGUuYw0KK0xJQlBZVEhPTl9TUkNT
LXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3B3ZG1vZHVsZS5jDQorI0xJQlBZVEhPTl9T
UkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3B5ZXhwYXQuYw0KK0xJQlBZVEhPTl9T
UkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYw0KKyNMSUJQ
WVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9yZWFkbGluZS5jDQorTElC
UFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvcmVzb3VyY2UuYw0KK0xJ
QlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3JvdGF0aW5ndHJlZS5j
DQoraWZkZWYgQ09ORklHX1BZVEhPTl9ORVRXT1JLSU5HDQorTElCUFlUSE9OX1NSQ1MteSArPSAk
KExJQlBZVEhPTl9TUkMpL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgDQorZW5kaWYNCisjTElCUFlU
SE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvc2dpbW9kdWxlLmMNCitMSUJQ
WVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYw0K
K0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3NoYTUxMm1vZHVs
ZS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvc2hhbW9k
dWxlLmMNCitpZmRlZiBDT05GSUdfUFlUSE9OX1NJR05BTFMNCitMSUJQWVRIT05fU1JDUy15ICs9
ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9zaWduYWxtb2R1bGUuYw0KK2VuZGlmDQorDQoraWZk
ZWYgQ09ORklHX1BZVEhPTl9ORVRXT1JLSU5HDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZ
VEhPTl9TUkMpL01vZHVsZXMvc29ja2V0bW9kdWxlLmMNCitlbmRpZg0KKyNMSUJQWVRIT05fU1JD
Uy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9zcHdkbW9kdWxlLmMNCitMSUJQWVRIT05f
U1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9fc3JlLmMNCisjTElCUFlUSE9OX1NS
Q1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvX3NzbC5jDQorTElCUFlUSE9OX1NSQ1Mt
eSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvc3Ryb3Btb2R1bGUuYw0KK0xJQlBZVEhPTl9T
UkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL19zdHJ1Y3QuYw0KKyNMSUJQWVRIT05f
U1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9zdW5hdWRpb2Rldi5jDQorI0xJQlBZ
VEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3N2bW9kdWxlLmMNCitMSUJQ
WVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5j
DQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3N5c2xvZ21v
ZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3Rl
cm1pb3MuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL190
ZXN0Y2FwaW1vZHVsZS5jDQoraWZkZWYgQ09ORklHX1BZVEhPTl9USFJFQURTDQorTElCUFlUSE9O
X1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL01vZHVsZXMvdGhyZWFkbW9kdWxlLmMNCitlbmRp
Zg0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3RpbWVtb2R1
bGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL3RpbWlu
Z21vZHVsZS5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVz
L3RrYXBwaW5pdC5jDQorI0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1
bGVzL190a2ludGVyLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9k
dWxlcy91bmljb2RlZGF0YS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMp
L01vZHVsZXMvX3dlYWtyZWYuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JD
KS9Nb2R1bGVzL3h4bW9kdWxlLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NS
QykvTW9kdWxlcy94eHN1YnR5cGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05f
U1JDKS9Nb2R1bGVzL3l1dmNvbnZlcnQuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fU1JDKS9Nb2R1bGVzL3ppcGltcG9ydC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZ
VEhPTl9TUkMpL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0g
JChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL19pby9ieXRlc2lvLmMNCitMSUJQWVRIT05fU1JDUy15
ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9faW8vZmlsZWlvLmMNCitMSUJQWVRIT05fU1JD
Uy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9faW8vaW9iYXNlLmMNCitMSUJQWVRIT05f
U1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMNCitMSUJQ
WVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy9faW8vc3RyaW5naW8uYw0K
K0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9Nb2R1bGVzL19pby90ZXh0aW8u
Yw0KKyNMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvTW9kdWxlcy96bGlibW9k
dWxlLmMNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgUHl0b24gc291cmNlcyAtIE9i
amVjdHMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChM
SUJQWVRIT05fU1JDKS9PYmplY3RzL2Fic3RyYWN0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQo
TElCUFlUSE9OX1NSQykvT2JqZWN0cy9ib29sb2JqZWN0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9
ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0cy9idWZmZXJvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNT
LXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jDQorTElCUFlU
SE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jDQor
I0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL2J5dGVzb2JqZWN0
LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0cy9jYXBzdWxl
LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0cy9jZWxsb2Jq
ZWN0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0cy9jbGFz
c29iamVjdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMv
Y29iamVjdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMv
Y29kZW9iamVjdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVj
dHMvY29tcGxleG9iamVjdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMp
L09iamVjdHMvZGVzY3JvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05f
U1JDKS9PYmplY3RzL2RpY3RvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fU1JDKS9PYmplY3RzL2VudW1vYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQ
WVRIT05fU1JDKS9PYmplY3RzL2V4Y2VwdGlvbnMuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChM
SUJQWVRIT05fU1JDKS9PYmplY3RzL2ZpbGVvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0g
JChMSUJQWVRIT05fU1JDKS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMNCitMSUJQWVRIT05fU1JDUy15
ICs9ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0cy9mcmFtZW9iamVjdC5jDQorTElCUFlUSE9OX1NS
Q1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMvZnVuY29iamVjdC5jDQorTElCUFlUSE9O
X1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMvZ2Vub2JqZWN0LmMNCitMSUJQWVRI
T05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0cy9pbnRvYmplY3QuYw0KK0xJQlBZ
VEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL2l0ZXJvYmplY3QuYw0KK0xJ
QlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL2xpc3RvYmplY3QuYw0K
K0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL2xvbmdvYmplY3Qu
Yw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL21lbW9yeW9i
amVjdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMvbWV0
aG9kb2JqZWN0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvT2JqZWN0
cy9tb2R1bGVvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9P
YmplY3RzL29iamVjdC5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09i
amVjdHMvb2JtYWxsb2MuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9P
YmplY3RzL3Jhbmdlb2JqZWN0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NS
QykvT2JqZWN0cy9zZXRvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05f
U1JDKS9PYmplY3RzL3NsaWNlb2JqZWN0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlU
SE9OX1NSQykvT2JqZWN0cy9zdHJpbmdvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChM
SUJQWVRIT05fU1JDKS9PYmplY3RzL3N0cnVjdHNlcS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAk
KExJQlBZVEhPTl9TUkMpL09iamVjdHMvdHVwbGVvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNTLXkg
Kz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL3R5cGVvYmplY3QuYw0KK0xJQlBZVEhPTl9TUkNT
LXkgKz0gJChMSUJQWVRIT05fU1JDKS9PYmplY3RzL3VuaWNvZGVjdHlwZS5jDQorTElCUFlUSE9O
X1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMvdW5pY29kZW9iamVjdC5jDQorTElC
UFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL09iamVjdHMvd2Vha3JlZm9iamVjdC5j
DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIFB5dG9uIHNvdXJjZXMgLSBPYmplY3Rz
DQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlU
SE9OX1NSQykvUGFyc2VyL2FjY2VsZXIuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRI
T05fU1JDKS9QYXJzZXIvYml0c2V0LmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9O
X1NSQykvUGFyc2VyL2ZpcnN0c2V0cy5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhP
Tl9TUkMpL1BhcnNlci9ncmFtbWFyMS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhP
Tl9TUkMpL1BhcnNlci9ncmFtbWFyLmMNCitpZm5kZWYgQ09ORklHX1BZVEhPTl9TSUdOQUxTDQor
TElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1BhcnNlci9pbnRyY2hlY2suYw0K
K2VuZGlmDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1BhcnNlci9saXN0
bm9kZS5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1BhcnNlci9tZXRh
Z3JhbW1hci5jDQorTElCUFlUSE9OX1NSQ1MteSArPSAkKExJQlBZVEhPTl9TUkMpL1BhcnNlci9t
eXJlYWRsaW5lLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUGFyc2Vy
L25vZGUuYw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QYXJzZXIvcGFy
c2VyLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUGFyc2VyL3BhcnNl
dG9rLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUGFyc2VyL3BnZW4u
Yw0KK0xJQlBZVEhPTl9TUkNTLXkgKz0gJChMSUJQWVRIT05fU1JDKS9QYXJzZXIvcHJpbnRncmFt
bWFyLmMNCitMSUJQWVRIT05fU1JDUy15ICs9ICQoTElCUFlUSE9OX1NSQykvUGFyc2VyL3Rva2Vu
aXplci5jDQpkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kDQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMjBhZDJmMA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUkVB
RE1FLm1kDQpAQCAtMCwwICsxLDUgQEANCitsaWJweXRob24gZm9yIFVuaWtyYWZ0DQorPT09PT09
PT09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2Vs
bCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gDQorc3ViZGlyZWN0b3J5IG9mIHRo
ZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQpkaWZmIC0tZ2l0IGEvY29uZmlnLmMgYi9jb25m
aWcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjEzZDg5ZTENCi0tLSAv
ZGV2L251bGwNCisrKyBiL2NvbmZpZy5jDQpAQCAtMCwwICsxLDE5NCBAQA0KKy8qIC0qLSBDIC0q
LSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0NvcHly
aWdodCAoYykgMjAwMCwgQmVPcGVuLmNvbS4NCitDb3B5cmlnaHQgKGMpIDE5OTUtMjAwMCwgQ29y
cG9yYXRpb24gZm9yIE5hdGlvbmFsIFJlc2VhcmNoIEluaXRpYXRpdmVzLg0KK0NvcHlyaWdodCAo
YykgMTk5MC0xOTk1LCBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0uDQorQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCisNCitTZWUgdGhlIGZpbGUgIk1pc2MvQ09QWVJJR0hUIiBmb3IgaW5mb3Jt
YXRpb24gb24gdXNhZ2UgYW5kDQorcmVkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCBhbmQgZm9y
IGEgRElTQ0xBSU1FUiBPRiBBTEwgV0FSUkFOVElFUy4NCisqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorLyogTW9k
dWxlIGNvbmZpZ3VyYXRpb24gKi8NCisNCisvKiAhISEgISEhICEhISBUaGlzIGZpbGUgaXMgZWRp
dGVkIGJ5IHRoZSBtYWtlc2V0dXAgc2NyaXB0ICEhISAhISEgISEhICovDQorDQorLyogVGhpcyBm
aWxlIGNvbnRhaW5zIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLg0KKyAgIFNlZSBpbml0
X2J1aWx0aW4oKSBpbiBpbXBvcnQuYy4gKi8NCisNCisjaW5jbHVkZSAiUHl0aG9uLmgiDQorI2lu
Y2x1ZGUgPHVrL2NvbmZpZy5oPg0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0K
KyNlbmRpZg0KKw0KKw0KKyNpZmRlZiBDT05GSUdfUFlUSE9OX1RIUkVBRFMNCitleHRlcm4gdm9p
ZCBpbml0dGhyZWFkKHZvaWQpOw0KKyNlbmRpZg0KK2V4dGVybiB2b2lkIGluaXRlcnJubyh2b2lk
KTsNCitleHRlcm4gdm9pZCBpbml0cmVzb3VyY2Uodm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdF9s
b2NhbGUodm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdF9ob3RzaG90KHZvaWQpOw0KKy8vZXh0ZXJu
IHZvaWQgaW5pdGZjbnRsKHZvaWQpOw0KKw0KK2V4dGVybiB2b2lkIGluaXRfc3JlKHZvaWQpOw0K
K2V4dGVybiB2b2lkIGluaXRfY29kZWNzKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRfd2Vha3Jl
Zih2b2lkKTsNCisvL2V4dGVybiB2b2lkIGluaXR6aXBpbXBvcnQodm9pZCk7DQorZXh0ZXJuIHZv
aWQgaW5pdF9zeW10YWJsZSh2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0eHhzdWJ0eXBlKHZvaWQp
Ow0KK2V4dGVybiB2b2lkIGluaXRwb3NpeCh2b2lkKTsNCisvKiBtb2R1bGVzIHRoYXQgc2hvdWxk
IGJlIGR5bmFtaWNhbGx5IGxvYWRlZCAqLw0KK2V4dGVybiB2b2lkIGluaXRhcnJheSh2b2lkKTsN
CisvKiBtaXNzaW5nIGF1ZGlvb3AsIGdldGJ1aWxkaW5mbywgZ2V0cGF0aCwgbWQ1LmMsIF9tYXRo
LCByb3RhdGluZ3RyZWUgKi8NCitleHRlcm4gdm9pZCBpbml0YmluYXNjaWkodm9pZCk7DQorZXh0
ZXJuIHZvaWQgaW5pdF9iaXNlY3Qodm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdGNtYXRoKHZvaWQp
Ow0KK2V4dGVybiB2b2lkIGluaXRfY29sbGVjdGlvbnModm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5p
dGNQaWNrbGUodm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdGNTdHJpbmdJTyh2b2lkKTsNCitleHRl
cm4gdm9pZCBpbml0X2Nzdih2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0ZnBldGVzdCh2b2lkKTsN
CitleHRlcm4gdm9pZCBpbml0X2Z1bmN0b29scyh2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0ZnV0
dXJlX2J1aWx0aW5zKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRnYyh2b2lkKTsNCitleHRlcm4g
dm9pZCBpbml0X2hlYXBxKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRpbWFnZW9wKHZvaWQpOw0K
K2V4dGVybiB2b2lkIGluaXRpdGVydG9vbHModm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdF9qc29u
KHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRfbHNwcm9mKHZvaWQpOw0KK2V4dGVybiB2b2lkIGlu
aXRtYXRoKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRfbWQ1KHZvaWQpOw0KK2V4dGVybiB2b2lk
IGluaXRvcGVyYXRvcih2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0cGFyc2VyKHZvaWQpOw0KK2V4
dGVybiB2b2lkIGluaXRwdXJlKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRfcmFuZG9tKHZvaWQp
Ow0KK2V4dGVybiB2b2lkIGluaXRfc2hhMjU2KHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRfc2hh
NTEyKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRfc2hhKHZvaWQpOw0KK2V4dGVybiB2b2lkIGlu
aXRfc3JlKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRzdHJvcCh2b2lkKTsNCitleHRlcm4gdm9p
ZCBpbml0X3N0cnVjdCh2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0X3N5bXRhYmxlKHZvaWQpOw0K
K2V4dGVybiB2b2lkIGluaXRfdGVzdGNhcGkodm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdHRpbWlu
Zyh2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0dW5pY29kZWRhdGEodm9pZCk7DQorZXh0ZXJuIHZv
aWQgaW5pdHh4KHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXR4eHN1YnR5cGUodm9pZCk7DQorZXh0
ZXJuIHZvaWQgaW5pdHRpbWUodm9pZCk7DQorI2lmZGVmIENPTkZJR19QWVRIT05fU0lHTkFMUw0K
K2V4dGVybiB2b2lkIGluaXRzaWduYWwodm9pZCk7DQorI2VuZGlmDQorZXh0ZXJuIHZvaWQgaW5p
dGRhdGV0aW1lKHZvaWQpOw0KK2V4dGVybiB2b2lkIGluaXRwd2Qodm9pZCk7DQorZXh0ZXJuIHZv
aWQgaW5pdF9pbyh2b2lkKTsNCisjaWZkZWYgQ09ORklHX1BZVEhPTl9ORVRXT1JLSU5HDQorZXh0
ZXJuIHZvaWQgaW5pdF9zb2NrZXQodm9pZCk7DQorZXh0ZXJuIHZvaWQgaW5pdHNlbGVjdCh2b2lk
KTsNCisjZW5kaWYNCisvKiAtLSBBRERNT0RVTEUgTUFSS0VSIDEgLS0gKi8NCisNCitleHRlcm4g
dm9pZCBQeU1hcnNoYWxfSW5pdCh2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0aW1wKHZvaWQpOw0K
K2V4dGVybiB2b2lkIGluaXRnYyh2b2lkKTsNCitleHRlcm4gdm9pZCBpbml0X2FzdCh2b2lkKTsN
CitleHRlcm4gdm9pZCBfUHlXYXJuaW5nc19Jbml0KHZvaWQpOw0KKw0KK3N0cnVjdCBfaW5pdHRh
YiBfUHlJbXBvcnRfSW5pdHRhYltdID0gew0KKw0KKw0KKyNpZmRlZiBDT05GSUdfUFlUSE9OX1RI
UkVBRFMNCisgICAgeyJ0aHJlYWQiLCBpbml0dGhyZWFkfSwNCisjZW5kaWYNCisjaWZkZWYgQ09O
RklHX1BZVEhPTl9ORVRXT1JLSU5HDQorICAgIHsiX3NvY2tldCIsIGluaXRfc29ja2V0fSwNCisj
ZW5kaWYNCisgICAgeyJyZXNvdXJjZSIsIGluaXRyZXNvdXJjZX0sDQorICAgIHsiX2hvdHNob3Qi
LCBpbml0X2hvdHNob3R9LA0KKyAgICAvL3siZmNudGwiLCBpbml0ZmNudGx9LA0KKyNpZmRlZiBD
T05GSUdfUFlUSE9OX05FVFdPUktJTkcNCisgICAgeyJzZWxlY3QiLCBpbml0c2VsZWN0fSwNCisj
ZW5kaWYNCisgICAgeyJfbG9jYWxlIiwgaW5pdF9sb2NhbGV9LA0KKyAgICB7ImVycm5vIiwgaW5p
dGVycm5vfSwgDQorICAgIHsiX2lvIiwgaW5pdF9pb30sIA0KKyNpZmRlZiBDT05GSUdfUFlUSE9O
X1NJR05BTFMNCisgICAgeyJzaWduYWwiLCBpbml0c2lnbmFsfSwNCisjZW5kaWYNCisgICAgeyJf
c3JlIiwgaW5pdF9zcmV9LA0KKyAgICB7InRpbWUiLCBpbml0dGltZX0sDQorICAgIHsiX2NvZGVj
cyIsIGluaXRfY29kZWNzfSwNCisgICAgeyJfd2Vha3JlZiIsIGluaXRfd2Vha3JlZn0sDQorICAg
IC8veyJ6aXBpbXBvcnQiLCBpbml0emlwaW1wb3J0fSwNCisgICAgeyJfc3ltdGFibGUiLCBpbml0
X3N5bXRhYmxlfSwNCisgICAgeyJ4eHN1YnR5cGUiLCBpbml0eHhzdWJ0eXBlfSwNCisgICAgeyJw
b3NpeCIsIGluaXRwb3NpeH0sDQorLyogbW9kdWxlcyB0aGF0IHNob3VsZCBiZSBkeW5hbWljYWxs
eSBsb2FkZWQgKi8NCisgICAgeyJhcnJheSIsIGluaXRhcnJheX0sDQorICAgIHsiYmluYXNjaWki
LCBpbml0YmluYXNjaWl9LA0KKyAgICB7Il9iaXNlY3QiLCBpbml0X2Jpc2VjdH0sDQorICAgIHsi
Y21hdGgiLCBpbml0Y21hdGh9LA0KKyAgICB7Il9jb2xsZWN0aW9ucyIsIGluaXRfY29sbGVjdGlv
bnN9LA0KKyAgICB7ImNQaWNrbGUiLCBpbml0Y1BpY2tsZX0sDQorICAgIHsiY1N0cmluZ0lPIiwg
aW5pdGNTdHJpbmdJT30sDQorICAgIHsiX2NzdiIsIGluaXRfY3N2fSwNCisgICAgeyJmcGV0ZXN0
IiwgaW5pdGZwZXRlc3R9LA0KKyAgICB7Il9mdW5jdG9vbHMiLCBpbml0X2Z1bmN0b29sc30sDQor
ICAgIHsiZnV0dXJlX2J1aWx0aW5zIiwgaW5pdGZ1dHVyZV9idWlsdGluc30sDQorICAgIHsiZ2Mi
LCBpbml0Z2N9LA0KKyAgICB7Il9oZWFwcSIsIGluaXRfaGVhcHF9LA0KKyAgICB7ImltYWdlb3Ai
LCBpbml0aW1hZ2VvcH0sDQorICAgIHsiaXRlcnRvb2xzIiwgaW5pdGl0ZXJ0b29sc30sDQorICAg
IHsiX2pzb24iLCBpbml0X2pzb259LA0KKyAgICB7Il9sc3Byb2YiLCBpbml0X2xzcHJvZn0sDQor
ICAgIHsibWF0aCIsIGluaXRtYXRofSwNCisgICAgeyJfbWQ1IiwgaW5pdF9tZDV9LA0KKyAgICB7
Im9wZXJhdG9yIiwgaW5pdG9wZXJhdG9yfSwNCisgICAgeyJwYXJzZXIiLCBpbml0cGFyc2VyfSwN
CisgICAgeyJwdXJlIiwgaW5pdHB1cmV9LA0KKyAgICB7Il9yYW5kb20iLCBpbml0X3JhbmRvbX0s
DQorICAgIHsiX3NoYTI1NiIsIGluaXRfc2hhMjU2fSwNCisgICAgeyJfc2hhNTEyIiwgaW5pdF9z
aGE1MTJ9LA0KKyAgICB7Il9zaGEiLCBpbml0X3NoYX0sDQorICAgIHsiX3NyZSIsIGluaXRfc3Jl
fSwNCisgICAgeyJzdHJvcCIsIGluaXRzdHJvcH0sDQorICAgIHsiX3N0cnVjdCIsIGluaXRfc3Ry
dWN0fSwNCisgICAgeyJfc3ltdGFibGUiLCBpbml0X3N5bXRhYmxlfSwNCisgICAgeyJfdGVzdGNh
cGkiLCBpbml0X3Rlc3RjYXBpfSwNCisgICAgeyJ0aW1pbmciLCBpbml0dGltaW5nfSwNCisgICAg
eyJ1bmljb2RlZGF0YSIsIGluaXR1bmljb2RlZGF0YX0sDQorICAgIHsieHgiLCBpbml0eHh9LA0K
KyAgICB7Inh4c3VidHlwZSIsIGluaXR4eHN1YnR5cGV9LA0KKyAgICB7ImRhdGV0aW1lIiwgaW5p
dGRhdGV0aW1lfSwNCisgICAgeyJwd2QiLCBpbml0cHdkfSwNCisvKiAtLSBBRERNT0RVTEUgTUFS
S0VSIDIgLS0gKi8NCisNCisgICAgLyogVGhpcyBtb2R1bGUgbGl2ZXMgaW4gbWFyc2hhbC5jICov
DQorICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwNCisNCisgICAgLyogVGhpcyBsaXZl
cyBpbiBpbXBvcnQuYyAqLw0KKyAgICB7ImltcCIsIGluaXRpbXB9LA0KKw0KKyAgICAvKiBUaGlz
IGxpdmVzIGluIFB5dGhvbi9QeXRob24tYXN0LmMgKi8NCisgICAgeyJfYXN0IiwgaW5pdF9hc3R9
LA0KKw0KKyAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1
bGVfbmFtZXMgKi8NCisgICAgeyJfX21haW5fXyIsIE5VTEx9LA0KKyAgICB7Il9fYnVpbHRpbl9f
IiwgTlVMTH0sDQorICAgIHsic3lzIiwgTlVMTH0sDQorICAgIHsiZXhjZXB0aW9ucyIsIE5VTEx9
LA0KKw0KKyAgICAvKiBUaGlzIGxpdmVzIGluIGdjbW9kdWxlLmMgKi8NCisgICAgeyJnYyIsIGlu
aXRnY30sDQorDQorICAgIC8qIFRoaXMgbGl2ZXMgaW4gX3dhcm5pbmdzLmMgKi8NCisgICAgeyJf
d2FybmluZ3MiLCBfUHlXYXJuaW5nc19Jbml0fSwNCisNCisgICAgLyogU2VudGluZWwgKi8NCisg
ICAgezAsIDB9DQorfTsNCisNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmDQpk
aWZmIC0tZ2l0IGEvaW5jbHVkZS9weWNvbmZpZy5oIGIvaW5jbHVkZS9weWNvbmZpZy5oDQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uOWFiZDE1OQ0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvaW5jbHVkZS9weWNvbmZpZy5oDQpAQCAtMCwwICsxLDEzMzAgQEANCisjaWZuZGVmIFB5
X1BZQ09ORklHX0gNCisjZGVmaW5lIFB5X1BZQ09ORklHX0gNCisNCisjaW5jbHVkZSA8dWsvY29u
ZmlnLmg+DQorDQorI2RlZmluZSBQUkVGSVggIi9saWIvcHl0aG9uLTIuNy4xNSINCisjZGVmaW5l
IEVYRUNfUFJFRklYICIvbGliL3B5dGhvbi0yLjcuMTUiDQorI2RlZmluZSBWRVJTSU9OICIyLjcu
MTUiDQorI2RlZmluZSBWUEFUSCAiIg0KKyNkZWZpbmUgUFlUSE9OUEFUSCAiL2xpYi9weXRob24t
Mi43LjE1Ig0KKyNkZWZpbmUgUFlUSE9OSE9NRSAiL2xpYi9weXRob24tMi43LjE1Ig0KKyNkZWZp
bmUgREVGQVVMVF9WRVJTDQorDQorLyogRGVmaW5lIGlmIGJ1aWxkaW5nIHVuaXZlcnNhbCAoaW50
ZXJuYWwgaGVscGVyIG1hY3JvKSAqLw0KKy8qICN1bmRlZiBBQ19BUFBMRV9VTklWRVJTQUxfQlVJ
TEQgKi8NCisNCisvKiBEZWZpbmUgZm9yIEFJWCBpZiB5b3VyIGNvbXBpbGVyIGlzIGEgZ2VudWlu
ZSBJQk0geGxDL3hsQ19yIGFuZCB5b3Ugd2FudA0KKyAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hh
cmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLw0KKy8qICN1bmRlZiBBSVhfR0VOVUlORV9DUExVU1BM
VVMgKi8NCisNCisvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBBdGhlT1MgdGhyZWFkcy4gKi8N
CisvKiAjdW5kZWYgQVRIRU9TX1RIUkVBRFMgKi8NCisNCisvKiBEZWZpbmUgdGhpcyBpZiB5b3Ug
aGF2ZSBCZU9TIHRocmVhZHMuICovDQorLyogI3VuZGVmIEJFT1NfVEhSRUFEUyAqLw0KKw0KKy8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlICovDQorLyogI3Vu
ZGVmIENfVEhSRUFEUyAqLw0KKw0KKy8qIERlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJ
RUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQgaW4gQVJNDQorICAgbWl4ZWQtZW5kaWFuIG9y
ZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLw0KKy8qICN1bmRlZiBET1VCTEVfSVNfQVJNX01J
WEVEX0VORElBTl9JRUVFNzU0ICovDQorDQorLyogRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQt
Yml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZCB3aXRoIHRoZSBtb3N0DQorICAgc2ln
bmlmaWNhbnQgYnl0ZSBmaXJzdCAqLw0KKy8qICN1bmRlZiBET1VCTEVfSVNfQklHX0VORElBTl9J
RUVFNzU0ICovDQorDQorLyogRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0
IGJpbmFyeSBmb3JtYXQsIHN0b3JlZCB3aXRoIHRoZQ0KKyAgIGxlYXN0IHNpZ25pZmljYW50IGJ5
dGUgZmlyc3QgKi8NCisjZGVmaW5lIERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQgMQ0K
Kw0KKy8qIERlZmluZSBpZiAtLWVuYWJsZS1pcHY2IGlzIHNwZWNpZmllZCAqLw0KKy8qICNkZWZp
bmUgRU5BQkxFX0lQVjYgMSAqLw0KKw0KKy8qIERlZmluZSBpZiBmbG9jayBuZWVkcyB0byBiZSBs
aW5rZWQgd2l0aCBic2QgbGlicmFyeS4gKi8NCisvKiAjdW5kZWYgRkxPQ0tfTkVFRFNfTElCQlNE
ICovDQorDQorLyogRGVmaW5lIGlmIGdldHBncnAoKSBtdXN0IGJlIGNhbGxlZCBhcyBnZXRwZ3Jw
KDApLiAqLw0KKy8qICN1bmRlZiBHRVRQR1JQX0hBVkVfQVJHICovDQorDQorLyogRGVmaW5lIGlm
IGdldHRpbWVvZmRheSgpIGRvZXMgbm90IGhhdmUgc2Vjb25kICh0aW1lem9uZSkgYXJndW1lbnQg
VGhpcyBpcw0KKyAgIHRoZSBjYXNlIG9uIE1vdG9yb2xhIFY0IChSNDBWNC4yKSAqLw0KKy8qICN1
bmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFogKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYGFjb3NoJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfQUNPU0ggMQ0KKw0KKy8q
IHN0cnVjdCBhZGRyaW5mbyAobmV0ZGIuaCkgKi8NCisgI2RlZmluZSBIQVZFX0FERFJJTkZPIDEg
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBhbGFybScgZnVuY3Rpb24uICov
DQorI2RlZmluZSBIQVZFX0FMQVJNIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgPGFsbG9jYS5oPiBoZWFkZXIgZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfQUxMT0NBX0ggMQ0K
Kw0KKy8qIERlZmluZSB0aGlzIGlmIHlvdXIgdGltZS5oIGRlZmluZXMgYWx0em9uZS4gKi8NCisv
KiAjdW5kZWYgSEFWRV9BTFRaT05FICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBhc2luaCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0FTSU5IIDENCisNCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFzbS90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8N
CisjZGVmaW5lIEhBVkVfQVNNX1RZUEVTX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgYXRhbmgnIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9BVEFOSCAxDQorDQor
LyogRGVmaW5lIGlmIEdDQyBzdXBwb3J0cyBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoUHlBcmdfUGFy
c2VUdXBsZSwgMiwgMykpKSAqLw0KKy8qICN1bmRlZiBIQVZFX0FUVFJJQlVURV9GT1JNQVRfUEFS
U0VUVVBMRSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmluZF90ZXh0
ZG9tYWluX2NvZGVzZXQnIGZ1bmN0aW9uLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9CSU5EX1RFWFRE
T01BSU5fQ09ERVNFVCAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxi
bHVldG9vdGgvYmx1ZXRvb3RoLmg+IGhlYWRlciBmaWxlLiAqLw0KKy8qICN1bmRlZiBIQVZFX0JM
VUVUT09USF9CTFVFVE9PVEhfSCAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSA8Ymx1ZXRvb3RoLmg+IGhlYWRlciBmaWxlLiAqLw0KKy8qICN1bmRlZiBIQVZFX0JMVUVUT09U
SF9IICovDQorDQorLyogRGVmaW5lIGlmIG5pY2UoKSByZXR1cm5zIHN1Y2Nlc3MvZmFpbHVyZSBp
bnN0ZWFkIG9mIHRoZSBuZXcgcHJpb3JpdHkuICovDQorLyogI3VuZGVmIEhBVkVfQlJPS0VOX05J
Q0UgKi8NCisNCisvKiBEZWZpbmUgaWYgdGhlIHN5c3RlbSByZXBvcnRzIGFuIGludmFsaWQgUElQ
RV9CVUYgdmFsdWUuICovDQorLyogI3VuZGVmIEhBVkVfQlJPS0VOX1BJUEVfQlVGICovDQorDQor
LyogRGVmaW5lIGlmIHBvbGwoKSBzZXRzIGVycm5vIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9y
cy4gKi8NCisvKiAjdW5kZWYgSEFWRV9CUk9LRU5fUE9MTCAqLw0KKw0KKy8qIERlZmluZSBpZiB0
aGUgUG9zaXggc2VtYXBob3JlcyBkbyBub3Qgd29yayBvbiB5b3VyIHN5c3RlbSAqLw0KKy8qICN1
bmRlZiBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTICovDQorDQorLyogRGVmaW5lIGlmIHB0
aHJlYWRfc2lnbWFzaygpIGRvZXMgbm90IHdvcmsgb24geW91ciBzeXN0ZW0uICovDQorLyogI3Vu
ZGVmIEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSyAqLw0KKw0KKy8qIGRlZmluZSB0byAxIGlm
IHlvdXIgc2VtX2dldHZhbHVlIGlzIGJyb2tlbi4gKi8NCisjZGVmaW5lIEhBVkVfQlJPS0VOX1NF
TV9HRVRWQUxVRSAxDQorDQorLyogRGVmaW5lIGlmIGB1bnNldGVudmAgZG9lcyBub3QgcmV0dXJu
IGFuIGludC4gKi8NCisvKiAjdW5kZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYgKi8NCisNCisvKiBE
ZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBfQm9vbC4gKi8NCisjZGVmaW5lIEhBVkVf
Qzk5X0JPT0wgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAnY2hmbGFncycg
ZnVuY3Rpb24uICovDQorLyogI3VuZGVmIEhBVkVfQ0hGTEFHUyAqLw0KKw0KKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgY2hvd24nIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9D
SE9XTiAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnY2hyb290JyBmdW5jdGlvbi4g
Ki8NCisvLyNkZWZpbmUgSEFWRV9DSFJPT1QgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgY2xvY2snIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9DTE9DSyAxDQorDQor
LyogRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLiAqLw0K
KyNkZWZpbmUgSEFWRV9DT01QVVRFRF9HT1RPUyAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBjb25mc3RyJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfQ09ORlNUUiAx
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjb25pby5oPiBoZWFkZXIgZmls
ZS4gKi8NCisvKiAjdW5kZWYgSEFWRV9DT05JT19IICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGBjb3B5c2lnbicgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0NPUFlT
SUdOIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNyeXB0Lmg+IGhlYWRl
ciBmaWxlLiAqLw0KKy8qIGRlZmluZSBIQVZFX0NSWVBUX0ggMSAqLw0KKw0KKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgY3Rlcm1pZCcgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBI
QVZFX0NURVJNSUQgMSAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2N0ZXJtaWRf
cicgZnVuY3Rpb24uICovDQorLyogI3VuZGVmIEhBVkVfQ1RFUk1JRF9SICovDQorDQorLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSAnZmlsdGVyJyBmdW5jdGlvbi4gKi8NCisvLyNkZWZpbmUgSEFW
RV9DVVJTRVNfRklMVEVSIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGN1
cnNlcy5oPiBoZWFkZXIgZmlsZS4gKi8NCisvKiAjZGVmaW5lIEhBVkVfQ1VSU0VTX0ggMSAqLw0K
Kw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2hhc19rZXknIGZ1bmN0aW9uLiAqLw0KKy8q
ICNkZWZpbmUgSEFWRV9DVVJTRVNfSEFTX0tFWSAxICovDQorDQorLyogRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSAnaW1tZWRvaycgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0NVUlNFU19J
TU1FRE9LIDEgKi8NCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpc19wYWQnIGZ1bmN0
aW9uIG9yIG1hY3JvLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9DVVJTRVNfSVNfUEFEIDEgKi8NCisN
CisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpc190ZXJtX3Jlc2l6ZWQnIGZ1bmN0aW9uLiAq
Lw0KKy8qICNkZWZpbmUgSEFWRV9DVVJTRVNfSVNfVEVSTV9SRVNJWkVEIDEgKi8NCisNCisvKiBE
ZWZpbmUgaWYgeW91IGhhdmUgdGhlICdyZXNpemV0ZXJtJyBmdW5jdGlvbi4gKi8NCisvKiAjZGVm
aW5lIEhBVkVfQ1VSU0VTX1JFU0laRVRFUk0gMSAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgJ3Jlc2l6ZV90ZXJtJyBmdW5jdGlvbi4gKi8NCisvKiAjZGVmaW5lIEhBVkVfQ1VSU0VT
X1JFU0laRV9URVJNIDEgKi8NCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzeW5jb2sn
IGZ1bmN0aW9uLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9DVVJTRVNfU1lOQ09LIDEgOGkgKi8NCisN
CisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd0eXBlYWhlYWQnIGZ1bmN0aW9uLiAqLw0KKy8q
ICNkZWZpbmUgSEFWRV9DVVJTRVNfVFlQRUFIRUFEIDEgKi8NCisNCisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgdGhlICd1c2VfZW52JyBmdW5jdGlvbi4gKi8NCisvKiAjZGVmaW5lIEhBVkVfQ1VSU0VT
X1VTRV9FTlYgMSAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3djaGdhdCcgZnVu
Y3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0NVUlNFU19XQ0hHQVQgMSAqLw0KKw0KKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgaXNmaW5pdGUnLCBhbmQg
dG8gMCBpZiB5b3UNCisgICBkb24ndC4gKi8NCisjZGVmaW5lIEhBVkVfREVDTF9JU0ZJTklURSAx
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBpc2lu
ZicsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4NCisgICAqLw0KKyNkZWZpbmUgSEFWRV9ERUNMX0lT
SU5GIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2Yg
YGlzbmFuJywgYW5kIHRvIDAgaWYgeW91IGRvbid0Lg0KKyAgICovDQorI2RlZmluZSBIQVZFX0RF
Q0xfSVNOQU4gMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlv
biBvZiBgdHpuYW1lJywgYW5kIHRvIDAgaWYgeW91IGRvbid0Lg0KKyAgICovDQorLyogI3VuZGVm
IEhBVkVfREVDTF9UWk5BTUUgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
ZGV2aWNlIG1hY3Jvcy4gKi8NCisjZGVmaW5lIEhBVkVfREVWSUNFX01BQ1JPUyAxDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIC9kZXYvcHRjIGRldmljZSBmaWxlLiAqLw0KKy8q
ICN1bmRlZiBIQVZFX0RFVl9QVEMgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgL2Rldi9wdG14IGRldmljZSBmaWxlLiAqLw0KKyNkZWZpbmUgSEFWRV9ERVZfUFRNWCAxDQor
DQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlY3QuaD4gaGVhZGVyIGZpbGUu
ICovDQorLyogI3VuZGVmIEhBVkVfRElSRUNUX0ggKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicu
Ki8NCisjZGVmaW5lIEhBVkVfRElSRU5UX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovDQorLy8jZGVmaW5lIEhBVkVfRExGQ05f
SCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbG9wZW4nIGZ1bmN0aW9u
LiAqLw0KKy8vI2RlZmluZSBIQVZFX0RMT1BFTiAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBkdXAyJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfRFVQMiAxDQorDQor
LyogRGVmaW5lZCB3aGVuIGFueSBkeW5hbWljIG1vZHVsZSBsb2FkaW5nIGlzIGVuYWJsZWQuICov
DQorIC8vI2RlZmluZSBIQVZFX0RZTkFNSUNfTE9BRElORyAxDQorDQorLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSAnZXBvbGwnIGZ1bmN0aW9ucy4gKi8NCisvLyNkZWZpbmUgSEFWRV9FUE9MTCAx
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBlcmYnIGZ1bmN0aW9uLiAqLw0K
KyNkZWZpbmUgSEFWRV9FUkYgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
ZXJmYycgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0VSRkMgMQ0KKw0KKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXJybm8uaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBI
QVZFX0VSUk5PX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXhlY3Yn
IGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9FWEVDViAxDQorDQorLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBleHBtMScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0VYUE0x
IDENCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdmY2hkaXInIGZ1bmN0aW9uLiAqLw0K
KyNkZWZpbmUgSEFWRV9GQ0hESVIgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgZmNobW9kJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfRkNITU9EIDENCisNCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG93bicgZnVuY3Rpb24uICovDQorI2RlZmlu
ZSBIQVZFX0ZDSE9XTiAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250
bC5oPiBoZWFkZXIgZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfRkNOVExfSCAxDQorDQorLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSAnZmRhdGFzeW5jJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhB
VkVfRkRBVEFTWU5DIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZpbml0
ZScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0ZJTklURSAxDQorDQorLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBmbG9jaycgZnVuY3Rpb24uICovDQorLy8jZGVmaW5lIEhBVkVf
RkxPQ0sgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZm9yaycgZnVuY3Rp
b24uICovDQorI2RlZmluZSBIQVZFX0ZPUksgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgZm9ya3B0eScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0ZPUktQVFkgMQ0K
Kw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnBhdGhjb25mJyBmdW5jdGlvbi4g
Ki8NCisjZGVmaW5lIEhBVkVfRlBBVEhDT05GIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgYGZzZWVrNjQnIGZ1bmN0aW9uLiAqLw0KKy8qICN1bmRlZiBIQVZFX0ZTRUVLNjQg
Ki8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZzZWVrbycgZnVuY3Rpb24u
ICovDQorI2RlZmluZSBIQVZFX0ZTRUVLTyAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBmc3RhdHZmcycgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0ZTVEFUVkZTIDEN
CisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdmc3luYycgZnVuY3Rpb24uICovDQorI2Rl
ZmluZSBIQVZFX0ZTWU5DIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ0
ZWxsNjQnIGZ1bmN0aW9uLiAqLw0KKy8qICN1bmRlZiBIQVZFX0ZURUxMNjQgKi8NCisNCisvKiBE
ZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ0ZWxsbycgZnVuY3Rpb24uICovDQorI2RlZmlu
ZSBIQVZFX0ZURUxMTyAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdGlt
ZScgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0ZUSU1FIDEgKi8NCisNCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ0cnVuY2F0ZScgZnVuY3Rpb24uICovDQorLy8jZGVm
aW5lIEhBVkVfRlRSVU5DQVRFIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YGdhaV9zdHJlcnJvcicgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0dBSV9TVFJFUlJPUiAx
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICov
DQorI2RlZmluZSBIQVZFX0dBTU1BIDENCisNCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2Mg
aW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCB4ODcgY29udHJvbCB3b3JkDQorICAgKi8N
CisjZGVmaW5lIEhBVkVfR0NDX0FTTV9GT1JfWDg3IDENCisNCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIGdldGFkZHJpbmZvIGZ1bmN0aW9uLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9HRVRBRERS
SU5GTyAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRjd2QnIGZ1
bmN0aW9uLiAqLw0KKyAjZGVmaW5lIEhBVkVfR0VUQ1dEIDEgDQorDQorLyogRGVmaW5lIHRoaXMg
aWYgeW91IGhhdmUgZmxvY2tmaWxlKCksIGdldGNfdW5sb2NrZWQoKSwgYW5kIGZ1bmxvY2tmaWxl
KCkgKi8NCisvLyNkZWZpbmUgSEFWRV9HRVRDX1VOTE9DS0VEIDENCisNCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYGdldGVudHJvcHknIGZ1bmN0aW9uLiAqLw0KKy8qICN1bmRlZiBI
QVZFX0dFVEVOVFJPUFkgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdl
dGdyb3VwcycgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0dFVEdST1VQUyAxDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBmdW5jdGlvbi4gKi8N
CisvKiAjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FICovDQorDQorLyogRGVmaW5lIHRoaXMgaWYg
eW91IGhhdmUgc29tZSB2ZXJzaW9uIG9mIGdldGhvc3RieW5hbWVfcigpICovDQorLyogI2RlZmlu
ZSBIQVZFX0dFVEhPU1RCWU5BTUVfUiAxICovDQorDQorLyogRGVmaW5lIHRoaXMgaWYgeW91IGhh
dmUgdGhlIDMtYXJnIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCkuICovDQorLyogI3VuZGVm
IEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHICovDQorDQorLyogRGVmaW5lIHRoaXMgaWYgeW91
IGhhdmUgdGhlIDUtYXJnIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCkuICovDQorLyogI3Vu
ZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHICovDQorDQorLyogRGVmaW5lIHRoaXMgaWYg
eW91IGhhdmUgdGhlIDYtYXJnIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCkuICovDQorLyog
I2RlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRyAxICovDQorDQorLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBnZXRpdGltZXInIGZ1bmN0aW9uLiAqLw0KKy8qI2RlZmluZSBI
QVZFX0dFVElUSU1FUiAxKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdl
dGxvYWRhdmcnIGZ1bmN0aW9uLiAqLw0KKy8qI2RlZmluZSBIQVZFX0dFVExPQURBVkcgMSovDQor
DQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRsb2dpbicgZnVuY3Rpb24uICov
DQorLyogI2RlZmluZSBIQVZFX0dFVExPR0lOIDEqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgZ2V0bmFtZWluZm8nIGZ1bmN0aW9uLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9H
RVROQU1FSU5GTyAxICovDQorLy8vLw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2dldHBh
Z2VzaXplJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfR0VUUEFHRVNJWkUgMQ0KKw0KKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGVlcm5hbWUnIGZ1bmN0aW9uLiAqLw0K
KyNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRSAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBnZXRwZ2lkJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfR0VUUEdJRCAxDQor
DQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwZ3JwJyBmdW5jdGlvbi4gKi8N
CisvLyNkZWZpbmUgSEFWRV9HRVRQR1JQIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYGdldHBpZCcgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0dFVFBJRCAxICov
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwcmlvcml0eScgZnVuY3Rp
b24uICovDQorLyogI2RlZmluZSBIQVZFX0dFVFBSSU9SSVRZIDEgKi8NCisNCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3ZW50JyBmdW5jdGlvbi4gKi8NCisvKiAjZGVmaW5l
IEhBVkVfR0VUUFdFTlQgMSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
Z2V0cmVzZ2lkJyBmdW5jdGlvbi4gKi8NCisvKiAjZGVmaW5lIEhBVkVfR0VUUkVTR0lEIDEgKi8N
CisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHJlc3VpZCcgZnVuY3Rpb24u
ICovDQorI2RlZmluZSBIQVZFX0dFVFJFU1VJRCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBnZXRzaWQnIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9HRVRTSUQgMQ0K
Kw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0c3BlbnQnIGZ1bmN0aW9uLiAq
Lw0KKyNkZWZpbmUgSEFWRV9HRVRTUEVOVCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBnZXRzcG5hbScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0dFVFNQTkFNIDEN
CisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHRpbWVvZmRheScgZnVuY3Rp
b24uICovDQorI2RlZmluZSBIQVZFX0dFVFRJTUVPRkRBWSAxDQorDQorLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBnZXR3ZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX0dFVFdE
IDEgDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxncnAuaD4gaGVhZGVyIGZp
bGUuICovDQorLyogI2RlZmluZSBIQVZFX0dSUF9IIDEgKi8NCisNCisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgdGhlICdoc3RyZXJyb3InIGZ1bmN0aW9uLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9IU1RS
RVJST1IgMSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaHlwb3QnIGZ1
bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9IWVBPVCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIDxpZWVlZnAuaD4gaGVhZGVyIGZpbGUuICovDQorLyogI3VuZGVmIEhBVkVf
SUVFRUZQX0ggKi8NCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpbmV0X2F0b24nIGZ1
bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9JTkVUX0FUT04gMQ0KKw0KKy8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgJ2luZXRfcHRvbicgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0lO
RVRfUFRPTiAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbml0Z3Jv
dXBzJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfSU5JVEdST1VQUyAxDQorDQorLyogRGVm
aW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC4gKi8NCisjZGVmaW5lIEhBVkVf
SU5UMzJfVCAxDQorDQorLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50NjRf
dC4gKi8NCisjZGVmaW5lIEhBVkVfSU5UNjRfVCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfSU5U
VFlQRVNfSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpby5oPiBoZWFk
ZXIgZmlsZS4gKi8NCisvKiAjdW5kZWYgSEFWRV9JT19IICovDQorDQorLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIGBraWxsJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfS0lMTCAx
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBraWxscGcnIGZ1bmN0aW9uLiAq
Lw0KKyNkZWZpbmUgSEFWRV9LSUxMUEcgMQ0KKw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg
J2txdWV1ZScgZnVuY3Rpb25zLiAqLw0KKy8qICN1bmRlZiBIQVZFX0tRVUVVRSAqLw0KKw0KKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGFuZ2luZm8uaD4gaGVhZGVyIGZpbGUuICov
DQorI2RlZmluZSBIQVZFX0xBTkdJTkZPX0ggMQ0KKw0KKy8qIERlZmluZWQgdG8gZW5hYmxlIGxh
cmdlIGZpbGUgc3VwcG9ydCB3aGVuIGFuIG9mZl90IGlzIGJpZ2dlciB0aGFuIGEgbG9uZw0KKyAg
IGFuZCBsb25nIGxvbmcgaXMgYXZhaWxhYmxlIGFuZCBhdCBsZWFzdCBhcyBiaWcgYXMgYW4gb2Zm
X3QuIFlvdSBtYXkgbmVlZCB0bw0KKyAgIGFkZCBzb21lIGZsYWdzIGZvciBjb25maWd1cmF0aW9u
IGFuZCBjb21waWxhdGlvbiB0byBlbmFibGUgdGhpcyBtb2RlLiAoRm9yDQorICAgU29sYXJpcyBh
bmQgTGludXgsIHRoZSBuZWNlc3NhcnkgZGVmaW5lcyBhcmUgYWxyZWFkeSBkZWZpbmVkLikgKi8N
CisvKiAjdW5kZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCAqLw0KKw0KKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSAnbGNoZmxhZ3MnIGZ1bmN0aW9uLiAqLw0KKy8qICN1bmRlZiBIQVZF
X0xDSEZMQUdTICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsY2htb2Qn
IGZ1bmN0aW9uLiAqLw0KKy8qICN1bmRlZiBIQVZFX0xDSE1PRCAqLw0KKw0KKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSBgbGNob3duJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVf
TENIT1dOIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxnYW1tYScgZnVu
Y3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0xHQU1NQSAxICovDQorDQorLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBkbCcgbGlicmFyeSAoLWxkbCkuICovDQorLyogI2RlZmluZSBI
QVZFX0xJQkRMIDEgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRsZCcg
bGlicmFyeSAoLWxkbGQpLiAqLw0KKy8qICN1bmRlZiBIQVZFX0xJQkRMRCAqLw0KKw0KKy8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaWVlZScgbGlicmFyeSAoLWxpZWVlKS4gKi8NCisv
KiAjdW5kZWYgSEFWRV9MSUJJRUVFICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxsaWJpbnRsLmg+IGhlYWRlciBmaWxlLiAqLw0KKy8vI2RlZmluZSBIQVZFX0xJQklOVExf
SCAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSByZWFkbGluZSBsaWJyYXJ5ICgtbHJl
YWRsaW5lKS4gKi8NCisvLyNkZWZpbmUgSEFWRV9MSUJSRUFETElORSAxDQorDQorLyogRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZXNvbHYnIGxpYnJhcnkgKC1scmVzb2x2KS4gKi8NCisv
KiAjdW5kZWYgSEFWRV9MSUJSRVNPTFYgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPGxpYnV0aWwuaD4gaGVhZGVyIGZpbGUuICovDQorLyogI3VuZGVmIEhBVkVfTElCVVRJ
TF9IICovDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnbGluaycgZnVuY3Rpb24uICov
DQorLyogI2RlZmluZSBIQVZFX0xJTksgMSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8bGludXgvbmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8NCisvKiAjZGVmaW5lIEhB
VkVfTElOVVhfTkVUTElOS19IIDEgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgPGxpbnV4L3RpcGMuaD4gaGVhZGVyIGZpbGUuICovDQorLyogI2RlZmluZSBIQVZFX0xJTlVY
X1RJUENfSCAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2cxcCcg
ZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX0xPRzFQIDEgKi8NCisNCisvKiBEZWZpbmUg
dGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBsb25nIGRvdWJsZS4gKi8NCisjZGVmaW5lIEhBVkVf
TE9OR19ET1VCTEUgMQ0KKw0KKy8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxv
bmcgbG9uZy4gKi8NCisjZGVmaW5lIEhBVkVfTE9OR19MT05HIDENCisNCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8NCisgLyojZGVmaW5lIEhBVkVf
TFNUQVQgMSovIC8vIFRPRE8gYWRkIGZyb20gZ2x1ZWNvZGUgaW4gbmV3bGliDQorDQorLyogRGVm
aW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uICovDQorI2RlZmluZSBIQVZF
X01BS0VERVYgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScg
ZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX01FTU1PVkUgMQ0KKw0KKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAqLw0KKy8qICNkZWZpbmUg
SEFWRV9NRU1PUllfSCAxKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1r
ZmlmbycgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBIQVZFX01LRklGTyAxICovDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta25vZCcgZnVuY3Rpb24uICovDQorI2RlZmlu
ZSBIQVZFX01LTk9EIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rdGlt
ZScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX01LVElNRSAxDQorDQorLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8NCisvKiAjZGVmaW5lIEhBVkVf
TU1BUCAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtcmVtYXAnIGZ1
bmN0aW9uLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9NUkVNQVAgMSAqLw0KKw0KKy8qIERlZmluZSB0
byAxIGlmIHlvdSBoYXZlIHRoZSA8bmN1cnNlcy5oPiBoZWFkZXIgZmlsZS4gKi8NCisvKiAjZGVm
aW5lIEhBVkVfTkNVUlNFU19IIDEgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgPG5kaXIuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLiAqLw0KKy8qICN1
bmRlZiBIQVZFX05ESVJfSCAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8
bmV0cGFja2V0L3BhY2tldC5oPiBoZWFkZXIgZmlsZS4gKi8NCisvKiAjZGVmaW5lIEhBVkVfTkVU
UEFDS0VUX1BBQ0tFVF9IIDEgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YG5pY2UnIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9OSUNFIDENCisNCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5wdHknIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFW
RV9PUEVOUFRZIDENCisNCisvKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAu
NSBTREsgb3IgbGF0ZXIuICovDQorLyogI3VuZGVmIEhBVkVfT1NYMTA1X1NESyAqLw0KKw0KKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLw0KKyNk
ZWZpbmUgSEFWRV9QQVRIQ09ORiAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGBwYXVzZScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1BBVVNFIDENCisNCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBsb2NrJyBmdW5jdGlvbi4gKi8NCisvKiAjdW5kZWYg
SEFWRV9QTE9DSyAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcG9sbCcg
ZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1BPTEwgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSA8cG9sbC5oPiBoZWFkZXIgZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfUE9M
TF9IIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nlc3MuaD4gaGVh
ZGVyIGZpbGUuICovDQorLyogI3VuZGVmIEhBVkVfUFJPQ0VTU19IICovDQorDQorLyogRGVmaW5l
IGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgZnVuY3Rpb24gcHJvdG90eXBlICovDQorI2RlZmlu
ZSBIQVZFX1BST1RPVFlQRVMgMQ0KKw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBHTlUgUFRIIHRo
cmVhZHMuICovDQorLyogI2RlZmluZSBIQVZFX1BUSCAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSBgcHRocmVhZF9hdGZvcmsnIGZ1bmN0aW9uLiAqLw0KKy8qICN1bmRlZiBI
QVZFX1BUSFJFQURfQVRGT1JLICovDQorDQorLyogRGVmaW5lZCBmb3IgU29sYXJpcyAyLjYgYnVn
IGluIHB0aHJlYWQgaGVhZGVyLiAqLw0KKy8qICN1bmRlZiBIQVZFX1BUSFJFQURfREVTVFJVQ1RP
UiAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cHRocmVhZC5oPiBoZWFk
ZXIgZmlsZS4gKi8NCisjaWZkZWYgQ09ORklHX1BZVEhPTl9USFJFQURTDQorCSNkZWZpbmUgSEFW
RV9QVEhSRUFEX0ggMQ0KKyNlbmRpZg0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgcHRocmVhZF9pbml0JyBmdW5jdGlvbi4gKi8NCisvKiAjdW5kZWYgSEFWRV9QVEhSRUFEX0lO
SVQgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfc2lnbWFz
aycgZnVuY3Rpb24uICovDQorLyogI3VuZGVmIEhBVkVfUFRIUkVBRF9TSUdNQVNLICovDQorDQor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwdHkuaD4gaGVhZGVyIGZpbGUuICovDQor
I2RlZmluZSBIQVZFX1BUWV9IIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHB1dGVudicgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1BVVEVOViAxDQorDQorLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkbGluaycgZnVuY3Rpb24uICovDQorLy8vLyNk
ZWZpbmUgSEFWRV9SRUFETElOSyAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IGByZWFscGF0aCcgZnVuY3Rpb24uICovDQorLyojZGVmaW5lIEhBVkVfUkVBTFBBVEggMSAqLw0K
Kw0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSByZWFkbGluZSAyLjEgKi8NCisvLyNkZWZpbmUgSEFW
RV9STF9DQUxMQkFDSyAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBjYW4gdHVybiBvZmYgcmVhZGxp
bmUncyBzaWduYWwgaGFuZGxpbmcuICovDQorLy8jZGVmaW5lIEhBVkVfUkxfQ0FUQ0hfU0lHTkFM
IDENCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4yICovDQorLy8jZGVmaW5l
IEhBVkVfUkxfQ09NUExFVElPTl9BUFBFTkRfQ0hBUkFDVEVSIDENCisNCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgcmVhZGxpbmUgNC4wICovDQorLy8jZGVmaW5lIEhBVkVfUkxfQ09NUExFVElPTl9E
SVNQTEFZX01BVENIRVNfSE9PSyAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHJlYWRsaW5l
IDQuMiAqLw0KKy8vI2RlZmluZSBIQVZFX1JMX0NPTVBMRVRJT05fTUFUQ0hFUyAxDQorDQorLyog
RGVmaW5lIGlmIHlvdSBoYXZlIHJsX2NvbXBsZXRpb25fc3VwcHJlc3NfYXBwZW5kICovDQorLy8j
ZGVmaW5lIEhBVkVfUkxfQ09NUExFVElPTl9TVVBQUkVTU19BUFBFTkQgMQ0KKw0KKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSByZWFkbGluZSA0LjAgKi8NCisvLyNkZWZpbmUgSEFWRV9STF9QUkVfSU5Q
VVRfSE9PSyAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHJlYWRsaW5lIDQuMCAqLw0KKy8v
I2RlZmluZSBIQVZFX1JMX1JFU0laRV9URVJNSU5BTCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIGByb3VuZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1JPVU5EIDEN
CisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbGVjdCcgZnVuY3Rpb24uICov
DQorLy8jZGVmaW5lIEhBVkVfU0VMRUNUIDEgVE9ETzogbHdpcA0KKw0KKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgc2VtX2dldHZhbHVlJyBmdW5jdGlvbi4gKi8NCisvKiAjdW5kZWYg
SEFWRV9TRU1fR0VUVkFMVUUgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHNlbV9vcGVuJyBmdW5jdGlvbi4gKi8NCisvKiAjdW5kZWYgSEFWRV9TRU1fT1BFTiAqLw0KKw0K
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VtX3RpbWVkd2FpdCcgZnVuY3Rpb24u
ICovDQorLyogI3VuZGVmIEhBVkVfU0VNX1RJTUVEV0FJVCAqLw0KKw0KKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgc2VtX3VubGluaycgZnVuY3Rpb24uICovDQorLyogI3VuZGVmIEhB
VkVfU0VNX1VOTElOSyAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0
ZWdpZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1NFVEVHSUQgMQ0KKw0KKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0ZXVpZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBI
QVZFX1NFVEVVSUQgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0Z2lk
JyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfU0VUR0lEIDENCisNCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlICdzZXRncm91cHMnIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9TRVRH
Uk9VUFMgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0aXRpbWVyJyBm
dW5jdGlvbi4gKi8NCisvKiAjZGVmaW5lIEhBVkVfU0VUSVRJTUVSIDEgKi8NCisNCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24uICovDQorI2RlZmlu
ZSBIQVZFX1NFVExPQ0FMRSAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBz
ZXRwZ2lkJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfU0VUUEdJRCAxDQorDQorLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwZ3JwJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5l
IEhBVkVfU0VUUEdSUCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRy
ZWdpZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1NFVFJFR0lEIDENCisNCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHJlc2dpZCcgZnVuY3Rpb24uICovDQorLy8jZGVm
aW5lIEhBVkVfU0VUUkVTR0lEIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg
YHNldHJlc3VpZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1NFVFJFU1VJRCAxDQorDQor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRyZXVpZCcgZnVuY3Rpb24uICovDQor
I2RlZmluZSBIQVZFX1NFVFJFVUlEIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0
aGUgYHNldHNpZCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1NFVFNJRCAxDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXR1aWQnIGZ1bmN0aW9uLiAqLw0KKyNkZWZp
bmUgSEFWRV9TRVRVSUQgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0
dmJ1ZicgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1NFVFZCVUYgMQ0KKw0KKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2hhZG93Lmg+IGhlYWRlciBmaWxlLiAqLw0KKyNkZWZp
bmUgSEFWRV9TSEFET1dfSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBz
aWdhY3Rpb24nIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9TSUdBQ1RJT04gMQ0KKw0KKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnaW50ZXJydXB0JyBmdW5jdGlvbi4gKi8N
CisjZGVmaW5lIEhBVkVfU0lHSU5URVJSVVBUIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8NCisjaWZkZWYgQ09ORklHX1BZVEhP
Tl9TSUdOQUxTDQorI2RlZmluZSBIQVZFX1NJR05BTF9IIDENCisjZW5kaWYNCisNCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3JlbHNlJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5l
IEhBVkVfU0lHUkVMU0UgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc25w
cmludGYnIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9TTlBSSU5URiAxDQorDQorLyogRGVm
aW5lIGlmIHNvY2thZGRyIGhhcyBzYV9sZW4gbWVtYmVyICovDQorLyogI3VuZGVmIEhBVkVfU09D
S0FERFJfU0FfTEVOICovDQorDQorLyogc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2Nr
ZXQuaCkgKi8NCisgI2RlZmluZSBIQVZFX1NPQ0tBRERSX1NUT1JBR0UgDQorDQorLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSAnc29ja2V0cGFpcicgZnVuY3Rpb24uICovDQorLyogI2RlZmluZSBI
QVZFX1NPQ0tFVFBBSVIgMSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8
c3Bhd24uaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZFX1NQQVdOX0ggMQ0KKw0KKy8q
IERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHNzaXplX3QgKi8NCisjZGVmaW5lIEhB
VkVfU1NJWkVfVCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdGF0dmZz
JyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfU1RBVFZGUyAxDQorDQorLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW0udHZfbnNlYyAqLw0KKy8vI2RlZmluZSBIQVZF
X1NUQVRfVFZfTlNFQyAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0
X210aW1lbnNlYyAqLw0KKy8qICN1bmRlZiBIQVZFX1NUQVRfVFZfTlNFQzIgKi8NCisNCisvKiBE
ZWZpbmUgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyB2YXJpYWJsZSBsZW5ndGggZnVuY3Rpb24g
cHJvdG90eXBlcyAoZS5nLg0KKyAgIHZvaWQgZnByaW50ZihGSUxFICosIGNoYXIgKiwgLi4uKTsp
ICphbmQqIDxzdGRhcmcuaD4gKi8NCisjZGVmaW5lIEhBVkVfU1REQVJHX1BST1RPVFlQRVMgMQ0K
Kw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxl
LiAqLw0KKyNkZWZpbmUgSEFWRV9TVERJTlRfSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZFX1NURExJ
Ql9IIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmR1cCcgZnVuY3Rp
b24uICovDQorI2RlZmluZSBIQVZFX1NUUkRVUCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIGBzdHJmdGltZScgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1NUUkZUSU1F
IDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVy
IGZpbGUuICovDQorI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxDQorDQorLyogRGVmaW5lIHRvIDEg
aWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZF
X1NUUklOR19IIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cm9wdHMu
aD4gaGVhZGVyIGZpbGUuICovDQorLyojZGVmaW5lIEhBVkVfU1RST1BUU19IIDEqLw0KKw0KKy8q
IERlZmluZSB0byAxIGlmIGBzdF9iaXJ0aHRpbWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3Rh
dCcuICovDQorLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQklSVEhUSU1FICovDQorDQor
LyogRGVmaW5lIHRvIDEgaWYgYHN0X2Jsa3NpemUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3Rh
dCcuICovDQorI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUgMQ0KKw0KKy8qIERl
ZmluZSB0byAxIGlmIGBzdF9ibG9ja3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICov
DQorI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMT0NLUyAxDQorDQorLyogRGVmaW5lIHRv
IDEgaWYgYHN0X2ZsYWdzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXQnLiAqLw0KKy8qICN1
bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZMQUdTICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYg
YHN0X2dlbicgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8NCisvKiAjdW5kZWYgSEFW
RV9TVFJVQ1RfU1RBVF9TVF9HRU4gKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiBgc3RfcmRldicg
aXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8NCisjZGVmaW5lIEhBVkVfU1RSVUNUX1NU
QVRfU1RfUkRFViAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgYHRtX3pvbmUnIGlzIGEgbWVtYmVy
IG9mIGBzdHJ1Y3QgdG0nLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAx
Ki8NCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzeW1saW5rJyBmdW5jdGlvbi4gKi8N
CisjZGVmaW5lIEhBVkVfU1lNTElOSyAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIGBzeXNjb25mJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfU1lTQ09ORiAxDQorDQor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXNleGl0cy5oPiBoZWFkZXIgZmlsZS4g
Ki8NCisjZGVmaW5lIEhBVkVfU1lTRVhJVFNfSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91
IGhhdmUgdGhlIDxzeXMvYXVkaW9pby5oPiBoZWFkZXIgZmlsZS4gKi8NCisgI3VuZGVmIEhBVkVf
U1lTX0FVRElPSU9fSCANCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9i
c2R0dHkuaD4gaGVhZGVyIGZpbGUuICovDQorLyogI3VuZGVmIEhBVkVfU1lTX0JTRFRUWV9IICov
DQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGlyLmg+IGhlYWRlciBm
aWxlLCBhbmQgaXQgZGVmaW5lcyBgRElSJy4NCisgICAqLw0KKyAjdW5kZWYgSEFWRV9TWVNfRElS
X0ggDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZXBvbGwuaD4gaGVh
ZGVyIGZpbGUuICovDQorLy8jZGVmaW5lIEhBVkVfU1lTX0VQT0xMX0ggMQ0KKw0KKy8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2V2ZW50Lmg+IGhlYWRlciBmaWxlLiAqLw0KKy8q
ICN1bmRlZiBIQVZFX1NZU19FVkVOVF9IICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzeXMvZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfU1lTX0ZJ
TEVfSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbG9hZGF2Zy5o
PiBoZWFkZXIgZmlsZS4gKi8NCisvKiAjdW5kZWYgSEFWRV9TWVNfTE9BREFWR19IICovDQorDQor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbG9jay5oPiBoZWFkZXIgZmlsZS4g
Ki8NCisvKiAjdW5kZWYgSEFWRV9TWVNfTE9DS19IICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIDxzeXMvbWtkZXYuaD4gaGVhZGVyIGZpbGUuICovDQorLyogI3VuZGVmIEhB
VkVfU1lTX01LREVWX0ggKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5
cy9tb2RlbS5oPiBoZWFkZXIgZmlsZS4gKi8NCisvKiAjdW5kZWYgSEFWRV9TWVNfTU9ERU1fSCAq
Lw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL25kaXIuaD4gaGVhZGVy
IGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLg0KKyAgICovDQorLyogI3VuZGVmIEhBVkVfU1lT
X05ESVJfSCAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFt
Lmg+IGhlYWRlciBmaWxlLiAqLw0KKyNkZWZpbmUgSEFWRV9TWVNfUEFSQU1fSCAxDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcG9sbC5oPiBoZWFkZXIgZmlsZS4gKi8N
CisvKiAjZGVmaW5lIEhBVkVfU1lTX1BPTExfSCAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIDxzeXMvcmFuZG9tLmg+IGhlYWRlciBmaWxlLiAqLw0KKyNkZWZpbmUgSEFW
RV9TWVNfUkFORE9NX0ggDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMv
cmVzb3VyY2UuaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZFX1NZU19SRVNPVVJDRV9I
IDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZWxlY3QuaD4gaGVh
ZGVyIGZpbGUuICovDQorLyogI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAxICovDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc29ja2V0Lmg+IGhlYWRlciBmaWxlLiAq
Lw0KKyNkZWZpbmUgSEFWRV9TWVNfU09DS0VUX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3lzL3N0YXR2ZnMuaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZF
X1NZU19TVEFUVkZTX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lz
L3N0YXQuaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQ0KKw0K
Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c21hY3Jvcy5oPiBoZWFkZXIg
ZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfU1lTX1NZU01BQ1JPU19IIDENCisNCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90ZXJtaW8uaD4gaGVhZGVyIGZpbGUuICovDQorLyog
I3VuZGVmIEhBVkVfU1lTX1RFUk1JT19IICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzeXMvdGltZXMuaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZFX1NZU19U
SU1FU19IIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lLmg+
IGhlYWRlciBmaWxlLiAqLw0KKyNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDENCisNCisvKiBEZWZp
bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8NCisj
ZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAqLw0KKy8qICNkZWZpbmUgSEFWRV9TWVNfVU5f
SCAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdXRzbmFtZS5o
PiBoZWFkZXIgZmlsZS4gKi8NCisjZGVmaW5lIEhBVkVfU1lTX1VUU05BTUVfSCAxDQorDQorLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gKi8N
CisjZGVmaW5lIEhBVkVfU1lTX1dBSVRfSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGB0Y2dldHBncnAnIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9UQ0dFVFBHUlAg
MQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGNzZXRwZ3JwJyBmdW5jdGlv
bi4gKi8NCisjZGVmaW5lIEhBVkVfVENTRVRQR1JQIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5
b3UgaGF2ZSB0aGUgYHRlbXBuYW0nIGZ1bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9URU1QTkFN
IDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHRlcm1pb3MuaD4gaGVhZGVy
IGZpbGUuICovDQorLy8jZGVmaW5lIEhBVkVfVEVSTUlPU19IIDENCisNCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgPHRlcm0uaD4gaGVhZGVyIGZpbGUuICovDQorI2RlZmluZSBIQVZF
X1RFUk1fSCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0Z2FtbWEnIGZ1
bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9UR0FNTUEgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlm
IHlvdSBoYXZlIHRoZSA8dGhyZWFkLmg+IGhlYWRlciBmaWxlLiAqLw0KKy8qICNkZWZpbmUgSEFW
RV9USFJFQURfSCAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGltZWdt
JyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfVElNRUdNIDENCisNCisvKiBEZWZpbmUgdG8g
MSBpZiB5b3UgaGF2ZSB0aGUgYHRpbWVzJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfVElN
RVMgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdG1wZmlsZScgZnVuY3Rp
b24uICovDQorI2RlZmluZSBIQVZFX1RNUEZJTEUgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSBgdG1wbmFtJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfVE1QTkFNIDEN
CisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRtcG5hbV9yJyBmdW5jdGlvbi4g
Ki8NCisvKiAjZGVmaW5lIEhBVkVfVE1QTkFNX1IgMSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlm
IHlvdXIgYHN0cnVjdCB0bScgaGFzIGB0bV96b25lJy4gRGVwcmVjYXRlZCwgdXNlDQorICAgYEhB
VkVfU1RSVUNUX1RNX1RNX1pPTkUnIGluc3RlYWQuICovDQorLyogI2RlZmluZSBIQVZFX1RNX1pP
TkUgMSAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdHJ1bmNhdGUnIGZ1
bmN0aW9uLiAqLw0KKyNkZWZpbmUgSEFWRV9UUlVOQ0FURSAxDQorDQorLyogRGVmaW5lIHRvIDEg
aWYgeW91IGRvbid0IGhhdmUgYHRtX3pvbmUnIGJ1dCBkbyBoYXZlIHRoZSBleHRlcm5hbCBhcnJh
eQ0KKyAgIGB0em5hbWUnLiAqLw0KKy8qICN1bmRlZiBIQVZFX1RaTkFNRSAqLw0KKw0KKy8qIERl
ZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRjbCBhbmQgVENMX1VURl9NQVg9PTYgKi8NCisvKiAjdW5k
ZWYgSEFWRV9VQ1M0X1RDTCAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3Zp
ZGVzIHVpbnQzMl90LiAqLw0KKyNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxDQorDQorLyogRGVmaW5l
IGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuICovDQorI2RlZmluZSBIQVZFX1VJ
TlQ2NF9UIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBg
dWludHB0cl90Jy4gKi8NCisjZGVmaW5lIEhBVkVfVUlOVFBUUl9UIDENCisNCisvKiBEZWZpbmUg
dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuYW1lJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVf
VU5BTUUgMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhl
YWRlciBmaWxlLiAqLw0KKyNkZWZpbmUgSEFWRV9VTklTVERfSCAxDQorDQorLyogRGVmaW5lIHRv
IDEgaWYgeW91IGhhdmUgdGhlIGB1bnNldGVudicgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZF
X1VOU0VURU5WIDENCisNCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgYSB1c2VhYmxlIHdjaGFyX3Qg
dHlwZSBkZWZpbmVkIGluIHdjaGFyLmg7IHVzZWFibGUgbWVhbnMNCisgICB3Y2hhcl90IG11c3Qg
YmUgYW4gdW5zaWduZWQgdHlwZSB3aXRoIGF0IGxlYXN0IDE2IGJpdHMuIChzZWUNCisgICBJbmNs
dWRlL3VuaWNvZGVvYmplY3QuaCkuICovDQorI2RlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UDQor
DQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dGlsLmg+IGhlYWRlciBmaWxlLiAq
Lw0KKy8qICN1bmRlZiBIQVZFX1VUSUxfSCAqLw0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSBgdXRpbWVzJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfVVRJTUVTIDENCisN
CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHV0aW1lLmg+IGhlYWRlciBmaWxlLiAq
Lw0KKyNkZWZpbmUgSEFWRV9VVElNRV9IIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgYHdhaXQzJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfV0FJVDMgMQ0KKw0KKy8q
IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdDQnIGZ1bmN0aW9uLiAqLw0KKyNkZWZp
bmUgSEFWRV9XQUlUNCAxDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0
cGlkJyBmdW5jdGlvbi4gKi8NCisjZGVmaW5lIEhBVkVfV0FJVFBJRCAxDQorDQorLyogRGVmaW5l
IGlmIHRoZSBjb21waWxlciBwcm92aWRlcyBhIHdjaGFyLmggaGVhZGVyIGZpbGUuICovDQorI2Rl
ZmluZSBIQVZFX1dDSEFSX0ggMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg
d2NzY29sbCcgZnVuY3Rpb24uICovDQorI2RlZmluZSBIQVZFX1dDU0NPTEwgMQ0KKw0KKy8qIERl
ZmluZSBpZiB0enNldCgpIGFjdHVhbGx5IHN3aXRjaGVzIHRoZSBsb2NhbCB0aW1lem9uZSBpbiBh
IG1lYW5pbmdmdWwgd2F5Lg0KKyAgICovDQorI2RlZmluZSBIQVZFX1dPUktJTkdfVFpTRVQgMQ0K
Kw0KKy8qIERlZmluZSBpZiB0aGUgemxpYiBsaWJyYXJ5IGhhcyBpbmZsYXRlQ29weSAqLw0KKy8v
I2RlZmluZSBIQVZFX1pMSUJfQ09QWSAxDQorDQorDQorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIGBfZ2V0cHR5JyBmdW5jdGlvbi4gKi8NCisvKiAjdW5kZWYgSEFWRV9fR0VUUFRZICov
DQorDQorLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyBkaXJlY3RseSB1
bmRlciAvaW5jbHVkZSAqLw0KKy8qICN1bmRlZiBIVVJEX0NfVEhSRUFEUyAqLw0KKw0KKy8qIERl
ZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgdW5kZXIgbWFjaCAvICovDQorLyog
I3VuZGVmIE1BQ0hfQ19USFJFQURTICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgYG1ham9yJywg
YG1pbm9yJywgYW5kIGBtYWtlZGV2JyBhcmUgZGVjbGFyZWQgaW4gPG1rZGV2Lmg+Lg0KKyAgICov
DQorLyogI3VuZGVmIE1BSk9SX0lOX01LREVWICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgYG1h
am9yJywgYG1pbm9yJywgYW5kIGBtYWtlZGV2JyBhcmUgZGVjbGFyZWQgaW4NCisgICA8c3lzbWFj
cm9zLmg+LiAqLw0KKy8qICN1bmRlZiBNQUpPUl9JTl9TWVNNQUNST1MgKi8NCisNCisvKiBEZWZp
bmUgaWYgbXZ3ZGVsY2ggaW4gY3Vyc2VzLmggaXMgYW4gZXhwcmVzc2lvbi4gKi8NCisjZGVmaW5l
IE1WV0RFTENIX0lTX0VYUFJFU1NJT04gMQ0KKw0KKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3
aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLw0KKy8q
ICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVCAqLw0KKw0KKy8qIERlZmluZSB0byB0aGUgZnVsbCBu
YW1lIG9mIHRoaXMgcGFja2FnZS4gKi8NCisvKiAjdW5kZWYgUEFDS0FHRV9OQU1FICovDQorDQor
LyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAq
Lw0KKy8qICN1bmRlZiBQQUNLQUdFX1NUUklORyAqLw0KKw0KKy8qIERlZmluZSB0byB0aGUgb25l
IHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8NCisvKiAjdW5kZWYgUEFDS0FH
RV9UQVJOQU1FICovDQorDQorLyogRGVmaW5lIHRvIHRoZSBob21lIHBhZ2UgZm9yIHRoaXMgcGFj
a2FnZS4gKi8NCisvKiAjdW5kZWYgUEFDS0FHRV9VUkwgKi8NCisNCisvKiBEZWZpbmUgdG8gdGhl
IHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLw0KKy8qICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04g
Ki8NCisNCisvKiBEZWZpbmUgaWYgUE9TSVggc2VtYXBob3JlcyBhcmVuJ3QgZW5hYmxlZCBvbiB5
b3VyIHN5c3RlbSAqLw0KKyNkZWZpbmUgUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCAxDQor
DQorLyogRGVmaW5lZCBpZiBQVEhSRUFEX1NDT1BFX1NZU1RFTSBzdXBwb3J0ZWQuICovDQorLyog
I3VuZGVmIFBUSFJFQURfU1lTVEVNX1NDSEVEX1NVUFBPUlRFRCAqLw0KKw0KKy8qIERlZmluZSBh
cyB0aGUgcHJlZmVycmVkIHNpemUgaW4gYml0cyBvZiBsb25nIGRpZ2l0cyAqLw0KKy8qICN1bmRl
ZiBQWUxPTkdfQklUU19JTl9ESUdJVCAqLw0KKw0KKy8qIERlZmluZSB0byBwcmludGYgZm9ybWF0
IG1vZGlmaWVyIGZvciBsb25nIGxvbmcgdHlwZSAqLw0KKyNkZWZpbmUgUFlfRk9STUFUX0xPTkdf
TE9ORyAibGwiDQorDQorLyogRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIFB5
X3NzaXplX3QgKi8NCisjZGVmaW5lIFBZX0ZPUk1BVF9TSVpFX1QgInoiDQorDQorLyogRGVmaW5l
IGFzIHRoZSBpbnRlZ3JhbCB0eXBlIHVzZWQgZm9yIFVuaWNvZGUgcmVwcmVzZW50YXRpb24uICov
DQorI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgdW5zaWduZWQgc2hvcnQNCisNCisvKiBEZWZpbmUg
aWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW50ZXJwcmV0ZXIgd2l0aCBtYW55IHJ1bi10aW1lIGNo
ZWNrcy4gKi8NCisgI3VuZGVmIFB5X0RFQlVHIA0KKw0KKy8qIERlZmluZWQgaWYgUHl0aG9uIGlz
IGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnkuICovDQorLyogI3VuZGVmIFB5X0VOQUJMRV9TSEFS
RUQgKi8NCisNCisvKiBEZWZpbmUgYXMgdGhlIHNpemUgb2YgdGhlIHVuaWNvZGUgdHlwZS4gKi8N
CisjZGVmaW5lIFB5X1VOSUNPREVfU0laRSAyDQorDQorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRv
IGhhdmUgYSBVbmljb2RlIHR5cGUuICovDQorI2RlZmluZSBQeV9VU0lOR19VTklDT0RFIDENCisN
CisvKiBhc3N1bWUgQzg5IHNlbWFudGljcyB0aGF0IFJFVFNJR1RZUEUgaXMgYWx3YXlzIHZvaWQg
Ki8NCisjZGVmaW5lIFJFVFNJR1RZUEUgdm9pZA0KKw0KKy8qIERlZmluZSBpZiBzZXRwZ3JwKCkg
bXVzdCBiZSBjYWxsZWQgYXMgc2V0cGdycCgwLCAwKS4gKi8NCisvKiAjdW5kZWYgU0VUUEdSUF9I
QVZFX0FSRyAqLw0KKw0KKy8qIERlZmluZSB0aGlzIHRvIGJlIGV4dGVuc2lvbiBvZiBzaGFyZWQg
bGlicmFyaWVzIChpbmNsdWRpbmcgdGhlIGRvdCEpLiAqLw0KKyNkZWZpbmUgU0hMSUJfRVhUICIu
c28iDQorDQorLyogRGVmaW5lIGlmIGk+PmogZm9yIHNpZ25lZCBpbnQgaSBkb2VzIG5vdCBleHRl
bmQgdGhlIHNpZ24gYml0IHdoZW4gaSA8IDAgKi8NCisvKiAjdW5kZWYgU0lHTkVEX1JJR0hUX1NI
SUZUX1pFUk9fRklMTFMgKi8NCisNCisvKiBUaGUgc2l6ZSBvZiBgZG91YmxlJywgYXMgY29tcHV0
ZWQgYnkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9GX0RPVUJMRSA4DQorDQorLyogVGhlIHNp
emUgb2YgYGZsb2F0JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9G
X0ZMT0FUIDQNCisNCisvKiBUaGUgc2l6ZSBvZiBgZnBvc190JywgYXMgY29tcHV0ZWQgYnkgc2l6
ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9GX0ZQT1NfVCAxNg0KKw0KKy8qIFRoZSBzaXplIG9mIGBp
bnQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovDQorI2RlZmluZSBTSVpFT0ZfSU5UIDQNCisN
CisvKiBUaGUgc2l6ZSBvZiBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8NCisjZGVm
aW5lIFNJWkVPRl9MT05HIDgNCisNCisvKiBUaGUgc2l6ZSBvZiBgbG9uZyBkb3VibGUnLCBhcyBj
b21wdXRlZCBieSBzaXplb2YuICovDQorI2RlZmluZSBTSVpFT0ZfTE9OR19ET1VCTEUgMTYNCisN
CisvKiBUaGUgc2l6ZSBvZiBgbG9uZyBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLw0K
KyNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyA4DQorDQorLyogVGhlIHNpemUgb2YgYG9mZl90Jywg
YXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9GX09GRl9UIDgNCisNCisv
KiBUaGUgc2l6ZSBvZiBgcGlkX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovDQorI2RlZmlu
ZSBTSVpFT0ZfUElEX1QgNA0KKw0KKy8qIFRoZSBzaXplIG9mIGBwdGhyZWFkX3QnLCBhcyBjb21w
dXRlZCBieSBzaXplb2YuICovDQorI2RlZmluZSBTSVpFT0ZfUFRIUkVBRF9UIDE2DQorDQorLyog
VGhlIHNpemUgb2YgYHNob3J0JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUg
U0laRU9GX1NIT1JUIDINCisNCisvKiBUaGUgc2l6ZSBvZiBgc2l6ZV90JywgYXMgY29tcHV0ZWQg
Ynkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9GX1NJWkVfVCA4DQorDQorLyogVGhlIHNpemUg
b2YgYHRpbWVfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8NCisjZGVmaW5lIFNJWkVPRl9U
SU1FX1QgOA0KKw0KKy8qIFRoZSBzaXplIG9mIGB1aW50cHRyX3QnLCBhcyBjb21wdXRlZCBieSBz
aXplb2YuICovDQorI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UIDgNCisNCisvKiBUaGUgc2l6ZSBv
ZiBgdm9pZCAqJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9GX1ZP
SURfUCA4DQorDQorLyogVGhlIHNpemUgb2YgYHdjaGFyX3QnLCBhcyBjb21wdXRlZCBieSBzaXpl
b2YuICovDQorI2RlZmluZSBTSVpFT0ZfV0NIQVJfVCA0DQorDQorLyogVGhlIHNpemUgb2YgYF9C
b29sJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLw0KKyNkZWZpbmUgU0laRU9GX19CT09MIDEN
CisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4g
Ki8NCisjZGVmaW5lIFNURENfSEVBREVSUyAxDQorDQorLyogRGVmaW5lIGlmIHlvdSBjYW4gc2Fm
ZWx5IGluY2x1ZGUgYm90aCA8c3lzL3NlbGVjdC5oPiBhbmQgPHN5cy90aW1lLmg+DQorICAgKHdo
aWNoIHlvdSBjYW4ndCBvbiBTQ08gT0RUIDMuMCkuICovDQorI2RlZmluZSBTWVNfU0VMRUNUX1dJ
VEhfU1lTX1RJTUUgMQ0KKw0KKy8qIERlZmluZSBpZiB0YW5oKC0wLikgaXMgLTAuLCBvciBpZiBw
bGF0Zm9ybSBkb2Vzbid0IGhhdmUgc2lnbmVkIHplcm9zICovDQorI2RlZmluZSBUQU5IX1BSRVNF
UlZFU19aRVJPX1NJR04gMQ0KKw0KKy8qIERlZmluZSB0byAxIGlmIHlvdSBjYW4gc2FmZWx5IGlu
Y2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAqLw0KKyNkZWZpbmUgVElNRV9X
SVRIX1NZU19USU1FIDENCisNCisvKiBEZWZpbmUgdG8gMSBpZiB5b3VyIDxzeXMvdGltZS5oPiBk
ZWNsYXJlcyBgc3RydWN0IHRtJy4gKi8NCisvKiAjdW5kZWYgVE1fSU5fU1lTX1RJTUUgKi8NCisN
CisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIGNvbXB1dGVkIGdvdG9zIGluIGNldmFsLmMu
ICovDQorLyogI3VuZGVmIFVTRV9DT01QVVRFRF9HT1RPUyAqLw0KKw0KKy8qIEVuYWJsZSBleHRl
bnNpb25zIG9uIEFJWCAzLCBJbnRlcml4LiAgKi8NCisvLyNpZm5kZWYgX0FMTF9TT1VSQ0UNCisv
LyMgZGVmaW5lIF9BTExfU09VUkNFIDENCisvLyNlbmRpZg0KKy8qIEVuYWJsZSBHTlUgZXh0ZW5z
aW9ucyBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSB0aGVtLiAgKi8NCisvLyNpZm5kZWYgX0dOVV9TT1VS
Q0UNCisvLyMgZGVmaW5lIF9HTlVfU09VUkNFIDENCisvLyNlbmRpZg0KKy8qIEVuYWJsZSB0aHJl
YWRpbmcgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8NCisvLyNpZm5kZWYgX1BPU0lYX1BUSFJF
QURfU0VNQU5USUNTDQorLy8jIGRlZmluZSBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgMQ0KKy8v
I2VuZGlmDQorLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gSFAgTm9uU3RvcC4gICovDQorLy8jaWZu
ZGVmIF9UQU5ERU1fU09VUkNFDQorLy8jIGRlZmluZSBfVEFOREVNX1NPVVJDRSAxDQorLy8jZW5k
aWYNCisvKiBFbmFibGUgZ2VuZXJhbCBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLw0KKy8vI2lm
bmRlZiBfX0VYVEVOU0lPTlNfXw0KKy8vIyBkZWZpbmUgX19FWFRFTlNJT05TX18gMQ0KKy8vI2Vu
ZGlmDQorDQorDQorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHVzZSBNYWNQeXRob24gbW9kdWxl
cyBvbiBNYWNPU1ggaW4gdW5peC1QeXRob24uICovDQorLyogI3VuZGVmIFVTRV9UT09MQk9YX09C
SkVDVF9HTFVFICovDQorDQorLyogRGVmaW5lIGlmIGEgdmFfbGlzdCBpcyBhbiBhcnJheSBvZiBz
b21lIGtpbmQgKi8NCisjZGVmaW5lIFZBX0xJU1RfSVNfQVJSQVkgMQ0KKw0KKy8qIERlZmluZSBp
ZiB5b3Ugd2FudCBTSUdGUEUgaGFuZGxlZCAoc2VlIEluY2x1ZGUvcHlmcGUuaCkuICovDQorLyog
I3VuZGVmIFdBTlRfU0lHRlBFX0hBTkRMRVIgKi8NCisNCisvKiBEZWZpbmUgaWYgeW91IHdhbnQg
d2N0eXBlLmggZnVuY3Rpb25zIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgb25lDQorICAgc3Vw
cGxpZWQgYnkgUHl0aG9uIGl0c2VsZi4gKHNlZSBJbmNsdWRlL3VuaWNvZGVjdHlwZS5oKS4gKi8N
CisvKiAjdW5kZWYgV0FOVF9XQ1RZUEVfRlVOQ1RJT05TICovDQorDQorLyogRGVmaW5lIGlmIFdJ
TkRPVyBpbiBjdXJzZXMuaCBvZmZlcnMgYSBmaWVsZCBfZmxhZ3MuICovDQorLyogI2RlZmluZSBX
SU5ET1dfSEFTX0ZMQUdTIDEqLw0KKw0KKy8qIERlZmluZSBpZiB5b3Ugd2FudCBkb2N1bWVudGF0
aW9uIHN0cmluZ3MgaW4gZXh0ZW5zaW9uIG1vZHVsZXMgKi8NCisjZGVmaW5lIFdJVEhfRE9DX1NU
UklOR1MgMQ0KKw0KKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIG5ldy1zdHlsZSAo
T3BlbnN0ZXAsIFJoYXBzb2R5LCBNYWNPUykgZHluYW1pYw0KKyAgIGxpbmtlciAoZHlsZCkgaW5z
dGVhZCBvZiB0aGUgb2xkLXN0eWxlIChOZXh0U3RlcCkgZHluYW1pYyBsaW5rZXIgKHJsZCkuDQor
ICAgRHlsZCBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydCBmcmFtZXdvcmtzLiAqLw0KKy8qICN1bmRl
ZiBXSVRIX0RZTEQgKi8NCisNCisvKiBEZWZpbmUgdG8gMSBpZiBsaWJpbnRsIGlzIG5lZWRlZCBm
b3IgbG9jYWxlIGZ1bmN0aW9ucy4gKi8NCisvKiAjdW5kZWYgV0lUSF9MSUJJTlRMICovDQorDQor
LyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHByb2R1Y2UgYW4gT3BlblN0ZXAvUmhhcHNvZHkgZnJh
bWV3b3JrIChzaGFyZWQNCisgICBsaWJyYXJ5IHBsdXMgYWNjZXNzb3J5IGZpbGVzKS4gKi8NCisv
KiAjdW5kZWYgV0lUSF9ORVhUX0ZSQU1FV09SSyAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3Ugd2Fu
dCB0byBjb21waWxlIGluIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2NzICovDQorI2RlZmluZSBXSVRI
X1BZTUFMTE9DIDENCisNCisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBpbiBydWRp
bWVudGFyeSB0aHJlYWQgc3VwcG9ydCAqLw0KKyNpZmRlZiBDT05GSUdfUFlUSE9OX1RIUkVBRFMN
CisJI2RlZmluZSBXSVRIX1RIUkVBRCAxDQorI2VuZGlmDQorDQorDQorLyogRGVmaW5lIHRvIHBy
b2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciAqLw0KKy8qICN1bmRlZiBX
SVRIX1RTQyAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3Ugd2FudCBweW1hbGxvYyB0byBiZSBkaXNh
YmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgdmFsZ3JpbmQgKi8NCisvKiAjdW5kZWYgV0lUSF9WQUxH
UklORCAqLw0KKw0KKy8qIERlZmluZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5b3VyIHByb2Nl
c3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdA0KKyAgIHNpZ25pZmljYW50IGJ5dGUgZmly
c3QgKGxpa2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLw0KKyNpZiBkZWZp
bmVkIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRA0KKyMgaWYgZGVmaW5lZCBfX0JJR19FTkRJQU5f
Xw0KKyMgIGRlZmluZSBXT1JEU19CSUdFTkRJQU4gMQ0KKyMgZW5kaWYNCisjZWxzZQ0KKyMgaWZu
ZGVmIFdPUkRTX0JJR0VORElBTg0KKy8qICMgIHVuZGVmIFdPUkRTX0JJR0VORElBTiAqLw0KKyMg
ZW5kaWYNCisjZW5kaWYNCisNCisvKiBEZWZpbmUgaWYgYXJpdGhtZXRpYyBpcyBzdWJqZWN0IHRv
IHg4Ny1zdHlsZSBkb3VibGUgcm91bmRpbmcgaXNzdWUgKi8NCisvKiAjdW5kZWYgWDg3X0RPVUJM
RV9ST1VORElORyAqLw0KKw0KKy8qIERlZmluZSBvbiBPcGVuQlNEIHRvIGFjdGl2YXRlIGFsbCBs
aWJyYXJ5IGZlYXR1cmVzICovDQorLyogI3VuZGVmIF9CU0RfU09VUkNFICovDQorDQorLyogRGVm
aW5lIG9uIElyaXggdG8gZW5hYmxlIHVfaW50ICovDQorI2RlZmluZSBfQlNEX1RZUEVTIDENCisN
CisvKiBEZWZpbmUgb24gRGFyd2luIHRvIGFjdGl2YXRlIGFsbCBsaWJyYXJ5IGZlYXR1cmVzICov
DQorLyogI2RlZmluZSBfREFSV0lOX0NfU09VUkNFIDEgKi8NCisNCisvKiBUaGlzIG11c3QgYmUg
c2V0IHRvIDY0IG9uIHNvbWUgc3lzdGVtcyB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0LiAq
Lw0KKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgNjQNCisNCisvKiBEZWZpbmUgb24gTGludXgg
dG8gYWN0aXZhdGUgYWxsIGxpYnJhcnkgZmVhdHVyZXMgKi8NCisjZGVmaW5lIF9HTlVfU09VUkNF
IDENCisNCisvKiBUaGlzIG11c3QgYmUgZGVmaW5lZCBvbiBzb21lIHN5c3RlbXMgdG8gZW5hYmxl
IGxhcmdlIGZpbGUgc3VwcG9ydC4gKi8NCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDENCisN
CisvKiBUaGlzIG11c3QgYmUgZGVmaW5lZCBvbiBBSVggc3lzdGVtcyB0byBlbmFibGUgbGFyZ2Ug
ZmlsZSBzdXBwb3J0LiAqLw0KKy8qICN1bmRlZiBfTEFSR0VfRklMRVMgKi8NCisNCisvKiBEZWZp
bmUgdG8gMSBpZiBvbiBNSU5JWC4gKi8NCisvKiAjdW5kZWYgX01JTklYICovDQorDQorLyogRGVm
aW5lIG9uIE5ldEJTRCB0byBhY3RpdmF0ZSBhbGwgbGlicmFyeSBmZWF0dXJlcyAqLw0KKy8qICNk
ZWZpbmUgX05FVEJTRF9TT1VSQ0UgMSAqLw0KKw0KKy8qIERlZmluZSBfT1NGX1NPVVJDRSB0byBn
ZXQgdGhlIG1ha2VkZXYgbWFjcm8uICovDQorLyogI3VuZGVmIF9PU0ZfU09VUkNFICovDQorDQor
LyogRGVmaW5lIHRvIDIgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVh
dHVyZXMgZXhjZXB0IHdpdGgNCisgICB0aGlzIGRlZmluZWQuICovDQorLyogI3VuZGVmIF9QT1NJ
WF8xX1NPVVJDRSAqLw0KKw0KKy8qIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElF
RUUgU3RkcyAxMDAzLjEtMjAwMSAqLw0KKyNpZm5kZWYgX1BPU0lYX0NfU09VUkNFDQorICAgICNk
ZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDExMkwNCisjZW5kaWYNCisvKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGluZ3MgdG8gd29y
ay4gKi8NCisvKiAjdW5kZWYgX1BPU0lYX1NPVVJDRSAqLw0KKw0KKy8qIERlZmluZSBpZiB5b3Ug
aGF2ZSBQT1NJWCB0aHJlYWRzLCBhbmQgeW91ciBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIHRoYXQu
ICovDQorI2lmZGVmIENPTkZJR19QWVRIT05fVEhSRUFEUw0KKwkjZGVmaW5lIF9QT1NJWF9USFJF
QURTIDENCisjZW5kaWYNCisvKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVy
cm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zICovDQorLyogI3VuZGVmIF9SRUVOVFJB
TlQgKi8NCisNCisvKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5
cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LA0KKyAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3Jl
Lmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQ0KKyAgICNk
ZWZpbmUgYmVsb3cgd291bGQgY2F1c2UgYSBzeW50YXggZXJyb3IuICovDQorLyogI3VuZGVmIF9V
SU5UMzJfVCAqLw0KKw0KKy8qIERlZmluZSBmb3IgU29sYXJpcyAyLjUuMSBzbyB0aGUgdWludDY0
X3QgdHlwZWRlZiBmcm9tIDxzeXMvc3luY2guaD4sDQorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1h
cGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlDQor
ICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8NCisvKiAjdW5k
ZWYgX1VJTlQ2NF9UICovDQorDQorLyogRGVmaW5lIHRvIHRoZSBsZXZlbCBvZiBYL09wZW4gdGhh
dCB5b3VyIHN5c3RlbSBzdXBwb3J0cyAqLw0KKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDANCisN
CisvKiBEZWZpbmUgdG8gYWN0aXZhdGUgVW5peDk1LWFuZC1lYXJsaWVyIGZlYXR1cmVzICovDQor
I2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVEIDENCisNCisvKiBEZWZpbmUgb24gRnJlZUJT
RCB0byBhY3RpdmF0ZSBhbGwgbGlicmFyeSBmZWF0dXJlcyAqLw0KKy8qICNkZWZpbmUgX19CU0Rf
VklTSUJMRSAxICovDQorDQorLyogRGVmaW5lIHRvIDEgaWYgdHlwZSBgY2hhcicgaXMgdW5zaWdu
ZWQgYW5kIHlvdSBhcmUgbm90IHVzaW5nIGdjYy4gICovDQorI2lmbmRlZiBfX0NIQVJfVU5TSUdO
RURfXw0KKy8qICMgdW5kZWYgX19DSEFSX1VOU0lHTkVEX18gKi8NCisjZW5kaWYNCisNCisvKiBE
ZWZpbmVkIG9uIFNvbGFyaXMgdG8gc2VlIGFkZGl0aW9uYWwgZnVuY3Rpb24gcHJvdG90eXBlcy4g
Ki8NCisjZGVmaW5lIF9fRVhURU5TSU9OU19fIDENCisNCisvKiBEZWZpbmUgdG8gJ2xvbmcnIGlm
IDx0aW1lLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLw0KKy8qICN1bmRlZiBjbG9ja190ICovDQorDQor
LyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMu
ICovDQorLyogI3VuZGVmIGNvbnN0ICovDQorDQorLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMv
dHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICovDQorLyogI3VuZGVmIGdpZF90ICovDQorDQorLyog
RGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFj
dGx5IDMyIGJpdHMgaWYNCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBp
bmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLw0KKy8qICN1bmRlZiBpbnQzMl90ICovDQorDQor
LyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBl
eGFjdGx5IDY0IGJpdHMgaWYNCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFy
ZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLw0KKy8qICN1bmRlZiBpbnQ2NF90ICovDQor
DQorLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAq
Lw0KKy8qICN1bmRlZiBtb2RlX3QgKi8NCisNCisvKiBEZWZpbmUgdG8gYGxvbmcgaW50JyBpZiA8
c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8NCisvKiAjdW5kZWYgb2ZmX3QgKi8NCisN
CisvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICov
DQorLyogI3VuZGVmIHBpZF90ICovDQorDQorLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3
b3JkIGRvZXMgbm90IHdvcmsuICovDQorLyogI3VuZGVmIHNpZ25lZCAqLw0KKw0KKy8qIERlZmlu
ZSB0byBgdW5zaWduZWQgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8N
CisvKiAjdW5kZWYgc2l6ZV90ICovDQorDQorLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvc29j
a2V0Lmg+IGRvZXMgbm90IGRlZmluZS4gKi8NCisvKiAjdW5kZWYgc29ja2xlbl90ICovDQorDQor
LyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICovDQor
LyogI3VuZGVmIHVpZF90ICovDQorDQorLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGFuIHVuc2ln
bmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJpdHMgaWYNCisgICBzdWNoIGEg
dHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAq
Lw0KKy8qICN1bmRlZiB1aW50MzJfdCAqLw0KKw0KKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBh
biB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmDQorICAg
c3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmlu
ZSBpdC4gKi8NCisvKiAjdW5kZWYgdWludDY0X3QgKi8NCisNCisvKiBEZWZpbmUgdG8gZW1wdHkg
aWYgdGhlIGtleXdvcmQgZG9lcyBub3Qgd29yay4gKi8NCisvKiAjdW5kZWYgdm9sYXRpbGUgKi8N
CisNCisvKiBEZWZpbmUgdGhlIG1hY3JvcyBuZWVkZWQgaWYgb24gYSBVbml4V2FyZSA3Lnggc3lz
dGVtLiAqLw0KKyNpZiBkZWZpbmVkKF9fVVNMQ19fKSAmJiBkZWZpbmVkKF9fU0NPX1ZFUlNJT05f
XykNCisjZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUyAvKiBEb24ndCB1c2UgbmN1cnNlcyBleHRl
bnNpb25zICovDQorI2VuZGlmDQorDQorI2VuZGlmIC8qUHlfUFlDT05GSUdfSCovDQorDQpkaWZm
IC0tZ2l0IGEvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggYi9pbmNsdWRlL3N5cy9zeXNtYWNyb3Mu
aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjA3YTNlZjENCi0tLSAvZGV2
L251bGwNCisrKyBiL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oDQpAQCAtMCwwICsxLDE1IEBADQor
I2lmbmRlZiBfU1lTX1NZU01BQ1JPU19IDQorI2RlZmluZSBfU1lTX1NZU01BQ1JPU19IDQorDQor
I2RlZmluZSBtYWpvcih4KSBcDQorCSgodW5zaWduZWQpKCAoKCh4KT4+MzE+PjEpICYgMHhmZmZm
ZjAwMCkgfCAoKCh4KT4+OCkgJiAweDAwMDAwZmZmKSApKQ0KKyNkZWZpbmUgbWlub3IoeCkgXA0K
KwkoKHVuc2lnbmVkKSggKCgoeCk+PjEyKSAmIDB4ZmZmZmZmMDApIHwgKCh4KSAmIDB4MDAwMDAw
ZmYpICkpDQorDQorI2RlZmluZSBtYWtlZGV2KHgseSkgKCBcDQorICAgICAgICAoKCh4KSYweGZm
ZmZmMDAwVUxMKSA8PCAzMikgfCBcDQorCSgoKHgpJjB4MDAwMDBmZmZVTEwpIDw8IDgpIHwgXA0K
KyAgICAgICAgKCgoeSkmMHhmZmZmZmYwMFVMTCkgPDwgMTIpIHwgXA0KKwkoKCh5KSYweDAwMDAw
MGZmVUxMKSkgKQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL21haW5fZmlsZS5jIGIvbWFpbl9m
aWxlLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi42ZWUwMWQyDQotLS0g
L2Rldi9udWxsDQorKysgYi9tYWluX2ZpbGUuYw0KQEAgLTAsMCArMSw3IEBADQorI2luY2x1ZGUg
PFB5dGhvbi5oPg0KKw0KK2ludCBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgbWFpbihpbnQgYXJnYywg
Y2hhciAqYXJndltdKSANCit7DQorICAgIHJldHVybiBQeV9NYWluKGFyZ2MsIGFyZ3YpOw0KK30N
CisNCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:45:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:45: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 1hYDUj-0002Mw-Mf; Tue, 04 Jun 2019 17:45: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=XtBW=UD=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hYDUi-0002Mf-9q
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:45:08 +0000
X-Inumbo-ID: 7c82495a-86f0-11e9-9e1b-43ff48055c3a
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.43]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7c82495a-86f0-11e9-9e1b-43ff48055c3a;
 Tue, 04 Jun 2019 17:45:05 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.17; Tue, 4 Jun
 2019 17:44:58 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Tue, 4 Jun 2019
 17:44:58 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPYTHON PATCH 3/3] Add exportsyms.uk
Thread-Index: AQHVGv03AYRkmieNpU6suv3N3t2gRg==
Date: Tue, 4 Jun 2019 17:44:54 +0000
Message-ID: <20190604174439.30029-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190604174439.30029-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P194CA0031.EURP194.PROD.OUTLOOK.COM
 (2603:10a6:803:3c::20) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3ca92d45-6f20-47a0-c50e-08d6e9145a1e
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB49557208E2B0300A1BB0A550A6150@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:83;
x-forefront-prvs: 0058ABBBC7
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(39850400004)(376002)(136003)(366004)(396003)(199004)(189003)(81156014)(6916009)(81166006)(4326008)(3846002)(6116002)(68736007)(2351001)(26005)(2906002)(6506007)(54906003)(50226002)(85202003)(14454004)(8676002)(25786009)(99286004)(386003)(316002)(6666004)(786003)(52116002)(66556008)(71200400001)(64756008)(476003)(186003)(73956011)(66476007)(86362001)(76176011)(66446008)(66946007)(71190400001)(2616005)(256004)(11346002)(30864003)(8936002)(446003)(66066001)(5660300002)(5640700003)(6512007)(6436002)(1076003)(508600001)(74482002)(53946003)(53936002)(85182001)(486006)(6486002)(102836004)(2501003)(305945005)(7736002)(14444005)(579004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ot7nA3Gf9NWFwd6TU9bMcw83ii8Pgky1OpmGGYbZRaefp85IZvOtw1eEc9G+tI6SIybm/R+1W1c/jR/rI9BuhxgXRzrHupIN4xBhH2kigguIPGwQX7mdGpc754qrSWlargyP5HkES4XvpqJa/8D8C7scQcblI7+9MGeUnffKx+tQ0awRkZZc8frpHz5/+dFdb0hHwccFFgKaDj/RlvoONMPqrwY0vuzQXVW+L8RmARp5w19ZZZg8sytW/kxWE2yQVewbz4n/mpxoWEXHawmnILqPjv2fH2zUZCFR2EsPnBG9u9hwFj9s6bvAkAFVgpv7wAckR3uMrasAA8UjPIjP3F9Syuob6jqxJruj0JW/MQ742L96p8HvhuxNkZ7yXOLyv8+Ot9XMivvpTDQZUW4CACMvUm0WFTg9zapHuM/w8bE=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 3ca92d45-6f20-47a0-c50e-08d6e9145a1e
X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jun 2019 17:44:54.2736 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LIBPYTHON PATCH 3/3] Add 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: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogZXhwb3J0c3ltcy51ayB8IDEwOTkgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAxMDk5
IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwb3J0c3ltcy51aw0KDQpkaWZm
IC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwLi42NWNmMzllDQotLS0gL2Rldi9udWxsDQorKysgYi9leHBvcnRz
eW1zLnVrDQpAQCAtMCwwICsxLDEwOTkgQEANCithc2RsX2ludF9zZXFfbmV3DQorYXNkbF9zZXFf
bmV3DQorZmFzdF9zYXZlX2xlYXZlDQoraW5pdGFycmF5DQoraW5pdF9hc3QNCitpbml0YXVkaW9v
cA0KK2luaXRiaW5hc2NpaQ0KK2luaXRfYmlzZWN0DQoraW5pdGNtYXRoDQoraW5pdF9jb2RlY3MN
Citpbml0X2NvbGxlY3Rpb25zDQoraW5pdGNQaWNrbGUNCitpbml0Y1N0cmluZ0lPDQoraW5pdF9j
c3YNCitpbml0ZGF0ZXRpbWUNCitpbml0ZXJybm8NCitpbml0ZmNudGwNCitpbml0ZnBldGVzdA0K
K2luaXRfZnVuY3Rvb2xzDQoraW5pdGZ1dHVyZV9idWlsdGlucw0KK2luaXRnYw0KK2luaXRfaGVh
cHENCitpbml0X2hvdHNob3QNCitpbml0aW1hZ2VvcA0KK2luaXRpbXANCitpbml0X2lvDQoraW5p
dGl0ZXJ0b29scw0KK2luaXRfanNvbg0KK2luaXRfbG9jYWxlDQoraW5pdF9sc3Byb2YNCitpbml0
bWF0aA0KK2luaXRfbWQ1DQoraW5pdG9wZXJhdG9yDQoraW5pdHBhcnNlcg0KK2luaXRwb3NpeA0K
K2luaXRwdXJlDQoraW5pdHB3ZA0KK2luaXRfcmFuZG9tDQoraW5pdHJlc291cmNlDQoraW5pdF9z
aGENCitpbml0X3NoYTI1Ng0KK2luaXRfc2hhNTEyDQoraW5pdHNpZ25hbA0KK2luaXRfc3JlDQor
aW5pdHN0cm9wDQoraW5pdF9zdHJ1Y3QNCitpbml0X3N5bXRhYmxlDQoraW5pdF90ZXN0Y2FwaQ0K
K2luaXR0aW1lDQoraW5pdHRpbWluZw0KK2luaXR1bmljb2RlZGF0YQ0KK2luaXRfd2Vha3JlZg0K
K2luaXR4eA0KK2luaXR4eHN1YnR5cGUNCitpbml0emlwaW1wb3J0DQorbWQ1X2FwcGVuZA0KK21k
NV9maW5pc2gNCittZDVfaW5pdA0KK3BhcnRpYWxfcmVkdWNlDQorcGFydGlhbF9zZXRzdGF0ZQ0K
K19QeV9hY29zaA0KK19QeV9hZGRhcmMNCitfUHlfYWRkYml0DQorX1B5X2FkZGRmYQ0KK19QeV9h
ZGRmaXJzdHNldHMNCitfUHlfYWRkbGFiZWwNCitfUHlfYWRkX29uZV90b19pbmRleF9DDQorX1B5
X2FkZF9vbmVfdG9faW5kZXhfRg0KK1B5X0FkZFBlbmRpbmdDYWxsDQorX1B5X2FkZHN0YXRlDQor
X1B5X2FsaWFzDQorUHlBcmVuYV9BZGRQeU9iamVjdA0KK1B5QXJlbmFfRnJlZQ0KK1B5QXJlbmFf
TWFsbG9jDQorUHlBcmVuYV9OZXcNCitQeUFyZ19HZXRDaGFyDQorUHlBcmdfR2V0RG91YmxlQXJy
YXkNCitQeUFyZ19HZXRGbG9hdA0KK1B5QXJnX0dldEZsb2F0QXJyYXkNCitQeUFyZ19HZXRMb25n
DQorUHlBcmdfR2V0TG9uZ0FycmF5DQorUHlBcmdfR2V0TG9uZ0FycmF5U2l6ZQ0KK1B5QXJnX0dl
dE9iamVjdA0KK1B5QXJnX0dldFNob3J0DQorUHlBcmdfR2V0U2hvcnRBcnJheQ0KK1B5QXJnX0dl
dFNob3J0QXJyYXlTaXplDQorUHlBcmdfR2V0U3RyaW5nDQorX1B5QXJnX05vS2V5d29yZHMNCitQ
eUFyZ19QYXJzZQ0KK19QeUFyZ19QYXJzZV9TaXplVA0KK1B5QXJnX1BhcnNlVHVwbGUNCitQeUFy
Z19QYXJzZVR1cGxlQW5kS2V5d29yZHMNCitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1Np
emVUDQorX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQNCitfUHlfYXJndW1lbnRzDQorUHlBcmdfVW5w
YWNrVHVwbGUNCitQeUFyZ19WYVBhcnNlDQorX1B5QXJnX1ZhUGFyc2VfU2l6ZVQNCitQeUFyZ19W
YVBhcnNlVHVwbGVBbmRLZXl3b3Jkcw0KK19QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19T
aXplVA0KK19QeV9hc2luaA0KK19QeV9Bc3NlcnQNCitfUHlfQXNzaWduDQorUHlBU1RfQ2hlY2sN
CitQeUFTVF9Db21waWxlDQorUHlBU1RfRnJvbU5vZGUNCitQeUFTVF9tb2Qyb2JqDQorUHlBU1Rf
b2JqMm1vZA0KK19QeV9hdGFuaA0KK1B5X0F0RXhpdA0KK19QeV9BdHRyaWJ1dGUNCitfUHlfQXVn
QXNzaWduDQorX1B5X0Jpbk9wDQorUHlCb29sX0Zyb21Mb25nDQorX1B5X0Jvb2xPcA0KK19QeV9C
cmVhaw0KK1B5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcw0KK1B5QnVmZmVyX0ZpbGxJbmZv
DQorUHlCdWZmZXJfRnJvbUNvbnRpZ3VvdXMNCitQeUJ1ZmZlcl9Gcm9tTWVtb3J5DQorUHlCdWZm
ZXJfRnJvbU9iamVjdA0KK1B5QnVmZmVyX0Zyb21SZWFkV3JpdGVNZW1vcnkNCitQeUJ1ZmZlcl9G
cm9tUmVhZFdyaXRlT2JqZWN0DQorUHlCdWZmZXJfR2V0UG9pbnRlcg0KK1B5QnVmZmVyX0lzQ29u
dGlndW91cw0KK1B5QnVmZmVyX05ldw0KK1B5QnVmZmVyX1JlbGVhc2UNCitQeUJ1ZmZlcl9Ub0Nv
bnRpZ3VvdXMNCitQeV9CdWlsZFZhbHVlDQorX1B5X0J1aWxkVmFsdWVfU2l6ZVQNCitfUHlCdWls
dGluX0luaXQNCitQeUJ5dGVBcnJheV9Bc1N0cmluZw0KK1B5Qnl0ZUFycmF5X0NvbmNhdA0KK1B5
Qnl0ZUFycmF5X0ZpbmkNCitQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0DQorUHlCeXRlQXJyYXlfRnJv
bVN0cmluZ0FuZFNpemUNCitQeUJ5dGVBcnJheV9Jbml0DQorUHlCeXRlQXJyYXlfUmVzaXplDQor
UHlCeXRlQXJyYXlfU2l6ZQ0KK19QeV9ieXRlc19jYXBpdGFsaXplDQorX1B5Qnl0ZXNfRm9ybWF0
QWR2YW5jZWQNCitfUHlfYnl0ZXNfaXNhbG51bQ0KK19QeV9ieXRlc19pc2FscGhhDQorX1B5X2J5
dGVzX2lzZGlnaXQNCitfUHlfYnl0ZXNfaXNsb3dlcg0KK19QeV9ieXRlc19pc3NwYWNlDQorX1B5
X2J5dGVzX2lzdGl0bGUNCitfUHlfYnl0ZXNfaXN1cHBlcg0KK19QeV9ieXRlc19sb3dlcg0KK19Q
eV9ieXRlc19zd2FwY2FzZQ0KK19QeV9ieXRlc190aXRsZQ0KK19QeV9ieXRlc191cHBlcg0KK19Q
eV9jX2Ficw0KK19QeV9DYWxsDQorUHlDYWxsYWJsZV9DaGVjaw0KK1B5Q2FsbEl0ZXJfTmV3DQor
UHlDYXBzdWxlX0dldENvbnRleHQNCitQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcg0KK1B5Q2Fwc3Vs
ZV9HZXROYW1lDQorUHlDYXBzdWxlX0dldFBvaW50ZXINCitQeUNhcHN1bGVfSW1wb3J0DQorUHlD
YXBzdWxlX0lzVmFsaWQNCitQeUNhcHN1bGVfTmV3DQorUHlDYXBzdWxlX1NldENvbnRleHQNCitQ
eUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcg0KK1B5Q2Fwc3VsZV9TZXROYW1lDQorUHlDYXBzdWxlX1Nl
dFBvaW50ZXINCitfUHlfY19kaWZmDQorUHlDZWxsX0dldA0KK1B5Q2VsbF9OZXcNCitQeUNlbGxf
U2V0DQorUHlDRnVuY3Rpb25fQ2FsbA0KK1B5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QNCitQeUNG
dW5jdGlvbl9GaW5pDQorUHlDRnVuY3Rpb25fR2V0RmxhZ3MNCitQeUNGdW5jdGlvbl9HZXRGdW5j
dGlvbg0KK1B5Q0Z1bmN0aW9uX0dldFNlbGYNCitQeUNGdW5jdGlvbl9OZXcNCitQeUNGdW5jdGlv
bl9OZXdFeA0KK19QeV9DaGVja1JlY3Vyc2l2ZUNhbGwNCitfUHlfQ2xhc3NEZWYNCitQeUNsYXNz
X0lzU3ViY2xhc3MNCitQeUNsYXNzTWV0aG9kX05ldw0KK1B5Q2xhc3NfTmV3DQorX1B5X2NfbmVn
DQorUHlDT2JqZWN0X0FzVm9pZFB0cg0KK1B5Q09iamVjdF9Gcm9tVm9pZFB0cg0KK1B5Q09iamVj
dF9Gcm9tVm9pZFB0ckFuZERlc2MNCitQeUNPYmplY3RfR2V0RGVzYw0KK1B5Q09iamVjdF9JbXBv
cnQNCitQeUNPYmplY3RfU2V0Vm9pZFB0cg0KK1B5Q29kZV9BZGRyMkxpbmUNCitQeUNvZGVjX0Jh
Y2tzbGFzaFJlcGxhY2VFcnJvcnMNCitQeUNvZGVjX0RlY29kZQ0KK1B5Q29kZWNfRGVjb2Rlcg0K
K19QeUNvZGVjX0RlY29kZVRleHQNCitQeUNvZGVjX0VuY29kZQ0KK1B5Q29kZWNfRW5jb2Rlcg0K
K19QeUNvZGVjX0VuY29kZVRleHQNCitfUHlDb2RlX0NoZWNrTGluZU51bWJlcg0KK1B5Q29kZWNf
SWdub3JlRXJyb3JzDQorUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXINCitQeUNvZGVjX0luY3Jl
bWVudGFsRW5jb2Rlcg0KK19QeUNvZGVjSW5mb19HZXRJbmNyZW1lbnRhbERlY29kZXINCitfUHlD
b2RlY0luZm9fR2V0SW5jcmVtZW50YWxFbmNvZGVyDQorX1B5Q29kZWNfTG9va3VwDQorUHlDb2Rl
Y19Mb29rdXBFcnJvcg0KK19QeUNvZGVjX0xvb2t1cFRleHRFbmNvZGluZw0KK19QeUNvZGVfQ29u
c3RhbnRLZXkNCitQeUNvZGVjX1JlZ2lzdGVyDQorUHlDb2RlY19SZWdpc3RlckVycm9yDQorUHlD
b2RlY19SZXBsYWNlRXJyb3JzDQorUHlDb2RlY19TdHJlYW1SZWFkZXINCitQeUNvZGVjX1N0cmVh
bVdyaXRlcg0KK1B5Q29kZWNfU3RyaWN0RXJyb3JzDQorUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFj
ZUVycm9ycw0KK1B5Q29kZV9OZXcNCitQeUNvZGVfTmV3RW1wdHkNCitQeUNvZGVfT3B0aW1pemUN
CitfUHlfQ29tcGFyZQ0KK1B5X0NvbXBpbGVTdHJpbmcNCitQeV9Db21waWxlU3RyaW5nRmxhZ3MN
CitQeUNvbXBsZXhfQXNDQ29tcGxleA0KK19QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWQNCitQeUNv
bXBsZXhfRnJvbUNDb21wbGV4DQorUHlDb21wbGV4X0Zyb21Eb3VibGVzDQorUHlDb21wbGV4X0lt
YWdBc0RvdWJsZQ0KK1B5Q29tcGxleF9SZWFsQXNEb3VibGUNCitfUHlfY29tcHJlaGVuc2lvbg0K
K19QeV9Db250aW51ZQ0KK19QeV9jX3Bvdw0KK19QeV9jX3Byb2QNCitfUHlfY19xdW90DQorX1B5
X2Nfc3VtDQorUHlfRGVjUmVmDQorX1B5X2RlbGJpdHNldA0KK19QeV9EZWxldGUNCitQeURlc2Ny
X05ld0NsYXNzTWV0aG9kDQorUHlEZXNjcl9OZXdHZXRTZXQNCitQeURlc2NyX05ld01lbWJlcg0K
K1B5RGVzY3JfTmV3TWV0aG9kDQorUHlEZXNjcl9OZXdXcmFwcGVyDQorX1B5X2RnX2R0b2ENCitf
UHlfZGdfZnJlZWR0b2ENCitfUHlfZGdfc3RydG9kDQorX1B5X0RpY3QNCitQeURpY3RfQ2xlYXIN
CitfUHlfRGljdENvbXANCitfUHlEaWN0X0NvbnRhaW5zDQorUHlEaWN0X0NvbnRhaW5zDQorUHlE
aWN0X0NvcHkNCitQeURpY3RfRGVsSXRlbQ0KK19QeURpY3RfRGVsSXRlbUlmDQorUHlEaWN0X0Rl
bEl0ZW1TdHJpbmcNCitQeURpY3RfRmluaQ0KK1B5RGljdF9HZXRJdGVtDQorUHlEaWN0X0dldEl0
ZW1TdHJpbmcNCitfUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3INCitQeURpY3RfSXRlbXMNCitQeURp
Y3RfS2V5cw0KK19QeURpY3RfTWF5YmVVbnRyYWNrDQorUHlEaWN0X01lcmdlDQorUHlEaWN0X01l
cmdlRnJvbVNlcTINCitQeURpY3RfTmV3DQorX1B5RGljdF9OZXdQcmVzaXplZA0KK19QeURpY3Rf
TmV4dA0KK1B5RGljdF9OZXh0DQorUHlEaWN0UHJveHlfTmV3DQorUHlEaWN0X1NldEl0ZW0NCitQ
eURpY3RfU2V0SXRlbVN0cmluZw0KK1B5RGljdF9TaXplDQorUHlEaWN0X1VwZGF0ZQ0KK1B5RGlj
dF9WYWx1ZXMNCitfUHlfRGlzcGxheVNvdXJjZUxpbmUNCitfUHlfZG91YmxlX3JvdW5kDQorX1B5
X0VsbGlwc2lzDQorUHlfRW5kSW50ZXJwcmV0ZXINCitQeUVycl9CYWRBcmd1bWVudA0KK19QeUVy
cl9CYWRJbnRlcm5hbENhbGwNCitQeUVycl9CYWRJbnRlcm5hbENhbGwNCitQeUVycl9DaGVja1Np
Z25hbHMNCitQeUVycl9DbGVhcg0KK1B5RXJyX0Rpc3BsYXkNCitQeUVycl9FeGNlcHRpb25NYXRj
aGVzDQorUHlFcnJfRmV0Y2gNCitQeUVycl9Gb3JtYXQNCitQeUVycl9HaXZlbkV4Y2VwdGlvbk1h
dGNoZXMNCitQeUVycl9OZXdFeGNlcHRpb24NCitQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jDQor
UHlFcnJfTm9NZW1vcnkNCitQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24NCitQeUVycl9PY2N1cnJl
ZA0KK1B5RXJyX1ByaW50DQorUHlFcnJfUHJpbnRFeA0KK1B5RXJyX1Byb2dyYW1UZXh0DQorX1B5
RXJyX1JlcGxhY2VFeGNlcHRpb24NCitQeUVycl9SZXN0b3JlDQorUHlFcnJfU2V0RnJvbUVycm5v
DQorUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lDQorUHlFcnJfU2V0RnJvbUVycm5vV2l0
aEZpbGVuYW1lT2JqZWN0DQorUHlFcnJfU2V0SW50ZXJydXB0DQorUHlFcnJfU2V0Tm9uZQ0KK1B5
RXJyX1NldE9iamVjdA0KK1B5RXJyX1NldFN0cmluZw0KK1B5RXJyX1N5bnRheExvY2F0aW9uDQor
UHlFcnJfV2Fybg0KK1B5RXJyX1dhcm5FeA0KK1B5RXJyX1dhcm5FeHBsaWNpdA0KK1B5RXJyX1dy
aXRlVW5yYWlzYWJsZQ0KK1B5RXZhbF9DYWxsRnVuY3Rpb24NCitQeUV2YWxfQ2FsbE1ldGhvZA0K
K1B5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzDQorX1B5RXZhbF9DYWxsVHJhY2luZw0KK1B5
RXZhbF9FdmFsQ29kZQ0KK1B5RXZhbF9FdmFsQ29kZUV4DQorUHlFdmFsX0V2YWxGcmFtZQ0KK1B5
RXZhbF9FdmFsRnJhbWVFeA0KK1B5RXZhbF9HZXRCdWlsdGlucw0KK1B5RXZhbF9HZXRDYWxsU3Rh
dHMNCitQeUV2YWxfR2V0RnJhbWUNCitQeUV2YWxfR2V0RnVuY0Rlc2MNCitQeUV2YWxfR2V0RnVu
Y05hbWUNCitQeUV2YWxfR2V0R2xvYmFscw0KK1B5RXZhbF9HZXRMb2NhbHMNCitQeUV2YWxfR2V0
UmVzdHJpY3RlZA0KK1B5RXZhbF9NZXJnZUNvbXBpbGVyRmxhZ3MNCitQeUV2YWxfUmVzdG9yZVRo
cmVhZA0KK1B5RXZhbF9TYXZlVGhyZWFkDQorUHlFdmFsX1NldFByb2ZpbGUNCitQeUV2YWxfU2V0
VHJhY2UNCitfUHlFdmFsX1NsaWNlSW5kZXgNCitfUHlFdmFsX1NsaWNlSW5kZXhOb3ROb25lDQor
X1B5X0V4Y2VwdEhhbmRsZXINCitfUHlFeGNfRmluaQ0KK19QeUV4Y19Jbml0DQorX1B5X0V4ZWMN
CitQeV9FeGl0DQorX1B5X2V4cG0xDQorX1B5X0V4cHINCitfUHlfRXhwcmVzc2lvbg0KK19QeV9F
eHRTbGljZQ0KK1B5X0ZhdGFsRXJyb3INCitQeV9GZElzSW50ZXJhY3RpdmUNCitQeUZpbGVfQXNG
aWxlDQorUHlGaWxlX0RlY1VzZUNvdW50DQorUHlGaWxlX0Zyb21GaWxlDQorUHlGaWxlX0Zyb21T
dHJpbmcNCitQeUZpbGVfR2V0TGluZQ0KK1B5RmlsZV9JbmNVc2VDb3VudA0KK19QeUZpbGVJT19j
bG9zZWQNCitQeUZpbGVfTmFtZQ0KK19QeUZpbGVfU2FuaXRpemVNb2RlDQorUHlGaWxlX1NldEJ1
ZlNpemUNCitQeUZpbGVfU2V0RW5jb2RpbmcNCitQeUZpbGVfU2V0RW5jb2RpbmdBbmRFcnJvcnMN
CitQeUZpbGVfU29mdFNwYWNlDQorUHlGaWxlX1dyaXRlT2JqZWN0DQorUHlGaWxlX1dyaXRlU3Ry
aW5nDQorUHlfRmluYWxpemUNCitfUHlfZmluZGxhYmVsDQorUHlfRmluZE1ldGhvZA0KK1B5X0Zp
bmRNZXRob2RJbkNoYWluDQorUHlGbG9hdF9Bc0RvdWJsZQ0KK1B5RmxvYXRfQXNSZXByU3RyaW5n
DQorUHlGbG9hdF9Bc1N0cmluZw0KK1B5RmxvYXRfQ2xlYXJGcmVlTGlzdA0KK1B5RmxvYXRfRmlu
aQ0KK19QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkDQorUHlGbG9hdF9Gcm9tRG91YmxlDQorUHlGbG9h
dF9Gcm9tU3RyaW5nDQorUHlGbG9hdF9HZXRJbmZvDQorUHlGbG9hdF9HZXRNYXgNCitQeUZsb2F0
X0dldE1pbg0KK19QeUZsb2F0X0luaXQNCitfUHlGbG9hdF9QYWNrNA0KK19QeUZsb2F0X1BhY2s4
DQorX1B5RmxvYXRfVW5wYWNrNA0KK19QeUZsb2F0X1VucGFjazgNCitQeV9GbHVzaExpbmUNCitf
UHlfRm9yDQorUHlGUEVfZHVtbXkNCitQeUZyYW1lX0Jsb2NrUG9wDQorUHlGcmFtZV9CbG9ja1Nl
dHVwDQorUHlGcmFtZV9DbGVhckZyZWVMaXN0DQorUHlGcmFtZV9GYXN0VG9Mb2NhbHMNCitQeUZy
YW1lX0ZpbmkNCitQeUZyYW1lX0dldExpbmVOdW1iZXINCitfUHlGcmFtZV9Jbml0DQorUHlGcmFt
ZV9Mb2NhbHNUb0Zhc3QNCitQeUZyYW1lX05ldw0KK1B5X0Zyb3plbk1haW4NCitQeUZyb3plblNl
dF9OZXcNCitfUHlfRnVuY3Rpb25EZWYNCitQeUZ1bmN0aW9uX0dldENsb3N1cmUNCitQeUZ1bmN0
aW9uX0dldENvZGUNCitQeUZ1bmN0aW9uX0dldERlZmF1bHRzDQorUHlGdW5jdGlvbl9HZXRHbG9i
YWxzDQorUHlGdW5jdGlvbl9HZXRNb2R1bGUNCitQeUZ1bmN0aW9uX05ldw0KK1B5RnVuY3Rpb25f
U2V0Q2xvc3VyZQ0KK1B5RnVuY3Rpb25fU2V0RGVmYXVsdHMNCitQeUZ1dHVyZV9Gcm9tQVNUDQor
UHlHQ19Db2xsZWN0DQorX1B5R0NfRHVtcA0KK19QeV9HZW5lcmF0b3JFeHANCitQeUdlbl9OZWVk
c0ZpbmFsaXppbmcNCitQeUdlbl9OZXcNCitfUHlfZ2V0XzM4N2NvbnRyb2x3b3JkDQorUHlfR2V0
QXJnY0FyZ3YNCitQeV9HZXRCdWlsZEluZm8NCitQeV9HZXRDb21waWxlcg0KK1B5X0dldENvcHly
aWdodA0KK1B5X0dldEV4ZWNQcmVmaXgNCitQeV9HZXRQYXRoDQorUHlfR2V0UGxhdGZvcm0NCitQ
eV9HZXRQcmVmaXgNCitQeV9HZXRQcm9ncmFtRnVsbFBhdGgNCitQeV9HZXRQcm9ncmFtTmFtZQ0K
K1B5X0dldFB5dGhvbkhvbWUNCitQeV9HZXRSZWN1cnNpb25MaW1pdA0KK1B5X0dldFZlcnNpb24N
CitfUHlfR2lkX0NvbnZlcnRlcg0KK19QeV9naXRpZGVudGlmaWVyDQorX1B5X2dpdHZlcnNpb24N
CitfUHlfR2xvYmFsDQorUHlHcmFtbWFyX0FkZEFjY2VsZXJhdG9ycw0KK1B5R3JhbW1hcl9GaW5k
REZBDQorUHlHcmFtbWFyX0xhYmVsUmVwcg0KK1B5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMN
CitfUHlfSGFzaERvdWJsZQ0KK19QeV9IYXNoUG9pbnRlcg0KK19QeV9JZg0KK19QeV9JZkV4cA0K
K19QeV9JbXBvcnQNCitQeUltcG9ydF9BZGRNb2R1bGUNCitQeUltcG9ydF9BcHBlbmRJbml0dGFi
DQorUHlJbXBvcnRfQ2xlYW51cA0KK1B5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlDQorUHlJbXBvcnRf
RXhlY0NvZGVNb2R1bGVFeA0KK1B5SW1wb3J0X0V4dGVuZEluaXR0YWINCitfUHlJbXBvcnRfRmlu
ZEV4dGVuc2lvbg0KK19QeUltcG9ydF9GaW5kTW9kdWxlDQorX1B5SW1wb3J0X0ZpbmkNCitfUHlJ
bXBvcnRfRml4dXBFeHRlbnNpb24NCitfUHlfSW1wb3J0RnJvbQ0KK1B5SW1wb3J0X0dldEltcG9y
dGVyDQorUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXINCitQeUltcG9ydF9HZXRNb2R1bGVEaWN0DQor
X1B5SW1wb3J0SG9va3NfSW5pdA0KK1B5SW1wb3J0X0ltcG9ydA0KK1B5SW1wb3J0X0ltcG9ydEZy
b3plbk1vZHVsZQ0KK1B5SW1wb3J0X0ltcG9ydE1vZHVsZQ0KK1B5SW1wb3J0X0ltcG9ydE1vZHVs
ZUxldmVsDQorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaw0KK19QeUltcG9ydF9Jbml0DQor
X1B5SW1wb3J0X0lzU2NyaXB0DQorUHlJbXBvcnRfUmVsb2FkTW9kdWxlDQorUHlfSW5jUmVmDQor
X1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUNCitfUHlfSW5kZXgNCitQeV9Jbml0
aWFsaXplDQorUHlfSW5pdGlhbGl6ZUV4DQorUHlfSW5pdE1vZHVsZTRfNjQNCitfUHlfSW5zZXJ0
VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUNCitfUHlJbnN0YW5jZV9Mb29rdXANCitQeUluc3RhbmNl
X05ldw0KK1B5SW5zdGFuY2VfTmV3UmF3DQorX1B5SW50X0FzSW50DQorUHlJbnRfQXNMb25nDQor
UHlJbnRfQXNTc2l6ZV90DQorUHlJbnRfQXNVbnNpZ25lZExvbmdMb25nTWFzaw0KK1B5SW50X0Fz
VW5zaWduZWRMb25nTWFzaw0KK1B5SW50X0NsZWFyRnJlZUxpc3QNCitfUHlfSW50ZXJhY3RpdmUN
CitQeUludGVycHJldGVyU3RhdGVfQ2xlYXINCitQeUludGVycHJldGVyU3RhdGVfRGVsZXRlDQor
UHlJbnRlcnByZXRlclN0YXRlX0hlYWQNCitQeUludGVycHJldGVyU3RhdGVfTmV3DQorUHlJbnRl
cnByZXRlclN0YXRlX05leHQNCitQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZA0KK1B5SW50
X0ZpbmkNCitfUHlJbnRfRm9ybWF0DQorX1B5SW50X0Zvcm1hdEFkdmFuY2VkDQorX1B5SW50X0Zy
b21HaWQNCitQeUludF9Gcm9tTG9uZw0KK1B5SW50X0Zyb21TaXplX3QNCitQeUludF9Gcm9tU3Np
emVfdA0KK1B5SW50X0Zyb21TdHJpbmcNCitfUHlJbnRfRnJvbVVpZA0KK1B5SW50X0Zyb21Vbmlj
b2RlDQorUHlJbnRfR2V0TWF4DQorX1B5SW50X0luaXQNCitfUHlJT0Jhc2VfY2hlY2tfY2xvc2Vk
DQorX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlDQorX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlDQor
X1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlDQorX1B5SU9CYXNlX2ZpbmFsaXplDQorX1B5SU9fQ29u
dmVydFNzaXplX3QNCitfUHlJT19maW5kX2xpbmVfZW5kaW5nDQorX1B5SU9fdHJhcF9laW50cg0K
K1B5X0lzSW5pdGlhbGl6ZWQNCitQeUl0ZXJfTmV4dA0KK19QeV9rZXl3b3JkDQorX1B5X0xhbWJk
YQ0KK19QeV9MaXN0DQorUHlMaXN0X0FwcGVuZA0KK1B5TGlzdF9Bc1R1cGxlDQorX1B5X0xpc3RD
b21wDQorX1B5TGlzdF9FeHRlbmQNCitQeUxpc3RfRmluaQ0KK1B5TGlzdF9HZXRJdGVtDQorUHlM
aXN0X0dldFNsaWNlDQorUHlMaXN0X0luc2VydA0KK1B5TGlzdF9OZXcNCitQeUxpc3RfUmV2ZXJz
ZQ0KK1B5TGlzdF9TZXRJdGVtDQorUHlMaXN0X1NldFNsaWNlDQorUHlMaXN0X1NpemUNCitQeUxp
c3RfU29ydA0KK19QeV9sb2cxcA0KK19QeUxvbmdfQXNCeXRlQXJyYXkNCitQeUxvbmdfQXNEb3Vi
bGUNCitfUHlMb25nX0FzSW50DQorUHlMb25nX0FzTG9uZw0KK1B5TG9uZ19Bc0xvbmdBbmRPdmVy
Zmxvdw0KK1B5TG9uZ19Bc0xvbmdMb25nDQorUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdw0K
K1B5TG9uZ19Bc1NzaXplX3QNCitQeUxvbmdfQXNVbnNpZ25lZExvbmcNCitQeUxvbmdfQXNVbnNp
Z25lZExvbmdMb25nDQorUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sNCitQeUxvbmdfQXNV
bnNpZ25lZExvbmdNYXNrDQorUHlMb25nX0FzVm9pZFB0cg0KK19QeUxvbmdfQ29weQ0KK19QeUxv
bmdfRm9ybWF0DQorX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZA0KK19QeUxvbmdfRnJleHANCitfUHlM
b25nX0Zyb21CeXRlQXJyYXkNCitQeUxvbmdfRnJvbURvdWJsZQ0KK1B5TG9uZ19Gcm9tTG9uZw0K
K1B5TG9uZ19Gcm9tTG9uZ0xvbmcNCitQeUxvbmdfRnJvbVNpemVfdA0KK1B5TG9uZ19Gcm9tU3Np
emVfdA0KK1B5TG9uZ19Gcm9tU3RyaW5nDQorUHlMb25nX0Zyb21Vbmljb2RlDQorUHlMb25nX0Zy
b21VbnNpZ25lZExvbmcNCitQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcNCitQeUxvbmdfRnJv
bVZvaWRQdHINCitQeUxvbmdfR2V0SW5mbw0KK19QeUxvbmdfSW5pdA0KK19QeUxvbmdfTmV3DQor
X1B5TG9uZ19OdW1CaXRzDQorX1B5TG9uZ19TaWduDQorUHlfTWFpbg0KK1B5X01ha2VQZW5kaW5n
Q2FsbHMNCitfUHlfTWFuZ2xlDQorUHlNYXBwaW5nX0NoZWNrDQorUHlNYXBwaW5nX0dldEl0ZW1T
dHJpbmcNCitQeU1hcHBpbmdfSGFzS2V5DQorUHlNYXBwaW5nX0hhc0tleVN0cmluZw0KK1B5TWFw
cGluZ19MZW5ndGgNCitQeU1hcHBpbmdfU2V0SXRlbVN0cmluZw0KK1B5TWFwcGluZ19TaXplDQor
UHlNYXJzaGFsX0luaXQNCitQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZQ0KK1B5TWFy
c2hhbF9SZWFkTG9uZ0Zyb21GaWxlDQorUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tRmlsZQ0KK1B5
TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZw0KK1B5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmls
ZQ0KK1B5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUNCitQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0Zp
bGUNCitQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZw0KK1B5TWVtYmVyX0dldA0KK1B5TWVt
YmVyX0dldE9uZQ0KK1B5TWVtYmVyX1NldA0KK1B5TWVtYmVyX1NldE9uZQ0KK1B5TWVtX0ZyZWUN
CitQeU1lbV9NYWxsb2MNCitQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcg0KK1B5TWVtb3J5Vmlld19G
cm9tT2JqZWN0DQorUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMNCitQeU1lbV9SZWFsbG9jDQor
X1B5X21lcmdlYml0c2V0DQorX1B5X21ldGFfZ3JhbW1hcg0KK1B5X21ldGFfZ3JhbW1hcg0KK1B5
TWV0aG9kX0NsYXNzDQorUHlNZXRob2RfQ2xlYXJGcmVlTGlzdA0KK1B5TWV0aG9kX0ZpbmkNCitQ
eU1ldGhvZF9GdW5jdGlvbg0KK1B5TWV0aG9kX05ldw0KK1B5TWV0aG9kX1NlbGYNCitfUHlfTW9k
dWxlDQorUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQNCitQeU1vZHVsZV9BZGRPYmplY3QNCitQeU1v
ZHVsZV9BZGRTdHJpbmdDb25zdGFudA0KK19QeU1vZHVsZV9DbGVhcg0KK1B5TW9kdWxlX0dldERp
Y3QNCitQeU1vZHVsZV9HZXRGaWxlbmFtZQ0KK1B5TW9kdWxlX0dldE5hbWUNCitQeU1vZHVsZV9H
ZXRXYXJuaW5nc01vZHVsZQ0KK1B5TW9kdWxlX05ldw0KK19QeV9OYW1lDQorX1B5X25ld2JpdHNl
dA0KK19QeV9uZXdncmFtbWFyDQorUHlfTmV3SW50ZXJwcmV0ZXINCitQeU5vZGVfQWRkQ2hpbGQN
CitQeU5vZGVfQ29tcGlsZQ0KK1B5Tm9kZV9GcmVlDQorUHlOb2RlX0xpc3RUcmVlDQorUHlOb2Rl
X05ldw0KK19QeU5vZGVfU2l6ZU9mDQorX1B5X051bQ0KK1B5TnVtYmVyX0Fic29sdXRlDQorUHlO
dW1iZXJfQWRkDQorUHlOdW1iZXJfQW5kDQorUHlOdW1iZXJfQXNPZmZfdA0KK1B5TnVtYmVyX0Fz
U3NpemVfdA0KK1B5TnVtYmVyX0NoZWNrDQorUHlOdW1iZXJfQ29lcmNlDQorUHlOdW1iZXJfQ29l
cmNlRXgNCitfUHlOdW1iZXJfQ29udmVydEludGVncmFsVG9JbnQNCitQeU51bWJlcl9EaXZpZGUN
CitQeU51bWJlcl9EaXZtb2QNCitQeU51bWJlcl9GbG9hdA0KK1B5TnVtYmVyX0Zsb29yRGl2aWRl
DQorUHlOdW1iZXJfSW5kZXgNCitQeU51bWJlcl9JblBsYWNlQWRkDQorUHlOdW1iZXJfSW5QbGFj
ZUFuZA0KK1B5TnVtYmVyX0luUGxhY2VEaXZpZGUNCitQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZp
ZGUNCitQeU51bWJlcl9JblBsYWNlTHNoaWZ0DQorUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5DQor
UHlOdW1iZXJfSW5QbGFjZU9yDQorUHlOdW1iZXJfSW5QbGFjZVBvd2VyDQorUHlOdW1iZXJfSW5Q
bGFjZVJlbWFpbmRlcg0KK1B5TnVtYmVyX0luUGxhY2VSc2hpZnQNCitQeU51bWJlcl9JblBsYWNl
U3VidHJhY3QNCitQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQ0KK1B5TnVtYmVyX0luUGxhY2VY
b3INCitQeU51bWJlcl9JbnQNCitQeU51bWJlcl9JbnZlcnQNCitQeU51bWJlcl9Mb25nDQorUHlO
dW1iZXJfTHNoaWZ0DQorUHlOdW1iZXJfTXVsdGlwbHkNCitQeU51bWJlcl9OZWdhdGl2ZQ0KK1B5
TnVtYmVyX09yDQorUHlOdW1iZXJfUG9zaXRpdmUNCitQeU51bWJlcl9Qb3dlcg0KK1B5TnVtYmVy
X1JlbWFpbmRlcg0KK1B5TnVtYmVyX1JzaGlmdA0KK1B5TnVtYmVyX1N1YnRyYWN0DQorUHlOdW1i
ZXJfVG9CYXNlDQorUHlOdW1iZXJfVHJ1ZURpdmlkZQ0KK1B5TnVtYmVyX1hvcg0KK1B5T2JqZWN0
X0FzQ2hhckJ1ZmZlcg0KK1B5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3INCitQeU9iamVjdF9Bc1Jl
YWRCdWZmZXINCitQeU9iamVjdF9Bc1dyaXRlQnVmZmVyDQorUHlPYmplY3RfQ2FsbA0KK1B5T2Jq
ZWN0X0NhbGxGdW5jdGlvbg0KK1B5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MNCitfUHlPYmpl
Y3RfQ2FsbEZ1bmN0aW9uX1NpemVUDQorUHlPYmplY3RfQ2FsbE1ldGhvZA0KK1B5T2JqZWN0X0Nh
bGxNZXRob2RPYmpBcmdzDQorX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQNCitQeU9iamVjdF9D
YWxsT2JqZWN0DQorUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyDQorUHlPYmplY3RfQ2xlYXJXZWFr
UmVmcw0KK1B5T2JqZWN0X0NtcA0KK1B5T2JqZWN0X0NvbXBhcmUNCitQeU9iamVjdF9Db3B5RGF0
YQ0KK19QeU9iamVjdF9EZWwNCitQeU9iamVjdF9EZWxJdGVtDQorUHlPYmplY3RfRGVsSXRlbVN0
cmluZw0KK1B5T2JqZWN0X0Rpcg0KK19QeU9iamVjdF9EdW1wDQorUHlPYmplY3RfRm9ybWF0DQor
UHlPYmplY3RfRnJlZQ0KK19QeU9iamVjdF9HQ19EZWwNCitQeU9iamVjdF9HQ19EZWwNCitfUHlP
YmplY3RfR0NfTWFsbG9jDQorX1B5T2JqZWN0X0dDX05ldw0KK19QeU9iamVjdF9HQ19OZXdWYXIN
CitfUHlPYmplY3RfR0NfUmVzaXplDQorX1B5T2JqZWN0X0dDX1RyYWNrDQorUHlPYmplY3RfR0Nf
VHJhY2sNCitfUHlPYmplY3RfR0NfVW5UcmFjaw0KK1B5T2JqZWN0X0dDX1VuVHJhY2sNCitQeU9i
amVjdF9HZW5lcmljR2V0QXR0cg0KK19QeU9iamVjdF9HZW5lcmljR2V0QXR0cldpdGhEaWN0DQor
UHlPYmplY3RfR2VuZXJpY1NldEF0dHINCitfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGlj
dA0KK1B5T2JqZWN0X0dldEF0dHINCitQeU9iamVjdF9HZXRBdHRyU3RyaW5nDQorUHlPYmplY3Rf
R2V0QnVmZmVyDQorX1B5T2JqZWN0X0dldERpY3RQdHINCitQeU9iamVjdF9HZXRJdGVtDQorUHlP
YmplY3RfR2V0SXRlcg0KK1B5T2JqZWN0X0hhc0F0dHINCitQeU9iamVjdF9IYXNBdHRyU3RyaW5n
DQorUHlPYmplY3RfSGFzaA0KK1B5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZA0KK1B5T2JqZWN0
X0luaXQNCitQeU9iamVjdF9Jbml0VmFyDQorUHlPYmplY3RfSXNJbnN0YW5jZQ0KK1B5T2JqZWN0
X0lzU3ViY2xhc3MNCitQeU9iamVjdF9Jc1RydWUNCitQeU9iamVjdF9MZW5ndGgNCitfUHlPYmpl
Y3RfTGVuZ3RoSGludA0KK19QeU9iamVjdF9Mb29rdXBTcGVjaWFsDQorUHlPYmplY3RfTWFsbG9j
DQorX1B5T2JqZWN0X05ldw0KK19QeU9iamVjdF9OZXdWYXINCitfUHlPYmplY3RfTmV4dE5vdElt
cGxlbWVudGVkDQorUHlPYmplY3RfTm90DQorUHlPYmplY3RfUHJpbnQNCitfUHlPYmplY3RfUmVh
bElzSW5zdGFuY2UNCitfUHlPYmplY3RfUmVhbElzU3ViY2xhc3MNCitQeU9iamVjdF9SZWFsbG9j
DQorUHlPYmplY3RfUmVwcg0KK1B5T2JqZWN0X1JpY2hDb21wYXJlDQorUHlPYmplY3RfUmljaENv
bXBhcmVCb29sDQorUHlPYmplY3RfU2VsZkl0ZXINCitQeU9iamVjdF9TZXRBdHRyDQorUHlPYmpl
Y3RfU2V0QXR0clN0cmluZw0KK1B5T2JqZWN0X1NldEl0ZW0NCitQeU9iamVjdF9TaXplDQorX1B5
T2JqZWN0X1Nsb3RDb21wYXJlDQorX1B5T2JqZWN0X1N0cg0KK1B5T2JqZWN0X1N0cg0KK1B5T2Jq
ZWN0X1R5cGUNCitQeU9iamVjdF9Vbmljb2RlDQorUHlPU19BZnRlckZvcmsNCitQeU9TX2FzY2lp
X2F0b2YNCitfUHlPU19hc2NpaV9mb3JtYXRkDQorUHlPU19hc2NpaV9mb3JtYXRkDQorX1B5T1Nf
YXNjaWlfc3RydG9kDQorUHlPU19hc2NpaV9zdHJ0b2QNCitQeU9TX2RvdWJsZV90b19zdHJpbmcN
CitQeU9TX0ZpbmlJbnRlcnJ1cHRzDQorX1B5T1NfR2V0T3B0DQorUHlPU19nZXRzaWcNCitQeU9T
X0luaXRJbnRlcnJ1cHRzDQorUHlPU19JbnRlcnJ1cHRPY2N1cnJlZA0KK1B5T1NfbXlzdHJpY21w
DQorUHlPU19teXN0cm5pY21wDQorUHlPU19SZWFkbGluZQ0KK19QeU9TX1Jlc2V0R2V0T3B0DQor
UHlPU19zZXRzaWcNCitQeU9TX3NucHJpbnRmDQorUHlPU19TdGRpb1JlYWRsaW5lDQorUHlPU19z
dHJpbmdfdG9fZG91YmxlDQorUHlPU19zdHJ0b2wNCitQeU9TX3N0cnRvdWwNCitfUHlPU19VUmFu
ZG9tDQorUHlPU192c25wcmludGYNCitfUHlfcGFyc2VfaW5mX29yX25hbg0KK1B5UGFyc2VyX0Fk
ZFRva2VuDQorUHlQYXJzZXJfQVNURnJvbUZpbGUNCitQeVBhcnNlcl9BU1RGcm9tU3RyaW5nDQor
UHlQYXJzZXJfRGVsZXRlDQorUHlQYXJzZXJfTmV3DQorUHlQYXJzZXJfUGFyc2VGaWxlDQorUHlQ
YXJzZXJfUGFyc2VGaWxlRmxhZ3MNCitQeVBhcnNlcl9QYXJzZUZpbGVGbGFnc0V4DQorUHlQYXJz
ZXJfUGFyc2VTdHJpbmcNCitQeVBhcnNlcl9QYXJzZVN0cmluZ0ZsYWdzDQorUHlQYXJzZXJfUGFy
c2VTdHJpbmdGbGFnc0ZpbGVuYW1lDQorUHlQYXJzZXJfUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1l
RXgNCitQeVBhcnNlcl9TZXRFcnJvcg0KK1B5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZQ0KK1B5UGFy
c2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzDQorUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmcNCitQ
eVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZpbGVuYW1lDQorUHlQYXJzZXJfU2ltcGxlUGFyc2VT
dHJpbmdGbGFncw0KK1B5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZQ0KK19Q
eV9QYXNzDQorX1B5X3BnZW4NCitQeV9wZ2VuDQorX1B5X1ByaW50DQorX1B5X3ByaW50Z3JhbW1h
cg0KK19QeV9wcmludG5vbnRlcm1pbmFscw0KK19QeV9SYWlzZQ0KK19QeVJhbmRvbV9GaW5pDQor
X1B5UmFuZG9tX0luaXQNCitfUHlfUmVhZHlUeXBlcw0KK19QeV9SZWxlYXNlSW50ZXJuZWRTdHJp
bmdzDQorX1B5X1JlcHINCitQeV9SZXByRW50ZXINCitQeV9SZXByTGVhdmUNCitfUHlfUmV0dXJu
DQorUHlSdW5fQW55RmlsZQ0KK1B5UnVuX0FueUZpbGVFeA0KK1B5UnVuX0FueUZpbGVFeEZsYWdz
DQorUHlSdW5fQW55RmlsZUZsYWdzDQorUHlSdW5fRmlsZQ0KK1B5UnVuX0ZpbGVFeA0KK1B5UnVu
X0ZpbGVFeEZsYWdzDQorUHlSdW5fRmlsZUZsYWdzDQorUHlSdW5fSW50ZXJhY3RpdmVMb29wDQor
UHlSdW5fSW50ZXJhY3RpdmVMb29wRmxhZ3MNCitQeVJ1bl9JbnRlcmFjdGl2ZU9uZQ0KK1B5UnVu
X0ludGVyYWN0aXZlT25lRmxhZ3MNCitQeVJ1bl9TaW1wbGVGaWxlDQorUHlSdW5fU2ltcGxlRmls
ZUV4DQorUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MNCitQeVJ1bl9TaW1wbGVTdHJpbmcNCitQeVJ1
bl9TaW1wbGVTdHJpbmdGbGFncw0KK1B5UnVuX1N0cmluZw0KK1B5UnVuX1N0cmluZ0ZsYWdzDQor
X1B5X3NhbWViaXRzZXQNCitQeVNlcUl0ZXJfTmV3DQorUHlTZXF1ZW5jZV9DaGVjaw0KK1B5U2Vx
dWVuY2VfQ29uY2F0DQorUHlTZXF1ZW5jZV9Db250YWlucw0KK1B5U2VxdWVuY2VfQ291bnQNCitQ
eVNlcXVlbmNlX0RlbEl0ZW0NCitQeVNlcXVlbmNlX0RlbFNsaWNlDQorUHlTZXF1ZW5jZV9GYXN0
DQorUHlTZXF1ZW5jZV9HZXRJdGVtDQorUHlTZXF1ZW5jZV9HZXRTbGljZQ0KK1B5U2VxdWVuY2Vf
SW4NCitQeVNlcXVlbmNlX0luZGV4DQorUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0DQorUHlTZXF1
ZW5jZV9JblBsYWNlUmVwZWF0DQorX1B5U2VxdWVuY2VfSXRlclNlYXJjaA0KK1B5U2VxdWVuY2Vf
TGVuZ3RoDQorUHlTZXF1ZW5jZV9MaXN0DQorUHlTZXF1ZW5jZV9SZXBlYXQNCitQeVNlcXVlbmNl
X1NldEl0ZW0NCitQeVNlcXVlbmNlX1NldFNsaWNlDQorUHlTZXF1ZW5jZV9TaXplDQorUHlTZXF1
ZW5jZV9UdXBsZQ0KK19QeV9TZXQNCitfUHlfc2V0XzM4N2NvbnRyb2x3b3JkDQorUHlTZXRfQWRk
DQorUHlTZXRfQ2xlYXINCitfUHlfU2V0Q29tcA0KK1B5U2V0X0NvbnRhaW5zDQorUHlTZXRfRGlz
Y2FyZA0KK1B5U2V0X0ZpbmkNCitQeVNldF9OZXcNCitfUHlTZXRfTmV4dA0KK19QeVNldF9OZXh0
RW50cnkNCitQeVNldF9Qb3ANCitQeV9TZXRQcm9ncmFtTmFtZQ0KK1B5X1NldFB5dGhvbkhvbWUN
CitQeV9TZXRSZWN1cnNpb25MaW1pdA0KK1B5U2V0X1NpemUNCitfUHlTZXRfVXBkYXRlDQorUHlT
aWduYWxfU2V0V2FrZXVwRmQNCitfUHlfU2xpY2UNCitfUHlTbGljZV9BZGp1c3RJbmRpY2VzDQor
X1B5U2xpY2VfRnJvbUluZGljZXMNCitQeVNsaWNlX0dldEluZGljZXMNCitQeVNsaWNlX0dldElu
ZGljZXNFeA0KK1B5U2xpY2VfTmV3DQorX1B5U2xpY2VfVW5wYWNrDQorUHlTdGF0aWNNZXRob2Rf
TmV3DQorUHlTVF9HZXRTY29wZQ0KK19QeV9TdHINCitQeVN0cmluZ19Bc0RlY29kZWRPYmplY3QN
CitQeVN0cmluZ19Bc0RlY29kZWRTdHJpbmcNCitQeVN0cmluZ19Bc0VuY29kZWRPYmplY3QNCitQ
eVN0cmluZ19Bc0VuY29kZWRTdHJpbmcNCitQeVN0cmluZ19Bc1N0cmluZw0KK1B5U3RyaW5nX0Fz
U3RyaW5nQW5kU2l6ZQ0KK1B5U3RyaW5nX0NvbmNhdA0KK1B5U3RyaW5nX0NvbmNhdEFuZERlbA0K
K1B5U3RyaW5nX0RlY29kZQ0KK1B5U3RyaW5nX0RlY29kZUVzY2FwZQ0KK1B5U3RyaW5nX0VuY29k
ZQ0KK19QeVN0cmluZ19FcQ0KK1B5U3RyaW5nX0ZpbmkNCitQeVN0cmluZ19Gb3JtYXQNCitfUHlT
dHJpbmdfRm9ybWF0TG9uZw0KK1B5U3RyaW5nX0Zyb21Gb3JtYXQNCitQeVN0cmluZ19Gcm9tRm9y
bWF0Vg0KK1B5U3RyaW5nX0Zyb21TdHJpbmcNCitQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZQ0K
K19QeVN0cmluZ19JbnNlcnRUaG91c2FuZHNHcm91cGluZw0KK1B5U3RyaW5nX0ludGVybkZyb21T
dHJpbmcNCitQeVN0cmluZ19JbnRlcm5JbW1vcnRhbA0KK1B5U3RyaW5nX0ludGVybkluUGxhY2UN
CitfUHlTdHJpbmdfSm9pbg0KK1B5U3RyaW5nX1JlcHINCitfUHlTdHJpbmdfUmVzaXplDQorUHlT
dHJpbmdfU2l6ZQ0KK1B5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUNCitQeVN0cnVjdFNlcXVlbmNl
X05ldw0KK19QeV9TdWJzY3JpcHQNCitQeV9TdWJ2ZXJzaW9uUmV2aXNpb24NCitQeV9TdWJ2ZXJz
aW9uU2hvcnRCcmFuY2gNCitfUHlfU3VpdGUNCitQeVN5bXRhYmxlX0J1aWxkDQorUHlTeW10YWJs
ZV9GcmVlDQorUHlTeW10YWJsZV9Mb29rdXANCitQeV9TeW10YWJsZVN0cmluZw0KK1B5U3lzX0Fk
ZFdhcm5PcHRpb24NCitQeVN5c19HZXRGaWxlDQorUHlTeXNfR2V0T2JqZWN0DQorX1B5U3lzX0dl
dFNpemVPZg0KK1B5U3lzX0hhc1dhcm5PcHRpb25zDQorX1B5U3lzX0luaXQNCitQeVN5c19SZXNl
dFdhcm5PcHRpb25zDQorUHlTeXNfU2V0QXJndg0KK1B5U3lzX1NldEFyZ3ZFeA0KK1B5U3lzX1Nl
dE9iamVjdA0KK1B5U3lzX1NldFBhdGgNCitQeVN5c19Xcml0ZVN0ZGVycg0KK1B5U3lzX1dyaXRl
U3Rkb3V0DQorX1B5VGhyZWFkX0N1cnJlbnRGcmFtZXMNCitQeVRocmVhZFN0YXRlX0NsZWFyDQor
UHlUaHJlYWRTdGF0ZV9EZWxldGUNCitQeVRocmVhZFN0YXRlX0dldA0KK1B5VGhyZWFkU3RhdGVf
R2V0RGljdA0KK19QeVRocmVhZFN0YXRlX0luaXQNCitQeVRocmVhZFN0YXRlX05ldw0KK1B5VGhy
ZWFkU3RhdGVfTmV4dA0KK19QeVRocmVhZFN0YXRlX1ByZWFsbG9jDQorUHlUaHJlYWRTdGF0ZV9T
ZXRBc3luY0V4Yw0KK1B5VGhyZWFkU3RhdGVfU3dhcA0KK19QeVRpbWVfRG91YmxlVG9UaW1ldA0K
K19QeVRpbWVfRmxvYXRUaW1lDQorUHlUb2tlbml6ZXJfRnJlZQ0KK1B5VG9rZW5pemVyX0Zyb21G
aWxlDQorUHlUb2tlbml6ZXJfRnJvbVN0cmluZw0KK1B5VG9rZW5pemVyX0dldA0KK1B5VG9rZW5p
emVyX1Jlc3RvcmVFbmNvZGluZw0KK1B5VG9rZW5fT25lQ2hhcg0KK1B5VG9rZW5fVGhyZWVDaGFy
cw0KK1B5VG9rZW5fVHdvQ2hhcnMNCitQeVRyYWNlQmFja19IZXJlDQorUHlUcmFjZUJhY2tfUHJp
bnQNCitfUHlfdHJhbnNsYXRlbGFiZWxzDQorX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QNCitfUHlU
cmFzaF9kZXN0cm95X2NoYWluDQorX1B5VHJhc2hfdGhyZWFkX2RlcG9zaXRfb2JqZWN0DQorX1B5
VHJhc2hfdGhyZWFkX2Rlc3Ryb3lfY2hhaW4NCitfUHlfVHJ5RXhjZXB0DQorX1B5X1RyeUZpbmFs
bHkNCitfUHlfVHVwbGUNCitQeVR1cGxlX0NsZWFyRnJlZUxpc3QNCitQeVR1cGxlX0ZpbmkNCitQ
eVR1cGxlX0dldEl0ZW0NCitQeVR1cGxlX0dldFNsaWNlDQorX1B5VHVwbGVfTWF5YmVVbnRyYWNr
DQorUHlUdXBsZV9OZXcNCitQeVR1cGxlX1BhY2sNCitfUHlUdXBsZV9SZXNpemUNCitQeVR1cGxl
X1NldEl0ZW0NCitQeVR1cGxlX1NpemUNCitQeVR5cGVfQ2xlYXJDYWNoZQ0KK1B5VHlwZV9HZW5l
cmljQWxsb2MNCitQeVR5cGVfR2VuZXJpY05ldw0KK1B5VHlwZV9Jc1N1YnR5cGUNCitfUHlUeXBl
X0xvb2t1cA0KK1B5VHlwZV9Nb2RpZmllZA0KK1B5VHlwZV9SZWFkeQ0KK19QeV9VaWRfQ29udmVy
dGVyDQorX1B5X1VuYXJ5T3ANCitQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0DQorUHlVbmljb2Rl
X0J1aWxkRW5jb2RpbmdNYXANCitQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUNCitQeVVuaWNv
ZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZw0KK1B5VW5pY29kZURlY29kZUVycm9yX0dldEVuZA0K
K1B5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdA0KK1B5VW5pY29kZURlY29kZUVycm9yX0dl
dFJlYXNvbg0KK1B5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0DQorUHlVbmljb2RlRGVjb2Rl
RXJyb3JfU2V0RW5kDQorUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uDQorUHlVbmljb2Rl
RGVjb2RlRXJyb3JfU2V0U3RhcnQNCitfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbA0K
K1B5VW5pY29kZV9EZWNvZGVVVEY3DQorUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bA0KK1B5
VW5pY29kZUVuY29kZUVycm9yX0NyZWF0ZQ0KK1B5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29k
aW5nDQorUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kDQorUHlVbmljb2RlRW5jb2RlRXJyb3Jf
R2V0T2JqZWN0DQorUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uDQorUHlVbmljb2RlRW5j
b2RlRXJyb3JfR2V0U3RhcnQNCitQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQNCitQeVVuaWNv
ZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24NCitQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydA0K
K1B5VW5pY29kZV9FbmNvZGVVVEY3DQorX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZA0KK1B5VW5p
Y29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZQ0KK1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVu
ZA0KK1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdA0KK1B5VW5pY29kZVRyYW5zbGF0
ZUVycm9yX0dldFJlYXNvbg0KK1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0DQorUHlV
bmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kDQorUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0
UmVhc29uDQorUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQNCitQeVVuaWNvZGVVQ1My
X0FzQVNDSUlTdHJpbmcNCitQeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZw0KK19QeVVuaWNv
ZGVVQ1MyX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcNCitQeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZE9i
amVjdA0KK1B5VW5pY29kZVVDUzJfQXNFbmNvZGVkU3RyaW5nDQorUHlVbmljb2RlVUNTMl9Bc0xh
dGluMVN0cmluZw0KK1B5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nDQorUHlV
bmljb2RlVUNTMl9Bc1VuaWNvZGUNCitQeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmlu
Zw0KK1B5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZw0KK1B5VW5pY29kZVVDUzJfQXNVVEYzMlN0
cmluZw0KK1B5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nDQorUHlVbmljb2RlVUNTMl9Bc1dpZGVD
aGFyDQorUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0DQorUHlVbmljb2RlVUNTMl9Db21wYXJl
DQorUHlVbmljb2RlVUNTMl9Db25jYXQNCitQeVVuaWNvZGVVQ1MyX0NvbnRhaW5zDQorUHlVbmlj
b2RlVUNTMl9Db3VudA0KK1B5VW5pY29kZVVDUzJfRGVjb2RlDQorUHlVbmljb2RlVUNTMl9EZWNv
ZGVBU0NJSQ0KK1B5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcA0KK1B5VW5pY29kZVVDUzJfRGVj
b2RlTGF0aW4xDQorUHlVbmljb2RlVUNTMl9EZWNvZGVSYXdVbmljb2RlRXNjYXBlDQorUHlVbmlj
b2RlVUNTMl9EZWNvZGVVbmljb2RlRXNjYXBlDQorUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNg0K
K1B5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bA0KK1B5VW5pY29kZVVDUzJfRGVjb2Rl
VVRGMzINCitQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyU3RhdGVmdWwNCitQeVVuaWNvZGVVQ1My
X0RlY29kZVVURjgNCitQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bA0KK1B5VW5pY29k
ZVVDUzJfRW5jb2RlDQorUHlVbmljb2RlVUNTMl9FbmNvZGVBU0NJSQ0KK1B5VW5pY29kZVVDUzJf
RW5jb2RlQ2hhcm1hcA0KK1B5VW5pY29kZVVDUzJfRW5jb2RlRGVjaW1hbA0KK1B5VW5pY29kZVVD
UzJfRW5jb2RlTGF0aW4xDQorUHlVbmljb2RlVUNTMl9FbmNvZGVSYXdVbmljb2RlRXNjYXBlDQor
UHlVbmljb2RlVUNTMl9FbmNvZGVVbmljb2RlRXNjYXBlDQorUHlVbmljb2RlVUNTMl9FbmNvZGVV
VEYxNg0KK1B5VW5pY29kZVVDUzJfRW5jb2RlVVRGMzINCitQeVVuaWNvZGVVQ1MyX0VuY29kZVVU
RjgNCitQeVVuaWNvZGVVQ1MyX0ZpbmQNCitfUHlVbmljb2RlVUNTMl9GaW5pDQorUHlVbmljb2Rl
VUNTMl9Gb3JtYXQNCitQeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0DQorUHlVbmljb2Rl
VUNTMl9Gcm9tRm9ybWF0DQorUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0Vg0KK1B5VW5pY29kZVVD
UzJfRnJvbU9iamVjdA0KK1B5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwNCitQeVVuaWNvZGVVQ1My
X0Zyb21TdHJpbmcNCitQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplDQorUHlVbmljb2Rl
VUNTMl9Gcm9tVW5pY29kZQ0KK1B5VW5pY29kZVVDUzJfRnJvbVdpZGVDaGFyDQorUHlVbmljb2Rl
VUNTMl9HZXREZWZhdWx0RW5jb2RpbmcNCitQeVVuaWNvZGVVQ1MyX0dldE1heA0KK1B5VW5pY29k
ZVVDUzJfR2V0U2l6ZQ0KK19QeVVuaWNvZGVVQ1MyX0luaXQNCitfUHlVbmljb2RlVUNTMl9Jc0Fs
cGhhDQorX1B5VW5pY29kZVVDUzJfSXNEZWNpbWFsRGlnaXQNCitfUHlVbmljb2RlVUNTMl9Jc0Rp
Z2l0DQorX1B5VW5pY29kZVVDUzJfSXNMaW5lYnJlYWsNCitfUHlVbmljb2RlVUNTMl9Jc0xvd2Vy
Y2FzZQ0KK19QeVVuaWNvZGVVQ1MyX0lzTnVtZXJpYw0KK19QeVVuaWNvZGVVQ1MyX0lzVGl0bGVj
YXNlDQorX1B5VW5pY29kZVVDUzJfSXNVcHBlcmNhc2UNCitfUHlVbmljb2RlVUNTMl9Jc1doaXRl
c3BhY2UNCitQeVVuaWNvZGVVQ1MyX0pvaW4NCitQeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbg0KK1B5
VW5pY29kZVVDUzJfUmVwbGFjZQ0KK1B5VW5pY29kZVVDUzJfUmVzaXplDQorUHlVbmljb2RlVUNT
Ml9SaWNoQ29tcGFyZQ0KK1B5VW5pY29kZVVDUzJfUlBhcnRpdGlvbg0KK1B5VW5pY29kZVVDUzJf
UlNwbGl0DQorUHlVbmljb2RlVUNTMl9TZXREZWZhdWx0RW5jb2RpbmcNCitQeVVuaWNvZGVVQ1My
X1NwbGl0DQorUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzDQorUHlVbmljb2RlVUNTMl9UYWlsbWF0
Y2gNCitfUHlVbmljb2RlVUNTMl9Ub0RlY2ltYWxEaWdpdA0KK19QeVVuaWNvZGVVQ1MyX1RvRGln
aXQNCitfUHlVbmljb2RlVUNTMl9Ub0xvd2VyY2FzZQ0KK19QeVVuaWNvZGVVQ1MyX1RvTnVtZXJp
Yw0KK19QeVVuaWNvZGVVQ1MyX1RvVGl0bGVjYXNlDQorX1B5VW5pY29kZVVDUzJfVG9VcHBlcmNh
c2UNCitQeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZQ0KK1B5VW5pY29kZVVDUzJfVHJhbnNsYXRlQ2hh
cm1hcA0KK19QeVVuaWNvZGVfWFN0cmlwDQorUHlfVW5pdmVyc2FsTmV3bGluZUZnZXRzDQorUHlf
VW5pdmVyc2FsTmV3bGluZUZyZWFkDQorUHlfVmFCdWlsZFZhbHVlDQorX1B5X1ZhQnVpbGRWYWx1
ZV9TaXplVA0KK19QeVdhcm5pbmdzX0luaXQNCitfUHlXZWFrcmVmX0NsZWFyUmVmDQorUHlXZWFr
cmVmX0dldE9iamVjdA0KK19QeVdlYWtyZWZfR2V0V2Vha3JlZkNvdW50DQorUHlXZWFrcmVmX05l
d1Byb3h5DQorUHlXZWFrcmVmX05ld1JlZg0KK19QeV9XaGlsZQ0KK19QeV9XaXRoDQorUHlXcmFw
cGVyX05ldw0KK19QeV9ZaWVsZA0KK1JvdGF0aW5nVHJlZV9BZGQNCitSb3RhdGluZ1RyZWVfRW51
bQ0KK1JvdGF0aW5nVHJlZV9HZXQNCit5dXZfc3Y0MTFfdG9fY2w0MjJkYw0KK3l1dl9zdjQxMV90
b19jbDQyMmRjX3F1YXJ0ZXJzaXplDQoreXV2X3N2NDExX3RvX2NsNDIyZGNfc2l4dGVlbnRoc2l6
ZQ0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 17:55:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 17:55:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYDee-0003ZH-LY; Tue, 04 Jun 2019 17:55:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hpYV=UD=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hYDed-0003ZB-T1
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 17:55:23 +0000
X-Inumbo-ID: e9d20716-86f1-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id e9d20716-86f1-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 17:55:18 +0000 (UTC)
IronPort-SDR: 7obxLl3PcTqM44tCGVPG5WDVZML330+AMD4RZrN9UOVOovVDR9T0Mn1CZPktSkwOqhf9u5K/FX
 qemm36PMKmYA==
IronPort-PHdr: =?us-ascii?q?9a23=3AbKWLQx0H19cyfuuBsmDT+DRfVm0co7zxezQtwd?=
 =?us-ascii?q?8ZseMSKvad9pjvdHbS+e9qxAeQG9mCsrQd0Lud6vm+EUU7or+5+EgYd5JNUx?=
 =?us-ascii?q?JXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQ?=
 =?us-ascii?q?viPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCegbb9oMRm7owHcusYLjYd/K6s61w?=
 =?us-ascii?q?fErGZPd+lK321jOEidnwz75se+/Z5j9zpftvc8/MNeUqv0Yro1Q6VAADspL2?=
 =?us-ascii?q?466svrtQLeTQSU/XsTTn8WkhtTDAfb6hzxQ4r8vTH7tup53ymaINH2QLUpUj?=
 =?us-ascii?q?ms86tnVBnlgzocOjUn7G/YlNB/jKNDoBKguRN/xZLUYJqIP/Z6Z6/RYM8WSX?=
 =?us-ascii?q?ZEUstXSidPAJ6zb5EXAuQBI+hWsofzqVgJoxalGQWgGPnixiNSi3PqwaE31f?=
 =?us-ascii?q?kqHwHc3AwnGtIDqGrZrNLuNKcOUOC1yrTDwzPeb/NOxDf29Y/FfQwmofGXQb?=
 =?us-ascii?q?JwcMzRxVMrFwPYllWQtJfoMC+O1ugXq2ib8vFvWfi1i24gsgx8pCWkyMQ0io?=
 =?us-ascii?q?TRm44YxU3I+T96zYs1P9G0VlB3bNy+HJZery2WKoR7Tt44T2xruCs20KMKtJ?=
 =?us-ascii?q?C1cSQQ1ZgqyADTZvqaeIaS+B3jTvyeITJgiXJgf7Kwmgi9/FC7yu35Ssm0yF?=
 =?us-ascii?q?FKrjdZktXUtnACyRjT6s+fR/tj+0euwzeP1wTJ5u5YOkA4j7LbK4M6zbIqjJ?=
 =?us-ascii?q?oTtlzPHi7wmErokK+bblgo9+e15+j9YbjrpoWQO5Fqhgz8KKgjlNSzAeEiPQ?=
 =?us-ascii?q?gPW2ib9/681Lrm/UDhXLpKieY2krXYsJDcP8gborO5AxdI0os49xm/FC2q0M?=
 =?us-ascii?q?wFnXYcNl5FYhWHg5DzO17SOPD4Eeu/g1O0nTduxvDGOLzhApLWLnTajbjuY6?=
 =?us-ascii?q?h95FBYyAcoydBf5olUCq0aIP7pVU7+qtrYAgU+MwyuzObtEM992Z8GWWKTHq?=
 =?us-ascii?q?+ZN7vfsVGW6eIrIumMfJEatCz9K/g45v7hkX45lEQbfaa3wZQXbGq3Ee98L0?=
 =?us-ascii?q?qHfHrmms0BHnsSvgoiUOzqj0WPUSBXZ3moQq0z/is0CIS7AofZWI+tgaaN0z?=
 =?us-ascii?q?yhEZJLYWBGC02MHGzzd4WYRvcDdTieLdV9nTwfT7ShVpch2gq0uA/gzLo0Zt?=
 =?us-ascii?q?bTrygZs5Pkz5156vPekTk29CdoFIKN3mfLSHt7zU0SQDpj96dkvU17gnOeyb?=
 =?us-ascii?q?Uw1/dfDsBS4bVNTx8nHZXHifRnAZboXVSSLZ+yVF+6T4D+UnkKRdUrzopLOh?=
 =?us-ascii?q?4lFg=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2D0AQC/r/ZcjAPjVY1mHQEBBQEHBQG?=
 =?us-ascii?q?BZYJ7UgIwKI0PpnEJAQEBKREBAgEBhECCdzgTAQMBAQUBAQEBBAETAQEBJkw?=
 =?us-ascii?q?MgjopAYNmT4ECgyIBgg6ocYVHgyeBRoE0hwSGLj+JcoUVBJQzlFIHAoIQWgS?=
 =?us-ascii?q?FY4xpJ4MLk2ylBTcggVkzGoNfCYFbAUSLUIJcPAEBMQGBBQEBkEgBAQ?=
X-IPAS-Result: =?us-ascii?q?A2D0AQC/r/ZcjAPjVY1mHQEBBQEHBQGBZYJ7UgIwKI0Pp?=
 =?us-ascii?q?nEJAQEBKREBAgEBhECCdzgTAQMBAQUBAQEBBAETAQEBJkwMgjopAYNmT4ECg?=
 =?us-ascii?q?yIBgg6ocYVHgyeBRoE0hwSGLj+JcoUVBJQzlFIHAoIQWgSFY4xpJ4MLk2ylB?=
 =?us-ascii?q?TcggVkzGoNfCYFbAUSLUIJcPAEBMQGBBQEBkEgBAQ?=
X-IronPort-AV: E=Sophos;i="5.60,550,1549922400"; 
   d="scan'208";a="3488012"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 04 Jun 2019 20:55:16 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id A65E51A6014C;
 Tue,  4 Jun 2019 20:55:18 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id P3ahAZ4dQSpm; Tue,  4 Jun 2019 20:55:18 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 8B4631A6019D;
 Tue,  4 Jun 2019 20:55:18 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id UOXF89VT3AcD; Tue,  4 Jun 2019 20:55:18 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 669FC1A6014C;
 Tue,  4 Jun 2019 20:55:18 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Tue,  4 Jun 2019 20:55:06 +0300
Message-Id: <20190604175506.25702-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LIBCXX PATCH] Enable threads support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu,
 Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.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>

VGhpcyBwYXRjaCBkZWZpbmVzIHRoZSBtYWNyb3MgcmVxdWlyZWQgZm9yIGVuYWJsaW5nIHRocmVh
ZHMgc3VwcG9ydCBpbiBjeHgKbGlicmFyeS4KClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJh
ZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KU2lnbmVkLW9mZi1ieTog
Q29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KLS0tCiBDb25maWcudWsgICB8IDYg
KysrKysrCiBNYWtlZmlsZS51ayB8IDUgKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0
aW9ucygrKQoKZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awppbmRleCA5OTYyNjY5
Li4xNmExMWRjIDEwMDY0NAotLS0gYS9Db25maWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC00LDMg
KzQsOSBAQCBtZW51Y29uZmlnIExJQkNYWAogCXNlbGVjdCBMSUJDWFhBQkkKIAlzZWxlY3QgTElC
VU5XSU5ECiAgICAgZGVmYXVsdCBuCisKK2lmIExJQkNYWAorY29uZmlnIENYWF9USFJFQURTCisg
ICAgYm9vbCAiRW5hYmxlIENYWCB0aHJlYWRzIHN1cHBvcnQiCisgICAgZGVmYXVsdCBuCitlbmRp
ZgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awppbmRleCBhNDU1Mzg2Li5i
NjczZjcyIDEwMDY0NAotLS0gYS9NYWtlZmlsZS51aworKysgYi9NYWtlZmlsZS51awpAQCAtOTYs
NiArOTYsMTEgQEAgQ09ORklHX0ZMQUdTIAkrPSAtRCBMSUJDWFhfQlVJTERJTkdfTElCQ1hYQUJJ
IAlcCiAJCS1EIF9MSUJDUFBfUFJPVklERVNfREVGQVVMVF9SVU5FX1RBQkxFIC1EIF9fRFlOQU1J
Q19SRUVOVF9fCVwKIAogCitpZmRlZiBDT05GSUdfQ1hYX1RIUkVBRFMKK0NPTkZJR19GTEFHUyAr
PSAtRF9fbGludXhfXyAtRF9MSUJDUFBfSEFTX1RIUkVBRF9BUElfUFRIUkVBRAorZWxzZQorQ09O
RklHX0ZMQUdTICs9IC1EX0xJQkNQUF9IQVNfTk9fVEhSRUFEUworZW5kaWYKIAogTElCQ1hYX0NG
TEFHUy15ICAgICs9ICAgJChDT05GSUdfRkxBR1MpCiBMSUJDWFhfQ1hYRkxBR1MteSAgICArPSAg
ICQoQ09ORklHX0ZMQUdTKQotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 18:03:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 18: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 1hYDmr-0004i9-1t; Tue, 04 Jun 2019 18:03:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8HM0=UD=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYDmp-0004i4-1a
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 18:03:51 +0000
X-Inumbo-ID: 1a3bb964-86f3-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1a3bb964-86f3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 18:03:49 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id c2so16814855wrm.8
 for <minios-devel@lists.xen.org>; Tue, 04 Jun 2019 11:03:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=GPJjLosf0p22LvpKRpDbOPnYUdeJqI90u3GLq50JtNE=;
 b=ogyeu6TXKdJOStGAXazn60YA//YpgQYhbKUcECsir+6q18uuCeqDowrcKuZPR0hpaf
 AHT3FqBGKFcz0LQlXHytNuk/62qF2737sczD1qNZosndyGXz5nwV+LWMZcz+Eb/UoJMp
 iUSjKBg4QlVCEKLd5fri3dXBqJqjGZS220TQGA4YGdLNQI+yS7MW6cT0rg3D/DWCrJcA
 /48FrC8D4nHy348tm0sAtsB8WIkI1qsvCT9S45tLvdoL3ajvk4VWPkvIp+ux6xn6WSqV
 hTbcHQLA9D6JPF4NfU4aj6kxwc5iUlcDXc9BdqdeKEtvc98vSy/wh9DObhBHGxJAlaBC
 jWpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=GPJjLosf0p22LvpKRpDbOPnYUdeJqI90u3GLq50JtNE=;
 b=bzR5WjbIcmvsz/9GlBOiQlTvE0Ka+lQa676NkWLkkGjmgfocGqzBFwqLqtDGjzPFaY
 hworFHbhdmbf3RPQAgw/2vGkIAOTEExQvK41aMWdvG6MbQ2+gKvJfKuSENvgTn6jnYM8
 8J9TME9NgEHOftmK4MUMCvOBzVVoQGmAtHoBErNnMPYTiTNpjLvrTlplPHCVsFA99a3t
 RAr6blw465Du2H7M/gc6i0/Or0mCJHkXuALz/9w4r733/CfIJ9HVhQA0rCtXwIkMiPqc
 yelBIDEefNkEUnHfy2WJJNXO7kiIYsr+5z71JEKXqhYJIXjYd3JR+uyt4JTAv0ZNxE0n
 /JJw==
X-Gm-Message-State: APjAAAVntvCUeoLlkB6FS1lbHaMCbIgL3onHmIeglwyVLnfcdtcaI8cQ
 86j3UF1bDWkk3gEB/tMhPWw=
X-Google-Smtp-Source: APXvYqx6nCOWJMuYiAqvjPkE70E8d2GJmjiFIoFmY2ZgtlSA/wrbBzsrkSVEUK8ujIh6QohVqKJ6cw==
X-Received: by 2002:a5d:6242:: with SMTP id m2mr8290523wrv.310.1559671428173; 
 Tue, 04 Jun 2019 11:03:48 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id b5sm13970715wrx.22.2019.06.04.11.03.47
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 04 Jun 2019 11:03:47 -0700 (PDT)
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, minios-devel@lists.xen.org
References: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
 <20190603101118.13282-2-simon.kuenzer@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <6c204829-5104-d02b-8b56-6f209816a7c6@gmail.com>
Date: Tue, 4 Jun 2019 21:03:46 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190603101118.13282-2-simon.kuenzer@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/2] build: Option to build
 without GCC debug information
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.lupu@cs.pub.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>

VGhhbmtzLCBTaW1vbiEKClJldmlld2VkLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPgoKT24gNi8zLzE5IDE6MTEgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gSW50cm9k
dWNlcyB0aGUgb3B0aW9uIHRvIGJ1aWxkIHdpdGhvdXQgR0NDIGRlYnVnIGluZm9ybWF0aW9uIChg
LWcwYAo+IHBhcmFtZXRlcikuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdCByZWNvbW1lbmRlZCBidXQg
aXQgY2FuIHNwZWVkIHVwCj4gb3ZlcmFsbCBidWlsZGluZyB0aW1lLgo+IAo+IFNpZ25lZC1vZmYt
Ynk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICBDb25m
aWcudWsgICB8IDYgKysrKysrCj4gIE1ha2VmaWxlLnVrIHwgMiArKwo+ICAyIGZpbGVzIGNoYW5n
ZWQsIDggaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcu
dWsKPiBpbmRleCBiYjc5MWZkYi4uNGM3YTBlYzIgMTAwNjQ0Cj4gLS0tIGEvQ29uZmlnLnVrCj4g
KysrIGIvQ29uZmlnLnVrCj4gQEAgLTkyLDYgKzkyLDEyIEBAIGNob2ljZQo+ICAJaGVscAo+ICAJ
CVNldCB0aGUgbGV2ZWwgb2YgYXZhaWxhYmxlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KPiAgCj4g
K2NvbmZpZyBERUJVR19TWU1CT0xTX0xWTDAKPiArCWJvb2wgIkxldmVsIDAgKC1nMCksIE5vbmUi
Cj4gKwloZWxwCj4gKwkJTm8gZGVidWdnaW5nIGluZm9ybWF0aW9uLiBUaGlzIG9wdGlvbiBpcyBu
b3QgcmVjb21tZW5kZWQuCj4gKwkJQnVpbGRpbmcgdGltZSBpcyByZWR1Y2VkLgo+ICsKPiAgY29u
ZmlnIERFQlVHX1NZTUJPTFNfTFZMMQo+ICAJYm9vbCAiTGV2ZWwgMSAoLWcxKSIKPiAgCWhlbHAK
PiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awo+IGluZGV4IDM3MTZmYTY0
Li4yMDQ3ZGFlZiAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZS51awo+ICsrKyBiL01ha2VmaWxlLnVr
Cj4gQEAgLTQwLDYgKzQwLDggQEAgQ1hYRkxBR1MtJChDT05GSUdfT1BUSU1JWkVfTFRPKSAgICAg
ICAgICAgKz0gLWZsdG8KPiAgTElCTERGTEFHUy0kKENPTkZJR19PUFRJTUlaRV9MVE8pICAgICAg
ICAgKz0gJChDRkxBR1MpICQoQ0ZMQUdTLXkpCj4gIExERkxBR1MtJChDT05GSUdfT1BUSU1JWkVf
TFRPKSAgICAgICAgICAgICs9ICQoQ0ZMQUdTKSAkKENGTEFHUy15KQo+ICAKPiArQ0ZMQUdTLSQo
Q09ORklHX0RFQlVHX1NZTUJPTFNfTFZMMCkgICAgICAgKz0gLWcwCj4gK0NYWEZMQUdTLSQoQ09O
RklHX0RFQlVHX1NZTUJPTFNfTFZMMCkgICAgICs9IC1nMAo+ICBDRkxBR1MtJChDT05GSUdfREVC
VUdfU1lNQk9MU19MVkwxKSAgICAgICArPSAtZzEKPiAgQ1hYRkxBR1MtJChDT05GSUdfREVCVUdf
U1lNQk9MU19MVkwxKSAgICAgKz0gLWcxCj4gIENGTEFHUy0kKENPTkZJR19ERUJVR19TWU1CT0xT
X0xWTDIpICAgICAgICs9IC1nMgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 18:04:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 18:04: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 1hYDn0-0004jJ-LB; Tue, 04 Jun 2019 18:04:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8HM0=UD=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYDmz-0004it-IZ
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 18:04:01 +0000
X-Inumbo-ID: 211a0043-86f3-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 211a0043-86f3-11e9-8980-bc764e045a96;
 Tue, 04 Jun 2019 18:04:00 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id x4so16815086wrt.6
 for <minios-devel@lists.xen.org>; Tue, 04 Jun 2019 11:04:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=/zKi6Izm0KD7Nk8nU/qMYh1Gxc0Gg2wEadTWvBPCVhQ=;
 b=qgaDZ2s+UWDiaVpxg1J5u5j0M2fNmjBl5W1P4NS6a8VNB8VXSPYFG2BGWKZs4aLbdP
 I8hP/Tr/AM9eVEvzLnLVszllBv95oJmlggzV+NrD05ZphH0c2MyrngNvnLKUw4oOblR2
 RltNm9+sS+Fegjdv4ewMsDw6efBVJ3GemxmpJfJ6CVNFP2Dvsq9sc5K8nuAgfnOWeCYd
 eQM1y9LbjYR4gFFaPZ47iLexb3ToeqJpn5yqZXnR85xezlLxrKFATcmk7XmdFe8f13cz
 jV3rQPbbkGTQr6YAKGhgZCvtdmnpGlT2VgfsQvo9ZA99XQejA5palzQm6Re7X6dAa7ob
 LvxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=/zKi6Izm0KD7Nk8nU/qMYh1Gxc0Gg2wEadTWvBPCVhQ=;
 b=ZvIH7h/gyurGsaDAzFrCsVbDeIwdxu3I1JOnfM1wD1Z6QlBpAqD/kbsRuBW6AtSasf
 NyvW3mR/oqcYWoUwGmBCoNh3c59h2Ii8jaqYUviBpG+waiEDjaZPHJKsecnk3vKGooeY
 ebI0b4DATExzmak/cBGGtQDLmkfKtt41egCAaYY+02g/+HPMZ4+iGXbf+TjzkB3Ememj
 uygONojpLkfl9PeVtq0eZDXYtJCunHBZfAPa8QE3O9aeukCUumOsJ1rAVdeKJ2hpADLz
 7UqpG67+xWTpng/33do90pQH6b/qHy9Sc0NeAgu3y2VKdLKRGvHg++XjxZdqEZGAfm57
 j4Aw==
X-Gm-Message-State: APjAAAVTUcQWcN7UKk5kxMXkbyUTG9fgbqE4BySd/Po97hjnH86/cVb9
 +PuW2fKGS5zy1PejNHajj54UZ5x+
X-Google-Smtp-Source: APXvYqwieOQHIgrzBXI4XLVT+dmfzbdAgp58vMrH7CAw0ffzlvs5+fRweNG7tTBigaQzBNZUVICv9Q==
X-Received: by 2002:a5d:4b49:: with SMTP id w9mr7552772wrs.113.1559671439877; 
 Tue, 04 Jun 2019 11:03:59 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id k13sm12029581wmj.10.2019.06.04.11.03.59
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 04 Jun 2019 11:03:59 -0700 (PDT)
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, minios-devel@lists.xen.org
References: <20190603101118.13282-1-simon.kuenzer@neclab.eu>
 <20190603101118.13282-3-simon.kuenzer@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <70ef9675-3220-e4df-ef63-f9a2b6290959@gmail.com>
Date: Tue, 4 Jun 2019 21:03:58 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190603101118.13282-3-simon.kuenzer@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] build: Provide option for
 compressing images
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.lupu@cs.pub.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>

VGhhbmtzLCBTaW1vbiEKClJldmlld2VkLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPgoKT24gNi8zLzE5IDE6MTEgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gSW50cm9k
dWNlcyBhIG1lbnUgb3B0aW9uIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBjcmVhdGlvbiBvZgo+
IGNvbXByZXNzZWQgaW1hZ2VzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNp
bW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICBDb25maWcudWsgICAgICAgICAgfCA3ICsr
KysrKysKPiAgcGxhdC9rdm0vTGlua2VyLnVrIHwgMiArKwo+ICBwbGF0L3hlbi9MaW5rZXIudWsg
fCA0ICsrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt
LWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awo+IGluZGV4IDRjN2EwZWMyLi5jMmU0NzNlZSAx
MDA2NDQKPiAtLS0gYS9Db25maWcudWsKPiArKysgYi9Db25maWcudWsKPiBAQCAtMTI2LDYgKzEy
NiwxMyBAQCBjb25maWcgT1BUSU1JWkVfU1lNRklMRQo+ICAJaGVscAo+ICAJCUNyZWF0ZSBhIHNl
cGFyYXRlIGZpbGUgd2l0aCBhbGwgc3ltYm9sIGxvY2F0aW9ucwo+ICAKPiArY29uZmlnIE9QVElN
SVpFX0NPTVBSRVNTCj4gKwlib29sICJDb21wcmVzcyBpbWFnZXMiCj4gKwlkZWZhdWx0IHkKPiAr
CWhlbHAKPiArCQlDcmVhdGUgY29tcHJlc3NlZCBpbWFnZXMuIFBsZWFzZSBub3RlIHRoYXQgbm90
IGFsbCBwbGF0Zm9ybXMKPiArCQlzdXBwb3J0IGNvbXByZXNzaW5nLgo+ICsKPiAgY29uZmlnIFJF
Q09SRF9CVUlMRFRJTUUKPiAgCWJvb2wgIktlZXAgdHJhY2sgb2YgQnVpbGRpbmcgdGltZSIKPiAg
CWRlZmF1bHQgbgo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9MaW5rZXIudWsgYi9wbGF0L2t2bS9M
aW5rZXIudWsKPiBpbmRleCBkNjhmOTA4ZS4uNTRhZTVlOGUgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9r
dm0vTGlua2VyLnVrCj4gKysrIGIvcGxhdC9rdm0vTGlua2VyLnVrCj4gQEAgLTQ3LDkgKzQ3LDEx
IEBAIGlmZXEgKCQoQ09ORklHX09QVElNSVpFX1NZTUZJTEUpLHkpCj4gIAkkKGNhbGwgYnVpbGRf
Y21kLE5NLCwkQC5zeW0sXAo+ICAJICAgICAgICQoTk0pIC1uICRALmRiZyA+ICRALnN5bSkKPiAg
ZW5kaWYKPiAraWZlcSAoJChDT05GSUdfT1BUSU1JWkVfQ09NUFJFU1MpLHkpCj4gIAkkKGNhbGwg
YnVpbGRfY21kLEdaLCwkQC5neixcCj4gIAkgICAgICAgJChHWklQKSAtZiAtOSAtYyAkQCA+JEAu
Z3opCj4gIGVuZGlmCj4gK2VuZGlmCj4gIAo+ICAjIHJlZ2lzdGVyIGltYWdlIHRvIHRoZSBidWls
ZAo+ICBVS19JTUFHRVMtJChDT05GSUdfUExBVF9LVk0pICs9ICQoS1ZNX0lNQUdFKQo+IGRpZmYg
LS1naXQgYS9wbGF0L3hlbi9MaW5rZXIudWsgYi9wbGF0L3hlbi9MaW5rZXIudWsKPiBpbmRleCAz
YTRhNzcxNy4uNWJiNzVjZjAgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vTGlua2VyLnVrCj4gKysr
IGIvcGxhdC94ZW4vTGlua2VyLnVrCj4gQEAgLTQ1LDggKzQ1LDEwIEBAIGlmZXEgKCQoQ09ORklH
X09QVElNSVpFX1NZTUZJTEUpLHkpCj4gIGVuZGlmCj4gIAkkKGNhbGwgYnVpbGRfY21kLE9CSkNP
UFksLCRALFwKPiAgCSAgICAgICAkKE9CSkNPUFkpIC1PIGJpbmFyeSAkQC5lbGYgJEApCj4gK2lm
ZXEgKCQoQ09ORklHX09QVElNSVpFX0NPTVBSRVNTKSx5KQo+ICAJJChjYWxsIGJ1aWxkX2NtZCxH
WiwsJEAuZ3osXAo+ICAJICAgICAgICQoR1pJUCkgLWYgLTkgLWMgJEAgPiRALmd6KQo+ICtlbmRp
Zgo+ICBlbHNlCj4gIAkkKGNhbGwgYnVpbGRfY21kLExELCwkQC5kYmcsXAo+ICAJICAgICAgICQo
TEQpICQoTERGTEFHUykgJChMREZMQUdTLXkpICQoWEVOX0xERkxBR1MpICQoWEVOX0xERkxBR1Mt
eSkgXAo+IEBAIC02Miw5ICs2NCwxMSBAQCBpZmVxICgkKENPTkZJR19PUFRJTUlaRV9TWU1GSUxF
KSx5KQo+ICAJJChjYWxsIGJ1aWxkX2NtZCxOTSwsJEAuc3ltLFwKPiAgCSAgICAgICAkKE5NKSAt
biAkQC5kYmcgPiAkQC5zeW0pCj4gIGVuZGlmCj4gK2lmZXEgKCQoQ09ORklHX09QVElNSVpFX0NP
TVBSRVNTKSx5KQo+ICAJJChjYWxsIGJ1aWxkX2NtZCxHWiwsJEAuZ3osXAo+ICAJICAgICAgICQo
R1pJUCkgLWYgLTkgLWMgJEAgPiRALmd6KQo+ICBlbmRpZgo+ICtlbmRpZgo+ICAKPiAgIyByZWdp
c3RlciBpbWFnZSB0byB0aGUgYnVpbGQKPiAgVUtfSU1BR0VTLSQoQ09ORklHX1BMQVRfWEVOKSAr
PSAkKFhFTl9JTUFHRSkKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 20:09:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 20: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 1hYFkM-00088v-Ra; Tue, 04 Jun 2019 20: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=3VLy=UD=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYFkM-00088q-Bi
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 20:09:26 +0000
X-Inumbo-ID: a469ef2c-8704-11e9-85e9-1bb52922483f
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a469ef2c-8704-11e9-85e9-1bb52922483f;
 Tue, 04 Jun 2019 20:09:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A6FE2105318;
 Tue,  4 Jun 2019 22:09:21 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id KRmUGTnKhSjc; Tue,  4 Jun 2019 22:09:21 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 8468F1052ED
 for <minios-devel@lists.xen.org>; Tue,  4 Jun 2019 22:09:21 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 4 Jun 2019 22:09:21 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH 01/11] Initial public release: basic
 unikraft files
Thread-Index: AQHVGQdwgtfnuGxpo0eYv9bd65GiTqaLifcA///zlACAAHMwAA==
Date: Tue, 4 Jun 2019 20:09:20 +0000
Message-ID: <2307034B-4B0B-4AEC-A5C5-CB88A363B250@neclab.eu>
References: <20190602055238.3818-1-florian.schmidt@neclab.eu>
 <20190602055238.3818-2-florian.schmidt@neclab.eu>
 <7FC78D12-83A8-4F79-86E5-C930F5EC9B3C@neclab.eu>
 <fb264956-20c4-981e-fe03-2b2b6669635e@neclab.eu>
In-Reply-To: <fb264956-20c4-981e-fe03-2b2b6669635e@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.205]
Content-ID: <016FB4C68C9BF74C81175D89048203B4@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgRmxvcmlhbiwNCg0KT24gMDQuMDYuMTksIDE3OjE3LCAiRmxvcmlhbiBTY2htaWR0IiA8Rmxv
cmlhbi5TY2htaWR0QG5lY2xhYi5ldT4gd3JvdGU6DQoNCiAgICANCiAgICBPbiA2LzQvMTkgNDow
MSBQTSwgRmVsaXBlIEh1aWNpIHdyb3RlOg0KICAgID4gSGkgRmxvcmlhbiwNCiAgICA+IA0KICAg
ID4gVGhhbmtzIGZvciB0aGUgc2VyaWVzISBSZWdhcmRpbmcgdGhpcyBwYXRjaDoNCiAgICA+IA0K
ICAgID4gKiBUaGUgbGljZW5zZSBoZWFkZXJzIGFyZSBtaXNzaW5nDQogICAgDQogICAgRm9yIE1h
a2VmaWxlLnVrIHlvdSBtZWFuPyBJJ2xsIGFkZCBpdC4NCiAgICANCiAgICA+ICogVGhlIC5tZCBm
aWxlcyBhcmUgbWlzc2luZw0KICAgIA0KICAgIFJpZ2h0LCBJJ2xsIGFkZCB0aGVtDQogICAgDQog
ICAgPiAqIFdoZW4gY29uZmlndXJpbmcgbHdpcCwgSSBub3RpY2VkIHRoYXQgaWYgdGhlIG9wdGlv
biAiQXV0b21hdGljYWxseSBhdHRhY2ggbmV0aWZzIiBpcyBzZWxlY3RlZCwgdGhlIHJvdXRlciBm
YWlscyB0byBpbml0aWFsaXplICgiRmFpbGVkIHRvIGNvbmZpZ3VyZSBkZXZpY2UiLCBmcm9tIGNs
aWNrLmNjKS4gQ291bGQgeW91IHBsZWFzZSB1bnNlbGVjdCB0aGlzIGJ5IGFkZGluZyBhbiBvcHRp
b24gaW4gQ29uZmlnLnVrPw0KICAgIA0KICAgIFRoaXMgaXMgYSBiaXQgbW9yZSB0cmlja3ksIGJl
Y2F1c2UgdGhlcmUncyBubyAiZGVzZWxlY3QiIGZ1bmN0aW9uYWxpdHkgDQogICAgaW4ga2NvbmZp
Zy4gSXQgYWxzbyBpcyBwcm9iYWJseSB2ZXJ5IGNvbmZ1c2luZyB0byBkbyBhICJkZXBlbmRzIG9u
IA0KICAgICFMV0lQX0FVVE9JRkFDRSIsIGJlY2F1c2UgaXQncyBub3QgdmVyeSBjbGVhciBpbiBt
ZW51Y29uZmlnIHdoeSB5b3UgDQogICAgc3VkZGVubHkgY2FuJ3QgZW5hYmxlIGFuZCBjaG9vc2Ug
b3B0aW9ucyBmb3IgY2xpY2sgYW55IG1vcmUuDQogICAgDQogICAgVGhlIG5leHQgYmVzdCB0aGlu
ZywgZXZlbiB0aG91Z2ggc2xpZ2h0bHkgdWdseSwgbWlnaHQgYmUgdG8gYWRkIGEgY2hlY2sgDQog
ICAgdG8gQ2xpY2sncyBNYWtlZmlsZS51ayB0aGF0IHN0b3BzIHRoZSBidWlsZCB3aXRoIGFuIGVy
cm9yIG1lc3NhZ2UgaWYgDQogICAgTFdJUF9BVVRPSUZBQ0UgaXMgc2VsZWN0ZWQuDQoNClllcywg
SSBtZWFudCB0aGUgbGF0dGVyIG9wdGlvbiwgcGxlYXNlIGFkZCB0aGlzLg0KDQpUaGFua3MsDQoN
Ci0tIEZlbGlwZQ0KICAgIA0KICAgIENoZWVycywNCiAgICBGbG9yaWFuDQogICAgDQogICAgDQoN
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 04 20:54:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 04 Jun 2019 20:54: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 1hYGSL-0004ER-Vx; Tue, 04 Jun 2019 20:54: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=hpYV=UD=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hYGSK-0004EI-9Q
 for minios-devel@lists.xen.org; Tue, 04 Jun 2019 20:54:52 +0000
X-Inumbo-ID: fb93aef4-870a-11e9-a311-0311866dea74
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id fb93aef4-870a-11e9-a311-0311866dea74;
 Tue, 04 Jun 2019 20:54:45 +0000 (UTC)
IronPort-SDR: 7YTimL5hQ6daBwKHickdJQqfVjjBn8dyw3JwwGtiR1kEmndocgmB7D2UWPG2UuBC3B22mxIuJU
 8nsUX+yVpxuA==
IronPort-PHdr: =?us-ascii?q?9a23=3AO8aOoB2h4y6V1HaMsmDT+DRfVm0co7zxezQtwd?=
 =?us-ascii?q?8ZsesWKvnxwZ3uMQTl6Ol3ixeRBMOHsqsC0raO+Pm8EUU7or+5+EgYd5JNUx?=
 =?us-ascii?q?JXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQ?=
 =?us-ascii?q?viPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCegbb9oMRm7ohndusYLjYZtN6081g?=
 =?us-ascii?q?bHrnxUdupM2GhmP0iTnxHy5sex+J5s7SFdsO8/+sBDTKv3Yb02QaRXAzo6PW?=
 =?us-ascii?q?814tbrtQTYQguU+nQcSGQWnQFWDAXD8Rr3Q43+sir+tup6xSmaIcj7Rq06VD?=
 =?us-ascii?q?i+86tmTgLjhTwZPDAl7m7Yls1wjLpaoB2/oRx/35XUa5yROPZnY6/RYc8WSW?=
 =?us-ascii?q?9HU81MVSJOH5m8YpMPAeQfIOhWoYrzqVwVoBeiGQWhHv/jxyVUinPq26Axzu?=
 =?us-ascii?q?QvERvB3AwlB98DrnPUrM7pNKcTV+C+0a/GzSjbb/NLxDzw75THchc6ofGQXL?=
 =?us-ascii?q?Jwd9DdyU0yFwPdk1WdspDqPyiP2uQVrmiU9PBsVfioi2M+rQx6vzuhxt80h4?=
 =?us-ascii?q?XUiY8Z10rI+CZ5zYovO9G0Vkx2bcSqHZdIqi2XOJZ6TtkhTmxooio21LMLtJ?=
 =?us-ascii?q?ChcCQXx5kr2RjSYOGdfYeS+BLsTuORLC99hHJiZb2wmQ6/8VOlyu3gTsm010?=
 =?us-ascii?q?tKrjZdntnMqH8N0xvT59CZSvt45Eih2DKP2xrP5eFfO0w0jbfbJIU7zr4qkZ?=
 =?us-ascii?q?ofqUXDHinol0XqlKKaa0op9vWy5+nkYrjqvIGQO5F2hw3kPKkigsm/Dv45Mg?=
 =?us-ascii?q?gKUWib4+O81Lj78ELlR7VKleE2kqjfsJzAIcQbu7a5AxJO34k/8BazFS+m0M?=
 =?us-ascii?q?kDknUdNlJFfwqLj5L1NFHWPPD4EfC/jkywkDh1wPDKJKbhDYvXLnfYirjhe6?=
 =?us-ascii?q?hy61VAxwou0NxS5olZCr4EIP3pW0/xsMbUAQM+Mwyx2+znEsly1psCWWKTBa?=
 =?us-ascii?q?+UKKbSsV6O5uIuJOmMf5YZtyvjJPg7+fHuiWQ0mVscfamywZsXc2q0H/t4LE?=
 =?us-ascii?q?Wfe3bshc0BEWgStAokUOPqkEGCUSJUZ3uqUaIz+DU7CIO+DYjdXIytgKGB3C?=
 =?us-ascii?q?anEZ1XfW1GDE6DHmvsd4qeQPgAcjydItJ5mDweSbehU5Mh1Q2ptALi1bpnKv?=
 =?us-ascii?q?Db9TAAup350th6+vfTmg8z9TBuFMuSyXyCT2Z1nmMVXDI2x7x/oVFgxVuZy6?=
 =?us-ascii?q?d3n+dYGcZO5/NRSQg2L4Tcz+spQ+z1DwfAeNaOUxOqT8urBRk1T8kt2Jkebk?=
 =?us-ascii?q?A7HM+t3T7Z2C//KLgOi72NTLgp6r+Ui3P2PNp8zTDCybE8p1I9BNNSPyu8gf?=
 =?us-ascii?q?gspEDoG4fVnhDBxO6RfqMG0XuIrT/bwA=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2DiAwAs2vZc/wPjVY1mHgEGBwaBZYJ?=
 =?us-ascii?q?7UgIwKI0PlVuRFgkBAQEpEQECAQGEQIJ3OBMBAwEBBQEBAQEEAWwcDII6KQG?=
 =?us-ascii?q?CZgF/LAMBAh0zLiGDIgGBagMhqGSIAw1dgUaBNIcEhi4/hnuCd4UVBJQzlBQ?=
 =?us-ascii?q?+BwKCEFoEhWOJC4NeJ4MLk2yVeY8MNyGBWDMag18JghEYi0eCXDwBATEBgQU?=
 =?us-ascii?q?BAZBIAQE?=
X-IPAS-Result: =?us-ascii?q?A2DiAwAs2vZc/wPjVY1mHgEGBwaBZYJ7UgIwKI0PlVuRF?=
 =?us-ascii?q?gkBAQEpEQECAQGEQIJ3OBMBAwEBBQEBAQEEAWwcDII6KQGCZgF/LAMBAh0zL?=
 =?us-ascii?q?iGDIgGBagMhqGSIAw1dgUaBNIcEhi4/hnuCd4UVBJQzlBQ+BwKCEFoEhWOJC?=
 =?us-ascii?q?4NeJ4MLk2yVeY8MNyGBWDMag18JghEYi0eCXDwBATEBgQUBAZBIAQE?=
X-IronPort-AV: E=Sophos;i="5.60,550,1549922400"; 
   d="scan'208";a="3488367"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 04 Jun 2019 23:54:44 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id EEA251A601A6;
 Tue,  4 Jun 2019 23:54:46 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id qKsqoUF3dxFE; Tue,  4 Jun 2019 23:54:46 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id D01C51A601B0;
 Tue,  4 Jun 2019 23:54:46 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id LnOLOL540NAw; Tue,  4 Jun 2019 23:54:46 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id B6D251A601A6;
 Tue,  4 Jun 2019 23:54:46 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Tue,  4 Jun 2019 23:54:39 +0300
Message-Id: <20190604205439.25979-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu,
 Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.ro>,
 Teodora Serbanescu <teo.serbanescu16@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>

VGhpcyBwYXRjaCBkZWZpbmVzIHRoZSBtYWNyb3MgYW5kIGFkZHMgdGhlIGhhc2h0YWJsZSB0ZW1w
bGF0ZSByZXF1aXJlZCBmb3IKZW5hYmxpbmcgdGhyZWFkcyBzdXBwb3J0IGluIGN4eCBsaWJyYXJ5
LgoKU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVA
c3R1ZC5hY3MudXBiLnJvPgpTaWduZWQtb2ZmLWJ5OiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5z
ZXJiYW5lc2N1MTZAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGlu
Lmx1cHVAY3MucHViLnJvPgotLS0KIENvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICA2ICsrKwogTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDUgKysKIC4uLi1BZGQtaGFzaHRhYmxlLXRlbXBsYXRlLWZvci1wdGhyZWFk
cy5wYXRjaCB8IDUxICsrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNjIgaW5z
ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMy1BZGQtaGFzaHRhYmxl
LXRlbXBsYXRlLWZvci1wdGhyZWFkcy5wYXRjaAoKZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0Nv
bmZpZy51awppbmRleCA5OTYyNjY5Li4xNmExMWRjIDEwMDY0NAotLS0gYS9Db25maWcudWsKKysr
IGIvQ29uZmlnLnVrCkBAIC00LDMgKzQsOSBAQCBtZW51Y29uZmlnIExJQkNYWAogCXNlbGVjdCBM
SUJDWFhBQkkKIAlzZWxlY3QgTElCVU5XSU5ECiAgICAgZGVmYXVsdCBuCisKK2lmIExJQkNYWAor
Y29uZmlnIENYWF9USFJFQURTCisgICAgYm9vbCAiRW5hYmxlIENYWCB0aHJlYWRzIHN1cHBvcnQi
CisgICAgZGVmYXVsdCBuCitlbmRpZgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmls
ZS51awppbmRleCBhNDU1Mzg2Li5iNjczZjcyIDEwMDY0NAotLS0gYS9NYWtlZmlsZS51aworKysg
Yi9NYWtlZmlsZS51awpAQCAtOTYsNiArOTYsMTEgQEAgQ09ORklHX0ZMQUdTIAkrPSAtRCBMSUJD
WFhfQlVJTERJTkdfTElCQ1hYQUJJIAlcCiAJCS1EIF9MSUJDUFBfUFJPVklERVNfREVGQVVMVF9S
VU5FX1RBQkxFIC1EIF9fRFlOQU1JQ19SRUVOVF9fCVwKIAogCitpZmRlZiBDT05GSUdfQ1hYX1RI
UkVBRFMKK0NPTkZJR19GTEFHUyArPSAtRF9fbGludXhfXyAtRF9MSUJDUFBfSEFTX1RIUkVBRF9B
UElfUFRIUkVBRAorZWxzZQorQ09ORklHX0ZMQUdTICs9IC1EX0xJQkNQUF9IQVNfTk9fVEhSRUFE
UworZW5kaWYKIAogTElCQ1hYX0NGTEFHUy15ICAgICs9ICAgJChDT05GSUdfRkxBR1MpCiBMSUJD
WFhfQ1hYRkxBR1MteSAgICArPSAgICQoQ09ORklHX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvcGF0Y2hl
cy8wMDAzLUFkZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoIGIvcGF0Y2hl
cy8wMDAzLUFkZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhOTkwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9w
YXRjaGVzLzAwMDMtQWRkLWhhc2h0YWJsZS10ZW1wbGF0ZS1mb3ItcHRocmVhZHMucGF0Y2gKQEAg
LTAsMCArMSw1MSBAQAorRnJvbSAyMTVhZTZmMDc5YzlkM2UxZWQyMWZjNTQ5ZTQxZWY1ZDZkNzk2
ZDcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0
ZW8uc2VyYmFuZXNjdTE2QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTggQXByIDIwMTkgMTU6MTU6
MzMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGhhc2h0YWJsZSB0ZW1wbGF0ZSBmb3IgcHRo
cmVhZHMKKworU2lnbmVkLW9mZi1ieTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0ZW8uc2VyYmFuZXNj
dTE2QGdtYWlsLmNvbT4KKy0tLQorIGluY2x1ZGUvdXRpbGl0eSB8IDIwICsrKysrKysrKysrKysr
KysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQg
YS9pbmNsdWRlL3V0aWxpdHkgYi9pbmNsdWRlL3V0aWxpdHkKK2luZGV4IGVkOWJmMDMuLmM1Yjc0
ZmQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3V0aWxpdHkKKysrKyBiL2luY2x1ZGUvdXRpbGl0eQor
QEAgLTIwNSw2ICsyMDUsMTAgQEAgdGVtcGxhdGUgPHNpemVfdCBJPgorICNpbmNsdWRlIDxjc3Rk
aW50PgorICNpbmNsdWRlIDxfX2RlYnVnPgorCisrI2lmIGRlZmluZWQoX0xJQkNQUF9IQVNfVEhS
RUFEX0FQSV9QVEhSRUFEKQorKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisrI2VuZGlmCisrCisgI2lm
ICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX1BSQUdNQV9TWVNURU1fSEVBREVSKQorICNwcmFnbWEg
R0NDIHN5c3RlbV9oZWFkZXIKKyAjZW5kaWYKK0BAIC0xNDczLDYgKzE0NzgsMjIgQEAgc3RydWN0
IF9MSUJDUFBfVEVNUExBVEVfVklTIGhhc2g8ZG91YmxlPgorICAgICB9CisgfTsKKyAKKysjaWYg
ZGVmaW5lZChfTElCQ1BQX0hBU19USFJFQURfQVBJX1BUSFJFQUQpCisrdGVtcGxhdGUgPD4KKytz
dHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgaGFzaDxwdGhyZWFkX3Q+CisrICAgIDogcHVibGlj
IF9fc2NhbGFyX2hhc2g8c2l6ZV90PgorK3sKKysgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU
WQorKyAgICBzaXplX3Qgb3BlcmF0b3IoKShwdGhyZWFkX3QgX192KSBjb25zdCBfTk9FWENFUFQK
KysgICAgeworKyAgICAgICAvLyAtMC4wIGFuZCAwLjAgc2hvdWxkIHJldHVybiBzYW1lIGhhc2gK
KysgICAgICAgaWYgKF9fdiA9PSAwKQorKyAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICBy
ZXR1cm4gX19zY2FsYXJfaGFzaDxzaXplX3Q+OjpvcGVyYXRvcigpKChzaXplX3QpIF9fdi5wKTsK
KysgICAgfQorK307CisrI2VuZGlmCisrCisgdGVtcGxhdGUgPD4KKyBzdHJ1Y3QgX0xJQkNQUF9U
RU1QTEFURV9WSVMgaGFzaDxsb25nIGRvdWJsZT4KKyAgICAgOiBwdWJsaWMgX19zY2FsYXJfaGFz
aDxsb25nIGRvdWJsZT4KKy0tIAorMi4xMS4wCisKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 06:48:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 06:48: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 1hYPig-00072J-5V; Wed, 05 Jun 2019 06:48: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=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYPie-00072E-Ix
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 06:48:20 +0000
X-Inumbo-ID: e3be6c6c-875d-11e9-b225-839d72bb5d51
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e3be6c6c-875d-11e9-b225-839d72bb5d51;
 Wed, 05 Jun 2019 06:48:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 082B4105327;
 Wed,  5 Jun 2019 08:48:13 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5Ny__PkQcgKX; Wed,  5 Jun 2019 08:48:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D58F41052F9;
 Wed,  5 Jun 2019 08:48:12 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 08:48:12 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
Thread-Index: AQHVGxe++3W6AYMndE2Qw3eKn4A3VKaMnxiA
Date: Wed, 5 Jun 2019 06:48:11 +0000
Message-ID: <CDA35901-5918-4884-9C24-B39FCE4F411C@neclab.eu>
References: <20190604205439.25979-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190604205439.25979-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.201]
Content-ID: <9046DF6C02B82544B078F0754EDF6009@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.ro>, Teodora
 Serbanescu <teo.serbanescu16@gmail.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>

SGkgQ29zdGluLA0KDQpJIGdldCB0aGUgZm9sbG93aW5nIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4g
YXBwbHlpbmcgdGhpcyBwYXRjaDoNCg0KQ1hYICAgICBsaWJ1bndpbmQ6IGxpYnVud2luZC5vDQpj
YzFwbHVzOiB3YXJuaW5nOiBjb21tYW5kIGxpbmUgb3B0aW9uICctV25vLXBvaW50ZXItdG8taW50
LWNhc3QnIGlzIHZhbGlkIGZvciBDL09iakMgYnV0IG5vdCBmb3IgQysrDQpJbiBmaWxlIGluY2x1
ZGVkIGZyb20gL3Jvb3Qvd29ya3NwYWNlL2dpdGxhYi91bmlrcmFmdC91cHN0cmVhbWluZy9hcHBz
L2hlbGxvd29ybGQvYnVpbGQvbGliY3h4L29yaWdpbi9saWJjeHgtNy4wLjAuc3JjL2luY2x1ZGUv
YWxnb3JpdGhtOjY0MzowLA0KICAgICAgICAgICAgICAgICBmcm9tIC9yb290L3dvcmtzcGFjZS9n
aXRsYWIvdW5pa3JhZnQvdXBzdHJlYW1pbmcvYXBwcy9oZWxsb3dvcmxkL2J1aWxkL2xpYnVud2lu
ZC9vcmlnaW4vbGlidW53aW5kLTcuMC4wLnNyYy9zcmMvbGlidW53aW5kLmNwcDoxOToNCi9yb290
L3dvcmtzcGFjZS9naXRsYWIvdW5pa3JhZnQvdXBzdHJlYW1pbmcvYXBwcy9oZWxsb3dvcmxkL2J1
aWxkL2xpYmN4eC9vcmlnaW4vbGliY3h4LTcuMC4wLnNyYy9pbmNsdWRlL3V0aWxpdHk6IEluIG1l
bWJlciBmdW5jdGlvbiAnc2l6ZV90IHN0ZDo6X18xOjpoYXNoPHB0ZV9oYW5kbGVfdD46Om9wZXJh
dG9yKCkocHRocmVhZF90KSBjb25zdCc6DQovcm9vdC93b3Jrc3BhY2UvZ2l0bGFiL3VuaWtyYWZ0
L3Vwc3RyZWFtaW5nL2FwcHMvaGVsbG93b3JsZC9idWlsZC9saWJjeHgvb3JpZ2luL2xpYmN4eC03
LjAuMC5zcmMvaW5jbHVkZS91dGlsaXR5OjE0ODk6MTY6IGVycm9yOiBubyBtYXRjaCBmb3IgJ29w
ZXJhdG9yPT0nIChvcGVyYW5kIHR5cGVzIGFyZSAncHRocmVhZF90IHtha2EgcHRlX2hhbmRsZV90
fScgYW5kICdpbnQnKQ0KICAgICAgICBpZiAoX192ID09IDApDQoNCi0tIEZlbGlwZQ0KDQrvu79P
biAwNC4wNi4xOSwgMjI6NTQsICJDb3N0aW4gTHVwdSIgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4g
d3JvdGU6DQoNCiAgICBUaGlzIHBhdGNoIGRlZmluZXMgdGhlIG1hY3JvcyBhbmQgYWRkcyB0aGUg
aGFzaHRhYmxlIHRlbXBsYXRlIHJlcXVpcmVkIGZvcg0KICAgIGVuYWJsaW5nIHRocmVhZHMgc3Vw
cG9ydCBpbiBjeHggbGlicmFyeS4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJl
aSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgU2lnbmVk
LW9mZi1ieTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0ZW8uc2VyYmFuZXNjdTE2QGdtYWlsLmNvbT4N
CiAgICBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPg0K
ICAgIC0tLQ0KICAgICBDb25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgNiArKysNCiAgICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIDUgKysNCiAgICAgLi4uLUFkZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJl
YWRzLnBhdGNoIHwgNTEgKysrKysrKysrKysrKysrKysrKw0KICAgICAzIGZpbGVzIGNoYW5nZWQs
IDYyIGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMy1B
ZGQtaGFzaHRhYmxlLXRlbXBsYXRlLWZvci1wdGhyZWFkcy5wYXRjaA0KICAgIA0KICAgIGRpZmYg
LS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsNCiAgICBpbmRleCA5OTYyNjY5Li4xNmExMWRj
IDEwMDY0NA0KICAgIC0tLSBhL0NvbmZpZy51aw0KICAgICsrKyBiL0NvbmZpZy51aw0KICAgIEBA
IC00LDMgKzQsOSBAQCBtZW51Y29uZmlnIExJQkNYWA0KICAgICAJc2VsZWN0IExJQkNYWEFCSQ0K
ICAgICAJc2VsZWN0IExJQlVOV0lORA0KICAgICAgICAgZGVmYXVsdCBuDQogICAgKw0KICAgICtp
ZiBMSUJDWFgNCiAgICArY29uZmlnIENYWF9USFJFQURTDQogICAgKyAgICBib29sICJFbmFibGUg
Q1hYIHRocmVhZHMgc3VwcG9ydCINCiAgICArICAgIGRlZmF1bHQgbg0KICAgICtlbmRpZg0KICAg
IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrDQogICAgaW5kZXggYTQ1NTM4
Ni4uYjY3M2Y3MiAxMDA2NDQNCiAgICAtLS0gYS9NYWtlZmlsZS51aw0KICAgICsrKyBiL01ha2Vm
aWxlLnVrDQogICAgQEAgLTk2LDYgKzk2LDExIEBAIENPTkZJR19GTEFHUyAJKz0gLUQgTElCQ1hY
X0JVSUxESU5HX0xJQkNYWEFCSSAJXA0KICAgICAJCS1EIF9MSUJDUFBfUFJPVklERVNfREVGQVVM
VF9SVU5FX1RBQkxFIC1EIF9fRFlOQU1JQ19SRUVOVF9fCVwNCiAgICAgDQogICAgIA0KICAgICtp
ZmRlZiBDT05GSUdfQ1hYX1RIUkVBRFMNCiAgICArQ09ORklHX0ZMQUdTICs9IC1EX19saW51eF9f
IC1EX0xJQkNQUF9IQVNfVEhSRUFEX0FQSV9QVEhSRUFEDQogICAgK2Vsc2UNCiAgICArQ09ORklH
X0ZMQUdTICs9IC1EX0xJQkNQUF9IQVNfTk9fVEhSRUFEUw0KICAgICtlbmRpZg0KICAgICANCiAg
ICAgTElCQ1hYX0NGTEFHUy15ICAgICs9ICAgJChDT05GSUdfRkxBR1MpDQogICAgIExJQkNYWF9D
WFhGTEFHUy15ICAgICs9ICAgJChDT05GSUdfRkxBR1MpDQogICAgZGlmZiAtLWdpdCBhL3BhdGNo
ZXMvMDAwMy1BZGQtaGFzaHRhYmxlLXRlbXBsYXRlLWZvci1wdGhyZWFkcy5wYXRjaCBiL3BhdGNo
ZXMvMDAwMy1BZGQtaGFzaHRhYmxlLXRlbXBsYXRlLWZvci1wdGhyZWFkcy5wYXRjaA0KICAgIG5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uNmE5OTA2Mg0KICAgIC0tLSAv
ZGV2L251bGwNCiAgICArKysgYi9wYXRjaGVzLzAwMDMtQWRkLWhhc2h0YWJsZS10ZW1wbGF0ZS1m
b3ItcHRocmVhZHMucGF0Y2gNCiAgICBAQCAtMCwwICsxLDUxIEBADQogICAgK0Zyb20gMjE1YWU2
ZjA3OWM5ZDNlMWVkMjFmYzU0OWU0MWVmNWQ2ZDc5NmQ3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw
MDENCiAgICArRnJvbTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0ZW8uc2VyYmFuZXNjdTE2QGdtYWls
LmNvbT4NCiAgICArRGF0ZTogVGh1LCAxOCBBcHIgMjAxOSAxNToxNTozMyArMDMwMA0KICAgICtT
dWJqZWN0OiBbUEFUQ0hdIEFkZCBoYXNodGFibGUgdGVtcGxhdGUgZm9yIHB0aHJlYWRzDQogICAg
Kw0KICAgICtTaWduZWQtb2ZmLWJ5OiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1
MTZAZ21haWwuY29tPg0KICAgICstLS0NCiAgICArIGluY2x1ZGUvdXRpbGl0eSB8IDIwICsrKysr
KysrKysrKysrKysrKysrKw0KICAgICsgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykN
CiAgICArDQogICAgK2RpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxpdHkgYi9pbmNsdWRlL3V0aWxp
dHkNCiAgICAraW5kZXggZWQ5YmYwMy4uYzViNzRmZCAxMDA2NDQNCiAgICArLS0tIGEvaW5jbHVk
ZS91dGlsaXR5DQogICAgKysrKyBiL2luY2x1ZGUvdXRpbGl0eQ0KICAgICtAQCAtMjA1LDYgKzIw
NSwxMCBAQCB0ZW1wbGF0ZSA8c2l6ZV90IEk+DQogICAgKyAjaW5jbHVkZSA8Y3N0ZGludD4NCiAg
ICArICNpbmNsdWRlIDxfX2RlYnVnPg0KICAgICsNCiAgICArKyNpZiBkZWZpbmVkKF9MSUJDUFBf
SEFTX1RIUkVBRF9BUElfUFRIUkVBRCkNCiAgICArKyNpbmNsdWRlIDxwdGhyZWFkLmg+DQogICAg
KysjZW5kaWYNCiAgICArKw0KICAgICsgI2lmICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX1BSQUdN
QV9TWVNURU1fSEVBREVSKQ0KICAgICsgI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcg0KICAgICsg
I2VuZGlmDQogICAgK0BAIC0xNDczLDYgKzE0NzgsMjIgQEAgc3RydWN0IF9MSUJDUFBfVEVNUExB
VEVfVklTIGhhc2g8ZG91YmxlPg0KICAgICsgICAgIH0NCiAgICArIH07DQogICAgKyANCiAgICAr
KyNpZiBkZWZpbmVkKF9MSUJDUFBfSEFTX1RIUkVBRF9BUElfUFRIUkVBRCkNCiAgICArK3RlbXBs
YXRlIDw+DQogICAgKytzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgaGFzaDxwdGhyZWFkX3Q+
DQogICAgKysgICAgOiBwdWJsaWMgX19zY2FsYXJfaGFzaDxzaXplX3Q+DQogICAgKyt7DQogICAg
KysgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQ0KICAgICsrICAgIHNpemVfdCBvcGVyYXRv
cigpKHB0aHJlYWRfdCBfX3YpIGNvbnN0IF9OT0VYQ0VQVA0KICAgICsrICAgIHsNCiAgICArKyAg
ICAgICAvLyAtMC4wIGFuZCAwLjAgc2hvdWxkIHJldHVybiBzYW1lIGhhc2gNCiAgICArKyAgICAg
ICBpZiAoX192ID09IDApDQogICAgKysgICAgICAgICAgIHJldHVybiAwOw0KICAgICsrICAgICAg
ICByZXR1cm4gX19zY2FsYXJfaGFzaDxzaXplX3Q+OjpvcGVyYXRvcigpKChzaXplX3QpIF9fdi5w
KTsNCiAgICArKyAgICB9DQogICAgKyt9Ow0KICAgICsrI2VuZGlmDQogICAgKysNCiAgICArIHRl
bXBsYXRlIDw+DQogICAgKyBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgaGFzaDxsb25nIGRv
dWJsZT4NCiAgICArICAgICA6IHB1YmxpYyBfX3NjYWxhcl9oYXNoPGxvbmcgZG91YmxlPg0KICAg
ICstLSANCiAgICArMi4xMS4wDQogICAgKw0KICAgIC0tIA0KICAgIDIuMjAuMQ0KICAgIA0KICAg
IA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 06:49:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 06:49: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 1hYPk3-0007Du-BC; Wed, 05 Jun 2019 06:49:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYPk2-0007Dp-LL
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 06:49:46 +0000
X-Inumbo-ID: 18662f7c-875e-11e9-bc25-d3fa21de3aa9
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 18662f7c-875e-11e9-bc25-d3fa21de3aa9;
 Wed, 05 Jun 2019 06:49:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 88427105327;
 Wed,  5 Jun 2019 08:49:41 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id VzBV8XOKF_qp; Wed,  5 Jun 2019 08:49:41 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6427F1052F9
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 08:49:41 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 08:49:41
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
 <20190604172454.10628-2-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <a07cfbb7-2b64-c7ae-ed80-bc190c2f9632@neclab.eu>
Date: Wed, 5 Jun 2019 08:49:40 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190604172454.10628-2-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 1/5] lib/vfscore: introduce
 vfscore_uioforeach
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgWXVyaSwKCmxvb2tzIGdvb2QsIHRoYW5rcyBmb3IgYWRkaW5nIHRoZSBjb21tZW50LgoKUmV2
aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KCk9u
IDYvNC8xOSA3OjI0IFBNLCBZdXJpIFZvbGNoa292IHdyb3RlOgo+IFRoaXMgaXMgYSB0ZW1wbGF0
ZS10eXBlIG9mIGZ1bmN0aW9uLCB0byBhdm9pZCBjb2RlCj4gZHVwbGljYXRpb24uIENvbXBpbGVy
IG9wdGltaXplcyBleHRyYSBjYWxsIHRvIHRoZSBmdW5jdGlvbiBwb2ludGVyCj4gcGFzc2VkIGFz
IGFyZ3VtZW50LCBzbyB0aGlzIHNob3VsZCBub3QgaGF2ZSBhbnkgcGVyZm9ybWFuY2UgaW1wYWN0
cwo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFi
LmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL3Vpby5oIHwgNDUgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3Zmc2NvcmUvc3Vicl91aW8uYyAg
ICAgICAgICAgIHwgMzQgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgIDIgZmlsZXMgY2hhbmdl
ZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xp
Yi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS91aW8uaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZz
Y29yZS91aW8uaAo+IGluZGV4IGM3MzRmYTE5Li44M2RkNWI5YSAxMDA2NDQKPiAtLS0gYS9saWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvdWlvLmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvdWlvLmgKPiBAQCAtNTcsNiArNTcsNTEgQEAgc3RydWN0IHVpbyB7Cj4gICAJZW51
bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICovCj4gICB9Owo+ICAgCj4gKy8qIFRoaXMg
aXMgYSB3cmFwcGVyIGZvciBmdW5jdGlvbnMgZiB3aXRoIGEgIm1lbWNweS1saWtlIiBzaWduYXR1
cmUKPiArICogImRzdCwgc3JjLCBjbnQiIHRvIGJlIGV4ZWN1dGVkIG92ZXIgYSBzY2F0dGVyLWdh
dGhlciBsaXN0IHByb3ZpZGVkCj4gKyAqIGJ5IGEgc3RydWN0IHVpby4gZigpIG1pZ2h0IGJlIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyB0byByZWFkIGZyb20gb3IKPiArICogd3JpdGUgdG8gY3AgdXAg
dG8gbiBieXRlcyBvZiBkYXRhIChvciB1cCB0byB0aGUgY2FwYWNpdHkgb2YgdGhlIHVpbwo+ICsg
KiBzY2F0dGVyLWdhdGhlciBidWZmZXJzKS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUKPiAraW50
IHZmc2NvcmVfdWlvZm9yZWFjaChpbnQgKCpmKSh2b2lkICosIHZvaWQgKiwgc2l6ZV90ICopLCB2
b2lkICpjcCwKPiArCQkgICAgICBzaXplX3Qgbiwgc3RydWN0IHVpbyAqdWlvKQo+ICt7Cj4gKwlp
bnQgcmV0ID0gMDsKPiArCj4gKwlVS19BU1NFUlQodWlvLT51aW9fcncgPT0gVUlPX1JFQUQgfHwg
dWlvLT51aW9fcncgPT0gVUlPX1dSSVRFKTsKPiArCj4gKwl3aGlsZSAobiA+IDAgJiYgdWlvLT51
aW9fcmVzaWQpIHsKPiArCQlzdHJ1Y3QgaW92ZWMgKmlvdiA9IHVpby0+dWlvX2lvdjsKPiArCQlz
aXplX3QgY250ID0gaW92LT5pb3ZfbGVuOwo+ICsKPiArCQlpZiAoY250ID09IDApIHsKPiArCQkJ
dWlvLT51aW9faW92Kys7Cj4gKwkJCXVpby0+dWlvX2lvdmNudC0tOwo+ICsJCQljb250aW51ZTsK
PiArCQl9Cj4gKwkJaWYgKGNudCA+IG4pCj4gKwkJCWNudCA9IG47Cj4gKwo+ICsJCWlmICh1aW8t
PnVpb19ydyA9PSBVSU9fUkVBRCkKPiArCQkJcmV0ID0gZihpb3YtPmlvdl9iYXNlLCBjcCwgJmNu
dCk7Cj4gKwkJZWxzZQo+ICsJCQlyZXQgPSBmKGNwLCBpb3YtPmlvdl9iYXNlLCAmY250KTsKPiAr
Cj4gKwkJaW92LT5pb3ZfYmFzZSA9IChjaGFyICopaW92LT5pb3ZfYmFzZSArIGNudDsKPiArCQlp
b3YtPmlvdl9sZW4gLT0gY250Owo+ICsJCXVpby0+dWlvX3Jlc2lkIC09IGNudDsKPiArCQl1aW8t
PnVpb19vZmZzZXQgKz0gY250Owo+ICsJCWNwID0gKGNoYXIgKiljcCArIGNudDsKPiArCQluIC09
IGNudDsKPiArCj4gKwkJaWYgKHJldCkKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu
IHJldDsKPiArfQo+ICsKPiAgIGludAl2ZnNjb3JlX3Vpb21vdmUodm9pZCAqY3AsIGludCBuLCBz
dHJ1Y3QgdWlvICp1aW8pOwo+ICAgCj4gICAjZW5kaWYgLyogIV9VSU9fSF8gKi8KPiBkaWZmIC0t
Z2l0IGEvbGliL3Zmc2NvcmUvc3Vicl91aW8uYyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPiBp
bmRleCBhYTE3NjA3NC4uZTZlMWNkZjAgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvc3Vicl91
aW8uYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N1YnJfdWlvLmMKPiBAQCAtNDUsMzQgKzQ1LDE2IEBA
Cj4gICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gICAjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KPiAg
IAo+ICtzdGF0aWMgaW50IF9fbWVtY3B5X3dyYXBwZXIodm9pZCAqZHN0LCB2b2lkICpzcmMsIHNp
emVfdCAqY250KQo+ICt7Cj4gKwltZW1jcHkoZHN0LCBzcmMsICpjbnQpOwo+ICsJcmV0dXJuIDA7
Cj4gK30KPiArCj4gICBpbnQKPiAgIHZmc2NvcmVfdWlvbW92ZSh2b2lkICpjcCwgaW50IG4sIHN0
cnVjdCB1aW8gKnVpbykKPiAgIHsKPiAtCVVLX0FTU0VSVCh1aW8tPnVpb19ydyA9PSBVSU9fUkVB
RCB8fCB1aW8tPnVpb19ydyA9PSBVSU9fV1JJVEUpOwo+ICsJaW50IHJldCA9IHZmc2NvcmVfdWlv
Zm9yZWFjaChfX21lbWNweV93cmFwcGVyLCBjcCwgbiwgdWlvKTsKPiAgIAo+IC0Jd2hpbGUgKG4g
PiAwICYmIHVpby0+dWlvX3Jlc2lkKSB7Cj4gLQkJc3RydWN0IGlvdmVjICppb3YgPSB1aW8tPnVp
b19pb3Y7Cj4gLQkJaW50IGNudCA9IGlvdi0+aW92X2xlbjsKPiAtCQlpZiAoY250ID09IDApIHsK
PiAtCQkJdWlvLT51aW9faW92Kys7Cj4gLQkJCXVpby0+dWlvX2lvdmNudC0tOwo+IC0JCQljb250
aW51ZTsKPiAtCQl9Cj4gLQkJaWYgKGNudCA+IG4pCj4gLQkJCWNudCA9IG47Cj4gLQo+IC0JCWlm
ICh1aW8tPnVpb19ydyA9PSBVSU9fUkVBRCkKPiAtCQkJbWVtY3B5KGlvdi0+aW92X2Jhc2UsIGNw
LCBjbnQpOwo+IC0JCWVsc2UKPiAtCQkJbWVtY3B5KGNwLCBpb3YtPmlvdl9iYXNlLCBjbnQpOwo+
IC0KPiAtCQlpb3YtPmlvdl9iYXNlID0gKGNoYXIgKilpb3YtPmlvdl9iYXNlICsgY250Owo+IC0J
CWlvdi0+aW92X2xlbiAtPSBjbnQ7Cj4gLQkJdWlvLT51aW9fcmVzaWQgLT0gY250Owo+IC0JCXVp
by0+dWlvX29mZnNldCArPSBjbnQ7Cj4gLQkJY3AgPSAoY2hhciAqKWNwICsgY250Owo+IC0JCW4g
LT0gY250Owo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIHJldDsKPiAgIH0KPiAK
Ci0tIApEci4gRmxvcmlhbiBTY2htaWR0CuODleODreODvOODquOCouODs+ODu+OCt+ODpeODn+OD
g+ODiApSZXNlYXJjaCBTY2llbnRpc3QsClN5c3RlbXMgYW5kIE1hY2hpbmUgTGVhcm5pbmcgR3Jv
dXAKTkVDIExhYm9yYXRvcmllcyBFdXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdlIDM2LCBELTY5MTE1
IEhlaWRlbGJlcmcKVGVsLiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4OiAgICAgKzQ5ICgw
KTYyMjEgNDM0Mi0xNTUKZS1tYWlsOiAgZmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmVn
aXN0ZXJlZCBhdCBBbXRzZ2VyaWNodCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4CgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 06:53:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 06:53: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 1hYPnj-0007vl-0C; Wed, 05 Jun 2019 06:53: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYPnh-0007vc-Bx
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 06:53:33 +0000
X-Inumbo-ID: 9ffa365e-875e-11e9-aef7-d7148189a237
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9ffa365e-875e-11e9-aef7-d7148189a237;
 Wed, 05 Jun 2019 06:53:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EFBCD105328;
 Wed,  5 Jun 2019 08:53:28 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 40qQegMvp8AX; Wed,  5 Jun 2019 08:53:28 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CC10B1052F9
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 08:53:28 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 08:53:28
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
 <20190604172454.10628-3-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <cd4b9f26-98e8-8aac-fb37-b0fb5689a9a3@neclab.eu>
Date: Wed, 5 Jun 2019 08:53:28 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190604172454.10628-3-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 2/5] lib/vfscore: handle uio
 properly in stdio functions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgWXVyaSwKCkkganVzdCByZWFsaXplZCBJIHNlbnQgbXkgY29tbWVudHMgYWJvdXQgdGhpcyBw
YXJ0aWN1bGFyIHBhdGNoJ3MgdjIganVzdCAKdG8geW91IHByaXZhdGVseSBieSBtaXN0YWtlIGlu
c3RlYWQgb2YgdGhlIGxpc3QuIEZvciB0aGUgcmVjb3JkLCBJIGFza2VkIAphYm91dCB0aGUgbmFt
aW5nIG9mIF9fY291dGssIHdoaWNoIHlvdSByZW5hbWVkIGluIHYzIHRvIF9fd3JpdGVfZm4sIHNv
IAp0aGFua3MgZm9yIHRoYXQuCgoKUmV2aWV3ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlh
bi5zY2htaWR0QG5lY2xhYi5ldT4KCk9uIDYvNC8xOSA3OjI0IFBNLCBZdXJpIFZvbGNoa292IHdy
b3RlOgo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFi
LmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUvc3RkaW8uYyB8IDY0ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDUwIGluc2Vy
dGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9z
dGRpby5jIGIvbGliL3Zmc2NvcmUvc3RkaW8uYwo+IGluZGV4IGI3M2IxMzJjLi41NmMxMWE5MiAx
MDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9zdGRpby5jCj4gKysrIGIvbGliL3Zmc2NvcmUvc3Rk
aW8uYwo+IEBAIC00MCwzMSArNDAsNDEgQEAKPiAgICNpbmNsdWRlIDx0ZXJtaW9zLmg+Cj4gICAj
aW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsjaW5j
bHVkZSA8dmZzY29yZS91aW8uaD4KPiArCj4gK3N0YXRpYyBpbnQgX193cml0ZV9mbih2b2lkICpk
c3QgX191bnVzZWQsIHZvaWQgKnNyYywgc2l6ZV90ICpjbnQpCj4gK3sKPiArCWludCByZXQgPSB1
a3BsYXRfY291dGsoc3JjLCAqY250KTsKPiArCj4gKwlpZiAocmV0IDwgMCkKPiArCQkvKiBUT0RP
OiByZW1vdmUgLTEgd2hlbiB2ZnNjb3JlIHN3aXRjaGVzIHRvIG5lZ2F0aXZlCj4gKwkJICogZXJy
b3IgbnVtYmVycwo+ICsJCSAqLwo+ICsJCXJldHVybiByZXQgKiAtMTsKPiArCj4gKwkqY250ID0g
KHNpemVfdCkgcmV0Owo+ICsJcmV0dXJuIDA7Cj4gK30KPiAgIAo+ICAgLyogT25lIGZ1bmN0aW9u
IGZvciBzdGRlcnIgYW5kIHN0ZG91dCAqLwo+ICAgc3RhdGljIHNzaXplX3Qgc3RkaW9fd3JpdGUo
c3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwKPiAgIAkJCSAgIHN0cnVjdCB1aW8gKnVpbywKPiAg
IAkJCSAgIGludCBpb2ZsYWcgX191bnVzZWQpCj4gICB7Cj4gLQlVS19BU1NFUlQoIXVpby0+dWlv
X29mZnNldCk7Cj4gLQlVS19BU1NFUlQodWlvLT51aW9faW92Y250ID09IDEpOwo+IC0JcmV0dXJu
IHVrcGxhdF9jb3V0ayh1aW8tPnVpb19pb3YtPmlvdl9iYXNlLCB1aW8tPnVpb19pb3YtPmlvdl9s
ZW4pOwo+ICsJaWYgKHVpby0+dWlvX29mZnNldCkKPiArCQlyZXR1cm4gRVNQSVBFOwo+ICsKPiAr
CXJldHVybiB2ZnNjb3JlX3Vpb2ZvcmVhY2goX193cml0ZV9mbiwgTlVMTCwgdWlvLT51aW9fcmVz
aWQsIHVpbyk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHNzaXplX3Qgc3RkaW9fcmVhZChzdHJ1Y3Qg
dm5vZGUgKnZwIF9fdW51c2VkLAo+IC0JCSAgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUg
X191bnVzZWQsCj4gLQkJICAgICAgc3RydWN0IHVpbyAqdWlvLAo+IC0JCSAgICAgIGludCBpb2Zs
YWcgX191bnVzZWQpCj4gKwo+ICtzdGF0aWMgaW50IF9fcmVhZF9mbih2b2lkICpkc3QsIHZvaWQg
KnNyYyBfX3VudXNlZCwgc2l6ZV90ICpjbnQpCj4gICB7Cj4gICAJaW50IGJ5dGVzX3JlYWQ7Cj4g
ICAJc2l6ZV90IGJ5dGVzX3RvdGFsID0gMCwgY291bnQ7Cj4gLQljaGFyICpidWY7Cj4gLQo+IC0J
VUtfQVNTRVJUKCF1aW8tPnVpb19vZmZzZXQpOwo+IC0JVUtfQVNTRVJUKHVpby0+dWlvX2lvdmNu
dCA9PSAxKTsKPiArCWNoYXIgKmJ1ZiA9IGRzdDsKPiAgIAo+IC0JYnVmID0gdWlvLT51aW9faW92
LT5pb3ZfYmFzZTsKPiAtCWNvdW50ID0gdWlvLT51aW9faW92LT5pb3ZfbGVuOwo+ICsJY291bnQg
PSAqY250Owo+ICAgCj4gICAJZG8gewo+ICAgCQl3aGlsZSAoKGJ5dGVzX3JlYWQgPSB1a3BsYXRf
Y2luayhidWYsCj4gQEAgLTgyLDcgKzkyLDMzIEBAIHN0YXRpYyBzc2l6ZV90IHN0ZGlvX3JlYWQo
c3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwKPiAgIAl9IHdoaWxlIChieXRlc190b3RhbCA8IGNv
dW50ICYmICooYnVmIC0gMSkgIT0gJ1xuJwo+ICAgCQkJJiYgKihidWYgLSAxKSAhPSBWRU9GKTsK
PiAgIAo+IC0JcmV0dXJuIGJ5dGVzX3RvdGFsOwo+ICsJKmNudCA9IGJ5dGVzX3RvdGFsOwo+ICsK
PiArCS8qIFRoZSBJTlRfTUlOIGhlcmUgaXMgYSBzcGVjaWFsIHJldHVybiBjb2RlLiBJdCBtYWtl
cyB0aGUKPiArCSAqIHZmc2NvcmVfdWlvZm9yZWFjaCB0byBxdWl0IGZyb20gdGhlIGxvb3AuIEJ1
dCB0aGlzIGlzIG5vdAo+ICsJICogYW4gZXJyb3IgKGZvciBleGFtcGxlIGEgdXNlciBoaXQgQ3Ry
bC1DKS4gVGhhdCBpcyB3aHkgdGhpcwo+ICsJICogc3BlY2lhbCByZXR1cm4gdmFsdWUgaXMgZml4
ZWQgdXAgdG8gMCBpbiB0aGUgc3RkaW9fcmVhZC4KPiArCSAqLwo+ICsJaWYgKCooYnVmIC0gMSkg
PT0gJ1xuJyB8fCAqKGJ1ZiAtIDEpID09IFZFT0YpCj4gKwkJcmV0dXJuIElOVF9NSU47Cj4gKwo+
ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IHN0ZGlvX3JlYWQoc3RydWN0
IHZub2RlICp2cCBfX3VudXNlZCwKPiArCQkgICAgICBzdHJ1Y3QgdmZzY29yZV9maWxlICpmaWxl
IF9fdW51c2VkLAo+ICsJCSAgICAgIHN0cnVjdCB1aW8gKnVpbywKPiArCQkgICAgICBpbnQgaW9m
bGFnIF9fdW51c2VkKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICh1aW8tPnVpb19vZmZz
ZXQpCj4gKwkJcmV0dXJuIEVTUElQRTsKPiArCj4gKwlyZXQgPSB2ZnNjb3JlX3Vpb2ZvcmVhY2go
X19yZWFkX2ZuLCBOVUxMLCB1aW8tPnVpb19yZXNpZCwgdWlvKTsKPiArCXJldCA9IChyZXQgPT0g
SU5UX01JTikgPyAwIDogcmV0Owo+ICsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAgIHN0
YXRpYyBpbnQKPiAKCi0tIApEci4gRmxvcmlhbiBTY2htaWR0CuODleODreODvOODquOCouODs+OD
u+OCt+ODpeODn+ODg+ODiApSZXNlYXJjaCBTY2llbnRpc3QsClN5c3RlbXMgYW5kIE1hY2hpbmUg
TGVhcm5pbmcgR3JvdXAKTkVDIExhYm9yYXRvcmllcyBFdXJvcGUKS3VyZsO8cnN0ZW4tQW5sYWdl
IDM2LCBELTY5MTE1IEhlaWRlbGJlcmcKVGVsLiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0yNjUKRmF4
OiAgICAgKzQ5ICgwKTYyMjEgNDM0Mi0xNTUKZS1tYWlsOiAgZmxvcmlhbi5zY2htaWR0QG5lY2xh
Yi5ldQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUmVnaXN0ZXJlZCBhdCBBbXRzZ2VyaWNodCBNYW5uaGVpbSwgR2VybWFueSwgSFJC
NzI4NTU4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 06:55:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 06:55:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYPpV-0007zu-5x; Wed, 05 Jun 2019 06:55:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYPpT-0007zn-VV
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 06:55:24 +0000
X-Inumbo-ID: e235a5da-875e-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e235a5da-875e-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 06:55:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1F39C105312;
 Wed,  5 Jun 2019 08:55:20 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kWVA9EuIiJ0z; Wed,  5 Jun 2019 08:55:20 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F18291052F9;
 Wed,  5 Jun 2019 08:55:19 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 08:55:19
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604172454.10628-1-yuri.volchkov@neclab.eu>
 <20190604172454.10628-5-yuri.volchkov@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <b2da43c4-d6d8-0088-fce5-5c47f477a2b0@neclab.eu>
Date: Wed, 5 Jun 2019 08:55:19 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <20190604172454.10628-5-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 4/5] lib/vfscore: do not
 advance position for stdio
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.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>

SGkgWXVyaSwKCnRoZXJlJ3Mgb25lIHR5cG8gaGVyZToKCk9uIDYvNC8xOSA3OjI0IFBNLCBZdXJp
IFZvbGNoa292IHdyb3RlOgo+ICsvKiBTZXQgdGhpcyBmbGFnIGlmIHZmcyBzaG91bGQgTk90IGhh
bmRlIFBPU2l0aW9uIGZvciB0aGlzIGZpbGUuIFRoZQo+ICsgKiBmaWxlIGlzIG5vdCBzZWVrLWFi
bGUsIHVwZGF0aW5nIGZfb2Zmc2V0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yCj4gKyAqIGl0ICov
Cj4gKyNkZWZpbmUgVUtfVkZTQ09SRV9OT1BPUyAoKGludCkgKDEgPDwgMCkpCj4gKwoKcy9oYW5k
ZS9oYW5kbGUKCkJ1dCB0aGF0J3MgZWFzaWx5IGZpeGVkIG9uIHVwc3RyZWFtaW5nLgoKUmV2aWV3
ZWQtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSs-0003Lu-8z; Wed, 05 Jun 2019 07:36:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSq-0003Lp-Ow
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:04 +0000
X-Inumbo-ID: 8fddf12e-8764-11e9-90ad-0351024bcb59
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8fddf12e-8764-11e9-90ad-0351024bcb59;
 Wed, 05 Jun 2019 07:35:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D489E1052D0;
 Wed,  5 Jun 2019 09:35:58 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id D9yEkhEi4233; Wed,  5 Jun 2019 09:35:58 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id AE62C1052C7
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:35:58 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:35:58 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:34 +0200
Message-ID: <20190605073545.1785-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 00/11] The Click Modular
 Router
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyB2MiBvZiB0aGUgQ2xpY2sgcG9ydC4gQ2hhbmdlcyBhcmUgcmVsYXRpdmVseSBzbWFs
bCBhbmQgY29tcHJpc2U6CgoqIGFkZGluZyAubWQgZmlsZXMgd2l0aCBzb21lIHZlcnkgbWluaW1h
bCBkb2N1bWVudGF0aW9uIGFuZCBsaWNlbnNlCiAgaW5mb3JtYXRpb24sCiogYWRkaW5nIGEgbGlj
ZW5zZSBoZWFkZXIgdG8gTWFrZWZpbGUudWsKKiB1cGRhdGluZyBDb25maWcudWsgdG8gcmVmbGVj
dCBkZXBlbmRlbmNpZXMKKiBjbGFyaWZ5aW5nIGNvbW1pdCBtZXNzYWdlIGZvciBwYXRjaCA5Cgoq
KiogdjEgdGV4dCBiZWxvdyBmb3IgcmVmZXJlbmNlICoqKgoKVGhpcyBpcyBhIHBvcnQgb2YgQ2xp
Y2sgKGh0dHBzOi8vZ2l0aHViLmNvbS9rb2hsZXIvY2xpY2spIHRvIHVuaWtyYWZ0LiBJdApwYXJ0
aWFsbHkgYnVpbGRzIG9uIG9uIENsaWNrT1MsIHRoZSBwb3J0IG9mIENsaWNrIHRvIE1pbmktT1Mu
CgpGZWF0dXJlcyBjdXJyZW50bHkgYXZhaWxhYmxlOgoqIE1vc3QgQ2xpY2sgbW9kdWxlcyBhcmUg
YXZhaWxhYmxlIHRvIGNyZWF0ZSByb3V0aW5nIGNvbmZpZ3VyYXRpb25zLiAoRm9yCiAgZXhjZXB0
aW9ucywgc2VlIGJlbG93LikKKiBhIENsaWNrIGNvbmZpZyBjYW4gYmUgcHJvdmlkZWQgYXMgYW4g
aW5pdHJkLiBJZiBub25lIGlzIHByb3ZpZGVkLCBDbGljawogIHdpbGwgZmFsbCBiYWNrIHRvIGEg
c3RhdGljYWxseSBjb21waWxlZC1pbiBjb25maWcgdGhhdCByZXBsaWVzIHRvIHBpbmdzIHRvCiAg
YSBjZXJ0YWluIChmaXhlZCkgSVAgYWRkcmVzcy4KKiBGb3IgZWFjaCB1a25ldGRldiwgQ2xpY2sg
cXVlcmllcyB0aGUgTUFDIGFkZHJlc3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZAogIHByb3Zp
ZGVzIGFuIGFsaWFzIHRvIHRoYXQgTUFDIGFkZHJlc3MgYXMgTUFDMCwgTUFDMSwgLi4uIEVmZmVj
dGl2ZWx5LCBpZgogIHByb2R1Y2VzIGEgcHJlYW1ibGUgdG8gYSBjb25maWcgd2l0aCBhIG51bWJl
ciBvZiBkZWZpbmVzLiBBbiBleGFtcGxlIG9mIGhvdwogIHRvIHVzZSBzdWNoIGEgcHJvdmlkZWQg
TUFDIGFkZHJlc3MgYWxpYXMgY2FuIGJlIHNlZW4gaW4KICBpbmNsdWRlL3N0YXRpY19jb25maWcu
aAoKRmVhdHVyZXMgY3VycmVudCBub3QgYXZhaWxhYmxlOgoqIFRoZXJlIGlzIG5vIGNvbnNvbGUg
aW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGVsZW1lbnQgaGFuZGxlcnMgdG8sCiAgZm9y
IGV4YW1wbGUsIHF1ZXJ5IHRoZWlyIGludGVybmFsIHN0YXRlIG9yIHN0YXRpc3RpY3MuIFRoaXMg
aXMgYW4gZWZmZWN0CiAgb2Y6CiogVGhlIENsaWNrIHVzZXJsZXZlbCBtb2R1bGVzIGhhdmUgbm90
IGJlZW4gcG9ydGVkIHlldCBhbmQgYXMgc3VjaCBjYW5ub3QgYmUKICBzdWNjZXNzZnVsbHkgYnVp
bHQuCgpOb3RlOiBvbmx5IHg4Ni9rdm0gaGFzIGJlZW4gc2VyaW91c2x5IHRlc3RlZC4KCgpGbG9y
aWFuIFNjaG1pZHQgKDExKToKICBJbml0aWFsIHB1YmxpYyByZWxlYXNlOiBiYXNpYyB1bmlrcmFm
dCBmaWxlcwogIEluaXRpYWwgcHVibGljIHJlbGVhc2U6IGNsaWNrLmNjCiAgSW5pdGlhbCBwdWJs
aWMgcmVsZWFzZTogY2xpY2suY2M6IGlmZGVmIG91dCB4ZW4tc3BlY2lmaWMgY29kZS4KICBJbml0
aWFsIHB1YmxpYyByZWxlYXNlOiBjbGljayBjb25maWctdXNlcmxldmVsLmgKICBJbml0aWFsIHB1
YmxpYyByZWxlYXNlOiBzdHVicy5jYyBmb3IgdW5maW5pc2hlZCBnbHVlIGltcGxlbWVudGF0aW9u
cwogIEluaXRpYWwgcHVibGljIHJlbGVhc2U6IEZyb21EZXZpY2UgYW5kIFRvRGV2aWNlCiAgSW5p
dGlhbCBwdWJsaWMgcmVsZWFzZTogcGF0Y2hlcyB0byBtYWtlIGNsaWNrIGJ1aWxkIHdpdGggdW5p
a3JhZnQKICBJbml0aWFsIHB1YmxpYyByZWxlYXNlOiBBZGQgZXhwb3J0c3ltcy51awogIHN1cHBv
cnQgZm9yIGxvYWRpbmcgY2xpY2sgY29uZmlncwogIFByb3ZpZGUgTUFDIHByZWFtYmxlCiAgY29u
ZmlnOiBBZGQgdXNlcmxldmVsIG1vZHVsZSBvcHRpb24uCgogLmdpdGlnbm9yZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIENPRElOR19TVFlMRS5tZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBDT05UUklCVVRJTkcubWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogQ09QWUlORy5tZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBDb25maWcudWsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgOTMgKysrKwogTUFJTlRBSU5FUlMubWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgOSArCiBNYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAxODMgKysrKysrKwogUkVBRE1FLm1kICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA1ICsKIGNsaWNrLmNjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDQ2NiArKysrKysrKysrKysrKysrKysKIGV4cG9ydHN5bXMudWsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBpbmNsdWRlL2NsaWNrL2Nv
bmZpZy11c2VybGV2ZWwuaCAgICAgICAgICAgICAgfCAzNDggKysrKysrKysrKysrKwogaW5jbHVk
ZS9zdGF0aWNfY29uZmlnLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsKIHBhdGNoZXMv
MDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2ggICB8ICAyMCArCiAuLi4tc3VyZS1Q
T0xMSU4tUE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2ggfCAgMzUgKysKIHN0dWJzLmNjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNiArKwogdW5pa3JhZnQvZnJv
bWRldmljZS5jYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAzICsrKysrKysrCiB1bmlrcmFm
dC9mcm9tZGV2aWNlLmhoICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzkgKysrCiB1bmlrcmFm
dC90b2RldmljZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMzEgKysrKysKIHVuaWty
YWZ0L3RvZGV2aWNlLmhoICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NiArKysKIDIwIGZp
bGVzIGNoYW5nZWQsIDE3ODEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRp
Z25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBDT05UUklCVVRJTkcubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCiBjcmVh
dGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMu
bWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2Vm
aWxlLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQg
Y2xpY2suY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrCiBjcmVhdGUgbW9kZSAx
MDA2NDQgaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBpbmNsdWRlL3N0YXRpY19jb25maWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAw
MS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRj
aGVzLzAwMDItTWFrZS1zdXJlLVBPTExJTi1QT0xMT1VULWFyZS1ub3QtZGVmaW5lZC5wYXRjaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IHN0dWJzLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pa3JhZnQv
ZnJvbWRldmljZS5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHVuaWtyYWZ0L2Zyb21kZXZpY2UuaGgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC90b2RldmljZS5jYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IHVuaWtyYWZ0L3RvZGV2aWNlLmhoCgotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSv-0003Mb-BT; Wed, 05 Jun 2019 07:36: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSt-0003M8-Vx
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:08 +0000
X-Inumbo-ID: 942927da-8764-11e9-bd87-172ca8302118
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 942927da-8764-11e9-bd87-172ca8302118;
 Wed, 05 Jun 2019 07:36:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0AF47105328;
 Wed,  5 Jun 2019 09:36:06 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Z9MTDu-PpFPo; Wed,  5 Jun 2019 09:36:05 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9B5A01052D0
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:05 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:05 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:37 +0200
Message-ID: <20190605073545.1785-4-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 03/11] Initial public
 release: click.cc: ifdef out xen-specific code.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW4gdGhlIENsaWNrT1MgcG9ydCwgdGhpcyBjb2RlIG1vc3RseSBkZWFscyB3aXRoIHByb3ZpZGlu
ZyBhIGNvbnNvbGUgZm9yCmludGVyYWN0aW5nIHdpdGggQ2xpY2suIFRoaXMgaW5pdGlhbCByZWxl
YXNlIGRvZXNuJ3QgaGF2ZSBzdWNoIHN1cHBvcnQsCmJ1dCB0aGlzIGNvdWxkIGJlIHJldmlzaXRl
ZCBhdCBhIGxhdGVyIHBvaW50LgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9y
aWFuLnNjaG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUu
aHVpY2lAbmVjbGFiLmV1PgotLS0KIGNsaWNrLmNjIHwgNzcgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzOSBp
bnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jbGljay5jYyBiL2Ns
aWNrLmNjCmluZGV4IDI1YmM1MjQuLmEzYmZiYTggMTAwNjQ0Ci0tLSBhL2NsaWNrLmNjCisrKyBi
L2NsaWNrLmNjCkBAIC0zMiw2ICszMiwxNiBAQAogICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBF
WFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCisvKiBUbyBiZSBpbXBsZW1l
bnRlZCBhdCBhIGxhdGVyIHBvaW50ICovCisjZGVmaW5lIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9J
TVBMRU1FTlRFRCAwCisKK2V4dGVybiAiQyJ7CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxwb2xsLmg+Cit9CisK
ICNpbmNsdWRlIDxjbGljay9jb25maWcuaD4KICNpbmNsdWRlIDxjbGljay9sZXhlci5oaD4KICNp
bmNsdWRlIDxjbGljay9yb3V0ZXIuaGg+CkBAIC00MiwxNSArNTIsMTAgQEAKICNpbmNsdWRlIDxj
bGljay9zdHJhY2N1bS5oaD4KICNpbmNsdWRlIDxjbGljay9kcml2ZXIuaGg+CiAKLWV4dGVybiAi
QyJ7Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDx1ay9zY2hlZC5oPgorI2luY2x1ZGUgPHVrL3RocmVhZC5oPgog
Ci0jaW5jbHVkZSA8bWluaS1vcy94ZW5idXMuaD4KLSNpbmNsdWRlIDxtaW5pLW9zL3NodXRkb3du
Lmg+Ci0jaW5jbHVkZSA8bWluaS1vcy9zY2hlZC5oPgotfQoraW50IGNsaWNrX250aHJlYWRzID0g
MTsKIAogdm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKIApAQCAtNTksMTkgKzY0LDYgQEAgdm9p
ZCAqX19kc29faGFuZGxlID0gTlVMTDsKIAlwcmludGYoIlslczolZF0gIiBmbXQgIlxuIiwgXAog
CQlfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQogCi0vKioKLSAqIHhlbnN0
b3JlIGhlbHBlcnMKLSAqLwotI2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3MiCi0jZGVmaW5lIFBB
VEhfTUFYX0xFTgkxMDI0Ci0KLXN0cnVjdCB4ZW5zdG9yZV9kZXYgewotCWRvbWlkX3QgZG9tOwot
CWNoYXIgKm5vZGVuYW1lOwotCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7Ci19ICp4c2RldiA9
IE5VTEw7Ci0KLXVpbnQzMl90IGRvbWlkID0gLTE7CiB1X2ludCBfc2h1dGRvd24gPSAwOwogdV9p
bnQgX3JlYXNvbiA9IDA7CiAKQEAgLTk5LDYgKzkxLDcgQEAgcmVhZF9yaWQoY2hhciAqcGF0aCkK
IAlyZXR1cm4gaWQ7CiB9CiAKKyNpZiBDTElDS19DT05TT0xFX1NVUFBPUlRfSU1QTEVNRU5URUQK
IFN0cmluZyAqCiByZWFkX2NvbmZpZyh1X2ludCByaWQgPSAwKQogewpAQCAtMTE3LDcgKzExMCw3
IEBAIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApCiAKIAlyZXR1cm4gY2ZnOwogfQotCisjZW5k
aWYgLyogQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVEICovCiAvKgogICogY2xpY2sg
Z2x1ZQogICovCkBAIC0xMzUsNyArMTI4LDcgQEAgdm9pZAogcm91dGVyX3RocmVhZCh2b2lkICp0
aHJlYWRfZGF0YSkKIHsKIAl1X2ludCAqcmlkID0gKHVfaW50KikgdGhyZWFkX2RhdGE7Ci0JU3Ry
aW5nICpjb25maWcgPSByZWFkX2NvbmZpZygqcmlkKTsKKwlTdHJpbmcgKmNvbmZpZyA9IG5ldyBT
dHJpbmc7IC8vcmVhZF9jb25maWcoKnJpZCk7CiAJc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAqcmkg
PSAmcm91dGVyX2xpc3RbKnJpZF07CiAKIAlyaS0+ciA9IGNsaWNrX3JlYWRfcm91dGVyKCpjb25m
aWcsIHRydWUsIGVycmgsIGZhbHNlLCAmbWFzdGVyKTsKQEAgLTE3NCwxMiArMTY3LDEzIEBAIHJv
dXRlcl9zdG9wKGludCBuID0gTUFYX1JPVVRFUlMpCiAKIAkJZG8gewogCQkJci0+cGxlYXNlX3N0
b3BfZHJpdmVyKCk7Ci0JCQlzY2hlZHVsZSgpOworCQkJdWtfc2NoZWRfeWllbGQoKTsKIAkJfSB3
aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsKIAl9CiAJTE9HKCJTdG9wcGVkIGFsbCBy
b3V0ZXJzLi4uXG5cbiIpOwogfQogCisjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVO
VEVECiB2b2lkCiByb3V0ZXJfc3VzcGVuZChpbnQgbiA9IE1BWF9ST1VURVJTKQogewpAQCAtMzA3
LDI1ICszMDEsMzIgQEAgb25fcm91dGVyKGNoYXIgKmtleSwgdm9pZCAqZGF0YSkKIAogCXJldHVy
biAwOwogfQorI2VuZGlmIC8qIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRFRCAqLwor
CisjaWYgQ09ORklHX0xJQkNMSUNLX01BSU4KKyNkZWZpbmUgQ0xJQ0tfTUFJTiBtYWluCisjZWxz
ZQorI2RlZmluZSBDTElDS19NQUlOIGNsaWNrX21haW4KK2V4dGVybiAiQyIgaW50IGNsaWNrX21h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKyNlbmRpZgogCiAvKiBydW5zIHRoZSBldmVudCBs
b29wICovCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitpbnQgQ0xJQ0tfTUFJTihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0Jc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1Y3QgeGVu
c3RvcmVfZGV2KTsKKwlzdHJ1Y3QgdWtfdGhyZWFkICpyb3V0ZXI7CiAKIAljbGlja19zdGF0aWNf
aW5pdGlhbGl6ZSgpOwogCWVycmggPSBFcnJvckhhbmRsZXI6OmRlZmF1bHRfaGFuZGxlcigpOwog
Ci0JeHNkZXYgPSAoc3RydWN0IHhlbnN0b3JlX2RldiopIG1hbGxvYyhsZW4pOwotCW1lbXNldCh4
c2RldiwgMCwgbGVuKTsKIAltZW1zZXQocm91dGVyX2xpc3QsIDAsIE1BWF9ST1VURVJTICogc2l6
ZW9mKHN0cnVjdCByb3V0ZXJfaW5zdGFuY2UpKTsKIAlmb3IgKGludCBpID0gMDsgaSA8IE1BWF9S
T1VURVJTOyArK2kpIHsKIAkJcm91dGVyX2xpc3RbaV0uZl9zdG9wID0gMTsKIAl9CiAKLQl4ZW5i
dXNfd2F0Y2hfcGF0aF90b2tlbihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giLAot
CQkJJnhzZGV2LT5ldmVudHMpOwotCisjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVO
VEVECisvKiBUT0RPOiBUaGlzIGludGVyYWN0aW9uIGJldHdlZW4geGVuYnVzIGFuZCBjbGljayBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCisgKiBnZW5lcmljIHVuaWtyYWZ0IGludGVyYWN0aW9u
IHNjaGVtZSwgZm9yIGV4YW1wbGUsIHZpYSBhIGNvbnNvbGUuCisgKi8KIAl3aGlsZSAoIV9zaHV0
ZG93bikgewogCQlTdHJpbmcgdmFsdWU7CiAJCWNoYXIgKmVyciwgKnZhbCwgKipwYXRoOwpAQCAt
MzQwLDE3ICszNDEsMTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCW9u
X3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7CiAJfQotCisjZWxzZQor
CXJvdXRlciA9IHVrX3RocmVhZF9jcmVhdGUoImNsaWNrLXJvdXRlciIsIHJvdXRlcl90aHJlYWQs
IDApOworCXVrX3RocmVhZF93YWl0KHJvdXRlcik7CisjZW5kaWYKIAlMT0coIlNodXR0aW5nIGRv
d24uLi4iKTsKLQl4ZW5idXNfdW53YXRjaF9wYXRoX3Rva2VuKFhCVF9OSUwsIFBBVEhfUk9PVCwg
InJvdXRlci13YXRjaCIpOwotCi0JZmluaV94ZW5idXMoKTsKLQlmcmVlKHhzZGV2KTsKIAogCXJl
dHVybiBfcmVhc29uOwogfQogCiAvKiBhcHAgc2h1dGRvd24gaG9vayBmcm9tIG1pbmlvcyAqLwor
LyogVE9ETzogY291bGQgYmUgcmV1c2VkIGFzIGNhbGwtaW4gZnJvbSB1bmlrcmFmdCAqLworI2lm
IENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRFRAogZXh0ZXJuICJDIiB7CiBpbnQgYXBw
X3NodXRkb3duKHVuc2lnbmVkIHJlYXNvbikKIHsKQEAgLTM2MCwxNCArMzYyLDEyIEBAIGludCBh
cHBfc2h1dGRvd24odW5zaWduZWQgcmVhc29uKQogCQlfc2h1dGRvd24gPSAxOwogCQlfcmVhc29u
ID0gcmVhc29uOwogCQlyb3V0ZXJfc3RvcCgpOwotCQl4ZW5idXNfcmVsZWFzZV93YWl0X2Zvcl93
YXRjaCgmeHNkZXYtPmV2ZW50cyk7CiAJCWJyZWFrOwogCWNhc2UgU0hVVERPV05fcmVib290Ogog
CQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cmVib290Iik7CiAJCV9zaHV0ZG93biA9
IDE7CiAJCV9yZWFzb24gPSByZWFzb247CiAJCXJvdXRlcl9zdG9wKCk7Ci0JCXhlbmJ1c19yZWxl
YXNlX3dhaXRfZm9yX3dhdGNoKCZ4c2Rldi0+ZXZlbnRzKTsKIAkJYnJlYWs7CiAJY2FzZSBTSFVU
RE9XTl9zdXNwZW5kOgogCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249c3VzcGVuZCIp
OwpAQCAtMzgyLDMgKzM4Miw0IEBAIGludCBhcHBfc2h1dGRvd24odW5zaWduZWQgcmVhc29uKQog
CXJldHVybiAwOwogfQogfQorI2VuZGlmIC8qIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1F
TlRFRCAqLwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSv-0003Mh-DM; Wed, 05 Jun 2019 07:36: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSu-0003MM-6f
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:08 +0000
X-Inumbo-ID: 943c0ada-8764-11e9-aaf0-eb91f57f3142
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 943c0ada-8764-11e9-aaf0-eb91f57f3142;
 Wed, 05 Jun 2019 07:36:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3A50B1052D0;
 Wed,  5 Jun 2019 09:36:06 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 479_KFhierDX; Wed,  5 Jun 2019 09:36:06 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 01726105327
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:06 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:05 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:38 +0200
Message-ID: <20190605073545.1785-5-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 04/11] Initial public
 release: click config-userlevel.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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2UgdXNlIHVzZXJsZXZlbCBtb2RlIGZvciBvdXIgdW5pa3JhZnQgY2xpY2sgcG9ydC4gVGhpcyBj
b25maWcgc2V0cwpvcHRpb25zIGFjY29yZGluZyB0byB3aGljaCBmZWF0dXJlcyBhcmUgYXZhaWxh
YmxlIGluIHVuaWtyYWZ0LgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFu
LnNjaG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVp
Y2lAbmVjbGFiLmV1PgotLS0KIGluY2x1ZGUvY2xpY2svY29uZmlnLXVzZXJsZXZlbC5oIHwgMzQ4
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzNDggaW5z
ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY2xpY2svY29uZmlnLXVzZXJs
ZXZlbC5oCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVsLmggYi9p
bmNsdWRlL2NsaWNrL2NvbmZpZy11c2VybGV2ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMjU0OGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jbGljay9jb25m
aWctdXNlcmxldmVsLmgKQEAgLTAsMCArMSwzNDggQEAKKy8qIGluY2x1ZGUvY2xpY2svY29uZmln
LXVzZXJsZXZlbC5oLiAgR2VuZXJhdGVkIGZyb20gY29uZmlnLXVzZXJsZXZlbC5oLmluIGJ5IGNv
bmZpZ3VyZS4gICovCisvKiBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGNvbmZpZ3VyZSB0byBwcm9k
dWNlIGNvbmZpZy11c2VybGV2ZWwuaC4gLSotIG1vZGU6IGMgLSotICovCisjaWZuZGVmIENMSUNL
X0NPTkZJR19VU0VSTEVWRUxfSAorI2RlZmluZSBDTElDS19DT05GSUdfVVNFUkxFVkVMX0gKKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfX3RocmVhZCBzdG9yYWdlIGNsYXNzIHNwZWNpZmll
ci4gKi8KKyNkZWZpbmUgSEFWRV9fX1RIUkVBRF9TVE9SQUdFX0NMQVNTIDEKKworLyogRGVmaW5l
IGlmIGFjY2VwdCgpIHVzZXMgc29ja2xlbl90LiAqLworI2RlZmluZSBIQVZFX0FDQ0VQVF9TT0NL
TEVOX1QgMQorCisvKiBEZWZpbmUgaWYga3F1ZXVlKCkgbWF5IGJlIHVzZWQgdG8gd2FpdCBmb3Ig
ZmlsZSBkZXNjcmlwdG9yIGV2ZW50cy4gKi8KKyNkZWZpbmUgSEFWRV9BTExPV19LUVVFVUUgMAor
CisvKiBEZWZpbmUgaWYgcG9sbCgpIG1heSBiZSB1c2VkIHRvIHdhaXQgZm9yIGZpbGUgZGVzY3Jp
cHRvciBldmVudHMuICovCisjZGVmaW5lIEhBVkVfQUxMT1dfUE9MTCAxCisKKy8qIERlZmluZSBp
ZiBzZWxlY3QoKSBtYXkgYmUgdXNlZCB0byB3YWl0IGZvciBmaWxlIGRlc2NyaXB0b3IgZXZlbnRz
LiAqLworI2RlZmluZSBIQVZFX0FMTE9XX1NFTEVDVCAxCisKKy8qIERlZmluZSBpZiA8cGNhcC5o
PiB1c2VzIGJwZl90aW1ldmFsLiAqLworLyogI3VuZGVmIEhBVkVfQlBGX1RJTUVWQUwgKi8KKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8Ynl0ZXN3YXAuaD4gaGVhZGVyIGZpbGUuICovCisj
ZGVmaW5lIEhBVkVfQllURVNXQVBfSCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgY2xv
Y2tfZ2V0dGltZSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uCisgICBvZiAnY2xvY2tf
Z2V0dGltZScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKyNkZWZpbmUgSEFWRV9ERUNMX0NM
T0NLX0dFVFRJTUUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRp
b24KKyAgIG9mICdtYWR2aXNlJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LiAqLworI2RlZmluZSBI
QVZFX0RFQ0xfTUFEVklTRSAwCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNs
YXJhdGlvbgorICAgb2YgJ3BjYXBfc2V0bm9uYmxvY2snLCBhbmQgdG8gMCBpZiB5b3UgZG9uJ3Qu
ICovCisjZGVmaW5lIEhBVkVfREVDTF9QQ0FQX1NFVE5PTkJMT0NLIDEKKworLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9E
TEZDTl9IICovCisKKy8qIERlZmluZSBpZiBkeW5hbWljIGxpbmtpbmcgaXMgcG9zc2libGUuICov
CisvKiAjdW5kZWYgSEFWRV9EWU5BTUlDX0xJTktJTkcgKi8KKworLyogRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSA8ZXhlY2luZm8uaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9FWEVD
SU5GT19IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmZzIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX0ZGUyAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmZzbCBmdW5j
dGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9GRlNMIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSBmZnNsbCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9GRlNMTCAxCisKKy8qIEZsb2F0aW5n
IHBvaW50IGFyaXRobWV0aWMgaXMgYWxsb3dlZC4gKi8KKyNkZWZpbmUgSEFWRV9GTE9BVF9UWVBF
UyAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGdycC5oPiBoZWFkZXIgZmlsZS4gKi8K
KyNkZWZpbmUgSEFWRV9HUlBfSCAxCisKKy8qIERlZmluZSBpZiB0aGUgbGFzdCBhcmd1bWVudCB0
byBFVl9TRVQgaGFzIHBvaW50ZXIgdHlwZS4gKi8KKy8qICN1bmRlZiBIQVZFX0VWX1NFVF9VREFU
QV9QT0lOVEVSICovCisKKy8qIERlZmluZSBpZiAnc3RydWN0IGlmX2RhdGEnIGhhcyBhbiAnaWZp
X2RhdGFsZW4nIG1lbWJlci4gKi8KKy8qICN1bmRlZiBIQVZFX0lGX0RBVEFfSUZJX0RBVEFMRU4g
Ki8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8aWZhZGRycy5oPiBoZWFkZXIgZmlsZS4g
Ki8KKy8qICN1bmRlZiBIQVZFX0lGQUREUlNfSCAqLworCisvKiBEZWZpbmUgaWYgJ2ludDY0X3Qn
IGlzIHR5cGVkZWZlZCB0byAnbG9uZycgYXQgdXNlciBsZXZlbC4gKi8KKyNkZWZpbmUgSEFWRV9J
TlQ2NF9JU19MT05HX1VTRVJMRVZFTCAxCisKKy8qIERlZmluZSBpZiAnaW50NjRfdCcgaXMgdHlw
ZWRlZmVkIHRvICdsb25nIGxvbmcnIGF0IHVzZXIgbGV2ZWwuICovCisvKiAjdW5kZWYgSEFWRV9J
TlQ2NF9JU19MT05HX0xPTkdfVVNFUkxFVkVMICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX0lOVFRZUEVTX0gg
MQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGtxdWV1ZSBmdW5jdGlvbi4gKi8KKy8qICN1
bmRlZiBIQVZFX0tRVUVVRSAqLworCisvKiBEZWZpbmUgaWYgeW91ciBDIGxpYnJhcnkgY29udGFp
bnMgbGFyZ2UgZmlsZSBzdXBwb3J0LiAqLworI2RlZmluZSBIQVZFX0xBUkdFX0ZJTEVfU1VQUE9S
VCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lmX3R1bi5oPiBoZWFkZXIg
ZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX0xJTlVYX0lGX1RVTl9IICovCisKKy8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgbWFkdmlzZSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9NQURWSVNF
IDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtbWFwIGZ1bmN0aW9uLiAqLworI2RlZmlu
ZSBIQVZFX01NQVAgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXQvYnBmLmg+IGhl
YWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfTkVUX0JQRl9IICovCisKKy8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl9kbC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBI
QVZFX05FVF9JRl9ETF9IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl90
YXAuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9ORVRfSUZfVEFQX0ggKi8KKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmX3R1bi5oPiBoZWFkZXIgZmlsZS4gKi8K
Ky8qICN1bmRlZiBIQVZFX05FVF9JRl9UVU5fSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxuZXQvaWZfdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9ORVRf
SUZfVFlQRVNfSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXRkYi5oPiBoZWFk
ZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX05FVERCX0ggKi8KKworLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSA8bmV0L25ldG1hcC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZF
X05FVF9ORVRNQVBfSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXRwYWNrZXQv
cGFja2V0Lmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZmVkIEhBVkVfTkVUUEFDS0VUX1BBQ0tF
VF9IICovCisKKy8qIERlZmluZSBpZiA8bmV3Lmg+IGV4aXN0cyBhbmQgd29ya3MuICovCisvKiAj
dW5kZWYgSEFWRV9ORVdfSCAqLworCisvKiBEZWZpbmUgaWYgPG5ldz4gZXhpc3RzIGFuZCB3b3Jr
cy4gKi8KKy8qICN1bmRlZiBIQVZFX05FV19IRFIgMSAqLworCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgLWxwY2FwIGFuZCBwY2FwLmguICovCisjZGVmaW5lIEhBVkVfUENBUCAxCisKKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgcGNhcF9pbmplY3QgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVf
UENBUF9JTkpFQ1QgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2VuZHBhY2tl
dCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9QQ0FQX1NFTkRQQUNLRVQgMQorCisvKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2V0ZGlyZWN0aW9uIGZ1bmN0aW9uLiAqLworI2RlZmlu
ZSBIQVZFX1BDQVBfU0VURElSRUNUSU9OIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBw
Y2FwX3NldG5vbmJsb2NrIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BDQVBfU0VUTk9OQkxP
Q0sgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2V0X2ltbWVkaWF0ZV9tb2Rl
IGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BDQVBfU0VUX0lNTUVESUFURV9NT0RFIDEKKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIC1scHJvcGVyIGFuZCBwcm9wLmgsIGFuZCBwcm9wZXIgb3Bl
cmF0aW9ucyBzaG91bGQgYmUKKyAgIHByZWZlcnJlZCB0byB0aGVpciBub24tcHJvcGVyIGNvdW50
ZXJwYXJ0cy4gKi8KKy8qICN1bmRlZiBIQVZFX1BST1BFUiAqLworCisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgYSBub24tZW11bGF0ZWQgPHBvbGwuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYg
SEFWRV9QT0xMX0ggKi8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwc2VsZWN0IGZ1bmN0
aW9uLiAqLworI2RlZmluZSBIQVZFX1BTRUxFQ1QgMQorCisvKiBQbGFjZW1lbnQgbmV3IGlzIGFs
d2F5cyBwcm92aWRlZCBiZWxvdy4gKi8KKyNkZWZpbmUgSEFWRV9QTEFDRU1FTlRfTkVXIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uCisgICBvZiAncHRocmVh
ZF9zZXRhZmZpbml0eV9ucCcsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKy8qICN1bmRlZiBI
QVZFX0RFQ0xfUFRIUkVBRF9TRVRBRkZJTklUWV9OUCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIDxwd2QuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfUFdEX0ggMQorCisv
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHJhbmRvbSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFW
RV9SQU5ET00gMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBmdW5jdGlv
bi4gKi8KKy8qICN1bmRlZiBIQVZFX1NJR0FDVElPTiAqLworCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIHNucHJpbnRmIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1NOUFJJTlRGIDEKKwor
LyogRGVmaW5lIGlmICdzdHJ1Y3Qgc29ja2FkZHJfaW4nIGhhcyBhICdzaW5fbGVuJyBtZW1iZXIu
ICovCisvKiAjdW5kZWYgSEFWRV9TT0NLQUREUl9JTl9TSU5fTEVOICovCisKKy8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgc3RyZXJyb3IgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RSRVJS
T1IgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxl
LiAqLworI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgc3RybmxlbiBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TVFJOTEVOIDEKKworLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2YgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RS
VE9GIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xkIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX1NUUlRPTEQgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnRv
dWwgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RSVE9VTCAxCisKKy8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgPHN5cy9ldmVudC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZF
X1NZU19FVkVOVF9IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+
IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19NTUFOX0ggMQorCisvKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHRjZ2V0cGdycCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9UQ0dF
VFBHUlAgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx0ZXJtaW8uaD4gaGVhZGVyIGZp
bGUuICovCisjZGVmaW5lIEhBVkVfVEVSTUlPX0ggMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUg
dV9pbnRYWF90IHR5cGVzIGJ1dCBub3QgdWludFhYX3QgdHlwZXMuICovCisvKiAjdW5kZWYgSEFW
RV9VX0lOVF9UWVBFUyAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4g
aGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorCisvKiBEZWZpbmUgaWYg
YSBDbGljayB1c2VyLWxldmVsIGRyaXZlciBtaWdodCBydW4gbXVsdGlwbGUgdGhyZWFkcy4gKi8K
Ky8qICN1bmRlZiBIQVZFX1VTRVJfTVVMVElUSFJFQUQgKi8KKworLyogRGVmaW5lIGlmIGEgQ2xp
Y2sgdXNlci1sZXZlbCBkcml2ZXIgdXNlcyBJbnRlbCBEUERLLiAqLworLyogI3VuZGVmIEhBVkVf
RFBESyAqLworCisvKiBEZWZpbmUgaWYgQ2xpY2sgc2hvdWxkIHVzZSBWYWxncmluZCBjbGllbnQg
cmVxdWVzdHMuICovCisvKiAjdW5kZWYgSEFWRV9WQUxHUklORCAqLworCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIDx2YWxncmluZC9tZW1jaGVjay5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1
bmRlZiBIQVZFX1ZBTEdSSU5EX01FTUNIRUNLX0ggKi8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSB2c25wcmludGYgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfVlNOUFJJTlRGIDEKKwor
LyogVGhlIHNpemUgb2YgYSBgY2xpY2tfamlmZmllc190JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9m
LiAqLworI2RlZmluZSBTSVpFT0ZfQ0xJQ0tfSklGRklFU19UIFNJWkVPRl9JTlQKKworLyogVGhl
IHNpemUgb2YgYSBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJ
WkVPRl9PRkZfVCA4CisKKworLyogU2V0IGZlYXR1cmUgdGVzdCBtYWNyb3MgYmVmb3JlIGFueXRo
aW5nIGlzIGluY2x1ZGVkLiAqLworI2lmIEhBVkVfTEFSR0VfRklMRV9TVVBQT1JUICYmIEhBVkVf
SU5UNjRfVFlQRVMKKyMgaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZG
U0VUX0JJVFMgIT0gNjQKKyMgIGVycm9yICJiYWQgX0ZJTEVfT0ZGU0VUX0JJVFMsIGRpZCB5b3Ug
I2luY2x1ZGUgPGNsaWNrL2NvbmZpZy5oPiBmaXJzdD8iCisjIGVuZGlmCisjIGRlZmluZSBfTEFS
R0VGSUxFX1NPVVJDRSAxCisjIGRlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAorI2VuZGlmCisj
aWZkZWYgX19BUFBMRV9fCisjIGRlZmluZSBfREFSV0lOX1VOTElNSVRFRF9TRUxFQ1QgMQorI2Vu
ZGlmCisKKy8qIEluY2x1ZGUgaW50ZWdlciB0eXBlIGRlZmluaXRpb25zLiAqLworI2lmZGVmIEhB
VkVfSU5UVFlQRVNfSAorIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2VuZGlmCisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisKKy8qIERlZmluZSB1aW50IHR5cGVzIGluIHRlcm1zIG9mIHVfaW50IHR5
cGVzLCBpZiBuZWNlc3NhcnkuICovCisjaWZkZWYgSEFWRV9VX0lOVF9UWVBFUwordHlwZWRlZiB1
X2ludDhfdCB1aW50OF90OwordHlwZWRlZiB1X2ludDE2X3QgdWludDE2X3Q7Cit0eXBlZGVmIHVf
aW50MzJfdCB1aW50MzJfdDsKKyMgaWZkZWYgSEFWRV9JTlQ2NF9UWVBFUwordHlwZWRlZiB1X2lu
dDY0X3QgdWludDY0X3Q7CisjIGVuZGlmCit0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CQkvKiBYWFg/
ICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OworI2VuZGlmCisKKy8qIERlZmlu
ZSBIQVZFX0lOVDY0X0lTX0xPTkcgYmFzZWQgb24gSEFWRV9JTlQ2NF9JU19MT05HX1VTRVJMRVZF
TC4gKi8KKyNpZmRlZiBIQVZFX0lOVDY0X0lTX0xPTkdfVVNFUkxFVkVMCisjIGRlZmluZSBIQVZF
X0lOVDY0X0lTX0xPTkcgSEFWRV9JTlQ2NF9JU19MT05HX1VTRVJMRVZFTAorI2VuZGlmCisKKy8q
IERlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkdfTE9ORyBiYXNlZCBvbiBIQVZFX0lOVDY0X0lTX0xP
TkdfTE9OR19VU0VSTEVWRUwuICovCisjaWZkZWYgSEFWRV9JTlQ2NF9JU19MT05HX0xPTkdfVVNF
UkxFVkVMCisjIGRlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkdfTE9ORyBIQVZFX0lOVDY0X0lTX0xP
TkdfTE9OR19VU0VSTEVWRUwKKyNlbmRpZgorCisvKiBJZiA2NC1iaXQgaW50ZWdlcnMgZXhpc3Qs
IHRoZW4gNjQtYml0IGRpdmlkZSBleGlzdHMuICovCisjaWZkZWYgSEFWRV9JTlQ2NF9UWVBFUwor
IyBkZWZpbmUgSEFWRV9JTlQ2NF9ESVZJREUgMQorI2VuZGlmCisKKy8qIERlZmluZSBIQVZFX01V
TFRJVEhSRUFEIGJhc2VkIG9uIEhBVkVfVVNFUl9NVUxUSVRIUkVBRC4gKi8KKyNpZmRlZiBIQVZF
X1VTRVJfTVVMVElUSFJFQUQKKyMgZGVmaW5lIEhBVkVfTVVMVElUSFJFQUQgSEFWRV9VU0VSX01V
TFRJVEhSRUFECisjZW5kaWYKKworLyogRGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUgaWYg
dGhlIGNsb2NrX2dldHRpbWUgZnVuY3Rpb24gaXMgdXNhYmxlLiAqLworI2lmbmRlZiBIQVZFX1VT
RV9DTE9DS19HRVRUSU1FCisjIGlmIEhBVkVfREVDTF9DTE9DS19HRVRUSU1FICYmIEhBVkVfQ0xP
Q0tfR0VUVElNRQorIyAgZGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUgMQorIyBlbmRpZgor
I2VuZGlmCisKKy8qIEluY2x1ZGUgYXNzZXJ0IG1hY3JvLiAqLworI2luY2x1ZGUgPGFzc2VydC5o
PgorCisvKiBEZWZpbmUgbGlrZWx5IGFuZCB1bmxpa2VseSBtYWNyb3MuICovCisjaWYgX19HTlVD
X18gPj0gMworIyBkZWZpbmUgbGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCksIDEpCisj
IGRlZmluZSB1bmxpa2VseSh4KQlfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLCAwKQorI2Vsc2UKKyMg
ZGVmaW5lIGxpa2VseSh4KQkoeCkKKyMgZGVmaW5lIHVubGlrZWx5KHgpCSh4KQorI2VuZGlmCisK
Ky8qIERlZmluZSBpZiBtbWFwIGlzIGFsbG93ZWQuICovCisjaWYgZGVmaW5lZChIQVZFX1NZU19N
TUFOX0gpICYmIGRlZmluZWQoSEFWRV9NTUFQKQorIyBkZWZpbmUgQUxMT1dfTU1BUCAxCisjZW5k
aWYKKworLyogUHJvdG90eXBlIHN0cmVycm9yIGlmIHdlIGRvbid0IGhhdmUgaXQuICovCisjaWZu
ZGVmIEhBVkVfU1RSRVJST1IKK2NoYXIgKnN0cmVycm9yKGludCBlcnJubyk7CisjZW5kaWYKKwor
LyogVXNlIG5hbm9zZWNvbmQtZ3JhbnVsYXJpdHkgdGltZXN0YW1wcyBpZiB0aGV5IGFyZSBlbmFi
bGVkLiAqLworI2lmIEhBVkVfTkFOT1RJTUVTVEFNUF9FTkFCTEVECisjIGRlZmluZSBUSU1FU1RB
TVBfTkFOT1NFQyAxCisjIGRlZmluZSBIQVZFX05BTk9USU1FU1RBTVAgMQkvKiBEZXByZWNhdGVk
ICovCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8qIFByb3ZpZGUgcGxhY2VtZW50
IG5ldy4gKi8KKyNpZiBIQVZFX05FV19IRFIKKyMgaW5jbHVkZSA8bmV3PgorI2VsaWYgSEFWRV9O
RVdfSAorIyBpbmNsdWRlIDxuZXcuaD4KKyNlbHNlCitpbmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCAqdikgeyByZXR1cm4gdjsgfQorI2VuZGlmCisKKy8qIFByb3RvdHlwZSBt
YWR2aXNlIGlmIHdlIGhhdmUgaXQsIGJ1dCBub3QgdGhlIHByb3RvdHlwZS4gKi8KKyNpZiBBTExP
V19NTUFQICYmIEhBVkVfTUFEVklTRSAmJiAhSEFWRV9ERUNMX01BRFZJU0UKK2V4dGVybiAiQyIg
aW50IG1hZHZpc2Uodm9pZCAqYWRkciwgc2l6ZV90IGxlbiwgaW50IGJlaGF2KTsKKyNlbmRpZgor
CisvKiBEZWZpbmUgbWFjcm9zIHRoYXQgc3Vycm91bmQgQ2xpY2sgZGVjbGFyYXRpb25zLiAqLwor
I2lmbmRlZiBDTElDS19ERUNMUworIyBkZWZpbmUgQ0xJQ0tfREVDTFMJCS8qICovCisjIGRlZmlu
ZSBDTElDS19FTkRERUNMUwkJLyogKi8KKyMgZGVmaW5lIENMSUNLX1VTSU5HX0RFQ0xTCS8qICov
CisjIGRlZmluZSBDTElDS19OQU1FKG5hbWUpCTo6bmFtZQorI2VuZGlmCisKKyNlbmRpZiAvKiBf
X2NwbHVzcGx1cyAqLworCisjZW5kaWYgLyogQ0xJQ0tfQ09ORklHX1VTRVJMRVZFTF9IICovCi0t
IAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSw-0003NT-F9; Wed, 05 Jun 2019 07:36:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSv-0003MS-7Y
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:09 +0000
X-Inumbo-ID: 941fd700-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 941fd700-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id F083F1052C7;
 Wed,  5 Jun 2019 09:36:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id m4AmooEALkcH; Wed,  5 Jun 2019 09:36:05 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4C1B61052E2
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:05 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:04 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:36 +0200
Message-ID: <20190605073545.1785-3-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 02/11] Initial public
 release: click.cc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyB0YWtlbiBmcm9tIGZyb20ga29obGVyL2NsaWNrL21pbmlvcy8sIHdpdGggYW4gdXBk
YXRlZCBjb3B5cmlnaHQKaGVhZGVyLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxm
bG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxp
cGUuaHVpY2lAbmVjbGFiLmV1PgotLS0KIGNsaWNrLmNjIHwgMzg0ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAz
ODQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNsaWNrLmNjCgpkaWZmIC0tZ2l0
IGEvY2xpY2suY2MgYi9jbGljay5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNWJjNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvY2xpY2suY2MKQEAgLTAsMCArMSwzODQgQEAK
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTQgTkVDIEV1cm9wZSBMdGQsCisgKiAgICAgICAgICAgICAgIDIwMTksIE5F
QyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAg
ICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJF
IEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpbmNsdWRlIDxjbGlj
ay9jb25maWcuaD4KKyNpbmNsdWRlIDxjbGljay9sZXhlci5oaD4KKyNpbmNsdWRlIDxjbGljay9y
b3V0ZXIuaGg+CisjaW5jbHVkZSA8Y2xpY2svbWFzdGVyLmhoPgorI2luY2x1ZGUgPGNsaWNrL2Vy
cm9yLmhoPgorI2luY2x1ZGUgPGNsaWNrL3RpbWVyLmhoPgorI2luY2x1ZGUgPGNsaWNrL3N0cmlu
Zy5oaD4KKyNpbmNsdWRlIDxjbGljay9zdHJhY2N1bS5oaD4KKyNpbmNsdWRlIDxjbGljay9kcml2
ZXIuaGg+CisKK2V4dGVybiAiQyJ7CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPG1pbmktb3MveGVuYnVzLmg+
CisjaW5jbHVkZSA8bWluaS1vcy9zaHV0ZG93bi5oPgorI2luY2x1ZGUgPG1pbmktb3Mvc2NoZWQu
aD4KK30KKwordm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKKworI2RlZmluZSBOTE9HKGZtdCwg
Li4uKQorI2RlZmluZSBMT0coZm10LCAuLi4pIFwKKwlwcmludGYoIlslczolZF0gIiBmbXQgIlxu
IiwgXAorCQlfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQorCisvKioKKyAq
IHhlbnN0b3JlIGhlbHBlcnMKKyAqLworI2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3MiCisjZGVm
aW5lIFBBVEhfTUFYX0xFTgkxMDI0CisKK3N0cnVjdCB4ZW5zdG9yZV9kZXYgeworCWRvbWlkX3Qg
ZG9tOworCWNoYXIgKm5vZGVuYW1lOworCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7Cit9ICp4
c2RldiA9IE5VTEw7CisKK3VpbnQzMl90IGRvbWlkID0gLTE7Cit1X2ludCBfc2h1dGRvd24gPSAw
OwordV9pbnQgX3JlYXNvbiA9IDA7CisKK2NoYXIqCitldmVudF90b2tlbihjaGFyICoqa2V5KQor
eworCWNoYXIgKnAgPSAqa2V5LCAqcDI7CisJY2hhciAqdG9rZW47CisJdV9pbnQgc3o7CisKKwlw
MiA9IHN0cmNocigrK3AsICcvJyk7CisJc3ogPSAocDIgIT0gTlVMTCA/IHAyIC0gcCA6IHN0cmxl
bihwKSk7CisJdG9rZW4gPSBzdHJuZHVwKHAsIHN6KTsKKwkqa2V5ID0gKHArc3opOworCisJcmV0
dXJuIHRva2VuOworfQorCitjaGFyKgorcmVhZF9yaWQoY2hhciAqcGF0aCkKK3sKKwljaGFyICpp
ZCA9IHN0cmR1cChwYXRoICsgMSk7CisJY2hhciAqaWRfZW5kID0gc3RyY2hyKGlkLCAnLycpOwor
CSppZF9lbmQgPSAnXDAnOworCXJldHVybiBpZDsKK30KKworU3RyaW5nICoKK3JlYWRfY29uZmln
KHVfaW50IHJpZCA9IDApCit7CisJY2hhciBwYXRoW1BBVEhfTUFYX0xFTl07CisJU3RyaW5nICpj
ZmcgPSBuZXcgU3RyaW5nKCk7CisJY2hhciAqdG9rZW47CisKKwlmb3IgKGludCBpID0gMDs7IGkr
KykgeworCQlzbnByaW50ZihwYXRoLCBQQVRIX01BWF9MRU4sICIlcy8lZC9jb25maWcvJWQiLAor
CQkJCVBBVEhfUk9PVCwgcmlkLCBpKTsKKwkJeGVuYnVzX3JlYWQoWEJUX05JTCwgcGF0aCwgJnRv
a2VuKTsKKwkJaWYgKHRva2VuID09IE5VTEwpCisJCQlicmVhazsKKwkJKmNmZyArPSB0b2tlbjsK
Kwl9CisKKwlyZXR1cm4gY2ZnOworfQorCisvKgorICogY2xpY2sgZ2x1ZQorICovCisKKyNkZWZp
bmUgTUFYX1JPVVRFUlMJNjQKK3N0YXRpYyBFcnJvckhhbmRsZXIgKmVycmg7CitzdGF0aWMgTWFz
dGVyIG1hc3RlcigxKTsKKworc3RydWN0IHJvdXRlcl9pbnN0YW5jZSB7CisJUm91dGVyICpyOwor
CXVfaW50IGZfc3RvcDsKK30gcm91dGVyX2xpc3RbTUFYX1JPVVRFUlNdOworCit2b2lkCityb3V0
ZXJfdGhyZWFkKHZvaWQgKnRocmVhZF9kYXRhKQoreworCXVfaW50ICpyaWQgPSAodV9pbnQqKSB0
aHJlYWRfZGF0YTsKKwlTdHJpbmcgKmNvbmZpZyA9IHJlYWRfY29uZmlnKCpyaWQpOworCXN0cnVj
dCByb3V0ZXJfaW5zdGFuY2UgKnJpID0gJnJvdXRlcl9saXN0WypyaWRdOworCisJcmktPnIgPSBj
bGlja19yZWFkX3JvdXRlcigqY29uZmlnLCB0cnVlLCBlcnJoLCBmYWxzZSwgJm1hc3Rlcik7CisJ
aWYgKHJpLT5yLT5pbml0aWFsaXplKGVycmgpIDwgMCkgeworCQlMT0coIlJvdXRlciBpbml0IGZh
aWxlZCEiKTsKKwkJcmktPmZfc3RvcCA9IDE7CisJCXJldHVybjsKKwl9CisKKwlyaS0+ci0+dXNl
KCk7CisJcmktPnItPmFjdGl2YXRlKGVycmgpOworCisJTE9HKCJTdGFydGluZyBkcml2ZXIuLi5c
blxuIik7CisJcmktPnItPm1hc3RlcigpLT50aHJlYWQoMCktPmRyaXZlcigpOworCisJTE9HKCJT
dG9wcGluZyBkcml2ZXIuLi5cblxuIik7CisJcmktPnItPnVudXNlKCk7CisJcmktPmZfc3RvcCA9
IDE7CisKKwlMT0coIk1hc3Rlci9kcml2ZXIgc3RvcHBlZCwgY2xvc2luZyByb3V0ZXJfdGhyZWFk
Iik7CisJZnJlZShjb25maWcpOworCWZyZWUocmlkKTsKK30KKwordm9pZAorcm91dGVyX3N0b3Ao
aW50IG4gPSBNQVhfUk9VVEVSUykKK3sKKwlMT0coIlN0b3BwaW5nIGFsbCByb3V0ZXJzLi4uXG5c
biIpOworCWZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKKwkJUm91dGVyICpyID0g
cm91dGVyX2xpc3RbaV0ucjsKKworCQlpZiAocm91dGVyX2xpc3RbaV0uZl9zdG9wKQorCQkJY29u
dGludWU7CisKKwkJTE9HKCJTdG9wcGluZyBpbnN0YW5jZSA9ICVkLi4uXG5cbiIsIGkpOworCisJ
CWRvIHsKKwkJCXItPnBsZWFzZV9zdG9wX2RyaXZlcigpOworCQkJc2NoZWR1bGUoKTsKKwkJfSB3
aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsKKwl9CisJTE9HKCJTdG9wcGVkIGFsbCBy
b3V0ZXJzLi4uXG5cbiIpOworfQorCit2b2lkCityb3V0ZXJfc3VzcGVuZChpbnQgbiA9IE1BWF9S
T1VURVJTKQoreworfQorCit2b2lkCityb3V0ZXJfcmVzdW1lKGludCBuID0gTUFYX1JPVVRFUlMp
Cit7Cit9CisKK3VfaW50Citvbl9zdGF0dXMoaW50IHJpZCwgY2hhciAqa2V5LCB2b2lkICpkYXRh
KQoreworCVN0cmluZyBzdGF0dXMgPSAoY2hhciAqKSBkYXRhOworCXN0cnVjdCByb3V0ZXJfaW5z
dGFuY2UgKnIgPSAmcm91dGVyX2xpc3RbcmlkXTsKKworCUxPRygicm91dGVyIGlkICVkIiwgcmlk
KTsKKwlMT0coInN0YXR1cyBjaGFuZ2UgdG8gJXMiLCBkYXRhKTsKKwlpZiAoc3RhdHVzID09ICJS
dW5uaW5nIikgeworCQl1X2ludCAqYXJnMDsKKworCQlpZiAoIXItPmZfc3RvcCkKKwkJCWdvdG8g
c3RhdHVzX2VycjsKKworCQlhcmcwID0gKHVfaW50KikgbWFsbG9jKHNpemVvZih1X2ludCkpOwor
CQkqYXJnMCA9IHJpZDsKKwkJci0+Zl9zdG9wID0gMDsKKwkJY3JlYXRlX3RocmVhZCgoY2hhciop
ImNsaWNrIiwgcm91dGVyX3RocmVhZCwgYXJnMCk7CisJfSBlbHNlIGlmIChzdGF0dXMgPT0gIkhh
bHRlZCIpIHsKKwkJaWYgKHItPmZfc3RvcCkKKwkJCWdvdG8gc3RhdHVzX2VycjsKKworCQlyb3V0
ZXJfc3RvcChyaWQpOworCX0KKworCXJldHVybiAwOworc3RhdHVzX2VycjoKKwlyZXR1cm4gLUVJ
TlZBTDsKK30KKworc3RhdGljIHZvaWQKK3JlYWRfY25hbWUoY2hhciAqcGF0aCwgRWxlbWVudCAq
KmUsIGNvbnN0IEhhbmRsZXIgKipoLCBpbnQgcmlkKQoreworCWludCBzZXAgPSBzdHJjaHIocGF0
aCwgJy8nKSAtIHBhdGg7CisJU3RyaW5nIGVuYW1lKHBhdGgsIHNlcCksIGhuYW1lKHBhdGggKyBz
ZXAgKyAxKTsKKwlSb3V0ZXIgKnIgPSByb3V0ZXJfbGlzdFtyaWRdLnI7CisKKwlOTE9HKCJzZXA9
JWQgZWxlbWVudD0lcyBoYW5kbGVyPSVzIiwgc2VwLAorCQkJZW5hbWUuY19zdHIoKSwgaG5hbWUu
Y19zdHIoKSk7CisKKwkqZSA9IHItPmZpbmQoZW5hbWUpOworCSpoID0gUm91dGVyOjpoYW5kbGVy
KCplLCBobmFtZSk7CisJTkxPRygiZW5hbWUgJXM9JXAgaG5hbWUgJXM9JXAiLCBlbmFtZS5jX3N0
cigpLCBlLCBobmFtZS5jX3N0cigpLCBoKTsKK30KKwordV9pbnQKK29uX2VsZW1fcmVhZGgoaW50
IHJpZCwgY2hhciAqa2V5LCB2b2lkICpkYXRhKQoreworCUVsZW1lbnQgKmU7CisJY29uc3QgSGFu
ZGxlciogaDsKKwlTdHJpbmcgdmFsLCBoX3BhdGgsIGxvY2tfcGF0aDsKKwlpbnQgZl9zdG9wID0g
cm91dGVyX2xpc3RbcmlkXS5mX3N0b3A7CisKKwlpZiAoc3RybmNtcChrZXksICIvcmVhZC8iLCA2
KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZl9zdG9wKQorCQlyZXR1cm4gMDsKKworCXJlYWRfY25h
bWUoa2V5KzYsICZlLCAmaCwgcmlkKTsKKworCWlmICghaCB8fCAhaC0+cmVhZGFibGUoKSkKKwkJ
cmV0dXJuIEVJTlZBTDsKKworCXZhbCA9IGgtPmNhbGxfcmVhZChlLCAiIiwgRXJyb3JIYW5kbGVy
OjpkZWZhdWx0X2hhbmRsZXIoKSk7CisJaF9wYXRoID0gU3RyaW5nKFBBVEhfUk9PVCkgKyAiLzAv
ZWxlbWVudHMvIiArIGUtPm5hbWUoKSArICIvIiArIGgtPm5hbWUoKTsKKwlsb2NrX3BhdGggPSBo
X3BhdGggKyAiL2xvY2siOworCisJeGVuYnVzX3dyaXRlKFhCVF9OSUwsIGhfcGF0aC5jX3N0cigp
LCB2YWwuY19zdHIoKSk7CisJeGVuYnVzX3dyaXRlKFhCVF9OSUwsIGxvY2tfcGF0aC5jX3N0cigp
LCAiMCIpOworCisJTkxPRygiZWxlbWVudCBoYW5kbGVyIHJlYWQgJXMiLCB2YWwuY19zdHIoKSk7
CisJcmV0dXJuIDA7Cit9CisKK3VfaW50Citvbl9lbGVtX3dyaXRlaChpbnQgcmlkLCBjaGFyICpr
ZXksIHZvaWQgKmRhdGEpCit7CisJRWxlbWVudCAqZTsKKwljb25zdCBIYW5kbGVyKiBoOworCWlu
dCBmX3N0b3AgPSByb3V0ZXJfbGlzdFtyaWRdLmZfc3RvcDsKKworCWlmIChmX3N0b3AgfHwgc3Ry
bGVuKChjaGFyICopIGRhdGEpID09IDApCisJCXJldHVybiAwOworCisJcmVhZF9jbmFtZShrZXkr
MSwgJmUsICZoLCByaWQpOworCisJaWYgKCFoIHx8ICFoLT53cml0YWJsZSgpKQorCQlyZXR1cm4g
RUlOVkFMOworCisJaC0+Y2FsbF93cml0ZShTdHJpbmcoZGF0YSksIGUsIEVycm9ySGFuZGxlcjo6
ZGVmYXVsdF9oYW5kbGVyKCkpOworCU5MT0coImVsZW1lbnQgaGFuZGxlciB3cml0ZSAlcyB2YWx1
ZSAlcyIsIGRhdGEsICIiKTsKKwlyZXR1cm4gMDsKK30KKwordV9pbnQKK29uX3JvdXRlcihjaGFy
ICprZXksIHZvaWQgKmRhdGEpCit7CisJY2hhciAqcCA9IGtleTsKKwlTdHJpbmcgcmV2OworCXVf
aW50IHJpZDsKKworCWlmIChzdHJsZW4oa2V5KSA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJpZCA9
IGF0b2koZXZlbnRfdG9rZW4oJnApKTsKKwlyZXYgPSBldmVudF90b2tlbigmcCk7CisKKwlpZiAo
cmV2ID09ICJjb250cm9sIikKKwkJb25fZWxlbV9yZWFkaChyaWQsIHAsIGRhdGEpOworCWVsc2Ug
aWYgKHJldiA9PSAiZWxlbWVudHMiKQorCQlvbl9lbGVtX3dyaXRlaChyaWQsIHAsIGRhdGEpOwor
CWVsc2UgaWYgKHJldiA9PSAic3RhdHVzIikKKwkJb25fc3RhdHVzKHJpZCwga2V5LCBkYXRhKTsK
KworCXJldHVybiAwOworfQorCisvKiBydW5zIHRoZSBldmVudCBsb29wICovCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1Y3QgeGVu
c3RvcmVfZGV2KTsKKworCWNsaWNrX3N0YXRpY19pbml0aWFsaXplKCk7CisJZXJyaCA9IEVycm9y
SGFuZGxlcjo6ZGVmYXVsdF9oYW5kbGVyKCk7CisKKwl4c2RldiA9IChzdHJ1Y3QgeGVuc3RvcmVf
ZGV2KikgbWFsbG9jKGxlbik7CisJbWVtc2V0KHhzZGV2LCAwLCBsZW4pOworCW1lbXNldChyb3V0
ZXJfbGlzdCwgMCwgTUFYX1JPVVRFUlMgKiBzaXplb2Yoc3RydWN0IHJvdXRlcl9pbnN0YW5jZSkp
OworCWZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1JPVVRFUlM7ICsraSkgeworCQlyb3V0ZXJfbGlz
dFtpXS5mX3N0b3AgPSAxOworCX0KKworCXhlbmJ1c193YXRjaF9wYXRoX3Rva2VuKFhCVF9OSUws
IFBBVEhfUk9PVCwgInJvdXRlci13YXRjaCIsCisJCQkmeHNkZXYtPmV2ZW50cyk7CisKKwl3aGls
ZSAoIV9zaHV0ZG93bikgeworCQlTdHJpbmcgdmFsdWU7CisJCWNoYXIgKmVyciwgKnZhbCwgKipw
YXRoOworCisJCXBhdGggPSB4ZW5idXNfd2FpdF9mb3Jfd2F0Y2hfcmV0dXJuKCZ4c2Rldi0+ZXZl
bnRzKTsKKwkJaWYgKCFwYXRoIHx8IF9zaHV0ZG93bikKKwkJCWNvbnRpbnVlOworCisJCWVyciA9
IHhlbmJ1c19yZWFkKFhCVF9OSUwsICpwYXRoLCAmdmFsKTsKKwkJaWYgKGVycikKKwkJCWNvbnRp
bnVlOworCisJCW9uX3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7CisJ
fQorCisJTE9HKCJTaHV0dGluZyBkb3duLi4uIik7CisJeGVuYnVzX3Vud2F0Y2hfcGF0aF90b2tl
bihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giKTsKKworCWZpbmlfeGVuYnVzKCk7
CisJZnJlZSh4c2Rldik7CisKKwlyZXR1cm4gX3JlYXNvbjsKK30KKworLyogYXBwIHNodXRkb3du
IGhvb2sgZnJvbSBtaW5pb3MgKi8KK2V4dGVybiAiQyIgeworaW50IGFwcF9zaHV0ZG93bih1bnNp
Z25lZCByZWFzb24pCit7CisJc3dpdGNoIChyZWFzb24pIHsKKwljYXNlIFNIVVRET1dOX3Bvd2Vy
b2ZmOgorCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cG93ZXJvZmYiKTsKKwkJX3No
dXRkb3duID0gMTsKKwkJX3JlYXNvbiA9IHJlYXNvbjsKKwkJcm91dGVyX3N0b3AoKTsKKwkJeGVu
YnVzX3JlbGVhc2Vfd2FpdF9mb3Jfd2F0Y2goJnhzZGV2LT5ldmVudHMpOworCQlicmVhazsKKwlj
YXNlIFNIVVRET1dOX3JlYm9vdDoKKwkJTE9HKCJSZXF1ZXN0ZWQgc2h1dGRvd24gcmVhc29uPXJl
Ym9vdCIpOworCQlfc2h1dGRvd24gPSAxOworCQlfcmVhc29uID0gcmVhc29uOworCQlyb3V0ZXJf
c3RvcCgpOworCQl4ZW5idXNfcmVsZWFzZV93YWl0X2Zvcl93YXRjaCgmeHNkZXYtPmV2ZW50cyk7
CisJCWJyZWFrOworCWNhc2UgU0hVVERPV05fc3VzcGVuZDoKKwkJTE9HKCJSZXF1ZXN0ZWQgc2h1
dGRvd24gcmVhc29uPXN1c3BlbmQiKTsKKwkJcm91dGVyX3N1c3BlbmQoKTsKKwkJa2VybmVsX3N1
c3BlbmQoKTsKKwkJcm91dGVyX3Jlc3VtZSgpOworCWRlZmF1bHQ6CisJCUxPRygiUmVxdWVzdGVk
IHNodXRkb3duIHdpdGggaW52YWxpZCByZWFzb24gKCVkKSIsIHJlYXNvbik7CisJCWJyZWFrOwor
CX0KKworCXJldHVybiAwOworfQorfQotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSx-0003PN-Hv; Wed, 05 Jun 2019 07:36:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSv-0003MT-9e
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:09 +0000
X-Inumbo-ID: 93a8d5df-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 93a8d5df-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 519871052E8;
 Wed,  5 Jun 2019 09:36:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3jYtYako848r; Wed,  5 Jun 2019 09:36:04 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E467B1052D0
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:04 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:03 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:35 +0200
Message-ID: <20190605073545.1785-2-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft 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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIE1ha2VmaWxlLCBNYWtlZmlsZS51aywgQ29uZmlnLnVrLCAuZ2l0aWdub3JlLCAubWQgZmls
ZXMKClNpZ25lZC1vZmYtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4K
U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIC5naXRpZ25vcmUgICAgICB8ICAgNCArKwogQ09ESU5HX1NUWUxFLm1kIHwgICA0ICsr
CiBDT05UUklCVVRJTkcubWQgfCAgIDQgKysKIENPUFlJTkcubWQgICAgICB8ICA0NyArKysrKysr
KysrKysrCiBDb25maWcudWsgICAgICAgfCAgODYgKysrKysrKysrKysrKysrKysrKysrKysKIE1B
SU5UQUlORVJTLm1kICB8ICAxMCArKysKIE1ha2VmaWxlICAgICAgICB8ICAgOSArKysKIE1ha2Vm
aWxlLnVrICAgICB8IDE4MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIFJFQURNRS5tZCAgICAgICB8ICAgNSArKwogOSBmaWxlcyBjaGFuZ2VkLCAzNTEg
aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRpZ25vcmUKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcu
bWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29u
ZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBNYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgUkVBRE1FLm1kCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmYjcxYgotLS0gL2Rldi9udWxs
CisrKyBiLy5naXRpZ25vcmUKQEAgLTAsMCArMSw0IEBACisuY29uZmlnCisuY29uZmlnLm9sZAor
Li5jb25maWcudG1wCitidWlsZC8KZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElO
R19TVFlMRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzMwMDQxCi0t
LSAvZGV2L251bGwKKysrIGIvQ09ESU5HX1NUWUxFLm1kCkBAIC0wLDAgKzEsNCBAQAorQ29kaW5n
IFN0eWxlCis9PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxF
Lm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9D
T05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWY1NWVjYQotLS0gL2Rldi9udWxsCisrKyBiL0NPTlRSSUJVVElORy5tZApA
QCAtMCwwICsxLDQgQEAKK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAorPT09PT09PT09PT09PT09
PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGlu
IHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIv
Q09QWUlORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmYzNzUzCi0t
LSAvZGV2L251bGwKKysrIGIvQ09QWUlORy5tZApAQCAtMCwwICsxLDQ3IEBACitMaWNlbnNlCis9
PT09PT09CisKK1VuaWtyYWZ0IGNsaWNrIHdyYXBwZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHdyYXBwZXIgY29kZSB0byBidWlsZCB0aGUg
Q2xpY2sgbW9kdWxhciByb3V0ZXIgd2l0aAorVW5pa3JhZnQuIFRoZSB3cmFwcGVyIGNvZGUgaXMg
Z2VuZXJhbGx5IHB1Ymxpc2hlZCB1bmRlciBhIEJTRCAzLWNsYXVzZSBsaWNlbmNlLgorZWFjaCBD
IGNvZGUgZmlsZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZSBj
b3B5cmlnaHQgb3duZXIKK2FuZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUg
Y29kZSBpcyBsaWNlbnNlZC4gSWYgc3VjaCBhIGxpY2VuY2UKK25vdGUgaXMgbWlzc2luZywgdGhl
IGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlIHdpbGwgYXBwbHk6CisKKwlDb3B5cmlnaHQgKGMp
IDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlaSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisJ
ICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJ
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisJYXJlIG1ldDoKKworCTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisJICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCTIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisJICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorCSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisJMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworCSAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisJICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorCUFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKwlJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorCUFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKwlMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisJQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKwlTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKwlJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorCUNPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisJ
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUKKwlQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworQ2xpY2sg
c291cmNlIGNvZGUKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitEdXJpbmcgYnVpbGRpbmcsIHRoZSBi
dWlsZCBzeXN0ZW0gd2lsbCBkb3dubG9hZCB0aGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIgc291cmNl
CitUaGlzIGNvZGUgaGFzIGEgdmFyaWV0eSBvZiBsaWNlbmNlczsgcGxlYXNlIGZpbmQgbW9yZSBp
bmZvcm1hdGlvbiBpbiB0aGUKK2BMSUNFTlNFYCBmaWxlIGluIENsaWNrJ3Mgcm9vdCBkaXJlY3Rv
cnksIG9yIGF0CitodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20va29obGVyL2NsaWNr
L21hc3Rlci9MSUNFTlNFIC4KZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmVkOTk3Ci0tLSAvZGV2L251bGwKKysr
IGIvQ29uZmlnLnVrCkBAIC0wLDAgKzEsODYgQEAKKyMjIyBJbnZpc2libGUgb3B0aW9uIGZvciBk
ZXBlbmRlbmNpZXMKK2NvbmZpZyBBUFBfREVQRU5ERU5DSUVTCisJYm9vbAorCWRlZmF1bHQgeQor
CittZW51Y29uZmlnIExJQkNMSUNLCisJYm9vbCAiVGhlIENsaWNrIG1vZHVsYXIgcm91dGVyIgor
CWRlcGVuZHMgb24gSEFWRV9MSUJDCisJc2VsZWN0IExJQkxXSVAKKwlkZWZhdWx0IHkKKworaWYg
TElCQ0xJQ0sKKworY29uZmlnIExJQkNMSUNLX01BSU4KKwlib29sICJFbmFibGUgQ2xpY2sgbWFp
biBmdW5jdGlvbiIKKwlkZWZhdWx0IG4KKwloZWxwCisJICBEZWZpbmUgbWFpbiBmdW5jdGlvbiBp
bnN0ZWFkIG9mIGNsaWNrX21haW4gZnVuY3Rpb24KKworY29uZmlnIExJQkNMSUNLX0VMRU1TX0FR
TQorCWJvb2wgIkVuYWJsZSBBUU0gZWxlbWVudHMiCisJZGVmYXVsdCB5CisJaGVscAorCSAgQnVp
bGQgd2l0aCBJUCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNfRVRIRVJORVQKKwli
b29sICJFbmFibGUgRXRoZXJuZXQgZWxlbWVudHMiCisJZGVmYXVsdCB5CisJaGVscAorCSAgQnVp
bGQgd2l0aCBFdGhlcm5ldCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNfRVRIRVJT
V0lUQ0gKKwlib29sICJFbmFibGUgRXRoZXJuZXQgc3dpdGNoIGVsZW1lbnRzIgorCWRlZmF1bHQg
eQorCWhlbHAKKwkgIEJ1aWxkIHdpdGggRXRoZXJuZXQgc3dpdGNoIGVsZW1lbnRzCisKK2NvbmZp
ZyBMSUJDTElDS19FTEVNU19JQ01QCisJYm9vbCAiRW5hYmxlIElDTVAgZWxlbWVudHMiCisJZGVm
YXVsdCB5CisJaGVscAorCSAgQnVpbGQgd2l0aCBJQ01QIGVsZW1lbnRzCisKK2NvbmZpZyBMSUJD
TElDS19FTEVNU19JUAorCWJvb2wgIkVuYWJsZSBJUCBlbGVtZW50cyIKKwlkZWZhdWx0IHkKKwlo
ZWxwCisJICBCdWlsZCB3aXRoIGFkYXB0aXZlIHF1ZXVlIG1hbmFnZW1lbnQgZWxlbWVudHMKKwor
Y29uZmlnIExJQkNMSUNLX0VMRU1TX1VOSUtSQUZUCisJYm9vbCAiRW5hYmxlIFVuaWtyYWZ0IG5l
dHdvcmtpbmciCisJZGVmYXVsdCB5CisJaGVscAorCSAgQnVpbGQgd2l0aCBVbmlrcmFmdCBGcm9t
RGV2aWNlIGFuZCBUb0RldmljZSBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNfTE9D
QUwKKwlib29sICJFbmFibGUgbG9jYWwgZWxlbWVudHMiCisJZGVmYXVsdCB5CisJaGVscAorCSAg
QnVpbGQgd2l0aCBsb2NhbCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNfU0lNUExF
CisJYm9vbCAiRW5hYmxlIHNpbXBsZSBlbGVtZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBC
dWlsZCB3aXRoIHNpbXBsZSBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNfU1RBTkRB
UkQKKwlib29sICJFbmFibGUgc3RhbmRhcmQgZWxlbWVudHMiCisJZGVmYXVsdCB5CisJaGVscAor
CSAgQnVpbGQgd2l0aCBzdGFuZGFyZCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNf
VENQVURQCisJYm9vbCAiRW5hYmxlIFRDUC9VRFAgZWxlbWVudHMiCisJZGVmYXVsdCB5CisJaGVs
cAorCSAgQnVpbGQgd2l0aCBUQ1AvVURQIGVsZW1lbnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVN
U19USFJFQURTCisJYm9vbCAiRW5hYmxlIG11bHRpLXRocmVhZGluZyBlbGVtZW50cyIKKwlkZWZh
dWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIG11bHRpLXRocmVhZGluZyBlbGVtZW50cworCitl
bmRpZgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQ4MmM3Ci0tLSAvZGV2L251bGwKKysrIGIv
TUFJTlRBSU5FUlMubWQKQEAgLTAsMCArMSwxMCBAQAorTWFpbnRhaW5lcnMgTGlzdAorPT09PT09
PT09PT09PT09PQorCitGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwg
cGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KK3RoZSBtYWluIFVuaWtyYWZ0IHJl
cG9zaXRvcnkuCisKKwlDTElDSy1VTklLUkFGVAorCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1
aWNpQG5lY2xhYi5ldT4KKwlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZworCUY6ICoKZGlm
ZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOGVjZjgwYgotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxlCkBAIC0wLDAgKzEs
OSBAQAorVUtfUk9PVCA/PSAkKFBXRCkvLi4vdW5pa3JhZnQKK1VLX0xJQlMgPz0gJChQV0QpLy4u
CitMSUJTIDo9ICQoVUtfTElCUykvbmV3bGliOiQoVUtfTElCUykvbHdpcAorCithbGw6CisJQCQo
TUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykKKworJChNQUtFQ01ER09BTFMp
OgorCUAkKE1BS0UpIC1DICQoVUtfUk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpICQoTUFLRUNNREdP
QUxTKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDY0YTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTWFrZWZp
bGUudWsKQEAgLTAsMCArMSwxODIgQEAKKyMKKyMgIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExh
Ym9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorIyAgICAgICAgICAgICAg
ICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyAgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjICBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgIGFyZSBtZXQ6CisjCisjICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjICAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorIyAgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorIyAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyMg
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyMgIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBF
WFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyMKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgQ2hlY2sgcmVxdWlyZW1lbnRzOiBDbGljayByZXF1aXJlcyBuZXRkZXYgYWNjZXNz
LCBzbyBMV0lQIG11c3Qgbm90IGF0dGFjaCB0aGVtCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
aWZlcSAoJChDT05GSUdfTFdJUF9BVVRPSUZBQ0UpLHkpCiskKGVycm9yIENsaWNrIGNhbm5vdCBi
ZSBidWlsdCB3aXRoIExXSVAgb3B0aW9uICJBdXRvbWF0aWNhbGx5IGF0dGFjaCBuZXRpZnMiISBQ
bGVhc2UgZGlzYWJsZSkKK2VuZGlmCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlZ2lz
dGVyIHdpdGggdW5pa3JhZnQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiskKGV2YWwgJChjYWxs
IGFkZGxpYixsaWJjbGljaykpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJDTElDS19DT01NSVRfSEFTSD1hNTM4NDgzNWE2
Y2FjMTBmOGQ0NGRhNGVlZWE4ZWFhOGY4ZTZhMGMyCitMSUJDTElDS19VUkw9aHR0cHM6Ly9jb2Rl
bG9hZC5naXRodWIuY29tL2tvaGxlci9jbGljay96aXAvJChMSUJDTElDS19DT01NSVRfSEFTSCkK
KyQoZXZhbCAkKGNhbGwgZmV0Y2hhcyxsaWJjbGljaywkKExJQkNMSUNLX1VSTCksY2xpY2stJChM
SUJDTElDS19DT01NSVRfSEFTSCkuemlwKSkKK0xJQkNMSUNLX1BBVENIRElSPSQoTElCQ0xJQ0tf
QkFTRSkvcGF0Y2hlcworJChldmFsICQoY2FsbCBwYXRjaCxsaWJjbGljaywkKExJQkNMSUNLX1BB
VENIRElSKSxjbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKSkpCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIENvcHkgVW5pa3JhZnQgZnJvbS90byBkZXZpY2VzCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworaWZuZXEgKCQoQ09ORklHX0xJQkNMSUNLX0VMRU1TX1VOSUtSQUZUKSwpCisk
KHNoZWxsIG1rZGlyIC1wICQoTElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNLX0NPTU1J
VF9IQVNIKS9lbGVtZW50cykKKyQoc2hlbGwgY3AgLXIgJChMSUJDTElDS19CQVNFKS91bmlrcmFm
dCAkKExJQkNMSUNLX09SSUdJTikvY2xpY2stJChMSUJDTElDS19DT01NSVRfSEFTSCkvZWxlbWVu
dHMvKQorZW5kaWYKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSGVscGVycworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKK0xJQkNMSUNLX0VYVFJBQ1RFRD0kKExJQkNMSUNLX09SSUdJTikv
Y2xpY2stJChMSUJDTElDS19DT01NSVRfSEFTSCkKK0xJQkNMSUNLX0VMRU1FTlRTX0RJUj0kKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvZWxlbWVudHMKK0xJQkNMSUNLX0JVSUxEVE9PTD0kKExJQkNMSUNL
X0VYVFJBQ1RFRCkvYmluL2NsaWNrLWJ1aWxkdG9vbAorTElCQ0xJQ0tfRUxFTV9ESVJTPWFxbSBl
dGhlcm5ldCBldGhlcnN3aXRjaCBpY21wIGlwIHVuaWtyYWZ0IFwKKwkJICAgbG9jYWwgc2ltcGxl
IHN0YW5kYXJkIHRjcHVkcCB0aHJlYWRzCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENv
bmZpZyBNZW51IC0gRmlsdGVyIHdoaWNoIGVsZW1lbnQgY2F0ZWdvcmllcyBhY3R1YWxseSBnZXQg
YnVpbHQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJDTElDS19FTEVNX0RJUlNfVT0kKGNh
bGwgdWMsJChMSUJDTElDS19FTEVNX0RJUlMpKQorTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJT
X1UgOj0gJChmb3JlYWNoIFYsICQoTElCQ0xJQ0tfRUxFTV9ESVJTX1UpLCBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkKGlmICQoZmlsdGVyIHksJChDT05GSUdfTElCQ0xJQ0tf
RUxFTVNfJFYpKSwkVikpCitMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlM9JChjYWxsIGxjLCQo
TElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTX1UpKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyBBcHAtc3BlY2lmaWMgVGFyZ2V0cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBS
dW4gQ2xpY2sncyBjb25maWd1cmUgc2NyaXB0CiskKExJQkNMSUNLX0JVSUxEKS8uY29uZmlndXJl
ZDogJChMSUJDTElDS19CVUlMRCkvLm9yaWdpbgorCSQoY2FsbCB2ZXJib3NlX2NtZCxDT05GSUdV
UkUsbGliYXBwOiAkQCxcCisJICAgICAgIGNkICQoTElCQ0xJQ0tfRVhUUkFDVEVEKSAmJiAuL2Nv
bmZpZ3VyZSAtLWVuYWJsZS1taW5pb3MgLS13aXRoLXhlbj0kKExJQkNMSUNLX0JVSUxEKSAtLXdp
dGgtbWluaW9zPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1uZXdsaWI9JChMSUJDTElDS19CVUlM
RCkgLS13aXRoLWx3aXA9JChMSUJDTElDS19CVUlMRCkgJiYgXAorCSAgICAgICAkKFRPVUNIKSAk
QCkKKworIyBHZW5lcmF0ZSBlbGVtZW50IGJ1aWxkIHJ1bGVzIHVzaW5nIGNsaWNrLWJ1aWxkdG9v
bAorJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzbWs6ICQoTElCQ0xJQ0tfQlVJTEQpLy5jb25m
aWd1cmVkICQoVUtfQ09ORklHX09VVCkKKwkkKGNhbGwgdmVyYm9zZV9jbWQsRUxFTU1LLGxpYmFw
cDogJEAsXAorCSAgICAgICBjZCAkKExJQkNMSUNLX0VMRU1FTlRTX0RJUikgJiYgZWNobyAiJChM
SUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlMpIiB8ICQoTElCQ0xJQ0tfQlVJTERUT09MKSBmaW5k
ZWxlbSAtciB1bmlrcmFmdCAtWCAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5leGNsdWRlIHwg
Z3JlcCAtRSAiXlteI10iIHwgYXdrICd7cHJpbnQgIkxJQkNMSUNLX1NSQ1MteSArPSAkJChMSUJD
TElDS19FWFRSQUNURUQpL2VsZW1lbnRzLyIgJCQxfScgPiAkQCkKKworIyBHZW5lcmF0ZSBlbGVt
ZW50cy5jYyBhbmQgYWRkIGl0IHRvIHRoZSBidWlsZCBsaXN0CiskKExJQkNMSUNLX0JVSUxEKS9l
bGVtZW50cy5jYzogJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzbWsKKwkkKGNhbGwgdmVyYm9z
ZV9jbWQsRUxFTUNDLGxpYmFwcDogJEAsXAorCSAgICAgICBlY2hvICIkKExJQkNMSUNLX0ZJTFRF
UkVEX0VMRU1fRElSUykiIHwgJChMSUJDTElDS19CVUlMRFRPT0wpIGZpbmRlbGVtIC1yIHVuaWty
YWZ0IC1wICQoTElCQ0xJQ0tfRUxFTUVOVFNfRElSKSAtWCAkKExJQkNMSUNLX0JVSUxEKS9lbGVt
ZW50cy5leGNsdWRlID4gJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzY29uZiAmJiBcCisJICAg
ICAgICQoTElCQ0xJQ0tfQlVJTERUT09MKSBlbGVtMmV4cG9ydCA8ICQoTElCQ0xJQ0tfQlVJTEQp
Ly5lbGVtZW50c2NvbmYgPiAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYykKKworJChMSUJD
TElDS19CVUlMRCkvLnByZXBhcmVkOiAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYworCitV
S19QUkVQQVJFICs9ICQoTElCQ0xJQ0tfQlVJTEQpLy5wcmVwYXJlZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyBBcHAgaW5jbHVkZXMsIGNvbXBpbGUgZmxhZ3MKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCitMSUJDTElDS19DSU5DTFVERVMgICArPSAtSSQoTElCQ0xJQ0tfQkFTRSkvaW5j
bHVkZSAgICAgICAgXAorCQkgICAgICAgIC1JJChMSUJDTElDS19FWFRSQUNURUQpCSAgICAgXAor
CQkJLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkvaW5jbHVkZSBcCisJCQktSSQoTElCTFdJUF9MV0lQ
X1NSQ1MpL2luY2x1ZGUvcG9zaXgKK0xJQkNMSUNLX0NYWElOQ0xVREVTICs9IC1JJChMSUJDTElD
S19CQVNFKS9pbmNsdWRlICAgICAgICBcCisJCSAgICAgICAgLUkkKExJQkNMSUNLX0VYVFJBQ1RF
RCkgICAgICAgICAgIFwKKwkJCS1JJChMSUJDTElDS19FWFRSQUNURUQpL2luY2x1ZGUgXAorCQkJ
LUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRlL3Bvc2l4CisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjIEdsb2JhbCBmbGFncworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkNMSUNL
X0NGTEFHUy15ICAgICAgICs9IC1ETFdJUF9USU1FVkFMX1BSSVZBVEU9MCAtRENMSUNLX1VTRVJM
RVZFTAorTElCQ0xJQ0tfQ1hYRkxBR1MteSAgICAgKz0gLURMV0lQX1RJTUVWQUxfUFJJVkFURT0w
IC1EQ0xJQ0tfVVNFUkxFVkVMIC1ESEFWRV9JUDYKK0xJQkNMSUNLX0NYWEZMQUdTICAgICAgICs9
IC1mbm8tZXhjZXB0aW9ucyAtZm5vLXJ0dGkgLXN0ZD1jKysxMQorCisjIFN1cHByZXNzIHNvbWUg
d2FybmluZ3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJvY2VzcyBsb29rIG5lYXRlcgorTElCQ0xJQ0tf
U1VQUFJFU1NfRkxBR1MgOj0gLVduby1zdHJpY3QtYWxpYXNpbmcKK0xJQkNMSUNLX0NGTEFHUy15
ICs9ICQoTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MpCitMSUJDTElDS19DWFhGTEFHUy15ICs9ICQo
TElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFVu
aWtyYWZ0IDwtPiBDbGljayBnbHVlIGNvZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJD
TElDS19TUkNTLXkgKz0gJChMSUJDTElDS19CQVNFKS9jbGljay5jYworCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyBDbGljayBzb3VyY2VzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXJjaGl2ZS5jYworTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXJncy5jYworTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXRvbWljLmNjCitMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9iaWdoYXNobWFwX2FyZW5hLmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9iaXR2ZWN0b3Iu
Y2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2NvbmZwYXJz
ZS5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvY3JjMzIu
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZHJpdmVyLmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lbGVtZW50LmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lbGVtZmlsdGVy
LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lcnJvci5j
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZXRoZXJhZGRy
ZXNzLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9nYXBy
YXRlLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9nbHVl
LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9oYW5kbGVy
Y2FsbC5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaGFz
aGFsbG9jYXRvci5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9s
aWIvaW5fY2tzdW0uYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9s
aWIvaW50ZWdlcnMuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkv
bGliL2lwYWRkcmVzcy5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9saWIvaXBmbG93aWQuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RF
RCkvbGliL2lwdGFibGUuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RF
RCkvbGliL2xleGVyLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9tYXN0ZXIuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkv
bGliL21kNS5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIv
bmFtZWluZm8uY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L25vdGlmaWVyLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi9wYWNrZXQuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3JvdXRlci5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIv
cm91dGVydGhyZWFkLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9yb3V0ZXJ2aXNpdG9yLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9zdHJhY2N1bS5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhU
UkFDVEVEKS9saWIvc3RyaW5nLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi90YXNrLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNU
RUQpL2xpYi90aW1lci5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9saWIvdGltZXJzZXQuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RF
RCkvbGliL3RpbWVzdGFtcC5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFD
VEVEKS9saWIvdmFyaWFibGVlbnYuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VY
VFJBQ1RFRCkvbGliL2lwNnRhYmxlLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19F
WFRSQUNURUQpL2xpYi9pcDZhZGRyZXNzLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElD
S19FWFRSQUNURUQpL2xpYi9pcDZmbG93aWQuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNM
SUNLX0VYVFJBQ1RFRCkvbGliL3NlbGVjdHNldC5jYworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyBDbGljayBlbGVtZW50cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYworLWluY2x1ZGUgJChMSUJDTElD
S19CVUlMRCkvLmVsZW1lbnRzbWsKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2RlNWIwCi0tLSAvZGV2L251bGwK
KysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNSBAQAorQ2xpY2sgZm9yIFVuaWtyYWZ0Cis9PT09
PT09PT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2Vs
bCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gCitzdWJkaXJlY3Rvcnkgb2YgdGhl
IG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4KLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSy-0003Pn-Jg; Wed, 05 Jun 2019 07:36: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSw-0003NL-Dh
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:10 +0000
X-Inumbo-ID: 95c8b664-8764-11e9-9484-b73508f2f9ca
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 95c8b664-8764-11e9-9484-b73508f2f9ca;
 Wed, 05 Jun 2019 07:36:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C7166105317;
 Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LQPH0qznDc8e; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B6A02105328
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:07 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:07 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:43 +0200
Message-ID: <20190605073545.1785-10-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 09/11] support for loading
 click configs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGV4cGVjdGVkIHdheSBpcyB0byBwcm92aWRlIGEgKHBsYWluLXRleHQpIGNvbmZpZyBmaWxl
IGFzIGluaXRyZC4gSWYKbm8gaW5pdHJkIGlzIHByb3ZpZGVkLCBjbGljayB3aWxsIGZhbGwgYmFj
ayB0byBhIHN0YXRpYywgY29tcGlsZWQtaW4KY29uZmlnIHRoYXQgcmVwbGllcyB0byBwaW5ncy4K
ClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5l
dT4KLS0tCiBjbGljay5jYyAgICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrLS0tLS0KIGluY2x1ZGUvc3RhdGljX2NvbmZpZy5oIHwgMjIgKysrKysrKysr
KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3RhdGljX2NvbmZpZy5oCgpkaWZm
IC0tZ2l0IGEvY2xpY2suY2MgYi9jbGljay5jYwppbmRleCBhM2JmYmE4Li44NWE5MzhiIDEwMDY0
NAotLS0gYS9jbGljay5jYworKysgYi9jbGljay5jYwpAQCAtNTIsMTEgKzUyLDE0IEBAIGV4dGVy
biAiQyJ7CiAjaW5jbHVkZSA8Y2xpY2svc3RyYWNjdW0uaGg+CiAjaW5jbHVkZSA8Y2xpY2svZHJp
dmVyLmhoPgogCisjaW5jbHVkZSA8c3RhdGljX2NvbmZpZy5oPgorCiAjaW5jbHVkZSA8dWsvc2No
ZWQuaD4KICNpbmNsdWRlIDx1ay90aHJlYWQuaD4KKyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4KKyNp
bmNsdWRlIDx1ay9wbGF0L21lbW9yeS5oPgogCiBpbnQgY2xpY2tfbnRocmVhZHMgPSAxOwotCiB2
b2lkICpfX2Rzb19oYW5kbGUgPSBOVUxMOwogCiAjZGVmaW5lIE5MT0coZm10LCAuLi4pCkBAIC0x
MTksNiArMTIyLDMyIEBAIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApCiBzdGF0aWMgRXJyb3JI
YW5kbGVyICplcnJoOwogc3RhdGljIE1hc3RlciBtYXN0ZXIoMSk7CiAKK3N0YXRpYyBTdHJpbmcg
KgorZ2V0X2NvbmZpZygpCit7CisJU3RyaW5nICpjZmc7CisJc3RydWN0IHVrcGxhdF9tZW1yZWdp
b25fZGVzYyBpbWc7CisJY2hhciAqY3N0cjsKKwlzaXplX3QgY3N0cl9sZW47CisKKwkvKiBGaXJz
dCwgdHJ5IGluaXRyZCAqLworCWlmICh1a3BsYXRfbWVtcmVnaW9uX2ZpbmRfaW5pdHJkMCgmaW1n
KSA+PSAwKSB7CisJCWNzdHIgPSAoY2hhciAqKWltZy5iYXNlOworCQljc3RyX2xlbiA9IGltZy5s
ZW47CisJfSBlbHNlIHsKKwkJLyogSWYgd2UgY2FuJ3QgZmluZCBhIGNvbmZpZzogdXNlIGEgZmFs
bGJhY2sgb25lIHN0YXRpY2FsbHkKKwkJICogY29tcGlsZWQgaW4uCisJCSAqLworCQl1a19wcl93
YXJuKCJDb3VsZCBub3QgZmluZCBhIGNvbmZpZywgdXNpbmcgc3RhbmRhcmQgY29uZmlnIVxuIik7
CisJCWNzdHIgPSBDT05GSUdTVFJJTkc7CisJCWNzdHJfbGVuID0gc3RybGVuKENPTkZJR1NUUklO
Ryk7CisJfQorCWNmZyA9IG5ldyBTdHJpbmcoY3N0ciwgY3N0cl9sZW4pOworCXByaW50ZigiUmVj
ZWl2ZWQgY29uZmlnIChsZW5ndGggJWQpOlxuIiwgY2ZnLT5sZW5ndGgoKSk7CisJcHJpbnRmKCIl
c1xuIiwgY2ZnLT5jX3N0cigpKTsKKwlyZXR1cm4gY2ZnOworfQorCiBzdHJ1Y3Qgcm91dGVyX2lu
c3RhbmNlIHsKIAlSb3V0ZXIgKnI7CiAJdV9pbnQgZl9zdG9wOwpAQCAtMTI3LDkgKzE1Niw4IEBA
IHN0cnVjdCByb3V0ZXJfaW5zdGFuY2Ugewogdm9pZAogcm91dGVyX3RocmVhZCh2b2lkICp0aHJl
YWRfZGF0YSkKIHsKLQl1X2ludCAqcmlkID0gKHVfaW50KikgdGhyZWFkX2RhdGE7Ci0JU3RyaW5n
ICpjb25maWcgPSBuZXcgU3RyaW5nOyAvL3JlYWRfY29uZmlnKCpyaWQpOwotCXN0cnVjdCByb3V0
ZXJfaW5zdGFuY2UgKnJpID0gJnJvdXRlcl9saXN0WypyaWRdOworCXN0cnVjdCByb3V0ZXJfaW5z
dGFuY2UgKnJpID0gJnJvdXRlcl9saXN0Wyh1bnNpZ25lZCBsb25nKXRocmVhZF9kYXRhXTsKKwlT
dHJpbmcgKmNvbmZpZyA9IGdldF9jb25maWcoKTsKIAogCXJpLT5yID0gY2xpY2tfcmVhZF9yb3V0
ZXIoKmNvbmZpZywgdHJ1ZSwgZXJyaCwgZmFsc2UsICZtYXN0ZXIpOwogCWlmIChyaS0+ci0+aW5p
dGlhbGl6ZShlcnJoKSA8IDApIHsKQEAgLTE1MCw3ICsxNzgsNiBAQCByb3V0ZXJfdGhyZWFkKHZv
aWQgKnRocmVhZF9kYXRhKQogCiAJTE9HKCJNYXN0ZXIvZHJpdmVyIHN0b3BwZWQsIGNsb3Npbmcg
cm91dGVyX3RocmVhZCIpOwogCWZyZWUoY29uZmlnKTsKLQlmcmVlKHJpZCk7CiB9CiAKIHZvaWQK
ZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oIGIvaW5jbHVkZS9zdGF0aWNfY29u
ZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjNWQxMgotLS0gL2Rl
di9udWxsCisrKyBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCkBAIC0wLDAgKzEsMjIgQEAKK3N0
YXRpYyBjaGFyIENPTkZJR1NUUklOR1tdID0gIiAgICBkZWZpbmUoJElQIDEwLjAuMTAuMTIzKTtc
blwKKyAgICBkZWZpbmUoJE1BQzAgMTE6MjI6MzM6NDQ6NTU6NjYpO1xuXAorXG5cCisgICAgc291
cmNlIDo6IEZyb21EZXZpY2U7XG5cCisgICAgc2luayAgIDo6IFRvRGV2aWNlO1xuXAorICAgIC8v
IGNsYXNzaWZpZXMgcGFja2V0cyBcblwKKyAgICBjIDo6IENsYXNzaWZpZXIoXG5cCisgICAgICAg
IDEyLzA4MDYgMjAvMDAwMSwgLy8gQVJQIFJlcXVlc3RzIGdvZXMgdG8gb3V0cHV0IDBcblwKKyAg
ICAgICAgMTIvMDgwNiAyMC8wMDAyLCAvLyBBUlAgUmVwbGllcyB0byBvdXRwdXQgMVxuXAorICAg
ICAgICAxMi8wODAwIDE0LzQ1IDM0LzA4LCAvLyBJQ01QIFJlcXVlc3RzIHRvIG91dHB1dCAyXG5c
CisgICAgICAgIC0pOyAvLyB3aXRob3V0IGEgbWF0Y2ggdG8gb3V0cHV0IDNcblwKK1xuXAorICAg
IGFycHEgOjogQVJQUXVlcmllcigkSVAsICRNQUMwKTtcblwKKyAgICBhcnByIDo6IEFSUFJlc3Bv
bmRlcigkSVAgJE1BQzApO1xuXAorXG5cCisgICAgc291cmNlIC0+IGM7XG5cCisgICAgY1swXSAt
PiBDaGVja0FSUEhlYWRlcigxNCkgLT4gQVJQUHJpbnQgLT4gYXJwciAtPiBBUlBQcmludCAtPiBz
aW5rO1xuXAorICAgIGNbMV0gLT4gWzFdYXJwcTtcblwKKyAgICBJZGxlIC0+IFswXWFycHE7XG5c
CisgICAgYXJwcSAtPiBzaW5rO1xuXAorICAgIGNbMl0gLT4gQ2hlY2tJUEhlYWRlcigxNCkgLT4g
SVBQcmludCAtPiBJQ01QUGluZ1Jlc3BvbmRlcigpIC0+IEV0aGVyTWlycm9yKCkgLT4gSVBQcmlu
dCAtPiBzaW5rO1xuXAorICAgIGNbM10gLT4gRGlzY2FyZDsiOwotLSAKMi4yMS4wCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSy-0003Pu-Lz; Wed, 05 Jun 2019 07:36:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSw-0003Na-I1
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:10 +0000
X-Inumbo-ID: 95ab62f5-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 95ab62f5-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id AB13B1052E8;
 Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id iXKRqHtqAbE9; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 73F42105327
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:07 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:07 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:42 +0200
Message-ID: <20190605073545.1785-9-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 08/11] Initial public
 release: Add 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: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyBhIG1pbmltYWwgc2V0IHRoYXQgc2hvdWxkIGFsbG93IHNwYXduaW5nIGNsaWNrIGZy
b20gYW4gZXh0ZXJuYWwKbWFpbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHVzaW5nIGNsaWNrJ3MgaW50
ZXJuYWwgbWFpbigpLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNj
aG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lA
bmVjbGFiLmV1PgotLS0KIGV4cG9ydHN5bXMudWsgfCA3ICsrKysrKysKIDEgZmlsZSBjaGFuZ2Vk
LCA3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrCgpkaWZm
IC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWI0NWQ3YgotLS0gL2Rldi9udWxsCisrKyBiL2V4cG9ydHN5bXMu
dWsKQEAgLTAsMCArMSw3IEBACitjbGlja19tYWluCittYWluCitjbGlja19yZWFkX3JvdXRlcgor
Y2xpY2tfc3RhdGljX2luaXRpYWxpemUKK2NvbmZpZ3VyYXRvcl9zdGFydAorY29uZmlndXJhdG9y
X3N0b3AKK3JvdXRlcl90aHJlYWQKLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSy-0003QH-QC; Wed, 05 Jun 2019 07:36:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSw-0003Np-Ln
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:10 +0000
X-Inumbo-ID: 95a01851-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 95a01851-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 986E71052E2;
 Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2O_pWsLwRTRf; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 2C5EE105317
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:07 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:06 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:41 +0200
Message-ID: <20190605073545.1785-8-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 07/11] Initial public
 release: patches to make click build with 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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IHBhdGNoZXMvMDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2ggICB8IDIwICsrKysr
KysrKysrCiAuLi4tc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2ggfCAz
NSArKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKykK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hh
LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4t
UE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2gKCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDEt
dXNlcmxldmVsLW5ldy1kZWxldGUtY3hhLnBhdGNoIGIvcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1u
ZXctZGVsZXRlLWN4YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
ZjljZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1uZXctZGVs
ZXRlLWN4YS5wYXRjaApAQCAtMCwwICsxLDIwIEBACistLS0gYS9saWIvZ2x1ZS5jYy5vcmlnCTIw
MTgtMDItMTQgMTE6MTE6MzguMzY0MDI0NzI5ICswMTAwCisrKysgYi9saWIvZ2x1ZS5jYwkyMDE4
LTAyLTE0IDExOjQ0OjMxLjg4MDkwODA5OSArMDEwMAorQEAgLTE3OSw3ICsxNzksNyBAQAorIHNp
emVfdCBjbGlja19kbWFsbG9jX21heG1lbSA9IDA7CisgI2VuZGlmCisgCistI2lmIENMSUNLX0xJ
TlVYTU9EVUxFIHx8IENMSUNLX0JTRE1PRFVMRSB8fCBDTElDS19NSU5JT1MKKysjaWYgQ0xJQ0tf
TElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01JTklPUyB8fCBDTElDS19V
U0VSTEVWRUwKKyAKKyAjIGlmIENMSUNLX0xJTlVYTU9EVUxFCisgc3RydWN0IHRhc2tfc3RydWN0
ICpjbGlja2ZzX3Rhc2s7CitAQCAtNzIxLDcgKzcyMSw3IEBACisgCisgLy8gT1RIRVIKKyAKKy0j
aWYgQ0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01JTklPUwor
KyNpZiBDTElDS19MSU5VWE1PRFVMRSB8fCBDTElDS19CU0RNT0RVTEUgfHwgQ0xJQ0tfTUlOSU9T
IHx8IENMSUNLX1VTRVJMRVZFTAorIAorICNpZiBDTElDS19CU0RNT0RVTEUKKyAKZGlmZiAtLWdp
dCBhL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVk
LnBhdGNoIGIvcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUtbm90LWRl
ZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExYWY1MAot
LS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBPTExPVVQt
YXJlLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYjlmMDRmNmRkYzM4
OGY2YTUwYTgyZTg4MzBlNDJiYWRiZmM0NzE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy
b206IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KK0RhdGU6IFdl
ZCwgMTcgQXByIDIwMTkgMTE6MDM6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBzdXJl
IFBPTExJTi9QT0xMT1VUIGFyZSBub3QgZGVmaW5lZAorCitXZSB1c2Ugc2VsZWN0IGluc3RlYWQg
b2YgcG9sbCwgYmVjYXVzZSBsd2lwIHByb3ZpZGVzIGEgc2VsZWN0IHZpYSBpdHMKK3NvY2tldCBB
UEkuIEhvd2V2ZXIsIHRoYXQgb25lIGFsc28gZGVmaW5lcyBhIGNvdXBsZSBvZiBQT0xMKiB2YWx1
ZXMsCit3aGljaCBsZWFkIHRvIGEgY29tcGlsZXIgZXJyb3IgaGVyZSBiZWNhdXNlIHlvdSBlbmQg
dXAgd2l0aCBhIGxpbmUgdGhhdAorc2F5cyAiZW51bSB7IDB4MSA9IEVsZW1lbnQ6OlNFTEVDVF9S
RUFEIiBldGMuCisKK1NpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4KKy0tLQorIGxpYi9zZWxlY3RzZXQuY2MgfCA2ICsrKysrKworIDEgZmls
ZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9zZWxlY3RzZXQu
Y2MgYi9saWIvc2VsZWN0c2V0LmNjCitpbmRleCBhYzVjY2FlNDkuLjY0MWI2M2Y5MCAxMDA2NDQK
Ky0tLSBhL2xpYi9zZWxlY3RzZXQuY2MKKysrKyBiL2xpYi9zZWxlY3RzZXQuY2MKK0BAIC0zOCw2
ICszOCwxMiBAQCBDTElDS19ERUNMUworIG5hbWVzcGFjZSB7CisgZW51bSB7IFNFTEVDVF9SRUFE
ID0gRWxlbWVudDo6U0VMRUNUX1JFQUQsIFNFTEVDVF9XUklURSA9IEVsZW1lbnQ6OlNFTEVDVF9X
UklURSB9OworICNpZiAhSEFWRV9BTExPV19QT0xMCisrI2lmZGVmIFBPTExJTgorKyN1bmRlZiBQ
T0xMSU4KKysjZW5kaWYKKysjaWZkZWYgUE9MTE9VVAorKyN1bmRlZiBQT0xMT1VUCisrI2VuZGlm
CisgZW51bSB7IFBPTExJTiA9IEVsZW1lbnQ6OlNFTEVDVF9SRUFELCBQT0xMT1VUID0gRWxlbWVu
dDo6U0VMRUNUX1dSSVRFIH07CisgI2VuZGlmCisgfQorLS0gCisyLjIxLjAKKwotLSAKMi4yMS4w
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSy-0003Q7-OG; Wed, 05 Jun 2019 07:36:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSw-0003NY-Hq
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:10 +0000
X-Inumbo-ID: 95840e99-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 95840e99-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 6BE3A1052D0;
 Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vF-wg8P9YFsH; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5501B1052E2
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:06 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:05 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:39 +0200
Message-ID: <20190605073545.1785-6-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 05/11] Initial public
 release: stubs.cc for unfinished glue implementations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IE1ha2VmaWxlLnVrIHwgIDEgKwogc3R1YnMuY2MgICAgfCAzNiArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHN0dWJzLmNjCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtl
ZmlsZS51awppbmRleCBjNDY0YTg5Li5lNzFhNzVjIDEwMDY0NAotLS0gYS9NYWtlZmlsZS51awor
KysgYi9NYWtlZmlsZS51awpAQCAtMTI5LDYgKzEyOSw3IEBAIExJQkNMSUNLX0NYWEZMQUdTLXkg
Kz0gJChMSUJDTElDS19TVVBQUkVTU19GTEFHUykKICMgVW5pa3JhZnQgPC0+IENsaWNrIGdsdWUg
Y29kZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIExJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNM
SUNLX0JBU0UpL2NsaWNrLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19CQVNFKS9z
dHVicy5jYwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDbGljayBzb3VyY2VzCmRpZmYg
LS1naXQgYS9zdHVicy5jYyBiL3N0dWJzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmZjYzcyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zdHVicy5jYwpAQCAtMCwwICsxLDM2
IEBACisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxjbGljay9jb25maWcuaD4KKyNpbmNs
dWRlIDxjbGljay9lcnJvci5oaD4KKyNpbmNsdWRlIDxjbGljay9zdHJpbmcuaGg+CisKKy8qIFVu
aWtyYWZ0IGRvZXMgbm90IHN1cHBvcnQgZmlsZXMgeWV0LCB0aGlzIGZ1bmN0aW9uIGlzIHRvCisg
ICBiZSBhYmxlIHRvIHJlYWQgQ2xpY2sgY29uZmlncyBmcm9tIGZpbGVzLiAqLworU3RyaW5nIGZp
bGVfc3RyaW5nKFN0cmluZyBzIF9fdW51c2VkLCBFcnJvckhhbmRsZXIgKmVycmgpCit7CisJZXJy
aC0+ZXJyb3IoIm5vIHN1cHBvcnQgZm9yIGZpbGVzIHlldCEiKTsKKwlyZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBjbGlja3BhdGhfZmluZF9maWxlKGNvbnN0IFN0cmluZyAmZmlsZW5hbWUg
X191bnVzZWQsCisJCWNvbnN0IGNoYXIgKnN1YmRpciBfX3VudXNlZCwgU3RyaW5nIGRlZmF1bHRf
cGF0aCBfX3VudXNlZCwKKwkJRXJyb3JIYW5kbGVyICplcnJoKQoreworCWVycmgtPmVycm9yKCJu
byBzdXBwb3J0IGZvciBmaW5kaW5nIGZpbGVzISIpOworCXJldHVybiBTdHJpbmcoKTsKK30KKwor
dm9pZCBjbGlja19zaWduYWwoaW50IHNpZ251bSBfX3VudXNlZCwgdm9pZCAoKmhhbmRsZXIpKGlu
dCkgX191bnVzZWQsCisJCWJvb2wgcmVzZXRoYW5kIF9fdW51c2VkKQoreworfQorCitleHRlcm4g
IkMiIHsKK2ludCBkdXAoaW50IG9sZGZkKTsgLyogd2UgZG9uJ3QgaGF2ZSBhIGhlYWRlciBmaWxl
LCBidXQgdGhlIHN5bWJvbCBpcyB0aGVyZSAqLworCitpbnQgcGlwZShpbnQgcGlwZWZkWzJdKQor
eworCXBpcGVmZFswXSA9IGR1cCgwKTsKKwlwaXBlZmRbMV0gPSBkdXAoMSk7CisJcmV0dXJuIDA7
Cit9Cit9IC8qIGV4dGVybiAiQyIgKi8KLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSy-0003QS-TE; Wed, 05 Jun 2019 07:36:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSx-0003Ox-0u
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:11 +0000
X-Inumbo-ID: 9588db53-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9588db53-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 71F5C105329;
 Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id T8q9w91fXkHQ; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id AAD2C1052ED
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:06 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:06 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:40 +0200
Message-ID: <20190605073545.1785-7-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 06/11] Initial public
 release: FromDevice and ToDevice
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIHJvdWdoIGNvbmNlcHQgaXMgdGFrZW4gZnJvbSBrb2hsZXIvY2xpY2svZWxlbWVudHMvbWlu
aW9zLCBidXQgaXMKdGhlbiBhZGFwdGVkIHRvIHVzZSB1bmlrcmFmdCBpbnN0ZWFkIG9mIE1pbmkt
T1MuCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNs
YWIuZXU+ClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
Ci0tLQogdW5pa3JhZnQvZnJvbWRldmljZS5jYyB8IDIwMyArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogdW5pa3JhZnQvZnJvbWRldmljZS5oaCB8ICA3OSArKysrKysr
KysrKysrKysrCiB1bmlrcmFmdC90b2RldmljZS5jYyAgIHwgMTMxICsrKysrKysrKysrKysrKysr
KysrKysrKysrCiB1bmlrcmFmdC90b2RldmljZS5oaCAgIHwgIDc2ICsrKysrKysrKysrKysrKwog
NCBmaWxlcyBjaGFuZ2VkLCA0ODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHVu
aWtyYWZ0L2Zyb21kZXZpY2UuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC9mcm9tZGV2
aWNlLmhoCiBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pa3JhZnQvdG9kZXZpY2UuY2MKIGNyZWF0ZSBt
b2RlIDEwMDY0NCB1bmlrcmFmdC90b2RldmljZS5oaAoKZGlmZiAtLWdpdCBhL3VuaWtyYWZ0L2Zy
b21kZXZpY2UuY2MgYi91bmlrcmFmdC9mcm9tZGV2aWNlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ1MGZmNGYKLS0tIC9kZXYvbnVsbAorKysgYi91bmlrcmFmdC9mcm9t
ZGV2aWNlLmNjCkBAIC0wLDAgKzEsMjAzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAgIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaW5jbHVkZSAiZnJvbWRldmljZS5oaCIK
KworI2luY2x1ZGUgPGNsaWNrL2FyZ3MuaGg+CisjaW5jbHVkZSA8Y2xpY2svZGVxdWUuaGg+Cisj
aW5jbHVkZSA8Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svc3RhbmRhcmQvc2NoZWR1
bGVpbmZvLmhoPgorI2luY2x1ZGUgPGNsaWNrL3Rhc2suaGg+CisjaW5jbHVkZSA8dWsvbmV0ZGV2
Lmg+CisKKyNpZmRlZiB4bWl0CisjdW5kZWYgeG1pdAorI2VuZGlmCisjaWZkZWYgcmVjdgorI3Vu
ZGVmIHJlY3YKKyNlbmRpZgorCisjaW5jbHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRlIDx1ay9u
ZXRkZXYuaD4KKworQ0xJQ0tfREVDTFMKKworI2RlZmluZSBERVNDX0NPVU5UIDB4MTAwCisjZGVm
aW5lIEJVRlNJWkUgMjA0OAorCitGcm9tRGV2aWNlOjpGcm9tRGV2aWNlKCkKKwk6IF90YXNrKHRo
aXMpCit7Cit9CisKK0Zyb21EZXZpY2U6On5Gcm9tRGV2aWNlKCkKK3sKK30KKworaW50CitGcm9t
RGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYsIEVycm9ySGFuZGxlciAqZXJy
aCkKK3sKKwlfZGV2aWQgPSAwOworCisJdWtfcHJfaW5mbygiRnJvbURldmljZTo6Y29uZmlndXJl
ICVwXG4iLCB0aGlzKTsKKwlpZiAoQXJncyhjb25mLCB0aGlzLCBlcnJoKQorCQkJLnJlYWRfcCgi
REVWSUQiLCBJbnRBcmcoKSwgX2RldmlkKQorCQkJLmNvbXBsZXRlKCkgPCAwKQorCQlyZXR1cm4g
LTE7CisKKwlpZiAoX2RldmlkIDwgMCkKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJEZXZpY2UgSUQg
bXVzdCBiZSA+PSAwIik7CisKKwlfZGV2ID0gdWtfbmV0ZGV2X2dldCgodW5zaWduZWQgaW50KSBf
ZGV2aWQpOworCWlmICghX2RldikKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJObyBzdWNoIGRldmlj
ZSAlZCIsIF9kZXZpZCk7CisJdWtfbmV0ZGV2X2luZm9fZ2V0KF9kZXYsICZfZGV2X2luZm8pOwor
CisJcmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIgdm9pZAorY2xpY2tfZnJvbWRldmljZV9yeF9j
YWxsYmFjayhzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXYgX191bnVzZWQsIC8qIHdlIGhhdmUgYWxsCisJ
CQkJdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdmlhIHRoZSBjb29raWUgKi8KKwkJdWludDE2X3Qg
cXVldWVfaWQsIHZvaWQgKmNvb2tpZSkKK3sKKwlGcm9tRGV2aWNlICpmcm9tZGV2aWNlID0gKEZy
b21EZXZpY2UgKiljb29raWU7CisKKwl1a19wcl9kZWJ1ZygiRnJvbURldmljZSAlcCBxdWV1ZSAl
dSBjYWxsYmFja1xuIiwgY29va2llLCBxdWV1ZV9pZCk7CisJZnJvbWRldmljZS0+dGFrZV9wYWNr
ZXRzKCk7Cit9CisKK3VpbnQxNl90CitGcm9tRGV2aWNlOjpuZXRkZXZfYWxsb2Nfcnhwa3RzKHZv
aWQgKmFyZ3AsIHN0cnVjdCB1a19uZXRidWYgKnBrdHNbXSwKKwkJdWludDE2X3QgY291bnQpCit7
CisJaW50IGk7CisKKwlGcm9tRGV2aWNlICpmZCA9IHN0YXRpY19jYXN0PEZyb21EZXZpY2UgKj4o
YXJncCk7CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJcGt0c1tpXSA9IHVrX25l
dGJ1Zl9hbGxvY19idWYodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwKKwkJCQlCVUZTSVpFLCBmZC0+
X2Rldl9pbmZvLm5iX2VuY2FwX3J4LCAwLCBOVUxMKTsKKwkJaWYgKCFwa3RzW2ldKQorCQkJcmV0
dXJuIGk7CisJCXBrdHNbaV0tPmxlbiA9IEJVRlNJWkU7CisJfQorCXJldHVybiBjb3VudDsKK30K
KworaW50CitGcm9tRGV2aWNlOjppbml0aWFsaXplKEVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwlz
dHJ1Y3QgdWtfbmV0ZGV2X2luZm8gZGluZjsKKwlzdHJ1Y3QgdWtfbmV0ZGV2X3J4cXVldWVfY29u
ZiByeF9jb25mOworCXN0cnVjdCB1a19uZXRkZXZfdHhxdWV1ZV9jb25mIHR4X2NvbmY7CisJaW50
IHJjOworCisJdWtfcHJfaW5mbygiRnJvbURldmljZTo6aW5pdGlhbGl6ZSAlcCBkZXZpY2UgJXAg
c3RhdGUgJWRcbiIsCisJCQl0aGlzLCBfZGV2LCBfZGV2LT5fZGF0YS0+c3RhdGUpOworCXVrX25l
dGRldl9pbmZvX2dldChfZGV2LCAmZGluZik7CisJcnhfY29uZi5zID0gdWtfc2NoZWRfZ2V0X2Rl
ZmF1bHQoKTsKKwlyeF9jb25mLmEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgpOworCXJ4X2NvbmYu
Y2FsbGJhY2sgPSBjbGlja19mcm9tZGV2aWNlX3J4X2NhbGxiYWNrOworCXJ4X2NvbmYuY2FsbGJh
Y2tfY29va2llID0gKHZvaWQgKikodGhpcyk7CisJcnhfY29uZi5hbGxvY19yeHBrdHMgPSAmRnJv
bURldmljZTo6bmV0ZGV2X2FsbG9jX3J4cGt0czsKKwlyeF9jb25mLmFsbG9jX3J4cGt0c19hcmdw
ID0gdGhpczsKKwlpZiAodWtfbmV0ZGV2X3J4cV9jb25maWd1cmUoX2RldiwgMCwgREVTQ19DT1VO
VCwgJnJ4X2NvbmYpKQorCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAgUlgg
cXVldWUgZm9yIGRldmljZSAlZCIsIF9kZXZpZCk7CisJdHhfY29uZi5hID0gdWtfYWxsb2NfZ2V0
X2RlZmF1bHQoKTsKKwlpZiAodWtfbmV0ZGV2X3R4cV9jb25maWd1cmUoX2RldiwgMCwgREVTQ19D
T1VOVCwgJnR4X2NvbmYpKQorCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAg
VFggcXVldWUgZm9yIGRldmljZSAlZCIsIF9kZXZpZCk7CisJaWYgKHVrX25ldGRldl9zdGFydChf
ZGV2KSkKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJGYWlsZWQgdG8gc3RhcnQgZGV2aWNlICVkIiwg
X2RldmlkKTsKKwlyYyA9IHVrX25ldGRldl9yeHFfaW50cl9lbmFibGUoX2RldiwgMCk7CisJCWlm
IChyYyA8IDApCisJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAgUlggcXVl
dWUgaW50ZXJydXB0IGZvciBkZXZpY2UgJWQiLCBfZGV2aWQpOworCQllbHNlIGlmIChyYyA+IDAp
CisJCQl0YWtlX3BhY2tldHMoKTsgLy8gZW1wdHkgdGhlIHF1ZXVlIHRvIGVuYWJsZSBpbnRlcnJ1
cHQKKwlTY2hlZHVsZUluZm86OmluaXRpYWxpemVfdGFzayh0aGlzLCAmX3Rhc2ssIGVycmgpOwor
CV90YXNrLnJlc2NoZWR1bGUoKTsKKwlyZXR1cm4gMDsKKworfQorCit2b2lkCitGcm9tRGV2aWNl
OjpjbGVhbnVwKENsZWFudXBTdGFnZSBzdGFnZSkKK3sKKwlpZiAoc3RhZ2UgPj0gQ0xFQU5VUF9J
TklUSUFMSVpFRCkgeworCQl1a19uZXRkZXZfcnhxX2ludHJfZGlzYWJsZShfZGV2LCAwKTsKKwl9
Cit9CisKK3ZvaWQKK0Zyb21EZXZpY2U6OnRha2VfcGFja2V0cygpCit7CisJaW50IHJldDsKKwlp
bnQgaSA9IDA7CisJc3RydWN0IHVrX25ldGJ1ZiAqYnVmID0gTlVMTDsKKwlQYWNrZXQgKnA7CisK
KwlkbyB7CisJCXJldCA9IHVrX25ldGRldl9yeF9vbmUoX2RldiwgMCwgJmJ1Zik7CisJCWlmIChy
ZXQgPCAwKQorCQkJVUtfQ1JBU0goImVycm9yIHJlY2VpdmluZyBwYWNrZXRzIGluIEZyb21EZXZp
Y2UiKTsKKwkJaWYgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSkgeworCQkJLyogTm8g
KG1vcmUpIHBhY2tldHMgcmVjZWl2ZWQgKi8KKwkJCWJyZWFrOworCQl9CisKKwkJKytpOworCQlw
ID0gUGFja2V0OjptYWtlKDAsIGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDApOworCQlwLT5zZXRfdGlt
ZXN0YW1wX2Fubm8oVGltZXN0YW1wOjpub3coKSk7CisJCW91dHB1dCgwKS5wdXNoKHApOyAvKiBt
ZW1jcHkncyBwa3QgKi8KKwkJdWtfbmV0YnVmX2ZyZWUoYnVmKTsKKwl9IHdoaWxlICh1a19uZXRk
ZXZfc3RhdHVzX21vcmUocmV0KSk7CisJaWYgKGkpCisJCXVrX3ByX2RlYnVnKCJ0b29rICVkIHBh
Y2tldHMgZnJvbSB0aGUgcXVldWVcbiIsIGkpOworfQorCitib29sCitGcm9tRGV2aWNlOjpydW5f
dGFzayhUYXNrICopCit7CisJLyogaWYgeW91J3JlIHJlYWxseSBkZXNwZXJhdGUgZm9yIGxlc3Mg
Q1BVIHVzYWdlCisJICogdW50aWwgd2UgaGF2ZSBhIHByb3BlciBibG9ja2luZyBzZWxlY3QoKS4u
LgorCXN0cnVjdCB0aW1lc3BlYyByZXE7CisJcmVxLnR2X3NlYyA9IDA7CisJcmVxLnR2X25zZWMg
PSAxMDAwMDAwOworCW5hbm9zbGVlcCgmcmVxLCBOVUxMKTsKKwkqLworCXVrX3NjaGVkX3lpZWxk
KCk7CisJX3Rhc2sucmVzY2hlZHVsZSgpOworCXJldHVybiBmYWxzZTsKK30KKworQ0xJQ0tfRU5E
REVDTFMKK0VYUE9SVF9FTEVNRU5UKEZyb21EZXZpY2UpCmRpZmYgLS1naXQgYS91bmlrcmFmdC9m
cm9tZGV2aWNlLmhoIGIvdW5pa3JhZnQvZnJvbWRldmljZS5oaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44ZDYyYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvdW5pa3JhZnQvZnJv
bWRldmljZS5oaApAQCAtMCwwICsxLDc5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAgIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIENMSUNLX0ZST01ERVZJQ0Vf
SEgKKyNkZWZpbmUgQ0xJQ0tfRlJPTURFVklDRV9ISAorCisjaW5jbHVkZSA8Y2xpY2svY29uZmln
Lmg+CisjaW5jbHVkZSA8Y2xpY2svZGVxdWUuaGg+CisjaW5jbHVkZSA8Y2xpY2svZWxlbWVudC5o
aD4KKyNpbmNsdWRlIDxjbGljay9lcnJvci5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgor
CisjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+CisKK0NMSUNLX0RFQ0xTCisKK2V4dGVybiAiQyIgewor
ICAgIHN0cnVjdCB1a19uZXRkZXY7Cit9CisKK2NsYXNzIEZyb21EZXZpY2UgOiBwdWJsaWMgRWxl
bWVudCB7CitwdWJsaWM6CisgICAgRnJvbURldmljZSgpOworICAgIH5Gcm9tRGV2aWNlKCk7CisK
KyAgICBjb25zdCBjaGFyICpjbGFzc19uYW1lKCkgY29uc3QgeyByZXR1cm4gIkZyb21EZXZpY2Ui
OyB9CisgICAgY29uc3QgY2hhciAqcG9ydF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuICIwLzEiOyB9
CisgICAgY29uc3QgY2hhciAqcHJvY2Vzc2luZygpIGNvbnN0IHsgcmV0dXJuICIvaCI7IH0KKyAg
ICBpbnQgY29uZmlndXJlX3BoYXNlKCkgY29uc3QgeyByZXR1cm4gQ09ORklHVVJFX1BIQVNFX0ZJ
UlNUOyB9CisKKyAgICBpbnQgY29uZmlndXJlKFZlY3RvcjxTdHJpbmc+ICYsIEVycm9ySGFuZGxl
ciAqKTsKKyAgICBpbnQgaW5pdGlhbGl6ZShFcnJvckhhbmRsZXIgKik7CisgICAgdm9pZCBjbGVh
bnVwKENsZWFudXBTdGFnZSk7CisKKyAgICBib29sIHJ1bl90YXNrKFRhc2sgKik7CisgICAgdm9p
ZCB0YWtlX3BhY2tldHMoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdWludDE2X3QgbmV0ZGV2
X2FsbG9jX3J4cGt0cyh2b2lkICphcmdwLCBzdHJ1Y3QgdWtfbmV0YnVmICpwa3RzW10sIHVpbnQx
Nl90IGNvdW50KTsKKworICAgIFRhc2sgX3Rhc2s7CisgICAgRGVxdWU8UGFja2V0Kj4gX2RlcXVl
OworICAgIGludCBfZGV2aWQ7CisgICAgc3RydWN0IHVrX25ldGRldiAqX2RldjsKKyAgICBzdHJ1
Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOworfTsKKworQ0xJQ0tfRU5EREVDTFMKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvdW5pa3JhZnQvdG9kZXZpY2UuY2MgYi91bmlrcmFmdC90b2RldmljZS5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWQ3NTBkCi0tLSAvZGV2L251
bGwKKysrIGIvdW5pa3JhZnQvdG9kZXZpY2UuY2MKQEAgLTAsMCArMSwxMzEgQEAKKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAq
ICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpbmNs
dWRlICJ0b2RldmljZS5oaCIKKworI2luY2x1ZGUgPGNsaWNrL2FyZ3MuaGg+CisjaW5jbHVkZSA8
Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svcm91dGVyLmhoPgorI2luY2x1ZGUgPGNs
aWNrL3N0YW5kYXJkL3NjaGVkdWxlaW5mby5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiB4bWl0CisjdW5kZWYgeG1pdAorI2VuZGlmCisj
aWZkZWYgcmVjdgorI3VuZGVmIHJlY3YKKyNlbmRpZgorCisjaW5jbHVkZSA8dWsvYWxsb2MuaD4K
KyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4KKworQ0xJQ0tfREVDTFMKKworVG9EZXZpY2U6OlRvRGV2
aWNlKCkKKwk6IF90YXNrKHRoaXMpCit7Cit9CisKK1RvRGV2aWNlOjp+VG9EZXZpY2UoKQorewor
fQorCitpbnQKK1RvRGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYsIEVycm9y
SGFuZGxlciAqZXJyaCkKK3sKKwlfZGV2aWQgPSAwOworCisJdWtfcHJfaW5mbygiVG9EZXZpY2U6
OmNvbmZpZ3VyZSAlcFxuIiwgdGhpcyk7CisJaWYgKEFyZ3MoY29uZiwgdGhpcywgZXJyaCkKKwkJ
CS5yZWFkX3AoIkRFVklEIiwgSW50QXJnKCksIF9kZXZpZCkKKwkJCS5jb21wbGV0ZSgpIDwgMCkK
KwkJcmV0dXJuIC0xOworCisJaWYgKF9kZXZpZCA8IDApCisJCXJldHVybiBlcnJoLT5lcnJvcigi
RGV2aWNlIElEIG11c3QgYmUgPj0gMCIpOworCisJX2RldiA9IHVrX25ldGRldl9nZXQoKHVuc2ln
bmVkIGludCkgX2RldmlkKTsKKwlpZiAoIV9kZXYpCisJCXJldHVybiBlcnJoLT5lcnJvcigiTm8g
c3VjaCBkZXZpY2UgJWQiLCBfZGV2aWQpOworCXVrX25ldGRldl9pbmZvX2dldChfZGV2LCAmX2Rl
dl9pbmZvKTsKKworCXJldHVybiAwOworfQorCitpbnQKK1RvRGV2aWNlOjppbml0aWFsaXplKEVy
cm9ySGFuZGxlciAqZXJyaCBfX3VudXNlZCkKK3sKKwkvKiB1ayBuZXRkZXYgaXMgaW5pdGlhbGl6
ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZSAqLworCXJldHVybiAwOworfQorCit2
b2lkCitUb0RldmljZTo6Y2xlYW51cChDbGVhbnVwU3RhZ2Ugc3RhZ2UgX191bnVzZWQpCit7CisJ
LyogYW55IHBvdGVudGlhbGx5IG5lY2Vzc2FyeSB1ayBuZXRkZXYgY2xlYW51cCBpcyBkb25lIGlu
IHRoZQorCSAqIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZQorCSAqLworfQorCit2b2lkCitUb0Rl
dmljZTo6cHVzaChpbnQgcG9ydCwgUGFja2V0ICpwKQoreworCWludCByZXQ7CisJc3RydWN0IHVr
X25ldGJ1ZiAqYnVmOworCisJdWtfcHJfZGVidWcoInB1c2goKSBwYWNrZXQgJXAgKGxlbiAldSkg
LT4gJWRcbiIsIHAsIHAtPmxlbmd0aCgpLCBwb3J0KTsKKwlidWYgPSB1a19uZXRidWZfYWxsb2Nf
YnVmKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksCisJCQlwLT5sZW5ndGgoKStfZGV2X2luZm8ubmJf
ZW5jYXBfcngsCisJCQlfZGV2X2luZm8ubmJfZW5jYXBfcngsIDAsIE5VTEwpOworCWlmICghYnVm
KSB7CisJCXVrX3ByX2NyaXQoIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXRidWYgZm9yIHNlbmRpbmci
KTsKKwkJcmV0dXJuOworCX0KKwltZW1jcHkoYnVmLT5kYXRhLCBwLT5kYXRhKCksIHAtPmxlbmd0
aCgpKTsKKwlidWYtPmxlbiA9IHAtPmxlbmd0aCgpOworCWRvIHsKKwkJcmV0ID0gdWtfbmV0ZGV2
X3R4X29uZShfZGV2LCAwLCBidWYpOworCX0gd2hpbGUgKHVrX25ldGRldl9zdGF0dXNfbm90cmVh
ZHkocmV0KSk7CisJY2hlY2tlZF9vdXRwdXRfcHVzaChwb3J0LCBwKTsKK30KKworYm9vbAorVG9E
ZXZpY2U6OnJ1bl90YXNrKFRhc2sgKikKK3sKKwkvKiBubyByZWd1bGFyIHRhc2sgc2NoZWR1bGlu
ZyBuZWVkZWQsIGFsbCB3b3JrIGlzIGRvbmUgaW4gcHVzaCAoKSAqLworCXJldHVybiBmYWxzZTsK
K30KKworQ0xJQ0tfRU5EREVDTFMKK0VYUE9SVF9FTEVNRU5UKFRvRGV2aWNlKQpkaWZmIC0tZ2l0
IGEvdW5pa3JhZnQvdG9kZXZpY2UuaGggYi91bmlrcmFmdC90b2RldmljZS5oaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGVmN2JiCi0tLSAvZGV2L251bGwKKysrIGIvdW5p
a3JhZnQvdG9kZXZpY2UuaGgKQEAgLTAsMCArMSw3NiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50
aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExh
Ym9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAg
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBDTElDS19UT0RF
VklDRV9ISAorI2RlZmluZSBDTElDS19UT0RFVklDRV9ISAorCisjaW5jbHVkZSA8Y2xpY2svY29u
ZmlnLmg+CisjaW5jbHVkZSA8Y2xpY2svZWxlbWVudC5oaD4KKyNpbmNsdWRlIDxjbGljay9lcnJv
ci5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgorCisjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+
CisKK0NMSUNLX0RFQ0xTCisKK2V4dGVybiAiQyIgeworICAgIHN0cnVjdCB1a19uZXRkZXY7Cit9
CisKK2NsYXNzIFRvRGV2aWNlIDogcHVibGljIEVsZW1lbnQgeworcHVibGljOgorICAgIFRvRGV2
aWNlKCk7CisgICAgflRvRGV2aWNlKCk7CisKKyAgICBjb25zdCBjaGFyICpjbGFzc19uYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlRvRGV2aWNlIjsgfQorICAgIGNvbnN0IGNoYXIgKnBvcnRfY291bnQo
KSBjb25zdCB7IHJldHVybiAiMS8wLTEiOyB9CisgICAgY29uc3QgY2hhciAqcHJvY2Vzc2luZygp
IGNvbnN0IHsgcmV0dXJuICJhL2giOyB9CisgICAgaW50IGNvbmZpZ3VyZV9waGFzZSgpIGNvbnN0
IHsgcmV0dXJuIENPTkZJR1VSRV9QSEFTRV9GSVJTVDsgfQorCisgICAgaW50IGNvbmZpZ3VyZShW
ZWN0b3I8U3RyaW5nPiAmLCBFcnJvckhhbmRsZXIgKik7CisgICAgaW50IGluaXRpYWxpemUoRXJy
b3JIYW5kbGVyICopOworICAgIHZvaWQgY2xlYW51cChDbGVhbnVwU3RhZ2UpOworCisgICAgYm9v
bCBydW5fdGFzayhUYXNrICopOworICAgIHZvaWQgcHVzaChpbnQsIFBhY2tldCAqcCk7CisKK3By
aXZhdGU6CisgICAgVGFzayBfdGFzazsKKworICAgIGludCBfZGV2aWQ7CisgICAgc3RydWN0IHVr
X25ldGRldiAqX2RldjsKKyAgICBzdHJ1Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOworfTsK
KworQ0xJQ0tfRU5EREVDTFMKKyNlbmRpZgotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSz-0003Qi-03; Wed, 05 Jun 2019 07:36:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSx-0003P6-BT
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:11 +0000
X-Inumbo-ID: 965080fe-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 965080fe-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 069E11052C7;
 Wed,  5 Jun 2019 09:36:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hvfe5QD7zVgY; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B58E01052ED
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:08 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:45 +0200
Message-ID: <20190605073545.1785-12-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 11/11] config: Add
 userlevel module option.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgbWVudWNvbmZpZyBvcHRpb24gdG8gYnVpbGQgQ2xpY2sgd2l0aCB1c2VybGV2ZWwgZWxl
bWVudHMuIEJlIGF3YXJlCnRoYXQgdGhpcyBjdXJyZW50bHkgZG9lc24ndCBidWlsZCBiZWNhdXNl
IG9mIG1pc3NpbmcgaGVhZGVyIGZpbGVzLgpIZW5jZSwgdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4KLS0tCiBDb25maWcudWsgICB8IDcgKysrKysrKwogTWFrZWZpbGUudWsgfCAyICst
CiAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt
LWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awppbmRleCAwMmVkOTk3Li4yZDQxYTdiIDEwMDY0
NAotLS0gYS9Db25maWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC04Myw0ICs4MywxMSBAQCBjb25m
aWcgTElCQ0xJQ0tfRUxFTVNfVEhSRUFEUwogCWhlbHAKIAkgIEJ1aWxkIHdpdGggbXVsdGktdGhy
ZWFkaW5nIGVsZW1lbnRzCiAKK2NvbmZpZyBMSUJDTElDS19FTEVNU19VU0VSTEVWRUwKKwlib29s
ICJFbmFibGUgdXNlcmxldmVsIGVsZW1lbnRzIFtCUk9LRU5dIgorCWRlZmF1bHQgbgorCWhlbHAK
KwkgIEJ1aWxkIHdpdGggQ2xpY2sgdXNlcmxldmVsIGVsZW1lbnRzLgorCSAgQmUgYXdhcmUgdGhp
cyBjdXJyZW50bHkgZG9lc24ndCBjb21waWxlLgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEvTWFrZWZp
bGUudWsgYi9NYWtlZmlsZS51awppbmRleCBlNzFhNzVjLi5hMjRhZTJmIDEwMDY0NAotLS0gYS9N
YWtlZmlsZS51aworKysgYi9NYWtlZmlsZS51awpAQCAtNjYsNyArNjYsNyBAQCBMSUJDTElDS19F
WFRSQUNURUQ9JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gp
CiBMSUJDTElDS19FTEVNRU5UU19ESVI9JChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzCiBM
SUJDTElDS19CVUlMRFRPT0w9JChMSUJDTElDS19FWFRSQUNURUQpL2Jpbi9jbGljay1idWlsZHRv
b2wKIExJQkNMSUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNtcCBpcCB1
bmlrcmFmdCBcCi0JCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFkcworCQkg
ICBsb2NhbCBzaW1wbGUgc3RhbmRhcmQgdGNwdWRwIHRocmVhZHMgdXNlcmxldmVsCiAKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCiAjIENvbmZpZyBNZW51IC0gRmlsdGVyIHdoaWNoIGVsZW1lbnQg
Y2F0ZWdvcmllcyBhY3R1YWxseSBnZXQgYnVpbHQKLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 07:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 07:36: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 1hYQSz-0003Qx-3O; Wed, 05 Jun 2019 07:36:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYQSx-0003P7-DN
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 07:36:11 +0000
X-Inumbo-ID: 964dec65-8764-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 964dec65-8764-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 07:36:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E5D3D105327;
 Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 55juD1IrW9cB; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3A05A1052C7
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 09:36:08 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 09:36:07 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 09:35:44 +0200
Message-ID: <20190605073545.1785-11-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605073545.1785-1-florian.schmidt@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 10/11] Provide MAC preamble
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2UgY3JlYXRlIGEgY29uZmlnIHNjcmlwdCBzbmlwcGV0IHRoYXQgZGVmaW5lcyBhICJNQUMwIiwg
Ik1BQzEiLCBldGMuCnZhcmlhYmxlIGZvciBlYWNoIG5ldHdvcmsgZGV2aWNlLiBUaGlzIGlzIHBy
ZXBlbmRlZCB0byB0aGUgdXNlci1wcm92aWRlZApjb25maWcsIHNvIHRoYXQgdXNlcnMgY2FuIHVz
ZSB0aG9zZSB2YXJpYWJsZXMgdG8gYWNjZXNzIHRoZSBNQUMKYWRkcmVzc2VzIG9mIG5ldHdvcmsg
ZGV2aWNlcy4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0
QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xh
Yi5ldT4KLS0tCiBjbGljay5jYyAgICAgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKy0tCiBpbmNsdWRlL3N0YXRpY19jb25maWcuaCB8ICAxIC0K
IDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9jbGljay5jYyBiL2NsaWNrLmNjCmluZGV4IDg1YTkzOGIuLjViMGYzNGYgMTAwNjQ0
Ci0tLSBhL2NsaWNrLmNjCisrKyBiL2NsaWNrLmNjCkBAIC0xMjEsMTUgKzEyMSw0NSBAQCByZWFk
X2NvbmZpZyh1X2ludCByaWQgPSAwKQogI2RlZmluZSBNQVhfUk9VVEVSUwk2NAogc3RhdGljIEVy
cm9ySGFuZGxlciAqZXJyaDsKIHN0YXRpYyBNYXN0ZXIgbWFzdGVyKDEpOworc3RhdGljIFN0cmlu
ZyBtYWNhZGRyX3ByZWFtYmxlOworCitzdGF0aWMgdm9pZAorbWFrZV9tYWNhZGRyX3ByZWFtYmxl
KCkKK3sKKwl1bnNpZ25lZCBpbnQgbmRldiA9IHVrX25ldGRldl9jb3VudCgpOworCWNvbnN0IHNp
emVfdCBidWZsZW4gPSA2NDsKKwljaGFyIGJ1ZltidWZsZW5dOworCWNvbnN0IHN0cnVjdCB1a19o
d2FkZHIgKm1hYzsKKwlTdHJpbmdBY2N1bSBhY2M7CisKKwlVS19BU1NFUlQobWFjYWRkcl9wcmVh
bWJsZS5lbXB0eSgpKTsKKworCXVrX3ByX2luZm8oIkZvdW5kICVkIG5ldHdvcmsgZGV2aWNlKHMp
XG4iLCB1a19uZXRkZXZfY291bnQoKSk7CisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBu
ZGV2OyArK2kpIHsKKwkJbWFjID0gdWtfbmV0ZGV2X2h3YWRkcl9nZXQodWtfbmV0ZGV2X2dldChp
KSk7CisJCXNucHJpbnRmKGJ1ZiwgYnVmbGVuLAorCQkJImRlZmluZSgkTUFDJWQgJTAyeDolMDJ4
OiUwMng6JTAyeDolMDJ4OiUwMngpO1xuIiwKKwkJCWksIG1hYy0+YWRkcl9ieXRlc1swXSwgbWFj
LT5hZGRyX2J5dGVzWzFdLAorCQkJbWFjLT5hZGRyX2J5dGVzWzJdLCBtYWMtPmFkZHJfYnl0ZXNb
M10sCisJCQltYWMtPmFkZHJfYnl0ZXNbNF0sIG1hYy0+YWRkcl9ieXRlc1s1XSk7CisJCXVrX3By
X2luZm8oImFwcGVuZGluZyAlcyIsIGJ1Zik7CisJCWFjYy5hcHBlbmQoYnVmKTsKKwl9CisJYWNj
LmFwcGVuZCgiLyogRW5kIHVuaWtyYWZ0LXByb3ZpZGVkIE1BQyBwcmVhbWJsZSAqL1xuIik7CisJ
bWFjYWRkcl9wcmVhbWJsZSA9IGFjYy50YWtlX3N0cmluZygpOworCXVrX3ByX2luZm8oIk1BQyBh
ZGRyZXNzIG1hY3JvczpcbiVzXG4iLCBtYWNhZGRyX3ByZWFtYmxlLmNfc3RyKCkpOworfQogCiBz
dGF0aWMgU3RyaW5nICoKIGdldF9jb25maWcoKQogewotCVN0cmluZyAqY2ZnOworCVN0cmluZyAq
Y2ZnID0gbmV3IFN0cmluZyhtYWNhZGRyX3ByZWFtYmxlKTsKIAlzdHJ1Y3QgdWtwbGF0X21lbXJl
Z2lvbl9kZXNjIGltZzsKIAljaGFyICpjc3RyOwogCXNpemVfdCBjc3RyX2xlbjsKIAorCVVLX0FT
U0VSVCghbWFjYWRkcl9wcmVhbWJsZS5lbXB0eSgpKTsKKwogCS8qIEZpcnN0LCB0cnkgaW5pdHJk
ICovCiAJaWYgKHVrcGxhdF9tZW1yZWdpb25fZmluZF9pbml0cmQwKCZpbWcpID49IDApIHsKIAkJ
Y3N0ciA9IChjaGFyICopaW1nLmJhc2U7CkBAIC0xNDIsNyArMTcyLDcgQEAgZ2V0X2NvbmZpZygp
CiAJCWNzdHIgPSBDT05GSUdTVFJJTkc7CiAJCWNzdHJfbGVuID0gc3RybGVuKENPTkZJR1NUUklO
Ryk7CiAJfQotCWNmZyA9IG5ldyBTdHJpbmcoY3N0ciwgY3N0cl9sZW4pOworCWNmZy0+YXBwZW5k
KGNzdHIsIGNzdHJfbGVuKTsKIAlwcmludGYoIlJlY2VpdmVkIGNvbmZpZyAobGVuZ3RoICVkKTpc
biIsIGNmZy0+bGVuZ3RoKCkpOwogCXByaW50ZigiJXNcbiIsIGNmZy0+Y19zdHIoKSk7CiAJcmV0
dXJuIGNmZzsKQEAgLTIwMCw2ICsyMzAsMjYgQEAgcm91dGVyX3N0b3AoaW50IG4gPSBNQVhfUk9V
VEVSUykKIAlMT0coIlN0b3BwZWQgYWxsIHJvdXRlcnMuLi5cblxuIik7CiB9CiAKKy8qIEluaXRp
YWxpemUgYWxsIG5ldGRldiBkZXZpY2VzIHRvIHRoZSBwb2ludCB3aGVyZSB5b3UgY2FuIGdldCBh
IE1BQworICogYWRkcmVzcyBmcm9tIHRoZW0uCisgKi8KK3N0YXRpYyBpbnQKK3VrX25ldGRldl9l
YXJseV9pbml0KEVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwlzdHJ1Y3QgdWtfbmV0ZGV2ICpuZXRk
ZXY7CisJc3RydWN0IHVrX25ldGRldl9jb25mIG5ldGRldl9jb25mOworCisJbmV0ZGV2X2NvbmYu
bmJfcnhfcXVldWVzID0gMTsKKwluZXRkZXZfY29uZi5uYl90eF9xdWV1ZXMgPSAxOworCWZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdWtfbmV0ZGV2X2NvdW50KCk7ICsraSkgeworCQluZXRk
ZXYgPSB1a19uZXRkZXZfZ2V0KGkpOworCQl1a19wcl9pbmZvKCJuZXRkZXYgJWQgZWFybHkgaW5p
dFxuIiwgaSk7CisJCWlmICh1a19uZXRkZXZfY29uZmlndXJlKG5ldGRldiwgJm5ldGRldl9jb25m
KSA8IDApCisJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBjb25maWd1cmUgZGV2aWNl
ICVkXG4iLCBpKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKICNpZiBDTElDS19DT05TT0xFX1NVUFBP
UlRfSU1QTEVNRU5URUQKIHZvaWQKIHJvdXRlcl9zdXNwZW5kKGludCBuID0gTUFYX1JPVVRFUlMp
CkBAIC0zNTAsNiArNDAwLDEwIEBAIGludCBDTElDS19NQUlOKGludCBhcmdjLCBjaGFyICoqYXJn
dikKIAkJcm91dGVyX2xpc3RbaV0uZl9zdG9wID0gMTsKIAl9CiAKKwlpZiAodWtfbmV0ZGV2X2Vh
cmx5X2luaXQoZXJyaCkpCisJCXJldHVybiAtRUlOVkFMOworCW1ha2VfbWFjYWRkcl9wcmVhbWJs
ZSgpOworCiAjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVECiAvKiBUT0RPOiBU
aGlzIGludGVyYWN0aW9uIGJldHdlZW4geGVuYnVzIGFuZCBjbGljayBzaG91bGQgYmUgcmVwbGFj
ZWQgd2l0aCBhCiAgKiBnZW5lcmljIHVuaWtyYWZ0IGludGVyYWN0aW9uIHNjaGVtZSwgZm9yIGV4
YW1wbGUsIHZpYSBhIGNvbnNvbGUuCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N0YXRpY19jb25maWcu
aCBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCmluZGV4IDg1YzVkMTIuLjE4MDg3NjEgMTAwNjQ0
Ci0tLSBhL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCisrKyBiL2luY2x1ZGUvc3RhdGljX2NvbmZp
Zy5oCkBAIC0xLDUgKzEsNCBAQAogc3RhdGljIGNoYXIgQ09ORklHU1RSSU5HW10gPSAiICAgIGRl
ZmluZSgkSVAgMTAuMC4xMC4xMjMpO1xuXAotICAgIGRlZmluZSgkTUFDMCAxMToyMjozMzo0NDo1
NTo2Nik7XG5cCiBcblwKICAgICBzb3VyY2UgOjogRnJvbURldmljZTtcblwKICAgICBzaW5rICAg
OjogVG9EZXZpY2U7XG5cCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 08:01:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 08:01: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 1hYQru-0006pM-DX; Wed, 05 Jun 2019 08:01: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=0ASP=UE=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hYQrt-0006pH-ED
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 08:01:57 +0000
X-Inumbo-ID: 2deabee4-8768-11e9-8025-430df251e570
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 2deabee4-8768-11e9-8025-430df251e570;
 Wed, 05 Jun 2019 08:01:53 +0000 (UTC)
IronPort-SDR: vVgNeuQGaruNqaMWPXk/RruLqQqQKBDmImD4skYRZYsrjCWyvAxulLzfU/Ss55JBh7yqL3G6hu
 mZL3mBPFYeaQ==
IronPort-PHdr: =?us-ascii?q?9a23=3ATbkjtxDPr21ePXYwyAfiUyQJP3N1i/DPJgcQr6?=
 =?us-ascii?q?AfoPdwSPT6osbcNUDSrc9gkEXOFd2Cra4d0qyP7/mrADZeqb+681k6OKRWUB?=
 =?us-ascii?q?EEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAA?=
 =?us-ascii?q?jwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba5vIBmssAncudQajYR/Jqovyx?=
 =?us-ascii?q?bCv2dFdflRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P2?=
 =?us-ascii?q?86+MPkux/DTRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VD?=
 =?us-ascii?q?G/5KplVBPklCEKPCM//WrKiMJ/kbhbrQqhqRJh3oDaboKbOv1lc6/BYd8XX3?=
 =?us-ascii?q?ZNU9xNWyBdBI63cosBD/AGPeZdt4TwuVwOrQCiBQmtAuPk1zlGhmLu3a0nzu?=
 =?us-ascii?q?8sFh3J3As7H9ISsXTUqs/5NKMPUeCt0anF1inMb+hM1Tfl9YjHaQotoeuLXb?=
 =?us-ascii?q?9pd8fa1EohFxvdg1mNpoHpIimZ2+cNvmSB8eZsS+Cih3Qppg1pvzSiydoghp?=
 =?us-ascii?q?PKi48V0FzI6yt0zYgvKdGlR0N3f9ipG4ZKuS6ALYt5WMYiTnltuCY917IJp4?=
 =?us-ascii?q?a2fDMPyJQ73x7fbOGHc5SQ7hLjSumRJTB4iWp7eLK6nRmy8EygxvfgWcmvyl?=
 =?us-ascii?q?pKtjdFncLWunAX0Bzf8smHSv1j8Ue9wTuDyg/e5vxeLU03lafXMYAtzqAym5?=
 =?us-ascii?q?YJv0nPBir2l1/3jK+SeEUk4O+o6+H/b7r6oZ+cLJN0igD4Mqg0nsy/HPw4Mh?=
 =?us-ascii?q?UVUmeH4uSwzqXj/VDiT7lQlP02lbHVsIrGKsQDuq65HwhV354m6xa+CTem0d?=
 =?us-ascii?q?MYnWIeIF1YZh2HkZbmO1XVLfD8DPe/mEiskCxxy/HJILLhBI/BLn/ZkLfuZb?=
 =?us-ascii?q?x98VJTyBIvzdBD4JJZEr8BL+z3Wk/wrNzXEAU1Mwypw+bmFNp915gTWWSRDa?=
 =?us-ascii?q?CFNKPdq0SH6vgxLOmRN8cpv2P4Kv4k4OWrgXInlFs1eaiywYBReH2+WPN8LB?=
 =?us-ascii?q?a3e33p1/wGCnsLuEIaUfT3wAmJViVPZnD0W78k+xkwE8S+EI2FXIf70+/J5z?=
 =?us-ascii?q?uyApADPjMOMVuLC3q9L4g=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2AlBQCMdvdc/wPjVY1mHQEBBQEHBQG?=
 =?us-ascii?q?BZYJ7UwEwKI0PpnMJAQEBKREBAgEBhECCeTgTAQMBAQUBAQEBBAFsHAyCOiK?=
 =?us-ascii?q?Dbk+EJAGCDqdGhUeDJ4FGgTSHBIYuP4lyhRUElDWUUwcCghBaBIVjjGonghM?=
 =?us-ascii?q?BeJNvpQs3IYFYMxqDXwmBWwGMFIJcPAEBMYEGAQGPIwEB?=
X-IPAS-Result: =?us-ascii?q?A2AlBQCMdvdc/wPjVY1mHQEBBQEHBQGBZYJ7UwEwKI0Pp?=
 =?us-ascii?q?nMJAQEBKREBAgEBhECCeTgTAQMBAQUBAQEBBAFsHAyCOiKDbk+EJAGCDqdGh?=
 =?us-ascii?q?UeDJ4FGgTSHBIYuP4lyhRUElDWUUwcCghBaBIVjjGonghMBeJNvpQs3IYFYM?=
 =?us-ascii?q?xqDXwmBWwGMFIJcPAEBMYEGAQGPIwEB?=
X-IronPort-AV: E=Sophos;i="5.60,550,1549922400"; 
   d="scan'208";a="3489234"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 05 Jun 2019 11:01:25 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 40E4A1A6018D;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id znPHQK_toD5a; Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 241841A601FE;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id ohNtG1UxHlN6; Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 05E6C1A6007B;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Wed,  5 Jun 2019 11:01:18 +0300
Message-Id: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED 0/2] Add C++ support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@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>

VGhpcyBzZXJpZXMgY29udGFpbnMgdGhlIGNoYW5nZXMgbmVlZGVkIGZvciBzdXBwb3J0aW5nIEMr
KyB0aHJlYWRzLgoKQ29zdGluIEx1cHUgKDIpOgogIHBhdGNoZXM6IEFkZCBwYXRjaCBmb3IgbWFr
aW5nIHB0ZV9oYW5kbGUgYSBDKysgc3RydWN0dXJlCiAgTWFrZWZpbGUudWs6IFJlc3RyaWN0IHBv
aW50ZXItdG8taW50LWNhc3QgYW5kIGludC10by1wb2ludGVyLWNhc3QKICAgIHdhcm5pbmdzIG9u
bHkgdG8gQwoKIE1ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA0ICstCiAuLi4vMDAwOS1NYWtlLXB0ZV9oYW5kbGUtYS1DLXN0cnVjdHVyZS5wYXRjaCAgfCA2
NiArKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyks
IDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDA5LU1ha2UtcHRl
X2hhbmRsZS1hLUMtc3RydWN0dXJlLnBhdGNoCgotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 08:02:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 08:02: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 1hYQrx-0006qH-FH; Wed, 05 Jun 2019 08:02:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=0ASP=UE=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hYQrw-0006q6-Lo
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 08:02:00 +0000
X-Inumbo-ID: 2ffb3fc4-8768-11e9-8817-4f97736b8d4f
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 2ffb3fc4-8768-11e9-8817-4f97736b8d4f;
 Wed, 05 Jun 2019 08:01:56 +0000 (UTC)
IronPort-SDR: akFppOjqq6WCQ/O3RnSXkm0C9oNd70cSyiobMCZOI6z8Gc5wuiG3CyrNITPKryspu2OoIOv1mq
 3lTZ8Ow1NmJw==
IronPort-PHdr: =?us-ascii?q?9a23=3Ahm9gERBadZIMcYzDi4uZUyQJP3N1i/DPJgcQr6?=
 =?us-ascii?q?AfoPdwSPT6rsbcNUDSrc9gkEXOFd2Cra4d0qyP7/mrADZeqb+681k6OKRWUB?=
 =?us-ascii?q?EEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAA?=
 =?us-ascii?q?jwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba5vIBmssAncudQajYR/Jqovyx?=
 =?us-ascii?q?bCv2dFdflRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P2?=
 =?us-ascii?q?86+MPkux/DTRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VD?=
 =?us-ascii?q?G/5KplVBPklCEKPCM//WrKiMJ/kbhbrQqhqRJh3oDaboKbOv18caPTZt4WWX?=
 =?us-ascii?q?ZNU9xNWyFbHo+wc40CBPcBM+ZCqIn9okMDoAW5BQm3GOPvyzlIjWLw060ny+?=
 =?us-ascii?q?QhDBzN0Qs8ENIJq3TUsNT1NKEIXeCx0anI1SjDYuhK1jfm8oTIag0hruqWUb?=
 =?us-ascii?q?Jqdsrc0E8iHB7GgFWIsYHpIjyY2vkXv2WY7+dsT/yjh3Alpg1rrDWj3togh4?=
 =?us-ascii?q?bUio4PyV3J9T91zJg7KNC2UkJ3fNGpHIVWuiqHLYV5WNkiTHttuCsiz70Gvo?=
 =?us-ascii?q?O0czYSxZQ8wh7fd+SHc4+V4hL/TOqRISl3hHZieL+nmRay9FKvyuz4VsWuzF?=
 =?us-ascii?q?lKtTBJksHRtn8WzRDT8M+HRuN8/kenxzmPyxje5vxLLEwpj6bWKJ4szqQump?=
 =?us-ascii?q?YNs0nPBCH7lF3zjKCMd0Uk/uao6/7gYrXjvpKTK4h0ihriMqQvnMyzG+A4Mh?=
 =?us-ascii?q?UWX2iG4umzyKbj8VfhQLVXlfI6iLPZsJfCKcQBuqG5GxNV0pok6xunCjem0d?=
 =?us-ascii?q?IYnXgALFJeYR6IkpbmO0/QL/D8Fvq/h1WskCx3x/DdJLHgDYvCLn7ZnLfmZ7?=
 =?us-ascii?q?Z95FZWyBAvwtBH+5JUFrYBLer9WkDvsNzYDwc5PBKuz+bnFdV9158RWWOUD6?=
 =?us-ascii?q?+fLqzdrVuI6fg0LOWWeoAVpWW1F/9w4v/ojHgi3FMQY6St9Z8Wc2yjWORrJQ?=
 =?us-ascii?q?Oee3W/rM0GFDIhuREiTeqirECaTHYHbHGpQ6M6oDUmEJ+OBpyFXp2nxqaGin?=
 =?us-ascii?q?ToVqZKb3xLXwjfWUzjcJ+JDq8B?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2AxBgCMdvdc/wPjVY1mHgEGBwaBZYJ?=
 =?us-ascii?q?7UwEwKI0PpnMJAQEBKREBAgEBhEACgnc4EwEDAQEFAQEBAQQBbBwMgjoigm8?=
 =?us-ascii?q?GeRA/BwtXGYMiAYIOp0aIboFGgTSHBIYuP4RhhRGEcyIElDWUUwcCghBaBIV?=
 =?us-ascii?q?jjGongwyTbxmkcjchgVgzGoNfCYI9GIsbglw8AQExgQYBAY8jAQE?=
X-IPAS-Result: =?us-ascii?q?A2AxBgCMdvdc/wPjVY1mHgEGBwaBZYJ7UwEwKI0PpnMJA?=
 =?us-ascii?q?QEBKREBAgEBhEACgnc4EwEDAQEFAQEBAQQBbBwMgjoigm8GeRA/BwtXGYMiA?=
 =?us-ascii?q?YIOp0aIboFGgTSHBIYuP4RhhRGEcyIElDWUUwcCghBaBIVjjGongwyTbxmkc?=
 =?us-ascii?q?jchgVgzGoNfCYI9GIsbglw8AQExgQYBAY8jAQE?=
X-IronPort-AV: E=Sophos;i="5.60,550,1549922400"; 
   d="scan'208";a="3489235"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 05 Jun 2019 11:01:25 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 53CE61A6007B;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 7fRL5pK_zHzg; Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 393EC1A60205;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id X-HuEvLVRGxT; Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 2286A1A60198;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Wed,  5 Jun 2019 11:01:20 +0300
Message-Id: <20190605080120.27552-3-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
References: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED 2/2] Makefile.uk:
 Restrict pointer-to-int-cast and int-to-pointer-cast warnings only to C
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@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>

T3RoZXJ3aXNlIHdlIGdldCB3YXJuaW5ncyB0aGF0IHRoZXNlIHdhcm5pbmdzIGFyZSBvbmx5IEMg
c3BlY2lmaWMuCgpTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPgotLS0KIE1ha2VmaWxlLnVrIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRp
b25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZp
bGUudWsKaW5kZXggZmU5OTc2MC4uOGVlNWQzNiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUudWsKKysr
IGIvTWFrZWZpbGUudWsKQEAgLTUyLDExICs1MiwxMSBAQCBDWFhJTkNMVURFUy0kKENPTkZJR19M
SUJQVEhSRUFEX0VNQkVEREVEKSArPSAtSSQoTElCUFRIUkVBRC1FTUJFRERFRF9FWFRSQUNURUQp
LwogIyBHbG9iYWwgZmxhZ3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBTVVBQUkVTU19GTEFH
UyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgXAotLVduby1wb2ludGVyLXRvLWludC1jYXN0IC1X
bm8taW50LXRvLXBvaW50ZXItY2FzdCBcCiAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLXVudXNl
ZC12YWx1ZSAtV25vLXVudXNlZC1mdW5jdGlvbiBcCiAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlh
bGl6ZXJzCiAKLUxJQlBUSFJFQUQtRU1CRURERURfQ0ZMQUdTLXkgICArPSAkKFNVUFBSRVNTX0ZM
QUdTKQorTElCUFRIUkVBRC1FTUJFRERFRF9DRkxBR1MteSAgICs9ICQoU1VQUFJFU1NfRkxBR1Mp
IFwKKwktV25vLXBvaW50ZXItdG8taW50LWNhc3QgLVduby1pbnQtdG8tcG9pbnRlci1jYXN0CiBM
SUJQVEhSRUFELUVNQkVEREVEX0NYWEZMQUdTLXkgKz0gJChTVVBQUkVTU19GTEFHUykKIAogTElC
UFRIUkVBRC1FTUJFRERFRF9FWFBPUlRTID0gJChMSUJQVEhSRUFELUVNQkVEREVEX0JBU0UpL2V4
cG9ydHN5bXMudWsKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 08:02:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 08:02: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 1hYQry-0006qj-Gp; Wed, 05 Jun 2019 08:02:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=0ASP=UE=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hYQrx-0006qF-FL
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 08:02:01 +0000
X-Inumbo-ID: 3015cd45-8768-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 3015cd45-8768-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 08:01:57 +0000 (UTC)
IronPort-SDR: ID+pmOuKMoFtiETn9zIdF0g9qstZhGDcLr93E3yzUXfJ5G3MNvw8PiCJ7aMrIx7aAkfoae3gJq
 UJyXe6kLgWVA==
IronPort-PHdr: =?us-ascii?q?9a23=3AflGasRecDk7VQtNP4fN5UQDelGMj4u6mDksu8p?=
 =?us-ascii?q?Mizoh2WeGdxcW4bB7h7PlgxGXEQZ/co6odzbaP6ua5BTVLuMzf+Fk5M7V0Hy?=
 =?us-ascii?q?cfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFR?=
 =?us-ascii?q?rwLxd6KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/IAiroQnLq8UbjpZuJqksxh?=
 =?us-ascii?q?fXo3ZDZvhby35vKV+PhRj3+92+/IRk8yReuvIh89BPXKDndKkmTrJWESorPX?=
 =?us-ascii?q?kt6MLkqRfMQw2P5mABUmoNiRpHHxLF7BDhUZjvtCbxq/dw1zObPc3ySrA0RC?=
 =?us-ascii?q?ii4qJ2QxLmlCsLKzg0+3zMh8dukKxUvg6upx1nw47Vfo6VMuZ+frjAdt8eXG?=
 =?us-ascii?q?ZNQ9pdWzBEDo66coABDfcOPfxAoof9uVUAsBWwCwqrCuztxD9FnWP60bEg3u?=
 =?us-ascii?q?g9CwzKwBAsEtQTu3rUttX1M6ISXPirwanP1jXDc/JW2THg44bObxAhueyMVq?=
 =?us-ascii?q?93fMXNzkkvDB/FjlSWqYD/OzOVy/wNs3WA4uV8TuKjkXYnqxxqrTS13McsjZ?=
 =?us-ascii?q?DEi4QIwV7H7SV02Js5KNKlREJhYtOpEIFcuz+EO4Z0WM8vTXlktDs1x7Ebo5?=
 =?us-ascii?q?K2fygHxI45yxPRZfGLaZWE7x39WOuXPDx2nmhqeKiliBa36UWgz+r8WdSq31?=
 =?us-ascii?q?tStSpFl8XMtmgK1xzO9siLUvt98Vml2TaIzw3T9ORELlo1larfMZIu3qUwmo?=
 =?us-ascii?q?ALsUTeBSD6gl/2jKiOekUl/Oin9fjnb637qpKTKoN4kALzP6Q0lsChH+g1MB?=
 =?us-ascii?q?ICUmaD9eS5zrLj/En5QLtQjv0xl6nUqIzVJcMApq6lAg9V1Jwv6xKiDze+zd?=
 =?us-ascii?q?QVhmUILElfdBKfkojmIEvCIOr/DfunmVSjjC9rx+zaPr3mGpjNMmbMkLD7cb?=
 =?us-ascii?q?Zm9UFc0hE8wspZ551KEbEOPO/zVlLwudHDAR85Nha7w+fjCNlnyoweXmePCL?=
 =?us-ascii?q?eDMKzOqV+I+v4vI+6UaY8QuTb9Lfkl5/n1jXMghFASY7ep0oUTaH2jGvRmIl?=
 =?us-ascii?q?6ZYWb3gtsbHmYFoAw+QPbtiF2YXj5Zf2yyUL4k5jEnFIKmCp/ORo6zj7yF3S?=
 =?us-ascii?q?e7BoNZanpGClCREHfna4SEVuwKaC2MPsBhliYLWqO7R4A/yBH9/DP9nr9mKO?=
 =?us-ascii?q?vT4WgUuIzu0PBx5vbPjlci+DoyCN6SgE+XSGQhtWQTWz4wlIRiuVE1nlyEyr?=
 =?us-ascii?q?R5hbpcCMROz/hSFB8nP9jGyLopWJjJRgvdc4LRGx6dSdK8DGR0F4ppzg=3D?=
 =?us-ascii?q?=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2DOAgCMdvdc/wPjVY1mHAEBAQQBAQc?=
 =?us-ascii?q?EAQGBZYNOATAojQ+MGolCkRcJAQEBOgECAQGEQAKCdzgTAQMBAQUBAQEBBAF?=
 =?us-ascii?q?sKII6KQGCZgEGJ1IQHAMBAh0SIS4IGYMigWsDIacTM4VHgj0NXYFGgTSHBIY?=
 =?us-ascii?q?uP4RhghqCd4UVBJQ1lBU+BwKCEFoEjm+DXieWey2VTo8QNyGBWDMag1+CGxc?=
 =?us-ascii?q?Ujg88AQExgQYBAY8jAQE?=
X-IPAS-Result: =?us-ascii?q?A2DOAgCMdvdc/wPjVY1mHAEBAQQBAQcEAQGBZYNOATAoj?=
 =?us-ascii?q?Q+MGolCkRcJAQEBOgECAQGEQAKCdzgTAQMBAQUBAQEBBAFsKII6KQGCZgEGJ?=
 =?us-ascii?q?1IQHAMBAh0SIS4IGYMigWsDIacTM4VHgj0NXYFGgTSHBIYuP4RhghqCd4UVB?=
 =?us-ascii?q?JQ1lBU+BwKCEFoEjm+DXieWey2VTo8QNyGBWDMag1+CGxcUjg88AQExgQYBA?=
 =?us-ascii?q?Y8jAQE?=
X-IronPort-AV: E=Sophos;i="5.60,550,1549922400"; 
   d="scan'208";a="3489236"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 05 Jun 2019 11:01:25 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 4B6A01A60198;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id fyfvpCwvAKho; Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 315891A6007B;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id d_PvVq94Use5; Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 13C251A6018D;
 Wed,  5 Jun 2019 11:01:26 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Wed,  5 Jun 2019 11:01:19 +0300
Message-Id: <20190605080120.27552-2-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
References: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
Subject: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED 1/2] patches: Add patch
 for making pte_handle a C++ structure
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, Teodora Serbanescu <teo.serbanescu16@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>

VGhlIENYWCBsaWJyYXJ5IHJlcXVpcmVzIHB0aGVfaGFuZGxlIHRvIGJlIGRlZmluZWQgYXMgYSBD
Kysgc3RydWN0dXJlLiBUaGlzCnBhdGNoIGFsc28gYWRkcyB0aGUgb3ZlcmxvYWRlZCBvcGVyYXRv
cnMgbmVlZGVkIGJ5IHRoZSBDWFggbGlicmFyeS4KClNpZ25lZC1vZmYtYnk6IFRlb2RvcmEgU2Vy
YmFuZXNjdSA8dGVvLnNlcmJhbmVzY3UxNkBnbWFpbC5jb20+Ci0tLQogLi4uLzAwMDktTWFrZS1w
dGVfaGFuZGxlLWEtQy1zdHJ1Y3R1cmUucGF0Y2ggIHwgNjYgKysrKysrKysrKysrKysrKysrKwog
MSBmaWxlIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRj
aGVzLzAwMDktTWFrZS1wdGVfaGFuZGxlLWEtQy1zdHJ1Y3R1cmUucGF0Y2gKCmRpZmYgLS1naXQg
YS9wYXRjaGVzLzAwMDktTWFrZS1wdGVfaGFuZGxlLWEtQy1zdHJ1Y3R1cmUucGF0Y2ggYi9wYXRj
aGVzLzAwMDktTWFrZS1wdGVfaGFuZGxlLWEtQy1zdHJ1Y3R1cmUucGF0Y2gKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkNWZiOQotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNo
ZXMvMDAwOS1NYWtlLXB0ZV9oYW5kbGUtYS1DLXN0cnVjdHVyZS5wYXRjaApAQCAtMCwwICsxLDY2
IEBACitGcm9tIDE0NjVmYzBiY2I1Mjg2MGQ2MDc3YWU3MmE4ZTIzNjQ4OTA0ODVmZDEgTW9uIFNl
cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5l
c2N1MTZAZ21haWwuY29tPgorRGF0ZTogV2VkLCA1IEp1biAyMDE5IDEwOjQ1OjM2ICswMzAwCitT
dWJqZWN0OiBbVU5JS1JBRlQvUFRIUkVBRC1FTUJFRERFRF0gTWFrZSBwdGVfaGFuZGxlIGEgQysr
IHN0cnVjdHVyZQorCitUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHB0ZV9oYW5kbGUgc3RydWN0dXJl
IHRvIGEgQysrIHN0cnVjdHVyZSwgYWxzbyBhZGRpbmcgdGhlCitvdmVybG9hZGVkIG9wZXJhdG9y
cyBuZWVkZWQgYnkgdGhlIGN4eCBsaWJyYXJ5LgorCitTaWduZWQtb2ZmLWJ5OiBUZW9kb3JhIFNl
cmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1MTZAZ21haWwuY29tPgorLS0tCisgcHRocmVhZC5oIHwg
MjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNl
cnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9wdGhyZWFkLmggYi9wdGhyZWFkLmgKK2luZGV4IDMz
ZGY0NDYuLjQ4NjI1YTQgMTAwNjQ0CistLS0gYS9wdGhyZWFkLmgKKysrKyBiL3B0aHJlYWQuaAor
QEAgLTM4OCwxMCArMzg4LDI1IEBAIGVudW0KKyAgICAgICogdGhhdCBhdmFpbGFibGUgd2l0aCBh
IHNpbXBsZSBwb2ludGVyLiBJdCBzaG91bGQgc2NhbGUgZm9yIGVpdGhlcgorICAgICAgKiBJQS0z
MiBvciBJQS02NC4KKyAgICAgICovCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrICAgIHR5cGVk
ZWYgc3RydWN0IHB0ZV9oYW5kbGUKKysjZWxzZQorICAgICB0eXBlZGVmIHN0cnVjdAorKyNlbmRp
ZgorICAgICAgIHsKKyAgICAgICAgIHZvaWQgKiBwOyAgICAgICAgICAgICAgICAgICAvKiBQb2lu
dGVyIHRvIGFjdHVhbCBvYmplY3QgKi8KKyAgICAgICAgIHVuc2lnbmVkIGludCB4OyAgICAgICAg
ICAgICAvKiBFeHRyYSBpbmZvcm1hdGlvbiAtIHJldXNlIGNvdW50IGV0YyAqLworKworKyNpZmRl
ZiBfX2NwbHVzcGx1cworKyAgICAgICAgcHRlX2hhbmRsZSgpIHt9OworKyAgICAgICAgcHRlX2hh
bmRsZShpbnQgcHRyX3ZhbHVlKQorKyAgICAgICAgeworKyAgICAgICAgCXRoaXMtPnAgPSByZWlu
dGVycHJldF9jYXN0IDx2b2lkICo+KHB0cl92YWx1ZSk7CisrICAgICAgICB9CisrICAgICAgICBp
bmxpbmUgc3RydWN0IHB0ZV9oYW5kbGUmIG9wZXJhdG9yPSh1bnNpZ25lZCBpbnQgcHRyX3ZhbHVl
KTsKKysgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oaW50IHB0cl92YWx1ZSk7CisrI2Vu
ZGlmCisgICAgICAgfSBwdGVfaGFuZGxlX3Q7CisgCisgICAgIHR5cGVkZWYgcHRlX2hhbmRsZV90
IHB0aHJlYWRfdDsKK0BAIC05OTQsNiArMTAwOSwxOSBAQCBlbnVtCisgICAgIHsKKyAgICAgICAg
IHJldHVybiAoKHNpemVfdCkgbC5wKSA9PSAoKHNpemVfdCkgci5wKTsKKyAgICAgfQorKworKyAg
ICAvKiBPcGVyYXRvciB0byBjb21wYXJlIHRoZSB0aHJlYWQgcG9pbnRlciB3aXRoIGEgZ2l2ZW4g
dmFsdWUgKi8KKysgICAgYm9vbCBwdGVfaGFuZGxlX3Q6Om9wZXJhdG9yPT0oaW50IHB0cl92YWx1
ZSkKKysgICAgeworKyAgICAgICAgcmV0dXJuICgoc2l6ZV90KSB0aGlzLT5wKSA9PSAoKHNpemVf
dCkgKHJlaW50ZXJwcmV0X2Nhc3QgPHZvaWQgKj4ocHRyX3ZhbHVlKSkpOworKyAgICB9CisrCisr
ICAgIC8qIE9wZXJhdG9yIHRvIGFzc2lnbiBhIGdpdmVuIHZhbHVlIHRvIHRoZSB0aHJlYWQgcG9p
bnRlciAqLworKyAgICBwdGVfaGFuZGxlX3QmIHB0ZV9oYW5kbGVfdDo6b3BlcmF0b3I9KHVuc2ln
bmVkIGludCBwdHJfdmFsdWUpCisrICAgIHsKKysJCXRoaXMtPnAgPSByZWludGVycHJldF9jYXN0
IDx2b2lkICo+KHB0cl92YWx1ZSk7CisrCQlyZXR1cm4gKnRoaXM7CisrICAgIH0KKyAjZW5kaWYK
KyAKKyAKKy0tIAorMi4yMC4xCisKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 08:02:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 08:02: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 1hYQsY-0006sE-Jv; Wed, 05 Jun 2019 08:02:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=isUm=UE=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYQsX-0006s7-Dt
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 08:02:37 +0000
X-Inumbo-ID: 4729527e-8768-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4729527e-8768-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 08:02:35 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id f9so3701009wre.12
 for <minios-devel@lists.xen.org>; Wed, 05 Jun 2019 01:02:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=Wccp/eaLmh7aeE15sl8aUeYrb/8V/y6KiM5gUlyQ1RQ=;
 b=cBOAbuZdlXmNlb1hpKOoG3jD+W94sAw4QaRqxe9Y1MjGV9txkfu1FL+b/A0D59Psv3
 xy/oLSiCri1P0XkzdtfdQD/LEqKvQpYeS1mRJ7zp7361DoIyw0Ptfcjxbei/mgUVXuih
 E2A7BL3J+jZaBhw6gQEHPtEtTdb4rab163Rzq4S/xltc2exiKauZ2d5uzYRbBg3Na/WB
 cORUAP7dLQbKZcRM/aFjWSmMt3G86uykqQ85OA7LZRh43vIwrtsUzT/oWE8PG1Ct22Vn
 TCJLONKKPzb1VcSfi/dl5cfRW0JAZbeRYYfk09NYlIDg9TZMZa5Y1hP0v9T74QcIEVEs
 0mLw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=Wccp/eaLmh7aeE15sl8aUeYrb/8V/y6KiM5gUlyQ1RQ=;
 b=frexEpLwpyF6iPWoFD5yLicsQ6hysWBq3t9PfD9UjBh8wgRN7ihqFVLBYIp0ZYPJXV
 lMhWFqJg37o6bOnwpWkBIJ3Dh4q59RFRfbNELQZIitffaDXWsChLeOIqh6skfBUQQeig
 cqKscZscNW9ewe7O0sIOhgiRI2eLvvwWDkcXR5aRb8aQTya/47HgVakRTxWDiVR8Iuk1
 GJG1eqL32OcfviJ8RgNfOtEob/Cc2sfYQ0KPVzojdLP7xkMtjRm+Vpl2ZM++9+EXHVx8
 RET3OUDcxNhpcp5cUI7CxRNjQmuahqhHhFEX24IC/XWna6jScSOIgZT6L8Ub4+6roWEr
 SImw==
X-Gm-Message-State: APjAAAXS6tG/NnOVJpmG5Y1qxUbbkieByMcfmxqf+RxslzPuHxS8KvU7
 rHxQ8o6WPwlZvOfxNgpVvwQ=
X-Google-Smtp-Source: APXvYqwehpaw35ytHF8xoqLp0BQBFi6uLK15ZL0rvDmnqhj9R4n3bKgiCzSaJ22QBMcCGLdy1vpyWQ==
X-Received: by 2002:adf:9d81:: with SMTP id p1mr10364901wre.294.1559721754738; 
 Wed, 05 Jun 2019 01:02:34 -0700 (PDT)
Received: from [192.168.1.103] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id j82sm18693207wmj.40.2019.06.05.01.02.33
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Wed, 05 Jun 2019 01:02:34 -0700 (PDT)
To: Felipe Huici <Felipe.Huici@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190604205439.25979-1-costin.lupu@cs.pub.ro>
 <CDA35901-5918-4884-9C24-B39FCE4F411C@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <6e1a5b45-b5ad-7b79-870e-f2c8735b0bab@gmail.com>
Date: Wed, 5 Jun 2019 11:02:33 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <CDA35901-5918-4884-9C24-B39FCE4F411C@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.ro>,
 Teodora Serbanescu <teo.serbanescu16@gmail.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>

SGkgRmVsaXBlLAoKSW4gZGVlZCwgd2UgbmVlZCBzb21lIGNoYW5nZXMgaW4gcHRocmVhZC1lbWJl
ZGRlZCBhcyB3ZWxsLiBJIHNlbnQgYQpzbWFsbCBzZXJpZXMgcHJvdmlkaW5nIHRoYXQuCgpDb3N0
aW4KCk9uIDYvNS8xOSA5OjQ4IEFNLCBGZWxpcGUgSHVpY2kgd3JvdGU6Cj4gSGkgQ29zdGluLAo+
IAo+IEkgZ2V0IHRoZSBmb2xsb3dpbmcgY29tcGlsYXRpb24gZXJyb3Igd2hlbiBhcHBseWluZyB0
aGlzIHBhdGNoOgo+IAo+IENYWCAgICAgbGlidW53aW5kOiBsaWJ1bndpbmQubwo+IGNjMXBsdXM6
IHdhcm5pbmc6IGNvbW1hbmQgbGluZSBvcHRpb24gJy1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCcg
aXMgdmFsaWQgZm9yIEMvT2JqQyBidXQgbm90IGZvciBDKysKPiBJbiBmaWxlIGluY2x1ZGVkIGZy
b20gL3Jvb3Qvd29ya3NwYWNlL2dpdGxhYi91bmlrcmFmdC91cHN0cmVhbWluZy9hcHBzL2hlbGxv
d29ybGQvYnVpbGQvbGliY3h4L29yaWdpbi9saWJjeHgtNy4wLjAuc3JjL2luY2x1ZGUvYWxnb3Jp
dGhtOjY0MzowLAo+ICAgICAgICAgICAgICAgICAgZnJvbSAvcm9vdC93b3Jrc3BhY2UvZ2l0bGFi
L3VuaWtyYWZ0L3Vwc3RyZWFtaW5nL2FwcHMvaGVsbG93b3JsZC9idWlsZC9saWJ1bndpbmQvb3Jp
Z2luL2xpYnVud2luZC03LjAuMC5zcmMvc3JjL2xpYnVud2luZC5jcHA6MTk6Cj4gL3Jvb3Qvd29y
a3NwYWNlL2dpdGxhYi91bmlrcmFmdC91cHN0cmVhbWluZy9hcHBzL2hlbGxvd29ybGQvYnVpbGQv
bGliY3h4L29yaWdpbi9saWJjeHgtNy4wLjAuc3JjL2luY2x1ZGUvdXRpbGl0eTogSW4gbWVtYmVy
IGZ1bmN0aW9uICdzaXplX3Qgc3RkOjpfXzE6Omhhc2g8cHRlX2hhbmRsZV90Pjo6b3BlcmF0b3Io
KShwdGhyZWFkX3QpIGNvbnN0JzoKPiAvcm9vdC93b3Jrc3BhY2UvZ2l0bGFiL3VuaWtyYWZ0L3Vw
c3RyZWFtaW5nL2FwcHMvaGVsbG93b3JsZC9idWlsZC9saWJjeHgvb3JpZ2luL2xpYmN4eC03LjAu
MC5zcmMvaW5jbHVkZS91dGlsaXR5OjE0ODk6MTY6IGVycm9yOiBubyBtYXRjaCBmb3IgJ29wZXJh
dG9yPT0nIChvcGVyYW5kIHR5cGVzIGFyZSAncHRocmVhZF90IHtha2EgcHRlX2hhbmRsZV90fScg
YW5kICdpbnQnKQo+ICAgICAgICAgaWYgKF9fdiA9PSAwKQo+IAo+IC0tIEZlbGlwZQo+IAo+IO+7
v09uIDA0LjA2LjE5LCAyMjo1NCwgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3MucHViLnJv
PiB3cm90ZToKPiAKPiAgICAgVGhpcyBwYXRjaCBkZWZpbmVzIHRoZSBtYWNyb3MgYW5kIGFkZHMg
dGhlIGhhc2h0YWJsZSB0ZW1wbGF0ZSByZXF1aXJlZCBmb3IKPiAgICAgZW5hYmxpbmcgdGhyZWFk
cyBzdXBwb3J0IGluIGN4eCBsaWJyYXJ5Lgo+ICAgICAKPiAgICAgU2lnbmVkLW9mZi1ieTogVmxh
ZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+ICAg
ICBTaWduZWQtb2ZmLWJ5OiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1MTZAZ21h
aWwuY29tPgo+ICAgICBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPgo+ICAgICAtLS0KPiAgICAgIENvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICA2ICsrKwo+ICAgICAgTWFrZWZpbGUudWsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDUgKysKPiAgICAgIC4uLi1BZGQtaGFzaHRhYmxlLXRlbXBs
YXRlLWZvci1wdGhyZWFkcy5wYXRjaCB8IDUxICsrKysrKysrKysrKysrKysrKysKPiAgICAgIDMg
ZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKQo+ICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0
IHBhdGNoZXMvMDAwMy1BZGQtaGFzaHRhYmxlLXRlbXBsYXRlLWZvci1wdGhyZWFkcy5wYXRjaAo+
ICAgICAKPiAgICAgZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awo+ICAgICBpbmRl
eCA5OTYyNjY5Li4xNmExMWRjIDEwMDY0NAo+ICAgICAtLS0gYS9Db25maWcudWsKPiAgICAgKysr
IGIvQ29uZmlnLnVrCj4gICAgIEBAIC00LDMgKzQsOSBAQCBtZW51Y29uZmlnIExJQkNYWAo+ICAg
ICAgCXNlbGVjdCBMSUJDWFhBQkkKPiAgICAgIAlzZWxlY3QgTElCVU5XSU5ECj4gICAgICAgICAg
ZGVmYXVsdCBuCj4gICAgICsKPiAgICAgK2lmIExJQkNYWAo+ICAgICArY29uZmlnIENYWF9USFJF
QURTCj4gICAgICsgICAgYm9vbCAiRW5hYmxlIENYWCB0aHJlYWRzIHN1cHBvcnQiCj4gICAgICsg
ICAgZGVmYXVsdCBuCj4gICAgICtlbmRpZgo+ICAgICBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsg
Yi9NYWtlZmlsZS51awo+ICAgICBpbmRleCBhNDU1Mzg2Li5iNjczZjcyIDEwMDY0NAo+ICAgICAt
LS0gYS9NYWtlZmlsZS51awo+ICAgICArKysgYi9NYWtlZmlsZS51awo+ICAgICBAQCAtOTYsNiAr
OTYsMTEgQEAgQ09ORklHX0ZMQUdTIAkrPSAtRCBMSUJDWFhfQlVJTERJTkdfTElCQ1hYQUJJIAlc
Cj4gICAgICAJCS1EIF9MSUJDUFBfUFJPVklERVNfREVGQVVMVF9SVU5FX1RBQkxFIC1EIF9fRFlO
QU1JQ19SRUVOVF9fCVwKPiAgICAgIAo+ICAgICAgCj4gICAgICtpZmRlZiBDT05GSUdfQ1hYX1RI
UkVBRFMKPiAgICAgK0NPTkZJR19GTEFHUyArPSAtRF9fbGludXhfXyAtRF9MSUJDUFBfSEFTX1RI
UkVBRF9BUElfUFRIUkVBRAo+ICAgICArZWxzZQo+ICAgICArQ09ORklHX0ZMQUdTICs9IC1EX0xJ
QkNQUF9IQVNfTk9fVEhSRUFEUwo+ICAgICArZW5kaWYKPiAgICAgIAo+ICAgICAgTElCQ1hYX0NG
TEFHUy15ICAgICs9ICAgJChDT05GSUdfRkxBR1MpCj4gICAgICBMSUJDWFhfQ1hYRkxBR1MteSAg
ICArPSAgICQoQ09ORklHX0ZMQUdTKQo+ICAgICBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDAzLUFk
ZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoIGIvcGF0Y2hlcy8wMDAzLUFk
ZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoCj4gICAgIG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0Cj4gICAgIGluZGV4IDAwMDAwMDAuLjZhOTkwNjIKPiAgICAgLS0tIC9kZXYvbnVs
bAo+ICAgICArKysgYi9wYXRjaGVzLzAwMDMtQWRkLWhhc2h0YWJsZS10ZW1wbGF0ZS1mb3ItcHRo
cmVhZHMucGF0Y2gKPiAgICAgQEAgLTAsMCArMSw1MSBAQAo+ICAgICArRnJvbSAyMTVhZTZmMDc5
YzlkM2UxZWQyMWZjNTQ5ZTQxZWY1ZDZkNzk2ZDcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+
ICAgICArRnJvbTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0ZW8uc2VyYmFuZXNjdTE2QGdtYWlsLmNv
bT4KPiAgICAgK0RhdGU6IFRodSwgMTggQXByIDIwMTkgMTU6MTU6MzMgKzAzMDAKPiAgICAgK1N1
YmplY3Q6IFtQQVRDSF0gQWRkIGhhc2h0YWJsZSB0ZW1wbGF0ZSBmb3IgcHRocmVhZHMKPiAgICAg
Kwo+ICAgICArU2lnbmVkLW9mZi1ieTogVGVvZG9yYSBTZXJiYW5lc2N1IDx0ZW8uc2VyYmFuZXNj
dTE2QGdtYWlsLmNvbT4KPiAgICAgKy0tLQo+ICAgICArIGluY2x1ZGUvdXRpbGl0eSB8IDIwICsr
KysrKysrKysrKysrKysrKysrKwo+ICAgICArIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25z
KCspCj4gICAgICsKPiAgICAgK2RpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxpdHkgYi9pbmNsdWRl
L3V0aWxpdHkKPiAgICAgK2luZGV4IGVkOWJmMDMuLmM1Yjc0ZmQgMTAwNjQ0Cj4gICAgICstLS0g
YS9pbmNsdWRlL3V0aWxpdHkKPiAgICAgKysrKyBiL2luY2x1ZGUvdXRpbGl0eQo+ICAgICArQEAg
LTIwNSw2ICsyMDUsMTAgQEAgdGVtcGxhdGUgPHNpemVfdCBJPgo+ICAgICArICNpbmNsdWRlIDxj
c3RkaW50Pgo+ICAgICArICNpbmNsdWRlIDxfX2RlYnVnPgo+ICAgICArCj4gICAgICsrI2lmIGRl
ZmluZWQoX0xJQkNQUF9IQVNfVEhSRUFEX0FQSV9QVEhSRUFEKQo+ICAgICArKyNpbmNsdWRlIDxw
dGhyZWFkLmg+Cj4gICAgICsrI2VuZGlmCj4gICAgICsrCj4gICAgICsgI2lmICFkZWZpbmVkKF9M
SUJDUFBfSEFTX05PX1BSQUdNQV9TWVNURU1fSEVBREVSKQo+ICAgICArICNwcmFnbWEgR0NDIHN5
c3RlbV9oZWFkZXIKPiAgICAgKyAjZW5kaWYKPiAgICAgK0BAIC0xNDczLDYgKzE0NzgsMjIgQEAg
c3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIGhhc2g8ZG91YmxlPgo+ICAgICArICAgICB9Cj4g
ICAgICsgfTsKPiAgICAgKyAKPiAgICAgKysjaWYgZGVmaW5lZChfTElCQ1BQX0hBU19USFJFQURf
QVBJX1BUSFJFQUQpCj4gICAgICsrdGVtcGxhdGUgPD4KPiAgICAgKytzdHJ1Y3QgX0xJQkNQUF9U
RU1QTEFURV9WSVMgaGFzaDxwdGhyZWFkX3Q+Cj4gICAgICsrICAgIDogcHVibGljIF9fc2NhbGFy
X2hhc2g8c2l6ZV90Pgo+ICAgICArK3sKPiAgICAgKysgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWQo+ICAgICArKyAgICBzaXplX3Qgb3BlcmF0b3IoKShwdGhyZWFkX3QgX192KSBjb25zdCBf
Tk9FWENFUFQKPiAgICAgKysgICAgewo+ICAgICArKyAgICAgICAvLyAtMC4wIGFuZCAwLjAgc2hv
dWxkIHJldHVybiBzYW1lIGhhc2gKPiAgICAgKysgICAgICAgaWYgKF9fdiA9PSAwKQo+ICAgICAr
KyAgICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICsrICAgICAgICByZXR1cm4gX19zY2FsYXJfaGFz
aDxzaXplX3Q+OjpvcGVyYXRvcigpKChzaXplX3QpIF9fdi5wKTsKPiAgICAgKysgICAgfQo+ICAg
ICArK307Cj4gICAgICsrI2VuZGlmCj4gICAgICsrCj4gICAgICsgdGVtcGxhdGUgPD4KPiAgICAg
KyBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgaGFzaDxsb25nIGRvdWJsZT4KPiAgICAgKyAg
ICAgOiBwdWJsaWMgX19zY2FsYXJfaGFzaDxsb25nIGRvdWJsZT4KPiAgICAgKy0tIAo+ICAgICAr
Mi4xMS4wCj4gICAgICsKPiAgICAgLS0gCj4gICAgIDIuMjAuMQo+ICAgICAKPiAgICAgCj4gCj4g
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4g
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 08:57:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 08:57: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 1hYRjA-0003Ri-2V; Wed, 05 Jun 2019 08:57:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=isUm=UE=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYRj8-0003Rb-R5
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 08:56:58 +0000
X-Inumbo-ID: dec898d6-876f-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id dec898d6-876f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 08:56:56 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id g135so1402256wme.4
 for <minios-devel@lists.xen.org>; Wed, 05 Jun 2019 01:56:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=z7DK8zLsVg4e3h6dKVncc8I1EyBaR5QkVaXLmHid9sw=;
 b=nuZKJmg/zyyo6WwXASIVaCAXUvdq47kSg+J6Ob5gc2mhb1M0VlbAVV1Vh8sm3ZHQ2d
 RuPsECSxmRHT7VzEVsNi3BmbVmnRoy709lZ5AR+gDS+9sibnTrMMlE+S4rjm0D+Zs3o8
 ZYbiZGsDz7yHOaB6Z34L0HYYXIRDsvaSqSA3YHP18lEKOh8iOb+IqAQ9anQp7Dl9Vw1x
 V496kW5+dqx1fmFPNkdTYbbRHAZail2CyH28YZyjAAXVe4sCVBw0NJDt74jjT7dSYSnz
 ByCwOwH0D7mFItXsD8ikV3w8oqqPcOpFhOjkrWElrLBdo7bNQOmg1YQUm2fZ0B1+FNPn
 1r1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=z7DK8zLsVg4e3h6dKVncc8I1EyBaR5QkVaXLmHid9sw=;
 b=J/akC4BER5qpbEcJS/aOEOXUAV/CXFv6rwr0/SCQ+Z/bnEpQbE6hZDFRL6QUDAv9/q
 hp7imKFJjc1sTiqQI6811fJRlx+iaDzVAkcObxauBxluY1fRDG28QstBHTnHGLnGzKmz
 uFbWTR3/SRI9FIO0yt4GhbyxjZjoWXGBUnYtEslhz7YJr+wM9d78AGKrBc0ravsJa56l
 Z5I0GggoKqswGH3Dd4aThW7kSGBJF55H5slcjw5BROeh8JAJcbPnx+vRlDCDMoihOZMW
 mWwRHQPIpLIro3l4836r3xZCl+3v1+3onO0HaZ1hgDauqB1EMe/asEzJsotMviJP1tJI
 bvug==
X-Gm-Message-State: APjAAAUAAz/K1VkljvxxAx49KcXOjL90s3Gk9AGpAaQXKZ5wzGE0oShE
 VbE/1bi5L/DTjHn7wM3LN2o=
X-Google-Smtp-Source: APXvYqy4+PrJ8xNNMiqB38UXIY2EYZXfd2voxKHgMK8jWXw35qnX8yum1bVG42VV+imiZmrB9UpPqg==
X-Received: by 2002:a1c:4987:: with SMTP id w129mr9321245wma.41.1559725015432; 
 Wed, 05 Jun 2019 01:56:55 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id t14sm21228721wrr.33.2019.06.05.01.56.54
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 05 Jun 2019 01:56:54 -0700 (PDT)
To: Florian Schmidt <florian.schmidt@neclab.eu>, minios-devel@lists.xen.org
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-2-florian.schmidt@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
Date: Wed, 5 Jun 2019 11:56:53 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605073545.1785-2-florian.schmidt@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft 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 <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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzUv
MTkgMTA6MzUgQU0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBBZGQgTWFrZWZpbGUsIE1ha2Vm
aWxlLnVrLCBDb25maWcudWssIC5naXRpZ25vcmUsIC5tZCBmaWxlcwo+IAo+IFNpZ25lZC1vZmYt
Ynk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KPiBTaWduZWQtb2ZmLWJ5
OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Cj4gLS0tCj4gIC5n
aXRpZ25vcmUgICAgICB8ICAgNCArKwo+ICBDT0RJTkdfU1RZTEUubWQgfCAgIDQgKysKPiAgQ09O
VFJJQlVUSU5HLm1kIHwgICA0ICsrCj4gIENPUFlJTkcubWQgICAgICB8ICA0NyArKysrKysrKysr
KysrCj4gIENvbmZpZy51ayAgICAgICB8ICA4NiArKysrKysrKysrKysrKysrKysrKysrKwo+ICBN
QUlOVEFJTkVSUy5tZCAgfCAgMTAgKysrCj4gIE1ha2VmaWxlICAgICAgICB8ICAgOSArKysKPiAg
TWFrZWZpbGUudWsgICAgIHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwo+ICBSRUFETUUubWQgICAgICAgfCAgIDUgKysKPiAgOSBmaWxlcyBjaGFu
Z2VkLCAzNTEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgLmdpdGlnbm9yZQo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDT05UUklCVVRJTkcubWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQKPiAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51awo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5F
UlMubWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBNYWtlZmlsZS51awo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kCj4gCj4gZGlmZiAt
LWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwLi5hOWZiNzFiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiLy5naXRpZ25vcmUK
PiBAQCAtMCwwICsxLDQgQEAKPiArLmNvbmZpZwo+ICsuY29uZmlnLm9sZAo+ICsuLmNvbmZpZy50
bXAKPiArYnVpbGQvCj4gZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlM
RS5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNTczMDA0MQo+IC0t
LSAvZGV2L251bGwKPiArKysgYi9DT0RJTkdfU1RZTEUubWQKPiBAQCAtMCwwICsxLDQgQEAKPiAr
Q29kaW5nIFN0eWxlCj4gKz09PT09PT09PT09PQo+ICsKPiArUGxlYXNlIHJlZmVyIHRvIHRoZSBg
Q09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCj4g
ZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZAo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWY1NWVjYQo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9DT05UUklCVVRJTkcubWQKPiBAQCAtMCwwICsxLDQgQEAKPiArQ29udHJpYnV0aW5nIHRv
IFVuaWtyYWZ0Cj4gKz09PT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICtQbGVhc2UgcmVmZXIg
dG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3Np
dG9yeS4KPiBkaWZmIC0tZ2l0IGEvQ09QWUlORy5tZCBiL0NPUFlJTkcubWQKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjUyZjM3NTMKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvQ09QWUlORy5tZAo+IEBAIC0wLDAgKzEsNDcgQEAKPiArTGljZW5zZQo+ICs9PT09PT09Cj4g
Kwo+ICtVbmlrcmFmdCBjbGljayB3cmFwcGVycwo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
PiArCj4gK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFwcGVyIGNvZGUgdG8gYnVpbGQgdGhl
IENsaWNrIG1vZHVsYXIgcm91dGVyIHdpdGgKPiArVW5pa3JhZnQuIFRoZSB3cmFwcGVyIGNvZGUg
aXMgZ2VuZXJhbGx5IHB1Ymxpc2hlZCB1bmRlciBhIEJTRCAzLWNsYXVzZSBsaWNlbmNlLgo+ICtl
YWNoIEMgY29kZSBmaWxlIGluIHRoaXMgcmVwb3NpdG9yeSBzaG91bGQgZGVjbGFyZSB3aG8gaXMg
dGhlIGNvcHlyaWdodCBvd25lcgo+ICthbmQgdW5kZXIgd2hpY2ggdGVybXMgYW5kIGNvbmRpdGlv
bnMgdGhlIGNvZGUgaXMgbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlCj4gK25vdGUgaXMgbWlz
c2luZywgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlIHdpbGwgYXBwbHk6Cj4gKwo+ICsJ
Q29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZWkgR21iSCwgTkVDIENv
cnBvcmF0aW9uLgo+ICsJICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+
ICsKPiArCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAo+ICsJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKwlhcmUgbWV0Ogo+ICsKPiArCTEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4gKwkgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCj4gKwkyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsJICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsJICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KPiArCTMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xk
ZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArCSAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKwkgICB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsKPiAr
CVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTIElTIgo+ICsJQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsJSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKPiArCUFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArCUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArCUNPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Cj4gKwlTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKPiArCUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKwlDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQo+ICsJQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArCVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+
ICsKPiArQ2xpY2sgc291cmNlIGNvZGUKPiArLS0tLS0tLS0tLS0tLS0tLS0tCj4gKwo+ICtEdXJp
bmcgYnVpbGRpbmcsIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBkb3dubG9hZCB0aGUgQ2xpY2sgbW9k
dWxhciByb3V0ZXIgc291cmNlCj4gK1RoaXMgY29kZSBoYXMgYSB2YXJpZXR5IG9mIGxpY2VuY2Vz
OyBwbGVhc2UgZmluZCBtb3JlIGluZm9ybWF0aW9uIGluIHRoZQo+ICtgTElDRU5TRWAgZmlsZSBp
biBDbGljaydzIHJvb3QgZGlyZWN0b3J5LCBvciBhdAo+ICtodHRwczovL3Jhdy5naXRodWJ1c2Vy
Y29udGVudC5jb20va29obGVyL2NsaWNrL21hc3Rlci9MSUNFTlNFIC4KPiBkaWZmIC0tZ2l0IGEv
Q29uZmlnLnVrIGIvQ29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwLi4wMmVkOTk3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0NvbmZpZy51awo+IEBAIC0wLDAg
KzEsODYgQEAKPiArIyMjIEludmlzaWJsZSBvcHRpb24gZm9yIGRlcGVuZGVuY2llcwo+ICtjb25m
aWcgQVBQX0RFUEVOREVOQ0lFUwo+ICsJYm9vbAo+ICsJZGVmYXVsdCB5Cj4gKwo+ICttZW51Y29u
ZmlnIExJQkNMSUNLCj4gKwlib29sICJUaGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIiCj4gKwlkZXBl
bmRzIG9uIEhBVkVfTElCQwo+ICsJc2VsZWN0IExJQkxXSVAKPiArCWRlZmF1bHQgeQo+ICsKPiAr
aWYgTElCQ0xJQ0sKPiArCj4gK2NvbmZpZyBMSUJDTElDS19NQUlOCj4gKwlib29sICJFbmFibGUg
Q2xpY2sgbWFpbiBmdW5jdGlvbiIKPiArCWRlZmF1bHQgbgo+ICsJaGVscAo+ICsJICBEZWZpbmUg
bWFpbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNsaWNrX21haW4gZnVuY3Rpb24KPiArCj4gK2NvbmZp
ZyBMSUJDTElDS19FTEVNU19BUU0KPiArCWJvb2wgIkVuYWJsZSBBUU0gZWxlbWVudHMiCj4gKwlk
ZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVpbGQgd2l0aCBJUCBlbGVtZW50cwo+ICsKPiArY29u
ZmlnIExJQkNMSUNLX0VMRU1TX0VUSEVSTkVUCj4gKwlib29sICJFbmFibGUgRXRoZXJuZXQgZWxl
bWVudHMiCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVpbGQgd2l0aCBFdGhlcm5ldCBl
bGVtZW50cwo+ICsKPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX0VUSEVSU1dJVENICj4gKwlib29s
ICJFbmFibGUgRXRoZXJuZXQgc3dpdGNoIGVsZW1lbnRzIgo+ICsJZGVmYXVsdCB5Cj4gKwloZWxw
Cj4gKwkgIEJ1aWxkIHdpdGggRXRoZXJuZXQgc3dpdGNoIGVsZW1lbnRzCj4gKwo+ICtjb25maWcg
TElCQ0xJQ0tfRUxFTVNfSUNNUAo+ICsJYm9vbCAiRW5hYmxlIElDTVAgZWxlbWVudHMiCj4gKwlk
ZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVpbGQgd2l0aCBJQ01QIGVsZW1lbnRzCj4gKwo+ICtj
b25maWcgTElCQ0xJQ0tfRUxFTVNfSVAKPiArCWJvb2wgIkVuYWJsZSBJUCBlbGVtZW50cyIKPiAr
CWRlZmF1bHQgeQo+ICsJaGVscAo+ICsJICBCdWlsZCB3aXRoIGFkYXB0aXZlIHF1ZXVlIG1hbmFn
ZW1lbnQgZWxlbWVudHMKPiArCj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19VTklLUkFGVAo+ICsJ
Ym9vbCAiRW5hYmxlIFVuaWtyYWZ0IG5ldHdvcmtpbmciCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAK
PiArCSAgQnVpbGQgd2l0aCBVbmlrcmFmdCBGcm9tRGV2aWNlIGFuZCBUb0RldmljZSBlbGVtZW50
cwo+ICsKPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX0xPQ0FMCj4gKwlib29sICJFbmFibGUgbG9j
YWwgZWxlbWVudHMiCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVpbGQgd2l0aCBsb2Nh
bCBlbGVtZW50cwo+ICsKPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX1NJTVBMRQo+ICsJYm9vbCAi
RW5hYmxlIHNpbXBsZSBlbGVtZW50cyIKPiArCWRlZmF1bHQgeQo+ICsJaGVscAo+ICsJICBCdWls
ZCB3aXRoIHNpbXBsZSBlbGVtZW50cwo+ICsKPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX1NUQU5E
QVJECj4gKwlib29sICJFbmFibGUgc3RhbmRhcmQgZWxlbWVudHMiCj4gKwlkZWZhdWx0IHkKPiAr
CWhlbHAKPiArCSAgQnVpbGQgd2l0aCBzdGFuZGFyZCBlbGVtZW50cwo+ICsKPiArY29uZmlnIExJ
QkNMSUNLX0VMRU1TX1RDUFVEUAo+ICsJYm9vbCAiRW5hYmxlIFRDUC9VRFAgZWxlbWVudHMiCj4g
KwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVpbGQgd2l0aCBUQ1AvVURQIGVsZW1lbnRzCj4g
Kwo+ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfVEhSRUFEUwo+ICsJYm9vbCAiRW5hYmxlIG11bHRp
LXRocmVhZGluZyBlbGVtZW50cyIKPiArCWRlZmF1bHQgeQo+ICsJaGVscAo+ICsJICBCdWlsZCB3
aXRoIG11bHRpLXRocmVhZGluZyBlbGVtZW50cwo+ICsKPiArZW5kaWYKPiBkaWZmIC0tZ2l0IGEv
TUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g
aW5kZXggMDAwMDAwMC4uYjE0ODJjNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9NQUlOVEFJTkVS
Uy5tZAo+IEBAIC0wLDAgKzEsMTAgQEAKPiArTWFpbnRhaW5lcnMgTGlzdAo+ICs9PT09PT09PT09
PT09PT09Cj4gKwo+ICtGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwg
cGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KPiArdGhlIG1haW4gVW5pa3JhZnQg
cmVwb3NpdG9yeS4KPiArCj4gKwlDTElDSy1VTklLUkFGVAo+ICsJTToJRmVsaXBlIEh1aWNpIDxm
ZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pgo+ICsJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcK
PiArCUY6ICoKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQo+IG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOGVjZjgwYgo+IC0tLSAvZGV2L251bGwKPiArKysg
Yi9NYWtlZmlsZQo+IEBAIC0wLDAgKzEsOSBAQAo+ICtVS19ST09UID89ICQoUFdEKS8uLi91bmlr
cmFmdAo+ICtVS19MSUJTID89ICQoUFdEKS8uLgo+ICtMSUJTIDo9ICQoVUtfTElCUykvbmV3bGli
OiQoVUtfTElCUykvbHdpcAo+ICsKPiArYWxsOgo+ICsJQCQoTUFLRSkgLUMgJChVS19ST09UKSBB
PSQoUFdEKSBMPSQoTElCUykKPiArCj4gKyQoTUFLRUNNREdPQUxTKToKPiArCUAkKE1BS0UpIC1D
ICQoVUtfUk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpICQoTUFLRUNNREdPQUxTKQo+IGRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwLi5jNDY0YTg5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL01ha2VmaWxlLnVr
Cj4gQEAgLTAsMCArMSwxODIgQEAKPiArIwo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBM
YWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArIyAgICAgICAgICAg
ICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsjCj4gKyMgIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsj
ICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKPiArIyAgYXJlIG1ldDoKPiArIwo+ICsjICAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCj4gKyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KPiArIyAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBu
b3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsjICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsjICAgICB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsjCj4g
KyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsjICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyMgIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCj4gKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArIyAgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsj
ICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgo+ICsjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArIyAgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
PiArIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKPiArIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArIyAgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyMKPiArIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBF
WFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArIwo+ICsKPiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPiArIyBDaGVjayByZXF1aXJlbWVudHM6IENsaWNrIHJlcXVpcmVzIG5ldGRl
diBhY2Nlc3MsIHNvIExXSVAgbXVzdCBub3QgYXR0YWNoIHRoZW0KPiArIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKPiAraWZlcSAoJChDT05GSUdfTFdJUF9BVVRPSUZBQ0UpLHkpCj4gKyQoZXJyb3Ig
Q2xpY2sgY2Fubm90IGJlIGJ1aWx0IHdpdGggTFdJUCBvcHRpb24gIkF1dG9tYXRpY2FsbHkgYXR0
YWNoIG5ldGlmcyIhIFBsZWFzZSBkaXNhYmxlKQo+ICtlbmRpZgo+ICsKPiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPiArIyBSZWdpc3RlciB3aXRoIHVuaWtyYWZ0Cj4gKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliLGxpYmNsaWNrKSkKPiArCj4gKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgU291cmNlcwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iwo+ICtMSUJDTElDS19DT01NSVRfSEFTSD1hNTM4NDgzNWE2Y2FjMTBmOGQ0NGRhNGVlZWE4ZWFh
OGY4ZTZhMGMyCj4gK0xJQkNMSUNLX1VSTD1odHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20va29o
bGVyL2NsaWNrL3ppcC8kKExJQkNMSUNLX0NPTU1JVF9IQVNIKQo+ICskKGV2YWwgJChjYWxsIGZl
dGNoYXMsbGliY2xpY2ssJChMSUJDTElDS19VUkwpLGNsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hB
U0gpLnppcCkpCj4gK0xJQkNMSUNLX1BBVENIRElSPSQoTElCQ0xJQ0tfQkFTRSkvcGF0Y2hlcwo+
ICskKGV2YWwgJChjYWxsIHBhdGNoLGxpYmNsaWNrLCQoTElCQ0xJQ0tfUEFUQ0hESVIpLGNsaWNr
LSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpKSkKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Cj4gKyMgQ29weSBVbmlrcmFmdCBmcm9tL3RvIGRldmljZXMKPiArIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKPiAraWZuZXEgKCQoQ09ORklHX0xJQkNMSUNLX0VMRU1TX1VOSUtSQUZUKSwpCj4gKyQo
c2hlbGwgbWtkaXIgLXAgJChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlU
X0hBU0gpL2VsZW1lbnRzKQo+ICskKHNoZWxsIGNwIC1yICQoTElCQ0xJQ0tfQkFTRSkvdW5pa3Jh
ZnQgJChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1l
bnRzLykKPiArZW5kaWYKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgSGVscGVy
cwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJDTElDS19FWFRSQUNURUQ9JChMSUJD
TElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpCj4gK0xJQkNMSUNLX0VM
RU1FTlRTX0RJUj0kKExJQkNMSUNLX0VYVFJBQ1RFRCkvZWxlbWVudHMKPiArTElCQ0xJQ0tfQlVJ
TERUT09MPSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9iaW4vY2xpY2stYnVpbGR0b29sCj4gK0xJQkNM
SUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNtcCBpcCB1bmlrcmFmdCBc
Cj4gKwkJICAgbG9jYWwgc2ltcGxlIHN0YW5kYXJkIHRjcHVkcCB0aHJlYWRzCj4gKwo+ICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIENvbmZpZyBNZW51IC0gRmlsdGVyIHdoaWNoIGVsZW1l
bnQgY2F0ZWdvcmllcyBhY3R1YWxseSBnZXQgYnVpbHQKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKPiArTElCQ0xJQ0tfRUxFTV9ESVJTX1U9JChjYWxsIHVjLCQoTElCQ0xJQ0tfRUxFTV9ESVJT
KSkKPiArTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTX1UgOj0gJChmb3JlYWNoIFYsICQoTElC
Q0xJQ0tfRUxFTV9ESVJTX1UpLCBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICQoaWYgJChmaWx0ZXIgeSwkKENPTkZJR19MSUJDTElDS19FTEVNU18kVikpLCRWKSkKPiArTElC
Q0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTPSQoY2FsbCBsYywkKExJQkNMSUNLX0ZJTFRFUkVEX0VM
RU1fRElSU19VKSkKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgQXBwLXNwZWNp
ZmljIFRhcmdldHMKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArCj4gKyMgUnVuIENsaWNr
J3MgY29uZmlndXJlIHNjcmlwdAo+ICskKExJQkNMSUNLX0JVSUxEKS8uY29uZmlndXJlZDogJChM
SUJDTElDS19CVUlMRCkvLm9yaWdpbgo+ICsJJChjYWxsIHZlcmJvc2VfY21kLENPTkZJR1VSRSxs
aWJhcHA6ICRALFwKPiArCSAgICAgICBjZCAkKExJQkNMSUNLX0VYVFJBQ1RFRCkgJiYgLi9jb25m
aWd1cmUgLS1lbmFibGUtbWluaW9zIC0td2l0aC14ZW49JChMSUJDTElDS19CVUlMRCkgLS13aXRo
LW1pbmlvcz0kKExJQkNMSUNLX0JVSUxEKSAtLXdpdGgtbmV3bGliPSQoTElCQ0xJQ0tfQlVJTEQp
IC0td2l0aC1sd2lwPSQoTElCQ0xJQ0tfQlVJTEQpICYmIFwKPiArCSAgICAgICAkKFRPVUNIKSAk
QCkKPiArCj4gKyMgR2VuZXJhdGUgZWxlbWVudCBidWlsZCBydWxlcyB1c2luZyBjbGljay1idWls
ZHRvb2wKPiArJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzbWs6ICQoTElCQ0xJQ0tfQlVJTEQp
Ly5jb25maWd1cmVkICQoVUtfQ09ORklHX09VVCkKPiArCSQoY2FsbCB2ZXJib3NlX2NtZCxFTEVN
TUssbGliYXBwOiAkQCxcCj4gKwkgICAgICAgY2QgJChMSUJDTElDS19FTEVNRU5UU19ESVIpICYm
IGVjaG8gIiQoTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTKSIgfCAkKExJQkNMSUNLX0JVSUxE
VE9PTCkgZmluZGVsZW0gLXIgdW5pa3JhZnQgLVggJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMu
ZXhjbHVkZSB8IGdyZXAgLUUgIl5bXiNdIiB8IGF3ayAne3ByaW50ICJMSUJDTElDS19TUkNTLXkg
Kz0gJCQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9lbGVtZW50cy8iICQkMX0nID4gJEApCj4gKwo+ICsj
IEdlbmVyYXRlIGVsZW1lbnRzLmNjIGFuZCBhZGQgaXQgdG8gdGhlIGJ1aWxkIGxpc3QKPiArJChM
SUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2M6ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21r
Cj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsRUxFTUNDLGxpYmFwcDogJEAsXAo+ICsJICAgICAgIGVj
aG8gIiQoTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTKSIgfCAkKExJQkNMSUNLX0JVSUxEVE9P
TCkgZmluZGVsZW0gLXIgdW5pa3JhZnQgLXAgJChMSUJDTElDS19FTEVNRU5UU19ESVIpIC1YICQo
TElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmV4Y2x1ZGUgPiAkKExJQkNMSUNLX0JVSUxEKS8uZWxl
bWVudHNjb25mICYmIFwKPiArCSAgICAgICAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZWxlbTJleHBv
cnQgPCAkKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNjb25mID4gJChMSUJDTElDS19CVUlMRCkv
ZWxlbWVudHMuY2MpCj4gKwo+ICskKExJQkNMSUNLX0JVSUxEKS8ucHJlcGFyZWQ6ICQoTElCQ0xJ
Q0tfQlVJTEQpL2VsZW1lbnRzLmNjCj4gKwo+ICtVS19QUkVQQVJFICs9ICQoTElCQ0xJQ0tfQlVJ
TEQpLy5wcmVwYXJlZAo+ICsKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArIyBBcHAgaW5j
bHVkZXMsIGNvbXBpbGUgZmxhZ3MKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArTElCQ0xJ
Q0tfQ0lOQ0xVREVTICAgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2luY2x1ZGUgICAgICAgIFwKPiAr
CQkgICAgICAgIC1JJChMSUJDTElDS19FWFRSQUNURUQpCSAgICAgXAo+ICsJCQktSSQoTElCQ0xJ
Q0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwKPiArCQkJLUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNs
dWRlL3Bvc2l4Cj4gK0xJQkNMSUNLX0NYWElOQ0xVREVTICs9IC1JJChMSUJDTElDS19CQVNFKS9p
bmNsdWRlICAgICAgICBcCj4gKwkJICAgICAgICAtSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKSAgICAg
ICAgICAgXAo+ICsJCQktSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwKPiArCQkJLUkk
KExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRlL3Bvc2l4Cj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+ICsjIEdsb2JhbCBmbGFncwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtM
SUJDTElDS19DRkxBR1MteSAgICAgICArPSAtRExXSVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElD
S19VU0VSTEVWRUwKPiArTElCQ0xJQ0tfQ1hYRkxBR1MteSAgICAgKz0gLURMV0lQX1RJTUVWQUxf
UFJJVkFURT0wIC1EQ0xJQ0tfVVNFUkxFVkVMIC1ESEFWRV9JUDYKPiArTElCQ0xJQ0tfQ1hYRkxB
R1MgICAgICAgKz0gLWZuby1leGNlcHRpb25zIC1mbm8tcnR0aSAtc3RkPWMrKzExCj4gKwo+ICsj
IFN1cHByZXNzIHNvbWUgd2FybmluZ3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJvY2VzcyBsb29rIG5l
YXRlcgo+ICtMSUJDTElDS19TVVBQUkVTU19GTEFHUyA6PSAtV25vLXN0cmljdC1hbGlhc2luZwo+
ICtMSUJDTElDS19DRkxBR1MteSArPSAkKExJQkNMSUNLX1NVUFBSRVNTX0ZMQUdTKQo+ICtMSUJD
TElDS19DWFhGTEFHUy15ICs9ICQoTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MpCj4gKwo+ICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIFVuaWtyYWZ0IDwtPiBDbGljayBnbHVlIGNvZGUKPiAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tf
QkFTRSkvY2xpY2suY2MKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgQ2xpY2sg
c291cmNlcwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9hcmNoaXZlLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2FyZ3MuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXRvbWljLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2JpZ2hhc2htYXBfYXJlbmEuY2MKPiArTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYml0dmVjdG9yLmNjCj4gK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2NvbmZwYXJzZS5jYwo+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9jcmMzMi5jCj4g
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2RyaXZlci5jYwo+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lbGVtZW50LmNj
Cj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2VsZW1maWx0
ZXIuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZXJy
b3IuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZXRo
ZXJhZGRyZXNzLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkv
bGliL2dhcHJhdGUuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9saWIvZ2x1ZS5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9oYW5kbGVyY2FsbC5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9oYXNoYWxsb2NhdG9yLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNM
SUNLX0VYVFJBQ1RFRCkvbGliL2luX2Nrc3VtLmMKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElC
Q0xJQ0tfRVhUUkFDVEVEKS9saWIvaW50ZWdlcnMuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQo
TElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXBhZGRyZXNzLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwZmxvd2lkLmNjCj4gK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwdGFibGUuY2MKPiArTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbGV4ZXIuY2MKPiArTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWFzdGVyLmNjCj4gK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL21kNS5jYwo+ICtMSUJDTElDS19TUkNT
LXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9uYW1laW5mby5jYwo+ICtMSUJDTElDS19T
UkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ub3RpZmllci5jYwo+ICtMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9wYWNrZXQuY2MKPiArTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvcm91dGVyLmNjCj4gK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlcnRocmVhZC5jYwo+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9yb3V0ZXJ2aXNp
dG9yLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3N0
cmFjY3VtLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3N0cmluZy5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi90YXNrLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3RpbWVyLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3RpbWVyc2V0LmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkv
bGliL3RpbWVzdGFtcC5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNU
RUQpL2xpYi92YXJpYWJsZWVudi5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19F
WFRSQUNURUQpL2xpYi9pcDZ0YWJsZS5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElD
S19FWFRSQUNURUQpL2xpYi9pcDZhZGRyZXNzLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwNmZsb3dpZC5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9zZWxlY3RzZXQuY2MKPiArCj4gKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCj4gKyMgQ2xpY2sgZWxlbWVudHMKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmNjCj4g
Ky1pbmNsdWRlICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rCj4gZGlmZiAtLWdpdCBhL1JF
QURNRS5tZCBiL1JFQURNRS5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MC4uMmNkZTViMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9SRUFETUUubWQKPiBAQCAtMCwwICsx
LDUgQEAKPiArQ2xpY2sgZm9yIFVuaWtyYWZ0Cj4gKz09PT09PT09PT09PT09PT09PT0KPiArCj4g
K1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRh
dGlvbiBpbiB0aGUgYGRvYy9gCj4gK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFpbiB1bmlrcmFmdCBy
ZXBvc2l0b3J5Lgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 09:32:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 09:32: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 1hYSH3-0007P1-FY; Wed, 05 Jun 2019 09:32:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYSH2-0007Ow-27
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 09:32:00 +0000
X-Inumbo-ID: c12bd51a-8774-11e9-be94-4f42edc950ce
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c12bd51a-8774-11e9-be94-4f42edc950ce;
 Wed, 05 Jun 2019 09:31:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9444F103940;
 Wed,  5 Jun 2019 11:31:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BitizM8aenQI; Wed,  5 Jun 2019 11:31:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 70E381000F2;
 Wed,  5 Jun 2019 11:31:53 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 11:31:53 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 11:31:38 +0200
Message-ID: <20190605093138.27725-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH] doc: add extended permissions to
 the logo license
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Alina Volchkova <alina@volch.art>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogQWxpbmEgVm9sY2hrb3ZhIDxhbGluYUB2b2xjaC5hcnQ+CgpTaWduZWQtb2ZmLWJ5OiBB
bGluYSBWb2xjaGtvdmEgPGFsaW5hQHZvbGNoLmFydD4KLS0tCiBkb2MvbG9nby9DT1BZSU5HLm1k
ICAgICAgICAgICAgICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrCiBkb2Mv
bG9nby97Q09QWUlORy50eHQgPT4gY2MtYnktc2EtNC4wLnR4dH0gfCAgMAogMiBmaWxlcyBjaGFu
Z2VkLCAzOSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL2xvZ28vQ09QWUlO
Ry5tZAogcmVuYW1lIGRvYy9sb2dvL3tDT1BZSU5HLnR4dCA9PiBjYy1ieS1zYS00LjAudHh0fSAo
MTAwJSkKCmRpZmYgLS1naXQgYS9kb2MvbG9nby9DT1BZSU5HLm1kIGIvZG9jL2xvZ28vQ09QWUlO
Ry5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMGI2NTM3Y2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9kb2MvbG9nby9DT1BZSU5HLm1kCkBAIC0wLDAgKzEsMzkgQEAKK1VzYWdl
IG9mIFVuaWtyYWZ0IExvZ28gYW5kIE1hc2NvdCBJbWFnZXMKKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFVuaWtyYWZ0IGxvZ28gYW5kIG1hc2NvdCBhcmUg
bWFkZSBhdmFpbGFibGUgdW5kZXIgQ0MgQlktU0EgNC4wLiBGZWVsIGZyZWUgdG8KK3VzZSB0aGUg
aW1hZ2VzIG9uIHlvdXIgYmxvZywgYXMgd2FsbHBhcGVyLCBmb3IgZnVuIGFuZCB0aGUgbGlrZSwg
YnV0IHlvdSBtdXN0CitsaW5rIHRvIHVuaWtyYWZ0Lm9yZyBvciB4ZW5wcm9qZWN0Lm9yZworKGUu
Zy4sIGBodHRwczovL3hlbnByb2plY3Qub3JnL2RldmVsb3BlcnMvdGVhbXMvdW5pa3JhZnQvYCku
CitDcmVhdGl2ZSBDb21tb25zIEJZLVNBIDQuMCBhbGxvd3MgeW91IHRvCisKKyAtIFNoYXJlOiBD
b3B5IGFuZCByZWRpc3RyaWJ1dGUgdGhlIG1hdGVyaWFsIGluIGFueSBtZWRpdW0gb3IgZm9ybWF0
CisgLSBBZGFwdDogUmVtaXgsIHRyYW5zZm9ybSwgYW5kIGJ1aWxkIHVwb24gdGhlIG1hdGVyaWFs
CisKK2ZvciBhbnkgcHVycG9zZSwgZXZlbiBjb21tZXJjaWFsbHksIHVuZGVyIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uOgorCisgLSBBdHRyaWJ1dGlvbjogWW91IGNhbiB1c2UgdGhlIGltYWdlcyBh
bmQgbWF0ZXJpYWwgd2l0aG91dCBhdHRyaWJ1dGlvbiB3aGVuCisgICB1c2VkIGluIGEgY29udGV4
dCB0aGF0IHJlZmVycyB0byB0aGUgVW5pa3JhZnQgcHJvamVjdCwgdW5pa3JhZnQub3JnLCBvcgor
ICAgeGVucHJvamVjdC5vcmcgKGUuZy4sIGluIGEgYmxvZyBwb3N0IG9yIGFydGljbGUgYWJvdXQg
dGhlIFVuaWtyYWZ0IHByb2plY3QsCisgICBhIFVuaWtyYWZ0IEhhY2thdGhvbiwgYSBVbmlrcmFm
dCBVc2VyIEdyb3VwIG1lZXRpbmcpLiBXaGVyZSB0aGUgY29udGV4dCBpcworICAgbm90IGNsZWFy
LCBhdHRyaWJ1dGlvbiBtdXN0IGJlIG1hZGUgdG8gdW5pa3JhZnQub3JnIG9yIHhlbnByb2plY3Qu
b3JnLgorCisgICBFeGFtcGxlcyBvZiBjbGVhciBjb250ZXh0IGFyZToKKyAgIC0gQSB0cmFpbmlu
ZyBjb3Vyc2UgZW50aXRsZWQg4oCcSG93IHRvIHVzZSBVbmlrcmFmdCB0byBidWlsZCBhIFVuaWtl
cm5lbOKAnQorICAgLSBBIG1vbnRobHkgam91cm5hbCBjYWxsZWQg4oCcVW5pa3JhZnQgQnVpbGRl
ciBOZXdz4oCdIGRlc2NyaWJpbmcgaG93IHlvdSB1c2UgdGhlCisgICAgIFVuaWtyYWZ0IGZyYW1l
d29yaworICAgLSBBIGJsb2cgcG9zdCBvciBhcnRpY2xlIGFib3V0IFVuaWtyYWZ0CisgICAtIEFz
IGF2YXRhciBmb3IgYSBzb2NpYWwgbWVkaWEgYWNjb3VudCB3aXRoIGEgcmVmZXJlbmNlIHRvIHRo
ZSBVbmlrcmFmdAorICAgICBwcm9qZWN0IGluIHRoZSBwcm9maWxlIG5hbWUgb3IgaW4gdGhlIHBy
b2ZpbGUgZGVzY3JpcHRpb24KKyAgIC0gR2l2ZWF3YXlzIG9mIFVuaWtyYWZ0IGJ1dHRvbnMsIHN0
aWNrZXJzLCBtdWdzLCBldGMuIGF0IGEgVW5pa3JhZnQgcHJvamVjdAorICAgICBldmVudCBvciBh
IFhlblByb2plY3QgZXZlbnQKKworICAgRXhhbXBsZXMgd2hlcmUgdGhlIGNvbnRleHQgaXMgbm90
IGNsZWFyOgorICAgLSBBIGZyZWVseSBkaXN0cmlidXRlZCBVbmlrcmFmdCB3YWxscGFwZXIgb3Ig
dGhlbWUKKyAgIC0gR2l2ZWF3YXkgb2YgYSBVbmlrcmFmdCBidXR0b24sIHN0aWNrZXIsIG11Zywg
ZXRjLiBhdCBhIGtpZHMgZXZlbnQKKworVGhlIFVuaWtyYWZ0IGxvZ28gYW5kIG1hc2NvdCB3YXMg
b3JpZ2luYWxseSBjcmVhdGVkIGJ5IEFsaW5hIFZvbGNoa292YS4gU2hlCitvZmZlcmVkIGl0IGZy
ZWVseSB0byB0aGUgVW5pa3JhZnQgcHJvamVjdCB0byBiZSB1c2VkIGFzIHByb2plY3QgbG9nbyBh
bmQgbWFzY290LgorQXMgbG9uZyBhcyBoZXIgd29yayBhbmQgaXRzIGRlcml2YXRlcyBhcmUgaW4g
dXNlIGJ5IHRoZSBwcm9qZWN0LCB0aGUgcHJvamVjdAorc2hvdWxkIG1ha2UgYW4gcHVibGljIGFj
a25vd2xlZGdlIG9mIGhlciBhdXRob3JzaGlwIChmb3IgZXhhbXBsZSBvbiB1bmlrcmFmdC5vcmcK
K2FuZCBpbiB0aGUgcmVwb3NpdG9yeSBjb250YWluaW5nIHRoZSBsb2dvKS4KZGlmZiAtLWdpdCBh
L2RvYy9sb2dvL0NPUFlJTkcudHh0IGIvZG9jL2xvZ28vY2MtYnktc2EtNC4wLnR4dApzaW1pbGFy
aXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZG9jL2xvZ28vQ09QWUlORy50eHQKcmVuYW1lIHRv
IGRvYy9sb2dvL2NjLWJ5LXNhLTQuMC50eHQKLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 09:35:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 09:35: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 1hYSKZ-0007Sn-PZ; Wed, 05 Jun 2019 09:35: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=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYSKY-0007Si-DT
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 09:35:38 +0000
X-Inumbo-ID: 4374f394-8775-11e9-a9c0-433b834e1d35
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4374f394-8775-11e9-a9c0-433b834e1d35;
 Wed, 05 Jun 2019 09:35:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1EC84F208C;
 Wed,  5 Jun 2019 11:35:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id vtay44_21J05; Wed,  5 Jun 2019 11:35:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id EC917F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 11:35:29 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 11:35:29
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-2-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <bac24a29-f40b-0845-7b3b-fd8f29798141@neclab.eu>
Date: Wed, 5 Jun 2019 11:35:29 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-2-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 01/10] include: move UK_CONCAT
 to essentials
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhpcyBtYWNybyBpcyB1c2Vm
dWwgbm90IGp1c3QgZm9yIHRyYWNpbmcuCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtv
diA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBpbmNsdWRlL3VrL2Vzc2VudGlh
bHMuaCAgICAgICAgfCA1ICsrKysrCj4gICBsaWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmgg
fCA0IC0tLS0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u
cygtKQo+IAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VrL2Vzc2VudGlhbHMuaCBiL2luY2x1ZGUv
dWsvZXNzZW50aWFscy5oCj4gaW5kZXggNjE3MGM1ZDIuLmU4MjY0YzVmIDEwMDY0NAo+IC0tLSBh
L2luY2x1ZGUvdWsvZXNzZW50aWFscy5oCj4gKysrIGIvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmgK
PiBAQCAtMTQ3LDYgKzE0NywxMSBAQCBleHRlcm4gIkMiIHsKPiAgICNkZWZpbmUgU1RSSU5HSUZZ
KHgpIF9fU1RSSU5HSUZZKHgpCj4gICAjZW5kaWYKPiAgIAo+ICsjaWZuZGVmIFVLX0NPTkNBVAo+
ICsjZGVmaW5lIF9fVUtfQ09OQ0FUX1goYSwgYikgYSMjYgo+ICsjZGVmaW5lIFVLX0NPTkNBVChh
LCBiKSBfX1VLX0NPTkNBVF9YKGEsIGIpCj4gKyNlbmRpZgo+ICsKPiAgICNpZm5kZWYgTUlOCj4g
ICAjZGVmaW5lIE1JTihhLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgCSh7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IGRpZmYgLS1n
aXQgYS9saWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL3RyYWNlLmggYi9saWIvdWtkZWJ1Zy9pbmNsdWRl
L3VrL3RyYWNlLmgKPiBpbmRleCA5MTFjYTZhNi4uODc0NTM4MjYgMTAwNjQ0Cj4gLS0tIGEvbGli
L3VrZGVidWcvaW5jbHVkZS91ay90cmFjZS5oCj4gKysrIGIvbGliL3VrZGVidWcvaW5jbHVkZS91
ay90cmFjZS5oCj4gQEAgLTY2LDEwICs2Niw2IEBAIHN0cnVjdCB1a190cmFjZXBvaW50X2hlYWRl
ciB7Cj4gICBleHRlcm4gc2l6ZV90IHVrX3RyYWNlX2J1ZmZlcl9mcmVlOwo+ICAgZXh0ZXJuIGNo
YXIgKnVrX3RyYWNlX2J1ZmZlcl93cml0ZXA7Cj4gICAKPiAtLyogVE9ETzogY29uc2lkZXIgdG8g
bW92ZSBVS19DT05DQVQgaW50byBwdWJsaWMgaGVhZGVycyAqLwo+IC0jZGVmaW5lIF9fVUtfQ09O
Q0FUX1goYSwgYikgYSMjYgo+IC0jZGVmaW5lIFVLX0NPTkNBVChhLCBiKSBfX1VLX0NPTkNBVF9Y
KGEsIGIpCj4gLQo+ICAgI2RlZmluZSBfX1VLX05BUkdTX1goYSwgYiwgYywgZCwgZSwgZiwgZywg
aCwgbiwgLi4uKSBuCj4gICAjZGVmaW5lIFVLX05BUkdTKC4uLikgIF9fVUtfTkFSR1NfWCgsICMj
X19WQV9BUkdTX18sIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApCj4gICAKPiAKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 09:42:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 09:42: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 1hYSQk-0008Sk-K8; Wed, 05 Jun 2019 09:42: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=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYSQj-0008SD-33
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 09:42:01 +0000
X-Inumbo-ID: 283658ce-8776-11e9-a57d-7f796bbd8d37
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 283658ce-8776-11e9-a57d-7f796bbd8d37;
 Wed, 05 Jun 2019 09:41:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EDA2D103AFF;
 Wed,  5 Jun 2019 11:41:55 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xqR4S7-OBf51; Wed,  5 Jun 2019 11:41:55 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CC63D1039CE
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 11:41:55 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 11:41:55
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-4-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ffa9d957-2c84-0c38-fb78-870ba728821c@neclab.eu>
Date: Wed, 5 Jun 2019 11:41:55 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-4-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 03/10] remove duplicate syscalls
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

VGhpcyBsb29rcyBmaW5lLgoKUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56
ZXJAbmVjbGFiLmV1PgoKT24gMDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4g
VGhlIGltcGxlbWVudGF0aW9uIG9mIHN5c2NhbGxfc2hpbSByZWxpZXMgb24gdW5pcXVlbmVzcyBv
ZiB0aGUgc3lzY2FsbAo+IG51bWJlcnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtv
diA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvc3lzY2FsbF9zaGltL2Fy
Y2gvYXJtL3N5c2NhbGwuaC5pbiB8IDIgLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9u
cygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwu
aC5pbiBiL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluCj4gaW5kZXggMTNh
M2I2NmMuLjFkNzkzNjhhIDEwMDY0NAo+IC0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0v
c3lzY2FsbC5oLmluCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmgu
aW4KPiBAQCAtMjI0LDcgKzIyNCw2IEBACj4gICAjZGVmaW5lIF9fTlJfdGdraWxsCTI2OAo+ICAg
I2RlZmluZSBfX05SX3V0aW1lcwkyNjkKPiAgICNkZWZpbmUgX19OUl9mYWR2aXNlNjRfNjQJMjcw
Cj4gLSNkZWZpbmUgX19OUl9hcm1fZmFkdmlzZTY0XzY0CTI3MAo+ICAgI2RlZmluZSBfX05SX3Bj
aWNvbmZpZ19pb2Jhc2UJMjcxCj4gICAjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3JlYWQJMjcyCj4g
ICAjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3dyaXRlCTI3Mwo+IEBAIC0yOTYsNyArMjk1LDYgQEAK
PiAgICNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QJMzM5Cj4gICAjZGVmaW5lIF9fTlJfc3Bs
aWNlCTM0MAo+ICAgI2RlZmluZSBfX05SX3N5bmNfZmlsZV9yYW5nZTIJMzQxCj4gLSNkZWZpbmUg
X19OUl9hcm1fc3luY19maWxlX3JhbmdlCTM0MQo+ICAgI2RlZmluZSBfX05SX3RlZQkzNDIKPiAg
ICNkZWZpbmUgX19OUl92bXNwbGljZQkzNDMKPiAgICNkZWZpbmUgX19OUl9tb3ZlX3BhZ2VzCTM0
NAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 09:43:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 09:43: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 1hYSRi-0008UN-OS; Wed, 05 Jun 2019 09:43:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYSRh-0008Td-0F
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 09:43:01 +0000
X-Inumbo-ID: 4bd6a957-8776-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4bd6a957-8776-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 09:42:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A2CF2F208C;
 Wed,  5 Jun 2019 11:42:55 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id WMkTtFio_-zg; Wed,  5 Jun 2019 11:41:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 83AE7F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 11:41:10 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 11:41:10
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-3-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <8d90a822-e9cb-350e-efca-753d3d071738@neclab.eu>
Date: Wed, 5 Jun 2019 11:41:09 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-3-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 02/10] import syscall.h.in from
 musl
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
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>

SGV5LAoKY2FuIHlvdSBwcmVmZXggdG8geW91ciBjb21taXQgdGl0bGUgdGhhdCB0aGlzIHBhdGNo
IGlzIHJlbGF0ZWQgdG8geW91ciAKbmV3IGxpYnJhcnk/OiBsaWIvc3lzY2FsbF9zaGltOiBJbXBv
cnQgc3lzY2FsbC5oLmluIGZyb20gbXVzbAoKUGxlYXNlIGFsc28gYWRkIGEgcmVmZXJlbmNlIGZy
b20gd2hpY2ggbXVzbCB2ZXJzaW9uIChlLmcuLCBjb21taXQgaGFzaCkgCmFuZCBVUkwgeW91IGdv
dCB0aGlzIGZyb20gaW4gdGhlIGNvbW1pdCBtZXNzYWdlLgoKV2hhdCBpcyB0aGUgbGljZW5zZSBv
ZiB0aG9zZSBoZWFkZXJzPwpZb3UgbWF5IHdhbnQgdG8gYWRkIGFuIFNQRFggaGVhZGVyIGFuZCBh
IGNvbW1lbnQgd2l0aCB0aGUgc291cmNlIHRvIHRoZSAKZmlsZXMgd2l0aCBhIGZvbGxvdy11cCBw
YXRjaC4KClRoYW5rcywKClNpbW9uCgpPbiAwNC4wNi4xOSAxODoyOCwgWXVyaSBWb2xjaGtvdiB3
cm90ZToKPiBDb21taXQgNjUxNjI4MmQyYWRmYWQyYzdlNjZkODU0Y2RlMzM1NzEyMGM3NWRiZAo+
IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+
IC0tLQo+ICAgbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4gICAgfCAzNjQg
KysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybTY0L3N5
c2NhbGwuaC5pbiAgfCAyNzggKysrKysrKysrKysrKysrKysKPiAgIGxpYi9zeXNjYWxsX3NoaW0v
YXJjaC94ODZfNjQvc3lzY2FsbC5oLmluIHwgMzM2ICsrKysrKysrKysrKysrKysrKysrCj4gICAz
IGZpbGVzIGNoYW5nZWQsIDk3OCBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4KPiAgIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtNjQvc3lzY2FsbC5oLmluCj4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9hcmNoL3g4Nl82NC9zeXNjYWxsLmguaW4KPiAK
PiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4gYi9s
aWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbgo+IG5ldyBmaWxlIG1vZGUgMTAw
NjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjEzYTNiNjZjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xp
Yi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluCj4gQEAgLTAsMCArMSwzNjQgQEAK
PiArI2RlZmluZSBfX05SX3Jlc3RhcnRfc3lzY2FsbAkwCj4gKyNkZWZpbmUgX19OUl9leGl0CTEK
PiArI2RlZmluZSBfX05SX2ZvcmsJMgo+ICsjZGVmaW5lIF9fTlJfcmVhZAkzCj4gKyNkZWZpbmUg
X19OUl93cml0ZQk0Cj4gKyNkZWZpbmUgX19OUl9vcGVuCTUKPiArI2RlZmluZSBfX05SX2Nsb3Nl
CTYKPiArI2RlZmluZSBfX05SX2NyZWF0CTgKPiArI2RlZmluZSBfX05SX2xpbmsJOQo+ICsjZGVm
aW5lIF9fTlJfdW5saW5rCTEwCj4gKyNkZWZpbmUgX19OUl9leGVjdmUJMTEKPiArI2RlZmluZSBf
X05SX2NoZGlyCTEyCj4gKyNkZWZpbmUgX19OUl9ta25vZAkxNAo+ICsjZGVmaW5lIF9fTlJfY2ht
b2QJMTUKPiArI2RlZmluZSBfX05SX2xjaG93bgkxNgo+ICsjZGVmaW5lIF9fTlJfbHNlZWsJMTkK
PiArI2RlZmluZSBfX05SX2dldHBpZAkyMAo+ICsjZGVmaW5lIF9fTlJfbW91bnQJMjEKPiArI2Rl
ZmluZSBfX05SX3NldHVpZAkyMwo+ICsjZGVmaW5lIF9fTlJfZ2V0dWlkCTI0Cj4gKyNkZWZpbmUg
X19OUl9wdHJhY2UJMjYKPiArI2RlZmluZSBfX05SX3BhdXNlCTI5Cj4gKyNkZWZpbmUgX19OUl9h
Y2Nlc3MJMzMKPiArI2RlZmluZSBfX05SX25pY2UJMzQKPiArI2RlZmluZSBfX05SX3N5bmMJMzYK
PiArI2RlZmluZSBfX05SX2tpbGwJMzcKPiArI2RlZmluZSBfX05SX3JlbmFtZQkzOAo+ICsjZGVm
aW5lIF9fTlJfbWtkaXIJMzkKPiArI2RlZmluZSBfX05SX3JtZGlyCTQwCj4gKyNkZWZpbmUgX19O
Ul9kdXAJNDEKPiArI2RlZmluZSBfX05SX3BpcGUJNDIKPiArI2RlZmluZSBfX05SX3RpbWVzCTQz
Cj4gKyNkZWZpbmUgX19OUl9icmsJNDUKPiArI2RlZmluZSBfX05SX3NldGdpZAk0Ngo+ICsjZGVm
aW5lIF9fTlJfZ2V0Z2lkCTQ3Cj4gKyNkZWZpbmUgX19OUl9nZXRldWlkCTQ5Cj4gKyNkZWZpbmUg
X19OUl9nZXRlZ2lkCTUwCj4gKyNkZWZpbmUgX19OUl9hY2N0CTUxCj4gKyNkZWZpbmUgX19OUl91
bW91bnQyCTUyCj4gKyNkZWZpbmUgX19OUl9pb2N0bAk1NAo+ICsjZGVmaW5lIF9fTlJfZmNudGwJ
NTUKPiArI2RlZmluZSBfX05SX3NldHBnaWQJNTcKPiArI2RlZmluZSBfX05SX3VtYXNrCTYwCj4g
KyNkZWZpbmUgX19OUl9jaHJvb3QJNjEKPiArI2RlZmluZSBfX05SX3VzdGF0CTYyCj4gKyNkZWZp
bmUgX19OUl9kdXAyCTYzCj4gKyNkZWZpbmUgX19OUl9nZXRwcGlkCTY0Cj4gKyNkZWZpbmUgX19O
Ul9nZXRwZ3JwCTY1Cj4gKyNkZWZpbmUgX19OUl9zZXRzaWQJNjYKPiArI2RlZmluZSBfX05SX3Np
Z2FjdGlvbgk2Nwo+ICsjZGVmaW5lIF9fTlJfc2V0cmV1aWQJNzAKPiArI2RlZmluZSBfX05SX3Nl
dHJlZ2lkCTcxCj4gKyNkZWZpbmUgX19OUl9zaWdzdXNwZW5kCTcyCj4gKyNkZWZpbmUgX19OUl9z
aWdwZW5kaW5nCTczCj4gKyNkZWZpbmUgX19OUl9zZXRob3N0bmFtZQk3NAo+ICsjZGVmaW5lIF9f
TlJfc2V0cmxpbWl0CTc1Cj4gKyNkZWZpbmUgX19OUl9nZXRydXNhZ2UJNzcKPiArI2RlZmluZSBf
X05SX2dldHRpbWVvZmRheQk3OAo+ICsjZGVmaW5lIF9fTlJfc2V0dGltZW9mZGF5CTc5Cj4gKyNk
ZWZpbmUgX19OUl9nZXRncm91cHMJODAKPiArI2RlZmluZSBfX05SX3NldGdyb3Vwcwk4MQo+ICsj
ZGVmaW5lIF9fTlJfc3ltbGluawk4Mwo+ICsjZGVmaW5lIF9fTlJfcmVhZGxpbmsJODUKPiArI2Rl
ZmluZSBfX05SX3VzZWxpYgk4Ngo+ICsjZGVmaW5lIF9fTlJfc3dhcG9uCTg3Cj4gKyNkZWZpbmUg
X19OUl9yZWJvb3QJODgKPiArI2RlZmluZSBfX05SX211bm1hcAk5MQo+ICsjZGVmaW5lIF9fTlJf
dHJ1bmNhdGUJOTIKPiArI2RlZmluZSBfX05SX2Z0cnVuY2F0ZQk5Mwo+ICsjZGVmaW5lIF9fTlJf
ZmNobW9kCTk0Cj4gKyNkZWZpbmUgX19OUl9mY2hvd24JOTUKPiArI2RlZmluZSBfX05SX2dldHBy
aW9yaXR5CTk2Cj4gKyNkZWZpbmUgX19OUl9zZXRwcmlvcml0eQk5Nwo+ICsjZGVmaW5lIF9fTlJf
c3RhdGZzCTk5Cj4gKyNkZWZpbmUgX19OUl9mc3RhdGZzCTEwMAo+ICsjZGVmaW5lIF9fTlJfc3lz
bG9nCTEwMwo+ICsjZGVmaW5lIF9fTlJfc2V0aXRpbWVyCTEwNAo+ICsjZGVmaW5lIF9fTlJfZ2V0
aXRpbWVyCTEwNQo+ICsjZGVmaW5lIF9fTlJfc3RhdAkxMDYKPiArI2RlZmluZSBfX05SX2xzdGF0
CTEwNwo+ICsjZGVmaW5lIF9fTlJfZnN0YXQJMTA4Cj4gKyNkZWZpbmUgX19OUl92aGFuZ3VwCTEx
MQo+ICsjZGVmaW5lIF9fTlJfd2FpdDQJMTE0Cj4gKyNkZWZpbmUgX19OUl9zd2Fwb2ZmCTExNQo+
ICsjZGVmaW5lIF9fTlJfc3lzaW5mbwkxMTYKPiArI2RlZmluZSBfX05SX2ZzeW5jCTExOAo+ICsj
ZGVmaW5lIF9fTlJfc2lncmV0dXJuCTExOQo+ICsjZGVmaW5lIF9fTlJfY2xvbmUJMTIwCj4gKyNk
ZWZpbmUgX19OUl9zZXRkb21haW5uYW1lCTEyMQo+ICsjZGVmaW5lIF9fTlJfdW5hbWUJMTIyCj4g
KyNkZWZpbmUgX19OUl9hZGp0aW1leAkxMjQKPiArI2RlZmluZSBfX05SX21wcm90ZWN0CTEyNQo+
ICsjZGVmaW5lIF9fTlJfc2lncHJvY21hc2sJMTI2Cj4gKyNkZWZpbmUgX19OUl9pbml0X21vZHVs
ZQkxMjgKPiArI2RlZmluZSBfX05SX2RlbGV0ZV9tb2R1bGUJMTI5Cj4gKyNkZWZpbmUgX19OUl9x
dW90YWN0bAkxMzEKPiArI2RlZmluZSBfX05SX2dldHBnaWQJMTMyCj4gKyNkZWZpbmUgX19OUl9m
Y2hkaXIJMTMzCj4gKyNkZWZpbmUgX19OUl9iZGZsdXNoCTEzNAo+ICsjZGVmaW5lIF9fTlJfc3lz
ZnMJMTM1Cj4gKyNkZWZpbmUgX19OUl9wZXJzb25hbGl0eQkxMzYKPiArI2RlZmluZSBfX05SX3Nl
dGZzdWlkCTEzOAo+ICsjZGVmaW5lIF9fTlJfc2V0ZnNnaWQJMTM5Cj4gKyNkZWZpbmUgX19OUl9f
bGxzZWVrCTE0MAo+ICsjZGVmaW5lIF9fTlJfZ2V0ZGVudHMJMTQxCj4gKyNkZWZpbmUgX19OUl9f
bmV3c2VsZWN0CTE0Mgo+ICsjZGVmaW5lIF9fTlJfZmxvY2sJMTQzCj4gKyNkZWZpbmUgX19OUl9t
c3luYwkxNDQKPiArI2RlZmluZSBfX05SX3JlYWR2CTE0NQo+ICsjZGVmaW5lIF9fTlJfd3JpdGV2
CTE0Ngo+ICsjZGVmaW5lIF9fTlJfZ2V0c2lkCTE0Nwo+ICsjZGVmaW5lIF9fTlJfZmRhdGFzeW5j
CTE0OAo+ICsjZGVmaW5lIF9fTlJfX3N5c2N0bAkxNDkKPiArI2RlZmluZSBfX05SX21sb2NrCTE1
MAo+ICsjZGVmaW5lIF9fTlJfbXVubG9jawkxNTEKPiArI2RlZmluZSBfX05SX21sb2NrYWxsCTE1
Mgo+ICsjZGVmaW5lIF9fTlJfbXVubG9ja2FsbAkxNTMKPiArI2RlZmluZSBfX05SX3NjaGVkX3Nl
dHBhcmFtCTE1NAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0cGFyYW0JMTU1Cj4gKyNkZWZpbmUg
X19OUl9zY2hlZF9zZXRzY2hlZHVsZXIJMTU2Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRzY2hl
ZHVsZXIJMTU3Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF95aWVsZAkxNTgKPiArI2RlZmluZSBfX05S
X3NjaGVkX2dldF9wcmlvcml0eV9tYXgJMTU5Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJp
b3JpdHlfbWluCTE2MAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfcnJfZ2V0X2ludGVydmFsCTE2MQo+
ICsjZGVmaW5lIF9fTlJfbmFub3NsZWVwCTE2Mgo+ICsjZGVmaW5lIF9fTlJfbXJlbWFwCTE2Mwo+
ICsjZGVmaW5lIF9fTlJfc2V0cmVzdWlkCTE2NAo+ICsjZGVmaW5lIF9fTlJfZ2V0cmVzdWlkCTE2
NQo+ICsjZGVmaW5lIF9fTlJfcG9sbAkxNjgKPiArI2RlZmluZSBfX05SX25mc3NlcnZjdGwJMTY5
Cj4gKyNkZWZpbmUgX19OUl9zZXRyZXNnaWQJMTcwCj4gKyNkZWZpbmUgX19OUl9nZXRyZXNnaWQJ
MTcxCj4gKyNkZWZpbmUgX19OUl9wcmN0bAkxNzIKPiArI2RlZmluZSBfX05SX3J0X3NpZ3JldHVy
bgkxNzMKPiArI2RlZmluZSBfX05SX3J0X3NpZ2FjdGlvbgkxNzQKPiArI2RlZmluZSBfX05SX3J0
X3NpZ3Byb2NtYXNrCTE3NQo+ICsjZGVmaW5lIF9fTlJfcnRfc2lncGVuZGluZwkxNzYKPiArI2Rl
ZmluZSBfX05SX3J0X3NpZ3RpbWVkd2FpdAkxNzcKPiArI2RlZmluZSBfX05SX3J0X3NpZ3F1ZXVl
aW5mbwkxNzgKPiArI2RlZmluZSBfX05SX3J0X3NpZ3N1c3BlbmQJMTc5Cj4gKyNkZWZpbmUgX19O
Ul9wcmVhZDY0CTE4MAo+ICsjZGVmaW5lIF9fTlJfcHdyaXRlNjQJMTgxCj4gKyNkZWZpbmUgX19O
Ul9jaG93bgkxODIKPiArI2RlZmluZSBfX05SX2dldGN3ZAkxODMKPiArI2RlZmluZSBfX05SX2Nh
cGdldAkxODQKPiArI2RlZmluZSBfX05SX2NhcHNldAkxODUKPiArI2RlZmluZSBfX05SX3NpZ2Fs
dHN0YWNrCTE4Ngo+ICsjZGVmaW5lIF9fTlJfc2VuZGZpbGUJMTg3Cj4gKyNkZWZpbmUgX19OUl92
Zm9yawkxOTAKPiArI2RlZmluZSBfX05SX3VnZXRybGltaXQJMTkxCj4gKyNkZWZpbmUgX19OUl9t
bWFwMgkxOTIKPiArI2RlZmluZSBfX05SX3RydW5jYXRlNjQJMTkzCj4gKyNkZWZpbmUgX19OUl9m
dHJ1bmNhdGU2NAkxOTQKPiArI2RlZmluZSBfX05SX3N0YXQ2NAkxOTUKPiArI2RlZmluZSBfX05S
X2xzdGF0NjQJMTk2Cj4gKyNkZWZpbmUgX19OUl9mc3RhdDY0CTE5Nwo+ICsjZGVmaW5lIF9fTlJf
bGNob3duMzIJMTk4Cj4gKyNkZWZpbmUgX19OUl9nZXR1aWQzMgkxOTkKPiArI2RlZmluZSBfX05S
X2dldGdpZDMyCTIwMAo+ICsjZGVmaW5lIF9fTlJfZ2V0ZXVpZDMyCTIwMQo+ICsjZGVmaW5lIF9f
TlJfZ2V0ZWdpZDMyCTIwMgo+ICsjZGVmaW5lIF9fTlJfc2V0cmV1aWQzMgkyMDMKPiArI2RlZmlu
ZSBfX05SX3NldHJlZ2lkMzIJMjA0Cj4gKyNkZWZpbmUgX19OUl9nZXRncm91cHMzMgkyMDUKPiAr
I2RlZmluZSBfX05SX3NldGdyb3VwczMyCTIwNgo+ICsjZGVmaW5lIF9fTlJfZmNob3duMzIJMjA3
Cj4gKyNkZWZpbmUgX19OUl9zZXRyZXN1aWQzMgkyMDgKPiArI2RlZmluZSBfX05SX2dldHJlc3Vp
ZDMyCTIwOQo+ICsjZGVmaW5lIF9fTlJfc2V0cmVzZ2lkMzIJMjEwCj4gKyNkZWZpbmUgX19OUl9n
ZXRyZXNnaWQzMgkyMTEKPiArI2RlZmluZSBfX05SX2Nob3duMzIJMjEyCj4gKyNkZWZpbmUgX19O
Ul9zZXR1aWQzMgkyMTMKPiArI2RlZmluZSBfX05SX3NldGdpZDMyCTIxNAo+ICsjZGVmaW5lIF9f
TlJfc2V0ZnN1aWQzMgkyMTUKPiArI2RlZmluZSBfX05SX3NldGZzZ2lkMzIJMjE2Cj4gKyNkZWZp
bmUgX19OUl9nZXRkZW50czY0CTIxNwo+ICsjZGVmaW5lIF9fTlJfcGl2b3Rfcm9vdAkyMTgKPiAr
I2RlZmluZSBfX05SX21pbmNvcmUJMjE5Cj4gKyNkZWZpbmUgX19OUl9tYWR2aXNlCTIyMAo+ICsj
ZGVmaW5lIF9fTlJfZmNudGw2NAkyMjEKPiArI2RlZmluZSBfX05SX2dldHRpZAkyMjQKPiArI2Rl
ZmluZSBfX05SX3JlYWRhaGVhZAkyMjUKPiArI2RlZmluZSBfX05SX3NldHhhdHRyCTIyNgo+ICsj
ZGVmaW5lIF9fTlJfbHNldHhhdHRyCTIyNwo+ICsjZGVmaW5lIF9fTlJfZnNldHhhdHRyCTIyOAo+
ICsjZGVmaW5lIF9fTlJfZ2V0eGF0dHIJMjI5Cj4gKyNkZWZpbmUgX19OUl9sZ2V0eGF0dHIJMjMw
Cj4gKyNkZWZpbmUgX19OUl9mZ2V0eGF0dHIJMjMxCj4gKyNkZWZpbmUgX19OUl9saXN0eGF0dHIJ
MjMyCj4gKyNkZWZpbmUgX19OUl9sbGlzdHhhdHRyCTIzMwo+ICsjZGVmaW5lIF9fTlJfZmxpc3R4
YXR0cgkyMzQKPiArI2RlZmluZSBfX05SX3JlbW92ZXhhdHRyCTIzNQo+ICsjZGVmaW5lIF9fTlJf
bHJlbW92ZXhhdHRyCTIzNgo+ICsjZGVmaW5lIF9fTlJfZnJlbW92ZXhhdHRyCTIzNwo+ICsjZGVm
aW5lIF9fTlJfdGtpbGwJMjM4Cj4gKyNkZWZpbmUgX19OUl9zZW5kZmlsZTY0CTIzOQo+ICsjZGVm
aW5lIF9fTlJfZnV0ZXgJMjQwCj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRhZmZpbml0eQkyNDEK
PiArI2RlZmluZSBfX05SX3NjaGVkX2dldGFmZmluaXR5CTI0Mgo+ICsjZGVmaW5lIF9fTlJfaW9f
c2V0dXAJMjQzCj4gKyNkZWZpbmUgX19OUl9pb19kZXN0cm95CTI0NAo+ICsjZGVmaW5lIF9fTlJf
aW9fZ2V0ZXZlbnRzCTI0NQo+ICsjZGVmaW5lIF9fTlJfaW9fc3VibWl0CTI0Ngo+ICsjZGVmaW5l
IF9fTlJfaW9fY2FuY2VsCTI0Nwo+ICsjZGVmaW5lIF9fTlJfZXhpdF9ncm91cAkyNDgKPiArI2Rl
ZmluZSBfX05SX2xvb2t1cF9kY29va2llCTI0OQo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRl
CTI1MAo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfY3RsCTI1MQo+ICsjZGVmaW5lIF9fTlJfZXBvbGxf
d2FpdAkyNTIKPiArI2RlZmluZSBfX05SX3JlbWFwX2ZpbGVfcGFnZXMJMjUzCj4gKyNkZWZpbmUg
X19OUl9zZXRfdGlkX2FkZHJlc3MJMjU2Cj4gKyNkZWZpbmUgX19OUl90aW1lcl9jcmVhdGUJMjU3
Cj4gKyNkZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lCTI1OAo+ICsjZGVmaW5lIF9fTlJfdGltZXJf
Z2V0dGltZQkyNTkKPiArI2RlZmluZSBfX05SX3RpbWVyX2dldG92ZXJydW4JMjYwCj4gKyNkZWZp
bmUgX19OUl90aW1lcl9kZWxldGUJMjYxCj4gKyNkZWZpbmUgX19OUl9jbG9ja19zZXR0aW1lCTI2
Mgo+ICsjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0dGltZQkyNjMKPiArI2RlZmluZSBfX05SX2Nsb2Nr
X2dldHJlcwkyNjQKPiArI2RlZmluZSBfX05SX2Nsb2NrX25hbm9zbGVlcAkyNjUKPiArI2RlZmlu
ZSBfX05SX3N0YXRmczY0CTI2Ngo+ICsjZGVmaW5lIF9fTlJfZnN0YXRmczY0CTI2Nwo+ICsjZGVm
aW5lIF9fTlJfdGdraWxsCTI2OAo+ICsjZGVmaW5lIF9fTlJfdXRpbWVzCTI2OQo+ICsjZGVmaW5l
IF9fTlJfZmFkdmlzZTY0XzY0CTI3MAo+ICsjZGVmaW5lIF9fTlJfYXJtX2ZhZHZpc2U2NF82NAky
NzAKPiArI2RlZmluZSBfX05SX3BjaWNvbmZpZ19pb2Jhc2UJMjcxCj4gKyNkZWZpbmUgX19OUl9w
Y2ljb25maWdfcmVhZAkyNzIKPiArI2RlZmluZSBfX05SX3BjaWNvbmZpZ193cml0ZQkyNzMKPiAr
I2RlZmluZSBfX05SX21xX29wZW4JMjc0Cj4gKyNkZWZpbmUgX19OUl9tcV91bmxpbmsJMjc1Cj4g
KyNkZWZpbmUgX19OUl9tcV90aW1lZHNlbmQJMjc2Cj4gKyNkZWZpbmUgX19OUl9tcV90aW1lZHJl
Y2VpdmUJMjc3Cj4gKyNkZWZpbmUgX19OUl9tcV9ub3RpZnkJMjc4Cj4gKyNkZWZpbmUgX19OUl9t
cV9nZXRzZXRhdHRyCTI3OQo+ICsjZGVmaW5lIF9fTlJfd2FpdGlkCTI4MAo+ICsjZGVmaW5lIF9f
TlJfc29ja2V0CTI4MQo+ICsjZGVmaW5lIF9fTlJfYmluZAkyODIKPiArI2RlZmluZSBfX05SX2Nv
bm5lY3QJMjgzCj4gKyNkZWZpbmUgX19OUl9saXN0ZW4JMjg0Cj4gKyNkZWZpbmUgX19OUl9hY2Nl
cHQJMjg1Cj4gKyNkZWZpbmUgX19OUl9nZXRzb2NrbmFtZQkyODYKPiArI2RlZmluZSBfX05SX2dl
dHBlZXJuYW1lCTI4Nwo+ICsjZGVmaW5lIF9fTlJfc29ja2V0cGFpcgkyODgKPiArI2RlZmluZSBf
X05SX3NlbmQJMjg5Cj4gKyNkZWZpbmUgX19OUl9zZW5kdG8JMjkwCj4gKyNkZWZpbmUgX19OUl9y
ZWN2CTI5MQo+ICsjZGVmaW5lIF9fTlJfcmVjdmZyb20JMjkyCj4gKyNkZWZpbmUgX19OUl9zaHV0
ZG93bgkyOTMKPiArI2RlZmluZSBfX05SX3NldHNvY2tvcHQJMjk0Cj4gKyNkZWZpbmUgX19OUl9n
ZXRzb2Nrb3B0CTI5NQo+ICsjZGVmaW5lIF9fTlJfc2VuZG1zZwkyOTYKPiArI2RlZmluZSBfX05S
X3JlY3Ztc2cJMjk3Cj4gKyNkZWZpbmUgX19OUl9zZW1vcAkyOTgKPiArI2RlZmluZSBfX05SX3Nl
bWdldAkyOTkKPiArI2RlZmluZSBfX05SX3NlbWN0bAkzMDAKPiArI2RlZmluZSBfX05SX21zZ3Nu
ZAkzMDEKPiArI2RlZmluZSBfX05SX21zZ3JjdgkzMDIKPiArI2RlZmluZSBfX05SX21zZ2dldAkz
MDMKPiArI2RlZmluZSBfX05SX21zZ2N0bAkzMDQKPiArI2RlZmluZSBfX05SX3NobWF0CTMwNQo+
ICsjZGVmaW5lIF9fTlJfc2htZHQJMzA2Cj4gKyNkZWZpbmUgX19OUl9zaG1nZXQJMzA3Cj4gKyNk
ZWZpbmUgX19OUl9zaG1jdGwJMzA4Cj4gKyNkZWZpbmUgX19OUl9hZGRfa2V5CTMwOQo+ICsjZGVm
aW5lIF9fTlJfcmVxdWVzdF9rZXkJMzEwCj4gKyNkZWZpbmUgX19OUl9rZXljdGwJMzExCj4gKyNk
ZWZpbmUgX19OUl9zZW10aW1lZG9wCTMxMgo+ICsjZGVmaW5lIF9fTlJfdnNlcnZlcgkzMTMKPiAr
I2RlZmluZSBfX05SX2lvcHJpb19zZXQJMzE0Cj4gKyNkZWZpbmUgX19OUl9pb3ByaW9fZ2V0CTMx
NQo+ICsjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0CTMxNgo+ICsjZGVmaW5lIF9fTlJfaW5vdGlm
eV9hZGRfd2F0Y2gJMzE3Cj4gKyNkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoCTMxOAo+ICsj
ZGVmaW5lIF9fTlJfbWJpbmQJMzE5Cj4gKyNkZWZpbmUgX19OUl9nZXRfbWVtcG9saWN5CTMyMAo+
ICsjZGVmaW5lIF9fTlJfc2V0X21lbXBvbGljeQkzMjEKPiArI2RlZmluZSBfX05SX29wZW5hdAkz
MjIKPiArI2RlZmluZSBfX05SX21rZGlyYXQJMzIzCj4gKyNkZWZpbmUgX19OUl9ta25vZGF0CTMy
NAo+ICsjZGVmaW5lIF9fTlJfZmNob3duYXQJMzI1Cj4gKyNkZWZpbmUgX19OUl9mdXRpbWVzYXQJ
MzI2Cj4gKyNkZWZpbmUgX19OUl9mc3RhdGF0NjQJMzI3Cj4gKyNkZWZpbmUgX19OUl91bmxpbmth
dAkzMjgKPiArI2RlZmluZSBfX05SX3JlbmFtZWF0CTMyOQo+ICsjZGVmaW5lIF9fTlJfbGlua2F0
CTMzMAo+ICsjZGVmaW5lIF9fTlJfc3ltbGlua2F0CTMzMQo+ICsjZGVmaW5lIF9fTlJfcmVhZGxp
bmthdAkzMzIKPiArI2RlZmluZSBfX05SX2ZjaG1vZGF0CTMzMwo+ICsjZGVmaW5lIF9fTlJfZmFj
Y2Vzc2F0CTMzNAo+ICsjZGVmaW5lIF9fTlJfcHNlbGVjdDYJMzM1Cj4gKyNkZWZpbmUgX19OUl9w
cG9sbAkzMzYKPiArI2RlZmluZSBfX05SX3Vuc2hhcmUJMzM3Cj4gKyNkZWZpbmUgX19OUl9zZXRf
cm9idXN0X2xpc3QJMzM4Cj4gKyNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QJMzM5Cj4gKyNk
ZWZpbmUgX19OUl9zcGxpY2UJMzQwCj4gKyNkZWZpbmUgX19OUl9zeW5jX2ZpbGVfcmFuZ2UyCTM0
MQo+ICsjZGVmaW5lIF9fTlJfYXJtX3N5bmNfZmlsZV9yYW5nZQkzNDEKPiArI2RlZmluZSBfX05S
X3RlZQkzNDIKPiArI2RlZmluZSBfX05SX3Ztc3BsaWNlCTM0Mwo+ICsjZGVmaW5lIF9fTlJfbW92
ZV9wYWdlcwkzNDQKPiArI2RlZmluZSBfX05SX2dldGNwdQkzNDUKPiArI2RlZmluZSBfX05SX2Vw
b2xsX3B3YWl0CTM0Ngo+ICsjZGVmaW5lIF9fTlJfa2V4ZWNfbG9hZAkzNDcKPiArI2RlZmluZSBf
X05SX3V0aW1lbnNhdAkzNDgKPiArI2RlZmluZSBfX05SX3NpZ25hbGZkCTM0OQo+ICsjZGVmaW5l
IF9fTlJfdGltZXJmZF9jcmVhdGUJMzUwCj4gKyNkZWZpbmUgX19OUl9ldmVudGZkCTM1MQo+ICsj
ZGVmaW5lIF9fTlJfZmFsbG9jYXRlCTM1Mgo+ICsjZGVmaW5lIF9fTlJfdGltZXJmZF9zZXR0aW1l
CTM1Mwo+ICsjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lCTM1NAo+ICsjZGVmaW5lIF9fTlJf
c2lnbmFsZmQ0CTM1NQo+ICsjZGVmaW5lIF9fTlJfZXZlbnRmZDIJMzU2Cj4gKyNkZWZpbmUgX19O
Ul9lcG9sbF9jcmVhdGUxCTM1Nwo+ICsjZGVmaW5lIF9fTlJfZHVwMwkzNTgKPiArI2RlZmluZSBf
X05SX3BpcGUyCTM1OQo+ICsjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0MQkzNjAKPiArI2RlZmlu
ZSBfX05SX3ByZWFkdgkzNjEKPiArI2RlZmluZSBfX05SX3B3cml0ZXYJMzYyCj4gKyNkZWZpbmUg
X19OUl9ydF90Z3NpZ3F1ZXVlaW5mbwkzNjMKPiArI2RlZmluZSBfX05SX3BlcmZfZXZlbnRfb3Bl
bgkzNjQKPiArI2RlZmluZSBfX05SX3JlY3ZtbXNnCTM2NQo+ICsjZGVmaW5lIF9fTlJfYWNjZXB0
NAkzNjYKPiArI2RlZmluZSBfX05SX2Zhbm90aWZ5X2luaXQJMzY3Cj4gKyNkZWZpbmUgX19OUl9m
YW5vdGlmeV9tYXJrCTM2OAo+ICsjZGVmaW5lIF9fTlJfcHJsaW1pdDY0CTM2OQo+ICsjZGVmaW5l
IF9fTlJfbmFtZV90b19oYW5kbGVfYXQJMzcwCj4gKyNkZWZpbmUgX19OUl9vcGVuX2J5X2hhbmRs
ZV9hdAkzNzEKPiArI2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWUJMzcyCj4gKyNkZWZpbmUgX19O
Ul9zeW5jZnMJMzczCj4gKyNkZWZpbmUgX19OUl9zZW5kbW1zZwkzNzQKPiArI2RlZmluZSBfX05S
X3NldG5zCTM3NQo+ICsjZGVmaW5lIF9fTlJfcHJvY2Vzc192bV9yZWFkdgkzNzYKPiArI2RlZmlu
ZSBfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2CTM3Nwo+ICsjZGVmaW5lIF9fTlJfa2NtcAkJMzc4Cj4g
KyNkZWZpbmUgX19OUl9maW5pdF9tb2R1bGUJMzc5Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRh
dHRyCTM4MAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YXR0cgkzODEKPiArI2RlZmluZSBfX05S
X3JlbmFtZWF0MgkzODIKPiArI2RlZmluZSBfX05SX3NlY2NvbXAJMzgzCj4gKyNkZWZpbmUgX19O
Ul9nZXRyYW5kb20JMzg0Cj4gKyNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUJMzg1Cj4gKyNkZWZp
bmUgX19OUl9icGYJMzg2Cj4gKyNkZWZpbmUgX19OUl9leGVjdmVhdAkzODcKPiArI2RlZmluZSBf
X05SX3VzZXJmYXVsdGZkCTM4OAo+ICsjZGVmaW5lIF9fTlJfbWVtYmFycmllcgkJMzg5Cj4gKyNk
ZWZpbmUgX19OUl9tbG9jazIJCTM5MAo+ICsjZGVmaW5lIF9fTlJfY29weV9maWxlX3JhbmdlCTM5
MQo+ICsjZGVmaW5lIF9fTlJfcHJlYWR2MgkzOTIKPiArI2RlZmluZSBfX05SX3B3cml0ZXYyCTM5
Mwo+ICsjZGVmaW5lIF9fTlJfcGtleV9tcHJvdGVjdAkzOTQKPiArI2RlZmluZSBfX05SX3BrZXlf
YWxsb2MJMzk1Cj4gKyNkZWZpbmUgX19OUl9wa2V5X2ZyZWUJMzk2Cj4gKyNkZWZpbmUgX19OUl9z
dGF0eAkzOTcKPiArI2RlZmluZSBfX05SX3JzZXEJMzk4Cj4gKwo+ICsjZGVmaW5lIF9fQVJNX05S
X2JyZWFrcG9pbnQJMHgwZjAwMDEKPiArI2RlZmluZSBfX0FSTV9OUl9jYWNoZWZsdXNoCTB4MGYw
MDAyCj4gKyNkZWZpbmUgX19BUk1fTlJfdXNyMjYJCTB4MGYwMDAzCj4gKyNkZWZpbmUgX19BUk1f
TlJfdXNyMzIJCTB4MGYwMDA0Cj4gKyNkZWZpbmUgX19BUk1fTlJfc2V0X3RscwkweDBmMDAwNQo+
ICsjZGVmaW5lIF9fQVJNX05SX2dldF90bHMJMHgwZjAwMDYKPiArCj4gZGlmZiAtLWdpdCBhL2xp
Yi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxsLmguaW4gYi9saWIvc3lzY2FsbF9zaGlt
L2FyY2gvYXJtNjQvc3lzY2FsbC5oLmluCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwMC4uNDdhOTY5YmMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3N5c2NhbGxfc2hp
bS9hcmNoL2FybTY0L3N5c2NhbGwuaC5pbgo+IEBAIC0wLDAgKzEsMjc4IEBACj4gKyNkZWZpbmUg
X19OUl9pb19zZXR1cCAwCj4gKyNkZWZpbmUgX19OUl9pb19kZXN0cm95IDEKPiArI2RlZmluZSBf
X05SX2lvX3N1Ym1pdCAyCj4gKyNkZWZpbmUgX19OUl9pb19jYW5jZWwgMwo+ICsjZGVmaW5lIF9f
TlJfaW9fZ2V0ZXZlbnRzIDQKPiArI2RlZmluZSBfX05SX3NldHhhdHRyIDUKPiArI2RlZmluZSBf
X05SX2xzZXR4YXR0ciA2Cj4gKyNkZWZpbmUgX19OUl9mc2V0eGF0dHIgNwo+ICsjZGVmaW5lIF9f
TlJfZ2V0eGF0dHIgOAo+ICsjZGVmaW5lIF9fTlJfbGdldHhhdHRyIDkKPiArI2RlZmluZSBfX05S
X2ZnZXR4YXR0ciAxMAo+ICsjZGVmaW5lIF9fTlJfbGlzdHhhdHRyIDExCj4gKyNkZWZpbmUgX19O
Ul9sbGlzdHhhdHRyIDEyCj4gKyNkZWZpbmUgX19OUl9mbGlzdHhhdHRyIDEzCj4gKyNkZWZpbmUg
X19OUl9yZW1vdmV4YXR0ciAxNAo+ICsjZGVmaW5lIF9fTlJfbHJlbW92ZXhhdHRyIDE1Cj4gKyNk
ZWZpbmUgX19OUl9mcmVtb3ZleGF0dHIgMTYKPiArI2RlZmluZSBfX05SX2dldGN3ZCAxNwo+ICsj
ZGVmaW5lIF9fTlJfbG9va3VwX2Rjb29raWUgMTgKPiArI2RlZmluZSBfX05SX2V2ZW50ZmQyIDE5
Cj4gKyNkZWZpbmUgX19OUl9lcG9sbF9jcmVhdGUxIDIwCj4gKyNkZWZpbmUgX19OUl9lcG9sbF9j
dGwgMjEKPiArI2RlZmluZSBfX05SX2Vwb2xsX3B3YWl0IDIyCj4gKyNkZWZpbmUgX19OUl9kdXAg
MjMKPiArI2RlZmluZSBfX05SX2R1cDMgMjQKPiArI2RlZmluZSBfX05SX2ZjbnRsIDI1Cj4gKyNk
ZWZpbmUgX19OUl9pbm90aWZ5X2luaXQxIDI2Cj4gKyNkZWZpbmUgX19OUl9pbm90aWZ5X2FkZF93
YXRjaCAyNwo+ICsjZGVmaW5lIF9fTlJfaW5vdGlmeV9ybV93YXRjaCAyOAo+ICsjZGVmaW5lIF9f
TlJfaW9jdGwgMjkKPiArI2RlZmluZSBfX05SX2lvcHJpb19zZXQgMzAKPiArI2RlZmluZSBfX05S
X2lvcHJpb19nZXQgMzEKPiArI2RlZmluZSBfX05SX2Zsb2NrIDMyCj4gKyNkZWZpbmUgX19OUl9t
a25vZGF0IDMzCj4gKyNkZWZpbmUgX19OUl9ta2RpcmF0IDM0Cj4gKyNkZWZpbmUgX19OUl91bmxp
bmthdCAzNQo+ICsjZGVmaW5lIF9fTlJfc3ltbGlua2F0IDM2Cj4gKyNkZWZpbmUgX19OUl9saW5r
YXQgMzcKPiArI2RlZmluZSBfX05SX3JlbmFtZWF0IDM4Cj4gKyNkZWZpbmUgX19OUl91bW91bnQy
IDM5Cj4gKyNkZWZpbmUgX19OUl9tb3VudCA0MAo+ICsjZGVmaW5lIF9fTlJfcGl2b3Rfcm9vdCA0
MQo+ICsjZGVmaW5lIF9fTlJfbmZzc2VydmN0bCA0Mgo+ICsjZGVmaW5lIF9fTlJfc3RhdGZzIDQz
Cj4gKyNkZWZpbmUgX19OUl9mc3RhdGZzIDQ0Cj4gKyNkZWZpbmUgX19OUl90cnVuY2F0ZSA0NQo+
ICsjZGVmaW5lIF9fTlJfZnRydW5jYXRlIDQ2Cj4gKyNkZWZpbmUgX19OUl9mYWxsb2NhdGUgNDcK
PiArI2RlZmluZSBfX05SX2ZhY2Nlc3NhdCA0OAo+ICsjZGVmaW5lIF9fTlJfY2hkaXIgNDkKPiAr
I2RlZmluZSBfX05SX2ZjaGRpciA1MAo+ICsjZGVmaW5lIF9fTlJfY2hyb290IDUxCj4gKyNkZWZp
bmUgX19OUl9mY2htb2QgNTIKPiArI2RlZmluZSBfX05SX2ZjaG1vZGF0IDUzCj4gKyNkZWZpbmUg
X19OUl9mY2hvd25hdCA1NAo+ICsjZGVmaW5lIF9fTlJfZmNob3duIDU1Cj4gKyNkZWZpbmUgX19O
Ul9vcGVuYXQgNTYKPiArI2RlZmluZSBfX05SX2Nsb3NlIDU3Cj4gKyNkZWZpbmUgX19OUl92aGFu
Z3VwIDU4Cj4gKyNkZWZpbmUgX19OUl9waXBlMiA1OQo+ICsjZGVmaW5lIF9fTlJfcXVvdGFjdGwg
NjAKPiArI2RlZmluZSBfX05SX2dldGRlbnRzNjQgNjEKPiArI2RlZmluZSBfX05SX2xzZWVrIDYy
Cj4gKyNkZWZpbmUgX19OUl9yZWFkIDYzCj4gKyNkZWZpbmUgX19OUl93cml0ZSA2NAo+ICsjZGVm
aW5lIF9fTlJfcmVhZHYgNjUKPiArI2RlZmluZSBfX05SX3dyaXRldiA2Ngo+ICsjZGVmaW5lIF9f
TlJfcHJlYWQ2NCA2Nwo+ICsjZGVmaW5lIF9fTlJfcHdyaXRlNjQgNjgKPiArI2RlZmluZSBfX05S
X3ByZWFkdiA2OQo+ICsjZGVmaW5lIF9fTlJfcHdyaXRldiA3MAo+ICsjZGVmaW5lIF9fTlJfc2Vu
ZGZpbGUgNzEKPiArI2RlZmluZSBfX05SX3BzZWxlY3Q2IDcyCj4gKyNkZWZpbmUgX19OUl9wcG9s
bCA3Mwo+ICsjZGVmaW5lIF9fTlJfc2lnbmFsZmQ0IDc0Cj4gKyNkZWZpbmUgX19OUl92bXNwbGlj
ZSA3NQo+ICsjZGVmaW5lIF9fTlJfc3BsaWNlIDc2Cj4gKyNkZWZpbmUgX19OUl90ZWUgNzcKPiAr
I2RlZmluZSBfX05SX3JlYWRsaW5rYXQgNzgKPiArI2RlZmluZSBfX05SX25ld2ZzdGF0YXQgNzkK
PiArI2RlZmluZSBfX05SX2ZzdGF0IDgwCj4gKyNkZWZpbmUgX19OUl9zeW5jIDgxCj4gKyNkZWZp
bmUgX19OUl9mc3luYyA4Mgo+ICsjZGVmaW5lIF9fTlJfZmRhdGFzeW5jIDgzCj4gKyNkZWZpbmUg
X19OUl9zeW5jX2ZpbGVfcmFuZ2UgODQKPiArI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRlIDg1
Cj4gKyNkZWZpbmUgX19OUl90aW1lcmZkX3NldHRpbWUgODYKPiArI2RlZmluZSBfX05SX3RpbWVy
ZmRfZ2V0dGltZSA4Nwo+ICsjZGVmaW5lIF9fTlJfdXRpbWVuc2F0IDg4Cj4gKyNkZWZpbmUgX19O
Ul9hY2N0IDg5Cj4gKyNkZWZpbmUgX19OUl9jYXBnZXQgOTAKPiArI2RlZmluZSBfX05SX2NhcHNl
dCA5MQo+ICsjZGVmaW5lIF9fTlJfcGVyc29uYWxpdHkgOTIKPiArI2RlZmluZSBfX05SX2V4aXQg
OTMKPiArI2RlZmluZSBfX05SX2V4aXRfZ3JvdXAgOTQKPiArI2RlZmluZSBfX05SX3dhaXRpZCA5
NQo+ICsjZGVmaW5lIF9fTlJfc2V0X3RpZF9hZGRyZXNzIDk2Cj4gKyNkZWZpbmUgX19OUl91bnNo
YXJlIDk3Cj4gKyNkZWZpbmUgX19OUl9mdXRleCA5OAo+ICsjZGVmaW5lIF9fTlJfc2V0X3JvYnVz
dF9saXN0IDk5Cj4gKyNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QgMTAwCj4gKyNkZWZpbmUg
X19OUl9uYW5vc2xlZXAgMTAxCj4gKyNkZWZpbmUgX19OUl9nZXRpdGltZXIgMTAyCj4gKyNkZWZp
bmUgX19OUl9zZXRpdGltZXIgMTAzCj4gKyNkZWZpbmUgX19OUl9rZXhlY19sb2FkIDEwNAo+ICsj
ZGVmaW5lIF9fTlJfaW5pdF9tb2R1bGUgMTA1Cj4gKyNkZWZpbmUgX19OUl9kZWxldGVfbW9kdWxl
IDEwNgo+ICsjZGVmaW5lIF9fTlJfdGltZXJfY3JlYXRlIDEwNwo+ICsjZGVmaW5lIF9fTlJfdGlt
ZXJfZ2V0dGltZSAxMDgKPiArI2RlZmluZSBfX05SX3RpbWVyX2dldG92ZXJydW4gMTA5Cj4gKyNk
ZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lIDExMAo+ICsjZGVmaW5lIF9fTlJfdGltZXJfZGVsZXRl
IDExMQo+ICsjZGVmaW5lIF9fTlJfY2xvY2tfc2V0dGltZSAxMTIKPiArI2RlZmluZSBfX05SX2Ns
b2NrX2dldHRpbWUgMTEzCj4gKyNkZWZpbmUgX19OUl9jbG9ja19nZXRyZXMgMTE0Cj4gKyNkZWZp
bmUgX19OUl9jbG9ja19uYW5vc2xlZXAgMTE1Cj4gKyNkZWZpbmUgX19OUl9zeXNsb2cgMTE2Cj4g
KyNkZWZpbmUgX19OUl9wdHJhY2UgMTE3Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRwYXJhbSAx
MTgKPiArI2RlZmluZSBfX05SX3NjaGVkX3NldHNjaGVkdWxlciAxMTkKPiArI2RlZmluZSBfX05S
X3NjaGVkX2dldHNjaGVkdWxlciAxMjAKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldHBhcmFtIDEy
MQo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfc2V0YWZmaW5pdHkgMTIyCj4gKyNkZWZpbmUgX19OUl9z
Y2hlZF9nZXRhZmZpbml0eSAxMjMKPiArI2RlZmluZSBfX05SX3NjaGVkX3lpZWxkIDEyNAo+ICsj
ZGVmaW5lIF9fTlJfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCAxMjUKPiArI2RlZmluZSBfX05SX3Nj
aGVkX2dldF9wcmlvcml0eV9taW4gMTI2Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9ycl9nZXRfaW50
ZXJ2YWwgMTI3Cj4gKyNkZWZpbmUgX19OUl9yZXN0YXJ0X3N5c2NhbGwgMTI4Cj4gKyNkZWZpbmUg
X19OUl9raWxsIDEyOQo+ICsjZGVmaW5lIF9fTlJfdGtpbGwgMTMwCj4gKyNkZWZpbmUgX19OUl90
Z2tpbGwgMTMxCj4gKyNkZWZpbmUgX19OUl9zaWdhbHRzdGFjayAxMzIKPiArI2RlZmluZSBfX05S
X3J0X3NpZ3N1c3BlbmQgMTMzCj4gKyNkZWZpbmUgX19OUl9ydF9zaWdhY3Rpb24gMTM0Cj4gKyNk
ZWZpbmUgX19OUl9ydF9zaWdwcm9jbWFzayAxMzUKPiArI2RlZmluZSBfX05SX3J0X3NpZ3BlbmRp
bmcgMTM2Cj4gKyNkZWZpbmUgX19OUl9ydF9zaWd0aW1lZHdhaXQgMTM3Cj4gKyNkZWZpbmUgX19O
Ul9ydF9zaWdxdWV1ZWluZm8gMTM4Cj4gKyNkZWZpbmUgX19OUl9ydF9zaWdyZXR1cm4gMTM5Cj4g
KyNkZWZpbmUgX19OUl9zZXRwcmlvcml0eSAxNDAKPiArI2RlZmluZSBfX05SX2dldHByaW9yaXR5
IDE0MQo+ICsjZGVmaW5lIF9fTlJfcmVib290IDE0Mgo+ICsjZGVmaW5lIF9fTlJfc2V0cmVnaWQg
MTQzCj4gKyNkZWZpbmUgX19OUl9zZXRnaWQgMTQ0Cj4gKyNkZWZpbmUgX19OUl9zZXRyZXVpZCAx
NDUKPiArI2RlZmluZSBfX05SX3NldHVpZCAxNDYKPiArI2RlZmluZSBfX05SX3NldHJlc3VpZCAx
NDcKPiArI2RlZmluZSBfX05SX2dldHJlc3VpZCAxNDgKPiArI2RlZmluZSBfX05SX3NldHJlc2dp
ZCAxNDkKPiArI2RlZmluZSBfX05SX2dldHJlc2dpZCAxNTAKPiArI2RlZmluZSBfX05SX3NldGZz
dWlkIDE1MQo+ICsjZGVmaW5lIF9fTlJfc2V0ZnNnaWQgMTUyCj4gKyNkZWZpbmUgX19OUl90aW1l
cyAxNTMKPiArI2RlZmluZSBfX05SX3NldHBnaWQgMTU0Cj4gKyNkZWZpbmUgX19OUl9nZXRwZ2lk
IDE1NQo+ICsjZGVmaW5lIF9fTlJfZ2V0c2lkIDE1Ngo+ICsjZGVmaW5lIF9fTlJfc2V0c2lkIDE1
Nwo+ICsjZGVmaW5lIF9fTlJfZ2V0Z3JvdXBzIDE1OAo+ICsjZGVmaW5lIF9fTlJfc2V0Z3JvdXBz
IDE1OQo+ICsjZGVmaW5lIF9fTlJfdW5hbWUgMTYwCj4gKyNkZWZpbmUgX19OUl9zZXRob3N0bmFt
ZSAxNjEKPiArI2RlZmluZSBfX05SX3NldGRvbWFpbm5hbWUgMTYyCj4gKyNkZWZpbmUgX19OUl9n
ZXRybGltaXQgMTYzCj4gKyNkZWZpbmUgX19OUl9zZXRybGltaXQgMTY0Cj4gKyNkZWZpbmUgX19O
Ul9nZXRydXNhZ2UgMTY1Cj4gKyNkZWZpbmUgX19OUl91bWFzayAxNjYKPiArI2RlZmluZSBfX05S
X3ByY3RsIDE2Nwo+ICsjZGVmaW5lIF9fTlJfZ2V0Y3B1IDE2OAo+ICsjZGVmaW5lIF9fTlJfZ2V0
dGltZW9mZGF5IDE2OQo+ICsjZGVmaW5lIF9fTlJfc2V0dGltZW9mZGF5IDE3MAo+ICsjZGVmaW5l
IF9fTlJfYWRqdGltZXggMTcxCj4gKyNkZWZpbmUgX19OUl9nZXRwaWQgMTcyCj4gKyNkZWZpbmUg
X19OUl9nZXRwcGlkIDE3Mwo+ICsjZGVmaW5lIF9fTlJfZ2V0dWlkIDE3NAo+ICsjZGVmaW5lIF9f
TlJfZ2V0ZXVpZCAxNzUKPiArI2RlZmluZSBfX05SX2dldGdpZCAxNzYKPiArI2RlZmluZSBfX05S
X2dldGVnaWQgMTc3Cj4gKyNkZWZpbmUgX19OUl9nZXR0aWQgMTc4Cj4gKyNkZWZpbmUgX19OUl9z
eXNpbmZvIDE3OQo+ICsjZGVmaW5lIF9fTlJfbXFfb3BlbiAxODAKPiArI2RlZmluZSBfX05SX21x
X3VubGluayAxODEKPiArI2RlZmluZSBfX05SX21xX3RpbWVkc2VuZCAxODIKPiArI2RlZmluZSBf
X05SX21xX3RpbWVkcmVjZWl2ZSAxODMKPiArI2RlZmluZSBfX05SX21xX25vdGlmeSAxODQKPiAr
I2RlZmluZSBfX05SX21xX2dldHNldGF0dHIgMTg1Cj4gKyNkZWZpbmUgX19OUl9tc2dnZXQgMTg2
Cj4gKyNkZWZpbmUgX19OUl9tc2djdGwgMTg3Cj4gKyNkZWZpbmUgX19OUl9tc2dyY3YgMTg4Cj4g
KyNkZWZpbmUgX19OUl9tc2dzbmQgMTg5Cj4gKyNkZWZpbmUgX19OUl9zZW1nZXQgMTkwCj4gKyNk
ZWZpbmUgX19OUl9zZW1jdGwgMTkxCj4gKyNkZWZpbmUgX19OUl9zZW10aW1lZG9wIDE5Mgo+ICsj
ZGVmaW5lIF9fTlJfc2Vtb3AgMTkzCj4gKyNkZWZpbmUgX19OUl9zaG1nZXQgMTk0Cj4gKyNkZWZp
bmUgX19OUl9zaG1jdGwgMTk1Cj4gKyNkZWZpbmUgX19OUl9zaG1hdCAxOTYKPiArI2RlZmluZSBf
X05SX3NobWR0IDE5Nwo+ICsjZGVmaW5lIF9fTlJfc29ja2V0IDE5OAo+ICsjZGVmaW5lIF9fTlJf
c29ja2V0cGFpciAxOTkKPiArI2RlZmluZSBfX05SX2JpbmQgMjAwCj4gKyNkZWZpbmUgX19OUl9s
aXN0ZW4gMjAxCj4gKyNkZWZpbmUgX19OUl9hY2NlcHQgMjAyCj4gKyNkZWZpbmUgX19OUl9jb25u
ZWN0IDIwMwo+ICsjZGVmaW5lIF9fTlJfZ2V0c29ja25hbWUgMjA0Cj4gKyNkZWZpbmUgX19OUl9n
ZXRwZWVybmFtZSAyMDUKPiArI2RlZmluZSBfX05SX3NlbmR0byAyMDYKPiArI2RlZmluZSBfX05S
X3JlY3Zmcm9tIDIwNwo+ICsjZGVmaW5lIF9fTlJfc2V0c29ja29wdCAyMDgKPiArI2RlZmluZSBf
X05SX2dldHNvY2tvcHQgMjA5Cj4gKyNkZWZpbmUgX19OUl9zaHV0ZG93biAyMTAKPiArI2RlZmlu
ZSBfX05SX3NlbmRtc2cgMjExCj4gKyNkZWZpbmUgX19OUl9yZWN2bXNnIDIxMgo+ICsjZGVmaW5l
IF9fTlJfcmVhZGFoZWFkIDIxMwo+ICsjZGVmaW5lIF9fTlJfYnJrIDIxNAo+ICsjZGVmaW5lIF9f
TlJfbXVubWFwIDIxNQo+ICsjZGVmaW5lIF9fTlJfbXJlbWFwIDIxNgo+ICsjZGVmaW5lIF9fTlJf
YWRkX2tleSAyMTcKPiArI2RlZmluZSBfX05SX3JlcXVlc3Rfa2V5IDIxOAo+ICsjZGVmaW5lIF9f
TlJfa2V5Y3RsIDIxOQo+ICsjZGVmaW5lIF9fTlJfY2xvbmUgMjIwCj4gKyNkZWZpbmUgX19OUl9l
eGVjdmUgMjIxCj4gKyNkZWZpbmUgX19OUl9tbWFwIDIyMgo+ICsjZGVmaW5lIF9fTlJfZmFkdmlz
ZTY0IDIyMwo+ICsjZGVmaW5lIF9fTlJfc3dhcG9uIDIyNAo+ICsjZGVmaW5lIF9fTlJfc3dhcG9m
ZiAyMjUKPiArI2RlZmluZSBfX05SX21wcm90ZWN0IDIyNgo+ICsjZGVmaW5lIF9fTlJfbXN5bmMg
MjI3Cj4gKyNkZWZpbmUgX19OUl9tbG9jayAyMjgKPiArI2RlZmluZSBfX05SX211bmxvY2sgMjI5
Cj4gKyNkZWZpbmUgX19OUl9tbG9ja2FsbCAyMzAKPiArI2RlZmluZSBfX05SX211bmxvY2thbGwg
MjMxCj4gKyNkZWZpbmUgX19OUl9taW5jb3JlIDIzMgo+ICsjZGVmaW5lIF9fTlJfbWFkdmlzZSAy
MzMKPiArI2RlZmluZSBfX05SX3JlbWFwX2ZpbGVfcGFnZXMgMjM0Cj4gKyNkZWZpbmUgX19OUl9t
YmluZCAyMzUKPiArI2RlZmluZSBfX05SX2dldF9tZW1wb2xpY3kgMjM2Cj4gKyNkZWZpbmUgX19O
Ul9zZXRfbWVtcG9saWN5IDIzNwo+ICsjZGVmaW5lIF9fTlJfbWlncmF0ZV9wYWdlcyAyMzgKPiAr
I2RlZmluZSBfX05SX21vdmVfcGFnZXMgMjM5Cj4gKyNkZWZpbmUgX19OUl9ydF90Z3NpZ3F1ZXVl
aW5mbyAyNDAKPiArI2RlZmluZSBfX05SX3BlcmZfZXZlbnRfb3BlbiAyNDEKPiArI2RlZmluZSBf
X05SX2FjY2VwdDQgMjQyCj4gKyNkZWZpbmUgX19OUl9yZWN2bW1zZyAyNDMKPiArI2RlZmluZSBf
X05SX3dhaXQ0IDI2MAo+ICsjZGVmaW5lIF9fTlJfcHJsaW1pdDY0IDI2MQo+ICsjZGVmaW5lIF9f
TlJfZmFub3RpZnlfaW5pdCAyNjIKPiArI2RlZmluZSBfX05SX2Zhbm90aWZ5X21hcmsgMjYzCj4g
KyNkZWZpbmUgX19OUl9uYW1lX3RvX2hhbmRsZV9hdCAyNjQKPiArI2RlZmluZSBfX05SX29wZW5f
YnlfaGFuZGxlX2F0IDI2NQo+ICsjZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZSAyNjYKPiArI2Rl
ZmluZSBfX05SX3N5bmNmcyAyNjcKPiArI2RlZmluZSBfX05SX3NldG5zIDI2OAo+ICsjZGVmaW5l
IF9fTlJfc2VuZG1tc2cgMjY5Cj4gKyNkZWZpbmUgX19OUl9wcm9jZXNzX3ZtX3JlYWR2IDI3MAo+
ICsjZGVmaW5lIF9fTlJfcHJvY2Vzc192bV93cml0ZXYgMjcxCj4gKyNkZWZpbmUgX19OUl9rY21w
IDI3Mgo+ICsjZGVmaW5lIF9fTlJfZmluaXRfbW9kdWxlIDI3Mwo+ICsjZGVmaW5lIF9fTlJfc2No
ZWRfc2V0YXR0ciAyNzQKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldGF0dHIgMjc1Cj4gKyNkZWZp
bmUgX19OUl9yZW5hbWVhdDIgMjc2Cj4gKyNkZWZpbmUgX19OUl9zZWNjb21wIDI3Nwo+ICsjZGVm
aW5lIF9fTlJfZ2V0cmFuZG9tIDI3OAo+ICsjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDI3OQo+
ICsjZGVmaW5lIF9fTlJfYnBmIDI4MAo+ICsjZGVmaW5lIF9fTlJfZXhlY3ZlYXQgMjgxCj4gKyNk
ZWZpbmUgX19OUl91c2VyZmF1bHRmZCAyODIKPiArI2RlZmluZSBfX05SX21lbWJhcnJpZXIgMjgz
Cj4gKyNkZWZpbmUgX19OUl9tbG9jazIgMjg0Cj4gKyNkZWZpbmUgX19OUl9jb3B5X2ZpbGVfcmFu
Z2UgMjg1Cj4gKyNkZWZpbmUgX19OUl9wcmVhZHYyIDI4Ngo+ICsjZGVmaW5lIF9fTlJfcHdyaXRl
djIgMjg3Cj4gKyNkZWZpbmUgX19OUl9wa2V5X21wcm90ZWN0IDI4OAo+ICsjZGVmaW5lIF9fTlJf
cGtleV9hbGxvYyAyODkKPiArI2RlZmluZSBfX05SX3BrZXlfZnJlZSAyOTAKPiArI2RlZmluZSBf
X05SX3N0YXR4IDI5MQo+ICsjZGVmaW5lIF9fTlJfaW9fcGdldGV2ZW50cyAyOTIKPiArCj4gZGlm
ZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC94ODZfNjQvc3lzY2FsbC5oLmluIGIvbGli
L3N5c2NhbGxfc2hpbS9hcmNoL3g4Nl82NC9zeXNjYWxsLmguaW4KPiBuZXcgZmlsZSBtb2RlIDEw
MDY0NAo+IGluZGV4IDAwMDAwMDAwLi45Y2RiNzc4OQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s
aWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwuaC5pbgo+IEBAIC0wLDAgKzEsMzM2
IEBACj4gKyNkZWZpbmUgX19OUl9yZWFkCQkJCTAKPiArI2RlZmluZSBfX05SX3dyaXRlCQkJCTEK
PiArI2RlZmluZSBfX05SX29wZW4JCQkJMgo+ICsjZGVmaW5lIF9fTlJfY2xvc2UJCQkJMwo+ICsj
ZGVmaW5lIF9fTlJfc3RhdAkJCQk0Cj4gKyNkZWZpbmUgX19OUl9mc3RhdAkJCQk1Cj4gKyNkZWZp
bmUgX19OUl9sc3RhdAkJCQk2Cj4gKyNkZWZpbmUgX19OUl9wb2xsCQkJCTcKPiArI2RlZmluZSBf
X05SX2xzZWVrCQkJCTgKPiArI2RlZmluZSBfX05SX21tYXAJCQkJOQo+ICsjZGVmaW5lIF9fTlJf
bXByb3RlY3QJCQkxMAo+ICsjZGVmaW5lIF9fTlJfbXVubWFwCQkJCTExCj4gKyNkZWZpbmUgX19O
Ul9icmsJCQkJMTIKPiArI2RlZmluZSBfX05SX3J0X3NpZ2FjdGlvbgkJMTMKPiArI2RlZmluZSBf
X05SX3J0X3NpZ3Byb2NtYXNrCQkxNAo+ICsjZGVmaW5lIF9fTlJfcnRfc2lncmV0dXJuCQkxNQo+
ICsjZGVmaW5lIF9fTlJfaW9jdGwJCQkJMTYKPiArI2RlZmluZSBfX05SX3ByZWFkNjQJCQkxNwo+
ICsjZGVmaW5lIF9fTlJfcHdyaXRlNjQJCQkxOAo+ICsjZGVmaW5lIF9fTlJfcmVhZHYJCQkJMTkK
PiArI2RlZmluZSBfX05SX3dyaXRldgkJCQkyMAo+ICsjZGVmaW5lIF9fTlJfYWNjZXNzCQkJCTIx
Cj4gKyNkZWZpbmUgX19OUl9waXBlCQkJCTIyCj4gKyNkZWZpbmUgX19OUl9zZWxlY3QJCQkJMjMK
PiArI2RlZmluZSBfX05SX3NjaGVkX3lpZWxkCQkyNAo+ICsjZGVmaW5lIF9fTlJfbXJlbWFwCQkJ
CTI1Cj4gKyNkZWZpbmUgX19OUl9tc3luYwkJCQkyNgo+ICsjZGVmaW5lIF9fTlJfbWluY29yZQkJ
CTI3Cj4gKyNkZWZpbmUgX19OUl9tYWR2aXNlCQkJMjgKPiArI2RlZmluZSBfX05SX3NobWdldAkJ
CQkyOQo+ICsjZGVmaW5lIF9fTlJfc2htYXQJCQkJMzAKPiArI2RlZmluZSBfX05SX3NobWN0bAkJ
CQkzMQo+ICsjZGVmaW5lIF9fTlJfZHVwCQkJCTMyCj4gKyNkZWZpbmUgX19OUl9kdXAyCQkJCTMz
Cj4gKyNkZWZpbmUgX19OUl9wYXVzZQkJCQkzNAo+ICsjZGVmaW5lIF9fTlJfbmFub3NsZWVwCQkJ
MzUKPiArI2RlZmluZSBfX05SX2dldGl0aW1lcgkJCTM2Cj4gKyNkZWZpbmUgX19OUl9hbGFybQkJ
CQkzNwo+ICsjZGVmaW5lIF9fTlJfc2V0aXRpbWVyCQkJMzgKPiArI2RlZmluZSBfX05SX2dldHBp
ZAkJCQkzOQo+ICsjZGVmaW5lIF9fTlJfc2VuZGZpbGUJCQk0MAo+ICsjZGVmaW5lIF9fTlJfc29j
a2V0CQkJCTQxCj4gKyNkZWZpbmUgX19OUl9jb25uZWN0CQkJNDIKPiArI2RlZmluZSBfX05SX2Fj
Y2VwdAkJCQk0Mwo+ICsjZGVmaW5lIF9fTlJfc2VuZHRvCQkJCTQ0Cj4gKyNkZWZpbmUgX19OUl9y
ZWN2ZnJvbQkJCTQ1Cj4gKyNkZWZpbmUgX19OUl9zZW5kbXNnCQkJNDYKPiArI2RlZmluZSBfX05S
X3JlY3Ztc2cJCQk0Nwo+ICsjZGVmaW5lIF9fTlJfc2h1dGRvd24JCQk0OAo+ICsjZGVmaW5lIF9f
TlJfYmluZAkJCQk0OQo+ICsjZGVmaW5lIF9fTlJfbGlzdGVuCQkJCTUwCj4gKyNkZWZpbmUgX19O
Ul9nZXRzb2NrbmFtZQkJNTEKPiArI2RlZmluZSBfX05SX2dldHBlZXJuYW1lCQk1Mgo+ICsjZGVm
aW5lIF9fTlJfc29ja2V0cGFpcgkJCTUzCj4gKyNkZWZpbmUgX19OUl9zZXRzb2Nrb3B0CQkJNTQK
PiArI2RlZmluZSBfX05SX2dldHNvY2tvcHQJCQk1NQo+ICsjZGVmaW5lIF9fTlJfY2xvbmUJCQkJ
NTYKPiArI2RlZmluZSBfX05SX2ZvcmsJCQkJNTcKPiArI2RlZmluZSBfX05SX3Zmb3JrCQkJCTU4
Cj4gKyNkZWZpbmUgX19OUl9leGVjdmUJCQkJNTkKPiArI2RlZmluZSBfX05SX2V4aXQJCQkJNjAK
PiArI2RlZmluZSBfX05SX3dhaXQ0CQkJCTYxCj4gKyNkZWZpbmUgX19OUl9raWxsCQkJCTYyCj4g
KyNkZWZpbmUgX19OUl91bmFtZQkJCQk2Mwo+ICsjZGVmaW5lIF9fTlJfc2VtZ2V0CQkJCTY0Cj4g
KyNkZWZpbmUgX19OUl9zZW1vcAkJCQk2NQo+ICsjZGVmaW5lIF9fTlJfc2VtY3RsCQkJCTY2Cj4g
KyNkZWZpbmUgX19OUl9zaG1kdAkJCQk2Nwo+ICsjZGVmaW5lIF9fTlJfbXNnZ2V0CQkJCTY4Cj4g
KyNkZWZpbmUgX19OUl9tc2dzbmQJCQkJNjkKPiArI2RlZmluZSBfX05SX21zZ3JjdgkJCQk3MAo+
ICsjZGVmaW5lIF9fTlJfbXNnY3RsCQkJCTcxCj4gKyNkZWZpbmUgX19OUl9mY250bAkJCQk3Mgo+
ICsjZGVmaW5lIF9fTlJfZmxvY2sJCQkJNzMKPiArI2RlZmluZSBfX05SX2ZzeW5jCQkJCTc0Cj4g
KyNkZWZpbmUgX19OUl9mZGF0YXN5bmMJCQk3NQo+ICsjZGVmaW5lIF9fTlJfdHJ1bmNhdGUJCQk3
Ngo+ICsjZGVmaW5lIF9fTlJfZnRydW5jYXRlCQkJNzcKPiArI2RlZmluZSBfX05SX2dldGRlbnRz
CQkJNzgKPiArI2RlZmluZSBfX05SX2dldGN3ZAkJCQk3OQo+ICsjZGVmaW5lIF9fTlJfY2hkaXIJ
CQkJODAKPiArI2RlZmluZSBfX05SX2ZjaGRpcgkJCQk4MQo+ICsjZGVmaW5lIF9fTlJfcmVuYW1l
CQkJCTgyCj4gKyNkZWZpbmUgX19OUl9ta2RpcgkJCQk4Mwo+ICsjZGVmaW5lIF9fTlJfcm1kaXIJ
CQkJODQKPiArI2RlZmluZSBfX05SX2NyZWF0CQkJCTg1Cj4gKyNkZWZpbmUgX19OUl9saW5rCQkJ
CTg2Cj4gKyNkZWZpbmUgX19OUl91bmxpbmsJCQkJODcKPiArI2RlZmluZSBfX05SX3N5bWxpbmsJ
CQk4OAo+ICsjZGVmaW5lIF9fTlJfcmVhZGxpbmsJCQk4OQo+ICsjZGVmaW5lIF9fTlJfY2htb2QJ
CQkJOTAKPiArI2RlZmluZSBfX05SX2ZjaG1vZAkJCQk5MQo+ICsjZGVmaW5lIF9fTlJfY2hvd24J
CQkJOTIKPiArI2RlZmluZSBfX05SX2ZjaG93bgkJCQk5Mwo+ICsjZGVmaW5lIF9fTlJfbGNob3du
CQkJCTk0Cj4gKyNkZWZpbmUgX19OUl91bWFzawkJCQk5NQo+ICsjZGVmaW5lIF9fTlJfZ2V0dGlt
ZW9mZGF5CQk5Ngo+ICsjZGVmaW5lIF9fTlJfZ2V0cmxpbWl0CQkJOTcKPiArI2RlZmluZSBfX05S
X2dldHJ1c2FnZQkJCTk4Cj4gKyNkZWZpbmUgX19OUl9zeXNpbmZvCQkJOTkKPiArI2RlZmluZSBf
X05SX3RpbWVzCQkJCTEwMAo+ICsjZGVmaW5lIF9fTlJfcHRyYWNlCQkJCTEwMQo+ICsjZGVmaW5l
IF9fTlJfZ2V0dWlkCQkJCTEwMgo+ICsjZGVmaW5lIF9fTlJfc3lzbG9nCQkJCTEwMwo+ICsjZGVm
aW5lIF9fTlJfZ2V0Z2lkCQkJCTEwNAo+ICsjZGVmaW5lIF9fTlJfc2V0dWlkCQkJCTEwNQo+ICsj
ZGVmaW5lIF9fTlJfc2V0Z2lkCQkJCTEwNgo+ICsjZGVmaW5lIF9fTlJfZ2V0ZXVpZAkJCTEwNwo+
ICsjZGVmaW5lIF9fTlJfZ2V0ZWdpZAkJCTEwOAo+ICsjZGVmaW5lIF9fTlJfc2V0cGdpZAkJCTEw
OQo+ICsjZGVmaW5lIF9fTlJfZ2V0cHBpZAkJCTExMAo+ICsjZGVmaW5lIF9fTlJfZ2V0cGdycAkJ
CTExMQo+ICsjZGVmaW5lIF9fTlJfc2V0c2lkCQkJCTExMgo+ICsjZGVmaW5lIF9fTlJfc2V0cmV1
aWQJCQkxMTMKPiArI2RlZmluZSBfX05SX3NldHJlZ2lkCQkJMTE0Cj4gKyNkZWZpbmUgX19OUl9n
ZXRncm91cHMJCQkxMTUKPiArI2RlZmluZSBfX05SX3NldGdyb3VwcwkJCTExNgo+ICsjZGVmaW5l
IF9fTlJfc2V0cmVzdWlkCQkJMTE3Cj4gKyNkZWZpbmUgX19OUl9nZXRyZXN1aWQJCQkxMTgKPiAr
I2RlZmluZSBfX05SX3NldHJlc2dpZAkJCTExOQo+ICsjZGVmaW5lIF9fTlJfZ2V0cmVzZ2lkCQkJ
MTIwCj4gKyNkZWZpbmUgX19OUl9nZXRwZ2lkCQkJMTIxCj4gKyNkZWZpbmUgX19OUl9zZXRmc3Vp
ZAkJCTEyMgo+ICsjZGVmaW5lIF9fTlJfc2V0ZnNnaWQJCQkxMjMKPiArI2RlZmluZSBfX05SX2dl
dHNpZAkJCQkxMjQKPiArI2RlZmluZSBfX05SX2NhcGdldAkJCQkxMjUKPiArI2RlZmluZSBfX05S
X2NhcHNldAkJCQkxMjYKPiArI2RlZmluZSBfX05SX3J0X3NpZ3BlbmRpbmcJCTEyNwo+ICsjZGVm
aW5lIF9fTlJfcnRfc2lndGltZWR3YWl0CTEyOAo+ICsjZGVmaW5lIF9fTlJfcnRfc2lncXVldWVp
bmZvCTEyOQo+ICsjZGVmaW5lIF9fTlJfcnRfc2lnc3VzcGVuZAkJMTMwCj4gKyNkZWZpbmUgX19O
Ul9zaWdhbHRzdGFjawkJMTMxCj4gKyNkZWZpbmUgX19OUl91dGltZQkJCQkxMzIKPiArI2RlZmlu
ZSBfX05SX21rbm9kCQkJCTEzMwo+ICsjZGVmaW5lIF9fTlJfdXNlbGliCQkJCTEzNAo+ICsjZGVm
aW5lIF9fTlJfcGVyc29uYWxpdHkJCTEzNQo+ICsjZGVmaW5lIF9fTlJfdXN0YXQJCQkJMTM2Cj4g
KyNkZWZpbmUgX19OUl9zdGF0ZnMJCQkJMTM3Cj4gKyNkZWZpbmUgX19OUl9mc3RhdGZzCQkJMTM4
Cj4gKyNkZWZpbmUgX19OUl9zeXNmcwkJCQkxMzkKPiArI2RlZmluZSBfX05SX2dldHByaW9yaXR5
CQkJMTQwCj4gKyNkZWZpbmUgX19OUl9zZXRwcmlvcml0eQkJCTE0MQo+ICsjZGVmaW5lIF9fTlJf
c2NoZWRfc2V0cGFyYW0JCQkxNDIKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldHBhcmFtCQkJMTQz
Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRzY2hlZHVsZXIJCTE0NAo+ICsjZGVmaW5lIF9fTlJf
c2NoZWRfZ2V0c2NoZWR1bGVyCQkxNDUKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0
eV9tYXgJMTQ2Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJpb3JpdHlfbWluCTE0Nwo+ICsj
ZGVmaW5lIF9fTlJfc2NoZWRfcnJfZ2V0X2ludGVydmFsCTE0OAo+ICsjZGVmaW5lIF9fTlJfbWxv
Y2sJCQkJCTE0OQo+ICsjZGVmaW5lIF9fTlJfbXVubG9jawkJCQkxNTAKPiArI2RlZmluZSBfX05S
X21sb2NrYWxsCQkJCTE1MQo+ICsjZGVmaW5lIF9fTlJfbXVubG9ja2FsbAkJCQkxNTIKPiArI2Rl
ZmluZSBfX05SX3ZoYW5ndXAJCQkJMTUzCj4gKyNkZWZpbmUgX19OUl9tb2RpZnlfbGR0CQkJCTE1
NAo+ICsjZGVmaW5lIF9fTlJfcGl2b3Rfcm9vdAkJCQkxNTUKPiArI2RlZmluZSBfX05SX19zeXNj
dGwJCQkJMTU2Cj4gKyNkZWZpbmUgX19OUl9wcmN0bAkJCQkJMTU3Cj4gKyNkZWZpbmUgX19OUl9h
cmNoX3ByY3RsCQkJCTE1OAo+ICsjZGVmaW5lIF9fTlJfYWRqdGltZXgJCQkJMTU5Cj4gKyNkZWZp
bmUgX19OUl9zZXRybGltaXQJCQkJMTYwCj4gKyNkZWZpbmUgX19OUl9jaHJvb3QJCQkJCTE2MQo+
ICsjZGVmaW5lIF9fTlJfc3luYwkJCQkJMTYyCj4gKyNkZWZpbmUgX19OUl9hY2N0CQkJCQkxNjMK
PiArI2RlZmluZSBfX05SX3NldHRpbWVvZmRheQkJCTE2NAo+ICsjZGVmaW5lIF9fTlJfbW91bnQJ
CQkJCTE2NQo+ICsjZGVmaW5lIF9fTlJfdW1vdW50MgkJCQkxNjYKPiArI2RlZmluZSBfX05SX3N3
YXBvbgkJCQkJMTY3Cj4gKyNkZWZpbmUgX19OUl9zd2Fwb2ZmCQkJCTE2OAo+ICsjZGVmaW5lIF9f
TlJfcmVib290CQkJCQkxNjkKPiArI2RlZmluZSBfX05SX3NldGhvc3RuYW1lCQkJMTcwCj4gKyNk
ZWZpbmUgX19OUl9zZXRkb21haW5uYW1lCQkJMTcxCj4gKyNkZWZpbmUgX19OUl9pb3BsCQkJCQkx
NzIKPiArI2RlZmluZSBfX05SX2lvcGVybQkJCQkJMTczCj4gKyNkZWZpbmUgX19OUl9jcmVhdGVf
bW9kdWxlCQkJMTc0Cj4gKyNkZWZpbmUgX19OUl9pbml0X21vZHVsZQkJCTE3NQo+ICsjZGVmaW5l
IF9fTlJfZGVsZXRlX21vZHVsZQkJCTE3Ngo+ICsjZGVmaW5lIF9fTlJfZ2V0X2tlcm5lbF9zeW1z
CQkxNzcKPiArI2RlZmluZSBfX05SX3F1ZXJ5X21vZHVsZQkJCTE3OAo+ICsjZGVmaW5lIF9fTlJf
cXVvdGFjdGwJCQkJMTc5Cj4gKyNkZWZpbmUgX19OUl9uZnNzZXJ2Y3RsCQkJCTE4MAo+ICsjZGVm
aW5lIF9fTlJfZ2V0cG1zZwkJCQkxODEKPiArI2RlZmluZSBfX05SX3B1dHBtc2cJCQkJMTgyCj4g
KyNkZWZpbmUgX19OUl9hZnNfc3lzY2FsbAkJCTE4Mwo+ICsjZGVmaW5lIF9fTlJfdHV4Y2FsbAkJ
CQkxODQKPiArI2RlZmluZSBfX05SX3NlY3VyaXR5CQkJCTE4NQo+ICsjZGVmaW5lIF9fTlJfZ2V0
dGlkCQkJCQkxODYKPiArI2RlZmluZSBfX05SX3JlYWRhaGVhZAkJCQkxODcKPiArI2RlZmluZSBf
X05SX3NldHhhdHRyCQkJCTE4OAo+ICsjZGVmaW5lIF9fTlJfbHNldHhhdHRyCQkJCTE4OQo+ICsj
ZGVmaW5lIF9fTlJfZnNldHhhdHRyCQkJCTE5MAo+ICsjZGVmaW5lIF9fTlJfZ2V0eGF0dHIJCQkJ
MTkxCj4gKyNkZWZpbmUgX19OUl9sZ2V0eGF0dHIJCQkJMTkyCj4gKyNkZWZpbmUgX19OUl9mZ2V0
eGF0dHIJCQkJMTkzCj4gKyNkZWZpbmUgX19OUl9saXN0eGF0dHIJCQkJMTk0Cj4gKyNkZWZpbmUg
X19OUl9sbGlzdHhhdHRyCQkJCTE5NQo+ICsjZGVmaW5lIF9fTlJfZmxpc3R4YXR0cgkJCQkxOTYK
PiArI2RlZmluZSBfX05SX3JlbW92ZXhhdHRyCQkJMTk3Cj4gKyNkZWZpbmUgX19OUl9scmVtb3Zl
eGF0dHIJCQkxOTgKPiArI2RlZmluZSBfX05SX2ZyZW1vdmV4YXR0cgkJCTE5OQo+ICsjZGVmaW5l
IF9fTlJfdGtpbGwJCQkJCTIwMAo+ICsjZGVmaW5lIF9fTlJfdGltZQkJCQkJMjAxCj4gKyNkZWZp
bmUgX19OUl9mdXRleAkJCQkJMjAyCj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRhZmZpbml0eQkJ
MjAzCj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRhZmZpbml0eQkJMjA0Cj4gKyNkZWZpbmUgX19O
Ul9zZXRfdGhyZWFkX2FyZWEJCTIwNQo+ICsjZGVmaW5lIF9fTlJfaW9fc2V0dXAJCQkJMjA2Cj4g
KyNkZWZpbmUgX19OUl9pb19kZXN0cm95CQkJCTIwNwo+ICsjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZl
bnRzCQkJMjA4Cj4gKyNkZWZpbmUgX19OUl9pb19zdWJtaXQJCQkJMjA5Cj4gKyNkZWZpbmUgX19O
Ul9pb19jYW5jZWwJCQkJMjEwCj4gKyNkZWZpbmUgX19OUl9nZXRfdGhyZWFkX2FyZWEJCTIxMQo+
ICsjZGVmaW5lIF9fTlJfbG9va3VwX2Rjb29raWUJCQkyMTIKPiArI2RlZmluZSBfX05SX2Vwb2xs
X2NyZWF0ZQkJCTIxMwo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfY3RsX29sZAkJCTIxNAo+ICsjZGVm
aW5lIF9fTlJfZXBvbGxfd2FpdF9vbGQJCQkyMTUKPiArI2RlZmluZSBfX05SX3JlbWFwX2ZpbGVf
cGFnZXMJCTIxNgo+ICsjZGVmaW5lIF9fTlJfZ2V0ZGVudHM2NAkJCQkyMTcKPiArI2RlZmluZSBf
X05SX3NldF90aWRfYWRkcmVzcwkJMjE4Cj4gKyNkZWZpbmUgX19OUl9yZXN0YXJ0X3N5c2NhbGwJ
CTIxOQo+ICsjZGVmaW5lIF9fTlJfc2VtdGltZWRvcAkJCQkyMjAKPiArI2RlZmluZSBfX05SX2Zh
ZHZpc2U2NAkJCQkyMjEKPiArI2RlZmluZSBfX05SX3RpbWVyX2NyZWF0ZQkJCTIyMgo+ICsjZGVm
aW5lIF9fTlJfdGltZXJfc2V0dGltZQkJCTIyMwo+ICsjZGVmaW5lIF9fTlJfdGltZXJfZ2V0dGlt
ZQkJCTIyNAo+ICsjZGVmaW5lIF9fTlJfdGltZXJfZ2V0b3ZlcnJ1bgkJMjI1Cj4gKyNkZWZpbmUg
X19OUl90aW1lcl9kZWxldGUJCQkyMjYKPiArI2RlZmluZSBfX05SX2Nsb2NrX3NldHRpbWUJCQky
MjcKPiArI2RlZmluZSBfX05SX2Nsb2NrX2dldHRpbWUJCQkyMjgKPiArI2RlZmluZSBfX05SX2Ns
b2NrX2dldHJlcwkJCTIyOQo+ICsjZGVmaW5lIF9fTlJfY2xvY2tfbmFub3NsZWVwCQkyMzAKPiAr
I2RlZmluZSBfX05SX2V4aXRfZ3JvdXAJCQkJMjMxCj4gKyNkZWZpbmUgX19OUl9lcG9sbF93YWl0
CQkJCTIzMgo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfY3RsCQkJCTIzMwo+ICsjZGVmaW5lIF9fTlJf
dGdraWxsCQkJCQkyMzQKPiArI2RlZmluZSBfX05SX3V0aW1lcwkJCQkJMjM1Cj4gKyNkZWZpbmUg
X19OUl92c2VydmVyCQkJCTIzNgo+ICsjZGVmaW5lIF9fTlJfbWJpbmQJCQkJCTIzNwo+ICsjZGVm
aW5lIF9fTlJfc2V0X21lbXBvbGljeQkJCTIzOAo+ICsjZGVmaW5lIF9fTlJfZ2V0X21lbXBvbGlj
eQkJCTIzOQo+ICsjZGVmaW5lIF9fTlJfbXFfb3BlbgkJCQkyNDAKPiArI2RlZmluZSBfX05SX21x
X3VubGluawkJCQkyNDEKPiArI2RlZmluZSBfX05SX21xX3RpbWVkc2VuZAkJCTI0Mgo+ICsjZGVm
aW5lIF9fTlJfbXFfdGltZWRyZWNlaXZlCQkyNDMKPiArI2RlZmluZSBfX05SX21xX25vdGlmeQkJ
CQkyNDQKPiArI2RlZmluZSBfX05SX21xX2dldHNldGF0dHIJCQkyNDUKPiArI2RlZmluZSBfX05S
X2tleGVjX2xvYWQJCQkJMjQ2Cj4gKyNkZWZpbmUgX19OUl93YWl0aWQJCQkJCTI0Nwo+ICsjZGVm
aW5lIF9fTlJfYWRkX2tleQkJCQkyNDgKPiArI2RlZmluZSBfX05SX3JlcXVlc3Rfa2V5CQkJMjQ5
Cj4gKyNkZWZpbmUgX19OUl9rZXljdGwJCQkJCTI1MAo+ICsjZGVmaW5lIF9fTlJfaW9wcmlvX3Nl
dAkJCQkyNTEKPiArI2RlZmluZSBfX05SX2lvcHJpb19nZXQJCQkJMjUyCj4gKyNkZWZpbmUgX19O
Ul9pbm90aWZ5X2luaXQJCQkyNTMKPiArI2RlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoCQky
NTQKPiArI2RlZmluZSBfX05SX2lub3RpZnlfcm1fd2F0Y2gJCTI1NQo+ICsjZGVmaW5lIF9fTlJf
bWlncmF0ZV9wYWdlcwkJCTI1Ngo+ICsjZGVmaW5lIF9fTlJfb3BlbmF0CQkJCQkyNTcKPiArI2Rl
ZmluZSBfX05SX21rZGlyYXQJCQkJMjU4Cj4gKyNkZWZpbmUgX19OUl9ta25vZGF0CQkJCTI1OQo+
ICsjZGVmaW5lIF9fTlJfZmNob3duYXQJCQkJMjYwCj4gKyNkZWZpbmUgX19OUl9mdXRpbWVzYXQJ
CQkJMjYxCj4gKyNkZWZpbmUgX19OUl9uZXdmc3RhdGF0CQkJCTI2Mgo+ICsjZGVmaW5lIF9fTlJf
dW5saW5rYXQJCQkJMjYzCj4gKyNkZWZpbmUgX19OUl9yZW5hbWVhdAkJCQkyNjQKPiArI2RlZmlu
ZSBfX05SX2xpbmthdAkJCQkJMjY1Cj4gKyNkZWZpbmUgX19OUl9zeW1saW5rYXQJCQkJMjY2Cj4g
KyNkZWZpbmUgX19OUl9yZWFkbGlua2F0CQkJCTI2Nwo+ICsjZGVmaW5lIF9fTlJfZmNobW9kYXQJ
CQkJMjY4Cj4gKyNkZWZpbmUgX19OUl9mYWNjZXNzYXQJCQkJMjY5Cj4gKyNkZWZpbmUgX19OUl9w
c2VsZWN0NgkJCQkyNzAKPiArI2RlZmluZSBfX05SX3Bwb2xsCQkJCQkyNzEKPiArI2RlZmluZSBf
X05SX3Vuc2hhcmUJCQkJMjcyCj4gKyNkZWZpbmUgX19OUl9zZXRfcm9idXN0X2xpc3QJCTI3Mwo+
ICsjZGVmaW5lIF9fTlJfZ2V0X3JvYnVzdF9saXN0CQkyNzQKPiArI2RlZmluZSBfX05SX3NwbGlj
ZQkJCQkJMjc1Cj4gKyNkZWZpbmUgX19OUl90ZWUJCQkJCTI3Ngo+ICsjZGVmaW5lIF9fTlJfc3lu
Y19maWxlX3JhbmdlCQkyNzcKPiArI2RlZmluZSBfX05SX3Ztc3BsaWNlCQkJCTI3OAo+ICsjZGVm
aW5lIF9fTlJfbW92ZV9wYWdlcwkJCQkyNzkKPiArI2RlZmluZSBfX05SX3V0aW1lbnNhdAkJCQky
ODAKPiArI2RlZmluZSBfX05SX2Vwb2xsX3B3YWl0CQkJMjgxCj4gKyNkZWZpbmUgX19OUl9zaWdu
YWxmZAkJCQkyODIKPiArI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRlCQkJMjgzCj4gKyNkZWZp
bmUgX19OUl9ldmVudGZkCQkJCTI4NAo+ICsjZGVmaW5lIF9fTlJfZmFsbG9jYXRlCQkJCTI4NQo+
ICsjZGVmaW5lIF9fTlJfdGltZXJmZF9zZXR0aW1lCQkyODYKPiArI2RlZmluZSBfX05SX3RpbWVy
ZmRfZ2V0dGltZQkJMjg3Cj4gKyNkZWZpbmUgX19OUl9hY2NlcHQ0CQkJCTI4OAo+ICsjZGVmaW5l
IF9fTlJfc2lnbmFsZmQ0CQkJCTI4OQo+ICsjZGVmaW5lIF9fTlJfZXZlbnRmZDIJCQkJMjkwCj4g
KyNkZWZpbmUgX19OUl9lcG9sbF9jcmVhdGUxCQkJMjkxCj4gKyNkZWZpbmUgX19OUl9kdXAzCQkJ
CQkyOTIKPiArI2RlZmluZSBfX05SX3BpcGUyCQkJCQkyOTMKPiArI2RlZmluZSBfX05SX2lub3Rp
ZnlfaW5pdDEJCQkyOTQKPiArI2RlZmluZSBfX05SX3ByZWFkdgkJCQkJMjk1Cj4gKyNkZWZpbmUg
X19OUl9wd3JpdGV2CQkJCTI5Ngo+ICsjZGVmaW5lIF9fTlJfcnRfdGdzaWdxdWV1ZWluZm8JCTI5
Nwo+ICsjZGVmaW5lIF9fTlJfcGVyZl9ldmVudF9vcGVuCQkyOTgKPiArI2RlZmluZSBfX05SX3Jl
Y3ZtbXNnCQkJCTI5OQo+ICsjZGVmaW5lIF9fTlJfZmFub3RpZnlfaW5pdAkJCTMwMAo+ICsjZGVm
aW5lIF9fTlJfZmFub3RpZnlfbWFyawkJCTMwMQo+ICsjZGVmaW5lIF9fTlJfcHJsaW1pdDY0CQkJ
CTMwMgo+ICsjZGVmaW5lIF9fTlJfbmFtZV90b19oYW5kbGVfYXQJCQkzMDMKPiArI2RlZmluZSBf
X05SX29wZW5fYnlfaGFuZGxlX2F0CQkJMzA0Cj4gKyNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1l
CQkJMzA1Cj4gKyNkZWZpbmUgX19OUl9zeW5jZnMJCQkJMzA2Cj4gKyNkZWZpbmUgX19OUl9zZW5k
bW1zZwkJCQkzMDcKPiArI2RlZmluZSBfX05SX3NldG5zCQkJCTMwOAo+ICsjZGVmaW5lIF9fTlJf
Z2V0Y3B1CQkJCTMwOQo+ICsjZGVmaW5lIF9fTlJfcHJvY2Vzc192bV9yZWFkdgkJCTMxMAo+ICsj
ZGVmaW5lIF9fTlJfcHJvY2Vzc192bV93cml0ZXYJCQkzMTEKPiArI2RlZmluZSBfX05SX2tjbXAJ
CQkJMzEyCj4gKyNkZWZpbmUgX19OUl9maW5pdF9tb2R1bGUJCQkzMTMKPiArI2RlZmluZSBfX05S
X3NjaGVkX3NldGF0dHIJCQkzMTQKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldGF0dHIJCQkzMTUK
PiArI2RlZmluZSBfX05SX3JlbmFtZWF0MgkJCQkzMTYKPiArI2RlZmluZSBfX05SX3NlY2NvbXAJ
CQkJMzE3Cj4gKyNkZWZpbmUgX19OUl9nZXRyYW5kb20JCQkJMzE4Cj4gKyNkZWZpbmUgX19OUl9t
ZW1mZF9jcmVhdGUJCQkzMTkKPiArI2RlZmluZSBfX05SX2tleGVjX2ZpbGVfbG9hZAkJCTMyMAo+
ICsjZGVmaW5lIF9fTlJfYnBmCQkJCTMyMQo+ICsjZGVmaW5lIF9fTlJfZXhlY3ZlYXQJCQkJMzIy
Cj4gKyNkZWZpbmUgX19OUl91c2VyZmF1bHRmZAkJCTMyMwo+ICsjZGVmaW5lIF9fTlJfbWVtYmFy
cmllcgkJCQkzMjQKPiArI2RlZmluZSBfX05SX21sb2NrMgkJCQkzMjUKPiArI2RlZmluZSBfX05S
X2NvcHlfZmlsZV9yYW5nZQkJCTMyNgo+ICsjZGVmaW5lIF9fTlJfcHJlYWR2MgkJCQkzMjcKPiAr
I2RlZmluZSBfX05SX3B3cml0ZXYyCQkJCTMyOAo+ICsjZGVmaW5lIF9fTlJfcGtleV9tcHJvdGVj
dAkJCTMyOQo+ICsjZGVmaW5lIF9fTlJfcGtleV9hbGxvYwkJCQkzMzAKPiArI2RlZmluZSBfX05S
X3BrZXlfZnJlZQkJCQkzMzEKPiArI2RlZmluZSBfX05SX3N0YXR4CQkJCTMzMgo+ICsjZGVmaW5l
IF9fTlJfaW9fcGdldGV2ZW50cwkJCTMzMwo+ICsjZGVmaW5lIF9fTlJfcnNlcQkJCQkzMzQKPiAr
Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 09:50:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 09:50: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 1hYSYn-00012U-Lq; Wed, 05 Jun 2019 09:50:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYSYm-00012P-GG
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 09:50:20 +0000
X-Inumbo-ID: 53b76b85-8777-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 53b76b85-8777-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 09:50:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 40151103AFF;
 Wed,  5 Jun 2019 11:50:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id aW4MQ4VRXP6O; Wed,  5 Jun 2019 11:50:18 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 1B78B1039CE
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 11:50:18 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 11:50:17
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-4-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <5d988413-3db4-22e7-d502-12abe3a49f04@neclab.eu>
Date: Wed, 5 Jun 2019 11:50:17 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-4-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 03/10] remove duplicate syscalls
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

U29ycnksIEkgZm9yZ290IHRvIG1lbnRpb24uIFBsZWFzZSBhZGQgYSBwcmVmaXggdG8gdGhlIGNv
bW1pdCB0aXRsZSwgdG9vLgoKT24gMDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6
Cj4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHN5c2NhbGxfc2hpbSByZWxpZXMgb24gdW5pcXVlbmVz
cyBvZiB0aGUgc3lzY2FsbAo+IG51bWJlcnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xj
aGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvc3lzY2FsbF9zaGlt
L2FyY2gvYXJtL3N5c2NhbGwuaC5pbiB8IDIgLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0
aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2Nh
bGwuaC5pbiBiL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluCj4gaW5kZXgg
MTNhM2I2NmMuLjFkNzkzNjhhIDEwMDY0NAo+IC0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9h
cm0vc3lzY2FsbC5oLmluCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxs
LmguaW4KPiBAQCAtMjI0LDcgKzIyNCw2IEBACj4gICAjZGVmaW5lIF9fTlJfdGdraWxsCTI2OAo+
ICAgI2RlZmluZSBfX05SX3V0aW1lcwkyNjkKPiAgICNkZWZpbmUgX19OUl9mYWR2aXNlNjRfNjQJ
MjcwCj4gLSNkZWZpbmUgX19OUl9hcm1fZmFkdmlzZTY0XzY0CTI3MAo+ICAgI2RlZmluZSBfX05S
X3BjaWNvbmZpZ19pb2Jhc2UJMjcxCj4gICAjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3JlYWQJMjcy
Cj4gICAjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3dyaXRlCTI3Mwo+IEBAIC0yOTYsNyArMjk1LDYg
QEAKPiAgICNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QJMzM5Cj4gICAjZGVmaW5lIF9fTlJf
c3BsaWNlCTM0MAo+ICAgI2RlZmluZSBfX05SX3N5bmNfZmlsZV9yYW5nZTIJMzQxCj4gLSNkZWZp
bmUgX19OUl9hcm1fc3luY19maWxlX3JhbmdlCTM0MQo+ICAgI2RlZmluZSBfX05SX3RlZQkzNDIK
PiAgICNkZWZpbmUgX19OUl92bXNwbGljZQkzNDMKPiAgICNkZWZpbmUgX19OUl9tb3ZlX3BhZ2Vz
CTM0NAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 09:50:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 09:50: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 1hYSYr-00012x-NM; Wed, 05 Jun 2019 09:50:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYSYq-00012n-94
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 09:50:24 +0000
X-Inumbo-ID: 55c1bd09-8777-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 55c1bd09-8777-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 09:50:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D561BF208C;
 Wed,  5 Jun 2019 11:50:21 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Aalw_9G32raM; Wed,  5 Jun 2019 11:50:21 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A8990F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 11:50:19 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 11:50:19
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-5-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <647dadc1-b7b4-8193-d9c0-ad14bcbbddad@neclab.eu>
Date: Wed, 5 Jun 2019 11:50:19 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-5-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 04/10] build: introduce uk_mk_dir
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SHVtLAoKSSBhbSBub3QgYSBmYW4gb2YgdGhpcy4gSXQgd2FzIGFjdHVhbGx5IGludGVuZGVkIHRv
IGZvcmNlIGRpcmVjdG9yeSAKY3JlYXRpb24gd2l0aGluIHRoZSBidWlsZCBkaXJlY3Rvcnkgc28g
dGhhdCBpdCBuZXZlciBoYXBwZW5zIHRoYXQgCmFueXRoaW5nIGNyZWF0ZWQgb3IgbW9kaWZpZWQg
aXMgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSAKcHJvamVjdHMvYXBwbGljYXRpb25zLiBJbWFnaW5l
IHRoZSBzYW1lIFVuaWtyYWZ0IHNvdXJjZSBkaXJlY3RvcnkgKGUuZy4sIApzb3VyY2VzIG9mIFVu
aWtyYWZ0KSBpcyB1c2VkIGJ5IG11bHRpcGxlIHByb2plY3RzL2FwcGxpY2F0aW9ucyBhbmQgeW91
IAp3YW50IHRvIGJ1aWxkIHRoZW0gYXQgdGhlIHNhbWUgdGltZSAoZS5nLiwgYmVjYXVzZSBvZiB1
bml0IHRlc3RpbmcpLiBJbiAKb3JkZXIgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHlvdSB3YW50
IHRvIGhhdmUgdGhlIGJ1aWxkcyBpbmRlcGVuZGVudCAKZm9ybSBlYWNoIG90aGVyLgoKRG8geW91
IGhhdmUgYSBnb29kIHJlYXNvbiB3aHkgd2Ugc2hvdWxkIHdlYWtlbiB0aGlzPwoKVGhhbmtzLAoK
U2ltb24KCk9uIDA0LjA2LjE5IDE4OjI4LCBZdXJpIFZvbGNoa292IHdyb3RlOgo+IFRoaXMgZnVu
Y3Rpb25hbGl0eSBpcyB1c2VmdWwgZm9yIGxpYnJhcmllcyB0b28KPiAKPiBTaWduZWQtb2ZmLWJ5
OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIHN1cHBv
cnQvYnVpbGQvTWFrZWZpbGUucnVsZXMgfCA4ICsrKysrKy0tCj4gICAxIGZpbGUgY2hhbmdlZCwg
NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9zdXBwb3J0
L2J1aWxkL01ha2VmaWxlLnJ1bGVzIGIvc3VwcG9ydC9idWlsZC9NYWtlZmlsZS5ydWxlcwo+IGlu
ZGV4IGQ5MDgwN2UwLi5lMWE1YzIwNiAxMDA2NDQKPiAtLS0gYS9zdXBwb3J0L2J1aWxkL01ha2Vm
aWxlLnJ1bGVzCj4gKysrIGIvc3VwcG9ydC9idWlsZC9NYWtlZmlsZS5ydWxlcwo+IEBAIC00OCw5
ICs0OCwxMyBAQCBlbmRlZgo+ICAgIwo+ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgIAo+
ICtkZWZpbmUgdWtfbWtfZGlyID0KPiArJChpZiAkKHNoZWxsIG1rZGlyIC1wICQxICYmIGNkICQx
ID4vZGV2L251bGwgJiYgcHdkKSwsXAo+ICsJJChlcnJvciBjb3VsZCBub3QgY3JlYXRlIGRpcmVj
dG9yeSAkMSkpCj4gK2VuZGVmCj4gKwo+ICAgZGVmaW5lIG1rX3N1Yl9idWlsZF9kaXIgPQo+IC0k
KGlmICQoc2hlbGwgbWtkaXIgLXAgIiQoQlVJTERfRElSKS8kKDEpIiAmJiBjZCAiJChCVUlMRF9E
SVIpLyQoMSkiID4vZGV2L251bGwgJiYgcHdkKSwsXAo+IC0gICAgICQoZXJyb3IgY291bGQgbm90
IGNyZWF0ZSBkaXJlY3RvcnkgIiQoQlVJTERfRElSKS8kKDEpIikpCj4gKyQoY2FsbCB1a19ta19k
aXIsICQoQlVJTERfRElSKS8kMSkKPiAgIGVuZGVmCj4gICAKPiAgIHN1Yl9idWlsZF9kaXIgPSAk
KGFkZHByZWZpeCAkKEJVSUxEX0RJUikvLCQobm90ZGlyICQoMSkpKQo+IAoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:13:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:13: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 1hYTrK-00029H-CO; Wed, 05 Jun 2019 11:13: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=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYTrI-00029C-SZ
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:13:32 +0000
X-Inumbo-ID: f0d6d888-8782-11e9-86c2-d70053011cf3
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f0d6d888-8782-11e9-86c2-d70053011cf3;
 Wed, 05 Jun 2019 11:13:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 4A01E103B6A;
 Wed,  5 Jun 2019 13:13:26 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 8fsUJ0DgClPg; Wed,  5 Jun 2019 13:13:26 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 211EE103AFF;
 Wed,  5 Jun 2019 13:13:26 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 13:13:25
 +0200
To: Costin Lupu <costin.lup@gmail.com>, Florian Schmidt
 <florian.schmidt@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-2-florian.schmidt@neclab.eu>
 <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
Date: Wed, 5 Jun 2019 13:13:10 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft 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 <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>

SGV5IGFsbCwKCkkgaGF2ZSBhY3R1YWxseSBzb21lIGNvbW1lbnRzIGFib3V0IHRoaXMgcGF0Y2gu
IFNlZSBteSBjb21tZW50cyBpbmxpbmUuCgpPbiAwNS4wNi4xOSAxMDo1NiwgQ29zdGluIEx1cHUg
d3JvdGU6Cj4gUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+
Cj4gCj4gT24gNi81LzE5IDEwOjM1IEFNLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6Cj4+IEFkZCBN
YWtlZmlsZSwgTWFrZWZpbGUudWssIENvbmZpZy51aywgLmdpdGlnbm9yZSwgLm1kIGZpbGVzCj4+
Cj4+IFNpZ25lZC1vZmYtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4K
Pj4gU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFi
LmV1Pgo+PiAtLS0KPj4gICAuZ2l0aWdub3JlICAgICAgfCAgIDQgKysKPj4gICBDT0RJTkdfU1RZ
TEUubWQgfCAgIDQgKysKPj4gICBDT05UUklCVVRJTkcubWQgfCAgIDQgKysKPj4gICBDT1BZSU5H
Lm1kICAgICAgfCAgNDcgKysrKysrKysrKysrKwo+PiAgIENvbmZpZy51ayAgICAgICB8ICA4NiAr
KysrKysrKysrKysrKysrKysrKysrKwo+PiAgIE1BSU5UQUlORVJTLm1kICB8ICAxMCArKysKPj4g
ICBNYWtlZmlsZSAgICAgICAgfCAgIDkgKysrCj4+ICAgTWFrZWZpbGUudWsgICAgIHwgMTgyICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIFJFQURN
RS5tZCAgICAgICB8ICAgNSArKwo+PiAgIDkgZmlsZXMgY2hhbmdlZCwgMzUxIGluc2VydGlvbnMo
KykKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgLmdpdGlnbm9yZQo+PiAgIGNyZWF0ZSBtb2RlIDEw
MDY0NCBDT0RJTkdfU1RZTEUubWQKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5H
Lm1kCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQKPj4gICBjcmVhdGUgbW9kZSAx
MDA2NDQgQ29uZmlnLnVrCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCj4+
ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1h
a2VmaWxlLnVrCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5tZAo+Pgo+PiBkaWZmIC0t
Z2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4g
aW5kZXggMDAwMDAwMC4uYTlmYjcxYgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiLy5naXRpZ25v
cmUKPj4gQEAgLTAsMCArMSw0IEBACj4+ICsuY29uZmlnCj4+ICsuY29uZmlnLm9sZAo+PiArLi5j
b25maWcudG1wCj4+ICtidWlsZC8KPj4gZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NP
RElOR19TVFlMRS5tZAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi41
NzMwMDQxCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvQ09ESU5HX1NUWUxFLm1kCj4+IEBAIC0w
LDAgKzEsNCBAQAo+PiArQ29kaW5nIFN0eWxlCj4+ICs9PT09PT09PT09PT0KPj4gKwo+PiArUGxl
YXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWty
YWZ0IHJlcG9zaXRvcnkuCj4+IGRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklC
VVRJTkcubWQKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uNWY1NWVj
YQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL0NPTlRSSUJVVElORy5tZAo+PiBAQCAtMCwwICsx
LDQgQEAKPj4gK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAo+PiArPT09PT09PT09PT09PT09PT09
PT09PT0KPj4gKwo+PiArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxl
IGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCj4+IGRpZmYgLS1naXQgYS9DT1BZSU5H
Lm1kIGIvQ09QWUlORy5tZAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAw
Li41MmYzNzUzCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvQ09QWUlORy5tZAo+PiBAQCAtMCww
ICsxLDQ3IEBACj4+ICtMaWNlbnNlCj4+ICs9PT09PT09Cj4+ICsKPj4gK1VuaWtyYWZ0IGNsaWNr
IHdyYXBwZXJzCj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gKwo+PiArVGhpcyByZXBv
c2l0b3J5IGNvbnRhaW5zIHdyYXBwZXIgY29kZSB0byBidWlsZCB0aGUgQ2xpY2sgbW9kdWxhciBy
b3V0ZXIgd2l0aAo+PiArVW5pa3JhZnQuIFRoZSB3cmFwcGVyIGNvZGUgaXMgZ2VuZXJhbGx5IHB1
Ymxpc2hlZCB1bmRlciBhIEJTRCAzLWNsYXVzZSBsaWNlbmNlLgo+PiArZWFjaCBDIGNvZGUgZmls
ZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZSBjb3B5cmlnaHQg
b3duZXIKPj4gK2FuZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBp
cyBsaWNlbnNlZC4gSWYgc3VjaCBhIGxpY2VuY2UKPj4gK25vdGUgaXMgbWlzc2luZywgdGhlIGZv
bGxvd2luZyBjb3B5cmlnaHQgbm90aWNlIHdpbGwgYXBwbHk6Cj4+ICsKPj4gKwlDb3B5cmlnaHQg
KGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlaSBHbWJILCBORUMgQ29ycG9yYXRpb24u
Cj4+ICsJICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArCj4+ICsJ
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4+ICsJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4+ICsJYXJlIG1ldDoKPj4gKwo+PiArCTEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4+ICsJICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgo+PiArCTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsJICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+PiArCSAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCj4+ICsJMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhv
bGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArCSAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4+ICsJICAgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPj4g
Kwo+PiArCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+PiArCUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPj4gKwlJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQo+PiArCUFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPj4gKwlMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+ICsJ
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKPj4gKwlTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPj4gKwlJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+PiAr
CUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCj4+ICsJQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPj4gKwlQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KPj4gKwo+PiArQ2xpY2sgc291cmNlIGNvZGUKPj4gKy0tLS0tLS0tLS0t
LS0tLS0tLQo+PiArCj4+ICtEdXJpbmcgYnVpbGRpbmcsIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBk
b3dubG9hZCB0aGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIgc291cmNlCj4+ICtUaGlzIGNvZGUgaGFz
IGEgdmFyaWV0eSBvZiBsaWNlbmNlczsgcGxlYXNlIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBpbiB0
aGUKPj4gK2BMSUNFTlNFYCBmaWxlIGluIENsaWNrJ3Mgcm9vdCBkaXJlY3RvcnksIG9yIGF0Cj4+
ICtodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20va29obGVyL2NsaWNrL21hc3Rlci9M
SUNFTlNFIC4KPj4gZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awo+PiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi4wMmVkOTk3Cj4+IC0tLSAvZGV2L251bGwK
Pj4gKysrIGIvQ29uZmlnLnVrCj4+IEBAIC0wLDAgKzEsODYgQEAKPj4gKyMjIyBJbnZpc2libGUg
b3B0aW9uIGZvciBkZXBlbmRlbmNpZXMKPj4gK2NvbmZpZyBBUFBfREVQRU5ERU5DSUVTCj4+ICsJ
Ym9vbAo+PiArCWRlZmF1bHQgeQo+PiArCj4+ICttZW51Y29uZmlnIExJQkNMSUNLCj4+ICsJYm9v
bCAiVGhlIENsaWNrIG1vZHVsYXIgcm91dGVyIgo+PiArCWRlcGVuZHMgb24gSEFWRV9MSUJDCj4+
ICsJc2VsZWN0IExJQkxXSVAKPj4gKwlkZWZhdWx0IHkKCkl0IGlzIHByb2JhYmx5IGJldHRlciBp
ZiB5b3Ugc2VsZWN0IExJQk5FV0xJQiBpbnN0ZWFkIG9mIGNoZWNraW5nIGlmIGEgCkxJQkMgaXMg
dGhlcmUuIElmIHdlIGFkZCBtb3JlIGxpYmMncyBsYXRlciwgd2UgYW55d2F5IG5lZWQgdG8gY2hl
Y2sgaWYgCml0IGNvbXBpbGVzLiBuZXdsaWIgaXMgdGhlIHdvcmtpbmcgY29uZmlndXJhdGlvbi4K
Cj4+ICsKPj4gK2lmIExJQkNMSUNLCj4+ICsKPj4gK2NvbmZpZyBMSUJDTElDS19NQUlOCj4+ICsJ
Ym9vbCAiRW5hYmxlIENsaWNrIG1haW4gZnVuY3Rpb24iCj4+ICsJZGVmYXVsdCBuCj4+ICsJaGVs
cAo+PiArCSAgRGVmaW5lIG1haW4gZnVuY3Rpb24gaW5zdGVhZCBvZiBjbGlja19tYWluIGZ1bmN0
aW9uCj4+ICsKPj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19BUU0KPj4gKwlib29sICJFbmFibGUg
QVFNIGVsZW1lbnRzIgo+PiArCWRlZmF1bHQgeQo+PiArCWhlbHAKPj4gKwkgIEJ1aWxkIHdpdGgg
SVAgZWxlbWVudHMKPj4gKwo+PiArY29uZmlnIExJQkNMSUNLX0VMRU1TX0VUSEVSTkVUCj4+ICsJ
Ym9vbCAiRW5hYmxlIEV0aGVybmV0IGVsZW1lbnRzIgo+PiArCWRlZmF1bHQgeQo+PiArCWhlbHAK
Pj4gKwkgIEJ1aWxkIHdpdGggRXRoZXJuZXQgZWxlbWVudHMKPj4gKwo+PiArY29uZmlnIExJQkNM
SUNLX0VMRU1TX0VUSEVSU1dJVENICj4+ICsJYm9vbCAiRW5hYmxlIEV0aGVybmV0IHN3aXRjaCBl
bGVtZW50cyIKPj4gKwlkZWZhdWx0IHkKPj4gKwloZWxwCj4+ICsJICBCdWlsZCB3aXRoIEV0aGVy
bmV0IHN3aXRjaCBlbGVtZW50cwo+PiArCj4+ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfSUNNUAo+
PiArCWJvb2wgIkVuYWJsZSBJQ01QIGVsZW1lbnRzIgo+PiArCWRlZmF1bHQgeQo+PiArCWhlbHAK
Pj4gKwkgIEJ1aWxkIHdpdGggSUNNUCBlbGVtZW50cwo+PiArCj4+ICtjb25maWcgTElCQ0xJQ0tf
RUxFTVNfSVAKPj4gKwlib29sICJFbmFibGUgSVAgZWxlbWVudHMiCj4+ICsJZGVmYXVsdCB5Cj4+
ICsJaGVscAo+PiArCSAgQnVpbGQgd2l0aCBhZGFwdGl2ZSBxdWV1ZSBtYW5hZ2VtZW50IGVsZW1l
bnRzCj4+ICsKPj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19VTklLUkFGVAo+PiArCWJvb2wgIkVu
YWJsZSBVbmlrcmFmdCBuZXR3b3JraW5nIgo+PiArCWRlZmF1bHQgeQo+PiArCWhlbHAKPj4gKwkg
IEJ1aWxkIHdpdGggVW5pa3JhZnQgRnJvbURldmljZSBhbmQgVG9EZXZpY2UgZWxlbWVudHMKPj4g
Kwo+PiArY29uZmlnIExJQkNMSUNLX0VMRU1TX0xPQ0FMCj4+ICsJYm9vbCAiRW5hYmxlIGxvY2Fs
IGVsZW1lbnRzIgo+PiArCWRlZmF1bHQgeQo+PiArCWhlbHAKPj4gKwkgIEJ1aWxkIHdpdGggbG9j
YWwgZWxlbWVudHMKPj4gKwo+PiArY29uZmlnIExJQkNMSUNLX0VMRU1TX1NJTVBMRQo+PiArCWJv
b2wgIkVuYWJsZSBzaW1wbGUgZWxlbWVudHMiCj4+ICsJZGVmYXVsdCB5Cj4+ICsJaGVscAo+PiAr
CSAgQnVpbGQgd2l0aCBzaW1wbGUgZWxlbWVudHMKPj4gKwo+PiArY29uZmlnIExJQkNMSUNLX0VM
RU1TX1NUQU5EQVJECj4+ICsJYm9vbCAiRW5hYmxlIHN0YW5kYXJkIGVsZW1lbnRzIgo+PiArCWRl
ZmF1bHQgeQo+PiArCWhlbHAKPj4gKwkgIEJ1aWxkIHdpdGggc3RhbmRhcmQgZWxlbWVudHMKPj4g
Kwo+PiArY29uZmlnIExJQkNMSUNLX0VMRU1TX1RDUFVEUAo+PiArCWJvb2wgIkVuYWJsZSBUQ1Av
VURQIGVsZW1lbnRzIgo+PiArCWRlZmF1bHQgeQo+PiArCWhlbHAKPj4gKwkgIEJ1aWxkIHdpdGgg
VENQL1VEUCBlbGVtZW50cwo+PiArCj4+ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfVEhSRUFEUwo+
PiArCWJvb2wgIkVuYWJsZSBtdWx0aS10aHJlYWRpbmcgZWxlbWVudHMiCj4+ICsJZGVmYXVsdCB5
Cj4+ICsJaGVscAo+PiArCSAgQnVpbGQgd2l0aCBtdWx0aS10aHJlYWRpbmcgZWxlbWVudHMKPj4g
Kwo+PiArZW5kaWYKPj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMu
bWQKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uYjE0ODJjNwo+PiAt
LS0gL2Rldi9udWxsCj4+ICsrKyBiL01BSU5UQUlORVJTLm1kCj4+IEBAIC0wLDAgKzEsMTAgQEAK
Pj4gK01haW50YWluZXJzIExpc3QKPj4gKz09PT09PT09PT09PT09PT0KPj4gKwo+PiArRm9yIG5v
dGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byBgTUFJ
TlRBSU5FUlMubWRgIGluCj4+ICt0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lgo+PiArCj4+
ICsJQ0xJQ0stVU5JS1JBRlQKPj4gKwlNOglGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNs
YWIuZXU+Cj4+ICsJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKPj4gKwlGOiAqCj4+IGRp
ZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+
IGluZGV4IDAwMDAwMDAuLjhlY2Y4MGIKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9NYWtlZmls
ZQo+PiBAQCAtMCwwICsxLDkgQEAKPj4gK1VLX1JPT1QgPz0gJChQV0QpLy4uL3VuaWtyYWZ0Cj4+
ICtVS19MSUJTID89ICQoUFdEKS8uLgo+PiArTElCUyA6PSAkKFVLX0xJQlMpL25ld2xpYjokKFVL
X0xJQlMpL2x3aXAKPj4gKwoKU28gZmFyLCB3ZSBoYWQgdGhlIGZvbGxvd2luZyBkZWZhdWx0IGRl
ZmluaXRpb24gZm9yIFVLX1JPT1QgYW5kIFVLX0xJQlM6CiAgVUtfUk9PVCA/PSAkKFBXRCkvLi4v
Li4vdW5pa3JhZnQKICBVS19MSUJTID89ICQoUFdEKS8uLi8uLi9saWJzCkZvciBzaW1wbGljaXR5
IHdlIHNob3VsZCB1c2UgdGhlIGFzIHdlIGRvIHdpdGggdGhlIGFwcGxpY2F0aW9ucyAKYGhlbGxv
d29ybGRgIGFuZCBgaHR0cHJlcGx5YCBzbyB0aGF0IHVzZXIgY2FuIGV4cGVjdCB0aGUgc2FtZSBk
ZWZhdWx0IApkaXJlY3Rvcnkgc3RydWN0dXJlLgoKPj4gK2FsbDoKPj4gKwlAJChNQUtFKSAtQyAk
KFVLX1JPT1QpIEE9JChQV0QpIEw9JChMSUJTKQo+PiArCj4+ICskKE1BS0VDTURHT0FMUyk6Cj4+
ICsJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykgJChNQUtFQ01ER09B
TFMpCj4+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmM0NjRhODkKPj4gLS0tIC9kZXYvbnVsbAo+
PiArKysgYi9NYWtlZmlsZS51awo+PiBAQCAtMCwwICsxLDE4MiBAQAo+PiArIwo+PiArIyAgQ29w
eXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9y
YXRpb24uCj4+ICsjICAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+
ICsjCj4+ICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKPj4gKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+PiArIyAgYXJlIG1ldDoKPj4g
KyMKPj4gKyMgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4+ICsjICAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+PiAr
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQo+PiArIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPj4gKyMgIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4g
KyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCj4+ICsjICAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+PiArIwo+PiArIyAgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMg
SVMiCj4+ICsjICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4+ICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+PiAr
IyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRQo+PiArIyAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+PiArIyAgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
Pj4gKyMgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+PiArIyAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPj4gKyMgIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCj4+ICsjICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+PiArIyAgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCj4+ICsjCj4+ICsjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+PiArIwo+PiArCj4+ICsjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+PiArIyBDaGVjayByZXF1aXJlbWVudHM6IENsaWNrIHJlcXVpcmVzIG5ldGRldiBh
Y2Nlc3MsIHNvIExXSVAgbXVzdCBub3QgYXR0YWNoIHRoZW0KPj4gKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCj4+ICtpZmVxICgkKENPTkZJR19MV0lQX0FVVE9JRkFDRSkseSkKPj4gKyQoZXJyb3Ig
Q2xpY2sgY2Fubm90IGJlIGJ1aWx0IHdpdGggTFdJUCBvcHRpb24gIkF1dG9tYXRpY2FsbHkgYXR0
YWNoIG5ldGlmcyIhIFBsZWFzZSBkaXNhYmxlKQo+PiArZW5kaWYKCkNvdWxkIHlvdSBhZGQgYSBj
b21tZW50IHdoeSB5b3UgYXJlIGRvaW5nIHRoaXMgd2l0aCBhbiBlcnJvcj86IEtDb25maWcgCnVu
Zm9ydHVuYXRlbHkgZG9lcyBub3Qgc3VwcG9ydCB0byBgdW5zZWxlY3RgIGFuIGNvbmZpZ3VyYXRp
b24gb3B0aW9uLiBJIApob3BlIHByb2JsZW1zIGxpa2UgdGhpcyBjYW4gYmUgZml4ZWQgYnkgdXBk
YXRpbmcgdG8gYSByZWNlbnQgS0NvbmZpZyAKc3lzdGVtLgoKPj4gKwo+PiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPj4gKyMgUmVnaXN0ZXIgd2l0aCB1bmlrcmFmdAo+PiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliLGxpYmNsaWNrKSkKPj4gKwo+PiAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPj4gKyMgU291cmNlcwo+PiArIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKPj4gK0xJQkNMSUNLX0NPTU1JVF9IQVNIPWE1Mzg0ODM1YTZjYWMxMGY4ZDQ0ZGE0
ZWVlYThlYWE4ZjhlNmEwYzIKPj4gK0xJQkNMSUNLX1VSTD1odHRwczovL2NvZGVsb2FkLmdpdGh1
Yi5jb20va29obGVyL2NsaWNrL3ppcC8kKExJQkNMSUNLX0NPTU1JVF9IQVNIKQo+PiArJChldmFs
ICQoY2FsbCBmZXRjaGFzLGxpYmNsaWNrLCQoTElCQ0xJQ0tfVVJMKSxjbGljay0kKExJQkNMSUNL
X0NPTU1JVF9IQVNIKS56aXApKQo+PiArTElCQ0xJQ0tfUEFUQ0hESVI9JChMSUJDTElDS19CQVNF
KS9wYXRjaGVzCj4+ICskKGV2YWwgJChjYWxsIHBhdGNoLGxpYmNsaWNrLCQoTElCQ0xJQ0tfUEFU
Q0hESVIpLGNsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpKSkKPj4gKwo+PiArIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKPj4gKyMgQ29weSBVbmlrcmFmdCBmcm9tL3RvIGRldmljZXMKPj4gKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+ICtpZm5lcSAoJChDT05GSUdfTElCQ0xJQ0tfRUxFTVNf
VU5JS1JBRlQpLCkKPj4gKyQoc2hlbGwgbWtkaXIgLXAgJChMSUJDTElDS19PUklHSU4pL2NsaWNr
LSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1lbnRzKQo+PiArJChzaGVsbCBjcCAtciAkKExJ
QkNMSUNLX0JBU0UpL3VuaWtyYWZ0ICQoTElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNL
X0NPTU1JVF9IQVNIKS9lbGVtZW50cy8pCj4+ICtlbmRpZgo+PiArCgpPaCwgeW91IHNob3VsZCBk
byB0aGlzIGFzIGJ1aWxkIHJ1bGUgd2l0aCBhY2NvcmRpbmcgZGVwZW5kZW5jaWVzIAppbnN0ZWFk
LiBZb3UgY291bGQgcnVuIHRoaXMgcmlnaHQgYWZ0ZXIgdGhlIHNvdXJjZXMgZ290IGV4dHJhY3Rl
ZCAKKGRlcGVuZCBpdCBvbiAkKExJQkNMSUNLX0JVSUxEKS8ub3JpZ2luKSBhbmQgYmVmb3JlIHRo
ZSBjb25maWd1cmUgc2NyaXB0IAppcyBjYWxsZWQuIFBsZWFzZSBhbHNvIHVzZSB0aGUgcHJvdmlk
ZWQgdmFyaWFibGVzIGZvciBNS0RJUiBhbmQgQ1AgCmNvbW1hbmQgYW5kIHRoZSBgdmVyYm9zZV9j
bWRgL2BidWlsZF9jbWRgIGNvbW1hbmQuIEFzIGl0IGxvb2tzIGxpa2Ugbm93LCAKaXQgY29waWVz
IHRoZXNlIGZpbGVzIHdoZW4gZXZlciBtYWtlIGlzIGludm9sdmVkLiBUaGlzIGFsc28gZW5mb3Jj
ZXMgYSAKcmUtY29tcGlsYXRpb24gb2YgdGhvc2UgZmlsZSBhbGwgdGhlIHRpbWUuIEJldHRlciB0
byBhZGQgdGhlbSBhcyAKZGVwZW5kZW5jeSB0aGVyZSwgdG9vLgoKPj4gKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4+ICsjIEhlbHBlcnMKPj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+ICtM
SUJDTElDS19FWFRSQUNURUQ9JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09N
TUlUX0hBU0gpCj4+ICtMSUJDTElDS19FTEVNRU5UU19ESVI9JChMSUJDTElDS19FWFRSQUNURUQp
L2VsZW1lbnRzCj4+ICtMSUJDTElDS19CVUlMRFRPT0w9JChMSUJDTElDS19FWFRSQUNURUQpL2Jp
bi9jbGljay1idWlsZHRvb2wKPj4gK0xJQkNMSUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRo
ZXJzd2l0Y2ggaWNtcCBpcCB1bmlrcmFmdCBcCj4+ICsJCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFy
ZCB0Y3B1ZHAgdGhyZWFkcwo+PiArCj4+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiArIyBD
b25maWcgTWVudSAtIEZpbHRlciB3aGljaCBlbGVtZW50IGNhdGVnb3JpZXMgYWN0dWFsbHkgZ2V0
IGJ1aWx0Cj4+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiArTElCQ0xJQ0tfRUxFTV9ESVJT
X1U9JChjYWxsIHVjLCQoTElCQ0xJQ0tfRUxFTV9ESVJTKSkKPj4gK0xJQkNMSUNLX0ZJTFRFUkVE
X0VMRU1fRElSU19VIDo9ICQoZm9yZWFjaCBWLCAkKExJQkNMSUNLX0VMRU1fRElSU19VKSwgXAo+
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpZiAkKGZpbHRlciB5LCQoQ09O
RklHX0xJQkNMSUNLX0VMRU1TXyRWKSksJFYpKQo+PiArTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9E
SVJTPSQoY2FsbCBsYywkKExJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSU19VKSkKPj4gKwo+PiAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPj4gKyMgQXBwLXNwZWNpZmljIFRhcmdldHMKPj4gKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+ICsKPj4gKyMgUnVuIENsaWNrJ3MgY29uZmlndXJlIHNj
cmlwdAo+PiArJChMSUJDTElDS19CVUlMRCkvLmNvbmZpZ3VyZWQ6ICQoTElCQ0xJQ0tfQlVJTEQp
Ly5vcmlnaW4KPj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsQ09ORklHVVJFLGxpYmFwcDogJEAsXAo+
PiArCSAgICAgICBjZCAkKExJQkNMSUNLX0VYVFJBQ1RFRCkgJiYgLi9jb25maWd1cmUgLS1lbmFi
bGUtbWluaW9zIC0td2l0aC14ZW49JChMSUJDTElDS19CVUlMRCkgLS13aXRoLW1pbmlvcz0kKExJ
QkNMSUNLX0JVSUxEKSAtLXdpdGgtbmV3bGliPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1sd2lw
PSQoTElCQ0xJQ0tfQlVJTEQpICYmIFwKPj4gKwkgICAgICAgJChUT1VDSCkgJEApCgoKQ291bGQg
eW91IGFkZCBhIHNob3J0IGNvbW1lbnQgd2h5IHdlIG5lZWQgdG8gcnVuIHRoaXMgY29uZmlndXJl
IHNjcmlwdCAKKGFzIGV4YW1wbGU6IGBiaW4vY2xpY2stYnVpbGR0b29sYCBpcyBnZW5lcmF0ZWQp
PwoKPj4gKwo+PiArIyBHZW5lcmF0ZSBlbGVtZW50IGJ1aWxkIHJ1bGVzIHVzaW5nIGNsaWNrLWJ1
aWxkdG9vbAo+PiArJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzbWs6ICQoTElCQ0xJQ0tfQlVJ
TEQpLy5jb25maWd1cmVkICQoVUtfQ09ORklHX09VVCkKPj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQs
RUxFTU1LLGxpYmFwcDogJEAsXAo+PiArCSAgICAgICBjZCAkKExJQkNMSUNLX0VMRU1FTlRTX0RJ
UikgJiYgZWNobyAiJChMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlMpIiB8ICQoTElCQ0xJQ0tf
QlVJTERUT09MKSBmaW5kZWxlbSAtciB1bmlrcmFmdCAtWCAkKExJQkNMSUNLX0JVSUxEKS9lbGVt
ZW50cy5leGNsdWRlIHwgZ3JlcCAtRSAiXlteI10iIHwgYXdrICd7cHJpbnQgIkxJQkNMSUNLX1NS
Q1MteSArPSAkJChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzLyIgJCQxfScgPiAkQCkKPj4g
Kwo+PiArIyBHZW5lcmF0ZSBlbGVtZW50cy5jYyBhbmQgYWRkIGl0IHRvIHRoZSBidWlsZCBsaXN0
Cj4+ICskKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYzogJChMSUJDTElDS19CVUlMRCkvLmVs
ZW1lbnRzbWsKPj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsRUxFTUNDLGxpYmFwcDogJEAsXAo+PiAr
CSAgICAgICBlY2hvICIkKExJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSUykiIHwgJChMSUJDTElD
S19CVUlMRFRPT0wpIGZpbmRlbGVtIC1yIHVuaWtyYWZ0IC1wICQoTElCQ0xJQ0tfRUxFTUVOVFNf
RElSKSAtWCAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5leGNsdWRlID4gJChMSUJDTElDS19C
VUlMRCkvLmVsZW1lbnRzY29uZiAmJiBcCj4+ICsJICAgICAgICQoTElCQ0xJQ0tfQlVJTERUT09M
KSBlbGVtMmV4cG9ydCA8ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c2NvbmYgPiAkKExJQkNM
SUNLX0JVSUxEKS9lbGVtZW50cy5jYykKPj4gKwo+PiArJChMSUJDTElDS19CVUlMRCkvLnByZXBh
cmVkOiAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYwo+PiArCj4+ICtVS19QUkVQQVJFICs9
ICQoTElCQ0xJQ0tfQlVJTEQpLy5wcmVwYXJlZAo+PiArCj4+ICsjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwo+PiArIyBBcHAgaW5jbHVkZXMsIGNvbXBpbGUgZmxhZ3MKPj4gKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4+ICtMSUJDTElDS19DSU5DTFVERVMgICArPSAtSSQoTElCQ0xJQ0tfQkFTRSkv
aW5jbHVkZSAgICAgICAgXAo+PiArCQkgICAgICAgIC1JJChMSUJDTElDS19FWFRSQUNURUQpCSAg
ICAgXAo+PiArCQkJLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkvaW5jbHVkZSBcCj4+ICsJCQktSSQo
TElCTFdJUF9MV0lQX1NSQ1MpL2luY2x1ZGUvcG9zaXgKPj4gK0xJQkNMSUNLX0NYWElOQ0xVREVT
ICs9IC1JJChMSUJDTElDS19CQVNFKS9pbmNsdWRlICAgICAgICBcCj4+ICsJCSAgICAgICAgLUkk
KExJQkNMSUNLX0VYVFJBQ1RFRCkgICAgICAgICAgIFwKPj4gKwkJCS1JJChMSUJDTElDS19FWFRS
QUNURUQpL2luY2x1ZGUgXAo+PiArCQkJLUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRlL3Bv
c2l4Cj4+ICsKPj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+ICsjIEdsb2JhbCBmbGFncwo+
PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPj4gK0xJQkNMSUNLX0NGTEFHUy15ICAgICAgICs9
IC1ETFdJUF9USU1FVkFMX1BSSVZBVEU9MCAtRENMSUNLX1VTRVJMRVZFTAo+PiArTElCQ0xJQ0tf
Q1hYRkxBR1MteSAgICAgKz0gLURMV0lQX1RJTUVWQUxfUFJJVkFURT0wIC1EQ0xJQ0tfVVNFUkxF
VkVMIC1ESEFWRV9JUDYKPj4gK0xJQkNMSUNLX0NYWEZMQUdTICAgICAgICs9IC1mbm8tZXhjZXB0
aW9ucyAtZm5vLXJ0dGkgLXN0ZD1jKysxMQo+PiArCj4+ICsjIFN1cHByZXNzIHNvbWUgd2Fybmlu
Z3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJvY2VzcyBsb29rIG5lYXRlcgo+PiArTElCQ0xJQ0tfU1VQ
UFJFU1NfRkxBR1MgOj0gLVduby1zdHJpY3QtYWxpYXNpbmcKPj4gK0xJQkNMSUNLX0NGTEFHUy15
ICs9ICQoTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MpCj4+ICtMSUJDTElDS19DWFhGTEFHUy15ICs9
ICQoTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MpCj4+ICsKPj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCj4+ICsjIFVuaWtyYWZ0IDwtPiBDbGljayBnbHVlIGNvZGUKPj4gKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19CQVNFKS9jbGljay5j
Ywo+PiArCj4+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiArIyBDbGljayBzb3VyY2VzCj4+
ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJ
Q0tfRVhUUkFDVEVEKS9saWIvYXJjaGl2ZS5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElC
Q0xJQ0tfRVhUUkFDVEVEKS9saWIvYXJncy5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElC
Q0xJQ0tfRVhUUkFDVEVEKS9saWIvYXRvbWljLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChM
SUJDTElDS19FWFRSQUNURUQpL2xpYi9iaWdoYXNobWFwX2FyZW5hLmNjCj4+ICtMSUJDTElDS19T
UkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9iaXR2ZWN0b3IuY2MKPj4gK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2NvbmZwYXJzZS5jYwo+PiAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvY3JjMzIuYwo+PiAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZHJpdmVyLmNjCj4+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lbGVtZW50LmNj
Cj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9lbGVtZmls
dGVyLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9l
cnJvci5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIv
ZXRoZXJhZGRyZXNzLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNU
RUQpL2xpYi9nYXByYXRlLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9nbHVlLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9oYW5kbGVyY2FsbC5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJ
Q0tfRVhUUkFDVEVEKS9saWIvaGFzaGFsbG9jYXRvci5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaW5fY2tzdW0uYwo+PiArTElCQ0xJQ0tfU1JDUy15
ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaW50ZWdlcnMuY2MKPj4gK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwYWRkcmVzcy5jYwo+PiArTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXBmbG93aWQuY2MKPj4gK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwdGFibGUuY2MKPj4g
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2xleGVyLmNjCj4+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9tYXN0ZXIuY2MK
Pj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL21kNS5jYwo+
PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbmFtZWluZm8u
Y2MKPj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL25vdGlm
aWVyLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9w
YWNrZXQuY2MKPj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3JvdXRlci5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9s
aWIvcm91dGVydGhyZWFkLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9yb3V0ZXJ2aXNpdG9yLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJD
TElDS19FWFRSQUNURUQpL2xpYi9zdHJhY2N1bS5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9ICQo
TElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvc3RyaW5nLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi90YXNrLmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi90aW1lci5jYwo+PiArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdGltZXJzZXQuY2MKPj4gK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVzdGFtcC5jYwo+PiArTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdmFyaWFibGVlbnYuY2MKPj4gK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwNnRhYmxlLmNjCj4+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZhZGRyZXNz
LmNjCj4+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZm
bG93aWQuY2MKPj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L3NlbGVjdHNldC5jYwo+PiArCj4+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+PiArIyBDbGlj
ayBlbGVtZW50cwo+PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPj4gK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYwo+PiArLWluY2x1ZGUgJChMSUJDTElD
S19CVUlMRCkvLmVsZW1lbnRzbWsKPj4gZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5t
ZAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi4yY2RlNWIwCj4+IC0t
LSAvZGV2L251bGwKPj4gKysrIGIvUkVBRE1FLm1kCj4+IEBAIC0wLDAgKzEsNSBAQAo+PiArQ2xp
Y2sgZm9yIFVuaWtyYWZ0Cj4+ICs9PT09PT09PT09PT09PT09PT09Cj4+ICsKPj4gK1BsZWFzZSBy
ZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0
aGUgYGRvYy9gCj4+ICtzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9y
eS4KPj4KPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVsCj4gCiA+CgpUaGFua3MsCgpTaW1vbgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:16:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:16: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 1hYTtw-0002L2-A1; Wed, 05 Jun 2019 11:16: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYTtv-0002Kt-EP
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:16:15 +0000
X-Inumbo-ID: 534ef75c-8783-11e9-84cd-87518dd677a1
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 534ef75c-8783-11e9-84cd-87518dd677a1;
 Wed, 05 Jun 2019 11:16:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B1F49F20A7;
 Wed,  5 Jun 2019 13:16:11 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ag7x9jxq5I0t; Wed,  5 Jun 2019 13:16:11 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7E597F2036;
 Wed,  5 Jun 2019 13:16:07 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 13:16:07
 +0200
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, Costin Lupu
 <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-2-florian.schmidt@neclab.eu>
 <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
 <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <35361bfc-e0c0-5f8c-86e6-66cb2f2dd83d@neclab.eu>
Date: Wed, 5 Jun 2019 13:16:07 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft 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 <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>

SGkgU2ltb24sCgpGZWxpcGUgYW5kIEkgZGVjaWRlZCB0byBzcGxpdCB0aGUgd29yayBvbiB0aG9z
ZS4gSSdsbCBjb21tZW50IG9uIHdoYXQgCkknbGwgZml4LgoKT24gNi81LzE5IDE6MTMgUE0sIFNp
bW9uIEt1ZW56ZXIgd3JvdGU6Cj4gSGV5IGFsbCwKPiAKPiBJIGhhdmUgYWN0dWFsbHkgc29tZSBj
b21tZW50cyBhYm91dCB0aGlzIHBhdGNoLiBTZWUgbXkgY29tbWVudHMgaW5saW5lLgo+IAo+IE9u
IDA1LjA2LjE5IDEwOjU2LCBDb3N0aW4gTHVwdSB3cm90ZToKPj4gUmV2aWV3ZWQtYnk6IENvc3Rp
biBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4+Cj4+IE9uIDYvNS8xOSAxMDozNSBBTSwg
RmxvcmlhbiBTY2htaWR0IHdyb3RlOgo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvQ29uZmln
LnVrCj4+PiBAQCAtMCwwICsxLDg2IEBACj4+PiArIyMjIEludmlzaWJsZSBvcHRpb24gZm9yIGRl
cGVuZGVuY2llcwo+Pj4gK2NvbmZpZyBBUFBfREVQRU5ERU5DSUVTCj4+PiArwqDCoMKgIGJvb2wK
Pj4+ICvCoMKgwqAgZGVmYXVsdCB5Cj4+PiArCj4+PiArbWVudWNvbmZpZyBMSUJDTElDSwo+Pj4g
K8KgwqDCoCBib29sICJUaGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIiCj4+PiArwqDCoMKgIGRlcGVu
ZHMgb24gSEFWRV9MSUJDCj4+PiArwqDCoMKgIHNlbGVjdCBMSUJMV0lQCj4+PiArwqDCoMKgIGRl
ZmF1bHQgeQo+IAo+IEl0IGlzIHByb2JhYmx5IGJldHRlciBpZiB5b3Ugc2VsZWN0IExJQk5FV0xJ
QiBpbnN0ZWFkIG9mIGNoZWNraW5nIGlmIGEgCj4gTElCQyBpcyB0aGVyZS4gSWYgd2UgYWRkIG1v
cmUgbGliYydzIGxhdGVyLCB3ZSBhbnl3YXkgbmVlZCB0byBjaGVjayBpZiAKPiBpdCBjb21waWxl
cy4gbmV3bGliIGlzIHRoZSB3b3JraW5nIGNvbmZpZ3VyYXRpb24uCgpPSywgSSdsbCBzZWxlY3Qg
TElCTkVXTElCLiBJIGFsc28gcmVhbGl6ZWQgdGhhdCBjbGljayBuZWVkcyB1a3VuaXN0ZCwgc28g
CkknbGwgYWxzbyBhZGQgc2VsZWN0IFVLVU5JU1RELgoKCj4+PiAtLS0gL2Rldi9udWxsCj4+PiAr
KysgYi9NYWtlZmlsZQo+Pj4gQEAgLTAsMCArMSw5IEBACj4+PiArVUtfUk9PVCA/PSAkKFBXRCkv
Li4vdW5pa3JhZnQKPj4+ICtVS19MSUJTID89ICQoUFdEKS8uLgo+Pj4gK0xJQlMgOj0gJChVS19M
SUJTKS9uZXdsaWI6JChVS19MSUJTKS9sd2lwCj4+PiArCj4gCj4gU28gZmFyLCB3ZSBoYWQgdGhl
IGZvbGxvd2luZyBkZWZhdWx0IGRlZmluaXRpb24gZm9yIFVLX1JPT1QgYW5kIFVLX0xJQlM6Cj4g
IMKgVUtfUk9PVCA/PSAkKFBXRCkvLi4vLi4vdW5pa3JhZnQKPiAgwqBVS19MSUJTID89ICQoUFdE
KS8uLi8uLi9saWJzCj4gRm9yIHNpbXBsaWNpdHkgd2Ugc2hvdWxkIHVzZSB0aGUgYXMgd2UgZG8g
d2l0aCB0aGUgYXBwbGljYXRpb25zIAo+IGBoZWxsb3dvcmxkYCBhbmQgYGh0dHByZXBseWAgc28g
dGhhdCB1c2VyIGNhbiBleHBlY3QgdGhlIHNhbWUgZGVmYXVsdCAKPiBkaXJlY3Rvcnkgc3RydWN0
dXJlLgoKCkknbGwgY2hhbmdlIHRoZSBwYXRocyBhY2NvcmRpbmdseS4KCj4+PiArIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMgCj4+Pgo+Pj4gKyMgQ2hlY2sgcmVxdWlyZW1lbnRzOiBDbGljayByZXF1
aXJlcyBuZXRkZXYgYWNjZXNzLCBzbyBMV0lQIG11c3Qgbm90IAo+Pj4gYXR0YWNoIHRoZW0KPj4+
ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAKPj4+Cj4+PiAraWZlcSAoJChDT05GSUdfTFdJUF9B
VVRPSUZBQ0UpLHkpCj4+PiArJChlcnJvciBDbGljayBjYW5ub3QgYmUgYnVpbHQgd2l0aCBMV0lQ
IG9wdGlvbiAiQXV0b21hdGljYWxseSBhdHRhY2ggCj4+PiBuZXRpZnMiISBQbGVhc2UgZGlzYWJs
ZSkKPj4+ICtlbmRpZgo+IAo+IENvdWxkIHlvdSBhZGQgYSBjb21tZW50IHdoeSB5b3UgYXJlIGRv
aW5nIHRoaXMgd2l0aCBhbiBlcnJvcj86IEtDb25maWcgCj4gdW5mb3J0dW5hdGVseSBkb2VzIG5v
dCBzdXBwb3J0IHRvIGB1bnNlbGVjdGAgYW4gY29uZmlndXJhdGlvbiBvcHRpb24uIEkgCj4gaG9w
ZSBwcm9ibGVtcyBsaWtlIHRoaXMgY2FuIGJlIGZpeGVkIGJ5IHVwZGF0aW5nIHRvIGEgcmVjZW50
IEtDb25maWcgCj4gc3lzdGVtLgoKCkknbGwgYWRkIGEgY29tbWVudC4KClRoZSByZXN0IGlzIHVw
IHRvIEZlbGlwZS4KCkNoZWVycywKRmxvcmlhbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:23:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:23: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 1hYU0h-0003Om-Ta; Wed, 05 Jun 2019 11:23: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=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYU0h-0003Og-5u
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:23:15 +0000
X-Inumbo-ID: 4c6e905e-8784-11e9-b192-5be84ae27aee
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4c6e905e-8784-11e9-b192-5be84ae27aee;
 Wed, 05 Jun 2019 11:23:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8FEACF20A7;
 Wed,  5 Jun 2019 13:23:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id d-m2yejYAv1I; Wed,  5 Jun 2019 13:23:09 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 63B99F2036;
 Wed,  5 Jun 2019 13:23:03 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 13:23:03 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREAD-EMBEDDED 1/2] patches: Add patch for making
 pte_handle a C++ structure
Thread-Index: AQHVG3TxVc7eiTNnE0WI7fKQmquRU6aM6ykA
Date: Wed, 5 Jun 2019 11:23:02 +0000
Message-ID: <908A3A93-1BF9-454D-99D6-3EF252C040D1@neclab.eu>
References: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
 <20190605080120.27552-2-costin.lupu@cs.pub.ro>
In-Reply-To: <20190605080120.27552-2-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <604D4FE3FEA9F640B01A9F3EC6C1FAF5@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED 1/2] patches: Add
 patch for making pte_handle a C++ structure
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Teodora Serbanescu <teo.serbanescu16@gmail.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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QsIHRoYW5rcy4NCg0KLS0gRmVsaXBl
DQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQoN
Cu+7v09uIDA1LjA2LjE5LCAxMDowMSwgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPiB3cm90ZToNCg0KICAgIFRoZSBDWFggbGlicmFyeSByZXF1aXJlcyBwdGhlX2hhbmRsZSB0
byBiZSBkZWZpbmVkIGFzIGEgQysrIHN0cnVjdHVyZS4gVGhpcw0KICAgIHBhdGNoIGFsc28gYWRk
cyB0aGUgb3ZlcmxvYWRlZCBvcGVyYXRvcnMgbmVlZGVkIGJ5IHRoZSBDWFggbGlicmFyeS4NCiAg
ICANCiAgICBTaWduZWQtb2ZmLWJ5OiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1
MTZAZ21haWwuY29tPg0KICAgIC0tLQ0KICAgICAuLi4vMDAwOS1NYWtlLXB0ZV9oYW5kbGUtYS1D
LXN0cnVjdHVyZS5wYXRjaCAgfCA2NiArKysrKysrKysrKysrKysrKysrDQogICAgIDEgZmlsZSBj
aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVz
LzAwMDktTWFrZS1wdGVfaGFuZGxlLWEtQy1zdHJ1Y3R1cmUucGF0Y2gNCiAgICANCiAgICBkaWZm
IC0tZ2l0IGEvcGF0Y2hlcy8wMDA5LU1ha2UtcHRlX2hhbmRsZS1hLUMtc3RydWN0dXJlLnBhdGNo
IGIvcGF0Y2hlcy8wMDA5LU1ha2UtcHRlX2hhbmRsZS1hLUMtc3RydWN0dXJlLnBhdGNoDQogICAg
bmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi5lMWQ1ZmI5DQogICAgLS0t
IC9kZXYvbnVsbA0KICAgICsrKyBiL3BhdGNoZXMvMDAwOS1NYWtlLXB0ZV9oYW5kbGUtYS1DLXN0
cnVjdHVyZS5wYXRjaA0KICAgIEBAIC0wLDAgKzEsNjYgQEANCiAgICArRnJvbSAxNDY1ZmMwYmNi
NTI4NjBkNjA3N2FlNzJhOGUyMzY0ODkwNDg1ZmQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0K
ICAgICtGcm9tOiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1MTZAZ21haWwuY29t
Pg0KICAgICtEYXRlOiBXZWQsIDUgSnVuIDIwMTkgMTA6NDU6MzYgKzAzMDANCiAgICArU3ViamVj
dDogW1VOSUtSQUZUL1BUSFJFQUQtRU1CRURERURdIE1ha2UgcHRlX2hhbmRsZSBhIEMrKyBzdHJ1
Y3R1cmUNCiAgICArDQogICAgK1RoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHRlX2hhbmRsZSBzdHJ1
Y3R1cmUgdG8gYSBDKysgc3RydWN0dXJlLCBhbHNvIGFkZGluZyB0aGUNCiAgICArb3ZlcmxvYWRl
ZCBvcGVyYXRvcnMgbmVlZGVkIGJ5IHRoZSBjeHggbGlicmFyeS4NCiAgICArDQogICAgK1NpZ25l
ZC1vZmYtYnk6IFRlb2RvcmEgU2VyYmFuZXNjdSA8dGVvLnNlcmJhbmVzY3UxNkBnbWFpbC5jb20+
DQogICAgKy0tLQ0KICAgICsgcHRocmVhZC5oIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysr
KysrKw0KICAgICsgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKykNCiAgICArDQogICAg
K2RpZmYgLS1naXQgYS9wdGhyZWFkLmggYi9wdGhyZWFkLmgNCiAgICAraW5kZXggMzNkZjQ0Ni4u
NDg2MjVhNCAxMDA2NDQNCiAgICArLS0tIGEvcHRocmVhZC5oDQogICAgKysrKyBiL3B0aHJlYWQu
aA0KICAgICtAQCAtMzg4LDEwICszODgsMjUgQEAgZW51bQ0KICAgICsgICAgICAqIHRoYXQgYXZh
aWxhYmxlIHdpdGggYSBzaW1wbGUgcG9pbnRlci4gSXQgc2hvdWxkIHNjYWxlIGZvciBlaXRoZXIN
CiAgICArICAgICAgKiBJQS0zMiBvciBJQS02NC4NCiAgICArICAgICAgKi8NCiAgICArKw0KICAg
ICsrI2lmZGVmIF9fY3BsdXNwbHVzDQogICAgKysgICAgdHlwZWRlZiBzdHJ1Y3QgcHRlX2hhbmRs
ZQ0KICAgICsrI2Vsc2UNCiAgICArICAgICB0eXBlZGVmIHN0cnVjdA0KICAgICsrI2VuZGlmDQog
ICAgKyAgICAgICB7DQogICAgKyAgICAgICAgIHZvaWQgKiBwOyAgICAgICAgICAgICAgICAgICAv
KiBQb2ludGVyIHRvIGFjdHVhbCBvYmplY3QgKi8NCiAgICArICAgICAgICAgdW5zaWduZWQgaW50
IHg7ICAgICAgICAgICAgIC8qIEV4dHJhIGluZm9ybWF0aW9uIC0gcmV1c2UgY291bnQgZXRjICov
DQogICAgKysNCiAgICArKyNpZmRlZiBfX2NwbHVzcGx1cw0KICAgICsrICAgICAgICBwdGVfaGFu
ZGxlKCkge307DQogICAgKysgICAgICAgIHB0ZV9oYW5kbGUoaW50IHB0cl92YWx1ZSkNCiAgICAr
KyAgICAgICAgew0KICAgICsrICAgICAgICAJdGhpcy0+cCA9IHJlaW50ZXJwcmV0X2Nhc3QgPHZv
aWQgKj4ocHRyX3ZhbHVlKTsNCiAgICArKyAgICAgICAgfQ0KICAgICsrICAgICAgICBpbmxpbmUg
c3RydWN0IHB0ZV9oYW5kbGUmIG9wZXJhdG9yPSh1bnNpZ25lZCBpbnQgcHRyX3ZhbHVlKTsNCiAg
ICArKyAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShpbnQgcHRyX3ZhbHVlKTsNCiAgICAr
KyNlbmRpZg0KICAgICsgICAgICAgfSBwdGVfaGFuZGxlX3Q7DQogICAgKyANCiAgICArICAgICB0
eXBlZGVmIHB0ZV9oYW5kbGVfdCBwdGhyZWFkX3Q7DQogICAgK0BAIC05OTQsNiArMTAwOSwxOSBA
QCBlbnVtDQogICAgKyAgICAgew0KICAgICsgICAgICAgICByZXR1cm4gKChzaXplX3QpIGwucCkg
PT0gKChzaXplX3QpIHIucCk7DQogICAgKyAgICAgfQ0KICAgICsrDQogICAgKysgICAgLyogT3Bl
cmF0b3IgdG8gY29tcGFyZSB0aGUgdGhyZWFkIHBvaW50ZXIgd2l0aCBhIGdpdmVuIHZhbHVlICov
DQogICAgKysgICAgYm9vbCBwdGVfaGFuZGxlX3Q6Om9wZXJhdG9yPT0oaW50IHB0cl92YWx1ZSkN
CiAgICArKyAgICB7DQogICAgKysgICAgICAgIHJldHVybiAoKHNpemVfdCkgdGhpcy0+cCkgPT0g
KChzaXplX3QpIChyZWludGVycHJldF9jYXN0IDx2b2lkICo+KHB0cl92YWx1ZSkpKTsNCiAgICAr
KyAgICB9DQogICAgKysNCiAgICArKyAgICAvKiBPcGVyYXRvciB0byBhc3NpZ24gYSBnaXZlbiB2
YWx1ZSB0byB0aGUgdGhyZWFkIHBvaW50ZXIgKi8NCiAgICArKyAgICBwdGVfaGFuZGxlX3QmIHB0
ZV9oYW5kbGVfdDo6b3BlcmF0b3I9KHVuc2lnbmVkIGludCBwdHJfdmFsdWUpDQogICAgKysgICAg
ew0KICAgICsrCQl0aGlzLT5wID0gcmVpbnRlcnByZXRfY2FzdCA8dm9pZCAqPihwdHJfdmFsdWUp
Ow0KICAgICsrCQlyZXR1cm4gKnRoaXM7DQogICAgKysgICAgfQ0KICAgICsgI2VuZGlmDQogICAg
KyANCiAgICArIA0KICAgICstLSANCiAgICArMi4yMC4xDQogICAgKw0KICAgIC0tIA0KICAgIDIu
MjAuMQ0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:23:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:23: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 1hYU11-0003Q6-Vk; Wed, 05 Jun 2019 11:23: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=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYU10-0003Pz-SY
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:23:34 +0000
X-Inumbo-ID: 5a0c09a8-8784-11e9-bf7a-17b28243f471
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5a0c09a8-8784-11e9-bf7a-17b28243f471;
 Wed, 05 Jun 2019 11:23:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 892E6F20A8;
 Wed,  5 Jun 2019 13:23:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MiTZOmJUSbux; Wed,  5 Jun 2019 13:23:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 61979F20A7;
 Wed,  5 Jun 2019 13:23:28 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 13:23:28 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREAD-EMBEDDED 2/2] Makefile.uk: Restrict
 pointer-to-int-cast and int-to-pointer-cast warnings only to C
Thread-Index: AQHVG3TxQLmPvNacYkCFDXR23nkZsaaM60aA
Date: Wed, 5 Jun 2019 11:23:27 +0000
Message-ID: <EED8E1AB-88C0-4320-8E18-B6977A5C53D6@neclab.eu>
References: <20190605080120.27552-1-costin.lupu@cs.pub.ro>
 <20190605080120.27552-3-costin.lupu@cs.pub.ro>
In-Reply-To: <20190605080120.27552-3-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <6BDDB131FA1237409260AE41BB38D0A6@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED 2/2] Makefile.uk:
 Restrict pointer-to-int-cast and int-to-pointer-cast warnings only to C
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QsIHRoYW5rcy4NCg0KLS0gRmVsaXBl
DQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQoN
Cu+7v09uIDA1LjA2LjE5LCAxMDowMSwgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPiB3cm90ZToNCg0KICAgIE90aGVyd2lzZSB3ZSBnZXQgd2FybmluZ3MgdGhhdCB0aGVzZSB3
YXJuaW5ncyBhcmUgb25seSBDIHNwZWNpZmljLg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IENv
c3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+DQogICAgLS0tDQogICAgIE1ha2VmaWxl
LnVrIHwgNCArKy0tDQogICAgIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs
ZXRpb25zKC0pDQogICAgDQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUu
dWsNCiAgICBpbmRleCBmZTk5NzYwLi44ZWU1ZDM2IDEwMDY0NA0KICAgIC0tLSBhL01ha2VmaWxl
LnVrDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAtNTIsMTEgKzUyLDExIEBAIENYWElO
Q0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURfRU1CRURERUQpICs9IC1JJChMSUJQVEhSRUFELUVN
QkVEREVEX0VYVFJBQ1RFRCkvDQogICAgICMgR2xvYmFsIGZsYWdzDQogICAgICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjDQogICAgIFNVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRl
ciBcDQogICAgLS1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCAtV25vLWludC10by1wb2ludGVyLWNh
c3QgXA0KICAgICAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLXVudXNlZC12YWx1ZSAtV25vLXVu
dXNlZC1mdW5jdGlvbiBcDQogICAgIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMNCiAg
ICAgDQogICAgLUxJQlBUSFJFQUQtRU1CRURERURfQ0ZMQUdTLXkgICArPSAkKFNVUFBSRVNTX0ZM
QUdTKQ0KICAgICtMSUJQVEhSRUFELUVNQkVEREVEX0NGTEFHUy15ICAgKz0gJChTVVBQUkVTU19G
TEFHUykgXA0KICAgICsJLVduby1wb2ludGVyLXRvLWludC1jYXN0IC1Xbm8taW50LXRvLXBvaW50
ZXItY2FzdA0KICAgICBMSUJQVEhSRUFELUVNQkVEREVEX0NYWEZMQUdTLXkgKz0gJChTVVBQUkVT
U19GTEFHUykNCiAgICAgDQogICAgIExJQlBUSFJFQUQtRU1CRURERURfRVhQT1JUUyA9ICQoTElC
UFRIUkVBRC1FTUJFRERFRF9CQVNFKS9leHBvcnRzeW1zLnVrDQogICAgLS0gDQogICAgMi4yMC4x
DQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:28:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:28: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 1hYU5u-0003a1-Lk; Wed, 05 Jun 2019 11:28:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYU5t-0003Zv-9n
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:28:37 +0000
X-Inumbo-ID: 0cf03137-8785-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0cf03137-8785-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 11:28:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9375FF20A8;
 Wed,  5 Jun 2019 13:28:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id V2dS3M25HMnr; Wed,  5 Jun 2019 13:28:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6A623F20A7;
 Wed,  5 Jun 2019 13:28:24 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 13:28:24 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
Thread-Index: AQHVGxe++3W6AYMndE2Qw3eKn4A3VKaM7WKA
Date: Wed, 5 Jun 2019 11:28:24 +0000
Message-ID: <7559C480-0C5A-41E3-A031-4FB8AB45630B@neclab.eu>
References: <20190604205439.25979-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190604205439.25979-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <A0E93FF6F9B1984F958FFEEDBA357010@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBCXX PATCH v2] Enable threads support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.ro>, Teodora
 Serbanescu <teo.serbanescu16@gmail.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>

SGkgQ29zdGluLA0KDQpUaGlzIHBhdGNoIGxvb2tzIGdvb2QsIHRoYW5rcy4NCg0KLS0gRmVsaXBl
DQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQoN
Cu+7v09uIDA0LjA2LjE5LCAyMjo1NCwgIkNvc3RpbiBMdXB1IiA8Y29zdGluLmx1cHVAY3MucHVi
LnJvPiB3cm90ZToNCg0KICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyB0aGUgbWFjcm9zIGFuZCBhZGRz
IHRoZSBoYXNodGFibGUgdGVtcGxhdGUgcmVxdWlyZWQgZm9yDQogICAgZW5hYmxpbmcgdGhyZWFk
cyBzdXBwb3J0IGluIGN4eCBsaWJyYXJ5Lg0KICAgIA0KICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQt
QW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCiAgICBT
aWduZWQtb2ZmLWJ5OiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1MTZAZ21haWwu
Y29tPg0KICAgIFNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIu
cm8+DQogICAgLS0tDQogICAgIENvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICA2ICsrKw0KICAgICBNYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgNSArKw0KICAgICAuLi4tQWRkLWhhc2h0YWJsZS10ZW1wbGF0ZS1mb3It
cHRocmVhZHMucGF0Y2ggfCA1MSArKysrKysrKysrKysrKysrKysrDQogICAgIDMgZmlsZXMgY2hh
bmdlZCwgNjIgaW5zZXJ0aW9ucygrKQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8w
MDAzLUFkZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoDQogICAgDQogICAg
ZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KICAgIGluZGV4IDk5NjI2NjkuLjE2
YTExZGMgMTAwNjQ0DQogICAgLS0tIGEvQ29uZmlnLnVrDQogICAgKysrIGIvQ29uZmlnLnVrDQog
ICAgQEAgLTQsMyArNCw5IEBAIG1lbnVjb25maWcgTElCQ1hYDQogICAgIAlzZWxlY3QgTElCQ1hY
QUJJDQogICAgIAlzZWxlY3QgTElCVU5XSU5EDQogICAgICAgICBkZWZhdWx0IG4NCiAgICArDQog
ICAgK2lmIExJQkNYWA0KICAgICtjb25maWcgQ1hYX1RIUkVBRFMNCiAgICArICAgIGJvb2wgIkVu
YWJsZSBDWFggdGhyZWFkcyBzdXBwb3J0Ig0KICAgICsgICAgZGVmYXVsdCBuDQogICAgK2VuZGlm
DQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICBpbmRleCBh
NDU1Mzg2Li5iNjczZjcyIDEwMDY0NA0KICAgIC0tLSBhL01ha2VmaWxlLnVrDQogICAgKysrIGIv
TWFrZWZpbGUudWsNCiAgICBAQCAtOTYsNiArOTYsMTEgQEAgQ09ORklHX0ZMQUdTIAkrPSAtRCBM
SUJDWFhfQlVJTERJTkdfTElCQ1hYQUJJIAlcDQogICAgIAkJLUQgX0xJQkNQUF9QUk9WSURFU19E
RUZBVUxUX1JVTkVfVEFCTEUgLUQgX19EWU5BTUlDX1JFRU5UX18JXA0KICAgICANCiAgICAgDQog
ICAgK2lmZGVmIENPTkZJR19DWFhfVEhSRUFEUw0KICAgICtDT05GSUdfRkxBR1MgKz0gLURfX2xp
bnV4X18gLURfTElCQ1BQX0hBU19USFJFQURfQVBJX1BUSFJFQUQNCiAgICArZWxzZQ0KICAgICtD
T05GSUdfRkxBR1MgKz0gLURfTElCQ1BQX0hBU19OT19USFJFQURTDQogICAgK2VuZGlmDQogICAg
IA0KICAgICBMSUJDWFhfQ0ZMQUdTLXkgICAgKz0gICAkKENPTkZJR19GTEFHUykNCiAgICAgTElC
Q1hYX0NYWEZMQUdTLXkgICAgKz0gICAkKENPTkZJR19GTEFHUykNCiAgICBkaWZmIC0tZ2l0IGEv
cGF0Y2hlcy8wMDAzLUFkZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoIGIv
cGF0Y2hlcy8wMDAzLUFkZC1oYXNodGFibGUtdGVtcGxhdGUtZm9yLXB0aHJlYWRzLnBhdGNoDQog
ICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi42YTk5MDYyDQogICAg
LS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL3BhdGNoZXMvMDAwMy1BZGQtaGFzaHRhYmxlLXRlbXBs
YXRlLWZvci1wdGhyZWFkcy5wYXRjaA0KICAgIEBAIC0wLDAgKzEsNTEgQEANCiAgICArRnJvbSAy
MTVhZTZmMDc5YzlkM2UxZWQyMWZjNTQ5ZTQxZWY1ZDZkNzk2ZDcxIE1vbiBTZXAgMTcgMDA6MDA6
MDAgMjAwMQ0KICAgICtGcm9tOiBUZW9kb3JhIFNlcmJhbmVzY3UgPHRlby5zZXJiYW5lc2N1MTZA
Z21haWwuY29tPg0KICAgICtEYXRlOiBUaHUsIDE4IEFwciAyMDE5IDE1OjE1OjMzICswMzAwDQog
ICAgK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGhhc2h0YWJsZSB0ZW1wbGF0ZSBmb3IgcHRocmVhZHMN
CiAgICArDQogICAgK1NpZ25lZC1vZmYtYnk6IFRlb2RvcmEgU2VyYmFuZXNjdSA8dGVvLnNlcmJh
bmVzY3UxNkBnbWFpbC5jb20+DQogICAgKy0tLQ0KICAgICsgaW5jbHVkZS91dGlsaXR5IHwgMjAg
KysrKysrKysrKysrKysrKysrKysrDQogICAgKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9u
cygrKQ0KICAgICsNCiAgICArZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbGl0eSBiL2luY2x1ZGUv
dXRpbGl0eQ0KICAgICtpbmRleCBlZDliZjAzLi5jNWI3NGZkIDEwMDY0NA0KICAgICstLS0gYS9p
bmNsdWRlL3V0aWxpdHkNCiAgICArKysrIGIvaW5jbHVkZS91dGlsaXR5DQogICAgK0BAIC0yMDUs
NiArMjA1LDEwIEBAIHRlbXBsYXRlIDxzaXplX3QgST4NCiAgICArICNpbmNsdWRlIDxjc3RkaW50
Pg0KICAgICsgI2luY2x1ZGUgPF9fZGVidWc+DQogICAgKw0KICAgICsrI2lmIGRlZmluZWQoX0xJ
QkNQUF9IQVNfVEhSRUFEX0FQSV9QVEhSRUFEKQ0KICAgICsrI2luY2x1ZGUgPHB0aHJlYWQuaD4N
CiAgICArKyNlbmRpZg0KICAgICsrDQogICAgKyAjaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9f
UFJBR01BX1NZU1RFTV9IRUFERVIpDQogICAgKyAjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyDQog
ICAgKyAjZW5kaWYNCiAgICArQEAgLTE0NzMsNiArMTQ3OCwyMiBAQCBzdHJ1Y3QgX0xJQkNQUF9U
RU1QTEFURV9WSVMgaGFzaDxkb3VibGU+DQogICAgKyAgICAgfQ0KICAgICsgfTsNCiAgICArIA0K
ICAgICsrI2lmIGRlZmluZWQoX0xJQkNQUF9IQVNfVEhSRUFEX0FQSV9QVEhSRUFEKQ0KICAgICsr
dGVtcGxhdGUgPD4NCiAgICArK3N0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBoYXNoPHB0aHJl
YWRfdD4NCiAgICArKyAgICA6IHB1YmxpYyBfX3NjYWxhcl9oYXNoPHNpemVfdD4NCiAgICArK3sN
CiAgICArKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZDQogICAgKysgICAgc2l6ZV90IG9w
ZXJhdG9yKCkocHRocmVhZF90IF9fdikgY29uc3QgX05PRVhDRVBUDQogICAgKysgICAgew0KICAg
ICsrICAgICAgIC8vIC0wLjAgYW5kIDAuMCBzaG91bGQgcmV0dXJuIHNhbWUgaGFzaA0KICAgICsr
ICAgICAgIGlmIChfX3YgPT0gMCkNCiAgICArKyAgICAgICAgICAgcmV0dXJuIDA7DQogICAgKysg
ICAgICAgIHJldHVybiBfX3NjYWxhcl9oYXNoPHNpemVfdD46Om9wZXJhdG9yKCkoKHNpemVfdCkg
X192LnApOw0KICAgICsrICAgIH0NCiAgICArK307DQogICAgKysjZW5kaWYNCiAgICArKw0KICAg
ICsgdGVtcGxhdGUgPD4NCiAgICArIHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBoYXNoPGxv
bmcgZG91YmxlPg0KICAgICsgICAgIDogcHVibGljIF9fc2NhbGFyX2hhc2g8bG9uZyBkb3VibGU+
DQogICAgKy0tIA0KICAgICsyLjExLjANCiAgICArDQogICAgLS0gDQogICAgMi4yMC4xDQogICAg
DQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:36:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:36: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 1hYUDq-0004rm-6z; Wed, 05 Jun 2019 11:36:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYUDo-0004rh-Q0
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:36:48 +0000
X-Inumbo-ID: 330cf7e5-8786-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 330cf7e5-8786-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 11:36:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 11E87F2038;
 Wed,  5 Jun 2019 13:36:46 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id XMgXP9pv2T60; Wed,  5 Jun 2019 13:36:45 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id DC021F2036;
 Wed,  5 Jun 2019 13:36:41 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 13:36:41 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, Costin Lupu
 <costin.lup@gmail.com>, Florian Schmidt <Florian.Schmidt@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft files
Thread-Index: AQHVG3FUBJwhUFjs1E27ngNM6scG1aaMoNOAgAAmFACAACgYAA==
Date: Wed, 5 Jun 2019 11:36:40 +0000
Message-ID: <FDD59730-CA4F-4E7B-96D0-B21B1A1FFEE4@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-2-florian.schmidt@neclab.eu>
 <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
 <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
In-Reply-To: <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <CD7EE2078EFCD648A3EDFF37DF74DDE9@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2ltb24sDQoNClBsZWFzZSBzZWUgaW5saW5lLg0KDQotLSBGZWxpcGUNCg0KICAgID4+ICsj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4+ICsjIENvcHkgVW5pa3JhZnQgZnJvbS90byBk
ZXZpY2VzDQogICAgPj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgPj4gK2lmbmVxICgk
KENPTkZJR19MSUJDTElDS19FTEVNU19VTklLUkFGVCksKQ0KICAgID4+ICskKHNoZWxsIG1rZGly
IC1wICQoTElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKS9lbGVt
ZW50cykNCiAgICA+PiArJChzaGVsbCBjcCAtciAkKExJQkNMSUNLX0JBU0UpL3VuaWtyYWZ0ICQo
TElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKS9lbGVtZW50cy8p
DQogICAgPj4gK2VuZGlmDQogICAgPj4gKw0KICAgIA0KICAgIE9oLCB5b3Ugc2hvdWxkIGRvIHRo
aXMgYXMgYnVpbGQgcnVsZSB3aXRoIGFjY29yZGluZyBkZXBlbmRlbmNpZXMgDQogICAgaW5zdGVh
ZC4gWW91IGNvdWxkIHJ1biB0aGlzIHJpZ2h0IGFmdGVyIHRoZSBzb3VyY2VzIGdvdCBleHRyYWN0
ZWQgDQogICAgKGRlcGVuZCBpdCBvbiAkKExJQkNMSUNLX0JVSUxEKS8ub3JpZ2luKSBhbmQgYmVm
b3JlIHRoZSBjb25maWd1cmUgc2NyaXB0IA0KICAgIGlzIGNhbGxlZC4gUGxlYXNlIGFsc28gdXNl
IHRoZSBwcm92aWRlZCB2YXJpYWJsZXMgZm9yIE1LRElSIGFuZCBDUCANCiAgICBjb21tYW5kIGFu
ZCB0aGUgYHZlcmJvc2VfY21kYC9gYnVpbGRfY21kYCBjb21tYW5kLiBBcyBpdCBsb29rcyBsaWtl
IG5vdywgDQogICAgaXQgY29waWVzIHRoZXNlIGZpbGVzIHdoZW4gZXZlciBtYWtlIGlzIGludm9s
dmVkLiBUaGlzIGFsc28gZW5mb3JjZXMgYSANCiAgICByZS1jb21waWxhdGlvbiBvZiB0aG9zZSBm
aWxlIGFsbCB0aGUgdGltZS4gQmV0dGVyIHRvIGFkZCB0aGVtIGFzIA0KICAgIGRlcGVuZGVuY3kg
dGhlcmUsIHRvby4NCg0KPiBPaywgd2lsbCBkby4NCiAgICANCiAgICA+PiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMNCiAgICA+PiArIyBBcHAtc3BlY2lmaWMgVGFyZ2V0cw0KICAgID4+ICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4+ICsNCiAgICA+PiArIyBSdW4gQ2xpY2sncyBjb25m
aWd1cmUgc2NyaXB0DQogICAgPj4gKyQoTElCQ0xJQ0tfQlVJTEQpLy5jb25maWd1cmVkOiAkKExJ
QkNMSUNLX0JVSUxEKS8ub3JpZ2luDQogICAgPj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsQ09ORklH
VVJFLGxpYmFwcDogJEAsXA0KICAgID4+ICsJICAgICAgIGNkICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KSAmJiAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1taW5pb3MgLS13aXRoLXhlbj0kKExJQkNMSUNLX0JV
SUxEKSAtLXdpdGgtbWluaW9zPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1uZXdsaWI9JChMSUJD
TElDS19CVUlMRCkgLS13aXRoLWx3aXA9JChMSUJDTElDS19CVUlMRCkgJiYgXA0KICAgID4+ICsJ
ICAgICAgICQoVE9VQ0gpICRAKQ0KICAgIA0KICAgIA0KICAgIENvdWxkIHlvdSBhZGQgYSBzaG9y
dCBjb21tZW50IHdoeSB3ZSBuZWVkIHRvIHJ1biB0aGlzIGNvbmZpZ3VyZSBzY3JpcHQgDQogICAg
KGFzIGV4YW1wbGU6IGBiaW4vY2xpY2stYnVpbGR0b29sYCBpcyBnZW5lcmF0ZWQpPw0KDQo+IE9r
Lg0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:37:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:37: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 1hYUEp-0004tc-CS; Wed, 05 Jun 2019 11:37:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYUEo-0004tS-GN
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:37:50 +0000
X-Inumbo-ID: 57e0761b-8786-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 57e0761b-8786-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 11:37:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 61721104B74;
 Wed,  5 Jun 2019 13:36:49 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 12Wekx_uCra9; Wed,  5 Jun 2019 13:36:49 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3CD36104B36
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 13:36:49 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 13:36:49
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-6-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <66e7992f-a6ac-2ca4-0455-95bb0771b446@neclab.eu>
Date: Wed, 5 Jun 2019 13:36:33 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-6-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 05/10] lib/syscall_shim:
 generate base headers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

T24gMDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhlIGZvbGxvd2luZyBo
ZWFkZXJzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGNvZGUgaW4gdGhpcyBwYXRjaDoKPiAgICAtIHN5
c2NhbGxfbnJzLmggLSBqdXN0IGRlZmluaXRpb25zIG9mIGFsbCB0aGUgc3lzY2FsbHMgd2l0aCB0
aGVpcgo+ICAgICAgbnVtYmVycwo+ICAgIC0gc3lzY2FsbF9tYXAuaCAgLSBwcm92aWRlcyBtYXBz
IGZyb20gc3lzY2FsbCBudW1iZXIgdG8gYSBjb25jcmV0ZQo+ICAgICAgZnVuY3Rpb24gaW4gdGhl
IFVuaWthcmZ0Cj4gICAgLSBzeXNjYWxsX3N0dWJzLmggLSBpZiBubyBsaWJyYXJ5IGlzIHByb3Zp
ZGluZyBhIHN5c2NhbGwsIGl0IHdpbGwgYmUKPiAgICAgIHJlc29sdmVkIHRvIGEgc3R1YiwgZGVm
aW5lZCBpbiB0aGlzIGZpbGUKPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJp
LnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi9Db25maWcudWsgICAgICAgICAgICAg
ICAgICB8ICAxICsKPiAgIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8ICAxICsKPiAg
IGxpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrICAgICB8ICAzICsrKwo+ICAgbGliL3N5c2NhbGxf
c2hpbS9NYWtlZmlsZS51ayAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwo+ICAgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrIHwgIDggKysrKysrKwo+ICAgNSBm
aWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3N5c2NhbGxfc2hpbS9Db25maWcudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2Fs
bF9zaGltL01ha2VmaWxlLnVrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hp
bS9nZW5fc3R1YnMuYXdrCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9Db25maWcudWsgYi9saWIvQ29u
ZmlnLnVrCj4gaW5kZXggODIyYzYyNGYuLmI1MTdhYmQ4IDEwMDY0NAo+IC0tLSBhL2xpYi9Db25m
aWcudWsKPiArKysgYi9saWIvQ29uZmlnLnVrCj4gQEAgLTQ3LDMgKzQ3LDQgQEAgc291cmNlICJs
aWIvdWtzd3JhbmQvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtidXMvQ29uZmlnLnVrIgo+
ICAgc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtuZXRk
ZXYvQ29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrIgo+IGRp
ZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIvTWFrZWZpbGUudWsKPiBpbmRleCBkMDY4
MzdmMS4uZTY2NjQ5NTIgMTAwNjQ0Cj4gLS0tIGEvbGliL01ha2VmaWxlLnVrCj4gKysrIGIvbGli
L01ha2VmaWxlLnVrCj4gQEAgLTI0LDMgKzI0LDQgQEAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xp
YiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQo+ICAgJChldmFsICQoY2FsbCBfaW1wb3J0
X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQo+ICAgJChldmFsICQoY2FsbCBfaW1w
b3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xpc3QpKQo+ICAgJChldmFsICQoY2Fs
bCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtuZXRkZXYpKQo+ICskKGV2YWwg
JChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi9zeXNjYWxsX3NoaW0pKQo+
IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL0NvbmZpZy51ayBiL2xpYi9zeXNjYWxsX3No
aW0vQ29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZjg4
Y2Y5NzAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsK
PiBAQCAtMCwwICsxLDMgQEAKPiArY29uZmlnIExJQlNZU0NBTExfU0hJTQo+ICsJYm9vbCAiU3lz
Y2FsbCBzaGltIGxheWVyIgo+ICsJZGVmYXVsdCBuCj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxs
X3NoaW0vTWFrZWZpbGUudWsgYi9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uNTJhMTJmMTgKPiAtLS0gL2Rldi9udWxs
Cj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IEBAIC0wLDAgKzEsNDAgQEAK
PiArJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJzeXNjYWxsX3NoaW0sJChDT05GSUdfTElCU1lT
Q0FMTF9TSElNKSkpCj4gKwo+ICtfX0dFTl9JTkNMVURFU19QQVRIIDo9ICQoTElCU1lTQ0FMTF9T
SElNX0JVSUxEKS9pbmNsdWRlL3VrL2JpdHMKCk9uZSBjb21tZW50IHRvIHRoZSBgX19gIHByZWZp
eGVkIHZhcmlhYmxlczogSSBwcmVmZXIgYWxsIG9mIHRoZW0gdG8gYmUgCm5hbWVzcGFjZWQgd2l0
aCBgTElCU1lTQ0FMTF9TSElNX2AgaW5zdGVhZC4gV2UgaGF2ZSBqdXN0IHRoaXMgYXMgCm5hbWVz
cGFjaW5nIHNjaGVtZSBzbyBmYXIgYW5kIGl0IGFsc28gbWFrZXMgYG1ha2UgcHJpbnQtdmFyc2Ag
bW9yZSAKdW5kZXJzdGFuZGFibGUuCgo+ICsKPiArX19QSE9OWV9HRU5fU1JDIDo9IHN5c2NhbGxf
bWFwLmggc3lzY2FsbF9zdHVicy5oIHN5c2NhbGxfbnJzLmgKPiArX19QSE9OWV9HRU5fU1JDIDo9
ICQoYWRkcHJlZml4ICQoX19HRU5fSU5DTFVERVNfUEFUSCkvLCAkKF9fUEhPTllfR0VOX1NSQykp
Cj4gK19fUEhPTllfR0VOX1NSQ19ORVcgOj0gJChhZGRzdWZmaXggLm5ldywgJChfX1BIT05ZX0dF
Tl9TUkMpKQo+ICsKPiArVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0pICs9ICQo
X19QSE9OWV9HRU5fU1JDKQo+ICsKPiArCj4gK19fU1lTQ0FMTF9TSElNX1RFTVBMIDo9ICQoTElC
U1lTQ0FMTF9TSElNX0JBU0UpL2FyY2gvJChDT05GSUdfVUtfQVJDSCkvc3lzY2FsbC5oLmluCj4g
Kwo+ICskKGNhbGwgdWtfbWtfZGlyLCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpKQoKSHVtLCBub3cg
SSB1bmRlcnN0YW5kIHdoYXQgeW91IHdhbnQgdG8gZG8uIEluIHRoaXMgY2FzZSB5b3UgYXJlIGx1
Y2t5IAphbmQgY3JlYXRlIGEgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnkuIE1h
eWJlIGEgCmBta19saWJfc3ViX2RpcmAgd291bGQgbWFrZSBtb3JlIHNlbnNlIHRoYW4gYSBnZW5l
cmFsIGB1a19ta19kaXJgLiBJIApjb3VsZCBpbWFnaW5lIHRoZSBmb2xsb3dpbmcgc3ludGF4IHdp
dGhpbiB0aGlzIGZpbGU6CgokKGNhbGwgbWtfbGliX3N1Yl9kaXIsbGlic3lzY2FsbF9zaGltLGlu
Y2x1ZGUvdWsvYml0cykKCk9yIG1heWJlIGV2ZW46CgpfX0dFTl9JTkNMVURFU19QQVRIIDo9ICQo
Y2FsbCBsaWJfc3ViX2RpcixsaWJzeXNjYWxsX3NoaW0saW5jbHVkZS91ay9iaXRzKQoKPiArCj4g
Ky5QSE9OWTogJChfX1BIT05ZX0dFTl9TUkNfTkVXKQo+ICsKPiArJChfX1BIT05ZX0dFTl9TUkMp
OiAlOiAlLm5ldwo+ICsJQGNtcCAtcyAkXiAkQDsgaWYgWyAkJD8gLW5lIDAgXTsgdGhlbiBjcCAk
XiAkQDsgZmkKPiArCj4gKyQoX19HRU5fSU5DTFVERVNfUEFUSCkvc3lzY2FsbF9ucnMuaC5uZXc6
Cj4gKwkkKFEpIGF3ayAnQkVHSU4ge3ByaW50ICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
aWxlOyBETyBOT1QgRURJVCAqLyJ9IFwKPiArCQl7cHJpbnRmICJcbiNkZWZpbmUgU1lTXyVzXHRc
dCVzIiwgXAo+ICsJCXN1YnN0cigkJDIsNiksJCQzfScgXAo+ICsJCSQoX19TWVNDQUxMX1NISU1f
VEVNUEwpID4gJEAKPiArCj4gKyQoX19HRU5fSU5DTFVERVNfUEFUSCkvc3lzY2FsbF9tYXAuaC5u
ZXc6Cj4gKwkkKFEpIGF3ayAnQkVHSU4gXAo+ICsJCXtwcmludCAiLyogQXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZmlsZTsgRE8gTk9UIEVESVQgKi9cbiJ9IFwKPiArCQkvI2RlZmluZSBfX05SXy97
XAo+ICsJCQlwcmludGYgIiNkZWZpbmUgdWtfc3lzY2FsbF9mbl8lcyguLi4pIHVrX3N5c2NhbGxf
JXMoX19WQV9BUkdTX18pXG4iLCBcCj4gKwkJCQkkJDMsc3Vic3RyKCQkMiw2KVwKPiArCQl9JyBc
Cj4gKwkJJChfX1NZU0NBTExfU0hJTV9URU1QTCkgPiAkQAoKWW91IHVzZWQgYCQoQVdLKWAgaW5z
dGVhZCBvZiBgYXdrYCBpbiB0aGUgZm9sbG93aW5nIHJ1bGUuIENvdWxkIHlvdSB1c2UgCmAkKEFX
SylgIGV2ZXJ5d2hlcmUgaW5zdGVhZD8KSW5zdGVhZCBvZiBtYWtpbmcgYWxsIHRoZXNlIHJ1bGVz
IHF1aWV0LCBjb3VsZCB5b3UgbWFrZSB0aGVtIGFzIGEgCnByZXR0eS1wcmludGVkIGJ1aWxkIGNv
bW1hbmQgKGBidWlsZF9jbWRgKT8KQWxzbywgd291bGRuJ3QgYmUgYC5nZW5gIGJlIGEgbmljZXIg
ZXh0ZW5zaW9uIHRoYW4gYC5uZXdgPwoKPiArCj4gKyQoX19HRU5fSU5DTFVERVNfUEFUSCkvc3lz
Y2FsbF9zdHVicy5oLm5ldzoKPiArCSQoUSkgJChBV0spIC1mICQoTElCU1lTQ0FMTF9TSElNX0JB
U0UpL2dlbl9zdHVicy5hd2sgXAo+ICsJCSQoX19TWVNDQUxMX1NISU1fVEVNUEwpID4gJEAKPiAr
CgpJIHRoaW5rIGFsbCBvZiB0aG9zZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJlY29tZSBwYXJ0
IG9mIHRoZSBwcmVwYXJlIApzdGVwLCByaWdodD86CgogIFVLX1BSRVBBUkUtJChDT05GSUdfTElC
U1lTQ0FMTF9TSElNKSArPSAkKF9fUEhPTllfR0VOX1NSQ19ORVcpCgo+ICtMSUJTWVNDQUxMX1NI
SU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX1BIT05ZX0dFTl9TUkNfTkVXKQo+IGRp
ZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2dlbl9zdHVicy5hd2sgYi9saWIvc3lzY2FsbF9z
aGltL2dlbl9zdHVicy5hd2sKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw
Li45ZTBhZDZjNgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9z
dHVicy5hd2sKPiBAQCAtMCwwICsxLDggQEAKPiArQkVHSU4geyBwcmludCAiLyogQXV0byBnZW5l
cmF0ZWQgZmlsZS4gRG8gbm90IGVkaXQgKi8iIH0KPiArewo+ICsJbmFtZSA9IHN1YnN0cigkMiw2
KTsKPiArCXVrX25hbWUgPSAidWtfc3lzY2FsbF8iIG5hbWUKPiArCXByaW50ZiAiXG4jaWZuZGVm
IEhBVkVfJXMiLCB1a19uYW1lOwo+ICsJcHJpbnRmICJcbiNkZWZpbmUgJXMoLi4uKSB1a19zeXNj
YWxsX3N0dWIoXCIlc1wiKSIsIHVrX25hbWUsIG5hbWU7Cj4gKwlwcmludGYgIlxuI2VuZGlmIC8q
IEhBVkVfJXMgKi9cbiIsIHVrX25hbWU7Cj4gK30KPiAKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:38:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:38: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 1hYUFc-0004vI-Fo; Wed, 05 Jun 2019 11:38:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYUFa-0004vD-VS
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:38:39 +0000
X-Inumbo-ID: 750c8cb2-8786-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 750c8cb2-8786-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 11:38:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B216CF2038;
 Wed,  5 Jun 2019 13:38:36 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id we1PyP7a1hSL; Wed,  5 Jun 2019 13:38:36 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8122AF2036;
 Wed,  5 Jun 2019 13:38:32 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 13:38:32
 +0200
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, Costin Lupu
 <costin.lup@gmail.com>, <minios-devel@lists.xen.org>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-2-florian.schmidt@neclab.eu>
 <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
 <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
 <35361bfc-e0c0-5f8c-86e6-66cb2f2dd83d@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <14e93ea7-707b-dff8-73a4-1e9c8cfc5c63@neclab.eu>
Date: Wed, 5 Jun 2019 13:38:16 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <35361bfc-e0c0-5f8c-86e6-66cb2f2dd83d@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft 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 <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>

R3JlYXQsIHRoYW5rcyBhIGxvdC4KCk9uIDA1LjA2LjE5IDEzOjE2LCBGbG9yaWFuIFNjaG1pZHQg
d3JvdGU6Cj4gSGkgU2ltb24sCj4gCj4gRmVsaXBlIGFuZCBJIGRlY2lkZWQgdG8gc3BsaXQgdGhl
IHdvcmsgb24gdGhvc2UuIEknbGwgY29tbWVudCBvbiB3aGF0IAo+IEknbGwgZml4Lgo+IAo+IE9u
IDYvNS8xOSAxOjEzIFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+PiBIZXkgYWxsLAo+Pgo+PiBJ
IGhhdmUgYWN0dWFsbHkgc29tZSBjb21tZW50cyBhYm91dCB0aGlzIHBhdGNoLiBTZWUgbXkgY29t
bWVudHMgaW5saW5lLgo+Pgo+PiBPbiAwNS4wNi4xOSAxMDo1NiwgQ29zdGluIEx1cHUgd3JvdGU6
Cj4+PiBSZXZpZXdlZC1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPj4+
Cj4+PiBPbiA2LzUvMTkgMTA6MzUgQU0sIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPj4+PiAtLS0g
L2Rldi9udWxsCj4+Pj4gKysrIGIvQ29uZmlnLnVrCj4+Pj4gQEAgLTAsMCArMSw4NiBAQAo+Pj4+
ICsjIyMgSW52aXNpYmxlIG9wdGlvbiBmb3IgZGVwZW5kZW5jaWVzCj4+Pj4gK2NvbmZpZyBBUFBf
REVQRU5ERU5DSUVTCj4+Pj4gK8KgwqDCoCBib29sCj4+Pj4gK8KgwqDCoCBkZWZhdWx0IHkKPj4+
PiArCj4+Pj4gK21lbnVjb25maWcgTElCQ0xJQ0sKPj4+PiArwqDCoMKgIGJvb2wgIlRoZSBDbGlj
ayBtb2R1bGFyIHJvdXRlciIKPj4+PiArwqDCoMKgIGRlcGVuZHMgb24gSEFWRV9MSUJDCj4+Pj4g
K8KgwqDCoCBzZWxlY3QgTElCTFdJUAo+Pj4+ICvCoMKgwqAgZGVmYXVsdCB5Cj4+Cj4+IEl0IGlz
IHByb2JhYmx5IGJldHRlciBpZiB5b3Ugc2VsZWN0IExJQk5FV0xJQiBpbnN0ZWFkIG9mIGNoZWNr
aW5nIGlmIGEgCj4+IExJQkMgaXMgdGhlcmUuIElmIHdlIGFkZCBtb3JlIGxpYmMncyBsYXRlciwg
d2UgYW55d2F5IG5lZWQgdG8gY2hlY2sgaWYgCj4+IGl0IGNvbXBpbGVzLiBuZXdsaWIgaXMgdGhl
IHdvcmtpbmcgY29uZmlndXJhdGlvbi4KPiAKPiBPSywgSSdsbCBzZWxlY3QgTElCTkVXTElCLiBJ
IGFsc28gcmVhbGl6ZWQgdGhhdCBjbGljayBuZWVkcyB1a3VuaXN0ZCwgc28gCj4gSSdsbCBhbHNv
IGFkZCBzZWxlY3QgVUtVTklTVEQuCj4gCj4gCj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBi
L01ha2VmaWxlCj4+Pj4gQEAgLTAsMCArMSw5IEBACj4+Pj4gK1VLX1JPT1QgPz0gJChQV0QpLy4u
L3VuaWtyYWZ0Cj4+Pj4gK1VLX0xJQlMgPz0gJChQV0QpLy4uCj4+Pj4gK0xJQlMgOj0gJChVS19M
SUJTKS9uZXdsaWI6JChVS19MSUJTKS9sd2lwCj4+Pj4gKwo+Pgo+PiBTbyBmYXIsIHdlIGhhZCB0
aGUgZm9sbG93aW5nIGRlZmF1bHQgZGVmaW5pdGlvbiBmb3IgVUtfUk9PVCBhbmQgVUtfTElCUzoK
Pj4gwqDCoFVLX1JPT1QgPz0gJChQV0QpLy4uLy4uL3VuaWtyYWZ0Cj4+IMKgwqBVS19MSUJTID89
ICQoUFdEKS8uLi8uLi9saWJzCj4+IEZvciBzaW1wbGljaXR5IHdlIHNob3VsZCB1c2UgdGhlIGFz
IHdlIGRvIHdpdGggdGhlIGFwcGxpY2F0aW9ucyAKPj4gYGhlbGxvd29ybGRgIGFuZCBgaHR0cHJl
cGx5YCBzbyB0aGF0IHVzZXIgY2FuIGV4cGVjdCB0aGUgc2FtZSBkZWZhdWx0IAo+PiBkaXJlY3Rv
cnkgc3RydWN0dXJlLgo+IAo+IAo+IEknbGwgY2hhbmdlIHRoZSBwYXRocyBhY2NvcmRpbmdseS4K
PiAKPj4+PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgCj4+Pj4KPj4+PiArIyBDaGVjayByZXF1
aXJlbWVudHM6IENsaWNrIHJlcXVpcmVzIG5ldGRldiBhY2Nlc3MsIHNvIExXSVAgbXVzdCAKPj4+
PiBub3QgYXR0YWNoIHRoZW0KPj4+PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgCj4+Pj4KPj4+
PiAraWZlcSAoJChDT05GSUdfTFdJUF9BVVRPSUZBQ0UpLHkpCj4+Pj4gKyQoZXJyb3IgQ2xpY2sg
Y2Fubm90IGJlIGJ1aWx0IHdpdGggTFdJUCBvcHRpb24gIkF1dG9tYXRpY2FsbHkgCj4+Pj4gYXR0
YWNoIG5ldGlmcyIhIFBsZWFzZSBkaXNhYmxlKQo+Pj4+ICtlbmRpZgo+Pgo+PiBDb3VsZCB5b3Ug
YWRkIGEgY29tbWVudCB3aHkgeW91IGFyZSBkb2luZyB0aGlzIHdpdGggYW4gZXJyb3I/OiBLQ29u
ZmlnIAo+PiB1bmZvcnR1bmF0ZWx5IGRvZXMgbm90IHN1cHBvcnQgdG8gYHVuc2VsZWN0YCBhbiBj
b25maWd1cmF0aW9uIG9wdGlvbi4gCj4+IEkgaG9wZSBwcm9ibGVtcyBsaWtlIHRoaXMgY2FuIGJl
IGZpeGVkIGJ5IHVwZGF0aW5nIHRvIGEgcmVjZW50IEtDb25maWcgCj4+IHN5c3RlbS4KPiAKPiAK
PiBJJ2xsIGFkZCBhIGNvbW1lbnQuCj4gCj4gVGhlIHJlc3QgaXMgdXAgdG8gRmVsaXBlLgo+IAo+
IENoZWVycywKPiBGbG9yaWFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:38:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:38: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 1hYUFd-0004vg-HB; Wed, 05 Jun 2019 11:38: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=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYUFc-0004vN-LK
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:38:40 +0000
X-Inumbo-ID: 755ed0d0-8786-11e9-967c-07d7a6b276a8
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 755ed0d0-8786-11e9-967c-07d7a6b276a8;
 Wed, 05 Jun 2019 11:38:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 5E706104BF6;
 Wed,  5 Jun 2019 13:38:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RWJre-2YDqDd; Wed,  5 Jun 2019 13:38:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3B2BC104B74;
 Wed,  5 Jun 2019 13:38:37 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 13:38:37
 +0200
To: Felipe Huici <Felipe.Huici@neclab.eu>, Costin Lupu <costin.lup@gmail.com>, 
 Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-2-florian.schmidt@neclab.eu>
 <e6e6ea01-61e1-c34b-99ac-aa3fa06f8eb3@gmail.com>
 <dc7611bc-63aa-9c89-b744-80692250d769@neclab.eu>
 <FDD59730-CA4F-4E7B-96D0-B21B1A1FFEE4@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <6c358e05-67d1-484c-cefd-ef4d343e3a80@neclab.eu>
Date: Wed, 5 Jun 2019 13:38:21 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <FDD59730-CA4F-4E7B-96D0-B21B1A1FFEE4@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

R3JlYXQsIHRoYW5rcyBhIGxvdC4KCk9uIDA1LjA2LjE5IDEzOjM2LCBGZWxpcGUgSHVpY2kgd3Jv
dGU6Cj4gSGkgU2ltb24sCj4gCj4gUGxlYXNlIHNlZSBpbmxpbmUuCj4gCj4gLS0gRmVsaXBlCj4g
Cj4gICAgICA+PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgICAgID4+ICsjIENvcHkgVW5p
a3JhZnQgZnJvbS90byBkZXZpY2VzCj4gICAgICA+PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
PiAgICAgID4+ICtpZm5lcSAoJChDT05GSUdfTElCQ0xJQ0tfRUxFTVNfVU5JS1JBRlQpLCkKPiAg
ICAgID4+ICskKHNoZWxsIG1rZGlyIC1wICQoTElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNM
SUNLX0NPTU1JVF9IQVNIKS9lbGVtZW50cykKPiAgICAgID4+ICskKHNoZWxsIGNwIC1yICQoTElC
Q0xJQ0tfQkFTRSkvdW5pa3JhZnQgJChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tf
Q09NTUlUX0hBU0gpL2VsZW1lbnRzLykKPiAgICAgID4+ICtlbmRpZgo+ICAgICAgPj4gKwo+ICAg
ICAgCj4gICAgICBPaCwgeW91IHNob3VsZCBkbyB0aGlzIGFzIGJ1aWxkIHJ1bGUgd2l0aCBhY2Nv
cmRpbmcgZGVwZW5kZW5jaWVzCj4gICAgICBpbnN0ZWFkLiBZb3UgY291bGQgcnVuIHRoaXMgcmln
aHQgYWZ0ZXIgdGhlIHNvdXJjZXMgZ290IGV4dHJhY3RlZAo+ICAgICAgKGRlcGVuZCBpdCBvbiAk
KExJQkNMSUNLX0JVSUxEKS8ub3JpZ2luKSBhbmQgYmVmb3JlIHRoZSBjb25maWd1cmUgc2NyaXB0
Cj4gICAgICBpcyBjYWxsZWQuIFBsZWFzZSBhbHNvIHVzZSB0aGUgcHJvdmlkZWQgdmFyaWFibGVz
IGZvciBNS0RJUiBhbmQgQ1AKPiAgICAgIGNvbW1hbmQgYW5kIHRoZSBgdmVyYm9zZV9jbWRgL2Bi
dWlsZF9jbWRgIGNvbW1hbmQuIEFzIGl0IGxvb2tzIGxpa2Ugbm93LAo+ICAgICAgaXQgY29waWVz
IHRoZXNlIGZpbGVzIHdoZW4gZXZlciBtYWtlIGlzIGludm9sdmVkLiBUaGlzIGFsc28gZW5mb3Jj
ZXMgYQo+ICAgICAgcmUtY29tcGlsYXRpb24gb2YgdGhvc2UgZmlsZSBhbGwgdGhlIHRpbWUuIEJl
dHRlciB0byBhZGQgdGhlbSBhcwo+ICAgICAgZGVwZW5kZW5jeSB0aGVyZSwgdG9vLgo+IAo+PiBP
aywgd2lsbCBkby4KPiAgICAgIAo+ICAgICAgPj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4g
ICAgICA+PiArIyBBcHAtc3BlY2lmaWMgVGFyZ2V0cwo+ICAgICAgPj4gKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4gICAgICA+PiArCj4gICAgICA+PiArIyBSdW4gQ2xpY2sncyBjb25maWd1cmUg
c2NyaXB0Cj4gICAgICA+PiArJChMSUJDTElDS19CVUlMRCkvLmNvbmZpZ3VyZWQ6ICQoTElCQ0xJ
Q0tfQlVJTEQpLy5vcmlnaW4KPiAgICAgID4+ICsJJChjYWxsIHZlcmJvc2VfY21kLENPTkZJR1VS
RSxsaWJhcHA6ICRALFwKPiAgICAgID4+ICsJICAgICAgIGNkICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KSAmJiAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1taW5pb3MgLS13aXRoLXhlbj0kKExJQkNMSUNLX0JV
SUxEKSAtLXdpdGgtbWluaW9zPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1uZXdsaWI9JChMSUJD
TElDS19CVUlMRCkgLS13aXRoLWx3aXA9JChMSUJDTElDS19CVUlMRCkgJiYgXAo+ICAgICAgPj4g
KwkgICAgICAgJChUT1VDSCkgJEApCj4gICAgICAKPiAgICAgIAo+ICAgICAgQ291bGQgeW91IGFk
ZCBhIHNob3J0IGNvbW1lbnQgd2h5IHdlIG5lZWQgdG8gcnVuIHRoaXMgY29uZmlndXJlIHNjcmlw
dAo+ICAgICAgKGFzIGV4YW1wbGU6IGBiaW4vY2xpY2stYnVpbGR0b29sYCBpcyBnZW5lcmF0ZWQp
Pwo+IAo+PiBPay4KPiAgICAgIAo+ICAgICAgCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 11:46:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 11:46: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 1hYUMi-0005mv-3q; Wed, 05 Jun 2019 11:46: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=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYUMg-0005mq-QN
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 11:45:58 +0000
X-Inumbo-ID: 7963291e-8787-11e9-95df-0f7cb113356e
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7963291e-8787-11e9-95df-0f7cb113356e;
 Wed, 05 Jun 2019 11:45:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 90990104C04;
 Wed,  5 Jun 2019 13:45:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id pIG8L95jWz3A; Wed,  5 Jun 2019 13:45:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6E9DD104BF9
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 13:45:53 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 13:44:41
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-7-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <bbef3246-9496-9354-56ee-7b3ff044a488@neclab.eu>
Date: Wed, 5 Jun 2019 13:44:14 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-7-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 06/10] lib/syscall_shim:
 generate provided_syscalls.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5IFl1cmksCgpzZWUgbXkgY29tbWVudHMgaW5saW5lLgoKT24gMDQuMDYuMTkgMTg6MjgsIFl1
cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhlIHByb3ZpZGVkX3N5c2NhbGxzLmggd2lsbCBiZSBjb250
YWluaW5nIHByb3RvdHlwZXMgZm9yIGV2ZXJ5Cj4gc3lzY2FsbCBwcmVzZW50IGluIHRoZSBzeXN0
ZW0uCj4gCj4gSXQgd2lsbCBiZSB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGxpYnJhcmllcyB0
byB0ZWxsIHN5c2NhbGxfc2hpbSBpZgo+IGNlcnRhaW4gc3lzY2FsbCBpcyBwcm92aWRlZC4gSWYg
c3lzY2FsbCBpcyBhdmFpbGFibGUsIGl0IG11c3QgYmUKPiBsaXN0ZWQgaW4gdGhlIG1ha2VmaWxl
J3MgdmFyaWFibGUgJ1VLX1BST1ZJREVEX1NZU0NBTExTJyBpbiB0aGUgZm9ybWF0Cj4gPHN5c2Nh
bGxfbmFtZT4tPG51bWJlcl9vZl9hcmd1bWVudHM+LiBGb3IgZXhhbXBsZToKPiAKPiBVS19QUk9W
SURFRF9TWVNDQUxMUy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSB3cml0ZXYtMwoKSSB0aGluaywg
eW91IGNhbiBzdGlsbCBuYW1lc3BhY2UgdGhpcyB0byBMSUJTWVNDQUxMX1NISU1fU1lTQ0FMTFMt
eS4gCk90aGVyIGxpYnJhcmllcyBwYXJlIGRvaW5nIHRoaXMgZm9yIHlvdXIgcGFydGljdWxhciBs
aWJyYXJ5LCBzbyB0aGlzIApzdGlsbCBtYWtlcyBzZW5zZS4KCj4gCj4gU2lnbmVkLW9mZi1ieTog
WXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvc3lz
Y2FsbF9zaGltL01ha2VmaWxlLnVrIHwgMTcgKysrKysrKysrKysrKysrLS0KPiAgIDEgZmlsZSBj
aGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg
YS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmls
ZS51awo+IGluZGV4IDUyYTEyZjE4Li5iYjc2ZDdiMSAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2Fs
bF9zaGltL01ha2VmaWxlLnVrCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+
IEBAIC00LDkgKzQsMTIgQEAgX19HRU5fSU5DTFVERVNfUEFUSCA6PSAkKExJQlNZU0NBTExfU0hJ
TV9CVUlMRCkvaW5jbHVkZS91ay9iaXRzCj4gICAKPiAgIF9fUEhPTllfR0VOX1NSQyA6PSBzeXNj
YWxsX21hcC5oIHN5c2NhbGxfc3R1YnMuaCBzeXNjYWxsX25ycy5oCj4gICBfX1BIT05ZX0dFTl9T
UkMgOj0gJChhZGRwcmVmaXggJChfX0dFTl9JTkNMVURFU19QQVRIKS8sICQoX19QSE9OWV9HRU5f
U1JDKSkKPiArX19QSE9OWV9HRU5fU1JDICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9wcm92
aWRlZF9zeXNjYWxscy5oLmluCj4gICBfX1BIT05ZX0dFTl9TUkNfTkVXIDo9ICQoYWRkc3VmZml4
IC5uZXcsICQoX19QSE9OWV9HRU5fU1JDKSkKPiAgIAo+IC1VS19QUkVQQVJFLSQoQ09ORklHX0xJ
QlNZU0NBTExfU0hJTSkgKz0gJChfX1BIT05ZX0dFTl9TUkMpCj4gK19fR0VOX1NSQyA6PSAkKF9f
R0VOX0lOQ0xVREVTX1BBVEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmgKPiArCj4gK1VLX1BSRVBBUkUt
JChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX0dFTl9T
UkMpCj4gICAKPiAgIAo+ICAgX19TWVNDQUxMX1NISU1fVEVNUEwgOj0gJChMSUJTWVNDQUxMX1NI
SU1fQkFTRSkvYXJjaC8kKENPTkZJR19VS19BUkNIKS9zeXNjYWxsLmguaW4KPiBAQCAtMzMsOCAr
MzYsMTggQEAgJChfX0dFTl9JTkNMVURFU19QQVRIKS9zeXNjYWxsX21hcC5oLm5ldzoKPiAgIAkJ
fScgXAo+ICAgCQkkKF9fU1lTQ0FMTF9TSElNX1RFTVBMKSA+ICRACj4gICAKPiArJChfX0dFTl9J
TkNMVURFU19QQVRIKS9wcm92aWRlZF9zeXNjYWxscy5oOiAkKExJQlNZU0NBTExfU0hJTV9CVUlM
RCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbgo+ICsJJFEgJChBV0spIC1GICctJyBcCj4gKwknQkVH
SU4ge3ByaW50ICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlOyBETyBOT1QgRURJVCAq
LyJ9IFwKPiArCS9bYS16QS1aMC05XSstWzAtOV0rL3twcmludGYgIlxuI2RlZmluZSBIQVZFX3Vr
X3N5c2NhbGxfJXMgdCIsICQkMTsgXAo+ICsJIHByaW50ZiAiXG5VS19TWVNDQUxMX1BST1RPKCVz
LCAlcyk7XG4iLCAkJDIsICQkMTt9JyBcCj4gKwkkXiA+ICRACgpDYW4geW91IGRvIHRoZXNlIHR3
byBuZXcgcnVsZXMgYWxzbyBhcyB2ZXJib3NlIGJ1aWxkIGNvbW1hbmQgaW5zdGVhZCAKKHByZXR0
eS1wcmludCBuYW1lIG9mIGNvbW1hbmQgY2FuIGJlIGp1c3QgYEdFTmApPwoKSXMgaXQgc29tZWhv
dyBwb3NzaWJsZSB0byBwcmludCBhIHdhcm5pbmcgZm9yIHJlZ2lzdGVyZWQgc3lzY2FsbHMgdGhh
dCAKZG8gbm90IGZpdCBpbnRvIHRoZSA8c3lzY2FsbF9uYW1lPi08bnVtYmVyX29mX2FyZ3VtZW50
cz4gc2NoZW1lPwoKPiArCj4gKyQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9wcm92aWRlZF9zeXNj
YWxscy5oLmluLm5ldzoKPiArCSRRIGVjaG8gJChVS19QUk9WSURFRF9TWVNDQUxMUy15KSB8IHRy
ICcgJyAnXG4nID4gJEAKPiArCj4gICAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxfc3R1
YnMuaC5uZXc6Cj4gICAJJChRKSAkKEFXSykgLWYgJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvZ2Vu
X3N0dWJzLmF3ayBcCj4gICAJCSQoX19TWVNDQUxMX1NISU1fVEVNUEwpID4gJEAKPiAgIAo+IC1M
SUJTWVNDQUxMX1NISU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX1BIT05ZX0dFTl9T
UkNfTkVXKQo+ICtMSUJTWVNDQUxMX1NISU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChf
X1BIT05ZX0dFTl9TUkNfTkVXKSAkKF9fR0VOX1NSQykKPiAKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:38:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:38: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 1hYVBS-00020I-Lb; Wed, 05 Jun 2019 12:38:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYVBR-000206-66
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:38:25 +0000
X-Inumbo-ID: cc92757f-878e-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cc92757f-878e-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:38:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 57264F20A7;
 Wed,  5 Jun 2019 14:38:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id iEvoD9dfMXU0; Wed,  5 Jun 2019 14:38:19 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0A5F0F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:38:16 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 14:38:16 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/CLICK PATCH v2 09/11] support for loading click configs
Thread-Index: AQHVG3FW0FUITH7LREOU+ImohOpclKaNADSA
Date: Wed, 5 Jun 2019 12:38:15 +0000
Message-ID: <6B074F89-830A-4698-8D13-A7EAFCFD2EB0@neclab.eu>
References: <20190605073545.1785-1-florian.schmidt@neclab.eu>
 <20190605073545.1785-10-florian.schmidt@neclab.eu>
In-Reply-To: <20190605073545.1785-10-florian.schmidt@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <C112DF96779C7D459DC897D1E7027396@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v2 09/11] support for
 loading click configs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgRmxvcmlhbiwNCg0KVGhhbmtzIGZvciB1cGRhdGluZyB0aGUgY29tbWl0IG1lc3NhZ2UuDQoN
Ci0tIEZlbGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVj
bGFiLmV1Pg0KDQrvu79PbiAwNS4wNi4xOSwgMDk6MzYsICJGbG9yaWFuIFNjaG1pZHQiIDxGbG9y
aWFuLlNjaG1pZHRAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFRoZSBleHBlY3RlZCB3YXkgaXMg
dG8gcHJvdmlkZSBhIChwbGFpbi10ZXh0KSBjb25maWcgZmlsZSBhcyBpbml0cmQuIElmDQogICAg
bm8gaW5pdHJkIGlzIHByb3ZpZGVkLCBjbGljayB3aWxsIGZhbGwgYmFjayB0byBhIHN0YXRpYywg
Y29tcGlsZWQtaW4NCiAgICBjb25maWcgdGhhdCByZXBsaWVzIHRvIHBpbmdzLg0KICAgIA0KICAg
IFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5l
dT4NCiAgICAtLS0NCiAgICAgY2xpY2suY2MgICAgICAgICAgICAgICAgfCAzNyArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQogICAgIGluY2x1ZGUvc3RhdGljX2NvbmZpZy5o
IHwgMjIgKysrKysrKysrKysrKysrKysrKysrKw0KICAgICAyIGZpbGVzIGNoYW5nZWQsIDU0IGlu
c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs
dWRlL3N0YXRpY19jb25maWcuaA0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9jbGljay5jYyBiL2Ns
aWNrLmNjDQogICAgaW5kZXggYTNiZmJhOC4uODVhOTM4YiAxMDA2NDQNCiAgICAtLS0gYS9jbGlj
ay5jYw0KICAgICsrKyBiL2NsaWNrLmNjDQogICAgQEAgLTUyLDExICs1MiwxNCBAQCBleHRlcm4g
IkMiew0KICAgICAjaW5jbHVkZSA8Y2xpY2svc3RyYWNjdW0uaGg+DQogICAgICNpbmNsdWRlIDxj
bGljay9kcml2ZXIuaGg+DQogICAgIA0KICAgICsjaW5jbHVkZSA8c3RhdGljX2NvbmZpZy5oPg0K
ICAgICsNCiAgICAgI2luY2x1ZGUgPHVrL3NjaGVkLmg+DQogICAgICNpbmNsdWRlIDx1ay90aHJl
YWQuaD4NCiAgICArI2luY2x1ZGUgPHVrL25ldGRldi5oPg0KICAgICsjaW5jbHVkZSA8dWsvcGxh
dC9tZW1vcnkuaD4NCiAgICAgDQogICAgIGludCBjbGlja19udGhyZWFkcyA9IDE7DQogICAgLQ0K
ICAgICB2b2lkICpfX2Rzb19oYW5kbGUgPSBOVUxMOw0KICAgICANCiAgICAgI2RlZmluZSBOTE9H
KGZtdCwgLi4uKQ0KICAgIEBAIC0xMTksNiArMTIyLDMyIEBAIHJlYWRfY29uZmlnKHVfaW50IHJp
ZCA9IDApDQogICAgIHN0YXRpYyBFcnJvckhhbmRsZXIgKmVycmg7DQogICAgIHN0YXRpYyBNYXN0
ZXIgbWFzdGVyKDEpOw0KICAgICANCiAgICArc3RhdGljIFN0cmluZyAqDQogICAgK2dldF9jb25m
aWcoKQ0KICAgICt7DQogICAgKwlTdHJpbmcgKmNmZzsNCiAgICArCXN0cnVjdCB1a3BsYXRfbWVt
cmVnaW9uX2Rlc2MgaW1nOw0KICAgICsJY2hhciAqY3N0cjsNCiAgICArCXNpemVfdCBjc3RyX2xl
bjsNCiAgICArDQogICAgKwkvKiBGaXJzdCwgdHJ5IGluaXRyZCAqLw0KICAgICsJaWYgKHVrcGxh
dF9tZW1yZWdpb25fZmluZF9pbml0cmQwKCZpbWcpID49IDApIHsNCiAgICArCQljc3RyID0gKGNo
YXIgKilpbWcuYmFzZTsNCiAgICArCQljc3RyX2xlbiA9IGltZy5sZW47DQogICAgKwl9IGVsc2Ug
ew0KICAgICsJCS8qIElmIHdlIGNhbid0IGZpbmQgYSBjb25maWc6IHVzZSBhIGZhbGxiYWNrIG9u
ZSBzdGF0aWNhbGx5DQogICAgKwkJICogY29tcGlsZWQgaW4uDQogICAgKwkJICovDQogICAgKwkJ
dWtfcHJfd2FybigiQ291bGQgbm90IGZpbmQgYSBjb25maWcsIHVzaW5nIHN0YW5kYXJkIGNvbmZp
ZyFcbiIpOw0KICAgICsJCWNzdHIgPSBDT05GSUdTVFJJTkc7DQogICAgKwkJY3N0cl9sZW4gPSBz
dHJsZW4oQ09ORklHU1RSSU5HKTsNCiAgICArCX0NCiAgICArCWNmZyA9IG5ldyBTdHJpbmcoY3N0
ciwgY3N0cl9sZW4pOw0KICAgICsJcHJpbnRmKCJSZWNlaXZlZCBjb25maWcgKGxlbmd0aCAlZCk6
XG4iLCBjZmctPmxlbmd0aCgpKTsNCiAgICArCXByaW50ZigiJXNcbiIsIGNmZy0+Y19zdHIoKSk7
DQogICAgKwlyZXR1cm4gY2ZnOw0KICAgICt9DQogICAgKw0KICAgICBzdHJ1Y3Qgcm91dGVyX2lu
c3RhbmNlIHsNCiAgICAgCVJvdXRlciAqcjsNCiAgICAgCXVfaW50IGZfc3RvcDsNCiAgICBAQCAt
MTI3LDkgKzE1Niw4IEBAIHN0cnVjdCByb3V0ZXJfaW5zdGFuY2Ugew0KICAgICB2b2lkDQogICAg
IHJvdXRlcl90aHJlYWQodm9pZCAqdGhyZWFkX2RhdGEpDQogICAgIHsNCiAgICAtCXVfaW50ICpy
aWQgPSAodV9pbnQqKSB0aHJlYWRfZGF0YTsNCiAgICAtCVN0cmluZyAqY29uZmlnID0gbmV3IFN0
cmluZzsgLy9yZWFkX2NvbmZpZygqcmlkKTsNCiAgICAtCXN0cnVjdCByb3V0ZXJfaW5zdGFuY2Ug
KnJpID0gJnJvdXRlcl9saXN0WypyaWRdOw0KICAgICsJc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAq
cmkgPSAmcm91dGVyX2xpc3RbKHVuc2lnbmVkIGxvbmcpdGhyZWFkX2RhdGFdOw0KICAgICsJU3Ry
aW5nICpjb25maWcgPSBnZXRfY29uZmlnKCk7DQogICAgIA0KICAgICAJcmktPnIgPSBjbGlja19y
ZWFkX3JvdXRlcigqY29uZmlnLCB0cnVlLCBlcnJoLCBmYWxzZSwgJm1hc3Rlcik7DQogICAgIAlp
ZiAocmktPnItPmluaXRpYWxpemUoZXJyaCkgPCAwKSB7DQogICAgQEAgLTE1MCw3ICsxNzgsNiBA
QCByb3V0ZXJfdGhyZWFkKHZvaWQgKnRocmVhZF9kYXRhKQ0KICAgICANCiAgICAgCUxPRygiTWFz
dGVyL2RyaXZlciBzdG9wcGVkLCBjbG9zaW5nIHJvdXRlcl90aHJlYWQiKTsNCiAgICAgCWZyZWUo
Y29uZmlnKTsNCiAgICAtCWZyZWUocmlkKTsNCiAgICAgfQ0KICAgICANCiAgICAgdm9pZA0KICAg
IGRpZmYgLS1naXQgYS9pbmNsdWRlL3N0YXRpY19jb25maWcuaCBiL2luY2x1ZGUvc3RhdGljX2Nv
bmZpZy5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi44NWM1
ZDEyDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5o
DQogICAgQEAgLTAsMCArMSwyMiBAQA0KICAgICtzdGF0aWMgY2hhciBDT05GSUdTVFJJTkdbXSA9
ICIgICAgZGVmaW5lKCRJUCAxMC4wLjEwLjEyMyk7XG5cDQogICAgKyAgICBkZWZpbmUoJE1BQzAg
MTE6MjI6MzM6NDQ6NTU6NjYpO1xuXA0KICAgICtcblwNCiAgICArICAgIHNvdXJjZSA6OiBGcm9t
RGV2aWNlO1xuXA0KICAgICsgICAgc2luayAgIDo6IFRvRGV2aWNlO1xuXA0KICAgICsgICAgLy8g
Y2xhc3NpZmllcyBwYWNrZXRzIFxuXA0KICAgICsgICAgYyA6OiBDbGFzc2lmaWVyKFxuXA0KICAg
ICsgICAgICAgIDEyLzA4MDYgMjAvMDAwMSwgLy8gQVJQIFJlcXVlc3RzIGdvZXMgdG8gb3V0cHV0
IDBcblwNCiAgICArICAgICAgICAxMi8wODA2IDIwLzAwMDIsIC8vIEFSUCBSZXBsaWVzIHRvIG91
dHB1dCAxXG5cDQogICAgKyAgICAgICAgMTIvMDgwMCAxNC80NSAzNC8wOCwgLy8gSUNNUCBSZXF1
ZXN0cyB0byBvdXRwdXQgMlxuXA0KICAgICsgICAgICAgIC0pOyAvLyB3aXRob3V0IGEgbWF0Y2gg
dG8gb3V0cHV0IDNcblwNCiAgICArXG5cDQogICAgKyAgICBhcnBxIDo6IEFSUFF1ZXJpZXIoJElQ
LCAkTUFDMCk7XG5cDQogICAgKyAgICBhcnByIDo6IEFSUFJlc3BvbmRlcigkSVAgJE1BQzApO1xu
XA0KICAgICtcblwNCiAgICArICAgIHNvdXJjZSAtPiBjO1xuXA0KICAgICsgICAgY1swXSAtPiBD
aGVja0FSUEhlYWRlcigxNCkgLT4gQVJQUHJpbnQgLT4gYXJwciAtPiBBUlBQcmludCAtPiBzaW5r
O1xuXA0KICAgICsgICAgY1sxXSAtPiBbMV1hcnBxO1xuXA0KICAgICsgICAgSWRsZSAtPiBbMF1h
cnBxO1xuXA0KICAgICsgICAgYXJwcSAtPiBzaW5rO1xuXA0KICAgICsgICAgY1syXSAtPiBDaGVj
a0lQSGVhZGVyKDE0KSAtPiBJUFByaW50IC0+IElDTVBQaW5nUmVzcG9uZGVyKCkgLT4gRXRoZXJN
aXJyb3IoKSAtPiBJUFByaW50IC0+IHNpbms7XG5cDQogICAgKyAgICBjWzNdIC0+IERpc2NhcmQ7
IjsNCiAgICAtLSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0KX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:38:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:38: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 1hYVBS-00020O-NG; Wed, 05 Jun 2019 12:38:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYVBR-000207-6f
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:38:25 +0000
X-Inumbo-ID: cd9d6530-878e-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cd9d6530-878e-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:38:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 62BD3F20A8;
 Wed,  5 Jun 2019 14:38:21 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xJ4yH5yk40yN; Wed,  5 Jun 2019 14:38:21 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 38724F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:38:19 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 14:38:18 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <8d90a822-e9cb-350e-efca-753d3d071738@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-3-yuri.volchkov@neclab.eu>
 <8d90a822-e9cb-350e-efca-753d3d071738@neclab.eu>
Date: Wed, 5 Jun 2019 14:38:15 +0200
Message-ID: <tza4s2k1e0xl54.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 02/10] import syscall.h.in from
 musl
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgoKPiBI
ZXksCj4KPiBjYW4geW91IHByZWZleCB0byB5b3VyIGNvbW1pdCB0aXRsZSB0aGF0IHRoaXMgcGF0
Y2ggaXMgcmVsYXRlZCB0byB5b3VyIAo+IG5ldyBsaWJyYXJ5PzogbGliL3N5c2NhbGxfc2hpbTog
SW1wb3J0IHN5c2NhbGwuaC5pbiBmcm9tIG11c2wKU3VyZQoKPgo+IFBsZWFzZSBhbHNvIGFkZCBh
IHJlZmVyZW5jZSBmcm9tIHdoaWNoIG11c2wgdmVyc2lvbiAoZS5nLiwgY29tbWl0IGhhc2gpIAo+
IGFuZCBVUkwgeW91IGdvdCB0aGlzIGZyb20gaW4gdGhlIGNvbW1pdCBtZXNzYWdlLgpBY3R1YWxs
eSwgaXQgaXMgYWxyZWFkeSBpbiB0aGUgY29tbWl0Cgo+Cj4gV2hhdCBpcyB0aGUgbGljZW5zZSBv
ZiB0aG9zZSBoZWFkZXJzPwo+IFlvdSBtYXkgd2FudCB0byBhZGQgYW4gU1BEWCBoZWFkZXIgYW5k
IGEgY29tbWVudCB3aXRoIHRoZSBzb3VyY2UgdG8gdGhlIAo+IGZpbGVzIHdpdGggYSBmb2xsb3ct
dXAgcGF0Y2guClRoYXQncyB0aGUgdGVtcGxhdGUgZmlsZSwgaXQgaXMgZXhwZWN0ZWQgdG8gYmUg
aW4gYSBjZXJ0YWluIGZvcm1hdCBpbgpvcmRlciB0byB1c2UgaW4gZ2VuZXJhdG9ycy4gQnV0IEkg
aGF2ZSBhZGRlZCByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGF3aywKaXQgc2VlbXMgdG8gd29yayBu
b3cgd2l0aCBTUERYLgoKPgo+IFRoYW5rcywKPgo+IFNpbW9uCj4KPiBPbiAwNC4wNi4xOSAxODoy
OCwgWXVyaSBWb2xjaGtvdiB3cm90ZToKCi0tIApZdXJpIFZvbGNoa292ClNvZnR3YXJlIFNwZWNp
YWxpc3QKCk5FQyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpELTY5MTE1IEhlaWRl
bGJlcmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVGt-0002uf-67; Wed, 05 Jun 2019 12:44:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVGs-0002ua-AW
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:02 +0000
X-Inumbo-ID: 97259aae-878f-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 97259aae-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 68586F20A7;
 Wed,  5 Jun 2019 14:43:59 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 1ElQ3O2O8iT6; Wed,  5 Jun 2019 14:43:59 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 378E0F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:43:57 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:43:56 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:21 +0200
Message-ID: <20190605124332.25437-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 00/11] The Click Modular
 Router
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyB2MyBvZiB0aGUgQ2xpY2sgcG9ydC4gQ2hhbmdlcyBhcmUgcmVsYXRpdmVseSBzbWFs
bCBhbmQgY29tcHJpc2U6CgoqIGNoYW5naW5nIGRlcGVuZGVuY2llcyBpbiBDb25maWcudWsKKiBj
aGFuZ2luZyBhbmQvb3IgZG9jdW1lbnRpbmcgYSBmZXcgbWlub3IgcGFydHMgb2YgTWFrZWZpbGUu
dWsKKiBjaGFuZ2luZyBwYXRocyBpbiBNYWtlZmlsZQoKCioqKiB2MiB0ZXh0IGJlbG93IGZvciBy
ZWZlcmVuY2UgKioqCgpUaGlzIGlzIHYyIG9mIHRoZSBDbGljayBwb3J0LiBDaGFuZ2VzIGFyZSBy
ZWxhdGl2ZWx5IHNtYWxsIGFuZCBjb21wcmlzZToKCiogYWRkaW5nIC5tZCBmaWxlcyB3aXRoIHNv
bWUgdmVyeSBtaW5pbWFsIGRvY3VtZW50YXRpb24gYW5kIGxpY2Vuc2UKICBpbmZvcm1hdGlvbiwK
KiBhZGRpbmcgYSBsaWNlbnNlIGhlYWRlciB0byBNYWtlZmlsZS51awoqIHVwZGF0aW5nIENvbmZp
Zy51ayB0byByZWZsZWN0IGRlcGVuZGVuY2llcwoqIGNsYXJpZnlpbmcgY29tbWl0IG1lc3NhZ2Ug
Zm9yIHBhdGNoIDkKCioqKiB2MSB0ZXh0IGJlbG93IGZvciByZWZlcmVuY2UgKioqCgpUaGlzIGlz
IGEgcG9ydCBvZiBDbGljayAoaHR0cHM6Ly9naXRodWIuY29tL2tvaGxlci9jbGljaykgdG8gdW5p
a3JhZnQuIEl0CnBhcnRpYWxseSBidWlsZHMgb24gb24gQ2xpY2tPUywgdGhlIHBvcnQgb2YgQ2xp
Y2sgdG8gTWluaS1PUy4KCkZlYXR1cmVzIGN1cnJlbnRseSBhdmFpbGFibGU6CiogTW9zdCBDbGlj
ayBtb2R1bGVzIGFyZSBhdmFpbGFibGUgdG8gY3JlYXRlIHJvdXRpbmcgY29uZmlndXJhdGlvbnMu
IChGb3IKICBleGNlcHRpb25zLCBzZWUgYmVsb3cuKQoqIGEgQ2xpY2sgY29uZmlnIGNhbiBiZSBw
cm92aWRlZCBhcyBhbiBpbml0cmQuIElmIG5vbmUgaXMgcHJvdmlkZWQsIENsaWNrCiAgd2lsbCBm
YWxsIGJhY2sgdG8gYSBzdGF0aWNhbGx5IGNvbXBpbGVkLWluIGNvbmZpZyB0aGF0IHJlcGxpZXMg
dG8gcGluZ3MgdG8KICBhIGNlcnRhaW4gKGZpeGVkKSBJUCBhZGRyZXNzLgoqIEZvciBlYWNoIHVr
bmV0ZGV2LCBDbGljayBxdWVyaWVzIHRoZSBNQUMgYWRkcmVzcyBkdXJpbmcgaW5pdGlhbGl6YXRp
b24gYW5kCiAgcHJvdmlkZXMgYW4gYWxpYXMgdG8gdGhhdCBNQUMgYWRkcmVzcyBhcyBNQUMwLCBN
QUMxLCAuLi4gRWZmZWN0aXZlbHksIGlmCiAgcHJvZHVjZXMgYSBwcmVhbWJsZSB0byBhIGNvbmZp
ZyB3aXRoIGEgbnVtYmVyIG9mIGRlZmluZXMuIEFuIGV4YW1wbGUgb2YgaG93CiAgdG8gdXNlIHN1
Y2ggYSBwcm92aWRlZCBNQUMgYWRkcmVzcyBhbGlhcyBjYW4gYmUgc2VlbiBpbgogIGluY2x1ZGUv
c3RhdGljX2NvbmZpZy5oCgpGZWF0dXJlcyBjdXJyZW50IG5vdCBhdmFpbGFibGU6CiogVGhlcmUg
aXMgbm8gY29uc29sZSBpbnRlcmZhY2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZWxlbWVudCBoYW5k
bGVycyB0bywKICBmb3IgZXhhbXBsZSwgcXVlcnkgdGhlaXIgaW50ZXJuYWwgc3RhdGUgb3Igc3Rh
dGlzdGljcy4gVGhpcyBpcyBhbiBlZmZlY3QKICBvZjoKKiBUaGUgQ2xpY2sgdXNlcmxldmVsIG1v
ZHVsZXMgaGF2ZSBub3QgYmVlbiBwb3J0ZWQgeWV0IGFuZCBhcyBzdWNoIGNhbm5vdCBiZQogIHN1
Y2Nlc3NmdWxseSBidWlsdC4KCk5vdGU6IG9ubHkgeDg2L2t2bSBoYXMgYmVlbiBzZXJpb3VzbHkg
dGVzdGVkLgoKCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDQgKwogQ09ESU5HX1NUWUxFLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA0ICsKIENPTlRSSUJVVElORy5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NCArCiBDT1BZSU5HLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDcg
KysKIENvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5NCAr
KysrCiBNQUlOVEFJTkVSUy5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAg
KwogTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsK
IE1ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4OCArKysr
KysrCiBSRUFETUUubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUg
KwogY2xpY2suY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDY2ICsr
KysrKysrKysrKysrKysrKwogZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA3ICsKIGluY2x1ZGUvY2xpY2svY29uZmlnLXVzZXJsZXZlbC5oICAgICAgICAg
ICAgICB8IDM0OCArKysrKysrKysrKysrCiBpbmNsdWRlL3N0YXRpY19jb25maWcuaCAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMjEgKwogcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1uZXctZGVsZXRl
LWN4YS5wYXRjaCAgIHwgIDIwICsKIC4uLi1zdXJlLVBPTExJTi1QT0xMT1VULWFyZS1ub3QtZGVm
aW5lZC5wYXRjaCB8ICAzNSArKwogc3R1YnMuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDM2ICsrCiB1bmlrcmFmdC9mcm9tZGV2aWNlLmNjICAgICAgICAgICAgICAg
ICAgICAgICAgfCAyMDMgKysrKysrKysKIHVuaWtyYWZ0L2Zyb21kZXZpY2UuaGggICAgICAgICAg
ICAgICAgICAgICAgICB8ICA3OSArKysKIHVuaWtyYWZ0L3RvZGV2aWNlLmNjICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IDEzMSArKysrKwogdW5pa3JhZnQvdG9kZXZpY2UuaGggICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDc2ICsrKwogMjAgZmlsZXMgY2hhbmdlZCwgMTc4NyBpbnNlcnRp
b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0
IENPRElOR19TVFlMRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IE1h
a2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBSRUFETUUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjbGljay5jYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IGV4cG9ydHN5bXMudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2NsaWNrL2NvbmZp
Zy11c2VybGV2ZWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3RhdGljX2NvbmZpZy5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1uZXctZGVsZXRlLWN4
YS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElO
LVBPTExPVVQtYXJlLW5vdC1kZWZpbmVkLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3R1YnMu
Y2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC9mcm9tZGV2aWNlLmNjCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgdW5pa3JhZnQvZnJvbWRldmljZS5oaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHVuaWty
YWZ0L3RvZGV2aWNlLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pa3JhZnQvdG9kZXZpY2UuaGgK
Ci0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVGy-0002ve-7r; Wed, 05 Jun 2019 12:44:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVGw-0002v3-Nm
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:06 +0000
X-Inumbo-ID: 99708947-878f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 99708947-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 5D60F104276;
 Wed,  5 Jun 2019 14:44:03 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3A4zinLZgISS; Wed,  5 Jun 2019 14:44:03 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3B3B2103B6A
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:03 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:03 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:22 +0200
Message-ID: <20190605124332.25437-2-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 01/11] Initial public
 release: basic unikraft 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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIE1ha2VmaWxlLCBNYWtlZmlsZS51aywgQ29uZmlnLnVrLCAuZ2l0aWdub3JlLCAubWQgZmls
ZXMKClNpZ25lZC1vZmYtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4K
U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgotLS0KIC5naXRpZ25vcmUgICAgICB8ICAgNCArKwogQ09ESU5HX1NUWUxFLm1kIHwgICA0ICsr
CiBDT05UUklCVVRJTkcubWQgfCAgIDQgKysKIENPUFlJTkcubWQgICAgICB8ICA0NyArKysrKysr
KysrKysKIENvbmZpZy51ayAgICAgICB8ICA4NyArKysrKysrKysrKysrKysrKysrKysrCiBNQUlO
VEFJTkVSUy5tZCAgfCAgMTAgKysrCiBNYWtlZmlsZSAgICAgICAgfCAgIDkgKysrCiBNYWtlZmls
ZS51ayAgICAgfCAxODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCiBSRUFETUUubWQgICAgICAgfCAgIDUgKysKIDkgZmlsZXMgY2hhbmdlZCwgMzU3IGlu
c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCAuZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAx
MDA2NDQgQ09ESU5HX1NUWUxFLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5HLm1k
CiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09QWUlORy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZp
Zy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51awogY3JlYXRlIG1vZGUg
MTAwNjQ0IFJFQURNRS5tZAoKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZmI3MWIKLS0tIC9kZXYvbnVsbAor
KysgYi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNCBAQAorLmNvbmZpZworLmNvbmZpZy5vbGQKKy4u
Y29uZmlnLnRtcAorYnVpbGQvCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJTkdf
U1RZTEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTczMDA0MQotLS0g
L2Rldi9udWxsCisrKyBiL0NPRElOR19TVFlMRS5tZApAQCAtMCwwICsxLDQgQEAKK0NvZGluZyBT
dHlsZQorPT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElOR19TVFlMRS5t
ZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvQ09O
VFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjVmNTVlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9DT05UUklCVVRJTkcubWQKQEAg
LTAsMCArMSw0IEBACitDb250cmlidXRpbmcgdG8gVW5pa3JhZnQKKz09PT09PT09PT09PT09PT09
PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0
aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvQ09QWUlORy5tZCBiL0NP
UFlJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJmMzc1MwotLS0g
L2Rldi9udWxsCisrKyBiL0NPUFlJTkcubWQKQEAgLTAsMCArMSw0NyBAQAorTGljZW5zZQorPT09
PT09PQorCitVbmlrcmFmdCBjbGljayB3cmFwcGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFwcGVyIGNvZGUgdG8gYnVpbGQgdGhlIENs
aWNrIG1vZHVsYXIgcm91dGVyIHdpdGgKK1VuaWtyYWZ0LiBUaGUgd3JhcHBlciBjb2RlIGlzIGdl
bmVyYWxseSBwdWJsaXNoZWQgdW5kZXIgYSBCU0QgMy1jbGF1c2UgbGljZW5jZS4KK2VhY2ggQyBj
b2RlIGZpbGUgaW4gdGhpcyByZXBvc2l0b3J5IHNob3VsZCBkZWNsYXJlIHdobyBpcyB0aGUgY29w
eXJpZ2h0IG93bmVyCithbmQgdW5kZXIgd2hpY2ggdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhlIGNv
ZGUgaXMgbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlCitub3RlIGlzIG1pc3NpbmcsIHRoZSBm
b2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZSB3aWxsIGFwcGx5OgorCisJQ29weXJpZ2h0IChjKSAy
MDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZWkgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorCSAg
ICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9u
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
IEFEVklTRUQgT0YgVEhFCisJUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0NsaWNrIHNv
dXJjZSBjb2RlCistLS0tLS0tLS0tLS0tLS0tLS0KKworRHVyaW5nIGJ1aWxkaW5nLCB0aGUgYnVp
bGQgc3lzdGVtIHdpbGwgZG93bmxvYWQgdGhlIENsaWNrIG1vZHVsYXIgcm91dGVyIHNvdXJjZQor
VGhpcyBjb2RlIGhhcyBhIHZhcmlldHkgb2YgbGljZW5jZXM7IHBsZWFzZSBmaW5kIG1vcmUgaW5m
b3JtYXRpb24gaW4gdGhlCitgTElDRU5TRWAgZmlsZSBpbiBDbGljaydzIHJvb3QgZGlyZWN0b3J5
LCBvciBhdAoraHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2tvaGxlci9jbGljay9t
YXN0ZXIvTElDRU5TRSAuCmRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkOTQ2ZQotLS0gL2Rldi9udWxsCisrKyBi
L0NvbmZpZy51awpAQCAtMCwwICsxLDg3IEBACisjIyMgSW52aXNpYmxlIG9wdGlvbiBmb3IgZGVw
ZW5kZW5jaWVzCitjb25maWcgQVBQX0RFUEVOREVOQ0lFUworCWJvb2wKKwlkZWZhdWx0IHkKKwor
bWVudWNvbmZpZyBMSUJDTElDSworCWJvb2wgIlRoZSBDbGljayBtb2R1bGFyIHJvdXRlciIKKwlz
ZWxlY3QgVUtVTklTVEQKKwlzZWxlY3QgTElCTkVXTElCCisJc2VsZWN0IExJQkxXSVAKKwlkZWZh
dWx0IHkKKworaWYgTElCQ0xJQ0sKKworY29uZmlnIExJQkNMSUNLX01BSU4KKwlib29sICJFbmFi
bGUgQ2xpY2sgbWFpbiBmdW5jdGlvbiIKKwlkZWZhdWx0IG4KKwloZWxwCisJICBEZWZpbmUgbWFp
biBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNsaWNrX21haW4gZnVuY3Rpb24KKworY29uZmlnIExJQkNM
SUNLX0VMRU1TX0FRTQorCWJvb2wgIkVuYWJsZSBBUU0gZWxlbWVudHMiCisJZGVmYXVsdCB5CisJ
aGVscAorCSAgQnVpbGQgd2l0aCBJUCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tfRUxFTVNf
RVRIRVJORVQKKwlib29sICJFbmFibGUgRXRoZXJuZXQgZWxlbWVudHMiCisJZGVmYXVsdCB5CisJ
aGVscAorCSAgQnVpbGQgd2l0aCBFdGhlcm5ldCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tf
RUxFTVNfRVRIRVJTV0lUQ0gKKwlib29sICJFbmFibGUgRXRoZXJuZXQgc3dpdGNoIGVsZW1lbnRz
IgorCWRlZmF1bHQgeQorCWhlbHAKKwkgIEJ1aWxkIHdpdGggRXRoZXJuZXQgc3dpdGNoIGVsZW1l
bnRzCisKK2NvbmZpZyBMSUJDTElDS19FTEVNU19JQ01QCisJYm9vbCAiRW5hYmxlIElDTVAgZWxl
bWVudHMiCisJZGVmYXVsdCB5CisJaGVscAorCSAgQnVpbGQgd2l0aCBJQ01QIGVsZW1lbnRzCisK
K2NvbmZpZyBMSUJDTElDS19FTEVNU19JUAorCWJvb2wgIkVuYWJsZSBJUCBlbGVtZW50cyIKKwlk
ZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIGFkYXB0aXZlIHF1ZXVlIG1hbmFnZW1lbnQg
ZWxlbWVudHMKKworY29uZmlnIExJQkNMSUNLX0VMRU1TX1VOSUtSQUZUCisJYm9vbCAiRW5hYmxl
IFVuaWtyYWZ0IG5ldHdvcmtpbmciCisJZGVmYXVsdCB5CisJaGVscAorCSAgQnVpbGQgd2l0aCBV
bmlrcmFmdCBGcm9tRGV2aWNlIGFuZCBUb0RldmljZSBlbGVtZW50cworCitjb25maWcgTElCQ0xJ
Q0tfRUxFTVNfTE9DQUwKKwlib29sICJFbmFibGUgbG9jYWwgZWxlbWVudHMiCisJZGVmYXVsdCB5
CisJaGVscAorCSAgQnVpbGQgd2l0aCBsb2NhbCBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tf
RUxFTVNfU0lNUExFCisJYm9vbCAiRW5hYmxlIHNpbXBsZSBlbGVtZW50cyIKKwlkZWZhdWx0IHkK
KwloZWxwCisJICBCdWlsZCB3aXRoIHNpbXBsZSBlbGVtZW50cworCitjb25maWcgTElCQ0xJQ0tf
RUxFTVNfU1RBTkRBUkQKKwlib29sICJFbmFibGUgc3RhbmRhcmQgZWxlbWVudHMiCisJZGVmYXVs
dCB5CisJaGVscAorCSAgQnVpbGQgd2l0aCBzdGFuZGFyZCBlbGVtZW50cworCitjb25maWcgTElC
Q0xJQ0tfRUxFTVNfVENQVURQCisJYm9vbCAiRW5hYmxlIFRDUC9VRFAgZWxlbWVudHMiCisJZGVm
YXVsdCB5CisJaGVscAorCSAgQnVpbGQgd2l0aCBUQ1AvVURQIGVsZW1lbnRzCisKK2NvbmZpZyBM
SUJDTElDS19FTEVNU19USFJFQURTCisJYm9vbCAiRW5hYmxlIG11bHRpLXRocmVhZGluZyBlbGVt
ZW50cyIKKwlkZWZhdWx0IHkKKwloZWxwCisJICBCdWlsZCB3aXRoIG11bHRpLXRocmVhZGluZyBl
bGVtZW50cworCitlbmRpZgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVS
Uy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTQ4MmM3Ci0tLSAvZGV2
L251bGwKKysrIGIvTUFJTlRBSU5FUlMubWQKQEAgLTAsMCArMSwxMCBAQAorTWFpbnRhaW5lcnMg
TGlzdAorPT09PT09PT09PT09PT09PQorCitGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBp
bmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KK3RoZSBtYWlu
IFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKKwlDTElDSy1VTklLUkFGVAorCU06CUZlbGlwZSBIdWlj
aSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KKwlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9y
ZworCUY6ICoKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3YzNiYQotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxl
CkBAIC0wLDAgKzEsOSBAQAorVUtfUk9PVCA/PSAkKFBXRCkvLi4vLi4vdW5pa3JhZnQKK1VLX0xJ
QlMgPz0gJChQV0QpLy4uLy4uL2xpYnMKK0xJQlMgOj0gJChVS19MSUJTKS9uZXdsaWI6JChVS19M
SUJTKS9sd2lwCisKK2FsbDoKKwlAJChNQUtFKSAtQyAkKFVLX1JPT1QpIEE9JChQV0QpIEw9JChM
SUJTKQorCiskKE1BS0VDTURHT0FMUyk6CisJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdE
KSBMPSQoTElCUykgJChNQUtFQ01ER09BTFMpCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01h
a2VmaWxlLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ODU1MjAKLS0t
IC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZS51awpAQCAtMCwwICsxLDE4NyBAQAorIworIyAgQ29w
eXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9y
YXRpb24uCisjICAgICAgICAgICAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
ICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyAgYXJlIG1ldDoKKyMKKyMgIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjICAgICB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyAgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCisjICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjICBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
IyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRQorIyAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyAgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjICBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorIyAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjICBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgor
IworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDaGVjayByZXF1aXJlbWVudHM6IENsaWNr
IHJlcXVpcmVzIG5ldGRldiBhY2Nlc3MsIHNvIExXSVAgbXVzdCBub3QgYXR0YWNoIHRoZW0KKyMg
U2FkbHksIGtjb25maWcgZG9lc24ndCBzdXBwb3J0IGFuICJ1bnNlbGVjdCIgb3B0aW9uLCBzbyB0
aGUgbmV4dCBiZXN0IHRoaW5nCisjIHdlIGNhbiBkbyBpcyBjYXRjaCB0aGlzIGludmFsaWQgY29u
ZmlndXJhdGlvbiBoZXJlIGFuZCB0aHJvdyBhbiBlcnJvciB3aXRoCisjIGFuIGV4cGxhbmF0aW9u
IHdoYXQgdG8gZG8uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaWZlcSAoJChDT05GSUdfTFdJ
UF9BVVRPSUZBQ0UpLHkpCiskKGVycm9yIENsaWNrIGNhbm5vdCBiZSBidWlsdCB3aXRoIExXSVAg
b3B0aW9uICJBdXRvbWF0aWNhbGx5IGF0dGFjaCBuZXRpZnMiISBQbGVhc2UgZGlzYWJsZSkKK2Vu
ZGlmCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlZ2lzdGVyIHdpdGggdW5pa3JhZnQK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiskKGV2YWwgJChjYWxsIGFkZGxpYixsaWJjbGljaykp
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCitMSUJDTElDS19DT01NSVRfSEFTSD1hNTM4NDgzNWE2Y2FjMTBmOGQ0NGRhNGVlZWE4
ZWFhOGY4ZTZhMGMyCitMSUJDTElDS19VUkw9aHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2tv
aGxlci9jbGljay96aXAvJChMSUJDTElDS19DT01NSVRfSEFTSCkKKyQoZXZhbCAkKGNhbGwgZmV0
Y2hhcyxsaWJjbGljaywkKExJQkNMSUNLX1VSTCksY2xpY2stJChMSUJDTElDS19DT01NSVRfSEFT
SCkuemlwKSkKK0xJQkNMSUNLX1BBVENIRElSPSQoTElCQ0xJQ0tfQkFTRSkvcGF0Y2hlcworJChl
dmFsICQoY2FsbCBwYXRjaCxsaWJjbGljaywkKExJQkNMSUNLX1BBVENIRElSKSxjbGljay0kKExJ
QkNMSUNLX0NPTU1JVF9IQVNIKSkpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEhlbHBl
cnMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJDTElDS19FWFRSQUNURUQ9JChMSUJDTElD
S19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpCitMSUJDTElDS19FTEVNRU5U
U19ESVI9JChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzCitMSUJDTElDS19CVUlMRFRPT0w9
JChMSUJDTElDS19FWFRSQUNURUQpL2Jpbi9jbGljay1idWlsZHRvb2wKK0xJQkNMSUNLX0VMRU1f
RElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNtcCBpcCB1bmlrcmFmdCBcCisJCSAgIGxv
Y2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFkcworCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyBDb25maWcgTWVudSAtIEZpbHRlciB3aGljaCBlbGVtZW50IGNhdGVnb3JpZXMgYWN0
dWFsbHkgZ2V0IGJ1aWx0CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElCQ0xJQ0tfRUxFTV9E
SVJTX1U9JChjYWxsIHVjLCQoTElCQ0xJQ0tfRUxFTV9ESVJTKSkKK0xJQkNMSUNLX0ZJTFRFUkVE
X0VMRU1fRElSU19VIDo9ICQoZm9yZWFjaCBWLCAkKExJQkNMSUNLX0VMRU1fRElSU19VKSwgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpZiAkKGZpbHRlciB5LCQoQ09ORklH
X0xJQkNMSUNLX0VMRU1TXyRWKSksJFYpKQorTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTPSQo
Y2FsbCBsYywkKExJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSU19VKSkKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgQXBwLXNwZWNpZmljIFRhcmdldHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKKyMgUnVuIENsaWNrJ3MgY29uZmlndXJlIHNjcmlwdCB0byBnZW5lcmF0ZSB0b29scyBu
ZWVkZWQgYnkgZnVydGhlciBwcmVwYXJlIHRhcmdldHMKKyQoTElCQ0xJQ0tfQlVJTEQpLy5jb25m
aWd1cmVkOiAkKExJQkNMSUNLX0JVSUxEKS8uY3Bmcm9tdG9kZXZzCisJJChjYWxsIHZlcmJvc2Vf
Y21kLENPTkZJR1VSRSxsaWJjbGljazogJChub3RkaXIgJEApLFwKKwkgICAgICAgY2QgJChMSUJD
TElDS19FWFRSQUNURUQpICYmIC4vY29uZmlndXJlIC0tZW5hYmxlLW1pbmlvcyAtLXdpdGgteGVu
PSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1taW5pb3M9JChMSUJDTElDS19CVUlMRCkgLS13aXRo
LW5ld2xpYj0kKExJQkNMSUNLX0JVSUxEKSAtLXdpdGgtbHdpcD0kKExJQkNMSUNLX0JVSUxEKSAm
JiBcCisJICAgICAgICQoVE9VQ0gpICRAKQorCisjIEdlbmVyYXRlIGVsZW1lbnQgYnVpbGQgcnVs
ZXMgdXNpbmcgY2xpY2stYnVpbGR0b29sCiskKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNtazog
JChMSUJDTElDS19CVUlMRCkvLmNvbmZpZ3VyZWQgJChVS19DT05GSUdfT1VUKQorCSQoY2FsbCB2
ZXJib3NlX2NtZCxFTEVNTUssbGliY2xpY2s6ICQobm90ZGlyICRAKSxcCisJICAgICAgIGNkICQo
TElCQ0xJQ0tfRUxFTUVOVFNfRElSKSAmJiBlY2hvICIkKExJQkNMSUNLX0ZJTFRFUkVEX0VMRU1f
RElSUykiIHwgJChMSUJDTElDS19CVUlMRFRPT0wpIGZpbmRlbGVtIC1yIHVuaWtyYWZ0IC1YICQo
TElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmV4Y2x1ZGUgfCBncmVwIC1FICJeW14jXSIgfCBhd2sg
J3twcmludCAiTElCQ0xJQ0tfU1JDUy15ICs9ICQkKExJQkNMSUNLX0VYVFJBQ1RFRCkvZWxlbWVu
dHMvIiAkJDF9JyA+ICRAKQorCisjIEdlbmVyYXRlIGVsZW1lbnRzLmNjIGFuZCBhZGQgaXQgdG8g
dGhlIGJ1aWxkIGxpc3QKKyQoTElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmNjOiAkKExJQkNMSUNL
X0JVSUxEKS8uZWxlbWVudHNtaworCSQoY2FsbCB2ZXJib3NlX2NtZCxFTEVNQ0MsbGliY2xpY2s6
ICQobm90ZGlyICRAKSxcCisJICAgICAgIGVjaG8gIiQoTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9E
SVJTKSIgfCAkKExJQkNMSUNLX0JVSUxEVE9PTCkgZmluZGVsZW0gLXIgdW5pa3JhZnQgLXAgJChM
SUJDTElDS19FTEVNRU5UU19ESVIpIC1YICQoTElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmV4Y2x1
ZGUgPiAkKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNjb25mICYmIFwKKwkgICAgICAgJChMSUJD
TElDS19CVUlMRFRPT0wpIGVsZW0yZXhwb3J0IDwgJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRz
Y29uZiA+ICQoTElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmNjKQorCiskKExJQkNMSUNLX0JVSUxE
KS8uY3Bmcm9tdG9kZXZzOiAkKExJQkNMSUNLX0JVSUxEKS8ub3JpZ2luCisJJChjYWxsIHZlcmJv
c2VfY21kLENQLGxpYmNsaWNrOiAkKG5vdGRpciAkQCksXAorCSQoTUtESVIpIC1wICQoTElCQ0xJ
Q0tfT1JJR0lOKS9jbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKS9lbGVtZW50cyAmJiBcCisJ
JChDUCkgLXIgJChMSUJDTElDS19CQVNFKS91bmlrcmFmdCAkKExJQkNMSUNLX09SSUdJTikvY2xp
Y2stJChMSUJDTElDS19DT01NSVRfSEFTSCkvZWxlbWVudHMvICYmIFwKKwl0b3VjaCAkQCkKKwor
aWZuZXEgKCQoQ09ORklHX0xJQkNMSUNLX0VMRU1TX1VOSUtSQUZUKSwpCiskKExJQkNMSUNLX0JV
SUxEKS8ucHJlcGFyZWQ6ICQoTElCQ0xJQ0tfQlVJTEQpLy5jcGZyb210b2RldnMgJChMSUJDTElD
S19CVUlMRCkvZWxlbWVudHMuY2MKK2Vsc2UKKyQoTElCQ0xJQ0tfQlVJTEQpLy5wcmVwYXJlZDog
JChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuY2MKK2VuZGlmCisKK1VLX1BSRVBBUkUgKz0gJChM
SUJDTElDS19CVUlMRCkvLnByZXBhcmVkCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEFw
cCBpbmNsdWRlcywgY29tcGlsZSBmbGFncworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkNM
SUNLX0NJTkNMVURFUyAgICs9IC1JJChMSUJDTElDS19CQVNFKS9pbmNsdWRlICAgICAgICBcCisJ
CSAgICAgICAgLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkJICAgICBcCisJCQktSSQoTElCQ0xJQ0tf
RVhUUkFDVEVEKS9pbmNsdWRlIFwKKwkJCS1JJChMSUJMV0lQX0xXSVBfU1JDUykvaW5jbHVkZS9w
b3NpeAorTElCQ0xJQ0tfQ1hYSU5DTFVERVMgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2luY2x1ZGUg
ICAgICAgIFwKKwkJICAgICAgICAtSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKSAgICAgICAgICAgXAor
CQkJLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkvaW5jbHVkZSBcCisJCQktSSQoTElCTFdJUF9MV0lQ
X1NSQ1MpL2luY2x1ZGUvcG9zaXgKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgR2xvYmFs
IGZsYWdzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElCQ0xJQ0tfQ0ZMQUdTLXkgICAgICAg
Kz0gLURMV0lQX1RJTUVWQUxfUFJJVkFURT0wIC1EQ0xJQ0tfVVNFUkxFVkVMCitMSUJDTElDS19D
WFhGTEFHUy15ICAgICArPSAtRExXSVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElDS19VU0VSTEVW
RUwgLURIQVZFX0lQNgorTElCQ0xJQ0tfQ1hYRkxBR1MgICAgICAgKz0gLWZuby1leGNlcHRpb25z
IC1mbm8tcnR0aSAtc3RkPWMrKzExCisKKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtl
IHRoZSBidWlsZCBwcm9jZXNzIGxvb2sgbmVhdGVyCitMSUJDTElDS19TVVBQUkVTU19GTEFHUyA6
PSAtV25vLXN0cmljdC1hbGlhc2luZworTElCQ0xJQ0tfQ0ZMQUdTLXkgKz0gJChMSUJDTElDS19T
VVBQUkVTU19GTEFHUykKK0xJQkNMSUNLX0NYWEZMQUdTLXkgKz0gJChMSUJDTElDS19TVVBQUkVT
U19GTEFHUykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVW5pa3JhZnQgPC0+IENsaWNr
IGdsdWUgY29kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkNMSUNLX1NSQ1MteSArPSAk
KExJQkNMSUNLX0JBU0UpL2NsaWNrLmNjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENs
aWNrIHNvdXJjZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9hcmNoaXZlLmNjCitMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9hcmdzLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChM
SUJDTElDS19FWFRSQUNURUQpL2xpYi9hdG9taWMuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL2JpZ2hhc2htYXBfYXJlbmEuY2MKK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2JpdHZlY3Rvci5jYworTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvY29uZnBhcnNlLmNjCitMSUJDTElDS19T
UkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9jcmMzMi5jCitMSUJDTElDS19TUkNT
LXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9kcml2ZXIuY2MKK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2VsZW1lbnQuY2MKK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2VsZW1maWx0ZXIuY2MKK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2Vycm9yLmNjCitMSUJDTElDS19TUkNT
LXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ldGhlcmFkZHJlc3MuY2MKK0xJQkNMSUNL
X1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2dhcHJhdGUuY2MKK0xJQkNMSUNL
X1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2dsdWUuY2MKK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2hhbmRsZXJjYWxsLmNjCitMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9oYXNoYWxsb2NhdG9yLmNjCitM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pbl9ja3N1bS5jCitM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pbnRlZ2Vycy5jYwor
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXBhZGRyZXNzLmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcGZsb3dpZC5j
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXB0YWJsZS5j
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbGV4ZXIuY2MK
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL21hc3Rlci5jYwor
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWQ1LmNjCitMSUJD
TElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9uYW1laW5mby5jYworTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbm90aWZpZXIuY2MKK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3BhY2tldC5jYworTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvcm91dGVyLmNjCitMSUJD
TElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9yb3V0ZXJ0aHJlYWQuY2MK
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlcnZpc2l0
b3IuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3N0cmFj
Y3VtLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9zdHJp
bmcuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3Rhc2su
Y2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVyLmNj
CitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi90aW1lcnNldC5j
YworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdGltZXN0YW1w
LmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi92YXJpYWJs
ZWVudi5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXA2
dGFibGUuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lw
NmFkZHJlc3MuY2MKK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L2lwNmZsb3dpZC5jYworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9s
aWIvc2VsZWN0c2V0LmNjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENsaWNrIGVsZW1l
bnRzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJ
Q0tfQlVJTEQpL2VsZW1lbnRzLmNjCistaW5jbHVkZSAkKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVu
dHNtawpkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjJjZGU1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9SRUFETUUubWQK
QEAgLTAsMCArMSw1IEBACitDbGljayBmb3IgVW5pa3JhZnQKKz09PT09PT09PT09PT09PT09PT0K
KworUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVu
dGF0aW9uIGluIHRoZSBgZG9jL2AKK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFpbiB1bmlrcmFmdCBy
ZXBvc2l0b3J5LgotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH2-0002wg-Af; Wed, 05 Jun 2019 12:44: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH1-0002wH-7A
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:11 +0000
X-Inumbo-ID: 9b396596-878f-11e9-a96b-874953fd2399
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9b396596-878f-11e9-a96b-874953fd2399;
 Wed, 05 Jun 2019 12:44:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 62CA1104276;
 Wed,  5 Jun 2019 14:44:06 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hu5t30jCa9JV; Wed,  5 Jun 2019 14:44:06 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 425AD103B6A
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:06 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:05 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:24 +0200
Message-ID: <20190605124332.25437-4-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 03/11] Initial public
 release: click.cc: ifdef out xen-specific code.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SW4gdGhlIENsaWNrT1MgcG9ydCwgdGhpcyBjb2RlIG1vc3RseSBkZWFscyB3aXRoIHByb3ZpZGlu
ZyBhIGNvbnNvbGUgZm9yCmludGVyYWN0aW5nIHdpdGggQ2xpY2suIFRoaXMgaW5pdGlhbCByZWxl
YXNlIGRvZXNuJ3QgaGF2ZSBzdWNoIHN1cHBvcnQsCmJ1dCB0aGlzIGNvdWxkIGJlIHJldmlzaXRl
ZCBhdCBhIGxhdGVyIHBvaW50LgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9y
aWFuLnNjaG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUu
aHVpY2lAbmVjbGFiLmV1PgotLS0KIGNsaWNrLmNjIHwgNzcgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzOSBp
bnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jbGljay5jYyBiL2Ns
aWNrLmNjCmluZGV4IDI1YmM1MjQuLmEzYmZiYTggMTAwNjQ0Ci0tLSBhL2NsaWNrLmNjCisrKyBi
L2NsaWNrLmNjCkBAIC0zMiw2ICszMiwxNiBAQAogICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBF
WFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLwogCisvKiBUbyBiZSBpbXBsZW1l
bnRlZCBhdCBhIGxhdGVyIHBvaW50ICovCisjZGVmaW5lIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9J
TVBMRU1FTlRFRCAwCisKK2V4dGVybiAiQyJ7CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxwb2xsLmg+Cit9CisK
ICNpbmNsdWRlIDxjbGljay9jb25maWcuaD4KICNpbmNsdWRlIDxjbGljay9sZXhlci5oaD4KICNp
bmNsdWRlIDxjbGljay9yb3V0ZXIuaGg+CkBAIC00MiwxNSArNTIsMTAgQEAKICNpbmNsdWRlIDxj
bGljay9zdHJhY2N1bS5oaD4KICNpbmNsdWRlIDxjbGljay9kcml2ZXIuaGg+CiAKLWV4dGVybiAi
QyJ7Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDx1ay9zY2hlZC5oPgorI2luY2x1ZGUgPHVrL3RocmVhZC5oPgog
Ci0jaW5jbHVkZSA8bWluaS1vcy94ZW5idXMuaD4KLSNpbmNsdWRlIDxtaW5pLW9zL3NodXRkb3du
Lmg+Ci0jaW5jbHVkZSA8bWluaS1vcy9zY2hlZC5oPgotfQoraW50IGNsaWNrX250aHJlYWRzID0g
MTsKIAogdm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKIApAQCAtNTksMTkgKzY0LDYgQEAgdm9p
ZCAqX19kc29faGFuZGxlID0gTlVMTDsKIAlwcmludGYoIlslczolZF0gIiBmbXQgIlxuIiwgXAog
CQlfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQogCi0vKioKLSAqIHhlbnN0
b3JlIGhlbHBlcnMKLSAqLwotI2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3MiCi0jZGVmaW5lIFBB
VEhfTUFYX0xFTgkxMDI0Ci0KLXN0cnVjdCB4ZW5zdG9yZV9kZXYgewotCWRvbWlkX3QgZG9tOwot
CWNoYXIgKm5vZGVuYW1lOwotCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7Ci19ICp4c2RldiA9
IE5VTEw7Ci0KLXVpbnQzMl90IGRvbWlkID0gLTE7CiB1X2ludCBfc2h1dGRvd24gPSAwOwogdV9p
bnQgX3JlYXNvbiA9IDA7CiAKQEAgLTk5LDYgKzkxLDcgQEAgcmVhZF9yaWQoY2hhciAqcGF0aCkK
IAlyZXR1cm4gaWQ7CiB9CiAKKyNpZiBDTElDS19DT05TT0xFX1NVUFBPUlRfSU1QTEVNRU5URUQK
IFN0cmluZyAqCiByZWFkX2NvbmZpZyh1X2ludCByaWQgPSAwKQogewpAQCAtMTE3LDcgKzExMCw3
IEBAIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApCiAKIAlyZXR1cm4gY2ZnOwogfQotCisjZW5k
aWYgLyogQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVEICovCiAvKgogICogY2xpY2sg
Z2x1ZQogICovCkBAIC0xMzUsNyArMTI4LDcgQEAgdm9pZAogcm91dGVyX3RocmVhZCh2b2lkICp0
aHJlYWRfZGF0YSkKIHsKIAl1X2ludCAqcmlkID0gKHVfaW50KikgdGhyZWFkX2RhdGE7Ci0JU3Ry
aW5nICpjb25maWcgPSByZWFkX2NvbmZpZygqcmlkKTsKKwlTdHJpbmcgKmNvbmZpZyA9IG5ldyBT
dHJpbmc7IC8vcmVhZF9jb25maWcoKnJpZCk7CiAJc3RydWN0IHJvdXRlcl9pbnN0YW5jZSAqcmkg
PSAmcm91dGVyX2xpc3RbKnJpZF07CiAKIAlyaS0+ciA9IGNsaWNrX3JlYWRfcm91dGVyKCpjb25m
aWcsIHRydWUsIGVycmgsIGZhbHNlLCAmbWFzdGVyKTsKQEAgLTE3NCwxMiArMTY3LDEzIEBAIHJv
dXRlcl9zdG9wKGludCBuID0gTUFYX1JPVVRFUlMpCiAKIAkJZG8gewogCQkJci0+cGxlYXNlX3N0
b3BfZHJpdmVyKCk7Ci0JCQlzY2hlZHVsZSgpOworCQkJdWtfc2NoZWRfeWllbGQoKTsKIAkJfSB3
aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsKIAl9CiAJTE9HKCJTdG9wcGVkIGFsbCBy
b3V0ZXJzLi4uXG5cbiIpOwogfQogCisjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVO
VEVECiB2b2lkCiByb3V0ZXJfc3VzcGVuZChpbnQgbiA9IE1BWF9ST1VURVJTKQogewpAQCAtMzA3
LDI1ICszMDEsMzIgQEAgb25fcm91dGVyKGNoYXIgKmtleSwgdm9pZCAqZGF0YSkKIAogCXJldHVy
biAwOwogfQorI2VuZGlmIC8qIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRFRCAqLwor
CisjaWYgQ09ORklHX0xJQkNMSUNLX01BSU4KKyNkZWZpbmUgQ0xJQ0tfTUFJTiBtYWluCisjZWxz
ZQorI2RlZmluZSBDTElDS19NQUlOIGNsaWNrX21haW4KK2V4dGVybiAiQyIgaW50IGNsaWNrX21h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKyNlbmRpZgogCiAvKiBydW5zIHRoZSBldmVudCBs
b29wICovCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitpbnQgQ0xJQ0tfTUFJTihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0Jc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1Y3QgeGVu
c3RvcmVfZGV2KTsKKwlzdHJ1Y3QgdWtfdGhyZWFkICpyb3V0ZXI7CiAKIAljbGlja19zdGF0aWNf
aW5pdGlhbGl6ZSgpOwogCWVycmggPSBFcnJvckhhbmRsZXI6OmRlZmF1bHRfaGFuZGxlcigpOwog
Ci0JeHNkZXYgPSAoc3RydWN0IHhlbnN0b3JlX2RldiopIG1hbGxvYyhsZW4pOwotCW1lbXNldCh4
c2RldiwgMCwgbGVuKTsKIAltZW1zZXQocm91dGVyX2xpc3QsIDAsIE1BWF9ST1VURVJTICogc2l6
ZW9mKHN0cnVjdCByb3V0ZXJfaW5zdGFuY2UpKTsKIAlmb3IgKGludCBpID0gMDsgaSA8IE1BWF9S
T1VURVJTOyArK2kpIHsKIAkJcm91dGVyX2xpc3RbaV0uZl9zdG9wID0gMTsKIAl9CiAKLQl4ZW5i
dXNfd2F0Y2hfcGF0aF90b2tlbihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giLAot
CQkJJnhzZGV2LT5ldmVudHMpOwotCisjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVO
VEVECisvKiBUT0RPOiBUaGlzIGludGVyYWN0aW9uIGJldHdlZW4geGVuYnVzIGFuZCBjbGljayBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCisgKiBnZW5lcmljIHVuaWtyYWZ0IGludGVyYWN0aW9u
IHNjaGVtZSwgZm9yIGV4YW1wbGUsIHZpYSBhIGNvbnNvbGUuCisgKi8KIAl3aGlsZSAoIV9zaHV0
ZG93bikgewogCQlTdHJpbmcgdmFsdWU7CiAJCWNoYXIgKmVyciwgKnZhbCwgKipwYXRoOwpAQCAt
MzQwLDE3ICszNDEsMTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCW9u
X3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7CiAJfQotCisjZWxzZQor
CXJvdXRlciA9IHVrX3RocmVhZF9jcmVhdGUoImNsaWNrLXJvdXRlciIsIHJvdXRlcl90aHJlYWQs
IDApOworCXVrX3RocmVhZF93YWl0KHJvdXRlcik7CisjZW5kaWYKIAlMT0coIlNodXR0aW5nIGRv
d24uLi4iKTsKLQl4ZW5idXNfdW53YXRjaF9wYXRoX3Rva2VuKFhCVF9OSUwsIFBBVEhfUk9PVCwg
InJvdXRlci13YXRjaCIpOwotCi0JZmluaV94ZW5idXMoKTsKLQlmcmVlKHhzZGV2KTsKIAogCXJl
dHVybiBfcmVhc29uOwogfQogCiAvKiBhcHAgc2h1dGRvd24gaG9vayBmcm9tIG1pbmlvcyAqLwor
LyogVE9ETzogY291bGQgYmUgcmV1c2VkIGFzIGNhbGwtaW4gZnJvbSB1bmlrcmFmdCAqLworI2lm
IENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1FTlRFRAogZXh0ZXJuICJDIiB7CiBpbnQgYXBw
X3NodXRkb3duKHVuc2lnbmVkIHJlYXNvbikKIHsKQEAgLTM2MCwxNCArMzYyLDEyIEBAIGludCBh
cHBfc2h1dGRvd24odW5zaWduZWQgcmVhc29uKQogCQlfc2h1dGRvd24gPSAxOwogCQlfcmVhc29u
ID0gcmVhc29uOwogCQlyb3V0ZXJfc3RvcCgpOwotCQl4ZW5idXNfcmVsZWFzZV93YWl0X2Zvcl93
YXRjaCgmeHNkZXYtPmV2ZW50cyk7CiAJCWJyZWFrOwogCWNhc2UgU0hVVERPV05fcmVib290Ogog
CQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cmVib290Iik7CiAJCV9zaHV0ZG93biA9
IDE7CiAJCV9yZWFzb24gPSByZWFzb247CiAJCXJvdXRlcl9zdG9wKCk7Ci0JCXhlbmJ1c19yZWxl
YXNlX3dhaXRfZm9yX3dhdGNoKCZ4c2Rldi0+ZXZlbnRzKTsKIAkJYnJlYWs7CiAJY2FzZSBTSFVU
RE9XTl9zdXNwZW5kOgogCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249c3VzcGVuZCIp
OwpAQCAtMzgyLDMgKzM4Miw0IEBAIGludCBhcHBfc2h1dGRvd24odW5zaWduZWQgcmVhc29uKQog
CXJldHVybiAwOwogfQogfQorI2VuZGlmIC8qIENMSUNLX0NPTlNPTEVfU1VQUE9SVF9JTVBMRU1F
TlRFRCAqLwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH2-0002wu-EW; Wed, 05 Jun 2019 12:44:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH1-0002wS-EO
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:11 +0000
X-Inumbo-ID: 9cd24cb5-878f-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9cd24cb5-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:09 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id F2987F20A8;
 Wed,  5 Jun 2019 14:44:08 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id oXSL21scUaNm; Wed,  5 Jun 2019 14:44:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C6B8FF2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:06 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:06 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:25 +0200
Message-ID: <20190605124332.25437-5-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 04/11] Initial public
 release: click config-userlevel.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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2UgdXNlIHVzZXJsZXZlbCBtb2RlIGZvciBvdXIgdW5pa3JhZnQgY2xpY2sgcG9ydC4gVGhpcyBj
b25maWcgc2V0cwpvcHRpb25zIGFjY29yZGluZyB0byB3aGljaCBmZWF0dXJlcyBhcmUgYXZhaWxh
YmxlIGluIHVuaWtyYWZ0LgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFu
LnNjaG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVp
Y2lAbmVjbGFiLmV1PgotLS0KIGluY2x1ZGUvY2xpY2svY29uZmlnLXVzZXJsZXZlbC5oIHwgMzQ4
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzNDggaW5z
ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY2xpY2svY29uZmlnLXVzZXJs
ZXZlbC5oCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jbGljay9jb25maWctdXNlcmxldmVsLmggYi9p
bmNsdWRlL2NsaWNrL2NvbmZpZy11c2VybGV2ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMjU0OGJjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9jbGljay9jb25m
aWctdXNlcmxldmVsLmgKQEAgLTAsMCArMSwzNDggQEAKKy8qIGluY2x1ZGUvY2xpY2svY29uZmln
LXVzZXJsZXZlbC5oLiAgR2VuZXJhdGVkIGZyb20gY29uZmlnLXVzZXJsZXZlbC5oLmluIGJ5IGNv
bmZpZ3VyZS4gICovCisvKiBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGNvbmZpZ3VyZSB0byBwcm9k
dWNlIGNvbmZpZy11c2VybGV2ZWwuaC4gLSotIG1vZGU6IGMgLSotICovCisjaWZuZGVmIENMSUNL
X0NPTkZJR19VU0VSTEVWRUxfSAorI2RlZmluZSBDTElDS19DT05GSUdfVVNFUkxFVkVMX0gKKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfX3RocmVhZCBzdG9yYWdlIGNsYXNzIHNwZWNpZmll
ci4gKi8KKyNkZWZpbmUgSEFWRV9fX1RIUkVBRF9TVE9SQUdFX0NMQVNTIDEKKworLyogRGVmaW5l
IGlmIGFjY2VwdCgpIHVzZXMgc29ja2xlbl90LiAqLworI2RlZmluZSBIQVZFX0FDQ0VQVF9TT0NL
TEVOX1QgMQorCisvKiBEZWZpbmUgaWYga3F1ZXVlKCkgbWF5IGJlIHVzZWQgdG8gd2FpdCBmb3Ig
ZmlsZSBkZXNjcmlwdG9yIGV2ZW50cy4gKi8KKyNkZWZpbmUgSEFWRV9BTExPV19LUVVFVUUgMAor
CisvKiBEZWZpbmUgaWYgcG9sbCgpIG1heSBiZSB1c2VkIHRvIHdhaXQgZm9yIGZpbGUgZGVzY3Jp
cHRvciBldmVudHMuICovCisjZGVmaW5lIEhBVkVfQUxMT1dfUE9MTCAxCisKKy8qIERlZmluZSBp
ZiBzZWxlY3QoKSBtYXkgYmUgdXNlZCB0byB3YWl0IGZvciBmaWxlIGRlc2NyaXB0b3IgZXZlbnRz
LiAqLworI2RlZmluZSBIQVZFX0FMTE9XX1NFTEVDVCAxCisKKy8qIERlZmluZSBpZiA8cGNhcC5o
PiB1c2VzIGJwZl90aW1ldmFsLiAqLworLyogI3VuZGVmIEhBVkVfQlBGX1RJTUVWQUwgKi8KKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8Ynl0ZXN3YXAuaD4gaGVhZGVyIGZpbGUuICovCisj
ZGVmaW5lIEhBVkVfQllURVNXQVBfSCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgY2xv
Y2tfZ2V0dGltZSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uCisgICBvZiAnY2xvY2tf
Z2V0dGltZScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKyNkZWZpbmUgSEFWRV9ERUNMX0NM
T0NLX0dFVFRJTUUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRp
b24KKyAgIG9mICdtYWR2aXNlJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LiAqLworI2RlZmluZSBI
QVZFX0RFQ0xfTUFEVklTRSAwCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNs
YXJhdGlvbgorICAgb2YgJ3BjYXBfc2V0bm9uYmxvY2snLCBhbmQgdG8gMCBpZiB5b3UgZG9uJ3Qu
ICovCisjZGVmaW5lIEhBVkVfREVDTF9QQ0FQX1NFVE5PTkJMT0NLIDEKKworLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9E
TEZDTl9IICovCisKKy8qIERlZmluZSBpZiBkeW5hbWljIGxpbmtpbmcgaXMgcG9zc2libGUuICov
CisvKiAjdW5kZWYgSEFWRV9EWU5BTUlDX0xJTktJTkcgKi8KKworLyogRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSA8ZXhlY2luZm8uaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9FWEVD
SU5GT19IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmZzIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX0ZGUyAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZmZzbCBmdW5j
dGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9GRlNMIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSBmZnNsbCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9GRlNMTCAxCisKKy8qIEZsb2F0aW5n
IHBvaW50IGFyaXRobWV0aWMgaXMgYWxsb3dlZC4gKi8KKyNkZWZpbmUgSEFWRV9GTE9BVF9UWVBF
UyAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGdycC5oPiBoZWFkZXIgZmlsZS4gKi8K
KyNkZWZpbmUgSEFWRV9HUlBfSCAxCisKKy8qIERlZmluZSBpZiB0aGUgbGFzdCBhcmd1bWVudCB0
byBFVl9TRVQgaGFzIHBvaW50ZXIgdHlwZS4gKi8KKy8qICN1bmRlZiBIQVZFX0VWX1NFVF9VREFU
QV9QT0lOVEVSICovCisKKy8qIERlZmluZSBpZiAnc3RydWN0IGlmX2RhdGEnIGhhcyBhbiAnaWZp
X2RhdGFsZW4nIG1lbWJlci4gKi8KKy8qICN1bmRlZiBIQVZFX0lGX0RBVEFfSUZJX0RBVEFMRU4g
Ki8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8aWZhZGRycy5oPiBoZWFkZXIgZmlsZS4g
Ki8KKy8qICN1bmRlZiBIQVZFX0lGQUREUlNfSCAqLworCisvKiBEZWZpbmUgaWYgJ2ludDY0X3Qn
IGlzIHR5cGVkZWZlZCB0byAnbG9uZycgYXQgdXNlciBsZXZlbC4gKi8KKyNkZWZpbmUgSEFWRV9J
TlQ2NF9JU19MT05HX1VTRVJMRVZFTCAxCisKKy8qIERlZmluZSBpZiAnaW50NjRfdCcgaXMgdHlw
ZWRlZmVkIHRvICdsb25nIGxvbmcnIGF0IHVzZXIgbGV2ZWwuICovCisvKiAjdW5kZWYgSEFWRV9J
TlQ2NF9JU19MT05HX0xPTkdfVVNFUkxFVkVMICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX0lOVFRZUEVTX0gg
MQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGtxdWV1ZSBmdW5jdGlvbi4gKi8KKy8qICN1
bmRlZiBIQVZFX0tRVUVVRSAqLworCisvKiBEZWZpbmUgaWYgeW91ciBDIGxpYnJhcnkgY29udGFp
bnMgbGFyZ2UgZmlsZSBzdXBwb3J0LiAqLworI2RlZmluZSBIQVZFX0xBUkdFX0ZJTEVfU1VQUE9S
VCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lmX3R1bi5oPiBoZWFkZXIg
ZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX0xJTlVYX0lGX1RVTl9IICovCisKKy8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgbWFkdmlzZSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9NQURWSVNF
IDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtbWFwIGZ1bmN0aW9uLiAqLworI2RlZmlu
ZSBIQVZFX01NQVAgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXQvYnBmLmg+IGhl
YWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfTkVUX0JQRl9IICovCisKKy8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl9kbC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBI
QVZFX05FVF9JRl9ETF9IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl90
YXAuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9ORVRfSUZfVEFQX0ggKi8KKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmX3R1bi5oPiBoZWFkZXIgZmlsZS4gKi8K
Ky8qICN1bmRlZiBIQVZFX05FVF9JRl9UVU5fSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxuZXQvaWZfdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9ORVRf
SUZfVFlQRVNfSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXRkYi5oPiBoZWFk
ZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX05FVERCX0ggKi8KKworLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSA8bmV0L25ldG1hcC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZF
X05FVF9ORVRNQVBfSCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxuZXRwYWNrZXQv
cGFja2V0Lmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZmVkIEhBVkVfTkVUUEFDS0VUX1BBQ0tF
VF9IICovCisKKy8qIERlZmluZSBpZiA8bmV3Lmg+IGV4aXN0cyBhbmQgd29ya3MuICovCisvKiAj
dW5kZWYgSEFWRV9ORVdfSCAqLworCisvKiBEZWZpbmUgaWYgPG5ldz4gZXhpc3RzIGFuZCB3b3Jr
cy4gKi8KKy8qICN1bmRlZiBIQVZFX05FV19IRFIgMSAqLworCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgLWxwY2FwIGFuZCBwY2FwLmguICovCisjZGVmaW5lIEhBVkVfUENBUCAxCisKKy8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgcGNhcF9pbmplY3QgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVf
UENBUF9JTkpFQ1QgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2VuZHBhY2tl
dCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9QQ0FQX1NFTkRQQUNLRVQgMQorCisvKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2V0ZGlyZWN0aW9uIGZ1bmN0aW9uLiAqLworI2RlZmlu
ZSBIQVZFX1BDQVBfU0VURElSRUNUSU9OIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBw
Y2FwX3NldG5vbmJsb2NrIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BDQVBfU0VUTk9OQkxP
Q0sgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBjYXBfc2V0X2ltbWVkaWF0ZV9tb2Rl
IGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1BDQVBfU0VUX0lNTUVESUFURV9NT0RFIDEKKwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIC1scHJvcGVyIGFuZCBwcm9wLmgsIGFuZCBwcm9wZXIgb3Bl
cmF0aW9ucyBzaG91bGQgYmUKKyAgIHByZWZlcnJlZCB0byB0aGVpciBub24tcHJvcGVyIGNvdW50
ZXJwYXJ0cy4gKi8KKy8qICN1bmRlZiBIQVZFX1BST1BFUiAqLworCisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgYSBub24tZW11bGF0ZWQgPHBvbGwuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYg
SEFWRV9QT0xMX0ggKi8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwc2VsZWN0IGZ1bmN0
aW9uLiAqLworI2RlZmluZSBIQVZFX1BTRUxFQ1QgMQorCisvKiBQbGFjZW1lbnQgbmV3IGlzIGFs
d2F5cyBwcm92aWRlZCBiZWxvdy4gKi8KKyNkZWZpbmUgSEFWRV9QTEFDRU1FTlRfTkVXIDEKKwor
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uCisgICBvZiAncHRocmVh
ZF9zZXRhZmZpbml0eV9ucCcsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKy8qICN1bmRlZiBI
QVZFX0RFQ0xfUFRIUkVBRF9TRVRBRkZJTklUWV9OUCAqLworCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIDxwd2QuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfUFdEX0ggMQorCisv
KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHJhbmRvbSBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFW
RV9SQU5ET00gMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBmdW5jdGlv
bi4gKi8KKy8qICN1bmRlZiBIQVZFX1NJR0FDVElPTiAqLworCisvKiBEZWZpbmUgaWYgeW91IGhh
dmUgdGhlIHNucHJpbnRmIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX1NOUFJJTlRGIDEKKwor
LyogRGVmaW5lIGlmICdzdHJ1Y3Qgc29ja2FkZHJfaW4nIGhhcyBhICdzaW5fbGVuJyBtZW1iZXIu
ICovCisvKiAjdW5kZWYgSEFWRV9TT0NLQUREUl9JTl9TSU5fTEVOICovCisKKy8qIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgc3RyZXJyb3IgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RSRVJS
T1IgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxl
LiAqLworI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgc3RybmxlbiBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9TVFJOTEVOIDEKKworLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2YgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RS
VE9GIDEKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xkIGZ1bmN0aW9uLiAqLwor
I2RlZmluZSBIQVZFX1NUUlRPTEQgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnRv
dWwgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfU1RSVE9VTCAxCisKKy8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgPHN5cy9ldmVudC5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZF
X1NZU19FVkVOVF9IICovCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+
IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19NTUFOX0ggMQorCisvKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIHRjZ2V0cGdycCBmdW5jdGlvbi4gKi8KKyNkZWZpbmUgSEFWRV9UQ0dF
VFBHUlAgMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx0ZXJtaW8uaD4gaGVhZGVyIGZp
bGUuICovCisjZGVmaW5lIEhBVkVfVEVSTUlPX0ggMQorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUg
dV9pbnRYWF90IHR5cGVzIGJ1dCBub3QgdWludFhYX3QgdHlwZXMuICovCisvKiAjdW5kZWYgSEFW
RV9VX0lOVF9UWVBFUyAqLworCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4g
aGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorCisvKiBEZWZpbmUgaWYg
YSBDbGljayB1c2VyLWxldmVsIGRyaXZlciBtaWdodCBydW4gbXVsdGlwbGUgdGhyZWFkcy4gKi8K
Ky8qICN1bmRlZiBIQVZFX1VTRVJfTVVMVElUSFJFQUQgKi8KKworLyogRGVmaW5lIGlmIGEgQ2xp
Y2sgdXNlci1sZXZlbCBkcml2ZXIgdXNlcyBJbnRlbCBEUERLLiAqLworLyogI3VuZGVmIEhBVkVf
RFBESyAqLworCisvKiBEZWZpbmUgaWYgQ2xpY2sgc2hvdWxkIHVzZSBWYWxncmluZCBjbGllbnQg
cmVxdWVzdHMuICovCisvKiAjdW5kZWYgSEFWRV9WQUxHUklORCAqLworCisvKiBEZWZpbmUgaWYg
eW91IGhhdmUgdGhlIDx2YWxncmluZC9tZW1jaGVjay5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1
bmRlZiBIQVZFX1ZBTEdSSU5EX01FTUNIRUNLX0ggKi8KKworLyogRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSB2c25wcmludGYgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfVlNOUFJJTlRGIDEKKwor
LyogVGhlIHNpemUgb2YgYSBgY2xpY2tfamlmZmllc190JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9m
LiAqLworI2RlZmluZSBTSVpFT0ZfQ0xJQ0tfSklGRklFU19UIFNJWkVPRl9JTlQKKworLyogVGhl
IHNpemUgb2YgYSBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJ
WkVPRl9PRkZfVCA4CisKKworLyogU2V0IGZlYXR1cmUgdGVzdCBtYWNyb3MgYmVmb3JlIGFueXRo
aW5nIGlzIGluY2x1ZGVkLiAqLworI2lmIEhBVkVfTEFSR0VfRklMRV9TVVBQT1JUICYmIEhBVkVf
SU5UNjRfVFlQRVMKKyMgaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZG
U0VUX0JJVFMgIT0gNjQKKyMgIGVycm9yICJiYWQgX0ZJTEVfT0ZGU0VUX0JJVFMsIGRpZCB5b3Ug
I2luY2x1ZGUgPGNsaWNrL2NvbmZpZy5oPiBmaXJzdD8iCisjIGVuZGlmCisjIGRlZmluZSBfTEFS
R0VGSUxFX1NPVVJDRSAxCisjIGRlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAorI2VuZGlmCisj
aWZkZWYgX19BUFBMRV9fCisjIGRlZmluZSBfREFSV0lOX1VOTElNSVRFRF9TRUxFQ1QgMQorI2Vu
ZGlmCisKKy8qIEluY2x1ZGUgaW50ZWdlciB0eXBlIGRlZmluaXRpb25zLiAqLworI2lmZGVmIEhB
VkVfSU5UVFlQRVNfSAorIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2VuZGlmCisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisKKy8qIERlZmluZSB1aW50IHR5cGVzIGluIHRlcm1zIG9mIHVfaW50IHR5
cGVzLCBpZiBuZWNlc3NhcnkuICovCisjaWZkZWYgSEFWRV9VX0lOVF9UWVBFUwordHlwZWRlZiB1
X2ludDhfdCB1aW50OF90OwordHlwZWRlZiB1X2ludDE2X3QgdWludDE2X3Q7Cit0eXBlZGVmIHVf
aW50MzJfdCB1aW50MzJfdDsKKyMgaWZkZWYgSEFWRV9JTlQ2NF9UWVBFUwordHlwZWRlZiB1X2lu
dDY0X3QgdWludDY0X3Q7CisjIGVuZGlmCit0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CQkvKiBYWFg/
ICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OworI2VuZGlmCisKKy8qIERlZmlu
ZSBIQVZFX0lOVDY0X0lTX0xPTkcgYmFzZWQgb24gSEFWRV9JTlQ2NF9JU19MT05HX1VTRVJMRVZF
TC4gKi8KKyNpZmRlZiBIQVZFX0lOVDY0X0lTX0xPTkdfVVNFUkxFVkVMCisjIGRlZmluZSBIQVZF
X0lOVDY0X0lTX0xPTkcgSEFWRV9JTlQ2NF9JU19MT05HX1VTRVJMRVZFTAorI2VuZGlmCisKKy8q
IERlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkdfTE9ORyBiYXNlZCBvbiBIQVZFX0lOVDY0X0lTX0xP
TkdfTE9OR19VU0VSTEVWRUwuICovCisjaWZkZWYgSEFWRV9JTlQ2NF9JU19MT05HX0xPTkdfVVNF
UkxFVkVMCisjIGRlZmluZSBIQVZFX0lOVDY0X0lTX0xPTkdfTE9ORyBIQVZFX0lOVDY0X0lTX0xP
TkdfTE9OR19VU0VSTEVWRUwKKyNlbmRpZgorCisvKiBJZiA2NC1iaXQgaW50ZWdlcnMgZXhpc3Qs
IHRoZW4gNjQtYml0IGRpdmlkZSBleGlzdHMuICovCisjaWZkZWYgSEFWRV9JTlQ2NF9UWVBFUwor
IyBkZWZpbmUgSEFWRV9JTlQ2NF9ESVZJREUgMQorI2VuZGlmCisKKy8qIERlZmluZSBIQVZFX01V
TFRJVEhSRUFEIGJhc2VkIG9uIEhBVkVfVVNFUl9NVUxUSVRIUkVBRC4gKi8KKyNpZmRlZiBIQVZF
X1VTRVJfTVVMVElUSFJFQUQKKyMgZGVmaW5lIEhBVkVfTVVMVElUSFJFQUQgSEFWRV9VU0VSX01V
TFRJVEhSRUFECisjZW5kaWYKKworLyogRGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUgaWYg
dGhlIGNsb2NrX2dldHRpbWUgZnVuY3Rpb24gaXMgdXNhYmxlLiAqLworI2lmbmRlZiBIQVZFX1VT
RV9DTE9DS19HRVRUSU1FCisjIGlmIEhBVkVfREVDTF9DTE9DS19HRVRUSU1FICYmIEhBVkVfQ0xP
Q0tfR0VUVElNRQorIyAgZGVmaW5lIEhBVkVfVVNFX0NMT0NLX0dFVFRJTUUgMQorIyBlbmRpZgor
I2VuZGlmCisKKy8qIEluY2x1ZGUgYXNzZXJ0IG1hY3JvLiAqLworI2luY2x1ZGUgPGFzc2VydC5o
PgorCisvKiBEZWZpbmUgbGlrZWx5IGFuZCB1bmxpa2VseSBtYWNyb3MuICovCisjaWYgX19HTlVD
X18gPj0gMworIyBkZWZpbmUgbGlrZWx5KHgpCV9fYnVpbHRpbl9leHBlY3QoISEoeCksIDEpCisj
IGRlZmluZSB1bmxpa2VseSh4KQlfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLCAwKQorI2Vsc2UKKyMg
ZGVmaW5lIGxpa2VseSh4KQkoeCkKKyMgZGVmaW5lIHVubGlrZWx5KHgpCSh4KQorI2VuZGlmCisK
Ky8qIERlZmluZSBpZiBtbWFwIGlzIGFsbG93ZWQuICovCisjaWYgZGVmaW5lZChIQVZFX1NZU19N
TUFOX0gpICYmIGRlZmluZWQoSEFWRV9NTUFQKQorIyBkZWZpbmUgQUxMT1dfTU1BUCAxCisjZW5k
aWYKKworLyogUHJvdG90eXBlIHN0cmVycm9yIGlmIHdlIGRvbid0IGhhdmUgaXQuICovCisjaWZu
ZGVmIEhBVkVfU1RSRVJST1IKK2NoYXIgKnN0cmVycm9yKGludCBlcnJubyk7CisjZW5kaWYKKwor
LyogVXNlIG5hbm9zZWNvbmQtZ3JhbnVsYXJpdHkgdGltZXN0YW1wcyBpZiB0aGV5IGFyZSBlbmFi
bGVkLiAqLworI2lmIEhBVkVfTkFOT1RJTUVTVEFNUF9FTkFCTEVECisjIGRlZmluZSBUSU1FU1RB
TVBfTkFOT1NFQyAxCisjIGRlZmluZSBIQVZFX05BTk9USU1FU1RBTVAgMQkvKiBEZXByZWNhdGVk
ICovCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8qIFByb3ZpZGUgcGxhY2VtZW50
IG5ldy4gKi8KKyNpZiBIQVZFX05FV19IRFIKKyMgaW5jbHVkZSA8bmV3PgorI2VsaWYgSEFWRV9O
RVdfSAorIyBpbmNsdWRlIDxuZXcuaD4KKyNlbHNlCitpbmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCAqdikgeyByZXR1cm4gdjsgfQorI2VuZGlmCisKKy8qIFByb3RvdHlwZSBt
YWR2aXNlIGlmIHdlIGhhdmUgaXQsIGJ1dCBub3QgdGhlIHByb3RvdHlwZS4gKi8KKyNpZiBBTExP
V19NTUFQICYmIEhBVkVfTUFEVklTRSAmJiAhSEFWRV9ERUNMX01BRFZJU0UKK2V4dGVybiAiQyIg
aW50IG1hZHZpc2Uodm9pZCAqYWRkciwgc2l6ZV90IGxlbiwgaW50IGJlaGF2KTsKKyNlbmRpZgor
CisvKiBEZWZpbmUgbWFjcm9zIHRoYXQgc3Vycm91bmQgQ2xpY2sgZGVjbGFyYXRpb25zLiAqLwor
I2lmbmRlZiBDTElDS19ERUNMUworIyBkZWZpbmUgQ0xJQ0tfREVDTFMJCS8qICovCisjIGRlZmlu
ZSBDTElDS19FTkRERUNMUwkJLyogKi8KKyMgZGVmaW5lIENMSUNLX1VTSU5HX0RFQ0xTCS8qICov
CisjIGRlZmluZSBDTElDS19OQU1FKG5hbWUpCTo6bmFtZQorI2VuZGlmCisKKyNlbmRpZiAvKiBf
X2NwbHVzcGx1cyAqLworCisjZW5kaWYgLyogQ0xJQ0tfQ09ORklHX1VTRVJMRVZFTF9IICovCi0t
IAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH2-0002wl-CT; Wed, 05 Jun 2019 12:44: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH1-0002wI-7S
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:11 +0000
X-Inumbo-ID: 9afcda0e-878f-11e9-88ee-f7d9925caa20
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9afcda0e-878f-11e9-88ee-f7d9925caa20;
 Wed, 05 Jun 2019 12:44:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id EF87CF20A7;
 Wed,  5 Jun 2019 14:44:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id deypVxMBxWBe; Wed,  5 Jun 2019 14:44:05 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CA78DF2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:03 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:03 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:23 +0200
Message-ID: <20190605124332.25437-3-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 02/11] Initial public
 release: click.cc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyB0YWtlbiBmcm9tIGZyb20ga29obGVyL2NsaWNrL21pbmlvcy8sIHdpdGggYW4gdXBk
YXRlZCBjb3B5cmlnaHQKaGVhZGVyLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxm
bG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxp
cGUuaHVpY2lAbmVjbGFiLmV1PgotLS0KIGNsaWNrLmNjIHwgMzg0ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAz
ODQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNsaWNrLmNjCgpkaWZmIC0tZ2l0
IGEvY2xpY2suY2MgYi9jbGljay5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNWJjNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvY2xpY2suY2MKQEAgLTAsMCArMSwzODQgQEAK
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTQgTkVDIEV1cm9wZSBMdGQsCisgKiAgICAgICAgICAgICAgIDIwMTksIE5F
QyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAqICAgICAgICAg
ICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJF
IEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpbmNsdWRlIDxjbGlj
ay9jb25maWcuaD4KKyNpbmNsdWRlIDxjbGljay9sZXhlci5oaD4KKyNpbmNsdWRlIDxjbGljay9y
b3V0ZXIuaGg+CisjaW5jbHVkZSA8Y2xpY2svbWFzdGVyLmhoPgorI2luY2x1ZGUgPGNsaWNrL2Vy
cm9yLmhoPgorI2luY2x1ZGUgPGNsaWNrL3RpbWVyLmhoPgorI2luY2x1ZGUgPGNsaWNrL3N0cmlu
Zy5oaD4KKyNpbmNsdWRlIDxjbGljay9zdHJhY2N1bS5oaD4KKyNpbmNsdWRlIDxjbGljay9kcml2
ZXIuaGg+CisKK2V4dGVybiAiQyJ7CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPG1pbmktb3MveGVuYnVzLmg+
CisjaW5jbHVkZSA8bWluaS1vcy9zaHV0ZG93bi5oPgorI2luY2x1ZGUgPG1pbmktb3Mvc2NoZWQu
aD4KK30KKwordm9pZCAqX19kc29faGFuZGxlID0gTlVMTDsKKworI2RlZmluZSBOTE9HKGZtdCwg
Li4uKQorI2RlZmluZSBMT0coZm10LCAuLi4pIFwKKwlwcmludGYoIlslczolZF0gIiBmbXQgIlxu
IiwgXAorCQlfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQorCisvKioKKyAq
IHhlbnN0b3JlIGhlbHBlcnMKKyAqLworI2RlZmluZSBQQVRIX1JPT1QJImNsaWNrb3MiCisjZGVm
aW5lIFBBVEhfTUFYX0xFTgkxMDI0CisKK3N0cnVjdCB4ZW5zdG9yZV9kZXYgeworCWRvbWlkX3Qg
ZG9tOworCWNoYXIgKm5vZGVuYW1lOworCXhlbmJ1c19ldmVudF9xdWV1ZSBldmVudHM7Cit9ICp4
c2RldiA9IE5VTEw7CisKK3VpbnQzMl90IGRvbWlkID0gLTE7Cit1X2ludCBfc2h1dGRvd24gPSAw
OwordV9pbnQgX3JlYXNvbiA9IDA7CisKK2NoYXIqCitldmVudF90b2tlbihjaGFyICoqa2V5KQor
eworCWNoYXIgKnAgPSAqa2V5LCAqcDI7CisJY2hhciAqdG9rZW47CisJdV9pbnQgc3o7CisKKwlw
MiA9IHN0cmNocigrK3AsICcvJyk7CisJc3ogPSAocDIgIT0gTlVMTCA/IHAyIC0gcCA6IHN0cmxl
bihwKSk7CisJdG9rZW4gPSBzdHJuZHVwKHAsIHN6KTsKKwkqa2V5ID0gKHArc3opOworCisJcmV0
dXJuIHRva2VuOworfQorCitjaGFyKgorcmVhZF9yaWQoY2hhciAqcGF0aCkKK3sKKwljaGFyICpp
ZCA9IHN0cmR1cChwYXRoICsgMSk7CisJY2hhciAqaWRfZW5kID0gc3RyY2hyKGlkLCAnLycpOwor
CSppZF9lbmQgPSAnXDAnOworCXJldHVybiBpZDsKK30KKworU3RyaW5nICoKK3JlYWRfY29uZmln
KHVfaW50IHJpZCA9IDApCit7CisJY2hhciBwYXRoW1BBVEhfTUFYX0xFTl07CisJU3RyaW5nICpj
ZmcgPSBuZXcgU3RyaW5nKCk7CisJY2hhciAqdG9rZW47CisKKwlmb3IgKGludCBpID0gMDs7IGkr
KykgeworCQlzbnByaW50ZihwYXRoLCBQQVRIX01BWF9MRU4sICIlcy8lZC9jb25maWcvJWQiLAor
CQkJCVBBVEhfUk9PVCwgcmlkLCBpKTsKKwkJeGVuYnVzX3JlYWQoWEJUX05JTCwgcGF0aCwgJnRv
a2VuKTsKKwkJaWYgKHRva2VuID09IE5VTEwpCisJCQlicmVhazsKKwkJKmNmZyArPSB0b2tlbjsK
Kwl9CisKKwlyZXR1cm4gY2ZnOworfQorCisvKgorICogY2xpY2sgZ2x1ZQorICovCisKKyNkZWZp
bmUgTUFYX1JPVVRFUlMJNjQKK3N0YXRpYyBFcnJvckhhbmRsZXIgKmVycmg7CitzdGF0aWMgTWFz
dGVyIG1hc3RlcigxKTsKKworc3RydWN0IHJvdXRlcl9pbnN0YW5jZSB7CisJUm91dGVyICpyOwor
CXVfaW50IGZfc3RvcDsKK30gcm91dGVyX2xpc3RbTUFYX1JPVVRFUlNdOworCit2b2lkCityb3V0
ZXJfdGhyZWFkKHZvaWQgKnRocmVhZF9kYXRhKQoreworCXVfaW50ICpyaWQgPSAodV9pbnQqKSB0
aHJlYWRfZGF0YTsKKwlTdHJpbmcgKmNvbmZpZyA9IHJlYWRfY29uZmlnKCpyaWQpOworCXN0cnVj
dCByb3V0ZXJfaW5zdGFuY2UgKnJpID0gJnJvdXRlcl9saXN0WypyaWRdOworCisJcmktPnIgPSBj
bGlja19yZWFkX3JvdXRlcigqY29uZmlnLCB0cnVlLCBlcnJoLCBmYWxzZSwgJm1hc3Rlcik7CisJ
aWYgKHJpLT5yLT5pbml0aWFsaXplKGVycmgpIDwgMCkgeworCQlMT0coIlJvdXRlciBpbml0IGZh
aWxlZCEiKTsKKwkJcmktPmZfc3RvcCA9IDE7CisJCXJldHVybjsKKwl9CisKKwlyaS0+ci0+dXNl
KCk7CisJcmktPnItPmFjdGl2YXRlKGVycmgpOworCisJTE9HKCJTdGFydGluZyBkcml2ZXIuLi5c
blxuIik7CisJcmktPnItPm1hc3RlcigpLT50aHJlYWQoMCktPmRyaXZlcigpOworCisJTE9HKCJT
dG9wcGluZyBkcml2ZXIuLi5cblxuIik7CisJcmktPnItPnVudXNlKCk7CisJcmktPmZfc3RvcCA9
IDE7CisKKwlMT0coIk1hc3Rlci9kcml2ZXIgc3RvcHBlZCwgY2xvc2luZyByb3V0ZXJfdGhyZWFk
Iik7CisJZnJlZShjb25maWcpOworCWZyZWUocmlkKTsKK30KKwordm9pZAorcm91dGVyX3N0b3Ao
aW50IG4gPSBNQVhfUk9VVEVSUykKK3sKKwlMT0coIlN0b3BwaW5nIGFsbCByb3V0ZXJzLi4uXG5c
biIpOworCWZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKKwkJUm91dGVyICpyID0g
cm91dGVyX2xpc3RbaV0ucjsKKworCQlpZiAocm91dGVyX2xpc3RbaV0uZl9zdG9wKQorCQkJY29u
dGludWU7CisKKwkJTE9HKCJTdG9wcGluZyBpbnN0YW5jZSA9ICVkLi4uXG5cbiIsIGkpOworCisJ
CWRvIHsKKwkJCXItPnBsZWFzZV9zdG9wX2RyaXZlcigpOworCQkJc2NoZWR1bGUoKTsKKwkJfSB3
aGlsZSAoIShyb3V0ZXJfbGlzdFtpXS5mX3N0b3ApKTsKKwl9CisJTE9HKCJTdG9wcGVkIGFsbCBy
b3V0ZXJzLi4uXG5cbiIpOworfQorCit2b2lkCityb3V0ZXJfc3VzcGVuZChpbnQgbiA9IE1BWF9S
T1VURVJTKQoreworfQorCit2b2lkCityb3V0ZXJfcmVzdW1lKGludCBuID0gTUFYX1JPVVRFUlMp
Cit7Cit9CisKK3VfaW50Citvbl9zdGF0dXMoaW50IHJpZCwgY2hhciAqa2V5LCB2b2lkICpkYXRh
KQoreworCVN0cmluZyBzdGF0dXMgPSAoY2hhciAqKSBkYXRhOworCXN0cnVjdCByb3V0ZXJfaW5z
dGFuY2UgKnIgPSAmcm91dGVyX2xpc3RbcmlkXTsKKworCUxPRygicm91dGVyIGlkICVkIiwgcmlk
KTsKKwlMT0coInN0YXR1cyBjaGFuZ2UgdG8gJXMiLCBkYXRhKTsKKwlpZiAoc3RhdHVzID09ICJS
dW5uaW5nIikgeworCQl1X2ludCAqYXJnMDsKKworCQlpZiAoIXItPmZfc3RvcCkKKwkJCWdvdG8g
c3RhdHVzX2VycjsKKworCQlhcmcwID0gKHVfaW50KikgbWFsbG9jKHNpemVvZih1X2ludCkpOwor
CQkqYXJnMCA9IHJpZDsKKwkJci0+Zl9zdG9wID0gMDsKKwkJY3JlYXRlX3RocmVhZCgoY2hhciop
ImNsaWNrIiwgcm91dGVyX3RocmVhZCwgYXJnMCk7CisJfSBlbHNlIGlmIChzdGF0dXMgPT0gIkhh
bHRlZCIpIHsKKwkJaWYgKHItPmZfc3RvcCkKKwkJCWdvdG8gc3RhdHVzX2VycjsKKworCQlyb3V0
ZXJfc3RvcChyaWQpOworCX0KKworCXJldHVybiAwOworc3RhdHVzX2VycjoKKwlyZXR1cm4gLUVJ
TlZBTDsKK30KKworc3RhdGljIHZvaWQKK3JlYWRfY25hbWUoY2hhciAqcGF0aCwgRWxlbWVudCAq
KmUsIGNvbnN0IEhhbmRsZXIgKipoLCBpbnQgcmlkKQoreworCWludCBzZXAgPSBzdHJjaHIocGF0
aCwgJy8nKSAtIHBhdGg7CisJU3RyaW5nIGVuYW1lKHBhdGgsIHNlcCksIGhuYW1lKHBhdGggKyBz
ZXAgKyAxKTsKKwlSb3V0ZXIgKnIgPSByb3V0ZXJfbGlzdFtyaWRdLnI7CisKKwlOTE9HKCJzZXA9
JWQgZWxlbWVudD0lcyBoYW5kbGVyPSVzIiwgc2VwLAorCQkJZW5hbWUuY19zdHIoKSwgaG5hbWUu
Y19zdHIoKSk7CisKKwkqZSA9IHItPmZpbmQoZW5hbWUpOworCSpoID0gUm91dGVyOjpoYW5kbGVy
KCplLCBobmFtZSk7CisJTkxPRygiZW5hbWUgJXM9JXAgaG5hbWUgJXM9JXAiLCBlbmFtZS5jX3N0
cigpLCBlLCBobmFtZS5jX3N0cigpLCBoKTsKK30KKwordV9pbnQKK29uX2VsZW1fcmVhZGgoaW50
IHJpZCwgY2hhciAqa2V5LCB2b2lkICpkYXRhKQoreworCUVsZW1lbnQgKmU7CisJY29uc3QgSGFu
ZGxlciogaDsKKwlTdHJpbmcgdmFsLCBoX3BhdGgsIGxvY2tfcGF0aDsKKwlpbnQgZl9zdG9wID0g
cm91dGVyX2xpc3RbcmlkXS5mX3N0b3A7CisKKwlpZiAoc3RybmNtcChrZXksICIvcmVhZC8iLCA2
KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZl9zdG9wKQorCQlyZXR1cm4gMDsKKworCXJlYWRfY25h
bWUoa2V5KzYsICZlLCAmaCwgcmlkKTsKKworCWlmICghaCB8fCAhaC0+cmVhZGFibGUoKSkKKwkJ
cmV0dXJuIEVJTlZBTDsKKworCXZhbCA9IGgtPmNhbGxfcmVhZChlLCAiIiwgRXJyb3JIYW5kbGVy
OjpkZWZhdWx0X2hhbmRsZXIoKSk7CisJaF9wYXRoID0gU3RyaW5nKFBBVEhfUk9PVCkgKyAiLzAv
ZWxlbWVudHMvIiArIGUtPm5hbWUoKSArICIvIiArIGgtPm5hbWUoKTsKKwlsb2NrX3BhdGggPSBo
X3BhdGggKyAiL2xvY2siOworCisJeGVuYnVzX3dyaXRlKFhCVF9OSUwsIGhfcGF0aC5jX3N0cigp
LCB2YWwuY19zdHIoKSk7CisJeGVuYnVzX3dyaXRlKFhCVF9OSUwsIGxvY2tfcGF0aC5jX3N0cigp
LCAiMCIpOworCisJTkxPRygiZWxlbWVudCBoYW5kbGVyIHJlYWQgJXMiLCB2YWwuY19zdHIoKSk7
CisJcmV0dXJuIDA7Cit9CisKK3VfaW50Citvbl9lbGVtX3dyaXRlaChpbnQgcmlkLCBjaGFyICpr
ZXksIHZvaWQgKmRhdGEpCit7CisJRWxlbWVudCAqZTsKKwljb25zdCBIYW5kbGVyKiBoOworCWlu
dCBmX3N0b3AgPSByb3V0ZXJfbGlzdFtyaWRdLmZfc3RvcDsKKworCWlmIChmX3N0b3AgfHwgc3Ry
bGVuKChjaGFyICopIGRhdGEpID09IDApCisJCXJldHVybiAwOworCisJcmVhZF9jbmFtZShrZXkr
MSwgJmUsICZoLCByaWQpOworCisJaWYgKCFoIHx8ICFoLT53cml0YWJsZSgpKQorCQlyZXR1cm4g
RUlOVkFMOworCisJaC0+Y2FsbF93cml0ZShTdHJpbmcoZGF0YSksIGUsIEVycm9ySGFuZGxlcjo6
ZGVmYXVsdF9oYW5kbGVyKCkpOworCU5MT0coImVsZW1lbnQgaGFuZGxlciB3cml0ZSAlcyB2YWx1
ZSAlcyIsIGRhdGEsICIiKTsKKwlyZXR1cm4gMDsKK30KKwordV9pbnQKK29uX3JvdXRlcihjaGFy
ICprZXksIHZvaWQgKmRhdGEpCit7CisJY2hhciAqcCA9IGtleTsKKwlTdHJpbmcgcmV2OworCXVf
aW50IHJpZDsKKworCWlmIChzdHJsZW4oa2V5KSA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJpZCA9
IGF0b2koZXZlbnRfdG9rZW4oJnApKTsKKwlyZXYgPSBldmVudF90b2tlbigmcCk7CisKKwlpZiAo
cmV2ID09ICJjb250cm9sIikKKwkJb25fZWxlbV9yZWFkaChyaWQsIHAsIGRhdGEpOworCWVsc2Ug
aWYgKHJldiA9PSAiZWxlbWVudHMiKQorCQlvbl9lbGVtX3dyaXRlaChyaWQsIHAsIGRhdGEpOwor
CWVsc2UgaWYgKHJldiA9PSAic3RhdHVzIikKKwkJb25fc3RhdHVzKHJpZCwga2V5LCBkYXRhKTsK
KworCXJldHVybiAwOworfQorCisvKiBydW5zIHRoZSBldmVudCBsb29wICovCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1Y3QgeGVu
c3RvcmVfZGV2KTsKKworCWNsaWNrX3N0YXRpY19pbml0aWFsaXplKCk7CisJZXJyaCA9IEVycm9y
SGFuZGxlcjo6ZGVmYXVsdF9oYW5kbGVyKCk7CisKKwl4c2RldiA9IChzdHJ1Y3QgeGVuc3RvcmVf
ZGV2KikgbWFsbG9jKGxlbik7CisJbWVtc2V0KHhzZGV2LCAwLCBsZW4pOworCW1lbXNldChyb3V0
ZXJfbGlzdCwgMCwgTUFYX1JPVVRFUlMgKiBzaXplb2Yoc3RydWN0IHJvdXRlcl9pbnN0YW5jZSkp
OworCWZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1JPVVRFUlM7ICsraSkgeworCQlyb3V0ZXJfbGlz
dFtpXS5mX3N0b3AgPSAxOworCX0KKworCXhlbmJ1c193YXRjaF9wYXRoX3Rva2VuKFhCVF9OSUws
IFBBVEhfUk9PVCwgInJvdXRlci13YXRjaCIsCisJCQkmeHNkZXYtPmV2ZW50cyk7CisKKwl3aGls
ZSAoIV9zaHV0ZG93bikgeworCQlTdHJpbmcgdmFsdWU7CisJCWNoYXIgKmVyciwgKnZhbCwgKipw
YXRoOworCisJCXBhdGggPSB4ZW5idXNfd2FpdF9mb3Jfd2F0Y2hfcmV0dXJuKCZ4c2Rldi0+ZXZl
bnRzKTsKKwkJaWYgKCFwYXRoIHx8IF9zaHV0ZG93bikKKwkJCWNvbnRpbnVlOworCisJCWVyciA9
IHhlbmJ1c19yZWFkKFhCVF9OSUwsICpwYXRoLCAmdmFsKTsKKwkJaWYgKGVycikKKwkJCWNvbnRp
bnVlOworCisJCW9uX3JvdXRlcigoKnBhdGggKyBzdHJsZW4oUEFUSF9ST09UKSksIHZhbCk7CisJ
fQorCisJTE9HKCJTaHV0dGluZyBkb3duLi4uIik7CisJeGVuYnVzX3Vud2F0Y2hfcGF0aF90b2tl
bihYQlRfTklMLCBQQVRIX1JPT1QsICJyb3V0ZXItd2F0Y2giKTsKKworCWZpbmlfeGVuYnVzKCk7
CisJZnJlZSh4c2Rldik7CisKKwlyZXR1cm4gX3JlYXNvbjsKK30KKworLyogYXBwIHNodXRkb3du
IGhvb2sgZnJvbSBtaW5pb3MgKi8KK2V4dGVybiAiQyIgeworaW50IGFwcF9zaHV0ZG93bih1bnNp
Z25lZCByZWFzb24pCit7CisJc3dpdGNoIChyZWFzb24pIHsKKwljYXNlIFNIVVRET1dOX3Bvd2Vy
b2ZmOgorCQlMT0coIlJlcXVlc3RlZCBzaHV0ZG93biByZWFzb249cG93ZXJvZmYiKTsKKwkJX3No
dXRkb3duID0gMTsKKwkJX3JlYXNvbiA9IHJlYXNvbjsKKwkJcm91dGVyX3N0b3AoKTsKKwkJeGVu
YnVzX3JlbGVhc2Vfd2FpdF9mb3Jfd2F0Y2goJnhzZGV2LT5ldmVudHMpOworCQlicmVhazsKKwlj
YXNlIFNIVVRET1dOX3JlYm9vdDoKKwkJTE9HKCJSZXF1ZXN0ZWQgc2h1dGRvd24gcmVhc29uPXJl
Ym9vdCIpOworCQlfc2h1dGRvd24gPSAxOworCQlfcmVhc29uID0gcmVhc29uOworCQlyb3V0ZXJf
c3RvcCgpOworCQl4ZW5idXNfcmVsZWFzZV93YWl0X2Zvcl93YXRjaCgmeHNkZXYtPmV2ZW50cyk7
CisJCWJyZWFrOworCWNhc2UgU0hVVERPV05fc3VzcGVuZDoKKwkJTE9HKCJSZXF1ZXN0ZWQgc2h1
dGRvd24gcmVhc29uPXN1c3BlbmQiKTsKKwkJcm91dGVyX3N1c3BlbmQoKTsKKwkJa2VybmVsX3N1
c3BlbmQoKTsKKwkJcm91dGVyX3Jlc3VtZSgpOworCWRlZmF1bHQ6CisJCUxPRygiUmVxdWVzdGVk
IHNodXRkb3duIHdpdGggaW52YWxpZCByZWFzb24gKCVkKSIsIHJlYXNvbik7CisJCWJyZWFrOwor
CX0KKworCXJldHVybiAwOworfQorfQotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH3-0002xi-I9; Wed, 05 Jun 2019 12:44:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH1-0002wT-Fz
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:11 +0000
X-Inumbo-ID: 9d1b07d7-878f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9d1b07d7-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 78374104430;
 Wed,  5 Jun 2019 14:44:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gzodjAlozH5r; Wed,  5 Jun 2019 14:44:09 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5A62F103B6A
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:09 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:08 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:26 +0200
Message-ID: <20190605124332.25437-6-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 05/11] Initial public
 release: stubs.cc for unfinished glue implementations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IE1ha2VmaWxlLnVrIHwgIDEgKwogc3R1YnMuY2MgICAgfCAzNiArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHN0dWJzLmNjCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtl
ZmlsZS51awppbmRleCA5ODg1NTIwLi4wMmI1OGY4IDEwMDY0NAotLS0gYS9NYWtlZmlsZS51awor
KysgYi9NYWtlZmlsZS51awpAQCAtMTM0LDYgKzEzNCw3IEBAIExJQkNMSUNLX0NYWEZMQUdTLXkg
Kz0gJChMSUJDTElDS19TVVBQUkVTU19GTEFHUykKICMgVW5pa3JhZnQgPC0+IENsaWNrIGdsdWUg
Y29kZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIExJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNM
SUNLX0JBU0UpL2NsaWNrLmNjCitMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19CQVNFKS9z
dHVicy5jYwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDbGljayBzb3VyY2VzCmRpZmYg
LS1naXQgYS9zdHVicy5jYyBiL3N0dWJzLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmZjYzcyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zdHVicy5jYwpAQCAtMCwwICsxLDM2
IEBACisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxjbGljay9jb25maWcuaD4KKyNpbmNs
dWRlIDxjbGljay9lcnJvci5oaD4KKyNpbmNsdWRlIDxjbGljay9zdHJpbmcuaGg+CisKKy8qIFVu
aWtyYWZ0IGRvZXMgbm90IHN1cHBvcnQgZmlsZXMgeWV0LCB0aGlzIGZ1bmN0aW9uIGlzIHRvCisg
ICBiZSBhYmxlIHRvIHJlYWQgQ2xpY2sgY29uZmlncyBmcm9tIGZpbGVzLiAqLworU3RyaW5nIGZp
bGVfc3RyaW5nKFN0cmluZyBzIF9fdW51c2VkLCBFcnJvckhhbmRsZXIgKmVycmgpCit7CisJZXJy
aC0+ZXJyb3IoIm5vIHN1cHBvcnQgZm9yIGZpbGVzIHlldCEiKTsKKwlyZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBjbGlja3BhdGhfZmluZF9maWxlKGNvbnN0IFN0cmluZyAmZmlsZW5hbWUg
X191bnVzZWQsCisJCWNvbnN0IGNoYXIgKnN1YmRpciBfX3VudXNlZCwgU3RyaW5nIGRlZmF1bHRf
cGF0aCBfX3VudXNlZCwKKwkJRXJyb3JIYW5kbGVyICplcnJoKQoreworCWVycmgtPmVycm9yKCJu
byBzdXBwb3J0IGZvciBmaW5kaW5nIGZpbGVzISIpOworCXJldHVybiBTdHJpbmcoKTsKK30KKwor
dm9pZCBjbGlja19zaWduYWwoaW50IHNpZ251bSBfX3VudXNlZCwgdm9pZCAoKmhhbmRsZXIpKGlu
dCkgX191bnVzZWQsCisJCWJvb2wgcmVzZXRoYW5kIF9fdW51c2VkKQoreworfQorCitleHRlcm4g
IkMiIHsKK2ludCBkdXAoaW50IG9sZGZkKTsgLyogd2UgZG9uJ3QgaGF2ZSBhIGhlYWRlciBmaWxl
LCBidXQgdGhlIHN5bWJvbCBpcyB0aGVyZSAqLworCitpbnQgcGlwZShpbnQgcGlwZWZkWzJdKQor
eworCXBpcGVmZFswXSA9IGR1cCgwKTsKKwlwaXBlZmRbMV0gPSBkdXAoMSk7CisJcmV0dXJuIDA7
Cit9Cit9IC8qIGV4dGVybiAiQyIgKi8KLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH6-0002ym-Jf; Wed, 05 Jun 2019 12:44: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH5-0002yP-Ah
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:15 +0000
X-Inumbo-ID: 9ecf9cde-878f-11e9-8895-6bbf71e03d88
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9ecf9cde-878f-11e9-8895-6bbf71e03d88;
 Wed, 05 Jun 2019 12:44:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 65839104276;
 Wed,  5 Jun 2019 14:44:12 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id B76NdkBdH2nR; Wed,  5 Jun 2019 14:44:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3BC88103B6A
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:12 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:11 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:28 +0200
Message-ID: <20190605124332.25437-8-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 07/11] Initial public
 release: patches to make click build with 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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1
PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IHBhdGNoZXMvMDAwMS11c2VybGV2ZWwtbmV3LWRlbGV0ZS1jeGEucGF0Y2ggICB8IDIwICsrKysr
KysrKysrCiAuLi4tc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2ggfCAz
NSArKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKykK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtdXNlcmxldmVsLW5ldy1kZWxldGUtY3hh
LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4t
UE9MTE9VVC1hcmUtbm90LWRlZmluZWQucGF0Y2gKCmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDEt
dXNlcmxldmVsLW5ldy1kZWxldGUtY3hhLnBhdGNoIGIvcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1u
ZXctZGVsZXRlLWN4YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
ZjljZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDAxLXVzZXJsZXZlbC1uZXctZGVs
ZXRlLWN4YS5wYXRjaApAQCAtMCwwICsxLDIwIEBACistLS0gYS9saWIvZ2x1ZS5jYy5vcmlnCTIw
MTgtMDItMTQgMTE6MTE6MzguMzY0MDI0NzI5ICswMTAwCisrKysgYi9saWIvZ2x1ZS5jYwkyMDE4
LTAyLTE0IDExOjQ0OjMxLjg4MDkwODA5OSArMDEwMAorQEAgLTE3OSw3ICsxNzksNyBAQAorIHNp
emVfdCBjbGlja19kbWFsbG9jX21heG1lbSA9IDA7CisgI2VuZGlmCisgCistI2lmIENMSUNLX0xJ
TlVYTU9EVUxFIHx8IENMSUNLX0JTRE1PRFVMRSB8fCBDTElDS19NSU5JT1MKKysjaWYgQ0xJQ0tf
TElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01JTklPUyB8fCBDTElDS19V
U0VSTEVWRUwKKyAKKyAjIGlmIENMSUNLX0xJTlVYTU9EVUxFCisgc3RydWN0IHRhc2tfc3RydWN0
ICpjbGlja2ZzX3Rhc2s7CitAQCAtNzIxLDcgKzcyMSw3IEBACisgCisgLy8gT1RIRVIKKyAKKy0j
aWYgQ0xJQ0tfTElOVVhNT0RVTEUgfHwgQ0xJQ0tfQlNETU9EVUxFIHx8IENMSUNLX01JTklPUwor
KyNpZiBDTElDS19MSU5VWE1PRFVMRSB8fCBDTElDS19CU0RNT0RVTEUgfHwgQ0xJQ0tfTUlOSU9T
IHx8IENMSUNLX1VTRVJMRVZFTAorIAorICNpZiBDTElDS19CU0RNT0RVTEUKKyAKZGlmZiAtLWdp
dCBhL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBPTExPVVQtYXJlLW5vdC1kZWZpbmVk
LnBhdGNoIGIvcGF0Y2hlcy8wMDAyLU1ha2Utc3VyZS1QT0xMSU4tUE9MTE9VVC1hcmUtbm90LWRl
ZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExYWY1MAot
LS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAwMi1NYWtlLXN1cmUtUE9MTElOLVBPTExPVVQt
YXJlLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYjlmMDRmNmRkYzM4
OGY2YTUwYTgyZTg4MzBlNDJiYWRiZmM0NzE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy
b206IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KK0RhdGU6IFdl
ZCwgMTcgQXByIDIwMTkgMTE6MDM6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBzdXJl
IFBPTExJTi9QT0xMT1VUIGFyZSBub3QgZGVmaW5lZAorCitXZSB1c2Ugc2VsZWN0IGluc3RlYWQg
b2YgcG9sbCwgYmVjYXVzZSBsd2lwIHByb3ZpZGVzIGEgc2VsZWN0IHZpYSBpdHMKK3NvY2tldCBB
UEkuIEhvd2V2ZXIsIHRoYXQgb25lIGFsc28gZGVmaW5lcyBhIGNvdXBsZSBvZiBQT0xMKiB2YWx1
ZXMsCit3aGljaCBsZWFkIHRvIGEgY29tcGlsZXIgZXJyb3IgaGVyZSBiZWNhdXNlIHlvdSBlbmQg
dXAgd2l0aCBhIGxpbmUgdGhhdAorc2F5cyAiZW51bSB7IDB4MSA9IEVsZW1lbnQ6OlNFTEVDVF9S
RUFEIiBldGMuCisKK1NpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4KKy0tLQorIGxpYi9zZWxlY3RzZXQuY2MgfCA2ICsrKysrKworIDEgZmls
ZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9zZWxlY3RzZXQu
Y2MgYi9saWIvc2VsZWN0c2V0LmNjCitpbmRleCBhYzVjY2FlNDkuLjY0MWI2M2Y5MCAxMDA2NDQK
Ky0tLSBhL2xpYi9zZWxlY3RzZXQuY2MKKysrKyBiL2xpYi9zZWxlY3RzZXQuY2MKK0BAIC0zOCw2
ICszOCwxMiBAQCBDTElDS19ERUNMUworIG5hbWVzcGFjZSB7CisgZW51bSB7IFNFTEVDVF9SRUFE
ID0gRWxlbWVudDo6U0VMRUNUX1JFQUQsIFNFTEVDVF9XUklURSA9IEVsZW1lbnQ6OlNFTEVDVF9X
UklURSB9OworICNpZiAhSEFWRV9BTExPV19QT0xMCisrI2lmZGVmIFBPTExJTgorKyN1bmRlZiBQ
T0xMSU4KKysjZW5kaWYKKysjaWZkZWYgUE9MTE9VVAorKyN1bmRlZiBQT0xMT1VUCisrI2VuZGlm
CisgZW51bSB7IFBPTExJTiA9IEVsZW1lbnQ6OlNFTEVDVF9SRUFELCBQT0xMT1VUID0gRWxlbWVu
dDo6U0VMRUNUX1dSSVRFIH07CisgI2VuZGlmCisgfQorLS0gCisyLjIxLjAKKwotLSAKMi4yMS4w
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH6-0002yr-LU; Wed, 05 Jun 2019 12:44: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH5-0002yO-AU
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:15 +0000
X-Inumbo-ID: 9e7ffdc8-878f-11e9-9626-ebf020fb63f8
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9e7ffdc8-878f-11e9-9626-ebf020fb63f8;
 Wed, 05 Jun 2019 12:44:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CFBDDF20A7;
 Wed,  5 Jun 2019 14:44:11 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DVU2EykLLxfm; Wed,  5 Jun 2019 14:44:11 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A6AC4F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:09 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:09 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:27 +0200
Message-ID: <20190605124332.25437-7-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 06/11] Initial public
 release: FromDevice and ToDevice
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIHJvdWdoIGNvbmNlcHQgaXMgdGFrZW4gZnJvbSBrb2hsZXIvY2xpY2svZWxlbWVudHMvbWlu
aW9zLCBidXQgaXMKdGhlbiBhZGFwdGVkIHRvIHVzZSB1bmlrcmFmdCBpbnN0ZWFkIG9mIE1pbmkt
T1MuCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNs
YWIuZXU+ClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
Ci0tLQogdW5pa3JhZnQvZnJvbWRldmljZS5jYyB8IDIwMyArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogdW5pa3JhZnQvZnJvbWRldmljZS5oaCB8ICA3OSArKysrKysr
KysrKysrKysrCiB1bmlrcmFmdC90b2RldmljZS5jYyAgIHwgMTMxICsrKysrKysrKysrKysrKysr
KysrKysrKysrCiB1bmlrcmFmdC90b2RldmljZS5oaCAgIHwgIDc2ICsrKysrKysrKysrKysrKwog
NCBmaWxlcyBjaGFuZ2VkLCA0ODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHVu
aWtyYWZ0L2Zyb21kZXZpY2UuY2MKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1bmlrcmFmdC9mcm9tZGV2
aWNlLmhoCiBjcmVhdGUgbW9kZSAxMDA2NDQgdW5pa3JhZnQvdG9kZXZpY2UuY2MKIGNyZWF0ZSBt
b2RlIDEwMDY0NCB1bmlrcmFmdC90b2RldmljZS5oaAoKZGlmZiAtLWdpdCBhL3VuaWtyYWZ0L2Zy
b21kZXZpY2UuY2MgYi91bmlrcmFmdC9mcm9tZGV2aWNlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQ1MGZmNGYKLS0tIC9kZXYvbnVsbAorKysgYi91bmlrcmFmdC9mcm9t
ZGV2aWNlLmNjCkBAIC0wLDAgKzEsMjAzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAgIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaW5jbHVkZSAiZnJvbWRldmljZS5oaCIK
KworI2luY2x1ZGUgPGNsaWNrL2FyZ3MuaGg+CisjaW5jbHVkZSA8Y2xpY2svZGVxdWUuaGg+Cisj
aW5jbHVkZSA8Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svc3RhbmRhcmQvc2NoZWR1
bGVpbmZvLmhoPgorI2luY2x1ZGUgPGNsaWNrL3Rhc2suaGg+CisjaW5jbHVkZSA8dWsvbmV0ZGV2
Lmg+CisKKyNpZmRlZiB4bWl0CisjdW5kZWYgeG1pdAorI2VuZGlmCisjaWZkZWYgcmVjdgorI3Vu
ZGVmIHJlY3YKKyNlbmRpZgorCisjaW5jbHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRlIDx1ay9u
ZXRkZXYuaD4KKworQ0xJQ0tfREVDTFMKKworI2RlZmluZSBERVNDX0NPVU5UIDB4MTAwCisjZGVm
aW5lIEJVRlNJWkUgMjA0OAorCitGcm9tRGV2aWNlOjpGcm9tRGV2aWNlKCkKKwk6IF90YXNrKHRo
aXMpCit7Cit9CisKK0Zyb21EZXZpY2U6On5Gcm9tRGV2aWNlKCkKK3sKK30KKworaW50CitGcm9t
RGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYsIEVycm9ySGFuZGxlciAqZXJy
aCkKK3sKKwlfZGV2aWQgPSAwOworCisJdWtfcHJfaW5mbygiRnJvbURldmljZTo6Y29uZmlndXJl
ICVwXG4iLCB0aGlzKTsKKwlpZiAoQXJncyhjb25mLCB0aGlzLCBlcnJoKQorCQkJLnJlYWRfcCgi
REVWSUQiLCBJbnRBcmcoKSwgX2RldmlkKQorCQkJLmNvbXBsZXRlKCkgPCAwKQorCQlyZXR1cm4g
LTE7CisKKwlpZiAoX2RldmlkIDwgMCkKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJEZXZpY2UgSUQg
bXVzdCBiZSA+PSAwIik7CisKKwlfZGV2ID0gdWtfbmV0ZGV2X2dldCgodW5zaWduZWQgaW50KSBf
ZGV2aWQpOworCWlmICghX2RldikKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJObyBzdWNoIGRldmlj
ZSAlZCIsIF9kZXZpZCk7CisJdWtfbmV0ZGV2X2luZm9fZ2V0KF9kZXYsICZfZGV2X2luZm8pOwor
CisJcmV0dXJuIDA7Cit9CisKK2V4dGVybiAiQyIgdm9pZAorY2xpY2tfZnJvbWRldmljZV9yeF9j
YWxsYmFjayhzdHJ1Y3QgdWtfbmV0ZGV2ICpkZXYgX191bnVzZWQsIC8qIHdlIGhhdmUgYWxsCisJ
CQkJdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdmlhIHRoZSBjb29raWUgKi8KKwkJdWludDE2X3Qg
cXVldWVfaWQsIHZvaWQgKmNvb2tpZSkKK3sKKwlGcm9tRGV2aWNlICpmcm9tZGV2aWNlID0gKEZy
b21EZXZpY2UgKiljb29raWU7CisKKwl1a19wcl9kZWJ1ZygiRnJvbURldmljZSAlcCBxdWV1ZSAl
dSBjYWxsYmFja1xuIiwgY29va2llLCBxdWV1ZV9pZCk7CisJZnJvbWRldmljZS0+dGFrZV9wYWNr
ZXRzKCk7Cit9CisKK3VpbnQxNl90CitGcm9tRGV2aWNlOjpuZXRkZXZfYWxsb2Nfcnhwa3RzKHZv
aWQgKmFyZ3AsIHN0cnVjdCB1a19uZXRidWYgKnBrdHNbXSwKKwkJdWludDE2X3QgY291bnQpCit7
CisJaW50IGk7CisKKwlGcm9tRGV2aWNlICpmZCA9IHN0YXRpY19jYXN0PEZyb21EZXZpY2UgKj4o
YXJncCk7CisJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJcGt0c1tpXSA9IHVrX25l
dGJ1Zl9hbGxvY19idWYodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwKKwkJCQlCVUZTSVpFLCBmZC0+
X2Rldl9pbmZvLm5iX2VuY2FwX3J4LCAwLCBOVUxMKTsKKwkJaWYgKCFwa3RzW2ldKQorCQkJcmV0
dXJuIGk7CisJCXBrdHNbaV0tPmxlbiA9IEJVRlNJWkU7CisJfQorCXJldHVybiBjb3VudDsKK30K
KworaW50CitGcm9tRGV2aWNlOjppbml0aWFsaXplKEVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwlz
dHJ1Y3QgdWtfbmV0ZGV2X2luZm8gZGluZjsKKwlzdHJ1Y3QgdWtfbmV0ZGV2X3J4cXVldWVfY29u
ZiByeF9jb25mOworCXN0cnVjdCB1a19uZXRkZXZfdHhxdWV1ZV9jb25mIHR4X2NvbmY7CisJaW50
IHJjOworCisJdWtfcHJfaW5mbygiRnJvbURldmljZTo6aW5pdGlhbGl6ZSAlcCBkZXZpY2UgJXAg
c3RhdGUgJWRcbiIsCisJCQl0aGlzLCBfZGV2LCBfZGV2LT5fZGF0YS0+c3RhdGUpOworCXVrX25l
dGRldl9pbmZvX2dldChfZGV2LCAmZGluZik7CisJcnhfY29uZi5zID0gdWtfc2NoZWRfZ2V0X2Rl
ZmF1bHQoKTsKKwlyeF9jb25mLmEgPSB1a19hbGxvY19nZXRfZGVmYXVsdCgpOworCXJ4X2NvbmYu
Y2FsbGJhY2sgPSBjbGlja19mcm9tZGV2aWNlX3J4X2NhbGxiYWNrOworCXJ4X2NvbmYuY2FsbGJh
Y2tfY29va2llID0gKHZvaWQgKikodGhpcyk7CisJcnhfY29uZi5hbGxvY19yeHBrdHMgPSAmRnJv
bURldmljZTo6bmV0ZGV2X2FsbG9jX3J4cGt0czsKKwlyeF9jb25mLmFsbG9jX3J4cGt0c19hcmdw
ID0gdGhpczsKKwlpZiAodWtfbmV0ZGV2X3J4cV9jb25maWd1cmUoX2RldiwgMCwgREVTQ19DT1VO
VCwgJnJ4X2NvbmYpKQorCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAgUlgg
cXVldWUgZm9yIGRldmljZSAlZCIsIF9kZXZpZCk7CisJdHhfY29uZi5hID0gdWtfYWxsb2NfZ2V0
X2RlZmF1bHQoKTsKKwlpZiAodWtfbmV0ZGV2X3R4cV9jb25maWd1cmUoX2RldiwgMCwgREVTQ19D
T1VOVCwgJnR4X2NvbmYpKQorCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAg
VFggcXVldWUgZm9yIGRldmljZSAlZCIsIF9kZXZpZCk7CisJaWYgKHVrX25ldGRldl9zdGFydChf
ZGV2KSkKKwkJcmV0dXJuIGVycmgtPmVycm9yKCJGYWlsZWQgdG8gc3RhcnQgZGV2aWNlICVkIiwg
X2RldmlkKTsKKwlyYyA9IHVrX25ldGRldl9yeHFfaW50cl9lbmFibGUoX2RldiwgMCk7CisJCWlm
IChyYyA8IDApCisJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBzZXQgdXAgUlggcXVl
dWUgaW50ZXJydXB0IGZvciBkZXZpY2UgJWQiLCBfZGV2aWQpOworCQllbHNlIGlmIChyYyA+IDAp
CisJCQl0YWtlX3BhY2tldHMoKTsgLy8gZW1wdHkgdGhlIHF1ZXVlIHRvIGVuYWJsZSBpbnRlcnJ1
cHQKKwlTY2hlZHVsZUluZm86OmluaXRpYWxpemVfdGFzayh0aGlzLCAmX3Rhc2ssIGVycmgpOwor
CV90YXNrLnJlc2NoZWR1bGUoKTsKKwlyZXR1cm4gMDsKKworfQorCit2b2lkCitGcm9tRGV2aWNl
OjpjbGVhbnVwKENsZWFudXBTdGFnZSBzdGFnZSkKK3sKKwlpZiAoc3RhZ2UgPj0gQ0xFQU5VUF9J
TklUSUFMSVpFRCkgeworCQl1a19uZXRkZXZfcnhxX2ludHJfZGlzYWJsZShfZGV2LCAwKTsKKwl9
Cit9CisKK3ZvaWQKK0Zyb21EZXZpY2U6OnRha2VfcGFja2V0cygpCit7CisJaW50IHJldDsKKwlp
bnQgaSA9IDA7CisJc3RydWN0IHVrX25ldGJ1ZiAqYnVmID0gTlVMTDsKKwlQYWNrZXQgKnA7CisK
KwlkbyB7CisJCXJldCA9IHVrX25ldGRldl9yeF9vbmUoX2RldiwgMCwgJmJ1Zik7CisJCWlmIChy
ZXQgPCAwKQorCQkJVUtfQ1JBU0goImVycm9yIHJlY2VpdmluZyBwYWNrZXRzIGluIEZyb21EZXZp
Y2UiKTsKKwkJaWYgKHVrX25ldGRldl9zdGF0dXNfbm90cmVhZHkocmV0KSkgeworCQkJLyogTm8g
KG1vcmUpIHBhY2tldHMgcmVjZWl2ZWQgKi8KKwkJCWJyZWFrOworCQl9CisKKwkJKytpOworCQlw
ID0gUGFja2V0OjptYWtlKDAsIGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDApOworCQlwLT5zZXRfdGlt
ZXN0YW1wX2Fubm8oVGltZXN0YW1wOjpub3coKSk7CisJCW91dHB1dCgwKS5wdXNoKHApOyAvKiBt
ZW1jcHkncyBwa3QgKi8KKwkJdWtfbmV0YnVmX2ZyZWUoYnVmKTsKKwl9IHdoaWxlICh1a19uZXRk
ZXZfc3RhdHVzX21vcmUocmV0KSk7CisJaWYgKGkpCisJCXVrX3ByX2RlYnVnKCJ0b29rICVkIHBh
Y2tldHMgZnJvbSB0aGUgcXVldWVcbiIsIGkpOworfQorCitib29sCitGcm9tRGV2aWNlOjpydW5f
dGFzayhUYXNrICopCit7CisJLyogaWYgeW91J3JlIHJlYWxseSBkZXNwZXJhdGUgZm9yIGxlc3Mg
Q1BVIHVzYWdlCisJICogdW50aWwgd2UgaGF2ZSBhIHByb3BlciBibG9ja2luZyBzZWxlY3QoKS4u
LgorCXN0cnVjdCB0aW1lc3BlYyByZXE7CisJcmVxLnR2X3NlYyA9IDA7CisJcmVxLnR2X25zZWMg
PSAxMDAwMDAwOworCW5hbm9zbGVlcCgmcmVxLCBOVUxMKTsKKwkqLworCXVrX3NjaGVkX3lpZWxk
KCk7CisJX3Rhc2sucmVzY2hlZHVsZSgpOworCXJldHVybiBmYWxzZTsKK30KKworQ0xJQ0tfRU5E
REVDTFMKK0VYUE9SVF9FTEVNRU5UKEZyb21EZXZpY2UpCmRpZmYgLS1naXQgYS91bmlrcmFmdC9m
cm9tZGV2aWNlLmhoIGIvdW5pa3JhZnQvZnJvbWRldmljZS5oaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44ZDYyYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvdW5pa3JhZnQvZnJv
bWRldmljZS5oaApAQCAtMCwwICsxLDc5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCisgKiAgICAgICAgICAgICAgIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIENMSUNLX0ZST01ERVZJQ0Vf
SEgKKyNkZWZpbmUgQ0xJQ0tfRlJPTURFVklDRV9ISAorCisjaW5jbHVkZSA8Y2xpY2svY29uZmln
Lmg+CisjaW5jbHVkZSA8Y2xpY2svZGVxdWUuaGg+CisjaW5jbHVkZSA8Y2xpY2svZWxlbWVudC5o
aD4KKyNpbmNsdWRlIDxjbGljay9lcnJvci5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgor
CisjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+CisKK0NMSUNLX0RFQ0xTCisKK2V4dGVybiAiQyIgewor
ICAgIHN0cnVjdCB1a19uZXRkZXY7Cit9CisKK2NsYXNzIEZyb21EZXZpY2UgOiBwdWJsaWMgRWxl
bWVudCB7CitwdWJsaWM6CisgICAgRnJvbURldmljZSgpOworICAgIH5Gcm9tRGV2aWNlKCk7CisK
KyAgICBjb25zdCBjaGFyICpjbGFzc19uYW1lKCkgY29uc3QgeyByZXR1cm4gIkZyb21EZXZpY2Ui
OyB9CisgICAgY29uc3QgY2hhciAqcG9ydF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuICIwLzEiOyB9
CisgICAgY29uc3QgY2hhciAqcHJvY2Vzc2luZygpIGNvbnN0IHsgcmV0dXJuICIvaCI7IH0KKyAg
ICBpbnQgY29uZmlndXJlX3BoYXNlKCkgY29uc3QgeyByZXR1cm4gQ09ORklHVVJFX1BIQVNFX0ZJ
UlNUOyB9CisKKyAgICBpbnQgY29uZmlndXJlKFZlY3RvcjxTdHJpbmc+ICYsIEVycm9ySGFuZGxl
ciAqKTsKKyAgICBpbnQgaW5pdGlhbGl6ZShFcnJvckhhbmRsZXIgKik7CisgICAgdm9pZCBjbGVh
bnVwKENsZWFudXBTdGFnZSk7CisKKyAgICBib29sIHJ1bl90YXNrKFRhc2sgKik7CisgICAgdm9p
ZCB0YWtlX3BhY2tldHMoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdWludDE2X3QgbmV0ZGV2
X2FsbG9jX3J4cGt0cyh2b2lkICphcmdwLCBzdHJ1Y3QgdWtfbmV0YnVmICpwa3RzW10sIHVpbnQx
Nl90IGNvdW50KTsKKworICAgIFRhc2sgX3Rhc2s7CisgICAgRGVxdWU8UGFja2V0Kj4gX2RlcXVl
OworICAgIGludCBfZGV2aWQ7CisgICAgc3RydWN0IHVrX25ldGRldiAqX2RldjsKKyAgICBzdHJ1
Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOworfTsKKworQ0xJQ0tfRU5EREVDTFMKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvdW5pa3JhZnQvdG9kZXZpY2UuY2MgYi91bmlrcmFmdC90b2RldmljZS5j
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWQ3NTBkCi0tLSAvZGV2L251
bGwKKysrIGIvdW5pa3JhZnQvdG9kZXZpY2UuY2MKQEAgLTAsMCArMSwxMzEgQEAKKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KKyAq
ICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpbmNs
dWRlICJ0b2RldmljZS5oaCIKKworI2luY2x1ZGUgPGNsaWNrL2FyZ3MuaGg+CisjaW5jbHVkZSA8
Y2xpY2svZXJyb3IuaGg+CisjaW5jbHVkZSA8Y2xpY2svcm91dGVyLmhoPgorI2luY2x1ZGUgPGNs
aWNrL3N0YW5kYXJkL3NjaGVkdWxlaW5mby5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZmRlZiB4bWl0CisjdW5kZWYgeG1pdAorI2VuZGlmCisj
aWZkZWYgcmVjdgorI3VuZGVmIHJlY3YKKyNlbmRpZgorCisjaW5jbHVkZSA8dWsvYWxsb2MuaD4K
KyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4KKworQ0xJQ0tfREVDTFMKKworVG9EZXZpY2U6OlRvRGV2
aWNlKCkKKwk6IF90YXNrKHRoaXMpCit7Cit9CisKK1RvRGV2aWNlOjp+VG9EZXZpY2UoKQorewor
fQorCitpbnQKK1RvRGV2aWNlOjpjb25maWd1cmUoVmVjdG9yPFN0cmluZz4gJmNvbmYsIEVycm9y
SGFuZGxlciAqZXJyaCkKK3sKKwlfZGV2aWQgPSAwOworCisJdWtfcHJfaW5mbygiVG9EZXZpY2U6
OmNvbmZpZ3VyZSAlcFxuIiwgdGhpcyk7CisJaWYgKEFyZ3MoY29uZiwgdGhpcywgZXJyaCkKKwkJ
CS5yZWFkX3AoIkRFVklEIiwgSW50QXJnKCksIF9kZXZpZCkKKwkJCS5jb21wbGV0ZSgpIDwgMCkK
KwkJcmV0dXJuIC0xOworCisJaWYgKF9kZXZpZCA8IDApCisJCXJldHVybiBlcnJoLT5lcnJvcigi
RGV2aWNlIElEIG11c3QgYmUgPj0gMCIpOworCisJX2RldiA9IHVrX25ldGRldl9nZXQoKHVuc2ln
bmVkIGludCkgX2RldmlkKTsKKwlpZiAoIV9kZXYpCisJCXJldHVybiBlcnJoLT5lcnJvcigiTm8g
c3VjaCBkZXZpY2UgJWQiLCBfZGV2aWQpOworCXVrX25ldGRldl9pbmZvX2dldChfZGV2LCAmX2Rl
dl9pbmZvKTsKKworCXJldHVybiAwOworfQorCitpbnQKK1RvRGV2aWNlOjppbml0aWFsaXplKEVy
cm9ySGFuZGxlciAqZXJyaCBfX3VudXNlZCkKK3sKKwkvKiB1ayBuZXRkZXYgaXMgaW5pdGlhbGl6
ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZSAqLworCXJldHVybiAwOworfQorCit2
b2lkCitUb0RldmljZTo6Y2xlYW51cChDbGVhbnVwU3RhZ2Ugc3RhZ2UgX191bnVzZWQpCit7CisJ
LyogYW55IHBvdGVudGlhbGx5IG5lY2Vzc2FyeSB1ayBuZXRkZXYgY2xlYW51cCBpcyBkb25lIGlu
IHRoZQorCSAqIGNvcnJlc3BvbmRpbmcgRnJvbURldmljZQorCSAqLworfQorCit2b2lkCitUb0Rl
dmljZTo6cHVzaChpbnQgcG9ydCwgUGFja2V0ICpwKQoreworCWludCByZXQ7CisJc3RydWN0IHVr
X25ldGJ1ZiAqYnVmOworCisJdWtfcHJfZGVidWcoInB1c2goKSBwYWNrZXQgJXAgKGxlbiAldSkg
LT4gJWRcbiIsIHAsIHAtPmxlbmd0aCgpLCBwb3J0KTsKKwlidWYgPSB1a19uZXRidWZfYWxsb2Nf
YnVmKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksCisJCQlwLT5sZW5ndGgoKStfZGV2X2luZm8ubmJf
ZW5jYXBfcngsCisJCQlfZGV2X2luZm8ubmJfZW5jYXBfcngsIDAsIE5VTEwpOworCWlmICghYnVm
KSB7CisJCXVrX3ByX2NyaXQoIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXRidWYgZm9yIHNlbmRpbmci
KTsKKwkJcmV0dXJuOworCX0KKwltZW1jcHkoYnVmLT5kYXRhLCBwLT5kYXRhKCksIHAtPmxlbmd0
aCgpKTsKKwlidWYtPmxlbiA9IHAtPmxlbmd0aCgpOworCWRvIHsKKwkJcmV0ID0gdWtfbmV0ZGV2
X3R4X29uZShfZGV2LCAwLCBidWYpOworCX0gd2hpbGUgKHVrX25ldGRldl9zdGF0dXNfbm90cmVh
ZHkocmV0KSk7CisJY2hlY2tlZF9vdXRwdXRfcHVzaChwb3J0LCBwKTsKK30KKworYm9vbAorVG9E
ZXZpY2U6OnJ1bl90YXNrKFRhc2sgKikKK3sKKwkvKiBubyByZWd1bGFyIHRhc2sgc2NoZWR1bGlu
ZyBuZWVkZWQsIGFsbCB3b3JrIGlzIGRvbmUgaW4gcHVzaCAoKSAqLworCXJldHVybiBmYWxzZTsK
K30KKworQ0xJQ0tfRU5EREVDTFMKK0VYUE9SVF9FTEVNRU5UKFRvRGV2aWNlKQpkaWZmIC0tZ2l0
IGEvdW5pa3JhZnQvdG9kZXZpY2UuaGggYi91bmlrcmFmdC90b2RldmljZS5oaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGVmN2JiCi0tLSAvZGV2L251bGwKKysrIGIvdW5p
a3JhZnQvdG9kZXZpY2UuaGgKQEAgLTAsMCArMSw3NiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50
aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExh
Ym9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVDIENvcnBvcmF0aW9uLgorICogICAgICAgICAgICAg
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBDTElDS19UT0RF
VklDRV9ISAorI2RlZmluZSBDTElDS19UT0RFVklDRV9ISAorCisjaW5jbHVkZSA8Y2xpY2svY29u
ZmlnLmg+CisjaW5jbHVkZSA8Y2xpY2svZWxlbWVudC5oaD4KKyNpbmNsdWRlIDxjbGljay9lcnJv
ci5oaD4KKyNpbmNsdWRlIDxjbGljay90YXNrLmhoPgorCisjaW5jbHVkZSA8dWsvbmV0ZGV2Lmg+
CisKK0NMSUNLX0RFQ0xTCisKK2V4dGVybiAiQyIgeworICAgIHN0cnVjdCB1a19uZXRkZXY7Cit9
CisKK2NsYXNzIFRvRGV2aWNlIDogcHVibGljIEVsZW1lbnQgeworcHVibGljOgorICAgIFRvRGV2
aWNlKCk7CisgICAgflRvRGV2aWNlKCk7CisKKyAgICBjb25zdCBjaGFyICpjbGFzc19uYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlRvRGV2aWNlIjsgfQorICAgIGNvbnN0IGNoYXIgKnBvcnRfY291bnQo
KSBjb25zdCB7IHJldHVybiAiMS8wLTEiOyB9CisgICAgY29uc3QgY2hhciAqcHJvY2Vzc2luZygp
IGNvbnN0IHsgcmV0dXJuICJhL2giOyB9CisgICAgaW50IGNvbmZpZ3VyZV9waGFzZSgpIGNvbnN0
IHsgcmV0dXJuIENPTkZJR1VSRV9QSEFTRV9GSVJTVDsgfQorCisgICAgaW50IGNvbmZpZ3VyZShW
ZWN0b3I8U3RyaW5nPiAmLCBFcnJvckhhbmRsZXIgKik7CisgICAgaW50IGluaXRpYWxpemUoRXJy
b3JIYW5kbGVyICopOworICAgIHZvaWQgY2xlYW51cChDbGVhbnVwU3RhZ2UpOworCisgICAgYm9v
bCBydW5fdGFzayhUYXNrICopOworICAgIHZvaWQgcHVzaChpbnQsIFBhY2tldCAqcCk7CisKK3By
aXZhdGU6CisgICAgVGFzayBfdGFzazsKKworICAgIGludCBfZGV2aWQ7CisgICAgc3RydWN0IHVr
X25ldGRldiAqX2RldjsKKyAgICBzdHJ1Y3QgdWtfbmV0ZGV2X2luZm8gX2Rldl9pbmZvOworfTsK
KworQ0xJQ0tfRU5EREVDTFMKKyNlbmRpZgotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH8-000301-N2; Wed, 05 Jun 2019 12:44:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH6-0002yz-Qd
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:16 +0000
X-Inumbo-ID: a0338166-878f-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a0338166-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:15 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A7839F20A8;
 Wed,  5 Jun 2019 14:44:14 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dee_IR_Dhz-N; Wed,  5 Jun 2019 14:44:14 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 805C2F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:12 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:12 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:29 +0200
Message-ID: <20190605124332.25437-9-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 08/11] Initial public
 release: Add 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: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBpcyBhIG1pbmltYWwgc2V0IHRoYXQgc2hvdWxkIGFsbG93IHNwYXduaW5nIGNsaWNrIGZy
b20gYW4gZXh0ZXJuYWwKbWFpbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHVzaW5nIGNsaWNrJ3MgaW50
ZXJuYWwgbWFpbigpLgoKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNj
aG1pZHRAbmVjbGFiLmV1PgpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lA
bmVjbGFiLmV1PgotLS0KIGV4cG9ydHN5bXMudWsgfCA3ICsrKysrKysKIDEgZmlsZSBjaGFuZ2Vk
LCA3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrCgpkaWZm
IC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWI0NWQ3YgotLS0gL2Rldi9udWxsCisrKyBiL2V4cG9ydHN5bXMu
dWsKQEAgLTAsMCArMSw3IEBACitjbGlja19tYWluCittYWluCitjbGlja19yZWFkX3JvdXRlcgor
Y2xpY2tfc3RhdGljX2luaXRpYWxpemUKK2NvbmZpZ3VyYXRvcl9zdGFydAorY29uZmlndXJhdG9y
X3N0b3AKK3JvdXRlcl90aHJlYWQKLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVH8-000308-P4; Wed, 05 Jun 2019 12:44:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVH7-0002zV-2i
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:17 +0000
X-Inumbo-ID: a07bfd51-878f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a07bfd51-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 32EF1104276;
 Wed,  5 Jun 2019 14:44:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2SGFMkGjA5PA; Wed,  5 Jun 2019 14:44:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 13B69103B6A
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:15 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:14 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:30 +0200
Message-ID: <20190605124332.25437-10-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 09/11] support for loading
 click configs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGV4cGVjdGVkIHdheSBpcyB0byBwcm92aWRlIGEgKHBsYWluLXRleHQpIGNvbmZpZyBmaWxl
IGFzIGluaXRyZC4gSWYKbm8gaW5pdHJkIGlzIHByb3ZpZGVkLCBjbGljayB3aWxsIGZhbGwgYmFj
ayB0byBhIHN0YXRpYywgY29tcGlsZWQtaW4KY29uZmlnIHRoYXQgcmVwbGllcyB0byBwaW5ncy4K
ClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5l
dT4KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KLS0t
CiBjbGljay5jYyAgICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLS0tLS0KIGluY2x1ZGUvc3RhdGljX2NvbmZpZy5oIHwgMjIgKysrKysrKysrKysrKysr
KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3RhdGljX2NvbmZpZy5oCgpkaWZmIC0tZ2l0
IGEvY2xpY2suY2MgYi9jbGljay5jYwppbmRleCBhM2JmYmE4Li44NWE5MzhiIDEwMDY0NAotLS0g
YS9jbGljay5jYworKysgYi9jbGljay5jYwpAQCAtNTIsMTEgKzUyLDE0IEBAIGV4dGVybiAiQyJ7
CiAjaW5jbHVkZSA8Y2xpY2svc3RyYWNjdW0uaGg+CiAjaW5jbHVkZSA8Y2xpY2svZHJpdmVyLmho
PgogCisjaW5jbHVkZSA8c3RhdGljX2NvbmZpZy5oPgorCiAjaW5jbHVkZSA8dWsvc2NoZWQuaD4K
ICNpbmNsdWRlIDx1ay90aHJlYWQuaD4KKyNpbmNsdWRlIDx1ay9uZXRkZXYuaD4KKyNpbmNsdWRl
IDx1ay9wbGF0L21lbW9yeS5oPgogCiBpbnQgY2xpY2tfbnRocmVhZHMgPSAxOwotCiB2b2lkICpf
X2Rzb19oYW5kbGUgPSBOVUxMOwogCiAjZGVmaW5lIE5MT0coZm10LCAuLi4pCkBAIC0xMTksNiAr
MTIyLDMyIEBAIHJlYWRfY29uZmlnKHVfaW50IHJpZCA9IDApCiBzdGF0aWMgRXJyb3JIYW5kbGVy
ICplcnJoOwogc3RhdGljIE1hc3RlciBtYXN0ZXIoMSk7CiAKK3N0YXRpYyBTdHJpbmcgKgorZ2V0
X2NvbmZpZygpCit7CisJU3RyaW5nICpjZmc7CisJc3RydWN0IHVrcGxhdF9tZW1yZWdpb25fZGVz
YyBpbWc7CisJY2hhciAqY3N0cjsKKwlzaXplX3QgY3N0cl9sZW47CisKKwkvKiBGaXJzdCwgdHJ5
IGluaXRyZCAqLworCWlmICh1a3BsYXRfbWVtcmVnaW9uX2ZpbmRfaW5pdHJkMCgmaW1nKSA+PSAw
KSB7CisJCWNzdHIgPSAoY2hhciAqKWltZy5iYXNlOworCQljc3RyX2xlbiA9IGltZy5sZW47CisJ
fSBlbHNlIHsKKwkJLyogSWYgd2UgY2FuJ3QgZmluZCBhIGNvbmZpZzogdXNlIGEgZmFsbGJhY2sg
b25lIHN0YXRpY2FsbHkKKwkJICogY29tcGlsZWQgaW4uCisJCSAqLworCQl1a19wcl93YXJuKCJD
b3VsZCBub3QgZmluZCBhIGNvbmZpZywgdXNpbmcgc3RhbmRhcmQgY29uZmlnIVxuIik7CisJCWNz
dHIgPSBDT05GSUdTVFJJTkc7CisJCWNzdHJfbGVuID0gc3RybGVuKENPTkZJR1NUUklORyk7CisJ
fQorCWNmZyA9IG5ldyBTdHJpbmcoY3N0ciwgY3N0cl9sZW4pOworCXByaW50ZigiUmVjZWl2ZWQg
Y29uZmlnIChsZW5ndGggJWQpOlxuIiwgY2ZnLT5sZW5ndGgoKSk7CisJcHJpbnRmKCIlc1xuIiwg
Y2ZnLT5jX3N0cigpKTsKKwlyZXR1cm4gY2ZnOworfQorCiBzdHJ1Y3Qgcm91dGVyX2luc3RhbmNl
IHsKIAlSb3V0ZXIgKnI7CiAJdV9pbnQgZl9zdG9wOwpAQCAtMTI3LDkgKzE1Niw4IEBAIHN0cnVj
dCByb3V0ZXJfaW5zdGFuY2Ugewogdm9pZAogcm91dGVyX3RocmVhZCh2b2lkICp0aHJlYWRfZGF0
YSkKIHsKLQl1X2ludCAqcmlkID0gKHVfaW50KikgdGhyZWFkX2RhdGE7Ci0JU3RyaW5nICpjb25m
aWcgPSBuZXcgU3RyaW5nOyAvL3JlYWRfY29uZmlnKCpyaWQpOwotCXN0cnVjdCByb3V0ZXJfaW5z
dGFuY2UgKnJpID0gJnJvdXRlcl9saXN0WypyaWRdOworCXN0cnVjdCByb3V0ZXJfaW5zdGFuY2Ug
KnJpID0gJnJvdXRlcl9saXN0Wyh1bnNpZ25lZCBsb25nKXRocmVhZF9kYXRhXTsKKwlTdHJpbmcg
KmNvbmZpZyA9IGdldF9jb25maWcoKTsKIAogCXJpLT5yID0gY2xpY2tfcmVhZF9yb3V0ZXIoKmNv
bmZpZywgdHJ1ZSwgZXJyaCwgZmFsc2UsICZtYXN0ZXIpOwogCWlmIChyaS0+ci0+aW5pdGlhbGl6
ZShlcnJoKSA8IDApIHsKQEAgLTE1MCw3ICsxNzgsNiBAQCByb3V0ZXJfdGhyZWFkKHZvaWQgKnRo
cmVhZF9kYXRhKQogCiAJTE9HKCJNYXN0ZXIvZHJpdmVyIHN0b3BwZWQsIGNsb3Npbmcgcm91dGVy
X3RocmVhZCIpOwogCWZyZWUoY29uZmlnKTsKLQlmcmVlKHJpZCk7CiB9CiAKIHZvaWQKZGlmZiAt
LWdpdCBhL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oIGIvaW5jbHVkZS9zdGF0aWNfY29uZmlnLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjNWQxMgotLS0gL2Rldi9udWxs
CisrKyBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCkBAIC0wLDAgKzEsMjIgQEAKK3N0YXRpYyBj
aGFyIENPTkZJR1NUUklOR1tdID0gIiAgICBkZWZpbmUoJElQIDEwLjAuMTAuMTIzKTtcblwKKyAg
ICBkZWZpbmUoJE1BQzAgMTE6MjI6MzM6NDQ6NTU6NjYpO1xuXAorXG5cCisgICAgc291cmNlIDo6
IEZyb21EZXZpY2U7XG5cCisgICAgc2luayAgIDo6IFRvRGV2aWNlO1xuXAorICAgIC8vIGNsYXNz
aWZpZXMgcGFja2V0cyBcblwKKyAgICBjIDo6IENsYXNzaWZpZXIoXG5cCisgICAgICAgIDEyLzA4
MDYgMjAvMDAwMSwgLy8gQVJQIFJlcXVlc3RzIGdvZXMgdG8gb3V0cHV0IDBcblwKKyAgICAgICAg
MTIvMDgwNiAyMC8wMDAyLCAvLyBBUlAgUmVwbGllcyB0byBvdXRwdXQgMVxuXAorICAgICAgICAx
Mi8wODAwIDE0LzQ1IDM0LzA4LCAvLyBJQ01QIFJlcXVlc3RzIHRvIG91dHB1dCAyXG5cCisgICAg
ICAgIC0pOyAvLyB3aXRob3V0IGEgbWF0Y2ggdG8gb3V0cHV0IDNcblwKK1xuXAorICAgIGFycHEg
OjogQVJQUXVlcmllcigkSVAsICRNQUMwKTtcblwKKyAgICBhcnByIDo6IEFSUFJlc3BvbmRlcigk
SVAgJE1BQzApO1xuXAorXG5cCisgICAgc291cmNlIC0+IGM7XG5cCisgICAgY1swXSAtPiBDaGVj
a0FSUEhlYWRlcigxNCkgLT4gQVJQUHJpbnQgLT4gYXJwciAtPiBBUlBQcmludCAtPiBzaW5rO1xu
XAorICAgIGNbMV0gLT4gWzFdYXJwcTtcblwKKyAgICBJZGxlIC0+IFswXWFycHE7XG5cCisgICAg
YXJwcSAtPiBzaW5rO1xuXAorICAgIGNbMl0gLT4gQ2hlY2tJUEhlYWRlcigxNCkgLT4gSVBQcmlu
dCAtPiBJQ01QUGluZ1Jlc3BvbmRlcigpIC0+IEV0aGVyTWlycm9yKCkgLT4gSVBQcmludCAtPiBz
aW5rO1xuXAorICAgIGNbM10gLT4gRGlzY2FyZDsiOwotLSAKMi4yMS4wCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVHA-00031Z-T3; Wed, 05 Jun 2019 12:44:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVHA-00031B-Dy
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:20 +0000
X-Inumbo-ID: a2210203-878f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a2210203-878f-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 12:44:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EBB6D104276;
 Wed,  5 Jun 2019 14:44:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id e5RdZ9rmbxSS; Wed,  5 Jun 2019 14:44:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CE056103B6A
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:17 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:17 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:32 +0200
Message-ID: <20190605124332.25437-12-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 11/11] config: Add
 userlevel module option
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

QWRkIGEgbWVudWNvbmZpZyBvcHRpb24gdG8gYnVpbGQgQ2xpY2sgd2l0aCB1c2VybGV2ZWwgZWxl
bWVudHMuIEJlIGF3YXJlCnRoYXQgdGhpcyBjdXJyZW50bHkgZG9lc24ndCBidWlsZCBiZWNhdXNl
IG9mIG1pc3NpbmcgaGVhZGVyIGZpbGVzLgpIZW5jZSwgdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4KLS0tCiBDb25maWcudWsgICB8IDcgKysrKysrKwogTWFrZWZpbGUudWsgfCAyICst
CiAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt
LWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awppbmRleCA5NmQ5NDZlLi5lMjUwODU3IDEwMDY0
NAotLS0gYS9Db25maWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC04NCw0ICs4NCwxMSBAQCBjb25m
aWcgTElCQ0xJQ0tfRUxFTVNfVEhSRUFEUwogCWhlbHAKIAkgIEJ1aWxkIHdpdGggbXVsdGktdGhy
ZWFkaW5nIGVsZW1lbnRzCiAKK2NvbmZpZyBMSUJDTElDS19FTEVNU19VU0VSTEVWRUwKKwlib29s
ICJFbmFibGUgdXNlcmxldmVsIGVsZW1lbnRzIFtCUk9LRU5dIgorCWRlZmF1bHQgbgorCWhlbHAK
KwkgIEJ1aWxkIHdpdGggQ2xpY2sgdXNlcmxldmVsIGVsZW1lbnRzLgorCSAgQmUgYXdhcmUgdGhp
cyBjdXJyZW50bHkgZG9lc24ndCBjb21waWxlLgorCiBlbmRpZgpkaWZmIC0tZ2l0IGEvTWFrZWZp
bGUudWsgYi9NYWtlZmlsZS51awppbmRleCAwMmI1OGY4Li5kNjA2MWM4IDEwMDY0NAotLS0gYS9N
YWtlZmlsZS51aworKysgYi9NYWtlZmlsZS51awpAQCAtNjEsNyArNjEsNyBAQCBMSUJDTElDS19F
WFRSQUNURUQ9JChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gp
CiBMSUJDTElDS19FTEVNRU5UU19ESVI9JChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzCiBM
SUJDTElDS19CVUlMRFRPT0w9JChMSUJDTElDS19FWFRSQUNURUQpL2Jpbi9jbGljay1idWlsZHRv
b2wKIExJQkNMSUNLX0VMRU1fRElSUz1hcW0gZXRoZXJuZXQgZXRoZXJzd2l0Y2ggaWNtcCBpcCB1
bmlrcmFmdCBcCi0JCSAgIGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFkcworCQkg
ICBsb2NhbCBzaW1wbGUgc3RhbmRhcmQgdGNwdWRwIHRocmVhZHMgdXNlcmxldmVsCiAKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCiAjIENvbmZpZyBNZW51IC0gRmlsdGVyIHdoaWNoIGVsZW1lbnQg
Y2F0ZWdvcmllcyBhY3R1YWxseSBnZXQgYnVpbHQKLS0gCjIuMjEuMAoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:44:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:44: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 1hYVHB-00032B-VS; Wed, 05 Jun 2019 12:44: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=5S22=UE=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYVHA-00031K-K1
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:44:20 +0000
X-Inumbo-ID: a1d0fa7c-878f-11e9-99eb-4754f627b2f8
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a1d0fa7c-878f-11e9-99eb-4754f627b2f8;
 Wed, 05 Jun 2019 12:44:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 6FCE4F20A7;
 Wed,  5 Jun 2019 14:44:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id irs_3pEw2e3e; Wed,  5 Jun 2019 14:44:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 451A7F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:44:15 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun
 2019 14:44:15 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 14:43:31 +0200
Message-ID: <20190605124332.25437-11-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
In-Reply-To: <20190605124332.25437-1-florian.schmidt@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 10/11] Provide MAC preamble
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

V2UgY3JlYXRlIGEgY29uZmlnIHNjcmlwdCBzbmlwcGV0IHRoYXQgZGVmaW5lcyBhICJNQUMwIiwg
Ik1BQzEiLCBldGMuCnZhcmlhYmxlIGZvciBlYWNoIG5ldHdvcmsgZGV2aWNlLiBUaGlzIGlzIHBy
ZXBlbmRlZCB0byB0aGUgdXNlci1wcm92aWRlZApjb25maWcsIHNvIHRoYXQgdXNlcnMgY2FuIHVz
ZSB0aG9zZSB2YXJpYWJsZXMgdG8gYWNjZXNzIHRoZSBNQUMKYWRkcmVzc2VzIG9mIG5ldHdvcmsg
ZGV2aWNlcy4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0
QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xh
Yi5ldT4KLS0tCiBjbGljay5jYyAgICAgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKy0tCiBpbmNsdWRlL3N0YXRpY19jb25maWcuaCB8ICAxIC0K
IDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9jbGljay5jYyBiL2NsaWNrLmNjCmluZGV4IDg1YTkzOGIuLjViMGYzNGYgMTAwNjQ0
Ci0tLSBhL2NsaWNrLmNjCisrKyBiL2NsaWNrLmNjCkBAIC0xMjEsMTUgKzEyMSw0NSBAQCByZWFk
X2NvbmZpZyh1X2ludCByaWQgPSAwKQogI2RlZmluZSBNQVhfUk9VVEVSUwk2NAogc3RhdGljIEVy
cm9ySGFuZGxlciAqZXJyaDsKIHN0YXRpYyBNYXN0ZXIgbWFzdGVyKDEpOworc3RhdGljIFN0cmlu
ZyBtYWNhZGRyX3ByZWFtYmxlOworCitzdGF0aWMgdm9pZAorbWFrZV9tYWNhZGRyX3ByZWFtYmxl
KCkKK3sKKwl1bnNpZ25lZCBpbnQgbmRldiA9IHVrX25ldGRldl9jb3VudCgpOworCWNvbnN0IHNp
emVfdCBidWZsZW4gPSA2NDsKKwljaGFyIGJ1ZltidWZsZW5dOworCWNvbnN0IHN0cnVjdCB1a19o
d2FkZHIgKm1hYzsKKwlTdHJpbmdBY2N1bSBhY2M7CisKKwlVS19BU1NFUlQobWFjYWRkcl9wcmVh
bWJsZS5lbXB0eSgpKTsKKworCXVrX3ByX2luZm8oIkZvdW5kICVkIG5ldHdvcmsgZGV2aWNlKHMp
XG4iLCB1a19uZXRkZXZfY291bnQoKSk7CisJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBu
ZGV2OyArK2kpIHsKKwkJbWFjID0gdWtfbmV0ZGV2X2h3YWRkcl9nZXQodWtfbmV0ZGV2X2dldChp
KSk7CisJCXNucHJpbnRmKGJ1ZiwgYnVmbGVuLAorCQkJImRlZmluZSgkTUFDJWQgJTAyeDolMDJ4
OiUwMng6JTAyeDolMDJ4OiUwMngpO1xuIiwKKwkJCWksIG1hYy0+YWRkcl9ieXRlc1swXSwgbWFj
LT5hZGRyX2J5dGVzWzFdLAorCQkJbWFjLT5hZGRyX2J5dGVzWzJdLCBtYWMtPmFkZHJfYnl0ZXNb
M10sCisJCQltYWMtPmFkZHJfYnl0ZXNbNF0sIG1hYy0+YWRkcl9ieXRlc1s1XSk7CisJCXVrX3By
X2luZm8oImFwcGVuZGluZyAlcyIsIGJ1Zik7CisJCWFjYy5hcHBlbmQoYnVmKTsKKwl9CisJYWNj
LmFwcGVuZCgiLyogRW5kIHVuaWtyYWZ0LXByb3ZpZGVkIE1BQyBwcmVhbWJsZSAqL1xuIik7CisJ
bWFjYWRkcl9wcmVhbWJsZSA9IGFjYy50YWtlX3N0cmluZygpOworCXVrX3ByX2luZm8oIk1BQyBh
ZGRyZXNzIG1hY3JvczpcbiVzXG4iLCBtYWNhZGRyX3ByZWFtYmxlLmNfc3RyKCkpOworfQogCiBz
dGF0aWMgU3RyaW5nICoKIGdldF9jb25maWcoKQogewotCVN0cmluZyAqY2ZnOworCVN0cmluZyAq
Y2ZnID0gbmV3IFN0cmluZyhtYWNhZGRyX3ByZWFtYmxlKTsKIAlzdHJ1Y3QgdWtwbGF0X21lbXJl
Z2lvbl9kZXNjIGltZzsKIAljaGFyICpjc3RyOwogCXNpemVfdCBjc3RyX2xlbjsKIAorCVVLX0FT
U0VSVCghbWFjYWRkcl9wcmVhbWJsZS5lbXB0eSgpKTsKKwogCS8qIEZpcnN0LCB0cnkgaW5pdHJk
ICovCiAJaWYgKHVrcGxhdF9tZW1yZWdpb25fZmluZF9pbml0cmQwKCZpbWcpID49IDApIHsKIAkJ
Y3N0ciA9IChjaGFyICopaW1nLmJhc2U7CkBAIC0xNDIsNyArMTcyLDcgQEAgZ2V0X2NvbmZpZygp
CiAJCWNzdHIgPSBDT05GSUdTVFJJTkc7CiAJCWNzdHJfbGVuID0gc3RybGVuKENPTkZJR1NUUklO
Ryk7CiAJfQotCWNmZyA9IG5ldyBTdHJpbmcoY3N0ciwgY3N0cl9sZW4pOworCWNmZy0+YXBwZW5k
KGNzdHIsIGNzdHJfbGVuKTsKIAlwcmludGYoIlJlY2VpdmVkIGNvbmZpZyAobGVuZ3RoICVkKTpc
biIsIGNmZy0+bGVuZ3RoKCkpOwogCXByaW50ZigiJXNcbiIsIGNmZy0+Y19zdHIoKSk7CiAJcmV0
dXJuIGNmZzsKQEAgLTIwMCw2ICsyMzAsMjYgQEAgcm91dGVyX3N0b3AoaW50IG4gPSBNQVhfUk9V
VEVSUykKIAlMT0coIlN0b3BwZWQgYWxsIHJvdXRlcnMuLi5cblxuIik7CiB9CiAKKy8qIEluaXRp
YWxpemUgYWxsIG5ldGRldiBkZXZpY2VzIHRvIHRoZSBwb2ludCB3aGVyZSB5b3UgY2FuIGdldCBh
IE1BQworICogYWRkcmVzcyBmcm9tIHRoZW0uCisgKi8KK3N0YXRpYyBpbnQKK3VrX25ldGRldl9l
YXJseV9pbml0KEVycm9ySGFuZGxlciAqZXJyaCkKK3sKKwlzdHJ1Y3QgdWtfbmV0ZGV2ICpuZXRk
ZXY7CisJc3RydWN0IHVrX25ldGRldl9jb25mIG5ldGRldl9jb25mOworCisJbmV0ZGV2X2NvbmYu
bmJfcnhfcXVldWVzID0gMTsKKwluZXRkZXZfY29uZi5uYl90eF9xdWV1ZXMgPSAxOworCWZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdWtfbmV0ZGV2X2NvdW50KCk7ICsraSkgeworCQluZXRk
ZXYgPSB1a19uZXRkZXZfZ2V0KGkpOworCQl1a19wcl9pbmZvKCJuZXRkZXYgJWQgZWFybHkgaW5p
dFxuIiwgaSk7CisJCWlmICh1a19uZXRkZXZfY29uZmlndXJlKG5ldGRldiwgJm5ldGRldl9jb25m
KSA8IDApCisJCQlyZXR1cm4gZXJyaC0+ZXJyb3IoIkZhaWxlZCB0byBjb25maWd1cmUgZGV2aWNl
ICVkXG4iLCBpKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKICNpZiBDTElDS19DT05TT0xFX1NVUFBP
UlRfSU1QTEVNRU5URUQKIHZvaWQKIHJvdXRlcl9zdXNwZW5kKGludCBuID0gTUFYX1JPVVRFUlMp
CkBAIC0zNTAsNiArNDAwLDEwIEBAIGludCBDTElDS19NQUlOKGludCBhcmdjLCBjaGFyICoqYXJn
dikKIAkJcm91dGVyX2xpc3RbaV0uZl9zdG9wID0gMTsKIAl9CiAKKwlpZiAodWtfbmV0ZGV2X2Vh
cmx5X2luaXQoZXJyaCkpCisJCXJldHVybiAtRUlOVkFMOworCW1ha2VfbWFjYWRkcl9wcmVhbWJs
ZSgpOworCiAjaWYgQ0xJQ0tfQ09OU09MRV9TVVBQT1JUX0lNUExFTUVOVEVECiAvKiBUT0RPOiBU
aGlzIGludGVyYWN0aW9uIGJldHdlZW4geGVuYnVzIGFuZCBjbGljayBzaG91bGQgYmUgcmVwbGFj
ZWQgd2l0aCBhCiAgKiBnZW5lcmljIHVuaWtyYWZ0IGludGVyYWN0aW9uIHNjaGVtZSwgZm9yIGV4
YW1wbGUsIHZpYSBhIGNvbnNvbGUuCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N0YXRpY19jb25maWcu
aCBiL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCmluZGV4IDg1YzVkMTIuLjE4MDg3NjEgMTAwNjQ0
Ci0tLSBhL2luY2x1ZGUvc3RhdGljX2NvbmZpZy5oCisrKyBiL2luY2x1ZGUvc3RhdGljX2NvbmZp
Zy5oCkBAIC0xLDUgKzEsNCBAQAogc3RhdGljIGNoYXIgQ09ORklHU1RSSU5HW10gPSAiICAgIGRl
ZmluZSgkSVAgMTAuMC4xMC4xMjMpO1xuXAotICAgIGRlZmluZSgkTUFDMCAxMToyMjozMzo0NDo1
NTo2Nik7XG5cCiBcblwKICAgICBzb3VyY2UgOjogRnJvbURldmljZTtcblwKICAgICBzaW5rICAg
OjogVG9EZXZpY2U7XG5cCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:50:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:50: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 1hYVMw-0003uc-HN; Wed, 05 Jun 2019 12:50: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=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYVMv-0003uX-G4
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:50:17 +0000
X-Inumbo-ID: 75a344c2-8790-11e9-83e6-e772813ceb35
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 75a344c2-8790-11e9-83e6-e772813ceb35;
 Wed, 05 Jun 2019 12:50:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id ADE07F20A8;
 Wed,  5 Jun 2019 14:50:12 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id OTNANfT-9EwW; Wed,  5 Jun 2019 14:50:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 77D7CF20A7
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:50:10 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 14:50:10 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <5d988413-3db4-22e7-d502-12abe3a49f04@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-4-yuri.volchkov@neclab.eu>
 <5d988413-3db4-22e7-d502-12abe3a49f04@neclab.eu>
Date: Wed, 5 Jun 2019 14:50:07 +0200
Message-ID: <tza4s2h894xklc.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 03/10] remove duplicate syscalls
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

U2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+IHdyaXRlczoKCj4gU29ycnks
IEkgZm9yZ290IHRvIG1lbnRpb24uIFBsZWFzZSBhZGQgYSBwcmVmaXggdG8gdGhlIGNvbW1pdCB0
aXRsZSwgdG9vLgpPZiBjb3Vyc2UKCj4KPiBPbiAwNC4wNi4xOSAxODoyOCwgWXVyaSBWb2xjaGtv
diB3cm90ZToKPj4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHN5c2NhbGxfc2hpbSByZWxpZXMgb24g
dW5pcXVlbmVzcyBvZiB0aGUgc3lzY2FsbAo+PiBudW1iZXJzLgo+PiAKPj4gU2lnbmVkLW9mZi1i
eTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0tLQo+PiAgIGxp
Yi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluIHwgMiAtLQo+PiAgIDEgZmlsZSBj
aGFuZ2VkLCAyIGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3No
aW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNj
YWxsLmguaW4KPj4gaW5kZXggMTNhM2I2NmMuLjFkNzkzNjhhIDEwMDY0NAo+PiAtLS0gYS9saWIv
c3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbgo+PiArKysgYi9saWIvc3lzY2FsbF9z
aGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbgo+PiBAQCAtMjI0LDcgKzIyNCw2IEBACj4+ICAgI2Rl
ZmluZSBfX05SX3Rna2lsbAkyNjgKPj4gICAjZGVmaW5lIF9fTlJfdXRpbWVzCTI2OQo+PiAgICNk
ZWZpbmUgX19OUl9mYWR2aXNlNjRfNjQJMjcwCj4+IC0jZGVmaW5lIF9fTlJfYXJtX2ZhZHZpc2U2
NF82NAkyNzAKPj4gICAjZGVmaW5lIF9fTlJfcGNpY29uZmlnX2lvYmFzZQkyNzEKPj4gICAjZGVm
aW5lIF9fTlJfcGNpY29uZmlnX3JlYWQJMjcyCj4+ICAgI2RlZmluZSBfX05SX3BjaWNvbmZpZ193
cml0ZQkyNzMKPj4gQEAgLTI5Niw3ICsyOTUsNiBAQAo+PiAgICNkZWZpbmUgX19OUl9nZXRfcm9i
dXN0X2xpc3QJMzM5Cj4+ICAgI2RlZmluZSBfX05SX3NwbGljZQkzNDAKPj4gICAjZGVmaW5lIF9f
TlJfc3luY19maWxlX3JhbmdlMgkzNDEKPj4gLSNkZWZpbmUgX19OUl9hcm1fc3luY19maWxlX3Jh
bmdlCTM0MQo+PiAgICNkZWZpbmUgX19OUl90ZWUJMzQyCj4+ICAgI2RlZmluZSBfX05SX3Ztc3Bs
aWNlCTM0Mwo+PiAgICNkZWZpbmUgX19OUl9tb3ZlX3BhZ2VzCTM0NAo+PiAKCi0tIApZdXJpIFZv
bGNoa292ClNvZnR3YXJlIFNwZWNpYWxpc3QKCk5FQyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFu
bGFnZSAzNgpELTY5MTE1IEhlaWRlbGJlcmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:56:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12:56: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 1hYVT2-00041I-24; Wed, 05 Jun 2019 12:56: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=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYVT0-00041D-Q4
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:56:34 +0000
X-Inumbo-ID: 55eada68-8791-11e9-a17c-b7b0c93645ed
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55eada68-8791-11e9-a17c-b7b0c93645ed;
 Wed, 05 Jun 2019 12:56:29 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 10E90104BEF;
 Wed,  5 Jun 2019 14:56:29 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id QSIsM29pohKo; Wed,  5 Jun 2019 14:56:28 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CFC35104BAF
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:56:28 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 14:56:28
 +0200
To: Florian Schmidt <florian.schmidt@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
 <20190605124332.25437-2-florian.schmidt@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <5f7747e4-347a-e543-aa14-fd0a6514f929@neclab.eu>
Date: Wed, 5 Jun 2019 14:56:28 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605124332.25437-2-florian.schmidt@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 01/11] Initial public
 release: basic unikraft 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 <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>

VGhhbmtzIGEgbG90IGZvciB0aGUgY2hhbmdlcy4gTG9va3Mgb2theSB0byBtZS4gSSBqdXN0IGZv
dW5kIGJ5IGNoYW5nZSAKdHdvIHNtYWxsZXIgdGhpbmdzLCBidXQgdGhlc2UgY2FuIGJlIGNoYW5n
ZWQgd2hpbGUgdXBzdHJlYW1pbmcuIE5vIG5lZWQgCmZvciBhIG5ldyB2ZXJzaW9uLgoKUmV2aWV3
ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24gMDUuMDYu
MTkgMTQ6NDMsIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBBZGQgTWFrZWZpbGUsIE1ha2VmaWxl
LnVrLCBDb25maWcudWssIC5naXRpZ25vcmUsIC5tZCBmaWxlcwo+IAo+IFNpZ25lZC1vZmYtYnk6
IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KPiBTaWduZWQtb2ZmLWJ5OiBG
bG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Cj4gLS0tCj4gICAuZ2l0
aWdub3JlICAgICAgfCAgIDQgKysKPiAgIENPRElOR19TVFlMRS5tZCB8ICAgNCArKwo+ICAgQ09O
VFJJQlVUSU5HLm1kIHwgICA0ICsrCj4gICBDT1BZSU5HLm1kICAgICAgfCAgNDcgKysrKysrKysr
KysrCj4gICBDb25maWcudWsgICAgICAgfCAgODcgKysrKysrKysrKysrKysrKysrKysrKwo+ICAg
TUFJTlRBSU5FUlMubWQgIHwgIDEwICsrKwo+ICAgTWFrZWZpbGUgICAgICAgIHwgICA5ICsrKwo+
ICAgTWFrZWZpbGUudWsgICAgIHwgMTg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwo+ICAgUkVBRE1FLm1kICAgICAgIHwgICA1ICsrCj4gICA5IGZpbGVz
IGNoYW5nZWQsIDM1NyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgLmdpdGln
bm9yZQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZAo+ICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcu
bWQKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBNQUlOVEFJTkVSUy5tZAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlCj4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUu
bWQKPiAKPiBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmE5ZmI3MWIKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvLmdpdGlnbm9yZQo+IEBAIC0wLDAgKzEsNCBAQAo+ICsuY29uZmlnCj4gKy5jb25maWcub2xk
Cj4gKy4uY29uZmlnLnRtcAo+ICtidWlsZC8KPiBkaWZmIC0tZ2l0IGEvQ09ESU5HX1NUWUxFLm1k
IGIvQ09ESU5HX1NUWUxFLm1kCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
Li41NzMwMDQxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0NPRElOR19TVFlMRS5tZAo+IEBAIC0w
LDAgKzEsNCBAQAo+ICtDb2RpbmcgU3R5bGUKPiArPT09PT09PT09PT09Cj4gKwo+ICtQbGVhc2Ug
cmVmZXIgdG8gdGhlIGBDT0RJTkdfU1RZTEUubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQg
cmVwb3NpdG9yeS4KPiBkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5H
Lm1kCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41ZjU1ZWNhCj4gLS0t
IC9kZXYvbnVsbAo+ICsrKyBiL0NPTlRSSUJVVElORy5tZAo+IEBAIC0wLDAgKzEsNCBAQAo+ICtD
b250cmlidXRpbmcgdG8gVW5pa3JhZnQKPiArPT09PT09PT09PT09PT09PT09PT09PT0KPiArCj4g
K1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUgbWFpbiBV
bmlrcmFmdCByZXBvc2l0b3J5Lgo+IGRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIvQ09QWUlORy5t
ZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNTJmMzc1Mwo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi9DT1BZSU5HLm1kCj4gQEAgLTAsMCArMSw0NyBAQAo+ICtMaWNlbnNl
Cj4gKz09PT09PT0KPiArCj4gK1VuaWtyYWZ0IGNsaWNrIHdyYXBwZXJzCj4gKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQo+ICsKPiArVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHdyYXBwZXIgY29k
ZSB0byBidWlsZCB0aGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIgd2l0aAo+ICtVbmlrcmFmdC4gVGhl
IHdyYXBwZXIgY29kZSBpcyBnZW5lcmFsbHkgcHVibGlzaGVkIHVuZGVyIGEgQlNEIDMtY2xhdXNl
IGxpY2VuY2UuCj4gK2VhY2ggQyBjb2RlIGZpbGUgaW4gdGhpcyByZXBvc2l0b3J5IHNob3VsZCBk
ZWNsYXJlIHdobyBpcyB0aGUgY29weXJpZ2h0IG93bmVyCj4gK2FuZCB1bmRlciB3aGljaCB0ZXJt
cyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcyBsaWNlbnNlZC4gSWYgc3VjaCBhIGxpY2VuY2UK
PiArbm90ZSBpcyBtaXNzaW5nLCB0aGUgZm9sbG93aW5nIGNvcHlyaWdodCBub3RpY2Ugd2lsbCBh
cHBseToKPiArCj4gKwlDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3Bl
aSBHbWJILCBORUMgQ29ycG9yYXRpb24uCgpXZSBhcmUgYmFzZWQgaW4gIkV1cm9wZSIgOy0pCgo+
ICsJICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsKPiArCVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAo+ICsJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKwlhcmUgbWV0Ogo+ICsKPiArCTEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKwkgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCj4gKwkyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAo+ICsJICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsJICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
PiArCTMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKPiArCSAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKwkgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsKPiArCVRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgo+ICsJQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsJSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArCUFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKPiArCUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArCUNPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKwlTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKPiArCUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKwlDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsJQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKPiArCVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsKPiArQ2xpY2sg
c291cmNlIGNvZGUKPiArLS0tLS0tLS0tLS0tLS0tLS0tCj4gKwo+ICtEdXJpbmcgYnVpbGRpbmcs
IHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBkb3dubG9hZCB0aGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIg
c291cmNlCj4gK1RoaXMgY29kZSBoYXMgYSB2YXJpZXR5IG9mIGxpY2VuY2VzOyBwbGVhc2UgZmlu
ZCBtb3JlIGluZm9ybWF0aW9uIGluIHRoZQo+ICtgTElDRU5TRWAgZmlsZSBpbiBDbGljaydzIHJv
b3QgZGlyZWN0b3J5LCBvciBhdAo+ICtodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20v
a29obGVyL2NsaWNrL21hc3Rlci9MSUNFTlNFIC4KPiBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIv
Q29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45NmQ5NDZl
Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0NvbmZpZy51awo+IEBAIC0wLDAgKzEsODcgQEAKPiAr
IyMjIEludmlzaWJsZSBvcHRpb24gZm9yIGRlcGVuZGVuY2llcwo+ICtjb25maWcgQVBQX0RFUEVO
REVOQ0lFUwo+ICsJYm9vbAo+ICsJZGVmYXVsdCB5Cj4gKwo+ICttZW51Y29uZmlnIExJQkNMSUNL
Cj4gKwlib29sICJUaGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIiCj4gKwlzZWxlY3QgVUtVTklTVEQK
PiArCXNlbGVjdCBMSUJORVdMSUIKPiArCXNlbGVjdCBMSUJMV0lQCj4gKwlkZWZhdWx0IHkKPiAr
Cj4gK2lmIExJQkNMSUNLCj4gKwo+ICtjb25maWcgTElCQ0xJQ0tfTUFJTgo+ICsJYm9vbCAiRW5h
YmxlIENsaWNrIG1haW4gZnVuY3Rpb24iCj4gKwlkZWZhdWx0IG4KPiArCWhlbHAKPiArCSAgRGVm
aW5lIG1haW4gZnVuY3Rpb24gaW5zdGVhZCBvZiBjbGlja19tYWluIGZ1bmN0aW9uCj4gKwo+ICtj
b25maWcgTElCQ0xJQ0tfRUxFTVNfQVFNCj4gKwlib29sICJFbmFibGUgQVFNIGVsZW1lbnRzIgo+
ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIEJ1aWxkIHdpdGggSVAgZWxlbWVudHMKPiArCj4g
K2NvbmZpZyBMSUJDTElDS19FTEVNU19FVEhFUk5FVAo+ICsJYm9vbCAiRW5hYmxlIEV0aGVybmV0
IGVsZW1lbnRzIgo+ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIEJ1aWxkIHdpdGggRXRoZXJu
ZXQgZWxlbWVudHMKPiArCj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19FVEhFUlNXSVRDSAo+ICsJ
Ym9vbCAiRW5hYmxlIEV0aGVybmV0IHN3aXRjaCBlbGVtZW50cyIKPiArCWRlZmF1bHQgeQo+ICsJ
aGVscAo+ICsJICBCdWlsZCB3aXRoIEV0aGVybmV0IHN3aXRjaCBlbGVtZW50cwo+ICsKPiArY29u
ZmlnIExJQkNMSUNLX0VMRU1TX0lDTVAKPiArCWJvb2wgIkVuYWJsZSBJQ01QIGVsZW1lbnRzIgo+
ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIEJ1aWxkIHdpdGggSUNNUCBlbGVtZW50cwo+ICsK
PiArY29uZmlnIExJQkNMSUNLX0VMRU1TX0lQCj4gKwlib29sICJFbmFibGUgSVAgZWxlbWVudHMi
Cj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVpbGQgd2l0aCBhZGFwdGl2ZSBxdWV1ZSBt
YW5hZ2VtZW50IGVsZW1lbnRzCj4gKwo+ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfVU5JS1JBRlQK
PiArCWJvb2wgIkVuYWJsZSBVbmlrcmFmdCBuZXR3b3JraW5nIgo+ICsJZGVmYXVsdCB5Cj4gKwlo
ZWxwCj4gKwkgIEJ1aWxkIHdpdGggVW5pa3JhZnQgRnJvbURldmljZSBhbmQgVG9EZXZpY2UgZWxl
bWVudHMKPiArCj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19MT0NBTAo+ICsJYm9vbCAiRW5hYmxl
IGxvY2FsIGVsZW1lbnRzIgo+ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIEJ1aWxkIHdpdGgg
bG9jYWwgZWxlbWVudHMKPiArCj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19TSU1QTEUKPiArCWJv
b2wgIkVuYWJsZSBzaW1wbGUgZWxlbWVudHMiCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAg
QnVpbGQgd2l0aCBzaW1wbGUgZWxlbWVudHMKPiArCj4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19T
VEFOREFSRAo+ICsJYm9vbCAiRW5hYmxlIHN0YW5kYXJkIGVsZW1lbnRzIgo+ICsJZGVmYXVsdCB5
Cj4gKwloZWxwCj4gKwkgIEJ1aWxkIHdpdGggc3RhbmRhcmQgZWxlbWVudHMKPiArCj4gK2NvbmZp
ZyBMSUJDTElDS19FTEVNU19UQ1BVRFAKPiArCWJvb2wgIkVuYWJsZSBUQ1AvVURQIGVsZW1lbnRz
Igo+ICsJZGVmYXVsdCB5Cj4gKwloZWxwCj4gKwkgIEJ1aWxkIHdpdGggVENQL1VEUCBlbGVtZW50
cwo+ICsKPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX1RIUkVBRFMKPiArCWJvb2wgIkVuYWJsZSBt
dWx0aS10aHJlYWRpbmcgZWxlbWVudHMiCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgQnVp
bGQgd2l0aCBtdWx0aS10aHJlYWRpbmcgZWxlbWVudHMKPiArCj4gK2VuZGlmCj4gZGlmZiAtLWdp
dCBhL01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAuLmIxNDgyYzcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvTUFJTlRB
SU5FUlMubWQKPiBAQCAtMCwwICsxLDEwIEBACj4gK01haW50YWluZXJzIExpc3QKPiArPT09PT09
PT09PT09PT09PQo+ICsKPiArRm9yIG5vdGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRp
b24sIHBsZWFzZSByZWZlciB0byBgTUFJTlRBSU5FUlMubWRgIGluCj4gK3RoZSBtYWluIFVuaWty
YWZ0IHJlcG9zaXRvcnkuCj4gKwo+ICsJQ0xJQ0stVU5JS1JBRlQKPiArCU06CUZlbGlwZSBIdWlj
aSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KPiArCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4u
b3JnCj4gKwlGOiAqCj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjY0N2MzYmEKPiAtLS0gL2Rldi9udWxsCj4g
KysrIGIvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDkgQEAKPiArVUtfUk9PVCA/PSAkKFBXRCkvLi4v
Li4vdW5pa3JhZnQKPiArVUtfTElCUyA/PSAkKFBXRCkvLi4vLi4vbGlicwo+ICtMSUJTIDo9ICQo
VUtfTElCUykvbmV3bGliOiQoVUtfTElCUykvbHdpcAo+ICsKPiArYWxsOgo+ICsJQCQoTUFLRSkg
LUMgJChVS19ST09UKSBBPSQoUFdEKSBMPSQoTElCUykKPiArCj4gKyQoTUFLRUNNREdPQUxTKToK
PiArCUAkKE1BS0UpIC1DICQoVUtfUk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpICQoTUFLRUNNREdP
QUxTKQo+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4gbmV3IGZpbGUg
bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45ODg1NTIwCj4gLS0tIC9kZXYvbnVsbAo+ICsr
KyBiL01ha2VmaWxlLnVrCj4gQEAgLTAsMCArMSwxODcgQEAKPiArIwo+ICsjICBDb3B5cmlnaHQg
KGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMgRXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4K
PiArIyAgICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsjCj4gKyMg
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAo+ICsjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArIyAgYXJlIG1ldDoKPiArIwo+ICsjICAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAo+ICsjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCj4gKyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
PiArIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArIyAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29w
eXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsjICAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+
ICsjICAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgo+ICsjCj4gKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsjICBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCj4gKyMgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArIyAg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgo+ICsjICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArIyAg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KPiArIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArIyAgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUKPiArIyAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyMKPiArIyAgVEhJUyBIRUFE
RVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArIwo+ICsK
PiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArIyBDaGVjayByZXF1aXJlbWVudHM6IENsaWNr
IHJlcXVpcmVzIG5ldGRldiBhY2Nlc3MsIHNvIExXSVAgbXVzdCBub3QgYXR0YWNoIHRoZW0KPiAr
IyBTYWRseSwga2NvbmZpZyBkb2Vzbid0IHN1cHBvcnQgYW4gInVuc2VsZWN0IiBvcHRpb24sIHNv
IHRoZSBuZXh0IGJlc3QgdGhpbmcKPiArIyB3ZSBjYW4gZG8gaXMgY2F0Y2ggdGhpcyBpbnZhbGlk
IGNvbmZpZ3VyYXRpb24gaGVyZSBhbmQgdGhyb3cgYW4gZXJyb3Igd2l0aAo+ICsjIGFuIGV4cGxh
bmF0aW9uIHdoYXQgdG8gZG8uCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gK2lmZXEgKCQo
Q09ORklHX0xXSVBfQVVUT0lGQUNFKSx5KQo+ICskKGVycm9yIENsaWNrIGNhbm5vdCBiZSBidWls
dCB3aXRoIExXSVAgb3B0aW9uICJBdXRvbWF0aWNhbGx5IGF0dGFjaCBuZXRpZnMiISBQbGVhc2Ug
ZGlzYWJsZSkKPiArZW5kaWYKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgUmVn
aXN0ZXIgd2l0aCB1bmlrcmFmdAo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICskKGV2YWwg
JChjYWxsIGFkZGxpYixsaWJjbGljaykpCj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+
ICsjIFNvdXJjZXMKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArTElCQ0xJQ0tfQ09NTUlU
X0hBU0g9YTUzODQ4MzVhNmNhYzEwZjhkNDRkYTRlZWVhOGVhYThmOGU2YTBjMgo+ICtMSUJDTElD
S19VUkw9aHR0cHM6Ly9jb2RlbG9hZC5naXRodWIuY29tL2tvaGxlci9jbGljay96aXAvJChMSUJD
TElDS19DT01NSVRfSEFTSCkKPiArJChldmFsICQoY2FsbCBmZXRjaGFzLGxpYmNsaWNrLCQoTElC
Q0xJQ0tfVVJMKSxjbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKS56aXApKQo+ICtMSUJDTElD
S19QQVRDSERJUj0kKExJQkNMSUNLX0JBU0UpL3BhdGNoZXMKPiArJChldmFsICQoY2FsbCBwYXRj
aCxsaWJjbGljaywkKExJQkNMSUNLX1BBVENIRElSKSxjbGljay0kKExJQkNMSUNLX0NPTU1JVF9I
QVNIKSkpCj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIEhlbHBlcnMKPiArIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArTElCQ0xJQ0tfRVhUUkFDVEVEPSQoTElCQ0xJQ0tfT1JJ
R0lOKS9jbGljay0kKExJQkNMSUNLX0NPTU1JVF9IQVNIKQo+ICtMSUJDTElDS19FTEVNRU5UU19E
SVI9JChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzCj4gK0xJQkNMSUNLX0JVSUxEVE9PTD0k
KExJQkNMSUNLX0VYVFJBQ1RFRCkvYmluL2NsaWNrLWJ1aWxkdG9vbAo+ICtMSUJDTElDS19FTEVN
X0RJUlM9YXFtIGV0aGVybmV0IGV0aGVyc3dpdGNoIGljbXAgaXAgdW5pa3JhZnQgXAo+ICsJCSAg
IGxvY2FsIHNpbXBsZSBzdGFuZGFyZCB0Y3B1ZHAgdGhyZWFkcwo+ICsKPiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPiArIyBDb25maWcgTWVudSAtIEZpbHRlciB3aGljaCBlbGVtZW50IGNhdGVn
b3JpZXMgYWN0dWFsbHkgZ2V0IGJ1aWx0Cj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gK0xJ
QkNMSUNLX0VMRU1fRElSU19VPSQoY2FsbCB1YywkKExJQkNMSUNLX0VMRU1fRElSUykpCj4gK0xJ
QkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElSU19VIDo9ICQoZm9yZWFjaCBWLCAkKExJQkNMSUNLX0VM
RU1fRElSU19VKSwgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlmICQo
ZmlsdGVyIHksJChDT05GSUdfTElCQ0xJQ0tfRUxFTVNfJFYpKSwkVikpCj4gK0xJQkNMSUNLX0ZJ
TFRFUkVEX0VMRU1fRElSUz0kKGNhbGwgbGMsJChMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlNf
VSkpCj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIEFwcC1zcGVjaWZpYyBUYXJn
ZXRzCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKwo+ICsjIFJ1biBDbGljaydzIGNvbmZp
Z3VyZSBzY3JpcHQgdG8gZ2VuZXJhdGUgdG9vbHMgbmVlZGVkIGJ5IGZ1cnRoZXIgcHJlcGFyZSB0
YXJnZXRzCj4gKyQoTElCQ0xJQ0tfQlVJTEQpLy5jb25maWd1cmVkOiAkKExJQkNMSUNLX0JVSUxE
KS8uY3Bmcm9tdG9kZXZzCj4gKwkkKGNhbGwgdmVyYm9zZV9jbWQsQ09ORklHVVJFLGxpYmNsaWNr
OiAkKG5vdGRpciAkQCksXAo+ICsJICAgICAgIGNkICQoTElCQ0xJQ0tfRVhUUkFDVEVEKSAmJiAu
L2NvbmZpZ3VyZSAtLWVuYWJsZS1taW5pb3MgLS13aXRoLXhlbj0kKExJQkNMSUNLX0JVSUxEKSAt
LXdpdGgtbWluaW9zPSQoTElCQ0xJQ0tfQlVJTEQpIC0td2l0aC1uZXdsaWI9JChMSUJDTElDS19C
VUlMRCkgLS13aXRoLWx3aXA9JChMSUJDTElDS19CVUlMRCkgJiYgXAo+ICsJICAgICAgICQoVE9V
Q0gpICRAKQo+ICsKPiArIyBHZW5lcmF0ZSBlbGVtZW50IGJ1aWxkIHJ1bGVzIHVzaW5nIGNsaWNr
LWJ1aWxkdG9vbAo+ICskKExJQkNMSUNLX0JVSUxEKS8uZWxlbWVudHNtazogJChMSUJDTElDS19C
VUlMRCkvLmNvbmZpZ3VyZWQgJChVS19DT05GSUdfT1VUKQo+ICsJJChjYWxsIHZlcmJvc2VfY21k
LEVMRU1NSyxsaWJjbGljazogJChub3RkaXIgJEApLFwKPiArCSAgICAgICBjZCAkKExJQkNMSUNL
X0VMRU1FTlRTX0RJUikgJiYgZWNobyAiJChMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlMpIiB8
ICQoTElCQ0xJQ0tfQlVJTERUT09MKSBmaW5kZWxlbSAtciB1bmlrcmFmdCAtWCAkKExJQkNMSUNL
X0JVSUxEKS9lbGVtZW50cy5leGNsdWRlIHwgZ3JlcCAtRSAiXlteI10iIHwgYXdrICd7cHJpbnQg
IkxJQkNMSUNLX1NSQ1MteSArPSAkJChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzLyIgJCQx
fScgPiAkQCkKPiArCj4gKyMgR2VuZXJhdGUgZWxlbWVudHMuY2MgYW5kIGFkZCBpdCB0byB0aGUg
YnVpbGQgbGlzdAo+ICskKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYzogJChMSUJDTElDS19C
VUlMRCkvLmVsZW1lbnRzbWsKPiArCSQoY2FsbCB2ZXJib3NlX2NtZCxFTEVNQ0MsbGliY2xpY2s6
ICQobm90ZGlyICRAKSxcCj4gKwkgICAgICAgZWNobyAiJChMSUJDTElDS19GSUxURVJFRF9FTEVN
X0RJUlMpIiB8ICQoTElCQ0xJQ0tfQlVJTERUT09MKSBmaW5kZWxlbSAtciB1bmlrcmFmdCAtcCAk
KExJQkNMSUNLX0VMRU1FTlRTX0RJUikgLVggJChMSUJDTElDS19CVUlMRCkvZWxlbWVudHMuZXhj
bHVkZSA+ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c2NvbmYgJiYgXAo+ICsJICAgICAgICQo
TElCQ0xJQ0tfQlVJTERUT09MKSBlbGVtMmV4cG9ydCA8ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVt
ZW50c2NvbmYgPiAkKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50cy5jYykKPiArCj4gKyQoTElCQ0xJ
Q0tfQlVJTEQpLy5jcGZyb210b2RldnM6ICQoTElCQ0xJQ0tfQlVJTEQpLy5vcmlnaW4KPiArCSQo
Y2FsbCB2ZXJib3NlX2NtZCxDUCxsaWJjbGljazogJChub3RkaXIgJEApLFwKCk1heWJlIHlvdSB3
YW50IHRvIGNhbGwgaXQgYEVMRU1DUGAgaW5zdGVhZCBvZiBqdXN0IGBDUGAuIFdlIGFyZSBjb3B5
aW5nIApVbmlrcmFmdCBlbGVtZW50cyBhbmQgaXQgd291bGQgYmUgaW5saW5lIHdpdGggdGhlIG90
aGVyIHR3byBjb21tYW5kcy4gCkhvd2V2ZXIsIHRoaXMgaXMgbWlub3IgdGhpbmcuIEkgYW0gb2th
eSB3aXRoIGJvdGguCgo+ICsJJChNS0RJUikgLXAgJChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQo
TElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1lbnRzICYmIFwKPiArCSQoQ1ApIC1yICQoTElCQ0xJ
Q0tfQkFTRSkvdW5pa3JhZnQgJChMSUJDTElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09N
TUlUX0hBU0gpL2VsZW1lbnRzLyAmJiBcCj4gKwl0b3VjaCAkQCkKPiArCj4gK2lmbmVxICgkKENP
TkZJR19MSUJDTElDS19FTEVNU19VTklLUkFGVCksKQo+ICskKExJQkNMSUNLX0JVSUxEKS8ucHJl
cGFyZWQ6ICQoTElCQ0xJQ0tfQlVJTEQpLy5jcGZyb210b2RldnMgJChMSUJDTElDS19CVUlMRCkv
ZWxlbWVudHMuY2MKPiArZWxzZQo+ICskKExJQkNMSUNLX0JVSUxEKS8ucHJlcGFyZWQ6ICQoTElC
Q0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmNjCj4gK2VuZGlmCj4gKwo+ICtVS19QUkVQQVJFICs9ICQo
TElCQ0xJQ0tfQlVJTEQpLy5wcmVwYXJlZAo+ICsKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
PiArIyBBcHAgaW5jbHVkZXMsIGNvbXBpbGUgZmxhZ3MKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKPiArTElCQ0xJQ0tfQ0lOQ0xVREVTICAgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2luY2x1ZGUg
ICAgICAgIFwKPiArCQkgICAgICAgIC1JJChMSUJDTElDS19FWFRSQUNURUQpCSAgICAgXAo+ICsJ
CQktSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRlIFwKPiArCQkJLUkkKExJQkxXSVBfTFdJ
UF9TUkNTKS9pbmNsdWRlL3Bvc2l4Cj4gK0xJQkNMSUNLX0NYWElOQ0xVREVTICs9IC1JJChMSUJD
TElDS19CQVNFKS9pbmNsdWRlICAgICAgICBcCj4gKwkJICAgICAgICAtSSQoTElCQ0xJQ0tfRVhU
UkFDVEVEKSAgICAgICAgICAgXAo+ICsJCQktSSQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9pbmNsdWRl
IFwKPiArCQkJLUkkKExJQkxXSVBfTFdJUF9TUkNTKS9pbmNsdWRlL3Bvc2l4Cj4gKwo+ICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIEdsb2JhbCBmbGFncwo+ICsjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+ICtMSUJDTElDS19DRkxBR1MteSAgICAgICArPSAtRExXSVBfVElNRVZBTF9QUklW
QVRFPTAgLURDTElDS19VU0VSTEVWRUwKPiArTElCQ0xJQ0tfQ1hYRkxBR1MteSAgICAgKz0gLURM
V0lQX1RJTUVWQUxfUFJJVkFURT0wIC1EQ0xJQ0tfVVNFUkxFVkVMIC1ESEFWRV9JUDYKPiArTElC
Q0xJQ0tfQ1hYRkxBR1MgICAgICAgKz0gLWZuby1leGNlcHRpb25zIC1mbm8tcnR0aSAtc3RkPWMr
KzExCj4gKwo+ICsjIFN1cHByZXNzIHNvbWUgd2FybmluZ3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJv
Y2VzcyBsb29rIG5lYXRlcgo+ICtMSUJDTElDS19TVVBQUkVTU19GTEFHUyA6PSAtV25vLXN0cmlj
dC1hbGlhc2luZwo+ICtMSUJDTElDS19DRkxBR1MteSArPSAkKExJQkNMSUNLX1NVUFBSRVNTX0ZM
QUdTKQo+ICtMSUJDTElDS19DWFhGTEFHUy15ICs9ICQoTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1Mp
Cj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIFVuaWtyYWZ0IDwtPiBDbGljayBn
bHVlIGNvZGUKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfQkFTRSkvY2xpY2suY2MKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Cj4gKyMgQ2xpY2sgc291cmNlcwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9hcmNoaXZlLmNjCj4gK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2FyZ3MuY2MKPiArTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXRvbWljLmNjCj4gK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2JpZ2hhc2htYXBfYXJlbmEu
Y2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYml0dmVj
dG9yLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2Nv
bmZwYXJzZS5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi9jcmMzMi5jCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L2RyaXZlci5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi9lbGVtZW50LmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkv
bGliL2VsZW1maWx0ZXIuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFD
VEVEKS9saWIvZXJyb3IuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFD
VEVEKS9saWIvZXRoZXJhZGRyZXNzLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNL
X0VYVFJBQ1RFRCkvbGliL2dhcHJhdGUuY2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJ
Q0tfRVhUUkFDVEVEKS9saWIvZ2x1ZS5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElD
S19FWFRSQUNURUQpL2xpYi9oYW5kbGVyY2FsbC5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChM
SUJDTElDS19FWFRSQUNURUQpL2xpYi9oYXNoYWxsb2NhdG9yLmNjCj4gK0xJQkNMSUNLX1NSQ1Mt
eSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2luX2Nrc3VtLmMKPiArTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaW50ZWdlcnMuY2MKPiArTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXBhZGRyZXNzLmNjCj4gK0xJQkNM
SUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwZmxvd2lkLmNjCj4gK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwdGFibGUuY2MKPiAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbGV4ZXIuY2MKPiAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWFzdGVyLmNjCj4g
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL21kNS5jYwo+ICtM
SUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9uYW1laW5mby5jYwo+
ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9ub3RpZmllci5j
Ywo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9wYWNrZXQu
Y2MKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvcm91dGVy
LmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRl
cnRocmVhZC5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi9yb3V0ZXJ2aXNpdG9yLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJB
Q1RFRCkvbGliL3N0cmFjY3VtLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VY
VFJBQ1RFRCkvbGliL3N0cmluZy5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19F
WFRSQUNURUQpL2xpYi90YXNrLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VY
VFJBQ1RFRCkvbGliL3RpbWVyLmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VY
VFJBQ1RFRCkvbGliL3RpbWVyc2V0LmNjCj4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNL
X0VYVFJBQ1RFRCkvbGliL3RpbWVzdGFtcC5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJD
TElDS19FWFRSQUNURUQpL2xpYi92YXJpYWJsZWVudi5jYwo+ICtMSUJDTElDS19TUkNTLXkgKz0g
JChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZ0YWJsZS5jYwo+ICtMSUJDTElDS19TUkNTLXkg
Kz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZhZGRyZXNzLmNjCj4gK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwNmZsb3dpZC5jYwo+ICtMSUJDTElD
S19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9zZWxlY3RzZXQuY2MKPiArCj4g
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgQ2xpY2sgZWxlbWVudHMKPiArIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfQlVJTEQpL2Vs
ZW1lbnRzLmNjCj4gKy1pbmNsdWRlICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rCj4gZGlm
ZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g
aW5kZXggMDAwMDAwMC4uMmNkZTViMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9SRUFETUUubWQK
PiBAQCAtMCwwICsxLDUgQEAKPiArQ2xpY2sgZm9yIFVuaWtyYWZ0Cj4gKz09PT09PT09PT09PT09
PT09PT0KPiArCj4gK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0
aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gCj4gK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFp
biB1bmlrcmFmdCByZXBvc2l0b3J5Lgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 12:57:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 12: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 1hYVTu-000435-7a; Wed, 05 Jun 2019 12: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=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYVTt-000430-8K
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 12:57:29 +0000
X-Inumbo-ID: 761e2fa6-8791-11e9-a893-b7d495c2eb89
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 761e2fa6-8791-11e9-a893-b7d495c2eb89;
 Wed, 05 Jun 2019 12:57:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1EEA4104BEF;
 Wed,  5 Jun 2019 14:57:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id TRCVVz615DWb; Wed,  5 Jun 2019 14:57:22 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E856C104BAF
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 14:57:22 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 14:57:22 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, Florian Schmidt
 <Florian.Schmidt@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 01/11] Initial public
 release: basic unikraft files
Thread-Index: AQHVG5xaEFqcM1W7jEyfR3bxuMfftKaM420AgAAhyAA=
Date: Wed, 5 Jun 2019 12:57:22 +0000
Message-ID: <D1A755C9-89EB-40A5-9AE0-FD1097B7BF24@neclab.eu>
References: <20190605124332.25437-1-florian.schmidt@neclab.eu>
 <20190605124332.25437-2-florian.schmidt@neclab.eu>
 <5f7747e4-347a-e543-aa14-fd0a6514f929@neclab.eu>
In-Reply-To: <5f7747e4-347a-e543-aa14-fd0a6514f929@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <D388AB707B5ABF4A9C9FCD572ACE2909@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/CLICK PATCH v3 01/11] Initial public
 release: basic unikraft files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2ltb24sIHRoYW5rcywgSSdsbCBtYWtlIHRob3NlIHR3byBjaGFuZ2VzIG9uIHVwc3RyZWFt
aW5nLg0KDQotLSBGZWxpcGUNCg0K77u/T24gMDUuMDYuMTksIDE0OjU2LCAiU2ltb24gS3Vlbnpl
ciIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PiB3cm90ZToNCg0KICAgIFRoYW5rcyBhIGxvdCBm
b3IgdGhlIGNoYW5nZXMuIExvb2tzIG9rYXkgdG8gbWUuIEkganVzdCBmb3VuZCBieSBjaGFuZ2Ug
DQogICAgdHdvIHNtYWxsZXIgdGhpbmdzLCBidXQgdGhlc2UgY2FuIGJlIGNoYW5nZWQgd2hpbGUg
dXBzdHJlYW1pbmcuIE5vIG5lZWQgDQogICAgZm9yIGEgbmV3IHZlcnNpb24uDQogICAgDQogICAg
UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pg0KICAg
IA0KICAgIE9uIDA1LjA2LjE5IDE0OjQzLCBGbG9yaWFuIFNjaG1pZHQgd3JvdGU6DQogICAgPiBB
ZGQgTWFrZWZpbGUsIE1ha2VmaWxlLnVrLCBDb25maWcudWssIC5naXRpZ25vcmUsIC5tZCBmaWxl
cw0KICAgID4gDQogICAgPiBTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWlj
aUBuZWNsYWIuZXU+DQogICAgPiBTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3Jp
YW4uc2NobWlkdEBuZWNsYWIuZXU+DQogICAgPiAtLS0NCiAgICA+ICAgLmdpdGlnbm9yZSAgICAg
IHwgICA0ICsrDQogICAgPiAgIENPRElOR19TVFlMRS5tZCB8ICAgNCArKw0KICAgID4gICBDT05U
UklCVVRJTkcubWQgfCAgIDQgKysNCiAgICA+ICAgQ09QWUlORy5tZCAgICAgIHwgIDQ3ICsrKysr
KysrKysrKw0KICAgID4gICBDb25maWcudWsgICAgICAgfCAgODcgKysrKysrKysrKysrKysrKysr
KysrKw0KICAgID4gICBNQUlOVEFJTkVSUy5tZCAgfCAgMTAgKysrDQogICAgPiAgIE1ha2VmaWxl
ICAgICAgICB8ICAgOSArKysNCiAgICA+ICAgTWFrZWZpbGUudWsgICAgIHwgMTg3ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KICAgID4gICBSRUFETUUu
bWQgICAgICAgfCAgIDUgKysNCiAgICA+ICAgOSBmaWxlcyBjaGFuZ2VkLCAzNTcgaW5zZXJ0aW9u
cygrKQ0KICAgID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgLmdpdGlnbm9yZQ0KICAgID4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kDQogICAgPiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDT05UUklCVVRJTkcubWQNCiAgICA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQN
CiAgICA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0KICAgID4gICBjcmVhdGUgbW9k
ZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiAgICA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2Vm
aWxlDQogICAgPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51aw0KICAgID4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQogICAgPiANCiAgICA+IGRpZmYgLS1naXQgYS8uZ2l0
aWdub3JlIGIvLmdpdGlnbm9yZQ0KICAgID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICA+IGlu
ZGV4IDAwMDAwMDAuLmE5ZmI3MWINCiAgICA+IC0tLSAvZGV2L251bGwNCiAgICA+ICsrKyBiLy5n
aXRpZ25vcmUNCiAgICA+IEBAIC0wLDAgKzEsNCBAQA0KICAgID4gKy5jb25maWcNCiAgICA+ICsu
Y29uZmlnLm9sZA0KICAgID4gKy4uY29uZmlnLnRtcA0KICAgID4gK2J1aWxkLw0KICAgID4gZGlm
ZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5tZA0KICAgID4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQNCiAgICA+IGluZGV4IDAwMDAwMDAuLjU3MzAwNDENCiAgICA+IC0tLSAv
ZGV2L251bGwNCiAgICA+ICsrKyBiL0NPRElOR19TVFlMRS5tZA0KICAgID4gQEAgLTAsMCArMSw0
IEBADQogICAgPiArQ29kaW5nIFN0eWxlDQogICAgPiArPT09PT09PT09PT09DQogICAgPiArDQog
ICAgPiArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBt
YWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgPiBkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5H
Lm1kIGIvQ09OVFJJQlVUSU5HLm1kDQogICAgPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4g
aW5kZXggMDAwMDAwMC4uNWY1NWVjYQ0KICAgID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIv
Q09OVFJJQlVUSU5HLm1kDQogICAgPiBAQCAtMCwwICsxLDQgQEANCiAgICA+ICtDb250cmlidXRp
bmcgdG8gVW5pa3JhZnQNCiAgICA+ICs9PT09PT09PT09PT09PT09PT09PT09PQ0KICAgID4gKw0K
ICAgID4gK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUg
bWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KICAgID4gZGlmZiAtLWdpdCBhL0NPUFlJTkcubWQg
Yi9DT1BZSU5HLm1kDQogICAgPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4gaW5kZXggMDAw
MDAwMC4uNTJmMzc1Mw0KICAgID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIvQ09QWUlORy5t
ZA0KICAgID4gQEAgLTAsMCArMSw0NyBAQA0KICAgID4gK0xpY2Vuc2UNCiAgICA+ICs9PT09PT09
DQogICAgPiArDQogICAgPiArVW5pa3JhZnQgY2xpY2sgd3JhcHBlcnMNCiAgICA+ICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAgICA+ICsNCiAgICA+ICtUaGlzIHJlcG9zaXRvcnkgY29udGFp
bnMgd3JhcHBlciBjb2RlIHRvIGJ1aWxkIHRoZSBDbGljayBtb2R1bGFyIHJvdXRlciB3aXRoDQog
ICAgPiArVW5pa3JhZnQuIFRoZSB3cmFwcGVyIGNvZGUgaXMgZ2VuZXJhbGx5IHB1Ymxpc2hlZCB1
bmRlciBhIEJTRCAzLWNsYXVzZSBsaWNlbmNlLg0KICAgID4gK2VhY2ggQyBjb2RlIGZpbGUgaW4g
dGhpcyByZXBvc2l0b3J5IHNob3VsZCBkZWNsYXJlIHdobyBpcyB0aGUgY29weXJpZ2h0IG93bmVy
DQogICAgPiArYW5kIHVuZGVyIHdoaWNoIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoZSBjb2RlIGlz
IGxpY2Vuc2VkLiBJZiBzdWNoIGEgbGljZW5jZQ0KICAgID4gK25vdGUgaXMgbWlzc2luZywgdGhl
IGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlIHdpbGwgYXBwbHk6DQogICAgPiArDQogICAgPiAr
CUNvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGVpIEdtYkgsIE5FQyBD
b3Jwb3JhdGlvbi4NCiAgICANCiAgICBXZSBhcmUgYmFzZWQgaW4gIkV1cm9wZSIgOy0pDQogICAg
DQogICAgPiArCSAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICA+
ICsNCiAgICA+ICsJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0DQogICAgPiArCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICAgID4gKwlhcmUgbWV0
Og0KICAgID4gKw0KICAgID4gKwkxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICAgID4gKwkgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICAgPiArCTIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0DQogICAgPiArCSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAgICA+ICsJICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N
CiAgICA+ICsJMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cw0KICAgID4gKwkgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KICAgID4gKwkgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICAg
ID4gKw0KICAgID4gKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCiAgICA+ICsJQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQ0KICAgID4gKwlJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgID4gKwlBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQog
ICAgPiArCUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1INCiAgICA+ICsJQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICA+ICsJU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTDQogICAgPiArCUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQogICAgPiArCUNPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQog
ICAgPiArCUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogICAgPiArCVBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLg0KICAgID4gKw0KICAgID4gK0NsaWNrIHNvdXJjZSBjb2RlDQogICAgPiArLS0tLS0tLS0t
LS0tLS0tLS0tDQogICAgPiArDQogICAgPiArRHVyaW5nIGJ1aWxkaW5nLCB0aGUgYnVpbGQgc3lz
dGVtIHdpbGwgZG93bmxvYWQgdGhlIENsaWNrIG1vZHVsYXIgcm91dGVyIHNvdXJjZQ0KICAgID4g
K1RoaXMgY29kZSBoYXMgYSB2YXJpZXR5IG9mIGxpY2VuY2VzOyBwbGVhc2UgZmluZCBtb3JlIGlu
Zm9ybWF0aW9uIGluIHRoZQ0KICAgID4gK2BMSUNFTlNFYCBmaWxlIGluIENsaWNrJ3Mgcm9vdCBk
aXJlY3RvcnksIG9yIGF0DQogICAgPiAraHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29t
L2tvaGxlci9jbGljay9tYXN0ZXIvTElDRU5TRSAuDQogICAgPiBkaWZmIC0tZ2l0IGEvQ29uZmln
LnVrIGIvQ29uZmlnLnVrDQogICAgPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4gaW5kZXgg
MDAwMDAwMC4uOTZkOTQ2ZQ0KICAgID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIvQ29uZmln
LnVrDQogICAgPiBAQCAtMCwwICsxLDg3IEBADQogICAgPiArIyMjIEludmlzaWJsZSBvcHRpb24g
Zm9yIGRlcGVuZGVuY2llcw0KICAgID4gK2NvbmZpZyBBUFBfREVQRU5ERU5DSUVTDQogICAgPiAr
CWJvb2wNCiAgICA+ICsJZGVmYXVsdCB5DQogICAgPiArDQogICAgPiArbWVudWNvbmZpZyBMSUJD
TElDSw0KICAgID4gKwlib29sICJUaGUgQ2xpY2sgbW9kdWxhciByb3V0ZXIiDQogICAgPiArCXNl
bGVjdCBVS1VOSVNURA0KICAgID4gKwlzZWxlY3QgTElCTkVXTElCDQogICAgPiArCXNlbGVjdCBM
SUJMV0lQDQogICAgPiArCWRlZmF1bHQgeQ0KICAgID4gKw0KICAgID4gK2lmIExJQkNMSUNLDQog
ICAgPiArDQogICAgPiArY29uZmlnIExJQkNMSUNLX01BSU4NCiAgICA+ICsJYm9vbCAiRW5hYmxl
IENsaWNrIG1haW4gZnVuY3Rpb24iDQogICAgPiArCWRlZmF1bHQgbg0KICAgID4gKwloZWxwDQog
ICAgPiArCSAgRGVmaW5lIG1haW4gZnVuY3Rpb24gaW5zdGVhZCBvZiBjbGlja19tYWluIGZ1bmN0
aW9uDQogICAgPiArDQogICAgPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX0FRTQ0KICAgID4gKwli
b29sICJFbmFibGUgQVFNIGVsZW1lbnRzIg0KICAgID4gKwlkZWZhdWx0IHkNCiAgICA+ICsJaGVs
cA0KICAgID4gKwkgIEJ1aWxkIHdpdGggSVAgZWxlbWVudHMNCiAgICA+ICsNCiAgICA+ICtjb25m
aWcgTElCQ0xJQ0tfRUxFTVNfRVRIRVJORVQNCiAgICA+ICsJYm9vbCAiRW5hYmxlIEV0aGVybmV0
IGVsZW1lbnRzIg0KICAgID4gKwlkZWZhdWx0IHkNCiAgICA+ICsJaGVscA0KICAgID4gKwkgIEJ1
aWxkIHdpdGggRXRoZXJuZXQgZWxlbWVudHMNCiAgICA+ICsNCiAgICA+ICtjb25maWcgTElCQ0xJ
Q0tfRUxFTVNfRVRIRVJTV0lUQ0gNCiAgICA+ICsJYm9vbCAiRW5hYmxlIEV0aGVybmV0IHN3aXRj
aCBlbGVtZW50cyINCiAgICA+ICsJZGVmYXVsdCB5DQogICAgPiArCWhlbHANCiAgICA+ICsJICBC
dWlsZCB3aXRoIEV0aGVybmV0IHN3aXRjaCBlbGVtZW50cw0KICAgID4gKw0KICAgID4gK2NvbmZp
ZyBMSUJDTElDS19FTEVNU19JQ01QDQogICAgPiArCWJvb2wgIkVuYWJsZSBJQ01QIGVsZW1lbnRz
Ig0KICAgID4gKwlkZWZhdWx0IHkNCiAgICA+ICsJaGVscA0KICAgID4gKwkgIEJ1aWxkIHdpdGgg
SUNNUCBlbGVtZW50cw0KICAgID4gKw0KICAgID4gK2NvbmZpZyBMSUJDTElDS19FTEVNU19JUA0K
ICAgID4gKwlib29sICJFbmFibGUgSVAgZWxlbWVudHMiDQogICAgPiArCWRlZmF1bHQgeQ0KICAg
ID4gKwloZWxwDQogICAgPiArCSAgQnVpbGQgd2l0aCBhZGFwdGl2ZSBxdWV1ZSBtYW5hZ2VtZW50
IGVsZW1lbnRzDQogICAgPiArDQogICAgPiArY29uZmlnIExJQkNMSUNLX0VMRU1TX1VOSUtSQUZU
DQogICAgPiArCWJvb2wgIkVuYWJsZSBVbmlrcmFmdCBuZXR3b3JraW5nIg0KICAgID4gKwlkZWZh
dWx0IHkNCiAgICA+ICsJaGVscA0KICAgID4gKwkgIEJ1aWxkIHdpdGggVW5pa3JhZnQgRnJvbURl
dmljZSBhbmQgVG9EZXZpY2UgZWxlbWVudHMNCiAgICA+ICsNCiAgICA+ICtjb25maWcgTElCQ0xJ
Q0tfRUxFTVNfTE9DQUwNCiAgICA+ICsJYm9vbCAiRW5hYmxlIGxvY2FsIGVsZW1lbnRzIg0KICAg
ID4gKwlkZWZhdWx0IHkNCiAgICA+ICsJaGVscA0KICAgID4gKwkgIEJ1aWxkIHdpdGggbG9jYWwg
ZWxlbWVudHMNCiAgICA+ICsNCiAgICA+ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfU0lNUExFDQog
ICAgPiArCWJvb2wgIkVuYWJsZSBzaW1wbGUgZWxlbWVudHMiDQogICAgPiArCWRlZmF1bHQgeQ0K
ICAgID4gKwloZWxwDQogICAgPiArCSAgQnVpbGQgd2l0aCBzaW1wbGUgZWxlbWVudHMNCiAgICA+
ICsNCiAgICA+ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfU1RBTkRBUkQNCiAgICA+ICsJYm9vbCAi
RW5hYmxlIHN0YW5kYXJkIGVsZW1lbnRzIg0KICAgID4gKwlkZWZhdWx0IHkNCiAgICA+ICsJaGVs
cA0KICAgID4gKwkgIEJ1aWxkIHdpdGggc3RhbmRhcmQgZWxlbWVudHMNCiAgICA+ICsNCiAgICA+
ICtjb25maWcgTElCQ0xJQ0tfRUxFTVNfVENQVURQDQogICAgPiArCWJvb2wgIkVuYWJsZSBUQ1Av
VURQIGVsZW1lbnRzIg0KICAgID4gKwlkZWZhdWx0IHkNCiAgICA+ICsJaGVscA0KICAgID4gKwkg
IEJ1aWxkIHdpdGggVENQL1VEUCBlbGVtZW50cw0KICAgID4gKw0KICAgID4gK2NvbmZpZyBMSUJD
TElDS19FTEVNU19USFJFQURTDQogICAgPiArCWJvb2wgIkVuYWJsZSBtdWx0aS10aHJlYWRpbmcg
ZWxlbWVudHMiDQogICAgPiArCWRlZmF1bHQgeQ0KICAgID4gKwloZWxwDQogICAgPiArCSAgQnVp
bGQgd2l0aCBtdWx0aS10aHJlYWRpbmcgZWxlbWVudHMNCiAgICA+ICsNCiAgICA+ICtlbmRpZg0K
ICAgID4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQNCiAgICA+
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgPiBpbmRleCAwMDAwMDAwLi5iMTQ4MmM3DQogICAg
PiAtLS0gL2Rldi9udWxsDQogICAgPiArKysgYi9NQUlOVEFJTkVSUy5tZA0KICAgID4gQEAgLTAs
MCArMSwxMCBAQA0KICAgID4gK01haW50YWluZXJzIExpc3QNCiAgICA+ICs9PT09PT09PT09PT09
PT09DQogICAgPiArDQogICAgPiArRm9yIG5vdGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3Jt
YXRpb24sIHBsZWFzZSByZWZlciB0byBgTUFJTlRBSU5FUlMubWRgIGluDQogICAgPiArdGhlIG1h
aW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICA+ICsNCiAgICA+ICsJQ0xJQ0stVU5JS1JBRlQN
CiAgICA+ICsJTToJRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KICAgID4g
KwlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZw0KICAgID4gKwlGOiAqDQogICAgPiBkaWZm
IC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQ0KICAgID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN
CiAgICA+IGluZGV4IDAwMDAwMDAuLjY0N2MzYmENCiAgICA+IC0tLSAvZGV2L251bGwNCiAgICA+
ICsrKyBiL01ha2VmaWxlDQogICAgPiBAQCAtMCwwICsxLDkgQEANCiAgICA+ICtVS19ST09UID89
ICQoUFdEKS8uLi8uLi91bmlrcmFmdA0KICAgID4gK1VLX0xJQlMgPz0gJChQV0QpLy4uLy4uL2xp
YnMNCiAgICA+ICtMSUJTIDo9ICQoVUtfTElCUykvbmV3bGliOiQoVUtfTElCUykvbHdpcA0KICAg
ID4gKw0KICAgID4gK2FsbDoNCiAgICA+ICsJQCQoTUFLRSkgLUMgJChVS19ST09UKSBBPSQoUFdE
KSBMPSQoTElCUykNCiAgICA+ICsNCiAgICA+ICskKE1BS0VDTURHT0FMUyk6DQogICAgPiArCUAk
KE1BS0UpIC1DICQoVUtfUk9PVCkgQT0kKFBXRCkgTD0kKExJQlMpICQoTUFLRUNNREdPQUxTKQ0K
ICAgID4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICA+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0DQogICAgPiBpbmRleCAwMDAwMDAwLi45ODg1NTIwDQogICAgPiAtLS0g
L2Rldi9udWxsDQogICAgPiArKysgYi9NYWtlZmlsZS51aw0KICAgID4gQEAgLTAsMCArMSwxODcg
QEANCiAgICA+ICsjDQogICAgPiArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9y
aWVzIEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uDQogICAgPiArIyAgICAgICAgICAgICAg
ICAgICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICAgID4gKyMNCiAgICA+ICsjICBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQNCiAgICA+ICsjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAgICA+ICsjICBhcmUgbWV0Og0KICAgID4gKyMNCiAg
ICA+ICsjICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodA0KICAgID4gKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAgICA+ICsjICAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dA0KICAgID4gKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCiAgICA+ICsjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICAg
ID4gKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMNCiAgICA+ICsjICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KICAgID4gKyMgICAgIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQog
ICAgPiArIw0KICAgID4gKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAgID4gKyMgIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUNCiAgICA+ICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgID4gKyMgIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUNCiAgICA+ICsjICBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAgPiArIyAgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAg
ICA+ICsjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCiAgICA+ICsjICBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KICAgID4g
KyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpDQogICAgPiArIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCiAgICA+ICsj
ICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgICA+ICsjDQogICAgPiArIyAgVEhJUyBI
RUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCiAgICA+
ICsjDQogICAgPiArDQogICAgPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICA+ICsjIENo
ZWNrIHJlcXVpcmVtZW50czogQ2xpY2sgcmVxdWlyZXMgbmV0ZGV2IGFjY2Vzcywgc28gTFdJUCBt
dXN0IG5vdCBhdHRhY2ggdGhlbQ0KICAgID4gKyMgU2FkbHksIGtjb25maWcgZG9lc24ndCBzdXBw
b3J0IGFuICJ1bnNlbGVjdCIgb3B0aW9uLCBzbyB0aGUgbmV4dCBiZXN0IHRoaW5nDQogICAgPiAr
IyB3ZSBjYW4gZG8gaXMgY2F0Y2ggdGhpcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb24gaGVyZSBhbmQg
dGhyb3cgYW4gZXJyb3Igd2l0aA0KICAgID4gKyMgYW4gZXhwbGFuYXRpb24gd2hhdCB0byBkby4N
CiAgICA+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4gK2lmZXEgKCQoQ09ORklHX0xX
SVBfQVVUT0lGQUNFKSx5KQ0KICAgID4gKyQoZXJyb3IgQ2xpY2sgY2Fubm90IGJlIGJ1aWx0IHdp
dGggTFdJUCBvcHRpb24gIkF1dG9tYXRpY2FsbHkgYXR0YWNoIG5ldGlmcyIhIFBsZWFzZSBkaXNh
YmxlKQ0KICAgID4gK2VuZGlmDQogICAgPiArDQogICAgPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMNCiAgICA+ICsjIFJlZ2lzdGVyIHdpdGggdW5pa3JhZnQNCiAgICA+ICsjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KICAgID4gKyQoZXZhbCAkKGNhbGwgYWRkbGliLGxpYmNsaWNrKSkNCiAgICA+
ICsNCiAgICA+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4gKyMgU291cmNlcw0KICAg
ID4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgPiArTElCQ0xJQ0tfQ09NTUlUX0hBU0g9
YTUzODQ4MzVhNmNhYzEwZjhkNDRkYTRlZWVhOGVhYThmOGU2YTBjMg0KICAgID4gK0xJQkNMSUNL
X1VSTD1odHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20va29obGVyL2NsaWNrL3ppcC8kKExJQkNM
SUNLX0NPTU1JVF9IQVNIKQ0KICAgID4gKyQoZXZhbCAkKGNhbGwgZmV0Y2hhcyxsaWJjbGljaywk
KExJQkNMSUNLX1VSTCksY2xpY2stJChMSUJDTElDS19DT01NSVRfSEFTSCkuemlwKSkNCiAgICA+
ICtMSUJDTElDS19QQVRDSERJUj0kKExJQkNMSUNLX0JBU0UpL3BhdGNoZXMNCiAgICA+ICskKGV2
YWwgJChjYWxsIHBhdGNoLGxpYmNsaWNrLCQoTElCQ0xJQ0tfUEFUQ0hESVIpLGNsaWNrLSQoTElC
Q0xJQ0tfQ09NTUlUX0hBU0gpKSkNCiAgICA+ICsNCiAgICA+ICsjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIw0KICAgID4gKyMgSGVscGVycw0KICAgID4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog
ICAgPiArTElCQ0xJQ0tfRVhUUkFDVEVEPSQoTElCQ0xJQ0tfT1JJR0lOKS9jbGljay0kKExJQkNM
SUNLX0NPTU1JVF9IQVNIKQ0KICAgID4gK0xJQkNMSUNLX0VMRU1FTlRTX0RJUj0kKExJQkNMSUNL
X0VYVFJBQ1RFRCkvZWxlbWVudHMNCiAgICA+ICtMSUJDTElDS19CVUlMRFRPT0w9JChMSUJDTElD
S19FWFRSQUNURUQpL2Jpbi9jbGljay1idWlsZHRvb2wNCiAgICA+ICtMSUJDTElDS19FTEVNX0RJ
UlM9YXFtIGV0aGVybmV0IGV0aGVyc3dpdGNoIGljbXAgaXAgdW5pa3JhZnQgXA0KICAgID4gKwkJ
ICAgbG9jYWwgc2ltcGxlIHN0YW5kYXJkIHRjcHVkcCB0aHJlYWRzDQogICAgPiArDQogICAgPiAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICA+ICsjIENvbmZpZyBNZW51IC0gRmlsdGVyIHdo
aWNoIGVsZW1lbnQgY2F0ZWdvcmllcyBhY3R1YWxseSBnZXQgYnVpbHQNCiAgICA+ICsjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIw0KICAgID4gK0xJQkNMSUNLX0VMRU1fRElSU19VPSQoY2FsbCB1Yywk
KExJQkNMSUNLX0VMRU1fRElSUykpDQogICAgPiArTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJT
X1UgOj0gJChmb3JlYWNoIFYsICQoTElCQ0xJQ0tfRUxFTV9ESVJTX1UpLCBcDQogICAgPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpZiAkKGZpbHRlciB5LCQoQ09ORklHX0xJ
QkNMSUNLX0VMRU1TXyRWKSksJFYpKQ0KICAgID4gK0xJQkNMSUNLX0ZJTFRFUkVEX0VMRU1fRElS
Uz0kKGNhbGwgbGMsJChMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlNfVSkpDQogICAgPiArDQog
ICAgPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICA+ICsjIEFwcC1zcGVjaWZpYyBUYXJn
ZXRzDQogICAgPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICA+ICsNCiAgICA+ICsjIFJ1
biBDbGljaydzIGNvbmZpZ3VyZSBzY3JpcHQgdG8gZ2VuZXJhdGUgdG9vbHMgbmVlZGVkIGJ5IGZ1
cnRoZXIgcHJlcGFyZSB0YXJnZXRzDQogICAgPiArJChMSUJDTElDS19CVUlMRCkvLmNvbmZpZ3Vy
ZWQ6ICQoTElCQ0xJQ0tfQlVJTEQpLy5jcGZyb210b2RldnMNCiAgICA+ICsJJChjYWxsIHZlcmJv
c2VfY21kLENPTkZJR1VSRSxsaWJjbGljazogJChub3RkaXIgJEApLFwNCiAgICA+ICsJICAgICAg
IGNkICQoTElCQ0xJQ0tfRVhUUkFDVEVEKSAmJiAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1taW5pb3Mg
LS13aXRoLXhlbj0kKExJQkNMSUNLX0JVSUxEKSAtLXdpdGgtbWluaW9zPSQoTElCQ0xJQ0tfQlVJ
TEQpIC0td2l0aC1uZXdsaWI9JChMSUJDTElDS19CVUlMRCkgLS13aXRoLWx3aXA9JChMSUJDTElD
S19CVUlMRCkgJiYgXA0KICAgID4gKwkgICAgICAgJChUT1VDSCkgJEApDQogICAgPiArDQogICAg
PiArIyBHZW5lcmF0ZSBlbGVtZW50IGJ1aWxkIHJ1bGVzIHVzaW5nIGNsaWNrLWJ1aWxkdG9vbA0K
ICAgID4gKyQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c21rOiAkKExJQkNMSUNLX0JVSUxEKS8u
Y29uZmlndXJlZCAkKFVLX0NPTkZJR19PVVQpDQogICAgPiArCSQoY2FsbCB2ZXJib3NlX2NtZCxF
TEVNTUssbGliY2xpY2s6ICQobm90ZGlyICRAKSxcDQogICAgPiArCSAgICAgICBjZCAkKExJQkNM
SUNLX0VMRU1FTlRTX0RJUikgJiYgZWNobyAiJChMSUJDTElDS19GSUxURVJFRF9FTEVNX0RJUlMp
IiB8ICQoTElCQ0xJQ0tfQlVJTERUT09MKSBmaW5kZWxlbSAtciB1bmlrcmFmdCAtWCAkKExJQkNM
SUNLX0JVSUxEKS9lbGVtZW50cy5leGNsdWRlIHwgZ3JlcCAtRSAiXlteI10iIHwgYXdrICd7cHJp
bnQgIkxJQkNMSUNLX1NSQ1MteSArPSAkJChMSUJDTElDS19FWFRSQUNURUQpL2VsZW1lbnRzLyIg
JCQxfScgPiAkQCkNCiAgICA+ICsNCiAgICA+ICsjIEdlbmVyYXRlIGVsZW1lbnRzLmNjIGFuZCBh
ZGQgaXQgdG8gdGhlIGJ1aWxkIGxpc3QNCiAgICA+ICskKExJQkNMSUNLX0JVSUxEKS9lbGVtZW50
cy5jYzogJChMSUJDTElDS19CVUlMRCkvLmVsZW1lbnRzbWsNCiAgICA+ICsJJChjYWxsIHZlcmJv
c2VfY21kLEVMRU1DQyxsaWJjbGljazogJChub3RkaXIgJEApLFwNCiAgICA+ICsJICAgICAgIGVj
aG8gIiQoTElCQ0xJQ0tfRklMVEVSRURfRUxFTV9ESVJTKSIgfCAkKExJQkNMSUNLX0JVSUxEVE9P
TCkgZmluZGVsZW0gLXIgdW5pa3JhZnQgLXAgJChMSUJDTElDS19FTEVNRU5UU19ESVIpIC1YICQo
TElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmV4Y2x1ZGUgPiAkKExJQkNMSUNLX0JVSUxEKS8uZWxl
bWVudHNjb25mICYmIFwNCiAgICA+ICsJICAgICAgICQoTElCQ0xJQ0tfQlVJTERUT09MKSBlbGVt
MmV4cG9ydCA8ICQoTElCQ0xJQ0tfQlVJTEQpLy5lbGVtZW50c2NvbmYgPiAkKExJQkNMSUNLX0JV
SUxEKS9lbGVtZW50cy5jYykNCiAgICA+ICsNCiAgICA+ICskKExJQkNMSUNLX0JVSUxEKS8uY3Bm
cm9tdG9kZXZzOiAkKExJQkNMSUNLX0JVSUxEKS8ub3JpZ2luDQogICAgPiArCSQoY2FsbCB2ZXJi
b3NlX2NtZCxDUCxsaWJjbGljazogJChub3RkaXIgJEApLFwNCiAgICANCiAgICBNYXliZSB5b3Ug
d2FudCB0byBjYWxsIGl0IGBFTEVNQ1BgIGluc3RlYWQgb2YganVzdCBgQ1BgLiBXZSBhcmUgY29w
eWluZyANCiAgICBVbmlrcmFmdCBlbGVtZW50cyBhbmQgaXQgd291bGQgYmUgaW5saW5lIHdpdGgg
dGhlIG90aGVyIHR3byBjb21tYW5kcy4gDQogICAgSG93ZXZlciwgdGhpcyBpcyBtaW5vciB0aGlu
Zy4gSSBhbSBva2F5IHdpdGggYm90aC4NCiAgICANCiAgICA+ICsJJChNS0RJUikgLXAgJChMSUJD
TElDS19PUklHSU4pL2NsaWNrLSQoTElCQ0xJQ0tfQ09NTUlUX0hBU0gpL2VsZW1lbnRzICYmIFwN
CiAgICA+ICsJJChDUCkgLXIgJChMSUJDTElDS19CQVNFKS91bmlrcmFmdCAkKExJQkNMSUNLX09S
SUdJTikvY2xpY2stJChMSUJDTElDS19DT01NSVRfSEFTSCkvZWxlbWVudHMvICYmIFwNCiAgICA+
ICsJdG91Y2ggJEApDQogICAgPiArDQogICAgPiAraWZuZXEgKCQoQ09ORklHX0xJQkNMSUNLX0VM
RU1TX1VOSUtSQUZUKSwpDQogICAgPiArJChMSUJDTElDS19CVUlMRCkvLnByZXBhcmVkOiAkKExJ
QkNMSUNLX0JVSUxEKS8uY3Bmcm9tdG9kZXZzICQoTElCQ0xJQ0tfQlVJTEQpL2VsZW1lbnRzLmNj
DQogICAgPiArZWxzZQ0KICAgID4gKyQoTElCQ0xJQ0tfQlVJTEQpLy5wcmVwYXJlZDogJChMSUJD
TElDS19CVUlMRCkvZWxlbWVudHMuY2MNCiAgICA+ICtlbmRpZg0KICAgID4gKw0KICAgID4gK1VL
X1BSRVBBUkUgKz0gJChMSUJDTElDS19CVUlMRCkvLnByZXBhcmVkDQogICAgPiArDQogICAgPiAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICA+ICsjIEFwcCBpbmNsdWRlcywgY29tcGlsZSBm
bGFncw0KICAgID4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgPiArTElCQ0xJQ0tfQ0lO
Q0xVREVTICAgKz0gLUkkKExJQkNMSUNLX0JBU0UpL2luY2x1ZGUgICAgICAgIFwNCiAgICA+ICsJ
CSAgICAgICAgLUkkKExJQkNMSUNLX0VYVFJBQ1RFRCkJICAgICBcDQogICAgPiArCQkJLUkkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvaW5jbHVkZSBcDQogICAgPiArCQkJLUkkKExJQkxXSVBfTFdJUF9T
UkNTKS9pbmNsdWRlL3Bvc2l4DQogICAgPiArTElCQ0xJQ0tfQ1hYSU5DTFVERVMgKz0gLUkkKExJ
QkNMSUNLX0JBU0UpL2luY2x1ZGUgICAgICAgIFwNCiAgICA+ICsJCSAgICAgICAgLUkkKExJQkNM
SUNLX0VYVFJBQ1RFRCkgICAgICAgICAgIFwNCiAgICA+ICsJCQktSSQoTElCQ0xJQ0tfRVhUUkFD
VEVEKS9pbmNsdWRlIFwNCiAgICA+ICsJCQktSSQoTElCTFdJUF9MV0lQX1NSQ1MpL2luY2x1ZGUv
cG9zaXgNCiAgICA+ICsNCiAgICA+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4gKyMg
R2xvYmFsIGZsYWdzDQogICAgPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICA+ICtMSUJD
TElDS19DRkxBR1MteSAgICAgICArPSAtRExXSVBfVElNRVZBTF9QUklWQVRFPTAgLURDTElDS19V
U0VSTEVWRUwNCiAgICA+ICtMSUJDTElDS19DWFhGTEFHUy15ICAgICArPSAtRExXSVBfVElNRVZB
TF9QUklWQVRFPTAgLURDTElDS19VU0VSTEVWRUwgLURIQVZFX0lQNg0KICAgID4gK0xJQkNMSUNL
X0NYWEZMQUdTICAgICAgICs9IC1mbm8tZXhjZXB0aW9ucyAtZm5vLXJ0dGkgLXN0ZD1jKysxMQ0K
ICAgID4gKw0KICAgID4gKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWls
ZCBwcm9jZXNzIGxvb2sgbmVhdGVyDQogICAgPiArTElCQ0xJQ0tfU1VQUFJFU1NfRkxBR1MgOj0g
LVduby1zdHJpY3QtYWxpYXNpbmcNCiAgICA+ICtMSUJDTElDS19DRkxBR1MteSArPSAkKExJQkNM
SUNLX1NVUFBSRVNTX0ZMQUdTKQ0KICAgID4gK0xJQkNMSUNLX0NYWEZMQUdTLXkgKz0gJChMSUJD
TElDS19TVVBQUkVTU19GTEFHUykNCiAgICA+ICsNCiAgICA+ICsjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIw0KICAgID4gKyMgVW5pa3JhZnQgPC0+IENsaWNrIGdsdWUgY29kZQ0KICAgID4gKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjDQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tf
QkFTRSkvY2xpY2suY2MNCiAgICA+ICsNCiAgICA+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
ICAgID4gKyMgQ2xpY2sgc291cmNlcw0KICAgID4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog
ICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYXJjaGl2
ZS5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGli
L2FyZ3MuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9hdG9taWMuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRS
QUNURUQpL2xpYi9iaWdoYXNobWFwX2FyZW5hLmNjDQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9
ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvYml0dmVjdG9yLmNjDQogICAgPiArTElCQ0xJQ0tf
U1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvY29uZnBhcnNlLmNjDQogICAgPiAr
TElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvY3JjMzIuYw0KICAg
ID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2RyaXZlci5j
Yw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2Vs
ZW1lbnQuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQp
L2xpYi9lbGVtZmlsdGVyLmNjDQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tf
RVhUUkFDVEVEKS9saWIvZXJyb3IuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJD
TElDS19FWFRSQUNURUQpL2xpYi9ldGhlcmFkZHJlc3MuY2MNCiAgICA+ICtMSUJDTElDS19TUkNT
LXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9nYXByYXRlLmNjDQogICAgPiArTElCQ0xJ
Q0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvZ2x1ZS5jYw0KICAgID4gK0xJ
QkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2hhbmRsZXJjYWxsLmNj
DQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaGFz
aGFsbG9jYXRvci5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJB
Q1RFRCkvbGliL2luX2Nrc3VtLmMNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElD
S19FWFRSQUNURUQpL2xpYi9pbnRlZ2Vycy5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAk
KExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwYWRkcmVzcy5jYw0KICAgID4gK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2lwZmxvd2lkLmNjDQogICAgPiArTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvaXB0YWJsZS5jYw0KICAg
ID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL2xleGVyLmNj
DQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvbWFz
dGVyLmNjDQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9s
aWIvbWQ1LmNjDQogICAgPiArTElCQ0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVE
KS9saWIvbmFtZWluZm8uY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19F
WFRSQUNURUQpL2xpYi9ub3RpZmllci5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJ
QkNMSUNLX0VYVFJBQ1RFRCkvbGliL3BhY2tldC5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSAr
PSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlci5jYw0KICAgID4gK0xJQkNMSUNLX1NS
Q1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlcnRocmVhZC5jYw0KICAgID4g
K0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3JvdXRlcnZpc2l0
b3IuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xp
Yi9zdHJhY2N1bS5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJB
Q1RFRCkvbGliL3N0cmluZy5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNL
X0VYVFJBQ1RFRCkvbGliL3Rhc2suY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJD
TElDS19FWFRSQUNURUQpL2xpYi90aW1lci5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAk
KExJQkNMSUNLX0VYVFJBQ1RFRCkvbGliL3RpbWVyc2V0LmNjDQogICAgPiArTElCQ0xJQ0tfU1JD
Uy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdGltZXN0YW1wLmNjDQogICAgPiArTElC
Q0xJQ0tfU1JDUy15ICs9ICQoTElCQ0xJQ0tfRVhUUkFDVEVEKS9saWIvdmFyaWFibGVlbnYuY2MN
CiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19FWFRSQUNURUQpL2xpYi9pcDZ0
YWJsZS5jYw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNLX0VYVFJBQ1RFRCkv
bGliL2lwNmFkZHJlc3MuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChMSUJDTElDS19F
WFRSQUNURUQpL2xpYi9pcDZmbG93aWQuY2MNCiAgICA+ICtMSUJDTElDS19TUkNTLXkgKz0gJChM
SUJDTElDS19FWFRSQUNURUQpL2xpYi9zZWxlY3RzZXQuY2MNCiAgICA+ICsNCiAgICA+ICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4gKyMgQ2xpY2sgZWxlbWVudHMNCiAgICA+ICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgID4gK0xJQkNMSUNLX1NSQ1MteSArPSAkKExJQkNMSUNL
X0JVSUxEKS9lbGVtZW50cy5jYw0KICAgID4gKy1pbmNsdWRlICQoTElCQ0xJQ0tfQlVJTEQpLy5l
bGVtZW50c21rDQogICAgPiBkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kDQogICAg
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4gaW5kZXggMDAwMDAwMC4uMmNkZTViMA0KICAg
ID4gLS0tIC9kZXYvbnVsbA0KICAgID4gKysrIGIvUkVBRE1FLm1kDQogICAgPiBAQCAtMCwwICsx
LDUgQEANCiAgICA+ICtDbGljayBmb3IgVW5pa3JhZnQNCiAgICA+ICs9PT09PT09PT09PT09PT09
PT09DQogICAgPiArDQogICAgPiArUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3
ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2ANCiAgICA+ICtzdWJkaXJlY3Rv
cnkgb2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICA+IA0KICAgIA0KDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 13:05:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 13:05: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 1hYVba-000582-Gd; Wed, 05 Jun 2019 13:05:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=7Fhb=UE=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYVbZ-00057v-Ps
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 13:05:25 +0000
X-Inumbo-ID: 94880855-8792-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 94880855-8792-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 13:05:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8BAE3F2036;
 Wed,  5 Jun 2019 15:05:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id i_LfVS9xLMYa; Wed,  5 Jun 2019 15:05:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5BE97F20A9;
 Wed,  5 Jun 2019 15:05:19 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 5 Jun 2019 15:05:19 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH] doc: add extended permissions
 to the logo license
Thread-Index: AQHVG4GTEa61QmAYZEOLV4k7iC39eKaNB6IA
Date: Wed, 5 Jun 2019 13:05:18 +0000
Message-ID: <5CE42297-27E3-4E26-BC7A-3C5B0EE6B06B@neclab.eu>
References: <20190605093138.27725-1-yuri.volchkov@neclab.eu>
In-Reply-To: <20190605093138.27725-1-yuri.volchkov@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <45F835AA9E7E8D49AA26DDCD6A68E6DA@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] doc: add extended permissions
 to the logo license
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Alina Volchkova <alina@volch.art>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgWXVyaSwgQWxpbmEsIHRoYW5rcyBmb3IgdGhlIHBhdGNoIChhbmQgbG9nbyEpLg0KDQpSZXZp
ZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KDQrvu79PbiAw
NS4wNi4xOSwgMTE6MzIsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9mIFl1cmkgVm9sY2hrb3Yi
IDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhhbGYgb2Yg
eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+IHdyb3RlOg0KDQogICAgRnJvbTogQWxpbmEgVm9sY2hr
b3ZhIDxhbGluYUB2b2xjaC5hcnQ+DQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogQWxpbmEgVm9s
Y2hrb3ZhIDxhbGluYUB2b2xjaC5hcnQ+DQogICAgLS0tDQogICAgIGRvYy9sb2dvL0NPUFlJTkcu
bWQgICAgICAgICAgICAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysNCiAg
ICAgZG9jL2xvZ28ve0NPUFlJTkcudHh0ID0+IGNjLWJ5LXNhLTQuMC50eHR9IHwgIDANCiAgICAg
MiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBkb2MvbG9nby9DT1BZSU5HLm1kDQogICAgIHJlbmFtZSBkb2MvbG9nby97Q09QWUlORy50eHQg
PT4gY2MtYnktc2EtNC4wLnR4dH0gKDEwMCUpDQogICAgDQogICAgZGlmZiAtLWdpdCBhL2RvYy9s
b2dvL0NPUFlJTkcubWQgYi9kb2MvbG9nby9DT1BZSU5HLm1kDQogICAgbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCiAgICBpbmRleCAwMDAwMDAwMC4uMGI2NTM3Y2UNCiAgICAtLS0gL2Rldi9udWxsDQog
ICAgKysrIGIvZG9jL2xvZ28vQ09QWUlORy5tZA0KICAgIEBAIC0wLDAgKzEsMzkgQEANCiAgICAr
VXNhZ2Ugb2YgVW5pa3JhZnQgTG9nbyBhbmQgTWFzY290IEltYWdlcw0KICAgICs9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgKw0KICAgICtUaGUgVW5pa3JhZnQg
bG9nbyBhbmQgbWFzY290IGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciBDQyBCWS1TQSA0LjAuIEZl
ZWwgZnJlZSB0bw0KICAgICt1c2UgdGhlIGltYWdlcyBvbiB5b3VyIGJsb2csIGFzIHdhbGxwYXBl
ciwgZm9yIGZ1biBhbmQgdGhlIGxpa2UsIGJ1dCB5b3UgbXVzdA0KICAgICtsaW5rIHRvIHVuaWty
YWZ0Lm9yZyBvciB4ZW5wcm9qZWN0Lm9yZw0KICAgICsoZS5nLiwgYGh0dHBzOi8veGVucHJvamVj
dC5vcmcvZGV2ZWxvcGVycy90ZWFtcy91bmlrcmFmdC9gKS4NCiAgICArQ3JlYXRpdmUgQ29tbW9u
cyBCWS1TQSA0LjAgYWxsb3dzIHlvdSB0bw0KICAgICsNCiAgICArIC0gU2hhcmU6IENvcHkgYW5k
IHJlZGlzdHJpYnV0ZSB0aGUgbWF0ZXJpYWwgaW4gYW55IG1lZGl1bSBvciBmb3JtYXQNCiAgICAr
IC0gQWRhcHQ6IFJlbWl4LCB0cmFuc2Zvcm0sIGFuZCBidWlsZCB1cG9uIHRoZSBtYXRlcmlhbA0K
ICAgICsNCiAgICArZm9yIGFueSBwdXJwb3NlLCBldmVuIGNvbW1lcmNpYWxseSwgdW5kZXIgdGhl
IGZvbGxvd2luZyBjb25kaXRpb246DQogICAgKw0KICAgICsgLSBBdHRyaWJ1dGlvbjogWW91IGNh
biB1c2UgdGhlIGltYWdlcyBhbmQgbWF0ZXJpYWwgd2l0aG91dCBhdHRyaWJ1dGlvbiB3aGVuDQog
ICAgKyAgIHVzZWQgaW4gYSBjb250ZXh0IHRoYXQgcmVmZXJzIHRvIHRoZSBVbmlrcmFmdCBwcm9q
ZWN0LCB1bmlrcmFmdC5vcmcsIG9yDQogICAgKyAgIHhlbnByb2plY3Qub3JnIChlLmcuLCBpbiBh
IGJsb2cgcG9zdCBvciBhcnRpY2xlIGFib3V0IHRoZSBVbmlrcmFmdCBwcm9qZWN0LA0KICAgICsg
ICBhIFVuaWtyYWZ0IEhhY2thdGhvbiwgYSBVbmlrcmFmdCBVc2VyIEdyb3VwIG1lZXRpbmcpLiBX
aGVyZSB0aGUgY29udGV4dCBpcw0KICAgICsgICBub3QgY2xlYXIsIGF0dHJpYnV0aW9uIG11c3Qg
YmUgbWFkZSB0byB1bmlrcmFmdC5vcmcgb3IgeGVucHJvamVjdC5vcmcuDQogICAgKw0KICAgICsg
ICBFeGFtcGxlcyBvZiBjbGVhciBjb250ZXh0IGFyZToNCiAgICArICAgLSBBIHRyYWluaW5nIGNv
dXJzZSBlbnRpdGxlZCDigJxIb3cgdG8gdXNlIFVuaWtyYWZ0IHRvIGJ1aWxkIGEgVW5pa2VybmVs
4oCdDQogICAgKyAgIC0gQSBtb250aGx5IGpvdXJuYWwgY2FsbGVkIOKAnFVuaWtyYWZ0IEJ1aWxk
ZXIgTmV3c+KAnSBkZXNjcmliaW5nIGhvdyB5b3UgdXNlIHRoZQ0KICAgICsgICAgIFVuaWtyYWZ0
IGZyYW1ld29yaw0KICAgICsgICAtIEEgYmxvZyBwb3N0IG9yIGFydGljbGUgYWJvdXQgVW5pa3Jh
ZnQNCiAgICArICAgLSBBcyBhdmF0YXIgZm9yIGEgc29jaWFsIG1lZGlhIGFjY291bnQgd2l0aCBh
IHJlZmVyZW5jZSB0byB0aGUgVW5pa3JhZnQNCiAgICArICAgICBwcm9qZWN0IGluIHRoZSBwcm9m
aWxlIG5hbWUgb3IgaW4gdGhlIHByb2ZpbGUgZGVzY3JpcHRpb24NCiAgICArICAgLSBHaXZlYXdh
eXMgb2YgVW5pa3JhZnQgYnV0dG9ucywgc3RpY2tlcnMsIG11Z3MsIGV0Yy4gYXQgYSBVbmlrcmFm
dCBwcm9qZWN0DQogICAgKyAgICAgZXZlbnQgb3IgYSBYZW5Qcm9qZWN0IGV2ZW50DQogICAgKw0K
ICAgICsgICBFeGFtcGxlcyB3aGVyZSB0aGUgY29udGV4dCBpcyBub3QgY2xlYXI6DQogICAgKyAg
IC0gQSBmcmVlbHkgZGlzdHJpYnV0ZWQgVW5pa3JhZnQgd2FsbHBhcGVyIG9yIHRoZW1lDQogICAg
KyAgIC0gR2l2ZWF3YXkgb2YgYSBVbmlrcmFmdCBidXR0b24sIHN0aWNrZXIsIG11ZywgZXRjLiBh
dCBhIGtpZHMgZXZlbnQNCiAgICArDQogICAgK1RoZSBVbmlrcmFmdCBsb2dvIGFuZCBtYXNjb3Qg
d2FzIG9yaWdpbmFsbHkgY3JlYXRlZCBieSBBbGluYSBWb2xjaGtvdmEuIFNoZQ0KICAgICtvZmZl
cmVkIGl0IGZyZWVseSB0byB0aGUgVW5pa3JhZnQgcHJvamVjdCB0byBiZSB1c2VkIGFzIHByb2pl
Y3QgbG9nbyBhbmQgbWFzY290Lg0KICAgICtBcyBsb25nIGFzIGhlciB3b3JrIGFuZCBpdHMgZGVy
aXZhdGVzIGFyZSBpbiB1c2UgYnkgdGhlIHByb2plY3QsIHRoZSBwcm9qZWN0DQogICAgK3Nob3Vs
ZCBtYWtlIGFuIHB1YmxpYyBhY2tub3dsZWRnZSBvZiBoZXIgYXV0aG9yc2hpcCAoZm9yIGV4YW1w
bGUgb24gdW5pa3JhZnQub3JnDQogICAgK2FuZCBpbiB0aGUgcmVwb3NpdG9yeSBjb250YWluaW5n
IHRoZSBsb2dvKS4NCiAgICBkaWZmIC0tZ2l0IGEvZG9jL2xvZ28vQ09QWUlORy50eHQgYi9kb2Mv
bG9nby9jYy1ieS1zYS00LjAudHh0DQogICAgc2ltaWxhcml0eSBpbmRleCAxMDAlDQogICAgcmVu
YW1lIGZyb20gZG9jL2xvZ28vQ09QWUlORy50eHQNCiAgICByZW5hbWUgdG8gZG9jL2xvZ28vY2Mt
Ynktc2EtNC4wLnR4dA0KICAgIC0tIA0KICAgIDIuMTkuMg0KICAgIA0KICAgIA0KICAgIF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0K
ICAgIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWwNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 13:35:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 13:35: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 1hYW4o-0000Db-4R; Wed, 05 Jun 2019 13:35:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYW4n-0000DV-7M
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 13:35:37 +0000
X-Inumbo-ID: cb9e9502-8796-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cb9e9502-8796-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 13:35:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DB80CF20A9;
 Wed,  5 Jun 2019 15:35:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yb9qXo6bd2UG; Wed,  5 Jun 2019 15:35:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AEDB2F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 15:35:31 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 15:35:31
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-8-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <2cd1131f-c4f3-de84-eb0e-ad8c082c604c@neclab.eu>
Date: Wed, 5 Jun 2019 15:35:31 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-8-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 07/10] lib/syscall_shim:
 introduce syscalls macro layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

T24gMDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVG8gcHJvdmlkZSBhIHN5
c2NhbGwgdXNlciBuZWVkcyB0byB1c2UgbWFjcm8gVUtfU1lTQ0FMTF9QUk9UTy4gVGhlCj4gc3lu
dGF4IGlzIHRoZSBmb2xsb3dpbmc6Cj4gCgpIdW0sIGlzIFVLX1NZU0NBTExfUFJPVE8gdGhlIHJp
Z2h0IG5hbWU/IEkgc2F3IHRoYXQgaXMgY2FsbGVkIApVS19TWVNDQUxMX0RFRklORSgpIGluIHBh
dGNoIG51bWJlciA4LgoKPiBVS19TWVNDQUxMX1BST1RPKHN5c2NhbGxfbmFtZSwgYXJndW1lbnRf
MV90eXBlLCBhcmd1bWVudF8xX25hbWUsIC4uLikKPiB7Cj4gICAgICA8c3lzY2FsbF9ib2R5PjsK
PiB9Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNs
YWIuZXU+Cj4gLS0tCj4gICBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAgICAgICAgIHwg
ICA1ICsrCj4gICBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgMTAwICsr
KysrKysrKysrKysrKysrKysrKysrKysrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRp
b25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3Vr
L3N5c2NhbGwuaAo+IAo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVr
IGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IGluZGV4IGJiNzZkN2IxLi42NzY3N2Zj
NiAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4gKysrIGIvbGli
L3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IEBAIC01MCw0ICs1MCw5IEBAICQoX19HRU5fSU5D
TFVERVNfUEFUSCkvc3lzY2FsbF9zdHVicy5oLm5ldzoKPiAgIAkkKFEpICQoQVdLKSAtZiAkKExJ
QlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fc3R1YnMuYXdrIFwKPiAgIAkJJChfX1NZU0NBTExfU0hJ
TV9URU1QTCkgPiAkQAo+ICAgCj4gK0NJTkNMVURFUy0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0p
ICAgKz0gLUkkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvaW5jbHVkZQo+ICtDWFhJTkNMVURFUy0k
KENPTkZJR19MSUJTWVNDQUxMX1NISU0pICs9IC1JJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2lu
Y2x1ZGUKPiArQ0lOQ0xVREVTLXkgICArPSAtSSQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2luY2x1
ZGUKPiArQ1hYSU5DTFVERVMteSArPSAtSSQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2luY2x1ZGUK
PiArCj4gICBMSUJTWVNDQUxMX1NISU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX1BI
T05ZX0dFTl9TUkNfTkVXKSAkKF9fR0VOX1NSQykKPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxf
c2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaCBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9z
eXNjYWxsLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4xOTE2MWU1
ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lz
Y2FsbC5oCj4gQEAgLTAsMCArMSwxMDAgQEAKPiArI2lmbmRlZiBfX1VLX1NZU0NBTExfSF9fCj4g
KyNkZWZpbmUgX19VS19TWVNDQUxMX0hfXwo+ICsKPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNp
bmNsdWRlIDx1ay9wcmludC5oPgoKRG9lc24ndCBlc3NlbnRpYWxzLmggbmVlZCB0byBiZSBpbmNs
dWRlZCB0byBoYXZlIHRoZSBVS19DT05DQVQgbWFjcm8gCnBvcHVsYXRlZD8KCj4gKwo+ICsjZGVm
aW5lIF9fdWtfc2NjKFgpICgobG9uZykgKFgpKQo+ICt0eXBlZGVmIGxvbmcgc3lzY2FsbF9hcmdf
dDsKPiArCj4gKyNkZWZpbmUgX191a19zeXNjYWxsKHN5c2NhbGxfbnIsIC4uLikgXAo+ICsJVUtf
Q09OQ0FUKHVrX3N5c2NhbGxfZm5fLCBzeXNjYWxsX25yKSAoX19WQV9BUkdTX18pCj4gKwo+ICsj
ZGVmaW5lIF9fdWtfc3lzY2FsbDAobikgX191a19zeXNjYWxsKG4pCj4gKyNkZWZpbmUgX191a19z
eXNjYWxsMShuLGEpIF9fdWtfc3lzY2FsbChuLF9fdWtfc2NjKGEpKQo+ICsjZGVmaW5lIF9fdWtf
c3lzY2FsbDIobixhLGIpIF9fdWtfc3lzY2FsbChuLF9fdWtfc2NjKGEpLF9fdWtfc2NjKGIpKQo+
ICsjZGVmaW5lIF9fdWtfc3lzY2FsbDMobixhLGIsYykgX191a19zeXNjYWxsKG4sX191a19zY2Mo
YSksX191a19zY2MoYiksX191a19zY2MoYykpCj4gKyNkZWZpbmUgX191a19zeXNjYWxsNChuLGEs
YixjLGQpIF9fdWtfc3lzY2FsbChuLF9fdWtfc2NjKGEpLF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMp
LF9fdWtfc2NjKGQpKQo+ICsjZGVmaW5lIF9fdWtfc3lzY2FsbDUobixhLGIsYyxkLGUpIF9fdWtf
c3lzY2FsbChuLF9fdWtfc2NjKGEpLF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMpLF9fdWtfc2NjKGQp
LF9fdWtfc2NjKGUpKQo+ICsjZGVmaW5lIF9fdWtfc3lzY2FsbDYobixhLGIsYyxkLGUsZikgX191
a19zeXNjYWxsKG4sX191a19zY2MoYSksX191a19zY2MoYiksX191a19zY2MoYyksX191a19zY2Mo
ZCksX191a19zY2MoZSksX191a19zY2MoZikpCj4gKyNkZWZpbmUgX191a19zeXNjYWxsNyhuLGEs
YixjLGQsZSxmLGcpIChfX3VrX3N5c2NhbGwpKG4sX191a19zY2MoYSksX191a19zY2MoYiksX191
a19zY2MoYyksX191a19zY2MoZCksX191a19zY2MoZSksX191a19zY2MoZiksX191a19zY2MoZykp
Cj4gKwo+ICsKPiArI2RlZmluZSBfX1NZU0NBTExfTkFSR1NfWChhLGIsYyxkLGUsZixnLGgsbiwu
Li4pIG4KPiArI2RlZmluZSBfX1NZU0NBTExfTkFSR1MoLi4uKSBfX1NZU0NBTExfTkFSR1NfWChf
X1ZBX0FSR1NfXyw3LDYsNSw0LDMsMiwxLDAsKQo+ICsKPiArI2RlZmluZSBfX1NZU0NBTExfREVG
X05BUkdTX1goeiwgYTEsYTIsIGIxLGIyLCBjMSxjMiwgZDEsZDIsIGUxLGUyLCBmMSxmMiwgZzEs
ZzIsIG5yLCAuLi4pIG5yCj4gKyNkZWZpbmUgX19TWVNDQUxMX0RFRl9OQVJHUyguLi4pIF9fU1lT
Q0FMTF9ERUZfTkFSR1NfWChfX1ZBX0FSR1NfXywgNyw3LCA2LDYsIDUsNSwgNCw0LCAzLDMsIDIs
MiwgMSwxLDApCj4gKwo+ICsjZGVmaW5lIF9fVUtfTkFNRTJTQ0FMTF9GTihuYW1lKSBVS19DT05D
QVQodWtfc3lzY2FsbF8sIG5hbWUpCj4gKwo+ICsjZGVmaW5lIFVLX0FSR19NQVAxKG0sIHR5cGUs
IGFyZykgbSh0eXBlLCBhcmcpCj4gKyNkZWZpbmUgVUtfQVJHX01BUDIobSwgdHlwZSwgYXJnLCAu
Li4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDEobSwgX19WQV9BUkdTX18pCj4gKyNkZWZpbmUg
VUtfQVJHX01BUDMobSwgdHlwZSwgYXJnLCAuLi4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDIo
bSwgX19WQV9BUkdTX18pCj4gKyNkZWZpbmUgVUtfQVJHX01BUDQobSwgdHlwZSwgYXJnLCAuLi4p
IG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDMobSwgX19WQV9BUkdTX18pCj4gKyNkZWZpbmUgVUtf
QVJHX01BUDUobSwgdHlwZSwgYXJnLCAuLi4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDQobSwg
X19WQV9BUkdTX18pCj4gKyNkZWZpbmUgVUtfQVJHX01BUDYobSwgdHlwZSwgYXJnLCAuLi4pIG0o
dHlwZSwgYXJnKSwgVUtfQVJHX01BUDUobSwgX19WQV9BUkdTX18pCj4gKyNkZWZpbmUgVUtfQVJH
X01BUDcobSwgdHlwZSwgYXJnLCAuLi4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDYobSwgX19W
QV9BUkdTX18pCj4gKyNkZWZpbmUgVUtfQVJHX01BUHgobnJfYXJncywgLi4uKSBVS19DT05DQVQo
VUtfQVJHX01BUCwgbnJfYXJncykoX19WQV9BUkdTX18pCj4gKwo+ICsjZGVmaW5lIFNfQVJHX0xP
TkcodHlwZSwgYXJnKSB1bnNpZ25lZCBsb25nIGFyZwo+ICsjZGVmaW5lIFNfQVJHX0FDVFVBTCh0
eXBlLCBhcmcpIHR5cGUgYXJnCj4gKyNkZWZpbmUgU19BUkdfQ0FTVCh0eXBlLCBhcmcpICh0eXBl
KSBhcmcKPiArCj4gKwo+ICsjaWZkZWYgQ09ORklHX0xJQlNZU0NBTExfU0hJTQo+ICsjZGVmaW5l
IF9fVUtfU1lTQ0FMTF9ERUZJTkUoeCwgbmFtZSwgLi4uKQkJCQlcCj4gKwlzdGF0aWMgaW5saW5l
IGxvbmcgX18jI25hbWUoVUtfQVJHX01BUHgoeCwgU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykp
OyBcCj4gKwlpbnQgbmFtZShVS19BUkdfTUFQeCh4LCBTX0FSR19MT05HLCBfX1ZBX0FSR1NfXykp
CQkJXAoKSW4gdGhpcyB0eXBlIGNhc3Rpbmcgd3JhcHBlciwgc2hvdWxkbid0IHRoaXMgYGludGAg
YmUgYSBgbG9uZ2AgaW5zdGVhZD8KCj4gKwl7CQkJCQkJCQlcCj4gKwkJbG9uZyByZXQgPSBfXyMj
bmFtZSgJCQkJCVwKPiArCQkJVUtfQVJHX01BUHgoeCwgU19BUkdfQ0FTVCwgX19WQV9BUkdTX18p
KTsJCVwKPiArCQlyZXR1cm4gcmV0OwkJCQkJCVwKPiArCX0JCQkJCQkJCVwKPiArCXN0YXRpYyBp
bmxpbmUgbG9uZyBfXyMjbmFtZShVS19BUkdfTUFQeCh4LCBTX0FSR19BQ1RVQUwsIF9fVkFfQVJH
U19fKSkKPiArI2Vsc2UKPiArI2RlZmluZSBfX1VLX1NZU0NBTExfREVGSU5FKHgsIG5hbWUsIC4u
LikJCQkJXAo+ICsJc3RhdGljIGlubGluZSBsb25nIG5hbWUoVUtfQVJHX01BUHgoeCwgU19BUkdf
QUNUVUFMLCBfX1ZBX0FSR1NfXykpCj4gKyNlbmRpZgo+ICsKPiArI2RlZmluZSBfVUtfU1lTQ0FM
TF9ERUZJTkUoLi4uKSBfX1VLX1NZU0NBTExfREVGSU5FKF9fVkFfQVJHU19fKQo+ICsjZGVmaW5l
IFVLX1NZU0NBTExfREVGSU5FKG5hbWUsIC4uLikJCQkJXAo+ICsJX1VLX1NZU0NBTExfREVGSU5F
KF9fU1lTQ0FMTF9ERUZfTkFSR1MoX19WQV9BUkdTX18pLAlcCj4gKwkJCSAgICBfX1VLX05BTUUy
U0NBTExfRk4obmFtZSksCQlcCj4gKwkJCSAgICBfX1ZBX0FSR1NfXykKPiArCj4gKyNkZWZpbmUg
X19VS19TUFJPVE9fQVJHU19UWVBFIHVuc2lnbmVkIGxvbmcKPiArI2RlZmluZSBfX1VLX1NQUk9U
T19BUkdTMCgpICB2b2lkCj4gKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzEoKSAgX19VS19TUFJP
VE9fQVJHU19UWVBFIGEKPiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTMigpICBfX1VLX1NQUk9U
T19BUkdTMSgpLCBfX1VLX1NQUk9UT19BUkdTX1RZUEUgYgo+ICsjZGVmaW5lIF9fVUtfU1BST1RP
X0FSR1MzKCkgIF9fVUtfU1BST1RPX0FSR1MyKCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBjCj4g
KyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzQoKSAgX19VS19TUFJPVE9fQVJHUzMoKSwgX19VS19T
UFJPVE9fQVJHU19UWVBFIGQKPiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTNSgpICBfX1VLX1NQ
Uk9UT19BUkdTNCgpLCBfX1VLX1NQUk9UT19BUkdTX1RZUEUgZQo+ICsjZGVmaW5lIF9fVUtfU1BS
T1RPX0FSR1M2KCkgIF9fVUtfU1BST1RPX0FSR1M1KCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBm
Cj4gKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzcoKSAgX19VS19TUFJPVE9fQVJHUzYoKSwgX19V
S19TUFJPVE9fQVJHU19UWVBFIGcKPiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTeChhcmdzX25y
KSAgXAo+ICsJVUtfQ09OQ0FUKF9fVUtfU1BST1RPX0FSR1MsIGFyZ3NfbnIpKCkKPiArCj4gKyNk
ZWZpbmUgVUtfU1lTQ0FMTF9QUk9UTyhhcmdzX25yLCBzeXNjYWxsX25hbWUpCQkJXAo+ICsJaW50
IFVLX0NPTkNBVCh1a19zeXNjYWxsXywgc3lzY2FsbF9uYW1lKSgJXAo+ICsJCV9fVUtfU1BST1RP
X0FSR1N4KGFyZ3NfbnIpKQo+ICsKPiArI2RlZmluZSB1a19zeXNjYWxsX3N0dWIoc3lzY2FsbF9u
YW1lKSAoewkJCVwKPiArCQkJdWtfcHJfZGVidWcoInN5c2NhbGwgXCIiIHN5c2NhbGxfbmFtZQlc
Cj4gKwkJCQkgICAgIlwiIGlzIG5vdCBpbXBsZW1lbnRlZCIpOwlcCj4gKwkJCWVycm5vID0gLUVO
T1NZUzsJCQlcCj4gKwkJCS0xOwkJCQkJXAo+ICsJCX0pCgpIdW0sIHNpbmNlIHlvdXIgc2hpbSBs
YXllciBpcyBtaW1pY2tpbmcgTGludXgncyB1c2Vyc3BhY2Ugc3lzIGNhbGwgCndyYXBwZXIgKDxz
eXMvc3lzY2FsbC5oPiksIGl0IGlzIGV4cGVjdGVkIHRoYXQgYSBzeXNjYWxsIGZ1bmN0aW9uIApo
YW5kbGVzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGVycm9yIGNhc2VzLiBJIHN1Z2dlc3QgdGhh
dCB5b3UgYWRkIGEgCmNvbW1lbnQgdG8gVUtfU1lTQ0FMTF9ERUZJTkUoKSBzbyB0aGF0IGV2ZXJ5
b25lIHRoYXQgaW1wbGVtZW50cyBzdWNoIGEgCnN5c3RlbSBjYWxsIGlzIG5vdCBnZXR0aW5nIGNv
bmZ1c2VkIHdpdGggd2hhdCBhIHN5c2NhbGwgaW4gdGhlIGtlcm5lbCAKbWVhbnMgaW4gdGVybXMg
b2YgcmV0dXJuIHZhbHVlcyBhbmQgYXJndW1lbnRzLgpDb3VsZCB5b3UgYWxzbyB3cml0ZSB0aGF0
IHRoZSByZXR1cm4gdHlwZSBpcyBgbG9uZ2Agb24gc3VjaCBhIGRlZmluZWQgCmZ1bmN0aW9uPyBU
aGlzIGlzIGtpbmQgb2YgaGlkZGVuIGluIHRoZSBVS19TWVNDQUxMX0RFRklORSgpIG1hY3JvLgoK
PiArCj4gKwo+ICsjaWZkZWYgQ09ORklHX0xJQlNZU0NBTExfU0hJTQo+ICsjaW5jbHVkZSA8dWsv
Yml0cy9zeXNjYWxsX25ycy5oPgo+ICsjaW5jbHVkZSA8dWsvYml0cy9zeXNjYWxsX21hcC5oPgo+
ICsjaW5jbHVkZSA8dWsvYml0cy9wcm92aWRlZF9zeXNjYWxscy5oPgo+ICsjaW5jbHVkZSA8dWsv
Yml0cy9zeXNjYWxsX3N0dWJzLmg+Cj4gKwo+ICsjZGVmaW5lIHN5c2NhbGwoLi4uKQkJCQkJCQlc
Cj4gKwlVS19DT05DQVQoX191a19zeXNjYWxsLCBfX1NZU0NBTExfTkFSR1MoX19WQV9BUkdTX18p
KShfX1ZBX0FSR1NfXykKPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX19VS19TWVNDQUxMX0hf
XyAqLwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 13:44:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 13:44: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 1hYWDU-0001h0-QG; Wed, 05 Jun 2019 13:44:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYWDT-0001gm-3L
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 13:44:35 +0000
X-Inumbo-ID: 0c7eb490-8798-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0c7eb490-8798-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 13:44:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 270E9F20A9;
 Wed,  5 Jun 2019 15:44:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xSm4iHCEUvlU; Wed,  5 Jun 2019 15:44:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 00812F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 15:44:30 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 15:44:29
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-7-yuri.volchkov@neclab.eu>
 <bbef3246-9496-9354-56ee-7b3ff044a488@neclab.eu>
Message-ID: <848a1d5c-a621-7c4a-cf9f-10a82065fc3b@neclab.eu>
Date: Wed, 5 Jun 2019 15:44:29 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <bbef3246-9496-9354-56ee-7b3ff044a488@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 06/10] lib/syscall_shim:
 generate provided_syscalls.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMDUuMDYuMTkgMTM6NDQsIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4gSGV5IFl1cmksCj4gCj4g
c2VlIG15IGNvbW1lbnRzIGlubGluZS4KPiAKPiBPbiAwNC4wNi4xOSAxODoyOCwgWXVyaSBWb2xj
aGtvdiB3cm90ZToKPj4gVGhlIHByb3ZpZGVkX3N5c2NhbGxzLmggd2lsbCBiZSBjb250YWluaW5n
IHByb3RvdHlwZXMgZm9yIGV2ZXJ5Cj4+IHN5c2NhbGwgcHJlc2VudCBpbiB0aGUgc3lzdGVtLgo+
Pgo+PiBJdCB3aWxsIGJlIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgbGlicmFyaWVzIHRvIHRl
bGwgc3lzY2FsbF9zaGltIGlmCj4+IGNlcnRhaW4gc3lzY2FsbCBpcyBwcm92aWRlZC4gSWYgc3lz
Y2FsbCBpcyBhdmFpbGFibGUsIGl0IG11c3QgYmUKPj4gbGlzdGVkIGluIHRoZSBtYWtlZmlsZSdz
IHZhcmlhYmxlICdVS19QUk9WSURFRF9TWVNDQUxMUycgaW4gdGhlIGZvcm1hdAo+PiA8c3lzY2Fs
bF9uYW1lPi08bnVtYmVyX29mX2FyZ3VtZW50cz4uIEZvciBleGFtcGxlOgo+Pgo+PiBVS19QUk9W
SURFRF9TWVNDQUxMUy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSB3cml0ZXYtMwo+IAo+IEkgdGhp
bmssIHlvdSBjYW4gc3RpbGwgbmFtZXNwYWNlIHRoaXMgdG8gTElCU1lTQ0FMTF9TSElNX1NZU0NB
TExTLXkuIAo+IE90aGVyIGxpYnJhcmllcyBwYXJlIGRvaW5nIHRoaXMgZm9yIHlvdXIgcGFydGlj
dWxhciBsaWJyYXJ5LCBzbyB0aGlzIAo+IHN0aWxsIG1ha2VzIHNlbnNlLgoKQWN0dWFsbHksIGFz
IGxvbmdlciBJIHRoaW5rIGFib3V0IHRoaXMsIEkgbGVhdmUgaXQgdXAgdG8geW91IGhvdyB0byBj
YWxsIAp0aGlzLiBJIHRoaW5rIHRoZXJlIGlzIGZvciBib3RoIHZhcmlhbnRzIGdvb2QgcmVhc29u
cyB3aHkgdG8gY2FsbCBpdCAKdGhhdCB3YXkuIEZvciBpbnN0YW5jZSwgaWYgeW91IHRha2UgVUtf
UFJPVklERURfU1lTQ0FMTFMteSBmb3IgeW91ciAKc3lzY2FsbCBsaWJyYXJ5LCB0aGUgbGlicmFy
eSBpcyBiZWNvbWluZyBtb3JlIGVhc2lseSByZXBsYWNlYWJsZS4KU28sIEkgbGVhdmUgaXQgdXAg
dG8geW91IGlmIHlvdSB3YW50IHRvIGNoYW5nZSBpdC4KCj4gCj4+Cj4+IFNpZ25lZC1vZmYtYnk6
IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+PiAtLS0KPj4gwqAgbGli
L3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayB8IDE3ICsrKysrKysrKysrKysrKy0tCj4+IMKgIDEg
ZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZm
IC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0v
TWFrZWZpbGUudWsKPj4gaW5kZXggNTJhMTJmMTguLmJiNzZkN2IxIDEwMDY0NAo+PiAtLS0gYS9s
aWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vTWFr
ZWZpbGUudWsKPj4gQEAgLTQsOSArNCwxMiBAQCBfX0dFTl9JTkNMVURFU19QQVRIIDo9IAo+PiAk
KExJQlNZU0NBTExfU0hJTV9CVUlMRCkvaW5jbHVkZS91ay9iaXRzCj4+IMKgIF9fUEhPTllfR0VO
X1NSQyA6PSBzeXNjYWxsX21hcC5oIHN5c2NhbGxfc3R1YnMuaCBzeXNjYWxsX25ycy5oCj4+IMKg
IF9fUEhPTllfR0VOX1NSQyA6PSAkKGFkZHByZWZpeCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpLywg
Cj4+ICQoX19QSE9OWV9HRU5fU1JDKSkKPj4gK19fUEhPTllfR0VOX1NSQyArPSAkKExJQlNZU0NB
TExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbgo+PiDCoCBfX1BIT05ZX0dFTl9T
UkNfTkVXIDo9ICQoYWRkc3VmZml4IC5uZXcsICQoX19QSE9OWV9HRU5fU1JDKSkKPj4gLVVLX1BS
RVBBUkUtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAkKF9fUEhPTllfR0VOX1NSQykKPj4g
K19fR0VOX1NSQyA6PSAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmgK
Pj4gKwo+PiArVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0pICs9ICQoX19QSE9O
WV9HRU5fU1JDKSAkKF9fR0VOX1NSQykKPj4gwqAgX19TWVNDQUxMX1NISU1fVEVNUEwgOj0gCj4+
ICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2FyY2gvJChDT05GSUdfVUtfQVJDSCkvc3lzY2FsbC5o
LmluCj4+IEBAIC0zMyw4ICszNiwxOCBAQCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxf
bWFwLmgubmV3Ogo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfScgXAo+PiDCoMKgwqDCoMKgwqDCoMKg
wqAgJChfX1NZU0NBTExfU0hJTV9URU1QTCkgPiAkQAo+PiArJChfX0dFTl9JTkNMVURFU19QQVRI
KS9wcm92aWRlZF9zeXNjYWxscy5oOiAKPj4gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3Zp
ZGVkX3N5c2NhbGxzLmguaW4KPj4gK8KgwqDCoCAkUSAkKEFXSykgLUYgJy0nIFwKPj4gK8KgwqDC
oCAnQkVHSU4ge3ByaW50ICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlOyBETyBOT1Qg
RURJVCAqLyJ9IFwKPj4gK8KgwqDCoCAvW2EtekEtWjAtOV0rLVswLTldKy97cHJpbnRmICJcbiNk
ZWZpbmUgSEFWRV91a19zeXNjYWxsXyVzIHQiLCAKPj4gJCQxOyBcCj4+ICvCoMKgwqDCoCBwcmlu
dGYgIlxuVUtfU1lTQ0FMTF9QUk9UTyglcywgJXMpO1xuIiwgJCQyLCAkJDE7fScgXAo+PiArwqDC
oMKgICReID4gJEAKPiAKPiBDYW4geW91IGRvIHRoZXNlIHR3byBuZXcgcnVsZXMgYWxzbyBhcyB2
ZXJib3NlIGJ1aWxkIGNvbW1hbmQgaW5zdGVhZCAKPiAocHJldHR5LXByaW50IG5hbWUgb2YgY29t
bWFuZCBjYW4gYmUganVzdCBgR0VOYCk/Cj4gCj4gSXMgaXQgc29tZWhvdyBwb3NzaWJsZSB0byBw
cmludCBhIHdhcm5pbmcgZm9yIHJlZ2lzdGVyZWQgc3lzY2FsbHMgdGhhdCAKPiBkbyBub3QgZml0
IGludG8gdGhlIDxzeXNjYWxsX25hbWU+LTxudW1iZXJfb2ZfYXJndW1lbnRzPiBzY2hlbWU/Cj4g
Cj4+ICsKPj4gKyQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9wcm92aWRlZF9zeXNjYWxscy5oLmlu
Lm5ldzoKPj4gK8KgwqDCoCAkUSBlY2hvICQoVUtfUFJPVklERURfU1lTQ0FMTFMteSkgfCB0ciAn
ICcgJ1xuJyA+ICRACj4+ICsKPj4gwqAgJChfX0dFTl9JTkNMVURFU19QQVRIKS9zeXNjYWxsX3N0
dWJzLmgubmV3Ogo+PiDCoMKgwqDCoMKgICQoUSkgJChBV0spIC1mICQoTElCU1lTQ0FMTF9TSElN
X0JBU0UpL2dlbl9zdHVicy5hd2sgXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgJChfX1NZU0NBTExf
U0hJTV9URU1QTCkgPiAkQAo+PiAtTElCU1lTQ0FMTF9TSElNX0NMRUFOID0gJChfX1BIT05ZX0dF
Tl9TUkMpICQoX19QSE9OWV9HRU5fU1JDX05FVykKPj4gK0xJQlNZU0NBTExfU0hJTV9DTEVBTiA9
ICQoX19QSE9OWV9HRU5fU1JDKSAkKF9fUEhPTllfR0VOX1NSQ19ORVcpIAo+PiAkKF9fR0VOX1NS
QykKPj4KPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 13:45:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 13:45: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 1hYWEL-0001np-Tk; Wed, 05 Jun 2019 13:45:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYWEK-0001ne-T8
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 13:45:28 +0000
X-Inumbo-ID: 2be66829-8798-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2be66829-8798-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 13:45:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0777C104F47;
 Wed,  5 Jun 2019 15:45:25 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rEF_JGVpMGUn; Wed,  5 Jun 2019 15:45:24 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id DA597104F3B
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 15:45:24 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 15:45:24
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-9-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <bdd13dd0-7700-d11c-40ab-0fc17aa3589c@neclab.eu>
Date: Wed, 5 Jun 2019 15:45:24 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-9-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 08/10] lib/vfscore: syscall
 writev
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gRmlyc3QgZXZlciB1c2VyIG9m
IHN5c2NhbGwgc2hpbSBsYXllcgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1
cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsg
ICB8IDQgKysrLQo+ICAgbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayB8IDEgKwo+ICAgbGliL3Zm
c2NvcmUvbWFpbi5jICAgICAgICB8IDcgKysrKysrKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxMSBp
bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3Jl
L01ha2VmaWxlLnVrIGIvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKPiBpbmRleCAxZmQzNTg1OC4u
MDE2NmU2MTIgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKPiArKysgYi9s
aWIvdmZzY29yZS9NYWtlZmlsZS51awo+IEBAIC0xNSw0ICsxNSw2IEBAIExJQlZGU0NPUkVfU1JD
Uy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9sb29rdXAuYwo+ICAgTElCVkZTQ09SRV9TUkNTLXkg
Kz0gJChMSUJWRlNDT1JFX0JBU0UpL2ZvcHMuYwo+ICAgTElCVkZTQ09SRV9TUkNTLXkgKz0gJChM
SUJWRlNDT1JFX0JBU0UpL3N1YnJfdWlvLmMKPiAgIAo+IC1FWFRSQV9MRF9TQ1JJUFQtJChDT05G
SUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2V4dHJhLmxkCj4gXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCj4gK0VYVFJBX0xEX1NDUklQVC0kKENPTkZJR19MSUJWRlNDT1JF
KSArPSAkKExJQlZGU0NPUkVfQkFTRSkvZXh0cmEubGQKPiArCj4gK1VLX1BST1ZJREVEX1NZU0NB
TExTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9IHdyaXRldi0zCj4gZGlmZiAtLWdpdCBhL2xpYi92
ZnNjb3JlL2V4cG9ydHN5bXMudWsgYi9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCj4gaW5kZXgg
MzRlZWVlNTkuLmRhN2ZiYWVhIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMu
dWsKPiArKysgYi9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCj4gQEAgLTc0LDMgKzc0LDQgQEAg
ZmFjY2Vzc2F0Cj4gICByZWFkbGluawo+ICAgZmFsbG9jYXRlCj4gICBsc2Vlawo+ICt1a19zeXNj
YWxsX3dyaXRldgo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9saWIvdmZzY29y
ZS9tYWluLmMKPiBpbmRleCBkZmQ0M2ViMy4uZmZmMjMzZjMgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zm
c2NvcmUvbWFpbi5jCj4gKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gQEAgLTQ5LDYgKzQ5LDcg
QEAKPiAgICNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KPiAgICNpbmNsdWRlIDx1ay9jdG9ycy5oPgo+
ICAgI2luY2x1ZGUgPHVrL3RyYWNlLmg+Cj4gKyNpbmNsdWRlIDx1ay9zeXNjYWxsLmg+Cj4gICAK
PiAgICNpZmRlZiBERUJVR19WRlMKPiAgIGludAl2ZnNfZGVidWcgPSBWRlNEQl9GTEFHUzsKPiBA
QCAtNDU4LDYgKzQ1OSwxMiBAQCBzc2l6ZV90IHdyaXRldihpbnQgZmQsIGNvbnN0IHN0cnVjdCBp
b3ZlYyAqaW92LCBpbnQgaW92Y250KQo+ICAgCXJldHVybiBwd3JpdGV2KGZkLCBpb3YsIGlvdmNu
dCwgLTEpOwo+ICAgfQo+ICAgCj4gK1VLX1NZU0NBTExfREVGSU5FKHdyaXRldiwgdW5zaWduZWQg
bG9uZywgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCB2ZWMsCj4gKwkJICB1bnNpZ25lZCBsb25n
LCB2bGVuKQo+ICt7Cj4gKwlyZXR1cm4gcHdyaXRldihmZCwgdmVjLCB2bGVuLCAtMSk7Cj4gK30K
PiArCj4gICBVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bCwgIiVkIDB4JXgiLCBpbnQsIHVu
c2lnbmVkIGxvbmcpOwo+ICAgVUtfVFJBQ0VQT0lOVCh0cmFjZV92ZnNfaW9jdGxfcmV0LCAiIik7
Cj4gICBVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9lcnIsICIlZCIsIGludCk7Cj4gCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 13:47:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 13:47: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 1hYWGi-0001wz-4z; Wed, 05 Jun 2019 13:47:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYWGh-0001ws-OS
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 13:47:55 +0000
X-Inumbo-ID: 8479ed2f-8798-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8479ed2f-8798-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 13:47:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9CBAFF20A9;
 Wed,  5 Jun 2019 15:47:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id julzu-nWDW1c; Wed,  5 Jun 2019 15:47:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 71142F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 15:47:51 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 15:47:51
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-11-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <47bc7b9a-50ab-cf3a-0b79-ff4429d04286@neclab.eu>
Date: Wed, 5 Jun 2019 15:47:50 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-11-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 10/10] doc: add section about
 syscall shim layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5LAoKcGxlYXNlIGFsc28gYWRkIGluZm9ybWF0aW9uIGhlcmUgYWJvdXQgaG93IGVycm5vIGlz
IGhhbmRsZWQgYW5kIHdoYXQgaXMgCmV4cGVjdGVkIGFzIHJldHVybiB2YWx1ZS4KClRoYW5rcywK
ClNpbW9uCgpPbiAwNC4wNi4xOSAxODoyOCwgWXVyaSBWb2xjaGtvdiB3cm90ZToKPiBTaWduZWQt
b2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAg
IGRvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0IHwgMzYgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKPiAgIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspCj4gCj4g
ZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0IGIvZG9jL2d1aWRlcy9k
ZXZlbG9wZXJzLWFwcC5yc3QKPiBpbmRleCBiYmQzYmJkYS4uMjMzODkxNTIgMTAwNjQ0Cj4gLS0t
IGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKPiArKysgYi9kb2MvZ3VpZGVzL2RldmVs
b3BlcnMtYXBwLnJzdAo+IEBAIC0zMjMsNiArMzIzLDQyIEBAIEFuIGV4YW1wbGUgY29udGV4dCBv
ZiBleHRyYS5sZDogOjoKPiAgIAo+ICAgVGhpcyB3aWxsIGFkZCB0aGUgc2VjdGlvbiAudWtfZnNf
bGlzdCBhZnRlciB0aGUgLnRleHQKPiAgIAo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09
Cj4gK1N5c2NhbGwgc2hpbSBsYXllcgo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4g
Kwo+ICtJZiB5b3UgbGlicmFyeSBwcm92aWRlcyBhIHN5c2NhbGwsIHlvdSBuZWVkIHRvIGluZm9y
bSBVbmlrcmFmdCB0aGF0IGl0Cj4gK2NhbiB1c2UgeW91ciBpbXBsZW1lbnRhdGlvbi4gQWRkIGEg
bGluZSBpbiB5b3UgTWFrZWZpbGUudWs6IDo6Cj4gKwo+ICsgICAgVUtfUFJPVklERURfU1lTQ0FM
TFMtJChDT05GSUdfTElCWU9VUkxJQk5BTUUpICs9IDxzeXNjYWxsX25hbWU+LTxudW1iZXJfb2Zf
YXJndW1lbnRzPgo+ICsKPiArV2hlcmUgYDxudW1iZXJfb2ZfYXJndW1lbnRzPmAgaXMgaG93IG1h
bnkgYXJndW1lbnRzIHlvdXIgc3lzY2FsbCBhY2NlcHRzLgo+ICsKPiArRm9yIGV4YW1wbGU6IDo6
Cj4gKwo+ICsgICAgVUtfUFJPVklERURfU1lTQ0FMTFMtJChDT05GSUdfTElCVkZTQ09SRSkgKz0g
d3JpdGV2LTMKPiArCj4gKy4uIG5vdGU6OiBQbGVhc2UgY29uc3VsdCBjb3JyZXNwb25kaW5nIG1h
biBwYWdlIGluIG9yZGVyIHRvIGtlZXAgQVBJCj4gKyAgICAgICAgICAgbWF0Y2hpbmcgdG8gdGhl
IGVxdWl2YWxlbnQgbGludXggc3lzY2FsbAo+ICsKPiArRm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiB5b3Ugc3lzY2FsbCB1c2UgdGhlIGZvbGxvd2luZyB0ZW1wbGF0ZToKPiArCj4gKy4uIGNvZGUt
YmxvY2s6OiBjCj4gKwo+ICsgIFVLX1NZU0NBTExfREVGSU5FKHN5c2NhbGxfbmFtZSwgYXJnMV90
eXBlLCBhcmcxX25hbWUsIGFyZzJfdHlwZSwgYXJnMl9uYW1lLCAuLikKPiArICB7Cj4gKyAgCWRv
X2Nvb2xfc3R1ZmYoKTsKPiArICB9Cj4gKwo+ICtGb3IgZXhhbXBsZToKPiArCj4gKy4uIGNvZGUt
YmxvY2s6OiBjCj4gKwo+ICsgIFVLX1NZU0NBTExfREVGSU5FKHdyaXRldiwgdW5zaWduZWQgbG9u
ZywgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCB2ZWMsCj4gKyAgCQkgIHVuc2lnbmVkIGxvbmcs
IHZsZW4pCj4gKyAgewo+ICsgIAlwd3JpdGV2KGZkLCB2ZWMsIHZsZW4sIC0xKTsKPiArICB9Cj4g
ICAKPiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAgIE1ha2UgVGFyZ2V0cwo+IAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 13:53:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 13:53: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 1hYWMM-00034e-V9; Wed, 05 Jun 2019 13:53:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DSh9=UE=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYWML-00034Y-DS
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 13:53:45 +0000
X-Inumbo-ID: 54addc59-8799-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 54addc59-8799-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 13:53:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D6B31103940;
 Wed,  5 Jun 2019 15:53:42 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qkbQynrqYhjz; Wed,  5 Jun 2019 15:53:42 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B275610013D
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 15:53:42 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Jun 2019 15:53:42
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-10-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <61418278-94a3-f433-5056-8a50adab433a@neclab.eu>
Date: Wed, 5 Jun 2019 15:53:42 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190604162844.2712-10-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 09/10] lib/syscall_shim:
 introduce uk_syscall_dynamic
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IFl1cmksCgp0aGFua3MgZm9yIHRoaXMgcGF0Y2guIEFzIHdpdGggdGhlIHByZXZpb3VzIHBh
dGNoZXMgcmVnYXJkaW5nIApNYWtlZmlsZS51aywgY2FuIHlvdSBhcHBseSB0aGUgc2FtZSBjaGFu
Z2VzIGhlcmUgKGJ1aWxkX2NtZCBhbmQgdmFyaWFibGUgCm5hbWUgc3BhY2luZyk/CgpTZWUgbXkg
b3RoZXIgY29tbWVudHMgaW5saW5lLgoKT24gMDQuMDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Yg
d3JvdGU6Cj4gVGhlIG1hY3JvIGxheWVyIGlzIGVmZmljaWVudCwgYnV0IHRoZSBleGFjdCBzeXNj
YWxsIG11c3QgYmUga25vd24gYXQKPiB0aGUgY29tcGlsYXRpb24gc3RhZ2UuIElmIGEgc3lzY2Fs
bCBudW1iZXIgaXMga2VwdCBpbiBhIHZhcmlhYmxlIG1hY3JvCj4gbGF5ZXIgd2lsbCBub3QgYmUg
YWJsZSB0byByZXNvbHZlIGl0IHRvIHRoZSBzeXNjYWxsIGZ1bmN0aW9uLgo+IAo+IEZvciB0aGlz
IGNhc2UgYW5vdGhlciBmaWxlIGlzIGdlbmVyYXRlZCAtIHN5c2NhbGxfZW50cnkuYy4gV2hlcmUK
PiBzeXNjYWxscyBhcmUgJ2R5bmFtaWNhbGx5JyByZXNvbHZlZCBpbnRvIGEgZGVzdGluYXRpb24g
ZnVuY3Rpb25zLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hr
b3ZAbmVjbGFiLmV1Pgo+IC0tLQo+ICAgbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayAgICAg
ICAgICB8ICA5ICsrKysrLQo+ICAgbGliL3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2VuZCAgICAg
ICB8IDE1ICsrKysrKysrKysKPiAgIGxpYi9zeXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3ayAgICAg
ICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi9zeXNjYWxsX3NoaW0v
aW5jbHVkZS91ay9zeXNjYWxsLmggfCAgMiArKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNl
cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2Nh
bGxfc2hpbS9lbnRyeS5jLmluX2VuZAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxs
X3NoaW0vZ2VuX2VudHJ5LmF3awo+IAo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL01h
a2VmaWxlLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IGluZGV4IDY3Njc3ZmM2
Li41ZWExNTk2MyAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4g
KysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IEBAIC03LDcgKzcsOCBAQCBfX1BI
T05ZX0dFTl9TUkMgOj0gJChhZGRwcmVmaXggJChfX0dFTl9JTkNMVURFU19QQVRIKS8sICQoX19Q
SE9OWV9HRU5fU1JDKSkKPiAgIF9fUEhPTllfR0VOX1NSQyArPSAkKExJQlNZU0NBTExfU0hJTV9C
VUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbgo+ICAgX19QSE9OWV9HRU5fU1JDX05FVyA6PSAk
KGFkZHN1ZmZpeCAubmV3LCAkKF9fUEhPTllfR0VOX1NSQykpCj4gICAKPiAtX19HRU5fU1JDIDo9
ICQoX19HRU5fSU5DTFVERVNfUEFUSCkvcHJvdmlkZWRfc3lzY2FsbHMuaAo+ICtfX0dFTl9TUkMg
Oj0gJChfX0dFTl9JTkNMVURFU19QQVRIKS9wcm92aWRlZF9zeXNjYWxscy5oIFwKPiArCQkkKExJ
QlNZU0NBTExfU0hJTV9CVUlMRCkvc3lzY2FsbF9lbnRyeS5jCj4gICAKPiAgIFVLX1BSRVBBUkUt
JChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX0dFTl9T
UkMpCj4gICAKPiBAQCAtNDMsNiArNDQsMTAgQEAgJChfX0dFTl9JTkNMVURFU19QQVRIKS9wcm92
aWRlZF9zeXNjYWxscy5oOiAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3kKPiAg
IAkgcHJpbnRmICJcblVLX1NZU0NBTExfUFJPVE8oJXMsICVzKTtcbiIsICQkMiwgJCQxO30nIFwK
PiAgIAkkXiA+ICRACj4gICAKPiArJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3N5c2NhbGxfZW50
cnkuYzogJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4gJChM
SUJTWVNDQUxMX1NISU1fQkFTRSkvZ2VuX2VudHJ5LmF3awo+ICsJJChRKSBhd2sgLUYgJy0nIC1m
ICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl9lbnRyeS5hd2sgJDwgPiAkQAo+ICsJJChRKSBj
YXQgJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvZW50cnkuYy5pbl9lbmQgPj4gJEAKPiArCj4gICAk
KExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbi5uZXc6Cj4gICAJ
JFEgZWNobyAkKFVLX1BST1ZJREVEX1NZU0NBTExTLXkpIHwgdHIgJyAnICdcbicgPiAkQAo+ICAg
Cj4gQEAgLTU1LDQgKzYwLDYgQEAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCU1lTQ0FMTF9TSElN
KSArPSAtSSQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9pbmNsdWRlCj4gICBDSU5DTFVERVMteSAg
ICs9IC1JJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvaW5jbHVkZQo+ICAgQ1hYSU5DTFVERVMteSAr
PSAtSSQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2luY2x1ZGUKPiAgIAo+ICtMSUJTWVNDQUxMX1NI
SU1fU1JDUy15ICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9zeXNjYWxsX2VudHJ5LmMKPiAr
Cj4gICBMSUJTWVNDQUxMX1NISU1fQ0xFQU4gPSAkKF9fUEhPTllfR0VOX1NSQykgJChfX1BIT05Z
X0dFTl9TUkNfTkVXKSAkKF9fR0VOX1NSQykKPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hp
bS9lbnRyeS5jLmluX2VuZCBiL2xpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQKPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi41ODE0NWJiYwo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9saWIvc3lzY2FsbF9zaGltL2VudHJ5LmMuaW5fZW5kCj4gQEAgLTAsMCArMSwx
NSBAQAo+ICsKCkh1bSwgSSBhbSBub3QgaHVuZHJlZCBwZXJjZW50IGhhcHB5IHdpdGggdGhlIG5h
bWUgYGR5bmFtaWNgLiBXaGF0IGlmIHlvdSAKY2FsbCB0aGlzIGZ1bmN0aW9uIGp1c3QgdWtfc3lz
Y2FsbChsb25nIG4sIC4uLikgaW5zdGVhZD8gVGhpcyB3b3VsZCBiZSAKbW9yZSBpbmxpbmUgd2l0
aCB3aGF0IHlvdSBrbm93IGZyb20gTGludXggd2l0aCBsb25nIHN5c2NhbGwobG9uZyAKbnVtYm5l
ciwgLi4uKSBmcm9tIDxzeXMvc3lzY2FsbC5oPi4KCj4gK2xvbmcgdWtfc3lzY2FsbF9keW5hbWlj
KGxvbmcgbiwgLi4uKQo+ICt7Cj4gKwl2YV9saXN0IGFwOwo+ICsJc3lzY2FsbF9hcmdfdCBhLGIs
YyxkLGUsZjsKPiArCXZhX3N0YXJ0KGFwLCBuKTsKPiArCWE9dmFfYXJnKGFwLCBsb25nKTsKPiAr
CWI9dmFfYXJnKGFwLCBsb25nKTsKPiArCWM9dmFfYXJnKGFwLCBsb25nKTsKPiArCWQ9dmFfYXJn
KGFwLCBsb25nKTsKPiArCWU9dmFfYXJnKGFwLCBsb25nKTsKPiArCWY9dmFfYXJnKGFwLCBsb25n
KTsKPiArCXZhX2VuZChhcCk7Cj4gKwlyZXR1cm4gX19zeXNjYWxsX2R5bmFtaWMobixhLGIsYyxk
LGUsZik7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdr
IGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK
PiBpbmRleCAwMDAwMDAwMC4uOTI0NTcwODkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3N5
c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdrCj4gQEAgLTAsMCArMSw0MCBAQAo+ICtCRUdJTiB7Cj4g
KwltYXhfYXJncyA9IDYKPiArCXByaW50ICIvKiBBdXRvIGdlbmVyYXRlZCBmaWxlLiBETyBOT1Qg
RURJVCAqL1xuXG4iCj4gKwo+ICsJcHJpbnQgIiNpbmNsdWRlIDx1ay9zeXNjYWxsLmg+Igo+ICsJ
cHJpbnQgIiNpbmNsdWRlIDx1ay9wcmludC5oPlxuIgo+ICsKPiArCXByaW50ZiAic3RhdGljIGlu
bGluZSBsb25nIF9fc3lzY2FsbF9keW5hbWljKGxvbmcgbnIsICIKPiArCWZvciAoaSA9IDE7IGkg
PCBtYXhfYXJnczsgaSsrKQo+ICsJCXByaW50ZiAibG9uZyBhcmclZCwgIixpCj4gKwlwcmludGYg
ImxvbmcgYXJnJWQpXG57XG4iLCBtYXhfYXJncwo+ICsKPiArCWZvciAoaSA9IDE7IGkgPD0gbWF4
X2FyZ3M7IGkrKykKPiArCQlwcmludGYgIlx0KHZvaWQpIGFyZyVkO1xuIiwgaQo+ICsKPiArCXBy
aW50ICJcblx0c3dpdGNoIChucikgeyIKPiArfQo+ICsKPiArCj4gKy9bYS16QS1aMC05XSstWzAt
OV0rL3sKPiArCW5hbWUgPSAkMQo+ICsJc3lzX25hbWUgPSAiU1lTXyIgbmFtZQo+ICsJdWtfbmFt
ZSA9ICJ1a19zeXNjYWxsXyIgbmFtZQo+ICsJYXJnc19uciA9ICQyICsgMAo+ICsJcHJpbnRmICJc
dGNhc2UgJXM6XG4iLCBzeXNfbmFtZTsKPiArCXByaW50ZiAiXHRcdHJldHVybiAlcygiLCB1a19u
YW1lOwo+ICsJZm9yIChpID0gMTsgaSA8IGFyZ3NfbnI7IGkrKykKPiArCQlwcmludGYoImFyZyVk
LCAiLCBpKQo+ICsJaWYgKGFyZ3NfbnIgPiAwKQo+ICsJCXByaW50ZigiYXJnJWQiLCBhcmdzX25y
KQo+ICsJcHJpbnRmKCIpO1xuIikKPiArfQo+ICsKPiArRU5EIHsKPiArCXByaW50ZiAiXHRkZWZh
dWx0OlxuIgo+ICsJcHJpbnRmICJcdFx0dWtfcHJfZGVidWcoXCJzeXNjYWxsIG5yICUlbGQgaXMg
bm90IGltcGxlbWVudGVkXCIsIG5yKTtcbiIKPiArCXByaW50ZiAiXHRcdGVycm5vID0gLUVOT1NZ
UztcbiIKPiArCXByaW50ZiAiXHRcdHJldHVybiAtMTtcbiIKPiArCXByaW50ZiAiXHR9XG59XG4i
Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwu
aCBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKPiBpbmRleCAxOTE2MWU1
ZS4uMTM5MTNiYWIgMTAwNjQ0Cj4gLS0tIGEvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5
c2NhbGwuaAo+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKPiBA
QCAtOTMsNiArOTMsOCBAQCB0eXBlZGVmIGxvbmcgc3lzY2FsbF9hcmdfdDsKPiAgICNpbmNsdWRl
IDx1ay9iaXRzL3Byb3ZpZGVkX3N5c2NhbGxzLmg+Cj4gICAjaW5jbHVkZSA8dWsvYml0cy9zeXNj
YWxsX3N0dWJzLmg+Cj4gICAKPiArbG9uZyB1a19zeXNjYWxsX2R5bmFtaWMobG9uZyBuLCAuLi4p
Owo+ICsKPiAgICNkZWZpbmUgc3lzY2FsbCguLi4pCQkJCQkJCVwKPiAgIAlVS19DT05DQVQoX191
a19zeXNjYWxsLCBfX1NZU0NBTExfTkFSR1MoX19WQV9BUkdTX18pKShfX1ZBX0FSR1NfXykKPiAg
ICNlbmRpZgo+IAoKVGhhbmtzLAoKU2ltb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 14:57:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 14:57: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 1hYXLt-0001Zd-NZ; Wed, 05 Jun 2019 14:57:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYXLs-0001ZV-0F
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 14:57:20 +0000
X-Inumbo-ID: 34e00c21-87a2-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 34e00c21-87a2-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 14:57:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DDB01F208E;
 Wed,  5 Jun 2019 16:57:14 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hwST8TE_57V7; Wed,  5 Jun 2019 16:57:14 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A776EF2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 16:57:12 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 16:57:12 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <66e7992f-a6ac-2ca4-0455-95bb0771b446@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-6-yuri.volchkov@neclab.eu>
 <66e7992f-a6ac-2ca4-0455-95bb0771b446@neclab.eu>
Date: Wed, 5 Jun 2019 16:57:09 +0200
Message-ID: <tza4s2ef48xepm.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 05/10] lib/syscall_shim:
 generate base headers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

U2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+IHdyaXRlczoKCj4gT24gMDQu
MDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4+IFRoZSBmb2xsb3dpbmcgaGVhZGVy
cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb2RlIGluIHRoaXMgcGF0Y2g6Cj4+ICAgIC0gc3lzY2Fs
bF9ucnMuaCAtIGp1c3QgZGVmaW5pdGlvbnMgb2YgYWxsIHRoZSBzeXNjYWxscyB3aXRoIHRoZWly
Cj4+ICAgICAgbnVtYmVycwo+PiAgICAtIHN5c2NhbGxfbWFwLmggIC0gcHJvdmlkZXMgbWFwcyBm
cm9tIHN5c2NhbGwgbnVtYmVyIHRvIGEgY29uY3JldGUKPj4gICAgICBmdW5jdGlvbiBpbiB0aGUg
VW5pa2FyZnQKPj4gICAgLSBzeXNjYWxsX3N0dWJzLmggLSBpZiBubyBsaWJyYXJ5IGlzIHByb3Zp
ZGluZyBhIHN5c2NhbGwsIGl0IHdpbGwgYmUKPj4gICAgICByZXNvbHZlZCB0byBhIHN0dWIsIGRl
ZmluZWQgaW4gdGhpcyBmaWxlCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5
dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPj4gLS0tCj4+IEBAIC0wLDAgKzEsMyBAQAo+PiArY29u
ZmlnIExJQlNZU0NBTExfU0hJTQo+PiArCWJvb2wgIlN5c2NhbGwgc2hpbSBsYXllciIKPj4gKwlk
ZWZhdWx0IG4KPj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgYi9s
aWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGlu
ZGV4IDAwMDAwMDAwLi41MmExMmYxOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2xpYi9zeXNj
YWxsX3NoaW0vTWFrZWZpbGUudWsKPj4gQEAgLTAsMCArMSw0MCBAQAo+PiArJChldmFsICQoY2Fs
bCBhZGRsaWJfcyxsaWJzeXNjYWxsX3NoaW0sJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSkpCj4+
ICsKPj4gK19fR0VOX0lOQ0xVREVTX1BBVEggOj0gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2lu
Y2x1ZGUvdWsvYml0cwo+Cj4gT25lIGNvbW1lbnQgdG8gdGhlIGBfX2AgcHJlZml4ZWQgdmFyaWFi
bGVzOiBJIHByZWZlciBhbGwgb2YgdGhlbSB0byBiZSAKPiBuYW1lc3BhY2VkIHdpdGggYExJQlNZ
U0NBTExfU0hJTV9gIGluc3RlYWQuIFdlIGhhdmUganVzdCB0aGlzIGFzIAo+IG5hbWVzcGFjaW5n
IHNjaGVtZSBzbyBmYXIgYW5kIGl0IGFsc28gbWFrZXMgYG1ha2UgcHJpbnQtdmFyc2AgbW9yZSAK
PiB1bmRlcnN0YW5kYWJsZS4KTWFrZXMgc2Vuc2UuIFRoYXQgd2FzIHF1aXQgYW4gYWR2ZW50dXJl
LCBidXQgSSBoYXZlIHJlLXByZWZpeGVkIGFsbCB0aGUKdmFyaWFibGVzIGluIHRoaXMgbWFrZWZp
bGUgOikKCj4KPj4gKwo+PiArX19QSE9OWV9HRU5fU1JDIDo9IHN5c2NhbGxfbWFwLmggc3lzY2Fs
bF9zdHVicy5oIHN5c2NhbGxfbnJzLmgKPj4gK19fUEhPTllfR0VOX1NSQyA6PSAkKGFkZHByZWZp
eCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpLywgJChfX1BIT05ZX0dFTl9TUkMpKQo+PiArX19QSE9O
WV9HRU5fU1JDX05FVyA6PSAkKGFkZHN1ZmZpeCAubmV3LCAkKF9fUEhPTllfR0VOX1NSQykpCj4+
ICsKPj4gK1VLX1BSRVBBUkUtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAkKF9fUEhPTllf
R0VOX1NSQykKPj4gKwo+PiArCj4+ICtfX1NZU0NBTExfU0hJTV9URU1QTCA6PSAkKExJQlNZU0NB
TExfU0hJTV9CQVNFKS9hcmNoLyQoQ09ORklHX1VLX0FSQ0gpL3N5c2NhbGwuaC5pbgo+PiArCj4+
ICskKGNhbGwgdWtfbWtfZGlyLCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpKQo+Cj4gSHVtLCBub3cg
SSB1bmRlcnN0YW5kIHdoYXQgeW91IHdhbnQgdG8gZG8uIEluIHRoaXMgY2FzZSB5b3UgYXJlIGx1
Y2t5IAo+IGFuZCBjcmVhdGUgYSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeS4g
TWF5YmUgYSAKPiBgbWtfbGliX3N1Yl9kaXJgIHdvdWxkIG1ha2UgbW9yZSBzZW5zZSB0aGFuIGEg
Z2VuZXJhbCBgdWtfbWtfZGlyYC4gSSAKPiBjb3VsZCBpbWFnaW5lIHRoZSBmb2xsb3dpbmcgc3lu
dGF4IHdpdGhpbiB0aGlzIGZpbGU6Cj4KPiAkKGNhbGwgbWtfbGliX3N1Yl9kaXIsbGlic3lzY2Fs
bF9zaGltLGluY2x1ZGUvdWsvYml0cykKPgo+IE9yIG1heWJlIGV2ZW46Cj4KPiBfX0dFTl9JTkNM
VURFU19QQVRIIDo9ICQoY2FsbCBsaWJfc3ViX2RpcixsaWJzeXNjYWxsX3NoaW0saW5jbHVkZS91
ay9iaXRzKQo+Cj4+ICsKPj4gKy5QSE9OWTogJChfX1BIT05ZX0dFTl9TUkNfTkVXKQo+PiArCj4+
ICskKF9fUEhPTllfR0VOX1NSQyk6ICU6ICUubmV3Cj4+ICsJQGNtcCAtcyAkXiAkQDsgaWYgWyAk
JD8gLW5lIDAgXTsgdGhlbiBjcCAkXiAkQDsgZmkKPj4gKwo+PiArJChfX0dFTl9JTkNMVURFU19Q
QVRIKS9zeXNjYWxsX25ycy5oLm5ldzoKPj4gKwkkKFEpIGF3ayAnQkVHSU4ge3ByaW50ICIvKiBB
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlOyBETyBOT1QgRURJVCAqLyJ9IFwKPj4gKwkJe3By
aW50ZiAiXG4jZGVmaW5lIFNZU18lc1x0XHQlcyIsIFwKPj4gKwkJc3Vic3RyKCQkMiw2KSwkJDN9
JyBcCj4+ICsJCSQoX19TWVNDQUxMX1NISU1fVEVNUEwpID4gJEAKPj4gKwo+PiArJChfX0dFTl9J
TkNMVURFU19QQVRIKS9zeXNjYWxsX21hcC5oLm5ldzoKPj4gKwkkKFEpIGF3ayAnQkVHSU4gXAo+
PiArCQl7cHJpbnQgIi8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElU
ICovXG4ifSBcCj4+ICsJCS8jZGVmaW5lIF9fTlJfL3tcCj4+ICsJCQlwcmludGYgIiNkZWZpbmUg
dWtfc3lzY2FsbF9mbl8lcyguLi4pIHVrX3N5c2NhbGxfJXMoX19WQV9BUkdTX18pXG4iLCBcCj4+
ICsJCQkJJCQzLHN1YnN0cigkJDIsNilcCj4+ICsJCX0nIFwKPj4gKwkJJChfX1NZU0NBTExfU0hJ
TV9URU1QTCkgPiAkQAo+Cj4gWW91IHVzZWQgYCQoQVdLKWAgaW5zdGVhZCBvZiBgYXdrYCBpbiB0
aGUgZm9sbG93aW5nIHJ1bGUuIENvdWxkIHlvdSB1c2UgCj4gYCQoQVdLKWAgZXZlcnl3aGVyZSBp
bnN0ZWFkPwo+IEluc3RlYWQgb2YgbWFraW5nIGFsbCB0aGVzZSBydWxlcyBxdWlldCwgY291bGQg
eW91IG1ha2UgdGhlbSBhcyBhIAo+IHByZXR0eS1wcmludGVkIGJ1aWxkIGNvbW1hbmQgKGBidWls
ZF9jbWRgKT8KT2ssIGJ1dCBubyBtb3JlIGlubGluZSBhd2sgc2NyaXB0cywgYmVjYXVzZSBpdCBk
b2VzIG5vdCB3b3JrIHdpdGgKYnVpbGRfY21kLiBJIG1vdmVkIGV2ZXJ5dGhpbmcgdG8gYXdrIHNj
cmlwdHMKCj4gQWxzbywgd291bGRuJ3QgYmUgYC5nZW5gIGJlIGEgbmljZXIgZXh0ZW5zaW9uIHRo
YW4gYC5uZXdgPwpJdCBmb2xsb3dzIHRoZSBleGlzdGluZyBwYXR0ZXJuIGZvciAkKEtDT05GSUdf
RUxJQl9JTikuCgo+Cj4+ICsKPj4gKyQoX19HRU5fSU5DTFVERVNfUEFUSCkvc3lzY2FsbF9zdHVi
cy5oLm5ldzoKPj4gKwkkKFEpICQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5f
c3R1YnMuYXdrIFwKPj4gKwkJJChfX1NZU0NBTExfU0hJTV9URU1QTCkgPiAkQAo+PiArCj4KPiBJ
IHRoaW5rIGFsbCBvZiB0aG9zZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJlY29tZSBwYXJ0IG9m
IHRoZSBwcmVwYXJlIAo+IHN0ZXAsIHJpZ2h0PzoKPgo+ICAgVUtfUFJFUEFSRS0kKENPTkZJR19M
SUJTWVNDQUxMX1NISU0pICs9ICQoX19QSE9OWV9HRU5fU1JDX05FVykKPgo+PiArTElCU1lTQ0FM
TF9TSElNX0NMRUFOID0gJChfX1BIT05ZX0dFTl9TUkMpICQoX19QSE9OWV9HRU5fU1JDX05FVykK
Pj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX3N0dWJzLmF3ayBiL2xpYi9zeXNj
YWxsX3NoaW0vZ2VuX3N0dWJzLmF3awo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAw
MDAwMDAwMC4uOWUwYWQ2YzYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWIvc3lzY2FsbF9z
aGltL2dlbl9zdHVicy5hd2sKPj4gQEAgLTAsMCArMSw4IEBACj4+ICtCRUdJTiB7IHByaW50ICIv
KiBBdXRvIGdlbmVyYXRlZCBmaWxlLiBEbyBub3QgZWRpdCAqLyIgfQo+PiArewo+PiArCW5hbWUg
PSBzdWJzdHIoJDIsNik7Cj4+ICsJdWtfbmFtZSA9ICJ1a19zeXNjYWxsXyIgbmFtZQo+PiArCXBy
aW50ZiAiXG4jaWZuZGVmIEhBVkVfJXMiLCB1a19uYW1lOwo+PiArCXByaW50ZiAiXG4jZGVmaW5l
ICVzKC4uLikgdWtfc3lzY2FsbF9zdHViKFwiJXNcIikiLCB1a19uYW1lLCBuYW1lOwo+PiArCXBy
aW50ZiAiXG4jZW5kaWYgLyogSEFWRV8lcyAqL1xuIiwgdWtfbmFtZTsKPj4gK30KPj4gCgotLSAK
WXVyaSBWb2xjaGtvdgpTb2Z0d2FyZSBTcGVjaWFsaXN0CgpORUMgRXVyb3BlIEx0ZApLdXJmw7xy
c3Rlbi1BbmxhZ2UgMzYKRC02OTExNSBIZWlkZWxiZXJnCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:12:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:12: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 1hYXa4-0003Tz-6u; Wed, 05 Jun 2019 15:12:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYXa3-0003Tu-4P
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:11:59 +0000
X-Inumbo-ID: 420020a0-87a4-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 420020a0-87a4-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 15:11:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DEDC6F208E;
 Wed,  5 Jun 2019 17:11:55 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SdLeY2IVjPkZ; Wed,  5 Jun 2019 17:11:55 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A4FA5F2036
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:11:53 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:11:53 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <2cd1131f-c4f3-de84-eb0e-ad8c082c604c@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-8-yuri.volchkov@neclab.eu>
 <2cd1131f-c4f3-de84-eb0e-ad8c082c604c@neclab.eu>
Date: Wed, 5 Jun 2019 17:11:51 +0200
Message-ID: <tza4s2blzcxe14.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 07/10] lib/syscall_shim:
 introduce syscalls macro layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

U2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+IHdyaXRlczoKCj4gT24gMDQu
MDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4+IFRvIHByb3ZpZGUgYSBzeXNjYWxs
IHVzZXIgbmVlZHMgdG8gdXNlIG1hY3JvIFVLX1NZU0NBTExfUFJPVE8uIFRoZQo+PiBzeW50YXgg
aXMgdGhlIGZvbGxvd2luZzoKPj4gCj4KPiBIdW0sIGlzIFVLX1NZU0NBTExfUFJPVE8gdGhlIHJp
Z2h0IG5hbWU/IEkgc2F3IHRoYXQgaXMgY2FsbGVkIAo+IFVLX1NZU0NBTExfREVGSU5FKCkgaW4g
cGF0Y2ggbnVtYmVyIDguCk9vcHMKCj4KPj4gVUtfU1lTQ0FMTF9QUk9UTyhzeXNjYWxsX25hbWUs
IGFyZ3VtZW50XzFfdHlwZSwgYXJndW1lbnRfMV9uYW1lLCAuLi4pCj4+IHsKPj4gICAgICA8c3lz
Y2FsbF9ib2R5PjsKPj4gfQo+PiAKPj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVy
aS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4+IC0tLQo+PiAgIGxpYi9zeXNjYWxsX3NoaW0vTWFrZWZp
bGUudWsgICAgICAgICAgfCAgIDUgKysKPj4gICBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsv
c3lzY2FsbC5oIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgMiBmaWxlcyBj
aGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lz
Y2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oCj4+IAo+PiBkaWZmIC0tZ2l0IGEvbGliL3N5
c2NhbGxfc2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKPj4g
aW5kZXggYmI3NmQ3YjEuLjY3Njc3ZmM2IDEwMDY0NAo+PiAtLS0gYS9saWIvc3lzY2FsbF9zaGlt
L01ha2VmaWxlLnVrCj4+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKPj4gQEAg
LTUwLDQgKzUwLDkgQEAgJChfX0dFTl9JTkNMVURFU19QQVRIKS9zeXNjYWxsX3N0dWJzLmgubmV3
Ogo+PiAgIAkkKFEpICQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fc3R1YnMu
YXdrIFwKPj4gICAJCSQoX19TWVNDQUxMX1NISU1fVEVNUEwpID4gJEAKPj4gICAKPj4gK0NJTkNM
VURFUy0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0pICAgKz0gLUkkKExJQlNZU0NBTExfU0hJTV9C
VUlMRCkvaW5jbHVkZQo+PiArQ1hYSU5DTFVERVMtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSAr
PSAtSSQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9pbmNsdWRlCj4+ICtDSU5DTFVERVMteSAgICs9
IC1JJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvaW5jbHVkZQo+PiArQ1hYSU5DTFVERVMteSArPSAt
SSQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2luY2x1ZGUKPj4gKwo+PiAgIExJQlNZU0NBTExfU0hJ
TV9DTEVBTiA9ICQoX19QSE9OWV9HRU5fU1JDKSAkKF9fUEhPTllfR0VOX1NSQ19ORVcpICQoX19H
RU5fU1JDKQo+PiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2Nh
bGwuaCBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKPj4gbmV3IGZpbGUg
bW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAuLjE5MTYxZTVlCj4+IC0tLSAvZGV2L251bGwK
Pj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+PiBAQCAtMCww
ICsxLDEwMCBAQAo+PiArI2lmbmRlZiBfX1VLX1NZU0NBTExfSF9fCj4+ICsjZGVmaW5lIF9fVUtf
U1lTQ0FMTF9IX18KPj4gKwo+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+ICsjaW5jbHVkZSA8dWsv
cHJpbnQuaD4KPgo+IERvZXNuJ3QgZXNzZW50aWFscy5oIG5lZWQgdG8gYmUgaW5jbHVkZWQgdG8g
aGF2ZSB0aGUgVUtfQ09OQ0FUIG1hY3JvIAo+IHBvcHVsYXRlZD8KU3VyZQoKPgo+PiArCj4+ICsj
ZGVmaW5lIF9fdWtfc2NjKFgpICgobG9uZykgKFgpKQo+PiArdHlwZWRlZiBsb25nIHN5c2NhbGxf
YXJnX3Q7Cj4+ICsKPj4gKyNkZWZpbmUgX191a19zeXNjYWxsKHN5c2NhbGxfbnIsIC4uLikgXAo+
PiArCVVLX0NPTkNBVCh1a19zeXNjYWxsX2ZuXywgc3lzY2FsbF9ucikgKF9fVkFfQVJHU19fKQo+
PiArCj4+ICsjZGVmaW5lIF9fdWtfc3lzY2FsbDAobikgX191a19zeXNjYWxsKG4pCj4+ICsjZGVm
aW5lIF9fdWtfc3lzY2FsbDEobixhKSBfX3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSkKPj4gKyNk
ZWZpbmUgX191a19zeXNjYWxsMihuLGEsYikgX191a19zeXNjYWxsKG4sX191a19zY2MoYSksX191
a19zY2MoYikpCj4+ICsjZGVmaW5lIF9fdWtfc3lzY2FsbDMobixhLGIsYykgX191a19zeXNjYWxs
KG4sX191a19zY2MoYSksX191a19zY2MoYiksX191a19zY2MoYykpCj4+ICsjZGVmaW5lIF9fdWtf
c3lzY2FsbDQobixhLGIsYyxkKSBfX3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhi
KSxfX3VrX3NjYyhjKSxfX3VrX3NjYyhkKSkKPj4gKyNkZWZpbmUgX191a19zeXNjYWxsNShuLGEs
YixjLGQsZSkgX191a19zeXNjYWxsKG4sX191a19zY2MoYSksX191a19zY2MoYiksX191a19zY2Mo
YyksX191a19zY2MoZCksX191a19zY2MoZSkpCj4+ICsjZGVmaW5lIF9fdWtfc3lzY2FsbDYobixh
LGIsYyxkLGUsZikgX191a19zeXNjYWxsKG4sX191a19zY2MoYSksX191a19zY2MoYiksX191a19z
Y2MoYyksX191a19zY2MoZCksX191a19zY2MoZSksX191a19zY2MoZikpCj4+ICsjZGVmaW5lIF9f
dWtfc3lzY2FsbDcobixhLGIsYyxkLGUsZixnKSAoX191a19zeXNjYWxsKShuLF9fdWtfc2NjKGEp
LF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMpLF9fdWtfc2NjKGQpLF9fdWtfc2NjKGUpLF9fdWtfc2Nj
KGYpLF9fdWtfc2NjKGcpKQo+PiArCj4+ICsKPj4gKyNkZWZpbmUgX19TWVNDQUxMX05BUkdTX1go
YSxiLGMsZCxlLGYsZyxoLG4sLi4uKSBuCj4+ICsjZGVmaW5lIF9fU1lTQ0FMTF9OQVJHUyguLi4p
IF9fU1lTQ0FMTF9OQVJHU19YKF9fVkFfQVJHU19fLDcsNiw1LDQsMywyLDEsMCwpCj4+ICsKPj4g
KyNkZWZpbmUgX19TWVNDQUxMX0RFRl9OQVJHU19YKHosIGExLGEyLCBiMSxiMiwgYzEsYzIsIGQx
LGQyLCBlMSxlMiwgZjEsZjIsIGcxLGcyLCBuciwgLi4uKSBucgo+PiArI2RlZmluZSBfX1NZU0NB
TExfREVGX05BUkdTKC4uLikgX19TWVNDQUxMX0RFRl9OQVJHU19YKF9fVkFfQVJHU19fLCA3LDcs
IDYsNiwgNSw1LCA0LDQsIDMsMywgMiwyLCAxLDEsMCkKPj4gKwo+PiArI2RlZmluZSBfX1VLX05B
TUUyU0NBTExfRk4obmFtZSkgVUtfQ09OQ0FUKHVrX3N5c2NhbGxfLCBuYW1lKQo+PiArCj4+ICsj
ZGVmaW5lIFVLX0FSR19NQVAxKG0sIHR5cGUsIGFyZykgbSh0eXBlLCBhcmcpCj4+ICsjZGVmaW5l
IFVLX0FSR19NQVAyKG0sIHR5cGUsIGFyZywgLi4uKSBtKHR5cGUsIGFyZyksIFVLX0FSR19NQVAx
KG0sIF9fVkFfQVJHU19fKQo+PiArI2RlZmluZSBVS19BUkdfTUFQMyhtLCB0eXBlLCBhcmcsIC4u
LikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQMihtLCBfX1ZBX0FSR1NfXykKPj4gKyNkZWZpbmUg
VUtfQVJHX01BUDQobSwgdHlwZSwgYXJnLCAuLi4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDMo
bSwgX19WQV9BUkdTX18pCj4+ICsjZGVmaW5lIFVLX0FSR19NQVA1KG0sIHR5cGUsIGFyZywgLi4u
KSBtKHR5cGUsIGFyZyksIFVLX0FSR19NQVA0KG0sIF9fVkFfQVJHU19fKQo+PiArI2RlZmluZSBV
S19BUkdfTUFQNihtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQNSht
LCBfX1ZBX0FSR1NfXykKPj4gKyNkZWZpbmUgVUtfQVJHX01BUDcobSwgdHlwZSwgYXJnLCAuLi4p
IG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDYobSwgX19WQV9BUkdTX18pCj4+ICsjZGVmaW5lIFVL
X0FSR19NQVB4KG5yX2FyZ3MsIC4uLikgVUtfQ09OQ0FUKFVLX0FSR19NQVAsIG5yX2FyZ3MpKF9f
VkFfQVJHU19fKQo+PiArCj4+ICsjZGVmaW5lIFNfQVJHX0xPTkcodHlwZSwgYXJnKSB1bnNpZ25l
ZCBsb25nIGFyZwo+PiArI2RlZmluZSBTX0FSR19BQ1RVQUwodHlwZSwgYXJnKSB0eXBlIGFyZwo+
PiArI2RlZmluZSBTX0FSR19DQVNUKHR5cGUsIGFyZykgKHR5cGUpIGFyZwo+PiArCj4+ICsKPj4g
KyNpZmRlZiBDT05GSUdfTElCU1lTQ0FMTF9TSElNCj4+ICsjZGVmaW5lIF9fVUtfU1lTQ0FMTF9E
RUZJTkUoeCwgbmFtZSwgLi4uKQkJCQlcCj4+ICsJc3RhdGljIGlubGluZSBsb25nIF9fIyNuYW1l
KFVLX0FSR19NQVB4KHgsIFNfQVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKTsgXAo+PiArCWludCBu
YW1lKFVLX0FSR19NQVB4KHgsIFNfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSkJCQlcCj4KPiBJbiB0
aGlzIHR5cGUgY2FzdGluZyB3cmFwcGVyLCBzaG91bGRuJ3QgdGhpcyBgaW50YCBiZSBhIGBsb25n
YCBpbnN0ZWFkPwpZZXMgaXQgc2hvdWxkCj4KPj4gKwl7CQkJCQkJCQlcCj4+ICsJCWxvbmcgcmV0
ID0gX18jI25hbWUoCQkJCQlcCj4+ICsJCQlVS19BUkdfTUFQeCh4LCBTX0FSR19DQVNULCBfX1ZB
X0FSR1NfXykpOwkJXAo+PiArCQlyZXR1cm4gcmV0OwkJCQkJCVwKPj4gKwl9CQkJCQkJCQlcCj4+
ICsJc3RhdGljIGlubGluZSBsb25nIF9fIyNuYW1lKFVLX0FSR19NQVB4KHgsIFNfQVJHX0FDVFVB
TCwgX19WQV9BUkdTX18pKQo+PiArI2Vsc2UKPj4gKyNkZWZpbmUgX19VS19TWVNDQUxMX0RFRklO
RSh4LCBuYW1lLCAuLi4pCQkJCVwKPj4gKwlzdGF0aWMgaW5saW5lIGxvbmcgbmFtZShVS19BUkdf
TUFQeCh4LCBTX0FSR19BQ1RVQUwsIF9fVkFfQVJHU19fKSkKPj4gKyNlbmRpZgo+PiArCj4+ICsj
ZGVmaW5lIF9VS19TWVNDQUxMX0RFRklORSguLi4pIF9fVUtfU1lTQ0FMTF9ERUZJTkUoX19WQV9B
UkdTX18pCj4+ICsjZGVmaW5lIFVLX1NZU0NBTExfREVGSU5FKG5hbWUsIC4uLikJCQkJXAo+PiAr
CV9VS19TWVNDQUxMX0RFRklORShfX1NZU0NBTExfREVGX05BUkdTKF9fVkFfQVJHU19fKSwJXAo+
PiArCQkJICAgIF9fVUtfTkFNRTJTQ0FMTF9GTihuYW1lKSwJCVwKPj4gKwkJCSAgICBfX1ZBX0FS
R1NfXykKPj4gKwo+PiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTX1RZUEUgdW5zaWduZWQgbG9u
Zwo+PiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTMCgpICB2b2lkCj4+ICsjZGVmaW5lIF9fVUtf
U1BST1RPX0FSR1MxKCkgIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBhCj4+ICsjZGVmaW5lIF9fVUtf
U1BST1RPX0FSR1MyKCkgIF9fVUtfU1BST1RPX0FSR1MxKCksIF9fVUtfU1BST1RPX0FSR1NfVFlQ
RSBiCj4+ICsjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1MzKCkgIF9fVUtfU1BST1RPX0FSR1MyKCks
IF9fVUtfU1BST1RPX0FSR1NfVFlQRSBjCj4+ICsjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1M0KCkg
IF9fVUtfU1BST1RPX0FSR1MzKCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBkCj4+ICsjZGVmaW5l
IF9fVUtfU1BST1RPX0FSR1M1KCkgIF9fVUtfU1BST1RPX0FSR1M0KCksIF9fVUtfU1BST1RPX0FS
R1NfVFlQRSBlCj4+ICsjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1M2KCkgIF9fVUtfU1BST1RPX0FS
R1M1KCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBmCj4+ICsjZGVmaW5lIF9fVUtfU1BST1RPX0FS
R1M3KCkgIF9fVUtfU1BST1RPX0FSR1M2KCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBnCj4+ICsj
ZGVmaW5lIF9fVUtfU1BST1RPX0FSR1N4KGFyZ3NfbnIpICBcCj4+ICsJVUtfQ09OQ0FUKF9fVUtf
U1BST1RPX0FSR1MsIGFyZ3NfbnIpKCkKPj4gKwo+PiArI2RlZmluZSBVS19TWVNDQUxMX1BST1RP
KGFyZ3NfbnIsIHN5c2NhbGxfbmFtZSkJCQlcCj4+ICsJaW50IFVLX0NPTkNBVCh1a19zeXNjYWxs
Xywgc3lzY2FsbF9uYW1lKSgJXAo+PiArCQlfX1VLX1NQUk9UT19BUkdTeChhcmdzX25yKSkKPj4g
Kwo+PiArI2RlZmluZSB1a19zeXNjYWxsX3N0dWIoc3lzY2FsbF9uYW1lKSAoewkJCVwKPj4gKwkJ
CXVrX3ByX2RlYnVnKCJzeXNjYWxsIFwiIiBzeXNjYWxsX25hbWUJXAo+PiArCQkJCSAgICAiXCIg
aXMgbm90IGltcGxlbWVudGVkIik7CVwKPj4gKwkJCWVycm5vID0gLUVOT1NZUzsJCQlcCj4+ICsJ
CQktMTsJCQkJCVwKPj4gKwkJfSkKPgo+IEh1bSwgc2luY2UgeW91ciBzaGltIGxheWVyIGlzIG1p
bWlja2luZyBMaW51eCdzIHVzZXJzcGFjZSBzeXMgY2FsbCAKPiB3cmFwcGVyICg8c3lzL3N5c2Nh
bGwuaD4pLCBpdCBpcyBleHBlY3RlZCB0aGF0IGEgc3lzY2FsbCBmdW5jdGlvbiAKPiBoYW5kbGVz
IGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGVycm9yIGNhc2VzLiBJIHN1Z2dlc3QgdGhhdCB5b3Ug
YWRkIGEgCj4gY29tbWVudCB0byBVS19TWVNDQUxMX0RFRklORSgpIHNvIHRoYXQgZXZlcnlvbmUg
dGhhdCBpbXBsZW1lbnRzIHN1Y2ggYSAKPiBzeXN0ZW0gY2FsbCBpcyBub3QgZ2V0dGluZyBjb25m
dXNlZCB3aXRoIHdoYXQgYSBzeXNjYWxsIGluIHRoZSBrZXJuZWwgCj4gbWVhbnMgaW4gdGVybXMg
b2YgcmV0dXJuIHZhbHVlcyBhbmQgYXJndW1lbnRzLgo+IENvdWxkIHlvdSBhbHNvIHdyaXRlIHRo
YXQgdGhlIHJldHVybiB0eXBlIGlzIGBsb25nYCBvbiBzdWNoIGEgZGVmaW5lZCAKPiBmdW5jdGlv
bj8gVGhpcyBpcyBraW5kIG9mIGhpZGRlbiBpbiB0aGUgVUtfU1lTQ0FMTF9ERUZJTkUoKSBtYWNy
by4KQWxyaWdodCBJIHdpbGwgYWRkIGEgY29tbWVudAo+Cj4+ICsKPj4gKwo+PiArI2lmZGVmIENP
TkZJR19MSUJTWVNDQUxMX1NISU0KPj4gKyNpbmNsdWRlIDx1ay9iaXRzL3N5c2NhbGxfbnJzLmg+
Cj4+ICsjaW5jbHVkZSA8dWsvYml0cy9zeXNjYWxsX21hcC5oPgo+PiArI2luY2x1ZGUgPHVrL2Jp
dHMvcHJvdmlkZWRfc3lzY2FsbHMuaD4KPj4gKyNpbmNsdWRlIDx1ay9iaXRzL3N5c2NhbGxfc3R1
YnMuaD4KPj4gKwo+PiArI2RlZmluZSBzeXNjYWxsKC4uLikJCQkJCQkJXAo+PiArCVVLX0NPTkNB
VChfX3VrX3N5c2NhbGwsIF9fU1lTQ0FMTF9OQVJHUyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJHU19f
KQo+PiArI2VuZGlmCj4+ICsKPj4gKyNlbmRpZiAvKiBfX1VLX1NZU0NBTExfSF9fICovCj4+IAoK
LS0gCll1cmkgVm9sY2hrb3YKU29mdHdhcmUgU3BlY2lhbGlzdAoKTkVDIEV1cm9wZSBMdGQKS3Vy
ZsO8cnN0ZW4tQW5sYWdlIDM2CkQtNjkxMTUgSGVpZGVsYmVyZwoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:36:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:36: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 1hYXxX-0005S8-5a; Wed, 05 Jun 2019 15:36: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=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYXxV-0005S3-S9
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:36:13 +0000
X-Inumbo-ID: a410d178-87a7-11e9-b41e-f3c9dcb954cf
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a410d178-87a7-11e9-b41e-f3c9dcb954cf;
 Wed, 05 Jun 2019 15:36:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id B0155103EA6;
 Wed,  5 Jun 2019 17:32:49 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xNritkUOLrcO; Wed,  5 Jun 2019 17:32:49 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 8C92210396D
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:32:49 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:32:49 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <61418278-94a3-f433-5056-8a50adab433a@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-10-yuri.volchkov@neclab.eu>
 <61418278-94a3-f433-5056-8a50adab433a@neclab.eu>
Date: Wed, 5 Jun 2019 17:32:47 +0200
Message-ID: <tza4s28sugxd28.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 09/10] lib/syscall_shim:
 introduce uk_syscall_dynamic
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

U2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+IHdyaXRlczoKCj4gSGV5IFl1
cmksCj4KPiB0aGFua3MgZm9yIHRoaXMgcGF0Y2guIEFzIHdpdGggdGhlIHByZXZpb3VzIHBhdGNo
ZXMgcmVnYXJkaW5nIAo+IE1ha2VmaWxlLnVrLCBjYW4geW91IGFwcGx5IHRoZSBzYW1lIGNoYW5n
ZXMgaGVyZSAoYnVpbGRfY21kIGFuZCB2YXJpYWJsZSAKPiBuYW1lIHNwYWNpbmcpPwpPawo+Cj4g
U2VlIG15IG90aGVyIGNvbW1lbnRzIGlubGluZS4KPgo+IE9uIDA0LjA2LjE5IDE4OjI4LCBZdXJp
IFZvbGNoa292IHdyb3RlOgo+PiBUaGUgbWFjcm8gbGF5ZXIgaXMgZWZmaWNpZW50LCBidXQgdGhl
IGV4YWN0IHN5c2NhbGwgbXVzdCBiZSBrbm93biBhdAo+PiB0aGUgY29tcGlsYXRpb24gc3RhZ2Uu
IElmIGEgc3lzY2FsbCBudW1iZXIgaXMga2VwdCBpbiBhIHZhcmlhYmxlIG1hY3JvCj4+IGxheWVy
IHdpbGwgbm90IGJlIGFibGUgdG8gcmVzb2x2ZSBpdCB0byB0aGUgc3lzY2FsbCBmdW5jdGlvbi4K
Pj4gCj4+IEZvciB0aGlzIGNhc2UgYW5vdGhlciBmaWxlIGlzIGdlbmVyYXRlZCAtIHN5c2NhbGxf
ZW50cnkuYy4gV2hlcmUKPj4gc3lzY2FsbHMgYXJlICdkeW5hbWljYWxseScgcmVzb2x2ZWQgaW50
byBhIGRlc3RpbmF0aW9uIGZ1bmN0aW9ucy4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9s
Y2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pgo+PiAtLS0KPj4gICBsaWIvc3lzY2FsbF9z
aGltL01ha2VmaWxlLnVrICAgICAgICAgIHwgIDkgKysrKystCj4+ICAgbGliL3N5c2NhbGxfc2hp
bS9lbnRyeS5jLmluX2VuZCAgICAgICB8IDE1ICsrKysrKysrKysKPj4gICBsaWIvc3lzY2FsbF9z
aGltL2dlbl9lbnRyeS5hd2sgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysr
Cj4+ICAgbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaCB8ICAyICsrCj4+ICAg
NCBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+ICAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQKPj4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdrCj4+IAo+PiBkaWZm
IC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0v
TWFrZWZpbGUudWsKPj4gaW5kZXggNjc2NzdmYzYuLjVlYTE1OTYzIDEwMDY0NAo+PiAtLS0gYS9s
aWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vTWFr
ZWZpbGUudWsKPj4gQEAgLTcsNyArNyw4IEBAIF9fUEhPTllfR0VOX1NSQyA6PSAkKGFkZHByZWZp
eCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpLywgJChfX1BIT05ZX0dFTl9TUkMpKQo+PiAgIF9fUEhP
TllfR0VOX1NSQyArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMu
aC5pbgo+PiAgIF9fUEhPTllfR0VOX1NSQ19ORVcgOj0gJChhZGRzdWZmaXggLm5ldywgJChfX1BI
T05ZX0dFTl9TUkMpKQo+PiAgIAo+PiAtX19HRU5fU1JDIDo9ICQoX19HRU5fSU5DTFVERVNfUEFU
SCkvcHJvdmlkZWRfc3lzY2FsbHMuaAo+PiArX19HRU5fU1JDIDo9ICQoX19HRU5fSU5DTFVERVNf
UEFUSCkvcHJvdmlkZWRfc3lzY2FsbHMuaCBcCj4+ICsJCSQoTElCU1lTQ0FMTF9TSElNX0JVSUxE
KS9zeXNjYWxsX2VudHJ5LmMKPj4gICAKPj4gICBVS19QUkVQQVJFLSQoQ09ORklHX0xJQlNZU0NB
TExfU0hJTSkgKz0gJChfX1BIT05ZX0dFTl9TUkMpICQoX19HRU5fU1JDKQo+PiAgIAo+PiBAQCAt
NDMsNiArNDQsMTAgQEAgJChfX0dFTl9JTkNMVURFU19QQVRIKS9wcm92aWRlZF9zeXNjYWxscy5o
OiAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3kKPj4gICAJIHByaW50ZiAiXG5V
S19TWVNDQUxMX1BST1RPKCVzLCAlcyk7XG4iLCAkJDIsICQkMTt9JyBcCj4+ICAgCSReID4gJEAK
Pj4gICAKPj4gKyQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9zeXNjYWxsX2VudHJ5LmM6ICQoTElC
U1lTQ0FMTF9TSElNX0JVSUxEKS9wcm92aWRlZF9zeXNjYWxscy5oLmluICQoTElCU1lTQ0FMTF9T
SElNX0JBU0UpL2dlbl9lbnRyeS5hd2sKPj4gKwkkKFEpIGF3ayAtRiAnLScgLWYgJChMSUJTWVND
QUxMX1NISU1fQkFTRSkvZ2VuX2VudHJ5LmF3ayAkPCA+ICRACj4+ICsJJChRKSBjYXQgJChMSUJT
WVNDQUxMX1NISU1fQkFTRSkvZW50cnkuYy5pbl9lbmQgPj4gJEAKPj4gKwo+PiAgICQoTElCU1lT
Q0FMTF9TSElNX0JVSUxEKS9wcm92aWRlZF9zeXNjYWxscy5oLmluLm5ldzoKPj4gICAJJFEgZWNo
byAkKFVLX1BST1ZJREVEX1NZU0NBTExTLXkpIHwgdHIgJyAnICdcbicgPiAkQAo+PiAgIAo+PiBA
QCAtNTUsNCArNjAsNiBAQCBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0pICs9
IC1JJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2luY2x1ZGUKPj4gICBDSU5DTFVERVMteSAgICs9
IC1JJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvaW5jbHVkZQo+PiAgIENYWElOQ0xVREVTLXkgKz0g
LUkkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9pbmNsdWRlCj4+ICAgCj4+ICtMSUJTWVNDQUxMX1NI
SU1fU1JDUy15ICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9zeXNjYWxsX2VudHJ5LmMKPj4g
Kwo+PiAgIExJQlNZU0NBTExfU0hJTV9DTEVBTiA9ICQoX19QSE9OWV9HRU5fU1JDKSAkKF9fUEhP
TllfR0VOX1NSQ19ORVcpICQoX19HRU5fU1JDKQo+PiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxf
c2hpbS9lbnRyeS5jLmluX2VuZCBiL2xpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQKPj4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAuLjU4MTQ1YmJjCj4+IC0tLSAv
ZGV2L251bGwKPj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2VuZAo+PiBAQCAt
MCwwICsxLDE1IEBACj4+ICsKPgo+IEh1bSwgSSBhbSBub3QgaHVuZHJlZCBwZXJjZW50IGhhcHB5
IHdpdGggdGhlIG5hbWUgYGR5bmFtaWNgLiBXaGF0IGlmIHlvdSAKPiBjYWxsIHRoaXMgZnVuY3Rp
b24ganVzdCB1a19zeXNjYWxsKGxvbmcgbiwgLi4uKSBpbnN0ZWFkPyBUaGlzIHdvdWxkIGJlIAo+
IG1vcmUgaW5saW5lIHdpdGggd2hhdCB5b3Uga25vdyBmcm9tIExpbnV4IHdpdGggbG9uZyBzeXNj
YWxsKGxvbmcgCj4gbnVtYm5lciwgLi4uKSBmcm9tIDxzeXMvc3lzY2FsbC5oPi4KT0sKPgo+PiAr
bG9uZyB1a19zeXNjYWxsX2R5bmFtaWMobG9uZyBuLCAuLi4pCj4+ICt7Cj4+ICsJdmFfbGlzdCBh
cDsKPj4gKwlzeXNjYWxsX2FyZ190IGEsYixjLGQsZSxmOwo+PiArCXZhX3N0YXJ0KGFwLCBuKTsK
Pj4gKwlhPXZhX2FyZyhhcCwgbG9uZyk7Cj4+ICsJYj12YV9hcmcoYXAsIGxvbmcpOwo+PiArCWM9
dmFfYXJnKGFwLCBsb25nKTsKPj4gKwlkPXZhX2FyZyhhcCwgbG9uZyk7Cj4+ICsJZT12YV9hcmco
YXAsIGxvbmcpOwo+PiArCWY9dmFfYXJnKGFwLCBsb25nKTsKPj4gKwl2YV9lbmQoYXApOwo+PiAr
CXJldHVybiBfX3N5c2NhbGxfZHluYW1pYyhuLGEsYixjLGQsZSxmKTsKPj4gK30KPj4gZGlmZiAt
LWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3ayBiL2xpYi9zeXNjYWxsX3NoaW0v
Z2VuX2VudHJ5LmF3awo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMC4u
OTI0NTcwODkKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9l
bnRyeS5hd2sKPj4gQEAgLTAsMCArMSw0MCBAQAo+PiArQkVHSU4gewo+PiArCW1heF9hcmdzID0g
Ngo+PiArCXByaW50ICIvKiBBdXRvIGdlbmVyYXRlZCBmaWxlLiBETyBOT1QgRURJVCAqL1xuXG4i
Cj4+ICsKPj4gKwlwcmludCAiI2luY2x1ZGUgPHVrL3N5c2NhbGwuaD4iCj4+ICsJcHJpbnQgIiNp
bmNsdWRlIDx1ay9wcmludC5oPlxuIgo+PiArCj4+ICsJcHJpbnRmICJzdGF0aWMgaW5saW5lIGxv
bmcgX19zeXNjYWxsX2R5bmFtaWMobG9uZyBuciwgIgo+PiArCWZvciAoaSA9IDE7IGkgPCBtYXhf
YXJnczsgaSsrKQo+PiArCQlwcmludGYgImxvbmcgYXJnJWQsICIsaQo+PiArCXByaW50ZiAibG9u
ZyBhcmclZClcbntcbiIsIG1heF9hcmdzCj4+ICsKPj4gKwlmb3IgKGkgPSAxOyBpIDw9IG1heF9h
cmdzOyBpKyspCj4+ICsJCXByaW50ZiAiXHQodm9pZCkgYXJnJWQ7XG4iLCBpCj4+ICsKPj4gKwlw
cmludCAiXG5cdHN3aXRjaCAobnIpIHsiCj4+ICt9Cj4+ICsKPj4gKwo+PiArL1thLXpBLVowLTld
Ky1bMC05XSsvewo+PiArCW5hbWUgPSAkMQo+PiArCXN5c19uYW1lID0gIlNZU18iIG5hbWUKPj4g
Kwl1a19uYW1lID0gInVrX3N5c2NhbGxfIiBuYW1lCj4+ICsJYXJnc19uciA9ICQyICsgMAo+PiAr
CXByaW50ZiAiXHRjYXNlICVzOlxuIiwgc3lzX25hbWU7Cj4+ICsJcHJpbnRmICJcdFx0cmV0dXJu
ICVzKCIsIHVrX25hbWU7Cj4+ICsJZm9yIChpID0gMTsgaSA8IGFyZ3NfbnI7IGkrKykKPj4gKwkJ
cHJpbnRmKCJhcmclZCwgIiwgaSkKPj4gKwlpZiAoYXJnc19uciA+IDApCj4+ICsJCXByaW50Zigi
YXJnJWQiLCBhcmdzX25yKQo+PiArCXByaW50ZigiKTtcbiIpCj4+ICt9Cj4+ICsKPj4gK0VORCB7
Cj4+ICsJcHJpbnRmICJcdGRlZmF1bHQ6XG4iCj4+ICsJcHJpbnRmICJcdFx0dWtfcHJfZGVidWco
XCJzeXNjYWxsIG5yICUlbGQgaXMgbm90IGltcGxlbWVudGVkXCIsIG5yKTtcbiIKPj4gKwlwcmlu
dGYgIlx0XHRlcnJubyA9IC1FTk9TWVM7XG4iCj4+ICsJcHJpbnRmICJcdFx0cmV0dXJuIC0xO1xu
Igo+PiArCXByaW50ZiAiXHR9XG59XG4iCj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9saWIvc3lzY2Fs
bF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3Vr
L3N5c2NhbGwuaAo+PiBpbmRleCAxOTE2MWU1ZS4uMTM5MTNiYWIgMTAwNjQ0Cj4+IC0tLSBhL2xp
Yi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKPj4gKysrIGIvbGliL3N5c2NhbGxf
c2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+PiBAQCAtOTMsNiArOTMsOCBAQCB0eXBlZGVmIGxv
bmcgc3lzY2FsbF9hcmdfdDsKPj4gICAjaW5jbHVkZSA8dWsvYml0cy9wcm92aWRlZF9zeXNjYWxs
cy5oPgo+PiAgICNpbmNsdWRlIDx1ay9iaXRzL3N5c2NhbGxfc3R1YnMuaD4KPj4gICAKPj4gK2xv
bmcgdWtfc3lzY2FsbF9keW5hbWljKGxvbmcgbiwgLi4uKTsKPj4gKwo+PiAgICNkZWZpbmUgc3lz
Y2FsbCguLi4pCQkJCQkJCVwKPj4gICAJVUtfQ09OQ0FUKF9fdWtfc3lzY2FsbCwgX19TWVNDQUxM
X05BUkdTKF9fVkFfQVJHU19fKSkoX19WQV9BUkdTX18pCj4+ICAgI2VuZGlmCj4+IAo+Cj4gVGhh
bmtzLAo+Cj4gU2ltb24KCi0tIApZdXJpIFZvbGNoa292ClNvZnR3YXJlIFNwZWNpYWxpc3QKCk5F
QyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpELTY5MTE1IEhlaWRlbGJlcmcKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGB-0007Mo-Bh; Wed, 05 Jun 2019 15:55: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=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGB-0007Mf-1W
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:31 +0000
X-Inumbo-ID: 56b704a8-87aa-11e9-83f5-3bdf2d0c5e16
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 56b704a8-87aa-11e9-83f5-3bdf2d0c5e16;
 Wed, 05 Jun 2019 15:55:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D80BD104C04;
 Wed,  5 Jun 2019 17:55:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id YffgKkx13GMo; Wed,  5 Jun 2019 17:55:27 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B7885103EA6
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:27 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:27 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:03 +0200
Message-ID: <20190605155511.26450-2-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/9] include: move UK_CONCAT to
 essentials
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBtYWNybyBpcyB1c2VmdWwgbm90IGp1c3QgZm9yIHRyYWNpbmcuCgpTaWduZWQtb2ZmLWJ5
OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KUmV2aWV3ZWQtYnk6IFNp
bW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIGluY2x1ZGUvdWsvZXNz
ZW50aWFscy5oICAgICAgICB8IDUgKysrKysKIGxpYi91a2RlYnVnL2luY2x1ZGUvdWsvdHJhY2Uu
aCB8IDQgLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91ay9lc3NlbnRpYWxzLmggYi9pbmNsdWRlL3VrL2Vz
c2VudGlhbHMuaAppbmRleCA2MTcwYzVkMi4uZTgyNjRjNWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv
dWsvZXNzZW50aWFscy5oCisrKyBiL2luY2x1ZGUvdWsvZXNzZW50aWFscy5oCkBAIC0xNDcsNiAr
MTQ3LDExIEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBTVFJJTkdJRlkoeCkgX19TVFJJTkdJRlko
eCkKICNlbmRpZgogCisjaWZuZGVmIFVLX0NPTkNBVAorI2RlZmluZSBfX1VLX0NPTkNBVF9YKGEs
IGIpIGEjI2IKKyNkZWZpbmUgVUtfQ09OQ0FUKGEsIGIpIF9fVUtfQ09OQ0FUX1goYSwgYikKKyNl
bmRpZgorCiAjaWZuZGVmIE1JTgogI2RlZmluZSBNSU4oYSwgYikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkoeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL2luY2x1ZGUvdWsvdHJhY2UuaCBiL2xpYi91
a2RlYnVnL2luY2x1ZGUvdWsvdHJhY2UuaAppbmRleCA5MTFjYTZhNi4uODc0NTM4MjYgMTAwNjQ0
Ci0tLSBhL2xpYi91a2RlYnVnL2luY2x1ZGUvdWsvdHJhY2UuaAorKysgYi9saWIvdWtkZWJ1Zy9p
bmNsdWRlL3VrL3RyYWNlLmgKQEAgLTY2LDEwICs2Niw2IEBAIHN0cnVjdCB1a190cmFjZXBvaW50
X2hlYWRlciB7CiBleHRlcm4gc2l6ZV90IHVrX3RyYWNlX2J1ZmZlcl9mcmVlOwogZXh0ZXJuIGNo
YXIgKnVrX3RyYWNlX2J1ZmZlcl93cml0ZXA7CiAKLS8qIFRPRE86IGNvbnNpZGVyIHRvIG1vdmUg
VUtfQ09OQ0FUIGludG8gcHVibGljIGhlYWRlcnMgKi8KLSNkZWZpbmUgX19VS19DT05DQVRfWChh
LCBiKSBhIyNiCi0jZGVmaW5lIFVLX0NPTkNBVChhLCBiKSBfX1VLX0NPTkNBVF9YKGEsIGIpCi0K
ICNkZWZpbmUgX19VS19OQVJHU19YKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIG4sIC4uLikgbgog
I2RlZmluZSBVS19OQVJHUyguLi4pICBfX1VLX05BUkdTX1goLCAjI19fVkFfQVJHU19fLCA3LCA2
LCA1LCA0LCAzLCAyLCAxLCAwKQogCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGD-0007NM-DF; Wed, 05 Jun 2019 15:55:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGC-0007NC-9y
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:32 +0000
X-Inumbo-ID: 5684df64-87aa-11e9-a799-df2e292e23f9
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5684df64-87aa-11e9-a799-df2e292e23f9;
 Wed, 05 Jun 2019 15:55:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 5EE61F208D;
 Wed,  5 Jun 2019 17:55:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Np9a-RtnDKdb; Wed,  5 Jun 2019 17:55:27 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 319EDF2017
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:25 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:24 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:02 +0200
Message-ID: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/9] introduce syscall_shim
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhpcyBzZXJpZXMgYWRkcyBhIG5ldyBsaWJyYXJ5OiBzeXNjYWxsX3NoaW0uIFRoaXMgcHJvdmlk
ZXMgYQpmcmFtZXdvcmsgdG8gbWFwIGludm9jYXRpb25zIHN1Y2ggYXMgc3lzY2FsbChTWVNfZm9v
LCBiYXIsIGJheikgdG8gdGhlCnJlc3BvbnNpYmxlIGZ1bmN0aW9uIGluIHRoZSBVbmlrcmFmdC4g
T3IgdG8gdGhlIHN0dWIsIGlmIHRoZSBzeXNjYWxsCmlzIG5vdCBpbXBsZW1lbnRlZC4KCll1cmkg
Vm9sY2hrb3YgKDkpOgogIGluY2x1ZGU6IG1vdmUgVUtfQ09OQ0FUIHRvIGVzc2VudGlhbHMKICBs
aWIvc3lzY2FsbF9zaGltOiBpbXBvcnQgc3lzY2FsbC5oLmluIGZyb20gbXVzbAogIGxpYi9zeXNj
YWxsX3NoaW06IHJlbW92ZSBkdXBsaWNhdGUgc3lzY2FsbHMKICBsaWIvc3lzY2FsbF9zaGltOiBn
ZW5lcmF0ZSBiYXNlIGhlYWRlcnMKICBsaWIvc3lzY2FsbF9zaGltOiBnZW5lcmF0ZSBwcm92aWRl
ZF9zeXNjYWxscy5oCiAgbGliL3N5c2NhbGxfc2hpbTogaW50cm9kdWNlIHN5c2NhbGxzIG1hY3Jv
IGxheWVyCiAgbGliL3Zmc2NvcmU6IHN5c2NhbGwgd3JpdGV2CiAgbGliL3N5c2NhbGxfc2hpbTog
aW50cm9kdWNlIHVrX3N5c2NhbGxwCiAgZG9jOiBhZGQgc2VjdGlvbiBhYm91dCBzeXNjYWxsIHNo
aW0gbGF5ZXIKCiBkb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCAgICAgICAgICAgICB8ICA0
OSArKysKIGluY2x1ZGUvdWsvZXNzZW50aWFscy5oICAgICAgICAgICAgICAgICAgIHwgICA1ICsK
IGxpYi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9N
YWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9zeXNjYWxs
X3NoaW0vQ29uZmlnLnVrICAgICAgICAgICAgICAgIHwgICAzICsKIGxpYi9zeXNjYWxsX3NoaW0v
TWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgIDYyICsrKysKIGxpYi9zeXNjYWxsX3NoaW0vYXJj
aC9hcm0vc3lzY2FsbC5oLmluICAgIHwgMzYzICsrKysrKysrKysrKysrKysrKysrKysKIGxpYi9z
eXNjYWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxsLmguaW4gIHwgMjc5ICsrKysrKysrKysrKysr
KysrCiBsaWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwuaC5pbiB8IDMzNyArKysr
KysrKysrKysrKysrKysrKwogbGliL3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2VuZCAgICAgICAg
ICAgfCAgMTUgKwogbGliL3N5c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdrICAgICAgICAgICAgfCAg
NDAgKysrCiBsaWIvc3lzY2FsbF9zaGltL2dlbl9wcm92aWRlZC5hd2sgICAgICAgICB8ICAgNSAr
CiBsaWIvc3lzY2FsbF9zaGltL2dlbl9zdHVicy5hd2sgICAgICAgICAgICB8ICAgOCArCiBsaWIv
c3lzY2FsbF9zaGltL2dlbl9zeXNjYWxsX21hcC5hd2sgICAgICB8ICAgNCArCiBsaWIvc3lzY2Fs
bF9zaGltL2dlbl9zeXNjYWxsX25ycy5hd2sgICAgICB8ICAgNCArCiBsaWIvc3lzY2FsbF9zaGlt
L2luY2x1ZGUvdWsvc3lzY2FsbC5oICAgICB8IDE1MiArKysrKysrKysKIGxpYi91a2RlYnVnL2lu
Y2x1ZGUvdWsvdHJhY2UuaCAgICAgICAgICAgIHwgICA0IC0KIGxpYi92ZnNjb3JlL01ha2VmaWxl
LnVrICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBsaWIvdmZzY29yZS9leHBvcnRzeW1zLnVr
ICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAyMCBmaWxlcyBjaGFuZ2VkLCAxMzM5IGluc2VydGlvbnMoKyks
IDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9Db25m
aWcudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtNjQvc3lzY2FsbC5o
LmluCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9hcmNoL3g4Nl82NC9zeXNj
YWxsLmguaW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2VudHJ5LmMuaW5f
ZW5kCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fZW50cnkuYXdrCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fcHJvdmlkZWQuYXdrCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9tYXAuYXdrCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9ucnMuYXdrCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAoKLS0gCjIuMTku
MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYYGF-0007O4-FH; Wed, 05 Jun 2019 15:55:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGF-0007Nq-2E
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:35 +0000
X-Inumbo-ID: 5867214e-87aa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5867214e-87aa-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 15:55:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8DF9FF20AD;
 Wed,  5 Jun 2019 17:55:30 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4H99W_W5Ckzt; Wed,  5 Jun 2019 17:55:30 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5E8E3F2017
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:28 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:28 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:04 +0200
Message-ID: <20190605155511.26450-3-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/9] lib/syscall_shim: import
 syscall.h.in from musl
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: 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>

SW4gdGhlIG9yaWdpbmFsIHJlcG8gKGdpdDovL2dpdC5tdXNsLWxpYmMub3JnL211c2wpOgpDb21t
aXQgPDY1MTYyODJkMmFkZmFkMmM3ZTY2ZDg1NGNkZTMzNTcxMjBjNzVkYmQ+CgpTaWduZWQtb2Zm
LWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KLS0tCiBsaWIvc3lz
Y2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbiAgICB8IDM2NSArKysrKysrKysrKysrKysr
KysrKysrCiBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtNjQvc3lzY2FsbC5oLmluICB8IDI3OSAr
KysrKysrKysrKysrKysrKwogbGliL3N5c2NhbGxfc2hpbS9hcmNoL3g4Nl82NC9zeXNjYWxsLmgu
aW4gfCAzMzcgKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgOTgxIGluc2Vy
dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5
c2NhbGwuaC5pbgogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02
NC9zeXNjYWxsLmguaW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2FyY2gv
eDg2XzY0L3N5c2NhbGwuaC5pbgoKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9h
cm0vc3lzY2FsbC5oLmluIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjgxMDgyOTYyCi0tLSAvZGV2L251
bGwKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybS9zeXNjYWxsLmguaW4KQEAgLTAsMCAr
MSwzNjUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UgKi8KKyNk
ZWZpbmUgX19OUl9yZXN0YXJ0X3N5c2NhbGwJMAorI2RlZmluZSBfX05SX2V4aXQJMQorI2RlZmlu
ZSBfX05SX2ZvcmsJMgorI2RlZmluZSBfX05SX3JlYWQJMworI2RlZmluZSBfX05SX3dyaXRlCTQK
KyNkZWZpbmUgX19OUl9vcGVuCTUKKyNkZWZpbmUgX19OUl9jbG9zZQk2CisjZGVmaW5lIF9fTlJf
Y3JlYXQJOAorI2RlZmluZSBfX05SX2xpbmsJOQorI2RlZmluZSBfX05SX3VubGluawkxMAorI2Rl
ZmluZSBfX05SX2V4ZWN2ZQkxMQorI2RlZmluZSBfX05SX2NoZGlyCTEyCisjZGVmaW5lIF9fTlJf
bWtub2QJMTQKKyNkZWZpbmUgX19OUl9jaG1vZAkxNQorI2RlZmluZSBfX05SX2xjaG93bgkxNgor
I2RlZmluZSBfX05SX2xzZWVrCTE5CisjZGVmaW5lIF9fTlJfZ2V0cGlkCTIwCisjZGVmaW5lIF9f
TlJfbW91bnQJMjEKKyNkZWZpbmUgX19OUl9zZXR1aWQJMjMKKyNkZWZpbmUgX19OUl9nZXR1aWQJ
MjQKKyNkZWZpbmUgX19OUl9wdHJhY2UJMjYKKyNkZWZpbmUgX19OUl9wYXVzZQkyOQorI2RlZmlu
ZSBfX05SX2FjY2VzcwkzMworI2RlZmluZSBfX05SX25pY2UJMzQKKyNkZWZpbmUgX19OUl9zeW5j
CTM2CisjZGVmaW5lIF9fTlJfa2lsbAkzNworI2RlZmluZSBfX05SX3JlbmFtZQkzOAorI2RlZmlu
ZSBfX05SX21rZGlyCTM5CisjZGVmaW5lIF9fTlJfcm1kaXIJNDAKKyNkZWZpbmUgX19OUl9kdXAJ
NDEKKyNkZWZpbmUgX19OUl9waXBlCTQyCisjZGVmaW5lIF9fTlJfdGltZXMJNDMKKyNkZWZpbmUg
X19OUl9icmsJNDUKKyNkZWZpbmUgX19OUl9zZXRnaWQJNDYKKyNkZWZpbmUgX19OUl9nZXRnaWQJ
NDcKKyNkZWZpbmUgX19OUl9nZXRldWlkCTQ5CisjZGVmaW5lIF9fTlJfZ2V0ZWdpZAk1MAorI2Rl
ZmluZSBfX05SX2FjY3QJNTEKKyNkZWZpbmUgX19OUl91bW91bnQyCTUyCisjZGVmaW5lIF9fTlJf
aW9jdGwJNTQKKyNkZWZpbmUgX19OUl9mY250bAk1NQorI2RlZmluZSBfX05SX3NldHBnaWQJNTcK
KyNkZWZpbmUgX19OUl91bWFzawk2MAorI2RlZmluZSBfX05SX2Nocm9vdAk2MQorI2RlZmluZSBf
X05SX3VzdGF0CTYyCisjZGVmaW5lIF9fTlJfZHVwMgk2MworI2RlZmluZSBfX05SX2dldHBwaWQJ
NjQKKyNkZWZpbmUgX19OUl9nZXRwZ3JwCTY1CisjZGVmaW5lIF9fTlJfc2V0c2lkCTY2CisjZGVm
aW5lIF9fTlJfc2lnYWN0aW9uCTY3CisjZGVmaW5lIF9fTlJfc2V0cmV1aWQJNzAKKyNkZWZpbmUg
X19OUl9zZXRyZWdpZAk3MQorI2RlZmluZSBfX05SX3NpZ3N1c3BlbmQJNzIKKyNkZWZpbmUgX19O
Ul9zaWdwZW5kaW5nCTczCisjZGVmaW5lIF9fTlJfc2V0aG9zdG5hbWUJNzQKKyNkZWZpbmUgX19O
Ul9zZXRybGltaXQJNzUKKyNkZWZpbmUgX19OUl9nZXRydXNhZ2UJNzcKKyNkZWZpbmUgX19OUl9n
ZXR0aW1lb2ZkYXkJNzgKKyNkZWZpbmUgX19OUl9zZXR0aW1lb2ZkYXkJNzkKKyNkZWZpbmUgX19O
Ul9nZXRncm91cHMJODAKKyNkZWZpbmUgX19OUl9zZXRncm91cHMJODEKKyNkZWZpbmUgX19OUl9z
eW1saW5rCTgzCisjZGVmaW5lIF9fTlJfcmVhZGxpbmsJODUKKyNkZWZpbmUgX19OUl91c2VsaWIJ
ODYKKyNkZWZpbmUgX19OUl9zd2Fwb24JODcKKyNkZWZpbmUgX19OUl9yZWJvb3QJODgKKyNkZWZp
bmUgX19OUl9tdW5tYXAJOTEKKyNkZWZpbmUgX19OUl90cnVuY2F0ZQk5MgorI2RlZmluZSBfX05S
X2Z0cnVuY2F0ZQk5MworI2RlZmluZSBfX05SX2ZjaG1vZAk5NAorI2RlZmluZSBfX05SX2ZjaG93
bgk5NQorI2RlZmluZSBfX05SX2dldHByaW9yaXR5CTk2CisjZGVmaW5lIF9fTlJfc2V0cHJpb3Jp
dHkJOTcKKyNkZWZpbmUgX19OUl9zdGF0ZnMJOTkKKyNkZWZpbmUgX19OUl9mc3RhdGZzCTEwMAor
I2RlZmluZSBfX05SX3N5c2xvZwkxMDMKKyNkZWZpbmUgX19OUl9zZXRpdGltZXIJMTA0CisjZGVm
aW5lIF9fTlJfZ2V0aXRpbWVyCTEwNQorI2RlZmluZSBfX05SX3N0YXQJMTA2CisjZGVmaW5lIF9f
TlJfbHN0YXQJMTA3CisjZGVmaW5lIF9fTlJfZnN0YXQJMTA4CisjZGVmaW5lIF9fTlJfdmhhbmd1
cAkxMTEKKyNkZWZpbmUgX19OUl93YWl0NAkxMTQKKyNkZWZpbmUgX19OUl9zd2Fwb2ZmCTExNQor
I2RlZmluZSBfX05SX3N5c2luZm8JMTE2CisjZGVmaW5lIF9fTlJfZnN5bmMJMTE4CisjZGVmaW5l
IF9fTlJfc2lncmV0dXJuCTExOQorI2RlZmluZSBfX05SX2Nsb25lCTEyMAorI2RlZmluZSBfX05S
X3NldGRvbWFpbm5hbWUJMTIxCisjZGVmaW5lIF9fTlJfdW5hbWUJMTIyCisjZGVmaW5lIF9fTlJf
YWRqdGltZXgJMTI0CisjZGVmaW5lIF9fTlJfbXByb3RlY3QJMTI1CisjZGVmaW5lIF9fTlJfc2ln
cHJvY21hc2sJMTI2CisjZGVmaW5lIF9fTlJfaW5pdF9tb2R1bGUJMTI4CisjZGVmaW5lIF9fTlJf
ZGVsZXRlX21vZHVsZQkxMjkKKyNkZWZpbmUgX19OUl9xdW90YWN0bAkxMzEKKyNkZWZpbmUgX19O
Ul9nZXRwZ2lkCTEzMgorI2RlZmluZSBfX05SX2ZjaGRpcgkxMzMKKyNkZWZpbmUgX19OUl9iZGZs
dXNoCTEzNAorI2RlZmluZSBfX05SX3N5c2ZzCTEzNQorI2RlZmluZSBfX05SX3BlcnNvbmFsaXR5
CTEzNgorI2RlZmluZSBfX05SX3NldGZzdWlkCTEzOAorI2RlZmluZSBfX05SX3NldGZzZ2lkCTEz
OQorI2RlZmluZSBfX05SX19sbHNlZWsJMTQwCisjZGVmaW5lIF9fTlJfZ2V0ZGVudHMJMTQxCisj
ZGVmaW5lIF9fTlJfX25ld3NlbGVjdAkxNDIKKyNkZWZpbmUgX19OUl9mbG9jawkxNDMKKyNkZWZp
bmUgX19OUl9tc3luYwkxNDQKKyNkZWZpbmUgX19OUl9yZWFkdgkxNDUKKyNkZWZpbmUgX19OUl93
cml0ZXYJMTQ2CisjZGVmaW5lIF9fTlJfZ2V0c2lkCTE0NworI2RlZmluZSBfX05SX2ZkYXRhc3lu
YwkxNDgKKyNkZWZpbmUgX19OUl9fc3lzY3RsCTE0OQorI2RlZmluZSBfX05SX21sb2NrCTE1MAor
I2RlZmluZSBfX05SX211bmxvY2sJMTUxCisjZGVmaW5lIF9fTlJfbWxvY2thbGwJMTUyCisjZGVm
aW5lIF9fTlJfbXVubG9ja2FsbAkxNTMKKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRwYXJhbQkxNTQK
KyNkZWZpbmUgX19OUl9zY2hlZF9nZXRwYXJhbQkxNTUKKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRz
Y2hlZHVsZXIJMTU2CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyCTE1NworI2RlZmlu
ZSBfX05SX3NjaGVkX3lpZWxkCTE1OAorI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9t
YXgJMTU5CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbgkxNjAKKyNkZWZpbmUg
X19OUl9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwJMTYxCisjZGVmaW5lIF9fTlJfbmFub3NsZWVwCTE2
MgorI2RlZmluZSBfX05SX21yZW1hcAkxNjMKKyNkZWZpbmUgX19OUl9zZXRyZXN1aWQJMTY0Cisj
ZGVmaW5lIF9fTlJfZ2V0cmVzdWlkCTE2NQorI2RlZmluZSBfX05SX3BvbGwJMTY4CisjZGVmaW5l
IF9fTlJfbmZzc2VydmN0bAkxNjkKKyNkZWZpbmUgX19OUl9zZXRyZXNnaWQJMTcwCisjZGVmaW5l
IF9fTlJfZ2V0cmVzZ2lkCTE3MQorI2RlZmluZSBfX05SX3ByY3RsCTE3MgorI2RlZmluZSBfX05S
X3J0X3NpZ3JldHVybgkxNzMKKyNkZWZpbmUgX19OUl9ydF9zaWdhY3Rpb24JMTc0CisjZGVmaW5l
IF9fTlJfcnRfc2lncHJvY21hc2sJMTc1CisjZGVmaW5lIF9fTlJfcnRfc2lncGVuZGluZwkxNzYK
KyNkZWZpbmUgX19OUl9ydF9zaWd0aW1lZHdhaXQJMTc3CisjZGVmaW5lIF9fTlJfcnRfc2lncXVl
dWVpbmZvCTE3OAorI2RlZmluZSBfX05SX3J0X3NpZ3N1c3BlbmQJMTc5CisjZGVmaW5lIF9fTlJf
cHJlYWQ2NAkxODAKKyNkZWZpbmUgX19OUl9wd3JpdGU2NAkxODEKKyNkZWZpbmUgX19OUl9jaG93
bgkxODIKKyNkZWZpbmUgX19OUl9nZXRjd2QJMTgzCisjZGVmaW5lIF9fTlJfY2FwZ2V0CTE4NAor
I2RlZmluZSBfX05SX2NhcHNldAkxODUKKyNkZWZpbmUgX19OUl9zaWdhbHRzdGFjawkxODYKKyNk
ZWZpbmUgX19OUl9zZW5kZmlsZQkxODcKKyNkZWZpbmUgX19OUl92Zm9yawkxOTAKKyNkZWZpbmUg
X19OUl91Z2V0cmxpbWl0CTE5MQorI2RlZmluZSBfX05SX21tYXAyCTE5MgorI2RlZmluZSBfX05S
X3RydW5jYXRlNjQJMTkzCisjZGVmaW5lIF9fTlJfZnRydW5jYXRlNjQJMTk0CisjZGVmaW5lIF9f
TlJfc3RhdDY0CTE5NQorI2RlZmluZSBfX05SX2xzdGF0NjQJMTk2CisjZGVmaW5lIF9fTlJfZnN0
YXQ2NAkxOTcKKyNkZWZpbmUgX19OUl9sY2hvd24zMgkxOTgKKyNkZWZpbmUgX19OUl9nZXR1aWQz
MgkxOTkKKyNkZWZpbmUgX19OUl9nZXRnaWQzMgkyMDAKKyNkZWZpbmUgX19OUl9nZXRldWlkMzIJ
MjAxCisjZGVmaW5lIF9fTlJfZ2V0ZWdpZDMyCTIwMgorI2RlZmluZSBfX05SX3NldHJldWlkMzIJ
MjAzCisjZGVmaW5lIF9fTlJfc2V0cmVnaWQzMgkyMDQKKyNkZWZpbmUgX19OUl9nZXRncm91cHMz
MgkyMDUKKyNkZWZpbmUgX19OUl9zZXRncm91cHMzMgkyMDYKKyNkZWZpbmUgX19OUl9mY2hvd24z
MgkyMDcKKyNkZWZpbmUgX19OUl9zZXRyZXN1aWQzMgkyMDgKKyNkZWZpbmUgX19OUl9nZXRyZXN1
aWQzMgkyMDkKKyNkZWZpbmUgX19OUl9zZXRyZXNnaWQzMgkyMTAKKyNkZWZpbmUgX19OUl9nZXRy
ZXNnaWQzMgkyMTEKKyNkZWZpbmUgX19OUl9jaG93bjMyCTIxMgorI2RlZmluZSBfX05SX3NldHVp
ZDMyCTIxMworI2RlZmluZSBfX05SX3NldGdpZDMyCTIxNAorI2RlZmluZSBfX05SX3NldGZzdWlk
MzIJMjE1CisjZGVmaW5lIF9fTlJfc2V0ZnNnaWQzMgkyMTYKKyNkZWZpbmUgX19OUl9nZXRkZW50
czY0CTIxNworI2RlZmluZSBfX05SX3Bpdm90X3Jvb3QJMjE4CisjZGVmaW5lIF9fTlJfbWluY29y
ZQkyMTkKKyNkZWZpbmUgX19OUl9tYWR2aXNlCTIyMAorI2RlZmluZSBfX05SX2ZjbnRsNjQJMjIx
CisjZGVmaW5lIF9fTlJfZ2V0dGlkCTIyNAorI2RlZmluZSBfX05SX3JlYWRhaGVhZAkyMjUKKyNk
ZWZpbmUgX19OUl9zZXR4YXR0cgkyMjYKKyNkZWZpbmUgX19OUl9sc2V0eGF0dHIJMjI3CisjZGVm
aW5lIF9fTlJfZnNldHhhdHRyCTIyOAorI2RlZmluZSBfX05SX2dldHhhdHRyCTIyOQorI2RlZmlu
ZSBfX05SX2xnZXR4YXR0cgkyMzAKKyNkZWZpbmUgX19OUl9mZ2V0eGF0dHIJMjMxCisjZGVmaW5l
IF9fTlJfbGlzdHhhdHRyCTIzMgorI2RlZmluZSBfX05SX2xsaXN0eGF0dHIJMjMzCisjZGVmaW5l
IF9fTlJfZmxpc3R4YXR0cgkyMzQKKyNkZWZpbmUgX19OUl9yZW1vdmV4YXR0cgkyMzUKKyNkZWZp
bmUgX19OUl9scmVtb3ZleGF0dHIJMjM2CisjZGVmaW5lIF9fTlJfZnJlbW92ZXhhdHRyCTIzNwor
I2RlZmluZSBfX05SX3RraWxsCTIzOAorI2RlZmluZSBfX05SX3NlbmRmaWxlNjQJMjM5CisjZGVm
aW5lIF9fTlJfZnV0ZXgJMjQwCisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0YWZmaW5pdHkJMjQxCisj
ZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHkJMjQyCisjZGVmaW5lIF9fTlJfaW9fc2V0dXAJ
MjQzCisjZGVmaW5lIF9fTlJfaW9fZGVzdHJveQkyNDQKKyNkZWZpbmUgX19OUl9pb19nZXRldmVu
dHMJMjQ1CisjZGVmaW5lIF9fTlJfaW9fc3VibWl0CTI0NgorI2RlZmluZSBfX05SX2lvX2NhbmNl
bAkyNDcKKyNkZWZpbmUgX19OUl9leGl0X2dyb3VwCTI0OAorI2RlZmluZSBfX05SX2xvb2t1cF9k
Y29va2llCTI0OQorI2RlZmluZSBfX05SX2Vwb2xsX2NyZWF0ZQkyNTAKKyNkZWZpbmUgX19OUl9l
cG9sbF9jdGwJMjUxCisjZGVmaW5lIF9fTlJfZXBvbGxfd2FpdAkyNTIKKyNkZWZpbmUgX19OUl9y
ZW1hcF9maWxlX3BhZ2VzCTI1MworI2RlZmluZSBfX05SX3NldF90aWRfYWRkcmVzcwkyNTYKKyNk
ZWZpbmUgX19OUl90aW1lcl9jcmVhdGUJMjU3CisjZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZQky
NTgKKyNkZWZpbmUgX19OUl90aW1lcl9nZXR0aW1lCTI1OQorI2RlZmluZSBfX05SX3RpbWVyX2dl
dG92ZXJydW4JMjYwCisjZGVmaW5lIF9fTlJfdGltZXJfZGVsZXRlCTI2MQorI2RlZmluZSBfX05S
X2Nsb2NrX3NldHRpbWUJMjYyCisjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0dGltZQkyNjMKKyNkZWZp
bmUgX19OUl9jbG9ja19nZXRyZXMJMjY0CisjZGVmaW5lIF9fTlJfY2xvY2tfbmFub3NsZWVwCTI2
NQorI2RlZmluZSBfX05SX3N0YXRmczY0CTI2NgorI2RlZmluZSBfX05SX2ZzdGF0ZnM2NAkyNjcK
KyNkZWZpbmUgX19OUl90Z2tpbGwJMjY4CisjZGVmaW5lIF9fTlJfdXRpbWVzCTI2OQorI2RlZmlu
ZSBfX05SX2ZhZHZpc2U2NF82NAkyNzAKKyNkZWZpbmUgX19OUl9hcm1fZmFkdmlzZTY0XzY0CTI3
MAorI2RlZmluZSBfX05SX3BjaWNvbmZpZ19pb2Jhc2UJMjcxCisjZGVmaW5lIF9fTlJfcGNpY29u
ZmlnX3JlYWQJMjcyCisjZGVmaW5lIF9fTlJfcGNpY29uZmlnX3dyaXRlCTI3MworI2RlZmluZSBf
X05SX21xX29wZW4JMjc0CisjZGVmaW5lIF9fTlJfbXFfdW5saW5rCTI3NQorI2RlZmluZSBfX05S
X21xX3RpbWVkc2VuZAkyNzYKKyNkZWZpbmUgX19OUl9tcV90aW1lZHJlY2VpdmUJMjc3CisjZGVm
aW5lIF9fTlJfbXFfbm90aWZ5CTI3OAorI2RlZmluZSBfX05SX21xX2dldHNldGF0dHIJMjc5Cisj
ZGVmaW5lIF9fTlJfd2FpdGlkCTI4MAorI2RlZmluZSBfX05SX3NvY2tldAkyODEKKyNkZWZpbmUg
X19OUl9iaW5kCTI4MgorI2RlZmluZSBfX05SX2Nvbm5lY3QJMjgzCisjZGVmaW5lIF9fTlJfbGlz
dGVuCTI4NAorI2RlZmluZSBfX05SX2FjY2VwdAkyODUKKyNkZWZpbmUgX19OUl9nZXRzb2NrbmFt
ZQkyODYKKyNkZWZpbmUgX19OUl9nZXRwZWVybmFtZQkyODcKKyNkZWZpbmUgX19OUl9zb2NrZXRw
YWlyCTI4OAorI2RlZmluZSBfX05SX3NlbmQJMjg5CisjZGVmaW5lIF9fTlJfc2VuZHRvCTI5MAor
I2RlZmluZSBfX05SX3JlY3YJMjkxCisjZGVmaW5lIF9fTlJfcmVjdmZyb20JMjkyCisjZGVmaW5l
IF9fTlJfc2h1dGRvd24JMjkzCisjZGVmaW5lIF9fTlJfc2V0c29ja29wdAkyOTQKKyNkZWZpbmUg
X19OUl9nZXRzb2Nrb3B0CTI5NQorI2RlZmluZSBfX05SX3NlbmRtc2cJMjk2CisjZGVmaW5lIF9f
TlJfcmVjdm1zZwkyOTcKKyNkZWZpbmUgX19OUl9zZW1vcAkyOTgKKyNkZWZpbmUgX19OUl9zZW1n
ZXQJMjk5CisjZGVmaW5lIF9fTlJfc2VtY3RsCTMwMAorI2RlZmluZSBfX05SX21zZ3NuZAkzMDEK
KyNkZWZpbmUgX19OUl9tc2dyY3YJMzAyCisjZGVmaW5lIF9fTlJfbXNnZ2V0CTMwMworI2RlZmlu
ZSBfX05SX21zZ2N0bAkzMDQKKyNkZWZpbmUgX19OUl9zaG1hdAkzMDUKKyNkZWZpbmUgX19OUl9z
aG1kdAkzMDYKKyNkZWZpbmUgX19OUl9zaG1nZXQJMzA3CisjZGVmaW5lIF9fTlJfc2htY3RsCTMw
OAorI2RlZmluZSBfX05SX2FkZF9rZXkJMzA5CisjZGVmaW5lIF9fTlJfcmVxdWVzdF9rZXkJMzEw
CisjZGVmaW5lIF9fTlJfa2V5Y3RsCTMxMQorI2RlZmluZSBfX05SX3NlbXRpbWVkb3AJMzEyCisj
ZGVmaW5lIF9fTlJfdnNlcnZlcgkzMTMKKyNkZWZpbmUgX19OUl9pb3ByaW9fc2V0CTMxNAorI2Rl
ZmluZSBfX05SX2lvcHJpb19nZXQJMzE1CisjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0CTMxNgor
I2RlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoCTMxNworI2RlZmluZSBfX05SX2lub3RpZnlf
cm1fd2F0Y2gJMzE4CisjZGVmaW5lIF9fTlJfbWJpbmQJMzE5CisjZGVmaW5lIF9fTlJfZ2V0X21l
bXBvbGljeQkzMjAKKyNkZWZpbmUgX19OUl9zZXRfbWVtcG9saWN5CTMyMQorI2RlZmluZSBfX05S
X29wZW5hdAkzMjIKKyNkZWZpbmUgX19OUl9ta2RpcmF0CTMyMworI2RlZmluZSBfX05SX21rbm9k
YXQJMzI0CisjZGVmaW5lIF9fTlJfZmNob3duYXQJMzI1CisjZGVmaW5lIF9fTlJfZnV0aW1lc2F0
CTMyNgorI2RlZmluZSBfX05SX2ZzdGF0YXQ2NAkzMjcKKyNkZWZpbmUgX19OUl91bmxpbmthdAkz
MjgKKyNkZWZpbmUgX19OUl9yZW5hbWVhdAkzMjkKKyNkZWZpbmUgX19OUl9saW5rYXQJMzMwCisj
ZGVmaW5lIF9fTlJfc3ltbGlua2F0CTMzMQorI2RlZmluZSBfX05SX3JlYWRsaW5rYXQJMzMyCisj
ZGVmaW5lIF9fTlJfZmNobW9kYXQJMzMzCisjZGVmaW5lIF9fTlJfZmFjY2Vzc2F0CTMzNAorI2Rl
ZmluZSBfX05SX3BzZWxlY3Q2CTMzNQorI2RlZmluZSBfX05SX3Bwb2xsCTMzNgorI2RlZmluZSBf
X05SX3Vuc2hhcmUJMzM3CisjZGVmaW5lIF9fTlJfc2V0X3JvYnVzdF9saXN0CTMzOAorI2RlZmlu
ZSBfX05SX2dldF9yb2J1c3RfbGlzdAkzMzkKKyNkZWZpbmUgX19OUl9zcGxpY2UJMzQwCisjZGVm
aW5lIF9fTlJfc3luY19maWxlX3JhbmdlMgkzNDEKKyNkZWZpbmUgX19OUl9hcm1fc3luY19maWxl
X3JhbmdlCTM0MQorI2RlZmluZSBfX05SX3RlZQkzNDIKKyNkZWZpbmUgX19OUl92bXNwbGljZQkz
NDMKKyNkZWZpbmUgX19OUl9tb3ZlX3BhZ2VzCTM0NAorI2RlZmluZSBfX05SX2dldGNwdQkzNDUK
KyNkZWZpbmUgX19OUl9lcG9sbF9wd2FpdAkzNDYKKyNkZWZpbmUgX19OUl9rZXhlY19sb2FkCTM0
NworI2RlZmluZSBfX05SX3V0aW1lbnNhdAkzNDgKKyNkZWZpbmUgX19OUl9zaWduYWxmZAkzNDkK
KyNkZWZpbmUgX19OUl90aW1lcmZkX2NyZWF0ZQkzNTAKKyNkZWZpbmUgX19OUl9ldmVudGZkCTM1
MQorI2RlZmluZSBfX05SX2ZhbGxvY2F0ZQkzNTIKKyNkZWZpbmUgX19OUl90aW1lcmZkX3NldHRp
bWUJMzUzCisjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lCTM1NAorI2RlZmluZSBfX05SX3Np
Z25hbGZkNAkzNTUKKyNkZWZpbmUgX19OUl9ldmVudGZkMgkzNTYKKyNkZWZpbmUgX19OUl9lcG9s
bF9jcmVhdGUxCTM1NworI2RlZmluZSBfX05SX2R1cDMJMzU4CisjZGVmaW5lIF9fTlJfcGlwZTIJ
MzU5CisjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0MQkzNjAKKyNkZWZpbmUgX19OUl9wcmVhZHYJ
MzYxCisjZGVmaW5lIF9fTlJfcHdyaXRldgkzNjIKKyNkZWZpbmUgX19OUl9ydF90Z3NpZ3F1ZXVl
aW5mbwkzNjMKKyNkZWZpbmUgX19OUl9wZXJmX2V2ZW50X29wZW4JMzY0CisjZGVmaW5lIF9fTlJf
cmVjdm1tc2cJMzY1CisjZGVmaW5lIF9fTlJfYWNjZXB0NAkzNjYKKyNkZWZpbmUgX19OUl9mYW5v
dGlmeV9pbml0CTM2NworI2RlZmluZSBfX05SX2Zhbm90aWZ5X21hcmsJMzY4CisjZGVmaW5lIF9f
TlJfcHJsaW1pdDY0CTM2OQorI2RlZmluZSBfX05SX25hbWVfdG9faGFuZGxlX2F0CTM3MAorI2Rl
ZmluZSBfX05SX29wZW5fYnlfaGFuZGxlX2F0CTM3MQorI2RlZmluZSBfX05SX2Nsb2NrX2FkanRp
bWUJMzcyCisjZGVmaW5lIF9fTlJfc3luY2ZzCTM3MworI2RlZmluZSBfX05SX3NlbmRtbXNnCTM3
NAorI2RlZmluZSBfX05SX3NldG5zCTM3NQorI2RlZmluZSBfX05SX3Byb2Nlc3Nfdm1fcmVhZHYJ
Mzc2CisjZGVmaW5lIF9fTlJfcHJvY2Vzc192bV93cml0ZXYJMzc3CisjZGVmaW5lIF9fTlJfa2Nt
cAkJMzc4CisjZGVmaW5lIF9fTlJfZmluaXRfbW9kdWxlCTM3OQorI2RlZmluZSBfX05SX3NjaGVk
X3NldGF0dHIJMzgwCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YXR0cgkzODEKKyNkZWZpbmUgX19O
Ul9yZW5hbWVhdDIJMzgyCisjZGVmaW5lIF9fTlJfc2VjY29tcAkzODMKKyNkZWZpbmUgX19OUl9n
ZXRyYW5kb20JMzg0CisjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlCTM4NQorI2RlZmluZSBfX05S
X2JwZgkzODYKKyNkZWZpbmUgX19OUl9leGVjdmVhdAkzODcKKyNkZWZpbmUgX19OUl91c2VyZmF1
bHRmZAkzODgKKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyCQkzODkKKyNkZWZpbmUgX19OUl9tbG9j
azIJCTM5MAorI2RlZmluZSBfX05SX2NvcHlfZmlsZV9yYW5nZQkzOTEKKyNkZWZpbmUgX19OUl9w
cmVhZHYyCTM5MgorI2RlZmluZSBfX05SX3B3cml0ZXYyCTM5MworI2RlZmluZSBfX05SX3BrZXlf
bXByb3RlY3QJMzk0CisjZGVmaW5lIF9fTlJfcGtleV9hbGxvYwkzOTUKKyNkZWZpbmUgX19OUl9w
a2V5X2ZyZWUJMzk2CisjZGVmaW5lIF9fTlJfc3RhdHgJMzk3CisjZGVmaW5lIF9fTlJfcnNlcQkz
OTgKKworI2RlZmluZSBfX0FSTV9OUl9icmVha3BvaW50CTB4MGYwMDAxCisjZGVmaW5lIF9fQVJN
X05SX2NhY2hlZmx1c2gJMHgwZjAwMDIKKyNkZWZpbmUgX19BUk1fTlJfdXNyMjYJCTB4MGYwMDAz
CisjZGVmaW5lIF9fQVJNX05SX3VzcjMyCQkweDBmMDAwNAorI2RlZmluZSBfX0FSTV9OUl9zZXRf
dGxzCTB4MGYwMDA1CisjZGVmaW5lIF9fQVJNX05SX2dldF90bHMJMHgwZjAwMDYKKwpkaWZmIC0t
Z2l0IGEvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybTY0L3N5c2NhbGwuaC5pbiBiL2xpYi9zeXNj
YWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxsLmguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAuLjAxMDI3MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3N5c2NhbGxfc2hp
bS9hcmNoL2FybTY0L3N5c2NhbGwuaC5pbgpAQCAtMCwwICsxLDI3OSBAQAorLyogU1BEWC1MaWNl
bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZSAqLworI2RlZmluZSBfX05SX2lvX3NldHVwIDAK
KyNkZWZpbmUgX19OUl9pb19kZXN0cm95IDEKKyNkZWZpbmUgX19OUl9pb19zdWJtaXQgMgorI2Rl
ZmluZSBfX05SX2lvX2NhbmNlbCAzCisjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZlbnRzIDQKKyNkZWZp
bmUgX19OUl9zZXR4YXR0ciA1CisjZGVmaW5lIF9fTlJfbHNldHhhdHRyIDYKKyNkZWZpbmUgX19O
Ul9mc2V0eGF0dHIgNworI2RlZmluZSBfX05SX2dldHhhdHRyIDgKKyNkZWZpbmUgX19OUl9sZ2V0
eGF0dHIgOQorI2RlZmluZSBfX05SX2ZnZXR4YXR0ciAxMAorI2RlZmluZSBfX05SX2xpc3R4YXR0
ciAxMQorI2RlZmluZSBfX05SX2xsaXN0eGF0dHIgMTIKKyNkZWZpbmUgX19OUl9mbGlzdHhhdHRy
IDEzCisjZGVmaW5lIF9fTlJfcmVtb3ZleGF0dHIgMTQKKyNkZWZpbmUgX19OUl9scmVtb3ZleGF0
dHIgMTUKKyNkZWZpbmUgX19OUl9mcmVtb3ZleGF0dHIgMTYKKyNkZWZpbmUgX19OUl9nZXRjd2Qg
MTcKKyNkZWZpbmUgX19OUl9sb29rdXBfZGNvb2tpZSAxOAorI2RlZmluZSBfX05SX2V2ZW50ZmQy
IDE5CisjZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRlMSAyMAorI2RlZmluZSBfX05SX2Vwb2xsX2N0
bCAyMQorI2RlZmluZSBfX05SX2Vwb2xsX3B3YWl0IDIyCisjZGVmaW5lIF9fTlJfZHVwIDIzCisj
ZGVmaW5lIF9fTlJfZHVwMyAyNAorI2RlZmluZSBfX05SX2ZjbnRsIDI1CisjZGVmaW5lIF9fTlJf
aW5vdGlmeV9pbml0MSAyNgorI2RlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoIDI3CisjZGVm
aW5lIF9fTlJfaW5vdGlmeV9ybV93YXRjaCAyOAorI2RlZmluZSBfX05SX2lvY3RsIDI5CisjZGVm
aW5lIF9fTlJfaW9wcmlvX3NldCAzMAorI2RlZmluZSBfX05SX2lvcHJpb19nZXQgMzEKKyNkZWZp
bmUgX19OUl9mbG9jayAzMgorI2RlZmluZSBfX05SX21rbm9kYXQgMzMKKyNkZWZpbmUgX19OUl9t
a2RpcmF0IDM0CisjZGVmaW5lIF9fTlJfdW5saW5rYXQgMzUKKyNkZWZpbmUgX19OUl9zeW1saW5r
YXQgMzYKKyNkZWZpbmUgX19OUl9saW5rYXQgMzcKKyNkZWZpbmUgX19OUl9yZW5hbWVhdCAzOAor
I2RlZmluZSBfX05SX3Vtb3VudDIgMzkKKyNkZWZpbmUgX19OUl9tb3VudCA0MAorI2RlZmluZSBf
X05SX3Bpdm90X3Jvb3QgNDEKKyNkZWZpbmUgX19OUl9uZnNzZXJ2Y3RsIDQyCisjZGVmaW5lIF9f
TlJfc3RhdGZzIDQzCisjZGVmaW5lIF9fTlJfZnN0YXRmcyA0NAorI2RlZmluZSBfX05SX3RydW5j
YXRlIDQ1CisjZGVmaW5lIF9fTlJfZnRydW5jYXRlIDQ2CisjZGVmaW5lIF9fTlJfZmFsbG9jYXRl
IDQ3CisjZGVmaW5lIF9fTlJfZmFjY2Vzc2F0IDQ4CisjZGVmaW5lIF9fTlJfY2hkaXIgNDkKKyNk
ZWZpbmUgX19OUl9mY2hkaXIgNTAKKyNkZWZpbmUgX19OUl9jaHJvb3QgNTEKKyNkZWZpbmUgX19O
Ul9mY2htb2QgNTIKKyNkZWZpbmUgX19OUl9mY2htb2RhdCA1MworI2RlZmluZSBfX05SX2ZjaG93
bmF0IDU0CisjZGVmaW5lIF9fTlJfZmNob3duIDU1CisjZGVmaW5lIF9fTlJfb3BlbmF0IDU2Cisj
ZGVmaW5lIF9fTlJfY2xvc2UgNTcKKyNkZWZpbmUgX19OUl92aGFuZ3VwIDU4CisjZGVmaW5lIF9f
TlJfcGlwZTIgNTkKKyNkZWZpbmUgX19OUl9xdW90YWN0bCA2MAorI2RlZmluZSBfX05SX2dldGRl
bnRzNjQgNjEKKyNkZWZpbmUgX19OUl9sc2VlayA2MgorI2RlZmluZSBfX05SX3JlYWQgNjMKKyNk
ZWZpbmUgX19OUl93cml0ZSA2NAorI2RlZmluZSBfX05SX3JlYWR2IDY1CisjZGVmaW5lIF9fTlJf
d3JpdGV2IDY2CisjZGVmaW5lIF9fTlJfcHJlYWQ2NCA2NworI2RlZmluZSBfX05SX3B3cml0ZTY0
IDY4CisjZGVmaW5lIF9fTlJfcHJlYWR2IDY5CisjZGVmaW5lIF9fTlJfcHdyaXRldiA3MAorI2Rl
ZmluZSBfX05SX3NlbmRmaWxlIDcxCisjZGVmaW5lIF9fTlJfcHNlbGVjdDYgNzIKKyNkZWZpbmUg
X19OUl9wcG9sbCA3MworI2RlZmluZSBfX05SX3NpZ25hbGZkNCA3NAorI2RlZmluZSBfX05SX3Zt
c3BsaWNlIDc1CisjZGVmaW5lIF9fTlJfc3BsaWNlIDc2CisjZGVmaW5lIF9fTlJfdGVlIDc3Cisj
ZGVmaW5lIF9fTlJfcmVhZGxpbmthdCA3OAorI2RlZmluZSBfX05SX25ld2ZzdGF0YXQgNzkKKyNk
ZWZpbmUgX19OUl9mc3RhdCA4MAorI2RlZmluZSBfX05SX3N5bmMgODEKKyNkZWZpbmUgX19OUl9m
c3luYyA4MgorI2RlZmluZSBfX05SX2ZkYXRhc3luYyA4MworI2RlZmluZSBfX05SX3N5bmNfZmls
ZV9yYW5nZSA4NAorI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRlIDg1CisjZGVmaW5lIF9fTlJf
dGltZXJmZF9zZXR0aW1lIDg2CisjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lIDg3CisjZGVm
aW5lIF9fTlJfdXRpbWVuc2F0IDg4CisjZGVmaW5lIF9fTlJfYWNjdCA4OQorI2RlZmluZSBfX05S
X2NhcGdldCA5MAorI2RlZmluZSBfX05SX2NhcHNldCA5MQorI2RlZmluZSBfX05SX3BlcnNvbmFs
aXR5IDkyCisjZGVmaW5lIF9fTlJfZXhpdCA5MworI2RlZmluZSBfX05SX2V4aXRfZ3JvdXAgOTQK
KyNkZWZpbmUgX19OUl93YWl0aWQgOTUKKyNkZWZpbmUgX19OUl9zZXRfdGlkX2FkZHJlc3MgOTYK
KyNkZWZpbmUgX19OUl91bnNoYXJlIDk3CisjZGVmaW5lIF9fTlJfZnV0ZXggOTgKKyNkZWZpbmUg
X19OUl9zZXRfcm9idXN0X2xpc3QgOTkKKyNkZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QgMTAw
CisjZGVmaW5lIF9fTlJfbmFub3NsZWVwIDEwMQorI2RlZmluZSBfX05SX2dldGl0aW1lciAxMDIK
KyNkZWZpbmUgX19OUl9zZXRpdGltZXIgMTAzCisjZGVmaW5lIF9fTlJfa2V4ZWNfbG9hZCAxMDQK
KyNkZWZpbmUgX19OUl9pbml0X21vZHVsZSAxMDUKKyNkZWZpbmUgX19OUl9kZWxldGVfbW9kdWxl
IDEwNgorI2RlZmluZSBfX05SX3RpbWVyX2NyZWF0ZSAxMDcKKyNkZWZpbmUgX19OUl90aW1lcl9n
ZXR0aW1lIDEwOAorI2RlZmluZSBfX05SX3RpbWVyX2dldG92ZXJydW4gMTA5CisjZGVmaW5lIF9f
TlJfdGltZXJfc2V0dGltZSAxMTAKKyNkZWZpbmUgX19OUl90aW1lcl9kZWxldGUgMTExCisjZGVm
aW5lIF9fTlJfY2xvY2tfc2V0dGltZSAxMTIKKyNkZWZpbmUgX19OUl9jbG9ja19nZXR0aW1lIDEx
MworI2RlZmluZSBfX05SX2Nsb2NrX2dldHJlcyAxMTQKKyNkZWZpbmUgX19OUl9jbG9ja19uYW5v
c2xlZXAgMTE1CisjZGVmaW5lIF9fTlJfc3lzbG9nIDExNgorI2RlZmluZSBfX05SX3B0cmFjZSAx
MTcKKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRwYXJhbSAxMTgKKyNkZWZpbmUgX19OUl9zY2hlZF9z
ZXRzY2hlZHVsZXIgMTE5CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyIDEyMAorI2Rl
ZmluZSBfX05SX3NjaGVkX2dldHBhcmFtIDEyMQorI2RlZmluZSBfX05SX3NjaGVkX3NldGFmZmlu
aXR5IDEyMgorI2RlZmluZSBfX05SX3NjaGVkX2dldGFmZmluaXR5IDEyMworI2RlZmluZSBfX05S
X3NjaGVkX3lpZWxkIDEyNAorI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9tYXggMTI1
CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAxMjYKKyNkZWZpbmUgX19OUl9z
Y2hlZF9ycl9nZXRfaW50ZXJ2YWwgMTI3CisjZGVmaW5lIF9fTlJfcmVzdGFydF9zeXNjYWxsIDEy
OAorI2RlZmluZSBfX05SX2tpbGwgMTI5CisjZGVmaW5lIF9fTlJfdGtpbGwgMTMwCisjZGVmaW5l
IF9fTlJfdGdraWxsIDEzMQorI2RlZmluZSBfX05SX3NpZ2FsdHN0YWNrIDEzMgorI2RlZmluZSBf
X05SX3J0X3NpZ3N1c3BlbmQgMTMzCisjZGVmaW5lIF9fTlJfcnRfc2lnYWN0aW9uIDEzNAorI2Rl
ZmluZSBfX05SX3J0X3NpZ3Byb2NtYXNrIDEzNQorI2RlZmluZSBfX05SX3J0X3NpZ3BlbmRpbmcg
MTM2CisjZGVmaW5lIF9fTlJfcnRfc2lndGltZWR3YWl0IDEzNworI2RlZmluZSBfX05SX3J0X3Np
Z3F1ZXVlaW5mbyAxMzgKKyNkZWZpbmUgX19OUl9ydF9zaWdyZXR1cm4gMTM5CisjZGVmaW5lIF9f
TlJfc2V0cHJpb3JpdHkgMTQwCisjZGVmaW5lIF9fTlJfZ2V0cHJpb3JpdHkgMTQxCisjZGVmaW5l
IF9fTlJfcmVib290IDE0MgorI2RlZmluZSBfX05SX3NldHJlZ2lkIDE0MworI2RlZmluZSBfX05S
X3NldGdpZCAxNDQKKyNkZWZpbmUgX19OUl9zZXRyZXVpZCAxNDUKKyNkZWZpbmUgX19OUl9zZXR1
aWQgMTQ2CisjZGVmaW5lIF9fTlJfc2V0cmVzdWlkIDE0NworI2RlZmluZSBfX05SX2dldHJlc3Vp
ZCAxNDgKKyNkZWZpbmUgX19OUl9zZXRyZXNnaWQgMTQ5CisjZGVmaW5lIF9fTlJfZ2V0cmVzZ2lk
IDE1MAorI2RlZmluZSBfX05SX3NldGZzdWlkIDE1MQorI2RlZmluZSBfX05SX3NldGZzZ2lkIDE1
MgorI2RlZmluZSBfX05SX3RpbWVzIDE1MworI2RlZmluZSBfX05SX3NldHBnaWQgMTU0CisjZGVm
aW5lIF9fTlJfZ2V0cGdpZCAxNTUKKyNkZWZpbmUgX19OUl9nZXRzaWQgMTU2CisjZGVmaW5lIF9f
TlJfc2V0c2lkIDE1NworI2RlZmluZSBfX05SX2dldGdyb3VwcyAxNTgKKyNkZWZpbmUgX19OUl9z
ZXRncm91cHMgMTU5CisjZGVmaW5lIF9fTlJfdW5hbWUgMTYwCisjZGVmaW5lIF9fTlJfc2V0aG9z
dG5hbWUgMTYxCisjZGVmaW5lIF9fTlJfc2V0ZG9tYWlubmFtZSAxNjIKKyNkZWZpbmUgX19OUl9n
ZXRybGltaXQgMTYzCisjZGVmaW5lIF9fTlJfc2V0cmxpbWl0IDE2NAorI2RlZmluZSBfX05SX2dl
dHJ1c2FnZSAxNjUKKyNkZWZpbmUgX19OUl91bWFzayAxNjYKKyNkZWZpbmUgX19OUl9wcmN0bCAx
NjcKKyNkZWZpbmUgX19OUl9nZXRjcHUgMTY4CisjZGVmaW5lIF9fTlJfZ2V0dGltZW9mZGF5IDE2
OQorI2RlZmluZSBfX05SX3NldHRpbWVvZmRheSAxNzAKKyNkZWZpbmUgX19OUl9hZGp0aW1leCAx
NzEKKyNkZWZpbmUgX19OUl9nZXRwaWQgMTcyCisjZGVmaW5lIF9fTlJfZ2V0cHBpZCAxNzMKKyNk
ZWZpbmUgX19OUl9nZXR1aWQgMTc0CisjZGVmaW5lIF9fTlJfZ2V0ZXVpZCAxNzUKKyNkZWZpbmUg
X19OUl9nZXRnaWQgMTc2CisjZGVmaW5lIF9fTlJfZ2V0ZWdpZCAxNzcKKyNkZWZpbmUgX19OUl9n
ZXR0aWQgMTc4CisjZGVmaW5lIF9fTlJfc3lzaW5mbyAxNzkKKyNkZWZpbmUgX19OUl9tcV9vcGVu
IDE4MAorI2RlZmluZSBfX05SX21xX3VubGluayAxODEKKyNkZWZpbmUgX19OUl9tcV90aW1lZHNl
bmQgMTgyCisjZGVmaW5lIF9fTlJfbXFfdGltZWRyZWNlaXZlIDE4MworI2RlZmluZSBfX05SX21x
X25vdGlmeSAxODQKKyNkZWZpbmUgX19OUl9tcV9nZXRzZXRhdHRyIDE4NQorI2RlZmluZSBfX05S
X21zZ2dldCAxODYKKyNkZWZpbmUgX19OUl9tc2djdGwgMTg3CisjZGVmaW5lIF9fTlJfbXNncmN2
IDE4OAorI2RlZmluZSBfX05SX21zZ3NuZCAxODkKKyNkZWZpbmUgX19OUl9zZW1nZXQgMTkwCisj
ZGVmaW5lIF9fTlJfc2VtY3RsIDE5MQorI2RlZmluZSBfX05SX3NlbXRpbWVkb3AgMTkyCisjZGVm
aW5lIF9fTlJfc2Vtb3AgMTkzCisjZGVmaW5lIF9fTlJfc2htZ2V0IDE5NAorI2RlZmluZSBfX05S
X3NobWN0bCAxOTUKKyNkZWZpbmUgX19OUl9zaG1hdCAxOTYKKyNkZWZpbmUgX19OUl9zaG1kdCAx
OTcKKyNkZWZpbmUgX19OUl9zb2NrZXQgMTk4CisjZGVmaW5lIF9fTlJfc29ja2V0cGFpciAxOTkK
KyNkZWZpbmUgX19OUl9iaW5kIDIwMAorI2RlZmluZSBfX05SX2xpc3RlbiAyMDEKKyNkZWZpbmUg
X19OUl9hY2NlcHQgMjAyCisjZGVmaW5lIF9fTlJfY29ubmVjdCAyMDMKKyNkZWZpbmUgX19OUl9n
ZXRzb2NrbmFtZSAyMDQKKyNkZWZpbmUgX19OUl9nZXRwZWVybmFtZSAyMDUKKyNkZWZpbmUgX19O
Ul9zZW5kdG8gMjA2CisjZGVmaW5lIF9fTlJfcmVjdmZyb20gMjA3CisjZGVmaW5lIF9fTlJfc2V0
c29ja29wdCAyMDgKKyNkZWZpbmUgX19OUl9nZXRzb2Nrb3B0IDIwOQorI2RlZmluZSBfX05SX3No
dXRkb3duIDIxMAorI2RlZmluZSBfX05SX3NlbmRtc2cgMjExCisjZGVmaW5lIF9fTlJfcmVjdm1z
ZyAyMTIKKyNkZWZpbmUgX19OUl9yZWFkYWhlYWQgMjEzCisjZGVmaW5lIF9fTlJfYnJrIDIxNAor
I2RlZmluZSBfX05SX211bm1hcCAyMTUKKyNkZWZpbmUgX19OUl9tcmVtYXAgMjE2CisjZGVmaW5l
IF9fTlJfYWRkX2tleSAyMTcKKyNkZWZpbmUgX19OUl9yZXF1ZXN0X2tleSAyMTgKKyNkZWZpbmUg
X19OUl9rZXljdGwgMjE5CisjZGVmaW5lIF9fTlJfY2xvbmUgMjIwCisjZGVmaW5lIF9fTlJfZXhl
Y3ZlIDIyMQorI2RlZmluZSBfX05SX21tYXAgMjIyCisjZGVmaW5lIF9fTlJfZmFkdmlzZTY0IDIy
MworI2RlZmluZSBfX05SX3N3YXBvbiAyMjQKKyNkZWZpbmUgX19OUl9zd2Fwb2ZmIDIyNQorI2Rl
ZmluZSBfX05SX21wcm90ZWN0IDIyNgorI2RlZmluZSBfX05SX21zeW5jIDIyNworI2RlZmluZSBf
X05SX21sb2NrIDIyOAorI2RlZmluZSBfX05SX211bmxvY2sgMjI5CisjZGVmaW5lIF9fTlJfbWxv
Y2thbGwgMjMwCisjZGVmaW5lIF9fTlJfbXVubG9ja2FsbCAyMzEKKyNkZWZpbmUgX19OUl9taW5j
b3JlIDIzMgorI2RlZmluZSBfX05SX21hZHZpc2UgMjMzCisjZGVmaW5lIF9fTlJfcmVtYXBfZmls
ZV9wYWdlcyAyMzQKKyNkZWZpbmUgX19OUl9tYmluZCAyMzUKKyNkZWZpbmUgX19OUl9nZXRfbWVt
cG9saWN5IDIzNgorI2RlZmluZSBfX05SX3NldF9tZW1wb2xpY3kgMjM3CisjZGVmaW5lIF9fTlJf
bWlncmF0ZV9wYWdlcyAyMzgKKyNkZWZpbmUgX19OUl9tb3ZlX3BhZ2VzIDIzOQorI2RlZmluZSBf
X05SX3J0X3Rnc2lncXVldWVpbmZvIDI0MAorI2RlZmluZSBfX05SX3BlcmZfZXZlbnRfb3BlbiAy
NDEKKyNkZWZpbmUgX19OUl9hY2NlcHQ0IDI0MgorI2RlZmluZSBfX05SX3JlY3ZtbXNnIDI0Mwor
I2RlZmluZSBfX05SX3dhaXQ0IDI2MAorI2RlZmluZSBfX05SX3BybGltaXQ2NCAyNjEKKyNkZWZp
bmUgX19OUl9mYW5vdGlmeV9pbml0IDI2MgorI2RlZmluZSBfX05SX2Zhbm90aWZ5X21hcmsgMjYz
CisjZGVmaW5lIF9fTlJfbmFtZV90b19oYW5kbGVfYXQgMjY0CisjZGVmaW5lIF9fTlJfb3Blbl9i
eV9oYW5kbGVfYXQgMjY1CisjZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZSAyNjYKKyNkZWZpbmUg
X19OUl9zeW5jZnMgMjY3CisjZGVmaW5lIF9fTlJfc2V0bnMgMjY4CisjZGVmaW5lIF9fTlJfc2Vu
ZG1tc2cgMjY5CisjZGVmaW5lIF9fTlJfcHJvY2Vzc192bV9yZWFkdiAyNzAKKyNkZWZpbmUgX19O
Ul9wcm9jZXNzX3ZtX3dyaXRldiAyNzEKKyNkZWZpbmUgX19OUl9rY21wIDI3MgorI2RlZmluZSBf
X05SX2Zpbml0X21vZHVsZSAyNzMKKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRhdHRyIDI3NAorI2Rl
ZmluZSBfX05SX3NjaGVkX2dldGF0dHIgMjc1CisjZGVmaW5lIF9fTlJfcmVuYW1lYXQyIDI3Ngor
I2RlZmluZSBfX05SX3NlY2NvbXAgMjc3CisjZGVmaW5lIF9fTlJfZ2V0cmFuZG9tIDI3OAorI2Rl
ZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKKyNkZWZpbmUgX19OUl9icGYgMjgwCisjZGVmaW5l
IF9fTlJfZXhlY3ZlYXQgMjgxCisjZGVmaW5lIF9fTlJfdXNlcmZhdWx0ZmQgMjgyCisjZGVmaW5l
IF9fTlJfbWVtYmFycmllciAyODMKKyNkZWZpbmUgX19OUl9tbG9jazIgMjg0CisjZGVmaW5lIF9f
TlJfY29weV9maWxlX3JhbmdlIDI4NQorI2RlZmluZSBfX05SX3ByZWFkdjIgMjg2CisjZGVmaW5l
IF9fTlJfcHdyaXRldjIgMjg3CisjZGVmaW5lIF9fTlJfcGtleV9tcHJvdGVjdCAyODgKKyNkZWZp
bmUgX19OUl9wa2V5X2FsbG9jIDI4OQorI2RlZmluZSBfX05SX3BrZXlfZnJlZSAyOTAKKyNkZWZp
bmUgX19OUl9zdGF0eCAyOTEKKyNkZWZpbmUgX19OUl9pb19wZ2V0ZXZlbnRzIDI5MgorCmRpZmYg
LS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwuaC5pbiBiL2xpYi9z
eXNjYWxsX3NoaW0vYXJjaC94ODZfNjQvc3lzY2FsbC5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwLi45MjJhZTZhOAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9zeXNjYWxs
X3NoaW0vYXJjaC94ODZfNjQvc3lzY2FsbC5oLmluCkBAIC0wLDAgKzEsMzM3IEBACisvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlICovCisjZGVmaW5lIF9fTlJfcmVhZAkJ
CQkwCisjZGVmaW5lIF9fTlJfd3JpdGUJCQkJMQorI2RlZmluZSBfX05SX29wZW4JCQkJMgorI2Rl
ZmluZSBfX05SX2Nsb3NlCQkJCTMKKyNkZWZpbmUgX19OUl9zdGF0CQkJCTQKKyNkZWZpbmUgX19O
Ul9mc3RhdAkJCQk1CisjZGVmaW5lIF9fTlJfbHN0YXQJCQkJNgorI2RlZmluZSBfX05SX3BvbGwJ
CQkJNworI2RlZmluZSBfX05SX2xzZWVrCQkJCTgKKyNkZWZpbmUgX19OUl9tbWFwCQkJCTkKKyNk
ZWZpbmUgX19OUl9tcHJvdGVjdAkJCTEwCisjZGVmaW5lIF9fTlJfbXVubWFwCQkJCTExCisjZGVm
aW5lIF9fTlJfYnJrCQkJCTEyCisjZGVmaW5lIF9fTlJfcnRfc2lnYWN0aW9uCQkxMworI2RlZmlu
ZSBfX05SX3J0X3NpZ3Byb2NtYXNrCQkxNAorI2RlZmluZSBfX05SX3J0X3NpZ3JldHVybgkJMTUK
KyNkZWZpbmUgX19OUl9pb2N0bAkJCQkxNgorI2RlZmluZSBfX05SX3ByZWFkNjQJCQkxNworI2Rl
ZmluZSBfX05SX3B3cml0ZTY0CQkJMTgKKyNkZWZpbmUgX19OUl9yZWFkdgkJCQkxOQorI2RlZmlu
ZSBfX05SX3dyaXRldgkJCQkyMAorI2RlZmluZSBfX05SX2FjY2VzcwkJCQkyMQorI2RlZmluZSBf
X05SX3BpcGUJCQkJMjIKKyNkZWZpbmUgX19OUl9zZWxlY3QJCQkJMjMKKyNkZWZpbmUgX19OUl9z
Y2hlZF95aWVsZAkJMjQKKyNkZWZpbmUgX19OUl9tcmVtYXAJCQkJMjUKKyNkZWZpbmUgX19OUl9t
c3luYwkJCQkyNgorI2RlZmluZSBfX05SX21pbmNvcmUJCQkyNworI2RlZmluZSBfX05SX21hZHZp
c2UJCQkyOAorI2RlZmluZSBfX05SX3NobWdldAkJCQkyOQorI2RlZmluZSBfX05SX3NobWF0CQkJ
CTMwCisjZGVmaW5lIF9fTlJfc2htY3RsCQkJCTMxCisjZGVmaW5lIF9fTlJfZHVwCQkJCTMyCisj
ZGVmaW5lIF9fTlJfZHVwMgkJCQkzMworI2RlZmluZSBfX05SX3BhdXNlCQkJCTM0CisjZGVmaW5l
IF9fTlJfbmFub3NsZWVwCQkJMzUKKyNkZWZpbmUgX19OUl9nZXRpdGltZXIJCQkzNgorI2RlZmlu
ZSBfX05SX2FsYXJtCQkJCTM3CisjZGVmaW5lIF9fTlJfc2V0aXRpbWVyCQkJMzgKKyNkZWZpbmUg
X19OUl9nZXRwaWQJCQkJMzkKKyNkZWZpbmUgX19OUl9zZW5kZmlsZQkJCTQwCisjZGVmaW5lIF9f
TlJfc29ja2V0CQkJCTQxCisjZGVmaW5lIF9fTlJfY29ubmVjdAkJCTQyCisjZGVmaW5lIF9fTlJf
YWNjZXB0CQkJCTQzCisjZGVmaW5lIF9fTlJfc2VuZHRvCQkJCTQ0CisjZGVmaW5lIF9fTlJfcmVj
dmZyb20JCQk0NQorI2RlZmluZSBfX05SX3NlbmRtc2cJCQk0NgorI2RlZmluZSBfX05SX3JlY3Zt
c2cJCQk0NworI2RlZmluZSBfX05SX3NodXRkb3duCQkJNDgKKyNkZWZpbmUgX19OUl9iaW5kCQkJ
CTQ5CisjZGVmaW5lIF9fTlJfbGlzdGVuCQkJCTUwCisjZGVmaW5lIF9fTlJfZ2V0c29ja25hbWUJ
CTUxCisjZGVmaW5lIF9fTlJfZ2V0cGVlcm5hbWUJCTUyCisjZGVmaW5lIF9fTlJfc29ja2V0cGFp
cgkJCTUzCisjZGVmaW5lIF9fTlJfc2V0c29ja29wdAkJCTU0CisjZGVmaW5lIF9fTlJfZ2V0c29j
a29wdAkJCTU1CisjZGVmaW5lIF9fTlJfY2xvbmUJCQkJNTYKKyNkZWZpbmUgX19OUl9mb3JrCQkJ
CTU3CisjZGVmaW5lIF9fTlJfdmZvcmsJCQkJNTgKKyNkZWZpbmUgX19OUl9leGVjdmUJCQkJNTkK
KyNkZWZpbmUgX19OUl9leGl0CQkJCTYwCisjZGVmaW5lIF9fTlJfd2FpdDQJCQkJNjEKKyNkZWZp
bmUgX19OUl9raWxsCQkJCTYyCisjZGVmaW5lIF9fTlJfdW5hbWUJCQkJNjMKKyNkZWZpbmUgX19O
Ul9zZW1nZXQJCQkJNjQKKyNkZWZpbmUgX19OUl9zZW1vcAkJCQk2NQorI2RlZmluZSBfX05SX3Nl
bWN0bAkJCQk2NgorI2RlZmluZSBfX05SX3NobWR0CQkJCTY3CisjZGVmaW5lIF9fTlJfbXNnZ2V0
CQkJCTY4CisjZGVmaW5lIF9fTlJfbXNnc25kCQkJCTY5CisjZGVmaW5lIF9fTlJfbXNncmN2CQkJ
CTcwCisjZGVmaW5lIF9fTlJfbXNnY3RsCQkJCTcxCisjZGVmaW5lIF9fTlJfZmNudGwJCQkJNzIK
KyNkZWZpbmUgX19OUl9mbG9jawkJCQk3MworI2RlZmluZSBfX05SX2ZzeW5jCQkJCTc0CisjZGVm
aW5lIF9fTlJfZmRhdGFzeW5jCQkJNzUKKyNkZWZpbmUgX19OUl90cnVuY2F0ZQkJCTc2CisjZGVm
aW5lIF9fTlJfZnRydW5jYXRlCQkJNzcKKyNkZWZpbmUgX19OUl9nZXRkZW50cwkJCTc4CisjZGVm
aW5lIF9fTlJfZ2V0Y3dkCQkJCTc5CisjZGVmaW5lIF9fTlJfY2hkaXIJCQkJODAKKyNkZWZpbmUg
X19OUl9mY2hkaXIJCQkJODEKKyNkZWZpbmUgX19OUl9yZW5hbWUJCQkJODIKKyNkZWZpbmUgX19O
Ul9ta2RpcgkJCQk4MworI2RlZmluZSBfX05SX3JtZGlyCQkJCTg0CisjZGVmaW5lIF9fTlJfY3Jl
YXQJCQkJODUKKyNkZWZpbmUgX19OUl9saW5rCQkJCTg2CisjZGVmaW5lIF9fTlJfdW5saW5rCQkJ
CTg3CisjZGVmaW5lIF9fTlJfc3ltbGluawkJCTg4CisjZGVmaW5lIF9fTlJfcmVhZGxpbmsJCQk4
OQorI2RlZmluZSBfX05SX2NobW9kCQkJCTkwCisjZGVmaW5lIF9fTlJfZmNobW9kCQkJCTkxCisj
ZGVmaW5lIF9fTlJfY2hvd24JCQkJOTIKKyNkZWZpbmUgX19OUl9mY2hvd24JCQkJOTMKKyNkZWZp
bmUgX19OUl9sY2hvd24JCQkJOTQKKyNkZWZpbmUgX19OUl91bWFzawkJCQk5NQorI2RlZmluZSBf
X05SX2dldHRpbWVvZmRheQkJOTYKKyNkZWZpbmUgX19OUl9nZXRybGltaXQJCQk5NworI2RlZmlu
ZSBfX05SX2dldHJ1c2FnZQkJCTk4CisjZGVmaW5lIF9fTlJfc3lzaW5mbwkJCTk5CisjZGVmaW5l
IF9fTlJfdGltZXMJCQkJMTAwCisjZGVmaW5lIF9fTlJfcHRyYWNlCQkJCTEwMQorI2RlZmluZSBf
X05SX2dldHVpZAkJCQkxMDIKKyNkZWZpbmUgX19OUl9zeXNsb2cJCQkJMTAzCisjZGVmaW5lIF9f
TlJfZ2V0Z2lkCQkJCTEwNAorI2RlZmluZSBfX05SX3NldHVpZAkJCQkxMDUKKyNkZWZpbmUgX19O
Ul9zZXRnaWQJCQkJMTA2CisjZGVmaW5lIF9fTlJfZ2V0ZXVpZAkJCTEwNworI2RlZmluZSBfX05S
X2dldGVnaWQJCQkxMDgKKyNkZWZpbmUgX19OUl9zZXRwZ2lkCQkJMTA5CisjZGVmaW5lIF9fTlJf
Z2V0cHBpZAkJCTExMAorI2RlZmluZSBfX05SX2dldHBncnAJCQkxMTEKKyNkZWZpbmUgX19OUl9z
ZXRzaWQJCQkJMTEyCisjZGVmaW5lIF9fTlJfc2V0cmV1aWQJCQkxMTMKKyNkZWZpbmUgX19OUl9z
ZXRyZWdpZAkJCTExNAorI2RlZmluZSBfX05SX2dldGdyb3VwcwkJCTExNQorI2RlZmluZSBfX05S
X3NldGdyb3VwcwkJCTExNgorI2RlZmluZSBfX05SX3NldHJlc3VpZAkJCTExNworI2RlZmluZSBf
X05SX2dldHJlc3VpZAkJCTExOAorI2RlZmluZSBfX05SX3NldHJlc2dpZAkJCTExOQorI2RlZmlu
ZSBfX05SX2dldHJlc2dpZAkJCTEyMAorI2RlZmluZSBfX05SX2dldHBnaWQJCQkxMjEKKyNkZWZp
bmUgX19OUl9zZXRmc3VpZAkJCTEyMgorI2RlZmluZSBfX05SX3NldGZzZ2lkCQkJMTIzCisjZGVm
aW5lIF9fTlJfZ2V0c2lkCQkJCTEyNAorI2RlZmluZSBfX05SX2NhcGdldAkJCQkxMjUKKyNkZWZp
bmUgX19OUl9jYXBzZXQJCQkJMTI2CisjZGVmaW5lIF9fTlJfcnRfc2lncGVuZGluZwkJMTI3Cisj
ZGVmaW5lIF9fTlJfcnRfc2lndGltZWR3YWl0CTEyOAorI2RlZmluZSBfX05SX3J0X3NpZ3F1ZXVl
aW5mbwkxMjkKKyNkZWZpbmUgX19OUl9ydF9zaWdzdXNwZW5kCQkxMzAKKyNkZWZpbmUgX19OUl9z
aWdhbHRzdGFjawkJMTMxCisjZGVmaW5lIF9fTlJfdXRpbWUJCQkJMTMyCisjZGVmaW5lIF9fTlJf
bWtub2QJCQkJMTMzCisjZGVmaW5lIF9fTlJfdXNlbGliCQkJCTEzNAorI2RlZmluZSBfX05SX3Bl
cnNvbmFsaXR5CQkxMzUKKyNkZWZpbmUgX19OUl91c3RhdAkJCQkxMzYKKyNkZWZpbmUgX19OUl9z
dGF0ZnMJCQkJMTM3CisjZGVmaW5lIF9fTlJfZnN0YXRmcwkJCTEzOAorI2RlZmluZSBfX05SX3N5
c2ZzCQkJCTEzOQorI2RlZmluZSBfX05SX2dldHByaW9yaXR5CQkJMTQwCisjZGVmaW5lIF9fTlJf
c2V0cHJpb3JpdHkJCQkxNDEKKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRwYXJhbQkJCTE0MgorI2Rl
ZmluZSBfX05SX3NjaGVkX2dldHBhcmFtCQkJMTQzCisjZGVmaW5lIF9fTlJfc2NoZWRfc2V0c2No
ZWR1bGVyCQkxNDQKKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXIJCTE0NQorI2RlZmlu
ZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9tYXgJMTQ2CisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0
X3ByaW9yaXR5X21pbgkxNDcKKyNkZWZpbmUgX19OUl9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwJMTQ4
CisjZGVmaW5lIF9fTlJfbWxvY2sJCQkJCTE0OQorI2RlZmluZSBfX05SX211bmxvY2sJCQkJMTUw
CisjZGVmaW5lIF9fTlJfbWxvY2thbGwJCQkJMTUxCisjZGVmaW5lIF9fTlJfbXVubG9ja2FsbAkJ
CQkxNTIKKyNkZWZpbmUgX19OUl92aGFuZ3VwCQkJCTE1MworI2RlZmluZSBfX05SX21vZGlmeV9s
ZHQJCQkJMTU0CisjZGVmaW5lIF9fTlJfcGl2b3Rfcm9vdAkJCQkxNTUKKyNkZWZpbmUgX19OUl9f
c3lzY3RsCQkJCTE1NgorI2RlZmluZSBfX05SX3ByY3RsCQkJCQkxNTcKKyNkZWZpbmUgX19OUl9h
cmNoX3ByY3RsCQkJCTE1OAorI2RlZmluZSBfX05SX2FkanRpbWV4CQkJCTE1OQorI2RlZmluZSBf
X05SX3NldHJsaW1pdAkJCQkxNjAKKyNkZWZpbmUgX19OUl9jaHJvb3QJCQkJCTE2MQorI2RlZmlu
ZSBfX05SX3N5bmMJCQkJCTE2MgorI2RlZmluZSBfX05SX2FjY3QJCQkJCTE2MworI2RlZmluZSBf
X05SX3NldHRpbWVvZmRheQkJCTE2NAorI2RlZmluZSBfX05SX21vdW50CQkJCQkxNjUKKyNkZWZp
bmUgX19OUl91bW91bnQyCQkJCTE2NgorI2RlZmluZSBfX05SX3N3YXBvbgkJCQkJMTY3CisjZGVm
aW5lIF9fTlJfc3dhcG9mZgkJCQkxNjgKKyNkZWZpbmUgX19OUl9yZWJvb3QJCQkJCTE2OQorI2Rl
ZmluZSBfX05SX3NldGhvc3RuYW1lCQkJMTcwCisjZGVmaW5lIF9fTlJfc2V0ZG9tYWlubmFtZQkJ
CTE3MQorI2RlZmluZSBfX05SX2lvcGwJCQkJCTE3MgorI2RlZmluZSBfX05SX2lvcGVybQkJCQkJ
MTczCisjZGVmaW5lIF9fTlJfY3JlYXRlX21vZHVsZQkJCTE3NAorI2RlZmluZSBfX05SX2luaXRf
bW9kdWxlCQkJMTc1CisjZGVmaW5lIF9fTlJfZGVsZXRlX21vZHVsZQkJCTE3NgorI2RlZmluZSBf
X05SX2dldF9rZXJuZWxfc3ltcwkJMTc3CisjZGVmaW5lIF9fTlJfcXVlcnlfbW9kdWxlCQkJMTc4
CisjZGVmaW5lIF9fTlJfcXVvdGFjdGwJCQkJMTc5CisjZGVmaW5lIF9fTlJfbmZzc2VydmN0bAkJ
CQkxODAKKyNkZWZpbmUgX19OUl9nZXRwbXNnCQkJCTE4MQorI2RlZmluZSBfX05SX3B1dHBtc2cJ
CQkJMTgyCisjZGVmaW5lIF9fTlJfYWZzX3N5c2NhbGwJCQkxODMKKyNkZWZpbmUgX19OUl90dXhj
YWxsCQkJCTE4NAorI2RlZmluZSBfX05SX3NlY3VyaXR5CQkJCTE4NQorI2RlZmluZSBfX05SX2dl
dHRpZAkJCQkJMTg2CisjZGVmaW5lIF9fTlJfcmVhZGFoZWFkCQkJCTE4NworI2RlZmluZSBfX05S
X3NldHhhdHRyCQkJCTE4OAorI2RlZmluZSBfX05SX2xzZXR4YXR0cgkJCQkxODkKKyNkZWZpbmUg
X19OUl9mc2V0eGF0dHIJCQkJMTkwCisjZGVmaW5lIF9fTlJfZ2V0eGF0dHIJCQkJMTkxCisjZGVm
aW5lIF9fTlJfbGdldHhhdHRyCQkJCTE5MgorI2RlZmluZSBfX05SX2ZnZXR4YXR0cgkJCQkxOTMK
KyNkZWZpbmUgX19OUl9saXN0eGF0dHIJCQkJMTk0CisjZGVmaW5lIF9fTlJfbGxpc3R4YXR0cgkJ
CQkxOTUKKyNkZWZpbmUgX19OUl9mbGlzdHhhdHRyCQkJCTE5NgorI2RlZmluZSBfX05SX3JlbW92
ZXhhdHRyCQkJMTk3CisjZGVmaW5lIF9fTlJfbHJlbW92ZXhhdHRyCQkJMTk4CisjZGVmaW5lIF9f
TlJfZnJlbW92ZXhhdHRyCQkJMTk5CisjZGVmaW5lIF9fTlJfdGtpbGwJCQkJCTIwMAorI2RlZmlu
ZSBfX05SX3RpbWUJCQkJCTIwMQorI2RlZmluZSBfX05SX2Z1dGV4CQkJCQkyMDIKKyNkZWZpbmUg
X19OUl9zY2hlZF9zZXRhZmZpbml0eQkJMjAzCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YWZmaW5p
dHkJCTIwNAorI2RlZmluZSBfX05SX3NldF90aHJlYWRfYXJlYQkJMjA1CisjZGVmaW5lIF9fTlJf
aW9fc2V0dXAJCQkJMjA2CisjZGVmaW5lIF9fTlJfaW9fZGVzdHJveQkJCQkyMDcKKyNkZWZpbmUg
X19OUl9pb19nZXRldmVudHMJCQkyMDgKKyNkZWZpbmUgX19OUl9pb19zdWJtaXQJCQkJMjA5Cisj
ZGVmaW5lIF9fTlJfaW9fY2FuY2VsCQkJCTIxMAorI2RlZmluZSBfX05SX2dldF90aHJlYWRfYXJl
YQkJMjExCisjZGVmaW5lIF9fTlJfbG9va3VwX2Rjb29raWUJCQkyMTIKKyNkZWZpbmUgX19OUl9l
cG9sbF9jcmVhdGUJCQkyMTMKKyNkZWZpbmUgX19OUl9lcG9sbF9jdGxfb2xkCQkJMjE0CisjZGVm
aW5lIF9fTlJfZXBvbGxfd2FpdF9vbGQJCQkyMTUKKyNkZWZpbmUgX19OUl9yZW1hcF9maWxlX3Bh
Z2VzCQkyMTYKKyNkZWZpbmUgX19OUl9nZXRkZW50czY0CQkJCTIxNworI2RlZmluZSBfX05SX3Nl
dF90aWRfYWRkcmVzcwkJMjE4CisjZGVmaW5lIF9fTlJfcmVzdGFydF9zeXNjYWxsCQkyMTkKKyNk
ZWZpbmUgX19OUl9zZW10aW1lZG9wCQkJCTIyMAorI2RlZmluZSBfX05SX2ZhZHZpc2U2NAkJCQky
MjEKKyNkZWZpbmUgX19OUl90aW1lcl9jcmVhdGUJCQkyMjIKKyNkZWZpbmUgX19OUl90aW1lcl9z
ZXR0aW1lCQkJMjIzCisjZGVmaW5lIF9fTlJfdGltZXJfZ2V0dGltZQkJCTIyNAorI2RlZmluZSBf
X05SX3RpbWVyX2dldG92ZXJydW4JCTIyNQorI2RlZmluZSBfX05SX3RpbWVyX2RlbGV0ZQkJCTIy
NgorI2RlZmluZSBfX05SX2Nsb2NrX3NldHRpbWUJCQkyMjcKKyNkZWZpbmUgX19OUl9jbG9ja19n
ZXR0aW1lCQkJMjI4CisjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzCQkJMjI5CisjZGVmaW5lIF9f
TlJfY2xvY2tfbmFub3NsZWVwCQkyMzAKKyNkZWZpbmUgX19OUl9leGl0X2dyb3VwCQkJCTIzMQor
I2RlZmluZSBfX05SX2Vwb2xsX3dhaXQJCQkJMjMyCisjZGVmaW5lIF9fTlJfZXBvbGxfY3RsCQkJ
CTIzMworI2RlZmluZSBfX05SX3Rna2lsbAkJCQkJMjM0CisjZGVmaW5lIF9fTlJfdXRpbWVzCQkJ
CQkyMzUKKyNkZWZpbmUgX19OUl92c2VydmVyCQkJCTIzNgorI2RlZmluZSBfX05SX21iaW5kCQkJ
CQkyMzcKKyNkZWZpbmUgX19OUl9zZXRfbWVtcG9saWN5CQkJMjM4CisjZGVmaW5lIF9fTlJfZ2V0
X21lbXBvbGljeQkJCTIzOQorI2RlZmluZSBfX05SX21xX29wZW4JCQkJMjQwCisjZGVmaW5lIF9f
TlJfbXFfdW5saW5rCQkJCTI0MQorI2RlZmluZSBfX05SX21xX3RpbWVkc2VuZAkJCTI0MgorI2Rl
ZmluZSBfX05SX21xX3RpbWVkcmVjZWl2ZQkJMjQzCisjZGVmaW5lIF9fTlJfbXFfbm90aWZ5CQkJ
CTI0NAorI2RlZmluZSBfX05SX21xX2dldHNldGF0dHIJCQkyNDUKKyNkZWZpbmUgX19OUl9rZXhl
Y19sb2FkCQkJCTI0NgorI2RlZmluZSBfX05SX3dhaXRpZAkJCQkJMjQ3CisjZGVmaW5lIF9fTlJf
YWRkX2tleQkJCQkyNDgKKyNkZWZpbmUgX19OUl9yZXF1ZXN0X2tleQkJCTI0OQorI2RlZmluZSBf
X05SX2tleWN0bAkJCQkJMjUwCisjZGVmaW5lIF9fTlJfaW9wcmlvX3NldAkJCQkyNTEKKyNkZWZp
bmUgX19OUl9pb3ByaW9fZ2V0CQkJCTI1MgorI2RlZmluZSBfX05SX2lub3RpZnlfaW5pdAkJCTI1
MworI2RlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoCQkyNTQKKyNkZWZpbmUgX19OUl9pbm90
aWZ5X3JtX3dhdGNoCQkyNTUKKyNkZWZpbmUgX19OUl9taWdyYXRlX3BhZ2VzCQkJMjU2CisjZGVm
aW5lIF9fTlJfb3BlbmF0CQkJCQkyNTcKKyNkZWZpbmUgX19OUl9ta2RpcmF0CQkJCTI1OAorI2Rl
ZmluZSBfX05SX21rbm9kYXQJCQkJMjU5CisjZGVmaW5lIF9fTlJfZmNob3duYXQJCQkJMjYwCisj
ZGVmaW5lIF9fTlJfZnV0aW1lc2F0CQkJCTI2MQorI2RlZmluZSBfX05SX25ld2ZzdGF0YXQJCQkJ
MjYyCisjZGVmaW5lIF9fTlJfdW5saW5rYXQJCQkJMjYzCisjZGVmaW5lIF9fTlJfcmVuYW1lYXQJ
CQkJMjY0CisjZGVmaW5lIF9fTlJfbGlua2F0CQkJCQkyNjUKKyNkZWZpbmUgX19OUl9zeW1saW5r
YXQJCQkJMjY2CisjZGVmaW5lIF9fTlJfcmVhZGxpbmthdAkJCQkyNjcKKyNkZWZpbmUgX19OUl9m
Y2htb2RhdAkJCQkyNjgKKyNkZWZpbmUgX19OUl9mYWNjZXNzYXQJCQkJMjY5CisjZGVmaW5lIF9f
TlJfcHNlbGVjdDYJCQkJMjcwCisjZGVmaW5lIF9fTlJfcHBvbGwJCQkJCTI3MQorI2RlZmluZSBf
X05SX3Vuc2hhcmUJCQkJMjcyCisjZGVmaW5lIF9fTlJfc2V0X3JvYnVzdF9saXN0CQkyNzMKKyNk
ZWZpbmUgX19OUl9nZXRfcm9idXN0X2xpc3QJCTI3NAorI2RlZmluZSBfX05SX3NwbGljZQkJCQkJ
Mjc1CisjZGVmaW5lIF9fTlJfdGVlCQkJCQkyNzYKKyNkZWZpbmUgX19OUl9zeW5jX2ZpbGVfcmFu
Z2UJCTI3NworI2RlZmluZSBfX05SX3Ztc3BsaWNlCQkJCTI3OAorI2RlZmluZSBfX05SX21vdmVf
cGFnZXMJCQkJMjc5CisjZGVmaW5lIF9fTlJfdXRpbWVuc2F0CQkJCTI4MAorI2RlZmluZSBfX05S
X2Vwb2xsX3B3YWl0CQkJMjgxCisjZGVmaW5lIF9fTlJfc2lnbmFsZmQJCQkJMjgyCisjZGVmaW5l
IF9fTlJfdGltZXJmZF9jcmVhdGUJCQkyODMKKyNkZWZpbmUgX19OUl9ldmVudGZkCQkJCTI4NAor
I2RlZmluZSBfX05SX2ZhbGxvY2F0ZQkJCQkyODUKKyNkZWZpbmUgX19OUl90aW1lcmZkX3NldHRp
bWUJCTI4NgorI2RlZmluZSBfX05SX3RpbWVyZmRfZ2V0dGltZQkJMjg3CisjZGVmaW5lIF9fTlJf
YWNjZXB0NAkJCQkyODgKKyNkZWZpbmUgX19OUl9zaWduYWxmZDQJCQkJMjg5CisjZGVmaW5lIF9f
TlJfZXZlbnRmZDIJCQkJMjkwCisjZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRlMQkJCTI5MQorI2Rl
ZmluZSBfX05SX2R1cDMJCQkJCTI5MgorI2RlZmluZSBfX05SX3BpcGUyCQkJCQkyOTMKKyNkZWZp
bmUgX19OUl9pbm90aWZ5X2luaXQxCQkJMjk0CisjZGVmaW5lIF9fTlJfcHJlYWR2CQkJCQkyOTUK
KyNkZWZpbmUgX19OUl9wd3JpdGV2CQkJCTI5NgorI2RlZmluZSBfX05SX3J0X3Rnc2lncXVldWVp
bmZvCQkyOTcKKyNkZWZpbmUgX19OUl9wZXJmX2V2ZW50X29wZW4JCTI5OAorI2RlZmluZSBfX05S
X3JlY3ZtbXNnCQkJCTI5OQorI2RlZmluZSBfX05SX2Zhbm90aWZ5X2luaXQJCQkzMDAKKyNkZWZp
bmUgX19OUl9mYW5vdGlmeV9tYXJrCQkJMzAxCisjZGVmaW5lIF9fTlJfcHJsaW1pdDY0CQkJCTMw
MgorI2RlZmluZSBfX05SX25hbWVfdG9faGFuZGxlX2F0CQkJMzAzCisjZGVmaW5lIF9fTlJfb3Bl
bl9ieV9oYW5kbGVfYXQJCQkzMDQKKyNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lCQkJMzA1Cisj
ZGVmaW5lIF9fTlJfc3luY2ZzCQkJCTMwNgorI2RlZmluZSBfX05SX3NlbmRtbXNnCQkJCTMwNwor
I2RlZmluZSBfX05SX3NldG5zCQkJCTMwOAorI2RlZmluZSBfX05SX2dldGNwdQkJCQkzMDkKKyNk
ZWZpbmUgX19OUl9wcm9jZXNzX3ZtX3JlYWR2CQkJMzEwCisjZGVmaW5lIF9fTlJfcHJvY2Vzc192
bV93cml0ZXYJCQkzMTEKKyNkZWZpbmUgX19OUl9rY21wCQkJCTMxMgorI2RlZmluZSBfX05SX2Zp
bml0X21vZHVsZQkJCTMxMworI2RlZmluZSBfX05SX3NjaGVkX3NldGF0dHIJCQkzMTQKKyNkZWZp
bmUgX19OUl9zY2hlZF9nZXRhdHRyCQkJMzE1CisjZGVmaW5lIF9fTlJfcmVuYW1lYXQyCQkJCTMx
NgorI2RlZmluZSBfX05SX3NlY2NvbXAJCQkJMzE3CisjZGVmaW5lIF9fTlJfZ2V0cmFuZG9tCQkJ
CTMxOAorI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZQkJCTMxOQorI2RlZmluZSBfX05SX2tleGVj
X2ZpbGVfbG9hZAkJCTMyMAorI2RlZmluZSBfX05SX2JwZgkJCQkzMjEKKyNkZWZpbmUgX19OUl9l
eGVjdmVhdAkJCQkzMjIKKyNkZWZpbmUgX19OUl91c2VyZmF1bHRmZAkJCTMyMworI2RlZmluZSBf
X05SX21lbWJhcnJpZXIJCQkJMzI0CisjZGVmaW5lIF9fTlJfbWxvY2syCQkJCTMyNQorI2RlZmlu
ZSBfX05SX2NvcHlfZmlsZV9yYW5nZQkJCTMyNgorI2RlZmluZSBfX05SX3ByZWFkdjIJCQkJMzI3
CisjZGVmaW5lIF9fTlJfcHdyaXRldjIJCQkJMzI4CisjZGVmaW5lIF9fTlJfcGtleV9tcHJvdGVj
dAkJCTMyOQorI2RlZmluZSBfX05SX3BrZXlfYWxsb2MJCQkJMzMwCisjZGVmaW5lIF9fTlJfcGtl
eV9mcmVlCQkJCTMzMQorI2RlZmluZSBfX05SX3N0YXR4CQkJCTMzMgorI2RlZmluZSBfX05SX2lv
X3BnZXRldmVudHMJCQkzMzMKKyNkZWZpbmUgX19OUl9yc2VxCQkJCTMzNAorCi0tIAoyLjE5LjIK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGG-0007Oj-Ib; Wed, 05 Jun 2019 15:55:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGF-0007Nz-Al
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:35 +0000
X-Inumbo-ID: 5a2912c3-87aa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5a2912c3-87aa-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 15:55:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9104CF208D;
 Wed,  5 Jun 2019 17:55:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id CX76nsOZV-Pl; Wed,  5 Jun 2019 17:55:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6B39DF2017
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:31 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:31 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:06 +0200
Message-ID: <20190605155511.26450-5-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 4/9] lib/syscall_shim: generate
 base headers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGZvbGxvd2luZyBoZWFkZXJzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGNvZGUgaW4gdGhpcyBw
YXRjaDoKICAtIHN5c2NhbGxfbnJzLmggLSBqdXN0IGRlZmluaXRpb25zIG9mIGFsbCB0aGUgc3lz
Y2FsbHMgd2l0aCB0aGVpcgogICAgbnVtYmVycwogIC0gc3lzY2FsbF9tYXAuaCAgLSBwcm92aWRl
cyBtYXBzIGZyb20gc3lzY2FsbCBudW1iZXIgdG8gYSBjb25jcmV0ZQogICAgZnVuY3Rpb24gaW4g
dGhlIFVuaWthcmZ0CiAgLSBzeXNjYWxsX3N0dWJzLmggLSBpZiBubyBsaWJyYXJ5IGlzIHByb3Zp
ZGluZyBhIHN5c2NhbGwsIGl0IHdpbGwgYmUKICAgIHJlc29sdmVkIHRvIGEgc3R1YiwgZGVmaW5l
ZCBpbiB0aGlzIGZpbGUKClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hr
b3ZAbmVjbGFiLmV1PgotLS0KIGxpYi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICB8
ICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIGxpYi9z
eXNjYWxsX3NoaW0vQ29uZmlnLnVrICAgICAgICAgICB8ICAzICsrKwogbGliL3N5c2NhbGxfc2hp
bS9NYWtlZmlsZS51ayAgICAgICAgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
bGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrICAgICAgIHwgIDggKysrKysrCiBsaWIvc3lz
Y2FsbF9zaGltL2dlbl9zeXNjYWxsX21hcC5hd2sgfCAgNCArKysKIGxpYi9zeXNjYWxsX3NoaW0v
Z2VuX3N5c2NhbGxfbnJzLmF3ayB8ICA0ICsrKwogNyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRp
b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9tYXAuYXdrCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9ucnMuYXdrCgpkaWZmIC0tZ2l0IGEvbGli
L0NvbmZpZy51ayBiL2xpYi9Db25maWcudWsKaW5kZXggODIyYzYyNGYuLmI1MTdhYmQ4IDEwMDY0
NAotLS0gYS9saWIvQ29uZmlnLnVrCisrKyBiL2xpYi9Db25maWcudWsKQEAgLTQ3LDMgKzQ3LDQg
QEAgc291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtidXMvQ29u
ZmlnLnVrIgogc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtu
ZXRkZXYvQ29uZmlnLnVrIgorc291cmNlICJsaWIvc3lzY2FsbF9zaGltL0NvbmZpZy51ayIKZGlm
ZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS51ayBiL2xpYi9NYWtlZmlsZS51awppbmRleCBkMDY4Mzdm
MS4uZTY2NjQ5NTIgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS51aworKysgYi9saWIvTWFrZWZp
bGUudWsKQEAgLTI0LDMgKzI0LDQgQEAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJ
R19VS19CQVNFKS9saWIvdWttcGkpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJ
R19VS19CQVNFKS9saWIvdWtidXMpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJ
R19VS19CQVNFKS9saWIvdWtzZ2xpc3QpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvdWtuZXRkZXYpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwk
KENPTkZJR19VS19CQVNFKS9saWIvc3lzY2FsbF9zaGltKSkKZGlmZiAtLWdpdCBhL2xpYi9zeXNj
YWxsX3NoaW0vQ29uZmlnLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmY4OGNmOTcwCi0tLSAvZGV2L251bGwKKysrIGIv
bGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKQEAgLTAsMCArMSwzIEBACitjb25maWcgTElCU1lT
Q0FMTF9TSElNCisJYm9vbCAiU3lzY2FsbCBzaGltIGxheWVyIgorCWRlZmF1bHQgbgpkaWZmIC0t
Z2l0IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0vTWFr
ZWZpbGUudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjUyMGU5MjA2Ci0t
LSAvZGV2L251bGwKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awpAQCAtMCwwICsx
LDM4IEBACiskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnN5c2NhbGxfc2hpbSwkKENPTkZJR19M
SUJTWVNDQUxMX1NISU0pKSkKKworTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEggOj0gJChM
SUJTWVNDQUxMX1NISU1fQlVJTEQpL2luY2x1ZGUvdWsvYml0cworCitMSUJTWVNDQUxMX1NISU1f
UEhPTllfU1JDIDo9IHN5c2NhbGxfbWFwLmggc3lzY2FsbF9zdHVicy5oIHN5c2NhbGxfbnJzLmgK
K0xJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMgOj0gJChhZGRwcmVmaXggJChMSUJTWVNDQUxMX1NI
SU1fSU5DTFVERVNfUEFUSCkvLCAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMpKQorTElCU1lT
Q0FMTF9TSElNX1BIT05ZX1NSQ19ORVcgOj0gJChhZGRzdWZmaXggLm5ldywgJChMSUJTWVNDQUxM
X1NISU1fUEhPTllfU1JDKSkKKworVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0p
ICs9ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykKKworCitMSUJTWVNDQUxMX1NISU1fVEVN
UEwgOj0gJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvYXJjaC8kKENPTkZJR19VS19BUkNIKS9zeXNj
YWxsLmguaW4KKworJChpZiAkKHNoZWxsIG1rZGlyIC1wICQoTElCU1lTQ0FMTF9TSElNX0lOQ0xV
REVTX1BBVEgpICYmIFwKKwljZCAkKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKSA+L2Rl
di9udWxsICYmIHB3ZCksLFwKKwkJJChlcnJvciBjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAk
MSkpCisKKy5QSE9OWTogJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDX05FVykKKworJChMSUJT
WVNDQUxMX1NISU1fUEhPTllfU1JDKTogJTogJS5uZXcKKwlAY21wIC1zICReICRAOyBpZiBbICQk
PyAtbmUgMCBdOyB0aGVuIGNwICReICRAOyBmaQorCiskKExJQlNZU0NBTExfU0hJTV9JTkNMVURF
U19QQVRIKS9zeXNjYWxsX25ycy5oLm5ldzoKKwkkKGNhbGwgYnVpbGRfY21kLEdFTixTWVNDQUxM
X1NISU0sJChub3RkaXIgJEApLCBcCisJCSQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNF
KS9nZW5fc3lzY2FsbF9ucnMuYXdrIFwKKwkJJChMSUJTWVNDQUxMX1NISU1fVEVNUEwpID4gJEAp
CisKKyQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxfbWFwLmgubmV3Ogor
CSQoY2FsbCBidWlsZF9jbWQsR0VOLFNZU0NBTExfU0hJTSwkKG5vdGRpciAkQCksIFwKKwkJJChB
V0spIC1mICAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fc3lzY2FsbF9tYXAuYXdrIFwKKwkJ
JChMSUJTWVNDQUxMX1NISU1fVEVNUEwpID4gJEApCisKKyQoTElCU1lTQ0FMTF9TSElNX0lOQ0xV
REVTX1BBVEgpL3N5c2NhbGxfc3R1YnMuaC5uZXc6CisJJChjYWxsIGJ1aWxkX2NtZCxHRU4sU1lT
Q0FMTF9TSElNLCQobm90ZGlyICRAKSwgXAorCQkkKEFXSykgLWYgJChMSUJTWVNDQUxMX1NISU1f
QkFTRSkvZ2VuX3N0dWJzLmF3ayBcCisJCSQoTElCU1lTQ0FMTF9TSElNX1RFTVBMKSA+ICRAKQor
CitMSUJTWVNDQUxMX1NISU1fQ0xFQU4gPSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMpICQo
TElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQ19ORVcpCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9z
aGltL2dlbl9zdHVicy5hd2sgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9zdHVicy5hd2sKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmRlMTM2ZjE4Ci0tLSAvZGV2L251bGwKKysr
IGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCkBAIC0wLDAgKzEsOCBAQAorQkVHSU4g
eyBwcmludCAiLyogQXV0byBnZW5lcmF0ZWQgZmlsZS4gRG8gbm90IGVkaXQgKi8iIH0KKy8jZGVm
aW5lIF9fTlJfLyB7CisJbmFtZSA9IHN1YnN0cigkMiw2KTsKKwl1a19uYW1lID0gInVrX3N5c2Nh
bGxfIiBuYW1lCisJcHJpbnRmICJcbiNpZm5kZWYgSEFWRV8lcyIsIHVrX25hbWU7CisJcHJpbnRm
ICJcbiNkZWZpbmUgJXMoLi4uKSB1a19zeXNjYWxsX3N0dWIoXCIlc1wiKSIsIHVrX25hbWUsIG5h
bWU7CisJcHJpbnRmICJcbiNlbmRpZiAvKiBIQVZFXyVzICovXG4iLCB1a19uYW1lOworfQpkaWZm
IC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9tYXAuYXdrIGIvbGliL3N5c2Nh
bGxfc2hpbS9nZW5fc3lzY2FsbF9tYXAuYXdrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwLi45OWIyNDdkZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vZ2Vu
X3N5c2NhbGxfbWFwLmF3awpAQCAtMCwwICsxLDQgQEAKK0JFR0lOIHtwcmludCAiLyogQXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZmlsZTsgRE8gTk9UIEVESVQgKi9cbiJ9CisvI2RlZmluZSBfX05S
Xy97CisJcHJpbnRmICIjZGVmaW5lIHVrX3N5c2NhbGxfZm5fJXMoLi4uKSB1a19zeXNjYWxsXyVz
KF9fVkFfQVJHU19fKVxuIiwgJDMsc3Vic3RyKCQyLDYpCit9CmRpZmYgLS1naXQgYS9saWIvc3lz
Y2FsbF9zaGltL2dlbl9zeXNjYWxsX25ycy5hd2sgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9zeXNj
YWxsX25ycy5hd2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjk2YTJkNmE0
Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9ucnMuYXdr
CkBAIC0wLDAgKzEsNCBAQAorQkVHSU4ge3ByaW50ICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmaWxlOyBETyBOT1QgRURJVCAqLyJ9CisvI2RlZmluZSBfX05SXy97CisJIHByaW50ZiAiXG4j
ZGVmaW5lIFNZU18lc1x0XHQlcyIsIHN1YnN0cigkMiw2KSwkMworfQotLSAKMi4xOS4yCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGG-0007Oo-Kl; Wed, 05 Jun 2019 15:55: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=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGF-0007O6-It
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:35 +0000
X-Inumbo-ID: 58a3aeba-87aa-11e9-8256-fbe8a94b0bea
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 58a3aeba-87aa-11e9-8256-fbe8a94b0bea;
 Wed, 05 Jun 2019 15:55:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 160BD104C04;
 Wed,  5 Jun 2019 17:55:31 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rcfeHS1VThWE; Wed,  5 Jun 2019 17:55:30 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E73D3103EA6
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:30 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:30 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:05 +0200
Message-ID: <20190605155511.26450-4-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 3/9] lib/syscall_shim: remove
 duplicate syscalls
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIGltcGxlbWVudGF0aW9uIG9mIHN5c2NhbGxfc2hpbSByZWxpZXMgb24gdW5pcXVlbmVzcyBv
ZiB0aGUgc3lzY2FsbApudW1iZXJzLgoKU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVy
aS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KLS0tCiBsaWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwu
aC5pbiB8IDIgLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluIGIvbGliL3N5c2NhbGxfc2hp
bS9hcmNoL2FybS9zeXNjYWxsLmguaW4KaW5kZXggODEwODI5NjIuLmQyOWE3ZGMxIDEwMDY0NAot
LS0gYS9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbgorKysgYi9saWIvc3lz
Y2FsbF9zaGltL2FyY2gvYXJtL3N5c2NhbGwuaC5pbgpAQCAtMjI1LDcgKzIyNSw2IEBACiAjZGVm
aW5lIF9fTlJfdGdraWxsCTI2OAogI2RlZmluZSBfX05SX3V0aW1lcwkyNjkKICNkZWZpbmUgX19O
Ul9mYWR2aXNlNjRfNjQJMjcwCi0jZGVmaW5lIF9fTlJfYXJtX2ZhZHZpc2U2NF82NAkyNzAKICNk
ZWZpbmUgX19OUl9wY2ljb25maWdfaW9iYXNlCTI3MQogI2RlZmluZSBfX05SX3BjaWNvbmZpZ19y
ZWFkCTI3MgogI2RlZmluZSBfX05SX3BjaWNvbmZpZ193cml0ZQkyNzMKQEAgLTI5Nyw3ICsyOTYs
NiBAQAogI2RlZmluZSBfX05SX2dldF9yb2J1c3RfbGlzdAkzMzkKICNkZWZpbmUgX19OUl9zcGxp
Y2UJMzQwCiAjZGVmaW5lIF9fTlJfc3luY19maWxlX3JhbmdlMgkzNDEKLSNkZWZpbmUgX19OUl9h
cm1fc3luY19maWxlX3JhbmdlCTM0MQogI2RlZmluZSBfX05SX3RlZQkzNDIKICNkZWZpbmUgX19O
Ul92bXNwbGljZQkzNDMKICNkZWZpbmUgX19OUl9tb3ZlX3BhZ2VzCTM0NAotLSAKMi4xOS4yCgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGI-0007Pm-N0; Wed, 05 Jun 2019 15:55: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=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGH-0007PT-QS
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:37 +0000
X-Inumbo-ID: 5a77e314-87aa-11e9-bbae-cbd00a2b10d7
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5a77e314-87aa-11e9-bbae-cbd00a2b10d7;
 Wed, 05 Jun 2019 15:55:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2301E104C0B;
 Wed,  5 Jun 2019 17:55:34 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id AVJ3KvGpf48E; Wed,  5 Jun 2019 17:55:34 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id F137C103EA6
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:33 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:33 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:07 +0200
Message-ID: <20190605155511.26450-6-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 5/9] lib/syscall_shim: generate
 provided_syscalls.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIHByb3ZpZGVkX3N5c2NhbGxzLmggd2lsbCBiZSBjb250YWluaW5nIHByb3RvdHlwZXMgZm9y
IGV2ZXJ5CnN5c2NhbGwgcHJlc2VudCBpbiB0aGUgc3lzdGVtLgoKSXQgd2lsbCBiZSB0aGUgcmVz
cG9uc2liaWxpdHkgb2YgdGhlIGxpYnJhcmllcyB0byB0ZWxsIHN5c2NhbGxfc2hpbSBpZgpjZXJ0
YWluIHN5c2NhbGwgaXMgcHJvdmlkZWQuIElmIHN5c2NhbGwgaXMgYXZhaWxhYmxlLCBpdCBtdXN0
IGJlCmxpc3RlZCBpbiB0aGUgbWFrZWZpbGUncyB2YXJpYWJsZSAnVUtfUFJPVklERURfU1lTQ0FM
TFMnIGluIHRoZSBmb3JtYXQKPHN5c2NhbGxfbmFtZT4tPG51bWJlcl9vZl9hcmd1bWVudHM+LiBG
b3IgZXhhbXBsZToKClVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9
IHdyaXRldi0zCgpTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJpLnZvbGNoa292QG5l
Y2xhYi5ldT4KLS0tCiBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAgICAgfCAxNiArKysr
KysrKysrKysrKy0tCiBsaWIvc3lzY2FsbF9zaGltL2dlbl9wcm92aWRlZC5hd2sgfCAgNSArKysr
KwogMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vZ2VuX3Byb3ZpZGVkLmF3awoKZGlmZiAt
LWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgYi9saWIvc3lzY2FsbF9zaGltL01h
a2VmaWxlLnVrCmluZGV4IDUyMGU5MjA2Li4wZjc3NTRkZiAxMDA2NDQKLS0tIGEvbGliL3N5c2Nh
bGxfc2hpbS9NYWtlZmlsZS51aworKysgYi9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCkBA
IC00LDEwICs0LDEyIEBAIExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIIDo9ICQoTElCU1lT
Q0FMTF9TSElNX0JVSUxEKS9pbmNsdWRlL3VrL2JpdHMKIAogTElCU1lTQ0FMTF9TSElNX1BIT05Z
X1NSQyA6PSBzeXNjYWxsX21hcC5oIHN5c2NhbGxfc3R1YnMuaCBzeXNjYWxsX25ycy5oCiBMSUJT
WVNDQUxMX1NISU1fUEhPTllfU1JDIDo9ICQoYWRkcHJlZml4ICQoTElCU1lTQ0FMTF9TSElNX0lO
Q0xVREVTX1BBVEgpLywgJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDKSkKK0xJQlNZU0NBTExf
U0hJTV9QSE9OWV9TUkMgKz0gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2Nh
bGxzLmguaW4KIExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkNfTkVXIDo9ICQoYWRkc3VmZml4IC5u
ZXcsICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykpCiAKLVVLX1BSRVBBUkUtJChDT05GSUdf
TElCU1lTQ0FMTF9TSElNKSArPSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMpCitMSUJTWVND
QUxMX1NISU1fR0VOX1NSQyA6PSAkKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS9wcm92
aWRlZF9zeXNjYWxscy5oCiAKK1VLX1BSRVBBUkUtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSAr
PSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMpICQoTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMp
CiAKIExJQlNZU0NBTExfU0hJTV9URU1QTCA6PSAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9hcmNo
LyQoQ09ORklHX1VLX0FSQ0gpL3N5c2NhbGwuaC5pbgogCkBAIC0zMCw5ICszMiwxOSBAQCAkKExJ
QlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS9zeXNjYWxsX21hcC5oLm5ldzoKIAkJJChBV0sp
IC1mICAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fc3lzY2FsbF9tYXAuYXdrIFwKIAkJJChM
SUJTWVNDQUxMX1NISU1fVEVNUEwpID4gJEApCiAKKyQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVT
X1BBVEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmg6ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9wcm92
aWRlZF9zeXNjYWxscy5oLmluCisJJChjYWxsIGJ1aWxkX2NtZCxHRU4sU1lTQ0FMTF9TSElNLCQo
bm90ZGlyICRAKSwgXAorCQkkKEFXSykgLUYgJy0nIC1mICAkKExJQlNZU0NBTExfU0hJTV9CQVNF
KS9nZW5fcHJvdmlkZWQuYXdrIFwKKwkJJF4gPiAkQCkKKworJChMSUJTWVNDQUxMX1NISU1fQlVJ
TEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4ubmV3OgorCSQoY2FsbCBidWlsZF9jbWQsR0VOLFNZ
U0NBTExfU0hJTSwkKG5vdGRpciAkQCksIFwKKwkJZWNobyAkKFVLX1BST1ZJREVEX1NZU0NBTExT
LXkpIHwgdHIgJyAnICdcbicgPiAkQCkKKwogJChMSUJTWVNDQUxMX1NISU1fSU5DTFVERVNfUEFU
SCkvc3lzY2FsbF9zdHVicy5oLm5ldzoKIAkkKGNhbGwgYnVpbGRfY21kLEdFTixTWVNDQUxMX1NI
SU0sJChub3RkaXIgJEApLCBcCiAJCSQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9n
ZW5fc3R1YnMuYXdrIFwKIAkJJChMSUJTWVNDQUxMX1NISU1fVEVNUEwpID4gJEApCiAKLUxJQlNZ
U0NBTExfU0hJTV9DTEVBTiA9ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykgJChMSUJTWVND
QUxMX1NISU1fUEhPTllfU1JDX05FVykKK0xJQlNZU0NBTExfU0hJTV9DTEVBTiA9ICQoTElCU1lT
Q0FMTF9TSElNX1BIT05ZX1NSQykgJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDX05FVykgJChM
SUJTWVNDQUxMX1NISU1fR0VOX1NSQykKKwpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9n
ZW5fcHJvdmlkZWQuYXdrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fcHJvdmlkZWQuYXdrCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wODEwODkzYgotLS0gL2Rldi9udWxsCisr
KyBiL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX3Byb3ZpZGVkLmF3awpAQCAtMCwwICsxLDUgQEAKK0JF
R0lOIHtwcmludCAiLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZmlsZTsgRE8gTk9UIEVESVQg
Ki8ifQorL1thLXpBLVowLTldKy1bMC05XSsveworCXByaW50ZiAiXG4jZGVmaW5lIEhBVkVfdWtf
c3lzY2FsbF8lcyB0IiwgJDE7CisJcHJpbnRmICJcblVLX1NZU0NBTExfUFJPVE8oJXMsICVzKTtc
biIsICQyLCAkMTsKK30KLS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGK-0007Qj-Oe; Wed, 05 Jun 2019 15:55:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGJ-0007QK-MZ
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:39 +0000
X-Inumbo-ID: 5c7237ba-87aa-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5c7237ba-87aa-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 15:55:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 72593104C04;
 Wed,  5 Jun 2019 17:55:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id VqOxMpNpmbQw; Wed,  5 Jun 2019 17:55:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 53286103EA6
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:37 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:37 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:09 +0200
Message-ID: <20190605155511.26450-8-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 7/9] lib/vfscore: syscall writev
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Rmlyc3QgZXZlciB1c2VyIG9mIHN5c2NhbGwgc2hpbSBsYXllcgoKU2lnbmVkLW9mZi1ieTogWXVy
aSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+ClJldmlld2VkLWJ5OiBTaW1vbiBL
dWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLS0tCiBsaWIvdmZzY29yZS9NYWtlZmls
ZS51ayAgIHwgNCArKystCiBsaWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIHwgMSArCiBsaWIvdmZz
Y29yZS9tYWluLmMgICAgICAgIHwgNyArKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9NYWtlZmls
ZS51ayBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCmluZGV4IDFmZDM1ODU4Li4wMTY2ZTYxMiAx
MDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsKKysrIGIvbGliL3Zmc2NvcmUvTWFr
ZWZpbGUudWsKQEAgLTE1LDQgKzE1LDYgQEAgTElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlND
T1JFX0JBU0UpL2xvb2t1cC5jCiBMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFT
RSkvZm9wcy5jCiBMSUJWRlNDT1JFX1NSQ1MteSArPSAkKExJQlZGU0NPUkVfQkFTRSkvc3Vicl91
aW8uYwogCi1FWFRSQV9MRF9TQ1JJUFQtJChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJWRlND
T1JFX0JBU0UpL2V4dHJhLmxkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorRVhUUkFfTERf
U0NSSVBULSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCVkZTQ09SRV9CQVNFKS9leHRyYS5s
ZAorCitVS19QUk9WSURFRF9TWVNDQUxMUy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSB3cml0ZXYt
MwpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBiL2xpYi92ZnNjb3JlL2V4
cG9ydHN5bXMudWsKaW5kZXggMzRlZWVlNTkuLmRhN2ZiYWVhIDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKQEAgLTc0
LDMgKzc0LDQgQEAgZmFjY2Vzc2F0CiByZWFkbGluawogZmFsbG9jYXRlCiBsc2VlawordWtfc3lz
Y2FsbF93cml0ZXYKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL21haW4uYyBiL2xpYi92ZnNjb3Jl
L21haW4uYwppbmRleCBkZmQ0M2ViMy4uZmZmMjMzZjMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3Jl
L21haW4uYworKysgYi9saWIvdmZzY29yZS9tYWluLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlIDx1ay9lcnJwdHIuaD4KICNpbmNsdWRlIDx1ay9jdG9ycy5oPgogI2luY2x1ZGUgPHVrL3Ry
YWNlLmg+CisjaW5jbHVkZSA8dWsvc3lzY2FsbC5oPgogCiAjaWZkZWYgREVCVUdfVkZTCiBpbnQJ
dmZzX2RlYnVnID0gVkZTREJfRkxBR1M7CkBAIC00NTgsNiArNDU5LDEyIEBAIHNzaXplX3Qgd3Jp
dGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQpCiAJcmV0dXJu
IHB3cml0ZXYoZmQsIGlvdiwgaW92Y250LCAtMSk7CiB9CiAKK1VLX1NZU0NBTExfREVGSU5FKHdy
aXRldiwgdW5zaWduZWQgbG9uZywgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCB2ZWMsCisJCSAg
dW5zaWduZWQgbG9uZywgdmxlbikKK3sKKwlyZXR1cm4gcHdyaXRldihmZCwgdmVjLCB2bGVuLCAt
MSk7Cit9CisKIFVLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsLCAiJWQgMHgleCIsIGludCwg
dW5zaWduZWQgbG9uZyk7CiBVS19UUkFDRVBPSU5UKHRyYWNlX3Zmc19pb2N0bF9yZXQsICIiKTsK
IFVLX1RSQUNFUE9JTlQodHJhY2VfdmZzX2lvY3RsX2VyciwgIiVkIiwgaW50KTsKLS0gCjIuMTku
MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGK-0007Qp-RA; Wed, 05 Jun 2019 15:55:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGJ-0007QL-OU
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:39 +0000
X-Inumbo-ID: 5c1f9f22-87aa-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5c1f9f22-87aa-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 15:55:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DAE2FF208D;
 Wed,  5 Jun 2019 17:55:36 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Kt255kd4GmMU; Wed,  5 Jun 2019 17:55:36 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id AF90EF2017
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:34 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:34 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:08 +0200
Message-ID: <20190605155511.26450-7-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 6/9] lib/syscall_shim: introduce
 syscalls macro layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VG8gcHJvdmlkZSBhIHN5c2NhbGwgdXNlciBuZWVkcyB0byB1c2UgbWFjcm8gVUtfU1lTQ0FMTF9E
RUZJTkUuIFRoZQpzeW50YXggaXMgdGhlIGZvbGxvd2luZzoKClVLX1NZU0NBTExfREVGSU5FKHN5
c2NhbGxfbmFtZSwgYXJndW1lbnRfMV90eXBlLCBhcmd1bWVudF8xX25hbWUsIC4uLikKewogICAg
PHN5c2NhbGxfYm9keT47Cn0KClNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9s
Y2hrb3ZAbmVjbGFiLmV1PgotLS0KIGxpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgICAgICAg
ICAgfCAgIDYgKy0KIGxpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmggfCAxNTAg
KysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlv
bnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGlt
L2luY2x1ZGUvdWsvc3lzY2FsbC5oCgpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtl
ZmlsZS51ayBiL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKaW5kZXggMGY3NzU0ZGYuLjUw
ZWUyOGNhIDEwMDY0NAotLS0gYS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCisrKyBiL2xp
Yi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKQEAgLTQ2LDUgKzQ2LDkgQEAgJChMSUJTWVNDQUxM
X1NISU1fSU5DTFVERVNfUEFUSCkvc3lzY2FsbF9zdHVicy5oLm5ldzoKIAkJJChBV0spIC1mICQo
TElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl9zdHVicy5hd2sgXAogCQkkKExJQlNZU0NBTExfU0hJ
TV9URU1QTCkgPiAkQCkKIAotTElCU1lTQ0FMTF9TSElNX0NMRUFOID0gJChMSUJTWVNDQUxMX1NI
SU1fUEhPTllfU1JDKSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkNfTkVXKSAkKExJQlNZU0NB
TExfU0hJTV9HRU5fU1JDKQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkgICAr
PSAtSSQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9pbmNsdWRlCitDWFhJTkNMVURFUy0kKENPTkZJ
R19MSUJTWVNDQUxMX1NISU0pICs9IC1JJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2luY2x1ZGUK
K0NJTkNMVURFUy15ICAgKz0gLUkkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9pbmNsdWRlCitDWFhJ
TkNMVURFUy15ICs9IC1JJChMSUJTWVNDQUxMX1NISU1fQkFTRSkvaW5jbHVkZQogCitMSUJTWVND
QUxMX1NISU1fQ0xFQU4gPSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMpICQoTElCU1lTQ0FM
TF9TSElNX1BIT05ZX1NSQ19ORVcpICQoTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMpICQoTElCU1lT
Q0FMTF9TSElNX0dFTl9TUkMpCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUv
dWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOTY4MTE5MTgKLS0tIC9kZXYvbnVsbAor
KysgYi9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oCkBAIC0wLDAgKzEsMTUw
IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICog
QXV0aG9yczogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+CisgKgorICoK
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSCwgTkVD
IENvcnBvcmF0aW9uLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9S
IE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1VLX1NZU0NBTExfSF9fCisj
ZGVmaW5lIF9fVUtfU1lTQ0FMTF9IX18KKworI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KKyNp
bmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHVrL3ByaW50Lmg+CisKKyNkZWZpbmUgX191a19z
Y2MoWCkgKChsb25nKSAoWCkpCit0eXBlZGVmIGxvbmcgc3lzY2FsbF9hcmdfdDsKKworI2RlZmlu
ZSBfX3VrX3N5c2NhbGwoc3lzY2FsbF9uciwgLi4uKSBcCisJVUtfQ09OQ0FUKHVrX3N5c2NhbGxf
Zm5fLCBzeXNjYWxsX25yKSAoX19WQV9BUkdTX18pCisKKyNkZWZpbmUgX191a19zeXNjYWxsMChu
KSBfX3VrX3N5c2NhbGwobikKKyNkZWZpbmUgX191a19zeXNjYWxsMShuLGEpIF9fdWtfc3lzY2Fs
bChuLF9fdWtfc2NjKGEpKQorI2RlZmluZSBfX3VrX3N5c2NhbGwyKG4sYSxiKSBfX3VrX3N5c2Nh
bGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhiKSkKKyNkZWZpbmUgX191a19zeXNjYWxsMyhuLGEs
YixjKSBfX3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhiKSxfX3VrX3NjYyhjKSkK
KyNkZWZpbmUgX191a19zeXNjYWxsNChuLGEsYixjLGQpIF9fdWtfc3lzY2FsbChuLF9fdWtfc2Nj
KGEpLF9fdWtfc2NjKGIpLF9fdWtfc2NjKGMpLF9fdWtfc2NjKGQpKQorI2RlZmluZSBfX3VrX3N5
c2NhbGw1KG4sYSxiLGMsZCxlKSBfX3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhi
KSxfX3VrX3NjYyhjKSxfX3VrX3NjYyhkKSxfX3VrX3NjYyhlKSkKKyNkZWZpbmUgX191a19zeXNj
YWxsNihuLGEsYixjLGQsZSxmKSBfX3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhi
KSxfX3VrX3NjYyhjKSxfX3VrX3NjYyhkKSxfX3VrX3NjYyhlKSxfX3VrX3NjYyhmKSkKKyNkZWZp
bmUgX191a19zeXNjYWxsNyhuLGEsYixjLGQsZSxmLGcpIChfX3VrX3N5c2NhbGwpKG4sX191a19z
Y2MoYSksX191a19zY2MoYiksX191a19zY2MoYyksX191a19zY2MoZCksX191a19zY2MoZSksX191
a19zY2MoZiksX191a19zY2MoZykpCisKKworI2RlZmluZSBfX1NZU0NBTExfTkFSR1NfWChhLGIs
YyxkLGUsZixnLGgsbiwuLi4pIG4KKyNkZWZpbmUgX19TWVNDQUxMX05BUkdTKC4uLikgX19TWVND
QUxMX05BUkdTX1goX19WQV9BUkdTX18sNyw2LDUsNCwzLDIsMSwwLCkKKworI2RlZmluZSBfX1NZ
U0NBTExfREVGX05BUkdTX1goeiwgYTEsYTIsIGIxLGIyLCBjMSxjMiwgZDEsZDIsIGUxLGUyLCBm
MSxmMiwgZzEsZzIsIG5yLCAuLi4pIG5yCisjZGVmaW5lIF9fU1lTQ0FMTF9ERUZfTkFSR1MoLi4u
KSBfX1NZU0NBTExfREVGX05BUkdTX1goX19WQV9BUkdTX18sIDcsNywgNiw2LCA1LDUsIDQsNCwg
MywzLCAyLDIsIDEsMSwwKQorCisjZGVmaW5lIF9fVUtfTkFNRTJTQ0FMTF9GTihuYW1lKSBVS19D
T05DQVQodWtfc3lzY2FsbF8sIG5hbWUpCisKKyNkZWZpbmUgVUtfQVJHX01BUDEobSwgdHlwZSwg
YXJnKSBtKHR5cGUsIGFyZykKKyNkZWZpbmUgVUtfQVJHX01BUDIobSwgdHlwZSwgYXJnLCAuLi4p
IG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDEobSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFVLX0FS
R19NQVAzKG0sIHR5cGUsIGFyZywgLi4uKSBtKHR5cGUsIGFyZyksIFVLX0FSR19NQVAyKG0sIF9f
VkFfQVJHU19fKQorI2RlZmluZSBVS19BUkdfTUFQNChtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBl
LCBhcmcpLCBVS19BUkdfTUFQMyhtLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgVUtfQVJHX01BUDUo
bSwgdHlwZSwgYXJnLCAuLi4pIG0odHlwZSwgYXJnKSwgVUtfQVJHX01BUDQobSwgX19WQV9BUkdT
X18pCisjZGVmaW5lIFVLX0FSR19NQVA2KG0sIHR5cGUsIGFyZywgLi4uKSBtKHR5cGUsIGFyZyks
IFVLX0FSR19NQVA1KG0sIF9fVkFfQVJHU19fKQorI2RlZmluZSBVS19BUkdfTUFQNyhtLCB0eXBl
LCBhcmcsIC4uLikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQNihtLCBfX1ZBX0FSR1NfXykKKyNk
ZWZpbmUgVUtfQVJHX01BUHgobnJfYXJncywgLi4uKSBVS19DT05DQVQoVUtfQVJHX01BUCwgbnJf
YXJncykoX19WQV9BUkdTX18pCisKKyNkZWZpbmUgU19BUkdfTE9ORyh0eXBlLCBhcmcpIHVuc2ln
bmVkIGxvbmcgYXJnCisjZGVmaW5lIFNfQVJHX0FDVFVBTCh0eXBlLCBhcmcpIHR5cGUgYXJnCisj
ZGVmaW5lIFNfQVJHX0NBU1QodHlwZSwgYXJnKSAodHlwZSkgYXJnCisKKworLyogTk9URSBhbmQg
VE9ETzoKKyAqCUN1cnJlbnRseSBhbGwgdGhlIGZ1bmN0aW9ucyBpbiB1bmlrcmFmdCB3aGljaCBh
cmUgbWltaWNraW5nCisgKglsaWJjIGJlaGF2aW9yICh3cml0ZXYsIG9wZW4sIG1vdW50LCBldGMp
IGFyZSBoYW5kbGluZyAnZXJybm8nCisgKglvbiB0aGVpciBvd24uIFRvIGNvbXBseSB3aXRoIHRo
YXQgc3lzY2FsbF9zaGltIGV4cGVjdHMgc3lzY2FsbAorICoJaW1wbGVtZW50YXRpb24gdG8gc2V0
IGVycm5vLCBhbmQgcmV0dXJuIDAgaW4gY2FzZSBvZiBzdWNjZXNzCisgKglvciAtMSAob3Igd2hh
dGV2ZXIgdGhlIG1hbiBwYWdlIHNheXMpIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAqCisgKglUaGlz
IGhhcyB0byBiZSByZWNvbnNpZGVyZWQgbGF0ZXIuIFRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9u
cworICoJaW4gdW5pa3JhZnQgc2hvdWxkIG5vdCB0b3VjaCBlcnJubywgYW5kIHN5c2NhbGxfc2hp
bSBzaG91bGQKKyAqCXByb3ZpZGUgMiBzeXNjYWxsIGZ1bmN0aW9ucyAtIG9uZSB0aGF0IGhhbmRs
ZXMgcmV0dXJuIGFuZCB0aGUKKyAqCW9uZSB3aGljaCBkb2VzIG5vdC4KKyAqCisgKglBIGdvb2Qg
cmVmZXJlbmNlIHdvdWxkIGJlIG11c2wgaW1wbGVtZW50YXRpb24uCisgKi8KKyNpZmRlZiBDT05G
SUdfTElCU1lTQ0FMTF9TSElNCisjZGVmaW5lIF9fVUtfU1lTQ0FMTF9ERUZJTkUoeCwgbmFtZSwg
Li4uKQkJCQlcCisJc3RhdGljIGlubGluZSBsb25nIF9fIyNuYW1lKFVLX0FSR19NQVB4KHgsIFNf
QVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKTsgXAorCWxvbmcgbmFtZShVS19BUkdfTUFQeCh4LCBT
X0FSR19MT05HLCBfX1ZBX0FSR1NfXykpCQkJXAorCXsJCQkJCQkJCVwKKwkJbG9uZyByZXQgPSBf
XyMjbmFtZSgJCQkJCVwKKwkJCVVLX0FSR19NQVB4KHgsIFNfQVJHX0NBU1QsIF9fVkFfQVJHU19f
KSk7CQlcCisJCXJldHVybiByZXQ7CQkJCQkJXAorCX0JCQkJCQkJCVwKKwlzdGF0aWMgaW5saW5l
IGxvbmcgX18jI25hbWUoVUtfQVJHX01BUHgoeCwgU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykp
CisjZWxzZQorI2RlZmluZSBfX1VLX1NZU0NBTExfREVGSU5FKHgsIG5hbWUsIC4uLikJCQkJXAor
CXN0YXRpYyBpbmxpbmUgbG9uZyBuYW1lKFVLX0FSR19NQVB4KHgsIFNfQVJHX0FDVFVBTCwgX19W
QV9BUkdTX18pKQorI2VuZGlmCisKKyNkZWZpbmUgX1VLX1NZU0NBTExfREVGSU5FKC4uLikgX19V
S19TWVNDQUxMX0RFRklORShfX1ZBX0FSR1NfXykKKyNkZWZpbmUgVUtfU1lTQ0FMTF9ERUZJTkUo
bmFtZSwgLi4uKQkJCQlcCisJX1VLX1NZU0NBTExfREVGSU5FKF9fU1lTQ0FMTF9ERUZfTkFSR1Mo
X19WQV9BUkdTX18pLAlcCisJCQkgICAgX19VS19OQU1FMlNDQUxMX0ZOKG5hbWUpLAkJXAorCQkJ
ICAgIF9fVkFfQVJHU19fKQorCisjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1NfVFlQRSB1bnNpZ25l
ZCBsb25nCisjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1MwKCkgIHZvaWQKKyNkZWZpbmUgX19VS19T
UFJPVE9fQVJHUzEoKSAgX19VS19TUFJPVE9fQVJHU19UWVBFIGEKKyNkZWZpbmUgX19VS19TUFJP
VE9fQVJHUzIoKSAgX19VS19TUFJPVE9fQVJHUzEoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGIK
KyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzMoKSAgX19VS19TUFJPVE9fQVJHUzIoKSwgX19VS19T
UFJPVE9fQVJHU19UWVBFIGMKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzQoKSAgX19VS19TUFJP
VE9fQVJHUzMoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGQKKyNkZWZpbmUgX19VS19TUFJPVE9f
QVJHUzUoKSAgX19VS19TUFJPVE9fQVJHUzQoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGUKKyNk
ZWZpbmUgX19VS19TUFJPVE9fQVJHUzYoKSAgX19VS19TUFJPVE9fQVJHUzUoKSwgX19VS19TUFJP
VE9fQVJHU19UWVBFIGYKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHUzcoKSAgX19VS19TUFJPVE9f
QVJHUzYoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGcKKyNkZWZpbmUgX19VS19TUFJPVE9fQVJH
U3goYXJnc19ucikgIFwKKwlVS19DT05DQVQoX19VS19TUFJPVE9fQVJHUywgYXJnc19ucikoKQor
CisjZGVmaW5lIFVLX1NZU0NBTExfUFJPVE8oYXJnc19uciwgc3lzY2FsbF9uYW1lKQkJCVwKKwls
b25nIFVLX0NPTkNBVCh1a19zeXNjYWxsXywgc3lzY2FsbF9uYW1lKSgJXAorCQlfX1VLX1NQUk9U
T19BUkdTeChhcmdzX25yKSkKKworI2RlZmluZSB1a19zeXNjYWxsX3N0dWIoc3lzY2FsbF9uYW1l
KSAoewkJCVwKKwkJCXVrX3ByX2RlYnVnKCJzeXNjYWxsIFwiIiBzeXNjYWxsX25hbWUJXAorCQkJ
CSAgICAiXCIgaXMgbm90IGltcGxlbWVudGVkIik7CVwKKwkJCWVycm5vID0gLUVOT1NZUzsJCQlc
CisJCQktMTsJCQkJCVwKKwkJfSkKKworCisjaWZkZWYgQ09ORklHX0xJQlNZU0NBTExfU0hJTQor
I2luY2x1ZGUgPHVrL2JpdHMvc3lzY2FsbF9ucnMuaD4KKyNpbmNsdWRlIDx1ay9iaXRzL3N5c2Nh
bGxfbWFwLmg+CisjaW5jbHVkZSA8dWsvYml0cy9wcm92aWRlZF9zeXNjYWxscy5oPgorI2luY2x1
ZGUgPHVrL2JpdHMvc3lzY2FsbF9zdHVicy5oPgorCisjZGVmaW5lIHN5c2NhbGwoLi4uKQkJCQkJ
CQlcCisJVUtfQ09OQ0FUKF9fdWtfc3lzY2FsbCwgX19TWVNDQUxMX05BUkdTKF9fVkFfQVJHU19f
KSkoX19WQV9BUkdTX18pCisjZW5kaWYKKworI2VuZGlmIC8qIF9fVUtfU1lTQ0FMTF9IX18gKi8K
LS0gCjIuMTkuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYYGN-0007SJ-Tl; Wed, 05 Jun 2019 15:55:43 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGN-0007Rz-1X
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:43 +0000
X-Inumbo-ID: 5e0b1456-87aa-11e9-a912-378cd4b3aeb2
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5e0b1456-87aa-11e9-a912-378cd4b3aeb2;
 Wed, 05 Jun 2019 15:55:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1ED2EF208D;
 Wed,  5 Jun 2019 17:55:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HzKf85KkjGKJ; Wed,  5 Jun 2019 17:55:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id EB2B0F2017
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:37 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:37 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:10 +0200
Message-ID: <20190605155511.26450-9-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 8/9] lib/syscall_shim: introduce
 uk_syscallp
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhlIG1hY3JvIGxheWVyIGlzIGVmZmljaWVudCwgYnV0IHRoZSBleGFjdCBzeXNjYWxsIG11c3Qg
YmUga25vd24gYXQKdGhlIGNvbXBpbGF0aW9uIHN0YWdlLiBJZiBhIHN5c2NhbGwgbnVtYmVyIGlz
IGtlcHQgaW4gYSB2YXJpYWJsZSBtYWNybwpsYXllciB3aWxsIG5vdCBiZSBhYmxlIHRvIHJlc29s
dmUgaXQgdG8gdGhlIHN5c2NhbGwgZnVuY3Rpb24uCgpGb3IgdGhpcyBjYXNlIGFub3RoZXIgZmls
ZSBpcyBnZW5lcmF0ZWQgLSBzeXNjYWxsX2VudHJ5LmMuIFdoZXJlCnN5c2NhbGxzIGFyZSByZXNv
bHZlZCBhdCBydW4tdGltZSBpbnRvIGEgZGVzdGluYXRpb24gZnVuY3Rpb25zLgoKU2lnbmVkLW9m
Zi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0tLQogbGliL3N5
c2NhbGxfc2hpbS9NYWtlZmlsZS51ayAgICAgICAgICB8IDEwICsrKysrKy0KIGxpYi9zeXNjYWxs
X3NoaW0vZW50cnkuYy5pbl9lbmQgICAgICAgfCAxNSArKysrKysrKysrCiBsaWIvc3lzY2FsbF9z
aGltL2dlbl9lbnRyeS5hd2sgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysr
CiBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgIDIgKysKIDQgZmlsZXMg
Y2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvc3lzY2FsbF9zaGltL2dlbl9lbnRyeS5hd2sKCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9z
aGltL01ha2VmaWxlLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awppbmRleCA1MGVl
MjhjYS4uNGRjYjNkNjkgMTAwNjQ0Ci0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsK
KysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awpAQCAtNyw3ICs3LDggQEAgTElCU1lT
Q0FMTF9TSElNX1BIT05ZX1NSQyA6PSAkKGFkZHByZWZpeCAkKExJQlNZU0NBTExfU0hJTV9JTkNM
VURFU19QQVRIKS8sICQoTEkKIExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMgKz0gJChMSUJTWVND
QUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4KIExJQlNZU0NBTExfU0hJTV9Q
SE9OWV9TUkNfTkVXIDo9ICQoYWRkc3VmZml4IC5uZXcsICQoTElCU1lTQ0FMTF9TSElNX1BIT05Z
X1NSQykpCiAKLUxJQlNZU0NBTExfU0hJTV9HRU5fU1JDIDo9ICQoTElCU1lTQ0FMTF9TSElNX0lO
Q0xVREVTX1BBVEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmgKK0xJQlNZU0NBTExfU0hJTV9HRU5fU1JD
IDo9ICQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmgg
XAorCQkkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvc3lzY2FsbF9lbnRyeS5jCiAKIFVLX1BSRVBB
UkUtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9T
UkMpICQoTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMpCiAKQEAgLTM3LDYgKzM4LDExIEBAICQoTElC
U1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpL3Byb3ZpZGVkX3N5c2NhbGxzLmg6ICQoTElCU1lT
Q0FMTF9TSElNX0JVSUxEKS9wCiAJCSQoQVdLKSAtRiAnLScgLWYgICQoTElCU1lTQ0FMTF9TSElN
X0JBU0UpL2dlbl9wcm92aWRlZC5hd2sgXAogCQkkXiA+ICRAKQogCiskKExJQlNZU0NBTExfU0hJ
TV9CVUlMRCkvc3lzY2FsbF9lbnRyeS5jOiAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlk
ZWRfc3lzY2FsbHMuaC5pbiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fZW50cnkuYXdrCisJ
JChjYWxsIGJ1aWxkX2NtZCxHRU4sU1lTQ0FMTF9TSElNLCQobm90ZGlyICRAKSwgXAorCQkkKEFX
SykgLUYgJy0nIC1mICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl9lbnRyeS5hd2sgJDwgPiAk
QCAmJiBcCisJCWNhdCAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9lbnRyeS5jLmluX2VuZCA+PiAk
QCkKKwogJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4ubmV3
OgogCSQoY2FsbCBidWlsZF9jbWQsR0VOLFNZU0NBTExfU0hJTSwkKG5vdGRpciAkQCksIFwKIAkJ
ZWNobyAkKFVLX1BST1ZJREVEX1NZU0NBTExTLXkpIHwgdHIgJyAnICdcbicgPiAkQCkKQEAgLTUx
LDQgKzU3LDYgQEAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAtSSQo
TElCU1lTQ0FMTF9TSElNX0JVSUxEKS9pbmNsdWRlCiBDSU5DTFVERVMteSAgICs9IC1JJChMSUJT
WVNDQUxMX1NISU1fQkFTRSkvaW5jbHVkZQogQ1hYSU5DTFVERVMteSArPSAtSSQoTElCU1lTQ0FM
TF9TSElNX0JBU0UpL2luY2x1ZGUKIAorTElCU1lTQ0FMTF9TSElNX1NSQ1MteSArPSAkKExJQlNZ
U0NBTExfU0hJTV9CVUlMRCkvc3lzY2FsbF9lbnRyeS5jCisKIExJQlNZU0NBTExfU0hJTV9DTEVB
TiA9ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykgJChMSUJTWVNDQUxMX1NISU1fUEhPTllf
U1JDX05FVykgJChMSUJTWVNDQUxMX1NISU1fR0VOX1NSQykgJChMSUJTWVNDQUxMX1NISU1fR0VO
X1NSQykKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQgYi9saWIv
c3lzY2FsbF9zaGltL2VudHJ5LmMuaW5fZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwLi5kZDgwOWU3YgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vZW50
cnkuYy5pbl9lbmQKQEAgLTAsMCArMSwxNSBAQAorCitsb25nIHVrX3N5c2NhbGwobG9uZyBuLCAu
Li4pCit7CisJdmFfbGlzdCBhcDsKKwlzeXNjYWxsX2FyZ190IGEsYixjLGQsZSxmOworCXZhX3N0
YXJ0KGFwLCBuKTsKKwlhPXZhX2FyZyhhcCwgbG9uZyk7CisJYj12YV9hcmcoYXAsIGxvbmcpOwor
CWM9dmFfYXJnKGFwLCBsb25nKTsKKwlkPXZhX2FyZyhhcCwgbG9uZyk7CisJZT12YV9hcmcoYXAs
IGxvbmcpOworCWY9dmFfYXJnKGFwLCBsb25nKTsKKwl2YV9lbmQoYXApOworCXJldHVybiBfX3N5
c2NhbGxfZHluYW1pYyhuLGEsYixjLGQsZSxmKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxs
X3NoaW0vZ2VuX2VudHJ5LmF3ayBiL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3awpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOTI0NTcwODkKLS0tIC9kZXYvbnVsbAor
KysgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9lbnRyeS5hd2sKQEAgLTAsMCArMSw0MCBAQAorQkVH
SU4geworCW1heF9hcmdzID0gNgorCXByaW50ICIvKiBBdXRvIGdlbmVyYXRlZCBmaWxlLiBETyBO
T1QgRURJVCAqL1xuXG4iCisKKwlwcmludCAiI2luY2x1ZGUgPHVrL3N5c2NhbGwuaD4iCisJcHJp
bnQgIiNpbmNsdWRlIDx1ay9wcmludC5oPlxuIgorCisJcHJpbnRmICJzdGF0aWMgaW5saW5lIGxv
bmcgX19zeXNjYWxsX2R5bmFtaWMobG9uZyBuciwgIgorCWZvciAoaSA9IDE7IGkgPCBtYXhfYXJn
czsgaSsrKQorCQlwcmludGYgImxvbmcgYXJnJWQsICIsaQorCXByaW50ZiAibG9uZyBhcmclZClc
bntcbiIsIG1heF9hcmdzCisKKwlmb3IgKGkgPSAxOyBpIDw9IG1heF9hcmdzOyBpKyspCisJCXBy
aW50ZiAiXHQodm9pZCkgYXJnJWQ7XG4iLCBpCisKKwlwcmludCAiXG5cdHN3aXRjaCAobnIpIHsi
Cit9CisKKworL1thLXpBLVowLTldKy1bMC05XSsveworCW5hbWUgPSAkMQorCXN5c19uYW1lID0g
IlNZU18iIG5hbWUKKwl1a19uYW1lID0gInVrX3N5c2NhbGxfIiBuYW1lCisJYXJnc19uciA9ICQy
ICsgMAorCXByaW50ZiAiXHRjYXNlICVzOlxuIiwgc3lzX25hbWU7CisJcHJpbnRmICJcdFx0cmV0
dXJuICVzKCIsIHVrX25hbWU7CisJZm9yIChpID0gMTsgaSA8IGFyZ3NfbnI7IGkrKykKKwkJcHJp
bnRmKCJhcmclZCwgIiwgaSkKKwlpZiAoYXJnc19uciA+IDApCisJCXByaW50ZigiYXJnJWQiLCBh
cmdzX25yKQorCXByaW50ZigiKTtcbiIpCit9CisKK0VORCB7CisJcHJpbnRmICJcdGRlZmF1bHQ6
XG4iCisJcHJpbnRmICJcdFx0dWtfcHJfZGVidWcoXCJzeXNjYWxsIG5yICUlbGQgaXMgbm90IGlt
cGxlbWVudGVkXCIsIG5yKTtcbiIKKwlwcmludGYgIlx0XHRlcnJubyA9IC1FTk9TWVM7XG4iCisJ
cHJpbnRmICJcdFx0cmV0dXJuIC0xO1xuIgorCXByaW50ZiAiXHR9XG59XG4iCit9CmRpZmYgLS1n
aXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxf
c2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAppbmRleCA5NjgxMTkxOC4uZWJlZmE0MDMgMTAwNjQ0
Ci0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKKysrIGIvbGliL3N5
c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaApAQCAtMTQzLDYgKzE0Myw4IEBAIHR5cGVk
ZWYgbG9uZyBzeXNjYWxsX2FyZ190OwogI2luY2x1ZGUgPHVrL2JpdHMvcHJvdmlkZWRfc3lzY2Fs
bHMuaD4KICNpbmNsdWRlIDx1ay9iaXRzL3N5c2NhbGxfc3R1YnMuaD4KIAorbG9uZyB1a19zeXNj
YWxsKGxvbmcgbiwgLi4uKTsKKwogI2RlZmluZSBzeXNjYWxsKC4uLikJCQkJCQkJXAogCVVLX0NP
TkNBVChfX3VrX3N5c2NhbGwsIF9fU1lTQ0FMTF9OQVJHUyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJH
U19fKQogI2VuZGlmCi0tIAoyLjE5LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 15:55:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 15:55: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 1hYYGP-0007T9-VV; Wed, 05 Jun 2019 15:55: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=lCwh=UE=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYYGO-0007Sc-Ad
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 15:55:44 +0000
X-Inumbo-ID: 5e5b1cc6-87aa-11e9-906f-0bde39f36d66
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5e5b1cc6-87aa-11e9-906f-0bde39f36d66;
 Wed, 05 Jun 2019 15:55:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A836C104C04;
 Wed,  5 Jun 2019 17:55:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id VqQyhDi840Vx; Wed,  5 Jun 2019 17:55:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 893D2103EA6
 for <minios-devel@lists.xen.org>; Wed,  5 Jun 2019 17:55:40 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Wed, 5 Jun 2019 17:55:40 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 5 Jun 2019 17:55:11 +0200
Message-ID: <20190605155511.26450-10-yuri.volchkov@neclab.eu>
X-Mailer: git-send-email 2.19.2
In-Reply-To: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: [Minios-devel] [UNIKRAFT PATCH v2 9/9] doc: add section about
 syscall shim layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Simon.kuenzer@neclab.eu
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Ci0t
LQogZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QgfCA0OSArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYg
LS1naXQgYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCBiL2RvYy9ndWlkZXMvZGV2ZWxv
cGVycy1hcHAucnN0CmluZGV4IGJiZDNiYmRhLi5mZGRlNWRhZCAxMDA2NDQKLS0tIGEvZG9jL2d1
aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKKysrIGIvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5y
c3QKQEAgLTMyMyw2ICszMjMsNTUgQEAgQW4gZXhhbXBsZSBjb250ZXh0IG9mIGV4dHJhLmxkOiA6
OgogCiBUaGlzIHdpbGwgYWRkIHRoZSBzZWN0aW9uIC51a19mc19saXN0IGFmdGVyIHRoZSAudGV4
dAogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTeXNjYWxsIHNoaW0gbGF5ZXIKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgeW91IGxpYnJhcnkgcHJvdmlkZXMgYSBz
eXNjYWxsLCB5b3UgbmVlZCB0byBpbmZvcm0gVW5pa3JhZnQgdGhhdCBpdAorY2FuIHVzZSB5b3Vy
IGltcGxlbWVudGF0aW9uLiBBZGQgYSBsaW5lIGluIHlvdSBNYWtlZmlsZS51azogOjoKKworICAg
IFVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQllPVVJMSUJOQU1FKSArPSA8c3lzY2Fs
bF9uYW1lPi08bnVtYmVyX29mX2FyZ3VtZW50cz4KKworV2hlcmUgYDxudW1iZXJfb2ZfYXJndW1l
bnRzPmAgaXMgaG93IG1hbnkgYXJndW1lbnRzIHlvdXIgc3lzY2FsbCBhY2NlcHRzLgorCitGb3Ig
ZXhhbXBsZTogOjoKKworICAgIFVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQlZGU0NP
UkUpICs9IHdyaXRldi0zCisKKy4uIG5vdGU6OiBQbGVhc2UgY29uc3VsdCBjb3JyZXNwb25kaW5n
IG1hbiBwYWdlIGluIG9yZGVyIHRvIGtlZXAgQVBJCisgICAgICAgICAgIG1hdGNoaW5nIHRvIHRo
ZSBlcXVpdmFsZW50IGxpbnV4IHN5c2NhbGwKKworRm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5
b3Ugc3lzY2FsbCB1c2UgdGhlIGZvbGxvd2luZyB0ZW1wbGF0ZToKKworLi4gY29kZS1ibG9jazo6
IGMKKworICBVS19TWVNDQUxMX0RFRklORShzeXNjYWxsX25hbWUsIGFyZzFfdHlwZSwgYXJnMV9u
YW1lLCBhcmcyX3R5cGUsIGFyZzJfbmFtZSwgLi4pCisgIHsKKyAgCXJldCA9IGRvX2Nvb2xfc3R1
ZmYoKTsKKyAgCWlmIChyZXQpIHsKKyAgCQllcnJubyA9IEVSUk9SX0NPREU7CisgIAkJcmV0dXJu
IC0xOworICAJfQorICAJcmV0dXJuIDA7CisgIH0KKworRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUt
YmxvY2s6OiBjCisKKyAgVUtfU1lTQ0FMTF9ERUZJTkUod3JpdGV2LCB1bnNpZ25lZCBsb25nLCBm
ZCwgY29uc3Qgc3RydWN0IGlvdmVjICosIHZlYywKKyAgCQkgIHVuc2lnbmVkIGxvbmcsIHZsZW4p
CisgIHsKKyAgCXJldHVybiBwd3JpdGV2KGZkLCB2ZWMsIHZsZW4sIC0xKTsKKyAgfQorCitQbGVh
c2Ugbm90ZSwgdGhhdCBzeXNjYWxsX3NoaW0gZXhwZWN0cyBiZWhhdmlvciBhcyBkZXNjcmliZWQg
aW4gYGBtYW4gMgorc3lzY2FsbGBgLiBOYW1lbHk6IDo6CisKKyAgVGhlIHJldHVybiB2YWx1ZSBp
cyBkZWZpbmVkIGJ5IHRoZSBzeXN0ZW0gY2FsbCBiZWluZyBpbnZva2VkLiAgSW4KKyAgZ2VuZXJh
bCwgYSAwIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgc3VjY2Vzcy4gIEEgLTEgcmV0dXJuIHZhbHVl
CisgIGluZGljYXRlcyBhbiBlcnJvciwgYW5kIGFuIGVycm9yIGNvZGUgaXMgc3RvcmVkIGluIGVy
cm5vLgorCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIE1ha2UgVGFyZ2V0cwotLSAK
Mi4xOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 17:27:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 17:27: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 1hYZhM-0000eN-AU; Wed, 05 Jun 2019 17:27:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=isUm=UE=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYZhL-0000eI-7f
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 17:27:39 +0000
X-Inumbo-ID: 3551e097-87b7-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 3551e097-87b7-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 17:27:36 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id m3so4497538wrv.2
 for <minios-devel@lists.xen.org>; Wed, 05 Jun 2019 10:27:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=9C3ygqnUkW92Ex7+I6Wslch7XPftUkyipACyS8hPyMU=;
 b=Ac+zWDKsNFiH5UhzxMclknJ01p8oMIzCQ+Sf5nfAm3at3QnTdZLHnAEtDifLIAr5Ja
 0ronV+QKAi8dl+zMR1jivvJ+W+/aa00GB+2RxrDoiZv1YmrKG5TlvwaPzhZ/WWYeSsko
 qdgH8R7lo9CUkspFqx8L0WubmQ/11+xVg9UtZj5TF2rJ+SwTF5zy4J1uKjEghCvXPm4Z
 UK7/6dCCd0kjsZwnXGmExTgVIsCaUNnEBELqL2rC52AKoE+ZCh73lSJuEggm0wxRAnBe
 0p5ePb/DOuXW8NaccoiXrGKTgnkk2rkISwA6Kihu4tBd8RW1Ly5UZe1hG3inbc5w0EC8
 Ev/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=9C3ygqnUkW92Ex7+I6Wslch7XPftUkyipACyS8hPyMU=;
 b=G7pccA+HXsvEajCxmhcWmJcpRi45IaqU6yk1/hNZa3ZZTG4wtTwbNoNu5TtblZ8dGX
 a1p47S8A7XGhjjdufjuugFLnaf6aeVC7UrSpJkw0lIJzJVw4A/UVRr4SBKw3HKrWzcfN
 pSA/CHY+islkOLAjL7HfRp04xaQJaCPhYUbsL5bI6SOcRMXkECVKyJ/KWnLBZcl5lvFl
 66Yfb8Qct8mOddb7qWMBCdnzYT+b/iAdwH7iUfHS1nqkvxvVQCT4IwZk37HOWwuNjOFP
 fA45VcBmi+l6cMa2+D6iWj91f7W4yaUNuJx908GfSls4w9GhyUlPllTtGBBHBt9gGl+u
 LbSA==
X-Gm-Message-State: APjAAAVdDj/gFKAjzmhs+//K7d2IJNc+/+Qfmo1IHZ3YPJpPfXZ6tMuK
 m/k5vSvtG4fK6Sx22QOtqQEeLfUQp3A=
X-Google-Smtp-Source: APXvYqyRu1Dnr2C8Djo2dHxcJXZHiO7U+Df5OsdGOynwxKTsFXrDlmX422+ss6DiH9GXipiL3GDcig==
X-Received: by 2002:adf:e50c:: with SMTP id j12mr5171367wrm.117.1559755654913; 
 Wed, 05 Jun 2019 10:27:34 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id l18sm18996921wrv.38.2019.06.05.10.27.33
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 05 Jun 2019 10:27:34 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190531135050.23817-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190531135050.23817-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <0b73b3ec-c786-1219-47a5-57ceff5bee5c@gmail.com>
Date: Wed, 5 Jun 2019 20:27:33 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190531135050.23817-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 2/5] lib/devfs: Adapt
 imported devfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwKCkknbSB0YWtpbmcgb3ZlciB0aGUgcmV2aWV3IGZvciB0aGUgcmVtYWluaW5nIHBh
dGNoZXMsIHNvIHBsZWFzZSBzZWUgaW5saW5lLgoKT24gNS8zMS8xOSA0OjUxIFBNLCBWbGFkLUFu
ZHJlaSBCxIJET0lVICg3ODY5Mikgd3JvdGU6Cj4gRnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAo
Nzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KPiAtLS0KPiAgbGliL0NvbmZpZy51ayAgICAgICAgICAgICAgfCAgIDEgKwo+ICBsaWIv
TWFrZWZpbGUudWsgICAgICAgICAgICB8ICAgMSArCj4gIGxpYi9kZXZmcy9Db25maWcudWsgICAg
ICAgIHwgIDEwICsrCj4gIGxpYi9kZXZmcy9NYWtlZmlsZS51ayAgICAgIHwgICA0ICsKPiAgbGli
L2RldmZzL2RldmZzLmggICAgICAgICAgfCAgIDIgKy0KPiAgbGliL2RldmZzL2RldmZzX3Zub3Bz
LmMgICAgfCAxMjMgKysrKysrKysrKysrLS0tLS0tCj4gIGxpYi9kZXZmcy9kZXZpY2UuYyAgICAg
ICAgIHwgMjU3ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgbGliL2Rl
dmZzL2V4cG9ydHN5bXMudWsgICAgfCAgIDEgKwo+ICBsaWIvZGV2ZnMvaW5jbHVkZS9kZXZpY2Uu
aCB8ICAxOSArLS0KPiAgOSBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgMjMyIGRl
bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL0NvbmZpZy51awo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL01ha2VmaWxlLnVrCj4gIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvZGV2ZnMvZXhwb3J0c3ltcy51awo+IAo+IGRpZmYgLS1naXQgYS9saWIvQ29uZmln
LnVrIGIvbGliL0NvbmZpZy51awo+IGluZGV4IDgyMmM2MjRmLi5iZDY2ZTJmMCAxMDA2NDQKPiAt
LS0gYS9saWIvQ29uZmlnLnVrCj4gKysrIGIvbGliL0NvbmZpZy51awo+IEBAIC00MSw2ICs0MSw3
IEBAIHNvdXJjZSAibGliL3Vrc2NoZWRjb29wL0NvbmZpZy51ayIKPiAgc291cmNlICJsaWIvZmR0
L0NvbmZpZy51ayIKPiAgc291cmNlICJsaWIvdmZzY29yZS9Db25maWcudWsiCj4gIHNvdXJjZSAi
bGliL3JhbWZzL0NvbmZpZy51ayIKPiArc291cmNlICJsaWIvZGV2ZnMvQ29uZmlnLnVrIgo+ICBz
b3VyY2UgImxpYi91a2xvY2svQ29uZmlnLnVrIgo+ICBzb3VyY2UgImxpYi91a21waS9Db25maWcu
dWsiCj4gIHNvdXJjZSAibGliL3Vrc3dyYW5kL0NvbmZpZy51ayIKPiBkaWZmIC0tZ2l0IGEvbGli
L01ha2VmaWxlLnVrIGIvbGliL01ha2VmaWxlLnVrCj4gaW5kZXggZDA2ODM3ZjEuLjQ2ZWRjNmUy
IDEwMDY0NAo+IC0tLSBhL2xpYi9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi9NYWtlZmlsZS51awo+
IEBAIC0xOSw2ICsxOSw3IEBAICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtf
QkFTRSkvbGliL3Vrc2NoZWRjb29wKSkKPiAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvZmR0KSkKPiAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENP
TkZJR19VS19CQVNFKS9saWIvdmZzY29yZSkpCj4gICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIs
JChDT05GSUdfVUtfQkFTRSkvbGliL3JhbWZzKSkKPiArJChldmFsICQoY2FsbCBfaW1wb3J0X2xp
YiwkKENPTkZJR19VS19CQVNFKS9saWIvZGV2ZnMpKQo+ICAkKGV2YWwgJChjYWxsIF9pbXBvcnRf
bGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a2xvY2spKQo+ICAkKGV2YWwgJChjYWxsIF9pbXBv
cnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a21waSkpCj4gICQoZXZhbCAkKGNhbGwgX2lt
cG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3VrYnVzKSkKPiBkaWZmIC0tZ2l0IGEvbGli
L2RldmZzL0NvbmZpZy51ayBiL2xpYi9kZXZmcy9Db25maWcudWsKPiBuZXcgZmlsZSBtb2RlIDEw
MDY0NAo+IGluZGV4IDAwMDAwMDAwLi5lMzhhNjE2ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s
aWIvZGV2ZnMvQ29uZmlnLnVrCj4gQEAgLTAsMCArMSwxMCBAQAo+ICtjb25maWcgTElCREVWRlMK
PiArCWJvb2wgImRldmZzOiBkZXZmcyBmaWxlIHN5c3RlbSIKPiArCWRlZmF1bHQgbgo+ICsJZGVw
ZW5kcyBvbiBMSUJWRlNDT1JFCj4gK2lmIExJQkRFVkZTCj4gKyAgICAgICAgY29uZmlnIExJQkRF
VkZTX1VTRV9SQU1GUwo+ICsgICAgICAgIGJvb2wgIlVzZSByYW1mcyBhcyByb290Igo+ICsgICAg
ICAgIGRlZmF1bHQgbgo+ICsgICAgICAgIHNlbGVjdCBMSUJSQU1GUwo+ICtlbmRpZgo+IGRpZmYg
LS1naXQgYS9saWIvZGV2ZnMvTWFrZWZpbGUudWsgYi9saWIvZGV2ZnMvTWFrZWZpbGUudWsKPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5mMzMxODdmMwo+IC0tLSAvZGV2
L251bGwKPiArKysgYi9saWIvZGV2ZnMvTWFrZWZpbGUudWsKPiBAQCAtMCwwICsxLDQgQEAKPiAr
JChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJkZXZmcywkKENPTkZJR19MSUJERVZGUykpKQo+ICsK
PiArTElCREVWRlNfU1JDUy15ICs9ICQoTElCREVWRlNfQkFTRSkvZGV2aWNlLmMKPiArTElCREVW
RlNfU1JDUy15ICs9ICQoTElCREVWRlNfQkFTRSkvZGV2ZnNfdm5vcHMuYwo+IGRpZmYgLS1naXQg
YS9saWIvZGV2ZnMvZGV2ZnMuaCBiL2xpYi9kZXZmcy9kZXZmcy5oCj4gaW5kZXggYmRmNTA2MDku
LmMyMTk3Zjc5IDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZmcy9kZXZmcy5oCj4gKysrIGIvbGliL2Rl
dmZzL2RldmZzLmgKPiBAQCAtMzAsNyArMzAsNyBAQAo+ICAjaWZuZGVmIF9ERVZGU19ICj4gICNk
ZWZpbmUgX0RFVkZTX0gKPiAgCj4gLSNpbmNsdWRlIDxhc3NlcnQuaD4KPiArI2luY2x1ZGUgPHVr
L2Fzc2VydC5oPgo+ICAKPiAgLyogI2RlZmluZSBERUJVR19ERVZGUyAxICovCj4gIAo+IGRpZmYg
LS1naXQgYS9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYyBiL2xpYi9kZXZmcy9kZXZmc192bm9wcy5j
Cj4gaW5kZXggMWU2OWU0YTYuLjcwOTg3NDc3IDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZmcy9kZXZm
c192bm9wcy5jCj4gKysrIGIvbGliL2RldmZzL2RldmZzX3Zub3BzLmMKPiBAQCAtMzEsNiArMzEs
MTAgQEAKPiAgICogZGV2ZnMgLSBkZXZpY2UgZmlsZSBzeXN0ZW0uCj4gICAqLwo+ICAKPiArI2lm
bmRlZiBfR05VX1NPVVJDRQo+ICsjZGVmaW5lIF9HTlVfU09VUkNFCj4gKyNlbmRpZgo+ICsKPiAg
I2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gIAo+ICAjaW5jbHVkZSA8Y3R5cGUuaD4KPiBAQCAtNDEs
MjcgKzQ1LDMyIEBACj4gICNpbmNsdWRlIDxsaW1pdHMuaD4KPiAgI2luY2x1ZGUgPGZjbnRsLmg+
Cj4gICNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3lzL21vdW50Lmg+Cj4gIAo+IC0j
aW5jbHVkZSA8b3N2L3ByZXguaD4KPiAtI2luY2x1ZGUgPG9zdi9kZXZpY2UuaD4KPiAtI2luY2x1
ZGUgPG9zdi92bm9kZS5oPgo+IC0jaW5jbHVkZSA8b3N2L21vdW50Lmg+Cj4gLSNpbmNsdWRlIDxv
c3YvZGVudHJ5Lmg+Cj4gKyNpbmNsdWRlIDxkaXJlbnQuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUv
cHJleC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29y
ZS9tb3VudC5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KPiArI2luY2x1ZGUgPHZm
c2NvcmUvZmlsZS5oPgo+ICsKPiArI2luY2x1ZGUgPHZmc2NvcmUvZnMuaD4KPiAgCj4gICNpbmNs
dWRlICJkZXZmcy5oIgo+ICsjaW5jbHVkZSAiaW5jbHVkZS9kZXZpY2UuaCIKPiArCj4gKyNpbmNs
dWRlIDx1ay9jdG9ycy5oPgo+ICAKPiAgI2lmZGVmIERFQlVHX0RFVkZTCj4gLSNkZWZpbmUgRFBS
SU5URihhKQlkcHJpbnRmIGEKPiArI2RlZmluZSBEUFJJTlRGKFgpCXVrX3ByX2RlYnVnKFgpCj4g
ICNlbHNlCj4gLSNkZWZpbmUgRFBSSU5URihhKQlkbyB7fSB3aGlsZSAoMCkKPiArI2RlZmluZSBE
UFJJTlRGKFgpCgpTaW5jZSB3ZSdyZSByZWRlZmluaW5nIERQUklOVEYsIHBsZWFzZSBnZXQgcmlk
IG9mIHRoZSBkb3VibGUgcGFyZW50aGVzZXMKKHVzZSBEUFJJTlRGKCkgaW5zdGVhZCBvZiBEUFJJ
TlRGKCgpKSkgZXZlcnl3aGVyZSB0aGV5IGFwcGVhciwgYXMgSQphbHJlYWR5IGNvbW1lbnRlZCBp
biBhIHByZXZpb3VzIHZlcnNpb24uCgo+ICAjZW5kaWYKPiAgCj4gLSNkZWZpbmUgQVNTRVJUKGUp
CWFzc2VydChlKQo+IC0KPiAgc3RhdGljIHVpbnQ2NF90IGlub2RlX2NvdW50ID0gMTsgLyogaW5v
ZGUgMCBpcyByZXNlcnZlZCB0byByb290ICovCj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX29w
ZW4oc3RydWN0IGZpbGUgKmZwKQo+ICtkZXZmc19vcGVuKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
KQo+ICB7Cj4gIAlzdHJ1Y3Qgdm5vZGUgKnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOwo+ICAJ
Y2hhciAqcGF0aCA9IGZwLT5mX2RlbnRyeS0+ZF9wYXRoOwo+IEBAIC05MCw3ICs5OSw3IEBAIGRl
dmZzX29wZW4oc3RydWN0IGZpbGUgKmZwKQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZz
X2Nsb3NlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCkKPiArZGV2ZnNfY2xvc2Uo
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCj4gIHsKPiAgCj4gIAlE
UFJJTlRGKCgiZGV2ZnNfY2xvc2U6IGZwPSV4XG4iLCBmcCkpOwo+IEBAIC05OCwyNyArMTA3LDI3
IEBAIGRldmZzX2Nsb3NlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpmcCkKPiAgCWlm
ICghc3RyY21wKGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCAiLyIpKQkvKiByb290ID8gKi8KPiAgCQly
ZXR1cm4gMDsKPiAgCj4gLQlyZXR1cm4gZGV2aWNlX2Nsb3NlKChkZXZpY2UqKXZwLT52X2RhdGEp
Owo+ICsJcmV0dXJuIGRldmljZV9jbG9zZSgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0YSk7Cj4g
IH0KPiAgCj4gIHN0YXRpYyBpbnQKPiAtZGV2ZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1
Y3QgZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpCj4gK2RldmZzX3JlYWQo
c3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVp
bywgaW50IGlvZmxhZ3MpCj4gIHsKPiAtCXJldHVybiBkZXZpY2VfcmVhZCgoZGV2aWNlKil2cC0+
dl9kYXRhLCB1aW8sIGlvZmxhZ3MpOwo+ICsJcmV0dXJuIGRldmljZV9yZWFkKChzdHJ1Y3QgZGV2
aWNlKil2cC0+dl9kYXRhLCB1aW8sIGlvZmxhZ3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4g
IGRldmZzX3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxh
Z3MpCj4gIHsKPiAtCXJldHVybiBkZXZpY2Vfd3JpdGUoKGRldmljZSopdnAtPnZfZGF0YSwgdWlv
LCBpb2ZsYWdzKTsKPiArCXJldHVybiBkZXZpY2Vfd3JpdGUoKHN0cnVjdCBkZXZpY2UqKXZwLT52
X2RhdGEsIHVpbywgaW9mbGFncyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiAtZGV2ZnNfaW9j
dGwoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgY21kLCB2b2lkICph
cmcpCj4gK2RldmZzX2lvY3RsKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqYXJnKQo+ICB7Cj4gIAlpbnQgZXJyb3I7Cj4g
IAo+IC0JZXJyb3IgPSBkZXZpY2VfaW9jdGwoKGRldmljZSopdnAtPnZfZGF0YSwgY21kLCBhcmcp
Owo+ICsJZXJyb3IgPSBkZXZpY2VfaW9jdGwoKHN0cnVjdCBkZXZpY2UqKXZwLT52X2RhdGEsIGNt
ZCwgYXJnKTsKPiAgCURQUklOVEYoKCJkZXZmc19pb2N0bDogY21kPSV4XG4iLCBjbWQpKTsKCkkg
bWVhbiB0aGlzIGtpbmQgb2YgZG91YmxlIHBhcmVudGhlc2VzLgoKPiAgCXJldHVybiBlcnJvcjsK
PiAgfQo+IEBAIC0xNDksNyArMTU4LDcgQEAgZGV2ZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZw
LCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCj4gIAkJCWJyZWFrOwo+ICAJCWkrKzsK
PiAgCX0KPiAtCWlmICh2Z2V0KGR2cC0+dl9tb3VudCwgaW5vZGVfY291bnQrKywgJnZwKSkgewo+
ICsJaWYgKHZmc2NvcmVfdmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsK
PiAgCQkvKiBmb3VuZCBpbiBjYWNoZSAqLwo+ICAJCSp2cHAgPSB2cDsKPiAgCQlyZXR1cm4gMDsK
PiBAQCAtMTcxLDcgKzE4MCw3IEBAIGRldmZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hh
ciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQo+ICAgKiBAdnA6IHZub2RlIG9mIHRoZSBkaXJl
Y3RvcnkuCj4gICAqLwo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX3JlYWRkaXIoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCj4gK2RldmZzX3JlYWRk
aXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJl
bnQgKmRpcikKPiAgewo+ICAJc3RydWN0IGRldmluZm8gaW5mbzsKPiAgCWludCBlcnJvciwgaTsK
PiBAQCAtMjA0LDE1ICsyMTMsMTAgQEAgZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBz
dHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAgc3RhdGljIGludAo+ICBkZXZm
c191bm1vdW50KHN0cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKPiAgewo+IC0JcmVsZWFzZV9t
cF9kZW50cmllcyhtcCk7Cj4gKwl2ZnNjb3JlX3JlbGVhc2VfbXBfZGVudHJpZXMobXApOwo+ICAJ
cmV0dXJuIDA7Cj4gIH0KPiAgCj4gLWludAo+IC1kZXZmc19pbml0KHZvaWQpCj4gLXsKPiAtCXJl
dHVybiAwOwo+IC19Cj4gIAo+ICBzdGF0aWMgaW50Cj4gIGRldmZzX2dldGF0dHIoc3RydWN0IHZu
b2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRyKQo+IEBAIC0yMjIsMjUgKzIyNiwzNyBAQCBk
ZXZmc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0cnVjdCB2YXR0ciAqYXR0cikKPiAg
CXJldHVybiAwOwo+ICB9Cj4gIAo+IC0jZGVmaW5lIGRldmZzX21vdW50CSgodmZzb3BfbW91bnRf
dCl2ZnNfbnVsbG9wKQo+IC0jZGVmaW5lIGRldmZzX3N5bmMJKCh2ZnNvcF9zeW5jX3QpdmZzX251
bGxvcCkKPiAtI2RlZmluZSBkZXZmc192Z2V0CSgodmZzb3BfdmdldF90KXZmc19udWxsb3ApCj4g
LSNkZWZpbmUgZGV2ZnNfc3RhdGZzCSgodmZzb3Bfc3RhdGZzX3QpdmZzX251bGxvcCkKPiAraW50
Cj4gK3ZvcF9laW52YWwodm9pZCkKPiArewo+ICsJcmV0dXJuIEVJTlZBTDsKPiArfQo+ICsKPiAr
aW50Cj4gK3ZvcF9lcGVybSh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gRVBFUk07Cj4gK30KPiArCj4g
KyNkZWZpbmUgZGV2ZnNfbW91bnQJKCh2ZnNvcF9tb3VudF90KXZmc2NvcmVfbnVsbG9wKQo+ICsj
ZGVmaW5lIGRldmZzX3N5bmMJKCh2ZnNvcF9zeW5jX3QpdmZzY29yZV9udWxsb3ApCj4gKyNkZWZp
bmUgZGV2ZnNfdmdldAkoKHZmc29wX3ZnZXRfdCl2ZnNjb3JlX251bGxvcCkKPiArI2RlZmluZSBk
ZXZmc19zdGF0ZnMJKCh2ZnNvcF9zdGF0ZnNfdCl2ZnNjb3JlX251bGxvcCkKPiAgCj4gLSNkZWZp
bmUgZGV2ZnNfc2VlawkoKHZub3Bfc2Vla190KXZvcF9udWxsb3ApCj4gLSNkZWZpbmUgZGV2ZnNf
ZnN5bmMJKCh2bm9wX2ZzeW5jX3Qpdm9wX251bGxvcCkKPiArI2RlZmluZSBkZXZmc19zZWVrCSgo
dm5vcF9zZWVrX3QpdmZzY29yZV92b3BfbnVsbG9wKQo+ICsjZGVmaW5lIGRldmZzX2ZzeW5jCSgo
dm5vcF9mc3luY190KXZmc2NvcmVfdm9wX251bGxvcCkKPiAgI2RlZmluZSBkZXZmc19jcmVhdGUJ
KCh2bm9wX2NyZWF0ZV90KXZvcF9laW52YWwpCj4gICNkZWZpbmUgZGV2ZnNfcmVtb3ZlCSgodm5v
cF9yZW1vdmVfdCl2b3BfZWludmFsKQo+ICAjZGVmaW5lIGRldmZzX3JlbmFtZQkoKHZub3BfcmVu
YW1lX3Qpdm9wX2VpbnZhbCkKPiAgI2RlZmluZSBkZXZmc19ta2RpcgkoKHZub3BfbWtkaXJfdCl2
b3BfZWludmFsKQo+ICAjZGVmaW5lIGRldmZzX3JtZGlyCSgodm5vcF9ybWRpcl90KXZvcF9laW52
YWwpCj4gICNkZWZpbmUgZGV2ZnNfc2V0YXR0cgkoKHZub3Bfc2V0YXR0cl90KXZvcF9lcGVybSkK
PiAtI2RlZmluZSBkZXZmc19pbmFjdGl2ZQkoKHZub3BfaW5hY3RpdmVfdCl2b3BfbnVsbG9wKQo+
IC0jZGVmaW5lIGRldmZzX3RydW5jYXRlCSgodm5vcF90cnVuY2F0ZV90KXZvcF9udWxsb3ApCj4g
KyNkZWZpbmUgZGV2ZnNfaW5hY3RpdmUJKCh2bm9wX2luYWN0aXZlX3QpdmZzY29yZV92b3BfbnVs
bG9wKQo+ICsjZGVmaW5lIGRldmZzX3RydW5jYXRlCSgodm5vcF90cnVuY2F0ZV90KXZmc2NvcmVf
dm9wX251bGxvcCkKPiAgI2RlZmluZSBkZXZmc19saW5rCSgodm5vcF9saW5rX3Qpdm9wX2VwZXJt
KQo+IC0jZGVmaW5lIGRldmZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251bGxv
cCkKPiAtI2RlZmluZSBkZXZmc19yZWFkbGluawkoKHZub3BfcmVhZGxpbmtfdCl2b3BfbnVsbG9w
KQo+IC0jZGVmaW5lIGRldmZzX3N5bWxpbmsJKCh2bm9wX3N5bWxpbmtfdCl2b3BfbnVsbG9wKQo+
ICsjZGVmaW5lIGRldmZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3QpdmZzY29yZV92b3Bf
bnVsbG9wKQo+ICsjZGVmaW5lIGRldmZzX3JlYWRsaW5rCSgodm5vcF9yZWFkbGlua190KXZmc2Nv
cmVfdm9wX251bGxvcCkKPiArI2RlZmluZSBkZXZmc19zeW1saW5rCSgodm5vcF9zeW1saW5rX3Qp
dmZzY29yZV92b3BfbnVsbG9wKQo+ICAKPiAgLyoKPiAgICogdm5vZGUgb3BlcmF0aW9ucwo+IEBA
IC0yNjUsNyArMjgxLDcgQEAgc3RydWN0IHZub3BzIGRldmZzX3Zub3BzID0gewo+ICAJZGV2ZnNf
aW5hY3RpdmUsCQkvKiBpbmFjdGl2ZSAqLwo+ICAJZGV2ZnNfdHJ1bmNhdGUsCQkvKiB0cnVuY2F0
ZSAqLwo+ICAJZGV2ZnNfbGluaywJCS8qIGxpbmsgKi8KPiAtCSh2bm9wX2NhY2hlX3QpIG51bGxw
dHIsIC8qIGFyYyAqLwo+ICsJKHZub3BfY2FjaGVfdCkgTlVMTCwgLyogYXJjICovCj4gIAlkZXZm
c19mYWxsb2NhdGUsCS8qIGZhbGxvY2F0ZSAqLwo+ICAJZGV2ZnNfcmVhZGxpbmssCQkvKiByZWFk
IGxpbmsgKi8KPiAgCWRldmZzX3N5bWxpbmssCQkvKiBzeW1ib2xpYyBsaW5rICovCj4gQEAgLTI4
MiwzICsyOTgsMzYgQEAgc3RydWN0IHZmc29wcyBkZXZmc192ZnNvcHMgPSB7Cj4gIAlkZXZmc19z
dGF0ZnMsCQkvKiBzdGF0ZnMgKi8KPiAgCSZkZXZmc192bm9wcywJCS8qIHZub3BzICovCj4gIH07
Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHZmc2NvcmVfZnNfdHlwZSBmc19kZXZmcyA9IHsKPiArICAg
IC52c19uYW1lID0gImRldmZzIiwKPiArICAgIC52c19pbml0ID0gTlVMTCwKPiArICAgIC52c19v
cCA9ICZkZXZmc192ZnNvcHMsCj4gK307Cj4gKwo+ICtVS19GU19SRUdJU1RFUihmc19kZXZmcyk7
Cj4gKwo+ICtfX2NvbnN0cnVjdG9yX3ByaW8oMTAxKSBzdGF0aWMgdm9pZCBkZXZmc19pbml0KHZv
aWQpCj4gK3sKPiArI2lmZGVmIENPTkZJR19MSUJERVZGU19VU0VfUkFNRlMKPiArCWludCByZXQ7
Cj4gKwo+ICsJcmV0ID0gbW91bnQoIiIsICIvIiwgInJhbWZzIiwgMCwgTlVMTCk7Cj4gKwlpZiAo
cmV0ICE9IDApIHsKPiArCQlEUFJJTlRGKCgiRmFpbGVkIHRvIG1vdW50IC8gaW4gJXNcbiIsIF9f
ZnVuY19fKSk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCXJldCA9ICBta2RpcigiL2RldiIs
IFNfSVJXWFUpOwo+ICsJaWYgKHJldCAhPSAwKSB7Cj4gKwkJRFBSSU5URigoIkZhaWxlZCB0byBt
a2RpciAvZGV2IGluICVzXG4iLCBfX2Z1bmNfXykpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4g
KwlyZXQgPSBtb3VudCgiIiwgIi9kZXYiLCAiZGV2ZnMiLCAwLCBOVUxMKTsKPiArCWlmIChyZXQg
IT0gMCkgewo+ICsJCURQUklOVEYoKCJGYWlsZWQgdG8gbW91bnQgL2RldiBhcyBkZXZmcyBpbiAl
c1xuIiwgX19mdW5jX18pKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKyNlbmRpZgo+ICt9Cj4gZGlm
ZiAtLWdpdCBhL2xpYi9kZXZmcy9kZXZpY2UuYyBiL2xpYi9kZXZmcy9kZXZpY2UuYwo+IGluZGV4
IGEwY2Q5NzY4Li5kODc4MDkwZCAxMDA2NDQKPiAtLS0gYS9saWIvZGV2ZnMvZGV2aWNlLmMKPiAr
KysgYi9saWIvZGV2ZnMvZGV2aWNlLmMKPiBAQCAtNDUsMjEgKzQ1LDE2IEBACj4gICNpbmNsdWRl
IDxzdGRpby5oPgo+ICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gICNpbmNsdWRlIDxlcnJuby5oPgo+
IC0jaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiAgI2luY2x1
ZGUgPHN0cmluZy5oPgo+ICAKPiAtI2luY2x1ZGUgPG9zdi9wcmV4Lmg+Cj4gLSNpbmNsdWRlIDxv
c3YvbXV0ZXguaD4KPiAtI2luY2x1ZGUgPG9zdi9kZXZpY2UuaD4KPiAtI2luY2x1ZGUgPG9zdi9k
ZWJ1Zy5oPgo+IC0jaW5jbHVkZSA8b3N2L2J1Zi5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9wcmV4
Lmg+Cj4gKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gKyNpbmNsdWRlIDx1ay9tdXRleC5o
Pgo+ICAKPiAtI2luY2x1ZGUgPGdlb20vZ2VvbV9kaXNrLmg+Cj4gLQo+IC1tdXRleCBzY2hlZF9t
dXRleDsKPiAtI2RlZmluZSBzY2hlZF9sb2NrKCkJc2NoZWRfbXV0ZXgubG9jaygpCj4gLSNkZWZp
bmUgc2NoZWRfdW5sb2NrKCkJc2NoZWRfbXV0ZXgudW5sb2NrKCkKPiArI2luY2x1ZGUgImluY2x1
ZGUvZGV2aWNlLmgiCj4gIAo+ICtzdGF0aWMgc3RydWN0IHVrX211dGV4IGRldmZzX2xvY2sgPSBV
S19NVVRFWF9JTklUSUFMSVpFUihkZXZmc19sb2NrKTsKPiAgCj4gIC8qIGxpc3QgaGVhZCBvZiB0
aGUgZGV2aWNlcyAqLwo+ICBzdGF0aWMgc3RydWN0IGRldmljZSAqZGV2aWNlX2xpc3QgPSBOVUxM
Owo+IEBAIC05Miw4NSArODcsMzEgQEAgc3RydWN0IHBhcnRpdGlvbl90YWJsZV9lbnRyeSB7Cj4g
IAl1aW50MzJfdCB0b3RhbF9zZWN0b3JzOwo+ICB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwo+
ICAKPiAtLyoKPiAtICogcmVhZF9wYXJ0aXRpb25fdGFibGUgLSBnaXZlbiBhIGRldmljZSBAZGV2
LCBjcmVhdGUgb25lIHN1YmRldmljZSBwZXIgcGFydGl0aW9uCj4gLSAqIGZvdW5kIGluIHRoYXQg
ZGV2aWNlLgo+IC0gKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCBhIHBhcnRpdGlvbiB0
YWJsZSBmcm9tIHRoZSBjYW5vbmljYWwgbG9jYXRpb24gb2YgdGhlCj4gLSAqIGRldmljZSBwb2lu
dGVkIGJ5IEBkZXYuIEZvciBlYWNoIHBhcnRpdGlvbiBmb3VuZCwgYSBuZXcgZGV2aWNlIHdpbGwg
YmUKPiAtICogY3JlYXRlZC4gVGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHdpbGwgaGF2ZSBtb3N0
IG9mIGl0cyBkYXRhIGNvcGllZCBmcm9tCj4gLSAqIEBkZXYsIGV4Y2VwdCBmb3IgaXRzIG5hbWUs
IG9mZnNldCBhbmQgc2l6ZS4KPiAtICovCj4gLXZvaWQgcmVhZF9wYXJ0aXRpb25fdGFibGUoc3Ry
dWN0IGRldmljZSAqZGV2KQo+IC17Cj4gLQlzdHJ1Y3QgYnVmICpicDsKPiAtCXVuc2lnbmVkIGxv
bmcgb2Zmc2V0Owo+IC0JaW50IGluZGV4Owo+IC0KPiAtCWlmIChicmVhZChkZXYsIDAsICZicCkg
IT0gMCkgewo+IC0JCWRlYnVnZigicmVhZF9wYXJ0aXRpb25fdGFibGUgZmFpbGVkIGZvciAlc1xu
IiwgZGV2LT5uYW1lKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gLQo+IC0Jc2NoZWRfbG9jaygpOwo+
IC0JLy8gQSByZWFsIHBhcnRpdGlvbiB0YWJsZSAoTUJSKSBlbmRzIGluIHRoZSB0d28gYnl0ZXMg
MHg1NSwgMHhBQSAoc2VlCj4gLQkvLyBhcmNoL3g2NC9ib290MTYuUyBvbiB3aGVyZSB3ZSBwdXQg
dGhvc2Ugb24gdGhlIE9TdiBpbWFnZSkuIElmIHdlCj4gLQkvLyBkb24ndCBmaW5kIHRob3NlLCB0
aGlzIGlzIGFuIHVucGFydGl0aW9uZWQgZGlzay4KPiAtCWlmICgoKHVuc2lnbmVkIGNoYXIqKWJw
LT5iX2RhdGEpWzUxMF0gPT0gMHg1NSAmJgo+IC0JICAgICgodW5zaWduZWQgY2hhciopYnAtPmJf
ZGF0YSlbNTExXSA9PSAweEFBKQo+IC0JZm9yIChvZmZzZXQgPSAweDFiZSwgaW5kZXggPSAwOyBv
ZmZzZXQgPCAweDFmZTsgb2Zmc2V0ICs9IDB4MTAsIGluZGV4KyspIHsKPiAtCQljaGFyIGRldl9u
YW1lW01BWERFVk5BTUVdOwo+IC0JCXN0cnVjdCBkZXZpY2UgKm5ld19kZXY7Cj4gLQo+IC0JCWF1
dG8qIGVudHJ5ID0gc3RhdGljX2Nhc3Q8c3RydWN0IHBhcnRpdGlvbl90YWJsZV9lbnRyeSo+KGJw
LT5iX2RhdGEgKyBvZmZzZXQpOwo+IC0KPiAtCQlpZiAoZW50cnktPnN5c3RlbV9pZCA9PSAwKSB7
Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCj4gLQkJaWYgKGVudHJ5LT5zdGFydGluZ19zZWN0
b3IgPT0gMCkgewo+IC0JCQljb250aW51ZTsKPiAtCQl9Cj4gLQo+IC0JCXNucHJpbnRmKGRldl9u
YW1lLCBNQVhERVZOQU1FLCAiJXMuJWQiLCBkZXYtPm5hbWUsIGluZGV4KTsKPiAtCQluZXdfZGV2
ID0gZGV2aWNlX2NyZWF0ZShkZXYtPmRyaXZlciwgZGV2X25hbWUsIGRldi0+ZmxhZ3MpOwo+IC0J
CWZyZWUobmV3X2Rldi0+cHJpdmF0ZV9kYXRhKTsKPiAtCj4gLQkJbmV3X2Rldi0+b2Zmc2V0ID0g
KG9mZl90KWVudHJ5LT5yZWxhX3NlY3RvciA8PCA5Owo+IC0JCW5ld19kZXYtPnNpemUgPSAob2Zm
X3QpZW50cnktPnRvdGFsX3NlY3RvcnMgPDwgOTsKPiAtCQluZXdfZGV2LT5tYXhfaW9fc2l6ZSA9
IGRldi0+bWF4X2lvX3NpemU7Cj4gLQkJbmV3X2Rldi0+cHJpdmF0ZV9kYXRhID0gZGV2LT5wcml2
YXRlX2RhdGE7Cj4gLQkJZGV2aWNlX3NldF9zb2Z0YyhuZXdfZGV2LCBkZXZpY2VfZ2V0X3NvZnRj
KGRldikpOwo+IC0JfQo+IC0KPiAtCXNjaGVkX3VubG9jaygpOwo+IC0JYnJlbHNlKGJwKTsKPiAt
fQo+ICAKPiAgdm9pZCBkZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBj
aGFyICpuYW1lLCBpbnQgZmxhZ3MpCj4gIHsKPiAgCXNpemVfdCBsZW47Cj4gIAl2b2lkICpwcml2
ID0gTlVMTDsKPiAgCj4gLQlhc3NlcnQoZGV2LT5kcml2ZXIgIT0gTlVMTCk7Cj4gKwlVS19BU1NF
UlQoZGV2LT5kcml2ZXIgIT0gTlVMTCk7Cj4gIAo+ICAJLyogQ2hlY2sgdGhlIGxlbmd0aCBvZiBu
YW1lLiAqLwo+ICAJbGVuID0gc3RybmxlbihuYW1lLCBNQVhERVZOQU1FKTsKPiAgCWlmIChsZW4g
PT0gMCB8fCBsZW4gPj0gTUFYREVWTkFNRSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0Jc2NoZWRfbG9j
aygpOwo+ICsJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9jayk7Cj4gIAo+ICAJLyogQ2hlY2sgaWYg
c3BlY2lmaWVkIG5hbWUgaXMgYWxyZWFkeSB1c2VkLiAqLwo+ICAJaWYgKGRldmljZV9sb29rdXAo
bmFtZSkgIT0gTlVMTCkKPiAtCQlzeXNfcGFuaWMoImR1cGxpY2F0ZSBkZXZpY2UiKTsKPiArCQlV
S19DUkFTSCgiZHVwbGljYXRlIGRldmljZSIpOwo+ICAKPiAgCS8qCj4gIAkgKiBBbGxvY2F0ZSBh
IGRldmljZSBhbmQgZGV2aWNlIHByaXZhdGUgZGF0YS4KPiAgCSAqLwo+ICAJaWYgKGRldi0+ZHJp
dmVyLT5kZXZzeiAhPSAwKSB7Cj4gIAkJaWYgKChwcml2ID0gbWFsbG9jKGRldi0+ZHJpdmVyLT5k
ZXZzeikpID09IE5VTEwpCj4gLQkJCXN5c19wYW5pYygiZGV2c3oiKTsKPiArCQkJVUtfQ1JBU0go
ImRldnN6Iik7Cj4gIAkJbWVtc2V0KHByaXYsIDAsIGRldi0+ZHJpdmVyLT5kZXZzeik7Cj4gIAl9
Cj4gIAo+IEBAIC0xODQsNyArMTI1LDcgQEAgdm9pZCBkZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRl
dmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MpCj4gIAlkZXYtPm1heF9pb19z
aXplID0gVUlOVF9NQVg7Cj4gIAlkZXZpY2VfbGlzdCA9IGRldjsKPiAgCj4gLQlzY2hlZF91bmxv
Y2soKTsKPiArCXVrX211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7Cj4gIH0KPiAgCj4gIAo+IEBA
IC0yMDEsNyArMTQyLDcgQEAgZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgZHJpdmVyICpkcnYsIGNvbnN0
IGNoYXIgKm5hbWUsIGludCBmbGFncykKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAgCXNpemVf
dCBsZW47Cj4gIAo+IC0JYXNzZXJ0KGRydiAhPSBOVUxMKTsKPiArCVVLX0FTU0VSVChkcnYgIT0g
TlVMTCk7Cj4gIAo+ICAJLyogQ2hlY2sgdGhlIGxlbmd0aCBvZiBuYW1lLiAqLwo+ICAJbGVuID0g
c3RybmxlbihuYW1lLCBNQVhERVZOQU1FKTsKPiBAQCAtMjExLDI3ICsxNTIsMTQgQEAgZGV2aWNl
X2NyZWF0ZShzdHJ1Y3QgZHJpdmVyICpkcnYsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncykK
PiAgCS8qCj4gIAkgKiBBbGxvY2F0ZSBhIGRldmljZSBzdHJ1Y3R1cmUuCj4gIAkgKi8KPiAtCWlm
ICgoZGV2ID0gbmV3IGRldmljZSkgPT0gTlVMTCkKPiAtCQlzeXNfcGFuaWMoImRldmljZV9jcmVh
dGUiKTsKPiArCWlmICgoZGV2ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGV2aWNlKSkpID09IE5V
TEwpCj4gKwkJVUtfQ1JBU0goImRldmljZV9jcmVhdGUiKTsKPiAgCj4gLSAgICBkZXYtPmRyaXZl
ciA9IGRydjsKPiAtICAgIGRldmljZV9yZWdpc3RlcihkZXYsIG5hbWUsIGZsYWdzKTsKPiArCWRl
di0+ZHJpdmVyID0gZHJ2Owo+ICsJZGV2aWNlX3JlZ2lzdGVyKGRldiwgbmFtZSwgZmxhZ3MpOwo+
ICAJcmV0dXJuIGRldjsKPiAgfQo+ICAKPiAtI2lmIDAKPiAtLyoKPiAtICogUmV0dXJuIGRldmlj
ZSdzIHByaXZhdGUgZGF0YS4KPiAtICovCj4gLXN0YXRpYyB2b2lkICoKPiAtZGV2aWNlX3ByaXZh
dGUoc3RydWN0IGRldmljZSAqZGV2KQo+IC17Cj4gLQlhc3NlcnQoZGV2ICE9IE5VTEwpOwo+IC0J
YXNzZXJ0KGRldi0+cHJpdmF0ZV9kYXRhICE9IE5VTEwpOwo+IC0KPiAtCXJldHVybiBkZXYtPnBy
aXZhdGVfZGF0YTsKPiAtfQo+IC0jZW5kaWYKPiAgCj4gIC8qCj4gICAqIFJldHVybiB0cnVlIGlm
IHNwZWNpZmllZCBkZXZpY2UgaXMgdmFsaWQuCj4gQEAgLTI1NywxNiArMTg1LDMzIEBAIGRldmlj
ZV92YWxpZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gICAqIEluY3JlbWVudCB0aGUgcmVmZXJlbmNl
IGNvdW50IG9uIGFuIGFjdGl2ZSBkZXZpY2UuCj4gICAqLwo+ICBzdGF0aWMgaW50Cj4gLWRldmlj
ZV9yZWZlcmVuY2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICtkZXZpY2VfcmVmZXJlbmNlX2xvY2tl
ZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiArCVVLX0FTU0VSVCh1a19tdXRleF9pc19sb2Nr
ZWQoJmRldmZzX2xvY2spKTsKPiAgCj4gLQlzY2hlZF9sb2NrKCk7Cj4gIAlpZiAoIWRldmljZV92
YWxpZChkZXYpKSB7Cj4gLQkJc2NoZWRfdW5sb2NrKCk7Cj4gKwkJdWtfbXV0ZXhfdW5sb2NrKCZk
ZXZmc19sb2NrKTsKPiAgCQlyZXR1cm4gRU5PREVWOwo+ICAJfQo+ICAJZGV2LT5yZWZjbnQrKzsK
PiAtCXNjaGVkX3VubG9jaygpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qCj4gKyAqIElu
Y3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIGFuIGFjdGl2ZSBkZXZpY2UuCj4gKyAqLwo+
ICtzdGF0aWMgaW50Cj4gK2RldmljZV9yZWZlcmVuY2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7
Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXVrX211dGV4X2xvY2soJmRldmZzX2xvY2spOwo+ICsJcmV0
ID0gZGV2aWNlX3JlZmVyZW5jZV9sb2NrZWQoZGV2KTsKPiArCWlmICghcmV0KSB7Cj4gKwkJdWtf
bXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJdWtf
bXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0y
NzksOSArMjI0LDEwIEBAIGRldmljZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgewo+
ICAJc3RydWN0IGRldmljZSAqKnRtcDsKPiAgCj4gLQlzY2hlZF9sb2NrKCk7Cj4gKwl1a19tdXRl
eF9sb2NrKCZkZXZmc19sb2NrKTsKPiArCj4gIAlpZiAoLS1kZXYtPnJlZmNudCA+IDApIHsKPiAt
CQlzY2hlZF91bmxvY2soKTsKPiArCQl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2spOwo+ICAJ
CXJldHVybjsKPiAgCX0KPiAgCS8qCj4gQEAgLTI5MywyMiArMjM5LDM2IEBAIGRldmljZV9yZWxl
YXNlKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCQkJYnJlYWs7Cj4gIAkJfQo+ICAJfQo+IC0JZGVs
ZXRlIGRldjsKPiAtCXNjaGVkX3VubG9jaygpOwo+ICsJZnJlZShkZXYpOwo+ICsJdWtfbXV0ZXhf
dW5sb2NrKCZkZXZmc19sb2NrKTsKPiArfQo+ICsKPiAraW50Cj4gK2RldmljZV9kZXN0cm95X2xv
Y2tlZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCj4gKwlVS19BU1NFUlQodWtfbXV0ZXhf
aXNfbG9ja2VkKCZkZXZmc19sb2NrKSk7Cj4gKwlpZiAoIWRldmljZV92YWxpZChkZXYpKSB7Cj4g
KwkJdWtfbXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsKPiArCQlyZXR1cm4gRU5PREVWOwo+ICsJ
fQo+ICsJZGV2LT5hY3RpdmUgPSAwOwo+ICsJZGV2aWNlX3JlbGVhc2UoZGV2KTsKPiArCXJldHVy
biAwOwo+ICB9Cj4gIAo+ICBpbnQKPiAgZGV2aWNlX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2
KQo+ICB7Cj4gIAo+IC0Jc2NoZWRfbG9jaygpOwo+ICsJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9j
ayk7Cj4gIAlpZiAoIWRldmljZV92YWxpZChkZXYpKSB7Cj4gLQkJc2NoZWRfdW5sb2NrKCk7Cj4g
KwkJdWtfbXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsKPiAgCQlyZXR1cm4gRU5PREVWOwo+ICAJ
fQo+ICAJZGV2LT5hY3RpdmUgPSAwOwo+ICsJdWtfbXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsK
PiAgCWRldmljZV9yZWxlYXNlKGRldik7Cj4gLQlzY2hlZF91bmxvY2soKTsKPiAgCXJldHVybiAw
Owo+ICB9Cj4gIAo+IEBAIC0zMjksMjAgKzI4OSwyMSBAQCBkZXZpY2Vfb3Blbihjb25zdCBjaGFy
ICpuYW1lLCBpbnQgbW9kZSwgc3RydWN0IGRldmljZSAqKmRldnApCj4gIAlzdHJ1Y3QgZGV2aWNl
ICpkZXY7Cj4gIAlpbnQgZXJyb3I7Cj4gIAo+IC0Jc2NoZWRfbG9jaygpOwo+ICsJdWtfbXV0ZXhf
bG9jaygmZGV2ZnNfbG9jayk7Cj4gIAlpZiAoKGRldiA9IGRldmljZV9sb29rdXAobmFtZSkpID09
IE5VTEwpIHsKPiAtCQlzY2hlZF91bmxvY2soKTsKPiArCQl1a19tdXRleF91bmxvY2soJmRldmZz
X2xvY2spOwo+ICAJCXJldHVybiBFTlhJTzsKPiAgCX0KPiAtCWVycm9yID0gZGV2aWNlX3JlZmVy
ZW5jZShkZXYpOwo+ICsKPiArCWVycm9yID0gZGV2aWNlX3JlZmVyZW5jZV9sb2NrZWQoZGV2KTsK
PiAgCWlmIChlcnJvcikgewo+IC0JCXNjaGVkX3VubG9jaygpOwo+ICsJCXVrX211dGV4X3VubG9j
aygmZGV2ZnNfbG9jayk7Cj4gIAkJcmV0dXJuIGVycm9yOwo+ICAJfQo+IC0Jc2NoZWRfdW5sb2Nr
KCk7Cj4gKwl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2spOwo+ICAKPiAgCW9wcyA9IGRldi0+
ZHJpdmVyLT5kZXZvcHM7Cj4gLQlhc3NlcnQob3BzLT5vcGVuICE9IE5VTEwpOwo+ICsJVUtfQVNT
RVJUKG9wcy0+b3BlbiAhPSBOVUxMKTsKPiAgCWVycm9yID0gKCpvcHMtPm9wZW4pKGRldiwgbW9k
ZSk7Cj4gIAkqZGV2cCA9IGRldjsKPiAgCj4gQEAgLTM2Niw3ICszMjcsNyBAQCBkZXZpY2VfY2xv
c2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICAJCXJldHVybiBlcnJvcjsKPiAgCj4gIAlvcHMgPSBk
ZXYtPmRyaXZlci0+ZGV2b3BzOwo+IC0JYXNzZXJ0KG9wcy0+Y2xvc2UgIT0gTlVMTCk7Cj4gKwlV
S19BU1NFUlQob3BzLT5jbG9zZSAhPSBOVUxMKTsKPiAgCWVycm9yID0gKCpvcHMtPmNsb3NlKShk
ZXYpOwo+ICAKPiAgCWRldmljZV9yZWxlYXNlKGRldik7Cj4gQEAgLTM4Myw3ICszNDQsNyBAQCBk
ZXZpY2VfcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxh
Z3MpCj4gIAkJcmV0dXJuIGVycm9yOwo+ICAKPiAgCW9wcyA9IGRldi0+ZHJpdmVyLT5kZXZvcHM7
Cj4gLQlhc3NlcnQob3BzLT5yZWFkICE9IE5VTEwpOwo+ICsJVUtfQVNTRVJUKG9wcy0+cmVhZCAh
PSBOVUxMKTsKPiAgCWVycm9yID0gKCpvcHMtPnJlYWQpKGRldiwgdWlvLCBpb2ZsYWdzKTsKPiAg
Cj4gIAlkZXZpY2VfcmVsZWFzZShkZXYpOwo+IEBAIC00MDAsNyArMzYxLDcgQEAgZGV2aWNlX3dy
aXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncykKPiAg
CQlyZXR1cm4gZXJyb3I7Cj4gIAo+ICAJb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsKPiAtCWFz
c2VydChvcHMtPndyaXRlICE9IE5VTEwpOwo+ICsJVUtfQVNTRVJUKG9wcy0+d3JpdGUgIT0gTlVM
TCk7Cj4gIAllcnJvciA9ICgqb3BzLT53cml0ZSkoZGV2LCB1aW8sIGlvZmxhZ3MpOwo+ICAKPiAg
CWRldmljZV9yZWxlYXNlKGRldik7Cj4gQEAgLTQxNSw3ICszNzYsNyBAQCBkZXZpY2Vfd3JpdGUo
c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKQo+ICAgKiBw
b2ludGVkIGJ5IHRoZSBhcmcgdmFsdWUuCj4gICAqLwo+ICBpbnQKPiAtZGV2aWNlX2lvY3RsKHN0
cnVjdCBkZXZpY2UgKmRldiwgdV9sb25nIGNtZCwgdm9pZCAqYXJnKQo+ICtkZXZpY2VfaW9jdGwo
c3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqYXJnKQo+ICB7Cj4g
IAlzdHJ1Y3QgZGV2b3BzICpvcHM7Cj4gIAlpbnQgZXJyb3I7Cj4gQEAgLTQyNCw5MiArMzg1LDI1
IEBAIGRldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVfbG9uZyBjbWQsIHZvaWQgKmFy
ZykKPiAgCQlyZXR1cm4gZXJyb3I7Cj4gIAo+ICAJb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsK
PiAtCWFzc2VydChvcHMtPmlvY3RsICE9IE5VTEwpOwo+ICsJVUtfQVNTRVJUKG9wcy0+aW9jdGwg
IT0gTlVMTCk7Cj4gIAllcnJvciA9ICgqb3BzLT5pb2N0bCkoZGV2LCBjbWQsIGFyZyk7Cj4gIAo+
ICAJZGV2aWNlX3JlbGVhc2UoZGV2KTsKPiAgCXJldHVybiBlcnJvcjsKPiAgfQo+ICAKPiAtI2lm
IDAKPiAtLyoKPiAtICogRGV2aWNlIGNvbnRyb2wgLSBkZXZjdGwgaXMgc2ltaWxhciB0byBpb2N0
bCwgYnV0IGlzIGludm9rZWQgZnJvbQo+IC0gKiBvdGhlciBkZXZpY2UgZHJpdmVyIHJhdGhlciB0
aGFuIGZyb20gdXNlciBhcHBsaWNhdGlvbi4KPiAtICovCj4gLXN0YXRpYyBpbnQKPiAtZGV2aWNl
X2NvbnRyb2woc3RydWN0IGRldmljZSAqZGV2LCB1X2xvbmcgY21kLCB2b2lkICphcmcpCj4gLXsK
PiAtCXN0cnVjdCBkZXZvcHMgKm9wczsKPiAtCWludCBlcnJvcjsKPiAtCj4gLQlhc3NlcnQoZGV2
ICE9IE5VTEwpOwo+IC0KPiAtCXNjaGVkX2xvY2soKTsKPiAtCW9wcyA9IGRldi0+ZHJpdmVyLT5k
ZXZvcHM7Cj4gLQlhc3NlcnQob3BzLT5kZXZjdGwgIT0gTlVMTCk7Cj4gLQllcnJvciA9ICgqb3Bz
LT5kZXZjdGwpKGRldiwgY21kLCBhcmcpOwo+IC0Jc2NoZWRfdW5sb2NrKCk7Cj4gLQlyZXR1cm4g
ZXJyb3I7Cj4gLX0KPiAtCj4gLS8qCj4gLSAqIGRldmljZV9icm9hZGNhc3QgLSBicm9hZGNhc3Qg
ZGV2Y3RsIGNvbW1hbmQgdG8gYWxsIGRldmljZSBvYmplY3RzLgo+IC0gKgo+IC0gKiBJZiAiZm9y
Y2UiIGFyZ3VtZW50IGlzIHRydWUsIHdlIHdpbGwgY29udGludWUgY29tbWFuZAo+IC0gKiBub3Rp
ZmljYXRpb24gZXZlbiBpZiBzb21lIGRyaXZlciByZXR1cm5zIGFuIGVycm9yLiBJbiB0aGlzCj4g
LSAqIGNhc2UsIHRoaXMgcm91dGluZSByZXR1cm5zIEVJTyBlcnJvciBpZiBhdCBsZWFzdCBvbmUg
ZHJpdmVyCj4gLSAqIHJldHVybnMgYW4gZXJyb3IuCj4gLSAqCj4gLSAqIElmIGZvcmNlIGFyZ3Vt
ZW50IGlzIGZhbHNlLCBhIGtlcm5lbCBzdG9wcyB0aGUgY29tbWFuZCBwcm9jZXNzaW5nCj4gLSAq
IHdoZW4gYXQgbGVhc3Qgb25lIGRyaXZlciByZXR1cm5zIGFuIGVycm9yLiBJbiB0aGlzIGNhc2Us
Cj4gLSAqIGRldmljZV9icm9hZGNhc3Qgd2lsbCByZXR1cm4gdGhlIGVycm9yIGNvZGUgd2hpY2gg
aXMgcmV0dXJuZWQKPiAtICogYnkgdGhlIGRyaXZlci4KPiAtICovCj4gLXN0YXRpYyBpbnQKPiAt
ZGV2aWNlX2Jyb2FkY2FzdCh1X2xvbmcgY21kLCB2b2lkICphcmcsIGludCBmb3JjZSkKPiAtewo+
IC0Jc3RydWN0IGRldmljZSAqZGV2Owo+IC0Jc3RydWN0IGRldm9wcyAqb3BzOwo+IC0JaW50IGVy
cm9yLCByZXR2YWwgPSAwOwo+IC0KPiAtCXNjaGVkX2xvY2soKTsKPiAtCj4gLQlmb3IgKGRldiA9
IGRldmljZV9saXN0OyBkZXYgIT0gTlVMTDsgZGV2ID0gZGV2LT5uZXh0KSB7Cj4gLQkJLyoKPiAt
CQkgKiBDYWxsIGRyaXZlcidzIGRldmN0bCgpIHJvdXRpbmUuCj4gLQkJICovCj4gLQkJb3BzID0g
ZGV2LT5kcml2ZXItPmRldm9wczsKPiAtCQlpZiAob3BzID09IE5VTEwpCj4gLQkJCWNvbnRpbnVl
Owo+IC0KPiAtCQlhc3NlcnQob3BzLT5kZXZjdGwgIT0gTlVMTCk7Cj4gLQkJZXJyb3IgPSAoKm9w
cy0+ZGV2Y3RsKShkZXYsIGNtZCwgYXJnKTsKPiAtCQlpZiAoZXJyb3IpIHsKPiAtCQkJaWYgKGZv
cmNlKQo+IC0JCQkJcmV0dmFsID0gRUlPOwo+IC0JCQllbHNlIHsKPiAtCQkJCXJldHZhbCA9IGVy
cm9yOwo+IC0JCQkJYnJlYWs7Cj4gLQkJCX0KPiAtCQl9Cj4gLQl9Cj4gLQlzY2hlZF91bmxvY2so
KTsKPiAtCXJldHVybiByZXR2YWw7Cj4gLX0KPiAtI2VuZGlmCj4gLQo+ICAvKgo+ICAgKiBSZXR1
cm4gZGV2aWNlIGluZm9ybWF0aW9uLgo+ICAgKi8KPiAgaW50Cj4gIGRldmljZV9pbmZvKHN0cnVj
dCBkZXZpbmZvICppbmZvKQo+ICB7Cj4gLQl1X2xvbmcgdGFyZ2V0ID0gaW5mby0+Y29va2llOwo+
IC0JdV9sb25nIGkgPSAwOwo+ICsJdW5zaWduZWQgbG9uZyB0YXJnZXQgPSBpbmZvLT5jb29raWU7
Cj4gKwl1bnNpZ25lZCBsb25nIGkgPSAwOwo+ICAJc3RydWN0IGRldmljZSAqZGV2Owo+ICAJaW50
IGVycm9yID0gRVNSQ0g7Cj4gIAo+IC0Jc2NoZWRfbG9jaygpOwo+ICsJdWtfbXV0ZXhfbG9jaygm
ZGV2ZnNfbG9jayk7Cj4gIAlmb3IgKGRldiA9IGRldmljZV9saXN0OyBkZXYgIT0gTlVMTDsgZGV2
ID0gZGV2LT5uZXh0KSB7Cj4gIAkJaWYgKGkrKyA9PSB0YXJnZXQpIHsKPiAgCQkJaW5mby0+Y29v
a2llID0gaTsKPiBAQCAtNTIwLDcgKzQxNCw3IEBAIGRldmljZV9pbmZvKHN0cnVjdCBkZXZpbmZv
ICppbmZvKQo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAl9Cj4gLQlzY2hlZF91bmxvY2soKTsKPiAr
CXVrX211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7Cj4gIAlyZXR1cm4gZXJyb3I7Cj4gIH0KPiAg
Cj4gQEAgLTUzNSwzICs0MjksNCBAQCBudWxsb3Aodm9pZCkKPiAgewo+ICAJcmV0dXJuIDA7Cj4g
IH0KPiArCj4gZGlmZiAtLWdpdCBhL2xpYi9kZXZmcy9leHBvcnRzeW1zLnVrIGIvbGliL2RldmZz
L2V4cG9ydHN5bXMudWsKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5j
ODZjM2YzNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvZGV2ZnMvZXhwb3J0c3ltcy51awo+
IEBAIC0wLDAgKzEgQEAKPiArbm9uZQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+IGRp
ZmYgLS1naXQgYS9saWIvZGV2ZnMvaW5jbHVkZS9kZXZpY2UuaCBiL2xpYi9kZXZmcy9pbmNsdWRl
L2RldmljZS5oCj4gaW5kZXggMTZkMmU0NzAuLmE0OGM0MjA0IDEwMDY0NAo+IC0tLSBhL2xpYi9k
ZXZmcy9pbmNsdWRlL2RldmljZS5oCj4gKysrIGIvbGliL2RldmZzL2luY2x1ZGUvZGV2aWNlLmgK
PiBAQCAtMzAsMTIgKzMwLDkgQEAKPiAgI2lmbmRlZiBfREVWSUNFX0gKPiAgI2RlZmluZSBfREVW
SUNFX0gKPiAgCj4gLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KPiAgI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgo+ICAKPiAtI2luY2x1ZGUgPG9zdi91aW8uaD4KPiAtCj4gLV9fQkVHSU5fREVDTFMKPiAr
I2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gIAo+ICAjZGVmaW5lIE1BWERFVk5BTUUJMTIKPiAg
I2RlZmluZSBET19SV01BU0sJMHgzCj4gQEAgLTQ3LDcgKzQ0LDcgQEAgc3RydWN0IGRldmljZTsK
PiAgICogRGV2aWNlIGluZm9ybWF0aW9uCj4gICAqLwo+ICBzdHJ1Y3QgZGV2aW5mbyB7Cj4gLQl1
X2xvbmcJCWNvb2tpZTsJCS8qIGluZGV4IGNvb2tpZSAqLwo+ICsJdW5zaWduZWQgbG9uZwkJY29v
a2llOwkJLyogaW5kZXggY29va2llICovCj4gIAlzdHJ1Y3QgZGV2aWNlCSppZDsJCS8qIGRldmlj
ZSBpZCAqLwo+ICAJaW50CQlmbGFnczsJCS8qIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MgZmxhZ3Mg
Ki8KPiAgCWNoYXIJCW5hbWVbTUFYREVWTkFNRV07IC8qIGRldmljZSBuYW1lICovCj4gQEAgLTY1
LDggKzYyLDggQEAgdHlwZWRlZiBpbnQgKCpkZXZvcF9vcGVuX3QpICAgKHN0cnVjdCBkZXZpY2Ug
KiwgaW50KTsKPiAgdHlwZWRlZiBpbnQgKCpkZXZvcF9jbG9zZV90KSAgKHN0cnVjdCBkZXZpY2Ug
Kik7Cj4gIHR5cGVkZWYgaW50ICgqZGV2b3BfcmVhZF90KSAgIChzdHJ1Y3QgZGV2aWNlICosIHN0
cnVjdCB1aW8gKiwgaW50KTsKPiAgdHlwZWRlZiBpbnQgKCpkZXZvcF93cml0ZV90KSAgKHN0cnVj
dCBkZXZpY2UgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwo+IC10eXBlZGVmIGludCAoKmRldm9wX2lv
Y3RsX3QpICAoc3RydWN0IGRldmljZSAqLCB1X2xvbmcsIHZvaWQgKik7Cj4gLXR5cGVkZWYgaW50
ICgqZGV2b3BfZGV2Y3RsX3QpIChzdHJ1Y3QgZGV2aWNlICosIHVfbG9uZywgdm9pZCAqKTsKPiAr
dHlwZWRlZiBpbnQgKCpkZXZvcF9pb2N0bF90KSAgKHN0cnVjdCBkZXZpY2UgKiwgdW5zaWduZWQg
bG9uZywgdm9pZCAqKTsKPiArdHlwZWRlZiBpbnQgKCpkZXZvcF9kZXZjdGxfdCkgKHN0cnVjdCBk
ZXZpY2UgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPiAgdHlwZWRlZiB2b2lkICgqZGV2b3Bf
c3RyYXRlZ3lfdCkoc3RydWN0IGJpbyAqKTsKPiAgCj4gIC8qCj4gQEAgLTE5MSw3ICsxODgsNyBA
QCBpbnQJIGRldmljZV9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBzdHJ1Y3QgZGV2aWNlICoqKTsK
PiAgaW50CSBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqKTsKPiAgaW50CSBkZXZpY2VfcmVh
ZChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKPiAgaW50CSBkZXZpY2Vfd3Jp
dGUoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gLWludAkgZGV2aWNlX2lv
Y3RsKHN0cnVjdCBkZXZpY2UgKiwgdV9sb25nLCB2b2lkICopOwo+ICtpbnQJIGRldmljZV9pb2N0
bChzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7Cj4gIGludAkgZGV2aWNl
X2luZm8oc3RydWN0IGRldmluZm8gKik7Cj4gIAo+ICBpbnQJIGJkZXZfcmVhZChzdHJ1Y3QgZGV2
aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpOwo+IEBAIC0xOTksMTUgKzE5
NiwxMSBAQCBpbnQJIGJkZXZfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1
aW8sIGludCBpb2ZsYWdzKTsKPiAgCj4gIGludAllbm9kZXYodm9pZCk7Cj4gIGludAludWxsb3Ao
dm9pZCk7Cj4gLXZvaWQgbXVsdGlwbGV4X3N0cmF0ZWd5KHN0cnVjdCBiaW8gKik7Cj4gLQo+IC1p
bnQJcGh5c2lvKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFn
cyk7Cj4gIAo+ICBzdHJ1Y3QgZGV2aWNlICoJZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgZHJpdmVyICpk
cnYsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncyk7Cj4gIGludCBkZXZpY2VfZGVzdHJveShz
dHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICtpbnQgZGV2aWNlX2Rlc3Ryb3lfbG9ja2VkKHN0cnVjdCBk
ZXZpY2UgKmRldik7Cj4gIHZvaWQgZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldmlj
ZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKTsKPiAgdm9pZCByZWFkX3BhcnRpdGlvbl90
YWJsZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpOwo+ICAKPiAtX19FTkRfREVDTFMKPiAtCj4gICNl
bmRpZiAvKiAhX0RFVklDRV9IICovCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 17:35:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 17:35: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 1hYZpO-0001XL-0Q; Wed, 05 Jun 2019 17:35:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=isUm=UE=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYZpM-0001XG-D4
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 17:35:56 +0000
X-Inumbo-ID: 5e58f44b-87b8-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5e58f44b-87b8-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 17:35:54 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id n4so15091525wrw.13
 for <minios-devel@lists.xen.org>; Wed, 05 Jun 2019 10:35:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=GoQb/5+qBGbhWr6hFEX8oyqoJKA/FwhylY0LGF8YVe4=;
 b=CcsP+JrJNv5IPQ9+efDkSFyXfL2j+mE1QHf/E18nFUkWxmAs6+BKgasrnoJrvUm2ay
 2tneHsofuc7kmqiunApSQeme0XPoQHiftsxO4uFNJPLpzefAIgZGvd028SBM3yFj/AeR
 nzWmUa0SyOycOOeefFGrelT/XmGhuQjaI5bLvo56lzxkRGsnwfqeRwFcMLwxms+MvETY
 bA6jJSqfsDyyUtnAk9ylrB3wRX6wPACsTB5O2WyPvdBh4hI+7iiHIRh8+m5cOccMOB1t
 8s0HkYB6E0y0WLYgAiwfNDKNFEYYkcQzWTkErHJgSOOdUZYt+cbReDxtwNQtA3DYqBTj
 he1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=GoQb/5+qBGbhWr6hFEX8oyqoJKA/FwhylY0LGF8YVe4=;
 b=qnKcdPSlr+32pBcC2E5py7Vi6EK+cYMM7sn2Fc9gSZ5fQBQPCmSIICEyDtw4C7kVaO
 UtpLuW63gTbAiqlmEFKsnQxZKQ0YUHqHMHvh+vUVs44M0KMbSCj3VusFv/6g3kmNVgu5
 a2pwspJ8x6noqtZpq2KrO1n6++zc7duzfaLEqHEqzlBWrI2MZGoKFuVc8av/01D+DIp/
 fwshALTnD98ihue4Jr0ZoZ7Lm1z6oaKRNaDJY1ul3SBY0SU15q/u/C3TQmJ3WTwGTBND
 r5oBr9/JPPZ5s5Axrph0kXHqLCeilFUG8TxWTsyBTbdFIg4fzF5Dx5jSKnMa5BcKUHHf
 UxcQ==
X-Gm-Message-State: APjAAAVuAxjnt1t4Hc+s+wKDAIa0FobU5oIKPPtJwYKSMX7QNHGiy6PL
 EwSvdcSySmtZ+gQYUJqtAws=
X-Google-Smtp-Source: APXvYqxSEB9TPKmQ0XTiaWTA9SrJRFGbfT5jiqicyKch+BtXL9AqiIzNtV5AwEKYmyKfRiy8J0cqRw==
X-Received: by 2002:a5d:56c1:: with SMTP id m1mr8145433wrw.26.1559756153426;
 Wed, 05 Jun 2019 10:35:53 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id 88sm28312485wrl.68.2019.06.05.10.35.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 05 Jun 2019 10:35:52 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190531135050.23817-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190531135050.23817-5-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <1085a484-400f-52fe-8713-ef3d3e196bb1@gmail.com>
Date: Wed, 5 Jun 2019 20:35:52 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190531135050.23817-5-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 4/5] lib/devfs: Fix checkpath
 warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwKClBsZWFzZSBzZWUgaW5saW5lLgoKT24gNS8zMS8xOSA0OjUxIFBNLCBWbGFkLUFu
ZHJlaSBCxIJET0lVICg3ODY5Mikgd3JvdGU6Cj4gRnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAo
Nzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KPiAtLS0KPiAgbGliL2RldmZzL2RldmZzX3Zub3BzLmMgICAgfCAzNiArKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgbGliL2RldmZzL2RldmljZS5jICAgICAgICAg
fCAgNCArKy0tCj4gIGxpYi9kZXZmcy9pbmNsdWRlL2RldmljZS5oIHwgMjIgKysrKysrKysrKysr
LS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDI5IGRlbGV0
aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYyBiL2xpYi9k
ZXZmcy9kZXZmc192bm9wcy5jCj4gaW5kZXggNjE3ZWQzNTkuLjAxNDI4MmYzIDEwMDY0NAo+IC0t
LSBhL2xpYi9kZXZmcy9kZXZmc192bm9wcy5jCj4gKysrIGIvbGliL2RldmZzL2RldmZzX3Zub3Bz
LmMKPiBAQCAtNzcsMjEgKzc3LDIxIEBAIGRldmZzX29wZW4oc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnApCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gIAlpbnQgZXJyb3I7Cj4gIAo+IC0JRFBSSU5U
RigoImRldmZzX29wZW46IHBhdGg9JXNcbiIsIHBhdGgpKTsKPiArCURQUklOVEYoKCIlczogcGF0
aD0lc1xuIiwgX19mdW5jX18sICBwYXRoKSk7Cj4gIAo+ICAJaWYgKCFzdHJjbXAocGF0aCwgIi8i
KSkJLyogcm9vdCA/ICovCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKHZwLT52X2ZsYWdzICYg
VlBST1RERVYpIHsKPiAtCQlEUFJJTlRGKCgiZGV2ZnNfb3BlbjogZmFpbGVkIHRvIG9wZW4gcHJv
dGVjdGVkIGRldmljZS5cbiIpKTsKPiArCQlEUFJJTlRGKCgiJXM6IGZhaWxlZCB0byBvcGVuIHBy
b3RlY3RlZCBkZXZpY2UuXG4iLCBfX2Z1bmNfXykpOwoKRG9uJ3QgZm9yZ2V0IHRvIGdldCByaWQg
b2YgdGhlIGRvdWJsZSBwYXJlbnRoZXNlcyBwbGVhc2UuCgo+ICAJCXJldHVybiBFUEVSTTsKPiAg
CX0KPiAgCWlmICgqcGF0aCA9PSAnLycpCj4gIAkJcGF0aCsrOwo+ICAJZXJyb3IgPSBkZXZpY2Vf
b3BlbihwYXRoLCBmcC0+Zl9mbGFncyAmIERPX1JXTUFTSywgJmRldik7Cj4gIAlpZiAoZXJyb3Ip
IHsKPiAtCQlEUFJJTlRGKCgiZGV2ZnNfb3BlbjogY2FuIG5vdCBvcGVuIGRldmljZSA9ICVzIGVy
cm9yPSVkXG4iLAo+IC0JCQkgcGF0aCwgZXJyb3IpKTsKPiArCQlEUFJJTlRGKCgiJXM6IGNhbiBu
b3Qgb3BlbiBkZXZpY2UgPSAlcyBlcnJvcj0lZFxuIiwKPiArCQkJIF9fZnVuY19fLCBwYXRoLCBl
cnJvcikpOwo+ICAJCXJldHVybiBlcnJvcjsKPiAgCX0KPiAgCXZwLT52X2RhdGEgPSAodm9pZCAq
KWRldjsJLyogU3RvcmUgcHJpdmF0ZSBkYXRhICovCj4gQEAgLTEwMiwzMyArMTAyLDM1IEBAIHN0
YXRpYyBpbnQKPiAgZGV2ZnNfY2xvc2Uoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVf
ZmlsZSAqZnApCj4gIHsKPiAgCj4gLQlEUFJJTlRGKCgiZGV2ZnNfY2xvc2U6IGZwPSV4XG4iLCBm
cCkpOwo+ICsJRFBSSU5URigoIiVzOiBmcD0leFxuIiwgX19mdW5jX18sIGZwKSk7Cj4gIAo+ICAJ
aWYgKCFzdHJjbXAoZnAtPmZfZGVudHJ5LT5kX3BhdGgsICIvIikpCS8qIHJvb3QgPyAqLwo+ICAJ
CXJldHVybiAwOwo+ICAKPiAtCXJldHVybiBkZXZpY2VfY2xvc2UoKHN0cnVjdCBkZXZpY2UqKXZw
LT52X2RhdGEpOwo+ICsJcmV0dXJuIGRldmljZV9jbG9zZSgoc3RydWN0IGRldmljZSAqKXZwLT52
X2RhdGEpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX3JlYWQoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxh
Z3MpCj4gK2RldmZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnAsCj4gKwkJCXN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpCj4gIHsKPiAtCXJldHVybiBk
ZXZpY2VfcmVhZCgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0YSwgdWlvLCBpb2ZsYWdzKTsKPiAr
CXJldHVybiBkZXZpY2VfcmVhZCgoc3RydWN0IGRldmljZSAqKXZwLT52X2RhdGEsIHVpbywgaW9m
bGFncyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiAgZGV2ZnNfd3JpdGUoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncykKPiAgewo+IC0JcmV0dXJuIGRldmlj
ZV93cml0ZSgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0YSwgdWlvLCBpb2ZsYWdzKTsKPiArCXJl
dHVybiBkZXZpY2Vfd3JpdGUoKHN0cnVjdCBkZXZpY2UgKil2cC0+dl9kYXRhLCB1aW8sIGlvZmxh
Z3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX2lvY3RsKHN0cnVjdCB2bm9kZSAq
dnAsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqYXJn
KQo+ICtkZXZmc19pb2N0bChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpm
cCwgdW5zaWduZWQgbG9uZyBjbWQsCj4gKyAgICAgICAgdm9pZCAqYXJnKQo+ICB7Cj4gIAlpbnQg
ZXJyb3I7Cj4gIAo+IC0JZXJyb3IgPSBkZXZpY2VfaW9jdGwoKHN0cnVjdCBkZXZpY2UqKXZwLT52
X2RhdGEsIGNtZCwgYXJnKTsKPiAtCURQUklOVEYoKCJkZXZmc19pb2N0bDogY21kPSV4XG4iLCBj
bWQpKTsKPiArCWVycm9yID0gZGV2aWNlX2lvY3RsKChzdHJ1Y3QgZGV2aWNlICopdnAtPnZfZGF0
YSwgY21kLCBhcmcpOwo+ICsJRFBSSU5URigoIiVzOiBjbWQ9JXhcbiIsIF9fZnVuY19fLCBjbWQp
KTsKPiAgCXJldHVybiBlcnJvcjsKPiAgfQo+ICAKPiBAQCAtMTM5LDcgKzE0MSw3IEBAIGRldmZz
X2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBw
KQo+ICAJc3RydWN0IHZub2RlICp2cDsKPiAgCWludCBlcnJvciwgaTsKPiAgCj4gLQlEUFJJTlRG
KCgiZGV2ZnNfbG9va3VwOiVzXG4iLCBuYW1lKSk7Cj4gKwlEUFJJTlRGKCgiJXM6JXNcbiIsIF9f
ZnVuY19fLCBuYW1lKSk7Cj4gIAo+ICAJKnZwcCA9IE5VTEw7Cj4gIAo+IEBAIC0xNTEsOSArMTUz
LDkgQEAgZGV2ZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qg
dm5vZGUgKip2cHApCj4gIAlpbmZvLmNvb2tpZSA9IDA7Cj4gIAlmb3IgKDs7KSB7Cj4gIAkJZXJy
b3IgPSBkZXZpY2VfaW5mbygmaW5mbyk7Cj4gLQkJaWYgKGVycm9yKSB7Cj4gKwkJaWYgKGVycm9y
KQo+ICAJCQlyZXR1cm4gRU5PRU5UOwo+IC0JCX0KPiArCj4gIAkJaWYgKCFzdHJuY21wKGluZm8u
bmFtZSwgbmFtZSwgTUFYREVWTkFNRSkpCj4gIAkJCWJyZWFrOwo+ICAJCWkrKzsKPiBAQCAtMTg1
LDcgKzE4Nyw3IEBAIGRldmZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAgCXN0cnVjdCBkZXZpbmZvIGluZm87
Cj4gIAlpbnQgZXJyb3IsIGk7Cj4gIAo+IC0JRFBSSU5URigoImRldmZzX3JlYWRkaXIgb2Zmc2V0
PSVkXG4iLCBmcC0+Zl9vZmZzZXQpKTsKPiArCURQUklOVEYoKCIlczogb2Zmc2V0PSVkXG4iLCBf
X2Z1bmNfXywgZnAtPmZfb2Zmc2V0KSk7Cj4gIAo+ICAJaSA9IDA7Cj4gIAllcnJvciA9IDA7Cj4g
QEAgLTIwNSw3ICsyMDcsNyBAQCBkZXZmc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCj4gIAlkaXItPmRfZmlsZW5v
ID0gZnAtPmZfb2Zmc2V0Owo+ICAvLwlkaXItPmRfbmFtbGVuID0gc3RybGVuKGRpci0+ZF9uYW1l
KTsKPiAgCj4gLQlEUFJJTlRGKCgiZGV2ZnNfcmVhZGRpcjogJXNcbiIsIGRpci0+ZF9uYW1lKSk7
Cj4gKwlEUFJJTlRGKCgiJXM6ICVzXG4iLCBfX2Z1bmNfXywgZGlyLT5kX25hbWUpKTsKPiAgCWZw
LT5mX29mZnNldCsrOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvbGliL2RldmZz
L2RldmljZS5jIGIvbGliL2RldmZzL2RldmljZS5jCj4gaW5kZXggZDg3ODA5MGQuLmUyY2RmZTg4
IDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZmcy9kZXZpY2UuYwo+ICsrKyBiL2xpYi9kZXZmcy9kZXZp
Y2UuYwo+IEBAIC01Nyw3ICs1Nyw3IEBACj4gIHN0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggZGV2ZnNf
bG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKGRldmZzX2xvY2spOwo+ICAKPiAgLyogbGlzdCBo
ZWFkIG9mIHRoZSBkZXZpY2VzICovCj4gLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfbGlz
dCA9IE5VTEw7Cj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfbGlzdDsKPiAgCj4gIC8q
Cj4gICAqIExvb2sgdXAgYSBkZXZpY2Ugb2JqZWN0IGJ5IGRldmljZSBuYW1lLgo+IEBAIC04NSw3
ICs4NSw3IEBAIHN0cnVjdCBwYXJ0aXRpb25fdGFibGVfZW50cnkgewo+ICAJdWludDE2X3QgZW5k
aW5nX2N5bGluZGVyOjEwOwo+ICAJdWludDMyX3QgcmVsYV9zZWN0b3I7Cj4gIAl1aW50MzJfdCB0
b3RhbF9zZWN0b3JzOwo+IC19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwo+ICt9IF9fcGFja2Vk
Owo+ICAKPiAgCj4gIHZvaWQgZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgY29u
c3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKQo+IGRpZmYgLS1naXQgYS9saWIvZGV2ZnMvaW5jbHVk
ZS9kZXZpY2UuaCBiL2xpYi9kZXZmcy9pbmNsdWRlL2RldmljZS5oCj4gaW5kZXggODdmZGZkODAu
LmEyNjE5NWYwIDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZmcy9pbmNsdWRlL2RldmljZS5oCj4gKysr
IGIvbGliL2RldmZzL2luY2x1ZGUvZGV2aWNlLmgKPiBAQCAtMTIyLDcgKzEyMiw5IEBAIHN0cnVj
dCBkZXZpY2Ugewo+ICAJaW50CQlhY3RpdmU7CQkvKiBkZXZpY2UgaGFzIG5vdCBiZWVuIGRlc3Ry
b3llZCAqLwo+ICAJaW50CQlyZWZjbnQ7CQkvKiByZWZlcmVuY2UgY291bnQgKi8KPiAgCW9mZl90
CQlzaXplOwkJLyogZGV2aWNlIHNpemUgKi8KPiAtCW9mZl90CQlvZmZzZXQ7IC8qIDAgZm9yIHRo
ZSBtYWluIGRyaXZlLCBpZiB3ZSBoYXZlIGEgcGFydGl0aW9uLCB0aGlzIGlzIHRoZSBzdGFydCBh
ZGRyZXNzICovCj4gKwlvZmZfdAkJb2Zmc2V0OyAvKiAwIGZvciB0aGUgbWFpbiBkcml2ZSwgaWYg
d2UgaGF2ZSBhCj4gKwkJCQkgKiAgcGFydGl0aW9uLCB0aGlzIGlzIHRoZSBzdGFydCBhZGRyZXNz
Cj4gKwkJCQkgKi8KPiAgCXNpemVfdAkJbWF4X2lvX3NpemU7Cj4gIAl2b2lkCQkqcHJpdmF0ZV9k
YXRhOwkvKiBwcml2YXRlIHN0b3JhZ2UgKi8KPiAgCj4gQEAgLTE1NywxMyArMTU5LDEzIEBAIGRl
dmljZV9nZXRfZGVzYyhkZXZpY2VfdCBkZXYpCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9p
ZAo+IC1kZXZpY2Vfc2V0X2Rlc2MoZGV2aWNlX3QgZGV2LCBjb25zdCBjaGFyKiBkZXNjKQo+ICtk
ZXZpY2Vfc2V0X2Rlc2MoZGV2aWNlX3QgZGV2LCBjb25zdCBjaGFyICpkZXNjKQo+ICB7Cj4gIAlk
ZXYtPmRlc2MgPSBkZXNjOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHZvaWQKPiAtZGV2aWNl
X3NldF9zb2Z0YyhkZXZpY2VfdCBkZXYsIHZvaWQqIHNvZnRjKQo+ICtkZXZpY2Vfc2V0X3NvZnRj
KGRldmljZV90IGRldiwgdm9pZCAqc29mdGMpCj4gIHsKPiAgCWRldi0+c29mdGMgPSBzb2Z0YzsK
PiAgfQo+IEBAIC0xODQsMTIgKzE4NiwxMiBAQCBkZXZ0b25hbWUoc3RydWN0IGRldmljZSAqZGV2
KQo+ICAJcmV0dXJuIGRldi0+bmFtZTsKPiAgfQo+ICAKPiAtaW50IGRldmljZV9vcGVuKGNvbnN0
IGNoYXIgKiwgaW50LCBzdHJ1Y3QgZGV2aWNlICoqKTsKPiAtaW50IGRldmljZV9jbG9zZShzdHJ1
Y3QgZGV2aWNlICopOwo+IC1pbnQgZGV2aWNlX3JlYWQoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3Qg
dWlvICosIGludCk7Cj4gLWludCBkZXZpY2Vfd3JpdGUoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3Qg
dWlvICosIGludCk7Cj4gLWludCBkZXZpY2VfaW9jdGwoc3RydWN0IGRldmljZSAqLCB1bnNpZ25l
ZCBsb25nLCB2b2lkICopOwo+IC1pbnQgZGV2aWNlX2luZm8oc3RydWN0IGRldmluZm8gKik7Cj4g
K2ludCBkZXZpY2Vfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZSwgc3RydWN0IGRldmlj
ZSAqKmRldnApOwo+ICtpbnQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK2lu
dCBkZXZpY2VfcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlv
ZmxhZ3MpOwo+ICtpbnQgZGV2aWNlX3dyaXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFncyk7Cj4gK2ludCBkZXZpY2VfaW9jdGwoc3RydWN0IGRldmljZSAq
ZGV2LCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqYXJnKTsKPiAraW50IGRldmljZV9pbmZvKHN0
cnVjdCBkZXZpbmZvICppbmZvKTsKPiAgCj4gIGludCBiZGV2X3JlYWQoc3RydWN0IGRldmljZSAq
ZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKTsKPiAgaW50IGJkZXZfd3JpdGUoc3Ry
dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKTsKPiBAQCAtMTk3
LDcgKzE5OSw3IEBAIGludCBiZGV2X3dyaXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFncyk7Cj4gIGludAllbm9kZXYodm9pZCk7Cj4gIGludAludWxsb3Ao
dm9pZCk7Cj4gIAo+IC1zdHJ1Y3QgZGV2aWNlICoJZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgZHJpdmVy
ICpkcnYsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncyk7Cj4gK3N0cnVjdCBkZXZpY2UgKmRl
dmljZV9jcmVhdGUoc3RydWN0IGRyaXZlciAqZHJ2LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxh
Z3MpOwo+ICBpbnQgZGV2aWNlX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2KTsKPiAgaW50IGRl
dmljZV9kZXN0cm95X2xvY2tlZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICB2b2lkIGRldmljZV9y
ZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFn
cyk7Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 17:36:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 17:36:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYZqJ-0001ZX-4F; Wed, 05 Jun 2019 17:36:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=isUm=UE=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYZqH-0001ZS-8T
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 17:36:53 +0000
X-Inumbo-ID: 8098b551-87b8-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8098b551-87b8-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 17:36:52 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id d17so3084736wmb.3
 for <minios-devel@lists.xen.org>; Wed, 05 Jun 2019 10:36:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=ORZArRQ8BHTxf5nGojELWRd2DKdQVaFnAuK7mBWgdL0=;
 b=pq//YR4PU1pB58KB7yex5Bde00Bwb01t5OD+5NB+HJFv22sd9trFEd63ZCh1PjKQ7d
 GeAsU+7+To9dRu9DKTCwqHMWeB1OzzQXClWTiPRPJ1YEPl+K+p21OdhQNxiQruYCRXkV
 8Kts3wYATDEaQNHQEXynsUG/PUQMNpbeYJCfi0c6EVZAy8bX3tx4ksA1ZzVSto0JOyXd
 Po62l2vdDluDdcw7ELBDlQ+/IYJtuhLvDtRsFhrtMqmtfD2yziKOabjASkQuxOeTK1pn
 MCIwSr0yKkFv8VqhDAhpWERMElsB8KXb7+IDUM197uJYavBu8bUgbewZ7BGua+Vck3qg
 VktQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=ORZArRQ8BHTxf5nGojELWRd2DKdQVaFnAuK7mBWgdL0=;
 b=s+X+mJukJCGfJaQYtY0tQ5FRwFPruCCebLWjCJ7/EBVlBFnunXxUekg2hMX9tAi203
 HV0w+K3JDRWVcTuBZl/TlTPcAXbJb04Nfof/5T0UDKmXKxvu0HtTVvGFikTFsLjS9Fso
 ycgDuYMKZpU2wrMJTs/77epOE/T8OiDjLvZ4U1ei9xInzXHNCQBKMtuPoWO6ufpsfEr/
 BiCNsvoz9BPPOrdgX1wf1rgGZrqASicAIN2op5eCguW5rt/Gtp/HmIU91fGVv96ptrt/
 4bEaveOA6esTd2PTZbQeSh9uWNzFIXZDTcXzNwqY28PoS7Y+7uKdf57PaxqaMYEjl4mm
 WE4Q==
X-Gm-Message-State: APjAAAWLiO1CREs7/OSXm7H3yuadfyzIPV8dhu4D3oHbcLPEleC5Zr3i
 nvFT+6ypwLXdPLYsGynw06I=
X-Google-Smtp-Source: APXvYqwoNXRJvd+x8VT3pzKzqCYXH8EYFz15dky1MNdEXN6i12NR3EUOmFU0YvrIvId2wvUssy1Zvw==
X-Received: by 2002:a1c:6585:: with SMTP id z127mr12165352wmb.25.1559756210940; 
 Wed, 05 Jun 2019 10:36:50 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id a3sm14202870wmb.35.2019.06.05.10.36.50
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 05 Jun 2019 10:36:50 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190531135050.23817-1-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <7e72930a-1565-e738-f0ff-2a38f132deb8@gmail.com>
Date: Wed, 5 Jun 2019 20:36:49 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190531135050.23817-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 0/5] Import devfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwKCkZvciB0aGUgbmV4dCB2ZXJzaW9uIG9mIGRldmZzIHBsZWFzZSBnZXQgcmlkIG9m
IHRoZSB3YXJuaW5ncyB0b28uCgpDb3N0aW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 05 19:55:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 05 Jun 2019 19:55:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYc0O-0006St-6T; Wed, 05 Jun 2019 19:55:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=0ASP=UE=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hYc0M-0006So-HB
 for minios-devel@lists.xen.org; Wed, 05 Jun 2019 19:55:26 +0000
X-Inumbo-ID: da614d8f-87cb-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id da614d8f-87cb-11e9-8980-bc764e045a96;
 Wed, 05 Jun 2019 19:55:23 +0000 (UTC)
IronPort-SDR: jCCUnQJwWJnj0o1t+Vdmkq9f4ETQNfv9omF4DlEEqnHE1O3YOpz6sVoYVvOaBc66QvhIWw9wXX
 7I4r1TUOmL/w==
IronPort-PHdr: =?us-ascii?q?9a23=3A97WiHxDJ/9EEDUZdXer8UyQJP3N1i/DPJgcQr6?=
 =?us-ascii?q?AfoPdwSPX/osbcNUDSrc9gkEXOFd2Cra4d0qyP7/qrADBbqb+681k6OKRWUB?=
 =?us-ascii?q?EEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAA?=
 =?us-ascii?q?jwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba5vIBmssAncudcajYR/Jqs+xB?=
 =?us-ascii?q?bCv2dFdflRyW50P1yYggzy5t23/J5t8iRQv+wu+stdWqjkfKo2UKJVAi0+P2?=
 =?us-ascii?q?86+MPkux/DTRCS5nQHSWUZjgBIAwne4x7kWJr6rzb3ufB82CmeOs32UKw0VD?=
 =?us-ascii?q?G/5KplVBPklCEKPCM//WrKiMJ/kbhbrQqhqRJh3oDaboKbOv1lc6/BYd8XX3?=
 =?us-ascii?q?ZNU9xNWyBdBI63cosBD/AGPeZdt4TwuVwOrQCiBQmtAuPk1zlGhmLu3a0nzu?=
 =?us-ascii?q?8sFh3J3As7H9ISsXTUqs/5NKMPUeCt0anF1inMb+hM1Tfl9YjHaQotoeuLXb?=
 =?us-ascii?q?9pd8fa1EohFxvdg1mNpoHpIimZ2+cNvmSB8eZsS+Cih3Qppg1pvzSiydoghp?=
 =?us-ascii?q?PKi48V0FzI6yt0zYgvKdGlR0N3f9ipG4ZKuS6ALYt5WMYiTnltuCY917IJp4?=
 =?us-ascii?q?a2fDMPyJQ73x7fbOGHc5SQ7hLjSumRJTB4iWp7eLK6nRmy8EygxvfgWcmvyl?=
 =?us-ascii?q?pKtjdFncLWunAX0Bzf8smHSv1j8Ue9wTuDyg/e5vxeLU03lafXMYAtzqAym5?=
 =?us-ascii?q?YJv0nPBir2l1/3jK+SeEUk4O+o6+H/b7r6oZ+cLJN0igD4Mqg0nsy/HPw4Mh?=
 =?us-ascii?q?UVUmeH4uSwzqXj/VDiT7lQlP02lbHVsIrGKsQDuq65HwhV354m6xa+CTem0d?=
 =?us-ascii?q?MYnWIeIF1YZh2HkZbmO1XVLfD8DPe/mEiskCxxy/HJILLhBI/BLn/ZkLfuZb?=
 =?us-ascii?q?x98VJTyBIvzdBD4JJZEr8BL+z3Wk/wrNzXEAU1Mwypw+bmFNp915gTWWSRDa?=
 =?us-ascii?q?CFNKPdq0SH6vgxLOmRfIUVoiryK+A55/7yin80gUQdfamz0psNcn+4GO5qI1?=
 =?us-ascii?q?6DbnrqntcBEX0FvgwkQ+zvk1CCVyBcaGq2X60m/T43EpypDZrbTIC3nLOBxD?=
 =?us-ascii?q?u7HoFRZm1eEVCMEHLod4KCW/sWayKSP9FukjoFVLe/UY8szheuuxHmxLpjNO?=
 =?us-ascii?q?Xb4TcUuoz+1Is92+qGkBA09DtvSsiQzWyJZ2V1hX8TAS872uZ4u0Mu5E2E1P?=
 =?us-ascii?q?1ThOdEFNobw+5RT09uPpnH0+18TdTvQh/pdczPUEusBM+hV2JiBuktysMDNh?=
 =?us-ascii?q?4uU+6piQrOinKn?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2CdAACIHfhc/wPjVY1mHgEGBwaBUwc?=
 =?us-ascii?q?LAYJ6UwEeEiiND5sMiVWBewkBAQEpEQECAQGEQIJ7NgcOAQMBAQUBAQEBBAF?=
 =?us-ascii?q?sHAyCOiKDbk+BAoMiAYIOqC+FR4MngUaBNIcEZoVIP4ERg1CKJgSLVYhllFY?=
 =?us-ascii?q?HAoIQWgSFZIxsJ4MMk3IBpRUnByqBWDMag18JgVsBNheLR4JcPAEBMYEGAQG?=
 =?us-ascii?q?PCAEB?=
X-IPAS-Result: =?us-ascii?q?A2CdAACIHfhc/wPjVY1mHgEGBwaBUwcLAYJ6UwEeEiiND?=
 =?us-ascii?q?5sMiVWBewkBAQEpEQECAQGEQIJ7NgcOAQMBAQUBAQEBBAFsHAyCOiKDbk+BA?=
 =?us-ascii?q?oMiAYIOqC+FR4MngUaBNIcEZoVIP4ERg1CKJgSLVYhllFYHAoIQWgSFZIxsJ?=
 =?us-ascii?q?4MMk3IBpRUnByqBWDMag18JgVsBNheLR4JcPAEBMYEGAQGPCAEB?=
X-IronPort-AV: E=Sophos;i="5.60,556,1549922400"; 
   d="scan'208";a="3490903"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 05 Jun 2019 22:55:20 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 340F51A60198;
 Wed,  5 Jun 2019 22:55:23 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id hkMxGLvaPLSM; Wed,  5 Jun 2019 22:55:23 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 196CC1A601FE;
 Wed,  5 Jun 2019 22:55:23 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id aLsxcHu1AoAI; Wed,  5 Jun 2019 22:55:23 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id EB98F1A60198;
 Wed,  5 Jun 2019 22:55:22 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Wed,  5 Jun 2019 22:55:09 +0300
Message-Id: <20190605195509.2401-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: Fix handling of main
 arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

V2hlbiB0aGUgY29tbWFuZCBsaW5lIGlzIHBhcnNlZCBhbmQgc3BsaXQgaW50byBhcmd1bWVudHMs
IGVhY2ggYXJndW1lbnQKaXMgc2F2ZWQgaW4gYW4gYXJyYXkgb2YgcG9pbnRlcnMgYWxsb2NhdGVk
IG9uIHRoZSBzdGFjayAoJ2FyZ3YnIGFycmF5IGluCnVrcGxhdF9lbnRyeV9hcmdwKCkpLiBUaGlz
IG1lYW5zIHRoYXQgdGhlIGFycmF5IGNhbiBiZSBvdmVyd3JpdHRlbiBhbnkKdGltZSBiZWZvcmUg
c3RhcnRpbmcgdGhlIG1haW4gdGhyZWFkIHdoaWNoIG5lZWRzIHRoZSBhcmd1bWVudHMuIFRoaXMK
cGF0Y2ggZml4ZXMgdGhhdCBieSBtYWtpbmcgdGhlIGFycmF5IGdsb2JhbCwgZW5jYXBzdWxhdGVk
IGJ5IHRoZQonbWFpbl9hcmcnIHN0cnVjdHVyZS4KClNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1
IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5o
IHwgMTEgKysrKysrKysrKy0KIGxpYi91a2Jvb3QvYm9vdC5jICAgICAgICAgICB8IDMzICsrKysr
KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrICAg
IHwgIDEgKwogcGxhdC9saW51eHUvc2V0dXAuYyAgICAgICAgIHwgIDcgKysrKysrLQogNCBmaWxl
cyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3VrL3BsYXQvYm9vdHN0cmFwLmggYi9pbmNsdWRlL3VrL3BsYXQvYm9vdHN0cmFw
LmgKaW5kZXggMDY1MmNjZDEuLmE5ZTQwNGU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VrL3BsYXQv
Ym9vdHN0cmFwLmgKKysrIGIvaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaWZuZGVmIF9fVUtQTEFUX0JPT1RTVFJBUF9fCiAjZGVmaW5lIF9fVUtQTEFUX0JP
T1RTVFJBUF9fCiAKKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KICNpbmNsdWRlIDx1ay9hcmNoL3R5
cGVzLmg+CiAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgogCkBAIC00Myw2ICs0NCwxNCBAQAog
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyogTWFpbiBhcmd1bWVudHMgc3RydWN0dXJlICovCitz
dHJ1Y3QgbWFpbl9hcmcgeworCWludCBhcmdjOworCWNoYXIgKmFyZ3ZbQ09ORklHX0xJQlVLQk9P
VF9NQVhOQkFSR1NdOworfTsKKy8qIE1haW4gYXJndW1lbnRzICovCitleHRlcm4gc3RydWN0IG1h
aW5fYXJnIGdsb2JhbF9tYWluX2FyZzsKKwogLyoqCiAgKiBDYWxsZWQgYnkgcGxhdGZvcm0gbGli
cmFyeSBkdXJpbmcgaW5pdGlhbGl6YXRpb24KICAqIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIHBy
b3ZpZGVkIGJ5IGEgbm9uLXBsYXRmb3JtIGxpYnJhcnkgZm9yIGJvb3RzdHJhcHBpbmcKQEAgLTUy
LDcgKzYxLDcgQEAgZXh0ZXJuICJDIiB7CiAgKiBAcGFyYW0gYXJnYyBOdW1iZXIgb2YgYXJndW1l
bnRzCiAgKiBAcGFyYW0gYXJncyBBcnJheSB0byAnXDAnLXRlcm1pbmF0ZWQgYXJndW1lbnRzCiAg
Ki8KLXZvaWQgdWtwbGF0X2VudHJ5KGludCBhcmdjLCBjaGFyICphcmd2W10pIF9fbm9yZXR1cm47
Cit2b2lkIHVrcGxhdF9lbnRyeShzdHJ1Y3QgbWFpbl9hcmcgKmFyZykgX19ub3JldHVybjsKIAog
LyoqCiAgKiBDYWxsZWQgYnkgcGxhdGZvcm0gbGlicmFyeSBkdXJpbmcgaW5pdGlhbGl6YXRpb24K
ZGlmZiAtLWdpdCBhL2xpYi91a2Jvb3QvYm9vdC5jIGIvbGliL3VrYm9vdC9ib290LmMKaW5kZXgg
NGRjYzBhZmIuLjVjYzNiNTczIDEwMDY0NAotLS0gYS9saWIvdWtib290L2Jvb3QuYworKysgYi9s
aWIvdWtib290L2Jvb3QuYwpAQCAtNjgsMTcgKzY4LDEzIEBAIGV4dGVybiBpbnQgbGlibHdpcF9p
bml0KHZvaWQpOwogI2VuZGlmIC8qIENPTkZJR19MSUJMV0lQICovCiAKIHN0YXRpYyB2b2lkIG1h
aW5fdGhyZWFkX2Z1bmModm9pZCAqYXJnKSBfX25vcmV0dXJuOwotCi1zdHJ1Y3QgdGhyZWFkX21h
aW5fYXJnIHsKLQlpbnQgYXJnYzsKLQljaGFyICoqYXJndjsKLX07CitzdHJ1Y3QgbWFpbl9hcmcg
Z2xvYmFsX21haW5fYXJnOwogCiBzdGF0aWMgdm9pZCBtYWluX3RocmVhZF9mdW5jKHZvaWQgKmFy
ZykKIHsKIAlpbnQgaTsKIAlpbnQgcmV0OwotCXN0cnVjdCB0aHJlYWRfbWFpbl9hcmcgKnRtYSA9
IGFyZzsKKwlzdHJ1Y3QgbWFpbl9hcmcgKnRtYSA9IGFyZzsKIAogCXVrX3ByX2luZm8oIlByZS1p
bml0IHRhYmxlIGF0ICVwIC0gJXBcbiIsCiAJCSAgIF9fcHJlaW5pdF9hcnJheV9zdGFydCwgJl9f
cHJlaW5pdF9hcnJheV9lbmQpOwpAQCAtMTQ1LDI2ICsxNDEsMjYgQEAgc3RhdGljIHZvaWQgbWFp
bl90aHJlYWRfZnVuYyh2b2lkICphcmcpCiAvKiBkZWZpbmVkIGluIDx1ay9wbGF0Lmg+ICovCiB2
b2lkIHVrcGxhdF9lbnRyeV9hcmdwKGNoYXIgKmFyZzAsIGNoYXIgKmFyZ2IsIF9fc3ogYXJnYl9s
ZW4pCiB7Ci0JY2hhciAqYXJndltDT05GSUdfTElCVUtCT09UX01BWE5CQVJHU107Ci0JaW50IGFy
Z2MgPSAwOworCWdsb2JhbF9tYWluX2FyZy5hcmdjID0gMDsKIAogCWlmIChhcmcwKSB7Ci0JCWFy
Z3ZbMF0gPSBhcmcwOwotCQlhcmdjICs9IDE7CisJCWdsb2JhbF9tYWluX2FyZy5hcmd2WzBdID0g
YXJnMDsKKwkJZ2xvYmFsX21haW5fYXJnLmFyZ2MgKz0gMTsKIAl9CiAJaWYgKGFyZ2IgJiYgYXJn
Yl9sZW4pIHsKLQkJYXJnYyArPSB1a19hcmducGFyc2UoYXJnYiwgYXJnYl9sZW4sIGFyZzAgPyAm
YXJndlsxXSA6ICZhcmd2WzBdLAorCQlnbG9iYWxfbWFpbl9hcmcuYXJnYyArPSB1a19hcmducGFy
c2UoYXJnYiwgYXJnYl9sZW4sCisJCQkJICAgICBhcmcwID8gJmdsb2JhbF9tYWluX2FyZy5hcmd2
WzFdCisJCQkJCSAgOiAmZ2xvYmFsX21haW5fYXJnLmFyZ3ZbMF0sCiAJCQkJICAgICBhcmcwID8g
KENPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTIC0gMSkKIAkJCQkJICA6IENPTkZJR19MSUJVS0JP
T1RfTUFYTkJBUkdTKTsKIAl9Ci0JdWtwbGF0X2VudHJ5KGFyZ2MsIGFyZ3YpOworCXVrcGxhdF9l
bnRyeSgmZ2xvYmFsX21haW5fYXJnKTsKIH0KIAogLyogZGVmaW5lZCBpbiA8dWsvcGxhdC5oPiAq
Lwotdm9pZCB1a3BsYXRfZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3ZvaWQgdWtwbGF0
X2VudHJ5KHN0cnVjdCBtYWluX2FyZyAqYXJnKQogewogCWNvbnN0IHVrX2N0b3JfZnVuY190ICpj
Zm47Ci0Jc3RydWN0IHRocmVhZF9tYWluX2FyZyB0bWE7CiAjaWYgQ09ORklHX0xJQlVLQUxMT0MK
IAlzdHJ1Y3QgdWtfYWxsb2MgKmEgPSBOVUxMOwogCWludCByYzsKQEAgLTIzNCwxOSArMjMwLDE0
IEBAIHZvaWQgdWtwbGF0X2VudHJ5KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJcyA9IHVrX3Nj
aGVkX2RlZmF1bHRfaW5pdChhKTsKIAlpZiAodW5saWtlbHkoIXMpKQogCQlVS19DUkFTSCgiQ291
bGQgbm90IGluaXRpYWxpemUgdGhlIHNjaGVkdWxlclxuIik7Ci0jZW5kaWYKIAotCXRtYS5hcmdj
ID0gYXJnYzsKLQl0bWEuYXJndiA9IGFyZ3Y7Ci0KLSNpZiBDT05GSUdfTElCVUtTQ0hFRAotCW1h
aW5fdGhyZWFkID0gdWtfdGhyZWFkX2NyZWF0ZSgibWFpbiIsIG1haW5fdGhyZWFkX2Z1bmMsICZ0
bWEpOworCW1haW5fdGhyZWFkID0gdWtfdGhyZWFkX2NyZWF0ZSgibWFpbiIsIG1haW5fdGhyZWFk
X2Z1bmMsIGFyZyk7CiAJaWYgKHVubGlrZWx5KCFtYWluX3RocmVhZCkpCiAJCVVLX0NSQVNIKCJD
b3VsZCBub3QgY3JlYXRlIG1haW4gdGhyZWFkXG4iKTsKIAl1a19zY2hlZF9zdGFydChzKTsKICNl
bHNlCiAJLyogRW5hYmxlIGludGVycnVwdHMgYmVmb3JlIHN0YXJ0aW5nIHRoZSBhcHBsaWNhdGlv
biAqLwogCXVrcGxhdF9sY3B1X2VuYWJsZV9pcnEoKTsKLQltYWluX3RocmVhZF9mdW5jKCZ0bWEp
OworCW1haW5fdGhyZWFkX2Z1bmMoYXJnKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvbGliL3Vr
Ym9vdC9leHBvcnRzeW1zLnVrIGIvbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrCmluZGV4IDNlZGM2
YzZhLi5hZGJiODRmYiAxMDA2NDQKLS0tIGEvbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrCisrKyBi
L2xpYi91a2Jvb3QvZXhwb3J0c3ltcy51awpAQCAtMSwzICsxLDQgQEAKIHVrcGxhdF9lbnRyeV9h
cmdwCiB1a3BsYXRfZW50cnkKK2dsb2JhbF9tYWluX2FyZwogbWFpbgpkaWZmIC0tZ2l0IGEvcGxh
dC9saW51eHUvc2V0dXAuYyBiL3BsYXQvbGludXh1L3NldHVwLmMKaW5kZXggNTA0NTQ0MzcuLjRm
NmY1Njg4IDEwMDY0NAotLS0gYS9wbGF0L2xpbnV4dS9zZXR1cC5jCisrKyBiL3BsYXQvbGludXh1
L3NldHVwLmMKQEAgLTE3Miw2ICsxNzIsMTEgQEAgdm9pZCBfbGlibGludXh1cGxhdF9lbnRyeShp
bnQgYXJnYywgY2hhciAqYXJndltdKQogCWFyZ3YgKz0gKHJldCAtIDEpOwogCWFyZ3ZbMF0gPSBw
cm9nbmFtZTsKIAorCS8qIFNldHVwIGdsb2JhbCBhcmd1bWVudHMgKi8KKwlnbG9iYWxfbWFpbl9h
cmcuYXJnYyA9IGFyZ2M7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspCisJCWdsb2Jh
bF9tYWluX2FyZy5hcmd2W2ldID0gYXJndltpXTsKKwogCS8qCiAJICogQWxsb2NhdGUgaGVhcCBt
ZW1vcnkKIAkgKi8KQEAgLTE4Niw1ICsxOTEsNSBAQCB2b2lkIF9saWJsaW51eHVwbGF0X2VudHJ5
KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyoKIAkgKiBFbnRlciBVbmlrcmFmdAogCSAqLwot
CXVrcGxhdF9lbnRyeShhcmdjLCBhcmd2KTsKKwl1a3BsYXRfZW50cnkoJmdsb2JhbF9tYWluX2Fy
Zyk7CiB9Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 08:56:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 08:56: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 1hYoC1-0005dL-Lt; Thu, 06 Jun 2019 08: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=eeQM=UF=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYoBz-0005dB-Px
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 08:56:15 +0000
X-Inumbo-ID: edacb0ea-8838-11e9-8e4a-27fccf31f542
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id edacb0ea-8838-11e9-8e4a-27fccf31f542;
 Thu, 06 Jun 2019 08:56:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 9FC6E1048E8;
 Thu,  6 Jun 2019 10:55:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tvfCyTb9FsdG; Thu,  6 Jun 2019 10:55:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 81BB81000F2
 for <minios-devel@lists.xen.org>; Thu,  6 Jun 2019 10:55:53 +0200 (CEST)
Received: from vortex.office.hd (10.1.2.30) by skoll.office.hd
 (192.168.125.11) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 6 Jun
 2019 10:55:53 +0200
From: Florian Schmidt <florian.schmidt@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Thu, 6 Jun 2019 10:55:44 +0200
Message-ID: <20190606085544.11827-1-florian.schmidt@neclab.eu>
X-Mailer: git-send-email 2.21.0
MIME-Version: 1.0
X-Originating-IP: [10.1.2.30]
Subject: [Minios-devel] [UNIKRAFT PATCH] MAINTAINERS.md: Remove myself
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Florian Schmidt <florian.schmidt@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan Santhanam <sharan.santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SXQgaXMgdW5jbGVhciBob3cgbXVjaCBJIHdpbGwgYmUgYWJsZSB0byBjb250cmlidXRlIGluIHRo
ZSBmdXR1cmUuClNoYXJhbiBoYXMgYWdyZWVkIHRvIHRha2Ugb3ZlciBtYWludGFpbmVyc2hpcCBm
b3Igc29tZSBsaWJyYXJpZXMuCgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFNjaG1pZHQgPGZsb3Jp
YW4uc2NobWlkdEBuZWNsYWIuZXU+ClNpZ25lZC1vZmYtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNo
YXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIE1BSU5UQUlORVJTLm1kIHwgMTAgKysrLS0t
LS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kCmluZGV4IDM3N2M2NDc5
Li5lM2ViODk4ZCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMubWQKKysrIGIvTUFJTlRBSU5FUlMu
bWQKQEAgLTY4LDE0ICs2OCwxNCBAQCBUcnkgdG8gbG9vayBmb3IgdGhlIG1vc3QgcHJlY2lzZSBh
cmVhcyBmaXJzdC4gSW4gY2FzZSBub3RoaW5nIGZpdHMgdXNlCiAKIAlMSU5VWCBVU0VSU1BBQ0Ug
UExBVEZPUk0gKFg4Nl82NCwgQVJNMzIpCiAJTToJU2ltb24gS3VlbnplciA8c2ltb24ua3Vlbnpl
ckBuZWNsYWIuZXU+Ci0JTToJRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFi
LmV1PgorCU06CVNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pgog
CUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnCiAJRjogcGxhdC9saW51eHUvKgogCiAJS1ZN
IFBMQVRGT1JNIChYODYpCiAJTToJU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIu
ZXU+CiAJTToJRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotCU06CUZsb3Jp
YW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KKwlNOglTaGFyYW4gU2FudGhh
bmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KIAlMOgltaW5pb3MtZGV2ZWxAbGlzdHMu
eGVuLm9yZwogCUY6IHBsYXQvbGludXh1LyoKIApAQCAtODYsMTkgKzg2LDE2IEBAIFRyeSB0byBs
b29rIGZvciB0aGUgbW9zdCBwcmVjaXNlIGFyZWFzIGZpcnN0LiBJbiBjYXNlIG5vdGhpbmcgZml0
cyB1c2UKIAogCUxJQk5PTElCQwogCU06CVNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVj
bGFiLmV1PgotCU06CUZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
IAlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZwogCUY6IGxpYi9ub2xpYmMvKgogCiAJTElC
VUtBTExPQwotCU06CUZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4K
IAlNOglTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KIAlMOgltaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVuLm9yZwogCUY6IGxpYi91a2FsbG9jLyoKIAogCUxJQlVLQUxMT0NCQlVE
RFkKIAlNOglTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLQlNOglGbG9y
aWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+CiAJTDoJbWluaW9zLWRldmVs
QGxpc3RzLnhlbi5vcmcKIAlGOiBsaWIvdWthbGxvY2JidWRkeS8qCiAKQEAgLTEyNiwxMiArMTIz
LDExIEBAIFRyeSB0byBsb29rIGZvciB0aGUgbW9zdCBwcmVjaXNlIGFyZWFzIGZpcnN0LiBJbiBj
YXNlIG5vdGhpbmcgZml0cyB1c2UKIAogCUxJQlVLREVCVUcKIAlNOglTaW1vbiBLdWVuemVyIDxz
aW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KLQlNOglGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2No
bWlkdEBuZWNsYWIuZXU+CiAJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKIAlGOiBsaWIv
dWtkZWJ1Zy8qCiAKIAlVTklLUkFGVCBHRU5FUkFMCiAJTToJU2ltb24gS3VlbnplciA8c2ltb24u
a3VlbnplckBuZWNsYWIuZXU+Ci0JTToJRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRA
bmVjbGFiLmV1PgorCU06CVNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFi
LmV1PgogCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KIAlMOgltaW5p
b3MtZGV2ZWxAbGlzdHMueGVuLm9yZwotLSAKMi4yMS4wCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 09:35:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 09:35: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 1hYonX-0002fx-3g; Thu, 06 Jun 2019 09:35:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=EhTR=UF=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYonV-0002fs-V0
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 09:35:01 +0000
X-Inumbo-ID: 59415609-883e-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 59415609-883e-11e9-8980-bc764e045a96;
 Thu, 06 Jun 2019 09:34:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7462CF200E;
 Thu,  6 Jun 2019 11:34:57 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id pn0_CljVgADQ; Thu,  6 Jun 2019 11:34:57 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 48EEDF2005;
 Thu,  6 Jun 2019 11:34:53 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 6 Jun 2019 11:34:53
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190605195509.2401-1-costin.lupu@cs.pub.ro>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <93ced017-2652-ea7d-8660-8d29e3136587@neclab.eu>
Date: Thu, 6 Jun 2019 11:34:52 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605195509.2401-1-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: Fix handling of
 main arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, sharan.santhanam@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>

SGV5IENvc3RpbiwKCnRoYW5rcyBhIGxvdCBmb3IgdGhlIHBhdGNoLiBJIHRoaW5rIHRoZSBhY3R1
YWwgcHJvYmxlbSBpcyB0aGF0IHRoZSBib290IApzdGFjayBjb3VsZCBiZSByZWxlYXNlZCBsYXRl
ciBhZnRlciBib290IGZvciBzb21ldGhpbmcgZWxzZSwgc28gaXQgaXMgCm5vdCBndWFyYW50ZWVk
IGFueW1vcmUgdGhhdCB0aGUgYXJndW1lbnRzIGFyZSBzYWZlIGFuZCBzdGF5aW5nLgpIb3dldmVy
LCBJIGRvbid0IGFncmVlIHRvIG1ha2UgYXJndiBhbmQgYXJnYyBnbG9iYWwgYXZhaWxhYmxlLiBK
dXN0IAphbGxvY2F0ZSB0aGVtIGluIHRoZSBic3Mgc2VjdGlvbi4KU2VlIG15IGNvbW1lbnRzIGlu
bGluZS4KCk9uIDA1LjA2LjE5IDIxOjU1LCBDb3N0aW4gTHVwdSB3cm90ZToKPiBXaGVuIHRoZSBj
b21tYW5kIGxpbmUgaXMgcGFyc2VkIGFuZCBzcGxpdCBpbnRvIGFyZ3VtZW50cywgZWFjaCBhcmd1
bWVudAo+IGlzIHNhdmVkIGluIGFuIGFycmF5IG9mIHBvaW50ZXJzIGFsbG9jYXRlZCBvbiB0aGUg
c3RhY2sgKCdhcmd2JyBhcnJheSBpbgo+IHVrcGxhdF9lbnRyeV9hcmdwKCkpLiBUaGlzIG1lYW5z
IHRoYXQgdGhlIGFycmF5IGNhbiBiZSBvdmVyd3JpdHRlbiBhbnkKPiB0aW1lIGJlZm9yZSBzdGFy
dGluZyB0aGUgbWFpbiB0aHJlYWQgd2hpY2ggbmVlZHMgdGhlIGFyZ3VtZW50cy4gVGhpcwo+IHBh
dGNoIGZpeGVzIHRoYXQgYnkgbWFraW5nIHRoZSBhcnJheSBnbG9iYWwsIGVuY2Fwc3VsYXRlZCBi
eSB0aGUKPiAnbWFpbl9hcmcnIHN0cnVjdHVyZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4g
THVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+IC0tLQo+ICAgaW5jbHVkZS91ay9wbGF0L2Jv
b3RzdHJhcC5oIHwgMTEgKysrKysrKysrKy0KPiAgIGxpYi91a2Jvb3QvYm9vdC5jICAgICAgICAg
ICB8IDMzICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgbGliL3VrYm9vdC9l
eHBvcnRzeW1zLnVrICAgIHwgIDEgKwo+ICAgcGxhdC9saW51eHUvc2V0dXAuYyAgICAgICAgIHwg
IDcgKysrKysrLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyMyBkZWxl
dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5oIGIv
aW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5oCj4gaW5kZXggMDY1MmNjZDEuLmE5ZTQwNGU4IDEw
MDY0NAo+IC0tLSBhL2luY2x1ZGUvdWsvcGxhdC9ib290c3RyYXAuaAo+ICsrKyBiL2luY2x1ZGUv
dWsvcGxhdC9ib290c3RyYXAuaAo+IEBAIC0zNiw2ICszNiw3IEBACj4gICAjaWZuZGVmIF9fVUtQ
TEFUX0JPT1RTVFJBUF9fCj4gICAjZGVmaW5lIF9fVUtQTEFUX0JPT1RTVFJBUF9fCj4gICAKPiAr
I2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICAgI2luY2x1ZGUgPHVrL2FyY2gvdHlwZXMuaD4KPiAg
ICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gICAKPiBAQCAtNDMsNiArNDQsMTQgQEAKPiAg
IGV4dGVybiAiQyIgewo+ICAgI2VuZGlmCj4gICAKPiArLyogTWFpbiBhcmd1bWVudHMgc3RydWN0
dXJlICovCj4gK3N0cnVjdCBtYWluX2FyZyB7Cj4gKwlpbnQgYXJnYzsKPiArCWNoYXIgKmFyZ3Zb
Q09ORklHX0xJQlVLQk9PVF9NQVhOQkFSR1NdOwo+ICt9Owo+ICsvKiBNYWluIGFyZ3VtZW50cyAq
Lwo+ICtleHRlcm4gc3RydWN0IG1haW5fYXJnIGdsb2JhbF9tYWluX2FyZzsKPiArCj4gICAvKioK
PiAgICAqIENhbGxlZCBieSBwbGF0Zm9ybSBsaWJyYXJ5IGR1cmluZyBpbml0aWFsaXphdGlvbgo+
ICAgICogVGhpcyBmdW5jdGlvbiBoYXMgdG8gYmUgcHJvdmlkZWQgYnkgYSBub24tcGxhdGZvcm0g
bGlicmFyeSBmb3IgYm9vdHN0cmFwcGluZwo+IEBAIC01Miw3ICs2MSw3IEBAIGV4dGVybiAiQyIg
ewo+ICAgICogQHBhcmFtIGFyZ2MgTnVtYmVyIG9mIGFyZ3VtZW50cwo+ICAgICogQHBhcmFtIGFy
Z3MgQXJyYXkgdG8gJ1wwJy10ZXJtaW5hdGVkIGFyZ3VtZW50cwo+ICAgICovCj4gLXZvaWQgdWtw
bGF0X2VudHJ5KGludCBhcmdjLCBjaGFyICphcmd2W10pIF9fbm9yZXR1cm47Cj4gK3ZvaWQgdWtw
bGF0X2VudHJ5KHN0cnVjdCBtYWluX2FyZyAqYXJnKSBfX25vcmV0dXJuOwo+ICAgCj4gICAvKioK
PiAgICAqIENhbGxlZCBieSBwbGF0Zm9ybSBsaWJyYXJ5IGR1cmluZyBpbml0aWFsaXphdGlvbgo+
IGRpZmYgLS1naXQgYS9saWIvdWtib290L2Jvb3QuYyBiL2xpYi91a2Jvb3QvYm9vdC5jCj4gaW5k
ZXggNGRjYzBhZmIuLjVjYzNiNTczIDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jvb3QvYm9vdC5jCj4g
KysrIGIvbGliL3VrYm9vdC9ib290LmMKPiBAQCAtNjgsMTcgKzY4LDEzIEBAIGV4dGVybiBpbnQg
bGlibHdpcF9pbml0KHZvaWQpOwo+ICAgI2VuZGlmIC8qIENPTkZJR19MSUJMV0lQICovCj4gICAK
PiAgIHN0YXRpYyB2b2lkIG1haW5fdGhyZWFkX2Z1bmModm9pZCAqYXJnKSBfX25vcmV0dXJuOwo+
IC0KPiAtc3RydWN0IHRocmVhZF9tYWluX2FyZyB7Cj4gLQlpbnQgYXJnYzsKPiAtCWNoYXIgKiph
cmd2Owo+IC19Owo+ICtzdHJ1Y3QgbWFpbl9hcmcgZ2xvYmFsX21haW5fYXJnOwo+ICAgCj4gICBz
dGF0aWMgdm9pZCBtYWluX3RocmVhZF9mdW5jKHZvaWQgKmFyZykKPiAgIHsKPiAgIAlpbnQgaTsK
PiAgIAlpbnQgcmV0Owo+IC0Jc3RydWN0IHRocmVhZF9tYWluX2FyZyAqdG1hID0gYXJnOwo+ICsJ
c3RydWN0IG1haW5fYXJnICp0bWEgPSBhcmc7Cj4gICAKPiAgIAl1a19wcl9pbmZvKCJQcmUtaW5p
dCB0YWJsZSBhdCAlcCAtICVwXG4iLAo+ICAgCQkgICBfX3ByZWluaXRfYXJyYXlfc3RhcnQsICZf
X3ByZWluaXRfYXJyYXlfZW5kKTsKPiBAQCAtMTQ1LDI2ICsxNDEsMjYgQEAgc3RhdGljIHZvaWQg
bWFpbl90aHJlYWRfZnVuYyh2b2lkICphcmcpCj4gICAvKiBkZWZpbmVkIGluIDx1ay9wbGF0Lmg+
ICovCj4gICB2b2lkIHVrcGxhdF9lbnRyeV9hcmdwKGNoYXIgKmFyZzAsIGNoYXIgKmFyZ2IsIF9f
c3ogYXJnYl9sZW4pCj4gICB7Cj4gLQljaGFyICphcmd2W0NPTkZJR19MSUJVS0JPT1RfTUFYTkJB
UkdTXTsKCkp1c3QgZGVjbGFyZQoJY2hhciAqYXJndltDT05GSUdfTElCVUtCT09UX01BWE5CQVJH
U107CmFzCglzdGF0aWMgY2hhciAqYXJndltDT05GSUdfTElCVUtCT09UX01BWE5CQVJHU107CgpU
aGUgc2FtZSBmb3IgYXJnYy4KCldlIGFsc28gbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBvdXIg
c3RyaW5nIGJ1ZmZlciB3aXRoIHRoZSBhcmd1bWVudHMgCih3aGVyZSBhcmd2IGlzIHBvaW50aW5n
IHRvKSwgaXMgbm90IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgaW4gdGhlIApwbGF0Zm9ybS4gSWYg
dGhpcyBpcyB0aGUgY2FzZSwgd2UgYXJlIHNhZmUuCgo+IC0JaW50IGFyZ2MgPSAwOwo+ICsJZ2xv
YmFsX21haW5fYXJnLmFyZ2MgPSAwOwo+ICAgCj4gICAJaWYgKGFyZzApIHsKPiAtCQlhcmd2WzBd
ID0gYXJnMDsKPiAtCQlhcmdjICs9IDE7Cj4gKwkJZ2xvYmFsX21haW5fYXJnLmFyZ3ZbMF0gPSBh
cmcwOwo+ICsJCWdsb2JhbF9tYWluX2FyZy5hcmdjICs9IDE7Cj4gICAJfQo+ICAgCWlmIChhcmdi
ICYmIGFyZ2JfbGVuKSB7Cj4gLQkJYXJnYyArPSB1a19hcmducGFyc2UoYXJnYiwgYXJnYl9sZW4s
IGFyZzAgPyAmYXJndlsxXSA6ICZhcmd2WzBdLAo+ICsJCWdsb2JhbF9tYWluX2FyZy5hcmdjICs9
IHVrX2FyZ25wYXJzZShhcmdiLCBhcmdiX2xlbiwKPiArCQkJCSAgICAgYXJnMCA/ICZnbG9iYWxf
bWFpbl9hcmcuYXJndlsxXQo+ICsJCQkJCSAgOiAmZ2xvYmFsX21haW5fYXJnLmFyZ3ZbMF0sCj4g
ICAJCQkJICAgICBhcmcwID8gKENPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTIC0gMSkKPiAgIAkJ
CQkJICA6IENPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTKTsKPiAgIAl9Cj4gLQl1a3BsYXRfZW50
cnkoYXJnYywgYXJndik7Cj4gKwl1a3BsYXRfZW50cnkoJmdsb2JhbF9tYWluX2FyZyk7CgpJZiB5
b3UgZGVjbGFyZSB0aGUgYXJndW1lbnRzIGFzIGdsb2JhbCB5b3UgZG8gbm90IG5lZWQgdG8gaGFu
ZCB0aGVtIG92ZXIgCmFueW1vcmUsIGJ1dCBhcyBJIHNhaWQgSSB3b3VsZCBub3QgY2hhbmdlIHRo
aXMgYXQgYWxsLgoKPiAgIH0KPiAgIAo+ICAgLyogZGVmaW5lZCBpbiA8dWsvcGxhdC5oPiAqLwo+
IC12b2lkIHVrcGxhdF9lbnRyeShpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICt2b2lkIHVrcGxh
dF9lbnRyeShzdHJ1Y3QgbWFpbl9hcmcgKmFyZykKPiAgIHsKPiAgIAljb25zdCB1a19jdG9yX2Z1
bmNfdCAqY2ZuOwo+IC0Jc3RydWN0IHRocmVhZF9tYWluX2FyZyB0bWE7Cj4gICAjaWYgQ09ORklH
X0xJQlVLQUxMT0MKPiAgIAlzdHJ1Y3QgdWtfYWxsb2MgKmEgPSBOVUxMOwo+ICAgCWludCByYzsK
PiBAQCAtMjM0LDE5ICsyMzAsMTQgQEAgdm9pZCB1a3BsYXRfZW50cnkoaW50IGFyZ2MsIGNoYXIg
KmFyZ3ZbXSkKPiAgIAlzID0gdWtfc2NoZWRfZGVmYXVsdF9pbml0KGEpOwo+ICAgCWlmICh1bmxp
a2VseSghcykpCj4gICAJCVVLX0NSQVNIKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSB0aGUgc2NoZWR1
bGVyXG4iKTsKPiAtI2VuZGlmCj4gICAKPiAtCXRtYS5hcmdjID0gYXJnYzsKPiAtCXRtYS5hcmd2
ID0gYXJndjsKPiAtCj4gLSNpZiBDT05GSUdfTElCVUtTQ0hFRAo+IC0JbWFpbl90aHJlYWQgPSB1
a190aHJlYWRfY3JlYXRlKCJtYWluIiwgbWFpbl90aHJlYWRfZnVuYywgJnRtYSk7Cj4gKwltYWlu
X3RocmVhZCA9IHVrX3RocmVhZF9jcmVhdGUoIm1haW4iLCBtYWluX3RocmVhZF9mdW5jLCBhcmcp
Owo+ICAgCWlmICh1bmxpa2VseSghbWFpbl90aHJlYWQpKQo+ICAgCQlVS19DUkFTSCgiQ291bGQg
bm90IGNyZWF0ZSBtYWluIHRocmVhZFxuIik7Cj4gICAJdWtfc2NoZWRfc3RhcnQocyk7Cj4gICAj
ZWxzZQo+ICAgCS8qIEVuYWJsZSBpbnRlcnJ1cHRzIGJlZm9yZSBzdGFydGluZyB0aGUgYXBwbGlj
YXRpb24gKi8KPiAgIAl1a3BsYXRfbGNwdV9lbmFibGVfaXJxKCk7Cj4gLQltYWluX3RocmVhZF9m
dW5jKCZ0bWEpOwo+ICsJbWFpbl90aHJlYWRfZnVuYyhhcmcpOwo+ICAgI2VuZGlmCj4gICB9Cj4g
ZGlmZiAtLWdpdCBhL2xpYi91a2Jvb3QvZXhwb3J0c3ltcy51ayBiL2xpYi91a2Jvb3QvZXhwb3J0
c3ltcy51awo+IGluZGV4IDNlZGM2YzZhLi5hZGJiODRmYiAxMDA2NDQKPiAtLS0gYS9saWIvdWti
b290L2V4cG9ydHN5bXMudWsKPiArKysgYi9saWIvdWtib290L2V4cG9ydHN5bXMudWsKPiBAQCAt
MSwzICsxLDQgQEAKPiAgIHVrcGxhdF9lbnRyeV9hcmdwCj4gICB1a3BsYXRfZW50cnkKPiArZ2xv
YmFsX21haW5fYXJnCj4gICBtYWluCj4gZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L3NldHVwLmMg
Yi9wbGF0L2xpbnV4dS9zZXR1cC5jCj4gaW5kZXggNTA0NTQ0MzcuLjRmNmY1Njg4IDEwMDY0NAo+
IC0tLSBhL3BsYXQvbGludXh1L3NldHVwLmMKPiArKysgYi9wbGF0L2xpbnV4dS9zZXR1cC5jCj4g
QEAgLTE3Miw2ICsxNzIsMTEgQEAgdm9pZCBfbGlibGludXh1cGxhdF9lbnRyeShpbnQgYXJnYywg
Y2hhciAqYXJndltdKQo+ICAgCWFyZ3YgKz0gKHJldCAtIDEpOwo+ICAgCWFyZ3ZbMF0gPSBwcm9n
bmFtZTsKCk1ha2UgYWxzbyBzdXJlIHRoYXQgYXJndiBhbmQgYXJnYyBhcmUgZGVjbGFyZWQgYXMg
c3RhdGljIGhlcmUsIGluc3RlYWQuCgo+ICAgCj4gKwkvKiBTZXR1cCBnbG9iYWwgYXJndW1lbnRz
ICovCj4gKwlnbG9iYWxfbWFpbl9hcmcuYXJnYyA9IGFyZ2M7Cj4gKwlmb3IgKGludCBpID0gMDsg
aSA8IGFyZ2M7IGkrKykKPiArCQlnbG9iYWxfbWFpbl9hcmcuYXJndltpXSA9IGFyZ3ZbaV07Cj4g
Kwo+ICAgCS8qCj4gICAJICogQWxsb2NhdGUgaGVhcCBtZW1vcnkKPiAgIAkgKi8KPiBAQCAtMTg2
LDUgKzE5MSw1IEBAIHZvaWQgX2xpYmxpbnV4dXBsYXRfZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFy
Z3ZbXSkKPiAgIAkvKgo+ICAgCSAqIEVudGVyIFVuaWtyYWZ0Cj4gICAJICovCj4gLQl1a3BsYXRf
ZW50cnkoYXJnYywgYXJndik7Cj4gKwl1a3BsYXRfZW50cnkoJmdsb2JhbF9tYWluX2FyZyk7Cj4g
ICB9Cj4gCgpUaGFua3MsCgpTaW1vbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 09:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 09:36: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 1hYoof-0002wF-8y; Thu, 06 Jun 2019 09:36:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ZPyM=UF=neclab.eu=yuri.volchkov@srs-us1.protection.inumbo.net>)
 id 1hYood-0002wA-Tf
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 09:36:11 +0000
X-Inumbo-ID: 8455a9b8-883e-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8455a9b8-883e-11e9-8980-bc764e045a96;
 Thu, 06 Jun 2019 09:36:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id AE59E10526C;
 Thu,  6 Jun 2019 11:34:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id d9wzzhGJJwkG; Thu,  6 Jun 2019 11:34:19 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 8DA77104F65
 for <minios-devel@lists.xen.org>; Thu,  6 Jun 2019 11:34:19 +0200 (CEST)
Received: from localhost (10.1.2.20) by skoll.office.hd (192.168.125.11) with
 Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 6 Jun 2019 11:34:19 +0200
From: Yuri Volchkov <yuri.volchkov@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
In-Reply-To: <66e7992f-a6ac-2ca4-0455-95bb0771b446@neclab.eu>
References: <20190604162844.2712-1-yuri.volchkov@neclab.eu>
 <20190604162844.2712-6-yuri.volchkov@neclab.eu>
 <66e7992f-a6ac-2ca4-0455-95bb0771b446@neclab.eu>
Date: Thu, 6 Jun 2019 11:34:16 +0200
Message-ID: <tza4s2r287vyzr.fsf@N-1128.office.hd>
MIME-Version: 1.0
X-Originating-IP: [10.1.2.20]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 05/10] lib/syscall_shim:
 generate base headers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

U2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+IHdyaXRlczoKCj4gT24gMDQu
MDYuMTkgMTg6MjgsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4+IFRoZSBmb2xsb3dpbmcgaGVhZGVy
cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb2RlIGluIHRoaXMgcGF0Y2g6Cj4+ICAgIC0gc3lzY2Fs
bF9ucnMuaCAtIGp1c3QgZGVmaW5pdGlvbnMgb2YgYWxsIHRoZSBzeXNjYWxscyB3aXRoIHRoZWly
Cj4+ICAgICAgbnVtYmVycwo+PiAgICAtIHN5c2NhbGxfbWFwLmggIC0gcHJvdmlkZXMgbWFwcyBm
cm9tIHN5c2NhbGwgbnVtYmVyIHRvIGEgY29uY3JldGUKPj4gICAgICBmdW5jdGlvbiBpbiB0aGUg
VW5pa2FyZnQKPj4gICAgLSBzeXNjYWxsX3N0dWJzLmggLSBpZiBubyBsaWJyYXJ5IGlzIHByb3Zp
ZGluZyBhIHN5c2NhbGwsIGl0IHdpbGwgYmUKPj4gICAgICByZXNvbHZlZCB0byBhIHN0dWIsIGRl
ZmluZWQgaW4gdGhpcyBmaWxlCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5
dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPj4gLS0tCj4+ICAgbGliL0NvbmZpZy51ayAgICAgICAg
ICAgICAgICAgIHwgIDEgKwo+PiAgIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8ICAx
ICsKPj4gICBsaWIvc3lzY2FsbF9zaGltL0NvbmZpZy51ayAgICAgfCAgMyArKysKPj4gICBsaWIv
c3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCj4+ICAgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrIHwgIDggKysrKysr
Kwo+PiAgIDUgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL0NvbmZpZy51awo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi9zeXNjYWxsX3NoaW0vZ2VuX3N0dWJzLmF3awo+PiAKPj4gKwo+PiArX19QSE9OWV9HRU5fU1JD
IDo9IHN5c2NhbGxfbWFwLmggc3lzY2FsbF9zdHVicy5oIHN5c2NhbGxfbnJzLmgKPj4gK19fUEhP
TllfR0VOX1NSQyA6PSAkKGFkZHByZWZpeCAkKF9fR0VOX0lOQ0xVREVTX1BBVEgpLywgJChfX1BI
T05ZX0dFTl9TUkMpKQo+PiArX19QSE9OWV9HRU5fU1JDX05FVyA6PSAkKGFkZHN1ZmZpeCAubmV3
LCAkKF9fUEhPTllfR0VOX1NSQykpCj4+ICsKPj4gK1VLX1BSRVBBUkUtJChDT05GSUdfTElCU1lT
Q0FMTF9TSElNKSArPSAkKF9fUEhPTllfR0VOX1NSQykKPj4gKwo+PiArCj4+ICtfX1NZU0NBTExf
U0hJTV9URU1QTCA6PSAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9hcmNoLyQoQ09ORklHX1VLX0FS
Q0gpL3N5c2NhbGwuaC5pbgo+PiArCj4+ICskKGNhbGwgdWtfbWtfZGlyLCAkKF9fR0VOX0lOQ0xV
REVTX1BBVEgpKQo+Cj4gSHVtLCBub3cgSSB1bmRlcnN0YW5kIHdoYXQgeW91IHdhbnQgdG8gZG8u
IEluIHRoaXMgY2FzZSB5b3UgYXJlIGx1Y2t5IAo+IGFuZCBjcmVhdGUgYSBkaXJlY3RvcnkgdW5k
ZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeS4gTWF5YmUgYSAKPiBgbWtfbGliX3N1Yl9kaXJgIHdvdWxk
IG1ha2UgbW9yZSBzZW5zZSB0aGFuIGEgZ2VuZXJhbCBgdWtfbWtfZGlyYC4gSSAKPiBjb3VsZCBp
bWFnaW5lIHRoZSBmb2xsb3dpbmcgc3ludGF4IHdpdGhpbiB0aGlzIGZpbGU6CkZvciBub3cgSSBq
dXN0IHJlbW92ZWQgdGhlIHBhdGNoIGludHJvZHVjdGlvbiB1a19ta19kaXIsIGFuZCBjYWxsZWQg
dGhlCm1rZGlyIGRpcmVjdGx5LiBCZWNhdXNlIHdlIGFscmVhZHkgaGF2ZSBhIGZ1bmN0aW9uIGNh
bGxlZAonbWtfc3ViX2J1aWxkX2RpcicsIGJ1dCBpdCBkb2VzIG5vdCBkbyB3aGF0IHdlIHdvdWxk
IG5lZWQuIEFzIGEgdGltZSBpcwpwcmVzc2luZyBJIGhhdmUgY3V0IHRoZSBjb3JuZXIgaGVyZS4K
CkBTaW1vbjoKTWF5IEkgYXNrIHlvdSB0byBkbyBhIGZvbGxvdyB1cCBwYXRjaCBhZnRlciB0aGlz
IGlzIHVwc3RyZWFtIGVkLCBhbmQgZG8KdGhpcyByaWdodD8KClRoYW5rIHlvdSEKPgo+ICQoY2Fs
bCBta19saWJfc3ViX2RpcixsaWJzeXNjYWxsX3NoaW0saW5jbHVkZS91ay9iaXRzKQo+Cj4gT3Ig
bWF5YmUgZXZlbjoKPgo+IF9fR0VOX0lOQ0xVREVTX1BBVEggOj0gJChjYWxsIGxpYl9zdWJfZGly
LGxpYnN5c2NhbGxfc2hpbSxpbmNsdWRlL3VrL2JpdHMpCj4KCi0tIApZdXJpIFZvbGNoa292ClNv
ZnR3YXJlIFNwZWNpYWxpc3QKCk5FQyBFdXJvcGUgTHRkCkt1cmbDvHJzdGVuLUFubGFnZSAzNgpE
LTY5MTE1IEhlaWRlbGJlcmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 09:40:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 09: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 1hYot5-0003Yc-Lr; Thu, 06 Jun 2019 09:40:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=EhTR=UF=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYot4-0003YX-4Q
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 09:40:46 +0000
X-Inumbo-ID: 263e3dc4-883f-11e9-9f8c-1b326db52ea8
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 263e3dc4-883f-11e9-9f8c-1b326db52ea8;
 Thu, 06 Jun 2019 09:40:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7542A1052D2;
 Thu,  6 Jun 2019 11:40:41 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id WQEuEFrucSzf; Thu,  6 Jun 2019 11:40:41 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5297A10526C
 for <minios-devel@lists.xen.org>; Thu,  6 Jun 2019 11:40:41 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 6 Jun 2019 11:40:40
 +0200
To: Florian Schmidt <florian.schmidt@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190606085544.11827-1-florian.schmidt@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <4ab6c1f8-5e7f-259e-2eb4-1d526486aeb0@neclab.eu>
Date: Thu, 6 Jun 2019 11:40:40 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190606085544.11827-1-florian.schmidt@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] MAINTAINERS.md: Remove myself
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <sharan.santhanam@neclab.eu>
Content-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>

SGV5IEZsb3JpYW4sCgppdCBpcyByZWFsbHkgc2FkIHRvIHNlZSB5b3UgbGVhdmluZy4gVGhhbmsg
eW91IHNvIG11Y2ggZm9yIGFsbCB5b3VyIAp3b3JrISBJIGhvcGUgd2UgKHlvdSwgdXMsIGFuZCB0
aGUgY29tbXVuaXR5KSB3aWxsIHN0aWxsIHN0YXkgaW4gdG91Y2guClRoYW5rcyB0byBTaGFyYW4s
IGZvciB0YWtpbmcgb3ZlciB0aGUgbWFpbnRhaW5lcnNoaXAuCgpUaGFua3MsCgpTaW1vbgoKUmV2
aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24gMDYu
MDYuMTkgMTA6NTUsIEZsb3JpYW4gU2NobWlkdCB3cm90ZToKPiBJdCBpcyB1bmNsZWFyIGhvdyBt
dWNoIEkgd2lsbCBiZSBhYmxlIHRvIGNvbnRyaWJ1dGUgaW4gdGhlIGZ1dHVyZS4KPiBTaGFyYW4g
aGFzIGFncmVlZCB0byB0YWtlIG92ZXIgbWFpbnRhaW5lcnNoaXAgZm9yIHNvbWUgbGlicmFyaWVz
Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5l
Y2xhYi5ldT4KPiBTaWduZWQtb2ZmLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhh
bmFtQG5lY2xhYi5ldT4KPiAtLS0KPiAgIE1BSU5UQUlORVJTLm1kIHwgMTAgKysrLS0tLS0tLQo+
ICAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiAKPiBk
aWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZAo+IGluZGV4IDM3N2M2
NDc5Li5lM2ViODk4ZCAxMDA2NDQKPiAtLS0gYS9NQUlOVEFJTkVSUy5tZAo+ICsrKyBiL01BSU5U
QUlORVJTLm1kCj4gQEAgLTY4LDE0ICs2OCwxNCBAQCBUcnkgdG8gbG9vayBmb3IgdGhlIG1vc3Qg
cHJlY2lzZSBhcmVhcyBmaXJzdC4gSW4gY2FzZSBub3RoaW5nIGZpdHMgdXNlCj4gICAKPiAgIAlM
SU5VWCBVU0VSU1BBQ0UgUExBVEZPUk0gKFg4Nl82NCwgQVJNMzIpCj4gICAJTToJU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLQlNOglGbG9yaWFuIFNjaG1pZHQgPGZs
b3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Cj4gKwlNOglTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4u
c2FudGhhbmFtQG5lY2xhYi5ldT4KPiAgIAlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZwo+
ICAgCUY6IHBsYXQvbGludXh1LyoKPiAgIAo+ICAgCUtWTSBQTEFURk9STSAoWDg2KQo+ICAgCU06
CVNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+ICAgCU06CUZlbGlwZSBI
dWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KPiAtCU06CUZsb3JpYW4gU2NobWlkdCA8Zmxv
cmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiArCU06CVNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5z
YW50aGFuYW1AbmVjbGFiLmV1Pgo+ICAgCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnCj4g
ICAJRjogcGxhdC9saW51eHUvKgo+ICAgCj4gQEAgLTg2LDE5ICs4NiwxNiBAQCBUcnkgdG8gbG9v
ayBmb3IgdGhlIG1vc3QgcHJlY2lzZSBhcmVhcyBmaXJzdC4gSW4gY2FzZSBub3RoaW5nIGZpdHMg
dXNlCj4gICAKPiAgIAlMSUJOT0xJQkMKPiAgIAlNOglTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVu
emVyQG5lY2xhYi5ldT4KPiAtCU06CUZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5l
Y2xhYi5ldT4KPiAgIAlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZwo+ICAgCUY6IGxpYi9u
b2xpYmMvKgo+ICAgCj4gICAJTElCVUtBTExPQwo+IC0JTToJRmxvcmlhbiBTY2htaWR0IDxmbG9y
aWFuLnNjaG1pZHRAbmVjbGFiLmV1Pgo+ICAgCU06CVNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56
ZXJAbmVjbGFiLmV1Pgo+ICAgCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnCj4gICAJRjog
bGliL3VrYWxsb2MvKgo+ICAgCj4gICAJTElCVUtBTExPQ0JCVUREWQo+ICAgCU06CVNpbW9uIEt1
ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0JTToJRmxvcmlhbiBTY2htaWR0IDxm
bG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pgo+ICAgCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4u
b3JnCj4gICAJRjogbGliL3VrYWxsb2NiYnVkZHkvKgo+ICAgCj4gQEAgLTEyNiwxMiArMTIzLDEx
IEBAIFRyeSB0byBsb29rIGZvciB0aGUgbW9zdCBwcmVjaXNlIGFyZWFzIGZpcnN0LiBJbiBjYXNl
IG5vdGhpbmcgZml0cyB1c2UKPiAgIAo+ICAgCUxJQlVLREVCVUcKPiAgIAlNOglTaW1vbiBLdWVu
emVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtCU06CUZsb3JpYW4gU2NobWlkdCA8Zmxv
cmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiAgIAlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9y
Zwo+ICAgCUY6IGxpYi91a2RlYnVnLyoKPiAgIAo+ICAgCVVOSUtSQUZUIEdFTkVSQUwKPiAgIAlN
OglTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtCU06CUZsb3JpYW4g
U2NobWlkdCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPiArCU06CVNoYXJhbiBTYW50aGFu
YW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pgo+ICAgCU06CUZlbGlwZSBIdWljaSA8ZmVs
aXBlLmh1aWNpQG5lY2xhYi5ldT4KPiAgIAlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZwo+
IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 10:30:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 10:30: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 1hYpfD-0001A3-VI; Thu, 06 Jun 2019 10:30:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=UeRv=UF=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hYpfC-00019v-Bi
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 10:30:30 +0000
X-Inumbo-ID: 19fc7e92-8846-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 19fc7e92-8846-11e9-8980-bc764e045a96;
 Thu, 06 Jun 2019 10:30:28 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id c6so1865978wml.0
 for <minios-devel@lists.xen.org>; Thu, 06 Jun 2019 03:30:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=K16KYEjOOx2+0LF63b3ojkE8RzgoPUZB6lDYhet9lDs=;
 b=mOuYaMM1tIGEBa3ogkK9pczNlYLYkVSAA56VLxFG/2m3KKsi9jVTSPG5QM4g5g9Znc
 uOVisUpb/aAKlJSlSH0kV7paaYoKBwNd69ZsO7vZ5OfEGrgpAtws5yUx89o3dA+8/I5R
 KP4UO2zlHuCLYxOCh1X9MYEQDYIjX+g2Hc7X/20dnLdIoYHSuHRx7a47Dse6SDNOyYci
 J4YYoqSusfWs7ffLa4EjVXGOw52XYvRnhLulnHA3vZVoYv88IWLPyb3oHPen0CTHxuOW
 jeirToCtiEEuO6UoYILZCKv4B7/AUkga8+9a9EbESPE4FT1Lw9L6+HxZifzyEEiZL7gc
 iyPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=K16KYEjOOx2+0LF63b3ojkE8RzgoPUZB6lDYhet9lDs=;
 b=AieDiS4MiRAfMRQYdLcr7Axa7+7dvZREacG3Xx4YBO79gm+v/ChhXR11zmsmNw2LAz
 lFW6HEaVqiyzDwnFhv4nm31Z+EeyZ5RiMyMaV1F9oaZg3mtQ36SUosw0Zsh0fPdk6GoQ
 aLi9/k7QRLGnr0TCiuGEArCE+LOF+nFN2m/YhbN5c94puBc5CPM6TxQ6FS67cPcCd0gv
 JTvgEeCZ2gmCczCSjlhvrhyZHuqLSLlR3f13RlHOHhwHZ7u0EyqulPRe/JftqdjoA3jn
 /0eavggav5OcyQMneHG0a3chyDWha4i9wuAy2gyrhu/IbexLhg3K0IF9gID6g4Lb/1S5
 EXFg==
X-Gm-Message-State: APjAAAU7r0RHrXw/40J8pOiMz/Pxe+Q2n67ZuNiVVB9yUJecCuJ4U5IW
 5wJ3v3/MTPITFx3rtgBI4fH+DX3i
X-Google-Smtp-Source: APXvYqw6QboNy1734nwNAPiJO/ikUrQuSeOt3x68jcmhpo7R/MI/vTQQJo+cWNm3ncQBcoTgPJlPqA==
X-Received: by 2002:a1c:cc02:: with SMTP id h2mr25682260wmb.13.1559817027149; 
 Thu, 06 Jun 2019 03:30:27 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id v10sm1582108wml.27.2019.06.06.03.30.25
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 06 Jun 2019 03:30:26 -0700 (PDT)
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, minios-devel@lists.xen.org
References: <20190605195509.2401-1-costin.lupu@cs.pub.ro>
 <93ced017-2652-ea7d-8660-8d29e3136587@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <96a5e6b1-b004-25e8-6687-d24e0e2a7a8a@gmail.com>
Date: Thu, 6 Jun 2019 13:30:23 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <93ced017-2652-ea7d-8660-8d29e3136587@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: Fix handling of
 main arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGkgU2ltb24sCgpJJ3ZlIHJlYWQgeW91ciBjb21tZW50cyBidXQgSSBjb3VsZG4ndCBmaW5kIG91
dCB3aHkgeW91IGRvbid0IGFncmVlIHdpdGgKZ2xvYmFsIGFwcHJvYWNoLiBTbywgd2hhdCBhcmUg
dGhlIHJlYXNvbnMgd2h5IHlvdSB3b3VsZCBwcmVmZXIgZGVjbGFyaW5nCnRoZSBhcmd1bWVudHMg
c3RhdGljIHJhdGhlciB0aGFuIGdsb2JhbD8KClBlcnNvbmFsbHkgSSBmaW5kIG1ha2luZyB0aGUg
YXJndW1lbnRzIGdsb2JhbCB0byBiZSBtb3JlIGVsZWdhbnQgYW5kCm9mZmVyIGEgdW5pZmllZCBh
cHByb2FjaCwgc2luY2UgdGhleSB3b3VsZCBoYXZlIHRoZSBzYW1lIGxvY2F0aW9uIGZvcgphbGwg
cGxhdGZvcm1zLgoKQWxzbywgcGxlYXNlIHNlZSBhIGNvbW1lbnQgaW5saW5lLgoKT24gNi82LzE5
IDEyOjM0IFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+IEhleSBDb3N0aW4sCj4gCj4gdGhhbmtz
IGEgbG90IGZvciB0aGUgcGF0Y2guIEkgdGhpbmsgdGhlIGFjdHVhbCBwcm9ibGVtIGlzIHRoYXQg
dGhlIGJvb3QKPiBzdGFjayBjb3VsZCBiZSByZWxlYXNlZCBsYXRlciBhZnRlciBib290IGZvciBz
b21ldGhpbmcgZWxzZSwgc28gaXQgaXMKPiBub3QgZ3VhcmFudGVlZCBhbnltb3JlIHRoYXQgdGhl
IGFyZ3VtZW50cyBhcmUgc2FmZSBhbmQgc3RheWluZy4KPiBIb3dldmVyLCBJIGRvbid0IGFncmVl
IHRvIG1ha2UgYXJndiBhbmQgYXJnYyBnbG9iYWwgYXZhaWxhYmxlLiBKdXN0Cj4gYWxsb2NhdGUg
dGhlbSBpbiB0aGUgYnNzIHNlY3Rpb24uCj4gU2VlIG15IGNvbW1lbnRzIGlubGluZS4KPiAKPiBP
biAwNS4wNi4xOSAyMTo1NSwgQ29zdGluIEx1cHUgd3JvdGU6Cj4+IFdoZW4gdGhlIGNvbW1hbmQg
bGluZSBpcyBwYXJzZWQgYW5kIHNwbGl0IGludG8gYXJndW1lbnRzLCBlYWNoIGFyZ3VtZW50Cj4+
IGlzIHNhdmVkIGluIGFuIGFycmF5IG9mIHBvaW50ZXJzIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sg
KCdhcmd2JyBhcnJheSBpbgo+PiB1a3BsYXRfZW50cnlfYXJncCgpKS4gVGhpcyBtZWFucyB0aGF0
IHRoZSBhcnJheSBjYW4gYmUgb3ZlcndyaXR0ZW4gYW55Cj4+IHRpbWUgYmVmb3JlIHN0YXJ0aW5n
IHRoZSBtYWluIHRocmVhZCB3aGljaCBuZWVkcyB0aGUgYXJndW1lbnRzLiBUaGlzCj4+IHBhdGNo
IGZpeGVzIHRoYXQgYnkgbWFraW5nIHRoZSBhcnJheSBnbG9iYWwsIGVuY2Fwc3VsYXRlZCBieSB0
aGUKPj4gJ21haW5fYXJnJyBzdHJ1Y3R1cmUuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENvc3RpbiBM
dXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4+IC0tLQo+PiDCoCBpbmNsdWRlL3VrL3BsYXQv
Ym9vdHN0cmFwLmggfCAxMSArKysrKysrKysrLQo+PiDCoCBsaWIvdWtib290L2Jvb3QuY8KgwqDC
oMKgwqDCoMKgwqDCoMKgIHwgMzMgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+
IMKgIGxpYi91a2Jvb3QvZXhwb3J0c3ltcy51a8KgwqDCoCB8wqAgMSArCj4+IMKgIHBsYXQvbGlu
dXh1L3NldHVwLmPCoMKgwqDCoMKgwqDCoMKgIHzCoCA3ICsrKysrKy0KPj4gwqAgNCBmaWxlcyBj
aGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdp
dCBhL2luY2x1ZGUvdWsvcGxhdC9ib290c3RyYXAuaCBiL2luY2x1ZGUvdWsvcGxhdC9ib290c3Ry
YXAuaAo+PiBpbmRleCAwNjUyY2NkMS4uYTllNDA0ZTggMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUv
dWsvcGxhdC9ib290c3RyYXAuaAo+PiArKysgYi9pbmNsdWRlL3VrL3BsYXQvYm9vdHN0cmFwLmgK
Pj4gQEAgLTM2LDYgKzM2LDcgQEAKPj4gwqAgI2lmbmRlZiBfX1VLUExBVF9CT09UU1RSQVBfXwo+
PiDCoCAjZGVmaW5lIF9fVUtQTEFUX0JPT1RTVFJBUF9fCj4+IMKgICsjaW5jbHVkZSA8dWsvY29u
ZmlnLmg+Cj4+IMKgICNpbmNsdWRlIDx1ay9hcmNoL3R5cGVzLmg+Cj4+IMKgICNpbmNsdWRlIDx1
ay9lc3NlbnRpYWxzLmg+Cj4+IMKgIEBAIC00Myw2ICs0NCwxNCBAQAo+PiDCoCBleHRlcm4gIkMi
IHsKPj4gwqAgI2VuZGlmCj4+IMKgICsvKiBNYWluIGFyZ3VtZW50cyBzdHJ1Y3R1cmUgKi8KPj4g
K3N0cnVjdCBtYWluX2FyZyB7Cj4+ICvCoMKgwqAgaW50IGFyZ2M7Cj4+ICvCoMKgwqAgY2hhciAq
YXJndltDT05GSUdfTElCVUtCT09UX01BWE5CQVJHU107Cj4+ICt9Owo+PiArLyogTWFpbiBhcmd1
bWVudHMgKi8KPj4gK2V4dGVybiBzdHJ1Y3QgbWFpbl9hcmcgZ2xvYmFsX21haW5fYXJnOwo+PiAr
Cj4+IMKgIC8qKgo+PiDCoMKgICogQ2FsbGVkIGJ5IHBsYXRmb3JtIGxpYnJhcnkgZHVyaW5nIGlu
aXRpYWxpemF0aW9uCj4+IMKgwqAgKiBUaGlzIGZ1bmN0aW9uIGhhcyB0byBiZSBwcm92aWRlZCBi
eSBhIG5vbi1wbGF0Zm9ybSBsaWJyYXJ5IGZvcgo+PiBib290c3RyYXBwaW5nCj4+IEBAIC01Miw3
ICs2MSw3IEBAIGV4dGVybiAiQyIgewo+PiDCoMKgICogQHBhcmFtIGFyZ2MgTnVtYmVyIG9mIGFy
Z3VtZW50cwo+PiDCoMKgICogQHBhcmFtIGFyZ3MgQXJyYXkgdG8gJ1wwJy10ZXJtaW5hdGVkIGFy
Z3VtZW50cwo+PiDCoMKgICovCj4+IC12b2lkIHVrcGxhdF9lbnRyeShpbnQgYXJnYywgY2hhciAq
YXJndltdKSBfX25vcmV0dXJuOwo+PiArdm9pZCB1a3BsYXRfZW50cnkoc3RydWN0IG1haW5fYXJn
ICphcmcpIF9fbm9yZXR1cm47Cj4+IMKgIMKgIC8qKgo+PiDCoMKgICogQ2FsbGVkIGJ5IHBsYXRm
b3JtIGxpYnJhcnkgZHVyaW5nIGluaXRpYWxpemF0aW9uCj4+IGRpZmYgLS1naXQgYS9saWIvdWti
b290L2Jvb3QuYyBiL2xpYi91a2Jvb3QvYm9vdC5jCj4+IGluZGV4IDRkY2MwYWZiLi41Y2MzYjU3
MyAxMDA2NDQKPj4gLS0tIGEvbGliL3VrYm9vdC9ib290LmMKPj4gKysrIGIvbGliL3VrYm9vdC9i
b290LmMKPj4gQEAgLTY4LDE3ICs2OCwxMyBAQCBleHRlcm4gaW50IGxpYmx3aXBfaW5pdCh2b2lk
KTsKPj4gwqAgI2VuZGlmIC8qIENPTkZJR19MSUJMV0lQICovCj4+IMKgIMKgIHN0YXRpYyB2b2lk
IG1haW5fdGhyZWFkX2Z1bmModm9pZCAqYXJnKSBfX25vcmV0dXJuOwo+PiAtCj4+IC1zdHJ1Y3Qg
dGhyZWFkX21haW5fYXJnIHsKPj4gLcKgwqDCoCBpbnQgYXJnYzsKPj4gLcKgwqDCoCBjaGFyICoq
YXJndjsKPj4gLX07Cj4+ICtzdHJ1Y3QgbWFpbl9hcmcgZ2xvYmFsX21haW5fYXJnOwo+PiDCoCDC
oCBzdGF0aWMgdm9pZCBtYWluX3RocmVhZF9mdW5jKHZvaWQgKmFyZykKPj4gwqAgewo+PiDCoMKg
wqDCoMKgIGludCBpOwo+PiDCoMKgwqDCoMKgIGludCByZXQ7Cj4+IC3CoMKgwqAgc3RydWN0IHRo
cmVhZF9tYWluX2FyZyAqdG1hID0gYXJnOwo+PiArwqDCoMKgIHN0cnVjdCBtYWluX2FyZyAqdG1h
ID0gYXJnOwo+PiDCoCDCoMKgwqDCoMKgIHVrX3ByX2luZm8oIlByZS1pbml0IHRhYmxlIGF0ICVw
IC0gJXBcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX3ByZWluaXRfYXJyYXlfc3Rh
cnQsICZfX3ByZWluaXRfYXJyYXlfZW5kKTsKPj4gQEAgLTE0NSwyNiArMTQxLDI2IEBAIHN0YXRp
YyB2b2lkIG1haW5fdGhyZWFkX2Z1bmModm9pZCAqYXJnKQo+PiDCoCAvKiBkZWZpbmVkIGluIDx1
ay9wbGF0Lmg+ICovCj4+IMKgIHZvaWQgdWtwbGF0X2VudHJ5X2FyZ3AoY2hhciAqYXJnMCwgY2hh
ciAqYXJnYiwgX19zeiBhcmdiX2xlbikKPj4gwqAgewo+PiAtwqDCoMKgIGNoYXIgKmFyZ3ZbQ09O
RklHX0xJQlVLQk9PVF9NQVhOQkFSR1NdOwo+IAo+IEp1c3QgZGVjbGFyZQo+IMKgwqDCoMKgY2hh
ciAqYXJndltDT05GSUdfTElCVUtCT09UX01BWE5CQVJHU107Cj4gYXMKPiDCoMKgwqDCoHN0YXRp
YyBjaGFyICphcmd2W0NPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTXTsKPiAKPiBUaGUgc2FtZSBm
b3IgYXJnYy4KPiAKPiBXZSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgb3VyIHN0cmlu
ZyBidWZmZXIgd2l0aCB0aGUgYXJndW1lbnRzCj4gKHdoZXJlIGFyZ3YgaXMgcG9pbnRpbmcgdG8p
LCBpcyBub3QgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiB0aGUKPiBwbGF0Zm9ybS4gSWYgdGhp
cyBpcyB0aGUgY2FzZSwgd2UgYXJlIHNhZmUuCj4gCgpJJ20gbm90IHN1cmUgSSBmb2xsb3cgdGhp
cywgeW91IG1lYW4gdG8gY2hlY2sgaWYgdGhlIHN0cmluZ3MgYXJlbid0CmFsbG9jYXRlZCBvbiB0
aGlzIHN0YWNrPyBPciB0byBjaGVjayBpZiBpdCBjb21lcyBmcm9tIGJzcz8KCj4+IC3CoMKgwqAg
aW50IGFyZ2MgPSAwOwo+PiArwqDCoMKgIGdsb2JhbF9tYWluX2FyZy5hcmdjID0gMDsKPj4gwqAg
wqDCoMKgwqDCoCBpZiAoYXJnMCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgYXJndlswXSA9IGFyZzA7
Cj4+IC3CoMKgwqDCoMKgwqDCoCBhcmdjICs9IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnbG9iYWxf
bWFpbl9hcmcuYXJndlswXSA9IGFyZzA7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnbG9iYWxfbWFpbl9h
cmcuYXJnYyArPSAxOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoCBpZiAoYXJnYiAmJiBh
cmdiX2xlbikgewo+PiAtwqDCoMKgwqDCoMKgwqAgYXJnYyArPSB1a19hcmducGFyc2UoYXJnYiwg
YXJnYl9sZW4sIGFyZzAgPyAmYXJndlsxXSA6ICZhcmd2WzBdLAo+PiArwqDCoMKgwqDCoMKgwqAg
Z2xvYmFsX21haW5fYXJnLmFyZ2MgKz0gdWtfYXJnbnBhcnNlKGFyZ2IsIGFyZ2JfbGVuLAo+PiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcmcwID8gJmdsb2JhbF9t
YWluX2FyZy5hcmd2WzFdCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgOiAmZ2xvYmFsX21haW5fYXJnLmFyZ3ZbMF0sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFyZzAgPyAoQ09ORklHX0xJQlVLQk9PVF9NQVhOQkFS
R1MgLSAxKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IDogQ09ORklHX0xJQlVLQk9PVF9NQVhOQkFSR1MpOwo+PiDCoMKgwqDCoMKgIH0KPj4gLcKgwqDC
oCB1a3BsYXRfZW50cnkoYXJnYywgYXJndik7Cj4+ICvCoMKgwqAgdWtwbGF0X2VudHJ5KCZnbG9i
YWxfbWFpbl9hcmcpOwo+IAo+IElmIHlvdSBkZWNsYXJlIHRoZSBhcmd1bWVudHMgYXMgZ2xvYmFs
IHlvdSBkbyBub3QgbmVlZCB0byBoYW5kIHRoZW0gb3Zlcgo+IGFueW1vcmUsIGJ1dCBhcyBJIHNh
aWQgSSB3b3VsZCBub3QgY2hhbmdlIHRoaXMgYXQgYWxsLgo+IAo+PiDCoCB9Cj4+IMKgIMKgIC8q
IGRlZmluZWQgaW4gPHVrL3BsYXQuaD4gKi8KPj4gLXZvaWQgdWtwbGF0X2VudHJ5KGludCBhcmdj
LCBjaGFyICphcmd2W10pCj4+ICt2b2lkIHVrcGxhdF9lbnRyeShzdHJ1Y3QgbWFpbl9hcmcgKmFy
ZykKPj4gwqAgewo+PiDCoMKgwqDCoMKgIGNvbnN0IHVrX2N0b3JfZnVuY190ICpjZm47Cj4+IC3C
oMKgwqAgc3RydWN0IHRocmVhZF9tYWluX2FyZyB0bWE7Cj4+IMKgICNpZiBDT05GSUdfTElCVUtB
TExPQwo+PiDCoMKgwqDCoMKgIHN0cnVjdCB1a19hbGxvYyAqYSA9IE5VTEw7Cj4+IMKgwqDCoMKg
wqAgaW50IHJjOwo+PiBAQCAtMjM0LDE5ICsyMzAsMTQgQEAgdm9pZCB1a3BsYXRfZW50cnkoaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPj4gwqDCoMKgwqDCoCBzID0gdWtfc2NoZWRfZGVmYXVsdF9p
bml0KGEpOwo+PiDCoMKgwqDCoMKgIGlmICh1bmxpa2VseSghcykpCj4+IMKgwqDCoMKgwqDCoMKg
wqDCoCBVS19DUkFTSCgiQ291bGQgbm90IGluaXRpYWxpemUgdGhlIHNjaGVkdWxlclxuIik7Cj4+
IC0jZW5kaWYKPj4gwqAgLcKgwqDCoCB0bWEuYXJnYyA9IGFyZ2M7Cj4+IC3CoMKgwqAgdG1hLmFy
Z3YgPSBhcmd2Owo+PiAtCj4+IC0jaWYgQ09ORklHX0xJQlVLU0NIRUQKPj4gLcKgwqDCoCBtYWlu
X3RocmVhZCA9IHVrX3RocmVhZF9jcmVhdGUoIm1haW4iLCBtYWluX3RocmVhZF9mdW5jLCAmdG1h
KTsKPj4gK8KgwqDCoCBtYWluX3RocmVhZCA9IHVrX3RocmVhZF9jcmVhdGUoIm1haW4iLCBtYWlu
X3RocmVhZF9mdW5jLCBhcmcpOwo+PiDCoMKgwqDCoMKgIGlmICh1bmxpa2VseSghbWFpbl90aHJl
YWQpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgVUtfQ1JBU0goIkNvdWxkIG5vdCBjcmVhdGUgbWFp
biB0aHJlYWRcbiIpOwo+PiDCoMKgwqDCoMKgIHVrX3NjaGVkX3N0YXJ0KHMpOwo+PiDCoCAjZWxz
ZQo+PiDCoMKgwqDCoMKgIC8qIEVuYWJsZSBpbnRlcnJ1cHRzIGJlZm9yZSBzdGFydGluZyB0aGUg
YXBwbGljYXRpb24gKi8KPj4gwqDCoMKgwqDCoCB1a3BsYXRfbGNwdV9lbmFibGVfaXJxKCk7Cj4+
IC3CoMKgwqAgbWFpbl90aHJlYWRfZnVuYygmdG1hKTsKPj4gK8KgwqDCoCBtYWluX3RocmVhZF9m
dW5jKGFyZyk7Cj4+IMKgICNlbmRpZgo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9saWIvdWtib290
L2V4cG9ydHN5bXMudWsgYi9saWIvdWtib290L2V4cG9ydHN5bXMudWsKPj4gaW5kZXggM2VkYzZj
NmEuLmFkYmI4NGZiIDEwMDY0NAo+PiAtLS0gYS9saWIvdWtib290L2V4cG9ydHN5bXMudWsKPj4g
KysrIGIvbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrCj4+IEBAIC0xLDMgKzEsNCBAQAo+PiDCoCB1
a3BsYXRfZW50cnlfYXJncAo+PiDCoCB1a3BsYXRfZW50cnkKPj4gK2dsb2JhbF9tYWluX2FyZwo+
PiDCoCBtYWluCj4+IGRpZmYgLS1naXQgYS9wbGF0L2xpbnV4dS9zZXR1cC5jIGIvcGxhdC9saW51
eHUvc2V0dXAuYwo+PiBpbmRleCA1MDQ1NDQzNy4uNGY2ZjU2ODggMTAwNjQ0Cj4+IC0tLSBhL3Bs
YXQvbGludXh1L3NldHVwLmMKPj4gKysrIGIvcGxhdC9saW51eHUvc2V0dXAuYwo+PiBAQCAtMTcy
LDYgKzE3MiwxMSBAQCB2b2lkIF9saWJsaW51eHVwbGF0X2VudHJ5KGludCBhcmdjLCBjaGFyICph
cmd2W10pCj4+IMKgwqDCoMKgwqAgYXJndiArPSAocmV0IC0gMSk7Cj4+IMKgwqDCoMKgwqAgYXJn
dlswXSA9IHByb2duYW1lOwo+IAo+IE1ha2UgYWxzbyBzdXJlIHRoYXQgYXJndiBhbmQgYXJnYyBh
cmUgZGVjbGFyZWQgYXMgc3RhdGljIGhlcmUsIGluc3RlYWQuCj4gCj4+IMKgICvCoMKgwqAgLyog
U2V0dXAgZ2xvYmFsIGFyZ3VtZW50cyAqLwo+PiArwqDCoMKgIGdsb2JhbF9tYWluX2FyZy5hcmdj
ID0gYXJnYzsKPj4gK8KgwqDCoCBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7IGkrKykKPj4gK8Kg
wqDCoMKgwqDCoMKgIGdsb2JhbF9tYWluX2FyZy5hcmd2W2ldID0gYXJndltpXTsKPj4gKwo+PiDC
oMKgwqDCoMKgIC8qCj4+IMKgwqDCoMKgwqDCoCAqIEFsbG9jYXRlIGhlYXAgbWVtb3J5Cj4+IMKg
wqDCoMKgwqDCoCAqLwo+PiBAQCAtMTg2LDUgKzE5MSw1IEBAIHZvaWQgX2xpYmxpbnV4dXBsYXRf
ZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPj4gwqDCoMKgwqDCoCAvKgo+PiDCoMKgwqDC
oMKgwqAgKiBFbnRlciBVbmlrcmFmdAo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCB1a3Bs
YXRfZW50cnkoYXJnYywgYXJndik7Cj4+ICvCoMKgwqAgdWtwbGF0X2VudHJ5KCZnbG9iYWxfbWFp
bl9hcmcpOwo+PiDCoCB9Cj4+Cj4gCj4gVGhhbmtzLAo+IAo+IFNpbW9uCj4gCj4gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 11:09:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 11:09: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 1hYqHH-0004Zr-Ru; Thu, 06 Jun 2019 11:09:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eeQM=UF=neclab.eu=florian.schmidt@srs-us1.protection.inumbo.net>)
 id 1hYqHF-0004Z7-Tb
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 11:09:49 +0000
X-Inumbo-ID: 971a1e44-884b-11e9-ab20-d725d3822d6e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 971a1e44-884b-11e9-ab20-d725d3822d6e;
 Thu, 06 Jun 2019 11:09:45 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 96AF6F200E;
 Thu,  6 Jun 2019 13:09:44 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id sOqPrH151u1e; Thu,  6 Jun 2019 13:09:44 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4E0C8F200A
 for <minios-devel@lists.xen.org>; Thu,  6 Jun 2019 13:09:42 +0200 (CEST)
Received: from [10.1.2.30] (10.1.2.30) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 6 Jun 2019 13:09:42
 +0200
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190606085544.11827-1-florian.schmidt@neclab.eu>
 <4ab6c1f8-5e7f-259e-2eb4-1d526486aeb0@neclab.eu>
From: Florian Schmidt <Florian.Schmidt@neclab.eu>
Message-ID: <97994d13-cccb-751d-0b3a-a749ff8d49d4@neclab.eu>
Date: Thu, 6 Jun 2019 13:09:41 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <4ab6c1f8-5e7f-259e-2eb4-1d526486aeb0@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.30]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] MAINTAINERS.md: Remove myself
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Sharan Santhanam <sharan.santhanam@neclab.eu>
Content-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>

SGkgU2ltb24sCgpJIHdvdWxkbid0IG1pbmQgYXQgYWxsIHRvIHN0YXJ0IG9uIGJvYXJkIGF0IGxl
YXN0IGFzIGFuIG9jY2FzaW9uYWwgCmNvbnRyaWJ1dG9yLiBIb3dldmVyLCBJIHdpbGwgaGF2ZSB0
byBmaWd1cmUgb3V0IG15IGNvbnN0cmFpbnRzIGZpcnN0LCAKYW5kIGF0IGxlYXN0IGZvciB0aGUg
bmV4dCA2LTEyIHdlZWtzLCBJIHdpbGwgbm90IGJlIGFibGUgdG8gY29udHJpYnV0ZSAKYXQgYWxs
LiBTbyBJIGZvdW5kIGl0IHRoZSBiZXN0IHdheSB0byBvZmZpY2lhbGx5IGdpdmUgYmFjayB0aGUg
Cm1haW50YWluZXJzaGlwcywgYXQgbGVhc3QgZm9yIHRoZSB0aW1lIGJlaW5nLgoKSXQgd2FzIGZ1
biEKCkNoZWVycywKRmxvcmlhbgoKT24gNi82LzE5IDExOjQwIEFNLCBTaW1vbiBLdWVuemVyIHdy
b3RlOgo+IEhleSBGbG9yaWFuLAo+IAo+IGl0IGlzIHJlYWxseSBzYWQgdG8gc2VlIHlvdSBsZWF2
aW5nLiBUaGFuayB5b3Ugc28gbXVjaCBmb3IgYWxsIHlvdXIgCj4gd29yayEgSSBob3BlIHdlICh5
b3UsIHVzLCBhbmQgdGhlIGNvbW11bml0eSkgd2lsbCBzdGlsbCBzdGF5IGluIHRvdWNoLgo+IFRo
YW5rcyB0byBTaGFyYW4sIGZvciB0YWtpbmcgb3ZlciB0aGUgbWFpbnRhaW5lcnNoaXAuCj4gCj4g
VGhhbmtzLAo+IAo+IFNpbW9uCj4gCj4gUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IAo+IE9uIDA2LjA2LjE5IDEwOjU1LCBGbG9yaWFuIFNjaG1p
ZHQgd3JvdGU6Cj4+IEl0IGlzIHVuY2xlYXIgaG93IG11Y2ggSSB3aWxsIGJlIGFibGUgdG8gY29u
dHJpYnV0ZSBpbiB0aGUgZnV0dXJlLgo+PiBTaGFyYW4gaGFzIGFncmVlZCB0byB0YWtlIG92ZXIg
bWFpbnRhaW5lcnNoaXAgZm9yIHNvbWUgbGlicmFyaWVzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBG
bG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Cj4+IFNpZ25lZC1vZmYt
Ynk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pgo+PiAtLS0K
Pj4gwqAgTUFJTlRBSU5FUlMubWQgfCAxMCArKystLS0tLS0tCj4+IMKgIDEgZmlsZSBjaGFuZ2Vk
LCAzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9NQUlO
VEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kCj4+IGluZGV4IDM3N2M2NDc5Li5lM2ViODk4ZCAx
MDA2NDQKPj4gLS0tIGEvTUFJTlRBSU5FUlMubWQKPj4gKysrIGIvTUFJTlRBSU5FUlMubWQKPj4g
QEAgLTY4LDE0ICs2OCwxNCBAQCBUcnkgdG8gbG9vayBmb3IgdGhlIG1vc3QgcHJlY2lzZSBhcmVh
cyBmaXJzdC4gSW4gCj4+IGNhc2Ugbm90aGluZyBmaXRzIHVzZQo+PiDCoMKgwqDCoMKgIExJTlVY
IFVTRVJTUEFDRSBQTEFURk9STSAoWDg2XzY0LCBBUk0zMikKPj4gwqDCoMKgwqDCoCBNOsKgwqDC
oCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPj4gLcKgwqDCoCBNOsKg
wqDCoCBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+Cj4+ICvCoMKg
wqAgTTrCoMKgwqAgU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+
Cj4+IMKgwqDCoMKgwqAgTDrCoMKgwqAgbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKPj4gwqDC
oMKgwqDCoCBGOiBwbGF0L2xpbnV4dS8qCj4+IMKgwqDCoMKgwqAgS1ZNIFBMQVRGT1JNIChYODYp
Cj4+IMKgwqDCoMKgwqAgTTrCoMKgwqAgU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNs
YWIuZXU+Cj4+IMKgwqDCoMKgwqAgTTrCoMKgwqAgRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lA
bmVjbGFiLmV1Pgo+PiAtwqDCoMKgIE06wqDCoMKgIEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5z
Y2htaWR0QG5lY2xhYi5ldT4KPj4gK8KgwqDCoCBNOsKgwqDCoCBTaGFyYW4gU2FudGhhbmFtIDxz
aGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KPj4gwqDCoMKgwqDCoCBMOsKgwqDCoCBtaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVuLm9yZwo+PiDCoMKgwqDCoMKgIEY6IHBsYXQvbGludXh1LyoKPj4gQEAg
LTg2LDE5ICs4NiwxNiBAQCBUcnkgdG8gbG9vayBmb3IgdGhlIG1vc3QgcHJlY2lzZSBhcmVhcyBm
aXJzdC4gSW4gCj4+IGNhc2Ugbm90aGluZyBmaXRzIHVzZQo+PiDCoMKgwqDCoMKgIExJQk5PTElC
Qwo+PiDCoMKgwqDCoMKgIE06wqDCoMKgIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVj
bGFiLmV1Pgo+PiAtwqDCoMKgIE06wqDCoMKgIEZsb3JpYW4gU2NobWlkdCA8Zmxvcmlhbi5zY2ht
aWR0QG5lY2xhYi5ldT4KPj4gwqDCoMKgwqDCoCBMOsKgwqDCoCBtaW5pb3MtZGV2ZWxAbGlzdHMu
eGVuLm9yZwo+PiDCoMKgwqDCoMKgIEY6IGxpYi9ub2xpYmMvKgo+PiDCoMKgwqDCoMKgIExJQlVL
QUxMT0MKPj4gLcKgwqDCoCBNOsKgwqDCoCBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlk
dEBuZWNsYWIuZXU+Cj4+IMKgwqDCoMKgwqAgTTrCoMKgwqAgU2ltb24gS3VlbnplciA8c2ltb24u
a3VlbnplckBuZWNsYWIuZXU+Cj4+IMKgwqDCoMKgwqAgTDrCoMKgwqAgbWluaW9zLWRldmVsQGxp
c3RzLnhlbi5vcmcKPj4gwqDCoMKgwqDCoCBGOiBsaWIvdWthbGxvYy8qCj4+IMKgwqDCoMKgwqAg
TElCVUtBTExPQ0JCVUREWQo+PiDCoMKgwqDCoMKgIE06wqDCoMKgIFNpbW9uIEt1ZW56ZXIgPHNp
bW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+PiAtwqDCoMKgIE06wqDCoMKgIEZsb3JpYW4gU2NobWlk
dCA8Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPj4gwqDCoMKgwqDCoCBMOsKgwqDCoCBtaW5p
b3MtZGV2ZWxAbGlzdHMueGVuLm9yZwo+PiDCoMKgwqDCoMKgIEY6IGxpYi91a2FsbG9jYmJ1ZGR5
LyoKPj4gQEAgLTEyNiwxMiArMTIzLDExIEBAIFRyeSB0byBsb29rIGZvciB0aGUgbW9zdCBwcmVj
aXNlIGFyZWFzIGZpcnN0LiBJbiAKPj4gY2FzZSBub3RoaW5nIGZpdHMgdXNlCj4+IMKgwqDCoMKg
wqAgTElCVUtERUJVRwo+PiDCoMKgwqDCoMKgIE06wqDCoMKgIFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1Pgo+PiAtwqDCoMKgIE06wqDCoMKgIEZsb3JpYW4gU2NobWlkdCA8
Zmxvcmlhbi5zY2htaWR0QG5lY2xhYi5ldT4KPj4gwqDCoMKgwqDCoCBMOsKgwqDCoCBtaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVuLm9yZwo+PiDCoMKgwqDCoMKgIEY6IGxpYi91a2RlYnVnLyoKPj4gwqDC
oMKgwqDCoCBVTklLUkFGVCBHRU5FUkFMCj4+IMKgwqDCoMKgwqAgTTrCoMKgwqAgU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4+IC3CoMKgwqAgTTrCoMKgwqAgRmxvcmlh
biBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pgo+PiArwqDCoMKgIE06wqDCoMKg
IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pgo+PiDCoMKgwqDC
oMKgIE06wqDCoMKgIEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KPj4gwqDC
oMKgwqDCoCBMOsKgwqDCoCBtaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZwo+PgoKLS0gCkRyLiBG
bG9yaWFuIFNjaG1pZHQK44OV44Ot44O844Oq44Ki44Oz44O744K344Ol44Of44OD44OIClJlc2Vh
cmNoIFNjaWVudGlzdCwKU3lzdGVtcyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91cApORUMgTGFi
b3JhdG9yaWVzIEV1cm9wZQpLdXJmw7xyc3Rlbi1BbmxhZ2UgMzYsIEQtNjkxMTUgSGVpZGVsYmVy
ZwpUZWwuICAgICArNDkgKDApNjIyMSA0MzQyLTI2NQpGYXg6ICAgICArNDkgKDApNjIyMSA0MzQy
LTE1NQplLW1haWw6ICBmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZWdpc3RlcmVkIGF0
IEFtdHNnZXJpY2h0IE1hbm5oZWltLCBHZXJtYW55LCBIUkI3Mjg1NTgKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 12:34:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 12:34: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 1hYrbC-0005PI-5n; Thu, 06 Jun 2019 12:34: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=EhTR=UF=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYrbB-0005P4-0s
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 12:34:29 +0000
X-Inumbo-ID: 6a7b108a-8857-11e9-a07f-1b86d27575aa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6a7b108a-8857-11e9-a07f-1b86d27575aa;
 Thu, 06 Jun 2019 12:34:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C5B44F200E;
 Thu,  6 Jun 2019 14:34:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rF32H0EUYdth; Thu,  6 Jun 2019 14:34:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 95B39F200A;
 Thu,  6 Jun 2019 14:34:19 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Thu, 6 Jun 2019 14:34:19 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Costin Lupu <costin.lup@gmail.com>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: Fix handling of
 main arguments
Thread-Index: AQHVG9idnBYJG1oZUEap8O7l8zjb/aaOXn0A///t/ICAAENYgA==
Date: Thu, 6 Jun 2019 12:34:18 +0000
Message-ID: <6E4C8D21-9F59-4F3C-8F60-0674AA7B8FF3@neclab.eu>
References: <20190605195509.2401-1-costin.lupu@cs.pub.ro>
 <93ced017-2652-ea7d-8660-8d29e3136587@neclab.eu>
 <96a5e6b1-b004-25e8-6687-d24e0e2a7a8a@gmail.com>
In-Reply-To: <96a5e6b1-b004-25e8-6687-d24e0e2a7a8a@gmail.com>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.a.190512
x-originating-ip: [10.1.99.239]
Content-ID: <9E3F8646A7EFA548B6A1807DC6D30927@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: Fix handling of
 main arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGV5IENvc3RpbiwNCg0K77u/T24gMDYuMDYuMTksIDEyOjMwLCAiQ29zdGluIEx1cHUiIDxjb3N0
aW4ubHVwQGdtYWlsLmNvbT4gd3JvdGU6DQoNCiAgICBIaSBTaW1vbiwNCiAgICANCiAgICBJJ3Zl
IHJlYWQgeW91ciBjb21tZW50cyBidXQgSSBjb3VsZG4ndCBmaW5kIG91dCB3aHkgeW91IGRvbid0
IGFncmVlIHdpdGgNCiAgICBnbG9iYWwgYXBwcm9hY2guIFNvLCB3aGF0IGFyZSB0aGUgcmVhc29u
cyB3aHkgeW91IHdvdWxkIHByZWZlciBkZWNsYXJpbmcNCiAgICB0aGUgYXJndW1lbnRzIHN0YXRp
YyByYXRoZXIgdGhhbiBnbG9iYWw/DQoNClRoZSBjaGFuZ2UgdGhhdCBJIG1lbnRpb24gYXMgYWx0
ZXJuYXRpdmUgaXMgbWluaW1hbCBhbmQgbGVzcyBpbnZhc2l2ZSB0byB0aGUgZXhpc3RpbmcgY29k
ZS4gWW91IGRvIG5vdCBuZWVkIHRvIGFkZCBpdCBhcyBleHBvcnRlZCBzeW1ib2wgYW5kIG1vc3Qg
Y29kZSBjYW4gc3RheSBhcyBpcy4gSSBhbHNvIGRvIG5vdCBzZWUgd2h5IHdlIHdvdWxkIG5lZWQg
dGhlIGdsb2JhbCBhcHByb2FjaC4gRG8geW91IGhhdmUgYSB1c2UgY2FzZT8gSSB0aGluayB0aGlz
IGlzIGNvbmZsaWN0aW5nIGhvdyBhcmdjIGFuZCBhcmd2IGlzIGludGVuZGVkIHRvIGJlIHVzZWQ6
IFRoZSBpZGVhIGFib3V0IHRoZW0gaXMgdGhhdCB0aGV5IGFyZSBwcml2YXRlIHRvIHlvdXIgbWFp
bigpIGZ1bmN0aW9uIG9mIHlvdXIgcHJvZ3JhbSAodWtwbGF0X2VudHJ5KCkgaW4gb3VyIGNhc2Up
LiBJdCBjYW4gZG8gd2hhdGV2ZXIgd2l0aCBpdCBhbmQgdGhpcyBkb2VzIG5vdCBoYXZlIGFueSBl
ZmZlY3Qgb24gc29tZXRoaW5nIGVsc2UuDQpBcyBhbiBleGFtcGxlIHlvdSBjYW4gdGFrZSBnZXRv
cHQoKTogSXQgc3RhcnRzIHJlLW9yZGVyaW5nIHRoZSBwb2ludGVycyBvbiBhcmd2IGZvciBkb2lu
ZyBpdHMgYXJndW1lbnQgcGFyc2luZy4NCk9uIGEgZ2xvYmFsIGFuZCBzaGFyZWQgZGF0YSBzdHJ1
Y3R1cmUgeW91IHdvdWxkIG5vdCB3YW50IHRoaXMuDQoNCiAgICBQZXJzb25hbGx5IEkgZmluZCBt
YWtpbmcgdGhlIGFyZ3VtZW50cyBnbG9iYWwgdG8gYmUgbW9yZSBlbGVnYW50IGFuZA0KICAgIG9m
ZmVyIGEgdW5pZmllZCBhcHByb2FjaCwgc2luY2UgdGhleSB3b3VsZCBoYXZlIHRoZSBzYW1lIGxv
Y2F0aW9uIGZvcg0KICAgIGFsbCBwbGF0Zm9ybXMuDQogICAgDQogICAgQWxzbywgcGxlYXNlIHNl
ZSBhIGNvbW1lbnQgaW5saW5lLg0KICAgIA0KICAgIE9uIDYvNi8xOSAxMjozNCBQTSwgU2ltb24g
S3VlbnplciB3cm90ZToNCiAgICA+IEhleSBDb3N0aW4sDQogICAgPiANCiAgICA+IHRoYW5rcyBh
IGxvdCBmb3IgdGhlIHBhdGNoLiBJIHRoaW5rIHRoZSBhY3R1YWwgcHJvYmxlbSBpcyB0aGF0IHRo
ZSBib290DQogICAgPiBzdGFjayBjb3VsZCBiZSByZWxlYXNlZCBsYXRlciBhZnRlciBib290IGZv
ciBzb21ldGhpbmcgZWxzZSwgc28gaXQgaXMNCiAgICA+IG5vdCBndWFyYW50ZWVkIGFueW1vcmUg
dGhhdCB0aGUgYXJndW1lbnRzIGFyZSBzYWZlIGFuZCBzdGF5aW5nLg0KICAgID4gSG93ZXZlciwg
SSBkb24ndCBhZ3JlZSB0byBtYWtlIGFyZ3YgYW5kIGFyZ2MgZ2xvYmFsIGF2YWlsYWJsZS4gSnVz
dA0KICAgID4gYWxsb2NhdGUgdGhlbSBpbiB0aGUgYnNzIHNlY3Rpb24uDQogICAgPiBTZWUgbXkg
Y29tbWVudHMgaW5saW5lLg0KICAgID4gDQogICAgPiBPbiAwNS4wNi4xOSAyMTo1NSwgQ29zdGlu
IEx1cHUgd3JvdGU6DQogICAgPj4gV2hlbiB0aGUgY29tbWFuZCBsaW5lIGlzIHBhcnNlZCBhbmQg
c3BsaXQgaW50byBhcmd1bWVudHMsIGVhY2ggYXJndW1lbnQNCiAgICA+PiBpcyBzYXZlZCBpbiBh
biBhcnJheSBvZiBwb2ludGVycyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrICgnYXJndicgYXJyYXkg
aW4NCiAgICA+PiB1a3BsYXRfZW50cnlfYXJncCgpKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBhcnJh
eSBjYW4gYmUgb3ZlcndyaXR0ZW4gYW55DQogICAgPj4gdGltZSBiZWZvcmUgc3RhcnRpbmcgdGhl
IG1haW4gdGhyZWFkIHdoaWNoIG5lZWRzIHRoZSBhcmd1bWVudHMuIFRoaXMNCiAgICA+PiBwYXRj
aCBmaXhlcyB0aGF0IGJ5IG1ha2luZyB0aGUgYXJyYXkgZ2xvYmFsLCBlbmNhcHN1bGF0ZWQgYnkg
dGhlDQogICAgPj4gJ21haW5fYXJnJyBzdHJ1Y3R1cmUuDQogICAgPj4NCiAgICA+PiBTaWduZWQt
b2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPg0KICAgID4+IC0tLQ0K
ICAgID4+ICAgaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5oIHwgMTEgKysrKysrKysrKy0NCiAg
ICA+PiAgIGxpYi91a2Jvb3QvYm9vdC5jICAgICAgICAgICB8IDMzICsrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KICAgID4+ICAgbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrICAgIHwg
IDEgKw0KICAgID4+ICAgcGxhdC9saW51eHUvc2V0dXAuYyAgICAgICAgIHwgIDcgKysrKysrLQ0K
ICAgID4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMo
LSkNCiAgICA+Pg0KICAgID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VrL3BsYXQvYm9vdHN0cmFw
LmggYi9pbmNsdWRlL3VrL3BsYXQvYm9vdHN0cmFwLmgNCiAgICA+PiBpbmRleCAwNjUyY2NkMS4u
YTllNDA0ZTggMTAwNjQ0DQogICAgPj4gLS0tIGEvaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5o
DQogICAgPj4gKysrIGIvaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5oDQogICAgPj4gQEAgLTM2
LDYgKzM2LDcgQEANCiAgICA+PiAgICNpZm5kZWYgX19VS1BMQVRfQk9PVFNUUkFQX18NCiAgICA+
PiAgICNkZWZpbmUgX19VS1BMQVRfQk9PVFNUUkFQX18NCiAgICA+PiAgICsjaW5jbHVkZSA8dWsv
Y29uZmlnLmg+DQogICAgPj4gICAjaW5jbHVkZSA8dWsvYXJjaC90eXBlcy5oPg0KICAgID4+ICAg
I2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4NCiAgICA+PiAgIEBAIC00Myw2ICs0NCwxNCBAQA0K
ICAgID4+ICAgZXh0ZXJuICJDIiB7DQogICAgPj4gICAjZW5kaWYNCiAgICA+PiAgICsvKiBNYWlu
IGFyZ3VtZW50cyBzdHJ1Y3R1cmUgKi8NCiAgICA+PiArc3RydWN0IG1haW5fYXJnIHsNCiAgICA+
PiArICAgIGludCBhcmdjOw0KICAgID4+ICsgICAgY2hhciAqYXJndltDT05GSUdfTElCVUtCT09U
X01BWE5CQVJHU107DQogICAgPj4gK307DQogICAgPj4gKy8qIE1haW4gYXJndW1lbnRzICovDQog
ICAgPj4gK2V4dGVybiBzdHJ1Y3QgbWFpbl9hcmcgZ2xvYmFsX21haW5fYXJnOw0KICAgID4+ICsN
CiAgICA+PiAgIC8qKg0KICAgID4+ICAgICogQ2FsbGVkIGJ5IHBsYXRmb3JtIGxpYnJhcnkgZHVy
aW5nIGluaXRpYWxpemF0aW9uDQogICAgPj4gICAgKiBUaGlzIGZ1bmN0aW9uIGhhcyB0byBiZSBw
cm92aWRlZCBieSBhIG5vbi1wbGF0Zm9ybSBsaWJyYXJ5IGZvcg0KICAgID4+IGJvb3RzdHJhcHBp
bmcNCiAgICA+PiBAQCAtNTIsNyArNjEsNyBAQCBleHRlcm4gIkMiIHsNCiAgICA+PiAgICAqIEBw
YXJhbSBhcmdjIE51bWJlciBvZiBhcmd1bWVudHMNCiAgICA+PiAgICAqIEBwYXJhbSBhcmdzIEFy
cmF5IHRvICdcMCctdGVybWluYXRlZCBhcmd1bWVudHMNCiAgICA+PiAgICAqLw0KICAgID4+IC12
b2lkIHVrcGxhdF9lbnRyeShpbnQgYXJnYywgY2hhciAqYXJndltdKSBfX25vcmV0dXJuOw0KICAg
ID4+ICt2b2lkIHVrcGxhdF9lbnRyeShzdHJ1Y3QgbWFpbl9hcmcgKmFyZykgX19ub3JldHVybjsN
CiAgICA+PiAgICAgLyoqDQogICAgPj4gICAgKiBDYWxsZWQgYnkgcGxhdGZvcm0gbGlicmFyeSBk
dXJpbmcgaW5pdGlhbGl6YXRpb24NCiAgICA+PiBkaWZmIC0tZ2l0IGEvbGliL3VrYm9vdC9ib290
LmMgYi9saWIvdWtib290L2Jvb3QuYw0KICAgID4+IGluZGV4IDRkY2MwYWZiLi41Y2MzYjU3MyAx
MDA2NDQNCiAgICA+PiAtLS0gYS9saWIvdWtib290L2Jvb3QuYw0KICAgID4+ICsrKyBiL2xpYi91
a2Jvb3QvYm9vdC5jDQogICAgPj4gQEAgLTY4LDE3ICs2OCwxMyBAQCBleHRlcm4gaW50IGxpYmx3
aXBfaW5pdCh2b2lkKTsNCiAgICA+PiAgICNlbmRpZiAvKiBDT05GSUdfTElCTFdJUCAqLw0KICAg
ID4+ICAgICBzdGF0aWMgdm9pZCBtYWluX3RocmVhZF9mdW5jKHZvaWQgKmFyZykgX19ub3JldHVy
bjsNCiAgICA+PiAtDQogICAgPj4gLXN0cnVjdCB0aHJlYWRfbWFpbl9hcmcgew0KICAgID4+IC0g
ICAgaW50IGFyZ2M7DQogICAgPj4gLSAgICBjaGFyICoqYXJndjsNCiAgICA+PiAtfTsNCiAgICA+
PiArc3RydWN0IG1haW5fYXJnIGdsb2JhbF9tYWluX2FyZzsNCiAgICA+PiAgICAgc3RhdGljIHZv
aWQgbWFpbl90aHJlYWRfZnVuYyh2b2lkICphcmcpDQogICAgPj4gICB7DQogICAgPj4gICAgICAg
aW50IGk7DQogICAgPj4gICAgICAgaW50IHJldDsNCiAgICA+PiAtICAgIHN0cnVjdCB0aHJlYWRf
bWFpbl9hcmcgKnRtYSA9IGFyZzsNCiAgICA+PiArICAgIHN0cnVjdCBtYWluX2FyZyAqdG1hID0g
YXJnOw0KICAgID4+ICAgICAgICAgdWtfcHJfaW5mbygiUHJlLWluaXQgdGFibGUgYXQgJXAgLSAl
cFxuIiwNCiAgICA+PiAgICAgICAgICAgICAgX19wcmVpbml0X2FycmF5X3N0YXJ0LCAmX19wcmVp
bml0X2FycmF5X2VuZCk7DQogICAgPj4gQEAgLTE0NSwyNiArMTQxLDI2IEBAIHN0YXRpYyB2b2lk
IG1haW5fdGhyZWFkX2Z1bmModm9pZCAqYXJnKQ0KICAgID4+ICAgLyogZGVmaW5lZCBpbiA8dWsv
cGxhdC5oPiAqLw0KICAgID4+ICAgdm9pZCB1a3BsYXRfZW50cnlfYXJncChjaGFyICphcmcwLCBj
aGFyICphcmdiLCBfX3N6IGFyZ2JfbGVuKQ0KICAgID4+ICAgew0KICAgID4+IC0gICAgY2hhciAq
YXJndltDT05GSUdfTElCVUtCT09UX01BWE5CQVJHU107DQogICAgPiANCiAgICA+IEp1c3QgZGVj
bGFyZQ0KICAgID4gICAgIGNoYXIgKmFyZ3ZbQ09ORklHX0xJQlVLQk9PVF9NQVhOQkFSR1NdOw0K
ICAgID4gYXMNCiAgICA+ICAgICBzdGF0aWMgY2hhciAqYXJndltDT05GSUdfTElCVUtCT09UX01B
WE5CQVJHU107DQogICAgPiANCiAgICA+IFRoZSBzYW1lIGZvciBhcmdjLg0KDQpBY3R1YWxseSwg
d2UgZG8gbm90IG5lZWQgdG8gZGVjbGFyZSBgYXJnY2AgYXMgc3RhdGljLCBvbmx5IGBhcmd2YC4g
SSB3YXMgd3JvbmcuIGBhcmdjYCBpcyBhbnl3YXlzIGhhbmRlZCBvdmVyIGJ5LXZhbHVlIG9uIGEg
ZnVuY3Rpb24gY2FsbCwgbm90IGJ5LXJlZmVyZW5jZSAobGlrZSBhcmd2KSAtIHNvIHdlIGFyZSBn
b29kLg0KDQogICAgPiANCiAgICA+IFdlIGFsc28gbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBv
dXIgc3RyaW5nIGJ1ZmZlciB3aXRoIHRoZSBhcmd1bWVudHMNCiAgICA+ICh3aGVyZSBhcmd2IGlz
IHBvaW50aW5nIHRvKSwgaXMgbm90IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgaW4gdGhlDQogICAg
PiBwbGF0Zm9ybS4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgYXJlIHNhZmUuDQogICAgPiANCiAg
ICANCiAgICBJJ20gbm90IHN1cmUgSSBmb2xsb3cgdGhpcywgeW91IG1lYW4gdG8gY2hlY2sgaWYg
dGhlIHN0cmluZ3MgYXJlbid0DQogICAgYWxsb2NhdGVkIG9uIHRoaXMgc3RhY2s/IE9yIHRvIGNo
ZWNrIGlmIGl0IGNvbWVzIGZyb20gYnNzPw0KDQpJbiBjYXNlIHRoZSBib290IHN0YWNrIGlzIHJl
bGVhc2VkIG9yIHVzZWQgZm9yIHNvbWV0aGluZyBlbHNlLCB0aGVyZSBzaG91bGQgYmUgbm8gcmVm
ZXJlbmNlIHRvIGl0LiBUaGUgYnVmZmVyIHdoZXJlIHRoZSBzdHJpbmdzIGFyZSBzdG9yZWQgKGFu
ZCB3aGVyZSB0aGUgcG9pbnRlcnMgb2YgYXJndiBhcmUgcG9pbnRpbmcgdG8pIHNob3VsZG4ndCBi
ZSBvbiB0aGUgc3RhY2sgZWl0aGVyLiBJIG1lbnRpb25lZCB0aGlzIGJlY2F1c2UgSSB3YW50ZWQg
dG8gc2F5IHRoYXQgd2Ugc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IG91ciBwbGF0Zm9ybSBhcmUg
c3RvcmluZyB0aGlzIGJ1ZmZlciBvbiBzb21ldGhpbmcgZWxzZSB0aGFuIHRoZSBzdGFjay4NCiAg
ICANCiAgICA+PiAtICAgIGludCBhcmdjID0gMDsNCiAgICA+PiArICAgIGdsb2JhbF9tYWluX2Fy
Zy5hcmdjID0gMDsNCiAgICA+PiAgICAgICAgIGlmIChhcmcwKSB7DQogICAgPj4gLSAgICAgICAg
YXJndlswXSA9IGFyZzA7DQogICAgPj4gLSAgICAgICAgYXJnYyArPSAxOw0KICAgID4+ICsgICAg
ICAgIGdsb2JhbF9tYWluX2FyZy5hcmd2WzBdID0gYXJnMDsNCiAgICA+PiArICAgICAgICBnbG9i
YWxfbWFpbl9hcmcuYXJnYyArPSAxOw0KICAgID4+ICAgICAgIH0NCiAgICA+PiAgICAgICBpZiAo
YXJnYiAmJiBhcmdiX2xlbikgew0KICAgID4+IC0gICAgICAgIGFyZ2MgKz0gdWtfYXJnbnBhcnNl
KGFyZ2IsIGFyZ2JfbGVuLCBhcmcwID8gJmFyZ3ZbMV0gOiAmYXJndlswXSwNCiAgICA+PiArICAg
ICAgICBnbG9iYWxfbWFpbl9hcmcuYXJnYyArPSB1a19hcmducGFyc2UoYXJnYiwgYXJnYl9sZW4s
DQogICAgPj4gKyAgICAgICAgICAgICAgICAgICAgIGFyZzAgPyAmZ2xvYmFsX21haW5fYXJnLmFy
Z3ZbMV0NCiAgICA+PiArICAgICAgICAgICAgICAgICAgICAgIDogJmdsb2JhbF9tYWluX2FyZy5h
cmd2WzBdLA0KICAgID4+ICAgICAgICAgICAgICAgICAgICAgICAgYXJnMCA/IChDT05GSUdfTElC
VUtCT09UX01BWE5CQVJHUyAtIDEpDQogICAgPj4gICAgICAgICAgICAgICAgICAgICAgICAgOiBD
T05GSUdfTElCVUtCT09UX01BWE5CQVJHUyk7DQogICAgPj4gICAgICAgfQ0KICAgID4+IC0gICAg
dWtwbGF0X2VudHJ5KGFyZ2MsIGFyZ3YpOw0KICAgID4+ICsgICAgdWtwbGF0X2VudHJ5KCZnbG9i
YWxfbWFpbl9hcmcpOw0KICAgID4gDQogICAgPiBJZiB5b3UgZGVjbGFyZSB0aGUgYXJndW1lbnRz
IGFzIGdsb2JhbCB5b3UgZG8gbm90IG5lZWQgdG8gaGFuZCB0aGVtIG92ZXINCiAgICA+IGFueW1v
cmUsIGJ1dCBhcyBJIHNhaWQgSSB3b3VsZCBub3QgY2hhbmdlIHRoaXMgYXQgYWxsLg0KICAgID4g
DQogICAgPj4gICB9DQogICAgPj4gICAgIC8qIGRlZmluZWQgaW4gPHVrL3BsYXQuaD4gKi8NCiAg
ICA+PiAtdm9pZCB1a3BsYXRfZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCiAgICA+PiAr
dm9pZCB1a3BsYXRfZW50cnkoc3RydWN0IG1haW5fYXJnICphcmcpDQogICAgPj4gICB7DQogICAg
Pj4gICAgICAgY29uc3QgdWtfY3Rvcl9mdW5jX3QgKmNmbjsNCiAgICA+PiAtICAgIHN0cnVjdCB0
aHJlYWRfbWFpbl9hcmcgdG1hOw0KICAgID4+ICAgI2lmIENPTkZJR19MSUJVS0FMTE9DDQogICAg
Pj4gICAgICAgc3RydWN0IHVrX2FsbG9jICphID0gTlVMTDsNCiAgICA+PiAgICAgICBpbnQgcmM7
DQogICAgPj4gQEAgLTIzNCwxOSArMjMwLDE0IEBAIHZvaWQgdWtwbGF0X2VudHJ5KGludCBhcmdj
LCBjaGFyICphcmd2W10pDQogICAgPj4gICAgICAgcyA9IHVrX3NjaGVkX2RlZmF1bHRfaW5pdChh
KTsNCiAgICA+PiAgICAgICBpZiAodW5saWtlbHkoIXMpKQ0KICAgID4+ICAgICAgICAgICBVS19D
UkFTSCgiQ291bGQgbm90IGluaXRpYWxpemUgdGhlIHNjaGVkdWxlclxuIik7DQogICAgPj4gLSNl
bmRpZg0KICAgID4+ICAgLSAgICB0bWEuYXJnYyA9IGFyZ2M7DQogICAgPj4gLSAgICB0bWEuYXJn
diA9IGFyZ3Y7DQogICAgPj4gLQ0KICAgID4+IC0jaWYgQ09ORklHX0xJQlVLU0NIRUQNCiAgICA+
PiAtICAgIG1haW5fdGhyZWFkID0gdWtfdGhyZWFkX2NyZWF0ZSgibWFpbiIsIG1haW5fdGhyZWFk
X2Z1bmMsICZ0bWEpOw0KICAgID4+ICsgICAgbWFpbl90aHJlYWQgPSB1a190aHJlYWRfY3JlYXRl
KCJtYWluIiwgbWFpbl90aHJlYWRfZnVuYywgYXJnKTsNCiAgICA+PiAgICAgICBpZiAodW5saWtl
bHkoIW1haW5fdGhyZWFkKSkNCiAgICA+PiAgICAgICAgICAgVUtfQ1JBU0goIkNvdWxkIG5vdCBj
cmVhdGUgbWFpbiB0aHJlYWRcbiIpOw0KICAgID4+ICAgICAgIHVrX3NjaGVkX3N0YXJ0KHMpOw0K
ICAgID4+ICAgI2Vsc2UNCiAgICA+PiAgICAgICAvKiBFbmFibGUgaW50ZXJydXB0cyBiZWZvcmUg
c3RhcnRpbmcgdGhlIGFwcGxpY2F0aW9uICovDQogICAgPj4gICAgICAgdWtwbGF0X2xjcHVfZW5h
YmxlX2lycSgpOw0KICAgID4+IC0gICAgbWFpbl90aHJlYWRfZnVuYygmdG1hKTsNCiAgICA+PiAr
ICAgIG1haW5fdGhyZWFkX2Z1bmMoYXJnKTsNCiAgICA+PiAgICNlbmRpZg0KICAgID4+ICAgfQ0K
ICAgID4+IGRpZmYgLS1naXQgYS9saWIvdWtib290L2V4cG9ydHN5bXMudWsgYi9saWIvdWtib290
L2V4cG9ydHN5bXMudWsNCiAgICA+PiBpbmRleCAzZWRjNmM2YS4uYWRiYjg0ZmIgMTAwNjQ0DQog
ICAgPj4gLS0tIGEvbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrDQogICAgPj4gKysrIGIvbGliL3Vr
Ym9vdC9leHBvcnRzeW1zLnVrDQogICAgPj4gQEAgLTEsMyArMSw0IEBADQogICAgPj4gICB1a3Bs
YXRfZW50cnlfYXJncA0KICAgID4+ICAgdWtwbGF0X2VudHJ5DQogICAgPj4gK2dsb2JhbF9tYWlu
X2FyZw0KICAgID4+ICAgbWFpbg0KICAgID4+IGRpZmYgLS1naXQgYS9wbGF0L2xpbnV4dS9zZXR1
cC5jIGIvcGxhdC9saW51eHUvc2V0dXAuYw0KICAgID4+IGluZGV4IDUwNDU0NDM3Li40ZjZmNTY4
OCAxMDA2NDQNCiAgICA+PiAtLS0gYS9wbGF0L2xpbnV4dS9zZXR1cC5jDQogICAgPj4gKysrIGIv
cGxhdC9saW51eHUvc2V0dXAuYw0KICAgID4+IEBAIC0xNzIsNiArMTcyLDExIEBAIHZvaWQgX2xp
YmxpbnV4dXBsYXRfZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCiAgICA+PiAgICAgICBh
cmd2ICs9IChyZXQgLSAxKTsNCiAgICA+PiAgICAgICBhcmd2WzBdID0gcHJvZ25hbWU7DQogICAg
PiANCiAgICA+IE1ha2UgYWxzbyBzdXJlIHRoYXQgYXJndiBhbmQgYXJnYyBhcmUgZGVjbGFyZWQg
YXMgc3RhdGljIGhlcmUsIGluc3RlYWQuDQogICAgPiANCiAgICA+PiAgICsgICAgLyogU2V0dXAg
Z2xvYmFsIGFyZ3VtZW50cyAqLw0KICAgID4+ICsgICAgZ2xvYmFsX21haW5fYXJnLmFyZ2MgPSBh
cmdjOw0KICAgID4+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspDQogICAgPj4g
KyAgICAgICAgZ2xvYmFsX21haW5fYXJnLmFyZ3ZbaV0gPSBhcmd2W2ldOw0KICAgID4+ICsNCiAg
ICA+PiAgICAgICAvKg0KICAgID4+ICAgICAgICAqIEFsbG9jYXRlIGhlYXAgbWVtb3J5DQogICAg
Pj4gICAgICAgICovDQogICAgPj4gQEAgLTE4Niw1ICsxOTEsNSBAQCB2b2lkIF9saWJsaW51eHVw
bGF0X2VudHJ5KGludCBhcmdjLCBjaGFyICphcmd2W10pDQogICAgPj4gICAgICAgLyoNCiAgICA+
PiAgICAgICAgKiBFbnRlciBVbmlrcmFmdA0KICAgID4+ICAgICAgICAqLw0KICAgID4+IC0gICAg
dWtwbGF0X2VudHJ5KGFyZ2MsIGFyZ3YpOw0KICAgID4+ICsgICAgdWtwbGF0X2VudHJ5KCZnbG9i
YWxfbWFpbl9hcmcpOw0KICAgID4+ICAgfQ0KICAgID4+DQogICAgPiANCiAgICA+IFRoYW5rcywN
CiAgICA+IA0KICAgID4gU2ltb24NCiAgICA+IA0KICAgID4gX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18NCiAgICA+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QNCiAgICA+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAgID4gaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA0KICAg
IA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 12:50:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 12:50: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 1hYrqV-00079u-Bh; Thu, 06 Jun 2019 12:50:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=EhTR=UF=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYrqU-00079p-60
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 12:50:18 +0000
X-Inumbo-ID: a03fe228-8859-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a03fe228-8859-11e9-8980-bc764e045a96;
 Thu, 06 Jun 2019 12:50:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id EC29F104B74;
 Thu,  6 Jun 2019 14:50:12 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id C90ULwHBZaG0; Thu,  6 Jun 2019 14:50:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C40981045F1
 for <minios-devel@lists.xen.org>; Thu,  6 Jun 2019 14:50:12 +0200 (CEST)
Received: from [10.1.99.239] (10.1.99.239) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 6 Jun 2019 14:50:12 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
 <20190605155511.26450-3-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <f1cd5415-e8f0-d920-4b2a-c4c2fc5bda7a@neclab.eu>
Date: Thu, 6 Jun 2019 14:50:12 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605155511.26450-3-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.99.239]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/9] lib/syscall_shim: import
 syscall.h.in from musl
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDUuMDYuMTkgMTc6NTUsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gSW4gdGhlIG9yaWdpbmFsIHJl
cG8gKGdpdDovL2dpdC5tdXNsLWxpYmMub3JnL211c2wpOgo+IENvbW1pdCA8NjUxNjI4MmQyYWRm
YWQyYzdlNjZkODU0Y2RlMzM1NzEyMGM3NWRiZD4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZv
bGNoa292IDx5dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi9zeXNjYWxsX3No
aW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluICAgIHwgMzY1ICsrKysrKysrKysrKysrKysrKysrKysK
PiAgIGxpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxsLmguaW4gIHwgMjc5ICsrKysr
KysrKysrKysrKysrCj4gICBsaWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwuaC5p
biB8IDMzNyArKysrKysrKysrKysrKysrKysrKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA5ODEgaW5z
ZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vYXJjaC9h
cm0vc3lzY2FsbC5oLmluCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9h
cmNoL2FybTY0L3N5c2NhbGwuaC5pbgo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxs
X3NoaW0vYXJjaC94ODZfNjQvc3lzY2FsbC5oLmluCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNj
YWxsX3NoaW0vYXJjaC9hcm0vc3lzY2FsbC5oLmluIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2Fy
bS9zeXNjYWxsLmguaW4KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi44
MTA4Mjk2Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJt
L3N5c2NhbGwuaC5pbgo+IEBAIC0wLDAgKzEsMzY1IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVu
dGlmaWVyOiBCU0QtMi1DbGF1c2UgKi8KPiArI2RlZmluZSBfX05SX3Jlc3RhcnRfc3lzY2FsbAkw
Cj4gKyNkZWZpbmUgX19OUl9leGl0CTEKPiArI2RlZmluZSBfX05SX2ZvcmsJMgo+ICsjZGVmaW5l
IF9fTlJfcmVhZAkzCj4gKyNkZWZpbmUgX19OUl93cml0ZQk0Cj4gKyNkZWZpbmUgX19OUl9vcGVu
CTUKPiArI2RlZmluZSBfX05SX2Nsb3NlCTYKPiArI2RlZmluZSBfX05SX2NyZWF0CTgKPiArI2Rl
ZmluZSBfX05SX2xpbmsJOQo+ICsjZGVmaW5lIF9fTlJfdW5saW5rCTEwCj4gKyNkZWZpbmUgX19O
Ul9leGVjdmUJMTEKPiArI2RlZmluZSBfX05SX2NoZGlyCTEyCj4gKyNkZWZpbmUgX19OUl9ta25v
ZAkxNAo+ICsjZGVmaW5lIF9fTlJfY2htb2QJMTUKPiArI2RlZmluZSBfX05SX2xjaG93bgkxNgo+
ICsjZGVmaW5lIF9fTlJfbHNlZWsJMTkKPiArI2RlZmluZSBfX05SX2dldHBpZAkyMAo+ICsjZGVm
aW5lIF9fTlJfbW91bnQJMjEKPiArI2RlZmluZSBfX05SX3NldHVpZAkyMwo+ICsjZGVmaW5lIF9f
TlJfZ2V0dWlkCTI0Cj4gKyNkZWZpbmUgX19OUl9wdHJhY2UJMjYKPiArI2RlZmluZSBfX05SX3Bh
dXNlCTI5Cj4gKyNkZWZpbmUgX19OUl9hY2Nlc3MJMzMKPiArI2RlZmluZSBfX05SX25pY2UJMzQK
PiArI2RlZmluZSBfX05SX3N5bmMJMzYKPiArI2RlZmluZSBfX05SX2tpbGwJMzcKPiArI2RlZmlu
ZSBfX05SX3JlbmFtZQkzOAo+ICsjZGVmaW5lIF9fTlJfbWtkaXIJMzkKPiArI2RlZmluZSBfX05S
X3JtZGlyCTQwCj4gKyNkZWZpbmUgX19OUl9kdXAJNDEKPiArI2RlZmluZSBfX05SX3BpcGUJNDIK
PiArI2RlZmluZSBfX05SX3RpbWVzCTQzCj4gKyNkZWZpbmUgX19OUl9icmsJNDUKPiArI2RlZmlu
ZSBfX05SX3NldGdpZAk0Ngo+ICsjZGVmaW5lIF9fTlJfZ2V0Z2lkCTQ3Cj4gKyNkZWZpbmUgX19O
Ul9nZXRldWlkCTQ5Cj4gKyNkZWZpbmUgX19OUl9nZXRlZ2lkCTUwCj4gKyNkZWZpbmUgX19OUl9h
Y2N0CTUxCj4gKyNkZWZpbmUgX19OUl91bW91bnQyCTUyCj4gKyNkZWZpbmUgX19OUl9pb2N0bAk1
NAo+ICsjZGVmaW5lIF9fTlJfZmNudGwJNTUKPiArI2RlZmluZSBfX05SX3NldHBnaWQJNTcKPiAr
I2RlZmluZSBfX05SX3VtYXNrCTYwCj4gKyNkZWZpbmUgX19OUl9jaHJvb3QJNjEKPiArI2RlZmlu
ZSBfX05SX3VzdGF0CTYyCj4gKyNkZWZpbmUgX19OUl9kdXAyCTYzCj4gKyNkZWZpbmUgX19OUl9n
ZXRwcGlkCTY0Cj4gKyNkZWZpbmUgX19OUl9nZXRwZ3JwCTY1Cj4gKyNkZWZpbmUgX19OUl9zZXRz
aWQJNjYKPiArI2RlZmluZSBfX05SX3NpZ2FjdGlvbgk2Nwo+ICsjZGVmaW5lIF9fTlJfc2V0cmV1
aWQJNzAKPiArI2RlZmluZSBfX05SX3NldHJlZ2lkCTcxCj4gKyNkZWZpbmUgX19OUl9zaWdzdXNw
ZW5kCTcyCj4gKyNkZWZpbmUgX19OUl9zaWdwZW5kaW5nCTczCj4gKyNkZWZpbmUgX19OUl9zZXRo
b3N0bmFtZQk3NAo+ICsjZGVmaW5lIF9fTlJfc2V0cmxpbWl0CTc1Cj4gKyNkZWZpbmUgX19OUl9n
ZXRydXNhZ2UJNzcKPiArI2RlZmluZSBfX05SX2dldHRpbWVvZmRheQk3OAo+ICsjZGVmaW5lIF9f
TlJfc2V0dGltZW9mZGF5CTc5Cj4gKyNkZWZpbmUgX19OUl9nZXRncm91cHMJODAKPiArI2RlZmlu
ZSBfX05SX3NldGdyb3Vwcwk4MQo+ICsjZGVmaW5lIF9fTlJfc3ltbGluawk4Mwo+ICsjZGVmaW5l
IF9fTlJfcmVhZGxpbmsJODUKPiArI2RlZmluZSBfX05SX3VzZWxpYgk4Ngo+ICsjZGVmaW5lIF9f
TlJfc3dhcG9uCTg3Cj4gKyNkZWZpbmUgX19OUl9yZWJvb3QJODgKPiArI2RlZmluZSBfX05SX211
bm1hcAk5MQo+ICsjZGVmaW5lIF9fTlJfdHJ1bmNhdGUJOTIKPiArI2RlZmluZSBfX05SX2Z0cnVu
Y2F0ZQk5Mwo+ICsjZGVmaW5lIF9fTlJfZmNobW9kCTk0Cj4gKyNkZWZpbmUgX19OUl9mY2hvd24J
OTUKPiArI2RlZmluZSBfX05SX2dldHByaW9yaXR5CTk2Cj4gKyNkZWZpbmUgX19OUl9zZXRwcmlv
cml0eQk5Nwo+ICsjZGVmaW5lIF9fTlJfc3RhdGZzCTk5Cj4gKyNkZWZpbmUgX19OUl9mc3RhdGZz
CTEwMAo+ICsjZGVmaW5lIF9fTlJfc3lzbG9nCTEwMwo+ICsjZGVmaW5lIF9fTlJfc2V0aXRpbWVy
CTEwNAo+ICsjZGVmaW5lIF9fTlJfZ2V0aXRpbWVyCTEwNQo+ICsjZGVmaW5lIF9fTlJfc3RhdAkx
MDYKPiArI2RlZmluZSBfX05SX2xzdGF0CTEwNwo+ICsjZGVmaW5lIF9fTlJfZnN0YXQJMTA4Cj4g
KyNkZWZpbmUgX19OUl92aGFuZ3VwCTExMQo+ICsjZGVmaW5lIF9fTlJfd2FpdDQJMTE0Cj4gKyNk
ZWZpbmUgX19OUl9zd2Fwb2ZmCTExNQo+ICsjZGVmaW5lIF9fTlJfc3lzaW5mbwkxMTYKPiArI2Rl
ZmluZSBfX05SX2ZzeW5jCTExOAo+ICsjZGVmaW5lIF9fTlJfc2lncmV0dXJuCTExOQo+ICsjZGVm
aW5lIF9fTlJfY2xvbmUJMTIwCj4gKyNkZWZpbmUgX19OUl9zZXRkb21haW5uYW1lCTEyMQo+ICsj
ZGVmaW5lIF9fTlJfdW5hbWUJMTIyCj4gKyNkZWZpbmUgX19OUl9hZGp0aW1leAkxMjQKPiArI2Rl
ZmluZSBfX05SX21wcm90ZWN0CTEyNQo+ICsjZGVmaW5lIF9fTlJfc2lncHJvY21hc2sJMTI2Cj4g
KyNkZWZpbmUgX19OUl9pbml0X21vZHVsZQkxMjgKPiArI2RlZmluZSBfX05SX2RlbGV0ZV9tb2R1
bGUJMTI5Cj4gKyNkZWZpbmUgX19OUl9xdW90YWN0bAkxMzEKPiArI2RlZmluZSBfX05SX2dldHBn
aWQJMTMyCj4gKyNkZWZpbmUgX19OUl9mY2hkaXIJMTMzCj4gKyNkZWZpbmUgX19OUl9iZGZsdXNo
CTEzNAo+ICsjZGVmaW5lIF9fTlJfc3lzZnMJMTM1Cj4gKyNkZWZpbmUgX19OUl9wZXJzb25hbGl0
eQkxMzYKPiArI2RlZmluZSBfX05SX3NldGZzdWlkCTEzOAo+ICsjZGVmaW5lIF9fTlJfc2V0ZnNn
aWQJMTM5Cj4gKyNkZWZpbmUgX19OUl9fbGxzZWVrCTE0MAo+ICsjZGVmaW5lIF9fTlJfZ2V0ZGVu
dHMJMTQxCj4gKyNkZWZpbmUgX19OUl9fbmV3c2VsZWN0CTE0Mgo+ICsjZGVmaW5lIF9fTlJfZmxv
Y2sJMTQzCj4gKyNkZWZpbmUgX19OUl9tc3luYwkxNDQKPiArI2RlZmluZSBfX05SX3JlYWR2CTE0
NQo+ICsjZGVmaW5lIF9fTlJfd3JpdGV2CTE0Ngo+ICsjZGVmaW5lIF9fTlJfZ2V0c2lkCTE0Nwo+
ICsjZGVmaW5lIF9fTlJfZmRhdGFzeW5jCTE0OAo+ICsjZGVmaW5lIF9fTlJfX3N5c2N0bAkxNDkK
PiArI2RlZmluZSBfX05SX21sb2NrCTE1MAo+ICsjZGVmaW5lIF9fTlJfbXVubG9jawkxNTEKPiAr
I2RlZmluZSBfX05SX21sb2NrYWxsCTE1Mgo+ICsjZGVmaW5lIF9fTlJfbXVubG9ja2FsbAkxNTMK
PiArI2RlZmluZSBfX05SX3NjaGVkX3NldHBhcmFtCTE1NAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRf
Z2V0cGFyYW0JMTU1Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRzY2hlZHVsZXIJMTU2Cj4gKyNk
ZWZpbmUgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXIJMTU3Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF95
aWVsZAkxNTgKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldF9wcmlvcml0eV9tYXgJMTU5Cj4gKyNk
ZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJpb3JpdHlfbWluCTE2MAo+ICsjZGVmaW5lIF9fTlJfc2No
ZWRfcnJfZ2V0X2ludGVydmFsCTE2MQo+ICsjZGVmaW5lIF9fTlJfbmFub3NsZWVwCTE2Mgo+ICsj
ZGVmaW5lIF9fTlJfbXJlbWFwCTE2Mwo+ICsjZGVmaW5lIF9fTlJfc2V0cmVzdWlkCTE2NAo+ICsj
ZGVmaW5lIF9fTlJfZ2V0cmVzdWlkCTE2NQo+ICsjZGVmaW5lIF9fTlJfcG9sbAkxNjgKPiArI2Rl
ZmluZSBfX05SX25mc3NlcnZjdGwJMTY5Cj4gKyNkZWZpbmUgX19OUl9zZXRyZXNnaWQJMTcwCj4g
KyNkZWZpbmUgX19OUl9nZXRyZXNnaWQJMTcxCj4gKyNkZWZpbmUgX19OUl9wcmN0bAkxNzIKPiAr
I2RlZmluZSBfX05SX3J0X3NpZ3JldHVybgkxNzMKPiArI2RlZmluZSBfX05SX3J0X3NpZ2FjdGlv
bgkxNzQKPiArI2RlZmluZSBfX05SX3J0X3NpZ3Byb2NtYXNrCTE3NQo+ICsjZGVmaW5lIF9fTlJf
cnRfc2lncGVuZGluZwkxNzYKPiArI2RlZmluZSBfX05SX3J0X3NpZ3RpbWVkd2FpdAkxNzcKPiAr
I2RlZmluZSBfX05SX3J0X3NpZ3F1ZXVlaW5mbwkxNzgKPiArI2RlZmluZSBfX05SX3J0X3NpZ3N1
c3BlbmQJMTc5Cj4gKyNkZWZpbmUgX19OUl9wcmVhZDY0CTE4MAo+ICsjZGVmaW5lIF9fTlJfcHdy
aXRlNjQJMTgxCj4gKyNkZWZpbmUgX19OUl9jaG93bgkxODIKPiArI2RlZmluZSBfX05SX2dldGN3
ZAkxODMKPiArI2RlZmluZSBfX05SX2NhcGdldAkxODQKPiArI2RlZmluZSBfX05SX2NhcHNldAkx
ODUKPiArI2RlZmluZSBfX05SX3NpZ2FsdHN0YWNrCTE4Ngo+ICsjZGVmaW5lIF9fTlJfc2VuZGZp
bGUJMTg3Cj4gKyNkZWZpbmUgX19OUl92Zm9yawkxOTAKPiArI2RlZmluZSBfX05SX3VnZXRybGlt
aXQJMTkxCj4gKyNkZWZpbmUgX19OUl9tbWFwMgkxOTIKPiArI2RlZmluZSBfX05SX3RydW5jYXRl
NjQJMTkzCj4gKyNkZWZpbmUgX19OUl9mdHJ1bmNhdGU2NAkxOTQKPiArI2RlZmluZSBfX05SX3N0
YXQ2NAkxOTUKPiArI2RlZmluZSBfX05SX2xzdGF0NjQJMTk2Cj4gKyNkZWZpbmUgX19OUl9mc3Rh
dDY0CTE5Nwo+ICsjZGVmaW5lIF9fTlJfbGNob3duMzIJMTk4Cj4gKyNkZWZpbmUgX19OUl9nZXR1
aWQzMgkxOTkKPiArI2RlZmluZSBfX05SX2dldGdpZDMyCTIwMAo+ICsjZGVmaW5lIF9fTlJfZ2V0
ZXVpZDMyCTIwMQo+ICsjZGVmaW5lIF9fTlJfZ2V0ZWdpZDMyCTIwMgo+ICsjZGVmaW5lIF9fTlJf
c2V0cmV1aWQzMgkyMDMKPiArI2RlZmluZSBfX05SX3NldHJlZ2lkMzIJMjA0Cj4gKyNkZWZpbmUg
X19OUl9nZXRncm91cHMzMgkyMDUKPiArI2RlZmluZSBfX05SX3NldGdyb3VwczMyCTIwNgo+ICsj
ZGVmaW5lIF9fTlJfZmNob3duMzIJMjA3Cj4gKyNkZWZpbmUgX19OUl9zZXRyZXN1aWQzMgkyMDgK
PiArI2RlZmluZSBfX05SX2dldHJlc3VpZDMyCTIwOQo+ICsjZGVmaW5lIF9fTlJfc2V0cmVzZ2lk
MzIJMjEwCj4gKyNkZWZpbmUgX19OUl9nZXRyZXNnaWQzMgkyMTEKPiArI2RlZmluZSBfX05SX2No
b3duMzIJMjEyCj4gKyNkZWZpbmUgX19OUl9zZXR1aWQzMgkyMTMKPiArI2RlZmluZSBfX05SX3Nl
dGdpZDMyCTIxNAo+ICsjZGVmaW5lIF9fTlJfc2V0ZnN1aWQzMgkyMTUKPiArI2RlZmluZSBfX05S
X3NldGZzZ2lkMzIJMjE2Cj4gKyNkZWZpbmUgX19OUl9nZXRkZW50czY0CTIxNwo+ICsjZGVmaW5l
IF9fTlJfcGl2b3Rfcm9vdAkyMTgKPiArI2RlZmluZSBfX05SX21pbmNvcmUJMjE5Cj4gKyNkZWZp
bmUgX19OUl9tYWR2aXNlCTIyMAo+ICsjZGVmaW5lIF9fTlJfZmNudGw2NAkyMjEKPiArI2RlZmlu
ZSBfX05SX2dldHRpZAkyMjQKPiArI2RlZmluZSBfX05SX3JlYWRhaGVhZAkyMjUKPiArI2RlZmlu
ZSBfX05SX3NldHhhdHRyCTIyNgo+ICsjZGVmaW5lIF9fTlJfbHNldHhhdHRyCTIyNwo+ICsjZGVm
aW5lIF9fTlJfZnNldHhhdHRyCTIyOAo+ICsjZGVmaW5lIF9fTlJfZ2V0eGF0dHIJMjI5Cj4gKyNk
ZWZpbmUgX19OUl9sZ2V0eGF0dHIJMjMwCj4gKyNkZWZpbmUgX19OUl9mZ2V0eGF0dHIJMjMxCj4g
KyNkZWZpbmUgX19OUl9saXN0eGF0dHIJMjMyCj4gKyNkZWZpbmUgX19OUl9sbGlzdHhhdHRyCTIz
Mwo+ICsjZGVmaW5lIF9fTlJfZmxpc3R4YXR0cgkyMzQKPiArI2RlZmluZSBfX05SX3JlbW92ZXhh
dHRyCTIzNQo+ICsjZGVmaW5lIF9fTlJfbHJlbW92ZXhhdHRyCTIzNgo+ICsjZGVmaW5lIF9fTlJf
ZnJlbW92ZXhhdHRyCTIzNwo+ICsjZGVmaW5lIF9fTlJfdGtpbGwJMjM4Cj4gKyNkZWZpbmUgX19O
Ul9zZW5kZmlsZTY0CTIzOQo+ICsjZGVmaW5lIF9fTlJfZnV0ZXgJMjQwCj4gKyNkZWZpbmUgX19O
Ul9zY2hlZF9zZXRhZmZpbml0eQkyNDEKPiArI2RlZmluZSBfX05SX3NjaGVkX2dldGFmZmluaXR5
CTI0Mgo+ICsjZGVmaW5lIF9fTlJfaW9fc2V0dXAJMjQzCj4gKyNkZWZpbmUgX19OUl9pb19kZXN0
cm95CTI0NAo+ICsjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZlbnRzCTI0NQo+ICsjZGVmaW5lIF9fTlJf
aW9fc3VibWl0CTI0Ngo+ICsjZGVmaW5lIF9fTlJfaW9fY2FuY2VsCTI0Nwo+ICsjZGVmaW5lIF9f
TlJfZXhpdF9ncm91cAkyNDgKPiArI2RlZmluZSBfX05SX2xvb2t1cF9kY29va2llCTI0OQo+ICsj
ZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRlCTI1MAo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfY3RsCTI1
MQo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfd2FpdAkyNTIKPiArI2RlZmluZSBfX05SX3JlbWFwX2Zp
bGVfcGFnZXMJMjUzCj4gKyNkZWZpbmUgX19OUl9zZXRfdGlkX2FkZHJlc3MJMjU2Cj4gKyNkZWZp
bmUgX19OUl90aW1lcl9jcmVhdGUJMjU3Cj4gKyNkZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lCTI1
OAo+ICsjZGVmaW5lIF9fTlJfdGltZXJfZ2V0dGltZQkyNTkKPiArI2RlZmluZSBfX05SX3RpbWVy
X2dldG92ZXJydW4JMjYwCj4gKyNkZWZpbmUgX19OUl90aW1lcl9kZWxldGUJMjYxCj4gKyNkZWZp
bmUgX19OUl9jbG9ja19zZXR0aW1lCTI2Mgo+ICsjZGVmaW5lIF9fTlJfY2xvY2tfZ2V0dGltZQky
NjMKPiArI2RlZmluZSBfX05SX2Nsb2NrX2dldHJlcwkyNjQKPiArI2RlZmluZSBfX05SX2Nsb2Nr
X25hbm9zbGVlcAkyNjUKPiArI2RlZmluZSBfX05SX3N0YXRmczY0CTI2Ngo+ICsjZGVmaW5lIF9f
TlJfZnN0YXRmczY0CTI2Nwo+ICsjZGVmaW5lIF9fTlJfdGdraWxsCTI2OAo+ICsjZGVmaW5lIF9f
TlJfdXRpbWVzCTI2OQo+ICsjZGVmaW5lIF9fTlJfZmFkdmlzZTY0XzY0CTI3MAo+ICsjZGVmaW5l
IF9fTlJfYXJtX2ZhZHZpc2U2NF82NAkyNzAKPiArI2RlZmluZSBfX05SX3BjaWNvbmZpZ19pb2Jh
c2UJMjcxCj4gKyNkZWZpbmUgX19OUl9wY2ljb25maWdfcmVhZAkyNzIKPiArI2RlZmluZSBfX05S
X3BjaWNvbmZpZ193cml0ZQkyNzMKPiArI2RlZmluZSBfX05SX21xX29wZW4JMjc0Cj4gKyNkZWZp
bmUgX19OUl9tcV91bmxpbmsJMjc1Cj4gKyNkZWZpbmUgX19OUl9tcV90aW1lZHNlbmQJMjc2Cj4g
KyNkZWZpbmUgX19OUl9tcV90aW1lZHJlY2VpdmUJMjc3Cj4gKyNkZWZpbmUgX19OUl9tcV9ub3Rp
ZnkJMjc4Cj4gKyNkZWZpbmUgX19OUl9tcV9nZXRzZXRhdHRyCTI3OQo+ICsjZGVmaW5lIF9fTlJf
d2FpdGlkCTI4MAo+ICsjZGVmaW5lIF9fTlJfc29ja2V0CTI4MQo+ICsjZGVmaW5lIF9fTlJfYmlu
ZAkyODIKPiArI2RlZmluZSBfX05SX2Nvbm5lY3QJMjgzCj4gKyNkZWZpbmUgX19OUl9saXN0ZW4J
Mjg0Cj4gKyNkZWZpbmUgX19OUl9hY2NlcHQJMjg1Cj4gKyNkZWZpbmUgX19OUl9nZXRzb2NrbmFt
ZQkyODYKPiArI2RlZmluZSBfX05SX2dldHBlZXJuYW1lCTI4Nwo+ICsjZGVmaW5lIF9fTlJfc29j
a2V0cGFpcgkyODgKPiArI2RlZmluZSBfX05SX3NlbmQJMjg5Cj4gKyNkZWZpbmUgX19OUl9zZW5k
dG8JMjkwCj4gKyNkZWZpbmUgX19OUl9yZWN2CTI5MQo+ICsjZGVmaW5lIF9fTlJfcmVjdmZyb20J
MjkyCj4gKyNkZWZpbmUgX19OUl9zaHV0ZG93bgkyOTMKPiArI2RlZmluZSBfX05SX3NldHNvY2tv
cHQJMjk0Cj4gKyNkZWZpbmUgX19OUl9nZXRzb2Nrb3B0CTI5NQo+ICsjZGVmaW5lIF9fTlJfc2Vu
ZG1zZwkyOTYKPiArI2RlZmluZSBfX05SX3JlY3Ztc2cJMjk3Cj4gKyNkZWZpbmUgX19OUl9zZW1v
cAkyOTgKPiArI2RlZmluZSBfX05SX3NlbWdldAkyOTkKPiArI2RlZmluZSBfX05SX3NlbWN0bAkz
MDAKPiArI2RlZmluZSBfX05SX21zZ3NuZAkzMDEKPiArI2RlZmluZSBfX05SX21zZ3JjdgkzMDIK
PiArI2RlZmluZSBfX05SX21zZ2dldAkzMDMKPiArI2RlZmluZSBfX05SX21zZ2N0bAkzMDQKPiAr
I2RlZmluZSBfX05SX3NobWF0CTMwNQo+ICsjZGVmaW5lIF9fTlJfc2htZHQJMzA2Cj4gKyNkZWZp
bmUgX19OUl9zaG1nZXQJMzA3Cj4gKyNkZWZpbmUgX19OUl9zaG1jdGwJMzA4Cj4gKyNkZWZpbmUg
X19OUl9hZGRfa2V5CTMwOQo+ICsjZGVmaW5lIF9fTlJfcmVxdWVzdF9rZXkJMzEwCj4gKyNkZWZp
bmUgX19OUl9rZXljdGwJMzExCj4gKyNkZWZpbmUgX19OUl9zZW10aW1lZG9wCTMxMgo+ICsjZGVm
aW5lIF9fTlJfdnNlcnZlcgkzMTMKPiArI2RlZmluZSBfX05SX2lvcHJpb19zZXQJMzE0Cj4gKyNk
ZWZpbmUgX19OUl9pb3ByaW9fZ2V0CTMxNQo+ICsjZGVmaW5lIF9fTlJfaW5vdGlmeV9pbml0CTMx
Ngo+ICsjZGVmaW5lIF9fTlJfaW5vdGlmeV9hZGRfd2F0Y2gJMzE3Cj4gKyNkZWZpbmUgX19OUl9p
bm90aWZ5X3JtX3dhdGNoCTMxOAo+ICsjZGVmaW5lIF9fTlJfbWJpbmQJMzE5Cj4gKyNkZWZpbmUg
X19OUl9nZXRfbWVtcG9saWN5CTMyMAo+ICsjZGVmaW5lIF9fTlJfc2V0X21lbXBvbGljeQkzMjEK
PiArI2RlZmluZSBfX05SX29wZW5hdAkzMjIKPiArI2RlZmluZSBfX05SX21rZGlyYXQJMzIzCj4g
KyNkZWZpbmUgX19OUl9ta25vZGF0CTMyNAo+ICsjZGVmaW5lIF9fTlJfZmNob3duYXQJMzI1Cj4g
KyNkZWZpbmUgX19OUl9mdXRpbWVzYXQJMzI2Cj4gKyNkZWZpbmUgX19OUl9mc3RhdGF0NjQJMzI3
Cj4gKyNkZWZpbmUgX19OUl91bmxpbmthdAkzMjgKPiArI2RlZmluZSBfX05SX3JlbmFtZWF0CTMy
OQo+ICsjZGVmaW5lIF9fTlJfbGlua2F0CTMzMAo+ICsjZGVmaW5lIF9fTlJfc3ltbGlua2F0CTMz
MQo+ICsjZGVmaW5lIF9fTlJfcmVhZGxpbmthdAkzMzIKPiArI2RlZmluZSBfX05SX2ZjaG1vZGF0
CTMzMwo+ICsjZGVmaW5lIF9fTlJfZmFjY2Vzc2F0CTMzNAo+ICsjZGVmaW5lIF9fTlJfcHNlbGVj
dDYJMzM1Cj4gKyNkZWZpbmUgX19OUl9wcG9sbAkzMzYKPiArI2RlZmluZSBfX05SX3Vuc2hhcmUJ
MzM3Cj4gKyNkZWZpbmUgX19OUl9zZXRfcm9idXN0X2xpc3QJMzM4Cj4gKyNkZWZpbmUgX19OUl9n
ZXRfcm9idXN0X2xpc3QJMzM5Cj4gKyNkZWZpbmUgX19OUl9zcGxpY2UJMzQwCj4gKyNkZWZpbmUg
X19OUl9zeW5jX2ZpbGVfcmFuZ2UyCTM0MQo+ICsjZGVmaW5lIF9fTlJfYXJtX3N5bmNfZmlsZV9y
YW5nZQkzNDEKPiArI2RlZmluZSBfX05SX3RlZQkzNDIKPiArI2RlZmluZSBfX05SX3Ztc3BsaWNl
CTM0Mwo+ICsjZGVmaW5lIF9fTlJfbW92ZV9wYWdlcwkzNDQKPiArI2RlZmluZSBfX05SX2dldGNw
dQkzNDUKPiArI2RlZmluZSBfX05SX2Vwb2xsX3B3YWl0CTM0Ngo+ICsjZGVmaW5lIF9fTlJfa2V4
ZWNfbG9hZAkzNDcKPiArI2RlZmluZSBfX05SX3V0aW1lbnNhdAkzNDgKPiArI2RlZmluZSBfX05S
X3NpZ25hbGZkCTM0OQo+ICsjZGVmaW5lIF9fTlJfdGltZXJmZF9jcmVhdGUJMzUwCj4gKyNkZWZp
bmUgX19OUl9ldmVudGZkCTM1MQo+ICsjZGVmaW5lIF9fTlJfZmFsbG9jYXRlCTM1Mgo+ICsjZGVm
aW5lIF9fTlJfdGltZXJmZF9zZXR0aW1lCTM1Mwo+ICsjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0
aW1lCTM1NAo+ICsjZGVmaW5lIF9fTlJfc2lnbmFsZmQ0CTM1NQo+ICsjZGVmaW5lIF9fTlJfZXZl
bnRmZDIJMzU2Cj4gKyNkZWZpbmUgX19OUl9lcG9sbF9jcmVhdGUxCTM1Nwo+ICsjZGVmaW5lIF9f
TlJfZHVwMwkzNTgKPiArI2RlZmluZSBfX05SX3BpcGUyCTM1OQo+ICsjZGVmaW5lIF9fTlJfaW5v
dGlmeV9pbml0MQkzNjAKPiArI2RlZmluZSBfX05SX3ByZWFkdgkzNjEKPiArI2RlZmluZSBfX05S
X3B3cml0ZXYJMzYyCj4gKyNkZWZpbmUgX19OUl9ydF90Z3NpZ3F1ZXVlaW5mbwkzNjMKPiArI2Rl
ZmluZSBfX05SX3BlcmZfZXZlbnRfb3BlbgkzNjQKPiArI2RlZmluZSBfX05SX3JlY3ZtbXNnCTM2
NQo+ICsjZGVmaW5lIF9fTlJfYWNjZXB0NAkzNjYKPiArI2RlZmluZSBfX05SX2Zhbm90aWZ5X2lu
aXQJMzY3Cj4gKyNkZWZpbmUgX19OUl9mYW5vdGlmeV9tYXJrCTM2OAo+ICsjZGVmaW5lIF9fTlJf
cHJsaW1pdDY0CTM2OQo+ICsjZGVmaW5lIF9fTlJfbmFtZV90b19oYW5kbGVfYXQJMzcwCj4gKyNk
ZWZpbmUgX19OUl9vcGVuX2J5X2hhbmRsZV9hdAkzNzEKPiArI2RlZmluZSBfX05SX2Nsb2NrX2Fk
anRpbWUJMzcyCj4gKyNkZWZpbmUgX19OUl9zeW5jZnMJMzczCj4gKyNkZWZpbmUgX19OUl9zZW5k
bW1zZwkzNzQKPiArI2RlZmluZSBfX05SX3NldG5zCTM3NQo+ICsjZGVmaW5lIF9fTlJfcHJvY2Vz
c192bV9yZWFkdgkzNzYKPiArI2RlZmluZSBfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2CTM3Nwo+ICsj
ZGVmaW5lIF9fTlJfa2NtcAkJMzc4Cj4gKyNkZWZpbmUgX19OUl9maW5pdF9tb2R1bGUJMzc5Cj4g
KyNkZWZpbmUgX19OUl9zY2hlZF9zZXRhdHRyCTM4MAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0
YXR0cgkzODEKPiArI2RlZmluZSBfX05SX3JlbmFtZWF0MgkzODIKPiArI2RlZmluZSBfX05SX3Nl
Y2NvbXAJMzgzCj4gKyNkZWZpbmUgX19OUl9nZXRyYW5kb20JMzg0Cj4gKyNkZWZpbmUgX19OUl9t
ZW1mZF9jcmVhdGUJMzg1Cj4gKyNkZWZpbmUgX19OUl9icGYJMzg2Cj4gKyNkZWZpbmUgX19OUl9l
eGVjdmVhdAkzODcKPiArI2RlZmluZSBfX05SX3VzZXJmYXVsdGZkCTM4OAo+ICsjZGVmaW5lIF9f
TlJfbWVtYmFycmllcgkJMzg5Cj4gKyNkZWZpbmUgX19OUl9tbG9jazIJCTM5MAo+ICsjZGVmaW5l
IF9fTlJfY29weV9maWxlX3JhbmdlCTM5MQo+ICsjZGVmaW5lIF9fTlJfcHJlYWR2MgkzOTIKPiAr
I2RlZmluZSBfX05SX3B3cml0ZXYyCTM5Mwo+ICsjZGVmaW5lIF9fTlJfcGtleV9tcHJvdGVjdAkz
OTQKPiArI2RlZmluZSBfX05SX3BrZXlfYWxsb2MJMzk1Cj4gKyNkZWZpbmUgX19OUl9wa2V5X2Zy
ZWUJMzk2Cj4gKyNkZWZpbmUgX19OUl9zdGF0eAkzOTcKPiArI2RlZmluZSBfX05SX3JzZXEJMzk4
Cj4gKwo+ICsjZGVmaW5lIF9fQVJNX05SX2JyZWFrcG9pbnQJMHgwZjAwMDEKPiArI2RlZmluZSBf
X0FSTV9OUl9jYWNoZWZsdXNoCTB4MGYwMDAyCj4gKyNkZWZpbmUgX19BUk1fTlJfdXNyMjYJCTB4
MGYwMDAzCj4gKyNkZWZpbmUgX19BUk1fTlJfdXNyMzIJCTB4MGYwMDA0Cj4gKyNkZWZpbmUgX19B
Uk1fTlJfc2V0X3RscwkweDBmMDAwNQo+ICsjZGVmaW5lIF9fQVJNX05SX2dldF90bHMJMHgwZjAw
MDYKPiArCj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC9hcm02NC9zeXNjYWxs
LmguaW4gYi9saWIvc3lzY2FsbF9zaGltL2FyY2gvYXJtNjQvc3lzY2FsbC5oLmluCj4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uMDEwMjcwNDgKPiAtLS0gL2Rldi9udWxs
Cj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9hcmNoL2FybTY0L3N5c2NhbGwuaC5pbgo+IEBAIC0w
LDAgKzEsMjc5IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ug
Ki8KPiArI2RlZmluZSBfX05SX2lvX3NldHVwIDAKPiArI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kg
MQo+ICsjZGVmaW5lIF9fTlJfaW9fc3VibWl0IDIKPiArI2RlZmluZSBfX05SX2lvX2NhbmNlbCAz
Cj4gKyNkZWZpbmUgX19OUl9pb19nZXRldmVudHMgNAo+ICsjZGVmaW5lIF9fTlJfc2V0eGF0dHIg
NQo+ICsjZGVmaW5lIF9fTlJfbHNldHhhdHRyIDYKPiArI2RlZmluZSBfX05SX2ZzZXR4YXR0ciA3
Cj4gKyNkZWZpbmUgX19OUl9nZXR4YXR0ciA4Cj4gKyNkZWZpbmUgX19OUl9sZ2V0eGF0dHIgOQo+
ICsjZGVmaW5lIF9fTlJfZmdldHhhdHRyIDEwCj4gKyNkZWZpbmUgX19OUl9saXN0eGF0dHIgMTEK
PiArI2RlZmluZSBfX05SX2xsaXN0eGF0dHIgMTIKPiArI2RlZmluZSBfX05SX2ZsaXN0eGF0dHIg
MTMKPiArI2RlZmluZSBfX05SX3JlbW92ZXhhdHRyIDE0Cj4gKyNkZWZpbmUgX19OUl9scmVtb3Zl
eGF0dHIgMTUKPiArI2RlZmluZSBfX05SX2ZyZW1vdmV4YXR0ciAxNgo+ICsjZGVmaW5lIF9fTlJf
Z2V0Y3dkIDE3Cj4gKyNkZWZpbmUgX19OUl9sb29rdXBfZGNvb2tpZSAxOAo+ICsjZGVmaW5lIF9f
TlJfZXZlbnRmZDIgMTkKPiArI2RlZmluZSBfX05SX2Vwb2xsX2NyZWF0ZTEgMjAKPiArI2RlZmlu
ZSBfX05SX2Vwb2xsX2N0bCAyMQo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfcHdhaXQgMjIKPiArI2Rl
ZmluZSBfX05SX2R1cCAyMwo+ICsjZGVmaW5lIF9fTlJfZHVwMyAyNAo+ICsjZGVmaW5lIF9fTlJf
ZmNudGwgMjUKPiArI2RlZmluZSBfX05SX2lub3RpZnlfaW5pdDEgMjYKPiArI2RlZmluZSBfX05S
X2lub3RpZnlfYWRkX3dhdGNoIDI3Cj4gKyNkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoIDI4
Cj4gKyNkZWZpbmUgX19OUl9pb2N0bCAyOQo+ICsjZGVmaW5lIF9fTlJfaW9wcmlvX3NldCAzMAo+
ICsjZGVmaW5lIF9fTlJfaW9wcmlvX2dldCAzMQo+ICsjZGVmaW5lIF9fTlJfZmxvY2sgMzIKPiAr
I2RlZmluZSBfX05SX21rbm9kYXQgMzMKPiArI2RlZmluZSBfX05SX21rZGlyYXQgMzQKPiArI2Rl
ZmluZSBfX05SX3VubGlua2F0IDM1Cj4gKyNkZWZpbmUgX19OUl9zeW1saW5rYXQgMzYKPiArI2Rl
ZmluZSBfX05SX2xpbmthdCAzNwo+ICsjZGVmaW5lIF9fTlJfcmVuYW1lYXQgMzgKPiArI2RlZmlu
ZSBfX05SX3Vtb3VudDIgMzkKPiArI2RlZmluZSBfX05SX21vdW50IDQwCj4gKyNkZWZpbmUgX19O
Ul9waXZvdF9yb290IDQxCj4gKyNkZWZpbmUgX19OUl9uZnNzZXJ2Y3RsIDQyCj4gKyNkZWZpbmUg
X19OUl9zdGF0ZnMgNDMKPiArI2RlZmluZSBfX05SX2ZzdGF0ZnMgNDQKPiArI2RlZmluZSBfX05S
X3RydW5jYXRlIDQ1Cj4gKyNkZWZpbmUgX19OUl9mdHJ1bmNhdGUgNDYKPiArI2RlZmluZSBfX05S
X2ZhbGxvY2F0ZSA0Nwo+ICsjZGVmaW5lIF9fTlJfZmFjY2Vzc2F0IDQ4Cj4gKyNkZWZpbmUgX19O
Ul9jaGRpciA0OQo+ICsjZGVmaW5lIF9fTlJfZmNoZGlyIDUwCj4gKyNkZWZpbmUgX19OUl9jaHJv
b3QgNTEKPiArI2RlZmluZSBfX05SX2ZjaG1vZCA1Mgo+ICsjZGVmaW5lIF9fTlJfZmNobW9kYXQg
NTMKPiArI2RlZmluZSBfX05SX2ZjaG93bmF0IDU0Cj4gKyNkZWZpbmUgX19OUl9mY2hvd24gNTUK
PiArI2RlZmluZSBfX05SX29wZW5hdCA1Ngo+ICsjZGVmaW5lIF9fTlJfY2xvc2UgNTcKPiArI2Rl
ZmluZSBfX05SX3ZoYW5ndXAgNTgKPiArI2RlZmluZSBfX05SX3BpcGUyIDU5Cj4gKyNkZWZpbmUg
X19OUl9xdW90YWN0bCA2MAo+ICsjZGVmaW5lIF9fTlJfZ2V0ZGVudHM2NCA2MQo+ICsjZGVmaW5l
IF9fTlJfbHNlZWsgNjIKPiArI2RlZmluZSBfX05SX3JlYWQgNjMKPiArI2RlZmluZSBfX05SX3dy
aXRlIDY0Cj4gKyNkZWZpbmUgX19OUl9yZWFkdiA2NQo+ICsjZGVmaW5lIF9fTlJfd3JpdGV2IDY2
Cj4gKyNkZWZpbmUgX19OUl9wcmVhZDY0IDY3Cj4gKyNkZWZpbmUgX19OUl9wd3JpdGU2NCA2OAo+
ICsjZGVmaW5lIF9fTlJfcHJlYWR2IDY5Cj4gKyNkZWZpbmUgX19OUl9wd3JpdGV2IDcwCj4gKyNk
ZWZpbmUgX19OUl9zZW5kZmlsZSA3MQo+ICsjZGVmaW5lIF9fTlJfcHNlbGVjdDYgNzIKPiArI2Rl
ZmluZSBfX05SX3Bwb2xsIDczCj4gKyNkZWZpbmUgX19OUl9zaWduYWxmZDQgNzQKPiArI2RlZmlu
ZSBfX05SX3Ztc3BsaWNlIDc1Cj4gKyNkZWZpbmUgX19OUl9zcGxpY2UgNzYKPiArI2RlZmluZSBf
X05SX3RlZSA3Nwo+ICsjZGVmaW5lIF9fTlJfcmVhZGxpbmthdCA3OAo+ICsjZGVmaW5lIF9fTlJf
bmV3ZnN0YXRhdCA3OQo+ICsjZGVmaW5lIF9fTlJfZnN0YXQgODAKPiArI2RlZmluZSBfX05SX3N5
bmMgODEKPiArI2RlZmluZSBfX05SX2ZzeW5jIDgyCj4gKyNkZWZpbmUgX19OUl9mZGF0YXN5bmMg
ODMKPiArI2RlZmluZSBfX05SX3N5bmNfZmlsZV9yYW5nZSA4NAo+ICsjZGVmaW5lIF9fTlJfdGlt
ZXJmZF9jcmVhdGUgODUKPiArI2RlZmluZSBfX05SX3RpbWVyZmRfc2V0dGltZSA4Ngo+ICsjZGVm
aW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lIDg3Cj4gKyNkZWZpbmUgX19OUl91dGltZW5zYXQgODgK
PiArI2RlZmluZSBfX05SX2FjY3QgODkKPiArI2RlZmluZSBfX05SX2NhcGdldCA5MAo+ICsjZGVm
aW5lIF9fTlJfY2Fwc2V0IDkxCj4gKyNkZWZpbmUgX19OUl9wZXJzb25hbGl0eSA5Mgo+ICsjZGVm
aW5lIF9fTlJfZXhpdCA5Mwo+ICsjZGVmaW5lIF9fTlJfZXhpdF9ncm91cCA5NAo+ICsjZGVmaW5l
IF9fTlJfd2FpdGlkIDk1Cj4gKyNkZWZpbmUgX19OUl9zZXRfdGlkX2FkZHJlc3MgOTYKPiArI2Rl
ZmluZSBfX05SX3Vuc2hhcmUgOTcKPiArI2RlZmluZSBfX05SX2Z1dGV4IDk4Cj4gKyNkZWZpbmUg
X19OUl9zZXRfcm9idXN0X2xpc3QgOTkKPiArI2RlZmluZSBfX05SX2dldF9yb2J1c3RfbGlzdCAx
MDAKPiArI2RlZmluZSBfX05SX25hbm9zbGVlcCAxMDEKPiArI2RlZmluZSBfX05SX2dldGl0aW1l
ciAxMDIKPiArI2RlZmluZSBfX05SX3NldGl0aW1lciAxMDMKPiArI2RlZmluZSBfX05SX2tleGVj
X2xvYWQgMTA0Cj4gKyNkZWZpbmUgX19OUl9pbml0X21vZHVsZSAxMDUKPiArI2RlZmluZSBfX05S
X2RlbGV0ZV9tb2R1bGUgMTA2Cj4gKyNkZWZpbmUgX19OUl90aW1lcl9jcmVhdGUgMTA3Cj4gKyNk
ZWZpbmUgX19OUl90aW1lcl9nZXR0aW1lIDEwOAo+ICsjZGVmaW5lIF9fTlJfdGltZXJfZ2V0b3Zl
cnJ1biAxMDkKPiArI2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUgMTEwCj4gKyNkZWZpbmUgX19O
Ul90aW1lcl9kZWxldGUgMTExCj4gKyNkZWZpbmUgX19OUl9jbG9ja19zZXR0aW1lIDExMgo+ICsj
ZGVmaW5lIF9fTlJfY2xvY2tfZ2V0dGltZSAxMTMKPiArI2RlZmluZSBfX05SX2Nsb2NrX2dldHJl
cyAxMTQKPiArI2RlZmluZSBfX05SX2Nsb2NrX25hbm9zbGVlcCAxMTUKPiArI2RlZmluZSBfX05S
X3N5c2xvZyAxMTYKPiArI2RlZmluZSBfX05SX3B0cmFjZSAxMTcKPiArI2RlZmluZSBfX05SX3Nj
aGVkX3NldHBhcmFtIDExOAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyIDExOQo+
ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyIDEyMAo+ICsjZGVmaW5lIF9fTlJfc2No
ZWRfZ2V0cGFyYW0gMTIxCj4gKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRhZmZpbml0eSAxMjIKPiAr
I2RlZmluZSBfX05SX3NjaGVkX2dldGFmZmluaXR5IDEyMwo+ICsjZGVmaW5lIF9fTlJfc2NoZWRf
eWllbGQgMTI0Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4IDEyNQo+ICsj
ZGVmaW5lIF9fTlJfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAxMjYKPiArI2RlZmluZSBfX05SX3Nj
aGVkX3JyX2dldF9pbnRlcnZhbCAxMjcKPiArI2RlZmluZSBfX05SX3Jlc3RhcnRfc3lzY2FsbCAx
MjgKPiArI2RlZmluZSBfX05SX2tpbGwgMTI5Cj4gKyNkZWZpbmUgX19OUl90a2lsbCAxMzAKPiAr
I2RlZmluZSBfX05SX3Rna2lsbCAxMzEKPiArI2RlZmluZSBfX05SX3NpZ2FsdHN0YWNrIDEzMgo+
ICsjZGVmaW5lIF9fTlJfcnRfc2lnc3VzcGVuZCAxMzMKPiArI2RlZmluZSBfX05SX3J0X3NpZ2Fj
dGlvbiAxMzQKPiArI2RlZmluZSBfX05SX3J0X3NpZ3Byb2NtYXNrIDEzNQo+ICsjZGVmaW5lIF9f
TlJfcnRfc2lncGVuZGluZyAxMzYKPiArI2RlZmluZSBfX05SX3J0X3NpZ3RpbWVkd2FpdCAxMzcK
PiArI2RlZmluZSBfX05SX3J0X3NpZ3F1ZXVlaW5mbyAxMzgKPiArI2RlZmluZSBfX05SX3J0X3Np
Z3JldHVybiAxMzkKPiArI2RlZmluZSBfX05SX3NldHByaW9yaXR5IDE0MAo+ICsjZGVmaW5lIF9f
TlJfZ2V0cHJpb3JpdHkgMTQxCj4gKyNkZWZpbmUgX19OUl9yZWJvb3QgMTQyCj4gKyNkZWZpbmUg
X19OUl9zZXRyZWdpZCAxNDMKPiArI2RlZmluZSBfX05SX3NldGdpZCAxNDQKPiArI2RlZmluZSBf
X05SX3NldHJldWlkIDE0NQo+ICsjZGVmaW5lIF9fTlJfc2V0dWlkIDE0Ngo+ICsjZGVmaW5lIF9f
TlJfc2V0cmVzdWlkIDE0Nwo+ICsjZGVmaW5lIF9fTlJfZ2V0cmVzdWlkIDE0OAo+ICsjZGVmaW5l
IF9fTlJfc2V0cmVzZ2lkIDE0OQo+ICsjZGVmaW5lIF9fTlJfZ2V0cmVzZ2lkIDE1MAo+ICsjZGVm
aW5lIF9fTlJfc2V0ZnN1aWQgMTUxCj4gKyNkZWZpbmUgX19OUl9zZXRmc2dpZCAxNTIKPiArI2Rl
ZmluZSBfX05SX3RpbWVzIDE1Mwo+ICsjZGVmaW5lIF9fTlJfc2V0cGdpZCAxNTQKPiArI2RlZmlu
ZSBfX05SX2dldHBnaWQgMTU1Cj4gKyNkZWZpbmUgX19OUl9nZXRzaWQgMTU2Cj4gKyNkZWZpbmUg
X19OUl9zZXRzaWQgMTU3Cj4gKyNkZWZpbmUgX19OUl9nZXRncm91cHMgMTU4Cj4gKyNkZWZpbmUg
X19OUl9zZXRncm91cHMgMTU5Cj4gKyNkZWZpbmUgX19OUl91bmFtZSAxNjAKPiArI2RlZmluZSBf
X05SX3NldGhvc3RuYW1lIDE2MQo+ICsjZGVmaW5lIF9fTlJfc2V0ZG9tYWlubmFtZSAxNjIKPiAr
I2RlZmluZSBfX05SX2dldHJsaW1pdCAxNjMKPiArI2RlZmluZSBfX05SX3NldHJsaW1pdCAxNjQK
PiArI2RlZmluZSBfX05SX2dldHJ1c2FnZSAxNjUKPiArI2RlZmluZSBfX05SX3VtYXNrIDE2Ngo+
ICsjZGVmaW5lIF9fTlJfcHJjdGwgMTY3Cj4gKyNkZWZpbmUgX19OUl9nZXRjcHUgMTY4Cj4gKyNk
ZWZpbmUgX19OUl9nZXR0aW1lb2ZkYXkgMTY5Cj4gKyNkZWZpbmUgX19OUl9zZXR0aW1lb2ZkYXkg
MTcwCj4gKyNkZWZpbmUgX19OUl9hZGp0aW1leCAxNzEKPiArI2RlZmluZSBfX05SX2dldHBpZCAx
NzIKPiArI2RlZmluZSBfX05SX2dldHBwaWQgMTczCj4gKyNkZWZpbmUgX19OUl9nZXR1aWQgMTc0
Cj4gKyNkZWZpbmUgX19OUl9nZXRldWlkIDE3NQo+ICsjZGVmaW5lIF9fTlJfZ2V0Z2lkIDE3Ngo+
ICsjZGVmaW5lIF9fTlJfZ2V0ZWdpZCAxNzcKPiArI2RlZmluZSBfX05SX2dldHRpZCAxNzgKPiAr
I2RlZmluZSBfX05SX3N5c2luZm8gMTc5Cj4gKyNkZWZpbmUgX19OUl9tcV9vcGVuIDE4MAo+ICsj
ZGVmaW5lIF9fTlJfbXFfdW5saW5rIDE4MQo+ICsjZGVmaW5lIF9fTlJfbXFfdGltZWRzZW5kIDE4
Mgo+ICsjZGVmaW5lIF9fTlJfbXFfdGltZWRyZWNlaXZlIDE4Mwo+ICsjZGVmaW5lIF9fTlJfbXFf
bm90aWZ5IDE4NAo+ICsjZGVmaW5lIF9fTlJfbXFfZ2V0c2V0YXR0ciAxODUKPiArI2RlZmluZSBf
X05SX21zZ2dldCAxODYKPiArI2RlZmluZSBfX05SX21zZ2N0bCAxODcKPiArI2RlZmluZSBfX05S
X21zZ3JjdiAxODgKPiArI2RlZmluZSBfX05SX21zZ3NuZCAxODkKPiArI2RlZmluZSBfX05SX3Nl
bWdldCAxOTAKPiArI2RlZmluZSBfX05SX3NlbWN0bCAxOTEKPiArI2RlZmluZSBfX05SX3NlbXRp
bWVkb3AgMTkyCj4gKyNkZWZpbmUgX19OUl9zZW1vcCAxOTMKPiArI2RlZmluZSBfX05SX3NobWdl
dCAxOTQKPiArI2RlZmluZSBfX05SX3NobWN0bCAxOTUKPiArI2RlZmluZSBfX05SX3NobWF0IDE5
Ngo+ICsjZGVmaW5lIF9fTlJfc2htZHQgMTk3Cj4gKyNkZWZpbmUgX19OUl9zb2NrZXQgMTk4Cj4g
KyNkZWZpbmUgX19OUl9zb2NrZXRwYWlyIDE5OQo+ICsjZGVmaW5lIF9fTlJfYmluZCAyMDAKPiAr
I2RlZmluZSBfX05SX2xpc3RlbiAyMDEKPiArI2RlZmluZSBfX05SX2FjY2VwdCAyMDIKPiArI2Rl
ZmluZSBfX05SX2Nvbm5lY3QgMjAzCj4gKyNkZWZpbmUgX19OUl9nZXRzb2NrbmFtZSAyMDQKPiAr
I2RlZmluZSBfX05SX2dldHBlZXJuYW1lIDIwNQo+ICsjZGVmaW5lIF9fTlJfc2VuZHRvIDIwNgo+
ICsjZGVmaW5lIF9fTlJfcmVjdmZyb20gMjA3Cj4gKyNkZWZpbmUgX19OUl9zZXRzb2Nrb3B0IDIw
OAo+ICsjZGVmaW5lIF9fTlJfZ2V0c29ja29wdCAyMDkKPiArI2RlZmluZSBfX05SX3NodXRkb3du
IDIxMAo+ICsjZGVmaW5lIF9fTlJfc2VuZG1zZyAyMTEKPiArI2RlZmluZSBfX05SX3JlY3Ztc2cg
MjEyCj4gKyNkZWZpbmUgX19OUl9yZWFkYWhlYWQgMjEzCj4gKyNkZWZpbmUgX19OUl9icmsgMjE0
Cj4gKyNkZWZpbmUgX19OUl9tdW5tYXAgMjE1Cj4gKyNkZWZpbmUgX19OUl9tcmVtYXAgMjE2Cj4g
KyNkZWZpbmUgX19OUl9hZGRfa2V5IDIxNwo+ICsjZGVmaW5lIF9fTlJfcmVxdWVzdF9rZXkgMjE4
Cj4gKyNkZWZpbmUgX19OUl9rZXljdGwgMjE5Cj4gKyNkZWZpbmUgX19OUl9jbG9uZSAyMjAKPiAr
I2RlZmluZSBfX05SX2V4ZWN2ZSAyMjEKPiArI2RlZmluZSBfX05SX21tYXAgMjIyCj4gKyNkZWZp
bmUgX19OUl9mYWR2aXNlNjQgMjIzCj4gKyNkZWZpbmUgX19OUl9zd2Fwb24gMjI0Cj4gKyNkZWZp
bmUgX19OUl9zd2Fwb2ZmIDIyNQo+ICsjZGVmaW5lIF9fTlJfbXByb3RlY3QgMjI2Cj4gKyNkZWZp
bmUgX19OUl9tc3luYyAyMjcKPiArI2RlZmluZSBfX05SX21sb2NrIDIyOAo+ICsjZGVmaW5lIF9f
TlJfbXVubG9jayAyMjkKPiArI2RlZmluZSBfX05SX21sb2NrYWxsIDIzMAo+ICsjZGVmaW5lIF9f
TlJfbXVubG9ja2FsbCAyMzEKPiArI2RlZmluZSBfX05SX21pbmNvcmUgMjMyCj4gKyNkZWZpbmUg
X19OUl9tYWR2aXNlIDIzMwo+ICsjZGVmaW5lIF9fTlJfcmVtYXBfZmlsZV9wYWdlcyAyMzQKPiAr
I2RlZmluZSBfX05SX21iaW5kIDIzNQo+ICsjZGVmaW5lIF9fTlJfZ2V0X21lbXBvbGljeSAyMzYK
PiArI2RlZmluZSBfX05SX3NldF9tZW1wb2xpY3kgMjM3Cj4gKyNkZWZpbmUgX19OUl9taWdyYXRl
X3BhZ2VzIDIzOAo+ICsjZGVmaW5lIF9fTlJfbW92ZV9wYWdlcyAyMzkKPiArI2RlZmluZSBfX05S
X3J0X3Rnc2lncXVldWVpbmZvIDI0MAo+ICsjZGVmaW5lIF9fTlJfcGVyZl9ldmVudF9vcGVuIDI0
MQo+ICsjZGVmaW5lIF9fTlJfYWNjZXB0NCAyNDIKPiArI2RlZmluZSBfX05SX3JlY3ZtbXNnIDI0
Mwo+ICsjZGVmaW5lIF9fTlJfd2FpdDQgMjYwCj4gKyNkZWZpbmUgX19OUl9wcmxpbWl0NjQgMjYx
Cj4gKyNkZWZpbmUgX19OUl9mYW5vdGlmeV9pbml0IDI2Mgo+ICsjZGVmaW5lIF9fTlJfZmFub3Rp
ZnlfbWFyayAyNjMKPiArI2RlZmluZSBfX05SX25hbWVfdG9faGFuZGxlX2F0IDI2NAo+ICsjZGVm
aW5lIF9fTlJfb3Blbl9ieV9oYW5kbGVfYXQgMjY1Cj4gKyNkZWZpbmUgX19OUl9jbG9ja19hZGp0
aW1lIDI2Ngo+ICsjZGVmaW5lIF9fTlJfc3luY2ZzIDI2Nwo+ICsjZGVmaW5lIF9fTlJfc2V0bnMg
MjY4Cj4gKyNkZWZpbmUgX19OUl9zZW5kbW1zZyAyNjkKPiArI2RlZmluZSBfX05SX3Byb2Nlc3Nf
dm1fcmVhZHYgMjcwCj4gKyNkZWZpbmUgX19OUl9wcm9jZXNzX3ZtX3dyaXRldiAyNzEKPiArI2Rl
ZmluZSBfX05SX2tjbXAgMjcyCj4gKyNkZWZpbmUgX19OUl9maW5pdF9tb2R1bGUgMjczCj4gKyNk
ZWZpbmUgX19OUl9zY2hlZF9zZXRhdHRyIDI3NAo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YXR0
ciAyNzUKPiArI2RlZmluZSBfX05SX3JlbmFtZWF0MiAyNzYKPiArI2RlZmluZSBfX05SX3NlY2Nv
bXAgMjc3Cj4gKyNkZWZpbmUgX19OUl9nZXRyYW5kb20gMjc4Cj4gKyNkZWZpbmUgX19OUl9tZW1m
ZF9jcmVhdGUgMjc5Cj4gKyNkZWZpbmUgX19OUl9icGYgMjgwCj4gKyNkZWZpbmUgX19OUl9leGVj
dmVhdCAyODEKPiArI2RlZmluZSBfX05SX3VzZXJmYXVsdGZkIDI4Mgo+ICsjZGVmaW5lIF9fTlJf
bWVtYmFycmllciAyODMKPiArI2RlZmluZSBfX05SX21sb2NrMiAyODQKPiArI2RlZmluZSBfX05S
X2NvcHlfZmlsZV9yYW5nZSAyODUKPiArI2RlZmluZSBfX05SX3ByZWFkdjIgMjg2Cj4gKyNkZWZp
bmUgX19OUl9wd3JpdGV2MiAyODcKPiArI2RlZmluZSBfX05SX3BrZXlfbXByb3RlY3QgMjg4Cj4g
KyNkZWZpbmUgX19OUl9wa2V5X2FsbG9jIDI4OQo+ICsjZGVmaW5lIF9fTlJfcGtleV9mcmVlIDI5
MAo+ICsjZGVmaW5lIF9fTlJfc3RhdHggMjkxCj4gKyNkZWZpbmUgX19OUl9pb19wZ2V0ZXZlbnRz
IDI5Mgo+ICsKPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9hcmNoL3g4Nl82NC9zeXNj
YWxsLmguaW4gYi9saWIvc3lzY2FsbF9zaGltL2FyY2gveDg2XzY0L3N5c2NhbGwuaC5pbgo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjkyMmFlNmE4Cj4gLS0tIC9kZXYv
bnVsbAo+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vYXJjaC94ODZfNjQvc3lzY2FsbC5oLmluCj4g
QEAgLTAsMCArMSwzMzcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs
YXVzZSAqLwo+ICsjZGVmaW5lIF9fTlJfcmVhZAkJCQkwCj4gKyNkZWZpbmUgX19OUl93cml0ZQkJ
CQkxCj4gKyNkZWZpbmUgX19OUl9vcGVuCQkJCTIKPiArI2RlZmluZSBfX05SX2Nsb3NlCQkJCTMK
PiArI2RlZmluZSBfX05SX3N0YXQJCQkJNAo+ICsjZGVmaW5lIF9fTlJfZnN0YXQJCQkJNQo+ICsj
ZGVmaW5lIF9fTlJfbHN0YXQJCQkJNgo+ICsjZGVmaW5lIF9fTlJfcG9sbAkJCQk3Cj4gKyNkZWZp
bmUgX19OUl9sc2VlawkJCQk4Cj4gKyNkZWZpbmUgX19OUl9tbWFwCQkJCTkKPiArI2RlZmluZSBf
X05SX21wcm90ZWN0CQkJMTAKPiArI2RlZmluZSBfX05SX211bm1hcAkJCQkxMQo+ICsjZGVmaW5l
IF9fTlJfYnJrCQkJCTEyCj4gKyNkZWZpbmUgX19OUl9ydF9zaWdhY3Rpb24JCTEzCj4gKyNkZWZp
bmUgX19OUl9ydF9zaWdwcm9jbWFzawkJMTQKPiArI2RlZmluZSBfX05SX3J0X3NpZ3JldHVybgkJ
MTUKPiArI2RlZmluZSBfX05SX2lvY3RsCQkJCTE2Cj4gKyNkZWZpbmUgX19OUl9wcmVhZDY0CQkJ
MTcKPiArI2RlZmluZSBfX05SX3B3cml0ZTY0CQkJMTgKPiArI2RlZmluZSBfX05SX3JlYWR2CQkJ
CTE5Cj4gKyNkZWZpbmUgX19OUl93cml0ZXYJCQkJMjAKPiArI2RlZmluZSBfX05SX2FjY2VzcwkJ
CQkyMQo+ICsjZGVmaW5lIF9fTlJfcGlwZQkJCQkyMgo+ICsjZGVmaW5lIF9fTlJfc2VsZWN0CQkJ
CTIzCj4gKyNkZWZpbmUgX19OUl9zY2hlZF95aWVsZAkJMjQKPiArI2RlZmluZSBfX05SX21yZW1h
cAkJCQkyNQo+ICsjZGVmaW5lIF9fTlJfbXN5bmMJCQkJMjYKPiArI2RlZmluZSBfX05SX21pbmNv
cmUJCQkyNwo+ICsjZGVmaW5lIF9fTlJfbWFkdmlzZQkJCTI4Cj4gKyNkZWZpbmUgX19OUl9zaG1n
ZXQJCQkJMjkKPiArI2RlZmluZSBfX05SX3NobWF0CQkJCTMwCj4gKyNkZWZpbmUgX19OUl9zaG1j
dGwJCQkJMzEKPiArI2RlZmluZSBfX05SX2R1cAkJCQkzMgo+ICsjZGVmaW5lIF9fTlJfZHVwMgkJ
CQkzMwo+ICsjZGVmaW5lIF9fTlJfcGF1c2UJCQkJMzQKPiArI2RlZmluZSBfX05SX25hbm9zbGVl
cAkJCTM1Cj4gKyNkZWZpbmUgX19OUl9nZXRpdGltZXIJCQkzNgo+ICsjZGVmaW5lIF9fTlJfYWxh
cm0JCQkJMzcKPiArI2RlZmluZSBfX05SX3NldGl0aW1lcgkJCTM4Cj4gKyNkZWZpbmUgX19OUl9n
ZXRwaWQJCQkJMzkKPiArI2RlZmluZSBfX05SX3NlbmRmaWxlCQkJNDAKPiArI2RlZmluZSBfX05S
X3NvY2tldAkJCQk0MQo+ICsjZGVmaW5lIF9fTlJfY29ubmVjdAkJCTQyCj4gKyNkZWZpbmUgX19O
Ul9hY2NlcHQJCQkJNDMKPiArI2RlZmluZSBfX05SX3NlbmR0bwkJCQk0NAo+ICsjZGVmaW5lIF9f
TlJfcmVjdmZyb20JCQk0NQo+ICsjZGVmaW5lIF9fTlJfc2VuZG1zZwkJCTQ2Cj4gKyNkZWZpbmUg
X19OUl9yZWN2bXNnCQkJNDcKPiArI2RlZmluZSBfX05SX3NodXRkb3duCQkJNDgKPiArI2RlZmlu
ZSBfX05SX2JpbmQJCQkJNDkKPiArI2RlZmluZSBfX05SX2xpc3RlbgkJCQk1MAo+ICsjZGVmaW5l
IF9fTlJfZ2V0c29ja25hbWUJCTUxCj4gKyNkZWZpbmUgX19OUl9nZXRwZWVybmFtZQkJNTIKPiAr
I2RlZmluZSBfX05SX3NvY2tldHBhaXIJCQk1Mwo+ICsjZGVmaW5lIF9fTlJfc2V0c29ja29wdAkJ
CTU0Cj4gKyNkZWZpbmUgX19OUl9nZXRzb2Nrb3B0CQkJNTUKPiArI2RlZmluZSBfX05SX2Nsb25l
CQkJCTU2Cj4gKyNkZWZpbmUgX19OUl9mb3JrCQkJCTU3Cj4gKyNkZWZpbmUgX19OUl92Zm9yawkJ
CQk1OAo+ICsjZGVmaW5lIF9fTlJfZXhlY3ZlCQkJCTU5Cj4gKyNkZWZpbmUgX19OUl9leGl0CQkJ
CTYwCj4gKyNkZWZpbmUgX19OUl93YWl0NAkJCQk2MQo+ICsjZGVmaW5lIF9fTlJfa2lsbAkJCQk2
Mgo+ICsjZGVmaW5lIF9fTlJfdW5hbWUJCQkJNjMKPiArI2RlZmluZSBfX05SX3NlbWdldAkJCQk2
NAo+ICsjZGVmaW5lIF9fTlJfc2Vtb3AJCQkJNjUKPiArI2RlZmluZSBfX05SX3NlbWN0bAkJCQk2
Ngo+ICsjZGVmaW5lIF9fTlJfc2htZHQJCQkJNjcKPiArI2RlZmluZSBfX05SX21zZ2dldAkJCQk2
OAo+ICsjZGVmaW5lIF9fTlJfbXNnc25kCQkJCTY5Cj4gKyNkZWZpbmUgX19OUl9tc2dyY3YJCQkJ
NzAKPiArI2RlZmluZSBfX05SX21zZ2N0bAkJCQk3MQo+ICsjZGVmaW5lIF9fTlJfZmNudGwJCQkJ
NzIKPiArI2RlZmluZSBfX05SX2Zsb2NrCQkJCTczCj4gKyNkZWZpbmUgX19OUl9mc3luYwkJCQk3
NAo+ICsjZGVmaW5lIF9fTlJfZmRhdGFzeW5jCQkJNzUKPiArI2RlZmluZSBfX05SX3RydW5jYXRl
CQkJNzYKPiArI2RlZmluZSBfX05SX2Z0cnVuY2F0ZQkJCTc3Cj4gKyNkZWZpbmUgX19OUl9nZXRk
ZW50cwkJCTc4Cj4gKyNkZWZpbmUgX19OUl9nZXRjd2QJCQkJNzkKPiArI2RlZmluZSBfX05SX2No
ZGlyCQkJCTgwCj4gKyNkZWZpbmUgX19OUl9mY2hkaXIJCQkJODEKPiArI2RlZmluZSBfX05SX3Jl
bmFtZQkJCQk4Mgo+ICsjZGVmaW5lIF9fTlJfbWtkaXIJCQkJODMKPiArI2RlZmluZSBfX05SX3Jt
ZGlyCQkJCTg0Cj4gKyNkZWZpbmUgX19OUl9jcmVhdAkJCQk4NQo+ICsjZGVmaW5lIF9fTlJfbGlu
awkJCQk4Ngo+ICsjZGVmaW5lIF9fTlJfdW5saW5rCQkJCTg3Cj4gKyNkZWZpbmUgX19OUl9zeW1s
aW5rCQkJODgKPiArI2RlZmluZSBfX05SX3JlYWRsaW5rCQkJODkKPiArI2RlZmluZSBfX05SX2No
bW9kCQkJCTkwCj4gKyNkZWZpbmUgX19OUl9mY2htb2QJCQkJOTEKPiArI2RlZmluZSBfX05SX2No
b3duCQkJCTkyCj4gKyNkZWZpbmUgX19OUl9mY2hvd24JCQkJOTMKPiArI2RlZmluZSBfX05SX2xj
aG93bgkJCQk5NAo+ICsjZGVmaW5lIF9fTlJfdW1hc2sJCQkJOTUKPiArI2RlZmluZSBfX05SX2dl
dHRpbWVvZmRheQkJOTYKPiArI2RlZmluZSBfX05SX2dldHJsaW1pdAkJCTk3Cj4gKyNkZWZpbmUg
X19OUl9nZXRydXNhZ2UJCQk5OAo+ICsjZGVmaW5lIF9fTlJfc3lzaW5mbwkJCTk5Cj4gKyNkZWZp
bmUgX19OUl90aW1lcwkJCQkxMDAKPiArI2RlZmluZSBfX05SX3B0cmFjZQkJCQkxMDEKPiArI2Rl
ZmluZSBfX05SX2dldHVpZAkJCQkxMDIKPiArI2RlZmluZSBfX05SX3N5c2xvZwkJCQkxMDMKPiAr
I2RlZmluZSBfX05SX2dldGdpZAkJCQkxMDQKPiArI2RlZmluZSBfX05SX3NldHVpZAkJCQkxMDUK
PiArI2RlZmluZSBfX05SX3NldGdpZAkJCQkxMDYKPiArI2RlZmluZSBfX05SX2dldGV1aWQJCQkx
MDcKPiArI2RlZmluZSBfX05SX2dldGVnaWQJCQkxMDgKPiArI2RlZmluZSBfX05SX3NldHBnaWQJ
CQkxMDkKPiArI2RlZmluZSBfX05SX2dldHBwaWQJCQkxMTAKPiArI2RlZmluZSBfX05SX2dldHBn
cnAJCQkxMTEKPiArI2RlZmluZSBfX05SX3NldHNpZAkJCQkxMTIKPiArI2RlZmluZSBfX05SX3Nl
dHJldWlkCQkJMTEzCj4gKyNkZWZpbmUgX19OUl9zZXRyZWdpZAkJCTExNAo+ICsjZGVmaW5lIF9f
TlJfZ2V0Z3JvdXBzCQkJMTE1Cj4gKyNkZWZpbmUgX19OUl9zZXRncm91cHMJCQkxMTYKPiArI2Rl
ZmluZSBfX05SX3NldHJlc3VpZAkJCTExNwo+ICsjZGVmaW5lIF9fTlJfZ2V0cmVzdWlkCQkJMTE4
Cj4gKyNkZWZpbmUgX19OUl9zZXRyZXNnaWQJCQkxMTkKPiArI2RlZmluZSBfX05SX2dldHJlc2dp
ZAkJCTEyMAo+ICsjZGVmaW5lIF9fTlJfZ2V0cGdpZAkJCTEyMQo+ICsjZGVmaW5lIF9fTlJfc2V0
ZnN1aWQJCQkxMjIKPiArI2RlZmluZSBfX05SX3NldGZzZ2lkCQkJMTIzCj4gKyNkZWZpbmUgX19O
Ul9nZXRzaWQJCQkJMTI0Cj4gKyNkZWZpbmUgX19OUl9jYXBnZXQJCQkJMTI1Cj4gKyNkZWZpbmUg
X19OUl9jYXBzZXQJCQkJMTI2Cj4gKyNkZWZpbmUgX19OUl9ydF9zaWdwZW5kaW5nCQkxMjcKPiAr
I2RlZmluZSBfX05SX3J0X3NpZ3RpbWVkd2FpdAkxMjgKPiArI2RlZmluZSBfX05SX3J0X3NpZ3F1
ZXVlaW5mbwkxMjkKPiArI2RlZmluZSBfX05SX3J0X3NpZ3N1c3BlbmQJCTEzMAo+ICsjZGVmaW5l
IF9fTlJfc2lnYWx0c3RhY2sJCTEzMQo+ICsjZGVmaW5lIF9fTlJfdXRpbWUJCQkJMTMyCj4gKyNk
ZWZpbmUgX19OUl9ta25vZAkJCQkxMzMKPiArI2RlZmluZSBfX05SX3VzZWxpYgkJCQkxMzQKPiAr
I2RlZmluZSBfX05SX3BlcnNvbmFsaXR5CQkxMzUKPiArI2RlZmluZSBfX05SX3VzdGF0CQkJCTEz
Ngo+ICsjZGVmaW5lIF9fTlJfc3RhdGZzCQkJCTEzNwo+ICsjZGVmaW5lIF9fTlJfZnN0YXRmcwkJ
CTEzOAo+ICsjZGVmaW5lIF9fTlJfc3lzZnMJCQkJMTM5Cj4gKyNkZWZpbmUgX19OUl9nZXRwcmlv
cml0eQkJCTE0MAo+ICsjZGVmaW5lIF9fTlJfc2V0cHJpb3JpdHkJCQkxNDEKPiArI2RlZmluZSBf
X05SX3NjaGVkX3NldHBhcmFtCQkJMTQyCj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRwYXJhbQkJ
CTE0Mwo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyCQkxNDQKPiArI2RlZmluZSBf
X05SX3NjaGVkX2dldHNjaGVkdWxlcgkJMTQ1Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRfcHJp
b3JpdHlfbWF4CTE0Ngo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbgkxNDcK
PiArI2RlZmluZSBfX05SX3NjaGVkX3JyX2dldF9pbnRlcnZhbAkxNDgKPiArI2RlZmluZSBfX05S
X21sb2NrCQkJCQkxNDkKPiArI2RlZmluZSBfX05SX211bmxvY2sJCQkJMTUwCj4gKyNkZWZpbmUg
X19OUl9tbG9ja2FsbAkJCQkxNTEKPiArI2RlZmluZSBfX05SX211bmxvY2thbGwJCQkJMTUyCj4g
KyNkZWZpbmUgX19OUl92aGFuZ3VwCQkJCTE1Mwo+ICsjZGVmaW5lIF9fTlJfbW9kaWZ5X2xkdAkJ
CQkxNTQKPiArI2RlZmluZSBfX05SX3Bpdm90X3Jvb3QJCQkJMTU1Cj4gKyNkZWZpbmUgX19OUl9f
c3lzY3RsCQkJCTE1Ngo+ICsjZGVmaW5lIF9fTlJfcHJjdGwJCQkJCTE1Nwo+ICsjZGVmaW5lIF9f
TlJfYXJjaF9wcmN0bAkJCQkxNTgKPiArI2RlZmluZSBfX05SX2FkanRpbWV4CQkJCTE1OQo+ICsj
ZGVmaW5lIF9fTlJfc2V0cmxpbWl0CQkJCTE2MAo+ICsjZGVmaW5lIF9fTlJfY2hyb290CQkJCQkx
NjEKPiArI2RlZmluZSBfX05SX3N5bmMJCQkJCTE2Mgo+ICsjZGVmaW5lIF9fTlJfYWNjdAkJCQkJ
MTYzCj4gKyNkZWZpbmUgX19OUl9zZXR0aW1lb2ZkYXkJCQkxNjQKPiArI2RlZmluZSBfX05SX21v
dW50CQkJCQkxNjUKPiArI2RlZmluZSBfX05SX3Vtb3VudDIJCQkJMTY2Cj4gKyNkZWZpbmUgX19O
Ul9zd2Fwb24JCQkJCTE2Nwo+ICsjZGVmaW5lIF9fTlJfc3dhcG9mZgkJCQkxNjgKPiArI2RlZmlu
ZSBfX05SX3JlYm9vdAkJCQkJMTY5Cj4gKyNkZWZpbmUgX19OUl9zZXRob3N0bmFtZQkJCTE3MAo+
ICsjZGVmaW5lIF9fTlJfc2V0ZG9tYWlubmFtZQkJCTE3MQo+ICsjZGVmaW5lIF9fTlJfaW9wbAkJ
CQkJMTcyCj4gKyNkZWZpbmUgX19OUl9pb3Blcm0JCQkJCTE3Mwo+ICsjZGVmaW5lIF9fTlJfY3Jl
YXRlX21vZHVsZQkJCTE3NAo+ICsjZGVmaW5lIF9fTlJfaW5pdF9tb2R1bGUJCQkxNzUKPiArI2Rl
ZmluZSBfX05SX2RlbGV0ZV9tb2R1bGUJCQkxNzYKPiArI2RlZmluZSBfX05SX2dldF9rZXJuZWxf
c3ltcwkJMTc3Cj4gKyNkZWZpbmUgX19OUl9xdWVyeV9tb2R1bGUJCQkxNzgKPiArI2RlZmluZSBf
X05SX3F1b3RhY3RsCQkJCTE3OQo+ICsjZGVmaW5lIF9fTlJfbmZzc2VydmN0bAkJCQkxODAKPiAr
I2RlZmluZSBfX05SX2dldHBtc2cJCQkJMTgxCj4gKyNkZWZpbmUgX19OUl9wdXRwbXNnCQkJCTE4
Mgo+ICsjZGVmaW5lIF9fTlJfYWZzX3N5c2NhbGwJCQkxODMKPiArI2RlZmluZSBfX05SX3R1eGNh
bGwJCQkJMTg0Cj4gKyNkZWZpbmUgX19OUl9zZWN1cml0eQkJCQkxODUKPiArI2RlZmluZSBfX05S
X2dldHRpZAkJCQkJMTg2Cj4gKyNkZWZpbmUgX19OUl9yZWFkYWhlYWQJCQkJMTg3Cj4gKyNkZWZp
bmUgX19OUl9zZXR4YXR0cgkJCQkxODgKPiArI2RlZmluZSBfX05SX2xzZXR4YXR0cgkJCQkxODkK
PiArI2RlZmluZSBfX05SX2ZzZXR4YXR0cgkJCQkxOTAKPiArI2RlZmluZSBfX05SX2dldHhhdHRy
CQkJCTE5MQo+ICsjZGVmaW5lIF9fTlJfbGdldHhhdHRyCQkJCTE5Mgo+ICsjZGVmaW5lIF9fTlJf
ZmdldHhhdHRyCQkJCTE5Mwo+ICsjZGVmaW5lIF9fTlJfbGlzdHhhdHRyCQkJCTE5NAo+ICsjZGVm
aW5lIF9fTlJfbGxpc3R4YXR0cgkJCQkxOTUKPiArI2RlZmluZSBfX05SX2ZsaXN0eGF0dHIJCQkJ
MTk2Cj4gKyNkZWZpbmUgX19OUl9yZW1vdmV4YXR0cgkJCTE5Nwo+ICsjZGVmaW5lIF9fTlJfbHJl
bW92ZXhhdHRyCQkJMTk4Cj4gKyNkZWZpbmUgX19OUl9mcmVtb3ZleGF0dHIJCQkxOTkKPiArI2Rl
ZmluZSBfX05SX3RraWxsCQkJCQkyMDAKPiArI2RlZmluZSBfX05SX3RpbWUJCQkJCTIwMQo+ICsj
ZGVmaW5lIF9fTlJfZnV0ZXgJCQkJCTIwMgo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfc2V0YWZmaW5p
dHkJCTIwMwo+ICsjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHkJCTIwNAo+ICsjZGVmaW5l
IF9fTlJfc2V0X3RocmVhZF9hcmVhCQkyMDUKPiArI2RlZmluZSBfX05SX2lvX3NldHVwCQkJCTIw
Ngo+ICsjZGVmaW5lIF9fTlJfaW9fZGVzdHJveQkJCQkyMDcKPiArI2RlZmluZSBfX05SX2lvX2dl
dGV2ZW50cwkJCTIwOAo+ICsjZGVmaW5lIF9fTlJfaW9fc3VibWl0CQkJCTIwOQo+ICsjZGVmaW5l
IF9fTlJfaW9fY2FuY2VsCQkJCTIxMAo+ICsjZGVmaW5lIF9fTlJfZ2V0X3RocmVhZF9hcmVhCQky
MTEKPiArI2RlZmluZSBfX05SX2xvb2t1cF9kY29va2llCQkJMjEyCj4gKyNkZWZpbmUgX19OUl9l
cG9sbF9jcmVhdGUJCQkyMTMKPiArI2RlZmluZSBfX05SX2Vwb2xsX2N0bF9vbGQJCQkyMTQKPiAr
I2RlZmluZSBfX05SX2Vwb2xsX3dhaXRfb2xkCQkJMjE1Cj4gKyNkZWZpbmUgX19OUl9yZW1hcF9m
aWxlX3BhZ2VzCQkyMTYKPiArI2RlZmluZSBfX05SX2dldGRlbnRzNjQJCQkJMjE3Cj4gKyNkZWZp
bmUgX19OUl9zZXRfdGlkX2FkZHJlc3MJCTIxOAo+ICsjZGVmaW5lIF9fTlJfcmVzdGFydF9zeXNj
YWxsCQkyMTkKPiArI2RlZmluZSBfX05SX3NlbXRpbWVkb3AJCQkJMjIwCj4gKyNkZWZpbmUgX19O
Ul9mYWR2aXNlNjQJCQkJMjIxCj4gKyNkZWZpbmUgX19OUl90aW1lcl9jcmVhdGUJCQkyMjIKPiAr
I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUJCQkyMjMKPiArI2RlZmluZSBfX05SX3RpbWVyX2dl
dHRpbWUJCQkyMjQKPiArI2RlZmluZSBfX05SX3RpbWVyX2dldG92ZXJydW4JCTIyNQo+ICsjZGVm
aW5lIF9fTlJfdGltZXJfZGVsZXRlCQkJMjI2Cj4gKyNkZWZpbmUgX19OUl9jbG9ja19zZXR0aW1l
CQkJMjI3Cj4gKyNkZWZpbmUgX19OUl9jbG9ja19nZXR0aW1lCQkJMjI4Cj4gKyNkZWZpbmUgX19O
Ul9jbG9ja19nZXRyZXMJCQkyMjkKPiArI2RlZmluZSBfX05SX2Nsb2NrX25hbm9zbGVlcAkJMjMw
Cj4gKyNkZWZpbmUgX19OUl9leGl0X2dyb3VwCQkJCTIzMQo+ICsjZGVmaW5lIF9fTlJfZXBvbGxf
d2FpdAkJCQkyMzIKPiArI2RlZmluZSBfX05SX2Vwb2xsX2N0bAkJCQkyMzMKPiArI2RlZmluZSBf
X05SX3Rna2lsbAkJCQkJMjM0Cj4gKyNkZWZpbmUgX19OUl91dGltZXMJCQkJCTIzNQo+ICsjZGVm
aW5lIF9fTlJfdnNlcnZlcgkJCQkyMzYKPiArI2RlZmluZSBfX05SX21iaW5kCQkJCQkyMzcKPiAr
I2RlZmluZSBfX05SX3NldF9tZW1wb2xpY3kJCQkyMzgKPiArI2RlZmluZSBfX05SX2dldF9tZW1w
b2xpY3kJCQkyMzkKPiArI2RlZmluZSBfX05SX21xX29wZW4JCQkJMjQwCj4gKyNkZWZpbmUgX19O
Ul9tcV91bmxpbmsJCQkJMjQxCj4gKyNkZWZpbmUgX19OUl9tcV90aW1lZHNlbmQJCQkyNDIKPiAr
I2RlZmluZSBfX05SX21xX3RpbWVkcmVjZWl2ZQkJMjQzCj4gKyNkZWZpbmUgX19OUl9tcV9ub3Rp
ZnkJCQkJMjQ0Cj4gKyNkZWZpbmUgX19OUl9tcV9nZXRzZXRhdHRyCQkJMjQ1Cj4gKyNkZWZpbmUg
X19OUl9rZXhlY19sb2FkCQkJCTI0Ngo+ICsjZGVmaW5lIF9fTlJfd2FpdGlkCQkJCQkyNDcKPiAr
I2RlZmluZSBfX05SX2FkZF9rZXkJCQkJMjQ4Cj4gKyNkZWZpbmUgX19OUl9yZXF1ZXN0X2tleQkJ
CTI0OQo+ICsjZGVmaW5lIF9fTlJfa2V5Y3RsCQkJCQkyNTAKPiArI2RlZmluZSBfX05SX2lvcHJp
b19zZXQJCQkJMjUxCj4gKyNkZWZpbmUgX19OUl9pb3ByaW9fZ2V0CQkJCTI1Mgo+ICsjZGVmaW5l
IF9fTlJfaW5vdGlmeV9pbml0CQkJMjUzCj4gKyNkZWZpbmUgX19OUl9pbm90aWZ5X2FkZF93YXRj
aAkJMjU0Cj4gKyNkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoCQkyNTUKPiArI2RlZmluZSBf
X05SX21pZ3JhdGVfcGFnZXMJCQkyNTYKPiArI2RlZmluZSBfX05SX29wZW5hdAkJCQkJMjU3Cj4g
KyNkZWZpbmUgX19OUl9ta2RpcmF0CQkJCTI1OAo+ICsjZGVmaW5lIF9fTlJfbWtub2RhdAkJCQky
NTkKPiArI2RlZmluZSBfX05SX2ZjaG93bmF0CQkJCTI2MAo+ICsjZGVmaW5lIF9fTlJfZnV0aW1l
c2F0CQkJCTI2MQo+ICsjZGVmaW5lIF9fTlJfbmV3ZnN0YXRhdAkJCQkyNjIKPiArI2RlZmluZSBf
X05SX3VubGlua2F0CQkJCTI2Mwo+ICsjZGVmaW5lIF9fTlJfcmVuYW1lYXQJCQkJMjY0Cj4gKyNk
ZWZpbmUgX19OUl9saW5rYXQJCQkJCTI2NQo+ICsjZGVmaW5lIF9fTlJfc3ltbGlua2F0CQkJCTI2
Ngo+ICsjZGVmaW5lIF9fTlJfcmVhZGxpbmthdAkJCQkyNjcKPiArI2RlZmluZSBfX05SX2ZjaG1v
ZGF0CQkJCTI2OAo+ICsjZGVmaW5lIF9fTlJfZmFjY2Vzc2F0CQkJCTI2OQo+ICsjZGVmaW5lIF9f
TlJfcHNlbGVjdDYJCQkJMjcwCj4gKyNkZWZpbmUgX19OUl9wcG9sbAkJCQkJMjcxCj4gKyNkZWZp
bmUgX19OUl91bnNoYXJlCQkJCTI3Mgo+ICsjZGVmaW5lIF9fTlJfc2V0X3JvYnVzdF9saXN0CQky
NzMKPiArI2RlZmluZSBfX05SX2dldF9yb2J1c3RfbGlzdAkJMjc0Cj4gKyNkZWZpbmUgX19OUl9z
cGxpY2UJCQkJCTI3NQo+ICsjZGVmaW5lIF9fTlJfdGVlCQkJCQkyNzYKPiArI2RlZmluZSBfX05S
X3N5bmNfZmlsZV9yYW5nZQkJMjc3Cj4gKyNkZWZpbmUgX19OUl92bXNwbGljZQkJCQkyNzgKPiAr
I2RlZmluZSBfX05SX21vdmVfcGFnZXMJCQkJMjc5Cj4gKyNkZWZpbmUgX19OUl91dGltZW5zYXQJ
CQkJMjgwCj4gKyNkZWZpbmUgX19OUl9lcG9sbF9wd2FpdAkJCTI4MQo+ICsjZGVmaW5lIF9fTlJf
c2lnbmFsZmQJCQkJMjgyCj4gKyNkZWZpbmUgX19OUl90aW1lcmZkX2NyZWF0ZQkJCTI4Mwo+ICsj
ZGVmaW5lIF9fTlJfZXZlbnRmZAkJCQkyODQKPiArI2RlZmluZSBfX05SX2ZhbGxvY2F0ZQkJCQky
ODUKPiArI2RlZmluZSBfX05SX3RpbWVyZmRfc2V0dGltZQkJMjg2Cj4gKyNkZWZpbmUgX19OUl90
aW1lcmZkX2dldHRpbWUJCTI4Nwo+ICsjZGVmaW5lIF9fTlJfYWNjZXB0NAkJCQkyODgKPiArI2Rl
ZmluZSBfX05SX3NpZ25hbGZkNAkJCQkyODkKPiArI2RlZmluZSBfX05SX2V2ZW50ZmQyCQkJCTI5
MAo+ICsjZGVmaW5lIF9fTlJfZXBvbGxfY3JlYXRlMQkJCTI5MQo+ICsjZGVmaW5lIF9fTlJfZHVw
MwkJCQkJMjkyCj4gKyNkZWZpbmUgX19OUl9waXBlMgkJCQkJMjkzCj4gKyNkZWZpbmUgX19OUl9p
bm90aWZ5X2luaXQxCQkJMjk0Cj4gKyNkZWZpbmUgX19OUl9wcmVhZHYJCQkJCTI5NQo+ICsjZGVm
aW5lIF9fTlJfcHdyaXRldgkJCQkyOTYKPiArI2RlZmluZSBfX05SX3J0X3Rnc2lncXVldWVpbmZv
CQkyOTcKPiArI2RlZmluZSBfX05SX3BlcmZfZXZlbnRfb3BlbgkJMjk4Cj4gKyNkZWZpbmUgX19O
Ul9yZWN2bW1zZwkJCQkyOTkKPiArI2RlZmluZSBfX05SX2Zhbm90aWZ5X2luaXQJCQkzMDAKPiAr
I2RlZmluZSBfX05SX2Zhbm90aWZ5X21hcmsJCQkzMDEKPiArI2RlZmluZSBfX05SX3BybGltaXQ2
NAkJCQkzMDIKPiArI2RlZmluZSBfX05SX25hbWVfdG9faGFuZGxlX2F0CQkJMzAzCj4gKyNkZWZp
bmUgX19OUl9vcGVuX2J5X2hhbmRsZV9hdAkJCTMwNAo+ICsjZGVmaW5lIF9fTlJfY2xvY2tfYWRq
dGltZQkJCTMwNQo+ICsjZGVmaW5lIF9fTlJfc3luY2ZzCQkJCTMwNgo+ICsjZGVmaW5lIF9fTlJf
c2VuZG1tc2cJCQkJMzA3Cj4gKyNkZWZpbmUgX19OUl9zZXRucwkJCQkzMDgKPiArI2RlZmluZSBf
X05SX2dldGNwdQkJCQkzMDkKPiArI2RlZmluZSBfX05SX3Byb2Nlc3Nfdm1fcmVhZHYJCQkzMTAK
PiArI2RlZmluZSBfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2CQkJMzExCj4gKyNkZWZpbmUgX19OUl9r
Y21wCQkJCTMxMgo+ICsjZGVmaW5lIF9fTlJfZmluaXRfbW9kdWxlCQkJMzEzCj4gKyNkZWZpbmUg
X19OUl9zY2hlZF9zZXRhdHRyCQkJMzE0Cj4gKyNkZWZpbmUgX19OUl9zY2hlZF9nZXRhdHRyCQkJ
MzE1Cj4gKyNkZWZpbmUgX19OUl9yZW5hbWVhdDIJCQkJMzE2Cj4gKyNkZWZpbmUgX19OUl9zZWNj
b21wCQkJCTMxNwo+ICsjZGVmaW5lIF9fTlJfZ2V0cmFuZG9tCQkJCTMxOAo+ICsjZGVmaW5lIF9f
TlJfbWVtZmRfY3JlYXRlCQkJMzE5Cj4gKyNkZWZpbmUgX19OUl9rZXhlY19maWxlX2xvYWQJCQkz
MjAKPiArI2RlZmluZSBfX05SX2JwZgkJCQkzMjEKPiArI2RlZmluZSBfX05SX2V4ZWN2ZWF0CQkJ
CTMyMgo+ICsjZGVmaW5lIF9fTlJfdXNlcmZhdWx0ZmQJCQkzMjMKPiArI2RlZmluZSBfX05SX21l
bWJhcnJpZXIJCQkJMzI0Cj4gKyNkZWZpbmUgX19OUl9tbG9jazIJCQkJMzI1Cj4gKyNkZWZpbmUg
X19OUl9jb3B5X2ZpbGVfcmFuZ2UJCQkzMjYKPiArI2RlZmluZSBfX05SX3ByZWFkdjIJCQkJMzI3
Cj4gKyNkZWZpbmUgX19OUl9wd3JpdGV2MgkJCQkzMjgKPiArI2RlZmluZSBfX05SX3BrZXlfbXBy
b3RlY3QJCQkzMjkKPiArI2RlZmluZSBfX05SX3BrZXlfYWxsb2MJCQkJMzMwCj4gKyNkZWZpbmUg
X19OUl9wa2V5X2ZyZWUJCQkJMzMxCj4gKyNkZWZpbmUgX19OUl9zdGF0eAkJCQkzMzIKPiArI2Rl
ZmluZSBfX05SX2lvX3BnZXRldmVudHMJCQkzMzMKPiArI2RlZmluZSBfX05SX3JzZXEJCQkJMzM0
Cj4gKwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 12:56:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 12:56: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 1hYrwC-0007HK-Tl; Thu, 06 Jun 2019 12:56:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=EhTR=UF=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hYrwB-0007HA-L0
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 12:56:11 +0000
X-Inumbo-ID: 74777299-885a-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 74777299-885a-11e9-8980-bc764e045a96;
 Thu, 06 Jun 2019 12:56:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 8542F104C1C;
 Thu,  6 Jun 2019 14:55:19 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hrwDbtYFQiXb; Thu,  6 Jun 2019 14:55:19 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 61E94104B74
 for <minios-devel@lists.xen.org>; Thu,  6 Jun 2019 14:55:19 +0200 (CEST)
Received: from [10.1.99.239] (10.1.99.239) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2;
 Thu, 6 Jun 2019 14:55:19 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
 <20190605155511.26450-5-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <c1add075-578d-552f-124d-64e209eac360@neclab.eu>
Date: Thu, 6 Jun 2019 14:55:18 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605155511.26450-5-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.99.239]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/9] lib/syscall_shim:
 generate base headers
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKQWNj
ZXB0ZWQgd2l0aCBzb21lIG1pbm9yIGNvbW1lbnRzIDstKS4gSSB3aWxsIGZpeCBpdCB3aGlsZSB1
cHN0cmVhbWluZy4gClNlZSBteSBpbmxpbmUgY29tbWVudHMuClRoYW5rcyBmb3IgeW91ciB3b3Jr
LgoKT24gMDUuMDYuMTkgMTc6NTUsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhlIGZvbGxvd2lu
ZyBoZWFkZXJzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGNvZGUgaW4gdGhpcyBwYXRjaDoKPiAgICAt
IHN5c2NhbGxfbnJzLmggLSBqdXN0IGRlZmluaXRpb25zIG9mIGFsbCB0aGUgc3lzY2FsbHMgd2l0
aCB0aGVpcgo+ICAgICAgbnVtYmVycwo+ICAgIC0gc3lzY2FsbF9tYXAuaCAgLSBwcm92aWRlcyBt
YXBzIGZyb20gc3lzY2FsbCBudW1iZXIgdG8gYSBjb25jcmV0ZQo+ICAgICAgZnVuY3Rpb24gaW4g
dGhlIFVuaWthcmZ0Cj4gICAgLSBzeXNjYWxsX3N0dWJzLmggLSBpZiBubyBsaWJyYXJ5IGlzIHBy
b3ZpZGluZyBhIHN5c2NhbGwsIGl0IHdpbGwgYmUKPiAgICAgIHJlc29sdmVkIHRvIGEgc3R1Yiwg
ZGVmaW5lZCBpbiB0aGlzIGZpbGUKPiAKPiBTaWduZWQtb2ZmLWJ5OiBZdXJpIFZvbGNoa292IDx5
dXJpLnZvbGNoa292QG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi9Db25maWcudWsgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAxICsKPiAgIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAg
ICAgICB8ICAxICsKPiAgIGxpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrICAgICAgICAgICB8ICAz
ICsrKwo+ICAgbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayAgICAgICAgIHwgMzggKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdr
ICAgICAgIHwgIDggKysrKysrCj4gICBsaWIvc3lzY2FsbF9zaGltL2dlbl9zeXNjYWxsX21hcC5h
d2sgfCAgNCArKysKPiAgIGxpYi9zeXNjYWxsX3NoaW0vZ2VuX3N5c2NhbGxfbnJzLmF3ayB8ICA0
ICsrKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5
c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9tYXAuYXdrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9ucnMuYXdrCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9D
b25maWcudWsgYi9saWIvQ29uZmlnLnVrCj4gaW5kZXggODIyYzYyNGYuLmI1MTdhYmQ4IDEwMDY0
NAo+IC0tLSBhL2xpYi9Db25maWcudWsKPiArKysgYi9saWIvQ29uZmlnLnVrCj4gQEAgLTQ3LDMg
KzQ3LDQgQEAgc291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIv
dWtidXMvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgo+ICAg
c291cmNlICJsaWIvdWtuZXRkZXYvQ29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi9zeXNjYWxsX3No
aW0vQ29uZmlnLnVrIgo+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIvTWFrZWZp
bGUudWsKPiBpbmRleCBkMDY4MzdmMS4uZTY2NjQ5NTIgMTAwNjQ0Cj4gLS0tIGEvbGliL01ha2Vm
aWxlLnVrCj4gKysrIGIvbGliL01ha2VmaWxlLnVrCj4gQEAgLTI0LDMgKzI0LDQgQEAgJChldmFs
ICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQo+ICAgJChl
dmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQo+ICAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xpc3Qp
KQo+ICAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtu
ZXRkZXYpKQo+ICskKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xp
Yi9zeXNjYWxsX3NoaW0pKQo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL0NvbmZpZy51
ayBiL2xpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwMC4uZjg4Y2Y5NzAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3N5c2Nh
bGxfc2hpbS9Db25maWcudWsKPiBAQCAtMCwwICsxLDMgQEAKPiArY29uZmlnIExJQlNZU0NBTExf
U0hJTQo+ICsJYm9vbCAiU3lzY2FsbCBzaGltIGxheWVyIgo+ICsJZGVmYXVsdCBuCj4gZGlmZiAt
LWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgYi9saWIvc3lzY2FsbF9zaGltL01h
a2VmaWxlLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uNTIwZTky
MDYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+
IEBAIC0wLDAgKzEsMzggQEAKPiArJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJzeXNjYWxsX3No
aW0sJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSkpCj4gKwo+ICtMSUJTWVNDQUxMX1NISU1fSU5D
TFVERVNfUEFUSCA6PSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvaW5jbHVkZS91ay9iaXRzCj4g
Kwo+ICtMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDIDo9IHN5c2NhbGxfbWFwLmggc3lzY2FsbF9z
dHVicy5oIHN5c2NhbGxfbnJzLmgKPiArTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQyA6PSAkKGFk
ZHByZWZpeCAkKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS8sICQoTElCU1lTQ0FMTF9T
SElNX1BIT05ZX1NSQykpCj4gK0xJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkNfTkVXIDo9ICQoYWRk
c3VmZml4IC5uZXcsICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykpCj4gKwo+ICtVS19QUkVQ
QVJFLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkgKz0gJChMSUJTWVNDQUxMX1NISU1fUEhPTllf
U1JDKQo+ICsKPiArCj4gK0xJQlNZU0NBTExfU0hJTV9URU1QTCA6PSAkKExJQlNZU0NBTExfU0hJ
TV9CQVNFKS9hcmNoLyQoQ09ORklHX1VLX0FSQ0gpL3N5c2NhbGwuaC5pbgo+ICsKPiArJChpZiAk
KHNoZWxsIG1rZGlyIC1wICQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpICYmIFwKPiAr
CWNkICQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpID4vZGV2L251bGwgJiYgcHdkKSws
XAo+ICsJCSQoZXJyb3IgY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJDEpKQoKQXMgd2UgZGlz
Y3Vzc2VkIG9mZmxpbmUsIEkgd2lsbCBwcm9kdWNlIGEgZm9sbG93LXVwIHBhdGNoIHRoYXQgcHJv
dmlkZXMgCmFuIE1ha2UgZnVuY3Rpb24gdGhhdCBzaW1wbGlmaWVzIGNyZWF0aW5nIHN1Yi1idWls
ZCBkaXJlY3RvcmllcyBmb3IgCmxpYnJhcmllcy4gU28gSSB3aWxsIGFjY2VwdCB0aGlzIGluIHRo
aXMgd2F5IGZvciBub3cuCgo+ICsKPiArLlBIT05ZOiAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9T
UkNfTkVXKQo+ICsKPiArJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDKTogJTogJS5uZXcKPiAr
CUBjbXAgLXMgJF4gJEA7IGlmIFsgJCQ/IC1uZSAwIF07IHRoZW4gY3AgJF4gJEA7IGZpCj4gKwo+
ICskKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS9zeXNjYWxsX25ycy5oLm5ldzoKPiAr
CSQoY2FsbCBidWlsZF9jbWQsR0VOLFNZU0NBTExfU0hJTSwkKG5vdGRpciAkQCksIFwKCiJTWVND
QUxMX1NISU0iIHNob3VsZCBiZSBhY3R1YWxseSBjYWxsZWQgImxpYnN5c2NhbGxfc2hpbSIgaW4g
dGhlIApidWlsZF9jbWQuIFRoaXMgaXMgdG8gYmUgaW5saW5lIHdpdGggdGhlIGZvcm1hdCBvZiB0
aGUgYXV0b21hdGljYWxseSAKZ2VuZXJhdGVkIGNvbXBpbGUgcnVsZXMuIEkgd2lsbCBhZG9wdCB0
aGlzIG9uIHVwc3RyZWFtaW5nIChhbHNvIG9uIHRoZSAKb3RoZXIgcGF0Y2hlcykuCgo+ICsJCSQo
QVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fc3lzY2FsbF9ucnMuYXdrIFwKPiAr
CQkkKExJQlNZU0NBTExfU0hJTV9URU1QTCkgPiAkQCkKPiArCj4gKyQoTElCU1lTQ0FMTF9TSElN
X0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxfbWFwLmgubmV3Ogo+ICsJJChjYWxsIGJ1aWxkX2NtZCxH
RU4sU1lTQ0FMTF9TSElNLCQobm90ZGlyICRAKSwgXAo+ICsJCSQoQVdLKSAtZiAgJChMSUJTWVND
QUxMX1NISU1fQkFTRSkvZ2VuX3N5c2NhbGxfbWFwLmF3ayBcCj4gKwkJJChMSUJTWVNDQUxMX1NI
SU1fVEVNUEwpID4gJEApCj4gKwo+ICskKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS9z
eXNjYWxsX3N0dWJzLmgubmV3Ogo+ICsJJChjYWxsIGJ1aWxkX2NtZCxHRU4sU1lTQ0FMTF9TSElN
LCQobm90ZGlyICRAKSwgXAo+ICsJCSQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9n
ZW5fc3R1YnMuYXdrIFwKPiArCQkkKExJQlNZU0NBTExfU0hJTV9URU1QTCkgPiAkQCkKPiArCj4g
K0xJQlNZU0NBTExfU0hJTV9DTEVBTiA9ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykgJChM
SUJTWVNDQUxMX1NISU1fUEhPTllfU1JDX05FVykKPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxf
c2hpbS9nZW5fc3R1YnMuYXdrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZGUxMzZmMTgKPiAtLS0gL2Rldi9u
dWxsCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3R1YnMuYXdrCj4gQEAgLTAsMCArMSw4
IEBACj4gK0JFR0lOIHsgcHJpbnQgIi8qIEF1dG8gZ2VuZXJhdGVkIGZpbGUuIERvIG5vdCBlZGl0
ICovIiB9Cj4gKy8jZGVmaW5lIF9fTlJfLyB7Cj4gKwluYW1lID0gc3Vic3RyKCQyLDYpOwo+ICsJ
dWtfbmFtZSA9ICJ1a19zeXNjYWxsXyIgbmFtZQo+ICsJcHJpbnRmICJcbiNpZm5kZWYgSEFWRV8l
cyIsIHVrX25hbWU7Cj4gKwlwcmludGYgIlxuI2RlZmluZSAlcyguLi4pIHVrX3N5c2NhbGxfc3R1
YihcIiVzXCIpIiwgdWtfbmFtZSwgbmFtZTsKPiArCXByaW50ZiAiXG4jZW5kaWYgLyogSEFWRV8l
cyAqL1xuIiwgdWtfbmFtZTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2dl
bl9zeXNjYWxsX21hcC5hd2sgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9zeXNjYWxsX21hcC5hd2sK
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi45OWIyNDdkZAo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9zeXNjYWxsX21hcC5hd2sKPiBA
QCAtMCwwICsxLDQgQEAKPiArQkVHSU4ge3ByaW50ICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmaWxlOyBETyBOT1QgRURJVCAqL1xuIn0KPiArLyNkZWZpbmUgX19OUl8vewo+ICsJcHJpbnRm
ICIjZGVmaW5lIHVrX3N5c2NhbGxfZm5fJXMoLi4uKSB1a19zeXNjYWxsXyVzKF9fVkFfQVJHU19f
KVxuIiwgJDMsc3Vic3RyKCQyLDYpCj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hp
bS9nZW5fc3lzY2FsbF9ucnMuYXdrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9ucnMu
YXdrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uOTZhMmQ2YTQKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fc3lzY2FsbF9ucnMuYXdr
Cj4gQEAgLTAsMCArMSw0IEBACj4gK0JFR0lOIHtwcmludCAiLyogQXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZmlsZTsgRE8gTk9UIEVESVQgKi8ifQo+ICsvI2RlZmluZSBfX05SXy97Cj4gKwkgcHJp
bnRmICJcbiNkZWZpbmUgU1lTXyVzXHRcdCVzIiwgc3Vic3RyKCQyLDYpLCQzCj4gK30KPiAKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 16:39:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 16:39:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hYvPy-0001W8-6T; Thu, 06 Jun 2019 16:39: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=vGVi=UF=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hYvPw-0001W3-Q6
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 16:39:08 +0000
X-Inumbo-ID: 98946f94-8879-11e9-b29d-3b8d2241ef82
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.89]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 98946f94-8879-11e9-b29d-3b8d2241ef82;
 Thu, 06 Jun 2019 16:39:05 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4876.eurprd01.prod.exchangelabs.com (20.177.209.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1943.22; Thu, 6 Jun
 2019 16:39:03 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Thu, 6 Jun 2019
 16:39:03 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 1/1] Add servent and protoent
Thread-Index: AQHVHIZZnIDLjpjZgkuhKpjqp2ZX1Q==
Date: Thu, 6 Jun 2019 16:39:03 +0000
Message-ID: <20190606163854.19423-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0079.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:802:59::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 50c5e8e4-b2c4-4e3e-03c9-08d6ea9d7bd5
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4876; 
x-ms-traffictypediagnostic: PR1PR01MB4876:
x-microsoft-antispam-prvs: <PR1PR01MB487698791AADEA403DCA723CA6170@PR1PR01MB4876.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:185;
x-forefront-prvs: 00603B7EEF
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(366004)(39840400004)(376002)(136003)(396003)(189003)(199004)(25786009)(4326008)(54906003)(53936002)(52116002)(26005)(186003)(2501003)(102836004)(6916009)(2351001)(14454004)(99286004)(85202003)(85182001)(6506007)(316002)(786003)(6512007)(66556008)(64756008)(66446008)(66066001)(66476007)(73956011)(66946007)(256004)(5640700003)(74482002)(5660300002)(6486002)(4744005)(6436002)(86362001)(71200400001)(1076003)(68736007)(386003)(3846002)(6116002)(476003)(486006)(2906002)(50226002)(508600001)(2616005)(8676002)(71190400001)(81166006)(305945005)(81156014)(7736002)(8936002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4876;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: vrL+flQ5/o3ZpIMRQbUD0BriUPyABR8HJxuirRG0EiVFbRi1D5xR/1zHv5ep/nfA4J4OBxFzu3hyeMkHvyV3SftIYtXCbhD8fOhhlkWyCy98VjfHmgk39gbuz+mroNlRT8FaIh4my5Jxl6ZhJL6o5V3Us3QnmG5xxg0dSrYy08DUNIyBc68qjwrqSQxRPxgIVrE3F3wbOltrJlItWoWw/csHuDZ7AFJz/zI+TFYF0jJpnwLIfMGJdKfiRoiJfPlK/lAEVMkgfubqGIZT2EUt6yjln7j3ktOEfn+9aWGqHq+AmYSQ/ldNv2W43Govijo3kp9lcBdw1qjqFrIKIjZB+FPMZ5vzHMuu9lPP1R0PyESugLO4TJYAZIV/NTb/xrxvmX975dqch5QhEYWQYCIizbGfk0gVrGERbKk0ZIrHghA=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 50c5e8e4-b2c4-4e3e-03c9-08d6ea9d7bd5
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2019 16:39:03.0455 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4876
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/1] Add servent and protoent
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBkZWZpbml0aW9uIG9mIHNlcnZlbnQgYW5kIHByb3RvZW50IHRv
IG5ldGRiLmggc2luY2UgaXQgaXMNCm1pc3NpbmcgZnJvbSBsd2lwL25ldGRiLmggLg0KDQpTaWdu
ZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+DQotLS0NCiBpbmNsdWRlL25ldGRiLmggfCAxMyArKysrKysrKysrKysrDQogMSBm
aWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0
ZGIuaCBiL2luY2x1ZGUvbmV0ZGIuaA0KaW5kZXggNWUyZWI2MC4uNmJhNmFhZCAxMDA2NDQNCi0t
LSBhL2luY2x1ZGUvbmV0ZGIuaA0KKysrIGIvaW5jbHVkZS9uZXRkYi5oDQpAQCAtMSArMSwxNCBA
QA0KICNpbmNsdWRlIDxjb21wYXQvcG9zaXgvbmV0ZGIuaD4NCisNCitzdHJ1Y3Qgc2VydmVudCB7
DQorCWNoYXIgICAgKnNfbmFtZTsgICAgICAgIC8qIG9mZmljaWFsIHNlcnZpY2UgbmFtZSAqLw0K
KwljaGFyICAgICoqc19hbGlhc2VzOyAgICAvKiBhbGlhcyBsaXN0ICovDQorCWludCAgICAgc19w
b3J0OyAgICAgICAgIC8qIHBvcnQgIyAqLw0KKwljaGFyICAgICpzX3Byb3RvOyAgICAgICAvKiBw
cm90b2NvbCB0byB1c2UgKi8NCit9Ow0KKw0KK3N0cnVjdCBwcm90b2VudCB7DQorCWNoYXIgICAg
KnBfbmFtZTsgICAgICAgIC8qIG9mZmljaWFsIHByb3RvY29sIG5hbWUgKi8NCisJY2hhciAgICAq
KnBfYWxpYXNlczsgICAgLyogYWxpYXMgbGlzdCAqLw0KKwlpbnQgICAgIHBfcHJvdG87ICAgICAg
ICAvKiBwcm90b2NvbCAjICovDQorfTsNCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 06 21:24:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Jun 2019 21:24: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 1hYzsJ-0006si-DN; Thu, 06 Jun 2019 21:24:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=4bId=UF=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hYzsH-0006sd-Mt
 for minios-devel@lists.xen.org; Thu, 06 Jun 2019 21:24:41 +0000
X-Inumbo-ID: 7cdfc362-88a1-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7cdfc362-88a1-11e9-8980-bc764e045a96;
 Thu, 06 Jun 2019 21:24:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 4937D103B6A;
 Thu,  6 Jun 2019 23:24:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 8pQk_DOooakV; Thu,  6 Jun 2019 23:24:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 268C910013D;
 Thu,  6 Jun 2019 23:24:37 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Thu, 6 Jun 2019 23:24:37 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 1/1] Add servent and protoent
Thread-Index: AQHVHIZZnIDLjpjZgkuhKpjqp2ZX1aaPI22A
Date: Thu, 6 Jun 2019 21:24:36 +0000
Message-ID: <3F3703E3-FDCB-4C7C-AA24-D824FBECAFC6@neclab.eu>
References: <20190606163854.19423-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190606163854.19423-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.196]
Content-ID: <0ACE97A69B9607499F5B10647E458CF7@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/1] Add servent and
 protoent
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwgdGhpcyBwYXRjaCBsb29rcyBnb29kLCB0aGFua3MuDQoNCi0tIEZlbGlwZQ0KDQpS
ZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KDQrvu79P
biAwNi4wNi4xOSwgMTg6MzksICJWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2bGFkX2Fu
ZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPiB3cm90ZToNCg0KICAgIFRoaXMgcGF0Y2ggYWRk
cyB0aGUgZGVmaW5pdGlvbiBvZiBzZXJ2ZW50IGFuZCBwcm90b2VudCB0byBuZXRkYi5oIHNpbmNl
IGl0IGlzDQogICAgbWlzc2luZyBmcm9tIGx3aXAvbmV0ZGIuaCAuDQogICAgDQogICAgU2lnbmVk
LW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3Mu
dXBiLnJvPg0KICAgIC0tLQ0KICAgICBpbmNsdWRlL25ldGRiLmggfCAxMyArKysrKysrKysrKysr
DQogICAgIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspDQogICAgDQogICAgZGlmZiAt
LWdpdCBhL2luY2x1ZGUvbmV0ZGIuaCBiL2luY2x1ZGUvbmV0ZGIuaA0KICAgIGluZGV4IDVlMmVi
NjAuLjZiYTZhYWQgMTAwNjQ0DQogICAgLS0tIGEvaW5jbHVkZS9uZXRkYi5oDQogICAgKysrIGIv
aW5jbHVkZS9uZXRkYi5oDQogICAgQEAgLTEgKzEsMTQgQEANCiAgICAgI2luY2x1ZGUgPGNvbXBh
dC9wb3NpeC9uZXRkYi5oPg0KICAgICsNCiAgICArc3RydWN0IHNlcnZlbnQgew0KICAgICsJY2hh
ciAgICAqc19uYW1lOyAgICAgICAgLyogb2ZmaWNpYWwgc2VydmljZSBuYW1lICovDQogICAgKwlj
aGFyICAgICoqc19hbGlhc2VzOyAgICAvKiBhbGlhcyBsaXN0ICovDQogICAgKwlpbnQgICAgIHNf
cG9ydDsgICAgICAgICAvKiBwb3J0ICMgKi8NCiAgICArCWNoYXIgICAgKnNfcHJvdG87ICAgICAg
IC8qIHByb3RvY29sIHRvIHVzZSAqLw0KICAgICt9Ow0KICAgICsNCiAgICArc3RydWN0IHByb3Rv
ZW50IHsNCiAgICArCWNoYXIgICAgKnBfbmFtZTsgICAgICAgIC8qIG9mZmljaWFsIHByb3RvY29s
IG5hbWUgKi8NCiAgICArCWNoYXIgICAgKipwX2FsaWFzZXM7ICAgIC8qIGFsaWFzIGxpc3QgKi8N
CiAgICArCWludCAgICAgcF9wcm90bzsgICAgICAgIC8qIHByb3RvY29sICMgKi8NCiAgICArfTsN
CiAgICAtLSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0KX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 11:58:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 11: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 1hZDVt-0007vz-I5; Fri, 07 Jun 2019 11:58:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DZcQ=UG=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hZDVs-0007vu-KD
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 11:58:28 +0000
X-Inumbo-ID: 8ede20f4-891b-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.47]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8ede20f4-891b-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 11:58:27 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4986.eurprd01.prod.exchangelabs.com (20.177.210.78) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Fri, 7 Jun
 2019 11:58:25 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Fri, 7 Jun 2019
 11:58:25 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v4 0/5] Import devfs from OSv
Thread-Index: AQHVHShPvyiOmD00mEmC/i2pEbrD/Q==
Date: Fri, 7 Jun 2019 11:58:25 +0000
Message-ID: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0013.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3a6a3aaf-9e2d-4c0b-8a1c-08d6eb3f7255
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4986; 
x-ms-traffictypediagnostic: PR1PR01MB4986:
x-microsoft-antispam-prvs: <PR1PR01MB49867F103647D085215C08BDA6100@PR1PR01MB4986.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:655;
x-forefront-prvs: 0061C35778
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(5660300002)(316002)(786003)(6916009)(6436002)(66574012)(1076003)(53936002)(305945005)(6486002)(2906002)(4326008)(26005)(186003)(81156014)(8936002)(81166006)(8676002)(50226002)(486006)(74482002)(52116002)(102836004)(6506007)(386003)(2616005)(476003)(508600001)(7736002)(25786009)(85202003)(2351001)(14454004)(2501003)(68736007)(66066001)(85182001)(99286004)(6116002)(256004)(64756008)(66446008)(3846002)(86362001)(54906003)(73956011)(14444005)(6512007)(66556008)(71200400001)(71190400001)(66476007)(66946007)(5640700003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4986;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: x/EcA5HH6U++OnxJC5I/Y615DOBgcQjDpeaxYj8QyxgRzizIAQpKXW4MPWCPz5eA6gangCQIHM8xuB/UPzlvGqmtB2nl9c32DAooodazqDkAWCcv6BrFotlebCIo+k5wH99xMrIWjYS2//xfQtHyWqRl3yAlGHuvJfZG26DLrLXg8uVT2iPlTd4qSr+1+mQ8vk1HQs+GJBXa0vS573o6Jj9uwMewyqGruDL7D9JdqjZdOGlsZLBg328uVYjSb8IerFKjThjqyNtu60+0OVoirlQ+KAxRyskzNdvov2KLME/TvnYnQNsNpLoiARgBsGgcugozXHCn0mwq+GozceDzXewFXfd8XR8tZmPUVe0RbIgrTrGMIORAqVAhxc14Oo3VDCBYNFk0NQTvCxATmpya4pds55wt8cEpCzqgi2LNgE0=
Content-ID: <6C55EC204D40D94FA0337C20FCE83BCD@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 3a6a3aaf-9e2d-4c0b-8a1c-08d6eb3f7255
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2019 11:58:25.5338 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4986
Subject: [Minios-devel] [UNIKRAFT PATCH v4 0/5] Import devfs from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBzZXJpZXMgaXMgc2ltaWxhciB0byB0aGUgcmFtZnMgb25lLg0KU2luY2UgZGV2
ZnMgaGFkIGFsbW9zdCBubyBDKysgY29kZSB0aGUgY29kZXNiYXNlDQppcyBvbmx5IHNsaWdodGx5
IG1vZGlmaWVkLg0KDQpDaGFuZ2VzIGZyb20gdjE6DQoqKSBNZXJnZWQgdGhlICJsaWIvdmZzY29y
ZTogSW1wb3J0IGRldmljZS5oIGZyb20gT1N2IiBjb21taXQgd2l0aCAibGliL2RldmZzOg0KSW5p
dGlhbCBpbXBvcnQgZnJvbSBPU3YiIGFuZCBtb3ZlZCBkZXZpY2UuaCBpbiBkZXZmcy9pbmNsdWRl
DQoqKSBSZW1vdmVkIHRoZSBBU1NFUlQoZSkgZGVjbGFyYXRpb24NCiopIFJlcGxhY2VkIHRoZSBj
b21tZW50ZWQgcmVsZWFzZV9tcF9kZW50cmllcyBjYWxsIHRvDQp2ZnNjb3JlX3JlbGVhc2VfbXBf
ZGVudHJpZXMNCiopIFJlbW92ZWQgdGhlIHZvcF9lcm9mcyBhbmQgdmZzX251bGxvcCBzaW5jZSB0
aGV5IGFyZSBlaXRoZXIgcmVwbGFjZWQgb3Igbm90DQp1c2VkDQoqKSBBZGRlZCB0aGUgQ09ORklH
X0RFVkZTX1VTRV9SQU1GUyBndWFyZCBjb25zdHJ1Y3RvciB0byBndWFyZCB0aGUgYXV0b21vdW50
IG9mDQpyYW1mcywgaXQgaXMgYnkgZGVmYXVsdCBzZXQgdG8gbg0KKikgQWRkZWQgY29uZmlnIG9w
dGlvbiBmb3IgQ09ORklHX0RFVkZTX1VTRV9SQU1GUw0KKikgVW5jb21tZW50ZWQgdGhlIGRldmlj
ZV9sb29rdXAobmFtZSkgY2hlY2sgDQoqKSBBZGRlZCB0aGUgcHJvcG9zZWQgc29sdXRpb24gdG8g
dGhlIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uDQp3aGlsZSBkZXN0cm95aW5nIGEgZGV2aWNlDQoq
KSBSZW1vdmVkIHRoZSB1X2xvbmcgdHlwZWRlZg0KKikgQ2hhbmdlZCB0aGUgRFBSSU5URiBtYWNy
byB0byB1a19wcl9kZWJ1ZyhYKQ0KKikgUmVtb3ZlZCB0aGUgbmVnYXRpdmUgcmV0dXJuIHZhbHVl
cw0KKikgQWRkZWQgbWFjcm9zIGZvciBmaWxlIG1vZGVzDQoqKSBVcGRhdGVkIHRoZSBsaWNlbnNl
IHRvIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0DQoNCkNoYW5nZXMgZnJvbSB2
MjoNCiopIHJlbW92ZWQgcGh5c2lvIGFuZCBtdWx0aXBsZXhfc3RyYXRlZ3kgZGVjbGFyYXRpb25z
IGZyb20gZGV2aWNlLmgNCiopIGZpeCBjaGVja3BhdGggd2FybmluZy9lcnJvcnMgaW4gZGV2aWNl
LmggYW5kIHRoZSBkZXZpY2UuYw0KKikgQWRkZWQgZGV2aWNlX2Rlc3Ryb3lfbG9ja2VkIGltcGxl
bWVudGF0aW9uIGFuZCBkZWNsYXJhdGlvbg0KKikgZGV2aWNlX3JlZmVyZW5jZSBub3cgY2FsbHMg
ZGV2aWNlX2xvY2tlZCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBkdXBsaWNhdGUNCmNvZGUNCiop
IEFkZGVkIG1pc3NpbmcgdW5sb2NrIGluIGRldmljZV9vcGVuDQoNCkNoYW5nZXMgZnJvbSB2MzoN
CiopIFJlbW92ZWQgdGhlIERQUklOVEYgbWFjcm8sIG5vdyB3ZSB1c2UgdWtfcHJfZGVidWcgZGly
ZWN0bHkNCiopIEFkZCBzeW1ib2xzIHRvIGV4cG9ydHN5bXMudWsNCiopIG1vdmVkIGRldmljZS5o
IHRvIGluY2x1ZGUvZGV2ZnMvZGV2aWNlLmgNCiopIEluIGRldmZzX2xvb2t1cCB0aGUgdnAtPnZf
ZmxhZyBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gMA0KDQpWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5
MikgKDUpOg0KICBsaWIvZGV2ZnM6IEluaXRpYWwgaW1wb3J0IGZyb20gT1N2DQogIGxpYi9kZXZm
czogQWRhcHQgaW1wb3J0ZWQgZGV2ZnMgdG8gVW5pa3JhZnQNCiAgbGliL2RldmZzOiBUYWJpZnkg
aW1wb3J0ZWQgZGV2ZnMgY29kZQ0KICBsaWIvZGV2ZnM6IEZpeCBjaGVja3BhdGggd2FybmluZ3MN
CiAgbGliL2RldmZzOiBVcGRhdGUgbGljZW5zZSBoZWFkZXIgZm9yIHRoZSBpbXBvcnRlZCBmaWxl
cw0KDQogbGliL0NvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KIGxpYi9NYWtl
ZmlsZS51ayAgICAgICAgICAgICAgICAgIHwgICAxICsNCiBsaWIvZGV2ZnMvQ29uZmlnLnVrICAg
ICAgICAgICAgICB8ICAxMCArDQogbGliL2RldmZzL01ha2VmaWxlLnVrICAgICAgICAgICAgfCAg
IDYgKw0KIGxpYi9kZXZmcy9kZXZmcy5oICAgICAgICAgICAgICAgIHwgIDQwICsrKw0KIGxpYi9k
ZXZmcy9kZXZmc192bm9wcy5jICAgICAgICAgIHwgMzM2ICsrKysrKysrKysrKysrKysrKysrKysr
Kw0KIGxpYi9kZXZmcy9kZXZpY2UuYyAgICAgICAgICAgICAgIHwgNDM1ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysNCiBsaWIvZGV2ZnMvZXhwb3J0c3ltcy51ayAgICAgICAgICB8ICAg
NiArDQogbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMvZGV2aWNlLmggfCAyMTEgKysrKysrKysrKysr
KysrDQogOSBmaWxlcyBjaGFuZ2VkLCAxMDQ2IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL2RldmZzL0NvbmZpZy51aw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZGV2ZnMv
TWFrZWZpbGUudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL2RldmZzLmgNCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL2RldmZzX3Zub3BzLmMNCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL2RldmZzL2RldmljZS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kZXZmcy9leHBv
cnRzeW1zLnVrDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2Rl
dmljZS5oDQoNCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 11:58:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 11:58: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 1hZDVw-0007wL-K9; Fri, 07 Jun 2019 11:58:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DZcQ=UG=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hZDVv-0007wG-L8
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 11:58:31 +0000
X-Inumbo-ID: 8fe6dfa4-891b-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8fe6dfa4-891b-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 11:58:29 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4986.eurprd01.prod.exchangelabs.com (20.177.210.78) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Fri, 7 Jun
 2019 11:58:27 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Fri, 7 Jun 2019
 11:58:27 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v4 1/5] lib/devfs: Initial import from OSv
Thread-Index: AQHVHShQ7pMXryoBukKnir5Cet+AgQ==
Date: Fri, 7 Jun 2019 11:58:26 +0000
Message-ID: <20190607115809.24990-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0013.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 50bfae1e-a3ed-4ace-b24c-08d6eb3f7315
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4986; 
x-ms-traffictypediagnostic: PR1PR01MB4986:
x-microsoft-antispam-prvs: <PR1PR01MB498677103F37D865F71DD5A9A6100@PR1PR01MB4986.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:185;
x-forefront-prvs: 0061C35778
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(5660300002)(30864003)(316002)(786003)(6916009)(6436002)(66574012)(1076003)(53936002)(305945005)(6486002)(2906002)(4326008)(26005)(186003)(81156014)(8936002)(81166006)(8676002)(50226002)(486006)(76176011)(74482002)(52116002)(102836004)(6506007)(386003)(11346002)(2616005)(476003)(446003)(508600001)(7736002)(25786009)(85202003)(2351001)(14454004)(2501003)(68736007)(66066001)(85182001)(99286004)(6116002)(256004)(64756008)(66446008)(53946003)(3846002)(86362001)(54906003)(73956011)(5024004)(14444005)(6512007)(66556008)(71200400001)(71190400001)(66476007)(66946007)(5640700003)(579004)(559001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4986;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: B5oqcFpESQdQNOTaSBsmstFcCwdaLIx7YdPi3+nkuTq4EzDo8LpimmPeYgRV/76ptd+n+L/6eJzEAzICROzR+eTmX7ToYq+MsO2Fvk2eUSx2sdq1AWVFOslPGz8lW5fgHWXmUEYx8e1hH4CmZZmPlp6NE8r0x6Qjzv0BeyzeFER3KWHAkCGkiDlCNqJ7CKJOoNECC5iFRQhpoq/w1QMaIbFuZvZ/H/2WL2nr/RKL4se0CpX31zbuoxyhDpCQhQYXcSfY1RfQYO9c8csoTHoRanXc7RjHqwI3+jghssDixdV37quOrSqM/34kWxxiQ2QUiK3kodCIj/r4X5z6CvzUUntHaZvaDg/bEtkLAvMLknqeYmMKe4b+ddYV2cJOadz6IVZButhzKFtbWUDNMzLgp2u0ImwWCsqY/G5DrBllLAU=
Content-ID: <BAEC875A8AE7544FA27B72065C187F07@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 50bfae1e-a3ed-4ace-b24c-08d6eb3f7315
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2019 11:58:26.9430 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4986
Subject: [Minios-devel] [UNIKRAFT PATCH v4 1/5] lib/devfs: Initial import
 from OSv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.ro>,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpjb21taXQ6IGM4Mzk1MTE4Y2I1ODBmMjM5NWNhYzZjNTM5OTlmZWIy
MTdmZDJjMmYNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NClJldmlld2VkLWJ5OiBZdXJpIFZvbGNoa292IDx5dXJp
LnZvbGNoa292QG5lY2xhYi5ldT4NCi0tLQ0KIGxpYi9kZXZmcy9kZXZmcy5oICAgICAgICAgICAg
ICAgIHwgIDM3ICsrKw0KIGxpYi9kZXZmcy9kZXZmc192bm9wcy5jICAgICAgICAgIHwgMjg0ICsr
KysrKysrKysrKysrKysNCiBsaWIvZGV2ZnMvZGV2aWNlLmMgICAgICAgICAgICAgICB8IDUzNyAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMv
ZGV2aWNlLmggfCAyMTMgKysrKysrKysrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCAxMDcxIGluc2Vy
dGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL2RldmZzLmgNCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL2RldmZzL2RldmZzX3Zub3BzLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL2RldmZzL2RldmljZS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kZXZmcy9pbmNsdWRl
L2RldmZzL2RldmljZS5oDQoNCmRpZmYgLS1naXQgYS9saWIvZGV2ZnMvZGV2ZnMuaCBiL2xpYi9k
ZXZmcy9kZXZmcy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAuLmJkZjUw
NjA5DQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvZGV2ZnMvZGV2ZnMuaA0KQEAgLTAsMCArMSwz
NyBAQA0KKy8qDQorICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaQ0KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisg
KiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycw0K
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZQ0KKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0K
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFDQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUNCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTA0KKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQorICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICogSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QNCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQorICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KKyAq
IFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0RFVkZTX0gNCisjZGVmaW5lIF9ERVZG
U19IDQorDQorI2luY2x1ZGUgPGFzc2VydC5oPg0KKw0KKy8qICNkZWZpbmUgREVCVUdfREVWRlMg
MSAqLw0KKw0KKyNlbmRpZiAvKiAhX0RFVkZTX0ggKi8NCmRpZmYgLS1naXQgYS9saWIvZGV2ZnMv
ZGV2ZnNfdm5vcHMuYyBiL2xpYi9kZXZmcy9kZXZmc192bm9wcy5jDQpuZXcgZmlsZSBtb2RlIDEw
MDY0NA0KaW5kZXggMDAwMDAwMDAuLjFlNjllNGE2DQotLS0gL2Rldi9udWxsDQorKysgYi9saWIv
ZGV2ZnMvZGV2ZnNfdm5vcHMuYw0KQEAgLTAsMCArMSwyODQgQEANCisvKg0KKyAqIENvcHlyaWdo
dCAoYykgMjAwNS0yMDA3LCBLb2hzdWtlIE9odGFuaQ0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
DQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0K
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9y
IG5vciB0aGUgbmFtZXMgb2YgYW55IGNvLWNvbnRyaWJ1dG9ycw0KKyAqICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy
ZQ0KKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAq
DQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORA0KKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFDQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUNCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTDQorICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCisgKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZDQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KKyAqIFNVQ0ggREFNQUdFLg0KKyAq
Lw0KKw0KKy8qDQorICogZGV2ZnMgLSBkZXZpY2UgZmlsZSBzeXN0ZW0uDQorICovDQorDQorI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+DQorDQorI2luY2x1ZGUgPGN0eXBlLmg+DQorI2luY2x1ZGUgPHVu
aXN0ZC5oPg0KKyNpbmNsdWRlIDxlcnJuby5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjaW5j
bHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPGxpbWl0cy5oPg0KKyNpbmNsdWRlIDxmY250bC5o
Pg0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKw0KKyNpbmNsdWRlIDxvc3YvcHJleC5oPg0KKyNpbmNs
dWRlIDxvc3YvZGV2aWNlLmg+DQorI2luY2x1ZGUgPG9zdi92bm9kZS5oPg0KKyNpbmNsdWRlIDxv
c3YvbW91bnQuaD4NCisjaW5jbHVkZSA8b3N2L2RlbnRyeS5oPg0KKw0KKyNpbmNsdWRlICJkZXZm
cy5oIg0KKw0KKyNpZmRlZiBERUJVR19ERVZGUw0KKyNkZWZpbmUgRFBSSU5URihhKQlkcHJpbnRm
IGENCisjZWxzZQ0KKyNkZWZpbmUgRFBSSU5URihhKQlkbyB7fSB3aGlsZSAoMCkNCisjZW5kaWYN
CisNCisjZGVmaW5lIEFTU0VSVChlKQlhc3NlcnQoZSkNCisNCitzdGF0aWMgdWludDY0X3QgaW5v
ZGVfY291bnQgPSAxOyAvKiBpbm9kZSAwIGlzIHJlc2VydmVkIHRvIHJvb3QgKi8NCisNCitzdGF0
aWMgaW50DQorZGV2ZnNfb3BlbihzdHJ1Y3QgZmlsZSAqZnApDQorew0KKwlzdHJ1Y3Qgdm5vZGUg
KnZwID0gZnAtPmZfZGVudHJ5LT5kX3Zub2RlOw0KKwljaGFyICpwYXRoID0gZnAtPmZfZGVudHJ5
LT5kX3BhdGg7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsNCisJaW50IGVycm9yOw0KKw0KKwlEUFJJ
TlRGKCgiZGV2ZnNfb3BlbjogcGF0aD0lc1xuIiwgcGF0aCkpOw0KKw0KKwlpZiAoIXN0cmNtcChw
YXRoLCAiLyIpKQkvKiByb290ID8gKi8NCisJCXJldHVybiAwOw0KKw0KKwlpZiAodnAtPnZfZmxh
Z3MgJiBWUFJPVERFVikgew0KKwkJRFBSSU5URigoImRldmZzX29wZW46IGZhaWxlZCB0byBvcGVu
IHByb3RlY3RlZCBkZXZpY2UuXG4iKSk7DQorCQlyZXR1cm4gRVBFUk07DQorCX0NCisJaWYgKCpw
YXRoID09ICcvJykNCisJCXBhdGgrKzsNCisJZXJyb3IgPSBkZXZpY2Vfb3BlbihwYXRoLCBmcC0+
Zl9mbGFncyAmIERPX1JXTUFTSywgJmRldik7DQorCWlmIChlcnJvcikgew0KKwkJRFBSSU5URigo
ImRldmZzX29wZW46IGNhbiBub3Qgb3BlbiBkZXZpY2UgPSAlcyBlcnJvcj0lZFxuIiwNCisJCQkg
cGF0aCwgZXJyb3IpKTsNCisJCXJldHVybiBlcnJvcjsNCisJfQ0KKwl2cC0+dl9kYXRhID0gKHZv
aWQgKilkZXY7CS8qIFN0b3JlIHByaXZhdGUgZGF0YSAqLw0KKwlyZXR1cm4gMDsNCit9DQorDQor
c3RhdGljIGludA0KK2RldmZzX2Nsb3NlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBmaWxlICpm
cCkNCit7DQorDQorCURQUklOVEYoKCJkZXZmc19jbG9zZTogZnA9JXhcbiIsIGZwKSk7DQorDQor
CWlmICghc3RyY21wKGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCAiLyIpKQkvKiByb290ID8gKi8NCisJ
CXJldHVybiAwOw0KKw0KKwlyZXR1cm4gZGV2aWNlX2Nsb3NlKChkZXZpY2UqKXZwLT52X2RhdGEp
Ow0KK30NCisNCitzdGF0aWMgaW50DQorZGV2ZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1
Y3QgZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpDQorew0KKwlyZXR1cm4g
ZGV2aWNlX3JlYWQoKGRldmljZSopdnAtPnZfZGF0YSwgdWlvLCBpb2ZsYWdzKTsNCit9DQorDQor
c3RhdGljIGludA0KK2RldmZzX3dyaXRlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB1aW8gKnVp
bywgaW50IGlvZmxhZ3MpDQorew0KKwlyZXR1cm4gZGV2aWNlX3dyaXRlKChkZXZpY2UqKXZwLT52
X2RhdGEsIHVpbywgaW9mbGFncyk7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitkZXZmc19pb2N0bChz
dHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHVfbG9uZyBjbWQsIHZvaWQgKmFyZykN
Cit7DQorCWludCBlcnJvcjsNCisNCisJZXJyb3IgPSBkZXZpY2VfaW9jdGwoKGRldmljZSopdnAt
PnZfZGF0YSwgY21kLCBhcmcpOw0KKwlEUFJJTlRGKCgiZGV2ZnNfaW9jdGw6IGNtZD0leFxuIiwg
Y21kKSk7DQorCXJldHVybiBlcnJvcjsNCit9DQorDQorc3RhdGljIGludA0KK2RldmZzX2xvb2t1
cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQ0KK3sN
CisJc3RydWN0IGRldmluZm8gaW5mbzsNCisJc3RydWN0IHZub2RlICp2cDsNCisJaW50IGVycm9y
LCBpOw0KKw0KKwlEUFJJTlRGKCgiZGV2ZnNfbG9va3VwOiVzXG4iLCBuYW1lKSk7DQorDQorCSp2
cHAgPSBOVUxMOw0KKw0KKwlpZiAoKm5hbWUgPT0gJ1wwJykNCisJCXJldHVybiBFTk9FTlQ7DQor
DQorCWkgPSAwOw0KKwllcnJvciA9IDA7DQorCWluZm8uY29va2llID0gMDsNCisJZm9yICg7Oykg
ew0KKwkJZXJyb3IgPSBkZXZpY2VfaW5mbygmaW5mbyk7DQorCQlpZiAoZXJyb3IpIHsNCisJCQly
ZXR1cm4gRU5PRU5UOw0KKwkJfQ0KKwkJaWYgKCFzdHJuY21wKGluZm8ubmFtZSwgbmFtZSwgTUFY
REVWTkFNRSkpDQorCQkJYnJlYWs7DQorCQlpKys7DQorCX0NCisJaWYgKHZnZXQoZHZwLT52X21v
dW50LCBpbm9kZV9jb3VudCsrLCAmdnApKSB7DQorCQkvKiBmb3VuZCBpbiBjYWNoZSAqLw0KKwkJ
KnZwcCA9IHZwOw0KKwkJcmV0dXJuIDA7DQorCX0NCisJaWYgKCF2cCkNCisJCXJldHVybiBFTk9N
RU07DQorCXZwLT52X3R5cGUgPSAoaW5mby5mbGFncyAmIERfQ0hSKSA/IFZDSFIgOiBWQkxLOw0K
KwlpZiAoaW5mby5mbGFncyAmIERfVFRZKQ0KKwkJdnAtPnZfZmxhZ3MgfD0gVklTVFRZOw0KKw0K
Kwl2cC0+dl9tb2RlID0gKG1vZGVfdCkoU19JUlVTUiB8IFNfSVdVU1IpOw0KKw0KKwkqdnBwID0g
dnA7DQorDQorCXJldHVybiAwOw0KK30NCisNCisvKg0KKyAqIEB2cDogdm5vZGUgb2YgdGhlIGRp
cmVjdG9yeS4NCisgKi8NCitzdGF0aWMgaW50DQorZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUg
KnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikNCit7DQorCXN0cnVjdCBk
ZXZpbmZvIGluZm87DQorCWludCBlcnJvciwgaTsNCisNCisJRFBSSU5URigoImRldmZzX3JlYWRk
aXIgb2Zmc2V0PSVkXG4iLCBmcC0+Zl9vZmZzZXQpKTsNCisNCisJaSA9IDA7DQorCWVycm9yID0g
MDsNCisJaW5mby5jb29raWUgPSAwOw0KKwlkbyB7DQorCQllcnJvciA9IGRldmljZV9pbmZvKCZp
bmZvKTsNCisJCWlmIChlcnJvcikNCisJCQlyZXR1cm4gRU5PRU5UOw0KKwl9IHdoaWxlIChpKysg
IT0gZnAtPmZfb2Zmc2V0KTsNCisNCisJZGlyLT5kX3R5cGUgPSAwOw0KKwlpZiAoaW5mby5mbGFn
cyAmIERfQ0hSKQ0KKwkJZGlyLT5kX3R5cGUgPSBEVF9DSFI7DQorCWVsc2UgaWYgKGluZm8uZmxh
Z3MgJiBEX0JMSykNCisJCWRpci0+ZF90eXBlID0gRFRfQkxLOw0KKwlzdHJsY3B5KChjaGFyICop
JmRpci0+ZF9uYW1lLCBpbmZvLm5hbWUsIHNpemVvZihkaXItPmRfbmFtZSkpOw0KKwlkaXItPmRf
ZmlsZW5vID0gZnAtPmZfb2Zmc2V0Ow0KKy8vCWRpci0+ZF9uYW1sZW4gPSBzdHJsZW4oZGlyLT5k
X25hbWUpOw0KKw0KKwlEUFJJTlRGKCgiZGV2ZnNfcmVhZGRpcjogJXNcbiIsIGRpci0+ZF9uYW1l
KSk7DQorCWZwLT5mX29mZnNldCsrOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludA0K
K2RldmZzX3VubW91bnQoc3RydWN0IG1vdW50ICptcCwgaW50IGZsYWdzKQ0KK3sNCisJcmVsZWFz
ZV9tcF9kZW50cmllcyhtcCk7DQorCXJldHVybiAwOw0KK30NCisNCitpbnQNCitkZXZmc19pbml0
KHZvaWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludA0KK2RldmZzX2dldGF0
dHIoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZhdHRyICphdHRyKQ0KK3sNCisJYXR0ci0+
dmFfbm9kZWlkID0gdm5vZGUtPnZfaW5vOw0KKwlhdHRyLT52YV9zaXplID0gdm5vZGUtPnZfc2l6
ZTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KKyNkZWZpbmUgZGV2ZnNfbW91bnQJKCh2ZnNvcF9tb3Vu
dF90KXZmc19udWxsb3ApDQorI2RlZmluZSBkZXZmc19zeW5jCSgodmZzb3Bfc3luY190KXZmc19u
dWxsb3ApDQorI2RlZmluZSBkZXZmc192Z2V0CSgodmZzb3BfdmdldF90KXZmc19udWxsb3ApDQor
I2RlZmluZSBkZXZmc19zdGF0ZnMJKCh2ZnNvcF9zdGF0ZnNfdCl2ZnNfbnVsbG9wKQ0KKw0KKyNk
ZWZpbmUgZGV2ZnNfc2VlawkoKHZub3Bfc2Vla190KXZvcF9udWxsb3ApDQorI2RlZmluZSBkZXZm
c19mc3luYwkoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9wKQ0KKyNkZWZpbmUgZGV2ZnNfY3JlYXRl
CSgodm5vcF9jcmVhdGVfdCl2b3BfZWludmFsKQ0KKyNkZWZpbmUgZGV2ZnNfcmVtb3ZlCSgodm5v
cF9yZW1vdmVfdCl2b3BfZWludmFsKQ0KKyNkZWZpbmUgZGV2ZnNfcmVuYW1lCSgodm5vcF9yZW5h
bWVfdCl2b3BfZWludmFsKQ0KKyNkZWZpbmUgZGV2ZnNfbWtkaXIJKCh2bm9wX21rZGlyX3Qpdm9w
X2VpbnZhbCkNCisjZGVmaW5lIGRldmZzX3JtZGlyCSgodm5vcF9ybWRpcl90KXZvcF9laW52YWwp
DQorI2RlZmluZSBkZXZmc19zZXRhdHRyCSgodm5vcF9zZXRhdHRyX3Qpdm9wX2VwZXJtKQ0KKyNk
ZWZpbmUgZGV2ZnNfaW5hY3RpdmUJKCh2bm9wX2luYWN0aXZlX3Qpdm9wX251bGxvcCkNCisjZGVm
aW5lIGRldmZzX3RydW5jYXRlCSgodm5vcF90cnVuY2F0ZV90KXZvcF9udWxsb3ApDQorI2RlZmlu
ZSBkZXZmc19saW5rCSgodm5vcF9saW5rX3Qpdm9wX2VwZXJtKQ0KKyNkZWZpbmUgZGV2ZnNfZmFs
bG9jYXRlICgodm5vcF9mYWxsb2NhdGVfdCl2b3BfbnVsbG9wKQ0KKyNkZWZpbmUgZGV2ZnNfcmVh
ZGxpbmsJKCh2bm9wX3JlYWRsaW5rX3Qpdm9wX251bGxvcCkNCisjZGVmaW5lIGRldmZzX3N5bWxp
bmsJKCh2bm9wX3N5bWxpbmtfdCl2b3BfbnVsbG9wKQ0KKw0KKy8qDQorICogdm5vZGUgb3BlcmF0
aW9ucw0KKyAqLw0KK3N0cnVjdCB2bm9wcyBkZXZmc192bm9wcyA9IHsNCisJZGV2ZnNfb3BlbiwJ
CS8qIG9wZW4gKi8NCisJZGV2ZnNfY2xvc2UsCQkvKiBjbG9zZSAqLw0KKwlkZXZmc19yZWFkLAkJ
LyogcmVhZCAqLw0KKwlkZXZmc193cml0ZSwJCS8qIHdyaXRlICovDQorCWRldmZzX3NlZWssCQkv
KiBzZWVrICovDQorCWRldmZzX2lvY3RsLAkJLyogaW9jdGwgKi8NCisJZGV2ZnNfZnN5bmMsCQkv
KiBmc3luYyAqLw0KKwlkZXZmc19yZWFkZGlyLAkJLyogcmVhZGRpciAqLw0KKwlkZXZmc19sb29r
dXAsCQkvKiBsb29rdXAgKi8NCisJZGV2ZnNfY3JlYXRlLAkJLyogY3JlYXRlICovDQorCWRldmZz
X3JlbW92ZSwJCS8qIHJlbW92ZSAqLw0KKwlkZXZmc19yZW5hbWUsCQkvKiByZW1hbWUgKi8NCisJ
ZGV2ZnNfbWtkaXIsCQkvKiBta2RpciAqLw0KKwlkZXZmc19ybWRpciwJCS8qIHJtZGlyICovDQor
CWRldmZzX2dldGF0dHIsCQkvKiBnZXRhdHRyICovDQorCWRldmZzX3NldGF0dHIsCQkvKiBzZXRh
dHRyICovDQorCWRldmZzX2luYWN0aXZlLAkJLyogaW5hY3RpdmUgKi8NCisJZGV2ZnNfdHJ1bmNh
dGUsCQkvKiB0cnVuY2F0ZSAqLw0KKwlkZXZmc19saW5rLAkJLyogbGluayAqLw0KKwkodm5vcF9j
YWNoZV90KSBudWxscHRyLCAvKiBhcmMgKi8NCisJZGV2ZnNfZmFsbG9jYXRlLAkvKiBmYWxsb2Nh
dGUgKi8NCisJZGV2ZnNfcmVhZGxpbmssCQkvKiByZWFkIGxpbmsgKi8NCisJZGV2ZnNfc3ltbGlu
aywJCS8qIHN5bWJvbGljIGxpbmsgKi8NCit9Ow0KKw0KKy8qDQorICogRmlsZSBzeXN0ZW0gb3Bl
cmF0aW9ucw0KKyAqLw0KK3N0cnVjdCB2ZnNvcHMgZGV2ZnNfdmZzb3BzID0gew0KKwlkZXZmc19t
b3VudCwJCS8qIG1vdW50ICovDQorCWRldmZzX3VubW91bnQsCQkvKiB1bm1vdW50ICovDQorCWRl
dmZzX3N5bmMsCQkvKiBzeW5jICovDQorCWRldmZzX3ZnZXQsCQkvKiB2Z2V0ICovDQorCWRldmZz
X3N0YXRmcywJCS8qIHN0YXRmcyAqLw0KKwkmZGV2ZnNfdm5vcHMsCQkvKiB2bm9wcyAqLw0KK307
DQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL2RldmljZS5jIGIvbGliL2RldmZzL2RldmljZS5jDQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAuLmEwY2Q5NzY4DQotLS0gL2Rldi9u
dWxsDQorKysgYi9saWIvZGV2ZnMvZGV2aWNlLmMNCkBAIC0wLDAgKzEsNTM3IEBADQorLyotDQor
ICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDksIEtvaHN1a2UgT2h0YW5pDQorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBt
ZXQ6DQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzDQorICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzIHNvZnR3YXJlDQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UNCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
DQorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMNCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCisgKiBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVA0KKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkNCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQorICogU1VDSCBE
QU1BR0UuDQorICovDQorDQorLyoNCisgKiBkZXZpY2UuYyAtIGRldmljZSBJL08gc3VwcG9ydCBy
b3V0aW5lcw0KKyAqLw0KKw0KKy8qKg0KKyAqIFRoZSBkZXZpY2VfKiBzeXN0ZW0gY2FsbHMgYXJl
IGludGVyZmFjZXMgdG8gYWNjZXNzIHRoZSBzcGVjaWZpYw0KKyAqIGRldmljZSBvYmplY3Qgd2hp
Y2ggaXMgaGFuZGxlZCBieSB0aGUgcmVsYXRlZCBkZXZpY2UgZHJpdmVyLg0KKyAqDQorICogVGhl
IHJvdXRpbmVzIGluIHRoaXMgbW9kdWlsZSBoYXZlIHRoZSBmb2xsb3dpbmcgcm9sZToNCisgKiAg
LSBNYW5hZ2UgdGhlIG5hbWUgc3BhY2UgZm9yIGRldmljZSBvYmplY3RzLg0KKyAqICAtIEZvcndh
cmQgdXNlciBJL08gcmVxdWVzdHMgdG8gdGhlIGRyaXZlcnMgd2l0aCBtaW5pbXVtIGNoZWNrLg0K
KyAqICAtIFByb3ZpZGUgdGhlIHRhYmxlIGZvciB0aGUgRHJpdmVyLUtlcm5lbCBJbnRlcmZhY2Uu
DQorICovDQorDQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNp
bmNsdWRlIDx1bmlzdGQuaD4NCisjaW5jbHVkZSA8ZXJybm8uaD4NCisjaW5jbHVkZSA8YXNzZXJ0
Lmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKw0KKyNpbmNsdWRlIDxvc3YvcHJleC5oPg0KKyNp
bmNsdWRlIDxvc3YvbXV0ZXguaD4NCisjaW5jbHVkZSA8b3N2L2RldmljZS5oPg0KKyNpbmNsdWRl
IDxvc3YvZGVidWcuaD4NCisjaW5jbHVkZSA8b3N2L2J1Zi5oPg0KKw0KKyNpbmNsdWRlIDxnZW9t
L2dlb21fZGlzay5oPg0KKw0KK211dGV4IHNjaGVkX211dGV4Ow0KKyNkZWZpbmUgc2NoZWRfbG9j
aygpCXNjaGVkX211dGV4LmxvY2soKQ0KKyNkZWZpbmUgc2NoZWRfdW5sb2NrKCkJc2NoZWRfbXV0
ZXgudW5sb2NrKCkNCisNCisNCisvKiBsaXN0IGhlYWQgb2YgdGhlIGRldmljZXMgKi8NCitzdGF0
aWMgc3RydWN0IGRldmljZSAqZGV2aWNlX2xpc3QgPSBOVUxMOw0KKw0KKy8qDQorICogTG9vayB1
cCBhIGRldmljZSBvYmplY3QgYnkgZGV2aWNlIG5hbWUuDQorICovDQorc3RhdGljIHN0cnVjdCBk
ZXZpY2UgKg0KK2RldmljZV9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkNCit7DQorCXN0cnVjdCBk
ZXZpY2UgKmRldjsNCisNCisJZm9yIChkZXYgPSBkZXZpY2VfbGlzdDsgZGV2ICE9IE5VTEw7IGRl
diA9IGRldi0+bmV4dCkgew0KKwkJaWYgKCFzdHJuY21wKGRldi0+bmFtZSwgbmFtZSwgTUFYREVW
TkFNRSkpDQorCQkJcmV0dXJuIGRldjsNCisJfQ0KKwlyZXR1cm4gTlVMTDsNCit9DQorDQorc3Ry
dWN0IHBhcnRpdGlvbl90YWJsZV9lbnRyeSB7DQorCXVpbnQ4X3QgIGJvb3RhYmxlOw0KKwl1aW50
OF90ICBzdGFydGluZ19oZWFkOw0KKwl1aW50MTZfdCBzdGFydGluZ19zZWN0b3I6NjsNCisJdWlu
dDE2X3Qgc3RhcnRpbmdfY3lsaW5kZXI6MTA7DQorCXVpbnQ4X3QgIHN5c3RlbV9pZDsNCisJdWlu
dDhfdCAgZW5kaW5nX2hlYWQ7DQorCXVpbnQxNl90IGVuZGluZ19zZWN0b3I6NjsNCisJdWludDE2
X3QgZW5kaW5nX2N5bGluZGVyOjEwOw0KKwl1aW50MzJfdCByZWxhX3NlY3RvcjsNCisJdWludDMy
X3QgdG90YWxfc2VjdG9yczsNCit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOw0KKw0KKy8qDQor
ICogcmVhZF9wYXJ0aXRpb25fdGFibGUgLSBnaXZlbiBhIGRldmljZSBAZGV2LCBjcmVhdGUgb25l
IHN1YmRldmljZSBwZXIgcGFydGl0aW9uDQorICogZm91bmQgaW4gdGhhdCBkZXZpY2UuDQorICoN
CisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCBhIHBhcnRpdGlvbiB0YWJsZSBmcm9tIHRoZSBj
YW5vbmljYWwgbG9jYXRpb24gb2YgdGhlDQorICogZGV2aWNlIHBvaW50ZWQgYnkgQGRldi4gRm9y
IGVhY2ggcGFydGl0aW9uIGZvdW5kLCBhIG5ldyBkZXZpY2Ugd2lsbCBiZQ0KKyAqIGNyZWF0ZWQu
IFRoZSBuZXdseSBjcmVhdGVkIGRldmljZSB3aWxsIGhhdmUgbW9zdCBvZiBpdHMgZGF0YSBjb3Bp
ZWQgZnJvbQ0KKyAqIEBkZXYsIGV4Y2VwdCBmb3IgaXRzIG5hbWUsIG9mZnNldCBhbmQgc2l6ZS4N
CisgKi8NCit2b2lkIHJlYWRfcGFydGl0aW9uX3RhYmxlKHN0cnVjdCBkZXZpY2UgKmRldikNCit7
DQorCXN0cnVjdCBidWYgKmJwOw0KKwl1bnNpZ25lZCBsb25nIG9mZnNldDsNCisJaW50IGluZGV4
Ow0KKw0KKwlpZiAoYnJlYWQoZGV2LCAwLCAmYnApICE9IDApIHsNCisJCWRlYnVnZigicmVhZF9w
YXJ0aXRpb25fdGFibGUgZmFpbGVkIGZvciAlc1xuIiwgZGV2LT5uYW1lKTsNCisJCXJldHVybjsN
CisJfQ0KKw0KKwlzY2hlZF9sb2NrKCk7DQorCS8vIEEgcmVhbCBwYXJ0aXRpb24gdGFibGUgKE1C
UikgZW5kcyBpbiB0aGUgdHdvIGJ5dGVzIDB4NTUsIDB4QUEgKHNlZQ0KKwkvLyBhcmNoL3g2NC9i
b290MTYuUyBvbiB3aGVyZSB3ZSBwdXQgdGhvc2Ugb24gdGhlIE9TdiBpbWFnZSkuIElmIHdlDQor
CS8vIGRvbid0IGZpbmQgdGhvc2UsIHRoaXMgaXMgYW4gdW5wYXJ0aXRpb25lZCBkaXNrLg0KKwlp
ZiAoKCh1bnNpZ25lZCBjaGFyKilicC0+Yl9kYXRhKVs1MTBdID09IDB4NTUgJiYNCisJICAgICgo
dW5zaWduZWQgY2hhciopYnAtPmJfZGF0YSlbNTExXSA9PSAweEFBKQ0KKwlmb3IgKG9mZnNldCA9
IDB4MWJlLCBpbmRleCA9IDA7IG9mZnNldCA8IDB4MWZlOyBvZmZzZXQgKz0gMHgxMCwgaW5kZXgr
Kykgew0KKwkJY2hhciBkZXZfbmFtZVtNQVhERVZOQU1FXTsNCisJCXN0cnVjdCBkZXZpY2UgKm5l
d19kZXY7DQorDQorCQlhdXRvKiBlbnRyeSA9IHN0YXRpY19jYXN0PHN0cnVjdCBwYXJ0aXRpb25f
dGFibGVfZW50cnkqPihicC0+Yl9kYXRhICsgb2Zmc2V0KTsNCisNCisJCWlmIChlbnRyeS0+c3lz
dGVtX2lkID09IDApIHsNCisJCQljb250aW51ZTsNCisJCX0NCisNCisJCWlmIChlbnRyeS0+c3Rh
cnRpbmdfc2VjdG9yID09IDApIHsNCisJCQljb250aW51ZTsNCisJCX0NCisNCisJCXNucHJpbnRm
KGRldl9uYW1lLCBNQVhERVZOQU1FLCAiJXMuJWQiLCBkZXYtPm5hbWUsIGluZGV4KTsNCisJCW5l
d19kZXYgPSBkZXZpY2VfY3JlYXRlKGRldi0+ZHJpdmVyLCBkZXZfbmFtZSwgZGV2LT5mbGFncyk7
DQorCQlmcmVlKG5ld19kZXYtPnByaXZhdGVfZGF0YSk7DQorDQorCQluZXdfZGV2LT5vZmZzZXQg
PSAob2ZmX3QpZW50cnktPnJlbGFfc2VjdG9yIDw8IDk7DQorCQluZXdfZGV2LT5zaXplID0gKG9m
Zl90KWVudHJ5LT50b3RhbF9zZWN0b3JzIDw8IDk7DQorCQluZXdfZGV2LT5tYXhfaW9fc2l6ZSA9
IGRldi0+bWF4X2lvX3NpemU7DQorCQluZXdfZGV2LT5wcml2YXRlX2RhdGEgPSBkZXYtPnByaXZh
dGVfZGF0YTsNCisJCWRldmljZV9zZXRfc29mdGMobmV3X2RldiwgZGV2aWNlX2dldF9zb2Z0Yyhk
ZXYpKTsNCisJfQ0KKw0KKwlzY2hlZF91bmxvY2soKTsNCisJYnJlbHNlKGJwKTsNCit9DQorDQor
dm9pZCBkZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1l
LCBpbnQgZmxhZ3MpDQorew0KKwlzaXplX3QgbGVuOw0KKwl2b2lkICpwcml2ID0gTlVMTDsNCisN
CisJYXNzZXJ0KGRldi0+ZHJpdmVyICE9IE5VTEwpOw0KKw0KKwkvKiBDaGVjayB0aGUgbGVuZ3Ro
IG9mIG5hbWUuICovDQorCWxlbiA9IHN0cm5sZW4obmFtZSwgTUFYREVWTkFNRSk7DQorCWlmIChs
ZW4gPT0gMCB8fCBsZW4gPj0gTUFYREVWTkFNRSkNCisJCXJldHVybjsNCisNCisJc2NoZWRfbG9j
aygpOw0KKw0KKwkvKiBDaGVjayBpZiBzcGVjaWZpZWQgbmFtZSBpcyBhbHJlYWR5IHVzZWQuICov
DQorCWlmIChkZXZpY2VfbG9va3VwKG5hbWUpICE9IE5VTEwpDQorCQlzeXNfcGFuaWMoImR1cGxp
Y2F0ZSBkZXZpY2UiKTsNCisNCisJLyoNCisJICogQWxsb2NhdGUgYSBkZXZpY2UgYW5kIGRldmlj
ZSBwcml2YXRlIGRhdGEuDQorCSAqLw0KKwlpZiAoZGV2LT5kcml2ZXItPmRldnN6ICE9IDApIHsN
CisJCWlmICgocHJpdiA9IG1hbGxvYyhkZXYtPmRyaXZlci0+ZGV2c3opKSA9PSBOVUxMKQ0KKwkJ
CXN5c19wYW5pYygiZGV2c3oiKTsNCisJCW1lbXNldChwcml2LCAwLCBkZXYtPmRyaXZlci0+ZGV2
c3opOw0KKwl9DQorDQorCXN0cmxjcHkoZGV2LT5uYW1lLCBuYW1lLCBsZW4gKyAxKTsNCisJZGV2
LT5mbGFncyA9IGZsYWdzOw0KKwlkZXYtPmFjdGl2ZSA9IDE7DQorCWRldi0+cmVmY250ID0gMTsN
CisJZGV2LT5vZmZzZXQgPSAwOw0KKwlkZXYtPnByaXZhdGVfZGF0YSA9IHByaXY7DQorCWRldi0+
bmV4dCA9IGRldmljZV9saXN0Ow0KKwlkZXYtPm1heF9pb19zaXplID0gVUlOVF9NQVg7DQorCWRl
dmljZV9saXN0ID0gZGV2Ow0KKw0KKwlzY2hlZF91bmxvY2soKTsNCit9DQorDQorDQorLyoNCisg
KiBkZXZpY2VfY3JlYXRlIC0gY3JlYXRlIG5ldyBkZXZpY2Ugb2JqZWN0Lg0KKyAqDQorICogQSBk
ZXZpY2Ugb2JqZWN0IGlzIGNyZWF0ZWQgYnkgdGhlIGRldmljZSBkcml2ZXIgdG8gcHJvdmlkZQ0K
KyAqIEkvTyBzZXJ2aWNlcyB0byBhcHBsaWNhdGlvbnMuICBSZXR1cm5zIGRldmljZSBJRCBvbg0K
KyAqIHN1Y2Nlc3MsIG9yIDAgb24gZmFpbHVyZS4NCisgKi8NCitzdHJ1Y3QgZGV2aWNlICoNCitk
ZXZpY2VfY3JlYXRlKHN0cnVjdCBkcml2ZXIgKmRydiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZs
YWdzKQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KKwlzaXplX3QgbGVuOw0KKw0KKwlhc3Nl
cnQoZHJ2ICE9IE5VTEwpOw0KKw0KKwkvKiBDaGVjayB0aGUgbGVuZ3RoIG9mIG5hbWUuICovDQor
CWxlbiA9IHN0cm5sZW4obmFtZSwgTUFYREVWTkFNRSk7DQorCWlmIChsZW4gPT0gMCB8fCBsZW4g
Pj0gTUFYREVWTkFNRSkNCisJCXJldHVybiBOVUxMOw0KKw0KKwkvKg0KKwkgKiBBbGxvY2F0ZSBh
IGRldmljZSBzdHJ1Y3R1cmUuDQorCSAqLw0KKwlpZiAoKGRldiA9IG5ldyBkZXZpY2UpID09IE5V
TEwpDQorCQlzeXNfcGFuaWMoImRldmljZV9jcmVhdGUiKTsNCisNCisgICAgZGV2LT5kcml2ZXIg
PSBkcnY7DQorICAgIGRldmljZV9yZWdpc3RlcihkZXYsIG5hbWUsIGZsYWdzKTsNCisJcmV0dXJu
IGRldjsNCit9DQorDQorI2lmIDANCisvKg0KKyAqIFJldHVybiBkZXZpY2UncyBwcml2YXRlIGRh
dGEuDQorICovDQorc3RhdGljIHZvaWQgKg0KK2RldmljZV9wcml2YXRlKHN0cnVjdCBkZXZpY2Ug
KmRldikNCit7DQorCWFzc2VydChkZXYgIT0gTlVMTCk7DQorCWFzc2VydChkZXYtPnByaXZhdGVf
ZGF0YSAhPSBOVUxMKTsNCisNCisJcmV0dXJuIGRldi0+cHJpdmF0ZV9kYXRhOw0KK30NCisjZW5k
aWYNCisNCisvKg0KKyAqIFJldHVybiB0cnVlIGlmIHNwZWNpZmllZCBkZXZpY2UgaXMgdmFsaWQu
DQorICovDQorc3RhdGljIGludA0KK2RldmljZV92YWxpZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQor
ew0KKwlzdHJ1Y3QgZGV2aWNlICp0bXA7DQorCWludCBmb3VuZCA9IDA7DQorDQorCWZvciAodG1w
ID0gZGV2aWNlX2xpc3Q7IHRtcCAhPSBOVUxMOyB0bXAgPSB0bXAtPm5leHQpIHsNCisJCWlmICh0
bXAgPT0gZGV2KSB7DQorCQkJZm91bmQgPSAxOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwl9DQorCWlm
IChmb3VuZCAmJiBkZXYtPmFjdGl2ZSkNCisJCXJldHVybiAxOw0KKwlyZXR1cm4gMDsNCit9DQor
DQorLyoNCisgKiBJbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiBhbiBhY3RpdmUgZGV2
aWNlLg0KKyAqLw0KK3N0YXRpYyBpbnQNCitkZXZpY2VfcmVmZXJlbmNlKHN0cnVjdCBkZXZpY2Ug
KmRldikNCit7DQorDQorCXNjaGVkX2xvY2soKTsNCisJaWYgKCFkZXZpY2VfdmFsaWQoZGV2KSkg
ew0KKwkJc2NoZWRfdW5sb2NrKCk7DQorCQlyZXR1cm4gRU5PREVWOw0KKwl9DQorCWRldi0+cmVm
Y250Kys7DQorCXNjaGVkX3VubG9jaygpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoNCisgKiBE
ZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiBhIGRldmljZS4gSWYgdGhlIHJlZmVyZW5j
ZQ0KKyAqIGNvdW50IGJlY29tZXMgemVybywgd2UgY2FuIHJlbGVhc2UgdGhlIHJlc291cmNlIGZv
ciB0aGUgZGV2aWNlLg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorZGV2aWNlX3JlbGVhc2Uoc3RydWN0
IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IGRldmljZSAqKnRtcDsNCisNCisJc2NoZWRfbG9j
aygpOw0KKwlpZiAoLS1kZXYtPnJlZmNudCA+IDApIHsNCisJCXNjaGVkX3VubG9jaygpOw0KKwkJ
cmV0dXJuOw0KKwl9DQorCS8qDQorCSAqIE5vIG1vcmUgcmVmZXJlbmNlcyAtIHdlIGNhbiByZW1v
dmUgdGhlIGRldmljZS4NCisJICovDQorCWZvciAodG1wID0gJmRldmljZV9saXN0OyAqdG1wOyB0
bXAgPSAmKCp0bXApLT5uZXh0KSB7DQorCQlpZiAoKnRtcCA9PSBkZXYpIHsNCisJCQkqdG1wID0g
ZGV2LT5uZXh0Ow0KKwkJCWJyZWFrOw0KKwkJfQ0KKwl9DQorCWRlbGV0ZSBkZXY7DQorCXNjaGVk
X3VubG9jaygpOw0KK30NCisNCitpbnQNCitkZXZpY2VfZGVzdHJveShzdHJ1Y3QgZGV2aWNlICpk
ZXYpDQorew0KKw0KKwlzY2hlZF9sb2NrKCk7DQorCWlmICghZGV2aWNlX3ZhbGlkKGRldikpIHsN
CisJCXNjaGVkX3VubG9jaygpOw0KKwkJcmV0dXJuIEVOT0RFVjsNCisJfQ0KKwlkZXYtPmFjdGl2
ZSA9IDA7DQorCWRldmljZV9yZWxlYXNlKGRldik7DQorCXNjaGVkX3VubG9jaygpOw0KKwlyZXR1
cm4gMDsNCit9DQorDQorLyoNCisgKiBkZXZpY2Vfb3BlbiAtIG9wZW4gdGhlIHNwZWNpZmllZCBk
ZXZpY2UuDQorICoNCisgKiBFdmVuIGlmIHRoZSB0YXJnZXQgZHJpdmVyIGRvZXMgbm90IGhhdmUg
YW4gb3Blbg0KKyAqIHJvdXRpbmUsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGFuIGVy
cm9yLiBCeQ0KKyAqIHVzaW5nIHRoaXMgbWVjaGFuaXNtLCBhbiBhcHBsaWNhdGlvbiBjYW4gY2hl
Y2sgd2hldGhlcg0KKyAqIHRoZSBzcGVjaWZpYyBkZXZpY2UgZXhpc3RzIG9yIG5vdC4gVGhlIG9w
ZW4gbW9kZQ0KKyAqIHNob3VsZCBiZSBoYW5kbGVkIGJ5IGFuIGVhY2ggZGV2aWNlIGRyaXZlciBp
ZiBpdCBpcw0KKyAqIG5lZWRlZC4NCisgKi8NCitpbnQNCitkZXZpY2Vfb3Blbihjb25zdCBjaGFy
ICpuYW1lLCBpbnQgbW9kZSwgc3RydWN0IGRldmljZSAqKmRldnApDQorew0KKwlzdHJ1Y3QgZGV2
b3BzICpvcHM7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsNCisJaW50IGVycm9yOw0KKw0KKwlzY2hl
ZF9sb2NrKCk7DQorCWlmICgoZGV2ID0gZGV2aWNlX2xvb2t1cChuYW1lKSkgPT0gTlVMTCkgew0K
KwkJc2NoZWRfdW5sb2NrKCk7DQorCQlyZXR1cm4gRU5YSU87DQorCX0NCisJZXJyb3IgPSBkZXZp
Y2VfcmVmZXJlbmNlKGRldik7DQorCWlmIChlcnJvcikgew0KKwkJc2NoZWRfdW5sb2NrKCk7DQor
CQlyZXR1cm4gZXJyb3I7DQorCX0NCisJc2NoZWRfdW5sb2NrKCk7DQorDQorCW9wcyA9IGRldi0+
ZHJpdmVyLT5kZXZvcHM7DQorCWFzc2VydChvcHMtPm9wZW4gIT0gTlVMTCk7DQorCWVycm9yID0g
KCpvcHMtPm9wZW4pKGRldiwgbW9kZSk7DQorCSpkZXZwID0gZGV2Ow0KKw0KKwlkZXZpY2VfcmVs
ZWFzZShkZXYpOw0KKwlyZXR1cm4gZXJyb3I7DQorfQ0KKw0KKy8qDQorICogZGV2aWNlX2Nsb3Nl
IC0gY2xvc2UgYSBkZXZpY2UuDQorICoNCisgKiBFdmVuIGlmIHRoZSB0YXJnZXQgZHJpdmVyIGRv
ZXMgbm90IGhhdmUgY2xvc2Ugcm91dGluZSwNCisgKiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJl
dHVybiBhbnkgZXJyb3JzLg0KKyAqLw0KK2ludA0KK2RldmljZV9jbG9zZShzdHJ1Y3QgZGV2aWNl
ICpkZXYpDQorew0KKwlzdHJ1Y3QgZGV2b3BzICpvcHM7DQorCWludCBlcnJvcjsNCisNCisJaWYg
KChlcnJvciA9IGRldmljZV9yZWZlcmVuY2UoZGV2KSkgIT0gMCkNCisJCXJldHVybiBlcnJvcjsN
CisNCisJb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsNCisJYXNzZXJ0KG9wcy0+Y2xvc2UgIT0g
TlVMTCk7DQorCWVycm9yID0gKCpvcHMtPmNsb3NlKShkZXYpOw0KKw0KKwlkZXZpY2VfcmVsZWFz
ZShkZXYpOw0KKwlyZXR1cm4gZXJyb3I7DQorfQ0KKw0KK2ludA0KK2RldmljZV9yZWFkKHN0cnVj
dCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncykNCit7DQorCXN0cnVj
dCBkZXZvcHMgKm9wczsNCisJaW50IGVycm9yOw0KKw0KKwlpZiAoKGVycm9yID0gZGV2aWNlX3Jl
ZmVyZW5jZShkZXYpKSAhPSAwKQ0KKwkJcmV0dXJuIGVycm9yOw0KKw0KKwlvcHMgPSBkZXYtPmRy
aXZlci0+ZGV2b3BzOw0KKwlhc3NlcnQob3BzLT5yZWFkICE9IE5VTEwpOw0KKwllcnJvciA9ICgq
b3BzLT5yZWFkKShkZXYsIHVpbywgaW9mbGFncyk7DQorDQorCWRldmljZV9yZWxlYXNlKGRldik7
DQorCXJldHVybiBlcnJvcjsNCit9DQorDQoraW50DQorZGV2aWNlX3dyaXRlKHN0cnVjdCBkZXZp
Y2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncykNCit7DQorCXN0cnVjdCBkZXZv
cHMgKm9wczsNCisJaW50IGVycm9yOw0KKw0KKwlpZiAoKGVycm9yID0gZGV2aWNlX3JlZmVyZW5j
ZShkZXYpKSAhPSAwKQ0KKwkJcmV0dXJuIGVycm9yOw0KKw0KKwlvcHMgPSBkZXYtPmRyaXZlci0+
ZGV2b3BzOw0KKwlhc3NlcnQob3BzLT53cml0ZSAhPSBOVUxMKTsNCisJZXJyb3IgPSAoKm9wcy0+
d3JpdGUpKGRldiwgdWlvLCBpb2ZsYWdzKTsNCisNCisJZGV2aWNlX3JlbGVhc2UoZGV2KTsNCisJ
cmV0dXJuIGVycm9yOw0KK30NCisNCisvKg0KKyAqIGRldmljZV9pb2N0bCAtIEkvTyBjb250cm9s
IHJlcXVlc3QuDQorICoNCisgKiBBIGNvbW1hbmQgYW5kIGl0cyBhcmd1bWVudCBhcmUgY29tcGxl
dGVseSBkZXZpY2UgZGVwZW5kZW50Lg0KKyAqIFRoZSBpb2N0bCByb3V0aW5lIG9mIGVhY2ggZHJp
dmVyIG11c3QgdmFsaWRhdGUgdGhlIHVzZXIgYnVmZmVyDQorICogcG9pbnRlZCBieSB0aGUgYXJn
IHZhbHVlLg0KKyAqLw0KK2ludA0KK2RldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVf
bG9uZyBjbWQsIHZvaWQgKmFyZykNCit7DQorCXN0cnVjdCBkZXZvcHMgKm9wczsNCisJaW50IGVy
cm9yOw0KKw0KKwlpZiAoKGVycm9yID0gZGV2aWNlX3JlZmVyZW5jZShkZXYpKSAhPSAwKQ0KKwkJ
cmV0dXJuIGVycm9yOw0KKw0KKwlvcHMgPSBkZXYtPmRyaXZlci0+ZGV2b3BzOw0KKwlhc3NlcnQo
b3BzLT5pb2N0bCAhPSBOVUxMKTsNCisJZXJyb3IgPSAoKm9wcy0+aW9jdGwpKGRldiwgY21kLCBh
cmcpOw0KKw0KKwlkZXZpY2VfcmVsZWFzZShkZXYpOw0KKwlyZXR1cm4gZXJyb3I7DQorfQ0KKw0K
KyNpZiAwDQorLyoNCisgKiBEZXZpY2UgY29udHJvbCAtIGRldmN0bCBpcyBzaW1pbGFyIHRvIGlv
Y3RsLCBidXQgaXMgaW52b2tlZCBmcm9tDQorICogb3RoZXIgZGV2aWNlIGRyaXZlciByYXRoZXIg
dGhhbiBmcm9tIHVzZXIgYXBwbGljYXRpb24uDQorICovDQorc3RhdGljIGludA0KK2RldmljZV9j
b250cm9sKHN0cnVjdCBkZXZpY2UgKmRldiwgdV9sb25nIGNtZCwgdm9pZCAqYXJnKQ0KK3sNCisJ
c3RydWN0IGRldm9wcyAqb3BzOw0KKwlpbnQgZXJyb3I7DQorDQorCWFzc2VydChkZXYgIT0gTlVM
TCk7DQorDQorCXNjaGVkX2xvY2soKTsNCisJb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsNCisJ
YXNzZXJ0KG9wcy0+ZGV2Y3RsICE9IE5VTEwpOw0KKwllcnJvciA9ICgqb3BzLT5kZXZjdGwpKGRl
diwgY21kLCBhcmcpOw0KKwlzY2hlZF91bmxvY2soKTsNCisJcmV0dXJuIGVycm9yOw0KK30NCisN
CisvKg0KKyAqIGRldmljZV9icm9hZGNhc3QgLSBicm9hZGNhc3QgZGV2Y3RsIGNvbW1hbmQgdG8g
YWxsIGRldmljZSBvYmplY3RzLg0KKyAqDQorICogSWYgImZvcmNlIiBhcmd1bWVudCBpcyB0cnVl
LCB3ZSB3aWxsIGNvbnRpbnVlIGNvbW1hbmQNCisgKiBub3RpZmljYXRpb24gZXZlbiBpZiBzb21l
IGRyaXZlciByZXR1cm5zIGFuIGVycm9yLiBJbiB0aGlzDQorICogY2FzZSwgdGhpcyByb3V0aW5l
IHJldHVybnMgRUlPIGVycm9yIGlmIGF0IGxlYXN0IG9uZSBkcml2ZXINCisgKiByZXR1cm5zIGFu
IGVycm9yLg0KKyAqDQorICogSWYgZm9yY2UgYXJndW1lbnQgaXMgZmFsc2UsIGEga2VybmVsIHN0
b3BzIHRoZSBjb21tYW5kIHByb2Nlc3NpbmcNCisgKiB3aGVuIGF0IGxlYXN0IG9uZSBkcml2ZXIg
cmV0dXJucyBhbiBlcnJvci4gSW4gdGhpcyBjYXNlLA0KKyAqIGRldmljZV9icm9hZGNhc3Qgd2ls
bCByZXR1cm4gdGhlIGVycm9yIGNvZGUgd2hpY2ggaXMgcmV0dXJuZWQNCisgKiBieSB0aGUgZHJp
dmVyLg0KKyAqLw0KK3N0YXRpYyBpbnQNCitkZXZpY2VfYnJvYWRjYXN0KHVfbG9uZyBjbWQsIHZv
aWQgKmFyZywgaW50IGZvcmNlKQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2Ow0KKwlzdHJ1Y3Qg
ZGV2b3BzICpvcHM7DQorCWludCBlcnJvciwgcmV0dmFsID0gMDsNCisNCisJc2NoZWRfbG9jaygp
Ow0KKw0KKwlmb3IgKGRldiA9IGRldmljZV9saXN0OyBkZXYgIT0gTlVMTDsgZGV2ID0gZGV2LT5u
ZXh0KSB7DQorCQkvKg0KKwkJICogQ2FsbCBkcml2ZXIncyBkZXZjdGwoKSByb3V0aW5lLg0KKwkJ
ICovDQorCQlvcHMgPSBkZXYtPmRyaXZlci0+ZGV2b3BzOw0KKwkJaWYgKG9wcyA9PSBOVUxMKQ0K
KwkJCWNvbnRpbnVlOw0KKw0KKwkJYXNzZXJ0KG9wcy0+ZGV2Y3RsICE9IE5VTEwpOw0KKwkJZXJy
b3IgPSAoKm9wcy0+ZGV2Y3RsKShkZXYsIGNtZCwgYXJnKTsNCisJCWlmIChlcnJvcikgew0KKwkJ
CWlmIChmb3JjZSkNCisJCQkJcmV0dmFsID0gRUlPOw0KKwkJCWVsc2Ugew0KKwkJCQlyZXR2YWwg
PSBlcnJvcjsNCisJCQkJYnJlYWs7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCXNjaGVkX3VubG9jaygp
Ow0KKwlyZXR1cm4gcmV0dmFsOw0KK30NCisjZW5kaWYNCisNCisvKg0KKyAqIFJldHVybiBkZXZp
Y2UgaW5mb3JtYXRpb24uDQorICovDQoraW50DQorZGV2aWNlX2luZm8oc3RydWN0IGRldmluZm8g
KmluZm8pDQorew0KKwl1X2xvbmcgdGFyZ2V0ID0gaW5mby0+Y29va2llOw0KKwl1X2xvbmcgaSA9
IDA7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsNCisJaW50IGVycm9yID0gRVNSQ0g7DQorDQorCXNj
aGVkX2xvY2soKTsNCisJZm9yIChkZXYgPSBkZXZpY2VfbGlzdDsgZGV2ICE9IE5VTEw7IGRldiA9
IGRldi0+bmV4dCkgew0KKwkJaWYgKGkrKyA9PSB0YXJnZXQpIHsNCisJCQlpbmZvLT5jb29raWUg
PSBpOw0KKwkJCWluZm8tPmlkID0gZGV2Ow0KKwkJCWluZm8tPmZsYWdzID0gZGV2LT5mbGFnczsN
CisJCQlzdHJsY3B5KGluZm8tPm5hbWUsIGRldi0+bmFtZSwgTUFYREVWTkFNRSk7DQorCQkJZXJy
b3IgPSAwOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwl9DQorCXNjaGVkX3VubG9jaygpOw0KKwlyZXR1
cm4gZXJyb3I7DQorfQ0KKw0KK2ludA0KK2Vub2Rldih2b2lkKQ0KK3sNCisJcmV0dXJuIEVOT0RF
VjsNCit9DQorDQoraW50DQorbnVsbG9wKHZvaWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQpkaWZm
IC0tZ2l0IGEvbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMvZGV2aWNlLmggYi9saWIvZGV2ZnMvaW5j
bHVkZS9kZXZmcy9kZXZpY2UuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw
Li4xNmQyZTQ3MA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMv
ZGV2aWNlLmgNCkBAIC0wLDAgKzEsMjEzIEBADQorLyotDQorICogQ29weXJpZ2h0IChjKSAyMDA1
LTIwMDgsIEtvaHN1a2UgT2h0YW5pDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4NCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBu
YW1lcyBvZiBhbnkgY28tY29udHJpYnV0b3JzDQorICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlDQorICogICAg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EDQorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCisgKiBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRQ0KKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMN
CisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikNCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KKyAqIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkNCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQorICogU1VDSCBEQU1BR0UuDQorICovDQorDQorI2lm
bmRlZiBfREVWSUNFX0gNCisjZGVmaW5lIF9ERVZJQ0VfSA0KKw0KKyNpbmNsdWRlIDxzeXMvY2Rl
ZnMuaD4NCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQorDQorI2luY2x1ZGUgPG9zdi91aW8uaD4N
CisNCitfX0JFR0lOX0RFQ0xTDQorDQorI2RlZmluZSBNQVhERVZOQU1FCTEyDQorI2RlZmluZSBE
T19SV01BU0sJMHgzDQorDQorc3RydWN0IGJpbzsNCitzdHJ1Y3QgZGV2aWNlOw0KKw0KKy8qDQor
ICogRGV2aWNlIGluZm9ybWF0aW9uDQorICovDQorc3RydWN0IGRldmluZm8gew0KKwl1X2xvbmcJ
CWNvb2tpZTsJCS8qIGluZGV4IGNvb2tpZSAqLw0KKwlzdHJ1Y3QgZGV2aWNlCSppZDsJCS8qIGRl
dmljZSBpZCAqLw0KKwlpbnQJCWZsYWdzOwkJLyogZGV2aWNlIGNoYXJhY3RlcmlzdGljcyBmbGFn
cyAqLw0KKwljaGFyCQluYW1lW01BWERFVk5BTUVdOyAvKiBkZXZpY2UgbmFtZSAqLw0KK307DQor
DQorLyoNCisgKiBEZXZpY2UgZmxhZ3MNCisgKi8NCisjZGVmaW5lIERfQ0hSCQkweDAwMDAwMDAx
CS8qIGNoYXJhY3RlciBkZXZpY2UgKi8NCisjZGVmaW5lIERfQkxLCQkweDAwMDAwMDAyCS8qIGJs
b2NrIGRldmljZSAqLw0KKyNkZWZpbmUgRF9SRU0JCTB4MDAwMDAwMDQJLyogcmVtb3ZhYmxlIGRl
dmljZSAqLw0KKyNkZWZpbmUgRF9UVFkJCTB4MDAwMDAwMTAJLyogdHR5IGRldmljZSAqLw0KKw0K
K3R5cGVkZWYgaW50ICgqZGV2b3Bfb3Blbl90KSAgIChzdHJ1Y3QgZGV2aWNlICosIGludCk7DQor
dHlwZWRlZiBpbnQgKCpkZXZvcF9jbG9zZV90KSAgKHN0cnVjdCBkZXZpY2UgKik7DQordHlwZWRl
ZiBpbnQgKCpkZXZvcF9yZWFkX3QpICAgKHN0cnVjdCBkZXZpY2UgKiwgc3RydWN0IHVpbyAqLCBp
bnQpOw0KK3R5cGVkZWYgaW50ICgqZGV2b3Bfd3JpdGVfdCkgIChzdHJ1Y3QgZGV2aWNlICosIHN0
cnVjdCB1aW8gKiwgaW50KTsNCit0eXBlZGVmIGludCAoKmRldm9wX2lvY3RsX3QpICAoc3RydWN0
IGRldmljZSAqLCB1X2xvbmcsIHZvaWQgKik7DQordHlwZWRlZiBpbnQgKCpkZXZvcF9kZXZjdGxf
dCkgKHN0cnVjdCBkZXZpY2UgKiwgdV9sb25nLCB2b2lkICopOw0KK3R5cGVkZWYgdm9pZCAoKmRl
dm9wX3N0cmF0ZWd5X3QpKHN0cnVjdCBiaW8gKik7DQorDQorLyoNCisgKiBEZXZpY2Ugb3BlcmF0
aW9ucw0KKyAqLw0KK3N0cnVjdCBkZXZvcHMgew0KKwlkZXZvcF9vcGVuX3QJb3BlbjsNCisJZGV2
b3BfY2xvc2VfdAljbG9zZTsNCisJZGV2b3BfcmVhZF90CXJlYWQ7DQorCWRldm9wX3dyaXRlX3QJ
d3JpdGU7DQorCWRldm9wX2lvY3RsX3QJaW9jdGw7DQorCWRldm9wX2RldmN0bF90CWRldmN0bDsN
CisJZGV2b3Bfc3RyYXRlZ3lfdCBzdHJhdGVneTsNCit9Ow0KKw0KKw0KKyNkZWZpbmUJbm9fb3Bl
bgkJKChkZXZvcF9vcGVuX3QpbnVsbG9wKQ0KKyNkZWZpbmUJbm9fY2xvc2UJKChkZXZvcF9jbG9z
ZV90KW51bGxvcCkNCisjZGVmaW5lCW5vX3JlYWQJCSgoZGV2b3BfcmVhZF90KWVub2RldikNCisj
ZGVmaW5lCW5vX3dyaXRlCSgoZGV2b3Bfd3JpdGVfdCllbm9kZXYpDQorI2RlZmluZQlub19pb2N0
bAkoKGRldm9wX2lvY3RsX3QpZW5vZGV2KQ0KKyNkZWZpbmUJbm9fZGV2Y3RsCSgoZGV2b3BfZGV2
Y3RsX3QpbnVsbG9wKQ0KKw0KKy8qDQorICogRHJpdmVyIG9iamVjdA0KKyAqLw0KK3N0cnVjdCBk
cml2ZXIgew0KKwljb25zdCBjaGFyCSpuYW1lOwkJLyogbmFtZSBvZiBkZXZpY2UgZHJpdmVyICov
DQorCXN0cnVjdCBkZXZvcHMJKmRldm9wczsJLyogZGV2aWNlIG9wZXJhdGlvbnMgKi8NCisJc2l6
ZV90CQlkZXZzejsJCS8qIHNpemUgb2YgcHJpdmF0ZSBkYXRhICovDQorCWludAkJZmxhZ3M7CQkv
KiBzdGF0ZSBvZiBkcml2ZXIgKi8NCit9Ow0KKw0KKy8qDQorICogZmxhZ3MgZm9yIHRoZSBkcml2
ZXIuDQorICovDQorDQordHlwZWRlZiBlbnVtIGRldmljZV9zdGF0ZSB7DQorICAgIERTX0lOQUNU
SVZFCSAgICA9IDB4MDAsCQkvKiBkcml2ZXIgaXMgaW5hY3RpdmUgKi8NCisgICAgRFNfQUxJVkUJ
ICAgID0gMHgwMSwJCS8qIHByb2JlIHN1Y2NlZGVkICovDQorICAgIERTX0FDVElWRQkgICAgPSAw
eDAyLAkJLyogaW50aWFsaXplZCAqLw0KKyAgICBEU19ERUJVRwkgICAgPSAweDA0LAkJLyogZGVi
dWcgKi8NCisgICAgRFNfTk9UUFJFU0VOVCAgID0gMHgwOCwgICAgIC8qIG5vdCBwcm9iZWQgb3Ig
cHJvYmUgZmFpbGVkICovDQorICAgIERTX0FUVEFDSElORyAgICA9IDB4MTAsICAgICAvKiBjdXJy
ZW50bHkgYXR0YWNoaW5nICovDQorICAgIERTX0FUVEFDSEVEICAgICA9IDB4MjAsICAgICAvKmF0
dGFjaCBtZXRob2QgY2FsbGVkICovDQorfSBkZXZpY2Vfc3RhdGVfdDsNCisNCisvKg0KKyAqIERl
dmljZSBvYmplY3QNCisgKi8NCitzdHJ1Y3QgZGV2aWNlIHsNCisJc3RydWN0IGRldmljZQkqbmV4
dDsJCS8qIGxpbmthZ2Ugb24gbGlzdCBvZiBhbGwgZGV2aWNlcyAqLw0KKwlzdHJ1Y3QgZHJpdmVy
CSpkcml2ZXI7CS8qIHBvaW50ZXIgdG8gdGhlIGRyaXZlciBvYmplY3QgKi8NCisJY2hhcgkJbmFt
ZVtNQVhERVZOQU1FXTsgLyogbmFtZSBvZiBkZXZpY2UgKi8NCisJaW50CQlmbGFnczsJCS8qIERf
KiBmbGFncyBkZWZpbmVkIGFib3ZlICovDQorCWludAkJYWN0aXZlOwkJLyogZGV2aWNlIGhhcyBu
b3QgYmVlbiBkZXN0cm95ZWQgKi8NCisJaW50CQlyZWZjbnQ7CQkvKiByZWZlcmVuY2UgY291bnQg
Ki8NCisJb2ZmX3QJCXNpemU7CQkvKiBkZXZpY2Ugc2l6ZSAqLw0KKwlvZmZfdAkJb2Zmc2V0OyAv
KiAwIGZvciB0aGUgbWFpbiBkcml2ZSwgaWYgd2UgaGF2ZSBhIHBhcnRpdGlvbiwgdGhpcyBpcyB0
aGUgc3RhcnQgYWRkcmVzcyAqLw0KKwlzaXplX3QJCW1heF9pb19zaXplOw0KKwl2b2lkCQkqcHJp
dmF0ZV9kYXRhOwkvKiBwcml2YXRlIHN0b3JhZ2UgKi8NCisNCisJdm9pZCAqc29mdGM7DQorCXZv
aWQgKml2YXJzOw0KKwlkZXZpY2Vfc3RhdGVfdCBzdGF0ZTsNCisJY29uc3QgY2hhciAqZGVzYzsN
CisJaW50IHVuaXQ7DQorCWludCBpcnE7DQorCWludCB2ZWN0b3I7DQorfTsNCisNCit0eXBlZGVm
IHN0cnVjdCBkZXZpY2UgKmRldmljZV90Ow0KKw0KK3N0YXRpYyBpbmxpbmUgaW50DQorZGV2aWNl
X3NldF91bml0KGRldmljZV90IGRldiwgaW50IHVuaXQpDQorew0KKwlkZXYtPnVuaXQgPSB1bml0
Ow0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQNCitkZXZpY2VfZ2V0X3Vu
aXQoZGV2aWNlX3QgZGV2KQ0KK3sNCisJcmV0dXJuIGRldi0+dW5pdDsNCit9DQorDQorc3RhdGlj
IGlubGluZSBjb25zdCBjaGFyICoNCitkZXZpY2VfZ2V0X2Rlc2MoZGV2aWNlX3QgZGV2KQ0KK3sN
CisJcmV0dXJuIGRldi0+ZGVzYzsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkDQorZGV2aWNl
X3NldF9kZXNjKGRldmljZV90IGRldiwgY29uc3QgY2hhciogZGVzYykNCit7DQorCWRldi0+ZGVz
YyA9IGRlc2M7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZA0KK2RldmljZV9zZXRfc29mdGMo
ZGV2aWNlX3QgZGV2LCB2b2lkKiBzb2Z0YykNCit7DQorCWRldi0+c29mdGMgPSBzb2Z0YzsNCit9
DQorDQorc3RhdGljIGlubGluZSB2b2lkICoNCitkZXZpY2VfZ2V0X3NvZnRjKGRldmljZV90IGRl
dikNCit7DQorCXJldHVybiBkZXYtPnNvZnRjOw0KK30NCisNCitzdGF0aWMgaW5saW5lIHZvaWQg
ZGV2aWNlX3F1aWV0KGRldmljZV90IGRldikNCit7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgY29u
c3QgY2hhciAqDQorZGV2dG9uYW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorICAgIHJldHVy
biBkZXYtPm5hbWU7DQorfQ0KKw0KK2ludAkgZGV2aWNlX29wZW4oY29uc3QgY2hhciAqLCBpbnQs
IHN0cnVjdCBkZXZpY2UgKiopOw0KK2ludAkgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKik7
DQoraW50CSBkZXZpY2VfcmVhZChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsN
CitpbnQJIGRldmljZV93cml0ZShzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsN
CitpbnQJIGRldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNlICosIHVfbG9uZywgdm9pZCAqKTsNCitp
bnQJIGRldmljZV9pbmZvKHN0cnVjdCBkZXZpbmZvICopOw0KKw0KK2ludAkgYmRldl9yZWFkKHN0
cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncyk7DQoraW50CSBi
ZGV2X3dyaXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFn
cyk7DQorDQoraW50CWVub2Rldih2b2lkKTsNCitpbnQJbnVsbG9wKHZvaWQpOw0KK3ZvaWQgbXVs
dGlwbGV4X3N0cmF0ZWd5KHN0cnVjdCBiaW8gKik7DQorDQoraW50CXBoeXNpbyhzdHJ1Y3QgZGV2
aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpOw0KKw0KK3N0cnVjdCBkZXZp
Y2UgKglkZXZpY2VfY3JlYXRlKHN0cnVjdCBkcml2ZXIgKmRydiwgY29uc3QgY2hhciAqbmFtZSwg
aW50IGZsYWdzKTsNCitpbnQgZGV2aWNlX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2KTsNCit2
b2lkIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKm5h
bWUsIGludCBmbGFncyk7DQordm9pZCByZWFkX3BhcnRpdGlvbl90YWJsZShzdHJ1Y3QgZGV2aWNl
ICpkZXZpY2UpOw0KKw0KK19fRU5EX0RFQ0xTDQorDQorI2VuZGlmIC8qICFfREVWSUNFX0ggKi8N
Ci0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 11:58:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 11:58:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hZDVz-0007xC-NJ; Fri, 07 Jun 2019 11:58:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DZcQ=UG=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hZDVx-0007wl-UX
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 11:58:33 +0000
X-Inumbo-ID: 92ce5fb9-891b-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 92ce5fb9-891b-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 11:58:33 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4986.eurprd01.prod.exchangelabs.com (20.177.210.78) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Fri, 7 Jun
 2019 11:58:29 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Fri, 7 Jun 2019
 11:58:29 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v4 3/5] lib/devfs: Tabify imported devfs code
Thread-Index: AQHVHShSQyZ5T6hnUEuzBEwRGHkoLQ==
Date: Fri, 7 Jun 2019 11:58:29 +0000
Message-ID: <20190607115809.24990-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0013.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: ccc78347-4361-4e27-9048-08d6eb3f7468
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4986; 
x-ms-traffictypediagnostic: PR1PR01MB4986:
x-microsoft-antispam-prvs: <PR1PR01MB49861259C6C56EBC496DFF42A6100@PR1PR01MB4986.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:1728;
x-forefront-prvs: 0061C35778
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(5660300002)(316002)(786003)(6916009)(6436002)(66574012)(1076003)(53936002)(305945005)(6486002)(2906002)(4326008)(26005)(186003)(81156014)(8936002)(81166006)(8676002)(50226002)(486006)(76176011)(74482002)(52116002)(102836004)(6506007)(386003)(11346002)(2616005)(476003)(446003)(508600001)(7736002)(25786009)(85202003)(2351001)(14454004)(2501003)(68736007)(66066001)(85182001)(99286004)(6116002)(256004)(64756008)(66446008)(3846002)(86362001)(54906003)(73956011)(5024004)(14444005)(6512007)(66556008)(71200400001)(71190400001)(66476007)(66946007)(5640700003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4986;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: Ag0EKWD97xX2V35+7aXyXKF5TYQYdkpIKpmD5iwZKEsyQGSp6Zt7ZwtNshcNNwcLM4+biAW5AmIZP7f1R4ictqGdjX9F6wQxNKzE9RCVhmREHU4K1C19LTo3a7rFgZ3XIj4Puitc5anpUlwJChxUtlGsI5S7iDWUDixsq+aSw9tncFye2U2pYsAbclewUHykULOvKCvqkd/nMPDmdj45/AOJb0DWgrJzPJUf9O2pJ1R25d/Tdnabl2wNkehOf6ofvrK/YgHHKJ4SWqf+/AqYpVW9len9Gd5Ik2O7ojIZnV0lZmiCrU1NG6r5jYb/OwVvemOCaiZ8kSFYiGZJY9ftqsE3KFYc7ije8Mp1G9MNwkE1BQXh4C7IV+rx6YwbyRRz4tcIte0uBhlH+mPfqUemcm3nOz5748dxcDUSdguy6l8=
Content-ID: <E1E774A80F138B4CB1D2E7207E4308D0@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: ccc78347-4361-4e27-9048-08d6eb3f7468
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2019 11:58:29.0269 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4986
Subject: [Minios-devel] [UNIKRAFT PATCH v4 3/5] lib/devfs: Tabify imported
 devfs code
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.ro>,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpBY2NvcmRpbmcgdG8gVW5pa3JhZnQncyBjb2Rpbmcgc3R5bGUgaW5k
ZW50cyBhcmUNCnVuZGVyIHRoZSBmb3JtIG9mIHRhYnMuIFRoZSBpbXBvcnRlZCBjb2RlIHVzZWQg
Ym90aA0Kc3BhY2VzIGFuZCB0YWJzLiBUaGlzIHBhdGNoIG1ha2VzIGFsbCBpbmRlbnRzIHRvDQpi
ZSB1c2UgdGFicy4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2Fu
ZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KUmV2aWV3ZWQtYnk6IFl1cmkgVm9sY2hrb3Yg
PHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1Pg0KLS0tDQogbGliL2RldmZzL2RldmZzX3Zub3BzLmMg
ICAgICAgICAgfCAgNiArKystLS0NCiBsaWIvZGV2ZnMvaW5jbHVkZS9kZXZmcy9kZXZpY2UuaCB8
IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tDQogMiBmaWxlcyBjaGFuZ2VkLCAx
OSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2xpYi9kZXZm
cy9kZXZmc192bm9wcy5jIGIvbGliL2RldmZzL2RldmZzX3Zub3BzLmMNCmluZGV4IGFmMmFiZjky
Li5lZGQ4MDFjOCAxMDA2NDQNCi0tLSBhL2xpYi9kZXZmcy9kZXZmc192bm9wcy5jDQorKysgYi9s
aWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYw0KQEAgLTI5OCw5ICsyOTgsOSBAQCBzdHJ1Y3QgdmZzb3Bz
IGRldmZzX3Zmc29wcyA9IHsNCiB9Ow0KIA0KIHN0YXRpYyBzdHJ1Y3QgdmZzY29yZV9mc190eXBl
IGZzX2RldmZzID0gew0KLSAgICAudnNfbmFtZSA9ICJkZXZmcyIsDQotICAgIC52c19pbml0ID0g
TlVMTCwNCi0gICAgLnZzX29wID0gJmRldmZzX3Zmc29wcywNCisJLnZzX25hbWUgPSAiZGV2ZnMi
LA0KKwkudnNfaW5pdCA9IE5VTEwsDQorCS52c19vcCA9ICZkZXZmc192ZnNvcHMsDQogfTsNCiAN
CiBVS19GU19SRUdJU1RFUihmc19kZXZmcyk7DQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL2luY2x1
ZGUvZGV2ZnMvZGV2aWNlLmggYi9saWIvZGV2ZnMvaW5jbHVkZS9kZXZmcy9kZXZpY2UuaA0KaW5k
ZXggMTgzZjQxOGQuLjY0NDZkMzMwIDEwMDY0NA0KLS0tIGEvbGliL2RldmZzL2luY2x1ZGUvZGV2
ZnMvZGV2aWNlLmgNCisrKyBiL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oDQpAQCAt
MTAyLDEzICsxMDIsMTMgQEAgc3RydWN0IGRyaXZlciB7DQogICovDQogDQogdHlwZWRlZiBlbnVt
IGRldmljZV9zdGF0ZSB7DQotICAgIERTX0lOQUNUSVZFCSAgICA9IDB4MDAsCQkvKiBkcml2ZXIg
aXMgaW5hY3RpdmUgKi8NCi0gICAgRFNfQUxJVkUJICAgID0gMHgwMSwJCS8qIHByb2JlIHN1Y2Nl
ZGVkICovDQotICAgIERTX0FDVElWRQkgICAgPSAweDAyLAkJLyogaW50aWFsaXplZCAqLw0KLSAg
ICBEU19ERUJVRwkgICAgPSAweDA0LAkJLyogZGVidWcgKi8NCi0gICAgRFNfTk9UUFJFU0VOVCAg
ID0gMHgwOCwgICAgIC8qIG5vdCBwcm9iZWQgb3IgcHJvYmUgZmFpbGVkICovDQotICAgIERTX0FU
VEFDSElORyAgICA9IDB4MTAsICAgICAvKiBjdXJyZW50bHkgYXR0YWNoaW5nICovDQotICAgIERT
X0FUVEFDSEVEICAgICA9IDB4MjAsICAgICAvKmF0dGFjaCBtZXRob2QgY2FsbGVkICovDQorCURT
X0lOQUNUSVZFCSAgICA9IDB4MDAsCQkvKiBkcml2ZXIgaXMgaW5hY3RpdmUgKi8NCisJRFNfQUxJ
VkUJICAgID0gMHgwMSwJCS8qIHByb2JlIHN1Y2NlZGVkICovDQorCURTX0FDVElWRQkgICAgPSAw
eDAyLAkJLyogaW50aWFsaXplZCAqLw0KKwlEU19ERUJVRwkgICAgPSAweDA0LAkJLyogZGVidWcg
Ki8NCisJRFNfTk9UUFJFU0VOVCAgID0gMHgwOCwgICAgIC8qIG5vdCBwcm9iZWQgb3IgcHJvYmUg
ZmFpbGVkICovDQorCURTX0FUVEFDSElORyAgICA9IDB4MTAsICAgICAvKiBjdXJyZW50bHkgYXR0
YWNoaW5nICovDQorCURTX0FUVEFDSEVEICAgICA9IDB4MjAsICAgICAvKmF0dGFjaCBtZXRob2Qg
Y2FsbGVkICovDQogfSBkZXZpY2Vfc3RhdGVfdDsNCiANCiAvKg0KQEAgLTE4MSwxOCArMTgxLDE4
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkZXZpY2VfcXVpZXQoZGV2aWNlX3QgZGV2IF9fdW51c2Vk
KQ0KIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqDQogZGV2dG9uYW1lKHN0cnVjdCBkZXZpY2Ug
KmRldikNCiB7DQotICAgIHJldHVybiBkZXYtPm5hbWU7DQorCXJldHVybiBkZXYtPm5hbWU7DQog
fQ0KIA0KLWludAkgZGV2aWNlX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIHN0cnVjdCBkZXZpY2Ug
KiopOw0KLWludAkgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKik7DQotaW50CSBkZXZpY2Vf
cmVhZChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsNCi1pbnQJIGRldmljZV93
cml0ZShzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsNCi1pbnQJIGRldmljZV9p
b2N0bChzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7DQotaW50CSBkZXZp
Y2VfaW5mbyhzdHJ1Y3QgZGV2aW5mbyAqKTsNCitpbnQgZGV2aWNlX29wZW4oY29uc3QgY2hhciAq
LCBpbnQsIHN0cnVjdCBkZXZpY2UgKiopOw0KK2ludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmlj
ZSAqKTsNCitpbnQgZGV2aWNlX3JlYWQoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgdWlvICosIGlu
dCk7DQoraW50IGRldmljZV93cml0ZShzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50
KTsNCitpbnQgZGV2aWNlX2lvY3RsKHN0cnVjdCBkZXZpY2UgKiwgdW5zaWduZWQgbG9uZywgdm9p
ZCAqKTsNCitpbnQgZGV2aWNlX2luZm8oc3RydWN0IGRldmluZm8gKik7DQogDQotaW50CSBiZGV2
X3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKTsN
Ci1pbnQJIGJkZXZfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGlu
dCBpb2ZsYWdzKTsNCitpbnQgYmRldl9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFncyk7DQoraW50IGJkZXZfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2
LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKTsNCiANCiBpbnQJZW5vZGV2KHZvaWQpOw0K
IGludAludWxsb3Aodm9pZCk7DQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 11:58:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 11:58:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hZDVz-0007xJ-Pc; Fri, 07 Jun 2019 11:58:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DZcQ=UG=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hZDVx-0007wm-VJ
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 11:58:34 +0000
X-Inumbo-ID: 91c58f5e-891b-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 91c58f5e-891b-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 11:58:31 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4986.eurprd01.prod.exchangelabs.com (20.177.210.78) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Fri, 7 Jun
 2019 11:58:28 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Fri, 7 Jun 2019
 11:58:28 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v4 2/5] lib/devfs: Adapt imported devfs to
 Unikraft
Thread-Index: AQHVHShRIb26QCcfUUu2xohdtaj8aQ==
Date: Fri, 7 Jun 2019 11:58:28 +0000
Message-ID: <20190607115809.24990-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0013.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b7083460-463d-43dc-4740-08d6eb3f73d1
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4986; 
x-ms-traffictypediagnostic: PR1PR01MB4986:
x-microsoft-antispam-prvs: <PR1PR01MB4986CC297F7443367E14814FA6100@PR1PR01MB4986.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:364;
x-forefront-prvs: 0061C35778
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(5660300002)(30864003)(316002)(786003)(6916009)(6436002)(66574012)(1076003)(53936002)(305945005)(6486002)(2906002)(4326008)(26005)(186003)(81156014)(8936002)(81166006)(8676002)(50226002)(486006)(76176011)(74482002)(52116002)(102836004)(6506007)(386003)(11346002)(2616005)(476003)(446003)(508600001)(7736002)(25786009)(85202003)(2351001)(14454004)(2501003)(68736007)(66066001)(85182001)(99286004)(6116002)(256004)(64756008)(66446008)(53946003)(3846002)(86362001)(54906003)(73956011)(14444005)(6512007)(66556008)(71200400001)(71190400001)(66476007)(66946007)(5640700003)(579004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4986;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: vbyHZC97Nyogf4lYNI69LHDYwfYwhZWn+BDX3SrK4VgrqtkyfmNmXB5jY5Cgs1XcPVHvE2zy8ZzmcE8Dll3C0uUrN27IiEICpPzXPxaxm1TcNqpCCkOl/iIGgW2QgaU8Q2cd9GInbXbvhPukBtcH05iZLVNdesbgI3jRK0C+EibBece7iBWdE1M7MgvKOWDvLejnehNIjf9aIzkxgweVJAq5g4bRQT283MAN49VDeIRQIX5R+Fp7oXDQ1v1daVQ9xQr25IUZGIuwNba8EN8VEjDAAYwtsnRnXgDDWE+VkPoZbZkTvpZkBXFKLEwVedrWsbFGGAexbErzF1IQsDaYOokjiiVE9KGTwdsDQT1Meo2ujlUUEt/rC1VKofCxIqVHd6Ui/4qkpfMQpcKOZjRUl7tLttktHBIWBHszzsO73oA=
Content-ID: <09245D1732982740AD24BCE0FD1AD31C@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: b7083460-463d-43dc-4740-08d6eb3f73d1
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2019 11:58:28.1514 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4986
Subject: [Minios-devel] [UNIKRAFT PATCH v4 2/5] lib/devfs: Adapt imported
 devfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpUaGUgaW5jb21wYXRpYmxlIGNhc3Qgd2FybmluZ3MgY2F1c2VkIGJ5
IHRoZSB0aGUgbWFjcm8gZXhwYW5zaW9ucywgc3VjaCBhcw0KYCNkZWZpbmUgZGV2ZnNfbW91bnQg
KCh2ZnNvcF9tb3VudF90KXZmc2NvcmVfbnVsbG9wKWAsIHJlcXVpcmVzIGNoYW5nZXMNCnRvIHZm
c2NvcmUuDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIGxpYi9Db25maWcudWsgICAgICAgICAgICAg
ICAgICAgIHwgICAxICsNCiBsaWIvTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICB8ICAgMSAr
DQogbGliL2RldmZzL0NvbmZpZy51ayAgICAgICAgICAgICAgfCAgMTAgKysNCiBsaWIvZGV2ZnMv
TWFrZWZpbGUudWsgICAgICAgICAgICB8ICAgNiArDQogbGliL2RldmZzL2RldmZzLmggICAgICAg
ICAgICAgICAgfCAgIDIgKy0NCiBsaWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYyAgICAgICAgICB8IDE0
NyArKysrKysrKysrKystLS0tLS0NCiBsaWIvZGV2ZnMvZGV2aWNlLmMgICAgICAgICAgICAgICB8
IDI1NyArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogbGliL2RldmZzL2V4cG9ydHN5
bXMudWsgICAgICAgICAgfCAgIDYgKw0KIGxpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5o
IHwgIDIxICstLQ0KIDkgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDI0NiBkZWxl
dGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL0NvbmZpZy51aw0KIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvZGV2ZnMvTWFrZWZpbGUudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL2RldmZzL2V4cG9ydHN5bXMudWsNCg0KZGlmZiAtLWdpdCBhL2xpYi9Db25maWcudWsgYi9s
aWIvQ29uZmlnLnVrDQppbmRleCA4MjJjNjI0Zi4uYmQ2NmUyZjAgMTAwNjQ0DQotLS0gYS9saWIv
Q29uZmlnLnVrDQorKysgYi9saWIvQ29uZmlnLnVrDQpAQCAtNDEsNiArNDEsNyBAQCBzb3VyY2Ug
ImxpYi91a3NjaGVkY29vcC9Db25maWcudWsiDQogc291cmNlICJsaWIvZmR0L0NvbmZpZy51ayIN
CiBzb3VyY2UgImxpYi92ZnNjb3JlL0NvbmZpZy51ayINCiBzb3VyY2UgImxpYi9yYW1mcy9Db25m
aWcudWsiDQorc291cmNlICJsaWIvZGV2ZnMvQ29uZmlnLnVrIg0KIHNvdXJjZSAibGliL3VrbG9j
ay9Db25maWcudWsiDQogc291cmNlICJsaWIvdWttcGkvQ29uZmlnLnVrIg0KIHNvdXJjZSAibGli
L3Vrc3dyYW5kL0NvbmZpZy51ayINCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIv
TWFrZWZpbGUudWsNCmluZGV4IGQwNjgzN2YxLi40NmVkYzZlMiAxMDA2NDQNCi0tLSBhL2xpYi9N
YWtlZmlsZS51aw0KKysrIGIvbGliL01ha2VmaWxlLnVrDQpAQCAtMTksNiArMTksNyBAQCAkKGV2
YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a3NjaGVkY29vcCkp
DQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvZmR0KSkN
CiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi92ZnNjb3Jl
KSkNCiAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi9yYW1m
cykpDQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvZGV2
ZnMpKQ0KICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Vr
bG9jaykpDQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIv
dWttcGkpKQ0KICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGli
L3VrYnVzKSkNCmRpZmYgLS1naXQgYS9saWIvZGV2ZnMvQ29uZmlnLnVrIGIvbGliL2RldmZzL0Nv
bmZpZy51aw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwLi5lMzhhNjE2ZQ0K
LS0tIC9kZXYvbnVsbA0KKysrIGIvbGliL2RldmZzL0NvbmZpZy51aw0KQEAgLTAsMCArMSwxMCBA
QA0KK2NvbmZpZyBMSUJERVZGUw0KKwlib29sICJkZXZmczogZGV2ZnMgZmlsZSBzeXN0ZW0iDQor
CWRlZmF1bHQgbg0KKwlkZXBlbmRzIG9uIExJQlZGU0NPUkUNCitpZiBMSUJERVZGUw0KKyAgICAg
ICAgY29uZmlnIExJQkRFVkZTX1VTRV9SQU1GUw0KKyAgICAgICAgYm9vbCAiVXNlIHJhbWZzIGFz
IHJvb3QiDQorICAgICAgICBkZWZhdWx0IG4NCisgICAgICAgIHNlbGVjdCBMSUJSQU1GUw0KK2Vu
ZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL01ha2VmaWxlLnVrIGIvbGliL2RldmZzL01ha2Vm
aWxlLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAuLmY4OWU2NTc3DQot
LS0gL2Rldi9udWxsDQorKysgYi9saWIvZGV2ZnMvTWFrZWZpbGUudWsNCkBAIC0wLDAgKzEsNiBA
QA0KKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZGV2ZnMsJChDT05GSUdfTElCREVWRlMpKSkN
CisNCitDSU5DTFVERVMteSArPSAtSSQoTElCREVWRlNfQkFTRSkvaW5jbHVkZQ0KKw0KK0xJQkRF
VkZTX1NSQ1MteSArPSAkKExJQkRFVkZTX0JBU0UpL2RldmljZS5jDQorTElCREVWRlNfU1JDUy15
ICs9ICQoTElCREVWRlNfQkFTRSkvZGV2ZnNfdm5vcHMuYw0KZGlmZiAtLWdpdCBhL2xpYi9kZXZm
cy9kZXZmcy5oIGIvbGliL2RldmZzL2RldmZzLmgNCmluZGV4IGJkZjUwNjA5Li5jMjE5N2Y3OSAx
MDA2NDQNCi0tLSBhL2xpYi9kZXZmcy9kZXZmcy5oDQorKysgYi9saWIvZGV2ZnMvZGV2ZnMuaA0K
QEAgLTMwLDcgKzMwLDcgQEANCiAjaWZuZGVmIF9ERVZGU19IDQogI2RlZmluZSBfREVWRlNfSA0K
IA0KLSNpbmNsdWRlIDxhc3NlcnQuaD4NCisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+DQogDQogLyog
I2RlZmluZSBERUJVR19ERVZGUyAxICovDQogDQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL2RldmZz
X3Zub3BzLmMgYi9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYw0KaW5kZXggMWU2OWU0YTYuLmFmMmFi
ZjkyIDEwMDY0NA0KLS0tIGEvbGliL2RldmZzL2RldmZzX3Zub3BzLmMNCisrKyBiL2xpYi9kZXZm
cy9kZXZmc192bm9wcy5jDQpAQCAtMzEsNiArMzEsMTAgQEANCiAgKiBkZXZmcyAtIGRldmljZSBm
aWxlIHN5c3RlbS4NCiAgKi8NCiANCisjaWZuZGVmIF9HTlVfU09VUkNFDQorI2RlZmluZSBfR05V
X1NPVVJDRQ0KKyNlbmRpZg0KKw0KICNpbmNsdWRlIDxzeXMvc3RhdC5oPg0KIA0KICNpbmNsdWRl
IDxjdHlwZS5oPg0KQEAgLTQxLDQ4ICs0NSw0NyBAQA0KICNpbmNsdWRlIDxsaW1pdHMuaD4NCiAj
aW5jbHVkZSA8ZmNudGwuaD4NCiAjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3lzL21v
dW50Lmg+DQogDQotI2luY2x1ZGUgPG9zdi9wcmV4Lmg+DQotI2luY2x1ZGUgPG9zdi9kZXZpY2Uu
aD4NCi0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+DQotI2luY2x1ZGUgPG9zdi9tb3VudC5oPg0KLSNp
bmNsdWRlIDxvc3YvZGVudHJ5Lmg+DQorI2luY2x1ZGUgPGRpcmVudC5oPg0KKyNpbmNsdWRlIDx2
ZnNjb3JlL3ByZXguaD4NCisjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPg0KKyNpbmNsdWRlIDx2
ZnNjb3JlL21vdW50Lmg+DQorI2luY2x1ZGUgPHZmc2NvcmUvZGVudHJ5Lmg+DQorI2luY2x1ZGUg
PHZmc2NvcmUvZmlsZS5oPg0KIA0KLSNpbmNsdWRlICJkZXZmcy5oIg0KKyNpbmNsdWRlIDx2ZnNj
b3JlL2ZzLmg+DQogDQotI2lmZGVmIERFQlVHX0RFVkZTDQotI2RlZmluZSBEUFJJTlRGKGEpCWRw
cmludGYgYQ0KLSNlbHNlDQotI2RlZmluZSBEUFJJTlRGKGEpCWRvIHt9IHdoaWxlICgwKQ0KLSNl
bmRpZg0KKyNpbmNsdWRlIDx1ay9jdG9ycy5oPg0KIA0KLSNkZWZpbmUgQVNTRVJUKGUpCWFzc2Vy
dChlKQ0KKyNpbmNsdWRlICJkZXZmcy5oIg0KKyNpbmNsdWRlIDxkZXZmcy9kZXZpY2UuaD4NCiAN
CiBzdGF0aWMgdWludDY0X3QgaW5vZGVfY291bnQgPSAxOyAvKiBpbm9kZSAwIGlzIHJlc2VydmVk
IHRvIHJvb3QgKi8NCiANCiBzdGF0aWMgaW50DQotZGV2ZnNfb3BlbihzdHJ1Y3QgZmlsZSAqZnAp
DQorZGV2ZnNfb3BlbihzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkNCiB7DQogCXN0cnVjdCB2bm9k
ZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRfdm5vZGU7DQogCWNoYXIgKnBhdGggPSBmcC0+Zl9kZW50
cnktPmRfcGF0aDsNCiAJc3RydWN0IGRldmljZSAqZGV2Ow0KIAlpbnQgZXJyb3I7DQogDQotCURQ
UklOVEYoKCJkZXZmc19vcGVuOiBwYXRoPSVzXG4iLCBwYXRoKSk7DQorCXVrX3ByX2RlYnVnKCJk
ZXZmc19vcGVuOiBwYXRoPSVzXG4iLCBwYXRoKTsNCiANCiAJaWYgKCFzdHJjbXAocGF0aCwgIi8i
KSkJLyogcm9vdCA/ICovDQogCQlyZXR1cm4gMDsNCiANCiAJaWYgKHZwLT52X2ZsYWdzICYgVlBS
T1RERVYpIHsNCi0JCURQUklOVEYoKCJkZXZmc19vcGVuOiBmYWlsZWQgdG8gb3BlbiBwcm90ZWN0
ZWQgZGV2aWNlLlxuIikpOw0KKwkJdWtfcHJfZGVidWcoImRldmZzX29wZW46IGZhaWxlZCB0byBv
cGVuIHByb3RlY3RlZCBkZXZpY2UuXG4iKTsNCiAJCXJldHVybiBFUEVSTTsNCiAJfQ0KIAlpZiAo
KnBhdGggPT0gJy8nKQ0KIAkJcGF0aCsrOw0KIAllcnJvciA9IGRldmljZV9vcGVuKHBhdGgsIGZw
LT5mX2ZsYWdzICYgRE9fUldNQVNLLCAmZGV2KTsNCiAJaWYgKGVycm9yKSB7DQotCQlEUFJJTlRG
KCgiZGV2ZnNfb3BlbjogY2FuIG5vdCBvcGVuIGRldmljZSA9ICVzIGVycm9yPSVkXG4iLA0KLQkJ
CSBwYXRoLCBlcnJvcikpOw0KKwkJdWtfcHJfZGVidWcoImRldmZzX29wZW46IGNhbiBub3Qgb3Bl
biBkZXZpY2UgPSAlcyBlcnJvcj0lZFxuIiwNCisJCQkgcGF0aCwgZXJyb3IpOw0KIAkJcmV0dXJu
IGVycm9yOw0KIAl9DQogCXZwLT52X2RhdGEgPSAodm9pZCAqKWRldjsJLyogU3RvcmUgcHJpdmF0
ZSBkYXRhICovDQpAQCAtOTAsMzYgKzkzLDM2IEBAIGRldmZzX29wZW4oc3RydWN0IGZpbGUgKmZw
KQ0KIH0NCiANCiBzdGF0aWMgaW50DQotZGV2ZnNfY2xvc2Uoc3RydWN0IHZub2RlICp2cCwgc3Ry
dWN0IGZpbGUgKmZwKQ0KK2RldmZzX2Nsb3NlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwKQ0KIHsNCiANCi0JRFBSSU5URigoImRldmZzX2Nsb3NlOiBmcD0leFxuIiwg
ZnApKTsNCisJdWtfcHJfZGVidWcoImRldmZzX2Nsb3NlOiBmZD0lZFxuIiwgZnAtPmZkKTsNCiAN
CiAJaWYgKCFzdHJjbXAoZnAtPmZfZGVudHJ5LT5kX3BhdGgsICIvIikpCS8qIHJvb3QgPyAqLw0K
IAkJcmV0dXJuIDA7DQogDQotCXJldHVybiBkZXZpY2VfY2xvc2UoKGRldmljZSopdnAtPnZfZGF0
YSk7DQorCXJldHVybiBkZXZpY2VfY2xvc2UoKHN0cnVjdCBkZXZpY2UqKXZwLT52X2RhdGEpOw0K
IH0NCiANCiBzdGF0aWMgaW50DQotZGV2ZnNfcmVhZChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3Qg
ZmlsZSAqZnAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpDQorZGV2ZnNfcmVhZChzdHJ1
Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFncykNCiB7DQotCXJldHVybiBkZXZpY2VfcmVhZCgoZGV2aWNlKil2
cC0+dl9kYXRhLCB1aW8sIGlvZmxhZ3MpOw0KKwlyZXR1cm4gZGV2aWNlX3JlYWQoKHN0cnVjdCBk
ZXZpY2UqKXZwLT52X2RhdGEsIHVpbywgaW9mbGFncyk7DQogfQ0KIA0KIHN0YXRpYyBpbnQNCiBk
ZXZmc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdz
KQ0KIHsNCi0JcmV0dXJuIGRldmljZV93cml0ZSgoZGV2aWNlKil2cC0+dl9kYXRhLCB1aW8sIGlv
ZmxhZ3MpOw0KKwlyZXR1cm4gZGV2aWNlX3dyaXRlKChzdHJ1Y3QgZGV2aWNlKil2cC0+dl9kYXRh
LCB1aW8sIGlvZmxhZ3MpOw0KIH0NCiANCiBzdGF0aWMgaW50DQotZGV2ZnNfaW9jdGwoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCB1X2xvbmcgY21kLCB2b2lkICphcmcpDQorZGV2
ZnNfaW9jdGwoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVz
ZWQsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICphcmcpDQogew0KIAlpbnQgZXJyb3I7DQogDQot
CWVycm9yID0gZGV2aWNlX2lvY3RsKChkZXZpY2UqKXZwLT52X2RhdGEsIGNtZCwgYXJnKTsNCi0J
RFBSSU5URigoImRldmZzX2lvY3RsOiBjbWQ9JXhcbiIsIGNtZCkpOw0KKwllcnJvciA9IGRldmlj
ZV9pb2N0bCgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0YSwgY21kLCBhcmcpOw0KKwl1a19wcl9k
ZWJ1ZygiZGV2ZnNfaW9jdGw6IGNtZD0lbHVcbiIsIGNtZCk7DQogCXJldHVybiBlcnJvcjsNCiB9
DQogDQpAQCAtMTMwLDcgKzEzMyw3IEBAIGRldmZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwg
Y2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQ0KIAlzdHJ1Y3Qgdm5vZGUgKnZwOw0KIAlp
bnQgZXJyb3IsIGk7DQogDQotCURQUklOVEYoKCJkZXZmc19sb29rdXA6JXNcbiIsIG5hbWUpKTsN
CisJdWtfcHJfZGVidWcoImRldmZzX2xvb2t1cDolc1xuIiwgbmFtZSk7DQogDQogCSp2cHAgPSBO
VUxMOw0KIA0KQEAgLTE0OSw3ICsxNTIsNyBAQCBkZXZmc19sb29rdXAoc3RydWN0IHZub2RlICpk
dnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkNCiAJCQlicmVhazsNCiAJCWkrKzsN
CiAJfQ0KLQlpZiAodmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsNCisJ
aWYgKHZmc2NvcmVfdmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkpIHsNCiAJ
CS8qIGZvdW5kIGluIGNhY2hlICovDQogCQkqdnBwID0gdnA7DQogCQlyZXR1cm4gMDsNCkBAIC0x
NTcsNiArMTYwLDEwIEBAIGRldmZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFt
ZSwgc3RydWN0IHZub2RlICoqdnBwKQ0KIAlpZiAoIXZwKQ0KIAkJcmV0dXJuIEVOT01FTTsNCiAJ
dnAtPnZfdHlwZSA9IChpbmZvLmZsYWdzICYgRF9DSFIpID8gVkNIUiA6IFZCTEs7DQorCS8qIHZm
c2NvcmVfdmdldCBkb2VzIG5vdCBpbml0aWFsaXplIHZfZmxhZ3MgYW5kIHRoaXMgbWF5IGNhdXNl
DQorCSAqIGRldmZzX29wZW4gdG8gZmFpbCBhdCB0aGUgdnAtPnZfZmxhZ3MgJiBWUFJPVERFViBj
aGVjaw0KKwkgKi8NCisJdnAtPnZfZmxhZ3MgPSAwOw0KIAlpZiAoaW5mby5mbGFncyAmIERfVFRZ
KQ0KIAkJdnAtPnZfZmxhZ3MgfD0gVklTVFRZOw0KIA0KQEAgLTE3MSwxMiArMTc4LDEyIEBAIGRl
dmZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqbmFtZSwgc3RydWN0IHZub2RlICoq
dnBwKQ0KICAqIEB2cDogdm5vZGUgb2YgdGhlIGRpcmVjdG9yeS4NCiAgKi8NCiBzdGF0aWMgaW50
DQotZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVj
dCBkaXJlbnQgKmRpcikNCitkZXZmc19yZWFkZGlyKHN0cnVjdCB2bm9kZSAqdnAgX191bnVzZWQs
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpDQogew0KIAlzdHJ1
Y3QgZGV2aW5mbyBpbmZvOw0KIAlpbnQgZXJyb3IsIGk7DQogDQotCURQUklOVEYoKCJkZXZmc19y
ZWFkZGlyIG9mZnNldD0lZFxuIiwgZnAtPmZfb2Zmc2V0KSk7DQorCXVrX3ByX2RlYnVnKCJkZXZm
c19yZWFkZGlyIG9mZnNldD0lbGlcbiIsIGZwLT5mX29mZnNldCk7DQogDQogCWkgPSAwOw0KIAll
cnJvciA9IDA7DQpAQCAtMTk2LDIzICsyMDMsMTggQEAgZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikNCiAJZGlyLT5kX2Zp
bGVubyA9IGZwLT5mX29mZnNldDsNCiAvLwlkaXItPmRfbmFtbGVuID0gc3RybGVuKGRpci0+ZF9u
YW1lKTsNCiANCi0JRFBSSU5URigoImRldmZzX3JlYWRkaXI6ICVzXG4iLCBkaXItPmRfbmFtZSkp
Ow0KKwl1a19wcl9kZWJ1ZygiZGV2ZnNfcmVhZGRpcjogJXNcbiIsIGRpci0+ZF9uYW1lKTsNCiAJ
ZnAtPmZfb2Zmc2V0Kys7DQogCXJldHVybiAwOw0KIH0NCiANCiBzdGF0aWMgaW50DQotZGV2ZnNf
dW5tb3VudChzdHJ1Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MpDQorZGV2ZnNfdW5tb3VudChzdHJ1
Y3QgbW91bnQgKm1wLCBpbnQgZmxhZ3MgX191bnVzZWQpDQogew0KLQlyZWxlYXNlX21wX2RlbnRy
aWVzKG1wKTsNCisJdmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsNCiAJcmV0dXJuIDA7
DQogfQ0KIA0KLWludA0KLWRldmZzX2luaXQodm9pZCkNCi17DQotCXJldHVybiAwOw0KLX0NCiAN
CiBzdGF0aWMgaW50DQogZGV2ZnNfZ2V0YXR0cihzdHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3Qg
dmF0dHIgKmF0dHIpDQpAQCAtMjIyLDI1ICsyMjQsMzcgQEAgZGV2ZnNfZ2V0YXR0cihzdHJ1Y3Qg
dm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpDQogCXJldHVybiAwOw0KIH0NCiANCi0j
ZGVmaW5lIGRldmZzX21vdW50CSgodmZzb3BfbW91bnRfdCl2ZnNfbnVsbG9wKQ0KLSNkZWZpbmUg
ZGV2ZnNfc3luYwkoKHZmc29wX3N5bmNfdCl2ZnNfbnVsbG9wKQ0KLSNkZWZpbmUgZGV2ZnNfdmdl
dAkoKHZmc29wX3ZnZXRfdCl2ZnNfbnVsbG9wKQ0KLSNkZWZpbmUgZGV2ZnNfc3RhdGZzCSgodmZz
b3Bfc3RhdGZzX3QpdmZzX251bGxvcCkNCitpbnQNCit2b3BfZWludmFsKHZvaWQpDQorew0KKwly
ZXR1cm4gRUlOVkFMOw0KK30NCisNCitpbnQNCit2b3BfZXBlcm0odm9pZCkNCit7DQorCXJldHVy
biBFUEVSTTsNCit9DQorDQorI2RlZmluZSBkZXZmc19tb3VudAkoKHZmc29wX21vdW50X3QpdmZz
Y29yZV9udWxsb3ApDQorI2RlZmluZSBkZXZmc19zeW5jCSgodmZzb3Bfc3luY190KXZmc2NvcmVf
bnVsbG9wKQ0KKyNkZWZpbmUgZGV2ZnNfdmdldAkoKHZmc29wX3ZnZXRfdCl2ZnNjb3JlX251bGxv
cCkNCisjZGVmaW5lIGRldmZzX3N0YXRmcwkoKHZmc29wX3N0YXRmc190KXZmc2NvcmVfbnVsbG9w
KQ0KIA0KLSNkZWZpbmUgZGV2ZnNfc2VlawkoKHZub3Bfc2Vla190KXZvcF9udWxsb3ApDQotI2Rl
ZmluZSBkZXZmc19mc3luYwkoKHZub3BfZnN5bmNfdCl2b3BfbnVsbG9wKQ0KKyNkZWZpbmUgZGV2
ZnNfc2VlawkoKHZub3Bfc2Vla190KXZmc2NvcmVfdm9wX251bGxvcCkNCisjZGVmaW5lIGRldmZz
X2ZzeW5jCSgodm5vcF9mc3luY190KXZmc2NvcmVfdm9wX251bGxvcCkNCiAjZGVmaW5lIGRldmZz
X2NyZWF0ZQkoKHZub3BfY3JlYXRlX3Qpdm9wX2VpbnZhbCkNCiAjZGVmaW5lIGRldmZzX3JlbW92
ZQkoKHZub3BfcmVtb3ZlX3Qpdm9wX2VpbnZhbCkNCiAjZGVmaW5lIGRldmZzX3JlbmFtZQkoKHZu
b3BfcmVuYW1lX3Qpdm9wX2VpbnZhbCkNCiAjZGVmaW5lIGRldmZzX21rZGlyCSgodm5vcF9ta2Rp
cl90KXZvcF9laW52YWwpDQogI2RlZmluZSBkZXZmc19ybWRpcgkoKHZub3Bfcm1kaXJfdCl2b3Bf
ZWludmFsKQ0KICNkZWZpbmUgZGV2ZnNfc2V0YXR0cgkoKHZub3Bfc2V0YXR0cl90KXZvcF9lcGVy
bSkNCi0jZGVmaW5lIGRldmZzX2luYWN0aXZlCSgodm5vcF9pbmFjdGl2ZV90KXZvcF9udWxsb3Ap
DQotI2RlZmluZSBkZXZmc190cnVuY2F0ZQkoKHZub3BfdHJ1bmNhdGVfdCl2b3BfbnVsbG9wKQ0K
KyNkZWZpbmUgZGV2ZnNfaW5hY3RpdmUJKCh2bm9wX2luYWN0aXZlX3QpdmZzY29yZV92b3BfbnVs
bG9wKQ0KKyNkZWZpbmUgZGV2ZnNfdHJ1bmNhdGUJKCh2bm9wX3RydW5jYXRlX3QpdmZzY29yZV92
b3BfbnVsbG9wKQ0KICNkZWZpbmUgZGV2ZnNfbGluawkoKHZub3BfbGlua190KXZvcF9lcGVybSkN
Ci0jZGVmaW5lIGRldmZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3Qpdm9wX251bGxvcCkN
Ci0jZGVmaW5lIGRldmZzX3JlYWRsaW5rCSgodm5vcF9yZWFkbGlua190KXZvcF9udWxsb3ApDQot
I2RlZmluZSBkZXZmc19zeW1saW5rCSgodm5vcF9zeW1saW5rX3Qpdm9wX251bGxvcCkNCisjZGVm
aW5lIGRldmZzX2ZhbGxvY2F0ZSAoKHZub3BfZmFsbG9jYXRlX3QpdmZzY29yZV92b3BfbnVsbG9w
KQ0KKyNkZWZpbmUgZGV2ZnNfcmVhZGxpbmsJKCh2bm9wX3JlYWRsaW5rX3QpdmZzY29yZV92b3Bf
bnVsbG9wKQ0KKyNkZWZpbmUgZGV2ZnNfc3ltbGluawkoKHZub3Bfc3ltbGlua190KXZmc2NvcmVf
dm9wX251bGxvcCkNCiANCiAvKg0KICAqIHZub2RlIG9wZXJhdGlvbnMNCkBAIC0yNjUsNyArMjc5
LDcgQEAgc3RydWN0IHZub3BzIGRldmZzX3Zub3BzID0gew0KIAlkZXZmc19pbmFjdGl2ZSwJCS8q
IGluYWN0aXZlICovDQogCWRldmZzX3RydW5jYXRlLAkJLyogdHJ1bmNhdGUgKi8NCiAJZGV2ZnNf
bGluaywJCS8qIGxpbmsgKi8NCi0JKHZub3BfY2FjaGVfdCkgbnVsbHB0ciwgLyogYXJjICovDQor
CSh2bm9wX2NhY2hlX3QpIE5VTEwsIC8qIGFyYyAqLw0KIAlkZXZmc19mYWxsb2NhdGUsCS8qIGZh
bGxvY2F0ZSAqLw0KIAlkZXZmc19yZWFkbGluaywJCS8qIHJlYWQgbGluayAqLw0KIAlkZXZmc19z
eW1saW5rLAkJLyogc3ltYm9saWMgbGluayAqLw0KQEAgLTI4MiwzICsyOTYsMzYgQEAgc3RydWN0
IHZmc29wcyBkZXZmc192ZnNvcHMgPSB7DQogCWRldmZzX3N0YXRmcywJCS8qIHN0YXRmcyAqLw0K
IAkmZGV2ZnNfdm5vcHMsCQkvKiB2bm9wcyAqLw0KIH07DQorDQorc3RhdGljIHN0cnVjdCB2ZnNj
b3JlX2ZzX3R5cGUgZnNfZGV2ZnMgPSB7DQorICAgIC52c19uYW1lID0gImRldmZzIiwNCisgICAg
LnZzX2luaXQgPSBOVUxMLA0KKyAgICAudnNfb3AgPSAmZGV2ZnNfdmZzb3BzLA0KK307DQorDQor
VUtfRlNfUkVHSVNURVIoZnNfZGV2ZnMpOw0KKw0KK19fY29uc3RydWN0b3JfcHJpbygxMDEpIHN0
YXRpYyB2b2lkIGRldmZzX2luaXQodm9pZCkNCit7DQorI2lmZGVmIENPTkZJR19MSUJERVZGU19V
U0VfUkFNRlMNCisJaW50IHJldDsNCisNCisJcmV0ID0gbW91bnQoIiIsICIvIiwgInJhbWZzIiwg
MCwgTlVMTCk7DQorCWlmIChyZXQgIT0gMCkgew0KKwkJdWtfcHJfZGVidWcoIkZhaWxlZCB0byBt
b3VudCAvIGluICVzXG4iLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm47DQorCX0NCisNCisJcmV0ID0g
IG1rZGlyKCIvZGV2IiwgU19JUldYVSk7DQorCWlmIChyZXQgIT0gMCkgew0KKwkJdWtfcHJfZGVi
dWcoIkZhaWxlZCB0byBta2RpciAvZGV2IGluICVzXG4iLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm47
DQorCX0NCisNCisJcmV0ID0gbW91bnQoIiIsICIvZGV2IiwgImRldmZzIiwgMCwgTlVMTCk7DQor
CWlmIChyZXQgIT0gMCkgew0KKwkJdWtfcHJfZGVidWcoIkZhaWxlZCB0byBtb3VudCAvZGV2IGFz
IGRldmZzIGluICVzXG4iLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm47DQorCX0NCisjZW5kaWYNCit9
DQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL2RldmljZS5jIGIvbGliL2RldmZzL2RldmljZS5jDQpp
bmRleCBhMGNkOTc2OC4uNjkzYTVmOWQgMTAwNjQ0DQotLS0gYS9saWIvZGV2ZnMvZGV2aWNlLmMN
CisrKyBiL2xpYi9kZXZmcy9kZXZpY2UuYw0KQEAgLTQ1LDIxICs0NSwxNiBAQA0KICNpbmNsdWRl
IDxzdGRpby5oPg0KICNpbmNsdWRlIDx1bmlzdGQuaD4NCiAjaW5jbHVkZSA8ZXJybm8uaD4NCi0j
aW5jbHVkZSA8YXNzZXJ0Lmg+DQorI2luY2x1ZGUgPHVrL2Fzc2VydC5oPg0KICNpbmNsdWRlIDxz
dHJpbmcuaD4NCiANCi0jaW5jbHVkZSA8b3N2L3ByZXguaD4NCi0jaW5jbHVkZSA8b3N2L211dGV4
Lmg+DQotI2luY2x1ZGUgPG9zdi9kZXZpY2UuaD4NCi0jaW5jbHVkZSA8b3N2L2RlYnVnLmg+DQot
I2luY2x1ZGUgPG9zdi9idWYuaD4NCisjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+DQorI2luY2x1
ZGUgPHVrL2Vzc2VudGlhbHMuaD4NCisjaW5jbHVkZSA8dWsvbXV0ZXguaD4NCiANCi0jaW5jbHVk
ZSA8Z2VvbS9nZW9tX2Rpc2suaD4NCi0NCi1tdXRleCBzY2hlZF9tdXRleDsNCi0jZGVmaW5lIHNj
aGVkX2xvY2soKQlzY2hlZF9tdXRleC5sb2NrKCkNCi0jZGVmaW5lIHNjaGVkX3VubG9jaygpCXNj
aGVkX211dGV4LnVubG9jaygpDQorI2luY2x1ZGUgPGRldmZzL2RldmljZS5oPg0KIA0KK3N0YXRp
YyBzdHJ1Y3QgdWtfbXV0ZXggZGV2ZnNfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKGRldmZz
X2xvY2spOw0KIA0KIC8qIGxpc3QgaGVhZCBvZiB0aGUgZGV2aWNlcyAqLw0KIHN0YXRpYyBzdHJ1
Y3QgZGV2aWNlICpkZXZpY2VfbGlzdCA9IE5VTEw7DQpAQCAtOTIsODUgKzg3LDMxIEBAIHN0cnVj
dCBwYXJ0aXRpb25fdGFibGVfZW50cnkgew0KIAl1aW50MzJfdCB0b3RhbF9zZWN0b3JzOw0KIH0g
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7DQogDQotLyoNCi0gKiByZWFkX3BhcnRpdGlvbl90YWJs
ZSAtIGdpdmVuIGEgZGV2aWNlIEBkZXYsIGNyZWF0ZSBvbmUgc3ViZGV2aWNlIHBlciBwYXJ0aXRp
b24NCi0gKiBmb3VuZCBpbiB0aGF0IGRldmljZS4NCi0gKg0KLSAqIFRoaXMgZnVuY3Rpb24gd2ls
bCByZWFkIGEgcGFydGl0aW9uIHRhYmxlIGZyb20gdGhlIGNhbm9uaWNhbCBsb2NhdGlvbiBvZiB0
aGUNCi0gKiBkZXZpY2UgcG9pbnRlZCBieSBAZGV2LiBGb3IgZWFjaCBwYXJ0aXRpb24gZm91bmQs
IGEgbmV3IGRldmljZSB3aWxsIGJlDQotICogY3JlYXRlZC4gVGhlIG5ld2x5IGNyZWF0ZWQgZGV2
aWNlIHdpbGwgaGF2ZSBtb3N0IG9mIGl0cyBkYXRhIGNvcGllZCBmcm9tDQotICogQGRldiwgZXhj
ZXB0IGZvciBpdHMgbmFtZSwgb2Zmc2V0IGFuZCBzaXplLg0KLSAqLw0KLXZvaWQgcmVhZF9wYXJ0
aXRpb25fdGFibGUoc3RydWN0IGRldmljZSAqZGV2KQ0KLXsNCi0Jc3RydWN0IGJ1ZiAqYnA7DQot
CXVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0KLQlpbnQgaW5kZXg7DQotDQotCWlmIChicmVhZChkZXYs
IDAsICZicCkgIT0gMCkgew0KLQkJZGVidWdmKCJyZWFkX3BhcnRpdGlvbl90YWJsZSBmYWlsZWQg
Zm9yICVzXG4iLCBkZXYtPm5hbWUpOw0KLQkJcmV0dXJuOw0KLQl9DQotDQotCXNjaGVkX2xvY2so
KTsNCi0JLy8gQSByZWFsIHBhcnRpdGlvbiB0YWJsZSAoTUJSKSBlbmRzIGluIHRoZSB0d28gYnl0
ZXMgMHg1NSwgMHhBQSAoc2VlDQotCS8vIGFyY2gveDY0L2Jvb3QxNi5TIG9uIHdoZXJlIHdlIHB1
dCB0aG9zZSBvbiB0aGUgT1N2IGltYWdlKS4gSWYgd2UNCi0JLy8gZG9uJ3QgZmluZCB0aG9zZSwg
dGhpcyBpcyBhbiB1bnBhcnRpdGlvbmVkIGRpc2suDQotCWlmICgoKHVuc2lnbmVkIGNoYXIqKWJw
LT5iX2RhdGEpWzUxMF0gPT0gMHg1NSAmJg0KLQkgICAgKCh1bnNpZ25lZCBjaGFyKilicC0+Yl9k
YXRhKVs1MTFdID09IDB4QUEpDQotCWZvciAob2Zmc2V0ID0gMHgxYmUsIGluZGV4ID0gMDsgb2Zm
c2V0IDwgMHgxZmU7IG9mZnNldCArPSAweDEwLCBpbmRleCsrKSB7DQotCQljaGFyIGRldl9uYW1l
W01BWERFVk5BTUVdOw0KLQkJc3RydWN0IGRldmljZSAqbmV3X2RldjsNCi0NCi0JCWF1dG8qIGVu
dHJ5ID0gc3RhdGljX2Nhc3Q8c3RydWN0IHBhcnRpdGlvbl90YWJsZV9lbnRyeSo+KGJwLT5iX2Rh
dGEgKyBvZmZzZXQpOw0KLQ0KLQkJaWYgKGVudHJ5LT5zeXN0ZW1faWQgPT0gMCkgew0KLQkJCWNv
bnRpbnVlOw0KLQkJfQ0KLQ0KLQkJaWYgKGVudHJ5LT5zdGFydGluZ19zZWN0b3IgPT0gMCkgew0K
LQkJCWNvbnRpbnVlOw0KLQkJfQ0KLQ0KLQkJc25wcmludGYoZGV2X25hbWUsIE1BWERFVk5BTUUs
ICIlcy4lZCIsIGRldi0+bmFtZSwgaW5kZXgpOw0KLQkJbmV3X2RldiA9IGRldmljZV9jcmVhdGUo
ZGV2LT5kcml2ZXIsIGRldl9uYW1lLCBkZXYtPmZsYWdzKTsNCi0JCWZyZWUobmV3X2Rldi0+cHJp
dmF0ZV9kYXRhKTsNCi0NCi0JCW5ld19kZXYtPm9mZnNldCA9IChvZmZfdCllbnRyeS0+cmVsYV9z
ZWN0b3IgPDwgOTsNCi0JCW5ld19kZXYtPnNpemUgPSAob2ZmX3QpZW50cnktPnRvdGFsX3NlY3Rv
cnMgPDwgOTsNCi0JCW5ld19kZXYtPm1heF9pb19zaXplID0gZGV2LT5tYXhfaW9fc2l6ZTsNCi0J
CW5ld19kZXYtPnByaXZhdGVfZGF0YSA9IGRldi0+cHJpdmF0ZV9kYXRhOw0KLQkJZGV2aWNlX3Nl
dF9zb2Z0YyhuZXdfZGV2LCBkZXZpY2VfZ2V0X3NvZnRjKGRldikpOw0KLQl9DQotDQotCXNjaGVk
X3VubG9jaygpOw0KLQlicmVsc2UoYnApOw0KLX0NCiANCiB2b2lkIGRldmljZV9yZWdpc3Rlcihz
dHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncykNCiB7DQogCXNp
emVfdCBsZW47DQogCXZvaWQgKnByaXYgPSBOVUxMOw0KIA0KLQlhc3NlcnQoZGV2LT5kcml2ZXIg
IT0gTlVMTCk7DQorCVVLX0FTU0VSVChkZXYtPmRyaXZlciAhPSBOVUxMKTsNCiANCiAJLyogQ2hl
Y2sgdGhlIGxlbmd0aCBvZiBuYW1lLiAqLw0KIAlsZW4gPSBzdHJubGVuKG5hbWUsIE1BWERFVk5B
TUUpOw0KIAlpZiAobGVuID09IDAgfHwgbGVuID49IE1BWERFVk5BTUUpDQogCQlyZXR1cm47DQog
DQotCXNjaGVkX2xvY2soKTsNCisJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9jayk7DQogDQogCS8q
IENoZWNrIGlmIHNwZWNpZmllZCBuYW1lIGlzIGFscmVhZHkgdXNlZC4gKi8NCiAJaWYgKGRldmlj
ZV9sb29rdXAobmFtZSkgIT0gTlVMTCkNCi0JCXN5c19wYW5pYygiZHVwbGljYXRlIGRldmljZSIp
Ow0KKwkJVUtfQ1JBU0goImR1cGxpY2F0ZSBkZXZpY2UiKTsNCiANCiAJLyoNCiAJICogQWxsb2Nh
dGUgYSBkZXZpY2UgYW5kIGRldmljZSBwcml2YXRlIGRhdGEuDQogCSAqLw0KIAlpZiAoZGV2LT5k
cml2ZXItPmRldnN6ICE9IDApIHsNCiAJCWlmICgocHJpdiA9IG1hbGxvYyhkZXYtPmRyaXZlci0+
ZGV2c3opKSA9PSBOVUxMKQ0KLQkJCXN5c19wYW5pYygiZGV2c3oiKTsNCisJCQlVS19DUkFTSCgi
ZGV2c3oiKTsNCiAJCW1lbXNldChwcml2LCAwLCBkZXYtPmRyaXZlci0+ZGV2c3opOw0KIAl9DQog
DQpAQCAtMTg0LDcgKzEyNSw3IEBAIHZvaWQgZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2Ug
KmRldiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKQ0KIAlkZXYtPm1heF9pb19zaXplID0g
VUlOVF9NQVg7DQogCWRldmljZV9saXN0ID0gZGV2Ow0KIA0KLQlzY2hlZF91bmxvY2soKTsNCisJ
dWtfbXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsNCiB9DQogDQogDQpAQCAtMjAxLDcgKzE0Miw3
IEBAIGRldmljZV9jcmVhdGUoc3RydWN0IGRyaXZlciAqZHJ2LCBjb25zdCBjaGFyICpuYW1lLCBp
bnQgZmxhZ3MpDQogCXN0cnVjdCBkZXZpY2UgKmRldjsNCiAJc2l6ZV90IGxlbjsNCiANCi0JYXNz
ZXJ0KGRydiAhPSBOVUxMKTsNCisJVUtfQVNTRVJUKGRydiAhPSBOVUxMKTsNCiANCiAJLyogQ2hl
Y2sgdGhlIGxlbmd0aCBvZiBuYW1lLiAqLw0KIAlsZW4gPSBzdHJubGVuKG5hbWUsIE1BWERFVk5B
TUUpOw0KQEAgLTIxMSwyNyArMTUyLDE0IEBAIGRldmljZV9jcmVhdGUoc3RydWN0IGRyaXZlciAq
ZHJ2LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MpDQogCS8qDQogCSAqIEFsbG9jYXRlIGEg
ZGV2aWNlIHN0cnVjdHVyZS4NCiAJICovDQotCWlmICgoZGV2ID0gbmV3IGRldmljZSkgPT0gTlVM
TCkNCi0JCXN5c19wYW5pYygiZGV2aWNlX2NyZWF0ZSIpOw0KKwlpZiAoKGRldiA9IG1hbGxvYyhz
aXplb2Yoc3RydWN0IGRldmljZSkpKSA9PSBOVUxMKQ0KKwkJVUtfQ1JBU0goImRldmljZV9jcmVh
dGUiKTsNCiANCi0gICAgZGV2LT5kcml2ZXIgPSBkcnY7DQotICAgIGRldmljZV9yZWdpc3Rlcihk
ZXYsIG5hbWUsIGZsYWdzKTsNCisJZGV2LT5kcml2ZXIgPSBkcnY7DQorCWRldmljZV9yZWdpc3Rl
cihkZXYsIG5hbWUsIGZsYWdzKTsNCiAJcmV0dXJuIGRldjsNCiB9DQogDQotI2lmIDANCi0vKg0K
LSAqIFJldHVybiBkZXZpY2UncyBwcml2YXRlIGRhdGEuDQotICovDQotc3RhdGljIHZvaWQgKg0K
LWRldmljZV9wcml2YXRlKHN0cnVjdCBkZXZpY2UgKmRldikNCi17DQotCWFzc2VydChkZXYgIT0g
TlVMTCk7DQotCWFzc2VydChkZXYtPnByaXZhdGVfZGF0YSAhPSBOVUxMKTsNCi0NCi0JcmV0dXJu
IGRldi0+cHJpdmF0ZV9kYXRhOw0KLX0NCi0jZW5kaWYNCiANCiAvKg0KICAqIFJldHVybiB0cnVl
IGlmIHNwZWNpZmllZCBkZXZpY2UgaXMgdmFsaWQuDQpAQCAtMjU3LDE2ICsxODUsMzMgQEAgZGV2
aWNlX3ZhbGlkKHN0cnVjdCBkZXZpY2UgKmRldikNCiAgKiBJbmNyZW1lbnQgdGhlIHJlZmVyZW5j
ZSBjb3VudCBvbiBhbiBhY3RpdmUgZGV2aWNlLg0KICAqLw0KIHN0YXRpYyBpbnQNCi1kZXZpY2Vf
cmVmZXJlbmNlKHN0cnVjdCBkZXZpY2UgKmRldikNCitkZXZpY2VfcmVmZXJlbmNlX2xvY2tlZChz
dHJ1Y3QgZGV2aWNlICpkZXYpDQogew0KKwlVS19BU1NFUlQodWtfbXV0ZXhfaXNfbG9ja2VkKCZk
ZXZmc19sb2NrKSk7DQogDQotCXNjaGVkX2xvY2soKTsNCiAJaWYgKCFkZXZpY2VfdmFsaWQoZGV2
KSkgew0KLQkJc2NoZWRfdW5sb2NrKCk7DQorCQl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2sp
Ow0KIAkJcmV0dXJuIEVOT0RFVjsNCiAJfQ0KIAlkZXYtPnJlZmNudCsrOw0KLQlzY2hlZF91bmxv
Y2soKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qDQorICogSW5jcmVtZW50IHRoZSByZWZlcmVu
Y2UgY291bnQgb24gYW4gYWN0aXZlIGRldmljZS4NCisgKi8NCitzdGF0aWMgaW50DQorZGV2aWNl
X3JlZmVyZW5jZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKwlpbnQgcmV0Ow0KKw0KKwl1a19t
dXRleF9sb2NrKCZkZXZmc19sb2NrKTsNCisJcmV0ID0gZGV2aWNlX3JlZmVyZW5jZV9sb2NrZWQo
ZGV2KTsNCisJaWYgKCFyZXQpIHsNCisJCXVrX211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7DQor
CQlyZXR1cm4gcmV0Ow0KKwl9DQorCXVrX211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7DQogCXJl
dHVybiAwOw0KIH0NCiANCkBAIC0yNzksOSArMjI0LDEwIEBAIGRldmljZV9yZWxlYXNlKHN0cnVj
dCBkZXZpY2UgKmRldikNCiB7DQogCXN0cnVjdCBkZXZpY2UgKip0bXA7DQogDQotCXNjaGVkX2xv
Y2soKTsNCisJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9jayk7DQorDQogCWlmICgtLWRldi0+cmVm
Y250ID4gMCkgew0KLQkJc2NoZWRfdW5sb2NrKCk7DQorCQl1a19tdXRleF91bmxvY2soJmRldmZz
X2xvY2spOw0KIAkJcmV0dXJuOw0KIAl9DQogCS8qDQpAQCAtMjkzLDIyICsyMzksMzYgQEAgZGV2
aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQ0KIAkJCWJyZWFrOw0KIAkJfQ0KIAl9DQot
CWRlbGV0ZSBkZXY7DQotCXNjaGVkX3VubG9jaygpOw0KKwlmcmVlKGRldik7DQorCXVrX211dGV4
X3VubG9jaygmZGV2ZnNfbG9jayk7DQorfQ0KKw0KK2ludA0KK2RldmljZV9kZXN0cm95X2xvY2tl
ZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKw0KKwlVS19BU1NFUlQodWtfbXV0ZXhfaXNfbG9j
a2VkKCZkZXZmc19sb2NrKSk7DQorCWlmICghZGV2aWNlX3ZhbGlkKGRldikpIHsNCisJCXVrX211
dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7DQorCQlyZXR1cm4gRU5PREVWOw0KKwl9DQorCWRldi0+
YWN0aXZlID0gMDsNCisJZGV2aWNlX3JlbGVhc2UoZGV2KTsNCisJcmV0dXJuIDA7DQogfQ0KIA0K
IGludA0KIGRldmljZV9kZXN0cm95KHN0cnVjdCBkZXZpY2UgKmRldikNCiB7DQogDQotCXNjaGVk
X2xvY2soKTsNCisJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9jayk7DQogCWlmICghZGV2aWNlX3Zh
bGlkKGRldikpIHsNCi0JCXNjaGVkX3VubG9jaygpOw0KKwkJdWtfbXV0ZXhfdW5sb2NrKCZkZXZm
c19sb2NrKTsNCiAJCXJldHVybiBFTk9ERVY7DQogCX0NCiAJZGV2LT5hY3RpdmUgPSAwOw0KKwl1
a19tdXRleF91bmxvY2soJmRldmZzX2xvY2spOw0KIAlkZXZpY2VfcmVsZWFzZShkZXYpOw0KLQlz
Y2hlZF91bmxvY2soKTsNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTMyOSwyMCArMjg5LDIxIEBA
IGRldmljZV9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBtb2RlLCBzdHJ1Y3QgZGV2aWNlICoq
ZGV2cCkNCiAJc3RydWN0IGRldmljZSAqZGV2Ow0KIAlpbnQgZXJyb3I7DQogDQotCXNjaGVkX2xv
Y2soKTsNCisJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9jayk7DQogCWlmICgoZGV2ID0gZGV2aWNl
X2xvb2t1cChuYW1lKSkgPT0gTlVMTCkgew0KLQkJc2NoZWRfdW5sb2NrKCk7DQorCQl1a19tdXRl
eF91bmxvY2soJmRldmZzX2xvY2spOw0KIAkJcmV0dXJuIEVOWElPOw0KIAl9DQotCWVycm9yID0g
ZGV2aWNlX3JlZmVyZW5jZShkZXYpOw0KKw0KKwllcnJvciA9IGRldmljZV9yZWZlcmVuY2VfbG9j
a2VkKGRldik7DQogCWlmIChlcnJvcikgew0KLQkJc2NoZWRfdW5sb2NrKCk7DQorCQl1a19tdXRl
eF91bmxvY2soJmRldmZzX2xvY2spOw0KIAkJcmV0dXJuIGVycm9yOw0KIAl9DQotCXNjaGVkX3Vu
bG9jaygpOw0KKwl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2spOw0KIA0KIAlvcHMgPSBkZXYt
PmRyaXZlci0+ZGV2b3BzOw0KLQlhc3NlcnQob3BzLT5vcGVuICE9IE5VTEwpOw0KKwlVS19BU1NF
UlQob3BzLT5vcGVuICE9IE5VTEwpOw0KIAllcnJvciA9ICgqb3BzLT5vcGVuKShkZXYsIG1vZGUp
Ow0KIAkqZGV2cCA9IGRldjsNCiANCkBAIC0zNjYsNyArMzI3LDcgQEAgZGV2aWNlX2Nsb3NlKHN0
cnVjdCBkZXZpY2UgKmRldikNCiAJCXJldHVybiBlcnJvcjsNCiANCiAJb3BzID0gZGV2LT5kcml2
ZXItPmRldm9wczsNCi0JYXNzZXJ0KG9wcy0+Y2xvc2UgIT0gTlVMTCk7DQorCVVLX0FTU0VSVChv
cHMtPmNsb3NlICE9IE5VTEwpOw0KIAllcnJvciA9ICgqb3BzLT5jbG9zZSkoZGV2KTsNCiANCiAJ
ZGV2aWNlX3JlbGVhc2UoZGV2KTsNCkBAIC0zODMsNyArMzQ0LDcgQEAgZGV2aWNlX3JlYWQoc3Ry
dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKQ0KIAkJcmV0dXJu
IGVycm9yOw0KIA0KIAlvcHMgPSBkZXYtPmRyaXZlci0+ZGV2b3BzOw0KLQlhc3NlcnQob3BzLT5y
ZWFkICE9IE5VTEwpOw0KKwlVS19BU1NFUlQob3BzLT5yZWFkICE9IE5VTEwpOw0KIAllcnJvciA9
ICgqb3BzLT5yZWFkKShkZXYsIHVpbywgaW9mbGFncyk7DQogDQogCWRldmljZV9yZWxlYXNlKGRl
dik7DQpAQCAtNDAwLDcgKzM2MSw3IEBAIGRldmljZV93cml0ZShzdHJ1Y3QgZGV2aWNlICpkZXYs
IHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpDQogCQlyZXR1cm4gZXJyb3I7DQogDQogCW9w
cyA9IGRldi0+ZHJpdmVyLT5kZXZvcHM7DQotCWFzc2VydChvcHMtPndyaXRlICE9IE5VTEwpOw0K
KwlVS19BU1NFUlQob3BzLT53cml0ZSAhPSBOVUxMKTsNCiAJZXJyb3IgPSAoKm9wcy0+d3JpdGUp
KGRldiwgdWlvLCBpb2ZsYWdzKTsNCiANCiAJZGV2aWNlX3JlbGVhc2UoZGV2KTsNCkBAIC00MTUs
NyArMzc2LDcgQEAgZGV2aWNlX3dyaXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAq
dWlvLCBpbnQgaW9mbGFncykNCiAgKiBwb2ludGVkIGJ5IHRoZSBhcmcgdmFsdWUuDQogICovDQog
aW50DQotZGV2aWNlX2lvY3RsKHN0cnVjdCBkZXZpY2UgKmRldiwgdV9sb25nIGNtZCwgdm9pZCAq
YXJnKQ0KK2RldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgY21k
LCB2b2lkICphcmcpDQogew0KIAlzdHJ1Y3QgZGV2b3BzICpvcHM7DQogCWludCBlcnJvcjsNCkBA
IC00MjQsOTIgKzM4NSwyNSBAQCBkZXZpY2VfaW9jdGwoc3RydWN0IGRldmljZSAqZGV2LCB1X2xv
bmcgY21kLCB2b2lkICphcmcpDQogCQlyZXR1cm4gZXJyb3I7DQogDQogCW9wcyA9IGRldi0+ZHJp
dmVyLT5kZXZvcHM7DQotCWFzc2VydChvcHMtPmlvY3RsICE9IE5VTEwpOw0KKwlVS19BU1NFUlQo
b3BzLT5pb2N0bCAhPSBOVUxMKTsNCiAJZXJyb3IgPSAoKm9wcy0+aW9jdGwpKGRldiwgY21kLCBh
cmcpOw0KIA0KIAlkZXZpY2VfcmVsZWFzZShkZXYpOw0KIAlyZXR1cm4gZXJyb3I7DQogfQ0KIA0K
LSNpZiAwDQotLyoNCi0gKiBEZXZpY2UgY29udHJvbCAtIGRldmN0bCBpcyBzaW1pbGFyIHRvIGlv
Y3RsLCBidXQgaXMgaW52b2tlZCBmcm9tDQotICogb3RoZXIgZGV2aWNlIGRyaXZlciByYXRoZXIg
dGhhbiBmcm9tIHVzZXIgYXBwbGljYXRpb24uDQotICovDQotc3RhdGljIGludA0KLWRldmljZV9j
b250cm9sKHN0cnVjdCBkZXZpY2UgKmRldiwgdV9sb25nIGNtZCwgdm9pZCAqYXJnKQ0KLXsNCi0J
c3RydWN0IGRldm9wcyAqb3BzOw0KLQlpbnQgZXJyb3I7DQotDQotCWFzc2VydChkZXYgIT0gTlVM
TCk7DQotDQotCXNjaGVkX2xvY2soKTsNCi0Jb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsNCi0J
YXNzZXJ0KG9wcy0+ZGV2Y3RsICE9IE5VTEwpOw0KLQllcnJvciA9ICgqb3BzLT5kZXZjdGwpKGRl
diwgY21kLCBhcmcpOw0KLQlzY2hlZF91bmxvY2soKTsNCi0JcmV0dXJuIGVycm9yOw0KLX0NCi0N
Ci0vKg0KLSAqIGRldmljZV9icm9hZGNhc3QgLSBicm9hZGNhc3QgZGV2Y3RsIGNvbW1hbmQgdG8g
YWxsIGRldmljZSBvYmplY3RzLg0KLSAqDQotICogSWYgImZvcmNlIiBhcmd1bWVudCBpcyB0cnVl
LCB3ZSB3aWxsIGNvbnRpbnVlIGNvbW1hbmQNCi0gKiBub3RpZmljYXRpb24gZXZlbiBpZiBzb21l
IGRyaXZlciByZXR1cm5zIGFuIGVycm9yLiBJbiB0aGlzDQotICogY2FzZSwgdGhpcyByb3V0aW5l
IHJldHVybnMgRUlPIGVycm9yIGlmIGF0IGxlYXN0IG9uZSBkcml2ZXINCi0gKiByZXR1cm5zIGFu
IGVycm9yLg0KLSAqDQotICogSWYgZm9yY2UgYXJndW1lbnQgaXMgZmFsc2UsIGEga2VybmVsIHN0
b3BzIHRoZSBjb21tYW5kIHByb2Nlc3NpbmcNCi0gKiB3aGVuIGF0IGxlYXN0IG9uZSBkcml2ZXIg
cmV0dXJucyBhbiBlcnJvci4gSW4gdGhpcyBjYXNlLA0KLSAqIGRldmljZV9icm9hZGNhc3Qgd2ls
bCByZXR1cm4gdGhlIGVycm9yIGNvZGUgd2hpY2ggaXMgcmV0dXJuZWQNCi0gKiBieSB0aGUgZHJp
dmVyLg0KLSAqLw0KLXN0YXRpYyBpbnQNCi1kZXZpY2VfYnJvYWRjYXN0KHVfbG9uZyBjbWQsIHZv
aWQgKmFyZywgaW50IGZvcmNlKQ0KLXsNCi0Jc3RydWN0IGRldmljZSAqZGV2Ow0KLQlzdHJ1Y3Qg
ZGV2b3BzICpvcHM7DQotCWludCBlcnJvciwgcmV0dmFsID0gMDsNCi0NCi0Jc2NoZWRfbG9jaygp
Ow0KLQ0KLQlmb3IgKGRldiA9IGRldmljZV9saXN0OyBkZXYgIT0gTlVMTDsgZGV2ID0gZGV2LT5u
ZXh0KSB7DQotCQkvKg0KLQkJICogQ2FsbCBkcml2ZXIncyBkZXZjdGwoKSByb3V0aW5lLg0KLQkJ
ICovDQotCQlvcHMgPSBkZXYtPmRyaXZlci0+ZGV2b3BzOw0KLQkJaWYgKG9wcyA9PSBOVUxMKQ0K
LQkJCWNvbnRpbnVlOw0KLQ0KLQkJYXNzZXJ0KG9wcy0+ZGV2Y3RsICE9IE5VTEwpOw0KLQkJZXJy
b3IgPSAoKm9wcy0+ZGV2Y3RsKShkZXYsIGNtZCwgYXJnKTsNCi0JCWlmIChlcnJvcikgew0KLQkJ
CWlmIChmb3JjZSkNCi0JCQkJcmV0dmFsID0gRUlPOw0KLQkJCWVsc2Ugew0KLQkJCQlyZXR2YWwg
PSBlcnJvcjsNCi0JCQkJYnJlYWs7DQotCQkJfQ0KLQkJfQ0KLQl9DQotCXNjaGVkX3VubG9jaygp
Ow0KLQlyZXR1cm4gcmV0dmFsOw0KLX0NCi0jZW5kaWYNCi0NCiAvKg0KICAqIFJldHVybiBkZXZp
Y2UgaW5mb3JtYXRpb24uDQogICovDQogaW50DQogZGV2aWNlX2luZm8oc3RydWN0IGRldmluZm8g
KmluZm8pDQogew0KLQl1X2xvbmcgdGFyZ2V0ID0gaW5mby0+Y29va2llOw0KLQl1X2xvbmcgaSA9
IDA7DQorCXVuc2lnbmVkIGxvbmcgdGFyZ2V0ID0gaW5mby0+Y29va2llOw0KKwl1bnNpZ25lZCBs
b25nIGkgPSAwOw0KIAlzdHJ1Y3QgZGV2aWNlICpkZXY7DQogCWludCBlcnJvciA9IEVTUkNIOw0K
IA0KLQlzY2hlZF9sb2NrKCk7DQorCXVrX211dGV4X2xvY2soJmRldmZzX2xvY2spOw0KIAlmb3Ig
KGRldiA9IGRldmljZV9saXN0OyBkZXYgIT0gTlVMTDsgZGV2ID0gZGV2LT5uZXh0KSB7DQogCQlp
ZiAoaSsrID09IHRhcmdldCkgew0KIAkJCWluZm8tPmNvb2tpZSA9IGk7DQpAQCAtNTIwLDcgKzQx
NCw3IEBAIGRldmljZV9pbmZvKHN0cnVjdCBkZXZpbmZvICppbmZvKQ0KIAkJCWJyZWFrOw0KIAkJ
fQ0KIAl9DQotCXNjaGVkX3VubG9jaygpOw0KKwl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2sp
Ow0KIAlyZXR1cm4gZXJyb3I7DQogfQ0KIA0KQEAgLTUzNSwzICs0MjksNCBAQCBudWxsb3Aodm9p
ZCkNCiB7DQogCXJldHVybiAwOw0KIH0NCisNCmRpZmYgLS1naXQgYS9saWIvZGV2ZnMvZXhwb3J0
c3ltcy51ayBiL2xpYi9kZXZmcy9leHBvcnRzeW1zLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
aW5kZXggMDAwMDAwMDAuLmU1ZWRkOTA1DQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvZGV2ZnMv
ZXhwb3J0c3ltcy51aw0KQEAgLTAsMCArMSw2IEBADQorZGV2aWNlX2NyZWF0ZQ0KK2RldmljZV9v
cGVuDQorZGV2aWNlX2Nsb3NlDQorZGV2aWNlX3JlYWQNCitkZXZpY2VfaW9jdGwNCitkZXZpY2Vf
aW5mbw0KZGlmZiAtLWdpdCBhL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oIGIvbGli
L2RldmZzL2luY2x1ZGUvZGV2ZnMvZGV2aWNlLmgNCmluZGV4IDE2ZDJlNDcwLi4xODNmNDE4ZCAx
MDA2NDQNCi0tLSBhL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oDQorKysgYi9saWIv
ZGV2ZnMvaW5jbHVkZS9kZXZmcy9kZXZpY2UuaA0KQEAgLTMwLDEyICszMCw5IEBADQogI2lmbmRl
ZiBfREVWSUNFX0gNCiAjZGVmaW5lIF9ERVZJQ0VfSA0KIA0KLSNpbmNsdWRlIDxzeXMvY2RlZnMu
aD4NCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQogDQotI2luY2x1ZGUgPG9zdi91aW8uaD4NCi0N
Ci1fX0JFR0lOX0RFQ0xTDQorI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+DQogDQogI2RlZmluZSBN
QVhERVZOQU1FCTEyDQogI2RlZmluZSBET19SV01BU0sJMHgzDQpAQCAtNDcsNyArNDQsNyBAQCBz
dHJ1Y3QgZGV2aWNlOw0KICAqIERldmljZSBpbmZvcm1hdGlvbg0KICAqLw0KIHN0cnVjdCBkZXZp
bmZvIHsNCi0JdV9sb25nCQljb29raWU7CQkvKiBpbmRleCBjb29raWUgKi8NCisJdW5zaWduZWQg
bG9uZwkJY29va2llOwkJLyogaW5kZXggY29va2llICovDQogCXN0cnVjdCBkZXZpY2UJKmlkOwkJ
LyogZGV2aWNlIGlkICovDQogCWludAkJZmxhZ3M7CQkvKiBkZXZpY2UgY2hhcmFjdGVyaXN0aWNz
IGZsYWdzICovDQogCWNoYXIJCW5hbWVbTUFYREVWTkFNRV07IC8qIGRldmljZSBuYW1lICovDQpA
QCAtNjUsOCArNjIsOCBAQCB0eXBlZGVmIGludCAoKmRldm9wX29wZW5fdCkgICAoc3RydWN0IGRl
dmljZSAqLCBpbnQpOw0KIHR5cGVkZWYgaW50ICgqZGV2b3BfY2xvc2VfdCkgIChzdHJ1Y3QgZGV2
aWNlICopOw0KIHR5cGVkZWYgaW50ICgqZGV2b3BfcmVhZF90KSAgIChzdHJ1Y3QgZGV2aWNlICos
IHN0cnVjdCB1aW8gKiwgaW50KTsNCiB0eXBlZGVmIGludCAoKmRldm9wX3dyaXRlX3QpICAoc3Ry
dWN0IGRldmljZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7DQotdHlwZWRlZiBpbnQgKCpkZXZvcF9p
b2N0bF90KSAgKHN0cnVjdCBkZXZpY2UgKiwgdV9sb25nLCB2b2lkICopOw0KLXR5cGVkZWYgaW50
ICgqZGV2b3BfZGV2Y3RsX3QpIChzdHJ1Y3QgZGV2aWNlICosIHVfbG9uZywgdm9pZCAqKTsNCit0
eXBlZGVmIGludCAoKmRldm9wX2lvY3RsX3QpICAoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBs
b25nLCB2b2lkICopOw0KK3R5cGVkZWYgaW50ICgqZGV2b3BfZGV2Y3RsX3QpIChzdHJ1Y3QgZGV2
aWNlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7DQogdHlwZWRlZiB2b2lkICgqZGV2b3Bfc3Ry
YXRlZ3lfdCkoc3RydWN0IGJpbyAqKTsNCiANCiAvKg0KQEAgLTE3Nyw3ICsxNzQsNyBAQCBkZXZp
Y2VfZ2V0X3NvZnRjKGRldmljZV90IGRldikNCiAJcmV0dXJuIGRldi0+c29mdGM7DQogfQ0KIA0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBkZXZpY2VfcXVpZXQoZGV2aWNlX3QgZGV2KQ0KK3N0YXRpYyBp
bmxpbmUgdm9pZCBkZXZpY2VfcXVpZXQoZGV2aWNlX3QgZGV2IF9fdW51c2VkKQ0KIHsNCiB9DQog
DQpAQCAtMTkxLDcgKzE4OCw3IEBAIGludAkgZGV2aWNlX29wZW4oY29uc3QgY2hhciAqLCBpbnQs
IHN0cnVjdCBkZXZpY2UgKiopOw0KIGludAkgZGV2aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKik7
DQogaW50CSBkZXZpY2VfcmVhZChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsN
CiBpbnQJIGRldmljZV93cml0ZShzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsN
Ci1pbnQJIGRldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNlICosIHVfbG9uZywgdm9pZCAqKTsNCitp
bnQJIGRldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7
DQogaW50CSBkZXZpY2VfaW5mbyhzdHJ1Y3QgZGV2aW5mbyAqKTsNCiANCiBpbnQJIGJkZXZfcmVh
ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpOw0KQEAg
LTE5OSwxNSArMTk2LDExIEBAIGludAkgYmRldl93cml0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0
cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpOw0KIA0KIGludAllbm9kZXYodm9pZCk7DQogaW50
CW51bGxvcCh2b2lkKTsNCi12b2lkIG11bHRpcGxleF9zdHJhdGVneShzdHJ1Y3QgYmlvICopOw0K
LQ0KLWludAlwaHlzaW8oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBp
b2ZsYWdzKTsNCiANCiBzdHJ1Y3QgZGV2aWNlICoJZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgZHJpdmVy
ICpkcnYsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncyk7DQogaW50IGRldmljZV9kZXN0cm95
KHN0cnVjdCBkZXZpY2UgKmRldik7DQoraW50IGRldmljZV9kZXN0cm95X2xvY2tlZChzdHJ1Y3Qg
ZGV2aWNlICpkZXYpOw0KIHZvaWQgZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldmlj
ZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKTsNCiB2b2lkIHJlYWRfcGFydGl0aW9uX3Rh
YmxlKHN0cnVjdCBkZXZpY2UgKmRldmljZSk7DQogDQotX19FTkRfREVDTFMNCi0NCiAjZW5kaWYg
LyogIV9ERVZJQ0VfSCAqLw0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 11:58:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 11:58:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hZDW0-0007y2-SY; Fri, 07 Jun 2019 11:58:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DZcQ=UG=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hZDVz-0007x2-B3
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 11:58:35 +0000
X-Inumbo-ID: 9336c324-891b-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9336c324-891b-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 11:58:33 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4986.eurprd01.prod.exchangelabs.com (20.177.210.78) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Fri, 7 Jun
 2019 11:58:29 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Fri, 7 Jun 2019
 11:58:29 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v4 4/5] lib/devfs: Fix checkpath warnings
Thread-Index: AQHVHShSMZ1bjl3gLkiV8cahMB2Osw==
Date: Fri, 7 Jun 2019 11:58:29 +0000
Message-ID: <20190607115809.24990-5-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0013.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 1488d093-3067-4b91-e243-08d6eb3f74b5
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4986; 
x-ms-traffictypediagnostic: PR1PR01MB4986:
x-microsoft-antispam-prvs: <PR1PR01MB4986507881EE2558013931DFA6100@PR1PR01MB4986.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:204;
x-forefront-prvs: 0061C35778
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(5660300002)(316002)(786003)(6916009)(6436002)(66574012)(1076003)(53936002)(305945005)(6486002)(2906002)(4326008)(26005)(186003)(81156014)(8936002)(81166006)(8676002)(50226002)(486006)(76176011)(74482002)(52116002)(102836004)(6506007)(386003)(11346002)(2616005)(476003)(446003)(508600001)(7736002)(25786009)(85202003)(2351001)(14454004)(2501003)(68736007)(66066001)(85182001)(99286004)(6116002)(256004)(64756008)(66446008)(3846002)(86362001)(54906003)(73956011)(14444005)(6512007)(66556008)(71200400001)(71190400001)(66476007)(66946007)(5640700003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4986;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: RjdI+EMNSH7qnYMAFopBA3ZwcZKNijmHQuYbbC7I4peXyIaPOupUHksyKrtDhTF5mey3sZNcjYui3lmbSGq+W+akJiyN9dwuUknkCdB59SAley6+qf+mBuKUOoPMyGp7RpukNtS9kWs8640LIP7HDl1drjFh971d5+rjuFPDkpu+GEPjTVM9No7sEmNEDssForxjp4husR36tmCkp2FIAPL6wbybJUX37Mo5PaQ93djBxN0V64GcAw30ixt9cHYRyYEjueelg4HL4v/E642EpQQUoHgx69IEs4QXbhsz6UmbF1vj3KUk7miQcPysrPvLw6BClB6QnlVcgAeC4Bbtx/DepRhqAVBT0tusPIH+ot50pnX687j3o1tnK7fMMwGsCNw5OiaORLlb9TmID2++5cw5HLHhaMzVf/y97/nF0bk=
Content-ID: <63B0B6387455D04DB88C3433015B2130@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 1488d093-3067-4b91-e243-08d6eb3f74b5
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2019 11:58:29.5526 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4986
Subject: [Minios-devel] [UNIKRAFT PATCH v4 4/5] lib/devfs: Fix checkpath
 warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRf
YW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQotLS0NCiBsaWIvZGV2ZnMvZGV2ZnNfdm5v
cHMuYyAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tDQogbGli
L2RldmZzL2RldmljZS5jICAgICAgICAgICAgICAgfCAgNCArKy0tDQogbGliL2RldmZzL2luY2x1
ZGUvZGV2ZnMvZGV2aWNlLmggfCAyMiArKysrKysrKysrLS0tLS0tLS0tDQogMyBmaWxlcyBjaGFu
Z2VkLCAzMyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2xp
Yi9kZXZmcy9kZXZmc192bm9wcy5jIGIvbGliL2RldmZzL2RldmZzX3Zub3BzLmMNCmluZGV4IGVk
ZDgwMWM4Li45YWY2YWRlZCAxMDA2NDQNCi0tLSBhL2xpYi9kZXZmcy9kZXZmc192bm9wcy5jDQor
KysgYi9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYw0KQEAgLTcxLDIxICs3MSwyMSBAQCBkZXZmc19v
cGVuKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQ0KIAlzdHJ1Y3QgZGV2aWNlICpkZXY7DQogCWlu
dCBlcnJvcjsNCiANCi0JdWtfcHJfZGVidWcoImRldmZzX29wZW46IHBhdGg9JXNcbiIsIHBhdGgp
Ow0KKwl1a19wcl9kZWJ1ZygiJXM6IHBhdGg9JXNcbiIsIF9fZnVuY19fLCBwYXRoKTsNCiANCiAJ
aWYgKCFzdHJjbXAocGF0aCwgIi8iKSkJLyogcm9vdCA/ICovDQogCQlyZXR1cm4gMDsNCiANCiAJ
aWYgKHZwLT52X2ZsYWdzICYgVlBST1RERVYpIHsNCi0JCXVrX3ByX2RlYnVnKCJkZXZmc19vcGVu
OiBmYWlsZWQgdG8gb3BlbiBwcm90ZWN0ZWQgZGV2aWNlLlxuIik7DQorCQl1a19wcl9kZWJ1Zygi
JXM6IGZhaWxlZCB0byBvcGVuIHByb3RlY3RlZCBkZXZpY2UuXG4iLCBfX2Z1bmNfXyk7DQogCQly
ZXR1cm4gRVBFUk07DQogCX0NCiAJaWYgKCpwYXRoID09ICcvJykNCiAJCXBhdGgrKzsNCiAJZXJy
b3IgPSBkZXZpY2Vfb3BlbihwYXRoLCBmcC0+Zl9mbGFncyAmIERPX1JXTUFTSywgJmRldik7DQog
CWlmIChlcnJvcikgew0KLQkJdWtfcHJfZGVidWcoImRldmZzX29wZW46IGNhbiBub3Qgb3BlbiBk
ZXZpY2UgPSAlcyBlcnJvcj0lZFxuIiwNCi0JCQkgcGF0aCwgZXJyb3IpOw0KKwkJdWtfcHJfZGVi
dWcoIiVzOiBjYW4gbm90IG9wZW4gZGV2aWNlID0gJXMgZXJyb3I9JWRcbiIsDQorCQkJIF9fZnVu
Y19fLCBwYXRoLCBlcnJvcik7DQogCQlyZXR1cm4gZXJyb3I7DQogCX0NCiAJdnAtPnZfZGF0YSA9
ICh2b2lkICopZGV2OwkvKiBTdG9yZSBwcml2YXRlIGRhdGEgKi8NCkBAIC05NiwzMyArOTYsMzUg
QEAgc3RhdGljIGludA0KIGRldmZzX2Nsb3NlKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwKQ0KIHsNCiANCi0JdWtfcHJfZGVidWcoImRldmZzX2Nsb3NlOiBmZD0lZFxu
IiwgZnAtPmZkKTsNCisJdWtfcHJfZGVidWcoIiVzOiBmZD0lZFxuIiwgX19mdW5jX18sIGZwLT5m
ZCk7DQogDQogCWlmICghc3RyY21wKGZwLT5mX2RlbnRyeS0+ZF9wYXRoLCAiLyIpKQkvKiByb290
ID8gKi8NCiAJCXJldHVybiAwOw0KIA0KLQlyZXR1cm4gZGV2aWNlX2Nsb3NlKChzdHJ1Y3QgZGV2
aWNlKil2cC0+dl9kYXRhKTsNCisJcmV0dXJuIGRldmljZV9jbG9zZSgoc3RydWN0IGRldmljZSAq
KXZwLT52X2RhdGEpOw0KIH0NCiANCiBzdGF0aWMgaW50DQotZGV2ZnNfcmVhZChzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwgc3RydWN0IHVpbyAqdWlv
LCBpbnQgaW9mbGFncykNCitkZXZmc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKmZwIF9fdW51c2VkLA0KKwkJCXN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3Mp
DQogew0KLQlyZXR1cm4gZGV2aWNlX3JlYWQoKHN0cnVjdCBkZXZpY2UqKXZwLT52X2RhdGEsIHVp
bywgaW9mbGFncyk7DQorCXJldHVybiBkZXZpY2VfcmVhZCgoc3RydWN0IGRldmljZSAqKXZwLT52
X2RhdGEsIHVpbywgaW9mbGFncyk7DQogfQ0KIA0KIHN0YXRpYyBpbnQNCiBkZXZmc193cml0ZShz
dHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKQ0KIHsNCi0JcmV0
dXJuIGRldmljZV93cml0ZSgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0YSwgdWlvLCBpb2ZsYWdz
KTsNCisJcmV0dXJuIGRldmljZV93cml0ZSgoc3RydWN0IGRldmljZSAqKXZwLT52X2RhdGEsIHVp
bywgaW9mbGFncyk7DQogfQ0KIA0KIHN0YXRpYyBpbnQNCi1kZXZmc19pb2N0bChzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwgdW5zaWduZWQgbG9uZyBj
bWQsIHZvaWQgKmFyZykNCitkZXZmc19pb2N0bChzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCBfX3VudXNlZCwNCisJCQl1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqYXJn
KQ0KIHsNCiAJaW50IGVycm9yOw0KIA0KLQllcnJvciA9IGRldmljZV9pb2N0bCgoc3RydWN0IGRl
dmljZSopdnAtPnZfZGF0YSwgY21kLCBhcmcpOw0KLQl1a19wcl9kZWJ1ZygiZGV2ZnNfaW9jdGw6
IGNtZD0lbHVcbiIsIGNtZCk7DQorCWVycm9yID0gZGV2aWNlX2lvY3RsKChzdHJ1Y3QgZGV2aWNl
ICopdnAtPnZfZGF0YSwgY21kLCBhcmcpOw0KKwl1a19wcl9kZWJ1ZygiJXM6IGNtZD0lbHVcbiIs
IF9fZnVuY19fLCBjbWQpOw0KIAlyZXR1cm4gZXJyb3I7DQogfQ0KIA0KQEAgLTEzMyw3ICsxMzUs
NyBAQCBkZXZmc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2
bm9kZSAqKnZwcCkNCiAJc3RydWN0IHZub2RlICp2cDsNCiAJaW50IGVycm9yLCBpOw0KIA0KLQl1
a19wcl9kZWJ1ZygiZGV2ZnNfbG9va3VwOiVzXG4iLCBuYW1lKTsNCisJdWtfcHJfZGVidWcoIiVz
OiVzXG4iLCBfX2Z1bmNfXywgbmFtZSk7DQogDQogCSp2cHAgPSBOVUxMOw0KIA0KQEAgLTE0NSw5
ICsxNDcsOSBAQCBkZXZmc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0
cnVjdCB2bm9kZSAqKnZwcCkNCiAJaW5mby5jb29raWUgPSAwOw0KIAlmb3IgKDs7KSB7DQogCQll
cnJvciA9IGRldmljZV9pbmZvKCZpbmZvKTsNCi0JCWlmIChlcnJvcikgew0KKwkJaWYgKGVycm9y
KQ0KIAkJCXJldHVybiBFTk9FTlQ7DQotCQl9DQorDQogCQlpZiAoIXN0cm5jbXAoaW5mby5uYW1l
LCBuYW1lLCBNQVhERVZOQU1FKSkNCiAJCQlicmVhazsNCiAJCWkrKzsNCkBAIC0xODMsNyArMTg1
LDcgQEAgZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwIF9fdW51c2VkLCBzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IGRpcmVudA0KIAlzdHJ1Y3QgZGV2aW5mbyBpbmZvOw0KIAlp
bnQgZXJyb3IsIGk7DQogDQotCXVrX3ByX2RlYnVnKCJkZXZmc19yZWFkZGlyIG9mZnNldD0lbGlc
biIsIGZwLT5mX29mZnNldCk7DQorCXVrX3ByX2RlYnVnKCIlczogb2Zmc2V0PSVsaVxuIiwgX19m
dW5jX18sIGZwLT5mX29mZnNldCk7DQogDQogCWkgPSAwOw0KIAllcnJvciA9IDA7DQpAQCAtMjAz
LDcgKzIwNSw3IEBAIGRldmZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwgc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQNCiAJZGlyLT5kX2ZpbGVubyA9IGZw
LT5mX29mZnNldDsNCiAvLwlkaXItPmRfbmFtbGVuID0gc3RybGVuKGRpci0+ZF9uYW1lKTsNCiAN
Ci0JdWtfcHJfZGVidWcoImRldmZzX3JlYWRkaXI6ICVzXG4iLCBkaXItPmRfbmFtZSk7DQorCXVr
X3ByX2RlYnVnKCIlczogJXNcbiIsIF9fZnVuY19fLCBkaXItPmRfbmFtZSk7DQogCWZwLT5mX29m
ZnNldCsrOw0KIAlyZXR1cm4gMDsNCiB9DQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL2RldmljZS5j
IGIvbGliL2RldmZzL2RldmljZS5jDQppbmRleCA2OTNhNWY5ZC4uN2YxZTNkYjIgMTAwNjQ0DQot
LS0gYS9saWIvZGV2ZnMvZGV2aWNlLmMNCisrKyBiL2xpYi9kZXZmcy9kZXZpY2UuYw0KQEAgLTU3
LDcgKzU3LDcgQEANCiBzdGF0aWMgc3RydWN0IHVrX211dGV4IGRldmZzX2xvY2sgPSBVS19NVVRF
WF9JTklUSUFMSVpFUihkZXZmc19sb2NrKTsNCiANCiAvKiBsaXN0IGhlYWQgb2YgdGhlIGRldmlj
ZXMgKi8NCi1zdGF0aWMgc3RydWN0IGRldmljZSAqZGV2aWNlX2xpc3QgPSBOVUxMOw0KK3N0YXRp
YyBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfbGlzdDsNCiANCiAvKg0KICAqIExvb2sgdXAgYSBkZXZp
Y2Ugb2JqZWN0IGJ5IGRldmljZSBuYW1lLg0KQEAgLTg1LDcgKzg1LDcgQEAgc3RydWN0IHBhcnRp
dGlvbl90YWJsZV9lbnRyeSB7DQogCXVpbnQxNl90IGVuZGluZ19jeWxpbmRlcjoxMDsNCiAJdWlu
dDMyX3QgcmVsYV9zZWN0b3I7DQogCXVpbnQzMl90IHRvdGFsX3NlY3RvcnM7DQotfSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsNCit9IF9fcGFja2VkOw0KIA0KIA0KIHZvaWQgZGV2aWNlX3JlZ2lz
dGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKQ0KZGlm
ZiAtLWdpdCBhL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oIGIvbGliL2RldmZzL2lu
Y2x1ZGUvZGV2ZnMvZGV2aWNlLmgNCmluZGV4IDY0NDZkMzMwLi45MDkwMjBiMiAxMDA2NDQNCi0t
LSBhL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oDQorKysgYi9saWIvZGV2ZnMvaW5j
bHVkZS9kZXZmcy9kZXZpY2UuaA0KQEAgLTEyMiw3ICsxMjIsOSBAQCBzdHJ1Y3QgZGV2aWNlIHsN
CiAJaW50CQlhY3RpdmU7CQkvKiBkZXZpY2UgaGFzIG5vdCBiZWVuIGRlc3Ryb3llZCAqLw0KIAlp
bnQJCXJlZmNudDsJCS8qIHJlZmVyZW5jZSBjb3VudCAqLw0KIAlvZmZfdAkJc2l6ZTsJCS8qIGRl
dmljZSBzaXplICovDQotCW9mZl90CQlvZmZzZXQ7IC8qIDAgZm9yIHRoZSBtYWluIGRyaXZlLCBp
ZiB3ZSBoYXZlIGEgcGFydGl0aW9uLCB0aGlzIGlzIHRoZSBzdGFydCBhZGRyZXNzICovDQorCW9m
Zl90CQlvZmZzZXQ7IC8qIDAgZm9yIHRoZSBtYWluIGRyaXZlLCBpZiB3ZSBoYXZlIGENCisJCQkJ
ICogIHBhcnRpdGlvbiwgdGhpcyBpcyB0aGUgc3RhcnQgYWRkcmVzcw0KKwkJCQkgKi8NCiAJc2l6
ZV90CQltYXhfaW9fc2l6ZTsNCiAJdm9pZAkJKnByaXZhdGVfZGF0YTsJLyogcHJpdmF0ZSBzdG9y
YWdlICovDQogDQpAQCAtMTU3LDEzICsxNTksMTMgQEAgZGV2aWNlX2dldF9kZXNjKGRldmljZV90
IGRldikNCiB9DQogDQogc3RhdGljIGlubGluZSB2b2lkDQotZGV2aWNlX3NldF9kZXNjKGRldmlj
ZV90IGRldiwgY29uc3QgY2hhciogZGVzYykNCitkZXZpY2Vfc2V0X2Rlc2MoZGV2aWNlX3QgZGV2
LCBjb25zdCBjaGFyICpkZXNjKQ0KIHsNCiAJZGV2LT5kZXNjID0gZGVzYzsNCiB9DQogDQogc3Rh
dGljIGlubGluZSB2b2lkDQotZGV2aWNlX3NldF9zb2Z0YyhkZXZpY2VfdCBkZXYsIHZvaWQqIHNv
ZnRjKQ0KK2RldmljZV9zZXRfc29mdGMoZGV2aWNlX3QgZGV2LCB2b2lkICpzb2Z0YykNCiB7DQog
CWRldi0+c29mdGMgPSBzb2Z0YzsNCiB9DQpAQCAtMTg0LDEyICsxODYsMTIgQEAgZGV2dG9uYW1l
KHN0cnVjdCBkZXZpY2UgKmRldikNCiAJcmV0dXJuIGRldi0+bmFtZTsNCiB9DQogDQotaW50IGRl
dmljZV9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBzdHJ1Y3QgZGV2aWNlICoqKTsNCi1pbnQgZGV2
aWNlX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKik7DQotaW50IGRldmljZV9yZWFkKHN0cnVjdCBkZXZp
Y2UgKiwgc3RydWN0IHVpbyAqLCBpbnQpOw0KLWludCBkZXZpY2Vfd3JpdGUoc3RydWN0IGRldmlj
ZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7DQotaW50IGRldmljZV9pb2N0bChzdHJ1Y3QgZGV2aWNl
ICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7DQotaW50IGRldmljZV9pbmZvKHN0cnVjdCBkZXZp
bmZvICopOw0KK2ludCBkZXZpY2Vfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgbW9kZSwgc3Ry
dWN0IGRldmljZSAqKmRldnApOw0KK2ludCBkZXZpY2VfY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2
KTsNCitpbnQgZGV2aWNlX3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8s
IGludCBpb2ZsYWdzKTsNCitpbnQgZGV2aWNlX3dyaXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry
dWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncyk7DQoraW50IGRldmljZV9pb2N0bChzdHJ1Y3QgZGV2
aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICphcmcpOw0KK2ludCBkZXZpY2VfaW5m
byhzdHJ1Y3QgZGV2aW5mbyAqaW5mbyk7DQogDQogaW50IGJkZXZfcmVhZChzdHJ1Y3QgZGV2aWNl
ICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpOw0KIGludCBiZGV2X3dyaXRlKHN0
cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncyk7DQpAQCAtMTk3
LDcgKzE5OSw3IEBAIGludCBiZGV2X3dyaXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVp
byAqdWlvLCBpbnQgaW9mbGFncyk7DQogaW50CWVub2Rldih2b2lkKTsNCiBpbnQJbnVsbG9wKHZv
aWQpOw0KIA0KLXN0cnVjdCBkZXZpY2UgKglkZXZpY2VfY3JlYXRlKHN0cnVjdCBkcml2ZXIgKmRy
diwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKTsNCitzdHJ1Y3QgZGV2aWNlICpkZXZpY2Vf
Y3JlYXRlKHN0cnVjdCBkcml2ZXIgKmRydiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKTsN
CiBpbnQgZGV2aWNlX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2KTsNCiBpbnQgZGV2aWNlX2Rl
c3Ryb3lfbG9ja2VkKHN0cnVjdCBkZXZpY2UgKmRldik7DQogdm9pZCBkZXZpY2VfcmVnaXN0ZXIo
c3RydWN0IGRldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MpOw0KLS0g
DQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 11:58:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 11:58:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hZDW0-0007y7-UV; Fri, 07 Jun 2019 11:58:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DZcQ=UG=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hZDVz-0007x9-Ks
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 11:58:35 +0000
X-Inumbo-ID: 93bec7c8-891b-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.70]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 93bec7c8-891b-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 11:58:34 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4986.eurprd01.prod.exchangelabs.com (20.177.210.78) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Fri, 7 Jun
 2019 11:58:30 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.011; Fri, 7 Jun 2019
 11:58:30 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v4 5/5] lib/devfs: Update license header for the
 imported files
Thread-Index: AQHVHShTUuWv8C9NxUGhYMh+wHF/qQ==
Date: Fri, 7 Jun 2019 11:58:30 +0000
Message-ID: <20190607115809.24990-6-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0013.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.29.237]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a9cdeced-d3c8-4e2e-7cbd-08d6eb3f755d
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4986; 
x-ms-traffictypediagnostic: PR1PR01MB4986:
x-microsoft-antispam-prvs: <PR1PR01MB4986169B70760B3BB9652584A6100@PR1PR01MB4986.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:1122;
x-forefront-prvs: 0061C35778
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(5660300002)(316002)(786003)(6916009)(6436002)(1076003)(53936002)(305945005)(6486002)(2906002)(4326008)(26005)(186003)(81156014)(8936002)(81166006)(8676002)(50226002)(486006)(76176011)(74482002)(52116002)(102836004)(6506007)(386003)(11346002)(2616005)(476003)(446003)(508600001)(7736002)(25786009)(85202003)(2351001)(14454004)(2501003)(68736007)(66066001)(85182001)(99286004)(6116002)(256004)(64756008)(66446008)(3846002)(86362001)(54906003)(73956011)(6512007)(66556008)(71200400001)(71190400001)(66476007)(66946007)(5640700003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4986;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: UTtcfyJU34nKZTKvCaWvVXP6G8qWMVEnCnxNiOANlbbDD2SI0HbbbX//vdzX2rcm8fDx9ac0u4LGenOF2dqk4vIIwuTixRIPL17d09MRmjCUSPYjSCED8AzQXvjCWGNrpjwyoKvDG4mMXHBJEWzndzxWJX3jENXa2s9MwdGbNdnDoybyRMmdcNs2GHMUpKfD9tgg2VW6JWaYmMdS07SEdUQ3n9ehzqB6gqlAtZfp8e15L2WiZ9ebKAkl7hKMcpav3Gvi3dHLk7Ohq8aqV3Hby+EyxH8dMLBdzVl9xV5Ivo7IyJ/secbfvqBpT/9job6++TokRHyq4/zxjAB8gaRrHNGilrgvaulI7QM8itPwYUV4KjKmg7PuZArrV+Aize8Of3568DGGN6bNdwSAGFc0gYnrIGCtqtpWmID1dsQl3l8=
Content-ID: <682DE8B4F2B312408F7147F805C8E36B@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: a9cdeced-d3c8-4e2e-7cbd-08d6eb3f755d
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2019 11:58:30.5990 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4986
Subject: [Minios-devel] [UNIKRAFT PATCH v4 5/5] lib/devfs: Update license
 header for the imported files
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.ro>,
 Yuri Volchkov <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRf
YW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQpSZXZpZXdlZC1ieTogWXVyaSBWb2xjaGtv
diA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+DQotLS0NCiBsaWIvZGV2ZnMvZGV2ZnMuaCAgICAg
ICAgICAgICAgICB8IDMgKysrDQogbGliL2RldmZzL2RldmZzX3Zub3BzLmMgICAgICAgICAgfCAz
ICsrKw0KIGxpYi9kZXZmcy9kZXZpY2UuYyAgICAgICAgICAgICAgIHwgNSArKysrLQ0KIGxpYi9k
ZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oIHwgNSArKysrLQ0KIDQgZmlsZXMgY2hhbmdlZCwg
MTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2xpYi9kZXZm
cy9kZXZmcy5oIGIvbGliL2RldmZzL2RldmZzLmgNCmluZGV4IGMyMTk3Zjc5Li41YmI5MmZiYyAx
MDA2NDQNCi0tLSBhL2xpYi9kZXZmcy9kZXZmcy5oDQorKysgYi9saWIvZGV2ZnMvZGV2ZnMuaA0K
QEAgLTEsNSArMSw4IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz
ZSAqLw0KIC8qDQogICogQ29weXJpZ2h0IChjKSAyMDA3LCBLb2hzdWtlIE9odGFuaQ0KKyAqIENv
cHlyaWdodCAoQykgMjAxNCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuDQorICogQ29weXJpZ2h0IChj
KSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4NCiAgKiBBbGwgcmln
aHRzIHJlc2VydmVkLg0KICAqDQogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQpkaWZmIC0tZ2l0IGEvbGliL2RldmZz
L2RldmZzX3Zub3BzLmMgYi9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYw0KaW5kZXggOWFmNmFkZWQu
LjExYTNlYTA1IDEwMDY0NA0KLS0tIGEvbGliL2RldmZzL2RldmZzX3Zub3BzLmMNCisrKyBiL2xp
Yi9kZXZmcy9kZXZmc192bm9wcy5jDQpAQCAtMSw1ICsxLDggQEANCisvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQogLyoNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUt
MjAwNywgS29oc3VrZSBPaHRhbmkNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lz
dGVtcywgTHRkLg0KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmlj
YSBvZiBCdWNoYXJlc3QuDQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgKg0KICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dA0KZGlmZiAtLWdpdCBhL2xpYi9kZXZmcy9kZXZpY2UuYyBiL2xpYi9kZXZmcy9kZXZpY2Uu
Yw0KaW5kZXggN2YxZTNkYjIuLjA0NDA3M2E0IDEwMDY0NA0KLS0tIGEvbGliL2RldmZzL2Rldmlj
ZS5jDQorKysgYi9saWIvZGV2ZnMvZGV2aWNlLmMNCkBAIC0xLDUgKzEsOCBAQA0KLS8qLQ0KKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8NCisvKg0KICAqIENvcHly
aWdodCAoYykgMjAwNS0yMDA5LCBLb2hzdWtlIE9odGFuaQ0KKyAqIENvcHlyaWdodCAoQykgMjAx
NCBDbG91ZGl1cyBTeXN0ZW1zLCBMdGQuDQorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJz
aXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
ICAqDQogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQpkaWZmIC0tZ2l0IGEvbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMv
ZGV2aWNlLmggYi9saWIvZGV2ZnMvaW5jbHVkZS9kZXZmcy9kZXZpY2UuaA0KaW5kZXggOTA5MDIw
YjIuLjI5ODg5ZTRlIDEwMDY0NA0KLS0tIGEvbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMvZGV2aWNl
LmgNCisrKyBiL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oDQpAQCAtMSw1ICsxLDgg
QEANCi0vKi0NCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovDQor
LyoNCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwOCwgS29oc3VrZSBPaHRhbmkNCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQ2xvdWRpdXMgU3lzdGVtcywgTHRkLg0KKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuDQogICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCiAgKg0KICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KLS0gDQoyLjIxLjANCg0KX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 12:25:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 12:25: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 1hZDvb-0002Ax-QL; Fri, 07 Jun 2019 12:25:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=YEtv=UG=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hZDva-0002As-QB
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 12:25:02 +0000
X-Inumbo-ID: 43fbcd55-891f-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 43fbcd55-891f-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 12:24:59 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id f10so1878254wmb.1
 for <minios-devel@lists.xen.org>; Fri, 07 Jun 2019 05:24:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=KQOAfFmWFzoxNh/hGa2QlUqLNpfSgbv00afxn7rTE7I=;
 b=ikQulNJRJjkx86TsUy7aHYeAFDh3+oEuqEElxiuMXl3mPuTRXlSTFLxSyTbi310dNi
 +sMZ0Xg0XS0tVT7cqBgdCaKxv8Yw8JNeClfanrVrYLW0/F90lJhm5bOmI0NdVatCZ29K
 5wY1eyf5z3woq7CvasAsLGzfsNxCgsxbXGnP59idAlszuyacg3oi35bFHQ2iZkjvhBFD
 62aYcahhT1FRonEc8MQiAuTABY0DSWGE9nmwETsUqz3vTl6m4bCw/OsxUXHqMqx+oSfD
 Hv1LkpptyI6ODt19uztWhCv163a2eRV8nVviSy4tUQbjGueBaXNWhXoP96oohyZw4Ly4
 bjvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=KQOAfFmWFzoxNh/hGa2QlUqLNpfSgbv00afxn7rTE7I=;
 b=HSomA4gq4e+syoFIjndEG9rdFGK44tCoWl8y6MkVVaWb9ITEuNzVTIOuJaDAeazgrn
 t8PrhwUsDmLSfAtRpvCvCGc4eixxbgFYf7hRsFVHqg07LP1qli1nxfr7/K5wzK0KF7Zx
 im+jWQjpc68uTiinKakP5dNW6F+aY6rsRn931gqi2PqRiZto5s2c9nA9rCBhMGaNialq
 WVgkmvQj/M+D7RON/QPtf0Fe3oH8LRf/t1k8/HBBkJOHCVHazceR99DbdbPGZeYRox3E
 E0MVvRatFsgm4xdE4WaD6sqro3RrtTnkoj/SZIDqXbeAu2aq1WrwGbKFIi6BMNq2OJp8
 PI/A==
X-Gm-Message-State: APjAAAUrSbjkmwz2DAsiviul41thTfOFJBJ8vRiZTnS4Bh4U2WMTGkPY
 +T66F11parrCSi0PpWHKAB0=
X-Google-Smtp-Source: APXvYqwxVrAlwgbgu0tGTFyP0rdu02j5EV1cruQuFVbuljKW5mzcn/j9AUqUu4MNBx8gdEgXGc3Ixg==
X-Received: by 2002:a05:600c:240e:: with SMTP id
 14mr3422832wmp.30.1559910298029; 
 Fri, 07 Jun 2019 05:24:58 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id z12sm1503275wrl.37.2019.06.07.05.24.56
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 07 Jun 2019 05:24:57 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190607115809.24990-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <39762ebb-f6b8-764b-004b-c8c4caaa0804@gmail.com>
Date: Fri, 7 Jun 2019 15:24:55 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190607115809.24990-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 2/5] lib/devfs: Adapt
 imported devfs to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhhbmtzLCBWbGFkIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5w
dWIucm8+CgpPbiA2LzcvMTkgMjo1OCBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdy
b3RlOgo+IEZyb206IFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSA8dmxhZF9hbmRyZWkuYmFk
b2l1QHN0dWQuYWNzLnVwYi5ybz4KPiAKPiBUaGUgaW5jb21wYXRpYmxlIGNhc3Qgd2FybmluZ3Mg
Y2F1c2VkIGJ5IHRoZSB0aGUgbWFjcm8gZXhwYW5zaW9ucywgc3VjaCBhcwo+IGAjZGVmaW5lIGRl
dmZzX21vdW50ICgodmZzb3BfbW91bnRfdCl2ZnNjb3JlX251bGxvcClgLCByZXF1aXJlcyBjaGFu
Z2VzCj4gdG8gdmZzY29yZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUg
PHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIGxpYi9Db25maWcu
dWsgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgbGliL01ha2VmaWxlLnVrICAgICAgICAg
ICAgICAgICAgfCAgIDEgKwo+ICBsaWIvZGV2ZnMvQ29uZmlnLnVrICAgICAgICAgICAgICB8ICAx
MCArKwo+ICBsaWIvZGV2ZnMvTWFrZWZpbGUudWsgICAgICAgICAgICB8ICAgNiArCj4gIGxpYi9k
ZXZmcy9kZXZmcy5oICAgICAgICAgICAgICAgIHwgICAyICstCj4gIGxpYi9kZXZmcy9kZXZmc192
bm9wcy5jICAgICAgICAgIHwgMTQ3ICsrKysrKysrKysrKy0tLS0tLQo+ICBsaWIvZGV2ZnMvZGV2
aWNlLmMgICAgICAgICAgICAgICB8IDI1NyArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Cj4gIGxpYi9kZXZmcy9leHBvcnRzeW1zLnVrICAgICAgICAgIHwgICA2ICsKPiAgbGliL2RldmZz
L2luY2x1ZGUvZGV2ZnMvZGV2aWNlLmggfCAgMjEgKy0tCj4gIDkgZmlsZXMgY2hhbmdlZCwgMjA1
IGluc2VydGlvbnMoKyksIDI0NiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi9kZXZmcy9Db25maWcudWsKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kZXZmcy9NYWtlZmls
ZS51awo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2RldmZzL2V4cG9ydHN5bXMudWsKPiAKPiBk
aWZmIC0tZ2l0IGEvbGliL0NvbmZpZy51ayBiL2xpYi9Db25maWcudWsKPiBpbmRleCA4MjJjNjI0
Zi4uYmQ2NmUyZjAgMTAwNjQ0Cj4gLS0tIGEvbGliL0NvbmZpZy51awo+ICsrKyBiL2xpYi9Db25m
aWcudWsKPiBAQCAtNDEsNiArNDEsNyBAQCBzb3VyY2UgImxpYi91a3NjaGVkY29vcC9Db25maWcu
dWsiCj4gIHNvdXJjZSAibGliL2ZkdC9Db25maWcudWsiCj4gIHNvdXJjZSAibGliL3Zmc2NvcmUv
Q29uZmlnLnVrIgo+ICBzb3VyY2UgImxpYi9yYW1mcy9Db25maWcudWsiCj4gK3NvdXJjZSAibGli
L2RldmZzL0NvbmZpZy51ayIKPiAgc291cmNlICJsaWIvdWtsb2NrL0NvbmZpZy51ayIKPiAgc291
cmNlICJsaWIvdWttcGkvQ29uZmlnLnVrIgo+ICBzb3VyY2UgImxpYi91a3N3cmFuZC9Db25maWcu
dWsiCj4gZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS51ayBiL2xpYi9NYWtlZmlsZS51awo+IGlu
ZGV4IGQwNjgzN2YxLi40NmVkYzZlMiAxMDA2NDQKPiAtLS0gYS9saWIvTWFrZWZpbGUudWsKPiAr
KysgYi9saWIvTWFrZWZpbGUudWsKPiBAQCAtMTksNiArMTksNyBAQCAkKGV2YWwgJChjYWxsIF9p
bXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a3NjaGVkY29vcCkpCj4gICQoZXZhbCAk
KGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL2ZkdCkpCj4gICQoZXZhbCAk
KGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3Zmc2NvcmUpKQo+ICAkKGV2
YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi9yYW1mcykpCj4gKyQo
ZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL2RldmZzKSkKPiAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtsb2NrKSkK
PiAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkp
KQo+ICAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a2J1
cykpCj4gZGlmZiAtLWdpdCBhL2xpYi9kZXZmcy9Db25maWcudWsgYi9saWIvZGV2ZnMvQ29uZmln
LnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZTM4YTYxNmUKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvbGliL2RldmZzL0NvbmZpZy51awo+IEBAIC0wLDAgKzEsMTAg
QEAKPiArY29uZmlnIExJQkRFVkZTCj4gKwlib29sICJkZXZmczogZGV2ZnMgZmlsZSBzeXN0ZW0i
Cj4gKwlkZWZhdWx0IG4KPiArCWRlcGVuZHMgb24gTElCVkZTQ09SRQo+ICtpZiBMSUJERVZGUwo+
ICsgICAgICAgIGNvbmZpZyBMSUJERVZGU19VU0VfUkFNRlMKPiArICAgICAgICBib29sICJVc2Ug
cmFtZnMgYXMgcm9vdCIKPiArICAgICAgICBkZWZhdWx0IG4KPiArICAgICAgICBzZWxlY3QgTElC
UkFNRlMKPiArZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL2RldmZzL01ha2VmaWxlLnVrIGIvbGli
L2RldmZzL01ha2VmaWxlLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
MC4uZjg5ZTY1NzcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL2RldmZzL01ha2VmaWxlLnVr
Cj4gQEAgLTAsMCArMSw2IEBACj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZGV2ZnMsJChD
T05GSUdfTElCREVWRlMpKSkKPiArCj4gK0NJTkNMVURFUy15ICs9IC1JJChMSUJERVZGU19CQVNF
KS9pbmNsdWRlCj4gKwo+ICtMSUJERVZGU19TUkNTLXkgKz0gJChMSUJERVZGU19CQVNFKS9kZXZp
Y2UuYwo+ICtMSUJERVZGU19TUkNTLXkgKz0gJChMSUJERVZGU19CQVNFKS9kZXZmc192bm9wcy5j
Cj4gZGlmZiAtLWdpdCBhL2xpYi9kZXZmcy9kZXZmcy5oIGIvbGliL2RldmZzL2RldmZzLmgKPiBp
bmRleCBiZGY1MDYwOS4uYzIxOTdmNzkgMTAwNjQ0Cj4gLS0tIGEvbGliL2RldmZzL2RldmZzLmgK
PiArKysgYi9saWIvZGV2ZnMvZGV2ZnMuaAo+IEBAIC0zMCw3ICszMCw3IEBACj4gICNpZm5kZWYg
X0RFVkZTX0gKPiAgI2RlZmluZSBfREVWRlNfSAo+ICAKPiAtI2luY2x1ZGUgPGFzc2VydC5oPgo+
ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4gIAo+ICAvKiAjZGVmaW5lIERFQlVHX0RFVkZTIDEg
Ki8KPiAgCj4gZGlmZiAtLWdpdCBhL2xpYi9kZXZmcy9kZXZmc192bm9wcy5jIGIvbGliL2RldmZz
L2RldmZzX3Zub3BzLmMKPiBpbmRleCAxZTY5ZTRhNi4uYWYyYWJmOTIgMTAwNjQ0Cj4gLS0tIGEv
bGliL2RldmZzL2RldmZzX3Zub3BzLmMKPiArKysgYi9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYwo+
IEBAIC0zMSw2ICszMSwxMCBAQAo+ICAgKiBkZXZmcyAtIGRldmljZSBmaWxlIHN5c3RlbS4KPiAg
ICovCj4gIAo+ICsjaWZuZGVmIF9HTlVfU09VUkNFCj4gKyNkZWZpbmUgX0dOVV9TT1VSQ0UKPiAr
I2VuZGlmCj4gKwo+ICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAgCj4gICNpbmNsdWRlIDxjdHlw
ZS5oPgo+IEBAIC00MSw0OCArNDUsNDcgQEAKPiAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICAjaW5j
bHVkZSA8ZmNudGwuaD4KPiAgI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gKyNpbmNsdWRlIDxzeXMvbW91
bnQuaD4KPiAgCj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+IC0jaW5jbHVkZSA8b3N2L2Rldmlj
ZS5oPgo+IC0jaW5jbHVkZSA8b3N2L3Zub2RlLmg+Cj4gLSNpbmNsdWRlIDxvc3YvbW91bnQuaD4K
PiAtI2luY2x1ZGUgPG9zdi9kZW50cnkuaD4KPiArI2luY2x1ZGUgPGRpcmVudC5oPgo+ICsjaW5j
bHVkZSA8dmZzY29yZS9wcmV4Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+Cj4gKyNp
bmNsdWRlIDx2ZnNjb3JlL21vdW50Lmg+Cj4gKyNpbmNsdWRlIDx2ZnNjb3JlL2RlbnRyeS5oPgo+
ICsjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+Cj4gIAo+IC0jaW5jbHVkZSAiZGV2ZnMuaCIKPiAr
I2luY2x1ZGUgPHZmc2NvcmUvZnMuaD4KPiAgCj4gLSNpZmRlZiBERUJVR19ERVZGUwo+IC0jZGVm
aW5lIERQUklOVEYoYSkJZHByaW50ZiBhCj4gLSNlbHNlCj4gLSNkZWZpbmUgRFBSSU5URihhKQlk
byB7fSB3aGlsZSAoMCkKPiAtI2VuZGlmCj4gKyNpbmNsdWRlIDx1ay9jdG9ycy5oPgo+ICAKPiAt
I2RlZmluZSBBU1NFUlQoZSkJYXNzZXJ0KGUpCj4gKyNpbmNsdWRlICJkZXZmcy5oIgo+ICsjaW5j
bHVkZSA8ZGV2ZnMvZGV2aWNlLmg+Cj4gIAo+ICBzdGF0aWMgdWludDY0X3QgaW5vZGVfY291bnQg
PSAxOyAvKiBpbm9kZSAwIGlzIHJlc2VydmVkIHRvIHJvb3QgKi8KPiAgCj4gIHN0YXRpYyBpbnQK
PiAtZGV2ZnNfb3BlbihzdHJ1Y3QgZmlsZSAqZnApCj4gK2RldmZzX29wZW4oc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnApCj4gIHsKPiAgCXN0cnVjdCB2bm9kZSAqdnAgPSBmcC0+Zl9kZW50cnktPmRf
dm5vZGU7Cj4gIAljaGFyICpwYXRoID0gZnAtPmZfZGVudHJ5LT5kX3BhdGg7Cj4gIAlzdHJ1Y3Qg
ZGV2aWNlICpkZXY7Cj4gIAlpbnQgZXJyb3I7Cj4gIAo+IC0JRFBSSU5URigoImRldmZzX29wZW46
IHBhdGg9JXNcbiIsIHBhdGgpKTsKPiArCXVrX3ByX2RlYnVnKCJkZXZmc19vcGVuOiBwYXRoPSVz
XG4iLCBwYXRoKTsKPiAgCj4gIAlpZiAoIXN0cmNtcChwYXRoLCAiLyIpKQkvKiByb290ID8gKi8K
PiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAodnAtPnZfZmxhZ3MgJiBWUFJPVERFVikgewo+IC0J
CURQUklOVEYoKCJkZXZmc19vcGVuOiBmYWlsZWQgdG8gb3BlbiBwcm90ZWN0ZWQgZGV2aWNlLlxu
IikpOwo+ICsJCXVrX3ByX2RlYnVnKCJkZXZmc19vcGVuOiBmYWlsZWQgdG8gb3BlbiBwcm90ZWN0
ZWQgZGV2aWNlLlxuIik7Cj4gIAkJcmV0dXJuIEVQRVJNOwo+ICAJfQo+ICAJaWYgKCpwYXRoID09
ICcvJykKPiAgCQlwYXRoKys7Cj4gIAllcnJvciA9IGRldmljZV9vcGVuKHBhdGgsIGZwLT5mX2Zs
YWdzICYgRE9fUldNQVNLLCAmZGV2KTsKPiAgCWlmIChlcnJvcikgewo+IC0JCURQUklOVEYoKCJk
ZXZmc19vcGVuOiBjYW4gbm90IG9wZW4gZGV2aWNlID0gJXMgZXJyb3I9JWRcbiIsCj4gLQkJCSBw
YXRoLCBlcnJvcikpOwo+ICsJCXVrX3ByX2RlYnVnKCJkZXZmc19vcGVuOiBjYW4gbm90IG9wZW4g
ZGV2aWNlID0gJXMgZXJyb3I9JWRcbiIsCj4gKwkJCSBwYXRoLCBlcnJvcik7Cj4gIAkJcmV0dXJu
IGVycm9yOwo+ICAJfQo+ICAJdnAtPnZfZGF0YSA9ICh2b2lkICopZGV2OwkvKiBTdG9yZSBwcml2
YXRlIGRhdGEgKi8KPiBAQCAtOTAsMzYgKzkzLDM2IEBAIGRldmZzX29wZW4oc3RydWN0IGZpbGUg
KmZwKQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX2Nsb3NlKHN0cnVjdCB2bm9kZSAq
dnAsIHN0cnVjdCBmaWxlICpmcCkKPiArZGV2ZnNfY2xvc2Uoc3RydWN0IHZub2RlICp2cCwgc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZnApCj4gIHsKPiAgCj4gLQlEUFJJTlRGKCgiZGV2ZnNfY2xvc2U6
IGZwPSV4XG4iLCBmcCkpOwo+ICsJdWtfcHJfZGVidWcoImRldmZzX2Nsb3NlOiBmZD0lZFxuIiwg
ZnAtPmZkKTsKPiAgCj4gIAlpZiAoIXN0cmNtcChmcC0+Zl9kZW50cnktPmRfcGF0aCwgIi8iKSkJ
Lyogcm9vdCA/ICovCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JcmV0dXJuIGRldmljZV9jbG9zZSgo
ZGV2aWNlKil2cC0+dl9kYXRhKTsKPiArCXJldHVybiBkZXZpY2VfY2xvc2UoKHN0cnVjdCBkZXZp
Y2UqKXZwLT52X2RhdGEpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX3JlYWQoc3Ry
dWN0IHZub2RlICp2cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2Zs
YWdzKQo+ICtkZXZmc19yZWFkKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KmZwIF9fdW51c2VkLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKQo+ICB7Cj4gLQlyZXR1
cm4gZGV2aWNlX3JlYWQoKGRldmljZSopdnAtPnZfZGF0YSwgdWlvLCBpb2ZsYWdzKTsKPiArCXJl
dHVybiBkZXZpY2VfcmVhZCgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0YSwgdWlvLCBpb2ZsYWdz
KTsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+ICBkZXZmc193cml0ZShzdHJ1Y3Qgdm5vZGUgKnZw
LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKQo+ICB7Cj4gLQlyZXR1cm4gZGV2aWNlX3dy
aXRlKChkZXZpY2UqKXZwLT52X2RhdGEsIHVpbywgaW9mbGFncyk7Cj4gKwlyZXR1cm4gZGV2aWNl
X3dyaXRlKChzdHJ1Y3QgZGV2aWNlKil2cC0+dl9kYXRhLCB1aW8sIGlvZmxhZ3MpOwo+ICB9Cj4g
IAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX2lvY3RsKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBm
aWxlICpmcCwgdV9sb25nIGNtZCwgdm9pZCAqYXJnKQo+ICtkZXZmc19pb2N0bChzdHJ1Y3Qgdm5v
ZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwgdW5zaWduZWQgbG9uZyBj
bWQsIHZvaWQgKmFyZykKPiAgewo+ICAJaW50IGVycm9yOwo+ICAKPiAtCWVycm9yID0gZGV2aWNl
X2lvY3RsKChkZXZpY2UqKXZwLT52X2RhdGEsIGNtZCwgYXJnKTsKPiAtCURQUklOVEYoKCJkZXZm
c19pb2N0bDogY21kPSV4XG4iLCBjbWQpKTsKPiArCWVycm9yID0gZGV2aWNlX2lvY3RsKChzdHJ1
Y3QgZGV2aWNlKil2cC0+dl9kYXRhLCBjbWQsIGFyZyk7Cj4gKwl1a19wcl9kZWJ1ZygiZGV2ZnNf
aW9jdGw6IGNtZD0lbHVcbiIsIGNtZCk7Cj4gIAlyZXR1cm4gZXJyb3I7Cj4gIH0KPiAgCj4gQEAg
LTEzMCw3ICsxMzMsNyBAQCBkZXZmc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5h
bWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAgCXN0cnVjdCB2bm9kZSAqdnA7Cj4gIAlpbnQgZXJy
b3IsIGk7Cj4gIAo+IC0JRFBSSU5URigoImRldmZzX2xvb2t1cDolc1xuIiwgbmFtZSkpOwo+ICsJ
dWtfcHJfZGVidWcoImRldmZzX2xvb2t1cDolc1xuIiwgbmFtZSk7Cj4gIAo+ICAJKnZwcCA9IE5V
TEw7Cj4gIAo+IEBAIC0xNDksNyArMTUyLDcgQEAgZGV2ZnNfbG9va3VwKHN0cnVjdCB2bm9kZSAq
ZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3Qgdm5vZGUgKip2cHApCj4gIAkJCWJyZWFrOwo+ICAJCWkr
KzsKPiAgCX0KPiAtCWlmICh2Z2V0KGR2cC0+dl9tb3VudCwgaW5vZGVfY291bnQrKywgJnZwKSkg
ewo+ICsJaWYgKHZmc2NvcmVfdmdldChkdnAtPnZfbW91bnQsIGlub2RlX2NvdW50KyssICZ2cCkp
IHsKPiAgCQkvKiBmb3VuZCBpbiBjYWNoZSAqLwo+ICAJCSp2cHAgPSB2cDsKPiAgCQlyZXR1cm4g
MDsKPiBAQCAtMTU3LDYgKzE2MCwxMCBAQCBkZXZmc19sb29rdXAoc3RydWN0IHZub2RlICpkdnAs
IGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAgCWlmICghdnApCj4gIAkJcmV0dXJu
IEVOT01FTTsKPiAgCXZwLT52X3R5cGUgPSAoaW5mby5mbGFncyAmIERfQ0hSKSA/IFZDSFIgOiBW
QkxLOwo+ICsJLyogdmZzY29yZV92Z2V0IGRvZXMgbm90IGluaXRpYWxpemUgdl9mbGFncyBhbmQg
dGhpcyBtYXkgY2F1c2UKPiArCSAqIGRldmZzX29wZW4gdG8gZmFpbCBhdCB0aGUgdnAtPnZfZmxh
Z3MgJiBWUFJPVERFViBjaGVjawo+ICsJICovCj4gKwl2cC0+dl9mbGFncyA9IDA7Cj4gIAlpZiAo
aW5mby5mbGFncyAmIERfVFRZKQo+ICAJCXZwLT52X2ZsYWdzIHw9IFZJU1RUWTsKPiAgCj4gQEAg
LTE3MSwxMiArMTc4LDEyIEBAIGRldmZzX2xvb2t1cChzdHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAq
bmFtZSwgc3RydWN0IHZub2RlICoqdnBwKQo+ICAgKiBAdnA6IHZub2RlIG9mIHRoZSBkaXJlY3Rv
cnkuCj4gICAqLwo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2
cCwgc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgZGlyZW50ICpkaXIpCj4gK2RldmZzX3JlYWRkaXIo
c3RydWN0IHZub2RlICp2cCBfX3VudXNlZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVj
dCBkaXJlbnQgKmRpcikKPiAgewo+ICAJc3RydWN0IGRldmluZm8gaW5mbzsKPiAgCWludCBlcnJv
ciwgaTsKPiAgCj4gLQlEUFJJTlRGKCgiZGV2ZnNfcmVhZGRpciBvZmZzZXQ9JWRcbiIsIGZwLT5m
X29mZnNldCkpOwo+ICsJdWtfcHJfZGVidWcoImRldmZzX3JlYWRkaXIgb2Zmc2V0PSVsaVxuIiwg
ZnAtPmZfb2Zmc2V0KTsKPiAgCj4gIAlpID0gMDsKPiAgCWVycm9yID0gMDsKPiBAQCAtMTk2LDIz
ICsyMDMsMTggQEAgZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgZmlsZSAq
ZnAsIHN0cnVjdCBkaXJlbnQgKmRpcikKPiAgCWRpci0+ZF9maWxlbm8gPSBmcC0+Zl9vZmZzZXQ7
Cj4gIC8vCWRpci0+ZF9uYW1sZW4gPSBzdHJsZW4oZGlyLT5kX25hbWUpOwo+ICAKPiAtCURQUklO
VEYoKCJkZXZmc19yZWFkZGlyOiAlc1xuIiwgZGlyLT5kX25hbWUpKTsKPiArCXVrX3ByX2RlYnVn
KCJkZXZmc19yZWFkZGlyOiAlc1xuIiwgZGlyLT5kX25hbWUpOwo+ICAJZnAtPmZfb2Zmc2V0Kys7
Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IC1kZXZmc191bm1vdW50KHN0
cnVjdCBtb3VudCAqbXAsIGludCBmbGFncykKPiArZGV2ZnNfdW5tb3VudChzdHJ1Y3QgbW91bnQg
Km1wLCBpbnQgZmxhZ3MgX191bnVzZWQpCj4gIHsKPiAtCXJlbGVhc2VfbXBfZGVudHJpZXMobXAp
Owo+ICsJdmZzY29yZV9yZWxlYXNlX21wX2RlbnRyaWVzKG1wKTsKPiAgCXJldHVybiAwOwo+ICB9
Cj4gIAo+IC1pbnQKPiAtZGV2ZnNfaW5pdCh2b2lkKQo+IC17Cj4gLQlyZXR1cm4gMDsKPiAtfQo+
ICAKPiAgc3RhdGljIGludAo+ICBkZXZmc19nZXRhdHRyKHN0cnVjdCB2bm9kZSAqdm5vZGUsIHN0
cnVjdCB2YXR0ciAqYXR0cikKPiBAQCAtMjIyLDI1ICsyMjQsMzcgQEAgZGV2ZnNfZ2V0YXR0cihz
dHJ1Y3Qgdm5vZGUgKnZub2RlLCBzdHJ1Y3QgdmF0dHIgKmF0dHIpCj4gIAlyZXR1cm4gMDsKPiAg
fQo+ICAKPiAtI2RlZmluZSBkZXZmc19tb3VudAkoKHZmc29wX21vdW50X3QpdmZzX251bGxvcCkK
PiAtI2RlZmluZSBkZXZmc19zeW5jCSgodmZzb3Bfc3luY190KXZmc19udWxsb3ApCj4gLSNkZWZp
bmUgZGV2ZnNfdmdldAkoKHZmc29wX3ZnZXRfdCl2ZnNfbnVsbG9wKQo+IC0jZGVmaW5lIGRldmZz
X3N0YXRmcwkoKHZmc29wX3N0YXRmc190KXZmc19udWxsb3ApCj4gK2ludAo+ICt2b3BfZWludmFs
KHZvaWQpCj4gK3sKPiArCXJldHVybiBFSU5WQUw7Cj4gK30KPiArCj4gK2ludAo+ICt2b3BfZXBl
cm0odm9pZCkKPiArewo+ICsJcmV0dXJuIEVQRVJNOwo+ICt9Cj4gKwo+ICsjZGVmaW5lIGRldmZz
X21vdW50CSgodmZzb3BfbW91bnRfdCl2ZnNjb3JlX251bGxvcCkKPiArI2RlZmluZSBkZXZmc19z
eW5jCSgodmZzb3Bfc3luY190KXZmc2NvcmVfbnVsbG9wKQo+ICsjZGVmaW5lIGRldmZzX3ZnZXQJ
KCh2ZnNvcF92Z2V0X3QpdmZzY29yZV9udWxsb3ApCj4gKyNkZWZpbmUgZGV2ZnNfc3RhdGZzCSgo
dmZzb3Bfc3RhdGZzX3QpdmZzY29yZV9udWxsb3ApCj4gIAo+IC0jZGVmaW5lIGRldmZzX3NlZWsJ
KCh2bm9wX3NlZWtfdCl2b3BfbnVsbG9wKQo+IC0jZGVmaW5lIGRldmZzX2ZzeW5jCSgodm5vcF9m
c3luY190KXZvcF9udWxsb3ApCj4gKyNkZWZpbmUgZGV2ZnNfc2VlawkoKHZub3Bfc2Vla190KXZm
c2NvcmVfdm9wX251bGxvcCkKPiArI2RlZmluZSBkZXZmc19mc3luYwkoKHZub3BfZnN5bmNfdCl2
ZnNjb3JlX3ZvcF9udWxsb3ApCj4gICNkZWZpbmUgZGV2ZnNfY3JlYXRlCSgodm5vcF9jcmVhdGVf
dCl2b3BfZWludmFsKQo+ICAjZGVmaW5lIGRldmZzX3JlbW92ZQkoKHZub3BfcmVtb3ZlX3Qpdm9w
X2VpbnZhbCkKPiAgI2RlZmluZSBkZXZmc19yZW5hbWUJKCh2bm9wX3JlbmFtZV90KXZvcF9laW52
YWwpCj4gICNkZWZpbmUgZGV2ZnNfbWtkaXIJKCh2bm9wX21rZGlyX3Qpdm9wX2VpbnZhbCkKPiAg
I2RlZmluZSBkZXZmc19ybWRpcgkoKHZub3Bfcm1kaXJfdCl2b3BfZWludmFsKQo+ICAjZGVmaW5l
IGRldmZzX3NldGF0dHIJKCh2bm9wX3NldGF0dHJfdCl2b3BfZXBlcm0pCj4gLSNkZWZpbmUgZGV2
ZnNfaW5hY3RpdmUJKCh2bm9wX2luYWN0aXZlX3Qpdm9wX251bGxvcCkKPiAtI2RlZmluZSBkZXZm
c190cnVuY2F0ZQkoKHZub3BfdHJ1bmNhdGVfdCl2b3BfbnVsbG9wKQo+ICsjZGVmaW5lIGRldmZz
X2luYWN0aXZlCSgodm5vcF9pbmFjdGl2ZV90KXZmc2NvcmVfdm9wX251bGxvcCkKPiArI2RlZmlu
ZSBkZXZmc190cnVuY2F0ZQkoKHZub3BfdHJ1bmNhdGVfdCl2ZnNjb3JlX3ZvcF9udWxsb3ApCj4g
ICNkZWZpbmUgZGV2ZnNfbGluawkoKHZub3BfbGlua190KXZvcF9lcGVybSkKPiAtI2RlZmluZSBk
ZXZmc19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZvcF9udWxsb3ApCj4gLSNkZWZpbmUg
ZGV2ZnNfcmVhZGxpbmsJKCh2bm9wX3JlYWRsaW5rX3Qpdm9wX251bGxvcCkKPiAtI2RlZmluZSBk
ZXZmc19zeW1saW5rCSgodm5vcF9zeW1saW5rX3Qpdm9wX251bGxvcCkKPiArI2RlZmluZSBkZXZm
c19mYWxsb2NhdGUgKCh2bm9wX2ZhbGxvY2F0ZV90KXZmc2NvcmVfdm9wX251bGxvcCkKPiArI2Rl
ZmluZSBkZXZmc19yZWFkbGluawkoKHZub3BfcmVhZGxpbmtfdCl2ZnNjb3JlX3ZvcF9udWxsb3Ap
Cj4gKyNkZWZpbmUgZGV2ZnNfc3ltbGluawkoKHZub3Bfc3ltbGlua190KXZmc2NvcmVfdm9wX251
bGxvcCkKPiAgCj4gIC8qCj4gICAqIHZub2RlIG9wZXJhdGlvbnMKPiBAQCAtMjY1LDcgKzI3OSw3
IEBAIHN0cnVjdCB2bm9wcyBkZXZmc192bm9wcyA9IHsKPiAgCWRldmZzX2luYWN0aXZlLAkJLyog
aW5hY3RpdmUgKi8KPiAgCWRldmZzX3RydW5jYXRlLAkJLyogdHJ1bmNhdGUgKi8KPiAgCWRldmZz
X2xpbmssCQkvKiBsaW5rICovCj4gLQkodm5vcF9jYWNoZV90KSBudWxscHRyLCAvKiBhcmMgKi8K
PiArCSh2bm9wX2NhY2hlX3QpIE5VTEwsIC8qIGFyYyAqLwo+ICAJZGV2ZnNfZmFsbG9jYXRlLAkv
KiBmYWxsb2NhdGUgKi8KPiAgCWRldmZzX3JlYWRsaW5rLAkJLyogcmVhZCBsaW5rICovCj4gIAlk
ZXZmc19zeW1saW5rLAkJLyogc3ltYm9saWMgbGluayAqLwo+IEBAIC0yODIsMyArMjk2LDM2IEBA
IHN0cnVjdCB2ZnNvcHMgZGV2ZnNfdmZzb3BzID0gewo+ICAJZGV2ZnNfc3RhdGZzLAkJLyogc3Rh
dGZzICovCj4gIAkmZGV2ZnNfdm5vcHMsCQkvKiB2bm9wcyAqLwo+ICB9Owo+ICsKPiArc3RhdGlj
IHN0cnVjdCB2ZnNjb3JlX2ZzX3R5cGUgZnNfZGV2ZnMgPSB7Cj4gKyAgICAudnNfbmFtZSA9ICJk
ZXZmcyIsCj4gKyAgICAudnNfaW5pdCA9IE5VTEwsCj4gKyAgICAudnNfb3AgPSAmZGV2ZnNfdmZz
b3BzLAo+ICt9Owo+ICsKPiArVUtfRlNfUkVHSVNURVIoZnNfZGV2ZnMpOwo+ICsKPiArX19jb25z
dHJ1Y3Rvcl9wcmlvKDEwMSkgc3RhdGljIHZvaWQgZGV2ZnNfaW5pdCh2b2lkKQo+ICt7Cj4gKyNp
ZmRlZiBDT05GSUdfTElCREVWRlNfVVNFX1JBTUZTCj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9
IG1vdW50KCIiLCAiLyIsICJyYW1mcyIsIDAsIE5VTEwpOwo+ICsJaWYgKHJldCAhPSAwKSB7Cj4g
KwkJdWtfcHJfZGVidWcoIkZhaWxlZCB0byBtb3VudCAvIGluICVzXG4iLCBfX2Z1bmNfXyk7Cj4g
KwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCXJldCA9ICBta2RpcigiL2RldiIsIFNfSVJXWFUpOwo+
ICsJaWYgKHJldCAhPSAwKSB7Cj4gKwkJdWtfcHJfZGVidWcoIkZhaWxlZCB0byBta2RpciAvZGV2
IGluICVzXG4iLCBfX2Z1bmNfXyk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCXJldCA9IG1v
dW50KCIiLCAiL2RldiIsICJkZXZmcyIsIDAsIE5VTEwpOwo+ICsJaWYgKHJldCAhPSAwKSB7Cj4g
KwkJdWtfcHJfZGVidWcoIkZhaWxlZCB0byBtb3VudCAvZGV2IGFzIGRldmZzIGluICVzXG4iLCBf
X2Z1bmNfXyk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsjZW5kaWYKPiArfQo+IGRpZmYgLS1naXQg
YS9saWIvZGV2ZnMvZGV2aWNlLmMgYi9saWIvZGV2ZnMvZGV2aWNlLmMKPiBpbmRleCBhMGNkOTc2
OC4uNjkzYTVmOWQgMTAwNjQ0Cj4gLS0tIGEvbGliL2RldmZzL2RldmljZS5jCj4gKysrIGIvbGli
L2RldmZzL2RldmljZS5jCj4gQEAgLTQ1LDIxICs0NSwxNiBAQAo+ICAjaW5jbHVkZSA8c3RkaW8u
aD4KPiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAtI2luY2x1
ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4gICNpbmNsdWRlIDxzdHJp
bmcuaD4KPiAgCj4gLSNpbmNsdWRlIDxvc3YvcHJleC5oPgo+IC0jaW5jbHVkZSA8b3N2L211dGV4
Lmg+Cj4gLSNpbmNsdWRlIDxvc3YvZGV2aWNlLmg+Cj4gLSNpbmNsdWRlIDxvc3YvZGVidWcuaD4K
PiAtI2luY2x1ZGUgPG9zdi9idWYuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvcHJleC5oPgo+ICsj
aW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICsjaW5jbHVkZSA8dWsvbXV0ZXguaD4KPiAgCj4g
LSNpbmNsdWRlIDxnZW9tL2dlb21fZGlzay5oPgo+IC0KPiAtbXV0ZXggc2NoZWRfbXV0ZXg7Cj4g
LSNkZWZpbmUgc2NoZWRfbG9jaygpCXNjaGVkX211dGV4LmxvY2soKQo+IC0jZGVmaW5lIHNjaGVk
X3VubG9jaygpCXNjaGVkX211dGV4LnVubG9jaygpCj4gKyNpbmNsdWRlIDxkZXZmcy9kZXZpY2Uu
aD4KPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXggZGV2ZnNfbG9jayA9IFVLX01VVEVYX0lO
SVRJQUxJWkVSKGRldmZzX2xvY2spOwo+ICAKPiAgLyogbGlzdCBoZWFkIG9mIHRoZSBkZXZpY2Vz
ICovCj4gIHN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfbGlzdCA9IE5VTEw7Cj4gQEAgLTky
LDg1ICs4NywzMSBAQCBzdHJ1Y3QgcGFydGl0aW9uX3RhYmxlX2VudHJ5IHsKPiAgCXVpbnQzMl90
IHRvdGFsX3NlY3RvcnM7Cj4gIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cj4gIAo+IC0vKgo+
IC0gKiByZWFkX3BhcnRpdGlvbl90YWJsZSAtIGdpdmVuIGEgZGV2aWNlIEBkZXYsIGNyZWF0ZSBv
bmUgc3ViZGV2aWNlIHBlciBwYXJ0aXRpb24KPiAtICogZm91bmQgaW4gdGhhdCBkZXZpY2UuCj4g
LSAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGEgcGFydGl0aW9uIHRhYmxlIGZyb20g
dGhlIGNhbm9uaWNhbCBsb2NhdGlvbiBvZiB0aGUKPiAtICogZGV2aWNlIHBvaW50ZWQgYnkgQGRl
di4gRm9yIGVhY2ggcGFydGl0aW9uIGZvdW5kLCBhIG5ldyBkZXZpY2Ugd2lsbCBiZQo+IC0gKiBj
cmVhdGVkLiBUaGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugd2lsbCBoYXZlIG1vc3Qgb2YgaXRzIGRh
dGEgY29waWVkIGZyb20KPiAtICogQGRldiwgZXhjZXB0IGZvciBpdHMgbmFtZSwgb2Zmc2V0IGFu
ZCBzaXplLgo+IC0gKi8KPiAtdm9pZCByZWFkX3BhcnRpdGlvbl90YWJsZShzdHJ1Y3QgZGV2aWNl
ICpkZXYpCj4gLXsKPiAtCXN0cnVjdCBidWYgKmJwOwo+IC0JdW5zaWduZWQgbG9uZyBvZmZzZXQ7
Cj4gLQlpbnQgaW5kZXg7Cj4gLQo+IC0JaWYgKGJyZWFkKGRldiwgMCwgJmJwKSAhPSAwKSB7Cj4g
LQkJZGVidWdmKCJyZWFkX3BhcnRpdGlvbl90YWJsZSBmYWlsZWQgZm9yICVzXG4iLCBkZXYtPm5h
bWUpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gLQlzY2hlZF9sb2NrKCk7Cj4gLQkvLyBBIHJl
YWwgcGFydGl0aW9uIHRhYmxlIChNQlIpIGVuZHMgaW4gdGhlIHR3byBieXRlcyAweDU1LCAweEFB
IChzZWUKPiAtCS8vIGFyY2gveDY0L2Jvb3QxNi5TIG9uIHdoZXJlIHdlIHB1dCB0aG9zZSBvbiB0
aGUgT1N2IGltYWdlKS4gSWYgd2UKPiAtCS8vIGRvbid0IGZpbmQgdGhvc2UsIHRoaXMgaXMgYW4g
dW5wYXJ0aXRpb25lZCBkaXNrLgo+IC0JaWYgKCgodW5zaWduZWQgY2hhciopYnAtPmJfZGF0YSlb
NTEwXSA9PSAweDU1ICYmCj4gLQkgICAgKCh1bnNpZ25lZCBjaGFyKilicC0+Yl9kYXRhKVs1MTFd
ID09IDB4QUEpCj4gLQlmb3IgKG9mZnNldCA9IDB4MWJlLCBpbmRleCA9IDA7IG9mZnNldCA8IDB4
MWZlOyBvZmZzZXQgKz0gMHgxMCwgaW5kZXgrKykgewo+IC0JCWNoYXIgZGV2X25hbWVbTUFYREVW
TkFNRV07Cj4gLQkJc3RydWN0IGRldmljZSAqbmV3X2RldjsKPiAtCj4gLQkJYXV0byogZW50cnkg
PSBzdGF0aWNfY2FzdDxzdHJ1Y3QgcGFydGl0aW9uX3RhYmxlX2VudHJ5Kj4oYnAtPmJfZGF0YSAr
IG9mZnNldCk7Cj4gLQo+IC0JCWlmIChlbnRyeS0+c3lzdGVtX2lkID09IDApIHsKPiAtCQkJY29u
dGludWU7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoZW50cnktPnN0YXJ0aW5nX3NlY3RvciA9PSAwKSB7
Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCj4gLQkJc25wcmludGYoZGV2X25hbWUsIE1BWERF
Vk5BTUUsICIlcy4lZCIsIGRldi0+bmFtZSwgaW5kZXgpOwo+IC0JCW5ld19kZXYgPSBkZXZpY2Vf
Y3JlYXRlKGRldi0+ZHJpdmVyLCBkZXZfbmFtZSwgZGV2LT5mbGFncyk7Cj4gLQkJZnJlZShuZXdf
ZGV2LT5wcml2YXRlX2RhdGEpOwo+IC0KPiAtCQluZXdfZGV2LT5vZmZzZXQgPSAob2ZmX3QpZW50
cnktPnJlbGFfc2VjdG9yIDw8IDk7Cj4gLQkJbmV3X2Rldi0+c2l6ZSA9IChvZmZfdCllbnRyeS0+
dG90YWxfc2VjdG9ycyA8PCA5Owo+IC0JCW5ld19kZXYtPm1heF9pb19zaXplID0gZGV2LT5tYXhf
aW9fc2l6ZTsKPiAtCQluZXdfZGV2LT5wcml2YXRlX2RhdGEgPSBkZXYtPnByaXZhdGVfZGF0YTsK
PiAtCQlkZXZpY2Vfc2V0X3NvZnRjKG5ld19kZXYsIGRldmljZV9nZXRfc29mdGMoZGV2KSk7Cj4g
LQl9Cj4gLQo+IC0Jc2NoZWRfdW5sb2NrKCk7Cj4gLQlicmVsc2UoYnApOwo+IC19Cj4gIAo+ICB2
b2lkIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUs
IGludCBmbGFncykKPiAgewo+ICAJc2l6ZV90IGxlbjsKPiAgCXZvaWQgKnByaXYgPSBOVUxMOwo+
ICAKPiAtCWFzc2VydChkZXYtPmRyaXZlciAhPSBOVUxMKTsKPiArCVVLX0FTU0VSVChkZXYtPmRy
aXZlciAhPSBOVUxMKTsKPiAgCj4gIAkvKiBDaGVjayB0aGUgbGVuZ3RoIG9mIG5hbWUuICovCj4g
IAlsZW4gPSBzdHJubGVuKG5hbWUsIE1BWERFVk5BTUUpOwo+ICAJaWYgKGxlbiA9PSAwIHx8IGxl
biA+PSBNQVhERVZOQU1FKQo+ICAJCXJldHVybjsKPiAgCj4gLQlzY2hlZF9sb2NrKCk7Cj4gKwl1
a19tdXRleF9sb2NrKCZkZXZmc19sb2NrKTsKPiAgCj4gIAkvKiBDaGVjayBpZiBzcGVjaWZpZWQg
bmFtZSBpcyBhbHJlYWR5IHVzZWQuICovCj4gIAlpZiAoZGV2aWNlX2xvb2t1cChuYW1lKSAhPSBO
VUxMKQo+IC0JCXN5c19wYW5pYygiZHVwbGljYXRlIGRldmljZSIpOwo+ICsJCVVLX0NSQVNIKCJk
dXBsaWNhdGUgZGV2aWNlIik7Cj4gIAo+ICAJLyoKPiAgCSAqIEFsbG9jYXRlIGEgZGV2aWNlIGFu
ZCBkZXZpY2UgcHJpdmF0ZSBkYXRhLgo+ICAJICovCj4gIAlpZiAoZGV2LT5kcml2ZXItPmRldnN6
ICE9IDApIHsKPiAgCQlpZiAoKHByaXYgPSBtYWxsb2MoZGV2LT5kcml2ZXItPmRldnN6KSkgPT0g
TlVMTCkKPiAtCQkJc3lzX3BhbmljKCJkZXZzeiIpOwo+ICsJCQlVS19DUkFTSCgiZGV2c3oiKTsK
PiAgCQltZW1zZXQocHJpdiwgMCwgZGV2LT5kcml2ZXItPmRldnN6KTsKPiAgCX0KPiAgCj4gQEAg
LTE4NCw3ICsxMjUsNyBAQCB2b2lkIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYs
IGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncykKPiAgCWRldi0+bWF4X2lvX3NpemUgPSBVSU5U
X01BWDsKPiAgCWRldmljZV9saXN0ID0gZGV2Owo+ICAKPiAtCXNjaGVkX3VubG9jaygpOwo+ICsJ
dWtfbXV0ZXhfdW5sb2NrKCZkZXZmc19sb2NrKTsKPiAgfQo+ICAKPiAgCj4gQEAgLTIwMSw3ICsx
NDIsNyBAQCBkZXZpY2VfY3JlYXRlKHN0cnVjdCBkcml2ZXIgKmRydiwgY29uc3QgY2hhciAqbmFt
ZSwgaW50IGZsYWdzKQo+ICAJc3RydWN0IGRldmljZSAqZGV2Owo+ICAJc2l6ZV90IGxlbjsKPiAg
Cj4gLQlhc3NlcnQoZHJ2ICE9IE5VTEwpOwo+ICsJVUtfQVNTRVJUKGRydiAhPSBOVUxMKTsKPiAg
Cj4gIAkvKiBDaGVjayB0aGUgbGVuZ3RoIG9mIG5hbWUuICovCj4gIAlsZW4gPSBzdHJubGVuKG5h
bWUsIE1BWERFVk5BTUUpOwo+IEBAIC0yMTEsMjcgKzE1MiwxNCBAQCBkZXZpY2VfY3JlYXRlKHN0
cnVjdCBkcml2ZXIgKmRydiwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKQo+ICAJLyoKPiAg
CSAqIEFsbG9jYXRlIGEgZGV2aWNlIHN0cnVjdHVyZS4KPiAgCSAqLwo+IC0JaWYgKChkZXYgPSBu
ZXcgZGV2aWNlKSA9PSBOVUxMKQo+IC0JCXN5c19wYW5pYygiZGV2aWNlX2NyZWF0ZSIpOwo+ICsJ
aWYgKChkZXYgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBkZXZpY2UpKSkgPT0gTlVMTCkKPiArCQlV
S19DUkFTSCgiZGV2aWNlX2NyZWF0ZSIpOwo+ICAKPiAtICAgIGRldi0+ZHJpdmVyID0gZHJ2Owo+
IC0gICAgZGV2aWNlX3JlZ2lzdGVyKGRldiwgbmFtZSwgZmxhZ3MpOwo+ICsJZGV2LT5kcml2ZXIg
PSBkcnY7Cj4gKwlkZXZpY2VfcmVnaXN0ZXIoZGV2LCBuYW1lLCBmbGFncyk7Cj4gIAlyZXR1cm4g
ZGV2Owo+ICB9Cj4gIAo+IC0jaWYgMAo+IC0vKgo+IC0gKiBSZXR1cm4gZGV2aWNlJ3MgcHJpdmF0
ZSBkYXRhLgo+IC0gKi8KPiAtc3RhdGljIHZvaWQgKgo+IC1kZXZpY2VfcHJpdmF0ZShzdHJ1Y3Qg
ZGV2aWNlICpkZXYpCj4gLXsKPiAtCWFzc2VydChkZXYgIT0gTlVMTCk7Cj4gLQlhc3NlcnQoZGV2
LT5wcml2YXRlX2RhdGEgIT0gTlVMTCk7Cj4gLQo+IC0JcmV0dXJuIGRldi0+cHJpdmF0ZV9kYXRh
Owo+IC19Cj4gLSNlbmRpZgo+ICAKPiAgLyoKPiAgICogUmV0dXJuIHRydWUgaWYgc3BlY2lmaWVk
IGRldmljZSBpcyB2YWxpZC4KPiBAQCAtMjU3LDE2ICsxODUsMzMgQEAgZGV2aWNlX3ZhbGlkKHN0
cnVjdCBkZXZpY2UgKmRldikKPiAgICogSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb24g
YW4gYWN0aXZlIGRldmljZS4KPiAgICovCj4gIHN0YXRpYyBpbnQKPiAtZGV2aWNlX3JlZmVyZW5j
ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK2RldmljZV9yZWZlcmVuY2VfbG9ja2VkKHN0cnVjdCBk
ZXZpY2UgKmRldikKPiAgewo+ICsJVUtfQVNTRVJUKHVrX211dGV4X2lzX2xvY2tlZCgmZGV2ZnNf
bG9jaykpOwo+ICAKPiAtCXNjaGVkX2xvY2soKTsKPiAgCWlmICghZGV2aWNlX3ZhbGlkKGRldikp
IHsKPiAtCQlzY2hlZF91bmxvY2soKTsKPiArCQl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2sp
Owo+ICAJCXJldHVybiBFTk9ERVY7Cj4gIAl9Cj4gIAlkZXYtPnJlZmNudCsrOwo+IC0Jc2NoZWRf
dW5sb2NrKCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogSW5jcmVtZW50IHRo
ZSByZWZlcmVuY2UgY291bnQgb24gYW4gYWN0aXZlIGRldmljZS4KPiArICovCj4gK3N0YXRpYyBp
bnQKPiArZGV2aWNlX3JlZmVyZW5jZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCWludCBy
ZXQ7Cj4gKwo+ICsJdWtfbXV0ZXhfbG9jaygmZGV2ZnNfbG9jayk7Cj4gKwlyZXQgPSBkZXZpY2Vf
cmVmZXJlbmNlX2xvY2tlZChkZXYpOwo+ICsJaWYgKCFyZXQpIHsKPiArCQl1a19tdXRleF91bmxv
Y2soJmRldmZzX2xvY2spOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwl1a19tdXRleF91bmxv
Y2soJmRldmZzX2xvY2spOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTI3OSw5ICsyMjQs
MTAgQEAgZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3Qg
ZGV2aWNlICoqdG1wOwo+ICAKPiAtCXNjaGVkX2xvY2soKTsKPiArCXVrX211dGV4X2xvY2soJmRl
dmZzX2xvY2spOwo+ICsKPiAgCWlmICgtLWRldi0+cmVmY250ID4gMCkgewo+IC0JCXNjaGVkX3Vu
bG9jaygpOwo+ICsJCXVrX211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7Cj4gIAkJcmV0dXJuOwo+
ICAJfQo+ICAJLyoKPiBAQCAtMjkzLDIyICsyMzksMzYgQEAgZGV2aWNlX3JlbGVhc2Uoc3RydWN0
IGRldmljZSAqZGV2KQo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAl9Cj4gLQlkZWxldGUgZGV2Owo+
IC0Jc2NoZWRfdW5sb2NrKCk7Cj4gKwlmcmVlKGRldik7Cj4gKwl1a19tdXRleF91bmxvY2soJmRl
dmZzX2xvY2spOwo+ICt9Cj4gKwo+ICtpbnQKPiArZGV2aWNlX2Rlc3Ryb3lfbG9ja2VkKHN0cnVj
dCBkZXZpY2UgKmRldikKPiArewo+ICsKPiArCVVLX0FTU0VSVCh1a19tdXRleF9pc19sb2NrZWQo
JmRldmZzX2xvY2spKTsKPiArCWlmICghZGV2aWNlX3ZhbGlkKGRldikpIHsKPiArCQl1a19tdXRl
eF91bmxvY2soJmRldmZzX2xvY2spOwo+ICsJCXJldHVybiBFTk9ERVY7Cj4gKwl9Cj4gKwlkZXYt
PmFjdGl2ZSA9IDA7Cj4gKwlkZXZpY2VfcmVsZWFzZShkZXYpOwo+ICsJcmV0dXJuIDA7Cj4gIH0K
PiAgCj4gIGludAo+ICBkZXZpY2VfZGVzdHJveShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAg
Cj4gLQlzY2hlZF9sb2NrKCk7Cj4gKwl1a19tdXRleF9sb2NrKCZkZXZmc19sb2NrKTsKPiAgCWlm
ICghZGV2aWNlX3ZhbGlkKGRldikpIHsKPiAtCQlzY2hlZF91bmxvY2soKTsKPiArCQl1a19tdXRl
eF91bmxvY2soJmRldmZzX2xvY2spOwo+ICAJCXJldHVybiBFTk9ERVY7Cj4gIAl9Cj4gIAlkZXYt
PmFjdGl2ZSA9IDA7Cj4gKwl1a19tdXRleF91bmxvY2soJmRldmZzX2xvY2spOwo+ICAJZGV2aWNl
X3JlbGVhc2UoZGV2KTsKPiAtCXNjaGVkX3VubG9jaygpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg
Cj4gQEAgLTMyOSwyMCArMjg5LDIxIEBAIGRldmljZV9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGlu
dCBtb2RlLCBzdHJ1Y3QgZGV2aWNlICoqZGV2cCkKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAg
CWludCBlcnJvcjsKPiAgCj4gLQlzY2hlZF9sb2NrKCk7Cj4gKwl1a19tdXRleF9sb2NrKCZkZXZm
c19sb2NrKTsKPiAgCWlmICgoZGV2ID0gZGV2aWNlX2xvb2t1cChuYW1lKSkgPT0gTlVMTCkgewo+
IC0JCXNjaGVkX3VubG9jaygpOwo+ICsJCXVrX211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7Cj4g
IAkJcmV0dXJuIEVOWElPOwo+ICAJfQo+IC0JZXJyb3IgPSBkZXZpY2VfcmVmZXJlbmNlKGRldik7
Cj4gKwo+ICsJZXJyb3IgPSBkZXZpY2VfcmVmZXJlbmNlX2xvY2tlZChkZXYpOwo+ICAJaWYgKGVy
cm9yKSB7Cj4gLQkJc2NoZWRfdW5sb2NrKCk7Cj4gKwkJdWtfbXV0ZXhfdW5sb2NrKCZkZXZmc19s
b2NrKTsKPiAgCQlyZXR1cm4gZXJyb3I7Cj4gIAl9Cj4gLQlzY2hlZF91bmxvY2soKTsKPiArCXVr
X211dGV4X3VubG9jaygmZGV2ZnNfbG9jayk7Cj4gIAo+ICAJb3BzID0gZGV2LT5kcml2ZXItPmRl
dm9wczsKPiAtCWFzc2VydChvcHMtPm9wZW4gIT0gTlVMTCk7Cj4gKwlVS19BU1NFUlQob3BzLT5v
cGVuICE9IE5VTEwpOwo+ICAJZXJyb3IgPSAoKm9wcy0+b3BlbikoZGV2LCBtb2RlKTsKPiAgCSpk
ZXZwID0gZGV2Owo+ICAKPiBAQCAtMzY2LDcgKzMyNyw3IEBAIGRldmljZV9jbG9zZShzdHJ1Y3Qg
ZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuIGVycm9yOwo+ICAKPiAgCW9wcyA9IGRldi0+ZHJpdmVy
LT5kZXZvcHM7Cj4gLQlhc3NlcnQob3BzLT5jbG9zZSAhPSBOVUxMKTsKPiArCVVLX0FTU0VSVChv
cHMtPmNsb3NlICE9IE5VTEwpOwo+ICAJZXJyb3IgPSAoKm9wcy0+Y2xvc2UpKGRldik7Cj4gIAo+
ICAJZGV2aWNlX3JlbGVhc2UoZGV2KTsKPiBAQCAtMzgzLDcgKzM0NCw3IEBAIGRldmljZV9yZWFk
KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncykKPiAgCQly
ZXR1cm4gZXJyb3I7Cj4gIAo+ICAJb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsKPiAtCWFzc2Vy
dChvcHMtPnJlYWQgIT0gTlVMTCk7Cj4gKwlVS19BU1NFUlQob3BzLT5yZWFkICE9IE5VTEwpOwo+
ICAJZXJyb3IgPSAoKm9wcy0+cmVhZCkoZGV2LCB1aW8sIGlvZmxhZ3MpOwo+ICAKPiAgCWRldmlj
ZV9yZWxlYXNlKGRldik7Cj4gQEAgLTQwMCw3ICszNjEsNyBAQCBkZXZpY2Vfd3JpdGUoc3RydWN0
IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKQo+ICAJCXJldHVybiBl
cnJvcjsKPiAgCj4gIAlvcHMgPSBkZXYtPmRyaXZlci0+ZGV2b3BzOwo+IC0JYXNzZXJ0KG9wcy0+
d3JpdGUgIT0gTlVMTCk7Cj4gKwlVS19BU1NFUlQob3BzLT53cml0ZSAhPSBOVUxMKTsKPiAgCWVy
cm9yID0gKCpvcHMtPndyaXRlKShkZXYsIHVpbywgaW9mbGFncyk7Cj4gIAo+ICAJZGV2aWNlX3Jl
bGVhc2UoZGV2KTsKPiBAQCAtNDE1LDcgKzM3Niw3IEBAIGRldmljZV93cml0ZShzdHJ1Y3QgZGV2
aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpCj4gICAqIHBvaW50ZWQgYnkg
dGhlIGFyZyB2YWx1ZS4KPiAgICovCj4gIGludAo+IC1kZXZpY2VfaW9jdGwoc3RydWN0IGRldmlj
ZSAqZGV2LCB1X2xvbmcgY21kLCB2b2lkICphcmcpCj4gK2RldmljZV9pb2N0bChzdHJ1Y3QgZGV2
aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgY21kLCB2b2lkICphcmcpCj4gIHsKPiAgCXN0cnVjdCBk
ZXZvcHMgKm9wczsKPiAgCWludCBlcnJvcjsKPiBAQCAtNDI0LDkyICszODUsMjUgQEAgZGV2aWNl
X2lvY3RsKHN0cnVjdCBkZXZpY2UgKmRldiwgdV9sb25nIGNtZCwgdm9pZCAqYXJnKQo+ICAJCXJl
dHVybiBlcnJvcjsKPiAgCj4gIAlvcHMgPSBkZXYtPmRyaXZlci0+ZGV2b3BzOwo+IC0JYXNzZXJ0
KG9wcy0+aW9jdGwgIT0gTlVMTCk7Cj4gKwlVS19BU1NFUlQob3BzLT5pb2N0bCAhPSBOVUxMKTsK
PiAgCWVycm9yID0gKCpvcHMtPmlvY3RsKShkZXYsIGNtZCwgYXJnKTsKPiAgCj4gIAlkZXZpY2Vf
cmVsZWFzZShkZXYpOwo+ICAJcmV0dXJuIGVycm9yOwo+ICB9Cj4gIAo+IC0jaWYgMAo+IC0vKgo+
IC0gKiBEZXZpY2UgY29udHJvbCAtIGRldmN0bCBpcyBzaW1pbGFyIHRvIGlvY3RsLCBidXQgaXMg
aW52b2tlZCBmcm9tCj4gLSAqIG90aGVyIGRldmljZSBkcml2ZXIgcmF0aGVyIHRoYW4gZnJvbSB1
c2VyIGFwcGxpY2F0aW9uLgo+IC0gKi8KPiAtc3RhdGljIGludAo+IC1kZXZpY2VfY29udHJvbChz
dHJ1Y3QgZGV2aWNlICpkZXYsIHVfbG9uZyBjbWQsIHZvaWQgKmFyZykKPiAtewo+IC0Jc3RydWN0
IGRldm9wcyAqb3BzOwo+IC0JaW50IGVycm9yOwo+IC0KPiAtCWFzc2VydChkZXYgIT0gTlVMTCk7
Cj4gLQo+IC0Jc2NoZWRfbG9jaygpOwo+IC0Jb3BzID0gZGV2LT5kcml2ZXItPmRldm9wczsKPiAt
CWFzc2VydChvcHMtPmRldmN0bCAhPSBOVUxMKTsKPiAtCWVycm9yID0gKCpvcHMtPmRldmN0bCko
ZGV2LCBjbWQsIGFyZyk7Cj4gLQlzY2hlZF91bmxvY2soKTsKPiAtCXJldHVybiBlcnJvcjsKPiAt
fQo+IC0KPiAtLyoKPiAtICogZGV2aWNlX2Jyb2FkY2FzdCAtIGJyb2FkY2FzdCBkZXZjdGwgY29t
bWFuZCB0byBhbGwgZGV2aWNlIG9iamVjdHMuCj4gLSAqCj4gLSAqIElmICJmb3JjZSIgYXJndW1l
bnQgaXMgdHJ1ZSwgd2Ugd2lsbCBjb250aW51ZSBjb21tYW5kCj4gLSAqIG5vdGlmaWNhdGlvbiBl
dmVuIGlmIHNvbWUgZHJpdmVyIHJldHVybnMgYW4gZXJyb3IuIEluIHRoaXMKPiAtICogY2FzZSwg
dGhpcyByb3V0aW5lIHJldHVybnMgRUlPIGVycm9yIGlmIGF0IGxlYXN0IG9uZSBkcml2ZXIKPiAt
ICogcmV0dXJucyBhbiBlcnJvci4KPiAtICoKPiAtICogSWYgZm9yY2UgYXJndW1lbnQgaXMgZmFs
c2UsIGEga2VybmVsIHN0b3BzIHRoZSBjb21tYW5kIHByb2Nlc3NpbmcKPiAtICogd2hlbiBhdCBs
ZWFzdCBvbmUgZHJpdmVyIHJldHVybnMgYW4gZXJyb3IuIEluIHRoaXMgY2FzZSwKPiAtICogZGV2
aWNlX2Jyb2FkY2FzdCB3aWxsIHJldHVybiB0aGUgZXJyb3IgY29kZSB3aGljaCBpcyByZXR1cm5l
ZAo+IC0gKiBieSB0aGUgZHJpdmVyLgo+IC0gKi8KPiAtc3RhdGljIGludAo+IC1kZXZpY2VfYnJv
YWRjYXN0KHVfbG9uZyBjbWQsIHZvaWQgKmFyZywgaW50IGZvcmNlKQo+IC17Cj4gLQlzdHJ1Y3Qg
ZGV2aWNlICpkZXY7Cj4gLQlzdHJ1Y3QgZGV2b3BzICpvcHM7Cj4gLQlpbnQgZXJyb3IsIHJldHZh
bCA9IDA7Cj4gLQo+IC0Jc2NoZWRfbG9jaygpOwo+IC0KPiAtCWZvciAoZGV2ID0gZGV2aWNlX2xp
c3Q7IGRldiAhPSBOVUxMOyBkZXYgPSBkZXYtPm5leHQpIHsKPiAtCQkvKgo+IC0JCSAqIENhbGwg
ZHJpdmVyJ3MgZGV2Y3RsKCkgcm91dGluZS4KPiAtCQkgKi8KPiAtCQlvcHMgPSBkZXYtPmRyaXZl
ci0+ZGV2b3BzOwo+IC0JCWlmIChvcHMgPT0gTlVMTCkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0J
CWFzc2VydChvcHMtPmRldmN0bCAhPSBOVUxMKTsKPiAtCQllcnJvciA9ICgqb3BzLT5kZXZjdGwp
KGRldiwgY21kLCBhcmcpOwo+IC0JCWlmIChlcnJvcikgewo+IC0JCQlpZiAoZm9yY2UpCj4gLQkJ
CQlyZXR2YWwgPSBFSU87Cj4gLQkJCWVsc2Ugewo+IC0JCQkJcmV0dmFsID0gZXJyb3I7Cj4gLQkJ
CQlicmVhazsKPiAtCQkJfQo+IC0JCX0KPiAtCX0KPiAtCXNjaGVkX3VubG9jaygpOwo+IC0JcmV0
dXJuIHJldHZhbDsKPiAtfQo+IC0jZW5kaWYKPiAtCj4gIC8qCj4gICAqIFJldHVybiBkZXZpY2Ug
aW5mb3JtYXRpb24uCj4gICAqLwo+ICBpbnQKPiAgZGV2aWNlX2luZm8oc3RydWN0IGRldmluZm8g
KmluZm8pCj4gIHsKPiAtCXVfbG9uZyB0YXJnZXQgPSBpbmZvLT5jb29raWU7Cj4gLQl1X2xvbmcg
aSA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIHRhcmdldCA9IGluZm8tPmNvb2tpZTsKPiArCXVuc2ln
bmVkIGxvbmcgaSA9IDA7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gIAlpbnQgZXJyb3IgPSBF
U1JDSDsKPiAgCj4gLQlzY2hlZF9sb2NrKCk7Cj4gKwl1a19tdXRleF9sb2NrKCZkZXZmc19sb2Nr
KTsKPiAgCWZvciAoZGV2ID0gZGV2aWNlX2xpc3Q7IGRldiAhPSBOVUxMOyBkZXYgPSBkZXYtPm5l
eHQpIHsKPiAgCQlpZiAoaSsrID09IHRhcmdldCkgewo+ICAJCQlpbmZvLT5jb29raWUgPSBpOwo+
IEBAIC01MjAsNyArNDE0LDcgQEAgZGV2aWNlX2luZm8oc3RydWN0IGRldmluZm8gKmluZm8pCj4g
IAkJCWJyZWFrOwo+ICAJCX0KPiAgCX0KPiAtCXNjaGVkX3VubG9jaygpOwo+ICsJdWtfbXV0ZXhf
dW5sb2NrKCZkZXZmc19sb2NrKTsKPiAgCXJldHVybiBlcnJvcjsKPiAgfQo+ICAKPiBAQCAtNTM1
LDMgKzQyOSw0IEBAIG51bGxvcCh2b2lkKQo+ICB7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICsKPiBk
aWZmIC0tZ2l0IGEvbGliL2RldmZzL2V4cG9ydHN5bXMudWsgYi9saWIvZGV2ZnMvZXhwb3J0c3lt
cy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmU1ZWRkOTA1Cj4g
LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9kZXZmcy9leHBvcnRzeW1zLnVrCj4gQEAgLTAsMCAr
MSw2IEBACj4gK2RldmljZV9jcmVhdGUKPiArZGV2aWNlX29wZW4KPiArZGV2aWNlX2Nsb3NlCj4g
K2RldmljZV9yZWFkCj4gK2RldmljZV9pb2N0bAo+ICtkZXZpY2VfaW5mbwo+IGRpZmYgLS1naXQg
YS9saWIvZGV2ZnMvaW5jbHVkZS9kZXZmcy9kZXZpY2UuaCBiL2xpYi9kZXZmcy9pbmNsdWRlL2Rl
dmZzL2RldmljZS5oCj4gaW5kZXggMTZkMmU0NzAuLjE4M2Y0MThkIDEwMDY0NAo+IC0tLSBhL2xp
Yi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oCj4gKysrIGIvbGliL2RldmZzL2luY2x1ZGUv
ZGV2ZnMvZGV2aWNlLmgKPiBAQCAtMzAsMTIgKzMwLDkgQEAKPiAgI2lmbmRlZiBfREVWSUNFX0gK
PiAgI2RlZmluZSBfREVWSUNFX0gKPiAgCj4gLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KPiAgI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgo+ICAKPiAtI2luY2x1ZGUgPG9zdi91aW8uaD4KPiAtCj4gLV9f
QkVHSU5fREVDTFMKPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gIAo+ICAjZGVmaW5lIE1B
WERFVk5BTUUJMTIKPiAgI2RlZmluZSBET19SV01BU0sJMHgzCj4gQEAgLTQ3LDcgKzQ0LDcgQEAg
c3RydWN0IGRldmljZTsKPiAgICogRGV2aWNlIGluZm9ybWF0aW9uCj4gICAqLwo+ICBzdHJ1Y3Qg
ZGV2aW5mbyB7Cj4gLQl1X2xvbmcJCWNvb2tpZTsJCS8qIGluZGV4IGNvb2tpZSAqLwo+ICsJdW5z
aWduZWQgbG9uZwkJY29va2llOwkJLyogaW5kZXggY29va2llICovCj4gIAlzdHJ1Y3QgZGV2aWNl
CSppZDsJCS8qIGRldmljZSBpZCAqLwo+ICAJaW50CQlmbGFnczsJCS8qIGRldmljZSBjaGFyYWN0
ZXJpc3RpY3MgZmxhZ3MgKi8KPiAgCWNoYXIJCW5hbWVbTUFYREVWTkFNRV07IC8qIGRldmljZSBu
YW1lICovCj4gQEAgLTY1LDggKzYyLDggQEAgdHlwZWRlZiBpbnQgKCpkZXZvcF9vcGVuX3QpICAg
KHN0cnVjdCBkZXZpY2UgKiwgaW50KTsKPiAgdHlwZWRlZiBpbnQgKCpkZXZvcF9jbG9zZV90KSAg
KHN0cnVjdCBkZXZpY2UgKik7Cj4gIHR5cGVkZWYgaW50ICgqZGV2b3BfcmVhZF90KSAgIChzdHJ1
Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKPiAgdHlwZWRlZiBpbnQgKCpkZXZvcF93
cml0ZV90KSAgKHN0cnVjdCBkZXZpY2UgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwo+IC10eXBlZGVm
IGludCAoKmRldm9wX2lvY3RsX3QpICAoc3RydWN0IGRldmljZSAqLCB1X2xvbmcsIHZvaWQgKik7
Cj4gLXR5cGVkZWYgaW50ICgqZGV2b3BfZGV2Y3RsX3QpIChzdHJ1Y3QgZGV2aWNlICosIHVfbG9u
Zywgdm9pZCAqKTsKPiArdHlwZWRlZiBpbnQgKCpkZXZvcF9pb2N0bF90KSAgKHN0cnVjdCBkZXZp
Y2UgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPiArdHlwZWRlZiBpbnQgKCpkZXZvcF9kZXZj
dGxfdCkgKHN0cnVjdCBkZXZpY2UgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPiAgdHlwZWRl
ZiB2b2lkICgqZGV2b3Bfc3RyYXRlZ3lfdCkoc3RydWN0IGJpbyAqKTsKPiAgCj4gIC8qCj4gQEAg
LTE3Nyw3ICsxNzQsNyBAQCBkZXZpY2VfZ2V0X3NvZnRjKGRldmljZV90IGRldikKPiAgCXJldHVy
biBkZXYtPnNvZnRjOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHZvaWQgZGV2aWNlX3F1aWV0
KGRldmljZV90IGRldikKPiArc3RhdGljIGlubGluZSB2b2lkIGRldmljZV9xdWlldChkZXZpY2Vf
dCBkZXYgX191bnVzZWQpCj4gIHsKPiAgfQo+ICAKPiBAQCAtMTkxLDcgKzE4OCw3IEBAIGludAkg
ZGV2aWNlX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIHN0cnVjdCBkZXZpY2UgKiopOwo+ICBpbnQJ
IGRldmljZV9jbG9zZShzdHJ1Y3QgZGV2aWNlICopOwo+ICBpbnQJIGRldmljZV9yZWFkKHN0cnVj
dCBkZXZpY2UgKiwgc3RydWN0IHVpbyAqLCBpbnQpOwo+ICBpbnQJIGRldmljZV93cml0ZShzdHJ1
Y3QgZGV2aWNlICosIHN0cnVjdCB1aW8gKiwgaW50KTsKPiAtaW50CSBkZXZpY2VfaW9jdGwoc3Ry
dWN0IGRldmljZSAqLCB1X2xvbmcsIHZvaWQgKik7Cj4gK2ludAkgZGV2aWNlX2lvY3RsKHN0cnVj
dCBkZXZpY2UgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPiAgaW50CSBkZXZpY2VfaW5mbyhz
dHJ1Y3QgZGV2aW5mbyAqKTsKPiAgCj4gIGludAkgYmRldl9yZWFkKHN0cnVjdCBkZXZpY2UgKmRl
diwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncyk7Cj4gQEAgLTE5OSwxNSArMTk2LDExIEBA
IGludAkgYmRldl93cml0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50
IGlvZmxhZ3MpOwo+ICAKPiAgaW50CWVub2Rldih2b2lkKTsKPiAgaW50CW51bGxvcCh2b2lkKTsK
PiAtdm9pZCBtdWx0aXBsZXhfc3RyYXRlZ3koc3RydWN0IGJpbyAqKTsKPiAtCj4gLWludAlwaHlz
aW8oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2ZsYWdzKTsKPiAg
Cj4gIHN0cnVjdCBkZXZpY2UgKglkZXZpY2VfY3JlYXRlKHN0cnVjdCBkcml2ZXIgKmRydiwgY29u
c3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKTsKPiAgaW50IGRldmljZV9kZXN0cm95KHN0cnVjdCBk
ZXZpY2UgKmRldik7Cj4gK2ludCBkZXZpY2VfZGVzdHJveV9sb2NrZWQoc3RydWN0IGRldmljZSAq
ZGV2KTsKPiAgdm9pZCBkZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2aWNlLCBjb25z
dCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MpOwo+ICB2b2lkIHJlYWRfcGFydGl0aW9uX3RhYmxlKHN0
cnVjdCBkZXZpY2UgKmRldmljZSk7Cj4gIAo+IC1fX0VORF9ERUNMUwo+IC0KPiAgI2VuZGlmIC8q
ICFfREVWSUNFX0ggKi8KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 07 12:25:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 07 Jun 2019 12:25: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 1hZDvv-0002Bg-T8; Fri, 07 Jun 2019 12:25:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=YEtv=UG=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hZDvu-0002BZ-Lm
 for minios-devel@lists.xen.org; Fri, 07 Jun 2019 12:25:22 +0000
X-Inumbo-ID: 50c2e0c4-891f-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 50c2e0c4-891f-11e9-8980-bc764e045a96;
 Fri, 07 Jun 2019 12:25:21 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id t5so1731458wmh.3
 for <minios-devel@lists.xen.org>; Fri, 07 Jun 2019 05:25:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=Q+Rc+zcGd79zd2O32U1Myd4BAxHIIoeACnFEU8EC9ow=;
 b=BlPRvQEwiFpTaLWjJ8pmqS5+fHqUPlyWI5bS0ZOCM19ZoEdRYu7Sq40O85bs1aHHrT
 djqyEasHnFbEqyHMW6nHJCQmIzZviXf1seXQB/WmQIpe8lz6HN2ed6QPY2ckbSUZMEgj
 F56OK3LM63FsBRu14bHPDvZb7i+cWo6W0Uw7Z3EkZg9BAWVMTYjEFeKRzJxg2bThcOIB
 Z6cKXh2L1UsqNqCRKaj7NpH6/ymuGF3+IGglEWUmezNL5J1SkpSVAw8hDx+g2SzRiwwN
 oe328xpu+xrc+rwQlMigdzvVcpXJ0EOzvsPufacGgGVEI4/lB/YspDmd/jks2RiSY5qc
 DXew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=Q+Rc+zcGd79zd2O32U1Myd4BAxHIIoeACnFEU8EC9ow=;
 b=QCi4BOJgc2hquNGJYcuJyeo74WMTKnhEcpgTkluojTK31PfhFulGlgEObBomRi0Pak
 yAZvxjpE0w9F8Y2NZt1TxmNlby5wnRefSU1KpfEYvmnCkuWVw5ksWKzVrhOp5b0kkBs5
 vVOgEY2aa9ZDQvVrTSX5uvz7AsAPhnv7tHt5bhS4jBWl5xeeboqGa9YFgYq7ROGqIFe7
 lJ4H/dOX26sWUs73v043F08Nq6TXNNEevS1V8HNge5KGFikEF4NCAy0TgeoxJDrxjbEP
 B62fw3TW63CwL6PIT86By4mho9cvPVt/el0oKgfOsT+86cQ8b16kTAKLBT5EZlFJ3Fm+
 R0rQ==
X-Gm-Message-State: APjAAAWwPSVKD+dcjpKPYlP/k4DMXq29WVMEXvBpbIT9S7AIappshaU/
 mczIOGKCs9B8h5F60HNFuIwTvzGvI0k=
X-Google-Smtp-Source: APXvYqxVFNwNvEewIihd4lcwXD10/VP24nwqRAdNBlJI+B1iyTGYbMQYunbD8uCnH5gSlbbA7I0iRg==
X-Received: by 2002:a1c:21c4:: with SMTP id h187mr3603697wmh.27.1559910319927; 
 Fri, 07 Jun 2019 05:25:19 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id l7sm1538697wmh.20.2019.06.07.05.25.19
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 07 Jun 2019 05:25:19 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190607115809.24990-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190607115809.24990-5-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <d6cb5b9b-5f13-0285-745c-dfd497f06bca@gmail.com>
Date: Fri, 7 Jun 2019 15:25:18 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190607115809.24990-5-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v4 4/5] lib/devfs: Fix checkpath
 warnings
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhhbmtzLCBWbGFkIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5w
dWIucm8+CgpPbiA2LzcvMTkgMjo1OCBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdy
b3RlOgo+IEZyb206IFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSA8dmxhZF9hbmRyZWkuYmFk
b2l1QHN0dWQuYWNzLnVwYi5ybz4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRv
aXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIGxpYi9kZXZm
cy9kZXZmc192bm9wcy5jICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0t
LS0tLS0KPiAgbGliL2RldmZzL2RldmljZS5jICAgICAgICAgICAgICAgfCAgNCArKy0tCj4gIGxp
Yi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5oIHwgMjIgKysrKysrKysrKy0tLS0tLS0tLQo+
ICAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQo+IAo+
IGRpZmYgLS1naXQgYS9saWIvZGV2ZnMvZGV2ZnNfdm5vcHMuYyBiL2xpYi9kZXZmcy9kZXZmc192
bm9wcy5jCj4gaW5kZXggZWRkODAxYzguLjlhZjZhZGVkIDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZm
cy9kZXZmc192bm9wcy5jCj4gKysrIGIvbGliL2RldmZzL2RldmZzX3Zub3BzLmMKPiBAQCAtNzEs
MjEgKzcxLDIxIEBAIGRldmZzX29wZW4oc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCj4gIAlzdHJ1
Y3QgZGV2aWNlICpkZXY7Cj4gIAlpbnQgZXJyb3I7Cj4gIAo+IC0JdWtfcHJfZGVidWcoImRldmZz
X29wZW46IHBhdGg9JXNcbiIsIHBhdGgpOwo+ICsJdWtfcHJfZGVidWcoIiVzOiBwYXRoPSVzXG4i
LCBfX2Z1bmNfXywgcGF0aCk7Cj4gIAo+ICAJaWYgKCFzdHJjbXAocGF0aCwgIi8iKSkJLyogcm9v
dCA/ICovCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKHZwLT52X2ZsYWdzICYgVlBST1RERVYp
IHsKPiAtCQl1a19wcl9kZWJ1ZygiZGV2ZnNfb3BlbjogZmFpbGVkIHRvIG9wZW4gcHJvdGVjdGVk
IGRldmljZS5cbiIpOwo+ICsJCXVrX3ByX2RlYnVnKCIlczogZmFpbGVkIHRvIG9wZW4gcHJvdGVj
dGVkIGRldmljZS5cbiIsIF9fZnVuY19fKTsKPiAgCQlyZXR1cm4gRVBFUk07Cj4gIAl9Cj4gIAlp
ZiAoKnBhdGggPT0gJy8nKQo+ICAJCXBhdGgrKzsKPiAgCWVycm9yID0gZGV2aWNlX29wZW4ocGF0
aCwgZnAtPmZfZmxhZ3MgJiBET19SV01BU0ssICZkZXYpOwo+ICAJaWYgKGVycm9yKSB7Cj4gLQkJ
dWtfcHJfZGVidWcoImRldmZzX29wZW46IGNhbiBub3Qgb3BlbiBkZXZpY2UgPSAlcyBlcnJvcj0l
ZFxuIiwKPiAtCQkJIHBhdGgsIGVycm9yKTsKPiArCQl1a19wcl9kZWJ1ZygiJXM6IGNhbiBub3Qg
b3BlbiBkZXZpY2UgPSAlcyBlcnJvcj0lZFxuIiwKPiArCQkJIF9fZnVuY19fLCBwYXRoLCBlcnJv
cik7Cj4gIAkJcmV0dXJuIGVycm9yOwo+ICAJfQo+ICAJdnAtPnZfZGF0YSA9ICh2b2lkICopZGV2
OwkvKiBTdG9yZSBwcml2YXRlIGRhdGEgKi8KPiBAQCAtOTYsMzMgKzk2LDM1IEBAIHN0YXRpYyBp
bnQKPiAgZGV2ZnNfY2xvc2Uoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAq
ZnApCj4gIHsKPiAgCj4gLQl1a19wcl9kZWJ1ZygiZGV2ZnNfY2xvc2U6IGZkPSVkXG4iLCBmcC0+
ZmQpOwo+ICsJdWtfcHJfZGVidWcoIiVzOiBmZD0lZFxuIiwgX19mdW5jX18sIGZwLT5mZCk7Cj4g
IAo+ICAJaWYgKCFzdHJjbXAoZnAtPmZfZGVudHJ5LT5kX3BhdGgsICIvIikpCS8qIHJvb3QgPyAq
Lwo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXJldHVybiBkZXZpY2VfY2xvc2UoKHN0cnVjdCBkZXZp
Y2UqKXZwLT52X2RhdGEpOwo+ICsJcmV0dXJuIGRldmljZV9jbG9zZSgoc3RydWN0IGRldmljZSAq
KXZwLT52X2RhdGEpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRldmZzX3JlYWQoc3RydWN0
IHZub2RlICp2cCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAgX191bnVzZWQsIHN0cnVjdCB1aW8g
KnVpbywgaW50IGlvZmxhZ3MpCj4gK2RldmZzX3JlYWQoc3RydWN0IHZub2RlICp2cCwgc3RydWN0
IHZmc2NvcmVfZmlsZSAqZnAgX191bnVzZWQsCj4gKwkJCXN0cnVjdCB1aW8gKnVpbywgaW50IGlv
ZmxhZ3MpCj4gIHsKPiAtCXJldHVybiBkZXZpY2VfcmVhZCgoc3RydWN0IGRldmljZSopdnAtPnZf
ZGF0YSwgdWlvLCBpb2ZsYWdzKTsKPiArCXJldHVybiBkZXZpY2VfcmVhZCgoc3RydWN0IGRldmlj
ZSAqKXZwLT52X2RhdGEsIHVpbywgaW9mbGFncyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQKPiAg
ZGV2ZnNfd3JpdGUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFn
cykKPiAgewo+IC0JcmV0dXJuIGRldmljZV93cml0ZSgoc3RydWN0IGRldmljZSopdnAtPnZfZGF0
YSwgdWlvLCBpb2ZsYWdzKTsKPiArCXJldHVybiBkZXZpY2Vfd3JpdGUoKHN0cnVjdCBkZXZpY2Ug
Kil2cC0+dl9kYXRhLCB1aW8sIGlvZmxhZ3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLWRl
dmZzX2lvY3RsKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwIF9fdW51
c2VkLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqYXJnKQo+ICtkZXZmc19pb2N0bChzdHJ1Y3Qg
dm5vZGUgKnZwLCBzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCBfX3VudXNlZCwKPiArCQkJdW5zaWdu
ZWQgbG9uZyBjbWQsIHZvaWQgKmFyZykKPiAgewo+ICAJaW50IGVycm9yOwo+ICAKPiAtCWVycm9y
ID0gZGV2aWNlX2lvY3RsKChzdHJ1Y3QgZGV2aWNlKil2cC0+dl9kYXRhLCBjbWQsIGFyZyk7Cj4g
LQl1a19wcl9kZWJ1ZygiZGV2ZnNfaW9jdGw6IGNtZD0lbHVcbiIsIGNtZCk7Cj4gKwllcnJvciA9
IGRldmljZV9pb2N0bCgoc3RydWN0IGRldmljZSAqKXZwLT52X2RhdGEsIGNtZCwgYXJnKTsKPiAr
CXVrX3ByX2RlYnVnKCIlczogY21kPSVsdVxuIiwgX19mdW5jX18sIGNtZCk7Cj4gIAlyZXR1cm4g
ZXJyb3I7Cj4gIH0KPiAgCj4gQEAgLTEzMyw3ICsxMzUsNyBAQCBkZXZmc19sb29rdXAoc3RydWN0
IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZwcCkKPiAgCXN0cnVjdCB2
bm9kZSAqdnA7Cj4gIAlpbnQgZXJyb3IsIGk7Cj4gIAo+IC0JdWtfcHJfZGVidWcoImRldmZzX2xv
b2t1cDolc1xuIiwgbmFtZSk7Cj4gKwl1a19wcl9kZWJ1ZygiJXM6JXNcbiIsIF9fZnVuY19fLCBu
YW1lKTsKPiAgCj4gIAkqdnBwID0gTlVMTDsKPiAgCj4gQEAgLTE0NSw5ICsxNDcsOSBAQCBkZXZm
c19sb29rdXAoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5hbWUsIHN0cnVjdCB2bm9kZSAqKnZw
cCkKPiAgCWluZm8uY29va2llID0gMDsKPiAgCWZvciAoOzspIHsKPiAgCQllcnJvciA9IGRldmlj
ZV9pbmZvKCZpbmZvKTsKPiAtCQlpZiAoZXJyb3IpIHsKPiArCQlpZiAoZXJyb3IpCj4gIAkJCXJl
dHVybiBFTk9FTlQ7Cj4gLQkJfQo+ICsKPiAgCQlpZiAoIXN0cm5jbXAoaW5mby5uYW1lLCBuYW1l
LCBNQVhERVZOQU1FKSkKPiAgCQkJYnJlYWs7Cj4gIAkJaSsrOwo+IEBAIC0xODMsNyArMTg1LDcg
QEAgZGV2ZnNfcmVhZGRpcihzdHJ1Y3Qgdm5vZGUgKnZwIF9fdW51c2VkLCBzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmcCwgc3RydWN0IGRpcmVudAo+ICAJc3RydWN0IGRldmluZm8gaW5mbzsKPiAgCWlu
dCBlcnJvciwgaTsKPiAgCj4gLQl1a19wcl9kZWJ1ZygiZGV2ZnNfcmVhZGRpciBvZmZzZXQ9JWxp
XG4iLCBmcC0+Zl9vZmZzZXQpOwo+ICsJdWtfcHJfZGVidWcoIiVzOiBvZmZzZXQ9JWxpXG4iLCBf
X2Z1bmNfXywgZnAtPmZfb2Zmc2V0KTsKPiAgCj4gIAlpID0gMDsKPiAgCWVycm9yID0gMDsKPiBA
QCAtMjAzLDcgKzIwNSw3IEBAIGRldmZzX3JlYWRkaXIoc3RydWN0IHZub2RlICp2cCBfX3VudXNl
ZCwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZnAsIHN0cnVjdCBkaXJlbnQKPiAgCWRpci0+ZF9maWxl
bm8gPSBmcC0+Zl9vZmZzZXQ7Cj4gIC8vCWRpci0+ZF9uYW1sZW4gPSBzdHJsZW4oZGlyLT5kX25h
bWUpOwo+ICAKPiAtCXVrX3ByX2RlYnVnKCJkZXZmc19yZWFkZGlyOiAlc1xuIiwgZGlyLT5kX25h
bWUpOwo+ICsJdWtfcHJfZGVidWcoIiVzOiAlc1xuIiwgX19mdW5jX18sIGRpci0+ZF9uYW1lKTsK
PiAgCWZwLT5mX29mZnNldCsrOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvbGli
L2RldmZzL2RldmljZS5jIGIvbGliL2RldmZzL2RldmljZS5jCj4gaW5kZXggNjkzYTVmOWQuLjdm
MWUzZGIyIDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZmcy9kZXZpY2UuYwo+ICsrKyBiL2xpYi9kZXZm
cy9kZXZpY2UuYwo+IEBAIC01Nyw3ICs1Nyw3IEBACj4gIHN0YXRpYyBzdHJ1Y3QgdWtfbXV0ZXgg
ZGV2ZnNfbG9jayA9IFVLX01VVEVYX0lOSVRJQUxJWkVSKGRldmZzX2xvY2spOwo+ICAKPiAgLyog
bGlzdCBoZWFkIG9mIHRoZSBkZXZpY2VzICovCj4gLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICpkZXZp
Y2VfbGlzdCA9IE5VTEw7Cj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfbGlzdDsKPiAg
Cj4gIC8qCj4gICAqIExvb2sgdXAgYSBkZXZpY2Ugb2JqZWN0IGJ5IGRldmljZSBuYW1lLgo+IEBA
IC04NSw3ICs4NSw3IEBAIHN0cnVjdCBwYXJ0aXRpb25fdGFibGVfZW50cnkgewo+ICAJdWludDE2
X3QgZW5kaW5nX2N5bGluZGVyOjEwOwo+ICAJdWludDMyX3QgcmVsYV9zZWN0b3I7Cj4gIAl1aW50
MzJfdCB0b3RhbF9zZWN0b3JzOwo+IC19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwo+ICt9IF9f
cGFja2VkOwo+ICAKPiAgCj4gIHZvaWQgZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRl
diwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzKQo+IGRpZmYgLS1naXQgYS9saWIvZGV2ZnMv
aW5jbHVkZS9kZXZmcy9kZXZpY2UuaCBiL2xpYi9kZXZmcy9pbmNsdWRlL2RldmZzL2RldmljZS5o
Cj4gaW5kZXggNjQ0NmQzMzAuLjkwOTAyMGIyIDEwMDY0NAo+IC0tLSBhL2xpYi9kZXZmcy9pbmNs
dWRlL2RldmZzL2RldmljZS5oCj4gKysrIGIvbGliL2RldmZzL2luY2x1ZGUvZGV2ZnMvZGV2aWNl
LmgKPiBAQCAtMTIyLDcgKzEyMiw5IEBAIHN0cnVjdCBkZXZpY2Ugewo+ICAJaW50CQlhY3RpdmU7
CQkvKiBkZXZpY2UgaGFzIG5vdCBiZWVuIGRlc3Ryb3llZCAqLwo+ICAJaW50CQlyZWZjbnQ7CQkv
KiByZWZlcmVuY2UgY291bnQgKi8KPiAgCW9mZl90CQlzaXplOwkJLyogZGV2aWNlIHNpemUgKi8K
PiAtCW9mZl90CQlvZmZzZXQ7IC8qIDAgZm9yIHRoZSBtYWluIGRyaXZlLCBpZiB3ZSBoYXZlIGEg
cGFydGl0aW9uLCB0aGlzIGlzIHRoZSBzdGFydCBhZGRyZXNzICovCj4gKwlvZmZfdAkJb2Zmc2V0
OyAvKiAwIGZvciB0aGUgbWFpbiBkcml2ZSwgaWYgd2UgaGF2ZSBhCj4gKwkJCQkgKiAgcGFydGl0
aW9uLCB0aGlzIGlzIHRoZSBzdGFydCBhZGRyZXNzCj4gKwkJCQkgKi8KPiAgCXNpemVfdAkJbWF4
X2lvX3NpemU7Cj4gIAl2b2lkCQkqcHJpdmF0ZV9kYXRhOwkvKiBwcml2YXRlIHN0b3JhZ2UgKi8K
PiAgCj4gQEAgLTE1NywxMyArMTU5LDEzIEBAIGRldmljZV9nZXRfZGVzYyhkZXZpY2VfdCBkZXYp
Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+IC1kZXZpY2Vfc2V0X2Rlc2MoZGV2aWNl
X3QgZGV2LCBjb25zdCBjaGFyKiBkZXNjKQo+ICtkZXZpY2Vfc2V0X2Rlc2MoZGV2aWNlX3QgZGV2
LCBjb25zdCBjaGFyICpkZXNjKQo+ICB7Cj4gIAlkZXYtPmRlc2MgPSBkZXNjOwo+ICB9Cj4gIAo+
ICBzdGF0aWMgaW5saW5lIHZvaWQKPiAtZGV2aWNlX3NldF9zb2Z0YyhkZXZpY2VfdCBkZXYsIHZv
aWQqIHNvZnRjKQo+ICtkZXZpY2Vfc2V0X3NvZnRjKGRldmljZV90IGRldiwgdm9pZCAqc29mdGMp
Cj4gIHsKPiAgCWRldi0+c29mdGMgPSBzb2Z0YzsKPiAgfQo+IEBAIC0xODQsMTIgKzE4NiwxMiBA
QCBkZXZ0b25hbWUoc3RydWN0IGRldmljZSAqZGV2KQo+ICAJcmV0dXJuIGRldi0+bmFtZTsKPiAg
fQo+ICAKPiAtaW50IGRldmljZV9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBzdHJ1Y3QgZGV2aWNl
ICoqKTsKPiAtaW50IGRldmljZV9jbG9zZShzdHJ1Y3QgZGV2aWNlICopOwo+IC1pbnQgZGV2aWNl
X3JlYWQoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gLWludCBkZXZpY2Vf
d3JpdGUoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgdWlvICosIGludCk7Cj4gLWludCBkZXZpY2Vf
aW9jdGwoc3RydWN0IGRldmljZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwo+IC1pbnQgZGV2
aWNlX2luZm8oc3RydWN0IGRldmluZm8gKik7Cj4gK2ludCBkZXZpY2Vfb3Blbihjb25zdCBjaGFy
ICpuYW1lLCBpbnQgbW9kZSwgc3RydWN0IGRldmljZSAqKmRldnApOwo+ICtpbnQgZGV2aWNlX2Ns
b3NlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK2ludCBkZXZpY2VfcmVhZChzdHJ1Y3QgZGV2aWNl
ICpkZXYsIHN0cnVjdCB1aW8gKnVpbywgaW50IGlvZmxhZ3MpOwo+ICtpbnQgZGV2aWNlX3dyaXRl
KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncyk7Cj4gK2lu
dCBkZXZpY2VfaW9jdGwoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGNtZCwgdm9p
ZCAqYXJnKTsKPiAraW50IGRldmljZV9pbmZvKHN0cnVjdCBkZXZpbmZvICppbmZvKTsKPiAgCj4g
IGludCBiZGV2X3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBp
b2ZsYWdzKTsKPiAgaW50IGJkZXZfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdWlv
ICp1aW8sIGludCBpb2ZsYWdzKTsKPiBAQCAtMTk3LDcgKzE5OSw3IEBAIGludCBiZGV2X3dyaXRl
KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFncyk7Cj4gIGlu
dAllbm9kZXYodm9pZCk7Cj4gIGludAludWxsb3Aodm9pZCk7Cj4gIAo+IC1zdHJ1Y3QgZGV2aWNl
ICoJZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgZHJpdmVyICpkcnYsIGNvbnN0IGNoYXIgKm5hbWUsIGlu
dCBmbGFncyk7Cj4gK3N0cnVjdCBkZXZpY2UgKmRldmljZV9jcmVhdGUoc3RydWN0IGRyaXZlciAq
ZHJ2LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MpOwo+ICBpbnQgZGV2aWNlX2Rlc3Ryb3ko
c3RydWN0IGRldmljZSAqZGV2KTsKPiAgaW50IGRldmljZV9kZXN0cm95X2xvY2tlZChzdHJ1Y3Qg
ZGV2aWNlICpkZXYpOwo+ICB2b2lkIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXZp
Y2UsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncyk7Cj4gCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 08 07:58:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 08 Jun 2019 07:58: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 1hZWFA-0001qJ-3t; Sat, 08 Jun 2019 07:58:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xiiN=UH=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hZWF9-0001qE-9z
 for minios-devel@lists.xen.org; Sat, 08 Jun 2019 07:58:27 +0000
X-Inumbo-ID: 30c8aa10-89c3-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 30c8aa10-89c3-11e9-8980-bc764e045a96;
 Sat, 08 Jun 2019 07:58:24 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id e16so4298402wrn.1
 for <minios-devel@lists.xen.org>; Sat, 08 Jun 2019 00:58:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=G7he+BwrJF49u3jreoPtR4IECx8UEjE3T9jzHRWJaHY=;
 b=OBuS38AQyWcijWlN3FFwDhGcBwuNQwwBiKmD/dRj42ijCvifhc9+4nMRfgrDNNh7eC
 5AZxL6kR7qWtO4duKDFSdpo6YFpGgapc6hKaqS+0ZXaADfEFzxWmFZX95q0hDJWza8TN
 3+D+cHUUdX02ANPOhPzOawGbq6Mbd1ME3Fj8HhVJTaE57B1ysdRITME7bviUW1ltyZpC
 I5S94Y76IHER8Mg25aPpcST8t13+Ah7iNr3LK7LG5tpCvLD8gRoKPL9rKKeDyME/8AtZ
 1k8xE5WT0fIZyWbQdYHatrwZ7kCZlP32yBogBjI+ycYAyc1O3D0YfGITAwjCJAZ331gm
 tmBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=G7he+BwrJF49u3jreoPtR4IECx8UEjE3T9jzHRWJaHY=;
 b=afoK3t/GID4clEsw/VIlahUefwQO4wWa0D2hwnatJu5GkSzuaZuSBNnYhi2opGiH2y
 8r6Y8OvxwDsTyqFknFF/pz9hxMTyshuNETfd0GGOH4etCNcL3nsskMxzP50j27QvZLyb
 jYv4zzdW0seHIVRhZ/3zDCNrywTIBUdKJN1rb7fr8qfr/WX0Yo2PjE+eDDTYRpBbV7PJ
 IuxD7lmzybdaTeaCiXoxmMCSV8rBLpwi3N3lLvsQ8bkkJKEiiio1Zyl3lImWhQApk/3z
 LpRGhntj59qrpcuH5K80oUAEZD/iLiVUF6AEebGymgxIxpTYH5izKbDtx9QS/3qkxISA
 1mMQ==
X-Gm-Message-State: APjAAAX23nUlUdznBvrfXFFYaX6+YhDMOdmCm3sKjbFN09icBfJfOHNh
 skSFHpVdApXLjIGoxC05ZlUwtXZBf5E=
X-Google-Smtp-Source: APXvYqxN5pGIRKlEebMcbOrvIv1md53Zx2JD/4gNPaaa+1EHRJDvwUMKKKTekGSfNs92n/hfcmt7+Q==
X-Received: by 2002:adf:f083:: with SMTP id n3mr8247040wro.316.1559980703598; 
 Sat, 08 Jun 2019 00:58:23 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id x6sm2795561wrr.11.2019.06.08.00.58.22
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 08 Jun 2019 00:58:23 -0700 (PDT)
To: Simon Kuenzer <simon.kuenzer@neclab.eu>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190605195509.2401-1-costin.lupu@cs.pub.ro>
 <93ced017-2652-ea7d-8660-8d29e3136587@neclab.eu>
 <96a5e6b1-b004-25e8-6687-d24e0e2a7a8a@gmail.com>
 <6E4C8D21-9F59-4F3C-8F60-0674AA7B8FF3@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <1419ca24-e5b6-b6f3-6052-30d80ee7d393@gmail.com>
Date: Sat, 8 Jun 2019 10:58:21 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <6E4C8D21-9F59-4F3C-8F60-0674AA7B8FF3@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: Fix handling of
 main arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2ltb24sCgpQbGVhc2Ugc2VlIGlubGluZS4KCk9uIDYvNi8xOSAzOjM0IFBNLCBTaW1vbiBL
dWVuemVyIHdyb3RlOgo+IEhleSBDb3N0aW4sCj4gCj4g77u/T24gMDYuMDYuMTksIDEyOjMwLCAi
Q29zdGluIEx1cHUiIDxjb3N0aW4ubHVwQGdtYWlsLmNvbT4gd3JvdGU6Cj4gCj4gICAgIEhpIFNp
bW9uLAo+ICAgICAKPiAgICAgSSd2ZSByZWFkIHlvdXIgY29tbWVudHMgYnV0IEkgY291bGRuJ3Qg
ZmluZCBvdXQgd2h5IHlvdSBkb24ndCBhZ3JlZSB3aXRoCj4gICAgIGdsb2JhbCBhcHByb2FjaC4g
U28sIHdoYXQgYXJlIHRoZSByZWFzb25zIHdoeSB5b3Ugd291bGQgcHJlZmVyIGRlY2xhcmluZwo+
ICAgICB0aGUgYXJndW1lbnRzIHN0YXRpYyByYXRoZXIgdGhhbiBnbG9iYWw/Cj4gCj4gVGhlIGNo
YW5nZSB0aGF0IEkgbWVudGlvbiBhcyBhbHRlcm5hdGl2ZSBpcyBtaW5pbWFsIGFuZCBsZXNzIGlu
dmFzaXZlIHRvIHRoZSBleGlzdGluZyBjb2RlLiBZb3UgZG8gbm90IG5lZWQgdG8gYWRkIGl0IGFz
IGV4cG9ydGVkIHN5bWJvbCBhbmQgbW9zdCBjb2RlIGNhbiBzdGF5IGFzIGlzLiBJIGFsc28gZG8g
bm90IHNlZSB3aHkgd2Ugd291bGQgbmVlZCB0aGUgZ2xvYmFsIGFwcHJvYWNoLiBEbyB5b3UgaGF2
ZSBhIHVzZSBjYXNlPyBJIHRoaW5rIHRoaXMgaXMgY29uZmxpY3RpbmcgaG93IGFyZ2MgYW5kIGFy
Z3YgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZDogVGhlIGlkZWEgYWJvdXQgdGhlbSBpcyB0aGF0IHRo
ZXkgYXJlIHByaXZhdGUgdG8geW91ciBtYWluKCkgZnVuY3Rpb24gb2YgeW91ciBwcm9ncmFtICh1
a3BsYXRfZW50cnkoKSBpbiBvdXIgY2FzZSkuIEl0IGNhbiBkbyB3aGF0ZXZlciB3aXRoIGl0IGFu
ZCB0aGlzIGRvZXMgbm90IGhhdmUgYW55IGVmZmVjdCBvbiBzb21ldGhpbmcgZWxzZS4KPiBBcyBh
biBleGFtcGxlIHlvdSBjYW4gdGFrZSBnZXRvcHQoKTogSXQgc3RhcnRzIHJlLW9yZGVyaW5nIHRo
ZSBwb2ludGVycyBvbiBhcmd2IGZvciBkb2luZyBpdHMgYXJndW1lbnQgcGFyc2luZy4KPiBPbiBh
IGdsb2JhbCBhbmQgc2hhcmVkIGRhdGEgc3RydWN0dXJlIHlvdSB3b3VsZCBub3Qgd2FudCB0aGlz
LgoKWWVhaCwgdGhhdCdzIHdoYXQgSSB3YXMgbG9va2luZyBmb3IuIFRoYW5rcyBmb3IgdGhlIGV4
cGxhbmF0aW9ucy4gSSdsbApzZW5kIGEgdjIgbWFraW5nIHRoZSBhcmd2IGFycmF5IHN0YXRpYy4K
Cj4gCj4gICAgIFBlcnNvbmFsbHkgSSBmaW5kIG1ha2luZyB0aGUgYXJndW1lbnRzIGdsb2JhbCB0
byBiZSBtb3JlIGVsZWdhbnQgYW5kCj4gICAgIG9mZmVyIGEgdW5pZmllZCBhcHByb2FjaCwgc2lu
Y2UgdGhleSB3b3VsZCBoYXZlIHRoZSBzYW1lIGxvY2F0aW9uIGZvcgo+ICAgICBhbGwgcGxhdGZv
cm1zLgo+ICAgICAKPiAgICAgQWxzbywgcGxlYXNlIHNlZSBhIGNvbW1lbnQgaW5saW5lLgo+ICAg
ICAKPiAgICAgT24gNi82LzE5IDEyOjM0IFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+ICAgICA+
IEhleSBDb3N0aW4sCj4gICAgID4gCj4gICAgID4gdGhhbmtzIGEgbG90IGZvciB0aGUgcGF0Y2gu
IEkgdGhpbmsgdGhlIGFjdHVhbCBwcm9ibGVtIGlzIHRoYXQgdGhlIGJvb3QKPiAgICAgPiBzdGFj
ayBjb3VsZCBiZSByZWxlYXNlZCBsYXRlciBhZnRlciBib290IGZvciBzb21ldGhpbmcgZWxzZSwg
c28gaXQgaXMKPiAgICAgPiBub3QgZ3VhcmFudGVlZCBhbnltb3JlIHRoYXQgdGhlIGFyZ3VtZW50
cyBhcmUgc2FmZSBhbmQgc3RheWluZy4KPiAgICAgPiBIb3dldmVyLCBJIGRvbid0IGFncmVlIHRv
IG1ha2UgYXJndiBhbmQgYXJnYyBnbG9iYWwgYXZhaWxhYmxlLiBKdXN0Cj4gICAgID4gYWxsb2Nh
dGUgdGhlbSBpbiB0aGUgYnNzIHNlY3Rpb24uCj4gICAgID4gU2VlIG15IGNvbW1lbnRzIGlubGlu
ZS4KPiAgICAgPiAKPiAgICAgPiBPbiAwNS4wNi4xOSAyMTo1NSwgQ29zdGluIEx1cHUgd3JvdGU6
Cj4gICAgID4+IFdoZW4gdGhlIGNvbW1hbmQgbGluZSBpcyBwYXJzZWQgYW5kIHNwbGl0IGludG8g
YXJndW1lbnRzLCBlYWNoIGFyZ3VtZW50Cj4gICAgID4+IGlzIHNhdmVkIGluIGFuIGFycmF5IG9m
IHBvaW50ZXJzIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgKCdhcmd2JyBhcnJheSBpbgo+ICAgICA+
PiB1a3BsYXRfZW50cnlfYXJncCgpKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBhcnJheSBjYW4gYmUg
b3ZlcndyaXR0ZW4gYW55Cj4gICAgID4+IHRpbWUgYmVmb3JlIHN0YXJ0aW5nIHRoZSBtYWluIHRo
cmVhZCB3aGljaCBuZWVkcyB0aGUgYXJndW1lbnRzLiBUaGlzCj4gICAgID4+IHBhdGNoIGZpeGVz
IHRoYXQgYnkgbWFraW5nIHRoZSBhcnJheSBnbG9iYWwsIGVuY2Fwc3VsYXRlZCBieSB0aGUKPiAg
ICAgPj4gJ21haW5fYXJnJyBzdHJ1Y3R1cmUuCj4gICAgID4+Cj4gICAgID4+IFNpZ25lZC1vZmYt
Ynk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gICAgID4+IC0tLQo+ICAg
ICA+PiAgIGluY2x1ZGUvdWsvcGxhdC9ib290c3RyYXAuaCB8IDExICsrKysrKysrKystCj4gICAg
ID4+ICAgbGliL3VrYm9vdC9ib290LmMgICAgICAgICAgIHwgMzMgKysrKysrKysrKysrLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCj4gICAgID4+ICAgbGliL3VrYm9vdC9leHBvcnRzeW1zLnVrICAgIHwg
IDEgKwo+ICAgICA+PiAgIHBsYXQvbGludXh1L3NldHVwLmMgICAgICAgICB8ICA3ICsrKysrKy0K
PiAgICAgPj4gICA0IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9u
cygtKQo+ICAgICA+Pgo+ICAgICA+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91ay9wbGF0L2Jvb3Rz
dHJhcC5oIGIvaW5jbHVkZS91ay9wbGF0L2Jvb3RzdHJhcC5oCj4gICAgID4+IGluZGV4IDA2NTJj
Y2QxLi5hOWU0MDRlOCAxMDA2NDQKPiAgICAgPj4gLS0tIGEvaW5jbHVkZS91ay9wbGF0L2Jvb3Rz
dHJhcC5oCj4gICAgID4+ICsrKyBiL2luY2x1ZGUvdWsvcGxhdC9ib290c3RyYXAuaAo+ICAgICA+
PiBAQCAtMzYsNiArMzYsNyBAQAo+ICAgICA+PiAgICNpZm5kZWYgX19VS1BMQVRfQk9PVFNUUkFQ
X18KPiAgICAgPj4gICAjZGVmaW5lIF9fVUtQTEFUX0JPT1RTVFJBUF9fCj4gICAgID4+ICAgKyNp
bmNsdWRlIDx1ay9jb25maWcuaD4KPiAgICAgPj4gICAjaW5jbHVkZSA8dWsvYXJjaC90eXBlcy5o
Pgo+ICAgICA+PiAgICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gICAgID4+ICAgQEAgLTQz
LDYgKzQ0LDE0IEBACj4gICAgID4+ICAgZXh0ZXJuICJDIiB7Cj4gICAgID4+ICAgI2VuZGlmCj4g
ICAgID4+ICAgKy8qIE1haW4gYXJndW1lbnRzIHN0cnVjdHVyZSAqLwo+ICAgICA+PiArc3RydWN0
IG1haW5fYXJnIHsKPiAgICAgPj4gKyAgICBpbnQgYXJnYzsKPiAgICAgPj4gKyAgICBjaGFyICph
cmd2W0NPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTXTsKPiAgICAgPj4gK307Cj4gICAgID4+ICsv
KiBNYWluIGFyZ3VtZW50cyAqLwo+ICAgICA+PiArZXh0ZXJuIHN0cnVjdCBtYWluX2FyZyBnbG9i
YWxfbWFpbl9hcmc7Cj4gICAgID4+ICsKPiAgICAgPj4gICAvKioKPiAgICAgPj4gICAgKiBDYWxs
ZWQgYnkgcGxhdGZvcm0gbGlicmFyeSBkdXJpbmcgaW5pdGlhbGl6YXRpb24KPiAgICAgPj4gICAg
KiBUaGlzIGZ1bmN0aW9uIGhhcyB0byBiZSBwcm92aWRlZCBieSBhIG5vbi1wbGF0Zm9ybSBsaWJy
YXJ5IGZvcgo+ICAgICA+PiBib290c3RyYXBwaW5nCj4gICAgID4+IEBAIC01Miw3ICs2MSw3IEBA
IGV4dGVybiAiQyIgewo+ICAgICA+PiAgICAqIEBwYXJhbSBhcmdjIE51bWJlciBvZiBhcmd1bWVu
dHMKPiAgICAgPj4gICAgKiBAcGFyYW0gYXJncyBBcnJheSB0byAnXDAnLXRlcm1pbmF0ZWQgYXJn
dW1lbnRzCj4gICAgID4+ICAgICovCj4gICAgID4+IC12b2lkIHVrcGxhdF9lbnRyeShpbnQgYXJn
YywgY2hhciAqYXJndltdKSBfX25vcmV0dXJuOwo+ICAgICA+PiArdm9pZCB1a3BsYXRfZW50cnko
c3RydWN0IG1haW5fYXJnICphcmcpIF9fbm9yZXR1cm47Cj4gICAgID4+ICAgICAvKioKPiAgICAg
Pj4gICAgKiBDYWxsZWQgYnkgcGxhdGZvcm0gbGlicmFyeSBkdXJpbmcgaW5pdGlhbGl6YXRpb24K
PiAgICAgPj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jvb3QvYm9vdC5jIGIvbGliL3VrYm9vdC9ib290
LmMKPiAgICAgPj4gaW5kZXggNGRjYzBhZmIuLjVjYzNiNTczIDEwMDY0NAo+ICAgICA+PiAtLS0g
YS9saWIvdWtib290L2Jvb3QuYwo+ICAgICA+PiArKysgYi9saWIvdWtib290L2Jvb3QuYwo+ICAg
ICA+PiBAQCAtNjgsMTcgKzY4LDEzIEBAIGV4dGVybiBpbnQgbGlibHdpcF9pbml0KHZvaWQpOwo+
ICAgICA+PiAgICNlbmRpZiAvKiBDT05GSUdfTElCTFdJUCAqLwo+ICAgICA+PiAgICAgc3RhdGlj
IHZvaWQgbWFpbl90aHJlYWRfZnVuYyh2b2lkICphcmcpIF9fbm9yZXR1cm47Cj4gICAgID4+IC0K
PiAgICAgPj4gLXN0cnVjdCB0aHJlYWRfbWFpbl9hcmcgewo+ICAgICA+PiAtICAgIGludCBhcmdj
Owo+ICAgICA+PiAtICAgIGNoYXIgKiphcmd2Owo+ICAgICA+PiAtfTsKPiAgICAgPj4gK3N0cnVj
dCBtYWluX2FyZyBnbG9iYWxfbWFpbl9hcmc7Cj4gICAgID4+ICAgICBzdGF0aWMgdm9pZCBtYWlu
X3RocmVhZF9mdW5jKHZvaWQgKmFyZykKPiAgICAgPj4gICB7Cj4gICAgID4+ICAgICAgIGludCBp
Owo+ICAgICA+PiAgICAgICBpbnQgcmV0Owo+ICAgICA+PiAtICAgIHN0cnVjdCB0aHJlYWRfbWFp
bl9hcmcgKnRtYSA9IGFyZzsKPiAgICAgPj4gKyAgICBzdHJ1Y3QgbWFpbl9hcmcgKnRtYSA9IGFy
ZzsKPiAgICAgPj4gICAgICAgICB1a19wcl9pbmZvKCJQcmUtaW5pdCB0YWJsZSBhdCAlcCAtICVw
XG4iLAo+ICAgICA+PiAgICAgICAgICAgICAgX19wcmVpbml0X2FycmF5X3N0YXJ0LCAmX19wcmVp
bml0X2FycmF5X2VuZCk7Cj4gICAgID4+IEBAIC0xNDUsMjYgKzE0MSwyNiBAQCBzdGF0aWMgdm9p
ZCBtYWluX3RocmVhZF9mdW5jKHZvaWQgKmFyZykKPiAgICAgPj4gICAvKiBkZWZpbmVkIGluIDx1
ay9wbGF0Lmg+ICovCj4gICAgID4+ICAgdm9pZCB1a3BsYXRfZW50cnlfYXJncChjaGFyICphcmcw
LCBjaGFyICphcmdiLCBfX3N6IGFyZ2JfbGVuKQo+ICAgICA+PiAgIHsKPiAgICAgPj4gLSAgICBj
aGFyICphcmd2W0NPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTXTsKPiAgICAgPiAKPiAgICAgPiBK
dXN0IGRlY2xhcmUKPiAgICAgPiAgICAgY2hhciAqYXJndltDT05GSUdfTElCVUtCT09UX01BWE5C
QVJHU107Cj4gICAgID4gYXMKPiAgICAgPiAgICAgc3RhdGljIGNoYXIgKmFyZ3ZbQ09ORklHX0xJ
QlVLQk9PVF9NQVhOQkFSR1NdOwo+ICAgICA+IAo+ICAgICA+IFRoZSBzYW1lIGZvciBhcmdjLgo+
IAo+IEFjdHVhbGx5LCB3ZSBkbyBub3QgbmVlZCB0byBkZWNsYXJlIGBhcmdjYCBhcyBzdGF0aWMs
IG9ubHkgYGFyZ3ZgLiBJIHdhcyB3cm9uZy4gYGFyZ2NgIGlzIGFueXdheXMgaGFuZGVkIG92ZXIg
YnktdmFsdWUgb24gYSBmdW5jdGlvbiBjYWxsLCBub3QgYnktcmVmZXJlbmNlIChsaWtlIGFyZ3Yp
IC0gc28gd2UgYXJlIGdvb2QuCj4gCj4gICAgID4gCj4gICAgID4gV2UgYWxzbyBuZWVkIHRvIGRv
dWJsZS1jaGVjayB0aGF0IG91ciBzdHJpbmcgYnVmZmVyIHdpdGggdGhlIGFyZ3VtZW50cwo+ICAg
ICA+ICh3aGVyZSBhcmd2IGlzIHBvaW50aW5nIHRvKSwgaXMgbm90IGFsbG9jYXRlZCBvbiB0aGUg
c3RhY2sgaW4gdGhlCj4gICAgID4gcGxhdGZvcm0uIElmIHRoaXMgaXMgdGhlIGNhc2UsIHdlIGFy
ZSBzYWZlLgo+ICAgICA+IAo+ICAgICAKPiAgICAgSSdtIG5vdCBzdXJlIEkgZm9sbG93IHRoaXMs
IHlvdSBtZWFuIHRvIGNoZWNrIGlmIHRoZSBzdHJpbmdzIGFyZW4ndAo+ICAgICBhbGxvY2F0ZWQg
b24gdGhpcyBzdGFjaz8gT3IgdG8gY2hlY2sgaWYgaXQgY29tZXMgZnJvbSBic3M/Cj4gCj4gSW4g
Y2FzZSB0aGUgYm9vdCBzdGFjayBpcyByZWxlYXNlZCBvciB1c2VkIGZvciBzb21ldGhpbmcgZWxz
ZSwgdGhlcmUgc2hvdWxkIGJlIG5vIHJlZmVyZW5jZSB0byBpdC4gVGhlIGJ1ZmZlciB3aGVyZSB0
aGUgc3RyaW5ncyBhcmUgc3RvcmVkIChhbmQgd2hlcmUgdGhlIHBvaW50ZXJzIG9mIGFyZ3YgYXJl
IHBvaW50aW5nIHRvKSBzaG91bGRuJ3QgYmUgb24gdGhlIHN0YWNrIGVpdGhlci4gSSBtZW50aW9u
ZWQgdGhpcyBiZWNhdXNlIEkgd2FudGVkIHRvIHNheSB0aGF0IHdlIHNob3VsZCBkb3VibGUgY2hl
Y2sgdGhhdCBvdXIgcGxhdGZvcm0gYXJlIHN0b3JpbmcgdGhpcyBidWZmZXIgb24gc29tZXRoaW5n
IGVsc2UgdGhhbiB0aGUgc3RhY2suCj4gICAgIAoKSSdkIHJhdGhlciBub3QgYWRkIHRoaXMgdG8g
dGhlIG5leHQgdmVyc2lvbiBiZWNhdXNlIGl0IG5lZWRzIHN1YnN0YW50aWFsCmNoYW5nZXMgaW4g
b3JkZXIgdG8gYWNjZXNzIHRoZSBib290c3RhY2suCgo+ICAgICA+PiAtICAgIGludCBhcmdjID0g
MDsKPiAgICAgPj4gKyAgICBnbG9iYWxfbWFpbl9hcmcuYXJnYyA9IDA7Cj4gICAgID4+ICAgICAg
ICAgaWYgKGFyZzApIHsKPiAgICAgPj4gLSAgICAgICAgYXJndlswXSA9IGFyZzA7Cj4gICAgID4+
IC0gICAgICAgIGFyZ2MgKz0gMTsKPiAgICAgPj4gKyAgICAgICAgZ2xvYmFsX21haW5fYXJnLmFy
Z3ZbMF0gPSBhcmcwOwo+ICAgICA+PiArICAgICAgICBnbG9iYWxfbWFpbl9hcmcuYXJnYyArPSAx
Owo+ICAgICA+PiAgICAgICB9Cj4gICAgID4+ICAgICAgIGlmIChhcmdiICYmIGFyZ2JfbGVuKSB7
Cj4gICAgID4+IC0gICAgICAgIGFyZ2MgKz0gdWtfYXJnbnBhcnNlKGFyZ2IsIGFyZ2JfbGVuLCBh
cmcwID8gJmFyZ3ZbMV0gOiAmYXJndlswXSwKPiAgICAgPj4gKyAgICAgICAgZ2xvYmFsX21haW5f
YXJnLmFyZ2MgKz0gdWtfYXJnbnBhcnNlKGFyZ2IsIGFyZ2JfbGVuLAo+ICAgICA+PiArICAgICAg
ICAgICAgICAgICAgICAgYXJnMCA/ICZnbG9iYWxfbWFpbl9hcmcuYXJndlsxXQo+ICAgICA+PiAr
ICAgICAgICAgICAgICAgICAgICAgIDogJmdsb2JhbF9tYWluX2FyZy5hcmd2WzBdLAo+ICAgICA+
PiAgICAgICAgICAgICAgICAgICAgICAgIGFyZzAgPyAoQ09ORklHX0xJQlVLQk9PVF9NQVhOQkFS
R1MgLSAxKQo+ICAgICA+PiAgICAgICAgICAgICAgICAgICAgICAgICA6IENPTkZJR19MSUJVS0JP
T1RfTUFYTkJBUkdTKTsKPiAgICAgPj4gICAgICAgfQo+ICAgICA+PiAtICAgIHVrcGxhdF9lbnRy
eShhcmdjLCBhcmd2KTsKPiAgICAgPj4gKyAgICB1a3BsYXRfZW50cnkoJmdsb2JhbF9tYWluX2Fy
Zyk7Cj4gICAgID4gCj4gICAgID4gSWYgeW91IGRlY2xhcmUgdGhlIGFyZ3VtZW50cyBhcyBnbG9i
YWwgeW91IGRvIG5vdCBuZWVkIHRvIGhhbmQgdGhlbSBvdmVyCj4gICAgID4gYW55bW9yZSwgYnV0
IGFzIEkgc2FpZCBJIHdvdWxkIG5vdCBjaGFuZ2UgdGhpcyBhdCBhbGwuCj4gICAgID4gCj4gICAg
ID4+ICAgfQo+ICAgICA+PiAgICAgLyogZGVmaW5lZCBpbiA8dWsvcGxhdC5oPiAqLwo+ICAgICA+
PiAtdm9pZCB1a3BsYXRfZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgICAgPj4gK3Zv
aWQgdWtwbGF0X2VudHJ5KHN0cnVjdCBtYWluX2FyZyAqYXJnKQo+ICAgICA+PiAgIHsKPiAgICAg
Pj4gICAgICAgY29uc3QgdWtfY3Rvcl9mdW5jX3QgKmNmbjsKPiAgICAgPj4gLSAgICBzdHJ1Y3Qg
dGhyZWFkX21haW5fYXJnIHRtYTsKPiAgICAgPj4gICAjaWYgQ09ORklHX0xJQlVLQUxMT0MKPiAg
ICAgPj4gICAgICAgc3RydWN0IHVrX2FsbG9jICphID0gTlVMTDsKPiAgICAgPj4gICAgICAgaW50
IHJjOwo+ICAgICA+PiBAQCAtMjM0LDE5ICsyMzAsMTQgQEAgdm9pZCB1a3BsYXRfZW50cnkoaW50
IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgICAgPj4gICAgICAgcyA9IHVrX3NjaGVkX2RlZmF1bHRf
aW5pdChhKTsKPiAgICAgPj4gICAgICAgaWYgKHVubGlrZWx5KCFzKSkKPiAgICAgPj4gICAgICAg
ICAgIFVLX0NSQVNIKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSB0aGUgc2NoZWR1bGVyXG4iKTsKPiAg
ICAgPj4gLSNlbmRpZgo+ICAgICA+PiAgIC0gICAgdG1hLmFyZ2MgPSBhcmdjOwo+ICAgICA+PiAt
ICAgIHRtYS5hcmd2ID0gYXJndjsKPiAgICAgPj4gLQo+ICAgICA+PiAtI2lmIENPTkZJR19MSUJV
S1NDSEVECj4gICAgID4+IC0gICAgbWFpbl90aHJlYWQgPSB1a190aHJlYWRfY3JlYXRlKCJtYWlu
IiwgbWFpbl90aHJlYWRfZnVuYywgJnRtYSk7Cj4gICAgID4+ICsgICAgbWFpbl90aHJlYWQgPSB1
a190aHJlYWRfY3JlYXRlKCJtYWluIiwgbWFpbl90aHJlYWRfZnVuYywgYXJnKTsKPiAgICAgPj4g
ICAgICAgaWYgKHVubGlrZWx5KCFtYWluX3RocmVhZCkpCj4gICAgID4+ICAgICAgICAgICBVS19D
UkFTSCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIHRocmVhZFxuIik7Cj4gICAgID4+ICAgICAgIHVr
X3NjaGVkX3N0YXJ0KHMpOwo+ICAgICA+PiAgICNlbHNlCj4gICAgID4+ICAgICAgIC8qIEVuYWJs
ZSBpbnRlcnJ1cHRzIGJlZm9yZSBzdGFydGluZyB0aGUgYXBwbGljYXRpb24gKi8KPiAgICAgPj4g
ICAgICAgdWtwbGF0X2xjcHVfZW5hYmxlX2lycSgpOwo+ICAgICA+PiAtICAgIG1haW5fdGhyZWFk
X2Z1bmMoJnRtYSk7Cj4gICAgID4+ICsgICAgbWFpbl90aHJlYWRfZnVuYyhhcmcpOwo+ICAgICA+
PiAgICNlbmRpZgo+ICAgICA+PiAgIH0KPiAgICAgPj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jvb3Qv
ZXhwb3J0c3ltcy51ayBiL2xpYi91a2Jvb3QvZXhwb3J0c3ltcy51awo+ICAgICA+PiBpbmRleCAz
ZWRjNmM2YS4uYWRiYjg0ZmIgMTAwNjQ0Cj4gICAgID4+IC0tLSBhL2xpYi91a2Jvb3QvZXhwb3J0
c3ltcy51awo+ICAgICA+PiArKysgYi9saWIvdWtib290L2V4cG9ydHN5bXMudWsKPiAgICAgPj4g
QEAgLTEsMyArMSw0IEBACj4gICAgID4+ICAgdWtwbGF0X2VudHJ5X2FyZ3AKPiAgICAgPj4gICB1
a3BsYXRfZW50cnkKPiAgICAgPj4gK2dsb2JhbF9tYWluX2FyZwo+ICAgICA+PiAgIG1haW4KPiAg
ICAgPj4gZGlmZiAtLWdpdCBhL3BsYXQvbGludXh1L3NldHVwLmMgYi9wbGF0L2xpbnV4dS9zZXR1
cC5jCj4gICAgID4+IGluZGV4IDUwNDU0NDM3Li40ZjZmNTY4OCAxMDA2NDQKPiAgICAgPj4gLS0t
IGEvcGxhdC9saW51eHUvc2V0dXAuYwo+ICAgICA+PiArKysgYi9wbGF0L2xpbnV4dS9zZXR1cC5j
Cj4gICAgID4+IEBAIC0xNzIsNiArMTcyLDExIEBAIHZvaWQgX2xpYmxpbnV4dXBsYXRfZW50cnko
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgICAgPj4gICAgICAgYXJndiArPSAocmV0IC0gMSk7
Cj4gICAgID4+ICAgICAgIGFyZ3ZbMF0gPSBwcm9nbmFtZTsKPiAgICAgPiAKPiAgICAgPiBNYWtl
IGFsc28gc3VyZSB0aGF0IGFyZ3YgYW5kIGFyZ2MgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYyBoZXJl
LCBpbnN0ZWFkLgo+ICAgICA+IAo+ICAgICA+PiAgICsgICAgLyogU2V0dXAgZ2xvYmFsIGFyZ3Vt
ZW50cyAqLwo+ICAgICA+PiArICAgIGdsb2JhbF9tYWluX2FyZy5hcmdjID0gYXJnYzsKPiAgICAg
Pj4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7IGkrKykKPiAgICAgPj4gKyAgICAgICAg
Z2xvYmFsX21haW5fYXJnLmFyZ3ZbaV0gPSBhcmd2W2ldOwo+ICAgICA+PiArCj4gICAgID4+ICAg
ICAgIC8qCj4gICAgID4+ICAgICAgICAqIEFsbG9jYXRlIGhlYXAgbWVtb3J5Cj4gICAgID4+ICAg
ICAgICAqLwo+ICAgICA+PiBAQCAtMTg2LDUgKzE5MSw1IEBAIHZvaWQgX2xpYmxpbnV4dXBsYXRf
ZW50cnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAgICAgPj4gICAgICAgLyoKPiAgICAgPj4g
ICAgICAgICogRW50ZXIgVW5pa3JhZnQKPiAgICAgPj4gICAgICAgICovCj4gICAgID4+IC0gICAg
dWtwbGF0X2VudHJ5KGFyZ2MsIGFyZ3YpOwo+ICAgICA+PiArICAgIHVrcGxhdF9lbnRyeSgmZ2xv
YmFsX21haW5fYXJnKTsKPiAgICAgPj4gICB9Cj4gICAgID4+Cj4gICAgID4gCj4gICAgID4gVGhh
bmtzLAo+ICAgICA+IAo+ICAgICA+IFNpbW9uCj4gICAgID4gCj4gICAgID4gX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiAgICAgPiBNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Cj4gICAgID4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4g
ICAgID4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbAo+ICAgICAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 08 08:06:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 08 Jun 2019 08: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 1hZWMt-000374-Bo; Sat, 08 Jun 2019 08:06:27 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=VpMz=UH=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hZWMs-00036z-7R
 for minios-devel@lists.xen.org; Sat, 08 Jun 2019 08:06:26 +0000
X-Inumbo-ID: 4d6d8549-89c4-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 4d6d8549-89c4-11e9-8980-bc764e045a96;
 Sat, 08 Jun 2019 08:06:22 +0000 (UTC)
IronPort-SDR: A/Z6avIribvLQwGEtacQoc77SYc4MBPvHGG2/HCdCzHGS69x5J2dFeopbsVC8dWNV8n1KFohTH
 RQ3Sg+GHQeaA==
IronPort-PHdr: =?us-ascii?q?9a23=3AgaWWTxzVC+gnQ1bXCy+O+j09IxM/srCxBDY+r6?=
 =?us-ascii?q?Qd2+0RIJqq85mqBkHD//Il1AaPAdyCrasY1KGP6f2ocFdDyK7JiGoFfp1IWk?=
 =?us-ascii?q?1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBA?=
 =?us-ascii?q?j0OxZrKeTpAI7SiNm82/yv95HJbAhEmSexbalvIBi5rwjdudQajZViJ60s1h?=
 =?us-ascii?q?bHv3xEdvhMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW?=
 =?us-ascii?q?874s3rrgTDQhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VD?=
 =?us-ascii?q?q+46t3ThLjlSEKPCM7/m7KkMx9lKJVrgy8qRJxwIDaZ5qYOOZicq7HYd8XX3?=
 =?us-ascii?q?ZNUtpXWidcAo28dYwPD+8ZMOtGqIn9vEcOrRq4BQKxAu3v1ydIhmLr1qA9z+?=
 =?us-ascii?q?shFhrG3BAhH9IIqnjUqMj1NL8PUe2u0KbI1i/Pb+tL2Tjm8oTIaBchrOiKUL?=
 =?us-ascii?q?ltcsTR0VEiGx7Kg1mNs4DoPDOY2v4Tv2SF7edsT+yih3Y6pwx+vzSj3MQhh4?=
 =?us-ascii?q?nTio4LxF3J+z91zJs6KNGmTkNwfMSqH4FKty6AMot7WsYiQ2Z1tykk0rAGop?=
 =?us-ascii?q?u7fDQSyJQg2h7fd+SLc4iW7RLnU+acOSl4hHd/d7K+gxa+61SvyvbmWsmszV?=
 =?us-ascii?q?ZFtTBJksPLtnwV1hzT7NaISudl80u81juDyhrf5+JELEwui6bXNZwszqQ+m5?=
 =?us-ascii?q?YLtETMBC72mEH4jK+McUUk//Cl5PjgYrX9up+cNol0hhv6MqQzgsy/HP81PR?=
 =?us-ascii?q?QVX2SB4eS8yabs8VfjQLVNlvE2iLXWsIjGJcQHoa60GwpV0ocl6xa+CDemy8?=
 =?us-ascii?q?0UkmQZI1JbZh2Hi5PkO1XPIPDjEfe/mE6gkTh1yPDAJLHhBY/NLnfbmrf7Yb?=
 =?us-ascii?q?l981JcyBY0zd1H6ZJbFLUBIPPrWkDvrtDYDgI5Mw2ozObmE9h90J0RVn6LAq?=
 =?us-ascii?q?CDK6zeq0GH5v83KemWeIAVoCr9K+Qi5/P2ln85mFodfa6v3ZcNa3C4A+ppI0?=
 =?us-ascii?q?OYYHXymNcMCmEKsRQiQ+zuklKNSiRfaGivX/F02jZuDYOgDIDYA4ygnrGF9C?=
 =?us-ascii?q?O6BYFNIHBLDBaLC3i7WZ+DXqInbzmOI8kptiEcSPD1QIg6yRCo8gvn06dPJf?=
 =?us-ascii?q?GS4jAS84jkgosmr9bPnA0/oGQnR/+W1HuAGjl5?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BqAADka/tcjAPjVY1mHgEGBwaBUwc?=
 =?us-ascii?q?LAYNMAQEeEiiNEKRkgXsJAQEBOgECAQGEQIMPNgcOAQMBAQUBAQEBBAETAQE?=
 =?us-ascii?q?BJliCOiKDbk+BAoMigg+oWIVHgyiBRoE0hwSGLj+EYYQNgQSFFQSURJRjBwK?=
 =?us-ascii?q?CEVoEklgnlxulJCcIKIFZMxqDX4FkATYOCY4jPAEBMYEGAQGMN4JSAQE?=
X-IPAS-Result: =?us-ascii?q?A2BqAADka/tcjAPjVY1mHgEGBwaBUwcLAYNMAQEeEiiNE?=
 =?us-ascii?q?KRkgXsJAQEBOgECAQGEQIMPNgcOAQMBAQUBAQEBBAETAQEBJliCOiKDbk+BA?=
 =?us-ascii?q?oMigg+oWIVHgyiBRoE0hwSGLj+EYYQNgQSFFQSURJRjBwKCEVoEklgnlxulJ?=
 =?us-ascii?q?CcIKIFZMxqDX4FkATYOCY4jPAEBMYEGAQGMN4JSAQE?=
X-IronPort-AV: E=Sophos;i="5.63,566,1557176400"; 
   d="scan'208";a="3496820"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 08 Jun 2019 11:06:20 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 8AC741A600B3;
 Sat,  8 Jun 2019 11:06:21 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id B4k3ymOvdnOT; Sat,  8 Jun 2019 11:06:21 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 72B5F1A6010D;
 Sat,  8 Jun 2019 11:06:21 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id SZxAyzd_NmDq; Sat,  8 Jun 2019 11:06:21 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 5F4FD1A600B3;
 Sat,  8 Jun 2019 11:06:21 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sat,  8 Jun 2019 11:06:07 +0300
Message-Id: <20190608080607.8882-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2] lib/ukboot: Fix handling of main
 arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

V2hlbiB0aGUgY29tbWFuZCBsaW5lIGlzIHBhcnNlZCBhbmQgc3BsaXQgaW50byBhcmd1bWVudHMs
IGVhY2ggYXJndW1lbnQgaXMgc2F2ZWQKaW4gYW4gYXJyYXkgb2YgcG9pbnRlcnMgYWxsb2NhdGVk
IG9uIHRoZSBzdGFjayAoJ2FyZ3YnIGFycmF5IGluCnVrcGxhdF9lbnRyeV9hcmdwKCkpLiBUaGlz
IG1lYW5zIHRoYXQgdGhlIGFycmF5IGNhbiBiZSBvdmVyd3JpdHRlbiBhbnl0aW1lCmJlZm9yZSBz
dGFydGluZyB0aGUgbWFpbiB0aHJlYWQgd2hpY2ggbmVlZHMgdGhlIGFyZ3VtZW50cy4gVGhpcyBw
YXRjaCBmaXhlcyB0aGF0CmJ5IG1ha2luZyB0aGUgYXJyYXkgc3RhdGljLgoKU2lnbmVkLW9mZi1i
eTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KLS0tCiBsaWIvdWtib290L2Jv
b3QuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt
KQoKZGlmZiAtLWdpdCBhL2xpYi91a2Jvb3QvYm9vdC5jIGIvbGliL3VrYm9vdC9ib290LmMKaW5k
ZXggNGRjYzBhZmIuLjk3YzdkMThiIDEwMDY0NAotLS0gYS9saWIvdWtib290L2Jvb3QuYworKysg
Yi9saWIvdWtib290L2Jvb3QuYwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIG1haW5f
dGhyZWFkX2Z1bmModm9pZCAqYXJnKQogLyogZGVmaW5lZCBpbiA8dWsvcGxhdC5oPiAqLwogdm9p
ZCB1a3BsYXRfZW50cnlfYXJncChjaGFyICphcmcwLCBjaGFyICphcmdiLCBfX3N6IGFyZ2JfbGVu
KQogewotCWNoYXIgKmFyZ3ZbQ09ORklHX0xJQlVLQk9PVF9NQVhOQkFSR1NdOworCXN0YXRpYyBj
aGFyICphcmd2W0NPTkZJR19MSUJVS0JPT1RfTUFYTkJBUkdTXTsKIAlpbnQgYXJnYyA9IDA7CiAK
IAlpZiAoYXJnMCkgewotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 08 09:36:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 08 Jun 2019 09:36: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 1hZXlq-0001JV-9W; Sat, 08 Jun 2019 09:36:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xiiN=UH=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hZXlo-0001JQ-Lb
 for minios-devel@lists.xen.org; Sat, 08 Jun 2019 09:36:16 +0000
X-Inumbo-ID: db66912d-89d0-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id db66912d-89d0-11e9-8980-bc764e045a96;
 Sat, 08 Jun 2019 09:36:14 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id x17so4403617wrl.9
 for <minios-devel@lists.xen.org>; Sat, 08 Jun 2019 02:36:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=29WsbxlrUUFf3IEmg3QQ1rgNF/t3bq8jZGtbeo03wAQ=;
 b=bTUvm74qkEY4FkH7klfCXmeOAgDw1bjLt3icYhKNY46ZrSc5x9a9/uoiB7Mlz3XV+A
 UCDkH8fuCzT3LOI7J8WdhVtefbg9BB/1JF5joU2JJoAvY91wbKFftkAxIDhXrFgD1Fb2
 u1gk6/1MAm1X3K9MCv2BdzdAzSg6K0XfrcQBnraTl1JJT8O2UsjHhaoQgao3UnoxYNx9
 Ai6abtdbW9Jrc1JmTQB1wO79ZsMOkv4I+mZ+Zk3zEEsQy3D1ytT39NNFPa6MLWH2DH/y
 Q8Y+sX452A7Fzu22iHXKxKjEDJeBadGDmMobWqLXrp6Zpl3SF2yDHjoGcMd6g8uoLbdf
 iu+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=29WsbxlrUUFf3IEmg3QQ1rgNF/t3bq8jZGtbeo03wAQ=;
 b=QSocZE9MKr7fefQi+BsFxG82uPyRKI5/qBuZUsUkyOs3ZzQysvxX3DyVounRQZ5jlf
 N6ceG7CKnUPLpuVxWD96yQnj62uxPS1T0VMtIDdjyUxOmZjJ05z3vEzbqRzyV4+0jLUN
 kUx597SDgGeVwDk+hFd0Ze2tmgaQk3WYARJlml0UOiFaCiZwY6i9l3cmfbzobcIR08fC
 ICjL44tNBS/Q05zJ9D6HE4YlVPows52nQ2q1a9Z5hHliOFCm8rYQmwHAGWszt88z7mC1
 GY44dK9TNOYZYgV+CMcRHE0qOhF7btngYmKdj4RWDFp9PZUc9x4gTJk/2x5tAPS4lQ/g
 eG/w==
X-Gm-Message-State: APjAAAU78pFOCHpF9PHv4pslvFL0nmKXQuahOMw5tsshWvNsVyBVmTCi
 O6BD5CR7aqU3OVDcQ6izfBo=
X-Google-Smtp-Source: APXvYqx/vPetoYXYn/fEsLUoSf+sZyBO8Ssg5coy1wIpwqygVtcG+l49EST7llnxe8VDuZR9kzWkeA==
X-Received: by 2002:a5d:4e50:: with SMTP id r16mr10556087wrt.197.1559986573479; 
 Sat, 08 Jun 2019 02:36:13 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id v13sm3259653wmj.46.2019.06.08.02.36.12
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 08 Jun 2019 02:36:12 -0700 (PDT)
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 minios-devel@lists.xen.org
References: <20190529083833.17237-1-nicolescu.roxana1996@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <29e7b016-f2dd-6d45-479f-094c30f2acfc@gmail.com>
Date: Sat, 8 Jun 2019 12:36:11 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083833.17237-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 01/17] plat/xen: Introduce
 xenbus drivers menu
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA1LzI5
LzE5IDExOjM4IEFNLCBSb3hhbmEgTmljb2xlc2N1IHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW50cm9k
dWNlcyB0aGUgeGVuYnVzIGRyaXZlcnMgbWVudS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSb3hhbmEg
Tmljb2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gLS0tCj4gIHBsYXQv
eGVuL0NvbmZpZy51ayB8IDcgKysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25z
KCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL0NvbmZpZy51ayBi
L3BsYXQveGVuL0NvbmZpZy51awo+IGluZGV4IDIzYmRmMzVhLi4xYWI0Y2M4NSAxMDA2NDQKPiAt
LS0gYS9wbGF0L3hlbi9Db25maWcudWsKPiArKysgYi9wbGF0L3hlbi9Db25maWcudWsKPiBAQCAt
NTgsNyArNTgsNyBAQCBjb25maWcgWEVOX0dOVFRBQgo+ICAJaGVscAo+ICAJCVN1cHBvcnQgZ3Jh
bnQgdGFibGUgb3BlcmF0aW9ucwo+ICAKPiAtbWVudWNvbmZpZyBYRU5fWEVOQlVTCj4gK2NvbmZp
ZyBYRU5fWEVOQlVTCj4gIAlib29sICJYZW5idXMvWGVuU3RvcmUgZHJpdmVyIgo+ICAJZGVmYXVs
dCBuCj4gIAlkZXBlbmRzIG9uIChBUkNIX1g4Nl82NCkKPiBAQCAtNjgsNCArNjgsOSBAQCBtZW51
Y29uZmlnIFhFTl9YRU5CVVMKPiAgCWhlbHAKPiAgCQlSZWdpc3RlcnMgWGVuYnVzIGFzIGJ1cyBk
cml2ZXIgdG8gbGlidWtidXMgYW5kIHByb3ZpZGVzIGEKPiAgCQlYZW5TdG9yZSBjb21tdW5pY2F0
aW9uIEFQSSBmb3IgWGVuIGRyaXZlcnMKPiArCj4gK21lbnUgIlhlbmJ1cyBEcml2ZXJzIgo+ICsg
ICAgICAgIGRlcGVuZHMgb24gWEVOX1hFTkJVUwo+ICsgICAgICAgIGRlcGVuZHMgb24gWEVOX0dO
VFRBQgo+ICtlbmRtZW51Cj4gIGVuZGlmCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 08 09:37:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 08 Jun 2019 09:37: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 1hZXnK-0001LR-EY; Sat, 08 Jun 2019 09:37:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xiiN=UH=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hZXnI-0001LM-N0
 for minios-devel@lists.xen.org; Sat, 08 Jun 2019 09:37:48 +0000
X-Inumbo-ID: 12c51282-89d1-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 12c51282-89d1-11e9-8980-bc764e045a96;
 Sat, 08 Jun 2019 09:37:47 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id v19so3990052wmj.5
 for <minios-devel@lists.xen.org>; Sat, 08 Jun 2019 02:37:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=iWtKNq6Z0o+leM1V5Hoi04JcXgFAMIFDWDZwCDmnAm4=;
 b=eSfvTotzfw8vGkn81ja8Riv8MfKSLqR/FEdDIBqf0VfnXL2IMUwU1SYUXd1dBQTqom
 mejYy9bJK3b4J6Ni1c774dJzGHou8DLg4/C8WhPSlFTpwrut7w9JvNgAdKdc4X9+wS2S
 vR3dv2hYVISLfYJRNKV5N/6C9bL0Sxa42bndSa6Q3bGPiPUsxE9sKyI8o+fqDED5E/dW
 ZGkIdP+G6NOIxLw/4fvistm6KPWmJwLa+Mc4L2LyK01STeZ1ZjrUpAO5Z42ggSDFcWK8
 1uFPlSHZPlAyQ8ZTxCs08YwLtzDhfb/wL7NQbT5013oFCPR68nsDgm055kAQX1DEcv9B
 kLmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=iWtKNq6Z0o+leM1V5Hoi04JcXgFAMIFDWDZwCDmnAm4=;
 b=nhD5WwRq1dz8ml6KE7UJb39Lpe5qeclxCJ/tXPnM7FWvMIGNhqTFr8CR1rKa7nRIvr
 3g4mcZWPTYSe4SCq9Q8L3KJdEKnnCtE5Oyf7BrbBfMCOkQfRADT8e4UlvmFVtNPpzha1
 QS9kAkCZQlMmkQwt8hfiw4V61hJKyuE9v9tY6CcNdA+lkBdyl7I47Up5Fku9rWEiFEFL
 UDoBddn9+hR3LpTFlueIpTgrbyGm0H1P4yC+RaX3HIbjqRznp5omNdLWXGWIScuauD1k
 CAKSio6EXO424khle4FVdIztqQScpj1g2TaxFX91pyrk4E5u/I/ZWDn8VcvJbeJalXf1
 5iLQ==
X-Gm-Message-State: APjAAAXtHsnbJx8t+/zg90iFOmy4jUNie0OOIwicqlScZ685igFA0h2l
 gpZtWq+QT2Cah33iyCKsOEzwdAzZOW8=
X-Google-Smtp-Source: APXvYqwubDYDm1p5xwqZc8mkpfsuVFMMGjwWpAE5v/yj9oam1sspW0dEpXFQ6QpcetpHlUxZMYvIhw==
X-Received: by 2002:a1c:acc8:: with SMTP id v191mr6867398wme.177.1559986666432; 
 Sat, 08 Jun 2019 02:37:46 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id s7sm6845130wmc.2.2019.06.08.02.37.45
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 08 Jun 2019 02:37:46 -0700 (PDT)
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 minios-devel@lists.xen.org
References: <20190529083848.17411-1-nicolescu.roxana1996@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <6359c5f9-bfc2-80fe-73a1-f5eef5a8cc3c@gmail.com>
Date: Sat, 8 Jun 2019 12:37:45 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083848.17411-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 02/17] plat/xen: Add block
 device 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@neclab.eu, simon.kuenzer@neclab.eu, costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA1LzI5
LzE5IDExOjM4IEFNLCBSb3hhbmEgTmljb2xlc2N1IHdyb3RlOgo+IEFkZCB2aXJ0dWFsIGJsb2Nr
IGRldmljZSB0eXBlIGVudHJ5IGluIHRoZSB4ZW5idXMgZGV2aWNlIHR5cGUgZW51bS4KPiAKPiBT
aWduZWQtb2ZmLWJ5OiBSb3hhbmEgTmljb2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFp
bC5jb20+Cj4gLS0tCj4gIHBsYXQveGVuL2luY2x1ZGUveGVuYnVzL3hlbmJ1cy5oIHwgMSArCj4g
IHBsYXQveGVuL3hlbmJ1cy9jbGllbnQuYyAgICAgICAgIHwgMSArCj4gIDIgZmlsZXMgY2hhbmdl
ZCwgMiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUveGVu
YnVzL3hlbmJ1cy5oIGIvcGxhdC94ZW4vaW5jbHVkZS94ZW5idXMveGVuYnVzLmgKPiBpbmRleCBh
OWQ2NDM2Zi4uZTRkYWI0NzggMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4vaW5jbHVkZS94ZW5idXMv
eGVuYnVzLmgKPiArKysgYi9wbGF0L3hlbi9pbmNsdWRlL3hlbmJ1cy94ZW5idXMuaAo+IEBAIC00
OSw2ICs0OSw3IEBACj4gICAqLwo+ICB0eXBlZGVmIGVudW0geGVuYnVzX2Rldl90eXBlIHsKPiAg
CXhlbmJ1c19kZXZfbm9uZSA9IDAsCj4gKwl4ZW5idXNfZGV2X3ZiZCwKPiAgfSB4ZW5idXNfZGV2
X3R5cGVfdDsKPiAgCj4gIHN0cnVjdCB4ZW5idXNfZGV2aWNlOwo+IGRpZmYgLS1naXQgYS9wbGF0
L3hlbi94ZW5idXMvY2xpZW50LmMgYi9wbGF0L3hlbi94ZW5idXMvY2xpZW50LmMKPiBpbmRleCBi
ZDA2MDYzOC4uZmFlMzVlMmEgMTAwNjQ0Cj4gLS0tIGEvcGxhdC94ZW4veGVuYnVzL2NsaWVudC5j
Cj4gKysrIGIvcGxhdC94ZW4veGVuYnVzL2NsaWVudC5jCj4gQEAgLTc0LDYgKzc0LDcgQEAgY29u
c3QgY2hhciAqeGVuYnVzX3N0YXRlX3RvX3N0cihYZW5idXNTdGF0ZSBzdGF0ZSkKPiAgCj4gIHN0
YXRpYyBjb25zdCBjaGFyICpjb25zdCB4Yl9kZXZ0eXBlX3RibFtdID0gewo+ICAJWEVOQlVTX0RF
VlRZUEVfRU5UUlkobm9uZSksCj4gKwlYRU5CVVNfREVWVFlQRV9FTlRSWSh2YmQpLAo+ICB9Owo+
ICAKPiAgY29uc3QgY2hhciAqeGVuYnVzX2RldnR5cGVfdG9fc3RyKGVudW0geGVuYnVzX2Rldl90
eXBlIGRldnR5cGUpCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 08 09:40:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 08 Jun 2019 09:40: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 1hZXpZ-0001wd-Lj; Sat, 08 Jun 2019 09:40:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xiiN=UH=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hZXpY-0001wY-5h
 for minios-devel@lists.xen.org; Sat, 08 Jun 2019 09:40:08 +0000
X-Inumbo-ID: 660f826e-89d1-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 660f826e-89d1-11e9-8980-bc764e045a96;
 Sat, 08 Jun 2019 09:40:07 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id b17so4411733wrq.11
 for <minios-devel@lists.xen.org>; Sat, 08 Jun 2019 02:40:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=QrMoX+noblTuOIT1fW6c0qyjuKHmgtoOziT8OFquUXk=;
 b=a7ogbGS0of8pNMiayOIld/jWn45z/0Ql20ypa8x7TXhsOV0dL7dUVZvXdZ/c8wDy4i
 CQwXWVFpDyLNEEYzuNQQTlex0cS9Sw+JLFeY4YrKEcG7RhdgVXQ9YoZHrGgj+mmPhoNp
 zKElOgKlkxvn5slf9jAOtlXbujJHN3HjuwDydHq9fGiX8sNNz2Bl79POKf+w2vVVDyje
 AShqJAuOKXsihReGcE0Xe9SogBER2Yp5DJbDLn4sGV+4Dw7wTLcucqOqI9Xbdabv892d
 oTGzS4PvNDudWE9yVEUKl+OsC7aUXE+6f7yisf/cDUcgnumkxgwvSh2S6V1L0CMWQNnr
 2sbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=QrMoX+noblTuOIT1fW6c0qyjuKHmgtoOziT8OFquUXk=;
 b=VItv14KtCxNJKW12OHSrHlYMD4BpLiUzNjzMU6a9rZE6GGCkOV9GeYvk3hnX5xnAWm
 tBkcQ+ydFW2A3Dm+5++X54cAHhi83zJ46T3Khx3M61SO/+PDGjoufVN03ozShX0jo2tg
 pQKellh2m5mEp6tj8o70qDC9jZNjXjvUXZ6A4iYRy5UX9uqSUJvBv8d3U5U9DYxG8l0D
 TbwaEOJ7IfBmoX+GqsW9NELQqxL98fNwUXvRGQAqM9B57LZOqnXoUs1w7RppEhfqjs/h
 tIiGolDcFy3vSNCHcuTld47Zb8QVqF+X7+1uWybjTnF6ONTmTmFJea2aC+R1yOhhugo7
 ppVg==
X-Gm-Message-State: APjAAAUfKtmw8LLpQOuLpt3hAzFHGGmlZuzR6a1Mn+8hUet2IE7GR7nQ
 OXx8Q6hocXitUB68xOyCc9s=
X-Google-Smtp-Source: APXvYqydn5G7LTCmX/LxTlaXuycWe+SGjoy6HOnabFp7vuWyHiibvgGwD7LT2/2CrFKCkXUlUn/eog==
X-Received: by 2002:a5d:5390:: with SMTP id d16mr28409234wrv.85.1559986806115; 
 Sat, 08 Jun 2019 02:40:06 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id s10sm5079363wmf.8.2019.06.08.02.40.05
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 08 Jun 2019 02:40:05 -0700 (PDT)
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 minios-devel@lists.xen.org
References: <20190529083904.17641-1-nicolescu.roxana1996@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <77318f97-c781-bfe6-88e8-bdae421fc332@gmail.com>
Date: Sat, 8 Jun 2019 12:40:04 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083904.17641-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 03/17] plat/xen/drivers:
 Blkfront driver 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, simon.kuenzer@neclab.eu, costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA1LzI5
LzE5IDExOjM5IEFNLCBSb3hhbmEgTmljb2xlc2N1IHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW50cm9k
dWNlcyB0aGUgYmxrZnJvbnQgZHJpdmVyIHNrZWxldG9uLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJv
eGFuYSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KPiAtLS0KPiAg
cGxhdC94ZW4vQ29uZmlnLnVrICAgICAgICAgICAgICAgICB8ICA3ICsrKysKPiAgcGxhdC94ZW4v
TWFrZWZpbGUudWsgICAgICAgICAgICAgICB8IDEwICsrKysrKwo+ICBwbGF0L3hlbi9kcml2ZXJz
L2Jsay9ibGtmcm9udC5jICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKPiAgcGxhdC94ZW4vZHJpdmVycy9ibGsvZXhwb3J0c3ltcy51ayB8ICAxICsKPiAgNCBm
aWxlcyBjaGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0
L3hlbi9kcml2ZXJzL2Jsay9ibGtmcm9udC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hl
bi9kcml2ZXJzL2Jsay9leHBvcnRzeW1zLnVrCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL0Nv
bmZpZy51ayBiL3BsYXQveGVuL0NvbmZpZy51awo+IGluZGV4IDFhYjRjYzg1Li5lNmQ5MTMyYyAx
MDA2NDQKPiAtLS0gYS9wbGF0L3hlbi9Db25maWcudWsKPiArKysgYi9wbGF0L3hlbi9Db25maWcu
dWsKPiBAQCAtNzIsNSArNzIsMTIgQEAgY29uZmlnIFhFTl9YRU5CVVMKPiAgbWVudSAiWGVuYnVz
IERyaXZlcnMiCj4gICAgICAgICAgZGVwZW5kcyBvbiBYRU5fWEVOQlVTCj4gICAgICAgICAgZGVw
ZW5kcyBvbiBYRU5fR05UVEFCCj4gKwo+ICtjb25maWcgWEVOX0JMS0ZST05UCj4gKwlib29sICJY
ZW5idXMgQmxrZnJvbnQgRHJpdmVyIgo+ICsJZGVmYXVsdCBuCj4gKwlkZXBlbmRzIG9uIExJQlVL
QkxLREVWCj4gKwloZWxwCj4gKwkJRHJpdmVyIGZvciBibG9jayBkZXZpY2VzCj4gIGVuZG1lbnUK
PiAgZW5kaWYKPiBkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vTWFrZWZpbGUudWsgYi9wbGF0L3hlbi9N
YWtlZmlsZS51awo+IGluZGV4IDY5YjEwZWZjLi45ZmE5MmQxZSAxMDA2NDQKPiAtLS0gYS9wbGF0
L3hlbi9NYWtlZmlsZS51awo+ICsrKyBiL3BsYXQveGVuL01ha2VmaWxlLnVrCj4gQEAgLTEwLDYg
KzEwLDcgQEAgJChldmFsICQoY2FsbCBhZGRwbGF0X3MseGVuLCQoQ09ORklHX1BMQVRfWEVOKSkp
Cj4gICMjCj4gICQoZXZhbCAkKGNhbGwgYWRkcGxhdGxpYix4ZW4sbGlieGVucGxhdCkpCj4gICQo
ZXZhbCAkKGNhbGwgYWRkcGxhdGxpYl9zLHhlbixsaWJ4ZW5idXMsJChDT05GSUdfWEVOX1hFTkJV
UykpKQo+ICskKGV2YWwgJChjYWxsIGFkZHBsYXRsaWJfcyx4ZW4sbGlieGVuYmxrZnJvbnQsJChD
T05GSUdfWEVOX0JMS0ZST05UKSkpCj4gIAo+ICAjIwo+ICAjIyBYZW4gcGxhdGZvcm0gY29tcGls
YXRpb24gc2V0dGluZ3MKPiBAQCAtMTAwLDMgKzEwMSwxMiBAQCBMSUJYRU5CVVNfU1JDUy15ICAg
ICAgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL3hlbmJ1cy94c19jb21tcy5jCj4gIExJ
QlhFTkJVU19TUkNTLXkgICAgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkveGVuYnVz
L3hzX3dhdGNoLmMKPiAgTElCWEVOQlVTX1NSQ1MteSAgICAgICAgICAgICAgICs9ICQoTElCWEVO
UExBVF9CQVNFKS94ZW5idXMveHMuYwo+ICBlbmRpZgo+ICsKPiAraWZlcSAoJChDT05GSUdfWEVO
X0JMS0ZST05UKSx5KQo+ICtMSUJYRU5CTEtGUk9OVF9FWFBPUlRTICAgICAgICAgICAgICAgPSAk
KExJQlhFTlBMQVRfQkFTRSkvZHJpdmVycy9ibGsvZXhwb3J0c3ltcy51awo+ICtMSUJYRU5CTEtG
Uk9OVF9BU0ZMQUdTLXkgICAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQVNGTEFHUy15KQo+ICtM
SUJYRU5CTEtGUk9OVF9BU0lOQ0xVREVTLXkgICAgICAgICArPSAkKExJQlhFTlBMQVRfQVNJTkNM
VURFUy15KQo+ICtMSUJYRU5CTEtGUk9OVF9DRkxBR1MteSAgICAgICAgICAgICArPSAkKExJQlhF
TlBMQVRfQ0ZMQUdTLXkpCj4gK0xJQlhFTkJMS0ZST05UX0NJTkNMVURFUy15ICAgICAgICAgICs9
ICQoTElCWEVOUExBVF9DSU5DTFVERVMteSkKPiArTElCWEVOQkxLRlJPTlRfU1JDUy15ICAgICAg
ICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS9kcml2ZXJzL2Jsay9ibGtmcm9udC5jCj4gK2VuZGlm
Cj4gZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvYmxrL2Jsa2Zyb250LmMgYi9wbGF0L3hl
bi9kcml2ZXJzL2Jsay9ibGtmcm9udC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwMC4uOGJhNjFhZGIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGxhdC94ZW4vZHJpdmVy
cy9ibGsvYmxrZnJvbnQuYwo+IEBAIC0wLDAgKzEsNzAgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBSb3hhbmEgTmlj
b2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHly
aWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCj4gKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4g
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNU
RUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKyNpbmNsdWRlIDx4ZW5idXMveGVu
YnVzLmg+Cj4gKwo+ICsjZGVmaW5lIERSSVZFUl9OQU1FCQkieGVuLWJsa2Zyb250Igo+ICsKPiAr
c3RhdGljIHN0cnVjdCB1a19hbGxvYyAqZHJ2X2FsbG9jYXRvcjsKPiArCj4gK3N0YXRpYyBpbnQg
YmxrZnJvbnRfYWRkX2RldihzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlpbnQg
cmMgPSAwOwo+ICsKPiArCVVLX0FTU0VSVChkZXYgIT0gTlVMTCk7Cj4gKwo+ICsJcmV0dXJuIHJj
Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGJsa2Zyb250X2Rydl9pbml0KHN0cnVjdCB1a19hbGxv
YyAqYWxsb2NhdG9yKQo+ICt7Cj4gKwkvKiBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKi8KPiArCWlm
ICghYWxsb2NhdG9yKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWRydl9hbGxvY2F0b3Ig
PSBhbGxvY2F0b3I7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHhlbmJ1
c19kZXZfdHlwZV90IGJsa2Zyb250X2RldnR5cGVzW10gPSB7Cj4gKwl4ZW5idXNfZGV2X3ZiZCwK
PiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgeGVuYnVzX2RyaXZlciBibGtmcm9udF9kcml2ZXIg
PSB7Cj4gKwkuZGV2aWNlX3R5cGVzID0gYmxrZnJvbnRfZGV2dHlwZXMsCj4gKwkuaW5pdCA9IGJs
a2Zyb250X2Rydl9pbml0LAo+ICsJLmFkZF9kZXYgPSBibGtmcm9udF9hZGRfZGV2Cj4gK307Cj4g
Kwo+ICtYRU5CVVNfUkVHSVNURVJfRFJJVkVSKCZibGtmcm9udF9kcml2ZXIpOwo+IGRpZmYgLS1n
aXQgYS9wbGF0L3hlbi9kcml2ZXJzL2Jsay9leHBvcnRzeW1zLnVrIGIvcGxhdC94ZW4vZHJpdmVy
cy9ibGsvZXhwb3J0c3ltcy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MDAuLjYyMWU5NGYwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BsYXQveGVuL2RyaXZlcnMvYmxr
L2V4cG9ydHN5bXMudWsKPiBAQCAtMCwwICsxIEBACj4gK25vbmUKPiAKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 09 23:13:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 09 Jun 2019 23:13: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 1ha700-00049q-EK; Sun, 09 Jun 2019 23:13: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=b5Mm=UI=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha6zz-00049l-9X
 for minios-devel@lists.xen.org; Sun, 09 Jun 2019 23:13:15 +0000
X-Inumbo-ID: 25227138-8b0c-11e9-b772-1fced7c73c59
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.87]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 25227138-8b0c-11e9-b772-1fced7c73c59;
 Sun, 09 Jun 2019 23:13:09 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4809.eurprd01.prod.exchangelabs.com (20.177.209.28) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Sun, 9 Jun
 2019 23:13:07 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Sun, 9 Jun 2019
 23:13:07 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 0/3] Initial port of fxdiv on Unikraft
Thread-Index: AQHVHxjmIJQLSXlyKEWvRodig8uZ6g==
Date: Sun, 9 Jun 2019 23:13:07 +0000
Message-ID: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0222.eurprd08.prod.outlook.com
 (2603:10a6:802:15::31) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9fb5f1bc-2e86-4187-030c-08d6ed300877
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4809; 
x-ms-traffictypediagnostic: PR1PR01MB4809:
x-microsoft-antispam-prvs: <PR1PR01MB480944D28DEF41A9455FB9E6A6120@PR1PR01MB4809.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3631;
x-forefront-prvs: 006339698F
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(376002)(39830400003)(396003)(346002)(366004)(189003)(199004)(85202003)(508600001)(66446008)(2351001)(53936002)(73956011)(54906003)(2501003)(66946007)(66556008)(64756008)(66476007)(6506007)(68736007)(102836004)(786003)(85182001)(316002)(386003)(99286004)(14454004)(305945005)(7736002)(6916009)(52116002)(5640700003)(3846002)(81156014)(6116002)(81166006)(1076003)(2906002)(8676002)(6436002)(74482002)(6486002)(86362001)(6512007)(66066001)(256004)(25786009)(71190400001)(71200400001)(558084003)(4326008)(186003)(476003)(5660300002)(26005)(50226002)(8936002)(2616005)(486006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4809;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: Zvr+fkRkvQsR++d5iC4in3ZtCM/UvK6jwd4q4dt0vcyllXYgEpL+F9p5B7ex+87JB5wG5io5yxgmvEX6n5F/ECPDWxW9WeJBM3zKEosAXt9pZTwXkRl1YRSV3+PqE8NvNVpnDZt7qaJGt8rzsE0RhWvDzSWFuzKufrl7xFq87zvyguaPzPMOnx8VHolgsOSlK+DxlDGRm+yI6sH3TkoQc7Jl6M/SFq/fpP7EhWuc+04S4vQzd9u51VUmfoIDvHVSwB1Xg3rH+jcKZYEWlYU/HCn8MXAH0IsN4xVbjbxWnpTwYijwFLI7b4LT7GM/Vbu0xUsk9Arp1oupQskeFQLje2PMGAMqbFix15StOqwRIIQ5zFGaxw2881BrL+BQVo+uBEjVNx1r/cNZRq8R8OXj+3Xdt4EpTTd82Vj0Vdgl6GY=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 9fb5f1bc-2e86-4187-030c-08d6ed300877
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2019 23:13:07.8022 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4809
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 0/3] Initial port of fxdiv
 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaGVzIGludHJvZHVjZSBzdXBwb3J0IGZvciBmeGRpdiB0byBVbmlrcmFmdC4NCg0K
VmxhZC1BbmRyZWkgQmFkb2l1ICgzKToNCiAgQWRkIC5naXRpZ25vcmUNCiAgQWRkIGRvY3VtZW50
YXRpb24NCiAgSW5pdGlhbCBwb3J0IG9mIGZ4ZGl2IHRvIFVuaWtyYWZ0DQoNCi0tIA0KMi4yMS4w
DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 09 23:13:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 09 Jun 2019 23:13: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 1ha703-0004AA-G7; Sun, 09 Jun 2019 23:13: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=b5Mm=UI=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha702-00049w-Ha
 for minios-devel@lists.xen.org; Sun, 09 Jun 2019 23:13:18 +0000
X-Inumbo-ID: 2859868e-8b0c-11e9-a992-a37fcca3848f
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.87]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2859868e-8b0c-11e9-a992-a37fcca3848f;
 Sun, 09 Jun 2019 23:13:14 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4809.eurprd01.prod.exchangelabs.com (20.177.209.28) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Sun, 9 Jun
 2019 23:13:08 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Sun, 9 Jun 2019
 23:13:08 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 1/3] Add .gitignore
Thread-Index: AQHVHxjmLUxsnP8cPUGeK/IwOJzr9g==
Date: Sun, 9 Jun 2019 23:13:08 +0000
Message-ID: <20190609231247.32722-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0222.eurprd08.prod.outlook.com
 (2603:10a6:802:15::31) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 66b157a4-d8cf-476c-6a36-08d6ed3008c3
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4809; 
x-ms-traffictypediagnostic: PR1PR01MB4809:
x-microsoft-antispam-prvs: <PR1PR01MB4809573F512CEE36868EA0C0A6120@PR1PR01MB4809.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 006339698F
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(376002)(39830400003)(396003)(346002)(366004)(189003)(199004)(85202003)(508600001)(66446008)(2351001)(53936002)(73956011)(54906003)(2501003)(66946007)(66556008)(64756008)(66476007)(6506007)(76176011)(68736007)(102836004)(786003)(85182001)(316002)(386003)(99286004)(14454004)(305945005)(7736002)(6916009)(52116002)(5640700003)(3846002)(81156014)(6116002)(81166006)(1076003)(4744005)(2906002)(8676002)(6436002)(74482002)(6486002)(86362001)(6512007)(66066001)(256004)(25786009)(71190400001)(71200400001)(4326008)(186003)(476003)(5660300002)(11346002)(26005)(50226002)(8936002)(446003)(2616005)(486006)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4809;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: Yeg0xI6KU2V70ADsT/Bql7NtpzMODzOlq+pilnFlrKPQ9VBO72BbCTLRYCF4bDku0tTNnu+hWptEoHouJ8PWuuP3e7G3SiYkznerQcxt51hMnHQF4avTR7HtS4KQls3UvEiVDLTUhBV+NzMsDmpkxYtXZt7h7bGgxGLdNnqlLjHCzhwEEgnqzXwv4XQBU1aoRouy5Gbhot2mkE61wl+LM1ZyUobpVgW7eXp5bG4DHT44PhtIrdWkAZalXWEZf/pl4hT4BalfSgogkvAU+WNDXJMB/9i9bHc1J5ohFX3znk4grVp6II5KbBnn+kl3VSIffe31mUUNr+xCyXTVpMn3+k6nMvt+tK01m/XDXTpT9k90iQc9XrgCBcLMvVmpte64UHu3QX9MvPHLnSX+UBOlkveXrZC6BxKTupQgXO25VVs=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 66b157a4-d8cf-476c-6a36-08d6ed3008c3
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2019 23:13:08.3180 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4809
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Jun 09 23:13:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 09 Jun 2019 23:13: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 1ha706-0004Aj-Hv; Sun, 09 Jun 2019 23: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=b5Mm=UI=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha705-0004AZ-Ph
 for minios-devel@lists.xen.org; Sun, 09 Jun 2019 23:13:21 +0000
X-Inumbo-ID: 2ab1b8a2-8b0c-11e9-a228-2b54b4048465
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.87]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2ab1b8a2-8b0c-11e9-a228-2b54b4048465;
 Sun, 09 Jun 2019 23:13:18 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4809.eurprd01.prod.exchangelabs.com (20.177.209.28) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Sun, 9 Jun
 2019 23:13:08 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Sun, 9 Jun 2019
 23:13:08 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 2/3] Add documentation
Thread-Index: AQHVHxjmZnB7hvnRu0KqE+ChiHrlCQ==
Date: Sun, 9 Jun 2019 23:13:08 +0000
Message-ID: <20190609231247.32722-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0222.eurprd08.prod.outlook.com
 (2603:10a6:802:15::31) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 8c5ef840-37e4-47c8-63eb-08d6ed30091d
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4809; 
x-ms-traffictypediagnostic: PR1PR01MB4809:
x-microsoft-antispam-prvs: <PR1PR01MB4809E129E92A0A4C468FEB6AA6120@PR1PR01MB4809.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 006339698F
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(376002)(39830400003)(396003)(346002)(366004)(189003)(199004)(85202003)(508600001)(66446008)(2351001)(53936002)(73956011)(54906003)(2501003)(66946007)(66556008)(64756008)(66476007)(6506007)(76176011)(68736007)(102836004)(786003)(85182001)(316002)(386003)(99286004)(14454004)(305945005)(7736002)(6916009)(52116002)(14444005)(5640700003)(3846002)(81156014)(6116002)(81166006)(1076003)(2906002)(8676002)(6436002)(74482002)(6486002)(86362001)(6512007)(66066001)(256004)(25786009)(71190400001)(71200400001)(4326008)(186003)(476003)(5660300002)(11346002)(26005)(50226002)(8936002)(446003)(2616005)(486006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4809;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: S841QHcfoyF6giF/p51WmEvRSxZhboCJif1V/2K55HNheQ/iPEvCkBsAI+kB2WiTAyfwONyGaASgDqSKpWPuslylYJ1Wbj+aApGC2AArar8JYesC071psrmJ/yarNrblwY26FEnwCxSnMGyVwAtQwAI3lFuH+Chqt0Xav/OIkrjs7bGMml7Q5LxZtWFICb+wjHxc/O858pwHA2vGs4rqwW6bBHfAylFz8SekI5pGMM8JfzDhlTfO8Y4PA4aShTzynInTx/a4cOtDB7LkuWCaWx+cOCYh2OmFakP4cRZLbAuZgCpjmLp3xakJLQV2oizKfIOUyXTAAY6TUzKFBFIqkHpoMxDZQQEjGNLF6EDH5DYHZmGnVzy4+mB65SvNyTuIuPNdAMN1hRRfZjpcAGsU6mEhsdZ2s8hL+KKYBfnUMrI=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 8c5ef840-37e4-47c8-63eb-08d6ed30091d
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2019 23:13:08.9116 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4809
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysNCiBDT1BZSU5HLm1kICAgICAgfCA0NiArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogTUFJTlRBSU5FUlMubWQgIHwgMTEgKysr
KysrKysrKysNCiBSRUFETUUubWQgICAgICAgfCAgNSArKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwg
NzAgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQNCiBj
cmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5HLm1kDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENP
UFlJTkcubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgUkVBRE1FLm1kDQoNCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJ
TkdfU1RZTEUubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi41NzMwMDQx
DQotLS0gL2Rldi9udWxsDQorKysgYi9DT0RJTkdfU1RZTEUubWQNCkBAIC0wLDAgKzEsNCBAQA0K
K0NvZGluZyBTdHlsZQ0KKz09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYENP
RElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KZGlm
ZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjVmNTVlY2ENCi0tLSAvZGV2L251bGwNCisrKyBiL0NP
TlRSSUJVVElORy5tZA0KQEAgLTAsMCArMSw0IEBADQorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0
DQorPT09PT09PT09PT09PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05U
UklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCmRpZmYg
LS1naXQgYS9DT1BZSU5HLm1kIGIvQ09QWUlORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu
ZGV4IDAwMDAwMDAuLmJmOGJhMWUNCi0tLSAvZGV2L251bGwNCisrKyBiL0NPUFlJTkcubWQNCkBA
IC0wLDAgKzEsNDYgQEANCitMaWNlbnNlDQorPT09PT09PQ0KKw0KK1VuaWtyYWZ0IG5ld2xpYiB3
cmFwcGVycw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1RoaXMgcmVwb3NpdG9yeSBj
b250YWlucyB3cmFwcGVyIGNvZGUgdG8gYnVpbGQgbmV3bGliIHdpdGggVW5pa3JhZnQuICBUaGUg
Y29kZQ0KK2lzIHB1Ymxpc2hlZCBhcyBhIG1peHR1cmUgb2YgQlNEIGFuZCBNSVQgbGljZW5jZXM7
IGVhY2ggQyBjb2RlIGZpbGUgaW4NCit0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hv
IGlzIHRoZSBjb3B5cmlnaHQgb3duZXIgYW5kIHVuZGVyIHdoaWNoIHRlcm1zDQorYW5kIGNvbmRp
dGlvbnMgdGhlIGNvZGUgaXMgbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlz
c2luZywgdGhlDQorZm9sbG93aW5nIGNvcHlyaWdodCBub3RpY2Ugd2lsbCBhcHBseToNCisNCisJ
Q29weXJpZ2h0IChjKSAyMDE3LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCisNCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorCW1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKwlhcmUgbWV0
Og0KKw0KKwkxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodA0KKwkgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorCTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorCSAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUNCisJICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4NCisJMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJp
Z2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKwkgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKwkgICB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0K
Kw0KKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCisJQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKwlJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQ0KKwlBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQorCUxJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisJQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YN
CisJU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTDQorCUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorCUNPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQor
CUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFDQorCVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKw0KK25l
d2xpYiBzb3VyY2UgY29kZQ0KKy0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0R1cmluZyBidWlsZGlu
ZywgdGhlIGJ1aWxkIHN5c3RlbSB3aWxsIGRvd25sb2FkIHRoZSBuZXdsaWIgc291cmNlIGNvZGUg
YW5kDQorYnVpbGQgc291cmNlIGNvZGUgZnJvbSB0aGUgYG5ld2xpYi9saWJjYCBhbmQgYG5ld2xp
Yi9saWJtYCBkaXJlY3Rvcmllcy4gVGhlDQorY29kZSBpbiB0aGlzIGRpcmVjdG9yaWVzIGhhcyBh
IHZhcmlldHkgb2YgbGljZW5jZXMsIHRoZSBkZXRhaWxzIG9mIHdoaWNoIGFyZQ0KK2V4cGxhaW5l
ZCBpbiB0aGUgYFJFQURNRS5uZXdsaWJgIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
ZSBuZXdsaWIgY29kZS4NCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJT
Lm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uY2JkMDY5Zg0KLS0tIC9k
ZXYvbnVsbA0KKysrIGIvTUFJTlRBSU5FUlMubWQNCkBAIC0wLDAgKzEsMTEgQEANCitNYWludGFp
bmVycyBMaXN0DQorPT09PT09PT09PT09PT09PQ0KKw0KK0ZvciBub3RlcyBvbiBob3cgdG8gcmVh
ZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0K
K3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQorDQorCUxJQkZYRElWLVVOSUtSQUZUDQor
CU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCisJTToJVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KKwlMOgltaW5p
b3MtZGV2ZWxAbGlzdHMueGVuLm9yZw0KKwlGOiAqDQpkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIv
UkVBRE1FLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzI4Yjk3ZQ0K
LS0tIC9kZXYvbnVsbA0KKysrIGIvUkVBRE1FLm1kDQpAQCAtMCwwICsxLDUgQEANCitmeGRpdiBm
b3IgVW5pa3JhZnQNCis9PT09PT09PT09PT09PT09PT09DQorDQorUGxlYXNlIHJlZmVyIHRvIHRo
ZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2AN
CitzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4NCi0tIA0KMi4y
MS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 09 23:13:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 09 Jun 2019 23:13: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 1ha70A-0004BR-Kh; Sun, 09 Jun 2019 23:13: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=b5Mm=UI=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha709-0004B7-0Y
 for minios-devel@lists.xen.org; Sun, 09 Jun 2019 23:13:25 +0000
X-Inumbo-ID: 2c8d05aa-8b0c-11e9-a4ef-0bb12f972757
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.87]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2c8d05aa-8b0c-11e9-a4ef-0bb12f972757;
 Sun, 09 Jun 2019 23:13:21 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4809.eurprd01.prod.exchangelabs.com (20.177.209.28) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Sun, 9 Jun
 2019 23:13:09 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Sun, 9 Jun 2019
 23:13:09 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 3/3] Initial port of fxdiv to Unikraft
Thread-Index: AQHVHxjn+VZOH0JWCk2tZUPGMZWfHA==
Date: Sun, 9 Jun 2019 23:13:09 +0000
Message-ID: <20190609231247.32722-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0222.eurprd08.prod.outlook.com
 (2603:10a6:802:15::31) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a89b8d6e-69b9-4a90-fee0-08d6ed30096c
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4809; 
x-ms-traffictypediagnostic: PR1PR01MB4809:
x-microsoft-antispam-prvs: <PR1PR01MB4809B9E8A23A95440DE4563BA6120@PR1PR01MB4809.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 006339698F
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(376002)(39830400003)(396003)(346002)(366004)(189003)(199004)(85202003)(508600001)(66446008)(2351001)(53936002)(73956011)(54906003)(2501003)(66946007)(66556008)(64756008)(66476007)(6506007)(76176011)(68736007)(102836004)(786003)(85182001)(316002)(386003)(99286004)(14454004)(305945005)(7736002)(6916009)(52116002)(14444005)(5640700003)(3846002)(81156014)(6116002)(81166006)(1076003)(2906002)(8676002)(6436002)(74482002)(6486002)(86362001)(6512007)(66066001)(6306002)(256004)(25786009)(71190400001)(71200400001)(4326008)(186003)(476003)(5660300002)(11346002)(26005)(50226002)(8936002)(446003)(2616005)(486006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4809;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 24BTYGa0JiYhtut9x1jdUOtvatgD+VRflkTmtUNUkQ7Ecl0eJ48oUfUsu5IEhu74NEhK0zWe9ValGmyNBzuE3b/fG2TigMa973PQLtxAiCWcKaIlN5MWmloyKbHXPu4dwlLpILk8CSKP4REjhM62adKKMcx3YHORMyq4we5a+gAk6qqmJlhkUVb51JCq7l4lyTRFAz7eu0Kc0rC4ZkBAh6/TC/Zm2s1a76H7N0twLqLhhQpjYsBRuT7IhCdF8rc3ODSf2MIenGxveYp4Ml0era0OkctZRPhAshtJRxkahTyhlGoyUxUDVCAsvHqPXnCA4+3OyijR1tRa15WxKjIW6z7/rDZ+zSCvvsAQVUF4D3icz7WlEV8jL4ON1+gPoSap2bPcU8gkOxfPF2mYC08nfFHHOeGdkk29gFl9ASztkFg=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: a89b8d6e-69b9-4a90-fee0-08d6ed30096c
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2019 23:13:09.3724 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4809
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 3/3] Initial port of fxdiv
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGZ4ZGl2IHRvIFVuaWtyYWZ0IGFzIGFuIGV4dGVy
bmFsIGxpYnJhcnkuIExpYmN4eCBpcw0KcmVxdWlyZWQuIFdoZW4gYWRkaW5nIHRoZSBsaWJyYXJ5
IHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QgaXQgc2hvdWxkIHN0YXkgYWZ0ZXINCmxpYmN4eCAoZS5n
LiAuLi46JChVS19MSUJTKS9saWJjeHg6JChVS19MSUJTKS9saWJmeGRpdjouLi4pLg0KDQpTaWdu
ZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+DQotLS0NCiBDb25maWcudWsgICAgIHwgIDUgKysrKw0KIE1ha2VmaWxlLnVrICAg
fCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN
CiBleHBvcnRzeW1zLnVrIHwgIDEgKw0KIDMgZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygr
KQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFr
ZWZpbGUudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwb3J0c3ltcy51aw0KDQpkaWZmIC0tZ2l0
IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw
MDAwMC4uMGZjN2NhOA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQ29uZmlnLnVrDQpAQCAtMCwwICsx
LDUgQEANCittZW51Y29uZmlnIExJQkZYRElWDQorICAgIGJvb2wgIkM5OS9DKysgaGVhZGVyLW9u
bHkgbGlicmFyeSBmb3IgZGl2aXNpb24gdmlhIGZpeGVkLXBvaW50IG11bHRpcGxpY2F0aW9uIGJ5
IGludmVyc2UiDQorICAgIHNlbGVjdCBMSUJDWFgNCisgICAgZGVmYXVsdCBuDQorDQpkaWZmIC0t
Z2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu
ZGV4IDAwMDAwMDAuLmExYWMwNjUNCi0tLSAvZGV2L251bGwNCisrKyBiL01ha2VmaWxlLnVrDQpA
QCAtMCwwICsxLDc0IEBADQorIyAgbGliZnhkaXYgY29uZmlnIGZpbGUNCisjDQorIyAgQXV0aG9y
czogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJv
Pg0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2Yg
QnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisjICBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMNCisjICBhcmUgbWV0Og0KKyMNCisjICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisj
ICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyMg
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1l
cyBvZiBpdHMNCisjICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorIw0KKyMgIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIg0KKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyMg
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUNCisjICBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorIyAgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisjICBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MNCisjICBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyMgIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQor
IyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUNCisjICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisj
DQorIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5Z
IFdBWS4NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgTGlicmFyeSByZWdpc3RyYXRp
b24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGli
ZnhkaXYsJChDT05GSUdfTElCRlhESVYpKSkNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
KyMgU291cmNlcw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorTElCRlhESVZfVkVSU0lPTj1t
YXN0ZXINCitMSUJGWERJVl9VUkw9aHR0cHM6Ly9naXRodWIuY29tL01hcmF0eXN6Y3phL0ZYZGl2
L2FyY2hpdmUvbWFzdGVyLnppcA0KK0xJQkZYRElWX1BBVENIRElSPSQoTElCRlhESVZfQkFTRSkv
cGF0Y2hlcw0KKyQoZXZhbCAkKGNhbGwgZmV0Y2gsbGliZnhkaXYsJChMSUJGWERJVl9VUkwpKSkN
CisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgSGVscGVycw0KKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQorTElCRlhESVZfU1VCRElSPUZYZGl2LW1hc3Rlcg0KK0xJQkZYRElWX1NSQz0k
KExJQkZYRElWX09SSUdJTikvJChMSUJGWERJVl9TVUJESVIpDQorDQorIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMNCisjIExpYnJhcnkgaW5jbHVkZXMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
K0NJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkkKExJQkZYRElWX1NSQykvaW5jbHVk
ZQ0KK0NJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkkKExJQkZYRElWX0JBU0UpL2lu
Y2x1ZGUNCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkkKExJQkZYRElWX1NS
QykvaW5jbHVkZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQkZYRElWKSArPSAtSSQoTElCRlhE
SVZfQkFTRSkvaW5jbHVkZQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBHbG9iYWwg
ZmxhZ3MNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5n
cyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sgbmVhdGVyDQorU1VQUFJFU1NfRkxBR1Mg
Kz0gLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8tbm9ubnVs
bAlcDQorLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJlbCAtV25v
LWNoYXItc3Vic2NyaXB0cwkJXA0KKy1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2luZy1m
aWVsZC1pbml0aWFsaXplcnMgLVduby11bmluaXRpYWxpemVkCQlcDQorLVduby1hcnJheS1ib3Vu
ZHMgLVduby1tYXliZS11bmluaXRpYWxpemVkIC1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2Vk
LXZhbHVlCVwNCistV25vLXVudXNlZC1tYWNyb3MgLVduby1wYXJlbnRoZXNlcyAtV25vLWltcGxp
Y2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uCQlcDQorLVduby1taXNzaW5nLWJyYWNlcyAtV25vLWVu
ZGlmLWxhYmVscyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQlcDQorLVduby1pbXBsaWNp
dC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV25vLXR5cGUtbGltaXRzIC1Xbm8tc2lnbi1jb21wYXJl
DQorTElCRlhESVZfQ0ZMQUdTLXkgICAgKz0gICQoU1VQUFJFU1NfRkxBR1MpDQorTElCRlhESVZf
Q1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCisNCmRpZmYgLS1naXQgYS9leHBv
cnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51aw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw
MDAwMDAuLjYyMWU5NGYNCi0tLSAvZGV2L251bGwNCisrKyBiL2V4cG9ydHN5bXMudWsNCkBAIC0w
LDAgKzEgQEANCitub25lDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 00:19:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 00:19:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1ha81c-0000ki-LH; Mon, 10 Jun 2019 00:19:00 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha81b-0000kc-HJ
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 00:18:59 +0000
X-Inumbo-ID: 54c29d6a-8b15-11e9-8439-5bc05f131677
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.42]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 54c29d6a-8b15-11e9-8439-5bc05f131677;
 Mon, 10 Jun 2019 00:18:55 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 00:18:53 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 00:18:53 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 0/3] Initial port of fp16 on Unikraft
Thread-Index: AQHVHyIV1cH/A2rUKEy8g0iPvRID+g==
Date: Mon, 10 Jun 2019 00:18:53 +0000
Message-ID: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR02CA0057.eurprd02.prod.outlook.com
 (2603:10a6:802:14::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a3020620-00af-47db-8d8b-08d6ed393833
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB4777B982FF6339BF2D0E6CABA6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3383;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(136003)(346002)(39830400003)(366004)(376002)(189003)(199004)(14454004)(2501003)(52116002)(53936002)(508600001)(305945005)(4326008)(256004)(25786009)(54906003)(99286004)(5640700003)(6436002)(5660300002)(86362001)(6486002)(66556008)(1076003)(66446008)(73956011)(6916009)(71200400001)(66946007)(66476007)(64756008)(71190400001)(6512007)(68736007)(316002)(2616005)(476003)(558084003)(386003)(26005)(186003)(6506007)(102836004)(486006)(7736002)(85202003)(81166006)(2906002)(8936002)(6116002)(3846002)(2351001)(786003)(8676002)(81156014)(85182001)(66066001)(50226002)(74482002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: NMQ91MeWwRrz/7L0fHZHxrDfyHo3QMStl/ecpJkckz9KVu4bW9/xvrIjp4+EOicsgd9GHDq6cYEtOHVQOeB3GMhPTt18YPKkXX0g0/E9GjjJj2L1/kr//hsX7fx6LfU49VGlXhU4wy48M6TGqYawiHBDW960MyVZLKaJIAeVvTynpsinng2myrmpLxjwxifh7Foq0lWWjGkwHYpsC7A3qR+DphHPamDZxfE0xj8iWfdoTw/FwHFL72C7lWDvdX4DLZCJYHAkindcVTOL3hN4Nj6jxCXOFcan/hTqERWHkaEZ2fTmg5WPwHN1VLs5UmWDlMzSQ+CrAPPqtXydgbrHhyAl1UW4y0qYSVhGDxDTq+sUqEBBRo2om7wEPotKG2ChC6arGzLusrRDvJEsU+PVm+RAQny2tasmKGAueQsQhHg=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: a3020620-00af-47db-8d8b-08d6ed393833
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 00:18:53.4563 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 0/3] Initial port of fp16 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaGVzIGludHJvZHVjZSBzdXBwb3J0IGZvciBmcDE2IHRvIFVuaWtyYWZ0LiBGUDE2
IGlzIGEgaGVhZGVyLW9ubHkNCmxpYnJhcnkgZm9yIGNvbnZlcnNpb24gdG8vZnJvbSBoYWxmLXBy
ZWNpc2lvbiBmbG9hdGluZyBwb2ludCBmb3JtYXRzDQoNClZsYWQtQW5kcmVpIEJhZG9pdSAoMyk6
DQogIEFkZCAuZ2l0aWdub3JlDQogIEFkZCBkb2N1bWVudGF0aW9uDQogIEluaXRpYWwgcG9ydCBv
ZiBmcDE2IHRvIFVuaWtyYWZ0DQoNCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 00:20:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 00: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 1ha82m-0001LL-Q0; Mon, 10 Jun 2019 00:20: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=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha82l-0001LG-OZ
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 00:20:11 +0000
X-Inumbo-ID: 802ac20c-8b15-11e9-9784-6b99012f6922
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.41]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 802ac20c-8b15-11e9-9784-6b99012f6922;
 Mon, 10 Jun 2019 00:20:07 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 00:20:06 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 00:20:06 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 1/3] Add .gitignore
Thread-Index: AQHVHyJBChlmA0nf5E+Uq8LJJ2v3YQ==
Date: Mon, 10 Jun 2019 00:20:06 +0000
Message-ID: <20190610001837.25284-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR02CA0057.eurprd02.prod.outlook.com
 (2603:10a6:802:14::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: bf3ef7f1-6890-44fd-1325-08d6ed3963b7
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB477764EE3ED22125ADFB4F07A6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(136003)(346002)(39830400003)(366004)(376002)(189003)(199004)(14454004)(2501003)(52116002)(53936002)(508600001)(305945005)(4326008)(256004)(76176011)(25786009)(54906003)(99286004)(5640700003)(6436002)(5660300002)(86362001)(6486002)(66556008)(1076003)(66446008)(73956011)(6916009)(4744005)(71200400001)(66946007)(66476007)(64756008)(71190400001)(6512007)(68736007)(446003)(11346002)(316002)(2616005)(476003)(386003)(26005)(186003)(6506007)(102836004)(486006)(7736002)(85202003)(81166006)(2906002)(8936002)(6116002)(3846002)(2351001)(786003)(8676002)(81156014)(85182001)(66066001)(50226002)(74482002)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: V7yT9pDF8KsrGAdt4VirshzxYtn7fgBIoi5SX7KQ3aYm7yLhNiwPyiZuJwbWhTQ2Ft38pTg6JvZuB41MozPnEi6udj6jeLojKvM2EQZdLQZHoO/zoD7nnCE1UyBkmOEVms3M9VZsB7w9hNq9kUIcrg1MZ+uPV4WtAilLMzlUmlCkOSPTv7fP05OfGXDc7NuZpAPwtT1yANd6ECCgg+Ts9HCSbRSCsGkndzYCwvTTDVTVL0GdEnDP6kvw6LUFLhJmAuSv3aUYA7mJkwCSpgRkpvvhlGvkglyhLFfT0510mBWphoXWGjMX5761y3SlHVjQDkalSKkcRauMigehWKvV3AstEe1B9QxmtJ6Zmv7FmGRmB+HhocENql3OtH3vI3BZOtnogr7miJ7gYSx3vbJubyd1jmaSIpz5CHsY5jdi3vM=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: bf3ef7f1-6890-44fd-1325-08d6ed3963b7
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 00:20:06.3673 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 00:20:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 00:20: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 1ha82q-0001Lq-SN; Mon, 10 Jun 2019 00:20: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=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha82q-0001Lk-2B
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 00:20:16 +0000
X-Inumbo-ID: 82a7eb22-8b15-11e9-bb7d-679fb12a6471
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.41]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 82a7eb22-8b15-11e9-bb7d-679fb12a6471;
 Mon, 10 Jun 2019 00:20:11 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 00:20:07 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 00:20:07 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
Thread-Index: AQHVHyJBGKGBTu8Ke0qP9btuiifGsA==
Date: Mon, 10 Jun 2019 00:20:07 +0000
Message-ID: <20190610001837.25284-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR02CA0057.eurprd02.prod.outlook.com
 (2603:10a6:802:14::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 21e6f4a5-af6e-410f-5ffe-08d6ed396443
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB47770ECA521E05FE68F55F10A6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:7219;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(136003)(346002)(39830400003)(366004)(376002)(189003)(199004)(14454004)(2501003)(52116002)(53936002)(508600001)(305945005)(4326008)(256004)(76176011)(25786009)(54906003)(99286004)(5640700003)(6436002)(5660300002)(86362001)(6486002)(66556008)(1076003)(66446008)(73956011)(6916009)(71200400001)(66946007)(66476007)(64756008)(71190400001)(6512007)(68736007)(446003)(11346002)(316002)(2616005)(476003)(386003)(26005)(186003)(6506007)(102836004)(486006)(7736002)(85202003)(81166006)(2906002)(8936002)(6116002)(3846002)(2351001)(786003)(8676002)(81156014)(85182001)(66066001)(50226002)(74482002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: NtlfoniJLi3HC3iAzHnpQvq2Q8pcTq0ie/0OrIhGRJ3ujWGCq0YavU2XAEZJ00gIuATYf0JaWSKPJgk/k54KFdlUO/Y137HEpf2OI4qRsxGXITQskHSB6CZZ5b1IxWOAa0mDXQOdHPIYVGJI8uON3x9Bpr01BhRxVmCyJ5/s1jPCwnK8TbCK+xSl/DMlVGcDQtuJiu3CxkD8NWArTyeS9/2vdi6DndhtLlQSCt+QZM17kfQ9TjnRzHYhSOZ138rVN+Uw7tPjM/yiqKh4p9jk5EEusoL6wNNm45L9qN3ABLc3bQI6QitEBXIOlbgXkTQmRNYaGX2PvvqVFsf939RXKRjQlzUr9c/UZZgTX9o5p5VmU3JpgOu5rKJtHzx83aG0yyHz2LO8ATNt2NLA7XpMe4U09U/P1WTbl+ADCu7HdWc=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 21e6f4a5-af6e-410f-5ffe-08d6ed396443
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 00:20:07.2688 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysNCiBNQUlOVEFJTkVSUy5tZCAgfCAxMSArKysrKysrKysrKw0KIFJF
QURNRS5tZCAgICAgICB8ICA1ICsrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25z
KCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZA0KIGNyZWF0ZSBtb2RlIDEw
MDY0NCBDT05UUklCVVRJTkcubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQN
CiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQoNCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZ
TEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw
MDAwLi41NzMwMDQxDQotLS0gL2Rldi9udWxsDQorKysgYi9DT0RJTkdfU1RZTEUubWQNCkBAIC0w
LDAgKzEsNCBAQA0KK0NvZGluZyBTdHlsZQ0KKz09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZl
ciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBv
c2l0b3J5Lg0KZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjVmNTVlY2ENCi0tLSAvZGV2L251
bGwNCisrKyBiL0NPTlRSSUJVVElORy5tZA0KQEAgLTAsMCArMSw0IEBADQorQ29udHJpYnV0aW5n
IHRvIFVuaWtyYWZ0DQorPT09PT09PT09PT09PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIg
dG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3Np
dG9yeS4NCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kDQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMTM4NGE5Zg0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvTUFJTlRBSU5FUlMubWQNCkBAIC0wLDAgKzEsMTEgQEANCitNYWludGFpbmVycyBMaXN0
DQorPT09PT09PT09PT09PT09PQ0KKw0KK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGlu
Zm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KK3RoZSBtYWlu
IFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQorDQorCUxJQkZQMTYtVU5JS1JBRlQNCisJTToJRmVsaXBl
IEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KKwlNOglWbGFkLUFuZHJlaSBCYWRvaXUg
PHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQorCUw6CW1pbmlvcy1kZXZlbEBs
aXN0cy54ZW4ub3JnDQorCUY6ICoNCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQN
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5iYTAwOGU0DQotLS0gL2Rldi9u
dWxsDQorKysgYi9SRUFETUUubWQNCkBAIC0wLDAgKzEsNSBAQA0KK2xpYmZwMTYgZm9yIFVuaWty
YWZ0DQorPT09PT09PT09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURN
RS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gDQorc3ViZGly
ZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQotLSANCjIuMjEuMA0KDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 00:20:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 00:20:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1ha82s-0001MN-UG; Mon, 10 Jun 2019 00: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=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1ha82s-0001MD-BZ
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 00:20:18 +0000
X-Inumbo-ID: 84d09e1c-8b15-11e9-95e0-73057319980a
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.41]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 84d09e1c-8b15-11e9-95e0-73057319980a;
 Mon, 10 Jun 2019 00:20:15 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 00:20:08 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 00:20:08 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 3/3] Initial port of fp16 to Unikraft
Thread-Index: AQHVHyJCE8pRx/vVKkqrj2MfJ42qVg==
Date: Mon, 10 Jun 2019 00:20:08 +0000
Message-ID: <20190610001837.25284-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR02CA0057.eurprd02.prod.outlook.com
 (2603:10a6:802:14::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 82d27421-8ad6-4c86-700c-08d6ed3964d0
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB4777AAA94A299FFBAA329403A6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(136003)(346002)(39830400003)(366004)(376002)(189003)(199004)(14454004)(2501003)(52116002)(53936002)(508600001)(305945005)(4326008)(256004)(76176011)(25786009)(54906003)(14444005)(99286004)(5640700003)(6436002)(6306002)(5660300002)(86362001)(6486002)(66556008)(1076003)(66446008)(73956011)(6916009)(71200400001)(66946007)(66476007)(64756008)(71190400001)(6512007)(68736007)(446003)(11346002)(316002)(2616005)(476003)(386003)(26005)(186003)(6506007)(102836004)(486006)(7736002)(85202003)(81166006)(2906002)(8936002)(6116002)(3846002)(2351001)(786003)(8676002)(81156014)(85182001)(66066001)(50226002)(74482002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: jCPQbTmup832mkL2pdRmKNM8fO9HAcBHTvEcRucjn57nRuNO3Owq8BSX0P88r2HcvlRAUG1O5/yBpYTsmReZXXoKa8PSfmGMmuQcz4/rG+oKxaBIXgN3cZlmhDqSZhM8XypmV2bVLDMuPeQPvRMGTsCH3b4ELhRtLKBnHtIHEnxaBAWMG8Ac/vN5Z8/MBd/39QAPSrT3Smb/QaTl3hRkVFel+yUaCy5XidCu+Z34un7aFS/2NlFIgrjavxY+wE0TIWQsoJ4NGkQ6zOzuKLRG58fuOu4Qbvc/+g45WjXifzDpC3EskkUK/hdQMS9bcpOSOC0DUKDJAVaSv3H5bh3tKxO/p9DlLLkRPYYB1S2kt6HgsqXUGPqS47mRxFv/V/+tradFWH89NlFXA6p3rzGTfjxrjJKqmFdfqAKh9acmJJU=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 82d27421-8ad6-4c86-700c-08d6ed3964d0
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 00:20:08.1823 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 3/3] Initial port of fp16 to
 Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGZwMTYgdG8gVW5pa3JhZnQgYXMgYW4gZXh0ZXJu
YWwgbGlicmFyeS4gTGliY3h4IGlzDQpyZXF1aXJlZC4gV2hlbiBhZGRpbmcgdGhlIGxpYnJhcnkg
dG8gdGhlIGRlcGVuZGVuY3kgbGlzdCBpdCBzaG91bGQgc3RheSBhZnRlcg0KbGliY3h4IChlLmcu
IC4uLjokKFVLX0xJQlMpL2xpYmN4eDokKFVLX0xJQlMpL2xpYmZwMTY6Li4uKS4NCg0KU2lnbmVk
LW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3Mu
dXBiLnJvPg0KLS0tDQogQ29uZmlnLnVrICAgICB8ICA1ICsrKysNCiBNYWtlZmlsZS51ayAgIHwg
NzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQog
ZXhwb3J0c3ltcy51ayB8ICAxICsNCiAzIGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKykN
CiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrDQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2Vm
aWxlLnVrDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsNCg0KZGlmZiAtLWdpdCBh
L0NvbmZpZy51ayBiL0NvbmZpZy51aw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw
MDAuLjk4Y2NjODQNCi0tLSAvZGV2L251bGwNCisrKyBiL0NvbmZpZy51aw0KQEAgLTAsMCArMSw1
IEBADQorbWVudWNvbmZpZyBMSUJGUDE2DQorICAgIGJvb2wgIkNvbnZlcnNpb24gdG8vZnJvbSBo
YWxmLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBmb3JtYXRzIg0KKyAgICBzZWxlY3QgTElCQ1hY
DQorICAgIGRlZmF1bHQgbg0KKw0KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUu
dWsNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4yYzRmZTkzDQotLS0gL2Rl
di9udWxsDQorKysgYi9NYWtlZmlsZS51aw0KQEAgLTAsMCArMSw3NCBAQA0KKyMgIGxpYmZwMTYg
Y29uZmlnIGZpbGUNCisjDQorIyAgQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2Fu
ZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTks
IFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVk
Lg0KKyMNCisjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQNCisjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisjICBhcmUgbWV0Og0KKyMNCisj
ICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUNCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisjICAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0K
KyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uDQorIw0KKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyMgIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUN
CisjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUNCisjICBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SDQorIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YNCisjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisjICBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTg0KKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCisjICBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisjDQorIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBF
WFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIw0KKyMgTGlicmFyeSByZWdpc3RyYXRpb24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
KyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZnAxNiwkKENPTkZJR19MSUJGUDE2KSkpDQorDQor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIFNvdXJjZXMNCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIw0KK0xJQkZQMTZfVkVSU0lPTj1tYXN0ZXINCitMSUJGUDE2X1VSTD1odHRwczovL2dpdGh1
Yi5jb20vTWFyYXR5c3pjemEvRlAxNi9hcmNoaXZlL21hc3Rlci56aXANCitMSUJGUDE2X1BBVENI
RElSPSQoTElCRlAxNl9CQVNFKS9wYXRjaGVzDQorJChldmFsICQoY2FsbCBmZXRjaCxsaWJmcDE2
LCQoTElCRlAxNl9VUkwpKSkNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgSGVscGVy
cw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorTElCRlAxNl9TVUJESVI9RlAxNi1tYXN0ZXIN
CitMSUJGUDE2X1NSQz0kKExJQkZQMTZfT1JJR0lOKS8kKExJQkZQMTZfU1VCRElSKQ0KKw0KKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBMaWJyYXJ5IGluY2x1ZGVzDQorIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMNCitDSU5DTFVERVMtJChDT05GSUdfTElCRlAxNikgKz0gLUkkKExJQkZQMTZf
U1JDKS9pbmNsdWRlDQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkZQMTYpICs9IC1JJChMSUJGUDE2
X0JBU0UpL2luY2x1ZGUNCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGUDE2KSArPSAtSSQoTElC
RlAxNl9TUkMpL2luY2x1ZGUNCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGUDE2KSArPSAtSSQo
TElCRlAxNl9CQVNFKS9pbmNsdWRlDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIEds
b2JhbCBmbGFncw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBTdXBwcmVzcyBzb21lIHdh
cm5pbmdzIHRvIG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXINCitTVVBQUkVTU19G
TEFHUyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUgLVduby1u
b25udWxsCVwNCistV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVs
IC1Xbm8tY2hhci1zdWJzY3JpcHRzCQlcDQorLVduby11bnVzZWQtZnVuY3Rpb24gLVduby1taXNz
aW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQJCVwNCistV25vLWFycmF5
LWJvdW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgLVduby1wb2ludGVyLXNpZ24gLVduby11
bnVzZWQtdmFsdWUJXA0KKy1Xbm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8t
aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24JCVwNCistV25vLW1pc3NpbmctYnJhY2VzIC1X
bm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCVwNCistV25vLWlt
cGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1Xbm8tdHlwZS1saW1pdHMgLVduby1zaWduLWNv
bXBhcmUNCitMSUJGUDE2X0NGTEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdTKQ0KK0xJQkZQ
MTZfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCisNCmRpZmYgLS1naXQgYS9l
eHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51aw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4
IDAwMDAwMDAuLjYyMWU5NGYNCi0tLSAvZGV2L251bGwNCisrKyBiL2V4cG9ydHN5bXMudWsNCkBA
IC0wLDAgKzEgQEANCitub25lDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 11:34:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 11:34: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 1haIZa-0002T8-Qf; Mon, 10 Jun 2019 11:34:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haIZZ-0002St-Q0
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 11:34:45 +0000
X-Inumbo-ID: beb34d04-8b73-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.80]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id beb34d04-8b73-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 11:34:44 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 11:34:40 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 11:34:40 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH 1/2] lib/nolibc: Add _SC_NPROCESSORS_ONLN define
Thread-Index: AQHVH4B9l2pVhExSl0WhW3o4H2yYpw==
Date: Mon, 10 Jun 2019 11:34:40 +0000
Message-ID: <20190610113430.11352-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0198.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::22) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: e8fae81f-a060-49b0-1978-08d6ed979fe5
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB477772C517C715199D12BB37A6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(136003)(366004)(39830400003)(396003)(199004)(189003)(476003)(446003)(2616005)(11346002)(186003)(316002)(486006)(102836004)(6506007)(26005)(386003)(68736007)(81156014)(8676002)(85202003)(74482002)(66066001)(85182001)(7736002)(2906002)(50226002)(8936002)(81166006)(786003)(2351001)(3846002)(6116002)(4326008)(305945005)(508600001)(54906003)(25786009)(256004)(76176011)(52116002)(14454004)(2501003)(99286004)(53936002)(73956011)(6486002)(1076003)(64756008)(71190400001)(66556008)(6916009)(71200400001)(4744005)(66476007)(66946007)(66446008)(6436002)(5640700003)(6512007)(5660300002)(86362001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: T+2298lslBJeQ3BwBcbxUxUx2miJ1Md9AS8W/o7ubRojauQ9CfFg8RgIQpc/5n9wUsMB3l6ERQPHNUD2l/I9EO4PXwd70qRCFIAZJ+m2ly0QgVvDMw50kcc0VJeXR8Q0NMM9Lp0MSZkVaoVLQKnfPcyv8iqXhVgFM32at0P/37RNKmdVCOHFO9/Z8zymsR7IOUgGTq3nOPphuz3i2c8Pw5MBCdb934b2bPLob0tLvNEZ2SahhQMd74lbiwSygj+V8TJmGW5LavRXN1bFYthR4tCZlenzMMspjgsO6/RNzSuzCsdfUAoOIOuHzF3rGWRhxHDs6qspjuKyTQVhwetWq0DthOa10RMrd77pzdw55SOgCQkHAX8PP85J4MhWJUbZ4DLteyc4FuoEc2M71b5gxhfH3GmpjEv2IGROyG57tLI=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: e8fae81f-a060-49b0-1978-08d6ed979fe5
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 11:34:40.3716 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT PATCH 1/2] lib/nolibc: Add
 _SC_NPROCESSORS_ONLN define
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oIHwgMSArDQog
MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspDQoNCmRpZmYgLS1naXQgYS9saWIvbm9saWJj
L2luY2x1ZGUvdW5pc3RkLmggYi9saWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmgNCmluZGV4IDM0
ZGMxZjhkLi5kYjNiNWE2ZiAxMDA2NDQNCi0tLSBhL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQu
aA0KKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oDQpAQCAtNDYsNiArNDYsNyBAQCBl
eHRlcm4gIkMiIHsNCiAjZGVmaW5lIF9fTkVFRF9zaXplX3QNCiAjZGVmaW5lIF9fTkVFRF9zc2l6
ZV90DQogI2RlZmluZSBfX05FRURfb2ZmX3QNCisjZGVmaW5lIF9TQ19OUFJPQ0VTU09SU19PTkxO
IDEwDQogI2luY2x1ZGUgPG5vbGliYy1pbnRlcm5hbC9zaGFyZWRkZWZzLmg+DQogDQogdW5zaWdu
ZWQgaW50IHNsZWVwKHVuc2lnbmVkIGludCBzZWNvbmRzKTsNCi0tIA0KMi4yMS4wDQoNCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 11:34:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 11:34: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 1haIZb-0002TF-Se; Mon, 10 Jun 2019 11:34:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haIZa-0002Sy-4T
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 11:34:46 +0000
X-Inumbo-ID: bf083d26-8b73-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.80]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bf083d26-8b73-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 11:34:45 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 11:34:43 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 11:34:42 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH 2/2] lib/uksysinfo: Implement sysconf check for
 _SC_NPROCESSORS_ONLN
Thread-Index: AQHVH4B+JQYRHiSTGkqbeGHtLPRASw==
Date: Mon, 10 Jun 2019 11:34:41 +0000
Message-ID: <20190610113430.11352-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0198.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::22) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 63b56c16-9ade-4680-f712-08d6ed97a0bb
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB4777BF422329A426AF976F61A6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4125;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(136003)(366004)(39830400003)(396003)(199004)(189003)(476003)(446003)(2616005)(11346002)(186003)(316002)(486006)(102836004)(6506007)(26005)(386003)(68736007)(81156014)(8676002)(85202003)(74482002)(66066001)(85182001)(7736002)(2906002)(50226002)(8936002)(81166006)(786003)(2351001)(3846002)(6116002)(4326008)(305945005)(508600001)(54906003)(25786009)(14444005)(256004)(76176011)(52116002)(14454004)(2501003)(99286004)(53936002)(73956011)(6486002)(1076003)(64756008)(71190400001)(66556008)(6916009)(71200400001)(4744005)(66476007)(66946007)(66446008)(6436002)(5640700003)(6512007)(5660300002)(86362001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: /XIxKL3vR5Yaziq59dYPVRoyaMkKKwb/MsQaMbIs0Y4vxGPn45uwKerKu/JWCAPb/WR+ahXf2Bbdzay+4gF6ZAN9C7rzSr2jsaYuFdIwE97p2Hg33XOf1UKrj4HBGVPIcg1bzxc3Dr6X2knjwp4dxaz80u2wATpUimhzvnnYx69nwmivjhiBl/AFwJhYs3Um2+hQKBAd2rPldvaR3poERFOHwpxF8PlQ8klOMFThtt/wLEIldXyQDu/gbP+Vp6jvN4ZEZ6ENhkYJnqA7rw3t2zl3ntoh+kBl4NKfYSw0GKCP+VnazVKNUwOkFbFwQMo2A8sP7LeWIC5JpKIh2Gqp4eREtQXNhKYVBfQ/f2NHe9uhRq74RuMBoD6fjV48iOQrAFcejyFdhafaO9dct3QfNTVQCnevMsiVh/qvOBvTpLs=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 63b56c16-9ade-4680-f712-08d6ed97a0bb
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 11:34:42.1995 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/uksysinfo: Implement
 sysconf check for _SC_NPROCESSORS_ONLN
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhlIHN5c2NvbmYgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBw
cm9jZXNzb3JzIHdoZW4NCl9TQ19OUFJPQ0VTU09SU19PTkxOIGlzIHBhc3NlZC4gU2luY2Ugd2Ug
ZG8gbm90IGhhdmUgU01QIG9uIFVuaWtyYWZ0IHdlIHJldHVybiAxDQp3aGVuIF9TQ19OUFJPQ0VT
U09SU19PTkxOIGlzIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24uDQoNClNpZ25l
ZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNz
LnVwYi5ybz4NCi0tLQ0KIGxpYi91a3N5c2luZm8vc3lzaW5mby5jIHwgNiArKysrKy0NCiAxIGZp
bGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQoNCmRpZmYgLS1naXQg
YS9saWIvdWtzeXNpbmZvL3N5c2luZm8uYyBiL2xpYi91a3N5c2luZm8vc3lzaW5mby5jDQppbmRl
eCA0YzEzMzQ5My4uNDk4OGE3OGYgMTAwNjQ0DQotLS0gYS9saWIvdWtzeXNpbmZvL3N5c2luZm8u
Yw0KKysrIGIvbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMNCkBAIC0zNCw2ICszNCw3IEBADQogDQog
I2luY2x1ZGUgPHN0ZGRlZi5oPg0KICNpbmNsdWRlIDxsaW1pdHMuaD4NCisjaW5jbHVkZSA8dW5p
c3RkLmg+DQogI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+DQogI2luY2x1ZGUgPHVrL2Vzc2VudGlh
bHMuaD4NCiANCkBAIC00Nyw4ICs0OCwxMSBAQCBsb25nIHBhdGhjb25mKGNvbnN0IGNoYXIgKnBh
dGggX191bnVzZWQsIGludCBuYW1lIF9fdW51c2VkKQ0KIAlyZXR1cm4gMDsNCiB9DQogDQotbG9u
ZyBzeXNjb25mKGludCBuYW1lIF9fdW51c2VkKQ0KK2xvbmcgc3lzY29uZihpbnQgbmFtZSkNCiB7
DQorCWlmIChuYW1lID09IF9TQ19OUFJPQ0VTU09SU19PTkxOKQ0KKwkgICAgcmV0dXJuIDE7DQor
DQogCXJldHVybiAwOw0KIH0NCiANCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 11:34:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 11:34: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 1haIZa-0002T3-Nw; Mon, 10 Jun 2019 11:34:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haIZZ-0002So-G5
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 11:34:45 +0000
X-Inumbo-ID: bc8d3429-8b73-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.80]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bc8d3429-8b73-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 11:34:42 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 11:34:39 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 11:34:39 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH 0/2] Add check for _SC_NPROCESSORS_ONLN in
 sysconf
Thread-Index: AQHVH4B95baoyFe47UCp1UPb9g07eQ==
Date: Mon, 10 Jun 2019 11:34:39 +0000
Message-ID: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0198.eurprd07.prod.outlook.com
 (2603:10a6:802:3f::22) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 88cdf7a6-32b0-4168-21d4-08d6ed979f45
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB47773ED4FB23C8A2DE8F0C92A6130@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:6430;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(136003)(366004)(39830400003)(396003)(199004)(189003)(476003)(2616005)(186003)(316002)(486006)(102836004)(6506007)(26005)(386003)(68736007)(81156014)(8676002)(85202003)(74482002)(66066001)(85182001)(7736002)(2906002)(50226002)(8936002)(81166006)(786003)(2351001)(3846002)(6116002)(4326008)(305945005)(508600001)(54906003)(25786009)(14444005)(256004)(52116002)(14454004)(2501003)(99286004)(53936002)(73956011)(6486002)(1076003)(64756008)(71190400001)(66556008)(6916009)(71200400001)(4744005)(66476007)(66946007)(66446008)(6436002)(5640700003)(6512007)(5660300002)(86362001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: EKVS+L4koHHX0j36xUGqSF06YCbqYRWcRXwvUfNkfj4Fn2tr3gXm2bn3QACkNYbQA4gvx0uw4p01Bu0iP/W+pUAnMc1zk4V3nYVqK5RL3ExNlESIICABLQCZr24/6BuNWoMUN5aw17Z+HYyGsC/77kZ6MFUtn51GPDxT9OjZDEbzS8CnAbahrMXuIvqhDMse3mM8QjG3FeaNfCz4TwlljSCykvJkxlVSesK6TiNCHRHRGoM9PJ4x02umKjsJzA1WVrrPLZfXHf/zwJyuKBPz7WbIGwdTVPyaSUnusrUHmdN3ZRbIjLbJ0HtUiXw9JgYu8mcxMwTk0kgrNUBNGHOqtRZX4i1oGOpLQwYjijHmz88gYi7O4l4KxQ2s64SYd0zxeae69Kc0szbUIkbFRBz1y+gmatpEG7A+Ffg6njX1OXM=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 88cdf7a6-32b0-4168-21d4-08d6ed979f45
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 11:34:39.1054 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT PATCH 0/2] Add check for
 _SC_NPROCESSORS_ONLN in sysconf
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

c3lzY29uZiBzaG91bGQgcmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBjdXJyZW50bHkg
YXZhaWxhYmxlIHdoZW4NCnRoZSBfU0NfTlBST0NFU1NPUlNfT05MTiBhcmd1bWVudCBpcyBwYXNz
ZWQuIFdlIHJldHVybiAxIGFzIFNNUCBpcyBub3QNCmF2YWlsYWJsZSBvbiBVbmlrcmFmdC4NCg0K
VmxhZC1BbmRyZWkgQmFkb2l1ICgyKToNCiAgbGliL25vbGliYzogQWRkIF9TQ19OUFJPQ0VTU09S
U19PTkxOIGRlZmluZQ0KICBsaWIvdWtzeXNpbmZvOiBJbXBsZW1lbnQgc3lzY29uZiBjaGVjayBm
b3IgX1NDX05QUk9DRVNTT1JTX09OTE4NCg0KIGxpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaCB8
IDEgKw0KIGxpYi91a3N5c2luZm8vc3lzaW5mby5jICAgICB8IDYgKysrKystDQogMiBmaWxlcyBj
aGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCg0KLS0gDQoyLjIxLjANCg0K
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 13:21:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 13:21: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 1haKEi-0002ZN-1a; Mon, 10 Jun 2019 13:21:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haKEg-0002Z2-ME
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 13:21:18 +0000
X-Inumbo-ID: a14775b2-8b82-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a14775b2-8b82-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 13:21:18 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5002.eurprd01.prod.exchangelabs.com (20.177.209.208) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Mon, 10 Jun
 2019 13:21:14 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 13:21:14 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH 2/3] Add documentation
Thread-Index: AQHVH49gUiuKn/ykqkGdOy+8YlwGlw==
Date: Mon, 10 Jun 2019 13:21:14 +0000
Message-ID: <20190610132039.18219-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0119.eurprd08.prod.outlook.com
 (2603:10a6:800:d4::21) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 5e521823-b5d5-482c-db2f-08d6eda6832b
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5002; 
x-ms-traffictypediagnostic: PR1PR01MB5002:
x-microsoft-antispam-prvs: <PR1PR01MB500254E3C071A2F1C3B4142DA6130@PR1PR01MB5002.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:7219;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(376002)(346002)(39830400003)(136003)(366004)(189003)(199004)(786003)(64756008)(66556008)(66446008)(66476007)(6512007)(54906003)(50226002)(6486002)(316002)(81156014)(81166006)(8676002)(5640700003)(8936002)(4326008)(508600001)(446003)(6436002)(74482002)(2906002)(476003)(66066001)(11346002)(2616005)(3846002)(6916009)(6116002)(2501003)(486006)(66946007)(53936002)(85182001)(73956011)(256004)(1076003)(52116002)(305945005)(5660300002)(14454004)(102836004)(76176011)(26005)(386003)(25786009)(6506007)(186003)(99286004)(2351001)(85202003)(71200400001)(71190400001)(68736007)(86362001)(7736002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5002;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ZwTsIZNtR/cDmbELTlZ6kFrjaOsSoTW9Pc4ryW145GJKkRT92PowZ4zk405M2knJ7U8m0u2/WwKUtVy0HOgEvzqb79XV8tH+DzJg4WXa8X5v2MM+QDE75u/GkdqRLvE7FxV5i8prp4GvlHE3aavMgdT9jV4XsK+CsBOs31I4K9tImF1XBnP2SK10Ff9WP06sJbJt0IBzLF5OLwA3BeXoUFBB0wh08tgB8AJHH1wMGDoaUge/qFBsBtY3EuFZgLHkVmIOHXznedITBFxJfsw1aK0D6/Y7SU2+ZUpeJ4xh2WeXjZJ0zcDoTkzIiVIrzFfPSdG52sYOGxkFOp7qLozZGgvuLmm60TdsgPRCI+hUHkT2d8ymqjjBZTKsv9Q9Eivyp1D1riSqlmGknjqBih3nOEgtXXFwFPyQ1euPk7RYxZQ=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 5e521823-b5d5-482c-db2f-08d6eda6832b
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 13:21:14.2796 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5002
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysNCiBNQUlOVEFJTkVSUy5tZCAgfCAxMSArKysrKysrKysrKw0KIFJF
QURNRS5tZCAgICAgICB8ICA1ICsrKysrDQogNCBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25z
KCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZA0KIGNyZWF0ZSBtb2RlIDEw
MDY0NCBDT05UUklCVVRJTkcubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQN
CiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQoNCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZ
TEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw
MDAwLi41NzMwMDQxDQotLS0gL2Rldi9udWxsDQorKysgYi9DT0RJTkdfU1RZTEUubWQNCkBAIC0w
LDAgKzEsNCBAQA0KK0NvZGluZyBTdHlsZQ0KKz09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZl
ciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBv
c2l0b3J5Lg0KZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjVmNTVlY2ENCi0tLSAvZGV2L251
bGwNCisrKyBiL0NPTlRSSUJVVElORy5tZA0KQEAgLTAsMCArMSw0IEBADQorQ29udHJpYnV0aW5n
IHRvIFVuaWtyYWZ0DQorPT09PT09PT09PT09PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIg
dG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3Np
dG9yeS4NCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kDQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNTI1YmZiNA0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvTUFJTlRBSU5FUlMubWQNCkBAIC0wLDAgKzEsMTEgQEANCitNYWludGFpbmVycyBMaXN0
DQorPT09PT09PT09PT09PT09PQ0KKw0KK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGlu
Zm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KK3RoZSBtYWlu
IFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQorDQorCUxJQlBUSFJFQURQT09MLVVOSUtSQUZUDQorCU06
CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCisJTToJVmxhZC1BbmRyZWkg
QmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KKwlMOgltaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVuLm9yZw0KKwlGOiAqDQpkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVB
RE1FLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzA4Y2RmNA0KLS0t
IC9kZXYvbnVsbA0KKysrIGIvUkVBRE1FLm1kDQpAQCAtMCwwICsxLDUgQEANCitsaWJwdGhyZWFk
cG9vbCBmb3IgVW5pa3JhZnQNCis9PT09PT09PT09PT09PT09PT09DQorDQorUGxlYXNlIHJlZmVy
IHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBg
ZG9jL2ANCitzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4NCi0t
IA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 13:21:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 13:21: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 1haKEh-0002ZH-Vb; Mon, 10 Jun 2019 13:21:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haKEg-0002Yt-Cg
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 13:21:18 +0000
X-Inumbo-ID: a0f51691-8b82-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a0f51691-8b82-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 13:21:17 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5002.eurprd01.prod.exchangelabs.com (20.177.209.208) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Mon, 10 Jun
 2019 13:21:13 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 13:21:13 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH 1/3] Add .gitignore
Thread-Index: AQHVH49g7ciVS4ceJ06X5hSSMxcMVA==
Date: Mon, 10 Jun 2019 13:21:13 +0000
Message-ID: <20190610132039.18219-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0119.eurprd08.prod.outlook.com
 (2603:10a6:800:d4::21) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 58b6dbaa-a931-46f7-dbda-08d6eda682a8
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5002; 
x-ms-traffictypediagnostic: PR1PR01MB5002:
x-microsoft-antispam-prvs: <PR1PR01MB5002977AB7445C01D6E295AEA6130@PR1PR01MB5002.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(376002)(346002)(39830400003)(136003)(366004)(189003)(199004)(786003)(64756008)(66556008)(66446008)(66476007)(6512007)(54906003)(50226002)(6486002)(316002)(81156014)(81166006)(8676002)(5640700003)(8936002)(4326008)(508600001)(446003)(6436002)(74482002)(2906002)(476003)(66066001)(11346002)(2616005)(3846002)(6916009)(6116002)(2501003)(486006)(66946007)(53936002)(85182001)(73956011)(256004)(1076003)(52116002)(305945005)(5660300002)(4744005)(14454004)(102836004)(76176011)(26005)(386003)(25786009)(6506007)(186003)(99286004)(2351001)(85202003)(71200400001)(71190400001)(68736007)(86362001)(7736002)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5002;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 0ebQvttXLSc67JkVzybwdIyRGweVGEX2AThNEvqiNWuxhjP3Yb4H94bgF6ve/4Vslr4GvbXF/XfoFVYyrJHKtBlq8BGKpqZn3aEVaEukDb3aO0eQzmiy40RJtP3neE+bnxTok03SaJ4dJpCQcsMuXWuBRsno7eTLWJtcdDRbTMmpkauQQIN/5+0m6+4+sXQc+101cDz4KIAVIMQmVOapy0lsHwDHvQzU6jIkVxBp0gK1p8Vbmv/9uVO37MdbqFcPyza4d4ufJ5fbwJ1I8WIR93nh8u56A/nbbGQDgKAj+HD3s3qS97olEZ69iUecc7Oo5YeCWH/kCQ4AdDu1wjFnyE/9/9PXii5jc+U6tC+qyP0/fh6o23H9PmXCLZGjTdSAcvj1fotqJBw5x00dgLYpPx+pSVd0zxNACqGpgPDiCRk=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 58b6dbaa-a931-46f7-dbda-08d6eda682a8
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 13:21:13.5360 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5002
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 13:21:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 13:21: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 1haKEi-0002ZS-45; Mon, 10 Jun 2019 13:21:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haKEg-0002Z7-Sm
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 13:21:18 +0000
X-Inumbo-ID: a0a89210-8b82-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.79]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a0a89210-8b82-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 13:21:17 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4956.eurprd01.prod.exchangelabs.com (20.177.208.222) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Mon, 10 Jun
 2019 13:21:15 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 13:21:15 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH 3/3] Initial port of pthreadpool to
 Unikraft
Thread-Index: AQHVH49h58PsrguVOkOVLsxm1gLdvA==
Date: Mon, 10 Jun 2019 13:21:15 +0000
Message-ID: <20190610132039.18219-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0119.eurprd08.prod.outlook.com
 (2603:10a6:800:d4::21) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: ddd22960-0628-4877-4d18-08d6eda683d3
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4956; 
x-ms-traffictypediagnostic: PR1PR01MB4956:
x-microsoft-antispam-prvs: <PR1PR01MB4956E56BC69CFF0C0F4656B5A6130@PR1PR01MB4956.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39830400003)(396003)(136003)(366004)(199004)(189003)(50226002)(305945005)(386003)(6506007)(25786009)(14454004)(76176011)(508600001)(8676002)(102836004)(4326008)(8936002)(7736002)(81156014)(81166006)(86362001)(74482002)(71190400001)(71200400001)(14444005)(256004)(53936002)(6916009)(1076003)(68736007)(5660300002)(52116002)(6116002)(3846002)(64756008)(486006)(186003)(2906002)(2501003)(66066001)(6486002)(6512007)(11346002)(476003)(26005)(2616005)(6436002)(54906003)(6306002)(5640700003)(99286004)(66946007)(85202003)(73956011)(66446008)(786003)(316002)(2351001)(85182001)(66476007)(66556008)(446003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4956;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: wAC8vSNOGQGnY7B38wHVQwL1FB3kX3emJxedp3hOit+2m+h+c2l+Y1kjeXiHY0fgoaMqC1RltuLIJHFTGrhGoG4TM6hzStxEPfOALvL1p69WWtMKiK/FO9oXf5f2RkKu1qHCjlna2w3VGsXgkczmuxJRpsoUYhUARcpNJedc9KFM1BpY0XWqIAcBr7cKtg6lri90lPvDyYXT4LZdFSfUyhKpugEkQeVtWirCoLFvfsACCE6Az7C2l4s58y/Os1jkUMN8NZquEPdocrUl2oz0xaFj5rpsaydmjzYmk0GnJbZkvloL0u8b0e549h7jakGvNBaAi2p5zi93Hao84jGd00ZHwVx1S57jhki7gojnvAJqI3187OqxkhpeMWk8AcRGKKXiVXzm2Cfol4POT7ac4gJOq3u0zkCHlKWawOIQsYQ=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: ddd22960-0628-4877-4d18-08d6eda683d3
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 13:21:15.3689 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4956
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 3/3] Initial port of
 pthreadpool to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGZwMTYgdG8gVW5pa3JhZnQgYXMgYW4gZXh0ZXJu
YWwgbGlicmFyeS4gTGliZnhkaXYNCmFuZCBwdGhyZWFkcyBpcyByZXF1aXJlZC4gV2hlbiBhZGRp
bmcgdGhlIGxpYnJhcnkgdG8gdGhlIGRlcGVuZGVuY3kgbGlzdCBpdA0Kc2hvdWxkIHN0YXkgYWZ0
ZXIgbGliZnhkaXYNCihlLmcuIC4uLjokKFVLX0xJQlMpL2xpYmZ4ZGl2OiQoVUtfTElCUykvbGli
cHRocmVhZHBvb2w6Li4uKS4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2
bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KLS0tDQogQ29uZmlnLnVrICAgfCAg
NiArKysrKw0KIE1ha2VmaWxlLnVrIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMo
KykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrDQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1h
a2VmaWxlLnVrDQoNCmRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5iZTA3NTM3DQotLS0gL2Rldi9udWxsDQorKysg
Yi9Db25maWcudWsNCkBAIC0wLDAgKzEsNiBAQA0KK21lbnVjb25maWcgTElCUFRIUkVBRFBPT0wN
CisgICAgYm9vbCAicHRocmVhZC1iYXNlZCB0aHJlYWQgcG9vbCBmb3IgQy9DKysiDQorICAgIHNl
bGVjdCBMSUJGWERJVg0KKyAgICBzZWxlY3QgTElCUFRIUkVBRF9FTUJFRERFRA0KKyAgICBkZWZh
dWx0IG4NCisNCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uOGZhNDI2Mw0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvTWFrZWZpbGUudWsNCkBAIC0wLDAgKzEsNzYgQEANCisjICBsaWJwdGhyZWFkcG9vbCBjb25m
aWcgZmlsZQ0KKyMNCisjICBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAxOSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQor
Iw0KKyMgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dA0KKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyMgIGFyZSBtZXQ6DQorIw0KKyMgIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0DQorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLg0KKyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0K
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uDQorIyAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJp
Z2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorIyAg
ICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4NCisjDQorIyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQorIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyMg
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFDQorIyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KKyMgIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IN
CisjICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRg0KKyMgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyMgIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
DQorIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkNCisjICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KKyMgIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLg0KKyMNCisjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJB
Q1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQorIyBMaWJyYXJ5IHJlZ2lzdHJhdGlvbg0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorJChl
dmFsICQoY2FsbCBhZGRsaWJfcyxsaWJwdGhyZWFkcG9vbCwkKENPTkZJR19MSUJQVEhSRUFEUE9P
TCkpKQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBTb3VyY2VzDQorIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMNCitMSUJQVEhSRUFEUE9PTF9WRVJTSU9OPW1hc3Rlcg0KK0xJQlBUSFJF
QURQT09MX1VSTD1odHRwczovL2dpdGh1Yi5jb20vTWFyYXR5c3pjemEvcHRocmVhZHBvb2wvYXJj
aGl2ZS9tYXN0ZXIuemlwDQorTElCUFRIUkVBRFBPT0xfUEFUQ0hESVI9JChMSUJQVEhSRUFEUE9P
TF9CQVNFKS9wYXRjaGVzDQorJChldmFsICQoY2FsbCBmZXRjaCxsaWJwdGhyZWFkcG9vbCwkKExJ
QlBUSFJFQURQT09MX1VSTCkpKQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBIZWxw
ZXJzDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJQVEhSRUFEUE9PTF9TVUJESVI9cHRo
cmVhZHBvb2wtbWFzdGVyDQorTElCUFRIUkVBRFBPT0xfU1JDPSQoTElCUFRIUkVBRFBPT0xfT1JJ
R0lOKS8kKExJQlBUSFJFQURQT09MX1NVQkRJUikNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iw0KKyMgTGlicmFyeSBpbmNsdWRlcw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorQ0lOQ0xV
REVTLSQoQ09ORklHX0xJQlBUSFJFQURQT09MKSArPSAtSSQoTElCUFRIUkVBRFBPT0xfU1JDKS9p
bmNsdWRlDQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURQT09MKSArPSAtSSQoTElCUFRI
UkVBRFBPT0xfQkFTRSkvaW5jbHVkZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURQ
T09MKSArPSAtSSQoTElCUFRIUkVBRFBPT0xfU1JDKS9pbmNsdWRlDQorQ1hYSU5DTFVERVMtJChD
T05GSUdfTElCUFRIUkVBRFBPT0wpICs9IC1JJChMSUJQVEhSRUFEUE9PTF9CQVNFKS9pbmNsdWRl
DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIEdsb2JhbCBmbGFncw0KKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjDQorIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1ha2UgdGhlIGJ1
aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXINCitTVVBQUkVTU19GTEFHUyArPSAtV25vLXVudXNlZC1w
YXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUgLVduby1ub25udWxsCVwNCistV25vLXVudXNl
ZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRz
CQlcDQorLVduby11bnVzZWQtZnVuY3Rpb24gLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVy
cyAtV25vLXVuaW5pdGlhbGl6ZWQJCVwNCistV25vLWFycmF5LWJvdW5kcyAtV25vLW1heWJlLXVu
aW5pdGlhbGl6ZWQgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQtdmFsdWUJXA0KKy1Xbm8t
dW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVj
bGFyYXRpb24JCVwNCistV25vLW1pc3NpbmctYnJhY2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8t
dW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCVwNCistV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xh
cmF0aW9uIC1Xbm8tdHlwZS1saW1pdHMgLVduby1zaWduLWNvbXBhcmUNCitMSUJQVEhSRUFEUE9P
TF9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCitMSUJQVEhSRUFEUE9PTF9DWFhG
TEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdTKQ0KKw0KK0xJQlBUSFJFQURQT09MX1NSQ1Mt
eSArPSAkKExJQlBUSFJFQURQT09MX1NSQykvc3JjL3RocmVhZHBvb2wtcHRocmVhZHMuYw0KKw0K
LS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 13:21:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 13:21: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 1haKEh-0002ZC-TR; Mon, 10 Jun 2019 13:21:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haKEg-0002Ys-Bm
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 13:21:18 +0000
X-Inumbo-ID: 9ee7d938-8b82-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9ee7d938-8b82-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 13:21:14 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5002.eurprd01.prod.exchangelabs.com (20.177.209.208) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Mon, 10 Jun
 2019 13:21:12 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 13:21:12 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH 0/3] Initial port of pthreadpool on
 Unikraft
Thread-Index: AQHVH49fTA5oV6HSVUyPvKZ5rytntA==
Date: Mon, 10 Jun 2019 13:21:12 +0000
Message-ID: <20190610132039.18219-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0119.eurprd08.prod.outlook.com
 (2603:10a6:800:d4::21) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 25f0d821-4954-4229-48a6-08d6eda681ed
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5002; 
x-ms-traffictypediagnostic: PR1PR01MB5002:
x-microsoft-antispam-prvs: <PR1PR01MB5002D8B3918CAA0551A0E5D4A6130@PR1PR01MB5002.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3826;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(376002)(346002)(39830400003)(136003)(366004)(189003)(199004)(786003)(64756008)(66556008)(66446008)(66476007)(6512007)(54906003)(50226002)(6486002)(316002)(81156014)(81166006)(8676002)(5640700003)(8936002)(4326008)(508600001)(6436002)(74482002)(2906002)(476003)(66066001)(2616005)(3846002)(6916009)(6116002)(2501003)(486006)(66946007)(53936002)(85182001)(73956011)(256004)(1076003)(52116002)(305945005)(5660300002)(14454004)(102836004)(26005)(386003)(25786009)(6506007)(186003)(99286004)(558084003)(2351001)(85202003)(71200400001)(71190400001)(68736007)(86362001)(7736002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5002;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: KVxD+bJX8bhmXyf+fsL6dV9jT372ZKowrYhlTBgr06ZtNwuLNoXdgVc3KZZDLoyxtRbFp+r0u0Z8k0bqdkdxOjIIut1UaWG1nHLtAxu90OVTHcnj0Zf5e7FVoJO8l9bxZoqJKBPHiOV5JCDIDZ58Af4ZYxtL4M/IpQ+gDWramSeZUiizjgw4GUnPREIZImFCRMcAheVPTRgpnK8HgE7IaXLS2XQ5orqKjKF5y0oeJ1Tb86mzrKPn74Zan7bXiXGe71N2kL10KKo6GFgVvR3kNvEBYg68TQf+cTmjHDTChs1j4MAv1h1yvHCtmA6AVdTipZvBcfJhcKEEJpyEdYIuigW5adEUdwHxlZVHYdY1VGs5MaVKRoeyqExNqVv0sfzQuVyYz1OAo06hqx8RbEbiQ6buTPmaCdPUfo54tMwE6UM=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 25f0d821-4954-4229-48a6-08d6eda681ed
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 13:21:12.3117 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5002
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 0/3] Initial port of
 pthreadpool 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHB0aHJlYWRwb29sIG9uIFVuaWtyYWZ0
LiBQdGhyZWFkcG9vbCBpcyANCnB0aHJlYWQtYmFzZWQgdGhyZWFkIHBvb2wgZm9yIEMvQysrLg0K
DQpWbGFkLUFuZHJlaSBCYWRvaXUgKDMpOg0KICBBZGQgLmdpdGlnbm9yZQ0KICBBZGQgZG9jdW1l
bnRhdGlvbg0KICBJbml0aWFsIHBvcnQgb2YgcHRocmVhZHBvb2wgdG8gVW5pa3JhZnQNCg0KLS0g
DQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 15:31:23 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 15:31: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 1haMGX-0004PY-NP; Mon, 10 Jun 2019 15:31:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=42hR=UJ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1haMGW-0004PT-5C
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 15:31:20 +0000
X-Inumbo-ID: c9e746d4-8b94-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c9e746d4-8b94-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 15:31:17 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id c2so9634559wrm.8
 for <minios-devel@lists.xen.org>; Mon, 10 Jun 2019 08:31:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=GfD8XIheR6YgRjmWDFl9OwoJMhH7FqEBrvoAoAP6rMQ=;
 b=uJ1QcIP0v5QXuWEbgc4DBQ31JE+5svcdadqELfY9WQ2cILfjfbJQqQt7AhaETfs3bi
 K0wbaLDMvyIznKGA3QzaySCMMwVgM4FAwnFjNWL60nW9Eds0oTa/8l6b5fNOH3HpTPOo
 DUSnb+WJjzhrtOepi4sNpYVWNsNN1hfhUNcOa2k5/M6IhTy0SF+KP7yOZv5pjfHikhlK
 22gs+qsjMyzLxBK5M9vfngkQ3NhDMm3+uxY8SwmV85vazAHm9RMwvLD3cW0iDd492J9q
 XIZ1UhWiE4IKE/n/qOCo3ljSNWsCqKYKLdlPOIZugPKZkWg3C3MShrPrVl3f4xO1fT5q
 wH8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=GfD8XIheR6YgRjmWDFl9OwoJMhH7FqEBrvoAoAP6rMQ=;
 b=tTs3Tyz0IJJPujjp4xD6xzG96HXO4FL3cIXX9VQdgtFyJ3dALGCS8n0GJTQv4scynT
 +zlXPDRggMHkAVa54Lsiqc8gsAnU1EeVicArjJ5/QqYR//TBpnfVHt/mbK7eIZajadxP
 J3gqe/pMshtWgByCNsBYspuLO3VfRKgT2dzXwo+KJGOhg1dGCNkkhm+0FnPyMPwWvtKy
 69hKZvrv6AIVIGV1NjeKSdvL236hLqYBNPcg3Z3kACSg/PFRQ1L1kBkuN6w3naHJHie1
 S4GacuYDpZBQh08N3UKyfqcajCSJTyh3SJowhOI+A4e/yIJTlLU8jVVUZjlU78jQs9tg
 rBOw==
X-Gm-Message-State: APjAAAVEJgyHWL8RgaGJtqOk6HjaamIjvhwaepv8uNOzmxPtIX6CEUKH
 dNsRXeeTPRZ7n0y1t0cGRIDGQq4W
X-Google-Smtp-Source: APXvYqwKEHJNOM1kXFOa1eqt53A+edG5s39ZrVIrWHk/fq70BU2ihXp3mS1ZECUD8Iu09hMhIPl7ug==
X-Received: by 2002:a5d:4bd0:: with SMTP id l16mr15516776wrt.141.1560180675705; 
 Mon, 10 Jun 2019 08:31:15 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id a125sm11529219wmf.42.2019.06.10.08.31.14
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Jun 2019 08:31:15 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610113430.11352-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <f2d9eb29-9f42-ac18-1f7b-63e3f474c410@gmail.com>
Date: Mon, 10 Jun 2019 18:31:13 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190610113430.11352-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/uksysinfo: Implement
 sysconf check for _SC_NPROCESSORS_ONLN
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwKCk9uIDYvMTAvMTkgMjozNCBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp
IHdyb3RlOgo+IFRoZSBzeXNjb25mIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdGhlIG51bWJlciBv
ZiBhY3RpdmUgcHJvY2Vzc29ycyB3aGVuCj4gX1NDX05QUk9DRVNTT1JTX09OTE4gaXMgcGFzc2Vk
LiBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBTTVAgb24gVW5pa3JhZnQgd2UgcmV0dXJuIDEKPiB3aGVu
IF9TQ19OUFJPQ0VTU09SU19PTkxOIGlzIHBhc3NlZCBhcyBhcmd1bWVudCB0byB0aGUgZnVuY3Rp
b24uCj4gCj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5i
YWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+IC0tLQo+ICBsaWIvdWtzeXNpbmZvL3N5c2luZm8uYyB8
IDYgKysrKystCj4gIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o
LSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMgYi9saWIvdWtzeXNp
bmZvL3N5c2luZm8uYwo+IGluZGV4IDRjMTMzNDkzLi40OTg4YTc4ZiAxMDA2NDQKPiAtLS0gYS9s
aWIvdWtzeXNpbmZvL3N5c2luZm8uYwo+ICsrKyBiL2xpYi91a3N5c2luZm8vc3lzaW5mby5jCj4g
QEAgLTM0LDYgKzM0LDcgQEAKPiAgCj4gICNpbmNsdWRlIDxzdGRkZWYuaD4KPiAgI2luY2x1ZGUg
PGxpbWl0cy5oPgo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gICNpbmNsdWRlIDxzeXMvdXRzbmFt
ZS5oPgo+ICAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICAKPiBAQCAtNDcsOCArNDgsMTEg
QEAgbG9uZyBwYXRoY29uZihjb25zdCBjaGFyICpwYXRoIF9fdW51c2VkLCBpbnQgbmFtZSBfX3Vu
dXNlZCkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1sb25nIHN5c2NvbmYoaW50IG5hbWUgX191
bnVzZWQpCj4gK2xvbmcgc3lzY29uZihpbnQgbmFtZSkKPiAgewo+ICsJaWYgKG5hbWUgPT0gX1ND
X05QUk9DRVNTT1JTX09OTE4pCj4gKwkgICAgcmV0dXJuIDE7Cj4gKwoKWW91IGhhdmUgY2hlY2tw
YXRjaCB3YXJuaW5ncyBoZXJlLiBZb3Ugc3RpbGwgZGlkbid0IGF1dG9tYXRlIHRoaXMKdXBzdHJl
YW1pbmcgcHJvY2VkdXJlLCBkaWRuJ3QgeW91PwoKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 15:36:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 15:36: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 1haMLp-0004Ue-5s; Mon, 10 Jun 2019 15:36:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=42hR=UJ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1haMLn-0004UZ-4d
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 15:36:47 +0000
X-Inumbo-ID: 8d77200a-8b95-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8d77200a-8b95-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 15:36:45 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id c6so8644733wml.0
 for <minios-devel@lists.xen.org>; Mon, 10 Jun 2019 08:36:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=rzneJPROcmqce0/ATLd3DPKUlzGej6z/hfoeHGE8hLA=;
 b=jIQ7B5u2Ez2vhvenhlwtlpPe2QsnhHKdATo1k6k8szXHmLahiVpgYMjPju0K3ADlqb
 YNwqFfrY0LSGYdbsxsMysOW4ZHaVkezoc2UvCvykg2iKB3qUo8gijZjSYZWIyPYmgEWS
 x8SghbvHpq6sYU9TQWVjB40gyrpj9fosbkwyB+cNcX3pVydoYg3wjrDieAlAOddY6pXA
 NitrSht1o2xFtoNZU3oKxFC/4B20y6KQbtnR8XmDyZKiSxp/0CXKC1cwVFqAH9InpKBy
 eGIoGr6V88x8ceov0tvZIgMW1klj5lIAp4YzkrxS/FPDP1d1MWgLQKZ7ITzpE9RHR6wD
 BGyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=rzneJPROcmqce0/ATLd3DPKUlzGej6z/hfoeHGE8hLA=;
 b=n6f/XothweNanv4vGgWnwKPsTw00DVTWzqZEWzCGzpbZMFR61hvaqSp0YN9icR8pRg
 fcmz2K65FiZNxRKyf/TJz6lR+N1tZ/L3BmlCFH26c5reqdKytujfKOA5AH5V7oAfzIUj
 DIyfNTIM0k4GVqHDgFCUsku8FGC7fBUVSk0x/BsVll9YBa5xSwEwfeMO+cBJg7466mN/
 w3sApqHa7dnST2nDdj/pib6e261T5oFJDVyxXGj0A7uE125zH4KkCkmuAiY8kEWy0Xz9
 zteT2clI2aEOL+E7MDoRpIf2dOeEQPxoFcKkJKRTkqlC/QjizklsgQJsW9CSRt9Y9ve6
 vdFw==
X-Gm-Message-State: APjAAAWoJ5sl/qAQMytGnrbQAQy8tW1Pw9R95WdCuYL75yTO6sfr3nRC
 CD80lOXK/o0xa16ze5P4vYE=
X-Google-Smtp-Source: APXvYqxlBRS6d9WD/oTqK7lj+7TmodTv+dIykz9YSSP2onOV0DlG7wstbvoaRXsGGwxaNvU92W3nqw==
X-Received: by 2002:a05:600c:2388:: with SMTP id
 m8mr3079698wma.23.1560181004714; 
 Mon, 10 Jun 2019 08:36:44 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id s10sm14129173wmf.8.2019.06.10.08.36.44
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Jun 2019 08:36:44 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610113430.11352-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <33424905-112c-1d07-60d1-c995f7bf7d74@gmail.com>
Date: Mon, 10 Jun 2019 18:36:43 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190610113430.11352-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/2] lib/nolibc: Add
 _SC_NPROCESSORS_ONLN define
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwKCk9uIDYvMTAvMTkgMjozNCBQTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp
IHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KPiAtLS0KPiAgbGliL25vbGliYy9pbmNsdWRlL3VuaXN0
ZC5oIHwgMSArCj4gIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQo+IAo+IGRpZmYgLS1n
aXQgYS9saWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmggYi9saWIvbm9saWJjL2luY2x1ZGUvdW5p
c3RkLmgKPiBpbmRleCAzNGRjMWY4ZC4uZGIzYjVhNmYgMTAwNjQ0Cj4gLS0tIGEvbGliL25vbGli
Yy9pbmNsdWRlL3VuaXN0ZC5oCj4gKysrIGIvbGliL25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oCj4g
QEAgLTQ2LDYgKzQ2LDcgQEAgZXh0ZXJuICJDIiB7Cj4gICNkZWZpbmUgX19ORUVEX3NpemVfdAo+
ICAjZGVmaW5lIF9fTkVFRF9zc2l6ZV90Cj4gICNkZWZpbmUgX19ORUVEX29mZl90Cj4gKyNkZWZp
bmUgX1NDX05QUk9DRVNTT1JTX09OTE4gMTAKCkkgd291bGRuJ3QgaGF2ZSBhc2tlZCBmb3IgdGhp
cyBpZiBpdCBoYWRuJ3QgYmVlbiB0aGUgY2hlY2twYXRjaCBpc3N1ZSBvbgp0aGUgb3RoZXIgcGF0
Y2guIEJ1dCBzaW5jZSB3ZSdsbCBoYXZlIGEgdjIsIHBsZWFzZSBjcmVhdGUgaGVyZSBhIGdyb3Vw
Cm9mIGRlZmluZXMsIHdpdGggYSBjb21tZW50IHN0YXRpbmcgd2hhdCB0aGV5IGFyZSBuZWVkZWQg
Zm9yLCBlLmcuOgoKCiAgI2RlZmluZSBfX05FRURfc3NpemVfdAogICNkZWZpbmUgX19ORUVEX29m
Zl90CisKKy8qCisgKiBTeXNjb25mIG5hbWUgdmFsdWVzCisgKi8KKyNkZWZpbmUgX1NDX05QUk9D
RVNTT1JTX09OTE4gMTAKKwoKPiAgI2luY2x1ZGUgPG5vbGliYy1pbnRlcm5hbC9zaGFyZWRkZWZz
Lmg+Cj4gIAo+ICB1bnNpZ25lZCBpbnQgc2xlZXAodW5zaWduZWQgaW50IHNlY29uZHMpOwo+IAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 15:56:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 15:56: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 1haMf8-0006GN-TN; Mon, 10 Jun 2019 15:56:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haMf7-0006GI-Ma
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 15:56:45 +0000
X-Inumbo-ID: 56f944ed-8b98-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.49]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 56f944ed-8b98-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 15:56:43 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4972.eurprd01.prod.exchangelabs.com (20.177.209.204) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Mon, 10 Jun
 2019 15:56:40 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 15:56:40 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: Costin Lupu <costin.lup@gmail.com>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/uksysinfo: Implement
 sysconf check for _SC_NPROCESSORS_ONLN
Thread-Index: AQHVH4B+JQYRHiSTGkqbeGHtLPRAS6aVBBGAgAAHGgA=
Date: Mon, 10 Jun 2019 15:56:40 +0000
Message-ID: <10104053-ddb6-e14c-04fd-8f0faf210268@stud.acs.upb.ro>
References: <20190610113430.11352-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610113430.11352-3-vlad_andrei.badoiu@stud.acs.upb.ro>
 <f2d9eb29-9f42-ac18-1f7b-63e3f474c410@gmail.com>
In-Reply-To: <f2d9eb29-9f42-ac18-1f7b-63e3f474c410@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR09CA0173.eurprd09.prod.outlook.com
 (2603:10a6:800:120::27) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: f73928f4-6471-4840-ae8f-08d6edbc3a17
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(5600148)(711020)(4605104)(1401327)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(2017052603328)(7193020);
 SRVR:PR1PR01MB4972; 
x-ms-traffictypediagnostic: PR1PR01MB4972:
x-microsoft-antispam-prvs: <PR1PR01MB4972CEEE79E5053BA83C52D3A6130@PR1PR01MB4972.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4941;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(39840400004)(396003)(346002)(376002)(136003)(189003)(199004)(73956011)(14454004)(66946007)(64756008)(110136005)(11346002)(66446008)(446003)(54906003)(71200400001)(71190400001)(305945005)(7736002)(31686004)(66476007)(66556008)(68736007)(14444005)(6506007)(53936002)(76176011)(52116002)(186003)(5660300002)(8676002)(256004)(2906002)(99286004)(786003)(316002)(8936002)(386003)(3846002)(102836004)(81156014)(81166006)(26005)(229853002)(53546011)(6116002)(6512007)(6246003)(6436002)(86362001)(85182001)(6486002)(66574012)(31696002)(478600001)(66066001)(2616005)(486006)(85202003)(4326008)(25786009)(476003)(74482002)(2501003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4972;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: lTT6XhpZhehqPVnCPOeQNhCKvwFPOarW2UtlwLzZMIVn8V+ZCcL+OJAUlXOtPlqmpi0p0SBURs9mVUnREGVCDEia5WVzw81Gr0wUMtOiOORSSAmmSwV917LuSJJZMPEYrP/J+3z0qWZsvLFCVx/HnvANlQFn6LxVeP1euEv5lORvdbevLAR36DOrlCuIj9e+Z+u/YlEz5efFt3nwq4LmR0oa5kcn/nWUITDMzvH1b5yjW9QILtZ4A8oSU/q6ZHfC6x1vsLPyClAirNTo0rWGDniV7j5N3UV4QHNytZiNGH4XuyHhZK5vP9gxmh/hMvq7FcaAlvl6Kf1OousP4VAK0B4N7XcgTEc2Z3Vu9ASeyEpfEAg5GALH5hpGXmTFMWmr84Bg5rtoYcpf3UJ4QDl67n2NXCW40DQ7Ffw+IXJBrMc=
Content-ID: <DABBC3B1B8FBDA4DA11E6B647BA226A5@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: f73928f4-6471-4840-ae8f-08d6edbc3a17
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 15:56:40.6357 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4972
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/uksysinfo: Implement
 sysconf check for _SC_NPROCESSORS_ONLN
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGV5IENvc3RpbiwNCg0KU29ycnkgZm9yIHRoYXQuIEknbGwgYmUgc2VuZGluZyBhIHYyIHdpdGgg
dGhlIHByb3Bvc2VkIGNoYW5nZXMuDQoNClRoYW5rcyENCg0KT24gNi8xMC8xOSA2OjMxIFBNLCBD
b3N0aW4gTHVwdSB3cm90ZToNCj4gSGkgVmxhZCwNCj4NCj4gT24gNi8xMC8xOSAyOjM0IFBNLCBW
bGFkLUFuZHJlaSBCxIJET0lVICg3ODY5Mikgd3JvdGU6DQo+PiBUaGUgc3lzY29uZiBmdW5jdGlv
biBzaG91bGQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYWN0aXZlIHByb2Nlc3NvcnMgd2hlbg0KPj4g
X1NDX05QUk9DRVNTT1JTX09OTE4gaXMgcGFzc2VkLiBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBTTVAg
b24gVW5pa3JhZnQgd2UgcmV0dXJuIDENCj4+IHdoZW4gX1NDX05QUk9DRVNTT1JTX09OTE4gaXMg
cGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbi4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQo+PiAtLS0NCj4+ICAgbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMgfCA2ICsrKysrLQ0KPj4gICAx
IGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+Pg0KPj4gZGlm
ZiAtLWdpdCBhL2xpYi91a3N5c2luZm8vc3lzaW5mby5jIGIvbGliL3Vrc3lzaW5mby9zeXNpbmZv
LmMNCj4+IGluZGV4IDRjMTMzNDkzLi40OTg4YTc4ZiAxMDA2NDQNCj4+IC0tLSBhL2xpYi91a3N5
c2luZm8vc3lzaW5mby5jDQo+PiArKysgYi9saWIvdWtzeXNpbmZvL3N5c2luZm8uYw0KPj4gQEAg
LTM0LDYgKzM0LDcgQEANCj4+ICAgDQo+PiAgICNpbmNsdWRlIDxzdGRkZWYuaD4NCj4+ICAgI2lu
Y2x1ZGUgPGxpbWl0cy5oPg0KPj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4+ICAgI2luY2x1ZGUg
PHN5cy91dHNuYW1lLmg+DQo+PiAgICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+DQo+PiAgIA0K
Pj4gQEAgLTQ3LDggKzQ4LDExIEBAIGxvbmcgcGF0aGNvbmYoY29uc3QgY2hhciAqcGF0aCBfX3Vu
dXNlZCwgaW50IG5hbWUgX191bnVzZWQpDQo+PiAgIAlyZXR1cm4gMDsNCj4+ICAgfQ0KPj4gICAN
Cj4+IC1sb25nIHN5c2NvbmYoaW50IG5hbWUgX191bnVzZWQpDQo+PiArbG9uZyBzeXNjb25mKGlu
dCBuYW1lKQ0KPj4gICB7DQo+PiArCWlmIChuYW1lID09IF9TQ19OUFJPQ0VTU09SU19PTkxOKQ0K
Pj4gKwkgICAgcmV0dXJuIDE7DQo+PiArDQo+IFlvdSBoYXZlIGNoZWNrcGF0Y2ggd2FybmluZ3Mg
aGVyZS4gWW91IHN0aWxsIGRpZG4ndCBhdXRvbWF0ZSB0aGlzDQo+IHVwc3RyZWFtaW5nIHByb2Nl
ZHVyZSwgZGlkbid0IHlvdT8NCj4NCj4+ICAgCXJldHVybiAwOw0KPj4gICB9DQo+PiAgIA0KPj4N
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 16:15:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 16:15: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 1haMxA-0008Cl-9v; Mon, 10 Jun 2019 16:15:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haMx9-0008Ce-1i
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 16:15:23 +0000
X-Inumbo-ID: f1f5c410-8b9a-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:7e19::62f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f1f5c410-8b9a-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 16:15:22 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4908.eurprd01.prod.exchangelabs.com (20.177.209.75) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Mon, 10 Jun
 2019 16:15:20 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 16:15:20 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v2 0/2] Add check for _SC_NPROCESSORS_ONLN in
 sysconf
Thread-Index: AQHVH6ey9tRL3ysR2Uu8mi2TpZvw9w==
Date: Mon, 10 Jun 2019 16:15:19 +0000
Message-ID: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0801CA0088.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: eb07f76c-126c-4446-9465-08d6edbed54e
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4908; 
x-ms-traffictypediagnostic: PR1PR01MB4908:
x-microsoft-antispam-prvs: <PR1PR01MB490841398A6D5F7AAFF40839A6130@PR1PR01MB4908.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:6430;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(39840400004)(366004)(346002)(376002)(396003)(189003)(199004)(73956011)(14454004)(66946007)(64756008)(71190400001)(71200400001)(66446008)(305945005)(68736007)(66476007)(66556008)(54906003)(6506007)(186003)(786003)(316002)(2906002)(52116002)(53936002)(5660300002)(256004)(50226002)(386003)(81156014)(8676002)(8936002)(26005)(81166006)(3846002)(102836004)(14444005)(6116002)(99286004)(6512007)(4744005)(5640700003)(7736002)(85182001)(86362001)(6436002)(6486002)(66574012)(1076003)(2351001)(6916009)(66066001)(85202003)(2616005)(4326008)(486006)(25786009)(476003)(74482002)(508600001)(2501003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4908;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: H4GmsfW8EPSCsN1vYQtAmM8kQijKkk1Cmjh2tI5a9gqR+08dx3ukO+OnyAWOkD9MU+L1BXhNjB2Ozgc8J2FovTnm/Vn+E1ctleJ1a2REoh0O52LH5hBEye2Do2cUuCDACGlq0S8It53jWLv8pdReeeY625RQ2p+3pTmQfU7kybnfySWi5wjshm22TZmxw1h8OG993HuSKS1w6B+UF3YgEnZeFIEun8d9JYNwrt4HkNhKQaKGrgTlrc/Ynqfw2Pd/NUKs8Bj4nuYpqALi9oNSzxh5iYSW0gCCChMLlCaGK6YbaEVHJz+Y4PiQaQ1SUOy6i6Ibpa0LGZ4a6T76nkI3RmItGLBJRA36fCJ79jBFjZcjshHyUNtySVT5cOiiawKmPrNAlHqiR+qC/VJF9K4K18QETw64q8Dc9UjxQiA/MiQ=
Content-ID: <E6A62546BD733248A3D5D5FB38FDC21E@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: eb07f76c-126c-4446-9465-08d6edbed54e
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 16:15:20.0018 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4908
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/2] Add check for
 _SC_NPROCESSORS_ONLN in sysconf
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

c3lzY29uZiBzaG91bGQgcmV0dXJuIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBjdXJyZW50bHkg
YXZhaWxhYmxlIHdoZW4NCnRoZSBfU0NfTlBST0NFU1NPUlNfT05MTiBhcmd1bWVudCBpcyBwYXNz
ZWQuIFdlIHJldHVybiAxIGFzIFNNUCBpcyBub3QNCmF2YWlsYWJsZSBvbiBVbmlrcmFmdC4NCg0K
Q2hhbmdlcyBzaW5jZSB2MToNCiopIEZpeGVkIGNoZWNrcGF0aCBlcnJvcyAmIGFkZGVkIGNvbW1l
bnRzDQoNCg0KVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpICgyKToNCiAgbGliL25vbGliYzog
QWRkIF9TQ19OUFJPQ0VTU09SU19PTkxOIGRlZmluZQ0KICBsaWIvdWtzeXNpbmZvOiBJbXBsZW1l
bnQgc3lzY29uZiBjaGVjayBmb3IgX1NDX05QUk9DRVNTT1JTX09OTE4NCg0KIGxpYi9ub2xpYmMv
aW5jbHVkZS91bmlzdGQuaCB8IDYgKysrKysrDQogbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMgICAg
IHwgNiArKysrKy0NCiAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRp
b24oLSkNCg0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 16:15:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 16:15: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 1haMxB-0008Cz-Bv; Mon, 10 Jun 2019 16:15:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haMxA-0008Cj-9R
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 16:15:24 +0000
X-Inumbo-ID: f34880e7-8b9a-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:7e19::62f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f34880e7-8b9a-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 16:15:23 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4908.eurprd01.prod.exchangelabs.com (20.177.209.75) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Mon, 10 Jun
 2019 16:15:21 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 16:15:21 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v2 2/2] lib/uksysinfo: Implement sysconf check
 for _SC_NPROCESSORS_ONLN
Thread-Index: AQHVH6ezyqmFXDQdoU+AR4hjgK2rWg==
Date: Mon, 10 Jun 2019 16:15:21 +0000
Message-ID: <20190610161509.30794-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0801CA0088.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: ec5adb84-65b9-48f9-53dd-08d6edbed5ff
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4908; 
x-ms-traffictypediagnostic: PR1PR01MB4908:
x-microsoft-antispam-prvs: <PR1PR01MB4908B8B8B1149FEAE0C48B9AA6130@PR1PR01MB4908.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4125;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(39840400004)(366004)(346002)(376002)(396003)(189003)(199004)(73956011)(14454004)(11346002)(66946007)(64756008)(71190400001)(71200400001)(66446008)(446003)(305945005)(68736007)(66476007)(66556008)(54906003)(6506007)(186003)(786003)(316002)(2906002)(76176011)(52116002)(53936002)(5660300002)(256004)(50226002)(386003)(81156014)(8676002)(8936002)(26005)(81166006)(3846002)(102836004)(14444005)(6116002)(99286004)(6512007)(4744005)(5640700003)(7736002)(85182001)(86362001)(6436002)(6486002)(66574012)(1076003)(2351001)(6916009)(66066001)(85202003)(2616005)(4326008)(486006)(25786009)(476003)(74482002)(508600001)(2501003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4908;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: /YJ/dbdSj6YMzF6KB1Uv7Un7Cp7w/Ifbnt75xWSW57xsjynRQ54ImXmDkH7ygC4Ko6+Vwv2ZEzlbY9/nRCgGcXsoOfmAvnCOYMPib9c6o9CP1jTvm7Jpz5gLJlsRskzG/RZ3lX/HWnvd41ujcY7HueH2v7w8cD+REvo+TrQszB4b59SD14jax/1jY2KLiZY15l+5Y9rb6xvd9ai1UeJhzCiAStUDB72NNSwj9nnJ30LtnSmW0Kvqioh9+IR4heSJSp2trVU7C5DzuWUzuKwIA1elj6NU5n33HnlemxXPjGRmeBObSoaAITsEHdPkax1HJv1YIxeW+MjBS0BbEGmF2uWoM1XXmUyvzJTGC8V0rVqgIuozYJN7vlaBW4jxBz0y5AC6O/wHAcFQb1ogGDSFQJvA9FbKABUM4TEixLZtLVM=
Content-ID: <4A04FF87187CF04F90E1CD1456F61371@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: ec5adb84-65b9-48f9-53dd-08d6edbed5ff
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 16:15:21.1771 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4908
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/2] lib/uksysinfo: Implement
 sysconf check for _SC_NPROCESSORS_ONLN
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpUaGUgc3lzY29uZiBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoZSBu
dW1iZXIgb2YgYWN0aXZlIHByb2Nlc3NvcnMgd2hlbg0KX1NDX05QUk9DRVNTT1JTX09OTE4gaXMg
cGFzc2VkLiBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBTTVAgb24gVW5pa3JhZnQgd2UgcmV0dXJuIDEN
CndoZW4gX1NDX05QUk9DRVNTT1JTX09OTE4gaXMgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBm
dW5jdGlvbi4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJl
aS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KLS0tDQogbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMg
fCA2ICsrKysrLQ0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o
LSkNCg0KZGlmZiAtLWdpdCBhL2xpYi91a3N5c2luZm8vc3lzaW5mby5jIGIvbGliL3Vrc3lzaW5m
by9zeXNpbmZvLmMNCmluZGV4IDRjMTMzNDkzLi4zYmZmNGU2ZiAxMDA2NDQNCi0tLSBhL2xpYi91
a3N5c2luZm8vc3lzaW5mby5jDQorKysgYi9saWIvdWtzeXNpbmZvL3N5c2luZm8uYw0KQEAgLTM0
LDYgKzM0LDcgQEANCiANCiAjaW5jbHVkZSA8c3RkZGVmLmg+DQogI2luY2x1ZGUgPGxpbWl0cy5o
Pg0KKyNpbmNsdWRlIDx1bmlzdGQuaD4NCiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4NCiAjaW5j
bHVkZSA8dWsvZXNzZW50aWFscy5oPg0KIA0KQEAgLTQ3LDggKzQ4LDExIEBAIGxvbmcgcGF0aGNv
bmYoY29uc3QgY2hhciAqcGF0aCBfX3VudXNlZCwgaW50IG5hbWUgX191bnVzZWQpDQogCXJldHVy
biAwOw0KIH0NCiANCi1sb25nIHN5c2NvbmYoaW50IG5hbWUgX191bnVzZWQpDQorbG9uZyBzeXNj
b25mKGludCBuYW1lKQ0KIHsNCisJaWYgKG5hbWUgPT0gX1NDX05QUk9DRVNTT1JTX09OTE4pDQor
CQlyZXR1cm4gMTsNCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0KLS0gDQoyLjIxLjANCg0KX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 16:15:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 16:15: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 1haMxB-0008D4-EE; Mon, 10 Jun 2019 16:15:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cKbY=UJ=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haMxA-0008Ck-Cl
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 16:15:24 +0000
X-Inumbo-ID: f2e4a27d-8b9a-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:7e19::62f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f2e4a27d-8b9a-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 16:15:22 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4908.eurprd01.prod.exchangelabs.com (20.177.209.75) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Mon, 10 Jun
 2019 16:15:20 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019
 16:15:20 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v2 1/2] lib/nolibc: Add _SC_NPROCESSORS_ONLN
 define
Thread-Index: AQHVH6ezY5Ww4C3B2k6py2pqYukWSA==
Date: Mon, 10 Jun 2019 16:15:20 +0000
Message-ID: <20190610161509.30794-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0801CA0088.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a6584d10-cf73-47ae-97ad-08d6edbed59b
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4908; 
x-ms-traffictypediagnostic: PR1PR01MB4908:
x-microsoft-antispam-prvs: <PR1PR01MB49088BF37A28D408BA4CE9F9A6130@PR1PR01MB4908.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0064B3273C
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(39840400004)(366004)(346002)(376002)(396003)(189003)(199004)(73956011)(14454004)(11346002)(66946007)(64756008)(71190400001)(71200400001)(66446008)(446003)(305945005)(68736007)(66476007)(66556008)(54906003)(6506007)(186003)(786003)(316002)(2906002)(76176011)(52116002)(53936002)(5660300002)(256004)(50226002)(386003)(81156014)(8676002)(8936002)(26005)(81166006)(3846002)(102836004)(6116002)(99286004)(6512007)(4744005)(5640700003)(7736002)(85182001)(86362001)(6436002)(6486002)(1076003)(2351001)(6916009)(66066001)(85202003)(2616005)(4326008)(486006)(25786009)(476003)(74482002)(508600001)(2501003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4908;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 5lfV6yrGFUEnCUziOzw39A8MdGFc2GIqNOQUc0hB4rDF+OkrpRMiGcyg2M795sdYH179UAhsfdaHgP9KFo8lbXr8QxFSzXRtKIKzp9cGKEMh80HLc7NvtT7ljFGtrbMacE49UGZfZimkxedFUVahZo6nvnLL/Ntr6mJ4UAtfOYpG6Vw/OgSy8k0X0iJiXEiAlKD88CQCwHJKhQlRrNpbqi4lmT/1B7Ai08zy08h0dC+ZK7UhK4DHTOdPd7HxVzHT0TsMFWRLv2zSsQc2qMF9tZK/u0//gNTnOOTlsb6XVmNDHrpCisdpGzw3jtboZSXbnX7axdgum23Lyg/sjDYff06/8jXwgNSoMdviI8P0t810RKErWKJNhsiJrlHF/6CwdOvdajNcGUXTCIoeAEv43a86kbvaeWIh57IwqGMMaRI=
Content-ID: <75FAA8EDDDF8B243991953B11F11E2CE@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: a6584d10-cf73-47ae-97ad-08d6edbed59b
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 16:15:20.5825 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4908
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/2] lib/nolibc: Add
 _SC_NPROCESSORS_ONLN define
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KDQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRf
YW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQotLS0NCiBsaWIvbm9saWJjL2luY2x1ZGUv
dW5pc3RkLmggfCA2ICsrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykNCg0K
ZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaCBiL2xpYi9ub2xpYmMvaW5j
bHVkZS91bmlzdGQuaA0KaW5kZXggMzRkYzFmOGQuLmU5YjRmMzQ4IDEwMDY0NA0KLS0tIGEvbGli
L25vbGliYy9pbmNsdWRlL3VuaXN0ZC5oDQorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvdW5pc3Rk
LmgNCkBAIC00Niw2ICs0NiwxMiBAQCBleHRlcm4gIkMiIHsNCiAjZGVmaW5lIF9fTkVFRF9zaXpl
X3QNCiAjZGVmaW5lIF9fTkVFRF9zc2l6ZV90DQogI2RlZmluZSBfX05FRURfb2ZmX3QNCisNCisv
Kg0KKyAqIFN5c2NvbmYgbmFtZSB2YWx1ZXMNCisgKi8NCisjZGVmaW5lIF9TQ19OUFJPQ0VTU09S
U19PTkxOIDEwDQorDQogI2luY2x1ZGUgPG5vbGliYy1pbnRlcm5hbC9zaGFyZWRkZWZzLmg+DQog
DQogdW5zaWduZWQgaW50IHNsZWVwKHVuc2lnbmVkIGludCBzZWNvbmRzKTsNCi0tIA0KMi4yMS4w
DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 18:31:41 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 18:31:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1haP51-0002vz-J9; Mon, 10 Jun 2019 18:31:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=42hR=UJ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1haP50-0002vu-9K
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 18:31:38 +0000
X-Inumbo-ID: faa77855-8bad-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id faa77855-8bad-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 18:31:37 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id 207so340439wma.1
 for <minios-devel@lists.xen.org>; Mon, 10 Jun 2019 11:31:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=5ULn+cX57+ByCprN/MAORJ3H7plI24vO6S7odlbLe6Q=;
 b=Chgtl4ZoW+WoaRgSsZMHQ+0S6CJVOWlKex++rZBIbr+2nGUVrZaZlK43OkHhUVXlBd
 0DPi9HgSR48l8cStixck/jI06ImdQOg/BT65Pwg5dm+EdZwNVB1NkJtC+87fDxA/pAXD
 Zb95MQ1fF0CZuHEY3+zhuNgbXyQHw0kIyAOOESHIcnKrf5XD+wIamkqpw50mWGkgg/2l
 e6xbZp7dbpSVvMq1V6uS5AnUnt9MAA4GzRbWfJBm6sL9bUemY6xHW3YBV0LBzCqW8iD8
 LiVYgOqtIvAtoW6ahwqSJ5qvwRxFLWN111dz9ikjdGufStGnRYFK+kl/OjPvaPU+ZEML
 CDRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=5ULn+cX57+ByCprN/MAORJ3H7plI24vO6S7odlbLe6Q=;
 b=KmpZEPUeTMu6Wd0fchJ41wXSXNXICQV9j5lPeygsD71+xtggPR5DZRARDLjdIyVZhF
 e+GMARdqbR90ti9tDu8ttcdtJc60Pk5UJbF/APIj1K7nMZbGNgnHQfDHqxtkaOMSDxi/
 4l/QIfm8HwjzTdMzWv1MS7OAYVSthoWeI2dxdUVS78WhOScolapJJsXT/AfncFJi11fL
 T98Cwi9MpZtiLk7MJUsPSA2DmfYfFr5t/luiHSpW11AbFc5X8XvwcuGUK+dnrt2u5yKR
 pgAf4dH03uDermYj3rde+4yy08ikzWIV5/USgd3VvWQZ9km7C1rtyxhh8h1I2Y/gYpYl
 MIDw==
X-Gm-Message-State: APjAAAXtSfdGIazTOE/IT43jVSLsc0WGM8kZHooTdocNQVu27/5XRON1
 WYD0p+jdurN0SvNMY0mpwEc=
X-Google-Smtp-Source: APXvYqxEQKedQT4+31GL65vTHv6mFkyZCC4UOWaQCSxzDN9Rp1QNe+VPwxcc6f38G5Qq+jHaYoD1tw==
X-Received: by 2002:a1c:f712:: with SMTP id v18mr15720811wmh.0.1560191495759; 
 Mon, 10 Jun 2019 11:31:35 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id o185sm191728wmo.45.2019.06.10.11.31.34
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Jun 2019 11:31:35 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610161509.30794-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <d673f2ac-5828-02ac-5623-2a41c9b39724@gmail.com>
Date: Mon, 10 Jun 2019 21:31:34 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190610161509.30794-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/2] lib/nolibc: Add
 _SC_NPROCESSORS_ONLN define
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzEw
LzE5IDc6MTUgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToKPiBGcm9tOiBW
bGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+Cj4gCj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJl
aS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+IC0tLQo+ICBsaWIvbm9saWJjL2luY2x1ZGUvdW5p
c3RkLmggfCA2ICsrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCj4gCj4g
ZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS91bmlzdGQuaCBiL2xpYi9ub2xpYmMvaW5j
bHVkZS91bmlzdGQuaAo+IGluZGV4IDM0ZGMxZjhkLi5lOWI0ZjM0OCAxMDA2NDQKPiAtLS0gYS9s
aWIvbm9saWJjL2luY2x1ZGUvdW5pc3RkLmgKPiArKysgYi9saWIvbm9saWJjL2luY2x1ZGUvdW5p
c3RkLmgKPiBAQCAtNDYsNiArNDYsMTIgQEAgZXh0ZXJuICJDIiB7Cj4gICNkZWZpbmUgX19ORUVE
X3NpemVfdAo+ICAjZGVmaW5lIF9fTkVFRF9zc2l6ZV90Cj4gICNkZWZpbmUgX19ORUVEX29mZl90
Cj4gKwo+ICsvKgo+ICsgKiBTeXNjb25mIG5hbWUgdmFsdWVzCj4gKyAqLwo+ICsjZGVmaW5lIF9T
Q19OUFJPQ0VTU09SU19PTkxOIDEwCj4gKwo+ICAjaW5jbHVkZSA8bm9saWJjLWludGVybmFsL3No
YXJlZGRlZnMuaD4KPiAgCj4gIHVuc2lnbmVkIGludCBzbGVlcCh1bnNpZ25lZCBpbnQgc2Vjb25k
cyk7Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 18:31:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 18:31: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 1haP5B-0002wb-Lb; Mon, 10 Jun 2019 18:31:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=42hR=UJ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1haP5A-0002wU-54
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 18:31:48 +0000
X-Inumbo-ID: 00d55e4d-8bae-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 00d55e4d-8bae-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 18:31:47 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id z23so314667wma.4
 for <minios-devel@lists.xen.org>; Mon, 10 Jun 2019 11:31:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=q4akd+bGzwCOqbZUz0qGees0J/ukVoUtcxGVnUGqaOo=;
 b=KDpzLot0AzNYb0HP0FJJ5CtDUKtMVf2GX2qKW62H1p1ZLIYVgzU+Wy6rLRiilUdcPN
 8qBGz3Tor9W7SabXD6hYsvJvXLwRz5oO6gS86IwROg9/WgyIOA82loQAaFqlZCzESSmc
 fWayiToio4lXdHaKOOqBE7mywSQiARKXz1GtWCYNzG8mXUodRWWyv6W5HQ17mNTs/LjG
 x+kBkyBLp8dJFod+1xfpFSMoiOmTJBTgf7+Q2t0TrBCLXolG2HntS2H7dcsFfDetO7LP
 MBw6BceY4beQdZkhu42w+chO2ZMdnHbb3fSzbi1zza+ZJ3bFXT6QbL7edRUqiiUkJ847
 4+7g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=q4akd+bGzwCOqbZUz0qGees0J/ukVoUtcxGVnUGqaOo=;
 b=XGyHcdt8usbFXNfmyjCG2KfPa1LA8wOrrmUQ7NETzNXOss1p2jrnZMCg6z6U/64AXA
 7LR5SkXIzESmZeH1z4I6FMzjng3jt2LvFcz2zfmN3nWD1ksy1GX2kVgbXbh1U6s9EdPs
 W5+jQy1E++72XONO6PyLyYXdlqzw39X/PivCJ8KRq618GmoRhbBmQO0DdOI5tAsyVJHv
 jeE/u9/JbnCWNSFS7X4hdwUAcECAEZUrbyaqDjWvqZGj+gFuAklzN69mja9MGU7R55R7
 MbrlyqcJOOfVP4lV/+aN/J+j6AEzK11+QxTZvABkyd23E0MxwOl8JOiiMRtheD/hPT6P
 KSOg==
X-Gm-Message-State: APjAAAXTnbM/BQGBBk3woqqXjZE3N9hRbhf/N/8SwgppMUkkS9MvONsN
 40fV8svgQ5ChC3CBDEMQe7DMVsCUDaQ=
X-Google-Smtp-Source: APXvYqwYhNsKvDeJ5rGdZu3jALJCWfbvfiDEHYbrU06+Pj/aWfJPRoKT318EWgpkS9ay4WZ6y3gMgQ==
X-Received: by 2002:a7b:c40c:: with SMTP id k12mr13498177wmi.122.1560191506275; 
 Mon, 10 Jun 2019 11:31:46 -0700 (PDT)
Received: from [192.168.1.35] (5-12-83-252.residential.rdsnet.ro.
 [5.12.83.252])
 by smtp.gmail.com with ESMTPSA id c7sm10231501wrp.57.2019.06.10.11.31.45
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Jun 2019 11:31:45 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190610161509.30794-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610161509.30794-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <85f4d320-bf38-9493-0525-439f9b978174@gmail.com>
Date: Mon, 10 Jun 2019 21:31:45 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190610161509.30794-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/2] lib/uksysinfo: Implement
 sysconf check for _SC_NPROCESSORS_ONLN
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzEw
LzE5IDc6MTUgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToKPiBGcm9tOiBW
bGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+Cj4gCj4gVGhlIHN5c2NvbmYgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgbnVtYmVy
IG9mIGFjdGl2ZSBwcm9jZXNzb3JzIHdoZW4KPiBfU0NfTlBST0NFU1NPUlNfT05MTiBpcyBwYXNz
ZWQuIFNpbmNlIHdlIGRvIG5vdCBoYXZlIFNNUCBvbiBVbmlrcmFmdCB3ZSByZXR1cm4gMQo+IHdo
ZW4gX1NDX05QUk9DRVNTT1JTX09OTE4gaXMgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5j
dGlvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIGxpYi91a3N5c2luZm8vc3lzaW5mby5j
IHwgNiArKysrKy0KPiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bigtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdWtzeXNpbmZvL3N5c2luZm8uYyBiL2xpYi91a3N5
c2luZm8vc3lzaW5mby5jCj4gaW5kZXggNGMxMzM0OTMuLjNiZmY0ZTZmIDEwMDY0NAo+IC0tLSBh
L2xpYi91a3N5c2luZm8vc3lzaW5mby5jCj4gKysrIGIvbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMK
PiBAQCAtMzQsNiArMzQsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPHN0ZGRlZi5oPgo+ICAjaW5jbHVk
ZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiAgI2luY2x1ZGUgPHN5cy91dHNu
YW1lLmg+Cj4gICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gIAo+IEBAIC00Nyw4ICs0OCwx
MSBAQCBsb25nIHBhdGhjb25mKGNvbnN0IGNoYXIgKnBhdGggX191bnVzZWQsIGludCBuYW1lIF9f
dW51c2VkKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLWxvbmcgc3lzY29uZihpbnQgbmFtZSBf
X3VudXNlZCkKPiArbG9uZyBzeXNjb25mKGludCBuYW1lKQo+ICB7Cj4gKwlpZiAobmFtZSA9PSBf
U0NfTlBST0NFU1NPUlNfT05MTikKPiArCQlyZXR1cm4gMTsKPiArCj4gIAlyZXR1cm4gMDsKPiAg
fQo+ICAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 18:49:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 18:49: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 1haPM8-0003nI-1N; Mon, 10 Jun 2019 18:49:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=b25Y=UJ=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haPM6-0003nD-IX
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 18:49:18 +0000
X-Inumbo-ID: 7210e48b-8bb0-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7210e48b-8bb0-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 18:49:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 48B64105771;
 Mon, 10 Jun 2019 20:49:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HB3BZL09BovK; Mon, 10 Jun 2019 20:49:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 25F551055CC;
 Mon, 10 Jun 2019 20:49:15 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 10 Jun 2019 20:49:14
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 1/3] Add .gitignore
Thread-Index: AQHVHxjpjNWWTS9vm0qTewfCMWDfDqaVPDKA
Date: Mon, 10 Jun 2019 18:49:13 +0000
Message-ID: <0A558EE0-7349-4B0D-BA0A-936C06747FF6@neclab.eu>
References: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190609231247.32722-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190609231247.32722-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.208]
Content-ID: <C70952D5E72A124582E5AADC012204A9@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwgbG9va3MgZ29vZCwgdGhhbmtzLg0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQtYnk6
IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0KT24gMTAuMDYuMTksIDAx
OjEzLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0
dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBC
YWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgLS0tDQogICAg
IC5naXRpZ25vcmUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMSBmaWxl
IGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRp
Z25vcmUNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUNCiAg
ICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjc1ZDJmZDMNCiAgICAt
LS0gL2Rldi9udWxsDQogICAgKysrIGIvLmdpdGlnbm9yZQ0KICAgIEBAIC0wLDAgKzEsMjcgQEAN
CiAgICArKi5kZXBlbmQNCiAgICArKi5vDQogICAgKyouYQ0KICAgICsqLmQNCiAgICArKi5zbw0K
ICAgICsqLm9yaWcNCiAgICArKi5yZWoNCiAgICArKi5iYWsNCiAgICArKi5zd3ANCiAgICArKn4N
CiAgICArLCoNCiAgICArXCMqXCMNCiAgICArLlwjKg0KICAgICtcI18qXCMNCiAgICArLlwjXyoN
CiAgICArIS5naXRpZ25vcmUNCiAgICArLioNCiAgICArDQogICAgKyMgZ251IGdsb2JhbCBmaWxl
cw0KICAgICtHUEFUSA0KICAgICtHUlRBR1MNCiAgICArR1NZTVMNCiAgICArR1RBR1MNCiAgICAr
DQogICAgKyMgY3Njb3BlIGZpbGVzDQogICAgK2NzY29wZS4qDQogICAgK25jc2NvcGUuKg0KICAg
IC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 18:50:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 18:50: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 1haPNj-0004O6-6z; Mon, 10 Jun 2019 18:50:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=b25Y=UJ=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haPNh-0004O1-If
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 18:50:57 +0000
X-Inumbo-ID: ad0df894-8bb0-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ad0df894-8bb0-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 18:50:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 30DACF2093;
 Mon, 10 Jun 2019 20:50:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BlllmVXEuLbJ; Mon, 10 Jun 2019 20:50:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id ED4F3F2091;
 Mon, 10 Jun 2019 20:50:47 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 10 Jun 2019 20:50:47
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 2/3] Add documentation
Thread-Index: AQHVHxjqbhbzQhBib0KkfRC0w/DdGqaVPKEA
Date: Mon, 10 Jun 2019 18:50:46 +0000
Message-ID: <3E9BFD60-FC6F-4170-92AB-10F62B348152@neclab.eu>
References: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190609231247.32722-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190609231247.32722-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.208]
Content-ID: <49BAFF2B30568F4F98822F75577EAB1B@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KQ09QWUlORy5tZCBpcyBhbiB1bm1vZGlmZWQgY29weS1hbmQtcGFzdGUgZnJv
bSBuZXdsaWIncy4NCg0KLS0gRmVsaXBlDQoNCu+7v09uIDEwLjA2LjE5LCAwMToxMywgIlZsYWQt
QW5kcmVpIELEgkRPSVUgKDc4NjkyKSIgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIu
cm8+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFk
X2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgIC0tLQ0KICAgICBDT0RJTkdfU1RZ
TEUubWQgfCAgNCArKysrDQogICAgIENPTlRSSUJVVElORy5tZCB8ICA0ICsrKysNCiAgICAgQ09Q
WUlORy5tZCAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KICAgICBNQUlOVEFJTkVSUy5tZCAgfCAxMSArKysrKysrKysrKw0KICAgICBSRUFE
TUUubWQgICAgICAgfCAgNSArKysrKw0KICAgICA1IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlv
bnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZA0KICAgICBjcmVh
dGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5HLm1kDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBD
T1BZSU5HLm1kDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZA0KICAgICBj
cmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQogICAgDQogICAgZGlmZiAtLWdpdCBhL0NPRElO
R19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQog
ICAgaW5kZXggMDAwMDAwMC4uNTczMDA0MQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9D
T0RJTkdfU1RZTEUubWQNCiAgICBAQCAtMCwwICsxLDQgQEANCiAgICArQ29kaW5nIFN0eWxlDQog
ICAgKz09PT09PT09PT09PQ0KICAgICsNCiAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5H
X1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgZGlm
ZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0KICAgIG5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uNWY1NWVjYQ0KICAgIC0tLSAvZGV2L251
bGwNCiAgICArKysgYi9DT05UUklCVVRJTkcubWQNCiAgICBAQCAtMCwwICsxLDQgQEANCiAgICAr
Q29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0DQogICAgKz09PT09PT09PT09PT09PT09PT09PT09DQog
ICAgKw0KICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4g
dGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICBkaWZmIC0tZ2l0IGEvQ09QWUlORy5t
ZCBiL0NPUFlJTkcubWQNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAw
MDAuLmJmOGJhMWUNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvQ09QWUlORy5tZA0KICAg
IEBAIC0wLDAgKzEsNDYgQEANCiAgICArTGljZW5zZQ0KICAgICs9PT09PT09DQogICAgKw0KICAg
ICtVbmlrcmFmdCBuZXdsaWIgd3JhcHBlcnMNCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogICAgKw0KICAgICtUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgd3JhcHBlciBjb2RlIHRvIGJ1
aWxkIG5ld2xpYiB3aXRoIFVuaWtyYWZ0LiAgVGhlIGNvZGUNCiAgICAraXMgcHVibGlzaGVkIGFz
IGEgbWl4dHVyZSBvZiBCU0QgYW5kIE1JVCBsaWNlbmNlczsgZWFjaCBDIGNvZGUgZmlsZSBpbg0K
ICAgICt0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZSBjb3B5cmlnaHQg
b3duZXIgYW5kIHVuZGVyIHdoaWNoIHRlcm1zDQogICAgK2FuZCBjb25kaXRpb25zIHRoZSBjb2Rl
IGlzIGxpY2Vuc2VkLiBJZiBzdWNoIGEgbGljZW5jZSBub3RlIGlzIG1pc3NpbmcsIHRoZQ0KICAg
ICtmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZSB3aWxsIGFwcGx5Og0KICAgICsNCiAgICArCUNv
cHlyaWdodCAoYykgMjAxNywgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQogICAgKw0KICAgICsJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogICAgKwltb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMN
CiAgICArCWFyZSBtZXQ6DQogICAgKw0KICAgICsJMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArCSAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAg
ICArCTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0DQogICAgKwkgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKwkgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
Lg0KICAgICsJMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3Ig
dGhlIG5hbWVzIG9mIGl0cw0KICAgICsJICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICArCSAgIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogICAgKw0K
ICAgICsJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogICAgKwlBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogICAgKwlJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQ0KICAgICsJQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KICAgICsJTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
Ug0KICAgICsJQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICArCVNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KICAgICsJSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4NCiAgICArCUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKwlBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0K
ICAgICsJUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICAgKw0KICAgICtuZXdsaWIgc291
cmNlIGNvZGUNCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgKw0KICAgICtEdXJpbmcgYnVp
bGRpbmcsIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBkb3dubG9hZCB0aGUgbmV3bGliIHNvdXJjZSBj
b2RlIGFuZA0KICAgICtidWlsZCBzb3VyY2UgY29kZSBmcm9tIHRoZSBgbmV3bGliL2xpYmNgIGFu
ZCBgbmV3bGliL2xpYm1gIGRpcmVjdG9yaWVzLiBUaGUNCiAgICArY29kZSBpbiB0aGlzIGRpcmVj
dG9yaWVzIGhhcyBhIHZhcmlldHkgb2YgbGljZW5jZXMsIHRoZSBkZXRhaWxzIG9mIHdoaWNoIGFy
ZQ0KICAgICtleHBsYWluZWQgaW4gdGhlIGBSRUFETUUubmV3bGliYCBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGUgbmV3bGliIGNvZGUuDQogICAgZGlmZiAtLWdpdCBhL01BSU5UQUlO
RVJTLm1kIGIvTUFJTlRBSU5FUlMubWQNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGlu
ZGV4IDAwMDAwMDAuLmNiZDA2OWYNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvTUFJTlRB
SU5FUlMubWQNCiAgICBAQCAtMCwwICsxLDExIEBADQogICAgK01haW50YWluZXJzIExpc3QNCiAg
ICArPT09PT09PT09PT09PT09PQ0KICAgICsNCiAgICArRm9yIG5vdGVzIG9uIGhvdyB0byByZWFk
IHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byBgTUFJTlRBSU5FUlMubWRgIGluDQog
ICAgK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgKw0KICAgICsJTElCRlhESVYt
VU5JS1JBRlQNCiAgICArCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4N
CiAgICArCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNz
LnVwYi5ybz4NCiAgICArCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnDQogICAgKwlGOiAq
DQogICAgZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZA0KICAgIG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uNzI4Yjk3ZQ0KICAgIC0tLSAvZGV2L251bGwN
CiAgICArKysgYi9SRUFETUUubWQNCiAgICBAQCAtMCwwICsxLDUgQEANCiAgICArZnhkaXYgZm9y
IFVuaWtyYWZ0DQogICAgKz09PT09PT09PT09PT09PT09PT0NCiAgICArDQogICAgK1BsZWFzZSBy
ZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0
aGUgYGRvYy9gDQogICAgK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFpbiB1bmlrcmFmdCByZXBvc2l0
b3J5Lg0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 18:55:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 18:55: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 1haPSP-0004Zr-3j; Mon, 10 Jun 2019 18:55:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=b25Y=UJ=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haPSN-0004Zl-QJ
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 18:55:47 +0000
X-Inumbo-ID: 5a7d23ba-8bb1-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5a7d23ba-8bb1-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 18:55:46 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 3BA71105A10;
 Mon, 10 Jun 2019 20:55:45 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id O22f-Exz4MHy; Mon, 10 Jun 2019 20:55:45 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 12F5C105A0F;
 Mon, 10 Jun 2019 20:55:45 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 10 Jun 2019 20:55:44
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH 3/3] Initial port of fxdiv to Unikraft
Thread-Index: AQHVHxjqjShLRx+EW0eXLEeLOKN2CaaVPgOA
Date: Mon, 10 Jun 2019 18:55:44 +0000
Message-ID: <D3A06F99-8CE0-470B-8F10-7318AE7B1980@neclab.eu>
References: <20190609231247.32722-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190609231247.32722-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190609231247.32722-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.208]
Content-ID: <B3C3DFF8BD68654D9FD3C837DCF04B13@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH 3/3] Initial port of
 fxdiv to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KUGxlYXNlIHNlZSBzb21lIG1pbm9yIGNvbW1lbnRzIGlubGluZS4NCg0KVGhh
bmtzLA0KDQotLSBGZWxpcGUNCg0K77u/T24gMTAuMDYuMTksIDAxOjEzLCAiVmxhZC1BbmRyZWkg
QsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3Jv
dGU6DQoNCiAgICBUaGlzIGlzIG91ciBpbml0aWFsIHBvcnQgb2YgZnhkaXYgdG8gVW5pa3JhZnQg
YXMgYW4gZXh0ZXJuYWwgbGlicmFyeS4gTGliY3h4IGlzDQogICAgcmVxdWlyZWQuIFdoZW4gYWRk
aW5nIHRoZSBsaWJyYXJ5IHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QgaXQgc2hvdWxkIHN0YXkgYWZ0
ZXINCiAgICBsaWJjeHggKGUuZy4gLi4uOiQoVUtfTElCUykvbGliY3h4OiQoVUtfTElCUykvbGli
ZnhkaXY6Li4uKS4NCg0KPiBUaGlzIGlzIHNvbWV3aGF0IG1pc2xlYWRpbmcsIHNpbmNlIGxpYmN4
eCBkZXBlbmRzIG9uIG90aGVyIGxpYnJhcmllcyAob25lIG1pZ2h0IGJlIHRlbXB0ZWQgdG8gY29w
eSBhbmQgcGFzdGUgeW91ciBsaW5lIGFuZCBleHBlY3QgdGhpbmdzIHRvIHdvcmspLiBQZXJoYXBz
IHlvdSBjYW4gZ2l2ZSBhIGZ1bGxlciwgd29ya2luZyBleGFtcGxlPw0KICAgIA0KICAgIFNpZ25l
ZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNz
LnVwYi5ybz4NCiAgICAtLS0NCiAgICAgQ29uZmlnLnVrICAgICB8ICA1ICsrKysNCiAgICAgTWFr
ZWZpbGUudWsgICB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKw0KICAgICBleHBvcnRzeW1zLnVrIHwgIDEgKw0KICAgICAzIGZpbGVzIGNoYW5n
ZWQsIDgwIGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0K
ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsNCiAgICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGV4cG9ydHN5bXMudWsNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29u
ZmlnLnVrDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi4wZmM3
Y2E4DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0NvbmZpZy51aw0KICAgIEBAIC0wLDAg
KzEsNSBAQA0KICAgICttZW51Y29uZmlnIExJQkZYRElWDQogICAgKyAgICBib29sICJDOTkvQysr
IGhlYWRlci1vbmx5IGxpYnJhcnkgZm9yIGRpdmlzaW9uIHZpYSBmaXhlZC1wb2ludCBtdWx0aXBs
aWNhdGlvbiBieSBpbnZlcnNlIg0KDQo+IFBlcmhhcHMgd2UgY2FuIG1ha2UgdGhpcyBhIGJpdCBz
aG9ydGVyIGZvciBtZW51IHJlYWRpYmxpdHkgcHVycG9zZXM/IE1heWJlIHJlbW92ZSAiaGVhZGVy
LW9ubHkiPw0KDQogICAgKyAgICBzZWxlY3QgTElCQ1hYDQogICAgKyAgICBkZWZhdWx0IG4NCiAg
ICArDQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmExYWMwNjUNCiAgICAtLS0gL2Rl
di9udWxsDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAtMCwwICsxLDc0IEBADQogICAg
KyMgIGxpYmZ4ZGl2IGNvbmZpZyBmaWxlDQogICAgKyMNCiAgICArIyAgQXV0aG9yczogVmxhZC1B
bmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgICsj
DQogICAgKyMgIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBC
dWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogICAgKyMNCiAgICArIyAgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
DQogICAgKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucw0KICAgICsjICBhcmUgbWV0Og0KICAgICsjDQogICAgKyMgIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0DQogICAgKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAgICArIyAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQ0KICAgICsjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICAgICsjICAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzDQogICAg
KyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tDQogICAgKyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogICAgKyMNCiAgICArIyAgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiDQogICAgKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAgICArIyAgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UNCiAgICArIyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KICAgICsjICBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAg
KyMgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GDQogICAgKyMgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KICAgICsjICBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTg0KICAgICsjICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KICAgICsjICBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQ0KICAgICsjICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAgICArIw0KICAgICsjICBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0K
ICAgICsNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBMaWJyYXJ5IHJlZ2lz
dHJhdGlvbg0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICskKGV2YWwgJChjYWxs
IGFkZGxpYl9zLGxpYmZ4ZGl2LCQoQ09ORklHX0xJQkZYRElWKSkpDQogICAgKw0KICAgICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIFNvdXJjZXMNCiAgICArIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMNCiAgICArTElCRlhESVZfVkVSU0lPTj1tYXN0ZXINCiAgICArTElCRlhESVZfVVJM
PWh0dHBzOi8vZ2l0aHViLmNvbS9NYXJhdHlzemN6YS9GWGRpdi9hcmNoaXZlL21hc3Rlci56aXAN
Cg0KPiBJIHdhcyB3b25kZXJpbmcgd2hldGhlciB3ZSBzaG91bGRuJ3QgZnJlZXplIHRoaXMgYWdh
aW5zdCBhIHBhcnRpY3VsYXIgY29tbWl0LCBhbHRob3VnaCBnaXZlbiB0aGF0IHRoZSBsYXN0IGNv
bW1pdCB3YXMgaW4gTm92IDIwMTgsIHBlcmhhcHMgdGhpcyBwcm9qZWN0IGlzbid0IGNoYW5naW5n
IG11Y2ggYW55d2F5cz8NCg0KICAgICtMSUJGWERJVl9QQVRDSERJUj0kKExJQkZYRElWX0JBU0Up
L3BhdGNoZXMNCiAgICArJChldmFsICQoY2FsbCBmZXRjaCxsaWJmeGRpdiwkKExJQkZYRElWX1VS
TCkpKQ0KICAgICsNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBIZWxwZXJz
DQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgK0xJQkZYRElWX1NVQkRJUj1GWGRp
di1tYXN0ZXINCiAgICArTElCRlhESVZfU1JDPSQoTElCRlhESVZfT1JJR0lOKS8kKExJQkZYRElW
X1NVQkRJUikNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgTGli
cmFyeSBpbmNsdWRlcw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtDSU5DTFVE
RVMtJChDT05GSUdfTElCRlhESVYpICs9IC1JJChMSUJGWERJVl9TUkMpL2luY2x1ZGUNCiAgICAr
Q0lOQ0xVREVTLSQoQ09ORklHX0xJQkZYRElWKSArPSAtSSQoTElCRlhESVZfQkFTRSkvaW5jbHVk
ZQ0KICAgICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkkKExJQkZYRElWX1NS
QykvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkkKExJ
QkZYRElWX0JBU0UpL2luY2x1ZGUNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQogICAgKyMgR2xvYmFsIGZsYWdzDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAg
KyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sg
bmVhdGVyDQogICAgK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25v
LXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwJXA0KICAgICstV25vLXVudXNlZC1idXQtc2V0
LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRzCQlcDQogICAg
Ky1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdu
by11bmluaXRpYWxpemVkCQlcDQogICAgKy1Xbm8tYXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5p
bml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZC12YWx1ZQlcDQogICAgKy1X
bm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rpb24t
ZGVjbGFyYXRpb24JCVwNCiAgICArLVduby1taXNzaW5nLWJyYWNlcyAtV25vLWVuZGlmLWxhYmVs
cyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQlcDQogICAgKy1Xbm8taW1wbGljaXQtZnVu
Y3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0cyAtV25vLXNpZ24tY29tcGFyZQ0KICAg
ICtMSUJGWERJVl9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICArTElCRlhE
SVZfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICArDQogICAgZGlmZiAt
LWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrDQogICAgbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi42MjFlOTRmDQogICAgLS0tIC9kZXYvbnVsbA0KICAg
ICsrKyBiL2V4cG9ydHN5bXMudWsNCiAgICBAQCAtMCwwICsxIEBADQogICAgK25vbmUNCiAgICAt
LSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 19:11:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 19: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 1haPhf-00066s-Pk; Mon, 10 Jun 2019 19:11:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=b25Y=UJ=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haPhd-00066n-ND
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 19:11:33 +0000
X-Inumbo-ID: 8e9a69cf-8bb3-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8e9a69cf-8bb3-11e9-8980-bc764e045a96;
 Mon, 10 Jun 2019 19:11:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A0C11F228E;
 Mon, 10 Jun 2019 21:11:31 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id RdhbFEI8cuw5; Mon, 10 Jun 2019 21:11:31 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 77200F228D;
 Mon, 10 Jun 2019 21:11:25 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 10 Jun 2019 21:11:25
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 1/3] Add .gitignore
Thread-Index: AQHVHyJCj934OlRBVk6hvVNbJjX1eKaVQlIA
Date: Mon, 10 Jun 2019 19:11:24 +0000
Message-ID: <90E4EACB-BC34-4A63-9F16-B56C97709888@neclab.eu>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610001837.25284-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610001837.25284-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.208]
Content-ID: <E2005B610AA9DC419A1B680BB1758B5E@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMTAuMDYuMTksIDAyOjIwLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9h
bmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQogICAgLS0tDQogICAgIC5naXRpZ25vcmUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysr
KysNCiAgICAgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IC5naXRpZ25vcmUNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBi
Ly5naXRpZ25vcmUNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAu
Ljc1ZDJmZDMNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvLmdpdGlnbm9yZQ0KICAgIEBA
IC0wLDAgKzEsMjcgQEANCiAgICArKi5kZXBlbmQNCiAgICArKi5vDQogICAgKyouYQ0KICAgICsq
LmQNCiAgICArKi5zbw0KICAgICsqLm9yaWcNCiAgICArKi5yZWoNCiAgICArKi5iYWsNCiAgICAr
Ki5zd3ANCiAgICArKn4NCiAgICArLCoNCiAgICArXCMqXCMNCiAgICArLlwjKg0KICAgICtcI18q
XCMNCiAgICArLlwjXyoNCiAgICArIS5naXRpZ25vcmUNCiAgICArLioNCiAgICArDQogICAgKyMg
Z251IGdsb2JhbCBmaWxlcw0KICAgICtHUEFUSA0KICAgICtHUlRBR1MNCiAgICArR1NZTVMNCiAg
ICArR1RBR1MNCiAgICArDQogICAgKyMgY3Njb3BlIGZpbGVzDQogICAgK2NzY29wZS4qDQogICAg
K25jc2NvcGUuKg0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 19:13:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 19:13: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 1haPjR-0006Ah-1V; Mon, 10 Jun 2019 19:13: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=b25Y=UJ=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haPjP-0006Ac-V8
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 19:13:23 +0000
X-Inumbo-ID: cf9d6efe-8bb3-11e9-b8e1-4f249ae4977c
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cf9d6efe-8bb3-11e9-b8e1-4f249ae4977c;
 Mon, 10 Jun 2019 19:13:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id CA291105729;
 Mon, 10 Jun 2019 21:13:20 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Wa65cFjPnm_m; Mon, 10 Jun 2019 21:13:20 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A62441055AB;
 Mon, 10 Jun 2019 21:13:20 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Mon, 10 Jun 2019 21:13:20
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
Thread-Index: AQHVHyJDlZbsXEnj1kGFF4jxwfQooKaVQtoA
Date: Mon, 10 Jun 2019 19:13:19 +0000
Message-ID: <22592FD5-BCD1-49CF-8F43-C167E3B1B5C8@neclab.eu>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610001837.25284-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610001837.25284-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.208]
Content-ID: <B66971D3AD207D469598340E10DBD72D@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwgYW55IHJlYXNvbiB0aGVyZSdzIG5vIENPUFlJTkcubWQ/DQoNCi0tIEZlbGlwZQ0K
DQrvu79PbiAxMC4wNi4xOSwgMDI6MjAsICJWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2
bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPiB3cm90ZToNCg0KICAgIFNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4NCiAgICAtLS0NCiAgICAgQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KICAgICBDT05U
UklCVVRJTkcubWQgfCAgNCArKysrDQogICAgIE1BSU5UQUlORVJTLm1kICB8IDExICsrKysrKysr
KysrDQogICAgIFJFQURNRS5tZCAgICAgICB8ICA1ICsrKysrDQogICAgIDQgZmlsZXMgY2hhbmdl
ZCwgMjQgaW5zZXJ0aW9ucygrKQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxF
Lm1kDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQNCiAgICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFE
TUUubWQNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvQ09ESU5HX1NUWUxFLm1kIGIvQ09ESU5HX1NU
WUxFLm1kDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi41NzMw
MDQxDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0NPRElOR19TVFlMRS5tZA0KICAgIEBA
IC0wLDAgKzEsNCBAQA0KICAgICtDb2RpbmcgU3R5bGUNCiAgICArPT09PT09PT09PT09DQogICAg
Kw0KICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT0RJTkdfU1RZTEUubWRgIGZpbGUgaW4gdGhl
IG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICBkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5H
Lm1kIGIvQ09OVFJJQlVUSU5HLm1kDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi41ZjU1ZWNhDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0NPTlRSSUJV
VElORy5tZA0KICAgIEBAIC0wLDAgKzEsNCBAQA0KICAgICtDb250cmlidXRpbmcgdG8gVW5pa3Jh
ZnQNCiAgICArPT09PT09PT09PT09PT09PT09PT09PT0NCiAgICArDQogICAgK1BsZWFzZSByZWZl
ciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBv
c2l0b3J5Lg0KICAgIGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1k
DQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi4xMzg0YTlmDQog
ICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL01BSU5UQUlORVJTLm1kDQogICAgQEAgLTAsMCAr
MSwxMSBAQA0KICAgICtNYWludGFpbmVycyBMaXN0DQogICAgKz09PT09PT09PT09PT09PT0NCiAg
ICArDQogICAgK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVh
c2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KICAgICt0aGUgbWFpbiBVbmlrcmFmdCBy
ZXBvc2l0b3J5Lg0KICAgICsNCiAgICArCUxJQkZQMTYtVU5JS1JBRlQNCiAgICArCU06CUZlbGlw
ZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCiAgICArCU06CVZsYWQtQW5kcmVpIEJh
ZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCiAgICArCUw6CW1pbmlv
cy1kZXZlbEBsaXN0cy54ZW4ub3JnDQogICAgKwlGOiAqDQogICAgZGlmZiAtLWdpdCBhL1JFQURN
RS5tZCBiL1JFQURNRS5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAw
MDAwMC4uYmEwMDhlNA0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9SRUFETUUubWQNCiAg
ICBAQCAtMCwwICsxLDUgQEANCiAgICArbGliZnAxNiBmb3IgVW5pa3JhZnQNCiAgICArPT09PT09
PT09PT09PT09PT09PQ0KICAgICsNCiAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1k
YCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2ANCiAgICArc3ViZGly
ZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgLS0gDQogICAgMi4y
MS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 10 19:16:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 10 Jun 2019 19:16: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 1haPm2-0006D9-9z; Mon, 10 Jun 2019 19:16:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=b25Y=UJ=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haPm1-0006D4-NR
 for minios-devel@lists.xen.org; Mon, 10 Jun 2019 19:16:05 +0000
X-Inumbo-ID: 2ee6bd5c-8bb4-11e9-a33b-0be064738abe
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2ee6bd5c-8bb4-11e9-a33b-0be064738abe;
 Mon, 10 Jun 2019 19:16:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A82FE105A36;
 Mon, 10 Jun 2019 21:16:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id LR2rA1Ms3kxA; Mon, 10 Jun 2019 21:16:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 787C91055AB;
 Mon, 10 Jun 2019 21:16:00 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 10 Jun 2019 21:16:00
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 3/3] Initial port of fp16 to Unikraft
Thread-Index: AQHVHyJEkSVNNGCYhESRqJ+Yf0TKYKaVQ5qA
Date: Mon, 10 Jun 2019 19:16:00 +0000
Message-ID: <A86B003D-4CF9-43FC-AD9F-3AF37C7EE5BE@neclab.eu>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610001837.25284-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190610001837.25284-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.7.0.208]
Content-ID: <B69DA7EA82FEC54AAF4A86AC206C33C5@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 3/3] Initial port of
 fp16 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KUGxlYXNlIHNlZSBvbmUgc21hbGwgY29tbWVudCBpbmxpbmUuIElmIHRoZXJl
J3MgaXNuJ3QgYSB2MiB0byB0aGlzIHNlcmllcyBJIGNhbiBmaXggdGhhdCBvbiB1cHN0cmVhbSAo
dGh1cyB0aGUgcmV2aWV3ZWQtYnkgYmVsb3cpLg0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQtYnk6
IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0K77u/T24gMTAuMDYuMTks
IDAyOjIwLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9hbmRyZWkuYmFkb2l1
QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIGlzIG91ciBpbml0aWFsIHBvcnQg
b2YgZnAxNiB0byBVbmlrcmFmdCBhcyBhbiBleHRlcm5hbCBsaWJyYXJ5LiBMaWJjeHggaXMNCiAg
ICByZXF1aXJlZC4gV2hlbiBhZGRpbmcgdGhlIGxpYnJhcnkgdG8gdGhlIGRlcGVuZGVuY3kgbGlz
dCBpdCBzaG91bGQgc3RheSBhZnRlcg0KICAgIGxpYmN4eCAoZS5nLiAuLi46JChVS19MSUJTKS9s
aWJjeHg6JChVS19MSUJTKS9saWJmcDE2Oi4uLikuDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTog
VmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0K
ICAgIC0tLQ0KICAgICBDb25maWcudWsgICAgIHwgIDUgKysrKw0KICAgICBNYWtlZmlsZS51ayAg
IHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
DQogICAgIGV4cG9ydHN5bXMudWsgfCAgMSArDQogICAgIDMgZmlsZXMgY2hhbmdlZCwgODAgaW5z
ZXJ0aW9ucygrKQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrDQogICAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51aw0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwb3J0
c3ltcy51aw0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsNCiAg
ICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjk4Y2NjODQNCiAgICAt
LS0gL2Rldi9udWxsDQogICAgKysrIGIvQ29uZmlnLnVrDQogICAgQEAgLTAsMCArMSw1IEBADQog
ICAgK21lbnVjb25maWcgTElCRlAxNg0KICAgICsgICAgYm9vbCAiQ29udmVyc2lvbiB0by9mcm9t
IGhhbGYtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IGZvcm1hdHMiDQoNCj4gUHJvYmFibHkgYmVz
dCB0byBwdXQgdGhlIGxpYidzIG5hbWUgYXQgdGhlIGZyb250IG9mIHRoZSBzdHJpbmcsIGZvbGxv
d2VkIGJ5IGEgZGFzaCBhbmQgdGhlIGV4cGxhbmF0aW9uLCBzbyBwZW9wbGUgY2FuIGlkZW50aWZ5
IGl0IG1vcmUgZWFzaWx5Lg0KDQogICAgKyAgICBzZWxlY3QgTElCQ1hYDQogICAgKyAgICBkZWZh
dWx0IG4NCiAgICArDQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsN
CiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjJjNGZlOTMNCiAg
ICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAtMCwwICsxLDc0
IEBADQogICAgKyMgIGxpYmZwMTYgY29uZmlnIGZpbGUNCiAgICArIw0KICAgICsjICBBdXRob3Jz
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQogICAgKyMNCiAgICArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhu
aWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICArIw0KICAgICsjICBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQNCiAgICArIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgKyMgIGFyZSBtZXQ6DQogICAgKyMNCiAg
ICArIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQNCiAgICArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgICsjICAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICAg
ICsjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogICAgKyMgIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBp
dHMNCiAgICArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICArIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgICArIw0KICAgICsjICBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUyBJUyINCiAgICArIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAgICsjICBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQ0KICAgICsjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgKyMgIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1INCiAgICArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICArIyAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogICAgKyMg
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElODQogICAgKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKyMgIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFDQogICAgKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAgICsjDQog
ICAgKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIExpYnJh
cnkgcmVnaXN0cmF0aW9uDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyQoZXZh
bCAkKGNhbGwgYWRkbGliX3MsbGliZnAxNiwkKENPTkZJR19MSUJGUDE2KSkpDQogICAgKw0KICAg
ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIFNvdXJjZXMNCiAgICArIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMNCiAgICArTElCRlAxNl9WRVJTSU9OPW1hc3Rlcg0KICAgICtMSUJGUDE2
X1VSTD1odHRwczovL2dpdGh1Yi5jb20vTWFyYXR5c3pjemEvRlAxNi9hcmNoaXZlL21hc3Rlci56
aXANCiAgICArTElCRlAxNl9QQVRDSERJUj0kKExJQkZQMTZfQkFTRSkvcGF0Y2hlcw0KICAgICsk
KGV2YWwgJChjYWxsIGZldGNoLGxpYmZwMTYsJChMSUJGUDE2X1VSTCkpKQ0KICAgICsNCiAgICAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBIZWxwZXJzDQogICAgKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjDQogICAgK0xJQkZQMTZfU1VCRElSPUZQMTYtbWFzdGVyDQogICAgK0xJQkZQ
MTZfU1JDPSQoTElCRlAxNl9PUklHSU4pLyQoTElCRlAxNl9TVUJESVIpDQogICAgKw0KICAgICsj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIExpYnJhcnkgaW5jbHVkZXMNCiAgICArIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkZQMTYpICs9
IC1JJChMSUJGUDE2X1NSQykvaW5jbHVkZQ0KICAgICtDSU5DTFVERVMtJChDT05GSUdfTElCRlAx
NikgKz0gLUkkKExJQkZQMTZfQkFTRSkvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENPTkZJ
R19MSUJGUDE2KSArPSAtSSQoTElCRlAxNl9TUkMpL2luY2x1ZGUNCiAgICArQ1hYSU5DTFVERVMt
JChDT05GSUdfTElCRlAxNikgKz0gLUkkKExJQkZQMTZfQkFTRSkvaW5jbHVkZQ0KICAgICsNCiAg
ICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBHbG9iYWwgZmxhZ3MNCiAgICArIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1h
a2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXINCiAgICArU1VQUFJFU1NfRkxBR1MgKz0g
LVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8tbm9ubnVsbAlc
DQogICAgKy1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby11bnVzZWQtbGFiZWwgLVdu
by1jaGFyLXN1YnNjcmlwdHMJCVwNCiAgICArLVduby11bnVzZWQtZnVuY3Rpb24gLVduby1taXNz
aW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQJCVwNCiAgICArLVduby1h
cnJheS1ib3VuZHMgLVduby1tYXliZS11bmluaXRpYWxpemVkIC1Xbm8tcG9pbnRlci1zaWduIC1X
bm8tdW51c2VkLXZhbHVlCVwNCiAgICArLVduby11bnVzZWQtbWFjcm9zIC1Xbm8tcGFyZW50aGVz
ZXMgLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbgkJXA0KICAgICstV25vLW1pc3Np
bmctYnJhY2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJ
CVwNCiAgICArLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV25vLXR5cGUtbGlt
aXRzIC1Xbm8tc2lnbi1jb21wYXJlDQogICAgK0xJQkZQMTZfQ0ZMQUdTLXkgICAgKz0gICQoU1VQ
UFJFU1NfRkxBR1MpDQogICAgK0xJQkZQMTZfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19G
TEFHUykNCiAgICArDQogICAgZGlmZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1z
LnVrDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi42MjFlOTRm
DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2V4cG9ydHN5bXMudWsNCiAgICBAQCAtMCww
ICsxIEBADQogICAgK25vbmUNCiAgICAtLSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:09:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:09: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 1haVHc-0002HQ-RV; Tue, 11 Jun 2019 01:09: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVHb-0002HL-1h
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:09:03 +0000
X-Inumbo-ID: 7c999a84-8be5-11e9-ae43-9ff3bd4375ad
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.81]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7c999a84-8be5-11e9-ae43-9ff3bd4375ad;
 Tue, 11 Jun 2019 01:08:57 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Tue, 11 Jun
 2019 01:08:55 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:08:55 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 0/3] Add missing symbols/headers needed by
 Python2
Thread-Index: AQHVH/I9MNPFN/wSeUu6J/fQNnFWGQ==
Date: Tue, 11 Jun 2019 01:08:55 +0000
Message-ID: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0024.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: f8544ac7-cf4f-4284-adb3-08d6ee095fed
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB49556AC71DCB5F11FC97B515A6ED0@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:5236;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39840400004)(366004)(396003)(136003)(189003)(199004)(316002)(6486002)(6512007)(25786009)(6436002)(66446008)(786003)(73956011)(74482002)(64756008)(66946007)(5640700003)(53936002)(66476007)(66556008)(256004)(54906003)(26005)(2501003)(99286004)(305945005)(85182001)(476003)(486006)(102836004)(2906002)(186003)(68736007)(2616005)(5660300002)(6116002)(3846002)(386003)(6506007)(1076003)(14454004)(4744005)(2351001)(508600001)(7736002)(85202003)(8936002)(81166006)(66066001)(81156014)(4326008)(71190400001)(71200400001)(86362001)(52116002)(50226002)(6916009)(8676002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: mVr7DIHxxcGey+mW/uG4+dUMFHwsqUBq8Ds5/rrrXSMfUm2XvRodONQNyohBx7yiedzX3h/Ax04wRBDa3A457TXDbMhPduvZpJppzhGYM9KNP1jT2DjXw1tkbexS2XrJv/TUkfkQf080NYqAoydnM4nH/TFoczkS1L6kEJc5tSKORJNO1c+T24JtexEw9S5sIxUgVyt8ZEPkNaCDt5PK6rzktI+K4JPo2Hjsq+K8BYfxuKaPDdKrb2lf/rgFJrvQEol5k133RWl5VYX1qtO3QxrAU2Mdx20FNDybIRsJiTX4Ti/1z0m3OaYfySj4ClwYcGKCJYdvCDMd/JxUM5pwyfkogPGPRkTIhS1AeBRlFj7HPrf0KHIIEVDJJSktTuQCN/0Uj4O04eA/KCq/fW+2MQzvTMabG9mxJzoYOLdt1kw=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: f8544ac7-cf4f-4284-adb3-08d6ee095fed
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:08:55.4800 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 0/3] Add missing
 symbols/headers needed by Python2
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBuZXRpbmV0L3RjcC5oIGhlYWRlciwgU09DS19TRVFQQUNLRVQg
ZGVmaW5lIGFuZCBleHBvcnRzIHRoZQ0KbmVjZWVzc2FyeSBzeW1ib2xzIGZvciB0aGUgUHl0aG9u
IHNvY2tldCBtb2R1bGUgdG8gd29yay4NCg0KVmxhZC1BbmRyZWkgQmFkb2l1ICgzKToNCiAgQWRk
IFNPQ0tfU0VRUEFDS0VUIGluIHNvY2tldC5oDQogIEFkZCBuZXRpbmV0L3RjcC5oDQogIEV4cG9y
dCBhZGl0aW9uYWwgc3ltYm9scw0KDQogZXhwb3J0c3ltcy51ayAgICAgICAgIHwgIDUgKysrDQog
aW5jbHVkZS9uZXRpbmV0L3RjcC5oIHwgOTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKw0KIGluY2x1ZGUvc3lzL3NvY2tldC5oICB8ICA0ICsrDQogMyBmaWxlcyBj
aGFuZ2VkLCAxMDcgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL25l
dGluZXQvdGNwLmgNCg0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:09:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:09: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 1haVHf-0002Hm-TT; Tue, 11 Jun 2019 01:09: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVHe-0002HW-AD
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:09:06 +0000
X-Inumbo-ID: 80057f80-8be5-11e9-94fe-afe8ace742f2
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.81]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 80057f80-8be5-11e9-94fe-afe8ace742f2;
 Tue, 11 Jun 2019 01:09:02 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Tue, 11 Jun
 2019 01:08:56 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:08:56 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 1/3] Add SOCK_SEQPACKET in socket.h
Thread-Index: AQHVH/I+k4gltN1vpkuX0pK2V7y1pQ==
Date: Tue, 11 Jun 2019 01:08:56 +0000
Message-ID: <20190611010845.29325-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0024.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a7c436fe-94eb-4272-6ed5-08d6ee096083
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB4955446CA8E167659D9CC609A6ED0@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:138;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39840400004)(366004)(396003)(136003)(189003)(199004)(316002)(6486002)(6512007)(25786009)(6436002)(66446008)(786003)(73956011)(74482002)(64756008)(66946007)(5640700003)(53936002)(66476007)(66556008)(256004)(54906003)(26005)(76176011)(2501003)(99286004)(305945005)(85182001)(476003)(11346002)(486006)(446003)(102836004)(2906002)(186003)(68736007)(2616005)(5660300002)(6116002)(3846002)(386003)(6506007)(1076003)(14454004)(4744005)(2351001)(508600001)(7736002)(85202003)(8936002)(81166006)(66066001)(81156014)(4326008)(71190400001)(71200400001)(86362001)(52116002)(50226002)(6916009)(8676002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 3EqliogTXE1kZ4JCc42EuHbIE170jnJiK0flwoTTOVBqrtyi5v4KfdRA8jy1sr34+pfc22sBB4Y6bk6EStGE+rYqz9kRiuJaKgdhOLbpgkq37xv5e7olnzIOxBpvIwz8R3l7WQoJExYKvin+XiwMibUJEDKHuVAbwBejx5/W7ERDiYK5VdYKba6VSsaPNBOgHxLoFASn2uuG/6zqB/p/RA8a+FUIZKH+d8u19DX3owGygFHULh7DOzLH4HVok8tTmS6mMVD+cUbD3/KdBtg271FnZ5QBWLeDWpulWc1daLQXTE3BSijMX027qADqPP9W5QK/zB/X9PxbYyINbYsUypJUzYXn9xOMXCoM9gmPTHhEEaSUvQt+ZtKhx1E6TX/dvuldX39PI3T4TdMAMaqBT6SRjgDWS+HBerEkwb8UxUI=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: a7c436fe-94eb-4272-6ed5-08d6ee096083
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:08:56.4434 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/3] Add SOCK_SEQPACKET in
 socket.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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBtaXNzaW5nIFNPQ0tfU0VRUEFDS0VUIHRvIGluY2x1ZGUvc29j
a2V0LmguDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIGluY2x1ZGUvc3lzL3NvY2tldC5oIHwgNCAr
KysrDQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS9zeXMvc29ja2V0LmggYi9pbmNsdWRlL3N5cy9zb2NrZXQuaA0KaW5kZXggNTNkOTMwMS4u
NDJiYWQ2YyAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvc3lzL3NvY2tldC5oDQorKysgYi9pbmNsdWRl
L3N5cy9zb2NrZXQuaA0KQEAgLTQ4LDYgKzQ4LDEwIEBADQogI2RlZmluZSBTT0NLX05PTkJMT0NL
ICAgMHgyMDAwMDAwMA0KICNlbmRpZg0KIA0KKyNpZm5kZWYgU09DS19TRVFQQUNLRVQNCisjZGVm
aW5lIFNPQ0tfU0VRUEFDS0VUIDUNCisjZW5kaWYNCisNCiAjZGVmaW5lIGlvY3RsKHMsIGNtZCwg
YXJncCkgbHdpcF9pb2N0bChzLCBjbWQsIGFyZ3ApDQogDQogaW50IHNvY2tldChpbnQgZG9tYWlu
LCBpbnQgdHlwZSwgaW50IHByb3RvY29sKTsNCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:09:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:09: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 1haVHj-0002IQ-Vh; Tue, 11 Jun 2019 01:09: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVHi-0002IB-Io
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:09:10 +0000
X-Inumbo-ID: 821215e0-8be5-11e9-ad31-c3cc3afc60ea
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.81]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 821215e0-8be5-11e9-ad31-c3cc3afc60ea;
 Tue, 11 Jun 2019 01:09:05 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Tue, 11 Jun
 2019 01:08:57 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:08:57 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 2/3] Add netinet/tcp.h
Thread-Index: AQHVH/I+/Du5uZHCo0ugWMYBF37GRA==
Date: Tue, 11 Jun 2019 01:08:57 +0000
Message-ID: <20190611010845.29325-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0024.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: faa8bcd6-70dd-42cc-c6ff-08d6ee096124
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB4955431B5C5AE9B07CE04A88A6ED0@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3513;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39840400004)(366004)(396003)(136003)(189003)(199004)(316002)(6486002)(6512007)(25786009)(14444005)(6436002)(66446008)(786003)(73956011)(74482002)(64756008)(66946007)(5640700003)(53936002)(66476007)(66556008)(256004)(54906003)(26005)(76176011)(2501003)(99286004)(305945005)(85182001)(476003)(11346002)(486006)(446003)(102836004)(2906002)(186003)(68736007)(2616005)(5660300002)(6116002)(3846002)(386003)(6506007)(1076003)(14454004)(2351001)(508600001)(7736002)(85202003)(8936002)(81166006)(66066001)(81156014)(4326008)(71190400001)(71200400001)(86362001)(52116002)(50226002)(6916009)(8676002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: UqKDiXvQ3uFGM9I13MLT+VbDBI/z+RG24g5SgZAKlJ+UffqJktgC+ZtPnWazKm2cQW5DZNuhYYTiLO8a3WvHzGBmrLIovxPWG+maNv37B97THRS5uVFMryRglq21pd2Kh7oGNRdjIdLpuZLLcWOGTpwosks9AsicZoYP0mGaH7hhHtcPzsynw0czwXmtqwDI2CztU4UyJQVgThSf69XTg6/1GdWF8jEPW51MCfeOpfIJKbSxcXnyLom5agBKuyVMpzHdbDfNjCecXEfB3pbku2GJiBWqowXvXPjJ8vaD4siA6pIOccl2RS7b76ixNg6C0T24Zo9G/FVMrnuEYYvmoHbDr98eZqXE4zHjxO0LLqDSiKf7fU3lwrJ7dSKFPkvyFuwjFzPh/Ai638QjUsymDOnPOBmJeFiOpDa+BImtewg=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: faa8bcd6-70dd-42cc-c6ff-08d6ee096124
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:08:57.3958 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 2/3] Add netinet/tcp.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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogaW5jbHVkZS9uZXRpbmV0L3RjcC5oIHwgOTggKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA5OCBp
bnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbmV0aW5ldC90Y3AuaA0K
DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXRpbmV0L3Rj
cC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNmI3N2ZmNg0KLS0tIC9k
ZXYvbnVsbA0KKysrIGIvaW5jbHVkZS9uZXRpbmV0L3RjcC5oDQpAQCAtMCwwICsxLDk4IEBADQor
LyoNCisgKiBDb3B5cmlnaHQgKGMpIDE5ODIsIDE5ODYsIDE5OTMNCisgKglUaGUgUmVnZW50cyBv
ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisg
Kg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4NCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p
bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUNCisgKiAgICBtdXN0IGRpc3BsYXkg
dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6DQorICoJVGhpcyBwcm9kdWN0IGluY2x1ZGVz
IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgVW5pdmVyc2l0eSBvZg0KKyAqCUNhbGlmb3JuaWEs
IEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLg0KKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzDQorICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlDQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdF
TlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFDQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQorICogRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwNCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUw0KKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KKyAqIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUDQorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQ0KKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCisgKiBT
VUNIIERBTUFHRS4NCisgKg0KKyAqCUAoIyl0Y3AuaAk4LjEgKEJlcmtlbGV5KSA2LzEwLzkzDQor
ICovDQorDQordHlwZWRlZgl1X2xvbmcJdGNwX3NlcTsNCisvKg0KKyAqIFRDUCBoZWFkZXIuDQor
ICogUGVyIFJGQyA3OTMsIFNlcHRlbWJlciwgMTk4MS4NCisgKi8NCitzdHJ1Y3QgdGNwaGRyIHsN
CisJdV9zaG9ydAl0aF9zcG9ydDsJCS8qIHNvdXJjZSBwb3J0ICovDQorCXVfc2hvcnQJdGhfZHBv
cnQ7CQkvKiBkZXN0aW5hdGlvbiBwb3J0ICovDQorCXRjcF9zZXEJdGhfc2VxOwkJCS8qIHNlcXVl
bmNlIG51bWJlciAqLw0KKwl0Y3Bfc2VxCXRoX2FjazsJCQkvKiBhY2tub3dsZWRnZW1lbnQgbnVt
YmVyICovDQorI2lmIEJZVEVfT1JERVIgPT0gTElUVExFX0VORElBTiANCisJdV9jaGFyCXRoX3gy
OjQsCQkvKiAodW51c2VkKSAqLw0KKwkJdGhfb2ZmOjQ7CQkvKiBkYXRhIG9mZnNldCAqLw0KKyNl
bmRpZg0KKyNpZiBCWVRFX09SREVSID09IEJJR19FTkRJQU4gDQorCXVfY2hhcgl0aF9vZmY6NCwJ
CS8qIGRhdGEgb2Zmc2V0ICovDQorCQl0aF94Mjo0OwkJLyogKHVudXNlZCkgKi8NCisjZW5kaWYN
CisJdV9jaGFyCXRoX2ZsYWdzOw0KKyNkZWZpbmUJVEhfRklOCTB4MDENCisjZGVmaW5lCVRIX1NZ
TgkweDAyDQorI2RlZmluZQlUSF9SU1QJMHgwNA0KKyNkZWZpbmUJVEhfUFVTSAkweDA4DQorI2Rl
ZmluZQlUSF9BQ0sJMHgxMA0KKyNkZWZpbmUJVEhfVVJHCTB4MjANCisJdV9zaG9ydAl0aF93aW47
CQkJLyogd2luZG93ICovDQorCXVfc2hvcnQJdGhfc3VtOwkJCS8qIGNoZWNrc3VtICovDQorCXVf
c2hvcnQJdGhfdXJwOwkJCS8qIHVyZ2VudCBwb2ludGVyICovDQorfTsNCisNCisjZGVmaW5lCVRD
UE9QVF9FT0wJCTANCisjZGVmaW5lCVRDUE9QVF9OT1AJCTENCisjZGVmaW5lCVRDUE9QVF9NQVhT
RUcJCTINCisjZGVmaW5lICAgIFRDUE9MRU5fTUFYU0VHCQk0DQorI2RlZmluZSBUQ1BPUFRfV0lO
RE9XCQkzDQorI2RlZmluZSAgICBUQ1BPTEVOX1dJTkRPVwkJMw0KKyNkZWZpbmUgVENQT1BUX1NB
Q0tfUEVSTUlUVEVECTQJCS8qIEV4cGVyaW1lbnRhbCAqLw0KKyNkZWZpbmUgICAgVENQT0xFTl9T
QUNLX1BFUk1JVFRFRAkyDQorI2RlZmluZSBUQ1BPUFRfU0FDSwkJNQkJLyogRXhwZXJpbWVudGFs
ICovDQorI2RlZmluZSBUQ1BPUFRfVElNRVNUQU1QCTgNCisjZGVmaW5lICAgIFRDUE9MRU5fVElN
RVNUQU1QCQkxMA0KKyNkZWZpbmUgICAgVENQT0xFTl9UU1RBTVBfQVBQQQkJKFRDUE9MRU5fVElN
RVNUQU1QKzIpIC8qIGFwcGVuZGl4IEEgKi8NCisNCisjZGVmaW5lIFRDUE9QVF9UU1RBTVBfSERS
CVwNCisgICAgKFRDUE9QVF9OT1A8PDI0fFRDUE9QVF9OT1A8PDE2fFRDUE9QVF9USU1FU1RBTVA8
PDh8VENQT0xFTl9USU1FU1RBTVApDQorDQorLyoNCisgKiBEZWZhdWx0IG1heGltdW0gc2VnbWVu
dCBzaXplIGZvciBUQ1AuDQorICogV2l0aCBhbiBJUCBNU1Mgb2YgNTc2LCB0aGlzIGlzIDUzNiwN
CisgKiBidXQgNTEyIGlzIHByb2JhYmx5IG1vcmUgY29udmVuaWVudC4NCisgKiBUaGlzIHNob3Vs
ZCBiZSBkZWZpbmVkIGFzIE1JTig1MTIsIElQX01TUyAtIHNpemVvZiAoc3RydWN0IHRjcGlwaGRy
KSkuDQorICovDQorI2RlZmluZQlUQ1BfTVNTCTUxMg0KKw0KKyNkZWZpbmUJVENQX01BWFdJTgk2
NTUzNQkvKiBsYXJnZXN0IHZhbHVlIGZvciAodW5zY2FsZWQpIHdpbmRvdyAqLw0KKw0KKyNkZWZp
bmUgVENQX01BWF9XSU5TSElGVAkxNAkvKiBtYXhpbXVtIHdpbmRvdyBzaGlmdCAqLw0KKw0KKy8q
DQorICogVXNlci1zZXR0YWJsZSBvcHRpb25zICh1c2VkIHdpdGggc2V0c29ja29wdCkuDQorICov
DQorI2RlZmluZQlUQ1BfTk9ERUxBWQkweDAxCS8qIGRvbid0IGRlbGF5IHNlbmQgdG8gY29hbGVz
Y2UgcGFja2V0cyAqLw0KKyNkZWZpbmUJVENQX01BWFNFRwkweDAyCS8qIHNldCBtYXhpbXVtIHNl
Z21lbnQgc2l6ZSAqLw0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:09:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:09: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 1haVHl-0002Ip-17; Tue, 11 Jun 2019 01:09: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVHj-0002IK-Qm
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:09:11 +0000
X-Inumbo-ID: 84c8c3e2-8be5-11e9-b879-7fd1cc486032
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.81]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 84c8c3e2-8be5-11e9-b879-7fd1cc486032;
 Tue, 11 Jun 2019 01:09:10 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4955.eurprd01.prod.exchangelabs.com (20.177.208.221) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.12; Tue, 11 Jun
 2019 01:08:58 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:08:58 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 3/3] Export additional symbols
Thread-Index: AQHVH/I/SF1xcUqq4kKgGwTAKOMz8Q==
Date: Tue, 11 Jun 2019 01:08:58 +0000
Message-ID: <20190611010845.29325-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P193CA0024.EURP193.PROD.OUTLOOK.COM
 (2603:10a6:800:bd::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 8d674620-a0a1-4ac4-61b9-08d6ee0961b1
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4955; 
x-ms-traffictypediagnostic: PR1PR01MB4955:
x-microsoft-antispam-prvs: <PR1PR01MB4955147E1BFB04C2E7CFB506A6ED0@PR1PR01MB4955.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:361;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39840400004)(366004)(396003)(136003)(189003)(199004)(316002)(6486002)(6512007)(25786009)(6436002)(66446008)(786003)(73956011)(74482002)(64756008)(66946007)(5640700003)(53936002)(66476007)(66556008)(256004)(54906003)(26005)(76176011)(2501003)(99286004)(305945005)(85182001)(476003)(11346002)(486006)(446003)(102836004)(2906002)(186003)(68736007)(2616005)(5660300002)(6116002)(3846002)(386003)(6506007)(1076003)(14454004)(4744005)(2351001)(508600001)(7736002)(85202003)(8936002)(81166006)(66066001)(81156014)(4326008)(71190400001)(71200400001)(86362001)(52116002)(50226002)(6916009)(8676002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4955;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: oyFPqeeHcPebOHGgpfTea3IFnEn+MSTXWXMvCJNgFPL/2gVNcuXB9Z/GlPvWcU48Du0JpKZQ6NWcv62ka4q20elTJDz2ePVjS2yKfMYuFgbfGCxJaBErgwiBcW4f8I6brRxbilSEw0/rosYzjCU/ET8hi1IHRUYguS6HXBuvDfLBfbIbusGrlcctyE1w1ANIbeBi9dJh3JRSnNGSlxDeT87KlB3awLO82nceUTAT8dpGIVaC4udjUh7PcPg6GqmaOpY7kTQH+L1D3i1KqAwZblzWwk3kjpO3HdsgOSwD4qFImbm8+MgDNWj0p3WhTryZJ4V5ZdicCF5JYMZ59cMDcUsjsa9tCZchh23bD484Vrc79S4JAdc2ORvgkYESamP5meSABhRljhgNPFN2agBlBn51NtYzwuszit7GaoHX5Fk=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 8d674620-a0a1-4ac4-61b9-08d6ee0961b1
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:08:58.4212 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4955
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 3/3] Export additional symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGlwNGFkZHJfYXRvbiwgaXA0YWRkcl9udG9hLCBpcGFkZHJfYWRkciwg
aXA0YWRkcl9udG9hDQphbmQgaF9lcnJubyB0byBleHBvcnRzeW1zLnVrLg0KDQpTaWduZWQtb2Zm
LWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIu
cm8+DQotLS0NCiBleHBvcnRzeW1zLnVrIHwgNSArKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCA1IGlu
c2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVr
DQppbmRleCAxNzIwZTAwLi41MzRlNDlhIDEwMDY0NA0KLS0tIGEvZXhwb3J0c3ltcy51aw0KKysr
IGIvZXhwb3J0c3ltcy51aw0KQEAgLTE5LDMgKzE5LDggQEAgc2VuZHRvDQogc2V0c29ja29wdA0K
IHNodXRkb3duDQogc29ja2V0DQoraXA0YWRkcl9hdG9uDQoraXA0YWRkcl9udG9hDQoraXBhZGRy
X2FkZHINCitpcDRhZGRyX250b2ENCitoX2Vycm5vDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:44:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:44: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 1haVq1-0005Mn-NQ; Tue, 11 Jun 2019 01:44:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVq0-0005Md-JO
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:44:36 +0000
X-Inumbo-ID: 744c3288-8bea-11e9-a4c3-073f0d0055f1
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.44]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 744c3288-8bea-11e9-a4c3-073f0d0055f1;
 Tue, 11 Jun 2019 01:44:30 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5098.eurprd01.prod.exchangelabs.com (20.177.209.215) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Tue, 11 Jun
 2019 01:44:29 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:44:29 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 0/3] Add functions needed by the Python
 socketmodule
Thread-Index: AQHVH/c1M8oj+qc6rEqloAFzYZBD8g==
Date: Tue, 11 Jun 2019 01:44:28 +0000
Message-ID: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0019.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::29) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 746d5429-a124-4829-0ebd-08d6ee0e57a8
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5098; 
x-ms-traffictypediagnostic: PR1PR01MB5098:
x-microsoft-antispam-prvs: <PR1PR01MB5098F8B67E898DA0DD97411DA6ED0@PR1PR01MB5098.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3513;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39840400004)(396003)(136003)(366004)(199004)(189003)(50226002)(81166006)(6506007)(25786009)(14454004)(305945005)(386003)(508600001)(8676002)(4326008)(8936002)(7736002)(102836004)(81156014)(86362001)(53936002)(71200400001)(74482002)(6116002)(3846002)(52116002)(6916009)(256004)(4744005)(71190400001)(5660300002)(1076003)(68736007)(2351001)(6436002)(2906002)(186003)(2501003)(486006)(6512007)(476003)(26005)(66066001)(2616005)(54906003)(5640700003)(99286004)(85202003)(73956011)(66946007)(66446008)(786003)(316002)(6486002)(66556008)(64756008)(85182001)(66476007);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5098;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: r36u+pXl6JFWdrAwkEo4rX2nRdSvxDXZfKEvZKW02Y+TrJ34y3HNwvLwSVP+WQ1yfJkN8vBos3lH3ZUu6ziEMXJJweXGBpAG60PHraEosdW1ZCpzVocD7UjCcZOwReH/U0kZNo7M1+m2PHk2OKRvETldYrJH5eKYWYlUTiwna3AaTwGu2lTvWAppZIrJXYImjU3LH+/QmfUTJtDE/nWz4lOHzQrgXxODHYixTIIXOS6LQlQfeqbm5yZTATeqMsZmRDN3DVDEgwu9iE5GkpmaUMyZBgjbgxB7fG/sfHKg0FXa0Foo7vHzxGeYTqtR40fIcPscwqo5ja8NkMFiHDZct/hBeDsKjbMiPlBqONbjJz/F0K6Vm8yC8r8NjzvNAmna41a0xPaHidJslvyiZ2Xc2p0IKeOLENLekMN+VpXBYjQ=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 746d5429-a124-4829-0ebd-08d6ee0e57a8
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:44:28.9866 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5098
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 0/3] Add functions needed by
 the Python socketmodule
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBwcm90byosIGdldGhvc3QqLCBnZXRzZXJ2ciogIGZ1bmN0aW9u
cy4gVGhlIHByb3RvKg0KZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCh0YWtlbiBmcm9tIG11c2wp
IHdoZXJlYXMgZ2V0aG9zdCogYW5kDQpnZXRzZXJ2ciogYXJlIHN0dWJzLg0KDQpWbGFkLUFuZHJl
aSBCYWRvaXUgKDMpOg0KICBBZGQgcHJvdG8qIGZ1bmN0aW9ucw0KICBBZGQgZ2V0aG9zdCogYW5k
IGdldHNlcnZyKiBzdHVicw0KICBJbXBsZW1lbnQgZ2V0aG9zdG5hbWUNCg0KIE1ha2VmaWxlLnVr
IHwgICAyICsNCiBuZXR3b3JrLmMgICB8ICA0MSArKysrKysrKysrKysrKysrKysrDQogcHJvdG8u
YyAgICAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbmV0d29yay5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3RvLmMNCg0KLS0gDQoy
LjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:44:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:44: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 1haVq2-0005N8-QL; Tue, 11 Jun 2019 01:44: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVq0-0005Mi-QX
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:44:36 +0000
X-Inumbo-ID: 77855894-8bea-11e9-9085-f7df64ef83b1
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.44]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 77855894-8bea-11e9-9085-f7df64ef83b1;
 Tue, 11 Jun 2019 01:44:35 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5098.eurprd01.prod.exchangelabs.com (20.177.209.215) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Tue, 11 Jun
 2019 01:44:29 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:44:29 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* functions
Thread-Index: AQHVH/c1ZXmi91HEZ0y3FfB9O+wZJQ==
Date: Tue, 11 Jun 2019 01:44:29 +0000
Message-ID: <20190611014420.30686-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0019.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::29) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: bdb69edd-05d3-4a64-c6f3-08d6ee0e5804
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5098; 
x-ms-traffictypediagnostic: PR1PR01MB5098:
x-microsoft-antispam-prvs: <PR1PR01MB509828F1FCC88BA812277A13A6ED0@PR1PR01MB5098.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39840400004)(396003)(136003)(366004)(199004)(189003)(50226002)(81166006)(6506007)(25786009)(14454004)(76176011)(305945005)(386003)(508600001)(8676002)(4326008)(8936002)(7736002)(102836004)(81156014)(86362001)(53936002)(71200400001)(74482002)(6116002)(3846002)(52116002)(14444005)(6916009)(256004)(71190400001)(5660300002)(1076003)(68736007)(2351001)(6436002)(2906002)(186003)(2501003)(486006)(6512007)(11346002)(476003)(26005)(66066001)(2616005)(54906003)(5640700003)(99286004)(85202003)(73956011)(66946007)(66446008)(786003)(316002)(6486002)(66556008)(446003)(64756008)(85182001)(66476007);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5098;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: aaUt+4KPlMtX5RvQHnLaeuTkC7oYlC5Ghiz3TYTtJbfvF2KoD/DbNHbnz0tBFYP5lHqOVxUJ54DmduWSH/VmzvosdI6UlzP+stRE79zCyUZNqgqgqo7eC0LmYVwm3ZgLhwv1H4Cmsqoq9w00gOop7hr1yff1pkL2FNUkiFC7zxnATfJoo6zm31YYKU6sV3KhjhZS8XRzhaU7UGwAjzy2Kt3gKfQR7KfLAdmsTYWoqv4lIx5WqW3OCh2+jn09ycSnoZs+ciHWSsyYNham0nxSbzLM/18aM86UvY7KNRZq0VW/qc0IicNaH34LDblfbd2uidOA5KcnC1A0cb16IK7DsBaK/2zJI9TBbLHfUxDYFycDvfPnqZ6glLrjrNMQBcc44613Qya19R8m7LL3Mav6uubbfVQrr/mtI3J7e3aUy/E=
Content-ID: <2F50D0EEA0F5274F914F035393408545@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: bdb69edd-05d3-4a64-c6f3-08d6ee0e5804
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:44:29.5293 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5098
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* 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@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGVuZHByb3RvZW50LCBzZXRwcm90b2VudCwgZ2V0cHJvdG9lbnQsIGdl
dHByb3RvYnluYW1lIGFuZA0KZ2V0cHJvdG9ieW51bWJlciBmcm9tIG11c2wgcmVsZWFzZSAxLjEu
MTQuDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFk
b2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIE1ha2VmaWxlLnVrIHwgICAxICsNCiBwcm90by5j
ICAgICB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrDQogMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBwcm90by5jDQoNCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVr
DQppbmRleCA5ZDFiMjc1Li41NDUwZWQyIDEwMDY0NA0KLS0tIGEvTWFrZWZpbGUudWsNCisrKyBi
L01ha2VmaWxlLnVrDQpAQCAtMTE1LDYgKzExNSw3IEBAIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9
ICQoTElCTkVXTElCQ19CQVNFKS90aW1lLmN8Z2x1ZQ0KIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9
ICQoTElCTkVXTElCQ19CQVNFKS9sb2NhbGUuYw0KIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9ICQo
TElCTkVXTElCQ19CQVNFKS9kZXYuYw0KIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9ICQoTElCTkVX
TElCQ19CQVNFKS9zaWduYWwuYw0KK0xJQk5FV0xJQkdMVUVfU1JDUy15ICs9ICQoTElCTkVXTElC
Q19CQVNFKS9wcm90by5jDQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAjIE5ld2xpYi9s
aWJjIGNvZGUgLS0gYXJneg0KZGlmZiAtLWdpdCBhL3Byb3RvLmMgYi9wcm90by5jDQpuZXcgZmls
ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uYTE2ZGMzYg0KLS0tIC9kZXYvbnVsbA0KKysr
IGIvcHJvdG8uYw0KQEAgLTAsMCArMSwxMTMgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogTUlUICovDQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAqIENvcHlyaWdodCDCqSAyMDA1LTIwMTQg
UmljaCBGZWxrZXIsIGV0IGFsLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQorICogYSBjb3B5IG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQor
ICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZw0KKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg
Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwNCisgKiBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8NCisgKiBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl
Y3QgdG8NCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQ0KKyAq
IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv
ZnR3YXJlLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQorICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQorICogTUVSQ0hBTlRBQklM
SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
Lg0KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZDQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwNCisgKiBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0KKyAqIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAq
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisgKi8NCisvKiBUYWtlbiBmcm9tIG11c2wgKi8NCisNCisjaW5jbHVk
ZSA8bmV0ZGIuaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorDQorc3RhdGljIGludCBpZHg7DQor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJvdG9zW10gPSB7DQorCSJcMDAwaXBcMCINCisJ
IlwwMDFpY21wXDAiDQorCSJcMDAyaWdtcFwwIg0KKwkiXDAwM2dncFwwIg0KKwkiXDAwNGlwZW5j
YXBcMCINCisJIlwwMDVzdFwwIg0KKwkiXDAwNnRjcFwwIg0KKwkiXDAxMGVncFwwIg0KKwkiXDAx
NHB1cFwwIg0KKwkiXDAyMXVkcFwwIg0KKwkiXDAyNGhtcFwwIg0KKwkiXDAyNnhucy1pZHBcMCIN
CisJIlwwMzNyZHBcMCINCisJIlwwMzVpc28tdHA0XDAiDQorCSJcMDQ0eHRwXDAiDQorCSJcMDQ1
ZGRwXDAiDQorCSJcMDQ2aWRwci1jbXRwXDAiDQorCSJcMDUxaXB2NlwwIg0KKwkiXDA1M2lwdjYt
cm91dGVcMCINCisJIlwwNTRpcHY2LWZyYWdcMCINCisJIlwwNTVpZHJwXDAiDQorCSJcMDU2cnN2
cFwwIg0KKwkiXDA1N2dyZVwwIg0KKwkiXDA2MmVzcFwwIg0KKwkiXDA2M2FoXDAiDQorCSJcMDcx
c2tpcFwwIg0KKwkiXDA3MmlwdjYtaWNtcFwwIg0KKwkiXDA3M2lwdjYtbm9ueHRcMCINCisJIlww
NzRpcHY2LW9wdHNcMCINCisJIlwxMTFyc3BmXDAiDQorCSJcMTIxdm10cFwwIg0KKwkiXDEzMW9z
cGZcMCINCisJIlwxMzZpcGlwXDAiDQorCSJcMTQyZW5jYXBcMCINCisJIlwxNDdwaW1cMCINCisJ
IlwzNzdyYXciDQorfTsNCisNCit2b2lkIGVuZHByb3RvZW50KHZvaWQpDQorew0KKwlpZHggPSAw
Ow0KK30NCisNCit2b2lkIHNldHByb3RvZW50KGludCBzdGF5b3BlbikNCit7DQorCWlkeCA9IDA7
DQorfQ0KKw0KK3N0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9lbnQodm9pZCkNCit7DQorCXN0YXRp
YyBzdHJ1Y3QgcHJvdG9lbnQgcDsNCisJc3RhdGljIGNvbnN0IGNoYXIgKmFsaWFzZXM7DQorDQor
CWlmIChpZHggPj0gc2l6ZW9mKHByb3RvcykpDQorCQlyZXR1cm4gTlVMTDsNCisJcC5wX3Byb3Rv
ID0gcHJvdG9zW2lkeF07DQorCXAucF9uYW1lID0gKGNoYXIgKikmcHJvdG9zW2lkeCsxXTsNCisJ
cC5wX2FsaWFzZXMgPSAoY2hhciAqKikmYWxpYXNlczsNCisJaWR4ICs9IHN0cmxlbihwLnBfbmFt
ZSkgKyAyOw0KKwlyZXR1cm4gJnA7DQorfQ0KKw0KK3N0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9i
eW5hbWUoY29uc3QgY2hhciAqbmFtZSkNCit7DQorCXN0cnVjdCBwcm90b2VudCAqcDsNCisNCisJ
ZW5kcHJvdG9lbnQoKTsNCisJZG8gcCA9IGdldHByb3RvZW50KCk7DQorCXdoaWxlIChwICYmIHN0
cmNtcChuYW1lLCBwLT5wX25hbWUpKTsNCisJcmV0dXJuIHA7DQorfQ0KKw0KK3N0cnVjdCBwcm90
b2VudCAqZ2V0cHJvdG9ieW51bWJlcihpbnQgbnVtKQ0KK3sNCisJc3RydWN0IHByb3RvZW50ICpw
Ow0KKw0KKwllbmRwcm90b2VudCgpOw0KKwlkbyBwID0gZ2V0cHJvdG9lbnQoKTsNCisJd2hpbGUg
KHAgJiYgcC0+cF9wcm90byAhPSBudW0pOw0KKwlyZXR1cm4gcDsNCit9DQorDQotLSANCjIuMjEu
MA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:44:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:44:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1haVq6-0005Np-SR; Tue, 11 Jun 2019 01:44: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVq5-0005Nb-1n
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:44:41 +0000
X-Inumbo-ID: 78229b18-8bea-11e9-a36a-ef25bf217bda
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.44]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 78229b18-8bea-11e9-a36a-ef25bf217bda;
 Tue, 11 Jun 2019 01:44:36 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5098.eurprd01.prod.exchangelabs.com (20.177.209.215) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Tue, 11 Jun
 2019 01:44:30 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:44:30 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 2/3] Add gethost* and getservr* stubs
Thread-Index: AQHVH/c20muPrV4F9UqBv02VbzvSdw==
Date: Tue, 11 Jun 2019 01:44:30 +0000
Message-ID: <20190611014420.30686-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0019.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::29) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b8c19fd9-22ff-4169-7778-08d6ee0e5853
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5098; 
x-ms-traffictypediagnostic: PR1PR01MB5098:
x-microsoft-antispam-prvs: <PR1PR01MB509891BC19E55C587911B4ADA6ED0@PR1PR01MB5098.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(39840400004)(396003)(136003)(366004)(199004)(189003)(50226002)(81166006)(6506007)(25786009)(14454004)(76176011)(305945005)(386003)(508600001)(8676002)(4326008)(8936002)(7736002)(102836004)(81156014)(86362001)(53936002)(71200400001)(74482002)(6116002)(3846002)(52116002)(6916009)(256004)(71190400001)(5660300002)(1076003)(68736007)(2351001)(6436002)(2906002)(186003)(2501003)(486006)(6512007)(11346002)(476003)(26005)(66066001)(2616005)(54906003)(5640700003)(99286004)(85202003)(73956011)(66946007)(66446008)(786003)(316002)(6486002)(66556008)(446003)(64756008)(85182001)(66476007);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5098;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: /kzj1PzRX+rAdkwvdprjZYL97FrWnBBSwyNSx+RPpn817MmsSOuwONtIGFfXwyFJahPnCQNYQxgbwDbpnw8Yq0P1p3LBxZhA9rOzBaylZQfVeb6/pcmzimqqDohv0W0u5bIHbO8OlvbN8gjq/1c/pRLvQlmplt4i9r7a8cvedma0p8ppd0OfwEJmMLDAiJUhpViwFkGSunygu71Y8vabJOkzgunXEwvs4tiGhBbm1R33SSdWOI/hGOOwWkplHeiJkeS53hWn8sYIrs2TeV89xykfSIqUFctNgTAJ3KEWmXHubpb4DImYk5x5ZemmV8TOxgSEZotK9bC8g58Sk633180E3MkmVitE4Adr3z/CO/YbJ+RcetyTyaSNOJvUDBTFWIG3GcO7X0TSAlRgq1/Wgt7Ms1TVXaQUa0exOLfLHQY=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: b8c19fd9-22ff-4169-7778-08d6ee0e5853
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:44:30.0970 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5098
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 2/3] Add gethost* and
 getservr* 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@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogTWFrZWZpbGUudWsgfCAgMSArDQogbmV0d29yay5jICAgfCAy
OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNl
cnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldHdvcmsuYw0KDQpkaWZmIC0tZ2l0IGEv
TWFrZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KaW5kZXggNTQ1MGVkMi4uY2NiN2YxMyAxMDA2NDQN
Ci0tLSBhL01ha2VmaWxlLnVrDQorKysgYi9NYWtlZmlsZS51aw0KQEAgLTExNiw2ICsxMTYsNyBA
QCBMSUJORVdMSUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvbG9jYWxlLmMNCiBM
SUJORVdMSUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvZGV2LmMNCiBMSUJORVdM
SUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvc2lnbmFsLmMNCiBMSUJORVdMSUJH
TFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvcHJvdG8uYw0KK0xJQk5FV0xJQkdMVUVf
U1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9uZXR3b3JrLmMNCiANCiAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KICMgTmV3bGliL2xpYmMgY29kZSAtLSBhcmd6DQpkaWZmIC0tZ2l0IGEvbmV0
d29yay5jIGIvbmV0d29yay5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4u
NWQ3ODIzYg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbmV0d29yay5jDQpAQCAtMCwwICsxLDI4IEBA
DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNpbmNsdWRlIDx1bmlzdGQuaD4NCisjaW5jbHVkZSA8
bmV0ZGIuaD4NCisNCitpbnQgZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgc2l6ZV90IGxlbikNCit7
DQorCXJldHVybiAwOw0KK30NCisNCitzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZShjb25z
dCBjaGFyICpuYW1lKQ0KK3sNCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KK3N0cnVjdCBob3N0ZW50
ICpnZXRob3N0YnlhZGRyKGNvbnN0IHZvaWQgKmFkZHIsIHNvY2tsZW5fdCBsZW4sIGludCB0eXBl
KQ0KK3sNCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KK3N0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlu
YW1lKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnByb3RvKQ0KK3sNCisJcmV0dXJuIE5V
TEw7DQorfQ0KKw0KK3N0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0KGludCBwb3J0LCBjb25z
dCBjaGFyICpwcm90bykNCit7DQorCXJldHVybiBOVUxMOw0KK30NCi0tIA0KMi4yMS4wDQoNCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 01:44:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 01:44: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 1haVq9-0005OV-Ut; Tue, 11 Jun 2019 01:44: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=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haVq7-0005OC-Ve
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 01:44:44 +0000
X-Inumbo-ID: 7a6066f8-8bea-11e9-a39c-7718395122f7
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.44]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7a6066f8-8bea-11e9-a39c-7718395122f7;
 Tue, 11 Jun 2019 01:44:40 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5098.eurprd01.prod.exchangelabs.com (20.177.209.215) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Tue, 11 Jun
 2019 01:44:31 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 01:44:31 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 3/3] Implement gethostname
Thread-Index: AQHVH/c2v5Humh4mL0m+BX2T/PBJGA==
Date: Tue, 11 Jun 2019 01:44:31 +0000
Message-ID: <20190611014420.30686-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0019.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::29) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 1fa8d6e2-4006-4957-822d-08d6ee0e58eb
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5098; 
x-ms-traffictypediagnostic: PR1PR01MB5098:
x-microsoft-antispam-prvs: <PR1PR01MB5098D5A04A05DCDBFAAB7D42A6ED0@PR1PR01MB5098.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:346;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(979002)(376002)(346002)(39840400004)(396003)(136003)(366004)(199004)(189003)(50226002)(81166006)(6506007)(25786009)(14454004)(76176011)(305945005)(386003)(508600001)(8676002)(4326008)(8936002)(7736002)(102836004)(81156014)(86362001)(53936002)(71200400001)(74482002)(6116002)(3846002)(52116002)(6916009)(256004)(4744005)(71190400001)(5660300002)(1076003)(68736007)(2351001)(6436002)(2906002)(186003)(2501003)(486006)(6512007)(11346002)(476003)(26005)(66066001)(2616005)(54906003)(5640700003)(99286004)(85202003)(73956011)(66946007)(66446008)(786003)(316002)(6486002)(66556008)(446003)(64756008)(85182001)(66476007)(969003)(989001)(999001)(1009001)(1019001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5098;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: fCDEmtgq47X30N9xKkWNdwusq4YX0vCyDvSjTdrEpaDY7JMTyT8uGp+XwExRkNqTlzqRRQ9SibutDxv0FZV6V7sh7XGgnui/QTCtR9RWfy5zDEmlcKLn+WWM2mOPSHXvTQRQwFloB9Y3FC6BAxD9JgTFx+mCBLcJIwdc6jd91bIaCL2M5pPQlG3sJig7Ql3yvMy0ncARv/lhjUHYULkeFNmUXmgoMIPfXysFiZrUpGObeRABKkem9CEfZrQqqblnrxSSwW8xT5cDk3HJ2BbqdFlrDNgbyOJLGvU50b21FFSwKaUtrLl1AFRE37wGOBu2kMG8Q/VvzIcreLrZr8o3ui4ZNDsZewnMeGaIppOUQOOtfVKngRyiQUnAuqUTYtcvuNiw711vv5bkFm+s2Pmi7DfBwKHlxD9jUMxLH+VSoPc=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 1fa8d6e2-4006-4957-822d-08d6ee0e58eb
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 01:44:31.1674 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5098
Subject: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 3/3] Implement gethostname
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogbmV0d29yay5jIHwgMTMgKysrKysrKysrKysrKw0KIDEgZmls
ZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9uZXR3b3JrLmMgYi9u
ZXR3b3JrLmMNCmluZGV4IDVkNzgyM2IuLjNhNTdiMTkgMTAwNjQ0DQotLS0gYS9uZXR3b3JrLmMN
CisrKyBiL25ldHdvcmsuYw0KQEAgLTEsOSArMSwyMiBAQA0KICNpbmNsdWRlIDxzdHJpbmcuaD4N
CiAjaW5jbHVkZSA8dW5pc3RkLmg+DQogI2luY2x1ZGUgPG5ldGRiLmg+DQorI2luY2x1ZGUgPGVy
cm5vLmg+DQorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+DQogDQogaW50IGdldGhvc3RuYW1lKGNo
YXIgKm5hbWUsIHNpemVfdCBsZW4pDQogew0KKwlzdHJ1Y3QgdXRzbmFtZSBidWY7DQorCXNpemVf
dCBub2RlX2xlbjsNCisNCisJaWYgKHVuYW1lKCZidWYpKQ0KKwkJcmV0dXJuIC0xOw0KKwlub2Rl
X2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsNCisJbWVtY3B5KG5hbWUsIGJ1Zi5ub2Rl
bmFtZSwgbGVuIDwgbm9kZV9sZW4gPyBsZW4gOiBub2RlX2xlbik7DQorCWlmIChub2RlX2xlbiA+
IGxlbikgew0KKwkJZXJybm8gPSBFTkFNRVRPT0xPTkc7DQorCQlyZXR1cm4gLTE7DQorCX0NCiAJ
cmV0dXJuIDA7DQogfQ0KIA0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 02:19:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 02:19: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 1haWNV-00082w-NP; Tue, 11 Jun 2019 02:19:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=nmXk=UK=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1haWNU-00082r-SU
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 02:19:12 +0000
X-Inumbo-ID: 4b3b289c-8bef-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.50]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4b3b289c-8bef-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 02:19:09 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Tue, 11 Jun
 2019 02:19:07 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019
 02:19:07 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: Felipe Huici <Felipe.Huici@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
Thread-Index: AQHVHyJBGKGBTu8Ke0qP9btuiifGsKaVQtuAgAB29AA=
Date: Tue, 11 Jun 2019 02:19:07 +0000
Message-ID: <6e3f787a-1873-c18e-e226-956a5468e60f@stud.acs.upb.ro>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610001837.25284-3-vlad_andrei.badoiu@stud.acs.upb.ro>
 <22592FD5-BCD1-49CF-8F43-C167E3B1B5C8@neclab.eu>
In-Reply-To: <22592FD5-BCD1-49CF-8F43-C167E3B1B5C8@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR09CA0071.eurprd09.prod.outlook.com
 (2603:10a6:802:29::15) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 8ea0ab8d-07fd-4d2d-7ebb-08d6ee132e59
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB48276FB9F70A82058CCECD02A6ED0@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 006546F32A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39840400004)(136003)(366004)(376002)(346002)(396003)(189003)(199004)(25786009)(2501003)(31686004)(102836004)(4326008)(52116002)(6506007)(6246003)(66066001)(486006)(53546011)(5660300002)(229853002)(76176011)(386003)(71190400001)(85182001)(31696002)(71200400001)(99286004)(53936002)(74482002)(446003)(2906002)(26005)(305945005)(14454004)(476003)(256004)(786003)(81166006)(8676002)(11346002)(81156014)(7736002)(73956011)(316002)(86362001)(8936002)(2616005)(6116002)(6486002)(3846002)(6436002)(186003)(68736007)(478600001)(66476007)(66556008)(64756008)(66946007)(110136005)(85202003)(6512007)(66446008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ue7FQm9seRP/zCO4ZBSAPeyG00Ez00d2Tq2oMFe2RucBTBdAHLPAjr1parCHn4qua6cyYvPwq+6xrxJq9XS06gC+xU2dpF9VYrA89KjrFkJ4rAij4WlIijrehnAAiWOwE0F0SO0YwCRC2XKH0cjcYql+k0zf7UPJ4/1yOL4YleVIANVpigevNqxlTAJcsTByroalrLjlMb59gtxycUTmf8/6bNcoqgUkj8Wq27oCdXFuWm5sz9UbLLItGM6g+actV1VN7imR7CciU1PWOw135TsnHwK1WL4HeNEfrpU6QgC2edEljEkJqXicROmDNbCop+vJxQ2sbjceRSRgZx2d4RVLa7W2wb3WypEcr8pdtyA4DiWjyiUWUGT1NRhDLoxiMLp1ALK2k3KFCI0QjJtVgncOr/zobCxL8h96vcG9oyk=
Content-ID: <B8893997721D2E4DBB5CCD3A366847F5@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 8ea0ab8d-07fd-4d2d-7ebb-08d6ee132e59
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 02:19:07.1198 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGV5IEZlbGlwLA0KDQpJJ20gbm90IHN1cmUgaWYgQ09QWUlORy5tZCBzaG91bGQgYmUgdGhlcmUg
aWYgd2UgZG9uJ3QgaGF2ZSBhbnkga2luZCBvZiANCnNvdXJjZXMgb3RoZXIgdGhhbiB0aGUgY29u
ZmlndXJhdGlvbiBmaWxlLiBJcyBpdCBhbGwgcmlnaHQgaWYgSSBhZGQgaXQgDQp0byB0aGUgdjIg
b2YgdGhpcyBwYXRjaD8NCg0KT24gNi8xMC8xOSAxMDoxMyBQTSwgRmVsaXBlIEh1aWNpIHdyb3Rl
Og0KPiBIaSBWbGFkLCBhbnkgcmVhc29uIHRoZXJlJ3Mgbm8gQ09QWUlORy5tZD8NCj4NCj4gLS0g
RmVsaXBlDQo+DQo+IO+7v09uIDEwLjA2LjE5LCAwMjoyMCwgIlZsYWQtQW5kcmVpIELEgkRPSVUg
KDc4NjkyKSIgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOg0KPg0K
PiAgICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFk
b2l1QHN0dWQuYWNzLnVwYi5ybz4NCj4gICAgICAtLS0NCj4gICAgICAgQ09ESU5HX1NUWUxFLm1k
IHwgIDQgKysrKw0KPiAgICAgICBDT05UUklCVVRJTkcubWQgfCAgNCArKysrDQo+ICAgICAgIE1B
SU5UQUlORVJTLm1kICB8IDExICsrKysrKysrKysrDQo+ICAgICAgIFJFQURNRS5tZCAgICAgICB8
ICA1ICsrKysrDQo+ICAgICAgIDQgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQ0KPiAg
ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kDQo+ICAgICAgIGNyZWF0ZSBt
b2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQNCj4gICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1B
SU5UQUlORVJTLm1kDQo+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQNCj4gICAg
ICANCj4gICAgICBkaWZmIC0tZ2l0IGEvQ09ESU5HX1NUWUxFLm1kIGIvQ09ESU5HX1NUWUxFLm1k
DQo+ICAgICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi41NzMw
MDQxDQo+ICAgICAgLS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL0NPRElOR19TVFlMRS5tZA0K
PiAgICAgIEBAIC0wLDAgKzEsNCBAQA0KPiAgICAgICtDb2RpbmcgU3R5bGUNCj4gICAgICArPT09
PT09PT09PT09DQo+ICAgICAgKw0KPiAgICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT0RJTkdf
U1RZTEUubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCj4gICAgICBk
aWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kDQo+ICAgICAgbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi41ZjU1ZWNhDQo+ICAgICAg
LS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL0NPTlRSSUJVVElORy5tZA0KPiAgICAgIEBAIC0w
LDAgKzEsNCBAQA0KPiAgICAgICtDb250cmlidXRpbmcgdG8gVW5pa3JhZnQNCj4gICAgICArPT09
PT09PT09PT09PT09PT09PT09PT0NCj4gICAgICArDQo+ICAgICAgK1BsZWFzZSByZWZlciB0byB0
aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5
Lg0KPiAgICAgIGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kDQo+
ICAgICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gICAgICBpbmRleCAwMDAwMDAwLi4xMzg0YTlm
DQo+ICAgICAgLS0tIC9kZXYvbnVsbA0KPiAgICAgICsrKyBiL01BSU5UQUlORVJTLm1kDQo+ICAg
ICAgQEAgLTAsMCArMSwxMSBAQA0KPiAgICAgICtNYWludGFpbmVycyBMaXN0DQo+ICAgICAgKz09
PT09PT09PT09PT09PT0NCj4gICAgICArDQo+ICAgICAgK0ZvciBub3RlcyBvbiBob3cgdG8gcmVh
ZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0K
PiAgICAgICt0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KPiAgICAgICsNCj4gICAgICAr
CUxJQkZQMTYtVU5JS1JBRlQNCj4gICAgICArCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNp
QG5lY2xhYi5ldT4NCj4gICAgICArCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCj4gICAgICArCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54
ZW4ub3JnDQo+ICAgICAgKwlGOiAqDQo+ICAgICAgZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JF
QURNRS5tZA0KPiAgICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ICAgICAgaW5kZXggMDAwMDAw
MC4uYmEwMDhlNA0KPiAgICAgIC0tLSAvZGV2L251bGwNCj4gICAgICArKysgYi9SRUFETUUubWQN
Cj4gICAgICBAQCAtMCwwICsxLDUgQEANCj4gICAgICArbGliZnAxNiBmb3IgVW5pa3JhZnQNCj4g
ICAgICArPT09PT09PT09PT09PT09PT09PQ0KPiAgICAgICsNCj4gICAgICArUGxlYXNlIHJlZmVy
IHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBg
ZG9jL2ANCj4gICAgICArc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRv
cnkuDQo+ICAgICAgLS0NCj4gICAgICAyLjIxLjANCj4gICAgICANCj4gICAgICANCj4NCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:09:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:09: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 1haauM-0005N4-1s; Tue, 11 Jun 2019 07: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=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haauK-0005My-Qv
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:09:24 +0000
X-Inumbo-ID: d3dd3b3e-8c17-11e9-bc0a-0b732d34bc43
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d3dd3b3e-8c17-11e9-bc0a-0b732d34bc43;
 Tue, 11 Jun 2019 07:09:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7FF3010531B;
 Tue, 11 Jun 2019 09:09:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id EVOF4T_DcNMK; Tue, 11 Jun 2019 09:09:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 531F0105319;
 Tue, 11 Jun 2019 09:09:17 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:09:17
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
Thread-Index: AQHVHyJDlZbsXEnj1kGFF4jxwfQooKaVQtoAgABVcoCAAHKYAA==
Date: Tue, 11 Jun 2019 07:09:16 +0000
Message-ID: <EEB31E07-428A-4150-A479-DEF8FEC460F1@neclab.eu>
References: <20190610001837.25284-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190610001837.25284-3-vlad_andrei.badoiu@stud.acs.upb.ro>
 <22592FD5-BCD1-49CF-8F43-C167E3B1B5C8@neclab.eu>
 <6e3f787a-1873-c18e-e226-956a5468e60f@stud.acs.upb.ro>
In-Reply-To: <6e3f787a-1873-c18e-e226-956a5468e60f@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <78E19C59CBB29E49BF325970A9AA31CB@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFP16 PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwgeWVzLCBwbGVhc2UgYWRkIGl0IHRvIHYyIGZvciBjb21wbGV0ZW5lc3MuDQoNClRo
YW5rcywNCg0KLS0gRmVsaXBlDQoNCu+7v09uIDExLjA2LjE5LCAwOTowNywgIlZsYWQtQW5kcmVp
IELEgkRPSVUgKDc4NjkyKSIgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdy
b3RlOg0KDQogICAgSGV5IEZlbGlwLA0KICAgIA0KICAgIEknbSBub3Qgc3VyZSBpZiBDT1BZSU5H
Lm1kIHNob3VsZCBiZSB0aGVyZSBpZiB3ZSBkb24ndCBoYXZlIGFueSBraW5kIG9mIA0KICAgIHNv
dXJjZXMgb3RoZXIgdGhhbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBJcyBpdCBhbGwgcmlnaHQg
aWYgSSBhZGQgaXQgDQogICAgdG8gdGhlIHYyIG9mIHRoaXMgcGF0Y2g/DQogICAgDQogICAgT24g
Ni8xMC8xOSAxMDoxMyBQTSwgRmVsaXBlIEh1aWNpIHdyb3RlOg0KICAgID4gSGkgVmxhZCwgYW55
IHJlYXNvbiB0aGVyZSdzIG5vIENPUFlJTkcubWQ/DQogICAgPg0KICAgID4gLS0gRmVsaXBlDQog
ICAgPg0KICAgID4gT24gMTAuMDYuMTksIDAyOjIwLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2
OTIpIiA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQogICAgPg0K
ICAgID4gICAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgPiAgICAgIC0tLQ0KICAgID4gICAgICAgQ09E
SU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KICAgID4gICAgICAgQ09OVFJJQlVUSU5HLm1kIHwgIDQg
KysrKw0KICAgID4gICAgICAgTUFJTlRBSU5FUlMubWQgIHwgMTEgKysrKysrKysrKysNCiAgICA+
ICAgICAgIFJFQURNRS5tZCAgICAgICB8ICA1ICsrKysrDQogICAgPiAgICAgICA0IGZpbGVzIGNo
YW5nZWQsIDI0IGluc2VydGlvbnMoKykNCiAgICA+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBD
T0RJTkdfU1RZTEUubWQNCiAgICA+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJ
TkcubWQNCiAgICA+ICAgICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZA0KICAg
ID4gICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5tZA0KICAgID4gICAgICANCiAgICA+
ICAgICAgZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5tZA0KICAg
ID4gICAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgID4gICAgICBpbmRleCAwMDAwMDAwLi41
NzMwMDQxDQogICAgPiAgICAgIC0tLSAvZGV2L251bGwNCiAgICA+ICAgICAgKysrIGIvQ09ESU5H
X1NUWUxFLm1kDQogICAgPiAgICAgIEBAIC0wLDAgKzEsNCBAQA0KICAgID4gICAgICArQ29kaW5n
IFN0eWxlDQogICAgPiAgICAgICs9PT09PT09PT09PT0NCiAgICA+ICAgICAgKw0KICAgID4gICAg
ICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWlu
IFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgPiAgICAgIGRpZmYgLS1naXQgYS9DT05UUklCVVRJ
TkcubWQgYi9DT05UUklCVVRJTkcubWQNCiAgICA+ICAgICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQN
CiAgICA+ICAgICAgaW5kZXggMDAwMDAwMC4uNWY1NWVjYQ0KICAgID4gICAgICAtLS0gL2Rldi9u
dWxsDQogICAgPiAgICAgICsrKyBiL0NPTlRSSUJVVElORy5tZA0KICAgID4gICAgICBAQCAtMCww
ICsxLDQgQEANCiAgICA+ICAgICAgK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdA0KICAgID4gICAg
ICArPT09PT09PT09PT09PT09PT09PT09PT0NCiAgICA+ICAgICAgKw0KICAgID4gICAgICArUGxl
YXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWty
YWZ0IHJlcG9zaXRvcnkuDQogICAgPiAgICAgIGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUy5tZCBi
L01BSU5UQUlORVJTLm1kDQogICAgPiAgICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgPiAg
ICAgIGluZGV4IDAwMDAwMDAuLjEzODRhOWYNCiAgICA+ICAgICAgLS0tIC9kZXYvbnVsbA0KICAg
ID4gICAgICArKysgYi9NQUlOVEFJTkVSUy5tZA0KICAgID4gICAgICBAQCAtMCwwICsxLDExIEBA
DQogICAgPiAgICAgICtNYWludGFpbmVycyBMaXN0DQogICAgPiAgICAgICs9PT09PT09PT09PT09
PT09DQogICAgPiAgICAgICsNCiAgICA+ICAgICAgK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0
aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KICAg
ID4gICAgICArdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICA+ICAgICAgKw0KICAg
ID4gICAgICArCUxJQkZQMTYtVU5JS1JBRlQNCiAgICA+ICAgICAgKwlNOglGZWxpcGUgSHVpY2kg
PGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQogICAgPiAgICAgICsJTToJVmxhZC1BbmRyZWkgQmFk
b2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgID4gICAgICArCUw6
CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnDQogICAgPiAgICAgICsJRjogKg0KICAgID4gICAg
ICBkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kDQogICAgPiAgICAgIG5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQogICAgPiAgICAgIGluZGV4IDAwMDAwMDAuLmJhMDA4ZTQNCiAgICA+ICAg
ICAgLS0tIC9kZXYvbnVsbA0KICAgID4gICAgICArKysgYi9SRUFETUUubWQNCiAgICA+ICAgICAg
QEAgLTAsMCArMSw1IEBADQogICAgPiAgICAgICtsaWJmcDE2IGZvciBVbmlrcmFmdA0KICAgID4g
ICAgICArPT09PT09PT09PT09PT09PT09PQ0KICAgID4gICAgICArDQogICAgPiAgICAgICtQbGVh
c2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3VtZW50YXRpb24g
aW4gdGhlIGBkb2MvYA0KICAgID4gICAgICArc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWty
YWZ0IHJlcG9zaXRvcnkuDQogICAgPiAgICAgIC0tDQogICAgPiAgICAgIDIuMjEuMA0KICAgID4g
ICAgICANCiAgICA+ICAgICAgDQogICAgPg0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:12:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:12: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 1haaxQ-00063h-BM; Tue, 11 Jun 2019 07:12:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haaxP-00063a-0P
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:12:35 +0000
X-Inumbo-ID: 46f1aaaf-8c18-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 46f1aaaf-8c18-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 07:12:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 87E7AF2017;
 Tue, 11 Jun 2019 09:12:30 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ipUuugUtMGZT; Tue, 11 Jun 2019 09:12:30 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5FFBFF200D;
 Tue, 11 Jun 2019 09:12:24 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:12:24
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 1/3] Add .gitignore
Thread-Index: AQHVICUEoqp9NBhdI0WBOfxKlHYtYA==
Date: Tue, 11 Jun 2019 07:12:23 +0000
Message-ID: <EA11E3A9-9507-492B-B21F-DB453EB1F9ED@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <FF8C724131C08C40B25C77E1EE3BFD5C@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0K77u/
T24gMTEuMDYuMTksIDA4OjQzLCAiTWluaW9zLWRldmVsIG9uIGJlaGFsZiBvZiBWbGFkLUFuZHJl
aSBCxIJET0lVICg3ODY5MikiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0
Lm9yZyBvbiBiZWhhbGYgb2YgdmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3Jv
dGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgLS0tDQogICAgIC5naXRpZ25vcmUgfCAyNyAr
KysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2Vy
dGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRpZ25vcmUNCiAgICANCiAgICBk
aWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUNCiAgICBuZXcgZmlsZSBtb2RlIDEw
MDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjc1ZDJmZDMNCiAgICAtLS0gL2Rldi9udWxsDQogICAg
KysrIGIvLmdpdGlnbm9yZQ0KICAgIEBAIC0wLDAgKzEsMjcgQEANCiAgICArKi5kZXBlbmQNCiAg
ICArKi5vDQogICAgKyouYQ0KICAgICsqLmQNCiAgICArKi5zbw0KICAgICsqLm9yaWcNCiAgICAr
Ki5yZWoNCiAgICArKi5iYWsNCiAgICArKi5zd3ANCiAgICArKn4NCiAgICArLCoNCiAgICArXCMq
XCMNCiAgICArLlwjKg0KICAgICtcI18qXCMNCiAgICArLlwjXyoNCiAgICArIS5naXRpZ25vcmUN
CiAgICArLioNCiAgICArDQogICAgKyMgZ251IGdsb2JhbCBmaWxlcw0KICAgICtHUEFUSA0KICAg
ICtHUlRBR1MNCiAgICArR1NZTVMNCiAgICArR1RBR1MNCiAgICArDQogICAgKyMgY3Njb3BlIGZp
bGVzDQogICAgK2NzY29wZS4qDQogICAgK25jc2NvcGUuKg0KICAgIC0tIA0KICAgIDIuMjEuMA0K
ICAgIA0KICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
DQogICAgTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0KICAgIE1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWwNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:12:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:12: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 1haaxl-00065A-Dr; Tue, 11 Jun 2019 07:12:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1haaxj-000655-Qk
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:12:55 +0000
X-Inumbo-ID: 548ccf7d-8c18-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 548ccf7d-8c18-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 07:12:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7C41910531C;
 Tue, 11 Jun 2019 09:12:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Sl9bUi9Xv4rn; Tue, 11 Jun 2019 09:12:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 4EDF810531B;
 Tue, 11 Jun 2019 09:12:53 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:12:53
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 2/3] Add documentation
Thread-Index: AQHVICUVpv03MYHdHkeMq1nRrfcDqg==
Date: Tue, 11 Jun 2019 07:12:52 +0000
Message-ID: <ED75D91A-E6F0-4849-B496-FD4895D28A8F@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <52B01CE2FF445D4D9F193CEFD45111DE@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 2/3] Add
 documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMTEuMDYuMTksIDA4OjQzLCAiTWluaW9zLWRldmVsIG9uIGJlaGFsZiBvZiBWbGFkLUFuZHJl
aSBCxIJET0lVICg3ODY5MikiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0
Lm9yZyBvbiBiZWhhbGYgb2YgdmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3Jv
dGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgLS0tDQogICAgIENPRElOR19TVFlMRS5tZCB8
ICA0ICsrKysNCiAgICAgQ09OVFJJQlVUSU5HLm1kIHwgIDQgKysrKw0KICAgICBNQUlOVEFJTkVS
Uy5tZCAgfCAxMSArKysrKysrKysrKw0KICAgICBSRUFETUUubWQgICAgICAgfCAgNSArKysrKw0K
ICAgICA0IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUg
MTAwNjQ0IENPRElOR19TVFlMRS5tZA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVU
SU5HLm1kDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZA0KICAgICBjcmVh
dGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQogICAgDQogICAgZGlmZiAtLWdpdCBhL0NPRElOR19T
VFlMRS5tZCBiL0NPRElOR19TVFlMRS5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAg
aW5kZXggMDAwMDAwMC4uNTczMDA0MQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9DT0RJ
TkdfU1RZTEUubWQNCiAgICBAQCAtMCwwICsxLDQgQEANCiAgICArQ29kaW5nIFN0eWxlDQogICAg
Kz09PT09PT09PT09PQ0KICAgICsNCiAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NU
WUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgZGlmZiAt
LWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0KICAgIG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uNWY1NWVjYQ0KICAgIC0tLSAvZGV2L251bGwN
CiAgICArKysgYi9DT05UUklCVVRJTkcubWQNCiAgICBAQCAtMCwwICsxLDQgQEANCiAgICArQ29u
dHJpYnV0aW5nIHRvIFVuaWtyYWZ0DQogICAgKz09PT09PT09PT09PT09PT09PT09PT09DQogICAg
Kw0KICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhl
IG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMu
bWQgYi9NQUlOVEFJTkVSUy5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXgg
MDAwMDAwMC4uNTI1YmZiNA0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9NQUlOVEFJTkVS
Uy5tZA0KICAgIEBAIC0wLDAgKzEsMTEgQEANCiAgICArTWFpbnRhaW5lcnMgTGlzdA0KICAgICs9
PT09PT09PT09PT09PT09DQogICAgKw0KICAgICtGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhp
cyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4NCiAgICAr
dGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICArDQogICAgKwlMSUJQVEhSRUFEUE9P
TC1VTklLUkFGVA0KICAgICsJTToJRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
Pg0KICAgICsJTToJVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5h
Y3MudXBiLnJvPg0KICAgICsJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcNCiAgICArCUY6
ICoNCiAgICBkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kDQogICAgbmV3IGZpbGUg
bW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi43MDhjZGY0DQogICAgLS0tIC9kZXYvbnVs
bA0KICAgICsrKyBiL1JFQURNRS5tZA0KICAgIEBAIC0wLDAgKzEsNSBAQA0KICAgICtsaWJwdGhy
ZWFkcG9vbCBmb3IgVW5pa3JhZnQNCiAgICArPT09PT09PT09PT09PT09PT09PQ0KICAgICsNCiAg
ICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVu
dGF0aW9uIGluIHRoZSBgZG9jL2ANCiAgICArc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWty
YWZ0IHJlcG9zaXRvcnkuDQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCiAgICBNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0DQogICAgTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQogICAg
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:16:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:16: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 1hab13-0006AB-6Y; Tue, 11 Jun 2019 07:16:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hab11-00069q-MA
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:16:19 +0000
X-Inumbo-ID: cd5b8803-8c18-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cd5b8803-8c18-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 07:16:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 021EBF2017;
 Tue, 11 Jun 2019 09:16:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MbL9DZN_OIo0; Tue, 11 Jun 2019 09:16:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id BA2DAF200D;
 Tue, 11 Jun 2019 09:16:09 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:16:09
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 3/3] Initial port
 of pthreadpool to Unikraft
Thread-Index: AQHVICWKHKO8bYZ8ikSA0Qz+3OyMlg==
Date: Tue, 11 Jun 2019 07:16:08 +0000
Message-ID: <2C3C97A6-561A-4ADE-B41A-3303AC6D05B6@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.2.56]
Content-ID: <A123826E9F0F8A489CE545157985D9E8@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH 3/3] Initial port of
 pthreadpool to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KUGxlYXNlIHNlZSB0d28gc21hbGwgY29tbWVudHMgaW5saW5lLg0KDQotLSBG
ZWxpcGUNCg0K77u/T24gMTEuMDYuMTksIDA4OjQzLCAiTWluaW9zLWRldmVsIG9uIGJlaGFsZiBv
ZiBWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0
cy54ZW5wcm9qZWN0Lm9yZyBvbiBiZWhhbGYgb2YgdmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNz
LnVwYi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIGlzIG91ciBpbml0aWFsIHBvcnQgb2YgZnAxNiB0
byBVbmlrcmFmdCBhcyBhbiBleHRlcm5hbCBsaWJyYXJ5LiBMaWJmeGRpdg0KICAgIGFuZCBwdGhy
ZWFkcyBpcyByZXF1aXJlZC4gV2hlbiBhZGRpbmcgdGhlIGxpYnJhcnkgdG8gdGhlIGRlcGVuZGVu
Y3kgbGlzdCBpdA0KICAgIHNob3VsZCBzdGF5IGFmdGVyIGxpYmZ4ZGl2DQogICAgKGUuZy4gLi4u
OiQoVUtfTElCUykvbGliZnhkaXY6JChVS19MSUJTKS9saWJwdGhyZWFkcG9vbDouLi4pLg0KICAg
IA0KPiBBcyB3aXRoIGEgcHJldmlvdXMgc2VyaWVzLCB5b3UgbWlnaHQgd2FudCB0byBnaXZlIGFu
IGFjdHVhbCB3b3JraW5nIGV4YW1wbGUgKGUuZy4sIGluY2x1ZGUgcHRocmVhZC1lbWJlZGRlZCks
IG90aGVyd2lzZSB1c2VycyBtaWdodCBjb3B5IGFuZCBwYXN0ZSB0aGUgYWJvdmUgYW5kIGV4cGVj
dCBpdCB0byB3b3JrLg0KDQogICAgU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2
bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgIC0tLQ0KICAgICBDb25maWcu
dWsgICB8ICA2ICsrKysrDQogICAgIE1ha2VmaWxlLnVrIHwgNzYgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMiBmaWxlcyBjaGFuZ2Vk
LCA4MiBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsNCiAg
ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrDQogICAgDQogICAgZGlmZiAtLWdpdCBh
L0NvbmZpZy51ayBiL0NvbmZpZy51aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5k
ZXggMDAwMDAwMC4uYmUwNzUzNw0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9Db25maWcu
dWsNCiAgICBAQCAtMCwwICsxLDYgQEANCiAgICArbWVudWNvbmZpZyBMSUJQVEhSRUFEUE9PTA0K
ICAgICsgICAgYm9vbCAicHRocmVhZC1iYXNlZCB0aHJlYWQgcG9vbCBmb3IgQy9DKysiDQoNCj4g
UGxlYXNlIGluY2x1ZGUgdGhlIGxpYnJhcnkgbmFtZSBmaXJzdCwgdGhlbiBhIGRhc2gsIHRoZW4g
dGhlIHNob3J0IGV4cGxhbmF0aW9uIG9mIHdoYXQgaXQgaXMuDQoNCiAgICArICAgIHNlbGVjdCBM
SUJGWERJVg0KICAgICsgICAgc2VsZWN0IExJQlBUSFJFQURfRU1CRURERUQNCiAgICArICAgIGRl
ZmF1bHQgbg0KICAgICsNCiAgICBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51
aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uOGZhNDI2Mw0K
ICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9NYWtlZmlsZS51aw0KICAgIEBAIC0wLDAgKzEs
NzYgQEANCiAgICArIyAgbGlicHRocmVhZHBvb2wgY29uZmlnIGZpbGUNCiAgICArIw0KICAgICsj
ICBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+DQogICAgKyMNCiAgICArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5
IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICArIw0K
ICAgICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQNCiAgICArIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgKyMgIGFyZSBtZXQ6DQog
ICAgKyMNCiAgICArIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgICsjICAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodA0KICAgICsjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogICAg
KyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMNCiAgICArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICArIyAgICAgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgICArIw0K
ICAgICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCiAgICArIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAg
ICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgICsjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgKyMg
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1INCiAgICArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICArIyAgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQogICAgKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQogICAgKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKyMg
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFDQogICAgKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
ICAgICsjDQogICAgKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAg
ICsjIExpYnJhcnkgcmVnaXN0cmF0aW9uDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog
ICAgKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicHRocmVhZHBvb2wsJChDT05GSUdfTElCUFRI
UkVBRFBPT0wpKSkNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMg
U291cmNlcw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJQVEhSRUFEUE9P
TF9WRVJTSU9OPW1hc3Rlcg0KICAgICtMSUJQVEhSRUFEUE9PTF9VUkw9aHR0cHM6Ly9naXRodWIu
Y29tL01hcmF0eXN6Y3phL3B0aHJlYWRwb29sL2FyY2hpdmUvbWFzdGVyLnppcA0KICAgICtMSUJQ
VEhSRUFEUE9PTF9QQVRDSERJUj0kKExJQlBUSFJFQURQT09MX0JBU0UpL3BhdGNoZXMNCiAgICAr
JChldmFsICQoY2FsbCBmZXRjaCxsaWJwdGhyZWFkcG9vbCwkKExJQlBUSFJFQURQT09MX1VSTCkp
KQ0KICAgICsNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBIZWxwZXJzDQog
ICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgK0xJQlBUSFJFQURQT09MX1NVQkRJUj1w
dGhyZWFkcG9vbC1tYXN0ZXINCiAgICArTElCUFRIUkVBRFBPT0xfU1JDPSQoTElCUFRIUkVBRFBP
T0xfT1JJR0lOKS8kKExJQlBUSFJFQURQT09MX1NVQkRJUikNCiAgICArDQogICAgKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjDQogICAgKyMgTGlicmFyeSBpbmNsdWRlcw0KICAgICsjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KICAgICtDSU5DTFVERVMtJChDT05GSUdfTElCUFRIUkVBRFBPT0wpICs9
IC1JJChMSUJQVEhSRUFEUE9PTF9TUkMpL2luY2x1ZGUNCiAgICArQ0lOQ0xVREVTLSQoQ09ORklH
X0xJQlBUSFJFQURQT09MKSArPSAtSSQoTElCUFRIUkVBRFBPT0xfQkFTRSkvaW5jbHVkZQ0KICAg
ICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJQVEhSRUFEUE9PTCkgKz0gLUkkKExJQlBUSFJFQURQ
T09MX1NSQykvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJQVEhSRUFEUE9P
TCkgKz0gLUkkKExJQlBUSFJFQURQT09MX0JBU0UpL2luY2x1ZGUNCiAgICArDQogICAgKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgR2xvYmFsIGZsYWdzDQogICAgKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjDQogICAgKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBi
dWlsZCBwcm9jZXNzIGxvb2sgbmVhdGVyDQogICAgK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51
c2VkLXBhcmFtZXRlciAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwJXA0KICAgICst
V25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1Xbm8tY2hhci1z
dWJzY3JpcHRzCQlcDQogICAgKy1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2luZy1maWVs
ZC1pbml0aWFsaXplcnMgLVduby11bmluaXRpYWxpemVkCQlcDQogICAgKy1Xbm8tYXJyYXktYm91
bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNl
ZC12YWx1ZQlcDQogICAgKy1Xbm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8t
aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24JCVwNCiAgICArLVduby1taXNzaW5nLWJyYWNl
cyAtV25vLWVuZGlmLWxhYmVscyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQlcDQogICAg
Ky1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0cyAtV25v
LXNpZ24tY29tcGFyZQ0KICAgICtMSUJQVEhSRUFEUE9PTF9DRkxBR1MteSAgICArPSAgJChTVVBQ
UkVTU19GTEFHUykNCiAgICArTElCUFRIUkVBRFBPT0xfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQ
UkVTU19GTEFHUykNCiAgICArDQogICAgK0xJQlBUSFJFQURQT09MX1NSQ1MteSArPSAkKExJQlBU
SFJFQURQT09MX1NSQykvc3JjL3RocmVhZHBvb2wtcHRocmVhZHMuYw0KICAgICsNCiAgICAtLSAN
CiAgICAyLjIxLjANCiAgICANCiAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXw0KICAgIE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QNCiAgICBNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcNCiAgICBodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsDQoNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:49:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:49: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 1habWz-0000AU-6m; Tue, 11 Jun 2019 07:49:21 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1habWy-0000AP-5m
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:49:20 +0000
X-Inumbo-ID: 6a165eda-8c1d-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6a165eda-8c1d-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 07:49:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 0F528104276;
 Tue, 11 Jun 2019 09:49:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bE_WgkSKz50E; Tue, 11 Jun 2019 09:49:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E13071000F2;
 Tue, 11 Jun 2019 09:49:16 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:49:16
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 1/3] Add SOCK_SEQPACKET in socket.h
Thread-Index: AQHVH/I+k4gltN1vpkuX0pK2V7y1paaWFHCA
Date: Tue, 11 Jun 2019 07:49:15 +0000
Message-ID: <2DB1C649-7050-424B-B679-951C74C164C5@neclab.eu>
References: <20190611010845.29325-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611010845.29325-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611010845.29325-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.99.109]
Content-ID: <577D5DCE93CFFA41836BD8AA14043402@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/3] Add SOCK_SEQPACKET in
 socket.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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KTG9va3MgZ29vZCwgdGhhbmtzLg0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQt
Ynk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0K77u/T24gMTEuMDYu
MTksIDA5OjA3LCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9hbmRyZWkuYmFk
b2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIG1p
c3NpbmcgU09DS19TRVFQQUNLRVQgdG8gaW5jbHVkZS9zb2NrZXQuaC4NCiAgICANCiAgICBTaWdu
ZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+DQogICAgLS0tDQogICAgIGluY2x1ZGUvc3lzL3NvY2tldC5oIHwgNCArKysrDQog
ICAgIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykNCiAgICANCiAgICBkaWZmIC0tZ2l0
IGEvaW5jbHVkZS9zeXMvc29ja2V0LmggYi9pbmNsdWRlL3N5cy9zb2NrZXQuaA0KICAgIGluZGV4
IDUzZDkzMDEuLjQyYmFkNmMgMTAwNjQ0DQogICAgLS0tIGEvaW5jbHVkZS9zeXMvc29ja2V0LmgN
CiAgICArKysgYi9pbmNsdWRlL3N5cy9zb2NrZXQuaA0KICAgIEBAIC00OCw2ICs0OCwxMCBAQA0K
ICAgICAjZGVmaW5lIFNPQ0tfTk9OQkxPQ0sgICAweDIwMDAwMDAwDQogICAgICNlbmRpZg0KICAg
ICANCiAgICArI2lmbmRlZiBTT0NLX1NFUVBBQ0tFVA0KICAgICsjZGVmaW5lIFNPQ0tfU0VRUEFD
S0VUIDUNCiAgICArI2VuZGlmDQogICAgKw0KICAgICAjZGVmaW5lIGlvY3RsKHMsIGNtZCwgYXJn
cCkgbHdpcF9pb2N0bChzLCBjbWQsIGFyZ3ApDQogICAgIA0KICAgICBpbnQgc29ja2V0KGludCBk
b21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOw0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAg
IA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:49:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:49: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 1habXO-0000CA-AJ; Tue, 11 Jun 2019 07:49:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1habXN-0000C5-Fm
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:49:45 +0000
X-Inumbo-ID: 77a3776a-8c1d-11e9-a559-9b4846fa7185
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 77a3776a-8c1d-11e9-a559-9b4846fa7185;
 Tue, 11 Jun 2019 07:49:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D1CE2F200D;
 Tue, 11 Jun 2019 09:49:39 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id COAqgfRo0SHd; Tue, 11 Jun 2019 09:49:39 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9E0CEF200B;
 Tue, 11 Jun 2019 09:49:33 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:49:33
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/LWIP PATCH 2/3] Add netinet/tcp.h
Thread-Index: AQHVICo1T0ir+OIi506ejMni/O2bPg==
Date: Tue, 11 Jun 2019 07:49:33 +0000
Message-ID: <B0062EF3-D7DE-4C37-8038-8F4CC2A8B081@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.99.109]
Content-ID: <582F503937A56B47943CB01E18664FDE@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 2/3] Add netinet/tcp.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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KTG9va3MgZ29vZCwgdGhhbmtzLg0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQt
Ynk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0KT24gMTEuMDYu
MTksIDA5OjA3LCAiTWluaW9zLWRldmVsIG9uIGJlaGFsZiBvZiBWbGFkLUFuZHJlaSBCxIJET0lV
ICg3ODY5MikiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBi
ZWhhbGYgb2YgdmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAg
ICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBz
dHVkLmFjcy51cGIucm8+DQogICAgLS0tDQogICAgIGluY2x1ZGUvbmV0aW5ldC90Y3AuaCB8IDk4
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMSBmaWxl
IGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUvbmV0aW5ldC90Y3AuaA0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGluZXQv
dGNwLmggYi9pbmNsdWRlL25ldGluZXQvdGNwLmgNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
ICAgIGluZGV4IDAwMDAwMDAuLjZiNzdmZjYNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIv
aW5jbHVkZS9uZXRpbmV0L3RjcC5oDQogICAgQEAgLTAsMCArMSw5OCBAQA0KICAgICsvKg0KICAg
ICsgKiBDb3B5cmlnaHQgKGMpIDE5ODIsIDE5ODYsIDE5OTMNCiAgICArICoJVGhlIFJlZ2VudHMg
b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQog
ICAgKyAqDQogICAgKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICAgICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAgICArICogYXJl
IG1ldDoNCiAgICArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgICsgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodA0KICAgICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogICAg
KyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1
c2Ugb2YgdGhpcyBzb2Z0d2FyZQ0KICAgICsgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2lu
ZyBhY2tub3dsZWRnZW1lbnQ6DQogICAgKyAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2Fy
ZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YNCiAgICArICoJQ2FsaWZvcm5pYSwgQmVy
a2VsZXkgYW5kIGl0cyBjb250cmlidXRvcnMuDQogICAgKyAqIDQuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzDQogICAg
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZQ0KICAgICsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4NCiAgICArICoNCiAgICArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQNCiAgICAr
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFDQogICAgKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQogICAgKyAqIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQ0KICAgICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KICAgICsgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUw0KICAgICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCiAgICArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCiAg
ICArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQ0KICAgICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQogICAgKyAqIFNV
Q0ggREFNQUdFLg0KICAgICsgKg0KICAgICsgKglAKCMpdGNwLmgJOC4xIChCZXJrZWxleSkgNi8x
MC85Mw0KICAgICsgKi8NCiAgICArDQogICAgK3R5cGVkZWYJdV9sb25nCXRjcF9zZXE7DQogICAg
Ky8qDQogICAgKyAqIFRDUCBoZWFkZXIuDQogICAgKyAqIFBlciBSRkMgNzkzLCBTZXB0ZW1iZXIs
IDE5ODEuDQogICAgKyAqLw0KICAgICtzdHJ1Y3QgdGNwaGRyIHsNCiAgICArCXVfc2hvcnQJdGhf
c3BvcnQ7CQkvKiBzb3VyY2UgcG9ydCAqLw0KICAgICsJdV9zaG9ydAl0aF9kcG9ydDsJCS8qIGRl
c3RpbmF0aW9uIHBvcnQgKi8NCiAgICArCXRjcF9zZXEJdGhfc2VxOwkJCS8qIHNlcXVlbmNlIG51
bWJlciAqLw0KICAgICsJdGNwX3NlcQl0aF9hY2s7CQkJLyogYWNrbm93bGVkZ2VtZW50IG51bWJl
ciAqLw0KICAgICsjaWYgQllURV9PUkRFUiA9PSBMSVRUTEVfRU5ESUFOIA0KICAgICsJdV9jaGFy
CXRoX3gyOjQsCQkvKiAodW51c2VkKSAqLw0KICAgICsJCXRoX29mZjo0OwkJLyogZGF0YSBvZmZz
ZXQgKi8NCiAgICArI2VuZGlmDQogICAgKyNpZiBCWVRFX09SREVSID09IEJJR19FTkRJQU4gDQog
ICAgKwl1X2NoYXIJdGhfb2ZmOjQsCQkvKiBkYXRhIG9mZnNldCAqLw0KICAgICsJCXRoX3gyOjQ7
CQkvKiAodW51c2VkKSAqLw0KICAgICsjZW5kaWYNCiAgICArCXVfY2hhcgl0aF9mbGFnczsNCiAg
ICArI2RlZmluZQlUSF9GSU4JMHgwMQ0KICAgICsjZGVmaW5lCVRIX1NZTgkweDAyDQogICAgKyNk
ZWZpbmUJVEhfUlNUCTB4MDQNCiAgICArI2RlZmluZQlUSF9QVVNICTB4MDgNCiAgICArI2RlZmlu
ZQlUSF9BQ0sJMHgxMA0KICAgICsjZGVmaW5lCVRIX1VSRwkweDIwDQogICAgKwl1X3Nob3J0CXRo
X3dpbjsJCQkvKiB3aW5kb3cgKi8NCiAgICArCXVfc2hvcnQJdGhfc3VtOwkJCS8qIGNoZWNrc3Vt
ICovDQogICAgKwl1X3Nob3J0CXRoX3VycDsJCQkvKiB1cmdlbnQgcG9pbnRlciAqLw0KICAgICt9
Ow0KICAgICsNCiAgICArI2RlZmluZQlUQ1BPUFRfRU9MCQkwDQogICAgKyNkZWZpbmUJVENQT1BU
X05PUAkJMQ0KICAgICsjZGVmaW5lCVRDUE9QVF9NQVhTRUcJCTINCiAgICArI2RlZmluZSAgICBU
Q1BPTEVOX01BWFNFRwkJNA0KICAgICsjZGVmaW5lIFRDUE9QVF9XSU5ET1cJCTMNCiAgICArI2Rl
ZmluZSAgICBUQ1BPTEVOX1dJTkRPVwkJMw0KICAgICsjZGVmaW5lIFRDUE9QVF9TQUNLX1BFUk1J
VFRFRAk0CQkvKiBFeHBlcmltZW50YWwgKi8NCiAgICArI2RlZmluZSAgICBUQ1BPTEVOX1NBQ0tf
UEVSTUlUVEVECTINCiAgICArI2RlZmluZSBUQ1BPUFRfU0FDSwkJNQkJLyogRXhwZXJpbWVudGFs
ICovDQogICAgKyNkZWZpbmUgVENQT1BUX1RJTUVTVEFNUAk4DQogICAgKyNkZWZpbmUgICAgVENQ
T0xFTl9USU1FU1RBTVAJCTEwDQogICAgKyNkZWZpbmUgICAgVENQT0xFTl9UU1RBTVBfQVBQQQkJ
KFRDUE9MRU5fVElNRVNUQU1QKzIpIC8qIGFwcGVuZGl4IEEgKi8NCiAgICArDQogICAgKyNkZWZp
bmUgVENQT1BUX1RTVEFNUF9IRFIJXA0KICAgICsgICAgKFRDUE9QVF9OT1A8PDI0fFRDUE9QVF9O
T1A8PDE2fFRDUE9QVF9USU1FU1RBTVA8PDh8VENQT0xFTl9USU1FU1RBTVApDQogICAgKw0KICAg
ICsvKg0KICAgICsgKiBEZWZhdWx0IG1heGltdW0gc2VnbWVudCBzaXplIGZvciBUQ1AuDQogICAg
KyAqIFdpdGggYW4gSVAgTVNTIG9mIDU3NiwgdGhpcyBpcyA1MzYsDQogICAgKyAqIGJ1dCA1MTIg
aXMgcHJvYmFibHkgbW9yZSBjb252ZW5pZW50Lg0KICAgICsgKiBUaGlzIHNob3VsZCBiZSBkZWZp
bmVkIGFzIE1JTig1MTIsIElQX01TUyAtIHNpemVvZiAoc3RydWN0IHRjcGlwaGRyKSkuDQogICAg
KyAqLw0KICAgICsjZGVmaW5lCVRDUF9NU1MJNTEyDQogICAgKw0KICAgICsjZGVmaW5lCVRDUF9N
QVhXSU4JNjU1MzUJLyogbGFyZ2VzdCB2YWx1ZSBmb3IgKHVuc2NhbGVkKSB3aW5kb3cgKi8NCiAg
ICArDQogICAgKyNkZWZpbmUgVENQX01BWF9XSU5TSElGVAkxNAkvKiBtYXhpbXVtIHdpbmRvdyBz
aGlmdCAqLw0KICAgICsNCiAgICArLyoNCiAgICArICogVXNlci1zZXR0YWJsZSBvcHRpb25zICh1
c2VkIHdpdGggc2V0c29ja29wdCkuDQogICAgKyAqLw0KICAgICsjZGVmaW5lCVRDUF9OT0RFTEFZ
CTB4MDEJLyogZG9uJ3QgZGVsYXkgc2VuZCB0byBjb2FsZXNjZSBwYWNrZXRzICovDQogICAgKyNk
ZWZpbmUJVENQX01BWFNFRwkweDAyCS8qIHNldCBtYXhpbXVtIHNlZ21lbnQgc2l6ZSAqLw0KICAg
IC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0KICAgIE1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwNCg0KX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:50:01 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:50: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 1habXd-0000D5-Cj; Tue, 11 Jun 2019 07:50:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1habXb-0000Cy-Nh
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:49:59 +0000
X-Inumbo-ID: 80ae2b20-8c1d-11e9-9e03-03ab748b24dc
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 80ae2b20-8c1d-11e9-9e03-03ab748b24dc;
 Tue, 11 Jun 2019 07:49:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 02285F200D;
 Tue, 11 Jun 2019 09:49:55 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id QYk0n8MngC1D; Tue, 11 Jun 2019 09:49:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D0149F200B;
 Tue, 11 Jun 2019 09:49:48 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:49:48
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/LWIP PATCH 3/3] Export additional
 symbols
Thread-Index: AQHVICo+7xou/WV7V0K2lmla8IWIYw==
Date: Tue, 11 Jun 2019 07:49:48 +0000
Message-ID: <928DFDB8-991D-4325-B748-F622751FAF98@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.99.109]
Content-ID: <A04AF6BBD64EAC43ADC1ED6CAFE75DEF@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 3/3] Export additional
 symbols
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KTG9va3MgZ29vZCwgdGhhbmtzLg0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQt
Ynk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0KT24gMTEuMDYu
MTksIDA5OjA3LCAiTWluaW9zLWRldmVsIG9uIGJlaGFsZiBvZiBWbGFkLUFuZHJlaSBCxIJET0lV
ICg3ODY5MikiIDxtaW5pb3MtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0Lm9yZyBvbiBi
ZWhhbGYgb2YgdmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAg
ICBUaGlzIHBhdGNoIGFkZHMgaXA0YWRkcl9hdG9uLCBpcDRhZGRyX250b2EsIGlwYWRkcl9hZGRy
LCBpcDRhZGRyX250b2ENCiAgICBhbmQgaF9lcnJubyB0byBleHBvcnRzeW1zLnVrLg0KICAgIA0K
ICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1
QHN0dWQuYWNzLnVwYi5ybz4NCiAgICAtLS0NCiAgICAgZXhwb3J0c3ltcy51ayB8IDUgKysrKysN
CiAgICAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQ0KICAgIA0KICAgIGRpZmYgLS1n
aXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51aw0KICAgIGluZGV4IDE3MjBlMDAuLjUz
NGU0OWEgMTAwNjQ0DQogICAgLS0tIGEvZXhwb3J0c3ltcy51aw0KICAgICsrKyBiL2V4cG9ydHN5
bXMudWsNCiAgICBAQCAtMTksMyArMTksOCBAQCBzZW5kdG8NCiAgICAgc2V0c29ja29wdA0KICAg
ICBzaHV0ZG93bg0KICAgICBzb2NrZXQNCiAgICAraXA0YWRkcl9hdG9uDQogICAgK2lwNGFkZHJf
bnRvYQ0KICAgICtpcGFkZHJfYWRkcg0KICAgICtpcDRhZGRyX250b2ENCiAgICAraF9lcnJubw0K
ICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fDQogICAgTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0KICAg
IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KICAgIGh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwNCg0KX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:55:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:55:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1habcX-0000rE-Qf; Tue, 11 Jun 2019 07:55:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1habcW-0000r9-4x
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:55:04 +0000
X-Inumbo-ID: 371ffbfc-8c1e-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 371ffbfc-8c1e-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 07:55:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id F1BC3F202A;
 Tue, 11 Jun 2019 09:55:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id oFX6d-Iim6YF; Tue, 11 Jun 2019 09:55:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C0DBCF200B;
 Tue, 11 Jun 2019 09:54:54 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:54:54
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* functions
Thread-Index: AQHVH/c1ZXmi91HEZ0y3FfB9O+wZJaaWFfoA
Date: Tue, 11 Jun 2019 07:54:54 +0000
Message-ID: <BABA4237-927F-49B1-A45F-4CD02CF20060@neclab.eu>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611014420.30686-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.99.109]
Content-ID: <12757B60FA769242A75E84E634967663@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* 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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGksDQoNCkxvb2tzIGdvb2QsIHRoYW5rcy4NCg0K4oCUIEZlbGlwZQ0KDQpSZXZpZXdlZC1ieTog
RmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0K77u/DQpPbiAxMS4wNi4xOSwg
MDg6MzIsICJWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2bGFkX2FuZHJlaS5iYWRvaXVA
c3R1ZC5hY3MudXBiLnJvPiB3cm90ZToNCg0KICAgIFRoaXMgcGF0Y2ggYWRkcyBlbmRwcm90b2Vu
dCwgc2V0cHJvdG9lbnQsIGdldHByb3RvZW50LCBnZXRwcm90b2J5bmFtZSBhbmQNCiAgICBnZXRw
cm90b2J5bnVtYmVyIGZyb20gbXVzbCByZWxlYXNlIDEuMS4xNC4NCiAgICANCiAgICBTaWduZWQt
b2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+DQogICAgLS0tDQogICAgIE1ha2VmaWxlLnVrIHwgICAxICsNCiAgICAgcHJvdG8uYyAg
ICAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKw0KICAgICAyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBwcm90by5jDQogICAgDQogICAgZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVr
IGIvTWFrZWZpbGUudWsNCiAgICBpbmRleCA5ZDFiMjc1Li41NDUwZWQyIDEwMDY0NA0KICAgIC0t
LSBhL01ha2VmaWxlLnVrDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAtMTE1LDYgKzEx
NSw3IEBAIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS90aW1lLmN8
Z2x1ZQ0KICAgICBMSUJORVdMSUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvbG9j
YWxlLmMNCiAgICAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL2Rl
di5jDQogICAgIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9ICQoTElCTkVXTElCQ19CQVNFKS9zaWdu
YWwuYw0KICAgICtMSUJORVdMSUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvcHJv
dG8uYw0KICAgICANCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgIyBOZXdsaWIv
bGliYyBjb2RlIC0tIGFyZ3oNCiAgICBkaWZmIC0tZ2l0IGEvcHJvdG8uYyBiL3Byb3RvLmMNCiAg
ICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLmExNmRjM2INCiAgICAt
LS0gL2Rldi9udWxsDQogICAgKysrIGIvcHJvdG8uYw0KICAgIEBAIC0wLDAgKzEsMTEzIEBADQog
ICAgKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8NCiAgICArLyogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KICAgICsgKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4N
CiAgICArICoNCiAgICArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQogICAgKyAqIGEgY29weSBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KICAgICsgKiAi
U29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nDQogICAgKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg
Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwNCiAgICArICogZGlzdHJpYnV0ZSwgc3VibGlj
ZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvDQogICAgKyAq
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0bw0KICAgICsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICAgKyAq
DQogICAgKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g
bm90aWNlIHNoYWxsIGJlDQogICAgKyAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KICAgICsgKg0KICAgICsgKiBUSEUgU09G
VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwN
CiAgICArICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GDQogICAgKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4NCiAgICArICogSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP
UiBBTlkNCiAgICArICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwNCiAgICArICogVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUNCiAgICArICogU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICAg
KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAgICArICovDQogICAgKy8qIFRha2VuIGZyb20gbXVzbCAqLw0K
ICAgICsNCiAgICArI2luY2x1ZGUgPG5ldGRiLmg+DQogICAgKyNpbmNsdWRlIDxzdHJpbmcuaD4N
CiAgICArDQogICAgK3N0YXRpYyBpbnQgaWR4Ow0KICAgICtzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBwcm90b3NbXSA9IHsNCiAgICArCSJcMDAwaXBcMCINCiAgICArCSJcMDAxaWNtcFwwIg0K
ICAgICsJIlwwMDJpZ21wXDAiDQogICAgKwkiXDAwM2dncFwwIg0KICAgICsJIlwwMDRpcGVuY2Fw
XDAiDQogICAgKwkiXDAwNXN0XDAiDQogICAgKwkiXDAwNnRjcFwwIg0KICAgICsJIlwwMTBlZ3Bc
MCINCiAgICArCSJcMDE0cHVwXDAiDQogICAgKwkiXDAyMXVkcFwwIg0KICAgICsJIlwwMjRobXBc
MCINCiAgICArCSJcMDI2eG5zLWlkcFwwIg0KICAgICsJIlwwMzNyZHBcMCINCiAgICArCSJcMDM1
aXNvLXRwNFwwIg0KICAgICsJIlwwNDR4dHBcMCINCiAgICArCSJcMDQ1ZGRwXDAiDQogICAgKwki
XDA0NmlkcHItY210cFwwIg0KICAgICsJIlwwNTFpcHY2XDAiDQogICAgKwkiXDA1M2lwdjYtcm91
dGVcMCINCiAgICArCSJcMDU0aXB2Ni1mcmFnXDAiDQogICAgKwkiXDA1NWlkcnBcMCINCiAgICAr
CSJcMDU2cnN2cFwwIg0KICAgICsJIlwwNTdncmVcMCINCiAgICArCSJcMDYyZXNwXDAiDQogICAg
KwkiXDA2M2FoXDAiDQogICAgKwkiXDA3MXNraXBcMCINCiAgICArCSJcMDcyaXB2Ni1pY21wXDAi
DQogICAgKwkiXDA3M2lwdjYtbm9ueHRcMCINCiAgICArCSJcMDc0aXB2Ni1vcHRzXDAiDQogICAg
KwkiXDExMXJzcGZcMCINCiAgICArCSJcMTIxdm10cFwwIg0KICAgICsJIlwxMzFvc3BmXDAiDQog
ICAgKwkiXDEzNmlwaXBcMCINCiAgICArCSJcMTQyZW5jYXBcMCINCiAgICArCSJcMTQ3cGltXDAi
DQogICAgKwkiXDM3N3JhdyINCiAgICArfTsNCiAgICArDQogICAgK3ZvaWQgZW5kcHJvdG9lbnQo
dm9pZCkNCiAgICArew0KICAgICsJaWR4ID0gMDsNCiAgICArfQ0KICAgICsNCiAgICArdm9pZCBz
ZXRwcm90b2VudChpbnQgc3RheW9wZW4pDQogICAgK3sNCiAgICArCWlkeCA9IDA7DQogICAgK30N
CiAgICArDQogICAgK3N0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9lbnQodm9pZCkNCiAgICArew0K
ICAgICsJc3RhdGljIHN0cnVjdCBwcm90b2VudCBwOw0KICAgICsJc3RhdGljIGNvbnN0IGNoYXIg
KmFsaWFzZXM7DQogICAgKw0KICAgICsJaWYgKGlkeCA+PSBzaXplb2YocHJvdG9zKSkNCiAgICAr
CQlyZXR1cm4gTlVMTDsNCiAgICArCXAucF9wcm90byA9IHByb3Rvc1tpZHhdOw0KICAgICsJcC5w
X25hbWUgPSAoY2hhciAqKSZwcm90b3NbaWR4KzFdOw0KICAgICsJcC5wX2FsaWFzZXMgPSAoY2hh
ciAqKikmYWxpYXNlczsNCiAgICArCWlkeCArPSBzdHJsZW4ocC5wX25hbWUpICsgMjsNCiAgICAr
CXJldHVybiAmcDsNCiAgICArfQ0KICAgICsNCiAgICArc3RydWN0IHByb3RvZW50ICpnZXRwcm90
b2J5bmFtZShjb25zdCBjaGFyICpuYW1lKQ0KICAgICt7DQogICAgKwlzdHJ1Y3QgcHJvdG9lbnQg
KnA7DQogICAgKw0KICAgICsJZW5kcHJvdG9lbnQoKTsNCiAgICArCWRvIHAgPSBnZXRwcm90b2Vu
dCgpOw0KICAgICsJd2hpbGUgKHAgJiYgc3RyY21wKG5hbWUsIHAtPnBfbmFtZSkpOw0KICAgICsJ
cmV0dXJuIHA7DQogICAgK30NCiAgICArDQogICAgK3N0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9i
eW51bWJlcihpbnQgbnVtKQ0KICAgICt7DQogICAgKwlzdHJ1Y3QgcHJvdG9lbnQgKnA7DQogICAg
Kw0KICAgICsJZW5kcHJvdG9lbnQoKTsNCiAgICArCWRvIHAgPSBnZXRwcm90b2VudCgpOw0KICAg
ICsJd2hpbGUgKHAgJiYgcC0+cF9wcm90byAhPSBudW0pOw0KICAgICsJcmV0dXJuIHA7DQogICAg
K30NCiAgICArDQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 07:59:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 07:59: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 1habh7-0000ww-6E; Tue, 11 Jun 2019 07:59:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=8y1X=UK=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1habh6-0000wr-81
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 07:59:48 +0000
X-Inumbo-ID: e0fee6a4-8c1e-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e0fee6a4-8c1e-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 07:59:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1DDAB104B85;
 Tue, 11 Jun 2019 09:59:46 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5iXXW_TPLH11; Tue, 11 Jun 2019 09:59:46 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id EFF50104AB4;
 Tue, 11 Jun 2019 09:59:45 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Tue, 11 Jun 2019 09:59:45
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 3/3] Implement gethostname
Thread-Index: AQHVH/c2v5Humh4mL0m+BX2T/PBJGKaWF1QA
Date: Tue, 11 Jun 2019 07:59:45 +0000
Message-ID: <72833A51-6A2E-4A6A-801A-10ADC00FA757@neclab.eu>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611014420.30686-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.9.190412
x-originating-ip: [10.1.99.109]
Content-ID: <4262DD504AAB854ABC6812810B537A0B@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 3/3] Implement gethostname
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGksDQoNCkxvb2tzIGdvb2QsIHRoYW5rcy4NCg0K4oCUIEZlbGlwZQ0KDQpSZXZpZXdlZC1ieTog
RmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KDQrvu79PbiAxMS4wNi4xOSwg
MDg6MzIsICJWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2bGFkX2FuZHJlaS5iYWRvaXVA
c3R1ZC5hY3MudXBiLnJvPiB3cm90ZToNCg0KICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVp
IEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCiAgICAtLS0NCiAg
ICAgbmV0d29yay5jIHwgMTMgKysrKysrKysrKysrKw0KICAgICAxIGZpbGUgY2hhbmdlZCwgMTMg
aW5zZXJ0aW9ucygrKQ0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9uZXR3b3JrLmMgYi9uZXR3b3Jr
LmMNCiAgICBpbmRleCA1ZDc4MjNiLi4zYTU3YjE5IDEwMDY0NA0KICAgIC0tLSBhL25ldHdvcmsu
Yw0KICAgICsrKyBiL25ldHdvcmsuYw0KICAgIEBAIC0xLDkgKzEsMjIgQEANCiAgICAgI2luY2x1
ZGUgPHN0cmluZy5oPg0KICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+DQogICAgICNpbmNsdWRlIDxu
ZXRkYi5oPg0KICAgICsjaW5jbHVkZSA8ZXJybm8uaD4NCiAgICArI2luY2x1ZGUgPHN5cy91dHNu
YW1lLmg+DQogICAgIA0KICAgICBpbnQgZ2V0aG9zdG5hbWUoY2hhciAqbmFtZSwgc2l6ZV90IGxl
bikNCiAgICAgew0KICAgICsJc3RydWN0IHV0c25hbWUgYnVmOw0KICAgICsJc2l6ZV90IG5vZGVf
bGVuOw0KICAgICsNCiAgICArCWlmICh1bmFtZSgmYnVmKSkNCiAgICArCQlyZXR1cm4gLTE7DQog
ICAgKwlub2RlX2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsNCiAgICArCW1lbWNweShu
YW1lLCBidWYubm9kZW5hbWUsIGxlbiA8IG5vZGVfbGVuID8gbGVuIDogbm9kZV9sZW4pOw0KICAg
ICsJaWYgKG5vZGVfbGVuID4gbGVuKSB7DQogICAgKwkJZXJybm8gPSBFTkFNRVRPT0xPTkc7DQog
ICAgKwkJcmV0dXJuIC0xOw0KICAgICsJfQ0KICAgICAJcmV0dXJuIDA7DQogICAgIH0NCiAgICAg
DQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 12:50:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 12:50: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 1hagEY-0008TM-Na; Tue, 11 Jun 2019 12:50: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=r6wb=UK=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hagEX-0008TD-AB
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 12:50:37 +0000
X-Inumbo-ID: 80949e1a-8c47-11e9-90f5-97b44b6d36d0
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 80949e1a-8c47-11e9-90f5-97b44b6d36d0;
 Tue, 11 Jun 2019 12:50:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id D160F1050AF;
 Tue, 11 Jun 2019 14:50:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dpBccfyHI_M3; Tue, 11 Jun 2019 14:50:31 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 09A00105285
 for <minios-devel@lists.xen.org>; Tue, 11 Jun 2019 14:50:03 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Jun 2019 14:50:02
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
 <20190605155511.26450-6-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <7a043efd-8b75-6c82-6ba5-8120e2cd525c@neclab.eu>
Date: Tue, 11 Jun 2019 14:50:02 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605155511.26450-6-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/9] lib/syscall_shim:
 generate provided_syscalls.h
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKSSB3
aWxsIGZpeCB0aGUgY29tbWFuZCBuYW1lIHdoaWxlIHVwc3RyZWFtaW5nLgoKT24gMDUuMDYuMTkg
MTc6NTUsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVGhlIHByb3ZpZGVkX3N5c2NhbGxzLmggd2ls
bCBiZSBjb250YWluaW5nIHByb3RvdHlwZXMgZm9yIGV2ZXJ5Cj4gc3lzY2FsbCBwcmVzZW50IGlu
IHRoZSBzeXN0ZW0uCj4gCj4gSXQgd2lsbCBiZSB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGxp
YnJhcmllcyB0byB0ZWxsIHN5c2NhbGxfc2hpbSBpZgo+IGNlcnRhaW4gc3lzY2FsbCBpcyBwcm92
aWRlZC4gSWYgc3lzY2FsbCBpcyBhdmFpbGFibGUsIGl0IG11c3QgYmUKPiBsaXN0ZWQgaW4gdGhl
IG1ha2VmaWxlJ3MgdmFyaWFibGUgJ1VLX1BST1ZJREVEX1NZU0NBTExTJyBpbiB0aGUgZm9ybWF0
Cj4gPHN5c2NhbGxfbmFtZT4tPG51bWJlcl9vZl9hcmd1bWVudHM+LiBGb3IgZXhhbXBsZToKPiAK
PiBVS19QUk9WSURFRF9TWVNDQUxMUy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSB3cml0ZXYtMwo+
IAo+IFNpZ25lZC1vZmYtYnk6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1
Pgo+IC0tLQo+ICAgbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayAgICAgIHwgMTYgKysrKysr
KysrKysrKystLQo+ICAgbGliL3N5c2NhbGxfc2hpbS9nZW5fcHJvdmlkZWQuYXdrIHwgIDUgKysr
KysKPiAgIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK
PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9zaGltL2dlbl9wcm92aWRlZC5hd2sK
PiAKPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51ayBiL2xpYi9zeXNj
YWxsX3NoaW0vTWFrZWZpbGUudWsKPiBpbmRleCA1MjBlOTIwNi4uMGY3NzU0ZGYgMTAwNjQ0Cj4g
LS0tIGEvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi9zeXNjYWxsX3No
aW0vTWFrZWZpbGUudWsKPiBAQCAtNCwxMCArNCwxMiBAQCBMSUJTWVNDQUxMX1NISU1fSU5DTFVE
RVNfUEFUSCA6PSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvaW5jbHVkZS91ay9iaXRzCj4gICAK
PiAgIExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMgOj0gc3lzY2FsbF9tYXAuaCBzeXNjYWxsX3N0
dWJzLmggc3lzY2FsbF9ucnMuaAo+ICAgTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQyA6PSAkKGFk
ZHByZWZpeCAkKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS8sICQoTElCU1lTQ0FMTF9T
SElNX1BIT05ZX1NSQykpCj4gK0xJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMgKz0gJChMSUJTWVND
QUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4KPiAgIExJQlNZU0NBTExfU0hJ
TV9QSE9OWV9TUkNfTkVXIDo9ICQoYWRkc3VmZml4IC5uZXcsICQoTElCU1lTQ0FMTF9TSElNX1BI
T05ZX1NSQykpCj4gICAKPiAtVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0pICs9
ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykKPiArTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMg
Oj0gJChMSUJTWVNDQUxMX1NISU1fSU5DTFVERVNfUEFUSCkvcHJvdmlkZWRfc3lzY2FsbHMuaAo+
ICAgCj4gK1VLX1BSRVBBUkUtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSArPSAkKExJQlNZU0NB
TExfU0hJTV9QSE9OWV9TUkMpICQoTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMpCj4gICAKPiAgIExJ
QlNZU0NBTExfU0hJTV9URU1QTCA6PSAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9hcmNoLyQoQ09O
RklHX1VLX0FSQ0gpL3N5c2NhbGwuaC5pbgo+ICAgCj4gQEAgLTMwLDkgKzMyLDE5IEBAICQoTElC
U1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxfbWFwLmgubmV3Ogo+ICAgCQkkKEFX
SykgLWYgICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl9zeXNjYWxsX21hcC5hd2sgXAo+ICAg
CQkkKExJQlNZU0NBTExfU0hJTV9URU1QTCkgPiAkQCkKPiAgIAo+ICskKExJQlNZU0NBTExfU0hJ
TV9JTkNMVURFU19QQVRIKS9wcm92aWRlZF9zeXNjYWxscy5oOiAkKExJQlNZU0NBTExfU0hJTV9C
VUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbgo+ICsJJChjYWxsIGJ1aWxkX2NtZCxHRU4sU1lT
Q0FMTF9TSElNLCQobm90ZGlyICRAKSwgXAo+ICsJCSQoQVdLKSAtRiAnLScgLWYgICQoTElCU1lT
Q0FMTF9TSElNX0JBU0UpL2dlbl9wcm92aWRlZC5hd2sgXAo+ICsJCSReID4gJEApCj4gKwo+ICsk
KExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbi5uZXc6Cj4gKwkk
KGNhbGwgYnVpbGRfY21kLEdFTixTWVNDQUxMX1NISU0sJChub3RkaXIgJEApLCBcCj4gKwkJZWNo
byAkKFVLX1BST1ZJREVEX1NZU0NBTExTLXkpIHwgdHIgJyAnICdcbicgPiAkQCkKPiArCj4gICAk
KExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS9zeXNjYWxsX3N0dWJzLmgubmV3Ogo+ICAg
CSQoY2FsbCBidWlsZF9jbWQsR0VOLFNZU0NBTExfU0hJTSwkKG5vdGRpciAkQCksIFwKPiAgIAkJ
JChBV0spIC1mICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl9zdHVicy5hd2sgXAo+ICAgCQkk
KExJQlNZU0NBTExfU0hJTV9URU1QTCkgPiAkQCkKPiAgIAo+IC1MSUJTWVNDQUxMX1NISU1fQ0xF
QU4gPSAkKExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkMpICQoTElCU1lTQ0FMTF9TSElNX1BIT05Z
X1NSQ19ORVcpCj4gK0xJQlNZU0NBTExfU0hJTV9DTEVBTiA9ICQoTElCU1lTQ0FMTF9TSElNX1BI
T05ZX1NSQykgJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDX05FVykgJChMSUJTWVNDQUxMX1NI
SU1fR0VOX1NSQykKPiArCj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX3Byb3Zp
ZGVkLmF3ayBiL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX3Byb3ZpZGVkLmF3awo+IG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjA4MTA4OTNiCj4gLS0tIC9kZXYvbnVsbAo+ICsr
KyBiL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX3Byb3ZpZGVkLmF3awo+IEBAIC0wLDAgKzEsNSBAQAo+
ICtCRUdJTiB7cHJpbnQgIi8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBF
RElUICovIn0KPiArL1thLXpBLVowLTldKy1bMC05XSsvewo+ICsJcHJpbnRmICJcbiNkZWZpbmUg
SEFWRV91a19zeXNjYWxsXyVzIHQiLCAkMTsKPiArCXByaW50ZiAiXG5VS19TWVNDQUxMX1BST1RP
KCVzLCAlcyk7XG4iLCAkMiwgJDE7Cj4gK30KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 12:50:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 12:50: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 1hagEa-0008Ts-PH; Tue, 11 Jun 2019 12:50:40 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=r6wb=UK=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hagEZ-0008TX-KJ
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 12:50:39 +0000
X-Inumbo-ID: 82632dc4-8c47-11e9-bef8-4fb5b18faa10
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 82632dc4-8c47-11e9-bef8-4fb5b18faa10;
 Tue, 11 Jun 2019 12:50:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C0BE3105285;
 Tue, 11 Jun 2019 14:50:36 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ocNbJ72EXm82; Tue, 11 Jun 2019 14:50:36 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 973F31050AF
 for <minios-devel@lists.xen.org>; Tue, 11 Jun 2019 14:50:36 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Jun 2019 14:50:36
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
 <20190605155511.26450-9-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <14462115-a4c1-5c68-4296-79ab25da992c@neclab.eu>
Date: Tue, 11 Jun 2019 14:50:36 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605155511.26450-9-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 8/9] lib/syscall_shim:
 introduce uk_syscallp
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKU2Ft
ZSBoZXJlIHdpdGggdGhlIGNvbW1hbmQgbmFtZS4KCk9uIDA1LjA2LjE5IDE3OjU1LCBZdXJpIFZv
bGNoa292IHdyb3RlOgo+IFRoZSBtYWNybyBsYXllciBpcyBlZmZpY2llbnQsIGJ1dCB0aGUgZXhh
Y3Qgc3lzY2FsbCBtdXN0IGJlIGtub3duIGF0Cj4gdGhlIGNvbXBpbGF0aW9uIHN0YWdlLiBJZiBh
IHN5c2NhbGwgbnVtYmVyIGlzIGtlcHQgaW4gYSB2YXJpYWJsZSBtYWNybwo+IGxheWVyIHdpbGwg
bm90IGJlIGFibGUgdG8gcmVzb2x2ZSBpdCB0byB0aGUgc3lzY2FsbCBmdW5jdGlvbi4KPiAKPiBG
b3IgdGhpcyBjYXNlIGFub3RoZXIgZmlsZSBpcyBnZW5lcmF0ZWQgLSBzeXNjYWxsX2VudHJ5LmMu
IFdoZXJlCj4gc3lzY2FsbHMgYXJlIHJlc29sdmVkIGF0IHJ1bi10aW1lIGludG8gYSBkZXN0aW5h
dGlvbiBmdW5jdGlvbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52
b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVr
ICAgICAgICAgIHwgMTAgKysrKysrLQo+ICAgbGliL3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2Vu
ZCAgICAgICB8IDE1ICsrKysrKysrKysKPiAgIGxpYi9zeXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3
ayAgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi9zeXNjYWxs
X3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmggfCAgMiArKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA2
NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2VuZAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9z
eXNjYWxsX3NoaW0vZ2VuX2VudHJ5LmF3awo+IAo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9z
aGltL01ha2VmaWxlLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IGluZGV4IDUw
ZWUyOGNhLi40ZGNiM2Q2OSAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxl
LnVrCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IEBAIC03LDcgKzcsOCBA
QCBMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDIDo9ICQoYWRkcHJlZml4ICQoTElCU1lTQ0FMTF9T
SElNX0lOQ0xVREVTX1BBVEgpLywgJChMSQo+ICAgTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQyAr
PSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbgo+ICAgTElC
U1lTQ0FMTF9TSElNX1BIT05ZX1NSQ19ORVcgOj0gJChhZGRzdWZmaXggLm5ldywgJChMSUJTWVND
QUxMX1NISU1fUEhPTllfU1JDKSkKPiAgIAo+IC1MSUJTWVNDQUxMX1NISU1fR0VOX1NSQyA6PSAk
KExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19QQVRIKS9wcm92aWRlZF9zeXNjYWxscy5oCj4gK0xJ
QlNZU0NBTExfU0hJTV9HRU5fU1JDIDo9ICQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgp
L3Byb3ZpZGVkX3N5c2NhbGxzLmggXAo+ICsJCSQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9zeXNj
YWxsX2VudHJ5LmMKPiAgIAo+ICAgVUtfUFJFUEFSRS0kKENPTkZJR19MSUJTWVNDQUxMX1NISU0p
ICs9ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykgJChMSUJTWVNDQUxMX1NISU1fR0VOX1NS
QykKPiAgIAo+IEBAIC0zNyw2ICszOCwxMSBAQCAkKExJQlNZU0NBTExfU0hJTV9JTkNMVURFU19Q
QVRIKS9wcm92aWRlZF9zeXNjYWxscy5oOiAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcAo+ICAg
CQkkKEFXSykgLUYgJy0nIC1mICAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fcHJvdmlkZWQu
YXdrIFwKPiAgIAkJJF4gPiAkQCkKPiAgIAo+ICskKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvc3lz
Y2FsbF9lbnRyeS5jOiAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMu
aC5pbiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fZW50cnkuYXdrCj4gKwkkKGNhbGwgYnVp
bGRfY21kLEdFTixTWVNDQUxMX1NISU0sJChub3RkaXIgJEApLCBcCj4gKwkJJChBV0spIC1GICct
JyAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fZW50cnkuYXdrICQ8ID4gJEAgJiYgXAo+
ICsJCWNhdCAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9lbnRyeS5jLmluX2VuZCA+PiAkQCkKPiAr
Cj4gICAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbi5uZXc6
Cj4gICAJJChjYWxsIGJ1aWxkX2NtZCxHRU4sU1lTQ0FMTF9TSElNLCQobm90ZGlyICRAKSwgXAo+
ICAgCQllY2hvICQoVUtfUFJPVklERURfU1lTQ0FMTFMteSkgfCB0ciAnICcgJ1xuJyA+ICRAKQo+
IEBAIC01MSw0ICs1Nyw2IEBAIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkg
Kz0gLUkkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvaW5jbHVkZQo+ICAgQ0lOQ0xVREVTLXkgICAr
PSAtSSQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2luY2x1ZGUKPiAgIENYWElOQ0xVREVTLXkgKz0g
LUkkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9pbmNsdWRlCj4gICAKPiArTElCU1lTQ0FMTF9TSElN
X1NSQ1MteSArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvc3lzY2FsbF9lbnRyeS5jCj4gKwo+
ICAgTElCU1lTQ0FMTF9TSElNX0NMRUFOID0gJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDKSAk
KExJQlNZU0NBTExfU0hJTV9QSE9OWV9TUkNfTkVXKSAkKExJQlNZU0NBTExfU0hJTV9HRU5fU1JD
KSAkKExJQlNZU0NBTExfU0hJTV9HRU5fU1JDKQo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9z
aGltL2VudHJ5LmMuaW5fZW5kIGIvbGliL3N5c2NhbGxfc2hpbS9lbnRyeS5jLmluX2VuZAo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmRkODA5ZTdiCj4gLS0tIC9kZXYv
bnVsbAo+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vZW50cnkuYy5pbl9lbmQKPiBAQCAtMCwwICsx
LDE1IEBACj4gKwo+ICtsb25nIHVrX3N5c2NhbGwobG9uZyBuLCAuLi4pCj4gK3sKPiArCXZhX2xp
c3QgYXA7Cj4gKwlzeXNjYWxsX2FyZ190IGEsYixjLGQsZSxmOwo+ICsJdmFfc3RhcnQoYXAsIG4p
Owo+ICsJYT12YV9hcmcoYXAsIGxvbmcpOwo+ICsJYj12YV9hcmcoYXAsIGxvbmcpOwo+ICsJYz12
YV9hcmcoYXAsIGxvbmcpOwo+ICsJZD12YV9hcmcoYXAsIGxvbmcpOwo+ICsJZT12YV9hcmcoYXAs
IGxvbmcpOwo+ICsJZj12YV9hcmcoYXAsIGxvbmcpOwo+ICsJdmFfZW5kKGFwKTsKPiArCXJldHVy
biBfX3N5c2NhbGxfZHluYW1pYyhuLGEsYixjLGQsZSxmKTsKPiArfQo+IGRpZmYgLS1naXQgYS9s
aWIvc3lzY2FsbF9zaGltL2dlbl9lbnRyeS5hd2sgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9lbnRy
eS5hd2sKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi45MjQ1NzA4OQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9lbnRyeS5hd2sKPiBA
QCAtMCwwICsxLDQwIEBACj4gK0JFR0lOIHsKPiArCW1heF9hcmdzID0gNgo+ICsJcHJpbnQgIi8q
IEF1dG8gZ2VuZXJhdGVkIGZpbGUuIERPIE5PVCBFRElUICovXG5cbiIKPiArCj4gKwlwcmludCAi
I2luY2x1ZGUgPHVrL3N5c2NhbGwuaD4iCj4gKwlwcmludCAiI2luY2x1ZGUgPHVrL3ByaW50Lmg+
XG4iCj4gKwo+ICsJcHJpbnRmICJzdGF0aWMgaW5saW5lIGxvbmcgX19zeXNjYWxsX2R5bmFtaWMo
bG9uZyBuciwgIgo+ICsJZm9yIChpID0gMTsgaSA8IG1heF9hcmdzOyBpKyspCj4gKwkJcHJpbnRm
ICJsb25nIGFyZyVkLCAiLGkKPiArCXByaW50ZiAibG9uZyBhcmclZClcbntcbiIsIG1heF9hcmdz
Cj4gKwo+ICsJZm9yIChpID0gMTsgaSA8PSBtYXhfYXJnczsgaSsrKQo+ICsJCXByaW50ZiAiXHQo
dm9pZCkgYXJnJWQ7XG4iLCBpCj4gKwo+ICsJcHJpbnQgIlxuXHRzd2l0Y2ggKG5yKSB7Igo+ICt9
Cj4gKwo+ICsKPiArL1thLXpBLVowLTldKy1bMC05XSsvewo+ICsJbmFtZSA9ICQxCj4gKwlzeXNf
bmFtZSA9ICJTWVNfIiBuYW1lCj4gKwl1a19uYW1lID0gInVrX3N5c2NhbGxfIiBuYW1lCj4gKwlh
cmdzX25yID0gJDIgKyAwCj4gKwlwcmludGYgIlx0Y2FzZSAlczpcbiIsIHN5c19uYW1lOwo+ICsJ
cHJpbnRmICJcdFx0cmV0dXJuICVzKCIsIHVrX25hbWU7Cj4gKwlmb3IgKGkgPSAxOyBpIDwgYXJn
c19ucjsgaSsrKQo+ICsJCXByaW50ZigiYXJnJWQsICIsIGkpCj4gKwlpZiAoYXJnc19uciA+IDAp
Cj4gKwkJcHJpbnRmKCJhcmclZCIsIGFyZ3NfbnIpCj4gKwlwcmludGYoIik7XG4iKQo+ICt9Cj4g
Kwo+ICtFTkQgewo+ICsJcHJpbnRmICJcdGRlZmF1bHQ6XG4iCj4gKwlwcmludGYgIlx0XHR1a19w
cl9kZWJ1ZyhcInN5c2NhbGwgbnIgJSVsZCBpcyBub3QgaW1wbGVtZW50ZWRcIiwgbnIpO1xuIgo+
ICsJcHJpbnRmICJcdFx0ZXJybm8gPSAtRU5PU1lTO1xuIgo+ICsJcHJpbnRmICJcdFx0cmV0dXJu
IC0xO1xuIgo+ICsJcHJpbnRmICJcdH1cbn1cbiIKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvc3lz
Y2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRl
L3VrL3N5c2NhbGwuaAo+IGluZGV4IDk2ODExOTE4Li5lYmVmYTQwMyAxMDA2NDQKPiAtLS0gYS9s
aWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oCj4gKysrIGIvbGliL3N5c2NhbGxf
c2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IEBAIC0xNDMsNiArMTQzLDggQEAgdHlwZWRlZiBs
b25nIHN5c2NhbGxfYXJnX3Q7Cj4gICAjaW5jbHVkZSA8dWsvYml0cy9wcm92aWRlZF9zeXNjYWxs
cy5oPgo+ICAgI2luY2x1ZGUgPHVrL2JpdHMvc3lzY2FsbF9zdHVicy5oPgo+ICAgCj4gK2xvbmcg
dWtfc3lzY2FsbChsb25nIG4sIC4uLik7Cj4gKwo+ICAgI2RlZmluZSBzeXNjYWxsKC4uLikJCQkJ
CQkJXAo+ICAgCVVLX0NPTkNBVChfX3VrX3N5c2NhbGwsIF9fU1lTQ0FMTF9OQVJHUyhfX1ZBX0FS
R1NfXykpKF9fVkFfQVJHU19fKQo+ICAgI2VuZGlmCj4gCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 12:50:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 12:50: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 1hagEo-0008W9-RN; Tue, 11 Jun 2019 12:50: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=r6wb=UK=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hagEm-0008Vr-RT
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 12:50:52 +0000
X-Inumbo-ID: 898a758a-8c47-11e9-b3ee-1b487e87c8af
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 898a758a-8c47-11e9-b3ee-1b487e87c8af;
 Tue, 11 Jun 2019 12:50:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1CD72F2013;
 Tue, 11 Jun 2019 14:50:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id iLeZHXDyUSit; Tue, 11 Jun 2019 14:50:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E631EF200B
 for <minios-devel@lists.xen.org>; Tue, 11 Jun 2019 14:50:15 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Jun 2019 14:50:15
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
 <20190605155511.26450-7-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ac965ece-00de-a6e6-a200-ab3c77b45628@neclab.eu>
Date: Tue, 11 Jun 2019 14:50:15 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605155511.26450-7-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 6/9] lib/syscall_shim:
 introduce syscalls macro layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDUuMDYuMTkgMTc6NTUsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gVG8gcHJvdmlkZSBhIHN5c2Nh
bGwgdXNlciBuZWVkcyB0byB1c2UgbWFjcm8gVUtfU1lTQ0FMTF9ERUZJTkUuIFRoZQo+IHN5bnRh
eCBpcyB0aGUgZm9sbG93aW5nOgo+IAo+IFVLX1NZU0NBTExfREVGSU5FKHN5c2NhbGxfbmFtZSwg
YXJndW1lbnRfMV90eXBlLCBhcmd1bWVudF8xX25hbWUsIC4uLikKPiB7Cj4gICAgICA8c3lzY2Fs
bF9ib2R5PjsKPiB9Cj4gCj4gU2lnbmVkLW9mZi1ieTogWXVyaSBWb2xjaGtvdiA8eXVyaS52b2xj
aGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAg
ICAgICAgIHwgICA2ICstCj4gICBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5o
IHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDE1
NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IAo+IGRpZmYgLS1naXQgYS9saWIv
c3lzY2FsbF9zaGltL01ha2VmaWxlLnVrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+
IGluZGV4IDBmNzc1NGRmLi41MGVlMjhjYSAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGlt
L01ha2VmaWxlLnVrCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9NYWtlZmlsZS51awo+IEBAIC00
Niw1ICs0Niw5IEBAICQoTElCU1lTQ0FMTF9TSElNX0lOQ0xVREVTX1BBVEgpL3N5c2NhbGxfc3R1
YnMuaC5uZXc6Cj4gICAJCSQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fc3R1
YnMuYXdrIFwKPiAgIAkJJChMSUJTWVNDQUxMX1NISU1fVEVNUEwpID4gJEApCj4gICAKPiAtTElC
U1lTQ0FMTF9TSElNX0NMRUFOID0gJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDKSAkKExJQlNZ
U0NBTExfU0hJTV9QSE9OWV9TUkNfTkVXKSAkKExJQlNZU0NBTExfU0hJTV9HRU5fU1JDKQo+ICtD
SU5DTFVERVMtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNKSAgICs9IC1JJChMSUJTWVNDQUxMX1NI
SU1fQlVJTEQpL2luY2x1ZGUKPiArQ1hYSU5DTFVERVMtJChDT05GSUdfTElCU1lTQ0FMTF9TSElN
KSArPSAtSSQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9pbmNsdWRlCj4gK0NJTkNMVURFUy15ICAg
Kz0gLUkkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9pbmNsdWRlCj4gK0NYWElOQ0xVREVTLXkgKz0g
LUkkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9pbmNsdWRlCj4gICAKPiArTElCU1lTQ0FMTF9TSElN
X0NMRUFOID0gJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDKSAkKExJQlNZU0NBTExfU0hJTV9Q
SE9OWV9TUkNfTkVXKSAkKExJQlNZU0NBTExfU0hJTV9HRU5fU1JDKSAkKExJQlNZU0NBTExfU0hJ
TV9HRU5fU1JDKQo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lz
Y2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjk2ODExOTE4Cj4gLS0tIC9kZXYvbnVsbAo+
ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKPiBAQCAtMCwwICsx
LDE1MCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4g
Ky8qCj4gKyAqIEF1dGhvcnM6IFl1cmkgVm9sY2hrb3YgPHl1cmkudm9sY2hrb3ZAbmVjbGFiLmV1
Pgo+ICsgKgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIE5FQyBMYWJvcmF0b3JpZXMg
RXVyb3BlIEdtYkgsIE5FQyBDb3Jwb3JhdGlvbi4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBu
b3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+
ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiAr
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Cj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJF
IEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg
X19VS19TWVNDQUxMX0hfXwo+ICsjZGVmaW5lIF9fVUtfU1lTQ0FMTF9IX18KPiArCj4gKyNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8
dWsvcHJpbnQuaD4KPiArCj4gKyNkZWZpbmUgX191a19zY2MoWCkgKChsb25nKSAoWCkpCj4gK3R5
cGVkZWYgbG9uZyBzeXNjYWxsX2FyZ190Owo+ICsKPiArI2RlZmluZSBfX3VrX3N5c2NhbGwoc3lz
Y2FsbF9uciwgLi4uKSBcCj4gKwlVS19DT05DQVQodWtfc3lzY2FsbF9mbl8sIHN5c2NhbGxfbnIp
IChfX1ZBX0FSR1NfXykKPiArCj4gKyNkZWZpbmUgX191a19zeXNjYWxsMChuKSBfX3VrX3N5c2Nh
bGwobikKPiArI2RlZmluZSBfX3VrX3N5c2NhbGwxKG4sYSkgX191a19zeXNjYWxsKG4sX191a19z
Y2MoYSkpCj4gKyNkZWZpbmUgX191a19zeXNjYWxsMihuLGEsYikgX191a19zeXNjYWxsKG4sX191
a19zY2MoYSksX191a19zY2MoYikpCj4gKyNkZWZpbmUgX191a19zeXNjYWxsMyhuLGEsYixjKSBf
X3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhiKSxfX3VrX3NjYyhjKSkKPiArI2Rl
ZmluZSBfX3VrX3N5c2NhbGw0KG4sYSxiLGMsZCkgX191a19zeXNjYWxsKG4sX191a19zY2MoYSks
X191a19zY2MoYiksX191a19zY2MoYyksX191a19zY2MoZCkpCj4gKyNkZWZpbmUgX191a19zeXNj
YWxsNShuLGEsYixjLGQsZSkgX191a19zeXNjYWxsKG4sX191a19zY2MoYSksX191a19zY2MoYiks
X191a19zY2MoYyksX191a19zY2MoZCksX191a19zY2MoZSkpCj4gKyNkZWZpbmUgX191a19zeXNj
YWxsNihuLGEsYixjLGQsZSxmKSBfX3VrX3N5c2NhbGwobixfX3VrX3NjYyhhKSxfX3VrX3NjYyhi
KSxfX3VrX3NjYyhjKSxfX3VrX3NjYyhkKSxfX3VrX3NjYyhlKSxfX3VrX3NjYyhmKSkKPiArI2Rl
ZmluZSBfX3VrX3N5c2NhbGw3KG4sYSxiLGMsZCxlLGYsZykgKF9fdWtfc3lzY2FsbCkobixfX3Vr
X3NjYyhhKSxfX3VrX3NjYyhiKSxfX3VrX3NjYyhjKSxfX3VrX3NjYyhkKSxfX3VrX3NjYyhlKSxf
X3VrX3NjYyhmKSxfX3VrX3NjYyhnKSkKPiArCj4gKwo+ICsjZGVmaW5lIF9fU1lTQ0FMTF9OQVJH
U19YKGEsYixjLGQsZSxmLGcsaCxuLC4uLikgbgo+ICsjZGVmaW5lIF9fU1lTQ0FMTF9OQVJHUygu
Li4pIF9fU1lTQ0FMTF9OQVJHU19YKF9fVkFfQVJHU19fLDcsNiw1LDQsMywyLDEsMCwpCj4gKwo+
ICsjZGVmaW5lIF9fU1lTQ0FMTF9ERUZfTkFSR1NfWCh6LCBhMSxhMiwgYjEsYjIsIGMxLGMyLCBk
MSxkMiwgZTEsZTIsIGYxLGYyLCBnMSxnMiwgbnIsIC4uLikgbnIKPiArI2RlZmluZSBfX1NZU0NB
TExfREVGX05BUkdTKC4uLikgX19TWVNDQUxMX0RFRl9OQVJHU19YKF9fVkFfQVJHU19fLCA3LDcs
IDYsNiwgNSw1LCA0LDQsIDMsMywgMiwyLCAxLDEsMCkKPiArCj4gKyNkZWZpbmUgX19VS19OQU1F
MlNDQUxMX0ZOKG5hbWUpIFVLX0NPTkNBVCh1a19zeXNjYWxsXywgbmFtZSkKPiArCj4gKyNkZWZp
bmUgVUtfQVJHX01BUDEobSwgdHlwZSwgYXJnKSBtKHR5cGUsIGFyZykKPiArI2RlZmluZSBVS19B
UkdfTUFQMihtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQMShtLCBf
X1ZBX0FSR1NfXykKPiArI2RlZmluZSBVS19BUkdfTUFQMyhtLCB0eXBlLCBhcmcsIC4uLikgbSh0
eXBlLCBhcmcpLCBVS19BUkdfTUFQMihtLCBfX1ZBX0FSR1NfXykKPiArI2RlZmluZSBVS19BUkdf
TUFQNChtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQMyhtLCBfX1ZB
X0FSR1NfXykKPiArI2RlZmluZSBVS19BUkdfTUFQNShtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBl
LCBhcmcpLCBVS19BUkdfTUFQNChtLCBfX1ZBX0FSR1NfXykKPiArI2RlZmluZSBVS19BUkdfTUFQ
NihtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBlLCBhcmcpLCBVS19BUkdfTUFQNShtLCBfX1ZBX0FS
R1NfXykKPiArI2RlZmluZSBVS19BUkdfTUFQNyhtLCB0eXBlLCBhcmcsIC4uLikgbSh0eXBlLCBh
cmcpLCBVS19BUkdfTUFQNihtLCBfX1ZBX0FSR1NfXykKPiArI2RlZmluZSBVS19BUkdfTUFQeChu
cl9hcmdzLCAuLi4pIFVLX0NPTkNBVChVS19BUkdfTUFQLCBucl9hcmdzKShfX1ZBX0FSR1NfXykK
PiArCj4gKyNkZWZpbmUgU19BUkdfTE9ORyh0eXBlLCBhcmcpIHVuc2lnbmVkIGxvbmcgYXJnCj4g
KyNkZWZpbmUgU19BUkdfQUNUVUFMKHR5cGUsIGFyZykgdHlwZSBhcmcKPiArI2RlZmluZSBTX0FS
R19DQVNUKHR5cGUsIGFyZykgKHR5cGUpIGFyZwo+ICsKPiArCj4gKy8qIE5PVEUgYW5kIFRPRE86
Cj4gKyAqCUN1cnJlbnRseSBhbGwgdGhlIGZ1bmN0aW9ucyBpbiB1bmlrcmFmdCB3aGljaCBhcmUg
bWltaWNraW5nCj4gKyAqCWxpYmMgYmVoYXZpb3IgKHdyaXRldiwgb3BlbiwgbW91bnQsIGV0Yykg
YXJlIGhhbmRsaW5nICdlcnJubycKPiArICoJb24gdGhlaXIgb3duLiBUbyBjb21wbHkgd2l0aCB0
aGF0IHN5c2NhbGxfc2hpbSBleHBlY3RzIHN5c2NhbGwKPiArICoJaW1wbGVtZW50YXRpb24gdG8g
c2V0IGVycm5vLCBhbmQgcmV0dXJuIDAgaW4gY2FzZSBvZiBzdWNjZXNzCj4gKyAqCW9yIC0xIChv
ciB3aGF0ZXZlciB0aGUgbWFuIHBhZ2Ugc2F5cykgaW4gY2FzZSBvZiBmYWlsdXJlLgo+ICsgKgo+
ICsgKglUaGlzIGhhcyB0byBiZSByZWNvbnNpZGVyZWQgbGF0ZXIuIFRoZSBjb3JyZXNwb25kaW5n
IGZ1bmN0aW9ucwo+ICsgKglpbiB1bmlrcmFmdCBzaG91bGQgbm90IHRvdWNoIGVycm5vLCBhbmQg
c3lzY2FsbF9zaGltIHNob3VsZAo+ICsgKglwcm92aWRlIDIgc3lzY2FsbCBmdW5jdGlvbnMgLSBv
bmUgdGhhdCBoYW5kbGVzIHJldHVybiBhbmQgdGhlCj4gKyAqCW9uZSB3aGljaCBkb2VzIG5vdC4K
PiArICoKPiArICoJQSBnb29kIHJlZmVyZW5jZSB3b3VsZCBiZSBtdXNsIGltcGxlbWVudGF0aW9u
Lgo+ICsgKi8KPiArI2lmZGVmIENPTkZJR19MSUJTWVNDQUxMX1NISU0KPiArI2RlZmluZSBfX1VL
X1NZU0NBTExfREVGSU5FKHgsIG5hbWUsIC4uLikJCQkJXAo+ICsJc3RhdGljIGlubGluZSBsb25n
IF9fIyNuYW1lKFVLX0FSR19NQVB4KHgsIFNfQVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKTsgXAo+
ICsJbG9uZyBuYW1lKFVLX0FSR19NQVB4KHgsIFNfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSkJCQlc
Cj4gKwl7CQkJCQkJCQlcCj4gKwkJbG9uZyByZXQgPSBfXyMjbmFtZSgJCQkJCVwKPiArCQkJVUtf
QVJHX01BUHgoeCwgU19BUkdfQ0FTVCwgX19WQV9BUkdTX18pKTsJCVwKPiArCQlyZXR1cm4gcmV0
OwkJCQkJCVwKPiArCX0JCQkJCQkJCVwKPiArCXN0YXRpYyBpbmxpbmUgbG9uZyBfXyMjbmFtZShV
S19BUkdfTUFQeCh4LCBTX0FSR19BQ1RVQUwsIF9fVkFfQVJHU19fKSkKPiArI2Vsc2UKPiArI2Rl
ZmluZSBfX1VLX1NZU0NBTExfREVGSU5FKHgsIG5hbWUsIC4uLikJCQkJXAo+ICsJc3RhdGljIGlu
bGluZSBsb25nIG5hbWUoVUtfQVJHX01BUHgoeCwgU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykp
Cj4gKyNlbmRpZgo+ICsKPiArI2RlZmluZSBfVUtfU1lTQ0FMTF9ERUZJTkUoLi4uKSBfX1VLX1NZ
U0NBTExfREVGSU5FKF9fVkFfQVJHU19fKQo+ICsjZGVmaW5lIFVLX1NZU0NBTExfREVGSU5FKG5h
bWUsIC4uLikJCQkJXAo+ICsJX1VLX1NZU0NBTExfREVGSU5FKF9fU1lTQ0FMTF9ERUZfTkFSR1Mo
X19WQV9BUkdTX18pLAlcCj4gKwkJCSAgICBfX1VLX05BTUUyU0NBTExfRk4obmFtZSksCQlcCj4g
KwkJCSAgICBfX1ZBX0FSR1NfXykKPiArCj4gKyNkZWZpbmUgX19VS19TUFJPVE9fQVJHU19UWVBF
IHVuc2lnbmVkIGxvbmcKPiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTMCgpICB2b2lkCj4gKyNk
ZWZpbmUgX19VS19TUFJPVE9fQVJHUzEoKSAgX19VS19TUFJPVE9fQVJHU19UWVBFIGEKPiArI2Rl
ZmluZSBfX1VLX1NQUk9UT19BUkdTMigpICBfX1VLX1NQUk9UT19BUkdTMSgpLCBfX1VLX1NQUk9U
T19BUkdTX1RZUEUgYgo+ICsjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1MzKCkgIF9fVUtfU1BST1RP
X0FSR1MyKCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBjCj4gKyNkZWZpbmUgX19VS19TUFJPVE9f
QVJHUzQoKSAgX19VS19TUFJPVE9fQVJHUzMoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGQKPiAr
I2RlZmluZSBfX1VLX1NQUk9UT19BUkdTNSgpICBfX1VLX1NQUk9UT19BUkdTNCgpLCBfX1VLX1NQ
Uk9UT19BUkdTX1RZUEUgZQo+ICsjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1M2KCkgIF9fVUtfU1BS
T1RPX0FSR1M1KCksIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBmCj4gKyNkZWZpbmUgX19VS19TUFJP
VE9fQVJHUzcoKSAgX19VS19TUFJPVE9fQVJHUzYoKSwgX19VS19TUFJPVE9fQVJHU19UWVBFIGcK
PiArI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTeChhcmdzX25yKSAgXAo+ICsJVUtfQ09OQ0FUKF9f
VUtfU1BST1RPX0FSR1MsIGFyZ3NfbnIpKCkKPiArCj4gKyNkZWZpbmUgVUtfU1lTQ0FMTF9QUk9U
TyhhcmdzX25yLCBzeXNjYWxsX25hbWUpCQkJXAo+ICsJbG9uZyBVS19DT05DQVQodWtfc3lzY2Fs
bF8sIHN5c2NhbGxfbmFtZSkoCVwKPiArCQlfX1VLX1NQUk9UT19BUkdTeChhcmdzX25yKSkKPiAr
Cj4gKyNkZWZpbmUgdWtfc3lzY2FsbF9zdHViKHN5c2NhbGxfbmFtZSkgKHsJCQlcCj4gKwkJCXVr
X3ByX2RlYnVnKCJzeXNjYWxsIFwiIiBzeXNjYWxsX25hbWUJXAo+ICsJCQkJICAgICJcIiBpcyBu
b3QgaW1wbGVtZW50ZWQiKTsJXAo+ICsJCQllcnJubyA9IC1FTk9TWVM7CQkJXAo+ICsJCQktMTsJ
CQkJCVwKPiArCQl9KQo+ICsKPiArCj4gKyNpZmRlZiBDT05GSUdfTElCU1lTQ0FMTF9TSElNCj4g
KyNpbmNsdWRlIDx1ay9iaXRzL3N5c2NhbGxfbnJzLmg+Cj4gKyNpbmNsdWRlIDx1ay9iaXRzL3N5
c2NhbGxfbWFwLmg+Cj4gKyNpbmNsdWRlIDx1ay9iaXRzL3Byb3ZpZGVkX3N5c2NhbGxzLmg+Cj4g
KyNpbmNsdWRlIDx1ay9iaXRzL3N5c2NhbGxfc3R1YnMuaD4KPiArCj4gKyNkZWZpbmUgc3lzY2Fs
bCguLi4pCQkJCQkJCVwKPiArCVVLX0NPTkNBVChfX3VrX3N5c2NhbGwsIF9fU1lTQ0FMTF9OQVJH
UyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJHU19fKQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBf
X1VLX1NZU0NBTExfSF9fICovCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 12:52:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 12:52: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 1hagGY-0000CB-1a; Tue, 11 Jun 2019 12:52: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=r6wb=UK=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hagGV-0000C3-VV
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 12:52:40 +0000
X-Inumbo-ID: c9ad20c2-8c47-11e9-b0a3-7723b41bb7d1
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c9ad20c2-8c47-11e9-b0a3-7723b41bb7d1;
 Tue, 11 Jun 2019 12:52:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B65B7F2016;
 Tue, 11 Jun 2019 14:50:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bkfNjq6tztAm; Tue, 11 Jun 2019 14:50:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 879E5F200B
 for <minios-devel@lists.xen.org>; Tue, 11 Jun 2019 14:50:46 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Jun 2019 14:50:46
 +0200
To: Yuri Volchkov <yuri.volchkov@neclab.eu>, <minios-devel@lists.xen.org>
References: <20190605155511.26450-1-yuri.volchkov@neclab.eu>
 <20190605155511.26450-10-yuri.volchkov@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <0f671ce2-2ae7-8635-0395-93440364aa9a@neclab.eu>
Date: Tue, 11 Jun 2019 14:50:45 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190605155511.26450-10-yuri.volchkov@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 9/9] doc: add section about
 syscall shim layer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDUuMDYuMTkgMTc6NTUsIFl1cmkgVm9sY2hrb3Ygd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogWXVy
aSBWb2xjaGtvdiA8eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU+Cj4gLS0tCj4gICBkb2MvZ3VpZGVz
L2RldmVsb3BlcnMtYXBwLnJzdCB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCj4gICAxIGZpbGUgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQg
YS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCBiL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1h
cHAucnN0Cj4gaW5kZXggYmJkM2JiZGEuLmZkZGU1ZGFkIDEwMDY0NAo+IC0tLSBhL2RvYy9ndWlk
ZXMvZGV2ZWxvcGVycy1hcHAucnN0Cj4gKysrIGIvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5y
c3QKPiBAQCAtMzIzLDYgKzMyMyw1NSBAQCBBbiBleGFtcGxlIGNvbnRleHQgb2YgZXh0cmEubGQ6
IDo6Cj4gICAKPiAgIFRoaXMgd2lsbCBhZGQgdGhlIHNlY3Rpb24gLnVrX2ZzX2xpc3QgYWZ0ZXIg
dGhlIC50ZXh0Cj4gICAKPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICtTeXNjYWxs
IHNoaW0gbGF5ZXIKPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsKPiArSWYgeW91
IGxpYnJhcnkgcHJvdmlkZXMgYSBzeXNjYWxsLCB5b3UgbmVlZCB0byBpbmZvcm0gVW5pa3JhZnQg
dGhhdCBpdAo+ICtjYW4gdXNlIHlvdXIgaW1wbGVtZW50YXRpb24uIEFkZCBhIGxpbmUgaW4geW91
IE1ha2VmaWxlLnVrOiA6Ogo+ICsKPiArICAgIFVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklH
X0xJQllPVVJMSUJOQU1FKSArPSA8c3lzY2FsbF9uYW1lPi08bnVtYmVyX29mX2FyZ3VtZW50cz4K
PiArCj4gK1doZXJlIGA8bnVtYmVyX29mX2FyZ3VtZW50cz5gIGlzIGhvdyBtYW55IGFyZ3VtZW50
cyB5b3VyIHN5c2NhbGwgYWNjZXB0cy4KPiArCj4gK0ZvciBleGFtcGxlOiA6Ogo+ICsKPiArICAg
IFVLX1BST1ZJREVEX1NZU0NBTExTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9IHdyaXRldi0zCj4g
Kwo+ICsuLiBub3RlOjogUGxlYXNlIGNvbnN1bHQgY29ycmVzcG9uZGluZyBtYW4gcGFnZSBpbiBv
cmRlciB0byBrZWVwIEFQSQo+ICsgICAgICAgICAgIG1hdGNoaW5nIHRvIHRoZSBlcXVpdmFsZW50
IGxpbnV4IHN5c2NhbGwKPiArCj4gK0ZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgeW91IHN5c2Nh
bGwgdXNlIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGU6Cj4gKwo+ICsuLiBjb2RlLWJsb2NrOjogYwo+
ICsKPiArICBVS19TWVNDQUxMX0RFRklORShzeXNjYWxsX25hbWUsIGFyZzFfdHlwZSwgYXJnMV9u
YW1lLCBhcmcyX3R5cGUsIGFyZzJfbmFtZSwgLi4pCj4gKyAgewo+ICsgIAlyZXQgPSBkb19jb29s
X3N0dWZmKCk7Cj4gKyAgCWlmIChyZXQpIHsKPiArICAJCWVycm5vID0gRVJST1JfQ09ERTsKPiAr
ICAJCXJldHVybiAtMTsKPiArICAJfQo+ICsgIAlyZXR1cm4gMDsKPiArICB9Cj4gKwo+ICtGb3Ig
ZXhhbXBsZToKPiArCj4gKy4uIGNvZGUtYmxvY2s6OiBjCj4gKwo+ICsgIFVLX1NZU0NBTExfREVG
SU5FKHdyaXRldiwgdW5zaWduZWQgbG9uZywgZmQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCB2ZWMs
Cj4gKyAgCQkgIHVuc2lnbmVkIGxvbmcsIHZsZW4pCj4gKyAgewo+ICsgIAlyZXR1cm4gcHdyaXRl
dihmZCwgdmVjLCB2bGVuLCAtMSk7Cj4gKyAgfQo+ICsKPiArUGxlYXNlIG5vdGUsIHRoYXQgc3lz
Y2FsbF9zaGltIGV4cGVjdHMgYmVoYXZpb3IgYXMgZGVzY3JpYmVkIGluIGBgbWFuIDIKPiArc3lz
Y2FsbGBgLiBOYW1lbHk6IDo6Cj4gKwo+ICsgIFRoZSByZXR1cm4gdmFsdWUgaXMgZGVmaW5lZCBi
eSB0aGUgc3lzdGVtIGNhbGwgYmVpbmcgaW52b2tlZC4gIEluCj4gKyAgZ2VuZXJhbCwgYSAwIHJl
dHVybiB2YWx1ZSBpbmRpY2F0ZXMgc3VjY2Vzcy4gIEEgLTEgcmV0dXJuIHZhbHVlCj4gKyAgaW5k
aWNhdGVzIGFuIGVycm9yLCBhbmQgYW4gZXJyb3IgY29kZSBpcyBzdG9yZWQgaW4gZXJybm8uCj4g
Kwo+ICAgCj4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gICBNYWtlIFRhcmdldHMK
PiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 13:00:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 13:00:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hagNe-0000nP-Vf; Tue, 11 Jun 2019 13:00:02 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=r6wb=UK=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hagNe-0000ic-7z
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 13:00:02 +0000
X-Inumbo-ID: d16b23e4-8c48-11e9-96d2-9f0951cfc114
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d16b23e4-8c48-11e9-96d2-9f0951cfc114;
 Tue, 11 Jun 2019 12:59:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C750B104B85;
 Tue, 11 Jun 2019 14:59:58 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id aEO3n1eJf-Dq; Tue, 11 Jun 2019 14:59:58 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A17DE103AFF;
 Tue, 11 Jun 2019 14:59:58 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Jun 2019 14:59:58
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190608080607.8882-1-costin.lupu@cs.pub.ro>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <73a99d45-a22a-75c2-e6fd-d1783517ff4a@neclab.eu>
Date: Tue, 11 Jun 2019 14:59:57 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190608080607.8882-1-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] lib/ukboot: Fix handling of
 main arguments
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MDguMDYuMTkgMTA6MDYsIENvc3RpbiBMdXB1IHdyb3RlOgo+IFdoZW4gdGhlIGNvbW1hbmQgbGlu
ZSBpcyBwYXJzZWQgYW5kIHNwbGl0IGludG8gYXJndW1lbnRzLCBlYWNoIGFyZ3VtZW50IGlzIHNh
dmVkCj4gaW4gYW4gYXJyYXkgb2YgcG9pbnRlcnMgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayAoJ2Fy
Z3YnIGFycmF5IGluCj4gdWtwbGF0X2VudHJ5X2FyZ3AoKSkuIFRoaXMgbWVhbnMgdGhhdCB0aGUg
YXJyYXkgY2FuIGJlIG92ZXJ3cml0dGVuIGFueXRpbWUKPiBiZWZvcmUgc3RhcnRpbmcgdGhlIG1h
aW4gdGhyZWFkIHdoaWNoIG5lZWRzIHRoZSBhcmd1bWVudHMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhh
dAo+IGJ5IG1ha2luZyB0aGUgYXJyYXkgc3RhdGljLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENvc3Rp
biBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gLS0tCj4gICBsaWIvdWtib290L2Jvb3Qu
YyB8IDIgKy0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt
KQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdWtib290L2Jvb3QuYyBiL2xpYi91a2Jvb3QvYm9vdC5j
Cj4gaW5kZXggNGRjYzBhZmIuLjk3YzdkMThiIDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jvb3QvYm9v
dC5jCj4gKysrIGIvbGliL3VrYm9vdC9ib290LmMKPiBAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRp
YyB2b2lkIG1haW5fdGhyZWFkX2Z1bmModm9pZCAqYXJnKQo+ICAgLyogZGVmaW5lZCBpbiA8dWsv
cGxhdC5oPiAqLwo+ICAgdm9pZCB1a3BsYXRfZW50cnlfYXJncChjaGFyICphcmcwLCBjaGFyICph
cmdiLCBfX3N6IGFyZ2JfbGVuKQo+ICAgewo+IC0JY2hhciAqYXJndltDT05GSUdfTElCVUtCT09U
X01BWE5CQVJHU107Cj4gKwlzdGF0aWMgY2hhciAqYXJndltDT05GSUdfTElCVUtCT09UX01BWE5C
QVJHU107Cj4gICAJaW50IGFyZ2MgPSAwOwo+ICAgCj4gICAJaWYgKGFyZzApIHsKPiAKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 13:05:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 13:05: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 1hagT8-0001ak-S3; Tue, 11 Jun 2019 13:05: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=r6wb=UK=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hagT7-0001ae-4w
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 13:05:41 +0000
X-Inumbo-ID: 9b119bb0-8c49-11e9-9190-b72f4e55974b
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9b119bb0-8c49-11e9-9190-b72f4e55974b;
 Tue, 11 Jun 2019 13:05:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 03CFFF2013;
 Tue, 11 Jun 2019 15:05:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3RedPiRL33uB; Tue, 11 Jun 2019 15:05:36 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CE94EF200B;
 Tue, 11 Jun 2019 15:05:30 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 11 Jun 2019 15:05:30
 +0200
To: Florian Schmidt <Florian.Schmidt@neclab.eu>, Cristian Banu
 <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190405085412.31714-1-cristb@gmail.com>
 <babf1e26-dbac-025a-6d22-3c433fb12c52@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <3a556925-7b0d-dba1-30f4-77b4b4e9543a@neclab.eu>
Date: Tue, 11 Jun 2019 15:05:30 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <babf1e26-dbac-025a-6d22-3c433fb12c52@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/*: Replace memregion
 hardcoded values
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

SGV5IENocmlzdGlhbiwKCmNvdWxkIHlvdSByZXZpc2l0IHRoaXMgcGF0Y2ggdW5kZXIgY29uc2lk
ZXJhdGlvbiB0aGF0IHdlIGhhdmUgYSBtb3JlIApjb21wbGljYXRlZCBpbnRlcmZhY2Ugc2luY2Ug
dGhlIGludHJvZHVjdGlvbiBvZiBpbml0cmQncyBvbiBLVk0/CkkgYW0gbm90IHN1cmUgeWV0LCBo
b3cgeW91IHdvdWxkIGJ1aWxkIHRoaXMgc3dpdGNoIGNhc2Ugd2l0aCBlbnVtcyBpbiAKb3VyIG5l
dyBzaXR1YXRpb24uCgpUaGFua3MsCgpTaW1vbgoKT24gMTIuMDQuMTkgMTA6MjcsIEZsb3JpYW4g
U2NobWlkdCB3cm90ZToKPiBIaSBDaHJpc3RpYW4sCj4gCj4gd2l0aG91dCBjaGVja2luZyB0aGUg
ZGV0YWlscyBvZiB0aGUgY29kZSwgdGhlIGlkZWEgbG9va3MgZmluZSB0byBtZS4KPiAKPiBBY2tl
ZC1ieTogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pgo+IAo+IEhv
d2V2ZXIsIFNpbW9uIGhhcyBiZWVuIHdvcmtpbmcgb24gdGhpcyBjb2RlIHJlY2VudGx5IGFuZCBy
dW4gaW50byBzb21lIAo+IGFkZGl0aW9uYWwgY29tcGxpY2F0ZWQgY2FzZXMuIEl0IHNvdW5kcyBs
aWtlIHRoZXJlIGFyZSBzb21lIGlzc3VlcywgYW5kIAo+IHdlIG1pZ2h0IGFjdHVhbGx5IG5lZWQg
YSBkaWZmZXJlbnQgYXBwcm9hY2ggdGhhdCBob3BlZnVsbHkgbWlnaHQgYWxzbyAKPiBub3QgcmVx
dWlyZSBoYXZpbmcgZGlmZmVyZW50IGVudW1zIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zIGVpdGhl
ci4KPiAKPiBNYXliZSBTaW1vbiBjYW4gc2F5IHNvbWV0aGluZyBhYm91dCB0aGF0Lgo+IAo+IENo
ZWVycywKPiBGbG9yaWFuCj4gCj4gCj4gT24gNC81LzE5IDEwOjU0IEFNLCBDcmlzdGlhbiBCYW51
IHdyb3RlOgo+PiBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBoYXJkY29kZWQgdmFsdWVzIGZvciB0
aGUgbWVtb3J5IHJlZ2lvbiBpbmRleGVzCj4+IHdpdGggZW51bXMsIGluIG9yZGVyIHRvIG1ha2Ug
dGhlIHByb2Nlc3Mgb2YgYWRkaW5nIG9yIHJlbW92aW5nIG1lbW9yeQo+PiByZWdpb25zIGxlc3Mg
ZnJhZ2lsZS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWls
LmNvbT4KPj4gLS0tCj4+IMKgIHBsYXQva3ZtL21lbW9yeS5jIHwgMzMgKysrKysrKysrKysrKysr
KysrKysrKystLS0tLS0tLS0tCj4+IMKgIHBsYXQveGVuL21lbW9yeS5jIHwgMzAgKysrKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tCj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9u
cygrKSwgMTkgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9tZW1vcnku
YyBiL3BsYXQva3ZtL21lbW9yeS5jCj4+IGluZGV4IGU0NWI4OGM1OTQ5NS4uMGI2YTNjZWU1Mzlk
IDEwMDY0NAo+PiAtLS0gYS9wbGF0L2t2bS9tZW1vcnkuYwo+PiArKysgYi9wbGF0L2t2bS9tZW1v
cnkuYwo+PiBAQCAtMzEsOSArMzEsMjIgQEAgZXh0ZXJuIHZvaWQgKl9saWJrdm1wbGF0X2hlYXBf
c3RhcnQ7Cj4+IMKgIGV4dGVybiB2b2lkICpfbGlia3ZtcGxhdF9zdGFja190b3A7Cj4+IMKgIGV4
dGVybiB2b2lkICpfbGlia3ZtcGxhdF9tZW1fZW5kOwo+PiArZW51bSB1a3BsYXRfbWVtcmVnaW9u
cyB7Cj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9URVhULAo+PiArwqDCoMKgIFVLUExBVF9N
RU1SRUdJT05fRUhfRlJBTUUsCj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9FSF9GUkFNRV9I
RFIsCj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9ST0RBVEEsCj4+ICvCoMKgwqAgVUtQTEFU
X01FTVJFR0lPTl9DVE9SUywKPj4gK8KgwqDCoCBVS1BMQVRfTUVNUkVHSU9OX0RBVEEsCj4+ICvC
oMKgwqAgVUtQTEFUX01FTVJFR0lPTl9CU1MsCj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9I
RUFQLAo+PiArwqDCoMKgIFVLUExBVF9NRU1SRUdJT05fU1RBQ0ssCj4+ICvCoMKgwqAgVUtQTEFU
X01FTVJFR0lPTl9DT1VOVAo+PiArfTsKPj4gKwo+PiDCoCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9j
b3VudCh2b2lkKQo+PiDCoCB7Cj4+IC3CoMKgwqAgcmV0dXJuIDk7Cj4+ICvCoMKgwqAgcmV0dXJu
IFVLUExBVF9NRU1SRUdJT05fQ09VTlQ7Cj4+IMKgIH0KPj4gwqAgaW50IHVrcGxhdF9tZW1yZWdp
b25fZ2V0KGludCBpLCBzdHJ1Y3QgdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+PiBAQCAtNDMs
NyArNTYsNyBAQCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCAKPj4gdWtw
bGF0X21lbXJlZ2lvbl9kZXNjICptKQo+PiDCoMKgwqDCoMKgIFVLX0FTU0VSVChtKTsKPj4gwqDC
oMKgwqDCoCBzd2l0Y2ggKGkpIHsKPj4gLcKgwqDCoCBjYXNlIDA6IC8qIHRleHQgKi8KPj4gK8Kg
wqDCoCBjYXNlIFVLUExBVF9NRU1SRUdJT05fVEVYVDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0t
PmJhc2XCoCA9ICh2b2lkICopIF9fVEVYVDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmxlbsKg
wqAgPSAoc2l6ZV90KSBfX0VURVhUIC0gKHNpemVfdCkgX19URVhUOwo+PiDCoMKgwqDCoMKgwqDC
oMKgwqAgbS0+ZmxhZ3MgPSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4+IEBAIC01Myw3ICs2Niw3
IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IAo+PiB1a3BsYXRfbWVt
cmVnaW9uX2Rlc2MgKm0pCj4+IMKgICNlbmRpZgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g
MDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgMTogLyogZWhf
ZnJhbWUgKi8KPj4gK8KgwqDCoCBjYXNlIFVLUExBVF9NRU1SRUdJT05fRUhfRlJBTUU6Cj4+IMKg
wqDCoMKgwqDCoMKgwqDCoCBtLT5iYXNlwqAgPSAodm9pZCAqKSBfX0VIX0ZSQU1FX1NUQVJUOwo+
PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRUhfRlJBTUVfRU5E
Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLSAoc2l6ZV90KSBfX0VIX0ZS
QU1FX1NUQVJUOwo+PiBAQCAtNjQsNyArNzcsNyBAQCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQo
aW50IGksIHN0cnVjdCAKPj4gdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+PiDCoMKgwqDCoMKg
wqDCoMKgwqAgbS0+bmFtZcKgID0gImVoX2ZyYW1lIjsKPj4gwqAgI2VuZGlmCj4+IMKgwqDCoMKg
wqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoCBjYXNlIDI6IC8qIGVoX2ZyYW1lX2hkciAqLwo+
PiArwqDCoMKgIGNhc2UgVUtQTEFUX01FTVJFR0lPTl9FSF9GUkFNRV9IRFI6Cj4+IMKgwqDCoMKg
wqDCoMKgwqDCoCBtLT5iYXNlwqAgPSAodm9pZCAqKSBfX0VIX0ZSQU1FX0hEUl9TVEFSVDsKPj4g
wqDCoMKgwqDCoMKgwqDCoMKgIG0tPmxlbsKgwqAgPSAoc2l6ZV90KSBfX0VIX0ZSQU1FX0hEUl9F
TkQKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLSAoc2l6ZV90KSBfX0VIX0ZS
QU1FX0hEUl9TVEFSVDsKPj4gQEAgLTc1LDcgKzg4LDcgQEAgaW50IHVrcGxhdF9tZW1yZWdpb25f
Z2V0KGludCBpLCBzdHJ1Y3QgCj4+IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgIG0tPm5hbWXCoCA9ICJlaF9mcmFtZV9oZHIiOwo+PiDCoCAjZW5kaWYKPj4g
wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgMzogLyogcm9kYXRhICov
Cj4+ICvCoMKgwqAgY2FzZSBVS1BMQVRfTUVNUkVHSU9OX1JPREFUQToKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgIG0tPmJhc2XCoCA9ICh2b2lkICopIF9fUk9EQVRBOwo+PiDCoMKgwqDCoMKgwqDCoMKg
wqAgbS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRVJPREFUQSAtIChzaXplX3QpIF9fUk9EQVRBOwo+
PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+ZmxhZ3MgPSAoVUtQTEFUX01FTVJGX1JFU0VSVkVECj4+
IEBAIC04NSw3ICs5OCw3IEBAIGludCB1a3BsYXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0
IAo+PiB1a3BsYXRfbWVtcmVnaW9uX2Rlc2MgKm0pCj4+IMKgICNlbmRpZgo+PiDCoMKgwqDCoMKg
wqDCoMKgwqAgcmV0ID0gMDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKg
IGNhc2UgNDogLyogY3RvcnMgKi8KPj4gK8KgwqDCoCBjYXNlIFVLUExBVF9NRU1SRUdJT05fQ1RP
UlM6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5iYXNlwqAgPSAodm9pZCAqKSBfX0NUT1JTOwo+
PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRUNUT1JTIC0gKHNp
emVfdCkgX19DVE9SUzsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmZsYWdzID0gKFVLUExBVF9N
RU1SRl9SRVNFUlZFRAo+PiBAQCAtOTUsNyArMTA4LDcgQEAgaW50IHVrcGxhdF9tZW1yZWdpb25f
Z2V0KGludCBpLCBzdHJ1Y3QgCj4+IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPj4gwqAgI2Vu
ZGlmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAwOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg
YnJlYWs7Cj4+IC3CoMKgwqAgY2FzZSA1OiAvKiBkYXRhICovCj4+ICvCoMKgwqAgY2FzZSBVS1BM
QVRfTUVNUkVHSU9OX0RBVEE6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5iYXNlwqAgPSAodm9p
ZCAqKSBfX0RBVEE7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5sZW7CoMKgID0gKHNpemVfdCkg
X19FREFUQSAtIChzaXplX3QpIF9fREFUQTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmZsYWdz
ID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+PiBAQCAtMTA2LDcgKzExOSw3IEBAIGludCB1a3Bs
YXRfbWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IAo+PiB1a3BsYXRfbWVtcmVnaW9uX2Rlc2Mg
Km0pCj4+IMKgICNlbmRpZgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gMDsKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgNjogLyogYnNzICovCj4+ICvCoMKg
wqAgY2FzZSBVS1BMQVRfTUVNUkVHSU9OX0JTUzoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmJh
c2XCoCA9ICh2b2lkICopIF9fQlNTX1NUQVJUOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVu
wqDCoCA9IChzaXplX3QpIF9fRU5EIC0gKHNpemVfdCkgX19CU1NfU1RBUlQ7Cj4+IMKgwqDCoMKg
wqDCoMKgwqDCoCBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKPj4gQEAgLTExNyw3
ICsxMzAsNyBAQCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCAKPj4gdWtw
bGF0X21lbXJlZ2lvbl9kZXNjICptKQo+PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDCoMKgwqDCoMKg
IHJldCA9IDA7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoCBjYXNlIDc6
IC8qIGhlYXAgKi8KPj4gK8KgwqDCoCBjYXNlIFVLUExBVF9NRU1SRUdJT05fSEVBUDoKPj4gwqDC
oMKgwqDCoMKgwqDCoMKgIG0tPmJhc2XCoCA9IF9saWJrdm1wbGF0X2hlYXBfc3RhcnQ7Cj4+IMKg
wqDCoMKgwqDCoMKgwqDCoCBtLT5sZW7CoMKgID0gKHNpemVfdCkgX2xpYmt2bXBsYXRfc3RhY2tf
dG9wCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0gKHNpemVfdCkgX2xpYmt2
bXBsYXRfaGVhcF9zdGFydDsKPj4gQEAgLTEyNyw3ICsxNDAsNyBAQCBpbnQgdWtwbGF0X21lbXJl
Z2lvbl9nZXQoaW50IGksIHN0cnVjdCAKPj4gdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+PiDC
oCAjZW5kaWYKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IDA7Cj4+IMKgwqDCoMKgwqDCoMKg
wqDCoCBicmVhazsKPj4gLcKgwqDCoCBjYXNlIDg6IC8qIHN0YWNrICovCj4+ICvCoMKgwqAgY2Fz
ZSBVS1BMQVRfTUVNUkVHSU9OX1NUQUNLOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+YmFzZcKg
ID0gX2xpYmt2bXBsYXRfc3RhY2tfdG9wOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVuwqDC
oCA9IChzaXplX3QpIF9saWJrdm1wbGF0X21lbV9lbmQKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgLSAoc2l6ZV90KSBfbGlia3ZtcGxhdF9zdGFja190b3A7Cj4+IGRpZmYgLS1n
aXQgYS9wbGF0L3hlbi9tZW1vcnkuYyBiL3BsYXQveGVuL21lbW9yeS5jCj4+IGluZGV4IGNiMWMz
NTUyYTBkOS4uZDQ3NzU0NGIyOWRmIDEwMDY0NAo+PiAtLS0gYS9wbGF0L3hlbi9tZW1vcnkuYwo+
PiArKysgYi9wbGF0L3hlbi9tZW1vcnkuYwo+PiBAQCAtNDUsOSArNDUsMjAgQEAKPj4gwqAgI2lu
Y2x1ZGUgPHVrL2Fzc2VydC5oPgo+PiArZW51bSB1a3BsYXRfbWVtcmVnaW9ucyB7Cj4+ICvCoMKg
wqAgVUtQTEFUX01FTVJFR0lPTl9URVhULAo+PiArwqDCoMKgIFVLUExBVF9NRU1SRUdJT05fRUhf
RlJBTUUsCj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9FSF9GUkFNRV9IRFIsCj4+ICvCoMKg
wqAgVUtQTEFUX01FTVJFR0lPTl9ST0RBVEEsCj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9D
VE9SUywKPj4gK8KgwqDCoCBVS1BMQVRfTUVNUkVHSU9OX0RBVEEsCj4+ICvCoMKgwqAgVUtQTEFU
X01FTVJFR0lPTl9CU1MsCj4+ICvCoMKgwqAgVUtQTEFUX01FTVJFR0lPTl9DT1VOVAo+PiArfTsK
Pj4gKwo+PiDCoCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9jb3VudCh2b2lkKQo+PiDCoCB7Cj4+IC3C
oMKgwqAgcmV0dXJuIChpbnQpIF9saWJ4ZW5wbGF0X21yZF9udW0gKyA3Owo+PiArwqDCoMKgIHJl
dHVybiAoaW50KSBfbGlieGVucGxhdF9tcmRfbnVtICsgVUtQTEFUX01FTVJFR0lPTl9DT1VOVDsK
Pj4gwqAgfQo+PiDCoCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCB1a3Bs
YXRfbWVtcmVnaW9uX2Rlc2MgKm0pCj4+IEBAIC01Niw3ICs2Nyw3IEBAIGludCB1a3BsYXRfbWVt
cmVnaW9uX2dldChpbnQgaSwgc3RydWN0IAo+PiB1a3BsYXRfbWVtcmVnaW9uX2Rlc2MgKm0pCj4+
IMKgwqDCoMKgwqAgVUtfQVNTRVJUKG0pOwo+PiDCoMKgwqDCoMKgIHN3aXRjaCAoaSkgewo+PiAt
wqDCoMKgIGNhc2UgMDogLyogdGV4dCAqLwo+PiArwqDCoMKgIGNhc2UgVUtQTEFUX01FTVJFR0lP
Tl9URVhUOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+YmFzZcKgID0gKHZvaWQgKikgX19URVhU
Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRVRFWFQgLSAo
c2l6ZV90KSBfX1RFWFQ7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5mbGFncyA9IChVS1BMQVRf
TUVNUkZfUkVTRVJWRUQKPj4gQEAgLTY1LDcgKzc2LDcgQEAgaW50IHVrcGxhdF9tZW1yZWdpb25f
Z2V0KGludCBpLCBzdHJ1Y3QgCj4+IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgIG0tPm5hbWXCoCA9ICJ0ZXh0IjsKPj4gwqAgI2VuZGlmCj4+IMKgwqDCoMKg
wqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoCBjYXNlIDE6IC8qIGVoX2ZyYW1lICovCj4+ICvC
oMKgwqAgY2FzZSBVS1BMQVRfTUVNUkVHSU9OX0VIX0ZSQU1FOgo+PiDCoMKgwqDCoMKgwqDCoMKg
wqAgbS0+YmFzZcKgID0gKHZvaWQgKikgX19FSF9GUkFNRV9TVEFSVDsKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgIG0tPmxlbsKgwqAgPSAoc2l6ZV90KSBfX0VIX0ZSQU1FX0VORAo+PiDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0gKHNpemVfdCkgX19FSF9GUkFNRV9TVEFSVDsKPj4g
QEAgLTc1LDcgKzg2LDcgQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3Qg
Cj4+IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPm5h
bWXCoCA9ICJlaF9mcmFtZSI7Cj4+IMKgICNlbmRpZgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl
YWs7Cj4+IC3CoMKgwqAgY2FzZSAyOiAvKiBlaF9mcmFtZV9oZHIgKi8KPj4gK8KgwqDCoCBjYXNl
IFVLUExBVF9NRU1SRUdJT05fRUhfRlJBTUVfSERSOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+
YmFzZcKgID0gKHZvaWQgKikgX19FSF9GUkFNRV9IRFJfU1RBUlQ7Cj4+IMKgwqDCoMKgwqDCoMKg
wqDCoCBtLT5sZW7CoMKgID0gKHNpemVfdCkgX19FSF9GUkFNRV9IRFJfRU5ECj4+IMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLSAoc2l6ZV90KSBfX0VIX0ZSQU1FX0hEUl9TVEFS
VDsKPj4gQEAgLTg1LDcgKzk2LDcgQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBz
dHJ1Y3QgCj4+IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg
IG0tPm5hbWXCoCA9ICJlaF9mcmFtZV9oZHIiOwo+PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgMzrCoMKgwqAgLyogcm8gZGF0YSAqLwo+PiAr
wqDCoMKgIGNhc2UgVUtQTEFUX01FTVJFR0lPTl9ST0RBVEE6Cj4+IMKgwqDCoMKgwqDCoMKgwqDC
oCBtLT5iYXNlwqAgPSAodm9pZCAqKSBfX1JPREFUQTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0t
PmxlbsKgwqAgPSAoc2l6ZV90KSBfX0VST0RBVEEgLSAoc2l6ZV90KSBfX1JPREFUQTsKPj4gwqDC
oMKgwqDCoMKgwqDCoMKgIG0tPmZsYWdzID0gKFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+PiBAQCAt
OTQsNyArMTA1LDcgQEAgaW50IHVrcGxhdF9tZW1yZWdpb25fZ2V0KGludCBpLCBzdHJ1Y3QgCj4+
IHVrcGxhdF9tZW1yZWdpb25fZGVzYyAqbSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPm5hbWXC
oCA9ICJyb2RhdGEiOwo+PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+
PiAtwqDCoMKgIGNhc2UgNDogLyogY3RvcnMgKi8KPj4gK8KgwqDCoCBjYXNlIFVLUExBVF9NRU1S
RUdJT05fQ1RPUlM6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5iYXNlwqAgPSAodm9pZCAqKSBf
X0NUT1JTOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRUNU
T1JTIC0gKHNpemVfdCkgX19DVE9SUzsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmZsYWdzID0g
KFVLUExBVF9NRU1SRl9SRVNFUlZFRAo+PiBAQCAtMTAzLDcgKzExNCw3IEBAIGludCB1a3BsYXRf
bWVtcmVnaW9uX2dldChpbnQgaSwgc3RydWN0IAo+PiB1a3BsYXRfbWVtcmVnaW9uX2Rlc2MgKm0p
Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5uYW1lwqAgPSAiY3RvcnMiOwo+PiDCoCAjZW5kaWYK
Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAtwqDCoMKgIGNhc2UgNTogLyogZGF0YSAq
Lwo+PiArwqDCoMKgIGNhc2UgVUtQTEFUX01FTVJFR0lPTl9EQVRBOgo+PiDCoMKgwqDCoMKgwqDC
oMKgwqAgbS0+YmFzZcKgID0gKHZvaWQgKikgX19EQVRBOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg
bS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRURBVEEgLSAoc2l6ZV90KSBfX0RBVEE7Cj4+IMKgwqDC
oMKgwqDCoMKgwqDCoCBtLT5mbGFncyA9IChVS1BMQVRfTUVNUkZfUkVTRVJWRUQKPj4gQEAgLTEx
Myw3ICsxMjQsNyBAQCBpbnQgdWtwbGF0X21lbXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCAKPj4g
dWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bmFtZcKg
ID0gImRhdGEiOwo+PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAt
wqDCoMKgIGNhc2UgNjogLyogYnNzICovCj4+ICvCoMKgwqAgY2FzZSBVS1BMQVRfTUVNUkVHSU9O
X0JTUzoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG0tPmJhc2XCoCA9ICh2b2lkICopIF9fQlNTX1NU
QVJUOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbS0+bGVuwqDCoCA9IChzaXplX3QpIF9fRU5EIC0g
KHNpemVfdCkgX19CU1NfU1RBUlQ7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtLT5mbGFncyA9IChV
S1BMQVRfTUVNUkZfUkVTRVJWRUQKPj4gQEAgLTEzMyw3ICsxNDQsOCBAQCBpbnQgdWtwbGF0X21l
bXJlZ2lvbl9nZXQoaW50IGksIHN0cnVjdCAKPj4gdWtwbGF0X21lbXJlZ2lvbl9kZXNjICptKQo+
PiDCoCAjZW5kaWYKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC0xOwo+PiDC
oMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVt
Y3B5KG0sICZfbGlieGVucGxhdF9tcmRbaSAtIDddLCBzaXplb2YoKm0pKTsKPj4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgbWVtY3B5KG0sICZfbGlieGVucGxhdF9tcmRbaSAtIFVLUExBVF9NRU1S
RUdJT05fQ09VTlRdLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZigq
bSkpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7
Cj4+IMKgwqDCoMKgwqAgfQo+Pgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 11 19:34:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Jun 2019 19:34: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 1hamX4-0003bz-Ev; Tue, 11 Jun 2019 19:34:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ErXN=UK=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hamX3-0003bu-Rw
 for minios-devel@lists.xen.org; Tue, 11 Jun 2019 19:34:09 +0000
X-Inumbo-ID: deebcaf2-8c7f-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id deebcaf2-8c7f-11e9-8980-bc764e045a96;
 Tue, 11 Jun 2019 19:34:04 +0000 (UTC)
IronPort-SDR: rVxeibfnjJjVVpyYL+6dzPqvH2na+AU7upq3niGWs/KFDaOx8hUKIKX6d2i+zEJ8JCokAB9W1Y
 RqWuGpPZVb0w==
IronPort-PHdr: =?us-ascii?q?9a23=3A1rh5LBQ7bS0sNnvZyK20M3L/3Npsv+yvbD5Q0Y?=
 =?us-ascii?q?Iujvd0So/mwa6zYxGN2/xhgRfzUJnB7Loc0qyK6vmmADFdqs/b6DgrS99lb1?=
 =?us-ascii?q?c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUh?=
 =?us-ascii?q?rwOhBoKevrB4Xck9q41/yo+53Ufg5EmCexbal9IRmrsAndrNQajItiJ6o+1x?=
 =?us-ascii?q?fFvGdEcPlKyG11Il6egwzy7dqq8p559CRQtfMh98peXqj/Yq81U79WAik4Pm?=
 =?us-ascii?q?4s/MHkugXNQgWJ5nsHT2UZiQFIDBTf7BH7RZj+rC33vfdg1SaAPM32Sbc0WS?=
 =?us-ascii?q?m+76puVRTlhjsLOyI//WrKjMF7kaBVrw+7pxFnw4DafpybOvR9cK3aZt4WWX?=
 =?us-ascii?q?ZNU9xNWyFbHo+wc40CBPcBM+ZCqIn9okMDoAW5BQm3GOPvyzlIjWLw060ny+?=
 =?us-ascii?q?QhDBzN0Qs8ENIJq3TUsNT1NKEIXeCx0anI1SjDYuhK1jfm8oTIag0hruqWUb?=
 =?us-ascii?q?Jqdsrc0E8iHB7LgFWXrIzqJTKV1uIVvmif8uVgTviji3U8pAx3vzOhxd8sh5?=
 =?us-ascii?q?HUio8a11zI7yZ0zYYvKdGmVkJ2Y8SoHZVIuy2HOIZ6X9kuTmJotSog1LELt5?=
 =?us-ascii?q?C2cDIXxJko2RLSbeGMfZKS7RL5TumRJC91hHdieL2imRm/6VOgyujgVsms11?=
 =?us-ascii?q?ZKszZFnsHMtn8T0xzT7dCKSuV4/ki72DaP0xrf5f1fIUwujarbNoUuzqQqlp?=
 =?us-ascii?q?oUqUjDHyn2l1vqjKKOa0kp9fWk5/7kb7jmvJOQKZF4hwPkPqkggsC/BP43Mg?=
 =?us-ascii?q?kKX2iV4+S807jj8FXlT7VNlf02jqjZsJbAKcQfu665GxJV350/5BakFTumyM?=
 =?us-ascii?q?kYkmIdIFJffxKLl5LpNE3WIPDkEfe/hEyhkDJqx/DAP73hBY7NImHen7j/Y7?=
 =?us-ascii?q?Zy9UpcxRE3zdBe/JJUFqoBLOj8W0DvstzUFBg5Mxa7w+z/EtVyypseWX6TAq?=
 =?us-ascii?q?+eKK7Sv0GH5uYuI+mUeoAZojb9K+Uk5/HyjH80glkdcre10psTcn+3Be5qLF?=
 =?us-ascii?q?uEYXD0mNcODX8KvhYiTOztkFCCSj5TaGyoX60m4DE3EpmmAp3FRoCxgLyOxi?=
 =?us-ascii?q?G7EYdTZm1dDFCDD2vnd4GeVPgXci6dPNJhmCQeVbe9U48hyQ2utAjixrp8L+?=
 =?us-ascii?q?rU/yoYtZT52Nh2+u3cixcy9D1qAMSHyGyNSX97kX8MRzAsx69zu1JyykrQmZ?=
 =?us-ascii?q?R/1vlZE91U/LZFXxk3MbbYzvdmEJbiVwSHec2GG3i8RdDzKjYqUtM3i/sTe1?=
 =?us-ascii?q?s1T96llQzC2WyuHqcIv7eQQoQp+OTG2C6idI5G13/a2fx53BEdScxVODj+iw?=
 =?us-ascii?q?=3D=3D?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2AUBwBYAQBd/wPjVY1mHgEGBwaBZYF?=
 =?us-ascii?q?ngRRSAQEwKI0QjQKXd4FnCQEBASkRAQIBAYFLgnWDIzgTAQMBAQUBAQEBBAF?=
 =?us-ascii?q?sHAyCOiKDbk+BAoJXSwGCDqsFhUeDJYFGgTSHBoM5gnU/gRGCXQdshAkUhgk?=
 =?us-ascii?q?EizhEhzyBE5RmBwKCEloEhWeEV4NwhC0nglQ6lBMBLaR/NyGBWDMac4JsCYF?=
 =?us-ascii?q?bATYXFIszglw8AQExgQYBAY0KglIBAQ?=
X-IPAS-Result: =?us-ascii?q?A2AUBwBYAQBd/wPjVY1mHgEGBwaBZYFngRRSAQEwKI0Qj?=
 =?us-ascii?q?QKXd4FnCQEBASkRAQIBAYFLgnWDIzgTAQMBAQUBAQEBBAFsHAyCOiKDbk+BA?=
 =?us-ascii?q?oJXSwGCDqsFhUeDJYFGgTSHBoM5gnU/gRGCXQdshAkUhgkEizhEhzyBE5RmB?=
 =?us-ascii?q?wKCEloEhWeEV4NwhC0nglQ6lBMBLaR/NyGBWDMac4JsCYFbATYXFIszglw8A?=
 =?us-ascii?q?QExgQYBAY0KglIBAQ?=
X-IronPort-AV: E=Sophos;i="5.63,362,1557176400"; 
   d="scan'208";a="3504746"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 11 Jun 2019 22:34:02 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 9EC221A6018A;
 Tue, 11 Jun 2019 22:34:04 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id JO9OXnmnC7dB; Tue, 11 Jun 2019 22:34:04 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 82E511A60199;
 Tue, 11 Jun 2019 22:34:04 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id mTM8LW57wzPh; Tue, 11 Jun 2019 22:34:04 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 6D06C1A6018A;
 Tue, 11 Jun 2019 22:34:04 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Tue, 11 Jun 2019 22:33:43 +0300
Message-Id: <20190611193343.5679-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Fix current thread
 retrieval in interrupt context on x86_64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

Q29tbWl0IDAxN2ZmZmQ1IGludHJvZHVjZWQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgY3VycmVu
dCB0aHJlYWQgcG9pbnRlciBvbiB0b3AKb2YgaW50ZXJydXB0IHN0YWNrcyBpbiBvcmRlciB0byBy
ZXRyaWV2ZSB0aGUgY3VycmVudCB0aHJlYWQgaW4gaW50ZXJydXB0IGNvbnRleHQKYXMgd2VsbC4g
VW5mb3J0dW5hdGVseSwgdGhlIHdyb25nIHN0YWNrIHdhcyBwaWNrZWQgZm9yIEtWTSBwbGF0Zm9y
bS4gVGhpcyBwYXRjaApmaXhlcyB0aGF0IGFuZCBzZXRzIHRoZSB0aHJlYWQgb24gY3B1X2ludHJf
c3RhY2sgaW5zdGVhZC4KCmNwdV9pbnRyX3N0YWNrIHdhcyByZXNpemVkIHRvIFNUQUNLX1NJWkUg
YmVjYXVzZSB0aGlzIGlzIGEgbWFuZGF0b3J5IGNvbmRpdGlvbgp3aGVuIHNhdmluZyB0aHJlYWRz
IG9uIHRvcC4gSG93ZXZlciwgZ2l2ZW4gdGhhdCBpdCBhbHNvIG5lZWRzIGEgU1RBQ0tfU0laRQph
bGlnbm1lbnQsIGEgbmV3IHNlY3Rpb24gd2FzIGNyZWF0ZWQgZm9yIGl0LCAuaW50cnN0YWNrLCBp
biBvcmRlciB0byBhdm9pZApicmVha2luZyB0aGUgZW50aXJlIGJpbmFyeSBpbWFnZSBsYXlvdXQu
IFdpdGhvdXQgdGhpcyBuZXcgc2VjdGlvbiwgdGhlIGVudGlyZQoudGV4dCBzZWN0aW9uIHdvdWxk
IGhhdmUgYSBTVEFDS19TSVpFIGFsaWdubWVudCAoaS5lLiA2NEtCKSBhbmQgdGhpcyB3b3VsZCBp
bXBseQp0aGF0IHRoZSBtdWx0aWJvb3QgaGVhZGVyLCB3aGljaCBpcyBpbmNsdWRlZCBpbiAudGV4
dCBzZWN0aW9uLCB3b3VsZCBhbHNvIGJlCm1vdmVkIGF0IGFuIGFkZHJlc3MgaGlnaGVyIHRoYW4g
U1RBQ0tfU0laRSwgZXZlbiB0aG91Z2ggaXQgbXVzdCBzdGF5IGluIHRoZQpmaXJzdCA4S0Igb2Yg
dGhlIGJpbmFyeS4KClNpZ25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5w
dWIucm8+Ci0tLQogcGxhdC9rdm0vTWFrZWZpbGUudWsgICAgICB8ICAxICsKIHBsYXQva3ZtL21l
bW9yeS5jICAgICAgICAgfCAgNiAtLS0tLS0KIHBsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMgfCAx
MCArKysrKysrKysrCiBwbGF0L2t2bS94ODYvbWVtb3J5LmMgICAgIHwgNDQgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQva3ZtL3g4Ni90cmFwcy5jICAg
ICAgfCAgNSArKysrLQogNSBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCA3IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQva3ZtL3g4Ni9tZW1vcnkuYwoKZGlmZiAt
LWdpdCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKaW5kZXgg
NzFjNGM0MTkuLjhlYjE2MmQ0IDEwMDY0NAotLS0gYS9wbGF0L2t2bS9NYWtlZmlsZS51aworKysg
Yi9wbGF0L2t2bS9NYWtlZmlsZS51awpAQCAtNDYsNiArNDYsNyBAQCBMSUJLVk1QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS94ODYvbGNwdS5jCiBM
SUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9ICQoTElCS1ZNUExBVF9CQVNF
KS94ODYvaW50Y3RybC5jCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9
ICQoTElCS1ZNUExBVF9CQVNFKS94ODYvdHNjY2xvY2suYwogTElCS1ZNUExBVF9TUkNTLSQoQ09O
RklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkveDg2L3RpbWUuYworTElCS1ZN
UExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkveDg2
L21lbW9yeS5jfHg4NgogaWZlcSAoJChmaW5kc3RyaW5nIHksJChDT05GSUdfS1ZNX0tFUk5FTF9W
R0FfQ09OU09MRSkgJChDT05GSUdfS1ZNX0RFQlVHX1ZHQV9DT05TT0xFKSkseSkKIExJQktWTVBM
QVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL3g4Ni92
Z2FfY29uc29sZS5jCiBlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vbWVtb3J5LmMgYi9wbGF0
L2t2bS9tZW1vcnkuYwppbmRleCBlOTZiYWQyYy4uN2YyZmI0NmEgMTAwNjQ0Ci0tLSBhL3BsYXQv
a3ZtL21lbW9yeS5jCisrKyBiL3BsYXQva3ZtL21lbW9yeS5jCkBAIC0xNzgsOSArMTc4LDMgQEAg
aW50IF91a3BsYXRfbWVtX21hcHBpbmdzX2luaXQodm9pZCkKIHsKIAlyZXR1cm4gMDsKIH0KLQot
dm9pZCB1a3BsYXRfc3RhY2tfc2V0X2N1cnJlbnRfdGhyZWFkKHZvaWQgKnRocmVhZF9hZGRyKQot
ewotCSooKHVuc2lnbmVkIGxvbmcgKikgX2xpYmt2bXBsYXRfY2ZnLmJzdGFjay5lbmQpID0KLQkJ
KHVuc2lnbmVkIGxvbmcpIHRocmVhZF9hZGRyOwotfQpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2
L2xpbms2NC5sZHMuUyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKaW5kZXggMzYyYmEzZTYu
LjYxMDNmYzJkIDEwMDY0NAotLS0gYS9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCisrKyBiL3Bs
YXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKQEAgLTk5LDYgKzk5LDE2IEBAIFNFQ1RJT05TCiAJCS4g
PSBBTElHTihfX1BBR0VfU0laRSk7CiAJfQogCisJLyogV2Uga2VlcCB0aGUgaW50ZXJydXB0IHN0
YWNrIG9uIGEgZGlmZmVyZW50IHNlY3Rpb24KKwkgKiBnaXZlbiB0aGF0IGl0IG1heSBoYXZlIGEg
YmlnIGFsaWdubWVudCBhbmQgaXQgd291bGQKKwkgKiBjaGFuZ2UgdGhlIGVudGlyZSBiaW5hcnkg
bGF5b3V0CisJICovCisJLmludHJzdGFjayA6CisJeworCQkqKC5pbnRyc3RhY2spCisJCS4gPSBB
TElHTihfX1BBR0VfU0laRSk7CisJfQorCiAJX2VuZCA9IC47CiAKIAkuY29tbWVudCAgICAgICAw
IDogeyAqKC5jb21tZW50KSB9CmRpZmYgLS1naXQgYS9wbGF0L2t2bS94ODYvbWVtb3J5LmMgYi9w
bGF0L2t2bS94ODYvbWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu
LmI4YzdjN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9rdm0veDg2L21lbW9yeS5jCkBAIC0w
LDAgKzEsNDQgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
Ky8qCisgKiBBdXRob3JzOiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgorICoK
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJl
c3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBF
WFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaW5jbHVkZSA8dWsvcGxh
dC9tZW1vcnkuaD4KKworCitleHRlcm4gY2hhciBjcHVfaW50cl9zdGFja1tdOworCit2b2lkIHVr
cGxhdF9zdGFja19zZXRfY3VycmVudF90aHJlYWQodm9pZCAqdGhyZWFkX2FkZHIpCit7CisJKigo
dW5zaWduZWQgbG9uZyAqKSBjcHVfaW50cl9zdGFjaykgPQorCQkodW5zaWduZWQgbG9uZykgdGhy
ZWFkX2FkZHI7Cit9CmRpZmYgLS1naXQgYS9wbGF0L2t2bS94ODYvdHJhcHMuYyBiL3BsYXQva3Zt
L3g4Ni90cmFwcy5jCmluZGV4IDI3ZWY2ZDkzLi5mZTFkZDVhNCAxMDA2NDQKLS0tIGEvcGxhdC9r
dm0veDg2L3RyYXBzLmMKKysrIGIvcGxhdC9rdm0veDg2L3RyYXBzLmMKQEAgLTI1LDcgKzI1LDkg
QEAKICAqLwogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5o
PgogI2luY2x1ZGUgPHVrL2FyY2gvbGNwdS5oPgorI2luY2x1ZGUgPHVrL3BsYXQvY29uZmlnLmg+
CiAjaW5jbHVkZSA8eDg2L2Rlc2MuaD4KICNpbmNsdWRlIDxrdm0teDg2L3RyYXBzLmg+CiAKQEAg
LTU5LDcgKzYxLDggQEAgc3RhdGljIHZvaWQgZ2R0X2luaXQodm9pZCkKIAogc3RhdGljIHN0cnVj
dCB0c3M2NCBjcHVfdHNzOwogCi1zdGF0aWMgY2hhciBjcHVfaW50cl9zdGFja1s0MDk2XTsgLyog
SVNUMSAqLworIF9fc2VjdGlvbigiLmludHJzdGFjayIpICBfX2FsaWduKFNUQUNLX1NJWkUpCitj
aGFyIGNwdV9pbnRyX3N0YWNrW1NUQUNLX1NJWkVdOyAgLyogSVNUMSAqLwogc3RhdGljIGNoYXIg
Y3B1X3RyYXBfc3RhY2tbNDA5Nl07IC8qIElTVDIgKi8KIHN0YXRpYyBjaGFyIGNwdV9ubWlfc3Rh
Y2tbNDA5Nl07ICAvKiBJU1QzICovCiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 10:22:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 10:22:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hb0PA-00011s-0Z; Wed, 12 Jun 2019 10:22:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XIHl=UL=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hb0P8-00011h-Eh
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 10:22:54 +0000
X-Inumbo-ID: 08f2eaa0-8cfc-11e9-8980-bc764e045a96
Received: from mail-oi1-x241.google.com (unknown [2607:f8b0:4864:20::241])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 08f2eaa0-8cfc-11e9-8980-bc764e045a96;
 Wed, 12 Jun 2019 10:22:52 +0000 (UTC)
Received: by mail-oi1-x241.google.com with SMTP id q186so11289327oia.0
 for <minios-devel@lists.xen.org>; Wed, 12 Jun 2019 03:22: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=ZNswJO7ZXtDh6fLrLq3niaWSoZFwDF64TqhEsWOYNiQ=;
 b=sxkg7AS9QHfKq3857/G3/1gjIqEynTMmEQiQtz8SMp0HNoVm0WEc66kpgxkthWqbvn
 939m0K7TZyIcVNQAlKKmg5CdFLrDE91g7YvGol+yKAdoYsiEuaWQdRpLuo/ydevtrY3m
 jydAYHQh5sbsIyyoKnGS8ihA+W0S0YjddLsVYjvMFVvjzTcuDB1aDL/4OrwrrdsxCToY
 Aejl1KglwmuflvJqF+nbrIGYaRz7YzfJC0o0dpv/7wlkc/3IS+xZt6EGpht34P9zIhEV
 nzH5FEsvYeuA80orZ4HrfOQ8m8+F9DWGwwgwEEGkTwgPBleDdsfI54fv0gckf4oXO7xK
 dj+Q==
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=ZNswJO7ZXtDh6fLrLq3niaWSoZFwDF64TqhEsWOYNiQ=;
 b=dLR+be1OXV4mXu1ZAKqPleYBCgk/X6bjA/OCHNUS0pwp3vJJnqiNEG2q/yC0IG8YFk
 /zicVOV8KwtH4lx9Mhngv/wJb+irhgpOi9X4iHDSIKOStC53o9K1q6Tidp0AYmy5QQKe
 kHwf+7K0hU4JbVgoBaT18M6Xqro79xCaktihX8z4vOkWV0S20JhKxEKV+9oNdYKWLNSW
 yBNA6WfFe/K4IqLMki6+3RQ34QvffMvWJ9viH9FvOuV+jchSY4UeUpVJxH1oRifK73ug
 b0WEcgVoYnA5zywr8gMM63/bSELeNAr45XTTScUESu0RuLksTA9SxqCuqMCgzqoe5tu0
 DlJQ==
X-Gm-Message-State: APjAAAVDLDHq8i/6Gupy5R2iY/d571mmQUFWXhi2Yw0aaiseUeKYP5zn
 yIwYT0ydNHxfDFSnvWqCSNFB5iAVvrqeTGnatb5j1KWh0Y3wdA==
X-Google-Smtp-Source: APXvYqz4gUGvZ+0L8g/Y75f2uRQ4Ulbi5mw5zGFG5Vopoda3Q3OmXeb2hg12Jr6lc4WLLqpC3ScR5LXnaNUvcEIUhdg=
X-Received: by 2002:aca:5050:: with SMTP id e77mr12736937oib.52.1560334971678; 
 Wed, 12 Jun 2019 03:22:51 -0700 (PDT)
MIME-Version: 1.0
References: <20190603074420.12819-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-1-nicolescu.roxana1996@gmail.com>
 <20190603074545.13707-12-nicolescu.roxana1996@gmail.com>
In-Reply-To: <20190603074545.13707-12-nicolescu.roxana1996@gmail.com>
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
Date: Wed, 12 Jun 2019 13:22:40 +0300
Message-ID: <CAJ5aZktLME7kwSM5OVCN4wdgvaMo67n0zDX-RRhPatOP1fiy3w@mail.gmail.com>
To: minios-devel@lists.xen.org
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 12/12] plat/drivers: Add rest of
 the interface for virtio block
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan Santhanam <sharan.santhanam@neclab.eu>
Content-Type: multipart/mixed; boundary="===============6713535952992285770=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============6713535952992285770==
Content-Type: multipart/alternative; boundary="000000000000b7b58f058b1dcbc2"

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

I mistyped the author of this patch. I will correct it in the v2 of the
series.


Roxana

On Mon, Jun 3, 2019 at 10:46 AM Roxana Nicolescu <
nicolescu.roxana1996@gmail.com> wrote:

> This patch adds the rest of the interface for virtio block device
> which is found in the specs.
> Note: For now, it is not used in the implementation of the virtio driver.
>
> Signed-off-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
> ---
>  plat/drivers/include/virtio/virtio_blk.h | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/plat/drivers/include/virtio/virtio_blk.h
> b/plat/drivers/include/virtio/virtio_blk.h
> index 1b8dffd3..191cc91f 100644
> --- a/plat/drivers/include/virtio/virtio_blk.h
> +++ b/plat/drivers/include/virtio/virtio_blk.h
> @@ -28,16 +28,24 @@
>  #define VIRTIO_BLK_F_SIZE_MAX  1
>  /* Maximum number of segments in a request is in seg_max. */
>  #define VIRTIO_BLK_F_SEG_MAX   2
> +/* Disk-style geometry specified in geometry */
> +#define VIRTIO_BLK_F_GEOMETRY  4
>  /* Device is read-only. */
>  #define VIRTIO_BLK_F_RO                5
>  /* Block size of disk is in blk_size. */
>  #define VIRTIO_BLK_F_BLK_SIZE  6
>  /* Cache flush command support. */
>  #define VIRTIO_BLK_F_FLUSH     9
> +/* Device exports information on optimal I/O alignment. */
> +#define VIRTIO_BLK_F_TOPOLOGY  10
>  /* Device can toggle its cache between writeback and writethrough modes.
> */
>  #define VIRTIO_BLK_F_CONFIG_WCE 11
>  /* Device supports multi-queues */
>  #define VIRTIO_BLK_F_MQ                12
> +/* Device supports request barriers. */
> +#define VIRTIO_BLK_F_BARRIER   0
> +/* Device supports scsi packet commands. */
> +#define VIRTIO_BLK_F_SCSI      7
>
>  /* Response status */
>  #define VIRTIO_BLK_S_OK                0
> @@ -51,8 +59,25 @@ struct virtio_blk_config {
>         __u32 size_max;
>         /* Maximum size of a segment */
>         __u32 seg_max;
> +       /* Geometry */
> +       struct virtio_blk_geometry {
> +               __u16 cylinders;
> +               __u8 heads;
> +               __u8 sectors;
> +       } geometry;
>         /* Block size */
>         __u32 blk_size;
> +       /* Topology */
> +       struct virtio_blk_topology {
> +               /* of logical blocks per physical block (log2) */
> +               __u8 physical_block_exp;
> +               /* offset of first aligned logical block */
> +               __u8 alignment_offset;
> +               /* suggested minimum I/O size in blocks */
> +               __u16 min_io_size;
> +               /* optimal (suggested maximum) I/O size in blocks */
> +               __u32 opt_io_size;
> +       } topology;
>         /* It is set if backend has writeback cache,
>          * otherwise it has writethrough cache.
>          **/
> --
> 2.11.0
>
>

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

<div dir=3D"ltr"><span id=3D"gmail-docs-internal-guid-2c6152e4-7fff-3e22-43=
fc-fa9f7b9bdb34" style=3D"font-size:16px;white-space:pre-wrap"><p style=3D"=
line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color=3D"#152935" =
face=3D"Arial">I mistyped the author of this patch. I will correct it in th=
e v2 of the series.</font></p><p style=3D"line-height:1.38;margin-top:0pt;m=
argin-bottom:0pt"><font color=3D"#152935" face=3D"Arial"><br></font></p><p =
style=3D"line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font color=3D"=
#152935" face=3D"Arial">Roxana</font></p></span></div><br><div class=3D"gma=
il_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Jun 3, 2019 at 10:4=
6 AM Roxana Nicolescu &lt;<a href=3D"mailto:nicolescu.roxana1996@gmail.com"=
>nicolescu.roxana1996@gmail.com</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">This patch adds the rest of the interface =
for virtio block device<br>
which is found in the specs.<br>
Note: For now, it is not used in the implementation of the virtio driver.<b=
r>
<br>
Signed-off-by: Sharan Santhanam &lt;<a href=3D"mailto:sharan.santhanam@necl=
ab.eu" target=3D"_blank">sharan.santhanam@neclab.eu</a>&gt;<br>
---<br>
=C2=A0plat/drivers/include/virtio/virtio_blk.h | 25 +++++++++++++++++++++++=
++<br>
=C2=A01 file changed, 25 insertions(+)<br>
<br>
diff --git a/plat/drivers/include/virtio/virtio_blk.h b/plat/drivers/includ=
e/virtio/virtio_blk.h<br>
index 1b8dffd3..191cc91f 100644<br>
--- a/plat/drivers/include/virtio/virtio_blk.h<br>
+++ b/plat/drivers/include/virtio/virtio_blk.h<br>
@@ -28,16 +28,24 @@<br>
=C2=A0#define VIRTIO_BLK_F_SIZE_MAX=C2=A0 1<br>
=C2=A0/* Maximum number of segments in a request is in seg_max. */<br>
=C2=A0#define VIRTIO_BLK_F_SEG_MAX=C2=A0 =C2=A02<br>
+/* Disk-style geometry specified in geometry */<br>
+#define VIRTIO_BLK_F_GEOMETRY=C2=A0 4<br>
=C2=A0/* Device is read-only. */<br>
=C2=A0#define VIRTIO_BLK_F_RO=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 5<br>
=C2=A0/* Block size of disk is in blk_size. */<br>
=C2=A0#define VIRTIO_BLK_F_BLK_SIZE=C2=A0 6<br>
=C2=A0/* Cache flush command support. */<br>
=C2=A0#define VIRTIO_BLK_F_FLUSH=C2=A0 =C2=A0 =C2=A09<br>
+/* Device exports information on optimal I/O alignment. */<br>
+#define VIRTIO_BLK_F_TOPOLOGY=C2=A0 10<br>
=C2=A0/* Device can toggle its cache between writeback and writethrough mod=
es. */<br>
=C2=A0#define VIRTIO_BLK_F_CONFIG_WCE 11<br>
=C2=A0/* Device supports multi-queues */<br>
=C2=A0#define VIRTIO_BLK_F_MQ=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 12<br>
+/* Device supports request barriers. */<br>
+#define VIRTIO_BLK_F_BARRIER=C2=A0 =C2=A00<br>
+/* Device supports scsi packet commands. */<br>
+#define VIRTIO_BLK_F_SCSI=C2=A0 =C2=A0 =C2=A0 7<br>
<br>
=C2=A0/* Response status */<br>
=C2=A0#define VIRTIO_BLK_S_OK=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 0<br>
@@ -51,8 +59,25 @@ struct virtio_blk_config {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 __u32 size_max;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Maximum size of a segment */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 __u32 seg_max;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Geometry */<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0struct virtio_blk_geometry {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u16 cylinders;<br=
>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u8 heads;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u8 sectors;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0} geometry;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Block size */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 __u32 blk_size;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Topology */<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0struct virtio_blk_topology {<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* of logical block=
s per physical block (log2) */<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u8 physical_block=
_exp;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* offset of first =
aligned logical block */<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u8 alignment_offs=
et;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* suggested minimu=
m I/O size in blocks */<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u16 min_io_size;<=
br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* optimal (suggest=
ed maximum) I/O size in blocks */<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__u32 opt_io_size;<=
br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0} topology;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* It is set if backend has writeback cache,<br=
>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* otherwise it has writethrough cache.<br=
>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0**/<br>
-- <br>
2.11.0<br>
<br>
</blockquote></div>

--000000000000b7b58f058b1dcbc2--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============6713535952992285770==--


From minios-devel-bounces@lists.xenproject.org Wed Jun 12 11:54:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 11:54: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 1hb1qD-0001Rk-0z; Wed, 12 Jun 2019 11:54:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GZH4=UL=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hb1qC-0001Ra-In
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 11:54:56 +0000
X-Inumbo-ID: e376fc86-8d08-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.87]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e376fc86-8d08-11e9-8980-bc764e045a96;
 Wed, 12 Jun 2019 11:54:53 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Wed, 12 Jun
 2019 11:54:50 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Wed, 12 Jun 2019
 11:54:50 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH v2 0/3] Initial port of fxdiv on
 Unikraft
Thread-Index: AQHVIRWjIjssmR3oOk6hpDN3+Me6zQ==
Date: Wed, 12 Jun 2019 11:54:50 +0000
Message-ID: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0502CA0030.eurprd05.prod.outlook.com
 (2603:10a6:803:1::43) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 129aef16-f322-48db-1b10-08d6ef2cc621
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB47779A8D005106564F5E15B1A6EC0@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:530;
x-forefront-prvs: 0066D63CE6
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39840400004)(396003)(136003)(346002)(366004)(376002)(199004)(189003)(66556008)(1076003)(71190400001)(2501003)(71200400001)(186003)(476003)(486006)(102836004)(786003)(6506007)(386003)(68736007)(86362001)(66066001)(53936002)(5660300002)(558084003)(14454004)(99286004)(4326008)(52116002)(5640700003)(85202003)(6916009)(6512007)(85182001)(508600001)(50226002)(7736002)(81156014)(8676002)(81166006)(8936002)(6436002)(54906003)(74482002)(73956011)(316002)(66946007)(3846002)(6116002)(256004)(26005)(2616005)(2906002)(25786009)(66476007)(66446008)(64756008)(6486002)(2351001)(305945005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: vi5wrw+3BEEVDxFm93LueR/6fsOyg+OFuC3WCdMW3lswFP5jJ7nTFUsUm8FPuZ6Ir6aUtTz7iSGmZoHc4adlvQm474i883wOOgqTUy8ci/32HhRAz6CYdhzw1rdm4Nmd7q6TFSo3kVQ0WC25ySc9CV4z/Gop3Gpfw5TF04NAGAmxw5xVcPRVts3wiB2YCScZ56SssTkwZe6pNGdqFtC7GoY4H5iG2g/zGqlB7SrpxMELrug9jhCPjiiaT4PhJzDdiUeaJiSQi1Jn4nEJoUpM4K+olaq3rttVQWj5U3RX1bvfVaU19fwk2Sz7XB31A3zufrw/zkBE54OASXxOppMDSnmMYSzyyRzjo6rR4XAi34tvwPMumb8w4Oe4OpMwGnzjGKCjDEh0Pthy15dszOmXiDTmWLZbD6AKPyoBP3/4cAc=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 129aef16-f322-48db-1b10-08d6ef2cc621
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2019 11:54:50.7548 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 0/3] Initial port of
 fxdiv 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaGVzIGludHJvZHVjZSBzdXBwb3J0IGZvciBmeGRpdiB0byBVbmlrcmFmdC4NCg0K
Q2hhbmdlcyBmcm9tIHYxOg0KKikgVXBkYXRlZCBjb25maWcgZGVzY3JpcHRpb24NCiopIFVwZGF0
ZWQgQ09QWUlORy5tZA0KKikgRnJlZXplIGFnYWluc3QgdGhlIGxhdGVzdCBjb21taXQoZjhjNTM1
NCkuDQoNClZsYWQtQW5kcmVpIEJhZG9pdSAoMyk6DQogIEFkZCAuZ2l0aWdub3JlDQogIEFkZCBk
b2N1bWVudGF0aW9uDQogIEluaXRpYWwgcG9ydCBvZiBmeGRpdiB0byBVbmlrcmFmdA0KDQotLSAN
CjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 11:54:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 11:54: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 1hb1qE-0001Rs-2a; Wed, 12 Jun 2019 11:54:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GZH4=UL=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hb1qC-0001Rf-Sp
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 11:54:56 +0000
X-Inumbo-ID: e5851124-8d08-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.87]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e5851124-8d08-11e9-8980-bc764e045a96;
 Wed, 12 Jun 2019 11:54:56 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4777.eurprd01.prod.exchangelabs.com (20.177.208.143) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Wed, 12 Jun
 2019 11:54:52 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Wed, 12 Jun 2019
 11:54:52 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH v2 1/3] Add .gitignore
Thread-Index: AQHVIRWk8ALdgx5Ut0KGvn5X95DNGw==
Date: Wed, 12 Jun 2019 11:54:51 +0000
Message-ID: <20190612115441.8951-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0502CA0030.eurprd05.prod.outlook.com
 (2603:10a6:803:1::43) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: defb51e7-83aa-4037-1b15-08d6ef2cc6d8
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4777; 
x-ms-traffictypediagnostic: PR1PR01MB4777:
x-microsoft-antispam-prvs: <PR1PR01MB47770723650669D1F619B3AAA6EC0@PR1PR01MB4777.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0066D63CE6
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39840400004)(396003)(136003)(346002)(366004)(376002)(199004)(189003)(66556008)(1076003)(11346002)(71190400001)(2501003)(446003)(71200400001)(186003)(476003)(486006)(102836004)(786003)(6506007)(386003)(68736007)(86362001)(66066001)(53936002)(5660300002)(4744005)(14454004)(99286004)(4326008)(52116002)(5640700003)(85202003)(6916009)(6512007)(85182001)(508600001)(76176011)(50226002)(7736002)(81156014)(8676002)(81166006)(8936002)(6436002)(54906003)(74482002)(73956011)(316002)(66946007)(3846002)(6116002)(256004)(26005)(2616005)(2906002)(25786009)(66476007)(66446008)(64756008)(6486002)(2351001)(305945005)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4777;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ORkw/r7PoQH9ET/3Ll7efycZY1zKnnfOB6rzS9VnkTAK0Hc1SWBFOx/tTl8Z1IA/37OoHdMUnNI+KLwiOpEcaG0G8m4JaOBTf8iwFzv/YvTpmyE5jNXSoq++0MSEFBr6tea3VN3uJ4bBHdQ4MTENTNEnrM1k9+TWlBdIw61qK/J41pas4J/SHTZglETNOQUfbdr33domnEGd3NgggeBUfCkDAWoU0wAoTJs9tJOgYEKfA2CDR4Ab94m1mfT/1EI8Y6chNgzHh4Khmp3A8bGjEPqYc2qOlHemBePemkykyutKkto0iv4cvwXYI7ttptS00YoF1EVDL9+Kso4Qxfb0RGKTo1QOoKm4CIFiX1CMc27g+WOgfkgwkqVdbrduZW2FvBywj+hbdJRNLymbSaCrPN3Cu3UlraA3HbT5Oaw3Fd8=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: defb51e7-83aa-4037-1b15-08d6ef2cc6d8
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2019 11:54:51.7042 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4777
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4NCi0tLQ0KIC5naXRpZ25vcmUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysr
KysNCiAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0
NCAuZ2l0aWdub3JlDQoNCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQ0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjc1ZDJmZDMNCi0tLSAvZGV2L251bGwN
CisrKyBiLy5naXRpZ25vcmUNCkBAIC0wLDAgKzEsMjcgQEANCisqLmRlcGVuZA0KKyoubw0KKyou
YQ0KKyouZA0KKyouc28NCisqLm9yaWcNCisqLnJlag0KKyouYmFrDQorKi5zd3ANCisqfg0KKywq
DQorXCMqXCMNCisuXCMqDQorXCNfKlwjDQorLlwjXyoNCishLmdpdGlnbm9yZQ0KKy4qDQorDQor
IyBnbnUgZ2xvYmFsIGZpbGVzDQorR1BBVEgNCitHUlRBR1MNCitHU1lNUw0KK0dUQUdTDQorDQor
IyBjc2NvcGUgZmlsZXMNCitjc2NvcGUuKg0KK25jc2NvcGUuKg0KLS0gDQoyLjIxLjANCg0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 11:55:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 11:55: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 1hb1qG-0001SW-49; Wed, 12 Jun 2019 11:55: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=GZH4=UL=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hb1qF-0001SK-6m
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 11:54:59 +0000
X-Inumbo-ID: e46d3e1c-8d08-11e9-984d-078ff097a2f7
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.51]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e46d3e1c-8d08-11e9-984d-078ff097a2f7;
 Wed, 12 Jun 2019 11:54:55 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4940.eurprd01.prod.exchangelabs.com (20.177.210.157) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Wed, 12 Jun
 2019 11:54:53 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Wed, 12 Jun 2019
 11:54:53 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH v2 2/3] Add documentation
Thread-Index: AQHVIRWl2eLbUXh2g0mqSr3OnsXsPQ==
Date: Wed, 12 Jun 2019 11:54:52 +0000
Message-ID: <20190612115441.8951-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0502CA0030.eurprd05.prod.outlook.com
 (2603:10a6:803:1::43) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: d2674ec6-0103-4615-9e4f-08d6ef2cc743
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4940; 
x-ms-traffictypediagnostic: PR1PR01MB4940:
x-microsoft-antispam-prvs: <PR1PR01MB4940BEB835D3CB5CC0C5C091A6EC0@PR1PR01MB4940.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0066D63CE6
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(396003)(39840400004)(376002)(346002)(136003)(189003)(199004)(66066001)(14444005)(6916009)(54906003)(2501003)(316002)(25786009)(256004)(6436002)(11346002)(68736007)(6512007)(8936002)(7736002)(5640700003)(305945005)(2906002)(786003)(446003)(71200400001)(86362001)(6116002)(74482002)(476003)(52116002)(102836004)(66476007)(1076003)(5660300002)(73956011)(71190400001)(6486002)(50226002)(81156014)(76176011)(81166006)(3846002)(186003)(14454004)(85202003)(486006)(2351001)(8676002)(85182001)(26005)(99286004)(4326008)(66556008)(53936002)(66946007)(508600001)(6506007)(386003)(2616005)(64756008)(66446008)(2004002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4940;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: ynvW5rI4iYUqKgvp/XA3GZTjT8MgB4jLq6Q/8QfbqRn4SaSneYN8BlrKlFHyCRc2kyXEFiuZOvuqO6MVex6zKXaMgPz2dUZDf5tBX1jCBYPXxKQpPybxSHJiQGLGbIXNJS8b86TOmq8OL8ZgujHm1iafN9cIoSPVCReoZeVa4aUkDTO/VUqNmpyaFrMLCgX3nr0w1FF2cKLlTnQVbJyTiBp+JOp1//Cr+/uyKAjK+JfT59F7STgQju/bkHkff8aBo4hfiU/CT9yvbo20hu2SC9fc3CFoC+OyB/JGcGgs3vY1Ce1ecVpGyJq4qAqdmAwcEKOZ6GHlPL7FUPjTh+zVcVAE3LiqLTgbL9cNdtbMlPOK1dpPs+giZcggj8uCDKCUYbPBrwSiRVSxEZhzs5nZY/OfRu2N1Yr4vZhEP5/aUAA=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: d2674ec6-0103-4615-9e4f-08d6ef2cc743
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2019 11:54:52.6936 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4940
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysNCiBDT1BZSU5HLm1kICAgICAgfCAzMCArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysNCiBNQUlOVEFJTkVSUy5tZCAgfCAxMSArKysrKysrKysrKw0KIFJFQURN
RS5tZCAgICAgICB8ICA1ICsrKysrDQogNSBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCsp
DQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZA0KIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDT05UUklCVVRJTkcubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09QWUlORy5tZA0KIGNyZWF0
ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUu
bWQNCg0KZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5tZA0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjU3MzAwNDENCi0tLSAvZGV2L251bGwN
CisrKyBiL0NPRElOR19TVFlMRS5tZA0KQEAgLTAsMCArMSw0IEBADQorQ29kaW5nIFN0eWxlDQor
PT09PT09PT09PT09DQorDQorUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBm
aWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuDQpkaWZmIC0tZ2l0IGEvQ09OVFJJ
QlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMC4uNWY1NWVjYQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQ09OVFJJQlVUSU5HLm1kDQpA
QCAtMCwwICsxLDQgQEANCitDb250cmlidXRpbmcgdG8gVW5pa3JhZnQNCis9PT09PT09PT09PT09
PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmls
ZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KZGlmZiAtLWdpdCBhL0NPUFlJTkcu
bWQgYi9DT1BZSU5HLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uZGIz
NGI5Yg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQ09QWUlORy5tZA0KQEAgLTAsMCArMSwzMCBAQA0K
K0xpY2Vuc2UNCis9PT09PT09DQorDQorVW5pa3JhZnQgZnhkaXYgd3JhcHBlcnMNCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFwcGVyIGNv
ZGUgdG8gYnVpbGQgZnhkaXYgd2l0aCBVbmlrcmFmdC4NCitFYWNoIEMgY29kZSBmaWxlIGluIHRo
aXMgcmVwb3NpdG9yeSBzaG91bGQgZGVjbGFyZSB3aG8gaXMgdGhlDQorY29weXJpZ2h0IG93bmVy
IGFuZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcw0KK2xpY2Vu
c2VkLiBJZiBzdWNoIGEgbGljZW5jZSBub3RlIGlzIG1pc3NpbmcsIHRoZSBmb2xsb3dpbmcgY29w
eXJpZ2h0DQorbm90aWNlIHdpbGwgYXBwbHk6DQorDQorDQorCUNvcHlyaWdodChDKSBZZWFyIE5h
bWUsIEluc3RpdHV0aW9uDQorCQ0KKwlUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorCW1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisJTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyDQorCXZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisJDQor
CVRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLA0KKwlidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZg0KKwlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKwlMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKwkNCisJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKwlMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuTElCOw0KKwlpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sDQorCTU5IFRlbXBsZSBQbGFj
ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0ENCisNCmRpZmYgLS1naXQg
YS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
aW5kZXggMDAwMDAwMC4uY2JkMDY5Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTUFJTlRBSU5FUlMu
bWQNCkBAIC0wLDAgKzEsMTEgQEANCitNYWludGFpbmVycyBMaXN0DQorPT09PT09PT09PT09PT09
PQ0KKw0KK0ZvciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2Ug
cmVmZXIgdG8gYE1BSU5UQUlORVJTLm1kYCBpbg0KK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRv
cnkuDQorDQorCUxJQkZYRElWLVVOSUtSQUZUDQorCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1
aWNpQG5lY2xhYi5ldT4NCisJTToJVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRv
aXVAc3R1ZC5hY3MudXBiLnJvPg0KKwlMOgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZw0KKwlG
OiAqDQpkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kDQpuZXcgZmlsZSBtb2RlIDEw
MDY0NA0KaW5kZXggMDAwMDAwMC4uNzI4Yjk3ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvUkVBRE1F
Lm1kDQpAQCAtMCwwICsxLDUgQEANCitmeGRpdiBmb3IgVW5pa3JhZnQNCis9PT09PT09PT09PT09
PT09PT09DQorDQorUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRo
ZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2ANCitzdWJkaXJlY3Rvcnkgb2YgdGhlIG1haW4g
dW5pa3JhZnQgcmVwb3NpdG9yeS4NCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 11:55:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 11:55: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 1hb1qK-0001TJ-6P; Wed, 12 Jun 2019 11:55: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=GZH4=UL=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hb1qJ-0001T8-F6
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 11:55:03 +0000
X-Inumbo-ID: e7206828-8d08-11e9-bd19-370437cdb5d9
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.51]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e7206828-8d08-11e9-bd19-370437cdb5d9;
 Wed, 12 Jun 2019 11:54:58 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4940.eurprd01.prod.exchangelabs.com (20.177.210.157) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Wed, 12 Jun
 2019 11:54:54 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1965.017; Wed, 12 Jun 2019
 11:54:54 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH v2 3/3] Initial port of fxdiv to
 Unikraft
Thread-Index: AQHVIRWmGdOQCHaWzEGACazMnG2vzA==
Date: Wed, 12 Jun 2019 11:54:54 +0000
Message-ID: <20190612115441.8951-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0502CA0030.eurprd05.prod.outlook.com
 (2603:10a6:803:1::43) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9bb2af92-3a02-4cdf-6371-08d6ef2cc7e0
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4940; 
x-ms-traffictypediagnostic: PR1PR01MB4940:
x-microsoft-antispam-prvs: <PR1PR01MB4940C31B3AF11F49DE7AFC02A6EC0@PR1PR01MB4940.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0066D63CE6
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(396003)(39840400004)(376002)(346002)(136003)(189003)(199004)(66066001)(14444005)(6916009)(54906003)(2501003)(316002)(25786009)(256004)(6306002)(6436002)(11346002)(68736007)(6512007)(8936002)(7736002)(5640700003)(305945005)(2906002)(786003)(446003)(71200400001)(86362001)(6116002)(74482002)(476003)(52116002)(102836004)(66476007)(1076003)(5660300002)(73956011)(71190400001)(6486002)(50226002)(81156014)(76176011)(81166006)(3846002)(186003)(14454004)(85202003)(486006)(2351001)(8676002)(85182001)(26005)(99286004)(4326008)(66556008)(53936002)(66946007)(508600001)(6506007)(386003)(2616005)(64756008)(66446008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4940;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: yk0O31EUIU6lY2KeowbJCS7MBsB74c0Try/Xg1oy7f3K4hxpxGC+mifauZ/aTthWSqsTlo+WYeta+YLCpH1kUmnFykGiJxVbqQGKTl0sRiKOfmKrzszYYKuVfa3WIXmBbLrIOlqDTy6q84UIp3DRAsreHqs62AGfhiehX2V1khdeE5InBlIS0Jzg5HO7f016/suvoG9HpQ7YMDEjmnwoeOofBLlAviRv/2+iXdtuBUNT99PO6xs8vNtO8yuMB7wgooiHxQlKehnqE5JivxnyuV3Bqrnom7FA+THpVba98bPd8y/jOJF1MZ1sL87pv2R2dKn7vrR+fsxsKPdjMmCXx/t3bQ9dGMchyW4AqtiXAl+0FZOmQcUlX2jYdj8kPdTrO9uhk4fXWy8JEcxSXotqcZdtto2evYHgBloTkRrQw6M=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 9bb2af92-3a02-4cdf-6371-08d6ef2cc7e0
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2019 11:54:54.2038 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4940
Subject: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 3/3] Initial port of
 fxdiv to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGZ4ZGl2IHRvIFVuaWtyYWZ0IGFzIGFuIGV4dGVy
bmFsIGxpYnJhcnkuIExpYmN4eCBpcw0KcmVxdWlyZWQuIFdoZW4gYWRkaW5nIHRoZSBsaWJyYXJ5
IHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QgaXQgc2hvdWxkIHN0YXkgYWZ0ZXINCmxpYmN4eCAoZWcu
IC4uLjokKFVLX0xJQlMpL2xpYnVud2luZDokKFVLX0xJQlMpL2NvbXBpbGVyLXJ0OiQoVUtfTElC
UykvbGliY3h4YWJpOg0KJChVS19MSUJTKS9saWJjeHg6JChVS19MSUJTKS9uZXdsaWI6JChVS19M
SUJTKS9meGRpdjouLi4pDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxh
ZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIENvbmZpZy51ayAgICAgfCAg
NSArKysrDQogTWFrZWZpbGUudWsgICB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKw0KIGV4cG9ydHN5bXMudWsgfCAgMSArDQogMyBmaWxlcyBj
aGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51aw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBv
cnRzeW1zLnVrDQoNCmRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4yYWM3OWMzDQotLS0gL2Rldi9udWxsDQorKysg
Yi9Db25maWcudWsNCkBAIC0wLDAgKzEsNSBAQA0KK21lbnVjb25maWcgTElCRlhESVYNCisgICAg
Ym9vbCAiZnhkaXYgLSBsaWJyYXJ5IGZvciBkaXZpc2lvbiB2aWEgZml4ZWQtcG9pbnQgbXVsdGlw
bGljYXRpb24gYnkgaW52ZXJzZSINCisgICAgc2VsZWN0IExJQkNYWA0KKyAgICBkZWZhdWx0IG4N
CisNCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrDQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNDA1ODU3OQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTWFr
ZWZpbGUudWsNCkBAIC0wLDAgKzEsNzQgQEANCisjICBsaWJmeGRpdiBjb25maWcgZmlsZQ0KKyMN
CisjICBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVk
LmFjcy51cGIucm8+DQorIw0KKyMgIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xp
dGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIw0KKyMgIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dA0KKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucw0KKyMgIGFyZSBtZXQ6DQorIw0KKyMgIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLg0KKyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uDQorIyAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBu
b3IgdGhlIG5hbWVzIG9mIGl0cw0KKyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorIyAgICAgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisjDQorIyAg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiDQorIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyMgIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFDQorIyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KKyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisjICBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRg0KKyMgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorIyAgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkNCisjICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLg0KKyMNCisjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLg0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBMaWJyYXJ5
IHJlZ2lzdHJhdGlvbg0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorJChldmFsICQoY2FsbCBh
ZGRsaWJfcyxsaWJmeGRpdiwkKENPTkZJR19MSUJGWERJVikpKQ0KKw0KKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQorIyBTb3VyY2VzDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJGWERJ
Vl9WRVJTSU9OPWY4YzUzNTQ2NzllYzI1OTc3OTJiYzcwYTllMDZlZmY1MGM1MDhiOWENCitMSUJG
WERJVl9VUkw9aHR0cHM6Ly9naXRodWIuY29tL01hcmF0eXN6Y3phL0ZYZGl2L2FyY2hpdmUvZjhj
NTM1NC56aXANCitMSUJGWERJVl9QQVRDSERJUj0kKExJQkZYRElWX0JBU0UpL3BhdGNoZXMNCisk
KGV2YWwgJChjYWxsIGZldGNoLGxpYmZ4ZGl2LCQoTElCRlhESVZfVVJMKSkpDQorDQorIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMNCisjIEhlbHBlcnMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
K0xJQkZYRElWX1NVQkRJUj1GWGRpdi0kKExJQkZYRElWX1ZFUlNJT04pDQorTElCRlhESVZfU1JD
PSQoTElCRlhESVZfT1JJR0lOKS8kKExJQkZYRElWX1NVQkRJUikNCisNCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KKyMgTGlicmFyeSBpbmNsdWRlcw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkZYRElWKSArPSAtSSQoTElCRlhESVZfU1JDKS9pbmNs
dWRlDQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkZYRElWKSArPSAtSSQoTElCRlhESVZfQkFTRSkv
aW5jbHVkZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQkZYRElWKSArPSAtSSQoTElCRlhESVZf
U1JDKS9pbmNsdWRlDQorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCRlhESVYpICs9IC1JJChMSUJG
WERJVl9CQVNFKS9pbmNsdWRlDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIEdsb2Jh
bCBmbGFncw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBTdXBwcmVzcyBzb21lIHdhcm5p
bmdzIHRvIG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXINCitTVVBQUkVTU19GTEFH
UyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUgLVduby1ub25u
dWxsCVwNCistV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1X
bm8tY2hhci1zdWJzY3JpcHRzCQlcDQorLVduby11bnVzZWQtZnVuY3Rpb24gLVduby1taXNzaW5n
LWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQJCVwNCistV25vLWFycmF5LWJv
dW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVz
ZWQtdmFsdWUJXA0KKy1Xbm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1w
bGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24JCVwNCistV25vLW1pc3NpbmctYnJhY2VzIC1Xbm8t
ZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCVwNCistV25vLWltcGxp
Y2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1Xbm8tdHlwZS1saW1pdHMgLVduby1zaWduLWNvbXBh
cmUNCitMSUJGWERJVl9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCitMSUJGWERJ
Vl9DWFhGTEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdTKQ0KKw0KZGlmZiAtLWdpdCBhL2V4
cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg
MDAwMDAwMC4uNjIxZTk0Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZXhwb3J0c3ltcy51aw0KQEAg
LTAsMCArMSBAQA0KK25vbmUNCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 13:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 13:36: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 1hb3QB-0003U6-HP; Wed, 12 Jun 2019 13:36:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb3QA-0003Tu-I2
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 13:36:10 +0000
X-Inumbo-ID: 07b4477f-8d17-11e9-8980-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 07b4477f-8d17-11e9-8980-bc764e045a96;
 Wed, 12 Jun 2019 13:36:06 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id EC25640A30;
 Wed, 12 Jun 2019 15:16:16 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 12 Jun 2019 15:15:50 +0200
Message-Id: <20190612131553.19420-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 0/3] *** Patches in
 support of mkl-dnn ***
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>
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>

VGhpcyBzZXJpZXMgY29udGFpbnMgY2hhbmdlcyBuZWVkZWQgdG8gcG9ydCBta2wtZG5uIHRvIFVu
aWtyYWZ0LgoKRmVsaXBlIEh1aWNpICgxKToKICBJbXBsZW1lbnQgX21tX2dldGNzciBhbmQgX21t
X3NldGNzcgoKU2hhcmFuIFNhbnRoYW5hbSAoMik6CiAgSW1wbGVtZW50IF9tbV9wYXVzZQogIF9t
bV9hbGlnbnJfZXBpOCB0byB1c2UgY29tcGlsZXIgYnVpbHRpbgoKIGluY2x1ZGUvZW1taW50cmlu
LmggfCAgOSAtLS0tLS0tLS0KIGluY2x1ZGUvdG1taW50cmluLmggfCAgNiArKysrKysKIGluY2x1
ZGUveG1taW50cmluLmggfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
MyBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKLS0gCjIu
MTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 13:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 13:36: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 1hb3QB-0003UB-J6; Wed, 12 Jun 2019 13:36:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb3QA-0003Tv-Jm
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 13:36:10 +0000
X-Inumbo-ID: 07faa610-8d17-11e9-8980-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 07faa610-8d17-11e9-8980-bc764e045a96;
 Wed, 12 Jun 2019 13:36:07 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 0FA76413D9;
 Wed, 12 Jun 2019 15:16:31 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 12 Jun 2019 15:15:53 +0200
Message-Id: <20190612131553.19420-4-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190612131553.19420-1-felipe.huici@neclab.eu>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 3/3] Implement
 _mm_getcsr and _mm_setcsr
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>
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>

U2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IGluY2x1ZGUveG1taW50cmluLmggfCAxNCArKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs
IDE0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3htbWludHJpbi5oIGIvaW5j
bHVkZS94bW1pbnRyaW4uaAppbmRleCAyZGZhNGQ1Li4xYjEyMTBmIDEwMDY0NAotLS0gYS9pbmNs
dWRlL3htbWludHJpbi5oCisrKyBiL2luY2x1ZGUveG1taW50cmluLmgKQEAgLTMxMTAsNiArMzEx
MCwyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9tbV9wYXVzZSh2
b2lkKQogI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwogI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRS
U19NTVgKIAorLyogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyIHRvIEkuICAqLworZXh0ZXJuIF9f
aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGlu
ZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fc2V0Y3NyICh1bnNpZ25lZCBpbnQgX19JKQorewor
ICBfX2J1aWx0aW5faWEzMl9sZG14Y3NyIChfX0kpOworfQorCisvKiBSZXR1cm4gdGhlIGNvbnRl
bnRzIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyLiAgKi8KK2V4dGVybiBfX2lubGluZSB1bnNpZ25l
ZCBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf
X2FydGlmaWNpYWxfXykpCitfbW1fZ2V0Y3NyICh2b2lkKQoreworICByZXR1cm4gX19idWlsdGlu
X2lhMzJfc3RteGNzciAoKTsKK30KKwogLyogVWdseSBoYWNrIGZvciBiYWNrd2FyZHMtY29tcGF0
aWJpbGl0eSAoY29tcGF0aWJsZSB3aXRoIGdjYykgKi8KICNpZmRlZiBfX0dOVUNfXwogI2luY2x1
ZGUgPGVtbWludHJpbi5oPgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 13:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 13:36: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 1hb3QD-0003Uo-KV; Wed, 12 Jun 2019 13:36: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=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb3QB-0003UI-TQ
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 13:36:11 +0000
X-Inumbo-ID: 07af3a7a-8d17-11e9-867d-573b74596673
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 07af3a7a-8d17-11e9-867d-573b74596673;
 Wed, 12 Jun 2019 13:36:06 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 08BF441393;
 Wed, 12 Jun 2019 15:16:27 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 12 Jun 2019 15:15:51 +0200
Message-Id: <20190612131553.19420-2-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190612131553.19420-1-felipe.huici@neclab.eu>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 Sharan Santhanam <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>

RnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpTaWdu
ZWQtb2ZmLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
U2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IGluY2x1ZGUvZW1taW50cmluLmggfCAgOSAtLS0tLS0tLS0KIGluY2x1ZGUveG1taW50cmluLmgg
fCAyMSArKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u
cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2VtbWludHJpbi5oIGIv
aW5jbHVkZS9lbW1pbnRyaW4uaAppbmRleCA4NzAzYjlhLi5jMDU3M2ExIDEwMDY0NAotLS0gYS9p
bmNsdWRlL2VtbWludHJpbi5oCisrKyBiL2luY2x1ZGUvZW1taW50cmluLmgKQEAgLTQ5OTksMTUg
KzQ5OTksNiBAQCBfbW1fY2FzdHNpMTI4X3BkKF9fbTEyOGkgX19hKQogZXh0ZXJuICJDIiB7CiAj
ZW5kaWYKIAotLy8vIEluZGljYXRlcyB0aGF0IGEgc3BpbiBsb29wIGlzIGJlaW5nIGV4ZWN1dGVk
IGZvciB0aGUgcHVycG9zZXMgb2YKLS8vLyAgICBvcHRpbWl6aW5nIHBvd2VyIGNvbnN1bXB0aW9u
IGR1cmluZyB0aGUgbG9vcC4KLS8vLwotLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4KLS8v
LwotLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFVU0UgPC9jPiBp
bnN0cnVjdGlvbi4KLS8vLwotdm9pZCBfbW1fcGF1c2Uodm9pZCk7Ci0KICNpZiBkZWZpbmVkKF9f
Y3BsdXNwbHVzKQogfSAvLyBleHRlcm4gIkMiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUv
eG1taW50cmluLmggYi9pbmNsdWRlL3htbWludHJpbi5oCmluZGV4IGUyNTQzYTcuLjJkZmE0ZDUg
MTAwNjQ0Ci0tLSBhL2luY2x1ZGUveG1taW50cmluLmgKKysrIGIvaW5jbHVkZS94bW1pbnRyaW4u
aApAQCAtMjUsNiArMjUsMTUgQEAKICNkZWZpbmUgX19YTU1JTlRSSU5fSAogCiAjaW5jbHVkZSA8
bW1pbnRyaW4uaD4KKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgZnVu
Y3Rpb25zIGluIHRoaXMgZmlsZS4gKi8KKyNpZmRlZiAgX19HTlVDX18KKyNkZWZpbmUgX19ERUZB
VUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxp
bmVfXywgX19hcnRpZmljaWFsX18pKQorI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9f
YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj
aWFsX18pKQorI2Vsc2UKKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18o
KF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpLCBfX21p
bl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkKKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX01NWCBf
X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18o
Im1teCxzc2UyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpCisjZW5kaWYKKwogCiB0eXBl
ZGVmIGludCBfX3Y0c2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOwogdHlw
ZWRlZiBmbG9hdCBfX3Y0c2YgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOwpA
QCAtMzA4Niw2ICszMDk1LDE4IEBAIGRvIHsgXAogI2RlZmluZSBfbV8gX21tXwogI2RlZmluZSBf
bV8gX21tXwogCisvLy8gSW5kaWNhdGVzIHRoYXQgYSBzcGluIGxvb3AgaXMgYmVpbmcgZXhlY3V0
ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZgorLy8vICAgIG9wdGltaXppbmcgcG93ZXIgY29uc3VtcHRp
b24gZHVyaW5nIHRoZSBsb29wLgorLy8vCisvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPgor
Ly8vCisvLy8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVVTRSA8L2M+
IGluc3RydWN0aW9uLgorLy8vCitzdGF0aWMgaW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJT
IF9tbV9wYXVzZSh2b2lkKQoreworCV9fYnVpbHRpbl9pYTMyX3BhdXNlKCk7Cit9CisKICN1bmRl
ZiBfX0RFRkFVTFRfRk5fQVRUUlMKICN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YCiAKLS0g
CjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 13:36:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 13:36: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 1hb3QD-0003Ut-MS; Wed, 12 Jun 2019 13:36: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=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb3QB-0003UJ-TY
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 13:36:11 +0000
X-Inumbo-ID: 07af4196-8d17-11e9-bc87-771236f8bcdc
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 07af4196-8d17-11e9-bc87-771236f8bcdc;
 Wed, 12 Jun 2019 13:36:06 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id E2D07413BC;
 Wed, 12 Jun 2019 15:16:29 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 12 Jun 2019 15:15:52 +0200
Message-Id: <20190612131553.19420-3-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190612131553.19420-1-felipe.huici@neclab.eu>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 2/3]
 _mm_alignr_epi8 to use compiler builtin
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 Sharan Santhanam <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>

RnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpfbW1f
YWxpZ25yX2VwaTggdXNlcyB0aGUgX19idWlsdGluX2lhMzJfcGFsaWducjEyOCBmdW5jdGlvbiBm
b3IgaXRzCmltcGxlbWVudGF0aW9uLiBUaGUgYnVpbHRpbiBmdW5jdGlvbiBoYXMgYSBkaWZmZXJl
bnQgc2lnbmF0dXJlIG9uCmdjYyB2cyBsbHZtLiBXZSBwcm92aWRlIGNvbXBpbGVyIGd1YXJkcyB0
byB1c2UgdGhlIGFwcHJvcHJpYXRlIGJ1aWx0aW4KZnVuY3Rpb24uCgpTaWduZWQtb2ZmLWJ5OiBG
ZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+ClNpZ25lZC1vZmYtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIGluY2x1ZGUvdG1t
aW50cmluLmggfCA2ICsrKysrKwogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlm
ZiAtLWdpdCBhL2luY2x1ZGUvdG1taW50cmluLmggYi9pbmNsdWRlL3RtbWludHJpbi5oCmluZGV4
IDdhOTQwOTYuLjdjOWVjZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdG1taW50cmluLmgKKysrIGIv
aW5jbHVkZS90bW1pbnRyaW4uaApAQCAtMTYzLDkgKzE2MywxNSBAQCBfbW1fYWJzX2VwaTMyKF9f
bTEyOGkgX19hKQogLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1h
bnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4KIC8vLyBccmV0dXJucyBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJpZ2h0LXNoaWZ0
ZWQKIC8vLyAgICB2YWx1ZS4KKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBfbW1fYWxpZ25yX2Vw
aTgoYSwgYiwgbikgXAorICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWxpZ25yMTI4KChfX3Yy
ZGkpKF9fbTEyOGkpKGEpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9fdjJkaSkoX19tMTI4aSkoYiksIChuKSkKKyNlbHNlCiAjZGVmaW5lIF9tbV9hbGlnbnJfZXBp
OChhLCBiLCBuKSBcCiAgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhbGlnbnIxMjgoKF9fdjE2
cWkpKF9fbTEyOGkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAobikpCisjZW5kaWYKIAogLy8vIENvbmNhdGVuYXRlcyB0
aGUgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kcywgYW5kIHJpZ2h0LXNoaWZ0cwog
Ly8vICAgIHRoZSByZXN1bHQgYnkgdGhlIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQgaW4gdGhl
IGltbWVkaWF0ZSBvcGVyYW5kLgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 14:21:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 14:21:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hb47k-0007Rr-Kc; Wed, 12 Jun 2019 14:21:12 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb47j-0007Rh-Cy
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 14:21:11 +0000
X-Inumbo-ID: 514afed4-8d1d-11e9-a313-3b017d52139c
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 514afed4-8d1d-11e9-a313-3b017d52139c;
 Wed, 12 Jun 2019 14:21:07 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id A673C40A30;
 Wed, 12 Jun 2019 15:45:47 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Wed, 12 Jun 2019 15:45:42 +0200
Message-Id: <20190612134542.21408-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/MKL-DNN PATCH v1] Initial port of mkl-dnn
 to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIG1rbC1kbm4gdG8gVW5pa3JhZnQgYXMgYW4gZXh0
ZXJuYWwgbGlicmFyeS4gVGhpcwpsaWJyYXJ5IHJlcXVpcmVzIGMrKyBhbmQgaW50ZWwtaW50cmlu
c2ljcyBzdXBwb3J0LiBGb3IgZXhhbXBsZSwgaGVyZSdzIGEKd29ya2luZyBleGFtcGxlIG9mIHRo
ZSBsaXN0IG9mIGxpYnJhcmllcyBuZWVkZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgTWFrZWZpbGU6
CgpMSUJTIDo9ICQoVUtfTElCUykvbGlidW53aW5kOiQoVUtfTElCUykvY29tcGlsZXItcnQ6JChV
S19MSUJTKS9saWJjeHhhYmk6CiAgICAgICAgJChVS19MSUJTKS9saWJjeHg6JChVS19MSUJTKS9u
ZXdsaWI6JChVS19MSUJTKS9pbnRlbC1pbnRyaW5zaWNzOgoJJChVS19MSUJTKS9ta2wtZG5uCgpT
aWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+Ci0tLQog
Q09ESU5HX1NUWUxFLm1kICAgICAgICAgIHwgICA0ICsKIENPTlRSSUJVVElORy5tZCAgICAgICAg
ICB8ICAgNCArCiBDb25maWcudWsgICAgICAgICAgICAgICAgfCAgIDYgKysKIE1BSU5UQUlORVJT
Lm1kICAgICAgICAgICB8ICAxMCArKwogTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgMjQyICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBSRUFETUUubWQg
ICAgICAgICAgICAgICAgfCAgIDUgKwogaW5jbHVkZS9jcHVpZC5oICAgICAgICAgIHwgMTU4ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvbWtsZG5uX3ZlcnNpb24uaCB8
ICAzMiArKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDQ2MSBpbnNlcnRpb25zKCspCiBjcmVhdGUg
bW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVU
SU5HLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TUFJTlRBSU5FUlMubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51awogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFJFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY3B1aWQuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbWtsZG5uX3ZlcnNpb24uaAoKZGlmZiAtLWdpdCBh
L0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41NzMwMDQxCi0tLSAvZGV2L251bGwKKysrIGIvQ09ESU5HX1NUWUxFLm1k
CkBAIC0wLDAgKzEsNCBAQAorQ29kaW5nIFN0eWxlCis9PT09PT09PT09PT0KKworUGxlYXNlIHJl
ZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJl
cG9zaXRvcnkuCmRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1NWVjYQotLS0gL2Rldi9udWxs
CisrKyBiL0NPTlRSSUJVVElORy5tZApAQCAtMCwwICsxLDQgQEAKK0NvbnRyaWJ1dGluZyB0byBV
bmlrcmFmdAorPT09PT09PT09PT09PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBg
Q09OVFJJQlVUSU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRp
ZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmY0NjBhYQotLS0gL2Rldi9udWxsCisrKyBiL0NvbmZpZy51awpAQCAtMCww
ICsxLDYgQEAKK21lbnVjb25maWcgTElCTUtMRE5OCisgICAgYm9vbCAibWtsLWRubiAtIEludGVs
IE1hdGggS2VybmVsIExpYnJhcnkgZm9yIEROTnMiCisJc2VsZWN0IExJQk5PTElCQyBpZiAhSEFW
RV9MSUJDCisJc2VsZWN0IExJQkNPTVBJTEVSX1JUCisJc2VsZWN0IFVLU1lTSU5GTworICAgIGRl
ZmF1bHQgbgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTQ1M2UzCi0tLSAvZGV2L251bGwKKysr
IGIvTUFJTlRBSU5FUlMubWQKQEAgLTAsMCArMSwxMCBAQAorTWFpbnRhaW5lcnMgTGlzdAorPT09
PT09PT09PT09PT09PQorCitGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlv
biwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KK3RoZSBtYWluIFVuaWtyYWZ0
IHJlcG9zaXRvcnkuCisKKwlORVdMSUItVU5JS1JBRlQKKwlNOglGZWxpcGUgSHVpY2kgPGZlbGlw
ZS5odWljaUBuZWNsYWIuZXU+CisJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKKwlGOiAq
CmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjU0MTQ2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZS51
awpAQCAtMCwwICsxLDI0MiBAQAorIyAgbGlibWtsLWRubiBNYWtlZmlsZS51aworIworIyAgQXV0
aG9yczogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgorIworIyAgIENvcHly
aWdodCAoYykgMjAxOSwgTkVDIEV1cm9wZSBMdGQuLCBORUMgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyAgYXJlIG1ldDoK
KyMKKyMgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
ICAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisjICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjICBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQorIyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorIyAgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyAg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyAgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorIyAgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisjCisjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLgorIworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWJyYXJ5
IHJlZ2lzdHJhdGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyQoZXZhbCAkKGNhbGwgYWRk
bGliX3MsbGlibWtsZG5uLCQoQ09ORklHX0xJQk1LTEROTikpKQorCitpZmVxICgkKENPTkZJR19M
SUJNS0xETk4pLHkpCitpZm5lcSAoJChDT05GSUdfTElCQ09NUElMRVJfUlQpLHkpCiskKGVycm9y
IFJlcXVpcmUgbGliY29tcGlsZXJfcnQpCitlbmRpZgorZW5kaWYKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgU291cmNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQk1LTEROTl9W
RVJTSU9OPTAuMTktcmMKK0xJQk1LTEROTl9VUkw9aHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21r
bC1kbm4vYXJjaGl2ZS92JChMSUJNS0xETk5fVkVSU0lPTikuemlwCitMSUJNS0xETk5fUEFUQ0hE
SVI9JChMSUJNS0xETk5fQkFTRSkvcGF0Y2hlcworJChldmFsICQoY2FsbCBmZXRjaCxsaWJta2xk
bm4sJChMSUJNS0xETk5fVVJMKSkpCiskKGV2YWwgJChjYWxsIHBhdGNoLGxpYm1rbGRubiwkKExJ
Qk1LTEROTl9QQVRDSERJUiksbGlibWtsZG5uLSQoTElCTUtMRE5OX1ZFUlNJT04pKSkKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSGVscGVycworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
K0xJQk1LTEROTl9TVUJESVI9bWtsLWRubi0kKExJQk1LTEROTl9WRVJTSU9OKQorTElCTUtMRE5O
X1NSQz0kKExJQk1LTEROTl9PUklHSU4pLyQoTElCTUtMRE5OX1NVQkRJUikKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgTGlicmFyeSBpbmNsdWRlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKK0xJQk1LTC1JTkNMVURFUyArPSAtSSQoTElCTUtMRE5OX1NSQykvaW5jbHVkZSAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAtSSQoTElCTUtMRE5OX1NSQykvc3JjICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAtSSQoTElCTUtMRE5OX1NSQykvc3JjL2NwdSAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgICAtSSQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tIFwKKyAgICAgICAg
ICAgICAgICAgICAtSSQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbiAgIFwKKyAgICAgICAgICAg
ICAgICAgICAtSSQoTElCTUtMRE5OX0JBU0UpL2luY2x1ZGUgICAgIFwKKworQ0lOQ0xVREVTLSQo
Q09ORklHX0xJQk1LTEROTikgKz0gJChMSUJNS0wtSU5DTFVERVMpCitDWFhJTkNMVURFUy0kKENP
TkZJR19MSUJNS0xETk4pICs9ICQoTElCTUtMLUlOQ0xVREVTKQorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyBHbG9iYWwgZmxhZ3MKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJNS0xE
Tk4tQ09ORklHX0ZMQUdTID0gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgIC1ETUtMRE5OX0VOQUJMRV9DT05DVVJSRU5UX0VYRUM9
T0ZGIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAtRE1LTEROTl9MSUJSQVJZX1RZUEU9U1RB
VElDICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgLURNS0xETk5fVEhSRUFESU5H
PU9NUDpDT01QICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgIC1ETUtMRE5OX1VT
RV9NS0w9Tk9ORSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAtRE1L
TEROTl9WRVJCT1NFPU9OICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgLURXSVRIX0VYQU1QTEU9T0ZGICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgIC1EV0lUSF9URVNUPU9GRgorCitMSUJNS0xETk5fQ0ZMQUdTLXkgICAgICArPSAg
JChMSUJNS0xETk4tQ09ORklHX0ZMQUdTKQorTElCTUtMRE5OX0NYWEZMQUdTLXkgICAgKz0gICQo
TElCTUtMRE5OLUNPTkZJR19GTEFHUykKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU3Vw
cHJlc3MgRmxhZ3MKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJNS0xETk5fU1VQUFJFU1Nf
RkxBR1MteSArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtcGFyYW1ldGVyIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtV25vLXVua25vd24tcHJhZ21hcworCitMSUJNS0xETk5fQ0ZMQUdT
LXkgICArPSAkKExJQk1LTEROTl9TVVBQUkVTU19GTEFHUy15KQorTElCTUtMRE5OX0NYWEZMQUdT
LXkgKz0gJChMSUJNS0xETk5fU1VQUFJFU1NfRkxBR1MteSkKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgTGlicmFyeSBzb3VyY2VzIC0gY3B1CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvY3B1X2JhcnJpZXIu
Y3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9jcHVfYmF0
Y2hfbm9ybWFsaXphdGlvbl91dGlscy5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xE
Tk5fU1JDKS9zcmMvY3B1L2NwdV9jb25jYXQuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElC
TUtMRE5OX1NSQykvc3JjL2NwdS9jcHVfZW5naW5lLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAk
KExJQk1LTEROTl9TUkMpL3NyYy9jcHUvY3B1X21lbW9yeS5jcHAKK0xJQk1LTEROTl9TUkNTLXkg
Kz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2NwdV9wcmltaXRpdmUuY3BwCitMSUJNS0xETk5f
U1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9jcHVfcmVkdWNlci5jcHAKK0xJQk1L
TEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2NwdV9yZW9yZGVyLmNwcAor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvY3B1X3N1bS5jcHAK
K0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW1fY29udm9s
dXRpb24uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9n
ZW1tX2NvbnZvbHV0aW9uX3V0aWxzLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTERO
Tl9TUkMpL3NyYy9jcHUvZ2VtbV9pbm5lcl9wcm9kdWN0LmNwcAorTElCTUtMRE5OX1NSQ1MteSAr
PSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvZ2VtbV94OHM4czMyeF9jb252b2x1dGlvbi5jcHAK
K0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW1feDhzOHMz
MnhfaW5uZXJfcHJvZHVjdC5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JD
KS9zcmMvY3B1L2ppdF9hdngyXzF4MV9jb252X2tlcm5lbF9mMzIuY3BwCitMSUJNS0xETk5fU1JD
Uy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfYXZ4Ml8xeDFfY29udm9sdXRpb24u
Y3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfYXZ4
Ml9jb252X2tlcm5lbF9mMzIuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NS
Qykvc3JjL2NwdS9qaXRfYXZ4Ml9jb252b2x1dGlvbi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0g
JChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF9hdng1MTJfY29tbW9uXzF4MV9jb252X2tlcm5l
bC5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF9h
dng1MTJfY29tbW9uXzF4MV9jb252b2x1dGlvbi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChM
SUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF9hdng1MTJfY29tbW9uX2NvbnZfa2VybmVsLmNwcAor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0X2F2eDUxMl9j
b21tb25fY29udl93aW5vZ3JhZF9rZXJuZWxfZjMyLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAk
KExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0X2F2eDUxMl9jb21tb25fY29udm9sdXRpb24uY3Bw
CitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfYXZ4NTEy
X2NvbW1vbl9jb252b2x1dGlvbl93aW5vZ3JhZC5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChM
SUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF9hdng1MTJfY29tbW9uX2xybi5jcHAKK0xJQk1LTERO
Tl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF9hdng1MTJfY29yZV9mcDMy
X3dpbm9fY29udl8yeDMuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykv
c3JjL2NwdS9qaXRfYXZ4NTEyX2NvcmVfZnAzMl93aW5vX2NvbnZfNHgzLmNwcAorTElCTUtMRE5O
X1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0X2F2eDUxMl9jb3JlX2ZwMzJf
d2lub19jb252XzR4M19rZXJuZWwuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5O
X1NSQykvc3JjL2NwdS9qaXRfYXZ4NTEyX2NvcmVfdThzOHMzMnhfd2lub19jb252b2x1dGlvbi5j
cHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF9hdng1
MTJfY29yZV94OHM4czMyeF8xeDFfY29udl9rZXJuZWwuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9
ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfYXZ4NTEyX2NvcmVfeDhzOHMzMnhfMXgxX2Nv
bnZvbHV0aW9uLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9j
cHUvaml0X2F2eDUxMl9jb3JlX3g4czhzMzJ4X2NvbnZfa2VybmVsLmNwcAorTElCTUtMRE5OX1NS
Q1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0X2F2eDUxMl9jb3JlX3g4czhzMzJ4
X2NvbnZvbHV0aW9uLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3Ny
Yy9jcHUvaml0X2F2eDUxMl9jb3JlX3g4czhzMzJ4X2RlY29udm9sdXRpb24uY3BwCitMSUJNS0xE
Tk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfc3NlNDJfMXgxX2NvbnZf
a2VybmVsX2YzMi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMv
Y3B1L2ppdF9zc2U0Ml8xeDFfY29udm9sdXRpb24uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQo
TElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfc3NlNDJfY29udl9rZXJuZWxfZjMyLmNwcAorTElC
TUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0X3NzZTQyX2NvbnZv
bHV0aW9uLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUv
aml0X3RyYW5zcG9zZV9zcmNfdXRpbHMuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtM
RE5OX1NSQykvc3JjL2NwdS9qaXRfdW5pX2JhdGNoX25vcm1hbGl6YXRpb24uY3BwCitMSUJNS0xE
Tk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfdW5pX2JhdGNoX25vcm1h
bGl6YXRpb25fczguY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3Jj
L2NwdS9qaXRfdW5pX2R3X2NvbnZfa2VybmVsX2YzMi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0g
JChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF91bmlfZHdfY29udm9sdXRpb24uY3BwCitMSUJN
S0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfdW5pX2VsdHdpc2Uu
Y3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9qaXRfdW5p
X2k4aThfcG9vbGluZy5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9z
cmMvY3B1L2ppdF91bmlfbHJuLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9T
UkMpL3NyYy9jcHUvaml0X3VuaV9scm5fa2VybmVsX2YzMi5jcHAKK0xJQk1LTEROTl9TUkNTLXkg
Kz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2ppdF91bmlfcG9vbF9rZXJuZWxfZjMyLmNwcAor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0X3VuaV9wb29s
aW5nLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvaml0
X3VuaV9yZW9yZGVyLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3Ny
Yy9jcHUvaml0X3VuaV9yZW9yZGVyX3V0aWxzLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJ
Qk1LTEROTl9TUkMpL3NyYy9jcHUvbmNod19wb29saW5nLmNwcAorTElCTUtMRE5OX1NSQ1MteSAr
PSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvbmNzcF9iYXRjaF9ub3JtYWxpemF0aW9uLmNwcAor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvbmh3Y19wb29saW5n
LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvbnNwY19i
YXRjaF9ub3JtYWxpemF0aW9uLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9T
UkMpL3NyYy9jcHUvcmVmX2JhdGNoX25vcm1hbGl6YXRpb24uY3BwCitMSUJNS0xETk5fU1JDUy15
ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9yZWZfY29udm9sdXRpb24uY3BwCitMSUJNS0xE
Tk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9yZWZfZGVjb252b2x1dGlvbi5j
cHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L3JlZl9lbHR3
aXNlLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvcmVm
X2lubmVyX3Byb2R1Y3QuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykv
c3JjL2NwdS9yZWZfbHJuLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMp
L3NyYy9jcHUvcmVmX3Bvb2xpbmcuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5O
X1NSQykvc3JjL2NwdS9yZWZfc2h1ZmZsZS5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJN
S0xETk5fU1JDKS9zcmMvY3B1L3JlZl9zb2Z0bWF4LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAk
KExJQk1LTEROTl9TUkMpL3NyYy9jcHUvc2ltcGxlX2NvbmNhdC5jcHAKK0xJQk1LTEROTl9TUkNT
LXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L3NpbXBsZV9zdW0uY3BwCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjIExpYnJhcnkgc291cmNlcyAtIGNwdS9nZW1tCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9j
cHUvZ2VtbS9nZW1tLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3Ny
Yy9jcHUvZ2VtbS9nZW1tX2RyaXZlci5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xE
Tk5fU1JDKS9zcmMvY3B1L2dlbW0vZ2VtbV9pbmZvLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAk
KExJQk1LTEROTl9TUkMpL3NyYy9jcHUvZ2VtbS9mMzIvZ2VtbV91dGlsc19mMzIuY3BwCitMSUJN
S0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tL2YzMi9qaXRfYXZ4
Ml9mMzJfY29weV9hbl9rZXJuLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9T
UkMpL3NyYy9jcHUvZ2VtbS9mMzIvaml0X2F2eDJfZjMyX2NvcHlfYXRfa2Vybi5jcHAKK0xJQk1L
TEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW0vZjMyL2ppdF9hdngy
X2YzMl9jb3B5X2JuX2tlcm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NS
Qykvc3JjL2NwdS9nZW1tL2YzMi9qaXRfYXZ4Ml9mMzJfY29weV9idF9rZXJuLmNwcAorTElCTUtM
RE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvZ2VtbS9mMzIvaml0X2F2eDJf
a2VybmVsX3NnZW1tX2tlcm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NS
Qykvc3JjL2NwdS9nZW1tL2YzMi9qaXRfYXZ4NTEyX2NvbW1vbl9nZW1tX2YzMi5jcHAKK0xJQk1L
TEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW0vZjMyL2ppdF9hdng1
MTJfY29yZV9mMzJfY29weV9hbl9rZXJuLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1L
TEROTl9TUkMpL3NyYy9jcHUvZ2VtbS9mMzIvaml0X2F2eDUxMl9jb3JlX2YzMl9jb3B5X2F0X2tl
cm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1t
L2YzMi9qaXRfYXZ4NTEyX2NvcmVfZjMyX2NvcHlfYm5fa2Vybi5jcHAKK0xJQk1LTEROTl9TUkNT
LXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW0vZjMyL2ppdF9hdng1MTJfY29yZV9m
MzJfY29weV9idF9rZXJuLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMp
L3NyYy9jcHUvZ2VtbS9mMzIvaml0X2F2eF9nZW1tX2YzMi5jcHAKK0xJQk1LTEROTl9TUkNTLXkg
Kz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW0vZjMyL3JlZl9nZW1tX2YzMi5jcHAKK0xJ
Qk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW0vczh4OHMzMi9q
aXRfYXZ4NTEyX2NvcmVfZ2VtbV9zOHU4czMyX2tlcm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9
ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tL3M4eDhzMzIvaml0X2F2eDUxMl9jb3JlX2dl
bXZfczh1OHMzMi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMv
Y3B1L2dlbW0vczh4OHMzMi9qaXRfYXZ4NTEyX2NvcmVfa2VybmVsX2dlbXZfczh1OHMzMl9rZXJu
LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvZ2VtbS9z
OHg4czMyL2ppdF9hdng1MTJfY29yZV91OF9jb3B5X2FuX2tlcm4uY3BwCitMSUJNS0xETk5fU1JD
Uy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tL3M4eDhzMzIvaml0X2F2eDUxMl9j
b3JlX3U4X2NvcHlfYXRfa2Vybi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5f
U1JDKS9zcmMvY3B1L2dlbW0vczh4OHMzMi9qaXRfYXZ4NTEyX2NvcmVfdThfY29weV9ibl9rZXJu
LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvZ2VtbS9z
OHg4czMyL2ppdF9hdng1MTJfY29yZV91OF9jb3B5X2J0X2tlcm4uY3BwCitMSUJNS0xETk5fU1JD
Uy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tL3M4eDhzMzIvaml0X2F2eDUxMl9j
b3JlX3U4X2NvcHlfc3VtX2FuX2tlcm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtM
RE5OX1NSQykvc3JjL2NwdS9nZW1tL3M4eDhzMzIvaml0X2F2eDUxMl9jb3JlX3U4X2NvcHlfc3Vt
X2F0X2tlcm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2Nw
dS9nZW1tL3M4eDhzMzIvaml0X2F2eDUxMl9jb3JlX3U4X2NvcHlfc3VtX2JuX2tlcm4uY3BwCitM
SUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tL3M4eDhzMzIv
aml0X2F2eDUxMl9jb3JlX3U4X2NvcHlfc3VtX2J0X2tlcm4uY3BwCitMSUJNS0xETk5fU1JDUy15
ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NwdS9nZW1tL3M4eDhzMzIvcmVmX2dlbW1fczh4OHMz
Mi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY3B1L2dlbW0v
czh4OHMzMi9zaW1wbGVfZ2VtbV9zOHM4czMyLmNwcAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyBMaWJyYXJ5IHNvdXJjZXMgLSBjcHUvcm5uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvcm5uL2NlbGxfY29t
bW9uLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvcm5u
L2NlbGxfZ3J1LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9j
cHUvcm5uL2NlbGxfZ3J1X2xici5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5f
U1JDKS9zcmMvY3B1L3Jubi9yZWZfcG9zdGdlbW1fZ3J1LmNwcAorTElCTUtMRE5OX1NSQ1MteSAr
PSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvcm5uL3JlZl9wb3N0Z2VtbV9ncnVfbGJyLmNwcAor
TElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jcHUvcm5uL3JlZl9wb3N0
Z2VtbV9sc3RtLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9j
cHUvcm5uL3JlZl9wb3N0Z2VtbV9ybm4uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtM
RE5OX1NSQykvc3JjL2NwdS9ybm4vcmVmX3Jubi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChM
SUJNS0xETk5fU1JDKS9zcmMvY3B1L3Jubi9ybm5fdXRpbHMuY3BwCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIExpYnJhcnkgc291cmNlcyAtIGNvbW1vbgorIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY29tbW9uL2Jh
dGNoX25vcm1hbGl6YXRpb24uY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NS
Qykvc3JjL2NvbW1vbi9jb252b2x1dGlvbi5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJN
S0xETk5fU1JDKS9zcmMvY29tbW9uL2NvbnZvbHV0aW9uX3BkLmNwcAorTElCTUtMRE5OX1NSQ1Mt
eSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jb21tb24vZGVjb252b2x1dGlvbi5jcHAKK0xJQk1L
TEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY29tbW9uL2VsdHdpc2UuY3BwCitM
SUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbi9lbmdpbmUuY3Bw
CitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbi9pbm5lcl9w
cm9kdWN0LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jb21t
b24vbHJuLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jb21t
b24vbWVtb3J5LmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9j
b21tb24vbWVtb3J5X2Rlc2Nfd3JhcHBlci5jcHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJN
S0xETk5fU1JDKS9zcmMvY29tbW9uL21rbGRubl9kZWJ1Zy5jcHAKK0xJQk1LTEROTl9TUkNTLXkg
Kz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY29tbW9uL3Bvb2xpbmcuY3BwCitMSUJNS0xETk5fU1JD
Uy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbi9wcmltaXRpdmUuY3BwCitMSUJNS0xE
Tk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbi9wcmltaXRpdmVfYXR0ci5j
cHAKK0xJQk1LTEROTl9TUkNTLXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY29tbW9uL3ByaW1p
dGl2ZV9kZXNjLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9j
b21tb24vcHJpbWl0aXZlX2l0ZXJhdG9yLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAkKExJQk1L
TEROTl9TUkMpL3NyYy9jb21tb24vcXVlcnkuY3BwCitMSUJNS0xETk5fU1JDUy15ICs9ICQoTElC
TUtMRE5OX1NSQykvc3JjL2NvbW1vbi9yZW9yZGVyLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAk
KExJQk1LTEROTl9TUkMpL3NyYy9jb21tb24vcm5uLmNwcAorTElCTUtMRE5OX1NSQ1MteSArPSAk
KExJQk1LTEROTl9TUkMpL3NyYy9jb21tb24vc2NyYXRjaHBhZC5jcHAKK0xJQk1LTEROTl9TUkNT
LXkgKz0gJChMSUJNS0xETk5fU1JDKS9zcmMvY29tbW9uL3NodWZmbGUuY3BwCitMSUJNS0xETk5f
U1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbi9zb2Z0bWF4LmNwcAorTElCTUtM
RE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jb21tb24vc3RyZWFtLmNwcAorTElC
TUtMRE5OX1NSQ1MteSArPSAkKExJQk1LTEROTl9TUkMpL3NyYy9jb21tb24vdXRpbHMuY3BwCitM
SUJNS0xETk5fU1JDUy15ICs9ICQoTElCTUtMRE5OX1NSQykvc3JjL2NvbW1vbi92ZXJib3NlLmNw
cApkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhjMGYzYTAKLS0tIC9kZXYvbnVsbAorKysgYi9SRUFETUUubWQKQEAg
LTAsMCArMSw1IEBACitsaWJta2wtZG5uIGZvciBVbmlrcmFmdAorPT09PT09PT09PT09PT09PT09
PQorCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3Vt
ZW50YXRpb24gaW4gdGhlIGBkb2MvYAorc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0
IHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NwdWlkLmggYi9pbmNsdWRlL2NwdWlk
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I3NTI1OAotLS0gL2Rldi9u
dWxsCisrKyBiL2luY2x1ZGUvY3B1aWQuaApAQCAtMCwwICsxLDE1OCBAQAorLyogVGFrZW4gZnJv
bSBGcmVlQlNEICovCisKKy8qPT09LS0tLSBjcHVpZC5oIC0gWDg2IGNwdSBtb2RlbCBkZXRlY3Rp
b24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0KKyAqCisgKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp
b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0
cworICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz
dWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8g
ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl
IGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT
SU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP
UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisgKiBUSEUgU09GVFdBUkUuCisgKgorICo9
PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT09PQorICovCisKKyNpZiAhKF9feDg2XzY0X18gfHwgX19pMzg2X18p
CisjZXJyb3IgdGhpcyBoZWFkZXIgaXMgZm9yIHg4NiBvbmx5CisjZW5kaWYKKworLyogRmVhdHVy
ZXMgaW4gJWVjeCBmb3IgbGV2ZWwgMSAqLworI2RlZmluZSBiaXRfU1NFMyAgICAgICAgMHgwMDAw
MDAwMQorI2RlZmluZSBiaXRfUENMTVVMUURRICAgMHgwMDAwMDAwMgorI2RlZmluZSBiaXRfRFRF
UzY0ICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBiaXRfTU9OSVRPUiAgICAgMHgwMDAwMDAwOAor
I2RlZmluZSBiaXRfRFNDUEwgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBiaXRfVk1YICAgICAg
ICAgMHgwMDAwMDAyMAorI2RlZmluZSBiaXRfU01YICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmlu
ZSBiaXRfRUlTVCAgICAgICAgMHgwMDAwMDA4MAorI2RlZmluZSBiaXRfVE0yICAgICAgICAgMHgw
MDAwMDEwMAorI2RlZmluZSBiaXRfU1NTRTMgICAgICAgMHgwMDAwMDIwMAorI2RlZmluZSBiaXRf
Q05YVElEICAgICAgMHgwMDAwMDQwMAorI2RlZmluZSBiaXRfRk1BICAgICAgICAgMHgwMDAwMTAw
MAorI2RlZmluZSBiaXRfQ01QWENIRzE2QiAgMHgwMDAwMjAwMAorI2RlZmluZSBiaXRfeFRQUiAg
ICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBiaXRfUERDTSAgICAgICAgMHgwMDAwODAwMAorI2Rl
ZmluZSBiaXRfUENJRCAgICAgICAgMHgwMDAyMDAwMAorI2RlZmluZSBiaXRfRENBICAgICAgICAg
MHgwMDA0MDAwMAorI2RlZmluZSBiaXRfU1NFNDEgICAgICAgMHgwMDA4MDAwMAorI2RlZmluZSBi
aXRfU1NFNDIgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBiaXRfeDJBUElDICAgICAgMHgwMDIw
MDAwMAorI2RlZmluZSBiaXRfTU9WQkUgICAgICAgMHgwMDQwMDAwMAorI2RlZmluZSBiaXRfUE9Q
Q05UICAgICAgMHgwMDgwMDAwMAorI2RlZmluZSBiaXRfVFNDRGVhZGxpbmUgMHgwMTAwMDAwMAor
I2RlZmluZSBiaXRfQUVTTkkgICAgICAgMHgwMjAwMDAwMAorI2RlZmluZSBiaXRfWFNBVkUgICAg
ICAgMHgwNDAwMDAwMAorI2RlZmluZSBiaXRfT1NYU0FWRSAgICAgMHgwODAwMDAwMAorI2RlZmlu
ZSBiaXRfQVZYICAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBiaXRfUkRSQU5EICAgICAgMHg0
MDAwMDAwMAorCisvKiBGZWF0dXJlcyBpbiAlZWR4IGZvciBsZXZlbCAxICovCisjZGVmaW5lIGJp
dF9GUFUgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIGJpdF9WTUUgICAgICAgICAweDAwMDAw
MDAyCisjZGVmaW5lIGJpdF9ERSAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIGJpdF9QU0Ug
ICAgICAgICAweDAwMDAwMDA4CisjZGVmaW5lIGJpdF9UU0MgICAgICAgICAweDAwMDAwMDEwCisj
ZGVmaW5lIGJpdF9NU1IgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIGJpdF9QQUUgICAgICAg
ICAweDAwMDAwMDQwCisjZGVmaW5lIGJpdF9NQ0UgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5l
IGJpdF9DWDggICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIGJpdF9BUElDICAgICAgICAweDAw
MDAwMjAwCisjZGVmaW5lIGJpdF9TRVAgICAgICAgICAweDAwMDAwODAwCisjZGVmaW5lIGJpdF9N
VFJSICAgICAgICAweDAwMDAxMDAwCisjZGVmaW5lIGJpdF9QR0UgICAgICAgICAweDAwMDAyMDAw
CisjZGVmaW5lIGJpdF9NQ0EgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIGJpdF9DTU9WICAg
ICAgICAweDAwMDA4MDAwCisjZGVmaW5lIGJpdF9QQVQgICAgICAgICAweDAwMDEwMDAwCisjZGVm
aW5lIGJpdF9QU0UzNiAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIGJpdF9QU04gICAgICAgICAw
eDAwMDQwMDAwCisjZGVmaW5lIGJpdF9DTEZTSCAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIGJp
dF9EUyAgICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIGJpdF9BQ1BJICAgICAgICAweDAwNDAw
MDAwCisjZGVmaW5lIGJpdF9NTVggICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIGJpdF9GWFNS
ICAgICAgICAweDAxMDAwMDAwCisjZGVmaW5lIGJpdF9TU0UgICAgICAgICAweDAyMDAwMDAwCisj
ZGVmaW5lIGJpdF9TU0UyICAgICAgICAweDA0MDAwMDAwCisjZGVmaW5lIGJpdF9TUyAgICAgICAg
ICAweDA4MDAwMDAwCisjZGVmaW5lIGJpdF9IVFQgICAgICAgICAweDEwMDAwMDAwCisjZGVmaW5l
IGJpdF9UTSAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIGJpdF9QQkUgICAgICAgICAweDgw
MDAwMDAwCisKKy8qIEZlYXR1cmVzIGluICVlYnggZm9yIGxldmVsIDcgc3ViLWxlYWYgMCAqLwor
I2RlZmluZSBiaXRfRlNHU0JBU0UgICAgMHgwMDAwMDAwMQorI2RlZmluZSBiaXRfU01FUCAgICAg
ICAgMHgwMDAwMDA4MAorI2RlZmluZSBiaXRfRU5IX01PVlNCICAgMHgwMDAwMDIwMAorCisvKiBQ
SUMgb24gaTM4NiB1c2VzICVlYngsIHNvIHByZXNlcnZlIGl0LiAqLworI2lmIF9faTM4Nl9fCisj
ZGVmaW5lIF9fY3B1aWQoX19sZXZlbCwgX19lYXgsIF9fZWJ4LCBfX2VjeCwgX19lZHgpIFwKKyAg
ICBfX2FzbSgiICBwdXNobCAgJSVlYnhcbiIgXAorICAgICAgICAgICIgIGNwdWlkXG4iIFwKKyAg
ICAgICAgICAiICBtb3YgICAgJSVlYngsJTFcbiIgXAorICAgICAgICAgICIgIHBvcGwgICAlJWVi
eCIgXAorICAgICAgICA6ICI9YSIoX19lYXgpLCAiPXIiIChfX2VieCksICI9YyIoX19lY3gpLCAi
PWQiKF9fZWR4KSBcCisgICAgICAgIDogIjAiKF9fbGV2ZWwpKQorCisjZGVmaW5lIF9fY3B1aWRf
Y291bnQoX19sZXZlbCwgX19jb3VudCwgX19lYXgsIF9fZWJ4LCBfX2VjeCwgX19lZHgpIFwKKyAg
ICBfX2FzbSgiICBwdXNobCAgJSVlYnhcbiIgXAorICAgICAgICAgICIgIGNwdWlkXG4iIFwKKyAg
ICAgICAgICAiICBtb3YgICAgJSVlYngsJTFcbiIgXAorICAgICAgICAgICIgIHBvcGwgICAlJWVi
eCIgXAorICAgICAgICA6ICI9YSIoX19lYXgpLCAiPXIiIChfX2VieCksICI9YyIoX19lY3gpLCAi
PWQiKF9fZWR4KSBcCisgICAgICAgIDogIjAiKF9fbGV2ZWwpLCAiMiIoX19jb3VudCkpCisjZWxz
ZQorI2RlZmluZSBfX2NwdWlkKF9fbGV2ZWwsIF9fZWF4LCBfX2VieCwgX19lY3gsIF9fZWR4KSBc
CisgICAgX19hc20oImNwdWlkIiA6ICI9YSIoX19lYXgpLCAiPWIiIChfX2VieCksICI9YyIoX19l
Y3gpLCAiPWQiKF9fZWR4KSBcCisgICAgICAgICAgICAgICAgICA6ICIwIihfX2xldmVsKSkKKwor
I2RlZmluZSBfX2NwdWlkX2NvdW50KF9fbGV2ZWwsIF9fY291bnQsIF9fZWF4LCBfX2VieCwgX19l
Y3gsIF9fZWR4KSBcCisgICAgX19hc20oImNwdWlkIiA6ICI9YSIoX19lYXgpLCAiPWIiIChfX2Vi
eCksICI9YyIoX19lY3gpLCAiPWQiKF9fZWR4KSBcCisgICAgICAgICAgICAgICAgICA6ICIwIihf
X2xldmVsKSwgIjIiKF9fY291bnQpKQorI2VuZGlmCisKK3N0YXRpYyBfX2lubGluZSBpbnQgX19n
ZXRfY3B1aWQgKHVuc2lnbmVkIGludCBfX2xldmVsLCB1bnNpZ25lZCBpbnQgKl9fZWF4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpfX2VieCwgdW5zaWdu
ZWQgaW50ICpfX2VjeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCAqX19lZHgpIHsKKyAgICBfX2NwdWlkKF9fbGV2ZWwsICpfX2VheCwgKl9fZWJ4LCAqX19l
Y3gsICpfX2VkeCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBfX2lubGluZSBpbnQgX19n
ZXRfY3B1aWRfbWF4ICh1bnNpZ25lZCBpbnQgX19sZXZlbCwgdW5zaWduZWQgaW50ICpfX3NpZykK
K3sKKyAgICB1bnNpZ25lZCBpbnQgX19lYXgsIF9fZWJ4LCBfX2VjeCwgX19lZHg7CisjaWYgX19p
Mzg2X18KKyAgICBpbnQgX19jcHVpZF9zdXBwb3J0ZWQ7CisKKyAgICBfX2FzbSgiICBwdXNoZmxc
biIKKyAgICAgICAgICAiICBwb3BsICAgJSVlYXhcbiIKKyAgICAgICAgICAiICBtb3ZsICAgJSVl
YXgsJSVlY3hcbiIKKyAgICAgICAgICAiICB4b3JsICAgJDB4MDAyMDAwMDAsJSVlYXhcbiIKKyAg
ICAgICAgICAiICBwdXNobCAgJSVlYXhcbiIKKyAgICAgICAgICAiICBwb3BmbFxuIgorICAgICAg
ICAgICIgIHB1c2hmbFxuIgorICAgICAgICAgICIgIHBvcGwgICAlJWVheFxuIgorICAgICAgICAg
ICIgIG1vdmwgICAkMCwlMFxuIgorICAgICAgICAgICIgIGNtcGwgICAlJWVheCwlJWVjeFxuIgor
ICAgICAgICAgICIgIGplICAgICAxZlxuIgorICAgICAgICAgICIgIG1vdmwgICAkMSwlMFxuIgor
ICAgICAgICAgICIxOiIKKyAgICAgICAgOiAiPXIiIChfX2NwdWlkX3N1cHBvcnRlZCkgOiA6ICJl
YXgiLCAiZWN4Iik7CisgICAgaWYgKCFfX2NwdWlkX3N1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJu
IDA7CisjZW5kaWYKKworICAgIF9fY3B1aWQoX19sZXZlbCwgX19lYXgsIF9fZWJ4LCBfX2VjeCwg
X19lZHgpOworICAgIGlmIChfX3NpZykKKyAgICAgICAgKl9fc2lnID0gX19lYng7CisgICAgcmV0
dXJuIF9fZWF4OworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ta2xkbm5fdmVyc2lvbi5oIGIvaW5j
bHVkZS9ta2xkbm5fdmVyc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmJjZmJjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21rbGRubl92ZXJzaW9uLmgKQEAg
LTAsMCArMSwzMiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IDIwMTkg
SW50ZWwgQ29ycG9yYXRpb24KKyoKKyogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqCisqICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoKKyogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKyogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgTUtMRE5OX1ZFUlNJT05f
SAorI2RlZmluZSBNS0xETk5fVkVSU0lPTl9ICisKKy8qIE1ham9yIHZlcnNpb24gb2YgTUtMLURO
TiAqLworI2RlZmluZSBNS0xETk5fVkVSU0lPTl9NQUpPUiAwCisKKy8qIE1pbm9yIHZlcnNpb24g
b2YgTUtMLUROTiAqLworI2RlZmluZSBNS0xETk5fVkVSU0lPTl9NSU5PUiAxOQorCisvKiBQYXRj
aCB2ZXJzaW9uIG9mIE1LTC1ETk4gKi8KKyNkZWZpbmUgTUtMRE5OX1ZFUlNJT05fUEFUQ0ggMAor
CisvKiBHaXQgQ29tbWl0IEhhc2ggb2YgTUtMLUROTiAqLworI2RlZmluZSBNS0xETk5fVkVSU0lP
Tl9IQVNIICAiZGQ5NjNlNWEwZjJmZjQwOTliOTQ0MmU1MGMzOGM5Y2M5YmZhYzI5YiIKKworI2Vu
ZGlmCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 18:42:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 18: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 1hb8Cc-0004cI-6r; Wed, 12 Jun 2019 18:42:30 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb8Ca-0004cD-Fs
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 18:42:28 +0000
X-Inumbo-ID: d1ef00f8-8d41-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d1ef00f8-8d41-11e9-8980-bc764e045a96;
 Wed, 12 Jun 2019 18:42:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 392BBF201E;
 Wed, 12 Jun 2019 20:42:24 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id X6FoXntgCHRg; Wed, 12 Jun 2019 20:42:24 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 09F9FF2018;
 Wed, 12 Jun 2019 20:42:18 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Wed, 12 Jun 2019 20:42:17
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 2/3] Add documentation
Thread-Index: AQHVIU6PBcj85USQI0+ZLRpXOw43Iw==
Date: Wed, 12 Jun 2019 18:42:17 +0000
Message-ID: <F6FA7675-A8CC-4E1A-BE74-4E383D839325@neclab.eu>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.208]
Content-ID: <321C1283D689844D9DF0A7A5B78F9FA2@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 2/3] Add
 documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwgdGhhbmtzIGZvciB2MiBvZiB0aGUgbGlicmFyeS4gVGhlIGNvcHlyaWdodCBsaW5l
IGluIENPUFlJTkcubWQgaXNuJ3QgZmlsbGVkIGluLCBidXQgSSdsbCBkbyBzbyBvbiB1cHN0cmVh
bWluZy4NCg0KLS0gRmVsaXBlDQoNClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5o
dWljaUBuZWNsYWIuZXU+DQoNCu+7v09uIDEyLjA2LjE5LCAxMzo1NSwgIk1pbmlvcy1kZXZlbCBv
biBiZWhhbGYgb2YgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8bWluaW9zLWRldmVsLWJv
dW5jZXNAbGlzdHMueGVucHJvamVjdC5vcmcgb24gYmVoYWxmIG9mIHZsYWRfYW5kcmVpLmJhZG9p
dUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOg0KDQogICAgU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgIC0tLQ0K
ICAgICBDT0RJTkdfU1RZTEUubWQgfCAgNCArKysrDQogICAgIENPTlRSSUJVVElORy5tZCB8ICA0
ICsrKysNCiAgICAgQ09QWUlORy5tZCAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrDQogICAgIE1BSU5UQUlORVJTLm1kICB8IDExICsrKysrKysrKysrDQogICAgIFJFQURN
RS5tZCAgICAgICB8ICA1ICsrKysrDQogICAgIDUgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9u
cygrKQ0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kDQogICAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENP
UFlJTkcubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kDQogICAgIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvQ09ESU5H
X1NUWUxFLm1kIGIvQ09ESU5HX1NUWUxFLm1kDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAg
ICBpbmRleCAwMDAwMDAwLi41NzMwMDQxDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0NP
RElOR19TVFlMRS5tZA0KICAgIEBAIC0wLDAgKzEsNCBAQA0KICAgICtDb2RpbmcgU3R5bGUNCiAg
ICArPT09PT09PT09PT09DQogICAgKw0KICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT0RJTkdf
U1RZTEUubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICBkaWZm
IC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kDQogICAgbmV3IGZpbGUg
bW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi41ZjU1ZWNhDQogICAgLS0tIC9kZXYvbnVs
bA0KICAgICsrKyBiL0NPTlRSSUJVVElORy5tZA0KICAgIEBAIC0wLDAgKzEsNCBAQA0KICAgICtD
b250cmlidXRpbmcgdG8gVW5pa3JhZnQNCiAgICArPT09PT09PT09PT09PT09PT09PT09PT0NCiAg
ICArDQogICAgK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0
aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KICAgIGRpZmYgLS1naXQgYS9DT1BZSU5HLm1k
IGIvQ09QWUlORy5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAw
MC4uZGIzNGI5Yg0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9DT1BZSU5HLm1kDQogICAg
QEAgLTAsMCArMSwzMCBAQA0KICAgICtMaWNlbnNlDQogICAgKz09PT09PT0NCiAgICArDQogICAg
K1VuaWtyYWZ0IGZ4ZGl2IHdyYXBwZXJzDQogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
ICAgKw0KICAgICtUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgd3JhcHBlciBjb2RlIHRvIGJ1aWxk
IGZ4ZGl2IHdpdGggVW5pa3JhZnQuDQogICAgK0VhY2ggQyBjb2RlIGZpbGUgaW4gdGhpcyByZXBv
c2l0b3J5IHNob3VsZCBkZWNsYXJlIHdobyBpcyB0aGUNCiAgICArY29weXJpZ2h0IG93bmVyIGFu
ZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcw0KICAgICtsaWNl
bnNlZC4gSWYgc3VjaCBhIGxpY2VuY2Ugbm90ZSBpcyBtaXNzaW5nLCB0aGUgZm9sbG93aW5nIGNv
cHlyaWdodA0KICAgICtub3RpY2Ugd2lsbCBhcHBseToNCiAgICArDQogICAgKw0KICAgICsJQ29w
eXJpZ2h0KEMpIFllYXIgTmFtZSwgSW5zdGl0dXRpb24NCiAgICArCQ0KICAgICsJVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KICAg
ICsJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYw0KICAgICsJTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyDQogICAgKwl2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQogICAgKwkNCiAgICArCVRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KICAg
ICsJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCiAgICArCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQogICAgKwlMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KICAgICsJDQogICAgKwlZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQogICAgKwlMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuTElCOw0KICAg
ICsJaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLA0K
ICAgICsJNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQQ0KICAgICsNCiAgICBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVS
Uy5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uY2JkMDY5
Zg0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9NQUlOVEFJTkVSUy5tZA0KICAgIEBAIC0w
LDAgKzEsMTEgQEANCiAgICArTWFpbnRhaW5lcnMgTGlzdA0KICAgICs9PT09PT09PT09PT09PT09
DQogICAgKw0KICAgICtGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwg
cGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4NCiAgICArdGhlIG1haW4gVW5pa3Jh
ZnQgcmVwb3NpdG9yeS4NCiAgICArDQogICAgKwlMSUJGWERJVi1VTklLUkFGVA0KICAgICsJTToJ
RmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KICAgICsJTToJVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgICsJTDoJ
bWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcNCiAgICArCUY6ICoNCiAgICBkaWZmIC0tZ2l0IGEv
UkVBRE1FLm1kIGIvUkVBRE1FLm1kDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi43MjhiOTdlDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL1JFQURNRS5t
ZA0KICAgIEBAIC0wLDAgKzEsNSBAQA0KICAgICtmeGRpdiBmb3IgVW5pa3JhZnQNCiAgICArPT09
PT09PT09PT09PT09PT09PQ0KICAgICsNCiAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1F
Lm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2ANCiAgICArc3Vi
ZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgLS0gDQogICAg
Mi4yMS4wDQogICAgDQogICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18NCiAgICBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0DQogICAgTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnDQogICAgaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 12 18:42:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 12 Jun 2019 18:42: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 1hb8D3-0004d1-9f; Wed, 12 Jun 2019 18:42: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=d8jv=UL=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hb8D1-0004cw-Ki
 for minios-devel@lists.xen.org; Wed, 12 Jun 2019 18:42:55 +0000
X-Inumbo-ID: e04ca758-8d41-11e9-9c74-ff4bb6cdb10e
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e04ca758-8d41-11e9-9c74-ff4bb6cdb10e;
 Wed, 12 Jun 2019 18:42:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 70938F201E;
 Wed, 12 Jun 2019 20:42:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hB8D1mZgw4R8; Wed, 12 Jun 2019 20:42:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 48EC4F2018;
 Wed, 12 Jun 2019 20:42:42 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Wed, 12 Jun 2019 20:42:42
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBFXDIV PATCH v2 3/3] Initial port of fxdiv to
 Unikraft
Thread-Index: AQHVIRWoSFZE1Co+VUebig+Zs3Ez+qaYWw+A
Date: Wed, 12 Jun 2019 18:42:41 +0000
Message-ID: <E488AE08-58E7-4E92-A382-D2F8256A4635@neclab.eu>
References: <20190612115441.8951-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190612115441.8951-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190612115441.8951-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.208]
Content-ID: <4B345ECF9E7B6E43BA56ED6947081F53@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFXDIV PATCH v2 3/3] Initial port of
 fxdiv to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0K77u/
T24gMTIuMDYuMTksIDEzOjU0LCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9h
bmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIGlzIG91ciBp
bml0aWFsIHBvcnQgb2YgZnhkaXYgdG8gVW5pa3JhZnQgYXMgYW4gZXh0ZXJuYWwgbGlicmFyeS4g
TGliY3h4IGlzDQogICAgcmVxdWlyZWQuIFdoZW4gYWRkaW5nIHRoZSBsaWJyYXJ5IHRvIHRoZSBk
ZXBlbmRlbmN5IGxpc3QgaXQgc2hvdWxkIHN0YXkgYWZ0ZXINCiAgICBsaWJjeHggKGVnLiAuLi46
JChVS19MSUJTKS9saWJ1bndpbmQ6JChVS19MSUJTKS9jb21waWxlci1ydDokKFVLX0xJQlMpL2xp
YmN4eGFiaToNCiAgICAkKFVLX0xJQlMpL2xpYmN4eDokKFVLX0xJQlMpL25ld2xpYjokKFVLX0xJ
QlMpL2Z4ZGl2Oi4uLikNCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRv
aXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgLS0tDQogICAgIENv
bmZpZy51ayAgICAgfCAgNSArKysrDQogICAgIE1ha2VmaWxlLnVrICAgfCA3NCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgZXhwb3J0c3lt
cy51ayB8ICAxICsNCiAgICAgMyBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspDQogICAg
IGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1h
a2VmaWxlLnVrDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrDQogICAgDQog
ICAgZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KICAgIG5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uMmFjNzljMw0KICAgIC0tLSAvZGV2L251bGwNCiAg
ICArKysgYi9Db25maWcudWsNCiAgICBAQCAtMCwwICsxLDUgQEANCiAgICArbWVudWNvbmZpZyBM
SUJGWERJVg0KICAgICsgICAgYm9vbCAiZnhkaXYgLSBsaWJyYXJ5IGZvciBkaXZpc2lvbiB2aWEg
Zml4ZWQtcG9pbnQgbXVsdGlwbGljYXRpb24gYnkgaW52ZXJzZSINCiAgICArICAgIHNlbGVjdCBM
SUJDWFgNCiAgICArICAgIGRlZmF1bHQgbg0KICAgICsNCiAgICBkaWZmIC0tZ2l0IGEvTWFrZWZp
bGUudWsgYi9NYWtlZmlsZS51aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXgg
MDAwMDAwMC4uNDA1ODU3OQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9NYWtlZmlsZS51
aw0KICAgIEBAIC0wLDAgKzEsNzQgQEANCiAgICArIyAgbGliZnhkaXYgY29uZmlnIGZpbGUNCiAg
ICArIw0KICAgICsjICBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJh
ZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgKyMNCiAgICArIyAgQ29weXJpZ2h0IChjKSAyMDE5
LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4NCiAgICArIw0KICAgICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAgICArIyAgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogICAgKyMg
IGFyZSBtZXQ6DQogICAgKyMNCiAgICArIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAg
ICsjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodA0KICAgICsjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogICAgKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uDQogICAgKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xk
ZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAgICArIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCiAgICArIyAg
ICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4NCiAgICArIw0KICAgICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCiAgICArIyAgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQ0KICAgICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICAgICsjICBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JT
IEJFDQogICAgKyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCiAgICArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCiAgICArIyAgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTDQogICAgKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQogICAgKyMgIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpDQogICAgKyMgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogICAgKyMgIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLg0KICAgICsjDQogICAgKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIw0KICAgICsjIExpYnJhcnkgcmVnaXN0cmF0aW9uDQogICAgKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQogICAgKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZnhkaXYsJChDT05GSUdf
TElCRlhESVYpKSkNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMg
U291cmNlcw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJGWERJVl9WRVJT
SU9OPWY4YzUzNTQ2NzllYzI1OTc3OTJiYzcwYTllMDZlZmY1MGM1MDhiOWENCiAgICArTElCRlhE
SVZfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9NYXJhdHlzemN6YS9GWGRpdi9hcmNoaXZlL2Y4YzUz
NTQuemlwDQogICAgK0xJQkZYRElWX1BBVENIRElSPSQoTElCRlhESVZfQkFTRSkvcGF0Y2hlcw0K
ICAgICskKGV2YWwgJChjYWxsIGZldGNoLGxpYmZ4ZGl2LCQoTElCRlhESVZfVVJMKSkpDQogICAg
Kw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIEhlbHBlcnMNCiAgICArIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArTElCRlhESVZfU1VCRElSPUZYZGl2LSQoTElCRlhE
SVZfVkVSU0lPTikNCiAgICArTElCRlhESVZfU1JDPSQoTElCRlhESVZfT1JJR0lOKS8kKExJQkZY
RElWX1NVQkRJUikNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMg
TGlicmFyeSBpbmNsdWRlcw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtDSU5D
TFVERVMtJChDT05GSUdfTElCRlhESVYpICs9IC1JJChMSUJGWERJVl9TUkMpL2luY2x1ZGUNCiAg
ICArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkZYRElWKSArPSAtSSQoTElCRlhESVZfQkFTRSkvaW5j
bHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkkKExJQkZYRElW
X1NSQykvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJGWERJVikgKz0gLUkk
KExJQkZYRElWX0JBU0UpL2luY2x1ZGUNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjDQogICAgKyMgR2xvYmFsIGZsYWdzDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog
ICAgKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxv
b2sgbmVhdGVyDQogICAgK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciAt
V25vLXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwJXA0KICAgICstV25vLXVudXNlZC1idXQt
c2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRzCQlcDQog
ICAgKy1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMg
LVduby11bmluaXRpYWxpemVkCQlcDQogICAgKy1Xbm8tYXJyYXktYm91bmRzIC1Xbm8tbWF5YmUt
dW5pbml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZC12YWx1ZQlcDQogICAg
Ky1Xbm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rp
b24tZGVjbGFyYXRpb24JCVwNCiAgICArLVduby1taXNzaW5nLWJyYWNlcyAtV25vLWVuZGlmLWxh
YmVscyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQlcDQogICAgKy1Xbm8taW1wbGljaXQt
ZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0cyAtV25vLXNpZ24tY29tcGFyZQ0K
ICAgICtMSUJGWERJVl9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICArTElC
RlhESVZfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICArDQogICAgZGlm
ZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrDQogICAgbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi42MjFlOTRmDQogICAgLS0tIC9kZXYvbnVsbA0K
ICAgICsrKyBiL2V4cG9ydHN5bXMudWsNCiAgICBAQCAtMCwwICsxIEBADQogICAgK25vbmUNCiAg
ICAtLSANCiAgICAyLjIxLjANCiAgICANCiAgICANCg0KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 16:24:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 16: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 1hbSWV-00018i-JA; Thu, 13 Jun 2019 16:24:23 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbSWT-00018d-Mn
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 16:24:21 +0000
X-Inumbo-ID: b0493db2-8df7-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.57]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b0493db2-8df7-11e9-8980-bc764e045a96;
 Thu, 13 Jun 2019 16:24:17 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5098.eurprd01.prod.exchangelabs.com (20.177.209.215) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Thu, 13 Jun
 2019 16:24:15 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 16:24:15 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add /dev/random and
 /dev/urandom
Thread-Index: AQHVIgRxLwrou1pmsUaBwFiWJVWSvQ==
Date: Thu, 13 Jun 2019 16:24:14 +0000
Message-ID: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0116.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:19::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.104]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 0defaf20-890c-4ecf-cedc-08d6f01b9344
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5098; 
x-ms-traffictypediagnostic: PR1PR01MB5098:
x-microsoft-antispam-prvs: <PR1PR01MB5098C6EE057FCF1352AF93F9A6EF0@PR1PR01MB5098.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(396003)(376002)(346002)(39840400004)(366004)(199004)(189003)(52116002)(74482002)(86362001)(68736007)(14454004)(71190400001)(6486002)(6436002)(71200400001)(316002)(786003)(50226002)(7736002)(305945005)(2906002)(6916009)(386003)(99286004)(6506007)(8936002)(4326008)(25786009)(8676002)(53936002)(81156014)(508600001)(81166006)(2351001)(486006)(186003)(102836004)(6116002)(2501003)(5660300002)(256004)(73956011)(66066001)(85182001)(54906003)(66446008)(1076003)(64756008)(66476007)(66556008)(26005)(2616005)(3846002)(476003)(85202003)(6512007)(14444005)(5640700003)(66946007);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5098;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: xIH617vF/OKBkOUnAc4JlFEi7pa1AjqaM0h8SWERJOmFCPHcHZ/FPv/lsi6DAQkPmZ/O3bz14eys71rd0c1DyXq2Y0Z8+BzxLIoVqFOLb6HlX+GjZTuwFr3xeylMCy441Gw6JpLNTKTM3O/vpo1cG70JlTtWaYO38hkKvqC0qjd1k1YMAMzV8NGNypQChODrL1rgTIeAvdfI3EkQReGPLRcFrJF+UdPtgXEPMk8dLeVPefv1rgnEjs+QPlZ0cHePOOtT5IYOZX5JK7he5RQu/RXIdvNXrB1n2k9Qt4SNlU/p1Vdrgc89/rqJHzTAY/ZgO65TLjNU9jeUBBVh54SeNOpNldwhuz5FP1A4UfKOwvlsXC8pjN7GmQ6b7gXlV6vxgCQDboR7Ri6ryfpVthE1d2fqvXv8nfesRo3ZQhFqx74=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 0defaf20-890c-4ecf-cedc-08d6f01b9344
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 16:24:14.9434 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5098
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSAvZGV2L3JhbmRvbSBhbmQgL2Rldi91cmFuZG9tIGRldmljZXMu
IFNpbmNlIHdlIGRvIG5vdCBoYXZlDQphbnkgZW50cm9weSBnZW5lcmF0aW5nIGZ1bmN0aW9uIGJv
dGggZGV2aWNlcyBzaGFyZSB0aGUgc2FtZSBoYW5kbGVycy4gVGhlDQpyZWdpc3RyYXRpb24gb2Yg
dGhlIGRldmljZXMgaXMgZ3VhcmRlZCBieSB0aGUgY29uZmlnIG9wdGlvbiBDT05GSUdfREVWX1JB
TkRPTS4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5i
YWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KLS0tDQogbGliL3Vrc3dyYW5kL0NvbmZpZy51ayAgIHwg
ICA2ICsrDQogbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrIHwgICAzICsNCiBsaWIvdWtzd3JhbmQv
bXdjX2Rldi5jICAgfCAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
DQogMyBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdWtzd3JhbmQvbXdjX2Rldi5jDQoNCmRpZmYgLS1naXQgYS9saWIvdWtzd3JhbmQvQ29u
ZmlnLnVrIGIvbGliL3Vrc3dyYW5kL0NvbmZpZy51aw0KaW5kZXggNDRmNmVlNTAuLmExYTg0YmM1
IDEwMDY0NA0KLS0tIGEvbGliL3Vrc3dyYW5kL0NvbmZpZy51aw0KKysrIGIvbGliL3Vrc3dyYW5k
L0NvbmZpZy51aw0KQEAgLTE3LDQgKzE3LDEwIEBAIGVuZGNob2ljZQ0KIGNvbmZpZyBMSUJVS1NX
UkFORF9JTklUSUFMU0VFRA0KIAlpbnQgIkluaXRpYWwgcmFuZG9tIHNlZWQiDQogCWRlZmF1bHQg
MjMNCisNCitjb25maWcgREVWX1JBTkRPTQ0KKwlib29sICIvZGV2L3JhbmRvbSBkZXZpY2UiDQor
CXNlbGVjdCBMSUJERVZGUw0KKwlkZWZhdWx0IG4NCisNCiBlbmRpZg0KZGlmZiAtLWdpdCBhL2xp
Yi91a3N3cmFuZC9NYWtlZmlsZS51ayBiL2xpYi91a3N3cmFuZC9NYWtlZmlsZS51aw0KaW5kZXgg
OGQ0NDgyYzQuLjI1MjQ3NDc0IDEwMDY0NA0KLS0tIGEvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVr
DQorKysgYi9saWIvdWtzd3JhbmQvTWFrZWZpbGUudWsNCkBAIC00LDMgKzQsNiBAQCBDSU5DTFVE
RVMtJChDT05GSUdfTElCVUtTV1JBTkQpCSs9IC1JJChMSUJVS1NXUkFORF9CQVNFKS9pbmNsdWRl
DQogQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUtTV1JBTkQpICs9IC1JJChMSUJVS1NXUkFORF9C
QVNFKS9pbmNsdWRlDQogDQogTElCVUtTV1JBTkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9N
V0MpICs9ICQoTElCVUtTV1JBTkRfQkFTRSkvbXdjLmMNCitpZmRlZiBDT05GSUdfREVWX1JBTkRP
TQ0KK0xJQlVLU1dSQU5EX1NSQ1MtJChDT05GSUdfTElCVUtTV1JBTkRfTVdDKSArPSAkKExJQlVL
U1dSQU5EX0JBU0UpL213Y19kZXYuYw0KK2VuZGlmDQpkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5k
L213Y19kZXYuYyBiL2xpYi91a3N3cmFuZC9td2NfZGV2LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
DQppbmRleCAwMDAwMDAwMC4uNWE5YzBkNDkNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYi91a3N3
cmFuZC9td2NfZGV2LmMNCkBAIC0wLDAgKzEsMTE5IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50
aWZpZXI6IEJTRC0zLUNsYXVzZSAqLw0KKy8qDQorICogQXV0aG9yczogVmxhZC1BbmRyZWkgQmFk
b2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KKyAqDQorICogQ29weXJp
Z2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFy
ZSBtZXQ6DQorICoNCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0K
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisgKiAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQ0KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFDQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCisgKiBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JT
IEJFDQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUg0KKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
DQorICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4NCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQ0KKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFDQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICoNCisgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KKyAqLw0K
Kw0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUg
PHVrL2N0b3JzLmg+DQorI2luY2x1ZGUgPHVrL3ByaW50Lmg+DQorI2luY2x1ZGUgPHVrL3N3cmFu
ZC5oPg0KKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4NCisjaW5jbHVkZSA8dWsvY29uZmlnLmg+DQor
I2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4NCisjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4NCisj
aW5jbHVkZSA8ZGV2ZnMvZGV2aWNlLmg+DQorDQorI2RlZmluZSBERVZfUkFORE9NX05BTUUgInJh
bmRvbSINCisjZGVmaW5lIERFVl9VUkFORE9NX05BTUUgInVyYW5kb20iDQorDQoraW50IGRldl9y
YW5kb21fcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYgX191bnVzZWQsIHN0cnVjdCB1aW8gKnVpbywN
CisJCQlpbnQgZmxhZ3MgX191bnVzZWQpDQorew0KKwlzaXplX3QgY291bnQsIHN0ZXAsIGNodW5r
X3NpemUsIGk7DQorCWNoYXIgKmJ1ZjsNCisJX191MzIgcmQ7DQorDQorCWJ1ZiA9IHVpby0+dWlv
X2lvdi0+aW92X2Jhc2U7DQorCWNvdW50ID0gdWlvLT51aW9faW92LT5pb3ZfbGVuOw0KKw0KKwlz
dGVwID0gc2l6ZW9mKF9fdTMyKTsNCisJY2h1bmtfc2l6ZSA9IGNvdW50ICUgc3RlcDsNCisNCisJ
Zm9yIChpID0gMDsgaSA8IGNvdW50IC0gY2h1bmtfc2l6ZTsgaSArPSBzdGVwKQ0KKwkJKigoX191
MzIgKilidWYgKyBpKSA9IHVrX3N3cmFuZF9yYW5kcigpOw0KKw0KKwkvKiBmaWxsIHRoZSByZW1h
aW5pbmcgYnl0ZXMgb2YgdGhlIGJ1ZmZlciAqLw0KKwlpZiAoY2h1bmtfc2l6ZSA+IDApIHsNCisJ
CXJkID0gdWtfc3dyYW5kX3JhbmRyKCk7DQorCQltZW1jcHkoYnVmICsgaSwgJnJkLCBjaHVua19z
aXplKTsNCisJfQ0KKw0KKwl1aW8tPnVpb19yZXNpZCA9IDA7DQorCXJldHVybiAwOw0KK30NCisN
CitpbnQgZGV2X3JhbmRvbV9vcGVuKHN0cnVjdCBkZXZpY2UgKmRldmljZSBfX3VudXNlZCwgaW50
IG1vZGUgX191bnVzZWQpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorDQoraW50IGRldl9yYW5k
b21fY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2aWNlIF9fdW51c2VkKQ0KK3sNCisJcmV0dXJuIDA7
DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgZGV2b3BzIHJhbmRvbV9kZXZvcHMgPSB7DQorCS5yZWFk
ID0gZGV2X3JhbmRvbV9yZWFkLA0KKwkub3BlbiA9IGRldl9yYW5kb21fb3BlbiwNCisJLmNsb3Nl
ID0gZGV2X3JhbmRvbV9jbG9zZSwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgZHJpdmVyIGRydl9y
YW5kb20gPSB7DQorCS5kZXZvcHMgPSAmcmFuZG9tX2Rldm9wcywNCisJLmRldnN6ID0gMCwNCisJ
Lm5hbWUgPSBERVZfUkFORE9NX05BTUUNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgZHJpdmVyIGRy
dl91cmFuZG9tID0gew0KKwkuZGV2b3BzID0gJnJhbmRvbV9kZXZvcHMsDQorCS5kZXZzeiA9IDAs
DQorCS5uYW1lID0gREVWX1VSQU5ET01fTkFNRQ0KK307DQorDQorX19jb25zdHJ1Y3Rvcl9wcmlv
KDEwMikgc3RhdGljIHZvaWQgX3VrX2Rldl9zd3JhbmRfY3Rvcih2b2lkKQ0KK3sNCisJc3RydWN0
IGRldmljZSAqZGV2Ow0KKw0KKwl1a19wcl9pbmZvKCJBZGQgL2Rldi9yYW5kb20gYW5kIC9kZXYv
dXJhbmRvbVxuIik7DQorDQorCS8qIHJlZ2lzdGVyIC9kZXYvdXJhbmRvbSAqLw0KKwlkZXYgPSBk
ZXZpY2VfY3JlYXRlKCZkcnZfdXJhbmRvbSwgREVWX1VSQU5ET01fTkFNRSwgRF9DSFIpOw0KKwlp
ZiAoZGV2ID09IE5VTEwpDQorCQl1a19wcl9pbmZvKCJGYWlsZWQgdG8gcmVnaXN0ZXIgL2Rldi91
cmFuZG9tXG4iKTsNCisNCisJLyogcmVnaXN0ZXIgL2Rldi9yYW5kb20gKi8NCisJZGV2ID0gZGV2
aWNlX2NyZWF0ZSgmZHJ2X3JhbmRvbSwgREVWX1JBTkRPTV9OQU1FLCBEX0NIUik7DQorCWlmIChk
ZXYgPT0gTlVMTCkNCisJCXVrX3ByX2luZm8oIkZhaWxlZCB0byByZWdpc3RlciAvZGV2L3JhbmRv
bVxuIik7DQorfQ0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 16:52:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 16:52: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 1hbSxo-0003JV-NF; Thu, 13 Jun 2019 16:52:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbSxn-0003JP-98
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 16:52:35 +0000
X-Inumbo-ID: a3513d64-8dfb-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.71]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a3513d64-8dfb-11e9-8980-bc764e045a96;
 Thu, 13 Jun 2019 16:52:33 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5226.eurprd01.prod.exchangelabs.com (20.177.210.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Thu, 13 Jun
 2019 16:52:31 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 16:52:31 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* functions
Thread-Index: AQHVH/c1ZXmi91HEZ0y3FfB9O+wZJaaZ0NEA
Date: Thu, 13 Jun 2019 16:52:30 +0000
Message-ID: <2dfeb087-0e00-d8f5-8a89-e2ac42009edc@stud.acs.upb.ro>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611014420.30686-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR04CA0137.eurprd04.prod.outlook.com
 (2603:10a6:803:f0::35) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: cfff5f35-f5b3-4748-9e35-08d6f01f8647
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5226; 
x-ms-traffictypediagnostic: PR1PR01MB5226:
x-microsoft-antispam-prvs: <PR1PR01MB5226A54B1CB319BE74104229A6EF0@PR1PR01MB5226.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(39840400004)(396003)(376002)(346002)(366004)(189003)(199004)(68736007)(786003)(316002)(54906003)(52116002)(76176011)(31686004)(386003)(6506007)(53546011)(102836004)(99286004)(74482002)(6916009)(478600001)(2351001)(85202003)(66066001)(85182001)(2501003)(14454004)(6486002)(31696002)(25786009)(4326008)(6246003)(186003)(26005)(8676002)(81156014)(81166006)(8936002)(73956011)(486006)(446003)(11346002)(2616005)(476003)(14444005)(256004)(53936002)(2906002)(229853002)(66574012)(5640700003)(6512007)(6436002)(86362001)(305945005)(7736002)(3846002)(6116002)(71190400001)(71200400001)(64756008)(5660300002)(66446008)(66476007)(66946007)(66556008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5226;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: r/jUrF5WmEGUEbTqnppoMGGUs+k3H2QEXIk+eT4BG7SmucW+ipt6T34Kih7HCQQWLzOWUp2bQTywm0VWd7nQoDnbCZ3TeeXrJ34m/DYPz3F9UazLEmMpeOsuBgyXg/LEuUghrdsyh0IbOddsgfTAx6wNAyQJEPB3bG4J3CTylclpYUeTaaCg6Lx54afh9Jm9yTwqy3MqZFQomtuIvnVNT/1LRKIfNk9YMDz+iolGIwv5b7LBIOAUNqWjX1twpy0NO1Xs4W1/1uIyf3kG16W2TGdzEH5/n5k9706sRb3nRpn6OmvcNwLsqXSgVwkvt5DQK3HnteyitD1eNi7JhR8g1iiOKNBqJxAbxblRCVy7d6VnsjN7gJCh72+cG27Kpe5Vo09r1fv0OjGPGAADYCs0L+rx4XCezyjdQR5SPxMz0Nk=
Content-ID: <23D687230D11B049B82970B6970511DE@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: cfff5f35-f5b3-4748-9e35-08d6f01f8647
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 16:52:30.9525 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5226
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 1/3] Add proto* 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@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGV5LA0KDQpUaGlzIHNob3VsZCBhY3R1YWxseSBnbyB0byBsd2lwIHNpbmNlIHByb3RvLmMgaW5j
bHVkZXMgbmV0ZGIuaCB3aGljaCBpcyANCm5vdCBwcm92aWRlZCBieSBuZXdsaWIuDQoNCk9uIDYv
MTEvMTkgNDo0NCBBTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOg0KPiBUaGlz
IHBhdGNoIGFkZHMgZW5kcHJvdG9lbnQsIHNldHByb3RvZW50LCBnZXRwcm90b2VudCwgZ2V0cHJv
dG9ieW5hbWUgYW5kDQo+IGdldHByb3RvYnludW1iZXIgZnJvbSBtdXNsIHJlbGVhc2UgMS4xLjE0
Lg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJh
ZG9pdUBzdHVkLmFjcy51cGIucm8+DQo+IC0tLQ0KPiAgIE1ha2VmaWxlLnVrIHwgICAxICsNCj4g
ICBwcm90by5jICAgICB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKQ0K
PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm90by5jDQo+DQo+IGRpZmYgLS1naXQgYS9NYWtlZmls
ZS51ayBiL01ha2VmaWxlLnVrDQo+IGluZGV4IDlkMWIyNzUuLjU0NTBlZDIgMTAwNjQ0DQo+IC0t
LSBhL01ha2VmaWxlLnVrDQo+ICsrKyBiL01ha2VmaWxlLnVrDQo+IEBAIC0xMTUsNiArMTE1LDcg
QEAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL3RpbWUuY3xnbHVl
DQo+ICAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL2xvY2FsZS5j
DQo+ICAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL2Rldi5jDQo+
ICAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0UpL3NpZ25hbC5jDQo+
ICtMSUJORVdMSUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNfQkFTRSkvcHJvdG8uYw0KPiAg
IA0KPiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ICAgIyBOZXdsaWIvbGliYyBjb2RlIC0t
IGFyZ3oNCj4gZGlmZiAtLWdpdCBhL3Byb3RvLmMgYi9wcm90by5jDQo+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmExNmRjM2INCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg
Yi9wcm90by5jDQo+IEBAIC0wLDAgKzEsMTEzIEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogTUlUICovDQo+ICsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsgKiBDb3B5cmlnaHQgwqkgMjAw
NS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcNCj4g
KyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZQ0KPiArICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp
dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZw0KPiArICogd2l0aG91dCBsaW1pdGF0aW9uIHRo
ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0KPiArICogZGlz
dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvDQo+ICsgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8NCj4gKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoNCj4gKyAqDQo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZQ0KPiArICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICsgKg0KPiArICogVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
DQo+ICsgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YNCj4gKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4NCj4gKyAqIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
DQo+ICsgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g
QUNUSU9OIE9GIENPTlRSQUNULA0KPiArICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP
TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUNCj4gKyAqIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KPiArICogLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KPiArICovDQo+ICsvKiBUYWtlbiBmcm9tIG11c2wgKi8NCj4gKw0KPiArI2luY2x1ZGUg
PG5ldGRiLmg+DQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsNCj4gK3N0YXRpYyBpbnQgaWR4
Ow0KPiArc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcHJvdG9zW10gPSB7DQo+ICsJIlwwMDBp
cFwwIg0KPiArCSJcMDAxaWNtcFwwIg0KPiArCSJcMDAyaWdtcFwwIg0KPiArCSJcMDAzZ2dwXDAi
DQo+ICsJIlwwMDRpcGVuY2FwXDAiDQo+ICsJIlwwMDVzdFwwIg0KPiArCSJcMDA2dGNwXDAiDQo+
ICsJIlwwMTBlZ3BcMCINCj4gKwkiXDAxNHB1cFwwIg0KPiArCSJcMDIxdWRwXDAiDQo+ICsJIlww
MjRobXBcMCINCj4gKwkiXDAyNnhucy1pZHBcMCINCj4gKwkiXDAzM3JkcFwwIg0KPiArCSJcMDM1
aXNvLXRwNFwwIg0KPiArCSJcMDQ0eHRwXDAiDQo+ICsJIlwwNDVkZHBcMCINCj4gKwkiXDA0Nmlk
cHItY210cFwwIg0KPiArCSJcMDUxaXB2NlwwIg0KPiArCSJcMDUzaXB2Ni1yb3V0ZVwwIg0KPiAr
CSJcMDU0aXB2Ni1mcmFnXDAiDQo+ICsJIlwwNTVpZHJwXDAiDQo+ICsJIlwwNTZyc3ZwXDAiDQo+
ICsJIlwwNTdncmVcMCINCj4gKwkiXDA2MmVzcFwwIg0KPiArCSJcMDYzYWhcMCINCj4gKwkiXDA3
MXNraXBcMCINCj4gKwkiXDA3MmlwdjYtaWNtcFwwIg0KPiArCSJcMDczaXB2Ni1ub254dFwwIg0K
PiArCSJcMDc0aXB2Ni1vcHRzXDAiDQo+ICsJIlwxMTFyc3BmXDAiDQo+ICsJIlwxMjF2bXRwXDAi
DQo+ICsJIlwxMzFvc3BmXDAiDQo+ICsJIlwxMzZpcGlwXDAiDQo+ICsJIlwxNDJlbmNhcFwwIg0K
PiArCSJcMTQ3cGltXDAiDQo+ICsJIlwzNzdyYXciDQo+ICt9Ow0KPiArDQo+ICt2b2lkIGVuZHBy
b3RvZW50KHZvaWQpDQo+ICt7DQo+ICsJaWR4ID0gMDsNCj4gK30NCj4gKw0KPiArdm9pZCBzZXRw
cm90b2VudChpbnQgc3RheW9wZW4pDQo+ICt7DQo+ICsJaWR4ID0gMDsNCj4gK30NCj4gKw0KPiAr
c3RydWN0IHByb3RvZW50ICpnZXRwcm90b2VudCh2b2lkKQ0KPiArew0KPiArCXN0YXRpYyBzdHJ1
Y3QgcHJvdG9lbnQgcDsNCj4gKwlzdGF0aWMgY29uc3QgY2hhciAqYWxpYXNlczsNCj4gKw0KPiAr
CWlmIChpZHggPj0gc2l6ZW9mKHByb3RvcykpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArCXAucF9w
cm90byA9IHByb3Rvc1tpZHhdOw0KPiArCXAucF9uYW1lID0gKGNoYXIgKikmcHJvdG9zW2lkeCsx
XTsNCj4gKwlwLnBfYWxpYXNlcyA9IChjaGFyICoqKSZhbGlhc2VzOw0KPiArCWlkeCArPSBzdHJs
ZW4ocC5wX25hbWUpICsgMjsNCj4gKwlyZXR1cm4gJnA7DQo+ICt9DQo+ICsNCj4gK3N0cnVjdCBw
cm90b2VudCAqZ2V0cHJvdG9ieW5hbWUoY29uc3QgY2hhciAqbmFtZSkNCj4gK3sNCj4gKwlzdHJ1
Y3QgcHJvdG9lbnQgKnA7DQo+ICsNCj4gKwllbmRwcm90b2VudCgpOw0KPiArCWRvIHAgPSBnZXRw
cm90b2VudCgpOw0KPiArCXdoaWxlIChwICYmIHN0cmNtcChuYW1lLCBwLT5wX25hbWUpKTsNCj4g
KwlyZXR1cm4gcDsNCj4gK30NCj4gKw0KPiArc3RydWN0IHByb3RvZW50ICpnZXRwcm90b2J5bnVt
YmVyKGludCBudW0pDQo+ICt7DQo+ICsJc3RydWN0IHByb3RvZW50ICpwOw0KPiArDQo+ICsJZW5k
cHJvdG9lbnQoKTsNCj4gKwlkbyBwID0gZ2V0cHJvdG9lbnQoKTsNCj4gKwl3aGlsZSAocCAmJiBw
LT5wX3Byb3RvICE9IG51bSk7DQo+ICsJcmV0dXJuIHA7DQo+ICt9DQo+ICsNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 17:00:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 17: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 1hbT5O-00043a-Bb; Thu, 13 Jun 2019 17:00: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=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbT5M-00043V-Kc
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 17:00:24 +0000
X-Inumbo-ID: b951fd54-8dfc-11e9-95f9-fb8b01dbe233
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.84]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b951fd54-8dfc-11e9-95f9-fb8b01dbe233;
 Thu, 13 Jun 2019 17:00:19 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5226.eurprd01.prod.exchangelabs.com (20.177.210.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Thu, 13 Jun
 2019 17:00:17 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 17:00:17 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 0/3] Add functions needed by the Python
 socketmodule
Thread-Index: AQHVH/c1M8oj+qc6rEqloAFzYZBD8qaZ0voA
Date: Thu, 13 Jun 2019 17:00:17 +0000
Message-ID: <c3694175-064d-3103-2f6f-a3f03cc3077a@stud.acs.upb.ro>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR04CA0096.eurprd04.prod.outlook.com
 (2603:10a6:803:64::31) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [141.85.233.104]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 860e6b0c-20a2-4c5a-0da8-08d6f0209c95
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5226; 
x-ms-traffictypediagnostic: PR1PR01MB5226:
x-microsoft-antispam-prvs: <PR1PR01MB5226BDFE7EC8C974901963BFA6EF0@PR1PR01MB5226.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4303;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(39840400004)(396003)(376002)(346002)(366004)(189003)(199004)(68736007)(786003)(316002)(54906003)(52116002)(76176011)(31686004)(386003)(6506007)(53546011)(102836004)(99286004)(74482002)(6916009)(478600001)(2351001)(85202003)(66066001)(85182001)(2501003)(14454004)(6486002)(31696002)(25786009)(4326008)(6246003)(186003)(26005)(8676002)(81156014)(81166006)(8936002)(73956011)(486006)(446003)(11346002)(2616005)(476003)(256004)(53936002)(2906002)(229853002)(5640700003)(6512007)(6436002)(86362001)(305945005)(7736002)(4744005)(3846002)(6116002)(71190400001)(71200400001)(64756008)(5660300002)(66446008)(66476007)(66946007)(66556008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5226;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: RsX8qtg+xGj7uNaBPrSqvyMmMuG3srN6Wl5TqbBf/S5UQPeJ3SM+61MoLE54Og1p9L1JXPcZwECesNabPjXsjG6X6G3+ohSpE7TN0N2QaR8NtzYTfFQq5aMYQwsJmPq+KQKaaP/MFu7/1Iie3MR7pjEYzrnv4nzcOGfpFqI9Vfs293nfza61fYjkUfogehThMsZfA5ksqoJf9dKLpNr/g60CO6atw2TOke4fWjg6LhkhoJUXJp+xphENikKJflH4nAYyJ9+q4BBx7mvhPC9QoJv94L3hkpyJ76nmEDWU0XKwJFV1VgZoQE0CpqfJV7MIRnF7bLVGs8KAaB95gCcaXyaHkz57yfwMtTT2RgtEFd0jX2VLG+51FvIcp6sRog1mu8WhFEcNmAwr4CP4g1jPnk8y5brmZMDh1Y7lrygXYdc=
Content-ID: <03A7B8415A075845B7281F2E50795EE3@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 860e6b0c-20a2-4c5a-0da8-08d6f0209c95
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 17:00:17.8396 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5226
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 0/3] Add functions needed
 by the Python socketmodule
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGV5LA0KDQpQbGVhc2UgZGlzY2FyZCB0aGlzIHBhdGNoIGFzIGFsbCB0aGUgY2hhbmdlcyBzaG91
bGQgYWN0dWFsbHkgZ28gdG8gTFdJUC4NCg0KVGhhbmtzLA0KDQpWbGFkDQoNCk9uIDYvMTEvMTkg
NDo0NCBBTSwgVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOg0KPiBUaGlzIHBhdGNo
IGFkZHMgdGhlIHByb3RvKiwgZ2V0aG9zdCosIGdldHNlcnZyKiAgZnVuY3Rpb25zLiBUaGUgcHJv
dG8qDQo+IGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQodGFrZW4gZnJvbSBtdXNsKSB3aGVyZWFz
IGdldGhvc3QqIGFuZA0KPiBnZXRzZXJ2ciogYXJlIHN0dWJzLg0KPg0KPiBWbGFkLUFuZHJlaSBC
YWRvaXUgKDMpOg0KPiAgICBBZGQgcHJvdG8qIGZ1bmN0aW9ucw0KPiAgICBBZGQgZ2V0aG9zdCog
YW5kIGdldHNlcnZyKiBzdHVicw0KPiAgICBJbXBsZW1lbnQgZ2V0aG9zdG5hbWUNCj4NCj4gICBN
YWtlZmlsZS51ayB8ICAgMiArDQo+ICAgbmV0d29yay5jICAgfCAgNDEgKysrKysrKysrKysrKysr
KysrKw0KPiAgIHByb3RvLmMgICAgIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysNCj4gICAzIGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRp
b25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldHdvcmsuYw0KPiAgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBwcm90by5jDQo+DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 17:07:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 17:07: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 1hbTBq-0004C8-Tg; Thu, 13 Jun 2019 17:07:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbTBp-0004C2-NJ
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 17:07:05 +0000
X-Inumbo-ID: a96bbee2-8dfd-11e9-8259-37deea44984f
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a96bbee2-8dfd-11e9-8259-37deea44984f;
 Thu, 13 Jun 2019 17:07:02 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4811.eurprd01.prod.exchangelabs.com (20.177.209.30) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Thu, 13 Jun
 2019 17:07:00 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 17:07:00 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH v2 1/3] Add .gitignore
Thread-Index: AQHVIgpqiZEcLubmckCG7WNR5JheXQ==
Date: Thu, 13 Jun 2019 17:07:00 +0000
Message-ID: <20190613170644.14062-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0121.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::13) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: e237ab9a-c7dc-46b7-65e4-08d6f0218c6d
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4811; 
x-ms-traffictypediagnostic: PR1PR01MB4811:
x-microsoft-antispam-prvs: <PR1PR01MB4811C6EBC11F9C168768EBC6A6EF0@PR1PR01MB4811.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(366004)(39840400004)(136003)(396003)(199004)(189003)(4326008)(66476007)(786003)(85182001)(508600001)(2906002)(8936002)(2501003)(316002)(50226002)(85202003)(2351001)(54906003)(71190400001)(86362001)(6116002)(14454004)(3846002)(1076003)(6436002)(71200400001)(73956011)(5640700003)(6916009)(66946007)(6486002)(74482002)(5660300002)(68736007)(11346002)(66556008)(6512007)(64756008)(53936002)(25786009)(446003)(7736002)(52116002)(476003)(256004)(2616005)(6506007)(486006)(81166006)(186003)(305945005)(66066001)(76176011)(4744005)(102836004)(386003)(26005)(99286004)(66446008)(8676002)(81156014)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4811;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: /NItWNsAeznY+V55P6+clBlLYQTmSyZaYF4WcPtpWW7FYVHmk5xMpKXiJm7BAY7gSQvtvslmGko2HPO+Ev74FK+YeQ3DT+dUbdvw1WW4HVyUcFGoaHrooHXEUQboEf0d7fAy+n++EUxRd0PazMrA3OwcbIH+2YbK8IG4oGMkxZZ1GRixfXfu6wqRKsUL2OX6Qptf+jP6T+F7vv/9oIJwQCbkq7oVSpMZYlLnpqtMquLGKx1gmlsDBmTMBalvcGvIcnOz9x8YJYYcAPiSg04rVaSOhcvA0FfK6xE+Vx450Lb6BPcf0etIy+9qT1e1U6mH1XObMkczBSBr3JeS6oFA7zMLyzLl90/BH/1OmemVubd50fn5FIYjse7ftas+o67uhMHmiCF5JyV+YBfMN3tD0AAMplhw6GmW2bFbmtoZWCw=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: e237ab9a-c7dc-46b7-65e4-08d6f0218c6d
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 17:07:00.3148 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4811
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH v2 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4NCi0tLQ0KIC5naXRpZ25vcmUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysr
KysNCiAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0
NCAuZ2l0aWdub3JlDQoNCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQ0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjc1ZDJmZDMNCi0tLSAvZGV2L251bGwN
CisrKyBiLy5naXRpZ25vcmUNCkBAIC0wLDAgKzEsMjcgQEANCisqLmRlcGVuZA0KKyoubw0KKyou
YQ0KKyouZA0KKyouc28NCisqLm9yaWcNCisqLnJlag0KKyouYmFrDQorKi5zd3ANCisqfg0KKywq
DQorXCMqXCMNCisuXCMqDQorXCNfKlwjDQorLlwjXyoNCishLmdpdGlnbm9yZQ0KKy4qDQorDQor
IyBnbnUgZ2xvYmFsIGZpbGVzDQorR1BBVEgNCitHUlRBR1MNCitHU1lNUw0KK0dUQUdTDQorDQor
IyBjc2NvcGUgZmlsZXMNCitjc2NvcGUuKg0KK25jc2NvcGUuKg0KLS0gDQoyLjIxLjANCg0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 17:07:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 17:07: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 1hbTBs-0004CW-VJ; Thu, 13 Jun 2019 17:07: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=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbTBq-0004C7-UN
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 17:07:06 +0000
X-Inumbo-ID: ab66f90a-8dfd-11e9-a4ec-0f5427e37321
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ab66f90a-8dfd-11e9-a4ec-0f5427e37321;
 Thu, 13 Jun 2019 17:07:05 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4811.eurprd01.prod.exchangelabs.com (20.177.209.30) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Thu, 13 Jun
 2019 17:06:59 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 17:06:59 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH v2 0/3] Initial port of pthreadpool
 on Unikraft
Thread-Index: AQHVIgppqHPHrRIh50eOG32mxX6Vkg==
Date: Thu, 13 Jun 2019 17:06:59 +0000
Message-ID: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0121.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::13) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9bd2d1ca-29d3-4382-fcad-08d6f0218bfe
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4811; 
x-ms-traffictypediagnostic: PR1PR01MB4811:
x-microsoft-antispam-prvs: <PR1PR01MB4811971E7201E40F79FCA062A6EF0@PR1PR01MB4811.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:6108;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(366004)(39840400004)(136003)(396003)(199004)(189003)(4326008)(66476007)(786003)(85182001)(508600001)(2906002)(8936002)(2501003)(316002)(50226002)(85202003)(2351001)(54906003)(71190400001)(86362001)(6116002)(14454004)(3846002)(1076003)(6436002)(71200400001)(73956011)(5640700003)(6916009)(66946007)(6486002)(74482002)(5660300002)(68736007)(66556008)(6512007)(64756008)(53936002)(25786009)(7736002)(52116002)(476003)(256004)(2616005)(6506007)(486006)(81166006)(186003)(305945005)(66066001)(4744005)(102836004)(386003)(26005)(99286004)(66446008)(8676002)(81156014);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4811;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: GkRF58OPYcdZAsiSD2AAt+bV4FC+Qi7yhX+YhIAEGCFAqPzzANsQk70k6Hq/h6Ef6Yz5GUl14sG9qe/pW7whHUuu9SJhU2VrLBcbJTOyoOWrrbQO7THe3UfXjbQK2KBhzDu/fa8SPRtTv0iQWbf7vub1Esc6faV+fdt/N8gNCicvjyufIYdMuYV7cosKDiUnH7vVRB+MrUDjX8+06k4cYFsWqGcH3V7Ua5seQnPIkYFEV81VzPJm+r9Gk261jShR2046YQSkNq3cYWh+tkTG+98gdR8bWavcFanwuGF2Fw2QU9JjA1EJzo5oqNSD22etIWzCg9Xdcf8pxk7H5J0P8daZogq8UhYfri34m9t6zC7fRus+6jHtESYvFOFx4Kw+aHyWFxeGnenqdiLxHhKC/U403WJbfy8+EPAiwVjWuYA=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 9bd2d1ca-29d3-4382-fcad-08d6f0218bfe
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 17:06:59.6402 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4811
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH v2 0/3] Initial port of
 pthreadpool 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHB0aHJlYWRwb29sIG9uIFVuaWtyYWZ0
LiBQdGhyZWFkcG9vbA0KaXMgcHRocmVhZC1iYXNlZCB0aHJlYWQgcG9vbCBmb3IgQy9DKysuDQoN
CkNoYW5nZXMgc2luY2UgdjE6DQoqKSBBZGRlZCBDT1BZSU5HLm1kDQoqKSBVcGRhdGVkIHRoZSBj
b25maWcgZGVzY3JpcHRpb24gYW5kIHRoZSBkZXBlbmRlbmN5IGxpc3QgZXhhbXBsZS4NCg0KVmxh
ZC1BbmRyZWkgQmFkb2l1ICgzKToNCiAgQWRkIC5naXRpZ25vcmUNCiAgQWRkIGRvY3VtZW50YXRp
b24NCiAgSW5pdGlhbCBwb3J0IG9mIHB0aHJlYWRwb29sIHRvIFVuaWtyYWZ0DQoNCi0tIA0KMi4y
MS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 17:07:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 17:07: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 1hbTBu-0004Db-0l; Thu, 13 Jun 2019 17:07: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=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbTBt-0004Cj-5T
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 17:07:09 +0000
X-Inumbo-ID: ac1a4d66-8dfd-11e9-a929-67b9aae0c6c0
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ac1a4d66-8dfd-11e9-a929-67b9aae0c6c0;
 Thu, 13 Jun 2019 17:07:06 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4811.eurprd01.prod.exchangelabs.com (20.177.209.30) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Thu, 13 Jun
 2019 17:07:01 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 17:07:01 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH v2 2/3] Add documentation
Thread-Index: AQHVIgpqZfzxNMb+80ex7/rF1R8oBA==
Date: Thu, 13 Jun 2019 17:07:00 +0000
Message-ID: <20190613170644.14062-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0121.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::13) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 986cdded-b925-4cef-442f-08d6f0218cdc
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4811; 
x-ms-traffictypediagnostic: PR1PR01MB4811:
x-microsoft-antispam-prvs: <PR1PR01MB4811B79024D936223B11C139A6EF0@PR1PR01MB4811.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(376002)(346002)(366004)(39840400004)(136003)(396003)(199004)(189003)(4326008)(66476007)(786003)(85182001)(508600001)(2906002)(8936002)(2501003)(316002)(50226002)(85202003)(2351001)(54906003)(71190400001)(86362001)(6116002)(14454004)(3846002)(1076003)(6436002)(71200400001)(73956011)(5640700003)(6916009)(66946007)(6486002)(74482002)(5660300002)(68736007)(11346002)(66556008)(6512007)(64756008)(53936002)(25786009)(446003)(7736002)(52116002)(476003)(256004)(14444005)(2616005)(6506007)(486006)(81166006)(186003)(305945005)(66066001)(76176011)(102836004)(386003)(26005)(99286004)(66446008)(8676002)(81156014)(2004002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4811;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: RcGJBA4AUMvK/PJiVsnQ+NvZKHR1Q2cD/CidAItZZ5R1MiCaHIZAJsw373RgsQc6jrwKm5yZ9IiBxLm6e3ROG7hf4VimMunX6pl6zyh4kNPLupUkLjcIqwB0E4mxAcx74REkTYHSGKWissh8DOxkYlzx09gqIVJwNQNdBrCLNYzwPGipBwPxo1/WnVZhRdwlgjm/Rulwm9aPTRmvvw4hRDWkExWzY236mYEGBuxPjk8SZS7tR8fS1GzmT8gI/9oBZCWu4z3H+sTSJueRcNKW6JW9J/ceyQ9Fdr95gpHso1Y9Fbwuvnume9W1NUqzYWLZwPRz5391xeoD8ZSEJdsZ4TxpDrYMZWl3MlURtz8b7sJUL/+/VIf+l0sZKzUxI2rmfr7NkDHEbqNz9QfEscL1y8WYLVxNkM7v7USQ8z2FI/A=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 986cdded-b925-4cef-442f-08d6f0218cdc
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 17:07:01.0014 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4811
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH v2 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4NCi0tLQ0KIENPRElOR19TVFlMRS5tZCB8ICA0ICsrKysNCiBDT05UUklCVVRJTkcu
bWQgfCAgNCArKysrDQogQ09QWUlORy5tZCAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrDQogTUFJTlRBSU5FUlMubWQgIHwgMTEgKysrKysrKysrKysNCiBSRUFETUUubWQg
ICAgICAgfCAgNSArKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKQ0KIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ09O
VFJJQlVUSU5HLm1kDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQNCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1FLm1kDQoN
CmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi41NzMwMDQxDQotLS0gL2Rldi9udWxsDQorKysg
Yi9DT0RJTkdfU1RZTEUubWQNCkBAIC0wLDAgKzEsNCBAQA0KK0NvZGluZyBTdHlsZQ0KKz09PT09
PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBp
biB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElO
Ry5tZCBiL0NPTlRSSUJVVElORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw
MDAuLjVmNTVlY2ENCi0tLSAvZGV2L251bGwNCisrKyBiL0NPTlRSSUJVVElORy5tZA0KQEAgLTAs
MCArMSw0IEBADQorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0DQorPT09PT09PT09PT09PT09PT09
PT09PT0NCisNCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4g
dGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCmRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIv
Q09QWUlORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjAzMDMyM2UN
Ci0tLSAvZGV2L251bGwNCisrKyBiL0NPUFlJTkcubWQNCkBAIC0wLDAgKzEsMzAgQEANCitMaWNl
bnNlDQorPT09PT09PQ0KKw0KK1VuaWtyYWZ0IHB0aHJlYWRwb29sIHdyYXBwZXJzDQorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisNCitUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgd3JhcHBlciBj
b2RlIHRvIGJ1aWxkIHB0aHJlYWRwb29sIHdpdGggVW5pa3JhZnQuDQorRWFjaCBDIGNvZGUgZmls
ZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQ0KK2NvcHlyaWdo
dCBvd25lciBhbmQgdW5kZXIgd2hpY2ggdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhlIGNvZGUgaXMN
CitsaWNlbnNlZC4gSWYgc3VjaCBhIGxpY2VuY2Ugbm90ZSBpcyBtaXNzaW5nLCB0aGUgZm9sbG93
aW5nIGNvcHlyaWdodA0KK25vdGljZSB3aWxsIGFwcGx5Og0KKw0KKw0KKwlDb3B5cmlnaHQoQykg
WWVhciBOYW1lLCBJbnN0aXR1dGlvbg0KKwkNCisJVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKwltb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorCUxpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKwl2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
DQorCQ0KKwlUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwNCisJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisJTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisJDQorCVlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisJTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsNCisJaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLA0KKwk1OSBUZW1w
bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBDQorDQpkaWZm
IC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZA0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCmluZGV4IDAwMDAwMDAuLjUyNWJmYjQNCi0tLSAvZGV2L251bGwNCisrKyBiL01BSU5U
QUlORVJTLm1kDQpAQCAtMCwwICsxLDExIEBADQorTWFpbnRhaW5lcnMgTGlzdA0KKz09PT09PT09
PT09PT09PT0NCisNCitGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwg
cGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4NCit0aGUgbWFpbiBVbmlrcmFmdCBy
ZXBvc2l0b3J5Lg0KKw0KKwlMSUJQVEhSRUFEUE9PTC1VTklLUkFGVA0KKwlNOglGZWxpcGUgSHVp
Y2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQorCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxh
ZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCisJTDoJbWluaW9zLWRldmVsQGxpc3Rz
Lnhlbi5vcmcNCisJRjogKg0KZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZA0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjcwOGNkZjQNCi0tLSAvZGV2L251bGwN
CisrKyBiL1JFQURNRS5tZA0KQEAgLTAsMCArMSw1IEBADQorbGlicHRocmVhZHBvb2wgZm9yIFVu
aWtyYWZ0DQorPT09PT09PT09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYFJF
QURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gDQorc3Vi
ZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 13 17:07:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 13 Jun 2019 17:07: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 1hbTBv-0004E5-2P; Thu, 13 Jun 2019 17:07: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=epI5=UM=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbTBu-0004Dx-CT
 for minios-devel@lists.xen.org; Thu, 13 Jun 2019 17:07:10 +0000
X-Inumbo-ID: ad451bd0-8dfd-11e9-a09a-d79ff021b7d2
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.75]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ad451bd0-8dfd-11e9-a09a-d79ff021b7d2;
 Thu, 13 Jun 2019 17:07:08 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4811.eurprd01.prod.exchangelabs.com (20.177.209.30) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Thu, 13 Jun
 2019 17:07:01 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Thu, 13 Jun 2019
 17:07:01 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH v2 3/3] Initial port of pthreadpool
 to Unikraft
Thread-Index: AQHVIgpqXKaRjrHJXEC9fwv7GJKpAg==
Date: Thu, 13 Jun 2019 17:07:01 +0000
Message-ID: <20190613170644.14062-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0121.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::13) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 213ddab3-4d33-48ac-26ff-08d6f0218d49
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4811; 
x-ms-traffictypediagnostic: PR1PR01MB4811:
x-microsoft-antispam-prvs: <PR1PR01MB48113289C7DCA6A27A277449A6EF0@PR1PR01MB4811.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0067A8BA2A
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(979002)(376002)(346002)(366004)(39840400004)(136003)(396003)(199004)(189003)(4326008)(66476007)(786003)(85182001)(508600001)(2906002)(8936002)(2501003)(316002)(50226002)(85202003)(2351001)(54906003)(71190400001)(86362001)(6116002)(14454004)(3846002)(1076003)(6436002)(71200400001)(73956011)(5640700003)(6916009)(66946007)(6486002)(74482002)(5660300002)(68736007)(11346002)(66556008)(6512007)(6306002)(64756008)(53936002)(25786009)(446003)(7736002)(52116002)(476003)(256004)(14444005)(2616005)(6506007)(486006)(81166006)(186003)(305945005)(66066001)(76176011)(102836004)(386003)(26005)(99286004)(66446008)(8676002)(81156014)(969003)(989001)(999001)(1009001)(1019001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4811;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: m6aP8W2GIdzeOdgKWslIX8mL8oRB40lBoE1R5Tw3XWZ66djNA/nnEuJSSMtiuxyXTTcW9IMaMvJILwKBTS54py/xVR/Hoxf6H/EJDTeB62I7PqgiTTdpKhSuXIXb8ugF+vpelM1ThPJQzSEO9LgbBZ/32z5+Qzhd/T5XRGcwGDqWNAOKWThDGkKnOKSMDS2o+z5lWwcF8yF7oop87376g/ExjaR6c/IU/doAL3Mev73qob5JMz/GX01rZLQmP3bZIjsQ/CIz5Vh2EIjD+uvFcIRcIh+3ddpSqY0iqGwlrT8MoEjGlujeMe54IDXf0SDLcz8XKX4uXsqoeCj9URzFOmug6+l2qSGnJeaVoz9HqKH32mwehRlxWQUg5DKvUt7GqmbSCZcshoz1dgaJuEt9wAeVOGh5iRgLnLtzvJd0Vg4=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 213ddab3-4d33-48ac-26ff-08d6f0218d49
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2019 17:07:01.7030 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4811
Subject: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH v2 3/3] Initial port of
 pthreadpool to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGZwMTYgdG8gVW5pa3JhZnQgYXMgYW4gZXh0ZXJu
YWwgbGlicmFyeS4gTGliZnhkaXYNCmFuZCBwdGhyZWFkcyBhcmUgcmVxdWlyZWQuIFdoZW4gYWRk
aW5nIHRoZSBsaWJyYXJ5IHRvIHRoZSBkZXBlbmRlbmN5IGxpc3QgaXQNCnNob3VsZCBzdGF5IGFm
dGVyIGxpYmZ4ZGl2Lg0KKGUuZy4gLi4uOiQoVUtfTElCUykvbGlidW53aW5kOiQoVUtfTElCUykv
Y29tcGlsZXItcnQ6JChVS19MSUJTKS9saWJjeHhhYmk6DQokKFVLX0xJQlMpL2xpYmN4eDokKFVL
X0xJQlMpL3B0aHJlYWQtZW1iZWRkZWQ6JChVS19MSUJTKS9uZXdsaWI6DQokKFVLX0xJQlMpL2Z4
ZGl2OihVS19MSUJTKS9wdGhyZWFkcG9vbDouLi4pDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5k
cmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIENv
bmZpZy51ayAgIHwgIDYgKysrKysNCiBNYWtlZmlsZS51ayB8IDc2ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMiBmaWxlcyBjaGFuZ2VkLCA4
MiBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0KIGNyZWF0ZSBt
b2RlIDEwMDY0NCBNYWtlZmlsZS51aw0KDQpkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmln
LnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMzg1ZTljNg0KLS0tIC9k
ZXYvbnVsbA0KKysrIGIvQ29uZmlnLnVrDQpAQCAtMCwwICsxLDYgQEANCittZW51Y29uZmlnIExJ
QlBUSFJFQURQT09MDQorICAgIGJvb2wgInB0aHJlYWRwb29sIC0gcHRocmVhZC1iYXNlZCB0aHJl
YWQgcG9vbCBmb3IgQy9DKysiDQorICAgIHNlbGVjdCBMSUJGWERJVg0KKyAgICBzZWxlY3QgTElC
UFRIUkVBRF9FTUJFRERFRA0KKyAgICBkZWZhdWx0IG4NCisNCmRpZmYgLS1naXQgYS9NYWtlZmls
ZS51ayBiL01ha2VmaWxlLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4u
OGZhNDI2Mw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTWFrZWZpbGUudWsNCkBAIC0wLDAgKzEsNzYg
QEANCisjICBsaWJwdGhyZWFkcG9vbCBjb25maWcgZmlsZQ0KKyMNCisjICBBdXRob3JzOiBWbGFk
LUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQorIw0K
KyMgIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJl
c3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIw0KKyMgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyMgIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cw0KKyMgIGFyZSBtZXQ6DQorIw0KKyMgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyMgIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0DQorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorIyAgMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0
cw0KKyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisjDQorIyAgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
DQorIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyMgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQorIyAgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQ0KKyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisjICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyMgIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUw0KKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisjICBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQ0KKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyMNCisjICBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0K
Kw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBMaWJyYXJ5IHJlZ2lzdHJhdGlvbg0KKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJwdGhyZWFk
cG9vbCwkKENPTkZJR19MSUJQVEhSRUFEUE9PTCkpKQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjDQorIyBTb3VyY2VzDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJQVEhSRUFEUE9P
TF9WRVJTSU9OPW1hc3Rlcg0KK0xJQlBUSFJFQURQT09MX1VSTD1odHRwczovL2dpdGh1Yi5jb20v
TWFyYXR5c3pjemEvcHRocmVhZHBvb2wvYXJjaGl2ZS9tYXN0ZXIuemlwDQorTElCUFRIUkVBRFBP
T0xfUEFUQ0hESVI9JChMSUJQVEhSRUFEUE9PTF9CQVNFKS9wYXRjaGVzDQorJChldmFsICQoY2Fs
bCBmZXRjaCxsaWJwdGhyZWFkcG9vbCwkKExJQlBUSFJFQURQT09MX1VSTCkpKQ0KKw0KKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjDQorIyBIZWxwZXJzDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN
CitMSUJQVEhSRUFEUE9PTF9TVUJESVI9cHRocmVhZHBvb2wtbWFzdGVyDQorTElCUFRIUkVBRFBP
T0xfU1JDPSQoTElCUFRIUkVBRFBPT0xfT1JJR0lOKS8kKExJQlBUSFJFQURQT09MX1NVQkRJUikN
CisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgTGlicmFyeSBpbmNsdWRlcw0KKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjDQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURQT09MKSAr
PSAtSSQoTElCUFRIUkVBRFBPT0xfU1JDKS9pbmNsdWRlDQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJ
QlBUSFJFQURQT09MKSArPSAtSSQoTElCUFRIUkVBRFBPT0xfQkFTRSkvaW5jbHVkZQ0KK0NYWElO
Q0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURQT09MKSArPSAtSSQoTElCUFRIUkVBRFBPT0xfU1JD
KS9pbmNsdWRlDQorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCUFRIUkVBRFBPT0wpICs9IC1JJChM
SUJQVEhSRUFEUE9PTF9CQVNFKS9pbmNsdWRlDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN
CisjIEdsb2JhbCBmbGFncw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBTdXBwcmVzcyBz
b21lIHdhcm5pbmdzIHRvIG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXINCitTVVBQ
UkVTU19GTEFHUyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUg
LVduby1ub25udWxsCVwNCistV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2Vk
LWxhYmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRzCQlcDQorLVduby11bnVzZWQtZnVuY3Rpb24gLVdu
by1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQJCVwNCistV25v
LWFycmF5LWJvdW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgLVduby1wb2ludGVyLXNpZ24g
LVduby11bnVzZWQtdmFsdWUJXA0KKy1Xbm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2Vz
IC1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24JCVwNCistV25vLW1pc3NpbmctYnJh
Y2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCVwNCist
V25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1Xbm8tdHlwZS1saW1pdHMgLVduby1z
aWduLWNvbXBhcmUNCitMSUJQVEhSRUFEUE9PTF9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19G
TEFHUykNCitMSUJQVEhSRUFEUE9PTF9DWFhGTEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdT
KQ0KKw0KK0xJQlBUSFJFQURQT09MX1NSQ1MteSArPSAkKExJQlBUSFJFQURQT09MX1NSQykvc3Jj
L3RocmVhZHBvb2wtcHRocmVhZHMuYw0KKw0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 08:29:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 08:29: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 1hbhaQ-0000Ou-6h; Fri, 14 Jun 2019 08:29:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JB1/=UN=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hbhaP-0000Op-6m
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 08:29:25 +0000
X-Inumbo-ID: 82d9683c-8e7e-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 82d9683c-8e7e-11e9-8980-bc764e045a96;
 Fri, 14 Jun 2019 08:29:23 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id v14so1561181wrr.4
 for <minios-devel@lists.xen.org>; Fri, 14 Jun 2019 01:29:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=MWtEusTXQPQjNkZpukKqZJBKnuPW5O5zzmw2gZS8RyM=;
 b=hf1eZy3OcRrQ5K2Efk7wOnjC4tL6trGn7xrUnyMbjmPWpLtQGeVtwkQMi2G8Ov+iBp
 k/z9icMq89vST4rwhS8JSElPwFVQ8gixuLhKWczhvyMSLS4zhxwFEOZtE7svCx4jANFM
 GA+2a7psxfyugKbEd74qVbedB/6QDi/o9ZrAqOupOIYVPcinwO/tIHXTNcY/jaoh31EO
 y5jli9CfO2ipqVM5dOcBWOeMl2sdBq0UPtt/AEbdaa3FrQTrJNAqza5mcgrT6hzLtxnX
 MzYAKCKdVjgUw13iF+x9o2AOv7fYWrw9oJADgvixzIU08mVDolkqYrwmXFrOQyzZObh2
 xf0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=MWtEusTXQPQjNkZpukKqZJBKnuPW5O5zzmw2gZS8RyM=;
 b=KD7L99j7qtZmBr6vsoLP3rNg/ZxSRKC81FfpHISuQvfgVozfgHVR/mj22633mzS36N
 CDc4fojz/5+7jbumdk5JykkHIvY/jTOCmvYlvud0kUaO4mKu6IMpvNvSJnN47IeoZVdm
 yhomHpieOeetmiuMqpoN4ZHIvI+LGrgGIWzEStJ7u+A80o/M+NzoInXcc1LaHP/0S1JE
 S9xZsnxAxy7l/Prt9gL6Mpr9caWOh3WEYrZjkPNYVtR3nsWWmplV0pVomQ6jSVmd4/C5
 WtFmmZEmKQSfkqP/Dlg+c5rkd8DRmLuLailp769mlCgeJ2lFpsY8Vo7TboPy9DEZCuiI
 D3Ng==
X-Gm-Message-State: APjAAAXFhmN6wQxfOV1p4s6/t8+jGItg3kolZ8yZcK7V3t95RtS4xPl+
 aZ79RSTDPZx/m7dLKngNgKM=
X-Google-Smtp-Source: APXvYqxiTHR0sBgeXu27BEQECKmRc4MxBwj5b4Narr3nw2bSohlXRwhxvlVxzSIPzjgZLwxK9xF6JQ==
X-Received: by 2002:adf:8028:: with SMTP id 37mr62372132wrk.106.1560500961953; 
 Fri, 14 Jun 2019 01:29:21 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id w67sm4011933wma.24.2019.06.14.01.29.20
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 14 Jun 2019 01:29:21 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <70b167a8-4ace-b529-d3db-9b1ca9c99bd3@gmail.com>
Date: Fri, 14 Jun 2019 11:29:20 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhhbmtzLCBWbGFkIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5w
dWIucm8+CgpPbiA2LzEzLzE5IDc6MjQgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3
cm90ZToKPiBUaGlzIHBhdGNoIGFkZHMgdGhlIC9kZXYvcmFuZG9tIGFuZCAvZGV2L3VyYW5kb20g
ZGV2aWNlcy4gU2luY2Ugd2UgZG8gbm90IGhhdmUKPiBhbnkgZW50cm9weSBnZW5lcmF0aW5nIGZ1
bmN0aW9uIGJvdGggZGV2aWNlcyBzaGFyZSB0aGUgc2FtZSBoYW5kbGVycy4gVGhlCj4gcmVnaXN0
cmF0aW9uIG9mIHRoZSBkZXZpY2VzIGlzIGd1YXJkZWQgYnkgdGhlIGNvbmZpZyBvcHRpb24gQ09O
RklHX0RFVl9SQU5ET00uCj4gCj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2
bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+IC0tLQo+ICBsaWIvdWtzd3JhbmQv
Q29uZmlnLnVrICAgfCAgIDYgKysKPiAgbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrIHwgICAzICsK
PiAgbGliL3Vrc3dyYW5kL213Y19kZXYuYyAgIHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspCj4g
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtzd3JhbmQvbXdjX2Rldi5jCj4gCj4gZGlmZiAtLWdp
dCBhL2xpYi91a3N3cmFuZC9Db25maWcudWsgYi9saWIvdWtzd3JhbmQvQ29uZmlnLnVrCj4gaW5k
ZXggNDRmNmVlNTAuLmExYTg0YmM1IDEwMDY0NAo+IC0tLSBhL2xpYi91a3N3cmFuZC9Db25maWcu
dWsKPiArKysgYi9saWIvdWtzd3JhbmQvQ29uZmlnLnVrCj4gQEAgLTE3LDQgKzE3LDEwIEBAIGVu
ZGNob2ljZQo+ICBjb25maWcgTElCVUtTV1JBTkRfSU5JVElBTFNFRUQKPiAgCWludCAiSW5pdGlh
bCByYW5kb20gc2VlZCIKPiAgCWRlZmF1bHQgMjMKPiArCj4gK2NvbmZpZyBERVZfUkFORE9NCj4g
Kwlib29sICIvZGV2L3JhbmRvbSBkZXZpY2UiCj4gKwlzZWxlY3QgTElCREVWRlMKPiArCWRlZmF1
bHQgbgo+ICsKPiAgZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVr
IGIvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrCj4gaW5kZXggOGQ0NDgyYzQuLjI1MjQ3NDc0IDEw
MDY0NAo+IC0tLSBhL2xpYi91a3N3cmFuZC9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi91a3N3cmFu
ZC9NYWtlZmlsZS51awo+IEBAIC00LDMgKzQsNiBAQCBDSU5DTFVERVMtJChDT05GSUdfTElCVUtT
V1JBTkQpCSs9IC1JJChMSUJVS1NXUkFORF9CQVNFKS9pbmNsdWRlCj4gIENYWElOQ0xVREVTLSQo
Q09ORklHX0xJQlVLU1dSQU5EKSArPSAtSSQoTElCVUtTV1JBTkRfQkFTRSkvaW5jbHVkZQo+ICAK
PiAgTElCVUtTV1JBTkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9ICQoTElCVUtT
V1JBTkRfQkFTRSkvbXdjLmMKPiAraWZkZWYgQ09ORklHX0RFVl9SQU5ET00KPiArTElCVUtTV1JB
TkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9ICQoTElCVUtTV1JBTkRfQkFTRSkv
bXdjX2Rldi5jCj4gK2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi91a3N3cmFuZC9td2NfZGV2LmMg
Yi9saWIvdWtzd3JhbmQvbXdjX2Rldi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwMC4uNWE5YzBkNDkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Vrc3dyYW5kL213
Y19kZXYuYwo+IEBAIC0wLDAgKzEsMTE5IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1
IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+ICsgKgo+ICsgKiBDb3B5cmln
aHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmln
aHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAq
IGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4g
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+
ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1P
RElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsj
aW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDx1ay9jdG9ycy5oPgo+ICsjaW5jbHVkZSA8
dWsvcHJpbnQuaD4KPiArI2luY2x1ZGUgPHVrL3N3cmFuZC5oPgo+ICsjaW5jbHVkZSA8dWsvYXNz
ZXJ0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlh
bHMuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gKyNpbmNsdWRlIDxkZXZmcy9kZXZp
Y2UuaD4KPiArCj4gKyNkZWZpbmUgREVWX1JBTkRPTV9OQU1FICJyYW5kb20iCj4gKyNkZWZpbmUg
REVWX1VSQU5ET01fTkFNRSAidXJhbmRvbSIKPiArCj4gK2ludCBkZXZfcmFuZG9tX3JlYWQoc3Ry
dWN0IGRldmljZSAqZGV2IF9fdW51c2VkLCBzdHJ1Y3QgdWlvICp1aW8sCj4gKwkJCWludCBmbGFn
cyBfX3VudXNlZCkKPiArewo+ICsJc2l6ZV90IGNvdW50LCBzdGVwLCBjaHVua19zaXplLCBpOwo+
ICsJY2hhciAqYnVmOwo+ICsJX191MzIgcmQ7Cj4gKwo+ICsJYnVmID0gdWlvLT51aW9faW92LT5p
b3ZfYmFzZTsKPiArCWNvdW50ID0gdWlvLT51aW9faW92LT5pb3ZfbGVuOwo+ICsKPiArCXN0ZXAg
PSBzaXplb2YoX191MzIpOwo+ICsJY2h1bmtfc2l6ZSA9IGNvdW50ICUgc3RlcDsKPiArCj4gKwlm
b3IgKGkgPSAwOyBpIDwgY291bnQgLSBjaHVua19zaXplOyBpICs9IHN0ZXApCj4gKwkJKigoX191
MzIgKilidWYgKyBpKSA9IHVrX3N3cmFuZF9yYW5kcigpOwo+ICsKPiArCS8qIGZpbGwgdGhlIHJl
bWFpbmluZyBieXRlcyBvZiB0aGUgYnVmZmVyICovCj4gKwlpZiAoY2h1bmtfc2l6ZSA+IDApIHsK
PiArCQlyZCA9IHVrX3N3cmFuZF9yYW5kcigpOwo+ICsJCW1lbWNweShidWYgKyBpLCAmcmQsIGNo
dW5rX3NpemUpOwo+ICsJfQo+ICsKPiArCXVpby0+dWlvX3Jlc2lkID0gMDsKPiArCXJldHVybiAw
Owo+ICt9Cj4gKwo+ICtpbnQgZGV2X3JhbmRvbV9vcGVuKHN0cnVjdCBkZXZpY2UgKmRldmljZSBf
X3VudXNlZCwgaW50IG1vZGUgX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+
ICsKPiAraW50IGRldl9yYW5kb21fY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2aWNlIF9fdW51c2Vk
KQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkZXZvcHMgcmFu
ZG9tX2Rldm9wcyA9IHsKPiArCS5yZWFkID0gZGV2X3JhbmRvbV9yZWFkLAo+ICsJLm9wZW4gPSBk
ZXZfcmFuZG9tX29wZW4sCj4gKwkuY2xvc2UgPSBkZXZfcmFuZG9tX2Nsb3NlLAo+ICt9Owo+ICsK
PiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3JhbmRvbSA9IHsKPiArCS5kZXZvcHMgPSAmcmFu
ZG9tX2Rldm9wcywKPiArCS5kZXZzeiA9IDAsCj4gKwkubmFtZSA9IERFVl9SQU5ET01fTkFNRQo+
ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3VyYW5kb20gPSB7Cj4gKwkuZGV2
b3BzID0gJnJhbmRvbV9kZXZvcHMsCj4gKwkuZGV2c3ogPSAwLAo+ICsJLm5hbWUgPSBERVZfVVJB
TkRPTV9OQU1FCj4gK307Cj4gKwo+ICtfX2NvbnN0cnVjdG9yX3ByaW8oMTAyKSBzdGF0aWMgdm9p
ZCBfdWtfZGV2X3N3cmFuZF9jdG9yKHZvaWQpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsK
PiArCj4gKwl1a19wcl9pbmZvKCJBZGQgL2Rldi9yYW5kb20gYW5kIC9kZXYvdXJhbmRvbVxuIik7
Cj4gKwo+ICsJLyogcmVnaXN0ZXIgL2Rldi91cmFuZG9tICovCj4gKwlkZXYgPSBkZXZpY2VfY3Jl
YXRlKCZkcnZfdXJhbmRvbSwgREVWX1VSQU5ET01fTkFNRSwgRF9DSFIpOwo+ICsJaWYgKGRldiA9
PSBOVUxMKQo+ICsJCXVrX3ByX2luZm8oIkZhaWxlZCB0byByZWdpc3RlciAvZGV2L3VyYW5kb21c
biIpOwo+ICsKPiArCS8qIHJlZ2lzdGVyIC9kZXYvcmFuZG9tICovCj4gKwlkZXYgPSBkZXZpY2Vf
Y3JlYXRlKCZkcnZfcmFuZG9tLCBERVZfUkFORE9NX05BTUUsIERfQ0hSKTsKPiArCWlmIChkZXYg
PT0gTlVMTCkKPiArCQl1a19wcl9pbmZvKCJGYWlsZWQgdG8gcmVnaXN0ZXIgL2Rldi9yYW5kb21c
biIpOwo+ICt9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:16:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:16: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 1hbl8P-0005Hm-P4; Fri, 14 Jun 2019 12:16:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl8O-0005Hh-EV
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:16:44 +0000
X-Inumbo-ID: 43d24ddb-8e9e-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 43d24ddb-8e9e-11e9-8980-bc764e045a96;
 Fri, 14 Jun 2019 12:16:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 16877105278;
 Fri, 14 Jun 2019 14:16:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id agm80BlhNpA3; Fri, 14 Jun 2019 14:16:39 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C84641052A3;
 Fri, 14 Jun 2019 14:16:39 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:16:39
 +0200
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083232.13732-1-nicolescu.roxana1996@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <2592ec19-dc24-6a25-6b13-4fe7cee410f5@neclab.eu>
Date: Fri, 14 Jun 2019 14:16:38 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083232.13732-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 0/6] Unikraft Block API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGkgUm94YW5hLAoKdGhhbmtzIGEgbG90IGZvciB0aGlzIHBhdGNoIHNlcmllcy4gQXMgZmFyIGFz
IEkgdGVzdGVkIGl0LCBpdCB3b3JrcyAKd2VsbC4gSXQgaXMgcmVhbGx5IGdvb2QgdGhhdCB5b3Vy
IEFQSSBmb2xsb3dzIHRoZSBgbGlidWtuZXRkZXZgIApwcmluY2lwbGVzIGFuZCBkZXNpZ24uCkkg
aGF2ZSBqdXN0IGEgZmV3IG1pbm9yIGNvbW1lbnRzIHRoYXQgSSBhZGRlZCBpbmxpbmUgdG8gdGhl
IHBhcnRpY3VsYXIgCnBhdGNoZXMuIFRoZSBhcmNoaXRlY3R1cmFsIGRlc2lnbiBpcyBwZXJmZWN0
LiBUaGUgY29tbWVudHMgYXJlIG1haW5seSAKYWJvdXQgbmFtaW5nIGFuZCB1c2VkIGRhdGF0eXBl
cy4gVGhhbmtzIGEgbG90IGZvciB5b3VyIHdvcmshCgpUaGFua3MsCgpTaW1vbgoKT24gMjkuMDUu
MTkgMTA6MzIsIFJveGFuYSBOaWNvbGVzY3Ugd3JvdGU6Cj4gSW50cm9kdWNlcyB0aGUgVW5pa3Jh
ZnQgQmxvY2sgQVBJLCB0aGF0IGFjdHMgYXMgYSBnZW5lcmFsaXplZCBpbnRlcmZhY2UKPiBiZXR3
ZWVuIGJsb2NrIGRyaXZlcnMgYW5kIGZpbGVzeXN0ZW1zIGltcGxlbWVudGF0aW9ucyAob3IgbG93
LWxldmVsIGJsb2NrCj4gYXBwbGljYXRpb25zKS4KPiAKPiBVc2luZyB0aGUgZnVuY3Rpb24gZGVm
aW5pdGlvbnMgaW4gYmxrZGV2X2NvcmUuaCwgdGhlIGRyaXZlciBzaG91bGQgaW5jbHVkZQo+IGJs
a2Rldl9kcml2ZXIsIGltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGluIHVrX2Jsa2Rldl9vcHMgYW5k
IGZpbGwgc29tZQo+IGZpZWxkcyBmcm9tIHVrX2Jsa2Rldi4KPiBUaGUgdXNlci1mYWNpbmcgcGFy
dCBvZiB0aGUgQVBJIGlzIGluIGJsa2Rldi5oLiBUaGUgbGF5ZXIgYWJvdmUgY2FuIHVzZQo+IHRo
ZXNlIGZ1bmN0aW9ucyB0byBjb25maWd1cmUgYmxvY2sgZGV2aWNlcywgYXMgd2VsbCBhcyBzZW5k
IGFuZCByZWNlaXZlCj4gc2VjdG9yLXdpZGUgcmVxdWVzdHMuCj4gVGhlIHJlYWQvd3JpdGUvZmx1
c2ggb3BlcmF0aW9ucyBhYnN0cmFjdGlvbiBpcyBkZWZpbmVkIGluIGJsa3JlcS5oLgo+IFJlcXVl
c3RzIGNhbiBiZSBhc3luY2hyb25vdXMgb3Igc3luY2hyb25vdXMgYW5kIHRoZSB1c2VyIG11c3Qg
c2V0IGEKPiBwcm9wZXIgY2FsbGJhY2sgZm9yIGVhY2ggYXN5bmMgb3BlcmF0aW9uLgo+IFRoZSBB
UEkgaGFzIG11bHRpLXF1ZXVlIHN1cHBvcnQgYW5kIGV2ZW50IGRpc3BhdGNoaW5nIHN1cHBvcnQg
YXMgd2VsbCwKPiB3aGljaCBpcyBjb25maWd1cmFibGUgd2l0aCBvciB3aXRob3V0IGJvdHRvbS1o
YWxmIHRocmVhZHMuCj4gCj4gUm94YW5hIE5pY29sZXNjdSAoNik6Cj4gICAgbGliL3VrYmxrZGV2
OiBCbGtkZXYgTGlicmFyeSBza2VsZXRvbi4KPiAgICBsaWIvdWtibGtkZXY6IEJsa2RldiByZWdp
c3RyYXRpb24KPiAgICBsaWIvdWtibGtkZXY6IEJsa2RldiBpbml0aWFsaXphdGlvbgo+ICAgIGxp
Yi91a2Jsa2RldjogUmVxdWVzdCBpbnRlcmZhY2UKPiAgICBsaWIvdWtibGtkZXY6IFN5bmNocm9u
b3VzIG9wZXJhdGlvbnMKPiAgICBsaWIvdWtibGtkZXY6IFN0b3AgYW5kIHJlbGVhc2UgYW4gVW5p
a3JhZnQgYmxvY2sgZGV2aWNlCj4gCj4gICBsaWIvQ29uZmlnLnVrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDEgKwo+ICAgbGliL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAxICsKPiAgIGxpYi91a2Jsa2Rldi9Db25maWcudWsgICAgICAgICAgICAgICAgICB8
ICAzNyArKysKPiAgIGxpYi91a2Jsa2Rldi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8ICAg
NiArCj4gICBsaWIvdWtibGtkZXYvYmxrZGV2LmMgICAgICAgICAgICAgICAgICAgfCA1NTQgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi91a2Jsa2Rldi9leHBvcnRzeW1z
LnVrICAgICAgICAgICAgICB8ICAyOCArKwo+ICAgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxr
ZGV2LmggICAgICAgIHwgNTA2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIv
dWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5oICAgfCAzMDkgKysrKysrKysrKysrKysr
KysrCj4gICBsaWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfZHJpdmVyLmggfCAxMTYgKysr
KysrKwo+ICAgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrcmVxLmggICAgICAgIHwgMTEwICsr
KysrKysKPiAgIDEwIGZpbGVzIGNoYW5nZWQsIDE2NjggaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi91a2Jsa2Rldi9Db25maWcudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdWtibGtkZXYvTWFrZWZpbGUudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWti
bGtkZXYvYmxrZGV2LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtibGtkZXYvZXhwb3J0
c3ltcy51awo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Js
a2Rldi5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxr
ZGV2X2NvcmUuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldl9kcml2ZXIuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2Jsa2Rldi9pbmNs
dWRlL3VrL2Jsa3JlcS5oCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:16:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:16: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 1hbl8c-0005Iy-R5; Fri, 14 Jun 2019 12:16: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=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl8b-0005In-KX
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:16:57 +0000
X-Inumbo-ID: 4b0e864e-8e9e-11e9-8e80-43da3a4ee069
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4b0e864e-8e9e-11e9-8e80-43da3a4ee069;
 Fri, 14 Jun 2019 12:16:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 748ABF2033;
 Fri, 14 Jun 2019 14:16:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id S4oUsnb04QsV; Fri, 14 Jun 2019 14:16:52 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4AF75F2014;
 Fri, 14 Jun 2019 14:16:46 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:16:46
 +0200
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083254.13947-1-nicolescu.roxana1996@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ba7eb827-f016-4317-46ae-d69a0d2d4474@neclab.eu>
Date: Fri, 14 Jun 2019 14:16:45 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083254.13947-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/6] lib/ukblkdev: Blkdev
 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, 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>

VGhpcyBwYXRjaCBsb29rcyBmaW5lLgoKUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24gMjkuMDUuMTkgMTA6MzIsIFJveGFuYSBOaWNvbGVzY3Ug
d3JvdGU6Cj4gQWRkIGFuZCByZWdpc3RlciBsaWJ1a2Jsa2RldiBsaWJyYXJ5IHNrZWxldG9uLgo+
IAo+IFNpZ25lZC1vZmYtYnk6IFJveGFuYSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2
QGdtYWlsLmNvbT4KPiAtLS0KPiAgIGxpYi9Db25maWcudWsgICAgICAgICAgICB8IDEgKwo+ICAg
bGliL01ha2VmaWxlLnVrICAgICAgICAgIHwgMSArCj4gICBsaWIvdWtibGtkZXYvQ29uZmlnLnVr
ICAgfCA2ICsrKysrKwo+ICAgbGliL3VrYmxrZGV2L01ha2VmaWxlLnVrIHwgNCArKysrCj4gICA0
IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdWtibGtkZXYvQ29uZmlnLnVrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrYmxrZGV2
L01ha2VmaWxlLnVrCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9Db25maWcudWsgYi9saWIvQ29uZmln
LnVrCj4gaW5kZXggNTUzZDRjNmIuLmYzOTFhNGY2IDEwMDY0NAo+IC0tLSBhL2xpYi9Db25maWcu
dWsKPiArKysgYi9saWIvQ29uZmlnLnVrCj4gQEAgLTQ2LDMgKzQ2LDQgQEAgc291cmNlICJsaWIv
dWtzd3JhbmQvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtidXMvQ29uZmlnLnVrIgo+ICAg
c291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtuZXRkZXYv
Q29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi91a2Jsa2Rldi9Db25maWcudWsiCj4gZGlmZiAtLWdp
dCBhL2xpYi9NYWtlZmlsZS51ayBiL2xpYi9NYWtlZmlsZS51awo+IGluZGV4IDU0YTk1N2RlLi4x
ZjhlNDliZCAxMDA2NDQKPiAtLS0gYS9saWIvTWFrZWZpbGUudWsKPiArKysgYi9saWIvTWFrZWZp
bGUudWsKPiBAQCAtMjMsMyArMjMsNCBAQCAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09O
RklHX1VLX0JBU0UpL2xpYi91a21waSkpCj4gICAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQo
Q09ORklHX1VLX0JBU0UpL2xpYi91a2J1cykpCj4gICAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGli
LCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a3NnbGlzdCkpCj4gICAkKGV2YWwgJChjYWxsIF9pbXBv
cnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91a25ldGRldikpCj4gKyQoZXZhbCAkKGNhbGwg
X2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkvbGliL3VrYmxrZGV2KSkKPiBkaWZmIC0tZ2l0
IGEvbGliL3VrYmxrZGV2L0NvbmZpZy51ayBiL2xpYi91a2Jsa2Rldi9Db25maWcudWsKPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5iMTdkNjE2Nwo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9saWIvdWtibGtkZXYvQ29uZmlnLnVrCj4gQEAgLTAsMCArMSw2IEBACj4gK2Nv
bmZpZyBMSUJVS0JMS0RFVgo+ICsJYm9vbCAidWtibGtkZXY6IEJsb2NrIGRyaXZlciBpbnRlcmZh
Y2UiCj4gKwlkZWZhdWx0IG4KPiArCXNlbGVjdCBMSUJVS0FMTE9DCj4gKwlzZWxlY3QgTElCTk9M
SUJDIGlmICFIQVZFX0xJQkMKPiArCXNlbGVjdCBMSUJVS0RFQlVHCj4gZGlmZiAtLWdpdCBhL2xp
Yi91a2Jsa2Rldi9NYWtlZmlsZS51ayBiL2xpYi91a2Jsa2Rldi9NYWtlZmlsZS51awo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjYyYzYyMDQ1Cj4gLS0tIC9kZXYvbnVs
bAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9NYWtlZmlsZS51awo+IEBAIC0wLDAgKzEsNCBAQAo+ICsk
KGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVrYmxrZGV2LCQoQ09ORklHX0xJQlVLQkxLREVWKSkp
Cj4gKwo+ICtDSU5DTFVERVMtJChDT05GSUdfTElCVUtCTEtERVYpCQkrPSAtSSQoTElCVUtCTEtE
RVZfQkFTRSkvaW5jbHVkZQo+ICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJVS0JMS0RFVikJKz0g
LUkkKExJQlVLQkxLREVWX0JBU0UpL2luY2x1ZGUKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:16:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12: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 1hbl8c-0005J3-TK; Fri, 14 Jun 2019 12:16: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=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl8b-0005Io-KX
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:16:57 +0000
X-Inumbo-ID: 4b9c067c-8e9e-11e9-b356-0f685f5349ff
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4b9c067c-8e9e-11e9-b356-0f685f5349ff;
 Fri, 14 Jun 2019 12:16:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 661F8105285;
 Fri, 14 Jun 2019 14:16:53 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id phVPhK5K7pnn; Fri, 14 Jun 2019 14:16:53 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3AD85105278;
 Fri, 14 Jun 2019 14:16:53 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:16:52
 +0200
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083309.14147-1-nicolescu.roxana1996@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <dd0b08f0-9cb4-309e-5df9-d466ef9926a3@neclab.eu>
Date: Fri, 14 Jun 2019 14:16:52 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083309.14147-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/6] lib/ukblkdev: Blkdev
 registration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

VGhpcyBwYXRjaCBsb29rcyBmaW5lLgoKUmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24gMjkuMDUuMTkgMTA6MzMsIFJveGFuYSBOaWNvbGVzY3Ug
d3JvdGU6Cj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbml0aWFsIGJsa2RldiBBUEkgc3Vw
cG9ydGluZyBkZXZpY2UKPiByZWdpc3RyYXRpb24uIFdlIGludHJvZHVjZSB0aHJlZSBoZWFkZXIg
ZmlsZXMgZm9yIGRlc2NyaWJpbmcgVW5pa3JhZnQncwo+IGJsa2RldiBBUEk6Cj4gICAgICAgICAg
dWsvYmxrZGV2X2NvcmUuaCAtIENvcmUgZGF0YSB0eXBlIGRlZmluaXRpb25zCj4gICAgICAgICAg
dWsvYmxrZGV2X2RyaXZlci5oIC0gQVBJIGZvciBkcml2ZXJzCj4gICAgICAgICAgdWsvYmxrZGV2
LmggLSBBUEkgZm9yIGJsb2NrIGFwcGxpY2F0aW9ucwo+IAo+IFNpZ25lZC1vZmYtYnk6IFJveGFu
YSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KPiAtLS0KPiAgIGxp
Yi91a2Jsa2Rldi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8ICAgMiArCj4gICBsaWIvdWti
bGtkZXYvYmxrZGV2LmMgICAgICAgICAgICAgICAgICAgfCAxMzMgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKPiAgIGxpYi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrICAgICAgICAgICAg
ICB8ICAgNiArKwo+ICAgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggICAgICAgIHwg
MTI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3VrYmxrZGV2L2luY2x1
ZGUvdWsvYmxrZGV2X2NvcmUuaCAgIHwgIDk4ICsrKysrKysrKysrKysrKysrKysrKysrCj4gICBs
aWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfZHJpdmVyLmggfCAgNzcgKysrKysrKysrKysr
KysrKysrCj4gICA2IGZpbGVzIGNoYW5nZWQsIDQ0NCBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3VrYmxrZGV2L2Jsa2Rldi5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtkZXYuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2Js
a2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9jb3JlLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfZHJpdmVyLmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGli
L3VrYmxrZGV2L01ha2VmaWxlLnVrIGIvbGliL3VrYmxrZGV2L01ha2VmaWxlLnVrCj4gaW5kZXgg
NjJjNjIwNDUuLmI5MTQxN2UyIDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jsa2Rldi9NYWtlZmlsZS51
awo+ICsrKyBiL2xpYi91a2Jsa2Rldi9NYWtlZmlsZS51awo+IEBAIC0yLDMgKzIsNSBAQCAkKGV2
YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVrYmxrZGV2LCQoQ09ORklHX0xJQlVLQkxLREVWKSkpCj4g
ICAKPiAgIENJTkNMVURFUy0kKENPTkZJR19MSUJVS0JMS0RFVikJCSs9IC1JJChMSUJVS0JMS0RF
Vl9CQVNFKS9pbmNsdWRlCj4gICBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJVS0JMS0RFVikJKz0g
LUkkKExJQlVLQkxLREVWX0JBU0UpL2luY2x1ZGUKPiArCj4gK0xJQlVLQkxLREVWX1NSQ1MteSAr
PSAkKExJQlVLQkxLREVWX0JBU0UpL2Jsa2Rldi5jCj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rl
di9ibGtkZXYuYyBiL2xpYi91a2Jsa2Rldi9ibGtkZXYuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMDAuLmRmYWNmMWNhCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91
a2Jsa2Rldi9ibGtkZXYuYwo+IEBAIC0wLDAgKzEsMTMzIEBACj4gKy8qIFNQRFgtTGljZW5zZS1J
ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogUm94YW5hIE5p
Y29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgo+ICsgKgo+ICsgKiBDb3B5
cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0Lgo+ICsg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiAr
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+
ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUg
bmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsvKiBUaGlzIGlzIGRlcml2ZWQg
ZnJvbSB1a25ldGRldiBiZWNhdXNlIG9mIGNvbnNpc3RlbmN5IHJlYXNvbnMgKi8KPiArI2luY2x1
ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUgPGludHR5cGVz
Lmg+Cj4gKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgo+ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4g
KyNpbmNsdWRlIDx1ay9iaXRvcHMuaD4KPiArI2luY2x1ZGUgPHVrL3ByaW50Lmg+Cj4gKyNpbmNs
dWRlIDx1ay9wbGF0L2N0b3JzLmg+Cj4gKyNpbmNsdWRlIDx1ay9yZWZjb3VudC5oPgo+ICsjaW5j
bHVkZSA8dWsvYmxrZGV2Lmg+Cj4gKwo+ICtzdHJ1Y3QgdWtfYmxrZGV2X2xpc3QgdWtfYmxrZGV2
X2xpc3QgPQo+ICsJCVVLX1RBSUxRX0hFQURfSU5JVElBTElaRVIodWtfYmxrZGV2X2xpc3QpOwo+
ICsKPiArc3RhdGljIHVpbnQxNl90IGJsa2Rldl9jb3VudDsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qg
dWtfYmxrZGV2X2RhdGEgKl9hbGxvY19kYXRhKHN0cnVjdCB1a19hbGxvYyAqYSwKPiArCSAgdWlu
dDE2X3QgYmxrZGV2X2lkLAo+ICsJICBjb25zdCBjaGFyICpkcnZfbmFtZSkKPiArewo+ICsJc3Ry
dWN0IHVrX2Jsa2Rldl9kYXRhICpkYXRhOwo+ICsKPiArCWRhdGEgPSB1a19jYWxsb2MoYSwgMSwg
c2l6ZW9mKCpkYXRhKSk7Cj4gKwlpZiAoIWRhdGEpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJ
ZGF0YS0+ZHJ2X25hbWUgPSBkcnZfbmFtZTsKPiArCWRhdGEtPnN0YXRlICAgID0gVUtfQkxLREVW
X1VOQ09ORklHVVJFRDsKPiArCj4gKwkvKiBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIHdl
IHNldCB0aGUgZGV2aWNlIElEOwo+ICsJICogZHVyaW5nIHRoZSByZXN0IG9mIHRoZSBkZXZpY2Un
cyBsaWZlIHRpbWUgdGhpcyBJRCBpcyByZWFkLW9ubHkKPiArCSAqLwo+ICsJKihERUNPTlNUKHVp
bnQxNl90ICosICZkYXRhLT5pZCkpID0gYmxrZGV2X2lkOwo+ICsKPiArCXJldHVybiBkYXRhOwo+
ICt9Cj4gKwo+ICtpbnQgdWtfYmxrZGV2X2Rydl9yZWdpc3RlcihzdHJ1Y3QgdWtfYmxrZGV2ICpk
ZXYsIHN0cnVjdCB1a19hbGxvYyAqYSwKPiArCQkJICAgY29uc3QgY2hhciAqZHJ2X25hbWUpCj4g
K3sKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsKPiArCS8qIERhdGEgbXVzdCBiZSB1bmFsbG9jYXRl
ZC4gKi8KPiArCVVLX0FTU0VSVChQVFJJU0VSUihkZXYtPl9kYXRhKSk7Cj4gKwo+ICsJZGV2LT5f
ZGF0YSA9IF9hbGxvY19kYXRhKGEsIGJsa2Rldl9jb3VudCwgIGRydl9uYW1lKTsKPiArCWlmICgh
ZGV2LT5fZGF0YSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlVS19UQUlMUV9JTlNFUlRf
VEFJTCgmdWtfYmxrZGV2X2xpc3QsIGRldiwgX2xpc3QpOwo+ICsJdWtfcHJfaW5mbygiUmVnaXN0
ZXJlZCBibGtkZXYlIlBSSXUxNiI6ICVwICglcylcbiIsCj4gKwkJICAgYmxrZGV2X2NvdW50LCBk
ZXYsIGRydl9uYW1lKTsKPiArCWRldi0+X2RhdGEtPnN0YXRlID0gVUtfQkxLREVWX1VOQ09ORklH
VVJFRDsKPiArCj4gKwlyZXR1cm4gYmxrZGV2X2NvdW50Kys7Cj4gK30KPiArCj4gK3Vuc2lnbmVk
IGludCB1a19ibGtkZXZfY291bnQodm9pZCkKPiArewo+ICsJcmV0dXJuICh1bnNpZ25lZCBpbnQp
IGJsa2Rldl9jb3VudDsKPiArfQo+ICsKPiArc3RydWN0IHVrX2Jsa2RldiAqdWtfYmxrZGV2X2dl
dCh1bnNpZ25lZCBpbnQgaWQpCj4gK3sKPiArCXN0cnVjdCB1a19ibGtkZXYgKmJsa2RldjsKPiAr
Cj4gKwlVS19UQUlMUV9GT1JFQUNIKGJsa2RldiwgJnVrX2Jsa2Rldl9saXN0LCBfbGlzdCkgewo+
ICsJCVVLX0FTU0VSVChibGtkZXYtPl9kYXRhKTsKPiArCQlpZiAoYmxrZGV2LT5fZGF0YS0+aWQg
PT0gaWQpCj4gKwkJCXJldHVybiBibGtkZXY7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIE5VTEw7Cj4g
K30KPiArCj4gK3VpbnQxNl90IHVrX2Jsa2Rldl9pZF9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2
KQo+ICt7Cj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiAr
Cj4gKwlyZXR1cm4gZGV2LT5fZGF0YS0+aWQ7Cj4gK30KPiArCj4gK2NvbnN0IGNoYXIgKnVrX2Js
a2Rldl9kcnZfbmFtZV9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2KQo+ICt7Cj4gKwlVS19BU1NF
UlQoZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiArCj4gKwlyZXR1cm4gZGV2LT5f
ZGF0YS0+ZHJ2X25hbWU7Cj4gK30KPiArCj4gK2VudW0gdWtfYmxrZGV2X3N0YXRlIHVrX2Jsa2Rl
dl9zdGF0ZV9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2KQo+ICt7Cj4gKwlVS19BU1NFUlQoZGV2
KTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiArCj4gKwlyZXR1cm4gZGV2LT5fZGF0YS0+
c3RhdGU7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsgYi9s
aWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg
MDAwMDAwMDAuLjM0ZTIyNDI2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9l
eHBvcnRzeW1zLnVrCj4gQEAgLTAsMCArMSw2IEBACj4gK3VrX2Jsa2Rldl9kcnZfcmVnaXN0ZXIK
PiArdWtfYmxrZGV2X2NvdW50Cj4gK3VrX2Jsa2Rldl9nZXQKPiArdWtfYmxrZGV2X2lkX2dldAo+
ICt1a19ibGtkZXZfZHJ2X25hbWVfZ2V0Cj4gK3VrX2Jsa2Rldl9zdGF0ZV9nZXQKPiBkaWZmIC0t
Z2l0IGEvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggYi9saWIvdWtibGtkZXYvaW5j
bHVkZS91ay9ibGtkZXYuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAu
LmQ2Nzg2NzdmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldi5oCj4gQEAgLTAsMCArMSwxMjggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBSb3hhbmEgTmljb2xlc2N1
IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKPiArICogQWxsIHJp
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+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBN
T0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArLyogVGhpcyBpcyBkZXJpdmVkIGZyb20gdWtu
ZXRkZXYgYmVjYXVzZSBvZiBjb25zaXN0ZW5jeSByZWFzb25zICovCj4gKyNpZm5kZWYgX19VS19C
TEtERVZfXwo+ICsjZGVmaW5lIF9fVUtfQkxLREVWX18KPiArCj4gKy8qKgo+ICsgKiBVbmlrcmFm
dCBCbG9jayBBUEkKPiArICoKPiArICogVGhlIFVuaWtyYWZ0IEJMSyBBUEkgcHJvdmlkZXMgYSBn
ZW5lcmFsaXplZCBpbnRlcmZhY2UgYmV0d2VlbiBVbmlrcmFmdAo+ICsgKiBkcml2ZXJzIGFuZCBs
b3ctbGV2ZWwgYXBwbGljYXRpb24gd2hpY2ggbmVlZHMgY29tbXVuaWNhdGlvbiB3aXRoCj4gKyAq
IGEgYmxvY2sgZGV2aWNlLgo+ICsgKgo+ICsgKiBNb3N0IEJMSyBBUEkgZnVuY3Rpb25zIHRha2Ug
YXMgcGFyYW1ldGVyIGEgcmVmZXJlbmNlIHRvIHRoZSBjb3JyZXNwb25kaW5nCj4gKyAqIFVuaWty
YWZ0IEJsb2NrIERldmljZSAoc3RydWN0IHVrX2Jsa2Rldikgd2hpY2ggY2FuIGJlIG9idGFpbmVk
IHdpdGggYSBjYWxsCj4gKyAqIHRvIHVrX2Jsa2Rldl9nZXQoKS4gVGhlIGJsb2NrIGFwcCBzaG91
bGQgc3RvcmUgdGhpcyByZWZlcmVuY2UgYW5kCj4gKyAqIHVzZSBpdCBmb3IgYWxsIHN1YnNlcXVl
bnQgQVBJIGNhbGxzLgo+ICsgKgo+ICsgKiBUaGVyZSBhcmUgNCBzdGF0ZXMgaW4gd2hpY2ggYSBi
bG9jayBkZXZpY2UgY2FuIGJlIGZvdW5kOgo+ICsgKiAgICAgIC0gVUtfQkxLREVWX1VOUkVHSVNU
RVJFRAo+ICsgKiAgICAgIC0gVUtfQkxLREVWX1VOQ09ORklHVVJFRAo+ICsgKiAgICAgIC0gVUtf
QkxLREVWX0NPTkZJR1VSRUQKPiArICogICAgICAtIFVLX0JMS0RFVl9SVU5OSU5HCj4gKyAqLwo+
ICsKPiArI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNp
bmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHVrL2xp
c3QuaD4KPiArI2luY2x1ZGUgPHVrL2VycnB0ci5oPgo+ICsKPiArI2luY2x1ZGUgImJsa2Rldl9j
b3JlLmgiCj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArZXh0ZXJuICJDIiB7Cj4gKyNlbmRp
Zgo+ICsKPiArLyoqCj4gKyAqIEdldCB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBVbmlrcmFmdCBC
bG9jayBkZXZpY2VzLgo+ICsgKgo+ICsgKiBAcmV0dXJuCj4gKyAqCS0gKHVuc2lnbmVkIGludCk6
IG51bWJlciBvZiBibG9jayBkZXZpY2VzLgo+ICsgKi8KPiArdW5zaWduZWQgaW50IHVrX2Jsa2Rl
dl9jb3VudCh2b2lkKTsKPiArCj4gKy8qKgo+ICsgKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBVbmlr
cmFmdCBCbG9jayBEZXZpY2UsIGJhc2VkIG9uIGl0cyBJRC4KPiArICogVGhpcyByZWZlcmVuY2Ug
c2hvdWxkIGJlIHNhdmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhbmQgdXNlZCBmb3Igc3Vic2VxdWVu
dAo+ICsgKiBBUEkgY2FsbHMuCj4gKyAqCj4gKyAqIEBwYXJhbSBpZAo+ICsgKglUaGUgaWRlbnRp
ZmllciBvZiB0aGUgVW5pa3JhZnQgYmxvY2sgZGV2aWNlIHRvIGNvbmZpZ3VyZS4KPiArICogQHJl
dHVybgo+ICsgKgktIE5VTEw6IGRldmljZSBub3QgZm91bmQgaW4gbGlzdAo+ICsgKgktIChzdHJ1
Y3QgdWtfYmxrZGV2ICopOiByZWZlcmVuY2UgdG8gYmUgcGFzc2VkIHRvIEFQSSBjYWxscwo+ICsg
Ki8KPiArc3RydWN0IHVrX2Jsa2RldiAqdWtfYmxrZGV2X2dldCh1bnNpZ25lZCBpbnQgaWQpOwo+
ICsKPiArLyoqCj4gKyAqIFJldHVybnMgdGhlIGlkIG9mIGEgYmxvY2sgZGV2aWNlCj4gKyAqCj4g
KyAqIEBwYXJhbSBkZXYKPiArICoJVGhlIFVuaWtyYWZ0IEJsb2NrIERldmljZS4KPiArICogQHJl
dHVybgo+ICsgKgktICg+PTApOiBEZXZpY2UgSUQKPiArICovCj4gK3VpbnQxNl90IHVrX2Jsa2Rl
dl9pZF9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2KTsKPiArCj4gKy8qKgo+ICsgKiBSZXR1cm5z
IHRoZSBkcml2ZXIgbmFtZSBvZiBhIGJsa2RldiBkZXZpY2UuCj4gKyAqIFRoZSBuYW1lIG1pZ2h0
IGJlIHNldCB0byBOVUxMLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFm
dCBCbG9jayBEZXZpY2UuCj4gKyAqIEByZXR1cm4KPiArICoJLSAoTlVMTCk6IGlmIG5vIG5hbWUg
aXMgZGVmaW5lZC4KPiArICoJLSAoY29uc3QgY2hhciAqKTogUmVmZXJlbmNlIHRvIHN0cmluZyBp
ZiBuYW1lIGlzIGF2YWlsYWJsZS4KPiArICovCj4gK2NvbnN0IGNoYXIgKnVrX2Jsa2Rldl9kcnZf
bmFtZV9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2KTsKPiArCj4gKy8qKgo+ICsgKiBSZXR1cm5z
IHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgYmxrZGV2IGRldmljZS4KPiArICoKPiArICogQHBhcmFt
IGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+ICsgKiBAcmV0dXJuCj4gKyAq
CS0gKGVudW0gdWtfYmxrZGV2X3N0YXRlKTogY3VycmVudCBkZXZpY2Ugc3RhdGUKPiArICovCj4g
K2VudW0gdWtfYmxrZGV2X3N0YXRlIHVrX2Jsa2Rldl9zdGF0ZV9nZXQoc3RydWN0IHVrX2Jsa2Rl
diAqZGV2KTsKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiAr
I2VuZGlmIC8qIF9fVUtfQkxLREVWX18gKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2lu
Y2x1ZGUvdWsvYmxrZGV2X2NvcmUuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9j
b3JlLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4zY2NjZjg3ZQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29y
ZS5oCj4gQEAgLTAsMCArMSw5OCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE
LTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFJveGFuYSBOaWNvbGVzY3UgPG5pY29s
ZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5
LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4KPiArICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUg
bWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+
ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1Ig
Q09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Cj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
Lgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklF
RCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArLyogVGhpcyBpcyBkZXJpdmVkIGZyb20gdWtuZXRkZXYg
YmVjYXVzZSBvZiBjb25zaXN0ZW5jeSByZWFzb25zICovCj4gKyNpZm5kZWYgX19VS19CTEtERVZf
Q09SRV9fCj4gKyNkZWZpbmUgX19VS19CTEtERVZfQ09SRV9fCj4gKwo+ICsjaW5jbHVkZSA8dWsv
bGlzdC5oPgo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gKwo+ICsvKioKPiArICogVW5pa3Jh
ZnQgYmxvY2sgQVBJIGNvbW1vbiBkZWNsYXJhdGlvbnMuCj4gKyAqCj4gKyAqIFRoaXMgaGVhZGVy
IGNvbnRhaW5zIGFsbCBBUEkgZGF0YSB0eXBlcy4gU29tZSBvZiB0aGVtIGFyZSBwYXJ0IG9mIHRo
ZQo+ICsgKiBwdWJsaWMgQVBJIGFuZCBzb21lIGFyZSBwYXJ0IG9mIHRoZSBpbnRlcm5hbCBBUEku
Cj4gKyAqCj4gKyAqIFRoZSBkZXZpY2UgZGF0YSBhbmQgb3BlcmF0aW9ucyBhcmUgc2VwYXJhdGVk
LiBUaGlzIHNwbGl0IGFsbG93cyB0aGUKPiArICogZnVuY3Rpb24gcG9pbnRlciBhbmQgZHJpdmVy
IGRhdGEgdG8gYmUgcGVyLXByb2Nlc3MsIHdoaWxlIHRoZSBhY3R1YWwKPiArICogY29uZmlndXJh
dGlvbiBkYXRhIGZvciB0aGUgZGV2aWNlIGlzIHNoYXJlZC4KPiArICovCj4gKwo+ICsjaWZkZWYg
X19jcGx1c3BsdXMKPiArZXh0ZXJuICJDIiB7Cj4gKyNlbmRpZgo+ICsKPiArc3RydWN0IHVrX2Js
a2RldjsKPiArCj4gKy8qKgo+ICsgKiBMaXN0IHdpdGggZGV2aWNlcwo+ICsgKi8KPiArVUtfVEFJ
TFFfSEVBRCh1a19ibGtkZXZfbGlzdCwgc3RydWN0IHVrX2Jsa2Rldik7Cj4gKwo+ICsvKioKPiAr
ICogRW51bSB0byBkZXNjcmliZSB0aGUgcG9zc2libGUgc3RhdGVzIG9mIGFuIGJsb2NrIGRldmlj
ZS4KPiArICovCj4gK2VudW0gdWtfYmxrZGV2X3N0YXRlIHsKPiArCVVLX0JMS0RFVl9JTlZBTElE
ID0gMCwKPiArCVVLX0JMS0RFVl9VTkNPTkZJR1VSRUQsCj4gKwlVS19CTEtERVZfQ09ORklHVVJF
RCwKPiArCVVLX0JMS0RFVl9SVU5OSU5HLAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIEBpbnRlcm5h
bAo+ICsgKiBsaWJ1a2Jsa2RldiBpbnRlcm5hbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGJs
b2NrIGRldmljZS4KPiArICovCj4gK3N0cnVjdCB1a19ibGtkZXZfZGF0YSB7Cj4gKwkgLyogRGV2
aWNlIGlkIGlkZW50aWZpZXIgKi8KPiArCWNvbnN0IHVpbnQxNl90IGlkOwo+ICsJLyogRGV2aWNl
IHN0YXRlICovCj4gKwllbnVtIHVrX2Jsa2Rldl9zdGF0ZSBzdGF0ZTsKPiArCS8qIE5hbWUgb2Yg
ZGV2aWNlKi8KPiArCWNvbnN0IGNoYXIgKmRydl9uYW1lOwo+ICt9Owo+ICsKPiArc3RydWN0IHVr
X2Jsa2RldiB7Cj4gKwkvKiBQb2ludGVyIHRvIEFQSS1pbnRlcm5hbCBzdGF0ZSBkYXRhLiAqLwo+
ICsJc3RydWN0IHVrX2Jsa2Rldl9kYXRhICpfZGF0YTsKPiArCS8qIEVudHJ5IGZvciBsaXN0IG9m
IGJsb2NrIGRldmljZXMgKi8KPiArCVVLX1RBSUxRX0VOVFJZKHN0cnVjdCB1a19ibGtkZXYpIF9s
aXN0Owo+ICt9Owo+ICsKPiArI2lmZGVmIF9fY3BsdXNwbHVzCj4gK30KPiArI2VuZGlmCj4gKwo+
ICsjZW5kaWYgLyogX19VS19CTEtERVZfQ09SRV9fICovCj4gZGlmZiAtLWdpdCBhL2xpYi91a2Js
a2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9kcml2ZXIuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldl9kcml2ZXIuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAu
LmI3MmY1MmFiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldl9kcml2ZXIuaAo+IEBAIC0wLDAgKzEsNzcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBSb3hhbmEgTmlj
b2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHly
aWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKPiArICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiAr
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArLyogVGhpcyBpcyBkZXJpdmVkIGZy
b20gdWtuZXRkZXYgYmVjYXVzZSBvZiBjb25zaXN0ZW5jeSByZWFzb25zICovCj4gKyNpZm5kZWYg
X19VS19CTEtERVZfRFJJVkVSX18KPiArI2RlZmluZSBfX1VLX0JMS0RFVl9EUklWRVJfXwo+ICsK
PiArI2luY2x1ZGUgPHVrL2Jsa2Rldl9jb3JlLmg+Cj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4K
PiArCj4gKy8qKgo+ICsgKiBVbmlrcmFmdCBibG9jayBkcml2ZXIgQVBJLgo+ICsgKgo+ICsgKiBU
aGlzIGhlYWRlciBjb250YWlucyBhbGwgQVBJIGZ1bmN0aW9ucyB0aGF0IGFyZSBzdXBwb3NlZCB0
byBiZSBjYWxsZWQKPiArICogYnkgYSBibG9jayBkZXZpY2UgZHJpdmVyLgo+ICsgKi8KPiArCj4g
KyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4gKwo+ICsvKioK
PiArICogQWRkcyBhIFVuaWtyYWZ0IGJsb2NrIGRldmljZSB0byB0aGUgZGV2aWNlIGxpc3QuCj4g
KyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciBhIGRyaXZlciBhZGRzIGEgbmV3IGZv
dW5kIGRldmljZS4KPiArICoKPiArICogQHBhcmFtIGRldgo+ICsgKglTdHJ1Y3QgdG8gdW5pa3Jh
ZnQgYmxvY2sgZGV2aWNlIHRoYXQgc2hhbGwgYmUgcmVnaXN0ZXJlZAo+ICsgKiBAcGFyYW0gYQo+
ICsgKglBbGxvY2F0b3IgdG8gYmUgdXNlIGZvciBsaWJ1a2Jsa2RldiBwcml2YXRlIGRhdGEgKGRl
di0+X2RhdGEpCj4gKyAqIEBwYXJhbSBkcnZfbmFtZQo+ICsgKgkoT3B0aW9uYWwpIGRyaXZlciBu
YW1lCj4gKyAqCVRoZSBtZW1vcnkgZm9yIHRoaXMgc3RyaW5nIGhhcyB0byBzdGF5IGF2YWlsYWJs
ZSBhcyBsb25nIGFzIHRoZQo+ICsgKglkZXZpY2UgaXMgcmVnaXN0ZXJlZC4KPiArICogQHJldHVy
bgo+ICsgKgktICgtRU5PTUVNKTogQWxsb2NhdGlvbiBvZiBwcml2YXRlCj4gKyAqCS0gKD49MCk6
IEJsb2NrIGRldmljZSBJRCBvbiBzdWNjZXNzCj4gKyAqLwo+ICtpbnQgdWtfYmxrZGV2X2Rydl9y
ZWdpc3RlcihzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJc3RydWN0IHVrX2FsbG9jICphLAo+
ICsJCWNvbnN0IGNoYXIgKmRydl9uYW1lKTsKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9
Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9fVUtfQkxLREVWX0RSSVZFUl9fICovCj4gCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:17:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:17: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 1hbl8m-0005LP-WD; Fri, 14 Jun 2019 12:17: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=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl8l-0005LD-Bt
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:17:07 +0000
X-Inumbo-ID: 519eb010-8e9e-11e9-bc79-d737cd65d4d9
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 519eb010-8e9e-11e9-bc79-d737cd65d4d9;
 Fri, 14 Jun 2019 12:17:04 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7041CF2033;
 Fri, 14 Jun 2019 14:17:03 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id FCPCC3oBHN-4; Fri, 14 Jun 2019 14:17:03 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 27826F2014;
 Fri, 14 Jun 2019 14:16:57 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:16:56
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083326.14292-1-nicolescu.roxana1996@gmail.com>
Message-ID: <8f3b9989-2d2c-8915-f9b8-080326a6f0e8@neclab.eu>
Date: Fri, 14 Jun 2019 14:16:56 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083326.14292-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 3/6] lib/ukblkdev: Blkdev
 initialization
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

T24gMjkuMDUuMTkgMTA6MzMsIFJveGFuYSBOaWNvbGVzY3Ugd3JvdGU6Cj4gVGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIHRoZSBBUEkgZm9yIGluaXRpYWxpemluZyBhIFVuaWtyYWZ0IGJsb2NrIGRldmlj
ZS4KPiBUaGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgo+
ICAgICAgKDEpIENvbmZpZ3VyZSBtYWluIGFzcGVjdHMgb2YgZGV2aWNlIChlLmcuLCBudW1iZXIg
b2YgcXVldWVzKQo+ICAgICAgKDIpIENvbmZpZ3VyZSBlYWNoIHF1ZXVlCj4gICAgICAoMykgU3Rh
cnQgdGhlIGRldmljZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSb3hhbmEgTmljb2xlc2N1IDxuaWNv
bGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gLS0tCj4gICBsaWIvdWtibGtkZXYvQ29uZmln
LnVrICAgICAgICAgICAgICAgIHwgIDI1ICsrKy0KPiAgIGxpYi91a2Jsa2Rldi9ibGtkZXYuYyAg
ICAgICAgICAgICAgICAgfCAyNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+
ICAgbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsgICAgICAgICAgICB8ICAgNSArCj4gICBsaWIv
dWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXYuaCAgICAgIHwgMTAwICsrKysrKysrKysrKysrCj4g
ICBsaWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5oIHwgMTM0ICsrKysrKysrKysr
KysrKysrKysKPiAgIDUgZmlsZXMgY2hhbmdlZCwgNTAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRp
b24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L0NvbmZpZy51ayBiL2xpYi91a2Js
a2Rldi9Db25maWcudWsKPiBpbmRleCBiMTdkNjE2Ny4uMzFiMWExZDIgMTAwNjQ0Cj4gLS0tIGEv
bGliL3VrYmxrZGV2L0NvbmZpZy51awo+ICsrKyBiL2xpYi91a2Jsa2Rldi9Db25maWcudWsKPiBA
QCAtMSw2ICsxLDI5IEBACj4gLWNvbmZpZyBMSUJVS0JMS0RFVgo+ICttZW51Y29uZmlnIExJQlVL
QkxLREVWCj4gICAJYm9vbCAidWtibGtkZXY6IEJsb2NrIGRyaXZlciBpbnRlcmZhY2UiCj4gICAJ
ZGVmYXVsdCBuCj4gICAJc2VsZWN0IExJQlVLQUxMT0MKPiAgIAlzZWxlY3QgTElCTk9MSUJDIGlm
ICFIQVZFX0xJQkMKPiAgIAlzZWxlY3QgTElCVUtERUJVRwo+ICsKPiAraWYgTElCVUtCTEtERVYK
PiArCWNvbmZpZyBMSUJVS0JMS0RFVl9NQVhOQlFVRVVFUwo+ICsgICAgICAgICAgICAgICAgaW50
ICJNYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0LXJlc3BvbnNlIHF1ZXVlcyIKPiArICAgICAgICAg
ICAgICAgIGRlZmF1bHQgMQo+ICsJCWhlbHAKPiArCQkJVXBwZXIgbGltaXQgZm9yIHN1cHBvcnRl
ZCBudW1iZXIgb2YgdHJhbnNtaXQgYW5kIHJlY2VpdmUKPiArCQkJcXVldWVzIHdpdGggdGhlIHVr
YmxrZGV2IEFQSS4KCllvdSBzaG91bGQgcmVwbGFjZSAidHJhbnNtaXQgYW5kIHJlY2VpdmUgcXVl
dWVzIiB3aXRoICJyZXF1ZXN0LXJlc3BvbnNlIApxdWV1ZXMiLgoKPiArCj4gKwljb25maWcgTElC
VUtCTEtERVZfRElTUEFUQ0hFUlRIUkVBRFMKPiArICAgICAgICAgICAgICAgIGJvb2wgIkRpc3Bh
dGNoZXIgdGhyZWFkcyBmb3IgZXZlbnQgY2FsbGJhY2tzIgo+ICsgICAgICAgICAgICAgICAgZGVm
YXVsdCBuCj4gKyAgICAgICAgICAgICAgICBzZWxlY3QgTElCVUtTQ0hFRAo+ICsgICAgICAgICAg
ICAgICAgc2VsZWN0IExJQlVLTE9DSwo+ICsJCXNlbGVjdCBMSUJVS0xPQ0tfU0VNQVBIT1JFCj4g
KwkJaGVscAo+ICsJCQlFdmVudCBjYWxsYmFja3MgYXJlIGRpc3BhdGNoZWQgaW4gYSBib3R0b20g
aGFsZgo+ICsJCQl0aHJlYWQgY29udGV4dCBpbnN0ZWFkIG9mIHRoZSBkZXZpY2UgaW50ZXJydXB0
IGNvbnRleHQuCj4gKwkJCVdoZW4gdGhpcyBvcHRpb24gaXMgZW5hYmxlZCBhIGRpc3BhdGNoZXIg
dGhyZWFkIGlzCj4gKwkJCWFsbG9jYXRlZCBmb3IgZWFjaCBjb25maWd1cmVkIHF1ZXVlLgo+ICsJ
CQlsaWJ1a3NjaGVkIGlzIHJlcXVpcmVkIGZvciB0aGlzIG9wdGlvbi4KPiArCj4gK2VuZGlmCj4g
ZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rldi9ibGtkZXYuYyBiL2xpYi91a2Jsa2Rldi9ibGtkZXYu
Ywo+IGluZGV4IGRmYWNmMWNhLi42YjgyY2Y4ZCAxMDA2NDQKPiAtLS0gYS9saWIvdWtibGtkZXYv
YmxrZGV2LmMKPiArKysgYi9saWIvdWtibGtkZXYvYmxrZGV2LmMKPiBAQCAtNzcsNiArNzcsMTMg
QEAgaW50IHVrX2Jsa2Rldl9kcnZfcmVnaXN0ZXIoc3RydWN0IHVrX2Jsa2RldiAqZGV2LCBzdHJ1
Y3QgdWtfYWxsb2MgKmEsCj4gICAKPiAgIAkvKiBEYXRhIG11c3QgYmUgdW5hbGxvY2F0ZWQuICov
Cj4gICAJVUtfQVNTRVJUKFBUUklTRVJSKGRldi0+X2RhdGEpKTsKPiArCS8qIEFzc2VydCBtYW5k
YXRvcnkgY29uZmlndXJhdGlvbi4gKi8KPiArCVVLX0FTU0VSVChkZXYtPmRldl9vcHMpOwo+ICsJ
VUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+ZGV2X2NvbmZpZ3VyZSk7Cj4gKwlVS19BU1NFUlQoZGV2
LT5kZXZfb3BzLT5kZXZfc3RhcnQpOwo+ICsJVUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+cXVldWVf
c2V0dXApOwo+ICsJVUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+Z2V0X2luZm8pOwo+ICsJVUtfQVNT
RVJUKGRldi0+ZGV2X29wcy0+cXVldWVfZ2V0X2luZm8pOwo+ICAgCj4gICAJZGV2LT5fZGF0YSA9
IF9hbGxvY19kYXRhKGEsIGJsa2Rldl9jb3VudCwgIGRydl9uYW1lKTsKPiAgIAlpZiAoIWRldi0+
X2RhdGEpCj4gQEAgLTEzMSwzICsxMzgsMjM2IEBAIGVudW0gdWtfYmxrZGV2X3N0YXRlIHVrX2Js
a2Rldl9zdGF0ZV9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2KQo+ICAgCj4gICAJcmV0dXJuIGRl
di0+X2RhdGEtPnN0YXRlOwo+ICAgfQo+ICsKPiAraW50IHVrX2Jsa2Rldl9nZXRfaW5mbyhzdHJ1
Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJc3RydWN0IHVrX2Jsa2Rldl9pbmZvICpkZXZfaW5mbykK
PiArewo+ICsJaW50IHJjID0gMDsKPiArCj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCVVLX0FTU0VS
VChkZXYtPmRldl9vcHMpOwo+ICsJVUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+Z2V0X2luZm8pOwo+
ICsJVUtfQVNTRVJUKGRldl9pbmZvKTsKPiArCj4gKwkvKiBDbGVhciB2YWx1ZXMgYmVmb3JlIHF1
ZXJ5aW5nIGRyaXZlciBmb3IgY2FwYWJpbGl0aWVzICovCj4gKwltZW1zZXQoZGV2X2luZm8sIDAs
IHNpemVvZigqZGV2X2luZm8pKTsKPiArCWRldi0+ZGV2X29wcy0+Z2V0X2luZm8oZGV2LCBkZXZf
aW5mbyk7Cj4gKwo+ICsJLyogTGltaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1ZXVlcwo+ICsJ
ICogYWNjb3JkaW5nIHRvIHRoZSBBUEkgY29uZmlndXJhdGlvbgo+ICsJICovCj4gKwlkZXZfaW5m
by0+bWF4X3F1ZXVlcyA9IE1JTihDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMsCj4gKwkJ
CWRldl9pbmZvLT5tYXhfcXVldWVzKTsKPiArCj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gK2lu
dCB1a19ibGtkZXZfY29uZmlndXJlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQljb25zdCBz
dHJ1Y3QgdWtfYmxrZGV2X2NvbmYgKmNvbmYpCj4gK3sKPiArCWludCByYyA9IDA7Cj4gKwlzdHJ1
Y3QgdWtfYmxrZGV2X2luZm8gZGV2X2luZm87Cj4gKwo+ICsJVUtfQVNTRVJUKGRldik7Cj4gKwlV
S19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4gKwlVS19BU1NFUlQoZGV2LT5kZXZfb3BzKTsKPiArCVVL
X0FTU0VSVChkZXYtPmRldl9vcHMtPmRldl9jb25maWd1cmUpOwo+ICsJVUtfQVNTRVJUKGNvbmYp
Owo+ICsKPiArCXJjID0gdWtfYmxrZGV2X2dldF9pbmZvKGRldiwgJmRldl9pbmZvKTsKPiArCWlm
IChyYykgewo+ICsJCXVrX3ByX2VycigiYmxrZGV2LSUiUFJJdTE2IjogRmFpbGVkIHRvIGdldCBp
bml0aWFsIGluZm86ICVkXG4iLAo+ICsJCQkJZGV2LT5fZGF0YS0+aWQsIHJjKTsKPiArCQlyZXR1
cm4gcmM7Cj4gKwl9Cj4gKwo+ICsJaWYgKGNvbmYtPm5iX3F1ZXVlcyA+IGRldl9pbmZvLm1heF9x
dWV1ZXMpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJcmMgPSBkZXYtPmRldl9vcHMtPmRl
dl9jb25maWd1cmUoZGV2LCBjb25mKTsKPiArCWlmICghcmMpIHsKPiArCQl1a19wcl9pbmZvKCJi
bGtkZXYlIlBSSXUxNiI6IENvbmZpZ3VyZWQgaW50ZXJmYWNlXG4iLAo+ICsJCQkJZGV2LT5fZGF0
YS0+aWQpOwo+ICsJCWRldi0+X2RhdGEtPnN0YXRlID0gVUtfQkxLREVWX0NPTkZJR1VSRUQ7Cj4g
Kwl9IGVsc2UKPiArCQl1a19wcl9lcnIoImJsa2RldiUiUFJJdTE2IjogRmFpbGVkIHRvIGNvbmZp
Z3VyZSBpbnRlcmZhY2UgJWRcbiIsCj4gKwkJCQlkZXYtPl9kYXRhLT5pZCwgcmMpOwo+ICsKPiAr
CXJldHVybiByYzsKPiArfQo+ICsKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVS
VEhSRUFEUwo+ICtzdGF0aWMgdm9pZCBfZGlzcGF0Y2hlcih2b2lkICphcmdzKQo+ICt7Cj4gKwlz
dHJ1Y3QgdWtfYmxrZGV2X2V2ZW50X2hhbmRsZXIgKmhhbmRsZXIgPQo+ICsJCShzdHJ1Y3QgdWtf
YmxrZGV2X2V2ZW50X2hhbmRsZXIgKikgYXJnczsKPiArCj4gKwlVS19BU1NFUlQoaGFuZGxlcik7
Cj4gKwlVS19BU1NFUlQoaGFuZGxlci0+Y2FsbGJhY2spOwo+ICsKPiArCXdoaWxlICgxKSB7Cj4g
KwkJdWtfc2VtYXBob3JlX2Rvd24oJmhhbmRsZXItPmV2ZW50cyk7Cj4gKwkJaGFuZGxlci0+Y2Fs
bGJhY2soaGFuZGxlci0+ZGV2LAo+ICsJCQloYW5kbGVyLT5xdWV1ZV9pZCwgaGFuZGxlci0+Y29v
a2llKTsKPiArCX0KPiArfQo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBpbnQgX2NyZWF0ZV9ldmVu
dF9oYW5kbGVyKHVrX2Jsa2Rldl9xdWV1ZV9ldmVudF90IGNhbGxiYWNrLAo+ICsJCXZvaWQgKmNv
b2tpZSwKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVSVEhSRUFEUwo+ICsJCXN0
cnVjdCB1a19ibGtkZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQsCj4gKwkJc3RydWN0IHVrX3Nj
aGVkICpzLAo+ICsjZW5kaWYKPiArCQlzdHJ1Y3QgdWtfYmxrZGV2X2V2ZW50X2hhbmRsZXIgKmV2
ZW50X2hhbmRsZXIpCj4gK3sKPiArCVVLX0FTU0VSVChldmVudF9oYW5kbGVyKTsKPiArCVVLX0FT
U0VSVChjYWxsYmFjayB8fCAoIWNhbGxiYWNrICYmICFjb29raWUpKTsKPiArCj4gKwlldmVudF9o
YW5kbGVyLT5jYWxsYmFjayA9IGNhbGxiYWNrOwo+ICsJZXZlbnRfaGFuZGxlci0+Y29va2llID0g
Y29va2llOwo+ICsKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVSVEhSRUFEUwo+
ICsJLyogSWYgd2UgZG8gbm90IGhhdmUgYSBjYWxsYmFjaywgd2UgZG8gbm90IG5lZWQgYSB0aHJl
YWQgKi8KPiArCWlmICghY2FsbGJhY2spCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZXZlbnRfaGFu
ZGxlci0+ZGV2ID0gZGV2Owo+ICsJZXZlbnRfaGFuZGxlci0+cXVldWVfaWQgPSBxdWV1ZV9pZDsK
PiArCXVrX3NlbWFwaG9yZV9pbml0KCZldmVudF9oYW5kbGVyLT5ldmVudHMsIDApOwo+ICsJZXZl
bnRfaGFuZGxlci0+ZGlzcGF0Y2hlcl9zID0gczsKPiArCj4gKwkvKiBDcmVhdGUgYSBuYW1lIGZv
ciB0aGUgZGlzcGF0Y2hlciB0aHJlYWQuCj4gKwkgKiBJbiBjYXNlIG9mIGVycm9ycywgd2UganVz
dCBjb250aW51ZSB3aXRob3V0IGEgbmFtZQo+ICsJICovCj4gKwlpZiAoYXNwcmludGYoJmV2ZW50
X2hhbmRsZXItPmRpc3BhdGNoZXJfbmFtZSwKPiArCQkJICJibGtkZXYlIlBSSXUxNiItcSUiUFJJ
dTE2Il0iLAo+ICsJCQkgZGV2LT5fZGF0YS0+aWQsIHF1ZXVlX2lkKSA8IDApIHsKPiArCQlldmVu
dF9oYW5kbGVyLT5kaXNwYXRjaGVyX25hbWUgPSBOVUxMOwo+ICsJfQo+ICsKPiArCS8qIENyZWF0
ZSB0aHJlYWQgKi8KPiArCWV2ZW50X2hhbmRsZXItPmRpc3BhdGNoZXIgPSB1a19zY2hlZF90aHJl
YWRfY3JlYXRlKAo+ICsJCQlldmVudF9oYW5kbGVyLT5kaXNwYXRjaGVyX3MsCj4gKwkJCWV2ZW50
X2hhbmRsZXItPmRpc3BhdGNoZXJfbmFtZSwgTlVMTCwKPiArCQkJX2Rpc3BhdGNoZXIsICh2b2lk
ICopZXZlbnRfaGFuZGxlcik7Cj4gKwlpZiAoZXZlbnRfaGFuZGxlci0+ZGlzcGF0Y2hlciA9PSBO
VUxMKSB7Cj4gKwkJaWYgKGV2ZW50X2hhbmRsZXItPmRpc3BhdGNoZXJfbmFtZSkgewo+ICsJCQlm
cmVlKGV2ZW50X2hhbmRsZXItPmRpc3BhdGNoZXIpOwo+ICsJCQlldmVudF9oYW5kbGVyLT5kaXNw
YXRjaGVyID0gTlVMTDsKPiArCQl9Cj4gKwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsj
ZW5kaWYKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX2Rlc3Ryb3lf
ZXZlbnRfaGFuZGxlcihzdHJ1Y3QgdWtfYmxrZGV2X2V2ZW50X2hhbmRsZXIgKmgKPiArCQkJCSAg
IF9fbWF5YmVfdW51c2VkKQo+ICt7Cj4gKwlVS19BU1NFUlQoaCk7Cj4gKwo+ICsjaWYgQ09ORklH
X0xJQlVLQkxLREVWX0RJU1BBVENIRVJUSFJFQURTCj4gKwlpZiAoaC0+ZGlzcGF0Y2hlcikgewo+
ICsJCVVLX0FTU0VSVChoLT5kaXNwYXRjaGVyX3MpOwo+ICsJCXVrX3RocmVhZF9raWxsKGgtPmRp
c3BhdGNoZXIpOwo+ICsJCXVrX3RocmVhZF93YWl0KGgtPmRpc3BhdGNoZXIpOwo+ICsJCWgtPmRp
c3BhdGNoZXIgPSBOVUxMOwo+ICsJfQo+ICsKPiArCWlmIChoLT5kaXNwYXRjaGVyX25hbWUpIHsK
PiArCQlmcmVlKGgtPmRpc3BhdGNoZXJfbmFtZSk7Cj4gKwkJaC0+ZGlzcGF0Y2hlcl9uYW1lID0g
TlVMTDsKPiArCX0KPiArI2VuZGlmCj4gK30KPiArCj4gK2ludCB1a19ibGtkZXZfcXVldWVfZ2V0
X2luZm8oc3RydWN0IHVrX2Jsa2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCwKPiArCQlzdHJ1
Y3QgdWtfYmxrZGV2X3F1ZXVlX2luZm8gKnFfaW5mbykKPiArewo+ICsJVUtfQVNTRVJUKGRldik7
Cj4gKwlVS19BU1NFUlQocXVldWVfaWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMp
Owo+ICsJVUtfQVNTRVJUKHFfaW5mbyk7Cj4gKwpZb3Ugc2hvdWxkIG1lbXNldCB0aGUgZ2l2ZW4g
bWVtb3J5IHBpZWNlIChxX2luZm8pIGJlZm9yZSBjYWxsaW5nIHRoZSAKY2FsbGJhY2suIFRoZSBk
cml2ZXIgZG9lcyB0aGVuIG9ubHkgbmVlZCB0byBmaWxsIG91dCB0aGUgZmllbGRzIGl0IGNhcmVz
IAphYm91dCwgdGhlIHJlc3QgYmVjb21lcyBhdXRvbWF0aWNhbGx5IDAuCgo+ICsJcmV0dXJuIGRl
di0+ZGV2X29wcy0+cXVldWVfZ2V0X2luZm8oZGV2LCBxdWV1ZV9pZCwgcV9pbmZvKTsKPiArfQo+
ICsKPiAraW50IHVrX2Jsa2Rldl9xdWV1ZV9jb25maWd1cmUoc3RydWN0IHVrX2Jsa2RldiAqZGV2
LCB1aW50MTZfdCBxdWV1ZV9pZCwKPiArCQkgdWludDE2X3QgbmJfZGVzYywKPiArCQljb25zdCBz
dHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlX2NvbmYgKnF1ZXVlX2NvbmYpCj4gK3sKPiArCWludCBlcnIg
PSAwOwo+ICsKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+
ICsJVUtfQVNTRVJUKGRldi0+ZGV2X29wcyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5kZXZfb3BzLT5x
dWV1ZV9zZXR1cCk7Cj4gKwlVS19BU1NFUlQoZGV2LT5maW5pc2hfcmVxcyk7Cj4gKwlVS19BU1NF
UlQocXVldWVfaWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMpOwo+ICsJVUtfQVNT
RVJUKHF1ZXVlX2NvbmYpOwo+ICsKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVS
VEhSRUFEUwo+ICsJVUtfQVNTRVJUKChxdWV1ZV9jb25mLT5jYWxsYmFjayAmJiBxdWV1ZV9jb25m
LT5zKQo+ICsJCQkgIHx8ICFxdWV1ZV9jb25mLT5jYWxsYmFjayk7Cj4gKyNlbmRpZgo+ICsKPiAr
CWlmIChkZXYtPl9kYXRhLT5zdGF0ZSAhPSBVS19CTEtERVZfQ09ORklHVVJFRCkKPiArCQlyZXR1
cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhcmUgbm90IGluaXRpYWxp
emluZyB0aGlzIHF1ZXVlIGEgc2Vjb25kIHRpbWUgKi8KPiArCWlmICghUFRSSVNFUlIoZGV2LT5f
cXVldWVbcXVldWVfaWRdKSkKPiArCQlyZXR1cm4gLUVCVVNZOwo+ICsKPiArCWVyciA9IF9jcmVh
dGVfZXZlbnRfaGFuZGxlcihxdWV1ZV9jb25mLT5jYWxsYmFjaywKPiArCQkJcXVldWVfY29uZi0+
Y2FsbGJhY2tfY29va2llLAo+ICsjaWYgQ09ORklHX0xJQlVLQkxLREVWX0RJU1BBVENIRVJUSFJF
QURTCj4gKwkJCWRldiwgcXVldWVfaWQsIHF1ZXVlX2NvbmYtPnMsCj4gKyNlbmRpZgo+ICsJCQkm
ZGV2LT5fZGF0YS0+cXVldWVfaGFuZGxlcltxdWV1ZV9pZF0pOwo+ICsJaWYgKGVycikKPiArCQln
b3RvIGVycl9vdXQ7Cj4gKwo+ICsJZGV2LT5fcXVldWVbcXVldWVfaWRdID0gZGV2LT5kZXZfb3Bz
LT5xdWV1ZV9zZXR1cChkZXYsIHF1ZXVlX2lkLAo+ICsJCQluYl9kZXNjLAo+ICsJCQlxdWV1ZV9j
b25mKTsKPiArCWlmIChQVFJJU0VSUihkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0pKSB7Cj4gKwkJZXJy
ID0gUFRSMkVSUihkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0pOwo+ICsJCXVrX3ByX2VycigiYmxrZGV2
JSJQUkl1MTYiLXElIlBSSXUxNiI6IEZhaWxlZCB0byBjb25maWd1cmU6ICVkXG4iLAo+ICsJCQkJ
ZGV2LT5fZGF0YS0+aWQsIHF1ZXVlX2lkLCBlcnIpOwo+ICsJCWdvdG8gZXJyX2Rlc3Ryb3lfaGFu
ZGxlcjsKPiArCX0KPiArCj4gKwl1a19wcl9pbmZvKCJibGtkZXYlIlBSSXUxNiI6IENvbmZpZ3Vy
ZWQgcXVldWUgJSJQUkl1MTYiXG4iLAo+ICsJCQlkZXYtPl9kYXRhLT5pZCwgcXVldWVfaWQpOwo+
ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfZGVzdHJveV9oYW5kbGVyOgo+ICsJX2Rlc3Ryb3lfZXZl
bnRfaGFuZGxlcigmZGV2LT5fZGF0YS0+cXVldWVfaGFuZGxlcltxdWV1ZV9pZF0pOwo+ICtlcnJf
b3V0Ogo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAraW50IHVrX2Jsa2Rldl9zdGFydChzdHJ1
Y3QgdWtfYmxrZGV2ICpkZXYpCj4gK3sKPiArCWludCByYyA9IDA7Cj4gKwo+ICsJVUtfQVNTRVJU
KGRldik7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4gKwlVS19BU1NFUlQoZGV2LT5kZXZf
b3BzKTsKPiArCVVLX0FTU0VSVChkZXYtPmRldl9vcHMtPmRldl9zdGFydCk7Cj4gKwlVS19BU1NF
UlQoZGV2LT5fZGF0YS0+c3RhdGUgPT0gVUtfQkxLREVWX0NPTkZJR1VSRUQpOwo+ICsKPiArCXJj
ID0gZGV2LT5kZXZfb3BzLT5kZXZfc3RhcnQoZGV2KTsKPiArCWlmIChyYykKPiArCQl1a19wcl9l
cnIoImJsa2RldiUiUFJJdTE2IjogRmFpbGVkIHRvIHN0YXJ0IGludGVyZmFjZSAlZFxuIiwKPiAr
CQkJICAgZGV2LT5fZGF0YS0+aWQsIHJjKTsKPiArCWVsc2Ugewo+ICsJCXVrX3ByX2luZm8oImJs
a2RldiUiUFJJdTE2IjogU3RhcnRlZCBpbnRlcmZhY2VcbiIsCj4gKwkJCQkJICAgZGV2LT5fZGF0
YS0+aWQpOwo+ICsJCWRldi0+X2RhdGEtPnN0YXRlID0gVUtfQkxLREVWX1JVTk5JTkc7Cj4gKwl9
Cj4gKwo+ICsJcmV0dXJuIHJjOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rldi9leHBv
cnRzeW1zLnVrIGIvbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsKPiBpbmRleCAzNGUyMjQyNi4u
MDc3OTk0ZjAgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsKPiArKysg
Yi9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+IEBAIC00LDMgKzQsOCBAQCB1a19ibGtkZXZf
Z2V0Cj4gICB1a19ibGtkZXZfaWRfZ2V0Cj4gICB1a19ibGtkZXZfZHJ2X25hbWVfZ2V0Cj4gICB1
a19ibGtkZXZfc3RhdGVfZ2V0Cj4gK3VrX2Jsa2Rldl9nZXRfaW5mbwo+ICt1a19ibGtkZXZfY29u
ZmlndXJlCj4gK3VrX2Jsa2Rldl9xdWV1ZV9nZXRfaW5mbwo+ICt1a19ibGtkZXZfcXVldWVfY29u
ZmlndXJlCj4gK3VrX2Jsa2Rldl9zdGFydAo+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvaW5j
bHVkZS91ay9ibGtkZXYuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldi5oCj4gaW5k
ZXggZDY3ODY3N2YuLmQzMmY2MmZjIDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jsa2Rldi9pbmNsdWRl
L3VrL2Jsa2Rldi5oCj4gKysrIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmgKPiBA
QCAtNDgsNiArNDgsMTIgQEAKPiAgICAqIHRvIHVrX2Jsa2Rldl9nZXQoKS4gVGhlIGJsb2NrIGFw
cCBzaG91bGQgc3RvcmUgdGhpcyByZWZlcmVuY2UgYW5kCj4gICAgKiB1c2UgaXQgZm9yIGFsbCBz
dWJzZXF1ZW50IEFQSSBjYWxscy4KPiAgICAqCj4gKyAqIFRoZSBmdW5jdGlvbnMgZXhwb3J0ZWQg
YnkgdGhlIFVuaWtyYWZ0IEJMSyBBUEkgdG8gc2V0dXAgYSBkZXZpY2UKPiArICogZGVzaWduYXRl
ZCBieSBpdHMgSUQgbXVzdCBiZSBpbnZva2VkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6Cj4gKyAq
ICAgICAgLSB1a19ibGtkZXZfY29uZmlndXJlKCkKPiArICogICAgICAtIHVrX2Jsa2Rldl9xdWV1
ZV9zZXR1cCgpCj4gKyAqICAgICAgLSB1a19ibGtkZXZfc3RhcnQoKQo+ICsgKgo+ICAgICogVGhl
cmUgYXJlIDQgc3RhdGVzIGluIHdoaWNoIGEgYmxvY2sgZGV2aWNlIGNhbiBiZSBmb3VuZDoKPiAg
ICAqICAgICAgLSBVS19CTEtERVZfVU5SRUdJU1RFUkVECj4gICAgKiAgICAgIC0gVUtfQkxLREVW
X1VOQ09ORklHVVJFRAo+IEBAIC0xMjEsNiArMTI3LDEwMCBAQCBjb25zdCBjaGFyICp1a19ibGtk
ZXZfZHJ2X25hbWVfZ2V0KHN0cnVjdCB1a19ibGtkZXYgKmRldik7Cj4gICAgKi8KPiAgIGVudW0g
dWtfYmxrZGV2X3N0YXRlIHVrX2Jsa2Rldl9zdGF0ZV9nZXQoc3RydWN0IHVrX2Jsa2RldiAqZGV2
KTsKPiAgIAo+ICsvKioKPiArICogUXVlcnkgZGV2aWNlIGNhcGFiaWxpdGllcy4KPiArICogSW5m
b3JtYXRpb24gdGhhdCBpcyB1c2VmdWwgZm9yIGRldmljZSBpbml0aWFsaXphdGlvbiAoZS5nLiwK
PiArICogbWF4aW11bSBudW1iZXIgb2Ygc3VwcG9ydGVkIHF1ZXVlcykuCj4gKyAqCj4gKyAqIEBw
YXJhbSBkZXYKPiArICoJVGhlIFVuaWtyYWZ0IEJsb2NrIERldmljZS4KPiArICogQHBhcmFtIGRl
dl9pbmZvCj4gKyAqCUEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBvZiB0eXBlICp1a19ibGtkZXZf
aW5mbyogdG8gYmUgZmlsbGVkIHdpdGgKPiArICoJdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24g
b2YgYSBibG9jayBkZXZpY2UuCj4gKyAqIEByZXR1cm4KPiArICoJLSAwOiBTdWNjZXNzCj4gKyAq
CS0gPDA6IEVycm9yIGluIGRyaXZlcgo+ICsgKi8KPiAraW50IHVrX2Jsa2Rldl9nZXRfaW5mbyhz
dHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJc3RydWN0IHVrX2Jsa2Rldl9pbmZvICpkZXZfaW5m
byk7Cj4gKwo+ICsvKioKPiArICogQ29uZmlndXJlIGFuIFVuaWtyYWZ0IGJsb2NrIGRldmljZS4K
PiArICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGludm9rZWQgZmlyc3QgYmVmb3JlIGFueSBvdGhl
ciBmdW5jdGlvbiBpbiB0aGUKPiArICogVW5pa3JhZnQgQkxLIEFQSS4gVGhpcyBmdW5jdGlvbiBj
YW4gYWxzbyBiZSByZS1pbnZva2VkIHdoZW4gYSBkZXZpY2UgaXMKPiArICogaW4gdGhlIHN0b3Bw
ZWQgc3RhdGUuCj4gKyAqCj4gKyAqIEBwYXJhbSBkZXYKPiArICoJVGhlIFVuaWtyYWZ0IEJsb2Nr
IERldmljZS4KPiArCj4gKyAqIEByZXR1cm4KPiArICoJLSAwOiBTdWNjZXNzLCBkZXZpY2UgY29u
ZmlndXJlZC4KPiArICoJLSA8MDogRXJyb3IgY29kZSByZXR1cm5lZCBieSB0aGUgZHJpdmVyIGNv
bmZpZ3VyYXRpb24gZnVuY3Rpb24uCj4gKyAqLwo+ICtpbnQgdWtfYmxrZGV2X2NvbmZpZ3VyZShz
dHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJY29uc3Qgc3RydWN0IHVrX2Jsa2Rldl9jb25mICpj
b25mKTsKPiArCj4gKy8qKgo+ICsgKiBRdWVyeSBkZXZpY2UgcXVldWUgY2FwYWJpbGl0aWVzLgo+
ICsgKiBJbmZvcm1hdGlvbiB0aGF0IGlzIHVzZWZ1bCBmb3IgZGV2aWNlIHF1ZXVlIGluaXRpYWxp
emF0aW9uIChlLmcuLAo+ICsgKiBtYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0ZWQgZGVzY3JpcHRv
cnMgb24gcXVldWVzKS4KPiArICoKPiArICogQHBhcmFtIGRldgo+ICsgKiAgIFRoZSBVbmlrcmFm
dCBCbG9jayBEZXZpY2UgaW4gY29uZmlndXJlZCBzdGF0ZS4KPiArICogQHBhcmFtIHF1ZXVlX2lk
Cj4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSB0byBzZXQgdXAuCj4gKyAqICAgVGhlIHZh
bHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBuYl9xdWV1ZSAtIDFdIHByZXZpb3VzbHkgc3Vw
cGxpZWQKPiArICogICB0byB1a19ibGtkZXZfY29uZmlndXJlKCkuCj4gKyAqIEBwYXJhbSBxdWV1
ZV9pbmZvCj4gKyAqICAgQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnVrX2Jsa2Rl
dl9xdWV1ZV9pbmZvKiB0byBiZSBmaWxsZWQgb3V0Cj4gKyAqIEByZXR1cm4KPiArICogICAtICgw
KTogU3VjY2VzcywgcXVldWVfaW5mbyBpcyBmaWxsZWQgb3V0Lgo+ICsgKiAgIC0gKDwwKTogRXJy
b3IgY29kZSBvZiB0aGUgZHJpdmVycyBmdW5jdGlvbi4KPiArICovCj4gK2ludCB1a19ibGtkZXZf
cXVldWVfZ2V0X2luZm8oc3RydWN0IHVrX2Jsa2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCwK
PiArCQlzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlX2luZm8gKnFfaW5mbyk7Cj4gKwo+ICsvKioKPiAr
ICogQWxsb2NhdGUgYW5kIHNldCB1cCBhIHF1ZXVlIGZvciBhbiBVbmlrcmFmdCBibG9jayBkZXZp
Y2UuCj4gKyAqIFRoZSBxdWV1ZSBpcyByZXNwb25zaWJsZSBmb3IgYm90aCByZXF1ZXN0cyBhbmQg
cmVzcG9uc2VzLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFmdCBCbG9j
ayBEZXZpY2UuCj4gKyAqIEBwYXJhbSBxdWV1ZV9pZAo+ICsgKglUaGUgaW5kZXggb2YgdGhlIHF1
ZXVlIHRvIHNldCB1cC4KPiArICoJVGhlIHZhbHVlIG11c3QgYmUgaW4gcmFuZ2UgWzAsIG5iX3F1
ZXVlIC0xXSBwcmV2aW91c2x5IHN1cHBsaWVkCj4gKyAqCXRvIHVrX2Jsa2Rldl9jb25maWd1cmUo
KQo+ICsgKiBAcGFyYW0gbmJfZGVzYwo+ICsgKglOdW1iZXIgb2YgZGVzY3JpcHRvcnMgZm9yIHRo
ZSBxdWV1ZS4gSW5zcGVjdCB1a19ibGtkZXZfcXVldWVfZ2V0X2luZm8oKQo+ICsgKgl0byByZXRy
aWV2ZSBsaW1pdGF0aW9ucy4KPiArICogQHBhcmFtIHF1ZXVlX2NvbmYKPiArICoJVGhlIHBvaW50
ZXIgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBiZSB1c2VkIGZvciB0aGUgcXVldWUuCgpZ
b3UgY2FuIGFkZCBhIG5vdGUgdGhhdCB0aGlzIGNvbmZpZ3VyYXRpb24gZGF0YSBjYW4gYmUgc2hh
cmVkIGFjcm9zcyAKbXVsdGlwbGUgcXVldWUgc2V0dXBzLiBPZiBjb3Vyc2UsIHRoZSBgY29uc3Rg
IGluIHRoZSBhcmd1bWVudCBpcyBnaXZpbmcgCmEgaGludCBhbHJlYWR5IGJ1dCBpdCBzdGlsbCBt
YXliZSBlYXNpZXIgZm9yIGEgZGV2ZWxvcGVyIHRvIHVuZGVyc3RhbmQuCgo+ICsgKiBAcmV0dXJu
Cj4gKyAqCS0gMDogU3VjY2VzcywgcmVjZWl2ZSBxdWV1ZSBjb3JyZWN0bHkgc2V0IHVwLgo+ICsg
KgktIDwwOiBVbmFibGUgdG8gYWxsb2NhdGUgYW5kIHNldCB1cCB0aGUgcmluZyBkZXNjcmlwdG9y
cy4KPiArICovCj4gK2ludCB1a19ibGtkZXZfcXVldWVfY29uZmlndXJlKHN0cnVjdCB1a19ibGtk
ZXYgKmRldiwKPiArCQl1aW50MTZfdCBxdWV1ZV9pZCwKPiArCQl1aW50MTZfdCBuYl9kZXNjLAo+
ICsJCWNvbnN0IHN0cnVjdCB1a19ibGtkZXZfcXVldWVfY29uZiAqcXVldWVfY29uZik7Cj4gKwo+
ICsvKioKPiArICogU3RhcnQgYSBCbG9jayBkZXZpY2UuCj4gKyAqCj4gKyAqIFRoZSBkZXZpY2Ug
c3RhcnQgc3RlcCBpcyB0aGUgbGFzdCBvbmUgYW5kIGNvbnNpc3RzIG9mIHNldHRpbmcgdGhlIGNv
bmZpZ3VyZWQKPiArICogb2ZmbG9hZCBmZWF0dXJlcyBhbmQgaW4gc3RhcnRpbmcgdGhlIHRyYW5z
bWl0IGFuZCB0aGUgcmVjZWl2ZSB1bml0cyBvZiB0aGUKPiArICogZGV2aWNlLgo+ICsgKiBPbiBz
dWNjZXNzLCBhbGwgYmFzaWMgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZSBVbmlrcmFmdCBCTEsg
QVBJCj4gKyAqIGNhbiBiZSBpbnZva2VkLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRo
ZSBVbmlrcmFmdCBCbG9jayBEZXZpY2UuCj4gKyAqIEByZXR1cm4KPiArICoJLSAwOiBTdWNjZXNz
LCBVbmlrcmFmdCBibG9jayBkZXZpY2Ugc3RhcnRlZC4KPiArICoJLSA8MDogRXJyb3IgY29kZSBv
ZiB0aGUgZHJpdmVyIGRldmljZSBzdGFydCBmdW5jdGlvbi4KPiArICovCj4gK2ludCB1a19ibGtk
ZXZfc3RhcnQoc3RydWN0IHVrX2Jsa2RldiAqZGV2KTsKPiArCj4gICAjaWZkZWYgX19jcGx1c3Bs
dXMKPiAgIH0KPiAgICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvaW5jbHVkZS91
ay9ibGtkZXZfY29yZS5oIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaAo+
IGluZGV4IDNjY2NmODdlLi4zNjRjMDVkNyAxMDA2NDQKPiAtLS0gYS9saWIvdWtibGtkZXYvaW5j
bHVkZS91ay9ibGtkZXZfY29yZS5oCj4gKysrIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxr
ZGV2X2NvcmUuaAo+IEBAIC0zOCw2ICszOCwxMCBAQAo+ICAgCj4gICAjaW5jbHVkZSA8dWsvbGlz
dC5oPgo+ICAgI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICsjaWYgZGVmaW5lZChDT05GSUdfTElC
VUtCTEtERVZfRElTUEFUQ0hFUlRIUkVBRFMpCj4gKyNpbmNsdWRlIDx1ay9zY2hlZC5oPgo+ICsj
aW5jbHVkZSA8dWsvc2VtYXBob3JlLmg+Cj4gKyNlbmRpZgo+ICAgCj4gICAvKioKPiAgICAqIFVu
aWtyYWZ0IGJsb2NrIEFQSSBjb21tb24gZGVjbGFyYXRpb25zLgo+IEBAIC03Miw2ICs3NiwxMjkg
QEAgZW51bSB1a19ibGtkZXZfc3RhdGUgewo+ICAgfTsKPiAgIAo+ICAgLyoqCj4gKyAqIFN0cnVj
dHVyZSB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBVbmlrcmFmdCBibG9jayBkZXZpY2UuCj4gKyAqLwo+
ICtzdHJ1Y3QgdWtfYmxrZGV2X2NvbmYgewo+ICsJdWludDE2X3QgbmJfcXVldWVzOwo+ICt9Owo+
ICsKPiArLyoqCj4gKyAqIFN0cnVjdHVyZSB1c2VkIHRvICBkZXNjcmliZSBibG9jayBkZXZpY2Ug
Y2FwYWJpbGl0aWVzCj4gKyAqIGJlZm9yZSBuZWdvdGlhdGlvbgo+ICsgKi8KPiArc3RydWN0IHVr
X2Jsa2Rldl9pbmZvIHsKPiArCS8qIE1heCBuYiBvZiBzdXBwb3J0ZWQgcXVldWVzIGJ5IGRldmlj
ZS4gKi8KPiArCXVpbnQxNl90IG1heF9xdWV1ZXM7Cj4gK307Cj4gKwo+ICsvKioKPiArICogU3Ry
dWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgZGV2aWNlIGRlc2NyaXB0b3IgcmluZyBsaW1pdGF0aW9u
cy4KPiArICovCj4gK3N0cnVjdCB1a19ibGtkZXZfcXVldWVfaW5mbyB7Cj4gKwkvKiBNYXggYWxs
b3dlZCBudW1iZXIgb2YgZGVzY3JpcHRvcnMuICovCj4gKwl1aW50MTZfdCBuYl9tYXg7Cj4gKwkv
KiBNaW4gYWxsb3dlZCBudW1iZXIgb2YgZGVzY3JpcHRvcnMuICovCj4gKwl1aW50MTZfdCBuYl9t
aW47Cj4gKwkvKiBOdW1iZXIgc2hvdWxkIGJlIGEgbXVsdGlwbGUgb2YgbmJfYWxpZ24uICovCj4g
Kwl1aW50MTZfdCBuYl9hbGlnbjsKPiArCS8qIE51bWJlciBzaG91bGQgYmUgYSBwb3dlciBvZiB0
d28uICovCj4gKwlpbnQgbmJfaXNfcG93ZXJfb2ZfdHdvOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAq
IFF1ZXVlIFN0cnVjdHVyZSB1c2VkIGZvciBib3RoIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuCj4g
KyAqLwo+ICtzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlOwoKQWRkIGEgbm90ZSB0aGF0IHRoZSBhY3R1
YWwgc3RydWN0IGRlZmluaXRpb24gaXMgcHJpdmF0ZSB0byB0aGUgZHJpdmVycy4gCldlIGhhdmUg
dGhlIHByb3RvdHlwZSBoZXJlIGp1c3QgZm9yIHR5cGUgY2hlY2tpbmcuCgo+ICsKPiArLyoqCj4g
KyAqIEZ1bmN0aW9uIHR5cGUgdXNlZCBmb3IgcXVldWUgZXZlbnQgY2FsbGJhY2tzLgo+ICsgKgo+
ICsgKiBAcGFyYW0gZGV2Cj4gKyAqICAgVGhlIFVuaWtyYWZ0IEJsb2NrIERldmljZS4KPiArICog
QHBhcmFtIHF1ZXVlCj4gKyAqICAgVGhlIHF1ZXVlIG9uIHRoZSBVbmlrcmFmdCBibG9jayBkZXZp
Y2Ugb24gd2hpY2ggdGhlIGV2ZW50IGhhcHBlbmVkLgo+ICsgKiBAcGFyYW0gYXJncAo+ICsgKiAg
IEV4dHJhIGFyZ3VtZW50IHRoYXQgY2FuIGJlIGRlZmluZWQgb24gY2FsbGJhY2sgcmVnaXN0cmF0
aW9uLgo+ICsgKi8KPiArdHlwZWRlZiB2b2lkICgqdWtfYmxrZGV2X3F1ZXVlX2V2ZW50X3QpKHN0
cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQkJCQl1aW50MTZfdCBxdWV1ZV9pZCwgdm9pZCAqYXJn
cCk7Cj4gKwo+ICsvKioKPiArICogU3RydWN0dXJlIHVzZWQgdG8gY29uZmlndXJlIGFuIFVuaWty
YWZ0IGJsb2NrIGRldmljZSBxdWV1ZS4KPiArICoKPiArICovCj4gK3N0cnVjdCB1a19ibGtkZXZf
cXVldWVfY29uZiB7Cj4gKwkvKiBBbGxvY2F0b3IgdXNlZCBmb3IgZGVzY3JpcHRvciByaW5ncyAq
Lwo+ICsJc3RydWN0IHVrX2FsbG9jICphOwo+ICsJLyogRXZlbnQgY2FsbGJhY2sgZnVuY3Rpb24g
Ki8KPiArCXVrX2Jsa2Rldl9xdWV1ZV9ldmVudF90IGNhbGxiYWNrOwo+ICsJLyogQXJndW1lbnQg
cG9pbnRlciBmb3IgY2FsbGJhY2sqLwo+ICsJdm9pZCAqY2FsbGJhY2tfY29va2llOwo+ICsKPiAr
I2lmIENPTkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVSVEhSRUFEUwo+ICsJLyogU2NoZWR1bGVy
IGZvciBkaXNwYXRjaGVyLiAqLwo+ICsJc3RydWN0IHVrX3NjaGVkICpzOwo+ICsjZW5kaWYKPiAr
fTsKPiArCj4gKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBnZXQgaW5pdGlhbCBkZXZpY2Ug
Y2FwYWJpbGl0aWVzICovCj4gK3R5cGVkZWYgdm9pZCAoKnVrX2Jsa2Rldl9nZXRfaW5mb190KShz
dHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJc3RydWN0IHVrX2Jsa2Rldl9pbmZvICpkZXZfaW5m
byk7Cj4gKwo+ICsvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8gY29uZmlndXJlIGEgYmxvY2sg
ZGV2aWNlLiAqLwo+ICt0eXBlZGVmIGludCAoKnVrX2Jsa2Rldl9jb25maWd1cmVfdCkoc3RydWN0
IHVrX2Jsa2RldiAqZGV2LAo+ICsJCWNvbnN0IHN0cnVjdCB1a19ibGtkZXZfY29uZiAqY29uZik7
Cj4gKwo+ICsvKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBnZXQgaW5mbyBhYm91dCBhIGRldmlj
ZSBxdWV1ZSAqLwo+ICt0eXBlZGVmIGludCAoKnVrX2Jsa2Rldl9xdWV1ZV9nZXRfaW5mb190KShz
dHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJdWludDE2X3QgcXVldWVfaWQsCj4gKwkJc3RydWN0
IHVrX2Jsa2Rldl9xdWV1ZV9pbmZvICpxX2luZm8pOwo+ICsKPiArLyoqIERyaXZlciBjYWxsYmFj
ayB0eXBlIHRvIHNldCB1cCBhIHF1ZXVlIG9mIGFuIFVuaWtyYWZ0IGJsb2NrIGRldmljZS4gKi8K
PiArdHlwZWRlZiBzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICogKCp1a19ibGtkZXZfcXVldWVfY29u
ZmlndXJlX3QpKAo+ICsJCXN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQl1aW50MTZfdCBxdWV1
ZV9pZCwKPiArCQl1aW50MTZfdCBuYl9kZXNjLAo+ICsJCWNvbnN0IHN0cnVjdCB1a19ibGtkZXZf
cXVldWVfY29uZiAqcXVldWVfY29uZik7Cj4gKwo+ICsvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUg
dG8gc3RhcnQgYSBjb25maWd1cmVkIFVuaWtyYWZ0IGJsb2NrIGRldmljZS4gKi8KPiArdHlwZWRl
ZiBpbnQgKCp1a19ibGtkZXZfc3RhcnRfdCkoc3RydWN0IHVrX2Jsa2RldiAqZGV2KTsKPiArCj4g
K3N0cnVjdCB1a19ibGtkZXZfb3BzIHsKPiArCXVrX2Jsa2Rldl9nZXRfaW5mb190CQkJCWdldF9p
bmZvOwo+ICsJdWtfYmxrZGV2X2NvbmZpZ3VyZV90CQkJCWRldl9jb25maWd1cmU7Cj4gKwl1a19i
bGtkZXZfcXVldWVfZ2V0X2luZm9fdAkJCXF1ZXVlX2dldF9pbmZvOwo+ICsJdWtfYmxrZGV2X3F1
ZXVlX2NvbmZpZ3VyZV90CQkJcXVldWVfc2V0dXA7Cj4gKwl1a19ibGtkZXZfc3RhcnRfdAkJCQlk
ZXZfc3RhcnQ7Cj4gK307Cj4gKwo+ICsvKioKPiArICogQGludGVybmFsCj4gKyAqIEV2ZW50IGhh
bmRsZXIgY29uZmlndXJhdGlvbiAoaW50ZXJuYWwgdG8gbGlidWtibGtkZXYpCj4gKyAqLwo+ICtz
dHJ1Y3QgdWtfYmxrZGV2X2V2ZW50X2hhbmRsZXIgewo+ICsJLyogQ2FsbGJhY2sgKi8KPiArCXVr
X2Jsa2Rldl9xdWV1ZV9ldmVudF90IGNhbGxiYWNrOwo+ICsJLyogUGFyYW1ldGVyIGZvciBjYWxs
YmFjayAqLwo+ICsJdm9pZCAqY29va2llOwo+ICsKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9E
SVNQQVRDSEVSVEhSRUFEUwo+ICsJLyogU2VtYXBob3JlIHRvIHRyaWdnZXIgZXZlbnRzLiAqLwo+
ICsJc3RydWN0IHVrX3NlbWFwaG9yZSBldmVudHM7Cj4gKwkvKiBSZWZlcmVuY2UgdG8gYmxrIGRl
dmljZS4gKi8KPiArCXN0cnVjdCB1a19ibGtkZXYgICAgKmRldjsKPiArCS8qIFF1ZXVlIGlkIHdo
aWNoIGNhdXNlZCBldmVudC4gKi8KPiArCXVpbnQxNl90ICAgICAgICAgICAgcXVldWVfaWQ7Cj4g
KwkvKiBEaXNwYXRjaGVyIHRocmVhZC4gKi8KPiArCXN0cnVjdCB1a190aHJlYWQgICAgKmRpc3Bh
dGNoZXI7Cj4gKwkvKiBSZWZlcmVuY2UgdG8gdGhyZWFkIG5hbWUuICovCj4gKwljaGFyCSpkaXNw
YXRjaGVyX25hbWU7Cj4gKwkvKiBTY2hlZHVsZXIgZm9yIGRpc3BhdGNoZXIuICovCj4gKwlzdHJ1
Y3QgdWtfc2NoZWQgICAgICpkaXNwYXRjaGVyX3M7Cj4gKyNlbmRpZgo+ICt9Owo+ICsKPiArLyoq
Cj4gICAgKiBAaW50ZXJuYWwKPiAgICAqIGxpYnVrYmxrZGV2IGludGVybmFsIGRhdGEgYXNzb2Np
YXRlZCB3aXRoIGVhY2ggYmxvY2sgZGV2aWNlLgo+ICAgICovCj4gQEAgLTgwLDYgKzIwNyw5IEBA
IHN0cnVjdCB1a19ibGtkZXZfZGF0YSB7Cj4gICAJY29uc3QgdWludDE2X3QgaWQ7Cj4gICAJLyog
RGV2aWNlIHN0YXRlICovCj4gICAJZW51bSB1a19ibGtkZXZfc3RhdGUgc3RhdGU7Cj4gKwkvKiBF
dmVudCBoYW5kbGVyIGZvciBlYWNoIHF1ZXVlICovCj4gKwlzdHJ1Y3QgdWtfYmxrZGV2X2V2ZW50
X2hhbmRsZXIKPiArCQlxdWV1ZV9oYW5kbGVyW0NPTkZJR19MSUJVS0JMS0RFVl9NQVhOQlFVRVVF
U107Cj4gICAJLyogTmFtZSBvZiBkZXZpY2UqLwo+ICAgCWNvbnN0IGNoYXIgKmRydl9uYW1lOwo+
ICAgfTsKPiBAQCAtODcsNiArMjE3LDEwIEBAIHN0cnVjdCB1a19ibGtkZXZfZGF0YSB7Cj4gICBz
dHJ1Y3QgdWtfYmxrZGV2IHsKPiAgIAkvKiBQb2ludGVyIHRvIEFQSS1pbnRlcm5hbCBzdGF0ZSBk
YXRhLiAqLwo+ICAgCXN0cnVjdCB1a19ibGtkZXZfZGF0YSAqX2RhdGE7Cj4gKwkvKiBGdW5jdGlv
bnMgY2FsbGJhY2tzIGJ5IGRyaXZlci4gKi8KPiArCWNvbnN0IHN0cnVjdCB1a19ibGtkZXZfb3Bz
ICpkZXZfb3BzOwo+ICsJLyogUG9pbnRlcnMgdG8gcXVldWVzIChBUEktcHJpdmF0ZSkgKi8KPiAr
CXN0cnVjdCB1a19ibGtkZXZfcXVldWUgKl9xdWV1ZVtDT05GSUdfTElCVUtCTEtERVZfTUFYTkJR
VUVVRVNdOwo+ICAgCS8qIEVudHJ5IGZvciBsaXN0IG9mIGJsb2NrIGRldmljZXMgKi8KPiAgIAlV
S19UQUlMUV9FTlRSWShzdHJ1Y3QgdWtfYmxrZGV2KSBfbGlzdDsKPiAgIH07Cj4gCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:17:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:17: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 1hbl8s-0005MB-1c; Fri, 14 Jun 2019 12:17:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl8q-0005M3-QA
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:17:12 +0000
X-Inumbo-ID: 55337ae4-8e9e-11e9-8946-bb03381903af
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55337ae4-8e9e-11e9-8946-bb03381903af;
 Fri, 14 Jun 2019 12:17:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 76BD8F2033;
 Fri, 14 Jun 2019 14:17:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id p1GXIxbgAZxu; Fri, 14 Jun 2019 14:17:09 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 3FA29F2014;
 Fri, 14 Jun 2019 14:17:03 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:16:59
 +0200
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083342.14459-1-nicolescu.roxana1996@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ca08881f-c0f2-3ef5-3fe5-da5e9205d463@neclab.eu>
Date: Fri, 14 Jun 2019 14:16:58 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083342.14459-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 4/6] lib/ukblkdev: Request
 interface
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

T24gMjkuMDUuMTkgMTA6MzMsIFJveGFuYSBOaWNvbGVzY3Ugd3JvdGU6Cj4gVGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIHRoZSBpbnRlcmZhY2UgZm9yIHNlbmRpbmcgYSByZXF1ZXN0IGFuZCByZWNlaXZp
bmcKPiBhIHJlc3BvbnNlLiBUaGlzIGlzIGRlc2lnbmVkIHRvIHN1cHBvcnQgYXN5bmNocm9ub3Vz
IG9wZXJhdGlvbnMuCj4gVGhlIGludGVyZmFjZSBwZXJtaXRzIHNlY3Rvci13aWRlIGFjY2VzcyBv
bmx5Lgo+IFJlY2VpdmluZyB0aGUgcmVzcG9uc2UgZnJvbSBiYWNrZW5kIGNhbiBiZSBkb25lIHdp
dGggaW50ZXJydXB0cyBvcgo+IHdpdGggcG9sbGluZy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSb3hh
bmEgTmljb2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gLS0tCj4gICBs
aWIvdWtibGtkZXYvYmxrZGV2LmMgICAgICAgICAgICAgICAgICAgfCAgMzIgKysrKysKPiAgIGxp
Yi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrICAgICAgICAgICAgICB8ICAxMCArKwo+ICAgbGliL3Vr
YmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggICAgICAgIHwgMjAwICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCj4gICBsaWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5o
ICAgfCAgNjMgKysrKysrKysrKwo+ICAgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2Ry
aXZlci5oIHwgIDI4ICsrKysrCj4gICBsaWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtyZXEuaCAg
ICAgICAgfCAxMTAgKysrKysrKysrKysrKysrKysrCj4gICA2IGZpbGVzIGNoYW5nZWQsIDQ0MyBp
bnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrYmxrZGV2L2luY2x1ZGUv
dWsvYmxrcmVxLmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2Jsa2Rldi5jIGIvbGli
L3VrYmxrZGV2L2Jsa2Rldi5jCj4gaW5kZXggNmI4MmNmOGQuLjNjNTgwNjFiIDEwMDY0NAo+IC0t
LSBhL2xpYi91a2Jsa2Rldi9ibGtkZXYuYwo+ICsrKyBiL2xpYi91a2Jsa2Rldi9ibGtkZXYuYwo+
IEBAIC04NCw2ICs4NCwxMiBAQCBpbnQgdWtfYmxrZGV2X2Rydl9yZWdpc3RlcihzdHJ1Y3QgdWtf
YmxrZGV2ICpkZXYsIHN0cnVjdCB1a19hbGxvYyAqYSwKPiAgIAlVS19BU1NFUlQoZGV2LT5kZXZf
b3BzLT5xdWV1ZV9zZXR1cCk7Cj4gICAJVUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+Z2V0X2luZm8p
Owo+ICAgCVVLX0FTU0VSVChkZXYtPmRldl9vcHMtPnF1ZXVlX2dldF9pbmZvKTsKPiArCVVLX0FT
U0VSVChkZXYtPnN1Ym1pdF9vbmUpOwo+ICsJVUtfQVNTRVJUKGRldi0+ZmluaXNoX3JlcXMpOwo+
ICsJVUtfQVNTRVJUKChkZXYtPmRldl9vcHMtPnF1ZXVlX2ludHJfZW5hYmxlICYmCj4gKwkJCWRl
di0+ZGV2X29wcy0+cXVldWVfaW50cl9kaXNhYmxlKQo+ICsJCQl8fCAoIWRldi0+ZGV2X29wcy0+
cXVldWVfaW50cl9lbmFibGUKPiArCQkJJiYgIWRldi0+ZGV2X29wcy0+cXVldWVfaW50cl9kaXNh
YmxlKSk7Cj4gICAKPiAgIAlkZXYtPl9kYXRhID0gX2FsbG9jX2RhdGEoYSwgYmxrZGV2X2NvdW50
LCAgZHJ2X25hbWUpOwo+ICAgCWlmICghZGV2LT5fZGF0YSkKPiBAQCAtMzcxLDMgKzM3NywyOSBA
QCBpbnQgdWtfYmxrZGV2X3N0YXJ0KHN0cnVjdCB1a19ibGtkZXYgKmRldikKPiAgIAo+ICAgCXJl
dHVybiByYzsKPiAgIH0KPiArCj4gK2ludCB1a19ibGtkZXZfcXVldWVfc3VibWl0X29uZShzdHJ1
Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJdWludDE2X3QgcXVldWVfaWQsCj4gKwkJc3RydWN0IHVr
X2Jsa2Rldl9yZXF1ZXN0ICpyZXEpCj4gK3sKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsJVUtfQVNT
RVJUKGRldi0+X2RhdGEpOwo+ICsJVUtfQVNTRVJUKGRldi0+c3VibWl0X29uZSk7Cj4gKwlVS19B
U1NFUlQocXVldWVfaWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMpOwo+ICsJVUtf
QVNTRVJUKGRldi0+X2RhdGEtPnN0YXRlID09IFVLX0JMS0RFVl9SVU5OSU5HKTsKPiArCVVLX0FT
U0VSVChyZXEgIT0gTlVMTCk7CgpVS19BU1NFUlQoIVBUUklTRVJSKGRldi0+X3F1ZXVlW3F1ZXVl
X2lkXSkpOwoKPiArCj4gKwlyZXR1cm4gZGV2LT5zdWJtaXRfb25lKGRldiwgcXVldWVfaWQsIHJl
cSk7CgpEb24ndCB5b3Ugd2FudCB0byBoYW5kLW92ZXIgdGhlIHF1ZXVlIHJlZmVyZW5jZSBpbnN0
ZWFkPyBUaGlzIHdheSBxdWV1ZSAKaWRzIGFyZSBzb21ldGhpbmcgdGhhdCBjb25jZXJucyBhIGRy
aXZlciBsZXNzLiBXZSBkaWQgYSBzaW1pbGFyIHRoaW5nIAp3aXRoIGxpYnVrbmV0ZGV2LiBPdXIg
aW50ZW50aW9uIHdhcyB0aGF0IHdlIGRpZCBub3Qgd2FudCB0aGF0IGVhY2ggCmRyaXZlciBpbXBs
ZW1lbnRzIGFuIG93biBsb29rdXAgZnVuY3Rpb24sIGp1c3QgdG8gZ2V0IGl0cyBwcml2YXRlIHF1
ZXVlIApzdHJ1Y3QuIEl0IGFsc28ga2luZCBvZiBmb3JjZXMgdGhlIGRyaXZlciBpbXBsZW1lbnRh
dGlvbiB0byBzZXBhcmF0ZSAKcXVldWUgb3BlcmF0aW9ucyBmcm9tIG9wZXJhdGluZyB0aGUgZ2xv
YmFsIGRldmljZSBzdGF0ZS4gVGhpcyBpcyAKc29tZXRoaW5nIHVzZWZ1bCBmb3IgU01QIGFuZCBw
cmVlbXB0ZWQgc2NoZWR1bGluZy4gbGF0ZXIuCgogIHJldHVybiBkZXYtPnN1Ym1pdF9vbmUoZGV2
LCBkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0sIHJlcSk7Cgo+ICt9Cj4gKwo+ICtpbnQgdWtfYmxrZGV2
X3F1ZXVlX2ZpbmlzaF9yZXFzKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQl1aW50MTZfdCBx
dWV1ZV9pZCkKPiArewo+ICsJVUtfQVNTRVJUKGRldik7Cj4gKwlVS19BU1NFUlQoZGV2LT5maW5p
c2hfcmVxcyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4gKwlVS19BU1NFUlQocXVldWVf
aWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMpOwo+ICsJVUtfQVNTRVJUKGRldi0+
X2RhdGEtPnN0YXRlID09IFVLX0JMS0RFVl9SVU5OSU5HKTsKClVLX0FTU0VSVCghUFRSSVNFUlIo
ZGV2LT5fcXVldWVbcXVldWVfaWRdKSk7Cgo+ICsKPiArCXJldHVybiBkZXYtPmZpbmlzaF9yZXFz
KGRldiwgcXVldWVfaWQpOwoKSSB3b3VsZCBoYW5kb3ZlciB0aGUgcmVmZXJlbmNlIGhlcmUsIHRv
bzoKCiAgcmV0dXJuIGRldi0+ZmluaXNoX3JlcXMoZGV2LCBkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0p
OwoKPiArfQo+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51ayBiL2xpYi91
a2Jsa2Rldi9leHBvcnRzeW1zLnVrCj4gaW5kZXggMDc3OTk0ZjAuLjU4ODhiZTY5IDEwMDY0NAo+
IC0tLSBhL2xpYi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrCj4gKysrIGIvbGliL3VrYmxrZGV2L2V4
cG9ydHN5bXMudWsKPiBAQCAtOSwzICs5LDEzIEBAIHVrX2Jsa2Rldl9jb25maWd1cmUKPiAgIHVr
X2Jsa2Rldl9xdWV1ZV9nZXRfaW5mbwo+ICAgdWtfYmxrZGV2X3F1ZXVlX2NvbmZpZ3VyZQo+ICAg
dWtfYmxrZGV2X3N0YXJ0Cj4gK3VrX2Jsa2Rldl9xdWV1ZV9pbnRyX2VuYWJsZQo+ICt1a19ibGtk
ZXZfcXVldWVfaW50cl9kaXNhYmxlCj4gK3VrX2Jsa2Rldl9jYXBhYmlsaXRpZXMKPiArdWtfYmxr
ZGV2X3NzaXplCj4gK3VrX2Jsa2Rldl9tYXhfbmJfc2VjdG9yc19wZXJfcmVxCgptYXliZSBiZXR0
ZXIgdG8gc2hyb3RlbiB0aGUgbmFtZSBvZiB0aGlzIG9uZT86IHVrX2Jsa2Rldl9tYXhfc2VjX3Bl
cl9yZXEoKQoKPiArdWtfYmxrZGV2X21vZGUKCldoYXQgaXMgdGhlICJhY2Nlc3MgbW9kZSI/IFNl
ZSBteSBub3RlIGF0IHRoZSBjYXBhYmlsaXRpZXMgc3RydWN0LgoKPiArdWtfYmxrZGV2X3NlY3Rv
cnMKPiArdWtfYmxrZGV2X2FsaWduCgpjYWxsIGl0IHVrX2Jsa2Rldl9pb2FsaWduLCBzZWUgYWxz
byBteSBjb21tZW50IGxhdGVyIGluIHRoaXMgcGF0Y2guCgo+ICt1a19ibGtkZXZfcXVldWVfc3Vi
bWl0X29uZQo+ICt1a19ibGtkZXZfcXVldWVfZmluaXNoX3JlcXMKPiBkaWZmIC0tZ2l0IGEvbGli
L3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggYi9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9i
bGtkZXYuaAo+IGluZGV4IGQzMmY2MmZjLi5kYjZkM2I4MCAxMDA2NDQKPiAtLS0gYS9saWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtkZXYuaAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldi5oCj4gQEAgLTIyMSw2ICsyMjEsMjA2IEBAIGludCB1a19ibGtkZXZfcXVldWVfY29u
ZmlndXJlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiAgICAqLwo+ICAgaW50IHVrX2Jsa2Rldl9z
dGFydChzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYpOwo+ICAgCj4gKy8qKgo+ICsgKiBHZXQgdGhlIGNh
cGFiaWxpdGllcyBpbmZvIHdoaWNoIHN0b3JlcyBpbmZvIGFib3V0IHRoZSBkZXZpY2UsCj4gKyAq
IGxpa2UgbmJfb2Zfc2VjdG9ycywgc2VjdG9yX3NpemUgZXRjCgpBZGQgYSBub3RlIHRoYXQgdGhl
IGRldmljZSBoYXMgdG8gYmUgInJ1bm5pbmciIGJlZm9yZSB5b3UgY2FuIGdldCB0aGlzIAppbmZv
cm1hdGlvbi4KCj4gKyAqCj4gKyAqIEBwYXJhbSBkZXYKPiArICoJVGhlIFVuaWtyYWZ0IEJsb2Nr
IERldmljZS4KPiArICoKPiArICogQHJldHVybgo+ICsgKglBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1
cmUgb2YgdHlwZSAqdWtfYmxrZGV2X2NhcGFiaWxpdGllcyouCj4gKyAqKi8KPiArc3RhdGljIGlu
bGluZSBjb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X2NhcCAqdWtfYmxrZGV2X2NhcGFiaWxpdGllcygK
PiArCQlzdHJ1Y3QgdWtfYmxrZGV2ICpibGtkZXYpCj4gK3sKPiArCVVLX0FTU0VSVChibGtkZXYp
Owo+ICsJVUtfQVNTRVJUKGJsa2Rldi0+X2RhdGEtPnN0YXRlID49IFVLX0JMS0RFVl9SVU5OSU5H
KTsKPiArCj4gKwlyZXR1cm4gJmJsa2Rldi0+Y2FwYWJpbGl0aWVzOwo+ICt9Cj4gKwo+ICsjZGVm
aW5lIHVrX2Jsa2Rldl9zc2l6ZShibGtkZXYpIFwKPiArCSh1a19ibGtkZXZfY2FwYWJpbGl0aWVz
KGJsa2RldiktPnNzaXplKQo+ICsKPiArI2RlZmluZSB1a19ibGtkZXZfbWF4X25iX3NlY3RvcnNf
cGVyX3JlcShibGRldikgXAo+ICsJKHVrX2Jsa2Rldl9jYXBhYmlsaXRpZXMoYmxrZGV2KS0+bWF4
X3NlY3RvcnNfcGVyX3JlcSkKPiArCj4gKyNkZWZpbmUgdWtfYmxrZGV2X21vZGUoYmxrZGV2KSBc
Cj4gKwkodWtfYmxrZGV2X2NhcGFiaWxpdGllcyhibGtkZXYpLT5tb2RlKQoKT25lIHRoaW5nOiBX
aGF0IGlzIHRoaXMgbW9kZT8gU2VlIG15IGNvbW1lbnRzIHdoZW4gd2Ugc3BlYWsgYWJvdXQgdGhl
IApjYXBhYmlsaXRpZXMgc3RydWN0IGluIHRoaXMgZmlsZS4KCj4gKwo+ICsjZGVmaW5lIHVrX2Js
a2Rldl9zZWN0b3JzKGJsa2RldikgXAo+ICsJKHVrX2Jsa2Rldl9jYXBhYmlsaXRpZXMoYmxrZGV2
KS0+c2VjdG9ycykKPiArCj4gKyNkZWZpbmUgdWtfYmxrZGV2X2FsaWduKGJsa2RldikgXAo+ICsJ
KHVrX2Jsa2Rldl9jYXBhYmlsaXRpZXMoYmxrZGV2KS0+YWxpZ24pCgpDYWxsIHRoaXMgb25lIGFs
c28gaW9hbGlnbi4KCj4gKy8qKgo+ICsgKiBFbmFibGUgaW50ZXJydXB0cyBmb3IgYSBxdWV1ZS4K
PiArICoKPiArICogQHBhcmFtIGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlIGlu
IHJ1bm5pbmcgc3RhdGUuCj4gKyAqIEBwYXJhbSBxdWV1ZV9pZAo+ICsgKglUaGUgaW5kZXggb2Yg
dGhlIHF1ZXVlIHRvIHNldCB1cC4KPiArICoJVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdl
IFswLCBuYl9xdWV1ZSAtIDFdIHByZXZpb3VzbHkgc3VwcGxpZWQKPiArICoJdG8gdWtfYmxrZGV2
X2NvbmZpZ3VyZSgpLgo+ICsgKiBAcmV0dXJuCj4gKyAqCS0gKDApOiBTdWNjZXNzLCBpbnRlcnJ1
cHRzIGVuYWJsZWQuCj4gKyAqCS0gKC1FTk9UU1VQKTogRHJpdmVyIGRvZXMgbm90IHN1cHBvcnQg
aW50ZXJydXB0cy4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IHVrX2Jsa2Rldl9xdWV1ZV9p
bnRyX2VuYWJsZShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJCQkJICAgIHVpbnQxNl90IHF1
ZXVlX2lkKQo+ICt7Cj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPmRldl9v
cHMpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+ICsJVUtfQVNTRVJUKHF1ZXVlX2lkIDwg
Q09ORklHX0xJQlVLQkxLREVWX01BWE5CUVVFVUVTKTsKPiArCVVLX0FTU0VSVCghUFRSSVNFUlIo
ZGV2LT5fcXVldWVbcXVldWVfaWRdKSk7Cj4gKwo+ICsJaWYgKHVubGlrZWx5KCFkZXYtPmRldl9v
cHMtPnF1ZXVlX2ludHJfZW5hYmxlKSkKPiArCQlyZXR1cm4gLUVOT1RTVVA7Cj4gKwo+ICsJcmV0
dXJuIGRldi0+ZGV2X29wcy0+cXVldWVfaW50cl9lbmFibGUoZGV2LCBxdWV1ZV9pZCk7CgpTYW1l
IGNvbW1lbnQgYXMgd2l0aCB1a19ibGtkZXZfcXVldWVfc3VibWl0X29uZSgpOgoKICByZXR1cm4g
ZGV2LT5kZXZfb3BzLT5xdWV1ZV9pbnRyX2VuYWJsZShkZXYsIGRldi0+X3F1ZXVlW3F1ZXVlX2lk
XSk7Cgo+ICt9Cj4gKwo+ICsvKioKPiArICogRGlzYWJsZSBpbnRlcnJ1cHRzIGZvciBhIHF1ZXVl
Lgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFmdCBCbG9jayBEZXZpY2Ug
aW4gcnVubmluZyBzdGF0ZS4KPiArICogQHBhcmFtIHF1ZXVlX2lkCj4gKyAqCVRoZSBpbmRleCBv
ZiB0aGUgcXVldWUgdG8gc2V0IHVwLgo+ICsgKglUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFu
Z2UgWzAsIG5iX3F1ZXVlIC0gMV0gcHJldmlvdXNseSBzdXBwbGllZAo+ICsgKgl0byB1a19ibGtk
ZXZfY29uZmlndXJlKCkuCj4gKyAqIEByZXR1cm4KPiArICoJLSAoMCk6IFN1Y2Nlc3MsIGludGVy
cnVwdHMgZGlzYWJsZWQuCj4gKyAqCS0gKC1FTk9UU1VQKTogRHJpdmVyIGRvZXMgbm90IHN1cHBv
cnQgaW50ZXJydXB0cy4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IHVrX2Jsa2Rldl9xdWV1
ZV9pbnRyX2Rpc2FibGUoc3RydWN0IHVrX2Jsa2RldiAqZGV2LAo+ICsJCQkJCSAgICAgdWludDE2
X3QgcXVldWVfaWQpCj4gK3sKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsJVUtfQVNTRVJUKGRldi0+
ZGV2X29wcyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4gKwlVS19BU1NFUlQocXVldWVf
aWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMpOwo+ICsJVUtfQVNTRVJUKCFQVFJJ
U0VSUihkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0pKTsKPiArCj4gKwlpZiAodW5saWtlbHkoIWRldi0+
ZGV2X29wcy0+cXVldWVfaW50cl9kaXNhYmxlKSkKPiArCQlyZXR1cm4gLUVOT1RTVVA7Cj4gKwo+
ICsJcmV0dXJuIGRldi0+ZGV2X29wcy0+cXVldWVfaW50cl9kaXNhYmxlKGRldiwgcXVldWVfaWQp
OwoKU2FtZSBjb21tZW50IGhlcmUgcmVnYXJkaW5nIHRoZSBxdWV1ZSBpZCAoc2VlIGludHJfZW5h
YmxlKS4KCj4gK30KPiArCj4gKy8qKgo+ICsgKiBNYWtlIGFuIGFpbyByZXF1ZXN0IHRvIHRoZSBk
ZXZpY2UKPiArICoKPiArICogQHBhcmFtIGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sgRGV2
aWNlCj4gKyAqIEBwYXJhbSBxdWV1ZV9pZAo+ICsgKglUaGUgaW5kZXggb2YgdGhlIHJlY2VpdmUg
cXVldWUgdG8gcmVjZWl2ZSBmcm9tLgo+ICsgKglUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFu
Z2UgWzAsIG5iX3F1ZXVlIC0gMV0gcHJldmlvdXNseSBzdXBwbGllZAo+ICsgKgl0byB1a19ibGtk
ZXZfY29uZmlndXJlKCkuCj4gKyAqIEBwYXJhbSByZXEKPiArICoJUmVxdWVzdCBzdHJ1Y3R1cmUK
PiArICogQHJldHVybgo+ICsgKgktICg+PTApOiBQb3NpdGl2ZSB2YWx1ZSB3aXRoIHN0YXR1cyBm
bGFncwo+ICsgKgkJLSBVS19CTEtERVZfU1RBVFVTX1NVQ0NFU1M6IGByZXFgIHdhcyBzdWNjZXNz
ZnVsbHkgcHV0IHRvIHRoZQo+ICsgKgkJcXVldWUuCj4gKyAqCQktIFVLX0JMS0RFVl9TVEFUVVNf
TU9SRTogSW5kaWNhdGVzIHRoZXJlIGlzIHN0aWxsIGF0IGxlYXN0Cj4gKyAqCQlvbmUgZGVzY3Jp
cHRvciBhdmFpbGFibGUgZm9yIGEgc3Vic2VxdWVudCB0cmFuc21pc3Npb24uCj4gKyAqCQlJZiB0
aGUgZmxhZyBpcyB1bnNldCBtZWFucyB0aGF0IHRoZSBxdWV1ZSBpcyBmdWxsLgo+ICsgKgkJVGhp
cyBtYXkgb25seSBiZSBzZXQgdG9nZXRoZXIgd2l0aCBVS19CTEtERVZfU1RBVFVTX1NVQ0NFU1Mu
Cj4gKyAqCS0gKDwwKTogTmVnYXRpdmUgdmFsdWUgd2l0aCBlcnJvciBjb2RlIGZyb20gZHJpdmVy
LCBubyByZXF1ZXN0IHdhcyBzZW50Lgo+ICsgKi8KPiAraW50IHVrX2Jsa2Rldl9xdWV1ZV9zdWJt
aXRfb25lKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQl1aW50MTZfdCBxdWV1ZV9pZCwKPiAr
CQlzdHJ1Y3QgdWtfYmxrZGV2X3JlcXVlc3QgKnJlcSk7Cj4gKwo+ICsvKioKPiArICogVGVzdHMg
Zm9yIHN0YXR1cyBmbGFncyByZXR1cm5lZCBieSBgdWtfYmxrZGV2X3N1Ym1pdF9vbmVgCj4gKyAq
IFdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybmVkIGFuIGVycm9yIGNvZGUgb3Igb25lIG9mIHRoZSBz
ZWxlY3RlZCBmbGFncyBpcwo+ICsgKiB1bnNldCwgdGhpcyBtYWNybyByZXR1cm5zIEZhbHNlLgo+
ICsgKgo+ICsgKiBAcGFyYW0gc3RhdHVzCj4gKyAqCVJldHVybiBzdGF0dXMgKGludCkKPiArICog
QHBhcmFtIGZsYWcKPiArICoJRmxhZyhzKSB0byB0ZXN0Cj4gKyAqIEByZXR1cm4KPiArICoJLSAo
VHJ1ZSk6ICBBbGwgZmxhZ3MgYXJlIHNldCBhbmQgc3RhdHVzIGlzIG5vdCBuZWdhdGl2ZQo+ICsg
KgktIChGYWxzZSk6IEF0IGxlYXN0IG9uZSBmbGFnIGlzIG5vdCBzZXQgb3Igc3RhdHVzIGlzIG5l
Z2F0aXZlCj4gKyAqLwo+ICsjZGVmaW5lIHVrX2Jsa2Rldl9zdGF0dXNfdGVzdF9zZXQoc3RhdHVz
LCBmbGFnKQkJCVwKPiArCSgoKGludCkoc3RhdHVzKSAmICgoaW50KShmbGFnKSB8IElOVF9NSU4p
KSA9PSAoZmxhZykpCj4gKwoKSU5UX01JTiByZXF1aXJlcyB0aGUgaGVhZGVyIDxsaW1pdHMuaD4g
dG8gYmUgaW5jbHVkZWQuIENhbiB5b3UgaW5jbHVkZSAKaXQgaW4gdGhpcyBoZWFkZXIgZmlsZT8K
Cj4gKy8qKgo+ICsgKiBUZXN0cyBmb3IgdW5zZXQgc3RhdHVzIGZsYWdzIHJldHVybmVkIGJ5IGB1
a19ibGtkZXZfc3VibWl0X29uZWAKPiArICogV2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYW4g
ZXJyb3IgY29kZSBvciBvbmUgb2YgdGhlCj4gKyAqIHNlbGVjdGVkIGZsYWdzIGlzIHNldCwgdGhp
cyBtYWNybyByZXR1cm5zIEZhbHNlLgo+ICsgKgo+ICsgKiBAcGFyYW0gc3RhdHVzCj4gKyAqCVJl
dHVybiBzdGF0dXMgKGludCkKPiArICogQHBhcmFtIGZsYWcKPiArICoJRmxhZyhzKSB0byB0ZXN0
Cj4gKyAqIEByZXR1cm4KPiArICoJLSAoVHJ1ZSk6ICBGbGFncyBhcmUgbm90IHNldCBhbmQgc3Rh
dHVzIGlzIG5vdCBuZWdhdGl2ZQo+ICsgKgktIChGYWxzZSk6IEF0IGxlYXN0IG9uZSBmbGFnIGlz
IHNldCBvciBzdGF0dXMgaXMgbmVnYXRpdmUKPiArICovCj4gKyNkZWZpbmUgdWtfYmxrZGV2X3N0
YXR1c190ZXN0X3Vuc2V0KHN0YXR1cywgZmxhZykJCQlcCj4gKwkoKChpbnQpKHN0YXR1cykgJiAo
KGludCkoZmxhZykgfCBJTlRfTUlOKSkgPT0gKDB4MCkpCj4gKwo+ICsvKioKPiArICogVGVzdHMg
aWYgdGhlIHJldHVybiBzdGF0dXMgb2YgYHVrX2Jsa2Rldl9zdWJtaXRfb25lYAo+ICsgKiBpbmRp
Y2F0ZXMgYSBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KPiArICoKPiArICogQHBhcmFtIHN0YXR1cwo+
ICsgKglSZXR1cm4gc3RhdHVzIChpbnQpCj4gKyAqIEByZXR1cm4KPiArICoJLSAoVHJ1ZSk6ICBP
cGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwKPiArICoJLSAoRmFsc2UpOiBPcGVyYXRpb24gd2FzIHVu
c3VjY2Vzc2Z1bCBvciBlcnJvciBoYXBwZW5lZAo+ICsgKi8KPiArI2RlZmluZSB1a19ibGtkZXZf
c3RhdHVzX3N1Y2Nlc3NmdWwoc3RhdHVzKQkJCVwKPiArCXVrX2Jsa2Rldl9zdGF0dXNfdGVzdF9z
ZXQoKHN0YXR1cyksIFVLX0JMS0RFVl9TVEFUVVNfU1VDQ0VTUykKPiArCj4gKy8qKgo+ICsgKiBU
ZXN0cyBpZiB0aGUgcmV0dXJuIHN0YXR1cyBvZiBgdWtfYmxrZGV2X3N1Ym1pdF9vbmVgCj4gKyAq
IGluZGljYXRlcyB0aGF0IHRoZSBvcGVyYXRpb24gc2hvdWxkIGJlIHJldHJpZWQvCj4gKyAqCj4g
KyAqIEBwYXJhbSBzdGF0dXMKPiArICoJUmV0dXJuIHN0YXR1cyAoaW50KQo+ICsgKiBAcmV0dXJu
Cj4gKyAqCS0gKFRydWUpOiAgT3BlcmF0aW9uIHNob3VsZCBiZSByZXRyaWVkCj4gKyAqCS0gKEZh
bHNlKTogT3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIG9yIGVycm9yIGhhcHBlbmVkCj4gKyAqLwo+
ICsjZGVmaW5lIHVrX2Jsa2Rldl9zdGF0dXNfbm90cmVhZHkoc3RhdHVzKQkJCQlcCj4gKwl1a19i
bGtkZXZfc3RhdHVzX3Rlc3RfdW5zZXQoKHN0YXR1cyksIFVLX0JMS0RFVl9TVEFUVVNfU1VDQ0VT
UykKPiArCj4gKy8qKgo+ICsgKiBUZXN0cyBpZiB0aGUgcmV0dXJuIHN0YXR1cyBvZiBgdWtfYmxr
ZGV2X3N1Ym1pdF9vbmVgCj4gKyAqIGluZGljYXRlcyB0aGF0IHRoZSBsYXN0IG9wZXJhdGlvbiBj
YW4gYmUgc3VjY2Vzc2Z1bGx5IHJlcGVhdGVkIGFnYWluLgo+ICsgKgo+ICsgKiBAcGFyYW0gc3Rh
dHVzCj4gKyAqCVJldHVybiBzdGF0dXMgKGludCkKPiArICogQHJldHVybgo+ICsgKgktIChUcnVl
KTogIEZsYWcgVUtfQkxLREVWX1NUQVRVU19NT1JFIGlzIHNldAo+ICsgKgktIChGYWxzZSk6IE9w
ZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBvciBlcnJvciBoYXBwZW5lZAo+ICsgKi8KPiArI2RlZmlu
ZSB1a19ibGtkZXZfc3RhdHVzX21vcmUoc3RhdHVzKQkJCQkJXAo+ICsJdWtfYmxrZGV2X3N0YXR1
c190ZXN0X3NldCgoc3RhdHVzKSwgKFVLX0JMS0RFVl9TVEFUVVNfU1VDQ0VTUwlcCj4gKwkJCQkJ
ICAgICB8IFVLX0JMS0RFVl9TVEFUVVNfTU9SRSkpCj4gKwo+ICsvKioKPiArICogR2V0IHJlc3Bv
bnNlcyBmcm9tIHRoZSBxdWV1ZQo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlr
cmFmdCBCbG9jayBEZXZpY2UKPiArICogQHBhcmFtIHF1ZXVlX2lkCj4gKyAqCXF1ZXVlIGlkCj4g
KyAqIEByZXR1cm4KPiArICoJLSAwOiBTdWNjZXNzCj4gKyAqCS0gKDwwKTogb24gZXJyb3IgcmV0
dXJuZWQgYnkgZHJpdmVyCj4gKyAqLwo+ICtpbnQgdWtfYmxrZGV2X3F1ZXVlX2ZpbmlzaF9yZXFz
KHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQl1aW50MTZfdCBxdWV1ZV9pZCk7Cj4gKwo+ICAg
I2lmZGVmIF9fY3BsdXNwbHVzCj4gICB9Cj4gICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL3Vr
YmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldl9jb3JlLmgKPiBpbmRleCAzNjRjMDVkNy4uMzA5YjdhN2YgMTAwNjQ0Cj4gLS0tIGEv
bGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaAo+ICsrKyBiL2xpYi91a2Jsa2Rl
di9pbmNsdWRlL3VrL2Jsa2Rldl9jb3JlLmgKPiBAQCAtMzgsNiArMzgsNyBAQAo+ICAgCj4gICAj
aW5jbHVkZSA8dWsvbGlzdC5oPgo+ICAgI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICsjaW5jbHVk
ZSA8dWsvYmxrcmVxLmg+Cj4gICAjaWYgZGVmaW5lZChDT05GSUdfTElCVUtCTEtERVZfRElTUEFU
Q0hFUlRIUkVBRFMpCj4gICAjaW5jbHVkZSA8dWsvc2NoZWQuaD4KPiAgICNpbmNsdWRlIDx1ay9z
ZW1hcGhvcmUuaD4KPiBAQCAtMTE5LDYgKzEyMCw5IEBAIHN0cnVjdCB1a19ibGtkZXZfcXVldWU7
Cj4gICAgKiAgIFRoZSBxdWV1ZSBvbiB0aGUgVW5pa3JhZnQgYmxvY2sgZGV2aWNlIG9uIHdoaWNo
IHRoZSBldmVudCBoYXBwZW5lZC4KPiAgICAqIEBwYXJhbSBhcmdwCj4gICAgKiAgIEV4dHJhIGFy
Z3VtZW50IHRoYXQgY2FuIGJlIGRlZmluZWQgb24gY2FsbGJhY2sgcmVnaXN0cmF0aW9uLgo+ICsg
Kgo+ICsgKiBOb3RlOiBUaGlzIHNob3VsZCBjYWxsIGRldi0+ZmluaXNoX3JlcXMgZnVuY3Rpb24g
aW4gb3JkZXIgdG8gcHJvY2VzcyB0aGUKPiArICogICByZWNlaXZlZCByZXNwb25zZXMuCj4gICAg
Ki8KPiAgIHR5cGVkZWYgdm9pZCAoKnVrX2Jsa2Rldl9xdWV1ZV9ldmVudF90KShzdHJ1Y3QgdWtf
YmxrZGV2ICpkZXYsCj4gICAJCQkJCXVpbnQxNl90IHF1ZXVlX2lkLCB2b2lkICphcmdwKTsKPiBA
QCAtMTYxLDE1ICsxNjUsNjggQEAgdHlwZWRlZiBzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICogKCp1
a19ibGtkZXZfcXVldWVfY29uZmlndXJlX3QpKAo+ICAgCQl1aW50MTZfdCBuYl9kZXNjLAo+ICAg
CQljb25zdCBzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlX2NvbmYgKnF1ZXVlX2NvbmYpOwo+ICAgCj4g
Ky8qKgo+ICsgKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBlbmFibGUgaW50ZXJydXB0cwo+ICsg
KiBmb3IgYSBxdWV1ZSBvbiBVbmlrcmFmdCBibG9jayBkZXZpY2UuCj4gKyAqKi8KPiArdHlwZWRl
ZiBpbnQgKCp1a19ibGtkZXZfcXVldWVfaW50cl9lbmFibGVfdCkoc3RydWN0IHVrX2Jsa2RldiAq
ZGV2LAo+ICsJCQkJCSAgICB1aW50MTZfdCBxdWV1ZV9pZCk7ID4gKwoKSSB3b3VsZCB1c2UgYHN0
cnVjdCB1a19ibGtkZXZfcXVldWUgKnF1ZXVlYCBpbnN0ZWFkCm9mIGB1aW50MTZfdCBxdWV1ZV9p
ZGAgKHNlZSBteSBjb21tZW50IGFoZWFkKS4gUGxlYXNlIGFsc28gZ3JvdXAgdGhpcyAKcHJvdG90
eXBlIGRlZmluaXRpb24gdG9nZXRoZXIgd2l0aCB0aGUgaW50cl9kaXNhYmxlIGRlZmludGlvbi4K
Cj4gICAvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8gc3RhcnQgYSBjb25maWd1cmVkIFVuaWty
YWZ0IGJsb2NrIGRldmljZS4gKi8KPiAgIHR5cGVkZWYgaW50ICgqdWtfYmxrZGV2X3N0YXJ0X3Qp
KHN0cnVjdCB1a19ibGtkZXYgKmRldik7Cj4gICAKPiArLyoqCj4gKyAqIERyaXZlciBjYWxsYmFj
ayB0eXBlIHRvIGRpc2FibGUgaW50ZXJydXB0cwo+ICsgKglmb3IgYSBxdWV1ZSBvbiBVbmlrcmFm
dCBibG9jayBkZXZpY2UuCj4gKyAqKi8KPiArdHlwZWRlZiBpbnQgKCp1a19ibGtkZXZfcXVldWVf
aW50cl9kaXNhYmxlX3QpKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiArCQkJCQkgICAgdWludDE2
X3QgcXVldWVfaWQpOwoKU2FtZSBjb21tZW50OiBgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqcXVl
dWVgCgo+ICsvKioKPiArICogU3RhdHVzIGNvZGUgZmxhZ3MgcmV0dXJuZWQgcXVldWVfc3VibWl0
X29uZSBmdW5jdGlvbgo+ICsgKi8KPiArLyoqIFN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiAqLwo+ICsj
ZGVmaW5lIFVLX0JMS0RFVl9TVEFUVVNfU1VDQ0VTUyAgKDB4MSkKPiArLyoqCj4gKyAqIE1vcmUg
cm9vbSBhdmFpbGFibGUgZm9yIG9wZXJhdGlvbiAoZS5nLiwgc3RpbGwgc3BhY2Ugb24gcXVldWUg
Zm9yIHNlbmRpbmcKPiArICogYSByZXF1ZXN0Lgo+ICsgKi8KPiArI2RlZmluZSBVS19CTEtERVZf
U1RBVFVTX01PUkUgICAgICgweDIpCj4gKwo+ICsvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8g
c3VibWl0IGEgcmVxdWVzdCB0byBVbmlrcmFmdCBibG9jayBkZXZpY2UuICovCj4gK3R5cGVkZWYg
aW50ICgqdWtfYmxrZGV2X3F1ZXVlX3N1Ym1pdF9vbmVfdCkoc3RydWN0IHVrX2Jsa2RldiAqZGV2
LAo+ICsJCXVpbnQxNl90IHF1ZXVlX2lkLAoKU2FtZSBjb21tZW50OiBgc3RydWN0IHVrX2Jsa2Rl
dl9xdWV1ZSAqcXVldWVgCgo+ICsJCXN0cnVjdCB1a19ibGtkZXZfcmVxdWVzdCAqcmVxKTsKPiAr
LyoqCj4gKyAqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIGZpbmlzaAo+ICsgKiBhIGJ1bmNoIG9m
IHJlcXVlc3RzIHRvIFVuaWtyYWZ0IGJsb2NrIGRldmljZS4KPiArICoqLwo+ICt0eXBlZGVmIGlu
dCAoKnVrX2Jsa2Rldl9xdWV1ZV9maW5pc2hfcmVxc190KShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYs
Cj4gKwkJdWludDE2X3QgcXVldWVfaWQpOwoKU2FtZSBjb21tZW50OiBgc3RydWN0IHVrX2Jsa2Rl
dl9xdWV1ZSAqcXVldWVgCgo+ICsKPiAgIHN0cnVjdCB1a19ibGtkZXZfb3BzIHsKPiAgIAl1a19i
bGtkZXZfZ2V0X2luZm9fdAkJCQlnZXRfaW5mbzsKPiAgIAl1a19ibGtkZXZfY29uZmlndXJlX3QJ
CQkJZGV2X2NvbmZpZ3VyZTsKPiAgIAl1a19ibGtkZXZfcXVldWVfZ2V0X2luZm9fdAkJCXF1ZXVl
X2dldF9pbmZvOwo+ICAgCXVrX2Jsa2Rldl9xdWV1ZV9jb25maWd1cmVfdAkJCXF1ZXVlX3NldHVw
Owo+ICsJdWtfYmxrZGV2X3F1ZXVlX2ludHJfZW5hYmxlX3QJCQlxdWV1ZV9pbnRyX2VuYWJsZTsK
PiAgIAl1a19ibGtkZXZfc3RhcnRfdAkJCQlkZXZfc3RhcnQ7Cj4gKwl1a19ibGtkZXZfcXVldWVf
aW50cl9kaXNhYmxlX3QJCQlxdWV1ZV9pbnRyX2Rpc2FibGU7Cj4gK307Cj4gKwo+ICsvKioKPiAr
ICogRGV2aWNlIGluZm8KPiArICovCj4gK3N0cnVjdCB1a19ibGtkZXZfY2FwIHsKPiArCS8qIE51
bWJlciBvZiBzZWN0b3JzICovCj4gKwlfX3NlY3RvciBzZWN0b3JzOwo+ICsJLyogU2VjdG9yIHNp
emUgKi8KPiArCV9fc2VjdG9yIHNzaXplOwoKSXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBkZWZp
bmUgdGhlIHNpemUgb2YgYSBzaW5nbGUgc2VjdG9yIHdpdGggYSB1bml0IAoiaW4gbnVtYmVyIG9m
IHNlY3RvcnMiIChgX19zZWN0b3JgKS4gWW91IGNhbiB0YWtlIGBzaXplX3RgIG9yIGB1aW50MTZf
dGAgCmluc3RlYWQuCgo+ICsJLyogQWNjZXNzIG1vZGUgKi8KPiArCWludCBtb2RlOwoKV2hhdCBp
cyB0aGUgYWNjZXNzIG1vZGUgKGlzIGl0IGZvciBpbnN0YW5jZSByZWFkLW9ubHkgZXRjLik/IElz
IHRoZSAKZHJpdmVyIGZpbGxpbmcgdGhpcyBvdXQgYW5kIGl0IGlzIHJlYWQtb25seSBmb3IgdGhl
IEFQSSB1c2VyPwpJIGFtIGFza2luZyBiZWNhdXNlIEkgY291bGQgbm90IGZpbmQgYW55IGRlZmlu
dGlvbnMgKGUuLmcsIGVudW0gb3IgCmNvbnN0YW50cykgdGhhdCBkZXNjcmliZSB3aGF0IHRoZSBh
Y2Nlc3MgbW9kZSBtZWFucy4KCj4gKwkvKiBNYXggbmIgb2Ygc3VwcG9ydGVkIHNlY3RvcnMgZm9y
IGFuIG9wICovCj4gKwlfX3NlY3RvciBtYXhfc2VjdG9yc19wZXJfcmVxOwo+ICsJLyogQWxpZ25t
ZW50IGZvciBkYXRhIHVzZWQgaW4gZnV0dXJlIHJlYWQvd3JpdGUgcmVxdWVzdHMgKi8KPiArCXVp
bnQxNl90IGFsaWduOwoKCkkgd291bGQgY2FsbCB0aGlzIGZpZWxkIGBpb2FsaWduYCB0byBwb2lu
dCBvdXQgdGhhdCB0aGlzIGFsaWdubWVudCBoYXMgCnRvIGRvIHdpdGggYWxpZ25tZW50IG9mIEkv
TyBvcGVyYXRpb25zLgpZb3UgY2FuIG9wdGlvbmFsbHkgY29tbWVudCB0aGF0IHRoaXMgYWxpZ25t
ZW50IG1lYW5zIGluIG51bWJlciBvZiBieXRlcy4KSWYgYGlvYWxpZ25gIGlzIGAxYCwgbm8gYWxp
Z25tZW50IGlzIHNldCwgcmlnaHQ/Cgo+ICAgfTsKPiAgIAo+ICAgLyoqCj4gQEAgLTIxNSw4ICsy
NzIsMTQgQEAgc3RydWN0IHVrX2Jsa2Rldl9kYXRhIHsKPiAgIH07Cj4gICAKPiAgIHN0cnVjdCB1
a19ibGtkZXYgewo+ICsJLyogUG9pbnRlciB0byBzdWJtaXQgcmVxdWVzdCBmdW5jdGlvbiAqLwo+
ICsJdWtfYmxrZGV2X3F1ZXVlX3N1Ym1pdF9vbmVfdCBzdWJtaXRfb25lOwo+ICsJLyogUG9pbnRl
ciB0byBoYW5kbGVfcmVzcG9uc2VzIGZ1bmN0aW9uICovCj4gKwl1a19ibGtkZXZfcXVldWVfZmlu
aXNoX3JlcXNfdCBmaW5pc2hfcmVxczsKPiAgIAkvKiBQb2ludGVyIHRvIEFQSS1pbnRlcm5hbCBz
dGF0ZSBkYXRhLiAqLwo+ICAgCXN0cnVjdCB1a19ibGtkZXZfZGF0YSAqX2RhdGE7Cj4gKwkvKiBD
YXBhYmlsaXRpZXMuICovCj4gKwlzdHJ1Y3QgdWtfYmxrZGV2X2NhcCBjYXBhYmlsaXRpZXM7Cj4g
ICAJLyogRnVuY3Rpb25zIGNhbGxiYWNrcyBieSBkcml2ZXIuICovCj4gICAJY29uc3Qgc3RydWN0
IHVrX2Jsa2Rldl9vcHMgKmRldl9vcHM7Cj4gICAJLyogUG9pbnRlcnMgdG8gcXVldWVzIChBUEkt
cHJpdmF0ZSkgKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2
X2RyaXZlci5oIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2RyaXZlci5oCj4gaW5k
ZXggYjcyZjUyYWIuLjM3YjVhM2U4IDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jsa2Rldi9pbmNsdWRl
L3VrL2Jsa2Rldl9kcml2ZXIuaAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rl
dl9kcml2ZXIuaAo+IEBAIC03MCw2ICs3MCwzNCBAQCBpbnQgdWtfYmxrZGV2X2Rydl9yZWdpc3Rl
cihzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gICAJCXN0cnVjdCB1a19hbGxvYyAqYSwKPiAgIAkJ
Y29uc3QgY2hhciAqZHJ2X25hbWUpOwo+ICAgCj4gKy8qKgo+ICsgKiBGb3J3YXJkcyBhIHF1ZXVl
IGV2ZW50IHRvIHRoZSBBUEkgdXNlcgo+ICsgKiBDYW4gKGFuZCBzaG91bGQpIGJlIGNhbGxlZCBm
cm9tIGRldmljZSBpbnRlcnJ1cHQgY29udGV4dAo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAq
CVVuaWtyYWZ0IGJsb2NrIGRldmljZSB0byB3aGljaCB0aGUgZXZlbnQgcmVsYXRlcyB0bwo+ICsg
KiBAcGFyYW0gcXVldWVfaWQKPiArICoJcmVjZWl2ZSBxdWV1ZSBJRCB0byB3aGljaCB0aGUgZXZl
bnQgcmVsYXRlcyB0bwo+ICsgKi8KPiArc3RhdGljIGlubGluZSB2b2lkIHVrX2Jsa2Rldl9kcnZf
cXVldWVfZXZlbnQoc3RydWN0IHVrX2Jsa2RldiAqZGV2LAo+ICsJCXVpbnQxNl90IHF1ZXVlX2lk
KQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfYmxrZGV2X2V2ZW50X2hhbmRsZXIgKnF1ZXVlX2hhbmRsZXI7
Cj4gKwo+ICsJVUtfQVNTRVJUKGRldik7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4gKwlV
S19BU1NFUlQocXVldWVfaWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVVRVMpOwo+ICsK
PiArCXF1ZXVlX2hhbmRsZXIgPSAmZGV2LT5fZGF0YS0+cXVldWVfaGFuZGxlcltxdWV1ZV9pZF07
Cj4gKwo+ICsjaWYgQ09ORklHX0xJQlVLQkxLREVWX0RJU1BBVENIRVJUSFJFQURTCj4gKwl1a19z
ZW1hcGhvcmVfdXAoJnF1ZXVlX2hhbmRsZXItPmV2ZW50cyk7Cj4gKyNlbHNlCj4gKwlpZiAocXVl
dWVfaGFuZGxlci0+Y2FsbGJhY2spCj4gKwkJcXVldWVfaGFuZGxlci0+Y2FsbGJhY2soZGV2LCBx
dWV1ZV9pZCwgcXVldWVfaGFuZGxlci0+Y29va2llKTsKPiArI2VuZGlmCj4gK30KPiArCj4gICAj
aWZkZWYgX19jcGx1c3BsdXMKPiAgIH0KPiAgICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtyZXEuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa3Jl
cS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uODVjMjU1ODcKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrcmVxLmgKPiBA
QCAtMCwwICsxLDExMCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh
dXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFJveGFuYSBOaWNvbGVzY3UgIDxuaWNvbGVzY3Uu
cm94YW5hMTk5NkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QKPiArICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+
ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiAr
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsg
Kgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBB
TlkgV0FZLgo+ICsgKi8KPiArI2lmbmRlZiBVS19CTEtSRVFfSF8KPiArI2RlZmluZSBVS19CTEtS
RVFfSF8KPiArCj4gKy8qKgo+ICsgKiBVbmlrcmFmdCBibG9jayBBUEkgcmVxdWVzdCBkZWNsYXJh
dGlvbi4KPiArICoKPiArICogVGhpcyBoZWFkZXIgY29udGFpbnMgYWxsIHRoZSBBUEkgZGF0YSB0
eXBlcyB1c2VkIGZvciByZXF1ZXN0cyBvcGVyYXRpb24uCj4gKyAqLwo+ICsKPiArI2lmZGVmIF9f
Y3BsdXNwbHVzCj4gK2V4dGVybiAiQyIgewo+ICsjZW5kaWYKPiArCj4gKyNkZWZpbmUgX19zZWN0
b3Igc2l6ZV90Cj4gK3N0cnVjdCB1a19ibGtkZXZfcmVxdWVzdDsKCkkgcHJlZmVyIG5hbWluZyBp
dCBgdWtfYmxrcmVxYCBpbnN0ZWFkLiBUaGlzIHdvdWxkIGJlIGEgc2ltaWxhciAKc2hvcnRlbmlu
ZyBvZiB0aGUgc3RydWN0IG5hbWUgbGlrZSB3ZSBkaWQgaW4gbGlidWtuZXRkZXYgd2l0aCBgc3Ry
dWN0IAp1a19uZXRidWZgLiBJdCBzaG91bGQgaW1wcm92ZSByZWFkYWJpbGl0eS4KCj4gKwo+ICsv
KioKPiArICoJT3BlcmF0aW9uIHN0YXR1cwo+ICsgKi8KPiArZW51bSB1a19ibGtkZXZfcmVxX3N0
YXRlIHsKPiArCVVLX0JMS0RFVl9SRVFfRklOSVNIRUQgPSAwLAo+ICsJVUtfQkxLREVWX1JFUV9V
TkZJTklTSEVECj4gK307CgpTaW1wbGlmeSB0aGUgbmFtZSB3aXRoIGB1a19ibGtyZXFfc3RhdGVg
Cgo+ICsKPiArLyoqCj4gKyAqIFN1cHBvcnRlZCBvcGVyYXRpb25zCj4gKyAqLwo+ICtlbnVtIHVr
X2Jsa2Rldl9vcCB7Cj4gKwkvKiBSZWFkIG9wZXJhdGlvbiAqLwo+ICsJVUtfQkxLREVWX1JFQUQg
PSAwLAo+ICsJLyogV3JpdGUgb3BlcmF0aW9uICovCj4gKwlVS19CTEtERVZfV1JJVEUsCj4gKwkv
KiBGbHVzaCB0aGUgdm9sYXRpbGUgd3JpdGUgY2FjaGUgKi8KPiArCVVLX0JMS0RFVl9GRkxVU0gg
PSA0Cj4gK307CgpTaW1wbGlmeSB0aGUgbmFtZSB3aXRoIGB1a19ibGtyZXFfb3BgCkJ0dywgaXMg
aXQgcG9zc2libGUgdGhhdCBkcml2ZXJzIGNhbiB3cml0ZSBhbmQgZmx1c2ggYXQgdGhlIHNhbWUg
dGltZSBvciAKZG8geW91IGV4cGVjdCB0aGVtIHRvIGRvIHR3byBpbmRlcGVuZGVudCByZXF1ZXN0
LiBJbiB0aGUgbGF0dGVyIGNhc2UgdGhlIAplbnVtIGlzIGZpbmUuIE90aGVyd2lzZSBJIHdvdWxk
IGRlZmluZSBNYWNyb3MgdGhhdCBjYW4gYmUgb3InZWQuCgo+ICsKPiArLyoqCj4gKyAqIEZ1bmN0
aW9uIHR5cGUgdXNlZCBmb3IgcmVxdWVzdCBjYWxsYmFjayBhZnRlciBhIHJlc3BvbnNlIGlzIHBy
b2Nlc3NlZC4KPiArICoKPiArICogQHBhcmFtIHJlcQo+ICsgKglUaGUgcmVxdWVzdCBvYmplY3Qg
b24gd2hpY2ggdGhlIGV2ZW50IGlzIHRyaWdnZXJlZAo+ICsgKiBAcGFyYW0gY29va2llX2NhbGxi
YWNrCj4gKyAqCU9wdGlvbmFsIHBhcmFtZXRlcgo+ICsgKi8KPiArdHlwZWRlZiBpbnQgKCp1a19i
bGtkZXZfcmVxdWVzdF9ldmVudF90KShzdHJ1Y3QgdWtfYmxrZGV2X3JlcXVlc3QgKnJlcSwKPiAr
CQl2b2lkICpjb29raWVfY2FsbGJhY2spOwoKSSB3b3VsZCBjYWxsIGBjb29raWVfY2FsbGJhY2tg
IGl0IGVpdGhlciBgY2JfY29va2llYCwgYGNiX2FyZ2Agb3IganVzdCAKYGNvb2tpZWAuIFBsZWFz
ZSBtZW50aW9uIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBvbmUgdGhhdCB3YXMgZ2l2ZW4gYnkg
CnRoZSB1c2VyIG9uIHRoZSByZXF1ZXN0IHNldHVwL3N1Ym1pc3Npb24uCkkgd291bGQgYWxzbyBu
YW1lIHRoZSBmdW5jdGlvbiBwb2ludGVyIGRhdGEgdHlwZSBgdWtfYmxrcmVxX2V2ZW50X3RgIApp
bnN0ZWFkLiBJdCBzaG91bGQgYmUgYWxzbyBhIGB2b2lkYCBmdW5jdGlvbi4gSSB0aGluayBpdCBt
YWtlcyB0aGUgQVBJIAp0b28gY29tcGxpY2F0ZWQgaWYgdGhlIHVzZXItcHJvdmlkZWQgZnVuY3Rp
b24gY2FuIHJldHVybiBlcnJvciBjb2Rlcy4KCj4gKwo+ICsvKioKPiArICogVXNlZCBmb3Igc2Vu
ZGluZyBhIHJlcXVlc3QgdG8gdGhlIGRldmljZS4KPiArICovCj4gK3N0cnVjdCB1a19ibGtkZXZf
cmVxdWVzdCB7Cj4gKwkvKiBJbnB1dCBtZW1iZXJzICovCj4gKwkvKiBPcGVyYXRpb24gdHlwZSAq
Lwo+ICsJZW51bSB1a19ibGtkZXZfb3AJCQlvcGVyYXRpb247CgpXaXRoIHRoaXMgZW51bSBpdCBs
b29rcyBsaWtlIHRoYXQgeW91IGNhbid0IFdSSVRFIGFuZCBGRkxVU0ggd2l0aCB0aGUgCnNhbWUg
cmVxdWVzdCwgaXMgdGhpcyBpbnRlbmRlZD8KCj4gKwkvKiBTdGFydCBTZWN0b3IgZnJvbSB3aGVy
ZSB0aGUgb3AgYmVnaW4gKi8KPiArCXNpemVfdAkJCQkJc3RhcnRfc2VjdG9yOwoKU2luY2UgdGhl
IHN0YXJ0IHNlY3RvciBpcyBhIHNlY3RvciBhZGRyZXNzLCB5b3Ugc2hvdWxkIHVzZSBgX19zZWN0
b3JgIGFzIApkYXRhIHR5cGUgaW5zdGVhZCBvZiBgc2l6ZV90YC4gSSB3b3VsZCBhbHNvIGNhbGwg
dGhlIGZpZWxkIGFsc28ganVzdCAKYHN0YXJ0YC4KCj4gKwkvKiBQb2ludGVyIHRvIGRhdGEgKi8K
PiArCXZvaWQJCQkJCSphaW9fYnVmOwo+ICsJLyogU2l6ZSBpbiBudW1iZXIgb2Ygc2VjdG9ycyAq
Lwo+ICsJX19zZWN0b3IJCQkJbmJfc2VjdG9yczsKClRvIGdyb3VwIHRoZSBhcmd1bWVudHMgYmV0
dGVyLCBwbGVhc2UgbW92ZSBuYl9zZWN0b3JzIGJlZm9yZSBgYWlvX2J1ZmAuCgo+ICsJLyogUmVx
dWVzdCBjYWxsYmFjayBhbmQgaXRzIHBhcmFtZXRlcnMgKi8KPiArCXVrX2Jsa2Rldl9yZXF1ZXN0
X2V2ZW50X3QJCWNiOwo+ICsJdm9pZAkJCQkJKmNvb2tpZV9jYWxsYmFjazsKCkkgd291bGQgY2Fs
bCBpdCBlaXRoZXIgYGNiX2Nvb2tpZWAsIGBjYl9hcmdgIG9yIGp1c3QgYGNvb2tpZWAuCgo+ICsK
PiArCS8qIE91dHB1dCBtZW1iZXJzICovCj4gKwkvKiBTdGF0ZSBvZiByZXF1ZXN0OiBmaW5pc2hl
ZC91bmZpbmlzaGVkKi8KPiArCV9fYXRvbWljCQkJCXN0YXRlOwoKSXQgcHJvYmFibHkgbWFrZXMg
c2Vuc2UgdG8gcHJvdmlkZSBhbiBpbml0IGZ1bmN0aW9uIChzdGF0aWMgaW5saW5lKSBvciAKbWFj
cm8gZm9yIHJlcXVlc3RzLiBUaGlzIG9uZSBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBv
dXRwdXQgCnBhcmFtZXRlcnMuIFRoaXMgd291bGQgcHJvYmFibHkgc2ltcGxpZnkgdGhlIHVzYWdl
IG9mIHRoZSBBUEkgYW5kIHdlIGNhbiAKZXh0ZW5kIGl0IGxhdGVyIHdpdGhvdXQgYnJlYWtpbmcg
ZXhpc3RpbmcgY29kZSB0b28gbXVjaCwgZm9yIGluc3RhbmNlIAp3aXRoIHNjYXR0ZXItZ2F0aGVy
IGxpc3RzLgoKU29tZXRoaW5nIGFsb25nIHRoZXNlIGxpbmVzOgoKICBzdGF0aWMgaW5saW5lIHZv
aWQgdWtfYmxrcmVxX2luaXQoc3RydWN0IHVrX2Jsa3JlcSAqciwKCQkJCSAgIGVudW0gdWtfYmxr
cmVxX29wIG9wLAoJCQkgICAgICAgICAgIF9fc2VjdG9yIHN0YXJ0LCBfX3NlY3RvciBuYl9zZWN0
b3JzLAoJCQkgICAgICAgICAgIHZvaWQgKmFpb19idWYsCgkJCSAgICAgICAgICAgdWtfYmxrcmVx
X2V2ZW50X3QgY2IsCgkJCSAgICAgICAgICAgdm9pZCAqY2JfYXJnKSB7IFsuLi5dIH0KCkluIGNh
c2UgeW91IGludHJvZHVjZSBpdCwgcGxlYXNlIHVzZSBpdCB3aXRoaW4geW91ciBzeW5jaHJvbm91
cyBBUEkuCgpJIHdvdWxkIGFsc28gaW50cm9kdWNlIGEgc21hbGwgaGVscGVyIG1hY3JvIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gcG9sbCB0aGUgCnN0YXRlOgoKICAjZGVmaW5lIHVrX2Jsa3JlcV9pc19k
b25lKHJlcSkgXAoJIFsuLnRoZSBhdG9taWMgb3BlcmF0aW9uIGZvciB0ZXN0aW5nLi5dCgouLi50
byBiZSB1c2VkIGxpa2U6CgogIHdoaWxlICghdWtfYmxrcmVxX2lzX2RvbmUocmVxKSkgewogIAkv
KiBwb2xsIHRoZSBkZXZpY2UgcXVldWUgKi8KICAJWy4uLl0KICB9CgoKPiArCS8qIFJlc3VsdCBz
dGF0dXMgb2Ygb3BlcmF0aW9uICovCj4gKwl1aW50OF90CQkJCQlyZXN1bHRfc3RhdHVzOwoKSSB3
b3VsZCBuYW1lIHRoZSByZXN1bHQgZmllbGQganVzdCBgcmVzdWx0YC4gQXJlIHlvdSBzdXJlIHlv
dSB3YW50IHRvIApoYXZlIGFuIHVuc2lnbmVkIGludCBvZiA4IGJpdHM/IEkgd291bGQgaGF2ZSBl
eHBlY3RlZCBgaW50YC4gRXJyb3JzIGFyZSAKbmVnYXRpdmUgYW5kIHN1Y2Nlc3MgaXMgemVyby4g
SG93IGlzIGl0IGFjdHVhbGx5IGRlZmluZWQ/IE1heWJlIGEgCmRlc2NyaXB0aW9uIGlzIG5lZWRl
ZCBoZXJlLgoKPiArfTsKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+
ICsKPiArI2VuZGlmIC8qIFVLX0JMS1JFUV9IXyAqLwo+IAoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:17:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:17: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 1hbl8y-0005N8-4b; Fri, 14 Jun 2019 12:17:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl8w-0005Mw-En
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:17:18 +0000
X-Inumbo-ID: 58cce202-8e9e-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 58cce202-8e9e-11e9-8980-bc764e045a96;
 Fri, 14 Jun 2019 12:17:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7C28EF2033;
 Fri, 14 Jun 2019 14:17:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SCsrjaSuvQbf; Fri, 14 Jun 2019 14:17:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 53849F2014;
 Fri, 14 Jun 2019 14:17:09 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:17:07
 +0200
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083358.14602-1-nicolescu.roxana1996@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <5dbed77a-2ccb-64ec-7fbe-7cb2cd2613f2@neclab.eu>
Date: Fri, 14 Jun 2019 14:17:06 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083358.14602-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 5/6] lib/ukblkdev: Synchronous
 operations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

T24gMjkuMDUuMTkgMTA6MzMsIFJveGFuYSBOaWNvbGVzY3Ugd3JvdGU6Cj4gVGhpcyBwYXRjaCBp
bnRyb2R1Y2VzIHN5bmMgb3BlcmF0aW9ucy4KPiBJdCByZXF1aXJlcyB0aGUgdXNlIG9mIHNlbWFw
aG9yZSBpbiB0aGUgaW1wbGVtZW50YXRpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogUm94YW5hIE5p
Y29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgo+IC0tLQo+ICAgbGliL3Vr
YmxrZGV2L0NvbmZpZy51ayAgICAgICAgICAgICAgICB8ICA4ICsrKysrCj4gICBsaWIvdWtibGtk
ZXYvYmxrZGV2LmMgICAgICAgICAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKPiAgIGxpYi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrICAgICAgICAgICAgfCAg
MyArKwo+ICAgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggICAgICB8IDQ3ICsrKysr
KysrKysrKysrKysrKysrKysrKysKPiAgIGxpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9j
b3JlLmggfCAgMyArLQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgMSBk
ZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvQ29uZmlnLnVrIGIvbGli
L3VrYmxrZGV2L0NvbmZpZy51awo+IGluZGV4IDMxYjFhMWQyLi42ODhhNDRiNCAxMDA2NDQKPiAt
LS0gYS9saWIvdWtibGtkZXYvQ29uZmlnLnVrCj4gKysrIGIvbGliL3VrYmxrZGV2L0NvbmZpZy51
awo+IEBAIC0yNiw0ICsyNiwxMiBAQCBpZiBMSUJVS0JMS0RFVgo+ICAgCQkJYWxsb2NhdGVkIGZv
ciBlYWNoIGNvbmZpZ3VyZWQgcXVldWUuCj4gICAJCQlsaWJ1a3NjaGVkIGlzIHJlcXVpcmVkIGZv
ciB0aGlzIG9wdGlvbi4KPiAgIAo+ICsgICAgICAgIGNvbmZpZyBMSUJVS0JMS0RFVl9TWU5DX0lP
X0JMT0NLRURfV0FJVElORwo+ICsgICAgICAgICAgICAgICAgYm9vbCAiQmxvY2tlZCB3YWl0aW5n
IGZvciBzeW5jIEkvTyIKCkp1c3QgbmFtZSBpdDogIlN5bmNocm9ub3VzIEkvTyBBUEkiIHNpbmNl
IGl0IGlzIHRoZSBvbmx5IG9wZXJhdGlvbiBtb2RlIAp0aGF0IHRoZSBBUEkgc3VwcG9ydHMgZm9y
IG5vdy4gSWYgd2Ugd2FudCB0byBhZGQgYSBidXN5IHdhaXRpbmcgdmVyc2lvbiAKYXQgc29tZSBw
b2ludCwgd2UgY2FuIHN0aWxsIHJlbmFtZSBpdCBsYXRlci4KCj4gKyAgICAgICAgICAgICAgICBk
ZWZhdWx0IG4KPiArICAgICAgICAgICAgICAgIHNlbGVjdCBMSUJVS1NDSEVECj4gKyAgICAgICAg
ICAgICAgICBzZWxlY3QgTElCVUtMT0NLCj4gKwkJc2VsZWN0IExJQlVLTE9DS19TRU1BUEhPUkUK
PiArICAgICAgICAgICAgICAgIGhlbHAKPiArICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHNl
bWFwaG9yZSBmb3Igd2FpdGluZyBhZnRlciBhIHJlcXVlc3QgSS9PIGlzIGRvbmUuCj4gICBlbmRp
Zgo+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvYmxrZGV2LmMgYi9saWIvdWtibGtkZXYvYmxr
ZGV2LmMKPiBpbmRleCAzYzU4MDYxYi4uNTM0YTlhZTEgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrYmxr
ZGV2L2Jsa2Rldi5jCj4gKysrIGIvbGliL3VrYmxrZGV2L2Jsa2Rldi5jCj4gQEAgLTQwMywzICs0
MDMsNjcgQEAgaW50IHVrX2Jsa2Rldl9xdWV1ZV9maW5pc2hfcmVxcyhzdHJ1Y3QgdWtfYmxrZGV2
ICpkZXYsCj4gICAKPiAgIAlyZXR1cm4gZGV2LT5maW5pc2hfcmVxcyhkZXYsIHF1ZXVlX2lkKTsK
PiAgIH0KPiArCj4gKyNpZiBDT05GSUdfTElCVUtCTEtERVZfU1lOQ19JT19CTE9DS0VEX1dBSVRJ
TkcKPiArLyoqCj4gKyAqIFVzZWQgZm9yIHNlbmRpbmcgYSBzeW5jaHJvbm91cyByZXF1ZXN0Lgo+
ICsgKi8KPiArc3RydWN0IHVrX2Jsa2Rldl9zeW5jX2lvX3JlcXVlc3Qgewo+ICsJc3RydWN0IHVr
X2Jsa2Rldl9yZXF1ZXN0IHJlcTsJLyogUmVxdWVzdCBzdHJ1Y3R1cmUuICovCj4gKwo+ICsJLyog
U2VtYXBob3JlIHVzZWQgZm9yIHdhaXRpbmcgYWZ0ZXIgdGhlIHJlc3BvbnNlIGlzIGRvbmUuICov
Cj4gKwlzdHJ1Y3QgdWtfc2VtYXBob3JlIHM7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9fc3lu
Y19pb19jYWxsYmFjayhzdHJ1Y3QgdWtfYmxrZGV2X3JlcXVlc3QgKnJlcSwKPiArCQl2b2lkICpj
b29raWVfY2FsbGJhY2spCj4gK3sKPiArCXN0cnVjdCB1a19ibGtkZXZfc3luY19pb19yZXF1ZXN0
ICpzeW5jX2lvX3JlcTsKPiArCj4gKwlVS19BU1NFUlQocmVxKTsKPiArCVVLX0FTU0VSVChjb29r
aWVfY2FsbGJhY2spOwo+ICsKPiArCXN5bmNfaW9fcmVxID0gKHN0cnVjdCB1a19ibGtkZXZfc3lu
Y19pb19yZXF1ZXN0ICopY29va2llX2NhbGxiYWNrOwo+ICsJdWtfc2VtYXBob3JlX3VwKCZzeW5j
X2lvX3JlcS0+cyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCB1a19ibGtkZXZf
c3luY19pbyhzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJdWludDE2X3QgcXVldWVfaWQsCj4g
KwkJc2l6ZV90IHNlY3RvciwKPiArCQlfX3NlY3RvciBuYl9zZWN0b3JzLAo+ICsJCXZvaWQgKmJ1
ZiwKPiArCQllbnVtIHVrX2Jsa2Rldl9vcCBvcGVyYXRpb24pCj4gK3sKPiArCXN0cnVjdCB1a19i
bGtkZXZfcmVxdWVzdCAqcmVxOwo+ICsJaW50IHJjID0gMDsKPiArCXN0cnVjdCB1a19ibGtkZXZf
c3luY19pb19yZXF1ZXN0IHN5bmNfaW9fcmVxOwo+ICsKPiArCVVLX0FTU0VSVChkZXYgIT0gTlVM
TCk7Cj4gKwlVS19BU1NFUlQocXVldWVfaWQgPCBDT05GSUdfTElCVUtCTEtERVZfTUFYTkJRVUVV
RVMpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+ICsJVUtfQVNTRVJUKGRldi0+c3VibWl0
X29uZSk7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YS0+c3RhdGUgPT0gVUtfQkxLREVWX1JVTk5J
TkcpOwo+ICsKPiArCXJlcSA9ICZzeW5jX2lvX3JlcS5yZXE7Cj4gKwlyZXEtPmFpb19idWYgPSBi
dWY7Cj4gKwlyZXEtPm5iX3NlY3RvcnMgPSBuYl9zZWN0b3JzOwo+ICsJcmVxLT5zdGFydF9zZWN0
b3IgPSBzZWN0b3I7Cj4gKwlyZXEtPm9wZXJhdGlvbiA9IG9wZXJhdGlvbjsKPiArCXVrX3JlZmNv
dW50X2luaXQoJnJlcS0+c3RhdGUsIFVLX0JMS0RFVl9SRVFfVU5GSU5JU0hFRCk7Cj4gKwlyZXEt
PmNiID0gX19zeW5jX2lvX2NhbGxiYWNrOwo+ICsJcmVxLT5jb29raWVfY2FsbGJhY2sgPSAodm9p
ZCAqKSZzeW5jX2lvX3JlcTsKPiArCXVrX3NlbWFwaG9yZV9pbml0KCZzeW5jX2lvX3JlcS5zLCAw
KTsKPiArCj4gKwlyYyA9IHVrX2Jsa2Rldl9xdWV1ZV9zdWJtaXRfb25lKGRldiwgcXVldWVfaWQs
IHJlcSk7Cj4gKwlpZiAoIXVrX2Jsa2Rldl9zdGF0dXNfc3VjY2Vzc2Z1bChyYykpIHsKCkFzIGFu
IG9wdGltaXphdGlvbiB5b3UgY291bGQgYWRkIGB1bmxpa2VseSgpYCBhcm91bmQgdGhlIGNvbmRp
dGlvbj8gSSAKdGhpbmsgaXQgaXMgdW5saWtlbHkgdG8gZmFpbC4gQnkgYWRkaW5nIHRoaXMgeW91
IGVuYWJsZSBjb21waWxlciAKb3B0aW1pemF0aW9ucyBmb3IgdGhlIGxpa2VseSBjYXNlIGlmIHRo
ZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgaXQuCgo+ICsJCXVrX3ByX2VycigiYmxrZGV2JSJQUkl1
MTYiLXElIlBSSXUxNiI6IEZhaWxlZCB0byBzdWJtaXQgSS9PIHJlcTogJWRcbiIsCj4gKwkJCQlk
ZXYtPl9kYXRhLT5pZCwgcXVldWVfaWQsIHJjKTsKPiArCQlyZXR1cm4gcmM7Cj4gKwl9Cj4gKwo+
ICsJdWtfc2VtYXBob3JlX2Rvd24oJnN5bmNfaW9fcmVxLnMpOwo+ICsJcmV0dXJuIHJlcS0+cmVz
dWx0X3N0YXR1czsKPiArfQo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2V4
cG9ydHN5bXMudWsgYi9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+IGluZGV4IDU4ODhiZTY5
Li4wMjc0ZGFlOCAxMDA2NDQKPiAtLS0gYS9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+ICsr
KyBiL2xpYi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrCj4gQEAgLTE5LDMgKzE5LDYgQEAgdWtfYmxr
ZGV2X3NlY3RvcnMKPiAgIHVrX2Jsa2Rldl9hbGlnbgo+ICAgdWtfYmxrZGV2X3F1ZXVlX3N1Ym1p
dF9vbmUKPiAgIHVrX2Jsa2Rldl9xdWV1ZV9maW5pc2hfcmVxcwo+ICt1a19ibGtkZXZfc3luY19p
bwo+ICt1a19ibGtkZXZfcmVhZAo+ICt1a19ibGtkZXZfd3JpdGUKPiBkaWZmIC0tZ2l0IGEvbGli
L3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggYi9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9i
bGtkZXYuaAo+IGluZGV4IGRiNmQzYjgwLi5iYTRjMjc4NCAxMDA2NDQKPiAtLS0gYS9saWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtkZXYuaAo+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldi5oCj4gQEAgLTQyMSw2ICs0MjEsNTMgQEAgaW50IHVrX2Jsa2Rldl9xdWV1ZV9zdWJt
aXRfb25lKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPiAgIGludCB1a19ibGtkZXZfcXVldWVfZmlu
aXNoX3JlcXMoc3RydWN0IHVrX2Jsa2RldiAqZGV2LAo+ICAgCQl1aW50MTZfdCBxdWV1ZV9pZCk7
Cj4gICAKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9TWU5DX0lPX0JMT0NLRURfV0FJVElORwo+
ICsvKioKPiArICogTWFrZSBhIHN5bmMgaW8gcmVxdWVzdCBvbiBhIHNwZWNpZmljIHF1ZXVlLgo+
ICsgKgoKWW91IHNob3VsZCBwcm9iYWJseSBkb2N1bWVudCBoZXJlIHRoYXQgYHVrX2Jsa2Rldl9x
dWV1ZV9maW5pc2hfcmVxcygpYCAKaGFzIHRvIGJlIGNhbGxlZCB3aGlsZSB1c2luZyB0aGUgZnVu
Y3Rpb24uIFRoaXMgY2FuIGJlIGRvbmUgdmlhIHF1ZXVlIAppbnRlcnJ1cHRzL2V2ZW50cyBvciBi
eSBjYWxsaW5nIGB1a19ibGtkZXZfcXVldWVfZmluaXNoX3JlcXMoKWAgZnJvbSBhIApkaWZmZXJl
bnQgdGhyZWFkIGNvbnRleHQuIE90aGVyd2lzZSB3ZSBhcmUgYmxvY2tpbmcgdGhlIHRocmVhZCBm
b3JldmVyIApiZWNhdXNlIGl0IGdvdCBibG9ja2VkIGJ5IHRoZSBzZW1hcGhvcmUgKGFuZCBuZXZl
ciB1bmJsb2NrZWQpLgoKPiArICogQHBhcmFtIGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sg
RGV2aWNlCj4gKyAqIEBwYXJhbSBxdWV1ZV9pZAo+ICsgKglxdWV1ZV9pZAo+ICsgKiBAcGFyYW0g
c2VjdG9yCj4gKyAqCVN0YXJ0IFNlY3Rvcgo+ICsgKiBAcGFyYW0gbmJfc2VjdG9ycwo+ICsgKiBA
cGFyYW0gYnVmCj4gKyAqCUJ1ZmZlciB3aGVyZSBkYXRhIGlzIGZvdW5kCj4gKyAqIEAgcGFyYW0g
b3AKPiArICoJVHlwZSBvZiBvcGVyYXRpb24KPiArICogQHJldHVybgo+ICsgKgktIDA6IFN1Y2Nl
c3MKPiArICoJLSAoPDApOiBvbiBlcnJvciByZXR1cm5lZCBieSBkcml2ZXIKPiArICovCj4gK2lu
dCB1a19ibGtkZXZfc3luY19pbyhzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJdWludDE2X3Qg
cXVldWVfaWQsCj4gKwkJc2l6ZV90IHNlY3RvciwKClBsZWFzZSB1c2UgdGhlIF9fc2VjdG9yIGRh
dGF0eXBlIGZvciB0aGUgc3RhcnQgYWRkcmVzcywgSSB3b3VsZCBwcmVmZXIgCmFsc28gdG8gaGF2
ZSBzb21ldGhpbmcgaW5saW5lIHdpdGggdGhlIGFzeW5jIEFQSTogQ2FsbCB0aGUgcGFyYW1ldGVy
IApgX19zZWN0b3Igc3RhcnRfc2VjdG9yYCBhcyB5b3UgaGF2ZSBpbiB5b3VyIHJlcXVlc3QgdG9r
ZW4uCgpJIHdvdWxkIGFsc28gbW92ZSB0aGUgb3BlcmF0aW9uIGFyZ3VtZW50IGJlZm9yZSB0aGUg
YnVmZmVyLgpUaGlzIHdheSB5b3UgZ3JvdXAgaW5wdXQgcGFyYW1ldGVycyB0b2dldGhlci4gVGhl
IGJ1ZmZlciBjYW4gYmUgCihkZXBlbmRlbnQgb24gdGhlIG9wZXJhdGlvbikgYW4gaW5wdXQgYW5k
IG91dHB1dCBidWZmZXIuCgo+ICsJCV9fc2VjdG9yIG5iX3NlY3RvcnMsCj4gKwkJdm9pZCAqYnVm
LAo+ICsJCWVudW0gdWtfYmxrZGV2X29wIG9wKTsKPiArCj4gKy8qCj4gKyAqIFdyYXBwZXJzIGZv
ciB1a19ibGtkZXZfc3luY19pbwo+ICsgKi8KPiArI2RlZmluZSB1a19ibGtkZXZfd3JpdGUoYmxr
ZGV2LFwKPiArCQlxdWV1ZV9pZCwJXAo+ICsJCXNlY3RvciwJCVwKPiArCQluYl9zZWN0b3JzLAlc
Cj4gKwkJYnVmKQlcCj4gKwl1a19ibGtkZXZfc3luY19pbyhibGtkZXYsIHF1ZXVlX2lkLCBzZWN0
b3IsIG5iX3NlY3RvcnMsIGJ1ZixcCj4gKwkJCVVLX0JMS0RFVl9XUklURSkgXAo+ICsKPiArI2Rl
ZmluZSB1a19ibGtkZXZfcmVhZChibGtkZXYsXAo+ICsJCXF1ZXVlX2lkLAlcCj4gKwkJc2VjdG9y
LAkJXAo+ICsJCW5iX3NlY3RvcnMsCVwKPiArCQlidWYpCVwKPiArCXVrX2Jsa2Rldl9zeW5jX2lv
KGJsa2RldiwgcXVldWVfaWQsIHNlY3RvciwgbmJfc2VjdG9ycywgYnVmLFwKPiArCQkJVUtfQkxL
REVWX1JFQUQpIFwKPiArCgpJIHdvdWxkIHByZWZlciB0byBjYWxsIHRoZXNlIG1hY3JvczoKdWtf
YmxrZGV2X3N5bmNfd3JpdGUoKSBhbmQgdWtfYmxrZGV2X3N5bmNfcmVhZCgpCmJlY2F1c2UgdGhl
eSBhcmUgYm90aCBiYXNlZCBvbiB1a19ibGtkZXZfc3luY19pbygpLgoKPiArI2VuZGlmCj4gKwo+
ICAgI2lmZGVmIF9fY3BsdXNwbHVzCj4gICB9Cj4gICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGli
L3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRl
L3VrL2Jsa2Rldl9jb3JlLmgKPiBpbmRleCAzMDliN2E3Zi4uNjY4MzFmOTAgMTAwNjQ0Cj4gLS0t
IGEvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaAo+ICsrKyBiL2xpYi91a2Js
a2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9jb3JlLmgKPiBAQCAtMzksNyArMzksOCBAQAo+ICAgI2lu
Y2x1ZGUgPHVrL2xpc3QuaD4KPiAgICNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiAgICNpbmNsdWRl
IDx1ay9ibGtyZXEuaD4KPiAtI2lmIGRlZmluZWQoQ09ORklHX0xJQlVLQkxLREVWX0RJU1BBVENI
RVJUSFJFQURTKQo+ICsjaWYgZGVmaW5lZChDT05GSUdfTElCVUtCTEtERVZfRElTUEFUQ0hFUlRI
UkVBRFMpIHx8IFwKPiArCQlkZWZpbmVkKENPTkZJR19MSUJVS0JMS0RFVl9TWU5DX0lPX0JMT0NL
RURfV0FJVElORykKPiAgICNpbmNsdWRlIDx1ay9zY2hlZC5oPgo+ICAgI2luY2x1ZGUgPHVrL3Nl
bWFwaG9yZS5oPgo+ICAgI2VuZGlmCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:17:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:17: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 1hbl94-0005Nv-6H; Fri, 14 Jun 2019 12:17:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hbl92-0005Nk-7K
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:17:24 +0000
X-Inumbo-ID: 5c6a0812-8e9e-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5c6a0812-8e9e-11e9-8980-bc764e045a96;
 Fri, 14 Jun 2019 12:17:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 85102F2033;
 Fri, 14 Jun 2019 14:17:21 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IwDjXK2056d4; Fri, 14 Jun 2019 14:17:21 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 5D30BF2014;
 Fri, 14 Jun 2019 14:17:15 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:17:10
 +0200
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083414.14794-1-nicolescu.roxana1996@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ec1b891c-c66f-0bfd-4abc-89f2bbb53e4c@neclab.eu>
Date: Fri, 14 Jun 2019 14:17:10 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529083414.14794-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 6/6] lib/ukblkdev: Stop and
 release an Unikraft block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

T24gMjkuMDUuMTkgMTA6MzQsIFJveGFuYSBOaWNvbGVzY3Ugd3JvdGU6Cj4gQSBkZXZpY2UgY2Fu
IGJlIHN0b3BwZWQsIHdoaWNoIHdpbGwgbm90IHBlcm1pdCBmdXJ0aGVyIHJlcXVlc3RzLgo+IEFs
c28sIGZvciBjbG9zaW5nIHRoZSBkZXZpY2UsIHRoZSBkZXZpY2UgbXVzdCBwZSBzdG9wcGVkLAo+
IGVhY2ggcXVldWUgbXVzdCBiZSByZWxlYXNlIGFuZCBhbGwgdGhlIGRhdGEgYWxsb2NhdGVkIG11
c3QgYmUgZnJlZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xl
c2N1LnJveGFuYTE5OTZAZ21haWwuY29tPgo+IC0tLQo+ICAgbGliL3VrYmxrZGV2L2Jsa2Rldi5j
ICAgICAgICAgICAgICAgICAgIHwgODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Cj4gICBsaWIvdWtibGtkZXYvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgfCAgNCArKwo+ICAg
bGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmggICAgICAgIHwgMzEgKysrKysrKysrKysr
Cj4gICBsaWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5oICAgfCAxMyArKysrKwo+
ICAgbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2RyaXZlci5oIHwgMTEgKysrKysKPiAg
IDUgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvbGli
L3VrYmxrZGV2L2Jsa2Rldi5jIGIvbGliL3VrYmxrZGV2L2Jsa2Rldi5jCj4gaW5kZXggNTM0YTlh
ZTEuLmQwNmI1MjUwIDEwMDY0NAo+IC0tLSBhL2xpYi91a2Jsa2Rldi9ibGtkZXYuYwo+ICsrKyBi
L2xpYi91a2Jsa2Rldi9ibGtkZXYuYwo+IEBAIC00NjcsMyArNDY3LDg4IEBAIGludCB1a19ibGtk
ZXZfc3luY19pbyhzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gICAJcmV0dXJuIHJlcS0+cmVzdWx0
X3N0YXR1czsKPiAgIH0KPiAgICNlbmRpZgo+ICsKPiAraW50IHVrX2Jsa2Rldl9zdG9wKHN0cnVj
dCB1a19ibGtkZXYgKmRldikKPiArewo+ICsJaW50IHJjID0gMDsKPiArCj4gKwlVS19BU1NFUlQo
ZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiArCVVLX0FTU0VSVChkZXYtPmRldl9v
cHMpOwo+ICsJVUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+ZGV2X3N0b3ApOwo+ICsJVUtfQVNTRVJU
KGRldi0+X2RhdGEtPnN0YXRlID09IFVLX0JMS0RFVl9SVU5OSU5HKTsKPiArCj4gKwlyYyA9IGRl
di0+ZGV2X29wcy0+ZGV2X3N0b3AoZGV2KTsKPiArCWlmIChyYykKPiArCQl1a19wcl9lcnIoIkZh
aWxlZCB0byBzdG9wIGJsa2RldiUiUFJJdTE2IiBkZXZpY2UgJWRcbiIsCj4gKwkJCQlkZXYtPl9k
YXRhLT5pZCwgcmMpOwo+ICsJZWxzZSB7Cj4gKwkJdWtfcHJfaW5mbygiU3RvcHBlZCBibGtkZXYl
IlBSSXUxNiIgZGV2aWNlXG4iLAo+ICsJCQkJCQlkZXYtPl9kYXRhLT5pZCk7Cj4gKwkJZGV2LT5f
ZGF0YS0+c3RhdGUgPSBVS19CTEtERVZfQ09ORklHVVJFRDsKPiArCX0KPiArCj4gKwlyZXR1cm4g
cmM7Cj4gK30KPiArCj4gK3ZvaWQgdWtfYmxrZGV2X3F1ZXVlX3JlbGVhc2Uoc3RydWN0IHVrX2Js
a2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCkKPiArewo+ICsJaW50IHJjID0gMDsKPiArCj4g
KwlVS19BU1NFUlQoZGV2ICE9IE5VTEwpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+ICsJ
VUtfQVNTRVJUKGRldi0+ZGV2X29wcyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5kZXZfb3BzLT5xdWV1
ZV9yZWxlYXNlKTsKPiArCVVLX0FTU0VSVChxdWV1ZV9pZCA8IENPTkZJR19MSUJVS0JMS0RFVl9N
QVhOQlFVRVVFUyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YS0+c3RhdGUgIT0gVUtfQkxLREVW
X1JVTk5JTkcpOwo+ICsKPiArI2lmIENPTkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVSVEhSRUFE
Uwo+ICsJaWYgKGRldi0+X2RhdGEtPnF1ZXVlX2hhbmRsZXJbcXVldWVfaWRdLmNhbGxiYWNrKQo+
ICsJCV9kZXN0cm95X2V2ZW50X2hhbmRsZXIoJmRldi0+X2RhdGEtPnF1ZXVlX2hhbmRsZXJbcXVl
dWVfaWRdKTsKCkh1bSBub3Qgc3VyZSBpZiB0aGVyZSBpcyBhIGNvbmRpdGlvbiB3aGVyZSB0aGlz
IGNvdWxkIGNyYXNoLiBNYXliZSB5b3UgCnNob3VsZCBnZXQgdGhlIHF1ZXVlIHRocmVhZCBpbnRv
IGFuIGRlZmluZWQgc3RhdGUgYW5kIGRlc3Ryb3kgaXQgdGhlcmUuIApJIGFtIGp1c3QgdGhpbmtp
bmcgd2hhdCBoYXBwZW5zIHdoZW4gaXQgaXMgZ2V0dGluZyBkZXN0cm95ZWQgd2hpbGUgCmV4ZWN1
dGluZyB0aGUgcmVnaXN0ZXJlZCBldmVudCBjYWxsYmFjay4gTWF5YmUgd2UgbmVlZCBhIGNvbmRp
dGlvbiAKdmFyaWFibGUgbmV4dCB0byB0aGUgZXZlbnQgc2VtYXBob3JlIHdoaWNoIGlzIGNoZWNr
ZWQgaWYgdGhlIHRocmVhZCAKc2hvdWxkIGV4aXQgYnkgaXRzZWxmLgpBdCBsZWFzdCB3ZSBzaG91
bGQgcHV0IGEgLyogVE9ETyAqLyBjb21tZW50IGhlcmUgYmVjYXVzZSB3ZSBtYXkgcnVuIGludG8g
CnByb2JsZW1zIGVzcGVjaWFsbHkgd2l0aCBwcmVlbXB0aXZlIHNjaGVkdWxpbmcuIEl0IGlzIG9r
YXkgdG8gc29sdmUgdGhpcyAKcHJvYmxlbSBsYXRlci4KCj4gKyNlbmRpZgo+ICsKPiArCXJjID0g
ZGV2LT5kZXZfb3BzLT5xdWV1ZV9yZWxlYXNlKGRldiwgcXVldWVfaWQpOwoKVXNlIGBzdHJ1Y3Qg
dWtfYmxrZGV2X3F1ZXVlICpgIGFsc28gaGVyZSBhcyBjb21tZW50ZWQgaW4gcGF0Y2ggNC82LgoK
PiArCWlmIChyYykKPiArCQl1a19wcl9lcnIoIkZhaWxlZCB0byByZWxlYXNlIGJsa2RldiUiUFJJ
dTE2Ii1xJSJQUkl1MTYiOiAlZFxuIiwKPiArCQkJCWRldi0+X2RhdGEtPmlkLCBxdWV1ZV9pZCwg
cmMpOwo+ICsJZWxzZSB7Cj4gKwkJdWtfcHJfaW5mbygiUmVsZWFzZWQgYmxrZGV2JSJQUkl1MTYi
LXElIlBSSXUxNiJcbiIsCj4gKwkJCQlkZXYtPl9kYXRhLT5pZCwgcXVldWVfaWQpOwo+ICsKPiAr
CQlkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0gPSBOVUxMOwo+ICsJfQo+ICt9Cj4gKwo+ICt2b2lkIHVr
X2Jsa2Rldl9kcnZfdW5yZWdpc3RlcihzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsIHN0cnVjdCB1a19h
bGxvYyAqYSkKPiArewo+ICsJdWludDE2X3QgaWQ7Cj4gKwo+ICsJVUtfQVNTRVJUKGRldiAhPSBO
VUxMKTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRh
LT5zdGF0ZSAhPSBVS19CTEtERVZfUlVOTklORyk7Cj4gKwo+ICsJaWQgPSBkZXYtPl9kYXRhLT5p
ZDsKPiArCj4gKwl1a19mcmVlKGEsIGRldi0+X2RhdGEpOwoKTWF5YmUgaXQgaXMgYmV0dGVyIHRv
IHN0b3JlIGB1a19hbGxvYyAqYWAgb24gYF9kYXRhYCB3aGlsZSBhbGxvY2F0aW5nLiAKVGhlbiB3
ZSB3b3VsZCBub3QgbmVlZCB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9uIGFyZ3VtZW50IGFueW1vcmUu
Cgo+ICsJVUtfVEFJTFFfUkVNT1ZFKCZ1a19ibGtkZXZfbGlzdCwgZGV2LCBfbGlzdCk7Cj4gKwli
bGtkZXZfY291bnQtLTsKPiArCj4gKwl1a19wcl9pbmZvKCJVbnJlZ2lzdGVyZWQgYmxrZGV2JSJQ
Ukl1MTYiOiAlcFxuIiwKPiArCQkJCSAgIGlkLCBkZXYpOwo+ICt9Cj4gKwo+ICt2b2lkIHVrX2Js
a2Rldl9jbG9zZShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYpCj4gK3sKPiArCXVpbnQxNl90IGlkOwo+
ICsKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+ICsJVUtf
QVNTRVJUKGRldi0+ZGV2X29wcyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5kZXZfb3BzLT5kZXZfY2xv
c2UpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEtPnN0YXRlICE9IFVLX0JMS0RFVl9SVU5OSU5H
KTsKPiArCj4gKwlpZCA9IGRldi0+X2RhdGEtPmlkOwo+ICsJZGV2LT5kZXZfb3BzLT5kZXZfY2xv
c2UoZGV2KTsKPiArCj4gKwl1a19wcl9pbmZvKCJDbG9zZWQgYmxrZGV2JSJQUkl1MTYiXG4iLCBp
ZCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsgYi9saWIv
dWtibGtkZXYvZXhwb3J0c3ltcy51awo+IGluZGV4IDAyNzRkYWU4Li4wYWJkOGUxMCAxMDA2NDQK
PiAtLS0gYS9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+ICsrKyBiL2xpYi91a2Jsa2Rldi9l
eHBvcnRzeW1zLnVrCj4gQEAgLTIyLDMgKzIyLDcgQEAgdWtfYmxrZGV2X3F1ZXVlX2ZpbmlzaF9y
ZXFzCj4gICB1a19ibGtkZXZfc3luY19pbwo+ICAgdWtfYmxrZGV2X3JlYWQKPiAgIHVrX2Jsa2Rl
dl93cml0ZQo+ICt1a19ibGtkZXZfc3RvcAo+ICt1a19ibGtkZXZfcXVldWVfcmVsZWFzZQo+ICt1
a19ibGtkZXZfZHJ2X3VucmVnaXN0ZXIKPiArdWtfYmxrZGV2X2Nsb3NlCj4gZGlmZiAtLWdpdCBh
L2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldi5oIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUv
dWsvYmxrZGV2LmgKPiBpbmRleCBiYTRjMjc4NC4uMDA3ODkxOTggMTAwNjQ0Cj4gLS0tIGEvbGli
L3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmgKPiArKysgYi9saWIvdWtibGtkZXYvaW5jbHVk
ZS91ay9ibGtkZXYuaAo+IEBAIC00NjgsNiArNDY4LDM3IEBAIGludCB1a19ibGtkZXZfc3luY19p
byhzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gICAKPiAgICNlbmRpZgo+ICAgCj4gKy8qKgo+ICsg
KiBTdG9wIGFuIFVuaWtyYWZ0IGJsb2NrIGRldmljZSwgYW5kIHNldCBpdHMgc3RhdGUgdG8gVUtf
QkxLREVWX0NPTkZJR1VSRUQKPiArICogc3RhdGUuCj4gKyAqIFRoZSBkZXZpY2UgY2FuIGJlIHJl
c3RhcnRlZCB3aXRoIGEgY2FsbCB0byB1a19ibGtkZXZfc3RhcnQoKS4KPiArICoKPiArICogQHBh
cmFtIGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+ICsgKi8KPiAraW50IHVr
X2Jsa2Rldl9zdG9wKHN0cnVjdCB1a19ibGtkZXYgKmRldik7Cj4gKwo+ICsvKioKPiArICogRnJl
ZSBhIHF1ZXVlIGFuZCBpdHMgZGVzY3JpcHRvcnMgZm9yIGFuIFVuaWtyYWZ0IGJsb2NrIGRldmlj
ZS4KPiArICogQHBhcmFtIGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+ICsg
KiBAcGFyYW0gcXVldWVfaWQKPiArICoJVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSB0byBzZXQgdXAu
Cj4gKyAqCVRoZSB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIFswLCBuYl9xdWV1ZSAtMV0gcHJldmlv
dXNseSBzdXBwbGllZAo+ICsgKgl0byB1a19ibGtkZXZfY29uZmlndXJlKCkKPiArICovCj4gK3Zv
aWQgdWtfYmxrZGV2X3F1ZXVlX3JlbGVhc2Uoc3RydWN0IHVrX2Jsa2RldiAqZGV2LCB1aW50MTZf
dCBxdWV1ZV9pZCk7CgpVc2UgYHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKmAgYWxzbyBoZXJlLgoK
PiArCj4gKy8qKgo+ICsgKiBDbG9zZSBhIHN0b3BwZWQgVW5pa3JhZnQgYmxvY2sgZGV2aWNlLgo+
ICsgKiBUaGUgZnVuY3Rpb24gZnJlZXMgYWxsIHJlc291cmNlcyBleGNlcHQgZm9yCj4gKyAqIHRo
ZSBvbmVzIG5lZWRlZCBieSB0aGUgVUtfQkxLREVWX1VOQ09ORklHVVJFRCBzdGF0ZS4KPiArICoK
PiArICogQHBhcmFtIGRldgo+ICsgKglUaGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+ICsgKi8K
PiArdm9pZCB1a19ibGtkZXZfY2xvc2Uoc3RydWN0IHVrX2Jsa2RldiAqZGV2KTsKPiArCj4gICAj
aWZkZWYgX19jcGx1c3BsdXMKPiAgIH0KPiAgICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5oIGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsv
YmxrZGV2X2NvcmUuaAo+IGluZGV4IDY2ODMxZjkwLi43MWZkZDM0YiAxMDA2NDQKPiAtLS0gYS9s
aWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5oCj4gKysrIGIvbGliL3VrYmxrZGV2
L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaAo+IEBAIC0yMDQsNiArMjA0LDE2IEBAIHR5cGVkZWYg
aW50ICgqdWtfYmxrZGV2X3F1ZXVlX3N1Ym1pdF9vbmVfdCkoc3RydWN0IHVrX2Jsa2RldiAqZGV2
LAo+ICAgdHlwZWRlZiBpbnQgKCp1a19ibGtkZXZfcXVldWVfZmluaXNoX3JlcXNfdCkoc3RydWN0
IHVrX2Jsa2RldiAqZGV2LAo+ICAgCQl1aW50MTZfdCBxdWV1ZV9pZCk7Cj4gICAKPiArLyoqIERy
aXZlciBjYWxsYmFjayB0eXBlIHRvIHN0b3AgYW4gVW5pa3JhZnQgYmxvY2sgZGV2aWNlLiAqLwo+
ICt0eXBlZGVmIGludCAoKnVrX2Jsa2Rldl9zdG9wX3QpKHN0cnVjdCB1a19ibGtkZXYgKmRldik7
Cj4gKwo+ICsvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8gcmVsZWFzZSBhIHF1ZXVlIG9mIGFu
IFVuaWtyYWZ0IGJsb2NrIGRldmljZS4gKi8KPiArdHlwZWRlZiBpbnQgKCp1a19ibGtkZXZfcXVl
dWVfcmVsZWFzZV90KShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4gKwkJdWludDE2X3QgcXVldWVf
aWQpOwoKVXNlIGBzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICpgIGFsc28gaGVyZSBhcyBjb21tZW50
ZWQgaW4gcGF0Y2ggNC82LgoKPiArCj4gKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBjbG9z
ZSBhbiBVbmlrcmFmdCBibG9jayBkZXZpY2UuICovCj4gK3R5cGVkZWYgdm9pZCAoKnVrX2Jsa2Rl
dl9jbG9zZV90KShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYpOwo+ICsKPiAgIHN0cnVjdCB1a19ibGtk
ZXZfb3BzIHsKPiAgIAl1a19ibGtkZXZfZ2V0X2luZm9fdAkJCQlnZXRfaW5mbzsKPiAgIAl1a19i
bGtkZXZfY29uZmlndXJlX3QJCQkJZGV2X2NvbmZpZ3VyZTsKPiBAQCAtMjExLDcgKzIyMSwxMCBA
QCBzdHJ1Y3QgdWtfYmxrZGV2X29wcyB7Cj4gICAJdWtfYmxrZGV2X3F1ZXVlX2NvbmZpZ3VyZV90
CQkJcXVldWVfc2V0dXA7Cj4gICAJdWtfYmxrZGV2X3F1ZXVlX2ludHJfZW5hYmxlX3QJCQlxdWV1
ZV9pbnRyX2VuYWJsZTsKPiAgIAl1a19ibGtkZXZfc3RhcnRfdAkJCQlkZXZfc3RhcnQ7Cj4gKwl1
a19ibGtkZXZfc3RvcF90CQkJCWRldl9zdG9wOwo+ICAgCXVrX2Jsa2Rldl9xdWV1ZV9pbnRyX2Rp
c2FibGVfdAkJCXF1ZXVlX2ludHJfZGlzYWJsZTsKPiArCXVrX2Jsa2Rldl9xdWV1ZV9yZWxlYXNl
X3QJCQlxdWV1ZV9yZWxlYXNlOwo+ICsJdWtfYmxrZGV2X2Nsb3NlX3QJCQkJZGV2X2Nsb3NlOwo+
ICAgfTsKPiAgIAo+ICAgLyoqCj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldl9kcml2ZXIuaCBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9kcml2ZXIu
aAo+IGluZGV4IDM3YjVhM2U4Li5mMzYxZThmYiAxMDA2NDQKPiAtLS0gYS9saWIvdWtibGtkZXYv
aW5jbHVkZS91ay9ibGtkZXZfZHJpdmVyLmgKPiArKysgYi9saWIvdWtibGtkZXYvaW5jbHVkZS91
ay9ibGtkZXZfZHJpdmVyLmgKPiBAQCAtOTgsNiArOTgsMTcgQEAgc3RhdGljIGlubGluZSB2b2lk
IHVrX2Jsa2Rldl9kcnZfcXVldWVfZXZlbnQoc3RydWN0IHVrX2Jsa2RldiAqZGV2LAo+ICAgI2Vu
ZGlmCj4gICB9Cj4gICAKPiArLyoqCj4gKyAqIEZyZWVzIHRoZSBkYXRhIGFsbG9jYXRlZCBmb3Ig
dGhlIFVuaWtyYWZ0IEJsb2NrIERldmljZS4KPiArICogUmVtb3ZlcyB0aGUgYmxvY2sgZGV2aWNl
IGZyb20gdGhlIGxpc3QuCj4gKyAqCj4gKyAqIEBwYXJhbSBkZXYKPiArICoJVW5pa3JhZnQgYmxv
Y2sgZGV2aWNlCj4gKyAqIEBwYXJhbSBhCj4gKyAqCUFsbG9jYXRvciB1c2VkIGZvciBsaWJ1a2Js
a2RldiBwcml2YXRlIGRhdGEgKGRldi0+X2RhdGEpLgo+ICsgKi8KPiArdm9pZCB1a19ibGtkZXZf
ZHJ2X3VucmVnaXN0ZXIoc3RydWN0IHVrX2Jsa2RldiAqZGV2LCBzdHJ1Y3QgdWtfYWxsb2MgKmEp
Owo+ICsKPiAgICNpZmRlZiBfX2NwbHVzcGx1cwo+ICAgfQo+ICAgI2VuZGlmCj4gCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:36:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:36: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 1hblRK-0006qA-JU; Fri, 14 Jun 2019 12:36:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hblRJ-0006q5-BN
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:36:17 +0000
X-Inumbo-ID: 000878c6-8ea1-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 000878c6-8ea1-11e9-8980-bc764e045a96;
 Fri, 14 Jun 2019 12:36:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DECC3105285;
 Fri, 14 Jun 2019 14:36:14 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gHGhvqbfqprx; Fri, 14 Jun 2019 14:36:14 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B927E105278;
 Fri, 14 Jun 2019 14:36:14 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:36:14
 +0200
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <43c5d748-4b28-fa77-ebd2-7405917e67f4@neclab.eu>
Date: Fri, 14 Jun 2019 14:36:13 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <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>

SGV5LAoKc2luY2UgSSBqdXN0IG5vdGljZWQgdGhpcy4uLgoKT24gMTMuMDYuMTkgMTg6MjQsIFZs
YWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToKPiBUaGlzIHBhdGNoIGFkZHMgdGhlIC9k
ZXYvcmFuZG9tIGFuZCAvZGV2L3VyYW5kb20gZGV2aWNlcy4gU2luY2Ugd2UgZG8gbm90IGhhdmUK
PiBhbnkgZW50cm9weSBnZW5lcmF0aW5nIGZ1bmN0aW9uIGJvdGggZGV2aWNlcyBzaGFyZSB0aGUg
c2FtZSBoYW5kbGVycy4gVGhlCj4gcmVnaXN0cmF0aW9uIG9mIHRoZSBkZXZpY2VzIGlzIGd1YXJk
ZWQgYnkgdGhlIGNvbmZpZyBvcHRpb24gQ09ORklHX0RFVl9SQU5ET00uCj4gCj4gU2lnbmVkLW9m
Zi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBi
LnJvPgo+IC0tLQo+ICAgbGliL3Vrc3dyYW5kL0NvbmZpZy51ayAgIHwgICA2ICsrCj4gICBsaWIv
dWtzd3JhbmQvTWFrZWZpbGUudWsgfCAgIDMgKwo+ICAgbGliL3Vrc3dyYW5kL213Y19kZXYuYyAg
IHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMyBmaWxl
cyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91
a3N3cmFuZC9td2NfZGV2LmMKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5kL0NvbmZpZy51
ayBiL2xpYi91a3N3cmFuZC9Db25maWcudWsKPiBpbmRleCA0NGY2ZWU1MC4uYTFhODRiYzUgMTAw
NjQ0Cj4gLS0tIGEvbGliL3Vrc3dyYW5kL0NvbmZpZy51awo+ICsrKyBiL2xpYi91a3N3cmFuZC9D
b25maWcudWsKPiBAQCAtMTcsNCArMTcsMTAgQEAgZW5kY2hvaWNlCj4gICBjb25maWcgTElCVUtT
V1JBTkRfSU5JVElBTFNFRUQKPiAgIAlpbnQgIkluaXRpYWwgcmFuZG9tIHNlZWQiCj4gICAJZGVm
YXVsdCAyMwo+ICsKPiArY29uZmlnIERFVl9SQU5ET00KCi4uLnlvdSBzaG91bGQgY2FsbCB0aGlz
IG9wdGlvbiBMSUJVS1NXUkFORF9ERVZfUkFORE9NIGluc3RlYWQgdG8gbmFtZSAKc3BhY2UgaXQg
cHJvcGVybHkuCgo+ICsJYm9vbCAiL2Rldi9yYW5kb20gZGV2aWNlIgo+ICsJc2VsZWN0IExJQkRF
VkZTCj4gKwlkZWZhdWx0IG4KPiArCgpQbGVhc2UgYWxzbyBhZGQgYSBkZXNjcmlwdGlvbiB3aGF0
IHRoaXMgb3B0aW9uIGVuYWJsZXMuCgo+ICAgZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dy
YW5kL01ha2VmaWxlLnVrIGIvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrCj4gaW5kZXggOGQ0NDgy
YzQuLjI1MjQ3NDc0IDEwMDY0NAo+IC0tLSBhL2xpYi91a3N3cmFuZC9NYWtlZmlsZS51awo+ICsr
KyBiL2xpYi91a3N3cmFuZC9NYWtlZmlsZS51awo+IEBAIC00LDMgKzQsNiBAQCBDSU5DTFVERVMt
JChDT05GSUdfTElCVUtTV1JBTkQpCSs9IC1JJChMSUJVS1NXUkFORF9CQVNFKS9pbmNsdWRlCj4g
ICBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJVS1NXUkFORCkgKz0gLUkkKExJQlVLU1dSQU5EX0JB
U0UpL2luY2x1ZGUKPiAgIAo+ICAgTElCVUtTV1JBTkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFO
RF9NV0MpICs9ICQoTElCVUtTV1JBTkRfQkFTRSkvbXdjLmMKPiAraWZkZWYgQ09ORklHX0RFVl9S
QU5ET00KPiArTElCVUtTV1JBTkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9ICQo
TElCVUtTV1JBTkRfQkFTRSkvbXdjX2Rldi5jCj4gK2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi91
a3N3cmFuZC9td2NfZGV2LmMgYi9saWIvdWtzd3JhbmQvbXdjX2Rldi5jCj4gbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uNWE5YzBkNDkKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvbGliL3Vrc3dyYW5kL213Y19kZXYuYwo+IEBAIC0wLDAgKzEsMTE5IEBACj4gKy8qIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczog
VmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+
ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2Yg
QnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiAr
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVy
IG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAq
Cj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+
ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1Qg
QkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2luY2x1
ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDx1ay9jdG9y
cy5oPgo+ICsjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPiArI2luY2x1ZGUgPHVrL3N3cmFuZC5oPgo+
ICsjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2lu
Y2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gKyNp
bmNsdWRlIDxkZXZmcy9kZXZpY2UuaD4KPiArCj4gKyNkZWZpbmUgREVWX1JBTkRPTV9OQU1FICJy
YW5kb20iCj4gKyNkZWZpbmUgREVWX1VSQU5ET01fTkFNRSAidXJhbmRvbSIKPiArCj4gK2ludCBk
ZXZfcmFuZG9tX3JlYWQoc3RydWN0IGRldmljZSAqZGV2IF9fdW51c2VkLCBzdHJ1Y3QgdWlvICp1
aW8sCj4gKwkJCWludCBmbGFncyBfX3VudXNlZCkKPiArewo+ICsJc2l6ZV90IGNvdW50LCBzdGVw
LCBjaHVua19zaXplLCBpOwo+ICsJY2hhciAqYnVmOwo+ICsJX191MzIgcmQ7Cj4gKwo+ICsJYnVm
ID0gdWlvLT51aW9faW92LT5pb3ZfYmFzZTsKPiArCWNvdW50ID0gdWlvLT51aW9faW92LT5pb3Zf
bGVuOwo+ICsKPiArCXN0ZXAgPSBzaXplb2YoX191MzIpOwo+ICsJY2h1bmtfc2l6ZSA9IGNvdW50
ICUgc3RlcDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQgLSBjaHVua19zaXplOyBpICs9
IHN0ZXApCj4gKwkJKigoX191MzIgKilidWYgKyBpKSA9IHVrX3N3cmFuZF9yYW5kcigpOwo+ICsK
PiArCS8qIGZpbGwgdGhlIHJlbWFpbmluZyBieXRlcyBvZiB0aGUgYnVmZmVyICovCj4gKwlpZiAo
Y2h1bmtfc2l6ZSA+IDApIHsKPiArCQlyZCA9IHVrX3N3cmFuZF9yYW5kcigpOwo+ICsJCW1lbWNw
eShidWYgKyBpLCAmcmQsIGNodW5rX3NpemUpOwo+ICsJfQo+ICsKPiArCXVpby0+dWlvX3Jlc2lk
ID0gMDsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgZGV2X3JhbmRvbV9vcGVuKHN0cnVj
dCBkZXZpY2UgKmRldmljZSBfX3VudXNlZCwgaW50IG1vZGUgX191bnVzZWQpCj4gK3sKPiArCXJl
dHVybiAwOwo+ICt9Cj4gKwo+ICsKPiAraW50IGRldl9yYW5kb21fY2xvc2Uoc3RydWN0IGRldmlj
ZSAqZGV2aWNlIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj
IHN0cnVjdCBkZXZvcHMgcmFuZG9tX2Rldm9wcyA9IHsKPiArCS5yZWFkID0gZGV2X3JhbmRvbV9y
ZWFkLAo+ICsJLm9wZW4gPSBkZXZfcmFuZG9tX29wZW4sCj4gKwkuY2xvc2UgPSBkZXZfcmFuZG9t
X2Nsb3NlLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3JhbmRvbSA9IHsK
PiArCS5kZXZvcHMgPSAmcmFuZG9tX2Rldm9wcywKPiArCS5kZXZzeiA9IDAsCj4gKwkubmFtZSA9
IERFVl9SQU5ET01fTkFNRQo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3Vy
YW5kb20gPSB7Cj4gKwkuZGV2b3BzID0gJnJhbmRvbV9kZXZvcHMsCj4gKwkuZGV2c3ogPSAwLAo+
ICsJLm5hbWUgPSBERVZfVVJBTkRPTV9OQU1FCj4gK307Cj4gKwo+ICtfX2NvbnN0cnVjdG9yX3By
aW8oMTAyKSBzdGF0aWMgdm9pZCBfdWtfZGV2X3N3cmFuZF9jdG9yKHZvaWQpCj4gK3sKPiArCXN0
cnVjdCBkZXZpY2UgKmRldjsKPiArCj4gKwl1a19wcl9pbmZvKCJBZGQgL2Rldi9yYW5kb20gYW5k
IC9kZXYvdXJhbmRvbVxuIik7CgpJIHdvdWxkIHN1Z2dlc3QgdG8gcGhyYXNlIHRoZSBtZXNzYWdl
IHdpdGg6CnVrX3ByX2luZm8oIlJlZ2lzdGVyICclcycgYW5kICclcycgdG8gZGV2ZnNcbiIsCgkJ
REVWX1JBTkRPTV9OQU1FLCBERVZfVVJBTkRPTV9OQU1FKTsKCj4gKwo+ICsJLyogcmVnaXN0ZXIg
L2Rldi91cmFuZG9tICovCj4gKwlkZXYgPSBkZXZpY2VfY3JlYXRlKCZkcnZfdXJhbmRvbSwgREVW
X1VSQU5ET01fTkFNRSwgRF9DSFIpOwo+ICsJaWYgKGRldiA9PSBOVUxMKQo+ICsJCXVrX3ByX2lu
Zm8oIkZhaWxlZCB0byByZWdpc3RlciAvZGV2L3VyYW5kb21cbiIpOwoKSW4gdGhlIGVycm9yIGNh
c2UsIHByaW50IGFuIGVycm9yIG1lc3NhZ2U6CnVrX3ByX2VycigiRmFpbGVkIHRvIHJlZ2lzdGVy
ICclcycgdG8gZGV2ZnNcbiIsIERFVl9VUkFORE9NX05BTUUpOwoKPiArCj4gKwkvKiByZWdpc3Rl
ciAvZGV2L3JhbmRvbSAqLwo+ICsJZGV2ID0gZGV2aWNlX2NyZWF0ZSgmZHJ2X3JhbmRvbSwgREVW
X1JBTkRPTV9OQU1FLCBEX0NIUik7Cj4gKwlpZiAoZGV2ID09IE5VTEwpCj4gKwkJdWtfcHJfaW5m
bygiRmFpbGVkIHRvIHJlZ2lzdGVyIC9kZXYvcmFuZG9tXG4iKTsKClNpbWlsYXIsIGhlcmUuCj4g
K30KPiAKClRoYW5rcywKClNpbW9uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 12:39:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 12:39: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 1hblUQ-0006tv-SS; Fri, 14 Jun 2019 12:39: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=zlcS=UN=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hblUP-0006tq-DQ
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 12:39:29 +0000
X-Inumbo-ID: 70923b10-8ea1-11e9-8422-2769731c9a11
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 70923b10-8ea1-11e9-8422-2769731c9a11;
 Fri, 14 Jun 2019 12:39:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E450D105278;
 Fri, 14 Jun 2019 14:39:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ltNtXExpVGZa; Fri, 14 Jun 2019 14:39:23 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id BFE7A10514B;
 Fri, 14 Jun 2019 14:39:23 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 14 Jun 2019 14:39:23
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529084156.20227-1-nicolescu.roxana1996@gmail.com>
Message-ID: <4ce4ba91-29c6-ee70-ae7e-71d45f037e90@neclab.eu>
Date: Fri, 14 Jun 2019 14:39:22 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190529084156.20227-1-nicolescu.roxana1996@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 08/17] plat/xen/drivers/blk:
 Configure blkfront queue
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGV5IFJveGFuYSwKCkkgaGF2ZSBvbmUgY29tbWVudCB0byB0aGlzIHBhdGNoLiBJIG5vdGljZWQg
aXQgd2hpbGUgdGVzdGluZyB5b3VyIEFQSS4KClRoYW5rcywKClNpbW9uCgpPbiAyOS4wNS4xOSAx
MDo0MSwgUm94YW5hIE5pY29sZXNjdSB3cm90ZToKPiBCbGtmcm9udCBxdWV1ZXMgdXNlIFhlbiBz
aGFyZWQgcmluZ3MuCj4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBhbGxvY2F0aW9uIGFuZCBp
bml0aWFsaXphdGlvbiBvZiB0aGUgc2hhcmVkCj4gcmluZywgYW5kIGFsc28gYWRkcyB0aGUgZXZl
bnQtaGFuZGxlciBmb3IgcXVldWUgbm90aWZpY2F0aW9uLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJv
eGFuYSBOaWNvbGVzY3UgPG5pY29sZXNjdS5yb3hhbmExOTk2QGdtYWlsLmNvbT4KPiAtLS0KPiAg
IHBsYXQveGVuL2RyaXZlcnMvYmxrL2Jsa2Zyb250LmMgfCAxMzkgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwo+ICAgcGxhdC94ZW4vZHJpdmVycy9ibGsvYmxrZnJvbnQu
aCB8ICAxMSArKysrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspCj4gCj4g
ZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvYmxrL2Jsa2Zyb250LmMgYi9wbGF0L3hlbi9k
cml2ZXJzL2Jsay9ibGtmcm9udC5jCj4gaW5kZXggODc5OTE5MDkuLjljY2QyMTEzIDEwMDY0NAo+
IC0tLSBhL3BsYXQveGVuL2RyaXZlcnMvYmxrL2Jsa2Zyb250LmMKPiArKysgYi9wbGF0L3hlbi9k
cml2ZXJzL2Jsay9ibGtmcm9udC5jCj4gQEAgLTU1LDYgKzU1LDE0MiBAQAo+ICAgc3RhdGljIHN0
cnVjdCB1a19hbGxvYyAqZHJ2X2FsbG9jYXRvcjsKPiAgIAo+ICAgCj4gK3N0YXRpYyBpbnQgYmxr
ZnJvbnRfcmluZ19pbml0KHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKnF1ZXVlKQo+ICt7Cj4gKwlz
dHJ1Y3QgYmxraWZfc3JpbmcgKnNyaW5nID0gTlVMTDsKPiArCXN0cnVjdCBibGtmcm9udF9kZXYg
KmRldjsKPiArCj4gKwlVS19BU1NFUlQocXVldWUpOwo+ICsJZGV2ID0gcXVldWUtPmRldjsKPiAr
CXNyaW5nID0gdWtfbWFsbG9jX3BhZ2UocXVldWUtPmEpOwo+ICsJaWYgKCFzcmluZykKPiArCQly
ZXR1cm4gLUVOT01FTTsKPiArCj4gKwltZW1zZXQoc3JpbmcsIDAsIFBBR0VfU0laRSk7Cj4gKwlT
SEFSRURfUklOR19JTklUKHNyaW5nKTsKPiArCUZST05UX1JJTkdfSU5JVCgmcXVldWUtPnJpbmcs
IHNyaW5nLCBQQUdFX1NJWkUpOwo+ICsKPiArCXF1ZXVlLT5yaW5nX3JlZiA9IGdudHRhYl9ncmFu
dF9hY2Nlc3MoZGV2LT54ZW5kZXYtPm90aGVyZW5kX2lkLAo+ICsJCQl2aXJ0X3RvX21mbihzcmlu
ZyksIDApOwo+ICsJVUtfQVNTRVJUKHF1ZXVlLT5yaW5nX3JlZiAhPSBHUkFOVF9JTlZBTElEX1JF
Rik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGJsa2Zyb250X3Jp
bmdfZmluaShzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlICpxdWV1ZSkKPiArewo+ICsJaW50IHJjOwo+
ICsKPiArCWlmIChxdWV1ZS0+cmluZ19yZWYgIT0gR1JBTlRfSU5WQUxJRF9SRUYpIHsKPiArCQly
YyA9IGdudHRhYl9lbmRfYWNjZXNzKHF1ZXVlLT5yaW5nX3JlZik7Cj4gKwkJVUtfQVNTRVJUKHJj
KTsKPiArCX0KPiArCj4gKwlpZiAocXVldWUtPnJpbmcuc3JpbmcgIT0gTlVMTCkKPiArCQl1a19m
cmVlX3BhZ2UocXVldWUtPmEsIHF1ZXVlLT5yaW5nLnNyaW5nKTsKPiArfQo+ICsKPiArLyogSGFu
ZGxlciBmb3IgZXZlbnQgY2hhbm5lbCBub3RpZmljYXRpb25zICovCj4gK3N0YXRpYyB2b2lkIGJs
a2Zyb250X2hhbmRsZXIoZXZ0Y2huX3BvcnRfdCBwb3J0IF9fdW51c2VkLAo+ICsJCXN0cnVjdCBf
X3JlZ3MgKnJlZ3MgX191bnVzZWQsIHZvaWQgKmFyZykKPiArewo+ICsJc3RydWN0IHVrX2Jsa2Rl
dl9xdWV1ZSAqcXVldWU7Cj4gKwo+ICsJVUtfQVNTRVJUKGFyZyk7Cj4gKwlxdWV1ZSA9IChzdHJ1
Y3QgdWtfYmxrZGV2X3F1ZXVlICopYXJnOwo+ICsJdWtfYmxrZGV2X2Rydl9xdWV1ZV9ldmVudCgm
cXVldWUtPmRldi0+YmxrZGV2LCBxdWV1ZS0+cXVldWVfaWQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg
c3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqYmxrZnJvbnRfcXVldWVfc2V0dXAoc3RydWN0IHVrX2Js
a2RldiAqYmxrZGV2LAo+ICsJCXVpbnQxNl90IHF1ZXVlX2lkLAo+ICsJCXVpbnQxNl90IG5iX2Rl
c2MgX191bnVzZWQsCj4gKwkJY29uc3Qgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZV9jb25mICpxdWV1
ZV9jb25mKQo+ICt7Cj4gKwlzdHJ1Y3QgYmxrZnJvbnRfZGV2ICpkZXY7Cj4gKwlzdHJ1Y3QgdWtf
YmxrZGV2X3F1ZXVlICpxdWV1ZTsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCVVLX0FTU0VSVChi
bGtkZXYgIT0gTlVMTCk7Cj4gKwo+ICsJZGV2ID0gdG9fYmxrZnJvbnQoYmxrZGV2KTsKPiArCWlm
IChxdWV1ZV9pZCA+PSBkZXYtPm5iX3F1ZXVlcykgewo+ICsJCXVrX3ByX2VycigiSW52YWxpZCBx
dWV1ZSBpZGVudGlmaWVyOiAlIl9fUFJJdTE2IlxuIiwgcXVldWVfaWQpOwo+ICsJCXJldHVybiBF
UlIyUFRSKC1FSU5WQUwpOwo+ICsJfQo+ICsKPiArCXF1ZXVlID0gJmRldi0+cXVldWVzW3F1ZXVl
X2lkXTsKPiArCXF1ZXVlLT5hID0gcXVldWVfY29uZi0+YTsKPiArCXF1ZXVlLT5xdWV1ZV9pZCA9
IHF1ZXVlX2lkOwo+ICsJcXVldWUtPmRldiA9IGRldjsKPiArCWVyciA9IGJsa2Zyb250X3Jpbmdf
aW5pdChxdWV1ZSk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gaW5p
dCByaW5nOiAlZC5cbiIsIGVycik7Cj4gKwkJcmV0dXJuIEVSUjJQVFIoZXJyKTsKPiArCX0KPiAr
Cj4gKwllcnIgPSBldnRjaG5fYWxsb2NfdW5ib3VuZChkZXYtPnhlbmRldi0+b3RoZXJlbmRfaWQs
Cj4gKwkJCWJsa2Zyb250X2hhbmRsZXIsIHF1ZXVlLAo+ICsJCQkmcXVldWUtPmV2dGNobik7Cj4g
KwlpZiAoZXJyKSB7Cj4gKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIGV2ZW50LWNoYW5u
ZWw6ICVkLlxuIiwgZXJyKTsKPiArCQllcnIgKj0gLTE7Cj4gKwkJZ290byBlcnJfb3V0Owo+ICsJ
fQo+ICsKPiArCXJldHVybiBxdWV1ZTsKPiArCj4gK2Vycl9vdXQ6Cj4gKwlibGtmcm9udF9yaW5n
X2ZpbmkocXVldWUpOwo+ICsJdWtfZnJlZShkcnZfYWxsb2NhdG9yLCBxdWV1ZSk7Cj4gKwlyZXR1
cm4gRVJSMlBUUihlcnIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGJsa2Zyb250X3F1ZXVlX3Jl
bGVhc2Uoc3RydWN0IHVrX2Jsa2RldiAqYmxrZGV2LAo+ICsJCXVpbnQxNl90IHF1ZXVlX2lkKQo+
ICt7Cj4gKwlzdHJ1Y3QgYmxrZnJvbnRfZGV2ICpkZXY7Cj4gKwlzdHJ1Y3QgdWtfYmxrZGV2X3F1
ZXVlICpxdWV1ZTsKPiArCj4gKwlVS19BU1NFUlQoYmxrZGV2ICE9IE5VTEwpOwo+ICsJZGV2ID0g
dG9fYmxrZnJvbnQoYmxrZGV2KTsKPiArCj4gKwlpZiAocXVldWVfaWQgPj0gZGV2LT5uYl9xdWV1
ZXMpIHsKPiArCQl1a19wcl9lcnIoIkludmFsaWQgcXVldWUgaWRlbnRpZmllcjogJSJfX1BSSXUx
NiJcbiIsIHF1ZXVlX2lkKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlxdWV1
ZSA9ICZkZXYtPnF1ZXVlc1txdWV1ZV9pZF07Cj4gKwltYXNrX2V2dGNobihxdWV1ZS0+ZXZ0Y2hu
KTsKPiArCXVuYmluZF9ldnRjaG4ocXVldWUtPmV2dGNobik7Cj4gKwlibGtmcm9udF9yaW5nX2Zp
bmkocXVldWUpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGJsa2Zy
b250X3F1ZXVlX2dldF9pbmZvKHN0cnVjdCB1a19ibGtkZXYgKmJsa2RldiwKPiArCQl1aW50MTZf
dCBxdWV1ZV9pZCwKPiArCQlzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVlX2luZm8gKnFpbmZvKQo+ICt7
Cj4gKwlzdHJ1Y3QgYmxrZnJvbnRfZGV2ICpkZXY7Cj4gKwlzdHJ1Y3QgdWtfYmxrZGV2X3F1ZXVl
ICpxdWV1ZTsKPiArCj4gKwlVS19BU1NFUlQoYmxrZGV2KTsKPiArCVVLX0FTU0VSVChxaW5mbyk7
Cj4gKwo+ICsJZGV2ID0gdG9fYmxrZnJvbnQoYmxrZGV2KTsKPiArCWlmIChxdWV1ZV9pZCA+PSBk
ZXYtPm5iX3F1ZXVlcykgewo+ICsJCXVrX3ByX2VycigiSW52YWxpZCBxdWV1ZSBpZGVudGlmaWVy
OiAlIl9fUFJJdTE2IlxuIiwgcXVldWVfaWQpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+
ICsKPiArCXF1ZXVlID0gJmRldi0+cXVldWVzW3F1ZXVlX2lkXTsKPiArCXFpbmZvLT5uYl9taW4g
PSBSSU5HX1NJWkUoJnF1ZXVlLT5yaW5nKTsKPiArCXFpbmZvLT5uYl9tYXggPSBSSU5HX1NJWkUo
JnF1ZXVlLT5yaW5nKTsKPiArCXFpbmZvLT5uYl9pc19wb3dlcl9vZl90d28gPSAxOwoKVGhpcyBx
dWV1ZV9pbmZvIGludGVyZmFjZSBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYmVmb3JlIHNvbWVv
bmUgZG9lcyBhIApxdWV1ZV9jb25maWd1cmUuIFRoZSBpbmZvcm1hdGlvbiBoZXJlIHNob3VsZCBy
ZXBvcnQgdGhlIGRyaXZlciAKbGltaXRhdGlvbnMuIFByb2JhYmx5LCBibGtmcm9udCBoYXMgc29t
ZSBzdGF0aWMgbGltaXRpbmcgbnVtYmVyczogSSBhbSAKcHJldHR5IHN1cmUgdGhhdCBuYl9taW4g
c2hvdWxkIGJlIDEuIEl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcmVwb3J0IAp0aGUgY3VycmVu
dCByaW5nIHNpemUgc2luY2UgdGhlIHF1ZXVlIG1heSBub3QgY29uZmlndXJlZCBhdCB0aGlzIHBv
aW50IApvZiB0aW1lLgoKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQg
YmxrZnJvbnRfY29uZmlndXJlKHN0cnVjdCB1a19ibGtkZXYgKmJsa2RldiwKPiAgIAkJY29uc3Qg
c3RydWN0IHVrX2Jsa2Rldl9jb25mICpjb25mKQo+ICAgewo+IEBAIC0xMTUsNiArMjUxLDkgQEAg
c3RhdGljIHZvaWQgYmxrZnJvbnRfZ2V0X2luZm8oc3RydWN0IHVrX2Jsa2RldiAqYmxrZGV2LAo+
ICAgc3RhdGljIGNvbnN0IHN0cnVjdCB1a19ibGtkZXZfb3BzIGJsa2Zyb250X29wcyA9IHsKPiAg
IAkuZ2V0X2luZm8gPSBibGtmcm9udF9nZXRfaW5mbywKPiAgIAkuZGV2X2NvbmZpZ3VyZSA9IGJs
a2Zyb250X2NvbmZpZ3VyZSwKPiArCS5xdWV1ZV9nZXRfaW5mbyA9IGJsa2Zyb250X3F1ZXVlX2dl
dF9pbmZvLAo+ICsJLnF1ZXVlX3NldHVwID0gYmxrZnJvbnRfcXVldWVfc2V0dXAsCj4gKwkucXVl
dWVfcmVsZWFzZSA9IGJsa2Zyb250X3F1ZXVlX3JlbGVhc2UsCj4gICAJLmRldl9jbG9zZSA9IGJs
a2Zyb250X2Nsb3NlLAo+ICAgfTsKPiAgIAo+IGRpZmYgLS1naXQgYS9wbGF0L3hlbi9kcml2ZXJz
L2Jsay9ibGtmcm9udC5oIGIvcGxhdC94ZW4vZHJpdmVycy9ibGsvYmxrZnJvbnQuaAo+IGluZGV4
IDU1M2ExMTE3Li42NTZmNzg0NSAxMDA2NDQKPiAtLS0gYS9wbGF0L3hlbi9kcml2ZXJzL2Jsay9i
bGtmcm9udC5oCj4gKysrIGIvcGxhdC94ZW4vZHJpdmVycy9ibGsvYmxrZnJvbnQuaAo+IEBAIC00
MywxMCArNDMsMjEgQEAKPiAgICAqLwo+ICAgI2luY2x1ZGUgPHVrL2Jsa2Rldi5oPgo+ICAgCj4g
KyNpbmNsdWRlIDx4ZW4vaW8vYmxraWYuaD4KPiArI2luY2x1ZGUgPGNvbW1vbi9nbnR0YWIuaD4K
PiArI2luY2x1ZGUgPGNvbW1vbi9ldmVudHMuaD4KPiArCj4gKwo+ICAgLyoKPiAgICAqIFN0cnVj
dHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgcXVldWUgdXNlZCBmb3IgYm90aCByZXF1ZXN0cyBhbmQg
cmVzcG9uc2VzCj4gICAgKi8KPiAgIHN0cnVjdCB1a19ibGtkZXZfcXVldWUgewo+ICsJLyogRnJv
bnRfcmluZyBzdHJ1Y3R1cmUgKi8KPiArCXN0cnVjdCBibGtpZl9mcm9udF9yaW5nIHJpbmc7Cj4g
KwkvKiBHcmFudCByZWYgcG9pbnRpbmcgYXQgdGhlIGZyb250IHJpbmcuICovCj4gKwlncmFudF9y
ZWZfdCByaW5nX3JlZjsKPiArCS8qIEV2ZW50IGNoYW5uZWwgZm9yIHRoZSBmcm9udCByaW5nLiAq
Lwo+ICsJZXZ0Y2huX3BvcnRfdCBldnRjaG47Cj4gICAJLyogQWxsb2NhdG9yIGZvciB0aGlzIHF1
ZXVlLiAqLwo+ICAgCXN0cnVjdCB1a19hbGxvYyAqYTsKPiAgIAkvKiBUaGUgbGlidWtibGtkZXYg
cXVldWUgaWRlbnRpZmllciAqLwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 15:35:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 15:35: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 1hboF2-0006QI-Po; Fri, 14 Jun 2019 15:35:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=4yQK=UN=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hboF1-0006QA-C6
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 15:35:47 +0000
X-Inumbo-ID: 12a8c5aa-8eba-11e9-8ae8-bbda9d1d7242
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 12a8c5aa-8eba-11e9-8ae8-bbda9d1d7242;
 Fri, 14 Jun 2019 15:35:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B037FF2052;
 Fri, 14 Jun 2019 17:35:43 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id jsrm7Di2Xc9K; Fri, 14 Jun 2019 17:35:43 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 85EE2F204F;
 Fri, 14 Jun 2019 17:35:37 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Fri, 14 Jun 2019 17:35:37
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/PTHREADPOOL PATCH v2 3/3] Initial port of
 pthreadpool to Unikraft
Thread-Index: AQHVIgpt+fYzmxqSokmp7+VazCKtwKabSYoA
Date: Fri, 14 Jun 2019 15:35:37 +0000
Message-ID: <7F833AAC-ED9E-4C6B-9B2C-51095C94B534@neclab.eu>
References: <20190613170644.14062-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190613170644.14062-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190613170644.14062-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.213]
Content-ID: <DE18EC91F3A83D4FB3395665F8C185D6@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREADPOOL PATCH v2 3/3] Initial port
 of pthreadpool to Unikraft
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UGF0aCBsb29rcyBnb29kLCB0aGFua3MuDQoNCi0tIEZlbGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVs
aXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KDQrvu79PbiAxMy4wNi4xOSwgMTk6
MDcsICJWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPiB3cm90ZToNCg0KICAgIFRoaXMgaXMgb3VyIGluaXRpYWwgcG9ydCBvZiBm
cDE2IHRvIFVuaWtyYWZ0IGFzIGFuIGV4dGVybmFsIGxpYnJhcnkuIExpYmZ4ZGl2DQogICAgYW5k
IHB0aHJlYWRzIGFyZSByZXF1aXJlZC4gV2hlbiBhZGRpbmcgdGhlIGxpYnJhcnkgdG8gdGhlIGRl
cGVuZGVuY3kgbGlzdCBpdA0KICAgIHNob3VsZCBzdGF5IGFmdGVyIGxpYmZ4ZGl2Lg0KICAgIChl
LmcuIC4uLjokKFVLX0xJQlMpL2xpYnVud2luZDokKFVLX0xJQlMpL2NvbXBpbGVyLXJ0OiQoVUtf
TElCUykvbGliY3h4YWJpOg0KICAgICQoVUtfTElCUykvbGliY3h4OiQoVUtfTElCUykvcHRocmVh
ZC1lbWJlZGRlZDokKFVLX0xJQlMpL25ld2xpYjoNCiAgICAkKFVLX0xJQlMpL2Z4ZGl2OihVS19M
SUJTKS9wdGhyZWFkcG9vbDouLi4pDQogICAgDQogICAgU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgIC0tLQ0K
ICAgICBDb25maWcudWsgICB8ICA2ICsrKysrDQogICAgIE1ha2VmaWxlLnVrIHwgNzYgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAgMiBm
aWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBD
b25maWcudWsNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrDQogICAgDQogICAg
ZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQogICAgaW5kZXggMDAwMDAwMC4uMzg1ZTljNg0KICAgIC0tLSAvZGV2L251bGwNCiAgICAr
KysgYi9Db25maWcudWsNCiAgICBAQCAtMCwwICsxLDYgQEANCiAgICArbWVudWNvbmZpZyBMSUJQ
VEhSRUFEUE9PTA0KICAgICsgICAgYm9vbCAicHRocmVhZHBvb2wgLSBwdGhyZWFkLWJhc2VkIHRo
cmVhZCBwb29sIGZvciBDL0MrKyINCiAgICArICAgIHNlbGVjdCBMSUJGWERJVg0KICAgICsgICAg
c2VsZWN0IExJQlBUSFJFQURfRU1CRURERUQNCiAgICArICAgIGRlZmF1bHQgbg0KICAgICsNCiAg
ICBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KICAgIG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uOGZhNDI2Mw0KICAgIC0tLSAvZGV2L251bGwN
CiAgICArKysgYi9NYWtlZmlsZS51aw0KICAgIEBAIC0wLDAgKzEsNzYgQEANCiAgICArIyAgbGli
cHRocmVhZHBvb2wgY29uZmlnIGZpbGUNCiAgICArIw0KICAgICsjICBBdXRob3JzOiBWbGFkLUFu
ZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgKyMN
CiAgICArIyAgQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1
Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAgICArIw0KICAgICsjICBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQN
CiAgICArIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zDQogICAgKyMgIGFyZSBtZXQ6DQogICAgKyMNCiAgICArIyAgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQNCiAgICArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAgICsjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICAgICsjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlDQogICAgKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogICAgKyMgIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCiAgICAr
IyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20NCiAgICArIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgICArIw0KICAgICsjICBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUyBJUyINCiAgICArIyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICAgICsjICBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQ0KICAgICsjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFDQogICAgKyMgIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCiAgICAr
IyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YNCiAgICArIyAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogICAgKyMgIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElODQogICAgKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQogICAgKyMgIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
DQogICAgKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAgICsjDQogICAgKyMgIFRI
SVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQog
ICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIExpYnJhcnkgcmVnaXN0
cmF0aW9uDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyQoZXZhbCAkKGNhbGwg
YWRkbGliX3MsbGlicHRocmVhZHBvb2wsJChDT05GSUdfTElCUFRIUkVBRFBPT0wpKSkNCiAgICAr
DQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgKyMgU291cmNlcw0KICAgICsjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJQVEhSRUFEUE9PTF9WRVJTSU9OPW1hc3Rlcg0K
ICAgICtMSUJQVEhSRUFEUE9PTF9VUkw9aHR0cHM6Ly9naXRodWIuY29tL01hcmF0eXN6Y3phL3B0
aHJlYWRwb29sL2FyY2hpdmUvbWFzdGVyLnppcA0KICAgICtMSUJQVEhSRUFEUE9PTF9QQVRDSERJ
Uj0kKExJQlBUSFJFQURQT09MX0JBU0UpL3BhdGNoZXMNCiAgICArJChldmFsICQoY2FsbCBmZXRj
aCxsaWJwdGhyZWFkcG9vbCwkKExJQlBUSFJFQURQT09MX1VSTCkpKQ0KICAgICsNCiAgICArIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBIZWxwZXJzDQogICAgKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQogICAgK0xJQlBUSFJFQURQT09MX1NVQkRJUj1wdGhyZWFkcG9vbC1tYXN0ZXIN
CiAgICArTElCUFRIUkVBRFBPT0xfU1JDPSQoTElCUFRIUkVBRFBPT0xfT1JJR0lOKS8kKExJQlBU
SFJFQURQT09MX1NVQkRJUikNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog
ICAgKyMgTGlicmFyeSBpbmNsdWRlcw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAg
ICtDSU5DTFVERVMtJChDT05GSUdfTElCUFRIUkVBRFBPT0wpICs9IC1JJChMSUJQVEhSRUFEUE9P
TF9TUkMpL2luY2x1ZGUNCiAgICArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlBUSFJFQURQT09MKSAr
PSAtSSQoTElCUFRIUkVBRFBPT0xfQkFTRSkvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURFUy0kKENP
TkZJR19MSUJQVEhSRUFEUE9PTCkgKz0gLUkkKExJQlBUSFJFQURQT09MX1NSQykvaW5jbHVkZQ0K
ICAgICtDWFhJTkNMVURFUy0kKENPTkZJR19MSUJQVEhSRUFEUE9PTCkgKz0gLUkkKExJQlBUSFJF
QURQT09MX0JBU0UpL2luY2x1ZGUNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQogICAgKyMgR2xvYmFsIGZsYWdzDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAg
KyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sg
bmVhdGVyDQogICAgK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25v
LXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwJXA0KICAgICstV25vLXVudXNlZC1idXQtc2V0
LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRzCQlcDQogICAg
Ky1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdu
by11bmluaXRpYWxpemVkCQlcDQogICAgKy1Xbm8tYXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5p
bml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZC12YWx1ZQlcDQogICAgKy1X
bm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rpb24t
ZGVjbGFyYXRpb24JCVwNCiAgICArLVduby1taXNzaW5nLWJyYWNlcyAtV25vLWVuZGlmLWxhYmVs
cyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQlcDQogICAgKy1Xbm8taW1wbGljaXQtZnVu
Y3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0cyAtV25vLXNpZ24tY29tcGFyZQ0KICAg
ICtMSUJQVEhSRUFEUE9PTF9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICAr
TElCUFRIUkVBRFBPT0xfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICAr
DQogICAgK0xJQlBUSFJFQURQT09MX1NSQ1MteSArPSAkKExJQlBUSFJFQURQT09MX1NSQykvc3Jj
L3RocmVhZHBvb2wtcHRocmVhZHMuYw0KICAgICsNCiAgICAtLSANCiAgICAyLjIxLjANCiAgICAN
CiAgICANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 14 15:43:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 14 Jun 2019 15:43: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 1hboMh-0007cL-2F; Fri, 14 Jun 2019 15:43:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=4yQK=UN=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hboMg-0007cG-60
 for minios-devel@lists.xen.org; Fri, 14 Jun 2019 15:43:42 +0000
X-Inumbo-ID: 2dbc5d6d-8ebb-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2dbc5d6d-8ebb-11e9-8980-bc764e045a96;
 Fri, 14 Jun 2019 15:43:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 91E531052C7;
 Fri, 14 Jun 2019 17:43:38 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IHAMUfKMzQTC; Fri, 14 Jun 2019 17:43:38 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6EAF2105161;
 Fri, 14 Jun 2019 17:43:38 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Fri, 14 Jun 2019 17:43:38
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/NEWLIB PATCH 0/3] Add functions needed by the Python
 socketmodule
Thread-Index: AQHVH/c1M8oj+qc6rEqloAFzYZBD8qaZ0voAgAF89IA=
Date: Fri, 14 Jun 2019 15:43:37 +0000
Message-ID: <97E42C23-D5B3-4233-955A-F8D1F1623EDC@neclab.eu>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <c3694175-064d-3103-2f6f-a3f03cc3077a@stud.acs.upb.ro>
In-Reply-To: <c3694175-064d-3103-2f6f-a3f03cc3077a@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.213]
Content-ID: <91C6CEF73D95D34CA863D51D73FA45D5@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 0/3] Add functions needed
 by the Python socketmodule
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwgT2suIEknbSBhc3N1bWluZyBieSAicGF0Y2giIHlvdSBtZWFuIHRoZSBlbnRpcmUg
c2VyaWVzLiBJJ2xsIGlnbm9yZSBpdC4NCg0KLS0gRmVsaXBlDQoNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KRHIuIEZlbGlwZSBI
dWljaQ0KQ2hpZWYgUmVzZWFyY2hlciwgU3lzdGVtcyBhbmQgTWFjaGluZSBMZWFybmluZyBHcm91
cA0KTkVDIExhYm9yYXRvcmllcyBFdXJvcGUgR21iSA0KS3VyZnVlcnN0ZW5hbmxhZ2UgMzYsIEQt
NjkxMTUgSGVpZGVsYmVyZw0KVGVsLiAgKzQ5DQooMCk2MjIxIDQzNDItMjQxDQpGYXg6ICArNDkN
CigwKTYyMjEgNDM0Mi0xNTUNCiANCmUtbWFpbDoNCmZlbGlwZS5odWljaUBuZWNsYWIuZXUNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KUmVnaXN0ZXJlZCBhdCBBbXRzZ2VyaWNodCBNYW5uaGVpbSwgR2VybWFueSwgSFJCNzI4NTU4
DQoNCu+7v09uIDEzLjA2LjE5LCAxOTowMCwgIlZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSIg
PHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOg0KDQogICAgSGV5LA0K
ICAgIA0KICAgIFBsZWFzZSBkaXNjYXJkIHRoaXMgcGF0Y2ggYXMgYWxsIHRoZSBjaGFuZ2VzIHNo
b3VsZCBhY3R1YWxseSBnbyB0byBMV0lQLg0KICAgIA0KICAgIFRoYW5rcywNCiAgICANCiAgICBW
bGFkDQogICAgDQogICAgT24gNi8xMS8xOSA0OjQ0IEFNLCBWbGFkLUFuZHJlaSBCxIJET0lVICg3
ODY5Mikgd3JvdGU6DQogICAgPiBUaGlzIHBhdGNoIGFkZHMgdGhlIHByb3RvKiwgZ2V0aG9zdCos
IGdldHNlcnZyKiAgZnVuY3Rpb25zLiBUaGUgcHJvdG8qDQogICAgPiBmdW5jdGlvbnMgYXJlIGlt
cGxlbWVudGVkKHRha2VuIGZyb20gbXVzbCkgd2hlcmVhcyBnZXRob3N0KiBhbmQNCiAgICA+IGdl
dHNlcnZyKiBhcmUgc3R1YnMuDQogICAgPg0KICAgID4gVmxhZC1BbmRyZWkgQmFkb2l1ICgzKToN
CiAgICA+ICAgIEFkZCBwcm90byogZnVuY3Rpb25zDQogICAgPiAgICBBZGQgZ2V0aG9zdCogYW5k
IGdldHNlcnZyKiBzdHVicw0KICAgID4gICAgSW1wbGVtZW50IGdldGhvc3RuYW1lDQogICAgPg0K
ICAgID4gICBNYWtlZmlsZS51ayB8ICAgMiArDQogICAgPiAgIG5ldHdvcmsuYyAgIHwgIDQxICsr
KysrKysrKysrKysrKysrKysNCiAgICA+ICAgcHJvdG8uYyAgICAgfCAxMTMgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KICAgID4gICAzIGZpbGVz
IGNoYW5nZWQsIDE1NiBpbnNlcnRpb25zKCspDQogICAgPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBu
ZXR3b3JrLmMNCiAgICA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3RvLmMNCiAgICA+DQogICAg
DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:12:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:12: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 1hbwJV-00080I-BQ; Sat, 15 Jun 2019 00:12:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=912W=UO=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbwJT-00080D-Ry
 for minios-devel@lists.xenproject.org; Sat, 15 Jun 2019 00:12:55 +0000
X-Inumbo-ID: 50912d4d-8f02-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.50]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 50912d4d-8f02-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 00:12:52 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5035.eurprd01.prod.exchangelabs.com (20.177.211.138) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.13; Sat, 15 Jun
 2019 00:12:50 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Sat, 15 Jun 2019
 00:12:49 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
Thread-Index: AQHVISPT32t8vODXo0iXXGgCychBSqab29eA
Date: Sat, 15 Jun 2019 00:12:49 +0000
Message-ID: <e920db20-8908-3d8f-62b4-a89b14a10648@stud.acs.upb.ro>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
 <20190612131553.19420-2-felipe.huici@neclab.eu>
In-Reply-To: <20190612131553.19420-2-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR07CA0147.eurprd07.prod.outlook.com
 (2603:10a6:802:16::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 4f451e81-c81b-44c6-611c-08d6f1263381
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5035; 
x-ms-traffictypediagnostic: PR1PR01MB5035:
x-microsoft-antispam-prvs: <PR1PR01MB5035E3F4DBCA25AE28890816A6E90@PR1PR01MB5035.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4502;
x-forefront-prvs: 0069246B74
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(39840400004)(136003)(376002)(346002)(396003)(189003)(199004)(102836004)(486006)(186003)(26005)(66946007)(66476007)(66446008)(64756008)(81166006)(8676002)(73956011)(446003)(81156014)(2616005)(74482002)(229853002)(14454004)(11346002)(6486002)(6436002)(86362001)(256004)(2501003)(508600001)(476003)(31696002)(6246003)(53936002)(66066001)(6916009)(66556008)(5640700003)(305945005)(85182001)(2906002)(71200400001)(85202003)(71190400001)(2351001)(386003)(68736007)(7736002)(76176011)(6512007)(6506007)(6116002)(3846002)(53546011)(25786009)(5660300002)(52116002)(31686004)(8936002)(99286004)(786003)(316002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5035;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: UZjmNnRgmlY5sqlQ7NJqNc+lvKIYNEBd6YF5Ar47xTBf6nio23tSukPI2M/dnyIc5z3ml0/cWdnB1lZmO/RaC/4czhRbvLRiTzVbWXzLZIo/xUJZMfNyLY5eqkMxCoq9TU9AMmkiS9HU2/s9QUMqc9p7jO7h9ojkkUeDPYvBihTFr5pQHHjHIhKk6nL0vEa9pug75Dmuy0AaNQ6lrZrWgo6SviB2767RMOkOqVXtNCl4LoVSxDG7r4o+JuWvobSczCnpAkCh0D1hn9v0i2Iwj8tRw8VbOfSeEj7evlhus9Wc9Iy1oUbiAPIqwWEkyBVUFpkdcWU0AQCtNY6Ah+fh7rrm/frIA1vedwPON3C5y6OOcT1G9VZIHVw7DCUrMxMLr71tz5LGWUmPl2yo/tr0jCN+BeRsv0Tt22IdGYXgLoQ=
Content-ID: <2FAFD01C6D065D42AFAC8D4B610996AA@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 4f451e81-c81b-44c6-611c-08d6f1263381
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2019 00:12:49.8260 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5035
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IEZlbGlwZSwNCg0KVGhlIHBhdGNoIGxvb2tzIGdyZWF0LCB0aGFua3MhDQoNClZsYWQNCg0K
UmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdTx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5h
Y3MudXBiLnJvPg0KDQpPbiA2LzEyLzE5IDQ6MTUgUE0sIEZlbGlwZSBIdWljaSB3cm90ZToNCj4g
RnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+DQo+DQo+
IFNpZ25lZC1vZmYtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFi
LmV1Pg0KPiBTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIu
ZXU+DQo+IC0tLQ0KPiAgIGluY2x1ZGUvZW1taW50cmluLmggfCAgOSAtLS0tLS0tLS0NCj4gICBp
bmNsdWRlL3htbWludHJpbi5oIHwgMjEgKysrKysrKysrKysrKysrKysrKysrDQo+ICAgMiBmaWxl
cyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0t
Z2l0IGEvaW5jbHVkZS9lbW1pbnRyaW4uaCBiL2luY2x1ZGUvZW1taW50cmluLmgNCj4gaW5kZXgg
ODcwM2I5YS4uYzA1NzNhMSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9lbW1pbnRyaW4uaA0KPiAr
KysgYi9pbmNsdWRlL2VtbWludHJpbi5oDQo+IEBAIC00OTk5LDE1ICs0OTk5LDYgQEAgX21tX2Nh
c3RzaTEyOF9wZChfX20xMjhpIF9fYSkNCj4gICBleHRlcm4gIkMiIHsNCj4gICAjZW5kaWYNCj4g
ICANCj4gLS8vLyBJbmRpY2F0ZXMgdGhhdCBhIHNwaW4gbG9vcCBpcyBiZWluZyBleGVjdXRlZCBm
b3IgdGhlIHB1cnBvc2VzIG9mDQo+IC0vLy8gICAgb3B0aW1pemluZyBwb3dlciBjb25zdW1wdGlv
biBkdXJpbmcgdGhlIGxvb3AuDQo+IC0vLy8NCj4gLS8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmlu
Lmg+DQo+IC0vLy8NCj4gLS8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+
IFBBVVNFIDwvYz4gaW5zdHJ1Y3Rpb24uDQo+IC0vLy8NCj4gLXZvaWQgX21tX3BhdXNlKHZvaWQp
Ow0KPiAtDQo+ICAgI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQo+ICAgfSAvLyBleHRlcm4gIkMi
DQo+ICAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3htbWludHJpbi5oIGIvaW5jbHVk
ZS94bW1pbnRyaW4uaA0KPiBpbmRleCBlMjU0M2E3Li4yZGZhNGQ1IDEwMDY0NA0KPiAtLS0gYS9p
bmNsdWRlL3htbWludHJpbi5oDQo+ICsrKyBiL2luY2x1ZGUveG1taW50cmluLmgNCj4gQEAgLTI1
LDYgKzI1LDE1IEBADQo+ICAgI2RlZmluZSBfX1hNTUlOVFJJTl9IDQo+ICAgDQo+ICAgI2luY2x1
ZGUgPG1taW50cmluLmg+DQo+ICsvKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBmb3Ig
dGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovDQo+ICsjaWZkZWYgIF9fR05VQ19fDQo+ICsj
ZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywg
X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gKyNkZWZpbmUgX19ERUZBVUxU
X0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5s
aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gKyNlbHNlDQo+ICsjZGVmaW5lIF9fREVGQVVMVF9G
Tl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9f
dGFyZ2V0X18oInNzZTIiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpDQo+ICsjZGVmaW5l
IF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s
IF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJtbXgsc3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhf
Xyg2NCkpKQ0KPiArI2VuZGlmDQo+ICsNCj4gICANCj4gICB0eXBlZGVmIGludCBfX3Y0c2kgX19h
dHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KPiAgIHR5cGVkZWYgZmxvYXQgX192
NHNmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCj4gQEAgLTMwODYsNiAr
MzA5NSwxOCBAQCBkbyB7IFwNCj4gICAjZGVmaW5lIF9tXyBfbW1fDQo+ICAgI2RlZmluZSBfbV8g
X21tXw0KPiAgIA0KPiArLy8vIEluZGljYXRlcyB0aGF0IGEgc3BpbiBsb29wIGlzIGJlaW5nIGV4
ZWN1dGVkIGZvciB0aGUgcHVycG9zZXMgb2YNCj4gKy8vLyAgICBvcHRpbWl6aW5nIHBvd2VyIGNv
bnN1bXB0aW9uIGR1cmluZyB0aGUgbG9vcC4NCj4gKy8vLw0KPiArLy8vIFxoZWFkZXJmaWxlIDx4
ODZpbnRyaW4uaD4NCj4gKy8vLw0KPiArLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gUEFVU0UgPC9jPiBpbnN0cnVjdGlvbi4NCj4gKy8vLw0KPiArc3RhdGljIGlubGlu
ZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfbW1fcGF1c2Uodm9pZCkNCj4gK3sNCj4gKwlfX2J1
aWx0aW5faWEzMl9wYXVzZSgpOw0KPiArfQ0KPiArDQo+ICAgI3VuZGVmIF9fREVGQVVMVF9GTl9B
VFRSUw0KPiAgICN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+ICAgDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:15:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:15: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 1hbwMN-00083w-KE; Sat, 15 Jun 2019 00:15:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=u0DT=UO=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hbwMM-00083r-KU
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 00:15:54 +0000
X-Inumbo-ID: bc36eda7-8f02-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bc36eda7-8f02-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 00:15:53 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id u8so3845775wmm.1
 for <minios-devel@lists.xen.org>; Fri, 14 Jun 2019 17:15: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=ou6MQoU/D0NyixuSnoaHLjratK/qn/gfL0hwagSKsZw=;
 b=TgyDYLXxGowVWtoViK5Lyd/oofmaxzT54v+Cn8GQOIKjhm50U4nryE5/aUIRaiy0c1
 dSjaPBNzw8NDPK8wlC7TM0RygwRtK1YgDG7ls34NC8apE19oCxqGOcQ88sVlBAIOXrbE
 XOJf/GqZo7nBLvYr652lZvlBIKW7AVsORzTXf2T7fuxWKA5kEgFbSB4EXM9K0SGXIE0j
 zIImZSuGmtWR09aRWkOFoWkqePC+MURvx4FuDYdnR4G043R7T/AbW45eChnmTEXXTsLx
 4dJifIXtNCcFcqZX1EEWoXgGTAyGNtsmkW75sYeavA8paPH1C/fC3qnC4GjxTUh/v9V5
 2zrA==
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=ou6MQoU/D0NyixuSnoaHLjratK/qn/gfL0hwagSKsZw=;
 b=FeZdwY3U08eX1Mincj3hC3Agwg6GJiQsGuZLDGjWvoWjU9OmCc5lAw3wAF8V1dZl0Z
 oqQKMEaah/fiSzIzOycZSqllvkKMMPY1FIfQzCeb7CiUXL8MIvWCyFFH59xYC8fmu2zU
 CjIE7jLdKmGNjW/QI2PtZhYOxniG5USu6BlVmB1pk2TSQJ0JS18xDIGX94h14qJPsFyh
 I99Wl0q3YYt/SilP/iE+CFtKQ80VjF5SVWq31RyXT8jYUVOJ5MW1Qh3p848yB6RdAh5c
 mah6NLSPiWZcGDHM04a329jbax534ZLe7bqfQzDcE43udEn+HghAE1VplDktlXSshzA0
 ESzQ==
X-Gm-Message-State: APjAAAX9VccgYD+94CLOjoN9pMf5lcK6/MPb8lknVyIq2DIcf6pui9wh
 6O28xu42X+X2nGbHz+vO/XzmosKpKj8=
X-Google-Smtp-Source: APXvYqxm9nZn7ePUPISllZw8RBItTGUpHOMnIAdLPL9mg68bIck+xKeh07jLrh35riCY5xOseyrF/A==
X-Received: by 2002:a1c:ab42:: with SMTP id u63mr9812351wme.130.1560557751461; 
 Fri, 14 Jun 2019 17:15:51 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id o6sm4421138wmc.15.2019.06.14.17.15.50
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 14 Jun 2019 17:15:51 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 15 Jun 2019 03:15:29 +0300
Message-Id: <20190615001529.22460-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH] Provide gethostbyname and
 gethostbyname_r. Change broken link
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

RGVmaW5lIGdldGhvc3RieW5hbWUgYW5kIGdldGhvc3RieW5hbWVfciBhcyB0aGVpciBMV0lQIGNv
dW50ZXJwYXJ0cy4KVGhlIGRlZmluZXMgYXJlIGluIHBsYWNlIGluIG9yaWdpbi9uZXRkYi5oLCBi
dXQgdGhleSBhcmUgcHJvdGVjdGVkIGJ5CkxXSVBfQ09NUEFUX1NPQ0tFVFMsIHdoaWNoIGZvciB1
cyBpcyBkZWZpbmVkIGFzIDAgc2luY2Ugd2UgcHJvdmlkZQp3cmFwcGVycyBmb3IgbW9zdCBvZiBz
b2NrZXQuaCBmdW5jdGlvbnMuCgpDaGFuZ2UgYnJva2VuIGRvd25sb2FkIGxpbmsgZm9yIExXSVAu
CgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBnbWFpbC5jb20+
Ci0tLQogTWFrZWZpbGUudWsgICAgIHwgMiArLQogZXhwb3J0c3ltcy51ayAgIHwgMiArKwogaW5j
bHVkZS9uZXRkYi5oIHwgOCArKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25z
KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51
awppbmRleCBlN2I3Y2M2Li42ZGRiMTA1IDEwMDY0NAotLS0gYS9NYWtlZmlsZS51aworKysgYi9N
YWtlZmlsZS51awpAQCAtNDQsNyArNDQsNyBAQCAkKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYmx3
aXAsJChDT05GSUdfTElCTFdJUCkpKQogIyBTb3VyY2VzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwogTElCTFdJUF9aSVBOQU1FPWx3aXAtMi4xLjIKLUxJQkxXSVBfVVJMPWh0dHA6Ly9kb3dubG9h
ZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2VzL2x3aXAvJChMSUJMV0lQX1pJUE5BTUUpLnpp
cAorTElCTFdJUF9VUkw9aHR0cHM6Ly9kb3dubG9hZC5zYXZhbm5haC5nbnUub3JnL3JlbGVhc2Vz
L2x3aXAvJChMSUJMV0lQX1pJUE5BTUUpLnppcAogTElCTFdJUF9QQVRDSERJUj0kKExJQkxXSVBf
QkFTRSkvcGF0Y2hlcwogJChldmFsICQoY2FsbCBmZXRjaCxsaWJsd2lwLCQoTElCTFdJUF9VUkwp
KSkKICQoZXZhbCAkKGNhbGwgcGF0Y2gsbGlibHdpcCwkKExJQkxXSVBfUEFUQ0hESVIpLCQoTElC
TFdJUF9aSVBOQU1FKSkpCmRpZmYgLS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51
awppbmRleCAxNzIwZTAwLi4zNzA5MDRhIDEwMDY0NAotLS0gYS9leHBvcnRzeW1zLnVrCisrKyBi
L2V4cG9ydHN5bXMudWsKQEAgLTksNiArOSw4IEBAIGxpc3RlbgogbHdpcF9pb2N0bAogbHdpcF9o
dG9ubAogbHdpcF9odG9ucworbHdpcF9nZXRob3N0YnluYW1lCitsd2lwX2dldGhvc3RieW5hbWVf
cgogcG9sbAogcmVjdgogcmVjdmZyb20KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0ZGIuaCBiL2lu
Y2x1ZGUvbmV0ZGIuaAppbmRleCA2YmE2YWFkLi42ODM1NzBjIDEwMDY0NAotLS0gYS9pbmNsdWRl
L25ldGRiLmgKKysrIGIvaW5jbHVkZS9uZXRkYi5oCkBAIC0xLDMgKzEsMTEgQEAKKyNpZiAhKExX
SVBfQ09NUEFUX1NPQ0tFVFMpCisKKyNkZWZpbmUgZ2V0aG9zdGJ5bmFtZShuYW1lKSBsd2lwX2dl
dGhvc3RieW5hbWUobmFtZSkKKyNkZWZpbmUgZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsIHJldCwgYnVm
LCBidWZsZW4sIHJlc3VsdCwgaF9lcnJub3ApIFwKKyAgICAgICBsd2lwX2dldGhvc3RieW5hbWVf
cihuYW1lLCByZXQsIGJ1ZiwgYnVmbGVuLCByZXN1bHQsIGhfZXJybm9wKQorCisjZW5kaWYgLy8g
IShMV0lQX0NPTVBBVF9TT0NLRVRTKQorCiAjaW5jbHVkZSA8Y29tcGF0L3Bvc2l4L25ldGRiLmg+
CiAKIHN0cnVjdCBzZXJ2ZW50IHsKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:28:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:28: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 1hbwYE-0000Qf-I7; Sat, 15 Jun 2019 00:28: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=912W=UO=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbwYC-0000Pv-Rr
 for minios-devel@lists.xenproject.org; Sat, 15 Jun 2019 00:28:08 +0000
X-Inumbo-ID: 7021bcd8-8f04-11e9-8e20-c74772507456
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.85]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7021bcd8-8f04-11e9-8e20-c74772507456;
 Sat, 15 Jun 2019 00:28:04 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5017.eurprd01.prod.exchangelabs.com (20.177.211.24) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Sat, 15 Jun
 2019 00:28:02 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Sat, 15 Jun 2019
 00:28:02 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
Thread-Index: AQHVISPT32t8vODXo0iXXGgCychBSqab4BaA
Date: Sat, 15 Jun 2019 00:28:01 +0000
Message-ID: <37888586-440e-37bd-4032-157e922e2e61@stud.acs.upb.ro>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
 <20190612131553.19420-2-felipe.huici@neclab.eu>
In-Reply-To: <20190612131553.19420-2-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0013.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:800:d0::23) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9a1db017-39b2-4097-1542-08d6f128534b
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5017; 
x-ms-traffictypediagnostic: PR1PR01MB5017:
x-microsoft-antispam-prvs: <PR1PR01MB50174AA0F882DB6B9C8E39FCA6E90@PR1PR01MB5017.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:1247;
x-forefront-prvs: 0069246B74
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(979002)(396003)(346002)(39840400004)(136003)(376002)(366004)(199004)(189003)(316002)(305945005)(386003)(5640700003)(476003)(25786009)(6916009)(73956011)(66476007)(2906002)(31686004)(66066001)(486006)(7736002)(66946007)(76176011)(64756008)(102836004)(2501003)(446003)(6506007)(5660300002)(26005)(14454004)(508600001)(256004)(66556008)(52116002)(53546011)(99286004)(229853002)(6486002)(8676002)(68736007)(31696002)(53936002)(6436002)(786003)(6246003)(3846002)(86362001)(85182001)(71200400001)(6116002)(74482002)(6512007)(11346002)(66446008)(2616005)(85202003)(81166006)(8936002)(81156014)(186003)(2351001)(71190400001)(969003)(989001)(999001)(1009001)(1019001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5017;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: fS0qznXg9bA3pcas7w/FPE5lK62UXOIjURkfBhejuqIxZs3Onh/BEQhBG6k3frTFDnASlmIIf71jC17Z6YhwKElo9U3so0uTlmaIAgQWRvtyOQbrDOU4PF+vYKky2Y1X2uXItGRrF5buZTDErs622VZUNsvnoDSzWAw4FKTpzOW+Uuv0JS2+C5dM4u9QmHpfLc/dyVXAEeQtsa3gHROLW2QI5wwLNJYAjMXTLVoQ3NxiKJpWHbHmh+BN1RLnYpWBC0FUPn4EKZ2CLb91G03NznUxR9z3Wv2KyqAnC5Wq3O9M0tB2eHknxyC5LTE+nMENX1Q/nwZWNKfadlu7qkN4+kcXoRK1kX9TSYGaavOJN7imrdtLyGSLCTbiFcLs5WQ/gkwVrxh1YrDlFjyPT73fQtpfAlYJdBT5riML3Rm079g=
Content-ID: <737CC89D5D246040A15AFD00509E3940@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 9a1db017-39b2-4097-1542-08d6f128534b
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2019 00:28:02.0018 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5017
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

QWN0dWFsbHkgSSBoYXZlIGEgc21hbGwgY29tbWVudCBpbmxpbmUuDQoNClZsYWQNCg0KT24gNi8x
Mi8xOSA0OjE1IFBNLCBGZWxpcGUgSHVpY2kgd3JvdGU6DQo+IEZyb206IFNoYXJhbiBTYW50aGFu
YW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBTaGFy
YW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCj4gU2lnbmVkLW9mZi1i
eTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KPiAtLS0NCj4gICBpbmNs
dWRlL2VtbWludHJpbi5oIHwgIDkgLS0tLS0tLS0tDQo+ICAgaW5jbHVkZS94bW1pbnRyaW4uaCB8
IDIxICsrKysrKysrKysrKysrKysrKysrKw0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0
aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZW1taW50
cmluLmggYi9pbmNsdWRlL2VtbWludHJpbi5oDQo+IGluZGV4IDg3MDNiOWEuLmMwNTczYTEgMTAw
NjQ0DQo+IC0tLSBhL2luY2x1ZGUvZW1taW50cmluLmgNCj4gKysrIGIvaW5jbHVkZS9lbW1pbnRy
aW4uaA0KPiBAQCAtNDk5OSwxNSArNDk5OSw2IEBAIF9tbV9jYXN0c2kxMjhfcGQoX19tMTI4aSBf
X2EpDQo+ICAgZXh0ZXJuICJDIiB7DQo+ICAgI2VuZGlmDQo+ICAgDQo+IC0vLy8gSW5kaWNhdGVz
IHRoYXQgYSBzcGluIGxvb3AgaXMgYmVpbmcgZXhlY3V0ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZg0K
PiAtLy8vICAgIG9wdGltaXppbmcgcG93ZXIgY29uc3VtcHRpb24gZHVyaW5nIHRoZSBsb29wLg0K
PiAtLy8vDQo+IC0vLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiAtLy8vDQo+IC0vLy8g
VGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVVTRSA8L2M+IGluc3RydWN0
aW9uLg0KPiAtLy8vDQo+IC12b2lkIF9tbV9wYXVzZSh2b2lkKTsNCj4gLQ0KPiAgICNpZiBkZWZp
bmVkKF9fY3BsdXNwbHVzKQ0KPiAgIH0gLy8gZXh0ZXJuICJDIg0KPiAgICNlbmRpZg0KPiBkaWZm
IC0tZ2l0IGEvaW5jbHVkZS94bW1pbnRyaW4uaCBiL2luY2x1ZGUveG1taW50cmluLmgNCj4gaW5k
ZXggZTI1NDNhNy4uMmRmYTRkNSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS94bW1pbnRyaW4uaA0K
PiArKysgYi9pbmNsdWRlL3htbWludHJpbi5oDQo+IEBAIC0yNSw2ICsyNSwxNSBAQA0KPiAgICNk
ZWZpbmUgX19YTU1JTlRSSU5fSA0KPiAgIA0KPiAgICNpbmNsdWRlIDxtbWludHJpbi5oPg0KPiAr
LyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBmdW5jdGlvbnMgaW4gdGhp
cyBmaWxlLiAqLw0KPiArI2lmZGVmICBfX0dOVUNfXw0KPiArI2RlZmluZSBfX0RFRkFVTFRfRk5f
QVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf
X2FydGlmaWNpYWxfXykpDQo+ICsjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVggX19hdHRy
aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf
XykpDQo+ICsjZWxzZQ0KPiArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UyIiksIF9f
bWluX3ZlY3Rvcl93aWR0aF9fKDEyOCkpKQ0KPiArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNf
TU1YIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX25vZGVidWdfXywgX190YXJn
ZXRfXygibW14LHNzZTIiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oNjQpKSkNCj4gKyNlbmRpZg0K
PiArDQoNClRob3NlIG1hY3JvcyBzaG91bGQgYmUgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBwcmV2
aW91cyBjb21taXRbMV0uIEFmdGVyIA0KYXBwbHlpbmcgdGhpcyBwYXRjaCB3ZSBlbmQgdXAgd2l0
aCB0aGVtIGRlZmluZWQgdHdpY2UuDQoNClsxXSANCnhlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9
dW5pa3JhZnQvbGlicy9pbnRlbC1pbnRyaW5zaWNzLmdpdDthPWJsb2I7Zj1pbmNsdWRlL3htbWlu
dHJpbi5oO2g9ZTI1NDNhNzc5ZTA3YTI4MzA1N2Y0ZmNiZTQ1YTJhY2QxMGY2MmNjNDtoYj00ZGNm
YmMxZjVlNzlhMGUzOGY4YzBiYjYwNTIwYWRhNmJmNDg0ZWFjDQoNCj4gICANCj4gICB0eXBlZGVm
IGludCBfX3Y0c2kgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KPiAgIHR5
cGVkZWYgZmxvYXQgX192NHNmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsN
Cj4gQEAgLTMwODYsNiArMzA5NSwxOCBAQCBkbyB7IFwNCj4gICAjZGVmaW5lIF9tXyBfbW1fDQo+
ICAgI2RlZmluZSBfbV8gX21tXw0KPiAgIA0KPiArLy8vIEluZGljYXRlcyB0aGF0IGEgc3BpbiBs
b29wIGlzIGJlaW5nIGV4ZWN1dGVkIGZvciB0aGUgcHVycG9zZXMgb2YNCj4gKy8vLyAgICBvcHRp
bWl6aW5nIHBvd2VyIGNvbnN1bXB0aW9uIGR1cmluZyB0aGUgbG9vcC4NCj4gKy8vLw0KPiArLy8v
IFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCj4gKy8vLw0KPiArLy8vIFRoaXMgaW50cmluc2lj
IGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFVU0UgPC9jPiBpbnN0cnVjdGlvbi4NCj4gKy8vLw0K
PiArc3RhdGljIGlubGluZSB2b2lkIF9fREVGQVVMVF9GTl9BVFRSUyBfbW1fcGF1c2Uodm9pZCkN
Cj4gK3sNCj4gKwlfX2J1aWx0aW5faWEzMl9wYXVzZSgpOw0KPiArfQ0KPiArDQo+ICAgI3VuZGVm
IF9fREVGQVVMVF9GTl9BVFRSUw0KPiAgICN1bmRlZiBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YDQo+
ICAgDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:29:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:29: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 1hbwZr-0000S8-On; Sat, 15 Jun 2019 00:29:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=912W=UO=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbwZq-0000S3-Lu
 for minios-devel@lists.xenproject.org; Sat, 15 Jun 2019 00:29:50 +0000
X-Inumbo-ID: acb4c2bc-8f04-11e9-a042-ab607f9aac7f
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.55]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id acb4c2bc-8f04-11e9-a042-ab607f9aac7f;
 Sat, 15 Jun 2019 00:29:45 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5017.eurprd01.prod.exchangelabs.com (20.177.211.24) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Sat, 15 Jun
 2019 00:29:44 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Sat, 15 Jun 2019
 00:29:44 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 2/3]
 _mm_alignr_epi8 to use compiler builtin
Thread-Index: AQHVISPWtNCBIW7XIEOJFXAdtkv8jKab4JEA
Date: Sat, 15 Jun 2019 00:29:44 +0000
Message-ID: <aed9b06a-316b-e705-ceee-148c7cacc6eb@stud.acs.upb.ro>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
 <20190612131553.19420-3-felipe.huici@neclab.eu>
In-Reply-To: <20190612131553.19420-3-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0102CA0035.eurprd01.prod.exchangelabs.com
 (2603:10a6:802::48) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: d9cc9079-6403-4caf-5841-08d6f128905c
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5017; 
x-ms-traffictypediagnostic: PR1PR01MB5017:
x-microsoft-antispam-prvs: <PR1PR01MB50171C2AF25B15F63E85E816A6E90@PR1PR01MB5017.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:4303;
x-forefront-prvs: 0069246B74
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(346002)(39840400004)(136003)(376002)(366004)(199004)(189003)(316002)(305945005)(386003)(5640700003)(476003)(25786009)(6916009)(73956011)(66476007)(2906002)(31686004)(66066001)(486006)(7736002)(66946007)(76176011)(64756008)(102836004)(2501003)(446003)(6506007)(5660300002)(26005)(14454004)(508600001)(256004)(66556008)(52116002)(53546011)(99286004)(229853002)(6486002)(8676002)(68736007)(31696002)(53936002)(6436002)(786003)(6246003)(3846002)(86362001)(85182001)(71200400001)(6116002)(74482002)(6512007)(11346002)(66446008)(2616005)(85202003)(81166006)(8936002)(81156014)(186003)(2351001)(71190400001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5017;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: NOGFMCK+Q/qLR0wMUYZs17rjgB8Xm2JM4sTL2C0mYOnot0F2nmzrIDNYyofg1ye8vIwq6WGTqg3McvYxrpha3EOpwdcrPT973SOF3lNyQokCkurWWOX3hujKxg/LVTDRAmBXLkccsSxFt0x+D0WPy6eMwaSl0W4emF0fnjxgyDj7bNWQV+8/R37YVlamnhW6WVTMIQ+7zT9nMJYYdTk38nEHtqfrnmUJxID6I3orRyjjZMLB1U0+7FOePJTlNbp3C96XL3UVzrPTFwoMECeZ9iyosWlUKi4J9vmWH5/i1qo5wvbE2U9B0fPy/RQ2KC7ay8criPx9Guc0o1C1ONW+W6k1QoscfieHcITaZ04jPLUavhJ1HG6mrqPSZHvoPLw8t+wZ5qwFjqN1fpu3xpCNLuOEyXlYp8KREI18JvgNvqw=
Content-ID: <FA34F3D1EC3BAD4996D78CA87CF908D2@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: d9cc9079-6403-4caf-5841-08d6f128905c
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2019 00:29:44.4619 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5017
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 2/3]
 _mm_alignr_epi8 to use compiler builtin
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IEZlbGlwZSwNCg0KVGhlIHBhdGNoIGxvb2tzIGdyZWF0LCB0aGFua3MhDQoNClZsYWQNCg0K
UmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdTx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5h
Y3MudXBiLnJvPg0KDQpPbiA2LzEyLzE5IDQ6MTUgUE0sIEZlbGlwZSBIdWljaSB3cm90ZToNCj4g
RnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+DQo+DQo+
IF9tbV9hbGlnbnJfZXBpOCB1c2VzIHRoZSBfX2J1aWx0aW5faWEzMl9wYWxpZ25yMTI4IGZ1bmN0
aW9uIGZvciBpdHMNCj4gaW1wbGVtZW50YXRpb24uIFRoZSBidWlsdGluIGZ1bmN0aW9uIGhhcyBh
IGRpZmZlcmVudCBzaWduYXR1cmUgb24NCj4gZ2NjIHZzIGxsdm0uIFdlIHByb3ZpZGUgY29tcGls
ZXIgZ3VhcmRzIHRvIHVzZSB0aGUgYXBwcm9wcmlhdGUgYnVpbHRpbg0KPiBmdW5jdGlvbi4NCj4N
Cj4gU2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0K
PiBTaWduZWQtb2ZmLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xh
Yi5ldT4NCj4gLS0tDQo+ICAgaW5jbHVkZS90bW1pbnRyaW4uaCB8IDYgKysrKysrDQo+ICAgMSBm
aWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS90
bW1pbnRyaW4uaCBiL2luY2x1ZGUvdG1taW50cmluLmgNCj4gaW5kZXggN2E5NDA5Ni4uN2M5ZWNl
NiAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS90bW1pbnRyaW4uaA0KPiArKysgYi9pbmNsdWRlL3Rt
bWludHJpbi5oDQo+IEBAIC0xNjMsOSArMTYzLDE1IEBAIF9tbV9hYnNfZXBpMzIoX19tMTI4aSBf
X2EpDQo+ICAgLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1hbnkg
Ynl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4NCj4gICAvLy8gXHJldHVybnMgQSAxMjgt
Yml0IGludGVnZXIgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByaWdodC1zaGlm
dGVkDQo+ICAgLy8vICAgIHZhbHVlLg0KPiArI2lmZGVmIF9fR05VQ19fDQo+ICsjZGVmaW5lIF9t
bV9hbGlnbnJfZXBpOChhLCBiLCBuKSBcDQo+ICsgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bh
bGlnbnIxMjgoKF9fdjJkaSkoX19tMTI4aSkoYSksIFwNCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoX192MmRpKShfX20xMjhpKShiKSwgKG4pKQ0KPiArI2Vsc2UNCj4g
ICAjZGVmaW5lIF9tbV9hbGlnbnJfZXBpOChhLCBiLCBuKSBcDQo+ICAgICAoX19tMTI4aSlfX2J1
aWx0aW5faWEzMl9wYWxpZ25yMTI4KChfX3YxNnFpKShfX20xMjhpKShhKSwgXA0KPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MTZxaSkoX19tMTI4aSkoYiksIChu
KSkNCj4gKyNlbmRpZg0KPiAgIA0KPiAgIC8vLyBDb25jYXRlbmF0ZXMgdGhlIHR3byA2NC1iaXQg
aW50ZWdlciB2ZWN0b3Igb3BlcmFuZHMsIGFuZCByaWdodC1zaGlmdHMNCj4gICAvLy8gICAgdGhl
IHJlc3VsdCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCBpbiB0aGUgaW1tZWRpYXRl
IG9wZXJhbmQuDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:31:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:31: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 1hbwbk-000146-V4; Sat, 15 Jun 2019 00:31:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=912W=UO=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbwbj-000141-20
 for minios-devel@lists.xenproject.org; Sat, 15 Jun 2019 00:31:47 +0000
X-Inumbo-ID: f3f867d1-8f04-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.75]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f3f867d1-8f04-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 00:31:45 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4841.eurprd01.prod.exchangelabs.com (20.177.211.224) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Sat, 15 Jun
 2019 00:31:42 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Sat, 15 Jun 2019
 00:31:42 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 3/3] Implement
 _mm_getcsr and _mm_setcsr
Thread-Index: AQHVISPVvx9nA4DP5EacwKJzOvUT1aab4R4A
Date: Sat, 15 Jun 2019 00:31:42 +0000
Message-ID: <68424ea4-3aff-3ebd-ef77-b64064d644c7@stud.acs.upb.ro>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
 <20190612131553.19420-4-felipe.huici@neclab.eu>
In-Reply-To: <20190612131553.19420-4-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR09CA0081.eurprd09.prod.outlook.com
 (2603:10a6:802:29::25) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 8ffd8914-c4d4-4933-0d92-08d6f128d6cf
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4841; 
x-ms-traffictypediagnostic: PR1PR01MB4841:
x-microsoft-antispam-prvs: <PR1PR01MB4841BA6B8CD8D909E6D9CDB7A6E90@PR1PR01MB4841.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3513;
x-forefront-prvs: 0069246B74
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(346002)(39840400004)(396003)(376002)(366004)(189003)(199004)(26005)(2501003)(508600001)(6512007)(2351001)(99286004)(6486002)(229853002)(86362001)(5640700003)(6436002)(2906002)(85202003)(71190400001)(71200400001)(316002)(786003)(76176011)(25786009)(66066001)(31696002)(14454004)(81156014)(81166006)(68736007)(8676002)(305945005)(7736002)(53936002)(31686004)(6116002)(52116002)(6246003)(256004)(8936002)(5660300002)(74482002)(66446008)(64756008)(386003)(6506007)(102836004)(3846002)(85182001)(446003)(11346002)(73956011)(66946007)(486006)(6916009)(53546011)(66556008)(66476007)(186003)(2616005)(476003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4841;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: UIhJY6jXhdIm/CQrLn526vca8dw1gWULiEwNjANHLZcm4Qjz1OsTxV/DG/6vn/Tfv8RdGSQvvexjKIsTcxv5XkfjoJ98+lwglTiY1s/bNjeCz9yWw2A1OoA2S2Uud9UFLeJPLPHqhYORBmYuHnc/igyEqdVXPNFfbz+kjh7Gk2cUhdsOdhyMMqEHzllr9KhiAZmSRAKIRQF6zJJdrS4vn7tIJPUc8gFi0+BOSD3SK9/zHS7EzsqUWMOSJACPKYrpdjU3dfjaS2SCcWiGV1xacMsyxkWTkJNzN/eVUsKPojlsgaJM+FsB2iPjlwhmDClFCDrpJ2J5nGcdbO/j+2Yr5CovG5EmYSYk1o9fp4AXcmC+tzObnCG3P6nAgQW9bC/oL7lKWZN6W+6MZtESVdRY2fG35oucrq+anAL9ZKglAZY=
Content-ID: <CB55C4C77389574B88FD677D60E7F4BE@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 8ffd8914-c4d4-4933-0d92-08d6f128d6cf
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2019 00:31:42.7021 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4841
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 3/3] Implement
 _mm_getcsr and _mm_setcsr
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IEZlbGlwZSwNCg0KVGhlIHBhdGNoIGxvb2tzIGdyZWF0LCB0aGFua3MhDQoNClZsYWQNCg0K
UmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdTx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5h
Y3MudXBiLnJvPg0KDQpPbiA2LzEyLzE5IDQ6MTUgUE0sIEZlbGlwZSBIdWljaSB3cm90ZToNCj4g
U2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KPiAt
LS0NCj4gICBpbmNsdWRlL3htbWludHJpbi5oIHwgMTQgKysrKysrKysrKysrKysNCj4gICAxIGZp
bGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94
bW1pbnRyaW4uaCBiL2luY2x1ZGUveG1taW50cmluLmgNCj4gaW5kZXggMmRmYTRkNS4uMWIxMjEw
ZiAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS94bW1pbnRyaW4uaA0KPiArKysgYi9pbmNsdWRlL3ht
bWludHJpbi5oDQo+IEBAIC0zMTEwLDYgKzMxMTAsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIF9f
REVGQVVMVF9GTl9BVFRSUyBfbW1fcGF1c2Uodm9pZCkNCj4gICAjdW5kZWYgX19ERUZBVUxUX0ZO
X0FUVFJTDQo+ICAgI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19NTVgNCj4gICANCj4gKy8qIFNl
dCB0aGUgY29udHJvbCByZWdpc3RlciB0byBJLiAgKi8NCj4gK2V4dGVybiBfX2lubGluZSB2b2lk
IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp
ZmljaWFsX18pKQ0KPiArX21tX3NldGNzciAodW5zaWduZWQgaW50IF9fSSkNCj4gK3sNCj4gKyAg
X19idWlsdGluX2lhMzJfbGRteGNzciAoX19JKTsNCj4gK30NCj4gKw0KPiArLyogUmV0dXJuIHRo
ZSBjb250ZW50cyBvZiB0aGUgY29udHJvbCByZWdpc3Rlci4gICovDQo+ICtleHRlcm4gX19pbmxp
bmUgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19p
bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiArX21tX2dldGNzciAodm9pZCkNCj4gK3sNCj4g
KyAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3N0bXhjc3IgKCk7DQo+ICt9DQo+ICsNCj4gICAvKiBV
Z2x5IGhhY2sgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IChjb21wYXRpYmxlIHdpdGggZ2Nj
KSAqLw0KPiAgICNpZmRlZiBfX0dOVUNfXw0KPiAgICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4NCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZl
bCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:54:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:54: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 1hbwxN-0002ay-I1; Sat, 15 Jun 2019 00:54: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=912W=UO=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbwxM-0002at-6s
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 00:54:08 +0000
X-Inumbo-ID: 114c5566-8f08-11e9-a91a-1b0432d8ac86
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.78]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 114c5566-8f08-11e9-a91a-1b0432d8ac86;
 Sat, 15 Jun 2019 00:54:03 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4889.eurprd01.prod.exchangelabs.com (20.177.211.210) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.15; Sat, 15 Jun
 2019 00:54:00 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Sat, 15 Jun 2019
 00:54:00 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
Thread-Index: AQHVIgRxLwrou1pmsUaBwFiWJVWSvaabF3eAgADOIAA=
Date: Sat, 15 Jun 2019 00:54:00 +0000
Message-ID: <d82d3bde-151b-0527-b20f-1c99957b7362@stud.acs.upb.ro>
References: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <43c5d748-4b28-fa77-ebd2-7405917e67f4@neclab.eu>
In-Reply-To: <43c5d748-4b28-fa77-ebd2-7405917e67f4@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR09CA0183.eurprd09.prod.outlook.com
 (2603:10a6:800:120::37) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 88498e34-9e96-4236-1158-08d6f12bf45c
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4889; 
x-ms-traffictypediagnostic: PR1PR01MB4889:
x-microsoft-antispam-prvs: <PR1PR01MB48892BD055DE7C83F7BB73E1A6E90@PR1PR01MB4889.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3826;
x-forefront-prvs: 0069246B74
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(136003)(39840400004)(366004)(376002)(396003)(189003)(199004)(66556008)(66476007)(73956011)(66066001)(64756008)(85182001)(4326008)(66946007)(3846002)(66446008)(85202003)(53936002)(6116002)(6512007)(229853002)(31686004)(86362001)(68736007)(14444005)(256004)(31696002)(6246003)(6486002)(66574012)(76176011)(74482002)(99286004)(6436002)(52116002)(2906002)(386003)(6506007)(53546011)(102836004)(5660300002)(2501003)(478600001)(14454004)(8676002)(186003)(81156014)(81166006)(8936002)(71200400001)(446003)(71190400001)(110136005)(54906003)(11346002)(25786009)(2616005)(486006)(476003)(7736002)(305945005)(786003)(316002)(26005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4889;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: 7sBhBowm/UgfRpnyvz/BTXrHIeLnrFoecmZW2vDWLxozBRESQkT4Hnve9Mw9TVwe3chD0i7ab3uGNEOS/+D0BtkwndbEswJiNGO6gaeWja5XQY+Pdq4UItlFGoFiccaRKnsAhUCjEon+1+KqHVmbplDs6jm62+u6j7ulNABizbmjaL/tcArSVEIEH5apwCu63/wEG5iZpISH4HUy4eLijpxOgvJGZnUzK+QG0bZgUuGGHBXGPuwOFwpjFxzIsFIGwZGxKVQD2hf/ydP8QLL7LGjVuYfEYJE3Il8WoGvzdLTKihn4fpIh/YFnRT2MqFyyXXV8bqbIdo3ai5j2Uw6HpXRbrx3XaGfw34LHT3bFCeA5MM4CisZrfRYK4IoUF/UuyN/RKcBZg/gdQNbgRt2rn+XQDhPHF3LXFiCLt1+6YcU=
Content-ID: <8B9439280E5AF446B1E81A5681EED3C4@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 88498e34-9e96-4236-1158-08d6f12bf45c
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2019 00:54:00.7574 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4889
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGV5IFNpbW9uLA0KDQpJJ2xsIHNlbmQgYSB2MyB3aXRoIHRoZSBwcm9wb3NlZCBjaGFuZ2VzLg0K
DQpUaGFua3MsDQoNClZsYWQNCg0KT24gNi8xNC8xOSAzOjM2IFBNLCBTaW1vbiBLdWVuemVyIHdy
b3RlOg0KPiBIZXksDQo+DQo+IHNpbmNlIEkganVzdCBub3RpY2VkIHRoaXMuLi4NCj4NCj4gT24g
MTMuMDYuMTkgMTg6MjQsIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToNCj4+IFRo
aXMgcGF0Y2ggYWRkcyB0aGUgL2Rldi9yYW5kb20gYW5kIC9kZXYvdXJhbmRvbSBkZXZpY2VzLiBT
aW5jZSB3ZSBkbyANCj4+IG5vdCBoYXZlDQo+PiBhbnkgZW50cm9weSBnZW5lcmF0aW5nIGZ1bmN0
aW9uIGJvdGggZGV2aWNlcyBzaGFyZSB0aGUgc2FtZSBoYW5kbGVycy4gDQo+PiBUaGUNCj4+IHJl
Z2lzdHJhdGlvbiBvZiB0aGUgZGV2aWNlcyBpcyBndWFyZGVkIGJ5IHRoZSBjb25maWcgb3B0aW9u
IA0KPj4gQ09ORklHX0RFVl9SQU5ET00uDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KPj4gLS0tDQo+
PiDCoCBsaWIvdWtzd3JhbmQvQ29uZmlnLnVrwqDCoCB8wqDCoCA2ICsrDQo+PiDCoCBsaWIvdWtz
d3JhbmQvTWFrZWZpbGUudWsgfMKgwqAgMyArDQo+PiDCoCBsaWIvdWtzd3JhbmQvbXdjX2Rldi5j
wqDCoCB8IDExOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+IMKg
IDMgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykNCj4+IMKgIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdWtzd3JhbmQvbXdjX2Rldi5jDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2xpYi91a3N3
cmFuZC9Db25maWcudWsgYi9saWIvdWtzd3JhbmQvQ29uZmlnLnVrDQo+PiBpbmRleCA0NGY2ZWU1
MC4uYTFhODRiYzUgMTAwNjQ0DQo+PiAtLS0gYS9saWIvdWtzd3JhbmQvQ29uZmlnLnVrDQo+PiAr
KysgYi9saWIvdWtzd3JhbmQvQ29uZmlnLnVrDQo+PiBAQCAtMTcsNCArMTcsMTAgQEAgZW5kY2hv
aWNlDQo+PiDCoCBjb25maWcgTElCVUtTV1JBTkRfSU5JVElBTFNFRUQNCj4+IMKgwqDCoMKgwqAg
aW50ICJJbml0aWFsIHJhbmRvbSBzZWVkIg0KPj4gwqDCoMKgwqDCoCBkZWZhdWx0IDIzDQo+PiAr
DQo+PiArY29uZmlnIERFVl9SQU5ET00NCj4NCj4gLi4ueW91IHNob3VsZCBjYWxsIHRoaXMgb3B0
aW9uIExJQlVLU1dSQU5EX0RFVl9SQU5ET00gaW5zdGVhZCB0byBuYW1lIA0KPiBzcGFjZSBpdCBw
cm9wZXJseS4NCj4NCj4+ICvCoMKgwqAgYm9vbCAiL2Rldi9yYW5kb20gZGV2aWNlIg0KPj4gK8Kg
wqDCoCBzZWxlY3QgTElCREVWRlMNCj4+ICvCoMKgwqAgZGVmYXVsdCBuDQo+PiArDQo+DQo+IFBs
ZWFzZSBhbHNvIGFkZCBhIGRlc2NyaXB0aW9uIHdoYXQgdGhpcyBvcHRpb24gZW5hYmxlcy4NCj4N
Cj4+IMKgIGVuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrIGIv
bGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrDQo+PiBpbmRleCA4ZDQ0ODJjNC4uMjUyNDc0NzQgMTAw
NjQ0DQo+PiAtLS0gYS9saWIvdWtzd3JhbmQvTWFrZWZpbGUudWsNCj4+ICsrKyBiL2xpYi91a3N3
cmFuZC9NYWtlZmlsZS51aw0KPj4gQEAgLTQsMyArNCw2IEBAIENJTkNMVURFUy0kKENPTkZJR19M
SUJVS1NXUkFORCnCoMKgwqAgKz0gDQo+PiAtSSQoTElCVUtTV1JBTkRfQkFTRSkvaW5jbHVkZQ0K
Pj4gwqAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUtTV1JBTkQpICs9IC1JJChMSUJVS1NXUkFO
RF9CQVNFKS9pbmNsdWRlDQo+PiDCoCDCoCBMSUJVS1NXUkFORF9TUkNTLSQoQ09ORklHX0xJQlVL
U1dSQU5EX01XQykgKz0gDQo+PiAkKExJQlVLU1dSQU5EX0JBU0UpL213Yy5jDQo+PiAraWZkZWYg
Q09ORklHX0RFVl9SQU5ET00NCj4+ICtMSUJVS1NXUkFORF9TUkNTLSQoQ09ORklHX0xJQlVLU1dS
QU5EX01XQykgKz0gDQo+PiAkKExJQlVLU1dSQU5EX0JBU0UpL213Y19kZXYuYw0KPj4gK2VuZGlm
DQo+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5kL213Y19kZXYuYyBiL2xpYi91a3N3cmFuZC9t
d2NfZGV2LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMC4uNWE5
YzBkNDkNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2xpYi91a3N3cmFuZC9td2NfZGV2LmMN
Cj4+IEBAIC0wLDAgKzEsMTE5IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT
RC0zLUNsYXVzZSAqLw0KPj4gKy8qDQo+PiArICogQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1
IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KPj4gKyAqDQo+PiArICogQ29w
eXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxs
IA0KPj4gcmlnaHRzIHJlc2VydmVkLg0KPj4gKyAqDQo+PiArICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+PiArICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zDQo+PiArICogYXJlIG1ldDoNCj4+ICsgKg0KPj4gKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+PiAr
ICrCoMKgwqAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLg0KPj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+PiArICrCoMKgwqAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIA0KPj4g
aW4gdGhlDQo+PiArICrCoMKgwqAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIA0KPj4gZGlzdHJpYnV0aW9uLg0KPj4gKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4+
ICsgKsKgwqDCoCBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIA0KPj4gZGVyaXZlZCBmcm9tDQo+PiArICrCoMKgwqAgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4+ICsgKg0KPj4gKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAN
Cj4+IENPTlRSSUJVVE9SUyAiQVMgSVMiDQo+PiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgDQo+PiBUTywgVEhFDQo+
PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSANCj4+IFBBUlRJQ1VMQVIgUFVSUE9TRQ0KPj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiANCj4+IENPTlRSSUJVVE9SUyBC
RQ0KPj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1INCj4+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KPj4gKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiAN
Cj4+IEJVU0lORVNTDQo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIA0KPj4gV0hFVEhFUiBJTg0KPj4gKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiANCj4+
IE9USEVSV0lTRSkNCj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiANCj4+IEFEVklTRUQgT0YgVEhFDQo+PiArICogUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+PiArICoNCj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9U
IEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KPj4gKyAqLw0KPj4gKw0KPj4g
KyNpbmNsdWRlIDxzdGRsaWIuaD4NCj4+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+PiArI2luY2x1
ZGUgPHVrL2N0b3JzLmg+DQo+PiArI2luY2x1ZGUgPHVrL3ByaW50Lmg+DQo+PiArI2luY2x1ZGUg
PHVrL3N3cmFuZC5oPg0KPj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4NCj4+ICsjaW5jbHVkZSA8
dWsvY29uZmlnLmg+DQo+PiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4NCj4+ICsjaW5jbHVk
ZSA8dmZzY29yZS91aW8uaD4NCj4+ICsjaW5jbHVkZSA8ZGV2ZnMvZGV2aWNlLmg+DQo+PiArDQo+
PiArI2RlZmluZSBERVZfUkFORE9NX05BTUUgInJhbmRvbSINCj4+ICsjZGVmaW5lIERFVl9VUkFO
RE9NX05BTUUgInVyYW5kb20iDQo+PiArDQo+PiAraW50IGRldl9yYW5kb21fcmVhZChzdHJ1Y3Qg
ZGV2aWNlICpkZXYgX191bnVzZWQsIHN0cnVjdCB1aW8gKnVpbywNCj4+ICvCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIGludCBmbGFncyBfX3VudXNlZCkNCj4+ICt7DQo+PiArwqDCoMKgIHNpemVfdCBj
b3VudCwgc3RlcCwgY2h1bmtfc2l6ZSwgaTsNCj4+ICvCoMKgwqAgY2hhciAqYnVmOw0KPj4gK8Kg
wqDCoCBfX3UzMiByZDsNCj4+ICsNCj4+ICvCoMKgwqAgYnVmID0gdWlvLT51aW9faW92LT5pb3Zf
YmFzZTsNCj4+ICvCoMKgwqAgY291bnQgPSB1aW8tPnVpb19pb3YtPmlvdl9sZW47DQo+PiArDQo+
PiArwqDCoMKgIHN0ZXAgPSBzaXplb2YoX191MzIpOw0KPj4gK8KgwqDCoCBjaHVua19zaXplID0g
Y291bnQgJSBzdGVwOw0KPj4gKw0KPj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgY291bnQgLSBj
aHVua19zaXplOyBpICs9IHN0ZXApDQo+PiArwqDCoMKgwqDCoMKgwqAgKigoX191MzIgKilidWYg
KyBpKSA9IHVrX3N3cmFuZF9yYW5kcigpOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBmaWxsIHRoZSBy
ZW1haW5pbmcgYnl0ZXMgb2YgdGhlIGJ1ZmZlciAqLw0KPj4gK8KgwqDCoCBpZiAoY2h1bmtfc2l6
ZSA+IDApIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZCA9IHVrX3N3cmFuZF9yYW5kcigpOw0KPj4g
K8KgwqDCoMKgwqDCoMKgIG1lbWNweShidWYgKyBpLCAmcmQsIGNodW5rX3NpemUpOw0KPj4gK8Kg
wqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHVpby0+dWlvX3Jlc2lkID0gMDsNCj4+ICvCoMKgwqAg
cmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBkZXZfcmFuZG9tX29wZW4oc3RydWN0IGRl
dmljZSAqZGV2aWNlIF9fdW51c2VkLCBpbnQgbW9kZSBfX3VudXNlZCkNCj4+ICt7DQo+PiArwqDC
oMKgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsNCj4+ICtpbnQgZGV2X3JhbmRvbV9jbG9z
ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgX191bnVzZWQpDQo+PiArew0KPj4gK8KgwqDCoCByZXR1
cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBkZXZvcHMgcmFuZG9tX2Rldm9w
cyA9IHsNCj4+ICvCoMKgwqAgLnJlYWQgPSBkZXZfcmFuZG9tX3JlYWQsDQo+PiArwqDCoMKgIC5v
cGVuID0gZGV2X3JhbmRvbV9vcGVuLA0KPj4gK8KgwqDCoCAuY2xvc2UgPSBkZXZfcmFuZG9tX2Ns
b3NlLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3JhbmRvbSA9
IHsNCj4+ICvCoMKgwqAgLmRldm9wcyA9ICZyYW5kb21fZGV2b3BzLA0KPj4gK8KgwqDCoCAuZGV2
c3ogPSAwLA0KPj4gK8KgwqDCoCAubmFtZSA9IERFVl9SQU5ET01fTkFNRQ0KPj4gK307DQo+PiAr
DQo+PiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3VyYW5kb20gPSB7DQo+PiArwqDCoMKgIC5k
ZXZvcHMgPSAmcmFuZG9tX2Rldm9wcywNCj4+ICvCoMKgwqAgLmRldnN6ID0gMCwNCj4+ICvCoMKg
wqAgLm5hbWUgPSBERVZfVVJBTkRPTV9OQU1FDQo+PiArfTsNCj4+ICsNCj4+ICtfX2NvbnN0cnVj
dG9yX3ByaW8oMTAyKSBzdGF0aWMgdm9pZCBfdWtfZGV2X3N3cmFuZF9jdG9yKHZvaWQpDQo+PiAr
ew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+PiArDQo+PiArwqDCoMKgIHVrX3By
X2luZm8oIkFkZCAvZGV2L3JhbmRvbSBhbmQgL2Rldi91cmFuZG9tXG4iKTsNCj4NCj4gSSB3b3Vs
ZCBzdWdnZXN0IHRvIHBocmFzZSB0aGUgbWVzc2FnZSB3aXRoOg0KPiB1a19wcl9pbmZvKCJSZWdp
c3RlciAnJXMnIGFuZCAnJXMnIHRvIGRldmZzXG4iLA0KPiDCoMKgwqDCoMKgwqDCoCBERVZfUkFO
RE9NX05BTUUsIERFVl9VUkFORE9NX05BTUUpOw0KPg0KPj4gKw0KPj4gK8KgwqDCoCAvKiByZWdp
c3RlciAvZGV2L3VyYW5kb20gKi8NCj4+ICvCoMKgwqAgZGV2ID0gZGV2aWNlX2NyZWF0ZSgmZHJ2
X3VyYW5kb20sIERFVl9VUkFORE9NX05BTUUsIERfQ0hSKTsNCj4+ICvCoMKgwqAgaWYgKGRldiA9
PSBOVUxMKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHVrX3ByX2luZm8oIkZhaWxlZCB0byByZWdpc3Rl
ciAvZGV2L3VyYW5kb21cbiIpOw0KPg0KPiBJbiB0aGUgZXJyb3IgY2FzZSwgcHJpbnQgYW4gZXJy
b3IgbWVzc2FnZToNCj4gdWtfcHJfZXJyKCJGYWlsZWQgdG8gcmVnaXN0ZXIgJyVzJyB0byBkZXZm
c1xuIiwgREVWX1VSQU5ET01fTkFNRSk7DQo+DQo+PiArDQo+PiArwqDCoMKgIC8qIHJlZ2lzdGVy
IC9kZXYvcmFuZG9tICovDQo+PiArwqDCoMKgIGRldiA9IGRldmljZV9jcmVhdGUoJmRydl9yYW5k
b20sIERFVl9SQU5ET01fTkFNRSwgRF9DSFIpOw0KPj4gK8KgwqDCoCBpZiAoZGV2ID09IE5VTEwp
DQo+PiArwqDCoMKgwqDCoMKgwqAgdWtfcHJfaW5mbygiRmFpbGVkIHRvIHJlZ2lzdGVyIC9kZXYv
cmFuZG9tXG4iKTsNCj4NCj4gU2ltaWxhciwgaGVyZS4NCj4+ICt9DQo+Pg0KPg0KPiBUaGFua3Ms
DQo+DQo+IFNpbW9uDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 00:56:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 00:56: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 1hbwzC-0002cw-La; Sat, 15 Jun 2019 00:56: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=912W=UO=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hbwzB-0002cr-8Q
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 00:56:01 +0000
X-Inumbo-ID: 55830ba8-8f08-11e9-abc3-33368356e3d0
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.71]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55830ba8-8f08-11e9-abc3-33368356e3d0;
 Sat, 15 Jun 2019 00:55:57 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4860.eurprd01.prod.exchangelabs.com (20.177.212.147) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Sat, 15 Jun
 2019 00:55:54 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.012; Sat, 15 Jun 2019
 00:55:54 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v3 1/1] lib/ukswrand: Add /dev/random and
 /dev/urandom
Thread-Index: AQHVIxUWRsMnz3g/ak2EqVfqMe/Z3w==
Date: Sat, 15 Jun 2019 00:55:54 +0000
Message-ID: <20190615005543.24094-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VE1PR03CA0012.eurprd03.prod.outlook.com
 (2603:10a6:802:a0::24) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [82.77.169.61]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 6a0f4464-d5d4-4c6a-155a-08d6f12c3853
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4860; 
x-ms-traffictypediagnostic: PR1PR01MB4860:
x-microsoft-antispam-prvs: <PR1PR01MB486069C508F3B219AC3A8CCFA6E90@PR1PR01MB4860.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:2399;
x-forefront-prvs: 0069246B74
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(136003)(396003)(39840400004)(376002)(346002)(189003)(199004)(86362001)(786003)(81166006)(316002)(2501003)(8936002)(508600001)(50226002)(102836004)(6506007)(68736007)(81156014)(8676002)(386003)(85182001)(14444005)(476003)(6116002)(4326008)(66066001)(256004)(3846002)(2906002)(14454004)(74482002)(71190400001)(71200400001)(5660300002)(85202003)(5640700003)(2616005)(6486002)(2351001)(1076003)(66476007)(305945005)(66946007)(66556008)(54906003)(6916009)(26005)(64756008)(52116002)(73956011)(7736002)(6512007)(186003)(99286004)(6436002)(66446008)(486006)(53936002)(25786009);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4860;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: FUjIUcIxXTqBLxIaFHW+/JO7BhpOYYVBnybzYjTClGDNrUNs1v2A934QXtxFPbZpd4JanaqqdJAzvGsdapDD6BosnbZc32UgKMBFwZY0tEO5RcSDqoUdgW6B7gjPAlNYDrV2d5TUpJ1WcFcKQFkwfsfFiTVkNLGOnkSncG3S2xWuNdT75c50lNK8uj61A81aF6Be/VoB+gWERHF+sHhzHB95aJmw4YVFwnaEUkVa3Z42T5Tzwtvh5B4KtLgImYIEbN26U+dE5rEnxwmR1wmat5U9gq8y+NbC6Rs2ZyAlJFalGZ38vvewu3tphFKSm0shVNVVkIPt4mSet0PDY7gyYhIp067af//IdBHs5Rt/2YfhCecpsrVtL3d4cKWsDquXgQ+BC+Fn3QYeivVvUvAd6mbAu1grZ+9Pb3GHQmY67OY=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 6a0f4464-d5d4-4c6a-155a-08d6f12c3853
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jun 2019 00:55:54.8716 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4860
Subject: [Minios-devel] [UNIKRAFT PATCH v3 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "simon.kuenzer@neclab.eu" <simon.kuenzer@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSAvZGV2L3JhbmRvbSBhbmQgL2Rldi91cmFuZG9tIGRldmljZXMu
IFNpbmNlIHdlIGRvIG5vdCBoYXZlDQphbnkgZW50cm9weSBnZW5lcmF0aW5nIGZ1bmN0aW9uIGJv
dGggZGV2aWNlcyBzaGFyZSB0aGUgc2FtZSBoYW5kbGVycy4gVGhlDQpyZWdpc3RyYXRpb24gb2Yg
dGhlIGRldmljZXMgaXMgZ3VhcmRlZCBieSB0aGUgY29uZmlnIG9wdGlvbiBDT05GSUdfREVWX1JB
TkRPTS4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5i
YWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4u
bHVwdUBjcy5wdWIucm8+DQotLS0NCiBsaWIvdWtzd3JhbmQvQ29uZmlnLnVrICAgfCAgIDggKysr
DQogbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrIHwgICAzICsNCiBsaWIvdWtzd3JhbmQvbXdjX2Rl
di5jICAgfCAxMjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMyBm
aWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWtzd3JhbmQvbXdjX2Rldi5jDQoNCmRpZmYgLS1naXQgYS9saWIvdWtzd3JhbmQvQ29uZmlnLnVr
IGIvbGliL3Vrc3dyYW5kL0NvbmZpZy51aw0KaW5kZXggNDRmNmVlNTAuLjViMGFkYjg1IDEwMDY0
NA0KLS0tIGEvbGliL3Vrc3dyYW5kL0NvbmZpZy51aw0KKysrIGIvbGliL3Vrc3dyYW5kL0NvbmZp
Zy51aw0KQEAgLTE3LDQgKzE3LDEyIEBAIGVuZGNob2ljZQ0KIGNvbmZpZyBMSUJVS1NXUkFORF9J
TklUSUFMU0VFRA0KIAlpbnQgIkluaXRpYWwgcmFuZG9tIHNlZWQiDQogCWRlZmF1bHQgMjMNCisN
Citjb25maWcgTElCVUtTV1JBTkRfREVWX1JBTkRPTQ0KKwlib29sICJyYW5kb20gYW5kIHVyYW5k
b20gZGV2aWNlcyINCisJc2VsZWN0IExJQkRFVkZTDQorCWRlZmF1bHQgbg0KKwloZWxwDQorCQlS
ZWdpc3RlcnMgdGhlIHJhbmRvbSBhbmQgdXJhbmRvbSBkZXZpY2VzDQorDQogZW5kaWYNCmRpZmYg
LS1naXQgYS9saWIvdWtzd3JhbmQvTWFrZWZpbGUudWsgYi9saWIvdWtzd3JhbmQvTWFrZWZpbGUu
dWsNCmluZGV4IDhkNDQ4MmM0Li44YzZiMzYzNyAxMDA2NDQNCi0tLSBhL2xpYi91a3N3cmFuZC9N
YWtlZmlsZS51aw0KKysrIGIvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrDQpAQCAtNCwzICs0LDYg
QEAgQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVLU1dSQU5EKQkrPSAtSSQoTElCVUtTV1JBTkRfQkFT
RSkvaW5jbHVkZQ0KIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLU1dSQU5EKSArPSAtSSQoTElC
VUtTV1JBTkRfQkFTRSkvaW5jbHVkZQ0KIA0KIExJQlVLU1dSQU5EX1NSQ1MtJChDT05GSUdfTElC
VUtTV1JBTkRfTVdDKSArPSAkKExJQlVLU1dSQU5EX0JBU0UpL213Yy5jDQoraWZkZWYgQ09ORklH
X0xJQlVLU1dSQU5EX0RFVl9SQU5ET00NCitMSUJVS1NXUkFORF9TUkNTLSQoQ09ORklHX0xJQlVL
U1dSQU5EX01XQykgKz0gJChMSUJVS1NXUkFORF9CQVNFKS9td2NfZGV2LmMNCitlbmRpZg0KZGlm
ZiAtLWdpdCBhL2xpYi91a3N3cmFuZC9td2NfZGV2LmMgYi9saWIvdWtzd3JhbmQvbXdjX2Rldi5j
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAuLjA5YTljODE3DQotLS0gL2Rl
di9udWxsDQorKysgYi9saWIvdWtzd3JhbmQvbXdjX2Rldi5jDQpAQCAtMCwwICsxLDEyMCBAQA0K
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8NCisvKg0KKyAqIEF1
dGhvcnM6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4NCisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmlj
YSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQN
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqDQorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuDQorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4NCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0
aGUgbmFtZXMgb2YgaXRzDQorICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisgKiAgICB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiDQorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFDQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQ0KKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
Rg0KKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkNCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLg0KKyAqDQorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJ
RUQgSU4gQU5ZIFdBWS4NCisgKi8NCisNCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUg
PHN0cmluZy5oPg0KKyNpbmNsdWRlIDx1ay9jdG9ycy5oPg0KKyNpbmNsdWRlIDx1ay9wcmludC5o
Pg0KKyNpbmNsdWRlIDx1ay9zd3JhbmQuaD4NCisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+DQorI2lu
Y2x1ZGUgPHVrL2NvbmZpZy5oPg0KKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+DQorI2luY2x1
ZGUgPHZmc2NvcmUvdWlvLmg+DQorI2luY2x1ZGUgPGRldmZzL2RldmljZS5oPg0KKw0KKyNkZWZp
bmUgREVWX1JBTkRPTV9OQU1FICJyYW5kb20iDQorI2RlZmluZSBERVZfVVJBTkRPTV9OQU1FICJ1
cmFuZG9tIg0KKw0KK2ludCBkZXZfcmFuZG9tX3JlYWQoc3RydWN0IGRldmljZSAqZGV2IF9fdW51
c2VkLCBzdHJ1Y3QgdWlvICp1aW8sDQorCQkJaW50IGZsYWdzIF9fdW51c2VkKQ0KK3sNCisJc2l6
ZV90IGNvdW50LCBzdGVwLCBjaHVua19zaXplLCBpOw0KKwljaGFyICpidWY7DQorCV9fdTMyIHJk
Ow0KKw0KKwlidWYgPSB1aW8tPnVpb19pb3YtPmlvdl9iYXNlOw0KKwljb3VudCA9IHVpby0+dWlv
X2lvdi0+aW92X2xlbjsNCisNCisJc3RlcCA9IHNpemVvZihfX3UzMik7DQorCWNodW5rX3NpemUg
PSBjb3VudCAlIHN0ZXA7DQorDQorCWZvciAoaSA9IDA7IGkgPCBjb3VudCAtIGNodW5rX3NpemU7
IGkgKz0gc3RlcCkNCisJCSooKF9fdTMyICopYnVmICsgaSkgPSB1a19zd3JhbmRfcmFuZHIoKTsN
CisNCisJLyogZmlsbCB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIHRoZSBidWZmZXIgKi8NCisJaWYg
KGNodW5rX3NpemUgPiAwKSB7DQorCQlyZCA9IHVrX3N3cmFuZF9yYW5kcigpOw0KKwkJbWVtY3B5
KGJ1ZiArIGksICZyZCwgY2h1bmtfc2l6ZSk7DQorCX0NCisNCisJdWlvLT51aW9fcmVzaWQgPSAw
Ow0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50IGRldl9yYW5kb21fb3BlbihzdHJ1Y3QgZGV2aWNl
ICpkZXZpY2UgX191bnVzZWQsIGludCBtb2RlIF9fdW51c2VkKQ0KK3sNCisJcmV0dXJuIDA7DQor
fQ0KKw0KKw0KK2ludCBkZXZfcmFuZG9tX2Nsb3NlKHN0cnVjdCBkZXZpY2UgKmRldmljZSBfX3Vu
dXNlZCkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGRldm9wcyByYW5k
b21fZGV2b3BzID0gew0KKwkucmVhZCA9IGRldl9yYW5kb21fcmVhZCwNCisJLm9wZW4gPSBkZXZf
cmFuZG9tX29wZW4sDQorCS5jbG9zZSA9IGRldl9yYW5kb21fY2xvc2UsDQorfTsNCisNCitzdGF0
aWMgc3RydWN0IGRyaXZlciBkcnZfcmFuZG9tID0gew0KKwkuZGV2b3BzID0gJnJhbmRvbV9kZXZv
cHMsDQorCS5kZXZzeiA9IDAsDQorCS5uYW1lID0gREVWX1JBTkRPTV9OQU1FDQorfTsNCisNCitz
dGF0aWMgc3RydWN0IGRyaXZlciBkcnZfdXJhbmRvbSA9IHsNCisJLmRldm9wcyA9ICZyYW5kb21f
ZGV2b3BzLA0KKwkuZGV2c3ogPSAwLA0KKwkubmFtZSA9IERFVl9VUkFORE9NX05BTUUNCit9Ow0K
Kw0KK19fY29uc3RydWN0b3JfcHJpbygxMDIpIHN0YXRpYyB2b2lkIF91a19kZXZfc3dyYW5kX2N0
b3Iodm9pZCkNCit7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsNCisNCisJdWtfcHJfaW5mbygiUmVn
aXN0ZXIgJXMgYW5kICVzXG4iLA0KKwkJREVWX1JBTkRPTV9OQU1FLCBERVZfVVJBTkRPTV9OQU1F
KTsNCisNCisJLyogcmVnaXN0ZXIgL2Rldi91cmFuZG9tICovDQorCWRldiA9IGRldmljZV9jcmVh
dGUoJmRydl91cmFuZG9tLCBERVZfVVJBTkRPTV9OQU1FLCBEX0NIUik7DQorCWlmIChkZXYgPT0g
TlVMTCkNCisJCXVrX3ByX2VycigiRmFpbGVkIHRvIHJlZ2lzdGVyICVzXG4iLCBERVZfVVJBTkRP
TV9OQU1FKTsNCisNCisJLyogcmVnaXN0ZXIgL2Rldi9yYW5kb20gKi8NCisJZGV2ID0gZGV2aWNl
X2NyZWF0ZSgmZHJ2X3JhbmRvbSwgREVWX1JBTkRPTV9OQU1FLCBEX0NIUik7DQorCWlmIChkZXYg
PT0gTlVMTCkNCisJCXVrX3ByX2VycigiZkFpbGVkIHRvIHJlZ2lzdGVyICVzXG4iLCBERVZfUkFO
RE9NX05BTUUpOw0KK30NCi0tIA0KMi4yMS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 07:03:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 07:03: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 1hc2ix-0004dy-PO; Sat, 15 Jun 2019 07:03:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3LFC=UO=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hc2iv-0004dt-L1
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 07:03:37 +0000
X-Inumbo-ID: b0e1a33e-8f3b-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b0e1a33e-8f3b-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 07:03:35 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id r16so4650415wrl.11
 for <minios-devel@lists.xen.org>; Sat, 15 Jun 2019 00:03:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=EzNlYJpVhvQ2qsuDCEze+oO1od4TNK0r9tQogefViO4=;
 b=rH4mkBdfUOuL0S+PQD0357l1pcJbdYlk3EL57B1XNqEjLjDMMs6fVvyjwKjNsqXEAw
 P0dSpp42vxEnSWiX/dJRMC68EuTk4/cthNjArkNsm17FTrVMgYiI8zwtJunIymu6QaVF
 GwxPyLLgfP3kA2D5api0wJjRwfTad35Z0LJSmakEVq08GunYo4PLf4ndEW4SS6IVaANF
 qMtF+R0gL9q/QULuM2RMz5aZNICuTR2OTIcy46FdXsKQt+KP0sT8vacoqFXTccgrLf7a
 wXZNiRkmbYzOtT5FFNWUCQFgv82lVeZVUzpzdigyvhToZwHnzvVyxEVUjdz+zFTMCXLc
 zEdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=EzNlYJpVhvQ2qsuDCEze+oO1od4TNK0r9tQogefViO4=;
 b=blm7D6o4E2ZEgZsP+/hl/d/2z0w43JyTpxjHcHproehBPIEAUi5U3vw9cSvuOBwULP
 24Jc8aq96oNStw5CjZ76IeuX4xS7JO0OmTJFAxav+IZfS6AVmR8N7vTlCunIjATmP1Bc
 ADzLCTLR82k7/Bb6Lmxru3WhItbgT3e1yJvnx8ejOJ0WRHzHMe3xT+t7oLn4m1k9I6aL
 c5rfSKRpFUDD6rniZNu7jIS9J2NBjXwvEFa03vrKuzIu2JU/1v7GDXRK23VhM+ohaZyu
 5oBV3ZLtc7IUflWaJxumSWHQ/J8AUbZDT8S8Ui8yw5r9GL6yijUUs8VguaRCSvU4DeTN
 yqZg==
X-Gm-Message-State: APjAAAVXSa7tbKHpMubiplYDpYBJCP/CUhsvJ4SLkk00lzIFpgifsXIj
 migBpdvzT7hCEnAVhe0wvSN9koQH
X-Google-Smtp-Source: APXvYqxQC7Q7s3i3qiVehve3ro9L8xzvvZmWStyE+qbJXcT6K0wzv8BRssEQ3W79za81jqnykLtJ5w==
X-Received: by 2002:a5d:428d:: with SMTP id k13mr5075043wrq.142.1560582213946; 
 Sat, 15 Jun 2019 00:03:33 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id k5sm3409017wmj.30.2019.06.15.00.03.32
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Jun 2019 00:03:33 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190615005543.24094-1-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <fbaa31a0-5fa7-ebc7-e3e4-6e9bdcea5fa6@gmail.com>
Date: Sat, 15 Jun 2019 10:03:32 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190615005543.24094-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "simon.kuenzer@neclab.eu" <simon.kuenzer@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

QWN0dWFsbHkgdGhlIHYyIHdhcyBhbHJlYWR5IHB1c2hlZCB1cHN0cmVhbS4gVGhlIG5ldyBjaGFu
Z2VzIHNob3VsZCBiZQppbiBhIGRpZmZlcmVudCBwYXRjaC4KCk9uIDYvMTUvMTkgMzo1NSBBTSwg
VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUg
L2Rldi9yYW5kb20gYW5kIC9kZXYvdXJhbmRvbSBkZXZpY2VzLiBTaW5jZSB3ZSBkbyBub3QgaGF2
ZQo+IGFueSBlbnRyb3B5IGdlbmVyYXRpbmcgZnVuY3Rpb24gYm90aCBkZXZpY2VzIHNoYXJlIHRo
ZSBzYW1lIGhhbmRsZXJzLiBUaGUKPiByZWdpc3RyYXRpb24gb2YgdGhlIGRldmljZXMgaXMgZ3Vh
cmRlZCBieSB0aGUgY29uZmlnIG9wdGlvbiBDT05GSUdfREVWX1JBTkRPTS4KPiAKPiBTaWduZWQt
b2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+Cj4gUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+
Cj4gLS0tCj4gIGxpYi91a3N3cmFuZC9Db25maWcudWsgICB8ICAgOCArKysKPiAgbGliL3Vrc3dy
YW5kL01ha2VmaWxlLnVrIHwgICAzICsKPiAgbGliL3Vrc3dyYW5kL213Y19kZXYuYyAgIHwgMTIw
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5n
ZWQsIDEzMSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtzd3JhbmQv
bXdjX2Rldi5jCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi91a3N3cmFuZC9Db25maWcudWsgYi9saWIv
dWtzd3JhbmQvQ29uZmlnLnVrCj4gaW5kZXggNDRmNmVlNTAuLjViMGFkYjg1IDEwMDY0NAo+IC0t
LSBhL2xpYi91a3N3cmFuZC9Db25maWcudWsKPiArKysgYi9saWIvdWtzd3JhbmQvQ29uZmlnLnVr
Cj4gQEAgLTE3LDQgKzE3LDEyIEBAIGVuZGNob2ljZQo+ICBjb25maWcgTElCVUtTV1JBTkRfSU5J
VElBTFNFRUQKPiAgCWludCAiSW5pdGlhbCByYW5kb20gc2VlZCIKPiAgCWRlZmF1bHQgMjMKPiAr
Cj4gK2NvbmZpZyBMSUJVS1NXUkFORF9ERVZfUkFORE9NCj4gKwlib29sICJyYW5kb20gYW5kIHVy
YW5kb20gZGV2aWNlcyIKPiArCXNlbGVjdCBMSUJERVZGUwo+ICsJZGVmYXVsdCBuCj4gKwloZWxw
Cj4gKwkJUmVnaXN0ZXJzIHRoZSByYW5kb20gYW5kIHVyYW5kb20gZGV2aWNlcwo+ICsKPiAgZW5k
aWYKPiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrIGIvbGliL3Vrc3dyYW5k
L01ha2VmaWxlLnVrCj4gaW5kZXggOGQ0NDgyYzQuLjhjNmIzNjM3IDEwMDY0NAo+IC0tLSBhL2xp
Yi91a3N3cmFuZC9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi91a3N3cmFuZC9NYWtlZmlsZS51awo+
IEBAIC00LDMgKzQsNiBAQCBDSU5DTFVERVMtJChDT05GSUdfTElCVUtTV1JBTkQpCSs9IC1JJChM
SUJVS1NXUkFORF9CQVNFKS9pbmNsdWRlCj4gIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLU1dS
QU5EKSArPSAtSSQoTElCVUtTV1JBTkRfQkFTRSkvaW5jbHVkZQo+ICAKPiAgTElCVUtTV1JBTkRf
U1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9ICQoTElCVUtTV1JBTkRfQkFTRSkvbXdj
LmMKPiAraWZkZWYgQ09ORklHX0xJQlVLU1dSQU5EX0RFVl9SQU5ET00KPiArTElCVUtTV1JBTkRf
U1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9ICQoTElCVUtTV1JBTkRfQkFTRSkvbXdj
X2Rldi5jCj4gK2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi91a3N3cmFuZC9td2NfZGV2LmMgYi9s
aWIvdWtzd3JhbmQvbXdjX2Rldi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwMC4uMDlhOWM4MTcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3Vrc3dyYW5kL213Y19k
ZXYuYwo+IEBAIC0wLDAgKzEsMTIwIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2
bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQg
KGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRz
IHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFy
ZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRz
Cj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFT
IElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElG
SUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5j
bHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDx1ay9jdG9ycy5oPgo+ICsjaW5jbHVkZSA8dWsv
cHJpbnQuaD4KPiArI2luY2x1ZGUgPHVrL3N3cmFuZC5oPgo+ICsjaW5jbHVkZSA8dWsvYXNzZXJ0
Lmg+Cj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMu
aD4KPiArI2luY2x1ZGUgPHZmc2NvcmUvdWlvLmg+Cj4gKyNpbmNsdWRlIDxkZXZmcy9kZXZpY2Uu
aD4KPiArCj4gKyNkZWZpbmUgREVWX1JBTkRPTV9OQU1FICJyYW5kb20iCj4gKyNkZWZpbmUgREVW
X1VSQU5ET01fTkFNRSAidXJhbmRvbSIKPiArCj4gK2ludCBkZXZfcmFuZG9tX3JlYWQoc3RydWN0
IGRldmljZSAqZGV2IF9fdW51c2VkLCBzdHJ1Y3QgdWlvICp1aW8sCj4gKwkJCWludCBmbGFncyBf
X3VudXNlZCkKPiArewo+ICsJc2l6ZV90IGNvdW50LCBzdGVwLCBjaHVua19zaXplLCBpOwo+ICsJ
Y2hhciAqYnVmOwo+ICsJX191MzIgcmQ7Cj4gKwo+ICsJYnVmID0gdWlvLT51aW9faW92LT5pb3Zf
YmFzZTsKPiArCWNvdW50ID0gdWlvLT51aW9faW92LT5pb3ZfbGVuOwo+ICsKPiArCXN0ZXAgPSBz
aXplb2YoX191MzIpOwo+ICsJY2h1bmtfc2l6ZSA9IGNvdW50ICUgc3RlcDsKPiArCj4gKwlmb3Ig
KGkgPSAwOyBpIDwgY291bnQgLSBjaHVua19zaXplOyBpICs9IHN0ZXApCj4gKwkJKigoX191MzIg
KilidWYgKyBpKSA9IHVrX3N3cmFuZF9yYW5kcigpOwo+ICsKPiArCS8qIGZpbGwgdGhlIHJlbWFp
bmluZyBieXRlcyBvZiB0aGUgYnVmZmVyICovCj4gKwlpZiAoY2h1bmtfc2l6ZSA+IDApIHsKPiAr
CQlyZCA9IHVrX3N3cmFuZF9yYW5kcigpOwo+ICsJCW1lbWNweShidWYgKyBpLCAmcmQsIGNodW5r
X3NpemUpOwo+ICsJfQo+ICsKPiArCXVpby0+dWlvX3Jlc2lkID0gMDsKPiArCXJldHVybiAwOwo+
ICt9Cj4gKwo+ICtpbnQgZGV2X3JhbmRvbV9vcGVuKHN0cnVjdCBkZXZpY2UgKmRldmljZSBfX3Vu
dXNlZCwgaW50IG1vZGUgX191bnVzZWQpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsK
PiAraW50IGRldl9yYW5kb21fY2xvc2Uoc3RydWN0IGRldmljZSAqZGV2aWNlIF9fdW51c2VkKQo+
ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkZXZvcHMgcmFuZG9t
X2Rldm9wcyA9IHsKPiArCS5yZWFkID0gZGV2X3JhbmRvbV9yZWFkLAo+ICsJLm9wZW4gPSBkZXZf
cmFuZG9tX29wZW4sCj4gKwkuY2xvc2UgPSBkZXZfcmFuZG9tX2Nsb3NlLAo+ICt9Owo+ICsKPiAr
c3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3JhbmRvbSA9IHsKPiArCS5kZXZvcHMgPSAmcmFuZG9t
X2Rldm9wcywKPiArCS5kZXZzeiA9IDAsCj4gKwkubmFtZSA9IERFVl9SQU5ET01fTkFNRQo+ICt9
Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3VyYW5kb20gPSB7Cj4gKwkuZGV2b3Bz
ID0gJnJhbmRvbV9kZXZvcHMsCj4gKwkuZGV2c3ogPSAwLAo+ICsJLm5hbWUgPSBERVZfVVJBTkRP
TV9OQU1FCj4gK307Cj4gKwo+ICtfX2NvbnN0cnVjdG9yX3ByaW8oMTAyKSBzdGF0aWMgdm9pZCBf
dWtfZGV2X3N3cmFuZF9jdG9yKHZvaWQpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAr
Cj4gKwl1a19wcl9pbmZvKCJSZWdpc3RlciAlcyBhbmQgJXNcbiIsCj4gKwkJREVWX1JBTkRPTV9O
QU1FLCBERVZfVVJBTkRPTV9OQU1FKTsKPiArCj4gKwkvKiByZWdpc3RlciAvZGV2L3VyYW5kb20g
Ki8KPiArCWRldiA9IGRldmljZV9jcmVhdGUoJmRydl91cmFuZG9tLCBERVZfVVJBTkRPTV9OQU1F
LCBEX0NIUik7Cj4gKwlpZiAoZGV2ID09IE5VTEwpCj4gKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8g
cmVnaXN0ZXIgJXNcbiIsIERFVl9VUkFORE9NX05BTUUpOwo+ICsKPiArCS8qIHJlZ2lzdGVyIC9k
ZXYvcmFuZG9tICovCj4gKwlkZXYgPSBkZXZpY2VfY3JlYXRlKCZkcnZfcmFuZG9tLCBERVZfUkFO
RE9NX05BTUUsIERfQ0hSKTsKPiArCWlmIChkZXYgPT0gTlVMTCkKPiArCQl1a19wcl9lcnIoImZB
aWxlZCB0byByZWdpc3RlciAlc1xuIiwgREVWX1JBTkRPTV9OQU1FKTsKPiArfQo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 13:18:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 13:18: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 1hc8Zx-0007Kc-Pe; Sat, 15 Jun 2019 13:18:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=u0DT=UO=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hc8Zw-0007KX-CB
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 13:18:44 +0000
X-Inumbo-ID: 13e2f5d0-8f70-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 13e2f5d0-8f70-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 13:18:35 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id m3so5288036wrv.2
 for <minios-devel@lists.xen.org>; Sat, 15 Jun 2019 06:18:35 -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=JeJiBNAHIVCMCGH1yt0DG9Q9sw/EM9SA+V+rjcDArI4=;
 b=QfemsLmq/m4CX50+YHNFC9Pnzt8UWWaDsTOhd/i35a7IJfyOgSitDUhkeztj9VctoC
 OYbbnUYYL65WD3fgvRr5Wu38k3CUlFSiSOzlm3L7vgJHNv6rJGAFUzvEic3d7Rb3NtLi
 EeP26vZX3pwcSI5imzqnML7YwlRYDe2vEyANppqZ2tRxie/n20IYSXeECo8Ps6Dk83Zv
 vuzqoQ0hERnhERnlwZJvfHczIGcFgoU4iTJmvJMG/ij5wAF3ILagw6aq0+Vc3w+d5WId
 FQXKWHACNptvGztfxMgAp9eTSwhkiGJxzNSiRAfCYPBzTVIUDCMle5M9A24fV/U0GJwC
 ensA==
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=JeJiBNAHIVCMCGH1yt0DG9Q9sw/EM9SA+V+rjcDArI4=;
 b=LC8fN/MszuknuwBRFvZEy8w8NLZ9VbApsigtby18CBMfz8ltVGMDG0Gwjs3y7JHEer
 hpKSLjHa3DSUcPff1TeRBHfg/UmvCZlc72NaxvjEFLq+RAwgsRg/GDkhvg54qHAhaO+B
 XQa/WPM9pFs6DuxBzuUCvJ6ReFOpQLsTEauFlP4Vp+K47fFQO/1FzdXpmndhS80rdjB5
 fPNzKjZEnwPn3V4QSoKeXPi+pBoQUyYHiu+POrQnuV/QMgGporNejK5MiCtESO7FniA0
 ey8oVBH7404X2nis8OhI3/RW+z3gnLe1pm04A3mBpvcgKGSDBnfFhNEEojKP22sS0nFP
 /fMw==
X-Gm-Message-State: APjAAAV2M6nzDUW1jluoXMvDK+16/8R0P5GeppAKgs8EK7bA4CCMVhTl
 W3smsT7nGgj8RcnTw4GtRZtOKoyz8og=
X-Google-Smtp-Source: APXvYqyU+3iggOF6vreK9HIoaVhbCVR1+8+VFjc4bq8vvSpU8EkIOYrcKgfUwzuwWtrKclrS47jBxw==
X-Received: by 2002:a5d:6742:: with SMTP id l2mr6329941wrw.323.1560604713798; 
 Sat, 15 Jun 2019 06:18:33 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id a7sm4146421wrs.94.2019.06.15.06.18.32
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Jun 2019 06:18:33 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 15 Jun 2019 16:18:19 +0300
Message-Id: <20190615131819.23714-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH v2] Provide gethostbyname and
 gethostbyname_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: Mihai Pogonaru <pogonarumihai@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>

RGVmaW5lIGdldGhvc3RieW5hbWUgYW5kIGdldGhvc3RieW5hbWVfciBhcyB0aGVpciBMV0lQIGNv
dW50ZXJwYXJ0cy4KVGhlIGRlZmluZXMgYXJlIGluIHBsYWNlIGluIG9yaWdpbi9uZXRkYi5oLCBi
dXQgdGhleSBhcmUgcHJvdGVjdGVkIGJ5CkxXSVBfQ09NUEFUX1NPQ0tFVFMsIHdoaWNoIGZvciB1
cyBpcyBkZWZpbmVkIGFzIDAgc2luY2Ugd2UgcHJvdmlkZQp3cmFwcGVycyBmb3IgbW9zdCBvZiBz
b2NrZXQuaCBmdW5jdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBQb2dvbmFydSA8cG9nb25h
cnVtaWhhaUBnbWFpbC5jb20+Ci0tLQogZXhwb3J0c3ltcy51ayAgIHwgMiArKwogaW5jbHVkZS9u
ZXRkYi5oIHwgOCArKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCgpk
aWZmIC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9ydHN5bXMudWsKaW5kZXggMTcyMGUwMC4u
MzcwOTA0YSAxMDA2NDQKLS0tIGEvZXhwb3J0c3ltcy51aworKysgYi9leHBvcnRzeW1zLnVrCkBA
IC05LDYgKzksOCBAQCBsaXN0ZW4KIGx3aXBfaW9jdGwKIGx3aXBfaHRvbmwKIGx3aXBfaHRvbnMK
K2x3aXBfZ2V0aG9zdGJ5bmFtZQorbHdpcF9nZXRob3N0YnluYW1lX3IKIHBvbGwKIHJlY3YKIHJl
Y3Zmcm9tCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGRiLmggYi9pbmNsdWRlL25ldGRiLmgKaW5k
ZXggNmJhNmFhZC4uYmY1ZWRmZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXRkYi5oCisrKyBiL2lu
Y2x1ZGUvbmV0ZGIuaApAQCAtMSwzICsxLDExIEBACisjaWYgIShMV0lQX0NPTVBBVF9TT0NLRVRT
KQorCisjZGVmaW5lIGdldGhvc3RieW5hbWUobmFtZSkgbHdpcF9nZXRob3N0YnluYW1lKG5hbWUp
CisjZGVmaW5lIGdldGhvc3RieW5hbWVfcihuYW1lLCByZXQsIGJ1ZiwgYnVmbGVuLCByZXN1bHQs
IGhfZXJybm9wKSBcCisgICAgICAgbHdpcF9nZXRob3N0YnluYW1lX3IobmFtZSwgcmV0LCBidWYs
IGJ1ZmxlbiwgcmVzdWx0LCBoX2Vycm5vcCkKKworI2VuZGlmIC8qICEoTFdJUF9DT01QQVRfU09D
S0VUUykgKi8KKwogI2luY2x1ZGUgPGNvbXBhdC9wb3NpeC9uZXRkYi5oPgogCiBzdHJ1Y3Qgc2Vy
dmVudCB7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 18:11:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 18:11: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 1hcD8r-0004l9-BG; Sat, 15 Jun 2019 18:11:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3LFC=UO=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hcD8q-0004l4-BK
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 18:11:04 +0000
X-Inumbo-ID: ef20c8cc-8f98-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ef20c8cc-8f98-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 18:11:02 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id p11so5722667wre.7
 for <minios-devel@lists.xen.org>; Sat, 15 Jun 2019 11:11:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=gGVsLvE+K9GA6RC+mUEFvPpElQ1qfsak2hPup/ST+bo=;
 b=P78BIQ8CbqSNvkAYealrD+RO3zA8yLuPZ0d6F4Y15HgZX+dZ6pCnfd0c/bUE4w/bAI
 yWmqro3rSktGF+AOnskGpDOZKTCTk1h+EeR56D1D7G5F1y0VxLNvAGpLRE7QfT/2zWJa
 KUr8eayh/QlrL2IsjyC7a/qPSX8zajeJEmqLo/+fgtMlQips7kwo8K+o2y87Fx6CNrBh
 osgjViIMgxRJpnTR5b0V0o1amFWLcy/cVF+gHuyi5dOxYg9rX/SL42SfcwoWHwYnP3qf
 QjTSn4u5bY2bg/GXMg9r3mnfvhFHoQQw2XZBhb1GZ/pTQCR3eLmcfNx/EGplZ/lzg7ln
 r2Pg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=gGVsLvE+K9GA6RC+mUEFvPpElQ1qfsak2hPup/ST+bo=;
 b=XWaX+cBxHaRBqMfbHLt3Vx9ovfeGUzoTC2H2yQ7ZkJzuhDwvaJXx52dGbluq1XKVc4
 auw8cfTMNZRQTpHv9PCzDWxwBrmRajKsu2RCIsvMLntYgFUXbcmw3Xod+AIf5ucKSGsB
 zUsdZm8nFor/IAVwvMMLpPZBHwTX9u/YPnQEAf+NMb2hEP2SZcKS/llb9lGBLvFK++03
 vAe4BwOBgqfsmpUyb0ibNaCH5C+Q+SZiL8YkXNm+DsECdU8FPABG7S5HByX3cLdkOheW
 qzG0Ey/9PSQtNXU+w/QUrXpKslszgvDg1iLLjVB/++QEOsCGVJUNscVrcEj4gFopqJkP
 pYlA==
X-Gm-Message-State: APjAAAWIdVBbPhip2it5KLAzleKRis6quduNHlhkgz0fhrHHI2cuIUy6
 MUbJDtEVTx7weRiu/itG0Rk=
X-Google-Smtp-Source: APXvYqwT50ZjVn4Wpw+aAlRsVzbnnTTclHQpQQo50J4Qztv8Gw7D7CPQWZzpOsjPdux2iBvrqBGdtQ==
X-Received: by 2002:a5d:528b:: with SMTP id c11mr4162593wrv.25.1560622261743; 
 Sat, 15 Jun 2019 11:11:01 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id t15sm5491417wrx.84.2019.06.15.11.11.00
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Jun 2019 11:11:00 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190615131819.23714-1-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <fc14eb6d-24e4-b892-19ec-befe2843cd14@gmail.com>
Date: Sat, 15 Jun 2019 21:10:59 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190615131819.23714-1-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH v2] Provide gethostbyname
 and gethostbyname_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: costin.lupu@cs.pub.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>

VGhhbmtzLCBNaWhhaSEKCkZvciB0aGUgcmVjb3JkLCBpbiBvcmRlciB0byB0ZXN0IHRoaXMgcGF0
Y2gsIHRoZSBndWVzdCBuZWVkcyBhIEROUwpzZXJ2ZXIgd2hpY2ggY2FuIGJlIHByb3ZpZGVkIGZy
b20gdGhlIERIQ1Agc2VydmVyLCBpZiBESENQIGlzIHVzZWQuClNlY29uZCwgaWYgdGhlIEROUyBz
ZXJ2ZXIgaXMgbm90IGluIHRoZSBzYW1lIG5ldHdvcmsgdGhlbiBmb3J3YXJkaW5nCihhbmQgTkFU
KSBuZWVkcyB0byBiZSBjb25maWd1cmVkIG9uIHRoZSBob3N0LgoKUmV2aWV3ZWQtYnk6IENvc3Rp
biBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzE1LzE5IDQ6MTggUE0sIE1paGFp
IFBvZ29uYXJ1IHdyb3RlOgo+IERlZmluZSBnZXRob3N0YnluYW1lIGFuZCBnZXRob3N0YnluYW1l
X3IgYXMgdGhlaXIgTFdJUCBjb3VudGVycGFydHMuCj4gVGhlIGRlZmluZXMgYXJlIGluIHBsYWNl
IGluIG9yaWdpbi9uZXRkYi5oLCBidXQgdGhleSBhcmUgcHJvdGVjdGVkIGJ5Cj4gTFdJUF9DT01Q
QVRfU09DS0VUUywgd2hpY2ggZm9yIHVzIGlzIGRlZmluZWQgYXMgMCBzaW5jZSB3ZSBwcm92aWRl
Cj4gd3JhcHBlcnMgZm9yIG1vc3Qgb2Ygc29ja2V0LmggZnVuY3Rpb25zLgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAg
ZXhwb3J0c3ltcy51ayAgIHwgMiArKwo+ICBpbmNsdWRlL25ldGRiLmggfCA4ICsrKysrKysrCj4g
IDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9leHBv
cnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51awo+IGluZGV4IDE3MjBlMDAuLjM3MDkwNGEgMTAwNjQ0
Cj4gLS0tIGEvZXhwb3J0c3ltcy51awo+ICsrKyBiL2V4cG9ydHN5bXMudWsKPiBAQCAtOSw2ICs5
LDggQEAgbGlzdGVuCj4gIGx3aXBfaW9jdGwKPiAgbHdpcF9odG9ubAo+ICBsd2lwX2h0b25zCj4g
K2x3aXBfZ2V0aG9zdGJ5bmFtZQo+ICtsd2lwX2dldGhvc3RieW5hbWVfcgo+ICBwb2xsCj4gIHJl
Y3YKPiAgcmVjdmZyb20KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXRkYi5oIGIvaW5jbHVkZS9u
ZXRkYi5oCj4gaW5kZXggNmJhNmFhZC4uYmY1ZWRmZiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL25l
dGRiLmgKPiArKysgYi9pbmNsdWRlL25ldGRiLmgKPiBAQCAtMSwzICsxLDExIEBACj4gKyNpZiAh
KExXSVBfQ09NUEFUX1NPQ0tFVFMpCj4gKwo+ICsjZGVmaW5lIGdldGhvc3RieW5hbWUobmFtZSkg
bHdpcF9nZXRob3N0YnluYW1lKG5hbWUpCj4gKyNkZWZpbmUgZ2V0aG9zdGJ5bmFtZV9yKG5hbWUs
IHJldCwgYnVmLCBidWZsZW4sIHJlc3VsdCwgaF9lcnJub3ApIFwKPiArICAgICAgIGx3aXBfZ2V0
aG9zdGJ5bmFtZV9yKG5hbWUsIHJldCwgYnVmLCBidWZsZW4sIHJlc3VsdCwgaF9lcnJub3ApCj4g
Kwo+ICsjZW5kaWYgLyogIShMV0lQX0NPTVBBVF9TT0NLRVRTKSAqLwo+ICsKPiAgI2luY2x1ZGUg
PGNvbXBhdC9wb3NpeC9uZXRkYi5oPgo+ICAKPiAgc3RydWN0IHNlcnZlbnQgewo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 18:14:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 18: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 1hcDC0-0004vr-1R; Sat, 15 Jun 2019 18:14:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3LFC=UO=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hcDBy-0004vk-I3
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 18:14:18 +0000
X-Inumbo-ID: 635579d3-8f99-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 635579d3-8f99-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 18:14:17 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id f17so2717616wme.2
 for <minios-devel@lists.xen.org>; Sat, 15 Jun 2019 11:14:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=h3q17WQwy9+zYVocQydSWRZkHC2U9ZDom9uiHJ+4EpM=;
 b=XPbibSwBNIKSdGuV1Modp24P/lRLFGJpYHLhb1c1om0STsC9lnQD3NK4Z1Uc1fOe8o
 HQUiMrVjPTx58cKDFaA+rjJG2Qi+F40IPMdYnkI0TtsKcfr9lVZCMGPCrOvrT1VyHAJE
 h0mqMGF1Sm/ZkhA50D/EcnixU/6IuYmGnDb7xidA3US/kLF40dhvaGEbkubtxWeVn/Jm
 +qZG49eGuCJvxVSxsAlIVddSJyMTGJfAoi5r9Qo2cAGHJB2x+rQ9vC7y6yqk1/yaix/Y
 Ci/W87QeKG9qm443OZZqN74BB16KAjTt5FNQfIq3kUZJmRuYT2jtxOBVEUE9MT2gzo8T
 ql+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=h3q17WQwy9+zYVocQydSWRZkHC2U9ZDom9uiHJ+4EpM=;
 b=mHCypxbuqjJpWAvRMUVhAJCBepmImX3EWp4VHBGBEN9zroHUBN7souhb3qNH5bjwr0
 +n4VIH95fu1is77+CNF14Eze7Nf6FlJE/OygO4AL3Ju4/H76gAFV5e+JgsoGhHhNa3mW
 dESWquySrUlRDZdEnsLoOsdO36koHGcLRypnsFGzbQ2RTHwm3ykHOXNB72q6ctUXQBn9
 HHEvob+UWhTG2OhWQZ24qSyrTdWtCxh6fMncxvGRUdrOse4TN7SNTJDtGuZ0fMI+qGyr
 XqapXJcrSNh2yulHrEGGMVr3K/sVQyORJgDNjcFV6m0VgjQ5DLxxlCugKbPuSkJWRc7D
 cNMw==
X-Gm-Message-State: APjAAAVbAi9SJVjeDXqe0rkvJTLtsDa9pYwskALkQFIojT3AVzSWk+F8
 AikZCHUubYwQRbjdTsVUh6I/dXtZ
X-Google-Smtp-Source: APXvYqwn1SqRhMVUR+cTZX8Yrcl05j/w40EvIgMJRv/89g0d+nktwFiZelA2/76cMjY8pc+vuChZFg==
X-Received: by 2002:a1c:a848:: with SMTP id r69mr11903027wme.12.1560622456733; 
 Sat, 15 Jun 2019 11:14:16 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id q20sm14885419wra.36.2019.06.15.11.14.15
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Jun 2019 11:14:16 -0700 (PDT)
To: Felipe Huici <Felipe.Huici@neclab.eu>,
 =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611014420.30686-4-vlad_andrei.badoiu@stud.acs.upb.ro>
 <72833A51-6A2E-4A6A-801A-10ADC00FA757@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <350a9a3b-ec3b-bfec-1493-cc7dcac3f120@gmail.com>
Date: Sat, 15 Jun 2019 21:14:15 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <72833A51-6A2E-4A6A-801A-10ADC00FA757@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 3/3] Implement gethostname
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGksCgpUaGlzIHBhdGNoIHdhcyBzdXBlcnNlZWRlZCBieQonW1VOSUtSQUZUL0xXSVAgUEFUQ0gg
djJdIFByb3ZpZGUgZ2V0aG9zdGJ5bmFtZSBhbmQgZ2V0aG9zdGJ5bmFtZV9yJwp3aGljaCB3YXMg
c2VudCBieSBNaWhhaS4KCkNoZWVycywKQ29zdGluCgpPbiA2LzExLzE5IDEwOjU5IEFNLCBGZWxp
cGUgSHVpY2kgd3JvdGU6Cj4gSGksCj4gCj4gTG9va3MgZ29vZCwgdGhhbmtzLgo+IAo+IOKAlCBG
ZWxpcGUKPiAKPiBSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFi
LmV1Pgo+IAo+IO+7v09uIDExLjA2LjE5LCAwODozMiwgIlZsYWQtQW5kcmVpIELEgkRPSVUgKDc4
NjkyKSIgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOgo+IAo+ICAg
ICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBz
dHVkLmFjcy51cGIucm8+Cj4gICAgIC0tLQo+ICAgICAgbmV0d29yay5jIHwgMTMgKysrKysrKysr
KysrKwo+ICAgICAgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKPiAgICAgCj4gICAg
IGRpZmYgLS1naXQgYS9uZXR3b3JrLmMgYi9uZXR3b3JrLmMKPiAgICAgaW5kZXggNWQ3ODIzYi4u
M2E1N2IxOSAxMDA2NDQKPiAgICAgLS0tIGEvbmV0d29yay5jCj4gICAgICsrKyBiL25ldHdvcmsu
Ywo+ICAgICBAQCAtMSw5ICsxLDIyIEBACj4gICAgICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gICAg
ICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gICAgICAjaW5jbHVkZSA8bmV0ZGIuaD4KPiAgICAgKyNp
bmNsdWRlIDxlcnJuby5oPgo+ICAgICArI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Cj4gICAgICAK
PiAgICAgIGludCBnZXRob3N0bmFtZShjaGFyICpuYW1lLCBzaXplX3QgbGVuKQo+ICAgICAgewo+
ICAgICArCXN0cnVjdCB1dHNuYW1lIGJ1ZjsKPiAgICAgKwlzaXplX3Qgbm9kZV9sZW47Cj4gICAg
ICsKPiAgICAgKwlpZiAodW5hbWUoJmJ1ZikpCj4gICAgICsJCXJldHVybiAtMTsKPiAgICAgKwlu
b2RlX2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsKPiAgICAgKwltZW1jcHkobmFtZSwg
YnVmLm5vZGVuYW1lLCBsZW4gPCBub2RlX2xlbiA/IGxlbiA6IG5vZGVfbGVuKTsKPiAgICAgKwlp
ZiAobm9kZV9sZW4gPiBsZW4pIHsKPiAgICAgKwkJZXJybm8gPSBFTkFNRVRPT0xPTkc7Cj4gICAg
ICsJCXJldHVybiAtMTsKPiAgICAgKwl9Cj4gICAgICAJcmV0dXJuIDA7Cj4gICAgICB9Cj4gICAg
ICAKPiAgICAgLS0gCj4gICAgIDIuMjEuMAo+ICAgICAKPiAgICAgCj4gCj4gX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 18:17:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 18:17: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 1hcDEf-00051v-9P; Sat, 15 Jun 2019 18:17:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3LFC=UO=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hcDEe-00051q-04
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 18:17:04 +0000
X-Inumbo-ID: c57acfaa-8f99-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c57acfaa-8f99-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 18:17:02 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id f9so5682933wre.12
 for <minios-devel@lists.xen.org>; Sat, 15 Jun 2019 11:17:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:from:to:cc:references:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=YYH9PkFZdzhG37HCktVQMtFmdWD8WtFYbs8eDCbABu8=;
 b=Nt09NzYT4Znx4XlGZvN8u9zI9jsF0mONeMmus8d+314I6pfnsDJI6IzngZHW8XWUZ4
 Jq3abXXV2cBA5qvZyCIqqgKx8QH/+TyVcRcngFyXYG8FjYt03l8M1PnF1d0fdFTh9mNp
 xLpTNZfxxZel+tWcOojuXT1G5pro8ZbSor5vHBcE8tUTK5zGd3V+ilL58XsczlUDC2f5
 GsaVcItI89n1rrOWajeZUPHWKkYPBZAjgD1eKYwVC94mcygtY43UW0vRjnvTgjVRvVkg
 wKuoGJdNp5e4NQ8HwzJmiz2vjk4innmQmxeYiPG1n1tLPLtu1kJcmLxLtkmSGecrnwTm
 z6Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:from:to:cc:references:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=YYH9PkFZdzhG37HCktVQMtFmdWD8WtFYbs8eDCbABu8=;
 b=G/7IBCxw0+Pealll+yu1WZ4vYJeDrfDQhuw6peeRFuU14skQHPBfcsKfzcHHID3E9c
 j/jDmu5SKBkFo7DhSCAhPVoMbhuJEm462KN2NqhbjCp4F9nLxy5xBohLgJJ8kwnx4A/1
 lHisv5VXcT2g5DPA8BCDMgRyJ9xxq3rofngpWe4URqW2nfQ4e9tG7EpG5sXCJBfMecuK
 6HW/sHzQFimfFxKnQSbvbGAIPyDUpmcaz97Oe5bam2q/K/DL9cg+QJGHTZDy1l3KhyEU
 x+Y7y07M8MSGgUp/FEHwmfLUJEiSJ5FKwDcfiM9QMTpLNkkYO/QQJ0gUIisy6mS7zPRz
 D9Kw==
X-Gm-Message-State: APjAAAWD5RSPBaDepXk/vPyZfhO7EL3gNzmYi7YI+uPmz/jQvP7ZMPq6
 +/KJvp648gqbIc48BrksL1o=
X-Google-Smtp-Source: APXvYqxTGxRjr0y/zMAFy/nxfwovY/Rm7PnW1Cddak0F17Wn977J+PwFtPy9PSaveyIKBAsmnpUVTA==
X-Received: by 2002:adf:f582:: with SMTP id f2mr11952266wro.144.1560622621355; 
 Sat, 15 Jun 2019 11:17:01 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id s12sm5777996wmh.34.2019.06.15.11.17.00
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Jun 2019 11:17:00 -0700 (PDT)
From: Costin Lupu <costin.lup@gmail.com>
To: Felipe Huici <Felipe.Huici@neclab.eu>,
 =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611014420.30686-4-vlad_andrei.badoiu@stud.acs.upb.ro>
 <72833A51-6A2E-4A6A-801A-10ADC00FA757@neclab.eu>
 <350a9a3b-ec3b-bfec-1493-cc7dcac3f120@gmail.com>
Message-ID: <8c3fc466-b41c-f236-9e11-4f7c530bf738@gmail.com>
Date: Sat, 15 Jun 2019 21:17:00 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <350a9a3b-ec3b-bfec-1493-cc7dcac3f120@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 3/3] Implement gethostname
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

QWN0dWFsbHksIEkgd2FzIHdyb25nLiBnZXRob3N0bmFtZSgpIHNob3VsZCBzdGF5IGluIHRoZSBg
dWtzeXNpbmZvYApsaWJyYXJ5LiBTbywgVmxhZCwgcGxlYXNlIG1ha2UgYSBwYXRjaCBmb3IgVW5p
a3JhZnQgd2l0aCB0aGlzIG9uZS4KCkNoZWVycywKQ29zdGluCgpPbiA2LzE1LzE5IDk6MTQgUE0s
IENvc3RpbiBMdXB1IHdyb3RlOgo+IEhpLAo+IAo+IFRoaXMgcGF0Y2ggd2FzIHN1cGVyc2VlZGVk
IGJ5Cj4gJ1tVTklLUkFGVC9MV0lQIFBBVENIIHYyXSBQcm92aWRlIGdldGhvc3RieW5hbWUgYW5k
IGdldGhvc3RieW5hbWVfcicKPiB3aGljaCB3YXMgc2VudCBieSBNaWhhaS4KPiAKPiBDaGVlcnMs
Cj4gQ29zdGluCj4gCj4gT24gNi8xMS8xOSAxMDo1OSBBTSwgRmVsaXBlIEh1aWNpIHdyb3RlOgo+
PiBIaSwKPj4KPj4gTG9va3MgZ29vZCwgdGhhbmtzLgo+Pgo+PiDigJQgRmVsaXBlCj4+Cj4+IFJl
dmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+Cj4+Cj4+IO+7
v09uIDExLjA2LjE5LCAwODozMiwgIlZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSIgPHZsYWRf
YW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOgo+Pgo+PiAgICAgU2lnbmVkLW9m
Zi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBi
LnJvPgo+PiAgICAgLS0tCj4+ICAgICAgbmV0d29yay5jIHwgMTMgKysrKysrKysrKysrKwo+PiAg
ICAgIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCj4+ICAgICAKPj4gICAgIGRpZmYg
LS1naXQgYS9uZXR3b3JrLmMgYi9uZXR3b3JrLmMKPj4gICAgIGluZGV4IDVkNzgyM2IuLjNhNTdi
MTkgMTAwNjQ0Cj4+ICAgICAtLS0gYS9uZXR3b3JrLmMKPj4gICAgICsrKyBiL25ldHdvcmsuYwo+
PiAgICAgQEAgLTEsOSArMSwyMiBAQAo+PiAgICAgICNpbmNsdWRlIDxzdHJpbmcuaD4KPj4gICAg
ICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4+ICAgICAgI2luY2x1ZGUgPG5ldGRiLmg+Cj4+ICAgICAr
I2luY2x1ZGUgPGVycm5vLmg+Cj4+ICAgICArI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Cj4+ICAg
ICAgCj4+ICAgICAgaW50IGdldGhvc3RuYW1lKGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pCj4+ICAg
ICAgewo+PiAgICAgKwlzdHJ1Y3QgdXRzbmFtZSBidWY7Cj4+ICAgICArCXNpemVfdCBub2RlX2xl
bjsKPj4gICAgICsKPj4gICAgICsJaWYgKHVuYW1lKCZidWYpKQo+PiAgICAgKwkJcmV0dXJuIC0x
Owo+PiAgICAgKwlub2RlX2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsKPj4gICAgICsJ
bWVtY3B5KG5hbWUsIGJ1Zi5ub2RlbmFtZSwgbGVuIDwgbm9kZV9sZW4gPyBsZW4gOiBub2RlX2xl
bik7Cj4+ICAgICArCWlmIChub2RlX2xlbiA+IGxlbikgewo+PiAgICAgKwkJZXJybm8gPSBFTkFN
RVRPT0xPTkc7Cj4+ICAgICArCQlyZXR1cm4gLTE7Cj4+ICAgICArCX0KPj4gICAgICAJcmV0dXJu
IDA7Cj4+ICAgICAgfQo+PiAgICAgIAo+PiAgICAgLS0gCj4+ICAgICAyLjIxLjAKPj4gICAgIAo+
PiAgICAgCj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCj4+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCj4+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWwKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 18:18:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 18:18:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hcDFj-00053M-DT; Sat, 15 Jun 2019 18:18:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3LFC=UO=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hcDFh-00053H-RK
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 18:18:09 +0000
X-Inumbo-ID: ed2bea9a-8f99-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ed2bea9a-8f99-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 18:18:09 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id g135so5390847wme.4
 for <minios-devel@lists.xen.org>; Sat, 15 Jun 2019 11:18:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=aiatzTz46louCGWRF92cinWXczUM5yZFU9ZAqTjHgic=;
 b=HX1EBvn8ya9gZJRYK6UuOnX3jNM1Sw3Y8Kmrwqtq3otXQoAQZuxg825PLsO4Q4ScJE
 bPsJnzzsLQYp7o36dHSH2pnA3oO9tF6f6QzHyBVPwHM5yaZpojY9wlu4purtAZCzncgb
 QHZpYCkZShOhsK+o14LT/FiJDg5lviU8/A95J4W2M6yqq9+sLVCGcutkUPaVF8ra3A6x
 l4U0+QZAbQe9qDlTj0UgyZT9RGQ8VdVzQQDqEzn1mkMW8NwOBG/YbXOrZ+nS8tY/b9oN
 G9ORUN9NjOptZ96FTSWtAAocdVjv+OascX6zzhTM6y+BqATyrS+XAYHOihVktriMOVqP
 zC4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=aiatzTz46louCGWRF92cinWXczUM5yZFU9ZAqTjHgic=;
 b=NTuHD6frbBfCiyK1oly+81SV9qd4oPCqas7ovudFv4iBg95B3EaAhwFYGFXzJeASxb
 vfNesS+EcqU5Z1AcAtMxD21qi0QXOnSKF8N9LJaqHlRko6c5VixvRC7hUlJ7ypVmZFes
 O5IiV2waJ7IOPnDzGGT/3sDemZigBptGk/BtjZrWa3doQ5D8+PLsFUEa5jFU8UZ2CUjW
 bhxcoz1ZJSzJ9pdROY+pxNYs3hYMUoJRn45JTIz7MR0P7F6A8dS/LG9KCphNUWKw6m0A
 5zPZGfm9znAcvd/dsMwvUnOpIV0LJBc4sEsZ5Av7cVqjDf1ZYT+o9b9nbOh9TWuuPRBP
 XZ+Q==
X-Gm-Message-State: APjAAAV4RLnxtJTxaIvNfNC1/DYsexC8g5wgkhyDmL0P1EBcJeSIRHGl
 PMJBdE+V9KScUS2Pek6lP+U=
X-Google-Smtp-Source: APXvYqwNl8//8HcvMUTaop6Wq2Xn3RFHzRvhH3yiiiYFdi5bx5T0WKtXisSAmIQLEza/VSfuHkcPFA==
X-Received: by 2002:a1c:a997:: with SMTP id
 s145mr12111946wme.106.1560622687967; 
 Sat, 15 Jun 2019 11:18:07 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id o13sm12940843wra.92.2019.06.15.11.18.07
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Jun 2019 11:18:07 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190611014420.30686-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190611014420.30686-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <5d72b03c-c86a-a209-feab-cd27c97201ff@gmail.com>
Date: Sat, 15 Jun 2019 21:18:06 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190611014420.30686-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 2/3] Add gethost* and
 getservr* 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@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGksCgpUaGlzIGlzIHRoZSBwYXRjaCB0aGF0IHdhcyBzdXBlcnNlZWRlZCBieQonW1VOSUtSQUZU
L0xXSVAgUEFUQ0ggdjJdIFByb3ZpZGUgZ2V0aG9zdGJ5bmFtZSBhbmQgZ2V0aG9zdGJ5bmFtZV9y
Jwp3aGljaCB3YXMgc2VudCBieSBNaWhhaS4KClZsYWQsIHBsZWFzZSBwcmVwYXJlIGEgbmV3IHNl
cmllcyBmb3IgbHdpcCBnbHVlIGNvZGUgd2l0aCB0aGUgcmVtYWluaW5nCmZ1bmN0aW9ucy4KCkNo
ZWVycywKQ29zdGluCgpPbiA2LzExLzE5IDQ6NDQgQU0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4
NjkyKSB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5k
cmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIE1ha2VmaWxlLnVrIHwgIDEgKwo+
ICBuZXR3b3JrLmMgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMiBmaWxl
cyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXR3b3Jr
LmMKPiAKPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awo+IGluZGV4IDU0
NTBlZDIuLmNjYjdmMTMgMTAwNjQ0Cj4gLS0tIGEvTWFrZWZpbGUudWsKPiArKysgYi9NYWtlZmls
ZS51awo+IEBAIC0xMTYsNiArMTE2LDcgQEAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJO
RVdMSUJDX0JBU0UpL2xvY2FsZS5jCj4gIExJQk5FV0xJQkdMVUVfU1JDUy15ICs9ICQoTElCTkVX
TElCQ19CQVNFKS9kZXYuYwo+ICBMSUJORVdMSUJHTFVFX1NSQ1MteSArPSAkKExJQk5FV0xJQkNf
QkFTRSkvc2lnbmFsLmMKPiAgTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JB
U0UpL3Byb3RvLmMKPiArTElCTkVXTElCR0xVRV9TUkNTLXkgKz0gJChMSUJORVdMSUJDX0JBU0Up
L25ldHdvcmsuYwo+ICAKPiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgIyBOZXdsaWIvbGli
YyBjb2RlIC0tIGFyZ3oKPiBkaWZmIC0tZ2l0IGEvbmV0d29yay5jIGIvbmV0d29yay5jCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41ZDc4MjNiCj4gLS0tIC9kZXYvbnVs
bAo+ICsrKyBiL25ldHdvcmsuYwo+IEBAIC0wLDAgKzEsMjggQEAKPiArI2luY2x1ZGUgPHN0cmlu
Zy5oPgo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gKyNpbmNsdWRlIDxuZXRkYi5oPgo+ICsKPiAr
aW50IGdldGhvc3RuYW1lKGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pCj4gK3sKPiArCXJldHVybiAw
Owo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZShjb25zdCBjaGFyICpu
YW1lKQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RydWN0IGhvc3RlbnQgKmdl
dGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqYWRkciwgc29ja2xlbl90IGxlbiwgaW50IHR5cGUpCj4g
K3sKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5
bmFtZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwcm90bykKPiArewo+ICsJcmV0dXJu
IE5VTEw7Cj4gK30KPiArCj4gK3N0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0KGludCBwb3J0
LCBjb25zdCBjaGFyICpwcm90bykKPiArewo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiAKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 21:27:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 21:27: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 1hcGDG-0002Yy-5U; Sat, 15 Jun 2019 21:27: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=gJz6=UO=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hcGDE-0002YR-JM
 for minios-devel@lists.xenproject.org; Sat, 15 Jun 2019 21:27:48 +0000
X-Inumbo-ID: 69b672a2-8fb4-11e9-bc53-776c969f12c2
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 69b672a2-8fb4-11e9-bc53-776c969f12c2;
 Sat, 15 Jun 2019 21:27:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E0A17F2038;
 Sat, 15 Jun 2019 23:27:43 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IhEjkJVlfFbk; Sat, 15 Jun 2019 23:27:43 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B5D08F2009;
 Sat, 15 Jun 2019 23:27:39 +0200 (CEST)
Received: from HYDRA.office.hd ([169.254.4.112]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Sat, 15 Jun 2019 23:27:39
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
Thread-Index: AQHVISELatNbyMr4PkmwaAaPjK9xQaabvpeAgAGBdgA=
Date: Sat, 15 Jun 2019 21:27:38 +0000
Message-ID: <2535E18D-B1EF-40DD-AA03-C974E12F2EF4@neclab.eu>
References: <20190612131553.19420-1-felipe.huici@neclab.eu>
 <20190612131553.19420-2-felipe.huici@neclab.eu>
 <37888586-440e-37bd-4032-157e922e2e61@stud.acs.upb.ro>
In-Reply-To: <37888586-440e-37bd-4032-157e922e2e61@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.208]
Content-ID: <0D7A0C41B2316042BC4CA7548CCFD56A@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/3] Implement
 _mm_pause
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IFZsYWQsIGdvb2QgY2F0Y2gsIEknbGwgc2VuZCBhIHYyLg0KDQpUaGFua3MsDQoNCi0tIEZl
bGlwZQ0KDQrvu79PbiAxNS4wNi4xOSwgMDI6MjgsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9m
IFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSIgPG1pbmlvcy1kZXZlbC1ib3VuY2VzQGxpc3Rz
LnhlbnByb2plY3Qub3JnIG9uIGJlaGFsZiBvZiB2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3Mu
dXBiLnJvPiB3cm90ZToNCg0KICAgIEFjdHVhbGx5IEkgaGF2ZSBhIHNtYWxsIGNvbW1lbnQgaW5s
aW5lLg0KICAgIA0KICAgIFZsYWQNCiAgICANCiAgICBPbiA2LzEyLzE5IDQ6MTUgUE0sIEZlbGlw
ZSBIdWljaSB3cm90ZToNCiAgICA+IEZyb206IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50
aGFuYW1AbmVjbGFiLmV1Pg0KICAgID4NCiAgICA+IFNpZ25lZC1vZmYtYnk6IFNoYXJhbiBTYW50
aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pg0KICAgID4gU2lnbmVkLW9mZi1ieTog
RmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0KICAgID4gLS0tDQogICAgPiAg
IGluY2x1ZGUvZW1taW50cmluLmggfCAgOSAtLS0tLS0tLS0NCiAgICA+ICAgaW5jbHVkZS94bW1p
bnRyaW4uaCB8IDIxICsrKysrKysrKysrKysrKysrKysrKw0KICAgID4gICAyIGZpbGVzIGNoYW5n
ZWQsIDIxIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQogICAgPg0KICAgID4gZGlmZiAt
LWdpdCBhL2luY2x1ZGUvZW1taW50cmluLmggYi9pbmNsdWRlL2VtbWludHJpbi5oDQogICAgPiBp
bmRleCA4NzAzYjlhLi5jMDU3M2ExIDEwMDY0NA0KICAgID4gLS0tIGEvaW5jbHVkZS9lbW1pbnRy
aW4uaA0KICAgID4gKysrIGIvaW5jbHVkZS9lbW1pbnRyaW4uaA0KICAgID4gQEAgLTQ5OTksMTUg
KzQ5OTksNiBAQCBfbW1fY2FzdHNpMTI4X3BkKF9fbTEyOGkgX19hKQ0KICAgID4gICBleHRlcm4g
IkMiIHsNCiAgICA+ICAgI2VuZGlmDQogICAgPiAgIA0KICAgID4gLS8vLyBJbmRpY2F0ZXMgdGhh
dCBhIHNwaW4gbG9vcCBpcyBiZWluZyBleGVjdXRlZCBmb3IgdGhlIHB1cnBvc2VzIG9mDQogICAg
PiAtLy8vICAgIG9wdGltaXppbmcgcG93ZXIgY29uc3VtcHRpb24gZHVyaW5nIHRoZSBsb29wLg0K
ICAgID4gLS8vLw0KICAgID4gLS8vLyBcaGVhZGVyZmlsZSA8eDg2aW50cmluLmg+DQogICAgPiAt
Ly8vDQogICAgPiAtLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRvIHRoZSA8Yz4gUEFV
U0UgPC9jPiBpbnN0cnVjdGlvbi4NCiAgICA+IC0vLy8NCiAgICA+IC12b2lkIF9tbV9wYXVzZSh2
b2lkKTsNCiAgICA+IC0NCiAgICA+ICAgI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpDQogICAgPiAg
IH0gLy8gZXh0ZXJuICJDIg0KICAgID4gICAjZW5kaWYNCiAgICA+IGRpZmYgLS1naXQgYS9pbmNs
dWRlL3htbWludHJpbi5oIGIvaW5jbHVkZS94bW1pbnRyaW4uaA0KICAgID4gaW5kZXggZTI1NDNh
Ny4uMmRmYTRkNSAxMDA2NDQNCiAgICA+IC0tLSBhL2luY2x1ZGUveG1taW50cmluLmgNCiAgICA+
ICsrKyBiL2luY2x1ZGUveG1taW50cmluLmgNCiAgICA+IEBAIC0yNSw2ICsyNSwxNSBAQA0KICAg
ID4gICAjZGVmaW5lIF9fWE1NSU5UUklOX0gNCiAgICA+ICAgDQogICAgPiAgICNpbmNsdWRlIDxt
bWludHJpbi5oPg0KICAgID4gKy8qIERlZmluZSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0
aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCiAgICA+ICsjaWZkZWYgIF9fR05VQ19fDQog
ICAgPiArI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s
aW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQogICAgPiArI2RlZmlu
ZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf
X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KICAgID4gKyNlbHNlDQogICAgPiAr
I2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l
X18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UyIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9f
KDEyOCkpKQ0KICAgID4gKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0
ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCxzc2Uy
IiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQogICAgPiArI2VuZGlmDQogICAgPiArDQog
ICAgDQogICAgVGhvc2UgbWFjcm9zIHNob3VsZCBiZSBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIHBy
ZXZpb3VzIGNvbW1pdFsxXS4gQWZ0ZXIgDQogICAgYXBwbHlpbmcgdGhpcyBwYXRjaCB3ZSBlbmQg
dXAgd2l0aCB0aGVtIGRlZmluZWQgdHdpY2UuDQogICAgDQogICAgWzFdIA0KICAgIHhlbmJpdHMu
eGVuLm9yZy9naXR3ZWIvP3A9dW5pa3JhZnQvbGlicy9pbnRlbC1pbnRyaW5zaWNzLmdpdDthPWJs
b2I7Zj1pbmNsdWRlL3htbWludHJpbi5oO2g9ZTI1NDNhNzc5ZTA3YTI4MzA1N2Y0ZmNiZTQ1YTJh
Y2QxMGY2MmNjNDtoYj00ZGNmYmMxZjVlNzlhMGUzOGY4YzBiYjYwNTIwYWRhNmJmNDg0ZWFjDQog
ICAgDQogICAgPiAgIA0KICAgID4gICB0eXBlZGVmIGludCBfX3Y0c2kgX19hdHRyaWJ1dGVfXygo
X192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0KICAgID4gICB0eXBlZGVmIGZsb2F0IF9fdjRzZiBfX2F0
dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQogICAgPiBAQCAtMzA4Niw2ICszMDk1
LDE4IEBAIGRvIHsgXA0KICAgID4gICAjZGVmaW5lIF9tXyBfbW1fDQogICAgPiAgICNkZWZpbmUg
X21fIF9tbV8NCiAgICA+ICAgDQogICAgPiArLy8vIEluZGljYXRlcyB0aGF0IGEgc3BpbiBsb29w
IGlzIGJlaW5nIGV4ZWN1dGVkIGZvciB0aGUgcHVycG9zZXMgb2YNCiAgICA+ICsvLy8gICAgb3B0
aW1pemluZyBwb3dlciBjb25zdW1wdGlvbiBkdXJpbmcgdGhlIGxvb3AuDQogICAgPiArLy8vDQog
ICAgPiArLy8vIFxoZWFkZXJmaWxlIDx4ODZpbnRyaW4uaD4NCiAgICA+ICsvLy8NCiAgICA+ICsv
Ly8gVGhpcyBpbnRyaW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVVTRSA8L2M+IGluc3Ry
dWN0aW9uLg0KICAgID4gKy8vLw0KICAgID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfX0RFRkFVTFRf
Rk5fQVRUUlMgX21tX3BhdXNlKHZvaWQpDQogICAgPiArew0KICAgID4gKwlfX2J1aWx0aW5faWEz
Ml9wYXVzZSgpOw0KICAgID4gK30NCiAgICA+ICsNCiAgICA+ICAgI3VuZGVmIF9fREVGQVVMVF9G
Tl9BVFRSUw0KICAgID4gICAjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KICAgID4gICAN
CiAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KICAg
IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QNCiAgICBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcNCiAgICBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVsDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 21:29:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 21:29: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 1hcGEk-0002ao-D2; Sat, 15 Jun 2019 21:29: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=gJz6=UO=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hcGEj-0002aZ-C0
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 21:29:21 +0000
X-Inumbo-ID: a1880f60-8fb4-11e9-b888-fb4b18d80b1b
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id a1880f60-8fb4-11e9-b888-fb4b18d80b1b;
 Sat, 15 Jun 2019 21:29:18 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 01F6440C89;
 Sat, 15 Jun 2019 23:29:17 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Sat, 15 Jun 2019 23:29:12 +0200
Message-Id: <20190615212915.9660-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 0/3] Patches in
 support of mkl-dnn
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>
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>

VGhpcyBzZXJpZXMgY29udGFpbnMgY2hhbmdlcyBuZWVkZWQgdG8gcG9ydCBta2wtZG5uIHRvIFVu
aWtyYWZ0LgoKQ2hhbmdlcyBmcm9tIHYxOgoKKikgUmVtb3ZlZCBkdXBsaWNhdGUgbWFjcm8gZGVm
aW5pdGlvbnMKCkZlbGlwZSBIdWljaSAoMSk6CiAgSW1wbGVtZW50IF9tbV9nZXRjc3IgYW5kIF9t
bV9zZXRjc3IKClNoYXJhbiBTYW50aGFuYW0gKDIpOgogIEltcGxlbWVudCBfbW1fcGF1c2UKICBf
bW1fYWxpZ25yX2VwaTggdG8gdXNlIGNvbXBpbGVyIGJ1aWx0aW4KCiBpbmNsdWRlL2VtbWludHJp
bi5oIHwgIDkgLS0tLS0tLS0tCiBpbmNsdWRlL3RtbWludHJpbi5oIHwgIDYgKysrKysrCiBpbmNs
dWRlL3htbWludHJpbi5oIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst
LS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z
KC0pCgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 21:29:22 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 21:29: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 1hcGEk-0002ai-BN; Sat, 15 Jun 2019 21:29: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=gJz6=UO=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hcGEj-0002aY-AH
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 21:29:21 +0000
X-Inumbo-ID: a1ea3c9e-8fb4-11e9-a012-57963f72b386
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id a1ea3c9e-8fb4-11e9-a012-57963f72b386;
 Sat, 15 Jun 2019 21:29:18 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 4ED0D413E9;
 Sat, 15 Jun 2019 23:29:18 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Sat, 15 Jun 2019 23:29:13 +0200
Message-Id: <20190615212915.9660-2-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190615212915.9660-1-felipe.huici@neclab.eu>
References: <20190615212915.9660-1-felipe.huici@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 1/3] Implement
 _mm_pause
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 Sharan Santhanam <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>

RnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpTaWdu
ZWQtb2ZmLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4K
U2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IGluY2x1ZGUvZW1taW50cmluLmggfCAgOSAtLS0tLS0tLS0KIGluY2x1ZGUveG1taW50cmluLmgg
fCAzMCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjEg
aW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbW1p
bnRyaW4uaCBiL2luY2x1ZGUvZW1taW50cmluLmgKaW5kZXggODcwM2I5YS4uYzA1NzNhMSAxMDA2
NDQKLS0tIGEvaW5jbHVkZS9lbW1pbnRyaW4uaAorKysgYi9pbmNsdWRlL2VtbWludHJpbi5oCkBA
IC00OTk5LDE1ICs0OTk5LDYgQEAgX21tX2Nhc3RzaTEyOF9wZChfX20xMjhpIF9fYSkKIGV4dGVy
biAiQyIgewogI2VuZGlmCiAKLS8vLyBJbmRpY2F0ZXMgdGhhdCBhIHNwaW4gbG9vcCBpcyBiZWlu
ZyBleGVjdXRlZCBmb3IgdGhlIHB1cnBvc2VzIG9mCi0vLy8gICAgb3B0aW1pemluZyBwb3dlciBj
b25zdW1wdGlvbiBkdXJpbmcgdGhlIGxvb3AuCi0vLy8KLS8vLyBcaGVhZGVyZmlsZSA8eDg2aW50
cmluLmg+Ci0vLy8KLS8vLyBUaGlzIGludHJpbnNpYyBjb3JyZXNwb25kcyB0byB0aGUgPGM+IFBB
VVNFIDwvYz4gaW5zdHJ1Y3Rpb24uCi0vLy8KLXZvaWQgX21tX3BhdXNlKHZvaWQpOwotCiAjaWYg
ZGVmaW5lZChfX2NwbHVzcGx1cykKIH0gLy8gZXh0ZXJuICJDIgogI2VuZGlmCmRpZmYgLS1naXQg
YS9pbmNsdWRlL3htbWludHJpbi5oIGIvaW5jbHVkZS94bW1pbnRyaW4uaAppbmRleCBlMjU0M2E3
Li4wYjI3MWIzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3htbWludHJpbi5oCisrKyBiL2luY2x1ZGUv
eG1taW50cmluLmgKQEAgLTI1LDYgKzI1LDE1IEBACiAjZGVmaW5lIF9fWE1NSU5UUklOX0gKIAog
I2luY2x1ZGUgPG1taW50cmluLmg+CisvKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBm
b3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovCisjaWZkZWYgIF9fR05VQ19fCisjZGVm
aW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19h
bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FU
VFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18s
IF9fYXJ0aWZpY2lhbF9fKSkKKyNlbHNlCisjZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0
dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oInNz
ZTIiKSwgX19taW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCisjZGVmaW5lIF9fREVGQVVMVF9GTl9B
VFRSU19NTVggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBf
X3RhcmdldF9fKCJtbXgsc3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXyg2NCkpKQorI2VuZGlm
CisKIAogdHlwZWRlZiBpbnQgX192NHNpIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXygx
NikpKTsKIHR5cGVkZWYgZmxvYXQgX192NHNmIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVf
XygxNikpKTsKQEAgLTM5LDE1ICs0OCw2IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdjRzdSBf
X2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7CiAjaW5jbHVkZSA8bW1fbWFsbG9j
Lmg+CiAjZW5kaWYKIAotLyogRGVmaW5lIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBm
dW5jdGlvbnMgaW4gdGhpcyBmaWxlLiAqLwotI2lmZGVmICBfX0dOVUNfXwotI2RlZmluZSBfX0RF
RkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lu
bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0jZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVgg
X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm
aWNpYWxfXykpCi0jZWxzZQotI2RlZmluZSBfX0RFRkFVTFRfRk5fQVRUUlMgX19hdHRyaWJ1dGVf
XygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9fKCJzc2UiKSwgX19t
aW5fdmVjdG9yX3dpZHRoX18oMTI4KSkpCi0jZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSU19NTVgg
X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fbm9kZWJ1Z19fLCBfX3RhcmdldF9f
KCJtbXgsc3NlIiksIF9fbWluX3ZlY3Rvcl93aWR0aF9fKDY0KSkpCi0jZW5kaWYKLQogI2RlZmlu
ZSBfTU1fU0hVRkZMRSh6LCB5LCB4LCB3KSAoKCh6KSA8PCA2KSB8ICgoeSkgPDwgNCkgfCAoKHgp
IDw8IDIpIHwgKHcpKQogCiAKQEAgLTMwODYsNiArMzA4NiwxOCBAQCBkbyB7IFwKICNkZWZpbmUg
X21fIF9tbV8KICNkZWZpbmUgX21fIF9tbV8KIAorLy8vIEluZGljYXRlcyB0aGF0IGEgc3BpbiBs
b29wIGlzIGJlaW5nIGV4ZWN1dGVkIGZvciB0aGUgcHVycG9zZXMgb2YKKy8vLyAgICBvcHRpbWl6
aW5nIHBvd2VyIGNvbnN1bXB0aW9uIGR1cmluZyB0aGUgbG9vcC4KKy8vLworLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4KKy8vLworLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3BvbmRzIHRv
IHRoZSA8Yz4gUEFVU0UgPC9jPiBpbnN0cnVjdGlvbi4KKy8vLworc3RhdGljIGlubGluZSB2b2lk
IF9fREVGQVVMVF9GTl9BVFRSUyBfbW1fcGF1c2Uodm9pZCkKK3sKKwlfX2J1aWx0aW5faWEzMl9w
YXVzZSgpOworfQorCiAjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTCiAjdW5kZWYgX19ERUZBVUxU
X0ZOX0FUVFJTX01NWAogCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 21:29:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 21: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 1hcGEm-0002ba-EO; Sat, 15 Jun 2019 21:29:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gJz6=UO=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hcGEk-0002bD-TV
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 21:29:22 +0000
X-Inumbo-ID: a26a6da7-8fb4-11e9-8980-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id a26a6da7-8fb4-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 21:29:19 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 21575413F9;
 Sat, 15 Jun 2019 23:29:19 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Sat, 15 Jun 2019 23:29:14 +0200
Message-Id: <20190615212915.9660-3-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190615212915.9660-1-felipe.huici@neclab.eu>
References: <20190615212915.9660-1-felipe.huici@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 2/3]
 _mm_alignr_epi8 to use compiler builtin
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 Sharan Santhanam <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>

RnJvbTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+CgpfbW1f
YWxpZ25yX2VwaTggdXNlcyB0aGUgX19idWlsdGluX2lhMzJfcGFsaWducjEyOCBmdW5jdGlvbiBm
b3IgaXRzCmltcGxlbWVudGF0aW9uLiBUaGUgYnVpbHRpbiBmdW5jdGlvbiBoYXMgYSBkaWZmZXJl
bnQgc2lnbmF0dXJlIG9uCmdjYyB2cyBsbHZtLiBXZSBwcm92aWRlIGNvbXBpbGVyIGd1YXJkcyB0
byB1c2UgdGhlIGFwcHJvcHJpYXRlIGJ1aWx0aW4KZnVuY3Rpb24uCgpTaWduZWQtb2ZmLWJ5OiBG
ZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+ClNpZ25lZC1vZmYtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIGluY2x1ZGUvdG1t
aW50cmluLmggfCA2ICsrKysrKwogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlm
ZiAtLWdpdCBhL2luY2x1ZGUvdG1taW50cmluLmggYi9pbmNsdWRlL3RtbWludHJpbi5oCmluZGV4
IDdhOTQwOTYuLjdjOWVjZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdG1taW50cmluLmgKKysrIGIv
aW5jbHVkZS90bW1pbnRyaW4uaApAQCAtMTYzLDkgKzE2MywxNSBAQCBfbW1fYWJzX2VwaTMyKF9f
bTEyOGkgX19hKQogLy8vICAgIEFuIGltbWVkaWF0ZSBvcGVyYW5kIHNwZWNpZnlpbmcgaG93IG1h
bnkgYnl0ZXMgdG8gcmlnaHQtc2hpZnQgdGhlIHJlc3VsdC4KIC8vLyBccmV0dXJucyBBIDEyOC1i
aXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJpZ2h0LXNoaWZ0
ZWQKIC8vLyAgICB2YWx1ZS4KKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBfbW1fYWxpZ25yX2Vw
aTgoYSwgYiwgbikgXAorICAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWxpZ25yMTI4KChfX3Yy
ZGkpKF9fbTEyOGkpKGEpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9fdjJkaSkoX19tMTI4aSkoYiksIChuKSkKKyNlbHNlCiAjZGVmaW5lIF9tbV9hbGlnbnJfZXBp
OChhLCBiLCBuKSBcCiAgIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhbGlnbnIxMjgoKF9fdjE2
cWkpKF9fbTEyOGkpKGEpLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9fdjE2cWkpKF9fbTEyOGkpKGIpLCAobikpCisjZW5kaWYKIAogLy8vIENvbmNhdGVuYXRlcyB0
aGUgdHdvIDY0LWJpdCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kcywgYW5kIHJpZ2h0LXNoaWZ0cwog
Ly8vICAgIHRoZSByZXN1bHQgYnkgdGhlIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQgaW4gdGhl
IGltbWVkaWF0ZSBvcGVyYW5kLgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 15 21:29:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 15 Jun 2019 21: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 1hcGEm-0002bh-G6; Sat, 15 Jun 2019 21:29:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gJz6=UO=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hcGEk-0002bE-Vl
 for minios-devel@lists.xen.org; Sat, 15 Jun 2019 21:29:23 +0000
X-Inumbo-ID: a2de4d55-8fb4-11e9-8980-bc764e045a96
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id a2de4d55-8fb4-11e9-8980-bc764e045a96;
 Sat, 15 Jun 2019 21:29:20 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id D24FE4142C;
 Sat, 15 Jun 2019 23:29:19 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Sat, 15 Jun 2019 23:29:15 +0200
Message-Id: <20190615212915.9660-4-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190615212915.9660-1-felipe.huici@neclab.eu>
References: <20190615212915.9660-1-felipe.huici@neclab.eu>
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 3/3] Implement
 _mm_getcsr and _mm_setcsr
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>
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>

U2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgotLS0K
IGluY2x1ZGUveG1taW50cmluLmggfCAxNCArKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs
IDE0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3htbWludHJpbi5oIGIvaW5j
bHVkZS94bW1pbnRyaW4uaAppbmRleCAwYjI3MWIzLi5hNjMwZTQ4IDEwMDY0NAotLS0gYS9pbmNs
dWRlL3htbWludHJpbi5oCisrKyBiL2luY2x1ZGUveG1taW50cmluLmgKQEAgLTMxMDEsNiArMzEw
MSwyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9tbV9wYXVzZSh2
b2lkKQogI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSUwogI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRS
U19NTVgKIAorLyogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyIHRvIEkuICAqLworZXh0ZXJuIF9f
aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGlu
ZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fc2V0Y3NyICh1bnNpZ25lZCBpbnQgX19JKQorewor
ICBfX2J1aWx0aW5faWEzMl9sZG14Y3NyIChfX0kpOworfQorCisvKiBSZXR1cm4gdGhlIGNvbnRl
bnRzIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyLiAgKi8KK2V4dGVybiBfX2lubGluZSB1bnNpZ25l
ZCBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf
X2FydGlmaWNpYWxfXykpCitfbW1fZ2V0Y3NyICh2b2lkKQoreworICByZXR1cm4gX19idWlsdGlu
X2lhMzJfc3RteGNzciAoKTsKK30KKwogLyogVWdseSBoYWNrIGZvciBiYWNrd2FyZHMtY29tcGF0
aWJpbGl0eSAoY29tcGF0aWJsZSB3aXRoIGdjYykgKi8KICNpZmRlZiBfX0dOVUNfXwogI2luY2x1
ZGUgPGVtbWludHJpbi5oPgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 16 23:50:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 16 Jun 2019 23:50: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 1hcevA-00063W-3E; Sun, 16 Jun 2019 23:50:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hLLM=UP=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hcev9-00063R-En
 for minios-devel@lists.xenproject.org; Sun, 16 Jun 2019 23:50:47 +0000
X-Inumbo-ID: 8cc457ae-9091-11e9-845f-5b464662c4c8
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.59]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8cc457ae-9091-11e9-845f-5b464662c4c8;
 Sun, 16 Jun 2019 23:50:42 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4844.eurprd01.prod.exchangelabs.com (20.177.212.77) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.13; Sun, 16 Jun
 2019 23:50:39 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.014; Sun, 16 Jun 2019
 23:50:39 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 1/3]
 Implement _mm_pause
Thread-Index: AQHVI8FqnrMwPPbKiE+Fiilz+JODAKae9RMA
Date: Sun, 16 Jun 2019 23:50:39 +0000
Message-ID: <dc955a5e-458e-3bc9-d9ab-397c75f44a3b@stud.acs.upb.ro>
References: <20190615212915.9660-1-felipe.huici@neclab.eu>
 <20190615212915.9660-2-felipe.huici@neclab.eu>
In-Reply-To: <20190615212915.9660-2-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0701CA0036.eurprd07.prod.outlook.com
 (2603:10a6:800:90::22) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 59f6bfac-0b62-4b5b-52a7-08d6f2b56f5c
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4844; 
x-ms-traffictypediagnostic: PR1PR01MB4844:
x-microsoft-antispam-prvs: <PR1PR01MB48446618799EB103A39F0EBFA6E80@PR1PR01MB4844.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:2150;
x-forefront-prvs: 0070A8666B
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(366004)(396003)(136003)(346002)(376002)(189003)(199004)(6486002)(2906002)(316002)(786003)(2501003)(256004)(11346002)(446003)(31696002)(102836004)(53546011)(74482002)(71200400001)(85182001)(71190400001)(76176011)(68736007)(85202003)(26005)(186003)(99286004)(53936002)(6246003)(5660300002)(81156014)(8676002)(305945005)(7736002)(6436002)(25786009)(31686004)(52116002)(66066001)(6512007)(5640700003)(73956011)(486006)(508600001)(2351001)(386003)(66476007)(66556008)(64756008)(66446008)(6506007)(6916009)(66946007)(2616005)(229853002)(81166006)(14454004)(86362001)(476003)(6116002)(8936002)(3846002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4844;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: hRdHROah6SHPGIcry89zm1gfwN29PpsS0HQx6ZjjobLoCJMOWR3ne4DjhzyKf/hLDgXES+/OexK5FN10tKIpynd5RB8fJOK8nH7kpMMxxU9mc/Il6EXiCguSl8dzHaBMlpERlINESGNKqey7i4giHZ9ErQAZRLNGQGzll/WRWLlR2Mx5xZQH4D4NU9Frd+JlwL7RACW1EVayqQYtgzcYcUkOKfs3BM91HAobORFqOMmzLJ8Ue2DTmo5b5pn6A2e2zpBCrd/l9gNxt0wD27ID/tm1s6bote0gV/qS41DqPn8cOUjSIPM90ZT3Pzmx7iINUxtDrNOnZM6nBtIpxhJqI6aafsLg/kF7SFfSZvN0qlwUNGwrOJO2l9Zkt/AgM7atQpGrVXybHXmsF1zdQqiw7Sr8M8tNxPNIPPP7mXcfMgk=
Content-ID: <F97F309D4025914A8F0B2D9E7ACA305A@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 59f6bfac-0b62-4b5b-52a7-08d6f2b56f5c
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jun 2019 23:50:39.6224 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4844
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 1/3]
 Implement _mm_pause
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IEZlbGlwZSwNCg0KVGhlIHBhdGNoIGxvb2tzIGdyZWF0LCB0aGFua3MhDQoNClZsYWQNCg0K
UmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQu
YWNzLnVwYi5ybz4NCg0KDQpPbiA2LzE2LzE5IDEyOjI5IEFNLCBGZWxpcGUgSHVpY2kgd3JvdGU6
DQo+IEZyb206IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pg0K
Pg0KPiBTaWduZWQtb2ZmLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5l
Y2xhYi5ldT4NCj4gU2lnbmVkLW9mZi1ieTogRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVj
bGFiLmV1Pg0KPiAtLS0NCj4gICBpbmNsdWRlL2VtbWludHJpbi5oIHwgIDkgLS0tLS0tLS0tDQo+
ICAgaW5jbHVkZS94bW1pbnRyaW4uaCB8IDMwICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LQ0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p
DQo+DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2VtbWludHJpbi5oIGIvaW5jbHVkZS9lbW1pbnRy
aW4uaA0KPiBpbmRleCA4NzAzYjlhLi5jMDU3M2ExIDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2Vt
bWludHJpbi5oDQo+ICsrKyBiL2luY2x1ZGUvZW1taW50cmluLmgNCj4gQEAgLTQ5OTksMTUgKzQ5
OTksNiBAQCBfbW1fY2FzdHNpMTI4X3BkKF9fbTEyOGkgX19hKQ0KPiAgIGV4dGVybiAiQyIgew0K
PiAgICNlbmRpZg0KPiAgIA0KPiAtLy8vIEluZGljYXRlcyB0aGF0IGEgc3BpbiBsb29wIGlzIGJl
aW5nIGV4ZWN1dGVkIGZvciB0aGUgcHVycG9zZXMgb2YNCj4gLS8vLyAgICBvcHRpbWl6aW5nIHBv
d2VyIGNvbnN1bXB0aW9uIGR1cmluZyB0aGUgbG9vcC4NCj4gLS8vLw0KPiAtLy8vIFxoZWFkZXJm
aWxlIDx4ODZpbnRyaW4uaD4NCj4gLS8vLw0KPiAtLy8vIFRoaXMgaW50cmluc2ljIGNvcnJlc3Bv
bmRzIHRvIHRoZSA8Yz4gUEFVU0UgPC9jPiBpbnN0cnVjdGlvbi4NCj4gLS8vLw0KPiAtdm9pZCBf
bW1fcGF1c2Uodm9pZCk7DQo+IC0NCj4gICAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykNCj4gICB9
IC8vIGV4dGVybiAiQyINCj4gICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveG1taW50
cmluLmggYi9pbmNsdWRlL3htbWludHJpbi5oDQo+IGluZGV4IGUyNTQzYTcuLjBiMjcxYjMgMTAw
NjQ0DQo+IC0tLSBhL2luY2x1ZGUveG1taW50cmluLmgNCj4gKysrIGIvaW5jbHVkZS94bW1pbnRy
aW4uaA0KPiBAQCAtMjUsNiArMjUsMTUgQEANCj4gICAjZGVmaW5lIF9fWE1NSU5UUklOX0gNCj4g
ICANCj4gICAjaW5jbHVkZSA8bW1pbnRyaW4uaD4NCj4gKy8qIERlZmluZSB0aGUgZGVmYXVsdCBh
dHRyaWJ1dGVzIGZvciB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS4gKi8NCj4gKyNpZmRlZiAg
X19HTlVDX18NCj4gKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9f
Z251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiArI2Rl
ZmluZSBfX0RFRkFVTFRfRk5fQVRUUlNfTU1YIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f
LCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQ0KPiArI2Vsc2UNCj4gKyNkZWZp
bmUgX19ERUZBVUxUX0ZOX0FUVFJTIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf
X25vZGVidWdfXywgX190YXJnZXRfXygic3NlMiIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgp
KSkNCj4gKyNkZWZpbmUgX19ERUZBVUxUX0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2Fs
d2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCxzc2UyIiksIF9fbWlu
X3ZlY3Rvcl93aWR0aF9fKDY0KSkpDQo+ICsjZW5kaWYNCj4gKw0KPiAgIA0KPiAgIHR5cGVkZWYg
aW50IF9fdjRzaSBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXplX18oMTYpKSk7DQo+ICAgdHlw
ZWRlZiBmbG9hdCBfX3Y0c2YgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDE2KSkpOw0K
PiBAQCAtMzksMTUgKzQ4LDYgQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgX192NHN1IF9fYXR0cmli
dXRlX18oKF9fdmVjdG9yX3NpemVfXygxNikpKTsNCj4gICAjaW5jbHVkZSA8bW1fbWFsbG9jLmg+
DQo+ICAgI2VuZGlmDQo+ICAgDQo+IC0vKiBEZWZpbmUgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyBm
b3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUuICovDQo+IC0jaWZkZWYgIF9fR05VQ19fDQo+
IC0jZGVmaW5lIF9fREVGQVVMVF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf
XywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gLSNkZWZpbmUgX19ERUZB
VUxUX0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNf
aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkNCj4gLSNlbHNlDQo+IC0jZGVmaW5lIF9fREVGQVVM
VF9GTl9BVFRSUyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19ub2RlYnVnX18s
IF9fdGFyZ2V0X18oInNzZSIpLCBfX21pbl92ZWN0b3Jfd2lkdGhfXygxMjgpKSkNCj4gLSNkZWZp
bmUgX19ERUZBVUxUX0ZOX0FUVFJTX01NWCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf
XywgX19ub2RlYnVnX18sIF9fdGFyZ2V0X18oIm1teCxzc2UiKSwgX19taW5fdmVjdG9yX3dpZHRo
X18oNjQpKSkNCj4gLSNlbmRpZg0KPiAtDQo+ICAgI2RlZmluZSBfTU1fU0hVRkZMRSh6LCB5LCB4
LCB3KSAoKCh6KSA8PCA2KSB8ICgoeSkgPDwgNCkgfCAoKHgpIDw8IDIpIHwgKHcpKQ0KPiAgIA0K
PiAgIA0KPiBAQCAtMzA4Niw2ICszMDg2LDE4IEBAIGRvIHsgXA0KPiAgICNkZWZpbmUgX21fIF9t
bV8NCj4gICAjZGVmaW5lIF9tXyBfbW1fDQo+ICAgDQo+ICsvLy8gSW5kaWNhdGVzIHRoYXQgYSBz
cGluIGxvb3AgaXMgYmVpbmcgZXhlY3V0ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZg0KPiArLy8vICAg
IG9wdGltaXppbmcgcG93ZXIgY29uc3VtcHRpb24gZHVyaW5nIHRoZSBsb29wLg0KPiArLy8vDQo+
ICsvLy8gXGhlYWRlcmZpbGUgPHg4NmludHJpbi5oPg0KPiArLy8vDQo+ICsvLy8gVGhpcyBpbnRy
aW5zaWMgY29ycmVzcG9uZHMgdG8gdGhlIDxjPiBQQVVTRSA8L2M+IGluc3RydWN0aW9uLg0KPiAr
Ly8vDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX19ERUZBVUxUX0ZOX0FUVFJTIF9tbV9wYXVzZSh2
b2lkKQ0KPiArew0KPiArCV9fYnVpbHRpbl9pYTMyX3BhdXNlKCk7DQo+ICt9DQo+ICsNCj4gICAj
dW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTDQo+ICAgI3VuZGVmIF9fREVGQVVMVF9GTl9BVFRSU19N
TVgNCj4gICANCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 16 23:50:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 16 Jun 2019 23:50: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 1hcevL-000644-5R; Sun, 16 Jun 2019 23:50: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=hLLM=UP=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hcevJ-00063v-Mk
 for minios-devel@lists.xenproject.org; Sun, 16 Jun 2019 23:50:57 +0000
X-Inumbo-ID: 93d20ef6-9091-11e9-bfec-83450b8bc63b
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.74]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 93d20ef6-9091-11e9-bfec-83450b8bc63b;
 Sun, 16 Jun 2019 23:50:54 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4844.eurprd01.prod.exchangelabs.com (20.177.212.77) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.13; Sun, 16 Jun
 2019 23:50:53 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.014; Sun, 16 Jun 2019
 23:50:52 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 2/3]
 _mm_alignr_epi8 to use compiler builtin
Thread-Index: AQHVI8FrCugxqAPUB0WrdV0PNv7ASaae9SMA
Date: Sun, 16 Jun 2019 23:50:52 +0000
Message-ID: <076838dd-62bb-bf21-ea16-ae8306268107@stud.acs.upb.ro>
References: <20190615212915.9660-1-felipe.huici@neclab.eu>
 <20190615212915.9660-3-felipe.huici@neclab.eu>
In-Reply-To: <20190615212915.9660-3-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0701CA0040.eurprd07.prod.outlook.com
 (2603:10a6:800:90::26) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: e6d50a69-0423-4b47-3836-08d6f2b57777
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4844; 
x-ms-traffictypediagnostic: PR1PR01MB4844:
x-microsoft-antispam-prvs: <PR1PR01MB4844D9640E0BC43F86FDBA85A6E80@PR1PR01MB4844.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:1443;
x-forefront-prvs: 0070A8666B
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(366004)(396003)(136003)(346002)(376002)(189003)(199004)(6486002)(2906002)(316002)(786003)(2501003)(256004)(11346002)(446003)(31696002)(102836004)(53546011)(74482002)(71200400001)(85182001)(71190400001)(76176011)(68736007)(85202003)(26005)(186003)(99286004)(53936002)(6246003)(5660300002)(81156014)(8676002)(305945005)(7736002)(6436002)(25786009)(31686004)(52116002)(66066001)(6512007)(5640700003)(73956011)(486006)(508600001)(2351001)(386003)(66476007)(66556008)(64756008)(66446008)(6506007)(6916009)(66946007)(2616005)(229853002)(81166006)(14454004)(86362001)(476003)(6116002)(8936002)(3846002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4844;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: UMKzwJ2HbDpjE5TTWj3mR8sly+TZ6oaK9/nX7cTtD7QeJLkExQh35frv7Buwdoy4qKn2dbhZ1sZJPW1RbPiSHDth6xa9JTK4tYrlgDptg59OgZcesdgbKt7x6bTj+HklCk6Q3nw4i0CwkdI20V7ygHb170T5/RF0GJOZbhyXoJCMGRlQdfiy3A+BbKhZaCDZYUT1dYp9MPWGoJW6mgGse8jRJo1nIqPzWQdJY3nobBKWMzIFFTlz1c+IPJiG2Mz9of+FftKUNdpoAg/Qq6GzU4bz+8C4z5OIhB1NxezK+nEEunhc3T/YOBfoWk0Oh5iH5lyLxkQvpOxwWEHpQPPu2LhRRFYUncLcIDofwkPVQ9DN1H/83NFwJxWKU/Bbmg36+4l+AT0WrHRaNOuhjF5vxLBrC59x+8Hb0htUN05u27w=
Content-ID: <4D87140741D59C4182C7E71211DCC529@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: e6d50a69-0423-4b47-3836-08d6f2b57777
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jun 2019 23:50:52.8437 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4844
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 2/3]
 _mm_alignr_epi8 to use compiler builtin
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IEZlbGlwZSwNCg0KVGhlIHBhdGNoIGxvb2tzIGdyZWF0LCB0aGFua3MhDQoNClZsYWQNCg0K
UmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQu
YWNzLnVwYi5ybz4NCg0KT24gNi8xNi8xOSAxMjoyOSBBTSwgRmVsaXBlIEh1aWNpIHdyb3RlOg0K
PiBGcm9tOiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCj4N
Cj4gX21tX2FsaWducl9lcGk4IHVzZXMgdGhlIF9fYnVpbHRpbl9pYTMyX3BhbGlnbnIxMjggZnVu
Y3Rpb24gZm9yIGl0cw0KPiBpbXBsZW1lbnRhdGlvbi4gVGhlIGJ1aWx0aW4gZnVuY3Rpb24gaGFz
IGEgZGlmZmVyZW50IHNpZ25hdHVyZSBvbg0KPiBnY2MgdnMgbGx2bS4gV2UgcHJvdmlkZSBjb21w
aWxlciBndWFyZHMgdG8gdXNlIHRoZSBhcHByb3ByaWF0ZSBidWlsdGluDQo+IGZ1bmN0aW9uLg0K
Pg0KPiBTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+
DQo+IFNpZ25lZC1vZmYtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVj
bGFiLmV1Pg0KPiAtLS0NCj4gICBpbmNsdWRlL3RtbWludHJpbi5oIHwgNiArKysrKysNCj4gICAx
IGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspDQo+DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRl
L3RtbWludHJpbi5oIGIvaW5jbHVkZS90bW1pbnRyaW4uaA0KPiBpbmRleCA3YTk0MDk2Li43Yzll
Y2U2IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL3RtbWludHJpbi5oDQo+ICsrKyBiL2luY2x1ZGUv
dG1taW50cmluLmgNCj4gQEAgLTE2Myw5ICsxNjMsMTUgQEAgX21tX2Fic19lcGkzMihfX20xMjhp
IF9fYSkNCj4gICAvLy8gICAgQW4gaW1tZWRpYXRlIG9wZXJhbmQgc3BlY2lmeWluZyBob3cgbWFu
eSBieXRlcyB0byByaWdodC1zaGlmdCB0aGUgcmVzdWx0Lg0KPiAgIC8vLyBccmV0dXJucyBBIDEy
OC1iaXQgaW50ZWdlciB2ZWN0b3IgY29udGFpbmluZyB0aGUgY29uY2F0ZW5hdGVkIHJpZ2h0LXNo
aWZ0ZWQNCj4gICAvLy8gICAgdmFsdWUuDQo+ICsjaWZkZWYgX19HTlVDX18NCj4gKyNkZWZpbmUg
X21tX2FsaWducl9lcGk4KGEsIGIsIG4pIFwNCj4gKyAgKF9fbTEyOGkpX19idWlsdGluX2lhMzJf
cGFsaWducjEyOCgoX192MmRpKShfX20xMjhpKShhKSwgXA0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChfX3YyZGkpKF9fbTEyOGkpKGIpLCAobikpDQo+ICsjZWxzZQ0K
PiAgICNkZWZpbmUgX21tX2FsaWducl9lcGk4KGEsIGIsIG4pIFwNCj4gICAgIChfX20xMjhpKV9f
YnVpbHRpbl9pYTMyX3BhbGlnbnIxMjgoKF9fdjE2cWkpKF9fbTEyOGkpKGEpLCBcDQo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3YxNnFpKShfX20xMjhpKShiKSwg
KG4pKQ0KPiArI2VuZGlmDQo+ICAgDQo+ICAgLy8vIENvbmNhdGVuYXRlcyB0aGUgdHdvIDY0LWJp
dCBpbnRlZ2VyIHZlY3RvciBvcGVyYW5kcywgYW5kIHJpZ2h0LXNoaWZ0cw0KPiAgIC8vLyAgICB0
aGUgcmVzdWx0IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGluIHRoZSBpbW1lZGlh
dGUgb3BlcmFuZC4NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Jun 16 23:52:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 16 Jun 2019 23:52: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 1hcews-000677-Ad; Sun, 16 Jun 2019 23:52:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hLLM=UP=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hcewr-000672-1j
 for minios-devel@lists.xenproject.org; Sun, 16 Jun 2019 23:52:33 +0000
X-Inumbo-ID: cca795c7-9091-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:7e19::615])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cca795c7-9091-11e9-8980-bc764e045a96;
 Sun, 16 Jun 2019 23:52:30 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4844.eurprd01.prod.exchangelabs.com (20.177.212.77) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.13; Sun, 16 Jun
 2019 23:52:27 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::59e1:5eb4:6e9d:b782%6]) with mapi id 15.20.1987.014; Sun, 16 Jun 2019
 23:52:27 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 3/3]
 Implement _mm_getcsr and _mm_setcsr
Thread-Index: AQHVI8Fr/ZbCXf4BtUK8c/HHCxvXY6ae9ZQA
Date: Sun, 16 Jun 2019 23:52:27 +0000
Message-ID: <cce28b70-71ee-a67c-98a6-a3307ef233cd@stud.acs.upb.ro>
References: <20190615212915.9660-1-felipe.huici@neclab.eu>
 <20190615212915.9660-4-felipe.huici@neclab.eu>
In-Reply-To: <20190615212915.9660-4-felipe.huici@neclab.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR08CA0088.eurprd08.prod.outlook.com
 (2603:10a6:800:d3::14) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [86.126.5.36]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: af50c155-93c8-43d1-8cce-08d6f2b5afdc
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4844; 
x-ms-traffictypediagnostic: PR1PR01MB4844:
x-microsoft-antispam-prvs: <PR1PR01MB48443C53D26F3077FC06952DA6E80@PR1PR01MB4844.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:1148;
x-forefront-prvs: 0070A8666B
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39830400003)(366004)(396003)(136003)(346002)(376002)(189003)(199004)(6486002)(2906002)(316002)(786003)(2501003)(256004)(11346002)(446003)(31696002)(102836004)(53546011)(74482002)(71200400001)(85182001)(71190400001)(76176011)(68736007)(85202003)(26005)(186003)(99286004)(53936002)(6246003)(5660300002)(81156014)(8676002)(305945005)(7736002)(6436002)(25786009)(31686004)(52116002)(66066001)(6512007)(5640700003)(73956011)(486006)(508600001)(2351001)(386003)(66476007)(66556008)(64756008)(66446008)(6506007)(6916009)(66946007)(2616005)(229853002)(81166006)(14454004)(86362001)(476003)(6116002)(8936002)(3846002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4844;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: owM4IrP63UUBpiNEIo6qging5CYsvTqrXag2PjN0Bv8QyJcuivjUBhGUQ0TCQXpv2viS95R1yY/fHd7aTFQVzVKjhKSDcKqtmhFOqZYIBkLNetiBrsqact6oZPiynDLgAw5/3OpwE9HsFjX2LAWUE8g3p9B23NzsksrsM+pWnti9+4CVCo9HzBjd2fQsECnPQnipciVT5eiOhOeIy5Tb06Rs5Csq6RIIt6QSMVDlmHi51/JI1paRcXszmguHjxye/S5tnOqF6UKRXM5C4G+hEu/WBidx7vQFt26FKqW8HCcfnNvKXfFsfYbs4H3MGYTtqALf6rofXfvPXDLS1LydGmUIx/AW+UcGtBuFf8Pl/wc1VdKrznW00ferfpPWlymU6R1qXbrQzBXyImLaST5+F8Jtdz1DX7vlVJzoO/92waI=
Content-ID: <220F742F90D77D44A69E684AEF1351AD@eurprd01.prod.exchangelabs.com>
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: af50c155-93c8-43d1-8cce-08d6f2b5afdc
X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jun 2019 23:52:27.5001 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4844
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH v2 3/3]
 Implement _mm_getcsr and _mm_setcsr
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGV5IEZlbGlwZSwNCg0KVGhlIHBhdGNoIGxvb2tzIGdyZWF0LCB0aGFua3MhDQoNClZsYWQNCg0K
UmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQu
YWNzLnVwYi5ybz4NCg0KT24gNi8xNi8xOSAxMjoyOSBBTSwgRmVsaXBlIEh1aWNpIHdyb3RlOg0K
PiBTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+DQo+
IC0tLQ0KPiAgIGluY2x1ZGUveG1taW50cmluLmggfCAxNCArKysrKysrKysrKysrKw0KPiAgIDEg
ZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspDQo+DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRl
L3htbWludHJpbi5oIGIvaW5jbHVkZS94bW1pbnRyaW4uaA0KPiBpbmRleCAwYjI3MWIzLi5hNjMw
ZTQ4IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL3htbWludHJpbi5oDQo+ICsrKyBiL2luY2x1ZGUv
eG1taW50cmluLmgNCj4gQEAgLTMxMDEsNiArMzEwMSwyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
X19ERUZBVUxUX0ZOX0FUVFJTIF9tbV9wYXVzZSh2b2lkKQ0KPiAgICN1bmRlZiBfX0RFRkFVTFRf
Rk5fQVRUUlMNCj4gICAjdW5kZWYgX19ERUZBVUxUX0ZOX0FUVFJTX01NWA0KPiAgIA0KPiArLyog
U2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyIHRvIEkuICAqLw0KPiArZXh0ZXJuIF9faW5saW5lIHZv
aWQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy
dGlmaWNpYWxfXykpDQo+ICtfbW1fc2V0Y3NyICh1bnNpZ25lZCBpbnQgX19JKQ0KPiArew0KPiAr
ICBfX2J1aWx0aW5faWEzMl9sZG14Y3NyIChfX0kpOw0KPiArfQ0KPiArDQo+ICsvKiBSZXR1cm4g
dGhlIGNvbnRlbnRzIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyLiAgKi8NCj4gK2V4dGVybiBfX2lu
bGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlz
X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpDQo+ICtfbW1fZ2V0Y3NyICh2b2lkKQ0KPiArew0K
PiArICByZXR1cm4gX19idWlsdGluX2lhMzJfc3RteGNzciAoKTsNCj4gK30NCj4gKw0KPiAgIC8q
IFVnbHkgaGFjayBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgKGNvbXBhdGlibGUgd2l0aCBn
Y2MpICovDQo+ICAgI2lmZGVmIF9fR05VQ19fDQo+ICAgI2luY2x1ZGUgPGVtbWludHJpbi5oPg0K
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 17 13:58:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 17 Jun 2019 13:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hcs9d-0007US-U4; Mon, 17 Jun 2019 13:58:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Ihdy=UQ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hcs9c-0007UM-Q9
 for minios-devel@lists.xen.org; Mon, 17 Jun 2019 13:58:36 +0000
X-Inumbo-ID: fe7866b7-9107-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id fe7866b7-9107-11e9-8980-bc764e045a96;
 Mon, 17 Jun 2019 13:58:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B6F7CF2079;
 Mon, 17 Jun 2019 15:58:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xPyZzjGFLZaK; Mon, 17 Jun 2019 15:58:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 808CAF2073;
 Mon, 17 Jun 2019 15:58:24 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 17 Jun 2019 15:58:24
 +0200
To: Costin Lupu <costin.lup@gmail.com>,
 =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190615005543.24094-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <fbaa31a0-5fa7-ebc7-e3e4-6e9bdcea5fa6@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <88efe50c-cdba-9992-42aa-12ba4f9de8ff@neclab.eu>
Date: Mon, 17 Jun 2019 15:58:23 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <fbaa31a0-5fa7-ebc7-e3e4-6e9bdcea5fa6@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <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>

SGV5LAoKd2hpbGUgeW91IHdvcmsgb24gYSBwYXRjaCB0aGF0IGFwcGxpZXMgdG8gdXBzdHJlYW0s
IEkgc3RpbGwgaGF2ZSBzb21lIApjb21tZW50cyBhYm91dCB0aGlzIHBhdGNoLgoKT24gMTUuMDYu
MTkgMDk6MDMsIENvc3RpbiBMdXB1IHdyb3RlOgo+IEFjdHVhbGx5IHRoZSB2MiB3YXMgYWxyZWFk
eSBwdXNoZWQgdXBzdHJlYW0uIFRoZSBuZXcgY2hhbmdlcyBzaG91bGQgYmUKPiBpbiBhIGRpZmZl
cmVudCBwYXRjaC4KPiAKPiBPbiA2LzE1LzE5IDM6NTUgQU0sIFZsYWQtQW5kcmVpIELEgkRPSVUg
KDc4NjkyKSB3cm90ZToKPj4gVGhpcyBwYXRjaCBhZGRzIHRoZSAvZGV2L3JhbmRvbSBhbmQgL2Rl
di91cmFuZG9tIGRldmljZXMuIFNpbmNlIHdlIGRvIG5vdCBoYXZlCj4+IGFueSBlbnRyb3B5IGdl
bmVyYXRpbmcgZnVuY3Rpb24gYm90aCBkZXZpY2VzIHNoYXJlIHRoZSBzYW1lIGhhbmRsZXJzLiBU
aGUKPj4gcmVnaXN0cmF0aW9uIG9mIHRoZSBkZXZpY2VzIGlzIGd1YXJkZWQgYnkgdGhlIGNvbmZp
ZyBvcHRpb24gQ09ORklHX0RFVl9SQU5ET00uCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5k
cmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KPj4gUmV2aWV3
ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4+IC0tLQo+PiAgIGxp
Yi91a3N3cmFuZC9Db25maWcudWsgICB8ICAgOCArKysKPj4gICBsaWIvdWtzd3JhbmQvTWFrZWZp
bGUudWsgfCAgIDMgKwo+PiAgIGxpYi91a3N3cmFuZC9td2NfZGV2LmMgICB8IDEyMCArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gICAzIGZpbGVzIGNoYW5nZWQsIDEz
MSBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a3N3cmFuZC9td2Nf
ZGV2LmMKPj4KPj4gZGlmZiAtLWdpdCBhL2xpYi91a3N3cmFuZC9Db25maWcudWsgYi9saWIvdWtz
d3JhbmQvQ29uZmlnLnVrCj4+IGluZGV4IDQ0ZjZlZTUwLi41YjBhZGI4NSAxMDA2NDQKPj4gLS0t
IGEvbGliL3Vrc3dyYW5kL0NvbmZpZy51awo+PiArKysgYi9saWIvdWtzd3JhbmQvQ29uZmlnLnVr
Cj4+IEBAIC0xNyw0ICsxNywxMiBAQCBlbmRjaG9pY2UKPj4gICBjb25maWcgTElCVUtTV1JBTkRf
SU5JVElBTFNFRUQKPj4gICAJaW50ICJJbml0aWFsIHJhbmRvbSBzZWVkIgo+PiAgIAlkZWZhdWx0
IDIzCj4+ICsKPj4gK2NvbmZpZyBMSUJVS1NXUkFORF9ERVZfUkFORE9NCj4+ICsJYm9vbCAicmFu
ZG9tIGFuZCB1cmFuZG9tIGRldmljZXMiCj4+ICsJc2VsZWN0IExJQkRFVkZTCj4+ICsJZGVmYXVs
dCBuCj4+ICsJaGVscAo+PiArCQlSZWdpc3RlcnMgdGhlIHJhbmRvbSBhbmQgdXJhbmRvbSBkZXZp
Y2VzCgpQbGVhc2UgbWVudGlvbiB0aGF0IHRoaXMgcmVnaXN0ZXJzIHRvIGxpYmRldmZzLgoKPj4g
Kwo+PiAgIGVuZGlmCj4+IGRpZmYgLS1naXQgYS9saWIvdWtzd3JhbmQvTWFrZWZpbGUudWsgYi9s
aWIvdWtzd3JhbmQvTWFrZWZpbGUudWsKPj4gaW5kZXggOGQ0NDgyYzQuLjhjNmIzNjM3IDEwMDY0
NAo+PiAtLS0gYS9saWIvdWtzd3JhbmQvTWFrZWZpbGUudWsKPj4gKysrIGIvbGliL3Vrc3dyYW5k
L01ha2VmaWxlLnVrCj4+IEBAIC00LDMgKzQsNiBAQCBDSU5DTFVERVMtJChDT05GSUdfTElCVUtT
V1JBTkQpCSs9IC1JJChMSUJVS1NXUkFORF9CQVNFKS9pbmNsdWRlCj4+ICAgQ1hYSU5DTFVERVMt
JChDT05GSUdfTElCVUtTV1JBTkQpICs9IC1JJChMSUJVS1NXUkFORF9CQVNFKS9pbmNsdWRlCj4+
ICAgCj4+ICAgTElCVUtTV1JBTkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9ICQo
TElCVUtTV1JBTkRfQkFTRSkvbXdjLmMKPj4gK2lmZGVmIENPTkZJR19MSUJVS1NXUkFORF9ERVZf
UkFORE9NCj4+ICtMSUJVS1NXUkFORF9TUkNTLSQoQ09ORklHX0xJQlVLU1dSQU5EX01XQykgKz0g
JChMSUJVS1NXUkFORF9CQVNFKS9td2NfZGV2LmMKPj4gK2VuZGlmCj4+IGRpZmYgLS1naXQgYS9s
aWIvdWtzd3JhbmQvbXdjX2Rldi5jIGIvbGliL3Vrc3dyYW5kL213Y19kZXYuYwo+PiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMC4uMDlhOWM4MTcKPj4gLS0tIC9kZXYvbnVs
bAo+PiArKysgYi9saWIvdWtzd3JhbmQvbXdjX2Rldi5jCj4+IEBAIC0wLDAgKzEsMTIwIEBACj4+
ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+ICsvKgo+PiAr
ICogQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5h
Y3MudXBiLnJvPgo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQ
b2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiAr
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Cj4+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPj4gKyAqIGFyZSBtZXQ6Cj4+ICsgKgo+PiAr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCj4+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+PiArICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+PiArICogICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KPj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCj4+ICsgKgo+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4+
ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+PiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQo+PiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+PiArICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4gKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwo+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPj4gKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCj4+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4+ICsgKgo+PiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1Ig
TU9ESUZJRUQgSU4gQU5ZIFdBWS4KPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+
Cj4+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4+ICsjaW5jbHVkZSA8dWsvY3RvcnMuaD4KPj4gKyNp
bmNsdWRlIDx1ay9wcmludC5oPgo+PiArI2luY2x1ZGUgPHVrL3N3cmFuZC5oPgo+PiArI2luY2x1
ZGUgPHVrL2Fzc2VydC5oPgo+PiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+PiArI2luY2x1ZGUg
PHVrL2Vzc2VudGlhbHMuaD4KPj4gKyNpbmNsdWRlIDx2ZnNjb3JlL3Vpby5oPgo+PiArI2luY2x1
ZGUgPGRldmZzL2RldmljZS5oPgo+PiArCj4+ICsjZGVmaW5lIERFVl9SQU5ET01fTkFNRSAicmFu
ZG9tIgo+PiArI2RlZmluZSBERVZfVVJBTkRPTV9OQU1FICJ1cmFuZG9tIgo+PiArCj4+ICtpbnQg
ZGV2X3JhbmRvbV9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiBfX3VudXNlZCwgc3RydWN0IHVpbyAq
dWlvLAo+PiArCQkJaW50IGZsYWdzIF9fdW51c2VkKQo+PiArewo+PiArCXNpemVfdCBjb3VudCwg
c3RlcCwgY2h1bmtfc2l6ZSwgaTsKPj4gKwljaGFyICpidWY7Cj4+ICsJX191MzIgcmQ7Cj4+ICsK
Pj4gKwlidWYgPSB1aW8tPnVpb19pb3YtPmlvdl9iYXNlOwo+PiArCWNvdW50ID0gdWlvLT51aW9f
aW92LT5pb3ZfbGVuOwo+PiArCj4+ICsJc3RlcCA9IHNpemVvZihfX3UzMik7Cj4+ICsJY2h1bmtf
c2l6ZSA9IGNvdW50ICUgc3RlcDsKPj4gKwo+PiArCWZvciAoaSA9IDA7IGkgPCBjb3VudCAtIGNo
dW5rX3NpemU7IGkgKz0gc3RlcCkKPj4gKwkJKigoX191MzIgKilidWYgKyBpKSA9IHVrX3N3cmFu
ZF9yYW5kcigpOwo+PiArCj4+ICsJLyogZmlsbCB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIHRoZSBi
dWZmZXIgKi8KPj4gKwlpZiAoY2h1bmtfc2l6ZSA+IDApIHsKPj4gKwkJcmQgPSB1a19zd3JhbmRf
cmFuZHIoKTsKPj4gKwkJbWVtY3B5KGJ1ZiArIGksICZyZCwgY2h1bmtfc2l6ZSk7Cj4+ICsJfQo+
PiArCj4+ICsJdWlvLT51aW9fcmVzaWQgPSAwOwo+PiArCXJldHVybiAwOwo+PiArfQoKWW91IHNo
b3VsZCBhZGQgYSAiLyogVE9ETyAqLyIgY29tbWVudCB0aGF0IG1lbnRpb25zIHRoYXQgdGhpcyBm
dW5jdGlvbiAKaXMgbm90IHRocmVhZC1zYWZlIG5vciBTTVAtc2FmZSBzaW5jZSB1a19zd3JhbmRf
cmFuZHIoKSBpc24ndCBlaXRoZXIuCgo+PiArCj4+ICtpbnQgZGV2X3JhbmRvbV9vcGVuKHN0cnVj
dCBkZXZpY2UgKmRldmljZSBfX3VudXNlZCwgaW50IG1vZGUgX191bnVzZWQpCj4+ICt7Cj4+ICsJ
cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gKwo+PiAraW50IGRldl9yYW5kb21fY2xvc2Uoc3RydWN0
IGRldmljZSAqZGV2aWNlIF9fdW51c2VkKQo+PiArewo+PiArCXJldHVybiAwOwo+PiArfQo+PiAr
Cj4+ICtzdGF0aWMgc3RydWN0IGRldm9wcyByYW5kb21fZGV2b3BzID0gewo+PiArCS5yZWFkID0g
ZGV2X3JhbmRvbV9yZWFkLAo+PiArCS5vcGVuID0gZGV2X3JhbmRvbV9vcGVuLAo+PiArCS5jbG9z
ZSA9IGRldl9yYW5kb21fY2xvc2UsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGRyaXZl
ciBkcnZfcmFuZG9tID0gewo+PiArCS5kZXZvcHMgPSAmcmFuZG9tX2Rldm9wcywKPj4gKwkuZGV2
c3ogPSAwLAo+PiArCS5uYW1lID0gREVWX1JBTkRPTV9OQU1FCj4+ICt9Owo+PiArCj4+ICtzdGF0
aWMgc3RydWN0IGRyaXZlciBkcnZfdXJhbmRvbSA9IHsKPj4gKwkuZGV2b3BzID0gJnJhbmRvbV9k
ZXZvcHMsCj4+ICsJLmRldnN6ID0gMCwKPj4gKwkubmFtZSA9IERFVl9VUkFORE9NX05BTUUKPj4g
K307Cj4+ICsKPj4gK19fY29uc3RydWN0b3JfcHJpbygxMDIpIHN0YXRpYyB2b2lkIF91a19kZXZf
c3dyYW5kX2N0b3Iodm9pZCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICsKPj4g
Kwl1a19wcl9pbmZvKCJSZWdpc3RlciAlcyBhbmQgJXNcbiIsCj4+ICsJCURFVl9SQU5ET01fTkFN
RSwgREVWX1VSQU5ET01fTkFNRSk7CgpJIHdvdWxkIHN0aWxsIHByZWZlciBhIGJpdCBtb3JlIHZl
cmJvc2UgbWVzc2FnZToKICAgIlJlZ2lzdGVyICclcycgYW5kICclcycgdG8gZGV2ZnNcbiIKCj4+
ICsKPj4gKwkvKiByZWdpc3RlciAvZGV2L3VyYW5kb20gKi8KPj4gKwlkZXYgPSBkZXZpY2VfY3Jl
YXRlKCZkcnZfdXJhbmRvbSwgREVWX1VSQU5ET01fTkFNRSwgRF9DSFIpOwo+PiArCWlmIChkZXYg
PT0gTlVMTCkKPj4gKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gcmVnaXN0ZXIgJXNcbiIsIERFVl9V
UkFORE9NX05BTUUpOwo+PiArCj4+ICsJLyogcmVnaXN0ZXIgL2Rldi9yYW5kb20gKi8KPj4gKwlk
ZXYgPSBkZXZpY2VfY3JlYXRlKCZkcnZfcmFuZG9tLCBERVZfUkFORE9NX05BTUUsIERfQ0hSKTsK
Pj4gKwlpZiAoZGV2ID09IE5VTEwpCj4+ICsJCXVrX3ByX2VycigiZkFpbGVkIHRvIHJlZ2lzdGVy
ICVzXG4iLCBERVZfUkFORE9NX05BTUUpOwoKWW91IGhhdmUgYSB0eXBvIGhlcmUuIDstKSBJIGFs
c28gc3RpbGwgcHJlZmVyIHRoYXQgeW91IG1lbnRpb24gdGhhdCB0aGUgCm9wZXJhdGlvbiBmYWls
ZWQgdG8gcmVnaXN0ZXIgdG8gZGV2ZnMgd2l0aCBib3RoIG1lc3NhZ2VzOgoKICB1a19wcl9lcnIo
IkZhaWxlZCB0byByZWdpc3RlciAnJXMnIHRvIGRldmZzXG4iLCBbLi4uXSk7Cgo+PiArfQo+PgoK
VGhhbmtzIGEgbG90LAoKU2ltb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Jun 17 13:59:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 17 Jun 2019 13:59: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 1hcsA3-0007VR-0W; Mon, 17 Jun 2019 13:59:03 +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=Ihdy=UQ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hcsA2-0007VL-EF
 for minios-devel@lists.xen.org; Mon, 17 Jun 2019 13:59:02 +0000
X-Inumbo-ID: 0c50b532-9108-11e9-b607-e700df1044c9
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0c50b532-9108-11e9-b607-e700df1044c9;
 Mon, 17 Jun 2019 13:58:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 2182B1052DB;
 Mon, 17 Jun 2019 15:58:56 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Hd3WOVg7EP_9; Mon, 17 Jun 2019 15:58:56 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id EFF331052D5;
 Mon, 17 Jun 2019 15:58:55 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 17 Jun 2019 15:58:55
 +0200
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
References: <20190613162400.26472-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <43c5d748-4b28-fa77-ebd2-7405917e67f4@neclab.eu>
 <d82d3bde-151b-0527-b20f-1c99957b7362@stud.acs.upb.ro>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <10f0d561-38b2-60af-36f4-2bc8ebdf86f3@neclab.eu>
Date: Mon, 17 Jun 2019 15:58:55 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <d82d3bde-151b-0527-b20f-1c99957b7362@stud.acs.upb.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/ukswrand: Add
 /dev/random and /dev/urandom
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <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>

VGhhbmtzISA7LSkKCk9uIDE1LjA2LjE5IDAyOjU0LCBWbGFkLUFuZHJlaSBCxIJET0lVICg3ODY5
Mikgd3JvdGU6Cj4gSGV5IFNpbW9uLAo+IAo+IEknbGwgc2VuZCBhIHYzIHdpdGggdGhlIHByb3Bv
c2VkIGNoYW5nZXMuCj4gCj4gVGhhbmtzLAo+IAo+IFZsYWQKPiAKPiBPbiA2LzE0LzE5IDM6MzYg
UE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4+IEhleSwKPj4KPj4gc2luY2UgSSBqdXN0IG5vdGlj
ZWQgdGhpcy4uLgo+Pgo+PiBPbiAxMy4wNi4xOSAxODoyNCwgVmxhZC1BbmRyZWkgQsSCRE9JVSAo
Nzg2OTIpIHdyb3RlOgo+Pj4gVGhpcyBwYXRjaCBhZGRzIHRoZSAvZGV2L3JhbmRvbSBhbmQgL2Rl
di91cmFuZG9tIGRldmljZXMuIFNpbmNlIHdlIGRvCj4+PiBub3QgaGF2ZQo+Pj4gYW55IGVudHJv
cHkgZ2VuZXJhdGluZyBmdW5jdGlvbiBib3RoIGRldmljZXMgc2hhcmUgdGhlIHNhbWUgaGFuZGxl
cnMuCj4+PiBUaGUKPj4+IHJlZ2lzdHJhdGlvbiBvZiB0aGUgZGV2aWNlcyBpcyBndWFyZGVkIGJ5
IHRoZSBjb25maWcgb3B0aW9uCj4+PiBDT05GSUdfREVWX1JBTkRPTS4KPj4+Cj4+PiBTaWduZWQt
b2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51
cGIucm8+Cj4+PiAtLS0KPj4+ICDCoCBsaWIvdWtzd3JhbmQvQ29uZmlnLnVrwqDCoCB8wqDCoCA2
ICsrCj4+PiAgwqAgbGliL3Vrc3dyYW5kL01ha2VmaWxlLnVrIHzCoMKgIDMgKwo+Pj4gIMKgIGxp
Yi91a3N3cmFuZC9td2NfZGV2LmPCoMKgIHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwo+Pj4gIMKgIDMgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykK
Pj4+ICDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Vrc3dyYW5kL213Y19kZXYuYwo+Pj4KPj4+
IGRpZmYgLS1naXQgYS9saWIvdWtzd3JhbmQvQ29uZmlnLnVrIGIvbGliL3Vrc3dyYW5kL0NvbmZp
Zy51awo+Pj4gaW5kZXggNDRmNmVlNTAuLmExYTg0YmM1IDEwMDY0NAo+Pj4gLS0tIGEvbGliL3Vr
c3dyYW5kL0NvbmZpZy51awo+Pj4gKysrIGIvbGliL3Vrc3dyYW5kL0NvbmZpZy51awo+Pj4gQEAg
LTE3LDQgKzE3LDEwIEBAIGVuZGNob2ljZQo+Pj4gIMKgIGNvbmZpZyBMSUJVS1NXUkFORF9JTklU
SUFMU0VFRAo+Pj4gIMKgwqDCoMKgwqAgaW50ICJJbml0aWFsIHJhbmRvbSBzZWVkIgo+Pj4gIMKg
wqDCoMKgwqAgZGVmYXVsdCAyMwo+Pj4gKwo+Pj4gK2NvbmZpZyBERVZfUkFORE9NCj4+Cj4+IC4u
LnlvdSBzaG91bGQgY2FsbCB0aGlzIG9wdGlvbiBMSUJVS1NXUkFORF9ERVZfUkFORE9NIGluc3Rl
YWQgdG8gbmFtZQo+PiBzcGFjZSBpdCBwcm9wZXJseS4KPj4KPj4+ICvCoMKgwqAgYm9vbCAiL2Rl
di9yYW5kb20gZGV2aWNlIgo+Pj4gK8KgwqDCoCBzZWxlY3QgTElCREVWRlMKPj4+ICvCoMKgwqAg
ZGVmYXVsdCBuCj4+PiArCj4+Cj4+IFBsZWFzZSBhbHNvIGFkZCBhIGRlc2NyaXB0aW9uIHdoYXQg
dGhpcyBvcHRpb24gZW5hYmxlcy4KPj4KPj4+ICDCoCBlbmRpZgo+Pj4gZGlmZiAtLWdpdCBhL2xp
Yi91a3N3cmFuZC9NYWtlZmlsZS51ayBiL2xpYi91a3N3cmFuZC9NYWtlZmlsZS51awo+Pj4gaW5k
ZXggOGQ0NDgyYzQuLjI1MjQ3NDc0IDEwMDY0NAo+Pj4gLS0tIGEvbGliL3Vrc3dyYW5kL01ha2Vm
aWxlLnVrCj4+PiArKysgYi9saWIvdWtzd3JhbmQvTWFrZWZpbGUudWsKPj4+IEBAIC00LDMgKzQs
NiBAQCBDSU5DTFVERVMtJChDT05GSUdfTElCVUtTV1JBTkQpwqDCoMKgICs9Cj4+PiAtSSQoTElC
VUtTV1JBTkRfQkFTRSkvaW5jbHVkZQo+Pj4gIMKgIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVL
U1dSQU5EKSArPSAtSSQoTElCVUtTV1JBTkRfQkFTRSkvaW5jbHVkZQo+Pj4gIMKgIMKgIExJQlVL
U1dSQU5EX1NSQ1MtJChDT05GSUdfTElCVUtTV1JBTkRfTVdDKSArPQo+Pj4gJChMSUJVS1NXUkFO
RF9CQVNFKS9td2MuYwo+Pj4gK2lmZGVmIENPTkZJR19ERVZfUkFORE9NCj4+PiArTElCVUtTV1JB
TkRfU1JDUy0kKENPTkZJR19MSUJVS1NXUkFORF9NV0MpICs9Cj4+PiAkKExJQlVLU1dSQU5EX0JB
U0UpL213Y19kZXYuYwo+Pj4gK2VuZGlmCj4+PiBkaWZmIC0tZ2l0IGEvbGliL3Vrc3dyYW5kL213
Y19kZXYuYyBiL2xpYi91a3N3cmFuZC9td2NfZGV2LmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4+PiBpbmRleCAwMDAwMDAwMC4uNWE5YzBkNDkKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBi
L2xpYi91a3N3cmFuZC9td2NfZGV2LmMKPj4+IEBAIC0wLDAgKzEsMTE5IEBACj4+PiArLyogU1BE
WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+Pj4gKy8qCj4+PiArICogQXV0
aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBi
LnJvPgo+Pj4gKyAqCj4+PiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0
ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsCj4+PiByaWdodHMgcmVzZXJ2ZWQuCj4+PiArICoKPj4+
ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKPj4+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPj4+ICsgKiBhcmUgbWV0Ogo+Pj4gKyAq
Cj4+PiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4+PiArICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Pj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKPj4+IGluIHRoZQo+Pj4gKyAqwqDCoMKgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQo+Pj4gZGlzdHJpYnV0aW9u
Lgo+Pj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9y
IHRoZSBuYW1lcyBvZiBpdHMKPj4+ICsgKsKgwqDCoCBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCj4+PiBkZXJpdmVkIGZyb20KPj4+ICsgKsKg
wqDCoCB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgo+Pj4gKyAqCj4+PiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5ECj4+PiBDT05UUklCVVRPUlMgIkFTIElTIgo+Pj4gKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVECj4+PiBUTywgVEhFCj4+PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQQo+Pj4gUEFSVElDVUxBUiBQVVJQT1NFCj4+PiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCj4+
PiBDT05UUklCVVRPUlMgQkUKPj4+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4+PiArICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
Pj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IKPj4+IEJVU0lORVNTCj4+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCj4+PiBXSEVUSEVSIElOCj4+
PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SCj4+PiBPVEhFUldJU0UpCj4+PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKPj4+IEFEVklTRUQgT0YgVEhFCj4+
PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4+PiArICoKPj4+ICsgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+Pj4gKyAq
Lwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4+ICsjaW5jbHVkZSA8c3RyaW5nLmg+
Cj4+PiArI2luY2x1ZGUgPHVrL2N0b3JzLmg+Cj4+PiArI2luY2x1ZGUgPHVrL3ByaW50Lmg+Cj4+
PiArI2luY2x1ZGUgPHVrL3N3cmFuZC5oPgo+Pj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPj4+
ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4+PiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4K
Pj4+ICsjaW5jbHVkZSA8dmZzY29yZS91aW8uaD4KPj4+ICsjaW5jbHVkZSA8ZGV2ZnMvZGV2aWNl
Lmg+Cj4+PiArCj4+PiArI2RlZmluZSBERVZfUkFORE9NX05BTUUgInJhbmRvbSIKPj4+ICsjZGVm
aW5lIERFVl9VUkFORE9NX05BTUUgInVyYW5kb20iCj4+PiArCj4+PiAraW50IGRldl9yYW5kb21f
cmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYgX191bnVzZWQsIHN0cnVjdCB1aW8gKnVpbywKPj4+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBmbGFncyBfX3VudXNlZCkKPj4+ICt7Cj4+PiArwqDC
oMKgIHNpemVfdCBjb3VudCwgc3RlcCwgY2h1bmtfc2l6ZSwgaTsKPj4+ICvCoMKgwqAgY2hhciAq
YnVmOwo+Pj4gK8KgwqDCoCBfX3UzMiByZDsKPj4+ICsKPj4+ICvCoMKgwqAgYnVmID0gdWlvLT51
aW9faW92LT5pb3ZfYmFzZTsKPj4+ICvCoMKgwqAgY291bnQgPSB1aW8tPnVpb19pb3YtPmlvdl9s
ZW47Cj4+PiArCj4+PiArwqDCoMKgIHN0ZXAgPSBzaXplb2YoX191MzIpOwo+Pj4gK8KgwqDCoCBj
aHVua19zaXplID0gY291bnQgJSBzdGVwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBp
IDwgY291bnQgLSBjaHVua19zaXplOyBpICs9IHN0ZXApCj4+PiArwqDCoMKgwqDCoMKgwqAgKigo
X191MzIgKilidWYgKyBpKSA9IHVrX3N3cmFuZF9yYW5kcigpOwo+Pj4gKwo+Pj4gK8KgwqDCoCAv
KiBmaWxsIHRoZSByZW1haW5pbmcgYnl0ZXMgb2YgdGhlIGJ1ZmZlciAqLwo+Pj4gK8KgwqDCoCBp
ZiAoY2h1bmtfc2l6ZSA+IDApIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCByZCA9IHVrX3N3cmFuZF9y
YW5kcigpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIG1lbWNweShidWYgKyBpLCAmcmQsIGNodW5rX3Np
emUpOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIHVpby0+dWlvX3Jlc2lkID0gMDsK
Pj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCBkZXZfcmFuZG9tX29w
ZW4oc3RydWN0IGRldmljZSAqZGV2aWNlIF9fdW51c2VkLCBpbnQgbW9kZSBfX3VudXNlZCkKPj4+
ICt7Cj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICsKPj4+ICtpbnQgZGV2
X3JhbmRvbV9jbG9zZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgX191bnVzZWQpCj4+PiArewo+Pj4g
K8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBkZXZvcHMg
cmFuZG9tX2Rldm9wcyA9IHsKPj4+ICvCoMKgwqAgLnJlYWQgPSBkZXZfcmFuZG9tX3JlYWQsCj4+
PiArwqDCoMKgIC5vcGVuID0gZGV2X3JhbmRvbV9vcGVuLAo+Pj4gK8KgwqDCoCAuY2xvc2UgPSBk
ZXZfcmFuZG9tX2Nsb3NlLAo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBkcml2ZXIg
ZHJ2X3JhbmRvbSA9IHsKPj4+ICvCoMKgwqAgLmRldm9wcyA9ICZyYW5kb21fZGV2b3BzLAo+Pj4g
K8KgwqDCoCAuZGV2c3ogPSAwLAo+Pj4gK8KgwqDCoCAubmFtZSA9IERFVl9SQU5ET01fTkFNRQo+
Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBkcml2ZXIgZHJ2X3VyYW5kb20gPSB7Cj4+
PiArwqDCoMKgIC5kZXZvcHMgPSAmcmFuZG9tX2Rldm9wcywKPj4+ICvCoMKgwqAgLmRldnN6ID0g
MCwKPj4+ICvCoMKgwqAgLm5hbWUgPSBERVZfVVJBTkRPTV9OQU1FCj4+PiArfTsKPj4+ICsKPj4+
ICtfX2NvbnN0cnVjdG9yX3ByaW8oMTAyKSBzdGF0aWMgdm9pZCBfdWtfZGV2X3N3cmFuZF9jdG9y
KHZvaWQpCj4+PiArewo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+PiArCj4+PiAr
wqDCoMKgIHVrX3ByX2luZm8oIkFkZCAvZGV2L3JhbmRvbSBhbmQgL2Rldi91cmFuZG9tXG4iKTsK
Pj4KPj4gSSB3b3VsZCBzdWdnZXN0IHRvIHBocmFzZSB0aGUgbWVzc2FnZSB3aXRoOgo+PiB1a19w
cl9pbmZvKCJSZWdpc3RlciAnJXMnIGFuZCAnJXMnIHRvIGRldmZzXG4iLAo+PiAgwqDCoMKgwqDC
oMKgwqAgREVWX1JBTkRPTV9OQU1FLCBERVZfVVJBTkRPTV9OQU1FKTsKPj4KPj4+ICsKPj4+ICvC
oMKgwqAgLyogcmVnaXN0ZXIgL2Rldi91cmFuZG9tICovCj4+PiArwqDCoMKgIGRldiA9IGRldmlj
ZV9jcmVhdGUoJmRydl91cmFuZG9tLCBERVZfVVJBTkRPTV9OQU1FLCBEX0NIUik7Cj4+PiArwqDC
oMKgIGlmIChkZXYgPT0gTlVMTCkKPj4+ICvCoMKgwqDCoMKgwqDCoCB1a19wcl9pbmZvKCJGYWls
ZWQgdG8gcmVnaXN0ZXIgL2Rldi91cmFuZG9tXG4iKTsKPj4KPj4gSW4gdGhlIGVycm9yIGNhc2Us
IHByaW50IGFuIGVycm9yIG1lc3NhZ2U6Cj4+IHVrX3ByX2VycigiRmFpbGVkIHRvIHJlZ2lzdGVy
ICclcycgdG8gZGV2ZnNcbiIsIERFVl9VUkFORE9NX05BTUUpOwo+Pgo+Pj4gKwo+Pj4gK8KgwqDC
oCAvKiByZWdpc3RlciAvZGV2L3JhbmRvbSAqLwo+Pj4gK8KgwqDCoCBkZXYgPSBkZXZpY2VfY3Jl
YXRlKCZkcnZfcmFuZG9tLCBERVZfUkFORE9NX05BTUUsIERfQ0hSKTsKPj4+ICvCoMKgwqAgaWYg
KGRldiA9PSBOVUxMKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHVrX3ByX2luZm8oIkZhaWxlZCB0byBy
ZWdpc3RlciAvZGV2L3JhbmRvbVxuIik7Cj4+Cj4+IFNpbWlsYXIsIGhlcmUuCj4+PiArfQo+Pj4K
Pj4KPj4gVGhhbmtzLAo+Pgo+PiBTaW1vbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 17 14:15:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 17 Jun 2019 14:15: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 1hcsQ5-0000nq-5y; Mon, 17 Jun 2019 14:15:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Ihdy=UQ=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hcsQ4-0000nl-M3
 for minios-devel@lists.xen.org; Mon, 17 Jun 2019 14:15:36 +0000
X-Inumbo-ID: 5eb8fcce-910a-11e9-9e17-8303353ff63c
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5eb8fcce-910a-11e9-9e17-8303353ff63c;
 Mon, 17 Jun 2019 14:15:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4DC38F2079;
 Mon, 17 Jun 2019 16:15:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id sI-buKws0MOB; Mon, 17 Jun 2019 16:15:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2515EF2005;
 Mon, 17 Jun 2019 16:15:29 +0200 (CEST)
Received: from [10.1.2.186] (10.1.2.186) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 17 Jun 2019 16:15:28
 +0200
To: Costin Lupu <costin.lupu@cs.pub.ro>, <minios-devel@lists.xen.org>
References: <20190611193343.5679-1-costin.lupu@cs.pub.ro>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <149f2294-2f27-03c5-ddab-5680194d1077@neclab.eu>
Date: Mon, 17 Jun 2019 16:15:28 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190611193343.5679-1-costin.lupu@cs.pub.ro>
Content-Language: en-US
X-Originating-IP: [10.1.2.186]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Fix current thread
 retrieval in interrupt context on x86_64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, sharan.santhanam@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>

SGV5IENvc3RpbiwKCnRoYW5rcyBhIGxvdCBmb3IgdGhlIHBhdGNoLiBJIGhhdmUgYSBjb3VwbGUg
b2YgcXVlc3Rpb25zIHdoaWNoIEkgbmVlZCAKZm9yIG15IHVuZGVyc3RhbmRpbmcuIEkgcHV0IHRo
b3NlIGlubGluZS4uLgoKVGhhbmtzLAoKU2ltb24KCk9uIDExLjA2LjE5IDIxOjMzLCBDb3N0aW4g
THVwdSB3cm90ZToKPiBDb21taXQgMDE3ZmZmZDUgaW50cm9kdWNlZCBzdXBwb3J0IGZvciBzZXR0
aW5nIHRoZSBjdXJyZW50IHRocmVhZCBwb2ludGVyIG9uIHRvcAo+IG9mIGludGVycnVwdCBzdGFj
a3MgaW4gb3JkZXIgdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgdGhyZWFkIGluIGludGVycnVwdCBj
b250ZXh0Cj4gYXMgd2VsbC4gVW5mb3J0dW5hdGVseSwgdGhlIHdyb25nIHN0YWNrIHdhcyBwaWNr
ZWQgZm9yIEtWTSBwbGF0Zm9ybS4gVGhpcyBwYXRjaAo+IGZpeGVzIHRoYXQgYW5kIHNldHMgdGhl
IHRocmVhZCBvbiBjcHVfaW50cl9zdGFjayBpbnN0ZWFkLgo+IAo+IGNwdV9pbnRyX3N0YWNrIHdh
cyByZXNpemVkIHRvIFNUQUNLX1NJWkUgYmVjYXVzZSB0aGlzIGlzIGEgbWFuZGF0b3J5IGNvbmRp
dGlvbgo+IHdoZW4gc2F2aW5nIHRocmVhZHMgb24gdG9wLiBIb3dldmVyLCBnaXZlbiB0aGF0IGl0
IGFsc28gbmVlZHMgYSBTVEFDS19TSVpFCj4gYWxpZ25tZW50LCBhIG5ldyBzZWN0aW9uIHdhcyBj
cmVhdGVkIGZvciBpdCwgLmludHJzdGFjaywgaW4gb3JkZXIgdG8gYXZvaWQKPiBicmVha2luZyB0
aGUgZW50aXJlIGJpbmFyeSBpbWFnZSBsYXlvdXQuIFdpdGhvdXQgdGhpcyBuZXcgc2VjdGlvbiwg
dGhlIGVudGlyZQo+IC50ZXh0IHNlY3Rpb24gd291bGQgaGF2ZSBhIFNUQUNLX1NJWkUgYWxpZ25t
ZW50IChpLmUuIDY0S0IpIGFuZCB0aGlzIHdvdWxkIGltcGx5Cj4gdGhhdCB0aGUgbXVsdGlib290
IGhlYWRlciwgd2hpY2ggaXMgaW5jbHVkZWQgaW4gLnRleHQgc2VjdGlvbiwgd291bGQgYWxzbyBi
ZQo+IG1vdmVkIGF0IGFuIGFkZHJlc3MgaGlnaGVyIHRoYW4gU1RBQ0tfU0laRSwgZXZlbiB0aG91
Z2ggaXQgbXVzdCBzdGF5IGluIHRoZQo+IGZpcnN0IDhLQiBvZiB0aGUgYmluYXJ5LgoKTWF5YmUs
IHRoaXMgaXMgYSBzdHVwaWQgcXVlc3Rpb246IFdoYXQgaWYgd2UgdGFrZSB0aGUgcHJlLWFsbG9j
YXRlZCAKYm9vdHN0YWNrIGFsc28gZm9yIHRoZSBpbnRlcnJ1cHRzPyBBcyBzb29uIGFzIHdlIGVu
YWJsZSBzY2hlZHVsaW5nIHRoZSAKYm9vdHN0YWNrIGlzIG5vdCB1c2VkIGFueW1vcmUgYnkgYW55
IHRocmVhZC4gRXhjZXB0IHRoZSBjYXNlIHdoZXJlIHdlIGRvIApub3QgaGF2ZSBzY2hlZHVsaW5n
LCB0aGUgYm9vdHN0YWNrIHdpbGwgYmUgc3RpbGwgdXNlZCBkdXJpbmcgbGlmZSB0aW1lLCAKd291
bGQgdGhpcyBiZSBhbiBpc3N1ZT8KCj4gCj4gU2lnbmVkLW9mZi1ieTogQ29zdGluIEx1cHUgPGNv
c3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPiAtLS0KPiAgIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAg
fCAgMSArCj4gICBwbGF0L2t2bS9tZW1vcnkuYyAgICAgICAgIHwgIDYgLS0tLS0tCj4gICBwbGF0
L2t2bS94ODYvbGluazY0Lmxkcy5TIHwgMTAgKysrKysrKysrKwo+ICAgcGxhdC9rdm0veDg2L21l
bW9yeS5jICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCj4gICBwbGF0L2t2bS94ODYvdHJhcHMuYyAgICAgIHwgIDUgKysrKy0KPiAgIDUgZmlsZXMg
Y2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBwbGF0L2t2bS94ODYvbWVtb3J5LmMKPiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0v
TWFrZWZpbGUudWsgYi9wbGF0L2t2bS9NYWtlZmlsZS51awo+IGluZGV4IDcxYzRjNDE5Li44ZWIx
NjJkNCAxMDA2NDQKPiAtLS0gYS9wbGF0L2t2bS9NYWtlZmlsZS51awo+ICsrKyBiL3BsYXQva3Zt
L01ha2VmaWxlLnVrCj4gQEAgLTQ2LDYgKzQ2LDcgQEAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklH
X0FSQ0hfWDg2XzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkveDg2L2xjcHUuYwo+ICAgTElCS1ZN
UExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkveDg2
L2ludGN0cmwuYwo+ICAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAk
KExJQktWTVBMQVRfQkFTRSkveDg2L3RzY2Nsb2NrLmMKPiAgIExJQktWTVBMQVRfU1JDUy0kKENP
TkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL3g4Ni90aW1lLmMKPiArTElC
S1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkv
eDg2L21lbW9yeS5jfHg4Ngo+ICAgaWZlcSAoJChmaW5kc3RyaW5nIHksJChDT05GSUdfS1ZNX0tF
Uk5FTF9WR0FfQ09OU09MRSkgJChDT05GSUdfS1ZNX0RFQlVHX1ZHQV9DT05TT0xFKSkseSkKPiAg
IExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJLVk1QTEFUX0JB
U0UpL3g4Ni92Z2FfY29uc29sZS5jCj4gICBlbmRpZgo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9t
ZW1vcnkuYyBiL3BsYXQva3ZtL21lbW9yeS5jCj4gaW5kZXggZTk2YmFkMmMuLjdmMmZiNDZhIDEw
MDY0NAo+IC0tLSBhL3BsYXQva3ZtL21lbW9yeS5jCj4gKysrIGIvcGxhdC9rdm0vbWVtb3J5LmMK
PiBAQCAtMTc4LDkgKzE3OCwzIEBAIGludCBfdWtwbGF0X21lbV9tYXBwaW5nc19pbml0KHZvaWQp
Cj4gICB7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gLQo+IC12b2lkIHVrcGxhdF9zdGFja19zZXRf
Y3VycmVudF90aHJlYWQodm9pZCAqdGhyZWFkX2FkZHIpCj4gLXsKPiAtCSooKHVuc2lnbmVkIGxv
bmcgKikgX2xpYmt2bXBsYXRfY2ZnLmJzdGFjay5lbmQpID0KPiAtCQkodW5zaWduZWQgbG9uZykg
dGhyZWFkX2FkZHI7Cj4gLX0KPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMu
UyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKPiBpbmRleCAzNjJiYTNlNi4uNjEwM2ZjMmQg
MTAwNjQ0Cj4gLS0tIGEvcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUwo+ICsrKyBiL3BsYXQva3Zt
L3g4Ni9saW5rNjQubGRzLlMKPiBAQCAtOTksNiArOTksMTYgQEAgU0VDVElPTlMKPiAgIAkJLiA9
IEFMSUdOKF9fUEFHRV9TSVpFKTsKPiAgIAl9Cj4gICAKPiArCS8qIFdlIGtlZXAgdGhlIGludGVy
cnVwdCBzdGFjayBvbiBhIGRpZmZlcmVudCBzZWN0aW9uCj4gKwkgKiBnaXZlbiB0aGF0IGl0IG1h
eSBoYXZlIGEgYmlnIGFsaWdubWVudCBhbmQgaXQgd291bGQKPiArCSAqIGNoYW5nZSB0aGUgZW50
aXJlIGJpbmFyeSBsYXlvdXQKPiArCSAqLwo+ICsJLmludHJzdGFjayA6Cj4gKwl7Cj4gKwkJKigu
aW50cnN0YWNrKQo+ICsJCS4gPSBBTElHTihfX1BBR0VfU0laRSk7Cj4gKwl9Cj4gKwoKV291bGQg
ZXZlcnkgcGxhdGZvcm0gbmVlZCB0byBkbyB0aGlzPwoKPiAgIAlfZW5kID0gLjsKPiAgIAo+ICAg
CS5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH0KPiBkaWZmIC0tZ2l0IGEvcGxhdC9r
dm0veDg2L21lbW9yeS5jIGIvcGxhdC9rdm0veDg2L21lbW9yeS5jCj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uYjhjN2M3ZTcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv
cGxhdC9rdm0veDg2L21lbW9yeS5jCj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IENvc3Rp
biBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1l
dDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiAr
ICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
Cj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+
ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
PiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQg
SU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8dWsvcGxhdC9tZW1vcnkuaD4KPiAr
Cj4gKwo+ICtleHRlcm4gY2hhciBjcHVfaW50cl9zdGFja1tdOwo+ICsKPiArdm9pZCB1a3BsYXRf
c3RhY2tfc2V0X2N1cnJlbnRfdGhyZWFkKHZvaWQgKnRocmVhZF9hZGRyKQo+ICt7Cj4gKwkqKCh1
bnNpZ25lZCBsb25nICopIGNwdV9pbnRyX3N0YWNrKSA9Cj4gKwkJKHVuc2lnbmVkIGxvbmcpIHRo
cmVhZF9hZGRyOwoKSW4gZ2VuZXJhbCwgaW5zdGVhZCBvZiB1c2luZyB0aGUgc3RhY2sgdG9wLCB3
ZSBjb3VsZCBzYXZlIHRoZSBjdXJyZW50IAp0aHJlYWQgYWx3YXlzIG9uIHRoZSBzdGFjayBib3R0
b20uIFRob3NlIGJ5dGVzIHdvdWxkIGJlIHJlc2VydmVkIGFuZCAKd291bGQgb25seSBiZSBwb3Bw
ZWQgb24gYSBtaXNiZWhhdmluZyBwcm9ncmFtLiBXb3VsZCB0aGF0IGF2b2lkIHRoZSAKaXNzdWUg
dGhhdCB5b3UgYXJlIGZhY2luZz8gTWF5YmUgd2UgY291bGQgZ2V0IGF3YXkgZnJvbSB0aGUgcHJv
YmxlbSB0aGF0IAp0aGUgc3RhY2tzIGhhdmUgdG8gaGF2ZSBhIGZpeGVkIHNpemUgZm9yIGp1c3Qg
Z2V0dGluZyB0aGUgY3VycmVudCB2YWx1ZS4uLgoKPiArfQo+IGRpZmYgLS1naXQgYS9wbGF0L2t2
bS94ODYvdHJhcHMuYyBiL3BsYXQva3ZtL3g4Ni90cmFwcy5jCj4gaW5kZXggMjdlZjZkOTMuLmZl
MWRkNWE0IDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL3g4Ni90cmFwcy5jCj4gKysrIGIvcGxhdC9r
dm0veDg2L3RyYXBzLmMKPiBAQCAtMjUsNyArMjUsOSBAQAo+ICAgICovCj4gICAKPiAgICNpbmNs
dWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiAgICNpbmNsdWRl
IDx1ay9hcmNoL2xjcHUuaD4KPiArI2luY2x1ZGUgPHVrL3BsYXQvY29uZmlnLmg+Cj4gICAjaW5j
bHVkZSA8eDg2L2Rlc2MuaD4KPiAgICNpbmNsdWRlIDxrdm0teDg2L3RyYXBzLmg+Cj4gICAKPiBA
QCAtNTksNyArNjEsOCBAQCBzdGF0aWMgdm9pZCBnZHRfaW5pdCh2b2lkKQo+ICAgCj4gICBzdGF0
aWMgc3RydWN0IHRzczY0IGNwdV90c3M7Cj4gICAKPiAtc3RhdGljIGNoYXIgY3B1X2ludHJfc3Rh
Y2tbNDA5Nl07IC8qIElTVDEgKi8KPiArIF9fc2VjdGlvbigiLmludHJzdGFjayIpICBfX2FsaWdu
KFNUQUNLX1NJWkUpCj4gK2NoYXIgY3B1X2ludHJfc3RhY2tbU1RBQ0tfU0laRV07ICAvKiBJU1Qx
ICovCgpZb3UgcmVtb3ZlZCB0aGUgc3RhY2sgYWN0dWFsbHkgZnJvbSB0aGUgLmJzcyBzZWN0aW9u
IChpbnN0ZWFkIG9mIHRleHQpIAphbmQgbW92ZWQgaXQgdG8gYW4gb3duIHNlY3Rpb24uIFdoYXQg
aWYgeW91IGtlZXAgaXQgb24gdGhlIC5ic3MgYnV0IHdpdGggCnRoZSBiaWdnZXIgc2l6ZT8gSSBl
eHBlY3QgdGhpcyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbSBmb3IgdGhlIHRleHQgc2VjdGlvbi4K
Cj4gICBzdGF0aWMgY2hhciBjcHVfdHJhcF9zdGFja1s0MDk2XTsgLyogSVNUMiAqLwo+ICAgc3Rh
dGljIGNoYXIgY3B1X25taV9zdGFja1s0MDk2XTsgIC8qIElTVDMgKi8KPiAgIAo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Jun 17 19:15:15 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 17 Jun 2019 19:15: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 1hcx62-0003kK-8B; Mon, 17 Jun 2019 19:15:14 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Urqr=UQ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hcx61-0003kF-3z
 for minios-devel@lists.xen.org; Mon, 17 Jun 2019 19:15:13 +0000
X-Inumbo-ID: 397de27f-9134-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 397de27f-9134-11e9-8980-bc764e045a96;
 Mon, 17 Jun 2019 19:15:10 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id n9so11255176wru.0
 for <minios-devel@lists.xen.org>; Mon, 17 Jun 2019 12:15:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=vIJKA2G7PUQKUoWjmmVbx/kICnfrMraTv9+JHxaqw1I=;
 b=ajJCibkEu8nGI/6DxbRDYdTHaMYN3E7whhxU90LEfG9sx5XhGOComR68Zm4hEQMXE0
 eYebvZ6/5ynyPzGsEmuLXMVu//QNib0pT+5KctbnQgxVqWSmRPNW9UBeNWn2zOSZZZ23
 7FZyoNypl/7GnUQUXqkvcAr9OpuZdt8qlaH6OBzs/hkVOkjn39X1+/EGu9OO7p8bqoMn
 m2QKC7ihg0O8J4VzV4vm95nN1rlyXyWDE+xkBYaeMiqZuDiHWwu3BpdqO+EJpygas9Z/
 00kS3Be/GHmNTDxn8PPXPzDTqAN0FBbXLLmRp9o28r0HNbRomEvRtHdejkJ/T7hprTHc
 M2sQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=vIJKA2G7PUQKUoWjmmVbx/kICnfrMraTv9+JHxaqw1I=;
 b=iRRVhApKN01YucIHl3mNIrBjDmn6BQRjFBzPJhBfxxXRXUqCO5KlwR72mpqRmObB1x
 G/y172w1cW0KAiWFzjj2rSTmXhE5e1i/YZKoSRi5s+ByoyDQb6gOpLTZ/KVhuHEi+k65
 bH33Rrvqt1XJYzCRx/PmuUgyHlKxULP16wjmd16FqQKSini7+vPQKhAEmAd30rpKR1Dl
 T416Ok9SP7oKbgaZFGSieDnQ/eotJIUb3EBFlFoAggiTNDpo6ZibkoqX0qhyf+Fwx6Qa
 vBn1IuDrESj8t42ZghBG32C6c7FeK3Qynd0ct8vnnD/sR06sD68GHziSaIjdS+fJw5xh
 BiAg==
X-Gm-Message-State: APjAAAVsUwWujkNioR3xTP31dY5V4SIu/o6hrmPSuCX6lgrghjZG9W8P
 KoiSwHhN90wPCm+yrNmAnd+emJFxakQ=
X-Google-Smtp-Source: APXvYqxTTFFf2vayVhHua8CbxQYkJIahytyUsckMVhxDyjYDxxc5RISBOUpzP8rIx1cPFYh2jOfyVw==
X-Received: by 2002:a5d:6242:: with SMTP id m2mr34925628wrv.310.1560798909557; 
 Mon, 17 Jun 2019 12:15:09 -0700 (PDT)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro.
 [5.12.253.106])
 by smtp.gmail.com with ESMTPSA id g8sm123109wmf.17.2019.06.17.12.15.08
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 17 Jun 2019 12:15:08 -0700 (PDT)
To: Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.ro>, minios-devel@lists.xen.org
References: <20190611193343.5679-1-costin.lupu@cs.pub.ro>
 <149f2294-2f27-03c5-ddab-5680194d1077@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <ff8cc7df-72d1-85be-b69d-17e454494683@gmail.com>
Date: Mon, 17 Jun 2019 22:15:07 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <149f2294-2f27-03c5-ddab-5680194d1077@neclab.eu>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Fix current thread
 retrieval in interrupt context on x86_64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

T24gNi8xNy8xOSA1OjE1IFBNLCBTaW1vbiBLdWVuemVyIHdyb3RlOgo+IEhleSBDb3N0aW4sCj4g
Cj4gdGhhbmtzIGEgbG90IGZvciB0aGUgcGF0Y2guIEkgaGF2ZSBhIGNvdXBsZSBvZiBxdWVzdGlv
bnMgd2hpY2ggSSBuZWVkCj4gZm9yIG15IHVuZGVyc3RhbmRpbmcuIEkgcHV0IHRob3NlIGlubGlu
ZS4uLgo+IAo+IFRoYW5rcywKPiAKPiBTaW1vbgo+IAo+IE9uIDExLjA2LjE5IDIxOjMzLCBDb3N0
aW4gTHVwdSB3cm90ZToKPj4gQ29tbWl0IDAxN2ZmZmQ1IGludHJvZHVjZWQgc3VwcG9ydCBmb3Ig
c2V0dGluZyB0aGUgY3VycmVudCB0aHJlYWQKPj4gcG9pbnRlciBvbiB0b3AKPj4gb2YgaW50ZXJy
dXB0IHN0YWNrcyBpbiBvcmRlciB0byByZXRyaWV2ZSB0aGUgY3VycmVudCB0aHJlYWQgaW4KPj4g
aW50ZXJydXB0IGNvbnRleHQKPj4gYXMgd2VsbC4gVW5mb3J0dW5hdGVseSwgdGhlIHdyb25nIHN0
YWNrIHdhcyBwaWNrZWQgZm9yIEtWTSBwbGF0Zm9ybS4KPj4gVGhpcyBwYXRjaAo+PiBmaXhlcyB0
aGF0IGFuZCBzZXRzIHRoZSB0aHJlYWQgb24gY3B1X2ludHJfc3RhY2sgaW5zdGVhZC4KPj4KPj4g
Y3B1X2ludHJfc3RhY2sgd2FzIHJlc2l6ZWQgdG8gU1RBQ0tfU0laRSBiZWNhdXNlIHRoaXMgaXMg
YSBtYW5kYXRvcnkKPj4gY29uZGl0aW9uCj4+IHdoZW4gc2F2aW5nIHRocmVhZHMgb24gdG9wLiBI
b3dldmVyLCBnaXZlbiB0aGF0IGl0IGFsc28gbmVlZHMgYQo+PiBTVEFDS19TSVpFCj4+IGFsaWdu
bWVudCwgYSBuZXcgc2VjdGlvbiB3YXMgY3JlYXRlZCBmb3IgaXQsIC5pbnRyc3RhY2ssIGluIG9y
ZGVyIHRvCj4+IGF2b2lkCj4+IGJyZWFraW5nIHRoZSBlbnRpcmUgYmluYXJ5IGltYWdlIGxheW91
dC4gV2l0aG91dCB0aGlzIG5ldyBzZWN0aW9uLCB0aGUKPj4gZW50aXJlCj4+IC50ZXh0IHNlY3Rp
b24gd291bGQgaGF2ZSBhIFNUQUNLX1NJWkUgYWxpZ25tZW50IChpLmUuIDY0S0IpIGFuZCB0aGlz
Cj4+IHdvdWxkIGltcGx5Cj4+IHRoYXQgdGhlIG11bHRpYm9vdCBoZWFkZXIsIHdoaWNoIGlzIGlu
Y2x1ZGVkIGluIC50ZXh0IHNlY3Rpb24sIHdvdWxkCj4+IGFsc28gYmUKPj4gbW92ZWQgYXQgYW4g
YWRkcmVzcyBoaWdoZXIgdGhhbiBTVEFDS19TSVpFLCBldmVuIHRob3VnaCBpdCBtdXN0IHN0YXkK
Pj4gaW4gdGhlCj4+IGZpcnN0IDhLQiBvZiB0aGUgYmluYXJ5Lgo+IAo+IE1heWJlLCB0aGlzIGlz
IGEgc3R1cGlkIHF1ZXN0aW9uOiBXaGF0IGlmIHdlIHRha2UgdGhlIHByZS1hbGxvY2F0ZWQKPiBi
b290c3RhY2sgYWxzbyBmb3IgdGhlIGludGVycnVwdHM/IEFzIHNvb24gYXMgd2UgZW5hYmxlIHNj
aGVkdWxpbmcgdGhlCj4gYm9vdHN0YWNrIGlzIG5vdCB1c2VkIGFueW1vcmUgYnkgYW55IHRocmVh
ZC4gRXhjZXB0IHRoZSBjYXNlIHdoZXJlIHdlIGRvCj4gbm90IGhhdmUgc2NoZWR1bGluZywgdGhl
IGJvb3RzdGFjayB3aWxsIGJlIHN0aWxsIHVzZWQgZHVyaW5nIGxpZmUgdGltZSwKPiB3b3VsZCB0
aGlzIGJlIGFuIGlzc3VlPwo+IAoKSW4gdGhlb3J5IHRoaXMgc2hvdWxkIHdvcmsuIEJ1dCB3aGF0
IGFib3V0IHRoZSBjYXNlIHdoZW4gd2UgZG9uJ3QgaGF2ZQpzY2hlZHVsaW5nPyBXb3VsZG4ndCB3
ZSBzdGlsbCBuZWVkIGEgZGlmZmVyZW50IHN0YWNrPwoKPj4KPj4gU2lnbmVkLW9mZi1ieTogQ29z
dGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPj4gLS0tCj4+IMKgIHBsYXQva3ZtL01h
a2VmaWxlLnVrwqDCoMKgwqDCoCB8wqAgMSArCj4+IMKgIHBsYXQva3ZtL21lbW9yeS5jwqDCoMKg
wqDCoMKgwqDCoCB8wqAgNiAtLS0tLS0KPj4gwqAgcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyB8
IDEwICsrKysrKysrKysKPj4gwqAgcGxhdC9rdm0veDg2L21lbW9yeS5jwqDCoMKgwqAgfCA0NAo+
PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiDCoCBwbGF0
L2t2bS94ODYvdHJhcHMuY8KgwqDCoMKgwqAgfMKgIDUgKysrKy0KPj4gwqAgNSBmaWxlcyBjaGFu
Z2VkLCA1OSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+PiDCoCBjcmVhdGUgbW9kZSAx
MDA2NDQgcGxhdC9rdm0veDg2L21lbW9yeS5jCj4+Cj4+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9N
YWtlZmlsZS51ayBiL3BsYXQva3ZtL01ha2VmaWxlLnVrCj4+IGluZGV4IDcxYzRjNDE5Li44ZWIx
NjJkNCAxMDA2NDQKPj4gLS0tIGEvcGxhdC9rdm0vTWFrZWZpbGUudWsKPj4gKysrIGIvcGxhdC9r
dm0vTWFrZWZpbGUudWsKPj4gQEAgLTQ2LDYgKzQ2LDcgQEAgTElCS1ZNUExBVF9TUkNTLSQoQ09O
RklHX0FSQ0hfWDg2XzY0KSArPQo+PiAkKExJQktWTVBMQVRfQkFTRSkveDg2L2xjcHUuYwo+PiDC
oCBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQpICs9Cj4+ICQoTElCS1ZNUExB
VF9CQVNFKS94ODYvaW50Y3RybC5jCj4+IMKgIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNI
X1g4Nl82NCkgKz0KPj4gJChMSUJLVk1QTEFUX0JBU0UpL3g4Ni90c2NjbG9jay5jCj4+IMKgIExJ
QktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0Up
L3g4Ni90aW1lLmMKPj4gK0xJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0K
Pj4gJChMSUJLVk1QTEFUX0JBU0UpL3g4Ni9tZW1vcnkuY3x4ODYKPj4gwqAgaWZlcSAoJChmaW5k
c3RyaW5nIHksJChDT05GSUdfS1ZNX0tFUk5FTF9WR0FfQ09OU09MRSkKPj4gJChDT05GSUdfS1ZN
X0RFQlVHX1ZHQV9DT05TT0xFKSkseSkKPj4gwqAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FS
Q0hfWDg2XzY0KSArPQo+PiAkKExJQktWTVBMQVRfQkFTRSkveDg2L3ZnYV9jb25zb2xlLmMKPj4g
wqAgZW5kaWYKPj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL21lbW9yeS5jIGIvcGxhdC9rdm0vbWVt
b3J5LmMKPj4gaW5kZXggZTk2YmFkMmMuLjdmMmZiNDZhIDEwMDY0NAo+PiAtLS0gYS9wbGF0L2t2
bS9tZW1vcnkuYwo+PiArKysgYi9wbGF0L2t2bS9tZW1vcnkuYwo+PiBAQCAtMTc4LDkgKzE3OCwz
IEBAIGludCBfdWtwbGF0X21lbV9tYXBwaW5nc19pbml0KHZvaWQpCj4+IMKgIHsKPj4gwqDCoMKg
wqDCoCByZXR1cm4gMDsKPj4gwqAgfQo+PiAtCj4+IC12b2lkIHVrcGxhdF9zdGFja19zZXRfY3Vy
cmVudF90aHJlYWQodm9pZCAqdGhyZWFkX2FkZHIpCj4+IC17Cj4+IC3CoMKgwqAgKigodW5zaWdu
ZWQgbG9uZyAqKSBfbGlia3ZtcGxhdF9jZmcuYnN0YWNrLmVuZCkgPQo+PiAtwqDCoMKgwqDCoMKg
wqAgKHVuc2lnbmVkIGxvbmcpIHRocmVhZF9hZGRyOwo+PiAtfQo+PiBkaWZmIC0tZ2l0IGEvcGxh
dC9rdm0veDg2L2xpbms2NC5sZHMuUyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKPj4gaW5k
ZXggMzYyYmEzZTYuLjYxMDNmYzJkIDEwMDY0NAo+PiAtLS0gYS9wbGF0L2t2bS94ODYvbGluazY0
Lmxkcy5TCj4+ICsrKyBiL3BsYXQva3ZtL3g4Ni9saW5rNjQubGRzLlMKPj4gQEAgLTk5LDYgKzk5
LDE2IEBAIFNFQ1RJT05TCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuID0gQUxJR04oX19QQUdFX1NJ
WkUpOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgK8KgwqDCoCAvKiBXZSBrZWVwIHRoZSBpbnRlcnJ1
cHQgc3RhY2sgb24gYSBkaWZmZXJlbnQgc2VjdGlvbgo+PiArwqDCoMKgwqAgKiBnaXZlbiB0aGF0
IGl0IG1heSBoYXZlIGEgYmlnIGFsaWdubWVudCBhbmQgaXQgd291bGQKPj4gK8KgwqDCoMKgICog
Y2hhbmdlIHRoZSBlbnRpcmUgYmluYXJ5IGxheW91dAo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDC
oCAuaW50cnN0YWNrIDoKPj4gK8KgwqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAqKC5pbnRyc3Rh
Y2spCj4+ICvCoMKgwqDCoMKgwqDCoCAuID0gQUxJR04oX19QQUdFX1NJWkUpOwo+PiArwqDCoMKg
IH0KPj4gKwo+IAo+IFdvdWxkIGV2ZXJ5IHBsYXRmb3JtIG5lZWQgdG8gZG8gdGhpcz8KPiAKCk9u
IFhlbiwgdGhlIGludGVycnVwdCBpcyBhbHJlYWR5IGFsaWduZWQgdG8gU1RBQ0tfU0laRS4gT24g
bGludXh1LCB0aGUKc2lnbmFscyB1c2UgdGhlIGN1cnJlbnQgcHJvY2VzcyBzdGFjaywgd2Ugc2hv
dWxkIGNoYW5nZSBpdCB0byB1c2luZyBhbgphbHRlcm5hdGl2ZSBzdGFjayBpZiB3ZSB3YW50IHRv
IHVzZSB0aGUgc2FtZSBhcHByb2FjaC4KCj4+IMKgwqDCoMKgwqAgX2VuZCA9IC47Cj4+IMKgIMKg
wqDCoMKgwqAgLmNvbW1lbnTCoMKgwqDCoMKgwqAgMCA6IHsgKiguY29tbWVudCkgfQo+PiBkaWZm
IC0tZ2l0IGEvcGxhdC9rdm0veDg2L21lbW9yeS5jIGIvcGxhdC9rdm0veDg2L21lbW9yeS5jCj4+
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwLi5iOGM3YzdlNwo+PiAtLS0g
L2Rldi9udWxsCj4+ICsrKyBiL3BsYXQva3ZtL3g4Ni9tZW1vcnkuYwo+PiBAQCAtMCwwICsxLDQ0
IEBACj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+ICsv
Kgo+PiArICogQXV0aG9yczogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPj4g
KyAqCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2Yg
QnVjaGFyZXN0LiBBbGwKPj4gcmlnaHRzIHJlc2VydmVkLgo+PiArICoKPj4gKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAo+PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4+ICsgKiBhcmUgbWV0Ogo+PiArICoKPj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCj4+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+PiArICrCoMKgwqAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
Cj4+IHRoZQo+PiArICrCoMKgwqAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCj4+IGRpc3RyaWJ1dGlvbi4KPj4gKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4gKyAq
wqDCoMKgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAo+PiBmcm9tCj4+ICsgKsKgwqDCoCB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+PiArICoKPj4gKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORAo+PiBDT05UUklC
VVRPUlMgIkFTIElTIgo+PiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKPj4gVE8sIFRIRQo+PiArICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Cj4+IFBVUlBPU0UKPj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUgo+PiBDT05UUklCVVRPUlMgQkUKPj4gKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
Pj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKPj4gQlVTSU5FU1MKPj4gKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAo+
PiBXSEVUSEVSIElOCj4+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKPj4gT1RIRVJXSVNFKQo+PiArICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKPj4gQURWSVNF
RCBPRiBUSEUKPj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+PiArICoKPj4gKyAq
IFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVku
Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPHVrL3BsYXQvbWVtb3J5Lmg+Cj4+ICsKPj4gKwo+
PiArZXh0ZXJuIGNoYXIgY3B1X2ludHJfc3RhY2tbXTsKPj4gKwo+PiArdm9pZCB1a3BsYXRfc3Rh
Y2tfc2V0X2N1cnJlbnRfdGhyZWFkKHZvaWQgKnRocmVhZF9hZGRyKQo+PiArewo+PiArwqDCoMKg
ICooKHVuc2lnbmVkIGxvbmcgKikgY3B1X2ludHJfc3RhY2spID0KPj4gK8KgwqDCoMKgwqDCoMKg
ICh1bnNpZ25lZCBsb25nKSB0aHJlYWRfYWRkcjsKPiAKPiBJbiBnZW5lcmFsLCBpbnN0ZWFkIG9m
IHVzaW5nIHRoZSBzdGFjayB0b3AsIHdlIGNvdWxkIHNhdmUgdGhlIGN1cnJlbnQKPiB0aHJlYWQg
YWx3YXlzIG9uIHRoZSBzdGFjayBib3R0b20uIFRob3NlIGJ5dGVzIHdvdWxkIGJlIHJlc2VydmVk
IGFuZAo+IHdvdWxkIG9ubHkgYmUgcG9wcGVkIG9uIGEgbWlzYmVoYXZpbmcgcHJvZ3JhbS4gV291
bGQgdGhhdCBhdm9pZCB0aGUKPiBpc3N1ZSB0aGF0IHlvdSBhcmUgZmFjaW5nPyBNYXliZSB3ZSBj
b3VsZCBnZXQgYXdheSBmcm9tIHRoZSBwcm9ibGVtIHRoYXQKPiB0aGUgc3RhY2tzIGhhdmUgdG8g
aGF2ZSBhIGZpeGVkIHNpemUgZm9yIGp1c3QgZ2V0dGluZyB0aGUgY3VycmVudCB2YWx1ZS4uLgo+
IAoKSG93IGRvIHlvdSBkZXRlcm1pbmUgdGhlIHN0YWNrIGJvdHRvbSB3aGVuIHlvdSBhcmUgdXNp
bmcgaXQsIGUuZy4gd2hlbgpyZXRyaWV2aW5nIHRoZSBjdXJyZW50IHRocmVhZD8gSSB0aGluayB5
b3Ugd291bGQgdXNlIHRoZSBzYW1lIHdheSBhcyBmb3IKZ2V0dGluZyB0aGUgY3VycmVudCB0aHJl
YWQgZnJvbSB0aGUgc3RhY2sgdG9wLiBTbyB5b3Ugc3RpbGwgbmVlZCB0aGlzCmFsaWdubWVudCBj
b25zdHJhaW50LgoKPj4gK30KPj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL3g4Ni90cmFwcy5jIGIv
cGxhdC9rdm0veDg2L3RyYXBzLmMKPj4gaW5kZXggMjdlZjZkOTMuLmZlMWRkNWE0IDEwMDY0NAo+
PiAtLS0gYS9wbGF0L2t2bS94ODYvdHJhcHMuYwo+PiArKysgYi9wbGF0L2t2bS94ODYvdHJhcHMu
Ywo+PiBAQCAtMjUsNyArMjUsOSBAQAo+PiDCoMKgICovCj4+IMKgIMKgICNpbmNsdWRlIDxzdHJp
bmcuaD4KPj4gKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+Cj4+IMKgICNpbmNsdWRlIDx1ay9h
cmNoL2xjcHUuaD4KPj4gKyNpbmNsdWRlIDx1ay9wbGF0L2NvbmZpZy5oPgo+PiDCoCAjaW5jbHVk
ZSA8eDg2L2Rlc2MuaD4KPj4gwqAgI2luY2x1ZGUgPGt2bS14ODYvdHJhcHMuaD4KPj4gwqAgQEAg
LTU5LDcgKzYxLDggQEAgc3RhdGljIHZvaWQgZ2R0X2luaXQodm9pZCkKPj4gwqAgwqAgc3RhdGlj
IHN0cnVjdCB0c3M2NCBjcHVfdHNzOwo+PiDCoCAtc3RhdGljIGNoYXIgY3B1X2ludHJfc3RhY2tb
NDA5Nl07IC8qIElTVDEgKi8KPj4gKyBfX3NlY3Rpb24oIi5pbnRyc3RhY2siKcKgIF9fYWxpZ24o
U1RBQ0tfU0laRSkKPj4gK2NoYXIgY3B1X2ludHJfc3RhY2tbU1RBQ0tfU0laRV07wqAgLyogSVNU
MSAqLwo+IAo+IFlvdSByZW1vdmVkIHRoZSBzdGFjayBhY3R1YWxseSBmcm9tIHRoZSAuYnNzIHNl
Y3Rpb24gKGluc3RlYWQgb2YgdGV4dCkKPiBhbmQgbW92ZWQgaXQgdG8gYW4gb3duIHNlY3Rpb24u
IFdoYXQgaWYgeW91IGtlZXAgaXQgb24gdGhlIC5ic3MgYnV0IHdpdGgKPiB0aGUgYmlnZ2VyIHNp
emU/IEkgZXhwZWN0IHRoaXMgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gZm9yIHRoZSB0ZXh0Cj4g
c2VjdGlvbi4KPiAKCkluIHRoZSBjb21taXQgbWVzc2FnZSBpdCBzaG91bGQgaGF2ZSBiZWVuICcu
dGV4dCBzZWdtZW50Jywgb3IgdGhlIGZpcnN0CnNlZ21lbnQgb2YgdGhlIGJpbmFyeSwgd2hpY2gg
Y29udGFpbnMgYm90aCAudGV4dCBhbmQgLmJzcyBzZWN0aW9ucy4gU28sCnllYWgsIGl0J3MgdGhl
IHNlZ21lbnQgdGhhdCBnZXRzIHJlYWxpZ25lZC4gSWYgd2UgZG9uJ3QgbW92ZSBpdCB0bwphbm90
aGVyIHNlY3Rpb24sIGl0IHdvdWxkIHJlbWFpbiBpbiAuYnNzLCB3aGljaCBpcyB3aGF0IHRoaXMg
Zml4IHRyaWVzCnRvIGF2b2lkLiBJZiB3ZSBtb3ZlIGl0IHRvIGEgbmV3IHNlY3Rpb24sIGl0IHdp
bGwgYWxzbyBiZSBtb3ZlZCB0byBhCmRpZmZlcmVudCBzZWdtZW50IGFuZCB0aGF0J3MgaG93IHRo
ZSBzZWdtZW50IGNvbnRhaW5pbmcgLnRleHQgd2lsbCBrZWVwCml0cyBvcmlnaW5hbCBhbGlnbm1l
bnQuCgo+PiDCoCBzdGF0aWMgY2hhciBjcHVfdHJhcF9zdGFja1s0MDk2XTsgLyogSVNUMiAqLwo+
PiDCoCBzdGF0aWMgY2hhciBjcHVfbm1pX3N0YWNrWzQwOTZdO8KgIC8qIElTVDMgKi8KPj4gwqAK
PiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 18 21:35:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 18 Jun 2019 21:35: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 1hdLl8-0004Z4-RU; Tue, 18 Jun 2019 21:35:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=LPaJ=UR=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hdLl7-0004Yz-4F
 for minios-devel@lists.xen.org; Tue, 18 Jun 2019 21:35:17 +0000
X-Inumbo-ID: f3f78114-9210-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f3f78114-9210-11e9-8980-bc764e045a96;
 Tue, 18 Jun 2019 21:35:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C43E4F2021;
 Tue, 18 Jun 2019 23:35:11 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 5N1ShGDr9RZr; Tue, 18 Jun 2019 23:35:11 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 93399F201D;
 Tue, 18 Jun 2019 23:35:05 +0200 (CEST)
Received: from [10.7.0.209] (10.7.0.209) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 18 Jun 2019 23:35:05
 +0200
To: Costin Lupu <costin.lup@gmail.com>, Costin Lupu <costin.lupu@cs.pub.ro>,
 <minios-devel@lists.xen.org>
References: <20190611193343.5679-1-costin.lupu@cs.pub.ro>
 <149f2294-2f27-03c5-ddab-5680194d1077@neclab.eu>
 <ff8cc7df-72d1-85be-b69d-17e454494683@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <cf1b6162-fee0-e607-2c2c-5033a3b324c4@neclab.eu>
Date: Tue, 18 Jun 2019 23:35:04 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <ff8cc7df-72d1-85be-b69d-17e454494683@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.209]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Fix current thread
 retrieval in interrupt context on x86_64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, sharan.santhanam@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>

SGV5IENvc3RpbiwKCk9uIDE3LjA2LjE5IDIxOjE1LCBDb3N0aW4gTHVwdSB3cm90ZToKPiBPbiA2
LzE3LzE5IDU6MTUgUE0sIFNpbW9uIEt1ZW56ZXIgd3JvdGU6Cj4+IEhleSBDb3N0aW4sCj4+Cj4+
IHRoYW5rcyBhIGxvdCBmb3IgdGhlIHBhdGNoLiBJIGhhdmUgYSBjb3VwbGUgb2YgcXVlc3Rpb25z
IHdoaWNoIEkgbmVlZAo+PiBmb3IgbXkgdW5kZXJzdGFuZGluZy4gSSBwdXQgdGhvc2UgaW5saW5l
Li4uCj4+Cj4+IFRoYW5rcywKPj4KPj4gU2ltb24KPj4KPj4gT24gMTEuMDYuMTkgMjE6MzMsIENv
c3RpbiBMdXB1IHdyb3RlOgo+Pj4gQ29tbWl0IDAxN2ZmZmQ1IGludHJvZHVjZWQgc3VwcG9ydCBm
b3Igc2V0dGluZyB0aGUgY3VycmVudCB0aHJlYWQKPj4+IHBvaW50ZXIgb24gdG9wCj4+PiBvZiBp
bnRlcnJ1cHQgc3RhY2tzIGluIG9yZGVyIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHRocmVhZCBp
bgo+Pj4gaW50ZXJydXB0IGNvbnRleHQKPj4+IGFzIHdlbGwuIFVuZm9ydHVuYXRlbHksIHRoZSB3
cm9uZyBzdGFjayB3YXMgcGlja2VkIGZvciBLVk0gcGxhdGZvcm0uCj4+PiBUaGlzIHBhdGNoCj4+
PiBmaXhlcyB0aGF0IGFuZCBzZXRzIHRoZSB0aHJlYWQgb24gY3B1X2ludHJfc3RhY2sgaW5zdGVh
ZC4KPj4+Cj4+PiBjcHVfaW50cl9zdGFjayB3YXMgcmVzaXplZCB0byBTVEFDS19TSVpFIGJlY2F1
c2UgdGhpcyBpcyBhIG1hbmRhdG9yeQo+Pj4gY29uZGl0aW9uCj4+PiB3aGVuIHNhdmluZyB0aHJl
YWRzIG9uIHRvcC4gSG93ZXZlciwgZ2l2ZW4gdGhhdCBpdCBhbHNvIG5lZWRzIGEKPj4+IFNUQUNL
X1NJWkUKPj4+IGFsaWdubWVudCwgYSBuZXcgc2VjdGlvbiB3YXMgY3JlYXRlZCBmb3IgaXQsIC5p
bnRyc3RhY2ssIGluIG9yZGVyIHRvCj4+PiBhdm9pZAo+Pj4gYnJlYWtpbmcgdGhlIGVudGlyZSBi
aW5hcnkgaW1hZ2UgbGF5b3V0LiBXaXRob3V0IHRoaXMgbmV3IHNlY3Rpb24sIHRoZQo+Pj4gZW50
aXJlCj4+PiAudGV4dCBzZWN0aW9uIHdvdWxkIGhhdmUgYSBTVEFDS19TSVpFIGFsaWdubWVudCAo
aS5lLiA2NEtCKSBhbmQgdGhpcwo+Pj4gd291bGQgaW1wbHkKPj4+IHRoYXQgdGhlIG11bHRpYm9v
dCBoZWFkZXIsIHdoaWNoIGlzIGluY2x1ZGVkIGluIC50ZXh0IHNlY3Rpb24sIHdvdWxkCj4+PiBh
bHNvIGJlCj4+PiBtb3ZlZCBhdCBhbiBhZGRyZXNzIGhpZ2hlciB0aGFuIFNUQUNLX1NJWkUsIGV2
ZW4gdGhvdWdoIGl0IG11c3Qgc3RheQo+Pj4gaW4gdGhlCj4+PiBmaXJzdCA4S0Igb2YgdGhlIGJp
bmFyeS4KPj4KPj4gTWF5YmUsIHRoaXMgaXMgYSBzdHVwaWQgcXVlc3Rpb246IFdoYXQgaWYgd2Ug
dGFrZSB0aGUgcHJlLWFsbG9jYXRlZAo+PiBib290c3RhY2sgYWxzbyBmb3IgdGhlIGludGVycnVw
dHM/IEFzIHNvb24gYXMgd2UgZW5hYmxlIHNjaGVkdWxpbmcgdGhlCj4+IGJvb3RzdGFjayBpcyBu
b3QgdXNlZCBhbnltb3JlIGJ5IGFueSB0aHJlYWQuIEV4Y2VwdCB0aGUgY2FzZSB3aGVyZSB3ZSBk
bwo+PiBub3QgaGF2ZSBzY2hlZHVsaW5nLCB0aGUgYm9vdHN0YWNrIHdpbGwgYmUgc3RpbGwgdXNl
ZCBkdXJpbmcgbGlmZSB0aW1lLAo+PiB3b3VsZCB0aGlzIGJlIGFuIGlzc3VlPwo+Pgo+IAo+IElu
IHRoZW9yeSB0aGlzIHNob3VsZCB3b3JrLiBCdXQgd2hhdCBhYm91dCB0aGUgY2FzZSB3aGVuIHdl
IGRvbid0IGhhdmUKPiBzY2hlZHVsaW5nPyBXb3VsZG4ndCB3ZSBzdGlsbCBuZWVkIGEgZGlmZmVy
ZW50IHN0YWNrPwo+IAoKSHVtLi4uIHRoaXMgc2hvdWxkIGJlIGZpbmUsIEkgZXhwZWN0IHRoZSBD
UFUgY2FuIGhhbmRsZSB0aGlzLiBCdXQgd2UgCmhhdmUgYWN0dWFsbHkgYWxzbyBzdGFja3MgZm9y
IHRoZSBOTUkgYW5kIHRoZSB0cmFwIGhhbmRsZXIuIFNvIG1heWJlIAp0aGlzIHN1Z2dlc3Rpb24g
aXMgbm90IGdlbmVyaWMgZW5vdWdoLgoKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVw
dSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+Pj4gLS0tCj4+PiAgwqAgcGxhdC9rdm0vTWFrZWZp
bGUudWvCoMKgwqDCoMKgIHzCoCAxICsKPj4+ICDCoCBwbGF0L2t2bS9tZW1vcnkuY8KgwqDCoMKg
wqDCoMKgwqAgfMKgIDYgLS0tLS0tCj4+PiAgwqAgcGxhdC9rdm0veDg2L2xpbms2NC5sZHMuUyB8
IDEwICsrKysrKysrKysKPj4+ICDCoCBwbGF0L2t2bS94ODYvbWVtb3J5LmPCoMKgwqDCoCB8IDQ0
Cj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gIMKg
IHBsYXQva3ZtL3g4Ni90cmFwcy5jwqDCoMKgwqDCoCB8wqAgNSArKysrLQo+Pj4gIMKgIDUgZmls
ZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPj4+ICDCoCBjcmVh
dGUgbW9kZSAxMDA2NDQgcGxhdC9rdm0veDg2L21lbW9yeS5jCj4+Pgo+Pj4gZGlmZiAtLWdpdCBh
L3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKPj4+IGluZGV4IDcx
YzRjNDE5Li44ZWIxNjJkNCAxMDA2NDQKPj4+IC0tLSBhL3BsYXQva3ZtL01ha2VmaWxlLnVrCj4+
PiArKysgYi9wbGF0L2t2bS9NYWtlZmlsZS51awo+Pj4gQEAgLTQ2LDYgKzQ2LDcgQEAgTElCS1ZN
UExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfWDg2XzY0KSArPQo+Pj4gJChMSUJLVk1QTEFUX0JBU0Up
L3g4Ni9sY3B1LmMKPj4+ICDCoCBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9YODZfNjQp
ICs9Cj4+PiAkKExJQktWTVBMQVRfQkFTRSkveDg2L2ludGN0cmwuYwo+Pj4gIMKgIExJQktWTVBM
QVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0KPj4+ICQoTElCS1ZNUExBVF9CQVNFKS94
ODYvdHNjY2xvY2suYwo+Pj4gIMKgIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82
NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL3g4Ni90aW1lLmMKPj4+ICtMSUJLVk1QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9YODZfNjQpICs9Cj4+PiAkKExJQktWTVBMQVRfQkFTRSkveDg2L21lbW9y
eS5jfHg4Ngo+Pj4gIMKgIGlmZXEgKCQoZmluZHN0cmluZyB5LCQoQ09ORklHX0tWTV9LRVJORUxf
VkdBX0NPTlNPTEUpCj4+PiAkKENPTkZJR19LVk1fREVCVUdfVkdBX0NPTlNPTEUpKSx5KQo+Pj4g
IMKgIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX1g4Nl82NCkgKz0KPj4+ICQoTElCS1ZN
UExBVF9CQVNFKS94ODYvdmdhX2NvbnNvbGUuYwo+Pj4gIMKgIGVuZGlmCj4+PiBkaWZmIC0tZ2l0
IGEvcGxhdC9rdm0vbWVtb3J5LmMgYi9wbGF0L2t2bS9tZW1vcnkuYwo+Pj4gaW5kZXggZTk2YmFk
MmMuLjdmMmZiNDZhIDEwMDY0NAo+Pj4gLS0tIGEvcGxhdC9rdm0vbWVtb3J5LmMKPj4+ICsrKyBi
L3BsYXQva3ZtL21lbW9yeS5jCj4+PiBAQCAtMTc4LDkgKzE3OCwzIEBAIGludCBfdWtwbGF0X21l
bV9tYXBwaW5nc19pbml0KHZvaWQpCj4+PiAgwqAgewo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIDA7
Cj4+PiAgwqAgfQo+Pj4gLQo+Pj4gLXZvaWQgdWtwbGF0X3N0YWNrX3NldF9jdXJyZW50X3RocmVh
ZCh2b2lkICp0aHJlYWRfYWRkcikKPj4+IC17Cj4+PiAtwqDCoMKgICooKHVuc2lnbmVkIGxvbmcg
KikgX2xpYmt2bXBsYXRfY2ZnLmJzdGFjay5lbmQpID0KPj4+IC3CoMKgwqDCoMKgwqDCoCAodW5z
aWduZWQgbG9uZykgdGhyZWFkX2FkZHI7Cj4+PiAtfQo+Pj4gZGlmZiAtLWdpdCBhL3BsYXQva3Zt
L3g4Ni9saW5rNjQubGRzLlMgYi9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCj4+PiBpbmRleCAz
NjJiYTNlNi4uNjEwM2ZjMmQgMTAwNjQ0Cj4+PiAtLS0gYS9wbGF0L2t2bS94ODYvbGluazY0Lmxk
cy5TCj4+PiArKysgYi9wbGF0L2t2bS94ODYvbGluazY0Lmxkcy5TCj4+PiBAQCAtOTksNiArOTks
MTYgQEAgU0VDVElPTlMKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgLiA9IEFMSUdOKF9fUEFHRV9T
SVpFKTsKPj4+ICDCoMKgwqDCoMKgIH0KPj4+ICDCoCArwqDCoMKgIC8qIFdlIGtlZXAgdGhlIGlu
dGVycnVwdCBzdGFjayBvbiBhIGRpZmZlcmVudCBzZWN0aW9uCj4+PiArwqDCoMKgwqAgKiBnaXZl
biB0aGF0IGl0IG1heSBoYXZlIGEgYmlnIGFsaWdubWVudCBhbmQgaXQgd291bGQKPj4+ICvCoMKg
wqDCoCAqIGNoYW5nZSB0aGUgZW50aXJlIGJpbmFyeSBsYXlvdXQKPj4+ICvCoMKgwqDCoCAqLwo+
Pj4gK8KgwqDCoCAuaW50cnN0YWNrIDoKPj4+ICvCoMKgwqAgewo+Pj4gK8KgwqDCoMKgwqDCoMKg
ICooLmludHJzdGFjaykKPj4+ICvCoMKgwqDCoMKgwqDCoCAuID0gQUxJR04oX19QQUdFX1NJWkUp
Owo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+Cj4+IFdvdWxkIGV2ZXJ5IHBsYXRmb3JtIG5lZWQgdG8g
ZG8gdGhpcz8KPj4KPiAKPiBPbiBYZW4sIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBhbGlnbmVk
IHRvIFNUQUNLX1NJWkUuIE9uIGxpbnV4dSwgdGhlCj4gc2lnbmFscyB1c2UgdGhlIGN1cnJlbnQg
cHJvY2VzcyBzdGFjaywgd2Ugc2hvdWxkIGNoYW5nZSBpdCB0byB1c2luZyBhbgo+IGFsdGVybmF0
aXZlIHN0YWNrIGlmIHdlIHdhbnQgdG8gdXNlIHRoZSBzYW1lIGFwcHJvYWNoLgo+IAo+Pj4gIMKg
wqDCoMKgwqAgX2VuZCA9IC47Cj4+PiAgwqAgwqDCoMKgwqDCoCAuY29tbWVudMKgwqDCoMKgwqDC
oCAwIDogeyAqKC5jb21tZW50KSB9Cj4+PiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0veDg2L21lbW9y
eS5jIGIvcGxhdC9rdm0veDg2L21lbW9yeS5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4g
aW5kZXggMDAwMDAwMDAuLmI4YzdjN2U3Cj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9wbGF0
L2t2bS94ODYvbWVtb3J5LmMKPj4+IEBAIC0wLDAgKzEsNDQgQEAKPj4+ICsvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4+PiArLyoKPj4+ICsgKiBBdXRob3JzOiBD
b3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3MucHViLnJvPgo+Pj4gKyAqCj4+PiArICogQ29weXJp
Z2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsCj4+
PiByaWdodHMgcmVzZXJ2ZWQuCj4+PiArICoKPj4+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPj4+ICsgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKPj4+ICsgKiBhcmUgbWV0Ogo+Pj4gKyAqCj4+PiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4+ICsgKsKg
wqDCoCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCj4+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPj4+ICsgKsKgwqDCoCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KPj4+IHRo
ZQo+Pj4gKyAqwqDCoMKgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQo+Pj4gZGlzdHJpYnV0aW9uLgo+Pj4gKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPj4+ICsgKsKg
wqDCoCBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKPj4+IGZyb20KPj4+ICsgKsKgwqDCoCB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+Pj4gKyAqCj4+PiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5ECj4+PiBDT05U
UklCVVRPUlMgIkFTIElTIgo+Pj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECj4+PiBUTywgVEhFCj4+PiArICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCj4+PiBQVVJQT1NFCj4+PiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCj4+PiBDT05UUklCVVRPUlMgQkUKPj4+ICsgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCj4+PiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPj4+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKPj4+IEJVU0lORVNT
Cj4+PiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksCj4+PiBXSEVUSEVSIElOCj4+PiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCj4+PiBPVEhFUldJU0UpCj4+
PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYKPj4+IEFEVklTRUQgT0YgVEhFCj4+PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4+PiArICoKPj4+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBP
UiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDx1ay9w
bGF0L21lbW9yeS5oPgo+Pj4gKwo+Pj4gKwo+Pj4gK2V4dGVybiBjaGFyIGNwdV9pbnRyX3N0YWNr
W107Cj4+PiArCj4+PiArdm9pZCB1a3BsYXRfc3RhY2tfc2V0X2N1cnJlbnRfdGhyZWFkKHZvaWQg
KnRocmVhZF9hZGRyKQo+Pj4gK3sKPj4+ICvCoMKgwqAgKigodW5zaWduZWQgbG9uZyAqKSBjcHVf
aW50cl9zdGFjaykgPQo+Pj4gK8KgwqDCoMKgwqDCoMKgICh1bnNpZ25lZCBsb25nKSB0aHJlYWRf
YWRkcjsKPj4KPj4gSW4gZ2VuZXJhbCwgaW5zdGVhZCBvZiB1c2luZyB0aGUgc3RhY2sgdG9wLCB3
ZSBjb3VsZCBzYXZlIHRoZSBjdXJyZW50Cj4+IHRocmVhZCBhbHdheXMgb24gdGhlIHN0YWNrIGJv
dHRvbS4gVGhvc2UgYnl0ZXMgd291bGQgYmUgcmVzZXJ2ZWQgYW5kCj4+IHdvdWxkIG9ubHkgYmUg
cG9wcGVkIG9uIGEgbWlzYmVoYXZpbmcgcHJvZ3JhbS4gV291bGQgdGhhdCBhdm9pZCB0aGUKPj4g
aXNzdWUgdGhhdCB5b3UgYXJlIGZhY2luZz8gTWF5YmUgd2UgY291bGQgZ2V0IGF3YXkgZnJvbSB0
aGUgcHJvYmxlbSB0aGF0Cj4+IHRoZSBzdGFja3MgaGF2ZSB0byBoYXZlIGEgZml4ZWQgc2l6ZSBm
b3IganVzdCBnZXR0aW5nIHRoZSBjdXJyZW50IHZhbHVlLi4uCj4+Cj4gCj4gSG93IGRvIHlvdSBk
ZXRlcm1pbmUgdGhlIHN0YWNrIGJvdHRvbSB3aGVuIHlvdSBhcmUgdXNpbmcgaXQsIGUuZy4gd2hl
bgo+IHJldHJpZXZpbmcgdGhlIGN1cnJlbnQgdGhyZWFkPyBJIHRoaW5rIHlvdSB3b3VsZCB1c2Ug
dGhlIHNhbWUgd2F5IGFzIGZvcgo+IGdldHRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGZyb20gdGhl
IHN0YWNrIHRvcC4gU28geW91IHN0aWxsIG5lZWQgdGhpcwo+IGFsaWdubWVudCBjb25zdHJhaW50
Lgo+IAoKWW91IGFyZSByaWdodC4KCj4+PiArfQo+Pj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL3g4
Ni90cmFwcy5jIGIvcGxhdC9rdm0veDg2L3RyYXBzLmMKPj4+IGluZGV4IDI3ZWY2ZDkzLi5mZTFk
ZDVhNCAxMDA2NDQKPj4+IC0tLSBhL3BsYXQva3ZtL3g4Ni90cmFwcy5jCj4+PiArKysgYi9wbGF0
L2t2bS94ODYvdHJhcHMuYwo+Pj4gQEAgLTI1LDcgKzI1LDkgQEAKPj4+ICDCoMKgICovCj4+PiAg
wqAgwqAgI2luY2x1ZGUgPHN0cmluZy5oPgo+Pj4gKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+
Cj4+PiAgwqAgI2luY2x1ZGUgPHVrL2FyY2gvbGNwdS5oPgo+Pj4gKyNpbmNsdWRlIDx1ay9wbGF0
L2NvbmZpZy5oPgo+Pj4gIMKgICNpbmNsdWRlIDx4ODYvZGVzYy5oPgo+Pj4gIMKgICNpbmNsdWRl
IDxrdm0teDg2L3RyYXBzLmg+Cj4+PiAgwqAgQEAgLTU5LDcgKzYxLDggQEAgc3RhdGljIHZvaWQg
Z2R0X2luaXQodm9pZCkKPj4+ICDCoCDCoCBzdGF0aWMgc3RydWN0IHRzczY0IGNwdV90c3M7Cj4+
PiAgwqAgLXN0YXRpYyBjaGFyIGNwdV9pbnRyX3N0YWNrWzQwOTZdOyAvKiBJU1QxICovCj4+PiAr
IF9fc2VjdGlvbigiLmludHJzdGFjayIpwqAgX19hbGlnbihTVEFDS19TSVpFKQo+Pj4gK2NoYXIg
Y3B1X2ludHJfc3RhY2tbU1RBQ0tfU0laRV07wqAgLyogSVNUMSAqLwo+Pgo+PiBZb3UgcmVtb3Zl
ZCB0aGUgc3RhY2sgYWN0dWFsbHkgZnJvbSB0aGUgLmJzcyBzZWN0aW9uIChpbnN0ZWFkIG9mIHRl
eHQpCj4+IGFuZCBtb3ZlZCBpdCB0byBhbiBvd24gc2VjdGlvbi4gV2hhdCBpZiB5b3Uga2VlcCBp
dCBvbiB0aGUgLmJzcyBidXQgd2l0aAo+PiB0aGUgYmlnZ2VyIHNpemU/IEkgZXhwZWN0IHRoaXMg
c2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gZm9yIHRoZSB0ZXh0Cj4+IHNlY3Rpb24uCj4+Cj4gCj4g
SW4gdGhlIGNvbW1pdCBtZXNzYWdlIGl0IHNob3VsZCBoYXZlIGJlZW4gJy50ZXh0IHNlZ21lbnQn
LCBvciB0aGUgZmlyc3QKPiBzZWdtZW50IG9mIHRoZSBiaW5hcnksIHdoaWNoIGNvbnRhaW5zIGJv
dGggLnRleHQgYW5kIC5ic3Mgc2VjdGlvbnMuIFNvLAo+IHllYWgsIGl0J3MgdGhlIHNlZ21lbnQg
dGhhdCBnZXRzIHJlYWxpZ25lZC4gSWYgd2UgZG9uJ3QgbW92ZSBpdCB0bwo+IGFub3RoZXIgc2Vj
dGlvbiwgaXQgd291bGQgcmVtYWluIGluIC5ic3MsIHdoaWNoIGlzIHdoYXQgdGhpcyBmaXggdHJp
ZXMKPiB0byBhdm9pZC4gSWYgd2UgbW92ZSBpdCB0byBhIG5ldyBzZWN0aW9uLCBpdCB3aWxsIGFs
c28gYmUgbW92ZWQgdG8gYQo+IGRpZmZlcmVudCBzZWdtZW50IGFuZCB0aGF0J3MgaG93IHRoZSBz
ZWdtZW50IGNvbnRhaW5pbmcgLnRleHQgd2lsbCBrZWVwCj4gaXRzIG9yaWdpbmFsIGFsaWdubWVu
dC4KPiAKCkkgYW0gc3RpbGwgbm90IGdldHRpbmcgZXhhY3RseSB3aHkgdGhlIC5ic3Mgc2VjdGlv
biBoYXMgaW5mbHVlbmNlIG9uIHRoZSAKcG9zaXRpb25pbmcgb24gdGhlIC50ZXh0IHNlY3Rpb24u
IFRoZSBtdWx0aWJvb3QgaGVhZGVyIGlzIGp1c3Qgb25lIApleGNlcHRpb25hbCBkYXRhIHNlY3Rp
b24gdGhhdCB3ZSBwdXQgaW50byB0aGUgYmVnaW5uaW5nIG9mIHRoZSAudGV4dCAKc2VjdGlvbi4g
VGhlIHJlc3Qgc2hvdWxkIHN0aWxsIGdvIHRvIGl0cyByZXNwZWN0aXZlIHNlY3Rpb24uIFdoYXQg
aXMgdGhlIApiYWQgdGhpbmcgYWJvdXQgdXNpbmcgdGhlIC5ic3Mgc2VjdGlvbj8KCkFueXdheXMs
IHNpbmNlIHdlIG5lZWQgYSBxdWljayBmaXgsIEkgd291bGQgc3VnZ2VzdCBzb21ldGhpbmcgZWxz
ZS4gVGhlIApwcm9ibGVtIEkgaGF2ZSB3aXRoIHRoZSBpcnFfc3RhY2sgc2VjdGlvbiBpcyB0aGF0
IGl0IGNvbXBsaWNhdGVzIHRoZSAKbGlua2VkIGxheW91dC4gQWRkaXRpb25hbGx5IGZvciBiZWlu
ZyBjb21wbGV0ZSwgdGhlIG5taSBhbmQgdHJhcCBzdGFjayAKd291bGQgYWxzbyBuZWVkIHRvIGdv
IGluIHRoZXJlLiBUaGUgb3RoZXIgcHJvYmxlbSB3ZSBoYXZlIGlzIHRoYXQgdGhlIApzdGFjayBz
aXplcyBhbmQvb3IgdGhlaXIgYWxpZ25tZW50IG5lZWQgdG8gYmUgZnVsZmlsbGVkLgogIC0gSWYg
d2UgcHV0IHRoZSB0aHJlYWQgY29udGV4dCBwb2ludGVyIG9uIHRvcCBvZiB0aGUgc3RhY2sgKGxv
dwogICAgYWRkcmVzcyksIGFsbCBzdGFja3MgbmVlZCB0byBiZSBleGFjdGx5IHNpemVkIGFuZCBh
bGlnbmVkIHRvCiAgICBTVEFDS19TSVpFLgogIC0gSWYgd2UgcHV0IHRoaXMgcG9pbnRlciB0byB0
aGUgc3RhY2sgYm90dG9tIChoaWdoIGFkZHJlc3MpLCB3ZSBuZWVkCiAgICB0byBtYWtlIHN1cmUg
dGhhdCB0aGUgaGlnaCBhZGRyZXNzIGlzIGFsaWduZWQgdG8gU1RBQ0tfU0laRS4KICAgIFNUQUNL
X1NJWkUgYmVjb21lcyBhdXRvbWF0aWNhbGx5IHRoZSBtYXhpbXVtIHN0YWNrIHNpemUgYnV0IHdl
IGNvdWxkCiAgICBoYXZlIHN0YWNrcyB0aGF0IGFyZSBzbWFsbGVyIHNpemVkIHRoYW4gdGhpcy4g
SG93ZXZlciwgSSBhbSBub3QKICAgIHN1cmUgaG93IHdlIGNvdWxkIHRlYWNoIHRoZSBhbGlnbm1l
bnQgdG8gdGhlIGxpbmtlci4KCkFsdGhvdWdoIEkgZG8gbm90IGxpa2UgdGhlIGFsdGVybmF0aXZl
IGJ1dCBpdCBtYXkgc29sdmUgb3VyIGJ1ZyByaWdodCAKbm93OiBXaGF0IGlmIHdlIHN0b3JlIHRo
ZSBjdXJyZW50IHRocmVhZCBwb2ludGVyIHRvIGEgcGxhdGZvcm0taW50ZXJuYWwgCnZhcmlhYmxl
IGluc3RlYWQgb2YgdGhlIHN0YWNrLiBPbiBldmVyeSBjb250ZXh0IHN3aXRjaCwgd2UgdXBkYXRl
IHRoaXMgCnZhcmlhYmxlIGFuZCBnZXRfY3VycmVudCgpIGlzIHJldHVybmluZyBpdHMgdmFsdWUu
IEluIHByaW5jaXBsZSwgd2l0aCAKU01QIHlvdSB3b3VsZCBuZWVkIHRvIGludHJvZHVjZSB0aGlz
IHZhcmlhYmxlIENQVS13aXNlIGJ1dCB3ZSBkbyBub3QgCmhhdmUgdGhpcyBub3cuIFRoaXMgd2F5
IHdlIGNvdWxkIGtlZXAgdGhlIHN0YWNrIHNpemVzIHRoYXQgd2UgY3VycmVudGx5IApoYXZlLgpJ
IHRoaW5rIHdlIGhhdmUgdG8gcmV2aXNpdCB0aGlzIGxvdy1sZXZlbCBwbGF0Zm9ybSBBUEkgYXQg
c29tZSBwb2ludCAKY29uc2lkZXJpbmcgYWxsIHRoZSBsZXNzb25zIHdlIGhhdmUgbGVhcm5lZCBh
bmQgdGhhdCBsb25nZXItdGVybSB3ZSAKc2hvdWxkIGFsc28gcHJvdGVjdCB0aGUgZWFjaCBzdGFj
a3MgZnJvbSBvdmVyLSBhbmQgdW5kZXJmbG93cyAoZm9yIApleGFtcGxlIHdpdGggYW4gdW5tYXBw
ZWQgcGFnZSBiZWZvcmUgYW5kIGFmdGVyIGVhY2ggc3RhY2spLiBCdXQgdGhpcyAKaW52b2x2ZXMg
YSBiaWdnZXIgcmVzdHJ1Y3R1cmluZyBhbnl3YXlzIGFuZCB0aGlzIHdlIHNob3VsZCBub3QgZG8g
d2l0aCAKdGhpcyBwYXRjaC4KCldoYXQgZG8geW91IHRoaW5rPwoKPj4+ICDCoCBzdGF0aWMgY2hh
ciBjcHVfdHJhcF9zdGFja1s0MDk2XTsgLyogSVNUMiAqLwo+Pj4gIMKgIHN0YXRpYyBjaGFyIGNw
dV9ubWlfc3RhY2tbNDA5Nl07wqAgLyogSVNUMyAqLwo+Pj4gICAKPj4KPj4gX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdAo+PiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPj4gaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKVGhhbmtz
LAoKU2ltb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUdb-0007o7-8Q; Wed, 19 Jun 2019 07:04:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdZ-0007nl-Vq
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:06 +0000
X-Inumbo-ID: 6c01236f-9260-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6c01236f-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:04 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id g135so486104wme.4
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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=I9eC2/BYf8k/XtTDLtUSkAfgYqNT9lxh3vD28jts5p0=;
 b=QV9XFTJDi6v0GyqQJ1yyx9Z5Kh3s2Dbrqs+kDCKVdwSTi9mPGuLPG1HdxvCeq6brS2
 kysISKBisTlpZ4SvbknS0q2W/5wUGBrrAO7oc5GPIulf3+0zxUr1m4cAliuQvpdw70rF
 9F3ySfILh2WEqBfoKtMH4sORHTV490f+HNSh3rxZ7MuxMZlkRsRZhS2jjJBN6+BCFHYA
 hG0IEpiIorDezB+rco/4KlPJhmd2lww8xFmawFtgxcfnEkYpS3EWY+rlIOUWR31Qzy2D
 rbbfGu0WPw3zi/XswYHQ//WIrg4j1ponDU7AG4an74/vtbeJLEIHBrzX0nDFnbZOooG1
 +Smw==
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=I9eC2/BYf8k/XtTDLtUSkAfgYqNT9lxh3vD28jts5p0=;
 b=LywF9pOMsDzEoEQYjfrOp92S5RxtqID8jkz4tIAd0WadcUQEcJS1a2U27RXcru1vcW
 r6IRIULMhlcXoMPHASwzcc+QCVt6Sc5q8SGuXjN8Zv8oJnniKn1LB6cv1sUnU5jNQxo3
 lAoDQHfw/8hcAI1L9I1UsouNjezok9ZMqOA8iisgKoY6fDab2VBc9q1vcCOJG29Sx5NM
 1MjDNIU3Bk8qQ+ClwkZzYUHY8VwZp61n8UsKWEdrwk3fZ4Ba8Sl2qG2KxB4ncGeBkFNB
 VLnjbz+x1pvUTCHt1g7b0ogv2F5fNTPJVgfwhEr7C6VgRSUQTx4W9WYH7O1zT48jY5mr
 GmNw==
X-Gm-Message-State: APjAAAXDETj+zzZusyGuwAajMy2ynWygD+qYbA21J+2ETindyMG7j/dY
 QqivzjtZLCIaBM5uJFLrqtynSbLIX3g=
X-Google-Smtp-Source: APXvYqxzAa4ewlQ3N//mzwLVTAlvVCf6n9t4rcaYuXtCuHSXBgVEak/EieIHFIyJMhrEcIJgnEaO2A==
X-Received: by 2002:a1c:b155:: with SMTP id a82mr6397511wmf.35.1560927842953; 
 Wed, 19 Jun 2019 00:04:02 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.01
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:02 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:09 +0300
Message-Id: <20190619070315.9765-3-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 2/8] lib/uk9p: Add 9P transport
 registration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSA5UCB0cmFuc3BvcnQgcmVnaXN0cmF0aW9uIGFuZCBs
b29rdXAgQVBJLgoKU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNv
bT4KLS0tCiBsaWIvdWs5cC85cGRldl90cmFucy5jICAgICAgICAgICAgfCAgODIgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwogbGliL3VrOXAvTWFrZWZpbGUudWsgICAgICAgICAgICAg
IHwgICAyICsKIGxpYi91azlwL2V4cG9ydHN5bXMudWsgICAgICAgICAgICB8ICAgMyArKwogbGli
L3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oIHwgMTAxICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCspCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBkZXZfdHJhbnMuYwogY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi91azlwL2V4cG9ydHN5bXMudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9p
bmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKCmRpZmYgLS1naXQgYS9saWIvdWs5cC85cGRldl90cmFu
cy5jIGIvbGliL3VrOXAvOXBkZXZfdHJhbnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjYwYjhhMjMwY2JmMwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91azlwLzlw
ZGV2X3RyYW5zLmMKQEAgLTAsMCArMSw4MiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBn
bWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhu
aWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURF
UiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNp
bmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVrL2NvbmZp
Zy5oPgorI2luY2x1ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KKyNpbmNs
dWRlIDx1ay85cGRldl90cmFucy5oPgorCitzdGF0aWMgVUtfTElTVF9IRUFEKHVrXzlwZGV2X3Ry
YW5zX2xpc3QpOworCitpbnQgdWtfOXBkZXZfdHJhbnNfcmVnaXN0ZXIoc3RydWN0IHVrXzlwZGV2
X3RyYW5zICp0cmFucykKK3sKKwlVS19BU1NFUlQodHJhbnMpOworCVVLX0FTU0VSVCh0cmFucy0+
bmFtZSk7CisJVUtfQVNTRVJUKHRyYW5zLT5hKTsKKworCXVrX2xpc3RfYWRkX3RhaWwoJnRyYW5z
LT5fbGlzdCwgJnVrXzlwZGV2X3RyYW5zX2xpc3QpOworCXVrX3ByX2luZm8oIlJlZ2lzdGVyZWQg
dHJhbnNwb3J0ICVzXG4iLCB0cmFucy0+bmFtZSk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHVr
XzlwZGV2X3RyYW5zX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHVrXzlwZGV2X3Ry
YW5zICoqdHJhbnMpCit7CisJc3RydWN0IHVrXzlwZGV2X3RyYW5zICp0OworCisJdWtfbGlzdF9m
b3JfZWFjaF9lbnRyeSh0LCAmdWtfOXBkZXZfdHJhbnNfbGlzdCwgX2xpc3QpIHsKKwkJaWYgKCFz
dHJjbXAodC0+bmFtZSwgbmFtZSkpIHsKKwkJCSp0cmFucyA9IHQ7CisJCQlyZXR1cm4gMDsKKwkJ
fQorCX0KKworCXJldHVybiAtRU5PREVWOworfQorCitpbnQgdWtfOXBkZXZfdHJhbnNfZGVmYXVs
dChzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKip0cmFucykKK3sKKwlzdHJ1Y3QgdWtfOXBkZXZfdHJh
bnMgKnQ7CisKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHQsICZ1a185cGRldl90cmFuc19saXN0
LCBfbGlzdCkgeworCQlpZiAodC0+aXNfZGVmYXVsdCkgeworCQkJKnRyYW5zID0gdDsKKwkJCXJl
dHVybiAwOworCQl9CisJfQorCisJcmV0dXJuIC1FTk9ERVY7Cit9CmRpZmYgLS1naXQgYS9saWIv
dWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCmluZGV4IGZhNzU0NDQwNTk4
Yy4uYjEwNzFhMGU3ZDNjIDEwMDY0NAotLS0gYS9saWIvdWs5cC9NYWtlZmlsZS51aworKysgYi9s
aWIvdWs5cC9NYWtlZmlsZS51awpAQCAtMiwzICsyLDUgQEAgJChldmFsICQoY2FsbCBhZGRsaWJf
cyxsaWJ1azlwLCQoQ09ORklHX0xJQlVLOVApKSkKIAogQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVL
OVApCQkrPSAtSSQoTElCVUs5UF9CQVNFKS9pbmNsdWRlCiBDWFhJTkNMVURFUy0kKENPTkZJR19M
SUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQorCitMSUJVSzlQX1NSQ1MteSAr
PSAkKExJQlVLOVBfQkFTRSkvOXBkZXZfdHJhbnMuYwpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvZXhw
b3J0c3ltcy51ayBiL2xpYi91azlwL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi40NWY0ODdkYTJmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIv
dWs5cC9leHBvcnRzeW1zLnVrCkBAIC0wLDAgKzEsMyBAQAordWtfOXBkZXZfdHJhbnNfcmVnaXN0
ZXIKK3VrXzlwZGV2X3RyYW5zX2J5X25hbWUKK3VrXzlwZGV2X3RyYW5zX2RlZmF1bHQKZGlmZiAt
LWdpdCBhL2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCBiL2xpYi91azlwL2luY2x1
ZGUvdWsvOXBkZXZfdHJhbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmEwYzZkMjUyMzYxYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsv
OXBkZXZfdHJhbnMuaApAQCAtMCwwICsxLDEwMSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0
YkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0
ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisK
KyNpZm5kZWYgX19VS185UERFVl9UUkFOU19fCisjZGVmaW5lIF9fVUtfOVBERVZfVFJBTlNfXwor
CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorCisjaWZkZWYg
X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBBIHN0cnVjdHVyZSB1c2Vk
IHRvIGRlc2NyaWJlIGEgdHJhbnNwb3J0LiAqLworc3RydWN0IHVrXzlwZGV2X3RyYW5zIHsKKwkv
KgorCSAqIFRyYW5zcG9ydCBuYW1lIChlLmcuICJ2aXJ0aW8iLCAieGVuIikuIFRoaXMgZmllbGQg
aXMgcmVzZXJ2ZWQgZm9yCisJICogZnV0dXJlIHVzZSwgd2hlbiBtdWx0aXBsZSB0cmFuc3BvcnQg
b3B0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZQorCSAqIHNhbWUgcGxhdGZvcm0uCisJICovCisJ
Y29uc3QgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuYW1lOworCS8qIENhbiB0
aGUgdHJhbnNwb3J0IGJlIHVzZWQgYXMgYSBkZWZhdWx0IG9uZT8gKi8KKwlib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmYXVsdDsKKwkvKiBBbGxvY2F0b3IgdXNl
ZCBmb3IgZGV2aWNlcyB3aGljaCB1c2UgdGhpcyB0cmFuc3BvcnQgbGF5ZXIuICovCisJc3RydWN0
IHVrX2FsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICphOworCS8qIEBpbnRlcm5hbCBFbnRy
eSBpbiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgdHJhbnNwb3J0cy4gKi8KKwlzdHJ1Y3QgdWtfbGlz
dF9oZWFkICAgICAgICAgICAgICAgICAgICAgX2xpc3Q7Cit9OworCisvKioKKyAqIEFkZHMgYSB0
cmFuc3BvcnQgdG8gdGhlIGF2YWlsYWJsZSB0cmFuc3BvcnRzIGxpc3QgZm9yIFVuaWtyYWZ0IDlQ
IERldmljZXMuCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25jZSBwZXIgZHJpdmVyIChvbmNl
IGZvciB2aXJ0aW8sIG9uY2UgZm9yIHhlbiwgZXRjLikuCisgKgorICogQHBhcmFtIHRyYW5zCisg
KiAgIFBvaW50ZXIgdG8gdGhlIHRyYW5zcG9ydCBzdHJ1Y3R1cmUuCisgKiBAcmV0dXJuCisgKiAg
IC0gKDApOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBGYWlsZWQgdG8gcmVnaXN0ZXIgdGhl
IHRyYW5zcG9ydCBsYXllci4KKyAqLworaW50IHVrXzlwZGV2X3RyYW5zX3JlZ2lzdGVyKHN0cnVj
dCB1a185cGRldl90cmFucyAqdHJhbnMpOworCisvKioKKyAqIExvb2tzIHVwIGEgdHJhbnNwb3J0
IGxheWVyIGJ5IGl0cyBuYW1lLgorICoKKyAqIEBwYXJhbSBuYW1lCisgKiAgIFRoZSB0cmFuc3Bv
cnQgbGF5ZXIgbmFtZS4KKyAqIEBwYXJhbSB0cmFucworICogICBXaGVyZSB0byBzdG9yZSB0aGUg
cG9pbnRlciB0byB0aGUgZm91bmQgdHJhbnNwb3J0IHN0cnVjdHVyZS4KKyAqIEByZXR1cm4KKyAq
ICAgLSAoLUVOT0VOVCk6IE5vIHRyYW5zcG9ydCB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICogICAt
ICgwKTogU3VjY2Vzc2Z1bC4KKyAqLworaW50IHVrXzlwZGV2X3RyYW5zX2J5X25hbWUoY29uc3Qg
Y2hhciAqbmFtZSwgc3RydWN0IHVrXzlwZGV2X3RyYW5zICoqdHJhbnMpOworCisvKioKKyAqIEdl
dHMgdGhlIGRlZmF1bHQgdHJhbnNwb3J0IGxheWVyLgorICoKKyAqIEBwYXJhbSB0cmFucworICog
ICBXaGVyZSB0byBzdG9yZSB0aGUgcG9pbnRlciB0byB0aGUgZm91bmQgdHJhbnNwb3J0IHN0cnVj
dHVyZS4KKyAqIEByZXR1cm4KKyAqICAgLSAoLUVOT0VOVCk6IE5vIGRlZmF1bHQgdHJhbnNwb3J0
IGZvdW5kLgorICogICAtICgwKTogU3VjY2Vzc2Z1bC4KKyAqLworaW50IHVrXzlwZGV2X3RyYW5z
X2RlZmF1bHQoc3RydWN0IHVrXzlwZGV2X3RyYW5zICoqdHJhbnMpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19VS185UERFVl9UUkFOU19fICovCi0tIAoy
LjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUda-0007nw-6r; Wed, 19 Jun 2019 07:04:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdY-0007nX-ET
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:04 +0000
X-Inumbo-ID: 6b2ef584-9260-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6b2ef584-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:03 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id m3so2092257wrv.2
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04:03 -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=wJFsLnQJGzULRw2T9ee3DHbh4fNnKjlpjX0Ae+uzYzY=;
 b=Rke1SW1+ikt64x/l/6Fu3G52zwqZ9cy7ULPtpq93XvzR43Y08mYnea5gvcqwVIEoh+
 8L5vIo65Stwqw3N3qPmFQlnVkHp/j/l2V/dwzAik/zNiEmYbTBYujqMtGE0iXa2sYGcn
 dJg1mrxDWOwzhX6XyxgBtoaIaRD1ywOWQSblMzz6YrfKZeu2+Gox33DJ5YhS0SmbsQ+u
 OmQuU/bA+Od/8rmgJHTO+ebwp2bAebcKKusOB/1Rx/EEmVpJwCDzmRzB/yzXiP4jqZGK
 NVZ4F+D+uV+NIP7rSrfMox5MzshBeF8TVI8PILDQ4MUumVXFolKGOPSqkNqW3QwP/+/Y
 FujA==
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=wJFsLnQJGzULRw2T9ee3DHbh4fNnKjlpjX0Ae+uzYzY=;
 b=Me/AsELyu5xAhY/CnH9tR686U9MKoI3npKd1NRgm2G7DStwPAi+8QhDemhSYmLHI8V
 LyW1mFHRRY1OHKL1TjonICPxWmb/JaJwoZzpjBhg4QVGFL1A05u2cOm1katf0TeV+rwC
 CJFVFw/OJIXZpsXDoWpaFfEiJaKESi7Ae2ZUqauzYkQz5hRZFJ8Z+GZD8xayR4vIsw+f
 pPlJR2T7EOLc3/vFC6r9wa4xoTKjEHKT287UmXY+5OxcfAlZV2/9cQhOpTWvz0RhmjwD
 mxccur5j3mpAcxurFCLY0aJubMK616Gf0CH5fvALzxkliEMZ4X1UkI6UBo7G8LeC1YbW
 5QpA==
X-Gm-Message-State: APjAAAXNgVU3OE8wRS5MUKneTkVVYyY3ZdXRkYQyCKZdYjr12X4OVvtA
 rBT3LTUy6XKVDwYXmVNtMsop4c8GKaY=
X-Google-Smtp-Source: APXvYqwXf3elF39Diygdmj/6eASh6q/7d0BtS/1H6Zu8zFhrrV+yDrSiSL5JSuKA7F9fGeDK/Q29OQ==
X-Received: by 2002:adf:de90:: with SMTP id w16mr52596328wrl.217.1560927841901; 
 Wed, 19 Jun 2019 00:04:01 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.01
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:01 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:08 +0300
Message-Id: <20190619070315.9765-2-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 1/8] lib/uk9p: Add 9P 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, simon.kuenzer@neclab.eu, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

QWRkIGxpYnVrOXAgc2tlbGV0b24gYW5kIHJlZ2lzdGVyIGl0IHdpdGhpbiB0aGUgYnVpbGQgc3lz
dGVtLgoKU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KLS0t
CiBsaWIvQ29uZmlnLnVrICAgICAgICB8IDEgKwogbGliL01ha2VmaWxlLnVrICAgICAgfCAxICsK
IGxpYi91azlwL0NvbmZpZy51ayAgIHwgNiArKysrKysKIGxpYi91azlwL01ha2VmaWxlLnVrIHwg
NCArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdWs5cC9Db25maWcudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9NYWtl
ZmlsZS51awoKZGlmZiAtLWdpdCBhL2xpYi9Db25maWcudWsgYi9saWIvQ29uZmlnLnVrCmluZGV4
IDgyMmM2MjRmZDU0OC4uOWZlODM3MjAzY2RhIDEwMDY0NAotLS0gYS9saWIvQ29uZmlnLnVrCisr
KyBiL2xpYi9Db25maWcudWsKQEAgLTQ3LDMgKzQ3LDQgQEAgc291cmNlICJsaWIvdWtzd3JhbmQv
Q29uZmlnLnVrIgogc291cmNlICJsaWIvdWtidXMvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtz
Z2xpc3QvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtuZXRkZXYvQ29uZmlnLnVrIgorc291cmNl
ICJsaWIvdWs5cC9Db25maWcudWsiCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIv
TWFrZWZpbGUudWsKaW5kZXggZDA2ODM3ZjE0MzM4Li5iMWQ0NGQ0MGFiOTMgMTAwNjQ0Ci0tLSBh
L2xpYi9NYWtlZmlsZS51aworKysgYi9saWIvTWFrZWZpbGUudWsKQEAgLTI0LDMgKzI0LDQgQEAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQog
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQog
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xpc3Qp
KQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtuZXRk
ZXYpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWs5
cCkpCmRpZmYgLS1naXQgYS9saWIvdWs5cC9Db25maWcudWsgYi9saWIvdWs5cC9Db25maWcudWsK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMTU4Zjc1ZGVjMzcKLS0t
IC9kZXYvbnVsbAorKysgYi9saWIvdWs5cC9Db25maWcudWsKQEAgLTAsMCArMSw2IEBACittZW51
Y29uZmlnIExJQlVLOVAKKwlib29sICJ1azlwOiA5cCBjbGllbnQgYW5kIGZpbGVzeXN0ZW0iCisJ
ZGVmYXVsdCBuCisJc2VsZWN0IExJQlVLQUxMT0MKKwlzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZF
X0xJQkMKKwlzZWxlY3QgTElCVUtERUJVRwpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvTWFrZWZpbGUu
dWsgYi9saWIvdWs5cC9NYWtlZmlsZS51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmZhNzU0NDQwNTk4YwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91azlwL01ha2Vm
aWxlLnVrCkBAIC0wLDAgKzEsNCBAQAorJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJ1azlwLCQo
Q09ORklHX0xJQlVLOVApKSkKKworQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVLOVApCQkrPSAtSSQo
TElCVUs5UF9CQVNFKS9pbmNsdWRlCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJVSzlQKQkJKz0g
LUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUda-0007nr-4p; Wed, 19 Jun 2019 07:04:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdY-0007nW-EU
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:04 +0000
X-Inumbo-ID: 6aad9d47-9260-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6aad9d47-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:02 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id p11so2055566wre.7
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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;
 bh=iyotvEhAwyCURQAQ5UdUUo6PhT5a/u0JTtZP2a3drpc=;
 b=rWAwxyZefEQMt+bDOKi2vQlCIM01s3GZnouO0i+FAq3yXe7slf2Dfqck/HtFQpYkbM
 Vri7G2+x0K6OfkCuVrpZvtk4CStw4vW1dYe8djWWNremqF6cxUx1iDzRe5UufukpD/cO
 dMQ59CeSCIzHbejMuR/bGocoW4da5ty6RyhWJ6e7C7vCnHNn8d0COi34p1WVv9YgL7kW
 Sy194yPzfV9uOytZ5D1TgWveVYdnA5G2SE6vIsSu7kAE77Xl+94xU/DKDnicMtyXIVAf
 Sn4jmMDTIQQ4d1cdm999UWj4F9V3QD5QZJTNyzG7YqupKLCH33vT62uaSFy6+3TJsJGY
 uzGw==
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=iyotvEhAwyCURQAQ5UdUUo6PhT5a/u0JTtZP2a3drpc=;
 b=PaL8ZTF3SNEHexaKZj69Ce9Kz7EiAK3IPdxY68ofnXMckgDJRZ3gT0Daoo0rWwHmcR
 N69oc0AHqCHVEBykkTIcBArF/SXoDeVn3043WcX7+WH/UzXVyEjlzhgQwaLRiKYCEm8K
 uKTFqbykqxW59RyecnE+5LEdhBw7WUStPwj6u2ly0nVMzNJh6Z3lcbJngbn9cSzjciBa
 qyPRDAIgWVKxurI4ncW3g5CvUg5MiLCAcXcVlzv4ynAZIKL1K39A21HDq+5tdNoSJCX+
 OQTWSm1cTKwQ+st36gl2gBgiKUHdD6QQkTzzoWBNmJTlhwvNDkSE2SWK6TyMKCri6z1v
 qFJQ==
X-Gm-Message-State: APjAAAWYBTVo/gq8LdNPlWlx6OB56LnHWGJJn1p/Rbe5mKiQpwAmF0/x
 8ijPrHcKHMxmCLjVvwoUb8AG/NrZAmQ=
X-Google-Smtp-Source: APXvYqxxYo2ITXZtRdOVQ1V4RrVQN7GbEWFnx0E7/x52yus0phgRN136l6K7dr7jiPZCQVZrQz7CqA==
X-Received: by 2002:adf:b64b:: with SMTP id i11mr34556483wre.205.1560927841025; 
 Wed, 19 Jun 2019 00:04:01 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.03.59
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:00 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:07 +0300
Message-Id: <20190619070315.9765-1-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 0/8] Unikraft 9P API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNlcyB0aGUgOVAgQVBJLCB3aGljaCBhY3RzIGFzIGEg
Z2VuZXJpYwppbnRlcmZhY2UgYmV0d2VlbiB0aGUgOVAgdHJhbnNwb3J0IGRyaXZlcnMgKHhlbiwg
dmlydGlvKSBhbmQKdGhlIDlwZnMgaW1wbGVtZW50YXRpb24uIFRoZSBBUEkgbWF5IGFsc28gYmUg
dXNlZCBkaXJlY3RseSBieQp1c2Vycy4KClRoZSB0cmFuc3BvcnQgZHJpdmVycyByZWdpc3RlciB0
aGVtc2VsdmVzIHdpdGggdGhlIEFQSSB1c2luZyB0aGUKZGVmaW5pdGlvbnMgZnJvbSA5cGRldl90
cmFucy5oIGFuZCA5cGRldl9jb3JlLmgsIGFuZCBpbXBsZW1lbnQKdGhlIGNvbm5lY3QsIGRpc2Nv
bm5lY3QgYW5kIHJlcXVlc3QgY2FsbGJhY2tzLgoKVGhlIHByb3RvY29sIGNvcmUgdHlwZXMgYW5k
IGNvbnN0YW50cyBjYW4gYmUgZm91bmQgaW4gOXBfY29yZS5oLAphbmQgYSBoZWxwZXIgaW50ZXJm
YWNlIHRvIHRoZSBvcGVyYXRpb25zIHN1cHBvcnRlZCBieSB0aGUgOVAKcHJvdG9jb2wgY2FuIGJl
IGZvdW5kIGluIDlwLmguCgpUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIG9iamVjdHMgd2hpY2ggbXVz
dCBiZSBtYW5hZ2VkIGNhcmVmdWxseQpieSB0aGUgQVBJOiB0aGUgcmVxdWVzdCBhbmQgdGhlIGZp
ZCAoaGFuZGxlIHRvIGEgZmlsZXN5c3RlbQplbnRpdHkgc3VjaCBhcyBhIGZpbGUgb3IgZGlyZWN0
b3J5LCBzaW1pbGFyIHRvIGEgZmlsZQpkZXNjcmlwdG9yKS4gVGhlIG1hbmFnZW1lbnQgb2YgYm90
aCBvZiB0aG9zZSBpcyBhYnN0cmFjdGVkIGludG8KOXByZXEuaCBhbmQgOXBmaWQuaCByZXNwZWN0
aXZlbHkuCgpDcmlzdGlhbiBCYW51ICg4KToKICBsaWIvdWs5cDogQWRkIDlQIGxpYnJhcnkgc2tl
bGV0b24KICBsaWIvdWs5cDogQWRkIDlQIHRyYW5zcG9ydCByZWdpc3RyYXRpb24KICBsaWIvdWs5
cDogQWRkIDlQIHByb3RvY29sIGNvcmUgZGVmaW5pdGlvbnMKICBsaWIvdWs5cDogQWRkIDlQIHJl
cXVlc3RzIGFic3RyYWN0aW9uCiAgbGliL3VrOXA6IEFkZCA5UCBkZXZpY2UgaW1wbGVtZW50YXRp
b24KICBsaWIvdWs5cDogQWRkIDlQIGZpZCBhYnN0cmFjdGlvbgogIGxpYi91azlwOiBBZGQgOVAg
aGVscGVyIEFQSQogIGxpYi91azlwOiBDbHVuayBmaWRzIG9uIGZpZCByZWxlYXNlCgogbGliL0Nv
bmZpZy51ayAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAg
ICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvdWs5cC85cC5jICAgICAgICAgICAgICAgICAgICAg
fCA0MjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91azlwLzlwZGV2LmMgICAg
ICAgICAgICAgICAgICB8IDQ2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv
dWs5cC85cGRldl90cmFucy5jICAgICAgICAgICAgfCAgODYgKysrKysrCiBsaWIvdWs5cC85cGZp
ZC5jICAgICAgICAgICAgICAgICAgfCAgNzEgKysrKysKIGxpYi91azlwLzlwcmVxLmMgICAgICAg
ICAgICAgICAgICB8IDU1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
bGliL3VrOXAvQ29uZmlnLnVrICAgICAgICAgICAgICAgIHwgICA2ICsKIGxpYi91azlwL01ha2Vm
aWxlLnVrICAgICAgICAgICAgICB8ICAxMCArCiBsaWIvdWs5cC9leHBvcnRzeW1zLnVrICAgICAg
ICAgICAgfCAgNDMgKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwLmggICAgICAgICAgfCAyNjAg
KysrKysrKysrKysrKysrKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaCAgICAgfCAy
NDkgKysrKysrKysrKysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXYuaCAgICAgICB8
IDIxMSArKysrKysrKysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oICB8
IDE4OSArKysrKysrKysrKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmggfCAx
MDQgKysrKysrKwogbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oICAgICAgIHwgMTE1ICsrKysr
KysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmggICAgICAgfCAyNjAgKysrKysrKysrKysr
KysrKysrCiAxNyBmaWxlcyBjaGFuZ2VkLCAzMDQzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdWs5cC85cC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBkZXYu
YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwLzlwZGV2X3RyYW5zLmMKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdWs5cC85cGZpZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBy
ZXEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL0NvbmZpZy51awogY3JlYXRlIG1vZGUg
MTAwNjQ0IGxpYi91azlwL01ha2VmaWxlLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAv
ZXhwb3J0c3ltcy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXAu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl9jb3JlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdWs5cC9pbmNsdWRlL3VrLzlwZmlkLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9p
bmNsdWRlL3VrLzlwcmVxLmgKCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUdb-0007oG-BM; Wed, 19 Jun 2019 07:04:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUda-0007nq-6t
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:06 +0000
X-Inumbo-ID: 6c60b8b1-9260-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6c60b8b1-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:05 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id c6so503388wml.0
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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=uIPJd8srcG6J539wXwfP7a9IYnlXz5Oy54MC5wuz7DE=;
 b=Ne06X1kMGkQdfrIGUCB9NYJfJe9DyngRAcR9ceV8LF1fCOHnTl5TDglMNCvkJjWdIO
 SSS4oCyQxauCfriMelJ69+hwZWxDjR2ZGBdXN174LCxNLj9zX3qBXo2gP1J68VLNFkUn
 kkiV6NK/vBSaL0mBHLMOSRYkro/cC7HbKRXVg2qWkR7RKf0Pv8oWiI64Y9vWAq92Fw9q
 BqpJV2j54jzcOTXunewH3maoLFbGKPsEd5LSztb2o8+zhCK6IhXcRPfQ71zRzv70LZor
 mc3/LqQnoE30nMaqAGW5Mw7vR1x5e2TR9iMIKJtYAFCmCqfW9JRziwkEqAPDlil8c5u8
 2xTw==
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=uIPJd8srcG6J539wXwfP7a9IYnlXz5Oy54MC5wuz7DE=;
 b=TcuPQxFiaw4DJ72Gxk6PtInTLHRs//L3YlpvT0qTP6hQgy31fbVMuHvZSIZZ8PbyH5
 Nfm3LtAghG2AQ2G0W4y9EyYKHdHE5UljkqGePsgDtQMCVdma/r95l/TtsZQ/u1yLJ0bi
 5mn6KmnOyVso2Y2sHyEIyZ0YwhB65UE2pCknlac4H8QIftrEZ9NJn8vkp3m3Q3kJjq7X
 nHXFob8i0OZybgUU/xQgG/V7rCVN7PLCPNAQ1cHYgpFiWBfRaU9hFRAVMDHFe+61G4Gh
 rgzl9wwKMjiZ9jfAgo1Yr7plly3RwxOuGNeitcZLUWR0hqm36XlwFv+C6ClwJWErZEmZ
 w9Kw==
X-Gm-Message-State: APjAAAUW1TCVOf8/Y2q4m5F+ELy0/GD6amh4kbBfMknwdKFZC3VEsFVl
 V6cPhHCo0ZQ+lbt9LCIGnXMdClHYlHk=
X-Google-Smtp-Source: APXvYqy01WJbkcMee9h4gChhee6gAh1I4tHbir3uyvtgRtrfji6fhq+Ejgw/JqNjm3thyrG3D1IBXQ==
X-Received: by 2002:a1c:4956:: with SMTP id w83mr6565433wma.67.1560927843767; 
 Wed, 19 Jun 2019 00:04:03 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.03
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:03 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:10 +0300
Message-Id: <20190619070315.9765-4-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 3/8] lib/uk9p: Add 9P protocol core
 definitions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSA5UCBwcm90b2NvbCBjb3JlIGRlZmluaXRpb25zIGZvciB0aGUg
c3RydWN0dXJlcyBpdAp1c2VzIGFuZCB0aGUgd2lyZSBmb3JtYXQgcmVxdWlyZWQuCgpTaWduZWQt
b2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgotLS0KIGxpYi91azlwL2lu
Y2x1ZGUvdWsvOXBfY29yZS5oIHwgMjQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI0OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3JlLmgKCmRpZmYgLS1naXQgYS9saWIv
dWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaCBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGYyY2RmNmIyYTY2Ci0t
LSAvZGV2L251bGwKKysrIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3JlLmgKQEAgLTAsMCAr
MSwyNDkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8q
CisgKiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgorICoKKyAqIENv
cHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNU
RUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIF9fVUtfOVBfQ09SRV9f
CisjZGVmaW5lIF9fVUtfOVBfQ09SRV9fCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIDlQIHJlcXVlc3Qg
dHlwZXMuCisgKi8KK2VudW0gdWtfOXBfdHlwZSB7CisJVUtfOVBfVFZFUlNJT04gICAgICAgICAg
PSAxMDAsCisJVUtfOVBfUlZFUlNJT04sCisJVUtfOVBfVEFVVEggICAgICAgICAgICAgPSAxMDIs
CisJVUtfOVBfUkFVVEgsCisJVUtfOVBfVEFUVEFDSCAgICAgICAgICAgPSAxMDQsCisJVUtfOVBf
UkFUVEFDSCwKKwlVS185UF9URVJST1IgICAgICAgICAgICA9IDEwNiwKKwlVS185UF9SRVJST1Is
CisJVUtfOVBfVEZMVVNIICAgICAgICAgICAgPSAxMDgsCisJVUtfOVBfUkZMVVNILAorCVVLXzlQ
X1RXQUxLICAgICAgICAgICAgID0gMTEwLAorCVVLXzlQX1JXQUxLLAorCVVLXzlQX1RPUEVOICAg
ICAgICAgICAgID0gMTEyLAorCVVLXzlQX1JPUEVOLAorCVVLXzlQX1RDUkVBVEUgICAgICAgICAg
ID0gMTE0LAorCVVLXzlQX1JDUkVBVEUsCisJVUtfOVBfVFJFQUQgICAgICAgICAgICAgPSAxMTYs
CisJVUtfOVBfUlJFQUQsCisJVUtfOVBfVFdSSVRFICAgICAgICAgICAgPSAxMTgsCisJVUtfOVBf
UldSSVRFLAorCVVLXzlQX1RDTFVOSyAgICAgICAgICAgID0gMTIwLAorCVVLXzlQX1JDTFVOSywK
KwlVS185UF9UUkVNT1ZFICAgICAgICAgICA9IDEyMiwKKwlVS185UF9SUkVNT1ZFLAorCVVLXzlQ
X1RTVEFUICAgICAgICAgICAgID0gMTI0LAorCVVLXzlQX1JTVEFULAorCVVLXzlQX1RXU1RBVCAg
ICAgICAgICAgID0gMTI2LAorCVVLXzlQX1JXU1RBVCwKK307CisKKy8qKgorICogOVAgdmFsdWVz
IG9mIGEgcWlkLnR5cGUuCisgKi8KK2VudW0gdWtfOXBfcWlkX3R5cGUgeworCVVLXzlQX1FURElS
ICAgICAgICAgICAgID0gMHg4MCwKKwlVS185UF9RVEFQUEVORCAgICAgICAgICA9IDB4NDAsCisJ
VUtfOVBfUVRFWENMICAgICAgICAgICAgPSAweDIwLAorCVVLXzlQX1FUTU9VTlQgICAgICAgICAg
ID0gMHgyMCwKKwlVS185UF9RVEFVVEggICAgICAgICAgICA9IDB4MDgsCisJVUtfOVBfUVRUTVAg
ICAgICAgICAgICAgPSAweDA0LAorCVVLXzlQX1FUU1lNTElOSyAgICAgICAgID0gMHgwMiwKKwlV
S185UF9RVExJTksgICAgICAgICAgICA9IDB4MDEsCisJVUtfOVBfUVRGSUxFICAgICAgICAgICAg
PSAweDAwLAorfTsKKworLyoqCisgKiA5UCBwZXJtaXNzaW9uIGJpdHMuCisgKi8KK2VudW0gdWtf
OXBfcGVybSB7CisJVUtfOVBfRE1ESVIgICAgICAgICAgICAgPSAweDgwMDAwMDAwLAorCVVLXzlQ
X0RNQVBQRU5EICAgICAgICAgID0gMHg0MDAwMDAwMCwKKwlVS185UF9ETUVYQ0wgICAgICAgICAg
ICA9IDB4MjAwMDAwMDAsCisJVUtfOVBfRE1NT1VOVCAgICAgICAgICAgPSAweDEwMDAwMDAwLAor
CVVLXzlQX0RNQVVUSCAgICAgICAgICAgID0gMHgwODAwMDAwMCwKKwlVS185UF9ETVRNUCAgICAg
ICAgICAgICA9IDB4MDQwMDAwMDAsCisJVUtfOVBfRE1TWU1MSU5LICAgICAgICAgPSAweDAyMDAw
MDAwLAorCVVLXzlQX0RNTElOSyAgICAgICAgICAgID0gMHgwMTAwMDAwMCwKKwlVS185UF9ETURF
VklDRSAgICAgICAgICA9IDB4MDA4MDAwMDAsCisJVUtfOVBfRE1OQU1FRFBJUEUgICAgICAgPSAw
eDAwMjAwMDAwLAorCVVLXzlQX0RNU09DS0VUICAgICAgICAgID0gMHgwMDEwMDAwMCwKKwlVS185
UF9ETVNFVFVJRCAgICAgICAgICA9IDB4MDAwODAwMDAsCisJVUtfOVBfRE1TRVRHSUQgICAgICAg
ICAgPSAweDAwMDQwMDAwLAorCVVLXzlQX0RNU0VUVlRYICAgICAgICAgID0gMHgwMDAxMDAwMCwK
K307CisKKy8qKgorICogOVAgb3BlbiBtb2RlIGJpdHMuCisgKi8KK2VudW0gdWtfOXBfb3Blbl9t
b2RlIHsKKwlVS185UF9PUkVBRCAgICAgICAgICAgICA9IDB4MDAsCisJVUtfOVBfT1dSSVRFICAg
ICAgICAgICAgPSAweDAxLAorCVVLXzlQX09SRFdSICAgICAgICAgICAgID0gMHgwMiwKKwlVS185
UF9PRVhFQyAgICAgICAgICAgICA9IDB4MDMsCisJVUtfOVBfT1RSVU5DICAgICAgICAgICAgPSAw
eDEwLAorCVVLXzlQX09SRVhFQyAgICAgICAgICAgID0gMHgyMCwKKwlVS185UF9PUkNMT1NFICAg
ICAgICAgICA9IDB4NDAsCisJVUtfOVBfT0FQUEVORCAgICAgICAgICAgPSAweDgwLAorCVVLXzlQ
X09FWENMICAgICAgICAgICAgID0gMHgxMDAwLAorfTsKKworLyoqCisgKiA5UCBxaWQuCisgKi8K
K3N0cnVjdCB1a185cF9xaWQgeworCXVpbnQ4X3QgICAgICAgICAgICAgICAgIHR5cGU7CisJdWlu
dDMyX3QgICAgICAgICAgICAgICAgdmVyc2lvbjsKKwl1aW50NjRfdCAgICAgICAgICAgICAgICBw
YXRoOworfTsKKworLyoqCisgKiA5UCBzdHJpbmcuCisgKi8KK3N0cnVjdCB1a185cF9zdHIgewor
CXVpbnQxNl90ICAgICAgICAgICAgICAgIHNpemU7CisJY2hhciAgICAgICAgICAgICAgICAgICAg
KmRhdGE7Cit9OworCisvKioKKyAqIENoZWNrIGlmIGEgOVAgc3RyaW5nIGlzIGVxdWFsIHRvIGEg
Z2l2ZW4gbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gcworICogICA5UCBz
dHJpbmcuCisgKiBAcGFyYW0gcAorICogICBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICogQHJl
dHVybgorICogICAxIGlmIGVxdWFsLCAwIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGlubGluZSBp
bnQgdWtfOXBfc3RyX2VxdWFsKGNvbnN0IHN0cnVjdCB1a185cF9zdHIgKnMsIGNvbnN0IGNoYXIg
KnApCit7CisJcmV0dXJuIHN0cmxlbihwKSA9PSBzLT5zaXplICYmICFzdHJuY21wKHMtPmRhdGEs
IHAsIHMtPnNpemUpOworfQorCisvKioKKyAqIEluaXRpYWxpemUgYSA5UCBzdHJpbmcgZnJvbSBh
IGdpdmVuIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCisgKgorICogQHBhcmFtIHMKKyAqICAgOVAg
c3RyaW5nLgorICogQHBhcmFtIHAKKyAqICAgTnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqLwor
c3RhdGljIGlubGluZSB2b2lkIHVrXzlwX3N0cl9pbml0KHN0cnVjdCB1a185cF9zdHIgKnMsIGNv
bnN0IGNoYXIgKnApCit7CisJaWYgKCFwKSB7CisJCXMtPnNpemUgPSAwOworCQlyZXR1cm47CisJ
fQorCisJcy0+c2l6ZSA9IHN0cmxlbihwKTsKKwlzLT5kYXRhID0gKGNoYXIgKilwOworfQorCisv
KioKKyAqIDlQIHN0YXQgc3RydWN0dXJlLgorICovCitzdHJ1Y3QgdWtfOXBfc3RhdCB7CisJdWlu
dDE2X3QgICAgICAgICAgICAgICAgc2l6ZTsKKwl1aW50MTZfdCAgICAgICAgICAgICAgICB0eXBl
OworCXVpbnQzMl90ICAgICAgICAgICAgICAgIGRldjsKKwlzdHJ1Y3QgdWtfOXBfcWlkICAgICAg
ICBxaWQ7CisJdWludDMyX3QgICAgICAgICAgICAgICAgbW9kZTsKKwl1aW50MzJfdCAgICAgICAg
ICAgICAgICBhdGltZTsKKwl1aW50MzJfdCAgICAgICAgICAgICAgICBtdGltZTsKKwl1aW50NjRf
dCAgICAgICAgICAgICAgICBsZW5ndGg7CisJc3RydWN0IHVrXzlwX3N0ciAgICAgICAgbmFtZTsK
KwlzdHJ1Y3QgdWtfOXBfc3RyICAgICAgICB1aWQ7CisJc3RydWN0IHVrXzlwX3N0ciAgICAgICAg
Z2lkOworCXN0cnVjdCB1a185cF9zdHIgICAgICAgIG11aWQ7CisJc3RydWN0IHVrXzlwX3N0ciAg
ICAgICAgZXh0ZW5zaW9uOworCXVpbnQzMl90ICAgICAgICAgICAgICAgIG5fdWlkOworCXVpbnQz
Ml90ICAgICAgICAgICAgICAgIG5fZ2lkOworCXVpbnQzMl90ICAgICAgICAgICAgICAgIG5fbXVp
ZDsKK307CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIDlQIHN0YXQgc3RydWN0dXJlIHRoYXQgd29u
J3QgbW9kaWZ5IGFueSBmaWVsZHMgaWYgc2VudCB3aXRoIGEKKyAqIFdTVEFUIG1lc3NhZ2UsIGJ5
IHNldHRpbmcgYWxsIGludGVnZXIgZmllbGRzIHRvIH4wIGFuZCBhbGwgc3RyaW5nIGZpZWxkcyB0
bworICogZW1wdHkgc3RyaW5ncy4KKyAqCisgKiBAcGFyYW0gc3RhdAorICogICBUaGUgOVAgc3Rh
dCBzdHJ1Y3R1cmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB1a185cF9zdGF0X2luaXQoc3Ry
dWN0IHVrXzlwX3N0YXQgKnN0YXQpCit7CisJbWVtc2V0KHN0YXQsIH4wLCBzaXplb2Yoc3RydWN0
IHVrXzlwX3N0YXQpKTsKKwlzdGF0LT5uYW1lLnNpemUgPSAwOworCXN0YXQtPnVpZC5zaXplID0g
MDsKKwlzdGF0LT5naWQuc2l6ZSA9IDA7CisJc3RhdC0+bXVpZC5zaXplID0gMDsKKwlzdGF0LT5l
eHRlbnNpb24uc2l6ZSA9IDA7Cit9CisKKy8qKgorICogTm8gdGFnLCB1c2VkIGJ5IHRoZSBUdmVy
c2lvbi9SdmVyc2lvbiBwYWlyIG9mIHJlcXVlc3QvcmVwbHkgbWVzc2FnZXMuCisgKi8KKyNkZWZp
bmUgVUtfOVBfTk9UQUcgICAgICAgICAgICAgICAgICAgIFVJTlQxNl9NQVgKKworLyoqCisgKiBN
YXhpbXVtIGF2YWlsYWJsZSB0YWcgZm9yIHVzZS4KKyAqIFVLXzlQX05PVEFHICh+MCkgaXMgcmVz
ZXJ2ZWQgYnkgdGhlIDlQIFJGQyBmb3IgcmVwcmVzZW50aW5nIG5vIHRhZy4KKyAqLworI2RlZmlu
ZSBVS185UF9NQVhUQUcgICAgICAgICAgICAgICAgICAgKFVJTlQxNl9NQVggLSAxKQorCisvKioK
KyAqIE51bWJlciBvZiBwb3NzaWJsZSB0YWdzLCBpbmNsdWRpbmcgTk9UQUcuCisgKi8KKyNkZWZp
bmUgVUtfOVBfTlVNVEFHUyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpKFVJTlQxNl9NQVgp
ICsgMSkKKworLyoqCisgKiBObyBmaWQsIHVzZWQgdG8gbWFyayBhIGZpZCBmaWVsZCBhcyB1bnVz
ZWQuCisgKi8KKyNkZWZpbmUgVUtfOVBfTk9GSUQgICAgICAgICAgICAgICAgICAgIFVJTlQzMl9N
QVgKKworLyoqCisgKiBObyBuX3VuYW1lIGluIFRBVFRBQ0ggcmVxdWVzdHMsIHVzZWQgdG8gbWFy
ayB0aGUgZmllbGQgYXMgdW51c2VkLgorICovCisjZGVmaW5lIFVLXzlQX05PTlVOQU1FICAgICAg
ICAgICAgICAgICBVSU5UMzJfTUFYCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK
KyNlbmRpZiAvKiBfX1VLXzlQX0NPUkVfXyAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUdd-0007pT-Cw; Wed, 19 Jun 2019 07:04:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdc-0007p8-Dr
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:08 +0000
X-Inumbo-ID: 6d1a9119-9260-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6d1a9119-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:06 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n4so2012167wrw.13
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04:06 -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=7VaxzX6fHDdHOnoj8rhk6aJzkDVsLXp1JsJV1hggsbI=;
 b=qZq3XNT3DdqSoCqNYqd2dAE3RQRvF16meBOEaIUe6L6R7Lj5FZGUMIXCjLUPCoowNd
 KnRdnJiK9bmkubn9tU7A4iQo5IyH1KGmbUNTba4fWHcfDahkUuJI1CNYx72uIh+LGytj
 J9jGDGfQjvJ8WhL8kFqrl11tQSNKqfSSYH17a6pqxu3pl/s+TA2hUmI069NNwWLvcuu0
 kL64EsugPTT4RsMSjc6MqjGn2jKWFky7bmyZA0KsG+vR0WVIMJmd1UGZVJnyylE52vHJ
 NOr7wBIw+FPHOwFq9fRBF+PFrqxdDv1U60OSiAByjlEZE0XfwRQylor8sTk5CcxuhG1s
 FhwA==
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=7VaxzX6fHDdHOnoj8rhk6aJzkDVsLXp1JsJV1hggsbI=;
 b=E5Xo3cnnYa8nJ9a5YPE4ZhiQy2tDBnCx/hwPvpCXUdqUqvHUvekKKXBv1frpFT8+Jr
 cNuPj8xTrA5CQCL6bjsU72kbhsh3swRjO7kUeE0jezh7mbRq/6hd1RpknNGQqbFhhxsX
 mw5zrQ1Ani6JyPmQoYMphuaW/P075/zIQNpfCOUOK9AIaAhgx75sJBBZJB/JZTg+2PXN
 ZlIfRtTRbrmV97kYO1wMGFK/x0ri8JNTqb9K1gmDWuAeABwb2RKJ9wgMOLWJnJa8blu4
 XfHLFrltCqJo7sNnFOqGFWLG4cpihMt41QEpbRpiT1pVMtLTzZgmq9m8CTIvkcrW6+hZ
 6VVQ==
X-Gm-Message-State: APjAAAUIdSskFXthyjjAdD36raH1CvjySkKUPa9YDhjLhH7ckaYJ7PCO
 a27pNMFd6WYCi6PUQZ94Ue+UyWccuc0=
X-Google-Smtp-Source: APXvYqyqdbauYolDfBmPvYVsgJYWscPRKA0aphY5WpaiFNMM+DWExYoRWZ7w6xxFVxnO/Vs8kBIILA==
X-Received: by 2002:adf:ff90:: with SMTP id j16mr6565100wrr.135.1560927844645; 
 Wed, 19 Jun 2019 00:04:04 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.03
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:04 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:11 +0300
Message-Id: <20190619070315.9765-5-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 4/8] lib/uk9p: Add 9P requests
 abstraction
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3RydWN0IHVrXzlwcmVxIHdoaWNoIGFic3RyYWN0cyB0
aGUgbGlmZWN5Y2xlIG9mCmFsbG9jYXRpbmcgbWVtb3J5LCBzZXJpYWxpemluZyBkYXRhLCBzZW5k
aW5nIGl0IG92ZXIgYSB0cmFuc3BvcnQgbGF5ZXIsCnJlY2VpdmluZyB0aGUgcmVzcG9uc2UsIGRl
dGVjdGluZyBlcnJvcnMsIGRlc2VyaWFsaXppbmcgdGhlIHJlY2VpdmVkCm1lc3NhZ2UgYW5kIGZy
ZWVpbmcgdGhlIG1lbW9yeS4KClNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBn
bWFpbC5jb20+Ci0tLQogbGliL3VrOXAvOXByZXEuYyAgICAgICAgICAgIHwgNTU0ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdWs5cC9NYWtlZmlsZS51
ayAgICAgICAgfCAgIDEgKwogbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgIHwgIDExICsKIGxp
Yi91azlwL2luY2x1ZGUvdWsvOXByZXEuaCB8IDI2MCArKysrKysrKysrKysrKysrKysrKysKIDQg
ZmlsZXMgY2hhbmdlZCwgODI2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWs5cC85cHJlcS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cHJl
cS5oCgpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXByZXEuYyBiL2xpYi91azlwLzlwcmVxLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMmFmYzkxODY1OGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9saWIvdWs5cC85cHJlcS5jCkBAIC0wLDAgKzEsNTU0IEBACisvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jp
c3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTks
IFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElO
IEFOWSBXQVkuCisgKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVrL2NvbmZp
Zy5oPgorI2luY2x1ZGUgPHVrLzlwcmVxLmg+CisjaW5jbHVkZSA8dWsvOXBfY29yZS5oPgorI2lu
Y2x1ZGUgPHVrL2xpc3QuaD4KKyNpbmNsdWRlIDx1ay9yZWZjb3VudC5oPgorI2luY2x1ZGUgPHVr
L2Vzc2VudGlhbHMuaD4KKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgorI2lmIENPTkZJR19MSUJVS1ND
SEVECisjaW5jbHVkZSA8dWsvc2NoZWQuaD4KKyNpbmNsdWRlIDx1ay93YWl0Lmg+CisjZW5kaWYK
KworLyoKKyAqIFRoZSBoZWFkZXIgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBmaWVsZHM6IHNp
emUgKDQgYnl0ZXMpLCB0eXBlICgxKSBhbmQKKyAqIHRhZyAoMikuCisgKi8KKyNkZWZpbmUgVUtf
OVBfSEVBREVSX1NJWkUgICAgICAgICAgICAgICA3VQorCisvKgorICogVGhlIG1heGltdW0gYnVm
ZmVyIHNpemUgZm9yIGFuIGVycm9yIHJlcGx5IGlzIGdpdmVuIGJ5IHRoZSBoZWFkZXIgKDcpLCB0
aGUKKyAqIHN0cmluZyBzaXplICgyKSwgdGhlIGVycm9yIHN0cmluZyAoMTI4KSBhbmQgdGhlIGVy
cm9yIGNvZGUgKDQpOiBpbiB0b3RhbCwKKyAqIDE0MS4KKyAqLworI2RlZmluZSBVS185UF9SRVJS
T1JfTUFYU0laRSAgICAgICAgICAgIDE0MVUKKworc3RhdGljIGludCBfZmNhbGxfYWxsb2Moc3Ry
dWN0IHVrX2FsbG9jICphLCBzdHJ1Y3QgdWtfOXByZXFfZmNhbGwgKmYsCisJCQl1aW50MzJfdCBz
aXplKQoreworCVVLX0FTU0VSVChhKTsKKwlVS19BU1NFUlQoZik7CisJVUtfQVNTRVJUKHNpemUg
PiAwKTsKKworCWYtPmJ1ZiA9IHVrX2NhbGxvYyhhLCBzaXplLCBzaXplb2YoY2hhcikpOworCWlm
IChmLT5idWYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmLT5zaXplID0gc2l6ZTsK
KwlmLT5vZmZzZXQgPSAwOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9mY2FsbF9m
cmVlKHN0cnVjdCB1a19hbGxvYyAqYSwgc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmKQoreworCVVL
X0FTU0VSVChhKTsKKwlVS19BU1NFUlQoZik7CisKKwlpZiAoZi0+YnVmKQorCQl1a19mcmVlKGEs
IGYtPmJ1Zik7Cit9CisKK3N0cnVjdCB1a185cHJlcSAqdWtfOXByZXFfYWxsb2Moc3RydWN0IHVr
X2FsbG9jICphLCB1aW50MzJfdCBzaXplKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCWlu
dCByYzsKKworCXJlcSA9IHVrX2NhbGxvYyhhLCAxLCBzaXplb2YoKnJlcSkpOworCWlmIChyZXEg
PT0gTlVMTCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IF9mY2FsbF9hbGxvYyhhLCAmcmVxLT54bWl0
LCBzaXplKTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dF9mcmVlOworCisJcmMgPSBfZmNhbGxf
YWxsb2MoYSwgJnJlcS0+cmVjdiwgTUFYKHNpemUsIFVLXzlQX1JFUlJPUl9NQVhTSVpFKSk7CisJ
aWYgKHJjIDwgMCkKKwkJZ290byBvdXRfZnJlZTsKKworCVVLX0lOSVRfTElTVF9IRUFEKCZyZXEt
Pl9saXN0KTsKKwlyZXEtPl9hID0gYTsKKwl1a19yZWZjb3VudF9pbml0KCZyZXEtPnJlZmNvdW50
LCAxKTsKKyNpZiBDT05GSUdfTElCVUtTQ0hFRAorCXVrX3dhaXRxX2luaXQoJnJlcS0+d3EpOwor
I2VuZGlmCisKKwkvKgorCSAqIEFzc3VtZSB0aGUgaGVhZGVyIGhhcyBhbHJlYWR5IGJlZW4gd3Jp
dHRlbi4KKwkgKiBUaGUgaGVhZGVyIGl0c2VsZiB3aWxsIGJlIHdyaXR0ZW4gb24gdWtfOXByZXFf
cmVhZHkoKSwgd2hlbiB0aGUKKwkgKiBhY3R1YWwgbWVzc2FnZSBzaXplIGlzIGtub3duLgorCSAq
LworCXJlcS0+eG1pdC5vZmZzZXQgPSBVS185UF9IRUFERVJfU0laRTsKKworCXJldHVybiByZXE7
CisKK291dF9mcmVlOgorCV9mY2FsbF9mcmVlKGEsICZyZXEtPnJlY3YpOworCV9mY2FsbF9mcmVl
KGEsICZyZXEtPnhtaXQpOworCXVrX2ZyZWUoYSwgcmVxKTsKK291dDoKKwlyZXR1cm4gTlVMTDsK
K30KKworc3RhdGljIHZvaWQgX3JlcV9mcmVlKHN0cnVjdCB1a185cHJlcSAqcmVxKQoreworCV9m
Y2FsbF9mcmVlKHJlcS0+X2EsICZyZXEtPnJlY3YpOworCV9mY2FsbF9mcmVlKHJlcS0+X2EsICZy
ZXEtPnhtaXQpOworCXVrX2ZyZWUocmVxLT5fYSwgcmVxKTsKK30KKwordm9pZCB1a185cHJlcV9n
ZXQoc3RydWN0IHVrXzlwcmVxICpyZXEpCit7CisJdWtfcmVmY291bnRfYWNxdWlyZSgmcmVxLT5y
ZWZjb3VudCk7Cit9CisKK2ludCB1a185cHJlcV9wdXQoc3RydWN0IHVrXzlwcmVxICpyZXEpCit7
CisJaW50IGxhc3Q7CisKKwlsYXN0ID0gdWtfcmVmY291bnRfcmVsZWFzZSgmcmVxLT5yZWZjb3Vu
dCk7CisJaWYgKGxhc3QpCisJCV9yZXFfZnJlZShyZXEpOworCisJcmV0dXJuIGxhc3Q7Cit9CisK
K3N0YXRpYyBpbnQgX2ZjYWxsX3dyaXRlKHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZmNhbGwsIGNv
bnN0IHZvaWQgKmJ1ZiwKKwkJdWludDMyX3Qgc2l6ZSkKK3sKKwlpZiAoZmNhbGwtPm9mZnNldCAr
IHNpemUgPiBmY2FsbC0+c2l6ZSkKKwkJcmV0dXJuIC1FTk9CVUZTOworCisJbWVtY3B5KChjaGFy
ICopZmNhbGwtPmJ1ZiArIGZjYWxsLT5vZmZzZXQsIGJ1Ziwgc2l6ZSk7CisJZmNhbGwtPm9mZnNl
dCArPSBzaXplOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IF9mY2FsbF9zZXJpYWxpemUo
c3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CisKK3N0YXRp
YyBpbnQgX2ZjYWxsX3ZzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwgY29u
c3QgY2hhciAqZm10LAorCQkJdmFfbGlzdCB2bCkKK3sKKwlpbnQgcmMgPSAwOworCisJd2hpbGUg
KCpmbXQpIHsKKwkJc3dpdGNoICgqZm10KSB7CisJCWNhc2UgJ2InOiB7CisJCQl1aW50OF90IHg7
CisKKwkJCXggPSB2YV9hcmcodmwsIHVuc2lnbmVkIGludCk7CisJCQlyYyA9IF9mY2FsbF93cml0
ZShmY2FsbCwgJngsIHNpemVvZih4KSk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0Owor
CQkJYnJlYWs7CisJCX0KKwkJY2FzZSAndyc6IHsKKwkJCXVpbnQxNl90IHg7CisKKwkJCXggPSB2
YV9hcmcodmwsIHVuc2lnbmVkIGludCk7CisJCQlyYyA9IF9mY2FsbF93cml0ZShmY2FsbCwgJngs
IHNpemVvZih4KSk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJ
CX0KKwkJY2FzZSAnZCc6IHsKKwkJCXVpbnQzMl90IHg7CisKKwkJCXggPSB2YV9hcmcodmwsIHVp
bnQzMl90KTsKKwkJCXJjID0gX2ZjYWxsX3dyaXRlKGZjYWxsLCAmeCwgc2l6ZW9mKHgpKTsKKwkJ
CWlmIChyYyA8IDApCisJCQkJZ290byBvdXQ7CisJCQlicmVhazsKKwkJfQorCQljYXNlICdxJzog
eworCQkJdWludDY0X3QgeDsKKworCQkJeCA9IHZhX2FyZyh2bCwgdWludDY0X3QpOworCQkJcmMg
PSBfZmNhbGxfd3JpdGUoZmNhbGwsICZ4LCBzaXplb2YoeCkpOworCQkJaWYgKHJjIDwgMCkKKwkJ
CQlnb3RvIG91dDsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgJ3MnOiB7CisJCQlzdHJ1Y3QgdWtf
OXBfc3RyICpwOworCisJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3RyICopOworCQkJ
cmMgPSBfZmNhbGxfd3JpdGUoZmNhbGwsICZwLT5zaXplLCBzaXplb2YocC0+c2l6ZSkpOworCQkJ
aWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJCXJjID0gX2ZjYWxsX3dyaXRlKGZjYWxsLCBw
LT5kYXRhLCBwLT5zaXplKTsKKwkJCWlmIChyYyA8IDApCisJCQkJZ290byBvdXQ7CisJCQlicmVh
azsKKwkJfQorCQljYXNlICdRJzogeworCQkJc3RydWN0IHVrXzlwX3FpZCAqcDsKKworCQkJcCA9
IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3FpZCAqKTsKKwkJCXJjID0gX2ZjYWxsX3NlcmlhbGl6
ZShmY2FsbCwgImJkcSIsIHAtPnR5cGUsCisJCQkJCXAtPnZlcnNpb24sIHAtPnBhdGgpOworCQkJ
aWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgJ1MnOiB7
CisJCQlzdHJ1Y3QgdWtfOXBfc3RhdCAqcDsKKworCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVr
XzlwX3N0YXQgKik7CisJCQlyYyA9IF9mY2FsbF9zZXJpYWxpemUoZmNhbGwsICJ3d2RRZGRkcXNz
c3NzZGRkIiwKKwkJCQkJcC0+c2l6ZSwgcC0+dHlwZSwgcC0+ZGV2LCAmcC0+cWlkLAorCQkJCQlw
LT5tb2RlLCBwLT5hdGltZSwgcC0+bXRpbWUsIHAtPmxlbmd0aCwKKwkJCQkJJnAtPm5hbWUsICZw
LT51aWQsICZwLT5naWQsICZwLT5tdWlkLAorCQkJCQkmcC0+ZXh0ZW5zaW9uLCBwLT5uX3VpZCwg
cC0+bl9naWQsCisJCQkJCXAtPm5fbXVpZCk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0
OworCQkJYnJlYWs7CisJCX0KKwkJZGVmYXVsdDoKKwkJCXJjID0gLUVJTlZBTDsKKwkJCWdvdG8g
b3V0OworCQl9CisKKwkJZm10Kys7CisJfQorCitvdXQ6CisJcmV0dXJuIHJjOworfQorCitzdGF0
aWMgaW50IF9mY2FsbF9zZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBj
aGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IHZsOworCWludCByYzsKKworCXZhX3N0YXJ0KHZs
LCBmbXQpOworCXJjID0gX2ZjYWxsX3ZzZXJpYWxpemUoZiwgZm10LCB2bCk7CisJdmFfZW5kKHZs
KTsKKworCXJldHVybiByYzsKK30KKworaW50IHVrXzlwcmVxX3ZzZXJpYWxpemUoc3RydWN0IHVr
XzlwcmVxICpyZXEsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2bCkKK3sKKwlpbnQgcmM7CisK
KwlVS19BU1NFUlQocmVxKTsKKwlVS19BU1NFUlQoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpID09
IFVLXzlQUkVRX0lOSVRJQUxJWkVEKTsKKwlyYyA9IF9mY2FsbF92c2VyaWFsaXplKCZyZXEtPnht
aXQsIGZtdCwgdmwpOworCisJcmV0dXJuIHJjOworfQorCitpbnQgdWtfOXByZXFfc2VyaWFsaXpl
KHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0
IHZsOworCWludCByYzsKKworCXZhX3N0YXJ0KHZsLCBmbXQpOworCXJjID0gdWtfOXByZXFfdnNl
cmlhbGl6ZShyZXEsIGZtdCwgdmwpOworCXZhX2VuZCh2bCk7CisKKwlyZXR1cm4gcmM7Cit9CisK
K3N0YXRpYyBpbnQgX2ZjYWxsX3JlYWQoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwgdm9p
ZCAqYnVmLCB1aW50MzJfdCBzaXplKQoreworCWlmIChmY2FsbC0+b2Zmc2V0ICsgc2l6ZSA+IGZj
YWxsLT5zaXplKQorCQlyZXR1cm4gLUVOT0JVRlM7CisKKwltZW1jcHkoYnVmLCAoY2hhciAqKWZj
YWxsLT5idWYgKyBmY2FsbC0+b2Zmc2V0LCBzaXplKTsKKwlmY2FsbC0+b2Zmc2V0ICs9IHNpemU7
CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX2ZjYWxsX2Rlc2VyaWFsaXplKHN0cnVjdCB1
a185cHJlcV9mY2FsbCAqZiwgY29uc3QgY2hhciAqZm10LCAuLi4pOworCitzdGF0aWMgaW50IF9m
Y2FsbF92ZGVzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwKKwkJCSAgICAg
IGNvbnN0IGNoYXIgKmZtdCwKKwkJCSAgICAgIHZhX2xpc3QgdmwpCit7CisJaW50IHJjID0gMDsK
KworCXdoaWxlICgqZm10KSB7CisJCXN3aXRjaCAoKmZtdCkgeworCQljYXNlICdiJzogeworCQkJ
dWludDhfdCAqeDsKKworCQkJeCA9IHZhX2FyZyh2bCwgdWludDhfdCAqKTsKKwkJCXJjID0gX2Zj
YWxsX3JlYWQoZmNhbGwsIHgsIHNpemVvZigqeCkpOworCQkJaWYgKHJjIDwgMCkKKwkJCQlnb3Rv
IG91dDsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgJ3cnOiB7CisJCQl1aW50MTZfdCAqeDsKKwor
CQkJeCA9IHZhX2FyZyh2bCwgdWludDE2X3QgKik7CisJCQlyYyA9IF9mY2FsbF9yZWFkKGZjYWxs
LCB4LCBzaXplb2YoKngpKTsKKwkJCWlmIChyYyA8IDApCisJCQkJZ290byBvdXQ7CisJCQlicmVh
azsKKwkJfQorCQljYXNlICdkJzogeworCQkJdWludDMyX3QgKng7CisKKwkJCXggPSB2YV9hcmco
dmwsIHVpbnQzMl90ICopOworCQkJcmMgPSBfZmNhbGxfcmVhZChmY2FsbCwgeCwgc2l6ZW9mKCp4
KSk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0KKwkJY2Fz
ZSAncSc6IHsKKwkJCXVpbnQ2NF90ICp4OworCisJCQl4ID0gdmFfYXJnKHZsLCB1aW50NjRfdCAq
KTsKKwkJCXJjID0gX2ZjYWxsX3JlYWQoZmNhbGwsIHgsIHNpemVvZigqeCkpOworCQkJaWYgKHJj
IDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgJ3MnOiB7CisJCQlz
dHJ1Y3QgdWtfOXBfc3RyICpwOworCisJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3Ry
ICopOworCQkJcmMgPSBfZmNhbGxfcmVhZChmY2FsbCwgJnAtPnNpemUsIHNpemVvZihwLT5zaXpl
KSk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0OworCQkJcC0+ZGF0YSA9IChjaGFyICop
ZmNhbGwtPmJ1ZiArIGZjYWxsLT5vZmZzZXQ7CisJCQlmY2FsbC0+b2Zmc2V0ICs9IHAtPnNpemU7
CisJCQlicmVhazsKKwkJfQorCQljYXNlICdRJzogeworCQkJc3RydWN0IHVrXzlwX3FpZCAqcDsK
KworCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3FpZCAqKTsKKwkJCXJjID0gX2ZjYWxs
X2Rlc2VyaWFsaXplKGZjYWxsLCAiYmRxIiwgJnAtPnR5cGUsCisJCQkJCSZwLT52ZXJzaW9uLCAm
cC0+cGF0aCk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0K
KwkJY2FzZSAnUyc6IHsKKwkJCXN0cnVjdCB1a185cF9zdGF0ICpwOworCisJCQlwID0gdmFfYXJn
KHZsLCBzdHJ1Y3QgdWtfOXBfc3RhdCAqKTsKKwkJCXJjID0gX2ZjYWxsX2Rlc2VyaWFsaXplKGZj
YWxsLCAid3dkUWRkZHFzc3Nzc2RkZCIsCisJCQkJCSZwLT5zaXplLCAmcC0+dHlwZSwgJnAtPmRl
diwgJnAtPnFpZCwKKwkJCQkJJnAtPm1vZGUsICZwLT5hdGltZSwgJnAtPm10aW1lLAorCQkJCQkm
cC0+bGVuZ3RoLCAmcC0+bmFtZSwgJnAtPnVpZCwgJnAtPmdpZCwKKwkJCQkJJnAtPm11aWQsICZw
LT5leHRlbnNpb24sICZwLT5uX3VpZCwKKwkJCQkJJnAtPm5fZ2lkLCAmcC0+bl9tdWlkKTsKKwkJ
CWlmIChyYyA8IDApCisJCQkJZ290byBvdXQ7CisJCQlicmVhazsKKwkJfQorCQlkZWZhdWx0Ogor
CQkJcmMgPSAtRUlOVkFMOworCQkJZ290byBvdXQ7CisJCX0KKworCQlmbXQrKzsKKwl9CisKK291
dDoKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgX2ZjYWxsX2Rlc2VyaWFsaXplKHN0cnVj
dCB1a185cHJlcV9mY2FsbCAqZiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCB2
bDsKKwlpbnQgcmM7CisKKwl2YV9zdGFydCh2bCwgZm10KTsKKwlyYyA9IF9mY2FsbF92ZGVzZXJp
YWxpemUoZiwgZm10LCB2bCk7CisJdmFfZW5kKHZsKTsKKworCXJldHVybiByYzsKK30KKworaW50
IHVrXzlwcmVxX3ZkZXNlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAq
Zm10LCB2YV9saXN0IHZsKQoreworCWludCByYzsKKworCVVLX0FTU0VSVChyZXEpOworCVVLX0FT
U0VSVChVS19SRUFEX09OQ0UocmVxLT5zdGF0ZSkgPT0gVUtfOVBSRVFfUkVDRUlWRUQpOworCXJj
ID0gX2ZjYWxsX3ZkZXNlcmlhbGl6ZSgmcmVxLT5yZWN2LCBmbXQsIHZsKTsKKworCXJldHVybiBy
YzsKK30KKworaW50IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBj
b25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IHZsOworCWludCByYzsKKworCXZhX3N0
YXJ0KHZsLCBmbXQpOworCXJjID0gdWtfOXByZXFfdmRlc2VyaWFsaXplKHJlcSwgZm10LCB2bCk7
CisJdmFfZW5kKHZsKTsKKworCXJldHVybiByYzsKK30KKworaW50IHVrXzlwcmVxX2NvcHlfdG8o
c3RydWN0IHVrXzlwcmVxICpyZXEsIHZvaWQgKmJ1ZiwgdWludDMyX3Qgc2l6ZSkKK3sKKwlyZXR1
cm4gX2ZjYWxsX3JlYWQoJnJlcS0+cmVjdiwgYnVmLCBzaXplKTsKK30KKworaW50IHVrXzlwcmVx
X2NvcHlfZnJvbShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3Qgdm9pZCAqYnVmLCB1aW50MzJf
dCBzaXplKQoreworCXJldHVybiBfZmNhbGxfd3JpdGUoJnJlcS0+eG1pdCwgYnVmLCBzaXplKTsK
K30KKworaW50IHVrXzlwcmVxX3JlYWR5KHN0cnVjdCB1a185cHJlcSAqcmVxKQoreworCWludCBy
YzsKKwl1aW50MzJfdCB0b3RhbF9zaXplOworCisJVUtfQVNTRVJUKHJlcSk7CisKKwlpZiAoVUtf
UkVBRF9PTkNFKHJlcS0+c3RhdGUpICE9IFVLXzlQUkVRX0lOSVRJQUxJWkVEKSB7CisJCXJjID0g
LUVJTzsKKwkJZ290byBvdXQ7CisJfQorCisJLyogU2F2ZSBjdXJyZW50IG9mZnNldCBhcyB0aGUg
c2l6ZSBvZiB0aGUgbWVzc2FnZS4gKi8KKwl0b3RhbF9zaXplID0gcmVxLT54bWl0Lm9mZnNldDsK
KworCS8qIFNlcmlhbGl6ZSB0aGUgaGVhZGVyLiAqLworCXJlcS0+eG1pdC5vZmZzZXQgPSAwOwor
CXJjID0gdWtfOXByZXFfc2VyaWFsaXplKHJlcSwgImRidyIsIHRvdGFsX3NpemUsIHJlcS0+eG1p
dC50eXBlLAorCQkJcmVxLT50YWcpOworCWlmIChyYyA8IDApCisJCWdvdG8gb3V0OworCisJLyog
UmVzZXQgb2Zmc2V0IGFuZCBzaXplIHRvIHNhbmUgdmFsdWVzLiAqLworCXJlcS0+eG1pdC5vZmZz
ZXQgPSAwOworCXJlcS0+eG1pdC5zaXplID0gdG90YWxfc2l6ZTsKKworCS8qIFVwZGF0ZSB0aGUg
c3RhdGUuICovCisJVUtfV1JJVEVfT05DRShyZXEtPnN0YXRlLCBVS185UFJFUV9SRUFEWSk7CisK
K291dDoKKwlyZXR1cm4gcmM7Cit9CisKK2ludCB1a185cHJlcV9yZWNlaXZlX2NiKHN0cnVjdCB1
a185cHJlcSAqcmVxLCB1aW50MzJfdCByZWN2X3NpemUpCit7CisJdWludDMyX3Qgc2l6ZTsKKwl1
aW50MTZfdCB0YWc7CisJaW50IHJjOworCisJVUtfQVNTRVJUKHJlcSk7CisKKwkvKiBDaGVjayBz
dGF0ZSBhbmQgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgaGVhZGVyLiAqLworCWlmIChVS19SRUFEX09O
Q0UocmVxLT5zdGF0ZSkgIT0gVUtfOVBSRVFfU0VOVCkKKwkJcmV0dXJuIC1FSU87CisJaWYgKHJl
Y3Zfc2l6ZSA8IFVLXzlQX0hFQURFUl9TSVpFKQorCQlyZXR1cm4gLUVJTzsKKworCS8qIERlc2Vy
aWFsaXplIHRoZSBoZWFkZXIgaW50byByZXF1ZXN0IGZpZWxkcy4gKi8KKwlyZXEtPnJlY3Yub2Zm
c2V0ID0gMDsKKwlyZXEtPnJlY3Yuc2l6ZSA9IHJlY3Zfc2l6ZTsKKwlyYyA9IF9mY2FsbF9kZXNl
cmlhbGl6ZSgmcmVxLT5yZWN2LCAiZGJ3IiwgJnNpemUsCisJCQkmcmVxLT5yZWN2LnR5cGUsICZ0
YWcpOworCisJLyogQ2hlY2sgc2FuaXR5IG9mIGRlc2VyaWFsaXplZCB2YWx1ZXMuICovCisJaWYg
KHJjIDwgMCkKKwkJcmV0dXJuIHJjOworCWlmIChzaXplID4gcmVjdl9zaXplKQorCQlyZXR1cm4g
LUVJTzsKKwlpZiAocmVxLT50YWcgIT0gdGFnKQorCQlyZXR1cm4gLUVJTzsKKwlyZXEtPnJlY3Yu
c2l6ZSA9IHNpemU7CisKKwkvKiBVcGRhdGUgdGhlIHN0YXRlLiAqLworCVVLX1dSSVRFX09OQ0Uo
cmVxLT5zdGF0ZSwgVUtfOVBSRVFfUkVDRUlWRUQpOworCisjaWYgQ09ORklHX0xJQlVLU0NIRUQK
KwkvKiBOb3RpZnkgYW55IHdhaXRpbmcgdGhyZWFkcy4gKi8KKwl1a193YWl0cV93YWtlX3VwKCZy
ZXEtPndxKTsKKyNlbmRpZgorCisJcmV0dXJuIDA7Cit9CisKK2ludCB1a185cHJlcV93YWl0cmVw
bHkoc3RydWN0IHVrXzlwcmVxICpyZXEpCit7CisJaW50IHJjOworCisjaWYgQ09ORklHX0xJQlVL
U0NIRUQKKwl1a193YWl0cV93YWl0X2V2ZW50KCZyZXEtPndxLCByZXEtPnN0YXRlID09IFVLXzlQ
UkVRX1JFQ0VJVkVEKTsKKyNlbHNlCisJd2hpbGUgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAh
PSBVS185UFJFUV9SRUNFSVZFRCkKKwkJOworI2VuZGlmCisKKwkvKiBDaGVjayBmb3IgOVAgc2Vy
dmVyLXNpZGUgZXJyb3JzLiAqLworCXJjID0gdWtfOXByZXFfZXJyb3IocmVxKTsKKworCXJldHVy
biByYzsKK30KKworaW50IHVrXzlwcmVxX2Vycm9yKHN0cnVjdCB1a185cHJlcSAqcmVxKQorewor
CXVpbnQzMl90IGVycmNvZGU7CisJc3RydWN0IHVrXzlwX3N0ciBlcnJvcjsKKwlpbnQgcmMgPSAw
OworCisJaWYgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9SRUNFSVZFRCkK
KwkJcmV0dXJuIC1FSU87CisJaWYgKHJlcS0+cmVjdi50eXBlICE9IFVLXzlQX1JFUlJPUikKKwkJ
cmV0dXJuIDA7CisKKwkvKgorCSAqIFRoZSByZXF1ZXN0IHNob3VsZCBub3QgaGF2ZSBoYWQgYW55
IGRhdGEgZGVzZXJpYWxpemVkIGZyb20gaXQgcHJpb3IKKwkgKiB0byB0aGlzIGNhbGwuCisJICov
CisJVUtfQlVHT04ocmVxLT5yZWN2Lm9mZnNldCAhPSBVS185UF9IRUFERVJfU0laRSk7CisKKwly
YyA9IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJlcSwgInNkIiwgJmVycm9yLCAmZXJyY29kZSk7CisJ
aWYgKHJjIDwgMCkKKwkJcmV0dXJuIHJjOworCisJdWtfcHJfaW5mbygidWs5cDogUkVSUk9SICUu
KnMgJWRcbiIsIGVycm9yLnNpemUsIGVycm9yLmRhdGEsIGVycmNvZGUpOworCWlmIChlcnJjb2Rl
ID09IDAgfHwgZXJyY29kZSA+PSA1MTIpCisJCXJldHVybiAtRUlPOworCisJcmV0dXJuIC1lcnJj
b2RlOworfQpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvTWFrZWZpbGUudWsgYi9saWIvdWs5cC9NYWtl
ZmlsZS51awppbmRleCBiMTA3MWEwZTdkM2MuLmFlYTcyMmE1ODViOSAxMDA2NDQKLS0tIGEvbGli
L3VrOXAvTWFrZWZpbGUudWsKKysrIGIvbGliL3VrOXAvTWFrZWZpbGUudWsKQEAgLTQsMyArNCw0
IEBAIENJTkNMVURFUy0kKENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5j
bHVkZQogQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChMSUJVSzlQX0JBU0Up
L2luY2x1ZGUKIAogTElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2X3RyYW5z
LmMKK0xJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cHJlcS5jCmRpZmYgLS1naXQg
YS9saWIvdWs5cC9leHBvcnRzeW1zLnVrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awppbmRleCA0
NWY0ODdkYTJmZmYuLjg1MGZmYTJkYjIzMyAxMDA2NDQKLS0tIGEvbGliL3VrOXAvZXhwb3J0c3lt
cy51aworKysgYi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCkBAIC0xLDMgKzEsMTQgQEAKIHVrXzlw
ZGV2X3RyYW5zX3JlZ2lzdGVyCiB1a185cGRldl90cmFuc19ieV9uYW1lCiB1a185cGRldl90cmFu
c19kZWZhdWx0Cit1a185cHJlcV9nZXQKK3VrXzlwcmVxX3B1dAordWtfOXByZXFfdnNlcmlhbGl6
ZQordWtfOXByZXFfc2VyaWFsaXplCit1a185cHJlcV92ZGVzZXJpYWxpemUKK3VrXzlwcmVxX2Rl
c2VyaWFsaXplCit1a185cHJlcV9jb3B5X3RvCit1a185cHJlcV9jb3B5X2Zyb20KK3VrXzlwcmVx
X3JlY2VpdmVfY2IKK3VrXzlwcmVxX3dhaXRyZXBseQordWtfOXByZXFfZXJyb3IKZGlmZiAtLWdp
dCBhL2xpYi91azlwL2luY2x1ZGUvdWsvOXByZXEuaCBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBy
ZXEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJiZWVhMTM0Nzcy
NgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXByZXEuaApAQCAtMCww
ICsxLDI2MCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwor
LyoKKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+CisgKgorICog
Q29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJB
Q1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisKKyNpZm5kZWYgX19VS185UFJFUV9f
CisjZGVmaW5lIF9fVUtfOVBSRVFfXworCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRl
IDx1ay9jb25maWcuaD4KKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgorI2luY2x1ZGUgPHVrL2Vzc2Vu
dGlhbHMuaD4KKyNpbmNsdWRlIDx1ay9saXN0Lmg+CisjaW5jbHVkZSA8dWsvcmVmY291bnQuaD4K
KyNpZiBDT05GSUdfTElCVUtTQ0hFRAorI2luY2x1ZGUgPHVrL3dhaXRfdHlwZXMuaD4KKyNlbmRp
ZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICog
QGludGVybmFsCisgKgorICogRGVzY3JpYmVzIGEgOXAgZmNhbGwgc3RydWN0dXJlLgorICovCitz
dHJ1Y3QgdWtfOXByZXFfZmNhbGwgeworCS8qCisJICogVG90YWwgc2l6ZSBvZiB0aGUgZmNhbGwu
IEluaXRpYWxseSwgdGhpcyBpcyB0aGUgYnVmZmVyIHNpemUuCisJICogQWZ0ZXIgcmVhZHkgKG9u
IHhtaXQpIG9yIHJlcGx5IChvbiByZWN2KSwgdGhpcyB3aWxsIGJlIHRoZSBzaXplIG9mCisJICog
dGhlIHNlbnQvcmVjZWl2ZWQgZGF0YS4KKwkgKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemU7CisJLyogVHlwZSBvZiB0aGUgZmNhbGwuIFNob3VsZCBiZSBUKiBmb3IgdHJh
bnNtaXQsIFIqIGZvciByZWNlaXZlLiAqLworCXVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZTsKKwkvKiBPZmZzZXQgd2hpbGUgc2VyaWFsaXppbmcgb3IgZGVzZXJpYWxpemluZy4g
Ki8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDsKKwkvKiBCdWZmZXIg
cG9pbnRlci4gKi8KKwl2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICpidWY7Cit9Owor
CisvKioKKyAqIERlc2NyaWJlcyB0aGUgcG9zc2libGUgc3RhdGVzIGluIHdoaWNoIGEgcmVxdWVz
dCBtYXkgYmUuCisgKgorICogLSBOT05FOiBSaWdodCBhZnRlciBhbGxvY2F0aW5nLgorICogLSBJ
TklUSUFMSVpFRDogUmVxdWVzdCBpcyByZWFkeSB0byByZWNlaXZlIHNlcmlhbGl6YXRpb24gZGF0
YS4KKyAqIC0gUkVBRFk6IFJlcXVlc3QgaXMgcmVhZHkgdG8gYmUgc2VudC4KKyAqIC0gUkVDRUlW
RUQ6IFRyYW5zcG9ydCBsYXllciBoYXMgcmVjZWl2ZWQgdGhlIHJlcGx5IGFuZCBpbXBvcnRhbnQg
ZGF0YSBzdWNoCisgKiAgIGFzIHRoZSB0YWcsIHR5cGUgYW5kIHNpemUgaGF2ZSBiZWVuIHZhbGlk
YXRlZC4KKyAqLworZW51bSB1a185cHJlcV9zdGF0ZSB7CisJVUtfOVBSRVFfTk9ORSA9IDAsCisJ
VUtfOVBSRVFfSU5JVElBTElaRUQsCisJVUtfOVBSRVFfUkVBRFksCisJVUtfOVBSRVFfU0VOVCwK
KwlVS185UFJFUV9SRUNFSVZFRAorfTsKKworLyoqCisgKiAgRGVzY3JpYmVzIGEgOVAgcmVxdWVz
dC4KKyAqCisgKiAgVGhpcyBnZXRzIGFsbG9jYXRlZCB2aWEgdWtfOXBkZXZfcmVxX2NyZWF0ZSgp
LCBhbmQgZnJlZWQgd2hlbiBpdCBpcyBub3QKKyAqICByZWZlcmVuY2VkIGFueW1vcmUuIEEgY2Fs
bCB0byB1a185cGRldl9yZXFfcmVtb3ZlKCkgaXMgbWFuZGF0b3J5IHRvCisgKiAgY29ycmVjdGx5
IGZyZWUgdGhpcyBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGxpc3Qgb2YgcmVxdWVzdHMgbWFuYWdl
ZAorICogIGJ5IHRoZSA5cCBkZXZpY2UuCisgKi8KK3N0cnVjdCB1a185cHJlcSB7CisJLyogVHJh
bnNtaXQgZmNhbGwuICovCisJc3RydWN0IHVrXzlwcmVxX2ZjYWxsICAgICAgICAgICB4bWl0Owor
CS8qIFJlY2VpdmUgZmNhbGwuICovCisJc3RydWN0IHVrXzlwcmVxX2ZjYWxsICAgICAgICAgICBy
ZWN2OworCS8qIFN0YXRlIG9mIHRoZSByZXF1ZXN0LiBTZWUgdGhlIHN0YXRlIGVudW0gZm9yIGRl
dGFpbHMuICovCisJZW51bSB1a185cHJlcV9zdGF0ZSAgICAgICAgICAgICBzdGF0ZTsKKwkvKiBU
YWcgYWxsb2NhdGVkIHRvIHRoaXMgcmVxdWVzdC4gKi8KKwl1aW50MTZfdCAgICAgICAgICAgICAg
ICAgICAgICAgIHRhZzsKKwkvKiBFbnRyeSBpbnRvIHRoZSBsaXN0IG9mIHJlcXVlc3RzIChBUEkt
aW50ZXJuYWwpLiAqLworCXN0cnVjdCB1a19saXN0X2hlYWQgICAgICAgICAgICAgX2xpc3Q7CisJ
LyogQGludGVybmFsIEFsbG9jYXRvciB1c2VkIHRvIGFsbG9jYXRlIHRoaXMgcmVxdWVzdC4gKi8K
KwlzdHJ1Y3QgdWtfYWxsb2MgICAgICAgICAgICAgICAgICpfYTsKKwkvKiBUcmFja3MgdGhlIG51
bWJlciBvZiByZWZlcmVuY2VzIHRvIHRoaXMgc3RydWN0dXJlLiAqLworCV9fYXRvbWljICAgICAg
ICAgICAgICAgICAgICAgICAgcmVmY291bnQ7CisjaWYgQ09ORklHX0xJQlVLU0NIRUQKKwkvKiBX
YWl0LXF1ZXVlIGZvciBzdGF0ZSBjaGFuZ2VzLiAqLworCXN0cnVjdCB1a193YWl0cSAgICAgICAg
ICAgICAgICAgd3E7CisjZW5kaWYKK307CisKKy8qKgorICogQGludGVybmFsCisgKiBBbGxvY2F0
ZXMgYSA5cCByZXF1ZXN0LgorICogU2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LCB1c2UgdWtf
OXBkZXZfcmVxX2NyZWF0ZSgpIGluc3RlYWQuCisgKgorICogQHBhcmFtIGEKKyAqICAgQWxsb2Nh
dG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBzaXplCisgKiAgIE1pbmltdW0gc2l6ZSBvZiB0aGUgcmVj
ZWl2ZSBhbmQgdHJhbnNtaXQgYnVmZmVycy4KKyAqIEByZXR1cm4KKyAqICAgLSAoPT1OVUxMKTog
T3V0IG9mIG1lbW9yeS4KKyAqICAgLSAoIT1OVUxMKTogU3VjY2Vzc2Z1bC4KKyAqLworc3RydWN0
IHVrXzlwcmVxICp1a185cHJlcV9hbGxvYyhzdHJ1Y3QgdWtfYWxsb2MgKmEsIHVpbnQzMl90IHNp
emUpOworCisvKioKKyAqIEdldHMgdGhlIDlwIHJlcXVlc3QsIGluY3JlbWVudGluZyB0aGUgcmVm
ZXJlbmNlIGNvdW50LgorICoKKyAqIEBwYXJhbSByZXEKKyAqICAgUmVmZXJlbmNlIHRvIHRoZSA5
cCByZXF1ZXN0LgorICovCit2b2lkIHVrXzlwcmVxX2dldChzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7
CisKKy8qKgorICogUHV0cyB0aGUgOXAgcmVxdWVzdCwgZGVjcmVtZW50aW5nIHRoZSByZWZlcmVu
Y2UgY291bnQuCisgKiBJZiB0aGlzIHdhcyB0aGUgbGFzdCBsaXZlIHJlZmVyZW5jZSwgdGhlIG1l
bW9yeSB3aWxsIGJlIGZyZWVkLgorICoKKyAqIEBwYXJhbSByZXEKKyAqICAgUmVmZXJlbmNlIHRv
IHRoZSA5cCByZXF1ZXN0LgorICogQHJldHVybgorICogICAtIDA6IFRoaXMgd2FzIG5vdCB0aGUg
bGFzdCBsaXZlIHJlZmVyZW5jZS4KKyAqICAgLSAxOiBUaGlzIHdhcyB0aGUgbGFzdCBsaXZlIHJl
ZmVyZW5jZS4KKyAqLworaW50IHVrXzlwcmVxX3B1dChzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7CisK
Ky8qCisgKiBUaGUgZm9sbG93aW5nIGZhbWlseSBvZiBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlh
bGl6YXRpb24gZnVuY3Rpb25zIHdvcmsKKyAqIGJ5IGVtcGxveWluZyBhIHByaW50Zi1saWtlIGZv
cm1hdHRpbmcgbWVjaGFuaXNtIGZvciBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieQorICogdGhlIDlw
IHByb3RvY29sOgorICogLSAnYic6IGJ5dGUgKHVpbnQ4X3QpCisgKiAtICd3Jzogd29yZCAodWlu
dDE2X3QpCisgKiAtICdkJzogZG91YmxlLXdvcmQgKHVpbnQzMl90KQorICogLSAncSc6IHF1YWQt
d29yZCAodWludDY0X3QpCisgKiAtICdzJzogdWtfOXBfc3RyICoKKyAqIC0gJ1MnOiB1a185cF9z
dGF0ICoKKyAqCisgKiBTaW1pbGFybHkgdG8gdnByaW50ZigpLCB0aGUgdnNlcmlhbGl6ZSgpIGFu
ZCB2ZGVzZXJpYWxpemUoKSBmdW5jdGlvbnMgdGFrZQorICogYSB2YV9saXN0IGluc3RlYWQgb2Yg
YSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLgorICoKKyAqIFBvc3NpYmxlIHJldHVybiB2
YWx1ZXM6CisgKiAtIDA6IE9wZXJhdGlvbiBzdWNjZXNzZnVsLgorICogLSAoLUVJTlZBTCk6IElu
dmFsaWQgZm9ybWF0IHNwZWNpZmllci4KKyAqIC0gKC1FTk9CVUZTKTogRW5kIG9mIGJ1ZmZlciBy
ZWFjaGVkLgorICovCisKK2ludCB1a185cHJlcV92c2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAq
cmVxLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmwpOworaW50IHVrXzlwcmVxX3NlcmlhbGl6
ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10LCAuLi4pOworaW50IHVrXzlw
cmVxX3ZkZXNlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10LCB2
YV9saXN0IHZsKTsKK2ludCB1a185cHJlcV9kZXNlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJl
cSwgY29uc3QgY2hhciAqZm10LCAuLi4pOworCisvKioKKyAqIENvcGllcyByYXcgZGF0YSBmcm9t
IHRoZSByZXF1ZXN0IHJlY2VpdmUgYnVmZmVyIHRvIHRoZSBwcm92aWRlZCBidWZmZXIuCisgKgor
ICogQHBhcmFtIHJlcQorICogICBSZWZlcmVuY2UgdG8gdGhlIDlwIHJlcXVlc3QuCisgKiBAcGFy
YW0gYnVmCisgKiAgIERlc3RpbmF0aW9uIGJ1ZmZlci4KKyAqIEBwYXJhbSBzaXplCisgKiAgIEFt
b3VudCB0byBjb3B5LgorICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoKKyAqIC0gMDogT3BlcmF0
aW9uIHN1Y2Nlc3NmdWwuCisgKiAtICgtRU5PQlVGUyk6IEVuZCBvZiBidWZmZXIgcmVhY2hlZC4K
KyAqLworaW50IHVrXzlwcmVxX2NvcHlfdG8oc3RydWN0IHVrXzlwcmVxICpyZXEsIHZvaWQgKmJ1
ZiwgdWludDMyX3Qgc2l6ZSk7CisKKy8qKgorICogQ29waWVzIHJhdyBkYXRhIGZyb20gdGhlIHBy
b3ZpZGVkIGJ1ZmZlciB0byB0aGUgcmVxdWVzdCB0cmFuc21pc3Npb24gYnVmZmVyLgorICoKKyAq
IEBwYXJhbSByZXEKKyAqICAgUmVmZXJlbmNlIHRvIHRoZSA5cCByZXF1ZXN0LgorICogQHBhcmFt
IGJ1ZgorICogICBTb3VyY2UgYnVmZmVyLgorICogQHBhcmFtIHNpemUKKyAqICAgQW1vdW50IHRv
IGNvcHkuCisgKiBQb3NzaWJsZSByZXR1cm4gdmFsdWVzOgorICogLSAwOiBPcGVyYXRpb24gc3Vj
Y2Vzc2Z1bC4KKyAqIC0gKC1FTk9CVUZTKTogRW5kIG9mIGJ1ZmZlciByZWFjaGVkLgorICovCitp
bnQgdWtfOXByZXFfY29weV9mcm9tKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCB2b2lkICpi
dWYsIHVpbnQzMl90IHNpemUpOworCisvKioKKyAqIE1hcmtzIHRoZSBnaXZlbiByZXF1ZXN0IGFz
IGJlaW5nIHJlYWR5LCB0cmFuc2l0aW9uaW5nIGJldHdlZW4gc3RhdGVzCisgKiBJTklUSUFMSVpF
RCBhbmQgUkVBRFkuCisgKgorICogQHBhcmFtIHJlcQorICogICBSZWZlcmVuY2UgdG8gdGhlIDlw
IHJlcXVlc3QuCisgKiBAcmV0dXJuCisgKiAgIC0gMDogU3VjY2Vzc2Z1bC4KKyAqICAgLSAoPCAw
KTogSW52YWxpZCBzdGF0ZSBvciByZXF1ZXN0IHNpemUgc2VyaWFsaXphdGlvbiBmYWlsZWQuCisg
Ki8KK2ludCB1a185cHJlcV9yZWFkeShzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7CisKKy8qKgorICog
RnVuY3Rpb24gY2FsbGVkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllciB3aGVuIGEgcmVxdWVzdCBo
YXMgYmVlbiByZWNlaXZlZC4KKyAqIEltcGxlbWVudHMgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUg
U0VOVCB0byB0aGUgUkVDRUlWRUQgc3RhdGUuCisgKgorICogQHBhcmFtIHJlcQorICogICBUaGUg
OVAgcmVxdWVzdC4KKyAqIEBwYXJhbSByZWN2X3NpemUKKyAqICAgU2l6ZSBvZiB0aGUgcGFja2V0
IHJlY2VpdmVkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllci4KKyAqIEByZXR1cm4KKyAqICAgLSAo
MCk6IFN1Y2Nlc3NmdWxseSByZWNlaXZlZC4KKyAqICAgLSAoPCAwKTogQW4gZXJyb3Igb2NjdXJy
ZWQuCisgKi8KK2ludCB1a185cHJlcV9yZWNlaXZlX2NiKHN0cnVjdCB1a185cHJlcSAqcmVxLCB1
aW50MzJfdCByZWN2X3NpemUpOworCisvKioKKyAqIFdhaXRzIGZvciB0aGUgcmVwbHkgdG8gYmUg
cmVjZWl2ZWQuCisgKgorICogQHBhcmFtIHJlcQorICogICBUaGUgOVAgcmVxdWVzdC4KKyAqIEBy
ZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwgMCk6IEZhaWxlZC4gUmV0
dXJucyB0aGUgZXJyb3IgY29kZSByZWNlaXZlZCBmcm9tIHRoZSA5UCBzZXJ2ZXIuCisgKi8KK2lu
dCB1a185cHJlcV93YWl0cmVwbHkoc3RydWN0IHVrXzlwcmVxICpyZXEpOworCisvKioKKyAqIEV4
dHJhY3RzIHRoZSBlcnJvciBmcm9tIHRoZSByZWNlaXZlZCByZXBseS4KKyAqCisgKiBAcGFyYW0g
cmVxCisgKiAgIFRoZSA5UCByZXF1ZXN0LgorICogQHJldHVybgorICogICAtICgwKTogTm8gZXJy
b3Igb2NjdXJyZWQuCisgKiAgIC0gKDwgMCk6IEFuIFJlcnJvciB3YXMgcmVjZWl2ZWQsIHRoZSBl
cnJvciBjb2RlIGlzIDlwZnMtc3BlY2lmaWMuCisgKi8KK2ludCB1a185cHJlcV9lcnJvcihzdHJ1
Y3QgdWtfOXByZXEgKnJlcSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBfX1VLXzlQUkVRX18gKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUde-0007q3-Fa; Wed, 19 Jun 2019 07:04:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdd-0007pk-MZ
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:09 +0000
X-Inumbo-ID: 6dbabbae-9260-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6dbabbae-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:07 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id c2so2050774wrm.8
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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=upAsudgywAFsaLla5+PuQrRlU24/ascD1Eh2XrGEyK0=;
 b=Vjy7M5Nwz3AokLaDxjNhZMqAFbOT2+KNYQni16CHfP/QFxzW8mi/Z+td36upz1AHf1
 3LUOUUV8c6yYCHj+5bmaIgf982t0De3qiVt1XZBRyojviIt6KgroAIYywpvw5V4xPM4n
 YUy30v8I7SM14SY/A7yF5dBa5WAKOhlPGucRUlM2ovuOX0meDWxqIDeYMl51FA+afmkX
 Ky/+gd1VBIZtRb3A75M1mxqvMybRU62GWSK6Gdt3s+fUPcMMrIAla91vKtLDPtpKW1Pp
 wzkcS/UojiZbzOrFLIXa5ztDUWzqzKyR5E5k/iCQWxTEuWjB/L4cXsOFpRr1tNyQxQhQ
 7+lg==
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=upAsudgywAFsaLla5+PuQrRlU24/ascD1Eh2XrGEyK0=;
 b=pNuUSEc4C740COKyLA3xvhhE/lbbI97WhVVXiLuOOlEraewk24mBhqTOxHzC3VRnjq
 r0P3BtqQoK62dwLzLeKpG4SKuCsQI/ueIxDlU4sWJr8vHSA2ex1zrETir7q+GnpWngbv
 j1JL0sKABdnXbkpR8i6cP18sEzHNmq90T37GaJbfU1vS9yzwNMrjv2jukU9MM4On+QtP
 cUmqtHWcwwqEyR14hXkvWGMOQMX2d/8phv4+zET2Jgflhr6zqrEAH6RvWRkPgyQ8aFtn
 fXAqczL/sYHB8tVcoHxc4uqwMH1KCsPAudeiNB+b2Cm5ALJychG3txhavGyQQ6N1YZ0T
 nL3w==
X-Gm-Message-State: APjAAAW8wu3uumJCj7zjjySKvVYt8pc6qq9H08U2VybuW9WyPxNrPJ8x
 7KWOLsb0xdDuUVFu3Ci0dJP889qOUGI=
X-Google-Smtp-Source: APXvYqwyVfFZlxfrvIXaNfwe5dcP6V6WcJ4WlCiEnn5UL3K5BzOZksTDlbMcP2dSiSQS28F36yY0kw==
X-Received: by 2002:adf:db81:: with SMTP id u1mr82558048wri.296.1560927845924; 
 Wed, 19 Jun 2019 00:04:05 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.04
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:05 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:12 +0300
Message-Id: <20190619070315.9765-6-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 5/8] lib/uk9p: Add 9P device
 implementation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBvcGVyYXRpb25zIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBi
eSB0cmFuc3BvcnQKbGF5ZXJzLCB0aGUgQVBJIHRvIGludGVyYWN0IHdpdGggdGhlbSBhbmQgdG8g
bWFuYWdlIHJlcXVlc3RzLgoKU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdt
YWlsLmNvbT4KLS0tCiBsaWIvdWs5cC85cGRldi5jICAgICAgICAgICAgICAgICAgfCAzMjYgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91azlwLzlwZGV2X3RyYW5z
LmMgICAgICAgICAgICB8ICAgNCArCiBsaWIvdWs5cC9NYWtlZmlsZS51ayAgICAgICAgICAgICAg
fCAgIDEgKwogbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgICA5ICsrCiBsaWIv
dWs5cC9pbmNsdWRlL3VrLzlwZGV2LmggICAgICAgfCAxODggKysrKysrKysrKysrKysrKysrKysr
KwogbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl9jb3JlLmggIHwgMTY5ICsrKysrKysrKysrKysr
KysrKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmggfCAgIDMgKwogNyBmaWxl
cyBjaGFuZ2VkLCA3MDAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlw
LzlwZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaAoKZGlm
ZiAtLWdpdCBhL2xpYi91azlwLzlwZGV2LmMgYi9saWIvdWs5cC85cGRldi5jCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzZhMmUxZGQ5ZDEzCi0tLSAvZGV2L251bGwK
KysrIGIvbGliL3VrOXAvOXBkZXYuYwpAQCAtMCwwICsxLDMyNiBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJh
bnUgPGNyaXN0YkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJz
aXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
KiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZ
LgorICovCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8dWsvY29uZmlnLmg+CisjaW5jbHVkZSA8dWsvcGxhdC9zcGlubG9jay5oPgorI2luY2x1
ZGUgPHVrL2FsbG9jLmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgorI2luY2x1ZGUgPHVr
L2VycnB0ci5oPgorI2luY2x1ZGUgPHVrL2JpdG1hcC5oPgorI2luY2x1ZGUgPHVrL3JlZmNvdW50
Lmg+CisjaW5jbHVkZSA8dWsvd2FpdC5oPgorI2luY2x1ZGUgPHVrLzlwZGV2Lmg+CisjaW5jbHVk
ZSA8dWsvOXBkZXZfdHJhbnMuaD4KKyNpbmNsdWRlIDx1ay85cHJlcS5oPgorI2lmIENPTkZJR19M
SUJVS1NDSEVECisjaW5jbHVkZSA8dWsvc2NoZWQuaD4KKyNpbmNsdWRlIDx1ay93YWl0Lmg+Cisj
ZW5kaWYKKworc3RhdGljIGludCBfcmVxX21nbXRfaW5pdChzdHJ1Y3QgdWtfOXBkZXZfcmVxX21n
bXQgKnJlcV9tZ210KQoreworCXVrYXJjaF9zcGluX2xvY2tfaW5pdCgmcmVxX21nbXQtPnNwaW5s
b2NrKTsKKwl1a19iaXRtYXBfemVybyhyZXFfbWdtdC0+dGFnX2JtLCBVS185UF9OVU1UQUdTKTsK
KwlVS19JTklUX0xJU1RfSEVBRCgmcmVxX21nbXQtPnJlcV9saXN0KTsKKworCXJldHVybiAwOwor
fQorCitzdGF0aWMgdm9pZCBfcmVxX21nbXRfYWRkX3JlcV9sb2NrZWQoc3RydWN0IHVrXzlwZGV2
X3JlcV9tZ210ICpyZXFfbWdtdCwKKwkJCQlzdHJ1Y3QgdWtfOXByZXEgKnJlcSkKK3sKKwl1a19i
aXRtYXBfc2V0KHJlcV9tZ210LT50YWdfYm0sIHJlcS0+dGFnLCAxKTsKKwl1a19saXN0X2FkZCgm
cmVxLT5fbGlzdCwgJnJlcV9tZ210LT5yZXFfbGlzdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9yZXFf
bWdtdF9kZWxfcmVxX2xvY2tlZChzdHJ1Y3QgdWtfOXBkZXZfcmVxX21nbXQgKnJlcV9tZ210LAor
CQkJCXN0cnVjdCB1a185cHJlcSAqcmVxKQoreworCXVrX2JpdG1hcF9jbGVhcihyZXFfbWdtdC0+
dGFnX2JtLCByZXEtPnRhZywgMSk7CisJdWtfbGlzdF9kZWwoJnJlcS0+X2xpc3QpOworfQorCitz
dGF0aWMgaW50IF9yZXFfbWdtdF9uZXh0X3RhZ19sb2NrZWQoc3RydWN0IHVrXzlwZGV2X3JlcV9t
Z210ICpyZXFfbWdtdCwKKwkJCQl1aW50MTZfdCAqdGFnKQoreworCSp0YWcgPSB1a19maW5kX25l
eHRfemVyb19iaXQocmVxX21nbXQtPnRhZ19ibSwgVUtfOVBfTlVNVEFHUywgMCk7CisKKwlyZXR1
cm4gMDsKK30KKworc3RhdGljIHZvaWQgX3JlcV9tZ210X2NsZWFudXAoc3RydWN0IHVrXzlwZGV2
X3JlcV9tZ210ICpyZXFfbWdtdCBfX3VudXNlZCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor
CXVpbnQxNl90IHRhZzsKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgKnJlcW47CisKKwl1a3BsYXRf
c3Bpbl9sb2NrX2lycXNhdmUoJnJlcV9tZ210LT5zcGlubG9jaywgZmxhZ3MpOworCXVrX2xpc3Rf
Zm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHJlcW4sICZyZXFfbWdtdC0+cmVxX2xpc3QsIF9saXN0
KSB7CisJCXRhZyA9IHJlcS0+dGFnOworCQlfcmVxX21nbXRfZGVsX3JlcV9sb2NrZWQocmVxX21n
bXQsIHJlcSk7CisJCWlmICghdWtfOXByZXFfcHV0KHJlcSkpIHsKKwkJCXVrX3ByX3dhcm4oIlRh
ZyAlZCBzdGlsbCBoYXMgcmVmZXJlbmNlcyBvbiBjbGVhbnVwLlxuIiwKKwkJCQl0YWcpOworCQl9
CisJfQorCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZyZXFfbWdtdC0+c3BpbmxvY2ss
IGZsYWdzKTsKK30KKworc3RydWN0IHVrXzlwZGV2ICp1a185cGRldl9jb25uZWN0KGNvbnN0IHN0
cnVjdCB1a185cGRldl90cmFucyAqdHJhbnMsCisJCQkJY29uc3QgY2hhciAqZGV2aWNlX2lkZW50
aWZpZXIsCisJCQkJY29uc3QgY2hhciAqbW91bnRfYXJncywKKwkJCQlzdHJ1Y3QgdWtfYWxsb2Mg
KmEpCit7CisJc3RydWN0IHVrXzlwZGV2ICpkZXY7CisJaW50IHJjID0gMDsKKworCVVLX0FTU0VS
VCh0cmFucyk7CisJVUtfQVNTRVJUKGRldmljZV9pZGVudGlmaWVyKTsKKworCWlmIChhID09IE5V
TEwpCisJCWEgPSB0cmFucy0+YTsKKworCWRldiA9IHVrX2NhbGxvYyhhLCAxLCBzaXplb2YoKmRl
dikpOworCWlmIChkZXYgPT0gTlVMTCkgeworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gb3V0Owor
CX0KKworCWRldi0+b3BzID0gdHJhbnMtPm9wczsKKwlkZXYtPmEgPSBhOworCisjaWYgQ09ORklH
X0xJQlVLU0NIRUQKKwl1a193YWl0cV9pbml0KCZkZXYtPnhtaXRfd3EpOworI2VuZGlmCisKKwly
YyA9IF9yZXFfbWdtdF9pbml0KCZkZXYtPl9yZXFfbWdtdCk7CisJaWYgKHJjIDwgMCkKKwkJZ290
byBmcmVlX2RldjsKKworCXJjID0gZGV2LT5vcHMtPmNvbm5lY3QoZGV2LCBkZXZpY2VfaWRlbnRp
ZmllciwgbW91bnRfYXJncyk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBmcmVlX3JlcTsKKworCVVL
X0FTU0VSVChkZXYtPm1zaXplICE9IDApOworCisJZGV2LT5zdGF0ZSA9IFVLXzlQREVWX0NPTk5F
Q1RFRDsKKwlnb3RvIG91dDsKKworZnJlZV9yZXE6CisJX3JlcV9tZ210X2NsZWFudXAoJmRldi0+
X3JlcV9tZ210KTsKK2ZyZWVfZGV2OgorCXVrX2ZyZWUoYSwgZGV2KTsKK291dDoKKwlpZiAocmMg
PT0gMCkKKwkJcmV0dXJuIGRldjsKKwlyZXR1cm4gRVJSMlBUUihyYyk7Cit9CisKK2ludCB1a185
cGRldl9kaXNjb25uZWN0KHN0cnVjdCB1a185cGRldiAqZGV2KQoreworCWludCByYyA9IDA7CisK
KwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5zdGF0ZSA9PSBVS185UERFVl9DT05O
RUNURUQpOworCisJZGV2LT5zdGF0ZSA9IFVLXzlQREVWX0RJU0NPTk5FQ1RJTkc7CisKKwkvKiBD
bGVhbiB1cCB0aGUgcmVxdWVzdHMgYmVmb3JlIGNsb3NpbmcgdGhlIGNoYW5uZWwuICovCisJX3Jl
cV9tZ210X2NsZWFudXAoJmRldi0+X3JlcV9tZ210KTsKKworCXJjID0gZGV2LT5vcHMtPmRpc2Nv
bm5lY3QoZGV2KTsKKworCXVrX2ZyZWUoZGV2LT5hLCBkZXYpOworCXJldHVybiByYzsKK30KKwor
aW50IHVrXzlwZGV2X3JlcXVlc3Qoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cHJl
cSAqcmVxKQoreworCWludCByYzsKKworCVVLX0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChyZXEp
OworCisJaWYgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9SRUFEWSkgewor
CQlyYyA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChkZXYtPnN0YXRlICE9IFVL
XzlQREVWX0NPTk5FQ1RFRCkgeworCQlyYyA9IC1FSU87CisJCWdvdG8gb3V0OworCX0KKworI2lm
IENPTkZJR19MSUJVS1NDSEVECisJdWtfd2FpdHFfd2FpdF9ldmVudCgmZGV2LT54bWl0X3dxLAor
CQkocmMgPSBkZXYtPm9wcy0+cmVxdWVzdChkZXYsIHJlcSkpID49IDAgfHwgcmMgIT0gLUVOT1NQ
Qyk7CisjZWxzZQorCXJjID0gLUVOT1NQQzsKKwl3aGlsZSAocmMgPCAwICYmIHJjID09IC1FTk9T
UEMpCisJCXJjID0gZGV2LT5vcHMtPnJlcXVlc3QoZGV2LCByZXEpOworI2VuZGlmCisKK291dDoK
KwlyZXR1cm4gcmM7Cit9CisKK3ZvaWQgdWtfOXBkZXZfeG1pdF9yZWFkeShzdHJ1Y3QgdWtfOXBk
ZXYgKmRldikKK3sKKyNpZiBDT05GSUdfTElCVUtTQ0hFRAorCXVrX3dhaXRxX3dha2VfdXAoJmRl
di0+eG1pdF93cSk7CisjZW5kaWYKK30KKworc3RydWN0IHVrXzlwcmVxICp1a185cGRldl9jYWxs
KHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCisJCQl1aW50MzJfdCBzaXplLCBj
b25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKwl2YV9saXN0
IHZsOworCWludCByYzsKKworCXJlcSA9IHVrXzlwZGV2X3JlcV9jcmVhdGUoZGV2LCB0eXBlLCBz
aXplKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkKKwkJcmV0dXJuIHJlcTsKKworCXZhX3N0YXJ0KHZs
LCBmbXQpOworCXJjID0gdWtfOXByZXFfdnNlcmlhbGl6ZShyZXEsIGZtdCwgdmwpOworCXZhX2Vu
ZCh2bCk7CisKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworCXJjID0gdWtfOXByZXFfcmVh
ZHkocmVxKTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworCXJjID0gdWtfOXBkZXZfcmVx
dWVzdChkZXYsIHJlcSk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHVrXzlw
cmVxX3dhaXRyZXBseShyZXEpOworCWlmIChyYyA8IDApCisJCWdvdG8gb3V0OworCisJcmV0dXJu
IHJlcTsKK291dDoKKwl1a185cGRldl9yZXFfcmVtb3ZlKGRldiwgcmVxKTsKKwlyZXR1cm4gRVJS
MlBUUihyYyk7Cit9CisKK3N0cnVjdCB1a185cHJlcSAqdWtfOXBkZXZfcmVxX2NyZWF0ZShzdHJ1
Y3QgdWtfOXBkZXYgKmRldiwgdWludDhfdCB0eXBlLAorCQkJCXVpbnQzMl90IHNpemUpCit7CisJ
c3RydWN0IHVrXzlwcmVxICpyZXE7CisJaW50IHJjID0gMDsKKwl1aW50MTZfdCB0YWc7CisJdW5z
aWduZWQgbG9uZyBmbGFnczsKKworCVVLX0FTU0VSVChkZXYpOworCisJc2l6ZSA9IE1JTihzaXpl
LCBkZXYtPm1zaXplKTsKKworCXJlcSA9IHVrXzlwcmVxX2FsbG9jKGRldi0+YSwgc2l6ZSk7CisJ
aWYgKHJlcSA9PSBOVUxMKSB7CisJCXJjID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCisJ
dWtwbGF0X3NwaW5fbG9ja19pcnFzYXZlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3Mp
OworCWlmICh0eXBlID09IFVLXzlQX1RWRVJTSU9OKSB7CisJCXRhZyA9IFVLXzlQX05PVEFHOwor
CQlyYyA9IDA7CisJfSBlbHNlCisJCXJjID0gX3JlcV9tZ210X25leHRfdGFnX2xvY2tlZCgmZGV2
LT5fcmVxX21nbXQsICZ0YWcpOworCisJaWYgKHJjIDwgMCkgeworCQl1a3BsYXRfc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZSgmZGV2LT5fcmVxX21nbXQuc3BpbmxvY2ssIGZsYWdzKTsKKwkJZ290byBv
dXRfZnJlZTsKKwl9CisKKwlyZXEtPnRhZyA9IHRhZzsKKwlyZXEtPnhtaXQudHlwZSA9IHR5cGU7
CisKKwlfcmVxX21nbXRfYWRkX3JlcV9sb2NrZWQoJmRldi0+X3JlcV9tZ210LCByZXEpOworCXVr
cGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxh
Z3MpOworCisJcmVxLT5zdGF0ZSA9IFVLXzlQUkVRX0lOSVRJQUxJWkVEOworCWdvdG8gb3V0Owor
CitvdXRfZnJlZToKKwl1a185cHJlcV9wdXQocmVxKTsKK291dDoKKwlpZiAocmMgPT0gMCkKKwkJ
cmV0dXJuIHJlcTsKKwlyZXR1cm4gRVJSMlBUUihyYyk7Cit9CisKK3N0cnVjdCB1a185cHJlcSAq
dWtfOXBkZXZfcmVxX2xvb2t1cChzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgdWludDE2X3QgdGFnKQor
eworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJaW50IHJj
ID0gLUVJTlZBTDsKKworCXVrcGxhdF9zcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5fcmVxX21nbXQu
c3BpbmxvY2ssIGZsYWdzKTsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJmRldi0+X3Jl
cV9tZ210LnJlcV9saXN0LCBfbGlzdCkgeworCQlpZiAodGFnICE9IHJlcS0+dGFnKQorCQkJY29u
dGludWU7CisJCXJjID0gMDsKKwkJdWtfOXByZXFfZ2V0KHJlcSk7CisJCWJyZWFrOworCX0KKwl1
a3BsYXRfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5fcmVxX21nbXQuc3BpbmxvY2ssIGZs
YWdzKTsKKworCWlmIChyYyA9PSAwKQorCQlyZXR1cm4gcmVxOworCisJcmV0dXJuIEVSUjJQVFIo
cmMpOworfQorCitpbnQgdWtfOXBkZXZfcmVxX3JlbW92ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwg
c3RydWN0IHVrXzlwcmVxICpyZXEpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXVrcGxh
dF9zcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5fcmVxX21nbXQuc3BpbmxvY2ssIGZsYWdzKTsKKwlf
cmVxX21nbXRfZGVsX3JlcV9sb2NrZWQoJmRldi0+X3JlcV9tZ210LCByZXEpOworCXVrcGxhdF9z
cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOwor
CisJcmV0dXJuIHVrXzlwcmVxX3B1dChyZXEpOworfQorCit2b2lkIHVrXzlwZGV2X2FkanVzdF9t
c2l6ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgdWludDMyX3QgbXNpemUpCit7CisJZGV2LT5tc2l6
ZSA9IE1JTihkZXYtPm1zaXplLCBtc2l6ZSk7Cit9CmRpZmYgLS1naXQgYS9saWIvdWs5cC85cGRl
dl90cmFucy5jIGIvbGliL3VrOXAvOXBkZXZfdHJhbnMuYwppbmRleCA2MGI4YTIzMGNiZjMuLmM2
ODczMDU4NWNjYyAxMDA2NDQKLS0tIGEvbGliL3VrOXAvOXBkZXZfdHJhbnMuYworKysgYi9saWIv
dWs5cC85cGRldl90cmFucy5jCkBAIC00NSw2ICs0NSwxMCBAQCBpbnQgdWtfOXBkZXZfdHJhbnNf
cmVnaXN0ZXIoc3RydWN0IHVrXzlwZGV2X3RyYW5zICp0cmFucykKIHsKIAlVS19BU1NFUlQodHJh
bnMpOwogCVVLX0FTU0VSVCh0cmFucy0+bmFtZSk7CisJVUtfQVNTRVJUKHRyYW5zLT5vcHMpOwor
CVVLX0FTU0VSVCh0cmFucy0+b3BzLT5jb25uZWN0KTsKKwlVS19BU1NFUlQodHJhbnMtPm9wcy0+
ZGlzY29ubmVjdCk7CisJVUtfQVNTRVJUKHRyYW5zLT5vcHMtPnJlcXVlc3QpOwogCVVLX0FTU0VS
VCh0cmFucy0+YSk7CiAKIAl1a19saXN0X2FkZF90YWlsKCZ0cmFucy0+X2xpc3QsICZ1a185cGRl
dl90cmFuc19saXN0KTsKZGlmZiAtLWdpdCBhL2xpYi91azlwL01ha2VmaWxlLnVrIGIvbGliL3Vr
OXAvTWFrZWZpbGUudWsKaW5kZXggYWVhNzIyYTU4NWI5Li4zNGNjOTg3YTJmOWMgMTAwNjQ0Ci0t
LSBhL2xpYi91azlwL01ha2VmaWxlLnVrCisrKyBiL2xpYi91azlwL01ha2VmaWxlLnVrCkBAIC01
LDMgKzUsNCBAQCBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBf
QkFTRSkvaW5jbHVkZQogCiBMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXBkZXZf
dHJhbnMuYwogTElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwcmVxLmMKK0xJQlVL
OVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cGRldi5jCmRpZmYgLS1naXQgYS9saWIvdWs5
cC9leHBvcnRzeW1zLnVrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awppbmRleCA4NTBmZmEyZGIy
MzMuLmMzNzMzMDhmYjBhMiAxMDA2NDQKLS0tIGEvbGliL3VrOXAvZXhwb3J0c3ltcy51aworKysg
Yi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCkBAIC0xMiwzICsxMiwxMiBAQCB1a185cHJlcV9jb3B5
X2Zyb20KIHVrXzlwcmVxX3JlY2VpdmVfY2IKIHVrXzlwcmVxX3dhaXRyZXBseQogdWtfOXByZXFf
ZXJyb3IKK3VrXzlwZGV2X2Nvbm5lY3QKK3VrXzlwZGV2X2Rpc2Nvbm5lY3QKK3VrXzlwZGV2X3Jl
cXVlc3QKK3VrXzlwZGV2X3htaXRfcmVhZHkKK3VrXzlwZGV2X2NhbGwKK3VrXzlwZGV2X3JlcV9j
cmVhdGUKK3VrXzlwZGV2X3JlcV9sb29rdXAKK3VrXzlwZGV2X3JlcV9yZW1vdmUKK3VrXzlwZGV2
X2FkanVzdF9tc2l6ZQpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oIGIv
bGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZjIyMTBiYmZmYzkyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3VrOXAvaW5j
bHVkZS91ay85cGRldi5oCkBAIC0wLDAgKzEsMTg4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jp
c3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8K
KworI2lmbmRlZiBfX1VLXzlQREVWX18KKyNkZWZpbmUgX19VS185UERFVl9fCisKKyNpbmNsdWRl
IDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHVrL2FsbG9j
Lmg+CisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgor
I2luY2x1ZGUgPHVrLzlwZGV2X2NvcmUuaD4KKyNpbmNsdWRlIDx1ay9wbGF0L2lycS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3N0cnVjdCB1a185cGRl
dl90cmFuczsKKworLyoqCisgKiBDb25uZWN0IHRvIGFuIHVuZGVybHlpbmcgZGV2aWNlLCBvYnRh
aW5pbmcgYSA5cGRldiBoYW5kbGUgdG8gdGhlIGNvbm5lY3Rpb24uCisgKgorICogQHBhcmFtIHRy
YW5zCisgKiAgIFRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydC4KKyAqIEBwYXJhbSBkZXZpY2VfaWRl
bnRpZmllcgorICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlIChmb3IgdmlydGlvIGFu
ZCB4ZW4sIHRoZSBtb3VudCB0YWcpLgorICogQHBhcmFtIG1vdW50X2FyZ3MKKyAqICAgQXJndW1l
bnRzIHBhc3NlZCBkb3duIGZyb20gdGhlIG1vdW50KCkgY2FsbC4KKyAqIEBwYXJhbSBhCisgKiAg
IChPcHRpb25hbCkgQWxsb2NhdG9yIHVzZWQgZm9yIGFueSBhbGxvY2F0aW9ucyBkb25lIGJ5IHRo
aXMgOXBkZXYuCisgKiAgIElmIE5VTEwsIHRoZSB0cmFuc3BvcnQtc3BlY2lmaWMgYWxsb2NhdG9y
IHdpbGwgYmUgdXNlZC4KKyAqIEByZXR1cm4KKyAqICAgLSBDb25uZWN0aW9uIGhhbmRsZSwgaWYg
c3VjY2Vzc2Z1bC4KKyAqICAgLSBFcnJvciBwb2ludGVyLCBvdGhlcndpc2UuCisgKi8KK3N0cnVj
dCB1a185cGRldiAqdWtfOXBkZXZfY29ubmVjdChjb25zdCBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMg
KnRyYW5zLAorCQkJCWNvbnN0IGNoYXIgKmRldmljZV9pZGVudGlmaWVyLAorCQkJCWNvbnN0IGNo
YXIgKm1vdW50X2FyZ3MsCisJCQkJc3RydWN0IHVrX2FsbG9jICphKTsKKworLyoqCisgKiBEaXNj
b25uZWN0IGZyb20gdGhlIHVuZGVybHlpbmcgZGV2aWNlLgorICoKKyAqIEBwYXJhbSBkZXYKKyAq
ICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nl
c3NmdWwuCisgKiAgIC0gKDwgMCk6IEZhaWx1cmUgdG8gZGlzY29ubmVjdC4KKyAqLworaW50IHVr
XzlwZGV2X2Rpc2Nvbm5lY3Qoc3RydWN0IHVrXzlwZGV2ICpkZXYpOworCisvKioKKyAqIFNlbmQg
YSA5UCByZXF1ZXN0IHRvIHRoZSBnaXZlbiA5UCBkZXZpY2UuCisgKgorICogQHBhcmFtIGRldgor
ICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIHJlcQorICogICBUaGUgOVAg
cmVxdWVzdC4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwg
MCk6IEZhaWxlZC4KKyAqLworaW50IHVrXzlwZGV2X3JlcXVlc3Qoc3RydWN0IHVrXzlwZGV2ICpk
ZXYsIHN0cnVjdCB1a185cHJlcSAqcmVxKTsKKworLyoqCisgKiBOb3RpZnkgdGhlIDlQIGRldmlj
ZSB0aGF0IHRoZSBkZXZpY2UncyB0cmFuc21pdCBxdWV1ZSBpcyBub3QgZnVsbCBhbmQKKyAqIGl0
IG1heSBhdHRlbXB0IHRvIHNlbmQgcmVxdWVzdHMgYWdhaW4uCisgKgorICogQHBhcmFtIGRldgor
ICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICovCit2b2lkIHVrXzlwZGV2X3htaXRfcmVh
ZHkoc3RydWN0IHVrXzlwZGV2ICpkZXYpOworCisvKioKKyAqIENyZWF0ZXMgYW5kIHNlbmRzIDlQ
IHJlcXVlc3QgdG8gdGhlIGdpdmVuIDlQIGRldmljZSwgc2VyaWFsaXppbmcgaXQgd2l0aAorICog
dGhlIGdpdmVuIGFyZ3VtZW50cy4gVGhpcyBmdW5jdGlvbiBhY3RzIGFzIGEgc2hvcnRoYW5kIGZv
ciB0aGUgZXhwbGljaXQKKyAqIGNhbGxzIHRvIHJlcV9jcmVhdGUoKSwgc2VyaWFsaXplKCksIHJl
YWR5KCksIHJlcXVlc3QoKSwgd2FpdHJlcGx5KCkuCisgKgorICogQHBhcmFtIGRldgorICogICBU
aGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIHR5cGUKKyAqICAgVHJhbnNtaXQgdHlw
ZSBvZiB0aGUgcmVxdWVzdCwgZS5nLiBUdmVyc2lvbiwgVHJlYWQsIGFuZCBzbyBvbi4KKyAqIEBw
YXJhbSBzaXplCisgKiAgIFRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSByZWNlaXZlIGFuZCBzZW5k
IGJ1ZmZlcnMuCisgKiBAcGFyYW0gZm10CisgKiAgIFRoZSBmb3JtYXQgb2YgdGhlIGRhdGEgdG8g
YmUgc2VyaWFsaXplZCwgaW4gdGhlIHdheSB1a185cHJlcV9zZXJpYWxpemUoKQorICogICBleHBl
Y3RzIGl0LgorICogQHBhcmFtIC4uLgorICogICBUaGUgYXJndW1lbnRzIHRvIGJlIHNlcmlhbGl6
ZWQuCisgKiBAcmV0dXJuCisgKiAgIC0gKCFQVFJJU0VSUik6IFRoZSA5cCByZXF1ZXN0IGluIHRo
ZSBVS185UFJFUV9SRUNFSVZFRCBzdGF0ZS4KKyAqICAgLSBQVFJJU0VSUjogVGhlIGVycm9yIGNv
ZGUgd2l0aCB3aGljaCBhbnkgb2YgdGhlIHN0ZXBzIGZhaWxlZC4KKyAqLworc3RydWN0IHVrXzlw
cmVxICp1a185cGRldl9jYWxsKHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCisJ
CQl1aW50MzJfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CisKKy8qKgorICogQ3JlYXRl
IGEgbmV3IHJlcXVlc3QsIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGluZyBpdHMgdGFnLCBiYXNlZCBv
biBpdHMgdHlwZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZp
Y2UuCisgKiBAcGFyYW0gdHlwZQorICogICBUcmFuc21pdCB0eXBlIG9mIHRoZSByZXF1ZXN0LCBl
LmcuIFR2ZXJzaW9uLCBUcmVhZCwgYW5kIHNvIG9uLgorICogQHBhcmFtIHNpemUKKyAqICAgVGhl
IG1heGltdW0gc2l6ZSBmb3IgdGhlIHJlY2VpdmUgYW5kIHNlbmQgYnVmZmVycy4KKyAqIEByZXR1
cm4KKyAqICAgSWYgbm90IGFuIGVycm9yIHBvaW50ZXIsIHRoZSBjcmVhdGVkIHJlcXVlc3QuCisg
KiAgIE90aGVyd2lzZSwgdGhlIGVycm9yIGluIGNyZWF0aW5nIHRoZSByZXF1ZXN0OgorICogICAt
IEVOT01FTTogTm8gbWVtb3J5IGZvciB0aGUgcmVxdWVzdCBvciBubyBhdmFpbGFibGUgdGFncy4K
KyAqLworc3RydWN0IHVrXzlwcmVxICp1a185cGRldl9yZXFfY3JlYXRlKHN0cnVjdCB1a185cGRl
diAqZGV2LCB1aW50OF90IHR5cGUsCisJCQkJdWludDMyX3Qgc2l6ZSk7CisKKy8qKgorICogTG9v
a3MgdXAgYSByZXF1ZXN0IGJhc2VkIG9uIHRoZSBnaXZlbiB0YWcuIFRoaXMgaXMgZ2VuZXJhbGx5
IHVzZWQgYnkKKyAqIHRyYW5zcG9ydCBsYXllcnMgb24gcmVjZWl2aW5nIGEgOVAgbWVzc2FnZS4K
KyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFy
YW0gdGFnCisgKiAgIFRoZSB0YWcgdG8gbG9vayB1cC4KKyAqIEByZXR1cm4KKyAqICAgLSBOVUxM
OiBObyByZXF1ZXN0IHdpdGggdGhlIGdpdmVuIHRhZyB3YXMgZm91bmQuCisgKiAgIC0gKCE9TlVM
TCk6IFRoZSByZXF1ZXN0LgorICovCitzdHJ1Y3QgdWtfOXByZXEgKnVrXzlwZGV2X3JlcV9sb29r
dXAoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHVpbnQxNl90IHRhZyk7CisKKy8qKgorICogUmVtb3Zl
IGEgcmVxdWVzdCBmcm9tIHRoZSBnaXZlbiA5cCBkZXZpY2UuIElmIHRoZSByZXF1ZXN0IGlzIGlu
LWZsaWdodCwKKyAqIGl0IHdpbGwgYmUgZnJlZWQgd2hlbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8g
aXQgYXJlIGdvbmUuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2
aWNlLgorICogQHBhcmFtIHJlcQorICogICBUaGUgcmVxdWVzdCB0byBiZSByZW1vdmVkLgorICog
QHJldHVybgorICogICAtIDA6IFRoZXJlIGFyZSBtb3JlIGFjdGl2ZSByZWZlcmVuY2VzLgorICog
ICAtIDE6IFRoaXMgd2FzIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdC4KKyAqLwor
aW50IHVrXzlwZGV2X3JlcV9yZW1vdmUoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185
cHJlcSAqcmVxKTsKKworLyoqCisgKiBBZGp1c3RzIHRoZSBtZXNzYWdlIHNpemUgdG8gdGhlIGdp
dmVuIG1heGltdW0gc2l6ZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5
UCBEZXZpY2UuCisgKiBAcGFyYW0gbXNpemUKKyAqICAgQWxsb3dlZCBtYXhpbXVtIG1lc3NhZ2Ug
c2l6ZS4KKyAqLwordm9pZCB1a185cGRldl9hZGp1c3RfbXNpemUoc3RydWN0IHVrXzlwZGV2ICpk
ZXYsIHVpbnQzMl90IG1zaXplKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8qIF9fVUtfOVBERVZfXyAqLwpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91
ay85cGRldl9jb3JlLmggYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3ZWYzNDFlMTJkNgotLS0gL2Rldi9u
dWxsCisrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oCkBAIC0wLDAgKzEsMTY5
IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICog
QXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmln
aHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9S
IE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1VLXzlQREVWX0NPUkVfXwor
I2RlZmluZSBfX1VLXzlQREVWX0NPUkVfXworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KKyNpbmNsdWRlIDx1ay9hcmNo
L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8dWsvYml0bWFwLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5o
PgorI2luY2x1ZGUgPHVrLzlwX2NvcmUuaD4KKyNpZiBDT05GSUdfTElCVUtTQ0hFRAorI2luY2x1
ZGUgPHVrL3dhaXRfdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK3N0cnVjdCB1a185cGRldjsKK3N0cnVjdCB1a185cHJlcTsKKwor
LyoqCisgKiBGdW5jdGlvbiB0eXBlIHVzZWQgZm9yIGNvbm5lY3RpbmcgdG8gYSBkZXZpY2Ugb24g
YSBjZXJ0YWluIHRyYW5zcG9ydC4KKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWxzbyBz
ZXQgdGhlIG1zaXplIGZpZWxkIGluIHRoZSA5UCBkZXZpY2UKKyAqIHN0cnVjdCB0byB0aGUgbWF4
aW11bSBhbGxvd2VkIG1lc3NhZ2Ugc2l6ZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBV
bmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFyYW0gZGV2aWNlX2lkZW50aWZpZXIKKyAqICAgVGhl
IGlkZW50aWZpZXIgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlIChtb3VudF90YWcgZm9yIHZpcnRp
bywgZXRjLikKKyAqIEBwYXJhbSBtb3VudF9hcmdzCisgKiAgIEFyZ3VtZW50cyByZWNlaXZlZCBi
eSB0aGUgbW91bnQoKSBjYWxsLCBmb3IgdHJhbnNwb3J0LXNwZWNpZmljIG9wdGlvbnMuCisgKiBA
cmV0dXJuCisgKiAgIC0gKC1FQlVTWSk6IERldmljZSBpcyBhbHJlYWR5IGluLXVzZS4KKyAqICAg
LSAoLUVOT0VOVCk6IERldmljZSBkb2VzIG5vdCBleGlzdC4KKyAqICAgLSAoMCk6IFN1Y2Nlc3Nm
dWwuCisgKiAgIC0gKDwgMCk6IEZhaWxlZCB3aXRoIGEgdHJhbnNwb3J0IGxheWVyIGRlcGVuZGVu
dCBlcnJvci4KKyAqLwordHlwZWRlZiBpbnQgKCp1a185cGRldl9jb25uZWN0X3QpKHN0cnVjdCB1
a185cGRldiAqZGV2LAorCQkJCWNvbnN0IGNoYXIgKmRldmljZV9pZGVudGlmaWVyLAorCQkJCWNv
bnN0IGNoYXIgKm1vdW50X2FyZ3MpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgdXNlZCBmb3Ig
ZGlzY29ubmVjdGluZyBmcm9tIHRoZSBkZXZpY2UuCisgKgorICogQHBhcmFtIGRldgorICogICBU
aGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHJldHVybgorICogICAtICgwKTogU3VjY2Vzc2Z1
bC4KKyAqICAgLSAoPCAwKTogRmFpbGVkIHdpdGggYSB0cmFuc3BvcnQgbGF5ZXIgZGVwZW5kZW50
IGVycm9yLgorICovCit0eXBlZGVmIGludCAoKnVrXzlwZGV2X2Rpc2Nvbm5lY3RfdCkoc3RydWN0
IHVrXzlwZGV2ICpkZXYpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgdXNlZCBmb3Igc2VuZGlu
ZyBhIHJlcXVlc3QgdG8gdGhlIDlQIGRldmljZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRo
ZSBVbmlrcmFmdCA5UCBkZXZpY2UuCisgKiBAcGFyYW0gcmVxCisgKiAgIFJlZmVyZW5jZSB0byB0
aGUgcmVxdWVzdCB0byBiZSBzZW50LgorICogQHJldHVybgorICogICAtICgwKTogU3VjY2Vzc2Z1
bC4KKyAqICAgLSAoPCAwKTogRmFpbGVkLiBJZiAtRU5PU1BDLCB0aGVuIHRoZSB0cmFuc3BvcnQg
bGF5ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2gKKyAqICAgc3BhY2UgdG8gc2VuZCB0aGlzIHJlcXVl
c3QgYW5kIHJldHJpZXMgYXJlIHJlcXVpcmVkLgorICovCit0eXBlZGVmIGludCAoKnVrXzlwZGV2
X3JlcXVlc3RfdCkoc3RydWN0IHVrXzlwZGV2ICpkZXYsCisJCQkJc3RydWN0IHVrXzlwcmVxICpy
ZXEpOworCisvKioKKyAqIEEgc3RydWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIG9wZXJhdGlvbnMg
c3VwcG9ydGVkIGJ5IGEgY2VydGFpbiB0cmFuc3BvcnQuCisgKi8KK3N0cnVjdCB1a185cGRldl90
cmFuc19vcHMgeworCXVrXzlwZGV2X2Nvbm5lY3RfdCAgICAgICAgICAgICAgICAgICAgICBjb25u
ZWN0OworCXVrXzlwZGV2X2Rpc2Nvbm5lY3RfdCAgICAgICAgICAgICAgICAgICBkaXNjb25uZWN0
OworCXVrXzlwZGV2X3JlcXVlc3RfdCAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OworfTsK
KworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEEgc3RydWN0dXJlIHVzZWQgZm9yIDlwIHJlcXVlc3Rz
JyBtYW5hZ2VtZW50LgorICovCitzdHJ1Y3QgdWtfOXBkZXZfcmVxX21nbXQgeworCS8qIFNwaW5s
b2NrIHByb3RlY3RpbmcgdGhpcyBkYXRhLiAqLworCXNwaW5sb2NrX3QgICAgICAgICAgICAgICAg
ICAgICAgc3BpbmxvY2s7CisJLyogQml0bWFwIG9mIGF2YWlsYWJsZSB0YWdzLiAqLworCXVuc2ln
bmVkIGxvbmcgICAgICAgICAgICAgICAgICAgdGFnX2JtW1VLX0JJVFNfVE9fTE9OR1MoVUtfOVBf
TlVNVEFHUyldOworCS8qIExpc3Qgb2YgcmVxdWVzdHMgYWxsb2NhdGVkIGFuZCBub3QgeWV0IHJl
bW92ZWQuICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCAgICAgICAgICAgICByZXFfbGlzdDsKK307
CisKKy8qKgorICogQGludGVybmFsCisgKiA5UERFViB0cmFuc3BvcnQgc3RhdGUKKyAqCisgKiAt
IENPTk5FQ1RFRDogRGVmYXVsdCBzdGF0ZSBhZnRlciBpbml0aWFsaXphdGlvbiBhbmQgZHVyaW5n
IG5vcm1hbCBvcGVyYXRpb24uCisgKiAtIERJU0NPTk5FQ1RJTkc6IEFmdGVyIGEgdWtfOXBkZXZf
ZGlzY29ubmVjdCgpIGNhbGwuCisgKiAgIE5vIHJlcXVlc3RzIGFyZSBhbGxvd2VkIGFueW1vcmUu
IFdoZW4gYWxsIGxpdmUgcmVzb3VyY2VzIGhhdmUgYmVlbgorICogICBkZXN0cm95ZWQsIHRoZSA5
cGRldiB3aWxsIGZyZWUgaXRzZWxmLgorICovCitlbnVtIHVrXzlwZGV2X3RyYW5zX3N0YXRlIHsK
KwlVS185UERFVl9DT05ORUNURUQsCisJVUtfOVBERVZfRElTQ09OTkVDVElORworfTsKKworLyoq
CisgKiA5UERFVgorICogQSBzdHJ1Y3R1cmUgdXNlZCB0byBpbnRlcmFjdCB3aXRoIGEgOVAgZGV2
aWNlLgorICovCitzdHJ1Y3QgdWtfOXBkZXYgeworCS8qIFVuZGVybHlpbmcgdHJhbnNwb3J0IG9w
ZXJhdGlvbnMuICovCisJY29uc3Qgc3RydWN0IHVrXzlwZGV2X3RyYW5zX29wcyAqb3BzOworCS8q
IEFsbG9jYXRvciB1c2VkIGJ5IHRoaXMgZGV2aWNlLiAqLworCXN0cnVjdCB1a19hbGxvYyAgICAg
ICAgICAgICAgICAgKmE7IC8qIFNlZSB1a185cGRldl9jb25uZWN0KCkuICovCisJLyogVHJhbnNw
b3J0IHN0YXRlLiAqLworCWVudW0gdWtfOXBkZXZfdHJhbnNfc3RhdGUgICAgICAgc3RhdGU7CisJ
LyogTWF4aW11bSBzaXplIG9mIGEgbWVzc2FnZS4gKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAg
ICAgICAgICAgIG1zaXplOworCS8qIFRyYW5zcG9ydC1hbGxvY2F0ZWQgZGF0YS4gKi8KKwl2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwcml2OworCS8qIEBpbnRlcm5hbCBSZXF1ZXN0
IG1hbmFnZW1lbnQuICovCisJc3RydWN0IHVrXzlwZGV2X3JlcV9tZ210ICAgICAgICBfcmVxX21n
bXQ7CisjaWYgQ09ORklHX0xJQlVLU0NIRUQKKwkvKgorCSAqIFNsZXB0IG9uIGJ5IHRocmVhZHMg
d2FpdGluZyBmb3IgdGhlaXIgdHVybiBmb3IgZW5vdWdoIHNwYWNlIHRvIHNlbmQKKwkgKiB0aGUg
cmVxdWVzdC4KKwkgKi8KKwlzdHJ1Y3QgdWtfd2FpdHEJCQl4bWl0X3dxOworI2VuZGlmCit9Owor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19VS185UERFVl9D
T1JFX18gKi8KZGlmZiAtLWdpdCBhL2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCBi
L2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaAppbmRleCBhMGM2ZDI1MjM2MWMuLjUz
ZThmYzA1MTBiNiAxMDA2NDQKLS0tIGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5o
CisrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaApAQCAtMzcsNiArMzcsNyBA
QAogCiAjaW5jbHVkZSA8c3RkYm9vbC5oPgogI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1
ZGUgPHVrLzlwZGV2X2NvcmUuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsK
QEAgLTUwLDYgKzUxLDggQEAgc3RydWN0IHVrXzlwZGV2X3RyYW5zIHsKIAkgKiBzYW1lIHBsYXRm
b3JtLgogCSAqLwogCWNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmFt
ZTsKKwkvKiBTdXBwb3J0ZWQgb3BlcmF0aW9ucy4gKi8KKwljb25zdCBzdHJ1Y3QgdWtfOXBkZXZf
dHJhbnNfb3BzICAgICAgICAgKm9wczsKIAkvKiBDYW4gdGhlIHRyYW5zcG9ydCBiZSB1c2VkIGFz
IGEgZGVmYXVsdCBvbmU/ICovCiAJYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzX2RlZmF1bHQ7CiAJLyogQWxsb2NhdG9yIHVzZWQgZm9yIGRldmljZXMgd2hpY2ggdXNl
IHRoaXMgdHJhbnNwb3J0IGxheWVyLiAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUdf-0007qr-Ha; Wed, 19 Jun 2019 07:04:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUde-0007qY-VI
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:11 +0000
X-Inumbo-ID: 6e5eb76f-9260-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6e5eb76f-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:08 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id u8so503609wmm.1
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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=/ggHDAJeB/LaFbdPfAjKznsnIcajw7A/1IPuBEh+stE=;
 b=gKjs95RMzrgiV6kHQ4r0ISFCKf3sxnHrp3hwTQzjcJpqOdg9cBkATYvN8RE90SeUOL
 eUOq4XrcoJ0VhQRLpHQi3F73W2v0QX21nDyBNExmoCm7yDPHhSCNUqPHj8HYOGye6ln5
 8W5ObzQCr+1ijvi7PNFpDJLe2JI/8OW8vzk9YllJuVBeMQ502RnvV13oxyYEVynqlTyv
 mSoUKeralf5AhBNKx95kqjUfUEHpx/vODJL4MnDbKFiBxn5QMmkwpsQjFPkWQm245DkJ
 vtXwVxlISZKvRWQk5c9EnAQsfkXUwNIfW3DxBVQJCI57i5FZu6+VpbVybP1d8z0HNZkN
 vE1g==
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=/ggHDAJeB/LaFbdPfAjKznsnIcajw7A/1IPuBEh+stE=;
 b=MuTii6hr0rnXZdsyBVGNF5tNEkYWCemU8F78UH152HHmkfY9rHTnMOPZ2UYPby6y0Y
 vmog3d3f30wBAmtKv5kaDGqgt0BhaLHtemCIlzLkomeiVJC4eTbq6HajYqDA50/yarEq
 jJVvZpU3rEIOovbKtuHnBcUvfY/FTkUv6QOqlk7soTHeshvwGd9JUUHXRoLLncas9Yhy
 1IYemT7ijM742Y5sbVXObbPY4lPpVAJ4YDrTkLXSpM8OXDBI27Dg4U3D4zC7/LaQPThR
 C9Fcn8TbeA60qm2bV+xahokw2ZbAfVteLlI1brC3WPrZazCW1S2yCq51q4T2LWy6UWSd
 dMKA==
X-Gm-Message-State: APjAAAWqoO1uNblHMs8r2y2ZbsvrbpQpRqwBDu28SZsvIqN+OMxPfiW7
 +IXAfI9BabqX1EiwxyLpm21mgyFepfM=
X-Google-Smtp-Source: APXvYqzaxvzRL4cJvsCN+FWvflzN7203spyLsc5/93p38Yh9q9sU3FUohS/TLRzmSfTQzVnUKAiYKQ==
X-Received: by 2002:a1c:1bc1:: with SMTP id b184mr7200695wmb.42.1560927846951; 
 Wed, 19 Jun 2019 00:04:06 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.06
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:06 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:13 +0300
Message-Id: <20190619070315.9765-7-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 6/8] lib/uk9p: Add 9P fid abstraction
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSB1a185cGZpZCBzdHJ1Y3QsIHdoaWNoIGFic3RyYWN0cyB0aGUg
NC1ieXRlIGZpZApudW1iZXIgdXNlZCBieSB0aGUgOXAgcHJvdG9jb2wgdG8gYXNzb2NpYXRlIG51
bWJlcnMgd2l0aCBmaWxlc3lzdGVtCmVudHJpZXMgKGZpbGVzLCBkaXJlY3RvcmllcywgZXRjLikK
ClRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgZmlkIGNhY2hlIGZvciBlYWNoIDlwIGRldmljZSwgZW5h
YmxpbmcgcmV1c2Ugb2YKdGhlIGZpZHMgYW5kIHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5
IGFsbG9jYXRpb25zIGRvbmUuCgpTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJA
Z21haWwuY29tPgotLS0KIGxpYi91azlwLzlwZGV2LmMgICAgICAgICAgICAgICAgIHwgMTIxICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogbGliL3VrOXAvOXBmaWQuYyAg
ICAgICAgICAgICAgICAgfCAgNzEgKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91azlwL01h
a2VmaWxlLnVrICAgICAgICAgICAgIHwgICAxICsKIGxpYi91azlwL2V4cG9ydHN5bXMudWsgICAg
ICAgICAgIHwgICA5ICsrLQogbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oICAgICAgfCAgMjMg
KysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oIHwgIDIyICsrKysrKy0K
IGxpYi91azlwL2luY2x1ZGUvdWsvOXBmaWQuaCAgICAgIHwgMTE1ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMzU5IGluc2VydGlvbnMoKyks
IDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBmaWQuYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBmaWQuaAoKZGlmZiAtLWdpdCBh
L2xpYi91azlwLzlwZGV2LmMgYi9saWIvdWs5cC85cGRldi5jCmluZGV4IDc2YTJlMWRkOWQxMy4u
ZGJmMjFhYTZjNDczIDEwMDY0NAotLS0gYS9saWIvdWs5cC85cGRldi5jCisrKyBiL2xpYi91azlw
LzlwZGV2LmMKQEAgLTQ1LDExICs0NSw5MSBAQAogI2luY2x1ZGUgPHVrLzlwZGV2Lmg+CiAjaW5j
bHVkZSA8dWsvOXBkZXZfdHJhbnMuaD4KICNpbmNsdWRlIDx1ay85cHJlcS5oPgorI2luY2x1ZGUg
PHVrLzlwZmlkLmg+CiAjaWYgQ09ORklHX0xJQlVLU0NIRUQKICNpbmNsdWRlIDx1ay9zY2hlZC5o
PgogI2luY2x1ZGUgPHVrL3dhaXQuaD4KICNlbmRpZgogCitzdGF0aWMgaW50IF9maWRfbWdtdF9p
bml0KHN0cnVjdCB1a185cGRldl9maWRfbWdtdCAqZmlkX21nbXQpCit7CisJdWthcmNoX3NwaW5f
bG9ja19pbml0KCZmaWRfbWdtdC0+c3BpbmxvY2spOworCWZpZF9tZ210LT5uZXh0X2ZpZCA9IDA7
CisJVUtfSU5JVF9MSVNUX0hFQUQoJmZpZF9tZ210LT5maWRfZnJlZV9saXN0KTsKKwlVS19JTklU
X0xJU1RfSEVBRCgmZmlkX21nbXQtPmZpZF9hY3RpdmVfbGlzdCk7CisKKwlyZXR1cm4gMDsKK30K
Kworc3RhdGljIGludCBfZmlkX21nbXRfbmV4dF9maWRfbG9ja2VkKHN0cnVjdCB1a185cGRldl9m
aWRfbWdtdCAqZmlkX21nbXQsCisJCQkJc3RydWN0IHVrXzlwZGV2ICpkZXYsCisJCQkJc3RydWN0
IHVrXzlwZmlkICoqZmlkKQoreworCXN0cnVjdCB1a185cGZpZCAqcmVzdWx0ID0gTlVMTDsKKwor
CWlmICghdWtfbGlzdF9lbXB0eSgmZmlkX21nbXQtPmZpZF9mcmVlX2xpc3QpKSB7CisJCXJlc3Vs
dCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJmZpZF9tZ210LT5maWRfZnJlZV9saXN0LAorCQkJCXN0
cnVjdCB1a185cGZpZCwgX2xpc3QpOworCQl1a19saXN0X2RlbCgmcmVzdWx0LT5fbGlzdCk7CisJ
fSBlbHNlIHsKKwkJcmVzdWx0ID0gdWtfOXBmaWRfYWxsb2MoZGV2KTsKKwkJaWYgKCFyZXN1bHQp
CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJcmVzdWx0LT5maWQgPSBmaWRfbWdtdC0+bmV4dF9maWQr
KzsKKwl9CisKKwl1a19yZWZjb3VudF9pbml0KCZyZXN1bHQtPnJlZmNvdW50LCAxKTsKKwlyZXN1
bHQtPndhc19yZW1vdmVkID0gMDsKKwkqZmlkID0gcmVzdWx0OworCisJcmV0dXJuIDA7Cit9CisK
K3N0YXRpYyBpbnQgX2ZpZF9tZ210X2FkZF9maWRfbG9ja2VkKHN0cnVjdCB1a185cGRldl9maWRf
bWdtdCAqZmlkX21nbXQsCisJCQkJc3RydWN0IHVrXzlwZmlkICpmaWQpCit7CisJdWtfbGlzdF9h
ZGQoJmZpZC0+X2xpc3QsICZmaWRfbWdtdC0+ZmlkX2FjdGl2ZV9saXN0KTsKKworCXJldHVybiAw
OworfQorCitzdGF0aWMgdm9pZCBfZmlkX21nbXRfZGVsX2ZpZF9sb2NrZWQoc3RydWN0IHVrXzlw
ZGV2X2ZpZF9tZ210ICpmaWRfbWdtdCwKKwkJCQlzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJCQlp
bnQgbW92ZV90b19mcmVlbGlzdCkKK3sKKwl1a19saXN0X2RlbCgmZmlkLT5fbGlzdCk7CisKKwlp
ZiAobW92ZV90b19mcmVlbGlzdCkKKwkJdWtfbGlzdF9hZGQoJmZpZC0+X2xpc3QsICZmaWRfbWdt
dC0+ZmlkX2ZyZWVfbGlzdCk7CisJZWxzZSB7CisJCS8qCisJCSAqIEZyZWUgdGhlIG1lbW9yeSBh
c3NvY2lhdGVkLiBUaGlzIGZpZCB3aWxsIG5ldmVyIGJlIHVzZWQKKwkJICogYWdhaW4uCisJCSAq
LworCQl1a19wcl93YXJuKCJDb3VsZCBub3QgbW92ZSBmaWQgdG8gZnJlZWxpc3QsIGZyZWVpbmcg
bWVtb3J5LlxuIik7CisJCXVrX2ZyZWUoZmlkLT5fZGV2LT5hLCBmaWQpOworCX0KK30KKworc3Rh
dGljIHZvaWQgX2ZpZF9tZ210X2NsZWFudXAoc3RydWN0IHVrXzlwZGV2X2ZpZF9tZ210ICpmaWRf
bWdtdCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVjdCB1a185cGZpZCAqZmlkLCAq
ZmlkbjsKKworCXVrcGxhdF9zcGluX2xvY2tfaXJxc2F2ZSgmZmlkX21nbXQtPnNwaW5sb2NrLCBm
bGFncyk7CisJLyoKKwkgKiBFdmVyeSBmaWQgc2hvdWxkIGhhdmUgYmVlbiBjbHVua2VkICpiZWZv
cmUqIGRlc3Ryb3lpbmcgdGhlCisJICogY29ubmVjdGlvbi4KKwkgKi8KKwlVS19BU1NFUlQodWtf
bGlzdF9lbXB0eSgmZmlkX21nbXQtPmZpZF9hY3RpdmVfbGlzdCkpOworCXVrX2xpc3RfZm9yX2Vh
Y2hfZW50cnlfc2FmZShmaWQsIGZpZG4sICZmaWRfbWdtdC0+ZmlkX2ZyZWVfbGlzdCwKKwkJCV9s
aXN0KSB7CisJCXVrX2xpc3RfZGVsKCZmaWQtPl9saXN0KTsKKwkJdWtfZnJlZShmaWQtPl9kZXYt
PmEsIGZpZCk7CisJfQorCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZmaWRfbWdtdC0+
c3BpbmxvY2ssIGZsYWdzKTsKK30KKwogc3RhdGljIGludCBfcmVxX21nbXRfaW5pdChzdHJ1Y3Qg
dWtfOXBkZXZfcmVxX21nbXQgKnJlcV9tZ210KQogewogCXVrYXJjaF9zcGluX2xvY2tfaW5pdCgm
cmVxX21nbXQtPnNwaW5sb2NrKTsKQEAgLTEzMCwxNSArMjEwLDIxIEBAIHN0cnVjdCB1a185cGRl
diAqdWtfOXBkZXZfY29ubmVjdChjb25zdCBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnRyYW5zLAog
CWlmIChyYyA8IDApCiAJCWdvdG8gZnJlZV9kZXY7CiAKLQlyYyA9IGRldi0+b3BzLT5jb25uZWN0
KGRldiwgZGV2aWNlX2lkZW50aWZpZXIsIG1vdW50X2FyZ3MpOworCXJjID0gX2ZpZF9tZ210X2lu
aXQoJmRldi0+X2ZpZF9tZ210KTsKIAlpZiAocmMgPCAwKQogCQlnb3RvIGZyZWVfcmVxOwogCisJ
cmMgPSBkZXYtPm9wcy0+Y29ubmVjdChkZXYsIGRldmljZV9pZGVudGlmaWVyLCBtb3VudF9hcmdz
KTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIGZyZWVfZmlkOworCiAJVUtfQVNTRVJUKGRldi0+bXNp
emUgIT0gMCk7CiAKIAlkZXYtPnN0YXRlID0gVUtfOVBERVZfQ09OTkVDVEVEOwogCWdvdG8gb3V0
OwogCitmcmVlX2ZpZDoKKwlfZmlkX21nbXRfY2xlYW51cCgmZGV2LT5fZmlkX21nbXQpOwogZnJl
ZV9yZXE6CiAJX3JlcV9tZ210X2NsZWFudXAoJmRldi0+X3JlcV9tZ210KTsKIGZyZWVfZGV2OgpA
QCAtMTU5LDYgKzI0NSw3IEBAIGludCB1a185cGRldl9kaXNjb25uZWN0KHN0cnVjdCB1a185cGRl
diAqZGV2KQogCWRldi0+c3RhdGUgPSBVS185UERFVl9ESVNDT05ORUNUSU5HOwogCiAJLyogQ2xl
YW4gdXAgdGhlIHJlcXVlc3RzIGJlZm9yZSBjbG9zaW5nIHRoZSBjaGFubmVsLiAqLworCV9maWRf
bWdtdF9jbGVhbnVwKCZkZXYtPl9maWRfbWdtdCk7CiAJX3JlcV9tZ210X2NsZWFudXAoJmRldi0+
X3JlcV9tZ210KTsKIAogCXJjID0gZGV2LT5vcHMtPmRpc2Nvbm5lY3QoZGV2KTsKQEAgLTMyMCw2
ICs0MDcsMzggQEAgaW50IHVrXzlwZGV2X3JlcV9yZW1vdmUoc3RydWN0IHVrXzlwZGV2ICpkZXYs
IHN0cnVjdCB1a185cHJlcSAqcmVxKQogCXJldHVybiB1a185cHJlcV9wdXQocmVxKTsKIH0KIAor
c3RydWN0IHVrXzlwZmlkICp1a185cGRldl9maWRfY3JlYXRlKHN0cnVjdCB1a185cGRldiAqZGV2
KQoreworCXN0cnVjdCB1a185cGZpZCAqZmlkID0gTlVMTDsKKwlpbnQgcmMgPSAwOworCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7CisKKwl1a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+X2ZpZF9t
Z210LnNwaW5sb2NrLCBmbGFncyk7CisJcmMgPSBfZmlkX21nbXRfbmV4dF9maWRfbG9ja2VkKCZk
ZXYtPl9maWRfbWdtdCwgZGV2LCAmZmlkKTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKwor
CXJjID0gX2ZpZF9tZ210X2FkZF9maWRfbG9ja2VkKCZkZXYtPl9maWRfbWdtdCwgZmlkKTsKKwlp
ZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworb3V0OgorCXVrcGxhdF9zcGluX3VubG9ja19pcnFy
ZXN0b3JlKCZkZXYtPl9maWRfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCWlmIChyYyA9PSAwKQor
CQlyZXR1cm4gZmlkOworCXJldHVybiBFUlIyUFRSKHJjKTsKK30KKwordm9pZCB1a185cGRldl9m
aWRfcmVsZWFzZShzdHJ1Y3QgdWtfOXBmaWQgKmZpZCkKK3sKKwlzdHJ1Y3QgdWtfOXBkZXYgKmRl
diA9IGZpZC0+X2RldjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJdWtwbGF0X3NwaW5fbG9j
a19pcnFzYXZlKCZkZXYtPl9maWRfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCV9maWRfbWdtdF9k
ZWxfZmlkX2xvY2tlZCgmZGV2LT5fZmlkX21nbXQsIGZpZCwgMSk7CisJdWtwbGF0X3NwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJmRldi0+X2ZpZF9tZ210LnNwaW5sb2NrLCBmbGFncyk7Cit9CisKIHZv
aWQgdWtfOXBkZXZfYWRqdXN0X21zaXplKHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50MzJfdCBt
c2l6ZSkKIHsKIAlkZXYtPm1zaXplID0gTUlOKGRldi0+bXNpemUsIG1zaXplKTsKZGlmZiAtLWdp
dCBhL2xpYi91azlwLzlwZmlkLmMgYi9saWIvdWs5cC85cGZpZC5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODVkMTRjNjYwNzhhCi0tLSAvZGV2L251bGwKKysrIGIv
bGliL3VrOXAvOXBmaWQuYwpAQCAtMCwwICsxLDcxIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jp
c3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8K
KworI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CisjaW5j
bHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRlIDx1ay85cGRldi5oPgorI2luY2x1ZGUgPHVrLzlw
ZmlkLmg+CisKK3N0cnVjdCB1a185cGZpZCAqdWtfOXBmaWRfYWxsb2Moc3RydWN0IHVrXzlwZGV2
ICpkZXYpCit7CisJc3RydWN0IHVrXzlwZmlkICpmaWQ7CisKKwlmaWQgPSB1a19jYWxsb2MoZGV2
LT5hLCAxLCBzaXplb2YoKmZpZCkpOworCWlmIChmaWQgPT0gTlVMTCkKKwkJZ290byBvdXQ7CisK
KwlmaWQtPl9kZXYgPSBkZXY7CisKKwlyZXR1cm4gZmlkOworCitvdXQ6CisJcmV0dXJuIE5VTEw7
Cit9CisKK3ZvaWQgdWtfOXBmaWRfZ2V0KHN0cnVjdCB1a185cGZpZCAqZmlkKQoreworCXVrX3Jl
ZmNvdW50X2FjcXVpcmUoJmZpZC0+cmVmY291bnQpOworfQorCitpbnQgdWtfOXBmaWRfcHV0KHN0
cnVjdCB1a185cGZpZCAqZmlkKQoreworCWludCBsYXN0OworCisJbGFzdCA9IHVrX3JlZmNvdW50
X3JlbGVhc2UoJmZpZC0+cmVmY291bnQpOworCWlmIChsYXN0KQorCQl1a185cGRldl9maWRfcmVs
ZWFzZShmaWQpOworCisJcmV0dXJuIGxhc3Q7Cit9CmRpZmYgLS1naXQgYS9saWIvdWs5cC9NYWtl
ZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCmluZGV4IDM0Y2M5ODdhMmY5Yy4uY2Q0YmY0
YjhhMDMzIDEwMDY0NAotLS0gYS9saWIvdWs5cC9NYWtlZmlsZS51aworKysgYi9saWIvdWs5cC9N
YWtlZmlsZS51awpAQCAtNiwzICs2LDQgQEAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJ
CSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUKIExJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5
UF9CQVNFKS85cGRldl90cmFucy5jCiBMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkv
OXByZXEuYwogTElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2LmMKK0xJQlVL
OVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cGZpZC5jCmRpZmYgLS1naXQgYS9saWIvdWs5
cC9leHBvcnRzeW1zLnVrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awppbmRleCBjMzczMzA4ZmIw
YTIuLjVjZDc4MTdiZjVjOCAxMDA2NDQKLS0tIGEvbGliL3VrOXAvZXhwb3J0c3ltcy51aworKysg
Yi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCkBAIC0xLDYgKzEsNyBAQAogdWtfOXBkZXZfdHJhbnNf
cmVnaXN0ZXIKIHVrXzlwZGV2X3RyYW5zX2J5X25hbWUKIHVrXzlwZGV2X3RyYW5zX2RlZmF1bHQK
KwogdWtfOXByZXFfZ2V0CiB1a185cHJlcV9wdXQKIHVrXzlwcmVxX3ZzZXJpYWxpemUKQEAgLTEy
LDEyICsxMywxOCBAQCB1a185cHJlcV9jb3B5X2Zyb20KIHVrXzlwcmVxX3JlY2VpdmVfY2IKIHVr
XzlwcmVxX3dhaXRyZXBseQogdWtfOXByZXFfZXJyb3IKKwogdWtfOXBkZXZfY29ubmVjdAogdWtf
OXBkZXZfZGlzY29ubmVjdAogdWtfOXBkZXZfcmVxdWVzdAogdWtfOXBkZXZfeG1pdF9yZWFkeQog
dWtfOXBkZXZfY2FsbAordWtfOXBkZXZfYWRqdXN0X21zaXplCisKIHVrXzlwZGV2X3JlcV9jcmVh
dGUKIHVrXzlwZGV2X3JlcV9sb29rdXAKIHVrXzlwZGV2X3JlcV9yZW1vdmUKLXVrXzlwZGV2X2Fk
anVzdF9tc2l6ZQorCit1a185cGRldl9maWRfY3JlYXRlCit1a185cGZpZF9nZXQKK3VrXzlwZmlk
X3B1dApkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oIGIvbGliL3VrOXAv
aW5jbHVkZS91ay85cGRldi5oCmluZGV4IGYyMjEwYmJmZmM5Mi4uYjhmNDAwY2VhNzEwIDEwMDY0
NAotLS0gYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2LmgKKysrIGIvbGliL3VrOXAvaW5jbHVk
ZS91ay85cGRldi5oCkBAIC0xNzIsNiArMTcyLDI5IEBAIHN0cnVjdCB1a185cHJlcSAqdWtfOXBk
ZXZfcmVxX2xvb2t1cChzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgdWludDE2X3QgdGFnKTsKIGludCB1
a185cGRldl9yZXFfcmVtb3ZlKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXByZXEg
KnJlcSk7CiAKIC8qKgorICogQ3JlYXRlcyBhIEZJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVu
IDlQIGRldmljZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZp
Y2UuCisgKiBAcmV0dXJuCisgKiAgIElmIG5vdCBhbiBlcnJvciBwb2ludGVyLCB0aGUgY3JlYXRl
ZCBmaWQuCisgKiAgIE90aGVyd2lzZSwgdGhlIGVycm9yIGluIGNyZWF0aW5nIHRoZSBmaWQ6Cisg
KiAgIC0gRU5PTUVNOiBObyBtZW1vcnkgZm9yIHRoZSByZXF1ZXN0IG9yIG5vIGF2YWlsYWJsZSB0
YWdzLgorICovCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwZGV2X2ZpZF9jcmVhdGUoc3RydWN0IHVr
XzlwZGV2ICpkZXYpOworCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVsZWFzZXMgYSBGSUQgd2hl
biBpdHMgcmVmZXJlbmNlIGNvdW50IGdvZXMgdG8gMC4KKyAqCisgKiBTaG91bGQgbm90IGJlIGNh
bGxlZCBkaXJlY3RseSwgYnV0IHJhdGhlciB2aWEgdWtfOXBmaWRfcHV0KCkuCisgKgorICogQHBh
cmFtIGZpZAorICogICBUaGUgRklEIHRvIGJlIHJlbGVhc2VkLgorICovCit2b2lkIHVrXzlwZGV2
X2ZpZF9yZWxlYXNlKHN0cnVjdCB1a185cGZpZCAqZmlkKTsKKworLyoqCiAgKiBBZGp1c3RzIHRo
ZSBtZXNzYWdlIHNpemUgdG8gdGhlIGdpdmVuIG1heGltdW0gc2l6ZS4KICAqCiAgKiBAcGFyYW0g
ZGV2CmRpZmYgLS1naXQgYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaCBiL2xpYi91
azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oCmluZGV4IGQ3ZWYzNDFlMTJkNi4uMWM0OTQ3MzIz
MzdhIDEwMDY0NAotLS0gYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaAorKysgYi9s
aWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaApAQCAtMTI0LDYgKzEyNCwyNCBAQCBzdHJ1
Y3QgdWtfOXBkZXZfcmVxX21nbXQgewogCiAvKioKICAqIEBpbnRlcm5hbAorICogQSBzdHJ1Y3R1
cmUgdXNlZCB0byBkZXNjcmliZSB0aGUgYXZhaWxhYmlsaXR5IG9mIDlQIGZpZHMuCisgKi8KK3N0
cnVjdCB1a185cGRldl9maWRfbWdtdCB7CisJLyogU3BpbmxvY2sgcHJvdGVjdGluZyBmaWRzLiAq
LworCXNwaW5sb2NrX3QJCQlzcGlubG9jazsKKwkvKiBOZXh0IGF2YWlsYWJsZSBmaWQuICovCisJ
dWludDMyX3QJCQluZXh0X2ZpZDsKKwkvKiBGcmVlLWxpc3Qgb2YgZmlkcyB0aGF0IGNhbiBiZSBy
ZXVzZWQuICovCisJc3RydWN0IHVrX2xpc3RfaGVhZAkJZmlkX2ZyZWVfbGlzdDsKKwkvKgorCSAq
IExpc3Qgb2YgZmlkcyB0aGF0IGFyZSBjdXJyZW50bHkgYWN0aXZlLCB0byBiZSBjbHVua2VkIGF0
IHRoZSBlbmQgb2YKKwkgKiBhIDlwZnMgc2Vzc2lvbi4KKwkgKi8KKwlzdHJ1Y3QgdWtfbGlzdF9o
ZWFkCQlmaWRfYWN0aXZlX2xpc3Q7Cit9OworCisvKioKKyAqIEBpbnRlcm5hbAogICogOVBERVYg
dHJhbnNwb3J0IHN0YXRlCiAgKgogICogLSBDT05ORUNURUQ6IERlZmF1bHQgc3RhdGUgYWZ0ZXIg
aW5pdGlhbGl6YXRpb24gYW5kIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLgpAQCAtMTUwLDcgKzE2
OCw5IEBAIHN0cnVjdCB1a185cGRldiB7CiAJLyogTWF4aW11bSBzaXplIG9mIGEgbWVzc2FnZS4g
Ki8KIAl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG1zaXplOwogCS8qIFRyYW5zcG9y
dC1hbGxvY2F0ZWQgZGF0YS4gKi8KLQl2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICpw
cml2OworCXZvaWQJCQkJKnByaXY7CisJLyogQGludGVybmFsIEZpZCBtYW5hZ2VtZW50LiAqLwor
CXN0cnVjdCB1a185cGRldl9maWRfbWdtdAlfZmlkX21nbXQ7CiAJLyogQGludGVybmFsIFJlcXVl
c3QgbWFuYWdlbWVudC4gKi8KIAlzdHJ1Y3QgdWtfOXBkZXZfcmVxX21nbXQgICAgICAgIF9yZXFf
bWdtdDsKICNpZiBDT05GSUdfTElCVUtTQ0hFRApkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVk
ZS91ay85cGZpZC5oIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2VjNzViYjRhNTA4Ci0tLSAvZGV2L251bGwKKysr
IGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oCkBAIC0wLDAgKzEsMTE1IEBACisvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jp
c3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTks
IFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElO
IEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1VLXzlQRklEX18KKyNkZWZpbmUgX19VS185UEZJ
RF9fCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNs
dWRlIDx1ay9jb25maWcuaD4KKyNpbmNsdWRlIDx1ay85cF9jb3JlLmg+CisjaW5jbHVkZSA8dWsv
YWxsb2MuaD4KKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5o
PgorI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIG1hbmFnZWQg
ZmlkIHZpYSByZWZlcmVuY2UgY291bnRpbmcuCisgKi8KK3N0cnVjdCB1a185cGZpZCB7CisJLyog
RmlkIG51bWJlci4gKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICBmaWQ7CisJLyogQXNzb2Np
YXRlZCBzZXJ2ZXIgcWlkLiAqLworCXN0cnVjdCB1a185cF9xaWQgICAgICAgIHFpZDsKKwkvKiBJ
L08gdW5pdC4gKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICBpb3VuaXQ7CisJLyoKKwkgKiBJ
ZiByZW1vdmVkLCBubyBjbHVuayBpcyBuZWNlc3NhcnksIGFzIHRoZSByZW1vdmUgb3BlcmF0aW9u
CisJICogaW1wbGljaXRseSBjbHVua3MgdGhlIGZpZC4KKwkgKi8KKwlib29sIHdhc19yZW1vdmVk
OworCS8qIFRyYWNrcyB0aGUgbnVtYmVyIG9mIGxpdmUgcmVmZXJlbmNlcy4gKi8KKwlfX2F0b21p
YyAgICAgICAgICAgICAgICByZWZjb3VudDsKKwkvKiBAaW50ZXJuYWwgQXNzb2NpYXRlZCA5UCBk
ZXZpY2UuICovCisJc3RydWN0IHVrXzlwZGV2ICAgICAgICAgKl9kZXY7CisJLyoKKwkgKiBAaW50
ZXJuYWwKKwkgKiBMaXN0IG9uIHdoaWNoIHRoaXMgZmlkIGN1cnJlbnRseSBpcy4gU2VlIHVrXzlw
ZGV2X2ZpZF9tZ210IGZvcgorCSAqIGRldGFpbHMuCisJICovCisJc3RydWN0IHVrX2xpc3RfaGVh
ZCAgICAgX2xpc3Q7Cit9OworCisvKioKKyAqIEBpbnRlcm5hbAorICogQWxsb2NhdGVzIGEgOXAg
ZmlkLgorICogU2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LCB1c2UgdWtfOXBkZXZfZmlkX2Ny
ZWF0ZSgpIGluc3RlYWQuCisgKgorICogQHBhcmFtIGEKKyAqICAgQWxsb2NhdG9yIHRvIHVzZS4K
KyAqIEByZXR1cm4KKyAqICAgLSBOVUxMOiBPdXQgb2YgbWVtb3J5LgorICogICAtICghPU5VTEwp
OiBTdWNjZXNzZnVsLgorICovCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwZmlkX2FsbG9jKHN0cnVj
dCB1a185cGRldiAqZGV2KTsKKworLyoqCisgKiBHZXRzIHRoZSA5cCBmaWQsIGluY3JlbWVudGlu
ZyB0aGUgcmVmZXJlbmNlIGNvdW50LgorICoKKyAqIEBwYXJhbSBmaWQKKyAqICAgUmVmZXJlbmNl
IHRvIHRoZSA5cCBmaWQuCisgKi8KK3ZvaWQgdWtfOXBmaWRfZ2V0KHN0cnVjdCB1a185cGZpZCAq
ZmlkKTsKKworLyoqCisgKiBQdXRzIHRoZSA5cCBmaWQsIGRlY3JlbWVudGluZyB0aGUgcmVmZXJl
bmNlIGNvdW50LgorICogSWYgdGhpcyB3YXMgdGhlIGxhc3QgbGl2ZSByZWZlcmVuY2UsIHRoZSBt
ZW1vcnkgd2lsbCBiZSBmcmVlZC4KKyAqCisgKiBAcGFyYW0gZmlkCisgKiAgIFJlZmVyZW5jZSB0
byB0aGUgOXAgZmlkLgorICogQHJldHVybgorICogICAtIDA6IFRoaXMgd2FzIG5vdCB0aGUgbGFz
dCBsaXZlIHJlZmVyZW5jZS4KKyAqICAgLSAxOiBUaGlzIHdhcyB0aGUgbGFzdCBsaXZlIHJlZmVy
ZW5jZS4KKyAqLworaW50IHVrXzlwZmlkX3B1dChzdHJ1Y3QgdWtfOXBmaWQgKmZpZCk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1VLXzlQRklEX18gKi8K
LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUdf-0007qw-Jd; Wed, 19 Jun 2019 07:04:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdf-0007qZ-25
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:11 +0000
X-Inumbo-ID: 6f5e828d-9260-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6f5e828d-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:10 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id d18so2075406wrs.5
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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=acci4iPgGuEuJj4qY9+8kpvC7fy65CdBpSqrejAPjvQ=;
 b=nXiBWznK6PlL7i25XrhghW0xzI8XXxO0PkpFI5VdOWuV9c+JzoRib3ZKnhC3zFYJry
 3IRjDvFwDtltljkcE0OXLciYEtc6e8K4JviE3FZkByHvkHTgyjVKxc4DkAsDILJFvdZr
 4Br6POmqq2WiBHk4LVikKF+mq8NJ/ForjORsQztMOZM+imw6S/jmIE6wDzBwHeJYf94X
 3Q2VsQIsEfpyRFUvc6FmViLG84dL0n3viO4kZ0ENkT8mKGzNppCvZytS4tO7urKJwjCt
 U3dvMbAOvEZ1ELFvnyXXYePvKQLLtWwhjPKs/42zomhOx6/vt3a3euqTige2t183nGcj
 5zew==
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=acci4iPgGuEuJj4qY9+8kpvC7fy65CdBpSqrejAPjvQ=;
 b=GEp9bsae9zfLyzhr+SfibOn7GaZbKPXSJlN/4LVAlPjZLkDMhE1hKuqSpxL4eakMnn
 0sFJ6va5oQA6gK0Y5p3LqXQsMh46Uox/KpzBZRs+Rm5kE9HpPlO0d7ERcpmONiao2Nmf
 hcJwykITZHQuZVh5EKiy28sH0RTExBtAOsuQ53qIsntitSFMZPIwWbMhkggNwwoKkJ4Y
 4Wv9Zvfj2NV12kdPrbZh1IFCH/OeT3EzEIAAKIYWYaBYJXXeA0huyG7BBc0Oum6YJ72b
 Wb7YGaaesO0EMr/GU12ZivafXEM+ZOyzgHjO+sy+hT+YJO+o7UObwhjOht5jZ4+hJxw9
 QQ/A==
X-Gm-Message-State: APjAAAXKuBmU6L3twp93YuqbTgTIK8p5AVrjIDyQJGpkL+IGpj0AXzBk
 94sNlR/j9tTanQrbTMTxtDKL7Wh1dGc=
X-Google-Smtp-Source: APXvYqwkYZKl8L1n/aeVk0KD3SqoL1ohB/6EpFEpRhjnqdMAoT1nMSBVFBMxoraKWUbiJsuPFZuXPw==
X-Received: by 2002:a5d:528d:: with SMTP id c13mr26597669wrv.247.1560927848926; 
 Wed, 19 Jun 2019 00:04:08 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.08
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:08 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:15 +0300
Message-Id: <20190619070315.9765-9-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 8/8] lib/uk9p: Clunk fids on fid
 release
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

T24gZmlkIHJlbGVhc2UsIHRoZSA5cCBzZXJ2ZXIgaXMgc2VudCBhIGNsdW5rIG1lc3NhZ2UgdG8g
ZGlzYXNzb2NpYXRlCnRoZSBmaWQgZnJvbSBpdHMgcHJldmlvdXMgYXNzb2NpYXRpb24sIHN1Y2gg
dGhhdCBpdCBoYXMgYSBjbGVhbiBzbGF0ZQpvbiBib3RoIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGll
bnQgd2hlbiBpdCB3aWxsIGV2ZW50dWFsbHkgYmUgcmV1c2VkLgoKU2lnbmVkLW9mZi1ieTogQ3Jp
c3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KLS0tCiBsaWIvdWs5cC85cGRldi5jIHwgMTkg
KysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXBkZXYuYyBiL2xpYi91azlwLzlw
ZGV2LmMKaW5kZXggZGJmMjFhYTZjNDczLi44MmQwNzQ3NGQ5YzQgMTAwNjQ0Ci0tLSBhL2xpYi91
azlwLzlwZGV2LmMKKysrIGIvbGliL3VrOXAvOXBkZXYuYwpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgPHVrL2JpdG1hcC5oPgogI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CiAjaW5jbHVkZSA8
dWsvd2FpdC5oPgorI2luY2x1ZGUgPHVrLzlwLmg+CiAjaW5jbHVkZSA8dWsvOXBkZXYuaD4KICNp
bmNsdWRlIDx1ay85cGRldl90cmFucy5oPgogI2luY2x1ZGUgPHVrLzlwcmVxLmg+CkBAIC05NSw3
ICs5Niw3IEBAIHN0YXRpYyBpbnQgX2ZpZF9tZ210X2FkZF9maWRfbG9ja2VkKHN0cnVjdCB1a185
cGRldl9maWRfbWdtdCAqZmlkX21nbXQsCiAKIHN0YXRpYyB2b2lkIF9maWRfbWdtdF9kZWxfZmlk
X2xvY2tlZChzdHJ1Y3QgdWtfOXBkZXZfZmlkX21nbXQgKmZpZF9tZ210LAogCQkJCXN0cnVjdCB1
a185cGZpZCAqZmlkLAotCQkJCWludCBtb3ZlX3RvX2ZyZWVsaXN0KQorCQkJCWJvb2wgbW92ZV90
b19mcmVlbGlzdCkKIHsKIAl1a19saXN0X2RlbCgmZmlkLT5fbGlzdCk7CiAKQEAgLTQzMyw5ICs0
MzQsMjMgQEAgdm9pZCB1a185cGRldl9maWRfcmVsZWFzZShzdHJ1Y3QgdWtfOXBmaWQgKmZpZCkK
IHsKIAlzdHJ1Y3QgdWtfOXBkZXYgKmRldiA9IGZpZC0+X2RldjsKIAl1bnNpZ25lZCBsb25nIGZs
YWdzOworCWJvb2wgbW92ZV90b19mcmVlbGlzdCA9IGZhbHNlOworCWludCByYzsKIAorCS8qIEZp
cnN0IGNsdW5rIHRoZSBmaWQuICovCisJcmMgPSB1a185cF9kb19jbHVuayhmaWQtPl9kZXYsIGZp
ZCk7CisJaWYgKHJjIDwgMCkgeworCQl1a19wcl93YXJuKCJDb3VsZCBub3QgY2x1bmsgZmlkICVk
OiAlZFxuIiwgZmlkLT5maWQsIHJjKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogSWYgc3VjY2Vz
c2Z1bGx5IGNsdW5rZWQsIG1vdmUgaXQgdG8gYSBmcmVlbGlzdC4gKi8KKwltb3ZlX3RvX2ZyZWVs
aXN0ID0gdHJ1ZTsKKworb3V0OgorCS8qIFRoZW4gcmVtb3ZlIGl0IGZyb20gYW55IGludGVybmFs
IGRhdGEgc3RydWN0dXJlcy4gKi8KIAl1a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+X2Zp
ZF9tZ210LnNwaW5sb2NrLCBmbGFncyk7Ci0JX2ZpZF9tZ210X2RlbF9maWRfbG9ja2VkKCZkZXYt
Pl9maWRfbWdtdCwgZmlkLCAxKTsKKwlfZmlkX21nbXRfZGVsX2ZpZF9sb2NrZWQoJmRldi0+X2Zp
ZF9tZ210LCBmaWQsIG1vdmVfdG9fZnJlZWxpc3QpOwogCXVrcGxhdF9zcGluX3VubG9ja19pcnFy
ZXN0b3JlKCZkZXYtPl9maWRfbWdtdC5zcGlubG9jaywgZmxhZ3MpOwogfQogCi0tIAoyLjExLjAK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:04:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:04: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 1hdUdg-0007rh-MZ; Wed, 19 Jun 2019 07:04:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUdf-0007qk-Bo
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:04:11 +0000
X-Inumbo-ID: 6efaf955-9260-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6efaf955-9260-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:04:09 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n4so2087267wrs.3
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:04: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=YpKcbdoG4a4sSA5G5tkhdOzBsn5uSiZl4WE9+UECrlY=;
 b=BTpr+4T5oRPmYLA01GDn30P31SLOBIUMFwU4ZCBDBN1k0YaxvZGZzE1zyGM/8P32KE
 KsGaKaDs12siWAt+vQ6quzjufsOFdGGf9JSmQBXYC1RE3V5WKVelGdcjh9a9alJHk5fS
 zjIsmccFhlBVY6W6l03GhNGjnfGDxPe2tPMr0t4c59Sx4afO+qGlAQTx6LQu5F8eDu4T
 tk8vuJrCq6PTfVBFOZwKDSfFaLftx5lIpYxyTn0mEqUT+Awi0eF9RVWnvD7fKo6pzd+J
 brbim4v+2byr9NREgT+CUmZ0S38BE/I16M3Xjy+R5+nzV7wz/qW9sq0pG12+uWRjqLqa
 6mew==
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=YpKcbdoG4a4sSA5G5tkhdOzBsn5uSiZl4WE9+UECrlY=;
 b=Xh6IHUngoBAptINPs4W5vgEyTjUM2YNHwK8y02w+HMu7TB+4ME7ViaPDI5LTU2Iodv
 2/0Cwf4TdDGXnR5GxpYGHDiG/LraA/FAgpmGa+wbhgRjLdWDRGS0vsaKlhkKhPOMG4Gz
 Il39108Oj6Ug2aTx3Ht4deCcbfqaIrUXueH0wj4skgwZvGDZB8awuP1/G1AsWr4XIi5c
 Wb6whAXEoquByQ9qrHHPX21uYG6TM8wOnFgXrxQ362QQozqtYyhY3kqrT5Be+VK1/8Su
 IhjarJNUZGx87V/iRcNzC5CtUAI5qKYgGfzfa+I1qzuN8IHQPY6W9k80q8TRzbID9OEg
 t1KA==
X-Gm-Message-State: APjAAAUS8mSmCEggpw2/0FtzJBAoXMDA53yKwP+O9Z4e6kTQ7lN++GnD
 hLK/AXJllyTk3a9Xu7fCnWdo3YA6uAM=
X-Google-Smtp-Source: APXvYqxtX7iIxz1iqgau8TBEmxJMSjKYWiQQyxF9xjJs+KuFTvc3KGOjPIaxj7+PKo5lWvBzi7fNwA==
X-Received: by 2002:a5d:4e50:: with SMTP id r16mr33754772wrt.227.1560927847978; 
 Wed, 19 Jun 2019 00:04:07 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id w23sm446156wmi.45.2019.06.19.00.04.07
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:04:07 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:03:14 +0300
Message-Id: <20190619070315.9765-8-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
References: <20190619070315.9765-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 7/8] lib/uk9p: Add 9P helper API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, costin.lupu@cs.pub.ro,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFuIEFQSSBmb3IgdGhlIG9wZXJhdGlvbnMgc3VwcG9ydGVk
IGJ5IHRoZSA5UApwcm90b2NvbC4gRWFjaCBzdXBwb3J0ZWQgbWVzc2FnZSB0eXBlIGhhcyBhbiBh
c3NvY2lhdGVkIGZ1bmN0aW9uIHdpdGgKd2hpY2ggdG8gbWFrZSByZXF1ZXN0cy4KClNpZ25lZC1v
ZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Ci0tLQogbGliL3VrOXAvOXAu
YyAgICAgICAgICAgIHwgNDIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiBsaWIvdWs5cC9NYWtlZmlsZS51ayAgICAgfCAgIDEgKwogbGliL3VrOXAvZXhw
b3J0c3ltcy51ayAgIHwgIDEzICsrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwLmggfCAyNjAgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNjk3IGluc2VydGlv
bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC85cC5jCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cC5oCgpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXAuYyBi
L2xpYi91azlwLzlwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4z
ODc1MWIwMzE4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdWs5cC85cC5jCkBAIC0wLDAgKzEs
NDIzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgor
ICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVE
IE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgor
I2luY2x1ZGUgPHVrL2Fzc2VydC5oPgorI2luY2x1ZGUgPHVrL2VycnB0ci5oPgorI2luY2x1ZGUg
PHVrLzlwLmg+CisjaW5jbHVkZSA8dWsvOXBkZXYuaD4KKyNpbmNsdWRlIDx1ay85cHJlcS5oPgor
I2luY2x1ZGUgPHVrLzlwZmlkLmg+CisKK3N0cnVjdCB1a185cHJlcSAqdWtfOXBfZG9fdmVyc2lv
bihzdHJ1Y3QgdWtfOXBkZXYgKmRldiwKKwkJY29uc3QgY2hhciAqcmVxdWVzdGVkLCBzdHJ1Y3Qg
dWtfOXBfc3RyICpyZWNlaXZlZCkKK3sKKwlzdHJ1Y3QgdWtfOXBfc3RyIHJlcXVlc3RlZF9zdHI7
CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJaW50IHJjOworCXVpbnQzMl90IG5ld19tc2l6ZTsK
KworCXVrXzlwX3N0cl9pbml0KCZyZXF1ZXN0ZWRfc3RyLCByZXF1ZXN0ZWQpOworCisJdWtfcHJf
ZGVidWcoInVrOXA6IFRWRVJTSU9OIG1zaXplICV1IHZlcnNpb24gJXNcbiIsCisJCQlkZXYtPm1z
aXplLCByZXF1ZXN0ZWQpOworCisJcmVxID0gdWtfOXBkZXZfY2FsbChkZXYsIFVLXzlQX1RWRVJT
SU9OLCBfX1BBR0VfU0laRSwgImRzIiwKKwkJCWRldi0+bXNpemUsICZyZXF1ZXN0ZWRfc3RyKTsK
KwlpZiAoUFRSSVNFUlIocmVxKSkKKwkJcmV0dXJuIHJlcTsKKworCXJjID0gdWtfOXByZXFfZGVz
ZXJpYWxpemUocmVxLCAiZHMiLCAmbmV3X21zaXplLCByZWNlaXZlZCk7CisKKwlpZiAocmMpCisJ
CXJldHVybiBFUlIyUFRSKHJjKTsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBSVkVSU0lPTiBtc2l6
ZSAldSB2ZXJzaW9uICUuKnNcbiIsIG5ld19tc2l6ZSwKKwkJCXJlY2VpdmVkLT5zaXplLCByZWNl
aXZlZC0+ZGF0YSk7CisKKwl1a185cGRldl9hZGp1c3RfbXNpemUoZGV2LCBuZXdfbXNpemUpOwor
CXJldHVybiByZXE7Cit9CisKK3N0cnVjdCB1a185cGZpZCAqdWtfOXBfZG9fYXR0YWNoKHN0cnVj
dCB1a185cGRldiAqZGV2LCB1aW50MzJfdCBhZmlkLAorCQljb25zdCBjaGFyICp1bmFtZSwgY29u
c3QgY2hhciAqYW5hbWUsIHVpbnQzMl90IG5fdW5hbWUpCit7CisJc3RydWN0IHVrXzlwcmVxICpy
ZXE7CisJc3RydWN0IHVrXzlwZmlkICpmaWQ7CisJc3RydWN0IHVrXzlwX3N0ciB1bmFtZV9zdHI7
CisJc3RydWN0IHVrXzlwX3N0ciBhbmFtZV9zdHI7CisJaW50IHJjOworCisJdWtfOXBfc3RyX2lu
aXQoJnVuYW1lX3N0ciwgdW5hbWUpOworCXVrXzlwX3N0cl9pbml0KCZhbmFtZV9zdHIsIGFuYW1l
KTsKKworCWZpZCA9IHVrXzlwZGV2X2ZpZF9jcmVhdGUoZGV2KTsKKwlpZiAoUFRSSVNFUlIoZmlk
KSkKKwkJcmV0dXJuIGZpZDsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBUQVRUQUNIIGZpZCAldSBh
ZmlkICV1IHVuYW1lICVzIGFuYW1lICVzIG5fdW5hbWUgJXVcbiIsCisJCQlmaWQtPmZpZCwgYWZp
ZCwgdW5hbWUsIGFuYW1lLCBuX3VuYW1lKTsKKworCXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBV
S185UF9UQVRUQUNILCBfX1BBR0VfU0laRSwgImRkc3NkIiwKKwkJCWZpZC0+ZmlkLCBhZmlkLCAm
dW5hbWVfc3RyLCAmYW5hbWVfc3RyLCBuX3VuYW1lKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkgewor
CQl1a185cGRldl9maWRfcmVsZWFzZShmaWQpOworCQlyZXR1cm4gKHZvaWQgKilyZXE7CisJfQor
CisJcmMgPSB1a185cHJlcV9kZXNlcmlhbGl6ZShyZXEsICJRIiwgJmZpZC0+cWlkKTsKKwl1a185
cGRldl9yZXFfcmVtb3ZlKGRldiwgcmVxKTsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBSQVRUQUNI
IHFpZCB0eXBlICV1IHZlcnNpb24gJXUgcGF0aCAlbHVcbiIsCisJCQlmaWQtPnFpZC50eXBlLCBm
aWQtPnFpZC52ZXJzaW9uLCBmaWQtPnFpZC5wYXRoKTsKKworCWlmIChyYyA8IDApIHsKKwkJdWtf
OXBkZXZfZmlkX3JlbGVhc2UoZmlkKTsKKwkJcmV0dXJuIEVSUjJQVFIocmMpOworCX0KKworCXJl
dHVybiBmaWQ7Cit9CisKK2ludCB1a185cF9kb19mbHVzaChzdHJ1Y3QgdWtfOXBkZXYgKmRldiwg
dWludDE2X3Qgb2xkdGFnKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCisJdWtfcHJfZGVi
dWcoInVrOXA6IFRGTFVTSCBvbGR0YWcgJXVcbiIsIG9sZHRhZyk7CisJcmVxID0gdWtfOXBkZXZf
Y2FsbChkZXYsIFVLXzlQX1RGTFVTSCwgX19QQUdFX1NJWkUsICJ3Iiwgb2xkdGFnKTsKKwlpZiAo
UFRSSVNFUlIocmVxKSkKKwkJcmV0dXJuIFBUUjJFUlIocmVxKTsKKworCXVrX3ByX2RlYnVnKCJ1
azlwOiBSRkxVU0hcbiIpOworCXVrXzlwZGV2X3JlcV9yZW1vdmUoZGV2LCByZXEpOworCisJcmV0
dXJuIDA7Cit9CisKKyNpZiAwCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwX2RvX3dhbGtfbWFueShz
dHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwZmlkICpmaWQsCisJCWNvbnN0IGNoYXIg
Kip3bmFtZSwgaW50IG53bmFtZSkKK3sKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKwlzdHJ1Y3Qg
dWtfOXBmaWQgKmZpZDsKK30KKyNlbmRpZgorCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwX2RvX3dh
bGsoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQljb25zdCBj
aGFyICpuYW1lKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCXN0cnVjdCB1a185cGZpZCAq
bmV3ZmlkOworCXN0cnVjdCB1a185cF9zdHIgbmFtZV9zdHI7CisJdWludDE2X3QgbndxaWQ7CisJ
dWludDE2X3QgbnduYW1lOworCWludCByYzsKKworCXVrXzlwX3N0cl9pbml0KCZuYW1lX3N0ciwg
bmFtZSk7CisKKwluZXdmaWQgPSB1a185cGRldl9maWRfY3JlYXRlKGRldik7CisJaWYgKFBUUklT
RVJSKG5ld2ZpZCkpCisJCXJldHVybiBuZXdmaWQ7CisKKwlud25hbWUgPSBuYW1lID8gMSA6IDA7
CisKKwlpZiAobmFtZSkgeworCQl1a19wcl9kZWJ1ZygidWs5cDogVFdBTEsgZmlkICV1IG5ld2Zp
ZCAldSBud25hbWUgJWQgbmFtZSAlc1xuIiwKKwkJCQlmaWQtPmZpZCwgbmV3ZmlkLT5maWQsIG53
bmFtZSwgbmFtZSk7CisJCXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBVS185UF9UV0FMSywgX19Q
QUdFX1NJWkUsICJkZHdzIiwKKwkJCQlmaWQtPmZpZCwgbmV3ZmlkLT5maWQsIG53bmFtZSwgJm5h
bWVfc3RyKTsKKwl9IGVsc2UgeworCQl1a19wcl9kZWJ1ZygidWs5cDogVFdBTEsgZmlkICV1IG5l
d2ZpZCAldSBud25hbWUgJWRcbiIsCisJCQkJZmlkLT5maWQsIG5ld2ZpZC0+ZmlkLCBud25hbWUp
OworCQlyZXEgPSB1a185cGRldl9jYWxsKGRldiwgVUtfOVBfVFdBTEssIF9fUEFHRV9TSVpFLCAi
ZGR3IiwKKwkJCQlmaWQtPmZpZCwgbmV3ZmlkLT5maWQsIG53bmFtZSk7CisJfQorCisJaWYgKFBU
UklTRVJSKHJlcSkpIHsKKwkJLyoKKwkJICogRG9uJ3QgY2x1bmsgaWYgcmVxdWVzdCBoYXMgZmlu
aXNoZWQgd2l0aCBlcnJvciwgYXMgdGhlIGZpZAorCQkgKiBpcyBpbnZhbGlkLgorCQkgKi8KKwkJ
bmV3ZmlkLT53YXNfcmVtb3ZlZCA9IDE7CisJCXJjID0gUFRSMkVSUihyZXEpOworCQlnb3RvIG91
dDsKKwl9CisKKwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJlcSwgInciLCAmbndxaWQpOwor
CWlmIChyYyA8IDApCisJCWdvdG8gb3V0X3JlcTsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBSV0FM
SyBud3FpZCAldVxuIiwgbndxaWQpOworCisJaWYgKG53cWlkICE9IG53bmFtZSkgeworCQlyYyA9
IC1FTk9FTlQ7CisJCWdvdG8gb3V0X3JlcTsKKwl9CisKKworCWlmIChud25hbWUpIHsKKwkJcmMg
PSB1a185cHJlcV9kZXNlcmlhbGl6ZShyZXEsICJRIiwgJm5ld2ZpZC0+cWlkKTsKKwkJaWYgKHJj
IDwgMCkKKwkJCWdvdG8gb3V0X3JlcTsKKwl9IGVsc2UKKwkJbmV3ZmlkLT5xaWQgPSBmaWQtPnFp
ZDsKKworCXJjID0gMDsKK291dF9yZXE6CisJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7
CitvdXQ6CisJaWYgKHJjKSB7CisJCXVrXzlwZGV2X2ZpZF9yZWxlYXNlKG5ld2ZpZCk7CisJCXJl
dHVybiBFUlIyUFRSKHJjKTsKKwl9CisKKwlyZXR1cm4gbmV3ZmlkOworfQorCitpbnQgdWtfOXBf
ZG9fb3BlbihzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwZmlkICpmaWQsIHVpbnQ4
X3QgbW9kZSkKK3sKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKwlpbnQgcmM7CisKKwl1a19wcl9k
ZWJ1ZygidWs5cDogVE9QRU4gZmlkICV1IG1vZGUgJXVcbiIsIGZpZC0+ZmlkLCBtb2RlKTsKKwor
CXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBVS185UF9UT1BFTiwgX19QQUdFX1NJWkUsICJkYiIs
CisJCQlmaWQtPmZpZCwgbW9kZSk7CisJaWYgKFBUUklTRVJSKHJlcSkpCisJCXJldHVybiBQVFIy
RVJSKHJlcSk7CisKKwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJlcSwgIlFkIiwgJmZpZC0+
cWlkLCAmZmlkLT5pb3VuaXQpOworCXVrXzlwZGV2X3JlcV9yZW1vdmUoZGV2LCByZXEpOworCisJ
dWtfcHJfZGVidWcoInVrOXA6IFJPUEVOIHFpZCB0eXBlICV1IHZlcnNpb24gJXUgcGF0aCAlbHUg
aW91bml0ICV1XG4iLAorCQkJZmlkLT5xaWQudHlwZSwgZmlkLT5xaWQudmVyc2lvbiwgZmlkLT5x
aWQucGF0aCwKKwkJCWZpZC0+aW91bml0KTsKKworCXJldHVybiByYzsKK30KKworaW50IHVrXzlw
X2RvX2NyZWF0ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwZmlkICpmaWQsCisJ
CWNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IHBlcm0sIHVpbnQ4X3QgbW9kZSwKKwkJY29uc3Qg
Y2hhciAqZXh0ZW5zaW9uKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCXN0cnVjdCB1a185
cF9zdHIgbmFtZV9zdHI7CisJc3RydWN0IHVrXzlwX3N0ciBleHRlbnNpb25fc3RyOworCWludCBy
YzsKKworCXVrXzlwX3N0cl9pbml0KCZuYW1lX3N0ciwgbmFtZSk7CisJdWtfOXBfc3RyX2luaXQo
JmV4dGVuc2lvbl9zdHIsIGV4dGVuc2lvbik7CisKKwl1a19wcl9kZWJ1ZygidWs5cDogVENSRUFU
RSBmaWQgJXUgbmFtZSAlcyBwZXJtICV1IG1vZGUgJXUgZXh0ICVzXG4iLAorCQkJZmlkLT5maWQs
IG5hbWUsIHBlcm0sIG1vZGUsIGV4dGVuc2lvbik7CisKKwlyZXEgPSB1a185cGRldl9jYWxsKGRl
diwgVUtfOVBfVENSRUFURSwgX19QQUdFX1NJWkUsICJkc2RicyIsCisJCQlmaWQtPmZpZCwgJm5h
bWVfc3RyLCBwZXJtLCBtb2RlLCAmZXh0ZW5zaW9uX3N0cik7CisJaWYgKFBUUklTRVJSKHJlcSkp
CisJCXJldHVybiBQVFIyRVJSKHJlcSk7CisKKwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJl
cSwgIlFkIiwgJmZpZC0+cWlkLCAmZmlkLT5pb3VuaXQpOworCXVrXzlwZGV2X3JlcV9yZW1vdmUo
ZGV2LCByZXEpOworCisJdWtfcHJfZGVidWcoInVrOXA6IFJDUkVBVEUgcWlkIHR5cGUgJXUgdmVy
c2lvbiAldSBwYXRoICVsdSBpb3VuaXQgJXVcbiIsCisJCQlmaWQtPnFpZC50eXBlLCBmaWQtPnFp
ZC52ZXJzaW9uLCBmaWQtPnFpZC5wYXRoLAorCQkJZmlkLT5pb3VuaXQpOworCisJcmV0dXJuIHJj
OworfQorCitpbnQgdWtfOXBfZG9fcmVtb3ZlKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3Qg
dWtfOXBmaWQgKmZpZCkKK3sKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKworCS8qIFRoZSBmaWQg
aXMgY29uc2lkZXJlZCBpbnZhbGlkIGV2ZW4gaWYgdGhlIHJlbW92ZSBmYWlscy4gKi8KKwlmaWQt
Pndhc19yZW1vdmVkID0gMTsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBUUkVNT1ZFIGZpZCAldVxu
IiwgZmlkLT5maWQpOworCXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBVS185UF9UUkVNT1ZFLCBf
X1BBR0VfU0laRSwgImQiLCBmaWQtPmZpZCk7CisJaWYgKFBUUklTRVJSKHJlcSkpCisJCXJldHVy
biBQVFIyRVJSKHJlcSk7CisKKwl1a185cGRldl9yZXFfcmVtb3ZlKGRldiwgcmVxKTsKKwl1a19w
cl9kZWJ1ZygidWs5cDogUlJFTU9WRVxuIik7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHVrXzlw
X2RvX2NsdW5rKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCkKK3sK
KwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKworCWlmIChmaWQtPndhc19yZW1vdmVkKQorCQlyZXR1
cm4gMDsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBUQ0xVTksgZmlkICV1XG4iLCBmaWQtPmZpZCk7
CisJcmVxID0gdWtfOXBkZXZfY2FsbChkZXYsIFVLXzlQX1RDTFVOSywgX19QQUdFX1NJWkUsICJk
IiwgZmlkLT5maWQpOworCWlmIChQVFJJU0VSUihyZXEpKQorCQlyZXR1cm4gUFRSMkVSUihyZXEp
OworCisJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7CisJdWtfcHJfZGVidWcoInVrOXA6
IFJDTFVOS1xuIik7CisKKwlyZXR1cm4gMDsKK30KKworaW50NjRfdCB1a185cF9kb19yZWFkKHN0
cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJdWludDY0X3Qgb2Zm
c2V0LCB1aW50MzJfdCBjb3VudCwgY2hhciAqYnVmKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVx
OworCWludDY0X3QgcmM7CisKKwlpZiAoZmlkLT5pb3VuaXQgIT0gMCkKKwkJY291bnQgPSBNSU4o
Y291bnQsIGZpZC0+aW91bml0KTsKKwljb3VudCA9IE1JTihjb3VudCwgZGV2LT5tc2l6ZSAtIDIz
KTsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBUUkVBRCBmaWQgJXUgb2Zmc2V0ICVsdSBjb3VudCAl
dVxuIiwgZmlkLT5maWQsCisJCQlvZmZzZXQsIGNvdW50KTsKKwlyZXEgPSB1a185cGRldl9jYWxs
KGRldiwgVUtfOVBfVFJFQUQsIGNvdW50ICsgMjMsICJkcWQiLCBmaWQtPmZpZCwKKwkJCW9mZnNl
dCwgY291bnQpOworCWlmIChQVFJJU0VSUihyZXEpKQorCQlyZXR1cm4gUFRSMkVSUihyZXEpOwor
CisJcmMgPSB1a185cHJlcV9kZXNlcmlhbGl6ZShyZXEsICJkIiwgJmNvdW50KTsKKwlpZiAocmMg
PCAwKQorCQlnb3RvIG91dDsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBSUkVBRCBjb3VudCAldVxu
IiwgY291bnQpOworCisJcmMgPSB1a185cHJlcV9jb3B5X3RvKHJlcSwgYnVmLCBjb3VudCk7CisJ
aWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IGNvdW50OworCitvdXQ6CisJdWtfOXBk
ZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7CisJcmV0dXJuIHJjOworfQorCitpbnQ2NF90IHVrXzlw
X2RvX3dyaXRlKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJ
dWludDY0X3Qgb2Zmc2V0LCB1aW50MzJfdCBjb3VudCwgY29uc3QgY2hhciAqYnVmKQoreworCXN0
cnVjdCB1a185cHJlcSAqcmVxOworCWludDY0X3QgcmM7CisKKwljb3VudCA9IE1JTihjb3VudCwg
ZmlkLT5pb3VuaXQpOworCWNvdW50ID0gTUlOKGNvdW50LCBkZXYtPm1zaXplIC0gMjMpOworCisJ
dWtfcHJfZGVidWcoInVrOXA6IFRXUklURSBmaWQgJXUgb2Zmc2V0ICVsdSBjb3VudCAldVxuIiwg
ZmlkLT5maWQsCisJCQlvZmZzZXQsIGNvdW50KTsKKwlyZXEgPSB1a185cGRldl9yZXFfY3JlYXRl
KGRldiwgVUtfOVBfVFdSSVRFLCBjb3VudCArIDIzKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkKKwkJ
cmV0dXJuIFBUUjJFUlIocmVxKTsKKworCXJjID0gdWtfOXByZXFfc2VyaWFsaXplKHJlcSwgImRx
ZCIsIGZpZC0+ZmlkLCBvZmZzZXQsIGNvdW50KTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsK
KworCXJjID0gdWtfOXByZXFfY29weV9mcm9tKHJlcSwgYnVmLCBjb3VudCk7CisJaWYgKHJjIDwg
MCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHVrXzlwcmVxX3JlYWR5KHJlcSk7CisJaWYgKHJjIDwg
MCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHVrXzlwZGV2X3JlcXVlc3QoZGV2LCByZXEpOworCWlm
IChyYyA8IDApCisJCWdvdG8gb3V0OworCisJcmMgPSB1a185cHJlcV93YWl0cmVwbHkocmVxKTsK
KwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworCXJjID0gdWtfOXByZXFfZGVzZXJpYWxpemUo
cmVxLCAiZCIsICZjb3VudCk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwl1a19wcl9k
ZWJ1ZygidWs5cDogUldSSVRFIGNvdW50ICV1XG4iLCBjb3VudCk7CisKKwlyYyA9IGNvdW50Owor
CitvdXQ6CisJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7CisJcmV0dXJuIHJjOworfQor
CitzdHJ1Y3QgdWtfOXByZXEgKnVrXzlwX2RvX3N0YXQoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0
cnVjdCB1a185cGZpZCAqZmlkLAorCQlzdHJ1Y3QgdWtfOXBfc3RhdCAqc3RhdCkKK3sKKwlzdHJ1
Y3QgdWtfOXByZXEgKnJlcTsKKwlpbnQgcmM7CisJdWludDE2X3QgZHVtbXk7CisKKwl1a19wcl9k
ZWJ1ZygidWs5cDogVFNUQVQgZmlkICV1XG4iLCBmaWQtPmZpZCk7CisJcmVxID0gdWtfOXBkZXZf
Y2FsbChkZXYsIFVLXzlQX1RTVEFULCBfX1BBR0VfU0laRSwgImQiLCBmaWQtPmZpZCk7CisJaWYg
KFBUUklTRVJSKHJlcSkpCisJCXJldHVybiByZXE7CisKKwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFs
aXplKHJlcSwgIndTIiwgJmR1bW15LCBzdGF0KTsKKwlpZiAocmMpCisJCXJldHVybiBFUlIyUFRS
KHJjKTsKKwl1a19wcl9kZWJ1ZygidWs5cDogUlNUQVRcbiIpOworCisJcmV0dXJuIHJlcTsKK30K
KworaW50IHVrXzlwX2RvX3dzdGF0KHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBm
aWQgKmZpZCwKKwkJc3RydWN0IHVrXzlwX3N0YXQgKnN0YXQpCit7CisJc3RydWN0IHVrXzlwcmVx
ICpyZXE7CisKKwkvKgorCSAqIFRoZSBwYWNrZWQgc2l6ZSBvZiBzdGF0IGlzIDYxIGJ5dGVzICsg
dGhlIHNpemUgb2NjdXBpZWQgYnkgdGhlCisJICogc3RyaW5ncy4KKwkgKi8KKwlzdGF0LT5zaXpl
ID0gNjE7CisJc3RhdC0+c2l6ZSArPSBzdGF0LT5uYW1lLnNpemU7CisJc3RhdC0+c2l6ZSArPSBz
dGF0LT51aWQuc2l6ZTsKKwlzdGF0LT5zaXplICs9IHN0YXQtPmdpZC5zaXplOworCXN0YXQtPnNp
emUgKz0gc3RhdC0+bXVpZC5zaXplOworCXN0YXQtPnNpemUgKz0gc3RhdC0+ZXh0ZW5zaW9uLnNp
emU7CisKKwl1a19wcl9kZWJ1ZygidWs5cDogVFdTVEFUIGZpZCAldVxuIiwgZmlkLT5maWQpOwor
CXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBVS185UF9UV1NUQVQsIF9fUEFHRV9TSVpFLCAiZHdT
IiwgZmlkLT5maWQsCisJCQlzdGF0LT5zaXplICsgMiwgc3RhdCk7CisJaWYgKFBUUklTRVJSKHJl
cSkpCisJCXJldHVybiBQVFIyRVJSKHJlcSk7CisJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJl
cSk7CisJdWtfcHJfZGVidWcoInVrOXA6IFJXU1RBVCIpOworCisJcmV0dXJuIDA7Cit9CmRpZmYg
LS1naXQgYS9saWIvdWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCmluZGV4
IGNkNGJmNGI4YTAzMy4uZWZjMGVlNzQ4YWQ0IDEwMDY0NAotLS0gYS9saWIvdWs5cC9NYWtlZmls
ZS51aworKysgYi9saWIvdWs5cC9NYWtlZmlsZS51awpAQCAtNywzICs3LDQgQEAgTElCVUs5UF9T
UkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2X3RyYW5zLmMKIExJQlVLOVBfU1JDUy15ICs9
ICQoTElCVUs5UF9CQVNFKS85cHJlcS5jCiBMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFT
RSkvOXBkZXYuYwogTElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZmlkLmMKK0xJ
QlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cC5jCmRpZmYgLS1naXQgYS9saWIvdWs5
cC9leHBvcnRzeW1zLnVrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awppbmRleCA1Y2Q3ODE3YmY1
YzguLjRmOTUwYTBkM2Y3OSAxMDA2NDQKLS0tIGEvbGliL3VrOXAvZXhwb3J0c3ltcy51aworKysg
Yi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCkBAIC0yOCwzICsyOCwxNiBAQCB1a185cGRldl9yZXFf
cmVtb3ZlCiB1a185cGRldl9maWRfY3JlYXRlCiB1a185cGZpZF9nZXQKIHVrXzlwZmlkX3B1dAor
Cit1a185cF9kb192ZXJzaW9uCit1a185cF9kb19hdHRhY2gKK3VrXzlwX2RvX2ZsdXNoCit1a185
cF9kb193YWxrCit1a185cF9kb19vcGVuCit1a185cF9kb19jcmVhdGUKK3VrXzlwX2RvX3JlbW92
ZQordWtfOXBfZG9fY2x1bmsKK3VrXzlwX2RvX3JlYWQKK3VrXzlwX2RvX3dyaXRlCit1a185cF9k
b19zdGF0Cit1a185cF9kb193c3RhdApkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85
cC5oIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZDY4MzEzOGU4Mjc5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3VrOXAv
aW5jbHVkZS91ay85cC5oCkBAIC0wLDAgKzEsMjYwIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jp
c3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8K
KyNpZm5kZWYgX19VS185UF9fCisjZGVmaW5lIF9fVUtfOVBfXworCisjaW5jbHVkZSA8c3RkYXJn
Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
dWsvY29uZmlnLmg+CisjaW5jbHVkZSA8dWsvOXBfY29yZS5oPgorI2luY2x1ZGUgPHVrLzlwZGV2
Lmg+CisjaW5jbHVkZSA8dWsvOXByZXEuaD4KKyNpbmNsdWRlIDx1ay85cGZpZC5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogTmVnb3RpYXRl
cyB0aGUgdmVyc2lvbiBhbmQgaXMgdGhlIGZpcnN0IG1lc3NhZ2UgaW4gYSA5UCBzZXNzaW9uLgor
ICoKKyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJh
bSByZXF1ZXN0ZWQKKyAqICAgUmVxdWVzdGVkIHZlcnNpb24gc3RyaW5nLgorICogQHBhcmFtIHJl
Y2VpdmVkCisgKiAgIFJlY2VpdmVkIHZlcnNpb24gc3RyaW5nLgorICogQHJldHVybgorICogICAt
ICghRVJSUFRSKTogVGhlIHJlcXVlc3QuIEl0IG11c3QgYmUgcmVtb3ZlZCBvbmx5IGFmdGVyIGFs
bCBhY2Nlc3NlcyB0bworICogICB0aGUgcmVjZWl2ZWQgdmVyc2lvbiBzdHJpbmcgYXJlIGRvbmUu
CisgKiAgIC0gRVJSUFRSOiBUaGUgZXJyb3IgcmV0dXJuZWQgZWl0aGVyIGJ5IHRoZSBBUEkgb3Ig
YnkgdGhlIHJlbW90ZSBzZXJ2ZXIuCisgKi8KK3N0cnVjdCB1a185cHJlcSAqdWtfOXBfZG9fdmVy
c2lvbihzdHJ1Y3QgdWtfOXBkZXYgKmRldiwKKwkJY29uc3QgY2hhciAqcmVxdWVzdGVkLCBzdHJ1
Y3QgdWtfOXBfc3RyICpyZWNlaXZlZCk7CisKKy8qKgorICogTmVnb3RpYXRlcyB0aGUgdmVyc2lv
biBhbmQgaXMgdGhlIGZpcnN0IG1lc3NhZ2UgaW4gYSA5UCBzZXNzaW9uLgorICoKKyAqIEBwYXJh
bSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBhZmlkCisgKiAg
IEF1dGhlbnRpY2F0aW9uIGZpZCwgdXN1YWxseSBVS185UF9OT0ZJRC4KKyAqIEBwYXJhbSB1bmFt
ZQorICogICBVc2VyIG5hbWUsIGNhbiBiZSBlbXB0eSBzdHJpbmcgZm9yIHZpcnRpby94ZW4uCisg
KiBAcGFyYW0gYW5hbWUKKyAqICAgVGhlIGZpbGUgdHJlZSB0byBhY2Nlc3MsIGNhbiBiZSBsZWZ0
IGVtcHR5IGZvciB2aXJ0aW8veGVuLgorICogQHBhcmFtIG5fdW5hbWUKKyAqICAgTnVtZXJpYyB1
bmFtZSwgcGFydCBvZiB0aGUgOVAyMDAwLnUgdW5peCBleHRlbnNpb24gdG8gdGhlIHByb3RvY29s
LgorICogQHJldHVybgorICogICAtICghRVJSUFRSKTogVGhlIGZpZCBvZiB0aGUgcm9vdCBkaXJl
Y3RvcnkgaW4gdGhlIGFjY2Vzc2VkIGZpbGUgdHJlZS4KKyAqICAgLSBFUlJQVFI6IFRoZSBlcnJv
ciByZXR1cm5lZCBlaXRoZXIgYnkgdGhlIEFQSSBvciBieSB0aGUgcmVtb3RlIHNlcnZlci4KKyAq
Lworc3RydWN0IHVrXzlwZmlkICp1a185cF9kb19hdHRhY2goc3RydWN0IHVrXzlwZGV2ICpkZXYs
IHVpbnQzMl90IGFmaWQsCisJCWNvbnN0IGNoYXIgKnVuYW1lLCBjb25zdCBjaGFyICphbmFtZSwg
dWludDMyX3Qgbl91bmFtZSk7CisKKy8qKgorICogRmx1c2hlcyB0aGUgZ2l2ZW4gcmVxdWVzdCB0
YWcsIGNhbmNlbGluZyB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0IGlmCisgKiB0aGUgc2VydmVy
IGhhcyBub3QgeWV0IHJlcGxpZWQgdG8gaXQuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUg
VW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIG9sZHRhZworICogICBSZXF1ZXN0IHRhZy4K
KyAqIEByZXR1cm4KKyAqICAgLSAwOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBBbiBlcnJv
ciBvY2N1cnJlZC4KKyAqLworaW50IHVrXzlwX2RvX2ZsdXNoKHN0cnVjdCB1a185cGRldiAqZGV2
LCB1aW50MTZfdCBvbGR0YWcpOworCisvKioKKyAqIFdhbGtzIHRoZSBmaWxlc3lzdGVtIHRyZWUg
ZnJvbSB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGZpZCwgYXR0ZW1wdGluZyB0byBvYnRhaW4KKyAqIHRo
ZSBmaWQgZm9yIHRoZSBjaGlsZCB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICoKKyAqIEBwYXJhbSBk
ZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBmaWQKKyAqICAgRGly
ZWN0b3J5IGZpZC4KKyAqIEBwYXJhbSBuYW1lCisgKiAgIEZpbGUgbmFtZS4KKyAqIEByZXR1cm4K
KyAqICAgLSAoIUVSUlBUUik6IFRoZSBmaWQgb2YgdGhlIGNoaWxkIGVudHJ5LgorICogICAtIEVS
UlBUUjogVGhlIGVycm9yIHJldHVybmVkIGVpdGhlciBieSB0aGUgQVBJIG9yIGJ5IHRoZSByZW1v
dGUgc2VydmVyLgorICovCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwX2RvX3dhbGsoc3RydWN0IHVr
XzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQljb25zdCBjaGFyICpuYW1lKTsK
KworLyoqCisgKiBPcGVucyB0aGUgZmlkIHdpdGggdGhlIGdpdmVuIG1vZGUuCisgKgorICogQHBh
cmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIGZpZAorICog
ICA5UCBmaWQuCisgKiBAcGFyYW0gbW9kZQorICogICA5UCBvcGVuIG1vZGUuCisgKiBAcmV0dXJu
CisgKiAgIC0gMDogU3VjY2Vzc2Z1bC4KKyAqICAgLSAoPCAwKTogQW4gZXJyb3Igb2NjdXJyZWQu
CisgKi8KK2ludCB1a185cF9kb19vcGVuKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtf
OXBmaWQgKmZpZCwgdWludDhfdCBtb2RlKTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IGZpbGUg
d2l0aCB0aGUgZ2l2ZW4gbmFtZSBpbiB0aGUgZGlyZWN0b3J5IGFzc29jaWF0ZWQgd2l0aCBmaWQs
CisgKiBhbmQgYXNzb2NpYXRlcyBmaWQgd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLCBvcGVu
aW5nIGl0IHdpdGggdGhlIGdpdmVuCisgKiBtb2RlLgorICoKKyAqIEBwYXJhbSBkZXYKKyAqICAg
VGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBmaWQKKyAqICAgOVAgZGlyZWN0b3J5
IGZpZC4KKyAqIEBwYXJhbSBuYW1lCisgKiAgIE5hbWUgb2YgdGhlIGNyZWF0ZWQgZmlsZS4KKyAq
IEBwYXJhbSBwZXJtCisgKiAgIDlQIHBlcm1pc3Npb24gYml0cy4KKyAqIEBwYXJhbSBtb2RlCisg
KiAgIDlQIG9wZW4gbW9kZS4KKyAqIEBwYXJhbSBleHRlbnNpb24KKyAqICAgU3RyaW5nIGRlc2Ny
aWJpbmcgc3BlY2lhbCBmaWxlcywgZGVwZW5kaW5nIG9uIHRoZSBtb2RlIGJpdC4KKyAqIEByZXR1
cm4KKyAqICAgLSAwOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBBbiBlcnJvciBvY2N1cnJl
ZC4KKyAqLworaW50IHVrXzlwX2RvX2NyZWF0ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0
IHVrXzlwZmlkICpmaWQsCisJCWNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IHBlcm0sIHVpbnQ4
X3QgbW9kZSwKKwkJY29uc3QgY2hhciAqZXh0ZW5zaW9uKTsKKworLyoqCisgKiBSZW1vdmVzIHRo
ZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCBmaWQuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUg
VW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIGZpZAorICogICA5UCBmaWQgdG8gcmVtb3Zl
LgorICogQHJldHVybgorICogICAtIDA6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwgMCk6IEFuIGVy
cm9yIG9jY3VycmVkLgorICovCitpbnQgdWtfOXBfZG9fcmVtb3ZlKHN0cnVjdCB1a185cGRldiAq
ZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCk7CisKKy8qKgorICogQ2x1bmtzIHRoZSBmaWQsIHRl
bGxpbmcgdGhlIHNlcnZlciB0byBmb3JnZXQgaXRzIHByZXZpb3VzIGFzc29jaWF0aW9uLgorICoK
KyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBm
aWQKKyAqICAgOVAgZmlkIHRvIGNsdW5rLgorICogQHJldHVybgorICogICAtIDA6IFN1Y2Nlc3Nm
dWwuCisgKiAgIC0gKDwgMCk6IEFuIGVycm9yIG9jY3VycmVkLgorICovCitpbnQgdWtfOXBfZG9f
Y2x1bmsoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkKTsKKworLyoq
CisgKiBSZWFkcyBjb3VudCBieXRlcyBmcm9tIHRoZSBmaWQsIHN0YXJ0aW5nIGZyb20gdGhlIGdp
dmVuIG9mZnNldCwgcGxhY2luZworICogdGhlbSBpbnRvIHRoZSBidWZmZXIuCisgKgorICogQHBh
cmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIGZpZAorICog
ICA5UCBmaWQgdG8gcmVhZCBmcm9tLgorICogQHBhcmFtIG9mZnNldAorICogICBPZmZzZXQgYXQg
d2hpY2ggdG8gc3RhcnQgcmVhZGluZy4KKyAqIEBwYXJhbSBjb3VudAorICogICBNYXhpbXVtIG51
bWJlciBvZiBieXRlcyB0byByZWFkLgorICogQHBhcmFtIGJ1ZgorICogICBCdWZmZXIgdG8gcmVh
ZCBpbnRvLgorICogQHJldHVybgorICogICAtICg+PSAwKTogQW1vdW50IG9mIGJ5dGVzIHJlYWQu
CisgKiAgIC0gKDwgMCk6IEFuIGVycm9yIG9jY3VycmVkLgorICovCitpbnQ2NF90IHVrXzlwX2Rv
X3JlYWQoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQl1aW50
NjRfdCBvZmZzZXQsIHVpbnQzMl90IGNvdW50LCBjaGFyICpidWYpOworCisvKioKKyAqIFdyaXRl
cyBjb3VudCBieXRlcyBmcm9tIGJ1ZiB0byB0aGUgZmlkLCBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBvZmZzZXQuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNl
LgorICogQHBhcmFtIGZpZAorICogICA5UCBmaWQgdG8gd3JpdGUgdG8uCisgKiBAcGFyYW0gb2Zm
c2V0CisgKiAgIE9mZnNldCBhdCB3aGljaCB0byBzdGFydCB3cml0aW5nLgorICogQHBhcmFtIGNv
dW50CisgKiAgIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlLgorICogQHBhcmFtIGJ1
ZgorICogICBEYXRhIHRvIGJlIHdyaXR0ZW4uCisgKiBAcmV0dXJuCisgKiAgIC0gKD49IDApOiBB
bW91bnQgb2YgYnl0ZXMgd3JpdHRlbi4KKyAqICAgLSAoPCAwKTogQW4gZXJyb3Igb2NjdXJyZWQu
CisgKi8KK2ludDY0X3QgdWtfOXBfZG9fd3JpdGUoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVj
dCB1a185cGZpZCAqZmlkLAorCQl1aW50NjRfdCBvZmZzZXQsIHVpbnQzMl90IGNvdW50LCBjb25z
dCBjaGFyICpidWYpOworCisvKioKKyAqIFN0YXRzIHRoZSBnaXZlbiBmaWQgYW5kIHBsYWNlcyB0
aGUgZGF0YSBpbnRvIHRoZSBnaXZlbiBzdGF0IHN0cnVjdHVyZS4KKyAqCisgKiBAcGFyYW0gZGV2
CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFyYW0gZmlkCisgKiAgIDlQIGZp
ZCB0byBzdGF0LgorICogQHBhcmFtIHN0YXQKKyAqICAgV2hlcmUgdG8gc3RvcmUgdGhlIHN0YXQg
cmVzdWx0cy4KKyAqIEByZXR1cm4KKyAqICAgLSAoIUVSUlBUUik6IFRoZSByZXF1ZXN0LiBJdCBt
dXN0IGJlIHJlbW92ZWQgb25seSBhZnRlciBhbGwgYWNjZXNzZXMgdG8KKyAqICAgdGhlIHN0cmlu
Z3MgaW4gdGhlIHN0YXQgc3RydWN0dXJlIGFyZSBvdmVyLgorICogICAtIEVSUlBUUjogVGhlIGVy
cm9yIHJldHVybmVkIGVpdGhlciBieSB0aGUgQVBJIG9yIGJ5IHRoZSByZW1vdGUgc2VydmVyLgor
ICovCitzdHJ1Y3QgdWtfOXByZXEgKnVrXzlwX2RvX3N0YXQoc3RydWN0IHVrXzlwZGV2ICpkZXYs
IHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQlzdHJ1Y3QgdWtfOXBfc3RhdCAqc3RhdCk7CisKKy8q
KgorICogQ2hhbmdlcyB0aGUgZmlsZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gZmlkLgorICoKKyAq
IEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBmaWQK
KyAqICAgOVAgZmlkIHRvIGNsdW5rLgorICogQHJldHVybgorICogICAtIDA6IFN1Y2Nlc3NmdWwu
CisgKiAgIC0gKDwgMCk6IEFuIGVycm9yIG9jY3VycmVkLgorICovCitpbnQgdWtfOXBfZG9fd3N0
YXQoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQlzdHJ1Y3Qg
dWtfOXBfc3RhdCAqc3RhdCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBfX1VLXzlQX18gKi8KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:18:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:18: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 1hdUrb-0000Ps-8S; Wed, 19 Jun 2019 07:18:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUrZ-0000Pd-I3
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:18:33 +0000
X-Inumbo-ID: 7116f92b-9262-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7116f92b-9262-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:18:32 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id s15so540902wmj.3
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:18: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;
 bh=UpfdYkR0MDYDo8lKr5B2CnHgoYnG9sKk4408T/sAbPk=;
 b=ijN7ImqFRcaHj4yj7TZfdqGIEDI6arWSjs3xXLWtIhGmaISiek9cSQBxJXh4+EJjZi
 kCHm8mGjARAjRDQqr8HrAKFns8r0z+Jz6v+OkNQzA5eCjBIM4trRKBzimqEcuM5Fb9q+
 /zMw7a7023uc9BBHkGwU0arJ28TT+ZdXoCrtbC6lhNQLV9aajwwrCtck854mEdw2TzWU
 Aablp05/n/pzng+VbhVMNUdGa2IAsZLQL1vZOpR6RFG3j/qBTcx3kQEeymziXZ3zLZCx
 wt5WZYg1VftCwSch7rlPmWXmwLRmIOYoo98mLEfpFACf+otVcjJQI1YhPV336oZaqIAr
 /I3w==
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=UpfdYkR0MDYDo8lKr5B2CnHgoYnG9sKk4408T/sAbPk=;
 b=ctZk+B8GcW+kKs/RIohoKw0xLtynqyxq/diikfN9dbLiZShHvdHmFR3JvmlRXPBgih
 Dg1YmohfFvPPZp7Q8KrDVM7owHZHW3dvCfoLs4XRfHWfNmH5cx6XmRKQMJH2WDkV/bJ0
 aSy5xhO1BjuhRdjVZSyBepwUcDUQ3cEtW/kxFygeCKdaLzl/LBm7g2lcoHWVglW2Ortt
 eHIIsCuFOjPJubnJHugHXci/snB29k6Yh/SRJ6WnTwLkVKivaZpb9zjtrx3P+Po5+KPx
 gJSjujxVaHRptIysWRtxcvv9M/J7isj34EoZka6GOn2aLBmaWy3KumAOHYJYwBQmxAen
 FF/g==
X-Gm-Message-State: APjAAAUbmK21CnqhFUue4cQszZzb2hfWwD1Ri9yaa9/pWZPcKdgfIEqL
 Du+10Fgf61Hmll/pMLzpFDkWdC5RFGo=
X-Google-Smtp-Source: APXvYqwlRjTMQNDbk1O4aIHINzwivs6wvkc0ft2QpfdNKtxVzE+7Bi9aOof9jTpwIBLR2vZy35gh0Q==
X-Received: by 2002:a1c:b68a:: with SMTP id g132mr7101622wmf.66.1560928710675; 
 Wed, 19 Jun 2019 00:18:30 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id l1sm26725648wrf.46.2019.06.19.00.18.29
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:18:30 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:18:14 +0300
Message-Id: <20190619071819.12450-1-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 0/5] Virtio 9P driver
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBzZXJpZXMgYWRkcyB0aGUgdmlydGlvIDlQIGRyaXZlciBpbXBsZW1lbnRhdGlv
biwgYmFzZWQgb24gdGhlCnVuaWtyYWZ0IDlQIEFQSS4gVGhlIGRyaXZlcidzIGltcGxlbWVudGF0
aW9uIGlzIGluIHZpcnRpb185cC5jLCBhbmQgdGhlClBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGxh
eW91dCBhbmQgZmxhZ3MgY2FuIGJlIGZvdW5kIGluIHZpcnRpb185cC5oLgoKVGhlIDlQIGRldmlj
ZXMgYXJlIGluaXRpYWxpemVkIG9uY2UsIGF0IGJvb3QgdGltZSwgYW5kIGVhY2ggY29ubmVjdCgp
IG9yCmRpc2Nvbm5lY3QoKSBzaW1wbHkgcG9pbnRzIHRoZSB1a185cGRldiB0byB0aGUgY29ycmVj
dCB2aXJ0aW8gOVAgZGV2aWNlCm9yIHRvIE5VTEwuCgpDcmlzdGlhbiBCYW51ICg1KToKICBwbGF0
L2RyaXZlcnM6IFZpcnRpbyA5UCBkcml2ZXIgc2tlbGV0b24KICBwbGF0L2RyaXZlcnM6IEFkZCA5
UCBkZXZpY2UgaW5pdGlhbGl6YXRpb24KICBwbGF0L2RyaXZlcnM6IEFsbG9jYXRlIHZpcnRxdWV1
ZSBmb3IgdmlydGlvIDlQCiAgcGxhdC9kcml2ZXJzOiBBZGQgOVAgdHJhbnNwb3J0IGZvciB2aXJ0
aW8gOVAKICBwbGF0L2RyaXZlcnM6IEltcGxlbWVudCB2aXJ0aW8gOVAgcmVxdWVzdCBhbmQgcmVj
dgoKIHBsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fOXAuaCB8ICA1MyArKysrCiBw
bGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb185cC5jICAgICAgICAgfCA0MjEgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIHBsYXQva3ZtL0NvbmZpZy51ayAgICAgICAgICAgICAgICAg
ICAgICB8ICAgOSArCiBwbGF0L2t2bS9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgfCAg
MTMgKwogNCBmaWxlcyBjaGFuZ2VkLCA0OTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IHBsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fOXAuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IHBsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMKCi0tIAoyLjExLjAKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:18:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:18: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 1hdUrc-0000Q9-Au; Wed, 19 Jun 2019 07:18:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUra-0000Pi-PB
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:18:34 +0000
X-Inumbo-ID: 71c078a4-9262-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 71c078a4-9262-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:18:33 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id x15so530116wmj.3
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:18: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=UQXTVaMOjf7AW6KCkIu8aiC3aaQoULqMlpvO0iLMK/k=;
 b=o58+kSBP3KQOHMkOUmoODfL3Oewl9o4g/ZjaJGG3XeaxrX3ll9mplHvUbtFQaFWgK0
 bhacyVYJ93CJuRM/kZyJsT3+NxkEAw6pKY23xTRU8TFEb02ksvLUYV600SF4j0tUrwD8
 V4V43+/gLKbV7p6mny2aF35jiY/3C9Y5uLkDZJJCFhFlJciTdeM4YQKFGcEsLPkcZkg4
 JzzJddPlaD2plFeZ6twZ3EVbdd00+WkyhQT03tyz4TZ6Ia2b0DxrgMNPZZEkKA97QeWz
 TJC9R/4TG5qMgUzmt+460R1yWiB6tO3rnBYcjwWp3/wjp65+cFnds6z5FshJO8bzYvTb
 7dsQ==
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=UQXTVaMOjf7AW6KCkIu8aiC3aaQoULqMlpvO0iLMK/k=;
 b=i3ndoT5jy1EqECNFF40aRd0wv4DBEs7SIrDzaOtLqYmXH8cvgjy+0dc4ZoWINiuZ4f
 yK6xTDKIxXyfIutmFtn3HTmj3+umV3pGIS9eC0h5EdAQe9/HhAfz9KkRK5RGEcN1NB9V
 pLfwMTyENxRs5mB3Wx7xlKotdx1Cw4yXu8UTjZy7HtR4IwdjZddRC/kh3mhU76E+w5Ib
 vPzd3zn3BWX/GRN5w8pet3pyFn0Ennkh0bIjT5BHbmRMPua89gXH7nZXghDaPVb6ypOW
 Dwpsfl1NdUyNApFcruKlt1ORPw6G0h1BV36PiFpbhNkQ5E4mj6rn54Zo7SkwdqDzWhUJ
 lkTQ==
X-Gm-Message-State: APjAAAXFvgt8zYljNngk+M0qiVzAcYt+U03VU7bgHbbvctxbat3LK91T
 9jaq2GdaUc2owEy2gwZ/3zC1d3dELOw=
X-Google-Smtp-Source: APXvYqyFGLhT2dA2KUdnpxlZB45DNtRurNohdvhPnSIFVA1bq2sN8dF/f+7SGAr6FDv7lPYanPDtew==
X-Received: by 2002:a1c:3c8a:: with SMTP id j132mr6708572wma.172.1560928711873; 
 Wed, 19 Jun 2019 00:18:31 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id l1sm26725648wrf.46.2019.06.19.00.18.30
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:18:31 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:18:15 +0300
Message-Id: <20190619071819.12450-2-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619071819.12450-1-cristb@gmail.com>
References: <20190619071819.12450-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 1/5] plat/drivers: Virtio 9P driver
 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, simon.kuenzer@neclab.eu,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSB2aXJ0aW8gOVAgZHJpdmVyIHNrZWxldG9uLgoKU2lnbmVkLW9m
Zi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KLS0tCiBwbGF0L2RyaXZlcnMv
aW5jbHVkZS92aXJ0aW8vdmlydGlvXzlwLmggfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysr
CiBwbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb185cC5jICAgICAgICAgfCA1OCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQva3ZtL0NvbmZpZy51ayAgICAgICAgICAgICAg
ICAgICAgICB8ICA5ICsrKysrCiBwbGF0L2t2bS9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAg
ICAgfCAxMyArKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fOXAuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMKCmRpZmYg
LS1naXQgYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvXzlwLmggYi9wbGF0L2Ry
aXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvXzlwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi41NDU5YTM5N2EyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L2Ry
aXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvXzlwLmgKQEAgLTAsMCArMSw0NCBAQAorLyogU1BE
WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENy
aXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQg
aG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJ
TiBBTlkgV0FZLgorICovCisKKyNpZm5kZWYgX19QTEFUX0RSVl9WSVJUSU9fOVBfSAorI2RlZmlu
ZSBfX1BMQVRfRFJWX1ZJUlRJT185UF9ICisjaW5jbHVkZSA8dWsvY29uZmlnLmg+CisjaW5jbHVk
ZSA8dWsvYXJjaC90eXBlcy5oPgorCisjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb19pZHMuaD4KKyNp
bmNsdWRlIDx2aXJ0aW8vdmlydGlvX2NvbmZpZy5oPgorI2luY2x1ZGUgPHZpcnRpby92aXJ0aW9f
dHlwZXMuaD4KKworI2VuZGlmIC8qIF9fUExBVF9EUlZfVklSVElPXzlQX0ggKi8KZGlmZiAtLWdp
dCBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMgYi9wbGF0L2RyaXZlcnMvdmlydGlv
L3ZpcnRpb185cC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODU1
NTQ4ZmU0ODcwCi0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9f
OXAuYwpAQCAtMCwwICsxLDU4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt
Q2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNv
bT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2Yg
QnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBO
T1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2luY2x1ZGUg
PHZpcnRpby92aXJ0aW9fYnVzLmg+CisjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb185cC5oPgorCitz
dGF0aWMgaW50IHZpcnRpb185cF9hZGRfZGV2KHN0cnVjdCB2aXJ0aW9fZGV2ICp2ZGV2IF9fdW51
c2VkKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZpcnRpb185cF9kcnZfaW5pdChz
dHJ1Y3QgdWtfYWxsb2MgKmRydl9hbGxvY2F0b3IgX191bnVzZWQpCit7CisJcmV0dXJuIDA7Cit9
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2Rldl9pZCB2OXBfZGV2X2lkW10gPSB7CisJ
e1ZJUlRJT19JRF85UH0sCisJe1ZJUlRJT19JRF9JTlZBTElEfSAvKiBMaXN0IFRlcm1pbmF0b3Ig
Ki8KK307CisKK3N0YXRpYyBzdHJ1Y3QgdmlydGlvX2RyaXZlciB2OXBfZHJ2ID0geworCS5kZXZf
aWRzID0gdjlwX2Rldl9pZCwKKwkuaW5pdCAgICA9IHZpcnRpb185cF9kcnZfaW5pdCwKKwkuYWRk
X2RldiA9IHZpcnRpb185cF9hZGRfZGV2Cit9OworVklSVElPX0JVU19SRUdJU1RFUl9EUklWRVIo
JnY5cF9kcnYpOwpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vQ29uZmlnLnVrIGIvcGxhdC9rdm0vQ29u
ZmlnLnVrCmluZGV4IDVhNmRmYzE0NThiMi4uZmYxMzliNDkzN2I4IDEwMDY0NAotLS0gYS9wbGF0
L2t2bS9Db25maWcudWsKKysrIGIvcGxhdC9rdm0vQ29uZmlnLnVrCkBAIC03OSw1ICs3OSwxNCBA
QCBjb25maWcgVklSVElPX05FVAogICAgICAgIHNlbGVjdCBMSUJVS1NHTElTVAogICAgICAgIGhl
bHAKICAgICAgICAgICAgICAgVmlydHVhbCBuZXR3b3JrIGRyaXZlci4KKworY29uZmlnIFZJUlRJ
T185UAorICAgICAgIGJvb2wgIlZpcnRpbyA5UCBkZXZpY2UiCisgICAgICAgZGVmYXVsdCBuCisg
ICAgICAgZGVwZW5kcyBvbiBMSUJVSzlQCisgICAgICAgc2VsZWN0IFZJUlRJT19CVVMKKyAgICAg
ICBzZWxlY3QgTElCVUtTR0xJU1QKKyAgICAgICBoZWxwCisgICAgICAgICAgICAgIFZpcnRpbyA5
UCBkcml2ZXIuCiBlbmRtZW51CiBlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTWFrZWZpbGUu
dWsgYi9wbGF0L2t2bS9NYWtlZmlsZS51awppbmRleCA3MWM0YzQxOTg2NGQuLjg1NTk2ZDVkOTM0
ZiAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vTWFrZWZpbGUudWsKKysrIGIvcGxhdC9rdm0vTWFrZWZp
bGUudWsKQEAgLTEwLDYgKzEwLDcgQEAgJChldmFsICQoY2FsbCBhZGRwbGF0bGliLGt2bSxsaWJr
dm1wbGF0KSkKICQoZXZhbCAkKGNhbGwgYWRkcGxhdGxpYl9zLGt2bSxsaWJrdm1wY2ksJChDT05G
SUdfS1ZNX1BDSSkpKQogJChldmFsICQoY2FsbCBhZGRwbGF0bGliX3Msa3ZtLGxpYmt2bXZpcnRp
bywkKENPTkZJR19WSVJUSU9fQlVTKSkpCiAkKGV2YWwgJChjYWxsIGFkZHBsYXRsaWJfcyxrdm0s
bGlia3ZtdmlydGlvbmV0LCQoQ09ORklHX1ZJUlRJT19ORVQpKSkKKyQoZXZhbCAkKGNhbGwgYWRk
cGxhdGxpYl9zLGt2bSxsaWJrdm12aXJ0aW85cCwkKENPTkZJR19WSVJUSU9fOVApKSkKIAogIyMK
ICMjIFBsYXRmb3JtIGxpYnJhcnkgZGVmaW5pdGlvbnMKQEAgLTExNSwzICsxMTYsMTUgQEAgTElC
S1ZNVklSVElPTkVUX0FTSU5DTFVERVMteSAgICs9IC1JJChVS19QTEFUX0RSSVZFUlNfQkFTRSkv
aW5jbHVkZQogTElCS1ZNVklSVElPTkVUX0NJTkNMVURFUy15ICAgICs9IC1JJChVS19QTEFUX0RS
SVZFUlNfQkFTRSkvaW5jbHVkZQogTElCS1ZNVklSVElPTkVUX1NSQ1MteSArPVwKIAkJCSQoVUtf
UExBVF9EUklWRVJTX0JBU0UpL3ZpcnRpby92aXJ0aW9fbmV0LmMKKworIyMKKyMjIFZpcnRpbyA5
UCBsaWJyYXJ5IGRlZmluaXRpb24KKyMjCitMSUJLVk1WSVJUSU85UF9BU0lOQ0xVREVTLXkgICAr
PSAtSSQoTElCS1ZNUExBVF9CQVNFKS9pbmNsdWRlCitMSUJLVk1WSVJUSU85UF9DSU5DTFVERVMt
eSAgICArPSAtSSQoTElCS1ZNUExBVF9CQVNFKS9pbmNsdWRlCitMSUJLVk1WSVJUSU85UF9BU0lO
Q0xVREVTLXkgICArPSAtSSQoVUtfUExBVF9DT01NT05fQkFTRSkvaW5jbHVkZQorTElCS1ZNVklS
VElPOVBfQ0lOQ0xVREVTLXkgICAgKz0gLUkkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2luY2x1ZGUK
K0xJQktWTVZJUlRJTzlQX0FTSU5DTFVERVMteSAgICs9IC1JJChVS19QTEFUX0RSSVZFUlNfQkFT
RSkvaW5jbHVkZQorTElCS1ZNVklSVElPOVBfQ0lOQ0xVREVTLXkgICAgKz0gLUkkKFVLX1BMQVRf
RFJJVkVSU19CQVNFKS9pbmNsdWRlCitMSUJLVk1WSVJUSU85UF9TUkNTLXkgKz1cCisJCQkkKFVL
X1BMQVRfRFJJVkVSU19CQVNFKS92aXJ0aW8vdmlydGlvXzlwLmMKLS0gCjIuMTEuMAoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:18:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:18: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 1hdUrc-0000QK-CO; Wed, 19 Jun 2019 07:18:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUrb-0000Pn-16
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:18:35 +0000
X-Inumbo-ID: 72483bc6-9262-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 72483bc6-9262-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:18:34 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n4so2131418wrs.3
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:18: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=OidNIGbB1NqN19Lq/a4GgLxJgnSpTUrRIv7C4GySrDc=;
 b=iXi1D+yUsY/lkKWDtuqJfHp9kkdzEwezC0pXWuzXQgCU6CTyPwHmFgmWNAgkjlDyfC
 Wbx4t+3imygguhmyQvivKVTR9/lR7g9FlPlbO3Msz9q0eEmZiItW5HNXJY5uBY2v9hfm
 huyo6i2RwsXkEv72ZrZPMW/lA0c/4p+xIIz/AJbT/hxcrhVkbwTiDQQOjGxi6kTnf4JW
 YRGpGi5F76OY+DESSWzl+y/eVt4/Nbi1bmk3i4m+IfaFEU+Zy+UpjoUNteAeIJ1D8Yi1
 uoR0Gvuvvsulll5u6MMx1engJeupQAmWJcuOrlzoS+9GBixyTbwTZlyxefTc6l7kwSOf
 jaBw==
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=OidNIGbB1NqN19Lq/a4GgLxJgnSpTUrRIv7C4GySrDc=;
 b=nRqPZ1kmB7s7cGiI4m27n5emZOJt1yyqU/5H1kzyEuVck8CBALvDwyGTb4Ta2aEMa2
 nUPKhtRmuSDw0wyIKBjEd3jDApSHbHk1G5ZfenUTI6Afl1QDEOKYKtr1K8d9sNtGxQcx
 h9vyw3txeTCEWGo/el8P0PQ9HhFaNCIyu7HiUTzYavr0HbodWIz8bjreZHzd4DZU/XY2
 gW5lcUhHbHnDbpk6KNU0djjEso/9yZp59pCTHM3vXwtwcGlSSTpGMrNLkZC5sLU974h0
 4cumVb+sNSdD9QNOOXqX4VBIrj1FabLuIYRpoxolBcZUy4kp2U18Cj36EhBjgh+uSA7S
 3IyA==
X-Gm-Message-State: APjAAAW3JQl70S9sJBHiZ66ubaRK246tl5W2An7A1zd3D4DBOsqqv2if
 CxxV89z0kLfDMjcvuFsHQjf0fRotVMg=
X-Google-Smtp-Source: APXvYqwXQ4CGpvDqflvwlQfDDQ2gQmXDHFYlRcWAInl+CWsJVOM9XMcD7mntTDTHiIgAfu6p8miAzQ==
X-Received: by 2002:a5d:618d:: with SMTP id j13mr7449578wru.195.1560928712783; 
 Wed, 19 Jun 2019 00:18:32 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id l1sm26725648wrf.46.2019.06.19.00.18.31
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:18:32 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:18:16 +0300
Message-Id: <20190619071819.12450-3-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619071819.12450-1-cristb@gmail.com>
References: <20190619071819.12450-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 2/5] plat/drivers: Add 9P device
 initialization
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSA5UCBkcml2ZXIgYW5kIGRldmljZSBpbml0aWFsaXph
dGlvbi4KClNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Ci0t
LQogcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb185cC5oIHwgICA5ICsrKwogcGxh
dC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fOXAuYyAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAz
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92
aXJ0aW9fOXAuaCBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fOXAuaAppbmRl
eCA1NDU5YTM5N2EyYzguLjI5MTU4YWI3MThjMSAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL2lu
Y2x1ZGUvdmlydGlvL3ZpcnRpb185cC5oCisrKyBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRp
by92aXJ0aW9fOXAuaApAQCAtNDEsNCArNDEsMTMgQEAKICNpbmNsdWRlIDx2aXJ0aW8vdmlydGlv
X2NvbmZpZy5oPgogI2luY2x1ZGUgPHZpcnRpby92aXJ0aW9fdHlwZXMuaD4KIAorLyogRmVhdHVy
ZSBiaXRtYXAgZm9yIHZpcnRpbyA5UC4gKi8KKyNkZWZpbmUgVklSVElPXzlQX0ZfTU9VTlRfVEFH
IDAKKworLyogVmlydGlvIDlQIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGxheW91dC4gKi8KK3N0
cnVjdCB2aXJ0aW9fOXBfY29uZmlnIHsKKwlfX3UxNiB0YWdfbGVuOworCV9fdTggdGFnWzBdOwor
fSBfX3BhY2tlZDsKKwogI2VuZGlmIC8qIF9fUExBVF9EUlZfVklSVElPXzlQX0ggKi8KZGlmZiAt
LWdpdCBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMgYi9wbGF0L2RyaXZlcnMvdmly
dGlvL3ZpcnRpb185cC5jCmluZGV4IDg1NTU0OGZlNDg3MC4uNzk4ZWJlOTA4YTZjIDEwMDY0NAot
LS0gYS9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb185cC5jCisrKyBiL3BsYXQvZHJpdmVycy92
aXJ0aW8vdmlydGlvXzlwLmMKQEAgLTMyLDE5ICszMiwxNDUgQEAKICAqIFRISVMgSEVBREVSIE1B
WSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAorI2luY2x1
ZGUgPHVrL2FsbG9jLmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgogI2luY2x1ZGUgPHZp
cnRpby92aXJ0aW9fYnVzLmg+CiAjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb185cC5oPgorI2luY2x1
ZGUgPHVrL3BsYXQvc3BpbmxvY2suaD4KIAotc3RhdGljIGludCB2aXJ0aW9fOXBfYWRkX2Rldihz
dHJ1Y3QgdmlydGlvX2RldiAqdmRldiBfX3VudXNlZCkKKyNkZWZpbmUgRFJJVkVSX05BTUUJInZp
cnRpby05cCIKK3N0YXRpYyBzdHJ1Y3QgdWtfYWxsb2MgKmE7CisKKy8qIExpc3Qgb2YgaW5pdGlh
bGl6ZWQgdmlydGlvIDlwIGRldmljZXMuICovCitzdGF0aWMgVUtfTElTVF9IRUFEKHZpcnRpb185
cF9kZXZpY2VfbGlzdCk7CitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHZpcnRpb185cF9kZXZpY2Vf
bGlzdF9sb2NrKTsKKworc3RydWN0IHZpcnRpb185cF9kZXZpY2UgeworCS8qIFZpcnRpbyBkZXZp
Y2UuICovCisJc3RydWN0IHZpcnRpb19kZXYgKnZkZXY7CisJLyogTW91bnQgdGFnIGZvciB0aGlz
IHZpcnRpbyBkZXZpY2UuICovCisJY2hhciAqdGFnOworCS8qIEVudHJ5IHdpdGhpbiB0aGUgdmly
dGlvIGRldmljZXMnIGxpc3QuICovCisJc3RydWN0IHVrX2xpc3RfaGVhZCBfbGlzdDsKK307CisK
K3N0YXRpYyBpbnQgdmlydGlvXzlwX2ZlYXR1cmVfbmVnb3RpYXRlKHN0cnVjdCB2aXJ0aW9fOXBf
ZGV2aWNlICpkKQogewotCXJldHVybiAwOworCV9fdTY0IGhvc3RfZmVhdHVyZXM7CisJX191MTYg
dGFnX2xlbjsKKwlpbnQgcmMgPSAwOworCisJaG9zdF9mZWF0dXJlcyA9IHZpcnRpb19mZWF0dXJl
X2dldChkLT52ZGV2KTsKKwlpZiAoIXZpcnRpb19oYXNfZmVhdHVyZXMoaG9zdF9mZWF0dXJlcywg
VklSVElPXzlQX0ZfTU9VTlRfVEFHKSkgeworCQl1a19wcl9lcnIoRFJJVkVSX05BTUUiOiBIb3N0
IHN5c3RlbSBkb2VzIG5vdCBvZmZlciBNT1VOVF9UQUcgZmVhdHVyZVxuIik7CisJCXJjID0gLUVJ
TlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJdmlydGlvX2NvbmZpZ19nZXQoZC0+dmRldiwKKwkJ
CSAgX19vZmZzZXRvZihzdHJ1Y3QgdmlydGlvXzlwX2NvbmZpZywgdGFnX2xlbiksCisJCQkgICZ0
YWdfbGVuLCAxLCBzaXplb2YodGFnX2xlbikpOworCisJZC0+dGFnID0gdWtfY2FsbG9jKGEsIHRh
Z19sZW4gKyAxLCBzaXplb2YoKmQtPnRhZykpOworCWlmICghZC0+dGFnKSB7CisJCXJjID0gLUVO
T01FTTsKKwkJZ290byBvdXQ7CisJfQorCisJdmlydGlvX2NvbmZpZ19nZXQoZC0+dmRldiwKKwkJ
CSAgX19vZmZzZXRvZihzdHJ1Y3QgdmlydGlvXzlwX2NvbmZpZywgdGFnKSwKKwkJCSAgZC0+dGFn
LCB0YWdfbGVuLCAxKTsKKwlkLT50YWdbdGFnX2xlbl0gPSAnXDAnOworCisJZC0+dmRldi0+ZmVh
dHVyZXMgJj0gaG9zdF9mZWF0dXJlczsKKwl2aXJ0aW9fZmVhdHVyZV9zZXQoZC0+dmRldiwgZC0+
dmRldi0+ZmVhdHVyZXMpOworCitvdXQ6CisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW5saW5l
IHZvaWQgdmlydGlvXzlwX2ZlYXR1cmVfc2V0KHN0cnVjdCB2aXJ0aW9fOXBfZGV2aWNlICpkKQor
eworCWQtPnZkZXYtPmZlYXR1cmVzID0gMDsKKwlWSVJUSU9fRkVBVFVSRVNfVVBEQVRFKGQtPnZk
ZXYtPmZlYXR1cmVzLCBWSVJUSU9fOVBfRl9NT1VOVF9UQUcpOworfQorCitzdGF0aWMgaW50IHZp
cnRpb185cF9jb25maWd1cmUoc3RydWN0IHZpcnRpb185cF9kZXZpY2UgKmQpCit7CisJaW50IHJj
ID0gMDsKKworCXJjID0gdmlydGlvXzlwX2ZlYXR1cmVfbmVnb3RpYXRlKGQpOworCWlmIChyYyAh
PSAwKSB7CisJCXVrX3ByX2VycihEUklWRVJfTkFNRSI6IEZhaWxlZCB0byBuZWdvdGlhdGUgdGhl
IGRldmljZSBmZWF0dXJlICVkXG4iLAorCQkJcmMpOworCQlyYyA9IC1FSU5WQUw7CisJCWdvdG8g
b3V0X3N0YXR1c19mYWlsOworCX0KKworCXVrX3ByX2luZm8oRFJJVkVSX05BTUUiOiBDb25maWd1
cmVkOiBmZWF0dXJlcz0weCVseCB0YWc9JXNcbiIsCisJCQlkLT52ZGV2LT5mZWF0dXJlcywgZC0+
dGFnKTsKK291dDoKKwlyZXR1cm4gcmM7CisKK291dF9zdGF0dXNfZmFpbDoKKwl2aXJ0aW9fZGV2
X3N0YXR1c191cGRhdGUoZC0+dmRldiwgVklSVElPX0NPTkZJR19TVEFUVVNfRkFJTCk7CisJZ290
byBvdXQ7CiB9CiAKLXN0YXRpYyBpbnQgdmlydGlvXzlwX2Rydl9pbml0KHN0cnVjdCB1a19hbGxv
YyAqZHJ2X2FsbG9jYXRvciBfX3VudXNlZCkKK3N0YXRpYyBpbnQgdmlydGlvXzlwX3N0YXJ0KHN0
cnVjdCB2aXJ0aW9fOXBfZGV2aWNlICpkKQogeworCXZpcnRpb19kZXZfZHJ2X3VwKGQtPnZkZXYp
OworCXVrX3ByX2luZm8oRFJJVkVSX05BTUUiOiAlcyBzdGFydGVkXG4iLCBkLT50YWcpOworCiAJ
cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdmlydGlvXzlwX2FkZF9kZXYoc3RydWN0IHZpcnRp
b19kZXYgKnZkZXYpCit7CisJc3RydWN0IHZpcnRpb185cF9kZXZpY2UgKmQ7CisJdW5zaWduZWQg
bG9uZyBmbGFnczsKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKHZkZXYgIT0gTlVMTCk7CisK
KwlkID0gdWtfY2FsbG9jKGEsIDEsIHNpemVvZigqZCkpOworCWlmICghZCkgeworCQlyYyA9IC1F
Tk9NRU07CisJCWdvdG8gb3V0OworCX0KKwlkLT52ZGV2ID0gdmRldjsKKwl2aXJ0aW9fOXBfZmVh
dHVyZV9zZXQoZCk7CisJcmMgPSB2aXJ0aW9fOXBfY29uZmlndXJlKGQpOworCWlmIChyYykKKwkJ
Z290byBvdXRfZnJlZTsKKwlyYyA9IHZpcnRpb185cF9zdGFydChkKTsKKwlpZiAocmMpCisJCWdv
dG8gb3V0X2ZyZWU7CisKKwl1a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUoJnZpcnRpb185cF9kZXZp
Y2VfbGlzdF9sb2NrLCBmbGFncyk7CisJdWtfbGlzdF9hZGQoJmQtPl9saXN0LCAmdmlydGlvXzlw
X2RldmljZV9saXN0KTsKKwl1a3BsYXRfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlydGlvXzlw
X2RldmljZV9saXN0X2xvY2ssIGZsYWdzKTsKK291dDoKKwlyZXR1cm4gcmM7CitvdXRfZnJlZToK
Kwl1a19mcmVlKGEsIGQpOworCWdvdG8gb3V0OworfQorCitzdGF0aWMgaW50IHZpcnRpb185cF9k
cnZfaW5pdChzdHJ1Y3QgdWtfYWxsb2MgKmRydl9hbGxvY2F0b3IpCit7CisJaW50IHJjID0gMDsK
KworCWlmICghZHJ2X2FsbG9jYXRvcikgeworCQlyYyA9IC1FSU5WQUw7CisJCWdvdG8gb3V0Owor
CX0KKworCWEgPSBkcnZfYWxsb2NhdG9yOworb3V0OgorCXJldHVybiByYzsKK30KKwogc3RhdGlj
IGNvbnN0IHN0cnVjdCB2aXJ0aW9fZGV2X2lkIHY5cF9kZXZfaWRbXSA9IHsKIAl7VklSVElPX0lE
XzlQfSwKIAl7VklSVElPX0lEX0lOVkFMSUR9IC8qIExpc3QgVGVybWluYXRvciAqLwotLSAKMi4x
MS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:18:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:18: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 1hdUrd-0000R4-EU; Wed, 19 Jun 2019 07:18:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUrc-0000Q6-AH
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:18:36 +0000
X-Inumbo-ID: 72b99ee4-9262-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 72b99ee4-9262-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:18:34 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id n9so2155765wru.0
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:18: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=Q6i0e+voW3Q3lsZxY8ocOwXaKzhT/N5gXdhUuboLHRs=;
 b=fbMKi7fr/rkNXgaLGyRRB3IemdUFN5i1+xYs2UkGsOR3fhvst7WNwNq+iQw/5fCG3C
 ZHwpYDzsO13uIYzIJgFaD9OHzmz0s2vYAfeA6Py9PQaDkdJ0JkK2tNVRTZ1yfVQQZglQ
 20rtJY+r2kU1H422xwPka9wu+EzdgPFcLjTDbqP6uHZaUjzWNRIWdHXNWvfwSyYFehhX
 qVDkzKpF+pbRmnxwIjAvgAeK/g4jWoaXhhya60BjDYlnYGmUESzin5eLeVOV2fYLbTr9
 pCJL/jIsOtDOkcD/BtegpsVK6OMGMFFLutrb5O5KKqqrWuls+hreRMGcJ/IiSw9iVJK1
 B6fg==
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=Q6i0e+voW3Q3lsZxY8ocOwXaKzhT/N5gXdhUuboLHRs=;
 b=fsVmzce9r+ypA72rFYBnAxB5FduMA9m/gSG4O949bq6sI1OkzbWWEdZk1ovQ4BaC8A
 SK6ZaquyrDvdUhPj370M3QgDNPvbKR9PEnnyAbdsLhXqcDG+brVBDQBnx22k8tWVckWh
 tBvo6TPYsjRbBa5YUxXBDqmuAkMr/5229TlJy6SCdkx4DjYAcBntiyHhp4J0HAmzAcKY
 Jngf3ypxg8AySk2kPFO233W51uhkQd9XCfOQatXWJ41FGK39/NFSm0hWAaM+p9zznF5p
 ZDwr/HU0GPcPv2lm0jdWB1U0AstoV0dPFtXY57B3s9napHaRmHLOqEJvzjGfCquBbJ0Q
 lJmw==
X-Gm-Message-State: APjAAAUp3JWxfuYVM4nQvMk8GT7zqAIvv1uYBu8QgPWYDNOKKBDNFql6
 xEWUPY+CYkwqtI0j7WbGYRq5MWZXdUQ=
X-Google-Smtp-Source: APXvYqyNByaIcY4ADpw8fHbGFvyOPH3ryNYLVtJ6bNFH96M6iVGtre+ACVJvRCj0BmybX/G3L9HCrA==
X-Received: by 2002:adf:de8b:: with SMTP id w11mr1098584wrl.134.1560928713614; 
 Wed, 19 Jun 2019 00:18:33 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id l1sm26725648wrf.46.2019.06.19.00.18.32
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:18:33 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:18:17 +0300
Message-Id: <20190619071819.12450-4-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619071819.12450-1-cristb@gmail.com>
References: <20190619071819.12450-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 3/5] plat/drivers: Allocate
 virtqueue for virtio 9P
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHZpcnRxdWV1ZSBhbGxvY2F0aW9uIHdpdGggYSBzdHViYmVk
IGludGVycnVwdApoYW5kbGVyIGZvciB2aXJ0aW8gOVAgZGV2aWNlcy4KClNpZ25lZC1vZmYtYnk6
IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Ci0tLQogcGxhdC9kcml2ZXJzL3ZpcnRp
by92aXJ0aW9fOXAuYyB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQv
ZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMgYi9wbGF0L2RyaXZlcnMvdmlydGlvL3ZpcnRpb185
cC5jCmluZGV4IDc5OGViZTkwOGE2Yy4uYWIzYTFiMTY3OWRlIDEwMDY0NAotLS0gYS9wbGF0L2Ry
aXZlcnMvdmlydGlvL3ZpcnRpb185cC5jCisrKyBiL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlv
XzlwLmMKQEAgLTMyLDYgKzMyLDcgQEAKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KIAorI2luY2x1ZGUgPGludHR5cGVzLmg+
CiAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CiAjaW5j
bHVkZSA8dmlydGlvL3ZpcnRpb19idXMuaD4KQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlIDx1
ay9wbGF0L3NwaW5sb2NrLmg+CiAKICNkZWZpbmUgRFJJVkVSX05BTUUJInZpcnRpby05cCIKKyNk
ZWZpbmUgTlVNX1NFR01FTlRTCTEyOCAvKiogVGhlIG51bWJlciBvZiB2aXJ0cXVldWUgZGVzY3Jp
cHRvcnMuICovCiBzdGF0aWMgc3RydWN0IHVrX2FsbG9jICphOwogCiAvKiBMaXN0IG9mIGluaXRp
YWxpemVkIHZpcnRpbyA5cCBkZXZpY2VzLiAqLwpAQCAtNTIsOCArNTQsNTYgQEAgc3RydWN0IHZp
cnRpb185cF9kZXZpY2UgewogCWNoYXIgKnRhZzsKIAkvKiBFbnRyeSB3aXRoaW4gdGhlIHZpcnRp
byBkZXZpY2VzJyBsaXN0LiAqLwogCXN0cnVjdCB1a19saXN0X2hlYWQgX2xpc3Q7CisJLyogVmly
dHF1ZXVlIHJlZmVyZW5jZS4gKi8KKwlzdHJ1Y3QgdmlydHF1ZXVlICp2cTsKKwkvKiBIdyBxdWV1
ZSBpZGVudGlmaWVyLiAqLworCXVpbnQxNl90IGh3dnFfaWQ7CiB9OwogCitzdGF0aWMgaW50IHZp
cnRpb185cF9yZWN2KHN0cnVjdCB2aXJ0cXVldWUgKnZxIF9fdW51c2VkLCB2b2lkICpwcml2IF9f
dW51c2VkKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZpcnRpb185cF92cV9hbGxv
YyhzdHJ1Y3QgdmlydGlvXzlwX2RldmljZSAqZCkKK3sKKwlpbnQgdnFfYXZhaWwgPSAwOworCWlu
dCByYyA9IDA7CisJX191MTYgcWRlc2Nfc2l6ZTsKKworCXZxX2F2YWlsID0gdmlydGlvX2ZpbmRf
dnFzKGQtPnZkZXYsIDEsICZxZGVzY19zaXplKTsKKwlpZiAodW5saWtlbHkodnFfYXZhaWwgIT0g
MSkpIHsKKwkJdWtfcHJfZXJyKERSSVZFUl9OQU1FIjogRXhwZWN0ZWQ6ICVkIHF1ZXVlcywgZm91
bmQgJWRcbiIsCisJCQkgIDEsIHZxX2F2YWlsKTsKKwkJcmMgPSAtRU5PTUVNOworCQlnb3RvIGV4
aXQ7CisJfQorCisJZC0+aHd2cV9pZCA9IDA7CisJaWYgKHVubGlrZWx5KHFkZXNjX3NpemUgIT0g
TlVNX1NFR01FTlRTKSkgeworCQl1a19wcl9lcnIoRFJJVkVSX05BTUUiOiBFeHBlY3RlZCAlZCBk
ZXNjcmlwdG9ycywgZm91bmQgJWQgKHZpcnRxdWV1ZSAlIgorCQkJICBQUkl1MTYiKVxuIiwgTlVN
X1NFR01FTlRTLCBxZGVzY19zaXplLCBkLT5od3ZxX2lkKTsKKwkJcmMgPSAtRUlOVkFMOworCQln
b3RvIGV4aXQ7CisJfQorCisJZC0+dnEgPSB2aXJ0aW9fdnF1ZXVlX3NldHVwKGQtPnZkZXYsCisJ
CQkJICAgIGQtPmh3dnFfaWQsCisJCQkJICAgIHFkZXNjX3NpemUsCisJCQkJICAgIHZpcnRpb185
cF9yZWN2LAorCQkJCSAgICBhKTsKKwlpZiAodW5saWtlbHkoUFRSSVNFUlIoZC0+dnEpKSkgewor
CQl1a19wcl9lcnIoRFJJVkVSX05BTUUiOiBGYWlsZWQgdG8gc2V0IHVwIHZpcnRxdWV1ZSAlIlBS
SXUxNiJcbiIsCisJCQkgIGQtPmh3dnFfaWQpOworCQlyYyA9IFBUUjJFUlIoZC0+dnEpOworCX0K
KworCWQtPnZxLT5wcml2ID0gZDsKKworZXhpdDoKKwlyZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBp
bnQgdmlydGlvXzlwX2ZlYXR1cmVfbmVnb3RpYXRlKHN0cnVjdCB2aXJ0aW9fOXBfZGV2aWNlICpk
KQogewogCV9fdTY0IGhvc3RfZmVhdHVyZXM7CkBAIC0xMDcsNiArMTU3LDEyIEBAIHN0YXRpYyBp
bnQgdmlydGlvXzlwX2NvbmZpZ3VyZShzdHJ1Y3QgdmlydGlvXzlwX2RldmljZSAqZCkKIAkJZ290
byBvdXRfc3RhdHVzX2ZhaWw7CiAJfQogCisJcmMgPSB2aXJ0aW9fOXBfdnFfYWxsb2MoZCk7CisJ
aWYgKHJjKSB7CisJCXVrX3ByX2VycihEUklWRVJfTkFNRSI6IENvdWxkIG5vdCBhbGxvY2F0ZSB2
aXJ0cXVldWVcbiIpOworCQlnb3RvIG91dF9zdGF0dXNfZmFpbDsKKwl9CisKIAl1a19wcl9pbmZv
KERSSVZFUl9OQU1FIjogQ29uZmlndXJlZDogZmVhdHVyZXM9MHglbHggdGFnPSVzXG4iLAogCQkJ
ZC0+dmRldi0+ZmVhdHVyZXMsIGQtPnRhZyk7CiBvdXQ6CkBAIC0xMTksNiArMTc1LDcgQEAgb3V0
X3N0YXR1c19mYWlsOgogCiBzdGF0aWMgaW50IHZpcnRpb185cF9zdGFydChzdHJ1Y3QgdmlydGlv
XzlwX2RldmljZSAqZCkKIHsKKwl2aXJ0cXVldWVfaW50cl9lbmFibGUoZC0+dnEpOwogCXZpcnRp
b19kZXZfZHJ2X3VwKGQtPnZkZXYpOwogCXVrX3ByX2luZm8oRFJJVkVSX05BTUUiOiAlcyBzdGFy
dGVkXG4iLCBkLT50YWcpOwogCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:18:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:18: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 1hdUre-0000Rc-Fx; Wed, 19 Jun 2019 07:18:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUrc-0000QS-ID
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:18:36 +0000
X-Inumbo-ID: 733f9a3a-9262-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 733f9a3a-9262-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:18:35 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n4so2057425wrw.13
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:18:35 -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=HTn3cX7hPRCxwB1zh8BFG6yk25Zn0ZzuvpxEpfgt8kY=;
 b=GmZ/JmEgYibO/g9ruenUwrN4Hia96jLx7Oup7oMBMQtxh4wAFC1slWo2wRcfIjn+uQ
 /0iwteRKHl2XXvzva0kzJ36ffBqgK0SFr+9a2A3+O70cC3wHTaWcHZEvNu/iBumScbL1
 1TSt5rIWd9Ah0NyA+Zq9IelzxmS3RrlXtJzXt3lFVjX9BNMRhqexAChSZv2KjpvMfZZ/
 5BNLeFYx0oDU6kZhDIvQUNnzvkpEJwbWm7nq2Pb78KPB5v2tb3J+dYbil5Q1gh5iizuK
 G/2xIl84Z71P10LkczruXkQwwrL45JP3OFQp417Qj1PhH3KJR/PZps6ynYb2+ZNHWD+/
 H+yA==
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=HTn3cX7hPRCxwB1zh8BFG6yk25Zn0ZzuvpxEpfgt8kY=;
 b=exAfG/m8No91Z2zCRiESVEGKE7k1UBX7CBW8BxHEZ5MqQ+HOJa7f1BCSVLOsI41XTy
 ilG9cNmXkFbnsxPcDdLzXgdd3jN8Aw/LruxfTjTPA75qGCDfPqWPVT+Coe79k7vnYn7D
 OGOGn911CtLoUy8N0FSTGVl6TLAeD7ubbq6mgbxU07ML8LOi2vM2CgL/uaR5d2N8XC3H
 SIwMDRsbEOio+yvXVXufd/RvFuAnonf1Rwo4GSiLnW5PwpL4xA6bMrdWvQKmKOFsm9PP
 CEiKuLFNp7wHoonr5ekTFRtaJnwk3X9CwFH0CQHu4DjvoteCbBGmhn7rjYXbamP1gYuG
 sWwQ==
X-Gm-Message-State: APjAAAXTk958CY2m22/G4jlLHvOMJKB44hyovT5kvcNTEr+SrIWcBN/i
 zanpe9h1r3xwETIKR9P5z3sbWx2EmRI=
X-Google-Smtp-Source: APXvYqzOy2+pj6rj8acqBmbVeZUyv4rNt17BEz/sArHQTQAxENovcxK686bHqolqg/NI6yria8ZWlw==
X-Received: by 2002:a5d:5303:: with SMTP id e3mr21144597wrv.239.1560928714477; 
 Wed, 19 Jun 2019 00:18:34 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id l1sm26725648wrf.46.2019.06.19.00.18.33
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:18:34 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:18:18 +0300
Message-Id: <20190619071819.12450-5-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619071819.12450-1-cristb@gmail.com>
References: <20190619071819.12450-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 4/5] plat/drivers: Add 9P transport
 for virtio 9P
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSA5UCB0cmFuc3BvcnQgZHJpdmVyIHNrZWxldG9uIGZvciB2aXJ0
aW8gOVAgZGV2aWNlcywKYnkgcHJvdmlkaW5nIHRoZSByZXF1aXJlZCBjb25uZWN0LCBkaXNjb25u
ZWN0IGFuZCByZXF1ZXN0IGNhbGxiYWNrcy4gVGhlCnJlcXVlc3QgY2FsbGJhY2sgaXMgbGVmdCBh
cyBhIHN0dWIgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGZvbGxvd2luZwpwYXRjaGVzLgoKU2ln
bmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KLS0tCiBwbGF0L2Ry
aXZlcnMvdmlydGlvL3ZpcnRpb185cC5jIHwgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspCgpkaWZmIC0t
Z2l0IGEvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fOXAuYyBiL3BsYXQvZHJpdmVycy92aXJ0
aW8vdmlydGlvXzlwLmMKaW5kZXggYWIzYTFiMTY3OWRlLi4wOGIyZWI2MmEyNzMgMTAwNjQ0Ci0t
LSBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMKKysrIGIvcGxhdC9kcml2ZXJzL3Zp
cnRpby92aXJ0aW9fOXAuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPGludHR5cGVzLmg+
CiAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CisjaW5j
bHVkZSA8dWsvOXBkZXZfdHJhbnMuaD4KICNpbmNsdWRlIDx2aXJ0aW8vdmlydGlvX2J1cy5oPgog
I2luY2x1ZGUgPHZpcnRpby92aXJ0aW9fOXAuaD4KICNpbmNsdWRlIDx1ay9wbGF0L3NwaW5sb2Nr
Lmg+CkBAIC01OCw2ICs1OSw4NiBAQCBzdHJ1Y3QgdmlydGlvXzlwX2RldmljZSB7CiAJc3RydWN0
IHZpcnRxdWV1ZSAqdnE7CiAJLyogSHcgcXVldWUgaWRlbnRpZmllci4gKi8KIAl1aW50MTZfdCBo
d3ZxX2lkOworCS8qIGxpYnVrOXAgYXNzb2NpYXRlZCBkZXZpY2UgKE5VTEwgaWYgdGhlIGRldmlj
ZSBpcyBub3QgaW4gdXNlKS4gKi8KKwlzdHJ1Y3QgdWtfOXBkZXYgKnA5ZGV2OworfTsKKworc3Rh
dGljIGludCB2aXJ0aW9fOXBfY29ubmVjdChzdHJ1Y3QgdWtfOXBkZXYgKnA5ZGV2LAorCQkJICAg
ICBjb25zdCBjaGFyICpkZXZpY2VfaWRlbnRpZmllciwKKwkJCSAgICAgY29uc3QgY2hhciAqbW91
bnRfYXJncyBfX3VudXNlZCkKK3sKKwlzdHJ1Y3QgdmlydGlvXzlwX2RldmljZSAqZGV2ID0gTlVM
TDsKKwlpbnQgcmMgPSAwOworCWludCBmb3VuZCA9IDA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK
KworCXVrcGxhdF9zcGluX2xvY2tfaXJxc2F2ZSgmdmlydGlvXzlwX2RldmljZV9saXN0X2xvY2ss
IGZsYWdzKTsKKwl1a19saXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJnZpcnRpb185cF9kZXZpY2Vf
bGlzdCwgX2xpc3QpIHsKKwkJaWYgKCFzdHJjbXAoZGV2LT50YWcsIGRldmljZV9pZGVudGlmaWVy
KSkgeworCQkJaWYgKGRldi0+cDlkZXYgIT0gTlVMTCkgeworCQkJCXJjID0gLUVCVVNZOworCQkJ
CWdvdG8gb3V0OworCQkJfQorCQkJZm91bmQgPSAxOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlp
ZiAoIWZvdW5kKSB7CisJCXJjID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJLyoKKwkg
KiBUaGUgbWF4aW11bSBtZXNzYWdlIHNpemUgaXMgZ2l2ZW4gYnkgdGhlIG51bWJlciBvZiBzZWdt
ZW50cy4KKwkgKgorCSAqIEZvciByZWFkIHJlcXVlc3RzLCB0aGUgcmVwbHkgd2lsbCBiZSBhYmxl
IHRvIG1ha2UgdXNlIG9mIHRoZSBsYXJnZQorCSAqIG1zaXplLCBhbmQgdGhlIHJlcXVlc3Qgd2ls
bCBub3QgZXhjZWVkIG9uZSBzZWdtZW50LgorCSAqIFNpbWlsYXJseSBmb3Igd3JpdGUgcmVxdWVz
dHMsIGJ1dCBpbiByZXZlcnNlLiBPdGhlciByZXF1ZXN0cyBzaG91bGQKKwkgKiBub3QgZXhjZWVk
IG9uZSBwYWdlIGZvciBib3RoIHJlY3YgYW5kIHhtaXQgZmNhbGxzLgorCSAqLworCXA5ZGV2LT5t
c2l6ZSA9IChOVU1fU0VHTUVOVFMgLSAxKSAqIF9fUEFHRV9TSVpFOworCisJZGV2LT5wOWRldiA9
IHA5ZGV2OworCXA5ZGV2LT5wcml2ID0gZGV2OworCitvdXQ6CisJdWtwbGF0X3NwaW5fdW5sb2Nr
X2lycXJlc3RvcmUoJnZpcnRpb185cF9kZXZpY2VfbGlzdF9sb2NrLCBmbGFncyk7CisJcmV0dXJu
IHJjOworfQorCitzdGF0aWMgaW50IHZpcnRpb185cF9kaXNjb25uZWN0KHN0cnVjdCB1a185cGRl
diAqcDlkZXYpCit7CisJc3RydWN0IHZpcnRpb185cF9kZXZpY2UgKmRldjsKKwl1bnNpZ25lZCBs
b25nIGZsYWdzOworCisJVUtfQVNTRVJUKHA5ZGV2KTsKKwlkZXYgPSBwOWRldi0+cHJpdjsKKwor
CXVrcGxhdF9zcGluX2xvY2tfaXJxc2F2ZSgmdmlydGlvXzlwX2RldmljZV9saXN0X2xvY2ssIGZs
YWdzKTsKKwlkZXYtPnA5ZGV2ID0gTlVMTDsKKwl1a3BsYXRfc3Bpbl91bmxvY2tfaXJxcmVzdG9y
ZSgmdmlydGlvXzlwX2RldmljZV9saXN0X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiAwOworfQor
CitzdGF0aWMgaW50IHZpcnRpb185cF9yZXF1ZXN0KHN0cnVjdCB1a185cGRldiAqcDlkZXYgX191
bnVzZWQsCisJCQkgICAgIHN0cnVjdCB1a185cHJlcSAqcmVxIF9fdW51c2VkKQoreworCXJldHVy
biAtRU9QTk9UU1VQUDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB1a185cGRldl90cmFuc19v
cHMgdjlwX3RyYW5zX29wcyA9IHsKKwkuY29ubmVjdCAgICAgICAgPSB2aXJ0aW9fOXBfY29ubmVj
dCwKKwkuZGlzY29ubmVjdCAgICAgPSB2aXJ0aW9fOXBfZGlzY29ubmVjdCwKKwkucmVxdWVzdCAg
ICAgICAgPSB2aXJ0aW9fOXBfcmVxdWVzdAorfTsKKworc3RhdGljIHN0cnVjdCB1a185cGRldl90
cmFucyB2OXBfdHJhbnMgPSB7CisJLm5hbWUgICAgICAgICAgID0gInZpcnRpbyIsCisJLm9wcyAg
ICAgICAgICAgID0gJnY5cF90cmFuc19vcHMsCisJLmlzX2RlZmF1bHQgICAgID0gMSwKKwkuYSAg
ICAgICAgICAgICAgPSBOVUxMIC8qIFNldCBieSB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLiAq
LwogfTsKIAogc3RhdGljIGludCB2aXJ0aW9fOXBfcmVjdihzdHJ1Y3QgdmlydHF1ZXVlICp2cSBf
X3VudXNlZCwgdm9pZCAqcHJpdiBfX3VudXNlZCkKQEAgLTIyNCw2ICszMDUsOSBAQCBzdGF0aWMg
aW50IHZpcnRpb185cF9kcnZfaW5pdChzdHJ1Y3QgdWtfYWxsb2MgKmRydl9hbGxvY2F0b3IpCiAJ
fQogCiAJYSA9IGRydl9hbGxvY2F0b3I7CisJdjlwX3RyYW5zLmEgPSBhOworCisJcmMgPSB1a185
cGRldl90cmFuc19yZWdpc3RlcigmdjlwX3RyYW5zKTsKIG91dDoKIAlyZXR1cm4gcmM7CiB9Ci0t
IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 07:18:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 07:18: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 1hdUrf-0000SG-JE; Wed, 19 Jun 2019 07:18:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=P/R6=US=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hdUrd-0000RN-R0
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 07:18:37 +0000
X-Inumbo-ID: 73c81017-9262-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 73c81017-9262-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 07:18:36 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id k11so2145423wrl.1
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 00:18: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:in-reply-to:references;
 bh=CHWMJKScr3/4jKiznPMZ157Rnm63xvXalWWr+7BL1ZA=;
 b=MmiSnk5d4R+LM5D7mHMxvvOr7CesoJiQXC70HNPiFaTD3cnpGycWX89k2f/FJA7Ysm
 q7CAGnKKzOyqxODQqFxK2lBEs3vkUCR4RYjJfNzMl9I9cTsusFzXDDvbOD6h19u8T/Zq
 uF/jXqPdwFeW5s6Al3BnEJ+lLGQV4Fu/CpHoXDyy9EolFaHaGAqj8Qp0ODCnVvgdUbaN
 8jv97REvijB2M6qpCfMJE3U5PFOYFUR8buEjPCSStQrup23Hhqae9m04LK/ALvY++7dH
 Re+u5bcn+R4bGDNsH/AIJ2RGZk0WmdX0Kj7r2o7OZREbCAodxF/zGiZJhJrNTubILiuF
 MyUA==
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=CHWMJKScr3/4jKiznPMZ157Rnm63xvXalWWr+7BL1ZA=;
 b=YZSwEJ5KRF/pve/RD0B/NZ/C7yhrhrk+Pac/rXnSQPU9lffbSOSd6j97tGv/om5/lg
 pC3E23teQFg+g0PG0Q/5XkgHO52+QrnguA+ZDxNW9STxnOJ+w0gMpq/aY4Jl44kD14om
 kSz+i30+AN4vSBJxKzSmVFoIVaHQvHwvF29TUdwGgwsC6AGZYhKU73EWxaP1BflPVAAZ
 rEEOl1uy1YCIwOR5yQ6MFm16x1zLvFmu9WYQg343q+TMvJPRH9U40MBili+k6VDLpbpk
 7kTBWBaJFVDVFBAuHEkcDDXLgcCUKa7Pkz8iBimyXnX4Tx2mR17UypyuZgmxlYfmOIS5
 xZdA==
X-Gm-Message-State: APjAAAWlnbC9L6ixD3+yhQpAUWksoJjL7MRKKobDGQOwgb0Sx+4jsOKL
 1MWOUZPP5a1JJ8R7CZGnHZsPePCpIsc=
X-Google-Smtp-Source: APXvYqzzETD6qOoTB+eU4HSM2pxY0e11Q4gKE8nxJWWqn0YPBB04T2R1zOnOkSvC7rJt2Tc72LK16w==
X-Received: by 2002:adf:efcb:: with SMTP id i11mr36188110wrp.188.1560928715335; 
 Wed, 19 Jun 2019 00:18:35 -0700 (PDT)
Received: from localhost.localdomain (p16.eregie.pub.ro. [141.85.0.116])
 by smtp.gmail.com with ESMTPSA id l1sm26725648wrf.46.2019.06.19.00.18.34
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Wed, 19 Jun 2019 00:18:34 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 10:18:19 +0300
Message-Id: <20190619071819.12450-6-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619071819.12450-1-cristb@gmail.com>
References: <20190619071819.12450-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 5/5] plat/drivers: Implement virtio
 9P request and recv
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSB2aXJ0aW8gcmVxdWVzdCBhbmQgcmVjZWl2ZSBjYWxs
YmFja3MuCgpTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgot
LS0KIHBsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMgfCAxMDIgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDk5IGluc2VydGlvbnMo
KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0
aW9fOXAuYyBiL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlvXzlwLmMKaW5kZXggMDhiMmViNjJh
MjczLi43Y2NmMzc1YjdmNmYgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy92aXJ0aW8vdmlydGlv
XzlwLmMKKysrIGIvcGxhdC9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fOXAuYwpAQCAtMzUsNiArMzUs
OSBAQAogI2luY2x1ZGUgPGludHR5cGVzLmg+CiAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KICNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+CisjaW5jbHVkZSA8dWsvc2dsaXN0Lmg+CisjaW5jbHVkZSA8
dWsvOXBkZXYuaD4KKyNpbmNsdWRlIDx1ay85cHJlcS5oPgogI2luY2x1ZGUgPHVrLzlwZGV2X3Ry
YW5zLmg+CiAjaW5jbHVkZSA8dmlydGlvL3ZpcnRpb19idXMuaD4KICNpbmNsdWRlIDx2aXJ0aW8v
dmlydGlvXzlwLmg+CkBAIC02MSw2ICs2NCwxMSBAQCBzdHJ1Y3QgdmlydGlvXzlwX2RldmljZSB7
CiAJdWludDE2X3QgaHd2cV9pZDsKIAkvKiBsaWJ1azlwIGFzc29jaWF0ZWQgZGV2aWNlIChOVUxM
IGlmIHRoZSBkZXZpY2UgaXMgbm90IGluIHVzZSkuICovCiAJc3RydWN0IHVrXzlwZGV2ICpwOWRl
djsKKwkvKiBTY2F0dGVyLWdhdGhlciBsaXN0LiAqLworCXN0cnVjdCB1a19zZ2xpc3Qgc2c7CisJ
c3RydWN0IHVrX3NnbGlzdF9zZWcgc2dzZWdzW05VTV9TRUdNRU5UU107CisJLyogU3BpbmxvY2sg
cHJvdGVjdGluZyB0aGUgc2cgbGlzdC4gKi8KKwlzcGlubG9ja190IHNwaW5sb2NrOwogfTsKIAog
c3RhdGljIGludCB2aXJ0aW9fOXBfY29ubmVjdChzdHJ1Y3QgdWtfOXBkZXYgKnA5ZGV2LApAQCAt
MTI1LDcgKzEzMyw1NiBAQCBzdGF0aWMgaW50IHZpcnRpb185cF9kaXNjb25uZWN0KHN0cnVjdCB1
a185cGRldiAqcDlkZXYpCiBzdGF0aWMgaW50IHZpcnRpb185cF9yZXF1ZXN0KHN0cnVjdCB1a185
cGRldiAqcDlkZXYgX191bnVzZWQsCiAJCQkgICAgIHN0cnVjdCB1a185cHJlcSAqcmVxIF9fdW51
c2VkKQogewotCXJldHVybiAtRU9QTk9UU1VQUDsKKwlzdHJ1Y3QgdmlydGlvXzlwX2RldmljZSAq
ZGV2OworCWludCByYywgaG9zdF9ub3RpZmllZCA9IDA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK
KwlzaXplX3QgcmVhZF9zZWdzLCB3cml0ZV9zZWdzOworCisJVUtfQVNTRVJUKHA5ZGV2KTsKKwlV
S19BU1NFUlQocmVxKTsKKwlVS19BU1NFUlQoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpID09IFVL
XzlQUkVRX1JFQURZKTsKKworCS8qCisJICogR2V0IHRoZSByZXF1ZXN0IHN1Y2ggdGhhdCBpdCB3
b24ndCBnZXQgZnJlZWQgd2hpbGUgaXQncworCSAqIHVzZWQgYXMgYSBjb29raWUgZm9yIHRoZSB2
aXJ0cXVldWUuCisJICovCisJdWtfOXByZXFfZ2V0KHJlcSk7CisJZGV2ID0gcDlkZXYtPnByaXY7
CisJdWtwbGF0X3NwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7CisJdWtf
c2dsaXN0X3Jlc2V0KCZkZXYtPnNnKTsKKworCXJjID0gdWtfc2dsaXN0X2FwcGVuZCgmZGV2LT5z
ZywgcmVxLT54bWl0LmJ1ZiwgcmVxLT54bWl0LnNpemUpOworCWlmIChyYyA8IDApIHsKKwkJdWtf
cHJfZXJyKERSSVZFUl9OQU1FIjogRmFpbGVkIHRvIGFwcGVuZCB0byB0aGUgc2cgbGlzdC5cbiIp
OworCQlnb3RvIG91dF9pcnE7CisJfQorCXJlYWRfc2VncyA9IGRldi0+c2cuc2dfbnNlZzsKKwor
CXJjID0gdWtfc2dsaXN0X2FwcGVuZCgmZGV2LT5zZywgcmVxLT5yZWN2LmJ1ZiwgcmVxLT5yZWN2
LnNpemUpOworCWlmIChyYyA8IDApIHsKKwkJdWtfcHJfZXJyKERSSVZFUl9OQU1FIjogRmFpbGVk
IHRvIGFwcGVuZCB0byB0aGUgc2cgbGlzdC5cbiIpOworCQlnb3RvIG91dF9pcnE7CisJfQorCXdy
aXRlX3NlZ3MgPSBkZXYtPnNnLnNnX25zZWcgLSByZWFkX3NlZ3M7CisKKwlyYyA9IHZpcnRxdWV1
ZV9idWZmZXJfZW5xdWV1ZShkZXYtPnZxLCByZXEsICZkZXYtPnNnLAorCQkJCSAgICAgIHJlYWRf
c2Vncywgd3JpdGVfc2Vncyk7CisJaWYgKGxpa2VseShyYyA+PSAwKSkgeworCQlVS19XUklURV9P
TkNFKHJlcS0+c3RhdGUsIFVLXzlQUkVRX1NFTlQpOworCQl2aXJ0cXVldWVfaG9zdF9ub3RpZnko
ZGV2LT52cSk7CisJCWhvc3Rfbm90aWZpZWQgPSAxOworCQlyYyA9IDA7CisJfQorCitvdXRfaXJx
OgorCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7
CisJLyoKKwkgKiBSZWxlYXNlIHRoZSByZWZlcmVuY2UgdG8gdGhlIDlQIHJlcXVlc3QgaWYgaXQg
d2FzIG5vdCBzdWNjZXNzZnVsbHkKKwkgKiBzZW50LgorCSAqLworCWlmICghaG9zdF9ub3RpZmll
ZCkKKwkJdWtfOXByZXFfcHV0KHJlcSk7CisJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgY29uc3Qg
c3RydWN0IHVrXzlwZGV2X3RyYW5zX29wcyB2OXBfdHJhbnNfb3BzID0gewpAQCAtMTQxLDkgKzE5
OCw0NSBAQCBzdGF0aWMgc3RydWN0IHVrXzlwZGV2X3RyYW5zIHY5cF90cmFucyA9IHsKIAkuYSAg
ICAgICAgICAgICAgPSBOVUxMIC8qIFNldCBieSB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLiAq
LwogfTsKIAotc3RhdGljIGludCB2aXJ0aW9fOXBfcmVjdihzdHJ1Y3QgdmlydHF1ZXVlICp2cSBf
X3VudXNlZCwgdm9pZCAqcHJpdiBfX3VudXNlZCkKK3N0YXRpYyBpbnQgdmlydGlvXzlwX3JlY3Yo
c3RydWN0IHZpcnRxdWV1ZSAqdnEsIHZvaWQgKnByaXYpCiB7Ci0JcmV0dXJuIDA7CisJc3RydWN0
IHZpcnRpb185cF9kZXZpY2UgKmRldjsKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcSA9IE5VTEw7CisJ
dWludDMyX3QgbGVuOworCWludCByYyA9IDA7CisJaW50IGhhbmRsZWQgPSAwOworCisJVUtfQVNT
RVJUKHZxKTsKKwlVS19BU1NFUlQocHJpdik7CisKKwlkZXYgPSBwcml2OworCVVLX0FTU0VSVCh2
cSA9PSBkZXYtPnZxKTsKKworCXdoaWxlICgxKSB7CisJCXJjID0gdmlydHF1ZXVlX2J1ZmZlcl9k
ZXF1ZXVlKGRldi0+dnEsICh2b2lkICoqKSZyZXEsICZsZW4pOworCQlpZiAocmMgPCAwKQorCQkJ
YnJlYWs7CisJCS8qCisJCSAqIE5vdGlmeSB0aGUgOVAgQVBJIHRoYXQgdGhpcyByZXF1ZXN0IGhh
cyBiZWVuIHN1Y2Nlc3NmdWxseQorCQkgKiByZWNlaXZlZCwgcmVsZWFzZSB0aGUgcmVmZXJlbmNl
IHRvIHRoZSByZXF1ZXN0LgorCQkgKi8KKwkJdWtfOXByZXFfcmVjZWl2ZV9jYihyZXEsIGxlbik7
CisJCXVrXzlwcmVxX3B1dChyZXEpOworCQloYW5kbGVkID0gMTsKKworCQkvKiBCcmVhayBpZiB0
aGVyZSBhcmUgbm8gbW9yZSBidWZmZXJzIG9uIHRoZSB2aXJ0cXVldWUuICovCisJCWlmIChyYyA9
PSAwKQorCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBBcyB0aGUgdmlydHF1ZXVlIG1pZ2h0IGhh
dmUgZW1wdHkgc2xvdHMgbm93LCBub3RpZnkgYW55IHRocmVhZHMKKwkgKiBibG9ja2VkIG9uIEVO
T1NQQyBlcnJvcnMuCisJICovCisJaWYgKGhhbmRsZWQpCisJCXVrXzlwZGV2X3htaXRfcmVhZHko
ZGV2LT5wOWRldik7CisKKwlyZXR1cm4gaGFuZGxlZDsKIH0KIAogc3RhdGljIGludCB2aXJ0aW9f
OXBfdnFfYWxsb2Moc3RydWN0IHZpcnRpb185cF9kZXZpY2UgKmQpCkBAIC0xNjgsNiArMjYxLDgg
QEAgc3RhdGljIGludCB2aXJ0aW9fOXBfdnFfYWxsb2Moc3RydWN0IHZpcnRpb185cF9kZXZpY2Ug
KmQpCiAJCWdvdG8gZXhpdDsKIAl9CiAKKwl1a19zZ2xpc3RfaW5pdCgmZC0+c2csIEFSUkFZX1NJ
WkUoZC0+c2dzZWdzKSwgJmQtPnNnc2Vnc1swXSk7CisKIAlkLT52cSA9IHZpcnRpb192cXVldWVf
c2V0dXAoZC0+dmRldiwKIAkJCQkgICAgZC0+aHd2cV9pZCwKIAkJCQkgICAgcWRlc2Nfc2l6ZSwK
QEAgLTI3Niw2ICszNzEsNyBAQCBzdGF0aWMgaW50IHZpcnRpb185cF9hZGRfZGV2KHN0cnVjdCB2
aXJ0aW9fZGV2ICp2ZGV2KQogCQlyYyA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwogCX0KKwl1a2Fy
Y2hfc3Bpbl9sb2NrX2luaXQoJmQtPnNwaW5sb2NrKTsKIAlkLT52ZGV2ID0gdmRldjsKIAl2aXJ0
aW9fOXBfZmVhdHVyZV9zZXQoZCk7CiAJcmMgPSB2aXJ0aW9fOXBfY29uZmlndXJlKGQpOwotLSAK
Mi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:36 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakQ-0000Zd-Ky; Wed, 19 Jun 2019 13:35:34 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakP-0000ZY-Cs
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:33 +0000
X-Inumbo-ID: 1b9bcf52-9297-11e9-8980-bc764e045a96
Received: from mail-wr1-x42c.google.com (unknown [2a00:1450:4864:20::42c])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1b9bcf52-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:31 +0000 (UTC)
Received: by mail-wr1-x42c.google.com with SMTP id x17so3411161wrl.9
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35: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;
 bh=7m38MC+mdMWXSTBSQ/3SzcHGqzqPj7mvi971zQJaVH8=;
 b=Z2bx4XqLOohLzUbc7zweNH/ANYmLPSjqrw6Rm8p8HzB7RAwqWsiGu0a8DZZt8G7nHA
 Jt6SNTYSrJIJSdsWp2JrD9Y5y93fR/OTTNZb1VhtMZhcnpefknfjzNBO5LWgGI4J1HYu
 fEcioU7anyi7DZD0j0S2K0KH2mB+L15P6bEhhD4/z+hWiTw1lttNCJAlTFDyYFOfRWKG
 2ddQ8KsReea/R4geaEeC0YgmnuRPn5/vnm1bNgHOMKK0EhoQ9UiKejLocmjVy6Bogt5Q
 tFADpTA6zxTUXURzS9y+V7v4FH7gU3vAUDCj4Etuk0yPErIZfSspnTTo0KiCyTi0lGQS
 3w3Q==
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=7m38MC+mdMWXSTBSQ/3SzcHGqzqPj7mvi971zQJaVH8=;
 b=E3BAmUaIlYw95FAhhSb+dwHuJ4Zc4SzDgtso5aLtjr4zjK8xBheTtjv4DRIF7zmRk6
 aGX2suQRischP7kr8PJae9fR/Vq9LXXb0/ujwok+eC1CTaVv66jXukKw0+uDwhgYRjMs
 FVdruqyCkJvDo/Sf7mZSsD5DwEQYUfWMHVrwrDuTUcR9ZsCMlFT9fy9yQtfg9XXsUY35
 meCsbsIeNB3lYXw85gskNcIlWOvEY/YU57fNYdzwqPewI1gmitjie5K9GwwUjSb19/Tb
 N7ezVL9MwNmDVMQKODm5EQiL63QyE1zoYw6tZ/6tPZkkVrpfxcCFHwJ/7iQcLDXhgyKi
 DSaQ==
X-Gm-Message-State: APjAAAW9R/zDN61wUQVGfLEUEHiYc6e/+9IvR9P6pcK1O9iNcjwbZNND
 teRYdFIMgcWdf1k7PjaBKp8AEQD7
X-Google-Smtp-Source: APXvYqxzUzNuZXf8COocQEFDsh+nCLQTfHyadh/BiG1RcnUXFSDAU+47Clj7h/mNHQiAdvPWBbJM+Q==
X-Received: by 2002:a5d:6389:: with SMTP id p9mr75139948wru.297.1560951330583; 
 Wed, 19 Jun 2019 06:35:30 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.29
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:29 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:07 +0300
Message-Id: <20190619133514.15913-1-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 0/7] Unikraft Character Device API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNlcyB0aGUgY2hhcmFjdGVyIGRldmljZSBBUEksIHdo
aWNoCnByb3ZpZGVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgYmV0d2VlbiBjaGFyYWN0ZXIgZGV2aWNl
IGRyaXZlcnMKKHN1Y2ggYXMgWGVuIGNvbnNvbGUgZnJvbnQgYW5kIFZpcnRJTyBjb25zb2xlIGRl
dmljZSkgYW5kIHRoZQp1c2VyIG9mIHRoZSBBUEkuCgpJbiBvcmRlciBmb3IgdGhlIGRyaXZlcnMg
dG8gcmVnaXN0ZXIgdG8gdGhlIEFQSSwgdGhleSBuZWVkCnRvIGluY2x1ZGUgYW5kIHVzZSB0aGUg
ZGVmaW5pdGlvbnMgaW4gY29uc2Rldl9kcml2ZXIuaCBhbmQgdG8KaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMgaW4gdWtfY29uc2Rldl9vcHMuCgpUaGUgQVBJIHVzZXIgaGFzIGZpcnN0IHRvIGNvbmZp
Z3VyZSB0aGUgZGV2aWNlLCBpbmNsdWRpbmcgdGhlCnR4IGFuZCByeCBxdWV1ZXMsIGFuZCBzdGFy
dCB0aGUgZGV2aWNlIGJlZm9yZSBiZWluZyBhYmxlIHRvIAp3cml0ZSB0by9yZWFkIGZyb20gaXQu
CgpCaXJsZWEgQ29zdGluICg3KToKICBsaWIvdWtjb25zZGV2OiBJbnRyb2R1Y2UgQ29uc2RldiBs
aWJyYXJ5IHNrZWxldG9uCiAgbGliL3VrY29uc2RldjogUmVnaXN0ZXIgY29uc29sZSBkZXZpY2UK
ICBsaWIvdWtjb25zZGV2OiBHZXQgY29uc29sZSBkZXZpY2UgaW5mby9jYXBhYmlsaXRpZXMvZXRj
CiAgbGliL3VrY29uc2RldjogQ29uZmlndXJlIGNvbnNvbGUgZGV2aWNlCiAgbGliL3VrY29uc2Rl
djogU3RhcnQgY29uc29sZSBkZXZpY2UKICBsaWIvdWtjb25zZGV2OiBSZWFkL1dyaXRlIGZyb20g
Y29uc29sZSBkZXZpY2UKICBsaWIvdWtjb25zZGV2OiBFbmFibGUgaW50ZXJydXB0cyBvbiBjb25z
b2xlIGRldmljZQoKIGxpYi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK
IGxpYi91a2NvbnNkZXYvQ29uZmlnLnVrICAgICAgICAgICAgICAgICAgIHwgIDIwICsrCiBsaWIv
dWtjb25zZGV2L01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICB8ICAgNiArCiBsaWIvdWtjb25z
ZGV2L2NvbnNkZXYuYyAgICAgICAgICAgICAgICAgICB8IDUwMSArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKIGxpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgIHwg
IDIxICsrCiBsaWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldi5oICAgICAgICB8IDM2MiAr
KysrKysrKysrKysrKysrKysrKysKIGxpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2Nv
cmUuaCAgIHwgMjY3ICsrKysrKysrKysrKysrKysKIGxpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9j
b25zZGV2X2RyaXZlci5oIHwgMTA5ICsrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMTI4OCBpbnNl
cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9Db25maWcudWsKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L01ha2VmaWxlLnVrCiBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliL3VrY29uc2Rldi9jb25zZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtj
b25zZGV2L2V4cG9ydHN5bXMudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L2lu
Y2x1ZGUvdWsvY29uc2Rldi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9pbmNs
dWRlL3VrL2NvbnNkZXZfY29yZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9p
bmNsdWRlL3VrL2NvbnNkZXZfZHJpdmVyLmgKCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakT-0000af-MY; Wed, 19 Jun 2019 13:35:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakS-0000aO-MW
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:36 +0000
X-Inumbo-ID: 1d871006-9297-11e9-8980-bc764e045a96
Received: from mail-wm1-x330.google.com (unknown [2a00:1450:4864:20::330])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1d871006-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:35 +0000 (UTC)
Received: by mail-wm1-x330.google.com with SMTP id s3so1842534wms.2
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35:35 -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=oP2UkVnBelxIeGDUT5f8vI/u9pAPe8v5qH26xhZTrtk=;
 b=Ku94E1mNE1gmJa39M4WVMx6Js03i7JKpcmLnDKab34eJByWRHmMHWOak8bzwBk6pyE
 VZ/KYM39guD4riyjE2+z1BJkOCQcMof6oD80lj6WyeQl9Sg2TDIaAUmlFg3ScirGDzwM
 I79i8hSt50ntv2Ourcx5wmIpOsqXzophsxP9Iu8rRM5lM707yuNWXeAuJhIuuWGYFraU
 PrXkDN1HSVkQigYt1nKz7Moqp9alYuC41+1gyr6fm4+enDkBIbM2KAJwCeI1WIPQJpNk
 AZpdnJi9inF8BqzrZfiscFq1uZf1XS85L96VyRwUqcLbKcZ/iMEK9qBuiGYSjFUi1CEg
 7fcw==
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=oP2UkVnBelxIeGDUT5f8vI/u9pAPe8v5qH26xhZTrtk=;
 b=Nki8+wCi36UHLzQkAKrmgqKRmJHjjy6jlW4SpvK5wtbOM5TouC5i0K4Cipa7ffRg/Q
 LTrEiLLvOaTU0NN0GjrBcDMXgNb9jnnMUCkQshYJsYKW8t8Mlj9rr37JWTtOPAhJJmEG
 CViJGx9Yh1sCvIPSftBzFDE7gZ4obmrJ2EcqA35C8WwwhlMx6hTsJRSH6CAXoOiFsV7O
 hzqKG0HnPg/xyhMty0M2Cd4XNj+bPkab4hSUoGpgPAsJHt0jOFWqMEHsOHYUeApfBvQf
 AxOpPXc2MJ+G953CmV3M0YK414CiNsLW60C2SV0D5+numITdJpU8tGv4Q2EbYUWbx0Jp
 kKWA==
X-Gm-Message-State: APjAAAUDR6lBureW/Q2UjgwQN8yeh7K/PqTrKqyzP+vl79N3ieaROM06
 pWvCmXAfspq0V/Li4vbCUkkPHuYe
X-Google-Smtp-Source: APXvYqyjSsyyfCupLpdNx2rr0xItMxfk9pffllua1w9tNdXnaXQQolBzJNb4vZN/UZJ2ykSgFC0vaw==
X-Received: by 2002:a1c:f512:: with SMTP id t18mr8288036wmh.47.1560951333784; 
 Wed, 19 Jun 2019 06:35:33 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.32
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:33 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:08 +0300
Message-Id: <20190619133514.15913-2-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 1/7] lib/ukconsdev: Introduce
 Consdev 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, simon.kuenzer@neclab.eu,
 Birlea Costin <costin.birlea@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>

Q3JlYXRlIGxpYnVrY29uc2RldiBsaWJyYXJ5IHNrZWxldG9uIGFuZCBidWlsZC4KClNpZ25lZC1v
ZmYtYnk6IEJpcmxlYSBDb3N0aW4gPGNvc3Rpbi5iaXJsZWFAZ21haWwuY29tPgotLS0KIGxpYi9D
b25maWcudWsgICAgICAgICAgICAgfCAxICsKIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgfCAx
ICsKIGxpYi91a2NvbnNkZXYvQ29uZmlnLnVrICAgfCA2ICsrKysrKwogbGliL3VrY29uc2Rldi9N
YWtlZmlsZS51ayB8IDQgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9Db25maWcudWsKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdWtjb25zZGV2L01ha2VmaWxlLnVrCgpkaWZmIC0tZ2l0IGEvbGliL0NvbmZpZy51
ayBiL2xpYi9Db25maWcudWsKaW5kZXggZjYxZDNiMWUuLjhlYTcyYmYxIDEwMDY0NAotLS0gYS9s
aWIvQ29uZmlnLnVrCisrKyBiL2xpYi9Db25maWcudWsKQEAgLTQ5LDMgKzQ5LDQgQEAgc291cmNl
ICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtidXMvQ29uZmlnLnVrIgog
c291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtuZXRkZXYvQ29u
ZmlnLnVrIgorc291cmNlICJsaWIvdWtjb25zZGV2L0NvbmZpZy51ayIKZGlmZiAtLWdpdCBhL2xp
Yi9NYWtlZmlsZS51ayBiL2xpYi9NYWtlZmlsZS51awppbmRleCBiN2FkNjI4Ny4uODQxZTI5NGIg
MTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS51aworKysgYi9saWIvTWFrZWZpbGUudWsKQEAgLTI2
LDMgKzI2LDQgQEAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9s
aWIvdWttcGkpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9s
aWIvdWtidXMpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9s
aWIvdWtzZ2xpc3QpKQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNF
KS9saWIvdWtuZXRkZXYpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19C
QVNFKS9saWIvdWtjb25zZGV2KSkKZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvQ29uZmlnLnVr
IGIvbGliL3VrY29uc2Rldi9Db25maWcudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAuLmJmMjMxYjY2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3VrY29uc2Rldi9Db25maWcu
dWsKQEAgLTAsMCArMSw2IEBACittZW51Y29uZmlnIExJQlVLQ09OU0RFVgorCWJvb2wgInVrY29u
c2RldjogQ29uc29sZSBkcml2ZXIgaW50ZXJmYWNlIgorCWRlZmF1bHQgbgorCXNlbGVjdCBMSUJV
S0FMTE9DCisJc2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJDCitlbmRpZgpkaWZmIC0tZ2l0
IGEvbGliL3VrY29uc2Rldi9NYWtlZmlsZS51ayBiL2xpYi91a2NvbnNkZXYvTWFrZWZpbGUudWsK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmExNTEyNjAzCi0tLSAvZGV2L251
bGwKKysrIGIvbGliL3VrY29uc2Rldi9NYWtlZmlsZS51awpAQCAtMCwwICsxLDQgQEAKKyQoZXZh
bCAkKGNhbGwgYWRkbGliX3MsbGlidWtjb25zZGV2LCQoQ09ORklHX0xJQlVLQ09OU0RFVikpKQor
CitDSU5DTFVERVMtJChDT05GSUdfTElCVUtDT05TREVWKSArPSAtSSQoTElCVUtDT05TREVWX0JB
U0UpL2luY2x1ZGUKK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLQ09OU0RFVikgKz0gLUkkKExJ
QlVLQ09OU0RFVl9CQVNFKS9pbmNsdWRlCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakW-0000bM-OM; Wed, 19 Jun 2019 13:35:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakV-0000az-1y
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:39 +0000
X-Inumbo-ID: 1ea7889e-9297-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1ea7889e-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:37 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id d18so3453707wrs.5
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35:37 -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=BY7g1qgRC9fyBEnX2wczW2CKmPvcZzMZaK9LXUN5HFY=;
 b=uOzXUYks6sBBXrJ96I3bSKSwu2T5b6F8VM49IkBbbw800UBIvYigSqb8q8GoBPa7Sd
 nrrdD2VuUYlUMvxwR3LalWZeItR58J0R5vyXYroYkEsR+fsUPRoFOblDPfFFq9kD0HGk
 7ywhHgF3CgwITBbRmJKTUIenBA3MjJh3OUvhlK5Os+onNjejnEkYy50t6x310u8z51dF
 nKJXjyEkoCwiOKWc9F0sQlCt16gAwBKzjEbVdmW/FzIqz/60vhHzr7Ze8okYZ1oYnNg0
 7rZnRrMqUAiy84tnljXqB5xj32sYHjXR2vheHimWMl18T1hOi9R2JSlG8ES4B7Ymb2Zz
 yRzw==
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=BY7g1qgRC9fyBEnX2wczW2CKmPvcZzMZaK9LXUN5HFY=;
 b=PJFZiBa7DNaXfP8uvc/zDamup2D3xJZmAv5Zz5GXODpMidWTeWAH0ILFi7SwG/uPay
 Jds6K9fqWrcvxkMXpY4/LCcqRAekzAdIQtP0i5WFpmUCQdWodue9LlW4c+SS3bwaKj8C
 P4o6Jy7hCurZrBwDYf1+940K7ImPhpS5Y7wThi/gxdOzVWyJJB3p0FQuvJDr+z+W7vHw
 IyD0Sandbll0zvoyXOiEIYYYPls5wRbapoSZDEebxJeKXOFZZjliFr8yH0NLlJy2xhA7
 hADEJL6Kv2BEAn0sSCgRaiBs/Cqn+xygcAqc0YKSPfWfE3+fnqBYhnYlXtDaILFO/xMA
 VhdQ==
X-Gm-Message-State: APjAAAUp+Bim650BLDy7d7RcQi0+Tc1tzHnf9yCb3vzu947JSJg88o+G
 ygjIv4XbZe73OQY4btO80L70Ne2y
X-Google-Smtp-Source: APXvYqznfAykrZ1hhPjY3Lhx1HiyJhXxwuDdbrzRyRxUK3hTw5OH1yjbuRoup9FVbraj1799yHixcw==
X-Received: by 2002:a5d:4ec1:: with SMTP id s1mr33558405wrv.19.1560951335468; 
 Wed, 19 Jun 2019 06:35:35 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.34
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:34 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:09 +0300
Message-Id: <20190619133514.15913-3-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 2/7] lib/ukconsdev: Register console
 device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbml0aWFsIGNvbnNkZXYgQVBJIHN1cHBvcnRpbmcg
ZGV2aWNlCnJlZ2lzdHJhdGlvbiBhbmQgZGF0YSBhbGxvY2F0aW9uLgpXZSBpbnRyb2R1Y2UgdGhy
ZWUgaGVhZGVyIGZpbGVzIGZvciBkZXNjcmliaW5nIFVuaWtyYWZ0J3MKY29uc2RldiBBUEk6CiAg
ICAgICAgdWsvY29uc2Rldl9jb3JlLmggLSBDb3JlIGRhdGEgdHlwZSBkZWZpbml0aW9ucwogICAg
ICAgIHVrL2NvbnNkZXZfZHJpdmVyLmggLSBBUEkgZm9yIGRyaXZlcnMKICAgICAgICB1ay9jb25z
ZGV2LmggLSBBUEkgZm9yIGNvbnNvbGUgYXBwbGljYXRpb25zCgpTaWduZWQtb2ZmLWJ5OiBCaXJs
ZWEgQ29zdGluIDxjb3N0aW4uYmlybGVhQGdtYWlsLmNvbT4KLS0tCiBsaWIvdWtjb25zZGV2L01h
a2VmaWxlLnVrICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWIvdWtjb25zZGV2L2NvbnNkZXYu
YyAgICAgICAgICAgICAgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IGxpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICAgIHwgICA4ICsrCiBsaWIv
dWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldi5oICAgICAgICB8IDE0NSArKysrKysrKysrKysr
KysrKysrKysrKysrKwogbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oICAg
fCAxMDkgKysrKysrKysrKysrKysrKysrKysKIGxpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25z
ZGV2X2RyaXZlci5oIHwgIDg1ICsrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNTEx
IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L2NvbnNkZXYu
YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51awogY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2LmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9kcml2ZXIuaAoK
ZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvTWFrZWZpbGUudWsgYi9saWIvdWtjb25zZGV2L01h
a2VmaWxlLnVrCmluZGV4IGExNTEyNjAzLi5iOTNiNWQ2ZCAxMDA2NDQKLS0tIGEvbGliL3VrY29u
c2Rldi9NYWtlZmlsZS51aworKysgYi9saWIvdWtjb25zZGV2L01ha2VmaWxlLnVrCkBAIC0yLDMg
KzIsNSBAQCAkKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVrY29uc2RldiwkKENPTkZJR19MSUJV
S0NPTlNERVYpKSkKIAogQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVLQ09OU0RFVikgKz0gLUkkKExJ
QlVLQ09OU0RFVl9CQVNFKS9pbmNsdWRlCiBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJVS0NPTlNE
RVYpICs9IC1JJChMSUJVS0NPTlNERVZfQkFTRSkvaW5jbHVkZQorCitMSUJVS0NPTlNERVZfU1JD
Uy15ICs9ICQoTElCVUtDT05TREVWX0JBU0UpL2NvbnNkZXYuYwpkaWZmIC0tZ2l0IGEvbGliL3Vr
Y29uc2Rldi9jb25zZGV2LmMgYi9saWIvdWtjb25zZGV2L2NvbnNkZXYuYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZjU4YTMyNjYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIv
dWtjb25zZGV2L2NvbnNkZXYuYwpAQCAtMCwwICsxLDE2MiBAQAorLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENvc3RpbiBCaXJsZWEg
PGNvc3Rpbi5iaXJsZWFAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElO
IEFOWSBXQVkuCisgKi8KKy8qIFRoaXMgaXMgZGVyaXZlZCBmcm9tIHVrbmV0ZGV2IGJlY2F1c2Ug
b2YgY29uc2lzdGVuY3kgcmVhc29ucyAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
c3RyaW5nLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDx1ay9jb25zZGV2Lmg+
CisjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+CisjaW5jbHVkZSA8dWsvcHJpbnQuaD4KKworc3RydWN0
IHVrX2NvbnNkZXZfbGlzdCB1a19jb25zZGV2X2xpc3QgPQorCQlVS19UQUlMUV9IRUFEX0lOSVRJ
QUxJWkVSKHVrX2NvbnNkZXZfbGlzdCk7CisKK3N0YXRpYyB1aW50MTZfdCBjb25zZGV2X2NvdW50
OworCit1bnNpZ25lZCBpbnQgdWtfY29uc2Rldl9jb3VudCh2b2lkKQoreworCXJldHVybiAodW5z
aWduZWQgaW50KSBjb25zZGV2X2NvdW50OworfQorCitzdHJ1Y3QgdWtfY29uc2RldiAqdWtfY29u
c2Rldl9nZXQodW5zaWduZWQgaW50IGlkKQoreworCXN0cnVjdCB1a19jb25zZGV2ICpkZXY7CisK
KwlVS19UQUlMUV9GT1JFQUNIKGRldiwgJnVrX2NvbnNkZXZfbGlzdCwgX2xpc3QpIHsKKwkJVUtf
QVNTRVJUKGRldi0+X2RhdGEpOworCisJCWlmIChkZXYtPl9kYXRhLT5pZCA9PSBpZCkKKwkJCXJl
dHVybiBkZXY7CisJfQorCXJldHVybiBOVUxMOworfQorCit1aW50MTZfdCB1a19jb25zZGV2X2lk
X2dldChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCVVLX0FTU0VSVChkZXYpOworCXJldHVy
biBkZXYtPl9kYXRhLT5pZDsKK30KKworY29uc3QgY2hhciAqdWtfY29uc2Rldl9kcnZfbmFtZV9n
ZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldikKK3sKKwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NF
UlQoZGV2LT5fZGF0YSk7CisJcmV0dXJuIGRldi0+X2RhdGEtPmRydl9uYW1lOworfQorCitlbnVt
IHVrX2NvbnNkZXZfc3RhdGUgdWtfY29uc2Rldl9zdGF0ZV9nZXQoc3RydWN0IHVrX2NvbnNkZXYg
KmRldikKK3sKKwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7CisJcmV0
dXJuIGRldi0+X2RhdGEtPnN0YXRlOworfQorCitzdGF0aWMgc3RydWN0IHVrX2NvbnNkZXZfZGF0
YSAqX2FsbG9jX2RhdGEoc3RydWN0IHVrX2FsbG9jICphLAorCQl1aW50MTZfdCBjb25zZGV2X2lk
LCBjb25zdCBjaGFyICpkcnZfbmFtZSkKK3sKKwlzdHJ1Y3QgdWtfY29uc2Rldl9kYXRhICpkYXRh
OworCisJZGF0YSA9IHVrX2NhbGxvYyhhLCAxLCBzaXplb2YoKmRhdGEpKTsKKwlpZiAoIWRhdGEp
CisJCXJldHVybiBOVUxMOworCisJZGF0YS0+ZHJ2X25hbWUgPSBkcnZfbmFtZTsKKwlkYXRhLT5z
dGF0ZSAgICA9IFVLX0NPTlNERVZfVU5DT05GSUdVUkVEOworCWRhdGEtPmEgICAgICAgID0gYTsK
KworCS8qIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2Ugd2hlcmUgd2Ugc2V0IHRoZSBkZXZpY2UgSUQ7
CisJICogZHVyaW5nIHRoZSByZXN0IG9mIHRoZSBkZXZpY2UncyBsaWZlIHRpbWUgdGhpcyBJRCBp
cyByZWFkLW9ubHkKKwkgKi8KKwkqKERFQ09OU1QodWludDE2X3QgKiwgJmRhdGEtPmlkKSkgPSBj
b25zZGV2X2lkOworCisJcmV0dXJuIGRhdGE7Cit9CisKK2ludCB1a19jb25zZGV2X2Rydl9yZWdp
c3RlcihzdHJ1Y3QgdWtfY29uc2RldiAqZGV2LCBzdHJ1Y3QgdWtfYWxsb2MgKmEsCisJCWNvbnN0
IGNoYXIgKmRydl9uYW1lKQoreworCVVLX0FTU0VSVChkZXYpOworCS8qIERhdGEgbXVzdCBiZSB1
bmFsbG9jYXRlZC4gKi8KKwlVS19BU1NFUlQoUFRSSVNFUlIoZGV2LT5fZGF0YSkpOworCS8qIEFz
c2VydCBtYW5kYXRvcnkgY29uZmlndXJhdGlvbi4gKi8KKwlVS19BU1NFUlQoZGV2LT5vcHMpOwor
CVVLX0FTU0VSVChkZXYtPm9wcy0+Y2xvc2UpOworCisJZGV2LT5fZGF0YSA9IF9hbGxvY19kYXRh
KGEsIGNvbnNkZXZfY291bnQsIGRydl9uYW1lKTsKKwlpZiAoIWRldi0+X2RhdGEpCisJCXJldHVy
biAtRU5PTUVNOworCisJVUtfVEFJTFFfSU5TRVJUX1RBSUwoJnVrX2NvbnNkZXZfbGlzdCwgZGV2
LCBfbGlzdCk7CisJdWtfcHJfaW5mbygiUmVnaXN0ZXJlZCBjb25zZGV2JSJQUkl1MTYiOiAlcCAo
JXMpXG4iLAorCQkJICAgY29uc2Rldl9jb3VudCwgZGV2LCBkcnZfbmFtZSk7CisKKwlyZXR1cm4g
Y29uc2Rldl9jb3VudCsrOworfQorCit2b2lkIHVrX2NvbnNkZXZfZHJ2X3VucmVnaXN0ZXIoc3Ry
dWN0IHVrX2NvbnNkZXYgKmRldikKK3sKKwlzdHJ1Y3QgdWtfYWxsb2MgKmE7CisJdWludDE2X3Qg
aWQ7CisKKwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7CisJVUtfQVNT
RVJUKGRldi0+X2RhdGEtPnN0YXRlICE9IFVLX0NPTlNERVZfUlVOTklORyk7CisKKwlpZCA9IGRl
di0+X2RhdGEtPmlkOworCWEgPSBkZXYtPl9kYXRhLT5hOworCisJdWtfZnJlZShhLCBkZXYtPl9k
YXRhKTsKKwlVS19UQUlMUV9SRU1PVkUoJnVrX2NvbnNkZXZfbGlzdCwgZGV2LCBfbGlzdCk7CisJ
Y29uc2Rldl9jb3VudC0tOworCisJdWtfcHJfaW5mbygiVW5yZWdpc3RlcmVkIGNvbnNkZXYlIlBS
SXUxNiI6ICVwXG4iLAorCQkJaWQsIGRldik7Cit9CisKK3ZvaWQgdWtfY29uc2Rldl9jbG9zZShz
dHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCXVpbnQxNl90IGlkOworCisJVUtfQVNTRVJUKGRl
dik7CisJVUtfQVNTRVJUKGRldi0+X2RhdGEpOworCVVLX0FTU0VSVChkZXYtPm9wcyk7CisJVUtf
QVNTRVJUKGRldi0+b3BzLT5jbG9zZSk7CisJVUtfQVNTRVJUKGRldi0+X2RhdGEtPnN0YXRlICE9
IFVLX0NPTlNERVZfUlVOTklORyk7CisKKwlpZCA9IGRldi0+X2RhdGEtPmlkOworCWRldi0+b3Bz
LT5jbG9zZShkZXYpOworCisJdWtfcHJfaW5mbygiQ2xvc2VkIGNvbnNkZXYlIlBSSXUxNiJcbiIs
IGlkKTsKK30KZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51ayBiL2xpYi91
a2NvbnNkZXYvZXhwb3J0c3ltcy51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uNjBkZDM3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdWtjb25zZGV2L2V4cG9ydHN5bXMu
dWsKQEAgLTAsMCArMSw4IEBACit1a19jb25zZGV2X2NvdW50Cit1a19jb25zZGV2X2dldAordWtf
Y29uc2Rldl9pZF9nZXQKK3VrX2NvbnNkZXZfZHJ2X25hbWVfZ2V0Cit1a19jb25zZGV2X3N0YXRl
X2dldAordWtfY29uc2Rldl9kcnZfcmVnaXN0ZXIKK3VrX2NvbnNkZXZfZHJ2X3VucmVnaXN0ZXIK
K3VrX2NvbnNkZXZfY2xvc2UKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldi5oIGIvbGliL3VrY29uc2Rldi9pbmNs
dWRlL3VrL2NvbnNkZXYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMGU3
YWYyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rl
di5oCkBAIC0wLDAgKzEsMTQ1IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt
Q2xhdXNlICovCisvKgorICogQXV0aG9yczogQ29zdGluIEJpcmxlYSA8Y29zdGluLmJpcmxlYUBn
bWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhu
aWNhIG9mIEJ1Y2hhcmVzdC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBI
RUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLwor
LyogVGhpcyBpcyBkZXJpdmVkIGZyb20gdWtuZXRkZXYgYmVjYXVzZSBvZiBjb25zaXN0ZW5jeSBy
ZWFzb25zICovCisjaWZuZGVmIF9fVUtfQ09OU0RFVl9fCisjZGVmaW5lIF9fVUtfQ09OU0RFVl9f
CisKKy8qKgorICogVW5pa3JhZnQgQ29uc29sZSBBUEkKKyAqCisgKiBUaGUgVW5pa3JhZnQgQ29u
c29sZSBBUEkgcHJvdmlkZXMgYSBnZW5lcmFsaXplZCBpbnRlcmZhY2UgYmV0d2VlbiBVbmlrcmFm
dAorICogZHJpdmVycyBhbmQgbG93LWxldmVsIGFwcGxpY2F0aW9uIHdoaWNoIG5lZWRzIGNvbW11
bmljYXRpb24gd2l0aAorICogYSBjaGFyYWN0ZXIgZGV2aWNlLgorICoKKyAqIE1vc3QgQ29uc29s
ZSBBUEkgZnVuY3Rpb25zIHRha2UgYXMgcGFyYW1ldGVyIGEgcmVmZXJlbmNlIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nCisgKiBVbmlrcmFmdCBDb25zb2xlIERldmljZSAoc3RydWN0IHVrX2NvbnNkZXYp
IHdoaWNoIGNhbiBiZSBvYnRhaW5lZCB3aXRoIGEgY2FsbAorICogdG8gdWtfY29uc2Rldl9nZXQo
KS4gVGhlIGNvbnNvbGUgYXBwbGljYXRpb24gc2hvdWxkIHN0b3JlIHRoaXMgcmVmZXJlbmNlIGFu
ZAorICogdXNlIGl0IGZvciBhbGwgc3Vic2VxdWVudCBBUEkgY2FsbHMuCisgKgorICogVGhlIGZ1
bmN0aW9ucyBleHBvcnRlZCBieSB0aGUgVW5pa3JhZnQgQ29uc29sZSBBUEkgdG8gc2V0dXAgYSBk
ZXZpY2UKKyAqIGRlc2lnbmF0ZWQgYnkgaXRzIElEIG11c3QgYmUgaW52b2tlZCBpbiB0aGUgZm9s
bG93aW5nIG9yZGVyOgorICogICAgICAtIHVrX2NvbnNkZXZfY29uZmlndXJlKCkKKyAqICAgICAg
LSB1a19jb25zZGV2X3J4L3R4X2NvbmZpZ3VyZSgpCisgKiAgICAgIC0gdWtfY29uc2Rldl9zdGFy
dCgpCisgKgorICogVGhlcmUgYXJlIDQgc3RhdGVzIGluIHdoaWNoIGEgY29uc29sZSBkZXZpY2Ug
Y2FuIGJlIGZvdW5kOgorICogICAgICAtIFVLX0NPTlNERVZfVU5SRUdJU1RFUkVECisgKiAgICAg
IC0gVUtfQ09OU0RFVl9VTkNPTkZJR1VSRUQKKyAqICAgICAgLSBVS19DT05TREVWX0NPTkZJR1VS
RUQKKyAqICAgICAgLSBVS19DT05TREVWX1JVTk5JTkcKKyAqLworCisjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRl
IDx1ay9saXN0Lmg+CisjaW5jbHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRlIDx1ay9hc3NlcnQu
aD4KKyNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KKworI2luY2x1ZGUgImNvbnNkZXZfY29yZS5oIgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogR2V0
IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIFVuaWtyYWZ0IENvbnNvbGUgZGV2aWNlcy4KKyAqCisg
KiBAcmV0dXJuCisgKgktICh1bnNpZ25lZCBpbnQpOiBudW1iZXIgb2YgY29uc29sZSBkZXZpY2Vz
LgorICovCit1bnNpZ25lZCBpbnQgdWtfY29uc2Rldl9jb3VudCh2b2lkKTsKKworLyoqCisgKiBH
ZXQgYSByZWZlcmVuY2UgdG8gYSBVbmlrcmFmdCBDb25zb2xlIERldmljZSwgYmFzZWQgb24gaXRz
IElELgorICogVGhpcyByZWZlcmVuY2Ugc2hvdWxkIGJlIHNhdmVkIGJ5IHRoZSBhcHBsaWNhdGlv
biBhbmQgdXNlZCBmb3Igc3Vic2VxdWVudAorICogQVBJIGNhbGxzLgorICoKKyAqIEBwYXJhbSBp
ZAorICoJVGhlIGlkZW50aWZpZXIgb2YgdGhlIFVuaWtyYWZ0IGNvbnNvbGUgZGV2aWNlIHRvIGNv
bmZpZ3VyZS4KKyAqIEByZXR1cm4KKyAqCS0gTlVMTDogZGV2aWNlIG5vdCBmb3VuZCBpbiBsaXN0
CisgKgktIChzdHJ1Y3QgdWtfY29uc2RldiAqKTogcmVmZXJlbmNlIHRvIGJlIHBhc3NlZCB0byBB
UEkgY2FsbHMKKyAqLworc3RydWN0IHVrX2NvbnNkZXYgKnVrX2NvbnNkZXZfZ2V0KHVuc2lnbmVk
IGludCBpZCk7CisKKy8qKgorICogUmV0dXJucyB0aGUgaWQgb2YgYSBjb25zb2xlIGRldmljZQor
ICoKKyAqIEBwYXJhbSBkZXYKKyAqCVRoZSBVbmlrcmFmdCBDb25zb2xlIERldmljZS4KKyAqIEBy
ZXR1cm4KKyAqCS0gKD49MCk6IERldmljZSBJRAorICovCit1aW50MTZfdCB1a19jb25zZGV2X2lk
X2dldChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBkcml2
ZXIgbmFtZSBvZiBhIGNvbnNkZXYgZGV2aWNlLgorICogVGhlIG5hbWUgbWlnaHQgYmUgc2V0IHRv
IE5VTEwuCisgKgorICogQHBhcmFtIGRldgorICoJVGhlIFVuaWtyYWZ0IENvbnNvbGUgRGV2aWNl
LgorICogQHJldHVybgorICoJLSAoTlVMTCk6IGlmIG5vIG5hbWUgaXMgZGVmaW5lZC4KKyAqCS0g
KGNvbnN0IGNoYXIgKik6IFJlZmVyZW5jZSB0byBzdHJpbmcgaWYgbmFtZSBpcyBhdmFpbGFibGUu
CisgKi8KK2NvbnN0IGNoYXIgKnVrX2NvbnNkZXZfZHJ2X25hbWVfZ2V0KHN0cnVjdCB1a19jb25z
ZGV2ICpkZXYpOworCisvKioKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBjb25z
ZGV2IGRldmljZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKglUaGUgVW5pa3JhZnQgQ29uc29sZSBE
ZXZpY2UuCisgKiBAcmV0dXJuCisgKgktIChlbnVtIHVrX2NvbnNkZXZfc3RhdGUpOiBjdXJyZW50
IGRldmljZSBzdGF0ZQorICovCitlbnVtIHVrX2NvbnNkZXZfc3RhdGUgdWtfY29uc2Rldl9zdGF0
ZV9nZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CisKKy8qKgorICogQ2xvc2UgYSBzdG9wcGVk
IFVuaWtyYWZ0IGNvbnNvbGUgZGV2aWNlLgorICogVGhlIGZ1bmN0aW9uIGZyZWVzIGFsbCByZXNv
dXJjZXMgZXhjZXB0IGZvcgorICogdGhlIG9uZXMgbmVlZGVkIGJ5IHRoZSBVS19DT05TREVWX1VO
Q09ORklHVVJFRCBzdGF0ZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKglUaGUgVW5pa3JhZnQgQ29u
c29sZSBEZXZpY2UuCisgKi8KK3ZvaWQgdWtfY29uc2Rldl9jbG9zZShzdHJ1Y3QgdWtfY29uc2Rl
diAqZGV2KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vX19V
S19DT05TREVWX18KZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2
X2NvcmUuaCBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2NvcmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMzY5NGYyYmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKQEAgLTAsMCArMSwxMDkg
QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBB
dXRob3JzOiBDb3N0aW4gQmlybGVhIDxjb3N0aW4uYmlybGVhQGdtYWlsLmNvbT4KKyAqCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0Lgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVY
VFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisvKiBUaGlzIGlzIGRlcml2ZWQg
ZnJvbSB1a25ldGRldiBiZWNhdXNlIG9mIGNvbnNpc3RlbmN5IHJlYXNvbnMgKi8KKyNpZm5kZWYg
X19VS19DT05TREVWX0NPUkVfXworI2RlZmluZSBfX1VLX0NPTlNERVZfQ09SRV9fCisKKyNpbmNs
dWRlIDx1ay9saXN0Lmg+CisjaW5jbHVkZSA8dWsvY29uZmlnLmg+CisKKy8qKgorICogVW5pa3Jh
ZnQgY29uc29sZSBBUEkgY29tbW9uIGRlY2xhcmF0aW9ucy4KKyAqCisgKiBUaGlzIGhlYWRlciBj
b250YWlucyBhbGwgQVBJIGRhdGEgdHlwZXMuIFNvbWUgb2YgdGhlbSBhcmUgcGFydCBvZiB0aGUK
KyAqIHB1YmxpYyBBUEkgYW5kIHNvbWUgYXJlIHBhcnQgb2YgdGhlIGludGVybmFsIEFQSS4KKyAq
CisgKiBUaGUgZGV2aWNlIGRhdGEgYW5kIG9wZXJhdGlvbnMgYXJlIHNlcGFyYXRlZC4gVGhpcyBz
cGxpdCBhbGxvd3MgdGhlCisgKiBmdW5jdGlvbiBwb2ludGVyIGFuZCBkcml2ZXIgZGF0YSB0byBi
ZSBwZXItcHJvY2Vzcywgd2hpbGUgdGhlIGFjdHVhbAorICogY29uZmlndXJhdGlvbiBkYXRhIGZv
ciB0aGUgZGV2aWNlIGlzIHNoYXJlZC4KKyAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK3N0cnVjdCB1a19jb25zZGV2OworCisvKioKKyAqIExpc3Qgd2l0
aCBkZXZpY2VzCisgKi8KK1VLX1RBSUxRX0hFQUQodWtfY29uc2Rldl9saXN0LCBzdHJ1Y3QgdWtf
Y29uc2Rldik7CisKKy8qKgorICogRW51bSB0byBkZXNjcmliZSB0aGUgcG9zc2libGUgc3RhdGVz
IG9mIGEgY29uc29sZSBkZXZpY2UuCisgKi8KK2VudW0gdWtfY29uc2Rldl9zdGF0ZSB7CisJVUtf
Q09OU0RFVl9JTlZBTElEID0gMCwKKwlVS19DT05TREVWX1VOQ09ORklHVVJFRCwKKwlVS19DT05T
REVWX0NPTkZJR1VSRUQsCisJVUtfQ09OU0RFVl9SVU5OSU5HLAorfTsKKworLyoqIERyaXZlciBj
YWxsYmFjayB0eXBlIHRvIGNsb3NlIGFuIFVuaWtyYWZ0IGNvbnNvbGUgZGV2aWNlLiAqLwordHlw
ZWRlZiB2b2lkICgqdWtfY29uc2Rldl9jbG9zZV90KShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsK
Kworc3RydWN0IHVrX2NvbnNkZXZfb3BzIHsKKwl1a19jb25zZGV2X2Nsb3NlX3QgICAgICAgICAg
ICAgICAgICBjbG9zZTsKK307CisKKy8qKgorICogQGludGVybmFsCisgKiBsaWJ1a2NvbnNkZXYg
aW50ZXJuYWwgZGF0YSBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25zb2xlIGRldmljZS4KKyAqLwor
c3RydWN0IHVrX2NvbnNkZXZfZGF0YSB7CisJLyogRGV2aWNlIGlkIGlkZW50aWZpZXIgKi8KKwlj
b25zdCB1aW50MTZfdCBpZDsKKwkvKiBEZXZpY2Ugc3RhdGUgKi8KKwllbnVtIHVrX2NvbnNkZXZf
c3RhdGUgc3RhdGU7CisJLyogTmFtZSBvZiBkZXZpY2UqLworCWNvbnN0IGNoYXIgKmRydl9uYW1l
OworCS8qIERldmljZSBhbGxvY2F0b3IgKi8KKwlzdHJ1Y3QgdWtfYWxsb2MgKmE7Cit9OworCitz
dHJ1Y3QgdWtfY29uc2RldiB7CisJLyogUG9pbnRlciB0byBBUEktaW50ZXJuYWwgc3RhdGUgZGF0
YS4gKi8KKwlzdHJ1Y3QgdWtfY29uc2Rldl9kYXRhICpfZGF0YTsKKwkvKiBGdW5jdGlvbnMgY2Fs
bGJhY2tzIGJ5IGRyaXZlci4gKi8KKwljb25zdCBzdHJ1Y3QgdWtfY29uc2Rldl9vcHMgKm9wczsK
KwkvKiBFbnRyeSBmb3IgbGlzdCBvZiBjb25zb2xlIGRldmljZXMgKi8KKwlVS19UQUlMUV9FTlRS
WShzdHJ1Y3QgdWtfY29uc2RldikgX2xpc3Q7Cit9OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLyogX19VS19DT05TREVWX0NPUkVfXyAqLwpkaWZmIC0tZ2l0IGEv
bGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfZHJpdmVyLmggYi9saWIvdWtjb25zZGV2
L2luY2x1ZGUvdWsvY29uc2Rldl9kcml2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMC4uNzVmMTJiNDMKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdWtjb25zZGV2L2luY2x1
ZGUvdWsvY29uc2Rldl9kcml2ZXIuaApAQCAtMCwwICsxLDg1IEBACisvKiBTUERYLUxpY2Vuc2Ut
SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ29zdGluIEJpcmxl
YSA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBV
bml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQg
SU4gQU5ZIFdBWS4KKyAqLworLyogVGhpcyBpcyBkZXJpdmVkIGZyb20gdWtuZXRkZXYgYmVjYXVz
ZSBvZiBjb25zaXN0ZW5jeSByZWFzb25zICovCisjaWZuZGVmIF9fVUtfQ09OU0RFVl9EUklWRVJf
XworI2RlZmluZSBfX1VLX0NPTlNERVZfRFJJVkVSX18KKworI2luY2x1ZGUgPHVrL2NvbnNkZXZf
Y29yZS5oPgorI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgorCisvKioKKyAqIFVuaWtyYWZ0IGNvbnNv
bGUgZHJpdmVyIEFQSS4KKyAqCisgKiBUaGlzIGhlYWRlciBjb250YWlucyBhbGwgQVBJIGZ1bmN0
aW9ucyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBjYWxsZWQKKyAqIGJ5IGEgY2hhcmFjdGVyIGRl
dmljZSBkcml2ZXIuCisgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCisvKioKKyAqIEFkZHMgYSBVbmlrcmFmdCBjb25zb2xlIGRldmljZSB0byB0aGUgZGV2
aWNlIGxpc3QuCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBkcml2ZXIgYWRk
cyBhIG5ldyBmb3VuZCBkZXZpY2UuCisgKgorICogQHBhcmFtIGRldgorICoJU3RydWN0IHRvIFVu
aWtyYWZ0IGNvbnNvbGUgZGV2aWNlIHRoYXQgc2hhbGwgYmUgcmVnaXN0ZXJlZAorICogQHBhcmFt
IGEKKyAqCUFsbG9jYXRvciB0byBiZSB1c2UgZm9yIGxpYnVrY29uc2RldiBwcml2YXRlIGRhdGEg
KGRldi0+X2RhdGEpCisgKiBAcGFyYW0gZHJ2X25hbWUKKyAqCShPcHRpb25hbCkgZHJpdmVyIG5h
bWUKKyAqCVRoZSBtZW1vcnkgZm9yIHRoaXMgc3RyaW5nIGhhcyB0byBzdGF5IGF2YWlsYWJsZSBh
cyBsb25nIGFzIHRoZQorICoJZGV2aWNlIGlzIHJlZ2lzdGVyZWQuCisgKiBAcmV0dXJuCisgKgkt
ICgtRU5PTUVNKTogQWxsb2NhdGlvbiBvZiBwcml2YXRlCisgKgktICg+PTApOiBDb25zb2xlIGRl
dmljZSBJRCBvbiBzdWNjZXNzCisgKi8KK2ludCB1a19jb25zZGV2X2Rydl9yZWdpc3RlcihzdHJ1
Y3QgdWtfY29uc2RldiAqZGV2LAorCQlzdHJ1Y3QgdWtfYWxsb2MgKmEsIGNvbnN0IGNoYXIgKmRy
dl9uYW1lKTsKKworLyoqCisgKiBGcmVlcyB0aGUgZGF0YSBhbGxvY2F0ZWQgZm9yIHRoZSBVbmlr
cmFmdCBDb25zb2xlIERldmljZS4KKyAqIFJlbW92ZXMgdGhlIGNvbnNvbGUgZGV2aWNlIGZyb20g
dGhlIGxpc3QuCisgKgorICogQHBhcmFtIGRldgorICoJVW5pa3JhZnQgY29uc29sZSBkZXZpY2UK
KyAqLwordm9pZCB1a19jb25zZGV2X2Rydl91bnJlZ2lzdGVyKHN0cnVjdCB1a19jb25zZGV2ICpk
ZXYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19VS19D
T05TREVWX0RSSVZFUl9fICovCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakW-0000bR-Qa; Wed, 19 Jun 2019 13:35:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakV-0000b5-AY
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:39 +0000
X-Inumbo-ID: 1f627dbf-9297-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1f627dbf-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:38 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id d18so3453781wrs.5
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35: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=bNa4P+OcZzr4WJf49XEqtOqRn9YpqLLEIgDbdBF/bkI=;
 b=BnBEFQ7qE2hqkjjKufE3EYg/3ypv60uJTUd4d3/yfEtNPE+2db07OgLwSIphsqbEhU
 UmnJQoz2ilfCcvF7IZXpuicp7glALgLMSKdoJItEzO3pAsCY9x4DtgZ02Bkl6al1ycqK
 a65vr8939m854pBQVIwkun5CE5PPJ5lAL5/xA4ZcVXN/x/oW7mr5pLgO/k2Hwbg7+S04
 ez8igbxAI3O8rNVtaH79JvPYmvYQX+6GIZ434jvLMJqE9hgGNNhM+v0vrrljUypOyMBz
 W7m2Nxz3aWaee7VXnamwnUTKxA6On8Z83JYq8kG9qEiv2G1QLr00lraaOVLSdOp2c2jw
 tD2w==
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=bNa4P+OcZzr4WJf49XEqtOqRn9YpqLLEIgDbdBF/bkI=;
 b=elHfC/2ak8hdd4QjHffrnQqIV/+TF2ZaDSdoY99Q1w3+NXVQf2Npw4ddh0CY/81UgG
 ZvZmOLZHcLSAf9MziTSbhIi+Wq6VvSx4DEr3UJlqrxbGxe5wBiwpjpEG4FUw0hk7oC3z
 ktmgjYg8jwO/D+azZ64LEpXdOJnlPIu7PPhyoktvU4OAT32Aaza5FiX+sq2qo6QO+0q9
 GYyy08Y4ivyiiSQfBqyuTkZqO294heHaHCXgjZz3wcSp1NPkrutIcSMaPJbQsGRy0h9T
 T+ylBuVIFpqvcVYiWeiBS6PQlF3+DKE6JmC7CccCBWIMqjdX4/7ThnPKAVlA+NYlVHnM
 W9gQ==
X-Gm-Message-State: APjAAAXnaMdVCC4MwEIpndv++GZ9E3Y51pIlb+SrBUe7M5QxZPBZqYXs
 8yr3DlCHYi8EtkYeCpOzVeSfLnFq
X-Google-Smtp-Source: APXvYqyGpi/9mfaNED/2cfoM/1zI6beOaFwHLtdLXsa4N8hAk9j6Mg8IGqZy9J8z80QgbiDygJOU1A==
X-Received: by 2002:a5d:66ce:: with SMTP id k14mr21360191wrw.308.1560951336969; 
 Wed, 19 Jun 2019 06:35:36 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.36
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:36 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:10 +0300
Message-Id: <20190619133514.15913-4-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 3/7] lib/ukconsdev: Get console
 device info/capabilities/etc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBxdWVyaWVzIGZvciB0aGUgY29uc29sZSBjYXBhYmlsaXRpZXMsCnN1Y2ggYXMg
cngvdHggZGVzY3JpcHRvcnMgbnVtYmVyLgoKU2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8
Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0tLQogbGliL3VrY29uc2Rldi9jb25zZGV2LmMgICAg
ICAgICAgICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91a2Nv
bnNkZXYvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICB8ICAzICsrKwogbGliL3VrY29uc2Rldi9p
bmNsdWRlL3VrL2NvbnNkZXYuaCAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCiBsaWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmggfCA0MiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9u
cygrKQoKZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvY29uc2Rldi5jIGIvbGliL3VrY29uc2Rl
di9jb25zZGV2LmMKaW5kZXggZjU4YTMyNjYuLmQ2MWQ0MmE4IDEwMDY0NAotLS0gYS9saWIvdWtj
b25zZGV2L2NvbnNkZXYuYworKysgYi9saWIvdWtjb25zZGV2L2NvbnNkZXYuYwpAQCAtNDUsNiAr
NDUsNDUgQEAgc3RydWN0IHVrX2NvbnNkZXZfbGlzdCB1a19jb25zZGV2X2xpc3QgPQogCiBzdGF0
aWMgdWludDE2X3QgY29uc2Rldl9jb3VudDsKIAordm9pZCB1a19jb25zZGV2X2luZm9fZ2V0KHN0
cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCXN0cnVjdCB1a19jb25zZGV2X2luZm8gKmRldl9pbmZv
KQoreworCVVLX0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChkZXYtPm9wcyk7CisJVUtfQVNTRVJU
KGRldi0+b3BzLT5pbmZvX2dldCk7CisJVUtfQVNTRVJUKGRldl9pbmZvKTsKKworCS8qIENsZWFy
IHZhbHVlcyBiZWZvcmUgcXVlcnlpbmcgZHJpdmVyIGZvciBjYXBhYmlsaXRpZXMgKi8KKwltZW1z
ZXQoZGV2X2luZm8sIDAsIHNpemVvZigqZGV2X2luZm8pKTsKKwlkZXYtPm9wcy0+aW5mb19nZXQo
ZGV2LCBkZXZfaW5mbyk7Cit9CisKK2ludCB1a19jb25zZGV2X3J4X2luZm9fZ2V0KHN0cnVjdCB1
a19jb25zZGV2ICpkZXYsCisJCXN0cnVjdCB1a19jb25zZGV2X3JpbmdfaW5mbyAqcmluZ19pbmZv
KQoreworCVVLX0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChkZXYtPm9wcyk7CisJVUtfQVNTRVJU
KGRldi0+b3BzLT5yeF9pbmZvX2dldCk7CisJVUtfQVNTRVJUKHJpbmdfaW5mbyk7CisKKwkvKiBD
bGVhciB2YWx1ZXMgYmVmb3JlIHF1ZXJ5aW5nIGRyaXZlciByaW5nIHNwZWNpZmljYXRpb25zICov
CisJbWVtc2V0KHJpbmdfaW5mbywgMCwgc2l6ZW9mKCpyaW5nX2luZm8pKTsKKwlyZXR1cm4gZGV2
LT5vcHMtPnJ4X2luZm9fZ2V0KGRldiwgcmluZ19pbmZvKTsKK30KKworaW50IHVrX2NvbnNkZXZf
dHhfaW5mb19nZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJc3RydWN0IHVrX2NvbnNkZXZf
cmluZ19pbmZvICpyaW5nX2luZm8pCit7CisJVUtfQVNTRVJUKGRldik7CisJVUtfQVNTRVJUKGRl
di0+b3BzKTsKKwlVS19BU1NFUlQoZGV2LT5vcHMtPnR4X2luZm9fZ2V0KTsKKwlVS19BU1NFUlQo
cmluZ19pbmZvKTsKKworCS8qIENsZWFyIHZhbHVlcyBiZWZvcmUgcXVlcnlpbmcgZHJpdmVyIGZv
ciByaW5nIHNwZWNpZmljYXRpb25zICovCisJbWVtc2V0KHJpbmdfaW5mbywgMCwgc2l6ZW9mKCpy
aW5nX2luZm8pKTsKKwlyZXR1cm4gZGV2LT5vcHMtPnR4X2luZm9fZ2V0KGRldiwgcmluZ19pbmZv
KTsKK30KKwogdW5zaWduZWQgaW50IHVrX2NvbnNkZXZfY291bnQodm9pZCkKIHsKIAlyZXR1cm4g
KHVuc2lnbmVkIGludCkgY29uc2Rldl9jb3VudDsKQEAgLTExMiw2ICsxNTEsOSBAQCBpbnQgdWtf
Y29uc2Rldl9kcnZfcmVnaXN0ZXIoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwgc3RydWN0IHVrX2Fs
bG9jICphLAogCVVLX0FTU0VSVChQVFJJU0VSUihkZXYtPl9kYXRhKSk7CiAJLyogQXNzZXJ0IG1h
bmRhdG9yeSBjb25maWd1cmF0aW9uLiAqLwogCVVLX0FTU0VSVChkZXYtPm9wcyk7CisJVUtfQVNT
RVJUKGRldi0+b3BzLT5pbmZvX2dldCk7CisJVUtfQVNTRVJUKGRldi0+b3BzLT5yeF9pbmZvX2dl
dCk7CisJVUtfQVNTRVJUKGRldi0+b3BzLT50eF9pbmZvX2dldCk7CiAJVUtfQVNTRVJUKGRldi0+
b3BzLT5jbG9zZSk7CiAKIAlkZXYtPl9kYXRhID0gX2FsbG9jX2RhdGEoYSwgY29uc2Rldl9jb3Vu
dCwgZHJ2X25hbWUpOwpkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrIGIv
bGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrCmluZGV4IDYwZGQzN2VlLi5mNDU2YjExNyAxMDA2
NDQKLS0tIGEvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi91a2NvbnNkZXYv
ZXhwb3J0c3ltcy51awpAQCAtMSwzICsxLDYgQEAKK3VrX2NvbnNkZXZfaW5mb19nZXQKK3VrX2Nv
bnNkZXZfcnhfaW5mb19nZXQKK3VrX2NvbnNkZXZfdHhfaW5mb19nZXQKIHVrX2NvbnNkZXZfY291
bnQKIHVrX2NvbnNkZXZfZ2V0CiB1a19jb25zZGV2X2lkX2dldApkaWZmIC0tZ2l0IGEvbGliL3Vr
Y29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXYuaCBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9j
b25zZGV2LmgKaW5kZXggMGU3YWYyM2IuLjNkOThlNWNjIDEwMDY0NAotLS0gYS9saWIvdWtjb25z
ZGV2L2luY2x1ZGUvdWsvY29uc2Rldi5oCisrKyBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9j
b25zZGV2LmgKQEAgLTc2LDYgKzc2LDU0IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qKgor
ICogUXVlcnkgZGV2aWNlIGNhcGFiaWxpdGllcy4KKyAqIEluZm9ybWF0aW9uIHRoYXQgaXMgdXNl
ZnVsIGZvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24KKyAqCisgKiBAcGFyYW0gZGV2CisgKglUaGUg
VW5pa3JhZnQgQ29uc29sZSBEZXZpY2UuCisgKiBAcGFyYW0gZGV2X2luZm8KKyAqCUEgcG9pbnRl
ciB0byBhIHN0cnVjdHVyZSBvZiB0eXBlICp1a19jb25zZGV2X2luZm8qIHRvIGJlIGZpbGxlZCB3
aXRoCisgKgl0aGUgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBvZiBhIGNvbnNvbGUgZGV2aWNlLgor
ICogQHJldHVybgorICoJLSAoMCk6IFN1Y2Nlc3MKKyAqCS0gKDwwKTogRXJyb3IgaW4gZHJpdmVy
CisgKi8KK3ZvaWQgdWtfY29uc2Rldl9pbmZvX2dldChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2LAor
CQlzdHJ1Y3QgdWtfY29uc2Rldl9pbmZvICpkZXZfaW5mbyk7CisKKy8qKgorICogUXVlcnkgcmVj
ZWl2ZSBkZXZpY2UgcmluZyBjYXBhYmlsaXRpZXMuCisgKiBJbmZvcm1hdGlvbiB0aGF0IGlzIHVz
ZWZ1bCBmb3IgZGV2aWNlIHJpbmcgaW5pdGlhbGl6YXRpb24gKGUuZy4sCisgKiBtYXhpbXVtIG51
bWJlciBvZiBzdXBwb3J0ZWQgZGVzY3JpcHRvcnMgb24gUlgpLgorICoKKyAqIEBwYXJhbSBkZXYK
KyAqICAgVGhlIFVuaWtyYWZ0IENvbnNvbGUgRGV2aWNlIGluIGNvbmZpZ3VyZWQgc3RhdGUuCisg
KiBAcGFyYW0gcmluZ19pbmZvCisgKiAgIEEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBvZiB0eXBl
ICp1a19jb25zZGV2X3JpbmdfaW5mbyogdG8gYmUgZmlsbGVkIG91dAorICogQHJldHVybgorICog
ICAtICgwKTogU3VjY2VzcywgcmluZ19pbmZvIGlzIGZpbGxlZCBvdXQuCisgKiAgIC0gKDwwKTog
RXJyb3IgY29kZSBvZiB0aGUgZHJpdmVycyBmdW5jdGlvbi4KKyAqLworaW50IHVrX2NvbnNkZXZf
cnhfaW5mb19nZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJc3RydWN0IHVrX2NvbnNkZXZf
cmluZ19pbmZvICpyaW5nX2luZm8pOworCisvKioKKyAqIFF1ZXJ5IHJlY2VpdmUgZGV2aWNlIHJp
bmcgY2FwYWJpbGl0aWVzLgorICogSW5mb3JtYXRpb24gdGhhdCBpcyB1c2VmdWwgZm9yIGRldmlj
ZSByaW5nIGluaXRpYWxpemF0aW9uIChlLmcuLAorICogbWF4aW11bSBudW1iZXIgb2Ygc3VwcG9y
dGVkIGRlc2NyaXB0b3JzIG9uIFRYKS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlr
cmFmdCBDb25zb2xlIERldmljZSBpbiBjb25maWd1cmVkIHN0YXRlLgorICogQHBhcmFtIHJpbmdf
aW5mbworICogICBBIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdHlwZSAqdWtfY29uc2Rldl9y
aW5nX2luZm8qIHRvIGJlIGZpbGxlZCBvdXQKKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nl
c3MsIHJpbmdfaW5mbyBpcyBmaWxsZWQgb3V0LgorICogICAtICg8MCk6IEVycm9yIGNvZGUgb2Yg
dGhlIGRyaXZlcnMgZnVuY3Rpb24uCisgKi8KK2ludCB1a19jb25zZGV2X3R4X2luZm9fZ2V0KHN0
cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCXN0cnVjdCB1a19jb25zZGV2X3JpbmdfaW5mbyAqcmlu
Z19pbmZvKTsKKworLyoqCiAgKiBHZXQgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgVW5pa3JhZnQg
Q29uc29sZSBkZXZpY2VzLgogICoKICAqIEByZXR1cm4KZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNk
ZXYvaW5jbHVkZS91ay9jb25zZGV2X2NvcmUuaCBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9j
b25zZGV2X2NvcmUuaAppbmRleCAzNjk0ZjJiZS4uNWVkYzE1OWEgMTAwNjQ0Ci0tLSBhL2xpYi91
a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2NvcmUuaAorKysgYi9saWIvdWtjb25zZGV2L2lu
Y2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKQEAgLTcxLDEwICs3MSw1MiBAQCBlbnVtIHVrX2NvbnNk
ZXZfc3RhdGUgewogCVVLX0NPTlNERVZfUlVOTklORywKIH07CiAKKy8qKgorICogU3RydWN0dXJl
IHVzZWQgdG8gZGVzY3JpYmUgY29uc29sZSBkZXZpY2UgY2FwYWJpbGl0aWVzLgorICovCitzdHJ1
Y3QgdWtfY29uc2Rldl9pbmZvIHsKKworfTsKKworLyoqCisgKiBTdHJ1Y3R1cmUgdXNlZCB0byBk
ZXNjcmliZSBkZXZpY2UgZGVzY3JpcHRvciByaW5nIGxpbWl0YXRpb25zLgorICovCitzdHJ1Y3Qg
dWtfY29uc2Rldl9yaW5nX2luZm8geworCS8qIE1heCBhbGxvd2VkIG51bWJlciBvZiBkZXNjcmlw
dG9ycy4gKi8KKwl1aW50MTZfdCBuYl9tYXg7CisJLyogTWluIGFsbG93ZWQgbnVtYmVyIG9mIGRl
c2NyaXB0b3JzLiAqLworCXVpbnQxNl90IG5iX21pbjsKKwkvKiBOdW1iZXIgc2hvdWxkIGJlIGEg
bXVsdGlwbGUgb2YgbmJfYWxpZ24uICovCisJdWludDE2X3QgbmJfYWxpZ247CisJLyogTnVtYmVy
IHNob3VsZCBiZSBhIHBvd2VyIG9mIHR3by4gKi8KKwlpbnQgbmJfaXNfcG93ZXJfb2ZfdHdvOwor
fTsKKworLyoqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIHJlYWQgZGV2aWNlL2RyaXZlciBjYXBh
YmlsaXRpZXMsCisgKiAgdXNlZCBmb3IgY29uZmlndXJpbmcgdGhlIGRldmljZQorICovCit0eXBl
ZGVmIHZvaWQgKCp1a19jb25zZGV2X2luZm9fdCkgKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJ
CXN0cnVjdCB1a19jb25zZGV2X2luZm8gKmRldl9pbmZvKTsKKworLyoqIERyaXZlciBjYWxsYmFj
ayB0eXBlIHRvIHJldHJpZXZlIFJYIHJpbmcgbGltaXRhdGlvbnMsCisgKiAgdXNlZCBmb3IgY29u
ZmlndXJpbmcgdGhlIFJYIHJpbmcgbGF0ZXIKKyAqLwordHlwZWRlZiBpbnQgKCp1a19jb25zZGV2
X3J4X2luZm9fdCkgKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCXN0cnVjdCB1a19jb25zZGV2
X3JpbmdfaW5mbyAqcmluZ19pbmZvKTsKKworLyoqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIHJl
dHJpZXZlIFRYIHJpbmcgbGltaXRhdGlvbnMsCisgKiAgdXNlZCBmb3IgY29uZmlndXJpbmcgdGhl
IFRYIHJpbmcgbGF0ZXIKKyAqLwordHlwZWRlZiBpbnQgKCp1a19jb25zZGV2X3R4X2luZm9fdCkg
KHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCXN0cnVjdCB1a19jb25zZGV2X3JpbmdfaW5mbyAq
cmluZ19pbmZvKTsKKwogLyoqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIGNsb3NlIGFuIFVuaWty
YWZ0IGNvbnNvbGUgZGV2aWNlLiAqLwogdHlwZWRlZiB2b2lkICgqdWtfY29uc2Rldl9jbG9zZV90
KShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKIAogc3RydWN0IHVrX2NvbnNkZXZfb3BzIHsKKwl1
a19jb25zZGV2X2luZm9fdCAgICAgICAgICAgICAgICAgICBpbmZvX2dldDsKKwl1a19jb25zZGV2
X3J4X2luZm9fdCAgICAgICAgICAgICAgICByeF9pbmZvX2dldDsKKwl1a19jb25zZGV2X3R4X2lu
Zm9fdCAgICAgICAgICAgICAgICB0eF9pbmZvX2dldDsKIAl1a19jb25zZGV2X2Nsb3NlX3QgICAg
ICAgICAgICAgICAgICBjbG9zZTsKIH07CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakY-0000cN-Sw; Wed, 19 Jun 2019 13:35:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakX-0000c1-Kt
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:41 +0000
X-Inumbo-ID: 206218d9-9297-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 206218d9-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:39 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id p13so3411940wru.10
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35:39 -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=nQ77nT0/N1EriSBwZoOrRXx8bf/wDRnnN3q+uTMHYZI=;
 b=pR6wehj50o8EbeWVqZeZCXzO4a9aIHFKbjkrtc/uSZZPmqtuRbzMymdMeuaTVxnc1o
 7Lj5XzJ1+tFKTtIX8CfNxX8XTL32kD4+pDWFWdQq/f/sAueZrjsDA0A2xPAETCIQmLK3
 GndqoDn8mwU1wT6Om/nCJzAroPK7qKZrh9b3+TQwv2ove89/obMpscppR6amw8JmOJEz
 N2SUD8DL3Zeuw2/NcoIgOelK2UJHgyHmjYSiLb47l69TOoMc8NHxxkW/02+K6E/C3Fak
 scWtkgB+V99Uq3tSTo945HfGz09kkFEnxwK1k7eA0lR14tk7wi43SUBkbplzmFdzy9Qg
 3+HA==
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=nQ77nT0/N1EriSBwZoOrRXx8bf/wDRnnN3q+uTMHYZI=;
 b=XWOCcrKiX3FQpn8sBhQBidnh6X8vFGzzccd6HPUDiGE9UzlHUUtf0RJWenv9AkU+nt
 wb/mdaET1jhVgZWKNuZmWTvdO9qfsLsWtoPzXk+wyzHvSRMLQDjhbJqfuBgYSyNZZuse
 mvju8MLS82uwQY2mJOkidXpc6BxFHhPGNcv+vaugZ6DWxwm1vcmMwG26OPqHVkOXALXa
 QfK1nCQDJRyJmtNAyz0ApdnODwko+bnJGLdixoJxGYg+FMrkmDnR2yiqmfYsY0AsVm0w
 TiAZvPopsSbEXBPGHjKZlwUxQGiI1wUKg39TOstwSd7aAcu+ploXLd8AxAV/G39yX7EA
 A0DQ==
X-Gm-Message-State: APjAAAUupDsoDXtQQ0NH1Ek1holyGaEu6Awl13rmaKErEXTYeiMcxdkz
 8sr59vr1uX9PZK6Sn93p/QoH0Ia8
X-Google-Smtp-Source: APXvYqxOClkHD4uqOspOnEJH5omGDFaN/1ErT6MsR0PKdeYUCy+pIrN8MmAmbploPkWujWK/HbHhCg==
X-Received: by 2002:adf:fa4c:: with SMTP id y12mr72361041wrr.282.1560951338474; 
 Wed, 19 Jun 2019 06:35:38 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.37
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:38 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:11 +0300
Message-Id: <20190619133514.15913-5-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 4/7] lib/ukconsdev: Configure
 console device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBBUEkgZm9yIGNvbmZpZ3VyaW5nIGEgVW5pa3JhZnQg
Y29uc29sZSBkZXZpY2UuClRoZSBjb25maWd1cmF0aW9uIGlzIGRvbmUgaW4gdGhlIGZvbGxvd2lu
ZyBvcmRlcjoKICAgICgxKSBDb25maWd1cmUgbWFpbiBhc3BlY3RzIG9mIGRldmljZSAocGxhY2Vo
b2xkZXIgZm9yIGZ1dHVyZSB3b3JrKQogICAgKDIpIENvbmZpZ3VyZSBib3RoIHJ4IGFuZCB0eCAo
dHggaXMgYWxzbyBhIHBsYWNlaG9sZGVyKQpDb25maWd1cmUgQVBJIGluaXRpYWxpemVzIHRoZSBt
YWluIGRhdGEgc3RydWN0dXJlcyBmb3IgcngvdHguCgpTaWduZWQtb2ZmLWJ5OiBCaXJsZWEgQ29z
dGluIDxjb3N0aW4uYmlybGVhQGdtYWlsLmNvbT4KLS0tCiBsaWIvdWtjb25zZGV2L0NvbmZpZy51
ayAgICAgICAgICAgICAgICAgICB8ICAxNCArKwogbGliL3VrY29uc2Rldi9jb25zZGV2LmMgICAg
ICAgICAgICAgICAgICAgfCAyMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv
dWtjb25zZGV2L2V4cG9ydHN5bXMudWsgICAgICAgICAgICAgICB8ICAgNCArCiBsaWIvdWtjb25z
ZGV2L2luY2x1ZGUvdWsvY29uc2Rldi5oICAgICAgICB8ICA2NiArKysrKysrKysKIGxpYi91a2Nv
bnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2NvcmUuaCAgIHwgIDkwICsrKysrKysrKysrKysKIGxp
Yi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2RyaXZlci5oIHwgIDI0ICsrKysKIDYgZmls
ZXMgY2hhbmdlZCwgNDExIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdWtjb25zZGV2
L0NvbmZpZy51ayBiL2xpYi91a2NvbnNkZXYvQ29uZmlnLnVrCmluZGV4IGJmMjMxYjY2Li5jNzEy
NDdhMSAxMDA2NDQKLS0tIGEvbGliL3VrY29uc2Rldi9Db25maWcudWsKKysrIGIvbGliL3VrY29u
c2Rldi9Db25maWcudWsKQEAgLTMsNCArMywxOCBAQCBtZW51Y29uZmlnIExJQlVLQ09OU0RFVgog
CWRlZmF1bHQgbgogCXNlbGVjdCBMSUJVS0FMTE9DCiAJc2VsZWN0IExJQk5PTElCQyBpZiAhSEFW
RV9MSUJDCisKK2lmIExJQlVLQ09OU0RFVgorCWNvbmZpZyBMSUJVS0NPTlNERVZfRElTUEFUQ0hF
UlRIUkVBRFMKKwkJYm9vbCAiRGlzcGF0Y2hlciB0aHJlYWRzIGZvciBldmVudCBjYWxsYmFja3Mi
CisJCXNlbGVjdCBMSUJVS1NDSEVECisJCXNlbGVjdCBMSUJVS0xPQ0sKKwkJc2VsZWN0IExJQlVL
TE9DS19TRU1BUEhPUkUKKwkJZGVmYXVsdCBuCisJCWhlbHAKKwkJCUV2ZW50IGNhbGxiYWNrcyBh
cmUgZGlzcGF0Y2hlZCBpbiBhIGJvdHRvbSBoYWxmCisJCQl0aHJlYWQgY29udGV4dCBpbnN0ZWFk
IG9mIHRoZSBkZXZpY2UgaW50ZXJydXB0IGNvbnRleHQuCisJCQlXaGVuIHRoaXMgb3B0aW9uIGlz
IGVuYWJsZWQgYSBkaXNwYXRjaGVyIHRocmVhZCBpcworCQkJYWxsb2NhdGVkIGZvciBlYWNoIGNv
bmZpZ3VyZWQgcmVjZWl2ZSBxdWV1ZS4KKwkJCWxpYnVrc2NoZWQgaXMgcmVxdWlyZWQgZm9yIHRo
aXMgb3B0aW9uLgogZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvY29uc2Rldi5jIGIv
bGliL3VrY29uc2Rldi9jb25zZGV2LmMKaW5kZXggZDYxZDQyYTguLjg1NDJiMGU4IDEwMDY0NAot
LS0gYS9saWIvdWtjb25zZGV2L2NvbnNkZXYuYworKysgYi9saWIvdWtjb25zZGV2L2NvbnNkZXYu
YwpAQCAtODQsNiArODQsMjE1IEBAIGludCB1a19jb25zZGV2X3R4X2luZm9fZ2V0KHN0cnVjdCB1
a19jb25zZGV2ICpkZXYsCiAJcmV0dXJuIGRldi0+b3BzLT50eF9pbmZvX2dldChkZXYsIHJpbmdf
aW5mbyk7CiB9CiAKK2ludCB1a19jb25zZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgdWtfY29uc2RldiAq
ZGV2LAorCQljb25zdCBzdHJ1Y3QgdWtfY29uc2Rldl9jb25mICpkZXZfY29uZikKK3sKKwlpbnQg
cmMgPSAwOworCisJVUtfQVNTRVJUKGRldik7CisJVUtfQVNTRVJUKGRldi0+X2RhdGEpOworCVVL
X0FTU0VSVChkZXYtPm9wcyk7CisJVUtfQVNTRVJUKGRldi0+b3BzLT5jb25maWd1cmUpOworCVVL
X0FTU0VSVChkZXZfY29uZik7CisKKwlpZiAoZGV2LT5fZGF0YS0+c3RhdGUgIT0gVUtfQ09OU0RF
Vl9VTkNPTkZJR1VSRUQpCisJCXJldHVybiAtRUlOVkFMOworCisJcmMgPSBkZXYtPm9wcy0+Y29u
ZmlndXJlKGRldiwgZGV2X2NvbmYpOworCWlmIChyYyA8IDApIHsKKwkJdWtfcHJfZXJyKCJjb25z
ZGV2JSJQUkl1MTYiOiBGYWlsZWQgdG8gY29uZmlndXJlIGRldmljZTogJWRcbiIsCisJCQkJZGV2
LT5fZGF0YS0+aWQsIHJjKTsKKwkJZ290byBvdXQ7CisJfQorCisJZGV2LT5fZGF0YS0+c3RhdGUg
PSBVS19DT05TREVWX0NPTkZJR1VSRUQ7CisKK291dDoKKwlyZXR1cm4gcmM7Cit9CisKKyNpZmRl
ZiBDT05GSUdfTElCVUtDT05TREVWX0RJU1BBVENIRVJUSFJFQURTCitzdGF0aWMgdm9pZCBfZGlz
cGF0Y2hlcih2b2lkICphcmcpCit7CisJc3RydWN0IHVrX2NvbnNkZXZfZXZlbnRfaGFuZGxlciAq
aGFuZGxlciA9CisJCShzdHJ1Y3QgdWtfY29uc2Rldl9ldmVudF9oYW5kbGVyICopIGFyZzsKKwor
CVVLX0FTU0VSVChoYW5kbGVyKTsKKwlVS19BU1NFUlQoaGFuZGxlci0+Y2FsbGJhY2spOworCisJ
Zm9yICg7OykgeworCQl1a19zZW1hcGhvcmVfZG93bigmaGFuZGxlci0+ZXZlbnRzKTsKKwkJaGFu
ZGxlci0+Y2FsbGJhY2soaGFuZGxlci0+ZGV2LCBoYW5kbGVyLT5jYl9jb29raWUpOworCX0KK30K
KyNlbmRpZgorCitzdGF0aWMgaW50IF9jcmVhdGVfZXZlbnRfaGFuZGxlcih1a19jb25zZGV2X2V2
ZW50X3QgY2FsbGJhY2ssCisJCXZvaWQgKmNiX2Nvb2tpZSwKKyNpZmRlZiBDT05GSUdfTElCVUtD
T05TREVWX0RJU1BBVENIRVJUSFJFQURTCisJCXN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCWNv
bnN0IGNoYXIgKnF1ZXVlX3R5cGVfc3RyLAorCQlzdHJ1Y3QgdWtfc2NoZWQgKnMsCisjZW5kaWYK
KwkJc3RydWN0IHVrX2NvbnNkZXZfZXZlbnRfaGFuZGxlciAqaCkKK3sKKwlVS19BU1NFUlQoaCk7
CisJVUtfQVNTRVJUKGNhbGxiYWNrIHx8ICghY2FsbGJhY2sgJiYgIWNiX2Nvb2tpZSkpOworCisJ
aC0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKwloLT5jYl9jb29raWUgPSBjYl9jb29raWU7CisKKyNp
ZmRlZiBDT05GSUdfTElCVUtDT05TREVWX0RJU1BBVENIRVJUSFJFQURTCisJVUtfQVNTRVJUKCFo
LT5kaXNwYXRjaGVyKTsKKworCS8qIElmIHdlIGRvIG5vdCBoYXZlIGEgY2FsbGJhY2ssIHdlIGRv
IG5vdCBuZWVkIGEgdGhyZWFkICovCisJaWYgKCFjYWxsYmFjaykKKwkJcmV0dXJuIDA7CisKKwlo
LT5kZXYgPSBkZXY7CisJdWtfc2VtYXBob3JlX2luaXQoJmgtPmV2ZW50cywgMCk7CisJaC0+ZGlz
cGF0Y2hlcl9zID0gczsKKworCisJLyogQ3JlYXRlIGEgbmFtZSBmb3IgdGhlIGRpc3BhdGNoZXIg
dGhyZWFkLgorCSAqIEluIGNhc2Ugb2YgZXJyb3JzLCB3ZSBqdXN0IGNvbnRpbnVlIHdpdGhvdXQg
YSBuYW1lCisJICovCisJaWYgKGFzcHJpbnRmKCZoLT5kaXNwYXRjaGVyX25hbWUsCisJCQkgImNv
bnNkZXYlIlBSSXUxNiItJXMiLAorCQkJIGRldi0+X2RhdGEtPmlkLCBxdWV1ZV90eXBlX3N0cikg
PCAwKSB7CisJCWgtPmRpc3BhdGNoZXJfbmFtZSA9IE5VTEw7CisJfQorCisJaC0+ZGlzcGF0Y2hl
ciA9IHVrX3RocmVhZF9jcmVhdGUoaC0+ZGlzcGF0Y2hlcl9zLAorCQloLT5kaXNwYXRjaGVyX25h
bWUsIE5VTEwsIF9kaXNwYXRjaGVyLCBoKTsKKwlpZiAoIWgtPmRpc3BhdGNoZXIpIHsKKwkJaWYg
KGgtPmRpc3BhdGNoZXJfbmFtZSkgeworCQkJZnJlZShoLT5kaXNwYXRjaGVyX25hbWUpOworCQkJ
aC0+ZGlzcGF0Y2hlcl9uYW1lID0gTlVMTDsKKwkJfQorCQlyZXR1cm4gLUVOT01FTTsKKwl9Cisj
ZW5kaWYKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBfZGVzdHJveV9ldmVudF9oYW5k
bGVyKHN0cnVjdCB1a19jb25zZGV2X2V2ZW50X2hhbmRsZXIgKmgKKwkJX19tYXliZV91bnVzZWQp
Cit7CisJVUtfQVNTRVJUKGgpOworCisjaWZkZWYgQ09ORklHX0xJQlVLQ09OU0RFVl9ESVNQQVRD
SEVSVEhSRUFEUworCWlmIChoLT5kaXNwYXRjaGVyKSB7CisJCVVLX0FTU0VSVChoLT5kaXNwYXRj
aGVyX3MpOworCQl1a190aHJlYWRfa2lsbChoLT5kaXNwYXRjaGVyKTsKKwkJdWtfdGhyZWFkX3dh
aXQoaC0+ZGlzcGF0Y2hlcik7CisJCWgtPmRpc3BhdGNoZXIgPSBOVUxMOworCX0KKworCWlmICho
LT5kaXNwYXRjaGVyX25hbWUpIHsKKwkJZnJlZShoLT5kaXNwYXRjaGVyX25hbWUpOworCQloLT5k
aXNwYXRjaGVyX25hbWUgPSBOVUxMOworCX0KKyNlbmRpZgorfQorCitpbnQgdWtfY29uc2Rldl9y
eF9jb25maWd1cmUoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJdWludDE2X3QgbmJfZGVzYywK
KwkJY29uc3Qgc3RydWN0IHVrX2NvbnNkZXZfcnhfY29uZiAqcnhfY29uZikKK3sKKwlpbnQgcmMg
PSAwOworCisJVUtfQVNTRVJUKGRldik7CisJVUtfQVNTRVJUKGRldi0+X2RhdGEpOworCVVLX0FT
U0VSVChkZXYtPm9wcyk7CisJVUtfQVNTRVJUKGRldi0+b3BzLT5yeF9jb25maWd1cmUpOworCVVL
X0FTU0VSVChyeF9jb25mKTsKKworI2lmZGVmIENPTkZJR19MSUJVS0NPTlNERVZfRElTUEFUQ0hF
UlRIUkVBRFMKKwlVS19BU1NFUlQoKHJ4X2NvbmYtPmNhbGxiYWNrICYmIHJ4X2NvbmYtPnMpCisJ
CQl8fCAhcnhfY29uZi0+Y2FsbGJhY2spOworI2VuZGlmCisKKwlpZiAoZGV2LT5fZGF0YS0+c3Rh
dGUgIT0gVUtfQ09OU0RFVl9DT05GSUdVUkVEKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJjID0g
X2NyZWF0ZV9ldmVudF9oYW5kbGVyKHJ4X2NvbmYtPmNhbGxiYWNrLCByeF9jb25mLT5jYl9jb29r
aWUsCisjaWZkZWYgQ09ORklHX0xJQlVLQ09OU0RFVl9ESVNQQVRDSEVSVEhSRUFEUworCQkJZGV2
LCAicngiLCByeF9jb25mLT5zLAorI2VuZGlmCisJCQkmZGV2LT5fZGF0YS0+cnhfaGFuZGxlcik7
CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IGRldi0+b3BzLT5yeF9jb25maWd1
cmUoZGV2LCBuYl9kZXNjLCByeF9jb25mKTsKKwlpZiAocmMgPCAwKSB7CisJCXVrX3ByX2Vycigi
Y29uc2RldiUiUFJJdTE2IjogRmFpbGVkIHRvIGNvbmZpZ3VyZSByeDogJWRcbiIsCisJCQkJCQlk
ZXYtPl9kYXRhLT5pZCwgcmMpOworCQlnb3RvIGVycl9kZXN0cm95X2hhbmRsZXI7CisJfQorCitv
dXQ6CisJcmV0dXJuIHJjOworCitlcnJfZGVzdHJveV9oYW5kbGVyOgorCV9kZXN0cm95X2V2ZW50
X2hhbmRsZXIoJmRldi0+X2RhdGEtPnJ4X2hhbmRsZXIpOworCWdvdG8gb3V0OworfQorCitpbnQg
dWtfY29uc2Rldl90eF9jb25maWd1cmUoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJdWludDE2
X3QgbmJfZGVzYywKKwkJY29uc3Qgc3RydWN0IHVrX2NvbnNkZXZfdHhfY29uZiAqdHhfY29uZikK
K3sKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKGRldik7CisJVUtfQVNTRVJUKGRldi0+X2Rh
dGEpOworCVVLX0FTU0VSVChkZXYtPm9wcyk7CisJVUtfQVNTRVJUKGRldi0+b3BzLT50eF9jb25m
aWd1cmUpOworCVVLX0FTU0VSVCh0eF9jb25mKTsKKworCWlmIChkZXYtPl9kYXRhLT5zdGF0ZSAh
PSBVS19DT05TREVWX0NPTkZJR1VSRUQpCisJCXJldHVybiAtRUlOVkFMOworCisJcmMgPSBkZXYt
Pm9wcy0+dHhfY29uZmlndXJlKGRldiwgbmJfZGVzYywgdHhfY29uZik7CisJaWYgKHJjIDwgMCkg
eworCQl1a19wcl9lcnIoImNvbnNkZXYlIlBSSXUxNiI6IEZhaWxlZCB0byBjb25maWd1cmUgdHg6
ICVkXG4iLAorCQkJCQkJZGV2LT5fZGF0YS0+aWQsIHJjKTsKKwkJZ290byBvdXQ7CisJfQorCitv
dXQ6CisJcmV0dXJuIHJjOworfQorCit2b2lkIHVrX2NvbnNkZXZfcmVsZWFzZShzdHJ1Y3QgdWtf
Y29uc2RldiAqZGV2KQoreworCWludCByYyA9IDA7CisKKwlVS19BU1NFUlQoZGV2KTsKKwlVS19B
U1NFUlQoZGV2LT5fZGF0YSk7CisJVUtfQVNTRVJUKGRldi0+b3BzKTsKKwlVS19BU1NFUlQoZGV2
LT5vcHMtPnJlbGVhc2UpOworCVVLX0FTU0VSVChkZXYtPl9kYXRhLT5zdGF0ZSAhPSBVS19DT05T
REVWX1JVTk5JTkcpOworCisjaWYgQ09ORklHX0xJQlVLQkxLREVWX0RJU1BBVENIRVJUSFJFQURT
CisJaWYgKGRldi0+X2RhdGEtPnJ4X2hhbmRsZXIuY2FsbGJhY2spCisJCV9kZXN0cm95X2V2ZW50
X2hhbmRsZXIoJmRldi0+X2RhdGEtPnJ4X2hhbmRsZXIpOworI2VuZGlmCisKKwlyYyA9IGRldi0+
b3BzLT5yZWxlYXNlKGRldik7CisJaWYgKHJjIDwgMCkgeworCQl1a19wcl9lcnIoIkZhaWxlZCB0
byByZWxlYXNlIGNvbnNkZXYlIlBSSXUxNiIgZGV2aWNlICVkXG4iLAorCQkJCWRldi0+X2RhdGEt
PmlkLCByYyk7CisJCXJldHVybjsKKwl9CisKKwlkZXYtPl9kYXRhLT5zdGF0ZSA9IFVLX0NPTlNE
RVZfVU5DT05GSUdVUkVEOworCXVrX3ByX2luZm8oIlJlbGVhc2VkIGNvbnNkZXYlIlBSSXUxNiIg
ZGV2aWNlXG4iLAorCQkJZGV2LT5fZGF0YS0+aWQpOworfQorCiB1bnNpZ25lZCBpbnQgdWtfY29u
c2Rldl9jb3VudCh2b2lkKQogewogCXJldHVybiAodW5zaWduZWQgaW50KSBjb25zZGV2X2NvdW50
OwpAQCAtMTU0LDYgKzM2MywxMCBAQCBpbnQgdWtfY29uc2Rldl9kcnZfcmVnaXN0ZXIoc3RydWN0
IHVrX2NvbnNkZXYgKmRldiwgc3RydWN0IHVrX2FsbG9jICphLAogCVVLX0FTU0VSVChkZXYtPm9w
cy0+aW5mb19nZXQpOwogCVVLX0FTU0VSVChkZXYtPm9wcy0+cnhfaW5mb19nZXQpOwogCVVLX0FT
U0VSVChkZXYtPm9wcy0+dHhfaW5mb19nZXQpOworCVVLX0FTU0VSVChkZXYtPm9wcy0+Y29uZmln
dXJlKTsKKwlVS19BU1NFUlQoZGV2LT5vcHMtPnJ4X2NvbmZpZ3VyZSk7CisJVUtfQVNTRVJUKGRl
di0+b3BzLT50eF9jb25maWd1cmUpOworCVVLX0FTU0VSVChkZXYtPm9wcy0+cmVsZWFzZSk7CiAJ
VUtfQVNTRVJUKGRldi0+b3BzLT5jbG9zZSk7CiAKIAlkZXYtPl9kYXRhID0gX2FsbG9jX2RhdGEo
YSwgY29uc2Rldl9jb3VudCwgZHJ2X25hbWUpOwpkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9l
eHBvcnRzeW1zLnVrIGIvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrCmluZGV4IGY0NTZiMTE3
Li42ZmMxYjNmMyAxMDA2NDQKLS0tIGEvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrCisrKyBi
L2xpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51awpAQCAtMSw2ICsxLDEwIEBACiB1a19jb25zZGV2
X2luZm9fZ2V0CiB1a19jb25zZGV2X3J4X2luZm9fZ2V0CiB1a19jb25zZGV2X3R4X2luZm9fZ2V0
Cit1a19jb25zZGV2X2NvbmZpZ3VyZQordWtfY29uc2Rldl9yeF9jb25maWd1cmUKK3VrX2NvbnNk
ZXZfdHhfY29uZmlndXJlCit1a19jb25zZGV2X3JlbGVhc2UKIHVrX2NvbnNkZXZfY291bnQKIHVr
X2NvbnNkZXZfZ2V0CiB1a19jb25zZGV2X2lkX2dldApkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rl
di9pbmNsdWRlL3VrL2NvbnNkZXYuaCBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2
LmgKaW5kZXggM2Q5OGU1Y2MuLjA0YjRjMGRjIDEwMDY0NAotLS0gYS9saWIvdWtjb25zZGV2L2lu
Y2x1ZGUvdWsvY29uc2Rldi5oCisrKyBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2
LmgKQEAgLTEyNCw2ICsxMjQsNzIgQEAgaW50IHVrX2NvbnNkZXZfdHhfaW5mb19nZXQoc3RydWN0
IHVrX2NvbnNkZXYgKmRldiwKIAkJc3RydWN0IHVrX2NvbnNkZXZfcmluZ19pbmZvICpyaW5nX2lu
Zm8pOwogCiAvKioKKyAqIENvbmZpZ3VyZSBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4KKyAq
IFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBpbnZva2VkIGZpcnN0IGJlZm9yZSBhbnkgb3RoZXIgZnVu
Y3Rpb24gaW4gdGhlCisgKiBVbmlrcmFmdCBDb25zb2xlIEFQSS4gVGhpcyBmdW5jdGlvbiBjYW4g
YWxzbyBiZSByZS1pbnZva2VkIHdoZW4gYSBkZXZpY2UgaXMKKyAqIGluIHRoZSBzdG9wcGVkIHN0
YXRlLgorICoKKyAqIEBwYXJhbSBkZXYKKyAqCVRoZSBVbmlrcmFmdCBDb25zb2xlIERldmljZSBp
biBjb25maWd1cmVkIHN0YXRlLgorICogQHBhcmFtIGRldl9jb25mCisgKiAgIFRoZSBwb2ludGVy
IHRvIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgdG8gYmUgdXNlZCBmb3IgdGhlIFVuaWtyYWZ0Cisg
KiAgIGNvbnNvbGUgZGV2aWNlLgorICogQHJldHVybgorICoJLSAoMCk6IFN1Y2Nlc3MsIGRldmlj
ZSBjb25maWd1cmVkLgorICoJLSAoPDApOiBFcnJvciBjb2RlIHJldHVybmVkIGJ5IHRoZSBkcml2
ZXIgY29uZmlndXJhdGlvbiBmdW5jdGlvbi4KKyAqLworaW50IHVrX2NvbnNkZXZfY29uZmlndXJl
KHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCWNvbnN0IHN0cnVjdCB1a19jb25zZGV2X2NvbmYg
KmRldl9jb25mKTsKKworLyoqCisgKiBTZXRzIHVwIHJlY2VpdmUgZm9yIGFuIFVuaWtyYWZ0IGNv
bnNvbGUgZGV2aWNlLgorICoKKyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IENvbnNv
bGUgRGV2aWNlIGluIHVuY29uZmlndXJlZCBzdGF0ZS4KKyAqIEBwYXJhbSBuYl9kZXNjCisgKiAg
IE51bWJlciBvZiBkZXNjcmlwdG9ycyBmb3IgdGhlIHF1ZXVlLiBJbnNwZWN0IHVrX2NvbnNkZXZf
cnhfaW5mb19nZXQoKSB0bworICogICByZXRyaWV2ZSBsaW1pdGF0aW9ucy4gSWYgbmJfZGVzYyBp
cyBzZXQgdG8gMCwgdGhlIGRyaXZlciBjaG9vc2VzIGEgZGVmYXVsdAorICogICB2YWx1ZS4KKyAq
IEBwYXJhbSByeF9jb25mCisgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb25maWd1cmF0aW9uIGRh
dGEgdG8gYmUgdXNlZCBmb3IgcmVjZWl2ZS4KKyAqICAgSXRzIG1lbW9yeSBjYW4gYmUgcmVsZWFz
ZWQgYWZ0ZXIgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6
IFN1Y2Nlc3MsIHJlY2VpdmUgY29ycmVjdGx5IHNldCB1cC4KKyAqICAgLSAoPDApOiBVbmFibGUg
dG8gYWxsb2NhdGUgdGhlIHJlY2VpdmUgcmluZyBkZXNjcmlwdG9ycy4KKyAqLworaW50IHVrX2Nv
bnNkZXZfcnhfY29uZmlndXJlKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCXVpbnQxNl90IG5i
X2Rlc2MsCisJCWNvbnN0IHN0cnVjdCB1a19jb25zZGV2X3J4X2NvbmYgKnJ4X2NvbmYpOworCisv
KioKKyAqIFNldHMgdXAgcmVjZWl2ZSBmb3IgYW4gVW5pa3JhZnQgY29uc29sZSBkZXZpY2UuCisg
KgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgQ29uc29sZSBEZXZpY2UgaW4gdW5j
b25maWd1cmVkIHN0YXRlLgorICogQHBhcmFtIG5iX2Rlc2MKKyAqICAgTnVtYmVyIG9mIGRlc2Ny
aXB0b3JzIGZvciB0aGUgcXVldWUuIEluc3BlY3QgdWtfY29uc2Rldl90eF9pbmZvX2dldCgpIHRv
CisgKiAgIHJldHJpZXZlIGxpbWl0YXRpb25zLiBJZiBuYl9kZXNjIGlzIHNldCB0byAwLCB0aGUg
ZHJpdmVyIGNob29zZXMgYSBkZWZhdWx0CisgKiAgIHZhbHVlLgorICogQHBhcmFtIHR4X2NvbmYK
KyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBiZSB1c2VkIGZv
ciB0cmFuc21pdC4KKyAqICAgSXRzIG1lbW9yeSBjYW4gYmUgcmVsZWFzZWQgYWZ0ZXIgaW52b2tp
bmcgdGhpcyBmdW5jdGlvbi4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nlc3MsIHJlY2Vp
dmUgY29ycmVjdGx5IHNldCB1cC4KKyAqICAgLSAoPDApOiBVbmFibGUgdG8gYWxsb2NhdGUgdGhl
IHRyYW5zbWl0IHJpbmcgZGVzY3JpcHRvcnMuCisgKi8KK2ludCB1a19jb25zZGV2X3R4X2NvbmZp
Z3VyZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2LAorCQl1aW50MTZfdCBuYl9kZXNjLAorCQljb25z
dCBzdHJ1Y3QgdWtfY29uc2Rldl90eF9jb25mICp0eF9jb25mKTsKKworLyoqCisgKiBGcmVlIHJ4
IGFuZCB0eCByaW5ncyBmb3IgYW4gVW5pa3JhZnQgY29uc29sZSBkZXZpY2UuCisgKgorICogQHBh
cmFtIGRldgorICoJVGhlIFVuaWtyYWZ0IENvbnNvbGUgRGV2aWNlIGluIGNvbmZpZ3VyZWQgc3Rh
dGUuCisgKi8KK3ZvaWQgdWtfY29uc2Rldl9yZWxlYXNlKHN0cnVjdCB1a19jb25zZGV2ICpkZXYp
OworCisvKioKICAqIEdldCB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBVbmlrcmFmdCBDb25zb2xl
IGRldmljZXMuCiAgKgogICogQHJldHVybgpkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9pbmNs
dWRlL3VrL2NvbnNkZXZfY29yZS5oIGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZf
Y29yZS5oCmluZGV4IDVlZGMxNTlhLi4xMjk1YTkxMyAxMDA2NDQKLS0tIGEvbGliL3VrY29uc2Rl
di9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oCisrKyBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91
ay9jb25zZGV2X2NvcmUuaApAQCAtMzgsNiArMzgsMTAgQEAKIAogI2luY2x1ZGUgPHVrL2xpc3Qu
aD4KICNpbmNsdWRlIDx1ay9jb25maWcuaD4KKyNpZmRlZiBDT05GSUdfTElCVUtDT05TREVWX0RJ
U1BBVENIRVJUSFJFQURTCisjaW5jbHVkZSA8dWsvc2NoZWQuaD4KKyNpbmNsdWRlIDx1ay9zZW1h
cGhvcmUuaD4KKyNlbmRpZgogCiAvKioKICAqIFVuaWtyYWZ0IGNvbnNvbGUgQVBJIGNvbW1vbiBk
ZWNsYXJhdGlvbnMuCkBAIC05Miw2ICs5Niw0NSBAQCBzdHJ1Y3QgdWtfY29uc2Rldl9yaW5nX2lu
Zm8gewogCWludCBuYl9pc19wb3dlcl9vZl90d287CiB9OwogCisvKioKKyAqIFN0cnVjdHVyZSB1
c2VkIHRvIGNvbmZpZ3VyZSBhIGNvbnNvbGUgZGV2aWNlLgorICovCitzdHJ1Y3QgdWtfY29uc2Rl
dl9jb25mIHsKKworfTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIHVzZWQgZm9yIGV2ZW50IGNh
bGxiYWNrcy4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCBDb25zb2xlIERl
dmljZS4KKyAqIEBwYXJhbSBhcmdwCisgKiAgIEV4dHJhIGFyZ3VtZW50IHRoYXQgY2FuIGJlIGRl
ZmluZWQgb24gY2FsbGJhY2sgcmVnaXN0cmF0aW9uLgorICovCit0eXBlZGVmIHZvaWQgKCp1a19j
b25zZGV2X2V2ZW50X3QpKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsIHZvaWQgKmFyZ3ApOworCisv
KioKKyAqIFN0cnVjdHVyZSB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBVbmlrcmFmdCBjb25zb2xlIGRl
dmljZSBSWCBxdWV1ZS4KKyAqLworc3RydWN0IHVrX2NvbnNkZXZfcnhfY29uZiB7CisJLyogRXZl
bnQgY2FsbGJhY2sgZnVuY3Rpb24uICovCisJdWtfY29uc2Rldl9ldmVudF90IGNhbGxiYWNrOwor
CS8qIEFyZ3VtZW50IHBvaW50ZXIgZm9yIGNhbGxiYWNrLiAqLworCXZvaWQgKmNiX2Nvb2tpZTsK
KworI2lmZGVmIENPTkZJR19MSUJVS0NPTlNERVZfRElTUEFUQ0hFUlRIUkVBRFMKKwkvKiBTY2hl
ZHVsZXIgZm9yIGRpc3BhdGNoZXIuICovCisJc3RydWN0IHVrX3NjaGVkICpzOworI2VuZGlmCit9
OworCisvKioKKyAqIFN0cnVjdHVyZSB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBVbmlrcmFmdCBjb25z
b2xlIGRldmljZSBUWCBxdWV1ZS4KKyAqLworc3RydWN0IHVrX2NvbnNkZXZfdHhfY29uZiB7CisK
K307CisKIC8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byByZWFkIGRldmljZS9kcml2ZXIgY2Fw
YWJpbGl0aWVzLAogICogIHVzZWQgZm9yIGNvbmZpZ3VyaW5nIHRoZSBkZXZpY2UKICAqLwpAQCAt
MTEwLDYgKzE1MywyMyBAQCB0eXBlZGVmIGludCAoKnVrX2NvbnNkZXZfcnhfaW5mb190KSAoc3Ry
dWN0IHVrX2NvbnNkZXYgKmRldiwKIHR5cGVkZWYgaW50ICgqdWtfY29uc2Rldl90eF9pbmZvX3Qp
IChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2LAogCQlzdHJ1Y3QgdWtfY29uc2Rldl9yaW5nX2luZm8g
KnJpbmdfaW5mbyk7CiAKKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBjb25maWd1cmUgYSBj
b25zb2xlIGRldmljZS4gKi8KK3R5cGVkZWYgaW50ICgqdWtfY29uc2Rldl9jb25maWd1cmVfdCko
c3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJY29uc3Qgc3RydWN0IHVrX2NvbnNkZXZfY29uZiAq
ZGV2X2NvbmYpOworCisvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8gc2V0IHVwIGEgUlggcmlu
ZyBvZiBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4gKi8KK3R5cGVkZWYgaW50ICgqdWtfY29u
c2Rldl9yeF9jb25maWd1cmVfdCkoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJdWludDE2X3Qg
bmJfZGVzYywKKwkJY29uc3Qgc3RydWN0IHVrX2NvbnNkZXZfcnhfY29uZiAqcnhfY29uZik7CisK
Ky8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBzZXQgdXAgYSBUWCByaW5nIG9mIGFuIFVuaWty
YWZ0IGNvbnNvbGUgZGV2aWNlLiAqLwordHlwZWRlZiBpbnQgKCp1a19jb25zZGV2X3R4X2NvbmZp
Z3VyZV90KShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2LAorCQl1aW50MTZfdCBuYl9kZXNjLAorCQlj
b25zdCBzdHJ1Y3QgdWtfY29uc2Rldl90eF9jb25mICp0eF9jb25mKTsKKworLyoqIERyaXZlciBj
YWxsYmFjayB0eXBlIHRvIHJlbGVhc2UgYSBjb25maWd1cmVkIFVuaWtyYWZ0IGNvbnNvbGUgZGV2
aWNlICovCit0eXBlZGVmIGludCAoKnVrX2NvbnNkZXZfcmVsZWFzZV90KShzdHJ1Y3QgdWtfY29u
c2RldiAqZGV2KTsKKwogLyoqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIGNsb3NlIGFuIFVuaWty
YWZ0IGNvbnNvbGUgZGV2aWNlLiAqLwogdHlwZWRlZiB2b2lkICgqdWtfY29uc2Rldl9jbG9zZV90
KShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKIApAQCAtMTE3LDExICsxNzcsMzkgQEAgc3RydWN0
IHVrX2NvbnNkZXZfb3BzIHsKIAl1a19jb25zZGV2X2luZm9fdCAgICAgICAgICAgICAgICAgICBp
bmZvX2dldDsKIAl1a19jb25zZGV2X3J4X2luZm9fdCAgICAgICAgICAgICAgICByeF9pbmZvX2dl
dDsKIAl1a19jb25zZGV2X3R4X2luZm9fdCAgICAgICAgICAgICAgICB0eF9pbmZvX2dldDsKKwl1
a19jb25zZGV2X2NvbmZpZ3VyZV90ICAgICAgICAgICAgICBjb25maWd1cmU7CisJdWtfY29uc2Rl
dl9yZWxlYXNlX3QgICAgICAgICAgICAgICAgcmVsZWFzZTsKKwl1a19jb25zZGV2X3J4X2NvbmZp
Z3VyZV90ICAgICAgICAgICByeF9jb25maWd1cmU7CisJdWtfY29uc2Rldl90eF9jb25maWd1cmVf
dCAgICAgICAgICAgdHhfY29uZmlndXJlOwogCXVrX2NvbnNkZXZfY2xvc2VfdCAgICAgICAgICAg
ICAgICAgIGNsb3NlOwogfTsKIAogLyoqCiAgKiBAaW50ZXJuYWwKKyAqIEV2ZW50IGhhbmRsZXIg
Y29uZmlndXJhdGlvbiAoaW50ZXJuYWwgdG8gbGlidWtjb25zZGV2KQorICovCitzdHJ1Y3QgdWtf
Y29uc2Rldl9ldmVudF9oYW5kbGVyIHsKKwkvKiBDYWxsYmFjayAqLworCXVrX2NvbnNkZXZfZXZl
bnRfdCBjYWxsYmFjazsKKwkvKiBQYXJhbWV0ZXIgZm9yIGNhbGxiYWNrICovCisJdm9pZCAgICAg
ICAgICAgICAgICAgICpjYl9jb29raWU7CisKKyNpZmRlZiBDT05GSUdfTElCVUtDT05TREVWX0RJ
U1BBVENIRVJUSFJFQURTCisJLyogU2VtYXBob3JlIHRvIHRyaWdnZXIgZXZlbnRzLiAqLworCXN0
cnVjdCB1a19zZW1hcGhvcmUgZXZlbnRzOworCS8qIFJlZmVyZW5jZSB0byBjb25zb2xlIGRldmlj
ZSAqLworCXN0cnVjdCB1a19jb25zZGV2ICAgICpkZXY7CisJLyogRGlzcGF0Y2hlciB0aHJlYWQu
ICovCisJc3RydWN0IHVrX3RocmVhZCAgICAqZGlzcGF0Y2hlcjsKKwkvKiByZWZlcmVuY2UgdG8g
dGhyZWFkIG5hbWUuICovCisJY2hhciAgICAgICAgICAgICAgICAqZGlzcGF0Y2hlcl9uYW1lOwor
CS8qIFNjaGVkdWxlciBmb3IgZGlzcGF0Y2hlci4gKi8KKwlzdHJ1Y3QgdWtfc2NoZWQgICAgICpk
aXNwYXRjaGVyX3M7CisjZW5kaWYKK307CisKKy8qKgorICogQGludGVybmFsCiAgKiBsaWJ1a2Nv
bnNkZXYgaW50ZXJuYWwgZGF0YSBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25zb2xlIGRldmljZS4K
ICAqLwogc3RydWN0IHVrX2NvbnNkZXZfZGF0YSB7CkBAIC0xMjksNiArMjE3LDggQEAgc3RydWN0
IHVrX2NvbnNkZXZfZGF0YSB7CiAJY29uc3QgdWludDE2X3QgaWQ7CiAJLyogRGV2aWNlIHN0YXRl
ICovCiAJZW51bSB1a19jb25zZGV2X3N0YXRlIHN0YXRlOworCS8qIEV2ZW50IGhhbmRsZXIgZm9y
IHJ4ICovCisJc3RydWN0IHVrX2NvbnNkZXZfZXZlbnRfaGFuZGxlciByeF9oYW5kbGVyOwogCS8q
IE5hbWUgb2YgZGV2aWNlKi8KIAljb25zdCBjaGFyICpkcnZfbmFtZTsKIAkvKiBEZXZpY2UgYWxs
b2NhdG9yICovCmRpZmYgLS1naXQgYS9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9k
cml2ZXIuaCBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2RyaXZlci5oCmluZGV4
IDc1ZjEyYjQzLi5hOTA3NzhjMyAxMDA2NDQKLS0tIGEvbGliL3VrY29uc2Rldi9pbmNsdWRlL3Vr
L2NvbnNkZXZfZHJpdmVyLmgKKysrIGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZf
ZHJpdmVyLmgKQEAgLTUxLDYgKzUxLDMwIEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qKgor
ICogRm9yd2FyZHMgYW4gcnggZXZlbnQgdG8gdGhlIEFQSSB1c2VyCisgKiBDYW4gKGFuZCBzaG91
bGQpIGJlIGNhbGxlZCBmcm9tIGRldmljZSBpbnRlcnJ1cHQgY29udGV4dAorICoKKyAqIEBwYXJh
bSBkZXYKKyAqCVVuaWtyYWZ0IGNvbnNvbGUgZGV2aWNlIHRvIHdoaWNoIHRoZSBldmVudCByZWxh
dGVzIHRvCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB1a19jb25zZGV2X2Rydl9yeF9ldmVudChz
dHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCXN0cnVjdCB1a19jb25zZGV2X2V2ZW50X2hhbmRs
ZXIgKnJ4X2hhbmRsZXI7CisKKwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5fZGF0
YSk7CisKKwlyeF9oYW5kbGVyID0gJmRldi0+X2RhdGEtPnJ4X2hhbmRsZXI7CisKKyNpZmRlZiBD
T05GSUdfTElCVUtDT05TREVWX0RJU1BBVENIRVJUSFJFQURTCisJdWtfc2VtYXBob3JlX3VwKCZy
eF9oYW5kbGVyLT5ldmVudHMpOworI2Vsc2UKKwlpZiAocnhfaGFuZGxlci0+Y2FsbGJhY2spCisJ
CXJ4X2hhbmRsZXItPmNhbGxiYWNrKGRldiwgcnhfaGFuZGxlci0+Y2JfY29va2llKTsKKyNlbmRp
ZgorfQorCisvKioKICAqIEFkZHMgYSBVbmlrcmFmdCBjb25zb2xlIGRldmljZSB0byB0aGUgZGV2
aWNlIGxpc3QuCiAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBkcml2ZXIgYWRk
cyBhIG5ldyBmb3VuZCBkZXZpY2UuCiAgKgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakZ-0000cw-VF; Wed, 19 Jun 2019 13:35:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakZ-0000cM-0I
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:43 +0000
X-Inumbo-ID: 212a5be7-9297-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 212a5be7-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:41 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id m3so3462889wrv.2
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35: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=w7q0G5AZaN8w8Ktv4IxD71eMcsjpyYEp5pXQDeG6vnw=;
 b=KUUS0AU+JJMPk+PO1EsMVo3Cw31uPSrmqyJ8ujyVat3fUb9Y3v2conNw/yP20vi03q
 2Rym+gvKCqzhbfSY7/7f7zs/dp3b642CPLW4tl0FZ/00MQv+OSAhq1QeEXkUg5mWD+oO
 Cy9LNGCvfrHsGeMEWXEnHqcWDJAZt4TOZK5L+8xn/TRM0Hxq3KDcp03ML5m4OP1xwP5U
 ouMCjoeqP100WHOYXm/eKSONwoG1V7rYzWKHY2+g6iQyT0hJoXpZUJ6i8usMv3t5yBC0
 q0FLfYsb+8JsX8TITXXDjhOhhaPOdtqaGAZn3+DOnm2T+pdkzU6pLnIJHg2NeO7R/cx4
 s17g==
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=w7q0G5AZaN8w8Ktv4IxD71eMcsjpyYEp5pXQDeG6vnw=;
 b=ElytDvK72vgChLzPGWghlrMYI8s2FPP+i1MB8Fo8TO4nlLt1HZlNmYfju+a0LpFX7K
 Y7Z47Gth/y9Jvg0trpwYguwhmZXC6MVeIxgZ2/Mf2RQDDQ8hhTOtSjGBS69P15ZdYUlt
 8L9HuyEMPMwlPa1feVQAujPFntet6GQqV7/bzw9VCAu/w1uQLciEV71i3b7czoMWiXZy
 r034zepXcpgzEg8v5oo9msniWN6yKMV+y6VOioHzU0UnxGYNGS7l5dOWGBJ8W1CBCKjb
 6cWc8DKqakIDMyEVGVst5RAp1xs2raXrdpuIIQP4dm77B4akdSqaO2CuNGTLknM7nc8s
 W4Wg==
X-Gm-Message-State: APjAAAVE66bf0udlE6eaQb5bfQU1Uoi0yynG8ueb+lfCDupfjG4+tZb7
 1pbx7iVifa5NTp0piLHljjEhogpe
X-Google-Smtp-Source: APXvYqw8WzURmuueX9LcLNh3i9LaugH14jGdigBSXcORfXlybP79jeSyuOeAP9Xzugv6HHQreSxalw==
X-Received: by 2002:a05:6000:146:: with SMTP id
 r6mr74731367wrx.237.1560951339935; 
 Wed, 19 Jun 2019 06:35:39 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.39
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:39 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:12 +0300
Message-Id: <20190619133514.15913-6-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 5/7] lib/ukconsdev: Start console
 device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBicmluZ3MgZGV2aWNlIHN0YXJ0LCBuZWVkZWQgaW4gb3JkZXIgdG8Kc3RhcnQg
cmVhZGluZyBvciB3cml0dGluZy4KVGhlIGRldmljZSBuZWVkcyB0byBiZSBjb25maWd1cmVkIGJl
Zm9yZSBzdGFydGluZy4KClNpZ25lZC1vZmYtYnk6IEJpcmxlYSBDb3N0aW4gPGNvc3Rpbi5iaXJs
ZWFAZ21haWwuY29tPgotLS0KIGxpYi91a2NvbnNkZXYvY29uc2Rldi5jICAgICAgICAgICAgICAg
ICB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL3VrY29uc2Rldi9l
eHBvcnRzeW1zLnVrICAgICAgICAgICAgIHwgIDIgKysKIGxpYi91a2NvbnNkZXYvaW5jbHVkZS91
ay9jb25zZGV2LmggICAgICB8IDI5ICsrKysrKysrKysrKysrKysrKwogbGliL3VrY29uc2Rldi9p
bmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oIHwgIDggKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgOTEg
aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvY29uc2Rldi5jIGIvbGli
L3VrY29uc2Rldi9jb25zZGV2LmMKaW5kZXggODU0MmIwZTguLjZjMWU4MTg1IDEwMDY0NAotLS0g
YS9saWIvdWtjb25zZGV2L2NvbnNkZXYuYworKysgYi9saWIvdWtjb25zZGV2L2NvbnNkZXYuYwpA
QCAtMjkzLDYgKzI5Myw1NiBAQCB2b2lkIHVrX2NvbnNkZXZfcmVsZWFzZShzdHJ1Y3QgdWtfY29u
c2RldiAqZGV2KQogCQkJZGV2LT5fZGF0YS0+aWQpOwogfQogCitpbnQgdWtfY29uc2Rldl9zdGFy
dChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCWludCByYyA9IDA7CisKKwlVS19BU1NFUlQo
ZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7CisJVUtfQVNTRVJUKGRldi0+b3BzKTsKKwlV
S19BU1NFUlQoZGV2LT5vcHMtPnN0YXJ0KTsKKwlVS19BU1NFUlQoZGV2LT5fZGF0YS0+c3RhdGUg
PT0gVUtfQ09OU0RFVl9DT05GSUdVUkVEKTsKKworCXJjID0gZGV2LT5vcHMtPnN0YXJ0KGRldik7
CisJaWYgKHJjIDwgMCkgeworCQl1a19wcl9lcnIoImNvbnNkZXYlIlBSSXUxNiI6IEZhaWxlZCB0
byBzdGFydCBpbnRlcmZhY2UgJWRcbiIsCisJCQkgICBkZXYtPl9kYXRhLT5pZCwgcmMpOworCQln
b3RvIG91dDsKKwl9CisKKwlkZXYtPl9kYXRhLT5zdGF0ZSA9IFVLX0NPTlNERVZfUlVOTklORzsK
Kwl1a19wcl9pbmZvKCJjb25zZGV2JSJQUkl1MTYiOiBTdGFydGVkIGludGVyZmFjZVxuIiwKKwkJ
CWRldi0+X2RhdGEtPmlkKTsKKworb3V0OgorCXJldHVybiByYzsKK30KKworaW50IHVrX2NvbnNk
ZXZfc3RvcChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCWludCByYyA9IDA7CisKKwlVS19B
U1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7CisJVUtfQVNTRVJUKGRldi0+b3Bz
KTsKKwlVS19BU1NFUlQoZGV2LT5vcHMtPnN0b3ApOworCVVLX0FTU0VSVChkZXYtPl9kYXRhLT5z
dGF0ZSA9PSBVS19DT05TREVWX1JVTk5JTkcpOworCisJcmMgPSBkZXYtPm9wcy0+c3RvcChkZXYp
OworCWlmIChyYyA8IDApIHsKKwkJdWtfcHJfZXJyKCJGYWlsZWQgdG8gc3RvcCBjb25zZGV2JSJQ
Ukl1MTYiIGRldmljZSAlZFxuIiwKKwkJCQlkZXYtPl9kYXRhLT5pZCwgcmMpOworCQlnb3RvIG91
dDsKKwl9CisKKwlkZXYtPl9kYXRhLT5zdGF0ZSA9IFVLX0NPTlNERVZfQ09ORklHVVJFRDsKKwl1
a19wcl9pbmZvKCJTdG9wcGVkIGNvbnNkZXYlIlBSSXUxNiIgZGV2aWNlXG4iLAorCQkJZGV2LT5f
ZGF0YS0+aWQpOworCitvdXQ6CisJcmV0dXJuIHJjOworfQorCiB1bnNpZ25lZCBpbnQgdWtfY29u
c2Rldl9jb3VudCh2b2lkKQogewogCXJldHVybiAodW5zaWduZWQgaW50KSBjb25zZGV2X2NvdW50
OwpAQCAtMzY3LDYgKzQxNyw4IEBAIGludCB1a19jb25zZGV2X2Rydl9yZWdpc3RlcihzdHJ1Y3Qg
dWtfY29uc2RldiAqZGV2LCBzdHJ1Y3QgdWtfYWxsb2MgKmEsCiAJVUtfQVNTRVJUKGRldi0+b3Bz
LT5yeF9jb25maWd1cmUpOwogCVVLX0FTU0VSVChkZXYtPm9wcy0+dHhfY29uZmlndXJlKTsKIAlV
S19BU1NFUlQoZGV2LT5vcHMtPnJlbGVhc2UpOworCVVLX0FTU0VSVChkZXYtPm9wcy0+c3RhcnQp
OworCVVLX0FTU0VSVChkZXYtPm9wcy0+c3RvcCk7CiAJVUtfQVNTRVJUKGRldi0+b3BzLT5jbG9z
ZSk7CiAKIAlkZXYtPl9kYXRhID0gX2FsbG9jX2RhdGEoYSwgY29uc2Rldl9jb3VudCwgZHJ2X25h
bWUpOwpkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrIGIvbGliL3VrY29u
c2Rldi9leHBvcnRzeW1zLnVrCmluZGV4IDZmYzFiM2YzLi5kZmYxYzMzMSAxMDA2NDQKLS0tIGEv
bGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi91a2NvbnNkZXYvZXhwb3J0c3lt
cy51awpAQCAtNSw2ICs1LDggQEAgdWtfY29uc2Rldl9jb25maWd1cmUKIHVrX2NvbnNkZXZfcnhf
Y29uZmlndXJlCiB1a19jb25zZGV2X3R4X2NvbmZpZ3VyZQogdWtfY29uc2Rldl9yZWxlYXNlCit1
a19jb25zZGV2X3N0YXJ0Cit1a19jb25zZGV2X3N0b3AKIHVrX2NvbnNkZXZfY291bnQKIHVrX2Nv
bnNkZXZfZ2V0CiB1a19jb25zZGV2X2lkX2dldApkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9p
bmNsdWRlL3VrL2NvbnNkZXYuaCBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2LmgK
aW5kZXggMDRiNGMwZGMuLjc3OWViZGJjIDEwMDY0NAotLS0gYS9saWIvdWtjb25zZGV2L2luY2x1
ZGUvdWsvY29uc2Rldi5oCisrKyBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2LmgK
QEAgLTE5MCw2ICsxOTAsMzUgQEAgaW50IHVrX2NvbnNkZXZfdHhfY29uZmlndXJlKHN0cnVjdCB1
a19jb25zZGV2ICpkZXYsCiB2b2lkIHVrX2NvbnNkZXZfcmVsZWFzZShzdHJ1Y3QgdWtfY29uc2Rl
diAqZGV2KTsKIAogLyoqCisgKiBTdGFydCBhIENvbnNvbGUgZGV2aWNlLgorICoKKyAqIEFmdGVy
IGEgY29uc29sZSBkZXZpY2Ugd2FzIGNvbmZpZ3VyZWQsIHRoZSBkZXZpY2UgY2FuIGJlIHN0YXJ0
ZWQuCisgKiBPbiBzdWNjZXNzLCBhbGwgb3BlcmF0aW9uYWwgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5
IHRoZQorICogVW5pa3JhZnQgY29uc29sZSBBUEkgKGludGVycnVwdHMsIHJlY2VpdmUvdHJhbnNt
aXQsIGFuZCBzbyBvbikgY2FuIGJlIGludm9rZWQKKyAqIGFmdGVyd2FyZHMuCisgKgorICogQHBh
cmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgQ29uc29sZSBEZXZpY2UgaW4gY29uZmlndXJlZCBz
dGF0ZS4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nlc3MsIFVuaWtyYWZ0IGNvbnNvbGUg
ZGV2aWNlIHN0YXJ0ZWQuCisgKiAgIC0gKDwwKTogRXJyb3IgY29kZSBvZiB0aGUgZHJpdmVyIGRl
dmljZSBzdGFydCBmdW5jdGlvbi4KKyAqLworaW50IHVrX2NvbnNkZXZfc3RhcnQoc3RydWN0IHVr
X2NvbnNkZXYgKmRldik7CisKKy8qKgorICogU3RvcCBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmlj
ZSwgYW5kIHNldCBpdHMgc3RhdGUgdG8gVUtfQ09OU0RFVl9DT05GSUdVUkVECisgKiBzdGF0ZS4K
KyAqIFRoZSBkZXZpY2UgY2FuIGJlIHJlc3RhcnRlZCB3aXRoIGEgY2FsbCB0byB1a19jb25zZGV2
X3N0YXJ0KCkuCisgKgorICogQHBhcmFtIGRldgorICoJVGhlIFVuaWtyYWZ0IENvbnNvbGUgRGV2
aWNlIGluIHJ1bm5pbmcgc3RhdGUuCisgKiBAcmV0dXJuCisgKiAgLSAoMCk6IFN1Y2Nlc3MsIFVu
aWtyYWZ0IGNvbnNvbGUgZGV2aWNlIHN0b3BwZWQuCisgKiAgLSAoPDApOiBFcnJvciBjb2RlIG9m
IHRoZSBkcml2ZXIgZGV2aWNlIHN0b3AgZnVuY3Rpb24uCisgKi8KK2ludCB1a19jb25zZGV2X3N0
b3Aoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CisKKy8qKgogICogR2V0IHRoZSBudW1iZXIgb2Yg
YXZhaWxhYmxlIFVuaWtyYWZ0IENvbnNvbGUgZGV2aWNlcy4KICAqCiAgKiBAcmV0dXJuCmRpZmYg
LS1naXQgYS9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmggYi9saWIvdWtj
b25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKaW5kZXggMTI5NWE5MTMuLjQxZjJlYTNi
IDEwMDY0NAotLS0gYS9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKKysr
IGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oCkBAIC0xNzAsNiArMTcw
LDEyIEBAIHR5cGVkZWYgaW50ICgqdWtfY29uc2Rldl90eF9jb25maWd1cmVfdCkoc3RydWN0IHVr
X2NvbnNkZXYgKmRldiwKIC8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byByZWxlYXNlIGEgY29u
ZmlndXJlZCBVbmlrcmFmdCBjb25zb2xlIGRldmljZSAqLwogdHlwZWRlZiBpbnQgKCp1a19jb25z
ZGV2X3JlbGVhc2VfdCkoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CiAKKy8qKiBEcml2ZXIgY2Fs
bGJhY2sgdHlwZSB0byBzdGFydCBhIGNvbmZpZ3VyZWQgVW5pa3JhZnQgY29uc29sZSBkZXZpY2Uu
ICovCit0eXBlZGVmIGludCAoKnVrX2NvbnNkZXZfc3RhcnRfdCkoc3RydWN0IHVrX2NvbnNkZXYg
KmRldik7CisKKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBzdG9wIGEgcnVubmluZyBVbmlr
cmFmdCBjb25zb2xlIGRldmljZS4gKi8KK3R5cGVkZWYgaW50ICgqdWtfY29uc2Rldl9zdG9wX3Qp
KHN0cnVjdCB1a19jb25zZGV2ICpkZXYpOworCiAvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8g
Y2xvc2UgYW4gVW5pa3JhZnQgY29uc29sZSBkZXZpY2UuICovCiB0eXBlZGVmIHZvaWQgKCp1a19j
b25zZGV2X2Nsb3NlX3QpKHN0cnVjdCB1a19jb25zZGV2ICpkZXYpOwogCkBAIC0xODEsNiArMTg3
LDggQEAgc3RydWN0IHVrX2NvbnNkZXZfb3BzIHsKIAl1a19jb25zZGV2X3JlbGVhc2VfdCAgICAg
ICAgICAgICAgICByZWxlYXNlOwogCXVrX2NvbnNkZXZfcnhfY29uZmlndXJlX3QgICAgICAgICAg
IHJ4X2NvbmZpZ3VyZTsKIAl1a19jb25zZGV2X3R4X2NvbmZpZ3VyZV90ICAgICAgICAgICB0eF9j
b25maWd1cmU7CisJdWtfY29uc2Rldl9zdGFydF90ICAgICAgICAgICAgICAgICAgc3RhcnQ7CisJ
dWtfY29uc2Rldl9zdG9wX3QgICAgICAgICAgICAgICAgICAgc3RvcDsKIAl1a19jb25zZGV2X2Ns
b3NlX3QgICAgICAgICAgICAgICAgICBjbG9zZTsKIH07CiAKLS0gCjIuMTEuMAoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:46 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdakc-0000do-1X; Wed, 19 Jun 2019 13:35:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdaka-0000dE-9m
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:44 +0000
X-Inumbo-ID: 22319aef-9297-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 22319aef-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:43 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id v19so1878519wmj.5
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35: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=Li6nwr0aqWTXKvVpoUg2nK73jqrBpVZs41HgZEPoRjQ=;
 b=aZkUkwLCM5ZFSF0PS0o6KC1lIf4FFUm127xQiDYIPygDHy6VzLu2yEkyoyymPcDYNr
 i+DOnfMVOebmoVK35RZjlM+QVxlUxkkPawsg5dGMMDBeumTj1G0ZYXJd/8n1sTD/8aeq
 j7lUw75v1wYPlVWewLWds2TapnWpSmTeVomhJ+iPA6AGd4LoHJ/X0BkLXCZnFu8FFjfU
 D/WzcvHmFfNmJMCdwbdI5ayU9Hzm+sg0rp+GuT4XdrizNGNGQQoVPw7RlpikeS6jL+3F
 Cb7CRphHZBx7MBtj3AK2Q1QwHwin7bKq/wMhEO//Zqh2Nh+IazuFNP19f2VoPf2HKCcD
 QDbw==
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=Li6nwr0aqWTXKvVpoUg2nK73jqrBpVZs41HgZEPoRjQ=;
 b=QEZwLRf61AdAmOnc1paK3E/vpxoBd8RO8SVegrQiv+0EBZEo3L6gFvoe/huvL4Prhq
 oDbAnycqWzndcRuvhqAWXesjLAHTIcAakrFlZHLw4fUShm66CtCD/MBhnABzI1QP9oOY
 TRC0+CU2UC11iOQcmpotDZq07jPCpd9VDozw90MSmj9OxN3SoPbD8TgEW7Va4C9U7tis
 TYWZO1Upp8FpqXMp4iZD8a/X6VURTAXq71+QQNJW7D1eRrJccKLF/OJe30zQa3QSZeD+
 B0OL/Byc+K05ItTjDQbxzcuunDpTnPRFXfoX1doBZ6sNwcWjGz6eIzLx55W709VpPdI0
 q5pQ==
X-Gm-Message-State: APjAAAUpqKplczXxw03iLeZ5hZvKnkiIWnTAJ4RMxL7RgzF3VNOYapLO
 eKZJfAEvyI/zgOYU/nH/ACl0/7xy
X-Google-Smtp-Source: APXvYqxGkvX6f76/VaLhtXaWzV7qNjjdYbxrqLu5RP5Y7qmkH0EApyMaM2JpWOePOkVZ0dmjCuryNg==
X-Received: by 2002:a05:600c:20ca:: with SMTP id
 y10mr8166592wmm.72.1560951341672; 
 Wed, 19 Jun 2019 06:35:41 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.40
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:41 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:13 +0300
Message-Id: <20190619133514.15913-7-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 6/7] lib/ukconsdev: Read/Write from
 console device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

U2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0t
LQogbGliL3VrY29uc2Rldi9jb25zZGV2LmMgICAgICAgICAgICAgICAgIHwgMzAgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCiBsaWIvdWtjb25zZGV2L2V4cG9ydHN5bXMudWsgICAgICAg
ICAgICAgfCAgMiArKwogbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXYuaCAgICAgIHwg
MzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdWtjb25zZGV2L2luY2x1ZGUv
dWsvY29uc2Rldl9jb3JlLmggfCAxMCArKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDcyIGlu
c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9saWIvdWtjb25zZGV2L2NvbnNkZXYuYyBiL2xpYi91
a2NvbnNkZXYvY29uc2Rldi5jCmluZGV4IDZjMWU4MTg1Li5iOTFiMGE3ZiAxMDA2NDQKLS0tIGEv
bGliL3VrY29uc2Rldi9jb25zZGV2LmMKKysrIGIvbGliL3VrY29uc2Rldi9jb25zZGV2LmMKQEAg
LTM0Myw2ICszNDMsMzQgQEAgb3V0OgogCXJldHVybiByYzsKIH0KIAordW5zaWduZWQgaW50IHVr
X2NvbnNkZXZfd3JpdGUoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJY2hhciAqYnVmLCB1bnNp
Z25lZCBpbnQgbGVuKQoreworCVVLX0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChkZXYtPl9kYXRh
KTsKKwlVS19BU1NFUlQoZGV2LT5vcHMpOworCVVLX0FTU0VSVChkZXYtPm9wcy0+cmVhZCk7CisK
KwlpZiAoZGV2LT5fZGF0YS0+c3RhdGUgIT0gVUtfQ09OU0RFVl9SVU5OSU5HKQorCQlyZXR1cm4g
LUVJTlZBTDsKKworCXJldHVybiBkZXYtPm9wcy0+d3JpdGUoZGV2LCBidWYsIGxlbik7Cit9CisK
K3Vuc2lnbmVkIGludCB1a19jb25zZGV2X3JlYWQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJ
Y2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCVVLX0FTU0VSVChkZXYpOworCVVLX0FT
U0VSVChkZXYtPl9kYXRhKTsKKwlVS19BU1NFUlQoZGV2LT5vcHMpOworCVVLX0FTU0VSVChkZXYt
Pm9wcy0+cmVhZCk7CisKKwlpZiAoZGV2LT5fZGF0YS0+c3RhdGUgIT0gVUtfQ09OU0RFVl9SVU5O
SU5HKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiBkZXYtPm9wcy0+cmVhZChkZXYsIGJ1
ZiwgbGVuKTsKK30KKwogdW5zaWduZWQgaW50IHVrX2NvbnNkZXZfY291bnQodm9pZCkKIHsKIAly
ZXR1cm4gKHVuc2lnbmVkIGludCkgY29uc2Rldl9jb3VudDsKQEAgLTQxNyw2ICs0NDUsOCBAQCBp
bnQgdWtfY29uc2Rldl9kcnZfcmVnaXN0ZXIoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwgc3RydWN0
IHVrX2FsbG9jICphLAogCVVLX0FTU0VSVChkZXYtPm9wcy0+cnhfY29uZmlndXJlKTsKIAlVS19B
U1NFUlQoZGV2LT5vcHMtPnR4X2NvbmZpZ3VyZSk7CiAJVUtfQVNTRVJUKGRldi0+b3BzLT5yZWxl
YXNlKTsKKwlVS19BU1NFUlQoZGV2LT5vcHMtPndyaXRlKTsKKwlVS19BU1NFUlQoZGV2LT5vcHMt
PnJlYWQpOwogCVVLX0FTU0VSVChkZXYtPm9wcy0+c3RhcnQpOwogCVVLX0FTU0VSVChkZXYtPm9w
cy0+c3RvcCk7CiAJVUtfQVNTRVJUKGRldi0+b3BzLT5jbG9zZSk7CmRpZmYgLS1naXQgYS9saWIv
dWtjb25zZGV2L2V4cG9ydHN5bXMudWsgYi9saWIvdWtjb25zZGV2L2V4cG9ydHN5bXMudWsKaW5k
ZXggZGZmMWMzMzEuLjRkMzk5NDFkIDEwMDY0NAotLS0gYS9saWIvdWtjb25zZGV2L2V4cG9ydHN5
bXMudWsKKysrIGIvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrCkBAIC03LDYgKzcsOCBAQCB1
a19jb25zZGV2X3R4X2NvbmZpZ3VyZQogdWtfY29uc2Rldl9yZWxlYXNlCiB1a19jb25zZGV2X3N0
YXJ0CiB1a19jb25zZGV2X3N0b3AKK3VrX2NvbnNkZXZfd3JpdGUKK3VrX2NvbnNkZXZfcmVhZAog
dWtfY29uc2Rldl9jb3VudAogdWtfY29uc2Rldl9nZXQKIHVrX2NvbnNkZXZfaWRfZ2V0CmRpZmYg
LS1naXQgYS9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldi5oIGIvbGliL3VrY29uc2Rl
di9pbmNsdWRlL3VrL2NvbnNkZXYuaAppbmRleCA3NzllYmRiYy4uOWYyZjA1NjcgMTAwNjQ0Ci0t
LSBhL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2LmgKKysrIGIvbGliL3VrY29uc2Rl
di9pbmNsdWRlL3VrL2NvbnNkZXYuaApAQCAtMjE5LDYgKzIxOSwzNiBAQCBpbnQgdWtfY29uc2Rl
dl9zdGFydChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKIGludCB1a19jb25zZGV2X3N0b3Aoc3Ry
dWN0IHVrX2NvbnNkZXYgKmRldik7CiAKIC8qKgorICogQHBhcmFtIGRldgorICogIFRoZSBVbmlr
cmFmdCBDb25zb2xlIERldmljZSBpbiBydW5uaW5nIHN0YXRlLgorICogQHBhcmFtIGJ1ZgorICog
IFBvaW50ZXIgZnJvbSB3aGljaCB0byB3cml0ZSBvbiB0aGUgcmluZy4KKyAqIEBwYXJhbSBsZW4K
KyAqICBIb3cgbWFueSBieXRlcyB0byB0YWtlIGZyb20gYnVmIGFuZCB3cml0ZSB0byByaW5nLgor
ICogQHJldHVybgorICoJLSAoMCk6IFJpbmcgaXMgZnVsbC4KKyAqCS0gKD4wKTogTnVtYmVyIG9m
IGJ5dGVzIHdyaXR0ZW4uCisgKgktICg8MCk6IEVycm9yIGNvZGUgb2YgdGhlIGRyaXZlciBkZXZp
Y2UsIHdyaXRlIGZhaWxlZC4KKyAqLwordW5zaWduZWQgaW50IHVrX2NvbnNkZXZfd3JpdGUoc3Ry
dWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuKTsKKwor
LyoqCisgKiBAcGFyYW0gZGV2CisgKiAgVGhlIFVuaWtyYWZ0IENvbnNvbGUgRGV2aWNlIGluIHJ1
bm5pbmcgc3RhdGUuCisgKiBAcGFyYW0gYnVmCisgKiAgUG9pbnRlciB3aGVyZSB0byBwdXQgYnl0
ZXMgcmVhZCBmcm9tIHJpbmcuCisgKiBAcGFyYW0gbGVuCisgKiAgSG93IG1hbnkgYnl0ZXMgdG8g
cmVhZCBmcm9tIHJpbmcuCisgKiBAcmV0dXJuCisgKgktICgwKTogUmluZyBpcyBlbXB0eS4KKyAq
CS0gKD4wKTogTnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisgKgktICg8MCk6IEVycm9yIGNvZGUgb2Yg
dGhlIGRyaXZlciBkZXZpY2UsIHJlYWQgZmFpbGVkLgorICovCit1bnNpZ25lZCBpbnQgdWtfY29u
c2Rldl9yZWFkKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCWNoYXIgKmJ1ZiwgdW5zaWduZWQg
aW50IGxlbik7CisKKy8qKgogICogR2V0IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIFVuaWtyYWZ0
IENvbnNvbGUgZGV2aWNlcy4KICAqCiAgKiBAcmV0dXJuCmRpZmYgLS1naXQgYS9saWIvdWtjb25z
ZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmggYi9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsv
Y29uc2Rldl9jb3JlLmgKaW5kZXggNDFmMmVhM2IuLjZjNjc1ZmE3IDEwMDY0NAotLS0gYS9saWIv
dWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKKysrIGIvbGliL3VrY29uc2Rldi9p
bmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oCkBAIC0xNzYsNiArMTc2LDE0IEBAIHR5cGVkZWYgaW50
ICgqdWtfY29uc2Rldl9zdGFydF90KShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKIC8qKiBEcml2
ZXIgY2FsbGJhY2sgdHlwZSB0byBzdG9wIGEgcnVubmluZyBVbmlrcmFmdCBjb25zb2xlIGRldmlj
ZS4gKi8KIHR5cGVkZWYgaW50ICgqdWtfY29uc2Rldl9zdG9wX3QpKHN0cnVjdCB1a19jb25zZGV2
ICpkZXYpOwogCisvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8gd3JpdGUgdG8gYSBydW5uaW5n
IFVuaWtyYWZ0IGNvbnNvbGUgZGV2aWNlLiAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgKCp1a19j
b25zZGV2X3dyaXRlX3QpKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCWNoYXIgKmJ1ZiwgdW5z
aWduZWQgaW50IGxlbik7CisKKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byByZWFkIHRvIGEg
cnVubmluZyBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4gKi8KK3R5cGVkZWYgdW5zaWduZWQgaW50
ICgqdWtfY29uc2Rldl9yZWFkX3QpKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJCWNoYXIgKmJ1
ZiwgdW5zaWduZWQgaW50IGxlbik7CisKIC8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBjbG9z
ZSBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4gKi8KIHR5cGVkZWYgdm9pZCAoKnVrX2NvbnNk
ZXZfY2xvc2VfdCkoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CiAKQEAgLTE4OSw2ICsxOTcsOCBA
QCBzdHJ1Y3QgdWtfY29uc2Rldl9vcHMgewogCXVrX2NvbnNkZXZfdHhfY29uZmlndXJlX3QgICAg
ICAgICAgIHR4X2NvbmZpZ3VyZTsKIAl1a19jb25zZGV2X3N0YXJ0X3QgICAgICAgICAgICAgICAg
ICBzdGFydDsKIAl1a19jb25zZGV2X3N0b3BfdCAgICAgICAgICAgICAgICAgICBzdG9wOworCXVr
X2NvbnNkZXZfd3JpdGVfdCAgICAgICAgICAgICAgICAgIHdyaXRlOworCXVrX2NvbnNkZXZfcmVh
ZF90ICAgICAgICAgICAgICAgICAgIHJlYWQ7CiAJdWtfY29uc2Rldl9jbG9zZV90ICAgICAgICAg
ICAgICAgICAgY2xvc2U7CiB9OwogCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:35:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:35: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 1hdake-0000eb-3G; Wed, 19 Jun 2019 13:35:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdakc-0000e2-7y
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:35:46 +0000
X-Inumbo-ID: 238a7b7b-9297-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 238a7b7b-9297-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:35:45 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id x4so3429675wrt.6
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:35: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:in-reply-to:references;
 bh=yGb4UGieuQ2UHxbE2dLxoJzgcYU70H+/Pi7cLOzIDtY=;
 b=g6gAEAk3mXYe6xw1x87Z9UAMGGfDNiViBRux92jlxQnl8klf0KOEd+uIJMRMRq/MXZ
 gw1/iAMNxGXOnTkfw5pcO5L/otSXRdVRa8bfAUeEBTS29RjZq58PKA/zA+D3OYEW8dDF
 oF5fOpy+rpn+WjUsRWPtgztA6DX6RfzSwLfivP7fPiDW5e1y8flUWBkOznlIjIZDrgxY
 poSBmfgzq252n6xY3iFBUGp7BZzRfCup1stqNl84Hzq6UpCJSN1H7ZTUpaNgIbA9FYwB
 Y69S9777CKw8Up9+4spcB0o/0aVda6ZCO+4OdUWoURALsO0nxZVMzoNoPD51Bw96KbNN
 Xzdw==
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=yGb4UGieuQ2UHxbE2dLxoJzgcYU70H+/Pi7cLOzIDtY=;
 b=cJ10UtnBNivGLizTiyi2iIltc4tyC3UtuZwwCT9j6cSXY86ERaZonlGcrwpR9UGRj/
 LmF2+B2zDb8m+xHRo9UfkzGpoqK5XnDrgr8ENUxYEP/LzQB4qQnqhZnBjHplq5poueSK
 89g2Nt3bpOH4qn4/aGvrCQImxvh1+UyuVEBYwP9atZh+7g5CRYpluak4BgOkxT+TOiEz
 731M8Vww3T14PRZaA0ur9PvCBbx9I17brjrH21XcSmni53cgZ7pK+zepl+ixMhv9gtxC
 DZ7SXdEQqObCLnHmWEIG3L+yARchm3UVIk1KZkiRNEABPAxWnh1xtxCHhE7t10iWceYT
 hvNw==
X-Gm-Message-State: APjAAAV/GAUoWLCmSOqUgSqT28ets+CJW6m1AuuoEos+erDEIblSYp4k
 hn6C4VqEmLPfaYyxONG1/4x0uq2m
X-Google-Smtp-Source: APXvYqwNTvqUAO9bfX4ONHzNOAH9RZgcny0y256awdAhmg6TFa9TxhRvv40TxT5Rnz6uwV8KioJiVQ==
X-Received: by 2002:adf:e34e:: with SMTP id n14mr3689111wrj.169.1560951343962; 
 Wed, 19 Jun 2019 06:35:43 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id x17sm19879509wrq.64.2019.06.19.06.35.43
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:35:43 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:35:14 +0300
Message-Id: <20190619133514.15913-8-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 7/7] lib/ukconsdev: Enable
 interrupts on console device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

U2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0t
LQogbGliL3VrY29uc2Rldi9jb25zZGV2LmMgICAgICAgICAgICAgICAgIHwgIDIgKysKIGxpYi91
a2NvbnNkZXYvZXhwb3J0c3ltcy51ayAgICAgICAgICAgICB8ICAyICsrCiBsaWIvdWtjb25zZGV2
L2luY2x1ZGUvdWsvY29uc2Rldi5oICAgICAgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIGxpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2NvcmUuaCB8ICA4ICsr
KysrKwogNCBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGli
L3VrY29uc2Rldi9jb25zZGV2LmMgYi9saWIvdWtjb25zZGV2L2NvbnNkZXYuYwppbmRleCBiOTFi
MGE3Zi4uZmQwMTU0MGIgMTAwNjQ0Ci0tLSBhL2xpYi91a2NvbnNkZXYvY29uc2Rldi5jCisrKyBi
L2xpYi91a2NvbnNkZXYvY29uc2Rldi5jCkBAIC00NDUsNiArNDQ1LDggQEAgaW50IHVrX2NvbnNk
ZXZfZHJ2X3JlZ2lzdGVyKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsIHN0cnVjdCB1a19hbGxvYyAq
YSwKIAlVS19BU1NFUlQoZGV2LT5vcHMtPnJ4X2NvbmZpZ3VyZSk7CiAJVUtfQVNTRVJUKGRldi0+
b3BzLT50eF9jb25maWd1cmUpOwogCVVLX0FTU0VSVChkZXYtPm9wcy0+cmVsZWFzZSk7CisJVUtf
QVNTRVJUKChkZXYtPm9wcy0+cnhfaW50cl9lbmFibGUgJiYgZGV2LT5vcHMtPnJ4X2ludHJfZGlz
YWJsZSkKKwkJfHwgKCFkZXYtPm9wcy0+cnhfaW50cl9lbmFibGUgJiYgIWRldi0+b3BzLT5yeF9p
bnRyX2Rpc2FibGUpKTsKIAlVS19BU1NFUlQoZGV2LT5vcHMtPndyaXRlKTsKIAlVS19BU1NFUlQo
ZGV2LT5vcHMtPnJlYWQpOwogCVVLX0FTU0VSVChkZXYtPm9wcy0+c3RhcnQpOwpkaWZmIC0tZ2l0
IGEvbGliL3VrY29uc2Rldi9leHBvcnRzeW1zLnVrIGIvbGliL3VrY29uc2Rldi9leHBvcnRzeW1z
LnVrCmluZGV4IDRkMzk5NDFkLi40YjY4ZDcxMSAxMDA2NDQKLS0tIGEvbGliL3VrY29uc2Rldi9l
eHBvcnRzeW1zLnVrCisrKyBiL2xpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51awpAQCAtNyw2ICs3
LDggQEAgdWtfY29uc2Rldl90eF9jb25maWd1cmUKIHVrX2NvbnNkZXZfcmVsZWFzZQogdWtfY29u
c2Rldl9zdGFydAogdWtfY29uc2Rldl9zdG9wCit1a19jb25zZGV2X3J4X2ludHJfZW5hYmxlCit1
a19jb25zZGV2X3J4X2ludHJfZGlzYWJsZQogdWtfY29uc2Rldl93cml0ZQogdWtfY29uc2Rldl9y
ZWFkCiB1a19jb25zZGV2X2NvdW50CmRpZmYgLS1naXQgYS9saWIvdWtjb25zZGV2L2luY2x1ZGUv
dWsvY29uc2Rldi5oIGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXYuaAppbmRleCA5
ZjJmMDU2Ny4uODQ0YzJhY2EgMTAwNjQ0Ci0tLSBhL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9j
b25zZGV2LmgKKysrIGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXYuaApAQCAtMjE5
LDYgKzIxOSw1MCBAQCBpbnQgdWtfY29uc2Rldl9zdGFydChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2
KTsKIGludCB1a19jb25zZGV2X3N0b3Aoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CiAKIC8qKgor
ICogRW5hYmxlIGludGVycnVwdHMgZm9yIHJ4LgorICoKKyAqIEBwYXJhbSBkZXYKKyAqCVRoZSBV
bmlrcmFmdCBDb25zb2xlIERldmljZSBpbiBydW5uaW5nIHN0YXRlLgorICogQHJldHVybgorICoJ
LSAoMCk6IFN1Y2Nlc3MsIGludGVycnVwdHMgZW5hYmxlZC4KKyAqCS0gKC1FTk9UU1VQKTogRHJp
dmVyIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJydXB0cy4KKyAqLworc3RhdGljIGlubGluZSBpbnQg
dWtfY29uc2Rldl9yeF9pbnRyX2VuYWJsZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCVVL
X0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChkZXYtPm9wcyk7CisJVUtfQVNTRVJUKGRldi0+X2Rh
dGEpOworCVVLX0FTU0VSVChkZXYtPl9kYXRhLT5zdGF0ZSA9PSBVS19DT05TREVWX1JVTk5JTkcp
OworCisJaWYgKHVubGlrZWx5KCFkZXYtPm9wcy0+cnhfaW50cl9lbmFibGUpKQorCQlyZXR1cm4g
LUVOT1RTVVA7CisKKwlyZXR1cm4gZGV2LT5vcHMtPnJ4X2ludHJfZW5hYmxlKGRldik7Cit9CisK
Ky8qKgorICogRGlzYWJsZSBpbnRlcnJ1cHRzIGZvciByeC4KKyAqCisgKiBAcGFyYW0gZGV2Cisg
KglUaGUgVW5pa3JhZnQgQ29uc29sZSBEZXZpY2UgaW4gcnVubmluZyBzdGF0ZS4KKyAqIEByZXR1
cm4KKyAqCS0gKDApOiBTdWNjZXNzLCBpbnRlcnJ1cHRzIGRpc2FibGVkLgorICoJLSAoLUVOT1RT
VVApOiBEcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcnJ1cHRzLgorICovCitzdGF0aWMgaW5s
aW5lIGludCB1a19jb25zZGV2X3J4X2ludHJfZGlzYWJsZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2
KQoreworCVVLX0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKKwlVS19BU1NF
UlQoZGV2LT5vcHMpOworCVVLX0FTU0VSVChkZXYtPl9kYXRhLT5zdGF0ZSA9PSBVS19DT05TREVW
X1JVTk5JTkcpOworCisJaWYgKHVubGlrZWx5KCFkZXYtPm9wcy0+cnhfaW50cl9kaXNhYmxlKSkK
KwkJcmV0dXJuIC1FTk9UU1VQOworCisJcmV0dXJuIGRldi0+b3BzLT5yeF9pbnRyX2Rpc2FibGUo
ZGV2KTsKK30KKworLyoqCiAgKiBAcGFyYW0gZGV2CiAgKiAgVGhlIFVuaWtyYWZ0IENvbnNvbGUg
RGV2aWNlIGluIHJ1bm5pbmcgc3RhdGUuCiAgKiBAcGFyYW0gYnVmCmRpZmYgLS1naXQgYS9saWIv
dWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmggYi9saWIvdWtjb25zZGV2L2luY2x1
ZGUvdWsvY29uc2Rldl9jb3JlLmgKaW5kZXggNmM2NzVmYTcuLmQzMDY1NWVmIDEwMDY0NAotLS0g
YS9saWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKKysrIGIvbGliL3VrY29u
c2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oCkBAIC0xNzAsNiArMTcwLDEyIEBAIHR5cGVk
ZWYgaW50ICgqdWtfY29uc2Rldl90eF9jb25maWd1cmVfdCkoc3RydWN0IHVrX2NvbnNkZXYgKmRl
diwKIC8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byByZWxlYXNlIGEgY29uZmlndXJlZCBVbmlr
cmFmdCBjb25zb2xlIGRldmljZSAqLwogdHlwZWRlZiBpbnQgKCp1a19jb25zZGV2X3JlbGVhc2Vf
dCkoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CiAKKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0
byBlbmFibGUgaW50ZXJydXB0cyBvZiBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4gKi8KK3R5
cGVkZWYgaW50ICgqdWtfY29uc2Rldl9yeF9pbnRyX2VuYWJsZV90KShzdHJ1Y3QgdWtfY29uc2Rl
diAqZGV2KTsKKworLyoqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIGRpc2FibGUgaW50ZXJydXB0
cyBvZiBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4gKi8KK3R5cGVkZWYgaW50ICgqdWtfY29u
c2Rldl9yeF9pbnRyX2Rpc2FibGVfdCkoc3RydWN0IHVrX2NvbnNkZXYgKmRldik7CisKIC8qKiBE
cml2ZXIgY2FsbGJhY2sgdHlwZSB0byBzdGFydCBhIGNvbmZpZ3VyZWQgVW5pa3JhZnQgY29uc29s
ZSBkZXZpY2UuICovCiB0eXBlZGVmIGludCAoKnVrX2NvbnNkZXZfc3RhcnRfdCkoc3RydWN0IHVr
X2NvbnNkZXYgKmRldik7CiAKQEAgLTE5Nyw2ICsyMDMsOCBAQCBzdHJ1Y3QgdWtfY29uc2Rldl9v
cHMgewogCXVrX2NvbnNkZXZfdHhfY29uZmlndXJlX3QgICAgICAgICAgIHR4X2NvbmZpZ3VyZTsK
IAl1a19jb25zZGV2X3N0YXJ0X3QgICAgICAgICAgICAgICAgICBzdGFydDsKIAl1a19jb25zZGV2
X3N0b3BfdCAgICAgICAgICAgICAgICAgICBzdG9wOworCXVrX2NvbnNkZXZfcnhfaW50cl9lbmFi
bGVfdCAgICAgICAgIHJ4X2ludHJfZW5hYmxlOworCXVrX2NvbnNkZXZfcnhfaW50cl9kaXNhYmxl
X3QgICAgICAgIHJ4X2ludHJfZGlzYWJsZTsKIAl1a19jb25zZGV2X3dyaXRlX3QgICAgICAgICAg
ICAgICAgICB3cml0ZTsKIAl1a19jb25zZGV2X3JlYWRfdCAgICAgICAgICAgICAgICAgICByZWFk
OwogCXVrX2NvbnNkZXZfY2xvc2VfdCAgICAgICAgICAgICAgICAgIGNsb3NlOwotLSAKMi4xMS4w
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:59:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:59: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 1hdb7u-0002Mo-F7; Wed, 19 Jun 2019 13:59:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb7t-0002Mj-AA
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:49 +0000
X-Inumbo-ID: 7f7120c2-929a-11e9-8980-bc764e045a96
Received: from mail-wr1-x42d.google.com (unknown [2a00:1450:4864:20::42d])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7f7120c2-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:47 +0000 (UTC)
Received: by mail-wr1-x42d.google.com with SMTP id p13so3501301wru.10
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59:47 -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=XLe/gga4WNyAdfbzOeRovVh86x2INAP+D0/QFlRncgs=;
 b=Sr5eh1wBX9PNdeZE7X6bpT3C3JRRTKiZqS4C+xduklxrnYAXcA0nfgekJ82k2nYcjy
 L4zrZrh2HiYrbGw22BStDbWEAeluG8QNJspKOHIGyCN3w15tOAh8TUF9oLIjqFRjhRLG
 Ix9cD1fuBdLUMeVytNTddegBeGuLBntFarwS27ZpMCPtZe27f9buW6viYWuUXZ9A50HZ
 CHmMQjkiH6qGkjQ22Hd1lVb+7TmFejeCbPdoeNrpnJn9g/lNlgiQwzS1Ed4mcf04Jqw2
 ppJ0e7/N0vIwyRXOuyKjzJJmB6yWECEP8fvz9Kfr5e1J0gwf2+dY9J4gwy6JJkNvLC1v
 b+YA==
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=XLe/gga4WNyAdfbzOeRovVh86x2INAP+D0/QFlRncgs=;
 b=f9MNkXwkpLBLy1zwD1oxKUnd3Wc3sycOqbJM+m8m9bQFS3lvnEZIanXsYmihYQO6km
 X2MK7HrxDEEMp78TkTSbrZu32TmjsV/X5CRTOZ4QI2Yla8bsYFy5tiSopGuleLKs7ol6
 fRRuuuaw2H1m1fem4k3RFcYdmNb8rSVvE7ckibOyzndToJ87YaHnD1WKLK0GmO+ulolN
 l88Cg/VhcqaporG6aFxiZfhZ7i4iGK968+geKmcCr2FrJkKirJr6TPUYiUIrJDZw6mb/
 UsZ3MFyaOAdc/G6wrLUBB4kSPGAmHEoPJPmWrm3dCbIsIYLGWb1xoKsVoisj/JG6ubss
 WjzA==
X-Gm-Message-State: APjAAAVWA+UVOAclHvJGiRRZn0GhklmxS8+pzymgBXJCzZ0BHNV/sYCN
 tdRdt8cMc6JGwbXUrxKW+2YPhfsk
X-Google-Smtp-Source: APXvYqz5J37o7s0BgVAqNXYe6Of+szXwD1UflrnaGasp8HCfTqCk0AqUs5x5e0/Vf05r4BrS65ZwwA==
X-Received: by 2002:adf:f649:: with SMTP id x9mr17839285wrp.86.1560952786385; 
 Wed, 19 Jun 2019 06:59:46 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.45
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:45 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:28 +0300
Message-Id: <20190619135938.17750-1-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH 00/10] Xen Consfront Driver
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBYZW4gY29uc29sZSBmcm9udCBkcml2ZXIgaW1wbGVtZW50
YXRpb24sCmJhc2VkIG9uIFVuaWtyYWZ0IENvbnNkZXYgQVBJLiBJdCBzdXBwb3J0cyBhbGwgdGhl
IGZ1bmN0aW9ucwpmcm9tIHRoZSBBUEkuCgpUaGUgZHJpdmVyJ3MgaW1wbGVtZW50YXRpb24gaXMg
aW4gY29uc2Zyb250LmMgYW5kIHRoZSBjb21tdW5pY2F0aW9uCndpdGggdGhlIGJhY2tlbmQgaXMg
ZG9uZSB0aHJvdWdoIFhlblN0b3JlIHdoaWNoIGlzIHNlcGFyYXRlZCBpbgpjb25zZnJvbnRfeHMu
YyBhbmQgY29uc2Zyb250X3hiLmguCgpCaXJsZWEgQ29zdGluICgxMCk6CiAgcGxhdC94ZW46IEFk
ZCBjb25zb2xlIGRldmljZSB0eXBlCiAgcGxhdC94ZW4vZHJpdmVyczogSW50cm9kdWNlIENvbnNm
cm9udCBkcml2ZXIgc2tlbGV0b24KICBwbGF0L3hlbi9kcml2ZXJzL2NvbnM6IFJlZ2lzdGVyIGNv
bnNmcm9udCB3aXRoIGxpYnVrY29uc2RldgogIHBsYXQveGVuL2RyaXZlcnMvY29uczogSW5pdCBY
ZW5idXMgc3RhdGUvaW5mby9ldGMKICBwbGF0L3hlbi9kcml2ZXJzL2NvbnM6IEdldCBDb25zZnJv
bnQgaW5mbwogIHBsYXQveGVuL2RyaXZlcnMvY29uczogQ29uZmlndXJlIENvbnNmcm9udAogIHBs
YXQveGVuL2RyaXZlcnMvY29uczogU3RhcnQgQ29uc2Zyb250CiAgcGxhdC94ZW4vZHJpdmVycy9j
b25zOiBXcml0ZSB0byBDb25zZnJvbnQKICBwbGF0L3hlbi9kcml2ZXJzL2NvbnM6IFJlYWQgZnJv
bSBDb25zZnJvbnQKICBwbGF0L3hlbi9kcml2ZXJzL2NvbnM6IEludHJvZHVjZSBDb25zZnJvbnQg
SW50ZXJydXB0IEhhbmRsaW5nCgogcGxhdC94ZW4vQ29uZmlnLnVrICAgICAgICAgICAgICAgICAg
IHwgICA4ICsKIHBsYXQveGVuL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgICB8ICAxMSArCiBw
bGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMgICAgfCA1NDAgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaCAg
ICB8ICA2MiArKysrCiBwbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250X3hiLmggfCAgODAg
KysrKysrCiBwbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250X3hzLmMgfCAyNTIgKysrKysr
KysrKysrKysrKwogcGxhdC94ZW4vZHJpdmVycy9jb25zL2V4cG9ydHN5bXMudWsgIHwgICAxICsK
IHBsYXQveGVuL2luY2x1ZGUveGVuYnVzL3hlbmJ1cy5oICAgICB8ICAgMSArCiBwbGF0L3hlbi94
ZW5idXMvY2xpZW50LmMgICAgICAgICAgICAgfCAgIDEgKwogOSBmaWxlcyBjaGFuZ2VkLCA5NTYg
aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9j
b25zZnJvbnQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25z
ZnJvbnQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJv
bnRfeGIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJv
bnRfeHMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9leHBvcnRz
eW1zLnVrCgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:59:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:59: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 1hdb7w-0002NB-Gi; Wed, 19 Jun 2019 13:59:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb7v-0002Mu-Je
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:51 +0000
X-Inumbo-ID: 80b3e582-929a-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 80b3e582-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:50 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id w9so4704218wmd.1
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59:49 -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=heTsg9N+pw4xFMfZvd+t4BHCMHF27JIrlZX2TE7X6Wo=;
 b=pNdtlOd5m8MZh8Oeo017eKKBIyAkxG43Sih7i3YrjC35QzUXjiRJYomhFoENqlMNIO
 6XfHmTGddHhEm9nVFSRlzrTaLNDkvZaTjfZ9QVAUmTMZfz9vTmF4q9Zmv0s5OyaRqsH8
 6NvIPMonAgOq/gUbQTHXVrH9B3VLuy+DVZeT9V/yopvcisQ7X4PrCPt3vdxC9V3WUdWy
 Bb9igqhlg0Tdmmr/ejAogV7UMXxnejiC+zoOmNwKoPqqtj+UVD5eRf1MON/b8TogQdm1
 Dcea49i6tQxK9OpJV38zSjzEQQlBDCubsDXCNrHpWq8XbttDrIIKd6JrHBZyeerbMa9b
 S74g==
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=heTsg9N+pw4xFMfZvd+t4BHCMHF27JIrlZX2TE7X6Wo=;
 b=mEnqhpcK0e6iH8yLsnX4OXTxTkHDV/CgKXJetNzMKGY2d2heHq8bHkepw2obL2worm
 hqBpnMV1sdGKAVvRL6NA2s6C1AiVa+fQpgtaXqyjB2WiT9Fdb+IDZeWFCM1e2U52h28E
 EFgwN5CYoPSAwtJnDICdM7ek78S97Hu23wiqvnCwZEs5H9+8iMOFer6SoVwH0CSTffaL
 t3QVZRhrB7ghMHtiJjAb5/FGQD3mEd05p/Pkgdru2DQr0Xnc9ui9Ju6OlOeHcKCak0gq
 5Sr1TgvC0km/FSCOM8T2tF5KH+inMFzUZjSxPOhR97Vm3m2wzaG7XLBETtahZAPVO+lH
 zzRQ==
X-Gm-Message-State: APjAAAU0PVD0sfkENreAz/ABYnfd754KJaPcdPGu/AvPD6uVCdKWvY4V
 xIPCxPN1NJa170U+UhWIObnwP4XO
X-Google-Smtp-Source: APXvYqxaDTiaONLyHL+gmLGeOtIkSRXgYEWQI10MtILQNhCwV3oc0o3z6zO7A08WL1EYFZEj86h4HQ==
X-Received: by 2002:a1c:ed01:: with SMTP id l1mr8940159wmh.109.1560952788731; 
 Wed, 19 Jun 2019 06:59:48 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.47
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:48 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:29 +0300
Message-Id: <20190619135938.17750-2-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 01/10] plat/xen: Add console device
 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@neclab.eu, simon.kuenzer@neclab.eu,
 Birlea Costin <costin.birlea@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>

U2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0t
LQogcGxhdC94ZW4vaW5jbHVkZS94ZW5idXMveGVuYnVzLmggfCAxICsKIHBsYXQveGVuL3hlbmJ1
cy9jbGllbnQuYyAgICAgICAgIHwgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr
KQoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2luY2x1ZGUveGVuYnVzL3hlbmJ1cy5oIGIvcGxhdC94
ZW4vaW5jbHVkZS94ZW5idXMveGVuYnVzLmgKaW5kZXggYTlkNjQzNmYuLmNlZTQyNGZkIDEwMDY0
NAotLS0gYS9wbGF0L3hlbi9pbmNsdWRlL3hlbmJ1cy94ZW5idXMuaAorKysgYi9wbGF0L3hlbi9p
bmNsdWRlL3hlbmJ1cy94ZW5idXMuaApAQCAtNDksNiArNDksNyBAQAogICovCiB0eXBlZGVmIGVu
dW0geGVuYnVzX2Rldl90eXBlIHsKIAl4ZW5idXNfZGV2X25vbmUgPSAwLAorCXhlbmJ1c19kZXZf
Y29uc29sZSwKIH0geGVuYnVzX2Rldl90eXBlX3Q7CiAKIHN0cnVjdCB4ZW5idXNfZGV2aWNlOwpk
aWZmIC0tZ2l0IGEvcGxhdC94ZW4veGVuYnVzL2NsaWVudC5jIGIvcGxhdC94ZW4veGVuYnVzL2Ns
aWVudC5jCmluZGV4IGJkMDYwNjM4Li4zNTU4ZWI0MyAxMDA2NDQKLS0tIGEvcGxhdC94ZW4veGVu
YnVzL2NsaWVudC5jCisrKyBiL3BsYXQveGVuL3hlbmJ1cy9jbGllbnQuYwpAQCAtNzQsNiArNzQs
NyBAQCBjb25zdCBjaGFyICp4ZW5idXNfc3RhdGVfdG9fc3RyKFhlbmJ1c1N0YXRlIHN0YXRlKQog
CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeGJfZGV2dHlwZV90YmxbXSA9IHsKIAlYRU5CVVNf
REVWVFlQRV9FTlRSWShub25lKSwKKwlYRU5CVVNfREVWVFlQRV9FTlRSWShjb25zb2xlKSwKIH07
CiAKIGNvbnN0IGNoYXIgKnhlbmJ1c19kZXZ0eXBlX3RvX3N0cihlbnVtIHhlbmJ1c19kZXZfdHlw
ZSBkZXZ0eXBlKQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:59:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:59:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hdb7x-0002Nd-Ic; Wed, 19 Jun 2019 13:59:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb7w-0002NA-Gh
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:52 +0000
X-Inumbo-ID: 81adc284-929a-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 81adc284-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:51 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id z23so1971432wma.4
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59: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:in-reply-to:references;
 bh=3pgBlj7jQ9pdOahVZ1hB8AImU7uwUyeo8itGdDRWkTU=;
 b=iQW35kq/cGetoS9u41SgOxfOvuKDAiqFLSmLibxPxmtXhr/3xzQKeMUfyrUqcyEXKP
 4qShaCBynrN+f4BmlhQQC/qg/lgM1I/r/ZWs1U69LsWVfgBRKHnu0R9CrFkaouNusdQG
 a3MD9sYu7zyD0Ev3xXF341yyiFOzAq+ry7bwIaPlaBi1RovaJRiyNH36DZ7HWFXRhYQI
 SS2k7ZX0XyxUBnSztPrmrVgWrML5T3s6OfDyN+3stfVo180PtBkm/+ypgMfyi98RMNsv
 zB582xIP6lOo2F8nzcKWQ+QDvuclHzShkeI1DiXiLF5+NMM9gZxGUgiouuvqqsPOl8Y5
 ooGA==
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=3pgBlj7jQ9pdOahVZ1hB8AImU7uwUyeo8itGdDRWkTU=;
 b=PhFHlHFHxFBeGiwjGK1gtEOev8y38PNXh1eCrv7pdaxuca/qucoaqIBiX5MN91zw6j
 87TmW+9WdboiuZ4b7buOdbh8XPMgITMRGSlL2ot90REucSCdXVJ6RL4K6JJl8Uh7hNbi
 VcvoXd0hm62shQWpbfJaYM7Mq+xXk8mE4My3p8dgIuoYiQyuvbqOxl6Ua0sKF9pN5/gV
 tjog7T7TcYRLu8cJ3HEd1XXXJTTWEmPht+iBSYFBxUi7jMJ6dfk5HNePOOfWzxjuQdFK
 WjNaXOd4CQyGGZdel52geRncFFsLY1276WtCugW1jd1HvHsC8RzNyIyxR2E/GvXsxrML
 rENA==
X-Gm-Message-State: APjAAAUZ9ibMTgflTUfSJ7bzV9K9MlUtcE4zixh7BM2ieuELCvvtvYxs
 QVH1XniTIQFe0gMZ28+3PPkhnX64
X-Google-Smtp-Source: APXvYqx6aRH+nIkNDVy15lpKoGNDymWokxHtVHX1Xm5EjjlBeuOe71Xen1+FNHlBmro/zCToCBv3/w==
X-Received: by 2002:a7b:c7d7:: with SMTP id z23mr8825905wmk.46.1560952790271; 
 Wed, 19 Jun 2019 06:59:50 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.49
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:49 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:30 +0300
Message-Id: <20190619135938.17750-3-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 02/10] plat/xen/drivers: Introduce
 Consfront driver 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, simon.kuenzer@neclab.eu,
 Birlea Costin <costin.birlea@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>

U2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0t
LQogcGxhdC94ZW4vQ29uZmlnLnVrICAgICAgICAgICAgICAgICAgfCAgOCArKysrKwogcGxhdC94
ZW4vTWFrZWZpbGUudWsgICAgICAgICAgICAgICAgfCAxMCArKysrKysKIHBsYXQveGVuL2RyaXZl
cnMvY29ucy9jb25zZnJvbnQuYyAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogcGxhdC94ZW4vZHJpdmVycy9jb25zL2V4cG9ydHN5bXMudWsgfCAgMSArCiA0IGZp
bGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hl
bi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L3hlbi9k
cml2ZXJzL2NvbnMvZXhwb3J0c3ltcy51awoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL0NvbmZpZy51
ayBiL3BsYXQveGVuL0NvbmZpZy51awppbmRleCAxYWI0Y2M4NS4uNDQwZDA3NGMgMTAwNjQ0Ci0t
LSBhL3BsYXQveGVuL0NvbmZpZy51aworKysgYi9wbGF0L3hlbi9Db25maWcudWsKQEAgLTcyLDUg
KzcyLDEzIEBAIGNvbmZpZyBYRU5fWEVOQlVTCiBtZW51ICJYZW5idXMgRHJpdmVycyIKICAgICAg
ICAgZGVwZW5kcyBvbiBYRU5fWEVOQlVTCiAgICAgICAgIGRlcGVuZHMgb24gWEVOX0dOVFRBQgor
Citjb25maWcgWEVOX0NPTlNGUk9OVAorCQlib29sICJYZW5idXMgQ29uc2Zyb250IERyaXZlciIK
KwkJZGVmYXVsdCBuCisJCWRlcGVuZHMgb24gTElCVUtDT05TREVWCisJCWhlbHAKKwkJCURyaXZl
ciBmb3IgY29uc29sZSBkZXZpY2VzCisKIGVuZG1lbnUKIGVuZGlmCmRpZmYgLS1naXQgYS9wbGF0
L3hlbi9NYWtlZmlsZS51ayBiL3BsYXQveGVuL01ha2VmaWxlLnVrCmluZGV4IDY5YjEwZWZjLi5l
ZjBlMDc2YiAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vTWFrZWZpbGUudWsKKysrIGIvcGxhdC94ZW4v
TWFrZWZpbGUudWsKQEAgLTEwLDYgKzEwLDcgQEAgJChldmFsICQoY2FsbCBhZGRwbGF0X3MseGVu
LCQoQ09ORklHX1BMQVRfWEVOKSkpCiAjIwogJChldmFsICQoY2FsbCBhZGRwbGF0bGliLHhlbixs
aWJ4ZW5wbGF0KSkKICQoZXZhbCAkKGNhbGwgYWRkcGxhdGxpYl9zLHhlbixsaWJ4ZW5idXMsJChD
T05GSUdfWEVOX1hFTkJVUykpKQorJChldmFsICQoY2FsbCBhZGRwbGF0bGliX3MseGVuLGxpYnhl
bmNvbnNmcm9udCwkKENPTkZJR19YRU5fQ09OU0ZST05UKSkpCiAKICMjCiAjIyBYZW4gcGxhdGZv
cm0gY29tcGlsYXRpb24gc2V0dGluZ3MKQEAgLTEwMCwzICsxMDEsMTIgQEAgTElCWEVOQlVTX1NS
Q1MteSAgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS94ZW5idXMveHNfY29tbXMu
YwogTElCWEVOQlVTX1NSQ1MteSAgICAgICAgICAgICAgICs9ICQoTElCWEVOUExBVF9CQVNFKS94
ZW5idXMveHNfd2F0Y2guYwogTElCWEVOQlVTX1NSQ1MteSAgICAgICAgICAgICAgICs9ICQoTElC
WEVOUExBVF9CQVNFKS94ZW5idXMveHMuYwogZW5kaWYKKworaWZlcSAoJChDT05GSUdfWEVOX0NP
TlNGUk9OVCkseSkKK0xJQlhFTkNPTlNGUk9OVF9FWFBPUlRTICAgICAgICAgID0gJChMSUJYRU5Q
TEFUX0JBU0UpL2RyaXZlcnMvY29ucy9leHBvcnRzeW1zLnVrCitMSUJYRU5DT05TRlJPTlRfQVNG
TEFHUy15ICAgICAgICs9ICQoTElCWEVOUExBVF9BU0ZMQUdTLXkpCitMSUJYRU5DT05TRlJPTlRf
QVNJTkNMVURFUy15ICAgICs9ICQoTElCWEVOUExBVF9BU0lOQ0xVREVTLXkpCitMSUJYRU5DT05T
RlJPTlRfQ0ZMQUdTLXkgICAgICAgICs9ICQoTElCWEVOUExBVF9DRkxBR1MteSkKK0xJQlhFTkNP
TlNGUk9OVF9DSU5DTFVERVMteSAgICAgKz0gJChMSUJYRU5QTEFUX0NJTkNMVURFUy15KQorTElC
WEVOQ09OU0ZST05UX1NSQ1MteSAgICAgICAgICArPSAkKExJQlhFTlBMQVRfQkFTRSkvZHJpdmVy
cy9jb25zL2NvbnNmcm9udC5jCitlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyBiL3BsYXQveGVuL2Ry
aXZlcnMvY29ucy9jb25zZnJvbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MC4uMTlhYmNkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29u
c2Zyb250LmMKQEAgLTAsMCArMSw3MCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT
RC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENvc3RpbiBCaXJsZWEgPGNvc3Rpbi5iaXJs
ZWFAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xp
dGVobmljYSBvZiBCdWNoYXJlc3QuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRI
SVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisg
Ki8KKyNpbmNsdWRlIDx4ZW5idXMveGVuYnVzLmg+CisKKyNkZWZpbmUgRFJJVkVSX05BTUUgICAg
ICAgICAgICJ4ZW4tY29uc2Zyb250IgorCitzdGF0aWMgc3RydWN0IHVrX2FsbG9jICpkcnZfYWxs
b2NhdG9yOworCitzdGF0aWMgaW50IGNvbnNmcm9udF9hZGRfZGV2KHN0cnVjdCB4ZW5idXNfZGV2
aWNlICp4ZW5kZXYpCit7CisJaW50IHJjID0gMDsKKworCVVLX0FTU0VSVCh4ZW5kZXYpOworCisJ
cmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGNvbnNmcm9udF9kcnZfaW5pdChzdHJ1Y3QgdWtf
YWxsb2MgKmFsbG9jYXRvcikKK3sKKwlpZiAoIWFsbG9jYXRvcikKKwkJcmV0dXJuIC1FSU5WQUw7
CisKKwlkcnZfYWxsb2NhdG9yID0gYWxsb2NhdG9yOworCXJldHVybiAwOworfQorCitzdGF0aWMg
Y29uc3QgeGVuYnVzX2Rldl90eXBlX3QgY29uc2Zyb250X2RldnR5cGVzW10gPSB7CisJeGVuYnVz
X2Rldl9jb25zb2xlLAorCXhlbmJ1c19kZXZfbm9uZQorfTsKKworc3RhdGljIHN0cnVjdCB4ZW5i
dXNfZHJpdmVyIGNvbnNmcm9udF9kcml2ZXIgPSB7CisJLmRldmljZV90eXBlcyA9IGNvbnNmcm9u
dF9kZXZ0eXBlcywKKwkuaW5pdCA9IGNvbnNmcm9udF9kcnZfaW5pdCwKKwkuYWRkX2RldiA9IGNv
bnNmcm9udF9hZGRfZGV2Cit9OworCitYRU5CVVNfUkVHSVNURVJfRFJJVkVSKCZjb25zZnJvbnRf
ZHJpdmVyKTsKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9leHBvcnRzeW1zLnVr
IGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2V4cG9ydHN5bXMudWsKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAuLmM4NmMzZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC94ZW4v
ZHJpdmVycy9jb25zL2V4cG9ydHN5bXMudWsKQEAgLTAsMCArMSBAQAorbm9uZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:59:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:59: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 1hdb7z-0002OL-LM; Wed, 19 Jun 2019 13:59:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb7y-0002O8-SH
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:54 +0000
X-Inumbo-ID: 8286ac26-929a-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8286ac26-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:53 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id 207so1946487wma.1
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59:53 -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=My2u4gVUJNcfLFvnTEEsYUYQiqpzxYPaK8yKxwJ9TfA=;
 b=Umt/8UJH7XGglWR5WDmyucg9jHoAGMj8HeTDP56cZWTmm+Hj3IJ6tMObcj+uX111qV
 0l9+Bo15zDML4Z+QWH+/mo4SdApMGXOTHnvOIKT1tt5mx4H3eV9/IOcDvDQ70XopnEkZ
 ifVtdzot3EGeJMYXDJ/oKZ2qaj0g/182ENbVaJtUWliMiipGuIoTYxKfdGlUBWqDZOYU
 Poi1b/WW+ps47XU0tx5fD1KTOtXAoQfCCM+gxZeQxeXLjhmXGPUQzaGCV7NgMBhYWRMb
 rbecP4KPK1fwxX+ADunIMlR7MprHdIOnqxvy4lt+VqaNsIuQRApY1ZPRaX6WhObdqULX
 wuxQ==
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=My2u4gVUJNcfLFvnTEEsYUYQiqpzxYPaK8yKxwJ9TfA=;
 b=mdL6PD3Jm+XXvfCeQhAVp5WLxBnKN3RgedhJ2vu1nKfeMyJXyKGXNIwbmzVyz+Jp3E
 CW5c93wXyPB/4r1vTxWRUcWutGPQeJwKSAVahvtMbwXDhfrKdCTG91b+rMhQWbIc/WZx
 PHDCKOoxDZ4MsCrDUKONDCAhKSgyyc1KS0fNzhwm/HmKKeKHRauMsNvV9RXL9zoOYL/G
 91EuFBT+A3nVS1nicg7GEUtW12UTcGezB0+nk+drKRGylJBs6vTmxunpzl0A7Lrk2mtn
 7d8oIWfYHycSppf65HlKo1X9/HQ50/uZGWQEP2xyluijCrOd2/3VaRI9i0Lbu2lw4MeE
 4YyQ==
X-Gm-Message-State: APjAAAXBPU5Z+UVYOSNp7k6v2Tuan6cJZH0uXJ0cF9JMhsSyDpEzYVrJ
 4us7wCHTSP6chl90WzQE422VyPWg
X-Google-Smtp-Source: APXvYqwYSSxdnfVRifSjBe5YrLCSiM+hADWKi7GWRlS+cyMhSw9IdKu6i82pUkIjewlU0eaPme3ivg==
X-Received: by 2002:a1c:e709:: with SMTP id e9mr8312154wmh.144.1560952791742; 
 Wed, 19 Jun 2019 06:59:51 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.50
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:51 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:31 +0300
Message-Id: <20190619135938.17750-4-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 03/10] plat/xen/drivers/cons:
 Register consfront with libukconsdev
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

SW50cm9kdWNlcyBhZGQgY29uc2Zyb250IGRldmljZSwgdXNlZCBmb3IgcmVnaXN0ZXJpbmcgdGhl
IGRyaXZlci4KClNpZ25lZC1vZmYtYnk6IEJpcmxlYSBDb3N0aW4gPGNvc3Rpbi5iaXJsZWFAZ21h
aWwuY29tPgotLS0KIHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyB8IDU5ICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogcGxhdC94ZW4vZHJpdmVycy9jb25z
L2NvbnNmcm9udC5oIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm
aWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQv
eGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaAoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZl
cnMvY29ucy9jb25zZnJvbnQuYyBiL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYwpp
bmRleCAxOWFiY2QwOS4uODg5NDlkYTMgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2RyaXZlcnMvY29u
cy9jb25zZnJvbnQuYworKysgYi9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMKQEAg
LTMyLDE5ICszMiw3OCBAQAogICoKICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVE
IE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCiAgKi8KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVrL2FyY2gvbGNwdS5oPgorI2luY2x1ZGUgPHVr
L2Fzc2VydC5oPgorI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KKyNpbmNsdWRlIDx1ay9jb25m
aWcuaD4KKyNpbmNsdWRlIDx1ay9jb25zZGV2Lmg+CisjaW5jbHVkZSA8dWsvY29uc2Rldl9kcml2
ZXIuaD4KKyNpbmNsdWRlIDx4ZW4teDg2L21tLmg+CisjaW5jbHVkZSA8eGVuL2lvL2NvbnNvbGUu
aD4KICNpbmNsdWRlIDx4ZW5idXMveGVuYnVzLmg+CiAKKyNpbmNsdWRlICJjb25zZnJvbnQuaCIK
KwogI2RlZmluZSBEUklWRVJfTkFNRSAgICAgICAgICAgInhlbi1jb25zZnJvbnQiCiAKKy8qIEdl
dCBjb25zZnJvbnRfZGV2KiB3aGljaCBjb250YWlucyBjb25zZGV2ICovCisjZGVmaW5lIHRvX2Nv
bnNmcm9udChkZXYpIFwKKwkJX19jb250YWluZXJvZihkZXYsIHN0cnVjdCBjb25zZnJvbnRfZGV2
LCBjb25zZGV2KQorCiBzdGF0aWMgc3RydWN0IHVrX2FsbG9jICpkcnZfYWxsb2NhdG9yOwogCitz
dGF0aWMgdm9pZCBjb25zZnJvbnRfY2xvc2Uoc3RydWN0IHVrX2NvbnNkZXYgKmRldikKK3sKKwlz
dHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXY7CisKKwlVS19BU1NFUlQoZGV2KTsKKworCWNmZGV2
ID0gdG9fY29uc2Zyb250KGRldik7CisJVUtfQVNTRVJUKGNmZGV2KTsKKworCXVrX2NvbnNkZXZf
ZHJ2X3VucmVnaXN0ZXIoZGV2KTsKKwl1a19mcmVlKGRydl9hbGxvY2F0b3IsIGNmZGV2KTsKKwor
CXVrX3ByX2luZm8oRFJJVkVSX05BTUUiOiAlIlBSSXUxNiIgY2xvc2VkXG4iLCBjZmRldi0+dWlk
KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB1a19jb25zZGV2X29wcyBjb25zZnJvbnRfb3Bz
ID0geworCS5jbG9zZSA9IGNvbnNmcm9udF9jbG9zZSwKK307CisKIHN0YXRpYyBpbnQgY29uc2Zy
b250X2FkZF9kZXYoc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhlbmRldikKIHsKKwlzdHJ1Y3QgY29u
c2Zyb250X2RldiAqY2ZkZXY7CiAJaW50IHJjID0gMDsKIAogCVVLX0FTU0VSVCh4ZW5kZXYpOwog
CisJY2ZkZXYgPSB1a19jYWxsb2MoZHJ2X2FsbG9jYXRvciwgMSwgc2l6ZW9mKHN0cnVjdCBjb25z
ZnJvbnRfZGV2KSk7CisJaWYgKCFjZmRldikgeworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gb3V0
OworCX0KKworCWNmZGV2LT5jb25zZGV2Lm9wcyA9ICZjb25zZnJvbnRfb3BzOworCisJLyogUmVn
aXN0ZXIgY29uc2RldiAqLworCXJjID0gdWtfY29uc2Rldl9kcnZfcmVnaXN0ZXIoJmNmZGV2LT5j
b25zZGV2LAorCQkJCQlkcnZfYWxsb2NhdG9yLCBEUklWRVJfTkFNRSk7CisJaWYgKHJjIDwgMCkg
eworCQl1a19wcl9lcnIoIkZhaWxlZCB0byByZWdpc3RlciAlcyBkZXZpY2Ugd2l0aCBsaWJ1a2Nv
bnNkZXZcbiIsCisJCQlEUklWRVJfTkFNRSk7CisJCWdvdG8gZXJyX3JlZ2lzdGVyOworCX0KKwlj
ZmRldi0+dWlkID0gcmM7CisJcmMgPSAwOworCitvdXQ6CiAJcmV0dXJuIHJjOworZXJyX3JlZ2lz
dGVyOgorCXVrX2ZyZWUoZHJ2X2FsbG9jYXRvciwgY2ZkZXYpOworCWdvdG8gb3V0OwogfQogCiBz
dGF0aWMgaW50IGNvbnNmcm9udF9kcnZfaW5pdChzdHJ1Y3QgdWtfYWxsb2MgKmFsbG9jYXRvcikK
ZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaCBiL3BsYXQveGVu
L2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMC4uMDAxZWUxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L3hlbi9kcml2ZXJzL2NvbnMv
Y29uc2Zyb250LmgKQEAgLTAsMCArMSw1MiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENvc3RpbiBCaXJsZWEgPGNvc3Rpbi5i
aXJsZWFAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQ
b2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAq
IFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVku
CisgKi8KKyNpZm5kZWYgX19DT05TRlJPTlRfSF9fCisjZGVmaW5lIF9fQ09OU0ZST05UX0hfXwor
CisjaW5jbHVkZSA8dWsvY29uc2Rldi5oPgorI2luY2x1ZGUgPGNvbW1vbi9nbnR0YWIuaD4KKyNp
bmNsdWRlIDxjb21tb24vZXZlbnRzLmg+CisKKy8qKgorICogU3RydWN0dXJlIHVzZWQgdG8gZGVz
Y3JpYmUgdGhlIENvbnNmcm9udCBkZXZpY2UuCisgKi8KK3N0cnVjdCBjb25zZnJvbnRfZGV2IHsK
KwkvKiBDb25zZGV2IERldmljZS4gKi8KKwlzdHJ1Y3QgdWtfY29uc2RldiBjb25zZGV2OworCS8q
IFRoZSBjb25zZGV2IGlkZW50aWZpZXIgKi8KKwlfX3UxNiB1aWQ7Cit9OworCisjZW5kaWYgLy9f
X0NPTlNGUk9OVF9IX18KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:59:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:59:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hdb80-0002Or-Np; Wed, 19 Jun 2019 13:59:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb7z-0002OK-Mn
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:55 +0000
X-Inumbo-ID: 836f2573-929a-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 836f2573-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:54 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id p11so3522798wre.7
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59: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=lididnhneB26JwoX9wgH5vqc/pR5Cs4pXWGFcRKaxLw=;
 b=daFpdBG5gT4NrWaNLQaTeg7CqJFHnad6HK+mjr6vjUDXJWXjRPVVnPF5rzB3nd4eqN
 x2uNPF/rsM+I6LIdWD3PoAJl3KB+r+BI0CsKlNm50UdPx5+Sle5Y5wvr0ouv8RZfK7Id
 4j/UWRHuhwbCfnz9oAZBTvuNogNeBQenhKbpnLr4envNT81qRJGWASsV2/abxBHNzKdP
 clEJvrL7pJEHO7SnWnytswf1mwM46QYe/V4fsGl8QeaNeq5VmrAlBkjI+/CKmJVQxu3U
 WtJK3n/hXihfYh2WgoORSUO2JgO4Fhih3ABGWhyFQHwoaMHBkaCYBx2posGPEmabnEhE
 qxAw==
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=lididnhneB26JwoX9wgH5vqc/pR5Cs4pXWGFcRKaxLw=;
 b=e+Z7M0lt8u/uATeSof+dr2t7GCt1tWWZTArxsdDq66ABG7pvuAzTplkw+HM+gAfmQ2
 CaA/dFchx+/EO31dKCgMS8KRKc72t8uSdzIAVTDRiQs1B+mABt5I5+WvXn1Fa/Ea5GPL
 tFmehEKd3iWTnEDrMn1FKWcfpJz0JzqqzqBRyYv2ioUlFo7449JjybhTUEx7POFu9lqP
 WU+rnFsbzoLCqkgPPbuwKGT4EIayrqlbC1rvWb3YTCYWIfKCx0EzyyeOC0ueOGg2n47C
 BHywFPhmyHwgoz9KEKyjo4VcaqIAokxu1aAhdcbszHFxAGPxK0sBj+HfDXEtTF5BiTha
 l2cQ==
X-Gm-Message-State: APjAAAXjrZdM0nhoaOPY/OyuI9CNAhdqrq/vYVRxce1wMX/CJQ6V268S
 fu71gaohrYt7E5VFBFgWljFeTafn
X-Google-Smtp-Source: APXvYqxymCvuNVKg1p03uGgN+KLgBDyqbVCxoG9lfIgP/1I/gbRY+/jnzxIQZOUC7nedEE1NMN16oA==
X-Received: by 2002:a5d:46c6:: with SMTP id g6mr30132874wrs.1.1560952793267;
 Wed, 19 Jun 2019 06:59:53 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:52 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:32 +0300
Message-Id: <20190619135938.17750-5-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 04/10] plat/xen/drivers/cons: Init
 Xenbus state/info/etc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBYZW5idXMgRGV2aWNlIHJlc3BvbnNpYmxlIGZvciBj
b21tdW5pY2F0aW9uCmJldHdlZW4gY29uc2Zyb250IGFuZCBiYWNrZW5kIHRocm91Z2ggWGVuc3Rv
cmUuCkluaXRpYWwgaW5mb3JtYXRpb24gbGlrZSBiYWNrZW5kL2Zyb250ZW5kIHBhdGggYXJlIGlu
dHJvZHVjZWQKYXMgd2VsbC4KClNpZ25lZC1vZmYtYnk6IEJpcmxlYSBDb3N0aW4gPGNvc3Rpbi5i
aXJsZWFAZ21haWwuY29tPgotLS0KIHBsYXQveGVuL01ha2VmaWxlLnVrICAgICAgICAgICAgICAg
ICB8ICAxICsKIHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyAgICB8IDEzICsrKysr
KwogcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5oICAgIHwgIDIgKwogcGxhdC94ZW4v
ZHJpdmVycy9jb25zL2NvbnNmcm9udF94Yi5oIHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKIHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnRfeHMuYyB8IDc2ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0
aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJv
bnRfeGIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJv
bnRfeHMuYwoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL01ha2VmaWxlLnVrIGIvcGxhdC94ZW4vTWFr
ZWZpbGUudWsKaW5kZXggZWYwZTA3NmIuLjUzZjE4MWY5IDEwMDY0NAotLS0gYS9wbGF0L3hlbi9N
YWtlZmlsZS51aworKysgYi9wbGF0L3hlbi9NYWtlZmlsZS51awpAQCAtMTA5LDQgKzEwOSw1IEBA
IExJQlhFTkNPTlNGUk9OVF9BU0lOQ0xVREVTLXkgICAgKz0gJChMSUJYRU5QTEFUX0FTSU5DTFVE
RVMteSkKIExJQlhFTkNPTlNGUk9OVF9DRkxBR1MteSAgICAgICAgKz0gJChMSUJYRU5QTEFUX0NG
TEFHUy15KQogTElCWEVOQ09OU0ZST05UX0NJTkNMVURFUy15ICAgICArPSAkKExJQlhFTlBMQVRf
Q0lOQ0xVREVTLXkpCiBMSUJYRU5DT05TRlJPTlRfU1JDUy15ICAgICAgICAgICs9ICQoTElCWEVO
UExBVF9CQVNFKS9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMKK0xJQlhFTkNPTlNGUk9OVF9TUkNT
LXkgICAgICAgICAgKz0gJChMSUJYRU5QTEFUX0JBU0UpL2RyaXZlcnMvY29ucy9jb25zZnJvbnRf
eHMuYwogZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbGF0
L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMgYi9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29u
c2Zyb250LmMKaW5kZXggODg5NDlkYTMuLjhjMDk4MGI2IDEwMDY0NAotLS0gYS9wbGF0L3hlbi9k
cml2ZXJzL2NvbnMvY29uc2Zyb250LmMKKysrIGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNm
cm9udC5jCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8eGVuYnVzL3hlbmJ1cy5oPgogCiAj
aW5jbHVkZSAiY29uc2Zyb250LmgiCisjaW5jbHVkZSAiY29uc2Zyb250X3hiLmgiCiAKICNkZWZp
bmUgRFJJVkVSX05BTUUgICAgICAgICAgICJ4ZW4tY29uc2Zyb250IgogCkBAIC02NCw2ICs2NSw3
IEBAIHN0YXRpYyB2b2lkIGNvbnNmcm9udF9jbG9zZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQog
CVVLX0FTU0VSVChjZmRldik7CiAKIAl1a19jb25zZGV2X2Rydl91bnJlZ2lzdGVyKGRldik7CisJ
Y29uc2Zyb250X3hiX2ZpbmkoY2ZkZXYpOwogCXVrX2ZyZWUoZHJ2X2FsbG9jYXRvciwgY2ZkZXYp
OwogCiAJdWtfcHJfaW5mbyhEUklWRVJfTkFNRSI6ICUiUFJJdTE2IiBjbG9zZWRcbiIsIGNmZGV2
LT51aWQpOwpAQCAtODYsNiArODgsMTUgQEAgc3RhdGljIGludCBjb25zZnJvbnRfYWRkX2Rldihz
dHJ1Y3QgeGVuYnVzX2RldmljZSAqeGVuZGV2KQogCQlnb3RvIG91dDsKIAl9CiAKKwljZmRldi0+
eGVuZGV2ID0geGVuZGV2OworCisJLyogWGVuYnVzIGluaXRpYWxpemF0aW9uICovCisJcmMgPSBj
b25zZnJvbnRfeGJfaW5pdChjZmRldik7CisJaWYgKHJjIDwgMCkgeworCQl1a19wcl9lcnIoIkVy
cm9yIGluaXRpYWxpemluZyBYZW5idXMgZGF0YTogJWRcbiIsIHJjKTsKKwkJZ290byBlcnJfeGVu
YnVzOworCX0KKwogCWNmZGV2LT5jb25zZGV2Lm9wcyA9ICZjb25zZnJvbnRfb3BzOwogCiAJLyog
UmVnaXN0ZXIgY29uc2RldiAqLwpAQCAtMTAyLDYgKzExMyw4IEBAIHN0YXRpYyBpbnQgY29uc2Zy
b250X2FkZF9kZXYoc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhlbmRldikKIG91dDoKIAlyZXR1cm4g
cmM7CiBlcnJfcmVnaXN0ZXI6CisJY29uc2Zyb250X3hiX2ZpbmkoY2ZkZXYpOworZXJyX3hlbmJ1
czoKIAl1a19mcmVlKGRydl9hbGxvY2F0b3IsIGNmZGV2KTsKIAlnb3RvIG91dDsKIH0KZGlmZiAt
LWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaCBiL3BsYXQveGVuL2RyaXZl
cnMvY29ucy9jb25zZnJvbnQuaAppbmRleCAwMDFlZTEyYi4uMzc3MmM3YTEgMTAwNjQ0Ci0tLSBh
L3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaAorKysgYi9wbGF0L3hlbi9kcml2ZXJz
L2NvbnMvY29uc2Zyb250LmgKQEAgLTQzLDYgKzQzLDggQEAKICAqIFN0cnVjdHVyZSB1c2VkIHRv
IGRlc2NyaWJlIHRoZSBDb25zZnJvbnQgZGV2aWNlLgogICovCiBzdHJ1Y3QgY29uc2Zyb250X2Rl
diB7CisJLyogWGVuYnVzIERldmljZS4gKi8KKwlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGVuZGV2
OwogCS8qIENvbnNkZXYgRGV2aWNlLiAqLwogCXN0cnVjdCB1a19jb25zZGV2IGNvbnNkZXY7CiAJ
LyogVGhlIGNvbnNkZXYgaWRlbnRpZmllciAqLwpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vZHJpdmVy
cy9jb25zL2NvbnNmcm9udF94Yi5oIGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udF94
Yi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wY2ExYWJhZgotLS0gL2Rl
di9udWxsCisrKyBiL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnRfeGIuaApAQCAtMCww
ICsxLDYxIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisv
KgorICogQXV0aG9yczogQ29zdGluIEJpcmxlYSA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Cisg
KgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hh
cmVzdC4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5P
VCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworI2lmbmRlZiBfX0NP
TlNGUk9OVF9YQl9IX18KKyNkZWZpbmUgX19DT05TRlJPTlRfWEJfSF9fCisKKy8qKgorICogQ29u
c2Zyb250IGludGVyZmFjZSBmb3IgeGVuc3RvcmUgb3BlcmF0aW9ucy4KKyAqCisgKiBUaGlzIGhl
YWRlciBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBuZWVkZWQgYnkgdGhlIGNvbnNmcm9udCBk
cml2ZXIKKyAqIGluIG9yZGVyIHRvIGFjY2VzcyBYZW5zdG9yZSBkYXRhLgorICovCisKKyNpbmNs
dWRlICJjb25zZnJvbnQuaCIKKworLyoKKyAqIEdldCBpbml0aWFsIGluZm8gZnJvbSB0aGUgeGVu
c3RvcmUuCisgKiBFeDogYmFja2VuZCBwYXRoLgorICoKKyAqIFJldHVybiAwIG9uIHN1Y2Nlc3Ms
IGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb24gZXJyb3IuCisgKi8KK2ludCBjb25zZnJvbnRfeGJf
aW5pdChzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXYpOworCisvKgorICogSXQgZGVhbGxvY2F0
ZXMgdGhlIHhlbmRldiBzdHJ1Y3R1cmUgbWVtYmVycyBhbGxvY2F0ZWQgZHVyaW5nIGluaXRpYWxp
emF0aW9uLgorICoKKyAqLwordm9pZCBjb25zZnJvbnRfeGJfZmluaShzdHJ1Y3QgY29uc2Zyb250
X2RldiAqY2ZkZXYpOworCisjZW5kaWYgLyogX19DT05TRlJPTlRfWEJfSF9fICovCmRpZmYgLS1n
aXQgYS9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250X3hzLmMgYi9wbGF0L3hlbi9kcml2
ZXJzL2NvbnMvY29uc2Zyb250X3hzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAuLjA2NmEyM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2Nv
bnNmcm9udF94cy5jCkBAIC0wLDAgKzEsNzYgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBBdXRob3JzOiBDb3N0aW4gQmlybGVhIDxjb3N0aW4u
YmlybGVhQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkg
UG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
KiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZ
LgorICovCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDx1ay9lcnJwdHIuaD4KKyNpbmNsdWRlIDx4ZW5idXMveHMuaD4KKyNpbmNsdWRlIDx4ZW5idXMv
Y2xpZW50Lmg+CisKKyNpbmNsdWRlICJjb25zZnJvbnRfeGIuaCIKKworaW50IGNvbnNmcm9udF94
Yl9pbml0KHN0cnVjdCBjb25zZnJvbnRfZGV2ICpjZmRldikKK3sKKwlzdHJ1Y3QgeGVuYnVzX2Rl
dmljZSAqeGVuZGV2OworCWludCByYyA9IDA7CisKKwlVS19BU1NFUlQoY2ZkZXYpOworCisJeGVu
ZGV2ID0gY2ZkZXYtPnhlbmRldjsKKwlVS19BU1NFUlQoeGVuZGV2KTsKKworCXhlbmRldi0+b3Ro
ZXJlbmQgPSB4c19yZWFkKFhCVF9OSUwsIHhlbmRldi0+bm9kZW5hbWUsICJiYWNrZW5kIik7CisJ
aWYgKFBUUklTRVJSKHhlbmRldi0+b3RoZXJlbmQpKSB7CisJCXJjID0gUFRSMkVSUih4ZW5kZXYt
Pm90aGVyZW5kKTsKKwkJdWtfcHJfZXJyKCJFcnJvciByZWFkaW5nIGJhY2tlbmQgcGF0aFxuIik7
CisJCXhlbmRldi0+b3RoZXJlbmQgPSBOVUxMOworCX0KKworCXJldHVybiByYzsKK30KKwordm9p
ZCBjb25zZnJvbnRfeGJfZmluaShzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXYpCit7CisJc3Ry
dWN0IHhlbmJ1c19kZXZpY2UgKnhlbmRldjsKKworCVVLX0FTU0VSVChjZmRldik7CisKKwl4ZW5k
ZXYgPSBjZmRldi0+eGVuZGV2OworCVVLX0FTU0VSVCh4ZW5kZXYpOworCisJaWYgKHhlbmRldi0+
b3RoZXJlbmQpIHsKKwkJZnJlZSh4ZW5kZXYtPm90aGVyZW5kKTsKKwkJeGVuZGV2LT5vdGhlcmVu
ZCA9IE5VTEw7CisJfQorfQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 13:59:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 13:59:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hdb81-0002PR-PP; Wed, 19 Jun 2019 13:59:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb80-0002P5-Tn
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:56 +0000
X-Inumbo-ID: 844895ea-929a-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 844895ea-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:56 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id 207so1946692wma.1
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59: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:in-reply-to:references;
 bh=epfWlf90z2+TSUOwAZqC3WnByhNC/z17clH6IwvIynE=;
 b=Obf0Mo4w93o4qN7QZGwokIVXZq0gNQtICnEJebawmtzDUvjlHECjk/hmBnhuelPQ3v
 cqjpytvg3OZOUuGe8Hx+49I1ZGzTcIcjrz/DwfupO8UX6ExTRorYUnZ1YAkefITwdrea
 bynmXKa+2+kHzV0YuC6qaaPjRETDiUt1QMgz0onW63WSrduB1vXVMRE2QPfoSjqiu/R2
 5qXzLZb/SPjx41MoOqY1vZCUIbBE7G7XK8kDT4TrhZwfBrGt/XBhlW4R/LDlz9ztUNhl
 h9uRmebw4ofX0Z9aVQj0BeLk/94lamxTRLgCo7VMxNCEITb55ZQ107lg4oS/Y07W7+t9
 sjSA==
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=epfWlf90z2+TSUOwAZqC3WnByhNC/z17clH6IwvIynE=;
 b=RptD0jk1hjPUJXOsFh52W3HU9/i0Bb9qe51ypFKEIW9yERkO7yF+MZZMzfRgrHqrUp
 2sULEO2mB9yCuLY/Suin9uEXofq+xq4AThhTyc3r0r+UoJJYY8WKffKLjLEXY2a9NAEE
 KlUMvt/W2S+K46Q7cTNZiVWUARO1fSgPyo0+bSLoKoUqa+G/5oblaLJcF/oCwM2UyffV
 SSyXdxzqDQpIQBCzAqBbfLf5O5A5ZBMso4MrIACzV2U5wrV+SOFQ4/w4mjccnGeuD7dG
 eMGotZMCyd7Bs395lBVfiHkeBnfEeuY/1O7jiIjUuOnE+lptai6CQPOKm0sdjD8gVIKf
 F3kw==
X-Gm-Message-State: APjAAAVAcS71Vbpn2aoeAc+sfcKJIxTFh819BIhuKKFUbIiF8utMkDEw
 cAuOJVBCkq77KOVIJWb6HdylJGQh
X-Google-Smtp-Source: APXvYqz3r9BGmMFpSJvFCPuQXmLd1q1u1njvIBBkWw85bzvCGG5vUyQrOd4nHwKWQgxdlxrSLLqEug==
X-Received: by 2002:a1c:1f06:: with SMTP id f6mr8953767wmf.60.1560952794753;
 Wed, 19 Jun 2019 06:59:54 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.53
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:54 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:33 +0300
Message-Id: <20190619135938.17750-6-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 05/10] plat/xen/drivers/cons: Get
 Consfront info
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

UHJvdmlkZXMgZHJpdmVyIHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHRoZSBBUEksCnN1Y2ggYXMg
bWluL21heCBudW1iZXIgb2YgZGVzY3JpcHRvcnMgZm9yIHJ4L3R4LgoKU2lnbmVkLW9mZi1ieTog
QmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0tLQogcGxhdC94ZW4vZHJp
dmVycy9jb25zL2NvbnNmcm9udC5jIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv
cGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jIGIvcGxhdC94ZW4vZHJpdmVycy9jb25z
L2NvbnNmcm9udC5jCmluZGV4IDhjMDk4MGI2Li4zM2FkYWJmNyAxMDA2NDQKLS0tIGEvcGxhdC94
ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jCisrKyBiL3BsYXQveGVuL2RyaXZlcnMvY29ucy9j
b25zZnJvbnQuYwpAQCAtNDksMTIgKzQ5LDQ3IEBACiAKICNkZWZpbmUgRFJJVkVSX05BTUUgICAg
ICAgICAgICJ4ZW4tY29uc2Zyb250IgogCisvKiBYZW5jb25zX2ludGVyZmFjZSBpbiBhbmQgb3V0
IGxpbWl0cworICogaW1wb3NlZCBieSB4ZW4vaW8vY29uc29sZS5oIHB1YmxpYyBoZWFkZXIgKi8K
KyNkZWZpbmUgWEVOX0NPTlNGUk9OVF9TSVpFX0lOIDEwMjQKKyNkZWZpbmUgWEVOX0NPTlNGUk9O
VF9TSVpFX09VVCAyMDQ4CisKIC8qIEdldCBjb25zZnJvbnRfZGV2KiB3aGljaCBjb250YWlucyBj
b25zZGV2ICovCiAjZGVmaW5lIHRvX2NvbnNmcm9udChkZXYpIFwKIAkJX19jb250YWluZXJvZihk
ZXYsIHN0cnVjdCBjb25zZnJvbnRfZGV2LCBjb25zZGV2KQogCiBzdGF0aWMgc3RydWN0IHVrX2Fs
bG9jICpkcnZfYWxsb2NhdG9yOwogCitzdGF0aWMgdm9pZCBjb25zZnJvbnRfaW5mb19nZXQoc3Ry
dWN0IHVrX2NvbnNkZXYgKmRldiBfX3VudXNlZCwKKwkJc3RydWN0IHVrX2NvbnNkZXZfaW5mbyAq
ZGV2X2luZm8pCit7CisJVUtfQVNTRVJUKGRldl9pbmZvKTsKK30KKworc3RhdGljIGludCBjb25z
ZnJvbnRfcnhfaW5mb19nZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiBfX3VudXNlZCwKKwkJc3Ry
dWN0IHVrX2NvbnNkZXZfcmluZ19pbmZvICpyaW5nX2luZm8pCit7CisJVUtfQVNTRVJUKHJpbmdf
aW5mbyk7CisKKwlyaW5nX2luZm8tPm5iX21pbiA9IFhFTl9DT05TRlJPTlRfU0laRV9JTjsKKwly
aW5nX2luZm8tPm5iX21heCA9IFhFTl9DT05TRlJPTlRfU0laRV9JTjsKKwlyaW5nX2luZm8tPm5i
X2lzX3Bvd2VyX29mX3R3byA9IDA7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb25z
ZnJvbnRfdHhfaW5mb19nZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiBfX3VudXNlZCwKKwkJc3Ry
dWN0IHVrX2NvbnNkZXZfcmluZ19pbmZvICpyaW5nX2luZm8pCit7CisJVUtfQVNTRVJUKHJpbmdf
aW5mbyk7CisKKwlyaW5nX2luZm8tPm5iX21pbiA9IFhFTl9DT05TRlJPTlRfU0laRV9PVVQ7CisJ
cmluZ19pbmZvLT5uYl9tYXggPSBYRU5fQ09OU0ZST05UX1NJWkVfT1VUOworCXJpbmdfaW5mby0+
bmJfaXNfcG93ZXJfb2ZfdHdvID0gMDsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCBj
b25zZnJvbnRfY2xvc2Uoc3RydWN0IHVrX2NvbnNkZXYgKmRldikKIHsKIAlzdHJ1Y3QgY29uc2Zy
b250X2RldiAqY2ZkZXY7CkBAIC03Miw2ICsxMDcsOSBAQCBzdGF0aWMgdm9pZCBjb25zZnJvbnRf
Y2xvc2Uoc3RydWN0IHVrX2NvbnNkZXYgKmRldikKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCB1
a19jb25zZGV2X29wcyBjb25zZnJvbnRfb3BzID0geworCS5pbmZvX2dldCA9IGNvbnNmcm9udF9p
bmZvX2dldCwKKwkucnhfaW5mb19nZXQgPSBjb25zZnJvbnRfcnhfaW5mb19nZXQsCisJLnR4X2lu
Zm9fZ2V0ID0gY29uc2Zyb250X3R4X2luZm9fZ2V0LAogCS5jbG9zZSA9IGNvbnNmcm9udF9jbG9z
ZSwKIH07CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 14:00:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 14:00: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 1hdb84-0002Qa-Re; Wed, 19 Jun 2019 14:00:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb83-0002Q2-6j
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 13:59:59 +0000
X-Inumbo-ID: 852bcbf5-929a-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 852bcbf5-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:57 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id c66so1946985wmf.0
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59:57 -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=0iTPw47vZWvThbsQvVvbgI9ZIIgKp5GvYbx/nXpTo94=;
 b=p+3CE4Ch14D7SDNKhOY7RvHf4uurZugDne8DSKb/+kbTgmqAY77mO/EfcdKGZjvpdm
 exUIdtBMQBG7uuRa5KF4ev122/o7LgR2fviSgLbqwMfo47mLT8pmiswekQb5nJppW5ar
 M6W/VsEA6kJYNrtoBXTn9bG2RNrfCXFK54DroBrBDzEdAwcI+PoKuZNyUpf4+FbUAe0C
 D+GSOWf6Uk2LOx+PzWELprV6cEYMQS3pGPEho2ESWe/5hdoQnLSdyqOahQfnBN+qtFhL
 iU4D2goFG46eZfODVckt/YN6MbnAYPnqiv1gYmm4hrxO8GoXWgdW3sNk6D9uLaPFmZZE
 RaIQ==
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=0iTPw47vZWvThbsQvVvbgI9ZIIgKp5GvYbx/nXpTo94=;
 b=Nakx+L7nJVybh9IJEt0RP01eA73jqhI1MJWENuxlY6kY5SmRN/AQv8kM7RJ4IIprs8
 RccKjcufJnvECSSA4x0aszwqKA0Bp63juin7cXhLz+bve+yByxDEB9/BkpmsjY7sQUw7
 bc//YeonbdWlXrP8H49BzKLjl4DtZjXz2JATJPFphNuZb8no0gY6thGEGD4qZvNXAD5d
 HxaHyYmom9mhPyOe0894/ycrfonPgUEV/y7/OfXZ0WSojjyUjro9eTLmNmhQ4ehwPiSQ
 NNiz7RULc5xMw44Dg2MzIw0GXxYaaFHvO4cQIGl0bxrl8AzlYK1Zp1p7Qg7IyT3ETiIY
 INNA==
X-Gm-Message-State: APjAAAUfIjbhkCj71T5T5942argdRzpihQY456/iljwReAiUsS6bElSN
 OYi/WivgcqeKza9EXfSklN/98m03
X-Google-Smtp-Source: APXvYqzVPngVsvGLjUCqmDFgv6oNV3lk+OlhLVtFjbYG5O3aChBJ/Gad8uehrPEEQHES8kZcvluMdg==
X-Received: by 2002:a1c:cfc3:: with SMTP id f186mr7937492wmg.134.1560952796210; 
 Wed, 19 Jun 2019 06:59:56 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.55
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:55 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:34 +0300
Message-Id: <20190619135938.17750-7-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 06/10] plat/xen/drivers/cons:
 Configure Consfront
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBwcm92aWRlcyBjb25maWd1cmUgd2hpY2ggYW5kIGludGlhbGl6ZXMKdGhlIHJp
bmcuIEdyYW50cyBhY2Nlc3MgdG8gYmFja2VuZC4KClNpZ25lZC1vZmYtYnk6IEJpcmxlYSBDb3N0
aW4gPGNvc3Rpbi5iaXJsZWFAZ21haWwuY29tPgotLS0KIHBsYXQveGVuL2RyaXZlcnMvY29ucy9j
b25zZnJvbnQuYyB8IDEzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
cGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5oIHwgICA2ICsrCiAyIGZpbGVzIGNoYW5n
ZWQsIDEzNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC94ZW4vZHJpdmVycy9jb25z
L2NvbnNmcm9udC5jIGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jCmluZGV4IDMz
YWRhYmY3Li5jZGJlZDBmNSAxMDA2NDQKLS0tIGEvcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNm
cm9udC5jCisrKyBiL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYwpAQCAtNjAsNiAr
NjAsMjEgQEAKIAogc3RhdGljIHN0cnVjdCB1a19hbGxvYyAqZHJ2X2FsbG9jYXRvcjsKIAorc3Rh
dGljIHZvaWQgY29uc2Zyb250X3J4X2hhbmRsZXIoZXZ0Y2huX3BvcnRfdCBwb3J0IF9fdW51c2Vk
LAorCQlzdHJ1Y3QgX19yZWdzICpyZWdzIF9fdW51c2VkLAorCQl2b2lkICpkYXRhIF9fdW51c2Vk
KQoreworCXN0cnVjdCB1a19jb25zZGV2ICpkZXYgPSAoc3RydWN0IHVrX2NvbnNkZXYgKikgZGF0
YTsKKwlzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXY7CisKKwljZmRldiA9IHRvX2NvbnNmcm9u
dChkZXYpOworCVVLX0FTU0VSVChjZmRldik7CisKKwltYXNrX2V2dGNobihjZmRldi0+ZXZ0Y2hu
KTsKKworCXVrX2NvbnNkZXZfZHJ2X3J4X2V2ZW50KGRldik7Cit9CisKIHN0YXRpYyB2b2lkIGNv
bnNmcm9udF9pbmZvX2dldChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2IF9fdW51c2VkLAogCQlzdHJ1
Y3QgdWtfY29uc2Rldl9pbmZvICpkZXZfaW5mbykKIHsKQEAgLTkwLDYgKzEwNSwxMTcgQEAgc3Rh
dGljIGludCBjb25zZnJvbnRfdHhfaW5mb19nZXQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiBfX3Vu
dXNlZCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBjb25zZnJvbnRfcmluZ19pbml0KHN0
cnVjdCBjb25zZnJvbnRfZGV2ICpjZmRldikKK3sKKwlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGVu
ZGV2OworCisJeGVuZGV2ID0gY2ZkZXYtPnhlbmRldjsKKworCWNmZGV2LT5yaW5nID0gdWtfbWFs
bG9jX3BhZ2UoZHJ2X2FsbG9jYXRvcik7CisJaWYgKCFjZmRldi0+cmluZykKKwkJcmV0dXJuIC1F
Tk9NRU07CisJbWVtc2V0KGNmZGV2LT5yaW5nLCAwLCBQQUdFX1NJWkUpOworCisJY2ZkZXYtPnJp
bmdfcmVmID0gZ250dGFiX2dyYW50X2FjY2Vzcyh4ZW5kZXYtPm90aGVyZW5kX2lkLAorCQkJdmly
dF90b19tZm4oY2ZkZXYtPnJpbmcpLCAwKTsKKwlVS19BU1NFUlQoY2ZkZXYtPnJpbmdfcmVmICE9
IEdSQU5UX0lOVkFMSURfUkVGKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNvbnNm
cm9udF9jb25maWd1cmUoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKKwkJY29uc3Qgc3RydWN0IHVr
X2NvbnNkZXZfY29uZiAqZGV2X2NvbmYpCit7CisJc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2
OworCWludCByYyA9IDA7CisKKwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2X2NvbmYp
OworCisJY2ZkZXYgPSB0b19jb25zZnJvbnQoZGV2KTsKKwlVS19BU1NFUlQoY2ZkZXYpOworCisJ
cmMgPSBjb25zZnJvbnRfcmluZ19pbml0KGNmZGV2KTsKKworCXJldHVybiByYzsKK30KKworc3Rh
dGljIGludCBjb25zZnJvbnRfcnhfY29uZmlndXJlKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCisJ
CXVpbnQxNl90IG5iX2Rlc2MsCisJCWNvbnN0IHN0cnVjdCB1a19jb25zZGV2X3J4X2NvbmYgKnJ4
X2NvbmYgX191bnVzZWQpCit7CisJc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2OworCXN0cnVj
dCB4ZW5idXNfZGV2aWNlICp4ZW5kZXY7CisJaW50IHJjID0gMDsKKworCWNmZGV2ID0gdG9fY29u
c2Zyb250KGRldik7CisJVUtfQVNTRVJUKGNmZGV2KTsKKworCXhlbmRldiA9IGNmZGV2LT54ZW5k
ZXY7CisJVUtfQVNTRVJUKHhlbmRldik7CisKKwlpZiAoKG5iX2Rlc2MgIT0gMCkgJiYKKwkJKG5i
X2Rlc2MgIT0gWEVOX0NPTlNGUk9OVF9TSVpFX0lOKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwly
YyA9IGV2dGNobl9hbGxvY191bmJvdW5kKHhlbmRldi0+b3RoZXJlbmRfaWQsCisJCWNvbnNmcm9u
dF9yeF9oYW5kbGVyLCBkZXYsICZjZmRldi0+ZXZ0Y2huKTsKKwlpZiAocmMgPCAwKSB7CisJCXVr
X3ByX2VycigiRXJyb3IgY3JlYXRpbmcgZXZlbnQgY2hhbm5lbDogJWQuXG4iLCByYyk7CisJCXJl
dHVybiByYzsKKwl9CisKKwkvKiBTdGFydCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQsIEFQSSB1
c2VyIHNob3VsZCBlbmFibGUgdGhlbSAqLworCW1hc2tfZXZ0Y2huKGNmZGV2LT5ldnRjaG4pOwor
CisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGNvbnNmcm9udF90eF9jb25maWd1cmUoc3Ry
dWN0IHVrX2NvbnNkZXYgKmRldiBfX3VudXNlZCwKKwkJdWludDE2X3QgbmJfZGVzYywKKwkJY29u
c3Qgc3RydWN0IHVrX2NvbnNkZXZfdHhfY29uZiAqdHhfY29uZiBfX3VudXNlZCkKK3sKKwkvKiBB
bHRob3VnaCB3ZSBkb24ndCB1c2UgbmJfZGVzYywgdXNlciBzdGlsbCBoYXMgdG8gYWJpZGUgdGhl
IEFQSSAqLworCWlmICgobmJfZGVzYyAhPSAwKSAmJgorCQkobmJfZGVzYyAhPSBYRU5fQ09OU0ZS
T05UX1NJWkVfT1VUKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh
dGljIHZvaWQgY29uc2Zyb250X3JpbmdfcmVsZWFzZShzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2Zk
ZXYpCit7CisJaW50IHJjID0gMDsKKworCS8qIFJlbGVhc2UgcmluZyAqLworCWlmIChjZmRldi0+
cmluZ19yZWYgIT0gR1JBTlRfSU5WQUxJRF9SRUYpIHsKKwkJcmMgPSBnbnR0YWJfZW5kX2FjY2Vz
cyhjZmRldi0+cmluZ19yZWYpOworCQlVS19BU1NFUlQocmMpOworCX0KKworCWlmIChjZmRldi0+
cmluZykgeworCQl1a19mcmVlX3BhZ2UoZHJ2X2FsbG9jYXRvciwgY2ZkZXYtPnJpbmcpOworCQlj
ZmRldi0+cmluZyA9IE5VTEw7CisJfQorfQorCitzdGF0aWMgaW50IGNvbnNmcm9udF9yZWxlYXNl
KHN0cnVjdCB1a19jb25zZGV2ICpkZXYpCit7CisJc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2
OworCisJVUtfQVNTRVJUKGRldik7CisKKwljZmRldiA9IHRvX2NvbnNmcm9udChkZXYpOworCVVL
X0FTU0VSVChjZmRldik7CisKKwltYXNrX2V2dGNobihjZmRldi0+ZXZ0Y2huKTsKKwl1bmJpbmRf
ZXZ0Y2huKGNmZGV2LT5ldnRjaG4pOworCisJY29uc2Zyb250X3JpbmdfcmVsZWFzZShjZmRldik7
CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgY29uc2Zyb250X2Nsb3NlKHN0cnVjdCB1
a19jb25zZGV2ICpkZXYpCiB7CiAJc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2OwpAQCAtMTEw
LDYgKzIzNiwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVrX2NvbnNkZXZfb3BzIGNvbnNmcm9u
dF9vcHMgPSB7CiAJLmluZm9fZ2V0ID0gY29uc2Zyb250X2luZm9fZ2V0LAogCS5yeF9pbmZvX2dl
dCA9IGNvbnNmcm9udF9yeF9pbmZvX2dldCwKIAkudHhfaW5mb19nZXQgPSBjb25zZnJvbnRfdHhf
aW5mb19nZXQsCisJLmNvbmZpZ3VyZSA9IGNvbnNmcm9udF9jb25maWd1cmUsCisJLnJ4X2NvbmZp
Z3VyZSA9IGNvbnNmcm9udF9yeF9jb25maWd1cmUsCisJLnR4X2NvbmZpZ3VyZSA9IGNvbnNmcm9u
dF90eF9jb25maWd1cmUsCisJLnJlbGVhc2UgPSBjb25zZnJvbnRfcmVsZWFzZSwKIAkuY2xvc2Ug
PSBjb25zZnJvbnRfY2xvc2UsCiB9OwogCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9kcml2ZXJzL2Nv
bnMvY29uc2Zyb250LmggYi9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmgKaW5kZXgg
Mzc3MmM3YTEuLjYxY2IyZGY0IDEwMDY0NAotLS0gYS9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29u
c2Zyb250LmgKKysrIGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5oCkBAIC00Nyw2
ICs0NywxMiBAQCBzdHJ1Y3QgY29uc2Zyb250X2RldiB7CiAJc3RydWN0IHhlbmJ1c19kZXZpY2Ug
KnhlbmRldjsKIAkvKiBDb25zZGV2IERldmljZS4gKi8KIAlzdHJ1Y3QgdWtfY29uc2RldiBjb25z
ZGV2OworCS8qIFhlbiBDb25zb2xlIFJpbmcgKi8KKwlzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2Ug
KnJpbmc7CisJLyogR3JhbnQgcmVmIHBvaW50aW5nIGF0IHRoZSBmcm9udCByaW5nLiAqLworCWdy
YW50X3JlZl90IHJpbmdfcmVmOworCS8qIEV2ZW50IGNoYW5uZWwgZm9yIHRoZSBmcm9udCByaW5n
LiAqLworCWV2dGNobl9wb3J0X3QgZXZ0Y2huOwogCS8qIFRoZSBjb25zZGV2IGlkZW50aWZpZXIg
Ki8KIAlfX3UxNiB1aWQ7CiB9OwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 14:00:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 14:00:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hdb85-0002ZX-Ud; Wed, 19 Jun 2019 14:00:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb84-0002QO-Fo
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 14:00:00 +0000
X-Inumbo-ID: 862b45f5-929a-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 862b45f5-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 13:59:59 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id a15so1934660wmj.5
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 06:59: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=Qdv5xCDvxG/mRxXS2ZoV2xxW/Q/sYoGyNtSvDgFXy8E=;
 b=jCNFwQYCZBALN2j44k41ckfHbbmCOdWrcAnnraeutDD8GxKyPYPlim5v2b8I8x+CMx
 90JpjbbQ999KBQHZIzBMY77z88eQPmX/lahTzdXwi8Gc71gVivfwNgjamBuABay0gPw6
 KGEBC85TK3xQFkW7RXF7Psy4xPJZy4PuhWYyp4UKic0VNCrylSWEfuRdKbVEuzbwEkwV
 UOEKaol1HI+dt2GLxFTa4RP1ynnTXokfexka8LJeOzYKmwomqqqXdYniwxq3nHo/dP81
 aW6qcNi6/fczL3rus4MrCeP9HET+kYWnEIN84VarbQyVU1S0OyR+k3R2BYjZyrEwvkth
 rI6w==
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=Qdv5xCDvxG/mRxXS2ZoV2xxW/Q/sYoGyNtSvDgFXy8E=;
 b=SJKRx+TiYQwHZMwELzySORIjDtMloUTM4eBMcsPvidtU+FIxMshMJTupXtFkiMdB9l
 RBrRRSTeEL7MBc6NLQZ/+aUhICWdhWaT8WPJobm5q1cibsweYFhhgj+O6wtnfXydd1ZR
 GZWvF+bNl+RO5Bzwl0zXA/O7URRm0U/zt13X/ARzs0QFHPN5lWsADVfMcER4mD4uf5oB
 btiN6qKmPXCmFiYSS2ITAT1z/XuW4D697aC0BhWlcfWsNJh1LcsMqesvAa6lIxxzq26H
 YondhMuUAb5emv/8y4PczcoDsolMoKLZiSduxT11n+tNWwt7Wr0WIXf2nZEdihDFk2c+
 WNMA==
X-Gm-Message-State: APjAAAXLABPIVTYJ/dSnrIT/CLuQQMvGPbaJxUDcwvAFFamRrHwGhQ6K
 1khB9jiJCIxWwOq38fbtDGWhZLFQ
X-Google-Smtp-Source: APXvYqzjU5UJh2HdY9ZVIUk09tj6QdHFLZT/t/CQ99hk74oAQoWHbe3olIkJW1z+0bz+XSKmmy0sgg==
X-Received: by 2002:a1c:c14b:: with SMTP id r72mr8641085wmf.166.1560952797827; 
 Wed, 19 Jun 2019 06:59:57 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.56
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:57 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:35 +0300
Message-Id: <20190619135938.17750-8-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 07/10] plat/xen/drivers/cons: Start
 Consfront
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhpcyBwYXRjaCBhZGRzIHN0YXJ0IGZvciB0aGUgeGVuIGNvbnNvbGUgZnJvbnRlbmQuClVzZXMg
WGVuU3RvcmUgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIGNvbm5lY3Rpb24KdG8gYmFja2VuZC4KClNp
Z25lZC1vZmYtYnk6IEJpcmxlYSBDb3N0aW4gPGNvc3Rpbi5iaXJsZWFAZ21haWwuY29tPgotLS0K
IHBsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyAgICB8ICAzOCArKysrKysrKwogcGxh
dC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udF94Yi5oIHwgIDE5ICsrKysKIHBsYXQveGVuL2Ry
aXZlcnMvY29ucy9jb25zZnJvbnRfeHMuYyB8IDE3NiArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp
dCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyBiL3BsYXQveGVuL2RyaXZlcnMv
Y29ucy9jb25zZnJvbnQuYwppbmRleCBjZGJlZDBmNS4uNGRkNTcxNTEgMTAwNjQ0Ci0tLSBhL3Bs
YXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYworKysgYi9wbGF0L3hlbi9kcml2ZXJzL2Nv
bnMvY29uc2Zyb250LmMKQEAgLTIxNiw2ICsyMTYsNDIgQEAgc3RhdGljIGludCBjb25zZnJvbnRf
cmVsZWFzZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQogCXJldHVybiAwOwogfQogCitzdGF0aWMg
aW50IGNvbnNmcm9udF9zdGFydChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQoreworCXN0cnVjdCBj
b25zZnJvbnRfZGV2ICpjZmRldjsKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKGRldik7CisK
KwljZmRldiA9IHRvX2NvbnNmcm9udChkZXYpOworCVVLX0FTU0VSVChjZmRldik7CisKKwlyYyA9
IGNvbnNmcm9udF94Yl9jb25uZWN0KGNmZGV2KTsKKwlpZiAocmMgPCAwKSB7CisJCXVrX3ByX2Vy
cigiRXJyb3IgY29ubmVjdGluZyB0byBiYWNrZW5kOiAlZC5cbiIsIHJjKTsKKwkJcmV0dXJuIHJj
OworCX0KKwl1a19wcl9pbmZvKERSSVZFUl9OQU1FIjogJSJQUkl1MTYiIHN0YXJ0ZWRcbiIsIGNm
ZGV2LT51aWQpOworCisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IGNvbnNmcm9udF9zdG9w
KHN0cnVjdCB1a19jb25zZGV2ICpkZXYpCit7CisJc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2
OworCisJVUtfQVNTRVJUKGRldik7CisKKwljZmRldiA9IHRvX2NvbnNmcm9udChkZXYpOworCVVL
X0FTU0VSVChjZmRldik7CisKKwljb25zZnJvbnRfeGJfZGlzY29ubmVjdChjZmRldik7CisKKwl1
a19wcl9pbmZvKERSSVZFUl9OQU1FIjogJSJQUkl1MTYiIHN0b3BwZWRcbiIsIGNmZGV2LT51aWQp
OworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIGNvbnNmcm9udF9jbG9zZShzdHJ1Y3Qg
dWtfY29uc2RldiAqZGV2KQogewogCXN0cnVjdCBjb25zZnJvbnRfZGV2ICpjZmRldjsKQEAgLTI0
MCw2ICsyNzYsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVrX2NvbnNkZXZfb3BzIGNvbnNmcm9u
dF9vcHMgPSB7CiAJLnJ4X2NvbmZpZ3VyZSA9IGNvbnNmcm9udF9yeF9jb25maWd1cmUsCiAJLnR4
X2NvbmZpZ3VyZSA9IGNvbnNmcm9udF90eF9jb25maWd1cmUsCiAJLnJlbGVhc2UgPSBjb25zZnJv
bnRfcmVsZWFzZSwKKwkuc3RhcnQgPSBjb25zZnJvbnRfc3RhcnQsCisJLnN0b3AgPSBjb25zZnJv
bnRfc3RvcCwKIAkuY2xvc2UgPSBjb25zZnJvbnRfY2xvc2UsCiB9OwogCmRpZmYgLS1naXQgYS9w
bGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250X3hiLmggYi9wbGF0L3hlbi9kcml2ZXJzL2Nv
bnMvY29uc2Zyb250X3hiLmgKaW5kZXggMGNhMWFiYWYuLjZiNTQ3NWYzIDEwMDY0NAotLS0gYS9w
bGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250X3hiLmgKKysrIGIvcGxhdC94ZW4vZHJpdmVy
cy9jb25zL2NvbnNmcm9udF94Yi5oCkBAIC00NCw2ICs0NCwyNSBAQAogCiAjaW5jbHVkZSAiY29u
c2Zyb250LmgiCiAKKy8qKgorICogV3JpdGUgcmluZyBlbnRyaWVzIHRvIFhlbnN0b3JlLgorICog
RGV2aWNlIGNoYW5nZXMgaXRzIHN0YXRlIHRvIENvbm5lY3RlZC4KKyAqIEl0IHdhaXRzIHVudGls
IHRoZSBiYWNrZW5kIGlzIGNvbm5lY3RlZC4KKyAqCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCBh
IG5lZ2F0aXZlIGVycm5vIHZhbHVlIG9uIGVycm9yLgorICovCitpbnQgY29uc2Zyb250X3hiX2Nv
bm5lY3Qoc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2KTsKKworLyoqCisgKiBTdG9wcyB0aGUg
Y29ubmVjdGlvbiB3aXRoIHRoZSBiYWNrZW5kLgorICogVGhlIGZvbGxvd2luZyBzdGF0ZXMgYXJl
OgorICoJQ29ubmVjdGVkIC0+IENsb3NpbmcgLT4gQ2xvc2VkLgorICogRGVsZXRlIHJpbmcgZW50
cmllcworICoKKyAqIFJldHVybiAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUg
b24gZXJyb3IuCisgKi8KK2ludCBjb25zZnJvbnRfeGJfZGlzY29ubmVjdChzdHJ1Y3QgY29uc2Zy
b250X2RldiAqY2ZkZXYpOworCiAvKgogICogR2V0IGluaXRpYWwgaW5mbyBmcm9tIHRoZSB4ZW5z
dG9yZS4KICAqIEV4OiBiYWNrZW5kIHBhdGguCmRpZmYgLS1naXQgYS9wbGF0L3hlbi9kcml2ZXJz
L2NvbnMvY29uc2Zyb250X3hzLmMgYi9wbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250X3hz
LmMKaW5kZXggMDY2YTIzZDkuLmExNTU0YWUwIDEwMDY0NAotLS0gYS9wbGF0L3hlbi9kcml2ZXJz
L2NvbnMvY29uc2Zyb250X3hzLmMKKysrIGIvcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9u
dF94cy5jCkBAIC00MCw2ICs0MCwxODIgQEAKIAogI2luY2x1ZGUgImNvbnNmcm9udF94Yi5oIgog
CitzdGF0aWMgdm9pZCBjb25zZnJvbnRfeGJfZnJvbnRfZmluaShzdHJ1Y3QgY29uc2Zyb250X2Rl
diAqY2ZkZXYsCisJCXhlbmJ1c190cmFuc2FjdGlvbl90IHhidCk7CisKKyNkZWZpbmUgV0FJVF9C
RV9TVEFURV9DSEFOR0VfV0hJTEVfQ09ORChzdGF0ZV9jb25kKSBcCisJZG8geyBcCisJCXJjID0g
eHNfcmVhZF9pbnRlZ2VyKFhCVF9OSUwsIHBhdGgsIChpbnQgKikgJmJlX3N0YXRlKTsgXAorCQlp
ZiAocmMgPCAwKSBcCisJCQlnb3RvIG91dDsgXAorCQl3aGlsZSAoIXJjICYmIChzdGF0ZV9jb25k
KSkgXAorCQkJcmMgPSB4ZW5idXNfd2FpdF9mb3Jfc3RhdGVfY2hhbmdlKHBhdGgsICZiZV9zdGF0
ZSwgXAorCQkJCQl4ZW5kZXYtPm90aGVyZW5kX3dhdGNoKTsgXAorCQlpZiAocmMgPCAwKSBcCisJ
CQlnb3RvIG91dDsgXAorCX0gd2hpbGUgKDApCisKKworc3RhdGljIGludCBjb25zZnJvbnRfeGJf
ZnJvbnRfaW5pdChzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXYsCisJCXhlbmJ1c190cmFuc2Fj
dGlvbl90IHhidCkKK3sKKwlpbnQgcmMgPSAwOworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4ZW5k
ZXYgPSBjZmRldi0+eGVuZGV2OworCisJcmMgPSB4c19wcmludGYoeGJ0LCB4ZW5kZXYtPm5vZGVu
YW1lLCAicmluZy1yZWYiLCAiJXUiLAorCQkJCWNmZGV2LT5yaW5nX3JlZik7CisJaWYgKHJjIDwg
MCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHhzX3ByaW50Zih4YnQsIHhlbmRldi0+bm9kZW5hbWUs
CisJCQkJInBvcnQiLCAiJXUiLCBjZmRldi0+ZXZ0Y2huKTsKKwlpZiAocmMgPCAwKQorCQlnb3Rv
IG91dDsKKworb3V0OgorCXJldHVybiByYzsKK30KKworc3RhdGljIGludCBjb25zZnJvbnRfeGJf
dHJhbnNhY3Rpb25zKHN0cnVjdCBjb25zZnJvbnRfZGV2ICpjZmRldikKK3sKKwlzdHJ1Y3QgeGVu
YnVzX2RldmljZSAqeGVuZGV2ID0gY2ZkZXYtPnhlbmRldjsKKwl4ZW5idXNfdHJhbnNhY3Rpb25f
dCB4YnQ7CisJY2hhciAqbWVzc2FnZSA9IE5VTEw7CisJaW50IHJjID0gMDsKKworCXJjID0geHNf
dHJhbnNhY3Rpb25fc3RhcnQoJnhidCk7CisJaWYgKHJjIDwgMCkgeworCQltZXNzYWdlID0gInN0
YXJ0aW5nIHRyYW5zYWN0aW9uIjsKKwkJZ290byBhYm9ydF90cmFuc2FjdGlvbjsKKwl9CisKKwly
YyA9IGNvbnNmcm9udF94Yl9mcm9udF9pbml0KGNmZGV2LCB4YnQpOworCWlmIChyYyA8IDApIHsK
KwkJbWVzc2FnZSA9ICJ3cml0aW5nIHNvbWV0aGluZyI7CisJCWdvdG8gYWJvcnRfdHJhbnNhY3Rp
b247CisJfQorCisJcmMgPSB4ZW5idXNfc3dpdGNoX3N0YXRlKHhidCwgeGVuZGV2LCBYZW5idXNT
dGF0ZUNvbm5lY3RlZCk7CisJaWYgKHJjIDwgMCkgeworCQltZXNzYWdlID0gInN3aXRjaGluZyBz
dGF0ZSI7CisJCWdvdG8gYWJvcnRfdHJhbnNhY3Rpb247CisJfQorCisJcmMgPSB4c190cmFuc2Fj
dGlvbl9lbmQoeGJ0LCAwKTsKKwlpZiAocmMgPCAwKSB7CisJCW1lc3NhZ2UgPSAiZW5kaW5nIHRy
YW5zYWN0aW9uIjsKKwkJZ290byBhYm9ydF90cmFuc2FjdGlvbjsKKwl9CisKKwlyZXR1cm4gcmM7
CisKK2Fib3J0X3RyYW5zYWN0aW9uOgorCXhzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDEpOworCXVr
X3ByX2luZm8oIkFib3J0IHRyYW5zYWN0aW9uICVzOiBjb2RlOiAlZFxuIiwgbWVzc2FnZSwgcmMp
OworCXJldHVybiByYzsKK30KKworc3RhdGljIGludCBjb25zZnJvbnRfeGJfd2FpdF9iZV9jb25u
ZWN0KHN0cnVjdCBjb25zZnJvbnRfZGV2ICpjZmRldikKK3sKKwlzdHJ1Y3QgeGVuYnVzX2Rldmlj
ZSAqeGVuZGV2ID0gY2ZkZXYtPnhlbmRldjsKKwljaGFyIHBhdGhbc3RybGVuKHhlbmRldi0+b3Ro
ZXJlbmQpICsgc3RybGVuKCIvc3RhdGUiKSArIDFdOworCVhlbmJ1c1N0YXRlIGJlX3N0YXRlOwor
CWludCByYyA9IDA7CisKKwlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy9zdGF0ZSIs
IHhlbmRldi0+b3RoZXJlbmQpOworCisJeGVuZGV2LT5vdGhlcmVuZF93YXRjaCA9IHhzX3dhdGNo
X3BhdGgoWEJUX05JTCwgcGF0aCk7CisJaWYgKFBUUklTRVJSKHhlbmRldi0+b3RoZXJlbmRfd2F0
Y2gpKSB7CisJCXJjID0gUFRSMkVSUih4ZW5kZXYtPm90aGVyZW5kX3dhdGNoKTsKKwkJZ290byBv
dXQ7CisJfQorCisJV0FJVF9CRV9TVEFURV9DSEFOR0VfV0hJTEVfQ09ORChiZV9zdGF0ZSA8IFhl
bmJ1c1N0YXRlQ29ubmVjdGVkKTsKKwlpZiAoYmVfc3RhdGUgIT0gWGVuYnVzU3RhdGVDb25uZWN0
ZWQpIHsKKwkJdWtfcHJfZXJyKCJCYWNrZW5kIG5vdCBhdmFpbGFibGUsIHN0YXRlPSVzXG4iLAor
CQkJCQkJeGVuYnVzX3N0YXRlX3RvX3N0cihiZV9zdGF0ZSkpOworCQl4c191bndhdGNoKFhCVF9O
SUwsIHhlbmRldi0+b3RoZXJlbmRfd2F0Y2gpOworCX0KKworb3V0OgorCXJldHVybiByYzsKK30K
KworaW50IGNvbnNmcm9udF94Yl9jb25uZWN0KHN0cnVjdCBjb25zZnJvbnRfZGV2ICpjZmRldikK
K3sKKwlpbnQgcmMgPSAwOworCisJVUtfQVNTRVJUKGNmZGV2KTsKKworCXJjID0gY29uc2Zyb250
X3hiX3RyYW5zYWN0aW9ucyhjZmRldik7CisJaWYgKHJjIDwgMCkKKwkJZ290byBlcnJvcjsKKwor
CXJjID0gY29uc2Zyb250X3hiX3dhaXRfYmVfY29ubmVjdChjZmRldik7CisJaWYgKHJjIDwgMCkK
KwkJY29uc2Zyb250X3hiX2Zyb250X2ZpbmkoY2ZkZXYsIFhCVF9OSUwpOworCitlcnJvcjoKKwly
ZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnNmcm9udF94Yl9mcm9udF9maW5pKHN0cnVj
dCBjb25zZnJvbnRfZGV2ICpjZmRldiwKKwkJeGVuYnVzX3RyYW5zYWN0aW9uX3QgeGJ0KQorewor
CXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4ZW5kZXYgPSBjZmRldi0+eGVuZGV2OworCWNoYXIgcGF0
aFtzdHJsZW4oeGVuZGV2LT5ub2RlbmFtZSkgKyBzaXplb2YoIi9yaW5nX3JlZiIpXTsKKworCXNw
cmludGYocGF0aCwgIiVzL3JpbmctcmVmIiwgeGVuZGV2LT5ub2RlbmFtZSk7CisJeHNfcm0oeGJ0
LCBwYXRoKTsKKworCXNwcmludGYocGF0aCwgIiVzL3BvcnQiLCB4ZW5kZXYtPm5vZGVuYW1lKTsK
Kwl4c19ybSh4YnQsIHBhdGgpOworfQorCitzdGF0aWMgaW50IGNvbnNmcm9udF94Yl93YWl0X2Jl
X2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2KQoreworCXN0cnVjdCB4ZW5i
dXNfZGV2aWNlICp4ZW5kZXYgPSBjZmRldi0+eGVuZGV2OworCWNoYXIgcGF0aFtzdHJsZW4oeGVu
ZGV2LT5vdGhlcmVuZCkgKyBzdHJsZW4oIi9zdGF0ZSIpICsgMV07CisJWGVuYnVzU3RhdGUgYmVf
c3RhdGU7CisJaW50IHJjID0gMDsKKworCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVz
L3N0YXRlIiwgeGVuZGV2LT5vdGhlcmVuZCk7CisKKwlXQUlUX0JFX1NUQVRFX0NIQU5HRV9XSElM
RV9DT05EKGJlX3N0YXRlIDwgWGVuYnVzU3RhdGVDbG9zaW5nKTsKKworCXJjID0geGVuYnVzX3N3
aXRjaF9zdGF0ZShYQlRfTklMLCB4ZW5kZXYsIFhlbmJ1c1N0YXRlQ2xvc2VkKTsKKwlpZiAocmMg
PCAwKQorCQlnb3RvIG91dDsKKworCVdBSVRfQkVfU1RBVEVfQ0hBTkdFX1dISUxFX0NPTkQoYmVf
c3RhdGUgPCBYZW5idXNTdGF0ZUNsb3NlZCk7CisKKwl4c191bndhdGNoKFhCVF9OSUwsIHhlbmRl
di0+b3RoZXJlbmRfd2F0Y2gpOworCitvdXQ6CisJcmV0dXJuIHJjOworfQorCitpbnQgY29uc2Zy
b250X3hiX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbnNmcm9udF9kZXYgKmNmZGV2KQoreworCXN0cnVj
dCB4ZW5idXNfZGV2aWNlICp4ZW5kZXYgPSBjZmRldi0+eGVuZGV2OworCWludCByYyA9IDA7CisK
Kwl1a19wcl9pbmZvKCJDbG9zZSBjb25zb2xlOiBiYWNrZW5kIGF0ICVzXG4iLCB4ZW5kZXYtPm90
aGVyZW5kKTsKKworCXJjID0geGVuYnVzX3N3aXRjaF9zdGF0ZShYQlRfTklMLCB4ZW5kZXYsIFhl
bmJ1c1N0YXRlQ2xvc2luZyk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IGNv
bnNmcm9udF94Yl93YWl0X2JlX2Rpc2Nvbm5lY3QoY2ZkZXYpOworCWlmIChyYyA8IDApCisJCWdv
dG8gb3V0OworCisJY29uc2Zyb250X3hiX2Zyb250X2ZpbmkoY2ZkZXYsIFhCVF9OSUwpOworCitv
dXQ6CisJcmV0dXJuIHJjOworfQorCiBpbnQgY29uc2Zyb250X3hiX2luaXQoc3RydWN0IGNvbnNm
cm9udF9kZXYgKmNmZGV2KQogewogCXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4ZW5kZXY7Ci0tIAoy
LjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpN
aW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRl
dmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 14:00:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 14:00:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hdb87-0002ci-03; Wed, 19 Jun 2019 14:00:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb85-0002YF-P7
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 14:00:01 +0000
X-Inumbo-ID: 86fc5196-929a-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 86fc5196-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 14:00:00 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id p11so3523209wre.7
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 07:00:00 -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=h9CKNE+QYYUS6bFuHirc53tuTKRunrWO8kcHjSnCCa8=;
 b=uLpTCLnEIZZqMi0WV6QebuKJMlfs+lzYIlrCFAJeNbYX08qOVfA+meehVHdRcBDJkU
 EV2MYXn5ZrwrCfBxDue1tioFA3GvvvGtZeeKVaI9dAAYK3sRBD/MD3AvMTkNXkl0QsTE
 1ezjk5urXg3w2YxUOq3rzfAUZboGyEx7yuC10wak+SLMYjvqKqiLu935MjuthTCB4yO0
 O11/or3LZ0jcT++Wu0auIo+qnv+Re71OR1ZcUf3Smnwx0JBqHKXWeqvni990P1SGT05Q
 4LhfknTfys9+xgW36+176prY+BkjBtICeKujB8cC9ESQ9l54Nlz6DzYMJP17V0/maIbi
 QOaA==
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=h9CKNE+QYYUS6bFuHirc53tuTKRunrWO8kcHjSnCCa8=;
 b=YBtUYo2akj3zjT74bs6YquHnjnP6JOQMl+vHBb2zir0IN9NahEzz5KhtNuAUqw8al2
 DjFSSdibvi7FpSshCrhcbUWnaTifUVFR6tRdJAeCs5LtWjJ2sZGa8P8vQ+lSyujNQNXm
 3a7ikvgaOOlRgDB/BWCHSqnJzCzDjEee/qN1TdKe/uMeR8cZv25QeJCkh/Ap+59gZfiL
 qTgJW/92xLpPhCE2xeHnyGhssCjqistFLbRCfl+WE+dVk1jyrUsMa3340dUTQ1Qv4zn9
 aeND9HsDdQUNtAnpeBS5d4Ek7qvGNt7ZFSd5avxsNHjLIcWJvcPx5ZQPzlJpSHChxgsi
 7dXg==
X-Gm-Message-State: APjAAAUQcEjfgjDum4zjw9iK/WmgFqh6oKTcD3sJJAo1z3jZ7LrzA5vL
 1UGyBbgUWILWZ/IANYjq1OHI50ge
X-Google-Smtp-Source: APXvYqyQhnVZUL6vJayggVP86FIWbt6SGReXybebzyNHKrAT6Ccp7A/v5aplFAQSdLh5NlD3pj1owQ==
X-Received: by 2002:a5d:5386:: with SMTP id d6mr35154931wrv.207.1560952799269; 
 Wed, 19 Jun 2019 06:59:59 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.06.59.58
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 06:59:58 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:36 +0300
Message-Id: <20190619135938.17750-9-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 08/10] plat/xen/drivers/cons: Write
 to Consfront
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

U2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0t
LQogcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jIHwgNjIgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygr
KQoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyBiL3BsYXQv
eGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYwppbmRleCA0ZGQ1NzE1MS4uNWUxYWEwNjMgMTAw
NjQ0Ci0tLSBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYworKysgYi9wbGF0L3hl
bi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMKQEAgLTI1Miw2ICsyNTIsNjcgQEAgc3RhdGljIGlu
dCBjb25zZnJvbnRfc3RvcChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQogCXJldHVybiAwOwogfQog
CitzdGF0aWMgdW5zaWduZWQgaW50IHB2Y29uc29sZV9vdXRwdXQoc3RydWN0IGNvbnNmcm9udF9k
ZXYgKmRldiwKKwkJCQljaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4pCit7CisJc3RydWN0IHhl
bmNvbnNfaW50ZXJmYWNlICppbnRmOworCVhFTkNPTlNfUklOR19JRFggY29ucywgcHJvZDsKKwl1
bnNpZ25lZCBpbnQgc2VudCA9IDA7CisJdW5zaWduZWQgaW50IGluZGV4OworCisJaW50ZiA9IGRl
di0+cmluZzsKKwlVS19BU1NFUlQoaW50Zik7CisKKwljb25zID0gaW50Zi0+b3V0X2NvbnM7CisJ
cHJvZCA9IGludGYtPm91dF9wcm9kOworCisJLyogTWFrZSBzdXJlIHdlIGhhdmUgY29ucyAmIHBy
b2QgYmVmb3JlIHRvdWNoaW5nIHRoZSByaW5nICovCisJbWIoKTsKKwlVS19CVUdPTigocHJvZCAt
IGNvbnMpID4gc2l6ZW9mKGludGYtPm91dCkpOworCisJd2hpbGUgKChzZW50IDwgbGVuKSAmJiAo
KHByb2QgLSBjb25zKSA8IHNpemVvZihpbnRmLT5vdXQpKSkgeworCQlpbmRleCA9IE1BU0tfWEVO
Q09OU19JRFgocHJvZCsrLCBpbnRmLT5vdXQpOworCQlpbnRmLT5vdXRbaW5kZXhdID0gYnVmW3Nl
bnRdOworCQlzZW50Kys7CisJfQorCS8qIEVuc3VyZSBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIGJl
Zm9yZSBpbmNyZWFzaW5nIG91dF9wcm9kICovCisJd21iKCk7CisJaW50Zi0+b3V0X3Byb2QgPSBw
cm9kOworCisJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGRldi0+ZXZ0Y2huKTsKKworCXJldHVy
biBzZW50OworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGNvbnNmcm9udF93cml0ZShzdHJ1Y3Qg
dWtfY29uc2RldiAqZGV2LAorCQkJCWNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlz
dHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXY7CisJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICpp
bnRmOworCVhFTkNPTlNfUklOR19JRFggY29ucywgcHJvZDsKKwl1bnNpZ25lZCBpbnQgYXZhaWxh
YmxlOworCisJVUtfQVNTRVJUKGRldik7CisKKwljZmRldiA9IHRvX2NvbnNmcm9udChkZXYpOwor
CVVLX0FTU0VSVChjZmRldik7CisKKwlpbnRmID0gY2ZkZXYtPnJpbmc7CisJVUtfQVNTRVJUKGlu
dGYpOworCisJY29ucyA9IGludGYtPm91dF9jb25zOworCXByb2QgPSBpbnRmLT5vdXRfcHJvZDsK
KworCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGNvbnMgJiBwcm9kICovCisJbWIoKTsKKwlhdmFpbGFi
bGUgPSBwcm9kIC0gY29uczsKKwkvKiBDaGVjayBpZiBvdXQgcmluZyBpcyBmdWxsICovCisJaWYg
KGF2YWlsYWJsZSA+IHNpemVvZihpbnRmLT5vdXQpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBw
dmNvbnNvbGVfb3V0cHV0KGNmZGV2LCBidWYsIGxlbik7Cit9CisKIHN0YXRpYyB2b2lkIGNvbnNm
cm9udF9jbG9zZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQogewogCXN0cnVjdCBjb25zZnJvbnRf
ZGV2ICpjZmRldjsKQEAgLTI3OCw2ICszMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVrX2Nv
bnNkZXZfb3BzIGNvbnNmcm9udF9vcHMgPSB7CiAJLnJlbGVhc2UgPSBjb25zZnJvbnRfcmVsZWFz
ZSwKIAkuc3RhcnQgPSBjb25zZnJvbnRfc3RhcnQsCiAJLnN0b3AgPSBjb25zZnJvbnRfc3RvcCwK
Kwkud3JpdGUgPSBjb25zZnJvbnRfd3JpdGUsCiAJLmNsb3NlID0gY29uc2Zyb250X2Nsb3NlLAog
fTsKIAotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 14:00:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 14:00: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 1hdb8A-0002qu-1t; Wed, 19 Jun 2019 14:00:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb88-0002i0-36
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 14:00:04 +0000
X-Inumbo-ID: 88374318-929a-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 88374318-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 14:00:02 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id x17so3502694wrl.9
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 07:00: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=o72iqnjlSqhj0TN85l3EB2jXG9i3FD3RsjOREuBExiQ=;
 b=Cq5AnbByWW9yg7P535ErXles7m+tdk+OnBgGKhYBHxnO8u4XIOrO2MfDyrc0IQUN0c
 gRtAj8Pt6JyyQZ44dgAGkGfArxfJS8+oEZKBz4rie2kagQvOpJ6C1NpCCA0J7h71tp9A
 7y5PN1C3kfAblioosoB6ZkFPB2BYwK68VNIBDpZ28b28IGWDJ2AGg5E3KBbTbYIEepdf
 +fg30TgHHGwgwouW5i1lYWLTBETuhvcyuyg6HOtexDwBchR9Q/Vptbsz9OuqgIr/24op
 WXZP/H23JgunChjLPM90ZRoSLvKM5fJvm4S8O30Tpl/GZF49lll0TkkSsYvNeoqlCR3C
 c1jQ==
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=o72iqnjlSqhj0TN85l3EB2jXG9i3FD3RsjOREuBExiQ=;
 b=lAiI+3QktIR6U/NLRaLkk7xOpMOIMm5legs7mhYzRx7HGbxg5tiGPuGvAywe77aUdY
 cuMTiTul5vQ0MCNXt+/iSGKsN9QeuYxHQBtfndsGSTRMcQi07jJHfBgFEAMGEKRlquX4
 PgaoEfe/B9ghDytWuS/mk69MD99MMgjO594M70XZsDhHw6D9Lmv1Mi3x66YCvj0PSCLs
 QJ4g4VRgAtOlnv4d9bFdRZkuwb/W9YHuVfgETGWQvCc7Y/0+SJvHOzLAg/s5CUVGdtjo
 2hX0tQLrdW95W7JYDDncE5V5HCcWKIsmbo4aUrE5x3B+tTrH0iJ23pVwLDJftApCKZMW
 32mw==
X-Gm-Message-State: APjAAAUwOh15smFIZObcTNQONdH3fp6Qt5RqLhDPAHg3Au8ubz2j6CYj
 1UNV4+h9WQullQYkPvoIvmBc2O//
X-Google-Smtp-Source: APXvYqzr9XeEvW+UyvgaBdKHGsD7/MNkLMLmETPV4gFxaJJdXe5dgKeBWK/8x04Tnjn0RvpjnZF6vw==
X-Received: by 2002:a5d:494d:: with SMTP id r13mr35080902wrs.152.1560952801387; 
 Wed, 19 Jun 2019 07:00:01 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.07.00.00
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 07:00:00 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:37 +0300
Message-Id: <20190619135938.17750-10-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 09/10] plat/xen/drivers/cons: Read
 from Consfront
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

U2lnbmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0t
LQogcGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jIHwgNjkgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygr
KQoKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYyBiL3BsYXQv
eGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYwppbmRleCA1ZTFhYTA2My4uNmRkOGE2ZjggMTAw
NjQ0Ci0tLSBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuYworKysgYi9wbGF0L3hl
bi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmMKQEAgLTMxMyw2ICszMTMsNzQgQEAgc3RhdGljIHVu
c2lnbmVkIGludCBjb25zZnJvbnRfd3JpdGUoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKIAlyZXR1
cm4gcHZjb25zb2xlX291dHB1dChjZmRldiwgYnVmLCBsZW4pOwogfQogCitzdGF0aWMgdW5zaWdu
ZWQgaW50IHB2Y29uc29sZV9pbnB1dChzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXYsCisJCQkJ
Y2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFj
ZSAqaW50ZjsKKwlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2Q7CisJdW5zaWduZWQgaW50IHJl
YWQgPSAwOworCXVuc2lnbmVkIGludCBpbmRleDsKKworCWludGYgPSBjZmRldi0+cmluZzsKKwlV
S19BU1NFUlQoaW50Zik7CisKKwljb25zID0gaW50Zi0+aW5fY29uczsKKwlwcm9kID0gaW50Zi0+
aW5fcHJvZDsKKworCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGNvbnMgJiBwcm9kIGJlZm9yZSB0b3Vj
aGluZyB0aGUgcmluZyAqLworCW1iKCk7CisJVUtfQlVHT04oKHByb2QgLSBjb25zKSA+IHNpemVv
ZihpbnRmLT5pbikpOworCisJd2hpbGUgKChyZWFkIDwgbGVuKSAmJiAoY29ucyAhPSBwcm9kKSkg
eworCQlpbmRleCA9IE1BU0tfWEVOQ09OU19JRFgoY29ucysrLCBpbnRmLT5pbik7CisJCSooYnVm
ICsgcmVhZCkgPSAqKGludGYtPmluICsgaW5kZXgpOworCQlyZWFkKys7CisJfQorCisJLyogRW5z
dXJlIGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gYmVmb3JlIGluY3JlYXNpbmcgaW5fY29ucyAqLwor
CW1iKCk7CisJaW50Zi0+aW5fY29ucyA9IGNvbnM7CisKKwlyZXR1cm4gcmVhZDsKK30KKworc3Rh
dGljIHVuc2lnbmVkIGludCBjb25zZnJvbnRfcmVhZChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2LAor
CQkJCWNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlzdHJ1Y3QgY29uc2Zyb250X2Rl
diAqY2ZkZXY7CisJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmOworCVhFTkNPTlNfUklO
R19JRFggY29ucywgcHJvZDsKKwl1bnNpZ25lZCBpbnQgc2VudCA9IDA7CisJdW5zaWduZWQgaW50
IGF2YWlsYWJsZSA9IDA7CisKKwlVS19BU1NFUlQoZGV2KTsKKworCWNmZGV2ID0gdG9fY29uc2Zy
b250KGRldik7CisJVUtfQVNTRVJUKGNmZGV2KTsKKworCWludGYgPSBjZmRldi0+cmluZzsKKwlV
S19BU1NFUlQoaW50Zik7CisKKwljb25zID0gaW50Zi0+aW5fY29uczsKKwlwcm9kID0gaW50Zi0+
aW5fcHJvZDsKKworCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGNvbnMgJiBwcm9kICovCisJbWIoKTsK
KwlVS19CVUdPTigocHJvZCAtIGNvbnMpID4gc2l6ZW9mKGludGYtPmluKSk7CisKKwlhdmFpbGFi
bGUgPSBwcm9kIC0gY29uczsKKworCWlmICghYXZhaWxhYmxlKQorCQlyZXR1cm4gc2VudDsKKwor
CWlmIChhdmFpbGFibGUgPCBsZW4pCisJCXNlbnQgPSBwdmNvbnNvbGVfaW5wdXQoY2ZkZXYsIGJ1
ZiwgYXZhaWxhYmxlKTsKKwllbHNlCisJCXNlbnQgPSBwdmNvbnNvbGVfaW5wdXQoY2ZkZXYsIGJ1
ZiwgbGVuKTsKKworCXJldHVybiBzZW50OworfQorCiBzdGF0aWMgdm9pZCBjb25zZnJvbnRfY2xv
c2Uoc3RydWN0IHVrX2NvbnNkZXYgKmRldikKIHsKIAlzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2Zk
ZXY7CkBAIC0zNDAsNiArNDA4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1a19jb25zZGV2X29w
cyBjb25zZnJvbnRfb3BzID0gewogCS5zdGFydCA9IGNvbnNmcm9udF9zdGFydCwKIAkuc3RvcCA9
IGNvbnNmcm9udF9zdG9wLAogCS53cml0ZSA9IGNvbnNmcm9udF93cml0ZSwKKwkucmVhZCA9IGNv
bnNmcm9udF9yZWFkLAogCS5jbG9zZSA9IGNvbnNmcm9udF9jbG9zZSwKIH07CiAKLS0gCjIuMTEu
MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 19 14:00:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 19 Jun 2019 14:00:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hdb8F-00037m-3f; Wed, 19 Jun 2019 14:00:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W/yj=US=gmail.com=costin.birlea@srs-us1.protection.inumbo.net>)
 id 1hdb8E-00037W-1Y
 for minios-devel@lists.xen.org; Wed, 19 Jun 2019 14:00:10 +0000
X-Inumbo-ID: 8bd80572-929a-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8bd80572-929a-11e9-8980-bc764e045a96;
 Wed, 19 Jun 2019 14:00:08 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id m3so3553455wrv.2
 for <minios-devel@lists.xen.org>; Wed, 19 Jun 2019 07:00: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=Zc29gug2NkCvSmeZh4drdmWH08IxfU+laj7iR4U12fM=;
 b=pfh2eTamnIJHz1x/WanXwK8OtjlXuLSUTQaAVXkUBBswTe8AYrn+vX4x34tZCpTkP4
 GzU6N6TBYBrT7OYxDaLfcdn7xqRKmHKwSfp4tiX1QNx8dsK+iJTMuinOz3XyR+cEJeiN
 60uTKfn4VxwZhf9U39+QGMwPvE5Q6ZAXI9G+f08+/PwnFojouA42f+rpms16PO+heB5b
 vkvb829ouLA8Y4hJG7lGANmMhmQpAW8OSx5hyYX2TJPtE4IQPVNXwEiWk267yzjK3f/b
 54g5QBa0OHjKYr+lekDI1hWSaBr6ta7Iemx85PdvQLlkAjsbsxjYp6kgW0gVdKKmBjJk
 wi8g==
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=Zc29gug2NkCvSmeZh4drdmWH08IxfU+laj7iR4U12fM=;
 b=fZAfZjPYcwkZY+qBaBfCAdoVqgPaT6rLvIDB8lUSUlhYNbALNQn3HTY+kRJyWJyUeQ
 QJLgQnq5Hrko8lO5CGqiuZAyqvsvya+Oggc4A29zUC2k0lrIR0xvlwT4vjg4RGPC8d4n
 KffTJvEYMpZEyB9s9SuLjuhyw/Lrw8NdMZgGfjDN4u0mtSV+6M1A3m1lm6bOxQXDdDZO
 BRO8Rko3grJBIMCkGk5qAT5+qK+VpWZqSVWGrftqhZHnBrPlGcQTbNE/zadF+0pX6wih
 Kdtxxv4vzCj7UYjI0QbAjJc1JQ5TtU2BZ0e0+8QxDt2vrPAXoJy37s/bQTnHeMC1PSsk
 PheQ==
X-Gm-Message-State: APjAAAWXqDy7WleV7O/RfDNHBvhkkIRVSO8TU2BanG7aaNNug1QBj3JS
 +YRtcEU94RYxObrpSxb++9rN1dq5
X-Google-Smtp-Source: APXvYqwFiYaUZn9TB0rMeam0va7XjEWOkhgPxDb1e4Fbi9kDIitiP85fr5/QZYLdfmmv4Oe2nK02qg==
X-Received: by 2002:adf:c541:: with SMTP id s1mr71819874wrf.44.1560952807400; 
 Wed, 19 Jun 2019 07:00:07 -0700 (PDT)
Received: from localhost.localdomain ([2a02:2f0c:7605:8b00:d597:a15c:5440:68f])
 by smtp.gmail.com with ESMTPSA id o11sm1640155wmh.37.2019.06.19.07.00.06
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 19 Jun 2019 07:00:06 -0700 (PDT)
From: Birlea Costin <costin.birlea@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 19 Jun 2019 16:59:38 +0300
Message-Id: <20190619135938.17750-11-costin.birlea@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190619135938.17750-1-costin.birlea@gmail.com>
References: <20190619135938.17750-1-costin.birlea@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH 10/10] plat/xen/drivers/cons:
 Introduce Consfront Interrupt Handling
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Birlea Costin <costin.birlea@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>

VGhlIGN1cnJlbnQgY2hhbmdlcyBmb3JtIGludGVycnVwdCBoYW5kbGluZyBmb3IgY29uc2Zyb250
LgpJbnRlcnJ1cHQgZGVzaWduIGlzIHNpbWlsYXIgdG8gdmlydGlvLW5ldDoKCUtlZXBzIHRyYWNr
IGlmIHRoZSB1c2VyIGhhcyBlbmFibGVkIGludHIuCglFbmFibGVzIG9ubHkgd2hlbiByeCBpcyBl
bXB0eS4KCVJlYWQgY2FuIG5vdCBiZSBjYWxsZWQgd2hlbiBpbnRyIGFyZSBlbmFibGVkLgoKU2ln
bmVkLW9mZi1ieTogQmlybGVhIENvc3RpbiA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Ci0tLQog
cGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jIHwgNjEgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCiBwbGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250Lmgg
fCAgMiArKwogMiBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv
cGxhdC94ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jIGIvcGxhdC94ZW4vZHJpdmVycy9jb25z
L2NvbnNmcm9udC5jCmluZGV4IDZkZDhhNmY4Li5kZjIzM2VhNSAxMDA2NDQKLS0tIGEvcGxhdC94
ZW4vZHJpdmVycy9jb25zL2NvbnNmcm9udC5jCisrKyBiL3BsYXQveGVuL2RyaXZlcnMvY29ucy9j
b25zZnJvbnQuYwpAQCAtNTQsNiArNTQsMTIgQEAKICNkZWZpbmUgWEVOX0NPTlNGUk9OVF9TSVpF
X0lOIDEwMjQKICNkZWZpbmUgWEVOX0NPTlNGUk9OVF9TSVpFX09VVCAyMDQ4CiAKKy8qIFRPRE8g
U2FtZSBpbnRlcnJ1cHQgbWFjcm9zIHdlIHVzZSBpbiB2aXJ0aW8tY29ucyAqLworI2RlZmluZSBD
T05TRlJPTlRfSU5UUl9FTiAgICAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBDT05TRlJPTlRf
SU5UUl9FTl9NQVNLICAgICAgICAoMSkKKyNkZWZpbmUgQ09OU0ZST05UX0lOVFJfVVNSX0VOICAg
ICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgQ09OU0ZST05UX0lOVFJfVVNSX0VOX01BU0sgICAgKDIp
CisKIC8qIEdldCBjb25zZnJvbnRfZGV2KiB3aGljaCBjb250YWlucyBjb25zZGV2ICovCiAjZGVm
aW5lIHRvX2NvbnNmcm9udChkZXYpIFwKIAkJX19jb250YWluZXJvZihkZXYsIHN0cnVjdCBjb25z
ZnJvbnRfZGV2LCBjb25zZGV2KQpAQCAtNzAsNiArNzYsNyBAQCBzdGF0aWMgdm9pZCBjb25zZnJv
bnRfcnhfaGFuZGxlcihldnRjaG5fcG9ydF90IHBvcnQgX191bnVzZWQsCiAJY2ZkZXYgPSB0b19j
b25zZnJvbnQoZGV2KTsKIAlVS19BU1NFUlQoY2ZkZXYpOwogCisJY2ZkZXYtPmludHJfZW5hYmxl
ZCAmPSB+KENPTlNGUk9OVF9JTlRSX0VOKTsKIAltYXNrX2V2dGNobihjZmRldi0+ZXZ0Y2huKTsK
IAogCXVrX2NvbnNkZXZfZHJ2X3J4X2V2ZW50KGRldik7CkBAIC0xNjcsNiArMTc0LDcgQEAgc3Rh
dGljIGludCBjb25zZnJvbnRfcnhfY29uZmlndXJlKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCiAK
IAkvKiBTdGFydCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQsIEFQSSB1c2VyIHNob3VsZCBlbmFi
bGUgdGhlbSAqLwogCW1hc2tfZXZ0Y2huKGNmZGV2LT5ldnRjaG4pOworCWNmZGV2LT5pbnRyX2Vu
YWJsZWQgPSAwOwogCiAJcmV0dXJuIHJjOwogfQpAQCAtMjUyLDYgKzI2MCw1NCBAQCBzdGF0aWMg
aW50IGNvbnNmcm9udF9zdG9wKHN0cnVjdCB1a19jb25zZGV2ICpkZXYpCiAJcmV0dXJuIDA7CiB9
CiAKK3N0YXRpYyBpbnQgY29uc2Zyb250X3J4X2ludHJfZW5hYmxlKHN0cnVjdCB1a19jb25zZGV2
ICpkZXYpCit7CisJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmOworCXN0cnVjdCBjb25z
ZnJvbnRfZGV2ICpjZmRldjsKKworCVVLX0FTU0VSVChkZXYpOworCisJY2ZkZXYgPSB0b19jb25z
ZnJvbnQoZGV2KTsKKwlVS19BU1NFUlQoY2ZkZXYpOworCisJLyogSWYgdGhlIGludGVycnVwdCBp
cyBlbmFibGVkICovCisJaWYgKGNmZGV2LT5pbnRyX2VuYWJsZWQgJiBDT05TRlJPTlRfSU5UUl9F
TikKKwkJcmV0dXJuIDA7CisKKwlpbnRmID0gY2ZkZXYtPnJpbmc7CisJVUtfQVNTRVJUKGludGYp
OworCisJLyoqCisJICogRW5hYmxlIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb24gYml0LiBUaGlzIHdv
dWxkIGNhdXNlIHRoZSBpbnRlcnJ1cHQgdG8KKwkgKiBiZSBlbmFibGVkIGF1dG9tYXRpY2FsbHkg
aWYgdGhlIGludGVycnVwdCBjb3VsZCBub3QgYmUgZW5hYmxlZCBub3cKKwkgKiBkdWUgdG8gZGF0
YSBpbiB0aGUgcXVldWUuCisJICovCisJY2ZkZXYtPmludHJfZW5hYmxlZCA9IENPTlNGUk9OVF9J
TlRSX1VTUl9FTjsKKworCS8qIEVuYWJsZSBvbmx5IGlmIHJ4IGlzIGVtcHR5ICovCisJaWYgKGlu
dGYtPmluX2NvbnMgPT0gaW50Zi0+aW5fcHJvZCkgeworCQljZmRldi0+aW50cl9lbmFibGVkIHw9
IENPTlNGUk9OVF9JTlRSX0VOOworCQl1bm1hc2tfZXZ0Y2huKGNmZGV2LT5ldnRjaG4pOworCX0K
KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNvbnNmcm9udF9yeF9pbnRyX2Rpc2FibGUo
c3RydWN0IHVrX2NvbnNkZXYgKmRldikKK3sKKwlzdHJ1Y3QgY29uc2Zyb250X2RldiAqY2ZkZXY7
CisKKwlVS19BU1NFUlQoZGV2KTsKKworCWNmZGV2ID0gdG9fY29uc2Zyb250KGRldik7CisJVUtf
QVNTRVJUKGNmZGV2KTsKKworCWNmZGV2LT5pbnRyX2VuYWJsZWQgJj0gfihDT05TRlJPTlRfSU5U
Ul9VU1JfRU4gfCBDT05TRlJPTlRfSU5UUl9FTik7CisJbWFza19ldnRjaG4oY2ZkZXYtPmV2dGNo
bik7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHVuc2lnbmVkIGludCBwdmNvbnNvbGVfb3V0
cHV0KHN0cnVjdCBjb25zZnJvbnRfZGV2ICpkZXYsCiAJCQkJY2hhciAqYnVmLCB1bnNpZ25lZCBp
bnQgbGVuKQogewpAQCAtMzU4LDYgKzQxNCw5IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29uc2Zy
b250X3JlYWQoc3RydWN0IHVrX2NvbnNkZXYgKmRldiwKIAljZmRldiA9IHRvX2NvbnNmcm9udChk
ZXYpOwogCVVLX0FTU0VSVChjZmRldik7CiAKKwkvKiBRdWV1ZSBpbnRlcnJ1cHRzIGhhdmUgdG8g
YmUgb2ZmIHdoZW4gY2FsbGluZyByZWFkICovCisJVUtfQVNTRVJUKCEoY2ZkZXYtPmludHJfZW5h
YmxlZCAmIENPTlNGUk9OVF9JTlRSX0VOKSk7CisKIAlpbnRmID0gY2ZkZXYtPnJpbmc7CiAJVUtf
QVNTRVJUKGludGYpOwogCkBAIC00MDcsNiArNDY2LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1
a19jb25zZGV2X29wcyBjb25zZnJvbnRfb3BzID0gewogCS5yZWxlYXNlID0gY29uc2Zyb250X3Jl
bGVhc2UsCiAJLnN0YXJ0ID0gY29uc2Zyb250X3N0YXJ0LAogCS5zdG9wID0gY29uc2Zyb250X3N0
b3AsCisJLnJ4X2ludHJfZW5hYmxlID0gY29uc2Zyb250X3J4X2ludHJfZW5hYmxlLAorCS5yeF9p
bnRyX2Rpc2FibGUgPSBjb25zZnJvbnRfcnhfaW50cl9kaXNhYmxlLAogCS53cml0ZSA9IGNvbnNm
cm9udF93cml0ZSwKIAkucmVhZCA9IGNvbnNmcm9udF9yZWFkLAogCS5jbG9zZSA9IGNvbnNmcm9u
dF9jbG9zZSwKZGlmZiAtLWdpdCBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaCBi
L3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaAppbmRleCA2MWNiMmRmNC4uOTM2MGU5
NWYgMTAwNjQ0Ci0tLSBhL3BsYXQveGVuL2RyaXZlcnMvY29ucy9jb25zZnJvbnQuaAorKysgYi9w
bGF0L3hlbi9kcml2ZXJzL2NvbnMvY29uc2Zyb250LmgKQEAgLTUzLDYgKzUzLDggQEAgc3RydWN0
IGNvbnNmcm9udF9kZXYgewogCWdyYW50X3JlZl90IHJpbmdfcmVmOwogCS8qIEV2ZW50IGNoYW5u
ZWwgZm9yIHRoZSBmcm9udCByaW5nLiAqLwogCWV2dGNobl9wb3J0X3QgZXZ0Y2huOworCS8qIEZs
YWcgZm9yIHVzZXIgaW50ZXJydXB0IGVuYWJsZSAqLworCXVpbnQ4X3QgaW50cl9lbmFibGVkOwog
CS8qIFRoZSBjb25zZGV2IGlkZW50aWZpZXIgKi8KIAlfX3UxNiB1aWQ7CiB9OwotLSAKMi4xMS4w
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 20 10:30:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 20 Jun 2019 10:30: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 1hduKu-00070x-Ih; Thu, 20 Jun 2019 10:30:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iK4w=UT=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hduKt-00070s-LC
 for minios-devel@lists.xen.org; Thu, 20 Jun 2019 10:30:31 +0000
X-Inumbo-ID: 6be135c3-9346-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6be135c3-9346-11e9-8980-bc764e045a96;
 Thu, 20 Jun 2019 10:30:28 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id n4so2418350wrw.13
 for <minios-devel@lists.xen.org>; Thu, 20 Jun 2019 03:30:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language;
 bh=Pd5F/Gw0QoxmohrSyw5HgU6wZhs0Xd2CImViHS+ed5s=;
 b=V7y1mtxGL4VwAVhOUFZdlBAI15+ptw7OS3CRGEzyNgYWz/320LuD3fuD6JyZNkshnR
 VrhVaR98TJsV9EQzg0L3lHtZE0+WYLD8NBl94A+6rx4I8qw1/UBN42jTON6peGZmq+6j
 UjcbNs/WzvCZKiLtw5/ffdDHAYPz7zVPbsSxJwBrRNwGpbEnrGzV9ZKVNwRdO8aBv7u5
 x3UHgOzGfClfVYzoNpuLkYCvh9dzSkq476D07EsCgpOmnDQt+36F8qlT2EqXHh26tT+w
 ga0MYS8eJ2GcYBMIYGI9ScgFXhbPpPfMMqMpI1THyY+dpf3XWkRmLBZEJ/OAsyrBRFBY
 LQRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language;
 bh=Pd5F/Gw0QoxmohrSyw5HgU6wZhs0Xd2CImViHS+ed5s=;
 b=eKrQeEbsBqxnyerMUuYu3WyOdlGUDSV3/rmSYW3F2FuGXvrdLX2yJH4Hf6epWr6p2p
 9hT3IgWB4UxLthLDh+0sSpx2Vd8fGNeFXzJ7kM3jaIZ6SJgAH85L7uMbM3l8gEYJcCUF
 p4c+4Ih3ILLMp0NvPiVKVtImfANmLX1KOx14bVEgLDa7z4ztcBOqzHXLujkCBmjV/xA4
 CVLwW7xZWn8QJAh+RSmCxuc/Cyc31jNqGOE4hU8NeuZqLhFpLSQ8YSkzx3jVUfDVZBKa
 US+SmjM+HTla72AloyDBlEAxQeGp0Dc1CwVwZn8Vz9zhsrQlXhWOX1ISAAUkWUBJWoFf
 G11Q==
X-Gm-Message-State: APjAAAU65G4zLwkkxXiyK1Ie+8s6kAj2f9kH0pydMklDZmusNlC98F8k
 wY+fmjAa4STblvrLZGQmwq8=
X-Google-Smtp-Source: APXvYqxQT6mhuvW8ivSmCBkJEm2QDy0o1RXhyMu+UgjbmTXLKL0XB0i4/4LVFvsB/cX5bQ5r2MsPzQ==
X-Received: by 2002:a5d:49c4:: with SMTP id t4mr34242479wrs.318.1561026627192; 
 Thu, 20 Jun 2019 03:30:27 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id l8sm50214033wrg.40.2019.06.20.03.30.25
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 20 Jun 2019 03:30:26 -0700 (PDT)
To: Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Costin Lupu <costin.lupu@cs.pub.ro>, minios-devel@lists.xen.org
References: <20190611193343.5679-1-costin.lupu@cs.pub.ro>
 <149f2294-2f27-03c5-ddab-5680194d1077@neclab.eu>
 <ff8cc7df-72d1-85be-b69d-17e454494683@gmail.com>
 <cf1b6162-fee0-e607-2c2c-5033a3b324c4@neclab.eu>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <f32ad53e-6ab0-054f-551a-bbf8a5863142@gmail.com>
Date: Thu, 20 Jun 2019 13:30:25 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <cf1b6162-fee0-e607-2c2c-5033a3b324c4@neclab.eu>
Content-Type: multipart/mixed; boundary="------------0DEE0E2345BE7E509636D6B1"
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/kvm: Fix current thread
 retrieval in interrupt context on x86_64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, sharan.santhanam@neclab.eu
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This is a multi-part message in MIME format.
--------------0DEE0E2345BE7E509636D6B1
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Hi Simon,

Please see inline.

On 6/19/19 12:35 AM, Simon Kuenzer wrote:
> Hey Costin,
> 
> On 17.06.19 21:15, Costin Lupu wrote:
>> On 6/17/19 5:15 PM, Simon Kuenzer wrote:
>>> Hey Costin,
>>>
>>> thanks a lot for the patch. I have a couple of questions which I need
>>> for my understanding. I put those inline...
>>>
>>> Thanks,
>>>
>>> Simon
>>>
>>> On 11.06.19 21:33, Costin Lupu wrote:
>>>> Commit 017fffd5 introduced support for setting the current thread
>>>> pointer on top
>>>> of interrupt stacks in order to retrieve the current thread in
>>>> interrupt context
>>>> as well. Unfortunately, the wrong stack was picked for KVM platform.
>>>> This patch
>>>> fixes that and sets the thread on cpu_intr_stack instead.
>>>>
>>>> cpu_intr_stack was resized to STACK_SIZE because this is a mandatory
>>>> condition
>>>> when saving threads on top. However, given that it also needs a
>>>> STACK_SIZE
>>>> alignment, a new section was created for it, .intrstack, in order to
>>>> avoid
>>>> breaking the entire binary image layout. Without this new section, the
>>>> entire
>>>> .text section would have a STACK_SIZE alignment (i.e. 64KB) and this
>>>> would imply
>>>> that the multiboot header, which is included in .text section, would
>>>> also be
>>>> moved at an address higher than STACK_SIZE, even though it must stay
>>>> in the
>>>> first 8KB of the binary.
>>>
>>> Maybe, this is a stupid question: What if we take the pre-allocated
>>> bootstack also for the interrupts? As soon as we enable scheduling the
>>> bootstack is not used anymore by any thread. Except the case where we do
>>> not have scheduling, the bootstack will be still used during life time,
>>> would this be an issue?
>>>
>>
>> In theory this should work. But what about the case when we don't have
>> scheduling? Wouldn't we still need a different stack?
>>
> 
> Hum... this should be fine, I expect the CPU can handle this. 

What do you mean? The CPU will handle it properly only if you provide it
a different stack on which it will save the registers of the interrupted
context.

> But we have actually also stacks for the NMI and the trap handler. So
> maybe this suggestion is not generic enough.

Of course it's not generic enough. One way would be to align NMI and
trap stacks as well, but that would just bloat the binary. Fortunately,
(1) the NMI stack isn't used and (2) current thread is not needed when
traps are handled, so we can skip updating these 2 stacks for now.

>>>>
>>>> Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
>>>> ---
>>>>    plat/kvm/Makefile.uk      |  1 +
>>>>    plat/kvm/memory.c         |  6 ------
>>>>    plat/kvm/x86/link64.lds.S | 10 ++++++++++
>>>>    plat/kvm/x86/memory.c     | 44
>>>> ++++++++++++++++++++++++++++++++++++++++++++
>>>>    plat/kvm/x86/traps.c      |  5 ++++-
>>>>    5 files changed, 59 insertions(+), 7 deletions(-)
>>>>    create mode 100644 plat/kvm/x86/memory.c
>>>>
>>>> diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk
>>>> index 71c4c419..8eb162d4 100644
>>>> --- a/plat/kvm/Makefile.uk
>>>> +++ b/plat/kvm/Makefile.uk
>>>> @@ -46,6 +46,7 @@ LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
>>>> $(LIBKVMPLAT_BASE)/x86/lcpu.c
>>>>    LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
>>>> $(LIBKVMPLAT_BASE)/x86/intctrl.c
>>>>    LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
>>>> $(LIBKVMPLAT_BASE)/x86/tscclock.c
>>>>    LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
>>>> $(LIBKVMPLAT_BASE)/x86/time.c
>>>> +LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
>>>> $(LIBKVMPLAT_BASE)/x86/memory.c|x86
>>>>    ifeq ($(findstring y,$(CONFIG_KVM_KERNEL_VGA_CONSOLE)
>>>> $(CONFIG_KVM_DEBUG_VGA_CONSOLE)),y)
>>>>    LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) +=
>>>> $(LIBKVMPLAT_BASE)/x86/vga_console.c
>>>>    endif
>>>> diff --git a/plat/kvm/memory.c b/plat/kvm/memory.c
>>>> index e96bad2c..7f2fb46a 100644
>>>> --- a/plat/kvm/memory.c
>>>> +++ b/plat/kvm/memory.c
>>>> @@ -178,9 +178,3 @@ int _ukplat_mem_mappings_init(void)
>>>>    {
>>>>        return 0;
>>>>    }
>>>> -
>>>> -void ukplat_stack_set_current_thread(void *thread_addr)
>>>> -{
>>>> -    *((unsigned long *) _libkvmplat_cfg.bstack.end) =
>>>> -        (unsigned long) thread_addr;
>>>> -}
>>>> diff --git a/plat/kvm/x86/link64.lds.S b/plat/kvm/x86/link64.lds.S
>>>> index 362ba3e6..6103fc2d 100644
>>>> --- a/plat/kvm/x86/link64.lds.S
>>>> +++ b/plat/kvm/x86/link64.lds.S
>>>> @@ -99,6 +99,16 @@ SECTIONS
>>>>            . = ALIGN(__PAGE_SIZE);
>>>>        }
>>>>    +    /* We keep the interrupt stack on a different section
>>>> +     * given that it may have a big alignment and it would
>>>> +     * change the entire binary layout
>>>> +     */
>>>> +    .intrstack :
>>>> +    {
>>>> +        *(.intrstack)
>>>> +        . = ALIGN(__PAGE_SIZE);
>>>> +    }
>>>> +
>>>
>>> Would every platform need to do this?
>>>
>>
>> On Xen, the interrupt is already aligned to STACK_SIZE. On linuxu, the
>> signals use the current process stack, we should change it to using an
>> alternative stack if we want to use the same approach.
>>
>>>>        _end = .;
>>>>          .comment       0 : { *(.comment) }
>>>> diff --git a/plat/kvm/x86/memory.c b/plat/kvm/x86/memory.c
>>>> new file mode 100644
>>>> index 00000000..b8c7c7e7
>>>> --- /dev/null
>>>> +++ b/plat/kvm/x86/memory.c
>>>> @@ -0,0 +1,44 @@
>>>> +/* SPDX-License-Identifier: BSD-3-Clause */
>>>> +/*
>>>> + * Authors: Costin Lupu <costin.lupu@cs.pub.ro>
>>>> + *
>>>> + * Copyright (c) 2019, University Politehnica 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.
>>>> + */
>>>> +
>>>> +#include <uk/plat/memory.h>
>>>> +
>>>> +
>>>> +extern char cpu_intr_stack[];
>>>> +
>>>> +void ukplat_stack_set_current_thread(void *thread_addr)
>>>> +{
>>>> +    *((unsigned long *) cpu_intr_stack) =
>>>> +        (unsigned long) thread_addr;
>>>
>>> In general, instead of using the stack top, we could save the current
>>> thread always on the stack bottom. Those bytes would be reserved and
>>> would only be popped on a misbehaving program. Would that avoid the
>>> issue that you are facing? Maybe we could get away from the problem that
>>> the stacks have to have a fixed size for just getting the current
>>> value...
>>>
>>
>> How do you determine the stack bottom when you are using it, e.g. when
>> retrieving the current thread? I think you would use the same way as for
>> getting the current thread from the stack top. So you still need this
>> alignment constraint.
>>
> 
> You are right.
> 
>>>> +}
>>>> diff --git a/plat/kvm/x86/traps.c b/plat/kvm/x86/traps.c
>>>> index 27ef6d93..fe1dd5a4 100644
>>>> --- a/plat/kvm/x86/traps.c
>>>> +++ b/plat/kvm/x86/traps.c
>>>> @@ -25,7 +25,9 @@
>>>>     */
>>>>      #include <string.h>
>>>> +#include <uk/essentials.h>
>>>>    #include <uk/arch/lcpu.h>
>>>> +#include <uk/plat/config.h>
>>>>    #include <x86/desc.h>
>>>>    #include <kvm-x86/traps.h>
>>>>    @@ -59,7 +61,8 @@ static void gdt_init(void)
>>>>      static struct tss64 cpu_tss;
>>>>    -static char cpu_intr_stack[4096]; /* IST1 */
>>>> + __section(".intrstack")  __align(STACK_SIZE)
>>>> +char cpu_intr_stack[STACK_SIZE];  /* IST1 */
>>>
>>> You removed the stack actually from the .bss section (instead of text)
>>> and moved it to an own section. What if you keep it on the .bss but with
>>> the bigger size? I expect this should not be a problem for the text
>>> section.
>>>
>>
>> In the commit message it should have been '.text segment', or the first
>> segment of the binary, which contains both .text and .bss sections. So,
>> yeah, it's the segment that gets realigned. If we don't move it to
>> another section, it would remain in .bss, which is what this fix tries
>> to avoid. If we move it to a new section, it will also be moved to a
>> different segment and that's how the segment containing .text will keep
>> its original alignment.
>>
> 
> I am still not getting exactly why the .bss section has influence on the
> positioning on the .text section. The multiboot header is just one
> exceptional data section that we put into the beginning of the .text
> section. The rest should still go to its respective section. What is the
> bad thing about using the .bss section?
> 

Aligning cpu_intr_stack to 0x10000 also aligns .bss section to 0x10000.
For reasons I do not know, the linker also decides to move the .text
section to 0x10000 offset inside the binary file (please see
attachment). Now this is bad, because the .text section also contains
the multiboot information which must stay in the first 0x2000 bytes of
the binary. Moreover, the segment which will contain both sections in
the end will be aligned to 0x10000.

One solution would be to move multiboot information in a section of its
own, out of the .text section. But unfortunately, we still cannot
control the offset where the linker will decide to put it in the binary.
>From what I could find, the only way to fix that would be to put it with
objcopy at the beginning of the binary.

Therefore, the least intrusive solution would be to just move the
aligned interrupt stack in a section of its own and the rest of the
binary would just keep its original layout.

> Anyways, since we need a quick fix, I would suggest something else. The
> problem I have with the irq_stack section is that it complicates the
> linked layout. Additionally for being complete, the nmi and trap stack
> would also need to go in there. The other problem we have is that the
> stack sizes and/or their alignment need to be fulfilled.
>  - If we put the thread context pointer on top of the stack (low
>    address), all stacks need to be exactly sized and aligned to
>    STACK_SIZE.
>  - If we put this pointer to the stack bottom (high address), we need
>    to make sure that the high address is aligned to STACK_SIZE.
>    STACK_SIZE becomes automatically the maximum stack size but we could
>    have stacks that are smaller sized than this. However, I am not
>    sure how we could teach the alignment to the linker.
> 
> Although I do not like the alternative but it may solve our bug right
> now: What if we store the current thread pointer to a platform-internal
> variable instead of the stack. On every context switch, we update this
> variable and get_current() is returning its value. In principle, with
> SMP you would need to introduce this variable CPU-wise but we do not
> have this now. This way we could keep the stack sizes that we currently
> have.
> I think we have to revisit this low-level platform API at some point
> considering all the lessons we have learned and that longer-term we
> should also protect the each stacks from over- and underflows (for
> example with an unmapped page before and after each stack). But this
> involves a bigger restructuring anyways and this we should not do with
> this patch.
> 
> What do you think?
> 

This is something we need to do especially if we want to support
different stack sizes in the system. I also had this discussion with
Florian a few weeks ago about how this is also necessary in order to
avoid some races in the scheduler for which we had to apply a workaround.

However, this needs a more complex analysis and for sure it would have a
big impact, with potential side effects, for the whole system. I would
wait to do that until we'll have a proper regression testing system.

This current fix is the simplest one for now and it doesn't bring any
side effects. I strongly believe this is the best solution for now.

>>>>    static char cpu_trap_stack[4096]; /* IST2 */
>>>>    static char cpu_nmi_stack[4096];  /* IST3 */

Cheers,
Costin

--------------0DEE0E2345BE7E509636D6B1
Content-Type: text/plain; charset=UTF-8;
 name="readelf.out"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="readelf.out"

LSBVc2VkIGNvbW1hbmQ6IHJlYWRlbGYgLWxXUyA8YmluYXJ5PgoKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAoMSkgVGhlIG9yaWdpbmFsIGxheW91dAotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTZWN0aW9uIEhlYWRlcnM6CiAg
W05yXSBOYW1lICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgQWRkcmVzcyAgICAgICAg
ICBPZmYgICAgU2l6ZSAgIEVTIEZsZyBMayBJbmYgQWwKICBbIDBdICAgICAgICAgICAgICAg
ICAgIE5VTEwgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMCAwMDAwMDAgMDAg
ICAgICAwICAgMCAgMAogIFsgMV0gLnRleHQgICAgICAgICAgICAgUFJPR0JJVFMgICAgICAg
IDAwMDAwMDAwMDAxMDAwMDAgMDAxMDAwIDAxNzcxNyAwMCBXQVggIDAgICAwIDQwOTYgICAg
IDwtLS0gLnRleHQgc2VjdGlvbiBoYXMgMHgxMDAwIG9mZnNldCBhbmQgYmVnaW5zIHdpdGgg
bXVsdGlib290LCB3aGljaCBpcyBmaW5lIGJlY2F1c2UgPCAweDIwMDAKICBbIDJdIC51a19j
dG9ydGFiICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMTE4MDAwIDAxOTAwMCAw
MDAwMDQgMDAgIFdBICAwICAgMCAgMQogIFsgM10gLnJvZGF0YSAgICAgICAgICAgUFJPR0JJ
VFMgICAgICAgIDAwMDAwMDAwMDAxMTkwMDAgMDFhMDAwIDAwMmNmMiAwMCAgIEEgIDAgICAw
IDMyCiAgWyA0XSAudGJzcyAgICAgICAgICAgICBOT0JJVFMgICAgICAgICAgMDAwMDAwMDAw
MDExYmNmOCAwMWNjZjIgMDAxMDA4IDAwIFdBVCAgMCAgIDAgIDQKICBbIDVdIC5kYXRhICAg
ICAgICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMTFjMDAwIDAxZDAwMCAwMDAw
ODAgMDAgIFdBICAwICAgMCAzMgogIFsgNl0gLmdvdC5wbHQgICAgICAgICAgUFJPR0JJVFMg
ICAgICAgIDAwMDAwMDAwMDAxMWMwODAgMDFkMDgwIDAwMDAxOCAwOCAgV0EgIDAgICAwICA4
CiAgWyA3XSAuYnNzICAgICAgICAgICAgICBOT0JJVFMgICAgICAgICAgMDAwMDAwMDAwMDEx
ZDAwMCAwMWQwOTggMDE2MDAwIDAwICBXQSAgMCAgIDAgMzIKICBbIDhdIC5jb21tZW50ICAg
ICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAxZDA5OCAwMDAwMmQg
MDEgIE1TICAwICAgMCAgMQogIFsgOV0gLnNoc3RydGFiICAgICAgICAgU1RSVEFCICAgICAg
ICAgIDAwMDAwMDAwMDAwMDAwMDAgMDFkMGM1IDAwMDA0OCAwMCAgICAgIDAgICAwICAxCktl
eSB0byBGbGFnczoKICBXICh3cml0ZSksIEEgKGFsbG9jKSwgWCAoZXhlY3V0ZSksIE0gKG1l
cmdlKSwgUyAoc3RyaW5ncyksIEkgKGluZm8pLAogIEwgKGxpbmsgb3JkZXIpLCBPIChleHRy
YSBPUyBwcm9jZXNzaW5nIHJlcXVpcmVkKSwgRyAoZ3JvdXApLCBUIChUTFMpLAogIEMgKGNv
bXByZXNzZWQpLCB4ICh1bmtub3duKSwgbyAoT1Mgc3BlY2lmaWMpLCBFIChleGNsdWRlKSwK
ICBsIChsYXJnZSksIHAgKHByb2Nlc3NvciBzcGVjaWZpYykKCkVsZiBmaWxlIHR5cGUgaXMg
RVhFQyAoRXhlY3V0YWJsZSBmaWxlKQpFbnRyeSBwb2ludCAweDEwN2NmMwpUaGVyZSBhcmUg
MyBwcm9ncmFtIGhlYWRlcnMsIHN0YXJ0aW5nIGF0IG9mZnNldCA2NAoKUHJvZ3JhbSBIZWFk
ZXJzOgogIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgICAgICAgICBQaHlz
QWRkciAgICAgICAgICAgRmlsZVNpeiAgTWVtU2l6ICAgRmxnIEFsaWduCiAgTE9BRCAgICAg
ICAgICAgMHgwMDEwMDAgMHgwMDAwMDAwMDAwMTAwMDAwIDB4MDAwMDAwMDAwMDEwMDAwMCAw
eDAxYzA5OCAweDAzMzAwMCBSV0UgMHgxMDAwICAgPC0tLSBGaXJzdCBzZWdtZW50IGhhcyAw
eDEwMDAgYWxpZ25tZW50CiAgVExTICAgICAgICAgICAgMHgwMWNjZjIgMHgwMDAwMDAwMDAw
MTFiY2Y4IDB4MDAwMDAwMDAwMDExYmNmOCAweDAwMDAwMCAweDAwMTAwOCBSICAgMHg0CiAg
R05VX1NUQUNLICAgICAgMHgwMDAwMDAgMHgwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAw
MDAwMDAwMCAweDAwMDAwMCAweDAwMDAwMCBSV0UgMHgxMAoKIFNlY3Rpb24gdG8gU2VnbWVu
dCBtYXBwaW5nOgogIFNlZ21lbnQgU2VjdGlvbnMuLi4KICAgMDAgICAgIC50ZXh0IC51a19j
dG9ydGFiIC5yb2RhdGEgLmRhdGEgLmdvdC5wbHQgLmJzcwogICAwMSAgICAgLnRic3MKICAg
MDIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKDIpIEFmdGVy
IHdlIGFsaWduIGNwdV9pbnRyX3N0YWNrIHRvIDB4MTAwMDAsIG11bHRpYm9vdCBpcyBtb3Zl
ZCBiZXlvbmQgMHgyMDAwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ClNlY3Rpb24gSGVhZGVyczoKICBbTnJdIE5hbWUgICAgICAgICAgICAgIFR5cGUgICAgICAg
ICAgICBBZGRyZXNzICAgICAgICAgIE9mZiAgICBTaXplICAgRVMgRmxnIExrIEluZiBBbAog
IFsgMF0gICAgICAgICAgICAgICAgICAgTlVMTCAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAw
MDAgMDAwMDAwIDAwMDAwMCAwMCAgICAgIDAgICAwICAwCiAgWyAxXSAudGV4dCAgICAgICAg
ICAgICBQUk9HQklUUyAgICAgICAgMDAwMDAwMDAwMDEwMDAwMCAwMTAwMDAgMDE3NzE3IDAw
IFdBWCAgMCAgIDAgNDA5NiAgICAgPC0tLSAudGV4dCBzZWN0aW9uIGhhcyAweDEwMDAwIG9m
ZnNldCwgYnV0IG5vdyBtdWx0aWJvb3QgaXMgYXQgPiAweDIwMDAKICBbIDJdIC51a19jdG9y
dGFiICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMTE4MDAwIDAyODAwMCAwMDAw
MDQgMDAgIFdBICAwICAgMCAgMQogIFsgM10gLnJvZGF0YSAgICAgICAgICAgUFJPR0JJVFMg
ICAgICAgIDAwMDAwMDAwMDAxMTkwMDAgMDI5MDAwIDAwMmNmMiAwMCAgIEEgIDAgICAwIDMy
CiAgWyA0XSAudGJzcyAgICAgICAgICAgICBOT0JJVFMgICAgICAgICAgMDAwMDAwMDAwMDEx
YmNmOCAwMmJjZjIgMDAxMDA4IDAwIFdBVCAgMCAgIDAgIDQKICBbIDVdIC5kYXRhICAgICAg
ICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMTFjMDAwIDAyYzAwMCAwMDAwODAg
MDAgIFdBICAwICAgMCAzMgogIFsgNl0gLmdvdC5wbHQgICAgICAgICAgUFJPR0JJVFMgICAg
ICAgIDAwMDAwMDAwMDAxMWMwODAgMDJjMDgwIDAwMDAxOCAwOCAgV0EgIDAgICAwICA4CiAg
WyA3XSAuYnNzICAgICAgICAgICAgICBOT0JJVFMgICAgICAgICAgMDAwMDAwMDAwMDEyMDAw
MCAwMmMwOTggMDIxMDAwIDAwICBXQSAgMCAgIDAgNjU1MzYgICAgPC0tIC5ic3MgbmV3IDB4
MTAwMDAgYWxpZ25tZW50CiAgWyA4XSAuY29tbWVudCAgICAgICAgICBQUk9HQklUUyAgICAg
ICAgMDAwMDAwMDAwMDAwMDAwMCAwMmMwOTggMDAwMDJkIDAxICBNUyAgMCAgIDAgIDEKICBb
IDldIC5zaHN0cnRhYiAgICAgICAgIFNUUlRBQiAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAw
IDAyYzBjNSAwMDAwNDggMDAgICAgICAwICAgMCAgMQpLZXkgdG8gRmxhZ3M6CiAgVyAod3Jp
dGUpLCBBIChhbGxvYyksIFggKGV4ZWN1dGUpLCBNIChtZXJnZSksIFMgKHN0cmluZ3MpLCBJ
IChpbmZvKSwKICBMIChsaW5rIG9yZGVyKSwgTyAoZXh0cmEgT1MgcHJvY2Vzc2luZyByZXF1
aXJlZCksIEcgKGdyb3VwKSwgVCAoVExTKSwKICBDIChjb21wcmVzc2VkKSwgeCAodW5rbm93
biksIG8gKE9TIHNwZWNpZmljKSwgRSAoZXhjbHVkZSksCiAgbCAobGFyZ2UpLCBwIChwcm9j
ZXNzb3Igc3BlY2lmaWMpCgpFbGYgZmlsZSB0eXBlIGlzIEVYRUMgKEV4ZWN1dGFibGUgZmls
ZSkKRW50cnkgcG9pbnQgMHgxMDdjZjMKVGhlcmUgYXJlIDMgcHJvZ3JhbSBoZWFkZXJzLCBz
dGFydGluZyBhdCBvZmZzZXQgNjQKClByb2dyYW0gSGVhZGVyczoKICBUeXBlICAgICAgICAg
ICBPZmZzZXQgICBWaXJ0QWRkciAgICAgICAgICAgUGh5c0FkZHIgICAgICAgICAgIEZpbGVT
aXogIE1lbVNpeiAgIEZsZyBBbGlnbgogIExPQUQgICAgICAgICAgIDB4MDEwMDAwIDB4MDAw
MDAwMDAwMDEwMDAwMCAweDAwMDAwMDAwMDAxMDAwMDAgMHgwMWMwOTggMHgwNDEwMDAgUldF
IDB4MTAwMDAgICA8LS0tIEZpcnN0IHNlZ21lbnQgaGFzIDB4MTAwMDAgKD4gMHgxMDAwKSBh
bGlnbm1lbnQKICBUTFMgICAgICAgICAgICAweDAyYmNmMiAweDAwMDAwMDAwMDAxMWJjZjgg
MHgwMDAwMDAwMDAwMTFiY2Y4IDB4MDAwMDAwIDB4MDAxMDA4IFIgICAweDQKICBHTlVfU1RB
Q0sgICAgICAweDAwMDAwMCAweDAwMDAwMDAwMDAwMDAwMDAgMHgwMDAwMDAwMDAwMDAwMDAw
IDB4MDAwMDAwIDB4MDAwMDAwIFJXRSAweDEwCgogU2VjdGlvbiB0byBTZWdtZW50IG1hcHBp
bmc6CiAgU2VnbWVudCBTZWN0aW9ucy4uLgogICAwMCAgICAgLnRleHQgLnVrX2N0b3J0YWIg
LnJvZGF0YSAuZGF0YSAuZ290LnBsdCAuYnNzCiAgIDAxICAgICAudGJzcwogICAwMgoKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAoMykgV2Uga2VlcCBjcHVf
aW50cl9zdGFjayBhbGlnbmVkIHRvIDB4MTAwMDAsIGJ1dCB0cnkgdG8gbW92ZSBtdWx0aWJv
b3QgaW5mbyBpbiBhIAotICAgICBzZWN0aW9uIG9mIGl0cyBvd24sIHB1dHRpbmcgaXQgYmVm
b3JlIC50ZXh0IHNlY3Rpb24gaW4gdGhlIGxpbmtlciBmaWxlLgotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTZWN0aW9uIEhlYWRlcnM6CiAgW05yXSBOYW1lICAg
ICAgICAgICAgICBUeXBlICAgICAgICAgICAgQWRkcmVzcyAgICAgICAgICBPZmYgICAgU2l6
ZSAgIEVTIEZsZyBMayBJbmYgQWwKICBbIDBdICAgICAgICAgICAgICAgICAgIE5VTEwgICAg
ICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMCAwMDAwMDAgMDAgICAgICAwICAgMCAg
MAogIFsgMV0gLm11bHRpYm9vdCAgICAgICAgUFJPR0JJVFMgICAgICAgIDAwMDAwMDAwMDAw
MDAwMDAgMDFkMDk4IDAwMDAyMCAwMCAgICAgIDAgICAwICA0ICAgICAgIDwtLSBJdCBoYXMg
YSBiYWQgb2Zmc2V0LCAweDFkMDk4LCBiZWNhdXNlIHdlIGNhbm5vdCBjb250cm9sIHRoZSBv
ZmZzZXQgaW5zaWRlIGJpbmFyeSBhdCB0aGlzIHN0YWdlCiAgWyAyXSAudGV4dCAgICAgICAg
ICAgICBQUk9HQklUUyAgICAgICAgMDAwMDAwMDAwMDEwMDAwMCAwMDEwMDAgMDE3NzE3IDAw
IFdBWCAgMCAgIDAgNDA5NgogIFsgM10gLnVrX2N0b3J0YWIgICAgICAgUFJPR0JJVFMgICAg
ICAgIDAwMDAwMDAwMDAxMTgwMDAgMDE5MDAwIDAwMDAwNCAwMCAgV0EgIDAgICAwICAxCiAg
WyA0XSAucm9kYXRhICAgICAgICAgICBQUk9HQklUUyAgICAgICAgMDAwMDAwMDAwMDExOTAw
MCAwMWEwMDAgMDAyY2YyIDAwICAgQSAgMCAgIDAgMzIKICBbIDVdIC50YnNzICAgICAgICAg
ICAgIE5PQklUUyAgICAgICAgICAwMDAwMDAwMDAwMTFiY2Y4IDAxY2NmMiAwMDEwMDggMDAg
V0FUICAwICAgMCAgNAogIFsgNl0gLmRhdGEgICAgICAgICAgICAgUFJPR0JJVFMgICAgICAg
IDAwMDAwMDAwMDAxMWMwMDAgMDFkMDAwIDAwMDA4MCAwMCAgV0EgIDAgICAwIDMyCiAgWyA3
XSAuZ290LnBsdCAgICAgICAgICBQUk9HQklUUyAgICAgICAgMDAwMDAwMDAwMDExYzA4MCAw
MWQwODAgMDAwMDE4IDA4ICBXQSAgMCAgIDAgIDgKICBbIDhdIC5ic3MgICAgICAgICAgICAg
IE5PQklUUyAgICAgICAgICAwMDAwMDAwMDAwMTFkMDAwIDAxZDA5OCAwMTYwMDAgMDAgIFdB
ICAwICAgMCAzMgogIFsgOV0gLmNvbW1lbnQgICAgICAgICAgUFJPR0JJVFMgICAgICAgIDAw
MDAwMDAwMDAwMDAwMDAgMDFkMGI4IDAwMDAyZCAwMSAgTVMgIDAgICAwICAxCiAgWzEwXSAu
c2hzdHJ0YWIgICAgICAgICBTVFJUQUIgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMWQw
ZTUgMDAwMDUzIDAwICAgICAgMCAgIDAgIDEKS2V5IHRvIEZsYWdzOgogIFcgKHdyaXRlKSwg
QSAoYWxsb2MpLCBYIChleGVjdXRlKSwgTSAobWVyZ2UpLCBTIChzdHJpbmdzKSwgSSAoaW5m
byksCiAgTCAobGluayBvcmRlciksIE8gKGV4dHJhIE9TIHByb2Nlc3NpbmcgcmVxdWlyZWQp
LCBHIChncm91cCksIFQgKFRMUyksCiAgQyAoY29tcHJlc3NlZCksIHggKHVua25vd24pLCBv
IChPUyBzcGVjaWZpYyksIEUgKGV4Y2x1ZGUpLAogIGwgKGxhcmdlKSwgcCAocHJvY2Vzc29y
IHNwZWNpZmljKQoKRWxmIGZpbGUgdHlwZSBpcyBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCkVu
dHJ5IHBvaW50IDB4MTA3Y2YzClRoZXJlIGFyZSAzIHByb2dyYW0gaGVhZGVycywgc3RhcnRp
bmcgYXQgb2Zmc2V0IDY0CgpQcm9ncmFtIEhlYWRlcnM6CiAgVHlwZSAgICAgICAgICAgT2Zm
c2V0ICAgVmlydEFkZHIgICAgICAgICAgIFBoeXNBZGRyICAgICAgICAgICBGaWxlU2l6ICBN
ZW1TaXogICBGbGcgQWxpZ24KICBMT0FEICAgICAgICAgICAweDAwMTAwMCAweDAwMDAwMDAw
MDAxMDAwMDAgMHgwMDAwMDAwMDAwMTAwMDAwIDB4MDFjMDk4IDB4MDMzMDAwIFJXRSAweDEw
MDAKICBUTFMgICAgICAgICAgICAweDAxY2NmMiAweDAwMDAwMDAwMDAxMWJjZjggMHgwMDAw
MDAwMDAwMTFiY2Y4IDB4MDAwMDAwIDB4MDAxMDA4IFIgICAweDQKICBHTlVfU1RBQ0sgICAg
ICAweDAwMDAwMCAweDAwMDAwMDAwMDAwMDAwMDAgMHgwMDAwMDAwMDAwMDAwMDAwIDB4MDAw
MDAwIDB4MDAwMDAwIFJXRSAweDEwCgogU2VjdGlvbiB0byBTZWdtZW50IG1hcHBpbmc6CiAg
U2VnbWVudCBTZWN0aW9ucy4uLgogICAwMCAgICAgLnRleHQgLnVrX2N0b3J0YWIgLnJvZGF0
YSAuZGF0YSAuZ290LnBsdCAuYnNzCiAgIDAxICAgICAudGJzcwogICAwMgoKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAoNCkgV2UgbW92ZSBjcHVfaW50cl9z
dGFjayB0byAuaW50cnN0YWNrIHNlY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KU2VjdGlvbiBIZWFkZXJzOgogIFtOcl0gTmFtZSAgICAgICAgICAgICAg
VHlwZSAgICAgICAgICAgIEFkZHJlc3MgICAgICAgICAgT2ZmICAgIFNpemUgICBFUyBGbGcg
TGsgSW5mIEFsCiAgWyAwXSAgICAgICAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgMDAw
MDAwMDAwMDAwMDAwMCAwMDAwMDAgMDAwMDAwIDAwICAgICAgMCAgIDAgIDAKICBbIDFdIC50
ZXh0ICAgICAgICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMTAwMDAwIDAwMTAw
MCAwMTc3MTcgMDAgV0FYICAwICAgMCA0MDk2CiAgWyAyXSAudWtfY3RvcnRhYiAgICAgICBQ
Uk9HQklUUyAgICAgICAgMDAwMDAwMDAwMDExODAwMCAwMTkwMDAgMDAwMDA0IDAwICBXQSAg
MCAgIDAgIDEKICBbIDNdIC5yb2RhdGEgICAgICAgICAgIFBST0dCSVRTICAgICAgICAwMDAw
MDAwMDAwMTE5MDAwIDAxYTAwMCAwMDJjZjIgMDAgICBBICAwICAgMCAzMgogIFsgNF0gLnRi
c3MgICAgICAgICAgICAgTk9CSVRTICAgICAgICAgIDAwMDAwMDAwMDAxMWJjZjggMDFjY2Yy
IDAwMTAwOCAwMCBXQVQgIDAgICAwICA0CiAgWyA1XSAuZGF0YSAgICAgICAgICAgICBQUk9H
QklUUyAgICAgICAgMDAwMDAwMDAwMDExYzAwMCAwMWQwMDAgMDAwMDgwIDAwICBXQSAgMCAg
IDAgMzIKICBbIDZdIC5nb3QucGx0ICAgICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAw
MDAwMTFjMDgwIDAxZDA4MCAwMDAwMTggMDggIFdBICAwICAgMCAgOAogIFsgN10gLmJzcyAg
ICAgICAgICAgICAgTk9CSVRTICAgICAgICAgIDAwMDAwMDAwMDAxMWQwMDAgMDFkMDk4IDAw
NjAwMCAwMCAgV0EgIDAgICAwIDMyCiAgWyA4XSAuaW50cnN0YWNrICAgICAgICBQUk9HQklU
UyAgICAgICAgMDAwMDAwMDAwMDEzMDAwMCAwMjAwMDAgMDEwMDAwIDAwICBXQSAgMCAgIDAg
NjU1MzYKICBbIDldIC5jb21tZW50ICAgICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAw
MDAwMDAwMDAwIDAzMDAwMCAwMDAwMmQgMDEgIE1TICAwICAgMCAgMQogIFsxMF0gLnNoc3Ry
dGFiICAgICAgICAgU1RSVEFCICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDMwMDJkIDAw
MDA1MyAwMCAgICAgIDAgICAwICAxCktleSB0byBGbGFnczoKICBXICh3cml0ZSksIEEgKGFs
bG9jKSwgWCAoZXhlY3V0ZSksIE0gKG1lcmdlKSwgUyAoc3RyaW5ncyksIEkgKGluZm8pLAog
IEwgKGxpbmsgb3JkZXIpLCBPIChleHRyYSBPUyBwcm9jZXNzaW5nIHJlcXVpcmVkKSwgRyAo
Z3JvdXApLCBUIChUTFMpLAogIEMgKGNvbXByZXNzZWQpLCB4ICh1bmtub3duKSwgbyAoT1Mg
c3BlY2lmaWMpLCBFIChleGNsdWRlKSwKICBsIChsYXJnZSksIHAgKHByb2Nlc3NvciBzcGVj
aWZpYykKCkVsZiBmaWxlIHR5cGUgaXMgRVhFQyAoRXhlY3V0YWJsZSBmaWxlKQpFbnRyeSBw
b2ludCAweDEwN2NmMwpUaGVyZSBhcmUgNCBwcm9ncmFtIGhlYWRlcnMsIHN0YXJ0aW5nIGF0
IG9mZnNldCA2NAoKUHJvZ3JhbSBIZWFkZXJzOgogIFR5cGUgICAgICAgICAgIE9mZnNldCAg
IFZpcnRBZGRyICAgICAgICAgICBQaHlzQWRkciAgICAgICAgICAgRmlsZVNpeiAgTWVtU2l6
ICAgRmxnIEFsaWduCiAgTE9BRCAgICAgICAgICAgMHgwMDEwMDAgMHgwMDAwMDAwMDAwMTAw
MDAwIDB4MDAwMDAwMDAwMDEwMDAwMCAweDAxYzA5OCAweDAyMzAwMCBSV0UgMHgxMDAwCiAg
TE9BRCAgICAgICAgICAgMHgwMjAwMDAgMHgwMDAwMDAwMDAwMTMwMDAwIDB4MDAwMDAwMDAw
MDEzMDAwMCAweDAxMDAwMCAweDAxMDAwMCBSVyAgMHgxMDAwMAogIFRMUyAgICAgICAgICAg
IDB4MDFjY2YyIDB4MDAwMDAwMDAwMDExYmNmOCAweDAwMDAwMDAwMDAxMWJjZjggMHgwMDAw
MDAgMHgwMDEwMDggUiAgIDB4NAogIEdOVV9TVEFDSyAgICAgIDB4MDAwMDAwIDB4MDAwMDAw
MDAwMDAwMDAwMCAweDAwMDAwMDAwMDAwMDAwMDAgMHgwMDAwMDAgMHgwMDAwMDAgUldFIDB4
MTAKCiBTZWN0aW9uIHRvIFNlZ21lbnQgbWFwcGluZzoKICBTZWdtZW50IFNlY3Rpb25zLi4u
CiAgIDAwICAgICAudGV4dCAudWtfY3RvcnRhYiAucm9kYXRhIC5kYXRhIC5nb3QucGx0IC5i
c3MKICAgMDEgICAgIC5pbnRyc3RhY2sKICAgMDIgICAgIC50YnNzCiAgIDAzCg==
--------------0DEE0E2345BE7E509636D6B1
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--------------0DEE0E2345BE7E509636D6B1--


From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDUu-00028P-KL; Fri, 21 Jun 2019 06:58:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDUt-00028F-5U
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:07 +0000
X-Inumbo-ID: eb8062da-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id eb8062da-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58: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 9DF352B;
 Thu, 20 Jun 2019 23:58:05 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D838B3F246;
 Thu, 20 Jun 2019 23:59:50 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:36 +0800
Message-Id: <20190621065747.21031-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 00/11] Enble early SMP
 support 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>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

VGhpcyBpcyB0aGUgZWFybHkgU01QIHN1cHBvcnQgb24gYXJtNjQga3ZtIHBsYXQgd2hpY2ggYmFz
ZWQgb24gcHJldmlvdXMgc2VyaWVzICMxLSM1CgpNb3N0IG9mIHRoZSBjb2RlcyByZWZlciB0byB0
aGUgaW1wbGVtZW50YXRpb24gaW4gZnJlZWJzZC4KCkppYSBIZSAoMTEpOgogIGxpYi9ub2xpYmM6
IEludHJvZHVjZSBuZGVsYXkgYW5kIG1kZWxheSBmb3IgYnVzeSB3YWl0CiAgcGxhdC9jb21tb24v
b2Z3OiBNb3ZlIGZkdF9yZWdfcmVhZF9udW1iZXIgdG8gaGVhZGVyIGZpbGUgZm9yIHN0YXRpYwog
ICAgaW5saW5lCiAgcGxhdC9rdm0vc21wOiBBZGQgcHNjaSBjYWxsIGRlZmluaXRpb25zIGluIHBz
Y2kuaAogIHBsYXQva3ZtL3NtcDogQWRkIHNtcCBkZWZpbml0aW9ucyBpbiBzbXAuaAogIHBsYXQv
a3ZtL3NtcDogQWRkIHBzY2kgY2FsbCBwc2NpX2NwdV9vbgogIHBsYXQva3ZtOiBhcm02NDogQWRk
IGEgcGFyYW1ldGVyIHRvIHN0YXJ0X21tdQogIHBsYXQva3ZtOiBhcm02NDogQWRkIGVudHJ5IHBv
aW50IGZvciBBUHMgKHNlY29uZGFyeSBjcHVzKQogIHBsYXQva3ZtL2FybTogSW1wbGVtZW50IHNt
cCBib290IG9uIGFybTY0IGt2bSBwbGF0CiAgcGxhdC9rdm0vYXJtOiBBZGQgc2ltcGxlIHBlcmNw
dSB2YXJpYWJsZSBzdXBwb3J0CiAgbGliL3VrYm9vdDogRW5hYmxlIENPTkZJR19TTVAgZm9yIGFy
bTY0CiAgcGxhdC9rdm0vYXJtOiBFbmFibGUgc2NoZWR1bGVyIG9uIHNlY29uZGFyeSBBUHMKCiBs
aWIvbm9saWJjL2V4cG9ydHN5bXMudWsgICAgICAgfCAgIDQgKwogbGliL25vbGliYy9pbmNsdWRl
L3RpbWUuaCAgICAgIHwgICAzICsKIGxpYi9ub2xpYmMvdGltZS5jICAgICAgICAgICAgICB8ICAx
NiArKy0KIGxpYi91a2Jvb3QvQ29uZmlnLnVrICAgICAgICAgICB8ICAgNSArCiBsaWIvdWtib290
L01ha2VmaWxlLnVrICAgICAgICAgfCAgIDEgKwogbGliL3VrYm9vdC9ib290LmMgICAgICAgICAg
ICAgIHwgIDE1ICsrKwogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vcHNjaS5oIHwgIDg3ICsrKysr
KysrKysrKwogcGxhdC9jb21tb24vaW5jbHVkZS9zbXAuaCAgICAgIHwgIDQ5ICsrKysrKysKIHBs
YXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaCB8ICAxNyArKy0KIHBsYXQvZHJpdmVycy9vZncv
ZmR0LmMgICAgICAgICB8ICAxNyArLS0KIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICB8
ICAgMSArCiBwbGF0L2t2bS9hcm0vZW50cnk2NC5TICAgICAgICAgfCAgMzEgKysrKysKIHBsYXQv
a3ZtL2FybS9wYWdldGFibGU2NC5TICAgICB8ICAgNyArLQogcGxhdC9rdm0vYXJtL3NldHVwLmMg
ICAgICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMTQgZmls
ZXMgY2hhbmdlZCwgNDY2IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL3BzY2kuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IHBsYXQvY29tbW9uL2luY2x1ZGUvc21wLmgKCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDUy-000293-Lz; Fri, 21 Jun 2019 06:58: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=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDUw-00028m-NK
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:10 +0000
X-Inumbo-ID: ecd8a4d4-93f1-11e9-8963-d3a3dfa32f30
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id ecd8a4d4-93f1-11e9-8963-d3a3dfa32f30;
 Fri, 21 Jun 2019 06:58: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 E0810CFC;
 Thu, 20 Jun 2019 23:58:07 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2A47C3F246;
 Thu, 20 Jun 2019 23:59:52 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:37 +0800
Message-Id: <20190621065747.21031-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 01/11] lib/nolibc:
 Introduce ndelay and mdelay for busy wait
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBsaWIvbm9saWJj
L2V4cG9ydHN5bXMudWsgIHwgIDQgKysrKwogbGliL25vbGliYy9pbmNsdWRlL3RpbWUuaCB8ICAz
ICsrKwogbGliL25vbGliYy90aW1lLmMgICAgICAgICB8IDE2ICsrKysrKysrKysrKysrLS0KIHBs
YXQva3ZtL01ha2VmaWxlLnVrICAgICAgfCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDIyIGluc2Vy
dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9leHBvcnRz
eW1zLnVrIGIvbGliL25vbGliYy9leHBvcnRzeW1zLnVrCmluZGV4IGNhZTZlMjkuLjExYWZkYTgg
MTAwNjQ0Ci0tLSBhL2xpYi9ub2xpYmMvZXhwb3J0c3ltcy51aworKysgYi9saWIvbm9saWJjL2V4
cG9ydHN5bXMudWsKQEAgLTc0LDYgKzc0LDEwIEBAIHN0cmxjYXQKIG5hbm9zbGVlcAogY2xvY2tf
Z2V0dGltZQogCisjIGJ1c3l3YWl0IGRlbGF5CituZGVsYXkKK21kZWxheQorCiAjIHVuaXN0ZAog
c2xlZXAKIApkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3RpbWUuaCBiL2xpYi9ub2xp
YmMvaW5jbHVkZS90aW1lLmgKaW5kZXggZjc3YmIyZi4uODljYzNhNCAxMDA2NDQKLS0tIGEvbGli
L25vbGliYy9pbmNsdWRlL3RpbWUuaAorKysgYi9saWIvbm9saWJjL2luY2x1ZGUvdGltZS5oCkBA
IC01OCw2ICs1OCw5IEBAIHN0cnVjdCBpdGltZXJzcGVjIHsKIGludCBuYW5vc2xlZXAoY29uc3Qg
c3RydWN0IHRpbWVzcGVjICpyZXEsIHN0cnVjdCB0aW1lc3BlYyAqcmVtKTsKIGludCBjbG9ja19n
ZXR0aW1lKGNsb2NraWRfdCBjbGssIHN0cnVjdCB0aW1lc3BlYyAqdHApOwogCit2b2lkIG5kZWxh
eShfX3U2NCBuc2VjKTsKK3ZvaWQgbWRlbGF5KF9fdTY0IG1zZWMpOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy90aW1lLmMgYi9saWIvbm9s
aWJjL3RpbWUuYwppbmRleCBmODg0NTMxLi5kMDZjM2MxIDEwMDY0NAotLS0gYS9saWIvbm9saWJj
L3RpbWUuYworKysgYi9saWIvbm9saWJjL3RpbWUuYwpAQCAtNDEsOSArNDEsOCBAQAogI2luY2x1
ZGUgPHVrL2NvbmZpZy5oPgogI2lmIENPTkZJR19IQVZFX1NDSEVECiAjaW5jbHVkZSA8dWsvc2No
ZWQuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dWsvcGxhdC9sY3B1Lmg+CiAjZW5kaWYKKyNpbmNsdWRl
IDx1ay9wbGF0L2xjcHUuaD4KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CiAKICNpZm5kZWYg
Q09ORklHX0hBVkVfU0NIRUQKQEAgLTE0MywzICsxNDIsMTYgQEAgaW50IGNsb2NrX2dldHRpbWUo
Y2xvY2tpZF90IGNsa19pZCwgc3RydWN0IHRpbWVzcGVjICp0cCkKIAl0cC0+dHZfbnNlYyA9IHVr
YXJjaF90aW1lX3N1YnNlYyhub3cpOwogCXJldHVybiAwOwogfQorCit2b2lkIG5kZWxheShfX3U2
NCBuc2VjKQoreworCV9fbnNlYyB1bnRpbCA9IHVrcGxhdF9tb25vdG9uaWNfY2xvY2soKSArIG5z
ZWM7CisKKwl3aGlsZSAodW50aWwgPiB1a3BsYXRfbW9ub3RvbmljX2Nsb2NrKCkpCisJCXVrcGxh
dF9sY3B1X2hhbHRfdG8odW50aWwpOworfQorCit2b2lkIG1kZWxheShfX3U2NCBtc2VjKQorewor
CW5kZWxheShtc2VjLzEwMDApOworfQpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTWFrZWZpbGUudWsg
Yi9wbGF0L2t2bS9NYWtlZmlsZS51awppbmRleCAzNGQ4YjE0Li4xYzdiMjQyIDEwMDY0NAotLS0g
YS9wbGF0L2t2bS9NYWtlZmlsZS51aworKysgYi9wbGF0L2t2bS9NYWtlZmlsZS51awpAQCAtMTks
NiArMTksNyBAQCBMSUJLVk1QTEFUX0FTSU5DTFVERVMteSAgICAgICAgKz0gLUkkKFVLX1BMQVRf
Q09NTU9OX0JBU0UpL2luY2x1ZGUKIExJQktWTVBMQVRfQ0lOQ0xVREVTLXkgICAgICAgICArPSAt
SSQoTElCS1ZNUExBVF9CQVNFKS9pbmNsdWRlCiBMSUJLVk1QTEFUX0NJTkNMVURFUy15ICAgICAg
ICAgKz0gLUkkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2luY2x1ZGUKIExJQktWTVBMQVRfQ0lOQ0xV
REVTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSAgICAgICAgICs9IC1JJChVS19QTEFUX0RSSVZFUlNf
QkFTRSkvaW5jbHVkZQorTElCS1ZNUExBVF9DSU5DTFVERVMtJChDT05GSUdfQVJDSF9BUk1fNjQp
ICAgICAgICAgKz0gLUkkKExJQk5PTElCQ19CQVNFKS9pbmNsdWRlCiAKIExJQktWTVBMQVRfQVNG
TEFHUyAgICAgICAgICAgICArPSAtREtWTVBMQVQKIExJQktWTVBMQVRfQ0ZMQUdTICAgICAgICAg
ICAgICArPSAtREtWTVBMQVQKLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDUy-000299-O3; Fri, 21 Jun 2019 06:58:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDUx-00028s-DO
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:11 +0000
X-Inumbo-ID: ee259464-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ee259464-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58: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 31CE7D75;
 Thu, 20 Jun 2019 23:58:10 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6CF803F246;
 Thu, 20 Jun 2019 23:59:55 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:38 +0800
Message-Id: <20190621065747.21031-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 02/11] plat/common/ofw:
 Move fdt_reg_read_number to header file for static inline
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2RyaXZl
cnMvaW5jbHVkZS9vZncvZmR0LmggfCAxNyArKysrKysrKysrKysrKysrLQogcGxhdC9kcml2ZXJz
L29mdy9mZHQuYyAgICAgICAgIHwgMTcgKy0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdl
ZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGxhdC9k
cml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5o
CmluZGV4IGQwMDYxNGQuLjU0Y2UwMTEgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9pbmNsdWRl
L29mdy9mZHQuaAorKysgYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS9vZncvZmR0LmgKQEAgLTkxLDcg
KzkxLDcgQEAgaW50IGZkdF9pbnRlcnJ1cHRfY2VsbHMoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9k
ZW9mZnNldCk7CiAgKiAgICAgIC1GRFRfRVJSX05PVEZPVU5ELCBpZiB0aGUgbm9kZSBkb2Vzbid0
IGhhdmUgYWRkcmVzcyBwcm9wZXJ0eQogICogICAgICAtRkRUX0VSUl9OT1NQQUNFLCBpZiB0aGUg
bm9kZSBkb2Vzbid0IGhhdmUgYWRkcmVzcyBmb3IgaW5kZXgKICAqLwotaW50IGZkdF9nZXRfYWRk
cmVzcyhjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0LCBpbnQgaW5kZXgsCitpbnQgZmR0
X2dldF9hZGRyZXNzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGVvZmZzZXQsIHVpbnQzMl90IGlu
ZGV4LAogCQkJdWludDY0X3QgKmFkZHIsIHVpbnQ2NF90ICpzaXplKTsKIAogLyoqCkBAIC0xMzMs
NCArMTMzLDE5IEBAIGludCBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0KGNvbnN0
IHZvaWQgKmZkdCwgaW50IHN0YXJ0b2Zmc2V0LAogY29uc3Qgdm9pZCAqZmR0X2dldF9pbnRlcnJ1
cHQoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9mZnNldCwKIAkJCQlpbnQgaW5kZXgsIGludCAq
c2l6ZSk7CiAKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZmR0X3JlZ19yZWFkX251bWJlcihjb25z
dCBmZHQzMl90ICpyZWdzLCB1aW50MzJfdCBzaXplKQoreworCXVpbnQ2NF90IG51bWJlciA9IDA7
CisKKwlpZiAoc2l6ZSA+PSAzIHx8IHNpemUgPD0gMCkKKwkJcmV0dXJuIC1GRFRfRVJSX0JBRE5D
RUxMUzsKKworCWZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKwkJbnVtYmVy
IDw8PSAzMjsKKwkJbnVtYmVyIHw9IGZkdDMyX3RvX2NwdSgqcmVncyk7CisJCXJlZ3MrKzsKKwl9
CisKKwlyZXR1cm4gbnVtYmVyOworfQogI2VuZGlmCmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMv
b2Z3L2ZkdC5jIGIvcGxhdC9kcml2ZXJzL29mdy9mZHQuYwppbmRleCA0NTBjZjU4Li5mZjRiY2U2
IDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvb2Z3L2ZkdC5jCisrKyBiL3BsYXQvZHJpdmVycy9v
ZncvZmR0LmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxsaWJmZHRfZW52Lmg+CiAjaW5j
bHVkZSA8ZmR0Lmg+CiAjaW5jbHVkZSA8bGliZmR0Lmg+CisjaW5jbHVkZSA8b2Z3L2ZkdC5oPgog
CiAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KIApAQCAtMTAzLDIyICsxMDQsNiBAQCBpbnQgZmR0X2lu
dGVycnVwdF9jZWxscyhjb25zdCB2b2lkICpmZHQsIGludCBvZmZzZXQpCiAJcmV0dXJuIHZhbDsK
IH0KIAotc3RhdGljIHVpbnQ2NF90IGZkdF9yZWdfcmVhZF9udW1iZXIoY29uc3QgZmR0MzJfdCAq
cmVncywgdWludDMyX3Qgc2l6ZSkKLXsKLQl1aW50NjRfdCBudW1iZXIgPSAwOwotCi0JaWYgKHNp
emUgPj0gMyB8fCBzaXplIDw9IDApCi0JCXJldHVybiAtRkRUX0VSUl9CQUROQ0VMTFM7Ci0KLQlm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0JCW51bWJlciA8PD0gMzI7Ci0J
CW51bWJlciB8PSBmZHQzMl90b19jcHUoKnJlZ3MpOwotCQlyZWdzKys7Ci0JfQotCi0JcmV0dXJu
IG51bWJlcjsKLX0KLQogLyogRGVmYXVsdCB0cmFuc2xhdG9yIChnZW5lcmljIGJ1cykgKi8KIHN0
YXRpYyB2b2lkIGZkdF9kZWZhdWx0X2NvdW50X2NlbGxzKGNvbnN0IHZvaWQgKmZkdCwgaW50IHBh
cmVudG9mZnNldCwKIAkJCQkJICAgICAgIGludCAqYWRkcmMsIGludCAqc2l6ZWMpCi0tIAoyLjE3
LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDV0-00029x-PW; Fri, 21 Jun 2019 06:58:14 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDUz-00029j-LS
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:13 +0000
X-Inumbo-ID: ef8c37fe-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ef8c37fe-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58: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 6DE72EBD;
 Thu, 20 Jun 2019 23:58:12 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id B1FDF3F246;
 Thu, 20 Jun 2019 23:59:57 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:39 +0800
Message-Id: <20190621065747.21031-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 03/11] plat/kvm/smp: Add
 psci call definitions in psci.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 <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

QWRkIHBzY2kgY2FsbCBkZWZpbml0aW9ucyBpbiBwc2NpLmgKClNpZ25lZC1vZmYtYnk6IEppYSBI
ZSA8anVzdGluLmhlQGFybS5jb20+Ci0tLQogcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vcHNjaS5o
IHwgODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs
IDg3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2NvbW1vbi9pbmNsdWRl
L2FybS9wc2NpLmgKCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9wc2NpLmgg
Yi9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9wc2NpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjhjOWQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvY29tbW9uL2luY2x1
ZGUvYXJtL3BzY2kuaApAQCAtMCwwICsxLDg3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogSmlhIEhlIDxqdXN0aW4uaGVAYXJt
LmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIEFybSBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJp
Z2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAg
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJ
RUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIF9fUExBVF9DTU5fQVJNX1BTQ0lfSF9fCisj
ZGVmaW5lIF9fUExBVF9DTU5fQVJNX1BTQ0lfSF9fCisKKy8qCisgKiBQU0NJIGZ1bmN0aW9uIGNv
ZGVzIChhcyBwZXIgUFNDSSB2MC4yKS4KKyAqLworI2lmZGVmIF9fYWFyY2g2NF9fCisjZGVmaW5l
CVBTQ0lfRk5JRF9WRVJTSU9OCQkweDg0MDAwMDAwCisjZGVmaW5lCVBTQ0lfRk5JRF9DUFVfU1VT
UEVORAkJMHhjNDAwMDAwMQorI2RlZmluZQlQU0NJX0ZOSURfQ1BVX09GRgkJMHg4NDAwMDAwMgor
I2RlZmluZQlQU0NJX0ZOSURfQ1BVX09OCQkweGM0MDAwMDAzCisjZGVmaW5lCVBTQ0lfRk5JRF9B
RkZJTklUWV9JTkZPCQkweGM0MDAwMDA0CisjZGVmaW5lCVBTQ0lfRk5JRF9NSUdSQVRFCQkweGM0
MDAwMDA1CisjZGVmaW5lCVBTQ0lfRk5JRF9NSUdSQVRFX0lORk9fVFlQRQkweDg0MDAwMDA2Cisj
ZGVmaW5lCVBTQ0lfRk5JRF9NSUdSQVRFX0lORk9fVVBfQ1BVCTB4YzQwMDAwMDcKKyNkZWZpbmUJ
UFNDSV9GTklEX1NZU1RFTV9PRkYJCTB4ODQwMDAwMDgKKyNkZWZpbmUJUFNDSV9GTklEX1NZU1RF
TV9SRVNFVAkJMHg4NDAwMDAwOQorI2RlZmluZQlQU0NJX0ZOSURfRkVBVFVSRVMJCTB4ODQwMDAw
MGEKKyNlbHNlCisjZGVmaW5lCVBTQ0lfRk5JRF9WRVJTSU9OCQkweDg0MDAwMDAwCisjZGVmaW5l
CVBTQ0lfRk5JRF9DUFVfU1VTUEVORAkJMHg4NDAwMDAwMQorI2RlZmluZQlQU0NJX0ZOSURfQ1BV
X09GRgkJMHg4NDAwMDAwMgorI2RlZmluZQlQU0NJX0ZOSURfQ1BVX09OCQkweDg0MDAwMDAzCisj
ZGVmaW5lCVBTQ0lfRk5JRF9BRkZJTklUWV9JTkZPCQkweDg0MDAwMDA0CisjZGVmaW5lCVBTQ0lf
Rk5JRF9NSUdSQVRFCQkweDg0MDAwMDA1CisjZGVmaW5lCVBTQ0lfRk5JRF9NSUdSQVRFX0lORk9f
VFlQRQkweDg0MDAwMDA2CisjZGVmaW5lCVBTQ0lfRk5JRF9NSUdSQVRFX0lORk9fVVBfQ1BVCTB4
ODQwMDAwMDcKKyNkZWZpbmUJUFNDSV9GTklEX1NZU1RFTV9PRkYJCTB4ODQwMDAwMDgKKyNkZWZp
bmUJUFNDSV9GTklEX1NZU1RFTV9SRVNFVAkJMHg4NDAwMDAwOQorI2RlZmluZQlQU0NJX0ZOSURf
RkVBVFVSRVMJCTB4ODQwMDAwMGEKKyNlbmRpZgorCitlbnVtIHBzY2lfZnVuY3Rpb24geworCVBT
Q0lfRk5fQ1BVX1NVU1BFTkQsCisJUFNDSV9GTl9DUFVfT04sCisJUFNDSV9GTl9DUFVfT0ZGLAor
CVBTQ0lfRk5fTUlHUkFURSwKKwlQU0NJX0ZOX01BWCwKK307CisKKy8qIFBTQ0kgcmV0dXJuIHZh
bHVlcyAoaW5jbHVzaXZlIG9mIGFsbCBQU0NJIHZlcnNpb25zKSAqLworI2RlZmluZSBQU0NJX1JF
VF9TVUNDRVNTCQkJMAorI2RlZmluZSBQU0NJX1JFVF9OT1RfU1VQUE9SVEVECQkJLTEKKyNkZWZp
bmUgUFNDSV9SRVRfSU5WQUxJRF9QQVJBTVMJCQktMgorI2RlZmluZSBQU0NJX1JFVF9ERU5JRUQJ
CQkJLTMKKyNkZWZpbmUgUFNDSV9SRVRfQUxSRUFEWV9PTgkJCS00CisjZGVmaW5lIFBTQ0lfUkVU
X09OX1BFTkRJTkcJCQktNQorI2RlZmluZSBQU0NJX1JFVF9JTlRFUk5BTF9GQUlMVVJFCQktNgor
I2RlZmluZSBQU0NJX1JFVF9OT1RfUFJFU0VOVAkJCS03CisjZGVmaW5lIFBTQ0lfUkVUX0RJU0FC
TEVECQkJLTgKKyNkZWZpbmUgUFNDSV9SRVRfSU5WQUxJRF9BRERSRVNTCQktOQorCisjZW5kaWYg
LyogX19QTEFUX0NNTl9BUk1fSVJRX0hfXyAqLwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDV3-0002Ao-R9; Fri, 21 Jun 2019 06:58:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDV1-0002AO-UI
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:15 +0000
X-Inumbo-ID: f0e06483-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f0e06483-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58: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 AC29213A1;
 Thu, 20 Jun 2019 23:58:14 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id EF37A3F246;
 Thu, 20 Jun 2019 23:59:59 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:40 +0800
Message-Id: <20190621065747.21031-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 04/11] plat/kvm/smp: Add
 smp definitions in smp.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 <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

QWRkIHNtcCBkZWZpbml0aW9ucyBpbiBzbXAuaApTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rp
bi5oZUBhcm0uY29tPgotLS0KIHBsYXQvY29tbW9uL2luY2x1ZGUvc21wLmggfCA0MiArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MiBpbnNl
cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24vaW5jbHVkZS9zbXAuaAoK
ZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvc21wLmggYi9wbGF0L2NvbW1vbi9pbmNs
dWRlL3NtcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZjgwMWQKLS0t
IC9kZXYvbnVsbAorKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRlL3NtcC5oCkBAIC0wLDAgKzEsNDIg
QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBB
dXRob3JzOiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgorICoKKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgQXJtIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisjaWZuZGVm
IF9fUExBVF9DTU5fU01QX0hfXworI2RlZmluZSBfX1BMQVRfQ01OX1NNUF9IX18KKworI2RlZmlu
ZQlNQVhDUFUJCTggLyogaGFyZCBsaW1pdGF0aW9uIGZvciBDUFUgbnVtYmVyICovCitleHRlcm4g
aW50IGNwdV9wb3NzaWJsZV9tYXBbTUFYQ1BVXTsKKwordm9pZCByZWxlYXNlX2Fwcyh2b2lkKTsK
K2ludCBzdGFydF9jcHUodWludDY0X3QgdGFyZ2V0X2NwdSk7CisjZW5kaWYgLyogX19QTEFUX0NN
Tl9TTVBfSF9fICovCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDV5-0002BU-Sp; Fri, 21 Jun 2019 06:58:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDV4-0002B3-0n
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:18 +0000
X-Inumbo-ID: f244f539-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f244f539-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58:17 +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 0300013D5;
 Thu, 20 Jun 2019 23:58:17 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 38A4E3F246;
 Fri, 21 Jun 2019 00:00:02 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:41 +0800
Message-Id: <20190621065747.21031-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 05/11] plat/kvm/smp: Add
 psci call psci_cpu_on
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

QWRkIHBzY2kgY2FsbCBwc2NpX2NwdV9vbgoKU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4u
aGVAYXJtLmNvbT4KLS0tCiBwbGF0L2t2bS9hcm0vc2V0dXAuYyB8IDYgKysrKysrCiAxIGZpbGUg
Y2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL3NldHVw
LmMgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwppbmRleCA2MTI1YTMwLi4xZjZlNDU4IDEwMDY0NAot
LS0gYS9wbGF0L2t2bS9hcm0vc2V0dXAuYworKysgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwpAQCAt
NDEsNiArNDEsMTIgQEAgc21jY19wc2NpX2NhbGxmbl90IHNtY2NfcHNjaV9jYWxsOwogZXh0ZXJu
IHZvaWQgX2xpYmt2bXBsYXRfbmV3c3RhY2sodWludDY0X3Qgc3RhY2tfc3RhcnQsCiAJCQl2b2lk
ICgqdHJhbXApKHZvaWQgKiksIHZvaWQgKmFyZyk7CiAKK2ludCBwc2NpX2NwdV9vbih1bnNpZ25l
ZCBsb25nIGNwdSwgdW5zaWduZWQgbG9uZyBlbnRyeSkKK3sKKwkvKiBQU0NJIHYwLjEgYW5kIHYw
LjIgYm90aCBzdXBwb3J0IGNwdV9vbi4gKi8KKwlyZXR1cm4gc21jY19wc2NpX2h2Y19jYWxsKFBT
Q0lfRk5JRF9DUFVfT04sIGNwdSwgZW50cnksIGNwdSk7Cit9CisKIHN0YXRpYyB2b2lkIF9pbml0
X2R0Yih2b2lkICpkdGJfcG9pbnRlcikKIHsKIAlpbnQgcmV0OwotLSAKMi4xNy4xCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDV6-0002C1-UF; Fri, 21 Jun 2019 06:58:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDV6-0002Bn-8Y
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:20 +0000
X-Inumbo-ID: f39ba7b0-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f39ba7b0-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58: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 4B7061424;
 Thu, 20 Jun 2019 23:58:19 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 847043F246;
 Fri, 21 Jun 2019 00:00:04 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:42 +0800
Message-Id: <20190621065747.21031-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 06/11] plat/kvm: arm64:
 Add a parameter to start_mmu
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

VGhpcyBpcyB0byBieXBhc3MgaW52YWxpZGF0ZSBhbmQgY2xlYW4gcGd0YWJsZSBELWNhY2hlLiBU
aGlzIGlzIG5vdApyZXF1aXJlZCB3aGVuIEFQcyBhcmUgYm9vdGluZyB1cC4KClNpZ25lZC1vZmYt
Ynk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Ci0tLQogcGxhdC9rdm0vYXJtL2VudHJ5NjQu
UyAgICAgfCAxICsKIHBsYXQva3ZtL2FybS9wYWdldGFibGU2NC5TIHwgNyArKysrKystCiAyIGZp
bGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh
L3BsYXQva3ZtL2FybS9lbnRyeTY0LlMgYi9wbGF0L2t2bS9hcm0vZW50cnk2NC5TCmluZGV4IGZm
NjNlZTAuLmRmNTllZjYgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMKKysrIGIv
cGxhdC9rdm0vYXJtL2VudHJ5NjQuUwpAQCAtMTI1LDYgKzEyNSw3IEBAIEVOVFJZKF9saWJrdm1w
bGF0X2VudHJ5KQogCW1zciBWQkFSX0VMMSwgeDI5CiAKIAkvKiBFbmFibGUgdGhlIG1tdSAqLwor
CW1vdiB4NywgIzAKIAlibCBzdGFydF9tbXUKIAogCS8qIExvYWQgZHRiIGFkZHJlc3MgdG8geDAg
YXMgYSBwYXJhbWV0ZXIgKi8KZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9wYWdldGFibGU2NC5T
IGIvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKaW5kZXggNzg5OWMxOS4uYWJiMDI0ZiAxMDA2
NDQKLS0tIGEvcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL3Bh
Z2V0YWJsZTY0LlMKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx1ay9hc20uaD4KICNpbmNs
dWRlIDxrdm0tYXJtL21tLmg+CiAjaW5jbHVkZSA8YXJtL2NwdV9kZWZzLmg+CisjaW5jbHVkZSA8
dWsvY29uZmlnLmg+CisKIC8qCiAgKiBUaGUgZm9sbG93aW5nIGlzIHRoZSBNZW1vcnkgTGF5b3V0
IG9mIEFBcmNoNjQgVmlydHVhbCBNYWNoaW5lCiAgKiB8IDAgLSAweDNGRkZGRkZGIHwgICAweDQw
MDAwMDAwIC0gMHg3RkZGRkZGRkZGICAgICAgICAgICB8ICA1MTJHQiAtIDFUQiAgIHwKQEAgLTIz
NCw2ICsyMzYsOSBAQCBFTlRSWShzdGFydF9tbXUpCiAJYmZpIHgyLCB4MywgIzMyLCAjMwogCW1z
ciB0Y3JfZWwxLCB4MgogCisJY21wIHg3LCAjMQorCWJlcSAxZgorCiAJLyogc2F2ZSBsciAqLwog
CW1vdiB4MjIsIHgzMAogCkBAIC0yNjIsNyArMjY3LDcgQEAgRU5UUlkoc3RhcnRfbW11KQogCiAJ
LyogcmVzdG9yZSBsciAqLwogCW1vdiB4MzAsIHgyMgotCisxOgogCXJldAogRU5EKHN0YXJ0X21t
dSkKIAotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv
L21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1heDVB-0002DN-W1; Fri, 21 Jun 2019 06:58: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=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDVA-0002D2-VJ
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:24 +0000
X-Inumbo-ID: f5041f1c-93f1-11e9-b331-2ff8f6791768
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id f5041f1c-93f1-11e9-b331-2ff8f6791768;
 Fri, 21 Jun 2019 06:58:21 +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 95A79142F;
 Thu, 20 Jun 2019 23:58:21 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id CA97D3F246;
 Fri, 21 Jun 2019 00:00:06 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:43 +0800
Message-Id: <20190621065747.21031-8-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 07/11] plat/kvm: arm64:
 Add entry point for APs (secondary cpus)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2t2bS9h
cm0vZW50cnk2NC5TIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUg
Y2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9lbnRy
eTY0LlMgYi9wbGF0L2t2bS9hcm0vZW50cnk2NC5TCmluZGV4IGRmNTllZjYuLjljOTgxMDIgMTAw
NjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL2VudHJ5
NjQuUwpAQCAtMTQzLDMgKzE0MywzMyBAQCBFTlRSWShfbGlia3ZtcGxhdF9uZXdzdGFjaykKIAkv
KiBCcmFuY2ggdG8gX2xpYmt2bXBsYXRfZW50cnkyICovCiAJYnIgeDEKIEVORChfbGlia3ZtcGxh
dF9uZXdzdGFjaykKKworLyoKKyAqIG1wZW50cnkodW5zaWduZWQgbG9uZykKKyAqCisgKiBDYWxs
ZWQgYnkgYSBjb3JlIHdoZW4gaXQgaXMgYmVpbmcgYnJvdWdodCBvbmxpbmUuCisgKiBUaGUgZGF0
YSBpbiB4MCBpcyBwYXNzZWQgc3RyYWlnaHQgdG8gaW5pdF9zZWNvbmRhcnkuCisgKi8KK0VOVFJZ
KG1wZW50cnkpCisJLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovCisJbXNyCWRhaWZzZXQsICMyCisK
KwkvKiBTZXQgdGhlIGNvbnRleHQgaWQgKi8KKwltc3IJY29udGV4dGlkcl9lbDEsIHh6cgorCisJ
LyogRW5hYmxlIHRoZSBtbXUgKi8KKwltb3YgeDcsICMxCisJYmwJc3RhcnRfbW11CisKKwkvKiBK
dW1wIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgKi8KKwlsZHIJeDE1LCA9bXBfdmlydGRv
bmUKKwlicgl4MTUKKworbXBfdmlydGRvbmU6CisJbGRyCXg0LCA9c2Vjb25kYXJ5X3N0YWNrcwor
CW1vdgl4NSwgIyg0MDk2ICogNCkvL1RPRE8KKwltdWwJeDUsIHgwLCB4NQorCWFkZAlzcCwgeDQs
IHg1CisKKwliCWluaXRfc2Vjb25kYXJ5CitFTkQobXBlbnRyeSkKLS0gCjIuMTcuMQoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDVE-0002EL-1u; Fri, 21 Jun 2019 06:58:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDVD-0002E0-JF
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:27 +0000
X-Inumbo-ID: f79e47c4-93f1-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f79e47c4-93f1-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 06:58:26 +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 1AB08147A;
 Thu, 20 Jun 2019 23:58:26 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5C04B3F246;
 Fri, 21 Jun 2019 00:00:11 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:45 +0800
Message-Id: <20190621065747.21031-10-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 09/11] plat/kvm/arm: Add
 simple percpu variable support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2NvbW1v
bi9pbmNsdWRlL3NtcC5oIHwgIDcgKysrKysrKwogcGxhdC9rdm0vYXJtL3NldHVwLmMgICAgICB8
IDIyICsrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u
cygrKQoKZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvc21wLmggYi9wbGF0L2NvbW1v
bi9pbmNsdWRlL3NtcC5oCmluZGV4IDM4ZjgwMWQuLjE1YmI5MmQgMTAwNjQ0Ci0tLSBhL3BsYXQv
Y29tbW9uL2luY2x1ZGUvc21wLmgKKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9zbXAuaApAQCAt
MzQsOCArMzQsMTUgQEAKICNpZm5kZWYgX19QTEFUX0NNTl9TTVBfSF9fCiAjZGVmaW5lIF9fUExB
VF9DTU5fU01QX0hfXwogCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KK3N0cnVjdCBwY3B1IHsKKwl1
aW50MzJfdAlwY19jcHVpZDsJLyogVGhpcyBjcHUgbnVtYmVyICovCit9OworCiAjZGVmaW5lCU1B
WENQVQkJOCAvKiBoYXJkIGxpbWl0YXRpb24gZm9yIENQVSBudW1iZXIgKi8KIGV4dGVybiBpbnQg
Y3B1X3Bvc3NpYmxlX21hcFtNQVhDUFVdOworc3RydWN0IHBjcHUgX19wY3B1W01BWENQVV07Citz
dHJ1Y3QgcGNwdSAqcGNwdXAgPSAmX19wY3B1WzBdOwogCiB2b2lkIHJlbGVhc2VfYXBzKHZvaWQp
OwogaW50IHN0YXJ0X2NwdSh1aW50NjRfdCB0YXJnZXRfY3B1KTsKZGlmZiAtLWdpdCBhL3BsYXQv
a3ZtL2FybS9zZXR1cC5jIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKaW5kZXggNDAzNTIwMi4uYjI2
MmQ5NCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vYXJtL3NldHVwLmMKKysrIGIvcGxhdC9rdm0vYXJt
L3NldHVwLmMKQEAgLTMzMCw2ICszMzAsMTcgQEAgdm9pZCBpbml0X3NlY29uZGFyeSh1aW50NjRf
dCBjcHUpCiAKIAl1a19wcl9pbmZvKCJpbml0IHNlY29uZGFyeSBjcHU9JWx1XG4iLCBjcHUpOwog
CisJLyoKKwkgKiBTZXQgdGhlIHBjcHUgcG9pbnRlciB3aXRoIGEgYmFja3VwIGluIHRwaWRyX2Vs
MSB0byBiZQorCSAqIGxvYWRlZCB3aGVuIGVudGVyaW5nIHRoZSBrZXJuZWwgZnJvbSB1c2VybGFu
ZC4KKwkgKi8KKwlfX2FzbSBfX3ZvbGF0aWxlKAorCQkibW92IHgxOCwgJTBcbiIKKwkJIm1zciB0
cGlkcl9lbDEsICUwIiA6OiAiciIocGNwdXApKTsKKworCXBjcHVwW2NwdV0ucGNfY3B1aWQgPSBj
cHU7CisJdWtfcHJfaW5mbygicGNwdXBbJWx1XT0ldVxuIiwgY3B1LCBwY3B1cFtjcHVdLnBjX2Nw
dWlkKTsKKwogCS8qIFNwaW4gdW50aWwgdGhlIEJTUCByZWxlYXNlcyB0aGUgQVBzICovCiAJd2hp
bGUgKCFhcHNfcmVhZHkpCiAJCV9fYXNtIF9fdm9sYXRpbGUoIndmZSIpOwpAQCAtNDA4LDYgKzQx
OSwxNyBAQCB2b2lkIF9saWJrdm1wbGF0X3N0YXJ0KHZvaWQgKmR0Yl9wb2ludGVyKQogCXVrX3By
X2luZm8oIlN3aXRjaCBmcm9tIGJvb3RzdHJhcCBzdGFjayB0byBzdGFjayBAJXBcbiIsCiAJCSAg
IF9saWJrdm1wbGF0X3N0YWNrX3RvcCk7CiAKKwkvKiBTZXQgdGhlIHBjcHUgZGF0YSwgdGhpcyBp
cyBuZWVkZWQgYnkgcG1hcF9ib290c3RyYXAgKi8KKwlwY3B1cCA9ICZfX3BjcHVbMF07CisKKwkv
KgorCSAqIFNldCB0aGUgcGNwdSBwb2ludGVyIHdpdGggYSBiYWNrdXAgaW4gdHBpZHJfZWwxIHRv
IGJlCisJICogbG9hZGVkIHdoZW4gZW50ZXJpbmcgdGhlIGtlcm5lbCBmcm9tIHVzZXJsYW5kLgor
CSAqLworCV9fYXNtIF9fdm9sYXRpbGUoCisJCSJtb3YgeDE4LCAlMFxuIgorCQkibXNyIHRwaWRy
X2VsMSwgJTAiIDo6ICJyIihwY3B1cCkpOworCiAJX2xpYmt2bXBsYXRfbmV3c3RhY2soKHVpbnQ2
NF90KSBfbGlia3ZtcGxhdF9zdGFja190b3AsCiAJCQkJX2xpYmt2bXBsYXRfZW50cnkyLCBOVUxM
KTsKIH0KLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06: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 1heDVH-0002FE-3Z; Fri, 21 Jun 2019 06:58: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=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDVF-0002Ex-Tx
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:29 +0000
X-Inumbo-ID: f6545bd4-93f1-11e9-8e90-bf6c9a69a6d8
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id f6545bd4-93f1-11e9-8e90-bf6c9a69a6d8;
 Fri, 21 Jun 2019 06:58:24 +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 CF5B71478;
 Thu, 20 Jun 2019 23:58:23 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1EAFA3F246;
 Fri, 21 Jun 2019 00:00:08 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:44 +0800
Message-Id: <20190621065747.21031-9-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 08/11] plat/kvm/arm:
 Implement smp boot 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>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBsaWIvdWtib290
L01ha2VmaWxlLnVrIHwgICAxICsKIGxpYi91a2Jvb3QvYm9vdC5jICAgICAgfCAgMTUgKysrKwog
cGxhdC9rdm0vYXJtL3NldHVwLmMgICB8IDE4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAt
LWdpdCBhL2xpYi91a2Jvb3QvTWFrZWZpbGUudWsgYi9saWIvdWtib290L01ha2VmaWxlLnVrCmlu
ZGV4IDU1ZjIwNWQuLmM4ZTBiNDQgMTAwNjQ0Ci0tLSBhL2xpYi91a2Jvb3QvTWFrZWZpbGUudWsK
KysrIGIvbGliL3VrYm9vdC9NYWtlZmlsZS51awpAQCAtMSw2ICsxLDcgQEAKICQoZXZhbCAkKGNh
bGwgYWRkbGliX3MsbGlidWtib290LCQoQ09ORklHX0xJQlVLQk9PVCkpKQogCiBDSU5DTFVERVMt
JChDT05GSUdfTElCVUtCT09UKQkJKz0gLUkkKExJQlVLQk9PVF9CQVNFKS9pbmNsdWRlCitDSU5D
TFVERVMtJChDT05GSUdfTElCVUtCT09UKQkJKz0gLUkkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2lu
Y2x1ZGUKIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLQk9PVCkJKz0gLUkkKExJQlVLQk9PVF9C
QVNFKS9pbmNsdWRlCiAKIExJQlVLQk9PVF9TUkNTLXkgKz0gJChMSUJVS0JPT1RfQkFTRSkvYm9v
dC5jCmRpZmYgLS1naXQgYS9saWIvdWtib290L2Jvb3QuYyBiL2xpYi91a2Jvb3QvYm9vdC5jCmlu
ZGV4IDQ4NDY3ODIuLmQ0ZDQ5YzEgMTAwNjQ0Ci0tLSBhL2xpYi91a2Jvb3QvYm9vdC5jCisrKyBi
L2xpYi91a2Jvb3QvYm9vdC5jCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8ZXJybm8uaD4KIAorI2lmIENPTkZJR19TTVAKKyNpbmNsdWRlIDxzbXAuaD4K
KyNlbmRpZgorCiAjaWYgQ09ORklHX0xJQlVLQUxMT0MgJiYgQ09ORklHX0xJQlVLQUxMT0NCQlVE
RFkgJiYgQ09ORklHX0xJQlVLQk9PVF9JTklUQUxMT0MKICNpbmNsdWRlIDx1ay9hbGxvY2JidWRk
eS5oPgogI2VuZGlmCkBAIC0yNTUsNiArMjU5LDE3IEBAIHZvaWQgdWtwbGF0X2VudHJ5KGludCBh
cmdjLCBjaGFyICphcmd2W10pCiAJdG1hLmFyZ2MgPSBhcmdjOwogCXRtYS5hcmd2ID0gYXJndjsK
IAorI2lmIENPTkZJR19TTVAKKwl1a19wcl9pbmZvKCJiZWZvcmUgc3RhcnQgY3B1XG4iKTsKKwor
CWZvciAoaSA9IDE7IGkgPCBNQVhDUFU7IGkrKykgeworCQlpZiAoY3B1X3Bvc3NpYmxlX21hcFtp
XSAhPSAtMSkKKwkJCXN0YXJ0X2NwdShjcHVfcG9zc2libGVfbWFwW2ldKTsKKwl9CisKKwlyZWxl
YXNlX2FwcygpOworI2VuZGlmCisKICNpZiBDT05GSUdfTElCVUtTQ0hFRAogCW1haW5fdGhyZWFk
ID0gdWtfdGhyZWFkX2NyZWF0ZSgibWFpbiIsIG1haW5fdGhyZWFkX2Z1bmMsICZ0bWEpOwogCWlm
ICh1bmxpa2VseSghbWFpbl90aHJlYWQpKQpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vYXJtL3NldHVw
LmMgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwppbmRleCAxZjZlNDU4Li40MDM1MjAyIDEwMDY0NAot
LS0gYS9wbGF0L2t2bS9hcm0vc2V0dXAuYworKysgYi9wbGF0L2t2bS9hcm0vc2V0dXAuYwpAQCAt
MjcsNiArMjcsMjkgQEAKICNpbmNsdWRlIDxhcm0vY3B1Lmg+CiAjaW5jbHVkZSA8dWsvYXJjaC9s
aW1pdHMuaD4KIAorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDx1ay9wbGF0L2Jvb3Rz
dHJhcC5oPgorI2luY2x1ZGUgPHVrL3NjaGVkLmg+CisKKyNpbmNsdWRlIDxzbXAuaD4KKyNpbmNs
dWRlIDx1ay9wbGF0L21lbW9yeS5oPgorI2luY2x1ZGUgPHVrL3BsYXQvaW8uaD4KKyNpbmNsdWRl
IDx1ay9wbGF0L2xjcHUuaD4KKyNpbmNsdWRlIDxhcm0vcHNjaS5oPgorI2luY2x1ZGUgPG9mdy9m
ZHQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNpZmRlZiBDT05GSUdfU01QCitpbnQgYXBzX3Jl
YWR5OworaW50IHNtcF9zdGFydGVkOworaW50IG1wX25jcHVzOworaW50IHNtcF9jcHVzID0gMTsJ
LyogaG93IG1hbnkgY3B1J3MgcnVubmluZyAqLwordm9pZCBtcGVudHJ5KHZvaWQpOwordWludDhf
dCBzZWNvbmRhcnlfc3RhY2tzW01BWENQVSAtIDFdW19fUEFHRV9TSVpFICogNF07CitpbnQgY3B1
X3Bvc3NpYmxlX21hcFtNQVhDUFVdOworc3RhdGljIGludCBjcHUwID0gLTE7CisjZW5kaWYKKwog
dm9pZCAqX2xpYmt2bXBsYXRfcGFnZXRhYmxlOwogdm9pZCAqX2xpYmt2bXBsYXRfaGVhcF9zdGFy
dDsKIHZvaWQgKl9saWJrdm1wbGF0X3N0YWNrX3RvcDsKQEAgLTE5MSw2ICsyMTQsMTYwIEBAIHN0
YXRpYyB2b2lkIF9saWJrdm1wbGF0X2VudHJ5Mih2b2lkICphcmcgX19hdHRyaWJ1dGVfXygodW51
c2VkKSkpCiAJdWtwbGF0X2VudHJ5X2FyZ3AoTlVMTCwgKGNoYXIgKiljbWRsaW5lLCBzdHJsZW4o
Y21kbGluZSkpOwogfQogCitzdGF0aWMgdm9pZCBfaW5pdF9kdGJfY3B1KHZvaWQpCit7CisJaW50
IGZkdF9jcHU7CisJaW50IG5hZGRyLCBuc2l6ZTsKKwl1aW50NjRfdCBjb3JlX2lkLCBpbmRleDsK
KwlpbnQgc3Vibm9kZTsKKwlpbnQgaTsKKworCS8qIEluaXQgdGhlIGNwdV9wb3NzaWJsZV9tYXAg
Ki8KKwlmb3IgKGkgPSAwOyBpIDwgTUFYQ1BVOyBpKyspCisJCWNwdV9wb3NzaWJsZV9tYXBbaV0g
PSAtMTsKKworCS8qIFNlYXJjaCBmb3IgYXNzaWduZWQgVk0gY3B1cyBpbiBEVEIgKi8KKwlmZHRf
Y3B1ID0gZmR0X3BhdGhfb2Zmc2V0KF9saWJrdm1wbGF0X2R0YiwgIi9jcHVzIik7CisJaWYgKGZk
dF9jcHUgPCAwKQorCQl1a19wcl93YXJuKCJjcHVzIG5vZGUgaXMgbm90IGZvdW5kIGluIGRldmlj
ZSB0cmVlXG4iKTsKKworCS8qIEdldCBhZGRyZXNzLHNpemUgY2VsbCAqLworCW5hZGRyID0gZmR0
X2FkZHJlc3NfY2VsbHMoX2xpYmt2bXBsYXRfZHRiLCBmZHRfY3B1KTsKKwlpZiAobmFkZHIgPCAw
IHx8IG5hZGRyID49IEZEVF9NQVhfTkNFTExTKSB7CisJCVVLX0NSQVNIKCJDb3VsZCBub3QgZmlu
ZCBjcHUgYWRkcmVzcyFcbiIpOworCQlyZXR1cm47CisJfQorCW5zaXplID0gZmR0X3NpemVfY2Vs
bHMoX2xpYmt2bXBsYXRfZHRiLCBmZHRfY3B1KTsKKwlpZiAobnNpemUgPCAwIHx8IG5zaXplID49
IEZEVF9NQVhfTkNFTExTKSB7CisJCVVLX0NSQVNIKCJDb3VsZCBub3QgZmluZCBjcHUgc2l6ZSFc
biIpOworCQlyZXR1cm47CisJfQorCisJLyogU2VhcmNoIGFsbCB0aGUgY3B1IG5vZGVzIGluIERU
QiAqLworCWluZGV4ID0gMDsKKwlmZHRfZm9yX2VhY2hfc3Vibm9kZShzdWJub2RlLCBfbGlia3Zt
cGxhdF9kdGIsIGZkdF9jcHUpIHsKKwkJY29uc3Qgc3RydWN0IGZkdF9wcm9wZXJ0eSAqcHJvcDsK
KwkJaW50IHByb3BfbGVuID0gMDsKKworCQlpbmRleCsrOworCisJCXByb3AgPSBmZHRfZ2V0X3By
b3BlcnR5KF9saWJrdm1wbGF0X2R0Yiwgc3Vibm9kZSwKKwkJCQkJCSJlbmFibGUtbWV0aG9kIiwg
TlVMTCk7CisJCWlmICghcHJvcCB8fCBzdHJjbXAocHJvcC0+ZGF0YSwgInBzY2kiKSkgeworCQkJ
dWtfcHJfZXJyKCJPbmx5IHN1cHBvcnQgcHNjaSBtZXRob2QhKCVzKVxuIiwKKwkJCQkJcHJvcC0+
ZGF0YSk7CisJCQlyZXR1cm47CisJCX0KKworCQlwcm9wID0gZmR0X2dldF9wcm9wZXJ0eShfbGli
a3ZtcGxhdF9kdGIsIHN1Ym5vZGUsCisJCQkJCQkiZGV2aWNlX3R5cGUiLCAmcHJvcF9sZW4pOwor
CQlpZiAoIXByb3ApCisJCQljb250aW51ZTsKKwkJaWYgKHByb3BfbGVuIDwgNCkKKwkJCWNvbnRp
bnVlOworCQlpZiAoc3RyY21wKHByb3AtPmRhdGEsICJjcHUiKSkKKwkJCWNvbnRpbnVlOworCisJ
CXByb3AgPSBmZHRfZ2V0X3Byb3BlcnR5KF9saWJrdm1wbGF0X2R0Yiwgc3Vibm9kZSwKKwkJCQkJ
CSJyZWciLCAmcHJvcF9sZW4pOworCQlpZiAocHJvcCA9PSBOVUxMIHx8IHByb3BfbGVuIDw9IDAp
IHsKKwkJCXVrX3ByX2VycigiRXJyb3Igd2hlbiBzZWFyY2hpbmcgcmVnIHByb3BlcnR5XG4iKTsK
KwkJCXJldHVybjsKKwkJfQorCisJCWNvcmVfaWQgPSBmZHRfcmVnX3JlYWRfbnVtYmVyKChjb25z
dCBmZHQzMl90ICopcHJvcC0+ZGF0YSwKKwkJCQkJCW5hZGRyKTsKKwkJY3B1X3Bvc3NpYmxlX21h
cFtpbmRleC0xXSA9IGNvcmVfaWQ7CisJCW1wX25jcHVzKys7CisJfQorfQorCit2b2lkIHJlbGVh
c2VfYXBzKHZvaWQpCit7CisJaW50IGksIHN0YXJ0ZWQ7CisKKwkvKiBPbmx5IHJlbGVhc2UgQ1BV
cyBpZiB0aGV5IGV4aXN0ICovCisJaWYgKG1wX25jcHVzID09IDEpCisJCXJldHVybjsKKworCS8v
VE9ETzogbWFrZSBhcHNfcmVhZHkgYXRvbWljCisJYXBzX3JlYWR5ID0gMTsKKworCS8qIFdha2Ug
dXAgdGhlIG90aGVyIENQVXMgKi8KKwlfX2FzbSBfX3ZvbGF0aWxlKAorCQkiZHNiIGlzaHN0CVxu
IgorCQkic2V2CQlcbiIKKwkJOjo6ICJtZW1vcnkiKTsKKworCXVrX3ByX2luZm8oIlJlbGVhc2Ug
QVBzLi4uIik7CisKKwlzdGFydGVkID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgMjAwMDA7IGkrKykg
eworCQlpZiAoc21wX3N0YXJ0ZWQpIHsKKwkJCXVrX3ByX2luZm8oImRvbmVcbiIpOworCQkJcmV0
dXJuOworCQl9CisJCS8qCisJCSAqIERvbid0IHRpbWUgb3V0IHdoaWxlIHdlIGFyZSBtYWtpbmcg
cHJvZ3Jlc3MuIFNvbWUgbGFyZ2UKKwkJICogc3lzdGVtcyBjYW4gdGFrZSBhIHdoaWxlIHRvIHN0
YXJ0IGFsbCBDUFVzLgorCQkgKi8KKwkJaWYgKHNtcF9jcHVzID4gc3RhcnRlZCkgeworCQkJaSA9
IDA7CisJCQlzdGFydGVkID0gc21wX2NwdXM7CisJCX0KKworCQl1a19wcl9pbmZvKCJzbGVlcCBm
b3IgYSB3aGlsZVxuIik7CisJCW1kZWxheSgxKTsKKwl9CisKKwl1a19wcl9lcnIoIkFQcyBub3Qg
c3RhcnRlZFxuIik7Cit9CisKK3ZvaWQgaW5pdF9zZWNvbmRhcnkodWludDY0X3QgY3B1KQorewor
CXN0cnVjdCB1a19zY2hlZCAqcyA9IE5VTEw7CisJc3RydWN0IHVrX2FsbG9jICphID0gTlVMTDsK
KworCXVrX3ByX2luZm8oImluaXQgc2Vjb25kYXJ5IGNwdT0lbHVcbiIsIGNwdSk7CisKKwkvKiBT
cGluIHVudGlsIHRoZSBCU1AgcmVsZWFzZXMgdGhlIEFQcyAqLworCXdoaWxlICghYXBzX3JlYWR5
KQorCQlfX2FzbSBfX3ZvbGF0aWxlKCJ3ZmUiKTsKKwl1a19wcl9pbmZvKCJhZnRlciB3ZmUgY3B1
PSVsdVxuIiwgY3B1KTsKKworCXNtcF9jcHVzICs9IDE7CisKKwlpZiAoc21wX2NwdXMgPT0gbXBf
bmNwdXMpCisJCXNtcF9zdGFydGVkID0gMTsKK30KKwordm9pZCBzdGFydF9jcHUodWludDY0X3Qg
dGFyZ2V0X2NwdSkKK3sKKworCXVpbnQzMl90IHBhOworCWludCBlcnI7CisKKwkvKiBDaGVjayB3
ZSBhcmUgYWJsZSB0byBzdGFydCB0aGlzIGNwdSAqLworCVVLX0FTU0VSVCh0YXJnZXRfY3B1IDwg
TUFYQ1BVKTsKKworCXVrX3ByX2luZm8oIlN0YXJ0aW5nIENQVSAlbHVcbiIsIHRhcmdldF9jcHUp
OworCisJLyogV2UgYXJlIGFscmVhZHkgcnVubmluZyBvbiBjcHUgMCAqLworCWlmICh0YXJnZXRf
Y3B1ID09ICh1aW50NjRfdCljcHUwKQorCQlyZXR1cm47CisKKwlwYSA9IHVrcGxhdF92aXJ0X3Rv
X3BoeXMobXBlbnRyeSk7CisJZXJyID0gcHNjaV9jcHVfb24odGFyZ2V0X2NwdSwgcGEpOworCWlm
IChlcnIgIT0gUFNDSV9SRVRfU1VDQ0VTUykgeworCQltcF9uY3B1cy0tOworCisJCS8qIE5vdGlm
eSB0aGUgdXNlciB0aGF0IHRoZSBDUFUgZmFpbGVkIHRvIHN0YXJ0ICovCisJCXVrX3ByX2luZm8o
IkZhaWxlZCB0byBzdGFydCBDUFUgKCVseClcbiIsIHRhcmdldF9jcHUpOworCX0KKworCXVrX3By
X2luZm8oIlN0YXJ0aW5nIENQVSAlbHUgc3VjY2Vzc2Z1bGx5XG4iLCB0YXJnZXRfY3B1KTsKK30K
Kwogdm9pZCBfbGlia3ZtcGxhdF9zdGFydCh2b2lkICpkdGJfcG9pbnRlcikKIHsKIAlfaW5pdF9k
dGIoZHRiX3BvaW50ZXIpOwpAQCAtMjE0LDYgKzM5MSwxNyBAQCB2b2lkIF9saWJrdm1wbGF0X3N0
YXJ0KHZvaWQgKmR0Yl9wb2ludGVyKQogCXVrX3ByX2luZm8oIiAgICAgaGVhcCBzdGFydDogJXBc
biIsIF9saWJrdm1wbGF0X2hlYXBfc3RhcnQpOwogCXVrX3ByX2luZm8oIiAgICAgIHN0YWNrIHRv
cDogJXBcbiIsIF9saWJrdm1wbGF0X3N0YWNrX3RvcCk7CiAKKwlfaW5pdF9kdGJfY3B1KCk7CisK
KwlpZiAoY3B1MCA8IDApIHsKKwkJdWludDY0X3QgbXBpZHJfcmVnID0gU1lTUkVHX1JFQUQzMiht
cGlkcl9lbDEpOworCisJCXVrX3ByX2luZm8oImdldCBtcGlkcl9lbDEgMHglbHhcbiIsIG1waWRy
X3JlZyk7CisKKwkJaWYgKChtcGlkcl9yZWcgJiAweGZmMDBmZmZmZmZ1bCkgPT0gMCkKKwkJCWNw
dTAgPSAwOworCX0KKwogCS8qCiAJICogU3dpdGNoIGF3YXkgZnJvbSB0aGUgYm9vdHN0cmFwIHN0
YWNrIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgogCSAqLwotLSAKMi4xNy4xCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58: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 1heDVI-0002Fp-5J; Fri, 21 Jun 2019 06:58:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDVH-0002FD-5O
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:31 +0000
X-Inumbo-ID: f9070f98-93f1-11e9-a509-e7ba8fe46428
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id f9070f98-93f1-11e9-a509-e7ba8fe46428;
 Fri, 21 Jun 2019 06:58:28 +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 6182214F6;
 Thu, 20 Jun 2019 23:58:28 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 9B06D3F246;
 Fri, 21 Jun 2019 00:00:13 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:46 +0800
Message-Id: <20190621065747.21031-11-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 10/11] lib/ukboot: Enable
 CONFIG_SMP for arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBsaWIvdWtib290
L0NvbmZpZy51ayB8IDUgKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKCmRp
ZmYgLS1naXQgYS9saWIvdWtib290L0NvbmZpZy51ayBiL2xpYi91a2Jvb3QvQ29uZmlnLnVrCmlu
ZGV4IDg0MWE4NzYuLjE2YWI3MjMgMTAwNjQ0Ci0tLSBhL2xpYi91a2Jvb3QvQ29uZmlnLnVrCisr
KyBiL2xpYi91a2Jvb3QvQ29uZmlnLnVrCkBAIC0yMSw0ICsyMSw5IEBAIGlmIExJQlVLQk9PVAog
CWJvb2wgIkluaXRpYWxpemUgdWthbGxvY2JidWRkeSBhcyBhbGxvY2F0b3IiCiAJZGVmYXVsdCB5
CiAJc2VsZWN0IExJQlVLQUxMT0NCQlVERFkKKworCWNvbmZpZyBTTVAKKwlib29sICJTdXBwb3J0
IFNNUCIKKwlkZWZhdWx0IHkKKwlkZXBlbmRzIG9uIEFSQ0hfQVJNXzY0CiBlbmRpZgotLSAKMi4x
Ny4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 06:58:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 06:58:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1heDVL-0002Gi-7D; Fri, 21 Jun 2019 06:58: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=rvR9=UU=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1heDVK-0002GS-Cm
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 06:58:34 +0000
X-Inumbo-ID: fa5e14fe-93f1-11e9-ba92-0f9dce65a545
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id fa5e14fe-93f1-11e9-ba92-0f9dce65a545;
 Fri, 21 Jun 2019 06:58:30 +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 AEB1E14FF;
 Thu, 20 Jun 2019 23:58:30 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E2D8A3F246;
 Fri, 21 Jun 2019 00:00:15 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 21 Jun 2019 14:57:47 +0800
Message-Id: <20190621065747.21031-12-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
References: <20190621065747.21031-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT early RFC PATCH 11/11] plat/kvm/arm:
 Enable scheduler on secondary APs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

U2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2t2bS9h
cm0vc2V0dXAuYyB8IDE3ICsrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5z
ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9zZXR1cC5jIGIvcGxhdC9rdm0v
YXJtL3NldHVwLmMKaW5kZXggYjI2MmQ5NC4uYWM2Nzk4OCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0v
YXJtL3NldHVwLmMKKysrIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKQEAgLTM1MCw2ICszNTAsMjMg
QEAgdm9pZCBpbml0X3NlY29uZGFyeSh1aW50NjRfdCBjcHUpCiAKIAlpZiAoc21wX2NwdXMgPT0g
bXBfbmNwdXMpCiAJCXNtcF9zdGFydGVkID0gMTsKKworCWEgPSB1a3BsYXRfbWVtYWxsb2NhdG9y
X2dldCgpOworCWlmIChhID09IE5VTEwpCisJCVVLX0NSQVNIKCJtZW1hbGxvY2F0b3IgaXMgbm90
IGluaXRpYWxpemVkXG4iKTsKKworCXMgPSB1a19zY2hlZF9kZWZhdWx0X2luaXQoYSk7CisJaWYg
KHVubGlrZWx5KCFzKSkKKwkJVUtfQ1JBU0goIkNvdWxkIG5vdCBpbml0aWFsaXplIHRoZSBzY2hl
ZHVsZXIgaW4gQVBzXG4iKTsKKworCS8qIEVuYWJsZSBpbnRlcnJ1cHRzIGJlZm9yZSBzdGFydGlu
ZyB0aGUgYXBwbGljYXRpb24gKi8KKwl1a3BsYXRfbGNwdV9lbmFibGVfaXJxKCk7CisKKwkvKiBF
bnRlciB0aGUgc2NoZWR1bGVyICovCisJdWtfc2NoZWRfc3RhcnQocyk7CisKKwlVS19DUkFTSCgi
c2NoZWR1bGVyIHJldHVybmVkIHVzIHRvIGluaXQgc2Vjb25kYXJ5Iik7CisJLyogTk9UUkVBQ0hF
RCAqLwogfQogCiB2b2lkIHN0YXJ0X2NwdSh1aW50NjRfdCB0YXJnZXRfY3B1KQotLSAKMi4xNy4x
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 10:21:02 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 10:21: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 1heGfF-0003aF-6O; Fri, 21 Jun 2019 10:21:01 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heGfD-0003ZR-Lj
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 10:20:59 +0000
X-Inumbo-ID: 4300ed90-940e-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 4300ed90-940e-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 10:20: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 4D9E4142F;
 Fri, 21 Jun 2019 03:20:58 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 47EE03F718;
 Fri, 21 Jun 2019 03:20:57 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-3-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <3d89bea5-966c-6914-a5cf-ac31bebc5de8@arm.com>
Date: Fri, 21 Jun 2019 11:20:56 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-3-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 02/11]
 plat/common/ofw: Move fdt_reg_read_number to header file for static inline
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAyMS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTog
SmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiAtLS0KPiAgIHBsYXQvZHJpdmVycy9pbmNsdWRl
L29mdy9mZHQuaCB8IDE3ICsrKysrKysrKysrKysrKystCj4gICBwbGF0L2RyaXZlcnMvb2Z3L2Zk
dC5jICAgICAgICAgfCAxNyArLS0tLS0tLS0tLS0tLS0tLQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAx
NyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9k
cml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5o
Cj4gaW5kZXggZDAwNjE0ZC4uNTRjZTAxMSAxMDA2NDQKPiAtLS0gYS9wbGF0L2RyaXZlcnMvaW5j
bHVkZS9vZncvZmR0LmgKPiArKysgYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS9vZncvZmR0LmgKPiBA
QCAtOTEsNyArOTEsNyBAQCBpbnQgZmR0X2ludGVycnVwdF9jZWxscyhjb25zdCB2b2lkICpmZHQs
IGludCBub2Rlb2Zmc2V0KTsKPiAgICAqICAgICAgLUZEVF9FUlJfTk9URk9VTkQsIGlmIHRoZSBu
b2RlIGRvZXNuJ3QgaGF2ZSBhZGRyZXNzIHByb3BlcnR5Cj4gICAgKiAgICAgIC1GRFRfRVJSX05P
U1BBQ0UsIGlmIHRoZSBub2RlIGRvZXNuJ3QgaGF2ZSBhZGRyZXNzIGZvciBpbmRleAo+ICAgICov
Cj4gLWludCBmZHRfZ2V0X2FkZHJlc3MoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9mZnNldCwg
aW50IGluZGV4LAo+ICtpbnQgZmR0X2dldF9hZGRyZXNzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5v
ZGVvZmZzZXQsIHVpbnQzMl90IGluZGV4LAoKSSBkb24ndCB0aGluayB0aGlzIGNoYW5nZSBiZWxv
bmcgdG8gdGhpcyBwYXRjaC4gWW91IHByb2JhYmx5IHdhbnQgdG8gZm9sZCB0aGlzIAppbiB0aGUg
cGF0Y2ggd2hpY2ggaW50cm9kdWNlZCB0aGUgZnVuY3Rpb24gb3IgKGlmIG1lcmdlZCkgaW4gbW92
ZSBpdCBpbiBhIApzZXBhcmF0ZSBwYXRjaC4KCj4gICAJCQl1aW50NjRfdCAqYWRkciwgdWludDY0
X3QgKnNpemUpOwo+ICAgCj4gICAvKioKPiBAQCAtMTMzLDQgKzEzMywxOSBAQCBpbnQgZmR0X25v
ZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGVfbGlzdChjb25zdCB2b2lkICpmZHQsIGludCBzdGFydG9m
ZnNldCwKPiAgIGNvbnN0IHZvaWQgKmZkdF9nZXRfaW50ZXJydXB0KGNvbnN0IHZvaWQgKmZkdCwg
aW50IG5vZGVvZmZzZXQsCj4gICAJCQkJaW50IGluZGV4LCBpbnQgKnNpemUpOwo+ICAgCj4gK3N0
YXRpYyBpbmxpbmUgdWludDY0X3QgZmR0X3JlZ19yZWFkX251bWJlcihjb25zdCBmZHQzMl90ICpy
ZWdzLCB1aW50MzJfdCBzaXplKQoKQUZBSUNUIHRoZSBwYXRjaCBpbnRyb2R1Y2UgdGhpcyBmdW5j
dGlvbiBoYXMgbm90IGJlZW4gbWVyZ2VkLiBTbyBpdCB3b3VsZCBiZSAKcHJlZmVyYWJsZSBpZiB5
b3UgZm9sZCB0aGlzIGludG8gdGhpcyBwYXRjaC4KCj4gK3sKPiArCXVpbnQ2NF90IG51bWJlciA9
IDA7Cj4gKwo+ICsJaWYgKHNpemUgPj0gMyB8fCBzaXplIDw9IDApCj4gKwkJcmV0dXJuIC1GRFRf
RVJSX0JBRE5DRUxMUzsKPiArCj4gKwlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7Cj4gKwkJbnVtYmVyIDw8PSAzMjsKPiArCQludW1iZXIgfD0gZmR0MzJfdG9fY3B1KCpyZWdz
KTsKPiArCQlyZWdzKys7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIG51bWJlcjsKPiArfQo+ICAgI2Vu
ZGlmCj4gZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9vZncvZmR0LmMgYi9wbGF0L2RyaXZlcnMv
b2Z3L2ZkdC5jCj4gaW5kZXggNDUwY2Y1OC4uZmY0YmNlNiAxMDA2NDQKPiAtLS0gYS9wbGF0L2Ry
aXZlcnMvb2Z3L2ZkdC5jCj4gKysrIGIvcGxhdC9kcml2ZXJzL29mdy9mZHQuYwo+IEBAIC0zNSw2
ICszNSw3IEBACj4gICAjaW5jbHVkZSA8bGliZmR0X2Vudi5oPgo+ICAgI2luY2x1ZGUgPGZkdC5o
Pgo+ICAgI2luY2x1ZGUgPGxpYmZkdC5oPgo+ICsjaW5jbHVkZSA8b2Z3L2ZkdC5oPgoKV2h5IGRv
IHlvdSBzdWRkZW5seSBuZWVkIHRoZSBpbmNsdWRlIGhlcmU/IERpZG4ndCBuZWVkIHRoaXMgYmVm
b3JlIHNvIHRoZSAKY29tcGlsZXIgY2hlY2sgdGhlIHByb3RvdHlwZSBtYXRjaCB0aGUgZGVjbGFy
YXRpb24/Cgo+ICAgCj4gICAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPiAgIAo+IEBAIC0xMDMsMjIg
KzEwNCw2IEBAIGludCBmZHRfaW50ZXJydXB0X2NlbGxzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG9m
ZnNldCkKPiAgIAlyZXR1cm4gdmFsOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB1aW50NjRfdCBmZHRf
cmVnX3JlYWRfbnVtYmVyKGNvbnN0IGZkdDMyX3QgKnJlZ3MsIHVpbnQzMl90IHNpemUpCj4gLXsK
PiAtCXVpbnQ2NF90IG51bWJlciA9IDA7Cj4gLQo+IC0JaWYgKHNpemUgPj0gMyB8fCBzaXplIDw9
IDApCj4gLQkJcmV0dXJuIC1GRFRfRVJSX0JBRE5DRUxMUzsKPiAtCj4gLQlmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Cj4gLQkJbnVtYmVyIDw8PSAzMjsKPiAtCQludW1iZXIg
fD0gZmR0MzJfdG9fY3B1KCpyZWdzKTsKPiAtCQlyZWdzKys7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJu
IG51bWJlcjsKPiAtfQo+IC0KPiAgIC8qIERlZmF1bHQgdHJhbnNsYXRvciAoZ2VuZXJpYyBidXMp
ICovCj4gICBzdGF0aWMgdm9pZCBmZHRfZGVmYXVsdF9jb3VudF9jZWxscyhjb25zdCB2b2lkICpm
ZHQsIGludCBwYXJlbnRvZmZzZXQsCj4gICAJCQkJCSAgICAgICBpbnQgKmFkZHJjLCBpbnQgKnNp
emVjKQo+IAoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 10:25:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 10:25: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 1heGjj-0003s2-Pz; Fri, 21 Jun 2019 10:25: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=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heGji-0003rw-F8
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 10:25:38 +0000
X-Inumbo-ID: e6b0e98c-940e-11e9-b38a-07e67f579b69
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id e6b0e98c-940e-11e9-b38a-07e67f579b69;
 Fri, 21 Jun 2019 10:25:33 +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 0E6571478;
 Fri, 21 Jun 2019 03:25:33 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DF86E3F718;
 Fri, 21 Jun 2019 03:25:31 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-4-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <653747ff-4af6-39fb-a095-efe40b8957dd@arm.com>
Date: Fri, 21 Jun 2019 11:25:30 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190418065213.81978-4-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 3/7] plat/kvm: Move
 declaration of some global variables to a header
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgSmlhLAoKT24gMTgvMDQvMjAxOSAwNzo1MiwgSmlhIEhlIHdyb3RlOgo+IGRpZmYgLS1naXQg
YS9wbGF0L2t2bS9pbmNsdWRlL2t2bS9zZWN0aW9ucy5oIGIvcGxhdC9rdm0vaW5jbHVkZS9rdm0v
c2VjdGlvbnMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOGU2Y2Ez
Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wbGF0L2t2bS9pbmNsdWRlL2t2bS9zZWN0aW9ucy5o
Cj4gQEAgLTAsMCArMSw0NyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt
Q2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29t
Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIEFybSBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1l
dDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiAr
ICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
Cj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+
ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
PiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQg
SU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fUExBVF9LVk1fS0VSTkVMX0hfXwo+
ICsjZGVmaW5lIF9fUExBVF9LVk1fS0VSTkVMX0hfXwo+ICsKPiArLyoKPiArICogUHJvdmlkZWQg
Ynkgc2V0dXAuYwo+ICsgKi8KPiArZXh0ZXJuIHZvaWQgKl9saWJrdm1wbGF0X3BhZ2V0YWJsZTsK
PiArZXh0ZXJuIHZvaWQgKl9saWJrdm1wbGF0X2hlYXBfc3RhcnQ7Cj4gK2V4dGVybiB2b2lkICpf
bGlia3ZtcGxhdF9zdGFja190b3A7Cj4gK2V4dGVybiB2b2lkICpfbGlia3ZtcGxhdF9tZW1fZW5k
Owo+ICtleHRlcm4gdm9pZCAqX2xpYmt2bXBsYXRfZHRiOwoKVG8gYmUgaG9uZXN0LCBJIGZlZWwg
aXQgaXMgYSBiaXQgb2RkIHRvIGFkZCB0aGUgcHJvdG90eXBlIG9mIF9saWJrdm1wbGF0X2R0YiBp
biAKY29tbW9uIGNvZGUgd2hlbiB0aGlzIGlzIG9ubHkgdXNlZCBieSBBcm0uCgpCdXQgdGhpcyBp
cyBhbiBpbXByb3ZlbWVudCBmcm9tIHdoYXQgd2UgcHJldmlvdXNseSBhZGQuIEkgd2lsbCBsZWF2
ZSB0aGUgClVuaWtyYWZ0IGZvbGtzIGRlY2lkaW5nIHdoYXQgdGhleSBwcmVmZXIuCgpDaGVlcnMs
CgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 10:34:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 10:34: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 1heGsk-0004hm-Lo; Fri, 21 Jun 2019 10:34:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heGsj-0004hh-3f
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 10:34:57 +0000
X-Inumbo-ID: 365279a7-9410-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id 365279a7-9410-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 10:34: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 2D6CF142F;
 Fri, 21 Jun 2019 03:34:56 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 080243F718;
 Fri, 21 Jun 2019 03:34:54 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-6-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <9c62011b-277c-0254-ea16-255bb09c21a7@arm.com>
Date: Fri, 21 Jun 2019 11:34:53 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190418065213.81978-6-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 5/7] plat/kvm: Implement
 intctrl APIs for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAxOC8wNC8yMDE5IDA3OjUyLCBKaWEgSGUgd3JvdGU6Cj4gRnJvbTogV2VpIENoZW4g
PHdlaS5jaGVuQGFybS5jb20+Cj4gCj4gQmVmb3JlIEdJQ3YyIGJlY29tZSByZWFkeSwgd2UgaGFk
IG1hcmtlZCB0aGUgaW50Y3RybCBBUElzIGFzIFRPRE8uCj4gTm93LCB3ZSBoYXZlIGVuYWJsZWQg
dGhlIEdJQ3YyLCB3ZSBjYW4gaW1wbGVtZW50IGludGN0cmwgQVBJcyB3aXRoCj4gcmVsYXRlZCBH
SUMgQVBJcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4K
PiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgo+IC0tLQo+IHYxLT52
MjogaW1wbGVtZW50IGludGN0cmxfYWNrX2lycSBhcyBOT1AKPiAKPiAgIHBsYXQva3ZtL2FybS9p
bnRjdHJsLmMgfCAyNSArKysrKysrKysrKysrKysrKystLS0tLS0tCj4gICBwbGF0L2t2bS9hcm0v
c2V0dXAuYyAgIHwgIDQgKysrKwo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCsp
LCA3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9hcm0vaW50Y3RybC5j
IGIvcGxhdC9rdm0vYXJtL2ludGN0cmwuYwo+IGluZGV4IGFjNjA0YTcuLjliZWM1ZDYgMTAwNjQ0
Cj4gLS0tIGEvcGxhdC9rdm0vYXJtL2ludGN0cmwuYwo+ICsrKyBiL3BsYXQva3ZtL2FybS9pbnRj
dHJsLmMKPiBAQCAtMzEsMjQgKzMxLDM1IEBACj4gICAgKgo+ICAgICogVEhJUyBIRUFERVIgTUFZ
IE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiAgICAqLwo+ICsjaW5j
bHVkZSA8dWsvYXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxrdm0vc2VjdGlvbnMuaD4KPiAgICNpbmNs
dWRlIDxrdm0vaW50Y3RybC5oPgo+ICsjaW5jbHVkZSA8YXJtL2NwdS5oPgo+ICsjaW5jbHVkZSA8
YXJtL2lycS5oPgo+ICsjaW5jbHVkZSA8Z2ljL2dpYy12Mi5oPgo+ICAgCj4gICB2b2lkIGludGN0
cmxfaW5pdCh2b2lkKQo+ICAgewo+IC0JLy8gVE8gRE8KPiArCWludCByZXQ7Cj4gKwo+ICsJLyog
SW5pdGlhbGl6ZSBHSUMgZnJvbSBEVEIgKi8KPiArCXJldCA9IF9kdGJfaW5pdF9naWMoX2xpYmt2
bXBsYXRfZHRiKTsKPiArCWlmIChyZXQpCj4gKwkJVUtfQ1JBU0goIkluaXRpYWxpemUgR0lDIGZy
b20gRFRCIGZhaWxlZCwgcmV0PSVkXG4iLCByZXQpOwo+ICsKPiAgIH0KPiAgIAo+IC12b2lkIGlu
dGN0cmxfYWNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKQo+ICt2b2lkIGludGN0cmxfYWNrX2lycSh1
aW50MzJfdCBpcnEpCgpJZiB5b3UgY2hhbmdlIHRoZSB0eXBlIGhlcmUsIHRoZW4geW91IGFsc28g
bmVlZCB0byB1cGRhdGUgdGhlIHByb3RvdHlwZS4KCj4gICB7Cj4gLQkvLyBUTyBETwo+ICsJLy9O
T1AKPiAgIH0KPiAgIAo+IC12b2lkIGludGN0cmxfbWFza19pcnEodW5zaWduZWQgaW50IGlycSkK
PiArdm9pZCBpbnRjdHJsX21hc2tfaXJxKHVpbnQzMl90IGlycSkKCkRpdHRvLgoKPiAgIHsKPiAt
CS8vIFRPIERPCj4gKwlnaWNfZGlzYWJsZV9pcnEoaXJxKTsKPiAgIH0KPiAgIAo+IC12b2lkIGlu
dGN0cmxfY2xlYXJfaXJxKHVuc2lnbmVkIGludCBpcnEpCj4gK3ZvaWQgaW50Y3RybF9jbGVhcl9p
cnEodWludDMyX3QgaXJxKQoKRGl0dG8uCgo+ICAgewo+IC0JLy8gVE8gRE8KPiArCWdpY19lbmFi
bGVfaXJxKGlycSk7Cj4gICB9CgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 10:52:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 10:52: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 1heH9W-0006Ms-Qy; Fri, 21 Jun 2019 10:52:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heH9V-0006Mn-Ku
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 10:52:17 +0000
X-Inumbo-ID: a1d6ffa0-9412-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id a1d6ffa0-9412-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 10:52:15 +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 7E00228;
 Fri, 21 Jun 2019 03:52:15 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 279253F718;
 Fri, 21 Jun 2019 03:52:14 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-7-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <ae7f210a-52b5-04d1-a50f-b6d663a0911f@arm.com>
Date: Fri, 21 Jun 2019 11:52:12 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190418065213.81978-7-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 6/7] plat/common: Add a
 platform API to get IRQ from device tree
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Wei Chen <wei.chen@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Jianyong Wu <jianyong.wu@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAxOC8wNC8yMDE5IDA3OjUyLCBKaWEgSGUgd3JvdGU6Cj4gRnJvbTogV2VpIENoZW4g
PHdlaS5jaGVuQGFybS5jb20+Cj4gCj4gV2hlbiB3ZSBnZXQgaXJxIG51bWJlciBmcm9tIGRldmlj
ZSB0cmVlLCBpdCBjb250YWlucyBtb3JlIHRoYW4KPiBvbmUgaXRlbXMsIGxpa2UgaXJxIHR5cGUs
IGhhcmR3YXJlIGlycSBudW1iZXIuIFRoaXMgZnVuY3Rpb24gd2lsbAo+IGhlbHAgdXMgdG8gdHJh
bnNsYXRlIHRoZXNlIGl0ZW1zIGludG8gb25lIHVuaXF1ZSBwbGF0Zm9tciBpcnEgbnVtYmVyLgoK
cy9wbGF0Zm9tci9wbGF0Zm9ybS8KCj4gCj4gU2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdlaS5j
aGVuQGFybS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFy
bS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiAtLS0K
PiB2MS0+djI6IGFkZHJlc3MgU2hhcmFuJ3MgY29tbWVudHMKPiAKPiAgIHBsYXQvY29tbW9uL2lu
Y2x1ZGUvZ2ljX2ZkdC5oIHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBw
bGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKy0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDIgZGVs
ZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24vaW5jbHVkZS9naWNf
ZmR0LmgKPiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9naWNfZmR0LmggYi9w
bGF0L2NvbW1vbi9pbmNsdWRlL2dpY19mZHQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uYmEwMWZjZgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wbGF0L2NvbW1vbi9p
bmNsdWRlL2dpY19mZHQuaAo+IEBAIC0wLDAgKzEsNDcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBXZWkgQ2hlbiA8
d2VpLmNoZW5AYXJtLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE4LCBBcm0gTHRk
LiwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4g
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhl
IG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJB
Q1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19QTEFU
X0NNTl9HSUNfRkRUX0hfXwo+ICsjZGVmaW5lIF9fUExBVF9DTU5fR0lDX0ZEVF9IX18KPiArCj4g
Ky8qKgo+ICsgKiBHZXQgYW4gaW50ZXJydXB0IG51bWJlciBvZiBnaXZlbiBpbmRleCBmcm9tIGRl
dmljZSB0cmVlCj4gKyAqIEBwYXJhbSBmZHQgRGV2aWNlIHRyZWUgYmxvYgo+ICsgKiBAcGFyYW0g
bm9kZW9mZnNldCBkZXZpY2Ugbm9kZSBvZmZzZXQKPiArICogQHBhcmFtIGluZGV4IHdoaWNoIGlu
dGVycnVwdAo+ICsgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1
ZSBvbiBlcnJvcnMKPiArICovCj4gK2ludCBnaWNfZ2V0X2lycV9mcm9tX2R0Yihjb25zdCB2b2lk
ICpmZHQsIGludCBub2Rlb2Zmc2V0LCBpbnQgaW5kZXgpOwo+ICsKPiArI2VuZGlmIC8qIF9fUExB
VF9DTU5fR0lDX0ZEVF9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2dpYy9naWMt
djIuYyBiL3BsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMKPiBpbmRleCA1N2FiNTdjLi5jZTM4ZWU5
IDEwMDY0NAo+IC0tLSBhL3BsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMKPiArKysgYi9wbGF0L2Ry
aXZlcnMvZ2ljL2dpYy12Mi5jCj4gQEAgLTQ4LDEyICs0OCwxOCBAQAo+ICAgLyogTWF4IENQVSBp
bnRlcmZhY2UgZm9yIEdJQ3YyICovCj4gICAjZGVmaW5lIEdJQ19NQVhfQ1BVSUYJCTgKPiAgIAo+
IC0vKiBTUEkgaW50ZXJydXB0IGJhc2UgSUQgKi8KPiArLyogU1BJIGludGVycnVwdCBkZWZpbml0
aW9ucyAqLwo+ICsjZGVmaW5lIEdJQ19TUElfVFlQRQkJMAo+ICAgI2RlZmluZSBHSUNfU1BJX0JB
U0UJCTMyCj4gICAKPiAtLyogUFBJIGludGVycnVwdCBiYXNlIElEICovCj4gKy8qIFBQSSBpbnRl
cnJ1cHQgZGVmaW5pdGlvbnMgKi8KPiArI2RlZmluZSBHSUNfUFBJX1RZUEUJCTEKPiAgICNkZWZp
bmUgR0lDX1BQSV9CQVNFCQkxNgo+ICAgCj4gKy8qIFNHSSBpbnRlcnJ1cHQgZGVmaW5pdGlvbnMg
Ki8KPiArI2RlZmluZSBHSUNfU0dJX1RZUEUJCTIKCkFGQUlDVCwgeW91IGNhbid0IGRlZmluZSBT
R0kgaW4gdGhlIERUIGJpbmRpbmcgWzFdLgoKPiArI2RlZmluZSBHSUNfU0dJX0JBU0UJCTAKPiAr
Cj4gICAvKiBNYXggc3VwcG9ydCBpbnRlcnJ1cHQgbnVtYmVyIGZvciBHSUN2MiAqLwo+ICAgI2Rl
ZmluZSBHSUNfTUFYX0lSUQkJX19NQVhfSVJRCj4gICAKPiBAQCAtMjkzLDYgKzI5OSwzNCBAQCB2
b2lkIGdpY19zZXRfaXJxX3R5cGUodWludDMyX3QgaXJxLCBpbnQgdHJpZ2dlcikKPiAgIAl3cml0
ZV9naWNkMzIoR0lDRF9JQ0ZHUihpcnEpLCB2YWwpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQg
Z2ljX2lycV90cmFuc2xhdGUoaW50IHR5cGUsIGludCBod19pcnEpCgpNb3N0bHkgbGlrZWx5IGJv
dGggYXJndW1lbnRzIHNob3VsZCBiZSB1bnNpZ25lZC4KCj4gK3sKPiArCWludCBpcnE7Cj4gKwo+
ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIEdJQ19TUElfVFlQRToKPiArCQlpcnEgPSBod19p
cnEgKyBHSUNfU1BJX0JBU0U7Cj4gKwkJaWYgKGlycSA+PSBHSUNfU1BJX0JBU0UgJiYgaXJxIDwg
X19NQVhfSVJRKQo+ICsJCQlyZXR1cm4gaXJxOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBHSUNfUFBJ
X1RZUEU6Cj4gKwkJaXJxID0gaHdfaXJxICsgR0lDX1BQSV9CQVNFOwo+ICsJCWlmIChpcnEgPj0g
R0lDX1BQSV9CQVNFICYmIGlycSA8IEdJQ19TUElfQkFTRSkKPiArCQkJcmV0dXJuIGlycTsKPiAr
CQlicmVhazsKPiArCWNhc2UgR0lDX1NHSV9UWVBFOgo+ICsJCWlycSA9IGh3X2lycSArIEdJQ19T
R0lfQkFTRTsKPiArCQlpZiAoaXJxID49IEdJQ19TR0lfQkFTRSAmJiBpcnEgPCBHSUNfUFBJX0JB
U0UpCj4gKwkJCXJldHVybiBpcnE7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXVrX3By
X3dhcm4oIkludmFsaWQgSVJRIHR5cGUgWyVkXVxuIiwgdHlwZSk7Cj4gKwl9Cj4gKwo+ICsJdWtf
cHJfZXJyKCJpcnEgaXMgb3V0IG9mIHJhbmdlXG4iKTsKPiArCXJldHVybiAtRUlOVkFMOwo+ICt9
Cj4gKwo+ICAgc3RhdGljIHZvaWQgZ2ljX2luaXRfZGlzdCh2b2lkKQo+ICAgewo+ICAgCXVpbnQz
Ml90IHZhbCwgY3B1aWZfbnVtYmVyLCBpcnFfbnVtYmVyOwo+IEBAIC00MTYsMyArNDUwLDE5IEBA
IGludCBfZHRiX2luaXRfZ2ljKGNvbnN0IHZvaWQgKmZkdCkKPiAgIAo+ICAgCXJldHVybiAwOwo+
ICAgfQo+ICsKPiAraW50IGdpY19nZXRfaXJxX2Zyb21fZHRiKGNvbnN0IHZvaWQgKmZkdCwgaW50
IG5vZGVvZmZzZXQsIGludCBpbmRleCkKPiArewo+ICsJZmR0MzJfdCAqcHJvcDsKPiArCWludCB0
eXBlLCBod2lycSwgc2l6ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gZmR0X2dldF9pbnRl
cnJ1cHQoZmR0LCBub2Rlb2Zmc2V0LCBpbmRleCwgJnNpemUsICZwcm9wKTsKPiArCWlmIChyZXQg
PCAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXR5cGUgPSBmZHQzMl90b19jcHUocHJv
cFswXSk7Cj4gKwlod2lycSA9IGZkdDMyX3RvX2NwdShwcm9wWzFdKTsKPiArCj4gKwlyZXR1cm4g
Z2ljX2lycV90cmFuc2xhdGUodHlwZSwgaHdpcnEpOwo+ICt9Cj4gCgpIb3cgZG8geW91IHBsYW4g
dG8gaGFuZGxlIHByb3BbM10gKGkuZSBsZXZlbC1zZW5zaXRpdmUsIGVkZ2UtdHJpZ2dlcmVkKT8K
CkNoZWVycywKClsxXSBsaW51eC9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50
ZXJydXB0LWNvbnRyb2xsZXIKCi0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 13:01:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 13:01: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 1heJAh-0000W0-Db; Fri, 21 Jun 2019 13:01: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=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heJAf-0000Vv-Fp
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 13:01:37 +0000
X-Inumbo-ID: b2b6514c-9424-11e9-af8b-8b33179ea11c
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id b2b6514c-9424-11e9-af8b-8b33179ea11c;
 Fri, 21 Jun 2019 13:01:35 +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 BDD52142F;
 Fri, 21 Jun 2019 06:01:34 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B41C03F718;
 Fri, 21 Jun 2019 06:01:33 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-4-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <33d13fec-7787-b20f-20ad-e3404030a90c@arm.com>
Date: Fri, 21 Jun 2019 14:01:32 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-4-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 03/11] plat/kvm/smp:
 Add psci call definitions in psci.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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpOSVQ6IFBTQ0kgaXMgYWNyb255bSBzaG91bGQgaXQgc2hvdWxkIGJlIHVwcGVyIGNhc2Uu
IE5vdGUgaXQgaXMgb2sgZm9yIHRoZSAKaGVhZGVyIHRvIGJlIGFuIGxvd2VyIGNhc2UuCgpPbiAy
MS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6Cj4gQWRkIHBzY2kgY2FsbCBkZWZpbml0aW9u
cyBpbiBwc2NpLmgKClNhbWUgaGVyZS4KCj4gCj4gU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0
aW4uaGVAYXJtLmNvbT4KPiAtLS0KPiAgIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL3BzY2kuaCB8
IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIDEgZmlsZSBjaGFuZ2Vk
LCA4NyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24vaW5j
bHVkZS9hcm0vcHNjaS5oCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJt
L3BzY2kuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL3BzY2kuaAo+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjhjOWQ5ZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9w
bGF0L2NvbW1vbi9pbmNsdWRlL2FybS9wc2NpLmgKPiBAQCAtMCwwICsxLDg3IEBACj4gKy8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9y
czogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAy
MDE5LCBBcm0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9s
ZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4g
KyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
Ugo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICog
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVSIE1BWSBO
T1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsKPiArI2lm
bmRlZiBfX1BMQVRfQ01OX0FSTV9QU0NJX0hfXwo+ICsjZGVmaW5lIF9fUExBVF9DTU5fQVJNX1BT
Q0lfSF9fCj4gKwo+ICsvKgo+ICsgKiBQU0NJIGZ1bmN0aW9uIGNvZGVzIChhcyBwZXIgUFNDSSB2
MC4yKS4KCjEuMCBoYXMgYmVlbiByZWxlYXNlZCBpbiAyMDE1LCBhbmQgMC4yIGlzIG11Y2ggYW5j
aWVudCAoMjAxMykuIERvbid0IHlvdSB3YW50IHRvIApnZXQgc29tZXRoaW5nIGEgYml0IG1vcmUg
cmVjZW50PwoKPiArICovCj4gKyNpZmRlZiBfX2FhcmNoNjRfXwo+ICsjZGVmaW5lCVBTQ0lfRk5J
RF9WRVJTSU9OCQkweDg0MDAwMDAwCj4gKyNkZWZpbmUJUFNDSV9GTklEX0NQVV9TVVNQRU5ECQkw
eGM0MDAwMDAxCj4gKyNkZWZpbmUJUFNDSV9GTklEX0NQVV9PRkYJCTB4ODQwMDAwMDIKPiArI2Rl
ZmluZQlQU0NJX0ZOSURfQ1BVX09OCQkweGM0MDAwMDAzCj4gKyNkZWZpbmUJUFNDSV9GTklEX0FG
RklOSVRZX0lORk8JCTB4YzQwMDAwMDQKPiArI2RlZmluZQlQU0NJX0ZOSURfTUlHUkFURQkJMHhj
NDAwMDAwNQo+ICsjZGVmaW5lCVBTQ0lfRk5JRF9NSUdSQVRFX0lORk9fVFlQRQkweDg0MDAwMDA2
Cj4gKyNkZWZpbmUJUFNDSV9GTklEX01JR1JBVEVfSU5GT19VUF9DUFUJMHhjNDAwMDAwNwo+ICsj
ZGVmaW5lCVBTQ0lfRk5JRF9TWVNURU1fT0ZGCQkweDg0MDAwMDA4Cj4gKyNkZWZpbmUJUFNDSV9G
TklEX1NZU1RFTV9SRVNFVAkJMHg4NDAwMDAwOQo+ICsjZGVmaW5lCVBTQ0lfRk5JRF9GRUFUVVJF
UwkJMHg4NDAwMDAwYQo+ICsjZWxzZQo+ICsjZGVmaW5lCVBTQ0lfRk5JRF9WRVJTSU9OCQkweDg0
MDAwMDAwCj4gKyNkZWZpbmUJUFNDSV9GTklEX0NQVV9TVVNQRU5ECQkweDg0MDAwMDAxCj4gKyNk
ZWZpbmUJUFNDSV9GTklEX0NQVV9PRkYJCTB4ODQwMDAwMDIKPiArI2RlZmluZQlQU0NJX0ZOSURf
Q1BVX09OCQkweDg0MDAwMDAzCj4gKyNkZWZpbmUJUFNDSV9GTklEX0FGRklOSVRZX0lORk8JCTB4
ODQwMDAwMDQKPiArI2RlZmluZQlQU0NJX0ZOSURfTUlHUkFURQkJMHg4NDAwMDAwNQo+ICsjZGVm
aW5lCVBTQ0lfRk5JRF9NSUdSQVRFX0lORk9fVFlQRQkweDg0MDAwMDA2Cj4gKyNkZWZpbmUJUFND
SV9GTklEX01JR1JBVEVfSU5GT19VUF9DUFUJMHg4NDAwMDAwNwo+ICsjZGVmaW5lCVBTQ0lfRk5J
RF9TWVNURU1fT0ZGCQkweDg0MDAwMDA4Cj4gKyNkZWZpbmUJUFNDSV9GTklEX1NZU1RFTV9SRVNF
VAkJMHg4NDAwMDAwOQo+ICsjZGVmaW5lCVBTQ0lfRk5JRF9GRUFUVVJFUwkJMHg4NDAwMDAwYQo+
ICsjZW5kaWYKClRoZXJlIGFyZSBhIGxvdCBoZXJlIGR1cGxpY2F0ZWQuIENvdWxkIHlvdSBkbyBz
b21ldGhpbmcgdG8gYXZvaWQgdGhhdD8KCkZvciBpbnN0YW5jZSwgeW91IGNvdWxkIGRlZmluZSBQ
U0NJX0ZOMzJfKiBhbmQgUFNDSV9GTjY0XyouIFNvbWUgb2YgdGhlIEZOMzIgCndvdWxkIGJlIHVz
ZWQgZm9yIGJvdGggYXJtNjQgYW5kIGFybTMyLgoKPiArCj4gK2VudW0gcHNjaV9mdW5jdGlvbiB7
Cj4gKwlQU0NJX0ZOX0NQVV9TVVNQRU5ELAo+ICsJUFNDSV9GTl9DUFVfT04sCj4gKwlQU0NJX0ZO
X0NQVV9PRkYsCj4gKwlQU0NJX0ZOX01JR1JBVEUsCj4gKwlQU0NJX0ZOX01BWCwKPiArfTsKCldo
YXQncyB0aGlzIGVudW0gZXhhY3RseSBmb3I/Cgo+ICsKPiArLyogUFNDSSByZXR1cm4gdmFsdWVz
IChpbmNsdXNpdmUgb2YgYWxsIFBTQ0kgdmVyc2lvbnMpICovCj4gKyNkZWZpbmUgUFNDSV9SRVRf
U1VDQ0VTUwkJCTAKPiArI2RlZmluZSBQU0NJX1JFVF9OT1RfU1VQUE9SVEVECQkJLTEKPiArI2Rl
ZmluZSBQU0NJX1JFVF9JTlZBTElEX1BBUkFNUwkJCS0yCj4gKyNkZWZpbmUgUFNDSV9SRVRfREVO
SUVECQkJCS0zCj4gKyNkZWZpbmUgUFNDSV9SRVRfQUxSRUFEWV9PTgkJCS00Cj4gKyNkZWZpbmUg
UFNDSV9SRVRfT05fUEVORElORwkJCS01Cj4gKyNkZWZpbmUgUFNDSV9SRVRfSU5URVJOQUxfRkFJ
TFVSRQkJLTYKPiArI2RlZmluZSBQU0NJX1JFVF9OT1RfUFJFU0VOVAkJCS03Cj4gKyNkZWZpbmUg
UFNDSV9SRVRfRElTQUJMRUQJCQktOAo+ICsjZGVmaW5lIFBTQ0lfUkVUX0lOVkFMSURfQUREUkVT
UwkJLTkKPiArCj4gKyNlbmRpZiAvKiBfX1BMQVRfQ01OX0FSTV9JUlFfSF9fICovCgpzL0lSUS9Q
U0NJLwoKCj4gCgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 13:02:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 13:02: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 1heJBq-0000YM-I3; Fri, 21 Jun 2019 13:02: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=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heJBo-0000YG-Pp
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 13:02:48 +0000
X-Inumbo-ID: ddbbc516-9424-11e9-892a-33bacd0d193d
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id ddbbc516-9424-11e9-892a-33bacd0d193d;
 Fri, 21 Jun 2019 13:02:47 +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 B4130142F;
 Fri, 21 Jun 2019 06:02:46 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AFC673F718;
 Fri, 21 Jun 2019 06:02:45 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-5-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <3fe8c729-0819-418c-7c06-16ad6862dcf0@arm.com>
Date: Fri, 21 Jun 2019 14:02:44 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-5-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 04/11] plat/kvm/smp:
 Add smp definitions in smp.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 <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gMjEvMDYvMjAxOSAwNzo1NywgSmlhIEhlIHdyb3RlOgo+IEFkZCBzbXAgZGVmaW5pdGlvbnMg
aW4gc21wLmgKCklITU8sIGZ1bmN0aW9uIHByb3RvdHlwZSBzaG91bGQgYmUgZGVmaW5lZCBpbiB0
aGUgc2FtZSBwbGFjZSBhcyB0aGUgCmltcGxlbWVudGF0aW9uLiBPdGhlcndpc2UsIHRoaXMgbWFr
ZXMgcXVpdGUgZGlmZmljdWx0IHRvIHJldmlldyBhbmQgY2hlY2sgCmV2ZXJ5dGhpbmcgaXMgb2su
Cgo+IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Cj4gLS0tCj4gICBw
bGF0L2NvbW1vbi9pbmNsdWRlL3NtcC5oIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCj4gICAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKQo+ICAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IHBsYXQvY29tbW9uL2luY2x1ZGUvc21wLmgKPiAKPiBkaWZmIC0tZ2l0
IGEvcGxhdC9jb21tb24vaW5jbHVkZS9zbXAuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvc21wLmgK
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjM4ZjgwMWQKPiAtLS0gL2Rl
di9udWxsCj4gKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9zbXAuaAo+IEBAIC0wLDAgKzEsNDIg
QEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+
ICsgKiBBdXRob3JzOiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgo+ICsgKgo+ICsgKiBDb3B5
cmlnaHQgKGMpIDIwMTksIEFybSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Cj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
PiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBI
RUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICov
Cj4gKyNpZm5kZWYgX19QTEFUX0NNTl9TTVBfSF9fCj4gKyNkZWZpbmUgX19QTEFUX0NNTl9TTVBf
SF9fCj4gKwo+ICsjZGVmaW5lCU1BWENQVQkJOCAvKiBoYXJkIGxpbWl0YXRpb24gZm9yIENQVSBu
dW1iZXIgKi8KPiArZXh0ZXJuIGludCBjcHVfcG9zc2libGVfbWFwW01BWENQVV07Cj4gKwo+ICt2
b2lkIHJlbGVhc2VfYXBzKHZvaWQpOwo+ICtpbnQgc3RhcnRfY3B1KHVpbnQ2NF90IHRhcmdldF9j
cHUpOwo+ICsjZW5kaWYgLyogX19QTEFUX0NNTl9TTVBfSF9fICovCj4gCgpDaGVlcnMsCgotLSAK
SnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 13:09:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 13:09: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 1heJHs-0000f9-49; Fri, 21 Jun 2019 13:09:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heJHq-0000f4-Vp
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 13:09:03 +0000
X-Inumbo-ID: bcad98c2-9425-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id bcad98c2-9425-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 13:09: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 0DFF2142F;
 Fri, 21 Jun 2019 06:09:01 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 07BAB3F246;
 Fri, 21 Jun 2019 06:08:59 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-6-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <e21e34a0-bda9-1829-21ec-e807ab3f3993@arm.com>
Date: Fri, 21 Jun 2019 14:08:58 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-6-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 05/11] plat/kvm/smp:
 Add psci call psci_cpu_on
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAyMS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6Cj4gQWRkIHBzY2kgY2FsbCBw
c2NpX2NwdV9vbgo+IAo+IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+
Cj4gLS0tCj4gICBwbGF0L2t2bS9hcm0vc2V0dXAuYyB8IDYgKysrKysrCj4gICAxIGZpbGUgY2hh
bmdlZCwgNiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9zZXR1
cC5jIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKPiBpbmRleCA2MTI1YTMwLi4xZjZlNDU4IDEwMDY0
NAo+IC0tLSBhL3BsYXQva3ZtL2FybS9zZXR1cC5jCj4gKysrIGIvcGxhdC9rdm0vYXJtL3NldHVw
LmMKPiBAQCAtNDEsNiArNDEsMTIgQEAgc21jY19wc2NpX2NhbGxmbl90IHNtY2NfcHNjaV9jYWxs
Owo+ICAgZXh0ZXJuIHZvaWQgX2xpYmt2bXBsYXRfbmV3c3RhY2sodWludDY0X3Qgc3RhY2tfc3Rh
cnQsCj4gICAJCQl2b2lkICgqdHJhbXApKHZvaWQgKiksIHZvaWQgKmFyZyk7Cj4gICAKPiAraW50
IHBzY2lfY3B1X29uKHVuc2lnbmVkIGxvbmcgY3B1LCB1bnNpZ25lZCBsb25nIGVudHJ5KQoKUFND
SSBpcyBub3RoaW5nIEtWTSBzcGVjaWZpYywgY2FuIHRoaXMgYmUgbW92ZWQgaW4gYSBjb21tb24g
ZmlsZT8KCj4gK3sKPiArCS8qIFBTQ0kgdjAuMSBhbmQgdjAuMiBib3RoIHN1cHBvcnQgY3B1X29u
LiAqLwoKVGhlIGNvZGUgaW4gX2R0Yl9nZXRfcHNjaV9tZXRob2QoKSBzYXlzIHRoYXQgMC4xIGlz
IG5vdCBzdXBwb3J0ZWQuCgo+ICsJcmV0dXJuIHNtY2NfcHNjaV9odmNfY2FsbChQU0NJX0ZOSURf
Q1BVX09OLCBjcHUsIGVudHJ5LCBjcHUpOwoKSSB0aGluayB5b3Ugd2FudCB0byBjYWxsIHNtY2Nf
cHNjaV9jYWxsKC4uLikgaGVyZSBzbyB5b3Ugc3VwcG9ydCBib3RoIFNNQyBhbmQgCkhWQyBzZWFt
bGVzc2x5LgoKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIF9pbml0X2R0Yih2b2lkICpkdGJfcG9p
bnRlcikKPiAgIHsKPiAgIAlpbnQgcmV0Owo+IAoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 13:14:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 13: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 1heJNC-0001Kk-IE; Fri, 21 Jun 2019 13:14: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=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heJNA-0001Kf-Qx
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 13:14:32 +0000
X-Inumbo-ID: 7fb1aa1a-9426-11e9-b026-53134e3c10a5
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 7fb1aa1a-9426-11e9-b026-53134e3c10a5;
 Fri, 21 Jun 2019 13:14:28 +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 34156142F;
 Fri, 21 Jun 2019 06:14:28 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 29D5F3F246;
 Fri, 21 Jun 2019 06:14:27 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-7-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <0e639264-f04c-7e94-8a3f-821719f20bfe@arm.com>
Date: Fri, 21 Jun 2019 14:14:25 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-7-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 06/11] plat/kvm:
 arm64: Add a parameter to start_mmu
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAyMS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6Cj4gVGhpcyBpcyB0byBieXBh
c3MgaW52YWxpZGF0ZSBhbmQgY2xlYW4gcGd0YWJsZSBELWNhY2hlLiBUaGlzIGlzIG5vdAo+IHJl
cXVpcmVkIHdoZW4gQVBzIGFyZSBib290aW5nIHVwLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEppYSBI
ZSA8anVzdGluLmhlQGFybS5jb20+Cj4gLS0tCj4gICBwbGF0L2t2bS9hcm0vZW50cnk2NC5TICAg
ICB8IDEgKwo+ICAgcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMgfCA3ICsrKysrKy0KPiAgIDIg
ZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAt
LWdpdCBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMgYi9wbGF0L2t2bS9hcm0vZW50cnk2NC5TCj4g
aW5kZXggZmY2M2VlMC4uZGY1OWVmNiAxMDA2NDQKPiAtLS0gYS9wbGF0L2t2bS9hcm0vZW50cnk2
NC5TCj4gKysrIGIvcGxhdC9rdm0vYXJtL2VudHJ5NjQuUwo+IEBAIC0xMjUsNiArMTI1LDcgQEAg
RU5UUlkoX2xpYmt2bXBsYXRfZW50cnkpCj4gICAJbXNyIFZCQVJfRUwxLCB4MjkKPiAgIAo+ICAg
CS8qIEVuYWJsZSB0aGUgbW11ICovCj4gKwltb3YgeDcsICMwCgpQbGVhc2UgdHJ5IHRvIGRvY3Vt
ZW50IGFzIG11Y2ggYXMgcG9zc2libGUgYXNzZW1ibHkgY29kZS4gRm9yIGluc3RhbmNlLCB5b3Ug
c2V0IAp4NyBoZXJlIGJ1dCBpdCBpcyB1c2VkIGxhdGVyIGluIGEgZGlmZmVyZW50IGZ1bmN0aW9u
LiBUaGUgZGlmZiBvZiB0aGUgcGF0Y2ggCm1ha2VzIGl0IGNsZWFyIHRvIHVuZGVyc3RhbmQuIEhv
d2V2ZXIsIGlmIHlvdSBsb29rIGF0IHRoZSBjb2RlIGl0c2VsZiB0aGVuIGl0IApiZWNvbWVzIGlt
cG9zc2libGUgdG8gZmluZC4KCkluIHRoaXMgY29udGV4dCwgSSB0aGluayBpdCB3b3VsZCBiZSBi
ZXN0IGlmIHN0YXJ0X21tdSgpIGlzIHNwbGl0IGluIHR3byAKZnVuY3Rpb25zLiBUaGUgYm9vdCBD
UFUgd291bGQgY2FsbCB0aGUgdHdvIGZ1bmN0aW9ucywgd2hpbGUgdGhlIHNlY29uZGFyeSBDUFUg
CndvdWxkIG9ubHkgY2FsbCB0aGUgb25lLgoKPiAgIAlibCBzdGFydF9tbXUKPiAgIAo+ICAgCS8q
IExvYWQgZHRiIGFkZHJlc3MgdG8geDAgYXMgYSBwYXJhbWV0ZXIgKi8KPiBkaWZmIC0tZ2l0IGEv
cGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMgYi9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQuUwo+
IGluZGV4IDc4OTljMTkuLmFiYjAyNGYgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9rdm0vYXJtL3BhZ2V0
YWJsZTY0LlMKPiArKysgYi9wbGF0L2t2bS9hcm0vcGFnZXRhYmxlNjQuUwo+IEBAIC0zNiw2ICsz
Niw4IEBACj4gICAjaW5jbHVkZSA8dWsvYXNtLmg+Cj4gICAjaW5jbHVkZSA8a3ZtLWFybS9tbS5o
Pgo+ICAgI2luY2x1ZGUgPGFybS9jcHVfZGVmcy5oPgo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+
Cj4gKwo+ICAgLyoKPiAgICAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIE1lbW9yeSBMYXlvdXQgb2Yg
QUFyY2g2NCBWaXJ0dWFsIE1hY2hpbmUKPiAgICAqIHwgMCAtIDB4M0ZGRkZGRkYgfCAgIDB4NDAw
MDAwMDAgLSAweDdGRkZGRkZGRkYgICAgICAgICAgIHwgIDUxMkdCIC0gMVRCICAgfAo+IEBAIC0y
MzQsNiArMjM2LDkgQEAgRU5UUlkoc3RhcnRfbW11KQo+ICAgCWJmaSB4MiwgeDMsICMzMiwgIzMK
PiAgIAltc3IgdGNyX2VsMSwgeDIKPiAgIAo+ICsJY21wIHg3LCAjMQo+ICsJYmVxIDFmCj4gKwo+
ICAgCS8qIHNhdmUgbHIgKi8KPiAgIAltb3YgeDIyLCB4MzAKPiAgIAo+IEBAIC0yNjIsNyArMjY3
LDcgQEAgRU5UUlkoc3RhcnRfbW11KQo+ICAgCj4gICAJLyogcmVzdG9yZSBsciAqLwo+ICAgCW1v
diB4MzAsIHgyMgo+IC0KPiArMToKPiAgIAlyZXQKPiAgIEVORChzdGFydF9tbXUpCj4gICAKPiAK
Ci0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 13:25:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 13:25: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 1heJY4-0002HY-7w; Fri, 21 Jun 2019 13:25:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heJY2-0002HS-NO
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 13:25:46 +0000
X-Inumbo-ID: 1233868c-9428-11e9-90da-ef1b1a4c2b43
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 1233868c-9428-11e9-90da-ef1b1a4c2b43;
 Fri, 21 Jun 2019 13:25:43 +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 73FF2344;
 Fri, 21 Jun 2019 06:25:43 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 70AB63F246;
 Fri, 21 Jun 2019 06:25:42 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-8-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <2110e4c5-93e8-148d-12d0-dffafc630109@arm.com>
Date: Fri, 21 Jun 2019 14:25:41 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-8-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 07/11] plat/kvm:
 arm64: Add entry point for APs (secondary cpus)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAyMS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTog
SmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiAtLS0KPiAgIHBsYXQva3ZtL2FybS9lbnRyeTY0
LlMgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIDEgZmlsZSBjaGFuZ2Vk
LCAzMCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9lbnRyeTY0
LlMgYi9wbGF0L2t2bS9hcm0vZW50cnk2NC5TCj4gaW5kZXggZGY1OWVmNi4uOWM5ODEwMiAxMDA2
NDQKPiAtLS0gYS9wbGF0L2t2bS9hcm0vZW50cnk2NC5TCj4gKysrIGIvcGxhdC9rdm0vYXJtL2Vu
dHJ5NjQuUwo+IEBAIC0xNDMsMyArMTQzLDMzIEBAIEVOVFJZKF9saWJrdm1wbGF0X25ld3N0YWNr
KQo+ICAgCS8qIEJyYW5jaCB0byBfbGlia3ZtcGxhdF9lbnRyeTIgKi8KPiAgIAliciB4MQo+ICAg
RU5EKF9saWJrdm1wbGF0X25ld3N0YWNrKQo+ICsKPiArLyoKPiArICogbXBlbnRyeSh1bnNpZ25l
ZCBsb25nKQo+ICsgKgo+ICsgKiBDYWxsZWQgYnkgYSBjb3JlIHdoZW4gaXQgaXMgYmVpbmcgYnJv
dWdodCBvbmxpbmUuCj4gKyAqIFRoZSBkYXRhIGluIHgwIGlzIHBhc3NlZCBzdHJhaWdodCB0byBp
bml0X3NlY29uZGFyeS4KPiArICovCj4gK0VOVFJZKG1wZW50cnkpCj4gKwkvKiBEaXNhYmxlIGlu
dGVycnVwdHMgKi8KPiArCW1zcglkYWlmc2V0LCAjMgoKVGVjaG5pY2FsbHkgeW91IHNob3VsZCBt
YXNrIGFsbCB0aGUgaW50ZXJydXB0cyAoZGVidWcsIFNFcnJvciwgSW50ZXJydXB0LCBGSVEpIAp1
bnRpbCB5b3UgaGF2ZSBjb25maWd1cmVkIHRoZSB2ZWN0b3IgdGFibGUgY29ycmVjdGx5LgoKQnV0
IEkgYW0gcHJldHR5IHN1cmUgeW91IHdvdWxkIGFycml2ZSBoZXJlIHdpdGggYWxsIGludGVycnVw
dHMgbWFza2VkLgoKPiArCj4gKwkvKiBTZXQgdGhlIGNvbnRleHQgaWQgKi8KPiArCW1zcgljb250
ZXh0aWRyX2VsMSwgeHpyCj4gKwo+ICsJLyogRW5hYmxlIHRoZSBtbXUgKi8KPiArCW1vdiB4Nywg
IzEKClNlZSBteSBjb21tZW50IGFib3V0IHg3IGJlZm9yZS4KCj4gKwlibAlzdGFydF9tbXUKPiAr
Cj4gKwkvKiBKdW1wIHRvIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgKi8KPiArCWxkcgl4MTUs
ID1tcF92aXJ0ZG9uZQo+ICsJYnIJeDE1CgpJIHRob3VnaHQgVW5pa3JhZnQgcGFnZSB0YWJsZXMg
d2VyZSBjb25maWd1cmVkIHdpdGggdmlydCA9PSBwaHlzIG1hcHBpbmcuIFNvIGRvIAp5b3UgcmVh
bGx5IG5lZWQgdGhpcz8KCj4gKwo+ICttcF92aXJ0ZG9uZToKPiArCWxkcgl4NCwgPXNlY29uZGFy
eV9zdGFja3MKPiArCW1vdgl4NSwgIyg0MDk2ICogNCkvL1RPRE8KCldoYXQncyB0aGF0IGZvcj8K
Cj4gKwltdWwJeDUsIHgwLCB4NQo+ICsJYWRkCXNwLCB4NCwgeDUKPiArCj4gKwliCWluaXRfc2Vj
b25kYXJ5Cj4gK0VORChtcGVudHJ5KQo+IAoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 15:05:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 15:05: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 1heL6a-00047O-MT; Fri, 21 Jun 2019 15:05:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heL6Y-00047G-Ry
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 15:05:30 +0000
X-Inumbo-ID: 0120b1ae-9436-11e9-a48e-e79fcaeb71b1
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 0120b1ae-9436-11e9-a48e-e79fcaeb71b1;
 Fri, 21 Jun 2019 15:05:28 +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 CEDA528;
 Fri, 21 Jun 2019 08:05:27 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A98DE3F575;
 Fri, 21 Jun 2019 08:05:26 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-9-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <af82961b-d4c5-9f37-501a-ac81a749c21a@arm.com>
Date: Fri, 21 Jun 2019 16:05:23 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-9-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 08/11] plat/kvm/arm:
 Implement smp boot 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>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAyMS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTog
SmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiAtLS0KPiAgIGxpYi91a2Jvb3QvTWFrZWZpbGUu
dWsgfCAgIDEgKwo+ICAgbGliL3VrYm9vdC9ib290LmMgICAgICB8ICAxNSArKysrCj4gICBwbGF0
L2t2bS9hcm0vc2V0dXAuYyAgIHwgMTg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspCj4gCj4gZGlm
ZiAtLWdpdCBhL2xpYi91a2Jvb3QvTWFrZWZpbGUudWsgYi9saWIvdWtib290L01ha2VmaWxlLnVr
Cj4gaW5kZXggNTVmMjA1ZC4uYzhlMGI0NCAxMDA2NDQKPiAtLS0gYS9saWIvdWtib290L01ha2Vm
aWxlLnVrCj4gKysrIGIvbGliL3VrYm9vdC9NYWtlZmlsZS51awo+IEBAIC0xLDYgKzEsNyBAQAo+
ICAgJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJ1a2Jvb3QsJChDT05GSUdfTElCVUtCT09UKSkp
Cj4gICAKPiAgIENJTkNMVURFUy0kKENPTkZJR19MSUJVS0JPT1QpCQkrPSAtSSQoTElCVUtCT09U
X0JBU0UpL2luY2x1ZGUKPiArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVLQk9PVCkJCSs9IC1JJChV
S19QTEFUX0NPTU1PTl9CQVNFKS9pbmNsdWRlCj4gICBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJV
S0JPT1QpCSs9IC1JJChMSUJVS0JPT1RfQkFTRSkvaW5jbHVkZQo+ICAgCj4gICBMSUJVS0JPT1Rf
U1JDUy15ICs9ICQoTElCVUtCT09UX0JBU0UpL2Jvb3QuYwo+IGRpZmYgLS1naXQgYS9saWIvdWti
b290L2Jvb3QuYyBiL2xpYi91a2Jvb3QvYm9vdC5jCj4gaW5kZXggNDg0Njc4Mi4uZDRkNDljMSAx
MDA2NDQKPiAtLS0gYS9saWIvdWtib290L2Jvb3QuYwo+ICsrKyBiL2xpYi91a2Jvb3QvYm9vdC5j
Cj4gQEAgLTQxLDYgKzQxLDEwIEBACj4gICAjaW5jbHVkZSA8c3RkaW8uaD4KPiAgICNpbmNsdWRl
IDxlcnJuby5oPgo+ICAgCj4gKyNpZiBDT05GSUdfU01QCj4gKyNpbmNsdWRlIDxzbXAuaD4KPiAr
I2VuZGlmCj4gKwo+ICAgI2lmIENPTkZJR19MSUJVS0FMTE9DICYmIENPTkZJR19MSUJVS0FMTE9D
QkJVRERZICYmIENPTkZJR19MSUJVS0JPT1RfSU5JVEFMTE9DCj4gICAjaW5jbHVkZSA8dWsvYWxs
b2NiYnVkZHkuaD4KPiAgICNlbmRpZgo+IEBAIC0yNTUsNiArMjU5LDE3IEBAIHZvaWQgdWtwbGF0
X2VudHJ5KGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gICAJdG1hLmFyZ2MgPSBhcmdjOwo+ICAg
CXRtYS5hcmd2ID0gYXJndjsKPiAgIAo+ICsjaWYgQ09ORklHX1NNUAoKSSBhbSB1c3VhbGx5IG5v
dCBhIGJpZyBmYW4gb2YgI2lmZGVmLiBXaGF0J3Mgd3Jvbmcgb2YgY2FsbGluZyB0aGlzIGNvZGUg
aW4gCm5vbi1zbXA/IEFmdGVyIGFsbCBjcHVfcG9zc2libGVfbWFwW2ldIHdvdWxkIGJlIGp1c3Qg
LTEuCgpBbHNvLCBpc24ndCBpdCBjb21tb24gY29kZT8gSWYgc28sIEkgdGhpbmsgdGhpcyBzaG91
bGQgYmUgcGFydCBvZiBhIHNlcGFyYXRlIApwYXRjaCBzbyB5b3UgY2FuIGRpc2N1c3MgbW9yZSBl
YXNpbHkgd2l0aCB4ODYgZm9sa3MuCgo+ICsJdWtfcHJfaW5mbygiYmVmb3JlIHN0YXJ0IGNwdVxu
Iik7Cj4gKwo+ICsJZm9yIChpID0gMTsgaSA8IE1BWENQVTsgaSsrKSB7Cj4gKwkJaWYgKGNwdV9w
b3NzaWJsZV9tYXBbaV0gIT0gLTEpCgpXaGF0IGRvZXMgYWN0dWFsbHkgcHJvbWlzZSB5b3UgdGhh
dCBjcHVfcG9zc2libGVfbWFwWzBdIHdpbGwgYmUgdGhlIGJvb3QgQ1BVPwoKPiArCQkJc3RhcnRf
Y3B1KGNwdV9wb3NzaWJsZV9tYXBbaV0pOwo+ICsJfQo+ICsKPiArCXJlbGVhc2VfYXBzKCk7CgpJ
IGRvbid0IHVuZGVyc3RhbmQgd2h5IHlvdSBwYXJrIGFsbCBDUFVzIHVudGlsIHRoZXkgYXJlIGFs
bCB1cC4gWW91IGRvbid0IHNlZW0gCnRvIGRvIGFueSB3b3JrIGJldHdlZW4gdGhlIHR3bywgc28g
d2h5IG5vdCB0cnlpbmcgdG8gbWFrZSB0aGUgc2Vjb25kYXJ5IENQVXMgCndvcmtpbmcgYXMgc29v
biBhcyBwb3NzaWJsZSAob3IgcGFya2VkIGJ5IHRoZSBzY2hlZHVsZXIpPwoKPiArI2VuZGlmCj4g
Kwo+ICAgI2lmIENPTkZJR19MSUJVS1NDSEVECj4gICAJbWFpbl90aHJlYWQgPSB1a190aHJlYWRf
Y3JlYXRlKCJtYWluIiwgbWFpbl90aHJlYWRfZnVuYywgJnRtYSk7Cj4gICAJaWYgKHVubGlrZWx5
KCFtYWluX3RocmVhZCkpCj4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9zZXR1cC5jIGIvcGxh
dC9rdm0vYXJtL3NldHVwLmMKPiBpbmRleCAxZjZlNDU4Li40MDM1MjAyIDEwMDY0NAo+IC0tLSBh
L3BsYXQva3ZtL2FybS9zZXR1cC5jCj4gKysrIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKPiBAQCAt
MjcsNiArMjcsMjkgQEAKPiAgICNpbmNsdWRlIDxhcm0vY3B1Lmg+Cj4gICAjaW5jbHVkZSA8dWsv
YXJjaC9saW1pdHMuaD4KPiAgIAo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ICsjaW5jbHVkZSA8
dWsvcGxhdC9ib290c3RyYXAuaD4KPiArI2luY2x1ZGUgPHVrL3NjaGVkLmg+Cj4gKwo+ICsjaW5j
bHVkZSA8c21wLmg+Cj4gKyNpbmNsdWRlIDx1ay9wbGF0L21lbW9yeS5oPgo+ICsjaW5jbHVkZSA8
dWsvcGxhdC9pby5oPgo+ICsjaW5jbHVkZSA8dWsvcGxhdC9sY3B1Lmg+Cj4gKyNpbmNsdWRlIDxh
cm0vcHNjaS5oPgo+ICsjaW5jbHVkZSA8b2Z3L2ZkdC5oPgo+ICsjaW5jbHVkZSA8dGltZS5oPgo+
ICsKPiArI2lmZGVmIENPTkZJR19TTVAKClNlZSBteSBjb21tZW50IGFib3V0ICNpZmRlZiBhYm92
ZS4gSG93ZXZlciwgaXQgZmVlbHMgb2RkIHRoYXQgdGhlIHZhcmlhYmxlIGFyZSAKdW5kZXIgI2lm
ZGVmLCBidXQgdGhlIGltcGxlbWVudCBjb2RlIGlzIG5vdC4KCj4gK2ludCBhcHNfcmVhZHk7CgpU
aGF0IHdhbnQgdG8gYSBib29sLgoKPiAraW50IHNtcF9zdGFydGVkOwoKU2FtZSBoZXJlLgoKPiAr
aW50IG1wX25jcHVzOwo+ICtpbnQgc21wX2NwdXMgPSAxOwkvKiBob3cgbWFueSBjcHUncyBydW5u
aW5nICovCgpUaGUgbmFtZXMgb2YgbXBfbmNwdXMgYW5kIHNtcF9jcHVzIGFyZSB0b28gY2xvc2Ug
dG8gZWFzaWx5IGRpZmZlcmVudGlhdGUgdGhlbS4KQWxzbywgYSBnZW5lcmFsIHJ1bGUgSSB1c3Vh
bGx5IGFwcGx5IGlzIGFueSB2YWx1ZSB0aGF0IGNhbid0IGJlIG5lZ2F0aXZlIHNob3VsZCAKYmUg
dW5zaWduZWQuCgo+ICt2b2lkIG1wZW50cnkodm9pZCk7Cj4gK3VpbnQ4X3Qgc2Vjb25kYXJ5X3N0
YWNrc1tNQVhDUFUgLSAxXVtfX1BBR0VfU0laRSAqIDRdOwo+ICtpbnQgY3B1X3Bvc3NpYmxlX21h
cFtNQVhDUFVdOwoKQUZBSUNULCBjcHVfcG9zc2libGVfbWFwIGNvbnRhaW5zIHRoZSBNSURSLiBT
byB0aGlzIHdhbnQgdG8gYmUgdWludDY0X3QuCgpPdmVyYWxsLCB0aGlzIG5lZWQgdGhlIHdob2xl
IHNldCBvZiBkZWNsYXJhdGlvbnMgbmVlZHMgbW9yZSBjb21tZW50cy4gCkZ1cnRoZXJtb3JlLCBw
bGVhc2Ugb25seSBleHBvcnQgd2hhdCBpcyByZXF1aXJlZC4gSSBhbSBwcmV0dHkgc3VyZSB0aGF0
IGF0IGxlYXN0IAphcHNfcmVhZHkgYW5kIHNtcF9zdGFydGVkIGNhbiBiZSBzdGF0aWMuCgo+ICtz
dGF0aWMgaW50IGNwdTAgPSAtMTsKCkhtbW0sIGlzIHRoaXMgb25seSB1c2VkIHRvIGtub3cgY3B1
MCBNSURSPyBJZiBzbywgd291bGQgbm90IGl0IG1ha2Ugc2Vuc2UgdG8gdHJ5IAp0byBzdG9yZSB0
aGUgTUlEUiBvZiBDUFUwIGluIGNwdV9wb3NzaWJsZV9tYXBbMF0gZXZlcnl0aW1lPwoKPiArI2Vu
ZGlmCj4gKwo+ICAgdm9pZCAqX2xpYmt2bXBsYXRfcGFnZXRhYmxlOwo+ICAgdm9pZCAqX2xpYmt2
bXBsYXRfaGVhcF9zdGFydDsKPiAgIHZvaWQgKl9saWJrdm1wbGF0X3N0YWNrX3RvcDsKPiBAQCAt
MTkxLDYgKzIxNCwxNjAgQEAgc3RhdGljIHZvaWQgX2xpYmt2bXBsYXRfZW50cnkyKHZvaWQgKmFy
ZyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKPiAgIAl1a3BsYXRfZW50cnlfYXJncChOVUxMLCAo
Y2hhciAqKWNtZGxpbmUsIHN0cmxlbihjbWRsaW5lKSk7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZv
aWQgX2luaXRfZHRiX2NwdSh2b2lkKQoKSSBkb24ndCB0aGluayB0aGlzIGlzIEtWTSBzcGVjaWZp
Yy4KCj4gK3sKPiArCWludCBmZHRfY3B1Owo+ICsJaW50IG5hZGRyLCBuc2l6ZTsKPiArCXVpbnQ2
NF90IGNvcmVfaWQsIGluZGV4Owo+ICsJaW50IHN1Ym5vZGU7Cj4gKwlpbnQgaTsKPiArCj4gKwkv
KiBJbml0IHRoZSBjcHVfcG9zc2libGVfbWFwICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYQ1BV
OyBpKyspCj4gKwkJY3B1X3Bvc3NpYmxlX21hcFtpXSA9IC0xOwoKVGhpcyBjb3VsZCBiZSBhdm9p
ZGVkIGJ5IGluaXRpYWxpemluZyB0aGUgYXJyYXkgYXQgdGhlIGRlY2xhcmF0aW9uLgoKPiArCj4g
KwkvKiBTZWFyY2ggZm9yIGFzc2lnbmVkIFZNIGNwdXMgaW4gRFRCICovCj4gKwlmZHRfY3B1ID0g
ZmR0X3BhdGhfb2Zmc2V0KF9saWJrdm1wbGF0X2R0YiwgIi9jcHVzIik7Cj4gKwlpZiAoZmR0X2Nw
dSA8IDApCj4gKwkJdWtfcHJfd2FybigiY3B1cyBub2RlIGlzIG5vdCBmb3VuZCBpbiBkZXZpY2Ug
dHJlZVxuIik7CgpEb24ndCB5b3UgbWlzcyBhIHJldHVybiBoZXJlPwoKPiArCj4gKwkvKiBHZXQg
YWRkcmVzcyxzaXplIGNlbGwgKi8KPiArCW5hZGRyID0gZmR0X2FkZHJlc3NfY2VsbHMoX2xpYmt2
bXBsYXRfZHRiLCBmZHRfY3B1KTsKPiArCWlmIChuYWRkciA8IDAgfHwgbmFkZHIgPj0gRkRUX01B
WF9OQ0VMTFMpIHsKPiArCQlVS19DUkFTSCgiQ291bGQgbm90IGZpbmQgY3B1IGFkZHJlc3MhXG4i
KTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwluc2l6ZSA9IGZkdF9zaXplX2NlbGxzKF9saWJrdm1w
bGF0X2R0YiwgZmR0X2NwdSk7Cj4gKwlpZiAobnNpemUgPCAwIHx8IG5zaXplID49IEZEVF9NQVhf
TkNFTExTKSB7Cj4gKwkJVUtfQ1JBU0goIkNvdWxkIG5vdCBmaW5kIGNwdSBzaXplIVxuIik7Cj4g
KwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8qIFNlYXJjaCBhbGwgdGhlIGNwdSBub2RlcyBpbiBE
VEIgKi8KPiArCWluZGV4ID0gMDsKPiArCWZkdF9mb3JfZWFjaF9zdWJub2RlKHN1Ym5vZGUsIF9s
aWJrdm1wbGF0X2R0YiwgZmR0X2NwdSkgewo+ICsJCWNvbnN0IHN0cnVjdCBmZHRfcHJvcGVydHkg
KnByb3A7Cj4gKwkJaW50IHByb3BfbGVuID0gMDsKPiArCj4gKwkJaW5kZXgrKzsKPiArCj4gKwkJ
cHJvcCA9IGZkdF9nZXRfcHJvcGVydHkoX2xpYmt2bXBsYXRfZHRiLCBzdWJub2RlLAo+ICsJCQkJ
CQkiZW5hYmxlLW1ldGhvZCIsIE5VTEwpOwo+ICsJCWlmICghcHJvcCB8fCBzdHJjbXAocHJvcC0+
ZGF0YSwgInBzY2kiKSkgewo+ICsJCQl1a19wcl9lcnIoIk9ubHkgc3VwcG9ydCBwc2NpIG1ldGhv
ZCEoJXMpXG4iLAo+ICsJCQkJCXByb3AtPmRhdGEpOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsK
PiArCQlwcm9wID0gZmR0X2dldF9wcm9wZXJ0eShfbGlia3ZtcGxhdF9kdGIsIHN1Ym5vZGUsCj4g
KwkJCQkJCSJkZXZpY2VfdHlwZSIsICZwcm9wX2xlbik7Cj4gKwkJaWYgKCFwcm9wKQo+ICsJCQlj
b250aW51ZTsKPiArCQlpZiAocHJvcF9sZW4gPCA0KQoKSSBkb24ndCB0aGluayB0aGlzIGNoZWNr
IGlzIG5lY2Vzc2FyeS4gRFQgaXMgY29uc2lkZXJlZCB3ZWxsLWZvcm1lZCwgc28gdGhlIApzdHJp
bmcgd291bGQgYWx3YXlzIGZpbmlzaCBieSBhIFwwLgoKPiArCQkJY29udGludWU7Cj4gKwkJaWYg
KHN0cmNtcChwcm9wLT5kYXRhLCAiY3B1IikpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlwcm9w
ID0gZmR0X2dldF9wcm9wZXJ0eShfbGlia3ZtcGxhdF9kdGIsIHN1Ym5vZGUsCj4gKwkJCQkJCSJy
ZWciLCAmcHJvcF9sZW4pOwo+ICsJCWlmIChwcm9wID09IE5VTEwgfHwgcHJvcF9sZW4gPD0gMCkg
ewoKV2h5IDw9MD8gRG9uJ3QgeW91IHdhbnQgdG8gY2hlY2sgdGhhdCBwcm9wX2xlbiBpcyBiaWcg
ZW5vdWdoIGZvciByZWFkaW5nIHRoZSBudW1iZXI/CgpBbHNvLCBJIHRoaW5rIHNwbGl0IHRoZSBj
aGVjayBpbiAyIHdvdWxkIGhlbHAgZm9yIGRlYnVnZ2luZy4gVGhlIG1vcmUuLi4KCj4gKwkJCXVr
X3ByX2VycigiRXJyb3Igd2hlbiBzZWFyY2hpbmcgcmVnIHByb3BlcnR5XG4iKTsKCi4uLiB0aGlz
IGlzIG5vdCBtYWtpbmcgbXVjaCBzZW5zZSB3aGVuIHlvdSBmb3VuZCB0aGUgcHJvcGVydHkgYnV0
IHRoZSBsZW5ndGggaXMgCm5vdCBjb3JyZWN0LgoKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCj4g
KwkJY29yZV9pZCA9IGZkdF9yZWdfcmVhZF9udW1iZXIoKGNvbnN0IGZkdDMyX3QgKilwcm9wLT5k
YXRhLAo+ICsJCQkJCQluYWRkcik7CgpJIHRoaW5rIHdlIHdhbnQgdG8gbWFrZSBhbnkgUkVTMCBi
aXRzIGp1c3QgaW4gY2FzZSB0aGV5IGFyZSBkZWZpbmVkIGZvciBvdGhlciAKcHVycG9zZSBpbiB0
aGUgZnV0dXJlLgoKPiArCQljcHVfcG9zc2libGVfbWFwW2luZGV4LTFdID0gY29yZV9pZDsKPiAr
CQltcF9uY3B1cysrOwo+ICsJfQo+ICt9Cj4gKwo+ICt2b2lkIHJlbGVhc2VfYXBzKHZvaWQpCgpJ
IGFtIG5vdCBjb252aW5jZWQgdGhlIG1vZGVsIG9mIHBhcmtpbmcgdGhlIENQVXMgaW4gaW5pdF9z
ZWNvbmRhcnkgaXMgY29ycmVjdC4gCihzZWUgYWJvdmUpLiBJIHdpbGwgc3RpbGwgY29tbWVudCBv
biB0aGUgY29kZSBqdXN0IGluIGNhc2Ugd2UgZGVjaWRlIHRvIGdvIGFoZWFkLgoKPiArewo+ICsJ
aW50IGksIHN0YXJ0ZWQ7Cj4gKwo+ICsJLyogT25seSByZWxlYXNlIENQVXMgaWYgdGhleSBleGlz
dCAqLwo+ICsJaWYgKG1wX25jcHVzID09IDEpCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8vVE9ETzog
bWFrZSBhcHNfcmVhZHkgYXRvbWljCgpJIGRvbid0IHRoaW5rIHlvdSBuZWVkIGFwc19yZWFkeSB0
byBiZSBhdG9taWMuCgo+ICsJYXBzX3JlYWR5ID0gMTsKPiArCj4gKwkvKiBXYWtlIHVwIHRoZSBv
dGhlciBDUFVzICovCj4gKwlfX2FzbSBfX3ZvbGF0aWxlKAo+ICsJCSJkc2IgaXNoc3QJXG4iCj4g
KwkJInNldgkJXG4iCj4gKwkJOjo6ICJtZW1vcnkiKTsKPiArCj4gKwl1a19wcl9pbmZvKCJSZWxl
YXNlIEFQcy4uLiIpOwo+ICsKPiArCXN0YXJ0ZWQgPSAwOwo+ICsJZm9yIChpID0gMDsgaSA8IDIw
MDAwOyBpKyspIHsKPiArCQlpZiAoc21wX3N0YXJ0ZWQpIHsKCkFzIHNtcF9zdGFydGVkIGlzIG1v
ZGlmaWVkIGJ5IGFuIGV4dGVybmFsIGVudGl0eSAodGhlIHNlY29uZGFyeSBDUFVzKSwgSSB0aGlu
ayAKdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8gYXNzdW1lIHRoaXMgaXMgbmV2ZXIgbW9kaWZpZWQu
IFlvdSBjYW4gZWl0aGVyIG1ha2UgCnNtcF9zdGFydGVkIGEgdm9sYXRpbGUgb3IgdXNlIGJhcnJp
ZXIoKS4KCkJ1dCBJIGRvbid0IHRoaW5rIHRoZSB2YXJpYWJsZSBpcyBuZWNlc3NhcnksIHlvdSBj
b3VsZCBqdXN0IGNoZWNrOgoKaWYgKCBzbXBfY3B1cyA9PSBtcF9jcHVzICkKCj4gKwkJCXVrX3By
X2luZm8oImRvbmVcbiIpOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsJCS8qCj4gKwkJICogRG9u
J3QgdGltZSBvdXQgd2hpbGUgd2UgYXJlIG1ha2luZyBwcm9ncmVzcy4gU29tZSBsYXJnZQo+ICsJ
CSAqIHN5c3RlbXMgY2FuIHRha2UgYSB3aGlsZSB0byBzdGFydCBhbGwgQ1BVcy4KPiArCQkgKi8K
PiArCQlpZiAoc21wX2NwdXMgPiBzdGFydGVkKSB7CgpTYW1lIGFzIHNtcF9zdGFydGVkLCB5b3Ug
d2FudCBhIGNvbXBpbGVyIGJhcnJpZXIgaW4gdGhpcyBjb2RlLiBPbmUgZm9yIHRoZSB0d28gCnNo
b3VsZCBiZSBlbm91Z2guCgo+ICsJCQlpID0gMDsKPiArCQkJc3RhcnRlZCA9IHNtcF9jcHVzOwo+
ICsJCX0KPiArCj4gKwkJdWtfcHJfaW5mbygic2xlZXAgZm9yIGEgd2hpbGVcbiIpOwo+ICsJCW1k
ZWxheSgxKTsKPiArCX0KPiArCj4gKwl1a19wcl9lcnIoIkFQcyBub3Qgc3RhcnRlZFxuIik7Cj4g
K30KPiArCj4gK3ZvaWQgaW5pdF9zZWNvbmRhcnkodWludDY0X3QgY3B1KQoKQSBwcmV2aW91cyBw
YXRjaCBpcyB1c2luZyBpbml0X3NlY29uZGFyeSBiZWZvcmUgaXQgaXMgYWN0dWFsbHkgaW1wbGVt
ZW50ZWQuIENhbiAKeW91IG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgcGF0Y2ggaXMgYXQgbGVhc3Qg
YnVpbGRpbmcgb25lIGJ5IG9uZT8gVGhpcyB3b3VsZCAKYXZvaWQgYnJlYWtpbmcgYmlzZWN0aW9u
IHdpdGggY2FuIGJlIHVzZWZ1bCB0byBwaW4gcG9pbnQgYSBjb21taXQgd2hlbiBlcnJvciBhcmUg
CmludHJvZHVjZWQuCgo+ICt7Cj4gKwlzdHJ1Y3QgdWtfc2NoZWQgKnMgPSBOVUxMOwo+ICsJc3Ry
dWN0IHVrX2FsbG9jICphID0gTlVMTDsKClRoaXMgaXMgZGVmaW5lZCBidXQgbm90IHVzZWQgaGVy
ZS4KCj4gKwo+ICsJdWtfcHJfaW5mbygiaW5pdCBzZWNvbmRhcnkgY3B1PSVsdVxuIiwgY3B1KTsK
CkhvdyBhYm91dDoKCiJCb290aW5nIENQVSVsdVxuIj8KCj4gKwo+ICsJLyogU3BpbiB1bnRpbCB0
aGUgQlNQIHJlbGVhc2VzIHRoZSBBUHMgKi8KPiArCXdoaWxlICghYXBzX3JlYWR5KQoKU2VlIG15
IGNvbW1lbnQgcmVnYXJkaW5nIHNtcF9zdGFydGVkLgoKPiArCQlfX2FzbSBfX3ZvbGF0aWxlKCJ3
ZmUiKTsKPiArCXVrX3ByX2luZm8oImFmdGVyIHdmZSBjcHU9JWx1XG4iLCBjcHUpOwoKQSBtb3Jl
IHVzZWZ1bCBtZXNzYWdlIHdvdWxkIGJlICJDUFUlbHUgcmVsZWFzZWQiLgoKPiArCj4gKwlzbXBf
Y3B1cyArPSAxOwoKQXMgeW91IHJlbGVhc2UgYWxsIHRoZSBDUFVzIHRvZ2V0aGVyLCB0aGlzIG5l
ZWRzIHRvIGJlIGF0b21pYy4gSWYgeW91IHBsYW4gdG8gCmJyaW5nLXVwIENQVSBvbmUgYnkgb25l
IChhcyBzdWdnZXN0ZWQgYWJvdmUpLCB0aGVuIHlvdSBhcmUgc2F2aW5nIHNvbWUgdHJvdWJsZSBo
ZXJlLgoKPiArCj4gKwlpZiAoc21wX2NwdXMgPT0gbXBfbmNwdXMpCj4gKwkJc21wX3N0YXJ0ZWQg
PSAxOwo+ICt9Cj4gKwo+ICt2b2lkIHN0YXJ0X2NwdSh1aW50NjRfdCB0YXJnZXRfY3B1KQo+ICt7
Cj4gKwoKTklUOiBzcHVyaW91cyBsaW5lLgoKPiArCXVpbnQzMl90IHBhOwoKSSB0aGluayB0aGlz
IHdhbnQgdG8gYmUgYSBfX3BoeXNfYWRkciBhcyBQQSBpcyA2NC1iaXQuCgo+ICsJaW50IGVycjsK
PiArCj4gKwkvKiBDaGVjayB3ZSBhcmUgYWJsZSB0byBzdGFydCB0aGlzIGNwdSAqLwo+ICsJVUtf
QVNTRVJUKHRhcmdldF9jcHUgPCBNQVhDUFUpOwo+ICsKPiArCXVrX3ByX2luZm8oIlN0YXJ0aW5n
IENQVSAlbHVcbiIsIHRhcmdldF9jcHUpOwoKTklUOiBJdCB3b3VsZCBiZSBnb29kIHRvIHN0YXkg
Y29uc2lzdGVudCB3aGVuIHByaW50aW5nIENQVS4gU28gSSB3b3VsZCBkbyBzL0NQVSAKJWx1L0NQ
VSVsdS8KCj4gKwo+ICsJLyogV2UgYXJlIGFscmVhZHkgcnVubmluZyBvbiBjcHUgMCAqLwo+ICsJ
aWYgKHRhcmdldF9jcHUgPT0gKHVpbnQ2NF90KWNwdTApCj4gKwkJcmV0dXJuOwoKSWYgeW91IG1h
a2Ugc3VyZSBjcHVfcG9zc2libGVfbWFwWzBdIGlzIGFsd2F5cyB0aGUgQ1BVMCwgdGhlbiB5b3Ug
c2F2ZSB0aGUgCnRyb3VibGUgdG8ga2VlcCBjcHUwIGFyb3VuZC4KCj4gKwo+ICsJcGEgPSB1a3Bs
YXRfdmlydF90b19waHlzKG1wZW50cnkpOwo+ICsJZXJyID0gcHNjaV9jcHVfb24odGFyZ2V0X2Nw
dSwgcGEpOwo+ICsJaWYgKGVyciAhPSBQU0NJX1JFVF9TVUNDRVNTKSB7Cj4gKwkJbXBfbmNwdXMt
LTsKCklzbid0IG1wX25jcHVzIG1lYW50cyB0byBhbHNvIGtub3cgdGhlIG51bWJlciBvZiBlbGVt
ZW50IGluIGNwdV9tYXBfcG9zc2libGU/IEF0IApsZWFzdCB0aGlzIHdvdWxkIGF2b2lkIHRvIGJy
b3dzZSB0aGUgZnVsbCBhcnJheS4KCkluIGFueSBjYXNlLCBJIHdvdWxkIGJlIGNhcmVmdWwgdG8g
ZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgbXBfbmNwdXMgaGVyZS4KCj4gKwo+ICsJCS8qIE5vdGlm
eSB0aGUgdXNlciB0aGF0IHRoZSBDUFUgZmFpbGVkIHRvIHN0YXJ0ICovCj4gKwkJdWtfcHJfaW5m
bygiRmFpbGVkIHRvIHN0YXJ0IENQVSAoJWx4KVxuIiwgdGFyZ2V0X2NwdSk7CgpEaXR0byBoZXJl
IGZvciBDUFUuIEFsc28sIHlvdSBwcm9iYWJseSB3YW50IHRvIHJlcG9ydCB0aGUgZXJyb3IgaGVy
ZS4KCkxhc3RseSwgZG9uJ3QgeW91IG5lZWQgdG8gcmV0dXJuIGhlcmU/Cgo+ICsJfQo+ICsKPiAr
CXVrX3ByX2luZm8oIlN0YXJ0aW5nIENQVSAlbHUgc3VjY2Vzc2Z1bGx5XG4iLCB0YXJnZXRfY3B1
KTsKCkRpdHRvIGZvciBDUFUuCgo+ICt9Cj4gKwo+ICAgdm9pZCBfbGlia3ZtcGxhdF9zdGFydCh2
b2lkICpkdGJfcG9pbnRlcikKPiAgIHsKPiAgIAlfaW5pdF9kdGIoZHRiX3BvaW50ZXIpOwo+IEBA
IC0yMTQsNiArMzkxLDE3IEBAIHZvaWQgX2xpYmt2bXBsYXRfc3RhcnQodm9pZCAqZHRiX3BvaW50
ZXIpCj4gICAJdWtfcHJfaW5mbygiICAgICBoZWFwIHN0YXJ0OiAlcFxuIiwgX2xpYmt2bXBsYXRf
aGVhcF9zdGFydCk7Cj4gICAJdWtfcHJfaW5mbygiICAgICAgc3RhY2sgdG9wOiAlcFxuIiwgX2xp
Ymt2bXBsYXRfc3RhY2tfdG9wKTsKPiAgIAo+ICsJX2luaXRfZHRiX2NwdSgpOwo+ICsKPiArCWlm
IChjcHUwIDwgMCkgewoKVGhpcyBpcyBhIGJpdCBjb25mdXNpbmcuIE5vIG9uZSBpcyBzZXR0aW5n
IGNwdTAgYmVmb3JlIGhlcmUuCgo+ICsJCXVpbnQ2NF90IG1waWRyX3JlZyA9IFNZU1JFR19SRUFE
MzIobXBpZHJfZWwxKTsKCkkgYW0gYWZyYWlkIHRoYXQgc3lzdGVtIHJlZ2lzdGVycyBhcmUgYWx3
YXlzIDY0LWJpdCBvbiBBcm02NC4gV2UgbWFkZSB0aGUgc2FtZSAKdGhlIG1pc3Rha2VzIG9uIFhl
bi4KCkZvciBhIGZpcnN0LCBDbGFuZyB3aWxsIGRlZmluaXRlbHkgbm90IGJlIGhhcHB5IHdpdGgg
aXQgKHNlZSBjb21taXQgYTE3MTM4YjBlNyAKInhlbi9hcm02NDogc3lzcmVnOiBJbXBsZW1lbnQg
dGhlIDMyLWJpdCBoZWxwZXJzIHVzaW5nIHRoZSA2NC1iaXQgaGVscGVycyIpLgoKU2Vjb25kbHks
IHdoaWxlIHNvbWUgcmVnaXN0ZXIgaGF2ZSB0aGUgdG9wIDMyLWJpdCBSRVMwLCB0aGV5IG1heSBi
ZSBkZWZpbmVkIGluIAp0aGUgZnV0dXJlLiBUaGlzIGlzIHRoZSBjYXNlIG9mIFNDVExSX0VMMiBp
biByZWNlbnQgcmV2aXNpb24gb2YgdGhlIGFyY2hpdGVjdHVyZS4KCkluIG51dHNoZWxsLCBTWVNS
RUdfKjMyIHNob3VsZCBiZSBjb21wbGV0ZWx5IHJlbW92ZWQuCgo+ICsKPiArCQl1a19wcl9pbmZv
KCJnZXQgbXBpZHJfZWwxIDB4JWx4XG4iLCBtcGlkcl9yZWcpOwo+ICsKPiArCQlpZiAoKG1waWRy
X3JlZyAmIDB4ZmYwMGZmZmZmZnVsKSA9PSAwKQoKUGxlYXNlIGludHJvZHVjZSBhIG1hc2sgZm9y
IHRoZSB2YWx1ZS4gVGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgaGVscGZ1bCAKc29tZXdoZXJl
LiBCdXQgSSBkb24ndCB0aGluayB5b3UgY2FuIGFzc3VtZSB0aGF0IENQVTAgd2lsbCBhbHdheXMg
aGF2ZSB0aGUgTUlEUiAKZXF1YWwgdG8gMCAoYWNjb3VudGluZyB0aGUgbWFzaykuCgo+ICsJCQlj
cHUwID0gMDsKPiArCX0KPiArCj4gICAJLyoKPiAgIAkgKiBTd2l0Y2ggYXdheSBmcm9tIHRoZSBi
b290c3RyYXAgc3RhY2sgYXMgZWFybHkgYXMgcG9zc2libGUuCj4gICAJICovCj4gCgpDaGVlcnMs
CgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 15:22:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 15:22:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1heLMp-0005vI-JB; Fri, 21 Jun 2019 15:22: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=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heLMp-0005v9-2o
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 15:22:19 +0000
X-Inumbo-ID: 59b244de-9438-11e9-98ab-3b891f2df599
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 59b244de-9438-11e9-98ab-3b891f2df599;
 Fri, 21 Jun 2019 15:22:15 +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 5C7C0344;
 Fri, 21 Jun 2019 08:22:15 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5406E3F575;
 Fri, 21 Jun 2019 08:22:14 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
 <20190621065747.21031-10-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <51e91d79-40fa-7e6f-f203-42642804106e@arm.com>
Date: Fri, 21 Jun 2019 16:22:13 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-10-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 09/11] plat/kvm/arm:
 Add simple percpu variable support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpPbiAyMS8wNi8yMDE5IDA3OjU3LCBKaWEgSGUgd3JvdGU6CgpJIHRoaW5rIHlvdSB3YW50
IHRvIGV4cGxhaW4gaW4geW91ciBjb21taXQgbWVzc2FnZSBob3cgdGhlIHBlcmNwdSBpcyBtZWFu
dCB0byAKd29yayBhbmQgd2hhdCBpcyBhZGRlZCBzbyBmYXIuCgo+IFNpZ25lZC1vZmYtYnk6IEpp
YSBIZSA8anVzdGluLmhlQGFybS5jb20+Cj4gLS0tCj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL3Nt
cC5oIHwgIDcgKysrKysrKwo+ICAgcGxhdC9rdm0vYXJtL3NldHVwLmMgICAgICB8IDIyICsrKysr
KysrKysrKysrKysrKysrKysKPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKQo+
IAo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL3NtcC5oIGIvcGxhdC9jb21tb24v
aW5jbHVkZS9zbXAuaAo+IGluZGV4IDM4ZjgwMWQuLjE1YmI5MmQgMTAwNjQ0Cj4gLS0tIGEvcGxh
dC9jb21tb24vaW5jbHVkZS9zbXAuaAo+ICsrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvc21wLmgK
PiBAQCAtMzQsOCArMzQsMTUgQEAKPiAgICNpZm5kZWYgX19QTEFUX0NNTl9TTVBfSF9fCj4gICAj
ZGVmaW5lIF9fUExBVF9DTU5fU01QX0hfXwo+ICAgCj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgo+
ICtzdHJ1Y3QgcGNwdSB7CgpwY3B1IGlzIG5vdCB2ZXJ5IFNNUCBzcGVjaWZpYy4gWW91IG1heSBz
dGlsbCBuZWVkIGl0IGluIG5vbi1TTVAgdG8gYXZvaWQgCiNpZmRlZmVyeSBhbGwgb3ZlciB0aGUg
Y29kZS4KCj4gKwl1aW50MzJfdAlwY19jcHVpZDsJLyogVGhpcyBjcHUgbnVtYmVyICovCj4gK307
Cj4gKwo+ICAgI2RlZmluZQlNQVhDUFUJCTggLyogaGFyZCBsaW1pdGF0aW9uIGZvciBDUFUgbnVt
YmVyICovCj4gICBleHRlcm4gaW50IGNwdV9wb3NzaWJsZV9tYXBbTUFYQ1BVXTsKPiArc3RydWN0
IHBjcHUgX19wY3B1W01BWENQVV07Cj4gK3N0cnVjdCBwY3B1ICpwY3B1cCA9ICZfX3BjcHVbMF07
CgpIbW1tLCB0aGlzIGlzIGFuIGhlYWRlci4gSSBhbSBzdXJwcmlzZWQgdGhlIGNvbXBpbGVyIGRp
ZG4ndCBjb21wbGFpbiBhYm91dCAKcmVkZWZpbml0aW9uLgoKPiAgIAo+ICAgdm9pZCByZWxlYXNl
X2Fwcyh2b2lkKTsKPiAgIGludCBzdGFydF9jcHUodWludDY0X3QgdGFyZ2V0X2NwdSk7Cj4gZGlm
ZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9zZXR1cC5jIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKPiBp
bmRleCA0MDM1MjAyLi5iMjYyZDk0IDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL2FybS9zZXR1cC5j
Cj4gKysrIGIvcGxhdC9rdm0vYXJtL3NldHVwLmMKPiBAQCAtMzMwLDYgKzMzMCwxNyBAQCB2b2lk
IGluaXRfc2Vjb25kYXJ5KHVpbnQ2NF90IGNwdSkKPiAgIAo+ICAgCXVrX3ByX2luZm8oImluaXQg
c2Vjb25kYXJ5IGNwdT0lbHVcbiIsIGNwdSk7Cj4gICAKPiArCS8qCj4gKwkgKiBTZXQgdGhlIHBj
cHUgcG9pbnRlciB3aXRoIGEgYmFja3VwIGluIHRwaWRyX2VsMSB0byBiZQo+ICsJICogbG9hZGVk
IHdoZW4gZW50ZXJpbmcgdGhlIGtlcm5lbCBmcm9tIHVzZXJsYW5kLgo+ICsJICovCgpJIGRvbid0
IHVuZGVyc3RhbmQgdGhpcy4KCj4gKwlfX2FzbSBfX3ZvbGF0aWxlKAo+ICsJCSJtb3YgeDE4LCAl
MFxuIgoKVGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8gdXNlIHgxOC4gU28gd2h5IHNldHRpbmcgaXQ/
CgoKPiArCQkibXNyIHRwaWRyX2VsMSwgJTAiIDo6ICJyIihwY3B1cCkpOwoKU29tZXRoaW5nIGRv
ZXMgbm90IGFkZCB1cCBoZXJlLiBZb3Ugc2F5IHBlci1jcHUsIGJ1dCBlZmZlY3RpdmVseSB0aGlz
IHBvaW50cyB0byAKdGhlIGJlZ2lubmluZyBvZiB0aGUgcGVyY3B1LiBIb3cgZG9lcyB0aGUgQ1BV
IGlzIHN1cHBvc2VkIHRvIGtub3cgd2hpY2ggcGVyY3B1IAp0byB1c2UgaXQ/CgpPdmVyYWxsLCBJ
IHRoaW5rIHlvdSB3YW50IHRvIHByb3ZpZGUgaGVscGVyIHRvIG1ha2UgZWFzaWVyIGZvciB0aGUg
dXNlciB0byB1c2UgCnBlcmNwdS4KCj4gKwo+ICsJcGNwdXBbY3B1XS5wY19jcHVpZCA9IGNwdTsK
PiArCXVrX3ByX2luZm8oInBjcHVwWyVsdV09JXVcbiIsIGNwdSwgcGNwdXBbY3B1XS5wY19jcHVp
ZCk7Cj4gKwo+ICAgCS8qIFNwaW4gdW50aWwgdGhlIEJTUCByZWxlYXNlcyB0aGUgQVBzICovCj4g
ICAJd2hpbGUgKCFhcHNfcmVhZHkpCj4gICAJCV9fYXNtIF9fdm9sYXRpbGUoIndmZSIpOwo+IEBA
IC00MDgsNiArNDE5LDE3IEBAIHZvaWQgX2xpYmt2bXBsYXRfc3RhcnQodm9pZCAqZHRiX3BvaW50
ZXIpCj4gICAJdWtfcHJfaW5mbygiU3dpdGNoIGZyb20gYm9vdHN0cmFwIHN0YWNrIHRvIHN0YWNr
IEAlcFxuIiwKPiAgIAkJICAgX2xpYmt2bXBsYXRfc3RhY2tfdG9wKTsKPiAgIAo+ICsJLyogU2V0
IHRoZSBwY3B1IGRhdGEsIHRoaXMgaXMgbmVlZGVkIGJ5IHBtYXBfYm9vdHN0cmFwICovCgpJIGNh
bid0IGZpbmQgc3VjaCBmdW5jdGlvbiBpbiB0aGUgY29kZS4KCj4gKwlwY3B1cCA9ICZfX3BjcHVb
MF07Cj4gKwo+ICsJLyoKPiArCSAqIFNldCB0aGUgcGNwdSBwb2ludGVyIHdpdGggYSBiYWNrdXAg
aW4gdHBpZHJfZWwxIHRvIGJlCj4gKwkgKiBsb2FkZWQgd2hlbiBlbnRlcmluZyB0aGUga2VybmVs
IGZyb20gdXNlcmxhbmQuCj4gKwkgKi8KPiArCV9fYXNtIF9fdm9sYXRpbGUoCj4gKwkJIm1vdiB4
MTgsICUwXG4iCj4gKwkJIm1zciB0cGlkcl9lbDEsICUwIiA6OiAiciIocGNwdXApKTsKClNlZSBh
bGwgbXkgY29tbWVudHMgYWJvdmUuIEFsc28sIHlvdSBwcm9iYWJseSB3YW50IHRvIGZhY3RvciB0
aGUgc2V0dXAgaW4gYSAKc2VwYXJhdGUgaGVscGVyIHRvIGF2b2lkIGR1cGxpY2F0aW9uLgoKPiAr
Cj4gICAJX2xpYmt2bXBsYXRfbmV3c3RhY2soKHVpbnQ2NF90KSBfbGlia3ZtcGxhdF9zdGFja190
b3AsCj4gICAJCQkJX2xpYmt2bXBsYXRfZW50cnkyLCBOVUxMKTsKPiAgIH0KPiAKCkNoZWVycywK
Ci0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 15:33:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 15:33: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 1heLXD-0006zD-7I; Fri, 21 Jun 2019 15:33:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=xCuY=UU=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1heLXB-0006z8-Gn
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 15:33:01 +0000
X-Inumbo-ID: da0b3afc-9439-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id da0b3afc-9439-11e9-8980-bc764e045a96;
 Fri, 21 Jun 2019 15:33:00 +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 3D16EC0A;
 Fri, 21 Jun 2019 08:33:00 -0700 (PDT)
Received: from [10.1.196.50] (e108454-lin.cambridge.arm.com [10.1.196.50])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 38DC23F575;
 Fri, 21 Jun 2019 08:32:59 -0700 (PDT)
To: Jia He <justin.he@arm.com>, minios-devel@lists.xenproject.org,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, Sharan.Santhanam@neclab.eu
References: <20190621065747.21031-1-justin.he@arm.com>
From: Julien Grall <julien.grall@arm.com>
Message-ID: <a352a0b1-4c9e-91e8-1650-004fe2e9a759@arm.com>
Date: Fri, 21 Jun 2019 16:32:58 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190621065747.21031-1-justin.he@arm.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 00/11] Enble early SMP
 support 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>,
 Florian Schmidt <florian.schmidt@neclab.eu>, yuri.volchkov@neclab.eu,
 Kaly Xin <Kaly.Xin@arm.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGksCgpUaGFuayB5b3UgZm9yIHNlbmRpbmcgdGhlIHNlcmllcy4KCk9uIDIxLzA2LzIwMTkgMDc6
NTcsIEppYSBIZSB3cm90ZToKPiBUaGlzIGlzIHRoZSBlYXJseSBTTVAgc3VwcG9ydCBvbiBhcm02
NCBrdm0gcGxhdCB3aGljaCBiYXNlZCBvbiBwcmV2aW91cyBzZXJpZXMgIzEtIzUKCkEgcmV2aWV3
ZXIgbWF5IGhhdmUgbm8gaWRlYSB3aGF0IGFyZSAic2VyaWVzICMxIC0gIzUiLiBTbyBJIHdvdWxk
IHJlY29tbWVuZCB0byAKZ2l2ZSBwb2ludGVyIHRvIGVhY2ggb2YgdGhlbS4gQWxzbywgZm9yIGVh
c2luZyByZXZpZXcsIGl0IGlzIG5pY2UgdG8gaGF2ZSBhIHJlcG8gCndpdGggZXZlcnl0aGluZyBh
cHBsaWVkLgoKQnV0IEkgdGhpbmsgYmFzaW5nIHlvdXIgd29yayBvbiA2IGRpZmZlcmVudCBzZXJp
ZXMgaXMgbm90IHJlYWxseSB3aXNlLiBGb3IgYSAKZmlyc3QsIHRoZXJlIHdhcyBhIGxvdCBvZiBj
b21tZW50cyBvbiB0aG9zZSBzZXJpZXMuIERvZXMgaXQgbWVhbiB0aGlzIGlzIGJlZm9yZSAKb3Ig
YWZ0ZXIgdGhlbSBhZGRyZXNzZWQ/CgpTZWNvbmRseSB0aGlzIGlzIG1ha2luZyBtb3JlIGRpZmZp
Y3VsdCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFuZCBwb3RlbnRpYWxseSAKZm9yIHlvdSB0byBh
ZGRyZXNzIGNvbW1lbnQuIE1heSBJIHJlY29tbWVuZCB0byBmb2N1cyBvbiB0aGUgZ2V0dGluZyBz
ZXJpZXMgIzEtIzUgCnRvIGJlIG1lcmdlZD8KCj4gCj4gTW9zdCBvZiB0aGUgY29kZXMgcmVmZXIg
dG8gdGhlIGltcGxlbWVudGF0aW9uIGluIGZyZWVic2QuCgpTb21lIGdlbmVyYWwgY29tbWVudHMg
aGVyZS4gSSBrbm93IHRoaXMgaXMgYW4gZWFybHkgUkZDLCBidXQgSSB3aWxsIHBvaW50IG91dCAK
Zm9yIHRoZSBuZXh0IHNlcmllcyA6KS4KCgkxKSBQbGVhc2UgYmUgbW9yZSB2ZXJib3NlIGluIHRo
ZSBjb21taXQgbWVzc2FnZS4gVGhpcyBpcyBoZWxwZnVsIGZvciByZXZpZXdlciAKYW5kIGZ1dHVy
ZSBkZXZlbG9wZXJzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgcGF0Y2ggZG9lcwoJMikgWW91IHBy
b2JhYmx5IHdhbnQgdG8gbWFrZSB0aGUgR0lDIGNvZGUgU01QIHNhZmUuIEFsc28sIHRoZSBHSUMg
Q1BVIElEIG1heSBiZSAKZGlmZmVyZW50IGZyb20gdGhlIE1JRFIgKHlvdSBkb24ndCB3YW50IHRv
IHJvdXRlIGludGVycnVwdCB0byB0aGUgd3JvbmcgQ1BVIDspKS4KCTMpIEl0IGxvb2tzIGxpa2Ug
c3BpbmxvY2sgaXMgcHJldHR5IG11Y2ggYSBOT1AgdG9kYXkuIElzIHRoZXJlIGFueSBwbGFuIHRv
IAphZGRyZXNzIHRoaXM/CgpDaGVlcnMsCgo+IAo+IEppYSBIZSAoMTEpOgo+ICAgIGxpYi9ub2xp
YmM6IEludHJvZHVjZSBuZGVsYXkgYW5kIG1kZWxheSBmb3IgYnVzeSB3YWl0Cj4gICAgcGxhdC9j
b21tb24vb2Z3OiBNb3ZlIGZkdF9yZWdfcmVhZF9udW1iZXIgdG8gaGVhZGVyIGZpbGUgZm9yIHN0
YXRpYwo+ICAgICAgaW5saW5lCj4gICAgcGxhdC9rdm0vc21wOiBBZGQgcHNjaSBjYWxsIGRlZmlu
aXRpb25zIGluIHBzY2kuaAo+ICAgIHBsYXQva3ZtL3NtcDogQWRkIHNtcCBkZWZpbml0aW9ucyBp
biBzbXAuaAo+ICAgIHBsYXQva3ZtL3NtcDogQWRkIHBzY2kgY2FsbCBwc2NpX2NwdV9vbgo+ICAg
IHBsYXQva3ZtOiBhcm02NDogQWRkIGEgcGFyYW1ldGVyIHRvIHN0YXJ0X21tdQo+ICAgIHBsYXQv
a3ZtOiBhcm02NDogQWRkIGVudHJ5IHBvaW50IGZvciBBUHMgKHNlY29uZGFyeSBjcHVzKQo+ICAg
IHBsYXQva3ZtL2FybTogSW1wbGVtZW50IHNtcCBib290IG9uIGFybTY0IGt2bSBwbGF0Cj4gICAg
cGxhdC9rdm0vYXJtOiBBZGQgc2ltcGxlIHBlcmNwdSB2YXJpYWJsZSBzdXBwb3J0Cj4gICAgbGli
L3VrYm9vdDogRW5hYmxlIENPTkZJR19TTVAgZm9yIGFybTY0Cj4gICAgcGxhdC9rdm0vYXJtOiBF
bmFibGUgc2NoZWR1bGVyIG9uIHNlY29uZGFyeSBBUHMKPiAKPiAgIGxpYi9ub2xpYmMvZXhwb3J0
c3ltcy51ayAgICAgICB8ICAgNCArCj4gICBsaWIvbm9saWJjL2luY2x1ZGUvdGltZS5oICAgICAg
fCAgIDMgKwo+ICAgbGliL25vbGliYy90aW1lLmMgICAgICAgICAgICAgIHwgIDE2ICsrLQo+ICAg
bGliL3VrYm9vdC9Db25maWcudWsgICAgICAgICAgIHwgICA1ICsKPiAgIGxpYi91a2Jvb3QvTWFr
ZWZpbGUudWsgICAgICAgICB8ICAgMSArCj4gICBsaWIvdWtib290L2Jvb3QuYyAgICAgICAgICAg
ICAgfCAgMTUgKysrCj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9wc2NpLmggfCAgODcgKysr
KysrKysrKysrCj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL3NtcC5oICAgICAgfCAgNDkgKysrKysr
Kwo+ICAgcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIHwgIDE3ICsrLQo+ICAgcGxhdC9k
cml2ZXJzL29mdy9mZHQuYyAgICAgICAgIHwgIDE3ICstLQo+ICAgcGxhdC9rdm0vTWFrZWZpbGUu
dWsgICAgICAgICAgIHwgICAxICsKPiAgIHBsYXQva3ZtL2FybS9lbnRyeTY0LlMgICAgICAgICB8
ICAzMSArKysrKwo+ICAgcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMgICAgIHwgICA3ICstCj4g
ICBwbGF0L2t2bS9hcm0vc2V0dXAuYyAgICAgICAgICAgfCAyMzMgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrCj4gICAxNCBmaWxlcyBjaGFuZ2VkLCA0NjYgaW5zZXJ0aW9ucygrKSwg
MjAgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24vaW5jbHVk
ZS9hcm0vcHNjaS5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21tb24vaW5jbHVkZS9z
bXAuaAo+IAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 21 18:42:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Jun 2019 18:42:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1heOUv-0005k3-Og; Fri, 21 Jun 2019 18:42: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=LFBF=UU=citrix.com=lars.kurth@srs-us1.protection.inumbo.net>)
 id 1heOUu-0005jo-Go
 for minios-devel@lists.xenproject.org; Fri, 21 Jun 2019 18:42:52 +0000
X-Inumbo-ID: 55feebc8-9454-11e9-9d96-6fd6228579f0
Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55feebc8-9454-11e9-9d96-6fd6228579f0;
 Fri, 21 Jun 2019 18:42:46 +0000 (UTC)
Authentication-Results: esa1.hc3370-68.iphmx.com;
 dkim=none (message not signed) header.i=none;
 spf=None smtp.pra=lars.kurth@citrix.com;
 spf=Pass smtp.mailfrom=lars.kurth@citrix.com;
 spf=None smtp.helo=postmaster@mail.citrix.com
Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 lars.kurth@citrix.com) identity=pra;
 client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com;
 envelope-from="lars.kurth@citrix.com";
 x-sender="lars.kurth@citrix.com"; x-conformance=sidf_compatible
Received-SPF: Pass (esa1.hc3370-68.iphmx.com: domain of
 lars.kurth@citrix.com designates 162.221.158.21 as permitted
 sender) identity=mailfrom; client-ip=162.221.158.21;
 receiver=esa1.hc3370-68.iphmx.com;
 envelope-from="lars.kurth@citrix.com";
 x-sender="lars.kurth@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 ~all"
Received-SPF: None (esa1.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=esa1.hc3370-68.iphmx.com;
 envelope-from="lars.kurth@citrix.com";
 x-sender="postmaster@mail.citrix.com";
 x-conformance=sidf_compatible
IronPort-SDR: C5syLobnkF0pfm0x76QEeUVQlUtMj2skD/g3RhmjEUdxt72gD3nv1tD67k7YGmUlCm5AYALKEv
 mV6jbCz1dWxHnEvcNnocZ2zggifH3OWFttXkQedllYG+qo2vmUEPBwrT70uNNjbsgC8bZitzQQ
 6MKqKtWy3AwPGUTx5Ktp2nEXJdyQk+8JF05SX64qBrZEEe7akKjalC964A4QVF+pouLJ7wTCqh
 VAfF0OO2zO1z4kgg3O3aYLcJquj6ARu6JBBW6DN8nqaSCPPBH+lBSbz18/8CspV4Zw0Pevo2ol
 Vvo=
X-SBRS: 2.7
X-MesageID: 2088582
X-Ironport-Server: esa1.hc3370-68.iphmx.com
X-Remote-IP: 162.221.158.21
X-Policy: $RELAYED
X-IronPort-AV: E=Sophos;i="5.63,401,1557201600"; 
   d="scan'208";a="2088582"
From: Lars Kurth <lars.kurth@citrix.com>
To: xen-devel <xen-devel@lists.xenproject.org>,
 "advisory-board@lists.xenproject.org" <advisory-board@lists.xenproject.org>,
 "committers@xenproject.org" <committers@xenproject.org>
Thread-Topic: Minimum Community Standards and Best Practice
Thread-Index: AQHVKGEVILfoP7dTokeaD8BGwOzfvg==
Date: Fri, 21 Jun 2019 18:42:31 +0000
Message-ID: <2AD71EE3-A609-44A2-B9CC-616D4F874DDE@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
Content-ID: <5D3C3F14DF468444A8472111A3069ECC@citrix.com>
MIME-Version: 1.0
Subject: [Minios-devel] Minimum Community Standards and Best Practice
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <minios-devel@lists.xenproject.org>,
 "mirageos-devel@lists.xenproject.org" <mirageos-devel@lists.xenproject.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>

RGVhciBDb21tdW5pdHkgTWVtYmVycywNCg0KYXQgdGhlIDIwMTcgRGV2ZWxvcGVyIFN1bW1pdCB0
aGUgcXVlc3Rpb24gb2YgYSBDb2RlIG9mIENvbmR1Y3QgKENvQykgZm9yIHRoZSBYZW4gUHJvamVj
dCBoYWQgY29tZSB1cCBhbmQgc3Vic2VxdWVudGx5IGEgbnVtYmVyIG9mIGluZGl2aWR1YWxzIHdp
dGhpbiB0aGUgY29tbXVuaXR5IGhhdmUgbG9va2VkIGF0IHRoZSBxdWVzdGlvbiBvZiB3aGV0aGVy
IHdlIHNob3VsZCBoYXZlIGEgQ29DIG9yIG5vdC4gTm90ZSB0aGF0IHRoZXJlIHdhcyBhIGRpc2N1
c3Npb24gYXQgdGhlIGxhc3QgY29tbXVuaXR5IGNhbGw6IHNlZSBodHRwczovL2NyeXB0cGFkLmZy
L3BhZC8jLzIvcGFkL2VkaXQvV1pyMlZUZGZtYVBkdkl4alhwK2NnU0YtLyANCg0KVGhpcyBuZXZl
ciByZWFsbHkgbGVkIHRvIGFueXRoaW5nIGV4Y2VwdCBmb3Igc29tZSBkaXNjdXNzaW9ucyBhbW9u
Z3N0IGEgc3Vic2V0IG9mIGluZGl2aWR1YWxzLCBidXQgc2luY2UgdGhlbiANCiogQSBsYXJnZSBu
dW1iZXIgb2Ygb3BlbiBzb3VyY2UgcHJvamVjdHMgKGluY2x1ZGluZyB0aGUgTGludXgga2VybmVs
KSBoYXZlIGFkb3B0ZWQgQ29kZSBvZiBDb25kdWN0cw0KKiBJIGhhdmUgc2VlbiBhbiBpbmNyZWFz
ZSBpbiBmcmljdGlvbiB3aGVuIHdlIGNvbW11bmljYXRlIGFuZCBhbHNvIGFuIGluY3JlYXNlIG9m
IGNvbXBsYWludHMgYWJvdXQgc3BlY2lmaWMgaW50ZXJhY3Rpb25zIChib3RoIGZyb20gbmV3Y29t
ZXJzLCBhcyB3ZWxsIGFzIGVzdGFibGlzaGVkIGNvbW11bml0eSBtZW1iZXJzKS4gTm90ZSB0aGF0
IHdoZW4gSSBsb29rZWQgb3ZlciB0aGUgY29tcGxhaW50cyB3aXRoIHRoZSBoZWxwIG9mIHNvbWUg
dHJ1c3RlZCBjb21tdW5pdHkgbWVtYmVycywgbm9uZSBvZiB0aGUgY29tcGxhaW50cyB3b3VsZCBh
Y3R1YWxseSBoYXZlIGJlZW4gdmlvbGF0aW9ucyBvZiBjb21tb25seSB1c2VkIENvZGUgb2YgQ29u
ZHVjdHMuIEJ1dCB0aGVzZSBhcmUgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZXJlIGlzIG1heWJlIHNv
bWV0aGluZyB0aGF0IGlzIG5vdCBoZWFsdGh5IGFuZCBuZWVkcyBmaXhpbmcgaW4gb3VyIGNvbW11
bml0eS4NCg0KQXMgd2UgaGF2ZSB0aGUgRGV2ZWxvcGVyIFN1bW1pdCBjb21pbmcgdXAgQU5EIHdl
IGhhdmUgYWxsIG9mIG91ciBjb21taXR0ZXJzIHRoZXJlICh3aXRoIHRoZSBleGNlcHRpb24gb2Yg
bWF5YmUgMSksIEkgZmVlbCB2ZXJ5IHN0cm9uZ2x5IHRoYXQgd2Ugc2hvdWxkIHRha2UgdGhlIG9w
cG9ydHVuaXR5IHRvIGRpc2N1c3MgYW5kIHRyeSB0byBmaW5kIGEgY29uc3RydWN0aXZlIHdheSBm
b3J3YXJkLiBJIHRvb2sgYSBjb3VwbGUgb2YgYWN0aW9ucyBhdCB0aGUgbGFzdCBjb21tdW5pdHkg
Y2FsbCBhbmQgbGFzdCBBZHZpc29yeSBCb2FyZCBtZWV0aW5nIGluY2x1ZGluZyBhbiBpbnZlc3Rp
Z2F0aW9uLiBUaGlzIGUtbWFpbCBpcyBvbmUgb2YgdGhlIG91dGNvbWVzLg0KDQpUaGUgZm9sbG93
aW5nIGlzIHN0cnVjdHVyZWQgaW50byB0d28gcGFydHM6IA0KKiBDb2RlIG9mIENvbmR1Y3RzIA0K
KiBCZXN0IFByYWN0aWNlIDogdGhpcyBpcyBob3cgSSBiZWxpZXZlIGhvdyB3ZSBzaG91bGQgYmUg
YWJsZSB0byBzb2x2ZSBtb3N0IG9mIHRoZSBpc3N1ZXMgdGhhdCBJIGhhdmUgc2VlbiBvciByZWNl
aXZlZCBjb21wbGFpbnRzIGFib3V0IHJlY2VudGx5DQoNCiMgQ29kZSBvZiBDb25kdWN0cw0KIyMg
Q29kZSBvZiBDb25kdWN0IFBhdHRlcm5zIGFuZCBFeGFtcGxlcw0KDQpUaGUgbWFqb3JpdHkgb2Yg
Q29kZSBvZiBDb25kdWN0cyB0aGF0IGFyZSB3aWRlbHkgYWRvcHRlZCBpbiBPcGVuIFNvdXJjZSBD
b21tdW5pdGllcyBhcmUgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygb25lIG9mIHRoZSBmb2xsb3dpbmcg
c291cmNlcw0KWzFdIENvbnRyaWJ1dG9yIENvdmVuYW50OiBodHRwOi8vY29udHJpYnV0b3ItY292
ZW5hbnQub3JnLw0KWzJdIERqYW5nbzogaHR0cHM6Ly93d3cuZGphbmdvcHJvamVjdC5jb20vY29u
ZHVjdC8NClszXSBDaXRpemVuIENvZGUgb2YgQ29uZHVjdDogaHR0cDovL2NpdGl6ZW5jb2Rlb2Zj
b25kdWN0Lm9yZy8NCls0XSBHZWVrIEZlbWluaXNtOiBodHRwOi8vZ2Vla2ZlbWluaXNtLm9yZy9h
Ym91dC9jb2RlLW9mLWNvbmR1Y3QvDQoNCkEgZ2VuZXJhbCBwYXR0ZXJuIGluIHRoZXNlIGV4YW1w
bGVzIGlzIHRvIA0KW2FdIE91dGxpbmUgdmFsdWVzL3Njb3BlDQpbYl0gT3V0bGluZSBkZXNpcmVk
IGJlaGF2aW91cg0KW2NdIE91dGxpbmUgdW5hY2NlcHRhYmxlIGJlaGF2aW91ciBhbmQgDQpbZF0g
T3V0bGluZSBwb3NzaWJsZSBjb25zZXF1ZW5jZXMgb2Ygd2hhdCBoYXBwZW5zIHdoZW4gY29tcGxh
aW50cyBhcmUgbWFkZSBhbmQgaG93IGEgZGVjaXNpb24gdG8gaW1wb3NlIGNvbnNlcXVlbmNlcyBh
cmUgcmVhY2hlZA0KDQpOb3RlIHRoYXQgWzRdIGlzIGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGl0IHZl
cnkgbXVjaCBmb2N1c3NlcyBvbiBbYV0sIFtjXSBhbmQgW2RdIG9ubHkuIA0KDQpBbHNvIG5vdGUs
IHRoYXQgd2UgaGF2ZSBmb2xsb3dlZCBhIHNpbWlsYXIgQ29DIGF0IG91ciBEZXZlbG9wZXIgRXZl
bnRzIGZvciBzZXZlcmFsIHllYXJzOiBzZWUNCls1XSBodHRwczovL2V2ZW50cy5saW51eGZvdW5k
YXRpb24ub3JnL2NvZGUtb2YtY29uZHVjdC8NCg0KIyMgUmVjZW50IENvbnRyb3ZlcnN5IGFib3V0
IENvQ3MNCg0KSXQgc2hvdWxkIGFsc28gYmUgbm90ZWQgdGhhdCB0aGUgaW50cm9kdWN0aW9uIG9m
IENvQ3MgaW50byBvcGVuIHNvdXJjZSBhbmQgdGVjaG5vbG9neSBjb21tdW5pdGllcyBoYXMgY3Jl
YXRlZCBjb250cm92ZXJzeSByZWNlbnRseS4gTW9zdCBub3RhYmx5IGFyb3VuZCB0aGUgaW50cm9k
dWN0aW9uIG9mIGEgQ29DIGluIExpbnV4LiBSYXRoZXIgdGhhbiBwYXJ0aWNpcGF0ZSBpbiB0aGlz
IGRlYmF0ZSwgSSBhbSBtZXJlbHkgZ29pbmcgdG8gcHJvdmlkZSBzb21lIGV4YW1wbGVzIC0gbm90
ZSB0aGF0IHNvbWUgb2YgdGhlIHF1b3RlZCBhcnRpY2xlcyBjb3VsZCBiZSBvZmZlbnNpdmUgdG8g
c29tZQ0KWzZdIGh0dHBzOi8vaXRzZm9zcy5jb20vbGludXgtY29kZS1vZi1jb25kdWN0Lw0KWzdd
IGh0dHBzOi8vbW9kZWx2aWV3Y3VsdHVyZS5jb20vcGllY2VzL3RoZS1uZXctbm9ybWFsLWNvZGVz
LW9mLWNvbmR1Y3QtaW4tMjAxNS1hbmQtYmV5b25kIA0KWzhdIGh0dHBzOi8vd3d3LmJyZWl0YmFy
dC5jb20vdGVjaC8yMDE2LzAxLzI1L3J1YnktaGFja2Vycy1pbi1yZXZvbHQtYWZ0ZXItc2p3cy1h
dHRlbXB0LXRvLWltcG9zZS1wb2xpdGljYWxseS1jb3JyZWN0LWNvZGUtb2YtY29uZHVjdC8gICAN
Cg0KTG9va2luZyBhdCBzb21lIG9mIHRoaXMsIGl0IGFwcGVhcnMgdG8gbWUgdGhhdCB3ZSBvdWdo
dCB0byBkbyB0aGUgZm9sbG93aW5nDQoqIEVzdGFibGlzaCBhIHNldCBvZiBNaW5pbXVtIFN0YW5k
YXJkcyB3aGljaCBvdWdodCB0byBiZSBub24tY29udHJvdmVyc2lhbC4gVGhlIHRlcm0gTWluaW11
bSBDb21tdW5pdHkgU3RhbmRhcmQsIG9yIG1heWJlIHNvbWV0aGluZyBldmVuIGNsZWFyZXIgc3Vj
aCBhcyAiVW5hY2NlcHRhYmxlIEJlaGF2aW91ciBQb2xpY3kiIGlzIGluIG15IHZpZXcgcHJlZmVy
YWJsZSB0byB1c2luZyB0aGUgdGVybSBDb0MuIFRoaXMgd291bGQgYmFzaWNhbGx5IGJlIHRoZSBs
YXcgb2YgdGhlIGxhbmQ6IGl0IHdvdWxkIGhhdmUgdG8gYmUgY2xlYXJseSBmb3JtdWxhdGVkIGFy
b3VuZCB1bmFjY2VwdGFibGUgYmVoYXZpb3VyIGluIHlvdXIgd29ya3BsYWNlIHN1Y2ggYXMgYWJ1
c2UsIGJ1bGx5aW5nLCAuLi4gYnV0IG5vdCBhc3BpcmF0aW9uYWwgYmVoYXZpb3Vycy4gV2Ugd291
bGQgaGF2ZSB0byBzZXQgdXAgYSBtZWNoYW5pc20gdG8gcmVwb3J0IGlzc3VlcyBhbmQgZW5mb3Jj
ZSBpdC4gSXQgd291bGQgcHJpbWFyaWx5IGJlIGFuIGluc3VyYW5jZSBwb2xpY3kgZm9yIHRoZSBm
dXR1cmU6IG5vdGUgdGhhdCB3ZSBoYXZlIG5vdCBoYWQgYW55IGlzc3Vlcy4gV2UgY2FuIHVzZSBl
eGlzdGluZyBiYXNlbGluZXMsIHN1Y2ggYXMgWzRdIG9yIFs1XSBhbmQgYWRhcHQgdGhlc2UgYWNj
b3JkaW5nbHksIHdoaWNoIHByaW1hcmlseSBtZWFucyBkZXNpZ25pbmcgdGhlIHJlcG9ydGluZyBh
bmQgcmVzb2x1dGlvbiBtZWNoYW5pc20uIEFzIHdlIGZvbGxvdyBbNV0gYXQgb3VyIGV2ZW50cyBh
bHJlYWR5LCBJIHdvdWxkIHByb2JhYmx5IHN0YXJ0IHdpdGggWzVdIA0KKiBDYXJyeSBvdXIgY29t
bXVuaXR5IG1lbWJlcnMgYWxvbmcgd2hlbiBpbnRyb2R1Y2luZyB0aGUgQ29DOiANCiAgIE15IGlu
dGVudGlvbiBpcyB0aGF0IHRoaXMgbWFpbCBpcyB0aGUgc3RhcnQgb2YgdGhpcyBwcm9jZXNzIGFu
ZCB0aGF0IHdlIGRpc2N1c3MgZnVydGhlciBhdCB0aGUgZGV2ZWxvcGVyIHN1bW1pdCAgDQoqIFdl
IHNlcGFyYXRlIG91dCBFVkVSWVRISU5HIHRoYXQgaXMgYXNwaXJhdGlvbmFsIGludG8gYSBzZXBh
cmF0ZSBtZWNoYW5pc20sIHdoaWNoIGFkZHJlc3NlcyBzcGVjaWZpYyBwcm9ibGVtcyB3ZSBoYXZl
IHRvZGF5IGFuZCBhaW0gdG8gY3JlYXRlIGEgaGVhbHRoaWVyIGFuZCBmcmllbmRsaWVyIGVudmly
b25tZW50IHdoaWNoIGZvciBub3cgSSBjYWxsIEJlc3QgUHJhY3RpY2UsIGJ1dCB0aGlzIGlzIHBy
b2JhYmx5IGEgd3JvbmcgbGFiZWwuIE15IGluaXRpYWwgdGhvdWdodHMgYWJvdXQgdGhpcyBhcmUg
b3V0bGluZWQgaW4gdGhlIG5leHQgc2VjdGlvbg0KDQojIEJlc3QgUHJhY3RpY2UgLyBIZWFsdGh5
IGFuZCBQcm9kdWN0aXZlIEVudmlyb25tZW50DQpUaGlzIGlzIGFuIGFyZWEgd2hlcmUgd2UgaGF2
ZSByZWFsIHByb2JsZW1zIHRvZGF5IGFuZCB3aGVyZSBJIGFsc28gcmVndWxhcmx5IHJlY2VpdmUg
Y29tcGxhaW50cy4gSW4gYSBudXRzaGVsbCwgd2UgYXJlIG5vdCB0aGUgbW9zdCBmcmllbmRseSBh
bmQgd2VsY29taW5nIG9wZW4gc291cmNlIGNvbW11bml0eSBhbmQgYXJlIG9mdGVuIG11Y2ggbW9y
ZSBjb25mcm9udGF0aW9uYWwgdGhhbiB3ZSBzaG91bGQgYmUuIFRoZSBpc3N1ZXMgd2UgaGF2ZSBp
biB0aGlzIGFyZWEgYWZmZWN0IEVWRVJZT05FOiB0aGlzIGluY2x1ZGVzIGNvbW1pdHRlcnMgYW5k
IGxvbmctc3RhbmRpbmcgY29udHJpYnV0b3JzLiBGaXhpbmcgdGhpcyBpcyBub3Qgc29tZXRoaW5n
IHdoaWNoIGlzIGVhc3ksIGJ1dCBJIGNhbiBiZWxpZXZlIGl0IGNhbiBiZSBmaXhlZCBpZiBldmVy
eW9uZSB0cmllcyB0byBwcm8tYWN0aXZlbHkgcmVkdWNlIHVubmVjZXNzYXJ5IGZyaWN0aW9uIChi
ZWNhdXNlIG9mIGRpZmZlcmVudCBjdWx0dXJlcywgcHJpb3JpdGllcywgY29tbXVuaWNhdGlvbiBz
dHlsZXMsIHBlcnNvbmFsaXRpZXMsIOKApikuIA0KDQpJIGRvbid0IGhhdmUgY2xlYXIgYW5zd2Vy
cywgd2hpY2ggbWVhbnMgd2UgcmVhbGx5IG91Z2h0IHRvIGRpc2N1c3MsIHByaW9yaXRpemUgYW5k
IGNvbWUgdG8gc29tZSBzb3J0IG9mIGNvbnNlbnN1cyBhdCB0aGUgc3VtbWl0LiANCg0KIyMgRXhh
bXBsZXMNClRvIG1ha2UgdGhpcyBtb3JlIHJlYWwsIHNvbWUgZXhhbXBsZXMgd2hlcmUgSSBrZWVw
IGdldHRpbmcgY29tcGxhaW50cyBwcmltYXJpbHkgYXJvdW5kIHhlbi1kZXZlbEAgaW50ZXJhY3Rp
b25zIGFyZSBhcm91bmQgcGVyc2lzdGVudGx5DQoqIFVubmVjZXNzYXJ5IGJpa2VzaGVkZGluZw0K
KiBDb21tdW5pY2F0aW9uIHN0eWxlcyBhbmQgbWlzdW5kZXJzdGFuZGluZywgbW9zdCBmcmVxdWVu
dGx5DQogICAtIFNvbWV0aW1lcyB0aGlzIGlzIHBlcmNlaXZlZCBhcyBydWRlbmVzcw0KICAgLSBD
b21tZW50cyB3aXRob3V0IGNsZWFyIGluZGljYXRpb24gb24gaG93IHRvIGZpeCB0aGUgaXNzdWUN
CiAgIC0gVXNlIG9mIHdvcmRzIHRoYXQgYXJlIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3Igbm9uLW5h
dGl2ZSBzcGVha2Vycw0KICAgLSBFdGMuDQoqIFdlIGFyZSBub3Qgc3BlY2lmaWNhbGx5IHdlbGNv
bWluZyB0byBuZXdjb21lcnMgDQoqIFdlIGhhdmUgaGlnaGVyIHN0YW5kYXJkcyB0aGFuIG1vc3Qg
d2hlbiBpdCBjb21lcyB0byBjb2RlIGNvbnRyaWJ1dGlvbnMsIGJ1dCB3ZSBoYXZlIG5vdCBhZ3Jl
ZWQgb3IgZG9jdW1lbnRlZCBvdXIgc3RhbmRhcmRzDQogICAtIEFuIGV4YW1wbGUgcmFpc2VkIGJ5
IENocmlzdG9waGVyIHdhcyB0aGF0IHRoZSBwcm9qZWN0IGhhcyBWRVJZIEhJR0ggc3RhbmRhcmRz
IG9uIGxhbmd1YWdlIG9mIGNvbW1pdCBtZXNzYWdlcw0KICAgLSBXZSBhbHNvIGhhdmUgaGlnaCBy
ZXF1aXJlbWVudHMgd2hlbiBzb21lb25lIGNvbnRyaWJ1dGVzIHRvIGFuIGFyZWEgb2YgY29kZSB3
aGljaCBoYXMgdGVjaG5pY2FsIGRlYnQgaXNzdWVzOiB3ZSBvZnRlbiBpbiB0aGlzIGNhc2UgYXNr
IHRoZSBjb250cmlidXRvcnMgdG8gZml4IGlzc3Vlcy4NCiAgIC0gRXRjLg0KKiBEZWNpc2l2ZW5l
c3MsIGNsYXJpdHkgYW5kIGNvbnNlbnN1cw0KICAgLSBXZSBhcmUgZ2VuZXJhbGx5IG5vdCB2ZXJ5
IGdvb2QgYXQgcmVzb2x2aW5nIGRpc2FncmVlbWVudHMgYW5kIG9mdGVuIGFsbG93IHVucmVzb2x2
ZWQgaXNzdWVzIGZlc3Rlcg0KICAgLSBUaGlzIGlzIHBhcnRpY3VsYXJseSBiYWQgd2hlbiB3ZSBo
YXZlIG11bHRpcGxlIGNvbW1pdHRlcnMgcmV2aWV3aW5nIGEgcG9ydGlvbiBvZiBjb2RlIGFuZCBo
YXZlIGxlbmd0aHkgYXJndW1lbnRzDQogICAgICAtIFRoaXMgbGVhdmVzIGNvbW11bml0eSBtZW1i
ZXJzIHdobyBkb27igJl0IHdvcmsgb24gYW4gb25nb2luZyBiYXNpcyBvbiB0aGUgcHJvamVjdCB1
bmNlcnRhaW4gb2YgYSBjbGVhciBkaXJlY3Rpb24NCiAgICAgIC0gSXQgc2V0cyBhIGJhZCBleGFt
cGxlDQogICAtIEV2ZW4gd2hlbiB3ZSBkbyByZXNvbHZlIGFuIGlzc3VlLCB3ZSBvZnRlbiBkbyBu
b3QgY29kaWZ5IHRoZSBvdXRjb21lIChlLmcuIGluIGNvZGluZyBzdHlsZXMpDQoNClRoaXMgaXMg
bm90IGEgY29tcGxldGUgbGlzdC4gSSBiZWxpZXZlIHRoYXQgd2Ugb3VnaHQgdG8gZGlzY3VzcyB0
aGlzIGluIG1vcmUgZGV0YWlsIGF0IHRoZSBzdW1taXQgYW5kIEkgd2FzIGVuY291cmFnZWQgaW4g
dGhlIGNvbW11bml0eSBjYWxsIHRoYXQgbW9zdCBmZWVsIHRoYXQgDQphKSB3ZSBoYXZlIGEgcmVh
bCBpc3N1ZSBhbmQgDQpiKSB0aGF0IHRoZXJlIGlzIHdpbGxpbmduZXNzIHRvIGNvbnRyaWJ1dGUg
dG8gYWRkcmVzc2luZyB0aGVzZS4gIA0KSSBkbyBhbHNvIGtub3cgLSBhbmQgdG8gc29tZSBkZWdy
ZWUgdGhpcyBhcHBsaWVzIHRvIG1lIGFzIHdlbGwgLSB0aGF0IG5vbi1uYXRpdmUgRW5nbGlzaCBz
cGVha2VycyBzb21ldGltZXMgaGF2ZSBwcm9ibGVtcyBzcGVjaWZpY2FsbHkgd2l0aCBDb21tdW5p
Y2F0aW9uIHN0eWxlcyBhbmQgbWlzdW5kZXJzdGFuZGluZw0KDQpJIGRvIGhhdmUgc29tZSBjb25j
cmV0ZSBpZGVhcyBpbiB0aGlzIGFyZWEsIGJ1dCBJIGRvIG5vdCB3YW50IHRvIHNoYXJlIHRoZXNl
IHlldCBhcyB0aGlzIG1pZ2h0IGluZmx1ZW5jZSB0aGUgZGlzY3Vzc2lvbiB0b28gbXVjaC4gSSBk
byBiZWxpZXZlIHRoYXQgbm9uZSBvZiB0aGlzIGNhbiBiZSBhZGRyZXNzZWQgdGhyb3VnaCBhIENv
ZGUgb2YgQ29uZHVjdCBvciBwcm9jZXNzLiBJdCByZXF1aXJlcyBtb3JlLg0KDQpMb29raW5nIGZv
cndhcmQgdG8gZ2V0IHNvbWUgbW9yZSB2aWV3cy4NCkkgYWxzbyB3aWxsIGNyZWF0ZSBhIGRlc2ln
biBzZXNzaW9uIGZvciB0aGUgRGV2ZWxvcGVyIFN1bW1pdA0KDQpCZXN0IFJlZ2FyZHMNCkxhcnMN
Cg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 23 18:25:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Jun 2019 18:25: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 1hf7B6-0005rW-P8; Sun, 23 Jun 2019 18:25: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=/l2k=UW=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hf7B5-0005rR-6w
 for minios-devel@lists.xen.org; Sun, 23 Jun 2019 18:25:23 +0000
X-Inumbo-ID: 3f51beaa-95e4-11e9-8581-f79391d3c34c
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 3f51beaa-95e4-11e9-8581-f79391d3c34c;
 Sun, 23 Jun 2019 18:25:16 +0000 (UTC)
IronPort-SDR: hJwdTSbqfNDz3ioBavczctjAMe8qD66hrzoZrEl7Mp+XGg9H+PasornJRAHFZLzBo0l8AIYe+Y
 XnvXBBxyuVvQ==
IronPort-PHdr: =?us-ascii?q?9a23=3A40NYwhUe1UK8KRPw67OcQXgWChbV8LGtZVwlr6?=
 =?us-ascii?q?E/grcLSJyIuqrYZRSBv6dThVPEFb/W9+hDw7KP9fy5AypZud3Y6iFKMMQVEU?=
 =?us-ascii?q?Nc0INOx01oKfXGIHWzFOTtYS0+EZYKf35e1Fb/D3JoHt3jbUbZuHy44G1aMB?=
 =?us-ascii?q?z+MQ1oOra9QdaK3Iy42O+o5pLcfRhDiiajbrNuNhW2qhjautULjYd4Jas91w?=
 =?us-ascii?q?XFrmFVd+hKym9kOEyfkhLh7cu04JJv7j5ctv08+8JdS6n2Y7g0QblFBzk6Lm?=
 =?us-ascii?q?4549HmuwPeRgWV/HscVWsWkhtMAwfb6RzxQ4n8vCjnuOdjwSeWJcL5Q6w6Vj?=
 =?us-ascii?q?Sk9KdrVQTniDwbOD4j8WHYkdJ/gaRGqx+8vRN/worUYIaINPpie67WYN0XSX?=
 =?us-ascii?q?ZdUstXSidMBJ63YYkSAOobJetWr5fzqUYAoxW9AgehH//jxiNSi3Pqx6A2z/?=
 =?us-ascii?q?gtHAfb1wIgBdIOt3HUoc3rOacVSuC10KjIzTPeZP1QxDf98JXIeQ0mrP6QWr?=
 =?us-ascii?q?JwatbRyUgpFw/filWQtJTlPy6O2+sRqGiX9fJgVf+0hGI9sQFxpSGiy8ExgY?=
 =?us-ascii?q?fKnoIY0k3I+CpkzIovJtC1SFR3bcC6HJZSrS2XOZN6Tt4tTm11oio3yb0LtY?=
 =?us-ascii?q?SlcCUExpkr3QPTZvOZf4WO/xntTvyeIS1ii3JgYL+/ghGy/lW+xeDkTcm01U?=
 =?us-ascii?q?pKrjJCktnRqnABzxzT5daDSvt65kqhxzOP2BrS6uFAO0w7ibHbJ4Q5wr4tjZ?=
 =?us-ascii?q?Ufq17DHijulEX3iq+ZaFkk9/C15+nof7nqvJyROo9uhg3gLKgjmNazDOogPg?=
 =?us-ascii?q?gLRWeb+OC81LP5/U3+RbVHluE5kq7CsJDGJMQboLS1AwtI0oY79hayFCup0M?=
 =?us-ascii?q?8CkXkfMVJKYwiLj5LuO13WOvD3Ee+/g0iwkDds3/3GO7zhApPMLnjEi7ftZK?=
 =?us-ascii?q?ty5FBCyAUtydBS/JZUCrAaIPLvQU/9rtPZAQE/MwCuxObnEtp93JsEWW2TGq?=
 =?us-ascii?q?+ZLL/SsViQ6+IhPeaMYI4VuC7jJPQ/5/7ukH45lkMcfaSy25sYdmy3HvB8LE?=
 =?us-ascii?q?qCe3bjnMoBG38QvgUiVOzqlEGCUTlLanapX6Iz/Cs7B5igDYvZXYCimrqB3D?=
 =?us-ascii?q?u7HpJMYGBJEFWMHGzud4qaR/gMbDidLdR7njMaSLirU5Uh2g22tA/m17pnKf?=
 =?us-ascii?q?LZ+jYZtZLm09h14ffflRIv9TNqCcSc0n+CT3tvk2MOWTA5wKR/rlZmxVuZz6?=
 =?us-ascii?q?d4nuRSFcZP6PNRTgc6KZncwvRkC9D2QA3OY8+GR0ygQtq7GzE+UNMxz8UVbE?=
 =?us-ascii?q?lnBtqiiRHD3zexDr8Oi7yLGYE7/rjG0HftPMZx0WvG1LE6gFU8WMtPMj7uuq?=
 =?us-ascii?q?kq8gnVBonS1kmUiauuXaAdxzLWsneOyyyJpk4LfhR3VPDuWmsDZ02eicnh+w?=
 =?us-ascii?q?uWRLi1FbUhdA9c0dOqIbAMcsDjy09BEqSwcO/Can68zj/jTS2DwamBOdLn?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BWBQAAww9d/wPjVY1kHgEGBwaBZ4N?=
 =?us-ascii?q?TAh4SKI0RpmsJAQEBOgECAQGEQIMDOBMBAwEBBQEBAQEFAWyKQ4I6IoNuT4E?=
 =?us-ascii?q?CgyKCD6Q9iGWBRoE0hweGLj+EYYURhRUElH6VCwcCghZcBJJ2J5dGAS2lUzg?=
 =?us-ascii?q?hgVgzGoNfghYBjnA8AQExgQYBAY8mAQE?=
X-IPAS-Result: =?us-ascii?q?A2BWBQAAww9d/wPjVY1kHgEGBwaBZ4NTAh4SKI0RpmsJA?=
 =?us-ascii?q?QEBOgECAQGEQIMDOBMBAwEBBQEBAQEFAWyKQ4I6IoNuT4ECgyKCD6Q9iGWBR?=
 =?us-ascii?q?oE0hweGLj+EYYURhRUElH6VCwcCghZcBJJ2J5dGAS2lUzghgVgzGoNfghYBj?=
 =?us-ascii?q?nA8AQExgQYBAY8mAQE?=
X-IronPort-AV: E=Sophos;i="5.63,409,1557176400"; 
   d="scan'208";a="3528273"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 23 Jun 2019 21:25:13 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 1C34E1A602D5;
 Sun, 23 Jun 2019 21:25:16 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id Ty9tL0Y6WDeu; Sun, 23 Jun 2019 21:25:16 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id 011891A602E4;
 Sun, 23 Jun 2019 21:25:16 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id B1_WW79fpfhv; Sun, 23 Jun 2019 21:25:15 +0300 (EEST)
Received: from wolfprec.precis.pub.ro (unknown [141.85.233.142])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id DFE971A602D5;
 Sun, 23 Jun 2019 21:25:15 +0300 (EEST)
From: Costin Lupu <costin.lupu@cs.pub.ro>
To: minios-devel@lists.xen.org
Date: Sun, 23 Jun 2019 21:25:04 +0300
Message-Id: <20190623182504.21227-1-costin.lupu@cs.pub.ro>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [PATCH] include/netinet/tcp.h: Remove TCP_MSS
 definition
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 vlad_andrei.badoiu@stud.acs.upb.ro, 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>

VENQX01TUyBkZWZpbml0aW9uIGlzIGFscmVhZHkgcHJvdmlkZWQgYnkgbHdpcG9wdHMuaC4KClNp
Z25lZC1vZmYtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+Ci0tLQogaW5j
bHVkZS9uZXRpbmV0L3RjcC5oIHwgOCAtLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXRp
bmV0L3RjcC5oCmluZGV4IDZiNzdmZjYuLjAwOTA0MDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0
aW5ldC90Y3AuaAorKysgYi9pbmNsdWRlL25ldGluZXQvdGNwLmgKQEAgLTc5LDE0ICs3OSw2IEBA
IHN0cnVjdCB0Y3BoZHIgewogI2RlZmluZSBUQ1BPUFRfVFNUQU1QX0hEUglcCiAgICAgKFRDUE9Q
VF9OT1A8PDI0fFRDUE9QVF9OT1A8PDE2fFRDUE9QVF9USU1FU1RBTVA8PDh8VENQT0xFTl9USU1F
U1RBTVApCiAKLS8qCi0gKiBEZWZhdWx0IG1heGltdW0gc2VnbWVudCBzaXplIGZvciBUQ1AuCi0g
KiBXaXRoIGFuIElQIE1TUyBvZiA1NzYsIHRoaXMgaXMgNTM2LAotICogYnV0IDUxMiBpcyBwcm9i
YWJseSBtb3JlIGNvbnZlbmllbnQuCi0gKiBUaGlzIHNob3VsZCBiZSBkZWZpbmVkIGFzIE1JTig1
MTIsIElQX01TUyAtIHNpemVvZiAoc3RydWN0IHRjcGlwaGRyKSkuCi0gKi8KLSNkZWZpbmUJVENQ
X01TUwk1MTIKLQogI2RlZmluZQlUQ1BfTUFYV0lOCTY1NTM1CS8qIGxhcmdlc3QgdmFsdWUgZm9y
ICh1bnNjYWxlZCkgd2luZG93ICovCiAKICNkZWZpbmUgVENQX01BWF9XSU5TSElGVAkxNAkvKiBt
YXhpbXVtIHdpbmRvdyBzaGlmdCAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Jun 23 18:29:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Jun 2019 18:29: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 1hf7FM-0005wN-4i; Sun, 23 Jun 2019 18:29:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=/l2k=UW=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1hf7FK-0005vq-Sf
 for minios-devel@lists.xen.org; Sun, 23 Jun 2019 18:29:46 +0000
X-Inumbo-ID: dd63f6ba-95e4-11e9-8980-bc764e045a96
Received: from vesa.cs.pub.ro (unknown [141.85.227.187])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id dd63f6ba-95e4-11e9-8980-bc764e045a96;
 Sun, 23 Jun 2019 18:29:41 +0000 (UTC)
IronPort-SDR: 97MqGl2uKRybyzITd5mknSAdCOGrV0gvKq23ZgF7T35WQa3jPbrpyB7C9vaFjUiti8ytTstsgZ
 H27Q6DnXCS5Q==
IronPort-PHdr: =?us-ascii?q?9a23=3AIXrq3BZOHrWLIhL4exuNFcf/LSx+4OfEezUN45?=
 =?us-ascii?q?9isYplN5qZpsy8bB7h7PlgxGXEQZ/co6odzbaP6ea5ASdZu8fJ8ChbNsAVDl?=
 =?us-ascii?q?ld0YRetjdjKfbNMVf8Iv/uYn5yN+V5f3ghwUuGN1NIEt31fVzYry76xzcTHh?=
 =?us-ascii?q?LiKVg9fbytScbdgMutyu+95YDYbRlWizqhe7NyKwi9oRnMusUMjoZuN7g9xg?=
 =?us-ascii?q?HUrndUdOha2H1kKFaOlBr4+su84YRv/itNt/487cJMTbn2c6ElRrFEEToqNH?=
 =?us-ascii?q?w46tf2vhfZVwuP4XUcUmQSkhVWBgXO8Q/3UJTsvCbkr+RxwCaVM9H4QrAyQj?=
 =?us-ascii?q?Si8rxkSAT0hycdNj4263/Yh8pth69Guh2hphh/w4nJYIGJMfd1Y63Qcc8GSW?=
 =?us-ascii?q?dHQ81cUTFKDIGhYIsVF+cPIPhWr4f9qVUNoxWxCwajC+HzxTFHnXL2wa833v?=
 =?us-ascii?q?49HQ3a0gEtHdQDu2nUotXvM6cSVPi4wbfPzTXYc/NW2DH945XOfBA8ufGMQK?=
 =?us-ascii?q?97fM3NxkkoDAPFklSQqYr/MzORy+QNq3Wb4vF8WuK0kWInsxxxrSO1ysc2jY?=
 =?us-ascii?q?nEn4QYwU3H+yVh2Is5ONK1RFNhbdOnEJZcrT+WO5V0T884TWxkoCY3xqcbtZ?=
 =?us-ascii?q?KlZiQG1pQqyhDFZ/Cab4SF4xTuX/uLLzhinnJqYre/ig638Uin1+LzSNG50E?=
 =?us-ascii?q?1PripZitnMsW0N1wDL5siHVPR9+kCh1C6R1wDW8O5EIEQ0mbDHJJ462LIwjo?=
 =?us-ascii?q?cTvl/ZEi/sn0X6lK6WdkM69ei08+nrf7rrqoKGO4J3igzyKLoiltK9DOgiPA?=
 =?us-ascii?q?UCR22b9v691L3n8035WrJKjvgun6bFt5DaPtgbpq+/AwNP1oYj9g6/Dyq93d?=
 =?us-ascii?q?sEhnkLNkpFeA+cgITzIVHOJ+j0De2jjFS0jDdr2/fGM6XkApXMKHjDkbDhfa?=
 =?us-ascii?q?1k50FB1gUz085Q55ZPB7EFIfLzQVPxtMfCAh42LQO0xfzrCNJn1oMRQWiPGL?=
 =?us-ascii?q?OWMLvOsV+U4eIiO+eMa5ERuDb8M/gq+eTijX8kmV8cYaap3IAaaHamEft6J0?=
 =?us-ascii?q?WWe2Hjjs0fHmcXpgA+VvDliEWeUT5PYHa/R7k85jEhB4K8F4jDQJqhgKeb0y?=
 =?us-ascii?q?e9Ap1WZnpJClaWHnftbIiEXekDZz6WIsB7iTMIT6auS5I53xG0qAD606ZnLv?=
 =?us-ascii?q?bT+iAArpLj1d115+rVlR0o9jx0EtqS02eMTm5qhGMFXDk2075jrkx50FiMyr?=
 =?us-ascii?q?J0jOJFFdZL/fNGTh86NYLAz+x9E93yRAbBcc2UR1m+WNqmByw+TsgvzN8PeU?=
 =?us-ascii?q?pyAM+tgQ3E3yqrHr8YjKeLBIAp8q3BxXT+Pdpyy23c2Kk8l1kpWdFDNXehhv?=
 =?us-ascii?q?03yw+GAo/PkkKC0qqna6kY9CrM73uYi3qDugdfSgEjf7/CWCU0YVDKrNKxwl?=
 =?us-ascii?q?7aUvf6ArM8LgpHj8qfMrZiYcavlUhMAu3kboeNK1mtknu9UE7bjoiHa5DnLj?=
 =?us-ascii?q?0Q?=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2BGCgAgxA9d/wPjVY1kHQEBBQEHBQG?=
 =?us-ascii?q?BZ4METwIeEiiEFoh7i10tmmEJAQEBOgECAQGEQAKDATgTAQMBAQUBAQEBBQF?=
 =?us-ascii?q?sikOCOiKCbwEFI1YQCxgCAiYCAlcTBgIBAYMegg+jCYExhUeDHoFGgQwojTU?=
 =?us-ascii?q?/gREngms+hRGCPYJYBJRBPZULBwKCFlwEknwhjRiKLy2lUzghKoEuMxqDX5E?=
 =?us-ascii?q?HPAEBMYEGAQGPJgEB?=
X-IPAS-Result: =?us-ascii?q?A2BGCgAgxA9d/wPjVY1kHQEBBQEHBQGBZ4METwIeEiiEF?=
 =?us-ascii?q?oh7i10tmmEJAQEBOgECAQGEQAKDATgTAQMBAQUBAQEBBQFsikOCOiKCbwEFI?=
 =?us-ascii?q?1YQCxgCAiYCAlcTBgIBAYMegg+jCYExhUeDHoFGgQwojTU/gREngms+hRGCP?=
 =?us-ascii?q?YJYBJRBPZULBwKCFlwEknwhjRiKLy2lUzghKoEuMxqDX5EHPAEBMYEGAQGPJ?=
 =?us-ascii?q?gEB?=
X-IronPort-AV: E=Sophos;i="5.63,409,1557176400"; 
   d="scan'208";a="3528277"
Received: from mail.cs.pub.ro (HELO vmail.cs.pub.ro) ([141.85.227.3])
 by vesa.cs.pub.ro with ESMTP; 23 Jun 2019 21:29:40 +0300
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id D68831A602D5;
 Sun, 23 Jun 2019 21:29:42 +0300 (EEST)
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id bsl6a8tDw-xc; Sun, 23 Jun 2019 21:29:42 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by vmail.cs.pub.ro (Postfix) with ESMTP id B1CF21A602E4;
 Sun, 23 Jun 2019 21:29:42 +0300 (EEST)
X-Virus-Scanned: amavisd-new at cs.pub.ro
Received: from vmail.cs.pub.ro ([127.0.0.1])
 by localhost (vmail.cs.pub.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id oKRiWFNASsoy; Sun, 23 Jun 2019 21:29:42 +0300 (EEST)
Received: from [192.168.1.35] (5-12-253-106.residential.rdsnet.ro
 [5.12.253.106])
 by vmail.cs.pub.ro (Postfix) with ESMTPSA id 9006A1A602D5;
 Sun, 23 Jun 2019 21:29:42 +0300 (EEST)
To: minios-devel@lists.xen.org
References: <20190623182504.21227-1-costin.lupu@cs.pub.ro>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <cb1b17c2-cb56-3fd6-11de-ffaba72702ab@cs.pub.ro>
Date: Sun, 23 Jun 2019 21:29:39 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190623182504.21227-1-costin.lupu@cs.pub.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [PATCH] include/netinet/tcp.h: Remove TCP_MSS
 definition
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 vlad_andrei.badoiu@stud.acs.upb.ro, 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>

SGksCgpUaGlzIGlzIGEgVU5JS1JBRlQvTFdJUCBwYXRjaC4gSSBmb3Jnb3QgdG8gc2V0IHRoZSBw
cmVmaXgsIHNvcnJ5LgoKVGhhbmtzLApDb3N0aW4KCk9uIDYvMjMvMTkgOToyNSBQTSwgQ29zdGlu
IEx1cHUgd3JvdGU6Cj4gVENQX01TUyBkZWZpbml0aW9uIGlzIGFscmVhZHkgcHJvdmlkZWQgYnkg
bHdpcG9wdHMuaC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVA
Y3MucHViLnJvPgo+IC0tLQo+ICBpbmNsdWRlL25ldGluZXQvdGNwLmggfCA4IC0tLS0tLS0tCj4g
IDEgZmlsZSBjaGFuZ2VkLCA4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9pbmNsdWRl
L25ldGluZXQvdGNwLmggYi9pbmNsdWRlL25ldGluZXQvdGNwLmgKPiBpbmRleCA2Yjc3ZmY2Li4w
MDkwNDA3IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbmV0aW5ldC90Y3AuaAo+ICsrKyBiL2luY2x1
ZGUvbmV0aW5ldC90Y3AuaAo+IEBAIC03OSwxNCArNzksNiBAQCBzdHJ1Y3QgdGNwaGRyIHsKPiAg
I2RlZmluZSBUQ1BPUFRfVFNUQU1QX0hEUglcCj4gICAgICAoVENQT1BUX05PUDw8MjR8VENQT1BU
X05PUDw8MTZ8VENQT1BUX1RJTUVTVEFNUDw8OHxUQ1BPTEVOX1RJTUVTVEFNUCkKPiAgCj4gLS8q
Cj4gLSAqIERlZmF1bHQgbWF4aW11bSBzZWdtZW50IHNpemUgZm9yIFRDUC4KPiAtICogV2l0aCBh
biBJUCBNU1Mgb2YgNTc2LCB0aGlzIGlzIDUzNiwKPiAtICogYnV0IDUxMiBpcyBwcm9iYWJseSBt
b3JlIGNvbnZlbmllbnQuCj4gLSAqIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgYXMgTUlOKDUxMiwg
SVBfTVNTIC0gc2l6ZW9mIChzdHJ1Y3QgdGNwaXBoZHIpKS4KPiAtICovCj4gLSNkZWZpbmUJVENQ
X01TUwk1MTIKPiAtCj4gICNkZWZpbmUJVENQX01BWFdJTgk2NTUzNQkvKiBsYXJnZXN0IHZhbHVl
IGZvciAodW5zY2FsZWQpIHdpbmRvdyAqLwo+ICAKPiAgI2RlZmluZSBUQ1BfTUFYX1dJTlNISUZU
CTE0CS8qIG1heGltdW0gd2luZG93IHNoaWZ0ICovCj4gCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Jun 24 11:41:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 24 Jun 2019 11:41: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 1hfNLL-0000vb-3A; Mon, 24 Jun 2019 11:41:03 +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=MsTU=UX=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hfNLJ-0000vW-MU
 for minios-devel@lists.xen.org; Mon, 24 Jun 2019 11:41:01 +0000
X-Inumbo-ID: ed78c772-9674-11e9-b890-17ddb5af79f1
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ed78c772-9674-11e9-b890-17ddb5af79f1;
 Mon, 24 Jun 2019 11:40:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3CA8AF202E;
 Mon, 24 Jun 2019 13:40:55 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id uJidkyyT-hBK; Mon, 24 Jun 2019 13:40:55 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 11E7FF2008;
 Mon, 24 Jun 2019 13:40:49 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.229]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Mon, 24 Jun 2019 13:40:48
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: Costin Lupu <costin.lupu@cs.pub.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [PATCH] include/netinet/tcp.h: Remove TCP_MSS definition
Thread-Index: AQHVKfEBEZh5EuXYYUSL380E0ZcCWqaqr3KA
Date: Mon, 24 Jun 2019 11:40:48 +0000
Message-ID: <D8FDE894-5781-43FE-8071-47A951526CE7@neclab.eu>
References: <20190623182504.21227-1-costin.lupu@cs.pub.ro>
In-Reply-To: <20190623182504.21227-1-costin.lupu@cs.pub.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.1.2.56]
Content-ID: <AB48C144DA892D4D9C55EEAB56989CF7@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [PATCH] include/netinet/tcp.h: Remove TCP_MSS
 definition
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>,
 "vlad_andrei.badoiu@stud.acs.upb.ro" <vlad_andrei.badoiu@stud.acs.upb.ro>,
 Sharan Santhanam <Sharan.Santhanam@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgQ29zdGluLCB0aGUgcGF0Y2ggbG9va3MgZ29vZCwgdGhhbmtzLg0KDQotLSBGZWxpcGUNCg0K
UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMjMuMDYuMTksIDIwOjI1LCAiQ29zdGluIEx1cHUiIDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+
IHdyb3RlOg0KDQogICAgVENQX01TUyBkZWZpbml0aW9uIGlzIGFscmVhZHkgcHJvdmlkZWQgYnkg
bHdpcG9wdHMuaC4NCiAgICANCiAgICBTaWduZWQtb2ZmLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGlu
Lmx1cHVAY3MucHViLnJvPg0KICAgIC0tLQ0KICAgICBpbmNsdWRlL25ldGluZXQvdGNwLmggfCA4
IC0tLS0tLS0tDQogICAgIDEgZmlsZSBjaGFuZ2VkLCA4IGRlbGV0aW9ucygtKQ0KICAgIA0KICAg
IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGluZXQvdGNwLmggYi9pbmNsdWRlL25ldGluZXQvdGNw
LmgNCiAgICBpbmRleCA2Yjc3ZmY2Li4wMDkwNDA3IDEwMDY0NA0KICAgIC0tLSBhL2luY2x1ZGUv
bmV0aW5ldC90Y3AuaA0KICAgICsrKyBiL2luY2x1ZGUvbmV0aW5ldC90Y3AuaA0KICAgIEBAIC03
OSwxNCArNzksNiBAQCBzdHJ1Y3QgdGNwaGRyIHsNCiAgICAgI2RlZmluZSBUQ1BPUFRfVFNUQU1Q
X0hEUglcDQogICAgICAgICAoVENQT1BUX05PUDw8MjR8VENQT1BUX05PUDw8MTZ8VENQT1BUX1RJ
TUVTVEFNUDw8OHxUQ1BPTEVOX1RJTUVTVEFNUCkNCiAgICAgDQogICAgLS8qDQogICAgLSAqIERl
ZmF1bHQgbWF4aW11bSBzZWdtZW50IHNpemUgZm9yIFRDUC4NCiAgICAtICogV2l0aCBhbiBJUCBN
U1Mgb2YgNTc2LCB0aGlzIGlzIDUzNiwNCiAgICAtICogYnV0IDUxMiBpcyBwcm9iYWJseSBtb3Jl
IGNvbnZlbmllbnQuDQogICAgLSAqIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgYXMgTUlOKDUxMiwg
SVBfTVNTIC0gc2l6ZW9mIChzdHJ1Y3QgdGNwaXBoZHIpKS4NCiAgICAtICovDQogICAgLSNkZWZp
bmUJVENQX01TUwk1MTINCiAgICAtDQogICAgICNkZWZpbmUJVENQX01BWFdJTgk2NTUzNQkvKiBs
YXJnZXN0IHZhbHVlIGZvciAodW5zY2FsZWQpIHdpbmRvdyAqLw0KICAgICANCiAgICAgI2RlZmlu
ZSBUQ1BfTUFYX1dJTlNISUZUCTE0CS8qIG1heGltdW0gd2luZG93IHNoaWZ0ICovDQogICAgLS0g
DQogICAgMi4xMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 12:54:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 12:54: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 1hfkxq-0002IP-SV; Tue, 25 Jun 2019 12:54:22 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=svxC=UY=neclab.eu=charalampos.mainas@srs-us1.protection.inumbo.net>)
 id 1hfkxq-0002IK-6r
 for minios-devel@lists.xenproject.org; Tue, 25 Jun 2019 12:54:22 +0000
X-Inumbo-ID: 583862fe-9748-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 583862fe-9748-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 12:54:19 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 36C881052ED;
 Tue, 25 Jun 2019 14:54:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id mlxwKS0KbR6M; Tue, 25 Jun 2019 14:54:18 +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 150A21052EB
 for <minios-devel@lists.xenproject.org>; Tue, 25 Jun 2019 14:54:18 +0200 (CEST)
Received: from N-1120.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; Tue, 25 Jun
 2019 14:54:17 +0200
From: Charalampos Mainas <Charalampos.Mainas@neclab.eu>
To: <minios-devel@lists.xenproject.org>
Date: Tue, 25 Jun 2019 14:54:03 +0200
Message-ID: <20190625125405.18565-1-Charalampos.Mainas@neclab.eu>
X-Mailer: git-send-email 2.17.1
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/LIBUCONTEXT PATCH 0/2] Initial port of
 libucontext 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: Charalampos Mainas <Charalampos.Mainas@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGxpYnVjb250ZXh0IG9uIFVuaWtyYWZ0
LiBMaWJ1Y29udGV4dAppcyBhIGxpYnJhcnkgd2hpY2ggcHJvdmlkZXMgdGhlIDx1Y29udGV4dC5o
PiBBUEkgZnJvbSBvbGRlciBQT1NJWApyZXZpc2lvbnMuCgpDaGFyYWxhbXBvcyBNYWluYXMgKDIp
OgogIEFkZCBkb2N1bWVudGF0aW9uCiAgSW5pdGlhbCBwb3J0IG9mIGxpYnVjb250ZXh0IG9uIFVu
aWtyYWZ0ICh4ODYpCgogQ09ESU5HX1NUWUxFLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA1ICsrCiBDT05UUklCVVRJTkcubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDUgKysKIENvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSAr
KwogTUFJTlRBSU5FUlMubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKwog
TWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDg1ICsrKysrKysr
KysrKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA2ICsrCiBpbmNsdWRlL3Vjb250ZXh0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg
NzYgKysrKysrKysrKysrKysrKysrCiBwYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0LWhlYWRlci1m
aWxlLnBhdGNoIHwgMjkgKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygr
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0
IENPTlRSSUJVVElORy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51awogY3JlYXRlIG1v
ZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl
L3Vjb250ZXh0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0
LWhlYWRlci1maWxlLnBhdGNoCgotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 12:54:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 12:54: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 1hfkxu-0002Iy-U9; Tue, 25 Jun 2019 12:54: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=svxC=UY=neclab.eu=charalampos.mainas@srs-us1.protection.inumbo.net>)
 id 1hfkxu-0002It-7Q
 for minios-devel@lists.xenproject.org; Tue, 25 Jun 2019 12:54:26 +0000
X-Inumbo-ID: 5a9eb446-9748-11e9-a766-a7a0f5823242
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5a9eb446-9748-11e9-a766-a7a0f5823242;
 Tue, 25 Jun 2019 12:54:23 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4D001F2031;
 Tue, 25 Jun 2019 14:54:22 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id XBuPUjiOT7tA; Tue, 25 Jun 2019 14:54:22 +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 263ADF2006
 for <minios-devel@lists.xenproject.org>; Tue, 25 Jun 2019 14:54:20 +0200 (CEST)
Received: from N-1120.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; Tue, 25 Jun
 2019 14:54:19 +0200
From: Charalampos Mainas <Charalampos.Mainas@neclab.eu>
To: <minios-devel@lists.xenproject.org>
Date: Tue, 25 Jun 2019 14:54:04 +0200
Message-ID: <20190625125405.18565-2-Charalampos.Mainas@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190625125405.18565-1-Charalampos.Mainas@neclab.eu>
References: <20190625125405.18565-1-Charalampos.Mainas@neclab.eu>
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/LIBUCONTEXT PATCH 1/2] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Charalampos Mainas <Charalampos.Mainas@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>

LS0tCiBDT0RJTkdfU1RZTEUubWQgfCAgNSArKysrKwogQ09OVFJJQlVUSU5HLm1kIHwgIDUgKysr
KysKIE1BSU5UQUlORVJTLm1kICB8IDEyICsrKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgIHwg
IDYgKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcu
bWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFJFQURNRS5tZAoKZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2YyNDI3Ci0tLSAvZGV2L251
bGwKKysrIGIvQ09ESU5HX1NUWUxFLm1kCkBAIC0wLDAgKzEsNSBAQAorQ29kaW5nIFN0eWxlCis9
PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxl
IGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKZGlmZiAtLWdpdCBhL0NPTlRSSUJV
VElORy5tZCBiL0NPTlRSSUJVVElORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41MjNjMWIyCi0tLSAvZGV2L251bGwKKysrIGIvQ09OVFJJQlVUSU5HLm1kCkBAIC0wLDAg
KzEsNSBAQAorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0Cis9PT09PT09PT09PT09PT09PT09PT09
PQorCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1h
aW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KKwpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9N
QUlOVEFJTkVSUy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzMwMDgx
Ci0tLSAvZGV2L251bGwKKysrIGIvTUFJTlRBSU5FUlMubWQKQEAgLTAsMCArMSwxMiBAQAorTWFp
bnRhaW5lcnMgTGlzdAorPT09PT09PT09PT09PT09PQorCitGb3Igbm90ZXMgb24gaG93IHRvIHJl
YWQgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4K
K3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKKwlMSUJVQ09OVEVYVC1VTklLUkFGVAor
CU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KKwlNOglDaGFyYWxhbXBv
cyBNYWluYXMgPENoYXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+CisJTDoJbWluaW9zLWRldmVs
QGxpc3RzLnhlbi5vcmcKKwlGOiAqCisKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODIzYzQzCi0tLSAvZGV2L251
bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNiBAQAorbGlidWNvbnRleHQgZm9yIHVuaWty
YWZ0Cis9PT09PT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAg
YXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gCitzdWJkaXJlY3Rvcnkg
b2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4KKwotLSAKMi4xNy4xCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 12:54:29 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 12:54: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 1hfkxw-0002JX-Vk; Tue, 25 Jun 2019 12:54: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=svxC=UY=neclab.eu=charalampos.mainas@srs-us1.protection.inumbo.net>)
 id 1hfkxv-0002JJ-E7
 for minios-devel@lists.xenproject.org; Tue, 25 Jun 2019 12:54:27 +0000
X-Inumbo-ID: 5be0e57c-9748-11e9-9ccb-df6eec113b44
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5be0e57c-9748-11e9-9ccb-df6eec113b44;
 Tue, 25 Jun 2019 12:54:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 5D540F2032;
 Tue, 25 Jun 2019 14:54:24 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 7dPCRnq-8epO; Tue, 25 Jun 2019 14:54:24 +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 333A0F2006
 for <minios-devel@lists.xenproject.org>; Tue, 25 Jun 2019 14:54:22 +0200 (CEST)
Received: from N-1120.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; Tue, 25 Jun
 2019 14:54:21 +0200
From: Charalampos Mainas <Charalampos.Mainas@neclab.eu>
To: <minios-devel@lists.xenproject.org>
Date: Tue, 25 Jun 2019 14:54:05 +0200
Message-ID: <20190625125405.18565-3-Charalampos.Mainas@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190625125405.18565-1-Charalampos.Mainas@neclab.eu>
References: <20190625125405.18565-1-Charalampos.Mainas@neclab.eu>
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/LIBUCONTEXT PATCH 2/2] Initial port of
 libucontext on Unikraft (x86)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Charalampos Mainas <Charalampos.Mainas@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>

LS0tCiBDb25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysK
IE1ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysr
KysrKysrKysrKysrKysKIGluY2x1ZGUvdWNvbnRleHQuaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysKIHBhdGNoZXMvMDAwMS1BZGQtdWNvbnRleHQtaGVh
ZGVyLWZpbGUucGF0Y2ggfCAyOSArKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRp
b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TWFrZWZpbGUudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3Vjb250ZXh0LmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0LWhlYWRlci1maWxlLnBhdGNo
CgpkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQwNjc1YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Db25maWcudWsKQEAg
LTAsMCArMSw1IEBACittZW51Y29uZmlnIExJQlVDT05URVhUCisgICAgICAgICAgIGJvb2wgInVj
b250ZXh0LmggQVBJIgorICAgICAgICAgICBkZWZhdWx0IG4KKwkgICBzZWxlY3QgTElCTkVXTElC
QworCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTA0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmls
ZS51awpAQCAtMCwwICsxLDg1IEBACisjICBsaWJta2wtZG5uIE1ha2VmaWxlLnVrCisjCisjICBB
dXRob3JzOiBDaGFyYWxhbXBvcyBNYWluYXMgPENoYXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+
CisjCisjICAgQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyAgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjICBhcmUgbWV0OgorIworIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAgMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworIyAgICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyMgIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyMgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisjICBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjICBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisjICBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisjCisKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgTGlicmFyeSByZWdpc3RyYXRpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisk
KGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVjb250ZXh0LCQoQ09ORklHX0xJQlVDT05URVhUKSkp
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCitMSUJVQ09OVEVYVF9WRVJTSU9OPWxpYnVjb250ZXh0LW1hc3RlcgorTElCVUNPTlRF
WFRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9BZGVsaWVMaW51eC9saWJ1Y29udGV4dC9hcmNoaXZl
L21hc3Rlci56aXAKK0xJQlVDT05URVhUX0RJUj0kKExJQlVDT05URVhUX1ZFUlNJT04pCisKK0xJ
QlVDT05URVhUX1BBVENIRElSPSQoTElCVUNPTlRFWFRfQkFTRSkvcGF0Y2hlcworJChldmFsICQo
Y2FsbCBmZXRjaCxsaWJ1Y29udGV4dCwkKExJQlVDT05URVhUX1VSTCksbWFzdGVyLnppcCkpCisk
KGV2YWwgJChjYWxsIHBhdGNoLGxpYnVjb250ZXh0LCQoTElCVUNPTlRFWFRfUEFUQ0hESVIpLCQo
TElCVUNPTlRFWFRfRElSKSkpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEhlbHBlcnMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJVQ09OVEVYVF9TUkM9JChMSUJVQ09OVEVYVF9P
UklHSU4pLyQoTElCVUNPTlRFWFRfRElSKS9hcmNoL3g4Nl82NC8KKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgTGlicmFyeSBpbmNsdWRlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0NJ
TkNMVURFUy0kKENPTkZJR19MSUJVQ09OVEVYVCkgKz0gLUkkKExJQlVDT05URVhUX0JBU0UpL2lu
Y2x1ZGUgICAgICAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgR2xvYmFsIGZsYWdzCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1ha2Ug
dGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXIKK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51
c2VkLXBhcmFtZXRlciAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwgICAgICAgXAor
LVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJlbCAtV25vLWNoYXIt
c3Vic2NyaXB0cyAgICAgICAgICAgICBcCistV25vLXVudXNlZC1mdW5jdGlvbiAtV25vLW1pc3Np
bmctZmllbGQtaW5pdGlhbGl6ZXJzIC1Xbm8tdW5pbml0aWFsaXplZCAgICAgICAgIFwKKy1Xbm8t
YXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAt
V25vLXVudXNlZC12YWx1ZSAgXAorLVduby11bnVzZWQtbWFjcm9zIC1Xbm8tcGFyZW50aGVzZXMg
LVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAgICAgICAgICBcCistV25vLW1pc3Np
bmctYnJhY2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUg
ICAgICAgICAgICAgIFwKKy1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby10
eXBlLWxpbWl0cyAtV25vLXNpZ24tY29tcGFyZQorCitMSUJVQ09OVEVYVF9DRkxBR1MteSAgICs9
ICQoU1VQUFJFU1NfRkxBR1MpCitMSUJVQ09OVEVYVF9DWFhGTEFHUy15ICs9ICQoU1VQUFJFU1Nf
RkxBR1MpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCitMSUJVQ09OVEVYVF9TUkNTLXkgKz0gJChMSUJVQ09OVEVYVF9TUkMpL2dl
dGNvbnRleHQuUworTElCVUNPTlRFWFRfU1JDUy15ICs9ICQoTElCVUNPTlRFWFRfU1JDKS9tYWtl
Y29udGV4dC5jCitMSUJVQ09OVEVYVF9TUkNTLXkgKz0gJChMSUJVQ09OVEVYVF9TUkMpL3NldGNv
bnRleHQuUworTElCVUNPTlRFWFRfU1JDUy15ICs9ICQoTElCVUNPTlRFWFRfU1JDKS9zdGFydGNv
bnRleHQuUworTElCVUNPTlRFWFRfU1JDUy15ICs9ICQoTElCVUNPTlRFWFRfU1JDKS9zd2FwY29u
dGV4dC5TCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWNvbnRleHQuaCBiL2luY2x1ZGUvdWNvbnRl
eHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDhjZTRkCi0tLSAvZGV2
L251bGwKKysrIGIvaW5jbHVkZS91Y29udGV4dC5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qIFRha2Vu
IGZyb20gbXVzbCBoZWFkZXIgZmlsZXMgKHVjb250ZXh0LmggYW5kIGFyY2gveDg2XzY0L2JpdHMv
c2lnbmFsLmgpICovCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworI2lmZGVmIF9HTlVfU09VUkNF
CisjZGVmaW5lIFJFR19SOCAgICAgICAgICAwCisjZGVmaW5lIFJFR19SOSAgICAgICAgICAxCisj
ZGVmaW5lIFJFR19SMTAgICAgICAgICAyCisjZGVmaW5lIFJFR19SMTEgICAgICAgICAzCisjZGVm
aW5lIFJFR19SMTIgICAgICAgICA0CisjZGVmaW5lIFJFR19SMTMgICAgICAgICA1CisjZGVmaW5l
IFJFR19SMTQgICAgICAgICA2CisjZGVmaW5lIFJFR19SMTUgICAgICAgICA3CisjZGVmaW5lIFJF
R19SREkgICAgICAgICA4CisjZGVmaW5lIFJFR19SU0kgICAgICAgICA5CisjZGVmaW5lIFJFR19S
QlAgICAgICAgICAxMAorI2RlZmluZSBSRUdfUkJYICAgICAgICAgMTEKKyNkZWZpbmUgUkVHX1JE
WCAgICAgICAgIDEyCisjZGVmaW5lIFJFR19SQVggICAgICAgICAxMworI2RlZmluZSBSRUdfUkNY
ICAgICAgICAgMTQKKyNkZWZpbmUgUkVHX1JTUCAgICAgICAgIDE1CisjZGVmaW5lIFJFR19SSVAg
ICAgICAgICAxNgorI2RlZmluZSBSRUdfRUZMICAgICAgICAgMTcKKyNkZWZpbmUgUkVHX0NTR1NG
UyAgICAgIDE4CisjZGVmaW5lIFJFR19FUlIgICAgICAgICAxOQorI2RlZmluZSBSRUdfVFJBUE5P
ICAgICAgMjAKKyNkZWZpbmUgUkVHX09MRE1BU0sgICAgIDIxCisjZGVmaW5lIFJFR19DUjIgICAg
ICAgICAyMgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSB8fCBkZWZpbmVkKF9C
U0RfU09VUkNFKQordHlwZWRlZiBsb25nIGxvbmcgZ3JlZ190LCBncmVnc2V0X3RbMjNdOwordHlw
ZWRlZiBzdHJ1Y3QgX2Zwc3RhdGUgeworCXVuc2lnbmVkIHNob3J0IGN3ZCwgc3dkLCBmdHcsIGZv
cDsKKwl1bnNpZ25lZCBsb25nIGxvbmcgcmlwLCByZHA7CisJdW5zaWduZWQgbXhjc3IsIG14Y3Jf
bWFzazsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XSwgZXhwb25l
bnQsIHBhZGRpbmdbM107CisJfSBfc3RbOF07CisJc3RydWN0IHsKKwkJdW5zaWduZWQgZWxlbWVu
dFs0XTsKKwl9IF94bW1bMTZdOworCXVuc2lnbmVkIHBhZGRpbmdbMjRdOworfSAqZnByZWdzZXRf
dDsKK3N0cnVjdCBzaWdjb250ZXh0IHsKKwl1bnNpZ25lZCBsb25nIHI4LCByOSwgcjEwLCByMTEs
IHIxMiwgcjEzLCByMTQsIHIxNTsKKwl1bnNpZ25lZCBsb25nIHJkaSwgcnNpLCByYnAsIHJieCwg
cmR4LCByYXgsIHJjeCwgcnNwLCByaXAsIGVmbGFnczsKKwl1bnNpZ25lZCBzaG9ydCBjcywgZ3Ms
IGZzLCBfX3BhZDA7CisJdW5zaWduZWQgbG9uZyBlcnIsIHRyYXBubywgb2xkbWFzaywgY3IyOwor
CXN0cnVjdCBfZnBzdGF0ZSAqZnBzdGF0ZTsKKwl1bnNpZ25lZCBsb25nIF9fcmVzZXJ2ZWQxWzhd
OworfTsKK3R5cGVkZWYgc3RydWN0IHsKKwlncmVnc2V0X3QgZ3JlZ3M7CisJZnByZWdzZXRfdCBm
cHJlZ3M7CisJdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzZXJ2ZWQxWzhdOworfSBtY29udGV4dF90
OworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIF9fc3BhY2VbMzJdOwor
fSBtY29udGV4dF90OworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9fdWNvbnRleHQgeworCXVu
c2lnbmVkIGxvbmcgdWNfZmxhZ3M7CisJc3RydWN0IF9fdWNvbnRleHQgKnVjX2xpbms7CisJc3Rh
Y2tfdCB1Y19zdGFjazsKKwltY29udGV4dF90IHVjX21jb250ZXh0OworCXNpZ3NldF90IHVjX3Np
Z21hc2s7CisJdW5zaWduZWQgbG9uZyBfX2ZwcmVnc19tZW1bNjRdOworfSB1Y29udGV4dF90Owor
CitpbnQgIGdldGNvbnRleHQodWNvbnRleHRfdCAqKTsKK2ludCAgc2V0Y29udGV4dChjb25zdCB1
Y29udGV4dF90ICopOwordm9pZCBtYWtlY29udGV4dCh1Y29udGV4dF90ICosIHZvaWQgKCpfX2Z1
bmMpICh2b2lkKSwgaW50LCAuLi4pOworaW50ICBzd2FwY29udGV4dCh1Y29udGV4dF90ICosIGNv
bnN0IHVjb250ZXh0X3QgKik7CmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0
LWhlYWRlci1maWxlLnBhdGNoIGIvcGF0Y2hlcy8wMDAxLUFkZC11Y29udGV4dC1oZWFkZXItZmls
ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYwOTcyCi0tLSAv
ZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDAxLUFkZC11Y29udGV4dC1oZWFkZXItZmlsZS5wYXRj
aApAQCAtMCwwICsxLDI5IEBACitGcm9tIGJiY2FhZTk5MmY1M2Q4NjQ4YWJhYjUyNTRlODFiZGYz
MDY0MDkxMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFyYWxhbXBvcyBNYWlu
YXMgPENoYXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+CitEYXRlOiBXZWQsIDI5IE1heSAyMDE5
IDExOjM0OjAzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCB1Y29udGV4dCBoZWFkZXIgZmls
ZQorCitPbiBtdXNsIHVjb250ZXh0LmggaGVhZGVyIGZpbGUgaXMgaW5jbHVkZWQgYnkgc2lnbmFs
LmggaGVhZGVyIGZpbGUuIAorCitTaWduZWQtb2ZmLWJ5OiBDaGFyYWxhbXBvcyBNYWluYXMgPENo
YXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+CisKKy0tLQorIGFyY2gveDg2XzY0L21ha2Vjb250
ZXh0LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u
KC0pCisKK2RpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9tYWtlY29udGV4dC5jIGIvYXJjaC94ODZf
NjQvbWFrZWNvbnRleHQuYworaW5kZXggYmE2Y2E1OS4uZTI3MjAwOCAxMDA2NDQKKy0tLSBhL2Fy
Y2gveDg2XzY0L21ha2Vjb250ZXh0LmMKKysrKyBiL2FyY2gveDg2XzY0L21ha2Vjb250ZXh0LmMK
K0BAIC0xMyw3ICsxMyw3IEBACisgI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CistI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkaW50
Lmg+CisgCistLSAKKzIuMTcuMQorCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 15:25:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 15:25: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 1hfnKQ-0006XR-Va; Tue, 25 Jun 2019 15:25:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfnKP-0006XM-PI
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 15:25:49 +0000
X-Inumbo-ID: 8053226d-975d-11e9-8980-bc764e045a96
Received: from FRA01-MR2-obe.outbound.protection.outlook.com (unknown
 [40.107.9.48]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8053226d-975d-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 15:25:46 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4794.eurprd01.prod.exchangelabs.com (20.177.208.208) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 15:25:43 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 15:25:43 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH 1/1] lib/uksysinfo: Add gethostname
 implementation
Thread-Index: AQHVK2pBJ7E63p9nQkWmobTjL/mCyg==
Date: Tue, 25 Jun 2019 15:25:43 +0000
Message-ID: <20190625152533.6011-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0188.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1c::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.104]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 30fc69ca-b044-4b3b-5db7-08d6f9816369
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4794; 
x-ms-traffictypediagnostic: PR1PR01MB4794:
x-microsoft-antispam-prvs: <PR1PR01MB4794DBC042435E053855EF01A6E30@PR1PR01MB4794.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:346;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(39850400004)(136003)(376002)(366004)(396003)(199004)(189003)(86362001)(5640700003)(786003)(50226002)(4326008)(102836004)(2351001)(6436002)(2906002)(6486002)(305945005)(7736002)(52116002)(6916009)(26005)(186003)(74482002)(6512007)(6506007)(68736007)(85202003)(8936002)(53936002)(508600001)(14454004)(99286004)(81166006)(73956011)(71190400001)(66476007)(8676002)(5660300002)(25786009)(476003)(256004)(71200400001)(386003)(66066001)(2616005)(486006)(54906003)(2501003)(66946007)(1076003)(85182001)(316002)(66446008)(64756008)(66556008)(81156014)(3846002)(6116002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4794;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: kfS9/5EjQsrH3ohqi3kP1JBO+u2Vrh2Hde9SnutbqLztXdliyfntBHwmEbWkKbt3dD80AeqraNdLpM+NcJB28Eop8nm7XxMHMTWeluZc/uFv5a6Kcr9Tc1ri4k8ro9EllHoAAyjICnutsQSm9QCL2gtnn875lnaYcV2Y9Xk81me+CURJvduw53Yobu1Bca3+Z+pN+J3xQTRTqh7XAtLSfY0Idyyn8BvPKUJUIAuLqU8oskoxR5kdltAonnG7AgJholM/5yV29PVnzElZy+lJcXtqYf9OeLpZHiqgAtWOlsEppIgKpXzlUnufUlGJYZc80YEP1uVj7EImMs6ucjYlRwMhai3pUG6c6wsJMDPeF/VcPDp8HjhaFK22xjHwp52U00ygias9IYNYyR/K1+Cp5CaLT9rZmDUsdBR0bLMZNfo=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 30fc69ca-b044-4b3b-5db7-08d6f9816369
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 15:25:43.6059 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4794
Subject: [Minios-devel] [UNIKRAFT PATCH 1/1] lib/uksysinfo: Add gethostname
 implementation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogbGliL3Vrc3lzaW5mby9leHBvcnRzeW1zLnVrIHwgIDEgKw0K
IGxpYi91a3N5c2luZm8vc3lzaW5mby5jICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKysN
CiAyIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2xpYi91
a3N5c2luZm8vZXhwb3J0c3ltcy51ayBiL2xpYi91a3N5c2luZm8vZXhwb3J0c3ltcy51aw0KaW5k
ZXggZDIwNWU2MDIuLjJlMzViNmZhIDEwMDY0NA0KLS0tIGEvbGliL3Vrc3lzaW5mby9leHBvcnRz
eW1zLnVrDQorKysgYi9saWIvdWtzeXNpbmZvL2V4cG9ydHN5bXMudWsNCkBAIC00LDMgKzQsNCBA
QCBjb25mc3RyDQogcGF0aGNvbmYNCiBnZXRwYWdlc2l6ZQ0KIHVuYW1lDQorZ2V0aG9zdG5hbWUN
CmRpZmYgLS1naXQgYS9saWIvdWtzeXNpbmZvL3N5c2luZm8uYyBiL2xpYi91a3N5c2luZm8vc3lz
aW5mby5jDQppbmRleCAzYmZmNGU2Zi4uODYxNWQzYWUgMTAwNjQ0DQotLS0gYS9saWIvdWtzeXNp
bmZvL3N5c2luZm8uYw0KKysrIGIvbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMNCkBAIC0zNSw2ICsz
NSw4IEBADQogI2luY2x1ZGUgPHN0ZGRlZi5oPg0KICNpbmNsdWRlIDxsaW1pdHMuaD4NCiAjaW5j
bHVkZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPGVycm5vLmg+DQorI2luY2x1ZGUgPHN0cmluZy5o
Pg0KICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPg0KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+
DQogDQpAQCAtNzAsMyArNzIsMjMgQEAgaW50IHVuYW1lKHN0cnVjdCB1dHNuYW1lICpidWYgX191
bnVzZWQpDQogew0KIAlyZXR1cm4gMDsNCiB9DQorDQoraW50IGdldGhvc3RuYW1lKGNoYXIgKm5h
bWUsIHNpemVfdCBsZW4pDQorew0KKwlzdHJ1Y3QgdXRzbmFtZSBidWY7DQorCXNpemVfdCBub2Rl
X2xlbjsNCisJaW50IHJjOw0KKw0KKwlpZiAoKHJjID0gdW5hbWUoJmJ1ZikpKQ0KKwkJcmV0dXJu
IC0xOw0KKw0KKwlub2RlX2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsNCisJaWYgKG5v
ZGVfbGVuID4gbGVuKSB7DQorCQllcnJubyA9IEVOQU1FVE9PTE9ORzsNCisJCXJldHVybiAtMTsN
CisJfQ0KKw0KKwlzdHJuY3B5KG5hbWUsIGJ1Zi5ub2RlbmFtZSwgbm9kZV9sZW4pOw0KKw0KKwly
ZXR1cm4gMDsNCit9DQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 15:49:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 15:49: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 1hfngz-0008Nb-NP; Tue, 25 Jun 2019 15:49:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfngx-0008NW-WA
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 15:49:08 +0000
X-Inumbo-ID: c31b5b6c-9760-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.83]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c31b5b6c-9760-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 15:49:06 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4938.eurprd01.prod.exchangelabs.com (20.177.208.75) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 15:49:04 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 15:49:04 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT PATCH v2 1/1] lib/uksysinfo: Add gethostname
 implementation
Thread-Index: AQHVK22EWtFto900RUKQ/7XrYALVAA==
Date: Tue, 25 Jun 2019 15:49:04 +0000
Message-ID: <20190625154855.7618-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR2PR09CA0008.eurprd09.prod.outlook.com
 (2603:10a6:101:16::20) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.104]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 652ea5f1-2d0a-4fff-953d-08d6f984a674
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4938; 
x-ms-traffictypediagnostic: PR1PR01MB4938:
x-microsoft-antispam-prvs: <PR1PR01MB493894A4CC0BD4C28703DB7CA6E30@PR1PR01MB4938.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:346;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(136003)(376002)(39850400004)(366004)(396003)(346002)(189003)(199004)(6506007)(99286004)(7736002)(86362001)(386003)(8936002)(26005)(14454004)(305945005)(52116002)(6512007)(6436002)(50226002)(316002)(786003)(3846002)(2501003)(54906003)(68736007)(6486002)(5640700003)(6116002)(81156014)(81166006)(85202003)(53936002)(6916009)(25786009)(71190400001)(2616005)(4326008)(85182001)(5660300002)(64756008)(66446008)(8676002)(66476007)(71200400001)(73956011)(2351001)(66556008)(66946007)(476003)(486006)(66066001)(186003)(508600001)(256004)(74482002)(102836004)(2906002)(1076003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4938;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: qtYKvI4HQsymJaUewXnVzTO46Lp2W94euIQOO/e4LBfC43GKQPma5oDkfE6mYY27LPGtMc6dQBFxV14iq01VdBWpyWk5ZsfF35B07Ln0vjNrO9fe8EQ5BNGVF/HVUH7zcHz0x9VufVhuFrsE8oVncRL4ADOwkLZ8MOAxaoayAJjUc0JnJl6h4Aukp3DbKgejQGfjYq9BlJrX4U94CnxfB8pamODyvdasxeWS3gwgk0X+zz9m5z8oTMfQZbSllg/o3a0k5JPxImkEUixp8Nqe3NfujPbf2VTAJ5KrdV5j38OFNvjJo2xXjldnkTUoo+8oOv6094MZIfMMQ+qL27A1kFdn2046918RJix4cJWMw/kPU5i9dqjtkv8RkJsPNV3TqfRIHxBWf88Epnr026JXWhUVCDsXbjcXzWB/coF1mFE=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 652ea5f1-2d0a-4fff-953d-08d6f984a674
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 15:49:04.6179 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4938
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/uksysinfo: Add
 gethostname implementation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogbGliL3Vrc3lzaW5mby9leHBvcnRzeW1zLnVrIHwgIDEgKw0K
IGxpYi91a3N5c2luZm8vc3lzaW5mby5jICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysr
DQogMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9saWIv
dWtzeXNpbmZvL2V4cG9ydHN5bXMudWsgYi9saWIvdWtzeXNpbmZvL2V4cG9ydHN5bXMudWsNCmlu
ZGV4IGQyMDVlNjAyLi4yZTM1YjZmYSAxMDA2NDQNCi0tLSBhL2xpYi91a3N5c2luZm8vZXhwb3J0
c3ltcy51aw0KKysrIGIvbGliL3Vrc3lzaW5mby9leHBvcnRzeW1zLnVrDQpAQCAtNCwzICs0LDQg
QEAgY29uZnN0cg0KIHBhdGhjb25mDQogZ2V0cGFnZXNpemUNCiB1bmFtZQ0KK2dldGhvc3RuYW1l
DQpkaWZmIC0tZ2l0IGEvbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMgYi9saWIvdWtzeXNpbmZvL3N5
c2luZm8uYw0KaW5kZXggM2JmZjRlNmYuLjE1ZTA5N2M0IDEwMDY0NA0KLS0tIGEvbGliL3Vrc3lz
aW5mby9zeXNpbmZvLmMNCisrKyBiL2xpYi91a3N5c2luZm8vc3lzaW5mby5jDQpAQCAtMzUsNiAr
MzUsOCBAQA0KICNpbmNsdWRlIDxzdGRkZWYuaD4NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQogI2lu
Y2x1ZGUgPHVuaXN0ZC5oPg0KKyNpbmNsdWRlIDxlcnJuby5oPg0KKyNpbmNsdWRlIDxzdHJpbmcu
aD4NCiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4NCiAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5o
Pg0KIA0KQEAgLTcwLDMgKzcyLDI0IEBAIGludCB1bmFtZShzdHJ1Y3QgdXRzbmFtZSAqYnVmIF9f
dW51c2VkKQ0KIHsNCiAJcmV0dXJuIDA7DQogfQ0KKw0KK2ludCBnZXRob3N0bmFtZShjaGFyICpu
YW1lLCBzaXplX3QgbGVuKQ0KK3sNCisJc3RydWN0IHV0c25hbWUgYnVmOw0KKwlzaXplX3Qgbm9k
ZV9sZW47DQorCWludCByYzsNCisNCisJcmMgPSB1bmFtZSgmYnVmKTsNCisJaWYgKHJjKQ0KKwkJ
cmV0dXJuIC0xOw0KKw0KKwlub2RlX2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsNCisJ
aWYgKG5vZGVfbGVuID4gbGVuKSB7DQorCQllcnJubyA9IEVOQU1FVE9PTE9ORzsNCisJCXJldHVy
biAtMTsNCisJfQ0KKw0KKwlzdHJuY3B5KG5hbWUsIGJ1Zi5ub2RlbmFtZSwgbm9kZV9sZW4pOw0K
Kw0KKwlyZXR1cm4gMDsNCit9DQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 15:55:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 15:55: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 1hfnnJ-00018z-5i; Tue, 25 Jun 2019 15:55:41 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x1wx=UY=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hfnnH-00018q-TB
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 15:55:39 +0000
X-Inumbo-ID: accd2d3d-9761-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id accd2d3d-9761-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 15:55:38 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id n4so18435570wrw.13
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 08:55:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=xrFtgEkU7R/cUrkAqvvI6AmFkcep98gedMlu8n6+QZQ=;
 b=TK1kAvAvO9ziVYHRlOmpHXHETgI+WZB0UbJHakkMMz/h2jhwO3DfVF0gwCwSdxY2AW
 PLQVr5gb5As206LEh7W2Up28ZWhZ/6GfNq3cRRHlPRaasWKQu3oS6iKcZnvAh1V7m4aW
 T8vy3uRZfBVdtt8eNmP7onpKwyKJ/hBNcSg1NaVYyKEsJbkzPvZ4ubwEeE01QQx6lBVK
 Lm6qxU9XWCS5q+6EklNu+shE0oGjT2FyjH+oqhOsxVW4LW58wykcfiDT35kJdpZNjtJ8
 f2wO8oFIGgfONDPUWS52UdxMcgP+BFG9/N7kgw2aNCK7+8iAaLhjJgnA+K9vROFBSbmE
 j5Lg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=xrFtgEkU7R/cUrkAqvvI6AmFkcep98gedMlu8n6+QZQ=;
 b=BLng3dw9NKOjLlA+EkPqOELtL1/JfvCLCz8KuAcQVlbbXVV8GlU9bLXlzFL7oZG2Uj
 bdH3j0NfbqpC6m8NbMvrI3ZEEKgtJXmU+3PIuiy6esSFMDmORcwVHukD10EQTC2Os8zT
 uNk+XJMOwvVTV5GtjF7awkZWwU5gxfztiUa6C6EyhD3Ew1fvbifqgvqEgLb/iNDz8N7c
 R4IUnxRLyjmlPESdBZp2ayEFM+aHfUX+jVGmeivAl/jGJY31SeBUIK0w+haD4Agb/oO3
 0tr4PQbkRfxM2E0P6Opj/aQFx/UeQnwU3wLu7u9L2RGDoNRffOT8GBNWWGCPI75rRwCi
 6T5g==
X-Gm-Message-State: APjAAAVqk4osJeehYRbr07gLx8+LCr1KUf1dWoUyl88BzEuxjDHwPiic
 QFA+rbxi1YlqSaoFw6g+AwI=
X-Google-Smtp-Source: APXvYqxG/UovFsw1fdi9Px1j8TawlA0YDMwuePsKvThOKs9UsAAZvsExlWl6rjXvIXWgJqfsEiAq+g==
X-Received: by 2002:a5d:528d:: with SMTP id c13mr56520364wrv.247.1561478137477; 
 Tue, 25 Jun 2019 08:55:37 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id v27sm34145299wrv.45.2019.06.25.08.55.36
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 08:55:37 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190625154855.7618-1-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <a2ad5cd5-77f7-c18c-79a2-4dc17d544582@gmail.com>
Date: Tue, 25 Jun 2019 18:55:36 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190625154855.7618-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/1] lib/uksysinfo: Add
 gethostname implementation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhhbmtzLCBWbGFkIQoKUmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5w
dWIucm8+CgpPbiA2LzI1LzE5IDY6NDkgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3
cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJh
ZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIGxpYi91a3N5c2luZm8vZXhwb3J0c3ltcy51
ayB8ICAxICsKPiAgbGliL3Vrc3lzaW5mby9zeXNpbmZvLmMgICAgIHwgMjMgKysrKysrKysrKysr
KysrKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCj4gCj4gZGlm
ZiAtLWdpdCBhL2xpYi91a3N5c2luZm8vZXhwb3J0c3ltcy51ayBiL2xpYi91a3N5c2luZm8vZXhw
b3J0c3ltcy51awo+IGluZGV4IGQyMDVlNjAyLi4yZTM1YjZmYSAxMDA2NDQKPiAtLS0gYS9saWIv
dWtzeXNpbmZvL2V4cG9ydHN5bXMudWsKPiArKysgYi9saWIvdWtzeXNpbmZvL2V4cG9ydHN5bXMu
dWsKPiBAQCAtNCwzICs0LDQgQEAgY29uZnN0cgo+ICBwYXRoY29uZgo+ICBnZXRwYWdlc2l6ZQo+
ICB1bmFtZQo+ICtnZXRob3N0bmFtZQo+IGRpZmYgLS1naXQgYS9saWIvdWtzeXNpbmZvL3N5c2lu
Zm8uYyBiL2xpYi91a3N5c2luZm8vc3lzaW5mby5jCj4gaW5kZXggM2JmZjRlNmYuLjE1ZTA5N2M0
IDEwMDY0NAo+IC0tLSBhL2xpYi91a3N5c2luZm8vc3lzaW5mby5jCj4gKysrIGIvbGliL3Vrc3lz
aW5mby9zeXNpbmZvLmMKPiBAQCAtMzUsNiArMzUsOCBAQAo+ICAjaW5jbHVkZSA8c3RkZGVmLmg+
Cj4gICNpbmNsdWRlIDxsaW1pdHMuaD4KPiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsjaW5jbHVk
ZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICAjaW5jbHVkZSA8c3lzL3V0c25h
bWUuaD4KPiAgI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiAgCj4gQEAgLTcwLDMgKzcyLDI0
IEBAIGludCB1bmFtZShzdHJ1Y3QgdXRzbmFtZSAqYnVmIF9fdW51c2VkKQo+ICB7Cj4gIAlyZXR1
cm4gMDsKPiAgfQo+ICsKPiAraW50IGdldGhvc3RuYW1lKGNoYXIgKm5hbWUsIHNpemVfdCBsZW4p
Cj4gK3sKPiArCXN0cnVjdCB1dHNuYW1lIGJ1ZjsKPiArCXNpemVfdCBub2RlX2xlbjsKPiArCWlu
dCByYzsKPiArCj4gKwlyYyA9IHVuYW1lKCZidWYpOwo+ICsJaWYgKHJjKQo+ICsJCXJldHVybiAt
MTsKPiArCj4gKwlub2RlX2xlbiA9IHN0cmxlbihidWYubm9kZW5hbWUpICsgMTsKPiArCWlmIChu
b2RlX2xlbiA+IGxlbikgewo+ICsJCWVycm5vID0gRU5BTUVUT09MT05HOwo+ICsJCXJldHVybiAt
MTsKPiArCX0KPiArCj4gKwlzdHJuY3B5KG5hbWUsIGJ1Zi5ub2RlbmFtZSwgbm9kZV9sZW4pOwo+
ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:32:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:32: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 1hfoNJ-0004uM-QZ; Tue, 25 Jun 2019 16:32:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfoNI-0004uC-S4
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:32:52 +0000
X-Inumbo-ID: dee0e5be-9766-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.55]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id dee0e5be-9766-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:32:50 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5050.eurprd01.prod.exchangelabs.com (20.177.208.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 16:32:44 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 16:32:44 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 0/3] Add gethost*, getserv* and getproto*
Thread-Index: AQHVK3Od9EECObEboE+TBenbvBOUQg==
Date: Tue, 25 Jun 2019 16:32:44 +0000
Message-ID: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0136.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a69159d7-c166-4b18-8fb0-08d6f98ac03f
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5050; 
x-ms-traffictypediagnostic: PR1PR01MB5050:
x-microsoft-antispam-prvs: <PR1PR01MB5050A8731A359593D5D45588A6E30@PR1PR01MB5050.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:5797;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39850400004)(366004)(396003)(136003)(189003)(199004)(26005)(4744005)(71190400001)(66946007)(486006)(102836004)(54906003)(4326008)(3846002)(316002)(8676002)(81166006)(53936002)(81156014)(25786009)(2501003)(8936002)(6512007)(256004)(7736002)(305945005)(6916009)(1076003)(66446008)(86362001)(508600001)(52116002)(64756008)(99286004)(5640700003)(2351001)(186003)(6116002)(386003)(6436002)(786003)(71200400001)(14454004)(66066001)(6506007)(73956011)(85182001)(6486002)(68736007)(2616005)(476003)(85202003)(2906002)(5660300002)(50226002)(66476007)(74482002)(66556008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5050;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: zXT7GemAplxyRc0RrCYji9QQ0tT8g9LiJ/xMXCnow0OjoDLZCzZbzVGc9GAw0YlpOJbko1dL8AjR1SYNMYv7m0y6fz4ke5jf9dg+dWWt/DMo+zaic8zLuY1EIX9FRvUiRqadqHHPcTzjT1tCa6Ky7eKWNrrbI/kbP4KsMlKwq3RidUNiLOmoj0Aed2OBBkkmEQY5xzxLypDsy2nxYQa+wBaYvuDyNkFZV5sZCgjdjbkwVjy69aqMqkRGXxdQap6jTn2uLqkhbzTKy6E6fB133JLoEaB5He2asMh+KACoo8b8n/V0BqGbh6ra8ahzBLL86s9PPKQY6e/WY9RqxD1+oN8nxa7gii9z3yEo02WyjggQJ7jkbu6Pxwl8uuUbuD9BsiWBSCcDlPTmF/py3mmnEaacj9mDStxyi5p7+dS5cHo=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: a69159d7-c166-4b18-8fb0-08d6f98ac03f
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 16:32:44.8066 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5050
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 0/3] Add gethost*,
 getserv* and getproto*
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBnZXRwcm90byogZnVuY3Rpb24g
ZnJvbSBtdXNsIGFzDQp3ZWxsIGFzIHR3byBuZXcgZmlsZXMgaG9zdC5jIGFuZCBzZXJ2LmMgdGhh
dCBob2xkIHRoZSBnZXRob3N0KiBhbmQNCmdldHNlcnYqIGZ1bmN0aW9ucy4NCg0KVmxhZC1BbmRy
ZWkgQmFkb2l1ICgzKToNCiAgQWRkIHByb3RvKiBmdW5jdGlvbnMNCiAgQWRkIGdldGhvc3RieWFk
ZHIgc3R1Yg0KICBBZGQgZ2V0c2VydmJ5bmFtZSBhbmQgZ2V0c2VydmJ5cG9ydCBzdHVicw0KDQog
TWFrZWZpbGUudWsgICB8ICAgMyArKw0KIGV4cG9ydHN5bXMudWsgfCAgIDggKysrKw0KIGhvc3Qu
YyAgICAgICAgfCAgNDIgKysrKysrKysrKysrKysrKysrKw0KIHByb3RvLmMgICAgICAgfCAxMTIg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBzZXJ2
LmMgICAgICAgIHwgIDQ2ICsrKysrKysrKysrKysrKysrKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwg
MjExIGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaG9zdC5jDQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHByb3RvLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2Vydi5jDQoNCi0tIA0KMi4y
MS4wDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:32:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:32: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 1hfoNJ-0004uR-S8; Tue, 25 Jun 2019 16:32:53 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfoNJ-0004uH-5R
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:32:53 +0000
X-Inumbo-ID: e089f8de-9766-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.55]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e089f8de-9766-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:32:52 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5050.eurprd01.prod.exchangelabs.com (20.177.208.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 16:32:48 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 16:32:48 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 1/3] Add proto* functions
Thread-Index: AQHVK3OeGGalmvz4SEyct9ylTEYhLw==
Date: Tue, 25 Jun 2019 16:32:45 +0000
Message-ID: <20190625163228.440-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0136.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 8381597c-60ff-4d9a-0651-08d6f98ac0a8
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5050; 
x-ms-traffictypediagnostic: PR1PR01MB5050:
x-microsoft-antispam-prvs: <PR1PR01MB505044172543C3E28135E217A6E30@PR1PR01MB5050.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:2733;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39850400004)(366004)(396003)(136003)(189003)(199004)(26005)(71190400001)(6666004)(66946007)(486006)(11346002)(102836004)(54906003)(4326008)(3846002)(316002)(8676002)(81166006)(53936002)(81156014)(25786009)(14444005)(2501003)(8936002)(6512007)(256004)(7736002)(305945005)(6916009)(1076003)(66446008)(86362001)(508600001)(52116002)(64756008)(99286004)(5640700003)(2351001)(186003)(6116002)(386003)(6436002)(786003)(71200400001)(76176011)(14454004)(66066001)(6506007)(73956011)(446003)(85182001)(6486002)(68736007)(2616005)(476003)(85202003)(2906002)(5660300002)(50226002)(66476007)(74482002)(66556008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5050;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: uzXxmdaLkddm+k+c7PiTjrK5HfVD3BvhfLwo6/OznTQSpITUvR9KYuulK93SHnJBrCLoHzslRlpWBtAT9b8K1UI1ohtUacwA+dZmBQZQf1/H1EDiPyScOyclCXFa+RNZHwZ7Y2pePgt7s5jmqj/c0+n9ZFznKFKsPWu1b/MgGPqE1702YUhhXYdgmb8m4LY2ovK4KT1L0ywxm7Yqj/qmRE6+griVJrjCdYVoimQt/YbsyssEe1jLUIYP9G/pu/CszCn56Fm2cLKu4Uai9OFQbF3HTLHDmwazNxZdQg/p4iEHXm4dpfD+uxQ2Y32ZcUgs94+DhQCXHNpeQxnSIVB0Oq57zgjbSP3JnDkp7oCd9L26AetCN0NH935lfcbiaj4zCb9hQv8rpsvkF35z/9IaNDWsVgxH/UQZdNHNlW0ik0A=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 8381597c-60ff-4d9a-0651-08d6f98ac0a8
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 16:32:45.4932 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5050
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/3] Add proto* 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@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGVuZHByb3RvZW50LCBzZXRwcm90b2VudCwgZ2V0cHJvdG9lbnQsIGdl
dHByb3RvYnluYW1lIGFuZA0KZ2V0cHJvdG9ieW51bWJlciBmcm9tIG11c2wuDQoNCnRhZzogdjEu
MS4xNA0KY29tbWl0IDwwNzRlNmIzZmUzZjJhZDg5Yjk5MWYzZDhhYjA5MzIwMzViMzEyYTYyPg0K
DQpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBz
dHVkLmFjcy51cGIucm8+DQotLS0NCiBNYWtlZmlsZS51ayAgIHwgICAxICsNCiBleHBvcnRzeW1z
LnVrIHwgICA1ICsrKw0KIHByb3RvLmMgICAgICAgfCAxMTIgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAzIGZpbGVzIGNoYW5nZWQsIDExOCBpbnNl
cnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3RvLmMNCg0KZGlmZiAtLWdpdCBhL01h
a2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCmluZGV4IGU3YjdjYzYuLjA2N2FhMDQgMTAwNjQ0DQot
LS0gYS9NYWtlZmlsZS51aw0KKysrIGIvTWFrZWZpbGUudWsNCkBAIC03MCw2ICs3MCw3IEBAIExJ
QkxXSVBfQ0ZMQUdTLSQoQ09ORklHX0xXSVBfREVCVUcpICs9IC1EVUtfREVCVUcNCiAjIENvcmUN
CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9C
QVNFKS9hbGxvYy5jfHVuaWtyYWZ0DQorTElCTFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0JBU0Up
L3Byb3RvLmMNCiBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxX
SVBfQkFTRSkvbXV0ZXguY3x1bmlrcmFmdA0KIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1RI
UkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9zZW1hcGhvcmUuY3x1bmlrcmFmdA0KIExJQkxXSVBf
U1JDUy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9tYWlsYm94LmN8
dW5pa3JhZnQNCmRpZmYgLS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51aw0KaW5k
ZXggOWQ0MGJjZC4uMDk2NDgwNCAxMDA2NDQNCi0tLSBhL2V4cG9ydHN5bXMudWsNCisrKyBiL2V4
cG9ydHN5bXMudWsNCkBAIC0yNiwzICsyNiw4IEBAIGlwNGFkZHJfbnRvYQ0KIGlwYWRkcl9hZGRy
DQogaXA0YWRkcl9udG9hDQogaF9lcnJubw0KK2VuZHByb3RvZW50DQorc2V0cHJvdG9lbnQNCitn
ZXRwcm90b2VudA0KK2dldHByb3RvYnluYW1lDQorZ2V0cHJvdG9ieW51bWJlcg0KZGlmZiAtLWdp
dCBhL3Byb3RvLmMgYi9wcm90by5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw
MC4uOTc5NDMwMA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvcHJvdG8uYw0KQEAgLTAsMCArMSwxMTIg
QEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovDQorLyoNCisgKiBDb3B5cmln
aHQgKGMpIDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuDQorICoNCisgKiBQZXJtaXNzaW9u
IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p
bmcgYSBjb3B5DQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvDQorICogZGVhbCBpbiB0aGUgU29mdHdhcmUg
d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUNCisg
KiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLCBhbmQvb3INCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KKyAqIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisg
KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz
aGFsbCBiZSBpbmNsdWRlZCBpbg0KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv
bnMgb2YgdGhlIFNvZnR3YXJlLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwNCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O
SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCisgKiBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQor
ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcNCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSDQorICogREVBTElOR1MgSU4gVEhFIFNP
RlRXQVJFLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxuZXRkYi5oPg0KKyNpbmNsdWRlIDxzdHJpbmcu
aD4NCisNCisvKiBkbyB3ZSByZWFsbHkgbmVlZCBhbGwgdGhlc2U/PyAqLw0KKw0KK3N0YXRpYyBp
bnQgaWR4Ow0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHByb3Rvc1tdID0gew0KKwkiXDAw
MGlwXDAiDQorCSJcMDAxaWNtcFwwIg0KKwkiXDAwMmlnbXBcMCINCisJIlwwMDNnZ3BcMCINCisJ
IlwwMDRpcGVuY2FwXDAiDQorCSJcMDA1c3RcMCINCisJIlwwMDZ0Y3BcMCINCisJIlwwMTBlZ3Bc
MCINCisJIlwwMTRwdXBcMCINCisJIlwwMjF1ZHBcMCINCisJIlwwMjRobXBcMCINCisJIlwwMjZ4
bnMtaWRwXDAiDQorCSJcMDMzcmRwXDAiDQorCSJcMDM1aXNvLXRwNFwwIg0KKwkiXDA0NHh0cFww
Ig0KKwkiXDA0NWRkcFwwIg0KKwkiXDA0NmlkcHItY210cFwwIg0KKwkiXDA1MWlwdjZcMCINCisJ
IlwwNTNpcHY2LXJvdXRlXDAiDQorCSJcMDU0aXB2Ni1mcmFnXDAiDQorCSJcMDU1aWRycFwwIg0K
KwkiXDA1NnJzdnBcMCINCisJIlwwNTdncmVcMCINCisJIlwwNjJlc3BcMCINCisJIlwwNjNhaFww
Ig0KKwkiXDA3MXNraXBcMCINCisJIlwwNzJpcHY2LWljbXBcMCINCisJIlwwNzNpcHY2LW5vbnh0
XDAiDQorCSJcMDc0aXB2Ni1vcHRzXDAiDQorCSJcMTExcnNwZlwwIg0KKwkiXDEyMXZtdHBcMCIN
CisJIlwxMzFvc3BmXDAiDQorCSJcMTM2aXBpcFwwIg0KKwkiXDE0MmVuY2FwXDAiDQorCSJcMTQ3
cGltXDAiDQorCSJcMzc3cmF3Ig0KK307DQorDQordm9pZCBlbmRwcm90b2VudCh2b2lkKQ0KK3sN
CisJaWR4ID0gMDsNCit9DQorDQordm9pZCBzZXRwcm90b2VudChpbnQgc3RheW9wZW4pDQorew0K
KwlpZHggPSAwOw0KK30NCisNCitzdHJ1Y3QgcHJvdG9lbnQgKmdldHByb3RvZW50KHZvaWQpDQor
ew0KKwlzdGF0aWMgc3RydWN0IHByb3RvZW50IHA7DQorCXN0YXRpYyBjb25zdCBjaGFyICphbGlh
c2VzOw0KKw0KKwlpZiAoaWR4ID49IHNpemVvZihwcm90b3MpKQ0KKwkJcmV0dXJuIE5VTEw7DQor
CXAucF9wcm90byA9IHByb3Rvc1tpZHhdOw0KKwlwLnBfbmFtZSA9IChjaGFyICopJnByb3Rvc1tp
ZHgrMV07DQorCXAucF9hbGlhc2VzID0gKGNoYXIgKiopJmFsaWFzZXM7DQorCWlkeCArPSBzdHJs
ZW4ocC5wX25hbWUpICsgMjsNCisJcmV0dXJuICZwOw0KK30NCisNCitzdHJ1Y3QgcHJvdG9lbnQg
KmdldHByb3RvYnluYW1lKGNvbnN0IGNoYXIgKm5hbWUpDQorew0KKwlzdHJ1Y3QgcHJvdG9lbnQg
KnA7DQorDQorCWVuZHByb3RvZW50KCk7DQorCWRvIHAgPSBnZXRwcm90b2VudCgpOw0KKwl3aGls
ZSAocCAmJiBzdHJjbXAobmFtZSwgcC0+cF9uYW1lKSk7DQorCXJldHVybiBwOw0KK30NCisNCitz
dHJ1Y3QgcHJvdG9lbnQgKmdldHByb3RvYnludW1iZXIoaW50IG51bSkNCit7DQorCXN0cnVjdCBw
cm90b2VudCAqcDsNCisNCisJZW5kcHJvdG9lbnQoKTsNCisJZG8gcCA9IGdldHByb3RvZW50KCk7
DQorCXdoaWxlIChwICYmIHAtPnBfcHJvdG8gIT0gbnVtKTsNCisJcmV0dXJuIHA7DQorfQ0KKw0K
LS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:32:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:32: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 1hfoNM-0004v9-00; Tue, 25 Jun 2019 16:32:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfoNK-0004uZ-Fw
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:32:54 +0000
X-Inumbo-ID: e100c9dc-9766-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.55]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e100c9dc-9766-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:32:53 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5050.eurprd01.prod.exchangelabs.com (20.177.208.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 16:32:49 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 16:32:49 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 2/3] Add gethostbyaddr stub
Thread-Index: AQHVK3Oe3NXN4ASXr0eHt9KURyKo7g==
Date: Tue, 25 Jun 2019 16:32:46 +0000
Message-ID: <20190625163228.440-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0136.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: f1bf5bd6-98e8-4d5c-8680-08d6f98ac103
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5050; 
x-ms-traffictypediagnostic: PR1PR01MB5050:
x-microsoft-antispam-prvs: <PR1PR01MB50507DEAA6794A09822B19AAA6E30@PR1PR01MB5050.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39850400004)(366004)(396003)(136003)(189003)(199004)(26005)(71190400001)(6666004)(66946007)(486006)(11346002)(102836004)(54906003)(4326008)(3846002)(316002)(8676002)(81166006)(53936002)(81156014)(25786009)(14444005)(2501003)(8936002)(6512007)(256004)(7736002)(305945005)(6916009)(1076003)(66446008)(86362001)(508600001)(52116002)(64756008)(99286004)(5640700003)(2351001)(186003)(6116002)(386003)(6436002)(786003)(71200400001)(76176011)(14454004)(66066001)(6506007)(73956011)(446003)(85182001)(6486002)(68736007)(2616005)(476003)(85202003)(2906002)(5660300002)(50226002)(66476007)(74482002)(66556008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5050;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: zyjM8uVbmOvv48J8Dp1MoK4HERrlOR5jsFry6P9cizU4Pae+OgEq9zkDutqh3ZyIdLAbmmmIbg4zA6fspYWj/UlNuhCg6IKYbf8pFHkwrvr/Y6LJ4NchGearcUWnODPAmg1Nc7N0au7A4g78JFBl843bKmmTVLUkK4Qnz0XXz/DDyrSVA6J7ZdjC4W9Ph+PEavpLHDTwwZpSwoNnu7p8eDq2Jl13riFQXgZ/uPhzzbuBmz8zUH6ep3JvS6tViMP5sKhryExlvGPEShndw0i7B3AiePdCHh8JC5pAYmZ/OCPhmI9MOiS/Fyr35doojRUSos0wKgKICuE4rBJfPcxy4nP14vncZlF+d+OWrsjaNa7daOhoMXhKPT1Wm4knYWDpiECWe4pMx+cc4iAiZGsloO4DPgmkAmXAkO7W4ROJ7ZU=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: f1bf5bd6-98e8-4d5c-8680-08d6f98ac103
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 16:32:46.1099 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5050
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 2/3] Add gethostbyaddr stub
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGEgbmV3IGZpbGUgaG9zdC5jIHRoYXQgaG9sZHMgaG9zdCByZWxhdGVk
IGZ1bmN0aW9ucy4gRm9yIG5vdywNCmdldGhvc3RieWFkZHIgaXMgYXZhaWxhYmxlLg0KDQpTaWdu
ZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+DQotLS0NCiBNYWtlZmlsZS51ayAgIHwgIDEgKw0KIGV4cG9ydHN5bXMudWsgfCAg
MSArDQogaG9zdC5jICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBt
b2RlIDEwMDY0NCBob3N0LmMNCg0KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUu
dWsNCmluZGV4IDA2N2FhMDQuLmFiZGVjZGMgMTAwNjQ0DQotLS0gYS9NYWtlZmlsZS51aw0KKysr
IGIvTWFrZWZpbGUudWsNCkBAIC03MSw2ICs3MSw3IEBAIExJQkxXSVBfQ0ZMQUdTLSQoQ09ORklH
X0xXSVBfREVCVUcpICs9IC1EVUtfREVCVUcNCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIExJ
QkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9hbGxvYy5jfHVuaWtyYWZ0DQogTElCTFdJ
UF9TUkNTLXkgKz0gJChMSUJMV0lQX0JBU0UpL3Byb3RvLmMNCitMSUJMV0lQX1NSQ1MteSArPSAk
KExJQkxXSVBfQkFTRSkvaG9zdC5jDQogTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfVEhSRUFE
UykgKz0gJChMSUJMV0lQX0JBU0UpL211dGV4LmN8dW5pa3JhZnQNCiBMSUJMV0lQX1NSQ1MtJChD
T05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkvc2VtYXBob3JlLmN8dW5pa3Jh
ZnQNCiBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFT
RSkvbWFpbGJveC5jfHVuaWtyYWZ0DQpkaWZmIC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBiL2V4cG9y
dHN5bXMudWsNCmluZGV4IDA5NjQ4MDQuLjk2NWI2N2MgMTAwNjQ0DQotLS0gYS9leHBvcnRzeW1z
LnVrDQorKysgYi9leHBvcnRzeW1zLnVrDQpAQCAtMzEsMyArMzEsNCBAQCBzZXRwcm90b2VudA0K
IGdldHByb3RvZW50DQogZ2V0cHJvdG9ieW5hbWUNCiBnZXRwcm90b2J5bnVtYmVyDQorZ2V0aG9z
dGJ5YWRkcg0KZGlmZiAtLWdpdCBhL2hvc3QuYyBiL2hvc3QuYw0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQNCmluZGV4IDAwMDAwMDAuLjU1OWQxODYNCi0tLSAvZGV2L251bGwNCisrKyBiL2hvc3QuYw0K
QEAgLTAsMCArMSw0MiBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1
c2UgKi8NCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmlj
YSBvZiBCdWNoYXJlc3QuDQorICogICAgICAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisg
Kg0KKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKyAqICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tDQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUNCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUNCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SDQorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTg0KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCisg
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKg0KKyAqIFRISVMgSEVBREVSIE1BWSBO
T1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQorICovDQorDQorI2luY2x1
ZGUgPHVuaXN0ZC5oPg0KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+DQorDQorc3RydWN0IGhvc3Rl
bnQgKmdldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqYWRkciBfX3VudXNlZCwNCisJc29ja2xlbl90
IGxlbiBfX3VudXNlZCwgaW50IHR5cGUgX191bnVzZWQpDQorew0KKwlyZXR1cm4gTlVMTDsNCit9
DQorDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:32:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:32: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 1hfoNL-0004v4-UG; Tue, 25 Jun 2019 16:32:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfoNK-0004uY-ED
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:32:54 +0000
X-Inumbo-ID: e173d03c-9766-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.55]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e173d03c-9766-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:32:53 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB5050.eurprd01.prod.exchangelabs.com (20.177.208.83) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 16:32:49 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 16:32:49 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LWIP PATCH 3/3] Add getservbyname and getservbyport
 stubs
Thread-Index: AQHVK3OfMEHWoem4fUG7aRrAHZe3/g==
Date: Tue, 25 Jun 2019 16:32:46 +0000
Message-ID: <20190625163228.440-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: PR0P264CA0136.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:100:1a::28) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [141.85.233.105]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: c0137956-b62d-494d-7758-08d6f98ac161
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB5050; 
x-ms-traffictypediagnostic: PR1PR01MB5050:
x-microsoft-antispam-prvs: <PR1PR01MB50505EAAB180A26841627445A6E30@PR1PR01MB5050.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(346002)(376002)(39850400004)(366004)(396003)(136003)(189003)(199004)(26005)(71190400001)(6666004)(66946007)(486006)(11346002)(102836004)(54906003)(4326008)(3846002)(316002)(8676002)(81166006)(53936002)(81156014)(25786009)(14444005)(2501003)(8936002)(6512007)(256004)(7736002)(305945005)(6916009)(1076003)(66446008)(86362001)(508600001)(52116002)(64756008)(99286004)(5640700003)(2351001)(186003)(6116002)(386003)(6436002)(786003)(71200400001)(76176011)(14454004)(66066001)(6506007)(73956011)(446003)(85182001)(6486002)(68736007)(2616005)(476003)(85202003)(2906002)(5660300002)(50226002)(66476007)(74482002)(66556008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB5050;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:0; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: UcWQfP8P0ebvOHKMFSYUmRit3UckmVqv28iteKFD1EZv39u8BXZHem7ADTsDMeM3GtuR+iXChIYt/8EFct5yJCH6FpcYHRySOWblZk6tvdaZYcyhZ9YG3rngWR460sj1B0JPF4TF1Ss6gXrqgpw9U1+wrA3FXhG/oAThY+JxLGjBkmsYqyFd/FSzD2ty2aTz2EaIWRfEj6BWZ0/43PWh61CVzULm7Oz4MlzqulzHekPUZFy8uG+LUUtXNATU+OsdgQiUMHVhL84ZDuRRBGMC4NRBawJtCrfnErwEWns8PPajX7yNnqG1HEiwnyJZ/saKkMc67TJ8/Lu+T7Obld84czXIrWDyH8zd2XntVqi9sN+kmY/9vpllkq3+BMr4EhwlS/Xs8/CccTqc/m+Vi1a85q97UHadX1wpqYIejfVr4ZE=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: c0137956-b62d-494d-7758-08d6f98ac161
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 16:32:46.7005 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB5050
Subject: [Minios-devel] [UNIKRAFT/LWIP PATCH 3/3] Add getservbyname and
 getservbyport 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@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBhZGRzIGEgbmV3IGZpbGUgc2Vydi5jIHdoaWNoIGhvbGRzIHRoZSBnZXRzZXJ2
KiBmdW5jdGlvbnMuIEN1cnJlbnRseSwNCm9ubHkgdGhlIGdldHNlcnZieW5hbWUgYW5kIGdldHNl
cnZieXBvcnQgYXJlIGF2YWlsYWJsZS4NCg0KU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFk
b2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KLS0tDQogTWFrZWZpbGUu
dWsgICB8ICAxICsNCiBleHBvcnRzeW1zLnVrIHwgIDIgKysNCiBzZXJ2LmMgICAgICAgIHwgNDYg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDMgZmlsZXMg
Y2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZXJ2LmMNCg0K
ZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCmluZGV4IGFiZGVjZGMuLjdi
MzAxNDYgMTAwNjQ0DQotLS0gYS9NYWtlZmlsZS51aw0KKysrIGIvTWFrZWZpbGUudWsNCkBAIC03
Miw2ICs3Miw3IEBAIExJQkxXSVBfQ0ZMQUdTLSQoQ09ORklHX0xXSVBfREVCVUcpICs9IC1EVUtf
REVCVUcNCiBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvYWxsb2MuY3x1bmlrcmFm
dA0KIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9wcm90by5jDQogTElCTFdJUF9T
UkNTLXkgKz0gJChMSUJMV0lQX0JBU0UpL2hvc3QuYw0KK0xJQkxXSVBfU1JDUy15ICs9ICQoTElC
TFdJUF9CQVNFKS9zZXJ2LmMNCiBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSAr
PSAkKExJQkxXSVBfQkFTRSkvbXV0ZXguY3x1bmlrcmFmdA0KIExJQkxXSVBfU1JDUy0kKENPTkZJ
R19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9zZW1hcGhvcmUuY3x1bmlrcmFmdA0K
IExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9t
YWlsYm94LmN8dW5pa3JhZnQNCmRpZmYgLS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3lt
cy51aw0KaW5kZXggOTY1YjY3Yy4uMzc1YTc4OSAxMDA2NDQNCi0tLSBhL2V4cG9ydHN5bXMudWsN
CisrKyBiL2V4cG9ydHN5bXMudWsNCkBAIC0zMiwzICszMiw1IEBAIGdldHByb3RvZW50DQogZ2V0
cHJvdG9ieW5hbWUNCiBnZXRwcm90b2J5bnVtYmVyDQogZ2V0aG9zdGJ5YWRkcg0KK2dldHNlcnZi
eW5hbWUNCitnZXRzZXJ2Ynlwb3J0DQpkaWZmIC0tZ2l0IGEvc2Vydi5jIGIvc2Vydi5jDQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNTU1ZTNhNg0KLS0tIC9kZXYvbnVsbA0K
KysrIGIvc2Vydi5jDQpAQCAtMCwwICsxLDQ2IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IEJTRC0zLUNsYXVzZSAqLw0KKy8qDQorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJz
aXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4NCisgKiAgICAgICAgICAgICAgICAgICAgIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisg
KiBhcmUgbWV0Og0KKyAqDQorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQNCisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzDQor
ICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20NCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQ0KKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQorICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRQ0KKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUw0KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRQ0KKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqDQorICogVEhJ
UyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4NCisg
Ki8NCisNCisjaW5jbHVkZSA8bmV0ZGIuaD4NCisNCitzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5
bmFtZShjb25zdCBjaGFyICpuYW1lIF9fdW51c2VkLA0KKwljb25zdCBjaGFyICpwcm90byBfX3Vu
dXNlZCkNCit7DQorCXJldHVybiBOVUxMOw0KK30NCisNCitzdHJ1Y3Qgc2VydmVudCAqZ2V0c2Vy
dmJ5cG9ydChpbnQgcG9ydCBfX3VudXNlZCwNCisJY29uc3QgY2hhciAqcHJvdG8gX191bnVzZWQp
DQorew0KKwlyZXR1cm4gTlVMTDsNCit9DQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:39:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:39: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 1hfoTN-00053Y-HD; Tue, 25 Jun 2019 16:39:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x1wx=UY=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hfoTM-00053T-PS
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:39:08 +0000
X-Inumbo-ID: bfb552cd-9767-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id bfb552cd-9767-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:39:07 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id c66so3545289wmf.0
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 09:39:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=H62dgFRMcZ48dtvddP9vSIMUJkJHAkbZaDqo1R7Xe2E=;
 b=Zt0ifJSjLpOgF8eKWeRlnpnYcF1WcaiaErI6o+e0AiyntrP9IGZB0XHXRCUXKU61pV
 I/fchgFllkzy+bCWBCabLNUTuK3gq3q1IAYoJWaGuEe3xUkzLI0SR99C0mVSKO3XlsHS
 juVPXAAY7bAflNRx0fK54IBPdabG1SE34mBQEZh8a1hCJkyziVftl523Ys6OCOer2/8U
 hJY86CgWQRPFZsNERK/0qBc5+LbQ0/dodqZIJRgVoQvkTxUg2dEW1BEmdJ3NbeEvWrvy
 DLTDo7CW4qOxiAZG5W/ab/zW0ilQOhhuLabUh2LXpQV9/167t+43x6KLxzsrJm1LZBYf
 5m5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=H62dgFRMcZ48dtvddP9vSIMUJkJHAkbZaDqo1R7Xe2E=;
 b=mPUoVblTbgQJ3V1pYjL656ob6NbckiGtGCFjhZ97jLfYuw7gbz5wunodEDqkcm8ZWH
 aNHQefIUjypDhW5b2mpuSHbuVKqngMDLuj3/dhJiG2e9xh/KX0/WsD13Uu2lnGVgRtto
 MnukAoLKGqYeS5OCRqPlT1WF08UYfu68Rx7hWJlM1ADDOyh6KF5AVeHFjuEimD5B+0F+
 IFbM7yjlJEQaMaKCwkNDflHJ4B9ORjLRbIx9S0U5j3cJocXTHdjDq2yD2Gs+Oj06Hx4y
 mu2r4YmOy2VTZCeSkoOzxMXJH2ArqIGJEJCHuwFll/2ZVeToE061yyjz6qKuPB2ju7fq
 7L0Q==
X-Gm-Message-State: APjAAAWoN7J5yssKXdFc9ryeCxZQs+65CUrSQzt3BV/4syshd2H9yUok
 ep0ym6+E2cNgAfYgxQ3YVB0=
X-Google-Smtp-Source: APXvYqyz7TojZuEaYtVQE04VcB+MgUZOJfmGYlTlcEqs+8DttQbknsF8TwuKBmJ6GdP8gNHrHrHgKw==
X-Received: by 2002:a7b:cd9a:: with SMTP id y26mr21455906wmj.44.1561480746065; 
 Tue, 25 Jun 2019 09:39:06 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id o12sm15535324wrx.63.2019.06.25.09.39.05
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 09:39:05 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625163228.440-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <efe425ee-12c1-9f15-af66-0d5803c0c58b@gmail.com>
Date: Tue, 25 Jun 2019 19:39:04 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190625163228.440-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/3] Add proto* 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@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI1
LzE5IDc6MzIgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToKPiBUaGlzIHBh
dGNoIGFkZHMgZW5kcHJvdG9lbnQsIHNldHByb3RvZW50LCBnZXRwcm90b2VudCwgZ2V0cHJvdG9i
eW5hbWUgYW5kCj4gZ2V0cHJvdG9ieW51bWJlciBmcm9tIG11c2wuCj4gCj4gdGFnOiB2MS4xLjE0
Cj4gY29tbWl0IDwwNzRlNmIzZmUzZjJhZDg5Yjk5MWYzZDhhYjA5MzIwMzViMzEyYTYyPgo+IAo+
IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0
dWQuYWNzLnVwYi5ybz4KPiAtLS0KPiAgTWFrZWZpbGUudWsgICB8ICAgMSArCj4gIGV4cG9ydHN5
bXMudWsgfCAgIDUgKysrCj4gIHByb3RvLmMgICAgICAgfCAxMTIgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTgg
aW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgcHJvdG8uYwo+IAo+IGRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4gaW5kZXggZTdiN2NjNi4uMDY3YWEwNCAx
MDA2NDQKPiAtLS0gYS9NYWtlZmlsZS51awo+ICsrKyBiL01ha2VmaWxlLnVrCj4gQEAgLTcwLDYg
KzcwLDcgQEAgTElCTFdJUF9DRkxBR1MtJChDT05GSUdfTFdJUF9ERUJVRykgKz0gLURVS19ERUJV
Rwo+ICAjIENvcmUKPiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgTElCTFdJUF9TUkNTLXkg
Kz0gJChMSUJMV0lQX0JBU0UpL2FsbG9jLmN8dW5pa3JhZnQKPiArTElCTFdJUF9TUkNTLXkgKz0g
JChMSUJMV0lQX0JBU0UpL3Byb3RvLmMKPiAgTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfVEhS
RUFEUykgKz0gJChMSUJMV0lQX0JBU0UpL211dGV4LmN8dW5pa3JhZnQKPiAgTElCTFdJUF9TUkNT
LSQoQ09ORklHX0xXSVBfVEhSRUFEUykgKz0gJChMSUJMV0lQX0JBU0UpL3NlbWFwaG9yZS5jfHVu
aWtyYWZ0Cj4gIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJ
UF9CQVNFKS9tYWlsYm94LmN8dW5pa3JhZnQKPiBkaWZmIC0tZ2l0IGEvZXhwb3J0c3ltcy51ayBi
L2V4cG9ydHN5bXMudWsKPiBpbmRleCA5ZDQwYmNkLi4wOTY0ODA0IDEwMDY0NAo+IC0tLSBhL2V4
cG9ydHN5bXMudWsKPiArKysgYi9leHBvcnRzeW1zLnVrCj4gQEAgLTI2LDMgKzI2LDggQEAgaXA0
YWRkcl9udG9hCj4gIGlwYWRkcl9hZGRyCj4gIGlwNGFkZHJfbnRvYQo+ICBoX2Vycm5vCj4gK2Vu
ZHByb3RvZW50Cj4gK3NldHByb3RvZW50Cj4gK2dldHByb3RvZW50Cj4gK2dldHByb3RvYnluYW1l
Cj4gK2dldHByb3RvYnludW1iZXIKPiBkaWZmIC0tZ2l0IGEvcHJvdG8uYyBiL3Byb3RvLmMKPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjk3OTQzMDAKPiAtLS0gL2Rldi9u
dWxsCj4gKysrIGIvcHJvdG8uYwo+IEBAIC0wLDAgKzEsMTEyIEBACj4gKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBNSVQgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMTQg
UmljaCBGZWxrZXIsIGV0IGFsLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAq
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
ICJTb2Z0d2FyZSIpLCB0bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8g
dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3IKPiArICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0
aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsg
KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBT
T0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bmV0ZGIuaD4KPiArI2luY2x1ZGUgPHN0
cmluZy5oPgo+ICsKPiArLyogZG8gd2UgcmVhbGx5IG5lZWQgYWxsIHRoZXNlPz8gKi8KPiArCj4g
K3N0YXRpYyBpbnQgaWR4Owo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwcm90b3NbXSA9
IHsKPiArCSJcMDAwaXBcMCIKPiArCSJcMDAxaWNtcFwwIgo+ICsJIlwwMDJpZ21wXDAiCj4gKwki
XDAwM2dncFwwIgo+ICsJIlwwMDRpcGVuY2FwXDAiCj4gKwkiXDAwNXN0XDAiCj4gKwkiXDAwNnRj
cFwwIgo+ICsJIlwwMTBlZ3BcMCIKPiArCSJcMDE0cHVwXDAiCj4gKwkiXDAyMXVkcFwwIgo+ICsJ
IlwwMjRobXBcMCIKPiArCSJcMDI2eG5zLWlkcFwwIgo+ICsJIlwwMzNyZHBcMCIKPiArCSJcMDM1
aXNvLXRwNFwwIgo+ICsJIlwwNDR4dHBcMCIKPiArCSJcMDQ1ZGRwXDAiCj4gKwkiXDA0NmlkcHIt
Y210cFwwIgo+ICsJIlwwNTFpcHY2XDAiCj4gKwkiXDA1M2lwdjYtcm91dGVcMCIKPiArCSJcMDU0
aXB2Ni1mcmFnXDAiCj4gKwkiXDA1NWlkcnBcMCIKPiArCSJcMDU2cnN2cFwwIgo+ICsJIlwwNTdn
cmVcMCIKPiArCSJcMDYyZXNwXDAiCj4gKwkiXDA2M2FoXDAiCj4gKwkiXDA3MXNraXBcMCIKPiAr
CSJcMDcyaXB2Ni1pY21wXDAiCj4gKwkiXDA3M2lwdjYtbm9ueHRcMCIKPiArCSJcMDc0aXB2Ni1v
cHRzXDAiCj4gKwkiXDExMXJzcGZcMCIKPiArCSJcMTIxdm10cFwwIgo+ICsJIlwxMzFvc3BmXDAi
Cj4gKwkiXDEzNmlwaXBcMCIKPiArCSJcMTQyZW5jYXBcMCIKPiArCSJcMTQ3cGltXDAiCj4gKwki
XDM3N3JhdyIKPiArfTsKPiArCj4gK3ZvaWQgZW5kcHJvdG9lbnQodm9pZCkKPiArewo+ICsJaWR4
ID0gMDsKPiArfQo+ICsKPiArdm9pZCBzZXRwcm90b2VudChpbnQgc3RheW9wZW4pCj4gK3sKPiAr
CWlkeCA9IDA7Cj4gK30KPiArCj4gK3N0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9lbnQodm9pZCkK
PiArewo+ICsJc3RhdGljIHN0cnVjdCBwcm90b2VudCBwOwo+ICsJc3RhdGljIGNvbnN0IGNoYXIg
KmFsaWFzZXM7Cj4gKwo+ICsJaWYgKGlkeCA+PSBzaXplb2YocHJvdG9zKSkKPiArCQlyZXR1cm4g
TlVMTDsKPiArCXAucF9wcm90byA9IHByb3Rvc1tpZHhdOwo+ICsJcC5wX25hbWUgPSAoY2hhciAq
KSZwcm90b3NbaWR4KzFdOwo+ICsJcC5wX2FsaWFzZXMgPSAoY2hhciAqKikmYWxpYXNlczsKPiAr
CWlkeCArPSBzdHJsZW4ocC5wX25hbWUpICsgMjsKPiArCXJldHVybiAmcDsKPiArfQo+ICsKPiAr
c3RydWN0IHByb3RvZW50ICpnZXRwcm90b2J5bmFtZShjb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4g
KwlzdHJ1Y3QgcHJvdG9lbnQgKnA7Cj4gKwo+ICsJZW5kcHJvdG9lbnQoKTsKPiArCWRvIHAgPSBn
ZXRwcm90b2VudCgpOwo+ICsJd2hpbGUgKHAgJiYgc3RyY21wKG5hbWUsIHAtPnBfbmFtZSkpOwo+
ICsJcmV0dXJuIHA7Cj4gK30KPiArCj4gK3N0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9ieW51bWJl
cihpbnQgbnVtKQo+ICt7Cj4gKwlzdHJ1Y3QgcHJvdG9lbnQgKnA7Cj4gKwo+ICsJZW5kcHJvdG9l
bnQoKTsKPiArCWRvIHAgPSBnZXRwcm90b2VudCgpOwo+ICsJd2hpbGUgKHAgJiYgcC0+cF9wcm90
byAhPSBudW0pOwo+ICsJcmV0dXJuIHA7Cj4gK30KPiArCj4gCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:39:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:39:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hfoTV-00054c-JK; Tue, 25 Jun 2019 16:39:17 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x1wx=UY=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hfoTU-00054U-Bz
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:39:16 +0000
X-Inumbo-ID: c42dea68-9767-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c42dea68-9767-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:39:14 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id f15so8758212wrp.2
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 09:39:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=9bhc/JPBZSKva0wPH9UjNlbJmAN2DY8QJVC+fNqDu3o=;
 b=L0JAJKRVud2Bq0seU4RVozn7+I2glH+AMdrEtY/y6tMgiARxEkzqQ4c2nd/QFMvlIr
 OMB6q75ZIMfrmDnfjnj4PE5lnlWx/to6kHSFVzMr6/CWWxolio2d4q9Vg9AEYe57R+fC
 SXBuCNl+nIHpASzLVyukiO5CtvHwRaf7UhWFwrg4XCGLvWfUTMbHZ2x2ZNgUABiRRbEJ
 KBIhJa8UQRJBhjSQRb2X+ZijhqjYft2pzv+AuctDL/iqKc+0cJdffhl47PAIFrgWv2kR
 0b4K3+gNFmIcdZdhtvaXQkjI3O8KSu6jHzDQEAfyCcIZuLLDvTsYczpnWMcJkYOfhpLy
 CQsw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=9bhc/JPBZSKva0wPH9UjNlbJmAN2DY8QJVC+fNqDu3o=;
 b=scsWl7oENtZsULFXuqwoeuzxVY0Hh98eKdCcFFZ/+R1q9pPWqn43tSW5rBgAZGKRV+
 Q/QIDSYkZACSY/xZaWhMq1gsI8jQMl5lBakFblWQ+VJZBUozvPmIgCJq7jg0PZI6CVhZ
 08gb8NUrkFvBJA4p0xYDFM3hfP4o/yaYhwn2qw7tQ5GvYGmVpgYRo3KtwBsdcQnuq0Vp
 wCMrIPfvkQL4h6g4SEGOwW26RNv7VIdCINY8+70GeDeDEOtyDXddsSfQe90GL39bE5tF
 2JX+m4nJSM0Co8UxP0UydLus3CUn2l5QInkwFUF85kP96UnUi+kegX4mOw7UncIwifzu
 3+XQ==
X-Gm-Message-State: APjAAAXDOxtv6KVwmlhBgi9782TLCh1gX7LXIDBkdZpIIyCgRQFc0GI5
 oZtqpq1gnMjXZ5uhoMjb/Uk=
X-Google-Smtp-Source: APXvYqw+JX8dTlyJGKHI46Nip6YPzazKwNPbhOx275c5k/vrfQV9oHy9mTBZPZxnKH4/oWic+JeitQ==
X-Received: by 2002:a5d:6b03:: with SMTP id v3mr19675260wrw.309.1561480753667; 
 Tue, 25 Jun 2019 09:39:13 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id o185sm3447632wmo.45.2019.06.25.09.39.13
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 09:39:13 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625163228.440-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <085ca6e3-0c60-32e7-b114-79c46c953075@gmail.com>
Date: Tue, 25 Jun 2019 19:39:12 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190625163228.440-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 2/3] Add gethostbyaddr stub
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI1
LzE5IDc6MzIgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToKPiBUaGlzIHBh
dGNoIGFkZHMgYSBuZXcgZmlsZSBob3N0LmMgdGhhdCBob2xkcyBob3N0IHJlbGF0ZWQgZnVuY3Rp
b25zLiBGb3Igbm93LAo+IGdldGhvc3RieWFkZHIgaXMgYXZhaWxhYmxlLgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KPiAtLS0KPiAgTWFrZWZpbGUudWsgICB8ICAxICsKPiAgZXhwb3J0c3ltcy51ayB8ICAx
ICsKPiAgaG9zdC5jICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKykKPiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGhvc3QuYwo+IAo+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2Vm
aWxlLnVrCj4gaW5kZXggMDY3YWEwNC4uYWJkZWNkYyAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZS51
awo+ICsrKyBiL01ha2VmaWxlLnVrCj4gQEAgLTcxLDYgKzcxLDcgQEAgTElCTFdJUF9DRkxBR1Mt
JChDT05GSUdfTFdJUF9ERUJVRykgKz0gLURVS19ERUJVRwo+ICAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvYWxsb2MuY3x1bmlrcmFm
dAo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvcHJvdG8uYwo+ICtMSUJMV0lQ
X1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvaG9zdC5jCj4gIExJQkxXSVBfU1JDUy0kKENPTkZJ
R19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9tdXRleC5jfHVuaWtyYWZ0Cj4gIExJ
QkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQoTElCTFdJUF9CQVNFKS9zZW1h
cGhvcmUuY3x1bmlrcmFmdAo+ICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSAr
PSAkKExJQkxXSVBfQkFTRSkvbWFpbGJveC5jfHVuaWtyYWZ0Cj4gZGlmZiAtLWdpdCBhL2V4cG9y
dHN5bXMudWsgYi9leHBvcnRzeW1zLnVrCj4gaW5kZXggMDk2NDgwNC4uOTY1YjY3YyAxMDA2NDQK
PiAtLS0gYS9leHBvcnRzeW1zLnVrCj4gKysrIGIvZXhwb3J0c3ltcy51awo+IEBAIC0zMSwzICsz
MSw0IEBAIHNldHByb3RvZW50Cj4gIGdldHByb3RvZW50Cj4gIGdldHByb3RvYnluYW1lCj4gIGdl
dHByb3RvYnludW1iZXIKPiArZ2V0aG9zdGJ5YWRkcgo+IGRpZmYgLS1naXQgYS9ob3N0LmMgYi9o
b3N0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjU1OWQxODYKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvaG9zdC5jCj4gQEAgLTAsMCArMSw0MiBAQAo+ICsvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIENvcHlyaWdo
dCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCj4gKyAqICAg
ICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAg
ICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
Lgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4g
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4g
KyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KPiArCj4gK3N0
cnVjdCBob3N0ZW50ICpnZXRob3N0YnlhZGRyKGNvbnN0IHZvaWQgKmFkZHIgX191bnVzZWQsCj4g
Kwlzb2NrbGVuX3QgbGVuIF9fdW51c2VkLCBpbnQgdHlwZSBfX3VudXNlZCkKPiArewo+ICsJcmV0
dXJuIE5VTEw7Cj4gK30KPiArCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 16:39:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 16:39:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hfoTc-00055J-L4; Tue, 25 Jun 2019 16:39:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=x1wx=UY=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hfoTb-00055A-1w
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 16:39:23 +0000
X-Inumbo-ID: c880cb1a-9767-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c880cb1a-9767-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 16:39:22 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id z23so3638471wma.4
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 09:39:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=gm256xOQNCQbuBkByKlVJ/EcEsXg4KLgVmmRYKPvfKM=;
 b=vYv1uMcrVBA2QsBgoE0FC3/SQfNwhjbMKMAB8LMclVoQ8GUkRs94loBiEvMYjI9Hpc
 CwQJDud9/IGoB04O0f5UjWBLt/x+PqW6PPjzvcovqwjWUO1phfZa82Lck51TFH2RV3X7
 FEkPDdojxmTsaVgSiWUvb3LWjKnK0xyuboqss5393PDkgW11c0ScvyTIs4qg/yQHTYNL
 84hEdoRubuXYHB5uzbHifiouiOkGhvFpTPIJK/EbbS4YuLPs2pGkgV3qwJ9IU5WvNxZ6
 M8GByAJDAG1d8G/bteFFXZHPu7FMLP6lOXnJfRkgXZe1R3DmfVtOQu/tNXMQYhEB57+E
 27qw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=gm256xOQNCQbuBkByKlVJ/EcEsXg4KLgVmmRYKPvfKM=;
 b=cKGNhfxKmvuVaO1SNt5NXOM/qM33gj4c1nBzSMPb/TNh1QzUR9/oUBHLQ14CsBXDWy
 OMgZTK0bDBWE9W/pQHIT7vU1l4e/lSNx1c4xysMtz/Py1e+GFb/m2+DEXGYOdeENXKOX
 3SDU1rVd0DLyqtMC1RrBVQVzy7NP5Y8t9pCbeY5keieGvrxR8MCDmwyw81HvIobrB5KC
 cMuNVRa/iV3vqVskCQfR/yQ+F25TwyzvBx5ngx+ljVG+oXQPAhaHvf6VVOGgrZzdKjIQ
 gU3PejMYrucBLrqiNUw5eZSJdUpVXYDwJqErFqSqqiCn8SNO9GHHcBI9xOnz1/rmW/AH
 ++nA==
X-Gm-Message-State: APjAAAVoJwyQ7T6nonrNdCayE2aIRemOshz5ox6FvpvHO/T9xqj3nWTe
 DCBnPzYm7avqQsXk5Y6mz6o=
X-Google-Smtp-Source: APXvYqxSsuk19gKVi7huvICixgta6NSTYod9h20351Ai9QdLRCqPjp5rl/ypsDZYOrxEYKmzXvTP8g==
X-Received: by 2002:a1c:9a53:: with SMTP id c80mr19377709wme.173.1561480760909; 
 Tue, 25 Jun 2019 09:39:20 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id w67sm2580510wma.24.2019.06.25.09.39.20
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 09:39:20 -0700 (PDT)
To: =?UTF-8?Q?Vlad-Andrei_B=c4=82DOIU_=2878692=29?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
References: <20190625163228.440-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625163228.440-4-vlad_andrei.badoiu@stud.acs.upb.ro>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <7617f427-5a1d-2b6e-550a-d3dc39e5ebf7@gmail.com>
Date: Tue, 25 Jun 2019 19:39:19 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190625163228.440-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 3/3] Add getservbyname and
 getservbyport 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@neclab.eu" <felipe.huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI1
LzE5IDc6MzIgUE0sIFZsYWQtQW5kcmVpIELEgkRPSVUgKDc4NjkyKSB3cm90ZToKPiBUaGlzIHBh
dGNoIGFkZHMgYSBuZXcgZmlsZSBzZXJ2LmMgd2hpY2ggaG9sZHMgdGhlIGdldHNlcnYqIGZ1bmN0
aW9ucy4gQ3VycmVudGx5LAo+IG9ubHkgdGhlIGdldHNlcnZieW5hbWUgYW5kIGdldHNlcnZieXBv
cnQgYXJlIGF2YWlsYWJsZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUg
PHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIE1ha2VmaWxlLnVr
ICAgfCAgMSArCj4gIGV4cG9ydHN5bXMudWsgfCAgMiArKwo+ICBzZXJ2LmMgICAgICAgIHwgNDYg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVz
IGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlcnYuYwo+
IAo+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4gaW5kZXggYWJkZWNk
Yy4uN2IzMDE0NiAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZS51awo+ICsrKyBiL01ha2VmaWxlLnVr
Cj4gQEAgLTcyLDYgKzcyLDcgQEAgTElCTFdJUF9DRkxBR1MtJChDT05GSUdfTFdJUF9ERUJVRykg
Kz0gLURVS19ERUJVRwo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvYWxsb2Mu
Y3x1bmlrcmFmdAo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvcHJvdG8uYwo+
ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvaG9zdC5jCj4gK0xJQkxXSVBfU1JD
Uy15ICs9ICQoTElCTFdJUF9CQVNFKS9zZXJ2LmMKPiAgTElCTFdJUF9TUkNTLSQoQ09ORklHX0xX
SVBfVEhSRUFEUykgKz0gJChMSUJMV0lQX0JBU0UpL211dGV4LmN8dW5pa3JhZnQKPiAgTElCTFdJ
UF9TUkNTLSQoQ09ORklHX0xXSVBfVEhSRUFEUykgKz0gJChMSUJMV0lQX0JBU0UpL3NlbWFwaG9y
ZS5jfHVuaWtyYWZ0Cj4gIExJQkxXSVBfU1JDUy0kKENPTkZJR19MV0lQX1RIUkVBRFMpICs9ICQo
TElCTFdJUF9CQVNFKS9tYWlsYm94LmN8dW5pa3JhZnQKPiBkaWZmIC0tZ2l0IGEvZXhwb3J0c3lt
cy51ayBiL2V4cG9ydHN5bXMudWsKPiBpbmRleCA5NjViNjdjLi4zNzVhNzg5IDEwMDY0NAo+IC0t
LSBhL2V4cG9ydHN5bXMudWsKPiArKysgYi9leHBvcnRzeW1zLnVrCj4gQEAgLTMyLDMgKzMyLDUg
QEAgZ2V0cHJvdG9lbnQKPiAgZ2V0cHJvdG9ieW5hbWUKPiAgZ2V0cHJvdG9ieW51bWJlcgo+ICBn
ZXRob3N0YnlhZGRyCj4gK2dldHNlcnZieW5hbWUKPiArZ2V0c2VydmJ5cG9ydAo+IGRpZmYgLS1n
aXQgYS9zZXJ2LmMgYi9zZXJ2LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw
MDAuLjU1NWUzYTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc2Vydi5jCj4gQEAgLTAsMCArMSw0
NiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8q
Cj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNo
YXJlc3QuCj4gKyAqICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAr
ICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+
ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JT
IEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsg
KiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZ
Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxuZXRkYi5oPgo+ICsKPiArc3RydWN0IHNlcnZlbnQg
KmdldHNlcnZieW5hbWUoY29uc3QgY2hhciAqbmFtZSBfX3VudXNlZCwKPiArCWNvbnN0IGNoYXIg
KnByb3RvIF9fdW51c2VkKQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RydWN0
IHNlcnZlbnQgKmdldHNlcnZieXBvcnQoaW50IHBvcnQgX191bnVzZWQsCj4gKwljb25zdCBjaGFy
ICpwcm90byBfX3VudXNlZCkKPiArewo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiAKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:50:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:50: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 1hfrSy-000402-KY; Tue, 25 Jun 2019 19:50:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrSx-0003zs-Et
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:50:55 +0000
X-Inumbo-ID: 8958fb41-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.45]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8958fb41-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:50:52 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:50:50 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:50:50 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 0/3] Initial port of PSIMD on Unikraft
Thread-Index: AQHVK49KoGPsp9ubdUmMBgAslQ3pVw==
Date: Tue, 25 Jun 2019 19:50:50 +0000
Message-ID: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0022.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 58a03a43-64a4-4e50-60ce-08d6f9a66c8f
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB482774BFCD81A72B781AC2F9A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:3826;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(558084003)(54906003)(386003)(186003)(6506007)(5660300002)(8936002)(53936002)(476003)(2616005)(102836004)(8676002)(486006)(6116002)(4326008)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(74482002)(1076003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: FyZg21WAh2Iw9RWwQIpLb7Jz8PlyeyaJ/hgJ6jlVqkhPljQcAmmkYh90XL20uY6JPLTD0iu8q2I7faBCo/loe20DrRA7BXG5fHJLVvpl0bn3YpqTus88Woof8q9wN1y461Gj4+9LHKgheseD4/8AgVnr9fWxQrPxzAl5WtVhQoMbZFZnGUpADbZcMU6ZtTIlfimqEio9USgZ2qqZkxS9BodhuO3eaoafomonSN3FKiEylvEHM6u0qsZT7GZRh7gYaCaEh384cb2hU6G0C6kYy+0ES4tVEyPFTlxg337oWWFY03VK4wopDIMp7iYYjsD4753DA1Az8Au5sXnJRSC2K+Yibr7KawBIDWs7rMT6joI7zIPjCN6YFKfqlrVj5Z+WNCCUZlfJaZv24iNsiHZzPBanFZRkH+K9LCHTU2ZGc54=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 58a03a43-64a4-4e50-60ce-08d6f9a66c8f
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:50:50.2925 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 0/3] Initial port of PSIMD
 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIFBTSU1EIHRvIFVuaWtyYWZ0LiBQU0lN
RCBwcm92aWNlcyBwb3J0YWJsZQ0KMTI4LWJpdCBTSU1EIGludHJpbnNpY3MuDQoNClZsYWQtQW5k
cmVpIEJhZG9pdSAoMyk6DQogIEFkZCAuZ2l0aWdub3JlDQogIEFkZCBkb2N1bWVudGF0aW9uDQog
IEluaXRpYWwgcG9ydCBvZiBwc2ltZCBvbiBVbmlrcmFmdA0KDQotLSANCjIuMjEuMA0KDQpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:50:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:50: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 1hfrSz-00040E-M5; Tue, 25 Jun 2019 19:50:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrSx-0003zx-NZ
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:50:55 +0000
X-Inumbo-ID: 8b5172b3-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.45]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8b5172b3-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:50:55 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:50:51 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:50:51 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 1/3] Add .gitignore
Thread-Index: AQHVK49KTFOIK2PMPEuIDiGDI61gCg==
Date: Tue, 25 Jun 2019 19:50:50 +0000
Message-ID: <20190625195038.13082-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0022.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: e1080bee-6e8a-44f8-d2e9-08d6f9a66cf9
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB482741C3C532F47DEF0F1E14A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(54906003)(386003)(186003)(6506007)(5660300002)(76176011)(8936002)(53936002)(476003)(2616005)(102836004)(11346002)(8676002)(486006)(6116002)(4326008)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(446003)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(4744005)(74482002)(1076003)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: VuPkutL/0kZSkec9M0fGQ8XbPq/XzidliYEIlwoG2OHHmI3mcSu3QTCmKybZSwuZjNIu/Uva4pdfsSZ3uyDya4/6PEz6Yef8LYHKXvhkr7TP9yAstyeqLE1XRR9V6NjRgsDq73I0GKUN14Fc+gMu/KbLqasMl8npiJALMr8JXva1o7hFXMKnKwzi3TiNTU0BqoDlzJ+j5vZGaxBKNlgPAHQWF5y1qPtKN7ezw/iIyVScVLCjok1+0dbotmfUU526z9eK8TvJpnQuu9jqJA15NnEt9pqi3WVSHgO8VMiJUj/Qlnb8YDrip5ke7neKHSgyLq1rUb98Ex2oHA6aaD4fXPTl1k+fl6v0+klPsE1mELXSxuRzjHRkT3wgtpCzYDxa6TPJHA4gs33nmVNu7sSS2yLm85Bo+aqgxLTO/LZC4T8=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: e1080bee-6e8a-44f8-d2e9-08d6f9a66cf9
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:50:50.9901 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:50:58 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:50: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 1hfrT0-00040m-Ne; Tue, 25 Jun 2019 19:50:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrSy-000408-Vh
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:50:57 +0000
X-Inumbo-ID: 8bb79537-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.45]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8bb79537-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:50:55 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:50:52 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:50:52 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 2/3] Add documentation
Thread-Index: AQHVK49L0zvsL9AxqkaDWAoEL4zzJA==
Date: Tue, 25 Jun 2019 19:50:52 +0000
Message-ID: <20190625195038.13082-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0022.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: d9ecb666-057d-4989-1cd8-08d6f9a66db3
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB4827E5A38F47997BC53A9144A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(54906003)(386003)(186003)(6506007)(5660300002)(76176011)(8936002)(53936002)(476003)(2616005)(102836004)(11346002)(8676002)(486006)(6116002)(4326008)(14444005)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(446003)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(74482002)(1076003)(2004002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: la70M7LnXOGsGx6ZPL8NCNTADu1HZXZo+RcnRsSOWxvon9G8omxoDxw8T7vAgGrHBEUXfXsrwvfO9kESGyXBNPGmPW9WZPN9oWAh1fMMiIWi7m81VSU25KGRzJhtqz5Z8VKBjtDoTWevb5EqzsApF1c/ng9o6mNwqhvMOBXpUG2oX8R2CwswncQxPPwSISmuC6KAahDQPoFLvX3upU/pgfw9tpbV3OGgr8by/y4SD/KQ+sXfiTJdvVXMmt6ycsKlhqtF0/1hhBs3Q28hJJ8/DDNoHlI1pmQFHf5Vrd3Mp/cYXekQD8Rvwlh7YiKpkWLz47pKf5P5Qt/JqPUN4W0x/xAaxoDqvPchznuWzuc6KUNdJGw14McGC9o92R0CReY4rtsnDPsdUj3CclX+9Bjq4i5TLJKDRCKFk/nfqvoVKEQ=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: d9ecb666-057d-4989-1cd8-08d6f9a66db3
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:50:52.2804 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysNCiBDT1BZSU5HLm1kICAgICAgfCAzMSArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQogTUFJTlRBSU5FUlMubWQgIHwgMTEgKysrKysrKysrKysNCiBSRUFE
TUUubWQgICAgICAgfCAgNSArKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygr
KQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQNCiBjcmVhdGUgbW9kZSAxMDA2
NDQgQ09OVFJJQlVUSU5HLm1kDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQNCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1F
Lm1kDQoNCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi41NzMwMDQxDQotLS0gL2Rldi9udWxs
DQorKysgYi9DT0RJTkdfU1RZTEUubWQNCkBAIC0wLDAgKzEsNCBAQA0KK0NvZGluZyBTdHlsZQ0K
Kz09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAg
ZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KZGlmZiAtLWdpdCBhL0NPTlRS
SUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4
IDAwMDAwMDAuLjVmNTVlY2ENCi0tLSAvZGV2L251bGwNCisrKyBiL0NPTlRSSUJVVElORy5tZA0K
QEAgLTAsMCArMSw0IEBADQorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0DQorPT09PT09PT09PT09
PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZp
bGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCmRpZmYgLS1naXQgYS9DT1BZSU5H
Lm1kIGIvQ09QWUlORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjdl
ZjExZDENCi0tLSAvZGV2L251bGwNCisrKyBiL0NPUFlJTkcubWQNCkBAIC0wLDAgKzEsMzEgQEAN
CitMaWNlbnNlDQorPT09PT09PQ0KKw0KK1VuaWtyYWZ0IGxpYnBzaW1kIHdyYXBwZXJzDQorLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgd3JhcHBl
ciBjb2RlIHRvIGJ1aWxkIHBzaW1kIHdpdGggVW5pa3JhZnQuDQorRWFjaCBDIGNvZGUgZmlsZSBp
biB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQ0KK2NvcHlyaWdodCBv
d25lciBhbmQgdW5kZXIgd2hpY2ggdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhlIGNvZGUgaXMNCits
aWNlbnNlZC4gSWYgc3VjaCBhIGxpY2VuY2Ugbm90ZSBpcyBtaXNzaW5nLCB0aGUgZm9sbG93aW5n
IGNvcHlyaWdodA0KK25vdGljZSB3aWxsIGFwcGx5Og0KKw0KKw0KKwlDb3B5cmlnaHQoQykgMjAx
OS4gVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIA0KKwlBbGwgcmlnaHRzIHJl
c2VydmVkLg0KKwkNCisJVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcg0KKwltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorCUxpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKwl2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorCQ0KKwlUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN
CisJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YNCisJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUNCisJTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4NCisJDQorCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisJTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsNCisJaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLA0KKwk1OSBUZW1wbGUgUGxhY2UgLSBTdWl0
ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBDQorDQpkaWZmIC0tZ2l0IGEvTUFJTlRB
SU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw
MDAwMDAuLjA5ZjMyNmMNCi0tLSAvZGV2L251bGwNCisrKyBiL01BSU5UQUlORVJTLm1kDQpAQCAt
MCwwICsxLDExIEBADQorTWFpbnRhaW5lcnMgTGlzdA0KKz09PT09PT09PT09PT09PT0NCisNCitG
b3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRv
IGBNQUlOVEFJTkVSUy5tZGAgaW4NCit0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KKw0K
KwlMSUJQU0lNRC1VTklLUkFGVA0KKwlNOglGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNs
YWIuZXU+DQorCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQu
YWNzLnVwYi5ybz4NCisJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcNCisJRjogKg0KZGlm
ZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu
ZGV4IDAwMDAwMDAuLjI1OTA1YzANCi0tLSAvZGV2L251bGwNCisrKyBiL1JFQURNRS5tZA0KQEAg
LTAsMCArMSw1IEBADQorbGlicHNpbWQgZm9yIFVuaWtyYWZ0DQorPT09PT09PT09PT09PT09PT09
PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUgZG9j
dW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gDQorc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWty
YWZ0IHJlcG9zaXRvcnkuDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:50:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:50: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 1hfrT1-000416-PJ; Tue, 25 Jun 2019 19:50:59 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrSz-00040D-P0
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:50:57 +0000
X-Inumbo-ID: 8c2e6618-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.45]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8c2e6618-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:50:56 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:50:53 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:50:53 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 3/3] Initial port of psimd on Unikraft
Thread-Index: AQHVK49LQO4pXEL5l0uNBO9kmKOyHg==
Date: Tue, 25 Jun 2019 19:50:53 +0000
Message-ID: <20190625195038.13082-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1PR0802CA0022.eurprd08.prod.outlook.com
 (2603:10a6:800:aa::32) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 4b51157c-d9d3-46d0-119c-08d6f9a66e55
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB4827C26AE2BF9FC77D147D95A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(54906003)(386003)(186003)(6506007)(5660300002)(76176011)(8936002)(53936002)(6306002)(476003)(2616005)(102836004)(11346002)(8676002)(486006)(6116002)(4326008)(14444005)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(446003)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(74482002)(1076003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: kH4psH7NwBCoYitDcGK7u+JJrt8jU3OO6Q65f+U/Lu3PtiZPUjseNgn9FOACDCdfB1dRTHGA6BdMiVz9f5UGa9RMrYCdyIQfd3/hDx370AoCCaVxQ8P8yplYoXa+701maXeS+dgo6QdMElSslDEfxRWlaHG29EcuF2HElfX/764YkZMwLmkc6FbLYEQgyr2CIyYR70Jp67/T7hqQcwFAa0LEIQBLsRoeFtfgqbxRgzLGGMbDG0qLWjEKsbQ5CbgP9bPD/vt5dtFhHS/Gup+DYcf36EvS6IBrwMA8F7WUlj4diIzHSmZwKTr13ecH/a5JGm5bqjDdgaVbz07LLRTnrYgDrhHCEB0L6V7DwXeaX96y0GvmH/Ke8mu5BLonJvbbdKI4mtVZG6Gn95iKmpG2+z6/Xv65aRKk85V9K6a+j4E=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 4b51157c-d9d3-46d0-119c-08d6f9a66e55
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:50:53.2289 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 3/3] Initial port of psimd
 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIHBzaW1kIHRvIFVuaWtyYWZ0IGFzIGFuIGV4dGVy
bmFsIGxpYnJhcnkuDQpUaGUgaW50ZWwtaW50cmluc2ljcyBsaWJyYXJ5IGlzIHJlcXVpcmVkLiBX
aGVuIGFkZGluZyB0aGUgbGlicmFyeSB0bw0KdGhlIGRlcGVuZGVuY3kgbGlzdCwgcHNpbWQgc2hv
dWxkIHN0YXkgYWZ0ZXIgaW50ZWwtaW50cmluc2ljcy4NCihlLmcuIC4uLjokKFVLX0xJQlMpL2lu
dGVsLWludHJpbnNpY3M6JChVS19MSUJTKS9wc2ltZC4uLikuDQoNClNpZ25lZC1vZmYtYnk6IFZs
YWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0t
LQ0KIENvbmZpZy51ayAgICAgfCAgNSArKysrDQogTWFrZWZpbGUudWsgICB8IDc0ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGV4cG9ydHN5bXMu
dWsgfCAgMSArDQogMyBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IENvbmZpZy51aw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51aw0KIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrDQoNCmRpZmYgLS1naXQgYS9Db25maWcudWsg
Yi9Db25maWcudWsNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi43YTE0Mjkx
DQotLS0gL2Rldi9udWxsDQorKysgYi9Db25maWcudWsNCkBAIC0wLDAgKzEsNSBAQA0KK21lbnVj
b25maWcgTElCUFNJTUQNCisgICAgYm9vbCAicHNpbWQgLSBQb3J0YWJsZSAxMjgtYml0IFNJTUQg
aW50cmluc2ljcyINCisgICAgc2VsZWN0IExJQklOVEVMLUlOVFJJTlNJQ1MNCisgICAgZGVmYXVs
dCBuDQorDQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjljZmI2MzgNCi0tLSAvZGV2L251bGwNCisrKyBi
L01ha2VmaWxlLnVrDQpAQCAtMCwwICsxLDc0IEBADQorIyAgbGlicHNpbWQgY29uZmlnIGZpbGUN
CisjDQorIyAgQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVA
c3R1ZC5hY3MudXBiLnJvPg0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkg
UG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQNCisjICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisjICBhcmUgbWV0Og0KKyMNCisjICAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0K
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCisjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLg0KKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xk
ZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCisjICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKyMgICAgIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorIw0K
KyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIg0KKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCisjICBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQ0KKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUNCisjICBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQorIyAgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YNCisjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCisjICBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KKyMgIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpDQorIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUNCisjICBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4NCisjDQorIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1Ig
TU9ESUZJRUQgSU4gQU5ZIFdBWS4NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgTGli
cmFyeSByZWdpc3RyYXRpb24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyQoZXZhbCAkKGNh
bGwgYWRkbGliX3MsbGlicHNpbWQsJChDT05GSUdfTElCUFNJTUQpKSkNCisNCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KKyMgU291cmNlcw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorTElC
UFNJTURfVkVSU0lPTj1tYXN0ZXINCitMSUJQU0lNRF9VUkw9aHR0cHM6Ly9naXRodWIuY29tL01h
cmF0eXN6Y3phL3BzaW1kL2FyY2hpdmUvbWFzdGVyLnppcA0KK0xJQlBTSU1EX1BBVENIRElSPSQo
TElCUFNJTURfQkFTRSkvcGF0Y2hlcw0KKyQoZXZhbCAkKGNhbGwgZmV0Y2gsbGlicHNpbWQsJChM
SUJQU0lNRF9VUkwpKSkNCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgSGVscGVycw0K
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorTElCUFNJTURfU1VCRElSPXBzaW1kLW1hc3Rlcg0K
K0xJQlBTSU1EX1NSQz0kKExJQlBTSU1EX09SSUdJTikvJChMSUJQU0lNRF9TVUJESVIpDQorDQor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIExpYnJhcnkgaW5jbHVkZXMNCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KK0NJTkNMVURFUy0kKENPTkZJR19MSUJQU0lNRCkgKz0gLUkkKExJQlBT
SU1EX1NSQykvaW5jbHVkZQ0KK0NJTkNMVURFUy0kKENPTkZJR19MSUJQU0lNRCkgKz0gLUkkKExJ
QlBTSU1EX0JBU0UpL2luY2x1ZGUNCitDWFhJTkNMVURFUy0kKENPTkZJR19MSUJQU0lNRCkgKz0g
LUkkKExJQlBTSU1EX1NSQykvaW5jbHVkZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlBTSU1E
KSArPSAtSSQoTElCUFNJTURfQkFTRSkvaW5jbHVkZQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjDQorIyBHbG9iYWwgZmxhZ3MNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgU3VwcHJl
c3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sgbmVhdGVyDQor
U1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlh
YmxlIC1Xbm8tbm9ubnVsbAlcDQorLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVu
dXNlZC1sYWJlbCAtV25vLWNoYXItc3Vic2NyaXB0cwkJXA0KKy1Xbm8tdW51c2VkLWZ1bmN0aW9u
IC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVduby11bmluaXRpYWxpemVkCQlcDQor
LVduby1hcnJheS1ib3VuZHMgLVduby1tYXliZS11bmluaXRpYWxpemVkIC1Xbm8tcG9pbnRlci1z
aWduIC1Xbm8tdW51c2VkLXZhbHVlCVwNCistV25vLXVudXNlZC1tYWNyb3MgLVduby1wYXJlbnRo
ZXNlcyAtV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uCQlcDQorLVduby1taXNzaW5n
LWJyYWNlcyAtV25vLWVuZGlmLWxhYmVscyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQlc
DQorLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV25vLXR5cGUtbGltaXRzIC1X
bm8tc2lnbi1jb21wYXJlDQorTElCUFNJTURfQ0ZMQUdTLXkgICAgKz0gICQoU1VQUFJFU1NfRkxB
R1MpDQorTElCUFNJTURfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCisNCmRp
ZmYgLS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51aw0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCmluZGV4IDAwMDAwMDAuLjYyMWU5NGYNCi0tLSAvZGV2L251bGwNCisrKyBiL2V4cG9y
dHN5bXMudWsNCkBAIC0wLDAgKzEgQEANCitub25lDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:52:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:52: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 1hfrU5-00044t-V2; Tue, 25 Jun 2019 19:52:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrU4-00044i-Gb
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:52:04 +0000
X-Inumbo-ID: b37f340e-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.43]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b37f340e-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:52:03 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:52:01 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:52:01 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 0/3] Initial port of QNNPACK on
 Unikraft
Thread-Index: AQHVK490UnMX/ydYDkGHSVt68rEA/A==
Date: Tue, 25 Jun 2019 19:52:01 +0000
Message-ID: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0081.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:802:59::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 39857992-4cf5-4a08-7774-08d6f9a69716
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB4827008B7913088021BEE911A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:2276;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(979002)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(558084003)(54906003)(386003)(186003)(6506007)(5660300002)(8936002)(53936002)(476003)(2616005)(102836004)(8676002)(486006)(6116002)(4326008)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(74482002)(1076003)(969003)(989001)(999001)(1009001)(1019001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: /w4ZOUOyaON39Kk/nmWcwkW/VlrCXTLKieyJNYYJhU6K72dDzKhNod0dFVp/3uk0aJppGUMRBIooZxxfQfmRBSNC2j59dUInYGC9OfBc3ZxQek6foVvdoK+3Q8qkdgfd9IB2cmFTox7z9kfSmuclvm9w+Ax6SlDZ+nCTTBLV06dEEfmiB1TTy3MGaQ+dlTxwhbAj7wPEmYjwoxpevJICs7DL+dWwJb0DArnT0x2kd7kyz2FZFgOg87ugVG8u7bATbHK/w9PuA5y9sajWCLjr7Ff/ZGlreFud1qcG0gZSWjZk8rcCSmO6SkFTvOFDqIARuUvIWSlWP8XKSFQPJMMsD+baQ6BJYHRg7xK4h0ABN8ar07RUSrB61nHEf+P5P3eeqyKsH7dTiYN/bOl1Cl85Q1Y23thqF5ekozjc5GI+p2k=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 39857992-4cf5-4a08-7774-08d6f9a69716
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:52:01.7321 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 0/3] Initial port of
 QNNPACK 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIFFOTlBBQ0sgb24gVW5pa3JhZnQuIFFO
TlBBQ0sgaXMgYQ0KbW9iaWxlLW9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBxdWFudGl6ZWQg
bmV1cmFsIG5ldHdvcmsgb3BlcmF0b3JzLg0KDQpWbGFkLUFuZHJlaSBCYWRvaXUgKDMpOg0KICBB
ZGQgLmdpdGlnbm9yZQ0KICBBZGQgZG9jdW1lbnRhdGlvbg0KICBJbml0aWFsIHBvcnQgb2YgUU5O
UEFDSyBvbiBVbmlrcmFmdA0KDQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:52:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:52: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 1hfrU7-00045G-0M; Tue, 25 Jun 2019 19:52:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrU5-00044n-Ou
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:52:05 +0000
X-Inumbo-ID: b45e6494-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.43]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b45e6494-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:52:04 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:52:02 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:52:02 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 1/3] Add .gitignore
Thread-Index: AQHVK491k+9pKHS1pkap173fSIxSZg==
Date: Tue, 25 Jun 2019 19:52:02 +0000
Message-ID: <20190625195151.13174-2-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0081.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:802:59::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 3450d480-f1ba-4058-e8eb-08d6f9a697bd
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB4827D9B38F3735AB253A6699A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:296;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(54906003)(386003)(186003)(6506007)(5660300002)(76176011)(8936002)(53936002)(476003)(2616005)(102836004)(11346002)(8676002)(486006)(6116002)(4326008)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(446003)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(4744005)(74482002)(1076003)(142923001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: N+QmFYoyONKPa+SGXkYkxgPl4jZkeVas21V2yw7fBhk5bMbM5fPWhlKHUcvHVlGDYwI2ZCl+MtUa5rMrQEvhWg4cuHUsytBygqCuNOfXgk6PzBgtjo/pDeS5aW6+POFDHwaM5dMjCseO7ZcQhdnsOgd9o2AmIGCW5cHgyzg6EGW4yogJ5Frsi9T0Xc11uq4TCzgxYWEb+ZhA97NOUxVQrbqUXhVN1+mtT8QHihbw74LyeQZ/4mwSyHHhjAmhButsQMbWibm0mV2Trafpcw+BjzFcTMzeL5IsRYTg47iP19UmtW/qS4IM/fMzZviJo3Cbnr1SktwVDgcKYG5itMIuciB64QXUu6w4ouKpBSuiS+lmMMJked2Zpc0Q8t/6AR6intcErdZiD4dwEnfL1SBc+yKHzOaVVAPP8VVzNKYnn3U=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 3450d480-f1ba-4058-e8eb-08d6f9a697bd
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:52:02.8045 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogLmdpdGlnbm9yZSB8IDI3ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUg
MTAwNjQ0IC5naXRpZ25vcmUNCg0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3Jl
DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNzVkMmZkMw0KLS0tIC9kZXYv
bnVsbA0KKysrIGIvLmdpdGlnbm9yZQ0KQEAgLTAsMCArMSwyNyBAQA0KKyouZGVwZW5kDQorKi5v
DQorKi5hDQorKi5kDQorKi5zbw0KKyoub3JpZw0KKyoucmVqDQorKi5iYWsNCisqLnN3cA0KKyp+
DQorLCoNCitcIypcIw0KKy5cIyoNCitcI18qXCMNCisuXCNfKg0KKyEuZ2l0aWdub3JlDQorLioN
CisNCisjIGdudSBnbG9iYWwgZmlsZXMNCitHUEFUSA0KK0dSVEFHUw0KK0dTWU1TDQorR1RBR1MN
CisNCisjIGNzY29wZSBmaWxlcw0KK2NzY29wZS4qDQorbmNzY29wZS4qDQotLSANCjIuMjEuMA0K
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:52:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:52: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 1hfrU8-00045c-2U; Tue, 25 Jun 2019 19:52:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrU6-00044s-1n
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:52:06 +0000
X-Inumbo-ID: b52a7795-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.43]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b52a7795-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:52:05 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:52:03 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:52:03 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 2/3] Add documentation
Thread-Index: AQHVK4918heSnZ+fp0uvJi46AVeYBQ==
Date: Tue, 25 Jun 2019 19:52:03 +0000
Message-ID: <20190625195151.13174-3-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0081.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:802:59::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 7f68e5b7-1ff1-415b-d54c-08d6f9a69851
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB482722D15E0D67361680088CA6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(54906003)(386003)(186003)(6506007)(5660300002)(76176011)(8936002)(53936002)(476003)(2616005)(102836004)(11346002)(8676002)(486006)(6116002)(4326008)(14444005)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(446003)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(74482002)(1076003)(2004002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: wtAutq2wA1hbyjDM7+Y+VkA2p4fc0fdJLpLcGxLMreyjyHEda4kyVwpoi5l6y4mM2OYpjdVSmLq89tpAuQi+oTqCvxLz2c+eo8OqRYc/1JDcjHiCOPSUJ9YVICblw9KO/w6vpVlBCXuzh4grv1wc+DF77QY5UXz7J2nSyokBi2XaO3q15owgqMWGEueCnJhIgi078TFdfdnwy4rZKnYRam/jEWJQ5ds+FzAihHMX87kfasP+maqAr2q6aTkdDzisozsRL9xquqiKo1BcuKd97T7cW8wa/aT7QhczPWUkHmx4HsMDA1Kf/xJsWkVpTQOH+fA8B4uCuP28OMztnQYpZiheSOWvlBSDFFpDGUl2bV5yJ1rBGAKktucrH5LX893qMlQWb7qQMSlvyG5ixU23Gh50lR5MBdnsee27HAcfIYw=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: 7f68e5b7-1ff1-415b-d54c-08d6f9a69851
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:52:03.6809 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "felipe.huici@neclab.eu" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPg0KLS0tDQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKw0KIENPTlRSSUJV
VElORy5tZCB8ICA0ICsrKysNCiBDT1BZSU5HLm1kICAgICAgfCAzMSArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQogTUFJTlRBSU5FUlMubWQgIHwgMTEgKysrKysrKysrKysNCiBSRUFE
TUUubWQgICAgICAgfCAgNSArKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygr
KQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQNCiBjcmVhdGUgbW9kZSAxMDA2
NDQgQ09OVFJJQlVUSU5HLm1kDQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcubWQNCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiBjcmVhdGUgbW9kZSAxMDA2NDQgUkVBRE1F
Lm1kDQoNCmRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJTkdfU1RZTEUubWQNCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi41NzMwMDQxDQotLS0gL2Rldi9udWxs
DQorKysgYi9DT0RJTkdfU1RZTEUubWQNCkBAIC0wLDAgKzEsNCBAQA0KK0NvZGluZyBTdHlsZQ0K
Kz09PT09PT09PT09PQ0KKw0KK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAg
ZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KZGlmZiAtLWdpdCBhL0NPTlRS
SUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4
IDAwMDAwMDAuLjVmNTVlY2ENCi0tLSAvZGV2L251bGwNCisrKyBiL0NPTlRSSUJVVElORy5tZA0K
QEAgLTAsMCArMSw0IEBADQorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0DQorPT09PT09PT09PT09
PT09PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZp
bGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCmRpZmYgLS1naXQgYS9DT1BZSU5H
Lm1kIGIvQ09QWUlORy5tZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmY2
MDBhMDANCi0tLSAvZGV2L251bGwNCisrKyBiL0NPUFlJTkcubWQNCkBAIC0wLDAgKzEsMzEgQEAN
CitMaWNlbnNlDQorPT09PT09PQ0KKw0KK1VuaWtyYWZ0IGxpYnFubnBhY2sgd3JhcHBlcnMNCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFw
cGVyIGNvZGUgdG8gYnVpbGQgcW5ucGFjayB3aXRoIFVuaWtyYWZ0Lg0KK0VhY2ggQyBjb2RlIGZp
bGUgaW4gdGhpcyByZXBvc2l0b3J5IHNob3VsZCBkZWNsYXJlIHdobyBpcyB0aGUNCitjb3B5cmln
aHQgb3duZXIgYW5kIHVuZGVyIHdoaWNoIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoZSBjb2RlIGlz
DQorbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlzc2luZywgdGhlIGZvbGxv
d2luZyBjb3B5cmlnaHQNCitub3RpY2Ugd2lsbCBhcHBseToNCisNCisNCisJQ29weXJpZ2h0KEMp
IDIwMTkuIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiANCisJQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCisJDQorCVRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKwlMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisJdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKwkNCisJVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsDQorCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mDQorCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorCUxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuDQorCQ0KKwlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorCUxpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnkgaW4gdGhlIGZpbGUgQ09QWUlORy5MSUI7DQorCWlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwNCisJNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQQ0KKw0KZGlmZiAtLWdpdCBhL01B
SU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl
eCAwMDAwMDAwLi44MDdhNzQ3DQotLS0gL2Rldi9udWxsDQorKysgYi9NQUlOVEFJTkVSUy5tZA0K
QEAgLTAsMCArMSwxMSBAQA0KK01haW50YWluZXJzIExpc3QNCis9PT09PT09PT09PT09PT09DQor
DQorRm9yIG5vdGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZl
ciB0byBgTUFJTlRBSU5FUlMubWRgIGluDQordGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4N
CisNCisJTElCUFFOTlBBQ0stVU5JS1JBRlQNCisJTToJRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVp
Y2lAbmVjbGFiLmV1Pg0KKwlNOglWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9p
dUBzdHVkLmFjcy51cGIucm8+DQorCUw6CW1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnDQorCUY6
ICoNCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQNCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0DQppbmRleCAwMDAwMDAwLi4yNTkwNWMwDQotLS0gL2Rldi9udWxsDQorKysgYi9SRUFETUUu
bWQNCkBAIC0wLDAgKzEsNSBAQA0KK2xpYnBzaW1kIGZvciBVbmlrcmFmdA0KKz09PT09PT09PT09
PT09PT09PT0NCisNCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMg
dGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIGBkb2MvYA0KK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFp
biB1bmlrcmFmdCByZXBvc2l0b3J5Lg0KLS0gDQoyLjIxLjANCg0KX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Jun 25 19:52:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Jun 2019 19:52: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 1hfrUB-00046M-4D; Tue, 25 Jun 2019 19:52:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=kkd+=UY=stud.acs.upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1hfrU9-00045z-90
 for minios-devel@lists.xen.org; Tue, 25 Jun 2019 19:52:09 +0000
X-Inumbo-ID: b5b4e9c6-9782-11e9-8980-bc764e045a96
Received: from FRA01-PR2-obe.outbound.protection.outlook.com (unknown
 [40.107.12.71]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b5b4e9c6-9782-11e9-8980-bc764e045a96;
 Tue, 25 Jun 2019 19:52:07 +0000 (UTC)
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com (20.177.209.149)
 by PR1PR01MB4827.eurprd01.prod.exchangelabs.com (20.177.211.84) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun
 2019 19:52:04 +0000
Received: from PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825]) by PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 ([fe80::1da9:7748:5d49:1825%3]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019
 19:52:04 +0000
From: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 3/3] Initial port of QNNPACK on
 Unikraft
Thread-Index: AQHVK4923QRysYAilUmA3p1y5G/maw==
Date: Tue, 25 Jun 2019 19:52:04 +0000
Message-ID: <20190625195151.13174-4-vlad_andrei.badoiu@stud.acs.upb.ro>
References: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: VI1P195CA0081.EURP195.PROD.OUTLOOK.COM
 (2603:10a6:802:59::34) To PR1PR01MB5068.eurprd01.prod.exchangelabs.com
 (2603:10a6:102:6::21)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=vlad_andrei.badoiu@stud.acs.upb.ro; 
x-ms-exchange-messagesentrepresentingtype: 1
x-mailer: git-send-email 2.21.0
x-originating-ip: [188.25.55.124]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: c58c3745-2972-43aa-0650-08d6f9a698b6
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7025125)(7027125)(7023125)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);
 SRVR:PR1PR01MB4827; 
x-ms-traffictypediagnostic: PR1PR01MB4827:
x-microsoft-antispam-prvs: <PR1PR01MB4827F24A0624BCAAC71A4704A6E30@PR1PR01MB4827.eurprd01.prod.exchangelabs.com>
x-ms-oob-tlc-oobclassifiers: OLM:1443;
x-forefront-prvs: 0079056367
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(39840400004)(346002)(366004)(136003)(376002)(199004)(189003)(6512007)(66446008)(86362001)(14454004)(786003)(26005)(316002)(54906003)(386003)(186003)(6506007)(5660300002)(30864003)(76176011)(8936002)(53936002)(6306002)(476003)(2616005)(102836004)(11346002)(8676002)(486006)(6116002)(4326008)(14444005)(25786009)(508600001)(6486002)(256004)(6436002)(3846002)(66556008)(2906002)(71200400001)(73956011)(81166006)(85182001)(66476007)(71190400001)(81156014)(2501003)(68736007)(446003)(6916009)(66946007)(5640700003)(64756008)(50226002)(305945005)(2351001)(99286004)(7736002)(52116002)(66066001)(85202003)(74482002)(1076003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:PR1PR01MB4827;
 H:PR1PR01MB5068.eurprd01.prod.exchangelabs.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:0; MX:1; 
received-spf: None (protection.outlook.com: stud.acs.upb.ro does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: JGMlvZIiB6w+xbsH3vq9yALyFD88V0KDzXHx+brZFVL7gdKoGQ8ZIwSQLx9/xOPzxt0zw952I54uHv7yYD0PBsR3TRAVylRTrBA8E9msShk7/Iev5jVmGQkjvfpL77CnRz1B3Lh2w24konsS7K55p+6sGoLVObi2hY4ceP7stzeb/yrYaGhHVTC8D8LriNMCBMoSrF8wUQXFSYpz9+eaXTnfxdd+RvS/9Rn0453+fo9UQHrv7dx/Hnzhm5pz05VBWwNyrwBwlVoflRJ11uslk+39MV3XBsnqmJCg8XE61BmV2ouJqloyoL8l+8VUol+g3rHMcd5bQPZk0bXIgfhw6WG/I7G4uasaI/iSMMpf5p1NsZFP7zw4B2L40XaBtgdMvonrXXMucH73Q9aVxmkNAt9D1OMYQlLIQdu983kAOyk=
MIME-Version: 1.0
X-OriginatorOrg: stud.acs.upb.ro
X-MS-Exchange-CrossTenant-Network-Message-Id: c58c3745-2972-43aa-0650-08d6f9a698b6
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 19:52:04.5015 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 2d8cc8ba-8dda-4334-9e5c-fac2092e9bac
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vlad_andrei.badoiu@stud.acs.upb.ro
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR1PR01MB4827
Subject: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 3/3] Initial port of
 QNNPACK 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" <felipe.huici@neclab.eu>,
 =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIFFOTlBBQ0sgdG8gVW5pa3JhZnQgYXMgYW4gZXh0
ZXJuYWwgbGlicmFyeS4NClRoZSBkZXBlbmRlbmNpZXMgYXJlOiBsaWJjeHgsIG5ld2xpYiwgcHRo
cmVhZHMsZnAxNiwgZnhkaXYsIHBzaW1kIGFuZA0KIHB0aHJlYWRwb29sLg0KKGUuZy4gLi4uOiQo
VUtfTElCUykvbGlidW53aW5kOiQoVUtfTElCUykvY29tcGlsZXItcnQ6DQokKFVLX0xJQlMpL2xp
YmN4eGFiaTokKFVLX0xJQlMpL2xpYmN4eDokKFVLX0xJQlMpL3B0aHJlYWQtZW1iZWRkZWQ6DQok
KFVLX0xJQlMpL25ld2xpYjokKFVLX0xJQlMpL2ludGVsX2ludHJpbnNpYzokKFVLX0xJQlMpL2Zw
MTY6DQokKFVLX0xJQlMpL2Z4ZGl2OiQoVUtfTElCUykvcHNpbWQ6JChVS19MSUJTKS9wdGhyZWFk
cG9vbDokKFVLX0xJQlMpL3FubnBhY2spDQoNClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJh
ZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCi0tLQ0KIENvbmZpZy51
ayAgICAgICAgIHwgICA5ICsrKw0KIE1ha2VmaWxlLnVrICAgICAgIHwgMTQyICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBnbHVlLmMgICAgICAgICAgICB8
ICAxNSArKysrKw0KIGluY2x1ZGUvY3B1aW5mby5oIHwgICA1ICsrDQogNCBmaWxlcyBjaGFuZ2Vk
LCAxNzEgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsNCiBjcmVh
dGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2x1ZS5jDQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvY3B1aW5mby5oDQoNCmRpZmYgLS1naXQgYS9Db25m
aWcudWsgYi9Db25maWcudWsNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5h
ZWUwMjFjDQotLS0gL2Rldi9udWxsDQorKysgYi9Db25maWcudWsNCkBAIC0wLDAgKzEsOSBAQA0K
K21lbnVjb25maWcgTElCUU5OUEFDSw0KKyAgICBib29sICJRTk5QQUNLIC0gaW1wbGVtZW50YXRp
b24gb2YgcXVhbnRpemVkIG5ldXJhbCBuZXR3b3JrIG9wZXJhdG9ycyINCisgICAgc2VsZWN0IExJ
QlBTSU1EDQorICAgIHNlbGVjdCBMSUJDWFgNCisgICAgc2VsZWN0IExJQkZYRElWDQorICAgIHNl
bGVjdCBMSUJGUDE2DQorICAgIHNlbGVjdCBMSUJJTlRFTF9JTlRSSU5TSUNTDQorICAgIHNlbGVj
dCBMSUJQVEhSRUFEUE9PTA0KKyAgICBkZWZhdWx0IG4NCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51
ayBiL01ha2VmaWxlLnVrDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uZDM3
MDRhZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvTWFrZWZpbGUudWsNCkBAIC0wLDAgKzEsMTQyIEBA
DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIExpYnJhcnkgcmVnaXN0cmF0aW9uDQor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnFubnBh
Y2ssJChDT05GSUdfTElCUU5OUEFDSykpKQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQor
IyBTb3VyY2VzDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJRTk5QQUNLX1ZFUlNJT049
bWFzdGVyDQorTElCUU5OUEFDS19VUkw9aHR0cHM6Ly9naXRodWIuY29tL3B5dG9yY2gvUU5OUEFD
Sy9hcmNoaXZlL21hc3Rlci56aXANCitMSUJRTk5QQUNLX1BBVENIRElSPSQoTElCUU5OX0JBU0Up
L3BhdGNoZXMNCisNCiskKGV2YWwgJChjYWxsIGZldGNoLGxpYnFubnBhY2ssJChMSUJRTk5QQUNL
X1VSTCkpKQ0KKw0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBIZWxwZXJzDQorIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMNCitMSUJRTk5QQUNLX1NVQkRJUj1RTk5QQUNLLSQoTElCUU5O
UEFDS19WRVJTSU9OKQ0KK0xJQlFOTlBBQ0tfU1JDPSQoTElCUU5OUEFDS19PUklHSU4pLyQoTElC
UU5OUEFDS19TVUJESVIpDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIExpYnJhcnkg
aW5jbHVkZXMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK0NJTkNMVURFUy0kKENPTkZJR19M
SUJRTk5QQUNLKSArPSAtSSQoTElCUU5OUEFDS19TUkMpL2luY2x1ZGUNCitDSU5DTFVERVMtJChD
T05GSUdfTElCUU5OUEFDSykgKz0gLUkkKExJQlFOTlBBQ0tfQkFTRSkvaW5jbHVkZQ0KK0NJTkNM
VURFUy0kKENPTkZJR19MSUJRTk5QQUNLKSArPSAtSSQoTElCUU5OUEFDS19TUkMpL2RlcHMvY2xv
Zy9pbmNsdWRlDQorQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlFOTlBBQ0spICs9IC1JJChMSUJRTk5Q
QUNLX1NSQykvc3JjDQorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCUU5OUEFDSykgKz0gLUkkKExJ
QlFOTlBBQ0tfU1JDKS9pbmNsdWRlDQorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCUU5OUEFDSykg
Kz0gLUkkKExJQlFOTlBBQ0tfQkFTRSkvaW5jbHVkZQ0KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJ
QlFOTlBBQ0spICs9IC1JJChMSUJRTk5QQUNLX1NSQykvZGVwcy9jbG9nL2luY2x1ZGUNCitDWFhJ
TkNMVURFUy0kKENPTkZJR19MSUJRTk5QQUNLKSArPSAtSSQoTElCUU5OUEFDS19TUkMpL3NyYw0K
Kw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBHbG9iYWwgZmxhZ3MNCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5ncyB0byBtYWtlIHRoZSBidWls
ZCBwcm9jZXNzIGxvb2sgbmVhdGVyDQorU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFy
YW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8tbm9ubnVsbAkgICAgXA0KKy1Xbm8tdW51
c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby11bnVzZWQtbGFiZWwgLVduby1jaGFyLXN1YnNjcmlw
dHMJCSAgICAgICAgXA0KKy1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1Xbm8tbWlzc2luZy1maWVsZC1p
bml0aWFsaXplcnMgLVduby11bmluaXRpYWxpemVkCQkgICAgXA0KKy1Xbm8tYXJyYXktYm91bmRz
IC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZC12
YWx1ZQlcDQorLVduby11bnVzZWQtbWFjcm9zIC1Xbm8tcGFyZW50aGVzZXMgLVduby1pbXBsaWNp
dC1mdW5jdGlvbi1kZWNsYXJhdGlvbgkJICAgIFwNCistV25vLW1pc3NpbmctYnJhY2VzIC1Xbm8t
ZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCSAgICAgICAgXA0KKy1X
bm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0cyAtV25vLXNp
Z24tY29tcGFyZQ0KK0xJQl9OQU1FX0NGTEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdTKQ0K
K0xJQl9OQU1FX0NYWEZMQUdTLXkgICAgKz0gICQoU1VQUFJFU1NfRkxBR1MpDQorDQorTElCUU5O
UEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX0JBU0UpL2dsdWUuYw0KKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjDQorIyBMaWJyYXJ5IHNvdXJjZXMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
KyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvdThybWF4L25lb24u
Yw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy91OHJtYXgvc3Nl
Mi5jfHU4cm1heA0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy94
OGx1dC9zY2FsYXIuY3x4OGx1dA0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19T
UkMpL3NyYy9yZXF1YW50aXphdGlvbi9wcmVjaXNlLXNzZTQuYw0KK0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9mcDMyLXBzaW1kLmMNCitM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24v
ZnAzMi1zY2FsYXIuYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3Ny
Yy9yZXF1YW50aXphdGlvbi9wcmVjaXNlLXNjYWxhci5jDQorTElCUU5OUEFDS19TUkNTLXkgKz0g
JChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL2dlbW1sb3dwLXNzc2UzLmMNCitM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24v
cTMxLXNzc2UzLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMv
cmVxdWFudGl6YXRpb24vcHJlY2lzZS1zc2UyLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJ
QlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24vcTMxLXNzZTIuYw0KK0xJQlFOTlBBQ0tf
U1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9mcDMyLXNzZTIu
Yw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXph
dGlvbi9nZW1tbG93cC1zc2UyLmMNCisjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNL
X1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL2ZwMzItbmVvbi5jDQorI0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9nZW1tbG93cC1uZW9uLmMN
CitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRp
b24vcHJlY2lzZS1zc3NlMy5jDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NS
Qykvc3JjL3JlcXVhbnRpemF0aW9uL3ByZWNpc2UtcHNpbWQuYw0KKyNMSUJRTk5QQUNLX1NSQ1Mt
eSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24vcTMxLW5lb24uYw0KK0xJ
QlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9x
MzEtc3NlNC5jDQorI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9y
ZXF1YW50aXphdGlvbi9wcmVjaXNlLW5lb24uYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElC
UU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9nZW1tbG93cC1zc2U0LmMNCitMSUJRTk5Q
QUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24vcTMxLXNj
YWxhci5jDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVh
bnRpemF0aW9uL2dlbW1sb3dwLXNjYWxhci5jDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJR
Tk5QQUNLX1NSQykvc3JjL3U4bHV0MzJub3JtL3NjYWxhci5jfHU4bHV0MzJub3JtDQorTElCUU5O
UEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL2luZGlyZWN0aW9uLmMNCitMSUJR
Tk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvc29mdGFyZ21heC5jDQorI0xJ
QlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy91OGNsYW1wL25lb24uYw0K
K0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy91OGNsYW1wL3NzZTIu
Y3x1OGNsYW1wDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL29w
ZXJhdG9yLWRlbGV0ZS5jDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykv
c3JjL2NsYW1wLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMv
c2lnbW9pZC5jDQorI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9x
OGdlbW0vNHg4YzIteHpwLW5lb24uYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFD
S19TUkMpL3NyYy9xOGdlbW0vMng0Yzgtc3NlMi5jDQorI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQo
TElCUU5OUEFDS19TUkMpL3NyYy9xOGdlbW0vNHg4LW5lb24uYw0KKyNMSUJRTk5QQUNLX1NSQ1Mt
eSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcThnZW1tLzZ4NC1uZW9uLmMNCisjTElCUU5OUEFD
S19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Z2VtbS84eDgtbmVvbi5jDQorTElC
UU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Z2VtbS80eDRjMi1zc2Uy
LmN8cThnZW1tDQorI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9x
OGdlbW0vNHgtc3Vtcm93cy1uZW9uLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBB
Q0tfU1JDKS9zcmMvbWF4LXBvb2xpbmcuYw0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFO
TlBBQ0tfU1JDKS9zcmMvcTh2YWRkL25lb24uYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElC
UU5OUEFDS19TUkMpL3NyYy9xOHZhZGQvc3NlMi5jfHE4dmFkZA0KK0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9jb252b2x1dGlvbi5jDQorTElCUU5OUEFDS19TUkNT
LXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL2xlYWt5LXJlbHUuYw0KK0xJQlFOTlBBQ0tfU1JD
Uy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGR3Y29udi9tcDh4MjUtc3NlMi5jDQorTElC
UU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4ZHdjb252L3VwOHg5LXNz
ZTIuY3xxOGR3Y29udg0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9z
cmMvcThkd2NvbnYvbXA4eDI1LW5lb24uYw0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFO
TlBBQ0tfU1JDKS9zcmMvcThkd2NvbnYvdXA4eDktbmVvbi5jDQorTElCUU5OUEFDS19TUkNTLXkg
Kz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3Nkd2NvbnYvdXA0eDktcHNpbWQuYw0KK0xJQlFOTlBB
Q0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9zY29udi82eDgtcHNpbWQuY3xzY29u
dg0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9kZWNvbnZvbHV0
aW9uLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvaW5pdC5j
DQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Z2F2Z3Bvb2wv
dXA4eG0tc3NlMi5jfHE4Z2F2Z3Bvb2wNCisjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5Q
QUNLX1NSQykvc3JjL3E4Z2F2Z3Bvb2wvdXA4eG0tbmVvbi5jDQorTElCUU5OUEFDS19TUkNTLXkg
Kz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Z2F2Z3Bvb2wvbXA4eDdwN3Etc3NlMi5jDQorI0xJ
QlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGdhdmdwb29sL3VwOHg3
LW5lb24uYw0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcThn
YXZncG9vbC9tcDh4N3A3cS1uZW9uLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBB
Q0tfU1JDKS9zcmMvcThnYXZncG9vbC91cDh4Ny1zc2UyLmMNCisjTElCUU5OUEFDS19TUkNTLXkg
Kz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3U4bWF4cG9vbC8xNng5cDhxLW5lb24uYw0KKyNMSUJR
Tk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvdThtYXhwb29sL3N1YjE2LW5l
b24uYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy91OG1heHBv
b2wvMTZ4OXA4cS1zc2UyLmMNCitMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JD
KS9zcmMvdThtYXhwb29sL3N1YjE2LXNzZTIuYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElC
UU5OUEFDS19TUkMpL3NyYy9hdmVyYWdlLXBvb2xpbmcuYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9
ICQoTElCUU5OUEFDS19TUkMpL3NyYy9hZGQuYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElC
UU5OUEFDS19TUkMpL3NyYy9nbG9iYWwtYXZlcmFnZS1wb29saW5nLmMNCitMSUJRTk5QQUNLX1NS
Q1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvb3BlcmF0b3ItcnVuLmMNCisjTElCUU5OUEFD
S19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Y29udi80eDgtbmVvbi5jDQorI0xJ
QlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGNvbnYvOHg4LW5lb24u
Yw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGNvbnYvNHg0
YzItc3NlMi5jfHE4Y29udg0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMp
L3NyYy9zZ2VtbS82eDgtcHNpbWQuY3xxZ2VtbQ0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJ
QlFOTlBBQ0tfU1JDKS9zcmMvc2dlbW0vNng4LW5lb24uYw0KKyNMSUJRTk5QQUNLX1NSQ1MteSAr
PSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvc2dlbW0vNXg4LW5lb24uYw0KK0xJQlFOTlBBQ0tfU1JD
Uy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9jaGFubmVsLXNodWZmbGUuYw0KK0xJQlFOTlBB
Q0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy94OHppcC94My1zc2UyLmMNCitMSUJR
Tk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMveDh6aXAveG0tc3NlMi5jDQor
TElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3g4emlwL3g0LXNzZTIu
Yw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy94OHppcC94Mi1z
c2UyLmMNCisjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3g4emlw
L3gyLW5lb24uYw0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMv
eDh6aXAveG0tbmVvbi5jDQorI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMp
L3NyYy94OHppcC94My1uZW9uLmMNCisjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNL
X1NSQykvc3JjL3g4emlwL3g0LW5lb24uYw0KK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5O
UEFDS19TUkMpL3NyYy9mdWxseS1jb25uZWN0ZWQuYw0KKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAk
KExJQlFOTlBBQ0tfU1JDKS9zcmMvaGdlbW0vOHg4LW5lb25mcDE2YXJpdGguYw0KK0xJQlFOTlBB
Q0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGF2Z3Bvb2wvbXA4eDlwOHEtc3Nl
Mi5jDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4YXZncG9v
bC91cDh4bS1zc2UyLmN8cThhdmdwb29sDQorI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5O
UEFDS19TUkMpL3NyYy9xOGF2Z3Bvb2wvbXA4eDlwOHEtbmVvbi5jDQorI0xJQlFOTlBBQ0tfU1JD
Uy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGF2Z3Bvb2wvdXA4eG0tbmVvbi5jDQorTElC
UU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4YXZncG9vbC91cDh4OS1z
c2UyLmN8cThhdmdwb29sDQorDQorTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NS
QykvZGVwcy9jbG9nL3NyYy9jbG9nLmMNCisjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5Q
QUNLX1NSQykvc3JjL3E4YXZncG9vbC91cDh4OS1uZW9uLmMNCmRpZmYgLS1naXQgYS9nbHVlLmMg
Yi9nbHVlLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4zMmQ5OTVjDQot
LS0gL2Rldi9udWxsDQorKysgYi9nbHVlLmMNCkBAIC0wLDAgKzEsMTUgQEANCisNCisNCitpbnQg
Y3B1aW5mb19oYXNfeDg2X3NzZTIoKQ0KK3sNCisJcmV0dXJuIDE7DQorfQ0KKw0KK2ludCBjcHVp
bmZvX2luaXRpYWxpemUoKQ0KK3sNCisJcmV0dXJuIDE7DQorfQ0KKw0KK3ZvaWQgY3B1aW5mb19k
ZWluaXRpYWxpemUoKQ0KK3sNCit9DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jcHVpbmZvLmggYi9p
bmNsdWRlL2NwdWluZm8uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjVm
MzU4ZjgNCi0tLSAvZGV2L251bGwNCisrKyBiL2luY2x1ZGUvY3B1aW5mby5oDQpAQCAtMCwwICsx
LDUgQEANCisjZGVmaW5lIENQVUlORk9fQVJDSF9YODZfNjQgMQ0KKw0KK2ludCBjcHVpbmZvX2hh
c194ODZfc3NlMigpOw0KK2ludCBjcHVpbmZvX2luaXRpYWxpemUoKTsNCit2b2lkIGNwdWluZm9f
ZGVpbml0aWFsaXplKCk7DQotLSANCjIuMjEuMA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx94-00073c-55; Wed, 26 Jun 2019 01:54:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx93-00073S-CO
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:45 +0000
X-Inumbo-ID: 5d898b66-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x42e.google.com (unknown [2a00:1450:4864:20::42e])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5d898b66-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:43 +0000 (UTC)
Received: by mail-wr1-x42e.google.com with SMTP id x4so720616wrt.6
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:43 -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=KlOxtEZaRAnEfPa2vGE2SBnXU+SQEDFWmwWXvsuI2iY=;
 b=D0GbyZqH9U/yzg/DzdW+FXBE9nAMFsxwMTABHsUxksvQG9ao4iud6aqO/4sgPe+Ui1
 knVMN1Ka3/nYtx/3BbvhQKaMmHU6pNpZqEAGheOjFP1tuxG47cLSlZscNEBUW1hwUBAD
 c+/l2MMRzM9GKtMxcFFzu3UW8UNTVaEn3SamsskuG0Avfx0zi2ylbFijAzaCpZvM7ck+
 vUB7ftnJV/9BxTc6TMLtyeIih0bNAs66C74JQ4fabQjgEhKSX1oWi7/kMA4bnB12Uo5b
 1nhn/Yy25WJ7Lo+F8j3+dV5JH96KJdxiW+P/+pdIGRxTtcXsKsHtajgOOYLuUIXFJXNG
 0eCg==
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=KlOxtEZaRAnEfPa2vGE2SBnXU+SQEDFWmwWXvsuI2iY=;
 b=UGTMV/zyd1p8tif35VVKMc1Holh9KO+C65b4os1KLxKTL+UDtOu3HgphyCIy5OB3ov
 0GCovXidCHYlB/DokAlu/VYhPSNj8X4DtSRFUp1Dd7g75UzUHL5FaoWOKUCCTjnh0E6i
 ngfBzL7ZXKi2ZjsEfrLoFD3a+93Rn8kaJAluR4D+H1R3JedigLsT7/WNAnSMQ1rApHZf
 nwHkMmW+BProywhWyX2PolrbOnQKUcnmWygJhaBNFYRELZYACzLVeVbuzko7RTmorJRw
 zC1gpYCbxEHUaHl7cj58S/idtNSn8eY1Uq2H7BT/viJ9CqbN2A1cNy+W/KqsrlFBRTkA
 1lKA==
X-Gm-Message-State: APjAAAVjXG0yjCIKiLsk8t6idh6J7kv1XwxNNq9Ij6ndtYHM4p2+z9LV
 TdZpb5PuaZ5rB3ifrhQ1gXhvUGFnOqs=
X-Google-Smtp-Source: APXvYqyBRFsJhLdv7c0vie80/l3BKyW8BRzpT1Fk9p1N4YfhDGGIdMPyHsxb9QJ7zzILiIP0iRDH6A==
X-Received: by 2002:adf:9d4c:: with SMTP id o12mr875683wre.340.1561514082021; 
 Tue, 25 Jun 2019 18:54:42 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.41
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:41 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:31 +0300
Message-Id: <20190626015438.11046-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 0/7] LWIP fixes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

VGhpcyBwYXRjaCBzZXJpZXJzIHNvbHZlciBzb21lIExXSVAgaXNzdWVzIGFuZCBhZGFwdHMgaXQK
dG8gdGhlIG5ldyBWRlMgY2hhbmdlcy4KVGhpcyBwYXRjaCBzZXJpZXMgZGVwZW5kcyBvbiB0aGUg
cmVjZW50ICJWRlNDT1JFIGZpeGVzIiBwYXRjaCBzZXJpZXMKCk1paGFpIFBvZ29uYXJ1ICg3KToK
ICBGaXggcG9sbCgpIHJldCB2YXJpYWJsZSB0eXBlIGFuZCBzZWxlY3QoKSBtYXhmZCBjYWxjdWxh
dGlvbgogIExldCB2ZnMgZnJlZSB0aGUgcmVzb3VyY2VzIHVzZWQgZm9yIHRoZSBzb2NrZXQKICBB
ZGFwdCBsd2lwIHRvIG5ldyB2ZnMgY2hhbmdlcwogIFVzZSB2ZnMgZnVuY3Rpb25zIHRvIGFsbG9j
YXRlIHNvY2tldCB2bm9kZSBhbmQgZGVudHJ5CiAgQ2hhbmdlIHRoZSByZXR1cm4gb2YgZXJyb3Jz
IHRvIG1hdGNoIHZmcyBleHBlY3RhdGlvbnMKICBQcm92aWRlIGlvY3RsIGZvciBMV0lQCiAgRnVy
dGhlciBwcm90ZWN0IGdldGhvc3RieW5hbWUqIGRlZmluZXMKCiBleHBvcnRzeW1zLnVrICAgICAg
ICB8ICAgMSAtCiBpbmNsdWRlL25ldGRiLmggICAgICB8ICAgNCArLQogaW5jbHVkZS9zeXMvc29j
a2V0LmggfCAgIDIgLQogc29ja2V0cy5jICAgICAgICAgICAgfCAyNDkgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE3
NyBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKCi0tIAoyLjExLjAKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:47 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx94-00073h-7D; Wed, 26 Jun 2019 01:54:46 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx93-00073T-DJ
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:45 +0000
X-Inumbo-ID: 5e2c9d6d-97b5-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5e2c9d6d-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:44 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id f17so376920wme.2
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:44 -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=d2hqrb9bevJy2rtV/FawquXVxFF4wg0bNTc5tRlhT84=;
 b=Iv4Nf+KK6L7CcYIpwiM6QoVWX+J7qCScCTgqxFLhvFzGSm7Dk+A+Edlf0O2WjK7t7E
 a5euFM68jrHSy3Zgb4J8nfgZdRCgJcH3IWzDKpxhk+QQtjy0DRRki7Bt3IK3vyizFHGr
 0Ox0cFXcvWKss2KnEYPiIkXlGCEjxDHxqXfSOcR3AFDfPTeG6ZmXg4gzSwnwvoTSrFbq
 4H59xpYlTeZ4TC+tFzC1OjNQHsQpxVtBtKWHDEkWqU29ebvvK2An8m4grcd64B3esXjx
 +wj3tvyNKPk4/Ddi2zkJ8AuzuJecfGJkHIPB95Y9R/ZaGRFlBXRzwZIDebd7nnZZsiDS
 +tHg==
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=d2hqrb9bevJy2rtV/FawquXVxFF4wg0bNTc5tRlhT84=;
 b=ZTSDS+9Z91rwDJ/8ajvCfFqMixbwd6xhe8mkuNDMETCoZEFOgY1d+2NUEjSLmUeNcB
 L04xT9JiN84pEtGsPRl5RhYT4zXtUCJTuAaY3Xjl0Dwvqfq+KTIf4BmKizubbwD/1J9n
 i97/VZ1TKjH4VBwE+O1eFnFKjvbsV2aCJ4w0/pkIwFjVPmDg9JGhkO4n1ufpU9CRbVkP
 n395h+siD2clooOoqjFYCcmR2FV4ST0WmVXFY0WPB+Ds54/NJfB0/V5kHRT9+76rlove
 rO13KGwxpceAoEMrlVxQF1jHAuaoRk1i96n+uM+6atJ7cB+anFGhVgEflqULnWZgNrqL
 rKaA==
X-Gm-Message-State: APjAAAUADgnIl8PvH8HHtE3qKFAAyzcMCKxMNTU5VVczHwZ1BW//Y7ad
 l38HBaChP1GDlXYTfgqdtUVgGzESX3I=
X-Google-Smtp-Source: APXvYqxoL9/8ZuzqRoDp17DiCI0RH2pRmFti9ss8+WnRwPQu38opz2feU+w7UxnwI/IZ+CMOTdcu0Q==
X-Received: by 2002:a7b:cd15:: with SMTP id f21mr444398wmj.99.1561514082908;
 Tue, 25 Jun 2019 18:54:42 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.42
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:42 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:32 +0300
Message-Id: <20190626015438.11046-2-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 1/7] Fix poll() ret variable
 type and select() maxfd calculation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

UG9sbCByZXQgdmFyaWFibGUgbXVzdCBiZSBkZWNsYXJlZCBhcyBpbnQKU2VsZWN0IG11c3QgY2Fs
Y3VsYXRlIG1heGZkIGFzIHRoZSBtYXhpbXVtIGJldHdlZW4gbHdpcCBmaWxlIGRlc2NyaXB0b3Jz
CgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBnbWFpbC5jb20+
Ci0tLQogc29ja2V0cy5jIHwgMTIgKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNl
cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NvY2tldHMuYyBiL3NvY2tl
dHMuYwppbmRleCA3NzIzNWU5Li5lOTU3NThkIDEwMDY0NAotLS0gYS9zb2NrZXRzLmMKKysrIGIv
c29ja2V0cy5jCkBAIC0zMzUsNyArMzM1LDggQEAgRVhJVDoKIAogaW50IHBvbGwoc3RydWN0IHBv
bGxmZCBmZHNbXSwgbmZkc190IG5mZHMsIGludCB0aW1lb3V0KQogewotCXVuc2lnbmVkIGludCBp
LCByZXQ7CisJaW50IHJldDsKKwl1bnNpZ25lZCBpbnQgaTsKIAlzdHJ1Y3Qgc29ja19uZXRfZmls
ZSAqZmlsZTsKIAlzdHJ1Y3QgcG9sbGZkIGx3aXBfZmRzW25mZHNdOwogCkBAIC0zOTUsNyArMzk2
LDYgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRl
ZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKIAltYXhmZCA9IDA7CiAJZm9yIChpID0gMDsgaSA8IG5m
ZHM7IGkrKykgewogCQlpZiAocmVhZGZkcyAmJiBGRF9JU1NFVChpLCByZWFkZmRzKSkgewotCQkJ
bWF4ZmQgPSBpOwogCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwogCQkJaWYgKFBUUklT
RVJSKGZpbGUpKSB7CiAJCQkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKQEAgLTQwNSwxMSAr
NDA1LDEyIEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3
cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJF
UlIoZmlsZSkpOwogCQkJCWdvdG8gRVhJVDsKIAkJCX0KKwkJCWlmIChtYXhmZCA8IGZpbGUtPnNv
Y2tfZmQpCisJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwogCQkJRkRfU0VUKGZpbGUtPnNvY2tf
ZmQsICZyZCk7CiAJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiBy
ZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRlZmRzICYmIEZEX0lTU0VUKGksIHdy
aXRlZmRzKSkgewotCQkJbWF4ZmQgPSBpOwogCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KGkp
OwogCQkJaWYgKFBUUklTRVJSKGZpbGUpKSB7CiAJCQkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywKQEAgLTQxOSwxMSArNDIwLDEyIEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVh
ZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkJU09DS19ORVRf
U0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwogCQkJCWdvdG8gRVhJVDsKIAkJCX0KKwkJCWlmICht
YXhmZCA8IGZpbGUtPnNvY2tfZmQpCisJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwogCQkJRkRf
U0VUKGZpbGUtPnNvY2tfZmQsICZ3cik7CiAJCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNj
b3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKGV4Y2VwdGZkcyAm
JiBGRF9JU1NFVChpLCBleGNlcHRmZHMpKSB7Ci0JCQltYXhmZCA9IGk7CiAJCQlmaWxlID0gc29j
a19uZXRfZmlsZV9nZXQoaSk7CiAJCQlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKIAkJCQlMV0lQX0RF
QlVHRihTT0NLRVRTX0RFQlVHLApAQCAtNDMzLDYgKzQzNSw4IEBAIGludCBzZWxlY3QoaW50IG5m
ZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMs
CiAJCQkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwogCQkJCWdvdG8gRVhJVDsK
IAkJCX0KKwkJCWlmIChtYXhmZCA8IGZpbGUtPnNvY2tfZmQpCisJCQkJbWF4ZmQgPSBmaWxlLT5z
b2NrX2ZkOwogCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZ4Yyk7CiAJCQl2ZnNjb3JlX3B1dF9m
aWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KLS0g
CjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3Mt
ZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx96-00074M-8q; Wed, 26 Jun 2019 01:54:48 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx94-00073o-Od
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:46 +0000
X-Inumbo-ID: 5ed97bf7-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5ed97bf7-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:45 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id r16so694219wrl.11
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54: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:in-reply-to:references;
 bh=ctNsl/6ERw4TY0Bt15WbofWrulOLRmPXBRRc9xNO1n0=;
 b=Hnxz9lFpkdf1ilErc02IktgQbOCZnLHZLjBi2/D8AU1phM3unoe562/kEIoSza0+/5
 A3SRT4BngKd+K8WW9flH0JnTtJmBgWrodXwvqETovt6gzZj3sSjehNEaLofwo57kApIr
 S1qg5+AYhGSoRlMFgKUl1El1HFNHViE5jFeZHAw7kCDlultbBeWxcouuAoMnWwuwdeN7
 LMHOEBTwWx5r9N2ZzC9OaFaR57Bc+G7nwj2whNEcQvFuakJyePFZCfsr3iWryiRNi2QW
 OJ3dh8JM/GEL8yWZr/X/N2hZn19oIieML33pLKGVYyrbe24/HIFYqA3irSN8j72mt9Dc
 k9xw==
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=ctNsl/6ERw4TY0Bt15WbofWrulOLRmPXBRRc9xNO1n0=;
 b=TsUU/mDcNghvztjcpfLUKYb2+40yLkDjqQNzBR96RJv3HcB/Q8J1irWyhsNQ1fmet7
 oSeWev/Spr7r6QQzw/HyiVz+JgXNXqz4FYSMdjTPlUlUIf/aNLnJ7yYhdbCP2DzEojwJ
 p1liNtInKxDH6aZQvZs1ZBoSH0YJWuEbWFSkgoK8B1PneqJUcKzrpHLWH8ujFPg7mxAB
 vrG61uktUkDojRY5bMHtWYUbkMdhGxro2hlkIShDnIIf2DAhKRa7TuknXyToTbWU2z3P
 k35mwQwSZmNsLdKCoDFq9hNvI6FUZIpY+rrJHnvHuF/AqE8E8PW8yZSBE2VVDutPziB+
 yitg==
X-Gm-Message-State: APjAAAWgW19SLTVMhKeT0TyUq1sGjPpJo5BnwajFzghgmVwzFmN0yw2f
 6heZxLJahtl7LMvqkg18moWFvFsOCTU=
X-Google-Smtp-Source: APXvYqwnJvHeBS7K3XtCnFSCaJyzIk4aXMcqLSO/+OSXAysZ07e5VyWpJ0EmxB3BAKibYpRBd+1xeA==
X-Received: by 2002:a5d:4810:: with SMTP id l16mr802611wrq.48.1561514084012;
 Tue, 25 Jun 2019 18:54:44 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.43
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:43 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:33 +0300
Message-Id: <20190626015438.11046-3-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 2/7] Let vfs free the resources
 used for the socket
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

UmlnaHQgbm93IHNvY2tfbmV0X2Nsb3NlIGZyZWVzIHRoZSBkZW50cnkgYW5kIHZub2RlIHVzZWQg
Zm9yCnRoZSBzb2NrZXQuIFZmcyB1c2VzIHRoZSB2bm9kZSBhZnRlciBjYWxsaW5nIHNvY2tfbmV0
X2Nsb3NlCnNvIGl0IGFjY2Vzc2VzIGZyZWVkIG1lbW9yeS4KCldlIHdpbGwgbGV0IHZmcyBoYW5k
bGUgdGhlIGZyZWVpbmcgb2YgdGhlIHZmc2NvcmVfZmlsZSwKZGVudHJ5IGFuZCB2bm9kZS4KClNp
Z25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KLS0t
CiBzb2NrZXRzLmMgfCAxMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCsp
LCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zb2NrZXRzLmMgYi9zb2NrZXRzLmMKaW5k
ZXggZTk1NzU4ZC4uY2JlMzAzMCAxMDA2NDQKLS0tIGEvc29ja2V0cy5jCisrKyBiL3NvY2tldHMu
YwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVkZSA8dmZz
Y29yZS9maWxlLmg+CiAjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgorI2luY2x1ZGUgPHZmc2NvcmUv
bW91bnQuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5jbHVkZSA8dWsvYWxsb2Mu
aD4KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CkBAIC00OCw4ICs0OSwxNiBAQAogI2RlZmlu
ZSBTT0NLX05FVF9TRVRfRVJSTk8oZXJyY29kZSkgXAogCShlcnJubyA9IC0oZXJyY29kZSkpCiAK
Ky8qCisgKiBCb2d1cyBtb3VudCBwb2ludCB1c2VkIGJ5IGFsbCBzb2NrZXRzCisgKgorICogV2Ug
bmVlZCB0aGlzIGJlY2F1c2Ugd2hlbiBkZWxldGluZyBhIHZub2RlCisgKiB2ZnMgY2FsbHMgdmZz
X3VuYnVzeSBvbiBpdHMgbW91bnQgcG9pbnQKKyAqLworc3RhdGljIHN0cnVjdCBtb3VudCBzX21v
dW50OworCiBzdHJ1Y3Qgc29ja19uZXRfZmlsZSB7Ci0Jc3RydWN0IHZmc2NvcmVfZmlsZSB2ZnNj
b3JlX2ZpbGU7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlOwogCWludCBzb2Nr
X2ZkOwogfTsKIApAQCAtNTgsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzb2NrX25l
dF9maWxlICpzb2NrX25ldF9maWxlX2dldChpbnQgZmQpCiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUg
KmZpbGUgPSBOVUxMOwogCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZvczsKIAotCWZvcyAgPSB2ZnNj
b3JlX2dldF9maWxlKGZkKTsKKwlmb3MgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKIAlpZiAoIWZv
cykgewogCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAogCQkJICAgICgiZmFpbGVkIHdpdGgg
aW52YWxpZCBkZXNjcmlwdG9yXG4iKSk7CkBAIC03MSw3ICs4MCw3IEBAIHN0YXRpYyBpbmxpbmUg
c3RydWN0IHNvY2tfbmV0X2ZpbGUgKnNvY2tfbmV0X2ZpbGVfZ2V0KGludCBmZCkKIAkJZmlsZSA9
IEVSUjJQVFIoLUVCQURGKTsKIAkJZ290byBFWElUOwogCX0KLQlmaWxlID0gX19jb250YWluZXJv
Zihmb3MsIHN0cnVjdCBzb2NrX25ldF9maWxlLCB2ZnNjb3JlX2ZpbGUpOworCWZpbGUgPSBmb3Mt
PmZfZGF0YTsKIEVYSVQ6CiAJcmV0dXJuIGZpbGU7CiB9CkBAIC04MSw2ICs5MCw3IEBAIHN0YXRp
YyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2NrX2ZkKQogCWlu
dCByZXQgPSAwOwogCWludCB2ZnNfZmQ7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBO
VUxMOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc19maWxlID0gTlVMTDsKIAlzdHJ1Y3QgZGVu
dHJ5ICpzX2RlbnRyeTsKIAlzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGU7CiAKQEAgLTEwMSw2ICsxMTEs
MTMgQEAgc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNv
Y2tfZmQpCiAJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IGZpbGU6IE91dCBvZiBt
ZW1vcnlcbiIpKTsKIAkJZ290byBFUlJfTUFMTE9DX0ZJTEU7CiAJfQorCXZmc19maWxlID0gdWtf
Y2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIDEsIHNpemVvZigqdmZzX2ZpbGUpKTsKKwlp
ZiAoIXZmc19maWxlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCUxXSVBfREVCVUdGKFNPQ0tFVFNf
REVCVUcsCisJCQkJKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2Yg
bWVtb3J5XG4iKSk7CisJCWdvdG8gRVJSX01BTExPQ19WRlNfRklMRTsKKwl9CiAJc19kZW50cnkg
PSB1a19jYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkp
OwogCWlmICghc19kZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKQEAgLTExNywyNiArMTM0LDQ2
IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2Nr
X2ZkKQogCX0KIAogCS8qIFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBmaWxsIG91dCBuZWNlc3Nh
cnkgZmllbGRzICovCi0JZmlsZS0+dmZzY29yZV9maWxlLmZkID0gdmZzX2ZkOwotCWZpbGUtPnZm
c2NvcmVfZmlsZS5mX2ZsYWdzID0gVUtfRldSSVRFIHwgVUtfRlJFQUQ7Ci0JZmlsZS0+dmZzY29y
ZV9maWxlLmZfY291bnQgPSAxOwotCWZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSA9IHNfZGVu
dHJ5OworCXZmc19maWxlLT5mZCA9IHZmc19mZDsKKwl2ZnNfZmlsZS0+Zl9mbGFncyA9IFVLX0ZX
UklURSB8IFVLX0ZSRUFEOworCXZmc19maWxlLT5mX2NvdW50ID0gMTsKKwl2ZnNfZmlsZS0+Zl9k
YXRhID0gZmlsZTsKKwl2ZnNfZmlsZS0+Zl9kZW50cnkgPSBzX2RlbnRyeTsKIAorCXNfZGVudHJ5
LT5kX3JlZmNudCA9IDE7CiAJc19kZW50cnktPmRfdm5vZGUgPSBzX3Zub2RlOwogCisJLyoKKwkg
KiBQcm92aWRlIGJvZ3VzIGJ1dCB2YWxpZCBhZGRyZXNzZXMgdG8gYWxsb3cKKwkgKiB2ZnMgdG8g
cmVtb3ZlIG5vZGVzIGZyb20gbGlzdHMKKwkgKi8KKwlzX2RlbnRyeS0+ZF9saW5rLnBwcmV2ID0g
JnNfZGVudHJ5LT5kX2xpbmsubmV4dDsKKwlzX2RlbnRyeS0+ZF9uYW1lc19saW5rLm5leHQgPSAm
c19kZW50cnktPmRfbmFtZXNfbGluazsKKwlzX2RlbnRyeS0+ZF9uYW1lc19saW5rLnByZXYgPSAm
c19kZW50cnktPmRfbmFtZXNfbGluazsKKwogCXNfdm5vZGUtPnZfb3AgPSB2X29wOwogCXVrX211
dGV4X2luaXQoJnNfdm5vZGUtPnZfbG9jayk7CiAJc192bm9kZS0+dl9yZWZjbnQgPSAxOwogCXNf
dm5vZGUtPnZfZGF0YSA9IGZpbGU7CiAJc192bm9kZS0+dl90eXBlID0gVlNPQ0s7CisJc192bm9k
ZS0+dl9tb3VudCA9ICZzX21vdW50OworCXNfbW91bnQubV9jb3VudCsrOwogCisJLyoKKwkgKiBQ
cm92aWRlIGJvZ3VzIGJ1dCB2YWxpZCBhZGRyZXNzZXMgdG8gYWxsb3cKKwkgKiB2ZnMgdG8gcmVt
b3ZlIG5vZGVzIGZyb20gbGlzdHMKKwkgKi8KKwlzX3Zub2RlLT52X2xpbmsubmV4dCA9ICZzX3Zu
b2RlLT52X2xpbms7CisJc192bm9kZS0+dl9saW5rLnByZXYgPSAmc192bm9kZS0+dl9saW5rOwor
CisJZmlsZS0+dmZzY29yZV9maWxlID0gdmZzX2ZpbGU7CiAJZmlsZS0+c29ja19mZCA9IHNvY2tf
ZmQ7CiAJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0ZWQgc29ja2V0ICVkICgl
eClcbiIsCi0JCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKKwkJCQkgICAgZmlsZS0+dmZz
Y29yZV9maWxlLT5mZCwKIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwogCiAJLyogU3RvcmluZyB0
aGUgaW5mb3JtYXRpb24gd2l0aGluIHRoZSB2ZnMgc3RydWN0dXJlICovCi0JcmV0ID0gdmZzY29y
ZV9pbnN0YWxsX2ZkKHZmc19mZCwgJmZpbGUtPnZmc2NvcmVfZmlsZSk7CisJcmV0ID0gdmZzY29y
ZV9pbnN0YWxsX2ZkKHZmc19mZCwgZmlsZS0+dmZzY29yZV9maWxlKTsKIAlpZiAocmV0KSB7CiAJ
CUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCiAJCQkgICAgKCJGYWlsZWQgdG8gaW5zdGFsbCBz
b2NrZXQgZmRcbiIpKTsKQEAgLTE1MSw2ICsxODgsOCBAQCBFUlJfVkZTX0lOU1RBTEw6CiBFUlJf
TUFMTE9DX1ZOT0RFOgogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc19kZW50cnkp
OwogRVJSX01BTExPQ19ERU5UUlk6CisJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCB2
ZnNfZmlsZSk7CitFUlJfTUFMTE9DX1ZGU19GSUxFOgogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2Rl
ZmF1bHQoKSwgZmlsZSk7CiBFUlJfTUFMTE9DX0ZJTEU6CiAJdmZzY29yZV9wdXRfZmQodmZzX2Zk
KTsKQEAgLTE2MCwxNSArMTk5LDE1IEBAIEVSUl9FWElUOgogfQogCiBzdGF0aWMgaW50IHNvY2tf
bmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKLQkJCSAgc3RydWN0IHZmc2NvcmVfZmls
ZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQorCQkJICBzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGUpCiB7Ci0JaW50IHJldCA9IDA7CisJaW50IHJldDsKIAlzdHJ1Y3Qgc29j
a19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CiAKIAlmaWxlID0gc192bm9kZS0+dl9kYXRhOwogCUxX
SVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9mZDolZFxuIiwKIAkJCQkg
ICAgX19mdW5jX18sCi0JCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKKwkJCQkgICAgZmls
ZS0+dmZzY29yZV9maWxlLT5mZCwKIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwogCiAJVUtfQVNT
RVJUKHZmc2NvcmVfZmlsZS0+Zl9kZW50cnktPmRfdm5vZGUgPT0gc192bm9kZSk7CkBAIC0xNzYs
MTIgKzIxNSwxMyBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192
bm9kZSwKIAogCS8qIENsb3NlIGFuZCByZWxlYXNlIHRoZSBsd2lwIHNvY2tldCAqLwogCXJldCA9
IGx3aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7Ci0JLyogRnJlZSBzb2NrZXQgdm5vZGUgKi8KLQl1
a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRy
eS0+ZF92bm9kZSk7Ci0JLyogRnJlZSBzb2NrZXQgZGVudHJ5ICovCi0JdWtfZnJlZSh1a19hbGxv
Y19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2ZpbGUuZl9kZW50cnkpOwotCS8qIEZyZWUg
c29ja2V0IGZpbGUgKi8KKworCS8qCisJICogRnJlZSBzb2NrZXQgZmlsZQorCSAqIFRoZSByZXN0
IG9mIHRoZSByZXNvdXJjZXMgd2lsbCBiZSBmcmVlZCBieSB2ZnMKKwkgKi8KIAl1a19mcmVlKHVr
X2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUpOworCiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTk0
LDcgKzIzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2bm9kZSAq
c192bm9kZSwKIAlmaWxlID0gc192bm9kZS0+dl9kYXRhOwogCUxXSVBfREVCVUdGKFNPQ0tFVFNf
REVCVUcsICgiJXMgZmQ6JWQgbHdpcF9mZDolZFxuIiwKIAkJCQkgICAgX19mdW5jX18sCi0JCQkJ
ICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKKwkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5m
ZCwKIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwogCXJldCA9IGx3aXBfd3JpdGV2KGZpbGUtPnNv
Y2tfZmQsIGJ1Zi0+dWlvX2lvdiwgYnVmLT51aW9faW92Y250KTsKIAlyZXR1cm4gcmV0OwpAQCAt
MjEwLDE2ICsyNTAsMTkgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5v
ZGUgKnNfdm5vZGUsCiAJZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKIAlMV0lQX0RFQlVHRihTT0NL
RVRTX0RFQlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCiAJCQkJICAgIF9fZnVuY19fLAot
CQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCisJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmls
ZS0+ZmQsCiAJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKIAlyZXQgPSBsd2lwX3JlYWR2KGZpbGUt
PnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwgYnVmLT51aW9faW92Y250KTsKIAlyZXR1cm4gcmV0Owog
fQogCisjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCkgdmZzY29y
ZV92b3BfbnVsbG9wKQorCiBzdGF0aWMgc3RydWN0IHZub3BzIHNvY2tfbmV0X2ZvcHMgPSB7CiAJ
LnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAogCS52b3Bfd3JpdGUgPSBzb2NrX25ldF93cml0
ZSwKIAkudm9wX3JlYWQgID0gc29ja19uZXRfcmVhZCwKKwkudm9wX2luYWN0aXZlID0gc29ja19u
ZXRfaW5hY3RpdmUKIH07CiAKIGludCBzb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBw
cm90b2NvbCkKQEAgLTI5Niw3ICszMzksNyBAQCBpbnQgYWNjZXB0KGludCBzLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbikKIAl9CiAJcmV0ID0gdmZzX2ZkOwogRVhJ
VF9GRFJPUDoKLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElUOgogCXJldHVybiByZXQ7CiAKQEAgLTMyOCw3ICsz
NzEsNyBAQCBpbnQgYmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2Nr
bGVuX3QgbmFtZWxlbikKIAkJZ290byBFWElUX0ZEUk9QOwogCX0KIEVYSVRfRkRST1A6Ci0JdmZz
Y29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAq
LworCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzU1LDcgKzM5OCw3IEBAIGludCBw
b2xsKHN0cnVjdCBwb2xsZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBpbnQgdGltZW91dCkKIAkJCX0K
IAkJCWx3aXBfZmRzW2ldLmZkID0gZmlsZS0+c29ja19mZDsKIAkJCWx3aXBfZmRzW2ldLmV2ZW50
cyA9IGZkc1tpXS5ldmVudHM7Ci0JCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2Zp
bGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJCQl2ZnNjb3JlX3B1dF9maWxlKGZpbGUtPnZm
c2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIAkJfQogCX0KIApAQCAtNDA4LDcg
KzQ1MSw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3
cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQlpZiAobWF4ZmQgPCBmaWxlLT5zb2NrX2Zk
KQogCQkJCW1heGZkID0gZmlsZS0+c29ja19mZDsKIAkJCUZEX1NFVChmaWxlLT5zb2NrX2ZkLCAm
cmQpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRlZmRzICYmIEZEX0lTU0VUKGks
IHdyaXRlZmRzKSkgewogCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwpAQCAtNDIzLDcg
KzQ2Niw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3
cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQlpZiAobWF4ZmQgPCBmaWxlLT5zb2NrX2Zk
KQogCQkJCW1heGZkID0gZmlsZS0+c29ja19mZDsKIAkJCUZEX1NFVChmaWxlLT5zb2NrX2ZkLCAm
d3IpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKGV4Y2VwdGZkcyAmJiBGRF9JU1NFVChp
LCBleGNlcHRmZHMpKSB7CiAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7CkBAIC00Mzgs
NyArNDgxLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQg
KndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKIAkJCWlmIChtYXhmZCA8IGZpbGUtPnNvY2tf
ZmQpCiAJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwogCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQs
ICZ4Yyk7Ci0JCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCisJCQl2ZnNjb3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7
IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIAkJfQogCX0KIApAQCAtNDU5LDcgKzUwMiw3IEBAIGlu
dCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRf
c2V0ICpleGNlcHRmZHMsCiAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7CiAJCQlpZiAo
IUZEX0lTU0VUKGZpbGUtPnNvY2tfZmQsICZyZCkpCiAJCQkJRkRfQ0xSKGksIHJlYWRmZHMpOwot
CQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRlZmRzICYmIEZEX0lTU0VUKGksIHdyaXRl
ZmRzKSkgewogCQkJLyogVGhpcyBsb29rdXAgY2FuJ3QgZmFpbCwgb3IgaXQgd291bGQgYWxyZWFk
eSBoYXZlCkBAIC00NjgsNyArNTExLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpy
ZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKIAkJCWZpbGUgPSBz
b2NrX25ldF9maWxlX2dldChpKTsKIAkJCWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJndy
KSkKIAkJCQlGRF9DTFIoaSwgd3JpdGVmZHMpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+
dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmls
ZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYg
KGV4Y2VwdGZkcyAmJiBGRF9JU1NFVChpLCBleGNlcHRmZHMpKSB7CiAJCQkvKiBUaGlzIGxvb2t1
cCBjYW4ndCBmYWlsLCBvciBpdCB3b3VsZCBhbHJlYWR5IGhhdmUKQEAgLTQ3Nyw3ICs1MjAsNyBA
QCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMs
IGZkX3NldCAqZXhjZXB0ZmRzLAogCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwogCQkJ
aWYgKCFGRF9JU1NFVChmaWxlLT5zb2NrX2ZkLCAmeGMpKQogCQkJCUZEX0NMUihpLCBleGNlcHRm
ZHMpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAl9CiAKQEAgLTUwMSw3ICs1NDQsNyBAQCBpbnQg
c2h1dGRvd24oaW50IHMsIGludCBob3cpCiAJfQogCS8qIFNodXRkb3duIG9mIHRoZSBkZXNjcmlw
dG9yICovCiAJcmV0ID0gbHdpcF9zaHV0ZG93bihmaWxlLT5zb2NrX2ZkLCBob3cpOwotCXZmc2Nv
cmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8K
Kwl2ZnNjb3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291
bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTUxOSw3ICs1NjIsNyBAQCBpbnQgZ2V0
cGVlcm5hbWUoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90ICpuYW1lbGVu
KQogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfZ2V0cGVlcm5hbWUoZmlsZS0+c29ja19m
ZCwgbmFtZSwgbmFtZWxlbik7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxl
KTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpA
QCAtNTM3LDcgKzU4MCw3IEBAIGludCBnZXRzb2NrbmFtZShpbnQgcywgc3RydWN0IHNvY2thZGRy
ICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0ID0gbHdp
cF9nZXRzb2NrbmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKLQl2ZnNjb3JlX3B1
dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJdmZz
Y29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICov
CiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC01NTYsNyArNTk5LDcgQEAgaW50IGdldHNvY2tv
cHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHZvaWQgKm9wdHZhbCwgc29ja2xlbl90
ICpvcHRsZW4pCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0ID0gbHdpcF9nZXRzb2Nrb3B0KGZpbGUt
PnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7Ci0JdmZzY29yZV9wdXRf
ZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2Nv
cmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwog
RVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNTc2LDcgKzYxOSw3IEBAIGludCBzZXRzb2Nrb3B0
KGludCBzLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjb25zdCB2b2lkICpvcHR2YWwsCiAJCWdv
dG8gRVhJVDsKIAl9CiAJcmV0ID0gbHdpcF9zZXRzb2Nrb3B0KGZpbGUtPnNvY2tfZmQsIGxldmVs
LCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZz
Y29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmls
ZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4g
cmV0OwogfQpAQCAtNTk1LDcgKzYzOCw3IEBAIGludCBjb25uZWN0KGludCBzLCBjb25zdCBzdHJ1
Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQogCQlnb3RvIEVYSVQ7CiAJfQog
CXJldCA9IGx3aXBfY29ubmVjdChmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKLQl2ZnNj
b3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICov
CisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNv
dW50ICovCiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC02MTQsNyArNjU3LDcgQEAgaW50IGxp
c3RlbihpbnQgcywgaW50IGJhY2tsb2cpCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0ID0gbHdpcF9s
aXN0ZW4oZmlsZS0+c29ja19mZCwgYmFja2xvZyk7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+
dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUo
ZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1
cm4gcmV0OwogfQpAQCAtNjMzLDcgKzY3Niw3IEBAIGludCByZWN2KGludCBzLCB2b2lkICptZW0s
IHNpemVfdCBsZW4sIGludCBmbGFncykKIAkJZ290byBFWElUOwogCX0KIAlyZXQgPSBsd2lwX3Jl
Y3YoZmlsZS0+c29ja19mZCwgbWVtLCBsZW4sIGZsYWdzKTsKLQl2ZnNjb3JlX3B1dF9maWxlKCZm
aWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJdmZzY29yZV9wdXRf
ZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElUOgog
CXJldHVybiByZXQ7CiB9CkBAIC02NTMsNyArNjk2LDcgQEAgaW50IHJlY3Zmcm9tKGludCBzLCB2
b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncywKIAkJZ290byBFWElUOwogCX0KIAlyZXQg
PSBsd2lwX3JlY3Zmcm9tKGZpbGUtPnNvY2tfZmQsIG1lbSwgbGVuLCBmbGFncywgZnJvbSwgZnJv
bWxlbik7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyog
cmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjcyLDcgKzcx
NSw3IEBAIGludCBzZW5kKGludCBzLCBjb25zdCB2b2lkICpkYXRhcHRyLCBzaXplX3Qgc2l6ZSwg
aW50IGZsYWdzKQogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfc2VuZChmaWxlLT5zb2Nr
X2ZkLCBkYXRhcHRyLCBzaXplLCBmbGFncyk7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZz
Y29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmls
ZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4g
cmV0OwogfQpAQCAtNjkxLDcgKzczNCw3IEBAIGludCBzZW5kbXNnKGludCBzLCBjb25zdCBzdHJ1
Y3QgbXNnaGRyICptZXNzYWdlLCBpbnQgZmxhZ3MpCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0ID0g
bHdpcF9zZW5kbXNnKGZpbGUtPnNvY2tfZmQsIG1lc3NhZ2UsIGZsYWdzKTsKLQl2ZnNjb3JlX3B1
dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJdmZz
Y29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICov
CiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC03MTEsNyArNzU0LDcgQEAgaW50IHNlbmR0byhp
bnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGludCBmbGFncywKIAkJZ290
byBFWElUOwogCX0KIAlyZXQgPSBsd2lwX3NlbmR0byhmaWxlLT5zb2NrX2ZkLCBkYXRhcHRyLCBz
aXplLCBmbGFncywgdG8sIHRvbGVuKTsKLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3Jl
X2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElUOgogCXJldHVybiByZXQ7
CiB9Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:49 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx97-00074q-AY; Wed, 26 Jun 2019 01:54:49 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx96-00074G-47
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:48 +0000
X-Inumbo-ID: 5f7d15d7-97b5-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5f7d15d7-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:46 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id f17so376983wme.2
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:46 -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=J09mEfH3HyBGpndlTAiNhyd8WrP5tpWhlr1DTP/oLPs=;
 b=pf6RUrvb/dANrujs79oQ1gi7QcbA64QlZEZ/xkimpRQdQbj0Mt+M8u+JxEQ6iCHT5a
 CnTvdhPurIQUHwerVMZ1jO/D9oPmoSPfu4dXcQBOlatyeHamczqjADjK3JwBKYBV2S2w
 aeviWYbyx3CrYIS8d+rGw4VzKA0F8JU2w0K3B7Z/gMM9x0TYRRY9AWofxH8D1dQzFs50
 r5a4PH4siqLHvBl7zXf2wJDB8F5zKo08Zke3P/R1Zl9DiONRKbWm1qZUlVYlBjcRZ06M
 gXfEAKwB3BJ6VEY5QuR7/Hze6ORcGBLvG4KF6ZkKK2YfiGb/TD8lvAozJFQSYu6fMRAq
 oY/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=J09mEfH3HyBGpndlTAiNhyd8WrP5tpWhlr1DTP/oLPs=;
 b=lEcxymfcp7dCLjtfTCoSKscBcJt7HNCSByEKLXqJd4DgWvdLDx6t0+BMUWp3bj762g
 WKvEkyJ5CCdaQjojkswD2gXlki4Ip1ZPKKouZtRISfuwLaRAki8lDBg7jyZSHBcwA9g9
 vqTnTux2bWg6U5j0c4sYgXxF0MUkqPTbCIiZ/H4w2CEHrj+kJrMTX9f+OOzLrVBAzTR/
 dVU8PxFr9JHow2XGGinmaSUuHD2wg81ITpOhG6wM4YMLfjCVi1o3Q1lNo8hAOzjZXHqq
 Z70c3c0HH9xSdlkYBS9vx5WtgdXQeWMiiUNRMG76p400If+ejcUUd2ELAvQk04P5JYl7
 pF8Q==
X-Gm-Message-State: APjAAAXFqDB/Qc97Mmmeox9K6ilOiSAvDXn46e0CmHFOoncpbJVtrZ/k
 NTjVjlss28noE0ad0SWQ/nMYERoSnpI=
X-Google-Smtp-Source: APXvYqxJYtDVqbvtxQFOvQB1v8Wnnvm4Epl9cEzUSUOyUPwc6mYhEFamd3h30llSj/8/0hkQjCsqlw==
X-Received: by 2002:a05:600c:1008:: with SMTP id
 c8mr492281wmc.133.1561514085254; 
 Tue, 25 Jun 2019 18:54:45 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.44
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:44 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:34 +0300
Message-Id: <20190626015438.11046-4-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 3/7] Adapt lwip to new vfs
 changes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

VXBkYXRlIHVpbyBzdHJ1Y3R1cmUgaW4gc29ja19uZXRfd3JpdGUvcmVhZC4gVkZTQ09SRSBleHBl
Y3RzIHRoZQp1cGRhdGUgb2YgdGhlIHJlc2lkIG1lbWJlciBvZiB1aW8gdG8gcmVmbGVjdCB0aGUg
bnVtYmVyIG9mIGJ5dGVzCnRoYXQgcmVtYWluIHVucHJvY2Vzc2VkLgoKU2V0IHRoZSBVS19WRlND
T1JFX05PUE9TIGZsYWcgb24gdGhlIHNvY2tldCB2ZnNjb3JlX2ZpbGUuIFRoaXMKZmxhZyBpbmZv
cm1zIFZGU0NPUkUgdG8gbm90IHVwZGF0ZSB0aGUgb2Zmc2V0IG9mIG91ciBzb2NrZXQgZmlsZQpz
aW5jZSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHNvY2tldHMuCgpTaWduZWQtb2ZmLWJ5OiBN
aWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBnbWFpbC5jb20+Ci0tLQogc29ja2V0cy5jIHwg
MTkgKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyks
IDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCmluZGV4
IGNiZTMwMzAuLjMwNDAwOTkgMTAwNjQ0Ci0tLSBhL3NvY2tldHMuYworKysgYi9zb2NrZXRzLmMK
QEAgLTEzOSw2ICsxMzksNyBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3Bz
ICp2X29wLCBpbnQgc29ja19mZCkKIAl2ZnNfZmlsZS0+Zl9jb3VudCA9IDE7CiAJdmZzX2ZpbGUt
PmZfZGF0YSA9IGZpbGU7CiAJdmZzX2ZpbGUtPmZfZGVudHJ5ID0gc19kZW50cnk7CisJdmZzX2Zp
bGUtPmZfdmZzX2ZsYWdzID0gVUtfVkZTQ09SRV9OT1BPUzsKIAogCXNfZGVudHJ5LT5kX3JlZmNu
dCA9IDE7CiAJc19kZW50cnktPmRfdm5vZGUgPSBzX3Zub2RlOwpAQCAtMjI1LDcgKzIyNiw3IEBA
IHN0YXRpYyBpbnQgc29ja19uZXRfY2xvc2Uoc3RydWN0IHZub2RlICpzX3Zub2RlLAogCXJldHVy
biByZXQ7CiB9CiAKLXN0YXRpYyBzc2l6ZV90IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2bm9kZSAq
c192bm9kZSwKK3N0YXRpYyBpbnQgc29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2Rl
LAogCQkJICAgICAgc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQogewogCWlu
dCByZXQgPSAwOwpAQCAtMjM3LDEwICsyMzgsMTUgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRf
d3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2RlLAogCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUt
PmZkLAogCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7CiAJcmV0ID0gbHdpcF93cml0ZXYoZmlsZS0+
c29ja19mZCwgYnVmLT51aW9faW92LCBidWYtPnVpb19pb3ZjbnQpOwotCXJldHVybiByZXQ7CisJ
LyogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ugb2YgZXJyb3IgKi8KKwlp
ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKKwly
ZXR1cm4gMDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUg
KnNfdm5vZGUsCitzdGF0aWMgaW50IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2Rl
LAogCQkJICAgICBzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCiAJ
CQkgICAgIHN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxhZyBfX3VudXNlZCkKIHsKQEAgLTI1Myw3
ICsyNTksMTIgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCiAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCiAJCQkJICAgIGZpbGUtPnNv
Y2tfZmQpKTsKIAlyZXQgPSBsd2lwX3JlYWR2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwg
YnVmLT51aW9faW92Y250KTsKLQlyZXR1cm4gcmV0OworCS8qIGx3aXAgc2V0cyBlcnJubyBhbmQg
cmV0dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yICovCisJaWYgKHJldCA8IDApCisJCXJldHVybiBy
ZXQ7CisKKwlidWYtPnVpb19yZXNpZCAtPSByZXQ7CisJcmV0dXJuIDA7CiB9CiAKICNkZWZpbmUg
c29ja19uZXRfaW5hY3RpdmUgICgodm5vcF9pbmFjdGl2ZV90KSB2ZnNjb3JlX3ZvcF9udWxsb3Ap
Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx98-00075T-Cr; Wed, 26 Jun 2019 01:54:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx97-00074o-Bv
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:49 +0000
X-Inumbo-ID: 6018f6e4-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6018f6e4-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:47 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id p13so698250wru.10
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:47 -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=ciBY9oqdeXFdVQJSXBVld97ssg0HiwYnZP8kLTw1lns=;
 b=rNLtJFyLQo+DV7lJzp5qnP3tozXREA1UdQCZvxxXhc2wwtKzS5tEn/TOSpvBY0Xcic
 DTuhVaj/a7mnJV/ST2ZB+rncPlPaoz50QF6V0/5tPAYy1jNZBX5hfa7m723AEfZvr+XJ
 tgQPe8d+kc7bdq9xU2EHF4gIxCROFQWze14v3ScpOr8xoFkyjTGX1qpbw9+l4DRGQQCV
 h5/pC9yTtvOALSXmVeIl/9oaEprfd1ezSdcasZIBiNHsgekIyo0tnOL8F1CB8OV0IX8S
 49sOpPJqG7+14jXL4xun+VSC4RdeALp6W/U1xGqxmkinC6CeIE8E+8xhWZ1GqWI8LOAN
 gRig==
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=ciBY9oqdeXFdVQJSXBVld97ssg0HiwYnZP8kLTw1lns=;
 b=Id6KPVKeYcFW01y8nuGS5OwrKbDpKvxfDOQtVabDIpuuKs7Wl7BbOqh5Cv5Gm4PgTy
 81yR6lGch4onclkybv+YH86QxSEN7UtAS7DTq4h9FS3qZ6AWbQK/v2EB+QavgwWB1ONm
 LhXqLzbMOu4gfLLmdqiEg3+uiYRkl78qlTReyYv0JqCftE7x05no36ChY0Pt6W8DEC7e
 4/W6cdkzDKigpLWh1ABAcW+1Ttvz5pzSbTWw6fAE+qqstn9R1oZGdvhqtTmZmclMjJDd
 ubggO8ytzPNTuQb9chxQEZCLVHIcFBV/nmdB4gVSJ/bscXlZnS8kXRh58C1pA/OBQh7v
 cr4w==
X-Gm-Message-State: APjAAAUcKAFT+8ZYbw8h1F5mrbTGVBcdINAGd/sdPxnWwjxEJyHFcFlr
 ArVDvcg2zctIugBFy1hfNW1t09ZOLCY=
X-Google-Smtp-Source: APXvYqwcMQaEBdejOd/v8WjaXFj0yHQdloEkn7JHU0CSlKaoINwYdT5KwFw98SHISvk8AukAq9jO6Q==
X-Received: by 2002:adf:f84f:: with SMTP id d15mr836992wrq.53.1561514086266;
 Tue, 25 Jun 2019 18:54:46 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.45
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:45 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:35 +0300
Message-Id: <20190626015438.11046-5-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 4/7] Use vfs functions to
 allocate socket vnode and dentry
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

U2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgot
LS0KIHNvY2tldHMuYyB8IDExOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYzIGluc2VydGlvbnMo
KyksIDU1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NvY2tldHMuYyBiL3NvY2tldHMuYwpp
bmRleCAzMDQwMDk5Li4xYTNkZGZkIDEwMDY0NAotLS0gYS9zb2NrZXRzLmMKKysrIGIvc29ja2V0
cy5jCkBAIC0zNSw2ICszNSw3IEBACiAKIC8qIG5ldHdvcmsgc3R1YiBjYWxscyAqLwogI2luY2x1
ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KICNpbmNsdWRlIDx2
ZnNjb3JlL2ZpbGUuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+CiAjaW5jbHVkZSA8dmZzY29y
ZS9tb3VudC5oPgpAQCAtNDksMTMgKzUwLDM4IEBACiAjZGVmaW5lIFNPQ0tfTkVUX1NFVF9FUlJO
TyhlcnJjb2RlKSBcCiAJKGVycm5vID0gLShlcnJjb2RlKSkKIAorc3RhdGljIGludCBzb2NrX25l
dF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCisJCQlzdHJ1Y3QgdmZzY29yZV9maWxlICp2
ZnNjb3JlX2ZpbGUpOworc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCisJCQlzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpOworc3RhdGlj
IGludCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKKwkJCXN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKKwkJCXN0cnVjdCB1aW8gKmJ1ZiwgaW50
IGlvZmxhZyBfX3VudXNlZCk7CisKKyNkZWZpbmUgc29ja19uZXRfaW5hY3RpdmUgICgodm5vcF9p
bmFjdGl2ZV90KSB2ZnNjb3JlX3ZvcF9udWxsb3ApCisKK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMgc29j
a19uZXRfdm5vcHMgPSB7CisJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAorCS52b3Bfd3Jp
dGUgPSBzb2NrX25ldF93cml0ZSwKKwkudm9wX3JlYWQgID0gc29ja19uZXRfcmVhZCwKKwkudm9w
X2luYWN0aXZlID0gc29ja19uZXRfaW5hY3RpdmUKK307CisKKyNkZWZpbmUgc29ja19uZXRfdmdl
dCAgKCh2ZnNvcF92Z2V0X3QpIHZmc2NvcmVfdm9wX251bGxvcCkKKworc3RhdGljIHN0cnVjdCB2
ZnNvcHMgc29ja19uZXRfdmZzb3BzID0geworCS52ZnNfdmdldCA9IHNvY2tfbmV0X3ZnZXQsCisJ
LnZmc192bm9wcyA9ICZzb2NrX25ldF92bm9wcworfTsKKworCitzdGF0aWMgdWludDY0X3Qgc19p
bm9kZSA9IDA7CiAvKgogICogQm9ndXMgbW91bnQgcG9pbnQgdXNlZCBieSBhbGwgc29ja2V0cwot
ICoKLSAqIFdlIG5lZWQgdGhpcyBiZWNhdXNlIHdoZW4gZGVsZXRpbmcgYSB2bm9kZQotICogdmZz
IGNhbGxzIHZmc191bmJ1c3kgb24gaXRzIG1vdW50IHBvaW50CiAgKi8KLXN0YXRpYyBzdHJ1Y3Qg
bW91bnQgc19tb3VudDsKK3N0YXRpYyBzdHJ1Y3QgbW91bnQgc19tb3VudCA9IHsKKwkubV9vcCA9
ICZzb2NrX25ldF92ZnNvcHMKK307CiAKIHN0cnVjdCBzb2NrX25ldF9maWxlIHsKIAlzdHJ1Y3Qg
dmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGU7CkBAIC04NSw3ICsxMTEsNyBAQCBFWElUOgogCXJl
dHVybiBmaWxlOwogfQogCi1zdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2
X29wLCBpbnQgc29ja19mZCkKK3N0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhpbnQgc29ja19mZCkK
IHsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgdmZzX2ZkOwpAQCAtMTE4LDE5ICsxNDQsMzAgQEAgc3Rh
dGljIGludCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNvY2tfZmQpCiAJ
CQkJKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2YgbWVtb3J5XG4i
KSk7CiAJCWdvdG8gRVJSX01BTExPQ19WRlNfRklMRTsKIAl9Ci0Jc19kZW50cnkgPSB1a19jYWxs
b2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkpOwotCWlmICgh
c19kZW50cnkpIHsKKworCXJldCA9IHZmc2NvcmVfdmdldCgmc19tb3VudCwgc19pbm9kZSsrLCAm
c192bm9kZSk7CisJVUtfQVNTRVJUKHJldCA9PSAwKTsgLyogd2Ugc2hvdWxkIG5vdCBmaW5kIGl0
IGluIGNhY2hlICovCisKKwlpZiAoIXNfdm5vZGUpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJTFdJ
UF9ERUJVR0YoU09DS0VUU19ERUJVRywKLQkJCSAgICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBzb2Nr
ZXQgZGVudHJ5OiBPdXQgb2YgbWVtb3J5XG4iKSk7Ci0JCWdvdG8gRVJSX01BTExPQ19ERU5UUlk7
CisJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZub2RlOiBPdXQgb2YgbWVtb3J5
XG4iKSk7CisJCWdvdG8gRVJSX0FMTE9DX1ZOT0RFOwogCX0KLQlzX3Zub2RlID0gdWtfY2FsbG9j
KHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIDEsIHNpemVvZigqc192bm9kZSkpOwotCWlmICghc192
bm9kZSkgeworCisJdWtfbXV0ZXhfdW5sb2NrKCZzX3Zub2RlLT52X2xvY2spOworCisJLyoKKwkg
KiBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IGFsbCB0aGUgZGVudHJpZXMgaGF2ZSB0aGUKKwkgKiBz
YW1lIHBhdGggc2luY2Ugd2UgbmV2ZXIgbG9va3VwIGZvciB0aGVtCisJICovCisJc19kZW50cnkg
PSBkZW50cnlfYWxsb2MoTlVMTCwgc192bm9kZSwgIi8iKTsKKworCWlmICghc19kZW50cnkpIHsK
IAkJcmV0ID0gLUVOT01FTTsKIAkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKLQkJCSAgICAo
IkZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgdm5vZGU6IE91dCBvZiBtZW1vcnlcbiIpKTsKLQkJ
Z290byBFUlJfTUFMTE9DX1ZOT0RFOworCQkJICAgICgiRmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tl
dCBkZW50cnk6IE91dCBvZiBtZW1vcnlcbiIpKTsKKwkJZ290byBFUlJfQUxMT0NfREVOVFJZOwog
CX0KIAogCS8qIFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBmaWxsIG91dCBuZWNlc3NhcnkgZmll
bGRzICovCkBAIC0xNDEsMzEgKzE3OCw4IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1
Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2NrX2ZkKQogCXZmc19maWxlLT5mX2RlbnRyeSA9IHNfZGVu
dHJ5OwogCXZmc19maWxlLT5mX3Zmc19mbGFncyA9IFVLX1ZGU0NPUkVfTk9QT1M7CiAKLQlzX2Rl
bnRyeS0+ZF9yZWZjbnQgPSAxOwotCXNfZGVudHJ5LT5kX3Zub2RlID0gc192bm9kZTsKLQotCS8q
Ci0JICogUHJvdmlkZSBib2d1cyBidXQgdmFsaWQgYWRkcmVzc2VzIHRvIGFsbG93Ci0JICogdmZz
IHRvIHJlbW92ZSBub2RlcyBmcm9tIGxpc3RzCi0JICovCi0Jc19kZW50cnktPmRfbGluay5wcHJl
diA9ICZzX2RlbnRyeS0+ZF9saW5rLm5leHQ7Ci0Jc19kZW50cnktPmRfbmFtZXNfbGluay5uZXh0
ID0gJnNfZGVudHJ5LT5kX25hbWVzX2xpbms7Ci0Jc19kZW50cnktPmRfbmFtZXNfbGluay5wcmV2
ID0gJnNfZGVudHJ5LT5kX25hbWVzX2xpbms7Ci0KLQlzX3Zub2RlLT52X29wID0gdl9vcDsKLQl1
a19tdXRleF9pbml0KCZzX3Zub2RlLT52X2xvY2spOwotCXNfdm5vZGUtPnZfcmVmY250ID0gMTsK
IAlzX3Zub2RlLT52X2RhdGEgPSBmaWxlOwogCXNfdm5vZGUtPnZfdHlwZSA9IFZTT0NLOwotCXNf
dm5vZGUtPnZfbW91bnQgPSAmc19tb3VudDsKLQlzX21vdW50Lm1fY291bnQrKzsKLQotCS8qCi0J
ICogUHJvdmlkZSBib2d1cyBidXQgdmFsaWQgYWRkcmVzc2VzIHRvIGFsbG93Ci0JICogdmZzIHRv
IHJlbW92ZSBub2RlcyBmcm9tIGxpc3RzCi0JICovCi0Jc192bm9kZS0+dl9saW5rLm5leHQgPSAm
c192bm9kZS0+dl9saW5rOwotCXNfdm5vZGUtPnZfbGluay5wcmV2ID0gJnNfdm5vZGUtPnZfbGlu
azsKIAogCWZpbGUtPnZmc2NvcmVfZmlsZSA9IHZmc19maWxlOwogCWZpbGUtPnNvY2tfZmQgPSBz
b2NrX2ZkOwpAQCAtMTgxLDE0ICsxOTUsMTcgQEAgc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0
cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNvY2tfZmQpCiAJCWdvdG8gRVJSX1ZGU19JTlNUQUxMOwog
CX0KIAorCS8qIE9ubHkgdGhlIGRlbnRyeSBzaG91bGQgaG9sZCBhIHJlZmVyZW5jZTsgcmVsZWFz
ZSBvdXJzICovCisJdnJlbGUoc192bm9kZSk7CisKIAkvKiBSZXR1cm4gZmlsZSBkZXNjcmlwdG9y
IG9mIG91ciBzb2NrZXQgKi8KIAlyZXR1cm4gdmZzX2ZkOwogCiBFUlJfVkZTX0lOU1RBTEw6Ci0J
dWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX3Zub2RlKTsKLUVSUl9NQUxMT0NfVk5P
REU6Ci0JdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX2RlbnRyeSk7Ci1FUlJfTUFM
TE9DX0RFTlRSWToKKwlkcmVsZShzX2RlbnRyeSk7CitFUlJfQUxMT0NfREVOVFJZOgorCXZyZWxl
KHNfdm5vZGUpOworRVJSX0FMTE9DX1ZOT0RFOgogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1
bHQoKSwgdmZzX2ZpbGUpOwogRVJSX01BTExPQ19WRlNfRklMRToKIAl1a19mcmVlKHVrX2FsbG9j
X2dldF9kZWZhdWx0KCksIGZpbGUpOwpAQCAtMjAwLDcgKzIxNyw3IEBAIEVSUl9FWElUOgogfQog
CiBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKLQkJCSAg
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlKQorCQkJc3RydWN0IHZmc2NvcmVfZmls
ZSAqdmZzY29yZV9maWxlKQogewogCWludCByZXQ7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZp
bGUgPSBOVUxMOwpAQCAtMjI3LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgc29ja19uZXRfY2xvc2Uo
c3RydWN0IHZub2RlICpzX3Zub2RlLAogfQogCiBzdGF0aWMgaW50IHNvY2tfbmV0X3dyaXRlKHN0
cnVjdCB2bm9kZSAqc192bm9kZSwKLQkJCSAgICAgIHN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxh
ZyBfX3VudXNlZCkKKwkJCXN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxhZyBfX3VudXNlZCkKIHsK
IAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CkBAIC0y
NDcsOCArMjY0LDggQEAgc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCiB9CiAKIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5v
ZGUsCi0JCQkgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwK
LQkJCSAgICAgc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQorCQkJc3RydWN0
IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAorCQkJc3RydWN0IHVpbyAqYnVm
LCBpbnQgaW9mbGFnIF9fdW51c2VkKQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCBzb2NrX25l
dF9maWxlICpmaWxlID0gTlVMTDsKQEAgLTI2NywxNSArMjg0LDYgQEAgc3RhdGljIGludCBzb2Nr
X25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKIAlyZXR1cm4gMDsKIH0KIAotI2RlZmlu
ZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpIHZmc2NvcmVfdm9wX251bGxv
cCkKLQotc3RhdGljIHN0cnVjdCB2bm9wcyBzb2NrX25ldF9mb3BzID0gewotCS52b3BfY2xvc2Ug
PSBzb2NrX25ldF9jbG9zZSwKLQkudm9wX3dyaXRlID0gc29ja19uZXRfd3JpdGUsCi0JLnZvcF9y
ZWFkICA9IHNvY2tfbmV0X3JlYWQsCi0JLnZvcF9pbmFjdGl2ZSA9IHNvY2tfbmV0X2luYWN0aXZl
Ci19OwotCiBpbnQgc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpCiB7
CiAJaW50IHJldCA9IDA7CkBAIC0yOTIsNyArMzAwLDcgQEAgaW50IHNvY2tldChpbnQgZG9tYWlu
LCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQogCX0KIAogCS8qIEFsbG9jYXRlIHRoZSBmaWxlIGRl
c2NyaXB0b3IgKi8KLQl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKCZzb2NrX25ldF9mb3BzLCBzb2Nr
X2ZkKTsKKwl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKHNvY2tfZmQpOwogCWlmICh2ZnNfZmQgPCAw
KSB7CiAJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCiAJCQkgICAgKCJmYWlsZWQgdG8gYWxs
b2NhdGUgZGVzY3JpcHRvciAlZFxuIiwKQEAgLTMzOSw3ICszNDcsNyBAQCBpbnQgYWNjZXB0KGlu
dCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbikKIAl9CiAKIAkv
KiBBbGxvY2F0ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgYWNjZXB0ZWQgY29ubmVjdGlv
biAqLwotCXZmc19mZCA9IHNvY2tfZmRfYWxsb2MoJnNvY2tfbmV0X2ZvcHMsIHNvY2tfZmQpOwor
CXZmc19mZCA9IHNvY2tfZmRfYWxsb2Moc29ja19mZCk7CiAJaWYgKHZmc19mZCA8IDApIHsKIAkJ
TFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKIAkJCSAgICAoImZhaWxlZCB0byBhbGxvY2F0ZSBk
ZXNjcmlwdG9yIGZvciBhY2NlcHRlZCBjb25uZWN0aW9uXG4iKSk7Ci0tIAoyLjExLjAKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:50 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx98-00075Y-Em; Wed, 26 Jun 2019 01:54:50 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx97-00074p-DE
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:49 +0000
X-Inumbo-ID: 6099af73-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6099af73-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:48 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id d18so726534wrs.5
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:48 -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=uTr3JsHF0Yj1NjAHvyQamtM1KVwOr2Ape98Ll8dI2QE=;
 b=T7S1IZkL4BPRBQDd/AXmRTQpXHnSiV41De36Eg02sjQkMqybJcAj9Wd79W3P3ACcTl
 rrs/yDb0bGXIV5aBECFvQt+ashygYtK5yjxjd60VD1J0Nf+XgUB1iL+rvTv19yNKkAcD
 y1JjFMIEfmUrmNrM+ENhE6iO50T01BujeFW8uMPuvHDG+bYJ44ufvqxsYq2PI3P/xY9b
 7A558/pUnLH8hXH+t7OJ/MFuw+7ZRssdd7kfPYyhTuns+p9y+JKO+589/v1udpTk/m+P
 xmm/cgFVRVIRDH59ld6ALkB9A5mQuneANohbOSwPuq3Ywl+6cskqqkEAF7r5Jm1WVhXM
 uyBw==
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=uTr3JsHF0Yj1NjAHvyQamtM1KVwOr2Ape98Ll8dI2QE=;
 b=SeL0CbZgiVDAhVUKiV+R2xH5jXvuavuzh2XWcWIaLnPacAW2mzckaSuHq0PQX1iq4w
 nZ0j/Pv+79ahIwJLCdm61537rcCLAbizWW0sNUoPLPn94Y3Z7SUyxm7cdMVSrM2QLyg+
 Tv22bNcU6YK1N9N54BFnL4WpIgatiROFRTU45GVvCQlHQEbCBgRm9fgEwuDvEwiiDLUR
 oJX2XHqbB4fJhRtlURCmKbPmWKEnTXPnqvVEfgtM+y032Ac473AxV9aYTR6xCf11q+lK
 MXDTnd3SXS6puWgY8twRByKwx99YDmUK1Ao15WgRCMcynedBP+IyV6Uht2hT2hRJn12i
 lCUQ==
X-Gm-Message-State: APjAAAUDEoz8vbBArF3vSNtvOBL4uE9sn5kIpO7+yJhB49Ro802kGWXV
 kzJwqqkcUyu5Xz1KN45aQJs+XHGIDLE=
X-Google-Smtp-Source: APXvYqxcr43tAQx+oCb+Q+bEpeVoE4A0JNhW2mpRVT6H5Y+2kFSFyB4R7mpRn1U3CqhXb3HGq8/F/A==
X-Received: by 2002:adf:ec12:: with SMTP id x18mr826874wrn.145.1561514087151; 
 Tue, 25 Jun 2019 18:54:47 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.46
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:46 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:36 +0300
Message-Id: <20190626015438.11046-6-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 5/7] Change the return of
 errors to match vfs expectations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

U2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgot
LS0KIHNvY2tldHMuYyB8IDIzICsrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdl
ZCwgMTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zb2NrZXRz
LmMgYi9zb2NrZXRzLmMKaW5kZXggMWEzZGRmZC4uMzg2MzlmOCAxMDA2NDQKLS0tIGEvc29ja2V0
cy5jCisrKyBiL3NvY2tldHMuYwpAQCAtMjM3LDkgKzIzNywxOCBAQCBzdGF0aWMgaW50IHNvY2tf
bmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKIAkvKgogCSAqIEZyZWUgc29ja2V0IGZp
bGUKIAkgKiBUaGUgcmVzdCBvZiB0aGUgcmVzb3VyY2VzIHdpbGwgYmUgZnJlZWQgYnkgdmZzCisJ
ICoKKwkgKiBUT0RPOiB2ZnMgaWdub3JlcyBjbG9zZSBlcnJvcnMgcmlnaHQgbm93LCBzbyBmcmVl
IG91ciBmaWxlCiAJICovCiAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsK
IAorCS8qCisJICogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ugb2YgZXJy
b3IsIGJ1dAorCSAqIHZmcyBleHBlY3RzIHVzIHRvIHJldHVybiBhIHBvc2l0aXZlIGVycm5vCisJ
ICovCisJaWYgKHJldCA8IDApCisJCXJldHVybiBlcnJubzsKKwogCXJldHVybiByZXQ7CiB9CiAK
QEAgLTI1NSw5ICsyNjQsMTIgQEAgc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5v
ZGUgKnNfdm5vZGUsCiAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCiAJCQkJICAgIGZp
bGUtPnNvY2tfZmQpKTsKIAlyZXQgPSBsd2lwX3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVp
b19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Ci0JLyogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5z
IC0xIGluIGNhc2Ugb2YgZXJyb3IgKi8KKwkvKgorCSAqIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0
dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yLCBidXQKKwkgKiB2ZnMgZXhwZWN0cyB1cyB0byByZXR1
cm4gYSBwb3NpdGl2ZSBlcnJubworCSAqLwogCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0Owor
CQlyZXR1cm4gZXJybm87CiAKIAlidWYtPnVpb19yZXNpZCAtPSByZXQ7CiAJcmV0dXJuIDA7CkBA
IC0yNzYsOSArMjg4LDEyIEBAIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUg
KnNfdm5vZGUsCiAJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCiAJCQkJICAgIGZpbGUt
PnNvY2tfZmQpKTsKIAlyZXQgPSBsd2lwX3JlYWR2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lv
diwgYnVmLT51aW9faW92Y250KTsKLQkvKiBsd2lwIHNldHMgZXJybm8gYW5kIHJldHVybnMgLTEg
aW4gY2FzZSBvZiBlcnJvciAqLworCS8qCisJICogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5z
IC0xIGluIGNhc2Ugb2YgZXJyb3IsIGJ1dAorCSAqIHZmcyBleHBlY3RzIHVzIHRvIHJldHVybiBh
IHBvc2l0aXZlIGVycm5vCisJICovCiAJaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7CisJCXJl
dHVybiBlcnJubzsKIAogCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKIAlyZXR1cm4gMDsKLS0gCjIu
MTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:51 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx99-00076T-GI; Wed, 26 Jun 2019 01:54:51 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx98-00075l-N3
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:50 +0000
X-Inumbo-ID: 6129b301-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6129b301-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:49 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id f9so686743wre.12
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:49 -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=7rxzfyBY0YpVm+6AyXqwubm2P/Om9+2QqxjhK6fQ1BE=;
 b=qjGJopYnfU9DvSz1ovrCfdmgxZ0wMUzUtf9nyJrdAMMb0rRgWBTNTMKc5Iqngz5Hos
 ztp+GzZUMtp2QK5fRJ6RonvmjmQmsN0uDIJsJD4Q+USCtjWef6N+7EAyk2+eDucCkCJi
 UKYZCCqCzFIOI7PIl2Io9L/w/GEqDxsGKQNlAjyC+/JpTYq8MRxozKTRPJFXdAD2oSVD
 2Mltm4O8axeCv9ZN0B3IwLYfujwu7ArEDxRnD95ekUFXi5JbH5FOB/lU1tIs1YGJuvm8
 ueEevb5KVfSjlcwb5D6JCKYQ/CqjJhLlh3G7Z8sfpWO75UKrzDeTu7pcpVS4vbaFHTkm
 dFyA==
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=7rxzfyBY0YpVm+6AyXqwubm2P/Om9+2QqxjhK6fQ1BE=;
 b=dO95jVqkXERnPqdmi77HAmiKZdycMAfTUT/dKcb1JMwYNkMd8h3JDT02BxJFxnqOFi
 PMZljvBA8LzJz+10Hwr5l3WdrgWqbL2i50upADeSloOXrKhVFztKOQCppjBnisGEoq+D
 EEeRrI669djsCftstRaK2V4hC/pZIo530LQ8wj3I/vKJh5kwXpsY+UI0QKHsnUuLPdVY
 POwUMK/0tqMxFgGSqC0dlG3gmvwi8JLVggXmOhehTDaQP+HWFzGVzldviFaNsGJBTN4p
 E9gUcwTrmbQdgONY+Sy6+XbKdRRepARHqYEjLWMKR69XeL85N5t8henTjLBEDteYCk0R
 hNrw==
X-Gm-Message-State: APjAAAXBT36a7qSEaenQAexRDZxuWllXz0QkfWaWUxTwlUlQHsBPvkBn
 eOV15LU5nsdkSVGqZ53zfQOlm0VXtTw=
X-Google-Smtp-Source: APXvYqyo/m41toNOGcTKeugqx7ptb2D3ifE6ZFMmy2Sf/xVLSugzhFlJEZU384+j/PxX9Xuk/Pf5kA==
X-Received: by 2002:a5d:6389:: with SMTP id p9mr883146wru.297.1561514088088;
 Tue, 25 Jun 2019 18:54:48 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.47
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:47 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:37 +0300
Message-Id: <20190626015438.11046-7-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 6/7] Provide ioctl for 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: Mihai Pogonaru <pogonarumihai@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>

U2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgot
LS0KIGV4cG9ydHN5bXMudWsgICAgICAgIHwgIDEgLQogaW5jbHVkZS9zeXMvc29ja2V0LmggfCAg
MiAtLQogc29ja2V0cy5jICAgICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrKysrKwogMyBm
aWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrCmluZGV4IDM3NWE3ODkuLjEwYzFhYjgg
MTAwNjQ0Ci0tLSBhL2V4cG9ydHN5bXMudWsKKysrIGIvZXhwb3J0c3ltcy51awpAQCAtNiw3ICs2
LDYgQEAgZ2V0c29ja25hbWUKIGdldHNvY2tvcHQKIGxpYmx3aXBfaW5pdAogbGlzdGVuCi1sd2lw
X2lvY3RsCiBsd2lwX2h0b25sCiBsd2lwX2h0b25zCiBsd2lwX2dldGhvc3RieW5hbWUKZGlmZiAt
LWdpdCBhL2luY2x1ZGUvc3lzL3NvY2tldC5oIGIvaW5jbHVkZS9zeXMvc29ja2V0LmgKaW5kZXgg
NDJiYWQ2Yy4uN2E4YWNhMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zeXMvc29ja2V0LmgKKysrIGIv
aW5jbHVkZS9zeXMvc29ja2V0LmgKQEAgLTUyLDggKzUyLDYgQEAKICNkZWZpbmUgU09DS19TRVFQ
QUNLRVQgNQogI2VuZGlmCiAKLSNkZWZpbmUgaW9jdGwocywgY21kLCBhcmdwKSBsd2lwX2lvY3Rs
KHMsIGNtZCwgYXJncCkKLQogaW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHBy
b3RvY29sKTsKIGludCBhY2NlcHQoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xl
bl90ICphZGRybGVuKTsKIGludCBiaW5kKGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5h
bWUsIHNvY2tsZW5fdCBuYW1lbGVuKTsKZGlmZiAtLWdpdCBhL3NvY2tldHMuYyBiL3NvY2tldHMu
YwppbmRleCAzODYzOWY4Li5hYTc3MmRhIDEwMDY0NAotLS0gYS9zb2NrZXRzLmMKKysrIGIvc29j
a2V0cy5jCkBAIC01Nyw2ICs1NywxMCBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X3dyaXRlKHN0cnVj
dCB2bm9kZSAqc192bm9kZSwKIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUg
KnNfdm5vZGUsCiAJCQlzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQs
CiAJCQlzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpOworc3RhdGljIGludCBz
b2NrX25ldF9pb2N0bChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCisJCQlzdHJ1Y3QgdmZzY29yZV9m
aWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCisJCQl1bnNpZ25lZCBsb25nIHJlcXVlc3QsCisJ
CQl2b2lkICpidWYpOwogCiAjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5hY3Rp
dmVfdCkgdmZzY29yZV92b3BfbnVsbG9wKQogCkBAIC02NCw2ICs2OCw3IEBAIHN0YXRpYyBzdHJ1
Y3Qgdm5vcHMgc29ja19uZXRfdm5vcHMgPSB7CiAJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3Nl
LAogCS52b3Bfd3JpdGUgPSBzb2NrX25ldF93cml0ZSwKIAkudm9wX3JlYWQgID0gc29ja19uZXRf
cmVhZCwKKwkudm9wX2lvY3RsID0gc29ja19uZXRfaW9jdGwsCiAJLnZvcF9pbmFjdGl2ZSA9IHNv
Y2tfbmV0X2luYWN0aXZlCiB9OwogCkBAIC0yOTksNiArMzA0LDIxIEBAIHN0YXRpYyBpbnQgc29j
a19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRp
YyBpbnQgc29ja19uZXRfaW9jdGwoc3RydWN0IHZub2RlICpzX3Zub2RlLAorCQkJc3RydWN0IHZm
c2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAorCQkJdW5zaWduZWQgbG9uZyByZXF1
ZXN0LAorCQkJdm9pZCAqYnVmKQoreworCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVM
TDsKKworCWZpbGUgPSBzX3Zub2RlLT52X2RhdGE7CisJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywgKCIlcyBmZDolZCBsd2lwX2ZkOiVkXG4iLAorCQkJCSAgICBfX2Z1bmNfXywKKwkJCQkgICAg
ZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKKwkJCQkgICAgZmlsZS0+c29ja19mZCkpOworCXJldHVy
biBsd2lwX2lvY3RsKGZpbGUtPnNvY2tfZmQsIHJlcXVlc3QsIGJ1Zik7Cit9CisKIGludCBzb2Nr
ZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCkKIHsKIAlpbnQgcmV0ID0gMDsK
LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx9A-000775-I2; Wed, 26 Jun 2019 01:54:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx98-00076H-UB
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:50 +0000
X-Inumbo-ID: 61b4d659-97b5-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 61b4d659-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:50 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id c66so389144wmf.0
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:50 -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=l9cwl88RNvUCXZIZ88bnW9bvNo6lYmgLU+NHcUKmNNU=;
 b=MlCl3+/cHGXSeqZaDU61SzBtBlN/lMbQN0KC+a1A6KMgLH6KMOFsNI77Mb30IbQnTg
 Ap75GP0AA0AHwPzU+Pr0lP5fP8mdtNfHmJlVrK+v19y/HsCGv9sJrgWD98qYaelaEQsz
 yxJ/rv/M+0MZsdlNJHmoIS77/6X1u+wR4uB2ZfbloySeIkCoo5lwz+I74g3U1XwtdFqq
 98fgnTOXY41mGgR9i3GFW8p2Q7kjBno7mcrDFJa3DtpF1SSl7VIg0fJUYmd3ZUTt5sZ7
 oTGWdeU/9I9IFUNTuF1Qn1qNZh+WegP9tcBpU4sqFTi3+l2sekDL29tX8jUUWlGVGjP6
 WY1w==
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=l9cwl88RNvUCXZIZ88bnW9bvNo6lYmgLU+NHcUKmNNU=;
 b=R2ZFQQvh0Y0NIyb46tjraO6EZmFkc0trB1JclZzm+WsS5UyT30JAzNtKpxsU5zzMGO
 r1hFw5lqs0RGkN/cuIE7eRHMDJNtY64or6w4+o3+rbk1dojcfTmFrKFAe1lCvaWDZJE5
 PdEQI/K/Zy/dYxkFYgL5CgFW4SA7w2t4rM2GrXadL1j51oz8yMsxYpuMdYqWUybi2Nw/
 xD4i8BOuGcZ10b2g4v9jttHAdT71R0+M6HyOohofYY3A2JnXB6CNVsgcjFbm+AOyw9Lt
 iiNlf868HZHABGQNCcEqzutiq2y7nr50DbXi3OV46nPS/+L/N//3UPw8PRBH6K2TLlbl
 x4KQ==
X-Gm-Message-State: APjAAAW7SpNqMBaRQhx2PkHO45bCbrlJ0nfCRcX99N7JI+pJ/sHk0AwR
 ddJhejhhNyYRx657rL6bmHQJpqGRqm4=
X-Google-Smtp-Source: APXvYqxrtcpV4YW8enwfPnTL1kYrNLkmu9eNhQkCuJh9Wr74xUSGCnELj2zGR82JbTCXjJx8iuC1gQ==
X-Received: by 2002:a1c:35c9:: with SMTP id c192mr489625wma.147.1561514088991; 
 Tue, 25 Jun 2019 18:54:48 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id v65sm477528wme.31.2019.06.25.18.54.48
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:48 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:38 +0300
Message-Id: <20190626015438.11046-8-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015438.11046-1-pogonarumihai@gmail.com>
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH 7/7] Further protect
 gethostbyname* defines
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

bHdpcF9nZXRob3N0YnluYW1lIGFuZCBsd2lwX2dldGhvc3RieW5hbWVfciBkZWZpbml0aW9ucyBh
cmUgcHJvdGVjdGVkCmJ5IExXSVBfRE5TICYmIExXSVBfU09DS0VUCgpTaWduZWQtb2ZmLWJ5OiBN
aWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBnbWFpbC5jb20+Ci0tLQogaW5jbHVkZS9uZXRk
Yi5oIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0ZGIuaCBiL2luY2x1ZGUvbmV0ZGIuaAppbmRl
eCBiZjVlZGZmLi5kYzYzNmZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldGRiLmgKKysrIGIvaW5j
bHVkZS9uZXRkYi5oCkBAIC0xLDEwICsxLDEwIEBACi0jaWYgIShMV0lQX0NPTVBBVF9TT0NLRVRT
KQorI2lmIExXSVBfRE5TICYmIExXSVBfU09DS0VUICYmICEoTFdJUF9DT01QQVRfU09DS0VUUykK
IAogI2RlZmluZSBnZXRob3N0YnluYW1lKG5hbWUpIGx3aXBfZ2V0aG9zdGJ5bmFtZShuYW1lKQog
I2RlZmluZSBnZXRob3N0YnluYW1lX3IobmFtZSwgcmV0LCBidWYsIGJ1ZmxlbiwgcmVzdWx0LCBo
X2Vycm5vcCkgXAogICAgICAgIGx3aXBfZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsIHJldCwgYnVmLCBi
dWZsZW4sIHJlc3VsdCwgaF9lcnJub3ApCiAKLSNlbmRpZiAvKiAhKExXSVBfQ09NUEFUX1NPQ0tF
VFMpICovCisjZW5kaWYgLyogTFdJUF9ETlMgJiYgTFdJUF9TT0NLRVQgJiYgIShMV0lQX0NPTVBB
VF9TT0NLRVRTKSAqLwogCiAjaW5jbHVkZSA8Y29tcGF0L3Bvc2l4L25ldGRiLmg+CiAKLS0gCjIu
MTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx9D-00078R-JW; Wed, 26 Jun 2019 01:54:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx9C-00077y-8p
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:54 +0000
X-Inumbo-ID: 63964ece-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x430.google.com (unknown [2a00:1450:4864:20::430])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 63964ece-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:53 +0000 (UTC)
Received: by mail-wr1-x430.google.com with SMTP id n9so754928wru.0
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:53 -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=5aOabUK4SJHJB0tqqIsyuz2blpJ50Tm5LhTFa65EXFg=;
 b=jBC4zFCGi/yQDavlPclNjrZww9/2APBBZn7+d5fdxWyuRmbAoZCFCNZKUF1Pa4XWHn
 7TSxcFW+OK/IhvfFaohr8kAaKQCmQy6rjTAK5UVtR0wCeok65kO6OTfP778pNSZl9crD
 7IK5+yTL+QcChOIfzgbt5TNvVRYSuYQNkPXbfW/lFHnwJdl8+zgUASpVRLKC35HU3C1p
 2EXlNyx7dwZYa9DV8VyuJ0MdJFX6N25FgQNtZKzvBiU6hGcBjkCRqINx3eU61gFSaMX4
 cWWXu1lZfYKBIqDe4WDhq7odiGYdDuuJW6uUeJ+hksFvYqJNHrUAJJ1GgFyMp/NZtreM
 IGsA==
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=5aOabUK4SJHJB0tqqIsyuz2blpJ50Tm5LhTFa65EXFg=;
 b=Uek/wt/EZHe7VR+FsLvGnBqGlUmxN7IaYUdYvf5W0/KIvp+xTwlPIOuw6FQx7MvfgM
 QkAYigMpBROvZ2ODpiWfLHp8Q6RZb92Cw3Aif0glXnljbGYBwU6gExtqyhZzzWuafV//
 JcJM5qO/C/pnp5y5FvBAT7T/636o4jPAE/mP2VRiJ6RYd534Vb4zip7TmUwKIzkekxid
 oAVx5C7qNRQKl8g/jWySr1OMsnfOm8DWd9Yc2teX64Jt887i8b2p+zjxVPMX33mGnRtM
 SPLlVbZBHedNp95fiP5ZBFZoMIPDO7GyRh+e/k+wmclFkdQ8xrlNxHTtVI1tbxwbUSG/
 cqbA==
X-Gm-Message-State: APjAAAVNHfxO37wNmfc7JfBISS4es6ZakVub08xIg27RkwvcBlcQWvG1
 gxIbaiVJt/auK8jb4HvpfcFA1GRDLW4=
X-Google-Smtp-Source: APXvYqw9NJRbUuiOU2zXGz02iHaw00L/X4fe3PakYWme9DsaULJpfiVr6i8To9yJ5EoHChQ6xNG6rA==
X-Received: by 2002:adf:e841:: with SMTP id d1mr869097wrn.204.1561514092154;
 Tue, 25 Jun 2019 18:54:52 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id x17sm14350954wrq.64.2019.06.25.18.54.51
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:51 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:39 +0300
Message-Id: <20190626015442.11104-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT VFS PATCH 0/3] VFSCORE fixes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

VGhpcyBwYXRjaCBzZXJpZXMgZml4ZXMgdmZzY29yZSBpc3N1ZXMgYW5kIGV4cG9zZXMgc29tZSAK
VkZTIGZ1bmN0aW9ucyBuZWVkIGJ5IHRoZSAiTFdJUCBmaXhlcyIgcGF0Y2ggc2VyaWVzCgpNaWhh
aSBQb2dvbmFydSAoMyk6CiAgRml4IGRlbnRyeSByZWZlcmVjaW5nIGFuZCBmaWxlIGNsb3NpbmcK
ICBDaGVjayBmb3IgTlVMTCByZWZlcmVuY2Ugb24gdmZzY29yZV9wdXRfZmQoKS4gQWRkIGFzc2Vy
dHMgdG8gZmRyb3AoKQogIFByb3ZpZGUgZnVuY3Rpb25zIHVzZWQgYnkgTFdJUCBwYXRjaAoKIGxp
Yi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgICAgICAgICAgICB8ICAzICsrKwogbGliL3Zmc2NvcmUv
ZmQuYyAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKysrLQogbGliL3Zmc2NvcmUvZmlsZS5j
ICAgICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKystLS0tLQogbGliL3Zm
c2NvcmUvZm9wcy5jICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKy0tLQogbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIHwgIDcgKysrKysrKwogbGliL3Zmc2NvcmUvc3lzY2Fs
bHMuYyAgICAgICAgICAgICAgIHwgIDMgKysrCiBsaWIvdmZzY29yZS92ZnMuaCAgICAgICAgICAg
ICAgICAgICAgfCAgNiAtLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwg
MTUgZGVsZXRpb25zKC0pCgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx9E-000795-LK; Wed, 26 Jun 2019 01:54:56 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx9D-00078O-IV
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:55 +0000
X-Inumbo-ID: 6417bcc1-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6417bcc1-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:54 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id n9so754951wru.0
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54: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=/5mUh9xbHegfiVnriKO0e0t1z3BHdRg6xS9v7/I3Tk4=;
 b=G6ux+jbCtI7b2tjZi7CkCyJBgVwndh5+AmfESEIX88xBt/RBPcJG2cXHDUV/tN3aiJ
 QGfP9KjDWNdcH/piOtU157aSm/52K0r4tLsYHsfXhJDpQAiThl+dwn7jodEO9fjX0Daz
 aOPfvbhk5J2jHFtny1jjQ/OeNWjQDQG073Mj5/JHbZe9iILvig6m48P+1Ow86TwcI6pb
 a5KbflL8p2gftaTn2tjnjsR9J3S+hQkT9iTjcWNARFf8MMU72+grHQC1uBlO6vmRtL1W
 PUKuiOxz9Rfy6H/wDg8520d/2ESyxVAf+kNfUqm8EhSToNZLTUaWkyipE1jBI22XxFmH
 DUdw==
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=/5mUh9xbHegfiVnriKO0e0t1z3BHdRg6xS9v7/I3Tk4=;
 b=R7mXMhqPKQSB3owR5zsz5hzn/A55+vYdgREjTHbIx903E81T38lsX2K5XWDEr3lyI9
 NnkzMF7qygwlkCz1IBObIU6u7qihcNjKRdquk6BFPxvVy6rDBye+OmOukMLxDlc0woEA
 tDrOqnMO9GwrCqn36t5VYYrOZtG+XpqKUhRCatTkze54+YaU6/JcR1IFGtmv327kx9vZ
 H/iVFuS5QhVjYr2GRGtaqi1KAbBo7mu1MWhkmUL3uU2IHgd3L2EB/W1ocZBjW+rqdgns
 ZHenS9nOTolnq9p33Z0xUQGcs2fxHS4Hud5selc+AdpWOyjF7Y5oyy0LdTOoyD+CZwMY
 r8sA==
X-Gm-Message-State: APjAAAXiARtX169GHnXRTEOqxqgxFE0HIFUTnXofaNXiWqKZZQqw05xY
 nH8/JdFxFeRx24aYfmAGZYTi6LA1pLM=
X-Google-Smtp-Source: APXvYqwRxQ4km93FIy3Rys+SpK19o87PLayBWhTgsiEJhB4ZrElPOmQPimkRFnh/L+2w0neG0Zz5Cg==
X-Received: by 2002:adf:9003:: with SMTP id h3mr921796wrh.172.1561514093006;
 Tue, 25 Jun 2019 18:54:53 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id x17sm14350954wrq.64.2019.06.25.18.54.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:52 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:40 +0300
Message-Id: <20190626015442.11104-2-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015442.11104-1-pogonarumihai@gmail.com>
References: <20190626015442.11104-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH 1/3] Fix dentry referecing and
 file closing
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

SW5jcmVhc2UgdGhlIHJlZmNvdW50IG9mIHRoZSBkZW50cnkgd2hlbiBvcGVuaW5nIGEgZmlsZQpE
ZWNyZWFzZSB0aGUgcmVmY291bnQgb2YgdGhlIGRlbnRyeSBhbmQgZnJlZSB0aGUgZmlsZSBvbiBj
bG9zaW5nCgpNYWtlIGZkcm9wIHJldHVybiAwIGlmIHRoZSBmaWxlJ3MgcmVmY291bnQgaGl0IDAg
b3IgMSBvdGhlcndpc2UuClRoaXMgaXMgdGhlIE9TdiBiZWhhdmlvdXIgYW5kIHRoZSByZXR1cm4g
b2YgYW4gZXJyb3IgZnJvbSBmZHJvcAppcyBuZXZlciBjaGVja2VkLgoKU2lnbmVkLW9mZi1ieTog
TWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgotLS0KIGxpYi92ZnNjb3Jl
L2ZpbGUuYyAgICAgfCAxOCArKysrKysrKysrKysrKy0tLS0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAg
ICAgfCAgNyArKysrLS0tCiBsaWIvdmZzY29yZS9zeXNjYWxscy5jIHwgIDMgKysrCiAzIGZpbGVz
IGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
bGliL3Zmc2NvcmUvZmlsZS5jIGIvbGliL3Zmc2NvcmUvZmlsZS5jCmluZGV4IGU1NmYxNmRjLi5l
NzYyN2U5NiAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvZmlsZS5jCisrKyBiL2xpYi92ZnNjb3Jl
L2ZpbGUuYwpAQCAtNDIsMTUgKzQyLDI1IEBACiAKIGludCBmZHJvcChzdHJ1Y3QgdmZzY29yZV9m
aWxlICpmcCkKIHsKLQlpbnQgcmV0ID0gMDsKIAlpbnQgcHJldiA9IHVrYXJjaF9kZWMoJmZwLT5m
X2NvdW50KTsKIAogCWlmIChwcmV2ID09IDApCiAJCVVLX0NSQVNIKCJVbmJhbGFuY2VkIGZob2xk
L2Zkcm9wIik7CiAKLQlpZiAocHJldiA9PSAxKQotCQlyZXQgPSB2ZnNfY2xvc2UoZnApOwotCXJl
dHVybiByZXQ7CisJaWYgKHByZXYgPT0gMSkgeworCQkvKgorCQkgKiB3ZSBmcmVlIHRoZSBmaWxl
IGV2ZW4gaW4gY2FzZSBvZiBhbiBlcnJvcgorCQkgKiBzbyByZWxlYXNlIHRoZSBkZW50cnkgdG9v
CisJCSAqLworCQlpZiAodmZzX2Nsb3NlKGZwKSAhPSAwKQorCQkJZHJlbGUoZnAtPmZfZGVudHJ5
KTsKKworCQlmcmVlKGZwKTsKKworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKIH0KIHZv
aWQgZmhvbGQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCiB7CmRpZmYgLS1naXQgYS9saWIvdmZz
Y29yZS9mb3BzLmMgYi9saWIvdmZzY29yZS9mb3BzLmMKaW5kZXggOGY1YzJlMWIuLjBjZWYyYzEy
IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mb3BzLmMKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5j
CkBAIC01Myw5ICs1MywxMCBAQCBpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZw
KQogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCi0JLyogRGVudHJ5IHN0YXlzIGZvcmV2
ZXIgaW4gdGhlIGRlbnRyeSBjYWNoZS4gVW5sZXNzIHRoZQotCSAqIGZpbGUvZGlyZWN0b3J5IGl0
IHJlZmVycyB0byBnZXRzIGRlbGV0ZWQvcmVuYW1lZCAqLworCS8qIFJlbGVhc2UgdGhlIGRlbnRy
eSAqLworCWRyZWxlKGZwLT5mX2RlbnRyeSk7CiAJZnAtPmZfZGVudHJ5ID0gTlVMTDsKKwogCXJl
dHVybiAwOwogfQogCkBAIC0xMDMsNyArMTA0LDcgQEAgaW50IHZmc193cml0ZShzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmcCwgc3RydWN0IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCiAJCWlvZmxhZ3MgfD0g
SU9fU1lOQzsKIAogCWlmICgoZmxhZ3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQotCSAgICAgICAgdWlv
LT51aW9fb2Zmc2V0ID0gZnAtPmZfb2Zmc2V0OworCQl1aW8tPnVpb19vZmZzZXQgPSBmcC0+Zl9v
ZmZzZXQ7CiAKIAllcnJvciA9IFZPUF9XUklURSh2cCwgdWlvLCBpb2ZsYWdzKTsKIAlpZiAoIWVy
cm9yKSB7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUv
c3lzY2FsbHMuYwppbmRleCAzODVkOTBjMC4uZjk2NjZjNGMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNj
b3JlL3N5c2NhbGxzLmMKKysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMjA0LDYgKzIw
NCw4IEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKipmcHApCiAJfQogCWZwLT5mX2ZsYWdzID0gZmxhZ3M7CiAKKwkvLyBP
U3Ygd2FzIHVzaW5nIGEgaW50cnVzaXZlX3B0ciB3aGljaCB3YXMgaW5jcmVhc2luZyB0aGUgcmVm
Y291bnQKKwlkcmVmKGRwKTsKIAkvLyBjaGFuZ2UgdG8gc3RkOjptb3ZlIG9uY2UgZHAgaXMgYSBk
ZW50cnlfcmVmCiAJZnAtPmZfZGVudHJ5ID0gZHA7CiAJZHAgPSBOVUxMOwpAQCAtMjE0LDYgKzIx
Niw3IEBAIHN5c19vcGVuKGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVj
dCB2ZnNjb3JlX2ZpbGUgKipmcHApCiAJCS8vIE5vdGUgZGlyZWN0IGRlbGV0ZSBvZiBmcCBpbnN0
ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCiAJCS8vIHJldHVybmVkIHNvIGNhbm5vdCBi
ZSBpbiB1c2UsIGFuZCBiZWNhdXNlIGl0IHdhc24ndCBvcGVuZWQKIAkJLy8gaXQgY2Fubm90IGJl
IGNsb3NlKCllZC4KKwkJZHJlbGUoZnAtPmZfZGVudHJ5KTsKIAkJZnJlZShmcCk7CiAJCXJldHVy
biBlcnJvcjsKIAl9Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx9F-00079r-O1; Wed, 26 Jun 2019 01:54:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx9E-00079F-Rh
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:56 +0000
X-Inumbo-ID: 6536b93c-97b5-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6536b93c-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:56 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id c66so389295wmf.0
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54:56 -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=BVjHIfmuxiPwPPXZqfRThyO2p4ZuyDCg83x+okByyQc=;
 b=O6UgfvvQWoDqIBw6HeDYSVfVVwK5RSXeZIBFHUJfHlkf1UnGVzKMxexmtSPlDUi81s
 c/o/wvb7R9b4mGhf65VjHXWCi7p4I4Gu7rTFkeNIf3cDVTGVsfElGEsTHq2CHZKiIIf3
 kiWoOXT2SGpmJbl8JYh3+E0SUlEbsHDV9JuadC17q8fEHpaOS2plWoqq7V+nBrNFIYUm
 HKlzFenajy4ZbH1JzOFyU6ZAaKc6gEOFcRG0mcOPxhYY5tV7R2AFMSkTcyK6WdfMD/bn
 nccA0GtrsQXFFDxy3O5BoAvBBhUNoFiOTgHs/vWGmSMt75oIF68FoF50YhUtqrp+hbxb
 0J2Q==
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=BVjHIfmuxiPwPPXZqfRThyO2p4ZuyDCg83x+okByyQc=;
 b=mMuar80LcW8f1E7JCpof7mdnAgI5Ceh9brq5iLDGDLn1RvErV8vd8d+nrJ22Jz9cUr
 M7iGNfKY+35/phLim5ed63mv+1tINsk0FSicEv5RAkCkVAcv1XUYZNz3ZDjAzYhblClT
 8aH5sFddRr8sQsn52XFF4CB28VUTkPukCaHXxlFzFoI4ZlK0HAYewxpeXot31OsFQyuS
 jzPXNAn6BUqXzOZVLFwWUMt/eKlBiK6bWfFPYl/h6ZW5m+F0Oa/66FHOoE4KEroUEolq
 +5P1rg0mtZ341CmVO8G7/BIr1W9MTa0DKmSEcPuDMhqNXK+wWsCNsmWRof3sLEGycJPf
 hSMQ==
X-Gm-Message-State: APjAAAWFB4zZiGdVuz8+jU2u/9eudfE2BkI/evFnQ6lt0qmcuYf/cKVU
 vg4rPEcKhm1k1z4YXhRaic08rM9aPos=
X-Google-Smtp-Source: APXvYqzUKCGy5DnU5A13EZ9wQARpaHIrTUl5aaPHzuY4kxhngTicl16mt1re3YjlYsq5eeye7Xk1aw==
X-Received: by 2002:a1c:99ca:: with SMTP id b193mr468390wme.31.1561514094873; 
 Tue, 25 Jun 2019 18:54:54 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id x17sm14350954wrq.64.2019.06.25.18.54.54
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:54 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:42 +0300
Message-Id: <20190626015442.11104-4-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015442.11104-1-pogonarumihai@gmail.com>
References: <20190626015442.11104-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH 3/3] Provide functions used by
 LWIP patch
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

TW92ZSBkZW50cnkgZnVuY3Rpb25zIGluc2lkZSBkZW50cnkuaCBoZWFkZXIgYW5kIGFkZCB0aGUg
b25lcwpuZWVkZWQgYnkgc29ja2V0cy5jIGluIExXSVAgaW4gZXhwb3J0c3ltcwoKU2lnbmVkLW9m
Zi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgotLS0KIGxpYi92
ZnNjb3JlL2V4cG9ydHN5bXMudWsgICAgICAgICAgICB8IDMgKysrCiBsaWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmggfCA3ICsrKysrKysKIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAg
ICAgICAgICAgICAgICB8IDYgLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMo
KyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
ayBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKaW5kZXggZGE3ZmJhZWEuLjgyMmU2ZWNjIDEw
MDY0NAotLS0gYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4
cG9ydHN5bXMudWsKQEAgLTc1LDMgKzc1LDYgQEAgcmVhZGxpbmsKIGZhbGxvY2F0ZQogbHNlZWsK
IHVrX3N5c2NhbGxfd3JpdGV2CitkZW50cnlfYWxsb2MKK2RyZWxlCit2cmVsZQpkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5j
bHVkZS92ZnNjb3JlL2RlbnRyeS5oCmluZGV4IDg1ZjM3YWI3Li4wYTM4NDAyOCAxMDA2NDQKLS0t
IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3Jl
L2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaApAQCAtNTQsNCArNTQsMTEgQEAgc3RydWN0IGRlbnRy
eSB7CiAJc3RydWN0IHVrX2xpc3RfaGVhZCBkX2NoaWxkX2xpbms7CiB9OwogCitzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnlfYWxsb2Moc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUg
KnZwLCBjb25zdCBjaGFyICpwYXRoKTsKK3N0cnVjdCBkZW50cnkgKmRlbnRyeV9sb29rdXAoc3Ry
dWN0IG1vdW50ICptcCwgY2hhciAqcGF0aCk7Cit2b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50
cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpOwordm9pZCBkZW50
cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKTsKK3ZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5ICpk
cCk7Cit2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKTsKKwogI2VuZGlmIC8qIF9PU1ZfREVO
VFJZX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZz
LmgKaW5kZXggZmQ2MGRlYzcuLmZiNTc0MzVmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMu
aAorKysgYi9saWIvdmZzY29yZS92ZnMuaApAQCAtMTM0LDEyICsxMzQsNiBAQCBpbnQJIHZmc19k
bmFtZV9jb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpOwogCiBp
bnQJIGZzX25vb3Aodm9pZCk7CiAKLXN0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxvYyhzdHJ1Y3Qg
ZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpOwot
c3RydWN0IGRlbnRyeSAqZGVudHJ5X2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpwYXRo
KTsKLXZvaWQgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBh
cmVudF9kcCwgY2hhciAqcGF0aCk7Ci12b2lkIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAq
ZHApOwotdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkgKmRwKTsKLXZvaWQgZHJlbGUoc3RydWN0IGRl
bnRyeSAqZHApOwogdm9pZCBkZW50cnlfaW5pdCh2b2lkKTsKIAogaW50IHZmc19jbG9zZShzdHJ1
Y3QgdmZzY29yZV9maWxlICpmcCk7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 01:54:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 01:54: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 1hfx9F-00079w-QF; Wed, 26 Jun 2019 01:54:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=khUo=UZ=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hfx9E-00079E-S4
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 01:54:56 +0000
X-Inumbo-ID: 649f60df-97b5-11e9-8980-bc764e045a96
Received: from mail-wr1-x429.google.com (unknown [2a00:1450:4864:20::429])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 649f60df-97b5-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 01:54:55 +0000 (UTC)
Received: by mail-wr1-x429.google.com with SMTP id v14so731961wrr.4
 for <minios-devel@lists.xen.org>; Tue, 25 Jun 2019 18:54: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:in-reply-to:references;
 bh=RiinFmLK7Kj8tdCkegB8nDFq7TwZBpNLYpsC4WjGRNI=;
 b=T5u4Yp0c7p0IhoOf4BppzN0t+7NRgl5Cx4RUEffKIhloT3KSSZeueCaU9zGCU1bQ1L
 lcSrqOcQuvEBuvjRIsm5mhaILL2j9KY/tSZtbh4tUx82OvIzKBmBtznvCDvS02F6TXJf
 XSt0MtxfnuViVNo//vYoqJlWdsRhC0Zq8Iq5uOhK5YqF0vcdtW/XsNsOkj4Be0HMBZt+
 9CUV62R7A+Uu9rdJpjcVhQN0hPjFpmS1jW1lzSogxQJQ8uftQj8XOTE11fcCO14WAvNR
 Deq57gj5G9RAW9YSSVBxApBj9sS4K8mJDHGNhJnCNbXdAyigA4md38hcl2L3SqyRm+B1
 fbyw==
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=RiinFmLK7Kj8tdCkegB8nDFq7TwZBpNLYpsC4WjGRNI=;
 b=EaDZu4LL4fUvgpkJioh1sOmL+mNuvZ3SGuKUH8LBm0q+yezJM2Fs8rkMp9QiIiiqW9
 RevZR2vuEXRkMJeab9lq7VeTQnPkKAchs+RmP8uI6kDcainIjVE1FFeafzvQgG1epZ1J
 4vJK4vFnpkamK+c09Ag7kKg41Zo1dAk0HYSFrBpFYvqVCfJjxqahE6DwpX7AmqHM1NDD
 31m+zteUO7H3KtskovMKd5c4adGECILQRPUTTzTy2rr6mjqzXwU0IPexx2r61LktDp/O
 TglLy5EAzrRDdSP6zTM+Nai84EJ8Hockm8LpVCWww7z9mWVYhZ2i4O3cMSfallYe4qDv
 t2AQ==
X-Gm-Message-State: APjAAAVhXgJqfWsbQ/TQGyibAuu53cu/CfpfB/oNSx0mtLctGz13Px9R
 uhMVbreZrutYjAY/YB8S/c1Aug54jlU=
X-Google-Smtp-Source: APXvYqyfcXhyYq1eSn/q8eMibMiIpza3/oK+RwImuPN1HfNT46Z5ti0U/nwk8f5YD8LWaS9y8uQynQ==
X-Received: by 2002:a5d:6389:: with SMTP id p9mr883416wru.297.1561514093922;
 Tue, 25 Jun 2019 18:54:53 -0700 (PDT)
Received: from localhost.localdomain ([86.120.232.233])
 by smtp.gmail.com with ESMTPSA id x17sm14350954wrq.64.2019.06.25.18.54.53
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 25 Jun 2019 18:54:53 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Wed, 26 Jun 2019 04:54:41 +0300
Message-Id: <20190626015442.11104-3-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190626015442.11104-1-pogonarumihai@gmail.com>
References: <20190626015442.11104-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH 2/3] Check for NULL reference on
 vfscore_put_fd(). Add asserts to fdrop()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

U2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgot
LS0KIGxpYi92ZnNjb3JlL2ZkLmMgICB8IDcgKysrKysrLQogbGliL3Zmc2NvcmUvZmlsZS5jIHwg
NyArKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMKaW5k
ZXggZjhiMjQwMjAuLjAxMDI1YTQ2IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9mZC5jCisrKyBi
L2xpYi92ZnNjb3JlL2ZkLmMKQEAgLTg4LDcgKzg4LDEyIEBAIHZvaWQgdmZzY29yZV9wdXRfZmQo
aW50IGZkKQogCWZkdGFibGUuZmlsZXNbZmRdID0gTlVMTDsKIAl1a3BsYXRfbGNwdV9yZXN0b3Jl
X2lycWYoZmxhZ3MpOwogCi0JZmRyb3AoZnApOworCS8qCisJICogU2luY2Ugd2UgY2FuIGFsbG9j
IGEgZmQgd2l0aG91dCBhc3NpZ25pbmcgYQorCSAqIHZmc2ZpbGUgd2UgbXVzdCBwcm90ZWN0IGFn
YWluc3QgTlVMTCBwdHIKKwkgKi8KKwlpZiAoZnApCisJCWZkcm9wKGZwKTsKIH0KIAogaW50IHZm
c2NvcmVfaW5zdGFsbF9mZChpbnQgZmQsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpCmRpZmYg
LS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29yZS9maWxlLmMKaW5kZXggZTc2
MjdlOTYuLmJjOGIwZGM4IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9maWxlLmMKKysrIGIvbGli
L3Zmc2NvcmUvZmlsZS5jCkBAIC00Miw3ICs0MiwxMiBAQAogCiBpbnQgZmRyb3Aoc3RydWN0IHZm
c2NvcmVfZmlsZSAqZnApCiB7Ci0JaW50IHByZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7
CisJaW50IHByZXY7CisKKwlVS19BU1NFUlQoZnApOworCVVLX0FTU0VSVChmcC0+Zl9jb3VudCA+
IDApOworCisJcHJldiA9IHVrYXJjaF9kZWMoJmZwLT5mX2NvdW50KTsKIAogCWlmIChwcmV2ID09
IDApCiAJCVVLX0NSQVNIKCJVbmJhbGFuY2VkIGZob2xkL2Zkcm9wIik7Ci0tIAoyLjExLjAKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 07:47:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 07:47: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 1hg2eX-0001cM-2r; Wed, 26 Jun 2019 07:47:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg2eV-0001cH-PX
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 07:47:35 +0000
X-Inumbo-ID: a7d4fcbb-97e6-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a7d4fcbb-97e6-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 07:47:33 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id n9so1522045wru.0
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 00:47:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=dTVB2mvnS3zYNDMVl6OBBUa74cSOaSMwNk29u5I38nw=;
 b=XuzI+A09/NQ8NiSuEp/dfFeEysiOOMmEuHZdOgcTTgjXMOJNfshUQ/QHR/WxID++7C
 ua/lMOeUL8aYNW5mmmIikuq7SN24EdaXiJJFLw7HQsbvQITZSxwH4Q9RPIxtkiutIvBG
 KsgcspvXrYtxz6HdskgCFTlQ3XMK5ubZ1gElZEurBJ3bJ2oVXjaogfCM4G9ASTe/GVLU
 8zndAZto8a7E2xjUR4gDJHb7br8nOCDL/Bniav4/RDWVVOpR4AbG3kZ8NDRsZccErkAQ
 Wy0E0oGEPFz/jcnxUlTBvJ+Rbz2BM/e2GIj0o2MyppKijZRih/ZydRDZgUqtpjiYLDwk
 XZMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=dTVB2mvnS3zYNDMVl6OBBUa74cSOaSMwNk29u5I38nw=;
 b=Gf9N5EOl9ROb/BIRAVadQJL9ND8ViH+wcDTOwzGoNEAwK2YCXvA7Px0NJHoh2GJxvF
 L8wfObAs3e0EgUNuLZkypdzf8uAB9rANnqyMcBQedw9ys+unr/hbVhvEZfRFwTULrHiI
 4KEQ17DxkXtRsZVrF8ZKTsqGoQCUaHU3zD2twnvx4Gpdh9W1BkxZEGE6HRoNaMOgFVQg
 bT74FLwxubkGg3pP5rEcTzplrHsuM6kfPucwLBOGn/S5RWmlDie7FH8r5ryN+e7jatDY
 0Q2SpN48emhJ44QSrOdsi0ItZ9oVRicHZJmi45amK4eZGI2m8ZGroKWwl5SlCPF726v8
 8s0A==
X-Gm-Message-State: APjAAAW4z5CMNH5rbfB1lF7BV/XlCuCinfTytOgfM+GjxOl1Mg5qUNq3
 832luEsHPTbHlZuEfROkeRg=
X-Google-Smtp-Source: APXvYqy8tMw/osW3XWSQnD/fV2OzJfrnUEbu9w3SMHFYdZaUOfAs5rgy3lTKmJvkXQJ3lH1vQPFfiw==
X-Received: by 2002:a05:6000:124a:: with SMTP id
 j10mr2333219wrx.191.1561535252097; 
 Wed, 26 Jun 2019 00:47:32 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id z5sm13855759wrh.16.2019.06.26.00.47.31
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 00:47:31 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
 <20190626015438.11046-8-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <52be9238-476c-2332-edb1-753aee43bb39@gmail.com>
Date: Wed, 26 Jun 2019 10:47:30 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015438.11046-8-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH 7/7] Further protect
 gethostbyname* defines
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpQbGVhc2Ugc2VlIGlubGluZS4KCk9uIDYvMjYvMTkgNDo1NCBBTSwgTWloYWkg
UG9nb25hcnUgd3JvdGU6Cj4gbHdpcF9nZXRob3N0YnluYW1lIGFuZCBsd2lwX2dldGhvc3RieW5h
bWVfciBkZWZpbml0aW9ucyBhcmUgcHJvdGVjdGVkCj4gYnkgTFdJUF9ETlMgJiYgTFdJUF9TT0NL
RVQKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNaWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBnbWFp
bC5jb20+Cj4gLS0tCj4gIGluY2x1ZGUvbmV0ZGIuaCB8IDQgKystLQo+ICAxIGZpbGUgY2hhbmdl
ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9pbmNs
dWRlL25ldGRiLmggYi9pbmNsdWRlL25ldGRiLmgKPiBpbmRleCBiZjVlZGZmLi5kYzYzNmZlIDEw
MDY0NAo+IC0tLSBhL2luY2x1ZGUvbmV0ZGIuaAo+ICsrKyBiL2luY2x1ZGUvbmV0ZGIuaAo+IEBA
IC0xLDEwICsxLDEwIEBACj4gLSNpZiAhKExXSVBfQ09NUEFUX1NPQ0tFVFMpCj4gKyNpZiBMV0lQ
X0ROUyAmJiBMV0lQX1NPQ0tFVCAmJiAhKExXSVBfQ09NUEFUX1NPQ0tFVFMpCj4gIAo+ICAjZGVm
aW5lIGdldGhvc3RieW5hbWUobmFtZSkgbHdpcF9nZXRob3N0YnluYW1lKG5hbWUpCj4gICNkZWZp
bmUgZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsIHJldCwgYnVmLCBidWZsZW4sIHJlc3VsdCwgaF9lcnJu
b3ApIFwKPiAgICAgICAgIGx3aXBfZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsIHJldCwgYnVmLCBidWZs
ZW4sIHJlc3VsdCwgaF9lcnJub3ApCj4gIAo+IC0jZW5kaWYgLyogIShMV0lQX0NPTVBBVF9TT0NL
RVRTKSAqLwo+ICsjZW5kaWYgLyogTFdJUF9ETlMgJiYgTFdJUF9TT0NLRVQgJiYgIShMV0lQX0NP
TVBBVF9TT0NLRVRTKSAqLwoKTm93IHRoYXQgc2VlIHRoaXMsIHdoeSBkbyB3ZSBkZWZpbmUgdGhp
cyB3cmFwcGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mCnRoZSBmaWxlLCBiZWZvcmUgaW5jbHVkaW5n
IHRoZSBoZWFkZXIsIGFuZCBub3QgYXQgdGhlIGVuZD8KCj4gIAo+ICAjaW5jbHVkZSA8Y29tcGF0
L3Bvc2l4L25ldGRiLmg+Cj4gIAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 07:52:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 07:52: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 1hg2j4-0002GU-GH; Wed, 26 Jun 2019 07:52:18 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg2j3-0002GP-Jt
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 07:52:17 +0000
X-Inumbo-ID: 50c1060e-97e7-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 50c1060e-97e7-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 07:52:16 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id n4so1522218wrs.3
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 00:52:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=tFW/6pYbXPafaXpE+9ObxglHzXq03+nm9PBuVl7vUD0=;
 b=uRRvrTwJ271t1VRgB806XelD2PjMCl6mybZfs308Wt+1sJiy8lxOumHp3svZs4+dh+
 2vwvpK9ZIH9Vdu3qPbiX0Z4bBqAEsGRHWJEqvgrh5QVgmeNU6TRVuUOcPibI535K9QEM
 +M4Kue0Xtr6fag/RgY4ijU5MsrTBtgkxkKkXsLgH8WuVwnRivfwiaa5vQgaewTABSGHi
 oDg4/9vyPcQx9jVvH0FypMgcn0zDslOknnP34cWNH5nDOzp7GnTPnZTRW7ZcFuPVpgtg
 iKB9s0ND/xW1AZ0DVqUYke05yphk1Fh2SpszhPkc2X8Arf+MmBfTQCO1pN5ZDQcsG1Hn
 Fbyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=tFW/6pYbXPafaXpE+9ObxglHzXq03+nm9PBuVl7vUD0=;
 b=MDCifCE0nfeT5RPLDD0fHzZufRn5d/pV9vHdSfZ6kKRIFcvcXbgPNR+hj4FsJWtqNr
 R6hvbriQ/bTnqNAo7bN81KbC7Mg/+qWLGCiOxHzizbAO+v/oxl3qDqWnTkt8AzgnNt7k
 FL961wQzoQuS4PB7RbFRggbfkSu/UGZTxCSjRfZ8Tu9PE+p5o+oMW/TqZq0flJOkjHo9
 scM+BusQDTTdg8GXogG1/F3FZAbmE+HP+0aioYCm9eq7Vo/qQnRTjN2CJrusZ6CPaGDG
 8YI701XKA4Khg3c+koj521VZl6DWek4OuI4KO/ALL6Sbl7Uy8SkSUvuUEwVJzPE0sfB6
 U2eA==
X-Gm-Message-State: APjAAAVvtSIRiZ+6zontmWnAI86GqBKb8wBWTrpzZQLmViwhUGhrfo8x
 XiWAOK9OESdrBODMviXkoQ8=
X-Google-Smtp-Source: APXvYqwFUB9wK88DGg7vWUPvAZeg79z64tPomzm0BtOLdWZBTFav76ybfq/XZPCHxOxecRBR+eRJRg==
X-Received: by 2002:a5d:6b12:: with SMTP id v18mr2415672wrw.306.1561535535612; 
 Wed, 26 Jun 2019 00:52:15 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id a7sm17152331wrs.94.2019.06.26.00.52.14
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 00:52:15 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
 <20190626015438.11046-2-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <565c92e6-332e-f585-9e0e-8b0604271044@gmail.com>
Date: Wed, 26 Jun 2019 10:52:14 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015438.11046-2-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH 1/7] Fix poll() ret
 variable type and select() maxfd calculation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

VGhhbmtzLCBNaWhhaSEKClJldmlld2VkLWJ5OiBDb3N0aW4gTHVwdSA8Y29zdGluLmx1cHVAY3Mu
cHViLnJvPgoKT24gNi8yNi8xOSA0OjU0IEFNLCBNaWhhaSBQb2dvbmFydSB3cm90ZToKPiBQb2xs
IHJldCB2YXJpYWJsZSBtdXN0IGJlIGRlY2xhcmVkIGFzIGludAo+IFNlbGVjdCBtdXN0IGNhbGN1
bGF0ZSBtYXhmZCBhcyB0aGUgbWF4aW11bSBiZXR3ZWVuIGx3aXAgZmlsZSBkZXNjcmlwdG9ycwo+
IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNv
bT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMTIgKysrKysrKystLS0tCj4gIDEgZmlsZSBjaGFuZ2Vk
LCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3NvY2tl
dHMuYyBiL3NvY2tldHMuYwo+IGluZGV4IDc3MjM1ZTkuLmU5NTc1OGQgMTAwNjQ0Cj4gLS0tIGEv
c29ja2V0cy5jCj4gKysrIGIvc29ja2V0cy5jCj4gQEAgLTMzNSw3ICszMzUsOCBAQCBFWElUOgo+
ICAKPiAgaW50IHBvbGwoc3RydWN0IHBvbGxmZCBmZHNbXSwgbmZkc190IG5mZHMsIGludCB0aW1l
b3V0KQo+ICB7Cj4gLQl1bnNpZ25lZCBpbnQgaSwgcmV0Owo+ICsJaW50IHJldDsKPiArCXVuc2ln
bmVkIGludCBpOwo+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGU7Cj4gIAlzdHJ1Y3QgcG9s
bGZkIGx3aXBfZmRzW25mZHNdOwo+ICAKPiBAQCAtMzk1LDcgKzM5Niw2IEBAIGludCBzZWxlY3Qo
aW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNl
cHRmZHMsCj4gIAltYXhmZCA9IDA7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgbmZkczsgaSsrKSB7Cj4g
IAkJaWYgKHJlYWRmZHMgJiYgRkRfSVNTRVQoaSwgcmVhZGZkcykpIHsKPiAtCQkJbWF4ZmQgPSBp
Owo+ICAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7Cj4gIAkJCWlmIChQVFJJU0VSUihm
aWxlKSkgewo+ICAJCQkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiBAQCAtNDA1LDExICs0
MDUsMTIgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndy
aXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJCVNPQ0tfTkVUX1NFVF9FUlJOTyhQVFIy
RVJSKGZpbGUpKTsKPiAgCQkJCWdvdG8gRVhJVDsKPiAgCQkJfQo+ICsJCQlpZiAobWF4ZmQgPCBm
aWxlLT5zb2NrX2ZkKQo+ICsJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwo+ICAJCQlGRF9TRVQo
ZmlsZS0+c29ja19mZCwgJnJkKTsKPiAgCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICAJCX0KPiAgCQlpZiAod3JpdGVmZHMg
JiYgRkRfSVNTRVQoaSwgd3JpdGVmZHMpKSB7Cj4gLQkJCW1heGZkID0gaTsKPiAgCQkJZmlsZSA9
IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwo+ICAJCQlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiAgCQkJ
CUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4gQEAgLTQxOSwxMSArNDIwLDEyIEBAIGludCBz
ZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0
ICpleGNlcHRmZHMsCj4gIAkJCQlTT0NLX05FVF9TRVRfRVJSTk8oUFRSMkVSUihmaWxlKSk7Cj4g
IAkJCQlnb3RvIEVYSVQ7Cj4gIAkJCX0KPiArCQkJaWYgKG1heGZkIDwgZmlsZS0+c29ja19mZCkK
PiArCQkJCW1heGZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQs
ICZ3cik7Cj4gIAkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiAgCQl9Cj4gIAkJaWYgKGV4Y2VwdGZkcyAmJiBGRF9JU1NFVChp
LCBleGNlcHRmZHMpKSB7Cj4gLQkJCW1heGZkID0gaTsKPiAgCQkJZmlsZSA9IHNvY2tfbmV0X2Zp
bGVfZ2V0KGkpOwo+ICAJCQlpZiAoUFRSSVNFUlIoZmlsZSkpIHsKPiAgCQkJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCj4gQEAgLTQzMyw2ICs0MzUsOCBAQCBpbnQgc2VsZWN0KGludCBuZmRz
LCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+
ICAJCQkJU09DS19ORVRfU0VUX0VSUk5PKFBUUjJFUlIoZmlsZSkpOwo+ICAJCQkJZ290byBFWElU
Owo+ICAJCQl9Cj4gKwkJCWlmIChtYXhmZCA8IGZpbGUtPnNvY2tfZmQpCj4gKwkJCQltYXhmZCA9
IGZpbGUtPnNvY2tfZmQ7Cj4gIAkJCUZEX1NFVChmaWxlLT5zb2NrX2ZkLCAmeGMpOwo+ICAJCQl2
ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50
ICovCj4gIAkJfQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 08:28:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 08:28: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 1hg3IC-00057L-Qh; Wed, 26 Jun 2019 08:28:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg3IA-00057G-Vy
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 08:28:35 +0000
X-Inumbo-ID: 624198f5-97ec-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 624198f5-97ec-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 08:28:33 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id z23so1114825wma.4
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 01:28:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=lDDkzzTZNB8REMZuRWOh+AahFvi0nzgyXzFyontR7ZA=;
 b=Evtjp11lQxhbKiNGhdRL/770YSPnTfsmUyjMU0GIOL2z2jTllH935gE7/UElA/wfsq
 HBwlyLQnaWRmrmRol5SwfYEYwPEcHcOUFJW2nIcgJmEWFxJlWn1qhiJkhv0XT4EimSmd
 sPZmpo7Un1L2dCeADxgY2H9gJm9NVliAEDnetsNqtyBOG/ZBC6PdJ4Sd4zmcij6yArtr
 RU8q0CE0OMfvl107QYKuhWq/XKUVqEdkgvk/MS1dNCwjeSnVBs/BzHMHgWUWjehhi8PV
 SXQugiEE7ak/ozRVYLTDg5dJ2CviAODfejIwBkqfWnDlpA44Lr7PO3+MmQSoxOa/JHzP
 fuHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=lDDkzzTZNB8REMZuRWOh+AahFvi0nzgyXzFyontR7ZA=;
 b=jrj6tZA+MajFQgYJn9GmswH1aoct6jocRq3UxAW77OLFMXTTAl+mM4mYxua24hzqge
 D2cQVe7I3XvNqxOxJFLPam4sanc5xGbXLu/EKPNaM9Tz9zKiQSUFUS2nbSVQeFLIKFX/
 lIhSg8mtIOk3wob9kqHSy4fd9+MsmBAFiEzgsWDjXxzFWmx2IMn+w5ZCeiCTpy0hKVAY
 P8fevX7jHUUfjDXn1elYpZ1fAmLNcVKB0ShYpdFCEEkxC8/2/D3Yb4f/3MFdbAnZXSoP
 GV9Qi3nLHvcfaa2TMKWhqP2OW9boaJ/rXe+kFLBAJ08s6l7ZWbV7FVTc5wdCPWiLXJu3
 nh4Q==
X-Gm-Message-State: APjAAAUkeG587bPdKdTevdQ0D+5GPmM5F85RjqKiuzq7fgHr+AuC4fJx
 /mBPD/poxIp4e6mDoN/p39w=
X-Google-Smtp-Source: APXvYqwadtS6NZz0jh9fdp/DCQ7J/U+y3QvPZ/o7EOMd1gAVePEoAOmS4CBbeFf5c5YmZ6F8oNKXeA==
X-Received: by 2002:a7b:c8c3:: with SMTP id f3mr1186862wml.124.1561537712419; 
 Wed, 26 Jun 2019 01:28:32 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id h1sm15717557wrt.20.2019.06.26.01.28.31
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 01:28:32 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015442.11104-1-pogonarumihai@gmail.com>
 <20190626015442.11104-2-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <f4c9f3d8-ef5b-c22f-2e02-ee470a0d8b09@gmail.com>
Date: Wed, 26 Jun 2019 11:28:31 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015442.11104-2-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH 1/3] Fix dentry referecing
 and file closing
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpBcyBhIGdlbmVyYWwgcnVsZSwgd2UgYXJlIHBlZGFudGljIHdoZW4gcmV2aWV3
aW5nIHBhdGNoZXMgZm9yIHRoZSBrZXJuZWwKYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgc2lkZS1l
ZmZlY3RzIGFuZCBlYWNoIGNoYW5nZXMgc2hvdWxkIGJlIHByb3Blcmx5CmFuZCBleHRlbnNpdmVs
eSBleHBsYWluZWQuIFRoYXQgYmVpbmcgc2FpZCwgbW9zdCBvZiBteSBjb21tZW50cyBmb3IgdGhp
cwpzZXJpZXMgYXJlIGFib3V0IHRoZSBwcmVzZW50YXRpb24vZm9ybWF0IG9mIHRoZXNlIHBhdGNo
ZXMgKGFib3V0IGhvdwp0aGV5IGFyZSBvcmdhbml6ZWQsIGFib3V0IGNvbW1lbnRzLCBldGMuKS4K
ClBsZWFzZSBzZWUgaW5saW5lLgoKT24gNi8yNi8xOSA0OjU0IEFNLCBNaWhhaSBQb2dvbmFydSB3
cm90ZToKPiBJbmNyZWFzZSB0aGUgcmVmY291bnQgb2YgdGhlIGRlbnRyeSB3aGVuIG9wZW5pbmcg
YSBmaWxlCj4gRGVjcmVhc2UgdGhlIHJlZmNvdW50IG9mIHRoZSBkZW50cnkgYW5kIGZyZWUgdGhl
IGZpbGUgb24gY2xvc2luZwo+IAo+IE1ha2UgZmRyb3AgcmV0dXJuIDAgaWYgdGhlIGZpbGUncyBy
ZWZjb3VudCBoaXQgMCBvciAxIG90aGVyd2lzZS4KPiBUaGlzIGlzIHRoZSBPU3YgYmVoYXZpb3Vy
IGFuZCB0aGUgcmV0dXJuIG9mIGFuIGVycm9yIGZyb20gZmRyb3AKPiBpcyBuZXZlciBjaGVja2Vk
LgoKRnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgdGhpcyBwYXRjaCBmaXhlcyBhIHByb3BlciBoYW5k
bGluZyBvZiBkZW50cmllcwpyZWZjb3VudHMgd2hlbiBpdCBjb21lcyB0byB2ZnNjb3JlIGZpbGUg
YWJzdHJhY3Rpb24uIFRoaXMgc2hvdWxkIGJlIHRoZQptYWluIGlkZWEgaW4gdGhlIGNvbW1pdCBt
ZXNzYWdlLCB0aGUgZGV0YWlscyB5b3Ugc3RhdGVkIGhlcmUgY29tZSBhZnRlcgp0aGF0LiBJbiBj
b25jbHVzaW9uLCB0aGlzIGNvbW1pdCBtZXNzYWdlIGhhcyB0byBiZSBhIGJpdCBtb3JlIGRldGFp
bGVkCmdpdmVuIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGEgYml0IHRyaWNreSBhbmQgZGlmZmljdWx0
IHRvIHVuZGVyc3RhbmQgYXQKdGhlIGJlZ2lubmluZy4KCj4gCj4gU2lnbmVkLW9mZi1ieTogTWlo
YWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgo+IC0tLQo+ICBsaWIvdmZzY29y
ZS9maWxlLmMgICAgIHwgMTggKysrKysrKysrKysrKystLS0tCj4gIGxpYi92ZnNjb3JlL2ZvcHMu
YyAgICAgfCAgNyArKysrLS0tCj4gIGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgfCAgMyArKysKPiAg
MyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+IAo+IGRp
ZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29yZS9maWxlLmMKPiBpbmRl
eCBlNTZmMTZkYy4uZTc2MjdlOTYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZmlsZS5jCj4g
KysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCj4gQEAgLTQyLDE1ICs0MiwyNSBAQAo+ICAKPiAgaW50
IGZkcm9wKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQo+ICB7Cj4gLQlpbnQgcmV0ID0gMDsKPiAg
CWludCBwcmV2ID0gdWthcmNoX2RlYygmZnAtPmZfY291bnQpOwo+ICAKPiAgCWlmIChwcmV2ID09
IDApCj4gIAkJVUtfQ1JBU0goIlVuYmFsYW5jZWQgZmhvbGQvZmRyb3AiKTsKPiAgCj4gLQlpZiAo
cHJldiA9PSAxKQo+IC0JCXJldCA9IHZmc19jbG9zZShmcCk7Cj4gLQlyZXR1cm4gcmV0Owo+ICsJ
aWYgKHByZXYgPT0gMSkgewo+ICsJCS8qCj4gKwkJICogd2UgZnJlZSB0aGUgZmlsZSBldmVuIGlu
IGNhc2Ugb2YgYW4gZXJyb3IKPiArCQkgKiBzbyByZWxlYXNlIHRoZSBkZW50cnkgdG9vCj4gKwkJ
ICovCj4gKwkJaWYgKHZmc19jbG9zZShmcCkgIT0gMCkKPiArCQkJZHJlbGUoZnAtPmZfZGVudHJ5
KTsKPiArCj4gKwkJZnJlZShmcCk7Cj4gKwo+ICsJCXJldHVybiAxOwo+ICsJfQo+ICsKPiArCXJl
dHVybiAwOwo+ICB9Cj4gIHZvaWQgZmhvbGQoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCj4gIHsK
PiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGliL3Zmc2NvcmUvZm9wcy5jCj4g
aW5kZXggOGY1YzJlMWIuLjBjZWYyYzEyIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2ZvcHMu
Ywo+ICsrKyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwo+IEBAIC01Myw5ICs1MywxMCBAQCBpbnQgdmZz
X2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQo+ICAJaWYgKGVycm9yKQo+ICAJCXJldHVy
biBlcnJvcjsKPiAgCj4gLQkvKiBEZW50cnkgc3RheXMgZm9yZXZlciBpbiB0aGUgZGVudHJ5IGNh
Y2hlLiBVbmxlc3MgdGhlCj4gLQkgKiBmaWxlL2RpcmVjdG9yeSBpdCByZWZlcnMgdG8gZ2V0cyBk
ZWxldGVkL3JlbmFtZWQgKi8KPiArCS8qIFJlbGVhc2UgdGhlIGRlbnRyeSAqLwoKV2UgaGFkIGEg
c3Ryb25nIHN0YXRlbWVudCBoZXJlIGFib3V0IG5vdCBkZWxldGluZyBkZW50cmllcyBhbmQgaXQn
cwpvdmVyd3JpdHRlbiBieSB0aGlzIHBhdGNoLiBJIGRvbid0IHRoaW5rIHRoYXQgYXQgdGhlIHRp
bWUgd2hlbiB0aGlzIHdhcwppbnRyb2R1Y2VkLCB0aGUgYXV0aG9ycyB0aG91Z2h0IGFib3V0IHNv
Y2tldHMuIFRoZXJlZm9yZSB3ZSBzaG91bGQKb3V0bGluZSBob3cgdGhpcyBjaGFuZ2UgaXMgcmVs
YXRlZCB0byBzb2NrZXRzLCB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhpcwpleHBsYW5hdGlvbiBpbiB0
aGUgY29tbWl0IG1lc3NhZ2UuCgo+ICsJZHJlbGUoZnAtPmZfZGVudHJ5KTsKPiAgCWZwLT5mX2Rl
bnRyeSA9IE5VTEw7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTEwMyw3ICsxMDQs
NyBAQCBpbnQgdmZzX3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1
aW8sIGludCBmbGFncykKPiAgCQlpb2ZsYWdzIHw9IElPX1NZTkM7Cj4gIAo+ICAJaWYgKChmbGFn
cyAmIEZPRl9PRkZTRVQpID09IDApCj4gLQkgICAgICAgIHVpby0+dWlvX29mZnNldCA9IGZwLT5m
X29mZnNldDsKPiArCQl1aW8tPnVpb19vZmZzZXQgPSBmcC0+Zl9vZmZzZXQ7Cj4gIAo+ICAJZXJy
b3IgPSBWT1BfV1JJVEUodnAsIHVpbywgaW9mbGFncyk7Cj4gIAlpZiAoIWVycm9yKSB7Cj4gZGlm
ZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5j
Cj4gaW5kZXggMzg1ZDkwYzAuLmY5NjY2YzRjIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3N5
c2NhbGxzLmMKPiArKysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gQEAgLTIwNCw2ICsyMDQs
OCBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3Qg
dmZzY29yZV9maWxlICoqZnBwKQo+ICAJfQo+ICAJZnAtPmZfZmxhZ3MgPSBmbGFnczsKPiAgCj4g
KwkvLyBPU3Ygd2FzIHVzaW5nIGEgaW50cnVzaXZlX3B0ciB3aGljaCB3YXMgaW5jcmVhc2luZyB0
aGUgcmVmY291bnQKPiArCWRyZWYoZHApOwo+ICAJLy8gY2hhbmdlIHRvIHN0ZDo6bW92ZSBvbmNl
IGRwIGlzIGEgZGVudHJ5X3JlZgo+ICAJZnAtPmZfZGVudHJ5ID0gZHA7Cj4gIAlkcCA9IE5VTEw7
Cj4gQEAgLTIxNCw2ICsyMTYsNyBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1v
ZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxlICoqZnBwKQo+ICAJCS8vIE5vdGUgZGlyZWN0
IGRlbGV0ZSBvZiBmcCBpbnN0ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCj4gIAkJLy8g
cmV0dXJuZWQgc28gY2Fubm90IGJlIGluIHVzZSwgYW5kIGJlY2F1c2UgaXQgd2Fzbid0IG9wZW5l
ZAo+ICAJCS8vIGl0IGNhbm5vdCBiZSBjbG9zZSgpZWQuCj4gKwkJZHJlbGUoZnAtPmZfZGVudHJ5
KTsKPiAgCQlmcmVlKGZwKTsKPiAgCQlyZXR1cm4gZXJyb3I7Cj4gIAl9Cj4gCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 08:36:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 08:36: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 1hg3PO-0005oE-CW; Wed, 26 Jun 2019 08:36:02 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg3PM-0005o9-Pf
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 08:36:00 +0000
X-Inumbo-ID: 6be25f42-97ed-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6be25f42-97ed-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 08:35:59 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id f9so1627902wre.12
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 01:35:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=H1jmtRnm91pVcI/JAJp5YjAfGSgf4ZOGpQLs89Rg2tc=;
 b=PC/z9RHdGL768Ymzd36nzps7VdWo4lBBwDdoY1yNMvqlYGPqscKEJY1MuVBwituHgH
 cTvoFSJNM/woEsLCLclz6SwgxCF/caSxEnlhBZeD+0JTsaQZQHfadHdTk9ehZjMh5uX4
 ziSEE4RQEyeNM9D/ktjtorfvAJCshdTLeNfcnl7uJkDDFaDHheQtyi/JU2+DQ76VO3Lx
 w+EdI1IaI1sxyUiazgbexhjXRZmp8SOgN7Dgl2U2tvlgCP74ZuJplSrFGY5kUJ7Uhjbn
 rO8dAWl1ueRxux+U+6sXp0JcrqTjKY87WFJe1SqQ5VmrCFl+Hs35Sm10gwN5y1TKGE8q
 rOHg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=H1jmtRnm91pVcI/JAJp5YjAfGSgf4ZOGpQLs89Rg2tc=;
 b=M0t2OZr1sUABxEKaX4elbx1QpUJPkuOyzHXWsIK7NW0GlQVviYBH0Ao0jnSTmQXWKO
 ToN2gt0Xy7icJ1XMHkTqZbozXQZ3gKywR/4ex5XyPw/AVR4W1gu4G9gFVNB3Jvoe8pzD
 Wtyc6s3SOou4WVRaxFAyCUWPAsLfLir48yU/VamuDJva6uayQw0Ma0bhD6v+28tBJ0Pb
 xVySug905mm6Wv3ZWm4G7GsKOS/iV2iEJB/u2CqPXubrVgBWGsV4sl2a21ancdPXts2k
 YkEDuEpFKWIiWpiLhnl6UlWzR37uYjz9fIvC9P/kwr03PLT97mN9dMlO8N2BCZ367eMH
 hCKw==
X-Gm-Message-State: APjAAAWROfbwrlPCHMD2Xglj7B/WQpTPMUnALy77h5/iI2ujda33cGLy
 lr4RgU8SWGLbptIzCfurI4g=
X-Google-Smtp-Source: APXvYqxZLB8o+dYKQ92PLFzjOF9r4lB7nBa5DOmPc1B5PlAStIDbLzFTOSDvXezK1FIFVZS48oivIg==
X-Received: by 2002:adf:e88e:: with SMTP id d14mr2405409wrm.189.1561538158084; 
 Wed, 26 Jun 2019 01:35:58 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id m9sm17483620wrr.14.2019.06.26.01.35.57
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 01:35:57 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015442.11104-1-pogonarumihai@gmail.com>
 <20190626015442.11104-3-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <5748106e-404a-391e-c426-a728a4a64c76@gmail.com>
Date: Wed, 26 Jun 2019 11:35:57 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015442.11104-3-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH 2/3] Check for NULL
 reference on vfscore_put_fd(). Add asserts to fdrop()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpBcyBhIGdlbmVyYWwgcnVsZSwgd2Ugc2tpcCBhZGRpbmcgY29tbWl0IG1lc3Nh
Z2VzIHdoZW4gdGhlIGNvbW1pdHMgYXJlCnNtYWxsIGVub3VnaCBhbmQgc2VsZiBleHBsYW5hdG9y
eSwgYWxtb3N0IHRyaXZpYWwuIFRoaXMgaXMgbm90IHRoZSBjYXNlCmZvciB0aGUgY3VycmVudCBw
YXRjaC4KCldlIGhhdmUgMiBwYXRjaGVzIGluIDEgaGVyZS4gVGhlIGZpcnN0IG9uZSBjaGVja3Mg
Zm9yIE5VTEwgYmVmb3JlCmRyb3BwaW5nIHRoZSByZWZlcmVuY2UgYW5kIGl0IHNob3VsZCBoYXZl
IGEgY29tbWl0IG1lc3NhZ2Ugd2hpY2ggbWF5CnJlcGVhdCB0aGUgaWRlYSBmcm9tIHRoZSBjb21t
ZW50IChub3QgbmVjZXNzYXJpbHkgd2l0aCB0aGUgc2FtZSB3b3JkcywKbWF5YmUgYSBiaXQgbW9y
ZSBkZXRhaWxlZCkuIFRoZSBzZWNvbmQgcGF0Y2ggc2hvdWxkIGFjdHVhbGx5IGJlIGFib3V0CmRl
Y3JlbWVudGluZyB0aGUgcmVmY291bnQgd2hlbiBkcm9wcGluZyByZWZlcmVuY2UgZm9yIHZmc2Nv
cmUgZmlsZQphYnN0cmFjdGlvbi4KCkJvdGggcGF0Y2hlcyBzaG91bGQgaGF2ZSBjb21taXQgbWVz
c2FnZXMgd2l0aCBleHBsYW5hdGlvbiBhYm91dCB0aGUgY2hhbmdlcy4KCk9uIDYvMjYvMTkgNDo1
NCBBTSwgTWloYWkgUG9nb25hcnUgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25h
cnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgo+IC0tLQo+ICBsaWIvdmZzY29yZS9mZC5jICAg
fCA3ICsrKysrKy0KPiAgbGliL3Zmc2NvcmUvZmlsZS5jIHwgNyArKysrKystCj4gIDIgZmlsZXMg
Y2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0
IGEvbGliL3Zmc2NvcmUvZmQuYyBiL2xpYi92ZnNjb3JlL2ZkLmMKPiBpbmRleCBmOGIyNDAyMC4u
MDEwMjVhNDYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZmQuYwo+ICsrKyBiL2xpYi92ZnNj
b3JlL2ZkLmMKPiBAQCAtODgsNyArODgsMTIgQEAgdm9pZCB2ZnNjb3JlX3B1dF9mZChpbnQgZmQp
Cj4gIAlmZHRhYmxlLmZpbGVzW2ZkXSA9IE5VTEw7Cj4gIAl1a3BsYXRfbGNwdV9yZXN0b3JlX2ly
cWYoZmxhZ3MpOwo+ICAKPiAtCWZkcm9wKGZwKTsKPiArCS8qCj4gKwkgKiBTaW5jZSB3ZSBjYW4g
YWxsb2MgYSBmZCB3aXRob3V0IGFzc2lnbmluZyBhCj4gKwkgKiB2ZnNmaWxlIHdlIG11c3QgcHJv
dGVjdCBhZ2FpbnN0IE5VTEwgcHRyCj4gKwkgKi8KPiArCWlmIChmcCkKPiArCQlmZHJvcChmcCk7
Cj4gIH0KPiAgCj4gIGludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBzdHJ1Y3QgdmZzY29y
ZV9maWxlICpmaWxlKQo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZz
Y29yZS9maWxlLmMKPiBpbmRleCBlNzYyN2U5Ni4uYmM4YjBkYzggMTAwNjQ0Cj4gLS0tIGEvbGli
L3Zmc2NvcmUvZmlsZS5jCj4gKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCj4gQEAgLTQyLDcgKzQy
LDEyIEBACj4gIAo+ICBpbnQgZmRyb3Aoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCj4gIHsKPiAt
CWludCBwcmV2ID0gdWthcmNoX2RlYygmZnAtPmZfY291bnQpOwo+ICsJaW50IHByZXY7Cj4gKwo+
ICsJVUtfQVNTRVJUKGZwKTsKPiArCVVLX0FTU0VSVChmcC0+Zl9jb3VudCA+IDApOwo+ICsKPiAr
CXByZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7Cj4gIAo+ICAJaWYgKHByZXYgPT0gMCkK
PiAgCQlVS19DUkFTSCgiVW5iYWxhbmNlZCBmaG9sZC9mZHJvcCIpOwo+IAoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 08:40:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 08:40: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 1hg3Tc-0006S9-Qv; Wed, 26 Jun 2019 08:40:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg3Tb-0006S4-0u
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 08:40:23 +0000
X-Inumbo-ID: 089b942d-97ee-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 089b942d-97ee-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 08:40:22 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id u8so1167188wmm.1
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 01:40:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=NGf5rskGQgMFkYlTjC8Rd6B4PAySGb/CxcQUhNOd3xc=;
 b=jGGdsObfnjo/fiDqFh93OsQtC2Er7mYock3H3Ov9P0nhLMDmYR2WL2z+jG9ZwTHfJo
 oQ2ZWbZ2lWIpG+PPPcuVQvLo8/GXbC5LFCq7lLugBGqg3NUIht2PaxyFoDCc2k7sIeie
 Gkwwfhc/jiMilxN3lIDPEBqlbSZBvMIQGd6V9C9/EZ309+mCC2NYV5kyCcLswzGC9JVr
 e7IkoywTDkroM2Th2VRvRnNsGevoJdXeGBESBgykfUE1670gsKeO7HRmB5zP7pLw1ywH
 0K4omQj/8rhQN4SlUQm8N1HFZNEwmOHkkOR33h7JxZayZv9qurPUD7Lt00Eqc8NI7AYf
 PnXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=NGf5rskGQgMFkYlTjC8Rd6B4PAySGb/CxcQUhNOd3xc=;
 b=YYag1NRIaOIAa7KRktGSARLHnihqVXQnhMZ44YY40O1689kl/bMVseNPNcfpT/tT9O
 Cs1i9dvf7BNftIuYYNMHWXQ2Lbo/ftUvbemwmOE+dXRXWjLid+jcuninaklpE7EjDlBt
 /3MTUo6MRryHKGWBLPxHy9Kdr+/Zz4RmQejvRQa3UAYODIo2BYK84SpmSK11nQNJt69V
 2h7CckpFormV6wMvEJHoK2/3sRFtvQ5gnNl/Sg9Fy4BxnCEczRKVt+uVloLVN8hbALJz
 +F6HRrme26mRp7gdUiNq6ff3sXn3OdphBPlkES+9RI0IUzhpnL+SE5yh2i3E5DTWpI1F
 ePbw==
X-Gm-Message-State: APjAAAWYT8IxJjglOwWK7xExzRuekYzyRPcfy4kZ4bMIxaQLaOkpZ3Om
 T9mZV+xlUcZPp6QfQM6NUrg=
X-Google-Smtp-Source: APXvYqws3WexXbQWe0eS7RE5OrsrUfJkA/2Mg+vFQocKvt7t1Cna8TsjJ6yNFxdHgxjzY3EP6vulaQ==
X-Received: by 2002:a1c:6c0a:: with SMTP id h10mr1813324wmc.40.1561538421015; 
 Wed, 26 Jun 2019 01:40:21 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id d201sm1090683wmd.19.2019.06.26.01.40.20
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 01:40:20 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015442.11104-1-pogonarumihai@gmail.com>
 <20190626015442.11104-4-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <b605ca0c-a01a-6473-75bb-fc40e3f42021@gmail.com>
Date: Wed, 26 Jun 2019 11:40:19 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015442.11104-4-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH 3/3] Provide functions used
 by LWIP patch
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpJZiBJIHdlcmUgdmVyeSBwZWRhbnRpYyBJIHdvdWxkIHNheSB0aGF0IGhlcmUg
d2UgaGF2ZSAyLWluLTEgYWdhaW4uIEJ1dApJIHVuZGVyc3RhbmQgYSBiaXQgd2hhdCB5b3UgbWVh
bnQgd2l0aCB0aGlzIGNoYW5nZXMgYW5kIEkgd291bGQgcGljawphbm90aGVyIGNvbW1pdCB0aXRs
ZSBmb3IgaXQsIGUuZy4gIkV4cG9zZSBkZW50cnkgQVBJIHByb3Blcmx5IiwgYmVjYXVzZQp0aGF0
J3Mgd2hhdCB0aGlzIHBhdGNoIGRvZXMuIEFuZCB0aGVzZSBjaGFuZ2VzIGFyZSBub3QgbmVlZGVk
IG9ubHkgYnkKTFdJUCwgYnV0IGJ5IGFsbCBvdGhlciBmaWxlIGRlc2NyaXB0b3IgdHlwZXMgdG9v
LgoKQW5kIHBsZWFzZSBhZGQgYSBjb21taXQgbWVzc2FnZSBzYXlpbmcgdGhhdCBpdCBtYWtlcyBt
b3JlIHNlbnNlIHRvIGhhdmUKdGhlIGRlbnRyeSBmdW5jdGlvbnMgaW4gZGVudHJ5LmguCgpPbiA2
LzI2LzE5IDQ6NTQgQU0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IE1vdmUgZGVudHJ5IGZ1bmN0
aW9ucyBpbnNpZGUgZGVudHJ5LmggaGVhZGVyIGFuZCBhZGQgdGhlIG9uZXMKPiBuZWVkZWQgYnkg
c29ja2V0cy5jIGluIExXSVAgaW4gZXhwb3J0c3ltcwo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFp
IFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgbGliL3Zmc2NvcmUv
ZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgMyArKysKPiAgbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2RlbnRyeS5oIHwgNyArKysrKysrCj4gIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAg
ICAgICAgICAgICB8IDYgLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygr
KSwgNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3lt
cy51ayBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKPiBpbmRleCBkYTdmYmFlYS4uODIyZTZl
Y2MgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51awo+ICsrKyBiL2xpYi92
ZnNjb3JlL2V4cG9ydHN5bXMudWsKPiBAQCAtNzUsMyArNzUsNiBAQCByZWFkbGluawo+ICBmYWxs
b2NhdGUKPiAgbHNlZWsKPiAgdWtfc3lzY2FsbF93cml0ZXYKPiArZGVudHJ5X2FsbG9jCj4gK2Ry
ZWxlCj4gK3ZyZWxlCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9k
ZW50cnkuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+IGluZGV4IDg1
ZjM3YWI3Li4wYTM4NDAyOCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2Nv
cmUvZGVudHJ5LmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5LmgK
PiBAQCAtNTQsNCArNTQsMTEgQEAgc3RydWN0IGRlbnRyeSB7Cj4gIAlzdHJ1Y3QgdWtfbGlzdF9o
ZWFkIGRfY2hpbGRfbGluazsKPiAgfTsKPiAgCj4gK3N0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxv
YyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIg
KnBhdGgpOwo+ICtzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAs
IGNoYXIgKnBhdGgpOwo+ICt2b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1
Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpOwo+ICt2b2lkIGRlbnRyeV9yZW1vdmUo
c3RydWN0IGRlbnRyeSAqZHApOwo+ICt2b2lkIGRyZWYoc3RydWN0IGRlbnRyeSAqZHApOwo+ICt2
b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKTsKPiArCj4gICNlbmRpZiAvKiBfT1NWX0RFTlRS
WV9IICovCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZz
LmgKPiBpbmRleCBmZDYwZGVjNy4uZmI1NzQzNWYgMTAwNjQ0Cj4gLS0tIGEvbGliL3Zmc2NvcmUv
dmZzLmgKPiArKysgYi9saWIvdmZzY29yZS92ZnMuaAo+IEBAIC0xMzQsMTIgKzEzNCw2IEBAIGlu
dAkgdmZzX2RuYW1lX2NvcHkoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6
ZSk7Cj4gIAo+ICBpbnQJIGZzX25vb3Aodm9pZCk7Cj4gIAo+IC1zdHJ1Y3QgZGVudHJ5ICpkZW50
cnlfYWxsb2Moc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25z
dCBjaGFyICpwYXRoKTsKPiAtc3RydWN0IGRlbnRyeSAqZGVudHJ5X2xvb2t1cChzdHJ1Y3QgbW91
bnQgKm1wLCBjaGFyICpwYXRoKTsKPiAtdm9pZCBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpk
cCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKTsKPiAtdm9pZCBkZW50cnlf
cmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKTsKPiAtdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkgKmRw
KTsKPiAtdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCk7Cj4gIHZvaWQgZGVudHJ5X2luaXQo
dm9pZCk7Cj4gIAo+ICBpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKTsKPiAK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 08:46:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 08:46: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 1hg3Z6-0006YN-Bx; Wed, 26 Jun 2019 08:46: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=AcfF=UZ=neclab.eu=charalampos.mainas@srs-us1.protection.inumbo.net>)
 id 1hg3Z5-0006YI-5g
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 08:46:03 +0000
X-Inumbo-ID: d0a9e57e-97ee-11e9-9e26-9f903cd6e5c6
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d0a9e57e-97ee-11e9-9e26-9f903cd6e5c6;
 Wed, 26 Jun 2019 08:45:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B6C68F203B;
 Wed, 26 Jun 2019 10:45:56 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id bN_KaXfU8QDM; Wed, 26 Jun 2019 10:45:56 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from Oberon.office.hd (Oberon.office.hd [192.168.24.90])
 (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 857EAF203A
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 10:45:54 +0200 (CEST)
Received: from N-1120.office.hd (192.168.24.96) by Oberon.office.hd
 (192.168.24.90) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 26 Jun
 2019 10:45:54 +0200
From: Charalampos Mainas <Charalampos.Mainas@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 26 Jun 2019 10:45:41 +0200
Message-ID: <20190626084543.18989-1-Charalampos.Mainas@neclab.eu>
X-Mailer: git-send-email 2.17.1
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To Oberon.office.hd
 (192.168.24.90)
Subject: [Minios-devel] [UNIKRAFT/LIBUCONTEXT PATCH 0/2] Initial port of
 libucontext 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: Charalampos Mainas <Charalampos.Mainas@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGxpYnVjb250ZXh0IG9uIFVuaWtyYWZ0
LiBMaWJ1Y29udGV4dAppcyBhIGxpYnJhcnkgd2hpY2ggcHJvdmlkZXMgdGhlIDx1Y29udGV4dC5o
PiBBUEkgZnJvbSBvbGRlciBQT1NJWApyZXZpc2lvbnMuCgpDaGFyYWxhbXBvcyBNYWluYXMgKDIp
OgogIEFkZCBkb2N1bWVudGF0aW9uCiAgSW5pdGlhbCBwb3J0IG9mIGxpYnVjb250ZXh0IG9uIFVu
aWtyYWZ0ICh4ODYpCgogQ09ESU5HX1NUWUxFLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA1ICsrCiBDT05UUklCVVRJTkcubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDUgKysKIENvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSAr
KwogTUFJTlRBSU5FUlMubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKwog
TWFrZWZpbGUudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDg1ICsrKysrKysr
KysrKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA2ICsrCiBpbmNsdWRlL3Vjb250ZXh0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg
NzYgKysrKysrKysrKysrKysrKysrCiBwYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0LWhlYWRlci1m
aWxlLnBhdGNoIHwgMjkgKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygr
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0
IENPTlRSSUJVVElORy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51awogY3JlYXRlIG1v
ZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl
L3Vjb250ZXh0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0
LWhlYWRlci1maWxlLnBhdGNoCgotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 08:46:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 08:46: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 1hg3ZA-0006Yq-Dw; Wed, 26 Jun 2019 08:46:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=AcfF=UZ=neclab.eu=charalampos.mainas@srs-us1.protection.inumbo.net>)
 id 1hg3Z9-0006Yk-RN
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 08:46:07 +0000
X-Inumbo-ID: d40f7551-97ee-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d40f7551-97ee-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 08:46:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7782F10537F;
 Wed, 26 Jun 2019 10:46:02 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id NsLSMjkkXxCh; Wed, 26 Jun 2019 10:46:02 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from Oberon.office.hd (Oberon.office.hd [192.168.24.90])
 (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 5878910537D
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 10:46:02 +0200 (CEST)
Received: from N-1120.office.hd (192.168.24.96) by Oberon.office.hd
 (192.168.24.90) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 26 Jun
 2019 10:46:02 +0200
From: Charalampos Mainas <Charalampos.Mainas@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 26 Jun 2019 10:45:42 +0200
Message-ID: <20190626084543.18989-2-Charalampos.Mainas@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190626084543.18989-1-Charalampos.Mainas@neclab.eu>
References: <20190626084543.18989-1-Charalampos.Mainas@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To Oberon.office.hd
 (192.168.24.90)
Subject: [Minios-devel] [UNIKRAFT/LIBUCONTEXT PATCH 1/2] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Charalampos Mainas <Charalampos.Mainas@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>

LS0tCiBDT0RJTkdfU1RZTEUubWQgfCAgNSArKysrKwogQ09OVFJJQlVUSU5HLm1kIHwgIDUgKysr
KysKIE1BSU5UQUlORVJTLm1kICB8IDEyICsrKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgIHwg
IDYgKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcu
bWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNQUlOVEFJTkVSUy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFJFQURNRS5tZAoKZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElOR19TVFlMRS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2YyNDI3Ci0tLSAvZGV2L251
bGwKKysrIGIvQ09ESU5HX1NUWUxFLm1kCkBAIC0wLDAgKzEsNSBAQAorQ29kaW5nIFN0eWxlCis9
PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxl
IGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKZGlmZiAtLWdpdCBhL0NPTlRSSUJV
VElORy5tZCBiL0NPTlRSSUJVVElORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41MjNjMWIyCi0tLSAvZGV2L251bGwKKysrIGIvQ09OVFJJQlVUSU5HLm1kCkBAIC0wLDAg
KzEsNSBAQAorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0Cis9PT09PT09PT09PT09PT09PT09PT09
PQorCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1h
aW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KKwpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9N
QUlOVEFJTkVSUy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzMwMDgx
Ci0tLSAvZGV2L251bGwKKysrIGIvTUFJTlRBSU5FUlMubWQKQEAgLTAsMCArMSwxMiBAQAorTWFp
bnRhaW5lcnMgTGlzdAorPT09PT09PT09PT09PT09PQorCitGb3Igbm90ZXMgb24gaG93IHRvIHJl
YWQgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4K
K3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKKwlMSUJVQ09OVEVYVC1VTklLUkFGVAor
CU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KKwlNOglDaGFyYWxhbXBv
cyBNYWluYXMgPENoYXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+CisJTDoJbWluaW9zLWRldmVs
QGxpc3RzLnhlbi5vcmcKKwlGOiAqCisKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5t
ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODIzYzQzCi0tLSAvZGV2L251
bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNiBAQAorbGlidWNvbnRleHQgZm9yIHVuaWty
YWZ0Cis9PT09PT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAg
YXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gCitzdWJkaXJlY3Rvcnkg
b2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4KKwotLSAKMi4xNy4xCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 08:46:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 08:46: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 1hg3ZF-0006Zc-FY; Wed, 26 Jun 2019 08:46: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=AcfF=UZ=neclab.eu=charalampos.mainas@srs-us1.protection.inumbo.net>)
 id 1hg3ZE-0006ZT-Fk
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 08:46:12 +0000
X-Inumbo-ID: d84092ce-97ee-11e9-a2e3-174d9c83eea7
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d84092ce-97ee-11e9-a2e3-174d9c83eea7;
 Wed, 26 Jun 2019 08:46:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 83CE3F203B;
 Wed, 26 Jun 2019 10:46:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3Z5NmYjtMNGd; Wed, 26 Jun 2019 10:46:09 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from Oberon.office.hd (Oberon.office.hd [192.168.24.90])
 (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 5DE8FF203A
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 10:46:07 +0200 (CEST)
Received: from N-1120.office.hd (192.168.24.96) by Oberon.office.hd
 (192.168.24.90) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 26 Jun
 2019 10:46:07 +0200
From: Charalampos Mainas <Charalampos.Mainas@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Wed, 26 Jun 2019 10:45:43 +0200
Message-ID: <20190626084543.18989-3-Charalampos.Mainas@neclab.eu>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190626084543.18989-1-Charalampos.Mainas@neclab.eu>
References: <20190626084543.18989-1-Charalampos.Mainas@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To Oberon.office.hd
 (192.168.24.90)
Subject: [Minios-devel] [UNIKRAFT/LIBUCONTEXT PATCH 2/2] Initial port of
 libucontext on Unikraft (x86)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Charalampos Mainas <Charalampos.Mainas@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>

LS0tCiBDb25maWcudWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysK
IE1ha2VmaWxlLnVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysr
KysrKysrKysrKysrKysKIGluY2x1ZGUvdWNvbnRleHQuaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysKIHBhdGNoZXMvMDAwMS1BZGQtdWNvbnRleHQtaGVh
ZGVyLWZpbGUucGF0Y2ggfCAyOSArKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRp
b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TWFrZWZpbGUudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3Vjb250ZXh0LmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0LWhlYWRlci1maWxlLnBhdGNo
CgpkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmQwNjc1YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Db25maWcudWsKQEAg
LTAsMCArMSw1IEBACittZW51Y29uZmlnIExJQlVDT05URVhUCisgICAgICAgICAgIGJvb2wgInVj
b250ZXh0LmggQVBJIgorICAgICAgICAgICBkZWZhdWx0IG4KKwkgICBzZWxlY3QgTElCTkVXTElC
QworCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTA0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmls
ZS51awpAQCAtMCwwICsxLDg1IEBACisjICBsaWJta2wtZG5uIE1ha2VmaWxlLnVrCisjCisjICBB
dXRob3JzOiBDaGFyYWxhbXBvcyBNYWluYXMgPENoYXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+
CisjCisjICAgQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyAgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjICBhcmUgbWV0OgorIworIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAgMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworIyAgICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyMgIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyMgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisjICBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjICBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisjICBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhU
UkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisjCisKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgTGlicmFyeSByZWdpc3RyYXRpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisk
KGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVjb250ZXh0LCQoQ09ORklHX0xJQlVDT05URVhUKSkp
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCitMSUJVQ09OVEVYVF9WRVJTSU9OPWxpYnVjb250ZXh0LW1hc3RlcgorTElCVUNPTlRF
WFRfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9BZGVsaWVMaW51eC9saWJ1Y29udGV4dC9hcmNoaXZl
L21hc3Rlci56aXAKK0xJQlVDT05URVhUX0RJUj0kKExJQlVDT05URVhUX1ZFUlNJT04pCisKK0xJ
QlVDT05URVhUX1BBVENIRElSPSQoTElCVUNPTlRFWFRfQkFTRSkvcGF0Y2hlcworJChldmFsICQo
Y2FsbCBmZXRjaCxsaWJ1Y29udGV4dCwkKExJQlVDT05URVhUX1VSTCksbWFzdGVyLnppcCkpCisk
KGV2YWwgJChjYWxsIHBhdGNoLGxpYnVjb250ZXh0LCQoTElCVUNPTlRFWFRfUEFUQ0hESVIpLCQo
TElCVUNPTlRFWFRfRElSKSkpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEhlbHBlcnMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJVQ09OVEVYVF9TUkM9JChMSUJVQ09OVEVYVF9P
UklHSU4pLyQoTElCVUNPTlRFWFRfRElSKS9hcmNoL3g4Nl82NC8KKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgTGlicmFyeSBpbmNsdWRlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0NJ
TkNMVURFUy0kKENPTkZJR19MSUJVQ09OVEVYVCkgKz0gLUkkKExJQlVDT05URVhUX0JBU0UpL2lu
Y2x1ZGUgICAgICAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgR2xvYmFsIGZsYWdzCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1ha2Ug
dGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXIKK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51
c2VkLXBhcmFtZXRlciAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwgICAgICAgXAor
LVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJlbCAtV25vLWNoYXIt
c3Vic2NyaXB0cyAgICAgICAgICAgICBcCistV25vLXVudXNlZC1mdW5jdGlvbiAtV25vLW1pc3Np
bmctZmllbGQtaW5pdGlhbGl6ZXJzIC1Xbm8tdW5pbml0aWFsaXplZCAgICAgICAgIFwKKy1Xbm8t
YXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAtV25vLXBvaW50ZXItc2lnbiAt
V25vLXVudXNlZC12YWx1ZSAgXAorLVduby11bnVzZWQtbWFjcm9zIC1Xbm8tcGFyZW50aGVzZXMg
LVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAgICAgICAgICBcCistV25vLW1pc3Np
bmctYnJhY2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUg
ICAgICAgICAgICAgIFwKKy1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby10
eXBlLWxpbWl0cyAtV25vLXNpZ24tY29tcGFyZQorCitMSUJVQ09OVEVYVF9DRkxBR1MteSAgICs9
ICQoU1VQUFJFU1NfRkxBR1MpCitMSUJVQ09OVEVYVF9DWFhGTEFHUy15ICs9ICQoU1VQUFJFU1Nf
RkxBR1MpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCitMSUJVQ09OVEVYVF9TUkNTLXkgKz0gJChMSUJVQ09OVEVYVF9TUkMpL2dl
dGNvbnRleHQuUworTElCVUNPTlRFWFRfU1JDUy15ICs9ICQoTElCVUNPTlRFWFRfU1JDKS9tYWtl
Y29udGV4dC5jCitMSUJVQ09OVEVYVF9TUkNTLXkgKz0gJChMSUJVQ09OVEVYVF9TUkMpL3NldGNv
bnRleHQuUworTElCVUNPTlRFWFRfU1JDUy15ICs9ICQoTElCVUNPTlRFWFRfU1JDKS9zdGFydGNv
bnRleHQuUworTElCVUNPTlRFWFRfU1JDUy15ICs9ICQoTElCVUNPTlRFWFRfU1JDKS9zd2FwY29u
dGV4dC5TCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWNvbnRleHQuaCBiL2luY2x1ZGUvdWNvbnRl
eHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDhjZTRkCi0tLSAvZGV2
L251bGwKKysrIGIvaW5jbHVkZS91Y29udGV4dC5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qIFRha2Vu
IGZyb20gbXVzbCBoZWFkZXIgZmlsZXMgKHVjb250ZXh0LmggYW5kIGFyY2gveDg2XzY0L2JpdHMv
c2lnbmFsLmgpICovCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworI2lmZGVmIF9HTlVfU09VUkNF
CisjZGVmaW5lIFJFR19SOCAgICAgICAgICAwCisjZGVmaW5lIFJFR19SOSAgICAgICAgICAxCisj
ZGVmaW5lIFJFR19SMTAgICAgICAgICAyCisjZGVmaW5lIFJFR19SMTEgICAgICAgICAzCisjZGVm
aW5lIFJFR19SMTIgICAgICAgICA0CisjZGVmaW5lIFJFR19SMTMgICAgICAgICA1CisjZGVmaW5l
IFJFR19SMTQgICAgICAgICA2CisjZGVmaW5lIFJFR19SMTUgICAgICAgICA3CisjZGVmaW5lIFJF
R19SREkgICAgICAgICA4CisjZGVmaW5lIFJFR19SU0kgICAgICAgICA5CisjZGVmaW5lIFJFR19S
QlAgICAgICAgICAxMAorI2RlZmluZSBSRUdfUkJYICAgICAgICAgMTEKKyNkZWZpbmUgUkVHX1JE
WCAgICAgICAgIDEyCisjZGVmaW5lIFJFR19SQVggICAgICAgICAxMworI2RlZmluZSBSRUdfUkNY
ICAgICAgICAgMTQKKyNkZWZpbmUgUkVHX1JTUCAgICAgICAgIDE1CisjZGVmaW5lIFJFR19SSVAg
ICAgICAgICAxNgorI2RlZmluZSBSRUdfRUZMICAgICAgICAgMTcKKyNkZWZpbmUgUkVHX0NTR1NG
UyAgICAgIDE4CisjZGVmaW5lIFJFR19FUlIgICAgICAgICAxOQorI2RlZmluZSBSRUdfVFJBUE5P
ICAgICAgMjAKKyNkZWZpbmUgUkVHX09MRE1BU0sgICAgIDIxCisjZGVmaW5lIFJFR19DUjIgICAg
ICAgICAyMgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSB8fCBkZWZpbmVkKF9C
U0RfU09VUkNFKQordHlwZWRlZiBsb25nIGxvbmcgZ3JlZ190LCBncmVnc2V0X3RbMjNdOwordHlw
ZWRlZiBzdHJ1Y3QgX2Zwc3RhdGUgeworCXVuc2lnbmVkIHNob3J0IGN3ZCwgc3dkLCBmdHcsIGZv
cDsKKwl1bnNpZ25lZCBsb25nIGxvbmcgcmlwLCByZHA7CisJdW5zaWduZWQgbXhjc3IsIG14Y3Jf
bWFzazsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XSwgZXhwb25l
bnQsIHBhZGRpbmdbM107CisJfSBfc3RbOF07CisJc3RydWN0IHsKKwkJdW5zaWduZWQgZWxlbWVu
dFs0XTsKKwl9IF94bW1bMTZdOworCXVuc2lnbmVkIHBhZGRpbmdbMjRdOworfSAqZnByZWdzZXRf
dDsKK3N0cnVjdCBzaWdjb250ZXh0IHsKKwl1bnNpZ25lZCBsb25nIHI4LCByOSwgcjEwLCByMTEs
IHIxMiwgcjEzLCByMTQsIHIxNTsKKwl1bnNpZ25lZCBsb25nIHJkaSwgcnNpLCByYnAsIHJieCwg
cmR4LCByYXgsIHJjeCwgcnNwLCByaXAsIGVmbGFnczsKKwl1bnNpZ25lZCBzaG9ydCBjcywgZ3Ms
IGZzLCBfX3BhZDA7CisJdW5zaWduZWQgbG9uZyBlcnIsIHRyYXBubywgb2xkbWFzaywgY3IyOwor
CXN0cnVjdCBfZnBzdGF0ZSAqZnBzdGF0ZTsKKwl1bnNpZ25lZCBsb25nIF9fcmVzZXJ2ZWQxWzhd
OworfTsKK3R5cGVkZWYgc3RydWN0IHsKKwlncmVnc2V0X3QgZ3JlZ3M7CisJZnByZWdzZXRfdCBm
cHJlZ3M7CisJdW5zaWduZWQgbG9uZyBsb25nIF9fcmVzZXJ2ZWQxWzhdOworfSBtY29udGV4dF90
OworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBsb25nIF9fc3BhY2VbMzJdOwor
fSBtY29udGV4dF90OworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9fdWNvbnRleHQgeworCXVu
c2lnbmVkIGxvbmcgdWNfZmxhZ3M7CisJc3RydWN0IF9fdWNvbnRleHQgKnVjX2xpbms7CisJc3Rh
Y2tfdCB1Y19zdGFjazsKKwltY29udGV4dF90IHVjX21jb250ZXh0OworCXNpZ3NldF90IHVjX3Np
Z21hc2s7CisJdW5zaWduZWQgbG9uZyBfX2ZwcmVnc19tZW1bNjRdOworfSB1Y29udGV4dF90Owor
CitpbnQgIGdldGNvbnRleHQodWNvbnRleHRfdCAqKTsKK2ludCAgc2V0Y29udGV4dChjb25zdCB1
Y29udGV4dF90ICopOwordm9pZCBtYWtlY29udGV4dCh1Y29udGV4dF90ICosIHZvaWQgKCpfX2Z1
bmMpICh2b2lkKSwgaW50LCAuLi4pOworaW50ICBzd2FwY29udGV4dCh1Y29udGV4dF90ICosIGNv
bnN0IHVjb250ZXh0X3QgKik7CmRpZmYgLS1naXQgYS9wYXRjaGVzLzAwMDEtQWRkLXVjb250ZXh0
LWhlYWRlci1maWxlLnBhdGNoIGIvcGF0Y2hlcy8wMDAxLUFkZC11Y29udGV4dC1oZWFkZXItZmls
ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTYwOTcyCi0tLSAv
ZGV2L251bGwKKysrIGIvcGF0Y2hlcy8wMDAxLUFkZC11Y29udGV4dC1oZWFkZXItZmlsZS5wYXRj
aApAQCAtMCwwICsxLDI5IEBACitGcm9tIGJiY2FhZTk5MmY1M2Q4NjQ4YWJhYjUyNTRlODFiZGYz
MDY0MDkxMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFyYWxhbXBvcyBNYWlu
YXMgPENoYXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+CitEYXRlOiBXZWQsIDI5IE1heSAyMDE5
IDExOjM0OjAzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCB1Y29udGV4dCBoZWFkZXIgZmls
ZQorCitPbiBtdXNsIHVjb250ZXh0LmggaGVhZGVyIGZpbGUgaXMgaW5jbHVkZWQgYnkgc2lnbmFs
LmggaGVhZGVyIGZpbGUuIAorCitTaWduZWQtb2ZmLWJ5OiBDaGFyYWxhbXBvcyBNYWluYXMgPENo
YXJhbGFtcG9zLk1haW5hc0BuZWNsYWIuZXU+CisKKy0tLQorIGFyY2gveDg2XzY0L21ha2Vjb250
ZXh0LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u
KC0pCisKK2RpZmYgLS1naXQgYS9hcmNoL3g4Nl82NC9tYWtlY29udGV4dC5jIGIvYXJjaC94ODZf
NjQvbWFrZWNvbnRleHQuYworaW5kZXggYmE2Y2E1OS4uZTI3MjAwOCAxMDA2NDQKKy0tLSBhL2Fy
Y2gveDg2XzY0L21ha2Vjb250ZXh0LmMKKysrKyBiL2FyY2gveDg2XzY0L21ha2Vjb250ZXh0LmMK
K0BAIC0xMyw3ICsxMyw3IEBACisgI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDxzdGRk
ZWYuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CistI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkaW50
Lmg+CisgCistLSAKKzIuMTcuMQorCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 09:42:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 09:42: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 1hg4RQ-0003Pg-U6; Wed, 26 Jun 2019 09:42:12 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg4RP-0003PZ-S3
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 09:42:11 +0000
X-Inumbo-ID: aa0391e3-97f6-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id aa0391e3-97f6-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 09:42:09 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id f17so1374281wme.2
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 02:42:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=wY704W5Wicq0Henvnrcyuks//3BACbwI2AN8uFtHiLc=;
 b=Sf106qvZGWv/16QVziYbAqvkTwmHv6ykpzQUN9oJ1GDTpSGqUQIKu1EcyYE7WG9eC5
 ax121ld9lKaK4Bdih4KgXkbi32JhZA8vIff7HcmFCzDFp4J81P/ZF1xNTTg3B38ltsSd
 0nZxDM+URI9s0XDnW1U5eXax5CE8BtUBb9PjvlBtdx+4j0Rnd0aXe1HGtx3JrUVi+orq
 H0Y6AJ2LirAIkAh/oZ8N8JcwEBiGFkl/hbdZSXZp05L+F67/Itki6wXyZ2Hul54BxkHy
 PvyWrK5RDdyLJiprBnwe1MspSAewSU1qXcNbzXbA3+XK/yUqCi/9r7ZB1xaDdMfS/30l
 b7YQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=wY704W5Wicq0Henvnrcyuks//3BACbwI2AN8uFtHiLc=;
 b=o/Sx75kOuwQcUNH4CN4E6BtfDfIriaZQWngtUEfeRFEtAZu5Zx8OqZL6HQbH7Q8W8Q
 IKMy0XkEtPvrYfFSWxFpbDGp67GjwbL5VJib6YhG1PSkmAqHqj+Tn0JNXUKmI10Hbb/K
 kUyMAIbISjjVsvXxJ8QpjT2gpEAiDsHD5Ha96bYFyWKh4RGW9pgflOysr8Sil86c4Uge
 O+6689anCCfn8r9NRFiWUkqQkYAjHG19UD/4mXCkgqGDvAjbwBz4VB2iUsUUwXGBd+PK
 pR2NxCm86e5S1NA4dBQ86BNeZNF9AKb6rsisiRPv9MvUUR65sJ2um/ZmIBamSUB/F1Rn
 8y0A==
X-Gm-Message-State: APjAAAXKViNZtTT8qI0pK7ux9ZVBjkv4QeXhRo6O4xzx5n2KnL2qepEc
 lXPCuWy7D0YS/zEiohmBnbk=
X-Google-Smtp-Source: APXvYqx7whWDVP2nOieh+eULU8xJtU+Meqt9KLYbd65ZNtmtz6dyRz/94PEnKPN6kq7zC1LSfQSRQQ==
X-Received: by 2002:a7b:c0d0:: with SMTP id s16mr2102465wmh.141.1561542127637; 
 Wed, 26 Jun 2019 02:42:07 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id d18sm15268663wrn.26.2019.06.26.02.42.06
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 02:42:07 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
 <20190626015438.11046-3-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <fde3964a-42f1-b238-3a2a-0a9818c420a9@gmail.com>
Date: Wed, 26 Jun 2019 12:42:06 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015438.11046-3-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH 2/7] Let vfs free the
 resources used for the socket
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGlzIHBhdGNoIHJlbW92ZXMgdGhl
IGRlbnRyeSBhbmQgdm5vZGUKYWxsb2NhdGlvbiB3aGljaCB3YXMgZG9uZSBieSB0aGUgc29ja2V0
cyBjb2RlIGFuZCByZXBsYWNlcyBpdCB3aXRoIHRoZQpWRlMgZnVuY3Rpb25zIGNhbGxzLCBsZWF2
aW5nIHZmc2NvcmUgZG8gaXRzIHRoaW5nLiBBbmQgdGhlIHNhbWUgaWRlYQphcHBsaWVzIGZvciBw
YXRjaCA0LzcgKCJVc2UgdmZzIGZ1bmN0aW9ucyB0byBhbGxvY2F0ZSBzb2NrZXQgdm5vZGUgYW5k
CmRlbnRyeSIpLCB3aGljaCBpcyBiYXNpY2FsbHkgYSBzZWNvbmQgcGFydCBmb3IgdGhpcyBwYXRj
aC4gSWRlYWxseSwgdGhleQp3b3VsZCBoYXZlIGJlZW4gZ3JvdXBlZCB0b2dldGhlciwgYnV0IGFz
IHdlIGRpc2N1c3NlZCBvZmZsaW5lIHRoaXMgaXMKdG9vIHRpbWUgY29uc3VtaW5nIGZvciBub3cu
IEJ1dCBnaXZlbiB0aGVpciBjbG9zZSByZWxhdGlvbiwgbGV0J3MgYXQKbGVhc3QgdXNlIHRoZSBz
YW1lIGNvbW1pdCBzdWJqZWN0IGFuZCBzaG93IHRoZXkgYXJlIHBhcnRzIG9mIHRoZSBzYW1lCnRo
aW5nLiBTbyBteSBzdWdnZXN0aW9uIGZvciB0aGlzIHBhdGNoIHdvdWxkIGJlIHRvIHVzZSAiVXNl
IFZGUyB0bwphbGxvY2F0ZSBhbmQgZnJlZSBkZW50cmllcyBhbmQgdm5vZGVzIGZvciBzb2NrZXRz
IChQYXJ0IEkpIiBhbmQgIjxpZGVtPgooUGFydCBJSSkiIGZvciBwYXRjaCA0LzcuIEFuZCB5b3Ug
c2F5IGluIHRoZSBjb21taXQgbWVzc2FnZSB0aGF0IHBhcnQgSQpkZWFscyB3aXRoIGZyZWVpbmcg
YW5kIGluIHBhcnQgSUkgY29tbWl0IG1lc3NhZ2UgdGhhdCBpdCBkZWFscyB3aXRoCmFsbG9jYXRp
b24uCgpPbiA2LzI2LzE5IDQ6NTQgQU0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFJpZ2h0IG5v
dyBzb2NrX25ldF9jbG9zZSBmcmVlcyB0aGUgZGVudHJ5IGFuZCB2bm9kZSB1c2VkIGZvcgo+IHRo
ZSBzb2NrZXQuIFZmcyB1c2VzIHRoZSB2bm9kZSBhZnRlciBjYWxsaW5nIHNvY2tfbmV0X2Nsb3Nl
Cj4gc28gaXQgYWNjZXNzZXMgZnJlZWQgbWVtb3J5Lgo+IAo+IFdlIHdpbGwgbGV0IHZmcyBoYW5k
bGUgdGhlIGZyZWVpbmcgb2YgdGhlIHZmc2NvcmVfZmlsZSwKPiBkZW50cnkgYW5kIHZub2RlLgo+
IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNv
bT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA4MyBp
bnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvc29ja2V0cy5j
IGIvc29ja2V0cy5jCj4gaW5kZXggZTk1NzU4ZC4uY2JlMzAzMCAxMDA2NDQKPiAtLS0gYS9zb2Nr
ZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAtMzcsNiArMzcsNyBAQAo+ICAjaW5jbHVkZSA8
c3lzL3RpbWUuaD4KPiAgI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+ICAjaW5jbHVkZSA8dmZz
Y29yZS9mcy5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgo+ICAjaW5jbHVkZSA8dmZz
Y29yZS92bm9kZS5oPgo+ICAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KPiAgI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4KPiBAQCAtNDgsOCArNDksMTYgQEAKPiAgI2RlZmluZSBTT0NLX05FVF9TRVRf
RVJSTk8oZXJyY29kZSkgXAo+ICAJKGVycm5vID0gLShlcnJjb2RlKSkKPiAgCj4gKy8qCj4gKyAq
IEJvZ3VzIG1vdW50IHBvaW50IHVzZWQgYnkgYWxsIHNvY2tldHMKPiArICoKPiArICogV2UgbmVl
ZCB0aGlzIGJlY2F1c2Ugd2hlbiBkZWxldGluZyBhIHZub2RlCj4gKyAqIHZmcyBjYWxscyB2ZnNf
dW5idXN5IG9uIGl0cyBtb3VudCBwb2ludAo+ICsgKi8KPiArc3RhdGljIHN0cnVjdCBtb3VudCBz
X21vdW50Owo+ICsKPiAgc3RydWN0IHNvY2tfbmV0X2ZpbGUgewo+IC0Jc3RydWN0IHZmc2NvcmVf
ZmlsZSB2ZnNjb3JlX2ZpbGU7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGU7
Cj4gIAlpbnQgc29ja19mZDsKPiAgfTsKPiAgCj4gQEAgLTU4LDcgKzY3LDcgQEAgc3RhdGljIGlu
bGluZSBzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqc29ja19uZXRfZmlsZV9nZXQoaW50IGZkKQo+ICAJ
c3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAJc3RydWN0IHZmc2NvcmVfZmls
ZSAqZm9zOwo+ICAKPiAtCWZvcyAgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKPiArCWZvcyA9IHZm
c2NvcmVfZ2V0X2ZpbGUoZmQpOwo+ICAJaWYgKCFmb3MpIHsKPiAgCQlMV0lQX0RFQlVHRihTT0NL
RVRTX0RFQlVHLAo+ICAJCQkgICAgKCJmYWlsZWQgd2l0aCBpbnZhbGlkIGRlc2NyaXB0b3JcbiIp
KTsKPiBAQCAtNzEsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzb2NrX25ldF9maWxl
ICpzb2NrX25ldF9maWxlX2dldChpbnQgZmQpCj4gIAkJZmlsZSA9IEVSUjJQVFIoLUVCQURGKTsK
PiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gLQlmaWxlID0gX19jb250YWluZXJvZihmb3MsIHN0cnVj
dCBzb2NrX25ldF9maWxlLCB2ZnNjb3JlX2ZpbGUpOwo+ICsJZmlsZSA9IGZvcy0+Zl9kYXRhOwo+
ICBFWElUOgo+ICAJcmV0dXJuIGZpbGU7Cj4gIH0KPiBAQCAtODEsNiArOTAsNyBAQCBzdGF0aWMg
aW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQgc29ja19mZCkKPiAgCWlu
dCByZXQgPSAwOwo+ICAJaW50IHZmc19mZDsKPiAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxl
ID0gTlVMTDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc19maWxlID0gTlVMTDsKPiAgCXN0
cnVjdCBkZW50cnkgKnNfZGVudHJ5Owo+ICAJc3RydWN0IHZub2RlICpzX3Zub2RlOwo+ICAKPiBA
QCAtMTAxLDYgKzExMSwxMyBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3Bz
ICp2X29wLCBpbnQgc29ja19mZCkKPiAgCQkJICAgICgiRmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tl
dCBmaWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gIAkJZ290byBFUlJfTUFMTE9DX0ZJTEU7Cj4g
IAl9Cj4gKwl2ZnNfZmlsZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCAxLCBz
aXplb2YoKnZmc19maWxlKSk7Cj4gKwlpZiAoIXZmc19maWxlKSB7Cj4gKwkJcmV0ID0gLUVOT01F
TTsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkJKCJGYWlsZWQgdG8gYWxs
b2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gKwkJZ290byBFUlJf
TUFMTE9DX1ZGU19GSUxFOwo+ICsJfQo+ICAJc19kZW50cnkgPSB1a19jYWxsb2ModWtfYWxsb2Nf
Z2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkpOwo+ICAJaWYgKCFzX2RlbnRyeSkg
ewo+ICAJCXJldCA9IC1FTk9NRU07Cj4gQEAgLTExNywyNiArMTM0LDQ2IEBAIHN0YXRpYyBpbnQg
c29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2NrX2ZkKQo+ICAJfQo+ICAK
PiAgCS8qIFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBmaWxsIG91dCBuZWNlc3NhcnkgZmllbGRz
ICovCj4gLQlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQgPSB2ZnNfZmQ7Cj4gLQlmaWxlLT52ZnNjb3Jl
X2ZpbGUuZl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFEOwo+IC0JZmlsZS0+dmZzY29yZV9m
aWxlLmZfY291bnQgPSAxOwo+IC0JZmlsZS0+dmZzY29yZV9maWxlLmZfZGVudHJ5ID0gc19kZW50
cnk7Cj4gKwl2ZnNfZmlsZS0+ZmQgPSB2ZnNfZmQ7Cj4gKwl2ZnNfZmlsZS0+Zl9mbGFncyA9IFVL
X0ZXUklURSB8IFVLX0ZSRUFEOwo+ICsJdmZzX2ZpbGUtPmZfY291bnQgPSAxOwo+ICsJdmZzX2Zp
bGUtPmZfZGF0YSA9IGZpbGU7Cj4gKwl2ZnNfZmlsZS0+Zl9kZW50cnkgPSBzX2RlbnRyeTsKPiAg
Cj4gKwlzX2RlbnRyeS0+ZF9yZWZjbnQgPSAxOwo+ICAJc19kZW50cnktPmRfdm5vZGUgPSBzX3Zu
b2RlOwo+ICAKPiArCS8qCj4gKwkgKiBQcm92aWRlIGJvZ3VzIGJ1dCB2YWxpZCBhZGRyZXNzZXMg
dG8gYWxsb3cKPiArCSAqIHZmcyB0byByZW1vdmUgbm9kZXMgZnJvbSBsaXN0cwo+ICsJICovCj4g
KwlzX2RlbnRyeS0+ZF9saW5rLnBwcmV2ID0gJnNfZGVudHJ5LT5kX2xpbmsubmV4dDsKPiArCXNf
ZGVudHJ5LT5kX25hbWVzX2xpbmsubmV4dCA9ICZzX2RlbnRyeS0+ZF9uYW1lc19saW5rOwo+ICsJ
c19kZW50cnktPmRfbmFtZXNfbGluay5wcmV2ID0gJnNfZGVudHJ5LT5kX25hbWVzX2xpbms7Cj4g
Kwo+ICAJc192bm9kZS0+dl9vcCA9IHZfb3A7Cj4gIAl1a19tdXRleF9pbml0KCZzX3Zub2RlLT52
X2xvY2spOwo+ICAJc192bm9kZS0+dl9yZWZjbnQgPSAxOwo+ICAJc192bm9kZS0+dl9kYXRhID0g
ZmlsZTsKPiAgCXNfdm5vZGUtPnZfdHlwZSA9IFZTT0NLOwo+ICsJc192bm9kZS0+dl9tb3VudCA9
ICZzX21vdW50Owo+ICsJc19tb3VudC5tX2NvdW50Kys7Cj4gIAo+ICsJLyoKPiArCSAqIFByb3Zp
ZGUgYm9ndXMgYnV0IHZhbGlkIGFkZHJlc3NlcyB0byBhbGxvdwo+ICsJICogdmZzIHRvIHJlbW92
ZSBub2RlcyBmcm9tIGxpc3RzCj4gKwkgKi8KPiArCXNfdm5vZGUtPnZfbGluay5uZXh0ID0gJnNf
dm5vZGUtPnZfbGluazsKPiArCXNfdm5vZGUtPnZfbGluay5wcmV2ID0gJnNfdm5vZGUtPnZfbGlu
azsKPiArCj4gKwlmaWxlLT52ZnNjb3JlX2ZpbGUgPSB2ZnNfZmlsZTsKPiAgCWZpbGUtPnNvY2tf
ZmQgPSBzb2NrX2ZkOwo+ICAJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0ZWQg
c29ja2V0ICVkICgleClcbiIsCj4gLQkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+ICsJ
CQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gIAkJCQkgICAgZmlsZS0+c29ja19mZCkp
Owo+ICAKPiAgCS8qIFN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgdmZzIHN0cnVj
dHVyZSAqLwo+IC0JcmV0ID0gdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19mZCwgJmZpbGUtPnZmc2Nv
cmVfZmlsZSk7Cj4gKwlyZXQgPSB2ZnNjb3JlX2luc3RhbGxfZmQodmZzX2ZkLCBmaWxlLT52ZnNj
b3JlX2ZpbGUpOwo+ICAJaWYgKHJldCkgewo+ICAJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcs
Cj4gIAkJCSAgICAoIkZhaWxlZCB0byBpbnN0YWxsIHNvY2tldCBmZFxuIikpOwo+IEBAIC0xNTEs
NiArMTg4LDggQEAgRVJSX1ZGU19JTlNUQUxMOgo+ICBFUlJfTUFMTE9DX1ZOT0RFOgo+ICAJdWtf
ZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX2RlbnRyeSk7Cj4gIEVSUl9NQUxMT0NfREVO
VFJZOgo+ICsJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCB2ZnNfZmlsZSk7Cj4gK0VS
Ul9NQUxMT0NfVkZTX0ZJTEU6Cj4gIAl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIGZp
bGUpOwo+ICBFUlJfTUFMTE9DX0ZJTEU6Cj4gIAl2ZnNjb3JlX3B1dF9mZCh2ZnNfZmQpOwo+IEBA
IC0xNjAsMTUgKzE5OSwxNSBAQCBFUlJfRVhJVDoKPiAgfQo+ICAKPiAgc3RhdGljIGludCBzb2Nr
X25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gLQkJCSAgc3RydWN0IHZmc2NvcmVf
ZmlsZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQo+ICsJCQkgIHN0cnVjdCB2ZnNjb3Jl
X2ZpbGUgKnZmc2NvcmVfZmlsZSkKPiAgewo+IC0JaW50IHJldCA9IDA7Cj4gKwlpbnQgcmV0Owo+
ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAKPiAgCWZpbGUgPSBzX3Zu
b2RlLT52X2RhdGE7Cj4gIAlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIiVzIGZkOiVkIGx3
aXBfZmQ6JWRcbiIsCj4gIAkJCQkgICAgX19mdW5jX18sCj4gLQkJCQkgICAgZmlsZS0+dmZzY29y
ZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gIAkJCQkgICAg
ZmlsZS0+c29ja19mZCkpOwo+ICAKPiAgCVVLX0FTU0VSVCh2ZnNjb3JlX2ZpbGUtPmZfZGVudHJ5
LT5kX3Zub2RlID09IHNfdm5vZGUpOwo+IEBAIC0xNzYsMTIgKzIxNSwxMyBAQCBzdGF0aWMgaW50
IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiAgCj4gIAkvKiBDbG9zZSBh
bmQgcmVsZWFzZSB0aGUgbHdpcCBzb2NrZXQgKi8KPiAgCXJldCA9IGx3aXBfY2xvc2UoZmlsZS0+
c29ja19mZCk7Cj4gLQkvKiBGcmVlIHNvY2tldCB2bm9kZSAqLwo+IC0JdWtfZnJlZSh1a19hbGxv
Y19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2ZpbGUuZl9kZW50cnktPmRfdm5vZGUpOwo+
IC0JLyogRnJlZSBzb2NrZXQgZGVudHJ5ICovCj4gLQl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZh
dWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSk7Cj4gLQkvKiBGcmVlIHNvY2tldCBm
aWxlICovCj4gKwo+ICsJLyoKPiArCSAqIEZyZWUgc29ja2V0IGZpbGUKPiArCSAqIFRoZSByZXN0
IG9mIHRoZSByZXNvdXJjZXMgd2lsbCBiZSBmcmVlZCBieSB2ZnMKPiArCSAqLwo+ICAJdWtfZnJl
ZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKPiArCj4gIAlyZXR1cm4gcmV0Owo+ICB9
Cj4gIAo+IEBAIC0xOTQsNyArMjM0LDcgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRfd3JpdGUo
c3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKPiAgCUxX
SVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9mZDolZFxuIiwKPiAgCQkJ
CSAgICBfX2Z1bmNfXywKPiAtCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCj4gKwkJCQkg
ICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4g
IAlyZXQgPSBsd2lwX3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlv
X2lvdmNudCk7Cj4gIAlyZXR1cm4gcmV0Owo+IEBAIC0yMTAsMTYgKzI1MCwxOSBAQCBzdGF0aWMg
c3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiAgCWZpbGUgPSBz
X3Zub2RlLT52X2RhdGE7Cj4gIAlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIiVzIGZkOiVk
IGx3aXBfZmQ6JWRcbiIsCj4gIAkJCQkgICAgX19mdW5jX18sCj4gLQkJCQkgICAgZmlsZS0+dmZz
Y29yZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gIAkJCQkg
ICAgZmlsZS0+c29ja19mZCkpOwo+ICAJcmV0ID0gbHdpcF9yZWFkdihmaWxlLT5zb2NrX2ZkLCBi
dWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+
ICsjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCkgdmZzY29yZV92
b3BfbnVsbG9wKQo+ICsKPiAgc3RhdGljIHN0cnVjdCB2bm9wcyBzb2NrX25ldF9mb3BzID0gewo+
ICAJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAo+ICAJLnZvcF93cml0ZSA9IHNvY2tfbmV0
X3dyaXRlLAo+ICAJLnZvcF9yZWFkICA9IHNvY2tfbmV0X3JlYWQsCj4gKwkudm9wX2luYWN0aXZl
ID0gc29ja19uZXRfaW5hY3RpdmUKPiAgfTsKPiAgCj4gIGludCBzb2NrZXQoaW50IGRvbWFpbiwg
aW50IHR5cGUsIGludCBwcm90b2NvbCkKPiBAQCAtMjk2LDcgKzMzOSw3IEBAIGludCBhY2NlcHQo
aW50IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVuKQo+ICAJfQo+
ICAJcmV0ID0gdmZzX2ZkOwo+ICBFWElUX0ZEUk9QOgo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmls
ZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRf
ZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6
Cj4gIAlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMzI4LDcgKzM3MSw3IEBAIGludCBiaW5kKGludCBz
LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQo+ICAJCWdv
dG8gRVhJVF9GRFJPUDsKPiAgCX0KPiAgRVhJVF9GRFJPUDoKPiAtCXZmc2NvcmVfcHV0X2ZpbGUo
JmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVf
cHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBF
WElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0zNTUsNyArMzk4LDcgQEAgaW50IHBvbGwo
c3RydWN0IHBvbGxmZCBmZHNbXSwgbmZkc190IG5mZHMsIGludCB0aW1lb3V0KQo+ICAJCQl9Cj4g
IAkJCWx3aXBfZmRzW2ldLmZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJbHdpcF9mZHNbaV0uZXZl
bnRzID0gZmRzW2ldLmV2ZW50czsKPiAtCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKGZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgCQl9Cj4gIAl9Cj4g
IAo+IEBAIC00MDgsNyArNDUxLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFk
ZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJaWYgKG1heGZk
IDwgZmlsZS0+c29ja19mZCkKPiAgCQkJCW1heGZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJRkRf
U0VUKGZpbGUtPnNvY2tfZmQsICZyZCk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZm
c2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmls
ZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJ
CWlmICh3cml0ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsKPiAgCQkJZmlsZSA9IHNv
Y2tfbmV0X2ZpbGVfZ2V0KGkpOwo+IEBAIC00MjMsNyArNDY2LDcgQEAgaW50IHNlbGVjdChpbnQg
bmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZk
cywKPiAgCQkJaWYgKG1heGZkIDwgZmlsZS0+c29ja19mZCkKPiAgCQkJCW1heGZkID0gZmlsZS0+
c29ja19mZDsKPiAgCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZ3cik7Cj4gLQkJCXZmc2NvcmVf
cHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAr
CQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNv
dW50ICovCj4gIAkJfQo+ICAJCWlmIChleGNlcHRmZHMgJiYgRkRfSVNTRVQoaSwgZXhjZXB0ZmRz
KSkgewo+ICAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7Cj4gQEAgLTQzOCw3ICs0ODEs
NyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVm
ZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAJCQlpZiAobWF4ZmQgPCBmaWxlLT5zb2NrX2ZkKQo+
ICAJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwo+ICAJCQlGRF9TRVQoZmlsZS0+c29ja19mZCwg
JnhjKTsKPiAtCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVs
ZWFzZSByZWZjb3VudCAqLwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmls
ZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC00NTksNyAr
NTAyLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndy
aXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0
KGkpOwo+ICAJCQlpZiAoIUZEX0lTU0VUKGZpbGUtPnNvY2tfZmQsICZyZCkpCj4gIAkJCQlGRF9D
TFIoaSwgcmVhZGZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmls
ZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJCWlmICh3cml0
ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsKPiAgCQkJLyogVGhpcyBsb29rdXAgY2Fu
J3QgZmFpbCwgb3IgaXQgd291bGQgYWxyZWFkeSBoYXZlCj4gQEAgLTQ2OCw3ICs1MTEsNyBAQCBp
bnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZk
X3NldCAqZXhjZXB0ZmRzLAo+ICAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7Cj4gIAkJ
CWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJndyKSkKPiAgCQkJCUZEX0NMUihpLCB3cml0
ZWZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2Zp
bGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJCWlmIChleGNlcHRmZHMgJiYg
RkRfSVNTRVQoaSwgZXhjZXB0ZmRzKSkgewo+ICAJCQkvKiBUaGlzIGxvb2t1cCBjYW4ndCBmYWls
LCBvciBpdCB3b3VsZCBhbHJlYWR5IGhhdmUKPiBAQCAtNDc3LDcgKzUyMCw3IEBAIGludCBzZWxl
Y3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpl
eGNlcHRmZHMsCj4gIAkJCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChpKTsKPiAgCQkJaWYgKCFG
RF9JU1NFVChmaWxlLT5zb2NrX2ZkLCAmeGMpKQo+ICAJCQkJRkRfQ0xSKGksIGV4Y2VwdGZkcyk7
Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2Ug
cmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtNTAxLDcgKzU0NCw3
IEBAIGludCBzaHV0ZG93bihpbnQgcywgaW50IGhvdykKPiAgCX0KPiAgCS8qIFNodXRkb3duIG9m
IHRoZSBkZXNjcmlwdG9yICovCj4gIAlyZXQgPSBsd2lwX3NodXRkb3duKGZpbGUtPnNvY2tfZmQs
IGhvdyk7Cj4gLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCj4gKwl2ZnNjb3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7
IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgRVhJVDoKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBA
QCAtNTE5LDcgKzU2Miw3IEBAIGludCBnZXRwZWVybmFtZShpbnQgcywgc3RydWN0IHNvY2thZGRy
ICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCj4gIAkJZ290byBFWElUOwo+ICAJfQo+ICAJcmV0
ID0gbHdpcF9nZXRwZWVybmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVuKTsKPiAtCXZm
c2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQg
Ki8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSBy
ZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC01MzcsNyArNTgw
LDcgQEAgaW50IGdldHNvY2tuYW1lKGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2ts
ZW5fdCAqbmFtZWxlbikKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX2dldHNv
Y2tuYW1lKGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5hbWVsZW4pOwo+IC0JdmZzY29yZV9wdXRfZmls
ZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29y
ZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4g
IEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTU1Niw3ICs1OTksNyBAQCBpbnQgZ2V0
c29ja29wdChpbnQgcywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLCBzb2Nr
bGVuX3QgKm9wdGxlbikKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX2dldHNv
Y2tvcHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsKPiAt
CXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291
bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC01NzYsNyAr
NjE5LDcgQEAgaW50IHNldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNv
bnN0IHZvaWQgKm9wdHZhbCwKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX3Nl
dHNvY2tvcHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsK
PiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVm
Y291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVs
ZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC01OTUs
NyArNjM4LDcgQEAgaW50IGNvbm5lY3QoaW50IHMsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqbmFt
ZSwgc29ja2xlbl90IG5hbWVsZW4pCj4gIAkJZ290byBFWElUOwo+ICAJfQo+ICAJcmV0ID0gbHdp
cF9jb25uZWN0KGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5hbWVsZW4pOwo+IC0JdmZzY29yZV9wdXRf
ZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZz
Y29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICov
Cj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTYxNCw3ICs2NTcsNyBAQCBpbnQg
bGlzdGVuKGludCBzLCBpbnQgYmFja2xvZykKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAlyZXQg
PSBsd2lwX2xpc3RlbihmaWxlLT5zb2NrX2ZkLCBiYWNrbG9nKTsKPiAtCXZmc2NvcmVfcHV0X2Zp
bGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2Nv
cmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+
ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02MzMsNyArNjc2LDcgQEAgaW50IHJl
Y3YoaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKQo+ICAJCWdvdG8gRVhJ
VDsKPiAgCX0KPiAgCXJldCA9IGx3aXBfcmVjdihmaWxlLT5zb2NrX2ZkLCBtZW0sIGxlbiwgZmxh
Z3MpOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAg
LTY1Myw3ICs2OTYsNyBAQCBpbnQgcmVjdmZyb20oaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxl
biwgaW50IGZsYWdzLAo+ICAJCWdvdG8gRVhJVDsKPiAgCX0KPiAgCXJldCA9IGx3aXBfcmVjdmZy
b20oZmlsZS0+c29ja19mZCwgbWVtLCBsZW4sIGZsYWdzLCBmcm9tLCBmcm9tbGVuKTsKPiAtCXZm
c2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQg
Ki8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSBy
ZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02NzIsNyArNzE1
LDcgQEAgaW50IHNlbmQoaW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIsIHNpemVfdCBzaXplLCBp
bnQgZmxhZ3MpCj4gIAkJZ290byBFWElUOwo+ICAJfQo+ICAJcmV0ID0gbHdpcF9zZW5kKGZpbGUt
PnNvY2tfZmQsIGRhdGFwdHIsIHNpemUsIGZsYWdzKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0
X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElU
Ogo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02OTEsNyArNzM0LDcgQEAgaW50IHNlbmRtc2co
aW50IHMsIGNvbnN0IHN0cnVjdCBtc2doZHIgKm1lc3NhZ2UsIGludCBmbGFncykKPiAgCQlnb3Rv
IEVYSVQ7Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX3NlbmRtc2coZmlsZS0+c29ja19mZCwgbWVzc2Fn
ZSwgZmxhZ3MpOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyog
cmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2Zp
bGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9
Cj4gQEAgLTcxMSw3ICs3NTQsNyBAQCBpbnQgc2VuZHRvKGludCBzLCBjb25zdCB2b2lkICpkYXRh
cHRyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLAo+ICAJCWdvdG8gRVhJVDsKPiAgCX0KPiAgCXJl
dCA9IGx3aXBfc2VuZHRvKGZpbGUtPnNvY2tfZmQsIGRhdGFwdHIsIHNpemUsIGZsYWdzLCB0bywg
dG9sZW4pOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVs
ZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUp
OyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4g
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 09:45:03 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 09:45: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 1hg4UB-0003TV-67; Wed, 26 Jun 2019 09:45:03 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg4UA-0003TQ-HX
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 09:45:02 +0000
X-Inumbo-ID: 108df499-97f7-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 108df499-97f7-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 09:45:00 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id v14so1933112wrr.4
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 02:45:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=t0lM+JKasW+bSqjlN80DfVLpc6aMEzavfxPgqP/TYpw=;
 b=udxvZeWMA+rJOHN7RWggpt3/GiWxB4FTJ5rKfVVDaEHrojgXJF8+XwkKdjcjKZ6T6c
 v8MKxfpcwdS3frokOpVD51w8GIVEmK0CrSILGmUbxa0tzPmGZz4gC+I3LwKCzmSwwtGn
 UXqFys+mvX445bNOfjOK8M9XFRnqQOY+LEwb1qriwuQZLXoU6f0xab/BTl5jfwwwcWDo
 Wsh6s17GEVvAd7F9pdISXXi4PAbHQi5UYsWjXG4BEydVVsnX+xxEbRnxYz9xlIWD6sc/
 2QAio3UnhmPm1fxTl8zcSGa+eFJsDkJS+8KCcD3V6v1ePwEhhdWkZMHBbomUVG0ZgARc
 XRPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=t0lM+JKasW+bSqjlN80DfVLpc6aMEzavfxPgqP/TYpw=;
 b=SEOr9BBWW+1Q0O3+xUeUFTIj62+9FrAhCxVwFYw+HXAoQaFTxdxJh1HoN+kHCNED4q
 B8Kr+M+syCte2o/bBxQFFwnMIM6DX+I6tksorGDNLNtjPo+Vacf32cC6iBC8iRVwxmBv
 MYJpVaWi3AKbO3JlXyJ32S6GPIsfBU0XoIva0ReL8eRD1tQJ/p90cP9o1xsyitGEoA/A
 lyga3zIqOVpRtn0OMURPxe+yabgjvgBHroqbpYC/v7qf966Xe3Ofxx50dRI64qznUe39
 1yhSQE6dCK/tt/qdijqLrZvtk0rCdRITqdc87Z2KxspTx45bNvIwh1OGKdxZPlzcyBX6
 mdWA==
X-Gm-Message-State: APjAAAUnFCAF6gm6Q10A5W0OBrxXHPWZHlTQ6E/snZmNejMHQyNCH15n
 wtATWxzOA2NsZqqKkiNbxGI=
X-Google-Smtp-Source: APXvYqy/opH44M8zYjyqmykj7UoaJtj4pCyiXzPRCGpmQHMGouJMmvXnqDNBuYKd1aCqZrikjHKrFg==
X-Received: by 2002:a5d:5189:: with SMTP id k9mr2996563wrv.45.1561542299855;
 Wed, 26 Jun 2019 02:44:59 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id h14sm14446078wrs.66.2019.06.26.02.44.59
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 02:44:59 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
 <20190626015438.11046-4-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <07272258-110e-7c45-3d5b-b1ec876d7699@gmail.com>
Date: Wed, 26 Jun 2019 12:44:58 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015438.11046-4-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH 3/7] Adapt lwip to new vfs
 changes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpTYW1lIHRoaW5nIGZvciB0aGlzIHBhdGNoIC0gaXQgZG9lc24ndCBleHBsYWlu
IGNsZWFybHkgd2hhdCBpdCBkb2VzLCB0aGUKY29tbWl0IHRpdGxlL3N1YmplY3QgaXMgdG9vIGdl
bmVyaWMuIEZyb20gd2hhdCBJIHVuZGVyc3RhbmQsIHRoaXMKdXBkYXRlcyB0aGUgcmVtYWluaW5n
IGJ5dGVzIHZhbHVlIGFmdGVyIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnM7IHRoZQp0aXRsZSBz
aG91bGQgc2F5IHRoYXQuCgpPbiA2LzI2LzE5IDQ6NTQgQU0sIE1paGFpIFBvZ29uYXJ1IHdyb3Rl
Ogo+IFVwZGF0ZSB1aW8gc3RydWN0dXJlIGluIHNvY2tfbmV0X3dyaXRlL3JlYWQuIFZGU0NPUkUg
ZXhwZWN0cyB0aGUKPiB1cGRhdGUgb2YgdGhlIHJlc2lkIG1lbWJlciBvZiB1aW8gdG8gcmVmbGVj
dCB0aGUgbnVtYmVyIG9mIGJ5dGVzCj4gdGhhdCByZW1haW4gdW5wcm9jZXNzZWQuCj4gCj4gU2V0
IHRoZSBVS19WRlNDT1JFX05PUE9TIGZsYWcgb24gdGhlIHNvY2tldCB2ZnNjb3JlX2ZpbGUuIFRo
aXMKPiBmbGFnIGluZm9ybXMgVkZTQ09SRSB0byBub3QgdXBkYXRlIHRoZSBvZmZzZXQgb2Ygb3Vy
IHNvY2tldCBmaWxlCj4gc2luY2UgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGZvciBzb2NrZXRzLgo+
IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNv
bT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMTkgKysrKysrKysrKysrKysrLS0tLQo+ICAxIGZpbGUg
Y2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0
IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggY2JlMzAzMC4uMzA0MDA5OSAxMDA2NDQK
PiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAtMTM5LDYgKzEzOSw3IEBA
IHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2NrX2Zk
KQo+ICAJdmZzX2ZpbGUtPmZfY291bnQgPSAxOwo+ICAJdmZzX2ZpbGUtPmZfZGF0YSA9IGZpbGU7
Cj4gIAl2ZnNfZmlsZS0+Zl9kZW50cnkgPSBzX2RlbnRyeTsKPiArCXZmc19maWxlLT5mX3Zmc19m
bGFncyA9IFVLX1ZGU0NPUkVfTk9QT1M7Cj4gIAo+ICAJc19kZW50cnktPmRfcmVmY250ID0gMTsK
PiAgCXNfZGVudHJ5LT5kX3Zub2RlID0gc192bm9kZTsKPiBAQCAtMjI1LDcgKzIyNiw3IEBAIHN0
YXRpYyBpbnQgc29ja19uZXRfY2xvc2Uoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJcmV0dXJu
IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHNzaXplX3Qgc29ja19uZXRfd3JpdGUoc3RydWN0IHZu
b2RlICpzX3Zub2RlLAo+ICtzdGF0aWMgaW50IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2bm9kZSAq
c192bm9kZSwKPiAgCQkJICAgICAgc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2Vk
KQo+ICB7Cj4gIAlpbnQgcmV0ID0gMDsKPiBAQCAtMjM3LDEwICsyMzgsMTUgQEAgc3RhdGljIHNz
aXplX3Qgc29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJCQkJICAgIGZp
bGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICAJcmV0
ID0gbHdpcF93cml0ZXYoZmlsZS0+c29ja19mZCwgYnVmLT51aW9faW92LCBidWYtPnVpb19pb3Zj
bnQpOwo+IC0JcmV0dXJuIHJldDsKPiArCS8qIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJucyAt
MSBpbiBjYXNlIG9mIGVycm9yICovCj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+
ICsKPiArCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1z
dGF0aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiArc3Rh
dGljIGludCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiAgCQkJICAgICBz
dHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUgX191bnVzZWQsCj4gIAkJCSAgICAgc3Ry
dWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQo+ICB7Cj4gQEAgLTI1Myw3ICsyNTks
MTIgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUs
Cj4gIAkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxlLT5zb2Nr
X2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3JlYWR2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwg
YnVmLT51aW9faW92Y250KTsKPiAtCXJldHVybiByZXQ7Cj4gKwkvKiBsd2lwIHNldHMgZXJybm8g
YW5kIHJldHVybnMgLTEgaW4gY2FzZSBvZiBlcnJvciAqLwo+ICsJaWYgKHJldCA8IDApCj4gKwkJ
cmV0dXJuIHJldDsKPiArCj4gKwlidWYtPnVpb19yZXNpZCAtPSByZXQ7Cj4gKwlyZXR1cm4gMDsK
PiAgfQo+ICAKPiAgI2RlZmluZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3Qp
IHZmc2NvcmVfdm9wX251bGxvcCkKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 09:49:17 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 09:49: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 1hg4YG-0003Xy-Hl; Wed, 26 Jun 2019 09:49:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg4YF-0003Xt-7H
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 09:49:15 +0000
X-Inumbo-ID: a787d30e-97f7-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a787d30e-97f7-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 09:49:14 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id x17so1925293wrl.9
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 02:49:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=oskp+vtEWj8pFet3Fha+kTiRcWML5Spluzvwb+HfUFY=;
 b=sf/UQd7xHS1SxB4F7LhgO6tI1IhIzznKSSKD8l4iIVYgf2LYHpN0YmihdYKoyZk749
 Bfg6IBK2BaQo579gLeqE/53u3mBxbTewB7fojEWFNM8rAoTMmOOVOLqjnwQVM7ZTZOHe
 0ATRYeFz+Swsftm7ieM6bDMN9juyR7Y07rRVAdGCV1avKPE10yYU3xiX6A5hMbwvY17X
 1UWPY8hqInLjw/j4oZ/bo0dww4lQ8sGuwEk6Gcp2gvpTBmmnIKSzIFW9OTocASIQxUFg
 eL4XoVWvv/9gNIRSS7wdVCwkzSf2U+DWheuYVCa/tzc/kzSOOqVamveQuNIK3wvjxKMx
 BgRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=oskp+vtEWj8pFet3Fha+kTiRcWML5Spluzvwb+HfUFY=;
 b=EyZ+f3BJj/5ihu1xe4wGh5Xmm5HzVeHHOXcp82MhbCN68ZLzJIR1weNvucxIzCtDdu
 uf8wsCn3S8aBuSO71bod2zD8OTN+6mueGvQSoJ4YkY6tz+xx2XgnTh9vGsJtmsKgyTf1
 MfRLpugzMBpqYvzDBRp1KXe5CJ2YD7AJ41jIDaKrpr1Yxzk3lyD0LAKXTkwcQRV08Lyr
 7C/l8J8TZsDYOKHKsTNKmsdM9SyJgftLW22ttVAKgW9IFCFhHukYoFpDzilJOXpkIVnd
 gxd5b3BdCp0f3RVGoeK2QUGQ+/6sKnQa0mTBU/WS8a/IaQObCseXyZPbAvXAxr9c8qPb
 w1+Q==
X-Gm-Message-State: APjAAAUqdwIcGv4Bjg8tWFIWaXjAG3dxAoX3OXVG/n+AIZbPcFdfVGlI
 ZJCqeDwSrPob3+3EbAP6D0zRpUcj
X-Google-Smtp-Source: APXvYqzmfYAEkSxNReVn1rdbFtvF2kEMWUMvp4nIxhADYrt2c7S1s8V7I4KiklgQPf2CiMsZe5cCkw==
X-Received: by 2002:adf:fed0:: with SMTP id q16mr2829408wrs.127.1561542553107; 
 Wed, 26 Jun 2019 02:49:13 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id h133sm1278798wme.28.2019.06.26.02.49.12
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 02:49:12 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
 <20190626015438.11046-6-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <765c7f52-ef24-50ed-f482-1bcf31f4b804@gmail.com>
Date: Wed, 26 Jun 2019 12:49:11 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015438.11046-6-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH 5/7] Change the return of
 errors to match vfs expectations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgTWloYWksCgpBIHN1YmplY3Qgc3VnZ2VzdGlvbiB3b3VsZCBiZSAic29ja2V0cy5jOiBDaGFu
Z2UgZXJyb3IgaGFuZGxpbmcgdG8gbWF0Y2gKdmZzIGV4cGVjdGF0aW9ucyIgKGJ0dywgdXNpbmcg
cGF0aCBwcmVmaXhlcywgc3VjaCBhcyAnc29ja2V0cy5jOiAnLApoZWxwcyBpbiBsaW1pdGluZyB0
aGUgc2NvcGUgb2YgdGhlIGZpeCwgaS5lLiBvbmUgY2FuIHVuZGVyc3RhbmRpbmcgdGhhdAppdCBm
aXhlcyBvbmx5IGluIHRoZSBnaXZlbiBmaWxlKS4KClRoZSBjb21taXQgbWVzc2FnZSBzaG91bGRu
J3QgYmUgZW1wdHkgYW5kIHNheSBzb21ldGhpbmcgYWJvdXQgdGhlIHZmcwpleHBlY3RhdGlvbnMu
IEkga25vdyB5b3Ugc2FpZCBpdCBpbiB0aGUgY29tbWVudHMsIGJ1dCBpdCBoZWxwcyBwdXR0aW5n
Cml0IGluIHRoZSBjb21taXQgbWVzc2FnZSBhcyB3ZWxsIGJlY2F1c2UgaXQgaXMgdGhlIGZpcnN0
IHRoaW5nIG9uZSBzZWVzCm9uZSByZWFkaW5nL3Jldmlld2luZyB0aGUgcGF0Y2guCgpPbiA2LzI2
LzE5IDQ6NTQgQU0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IE1paGFp
IFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgc29ja2V0cy5jIHwg
MjMgKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlv
bnMoKyksIDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3NvY2tldHMuYyBiL3NvY2tl
dHMuYwo+IGluZGV4IDFhM2RkZmQuLjM4NjM5ZjggMTAwNjQ0Cj4gLS0tIGEvc29ja2V0cy5jCj4g
KysrIGIvc29ja2V0cy5jCj4gQEAgLTIzNyw5ICsyMzcsMTggQEAgc3RhdGljIGludCBzb2NrX25l
dF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAkvKgo+ICAJICogRnJlZSBzb2NrZXQg
ZmlsZQo+ICAJICogVGhlIHJlc3Qgb2YgdGhlIHJlc291cmNlcyB3aWxsIGJlIGZyZWVkIGJ5IHZm
cwo+ICsJICoKPiArCSAqIFRPRE86IHZmcyBpZ25vcmVzIGNsb3NlIGVycm9ycyByaWdodCBub3cs
IHNvIGZyZWUgb3VyIGZpbGUKPiAgCSAqLwo+ICAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVs
dCgpLCBmaWxlKTsKPiAgCj4gKwkvKgo+ICsJICogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5z
IC0xIGluIGNhc2Ugb2YgZXJyb3IsIGJ1dAo+ICsJICogdmZzIGV4cGVjdHMgdXMgdG8gcmV0dXJu
IGEgcG9zaXRpdmUgZXJybm8KPiArCSAqLwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIGVy
cm5vOwo+ICsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTI1NSw5ICsyNjQsMTIgQEAg
c3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAkJCQkg
ICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4g
IAlyZXQgPSBsd2lwX3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlv
X2lvdmNudCk7Cj4gLQkvKiBsd2lwIHNldHMgZXJybm8gYW5kIHJldHVybnMgLTEgaW4gY2FzZSBv
ZiBlcnJvciAqLwo+ICsJLyoKPiArCSAqIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJucyAtMSBp
biBjYXNlIG9mIGVycm9yLCBidXQKPiArCSAqIHZmcyBleHBlY3RzIHVzIHRvIHJldHVybiBhIHBv
c2l0aXZlIGVycm5vCj4gKwkgKi8KPiAgCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4g
KwkJcmV0dXJuIGVycm5vOwo+ICAKPiAgCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKPiAgCXJldHVy
biAwOwo+IEBAIC0yNzYsOSArMjg4LDEyIEBAIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1
Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAg
CQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3JlYWR2KGZpbGUtPnNvY2tf
ZmQsIGJ1Zi0+dWlvX2lvdiwgYnVmLT51aW9faW92Y250KTsKPiAtCS8qIGx3aXAgc2V0cyBlcnJu
byBhbmQgcmV0dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yICovCj4gKwkvKgo+ICsJICogbHdpcCBz
ZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ugb2YgZXJyb3IsIGJ1dAo+ICsJICogdmZz
IGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9zaXRpdmUgZXJybm8KPiArCSAqLwo+ICAJaWYgKHJl
dCA8IDApCj4gLQkJcmV0dXJuIHJldDsKPiArCQlyZXR1cm4gZXJybm87Cj4gIAo+ICAJYnVmLT51
aW9fcmVzaWQgLT0gcmV0Owo+ICAJcmV0dXJuIDA7Cj4gCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Jun 26 09:50:48 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 26 Jun 2019 09:50: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 1hg4Zj-00048D-Mq; Wed, 26 Jun 2019 09:50:47 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qCE0=UZ=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hg4Zi-000487-H9
 for minios-devel@lists.xen.org; Wed, 26 Jun 2019 09:50:46 +0000
X-Inumbo-ID: ddca5728-97f7-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ddca5728-97f7-11e9-8980-bc764e045a96;
 Wed, 26 Jun 2019 09:50:45 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id v14so1954530wrr.4
 for <minios-devel@lists.xen.org>; Wed, 26 Jun 2019 02:50:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=zmeBtKl3y+SjIPNHcZn/HKVu2lxFLSCtCRzoYJiGIdw=;
 b=JrjvycCYu99u6jGMWv2LIxlOYIXdEOamVV4umZ+bfB/Rp1lFcA5pEJRUBv9Dr9Arl4
 jzTWWqgOSc7GbJHWqEHnrHQPmzmF6oMYHsXHsFNKJ6wIwlJfdiU5fFCYa51m/slsmCLc
 SOXdrCZnJaw6VsfglQ2yPP7S8Fzkou8eBR3Idb6m0udz7ScUtZwng27977V+te+eXupq
 3bEGU7wY/YyDTZlv4Ulhz6kF2aWZqbcU+rcXeqYpEpySTmOwOB+bAPyJcTnD2kUNFT8b
 f00f77A3I2bdSMnOjXZr4o3mcVFEP7PoTXz4PRayjEihir7wDzu/qiNYIoKpkkneubnk
 oeOw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=zmeBtKl3y+SjIPNHcZn/HKVu2lxFLSCtCRzoYJiGIdw=;
 b=nMXuzVm/NBZo5uk4o93Yh51STgfqusHAkignmGCIDEh+m546kZsMpkP6mcpKyZ+2kb
 jTDutn2ZDAMQ2UGXOe+jH/K0iu2wY6X1R85s7yOV+1Tj7GXTOYkGYi0VtkkUCrrDyEJO
 rqOIWqvU6XML6QklIiq5+7n6x12nEgGIcgpeeP2EIhF0fLQivbRkQehgk4wEf7hoPU4n
 1lda4mR1Gbdee6VJ+ffIFsctIqBA1ilDEY3HAQErUkr1m5t9M0JL4MDK/sl6Mdlyx/Wk
 VXZrwqELkIl4WBWtXzYWvJ8FqZm7R1BAVL4GF8L8w9V9hSFXi/T++88GyOugKYIKMqvd
 sFxg==
X-Gm-Message-State: APjAAAWpXEWiFkKqYcyrRj54vh+k88hyQXjkJDEBdRSpt2ICekEBND2A
 Acyl2QlulmRKe/R7ICQGhjY=
X-Google-Smtp-Source: APXvYqy6xnhp34RF9aN2SSWMBPxsQN3m00C104ZcNdRT6QQwlQhfbK9q2djnNKsljb6lfaDsZxKuGw==
X-Received: by 2002:adf:df10:: with SMTP id y16mr3024277wrl.302.1561542644168; 
 Wed, 26 Jun 2019 02:50:44 -0700 (PDT)
Received: from [172.19.2.117] ([141.85.233.142])
 by smtp.gmail.com with ESMTPSA id o20sm20370499wro.65.2019.06.26.02.50.43
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 26 Jun 2019 02:50:43 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190626015438.11046-1-pogonarumihai@gmail.com>
 <20190626015438.11046-7-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <5b06f892-422a-a51f-06cf-bb4578258fd2@gmail.com>
Date: Wed, 26 Jun 2019 12:50:43 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190626015438.11046-7-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH 6/7] Provide ioctl for 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: costin.lupu@cs.pub.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>

VGhpcyBpcyBmaW5lIGFuZCBzZWxmLWV4cGxhbmF0b3J5LgoKUmV2aWV3ZWQtYnk6IENvc3RpbiBM
dXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI2LzE5IDQ6NTQgQU0sIE1paGFpIFBv
Z29uYXJ1IHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1p
aGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgZXhwb3J0c3ltcy51ayAgICAgICAgfCAgMSAtCj4gIGlu
Y2x1ZGUvc3lzL3NvY2tldC5oIHwgIDIgLS0KPiAgc29ja2V0cy5jICAgICAgICAgICAgfCAyMCAr
KysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyks
IDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRz
eW1zLnVrCj4gaW5kZXggMzc1YTc4OS4uMTBjMWFiOCAxMDA2NDQKPiAtLS0gYS9leHBvcnRzeW1z
LnVrCj4gKysrIGIvZXhwb3J0c3ltcy51awo+IEBAIC02LDcgKzYsNiBAQCBnZXRzb2NrbmFtZQo+
ICBnZXRzb2Nrb3B0Cj4gIGxpYmx3aXBfaW5pdAo+ICBsaXN0ZW4KPiAtbHdpcF9pb2N0bAo+ICBs
d2lwX2h0b25sCj4gIGx3aXBfaHRvbnMKPiAgbHdpcF9nZXRob3N0YnluYW1lCj4gZGlmZiAtLWdp
dCBhL2luY2x1ZGUvc3lzL3NvY2tldC5oIGIvaW5jbHVkZS9zeXMvc29ja2V0LmgKPiBpbmRleCA0
MmJhZDZjLi43YThhY2EwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvc3lzL3NvY2tldC5oCj4gKysr
IGIvaW5jbHVkZS9zeXMvc29ja2V0LmgKPiBAQCAtNTIsOCArNTIsNiBAQAo+ICAjZGVmaW5lIFNP
Q0tfU0VRUEFDS0VUIDUKPiAgI2VuZGlmCj4gIAo+IC0jZGVmaW5lIGlvY3RsKHMsIGNtZCwgYXJn
cCkgbHdpcF9pb2N0bChzLCBjbWQsIGFyZ3ApCj4gLQo+ICBpbnQgc29ja2V0KGludCBkb21haW4s
IGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOwo+ICBpbnQgYWNjZXB0KGludCBzLCBzdHJ1Y3Qgc29j
a2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbik7Cj4gIGludCBiaW5kKGludCBzLCBjb25z
dCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKTsKPiBkaWZmIC0tZ2l0
IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggMzg2MzlmOC4uYWE3NzJkYSAxMDA2NDQK
PiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAtNTcsNiArNTcsMTAgQEAg
c3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIHN0YXRp
YyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAkJCXN0cnVjdCB2
ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKPiAgCQkJc3RydWN0IHVpbyAqYnVm
LCBpbnQgaW9mbGFnIF9fdW51c2VkKTsKPiArc3RhdGljIGludCBzb2NrX25ldF9pb2N0bChzdHJ1
Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gKwkJCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmls
ZSBfX3VudXNlZCwKPiArCQkJdW5zaWduZWQgbG9uZyByZXF1ZXN0LAo+ICsJCQl2b2lkICpidWYp
Owo+ICAKPiAgI2RlZmluZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpIHZm
c2NvcmVfdm9wX251bGxvcCkKPiAgCj4gQEAgLTY0LDYgKzY4LDcgQEAgc3RhdGljIHN0cnVjdCB2
bm9wcyBzb2NrX25ldF92bm9wcyA9IHsKPiAgCS52b3BfY2xvc2UgPSBzb2NrX25ldF9jbG9zZSwK
PiAgCS52b3Bfd3JpdGUgPSBzb2NrX25ldF93cml0ZSwKPiAgCS52b3BfcmVhZCAgPSBzb2NrX25l
dF9yZWFkLAo+ICsJLnZvcF9pb2N0bCA9IHNvY2tfbmV0X2lvY3RsLAo+ICAJLnZvcF9pbmFjdGl2
ZSA9IHNvY2tfbmV0X2luYWN0aXZlCj4gIH07Cj4gIAo+IEBAIC0yOTksNiArMzA0LDIxIEBAIHN0
YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAlyZXR1cm4g
MDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBzb2NrX25ldF9pb2N0bChzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCj4gKwkJCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwK
PiArCQkJdW5zaWduZWQgbG9uZyByZXF1ZXN0LAo+ICsJCQl2b2lkICpidWYpCj4gK3sKPiArCXN0
cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4gKwlmaWxlID0gc192bm9kZS0+
dl9kYXRhOwo+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCIlcyBmZDolZCBsd2lwX2Zk
OiVkXG4iLAo+ICsJCQkJICAgIF9fZnVuY19fLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmls
ZS0+ZmQsCj4gKwkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICsJcmV0dXJuIGx3aXBfaW9jdGwo
ZmlsZS0+c29ja19mZCwgcmVxdWVzdCwgYnVmKTsKPiArfQo+ICsKPiAgaW50IHNvY2tldChpbnQg
ZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQo+ICB7Cj4gIAlpbnQgcmV0ID0gMDsKPiAK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 06:21:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 06:21: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 1hgNmW-0002Ak-Ph; Thu, 27 Jun 2019 06:21:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgNmV-0002Af-I3
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 06:21:15 +0000
X-Inumbo-ID: c27ddf24-98a3-11e9-8980-bc764e045a96
Received: from EUR03-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe09::60a])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c27ddf24-98a3-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 06:21:13 +0000 (UTC)
ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none;
 b=OEjHDLR8NwgajdAP8d6AP/xZFaWcihhY+FG8U3qWj7osIEewT3FxgANAI1sgiMDlemAG2p3DlrI14gUDMnGRXcCZJ5jL66hKUeUm7bHsSX+HIACS6yLhX/Al/LV8veZAeXG9h37qTZE/tGcxPMKlU0HOnCFwxbyaNwRDyYLAA0w=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=testarcselector01;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=FRO+KXq1sC7mRBO4amW+qJvVrjGjCYJhgujAvbMTs8g=;
 b=yT0PCE2MFWitG64yrfEOsSB15kWExjkJoXQLWwpyU0MRsvcyJ1i9bXKiPcI0sr8kfMRgSKxE+8jMLb4S/NUqEbqnkquC4gsj/Z5lacn0dwo1Tnu9jI0eVvSWNBmgbMQXm7sLsxQe5B7iaDDq6YyPPvr8H5uVA7WJIZnHdxuD1cQ=
ARC-Authentication-Results: i=1; test.office365.com
 1;spf=none;dmarc=none;dkim=none;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=FRO+KXq1sC7mRBO4amW+qJvVrjGjCYJhgujAvbMTs8g=;
 b=dIjLq3nWCmWI0fh6SEsCjCHwmUjxyQh7lleb+Xje0u/xhnQElzEvBlROAm5o7qQ0ZDtEpvnfqjkWychQZR9IX47wuNY5R4736V5lxT7hL1M4VwpW2N1EcsU0n1iY23nM3Ck6BHs+ycJa9my81yiLbClJHoYiUjrSbrofMJFNMtU=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3788.eurprd08.prod.outlook.com (20.178.84.205) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2008.16; Thu, 27 Jun 2019 06:21:11 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::64e3:d89a:9e3:f435]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::64e3:d89a:9e3:f435%6]) with mapi id 15.20.2008.014; Thu, 27 Jun 2019
 06:21:11 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Julien Grall <Julien.Grall@arm.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>, Simon Kuenzer <simon.kuenzer@neclab.eu>, 
 "Sharan.Santhanam@neclab.eu" <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT early RFC PATCH 00/11] Enble early SMP support on
 arm64 kvm plat
Thread-Index: AQHVJ/6vjr8oC49Y4Uynz/BJYAUxxqamPTcAgAjTRcA=
Date: Thu, 27 Jun 2019 06:21:10 +0000
Message-ID: <DB7PR08MB3082FF71D5833F9C31B5C5D9F7FD0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190621065747.21031-1-justin.he@arm.com>
 <a352a0b1-4c9e-91e8-1650-004fe2e9a759@arm.com>
In-Reply-To: <a352a0b1-4c9e-91e8-1650-004fe2e9a759@arm.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: f9b8b24f-e4f6-4b2c-a572-3eacbbd4c5dc.1
x-checkrecipientchecked: true
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 39d6e79a-f928-4fe1-34c8-08d6fac7a603
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:DB7PR08MB3788; 
x-ms-traffictypediagnostic: DB7PR08MB3788:
x-microsoft-antispam-prvs: <DB7PR08MB3788EF9D03B53EEE2F338A34F7FD0@DB7PR08MB3788.eurprd08.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 008184426E
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(396003)(136003)(39860400002)(366004)(346002)(376002)(189003)(51914003)(40434004)(199004)(13464003)(14454004)(71200400001)(7696005)(33656002)(71190400001)(25786009)(14444005)(256004)(5024004)(2501003)(6436002)(54906003)(66066001)(110136005)(4326008)(6246003)(316002)(6506007)(102836004)(72206003)(229853002)(53546011)(81156014)(2906002)(66946007)(68736007)(99286004)(66556008)(66446008)(66476007)(11346002)(9686003)(55016002)(26005)(64756008)(6116002)(73956011)(81166006)(186003)(3846002)(76116006)(74316002)(7736002)(486006)(5660300002)(305945005)(52536014)(478600001)(53936002)(8676002)(8936002)(476003)(86362001)(446003)(76176011)(55236004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3788;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: qKqKn/5uETM7VY+QVe0fnOFQV159sJxqs6PeRG6XE0d62IufDDXJrC5L4r6+Vw840lRXDnx3hocyneHvkRe3cSVpfpL8zOEknmFVzc1pQgx0iRyXJ9xf0U5N7//q/mK4QRf1vIRnRDfK6ePS4VWuXxGaQg2ZMbbj4GtMb1Tl6dBuG3c4gxhivTyzxsPzJxjpa0I/92uJUUC/Lmc57AgCeTLEx3kkbrG41PgHUnyr++wuxcbWut4+ldmiP/iL/y7dpGJNh/kLC5uuI23li+5ErXALQzI/CjBQNNPKB6pCt6QQKNDIh4of8MuH2sLdRghSdP0UMURAipyY52eRsg6/lq9UgWyj6DOXeTJT7D6vcu6bDg5TUqyuWLy+X11vIePn0z6+4plixeXArAFBCHw+tDiJWlCfUrbdlojSJh21CJ4=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 39d6e79a-f928-4fe1-34c8-08d6fac7a603
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2019 06:21:10.9218 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Justin.He@arm.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3788
Subject: Re: [Minios-devel] [UNIKRAFT early RFC PATCH 00/11] Enble early SMP
 support 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>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgSnVsaWVuDQpUaGFua3MgZm9yIHRoZSBjb21tZW50cy4NCkkgd2lsbCByZWNvcmQgYWxsIG9m
IHlvdXIgY29tbWVudHMgYWJvdXQgc21wIHN1cHBvcnQgc2VyaWVzIGFuZCBhZGRyZXNzIHRoZW0g
YWZ0ZXIgYSB3aGlsZSBpbiBuZXh0IHZlcnNpb24uDQoNCi0tDQpDaGVlcnMsDQpKdXN0aW4gKEpp
YSBIZSkNCg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSnVsaWVu
IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4NCj4gU2VudDogMjAxOeW5tDbmnIgyMeaXpSAy
MzozMw0KPiBUbzogSnVzdGluIEhlIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPEp1c3Rpbi5IZUBh
cm0uY29tPjsgbWluaW9zLQ0KPiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ow0KPiBTaGFyYW4uU2FudGhhbmFtQG5lY2xh
Yi5ldQ0KPiBDYzogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pjsg
RmVsaXBlIEh1aWNpDQo+IDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PjsgeXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU7IEthbHkgWGluIChBcm0NCj4gVGVjaG5vbG9neSBDaGluYSkgPEthbHkuWGluQGFy
bS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbVU5JS1JBRlQgZWFybHkgUkZDIFBBVENIIDAwLzExXSBF
bmJsZSBlYXJseSBTTVAgc3VwcG9ydCBvbg0KPiBhcm02NCBrdm0gcGxhdA0KPg0KPiBIaSwNCj4N
Cj4gVGhhbmsgeW91IGZvciBzZW5kaW5nIHRoZSBzZXJpZXMuDQo+DQo+IE9uIDIxLzA2LzIwMTkg
MDc6NTcsIEppYSBIZSB3cm90ZToNCj4gPiBUaGlzIGlzIHRoZSBlYXJseSBTTVAgc3VwcG9ydCBv
biBhcm02NCBrdm0gcGxhdCB3aGljaCBiYXNlZCBvbiBwcmV2aW91cw0KPiBzZXJpZXMgIzEtIzUN
Cj4NCj4gQSByZXZpZXdlciBtYXkgaGF2ZSBubyBpZGVhIHdoYXQgYXJlICJzZXJpZXMgIzEgLSAj
NSIuIFNvIEkgd291bGQNCj4gcmVjb21tZW5kIHRvDQo+IGdpdmUgcG9pbnRlciB0byBlYWNoIG9m
IHRoZW0uIEFsc28sIGZvciBlYXNpbmcgcmV2aWV3LCBpdCBpcyBuaWNlIHRvIGhhdmUgYSByZXBv
DQo+IHdpdGggZXZlcnl0aGluZyBhcHBsaWVkLg0KPg0KPiBCdXQgSSB0aGluayBiYXNpbmcgeW91
ciB3b3JrIG9uIDYgZGlmZmVyZW50IHNlcmllcyBpcyBub3QgcmVhbGx5IHdpc2UuIEZvciBhDQo+
IGZpcnN0LCB0aGVyZSB3YXMgYSBsb3Qgb2YgY29tbWVudHMgb24gdGhvc2Ugc2VyaWVzLiBEb2Vz
IGl0IG1lYW4gdGhpcyBpcyBiZWZvcmUNCj4gb3IgYWZ0ZXIgdGhlbSBhZGRyZXNzZWQ/DQo+DQo+
IFNlY29uZGx5IHRoaXMgaXMgbWFraW5nIG1vcmUgZGlmZmljdWx0IHRvIGdvIHRocm91Z2ggdGhl
IGNvZGUgYW5kIHBvdGVudGlhbGx5DQo+IGZvciB5b3UgdG8gYWRkcmVzcyBjb21tZW50LiBNYXkg
SSByZWNvbW1lbmQgdG8gZm9jdXMgb24gdGhlIGdldHRpbmcgc2VyaWVzDQo+ICMxLSM1DQo+IHRv
IGJlIG1lcmdlZD8NCj4NCj4gPg0KPiA+IE1vc3Qgb2YgdGhlIGNvZGVzIHJlZmVyIHRvIHRoZSBp
bXBsZW1lbnRhdGlvbiBpbiBmcmVlYnNkLg0KPg0KPiBTb21lIGdlbmVyYWwgY29tbWVudHMgaGVy
ZS4gSSBrbm93IHRoaXMgaXMgYW4gZWFybHkgUkZDLCBidXQgSSB3aWxsIHBvaW50IG91dA0KPiBm
b3IgdGhlIG5leHQgc2VyaWVzIDopLg0KPg0KPiAxKSBQbGVhc2UgYmUgbW9yZSB2ZXJib3NlIGlu
IHRoZSBjb21taXQgbWVzc2FnZS4gVGhpcyBpcyBoZWxwZnVsIGZvcg0KPiByZXZpZXdlcg0KPiBh
bmQgZnV0dXJlIGRldmVsb3BlcnMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBwYXRjaCBkb2VzDQo+
IDIpIFlvdSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhlIEdJQyBjb2RlIFNNUCBzYWZlLiBBbHNv
LCB0aGUgR0lDDQo+IENQVSBJRCBtYXkgYmUNCj4gZGlmZmVyZW50IGZyb20gdGhlIE1JRFIgKHlv
dSBkb24ndCB3YW50IHRvIHJvdXRlIGludGVycnVwdCB0byB0aGUgd3JvbmcNCj4gQ1BVIDspKS4N
Cj4gMykgSXQgbG9va3MgbGlrZSBzcGlubG9jayBpcyBwcmV0dHkgbXVjaCBhIE5PUCB0b2RheS4g
SXMgdGhlcmUgYW55IHBsYW4NCj4gdG8NCj4gYWRkcmVzcyB0aGlzPw0KPg0KPiBDaGVlcnMsDQo+
DQo+ID4NCj4gPiBKaWEgSGUgKDExKToNCj4gPiAgICBsaWIvbm9saWJjOiBJbnRyb2R1Y2UgbmRl
bGF5IGFuZCBtZGVsYXkgZm9yIGJ1c3kgd2FpdA0KPiA+ICAgIHBsYXQvY29tbW9uL29mdzogTW92
ZSBmZHRfcmVnX3JlYWRfbnVtYmVyIHRvIGhlYWRlciBmaWxlIGZvciBzdGF0aWMNCj4gPiAgICAg
IGlubGluZQ0KPiA+ICAgIHBsYXQva3ZtL3NtcDogQWRkIHBzY2kgY2FsbCBkZWZpbml0aW9ucyBp
biBwc2NpLmgNCj4gPiAgICBwbGF0L2t2bS9zbXA6IEFkZCBzbXAgZGVmaW5pdGlvbnMgaW4gc21w
LmgNCj4gPiAgICBwbGF0L2t2bS9zbXA6IEFkZCBwc2NpIGNhbGwgcHNjaV9jcHVfb24NCj4gPiAg
ICBwbGF0L2t2bTogYXJtNjQ6IEFkZCBhIHBhcmFtZXRlciB0byBzdGFydF9tbXUNCj4gPiAgICBw
bGF0L2t2bTogYXJtNjQ6IEFkZCBlbnRyeSBwb2ludCBmb3IgQVBzIChzZWNvbmRhcnkgY3B1cykN
Cj4gPiAgICBwbGF0L2t2bS9hcm06IEltcGxlbWVudCBzbXAgYm9vdCBvbiBhcm02NCBrdm0gcGxh
dA0KPiA+ICAgIHBsYXQva3ZtL2FybTogQWRkIHNpbXBsZSBwZXJjcHUgdmFyaWFibGUgc3VwcG9y
dA0KPiA+ICAgIGxpYi91a2Jvb3Q6IEVuYWJsZSBDT05GSUdfU01QIGZvciBhcm02NA0KPiA+ICAg
IHBsYXQva3ZtL2FybTogRW5hYmxlIHNjaGVkdWxlciBvbiBzZWNvbmRhcnkgQVBzDQo+ID4NCj4g
PiAgIGxpYi9ub2xpYmMvZXhwb3J0c3ltcy51ayAgICAgICB8ICAgNCArDQo+ID4gICBsaWIvbm9s
aWJjL2luY2x1ZGUvdGltZS5oICAgICAgfCAgIDMgKw0KPiA+ICAgbGliL25vbGliYy90aW1lLmMg
ICAgICAgICAgICAgIHwgIDE2ICsrLQ0KPiA+ICAgbGliL3VrYm9vdC9Db25maWcudWsgICAgICAg
ICAgIHwgICA1ICsNCj4gPiAgIGxpYi91a2Jvb3QvTWFrZWZpbGUudWsgICAgICAgICB8ICAgMSAr
DQo+ID4gICBsaWIvdWtib290L2Jvb3QuYyAgICAgICAgICAgICAgfCAgMTUgKysrDQo+ID4gICBw
bGF0L2NvbW1vbi9pbmNsdWRlL2FybS9wc2NpLmggfCAgODcgKysrKysrKysrKysrDQo+ID4gICBw
bGF0L2NvbW1vbi9pbmNsdWRlL3NtcC5oICAgICAgfCAgNDkgKysrKysrKw0KPiA+ICAgcGxhdC9k
cml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIHwgIDE3ICsrLQ0KPiA+ICAgcGxhdC9kcml2ZXJzL29m
dy9mZHQuYyAgICAgICAgIHwgIDE3ICstLQ0KPiA+ICAgcGxhdC9rdm0vTWFrZWZpbGUudWsgICAg
ICAgICAgIHwgICAxICsNCj4gPiAgIHBsYXQva3ZtL2FybS9lbnRyeTY0LlMgICAgICAgICB8ICAz
MSArKysrKw0KPiA+ICAgcGxhdC9rdm0vYXJtL3BhZ2V0YWJsZTY0LlMgICAgIHwgICA3ICstDQo+
ID4gICBwbGF0L2t2bS9hcm0vc2V0dXAuYyAgICAgICAgICAgfCAyMzMgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrDQo+ID4gICAxNCBmaWxlcyBjaGFuZ2VkLCA0NjYgaW5zZXJ0aW9u
cygrKSwgMjAgZGVsZXRpb25zKC0pDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21t
b24vaW5jbHVkZS9hcm0vcHNjaS5oDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9jb21t
b24vaW5jbHVkZS9zbXAuaA0KPiA+DQo+DQo+IC0tDQo+IEp1bGllbiBHcmFsbA0KSU1QT1JUQU5U
IE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBh
cmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5v
dCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRp
YXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNv
biwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRp
b24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:27 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55: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 1hgPFd-0000cE-QH; Thu, 27 Jun 2019 07:55:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFc-0000c9-KZ
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:24 +0000
X-Inumbo-ID: ead7212a-98b0-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ead7212a-98b0-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 07:55: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 2B94E360;
 Thu, 27 Jun 2019 00:55:23 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2E9583F246;
 Thu, 27 Jun 2019 00:55:21 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:04 +0800
Message-Id: <20190627075512.90692-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT PATCHv7 0/8] Add frequently usd APIs to
 fdt(series#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 <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

QXJtNjQgZGV2aWNlcyBsaWJyYXJpZXMgd2lsbCBhY2Nlc3MgZGV2aWNlIHRyZWUgdG8gZ2V0IGxv
dHMgb2YKcHJvcGVydGllcy4gV2Ugd2lsbCBnZXQgZGV2aWNlIGFkZHJlc3NlcywgaW50ZXJydXB0
cyBpbiBlYWNoIGRldmljZQpsaWJyYXJ5LiBJbiB0aGlzIGNhc2UsIHdlIHdpbGwgZmluZCBkZXZp
Y2Ugbm9kZSBieSBvZmZzZXQsIGdldCBhZGRyZXNzCmNlbGxzLCBzaXplIGNlbGxzIGFuZCBpbnRl
cnJ1cHQgY2VsbHMgZXZlcnl3aGVyZS4KClRoaXMgcGF0Y2ggc2VyaWVzIGludHJvZHVjZXMgc2Vy
dmVyYWwgQVBJcyBpbiBsaWIvZmR0IHRvIHJlZHVjZSB0aGUKcmVkdW5kYW50IGNhbGxzIG9mIGZk
dCBmdW5jdGlvbnMuCi0tLQpDaGFuZ2VzOgp2Ni0+djc6CiAgbW92ZSBmZHRfcmVnX3JlYWRfbnVt
YmVyIHRvIGhlYWRlciBmaWxlIGZvciBzdGF0aWMgaW5saW5lCnY1LT52NjoKICBmaXggb25lIHNt
YWxsIGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gcGF0Y2ggMDcKdjQtPnY1OgogIDEuYWRkcmVzcyBT
aGFyYW4ncyBjb21tZW50CiAgMi5yZW1vdmUgZmR0X3thZGRyZXNzLHNpemV9X2NlbGxzX29yX3Bh
cmVudCBoZWxwZXJzIGFzIHBlciBjb21tZW50cwogICAgZnJvbSBsaWJmZHQgYXV0aG9yCnYzLT52
NDogYWRkcmVzcyB0aGUgY29tbWVudHMgZnJvbSBKdWxpZW4uCiAgMS5hZGQgZmR0IHRyYW5zbGF0
ZSBhZGRyZXNzIHBhdGNoMDUgdG8gaGFuZGxlIHRoZSAicmFuZ2VzIiBwcm9wZXJ0eQogIDIuYWRk
IGZkdF97YWRkcmVzcyxzaXplfV9jZWxsc19vcl9wYXJlbnQgaGVscGVycyBwYXRjaDA0CiAgMy5m
aXggYSBkZWZhdWx0IHZhbHVlIGJ1ZyB3aGljaCBkb2Vzbid0IGZvbGxvdyBEVCBzcGVjCnYyLT52
MzogYWRkcmVzcyB0aGUgY29tbWVudHMgZnJvbSBKdWxpZW4uCiAgMS5yZW1vdmUgZmR0X2dldF9j
ZWxscyB0byBrZWVwIGxpYmZkdCB1bmNoYW5nZWQKICAyLnBhcnNlICJpbnRlcnJ1cHQtZXh0ZW5k
ZWQiIGFuZCAicmFuZ2VzIgogIDMucmVtb3ZlIHRoZSBzaXplIHBhcmFtZXRlciBpbiBmZHRfbm9k
ZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0CiAgNC5yZW1vdmUgdGhlIGZkdF9mb3JfZWFjaF9j
b21wYXRpYmxlX25vZGUgd2hpY2ggaXMgbm90IHVzZWQuCnYxLT52MjogcmViYXNlIHRvIGxhdGVz
dCBjb2RlLgoKCkppYSBIZSAoMyk6CiAgZHJpdmVycy9vZnc6IEVuYWJsZSBidWlsZCBzdXBwb3J0
IGZvciBpbnRlcm5hbCBmZHQgaW50ZXJmYWNlcwogIHBsYXQvY29tbW9uOiBBZGQgZmR0IGFkZHJl
c3MgdHJhbnNsYXRpb24gc3VwcG9ydAogIGxpYi9mZHQ6IENoYW5nZSB0aGUgZGVmYXVsdCB2YWx1
ZSBvZiBmZHRfc2l6ZV9jZWxscwoKSmlhbnlvbmcgV3UgKDIpOgogIHBsYXQvY29tbW9uOiBJbnRy
b2R1Y2UgZmR0X2dldHByb3BfdTMyX2J5X29mZnNldCBoZWxwZXIKICBwbGF0L2NvbW1vbjogSW50
cm9kdWNlIGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlX2xpc3QgaGVscGVyCgpXZWkgQ2hl
biAoMyk6CiAgcGxhdC9jb21tb246IEludHJvZHVjZSBmZHRfaW50ZXJydXB0X2NlbGxzIGhlbHBl
ciB0byBwYXJzZSBpcnEKICBwbGF0L2NvbW1vbjogSW50cm9kdWNlIGZkdF9nZXRfYWRkcmVzcyBo
ZWxwZXIKICBwbGF0L2NvbW1vbjogSW50cm9kdWNlIGZkdF9nZXRfaW50ZXJydXB0IGhlbHBlcgoK
IGxpYi9mZHQvZmR0X2FkZHJlc3Nlcy5jICAgICAgICB8ICAgMiArLQogbGliL2ZkdC9pbmNsdWRl
L2xpYmZkdC5oICAgICAgIHwgICAyICstCiBwbGF0L2RyaXZlcnMvaW5jbHVkZS9vZncvZmR0Lmgg
fCAxNjEgKysrKysrKysrKysrKysrKysKIHBsYXQvZHJpdmVycy9vZncvZmR0LmMgICAgICAgICB8
IDMxMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQva3ZtL01ha2VmaWxl
LnVrICAgICAgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDQ3NiBpbnNlcnRpb25zKCsp
LCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy9pbmNsdWRl
L29mdy9mZHQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy9vZncvZmR0LmMKCi0t
IAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:32 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hgPFk-0000db-Rt; Thu, 27 Jun 2019 07:55:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFj-0000dJ-U5
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:31 +0000
X-Inumbo-ID: ef5024b7-98b0-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ef5024b7-98b0-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 07:55:30 +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 910B511D4;
 Thu, 27 Jun 2019 00:55:30 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 754313F246;
 Thu, 27 Jun 2019 00:55:28 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:07 +0800
Message-Id: <20190627075512.90692-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 3/8] plat/common: Introduce
 fdt_interrupt_cells helper to parse irq
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CgpUaGlzIGhlbHBlciByZXRyaWV2ZXMg
dGhlIG51bWJlciBvZiBjZWxscyBieSBzY2FuICIjaW50ZXJydXB0LWNlbGxzIgpwcm9wZXJ0eSBv
ZiBmZHQuCldlIHdpbGwgdXNlIHRoaXMgaGVscGVyIHRvIHBhcnNlIElSUSBudW1iZXIgZm9yIGRl
dmljZXMsIGxpa2UKdGltZXJzIGFuZCBVQVJUcy4KClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhh
bmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KU2lnbmVkLW9mZi1ieTogV2VpIENoZW4g
PHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5j
b20+Ci0tLQogcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIHwgMjAgKysrKysrKysrKysr
KysrKwogcGxhdC9kcml2ZXJzL29mdy9mZHQuYyAgICAgICAgIHwgNDIgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspCgpk
aWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIGIvcGxhdC9kcml2ZXJz
L2luY2x1ZGUvb2Z3L2ZkdC5oCmluZGV4IGMyMDI2NzEuLjdkNDBmYmEgMTAwNjQ0Ci0tLSBhL3Bs
YXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaAorKysgYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS9v
ZncvZmR0LmgKQEAgLTU2LDQgKzU2LDI0IEBACiBpbnQgZmR0X2dldHByb3BfdTMyX2J5X29mZnNl
dChjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0LAogCQljb25zdCBjaGFyICpuYW1lLCB1
aW50MzJfdCAqb3V0KTsKIAorLyoqCisgKiBmZHRfaW50ZXJydXB0X2NlbGxzIC0gcmV0cmlldmUg
dGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgKiAgICAgICAgICAgICAg
ICAgICAgICAgaW50ZXJydXB0IHNvdXJjZQorICogQGZkdDogcG9pbnRlciB0byB0aGUgZGV2aWNl
IHRyZWUgYmxvYgorICogQG5vZGVvZmZzZXQ6IG9mZnNldCBvZiB0aGUgbm9kZSB0byBmaW5kIHRo
ZSBpbnRlcnJ1cHQgZm9yLgorICoKKyAqIFdoZW4gdGhlIG5vZGUgaGFzIGEgdmFsaWQgI2ludGVy
cnVwdC1jZWxscyBwcm9wZXJ0eSwgcmV0dXJucyBpdHMgdmFsdWUuCisgKgorICogcmV0dXJuczoK
KyAqICAgICAwIDw9IG4gPCBGRFRfTUFYX05DRUxMUywgb24gc3VjY2VzcworICogICAgICAtRkRU
X0VSUl9CQUROQ0VMTFMsIGlmIHRoZSBub2RlIGhhcyBhIGJhZGx5IGZvcm1hdHRlZCBvciBpbnZh
bGlkCisgKiAgICAgICAgICAgICAjaW50ZXJydXB0LWNlbGxzIHByb3BlcnR5CisgKiAgICAgLUZE
VF9FUlJfQkFETUFHSUMsCisgKiAgICAgLUZEVF9FUlJfQkFEVkVSU0lPTiwKKyAqICAgICAtRkRU
X0VSUl9CQURTVEFURSwKKyAqICAgICAtRkRUX0VSUl9CQURTVFJVQ1RVUkUsCisgKiAgICAgLUZE
VF9FUlJfVFJVTkNBVEVELCBzdGFuZGFyZCBtZWFuaW5ncworICovCitpbnQgZmR0X2ludGVycnVw
dF9jZWxscyhjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0KTsKKwogI2VuZGlmCmRpZmYg
LS1naXQgYS9wbGF0L2RyaXZlcnMvb2Z3L2ZkdC5jIGIvcGxhdC9kcml2ZXJzL29mdy9mZHQuYwpp
bmRleCBlMjNiN2EzLi5hNTk2ZGYzIDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvb2Z3L2ZkdC5j
CisrKyBiL3BsYXQvZHJpdmVycy9vZncvZmR0LmMKQEAgLTU4LDMgKzU4LDQ1IEBAIGludCBmZHRf
Z2V0cHJvcF91MzJfYnlfb2Zmc2V0KGNvbnN0IHZvaWQgKmZkdCwgaW50IG9mZnNldCwKIAogCXJl
dHVybiAtRkRUX0VSUl9OT1RGT1VORDsKIH0KKworc3RhdGljIGludCBmZHRfZmluZF9pcnFfcGFy
ZW50X29mZnNldChjb25zdCB2b2lkICpmZHQsIGludCBvZmZzZXQpCit7CisJdWludDMyX3QgaXJx
X3BhcmVudDsKKworCWRvIHsKKwkJLyogRmluZCB0aGUgaW50ZXJydXB0LXBhcmVudCBwaGFuZGxl
ICovCisJCWlmICghZmR0X2dldHByb3BfdTMyX2J5X29mZnNldChmZHQsIG9mZnNldCwKKwkJCQki
aW50ZXJydXB0LXBhcmVudCIsICZpcnFfcGFyZW50KSkKKwkJCWJyZWFrOworCisJCS8qIFRyeSB0
byBmaW5kIGluIHBhcmVudCBub2RlICovCisJCW9mZnNldCA9IGZkdF9wYXJlbnRfb2Zmc2V0KGZk
dCwgb2Zmc2V0KTsKKwl9IHdoaWxlIChvZmZzZXQgPj0gMCk7CisKKwlpZiAob2Zmc2V0IDwgMCkK
KwkJcmV0dXJuIG9mZnNldDsKKworCS8qIEdldCBpbnRlcnJ1cHQgcGFyZW50IG5vZGUgYnkgcGhh
bmRsZSAqLworCXJldHVybiBmZHRfbm9kZV9vZmZzZXRfYnlfcGhhbmRsZShmZHQsIGlycV9wYXJl
bnQpOworfQorCitpbnQgZmR0X2ludGVycnVwdF9jZWxscyhjb25zdCB2b2lkICpmZHQsIGludCBv
ZmZzZXQpCit7CisJaW50IGludGNfb2Zmc2V0OworCWludCB2YWw7CisJaW50IHJldDsKKworCWlu
dGNfb2Zmc2V0ID0gZmR0X2ZpbmRfaXJxX3BhcmVudF9vZmZzZXQoZmR0LCBvZmZzZXQpOworCWlm
IChpbnRjX29mZnNldCA8IDApCisJCXJldHVybiBpbnRjX29mZnNldDsKKworCXJldCA9IGZkdF9n
ZXRwcm9wX3UzMl9ieV9vZmZzZXQoZmR0LCBpbnRjX29mZnNldCwgIiNpbnRlcnJ1cHQtY2VsbHMi
LAorCQkJCQkodWludDMyX3QgKikmdmFsKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsK
KworCWlmICgodmFsIDw9IDApIHx8ICh2YWwgPiBGRFRfTUFYX05DRUxMUykpCisJCXJldHVybiAt
RkRUX0VSUl9CQUROQ0VMTFM7CisKKwlyZXR1cm4gdmFsOworfQotLSAKMi4xNy4xCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:33 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55: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 1hgPFl-0000dv-TH; Thu, 27 Jun 2019 07:55:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFk-0000dO-Bd
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:32 +0000
X-Inumbo-ID: edc8cb30-98b0-11e9-bbf8-4ffd41e5c888
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id edc8cb30-98b0-11e9-bbf8-4ffd41e5c888;
 Thu, 27 Jun 2019 07:55:28 +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 20316360;
 Thu, 27 Jun 2019 00:55:28 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 274BE3F246;
 Thu, 27 Jun 2019 00:55:25 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:06 +0800
Message-Id: <20190627075512.90692-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 2/8] drivers/ofw: Enable build
 support for internal fdt interfaces
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

VGhpcyBlbmFibGUgdGhlIGJ1aWxkIHN1cHBvcnQgZm9yIHVuaWtyYWZ0IGludGVybmFsIGZkdCBp
bnRlcmZhY2VzCgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgotLS0K
IHBsYXQva3ZtL01ha2VmaWxlLnVrIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o
KykKCmRpZmYgLS1naXQgYS9wbGF0L2t2bS9NYWtlZmlsZS51ayBiL3BsYXQva3ZtL01ha2VmaWxl
LnVrCmluZGV4IDcxYzRjNDEuLjE4ZWFjYTQgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL01ha2VmaWxl
LnVrCisrKyBiL3BsYXQva3ZtL01ha2VmaWxlLnVrCkBAIC02NSw2ICs2NSw3IEBAIExJQktWTVBM
QVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9h
cm0vY2FjaGU2NC5TfGNvCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9
ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJtL3BzY2lfYXJtNjQuU3xjb21tb24KIExJQktWTVBM
QVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9h
cm0vdGltZS5jfGNvbW1vbgogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSAr
PSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS90cmFwcy5jfGNvbW1vbgorTElCS1ZNUExBVF9T
UkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfRFJJVkVSU19CQVNFKS9vZncv
ZmR0LmN8Y29tbW9uCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQo
TElCS1ZNUExBVF9CQVNFKS9hcm0vZW50cnk2NC5TCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdf
QVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vZXhjZXB0aW9ucy5TCiBMSUJL
Vk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9h
cm0vcGFnZXRhYmxlNjQuUwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55: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 1hgPFl-0000e0-Vn; Thu, 27 Jun 2019 07:55:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFk-0000dP-BX
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:32 +0000
X-Inumbo-ID: ec8779ec-98b0-11e9-ae19-7f941e08d123
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id ec8779ec-98b0-11e9-ae19-7f941e08d123;
 Thu, 27 Jun 2019 07:55:26 +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 C944CD6E;
 Thu, 27 Jun 2019 00:55:25 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8074F3F246;
 Thu, 27 Jun 2019 00:55:23 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:05 +0800
Message-Id: <20190627075512.90692-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 1/8] plat/common: Introduce
 fdt_getprop_u32_by_offset helper
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Jianyong Wu <jianyong.wu@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+CgpUaGlzIGhlbHBlciB3aWxs
IGJlIHVzZWQgdmVyeSBmcmVxdWVudGx5IHRvIHUzMiBmcm9tIHByb3BlcnRpZXMuClNvIHdlIHBy
b3ZpZGUgdGhpcyBoZWxwZXIgaGVyZSB0byBhdm9pZCB1c2luZyBmZHRfZ2V0cHJvcCBhbmQKZmR0
MzJfdG9fY3B1IGV2ZXJ5d2hlcmUuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5A
YXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+
ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Ci0tLQogcGxhdC9kcml2
ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCiBwbGF0L2RyaXZlcnMvb2Z3L2ZkdC5jICAgICAgICAgfCA2MCArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspCiBj
cmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgcGxhdC9kcml2ZXJzL29mdy9mZHQuYwoKZGlmZiAtLWdpdCBhL3BsYXQvZHJp
dmVycy9pbmNsdWRlL29mdy9mZHQuaCBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjAyNjcxCi0tLSAvZGV2L251bGwK
KysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBBdXRob3Jz
OiBXZWkgQ2hlbiA8V2VpLkNoZW5AYXJtLmNvbT4KKyAqICAgICAgICAgIEppYW55b25nIFd1IDxK
aWFueW9uZy5XdUBhcm0uY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOCwgQXJtIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJB
Q1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgorICovCisjaWZuZGVmIF9QTEFUX0RSSVZFUl9P
RldfRkRUX0gKKyNkZWZpbmUgX1BMQVRfRFJJVkVSX09GV19GRFRfSAorCisvKioKKyAqIGZkdF9n
ZXRwcm9wX3UzMl9ieV9vZmZzZXQgLSByZXRyaWV2ZSB1MzIgb2YgYSBnaXZlbiBwcm9wZXJ0eQor
ICogQGZkdDogcG9pbnRlciB0byB0aGUgZGV2aWNlIHRyZWUgYmxvYgorICogQG5vZGVvZmZzZXQ6
IG9mZnNldCBvZiB0aGUgbm9kZSB3aG9zZSBwcm9wZXJ0eSB0byBmaW5kCisgKiBAbmFtZTogbmFt
ZSBvZiB0aGUgcHJvcGVydHkgdG8gZmluZAorICogQG91dDogcG9pbnRlciB0byB1MzIgdmFyaWFi
bGUgKHdpbGwgYmUgb3ZlcndyaXR0ZW4pIG9yIE5VTEwKKyAqCisgKiBmZHRfZ2V0cHJvcF91MzJf
Ynlfb2Zmc2V0KCkgcmV0cmlldmVzIHUzMiB0byB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5Cisg
KiBuYW1lZCAnbmFtZScgb2YgdGhlIG5vZGUgYXQgb2Zmc2V0IG5vZGVvZmZzZXQgKHRoaXMgd2ls
bCBiZSBhCisgKiBwb2ludGVyIHRvIHdpdGhpbiB0aGUgZGV2aWNlIGJsb2IgaXRzZWxmLCBub3Qg
YSBjb3B5IG9mIHRoZSB2YWx1ZSkuCisgKiBJZiBvdXQgaXMgbm9uLU5VTEwsIHRoZSB1MzIgb2Yg
dGhlIHByb3BlcnR5IHZhbHVlIGlzIHJldHVybmVkLgorICoKKyAqIHJldHVybnM6CisgKgkwLCBv
biBzdWNjZXNzCisgKgkJb3V0IGNvbnRhaW5zIHRoZSB1MzIgb2YgYSBnaXZlbiBwcm9wZXJ0eSBh
dCBub2Rlb2Zmc2V0LgorICoJLUZEVF9FUlJfTk9URk9VTkQsIG5vZGUgZG9lcyBub3QgaGF2ZSBu
YW1lZCBwcm9wZXJ0eQorICoJLUZEVF9FUlJfQkFETkNFTExTLAorICovCitpbnQgZmR0X2dldHBy
b3BfdTMyX2J5X29mZnNldChjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0LAorCQljb25z
dCBjaGFyICpuYW1lLCB1aW50MzJfdCAqb3V0KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9wbGF0
L2RyaXZlcnMvb2Z3L2ZkdC5jIGIvcGxhdC9kcml2ZXJzL29mdy9mZHQuYwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjNiN2EzCi0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9k
cml2ZXJzL29mdy9mZHQuYwpAQCAtMCwwICsxLDYwIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogV2VpIENoZW4gPFdlaS5DaGVu
QGFybS5jb20+CisgKiAgICAgICAgICBKaWFueW9uZyBXdSA8SmlhbnlvbmcuV3VAYXJtLmNvbT4K
KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIEFybSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhv
bGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4g
QU5ZIFdBWS4KKyAqLworI2luY2x1ZGUgPGxpYmZkdF9lbnYuaD4KKyNpbmNsdWRlIDxmZHQuaD4K
KyNpbmNsdWRlIDxsaWJmZHQuaD4KKworI2luY2x1ZGUgPHVrL3ByaW50Lmg+CisKK2ludCBmZHRf
Z2V0cHJvcF91MzJfYnlfb2Zmc2V0KGNvbnN0IHZvaWQgKmZkdCwgaW50IG9mZnNldCwKKwkJY29u
c3QgY2hhciAqbmFtZSwgdWludDMyX3QgKm91dCkKK3sKKwljb25zdCBzdHJ1Y3QgZmR0X3Byb3Bl
cnR5ICpwcm9wOworCWludCBwcm9wX2xlbjsKKworCVVLX0FTU0VSVChvdXQpOworCisJcHJvcCA9
IGZkdF9nZXRfcHJvcGVydHlfbmFtZWxlbihmZHQsIG9mZnNldCwgbmFtZSwgc3RybGVuKG5hbWUp
LAorCQkJCQkmcHJvcF9sZW4pOworCWlmICghcHJvcCkKKwkJcmV0dXJuIHByb3BfbGVuOworCisJ
aWYgKHByb3BfbGVuID49IChpbnQpc2l6ZW9mKGZkdDMyX3QpKSB7CisJCSpvdXQgPSBmZHQzMl90
b19jcHUoKihmZHQzMl90ICopcHJvcC0+ZGF0YSk7CisJCXJldHVybiAwOworCX0KKworCXJldHVy
biAtRkRUX0VSUl9OT1RGT1VORDsKK30KLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:35 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hgPFn-0000en-1d; Thu, 27 Jun 2019 07:55:35 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFm-0000eQ-5g
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:34 +0000
X-Inumbo-ID: f0b92ffb-98b0-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f0b92ffb-98b0-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 07:55:33 +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 DC69BD6E;
 Thu, 27 Jun 2019 00:55:32 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E5EF13F246;
 Thu, 27 Jun 2019 00:55:30 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:08 +0800
Message-Id: <20190627075512.90692-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 4/8] plat/common: Add fdt address
 translation support
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

VGhlIHJhbmdlcyBwcm9wZXJ0eSBwcm92aWRlcyBhIG1lYW5zIG9mIGRlZmluaW5nIGEgbWFwcGlu
ZyBvcgp0cmFuc2xhdGlvbiBiZXR3ZWVuIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBidXMgKHRo
ZSBjaGlsZAphZGRyZXNzIHNwYWNlKSBhbmQgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIGJ1cyBu
b2RlJ3MgcGFyZW50Cih0aGUgcGFyZW50IGFkZHJlc3Mgc3BhY2UpLgoKQ3VycmVudGx5IG9ubHkg
MToxIG1hcHBpbmcgYmV0d2VlbiBwYXJlbnQgYW5kIGNoaWxkIGFkZHJlc3MgaXMKc3VwcG9ydGVk
LgoKUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFi
LmV1PgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgotLS0KIHBsYXQv
ZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaCB8ICAxOCArKysrKwogcGxhdC9kcml2ZXJzL29mdy9m
ZHQuYyAgICAgICAgIHwgMTIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm
aWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVy
cy9pbmNsdWRlL29mdy9mZHQuaCBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaAppbmRl
eCA3ZDQwZmJhLi5iODRjMTg0IDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvaW5jbHVkZS9vZncv
ZmR0LmgKKysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oCkBAIC0zNSw2ICszNSw4
IEBACiAjaWZuZGVmIF9QTEFUX0RSSVZFUl9PRldfRkRUX0gKICNkZWZpbmUgX1BMQVRfRFJJVkVS
X09GV19GRFRfSAogCisjZGVmaW5lIEZEVF9CQURfQUREUiAodWludDY0X3QpKC0xKQorCiAvKioK
ICAqIGZkdF9nZXRwcm9wX3UzMl9ieV9vZmZzZXQgLSByZXRyaWV2ZSB1MzIgb2YgYSBnaXZlbiBw
cm9wZXJ0eQogICogQGZkdDogcG9pbnRlciB0byB0aGUgZGV2aWNlIHRyZWUgYmxvYgpAQCAtNzYs
NCArNzgsMjAgQEAgaW50IGZkdF9nZXRwcm9wX3UzMl9ieV9vZmZzZXQoY29uc3Qgdm9pZCAqZmR0
LCBpbnQgbm9kZW9mZnNldCwKICAqLwogaW50IGZkdF9pbnRlcnJ1cHRfY2VsbHMoY29uc3Qgdm9p
ZCAqZmR0LCBpbnQgbm9kZW9mZnNldCk7CiAKKy8qCisgKiByZWFkIGFuZCBjb21iaW5lIHRoZSBi
aWcgbnVtYmVyIG9mIHJlZywgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBzaXplCisgKiBpcyBj
b3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZmR0X3JlZ19yZWFkX251bWJlcihj
b25zdCBmZHQzMl90ICpyZWdzLCB1aW50MzJfdCBzaXplKQoreworCXVpbnQ2NF90IG51bWJlciA9
IDA7CisKKwlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJCW51bWJlciA8
PD0gMzI7CisJCW51bWJlciB8PSBmZHQzMl90b19jcHUoKnJlZ3MpOworCQlyZWdzKys7CisJfQor
CisJcmV0dXJuIG51bWJlcjsKK30KICNlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL29m
dy9mZHQuYyBiL3BsYXQvZHJpdmVycy9vZncvZmR0LmMKaW5kZXggYTU5NmRmMy4uMDc1ZTU0MiAx
MDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL29mdy9mZHQuYworKysgYi9wbGF0L2RyaXZlcnMvb2Z3
L2ZkdC5jCkBAIC0zNSw5ICszNSwxNCBAQAogI2luY2x1ZGUgPGxpYmZkdF9lbnYuaD4KICNpbmNs
dWRlIDxmZHQuaD4KICNpbmNsdWRlIDxsaWJmZHQuaD4KKyNpbmNsdWRlIDxvZncvZmR0Lmg+CiAK
ICNpbmNsdWRlIDx1ay9wcmludC5oPgogCisjZGVmaW5lIEZEVF9NQVhfQUREUl9DRUxMUyBGRFRf
TUFYX05DRUxMUworI2RlZmluZSBGRFRfQ0hFQ0tfQ09VTlRTKG5hLCBucykgICgobmEpID4gMCAm
JiAobmEpIDw9IEZEVF9NQVhfQUREUl9DRUxMUyAmJiBcCisJCQkJCShucykgPiAwKQorCiBpbnQg
ZmR0X2dldHByb3BfdTMyX2J5X29mZnNldChjb25zdCB2b2lkICpmZHQsIGludCBvZmZzZXQsCiAJ
CWNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90ICpvdXQpCiB7CkBAIC0xMDAsMyArMTA1LDExOCBA
QCBpbnQgZmR0X2ludGVycnVwdF9jZWxscyhjb25zdCB2b2lkICpmZHQsIGludCBvZmZzZXQpCiAK
IAlyZXR1cm4gdmFsOwogfQorCisvKiBEZWZhdWx0IHRyYW5zbGF0b3IgKGdlbmVyaWMgYnVzKSAq
Lworc3RhdGljIHZvaWQgZmR0X2RlZmF1bHRfY291bnRfY2VsbHMoY29uc3Qgdm9pZCAqZmR0LCBp
bnQgcGFyZW50b2Zmc2V0LAorCQkJCQkgICAgICAgaW50ICphZGRyYywgaW50ICpzaXplYykKK3sK
KwlpZiAoYWRkcmMpCisJCSphZGRyYyA9IGZkdF9hZGRyZXNzX2NlbGxzKGZkdCwgcGFyZW50b2Zm
c2V0KTsKKworCWlmIChzaXplYykKKwkJKnNpemVjID0gZmR0X3NpemVfY2VsbHMoZmR0LCBwYXJl
bnRvZmZzZXQpOworfQorCitzdGF0aWMgaW50IGZkdF9kZWZhdWx0X3RyYW5zbGF0ZShmZHQzMl90
ICphZGRyLCB1aW50NjRfdCBvZmZzZXQsIGludCBuYSkKK3sKKwl1aW50NjRfdCBhID0gZmR0X3Jl
Z19yZWFkX251bWJlcihhZGRyLCBuYSk7CisKKwltZW1zZXQoYWRkciwgMCwgbmEgKiBzaXplb2Yo
ZmR0MzJfdCkpOworCWEgKz0gb2Zmc2V0OworCWlmIChuYSA+IDEpCisJCWFkZHJbbmEgLSAyXSA9
IGNwdV90b19mZHQzMihhID4+IDMyKTsKKwlhZGRyW25hIC0gMV0gPSBjcHVfdG9fZmR0MzIoYSAm
IDB4ZmZmZmZmZmZ1KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZkdF90cmFuc2xh
dGVfb25lKGNvbnN0IHZvaWQgKmZkdCwgaW50IHBhcmVudCwgZmR0MzJfdCAqYWRkciwKKwkJCQkg
ICAgaW50IG5hLCBpbnQgcG5hLCBjb25zdCBjaGFyICpycHJvcCkKK3sKKwljb25zdCBmZHQzMl90
ICpyYW5nZXM7CisJaW50IHJsZW47CisJdWludDY0X3Qgb2Zmc2V0ID0gRkRUX0JBRF9BRERSOwor
CisJcmFuZ2VzID0gZmR0X2dldHByb3AoZmR0LCBwYXJlbnQsIHJwcm9wLCAmcmxlbik7CisJaWYg
KCFyYW5nZXMpCisJCXJldHVybiAxOworCWlmIChybGVuID09IDApIHsKKwkJb2Zmc2V0ID0gZmR0
X3JlZ19yZWFkX251bWJlcihhZGRyLCBuYSk7CisJCW1lbXNldChhZGRyLCAwLCBwbmEgKiA0KTsK
KwkJdWtfcHJfZGVidWcoImVtcHR5IHJhbmdlcywgMToxIHRyYW5zbGF0aW9uXG4iKTsKKwkJZ290
byBmaW5pc2g7CisJfQorCisJdWtfcHJfZXJyKCJFcnJvciwgb25seSAxOjEgdHJhbnNsYXRpb24g
aXMgc3VwcG9ydGVkLi4uXG4iKTsKKwlyZXR1cm4gMTsKKyBmaW5pc2g6CisJdWtfcHJfZGVidWco
IndpdGggb2Zmc2V0OiAweCVseFxuIiwgb2Zmc2V0KTsKKworCS8qIFRyYW5zbGF0ZSBpdCBpbnRv
IHBhcmVudCBidXMgc3BhY2UgKi8KKwlyZXR1cm4gZmR0X2RlZmF1bHRfdHJhbnNsYXRlKGFkZHIs
IG9mZnNldCwgcG5hKTsKK30KKworLyoKKyAqIFRyYW5zbGF0ZSBhbiBhZGRyZXNzIGZyb20gdGhl
IGRldmljZS10cmVlIGludG8gYSBDUFUgcGh5c2ljYWwgYWRkcmVzcywKKyAqIHRoaXMgd2Fsa3Mg
dXAgdGhlIHRyZWUgYW5kIGFwcGxpZXMgdGhlIHZhcmlvdXMgYnVzIG1hcHBpbmdzIG9uIHRoZQor
ICogd2F5LgorICovCitzdGF0aWMgdWludDY0X3QgZmR0X3RyYW5zbGF0ZV9hZGRyZXNzX2J5X3Jh
bmdlcyhjb25zdCB2b2lkICpmZHQsCisJCQkJCWludCBub2RlX29mZnNldCwgY29uc3QgZmR0MzJf
dCAqcmVncykKK3sKKwlpbnQgcGFyZW50OworCWZkdDMyX3QgYWRkcltGRFRfTUFYX0FERFJfQ0VM
TFNdOworCWludCBuYSwgbnMsIHBuYSwgcG5zOworCXVpbnQ2NF90IHJlc3VsdCA9IEZEVF9CQURf
QUREUjsKKworCS8qIEdldCBwYXJlbnQgKi8KKwlwYXJlbnQgPSBmZHRfcGFyZW50X29mZnNldChm
ZHQsIG5vZGVfb2Zmc2V0KTsKKwlpZiAocGFyZW50IDwgMCkKKwkJZ290byBiYWlsOworCisJLyog
Q291bnQgYWRkcmVzcyBjZWxscyAmIGNvcHkgYWRkcmVzcyBsb2NhbGx5ICovCisJZmR0X2RlZmF1
bHRfY291bnRfY2VsbHMoZmR0LCBwYXJlbnQsICZuYSwgJm5zKTsKKwlpZiAoIUZEVF9DSEVDS19D
T1VOVFMobmEsIG5zKSkgeworCQl1a19wcl9lcnIoIkJhZCBjZWxsIGNvdW50IGZvciAlc1xuIiwK
KwkJICAgICAgIGZkdF9nZXRfbmFtZShmZHQsIG5vZGVfb2Zmc2V0LCBOVUxMKSk7CisJCWdvdG8g
YmFpbDsKKwl9CisJbWVtY3B5KGFkZHIsIHJlZ3MsIG5hICogNCk7CisKKwkvKiBUcmFuc2xhdGUg
Ki8KKwlmb3IgKDs7KSB7CisJCS8qIFN3aXRjaCB0byBwYXJlbnQgYnVzICovCisJCW5vZGVfb2Zm
c2V0ID0gcGFyZW50OworCQlwYXJlbnQgPSBmZHRfcGFyZW50X29mZnNldChmZHQsIG5vZGVfb2Zm
c2V0KTsKKworCQkvKiBJZiByb290LCB3ZSBoYXZlIGZpbmlzaGVkICovCisJCWlmIChwYXJlbnQg
PCAwKSB7CisJCQl1a19wcl9kZWJ1ZygicmVhY2hlZCByb290IG5vZGVcbiIpOworCQkJcmVzdWx0
ID0gZmR0X3JlZ19yZWFkX251bWJlcihhZGRyLCBuYSk7CisJCQlicmVhazsKKwkJfQorCisJCS8q
IEdldCBuZXcgcGFyZW50IGJ1cyBhbmQgY291bnRzICovCisJCWZkdF9kZWZhdWx0X2NvdW50X2Nl
bGxzKGZkdCwgcGFyZW50LCAmcG5hLCAmcG5zKTsKKwkJaWYgKCFGRFRfQ0hFQ0tfQ09VTlRTKHBu
YSwgcG5zKSkgeworCQkJdWtfcHJfZXJyKCJCYWQgY2VsbCBjb3VudCBmb3IgJXNcbiIsCisJCQkJ
ZmR0X2dldF9uYW1lKGZkdCwgbm9kZV9vZmZzZXQsIE5VTEwpKTsKKwkJCWJyZWFrOworCQl9CisK
KwkJdWtfcHJfZGVidWcoInBhcmVudCBidXMgKG5hPSVkLCBucz0lZCkgb24gJXNcbiIsCisJCQkg
cG5hLCBwbnMsIGZkdF9nZXRfbmFtZShmZHQsIHBhcmVudCwgTlVMTCkpOworCisJCS8qIEFwcGx5
IGJ1cyB0cmFuc2xhdGlvbiAqLworCQlpZiAoZmR0X3RyYW5zbGF0ZV9vbmUoZmR0LCBub2RlX29m
ZnNldCwKKwkJCQkJYWRkciwgbmEsIHBuYSwgInJhbmdlcyIpKQorCQkJYnJlYWs7CisKKwkJLyog
Q29tcGxldGUgdGhlIG1vdmUgdXAgb25lIGxldmVsICovCisJCW5hID0gcG5hOworCQlucyA9IHBu
czsKKwl9CitiYWlsOgorCXJldHVybiByZXN1bHQ7Cit9CisKLS0gCjIuMTcuMQoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hgPFp-0000fd-32; Thu, 27 Jun 2019 07:55:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFo-0000fL-Cd
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:36 +0000
X-Inumbo-ID: f238948b-98b0-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f238948b-98b0-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 07:55:35 +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 94F31360;
 Thu, 27 Jun 2019 00:55:35 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 3EB6C3F246;
 Thu, 27 Jun 2019 00:55:33 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:09 +0800
Message-Id: <20190627075512.90692-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 5/8] plat/common: Introduce
 fdt_get_address helper
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Jianyong Wu <jianyong.wu@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CgpUaGlzIGhlbHBlciB3aWxsIGJlIHVz
ZWQgdmVyeSBmcmVxdWVudGx5IGZvciBkZXZpY2UgbGlicmFyaWVzCnRvIHBhcnNlIHRoZWlyIGFk
ZHJlc3Nlcy4gSW50cm9kdWNlIHRoaXMgaGVscGVyIHRvIGF2b2lkIHVzaW5nCmZkdF9hZGRyZXNz
X2NlbGxzIGFuZCBmZHRfc2l6ZV9jZWxscyBldmVyeXdoZXJlLgoKU2lnbmVkLW9mZi1ieTogV2Vp
IENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYW55b25nIFd1IDxqaWFu
eW9uZy53dUBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29t
PgotLS0KIHBsYXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaCB8IDE4ICsrKysrKysrKysrKysr
KwogcGxhdC9kcml2ZXJzL29mdy9mZHQuYyAgICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspCgpkaWZm
IC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIGIvcGxhdC9kcml2ZXJzL2lu
Y2x1ZGUvb2Z3L2ZkdC5oCmluZGV4IGI4NGMxODQuLjBiOGMxZDUgMTAwNjQ0Ci0tLSBhL3BsYXQv
ZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaAorKysgYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS9vZncv
ZmR0LmgKQEAgLTk0LDQgKzk0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZmR0X3JlZ19y
ZWFkX251bWJlcihjb25zdCBmZHQzMl90ICpyZWdzLCB1aW50MzJfdCBzaXplKQogCiAJcmV0dXJu
IG51bWJlcjsKIH0KKworLyoqCisgKiBmZHRfZ2V0X2FkZHJlc3MgLSByZXRyaWV2ZSBkZXZpY2Ug
YWRkcmVzcyBvZiBhIGdpdmVuIGluZGV4CisgKiBAZmR0OiBwb2ludGVyIHRvIHRoZSBkZXZpY2Ug
dHJlZSBibG9iCisgKiBAbm9kZW9mZnNldDogb2Zmc2V0IG9mIHRoZSBub2RlIHRvIGZpbmQgdGhl
IGFkZHJlc3MgZm9yLgorICogQGluZGV4OiBpbmRleCBvZiByZWdpb24KKyAqIEBhZGRyOiByZXR1
cm4gdGhlIHJlZ2lvbiBhZGRyZXNzCisgKiBAc2l6ZTogcmV0dXJuIHRoZSByZWdpb24gc2l6ZQor
ICoKKyAqIHJldHVybnM6CisgKiAgICAgMCwgb24gc3VjY2VzcworICogICAgICAtRkRUX0VSUl9C
QUROQ0VMTFMsIGlmIHRoZSBub2RlIGhhcyBhIGJhZGx5IGZvcm1hdHRlZCBvciBpbnZhbGlkCisg
KiAgICAgICAgICAgICBhZGRyZXNzIHByb3BlcnR5CisgKiAgICAgIC1GRFRfRVJSX05PVEZPVU5E
LCBpZiB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYWRkcmVzcyBwcm9wZXJ0eQorICogICAgICAtRkRU
X0VSUl9OT1NQQUNFLCBpZiB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYWRkcmVzcyBmb3IgaW5kZXgK
KyAqLworaW50IGZkdF9nZXRfYWRkcmVzcyhjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0
LCB1aW50MzJfdCBpbmRleCwKKwkJCXVpbnQ2NF90ICphZGRyLCB1aW50NjRfdCAqc2l6ZSk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9vZncvZmR0LmMgYi9wbGF0L2RyaXZlcnMv
b2Z3L2ZkdC5jCmluZGV4IDA3NWU1NDIuLjBhYzYwMDYgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVy
cy9vZncvZmR0LmMKKysrIGIvcGxhdC9kcml2ZXJzL29mdy9mZHQuYwpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgPG9mdy9mZHQuaD4KIAogI2luY2x1ZGUgPHVrL3ByaW50Lmg+CisjaW5jbHVk
ZSA8dWsvYXNzZXJ0Lmg+CiAKICNkZWZpbmUgRkRUX01BWF9BRERSX0NFTExTIEZEVF9NQVhfTkNF
TExTCiAjZGVmaW5lIEZEVF9DSEVDS19DT1VOVFMobmEsIG5zKSAgKChuYSkgPiAwICYmIChuYSkg
PD0gRkRUX01BWF9BRERSX0NFTExTICYmIFwKQEAgLTIyMCwzICsyMjEsNDQgQEAgYmFpbDoKIAly
ZXR1cm4gcmVzdWx0OwogfQogCitpbnQgZmR0X2dldF9hZGRyZXNzKGNvbnN0IHZvaWQgKmZkdCwg
aW50IG5vZGVvZmZzZXQsIHVpbnQzMl90IGluZGV4LAorCQkJdWludDY0X3QgKmFkZHIsIHVpbnQ2
NF90ICpzaXplKQoreworCWludCBwYXJlbnQ7CisJaW50IGxlbiwgcHJvcF9hZGRyLCBwcm9wX3Np
emU7CisJaW50IG5hZGRyLCBuc2l6ZSwgdGVybV9zaXplOworCWNvbnN0IHZvaWQgKnJlZ3M7CisK
KwlVS19BU1NFUlQoYWRkciAmJiBzaXplKTsKKworCS8qIEdldCBhZGRyZXNzLHNpemUgY2VsbCBm
cm9tIHBhcmVudCAqLworCXBhcmVudCA9IGZkdF9wYXJlbnRfb2Zmc2V0KGZkdCwgbm9kZW9mZnNl
dCk7CisJbmFkZHIgPSBmZHRfYWRkcmVzc19jZWxscyhmZHQsIHBhcmVudCk7CisJaWYgKG5hZGRy
IDwgMCB8fCBuYWRkciA+PSBGRFRfTUFYX05DRUxMUykKKwkJcmV0dXJuIG5hZGRyOworCisJbnNp
emUgPSBmZHRfc2l6ZV9jZWxscyhmZHQsIHBhcmVudCk7CisJaWYgKG5zaXplIDwgMCB8fCBuc2l6
ZSA+PSBGRFRfTUFYX05DRUxMUykKKwkJcmV0dXJuIG5zaXplOworCisJLyogR2V0IHJlZyBjb250
ZW50ICovCisJcmVncyA9IGZkdF9nZXRwcm9wKGZkdCwgbm9kZW9mZnNldCwgInJlZyIsICZsZW4p
OworCWlmIChyZWdzID09IE5VTEwpCisJCXJldHVybiBsZW47CisKKwl0ZXJtX3NpemUgPSBzaXpl
b2YoZmR0MzJfdCkgKiAobnNpemUgKyBuYWRkcik7CisJcHJvcF9hZGRyID0gdGVybV9zaXplICog
aW5kZXg7CisJcHJvcF9zaXplID0gcHJvcF9hZGRyICsgc2l6ZW9mKGZkdDMyX3QpICogbmFkZHI7
CisKKwkvKiBUaGUgcmVnIGNvbnRlbnQgbXVzdCBjb3ZlciB0aGUgcmVnIHRlcm1baW5kZXhdIGF0
IGxlYXN0ICovCisJaWYgKGxlbiA8IChwcm9wX2FkZHIgKyB0ZXJtX3NpemUpKQorCQlyZXR1cm4g
LUZEVF9FUlJfTk9TUEFDRTsKKworCSpzaXplID0gZmR0X3JlZ19yZWFkX251bWJlcihyZWdzICsg
cHJvcF9zaXplLCBuc2l6ZSk7CisJLyogSGFuZGxlIHJhbmdlcyBwcm9wZXJ0eSwgY3VycmVudGx5
IG9ubHkgMToxIG1hcHBpbmcgaXMgc3VwcG9ydGVkICovCisJKmFkZHIgPSBmZHRfdHJhbnNsYXRl
X2FkZHJlc3NfYnlfcmFuZ2VzKGZkdCwgbm9kZW9mZnNldCwKKwkJCQkJCXJlZ3MgKyBwcm9wX2Fk
ZHIpOworCWlmICgqYWRkciA9PSBGRFRfQkFEX0FERFIpCisJCXJldHVybiAtRkRUX0VSUl9OT1RG
T1VORDsKKwlyZXR1cm4gMDsKK30KLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
bWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hgPFv-0000hV-4o; Thu, 27 Jun 2019 07:55:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFt-0000h9-Tp
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:41 +0000
X-Inumbo-ID: f551bab0-98b0-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f551bab0-98b0-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 07:55:40 +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 ABA10360;
 Thu, 27 Jun 2019 00:55:40 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 929133F246;
 Thu, 27 Jun 2019 00:55:38 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:11 +0800
Message-Id: <20190627075512.90692-8-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 7/8] plat/common: Introduce
 fdt_get_interrupt helper
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CgpUaGlzIGhlbHBlciB3aWxsIGJlIHVz
ZWQgdmVyeSBmcmVxdWVudGx5IGZvciBkZXZpY2VzIHRvCmdldCB0aGVpciBpbnRlcnJ1cHRzLgoK
U2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6
IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Ci0tLQogcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3
L2ZkdC5oIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIHBsYXQvZHJpdmVycy9vZncvZmR0LmMg
ICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBj
aGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2luY2x1
ZGUvb2Z3L2ZkdC5oIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oCmluZGV4IGFhYTMy
YzYuLjUwZGY3MGQgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaAor
KysgYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS9vZncvZmR0LmgKQEAgLTEzOCw0ICsxMzgsMjQgQEAg
aW50IGZkdF9nZXRfYWRkcmVzcyhjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0LCB1aW50
MzJfdCBpbmRleCwKICAqLwogaW50IGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlX2xpc3Qo
Y29uc3Qgdm9pZCAqZmR0LCBpbnQgc3RhcnRvZmZzZXQsCiAJCQkJCWNvbnN0IGNoYXIgKiBjb25z
dCBjb21wYXRpYmxlc1tdKTsKKworLyoqCisgKiBmZHRfZ2V0X2ludGVycnVwdCAtIHJldHJpZXZl
IGRldmljZSBpbnRlcnJ1cHQgb2YgYSBnaXZlbiBpbmRleAorICogQGZkdDogcG9pbnRlciB0byB0
aGUgZGV2aWNlIHRyZWUgYmxvYgorICogQG5vZGVvZmZzZXQ6IG9mZnNldCBvZiB0aGUgbm9kZSB0
byBmaW5kIHRoZSBhZGRyZXNzIGZvcgorICogQGluZGV4OiB0aGUgaW5kZXggb2YgaW50ZXJydXB0
IHdlIHdhbnQgdG8gcmV0cmlldmUKKyAqIEBzaXplOiBpbnRlcnJ1cHQgY2VsbCBzaXplIGluIGZk
dDMyX3QKKyAqIEBwcm9wOiByZXR1cm4gdGhlIHBvaW50ZXIgdG8gcHJvcGVydHkKKyAqIHJldHVy
bnM6CisgKiAgICAgMCBvbiBzdWNjZXNzICwgPCAwIG9uIGZhaWxlZAorICogICAgIC1GRFRfRVJS
X05PVEZPVU5ELCBub2RlIGRvZXMgbm90IGhhdmUgbmFtZWQgcHJvcGVydHkKKyAqICAgICAtRkRU
X0VSUl9CQURPRkZTRVQsIG5vZGVvZmZzZXQgZGlkIG5vdCBwb2ludCB0byBGRFRfQkVHSU5fTk9E
RSB0YWcKKyAqICAgICAtRkRUX0VSUl9CQURNQUdJQywKKyAqICAgICAtRkRUX0VSUl9CQURWRVJT
SU9OLAorICogICAgIC1GRFRfRVJSX0JBRFNUQVRFLAorICogICAgIC1GRFRfRVJSX0JBRFNUUlVD
VFVSRSwKKyAqICAgICAtRkRUX0VSUl9UUlVOQ0FURUQsIHN0YW5kYXJkIG1lYW5pbmdzCisgKi8K
K2ludCBmZHRfZ2V0X2ludGVycnVwdChjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0LAor
CQkJCXVpbnQzMl90IGluZGV4LCBpbnQgKnNpemUsIGZkdDMyX3QgKipwcm9wKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL29mdy9mZHQuYyBiL3BsYXQvZHJpdmVycy9vZncvZmR0
LmMKaW5kZXggNjgzZGQ2MC4uNzk1ZTc3YSAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL29mdy9m
ZHQuYworKysgYi9wbGF0L2RyaXZlcnMvb2Z3L2ZkdC5jCkBAIC0yNzcsMyArMjc3LDM2IEBAIGlu
dCBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0KGNvbnN0IHZvaWQgKmZkdCwgaW50
IHN0YXJ0b2Zmc2V0LAogCiAJcmV0dXJuIC1GRFRfRVJSX05PVEZPVU5EOwogfQorCitpbnQgZmR0
X2dldF9pbnRlcnJ1cHQoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9mZnNldCwKKwkJCXVpbnQz
Ml90IGluZGV4LCBpbnQgKnNpemUsIGZkdDMyX3QgKipwcm9wKQoreworCWludCBuaW50ciwgbGVu
LCB0ZXJtX3NpemU7CisJY29uc3Qgdm9pZCAqcmVnczsKKworCVVLX0FTU0VSVChzaXplICYmIHBy
b3ApOworCisJbmludHIgPSBmZHRfaW50ZXJydXB0X2NlbGxzKGZkdCwgbm9kZW9mZnNldCk7CisJ
aWYgKG5pbnRyIDwgMCB8fCBuaW50ciA+PSBGRFRfTUFYX05DRUxMUykKKwkJcmV0dXJuIC1GRFRf
RVJSX0JBRE5DRUxMUzsKKworCS8qICJpbnRlcnJ1cHRzLWV4dGVuZGVkIiBpcyBub3Qgc3VwcG9y
dGVkICovCisJcmVncyA9IGZkdF9nZXRwcm9wKGZkdCwgbm9kZW9mZnNldCwgImludGVycnVwdHMt
ZXh0ZW5kZWQiLCAmbGVuKTsKKwlpZiAocmVncykgeworCQl1a19wcl93YXJuKCJpbnRlcnJ1cHRz
IG11bHRpcGxlIHBhcmVudHMgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJCXJldHVybiAtRkRUX0VS
Ul9JTlRFUk5BTDsKKwl9CisKKwkvKgorCSAqIEludGVycnVwdCBjb250ZW50IG11c3QgY292ZXIg
dGhlIGluZGV4IHNwZWNpZmljIGlycSBpbmZvcm1hdGlvbi4KKwkgKi8KKwlyZWdzID0gZmR0X2dl
dHByb3AoZmR0LCBub2Rlb2Zmc2V0LCAiaW50ZXJydXB0cyIsICZsZW4pOworCXRlcm1fc2l6ZSA9
IHNpemVvZihmZHQzMl90KSAqIG5pbnRyOworCWlmIChyZWdzID09IE5VTEwgfHwgKHVpbnQzMl90
KWxlbiA8IHRlcm1fc2l6ZSAqIChpbmRleCArIDEpKQorCQlyZXR1cm4gLUZEVF9FUlJfTk9URk9V
TkQ7CisKKwkqc2l6ZSA9IG5pbnRyOworCSpwcm9wID0gKGZkdDMyX3QgKikocmVncyArIHRlcm1f
c2l6ZSAqIGluZGV4KTsKKworCXJldHVybiAwOworfQotLSAKMi4xNy4xCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hgPFw-0000hw-6Q; Thu, 27 Jun 2019 07:55: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=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFu-0000hN-In
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:42 +0000
X-Inumbo-ID: f3cd5578-98b0-11e9-a809-6bffff3589d2
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id f3cd5578-98b0-11e9-a809-6bffff3589d2;
 Thu, 27 Jun 2019 07:55:38 +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 3D66CD6E;
 Thu, 27 Jun 2019 00:55:38 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E98723F246;
 Thu, 27 Jun 2019 00:55:35 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:10 +0800
Message-Id: <20190627075512.90692-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 6/8] plat/common: Introduce
 fdt_node_offset_by_compatible_list helper
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Jianyong Wu <jianyong.wu@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+CgpGb3IgbW9zdCBvZiBkZXZp
Y2VzIHRoYXQgd2lsbCB1c2UgdGhlIGRldmljZSB0cmVlIHdpbGwgaGF2ZSBvbmUKb3IgbW9yZSBj
b21wYXRpYmxlIHN0cmluZ3MuIFRoaXMgaGVscGVyIHdpbGwgYXZvaWQgaW1wbGVtZW50IGEKZnVu
Y3Rpb24gdG8gbWF0Y2ggY29tcGF0aWJsZSBsaXN0IGV2ZXJ5d2hlcmUuClRoZSB2YWxpZCBjb21w
YXRpYmxlIHN0cmluZ3MgYXJyYXkgc2hvdWxkIGJlIGVuZGVkIHdpdGggTlVMTC4KRS5nLgpzdGF0
aWMgY29uc3QgY2hhciAqIGNvbnN0IGdpY19kZXZpY2VfbGlzdFtdID0gewoJImFybSxjb3J0ZXgt
YTE1LWdpYyIsCgkiYXJtLGNvcnRleC1hNy1naWMiLAoJImFybSxjb3J0ZXgtYTktZ2ljIiwKCU5V
TEx9CgpTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9m
Zi1ieTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEpp
YSBIZSA8anVzdGluLmhlQGFybS5jb20+Ci0tLQogcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2Zk
dC5oIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQvZHJpdmVycy9vZncvZmR0
LmMgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNl
cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oIGIv
cGxhdC9kcml2ZXJzL2luY2x1ZGUvb2Z3L2ZkdC5oCmluZGV4IDBiOGMxZDUuLmFhYTMyYzYgMTAw
NjQ0Ci0tLSBhL3BsYXQvZHJpdmVycy9pbmNsdWRlL29mdy9mZHQuaAorKysgYi9wbGF0L2RyaXZl
cnMvaW5jbHVkZS9vZncvZmR0LmgKQEAgLTExMiw0ICsxMTIsMzAgQEAgc3RhdGljIGlubGluZSB1
aW50NjRfdCBmZHRfcmVnX3JlYWRfbnVtYmVyKGNvbnN0IGZkdDMyX3QgKnJlZ3MsIHVpbnQzMl90
IHNpemUpCiAgKi8KIGludCBmZHRfZ2V0X2FkZHJlc3MoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9k
ZW9mZnNldCwgdWludDMyX3QgaW5kZXgsCiAJCQl1aW50NjRfdCAqYWRkciwgdWludDY0X3QgKnNp
emUpOworCisvKioKKyAqIGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlX2xpc3QgLSBmaW5k
IG5vZGVzIHdpdGggYSBnaXZlbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2NvbXBhdGlibGUnIGxpc3QgdmFsdWUKKyAqIEBmZHQ6IHBvaW50ZXIgdG8gdGhlIGRldmlj
ZSB0cmVlIGJsb2IKKyAqIEBzdGFydG9mZnNldDogb25seSBmaW5kIG5vZGVzIGFmdGVyIHRoaXMg
b2Zmc2V0CisgKiBAY29tcGF0aWJsZXM6IGEgbGlzdCBvZiAnY29tcGF0aWJsZScgc3RyaW5nIHRv
IG1hdGNoLCBzaG91bGQgYmUgZW5kZWQKKyAqIHdpdGggTlVMTCBzdHJpbmcuCisgKiBmZHRfbm9k
ZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0KCkgcmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZQor
ICogZmlyc3QgbWF0Y2hlZCBub2RlIGFmdGVyIHN0YXJ0b2Zmc2V0LCB3aGljaCBoYXMgYSAnY29t
cGF0aWJsZScKKyAqIHByb3BlcnR5IHdoaWNoIGxpc3RzIHRoZSBnaXZlbiBjb21wYXRpYmxlIHN0
cmluZzsgb3IgaWYKKyAqIHN0YXJ0b2Zmc2V0IGlzIC0xLCB0aGUgdmVyeSBmaXJzdCBzdWNoIG5v
ZGUgaW4gdGhlIHRyZWUuCisgKgorICogcmV0dXJuczoKKyAqICAgICBzdHJ1Y3R1cmUgYmxvY2sg
b2Zmc2V0IG9mIHRoZSBsb2NhdGVkIG5vZGUgKD49IDAsID5zdGFydG9mZnNldCksCisgKiAgICAg
ICAgICAgICAgb24gc3VjY2VzcworICogICAgIC1GRFRfRVJSX05PVEZPVU5ELCBubyBub2RlIG1h
dGNoaW5nIHRoZSBjcml0ZXJpb24gZXhpc3RzIGluIHRoZQorICogICAgICAgICAgICAgdHJlZSBh
ZnRlciBzdGFydG9mZnNldAorICogICAgIC1GRFRfRVJSX0JBRE9GRlNFVCwgbm9kZW9mZnNldCBk
b2VzIG5vdCByZWZlciB0byBhIEJFR0lOX05PREUgdGFnCisgKiAgICAgLUZEVF9FUlJfQkFETUFH
SUMsCisgKiAgICAgLUZEVF9FUlJfQkFEVkVSU0lPTiwKKyAqICAgICAtRkRUX0VSUl9CQURTVEFU
RSwKKyAqICAgICAtRkRUX0VSUl9CQURTVFJVQ1RVUkUsIHN0YW5kYXJkIG1lYW5pbmdzCisgKi8K
K2ludCBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0KGNvbnN0IHZvaWQgKmZkdCwg
aW50IHN0YXJ0b2Zmc2V0LAorCQkJCQljb25zdCBjaGFyICogY29uc3QgY29tcGF0aWJsZXNbXSk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9vZncvZmR0LmMgYi9wbGF0L2RyaXZl
cnMvb2Z3L2ZkdC5jCmluZGV4IDBhYzYwMDYuLjY4M2RkNjAgMTAwNjQ0Ci0tLSBhL3BsYXQvZHJp
dmVycy9vZncvZmR0LmMKKysrIGIvcGxhdC9kcml2ZXJzL29mdy9mZHQuYwpAQCAtMjYyLDMgKzI2
MiwxOCBAQCBpbnQgZmR0X2dldF9hZGRyZXNzKGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGVvZmZz
ZXQsIHVpbnQzMl90IGluZGV4LAogCQlyZXR1cm4gLUZEVF9FUlJfTk9URk9VTkQ7CiAJcmV0dXJu
IDA7CiB9CisKK2ludCBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0KGNvbnN0IHZv
aWQgKmZkdCwgaW50IHN0YXJ0b2Zmc2V0LAorCQkJCSAgY29uc3QgY2hhciAqIGNvbnN0IGNvbXBh
dGlibGVzW10pCit7CisJaW50IGlkeCwgb2Zmc2V0OworCisJZm9yIChpZHggPSAwOyBjb21wYXRp
Ymxlc1tpZHhdICE9IE5VTEw7IGlkeCsrKSB7CisJCW9mZnNldCA9IGZkdF9ub2RlX29mZnNldF9i
eV9jb21wYXRpYmxlKGZkdCwgc3RhcnRvZmZzZXQsCisJCQkJICBjb21wYXRpYmxlc1tpZHhdKTsK
KwkJaWYgKG9mZnNldCA+PSAwKQorCQkJcmV0dXJuIG9mZnNldDsKKwl9CisKKwlyZXR1cm4gLUZE
VF9FUlJfTk9URk9VTkQ7Cit9Ci0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 07:55:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 07:55:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hgPFx-0000iX-7v; Thu, 27 Jun 2019 07:55:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPFw-0000hs-4u
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 07:55:44 +0000
X-Inumbo-ID: f695fdeb-98b0-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id f695fdeb-98b0-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 07:55:43 +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 EB4FDD6E;
 Thu, 27 Jun 2019 00:55:42 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 098913F246;
 Thu, 27 Jun 2019 00:55:40 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Thu, 27 Jun 2019 15:55:12 +0800
Message-Id: <20190627075512.90692-9-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190627075512.90692-1-justin.he@arm.com>
References: <20190627075512.90692-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv7 8/8] lib/fdt: Change the default
 value of fdt_size_cells
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

c2VlIDIuMy41IGluIFsxXSwgaWYgIiNzaXplLWNlbGxzIiBpcyBtaXNzaW5nLCB0aGUgZGVmYXVs
dCB2YWx1ZQpzaG91bGQgYmUgMSBpbnN0ZWFkIG9mIDIuCkJlc2lkZXMsIHVwc3RyZWFtIGxpYmZk
dCBjb2RlIGFsc28gdXNlcyAxIFsyXQoKWzFdaHR0cHM6Ly9naXRodWIuY29tL2RldmljZXRyZWUt
b3JnL2RldmljZXRyZWUtc3BlY2lmaWNhdGlvbi9yZWxlYXNlcy90YWcvdjAuMgpbMl1odHRwczov
L2dpdGh1Yi5jb20vZGdpYnNvbi9kdGMvYmxvYi9lYWMyYWQ0OTViMjlmMTVkNzhkYWEyYTcyMjY2
NTNmMzY1MTVjZDdhL2xpYmZkdC9mZHRfYWRkcmVzc2VzLmMjTDkKClJldmlld2VkLWJ5OiBTaGFy
YW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4KU2lnbmVkLW9mZi1ieTog
SmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBsaWIvZmR0L2ZkdF9hZGRyZXNzZXMuYyAg
fCAyICstCiBsaWIvZmR0L2luY2x1ZGUvbGliZmR0LmggfCAyICstCiAyIGZpbGVzIGNoYW5nZWQs
IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvZmR0L2Zk
dF9hZGRyZXNzZXMuYyBiL2xpYi9mZHQvZmR0X2FkZHJlc3Nlcy5jCmluZGV4IGVmZjRkYmMuLmEx
ODYwZTYgMTAwNjQ0Ci0tLSBhL2xpYi9mZHQvZmR0X2FkZHJlc3Nlcy5jCisrKyBiL2xpYi9mZHQv
ZmR0X2FkZHJlc3Nlcy5jCkBAIC04Myw3ICs4Myw3IEBAIGludCBmZHRfc2l6ZV9jZWxscyhjb25z
dCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0KQogCiAJc2MgPSBmZHRfZ2V0cHJvcChmZHQsIG5v
ZGVvZmZzZXQsICIjc2l6ZS1jZWxscyIsICZsZW4pOwogCWlmICghc2MpCi0JCXJldHVybiAyOwor
CQlyZXR1cm4gMTsKIAogCWlmIChsZW4gIT0gc2l6ZW9mKCpzYykpCiAJCXJldHVybiAtRkRUX0VS
Ul9CQUROQ0VMTFM7CmRpZmYgLS1naXQgYS9saWIvZmR0L2luY2x1ZGUvbGliZmR0LmggYi9saWIv
ZmR0L2luY2x1ZGUvbGliZmR0LmgKaW5kZXggMDVkZWRiZC4uNTYyMmNmNSAxMDA2NDQKLS0tIGEv
bGliL2ZkdC9pbmNsdWRlL2xpYmZkdC5oCisrKyBiL2xpYi9mZHQvaW5jbHVkZS9saWJmZHQuaApA
QCAtMTA5MSw3ICsxMDkxLDcgQEAgaW50IGZkdF9hZGRyZXNzX2NlbGxzKGNvbnN0IHZvaWQgKmZk
dCwgaW50IG5vZGVvZmZzZXQpOwogICoKICAqIHJldHVybnM6CiAgKgkwIDw9IG4gPCBGRFRfTUFY
X05DRUxMUywgb24gc3VjY2VzcwotICogICAgICAyLCBpZiB0aGUgbm9kZSBoYXMgbm8gI2FkZHJl
c3MtY2VsbHMgcHJvcGVydHkKKyAqICAgICAgMSwgaWYgdGhlIG5vZGUgaGFzIG5vICNhZGRyZXNz
LWNlbGxzIHByb3BlcnR5CiAgKiAgICAgIC1GRFRfRVJSX0JBRE5DRUxMUywgaWYgdGhlIG5vZGUg
aGFzIGEgYmFkbHkgZm9ybWF0dGVkIG9yIGludmFsaWQKICAqCQkjc2l6ZS1jZWxscyBwcm9wZXJ0
eQogICoJLUZEVF9FUlJfQkFETUFHSUMsCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 08:15:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 08:15: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 1hgPZ3-0002nM-FQ; Thu, 27 Jun 2019 08:15:29 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPZ1-0002nH-Ub
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 08:15:28 +0000
X-Inumbo-ID: b759f806-98b3-11e9-8980-bc764e045a96
Received: from EUR04-DB3-obe.outbound.protection.outlook.com (unknown
 [40.107.6.49]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b759f806-98b3-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 08:15:26 +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=PAibCBmvfkbHW6WuG2DISmZoJlVux3cVXYyOufvQRL8=;
 b=7WeEr8DcLEG944YDyROZ1hdBOLP42TwLShxvbyep+fjR6CX1nAaPme4fA4sqcVcB8EUIFsmMQXLxju8oxyR/ELLv/465YB4Y5pbyFEHYDNoucHyjlHYRc2K1pAiAuOis411raY6CH8L0wYU9Dx/6OY0h1uSpNXMGWkTf9b/HJlA=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3657.eurprd08.prod.outlook.com (20.177.120.151) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2008.16; Thu, 27 Jun 2019 08:15:24 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::64e3:d89a:9e3:f435]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::64e3:d89a:9e3:f435%6]) with mapi id 15.20.2008.014; Thu, 27 Jun 2019
 08:15:24 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Julien Grall <Julien.Grall@arm.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>, Simon Kuenzer <simon.kuenzer@neclab.eu>, 
 "Sharan.Santhanam@neclab.eu" <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv2 3/7] plat/kvm: Move declaration of some global
 variables to a header
Thread-Index: AQHVKBuqGexElrGGHkCX+XhcjIihh6avMCPw
Date: Thu, 27 Jun 2019 08:15:24 +0000
Message-ID: <DB7PR08MB308298415AB46C51257E441DF7FD0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-4-justin.he@arm.com>
 <653747ff-4af6-39fb-a095-efe40b8957dd@arm.com>
In-Reply-To: <653747ff-4af6-39fb-a095-efe40b8957dd@arm.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 05d6c8e4-e4fa-4787-aa09-05cfbf327205.1
x-checkrecipientchecked: true
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 2e167d9f-346a-45c5-ed9a-08d6fad79ac5
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:DB7PR08MB3657; 
x-ms-traffictypediagnostic: DB7PR08MB3657:
x-microsoft-antispam-prvs: <DB7PR08MB365747479FAB2ED48ECC03E2F7FD0@DB7PR08MB3657.eurprd08.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:3968;
x-forefront-prvs: 008184426E
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(136003)(396003)(346002)(376002)(39860400002)(189003)(199004)(40434004)(13464003)(25786009)(74316002)(81156014)(81166006)(305945005)(71200400001)(2906002)(73956011)(7736002)(4326008)(55236004)(68736007)(72206003)(33656002)(8676002)(64756008)(5660300002)(66446008)(52536014)(8936002)(71190400001)(66476007)(66946007)(66556008)(76116006)(86362001)(6436002)(53546011)(99286004)(55016002)(54906003)(14454004)(7696005)(26005)(229853002)(5024004)(110136005)(478600001)(53936002)(14444005)(256004)(476003)(3846002)(6246003)(446003)(9686003)(11346002)(186003)(66066001)(486006)(6116002)(316002)(2501003)(76176011)(102836004)(6506007);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3657;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: OHLQuemR4iCVpcOk0BU9+eMED2kuDVSaJ6ifZM099VqUei5vXY3jdkVEVHe03s4kgwJURa0uyEM4cH26+tXzqFHb2OZoCaV85njdilEgEsTpqHDRZKmPWJkYAWcdLGPbwb+ee+JQk4orLgkJKAQvuXThhwbhtp/xEdBlISYrjy+B//Nda2cVyOF/N5j4d533ubqo624VpjBvl/1DKA+9uI5MJKmKGM1e7DTAn17E1b21CNNRBHqBwsuGhV8rZZqiHGPWqPn6tbbaDxFCoNSh7rm6xFmhIOMqYk/Etf8nj2Dtj3Z17erTVK8t2L17l74ZJgLaiuoTvRBP56d5GCpgdEFxudHnfOVtGPJT9/uAtSaciXQUZwF0qlMaccd2dG5mXlghmkbS/X1eS/nxEcNCCE15KJYxD7xsJ/ZcDo5vonc=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2e167d9f-346a-45c5-ed9a-08d6fad79ac5
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2019 08:15:24.0629 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Justin.He@arm.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3657
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 3/7] plat/kvm: Move
 declaration of some global variables to a header
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgSnVsaWVuDQpUaGlzIHBhdGNoIGlzIG5vdCBuZWNlc3NhcnkgYWZ0ZXIgY29tbWl0IDFmYTA5
NGVkN2QNCigicGxhdC9rdm06IEludHJvZHVjZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHN0cnVj
dCIpDQoNCkkgd2lsbCBkcm9wIGl0IGluIG5leHQgdmVyc2lvbi4gVGhhbmtzDQoNCg0KLS0NCkNo
ZWVycywNCkp1c3RpbiAoSmlhIEhlKQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N
Cj4gRnJvbTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4NCj4gU2VudDogMjAx
OeW5tDbmnIgyMeaXpSAxODoyNg0KPiBUbzogSnVzdGluIEhlIChBcm0gVGVjaG5vbG9neSBDaGlu
YSkgPEp1c3Rpbi5IZUBhcm0uY29tPjsgbWluaW9zLQ0KPiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZzsgU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ow0KPiBTaGFyYW4u
U2FudGhhbmFtQG5lY2xhYi5ldQ0KPiBDYzogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1p
ZHRAbmVjbGFiLmV1PjsgRmVsaXBlIEh1aWNpDQo+IDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pjsg
eXVyaS52b2xjaGtvdkBuZWNsYWIuZXU7IEthbHkgWGluIChBcm0gVGVjaG5vbG9neQ0KPiBDaGlu
YSkgPEthbHkuWGluQGFybS5jb20+OyBXZWkgQ2hlbiAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpDQo+
IDxXZWkuQ2hlbkBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIdjIgMy83
XSBwbGF0L2t2bTogTW92ZSBkZWNsYXJhdGlvbiBvZiBzb21lDQo+IGdsb2JhbCB2YXJpYWJsZXMg
dG8gYSBoZWFkZXINCj4NCj4gSGkgSmlhLA0KPg0KPiBPbiAxOC8wNC8yMDE5IDA3OjUyLCBKaWEg
SGUgd3JvdGU6DQo+ID4gZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2luY2x1ZGUva3ZtL3NlY3Rpb25z
LmgNCj4gYi9wbGF0L2t2bS9pbmNsdWRlL2t2bS9zZWN0aW9ucy5oDQo+ID4gbmV3IGZpbGUgbW9k
ZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi44ZTZjYTNjDQo+ID4gLS0tIC9kZXYvbnVsbA0K
PiA+ICsrKyBiL3BsYXQva3ZtL2luY2x1ZGUva3ZtL3NlY3Rpb25zLmgNCj4gPiBAQCAtMCwwICsx
LDQ3IEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8N
Cj4gPiArLyoNCj4gPiArICogQXV0aG9yczogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+DQo+
ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgQXJtIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4NCj4gPiArICoNCj4gPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ID4gKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0K
PiA+ICsgKiBhcmUgbWV0Og0KPiA+ICsgKg0KPiA+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiA+ICsgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuDQo+ID4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ID4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4NCj4gPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJp
Z2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiA+ICsgKiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0K
PiA+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTICJBUyBJUyINCj4gPiAr
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UDQo+IExJTUlURUQgVE8sIFRIRQ0KPiA+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVIgUFVSUE9TRQ0KPiA+
ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1INCj4gQ09OVFJJQlVUT1JTIEJFDQo+ID4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwNCj4gT1INCj4gPiArICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywNCj4g
UFJPQ1VSRU1FTlQgT0YNCj4gPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SDQo+IEJVU0lORVNTDQo+ID4gKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLA0K
PiBXSEVUSEVSIElODQo+ID4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUg0KPiBPVEhFUldJU0UpDQo+ID4gKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGDQo+IEFE
VklTRUQgT0YgVEhFDQo+ID4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiA+ICsg
Kg0KPiA+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJ
TiBBTlkgV0FZLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19QTEFUX0tWTV9LRVJO
RUxfSF9fDQo+ID4gKyNkZWZpbmUgX19QTEFUX0tWTV9LRVJORUxfSF9fDQo+ID4gKw0KPiA+ICsv
Kg0KPiA+ICsgKiBQcm92aWRlZCBieSBzZXR1cC5jDQo+ID4gKyAqLw0KPiA+ICtleHRlcm4gdm9p
ZCAqX2xpYmt2bXBsYXRfcGFnZXRhYmxlOw0KPiA+ICtleHRlcm4gdm9pZCAqX2xpYmt2bXBsYXRf
aGVhcF9zdGFydDsNCj4gPiArZXh0ZXJuIHZvaWQgKl9saWJrdm1wbGF0X3N0YWNrX3RvcDsNCj4g
PiArZXh0ZXJuIHZvaWQgKl9saWJrdm1wbGF0X21lbV9lbmQ7DQo+ID4gK2V4dGVybiB2b2lkICpf
bGlia3ZtcGxhdF9kdGI7DQo+DQo+IFRvIGJlIGhvbmVzdCwgSSBmZWVsIGl0IGlzIGEgYml0IG9k
ZCB0byBhZGQgdGhlIHByb3RvdHlwZSBvZiBfbGlia3ZtcGxhdF9kdGIgaW4NCj4gY29tbW9uIGNv
ZGUgd2hlbiB0aGlzIGlzIG9ubHkgdXNlZCBieSBBcm0uDQo+DQo+IEJ1dCB0aGlzIGlzIGFuIGlt
cHJvdmVtZW50IGZyb20gd2hhdCB3ZSBwcmV2aW91c2x5IGFkZC4gSSB3aWxsIGxlYXZlIHRoZQ0K
PiBVbmlrcmFmdCBmb2xrcyBkZWNpZGluZyB3aGF0IHRoZXkgcHJlZmVyLg0KPg0KPiBDaGVlcnMs
DQo+DQo+IC0tDQo+IEp1bGllbiBHcmFsbA0KSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRz
IG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBt
YXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBp
ZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNj
bG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVy
cG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhh
bmsgeW91Lg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Jun 27 08:22:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 27 Jun 2019 08:22: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 1hgPft-0003UX-2v; Thu, 27 Jun 2019 08:22:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=C6OA=U2=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgPfs-0003US-A6
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 08:22:32 +0000
X-Inumbo-ID: b44b23ea-98b4-11e9-8980-bc764e045a96
Received: from EUR02-VE1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe06::61c])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id b44b23ea-98b4-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 08:22:30 +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=y6eJwWMN8fwl0bcyYaxjJznH67gFgpczMTlJg0lVo9Y=;
 b=tVb0D2z1OaxoeRtvQ0ZpCi9b7KQR7FTzP2wDHbs3ABtzsfFVVBcovaffrkGgZJALDVNYXizr24n/CzrL339lWzy47mxUy2VFeCh2oqOfXQUYp2t8Uycg8rlHv0Vc/RIWQ7iitFC/Mf6+htqtWbiTPOzgrOT+407zoKgkF8hhXo8=
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com (52.134.110.24) by
 DB7PR08MB3083.eurprd08.prod.outlook.com (52.135.131.155) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2008.16; Thu, 27 Jun 2019 08:22:28 +0000
Received: from DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::64e3:d89a:9e3:f435]) by DB7PR08MB3082.eurprd08.prod.outlook.com
 ([fe80::64e3:d89a:9e3:f435%6]) with mapi id 15.20.2008.014; Thu, 27 Jun 2019
 08:22:28 +0000
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Julien Grall <Julien.Grall@arm.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>, Simon Kuenzer <simon.kuenzer@neclab.eu>, 
 "Sharan.Santhanam@neclab.eu" <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv2 5/7] plat/kvm: Implement intctrl APIs for Arm64
Thread-Index: AQHVKBz6Us43CPx2IUqaavuHe6TNa6avMi+Q
Date: Thu, 27 Jun 2019 08:22:28 +0000
Message-ID: <DB7PR08MB30826C9BE7E66F6280BCB8BBF7FD0@DB7PR08MB3082.eurprd08.prod.outlook.com>
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-6-justin.he@arm.com>
 <9c62011b-277c-0254-ea16-255bb09c21a7@arm.com>
In-Reply-To: <9c62011b-277c-0254-ea16-255bb09c21a7@arm.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 6631916b-bb2d-43e7-ba8c-f6bf1f7cf9fa.1
x-checkrecipientchecked: true
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 00741026-a3d2-493f-b818-08d6fad897ca
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:DB7PR08MB3083; 
x-ms-traffictypediagnostic: DB7PR08MB3083:
x-microsoft-antispam-prvs: <DB7PR08MB3083A8FE420EA1771B2C7BC5F7FD0@DB7PR08MB3083.eurprd08.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 008184426E
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(39860400002)(396003)(346002)(366004)(136003)(376002)(40434004)(13464003)(51914003)(199004)(189003)(229853002)(71190400001)(446003)(11346002)(316002)(6246003)(55236004)(110136005)(66556008)(256004)(5024004)(486006)(74316002)(7736002)(66476007)(68736007)(99286004)(14444005)(76176011)(305945005)(26005)(186003)(53546011)(66066001)(6506007)(64756008)(478600001)(476003)(7696005)(72206003)(71200400001)(2906002)(14454004)(102836004)(52536014)(25786009)(81156014)(33656002)(8676002)(5660300002)(81166006)(8936002)(3846002)(66446008)(76116006)(2501003)(86362001)(6436002)(9686003)(53936002)(66946007)(4326008)(54906003)(55016002)(6116002)(73956011);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3083;
 H:DB7PR08MB3082.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: eOD6uINZ3abnFn/0hpc5HO9vQWI72Cp6EE+KKALxudEgn/pZKkuoN/cfKtlj0KvhpBAR5Im5CSCkZdP397f+Bp36AOfsfQ3DTxHjCnwojp/lNLTOLRF+hwncos8Yvzp+WXZOXhWoJSX4msqCMI+A2uX0dysVv2DXIO4UdmpxRoag2FDlJjx8pqPXdvG9iKrbywrytg/eRpF3zD4cFOY93tZh7P7P6urSqciGbnnMpcb2mHCYP9kJwx393AIC07F1sPvhP3JTirJfZh24MM2JKTq168//wXV7G5qjc980dKd4fgJDPhZ0dbaMmdzj7DZ8slHEPDuc4Dr03X/rbeWb/AclZbBzOvKdn1LxDbh14cNnOEzLW+usjHnUQsQ+4HQlamh3JXBNZFa+z6qV1Fdn2Ru22797R/uGtdOBPvUoibU=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 00741026-a3d2-493f-b818-08d6fad897ca
X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2019 08:22:28.4169 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Justin.He@arm.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3083
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 5/7] plat/kvm: Implement
 intctrl APIs for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgSnVsaWVuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSnVsaWVu
IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4NCj4gU2VudDogMjAxOeW5tDbmnIgyMeaXpSAx
ODozNQ0KPiBUbzogSnVzdGluIEhlIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPEp1c3Rpbi5IZUBh
cm0uY29tPjsgbWluaW9zLQ0KPiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgU2ltb24gS3Vl
bnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ow0KPiBTaGFyYW4uU2FudGhhbmFtQG5lY2xh
Yi5ldQ0KPiBDYzogRmxvcmlhbiBTY2htaWR0IDxmbG9yaWFuLnNjaG1pZHRAbmVjbGFiLmV1Pjsg
RmVsaXBlIEh1aWNpDQo+IDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PjsgeXVyaS52b2xjaGtvdkBu
ZWNsYWIuZXU7IEthbHkgWGluIChBcm0gVGVjaG5vbG9neQ0KPiBDaGluYSkgPEthbHkuWGluQGFy
bS5jb20+OyBXZWkgQ2hlbiAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpDQo+IDxXZWkuQ2hlbkBhcm0u
Y29tPg0KPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIdjIgNS83XSBwbGF0L2t2bTogSW1w
bGVtZW50IGludGN0cmwgQVBJcyBmb3INCj4gQXJtNjQNCj4NCj4gSGksDQo+DQo+IE9uIDE4LzA0
LzIwMTkgMDc6NTIsIEppYSBIZSB3cm90ZToNCj4gPiBGcm9tOiBXZWkgQ2hlbiA8d2VpLmNoZW5A
YXJtLmNvbT4NCj4gPg0KPiA+IEJlZm9yZSBHSUN2MiBiZWNvbWUgcmVhZHksIHdlIGhhZCBtYXJr
ZWQgdGhlIGludGN0cmwgQVBJcyBhcyBUT0RPLg0KPiA+IE5vdywgd2UgaGF2ZSBlbmFibGVkIHRo
ZSBHSUN2Miwgd2UgY2FuIGltcGxlbWVudCBpbnRjdHJsIEFQSXMgd2l0aA0KPiA+IHJlbGF0ZWQg
R0lDIEFQSXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJt
LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPg0KPiA+
IC0tLQ0KPiA+IHYxLT52MjogaW1wbGVtZW50IGludGN0cmxfYWNrX2lycSBhcyBOT1ANCj4gPg0K
PiA+ICAgcGxhdC9rdm0vYXJtL2ludGN0cmwuYyB8IDI1ICsrKysrKysrKysrKysrKysrKy0tLS0t
LS0NCj4gPiAgIHBsYXQva3ZtL2FybS9zZXR1cC5jICAgfCAgNCArKysrDQo+ID4gICAyIGZpbGVz
IGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZm
IC0tZ2l0IGEvcGxhdC9rdm0vYXJtL2ludGN0cmwuYyBiL3BsYXQva3ZtL2FybS9pbnRjdHJsLmMN
Cj4gPiBpbmRleCBhYzYwNGE3Li45YmVjNWQ2IDEwMDY0NA0KPiA+IC0tLSBhL3BsYXQva3ZtL2Fy
bS9pbnRjdHJsLmMNCj4gPiArKysgYi9wbGF0L2t2bS9hcm0vaW50Y3RybC5jDQo+ID4gQEAgLTMx
LDI0ICszMSwzNSBAQA0KPiA+ICAgICoNCj4gPiAgICAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUg
RVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuDQo+ID4gICAgKi8NCj4gPiArI2luY2x1
ZGUgPHVrL2Fzc2VydC5oPg0KPiA+ICsjaW5jbHVkZSA8a3ZtL3NlY3Rpb25zLmg+DQo+ID4gICAj
aW5jbHVkZSA8a3ZtL2ludGN0cmwuaD4NCj4gPiArI2luY2x1ZGUgPGFybS9jcHUuaD4NCj4gPiAr
I2luY2x1ZGUgPGFybS9pcnEuaD4NCj4gPiArI2luY2x1ZGUgPGdpYy9naWMtdjIuaD4NCj4gPg0K
PiA+ICAgdm9pZCBpbnRjdHJsX2luaXQodm9pZCkNCj4gPiAgIHsNCj4gPiAtLy8gVE8gRE8NCj4g
PiAraW50IHJldDsNCj4gPiArDQo+ID4gKy8qIEluaXRpYWxpemUgR0lDIGZyb20gRFRCICovDQo+
ID4gK3JldCA9IF9kdGJfaW5pdF9naWMoX2xpYmt2bXBsYXRfZHRiKTsNCj4gPiAraWYgKHJldCkN
Cj4gPiArVUtfQ1JBU0goIkluaXRpYWxpemUgR0lDIGZyb20gRFRCIGZhaWxlZCwgcmV0PSVkXG4i
LCByZXQpOw0KPiA+ICsNCj4gPiAgIH0NCj4gPg0KPiA+IC12b2lkIGludGN0cmxfYWNrX2lycSh1
bnNpZ25lZCBpbnQgaXJxKQ0KPiA+ICt2b2lkIGludGN0cmxfYWNrX2lycSh1aW50MzJfdCBpcnEp
DQo+DQo+IElmIHlvdSBjaGFuZ2UgdGhlIHR5cGUgaGVyZSwgdGhlbiB5b3UgYWxzbyBuZWVkIHRv
IHVwZGF0ZSB0aGUgcHJvdG90eXBlDQoNClRoYW5rcyBmb3IgdGhlIHBvaW50aW5nLg0KSSB3aWxs
IGNoYW5nZSB0aGVtIGJhY2sgdG8gIiB1bnNpZ25lZCBpbnQiIHRvIGtlZXAgdGhlIHNhbWUgcGFn
ZSB3aXRoIFg4Ng0KDQotLQ0KQ2hlZXJzLA0KSnVzdGluIChKaWEgSGUpDQoNCg0KPg0KPiA+ICAg
ew0KPiA+IC0vLyBUTyBETw0KPiA+ICsvL05PUA0KPiA+ICAgfQ0KPiA+DQo+ID4gLXZvaWQgaW50
Y3RybF9tYXNrX2lycSh1bnNpZ25lZCBpbnQgaXJxKQ0KPiA+ICt2b2lkIGludGN0cmxfbWFza19p
cnEodWludDMyX3QgaXJxKQ0KPg0KPiBEaXR0by4NCj4NCj4gPiAgIHsNCj4gPiAtLy8gVE8gRE8N
Cj4gPiArZ2ljX2Rpc2FibGVfaXJxKGlycSk7DQo+ID4gICB9DQo+ID4NCj4gPiAtdm9pZCBpbnRj
dHJsX2NsZWFyX2lycSh1bnNpZ25lZCBpbnQgaXJxKQ0KPiA+ICt2b2lkIGludGN0cmxfY2xlYXJf
aXJxKHVpbnQzMl90IGlycSkNCj4NCj4gRGl0dG8uDQo+DQo+ID4gICB7DQo+ID4gLS8vIFRPIERP
DQo+ID4gK2dpY19lbmFibGVfaXJxKGlycSk7DQo+ID4gICB9DQo+DQo+IENoZWVycywNCj4NCj4g
LS0NCj4gSnVsaWVuIEdyYWxsDQpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhp
cyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNv
IGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBs
ZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRo
ZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBv
ciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3Uu
DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 02:39:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 02:39: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 1hggnn-0006UC-M6; Fri, 28 Jun 2019 02:39:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iSFg=U3=arm.com=jianyong.wu@srs-us1.protection.inumbo.net>)
 id 1hggnm-0006U7-8V
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 02:39:50 +0000
X-Inumbo-ID: fcfecfb2-994d-11e9-9945-e3324c323653
Received: from EUR04-HE1-obe.outbound.protection.outlook.com (unknown
 [40.107.7.77]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fcfecfb2-994d-11e9-9945-e3324c323653;
 Fri, 28 Jun 2019 02:39:45 +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=SbxCNmGVjYObmkG/MQdVzIV/QzkCbBBBsXLmoQ52OeA=;
 b=4EzalggiKvfcd0yOFY4CP0xYhOz46nEKA0rYsfPaeqtaC7CxPBXLLw1I1E4LaUG8TYyb7LVY+VRo8tYw30dCg0Xkm76gvwJE9gjjDajI0IaIPM+ArVoAhqGOgoMVPB8HxsNXxeKUXvJ3F3STMqt6HGto4sf7QNNFh6NFG9uKDT8=
Received: from AM7PR08MB5510.eurprd08.prod.outlook.com (10.141.175.81) by
 AM7PR08MB5333.eurprd08.prod.outlook.com (10.141.172.23) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2008.16; Fri, 28 Jun 2019 02:39:43 +0000
Received: from AM7PR08MB5510.eurprd08.prod.outlook.com
 ([fe80::44b:4e49:fe16:aeb7]) by AM7PR08MB5510.eurprd08.prod.outlook.com
 ([fe80::44b:4e49:fe16:aeb7%2]) with mapi id 15.20.2008.014; Fri, 28 Jun 2019
 02:39:43 +0000
From: "Jianyong Wu (Arm Technology China)" <Jianyong.Wu@arm.com>
To: Julien Grall <Julien.Grall@arm.com>, "Justin He (Arm Technology China)"
 <Justin.He@arm.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>, Simon Kuenzer <simon.kuenzer@neclab.eu>, 
 "Sharan.Santhanam@neclab.eu" <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv2 6/7] plat/common: Add a platform API to get
 IRQ from device tree
Thread-Index: AQHU9bNQA0DW/z4wk0if8bW31E9IbKamU1wAgApzV3A=
Date: Fri, 28 Jun 2019 02:39:43 +0000
Message-ID: <AM7PR08MB5510CCAB76BDD4BFD9110142F4FC0@AM7PR08MB5510.eurprd08.prod.outlook.com>
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-7-justin.he@arm.com>
 <ae7f210a-52b5-04d1-a50f-b6d663a0911f@arm.com>
In-Reply-To: <ae7f210a-52b5-04d1-a50f-b6d663a0911f@arm.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: dce9987c-6266-41fe-88ec-5fda913ed273.1
x-checkrecipientchecked: true
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Jianyong.Wu@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 1f4273b6-2dd3-4dcf-aa32-08d6fb71e04f
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:AM7PR08MB5333; 
x-ms-traffictypediagnostic: AM7PR08MB5333:
x-microsoft-antispam-prvs: <AM7PR08MB5333BF261EBFEE9745D78376F4FC0@AM7PR08MB5333.eurprd08.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 00826B6158
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(4636009)(366004)(39860400002)(376002)(396003)(136003)(346002)(40434004)(13464003)(189003)(199004)(66556008)(305945005)(64756008)(66066001)(102836004)(486006)(476003)(25786009)(74316002)(66946007)(11346002)(446003)(5660300002)(76116006)(72206003)(66476007)(66446008)(71190400001)(478600001)(71200400001)(73956011)(14444005)(6116002)(256004)(3846002)(5024004)(14454004)(229853002)(76176011)(8676002)(99286004)(186003)(2906002)(7696005)(53936002)(4326008)(7736002)(86362001)(52536014)(26005)(6246003)(55236004)(2501003)(6436002)(68736007)(6506007)(110136005)(54906003)(53546011)(9686003)(8936002)(33656002)(55016002)(316002)(81156014)(81166006);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM7PR08MB5333;
 H:AM7PR08MB5510.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: qfkeAlkKi+0C/sWKb1rIap3Ad+hQMwEgqQHr0+Ryg+mQ7Fr9ItX3DZ1JJ/No91zczfbYAqtdVsiG/0SFOiqFNsXFyBgtd0bbu5jn8mHpWMhjjIYztniYRaoi5vzVzZysQvCjoJktWu1QzbfWtZJIqAQzapHKvapaaMP46pQAcwNGJZBAJV2CuNQ/ERdQLYZNGG19uEzIcYGDqowzwgcZZkmyLPLPfI7HuA8lM0eNjCvXM03jarIq13fTwgx2y18u3ayiPIi2lbrIv5YK+5G4eOVcWc3XExLzYU1H+woGEs+Sg5kyutCqAPyAlDY56kArcQFFXxn0l02arSBye7Kb/oOo4JOBttqyv+0cyMCRLiU+/aJZrNXP/U/xzlqeqhr6/5LWLeA8GbRFE3JqMUYqsluiDyHOhNV0e5Iv0tVxwYE=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f4273b6-2dd3-4dcf-aa32-08d6fb71e04f
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2019 02:39:43.1136 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Jianyong.Wu@arm.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5333
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 6/7] plat/common: Add a
 platform API to get IRQ from device tree
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkganVsaWVuLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEp1bGll
biBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgSnVuZSAyMSwg
MjAxOSA2OjUyIFBNDQo+IFRvOiBKdXN0aW4gSGUgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8SnVz
dGluLkhlQGFybS5jb20+OyBtaW5pb3MtDQo+IGRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT47DQo+IFNoYXJhbi5TYW50aGFu
YW1AbmVjbGFiLmV1DQo+IENjOiBGbG9yaWFuIFNjaG1pZHQgPGZsb3JpYW4uc2NobWlkdEBuZWNs
YWIuZXU+OyBGZWxpcGUgSHVpY2kNCj4gPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+OyB5dXJpLnZv
bGNoa292QG5lY2xhYi5ldTsgS2FseSBYaW4gKEFybQ0KPiBUZWNobm9sb2d5IENoaW5hKSA8S2Fs
eS5YaW5AYXJtLmNvbT47IFdlaSBDaGVuIChBcm0gVGVjaG5vbG9neSBDaGluYSkNCj4gPFdlaS5D
aGVuQGFybS5jb20+OyBKaWFueW9uZyBXdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpDQo+IDxKaWFu
eW9uZy5XdUBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIdjIgNi83XSBw
bGF0L2NvbW1vbjogQWRkIGEgcGxhdGZvcm0gQVBJIHRvDQo+IGdldCBJUlEgZnJvbSBkZXZpY2Ug
dHJlZQ0KPg0KPiBIaSwNCj4NCj4gT24gMTgvMDQvMjAxOSAwNzo1MiwgSmlhIEhlIHdyb3RlOg0K
PiA+IEZyb206IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPg0KPiA+DQo+ID4gV2hlbiB3ZSBn
ZXQgaXJxIG51bWJlciBmcm9tIGRldmljZSB0cmVlLCBpdCBjb250YWlucyBtb3JlIHRoYW4gb25l
DQo+ID4gaXRlbXMsIGxpa2UgaXJxIHR5cGUsIGhhcmR3YXJlIGlycSBudW1iZXIuIFRoaXMgZnVu
Y3Rpb24gd2lsbCBoZWxwIHVzDQo+ID4gdG8gdHJhbnNsYXRlIHRoZXNlIGl0ZW1zIGludG8gb25l
IHVuaXF1ZSBwbGF0Zm9tciBpcnEgbnVtYmVyLg0KPg0KPiBzL3BsYXRmb21yL3BsYXRmb3JtLw0K
eWVhaA0KPg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5j
b20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+
DQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4NCj4gPiAtLS0N
Cj4gPiB2MS0+djI6IGFkZHJlc3MgU2hhcmFuJ3MgY29tbWVudHMNCj4gPg0KPiA+ICAgcGxhdC9j
b21tb24vaW5jbHVkZS9naWNfZmR0LmggfCA0Nw0KPiArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysNCj4gPiAgIHBsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMgICAgIHwgNTQNCj4gKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4gPiAgIDIgZmlsZXMgY2hhbmdlZCwgOTkg
aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBw
bGF0L2NvbW1vbi9pbmNsdWRlL2dpY19mZHQuaA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL3BsYXQv
Y29tbW9uL2luY2x1ZGUvZ2ljX2ZkdC5oDQo+ID4gYi9wbGF0L2NvbW1vbi9pbmNsdWRlL2dpY19m
ZHQuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAuLmJhMDFmY2YNCj4g
PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvcGxhdC9jb21tb24vaW5jbHVkZS9naWNfZmR0LmgN
Cj4gPiBAQCAtMCwwICsxLDQ3IEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8NCj4gPiArLyoNCj4gPiArICogQXV0aG9yczogV2VpIENoZW4gPHdlaS5j
aGVuQGFybS5jb20+DQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgQXJtIEx0
ZC4sIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAqDQo+ID4gKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiA+
ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMNCj4gPiArICogYXJlIG1ldDoNCj4gPiArICoNCj4gPiArICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQNCj4gPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLg0KPiA+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiA+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlDQo+ID4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+ID4gKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gPiArICog
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkDQo+IGZyb20NCj4gPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gPiArICoNCj4gPiArICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJV
VE9SUyAiQVMgSVMiDQo+ID4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiBMSU1JVEVEDQo+ID4gK1RPLCBUSEUNCj4gPiArICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQ0K
PiBQQVJUSUNVTEFSDQo+ID4gK1BVUlBPU0UNCj4gPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SDQo+ID4gK0NPTlRSSUJVVE9SUyBC
RQ0KPiA+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksDQo+ID4gK09SDQo+ID4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQo+IFBST0NVUkVNRU5UDQo+ID4gK09G
DQo+ID4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUg0KPiA+ICtCVVNJTkVTUw0KPiA+ICsgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwNCj4gPiArV0hFVEhF
UiBJTg0KPiA+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1INCj4gPiArT1RIRVJXSVNFKQ0KPiA+ICsgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRg0KPiA+ICtBRFZJ
U0VEIE9GIFRIRQ0KPiA+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCj4gPiArICoN
Cj4gPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4g
QU5ZIFdBWS4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fUExBVF9DTU5fR0lDX0ZE
VF9IX18NCj4gPiArI2RlZmluZSBfX1BMQVRfQ01OX0dJQ19GRFRfSF9fDQo+ID4gKw0KPiA+ICsv
KioNCj4gPiArICogR2V0IGFuIGludGVycnVwdCBudW1iZXIgb2YgZ2l2ZW4gaW5kZXggZnJvbSBk
ZXZpY2UgdHJlZQ0KPiA+ICsgKiBAcGFyYW0gZmR0IERldmljZSB0cmVlIGJsb2INCj4gPiArICog
QHBhcmFtIG5vZGVvZmZzZXQgZGV2aWNlIG5vZGUgb2Zmc2V0DQo+ID4gKyAqIEBwYXJhbSBpbmRl
eCB3aGljaCBpbnRlcnJ1cHQNCj4gPiArICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRp
dmUgZXJybm8gdmFsdWUgb24gZXJyb3JzICAqLyBpbnQNCj4gPiArZ2ljX2dldF9pcnFfZnJvbV9k
dGIoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9mZnNldCwgaW50IGluZGV4KTsNCj4gPiArDQo+
ID4gKyNlbmRpZiAvKiBfX1BMQVRfQ01OX0dJQ19GRFRfSF9fICovDQo+ID4gZGlmZiAtLWdpdCBh
L3BsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMgYi9wbGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jDQo+
ID4gaW5kZXggNTdhYjU3Yy4uY2UzOGVlOSAxMDA2NDQNCj4gPiAtLS0gYS9wbGF0L2RyaXZlcnMv
Z2ljL2dpYy12Mi5jDQo+ID4gKysrIGIvcGxhdC9kcml2ZXJzL2dpYy9naWMtdjIuYw0KPiA+IEBA
IC00OCwxMiArNDgsMTggQEANCj4gPiAgIC8qIE1heCBDUFUgaW50ZXJmYWNlIGZvciBHSUN2MiAq
Lw0KPiA+ICAgI2RlZmluZSBHSUNfTUFYX0NQVUlGOA0KPiA+DQo+ID4gLS8qIFNQSSBpbnRlcnJ1
cHQgYmFzZSBJRCAqLw0KPiA+ICsvKiBTUEkgaW50ZXJydXB0IGRlZmluaXRpb25zICovDQo+ID4g
KyNkZWZpbmUgR0lDX1NQSV9UWVBFMA0KPiA+ICAgI2RlZmluZSBHSUNfU1BJX0JBU0UzMg0KPiA+
DQo+ID4gLS8qIFBQSSBpbnRlcnJ1cHQgYmFzZSBJRCAqLw0KPiA+ICsvKiBQUEkgaW50ZXJydXB0
IGRlZmluaXRpb25zICovDQo+ID4gKyNkZWZpbmUgR0lDX1BQSV9UWVBFMQ0KPiA+ICAgI2RlZmlu
ZSBHSUNfUFBJX0JBU0UxNg0KPiA+DQo+ID4gKy8qIFNHSSBpbnRlcnJ1cHQgZGVmaW5pdGlvbnMg
Ki8NCj4gPiArI2RlZmluZSBHSUNfU0dJX1RZUEUyDQo+DQo+IEFGQUlDVCwgeW91IGNhbid0IGRl
ZmluZSBTR0kgaW4gdGhlIERUIGJpbmRpbmcgWzFdLg0KDQoNClllYWgsIEkgYWdyZWUuIFdlIG5l
ZWQgbm8gaGFuZGxpbmcgZm9yIHNnaSBpbiBkdGIuIEkgd2lsbCByZW1vdmUgdGhlc2UgY29kZS4N
Cg0KPg0KPiA+ICsjZGVmaW5lIEdJQ19TR0lfQkFTRTANCj4gPiArDQo+ID4gICAvKiBNYXggc3Vw
cG9ydCBpbnRlcnJ1cHQgbnVtYmVyIGZvciBHSUN2MiAqLw0KPiA+ICAgI2RlZmluZSBHSUNfTUFY
X0lSUV9fTUFYX0lSUQ0KPiA+DQo+ID4gQEAgLTI5Myw2ICsyOTksMzQgQEAgdm9pZCBnaWNfc2V0
X2lycV90eXBlKHVpbnQzMl90IGlycSwgaW50IHRyaWdnZXIpDQo+ID4gICB3cml0ZV9naWNkMzIo
R0lDRF9JQ0ZHUihpcnEpLCB2YWwpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgZ2lj
X2lycV90cmFuc2xhdGUoaW50IHR5cGUsIGludCBod19pcnEpDQo+DQo+IE1vc3RseSBsaWtlbHkg
Ym90aCBhcmd1bWVudHMgc2hvdWxkIGJlIHVuc2lnbmVkLg0KDQpPaywgSSB3aWxsIGZpeCBpdC4N
Cj4NCj4gPiArew0KPiA+ICtpbnQgaXJxOw0KPiA+ICsNCj4gPiArc3dpdGNoICh0eXBlKSB7DQo+
ID4gK2Nhc2UgR0lDX1NQSV9UWVBFOg0KPiA+ICtpcnEgPSBod19pcnEgKyBHSUNfU1BJX0JBU0U7
DQo+ID4gK2lmIChpcnEgPj0gR0lDX1NQSV9CQVNFICYmIGlycSA8IF9fTUFYX0lSUSkNCj4gPiAr
cmV0dXJuIGlycTsNCj4gPiArYnJlYWs7DQo+ID4gK2Nhc2UgR0lDX1BQSV9UWVBFOg0KPiA+ICtp
cnEgPSBod19pcnEgKyBHSUNfUFBJX0JBU0U7DQo+ID4gK2lmIChpcnEgPj0gR0lDX1BQSV9CQVNF
ICYmIGlycSA8IEdJQ19TUElfQkFTRSkNCj4gPiArcmV0dXJuIGlycTsNCj4gPiArYnJlYWs7DQo+
ID4gK2Nhc2UgR0lDX1NHSV9UWVBFOg0KPiA+ICtpcnEgPSBod19pcnEgKyBHSUNfU0dJX0JBU0U7
DQo+ID4gK2lmIChpcnEgPj0gR0lDX1NHSV9CQVNFICYmIGlycSA8IEdJQ19QUElfQkFTRSkNCj4g
PiArcmV0dXJuIGlycTsNCj4gPiArYnJlYWs7DQo+ID4gK2RlZmF1bHQ6DQo+ID4gK3VrX3ByX3dh
cm4oIkludmFsaWQgSVJRIHR5cGUgWyVkXVxuIiwgdHlwZSk7DQo+ID4gK30NCj4gPiArDQo+ID4g
K3VrX3ByX2VycigiaXJxIGlzIG91dCBvZiByYW5nZVxuIik7DQo+ID4gK3JldHVybiAtRUlOVkFM
Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgc3RhdGljIHZvaWQgZ2ljX2luaXRfZGlzdCh2b2lkKQ0K
PiA+ICAgew0KPiA+ICAgdWludDMyX3QgdmFsLCBjcHVpZl9udW1iZXIsIGlycV9udW1iZXI7IEBA
IC00MTYsMyArNDUwLDE5IEBAIGludA0KPiA+IF9kdGJfaW5pdF9naWMoY29uc3Qgdm9pZCAqZmR0
KQ0KPiA+DQo+ID4gICByZXR1cm4gMDsNCj4gPiAgIH0NCj4gPiArDQo+ID4gK2ludCBnaWNfZ2V0
X2lycV9mcm9tX2R0Yihjb25zdCB2b2lkICpmZHQsIGludCBub2Rlb2Zmc2V0LCBpbnQgaW5kZXgp
DQo+ID4gK3sNCj4gPiArZmR0MzJfdCAqcHJvcDsNCj4gPiAraW50IHR5cGUsIGh3aXJxLCBzaXpl
Ow0KPiA+ICtpbnQgcmV0Ow0KPiA+ICsNCj4gPiArcmV0ID0gZmR0X2dldF9pbnRlcnJ1cHQoZmR0
LCBub2Rlb2Zmc2V0LCBpbmRleCwgJnNpemUsICZwcm9wKTsNCj4gPiAraWYgKHJldCA8IDApDQo+
ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArdHlwZSA9IGZkdDMyX3RvX2NwdShwcm9w
WzBdKTsNCj4gPiAraHdpcnEgPSBmZHQzMl90b19jcHUocHJvcFsxXSk7DQo+ID4gKw0KPiA+ICty
ZXR1cm4gZ2ljX2lycV90cmFuc2xhdGUodHlwZSwgaHdpcnEpOyB9DQo+ID4NCj4NCj4gSG93IGRv
IHlvdSBwbGFuIHRvIGhhbmRsZSBwcm9wWzNdIChpLmUgbGV2ZWwtc2Vuc2l0aXZlLCBlZGdlLXRy
aWdnZXJlZCk/DQoNCkVyLCBhcyBmYXIgYXMgSSBrbm93LCB3ZSBjYW4gZ2V0IGlycSBudW1iZXIg
anVzdCBieSBpbnRlcnJ1cHQgdHlwZSBhbmQgaXRzIGhhcmR3YXJlIG51bWJlciBpbiBkdA0KQW5k
IG5vIG5lZWQgdG8gY2FyZSBhYm91dCBpdHMgdHJpZ2dlciB0eXBlLiBTbyB3ZSBuZWdsZWN0IHRo
ZSBwcm9wWzNdIGhlcmUuDQoNClRoYW5rcw0KSmlhbnlvbmcgd3UNCg0KPg0KPiBDaGVlcnMsDQo+
DQo+IFsxXSBsaW51eC9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0
LWNvbnRyb2xsZXINCj4NCj4gLS0NCj4gSnVsaWVuIEdyYWxsDQpJTVBPUlRBTlQgTk9USUNFOiBU
aGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRl
bnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRl
bmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQg
ZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQg
Zm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkg
bWVkaXVtLiBUaGFuayB5b3UuDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 05:26:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 05:26: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 1hgjPH-0002Ft-MY; Fri, 28 Jun 2019 05:26:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KRhI=U3=arm.com=julien.grall@srs-us1.protection.inumbo.net>)
 id 1hgjPF-0002Fo-JH
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 05:26:41 +0000
X-Inumbo-ID: 4d73bd67-9965-11e9-8980-bc764e045a96
Received: from EUR04-VI1-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe0e::61f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4d73bd67-9965-11e9-8980-bc764e045a96;
 Fri, 28 Jun 2019 05:26:39 +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=9aHfAHmTgvmSlW1S/za++zX4m3p6vtGG+t8pO1MxHjc=;
 b=op9yG8kp2/jzpBmtBMxSLdRUbXTTTc7npHJ/fSvRgRbG5753K8nmIpkn1LJanunFSvBVoxqDD/AbDFt+mKqERn3mL36oDm11kZlUXdwmwz6TJJ6/NKCv6ZS2yCobDHF/VoQjx5WKi2hAAkPKMb+c1w1eOuFvgHrZQ2wLrEB3Dyk=
Received: from AM0PR08MB3139.eurprd08.prod.outlook.com (52.134.93.144) by
 AM0PR08MB3569.eurprd08.prod.outlook.com (20.177.109.85) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2032.18; Fri, 28 Jun 2019 05:26:36 +0000
Received: from AM0PR08MB3139.eurprd08.prod.outlook.com
 ([fe80::290d:81aa:7f97:5a49]) by AM0PR08MB3139.eurprd08.prod.outlook.com
 ([fe80::290d:81aa:7f97:5a49%3]) with mapi id 15.20.2032.018; Fri, 28 Jun 2019
 05:26:36 +0000
From: Julien Grall <Julien.Grall@arm.com>
To: "Jianyong Wu (Arm Technology China)" <Jianyong.Wu@arm.com>, "Justin He
 (Arm Technology China)" <Justin.He@arm.com>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, "Sharan.Santhanam@neclab.eu"
 <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv2 6/7] plat/common: Add a platform API to get
 IRQ from device tree
Thread-Index: AQHU9bNQlbdUZWRZL0euIGp9PtpX/KamZB8AgApl9YCAAC6eAA==
Date: Fri, 28 Jun 2019 05:26:36 +0000
Message-ID: <0f1b84ae-2ef3-145e-d440-d6ad3fe5a909@arm.com>
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-7-justin.he@arm.com>
 <ae7f210a-52b5-04d1-a50f-b6d663a0911f@arm.com>
 <AM7PR08MB5510CCAB76BDD4BFD9110142F4FC0@AM7PR08MB5510.eurprd08.prod.outlook.com>
In-Reply-To: <AM7PR08MB5510CCAB76BDD4BFD9110142F4FC0@AM7PR08MB5510.eurprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-clientproxiedby: DB6P193CA0022.EURP193.PROD.OUTLOOK.COM (2603:10a6:6:29::32)
 To AM0PR08MB3139.eurprd08.prod.outlook.com
 (2603:10a6:208:5d::16)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Julien.Grall@arm.com; 
x-ms-exchange-messagesentrepresentingtype: 1
x-originating-ip: [81.100.41.95]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 39327009-fc76-4336-ca30-08d6fb89307d
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:AM0PR08MB3569; 
x-ms-traffictypediagnostic: AM0PR08MB3569:
x-microsoft-antispam-prvs: <AM0PR08MB3569E9261323ACF9D3538AFF80FC0@AM0PR08MB3569.eurprd08.prod.outlook.com>
nodisclaimer: True
x-ms-oob-tlc-oobclassifiers: OLM:8882;
x-forefront-prvs: 00826B6158
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(4636009)(346002)(376002)(39860400002)(366004)(396003)(136003)(199004)(189003)(5660300002)(110136005)(316002)(6246003)(66946007)(73956011)(66446008)(54906003)(66476007)(66556008)(64756008)(8936002)(3846002)(6116002)(81166006)(305945005)(8676002)(81156014)(7736002)(2906002)(2501003)(86362001)(25786009)(4326008)(71200400001)(71190400001)(31696002)(256004)(14444005)(11346002)(446003)(2616005)(476003)(486006)(36756003)(44832011)(31686004)(26005)(14454004)(72206003)(478600001)(66066001)(68736007)(76176011)(52116002)(229853002)(386003)(6506007)(6486002)(53546011)(6436002)(102836004)(99286004)(186003)(6512007)(53936002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB3569;
 H:AM0PR08MB3139.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: YWPqg5vHkXvvOXu56ZkHEd91bBm1ZWFjR78JLt0d+lLi5z6czCRtfaVJR+viCoWIozaCmrqSKfQjZwah3oc83lzn5HTAibVVJ+/WLRRycgTRFVeUb/umpPVQzvCWF6tnlz5wbPEmSR9sGSDPfhKiNk8lUocaWigVkPGDSppM92BUW0qLeb4scVnKY3ye96wEGb//sVoo8VsoA07XCHsWjxFhZ47kZCau8lP4cfc4cDzdBDB0fklkpwt8NtyHzqqSkrOiqFUf7mb8Ql6FRA10ueecOB+RQtwCPcwhHVlBNb7H7RDLpZDqjGdyVP1VwNy81+GtSwcTwywY2eEWJyImQ5xbbsYUZDvezNFPMuBNBBzIyI5cRQ2aH9b7LY6+C7Wb0TglWbdY0N4e/UlK2J0KTvFQejbBg0oADfqSTSUJvzM=
Content-ID: <6D06B8A82AB2AF4FBD7F6F422805FC9B@eurprd08.prod.outlook.com>
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 39327009-fc76-4336-ca30-08d6fb89307d
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2019 05:26:36.5163 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Julien.Grall@arm.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3569
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 6/7] plat/common: Add a
 platform API to get IRQ from device tree
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>,
 Marc Zyngier <Marc.Zyngier@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>, nd <nd@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

KCsgTWFyYyBaLikNCg0KSGksDQoNCk9uIDI4LzA2LzIwMTkgMDM6MzksIEppYW55b25nIFd1IChB
cm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6DQo+Pj4gKw0KPj4+ICtpbnQgZ2ljX2dldF9pcnFf
ZnJvbV9kdGIoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9mZnNldCwgaW50IGluZGV4KQ0KPj4+
ICt7DQo+Pj4gKwlmZHQzMl90ICpwcm9wOw0KPj4+ICsJaW50IHR5cGUsIGh3aXJxLCBzaXplOw0K
Pj4+ICsJaW50IHJldDsNCj4+PiArDQo+Pj4gKwlyZXQgPSBmZHRfZ2V0X2ludGVycnVwdChmZHQs
IG5vZGVvZmZzZXQsIGluZGV4LCAmc2l6ZSwgJnByb3ApOw0KPj4+ICsJaWYgKHJldCA8IDApDQo+
Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+Pj4gKw0KPj4+ICsJdHlwZSA9IGZkdDMyX3RvX2NwdShw
cm9wWzBdKTsNCj4+PiArCWh3aXJxID0gZmR0MzJfdG9fY3B1KHByb3BbMV0pOw0KPj4+ICsNCj4+
PiArCXJldHVybiBnaWNfaXJxX3RyYW5zbGF0ZSh0eXBlLCBod2lycSk7IH0NCj4+Pg0KPj4NCj4+
IEhvdyBkbyB5b3UgcGxhbiB0byBoYW5kbGUgcHJvcFszXSAoaS5lIGxldmVsLXNlbnNpdGl2ZSwg
ZWRnZS10cmlnZ2VyZWQpPw0KPiANCj4gRXIsIGFzIGZhciBhcyBJIGtub3csIHdlIGNhbiBnZXQg
aXJxIG51bWJlciBqdXN0IGJ5IGludGVycnVwdCB0eXBlIGFuZCBpdHMgaGFyZHdhcmUgbnVtYmVy
IGluIGR0DQo+IEFuZCBubyBuZWVkIHRvIGNhcmUgYWJvdXQgaXRzIHRyaWdnZXIgdHlwZS4gU28g
d2UgbmVnbGVjdCB0aGUgcHJvcFszXSBoZXJlLg0KDQpXaHkgZG9uJ3QgeW91IG5lZWQgdG8gY2Fy
ZSBhYm91dCB0cmlnZ2VyIHR5cGU/IFBlciB0aGUgc3BlYywgdGhlIGluaXRpYWwgDQp2YWx1ZSBv
ZiBHSUNEX0lDRkdSbiBpcyBJTVBMRU1FTlRBVElPTiBERUZJTkVELiBJIGFtIGFjdHVhbGx5IG5v
dCANCmNvbnZpbmNlZCB0aGUgcmVnaXN0ZXIgd2lsbCBjb250YWluIHRoZSBjb3JyZWN0IHZhbHVl
IGF0IGJvb3QuDQoNCkF0IGxlYXN0IGluIFhlbiAoYW5kIExpbnV4Pykgd2UgYXJlIHNldHRpbmcg
dGhlIHR5cGUgd2hlbiBzZXR0aW5nIHRoZSANCklSUSB1cC4gTWF5YmUgTWFyYyBjYW4gY29uZmly
bSBoZXJlPw0KDQpDaGVlcnMsDQoNCi0tIA0KSnVsaWVuIEdyYWxsDQpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 06:18:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 06:18: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 1hgkDY-0005xB-Is; Fri, 28 Jun 2019 06:18:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=N7HR=U2=gmail.com=jmberi@srs-us1.protection.inumbo.net>)
 id 1hgWiw-0007UM-Iy
 for minios-devel@lists.xenproject.org; Thu, 27 Jun 2019 15:54:10 +0000
X-Inumbo-ID: cd1ff7ce-98f3-11e9-8980-bc764e045a96
Received: from mail-io1-xd2f.google.com (unknown [2607:f8b0:4864:20::d2f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cd1ff7ce-98f3-11e9-8980-bc764e045a96;
 Thu, 27 Jun 2019 15:54:09 +0000 (UTC)
Received: by mail-io1-xd2f.google.com with SMTP id k20so5802498ios.10
 for <minios-devel@lists.xenproject.org>; Thu, 27 Jun 2019 08:54:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:from:date:message-id:subject:to;
 bh=zaFCLW5W3u9CkPUTZk5r3Me6xnbTl9406oD9u0I+B2E=;
 b=iBQCQLy+7dV/uSDQsgytXEnwzgFM0lqhkdCJZorVnqkkcHzqGYozOJ814J2IxPGwKh
 S/ttvLjsZJpGnx5m5Qz46G/dcfBncZWswXRRp2KknvsWS+DTAuO2uL6D9FYECG0MgXuW
 RMWeBHLtKdk5VH8Vvu0WZQ77brfua/9ZdLRi2EXM59RDEWSf2XvlPPsg1BEKvL6nl/E4
 oLhhFGkwsnRim49kwQlX386i44Zii/rtpE0fr4HALt1SrfihgCaEGenoWSS7X8VtDspu
 VD4dUenoeAVnlrcA27Q9alB5v9kpAhh+PJPm1qZTAY5hOoSG3SWq1Hp1vhf9vKprZSvl
 D2ZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=zaFCLW5W3u9CkPUTZk5r3Me6xnbTl9406oD9u0I+B2E=;
 b=lHwX4zOf4yUbC4946v0Fc87YQJRoDFcHUxVT3xqSLIYAAL/k5b0gcbZwvfsQFm6BpK
 wLLfb4CSiTUbDyLBegZelDXl1N5eX3mhCLBFc3SYjL5hFEn6aMJ0jLPSQpblQld1Ejzo
 9ORJug6UzFzs7/r8h+wkNvq4vGQ1RDdgXPU6Lriz2zobIPndas1FvYH3MGgGVzhChZBw
 f8XvEKT3tP3d/jo4X+lbiDjXr8ON8FcHZ2YOXNR/RYxa9qkYB7szl0Me372mKTQ9Pu76
 Klbu4QJ4Aa36iRP76+fScYKyoA57mEsVM1HMe+6WXxfABjoMhtCIkDTS+WJmUWRJCA9s
 G5sA==
X-Gm-Message-State: APjAAAUgt1eq+iQxI9h8+WiLzkfrn3/n3FSGUWCbM6F6+KjMe32lu1fh
 nxW1LojI9KYhR0+NLmuCoGOZMgwVz7+aGQ1A+nX5BV42mCQ=
X-Google-Smtp-Source: APXvYqxu0MbE7KPPU693O0MTliGpH42yftddwakHgKaFCcA4SkXcJl46dYCFsnuQdyHvRgEpzs0f2JYcXikbpm+nLPw=
X-Received: by 2002:a5e:9701:: with SMTP id w1mr1999103ioj.294.1561650849029; 
 Thu, 27 Jun 2019 08:54:09 -0700 (PDT)
MIME-Version: 1.0
From: Jonathan Beri <jmberi@gmail.com>
Date: Thu, 27 Jun 2019 08:53:33 -0700
Message-ID: <CANcmUPE+amOQcn3dGfcpSVizG3cisn5uAzDmajNj644vxtNqzA@mail.gmail.com>
To: minios-devel@lists.xenproject.org
X-Mailman-Approved-At: Fri, 28 Jun 2019 06:18:39 +0000
Subject: [Minios-devel] WebAssembly Runtime for Unikraft?
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0992153132524748324=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============0992153132524748324==
Content-Type: multipart/alternative; boundary="0000000000001ea3b7058c502ced"

--0000000000001ea3b7058c502ced
Content-Type: text/plain; charset="UTF-8"

I'm new to Unikraft but as I understand it, new language support is added
by adding new runtimes. Has the team evaluated using WebAssembly (
https://webassembly.org/) as a runtime? WASM by design is meant to execute
any language that can compile to it and by design isn't limited to the web
(see https://webassembly.org/docs/non-web/.) There are many runtime
implementations which could be used (
https://github.com/appcypher/awesome-wasm-runtimes) and are running on
everything from serverless compute platforms (
https://www.cloudflare.com/products/cloudflare-workers/) to
microcontrollers (https://github.com/intel/wasm-micro-runtime.) Adopting a
WebAssembly runtime could open up Unikraft to many more languages, which
means potential for code reuse.

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

<div dir=3D"ltr">I&#39;m new to Unikraft but as I understand it, new langua=
ge support is added by adding new runtimes. Has the team evaluated using We=
bAssembly (<a href=3D"https://webassembly.org/">https://webassembly.org/</a=
>) as a runtime? WASM by design is meant to execute any language that can c=
ompile to it and by design isn&#39;t limited to the web (see=C2=A0<a href=
=3D"https://webassembly.org/docs/non-web/">https://webassembly.org/docs/non=
-web/</a>.) There are many runtime implementations which could be used (<a =
href=3D"https://github.com/appcypher/awesome-wasm-runtimes">https://github.=
com/appcypher/awesome-wasm-runtimes</a>) and are running on everything from=
 serverless compute platforms (<a href=3D"https://www.cloudflare.com/produc=
ts/cloudflare-workers/">https://www.cloudflare.com/products/cloudflare-work=
ers/</a>) to microcontrollers (<a href=3D"https://github.com/intel/wasm-mic=
ro-runtime">https://github.com/intel/wasm-micro-runtime</a>.) Adopting a We=
bAssembly runtime could open up Unikraft to many more languages, which mean=
s potential for code reuse.</div>

--0000000000001ea3b7058c502ced--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============0992153132524748324==--


From minios-devel-bounces@lists.xenproject.org Fri Jun 28 06:43:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 06:43: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 1hgkbc-00082d-Ft; Fri, 28 Jun 2019 06:43:32 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=+X3r=U3=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hgkbb-00081o-KX
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 06:43:31 +0000
X-Inumbo-ID: 0889d742-9970-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 0889d742-9970-11e9-8980-bc764e045a96;
 Fri, 28 Jun 2019 06:43:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id ACE4F1053AB;
 Fri, 28 Jun 2019 08:43:26 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 7d8ky9Zgd_qw; Fri, 28 Jun 2019 08:43:26 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 8303C103BCF;
 Fri, 28 Jun 2019 08:43:26 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Fri, 28 Jun 2019 08:43:26
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Jonathan Beri <jmberi@gmail.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>
Thread-Topic: [Minios-devel] WebAssembly Runtime for Unikraft?
Thread-Index: AQHVLXlfZeIvN4yTjEyYXcJmNE0MRqawnp4A
Date: Fri, 28 Jun 2019 06:43:25 +0000
Message-ID: <76CC0D24-475B-449F-ACB4-5E7A8039712A@neclab.eu>
References: <CANcmUPE+amOQcn3dGfcpSVizG3cisn5uAzDmajNj644vxtNqzA@mail.gmail.com>
In-Reply-To: <CANcmUPE+amOQcn3dGfcpSVizG3cisn5uAzDmajNj644vxtNqzA@mail.gmail.com>
Accept-Language: en-GB, gl-ES, de-DE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.201]
MIME-Version: 1.0
Subject: Re: [Minios-devel] WebAssembly Runtime for Unikraft?
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0844081732401833271=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============0844081732401833271==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_76CC0D24475B449FACB45E7A8039712Aneclabeu_"

--_000_76CC0D24475B449FACB45E7A8039712Aneclabeu_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SGV5IEpvbmF0aGFuLA0KDQp0aGFua3MgZm9yIHJlYWNoaW5nIG91dCB0byB1cy4gV2UgYWdyZWUs
IFdBU00gaXMgYW5vdGhlciB2ZXJ5IGludGVyZXN0aW5nIHRhcmdldCBhbmQgd2UgaGFkIGFscmVh
ZHkgaW50ZXJuYWwgZGlzY3Vzc2lvbnMgYWJvdXQgcG9ydGluZyB0aGlzLiBZb3UgYXJlIHJpZ2h0
IHdpdGggeW91ciBhcmd1bWVudHMuDQoNClNvIGZhciwgbm8gb25lIGlzIHdvcmtpbmcgb24gdGhp
cy4gV291bGQgeW91IGxpa2UgdG8gZG8gYSBwb3J0IG9mIFdBU00gdG8gVW5pa3JhZnQ/IFdlIGNv
dWxkIGdpdmUgc29tZSBzdGFydGluZyBwb2ludGVycy4NCkFuIGltcG9ydGFudCBjcml0ZXJpYSBm
b3Igc2VsZWN0aW5nIHRoZSBydW50aW1lIGlzIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlIHRoYXQg
aXMgdXNlZCBhbmQgaWYgaXQgaXMgY29tcGF0aWJsZSB0byBvdXIgVW5pa3JhZnQgQlNEIGxpY2Vu
c2UuIEZvciBpbnN0YW5jZSwgcHJvamVjdHMgdXNpbmcgR1BMIG9uZXMgd291bGQgbm90IHdvcmsg
Zm9yIHVzLg0KDQpMZXQgdXMga25vdyB3aGF0IHlvdSB0aGluay4NCg0KVGhhbmtzLA0KDQpTaW1v
bg0KDQpGcm9tOiBNaW5pb3MtZGV2ZWwgPG1pbmlvcy1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnBy
b2plY3Qub3JnPiBvbiBiZWhhbGYgb2YgSm9uYXRoYW4gQmVyaSA8am1iZXJpQGdtYWlsLmNvbT4N
CkRhdGU6IEZyaWRheSwgMjguIEp1bmUgMjAxOSBhdCAwODoxOA0KVG86ICJtaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmciIDxtaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc+
DQpTdWJqZWN0OiBbTWluaW9zLWRldmVsXSBXZWJBc3NlbWJseSBSdW50aW1lIGZvciBVbmlrcmFm
dD8NCg0KSSdtIG5ldyB0byBVbmlrcmFmdCBidXQgYXMgSSB1bmRlcnN0YW5kIGl0LCBuZXcgbGFu
Z3VhZ2Ugc3VwcG9ydCBpcyBhZGRlZCBieSBhZGRpbmcgbmV3IHJ1bnRpbWVzLiBIYXMgdGhlIHRl
YW0gZXZhbHVhdGVkIHVzaW5nIFdlYkFzc2VtYmx5IChodHRwczovL3dlYmFzc2VtYmx5Lm9yZy8p
IGFzIGEgcnVudGltZT8gV0FTTSBieSBkZXNpZ24gaXMgbWVhbnQgdG8gZXhlY3V0ZSBhbnkgbGFu
Z3VhZ2UgdGhhdCBjYW4gY29tcGlsZSB0byBpdCBhbmQgYnkgZGVzaWduIGlzbid0IGxpbWl0ZWQg
dG8gdGhlIHdlYiAoc2VlIGh0dHBzOi8vd2ViYXNzZW1ibHkub3JnL2RvY3Mvbm9uLXdlYi8uKSBU
aGVyZSBhcmUgbWFueSBydW50aW1lIGltcGxlbWVudGF0aW9ucyB3aGljaCBjb3VsZCBiZSB1c2Vk
IChodHRwczovL2dpdGh1Yi5jb20vYXBwY3lwaGVyL2F3ZXNvbWUtd2FzbS1ydW50aW1lcykgYW5k
IGFyZSBydW5uaW5nIG9uIGV2ZXJ5dGhpbmcgZnJvbSBzZXJ2ZXJsZXNzIGNvbXB1dGUgcGxhdGZv
cm1zIChodHRwczovL3d3dy5jbG91ZGZsYXJlLmNvbS9wcm9kdWN0cy9jbG91ZGZsYXJlLXdvcmtl
cnMvKSB0byBtaWNyb2NvbnRyb2xsZXJzIChodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvd2FzbS1t
aWNyby1ydW50aW1lLikgQWRvcHRpbmcgYSBXZWJBc3NlbWJseSBydW50aW1lIGNvdWxkIG9wZW4g
dXAgVW5pa3JhZnQgdG8gbWFueSBtb3JlIGxhbmd1YWdlcywgd2hpY2ggbWVhbnMgcG90ZW50aWFs
IGZvciBjb2RlIHJldXNlLg0K

--_000_76CC0D24475B449FACB45E7A8039712Aneclabeu_
Content-Type: text/html; charset="utf-8"
Content-ID: <DD6E7B479216A2438828EC598A91DB0E@office.hd>
Content-Transfer-Encoding: base64

PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4
bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l
dGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQg
bWVkaXVtKSI+DQo8c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFj
ZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2
IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToy
IDE1IDUgMiAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJUcmVidWNo
ZXQgTVMiOw0KCXBhbm9zZS0xOjIgMTEgNiAzIDIgMiAyIDIgMiA0O30NCkBmb250LWZhY2UNCgl7
Zm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiBcKEJvZHkgQ1NcKSI7DQoJcGFub3NlLTE6MiAy
IDYgMyA1IDQgNSAyIDMgNDt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KcC5Nc29Ob3JtYWws
IGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGNtOw0KCW1hcmdpbi1ib3R0
b206LjAwMDFwdDsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixz
YW5zLXNlcmlmO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9y
aXR5Ojk5Ow0KCWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQphOnZp
c2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5
Ow0KCWNvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCnAubXNvbm9y
bWFsMCwgbGkubXNvbm9ybWFsMCwgZGl2Lm1zb25vcm1hbDANCgl7bXNvLXN0eWxlLW5hbWU6bXNv
bm9ybWFsOw0KCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdpbi1yaWdodDowY207DQoJ
bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6MGNtOw0KCWZvbnQtc2l6
ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7fQ0Kc3Bhbi5FbWFp
bFN0eWxlMTgNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6
IlRyZWJ1Y2hldCBNUyIsc2Fucy1zZXJpZjsNCgljb2xvcjp3aW5kb3d0ZXh0Ow0KCWZvbnQtd2Vp
Z2h0Om5vcm1hbDsNCglmb250LXN0eWxlOm5vcm1hbDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZSBu
b25lO30NCi5Nc29DaHBEZWZhdWx0DQoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCWZv
bnQtc2l6ZToxMC4wcHQ7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJe3NpemU6NjEyLjBwdCA3OTIu
MHB0Ow0KCW1hcmdpbjo3MC44NXB0IDcwLjg1cHQgMi4wY20gNzAuODVwdDt9DQpkaXYuV29yZFNl
Y3Rpb24xDQoJe3BhZ2U6V29yZFNlY3Rpb24xO30NCi0tPjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9k
eSBsYW5nPSJERSIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+DQo8ZGl2IGNsYXNzPSJXb3Jk
U2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox
MC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VHJlYnVjaGV0IE1TJnF1b3Q7LHNhbnMtc2VyaWYiPkhl
eSBKb25hdGhhbiw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48
c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtUcmVidWNoZXQg
TVMmcXVvdDssc2Fucy1zZXJpZiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0
O2ZvbnQtZmFtaWx5OiZxdW90O1RyZWJ1Y2hldCBNUyZxdW90OyxzYW5zLXNlcmlmIj50aGFua3Mg
Zm9yIHJlYWNoaW5nIG91dCB0byB1cy4gV2UgYWdyZWUsIFdBU00gaXMgYW5vdGhlciB2ZXJ5IGlu
dGVyZXN0aW5nIHRhcmdldCBhbmQgd2UgaGFkIGFscmVhZHkgaW50ZXJuYWwgZGlzY3Vzc2lvbnMg
YWJvdXQgcG9ydGluZyB0aGlzLiBZb3UgYXJlIHJpZ2h0DQogd2l0aCB5b3VyIGFyZ3VtZW50cy48
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VHJlYnVjaGV0
IE1TJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBw
dDtmb250LWZhbWlseTomcXVvdDtUcmVidWNoZXQgTVMmcXVvdDssc2Fucy1zZXJpZiI+U28gZmFy
LCBubyBvbmUgaXMgd29ya2luZyBvbiB0aGlzLiBXb3VsZCB5b3UgbGlrZSB0byBkbyBhIHBvcnQg
b2YgV0FTTSB0byBVbmlrcmFmdD8gV2UgY291bGQgZ2l2ZSBzb21lIHN0YXJ0aW5nIHBvaW50ZXJz
LjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9
IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtUcmVidWNo
ZXQgTVMmcXVvdDssc2Fucy1zZXJpZiI+QW4gaW1wb3J0YW50IGNyaXRlcmlhIGZvciBzZWxlY3Rp
bmcgdGhlIHJ1bnRpbWUgaXMgdGhlIG9wZW4gc291cmNlIGxpY2Vuc2UgdGhhdCBpcyB1c2VkIGFu
ZCBpZiBpdCBpcyBjb21wYXRpYmxlIHRvIG91ciBVbmlrcmFmdCBCU0QgbGljZW5zZS4gRm9yIGlu
c3RhbmNlLA0KIHByb2plY3RzIHVzaW5nIEdQTCBvbmVzIHdvdWxkIG5vdCB3b3JrIGZvciB1cy48
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJF
Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VHJlYnVjaGV0
IE1TJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBw
dDtmb250LWZhbWlseTomcXVvdDtUcmVidWNoZXQgTVMmcXVvdDssc2Fucy1zZXJpZiI+TGV0IHVz
IGtub3cgd2hhdCB5b3UgdGhpbmsuPG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQt
ZmFtaWx5OiZxdW90O1RyZWJ1Y2hldCBNUyZxdW90OyxzYW5zLXNlcmlmIj48bzpwPiZuYnNwOzwv
bzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIg
c3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VHJlYnVjaGV0IE1TJnF1
b3Q7LHNhbnMtc2VyaWYiPlRoYW5rcyw8bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7VHJlYnVjaGV0IE1TJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+Jm5ic3A7
PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtUcmVidWNoZXQgTVMm
cXVvdDssc2Fucy1zZXJpZiI+U2ltb248bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9u
dC1mYW1pbHk6JnF1b3Q7VHJlYnVjaGV0IE1TJnF1b3Q7LHNhbnMtc2VyaWYiPjxvOnA+Jm5ic3A7
PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29s
aWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBjbSAwY20gMGNtIj4NCjxwIGNsYXNzPSJN
c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDozNi4wcHQiPjxiPjxzcGFuIGxhbmc9IkVOLVVT
IiBzdHlsZT0iZm9udC1zaXplOjEyLjBwdDtjb2xvcjpibGFjayI+RnJvbToNCjwvc3Bhbj48L2I+
PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNrIj5N
aW5pb3MtZGV2ZWwgJmx0O21pbmlvcy1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3Jn
Jmd0OyBvbiBiZWhhbGYgb2YgSm9uYXRoYW4gQmVyaSAmbHQ7am1iZXJpQGdtYWlsLmNvbSZndDs8
YnI+DQo8Yj5EYXRlOiA8L2I+RnJpZGF5LCAyOC4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNp
emU6MTIuMHB0O2NvbG9yOmJsYWNrIj5KdW5lIDIwMTkgYXQgMDg6MTg8YnI+DQo8Yj5UbzogPC9i
PiZxdW90O21pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyZxdW90OyAmbHQ7bWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnJmd0Ozxicj4NCjxiPlN1YmplY3Q6IDwvYj5bTWlu
aW9zLWRldmVsXSBXZWJBc3NlbWJseSBSdW50aW1lIGZvciBVbmlrcmFmdD88bzpwPjwvbzpwPjwv
c3Bhbj48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy
Z2luLWxlZnQ6MzYuMHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxw
IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDozNi4wcHQiPkknbSBuZXcgdG8g
VW5pa3JhZnQgYnV0IGFzIEkgdW5kZXJzdGFuZCBpdCwgbmV3IGxhbmd1YWdlIHN1cHBvcnQgaXMg
YWRkZWQgYnkgYWRkaW5nIG5ldyBydW50aW1lcy4gSGFzIHRoZSB0ZWFtIGV2YWx1YXRlZCB1c2lu
ZyBXZWJBc3NlbWJseSAoPGEgaHJlZj0iaHR0cHM6Ly93ZWJhc3NlbWJseS5vcmcvIj5odHRwczov
L3dlYmFzc2VtYmx5Lm9yZy88L2E+KSBhcyBhDQogcnVudGltZT8gV0FTTSBieSBkZXNpZ24gaXMg
bWVhbnQgdG8gZXhlY3V0ZSBhbnkgbGFuZ3VhZ2UgdGhhdCBjYW4gY29tcGlsZSB0byBpdCBhbmQg
YnkgZGVzaWduIGlzbid0IGxpbWl0ZWQgdG8gdGhlIHdlYiAoc2VlJm5ic3A7PGEgaHJlZj0iaHR0
cHM6Ly93ZWJhc3NlbWJseS5vcmcvZG9jcy9ub24td2ViLyI+aHR0cHM6Ly93ZWJhc3NlbWJseS5v
cmcvZG9jcy9ub24td2ViLzwvYT4uKSBUaGVyZSBhcmUgbWFueSBydW50aW1lIGltcGxlbWVudGF0
aW9ucyB3aGljaA0KIGNvdWxkIGJlIHVzZWQgKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9h
cHBjeXBoZXIvYXdlc29tZS13YXNtLXJ1bnRpbWVzIj5odHRwczovL2dpdGh1Yi5jb20vYXBwY3lw
aGVyL2F3ZXNvbWUtd2FzbS1ydW50aW1lczwvYT4pIGFuZCBhcmUgcnVubmluZyBvbiBldmVyeXRo
aW5nIGZyb20gc2VydmVybGVzcyBjb21wdXRlIHBsYXRmb3JtcyAoPGEgaHJlZj0iaHR0cHM6Ly93
d3cuY2xvdWRmbGFyZS5jb20vcHJvZHVjdHMvY2xvdWRmbGFyZS13b3JrZXJzLyI+aHR0cHM6Ly93
d3cuY2xvdWRmbGFyZS5jb20vcHJvZHVjdHMvY2xvdWRmbGFyZS13b3JrZXJzLzwvYT4pDQogdG8g
bWljcm9jb250cm9sbGVycyAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL3dhc20t
bWljcm8tcnVudGltZSI+aHR0cHM6Ly9naXRodWIuY29tL2ludGVsL3dhc20tbWljcm8tcnVudGlt
ZTwvYT4uKSBBZG9wdGluZyBhIFdlYkFzc2VtYmx5IHJ1bnRpbWUgY291bGQgb3BlbiB1cCBVbmlr
cmFmdCB0byBtYW55IG1vcmUgbGFuZ3VhZ2VzLCB3aGljaCBtZWFucyBwb3RlbnRpYWwgZm9yIGNv
ZGUgcmV1c2UuPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1s
Pg0K

--_000_76CC0D24475B449FACB45E7A8039712Aneclabeu_--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============0844081732401833271==--


From minios-devel-bounces@lists.xenproject.org Fri Jun 28 06:54:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 06:54: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 1hgkmc-0000Lq-CS; Fri, 28 Jun 2019 06:54:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iSFg=U3=arm.com=jianyong.wu@srs-us1.protection.inumbo.net>)
 id 1hgkmb-0000Ll-Lb
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 06:54:53 +0000
X-Inumbo-ID: a04aabc7-9971-11e9-8980-bc764e045a96
Received: from EUR04-DB3-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe0c::614])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a04aabc7-9971-11e9-8980-bc764e045a96;
 Fri, 28 Jun 2019 06:54:51 +0000 (UTC)
ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none;
 b=o+fqlRoa0pw6ovF+aypT79b3HoPBC3kLfl8vi2mRaqaS7YT+bFpMCc2iGI9+GZU6sU+F/a7lo4ABt/1hVCimbqnG0/rd3MvHl3wsCbuDnkx+odvKngTDM/ltw0dqPgDzkOg1y68urNrL8O+rlQQJhboblN3zUlq4o+keuTodg7Q=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=testarcselector01;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yluLuPabxRo5K+YduHZNh0FqneOtOWvktXwg1EEa/M4=;
 b=cfG12dQDsUVDe6LEj9PeTyAeSvIcnne8/IT7N5L4Kt4VgQf3dxkk6gy49yj+iLdTyAaTVdWMeUzjdf/IL2zCOGc3wZymsZ3vUk/+RyuWwKph1h97JCDuND1Kf653aTeLObbL96bZUzx/4Si2UjGiUpQ7EUh31hCEiR9bbzYfc4E=
ARC-Authentication-Results: i=1; test.office365.com
 1;spf=none;dmarc=none;dkim=none;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=yluLuPabxRo5K+YduHZNh0FqneOtOWvktXwg1EEa/M4=;
 b=bFs8U9wkPmCTOq71A/G4LLG2VyHmBT/SBfjGEVL1c1hp9hIXPCqggydXNu85fh63f9i+T42F7o4dYh61UbBvmq0oSltmPl2ZQcONsV6H5Sibxc3KxpQH1tgk1QRRFYhMGdzJlLohMV11eOUHlGEYqoTGJllfJY6h1t/h2mbXuKE=
Received: from AM7PR08MB5510.eurprd08.prod.outlook.com (10.141.175.81) by
 AM7PR08MB5512.eurprd08.prod.outlook.com (10.141.175.83) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2008.16; Fri, 28 Jun 2019 06:54:50 +0000
Received: from AM7PR08MB5510.eurprd08.prod.outlook.com
 ([fe80::44b:4e49:fe16:aeb7]) by AM7PR08MB5510.eurprd08.prod.outlook.com
 ([fe80::44b:4e49:fe16:aeb7%2]) with mapi id 15.20.2008.014; Fri, 28 Jun 2019
 06:54:50 +0000
From: "Jianyong Wu (Arm Technology China)" <Jianyong.Wu@arm.com>
To: Julien Grall <Julien.Grall@arm.com>, "Justin He (Arm Technology China)"
 <Justin.He@arm.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>, Simon Kuenzer <simon.kuenzer@neclab.eu>, 
 "Sharan.Santhanam@neclab.eu" <Sharan.Santhanam@neclab.eu>
Thread-Topic: [UNIKRAFT PATCHv2 6/7] plat/common: Add a platform API to get
 IRQ from device tree
Thread-Index: AQHU9bNQA0DW/z4wk0if8bW31E9IbKamU1wAgApzV3CAADICAIAAFagA
Date: Fri, 28 Jun 2019 06:54:49 +0000
Message-ID: <AM7PR08MB55101EA78015EDBD263BD22CF4FC0@AM7PR08MB5510.eurprd08.prod.outlook.com>
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-7-justin.he@arm.com>
 <ae7f210a-52b5-04d1-a50f-b6d663a0911f@arm.com>
 <AM7PR08MB5510CCAB76BDD4BFD9110142F4FC0@AM7PR08MB5510.eurprd08.prod.outlook.com>
 <0f1b84ae-2ef3-145e-d440-d6ad3fe5a909@arm.com>
In-Reply-To: <0f1b84ae-2ef3-145e-d440-d6ad3fe5a909@arm.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 6f6c617c-d214-47bd-bf03-9bbeff78bec1.1
x-checkrecipientchecked: true
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=Jianyong.Wu@arm.com; 
x-originating-ip: [113.29.88.7]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: faf7f40a-5338-42cd-d434-08d6fb9583e7
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);
 SRVR:AM7PR08MB5512; 
x-ms-traffictypediagnostic: AM7PR08MB5512:
x-microsoft-antispam-prvs: <AM7PR08MB551297F76CA308D3D231B1DEF4FC0@AM7PR08MB5512.eurprd08.prod.outlook.com>
nodisclaimer: True
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 00826B6158
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(4636009)(396003)(366004)(346002)(376002)(136003)(39860400002)(199004)(13464003)(189003)(478600001)(81156014)(8936002)(81166006)(316002)(2906002)(3846002)(33656002)(55016002)(76176011)(53936002)(6116002)(14454004)(6506007)(55236004)(86362001)(9686003)(74316002)(305945005)(7736002)(26005)(6246003)(102836004)(4326008)(52536014)(229853002)(66066001)(68736007)(2501003)(73956011)(53546011)(64756008)(66556008)(72206003)(66476007)(7696005)(66446008)(6436002)(76116006)(66946007)(5660300002)(14444005)(256004)(8676002)(186003)(99286004)(446003)(11346002)(25786009)(71200400001)(71190400001)(476003)(486006)(54906003)(110136005);
 DIR:OUT; SFP:1101; SCL:1; SRVR:AM7PR08MB5512;
 H:AM7PR08MB5510.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; A:1; MX:1; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: nBrscwqZwzlNOTjxbibU2syDlP+eoBzc7A3OHggS/UMgMYEbLzDjeubCQpXh0iBx9IsLoomzcAArLtySBiWVA4mg8fzXBeJo2sBi0oKdW4sStW+VfzjSR8RAdbrj0qqBOFDsRal4xZBr1FG7/lbZimoG7e4ne1rF6LDIcak/zPy+hVtUbSXOxX9VnaHRgDIg1fWP5v1bz95lsioAHq6RgVFT9hCQMgLDwUq1qw5/0jRjfnyvdNtstiAP399Mgwa5exne95VrBt+rrqk0egM3seaO3gbBoUpO7nA2V8mdvg7SflpDSqSHPYEtbKi10Rb1M1/sVO711RNmKwHU2AB7uyYFmQOBvZPX6p3S+6Vbl2BcERd9GAGL6op9O2zyrDLpjFfAvRNCKOEHAgZA+hcdMitYB+773Y1LvG4Cn/ky6gg=
MIME-Version: 1.0
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-Network-Message-Id: faf7f40a-5338-42cd-d434-08d6fb9583e7
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2019 06:54:49.9650 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Jianyong.Wu@arm.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5512
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 6/7] plat/common: Add a
 platform API to get IRQ from device tree
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>,
 Marc Zyngier <Marc.Zyngier@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>, nd <nd@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkganVsaWVuLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEp1bGll
biBHcmFsbCA8SnVsaWVuLkdyYWxsQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgSnVuZSAyOCwg
MjAxOSAxOjI3IFBNDQo+IFRvOiBKaWFueW9uZyBXdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxK
aWFueW9uZy5XdUBhcm0uY29tPjsgSnVzdGluDQo+IEhlIChBcm0gVGVjaG5vbG9neSBDaGluYSkg
PEp1c3Rpbi5IZUBhcm0uY29tPjsgbWluaW9zLQ0KPiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y
ZzsgU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ow0KPiBTaGFyYW4uU2Fu
dGhhbmFtQG5lY2xhYi5ldQ0KPiBDYzogbmQgPG5kQGFybS5jb20+OyBGbG9yaWFuIFNjaG1pZHQg
PGZsb3JpYW4uc2NobWlkdEBuZWNsYWIuZXU+OyBGZWxpcGUNCj4gSHVpY2kgPGZlbGlwZS5odWlj
aUBuZWNsYWIuZXU+OyB5dXJpLnZvbGNoa292QG5lY2xhYi5ldTsgS2FseSBYaW4gKEFybQ0KPiBU
ZWNobm9sb2d5IENoaW5hKSA8S2FseS5YaW5AYXJtLmNvbT47IFdlaSBDaGVuIChBcm0gVGVjaG5v
bG9neSBDaGluYSkNCj4gPFdlaS5DaGVuQGFybS5jb20+OyBNYXJjIFp5bmdpZXIgPE1hcmMuWnlu
Z2llckBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIdjIgNi83XSBwbGF0
L2NvbW1vbjogQWRkIGEgcGxhdGZvcm0gQVBJIHRvDQo+IGdldCBJUlEgZnJvbSBkZXZpY2UgdHJl
ZQ0KPiANCj4gKCsgTWFyYyBaLikNCj4gDQo+IEhpLA0KPiANCj4gT24gMjgvMDYvMjAxOSAwMzoz
OSwgSmlhbnlvbmcgV3UgKEFybSBUZWNobm9sb2d5IENoaW5hKSB3cm90ZToNCj4gPj4+ICsNCj4g
Pj4+ICtpbnQgZ2ljX2dldF9pcnFfZnJvbV9kdGIoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9m
ZnNldCwgaW50DQo+ID4+PiAraW5kZXgpIHsNCj4gPj4+ICsJZmR0MzJfdCAqcHJvcDsNCj4gPj4+
ICsJaW50IHR5cGUsIGh3aXJxLCBzaXplOw0KPiA+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4gKw0KPiA+
Pj4gKwlyZXQgPSBmZHRfZ2V0X2ludGVycnVwdChmZHQsIG5vZGVvZmZzZXQsIGluZGV4LCAmc2l6
ZSwgJnByb3ApOw0KPiA+Pj4gKwlpZiAocmV0IDwgMCkNCj4gPj4+ICsJCXJldHVybiAtRUlOVkFM
Ow0KPiA+Pj4gKw0KPiA+Pj4gKwl0eXBlID0gZmR0MzJfdG9fY3B1KHByb3BbMF0pOw0KPiA+Pj4g
Kwlod2lycSA9IGZkdDMyX3RvX2NwdShwcm9wWzFdKTsNCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJu
IGdpY19pcnFfdHJhbnNsYXRlKHR5cGUsIGh3aXJxKTsgfQ0KPiA+Pj4NCj4gPj4NCj4gPj4gSG93
IGRvIHlvdSBwbGFuIHRvIGhhbmRsZSBwcm9wWzNdIChpLmUgbGV2ZWwtc2Vuc2l0aXZlLCBlZGdl
LXRyaWdnZXJlZCk/DQo+ID4NCj4gPiBFciwgYXMgZmFyIGFzIEkga25vdywgd2UgY2FuIGdldCBp
cnEgbnVtYmVyIGp1c3QgYnkgaW50ZXJydXB0IHR5cGUgYW5kDQo+ID4gaXRzIGhhcmR3YXJlIG51
bWJlciBpbiBkdCBBbmQgbm8gbmVlZCB0byBjYXJlIGFib3V0IGl0cyB0cmlnZ2VyIHR5cGUuIFNv
IHdlDQo+IG5lZ2xlY3QgdGhlIHByb3BbM10gaGVyZS4NCj4gDQo+IFdoeSBkb24ndCB5b3UgbmVl
ZCB0byBjYXJlIGFib3V0IHRyaWdnZXIgdHlwZT8gUGVyIHRoZSBzcGVjLCB0aGUgaW5pdGlhbCB2
YWx1ZQ0KPiBvZiBHSUNEX0lDRkdSbiBpcyBJTVBMRU1FTlRBVElPTiBERUZJTkVELiBJIGFtIGFj
dHVhbGx5IG5vdCBjb252aW5jZWQNCj4gdGhlIHJlZ2lzdGVyIHdpbGwgY29udGFpbiB0aGUgY29y
cmVjdCB2YWx1ZSBhdCBib290Lg0KPiANCj4gQXQgbGVhc3QgaW4gWGVuIChhbmQgTGludXg/KSB3
ZSBhcmUgc2V0dGluZyB0aGUgdHlwZSB3aGVuIHNldHRpbmcgdGhlIElSUSB1cC4NCj4gTWF5YmUg
TWFyYyBjYW4gY29uZmlybSBoZXJlPw0KPiANCg0KDQpPaywgSSB3aWxsIGZpeCBpdCBieSBnZXR0
aW5nIHRoZSB0cmlnZ2VyIHR5cGUgZnJvbSBwcm9wWzNdLg0KDQpUaGFua3MNCkppYW55b25nIHd1
DQoNCj4gQ2hlZXJzLA0KPiANCj4gLS0NCj4gSnVsaWVuIEdyYWxsDQpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:37 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl0q-0001FY-81; Fri, 28 Jun 2019 07:09:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl0p-0001FT-6y
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:35 +0000
X-Inumbo-ID: ae2813c2-9973-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id ae2813c2-9973-11e9-8980-bc764e045a96;
 Fri, 28 Jun 2019 07:09:33 +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 21F53C0A;
 Fri, 28 Jun 2019 00:09:33 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id CD43C3F706;
 Fri, 28 Jun 2019 00:11:21 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:17 +0800
Message-Id: <20190628070923.57304-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT PATCHv5 0/6] Enable IRQ framework for
 Arm64(series#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: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Kaly Xin <Kaly.Xin@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

TWlzc2luZyB0aGUgSVJRIGZyYW1ld29yayBzdXBwb3J0LCB3ZSBjYW4ndCBtYWtlIG11bHRpLXRo
cmVhZCBzdXBwb3J0CndvcmtzIHdlbGwuIEluIHRoaXMgc2VyaWVzLCB3ZSBpbXBsZW1lbnQgdGhl
IEdJQ3YyIGxpYnJhcnkgYW5kIGVuYWJsZQp0aGUgaXJxIGV4Y2VwdGlvbiBlbnRyeS4gV2UgdXNl
IHRoZSBnaWMgZnVuY3Rpb24gdG8gZml4IHRoZSBUT0RPIGxpc3QKaW4gaW50Y3RybCBmdW5jdGlv
bnMgdG8gbWFrZSBJUlEgZnJhbWV3b3JrIG9uIEFybTY0IHdvcmtzIHdlbGwuCgpDaGFuZ2VzOgp2
NC0+djU6IGRyb3AgInBsYXQva3ZtOiBJbXBsZW1lbnQgaW50Y3RybCBBUElzIGZvciBBcm02NCIu
CiAgICAgICAgYWRkcmVzcyBvdGhlciBjb21tZW50cyBmcm9tIEp1bGllbi4KdjMtPnY0OiByZW1v
dmUgbm8gbmVlZCBkZXZpY2UgbmFtZSBpbiBjb21wYXRpYmxlIGxpc3QgZm9yIGdpYyB2Mgp2Mi0+
djM6IHVwZGF0ZSBwYXRjaCAwNCBhcyBwZXIgSnVsaWVuJ3MgY29tbWVudHMKdjEtPnYyOiBhZGRy
ZXNzIFNoYXJhbidzIGNvbW1lbnRzCgpKaWEgSGUgKDIpOgogIHBsYXQva3ZtOiBJbXBsZW1lbnQg
aW50Y3RybCBBUElzIGZvciBBcm02NAogIHBsYXQvY29tbW9uOiBBZGQgYSBwbGF0Zm9ybSBBUEkg
dG8gZ2V0IElSUSBmcm9tIGRldmljZSB0cmVlCgpKaWFueW9uZyBXdSAoMSk6CiAgcGxhdC9jb21t
b246IEltcGxlbWVudCBnaWMtdjIgbGlicmFyeSBmb3IgQXJtCgpXZWkgQ2hlbiAoMyk6CiAgcGxh
dC9jb21tb246IEluY2x1ZGUgcGxhdC9pcnEuaCBieSBkZWZhdWx0CiAgcGxhdC9jb21tb246IERl
ZmluZSBfX01BWF9JUlEgZm9yIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzCiAgcGxhdC9jb21tb246
IEFkZCBhIHRyYXAgZnVuY3Rpb24gdG8gaGFuZGxlIEFybTY0IGlycSB0cmFwCgogcGxhdC9jb21t
b24vYXJtL3RyYXBzLmMgICAgICAgICAgIHwgICA2ICsKIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJt
L2lycS5oICAgICB8ICAgMiArCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2dpY19mZHQuaCAgICAgfCAg
NDggKysrCiBwbGF0L2NvbW1vbi9pbmNsdWRlL2lycS5oICAgICAgICAgfCAgMTcgKysKIHBsYXQv
Y29tbW9uL2luY2x1ZGUveDg2L2lycS5oICAgICB8ICAgMiArCiBwbGF0L2RyaXZlcnMvZ2ljL2dp
Yy12Mi5jICAgICAgICAgfCA0NzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0
L2RyaXZlcnMvaW5jbHVkZS9naWMvZ2ljLXYyLmggfCAzNzMgKysrKysrKysrKysrKysrKysrKysr
KysKIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICAgICB8ICAgMiArCiBwbGF0L2t2bS9h
cm0vZXhjZXB0aW9ucy5TICAgICAgICAgfCAgMTAgKy0KIHBsYXQva3ZtL2FybS9pbnRjdHJsLmMg
ICAgICAgICAgICB8ICAyMCArLQogcGxhdC9rdm0vYXJtL3NldHVwLmMgICAgICAgICAgICAgIHwg
ICA0ICsKIHBsYXQva3ZtL2lycS5jICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogMTIgZmls
ZXMgY2hhbmdlZCwgOTYxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgcGxhdC9jb21tb24vaW5jbHVkZS9naWNfZmR0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBwbGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGxhdC9kcml2
ZXJzL2luY2x1ZGUvZ2ljL2dpYy12Mi5oCgotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl0u-0001Fz-9k; Fri, 28 Jun 2019 07:09:40 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl0t-0001Fu-Ii
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:39 +0000
X-Inumbo-ID: af9edba6-9973-11e9-993b-eff7cf4bba96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id af9edba6-9973-11e9-993b-eff7cf4bba96;
 Fri, 28 Jun 2019 07:09:35 +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 A3316D6E;
 Fri, 28 Jun 2019 00:09:35 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1CD093F706;
 Fri, 28 Jun 2019 00:11:23 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:18 +0800
Message-Id: <20190628070923.57304-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190628070923.57304-1-justin.he@arm.com>
References: <20190628070923.57304-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv5 1/6] plat/common: Include
 plat/irq.h by default
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CgpUaGlzIHdpbGwgYXZvaWQgaW5jbHVk
aW5nIHRvbyBtYW55IGlycS5oIGhlYWRlcnMgbGlrZToKdWsvcGxhdC9pcnEuaCwgYXJtL2lycS5o
LCBpcnEuaCBpbiBvbmUgc291cmNlIGZpbGUuCgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5h
bSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+ClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3
ZWkuY2hlbkBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29t
PgotLS0KIHBsYXQvY29tbW9uL2luY2x1ZGUvaXJxLmggfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwg
MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9pcnEuaCBi
L3BsYXQvY29tbW9uL2luY2x1ZGUvaXJxLmgKaW5kZXggZWRhY2NmZS4uYTA5Njg1ZCAxMDA2NDQK
LS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS9pcnEuaAorKysgYi9wbGF0L2NvbW1vbi9pbmNsdWRl
L2lycS5oCkBAIC0zNSw2ICszNSw4IEBACiAjaWZuZGVmIF9fUExBVF9DTU5fSVJRX0hfXwogI2Rl
ZmluZSBfX1BMQVRfQ01OX0lSUV9IX18KIAorI2luY2x1ZGUgPHVrL3BsYXQvaXJxLmg+CisKICNp
ZiBkZWZpbmVkKF9fWDg2XzY0X18pCiAjaW5jbHVkZSA8eDg2L2lycS5oPgogI2VsaWYgZGVmaW5l
ZChfX0FSTV82NF9fKQotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl0x-0001GX-BI; Fri, 28 Jun 2019 07:09: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=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl0w-0001GP-Qo
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:42 +0000
X-Inumbo-ID: b10975e6-9973-11e9-9c30-97698075000a
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id b10975e6-9973-11e9-9c30-97698075000a;
 Fri, 28 Jun 2019 07:09:38 +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 1934EC0A;
 Fri, 28 Jun 2019 00:09:38 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 9FAAE3F706;
 Fri, 28 Jun 2019 00:11:26 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:19 +0800
Message-Id: <20190628070923.57304-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190628070923.57304-1-justin.he@arm.com>
References: <20190628070923.57304-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv5 2/6] plat/common: Define __MAX_IRQ
 for different architectures
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CgpJbiBjdXJyZW50IElSUSBmcmFtZXdv
cmssIHdlIG9ubHkgc3VwcG9ydCAxNiBpcnFfaGFuZGxlcnMuIFRoaXMgaXMKd2VsbCBmb3IgeDg2
IGxlZ2FjeSBpbnRlcnJ1cHRzLiBCdXQgZm9yIEFybSwgaXQncyBub3QgZW5vdWdoLiBJbgp0aGlz
IGNhc2UsIHdlIGRlZmluZWQgX19NQVhfSVJRIDEwMjAgZm9yIEFybSBhbmQga2VlcCBfX01BWF9J
UlEgMTYKZm9yIHg4Ni4gVGhpcyB3aWxsIHdhc3RlIHNvbWUgc3BhY2UsIGJ1dCB3ZSBjYW4ga2Vl
cCBPKDEpIGVmZmljZW5jeS4KClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0u
Y29tPgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgpSZXZpZXdlZC1i
eTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+Ci0tLQogcGxh
dC9jb21tb24vaW5jbHVkZS9hcm0vaXJxLmggfCAyICsrCiBwbGF0L2NvbW1vbi9pbmNsdWRlL3g4
Ni9pcnEuaCB8IDIgKysKIHBsYXQva3ZtL2lycS5jICAgICAgICAgICAgICAgIHwgNyArKysrLS0t
CiAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9pcnEuaCBiL3BsYXQvY29tbW9uL2luY2x1
ZGUvYXJtL2lycS5oCmluZGV4IGJhODUxODMuLmI4MWZhOWUgMTAwNjQ0Ci0tLSBhL3BsYXQvY29t
bW9uL2luY2x1ZGUvYXJtL2lycS5oCisrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2lycS5o
CkBAIC00MSw0ICs0MSw2IEBACiAjZXJyb3IgIkFkZCBpcnEuaCBmb3IgY3VycmVudCBhcmNoaXRl
Y3R1cmUuIgogI2VuZGlmCiAKKyNkZWZpbmUgX19NQVhfSVJRCTEwMjAKKwogI2VuZGlmIC8qIF9f
UExBVF9DTU5fQVJNX0lSUV9IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUv
eDg2L2lycS5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS94ODYvaXJxLmgKaW5kZXggYTBmMDFmOC4u
ZjJiZjJkOSAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vaW5jbHVkZS94ODYvaXJxLmgKKysrIGIv
cGxhdC9jb21tb24vaW5jbHVkZS94ODYvaXJxLmgKQEAgLTg0LDQgKzg0LDYgQEAgc3RhdGljIGlu
bGluZSBpbnQgaXJxc19kaXNhYmxlZCh2b2lkKQogI2RlZmluZSBsb2NhbF9pcnFfZGlzYWJsZSgp
ICAgICAgX19jbGkoKQogI2RlZmluZSBsb2NhbF9pcnFfZW5hYmxlKCkgICAgICAgX19zdGkoKQog
CisjZGVmaW5lIF9fTUFYX0lSUQkxNgorCiAjZW5kaWYgLyogX19QTEFUX0NNTl9YODZfSVJRX0hf
XyAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vaXJxLmMgYi9wbGF0L2t2bS9pcnEuYwppbmRleCBl
Zjk1YTAyLi4zMjA0MmFmIDEwMDY0NAotLS0gYS9wbGF0L2t2bS9pcnEuYworKysgYi9wbGF0L2t2
bS9pcnEuYwpAQCAtMjksNyArMjksOCBAQAogI2luY2x1ZGUgPHVrL2FsbG9jLmg+CiAjaW5jbHVk
ZSA8dWsvbGlzdC5oPgogI2luY2x1ZGUgPHVrL3BsYXQvbGNwdS5oPgotI2luY2x1ZGUgPHg4Ni9j
cHUuaD4KKyNpbmNsdWRlIDxjcHUuaD4KKyNpbmNsdWRlIDxpcnEuaD4KICNpbmNsdWRlIDxrdm0v
aXJxLmg+CiAjaW5jbHVkZSA8a3ZtL2ludGN0cmwuaD4KICNpbmNsdWRlIDx1ay9hc3NlcnQuaD4K
QEAgLTQ2LDE0ICs0NywxNCBAQCBzdHJ1Y3QgaXJxX2hhbmRsZXIgewogfTsKIAogVUtfU0xJU1Rf
SEVBRChpcnFfaGFuZGxlcl9oZWFkLCBzdHJ1Y3QgaXJxX2hhbmRsZXIpOwotc3RhdGljIHN0cnVj
dCBpcnFfaGFuZGxlcl9oZWFkIGlycV9oYW5kbGVyc1sxNl07CitzdGF0aWMgc3RydWN0IGlycV9o
YW5kbGVyX2hlYWQgaXJxX2hhbmRsZXJzW19fTUFYX0lSUV07CiAKIGludCB1a3BsYXRfaXJxX3Jl
Z2lzdGVyKHVuc2lnbmVkIGxvbmcgaXJxLCBpcnFfaGFuZGxlcl9mdW5jX3QgZnVuYywgdm9pZCAq
YXJnKQogewogCXN0cnVjdCBpcnFfaGFuZGxlciAqaDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwog
Ci0JVUtfQVNTRVJUKGlycSA8IDE2KTsKKwlVS19BU1NFUlQoaXJxIDwgX19NQVhfSVJRKTsKIAlV
S19BU1NFUlQoYWxsb2NhdG9yICE9IE5VTEwpOwogCiAJaCA9IHVrX21hbGxvYyhhbGxvY2F0b3Is
IHNpemVvZihzdHJ1Y3QgaXJxX2hhbmRsZXIpKTsKLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl0y-0001Gx-Cv; Fri, 28 Jun 2019 07:09:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl0x-0001Gn-MK
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:43 +0000
X-Inumbo-ID: b2ba1141-9973-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id b2ba1141-9973-11e9-8980-bc764e045a96;
 Fri, 28 Jun 2019 07:09:41 +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 E0BCED6E;
 Fri, 28 Jun 2019 00:09:40 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 177083F706;
 Fri, 28 Jun 2019 00:11:28 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:20 +0800
Message-Id: <20190628070923.57304-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190628070923.57304-1-justin.he@arm.com>
References: <20190628070923.57304-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv5 3/6] plat/common: Implement gic-v2
 library for Arm
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Jianyong Wu <jianyong.wu@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+CgpUaGlzIGxpYnJhcnkgaGFz
IGltcGxlbWVudGVkIGJhc2ljIEdJQ3YyIGZ1bmN0aW9ucy4gV2UgZG9uJ3Qgc3VwcG9ydApHSUN2
Mk0gYW5kIHNlY3VyaXR5IGV4dGVuc2lvbiBpbiB0aGlzIGxpYnJhcnkuCgpTaWduZWQtb2ZmLWJ5
OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogSmlhbnlvbmcgV3Ug
PGppYW55b25nLnd1QGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFy
bS5jb20+Ci0tLQogcGxhdC9jb21tb24vaW5jbHVkZS9pcnEuaCAgICAgICAgIHwgIDE1ICsrCiBw
bGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jICAgICAgICAgfCA0MDkgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBwbGF0L2RyaXZlcnMvaW5jbHVkZS9naWMvZ2ljLXYyLmggfCAzNzAgKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiBwbGF0L2t2bS9NYWtlZmlsZS51ayAgICAgICAgICAg
ICAgfCAgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCA3OTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHBsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBw
bGF0L2RyaXZlcnMvaW5jbHVkZS9naWMvZ2ljLXYyLmgKCmRpZmYgLS1naXQgYS9wbGF0L2NvbW1v
bi9pbmNsdWRlL2lycS5oIGIvcGxhdC9jb21tb24vaW5jbHVkZS9pcnEuaAppbmRleCBhMDk2ODVk
Li5mYWM1MDIyIDEwMDY0NAotLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2lycS5oCisrKyBiL3Bs
YXQvY29tbW9uL2luY2x1ZGUvaXJxLmgKQEAgLTQ1LDUgKzQ1LDIwIEBACiAjZXJyb3IgIkFkZCBp
cnEuaCBmb3IgY3VycmVudCBhcmNoaXRlY3R1cmUuIgogI2VuZGlmCiAKKy8qIGRlZmluZSBJUlEg
dHJpZ2dlciB0eXBlcyAqLworZW51bSB1a19pcnFfdHJpZ2dlciB7CisJVUtfSVJRX1RSSUdHRVJf
Tk9ORSA9IDAsCisJVUtfSVJRX1RSSUdHRVJfRURHRSA9IDEsCisJVUtfSVJRX1RSSUdHRVJfTEVW
RUwgPSAyLAorCVVLX0lSUV9UUklHR0VSX01BWAorfTsKKworLyogZGVmaW5lIElSUSB0cmlnZ2Vy
IHBvbGFyaXRpZXMgKi8KK2VudW0gdWtfaXJxX3BvbGFyaXR5IHsKKwlVS19JUlFfUE9MQVJJVFlf
Tk9ORSA9IDAsCisJVUtfSVJRX1BPTEFSSVRZX0hJR0ggPSAxLAorCVVLX0lSUV9QT0xBUklUWV9M
T1cgPSAyLAorCVVLX0lSUV9QT0xBUklUWV9NQVgKK307CiAKICNlbmRpZiAvKiBfX1BMQVRfQ01O
X0lSUV9IX18gKi8KZGlmZiAtLWdpdCBhL3BsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMgYi9wbGF0
L2RyaXZlcnMvZ2ljL2dpYy12Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjkzMjExNTUKLS0tIC9kZXYvbnVsbAorKysgYi9wbGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jCkBA
IC0wLDAgKzEsNDA5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNl
ICovCisvKgorICogQXV0aG9yczogV2VpIENoZW4gPFdlaS5DaGVuQGFybS5jb20+CisgKiAgICAg
ICAgICBKaWFueW9uZyBXdSA8SmlhbnlvbmcuV3VAYXJtLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTgsIEFybSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMg
SVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFE
RVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGxpYmZkdC5oPgorI2luY2x1ZGUgPHVrL2Vzc2Vu
dGlhbHMuaD4KKyNpbmNsdWRlIDx1ay9wcmludC5oPgorI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgor
I2luY2x1ZGUgPHVrL2JpdG9wcy5oPgorI2luY2x1ZGUgPHVrL2FzbS5oPgorI2luY2x1ZGUgPGly
cS5oPgorI2luY2x1ZGUgPGt2bS9pcnEuaD4KKyNpbmNsdWRlIDx1ay9wbGF0L2xjcHUuaD4KKyNp
bmNsdWRlIDxhcm0vY3B1Lmg+CisjaW5jbHVkZSA8Z2ljL2dpYy12Mi5oPgorI2luY2x1ZGUgPG9m
dy9mZHQuaD4KKworLyogTWF4IENQVSBpbnRlcmZhY2UgZm9yIEdJQ3YyICovCisjZGVmaW5lIEdJ
Q19NQVhfQ1BVSUYJCTgKKworLyogU1BJIGludGVycnVwdCBiYXNlIElEICovCisjZGVmaW5lIEdJ
Q19TUElfQkFTRQkJMzIKKworLyogUFBJIGludGVycnVwdCBiYXNlIElEICovCisjZGVmaW5lIEdJ
Q19QUElfQkFTRQkJMTYKKworLyogTWF4IHN1cHBvcnQgaW50ZXJydXB0IG51bWJlciBmb3IgR0lD
djIgKi8KKyNkZWZpbmUgR0lDX01BWF9JUlEJCV9fTUFYX0lSUQorCitzdGF0aWMgdWludDY0X3Qg
Z2ljX2Rpc3RfYWRkciwgZ2ljX2NwdWlmX2FkZHI7CitzdGF0aWMgdWludDY0X3QgZ2ljX2Rpc3Rf
c2l6ZSwgZ2ljX2NwdWlmX3NpemU7CisKKyNkZWZpbmUgR0lDX0RJU1RfUkVHKHIpCSgodm9pZCAq
KShnaWNfZGlzdF9hZGRyICsgKHIpKSkKKyNkZWZpbmUgR0lDX0NQVV9SRUcocikJKCh2b2lkICop
KGdpY19jcHVpZl9hZGRyICsgKHIpKSkKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaWNf
ZGV2aWNlX2xpc3RbXSA9IHsKKwkiYXJtLGNvcnRleC1hMTUtZ2ljIiwKKwlOVUxMCit9OworCisv
KiBpbmxpbmUgZnVuY3Rpb25zIHRvIGFjY2VzcyBHSUNDICYgR0lDRCByZWdpc3RlcnMgKi8KK3N0
YXRpYyBpbmxpbmUgdm9pZCB3cml0ZV9naWNkOCh1aW50NjRfdCBvZmZzZXQsIHVpbnQ4X3QgdmFs
KQoreworCWlvcmVnX3dyaXRlOChHSUNfRElTVF9SRUcob2Zmc2V0KSwgdmFsKTsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHdyaXRlX2dpY2QzMih1aW50NjRfdCBvZmZzZXQsIHVpbnQzMl90IHZh
bCkKK3sKKwlpb3JlZ193cml0ZTMyKEdJQ19ESVNUX1JFRyhvZmZzZXQpLCB2YWwpOworfQorCitz
dGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRfZ2ljZDMyKHVpbnQ2NF90IG9mZnNldCkKK3sKKwly
ZXR1cm4gaW9yZWdfcmVhZDMyKEdJQ19ESVNUX1JFRyhvZmZzZXQpKTsKK30KKworc3RhdGljIGlu
bGluZSB2b2lkIHdyaXRlX2dpY2MzMih1aW50NjRfdCBvZmZzZXQsIHVpbnQzMl90IHZhbCkKK3sK
Kwlpb3JlZ193cml0ZTMyKEdJQ19DUFVfUkVHKG9mZnNldCksIHZhbCk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgdWludDMyX3QgcmVhZF9naWNjMzIodWludDY0X3Qgb2Zmc2V0KQoreworCXJldHVybiBp
b3JlZ19yZWFkMzIoR0lDX0NQVV9SRUcob2Zmc2V0KSk7Cit9CisKKy8qCisgKiBGdW5jdGlvbnMg
b2YgR0lDIENQVSBpbnRlcmZhY2UKKyAqLworCisvKiBFbmFibGUgR0lDIGNwdSBpbnRlcmZhY2Ug
Ki8KK3N0YXRpYyB2b2lkIGdpY19lbmFibGVfY3B1aWYodm9pZCkKK3sKKwkvKiBqdXN0IHNldCBi
aXQgMCB0byAxIHRvIGVuYWJsZSBjcHUgaW50ZXJmYWNlICovCisJd3JpdGVfZ2ljYzMyKEdJQ0Nf
Q1RMUiwgR0lDQ19DVExSX0VOQUJMRSk7Cit9CisKKy8qIFNldCBwcmlvcml0eSB0aHJlc2hvbGQg
Zm9yIHByb2Nlc3NvciAqLworc3RhdGljIHZvaWQgZ2ljX3NldF90aHJlc2hvbGRfcHJpb3JpdHko
dWludDMyX3QgdGhyZXNob2xkX3ByaW8pCit7CisJLyogR0lDQ19QTVIgYWxsb2NhdGUgMSBieXRl
IGZvciBlYWNoIGlycSAqLworCVVLX0FTU0VSVCh0aHJlc2hvbGRfcHJpbyA8PSBHSUNDX1BNUl9Q
UklPX01BWCk7CisJd3JpdGVfZ2ljYzMyKEdJQ0NfUE1SLCB0aHJlc2hvbGRfcHJpbyk7Cit9CisK
Ky8qCisgKiBBY2tub3dsZWRnaW5nIGlycSBlcXVhbHMgcmVhZGluZyBHSUNDX0lBUiBhbHNvCisg
KiBnZXQgdGhlIGludGVycnVwdCBJRCBhcyB0aGUgc2lkZSBlZmZlY3QuCisgKi8KK3VpbnQzMl90
IGdpY19hY2tfaXJxKHZvaWQpCit7CisJcmV0dXJuIHJlYWRfZ2ljYzMyKEdJQ0NfSUFSKTsKK30K
KworLyoKKyAqIHdyaXRlIHRvIEdJQ0NfRU9JUiB0byBpbmZvcm0gY3B1IGludGVyZmFjZSBjb21w
bGV0YXRpb24KKyAqIG9mIGludGVycnVwdCBwcm9jZXNzaW5nLiBJZiBHSUNDX0NUTFIuRU9JbW9k
ZSBzZXRzIHRvIDEKKyAqIHRoaXMgZnVuYyBqdXN0IGdldHMgcHJpb3JpdHkgZHJvcC4KKyAqLwor
dm9pZCBnaWNfZW9pX2lycSh1aW50MzJfdCBpcnEpCit7CisJd3JpdGVfZ2ljYzMyKEdJQ0NfRU9J
UiwgaXJxKTsKK30KKworLyogRnVuY3Rpb25zIG9mIEdJQyBEaXN0cmlidXRvciAqLworCisvKgor
ICogQHNnaW50aWQgZGVub3RlcyB0aGUgc2dpIElEOworICogQHRhcmdldGZpbHRlciA6IHRoaXMg
dGVybSBpcyBUYXJnZXRMaXN0RmlsdGVyCisgKiBAdGFyZ2V0bGlzdCBpcyBiaXRtYXNrIHZhbHVl
LCBBIGJpdCBzZXQgdG8gJzEnIGluZGljYXRlZAorICogdGhlIGludGVycnVwdCBpcyB3aXJlZCB0
byB0aGF0IENQVS4KKyAqLworc3RhdGljIHZvaWQgZ2ljX3NnaV9nZW4odWludDMyX3Qgc2dpbnRp
ZCwgZW51bSBzZ2lfZmlsdGVyIHRhcmdldGZpbHRlciwKKwkJCXVpbnQ4X3QgdGFyZ2V0bGlzdCkK
K3sKKwl1aW50MzJfdCB2YWw7CisKKwkvKiBPbmx5IElOVElEIDAtMTUgYWxsb2NhdGVkIHRvIHNn
aSAqLworCVVLX0FTU0VSVChzZ2ludGlkIDw9IEdJQ0RfU0dJX01BWF9JTklUSUQpOworCisJLyog
U2V0IFNHSSB0YWdldGZpbGV0ZXIgZmllbGQgKi8KKwl2YWwgPSAodGFyZ2V0ZmlsdGVyICYgR0lD
RF9TR0lfRklMVEVSX01BU0spIDw8IEdJQ0RfU0dJX0ZJTFRFUl9TSElGVDsKKworCS8qIFNldCBT
R0kgdGFyZ2V0bGlzdCBmaWVsZCAqLworCXZhbCB8PSAodGFyZ2V0bGlzdCAmIEdJQ0RfU0dJX1RB
UkdFVF9NQVNLKSA8PCBHSUNEX1NHSV9UQVJHRVRfU0hJRlQ7CisKKwkvKiBTZXQgU0dJIElOSVRJ
RCBmaWVsZCAqLworCXZhbCB8PSBzZ2ludGlkOworCisJLyogR2VuZXJhdGUgU0dJICovCisJd3Jp
dGVfZ2ljZDMyKEdJQ0RfU0dJUiwgdmFsKTsKK30KKworLyoKKyAqIEZvcndhcmQgdGhlIFNJRyB0
byB0aGUgQ1BVIGludGVyZmFjZXMgc3BlY2lmaWVkIGluIHRoZQorICogdGFyZ2V0bGlzdC4gVGFy
Z2V0bGlzdCBpcyBhIDgtYml0IGJpdG1hcCBmb3IgMH43IENQVS4KKyAqIFRPRE86IHRoaXMgd2ls
bCBub3Qgd29yayB1bnRpbCBTTVAgaXMgc3VwcG9ydGVkCisgKi8KK3ZvaWQgZ2ljX3NnaV9nZW5f
dG9fbGlzdCh1aW50MzJfdCBzZ2ludGlkLCB1aW50OF90IHRhcmdldGxpc3QpCit7CisJdW5zaWdu
ZWQgbG9uZyBpcnFmOworCisJLyogc3BpbiBsb2NrIGhlcmUgaXMgbmVlZGVkIHdoZW4gc21wIGlz
IHN1cHBvcnRlZCAqLworCWlycWYgPSB1a3BsYXRfbGNwdV9zYXZlX2lycWYoKTsKKwlnaWNfc2dp
X2dlbihzZ2ludGlkLCBHSUNEX1NHSV9GSUxURVJfVE9fTElTVCwgdGFyZ2V0bGlzdCk7CisJdWtw
bGF0X2xjcHVfcmVzdG9yZV9pcnFmKGlycWYpOworfQorCisvKgorICogRm9yd2FyZCB0aGUgU0dJ
IHRvIGFsbCBDUFUgaW50ZXJmYWNlcyBleGNlcHQgdGhhdCBvZiB0aGUKKyAqIHByb2Nlc3NvciB0
aGF0IHJlcXVlc3RlZCB0aGUgaW50ZXJydXB0LgorICogVE9ETzogdGhpcyB3aWxsIG5vdCB3b3Jr
IHVudGlsIFNNUCBpcyBzdXBwb3J0ZWQKKyAqLwordm9pZCBnaWNfc2dpX2dlbl90b19vdGhlcnMo
dWludDMyX3Qgc2dpbnRpZCkKK3sKKwl1bnNpZ25lZCBsb25nIGlycWY7CisKKwkvKiBzcGluIGxv
Y2sgaGVyZSBpcyBuZWVkZWQgd2hlbiBzbXAgaXMgc3VwcG9ydGVkICovCisJaXJxZiA9IHVrcGxh
dF9sY3B1X3NhdmVfaXJxZigpOworCWdpY19zZ2lfZ2VuKHNnaW50aWQsIEdJQ0RfU0dJX0ZJTFRF
Ul9UT19PVEhFUlMsIDApOworCXVrcGxhdF9sY3B1X3Jlc3RvcmVfaXJxZihpcnFmKTsKK30KKwor
LyoKKyAqIEZvcndhcmQgdGhlIFNHSSBvbmx5IHRvIHRoZSBDUFUgaW50ZXJmYWNlIG9mIHRoZSBw
cm9jZXNzb3IKKyAqIHRoYXQgcmVxdWVzdGVkIHRoZSBpbnRlcnJ1cHQuCisgKi8KK3ZvaWQgZ2lj
X3NnaV9nZW5fdG9fc2VsZih1aW50MzJfdCBzZ2ludGlkKQoreworCWdpY19zZ2lfZ2VuKHNnaW50
aWQsIEdJQ0RfU0dJX0ZJTFRFUl9UT19TRUxGLCAwKTsKK30KKworLyoKKyAqIHNldCB0YXJnZXQg
Y3B1IGZvciBpcnEgaW4gZGlzdHJpYnV0b3IsCisgKiBAdGFyZ2V0OiBiaXRtYXNrIHZhbHVlLCBi
aXQgMSBpbmRpY2F0ZXMgdGFyZ2V0IHRvCisgKiBjb3JyZXNwb25kaW5nIGNwdSBpbnRlcmZhY2UK
KyAqLwordm9pZCBnaWNfc2V0X2lycV90YXJnZXQodWludDMyX3QgaXJxLCB1aW50OF90IHRhcmdl
dCkKK3sKKwlpZiAoaXJxIDwgR0lDX1NQSV9CQVNFKQorCQlVS19DUkFTSCgiQmFkIGlycSBudW1i
ZXI6IHNob3VsZCBub3QgbGVzcyB0aGFuICV1IiwKKwkJCUdJQ19TUElfQkFTRSk7CisKKwl3cml0
ZV9naWNkOChHSUNEX0lUQVJHRVRTUihpcnEpLCB0YXJnZXQpOworfQorCisvKiBzZXQgcHJpb3Jp
dHkgZm9yIGlycSBpbiBkaXN0cmlidXRvciAqLwordm9pZCBnaWNfc2V0X2lycV9wcmlvKHVpbnQz
Ml90IGlycSwgdWludDhfdCBwcmlvcml0eSkKK3sKKwl3cml0ZV9naWNkOChHSUNEX0lQUklPUklU
WVIoaXJxKSwgcHJpb3JpdHkpOworfQorCisvKgorICogRW5hYmxlIGFuIGlycSBpbiBkaXN0cmli
dXRvciwgZWFjaCBpcnEgb2NjdXBpZXMgb25lIGJpdAorICogdG8gY29uZmlndXJlIGluIGNvcnJl
c3BvbmRpbmcgcmVnaXN0b3IKKyAqLwordm9pZCBnaWNfZW5hYmxlX2lycSh1aW50MzJfdCBpcnEp
Cit7CisJd3JpdGVfZ2ljZDMyKEdJQ0RfSVNFTkFCTEVSKGlycSksCisJCVVLX0JJVChpcnEgJSBH
SUNEX0lfUEVSX0lTRU5BQkxFUm4pKTsKK30KKworLyoKKyAqIERpc2FibGUgYW4gaXJxIGluIGRp
c3RyaWJ1dG9yLCBvbmUgYml0IHJlc2VydmVkIGZvciBhbiBpcnEKKyAqIHRvIGNvbmZpZ3VyZSBp
biBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyCisgKi8KK3ZvaWQgZ2ljX2Rpc2FibGVfaXJxKHVpbnQz
Ml90IGlycSkKK3sKKwl3cml0ZV9naWNkMzIoR0lDRF9JQ0VOQUJMRVIoaXJxKSwKKwkJVUtfQklU
KGlycSAlIEdJQ0RfSV9QRVJfSUNFTkFCTEVSbikpOworfQorCisvKiBFbmFibGUgZGlzdHJpYnV0
b3IgKi8KK3N0YXRpYyB2b2lkIGdpY19lbmFibGVfZGlzdCh2b2lkKQoreworCS8qIGp1c3Qgc2V0
IGJpdCAwIHRvIDEgdG8gZW5hYmxlIGRpc3RyaWJ1dG9yICovCisJd3JpdGVfZ2ljZDMyKEdJQ0Rf
Q1RMUiwgcmVhZF9naWNkMzIoR0lDRF9DVExSKSB8IEdJQ0RfQ1RMUl9FTkFCTEUpOworfQorCisv
KiBkaXNhYmxlIGRpc3RyaWJ1dG9yICovCitzdGF0aWMgdm9pZCBnaWNfZGlzYWJsZV9kaXN0KHZv
aWQpCit7CisJLyoganVzdCBjbGVhciBiaXQgMCB0byAwIHRvIGVuYWJsZSBkaXN0cmlidXRvciAq
LworCXdyaXRlX2dpY2QzMihHSUNEX0NUTFIsIHJlYWRfZ2ljZDMyKEdJQ0RfQ1RMUikgJiAofkdJ
Q0RfQ1RMUl9FTkFCTEUpKTsKK30KKworLyogQ29uZmlnIGludGVycnVwdCB0cmlnZ2VyIHR5cGUg
Ki8KK3ZvaWQgZ2ljX3NldF9pcnFfdHlwZSh1aW50MzJfdCBpcnEsIGludCB0cmlnZ2VyKQorewor
CXVpbnQzMl90IHZhbCwgbWFzaywgb2xkbWFzazsKKworCWlmIChpcnEgPCBHSUNfUFBJX0JBU0Up
CisJCVVLX0NSQVNIKCJCYWQgaXJxIG51bWJlcjogc2hvdWxkIG5vdCBsZXNzIHRoYW4gJXUiLAor
CQkJR0lDX1BQSV9CQVNFKTsKKwlpZiAodHJpZ2dlciA+PSBVS19JUlFfVFJJR0dFUl9NQVgpCisJ
CXJldHVybjsKKworCXZhbCA9IHJlYWRfZ2ljZDMyKEdJQ0RfSUNGR1IoaXJxKSk7CisJbWFzayA9
IG9sZG1hc2sgPSAodmFsID4+ICgoaXJxICUgR0lDRF9JX1BFUl9JQ0ZHUm4pICogMikpICYKKwkJ
CUdJQ0RfSUNGR1JfTUFTSzsKKworCWlmICh0cmlnZ2VyID09IFVLX0lSUV9UUklHR0VSX0xFVkVM
KSB7CisJCW1hc2sgJj0gfkdJQ0RfSUNGR1JfVFJJR19NQVNLOworCQltYXNrIHw9IEdJQ0RfSUNG
R1JfVFJJR19MVkw7CisJfSBlbHNlIGlmICh0cmlnZ2VyID09IFVLX0lSUV9UUklHR0VSX0VER0Up
IHsKKwkJbWFzayAmPSB+R0lDRF9JQ0ZHUl9UUklHX01BU0s7CisJCW1hc2sgfD0gR0lDRF9JQ0ZH
Ul9UUklHX0VER0U7CisJfQorCisJLyogQ2hlY2sgaWYgbm90aGluZyBjaGFuZ2VkICovCisJaWYg
KG1hc2sgPT0gb2xkbWFzaykKKwkJcmV0dXJuOworCisJLyogVXBkYXRlIG5ldyBpbnRlcnJ1cHQg
dHlwZSAqLworCXZhbCAmPSAofihHSUNEX0lDRkdSX01BU0sgPDwgKGlycSAlIEdJQ0RfSV9QRVJf
SUNGR1JuKSAqIDIpKTsKKwl2YWwgfD0gKG1hc2sgPDwgKGlycSAlIEdJQ0RfSV9QRVJfSUNGR1Ju
KSAqIDIpOworCXdyaXRlX2dpY2QzMihHSUNEX0lDRkdSKGlycSksIHZhbCk7Cit9CisKK3N0YXRp
YyB2b2lkIGdpY19pbml0X2Rpc3Qodm9pZCkKK3sKKwl1aW50MzJfdCB2YWwsIGNwdWlmX251bWJl
ciwgaXJxX251bWJlcjsKKwl1aW50MzJfdCBpOworCisJLyogVHVybiBkb3duIGRpc3RyaWJ1dG9y
ICovCisJZ2ljX2Rpc2FibGVfZGlzdCgpOworCisJLyogR2V0IEdJQyBDUFUgaW50ZXJmYWNlICov
CisJdmFsID0gcmVhZF9naWNkMzIoR0lDRF9UWVBFUik7CisJY3B1aWZfbnVtYmVyID0gR0lDRF9U
WVBFUl9DUFVJX05VTSh2YWwpOworCWlmIChjcHVpZl9udW1iZXIgPiBHSUNfTUFYX0NQVUlGKQor
CQljcHVpZl9udW1iZXIgPSBHSUNfTUFYX0NQVUlGOworCXVrX3ByX2luZm8oIkdJQ3YyIE1heCBD
UFUgaW50ZXJmYWNlOiVkXG4iLCBjcHVpZl9udW1iZXIpOworCisJLyogR2V0IHRoZSBtYXhpbXVt
IG51bWJlciBvZiBpbnRlcnJ1cHRzIHRoYXQgdGhlIEdJQyBzdXBwb3J0cyAqLworCWlycV9udW1i
ZXIgPSBHSUNEX1RZUEVSX0xJTkVfTlVNKHZhbCk7CisJaWYgKGlycV9udW1iZXIgPiBHSUNfTUFY
X0lSUSkKKwkJaXJxX251bWJlciA9IEdJQ19NQVhfSVJROworCXVrX3ByX2luZm8oIkdJQ3YyIE1h
eCBpbnRlcnJ1cHQgbGluZXM6JWRcbiIsIGlycV9udW1iZXIpOworCS8qCisJICogU2V0IGFsbCBT
UEkgaW50ZXJydXB0cyB0YXJnZXRzIHRvIGFsbCBDUFUuCisJICovCisJZm9yIChpID0gR0lDX1NQ
SV9CQVNFOyBpIDwgaXJxX251bWJlcjsgaSArPSBHSUNEX0lfUEVSX0lUQVJHRVRTUm4pCisJCXdy
aXRlX2dpY2QzMihHSUNEX0lUQVJHRVRTUihpKSwgR0lDRF9JVEFSR0VUU1JfREVGKTsKKworCS8q
CisJICogU2V0IGFsbCBTUEkgaW50ZXJydXB0cyB0eXBlIHRvIGJlIGxldmVsIHRyaWdnZXJlZAor
CSAqLworCWZvciAoaSA9IEdJQ19TUElfQkFTRTsgaSA8IGlycV9udW1iZXI7IGkgKz0gR0lDRF9J
X1BFUl9JQ0ZHUm4pCisJCXdyaXRlX2dpY2QzMihHSUNEX0lDRkdSKGkpLCBHSUNEX0lDRkdSX0RF
Rl9UWVBFKTsKKworCS8qCisJICogU2V0IGFsbCBTUEkgcHJpb3JpdHkgdG8gYSBkZWZhdWx0IHZh
bHVlLgorCSAqLworCWZvciAoaSA9IEdJQ19TUElfQkFTRTsgaSA8IGlycV9udW1iZXI7IGkgKz0g
R0lDRF9JX1BFUl9JUFJJT1JJVFluKQorCQl3cml0ZV9naWNkMzIoR0lDRF9JUFJJT1JJVFlSKGkp
LCBHSUNEX0lQUklPUklUWV9ERUYpOworCisJLyoKKwkgKiBEZWFjdGl2YXRlIGFuZCBkaXNhYmxl
IGFsbCBTUElzLgorCSAqLworCWZvciAoaSA9IEdJQ19TUElfQkFTRTsgaSA8IGlycV9udW1iZXI7
IGkgKz0gR0lDRF9JX1BFUl9JQ0FDVElWRVJuKSB7CisJCXdyaXRlX2dpY2QzMihHSUNEX0lDQUNU
SVZFUihpKSwgR0lDRF9ERUZfSUNBQ1RJVkVSbik7CisJCXdyaXRlX2dpY2QzMihHSUNEX0lDRU5B
QkxFUihpKSwgR0lDRF9ERUZfSUNFTkFCTEVSbik7CisJfQorCisJLyogdHVybiBvbiBkaXN0cmli
dXRvciAqLworCWdpY19lbmFibGVfZGlzdCgpOworfQorCitzdGF0aWMgdm9pZCBnaWNfaW5pdF9j
cHVpZih2b2lkKQoreworCXVpbnQzMl90IGk7CisJLyoKKwkgKiBzZXQgcHJpb3JpdHkgbWFzayB0
byB0aGUgbG93ZXN0IHByaW9yaXR5IHRvIGxldCBhbGwgaXJxCisJICogdmlzaWJsZSB0byBjcHUg
aW50ZXJmYWNlCisJICovCisJZ2ljX3NldF90aHJlc2hvbGRfcHJpb3JpdHkoR0lDQ19QTVJfUFJJ
T19NQVgpOworCisJLyogc2V0IFBQSSBhbmQgU0dJIHRvIGxldmVsIHRyaWdnZXJlZCAqLworCWZv
ciAoaSA9IDA7IGkgPCBHSUNfU1BJX0JBU0U7IGkgKz0gR0lDRF9JX1BFUl9JQ0ZHUm4pCisJCXdy
aXRlX2dpY2QzMihHSUNEX0lDRkdSKGkpLCBHSUNEX0lDRkdSX0RFRl9UWVBFKTsKKworCS8qIHNl
dCBQUEkgYW5kIFNHSSB0byBhIGRlZmF1bHQgdmFsdWUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgR0lD
X1NQSV9CQVNFOyBpICs9IEdJQ0RfSV9QRVJfSVBSSU9SSVRZbikKKwkJd3JpdGVfZ2ljZDMyKEdJ
Q0RfSVBSSU9SSVRZUihpKSwgR0lDRF9JUFJJT1JJVFlfREVGKTsKKworCS8qCisJICogRGVhY3Rp
dmF0ZSBhbmQgZGlzYWJsZSBhbGwgUFBJcy4KKwkgKi8KKwl3cml0ZV9naWNkMzIoR0lDRF9JQ0FD
VElWRVIoaSksIEdJQ0RfREVGX0lDQUNUSVZFUm4pOworCXdyaXRlX2dpY2QzMihHSUNEX0lDRU5B
QkxFUihpKSwgR0lDRF9ERUZfUFBJX0lDRU5BQkxFUm4pOworCisJLyogRGVhY3RpdmF0ZSBhbmQg
ZW5hYmxlIGFsbCBTR0lzICovCisJd3JpdGVfZ2ljZDMyKEdJQ0RfSUNBQ1RJVkVSKGkpLCBHSUNE
X0RFRl9JQ0FDVElWRVJuKTsKKwl3cml0ZV9naWNkMzIoR0lDRF9JU0VOQUJMRVIoaSksIEdJQ0Rf
REVGX1NHSV9JU0VOQUJMRVJuKTsKKworCS8qIGVuYWJsZSBjcHUgaW50ZXJmYWNlICovCisJZ2lj
X2VuYWJsZV9jcHVpZigpOworfQorCitpbnQgX2R0Yl9pbml0X2dpYyhjb25zdCB2b2lkICpmZHQp
Cit7CisJaW50IGZkdF9naWMsIHJldDsKKworCXVrX3ByX2luZm8oIlByb2JpbmcgR0lDdjIuLi5c
biIpOworCisJLyogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgMSBHSUMgcGVyIHN5c3RlbSAq
LworCWZkdF9naWMgPSBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZV9saXN0KGZkdCwgLTEs
CisJCQkJZ2ljX2RldmljZV9saXN0KTsKKwlpZiAoZmR0X2dpYyA8IDApCisJCVVLX0NSQVNIKCJD
b3VsZCBub3QgZmluZCBHSUN2MiBJbnRlcnJ1cHQgQ29udHJvbGxlciFcbiIpOworCisJLyogR2V0
IGRldmljZSBhZGRyZXNzIGFuZCBzaXplIGF0IHJlZ3MgcmVnaW9uICovCisJcmV0ID0gZmR0X2dl
dF9hZGRyZXNzKGZkdCwgZmR0X2dpYywgMCwKKwkJCSZnaWNfZGlzdF9hZGRyLCAmZ2ljX2Rpc3Rf
c2l6ZSk7CisJaWYgKHJldCA8IDApCisJCVVLX0NSQVNIKCJDb3VsZCBub3QgZmluZCBHSUN2MiBk
aXN0cmlidXRvciByZWdpb24hXG4iKTsKKworCXJldCA9IGZkdF9nZXRfYWRkcmVzcyhmZHQsIGZk
dF9naWMsIDEsCisJCQkmZ2ljX2NwdWlmX2FkZHIsICZnaWNfY3B1aWZfc2l6ZSk7CisJaWYgKHJl
dCA8IDApCisJCVVLX0NSQVNIKCJDb3VsZCBub3QgZmluZCBHSUN2MiBjcHVpZiByZWdpb24hXG4i
KTsKKworCXVrX3ByX2luZm8oIkZvdW5kIEdJQ3YyIG9uOlxuIik7CisJdWtfcHJfaW5mbygiXHRE
aXN0cmlidXRvciAgOiAweCVseCAtIDB4JWx4XG4iLAorCQlnaWNfZGlzdF9hZGRyLCBnaWNfZGlz
dF9hZGRyICsgZ2ljX2Rpc3Rfc2l6ZSAtIDEpOworCXVrX3ByX2luZm8oIlx0Q1BVIGludGVyZmFj
ZTogMHglbHggLSAweCVseFxuIiwKKwkJZ2ljX2NwdWlmX2FkZHIsIGdpY19jcHVpZl9hZGRyICsg
Z2ljX2NwdWlmX3NpemUgLSAxKTsKKworCisJLyogSW5pdGlhbGl6ZSBHSUN2MiBkaXN0cmlidXRv
ciAqLworCWdpY19pbml0X2Rpc3QoKTsKKworCS8qIEluaXRpYWxpemUgR0lDdjIgQ1BVIGludGVy
ZmFjZSAqLworCWdpY19pbml0X2NwdWlmKCk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh
L3BsYXQvZHJpdmVycy9pbmNsdWRlL2dpYy9naWMtdjIuaCBiL3BsYXQvZHJpdmVycy9pbmNsdWRl
L2dpYy9naWMtdjIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDQ1NDJm
Ci0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9kcml2ZXJzL2luY2x1ZGUvZ2ljL2dpYy12Mi5oCkBA
IC0wLDAgKzEsMzcwIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNl
ICovCisvKgorICogQXV0aG9yczogV2VpIENoZW4gPFdlaS5DaGVuQGFybS5jb20+CisgKiAgICAg
ICAgICBKaWFueW9uZyBXdSA8SmlhbnlvbmcuV3VAYXJtLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTgsIEFybSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMg
SVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFE
RVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworI2lm
bmRlZiBfX1BMQVRfQ01OX0FSTV9HSUNfSF9fCisjZGVmaW5lIF9fUExBVF9DTU5fQVJNX0dJQ19I
X18KKworLyoKKyAqIERpc3RyaWJ1dG9yIHJlZ2lzdGVycy4gVW5pa3JhZnQgb25seSBzdXBwb3J0
IHJ1biBvbiBub24tc2VjdXJlCisgKiBzbyB3ZSBqdXN0IGRlc2NyaWJlIG5vbi1zZWN1cmUgcmVn
aXN0ZXJzLgorICovCisKKy8qCisgKiBEaXN0cmlidXRvciBDb250cm9sIFJlZ2lzdGVyLCBHSUNE
X0NUTFIuCisgKiBFbmFibGVzIHRoZSBmb3J3YXJkaW5nIG9mIHBlbmRpbmcgaW50ZXJydXB0cyBm
cm9tIHRoZQorICogRGlzdHJpYnV0b3IgdG8gdGhlIENQVSBpbnRlcmZhY2VzCisgKi8KKyNkZWZp
bmUgR0lDRF9DVExSCQkweDAwMDAKKyNkZWZpbmUgR0lDRF9DVExSX0VOQUJMRQkweDEKKworLyoK
KyAqIEludGVycnVwdCBDb250cm9sbGVyIFR5cGUgUmVnaXN0ZXIsIEdJQ0RfVFlQRVIuCisgKiBQ
cm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgR0lDLgor
ICovCisjZGVmaW5lIEdJQ0RfVFlQRVIJCTB4MDAwNAorI2RlZmluZSBHSUNEX1RZUEVSX0xJTkVf
TlVNKHIpCSgoKChyKSAmIDB4MWYpICsgMSkgPDwgNSkKKyNkZWZpbmUgR0lDRF9UWVBFUl9DUFVJ
X05VTShyKQkoKCgocikgPj4gNSkgJiAweDMpICsgMSkKKworLyoKKyAqIERpc3RyaWJ1dG9yIElt
cGxlbWVudGVyIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyLCBHSUNEX0lJRFIuCisgKiBQcm92aWRl
cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1wbGVtZW50ZXIgYW5kIHJldmlzaW9uIG9mIHRoZSBE
aXN0cmlidXRvci4KKyAqLworI2RlZmluZSBHSUNEX0lJRFIJCTB4MDAwOAorI2RlZmluZSBHSUNE
X0lJRFJfUFJPRChyKQkoKChyKSA+PiAyNCkgJiAweGZmKQorI2RlZmluZSBHSUNEX0lJRFJfVkFS
KHIpCSgoKHIpID4+IDE2KSAmIDB4ZikKKyNkZWZpbmUgR0lDRF9JSURSX1JFVihyKQkoKChyKSA+
PiAxMikgJiAweGYpCisjZGVmaW5lIEdJQ0RfSUlEUl9JTVBMKHIpCSgocikgJiAweGZmZikKKwor
LyoKKyAqIEludGVycnVwdCBHcm91cCBSZWdpc3RlcnMsIEdJQ0RfSUdST1VQUm4KKyAqIFRoZXNl
IHJlZ2lzdGVycyBwcm92aWRlIGEgc3RhdHVzIGJpdCBmb3IgZWFjaCBpbnRlcnJ1cHQgc3VwcG9y
dGVkIGJ5CisgKiB0aGUgR0lDLiBFYWNoIGJpdCBjb250cm9scyB3aGV0aGVyIHRoZSBjb3JyZXNw
b25kaW5nIGludGVycnVwdCBpcyBpbgorICogR3JvdXAgMCBvciBHcm91cCAxCisgKi8KKyNkZWZp
bmUgR0lDRF9JR1JPVVBSKG4pCQkoMHgwMDgwICsgNCAqICgobikgPj4gNSkpCisjZGVmaW5lIEdJ
Q0RfSV9QRVJfSUdST1VQUm4JMzIKKworLyoKKyAqIEludGVycnVwdCBTZXQtRW5hYmxlIFJlZ2lz
dGVycywgR0lDRF9JU0VOQUJMRVJuLgorICogVGhlc2UgcmVnaXN0ZXJzIHByb3ZpZGUgYSBTZXQt
ZW5hYmxlIGJpdCBmb3IgZWFjaCBpbnRlcnJ1cHQgc3VwcG9ydGVkCisgKiBieSB0aGUgR0lDLiBX
cml0aW5nIDEgdG8gYSBTZXQtZW5hYmxlIGJpdCBlbmFibGVzIGZvcndhcmRpbmcgb2YgdGhlCisg
KiBjb3JyZXNwb25kaW5nIGludGVycnVwdCBmcm9tIHRoZSBEaXN0cmlidXRvciB0byB0aGUgQ1BV
IGludGVyZmFjZXMuCisgKiBSZWFkaW5nIGEgYml0IGlkZW50aWZpZXMgd2hldGhlciB0aGUgaW50
ZXJydXB0IGlzIGVuYWJsZWQuCisgKi8KKyNkZWZpbmUgR0lDRF9JU0VOQUJMRVIobikJKDB4MDEw
MCArIDQgKiAoKG4pID4+IDUpKQorI2RlZmluZSBHSUNEX0lfUEVSX0lTRU5BQkxFUm4JMzIKKyNk
ZWZpbmUgR0lDRF9ERUZfU0dJX0lTRU5BQkxFUm4JMHhmZmZmCisKKy8qCisgKiBJbnRlcnJ1cHQg
Q2xlYXItRW5hYmxlIFJlZ2lzdGVycywgR0lDRF9JQ0VOQUJMRVJuLgorICogUHJvdmlkZSBhIENs
ZWFyLWVuYWJsZSBiaXQgZm9yIGVhY2ggaW50ZXJydXB0IHN1cHBvcnRlZCBieSB0aGUgR0lDLgor
ICogV3JpdGluZyAxIHRvIGEgQ2xlYXItZW5hYmxlIGJpdCBkaXNhYmxlcyBmb3J3YXJkaW5nIG9m
IHRoZQorICogY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgZnJvbSB0aGUgRGlzdHJpYnV0b3IgdG8g
dGhlIENQVSBpbnRlcmZhY2VzLgorICogUmVhZGluZyBhIGJpdCBpZGVudGlmaWVzIHdoZXRoZXIg
dGhlIGludGVycnVwdCBpcyBlbmFibGVkLgorICovCisjZGVmaW5lIEdJQ0RfSUNFTkFCTEVSKG4p
CSgweDAxODAgKyA0ICogKChuKSA+PiA1KSkKKyNkZWZpbmUgR0lDRF9JX1BFUl9JQ0VOQUJMRVJu
CTMyCisjZGVmaW5lIEdJQ0RfREVGX0lDRU5BQkxFUm4JMHhmZmZmZmZmZgorI2RlZmluZSBHSUNE
X0RFRl9QUElfSUNFTkFCTEVSbgkweGZmZmYwMDAwCisKKy8qCisgKiBJbnRlcnJ1cHQgU2V0LVBl
bmRpbmcgUmVnaXN0ZXJzLCBHSUNEX0lTUEVORFJuLgorICogUHJvdmlkZSBhIFNldC1wZW5kaW5n
IGJpdCBmb3IgZWFjaCBpbnRlcnJ1cHQgc3VwcG9ydGVkIGJ5IHRoZSBHSUMuCisgKiBXcml0aW5n
IDEgdG8gYSBTZXQtcGVuZGluZyBiaXQgc2V0cyB0aGUgc3RhdHVzIG9mIHRoZSBjb3JyZXNwb25k
aW5nCisgKiBwZXJpcGhlcmFsIGludGVycnVwdCB0byBwZW5kaW5nLiBSZWFkaW5nIGEgYml0IGlk
ZW50aWZpZXMgd2hldGhlcgorICogdGhlIGludGVycnVwdCBpcyBwZW5kaW5nLgorICovCisjZGVm
aW5lIEdJQ0RfSVNQRU5EUihuKQkJKDB4MDIwMCArIDQgKiAoKG4pID4+IDUpKQorI2RlZmluZSBH
SUNEX0lfUEVSX0lTUEVORFJuCTMyCisvKgorICogSW50ZXJydXB0IENsZWFyLVBlbmRpbmcgUmVn
aXN0ZXJzLCBHSUNEX0lDUEVORFJuCisgKiBQcm92aWRlIGEgQ2xlYXItcGVuZGluZyBiaXQgZm9y
IGVhY2ggaW50ZXJydXB0IHN1cHBvcnRlZCBieSB0aGUgR0lDLgorICogV3JpdGluZyAxIHRvIGEg
Q2xlYXItcGVuZGluZyBiaXQgY2xlYXJzIHRoZSBwZW5kaW5nIHN0YXRlIG9mIHRoZQorICogY29y
cmVzcG9uZGluZyBwZXJpcGhlcmFsIGludGVycnVwdC4gUmVhZGluZyBhIGJpdCBpZGVudGlmaWVz
IHdoZXRoZXIKKyAqIHRoZSBpbnRlcnJ1cHQgaXMgcGVuZGluZy4KKyAqLworI2RlZmluZSBHSUNE
X0lDUEVORFIobikJCSgweDAyODAgKyA0ICogKChuKSA+PiA1KSkKKyNkZWZpbmUgR0lDRF9JX1BF
Ul9JQ1BFTkRSbgkzMgorCisvKgorICogSW50ZXJydXB0IFNldC1BY3RpdmUgUmVnaXN0ZXJzLCBH
SUNEX0lTQUNUSVZFUm4KKyAqIFByb3ZpZGUgYSBTZXQtYWN0aXZlIGJpdCBmb3IgZWFjaCBpbnRl
cnJ1cHQgdGhhdCB0aGUgR0lDIHN1cHBvcnRzLgorICogV3JpdGluZyB0byBhIFNldC1hY3RpdmUg
Yml0IEFjdGl2YXRlcyB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQuCisgKiBUaGVzZSByZWdp
c3RlcnMgYXJlIHVzZWQgd2hlbiBwcmVzZXJ2aW5nIGFuZCByZXN0b3JpbmcgR0lDIHN0YXRlLgor
ICovCisjZGVmaW5lIEdJQ0RfSVNBQ1RJVkVSKG4pCSgweDAzMDAgKyA0ICogKChuKSA+PiA1KSkK
KyNkZWZpbmUgR0lDRF9JX1BFUl9JU0FDVElWRVJuCTMyCisvKgorICogSW50ZXJydXB0IENsZWFy
LUFjdGl2ZSBSZWdpc3RlcnMsIEdJQ0RfSUNBQ1RJVkVSbgorICogUHJvdmlkZSBhIENsZWFyLWFj
dGl2ZSBiaXQgZm9yIGVhY2ggaW50ZXJydXB0IHRoYXQgdGhlIEdJQyBzdXBwb3J0cy4KKyAqIFdy
aXRpbmcgdG8gYSBDbGVhci1hY3RpdmUgYml0IERlYWN0aXZhdGVzIHRoZSBjb3JyZXNwb25kaW5n
IGludGVycnVwdC4KKyAqIFRoZXNlIHJlZ2lzdGVycyBhcmUgdXNlZCB3aGVuIHByZXNlcnZpbmcg
YW5kIHJlc3RvcmluZyBHSUMgc3RhdGUuCisgKi8KKyNkZWZpbmUgR0lDRF9JQ0FDVElWRVIobikJ
KDB4MDM4MCArIDQgKiAoKG4pID4+IDUpKQorI2RlZmluZSBHSUNEX0lfUEVSX0lDQUNUSVZFUm4J
MzIKKyNkZWZpbmUgR0lDRF9ERUZfSUNBQ1RJVkVSbgkweGZmZmZmZmZmCisKKy8qCisgKiBJbnRl
cnJ1cHQgSUQgbWFzayBmb3IgR0lDRF9JU0VOQUJMRVIsIEdJQ0RfSUNFTkFCTEVSLCBHSUNEX0lT
UEVORFIsCisgKiBHSUNEX0lDUEVORFIsIEdJQ0RfSVNBQ1RJVkVSIGFuZCBHSUNEX0lDQUNUSVZF
UgorICovCisjZGVmaW5lIEdJQ0RfSV9NQVNLKG4pCQkoMXVsIDw8ICgobikgJiAweDFmKSkKKwor
LyoKKyAqIEludGVycnVwdCBQcmlvcml0eSBSZWdpc3RlcnMsIEdJQ0RfSVBSSU9SSVRZUm4KKyAq
IFByb3ZpZGUgYW4gOC1iaXQgcHJpb3JpdHkgZmllbGQgZm9yIGVhY2ggaW50ZXJydXB0IHN1cHBv
cnRlZCBieSB0aGUKKyAqIEdJQy4KKyAqCisgKiBUaGVzZSByZWdpc3RlcnMgYXJlIGJ5dGUtYWNj
ZXNzaWJsZSwgc28gd2UgZGVmaW5lIHRoaXMgbWFjcm8KKyAqIGZvciBieXRlLWFjY2Vzcy4KKyAq
LworI2RlZmluZSBHSUNEX0lQUklPUklUWVIobikJKDB4MDQwMCArIChuKSkKKyNkZWZpbmUgR0lD
RF9JX1BFUl9JUFJJT1JJVFluCTQKKyNkZWZpbmUgR0lDRF9JUFJJT1JJVFlfREVGCTB4ODA4MDgw
ODAKKworLyoKKyAqIEludGVycnVwdCBQcm9jZXNzb3IgVGFyZ2V0cyBSZWdpc3RlcnMsIEdJQ0Rf
SVRBUkdFVFNSbgorICogUHJvdmlkZSBhbiA4LWJpdCBDUFUgdGFyZ2V0cyBmaWVsZCBmb3IgZWFj
aCBpbnRlcnJ1cHQgc3VwcG9ydGVkIGJ5CisgKiB0aGUgR0lDLgorICoKKyAqIFRoZXNlIHJlZ2lz
dGVycyBhcmUgYnl0ZS1hY2Nlc3NpYmxlLCBzbyB3ZSBkZWZpbmUgdGhpcyBtYWNybworICogZm9y
IGJ5dGUtYWNjZXNzLgorICovCisjZGVmaW5lIEdJQ0RfSVRBUkdFVFNSKG4pCSgweDA4MDAgKyAo
bikpCisjZGVmaW5lIEdJQ0RfSV9QRVJfSVRBUkdFVFNSbgk0CisjZGVmaW5lIEdJQ0RfSVRBUkdF
VFNSX0RFRgkweGZmZmZmZmZmCisKKy8qCisgKiBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbiBSZWdp
c3RlcnMsIEdJQ0RfSUNGR1JuCisgKiBUaGUgR0lDRF9JQ0ZHUnMgcHJvdmlkZSBhIDItYml0IElu
dF9jb25maWcgZmllbGQgZm9yIGVhY2ggaW50ZXJydXB0CisgKiBzdXBwb3J0ZWQgYnkgdGhlIEdJ
Qy4gVGhpcyBmaWVsZCBpZGVudGlmaWVzIHdoZXRoZXIgdGhlIGNvcnJlc3BvbmRpbmcKKyAqIGlu
dGVycnVwdCBpcyBlZGdlLXRyaWdnZXJlZCBvciBsZXZlbC1zZW5zaXRpdmUuCisgKi8KKyNkZWZp
bmUgR0lDRF9JQ0ZHUihuKQkJKDB4MEMwMCArIDQgKiAoKG4pID4+IDQpKQorI2RlZmluZSBHSUNE
X0lfUEVSX0lDRkdSbgkxNgorI2RlZmluZSBHSUNEX0lDRkdSX0RFRl9UWVBFCTAKKyNkZWZpbmUg
R0lDRF9JQ0ZHUl9NQVNLCQkweDMKKy8qIEZpcnN0IGJpdCBpcyBhIHBvbGFyaXR5IGJpdCAoMCAt
IGxvdywgMSAtIGhpZ2gpICovCisjZGVmaW5lIEdJQ0RfSUNGR1JfUE9MX0xPVwkoMCA8PCAwKQor
I2RlZmluZSBHSUNEX0lDRkdSX1BPTF9ISUdICSgxIDw8IDApCisjZGVmaW5lIEdJQ0RfSUNGR1Jf
UE9MX01BU0sJMHgxCisvKiBTZWNvbmQgYml0IGlzIGEgdHJpZ2dlciBiaXQgKDAgLSBsZXZlbCwg
MSAtIGVkZ2UpICovCisjZGVmaW5lIEdJQ0RfSUNGR1JfVFJJR19MVkwJKDAgPDwgMSkKKyNkZWZp
bmUgR0lDRF9JQ0ZHUl9UUklHX0VER0UJKDEgPDwgMSkKKyNkZWZpbmUgR0lDRF9JQ0ZHUl9UUklH
X01BU0sJMHgyCisKKy8qCisgKiBTb2Z0d2FyZSBHZW5lcmF0ZWQgSW50ZXJydXB0IFJlZ2lzdGVy
LCBHSUNEX1NHSVIKKyAqLworI2RlZmluZSBHSUNEX1NHSVIJCTB4MEYwMAorI2RlZmluZSBHSUNE
X1NHSV9UQVJHRVRfU0hJRlQJMTYKKyNkZWZpbmUgR0lDRF9TR0lfVEFSR0VUX01BU0sJMHhmZgor
I2RlZmluZSBHSUNEX1NHSV9GSUxURVJfU0hJRlQJMjQKKyNkZWZpbmUgR0lDRF9TR0lfRklMVEVS
X01BU0sJMHgzCisjZGVmaW5lIEdJQ0RfU0dJX01BWF9JTklUSUQJMTUKKyNkZWZpbmUgR0lDRF9Q
UElfU1RBUlQKKworZW51bSBzZ2lfZmlsdGVyIHsKKy8qCisgKiBGb3J3YXJkIHRoZSBpbnRlcnJ1
cHQgdG8gdGhlIENQVSBpbnRlcmZhY2VzIHNwZWNpZmllZCBpbiB0aGUKKyAqIENQVVRhcmdldExp
c3QgZmllbGQKKyAqLworCUdJQ0RfU0dJX0ZJTFRFUl9UT19MSVNUID0gMCwKKy8qCisgKiBGb3J3
YXJkIHRoZSBpbnRlcnJ1cHQgdG8gYWxsIENQVSBpbnRlcmZhY2VzIGV4Y2VwdCB0aGF0IG9mIHRo
ZQorICogcHJvY2Vzc29yIHRoYXQgcmVxdWVzdGVkIHRoZSBpbnRlcnJ1cHQuCisgKi8KKwlHSUNE
X1NHSV9GSUxURVJfVE9fT1RIRVJTLAorLyoKKyAqIEZvcndhcmQgdGhlIGludGVycnVwdCBvbmx5
IHRvIHRoZSBDUFUgaW50ZXJmYWNlIG9mIHRoZSBwcm9jZXNzb3IKKyAqIHRoYXQgcmVxdWVzdGVk
IHRoZSBpbnRlcnJ1cHQuCisgKi8KKwlHSUNEX1NHSV9GSUxURVJfVE9fU0VMRgorfTsKKworLyoK
KyAqIFNHSSBDbGVhci1QZW5kaW5nIFJlZ2lzdGVycywgR0lDRF9DUEVORFNHSVJuCisgKiBQcm92
aWRlIGEgY2xlYXItcGVuZGluZyBiaXQgZm9yIGVhY2ggc3VwcG9ydGVkIFNHSSBhbmQgc291cmNl
CisgKiBwcm9jZXNzb3IgY29tYmluYXRpb24uIFdoZW4gYSBwcm9jZXNzb3Igd3JpdGVzIGEgMSB0
byBhIGNsZWFyLXBlbmRpbmcKKyAqIGJpdCwgdGhlIHBlbmRpbmcgc3RhdGUgb2YgdGhlIGNvcnJl
c3BvbmRpbmcgU0dJIGZvciB0aGUgY29ycmVzcG9uZGluZworICogc291cmNlIHByb2Nlc3NvciBp
cyByZW1vdmVkLCBhbmQgbm8gbG9uZ2VyIHRhcmdldHMgdGhlIHByb2Nlc3NvcgorICogcGVyZm9y
bWluZyB0aGUgd3JpdGUuIFdyaXRpbmcgYSAwIGhhcyBubyBlZmZlY3QuIFJlYWRpbmcgYSBiaXQg
aWRlbnRpZmllcworICogd2hldGhlciB0aGUgU0dJIGlzIHBlbmRpbmcsIGZyb20gdGhlIGNvcnJl
c3BvbmRpbmcgc291cmNlIHByb2Nlc3Nvciwgb24KKyAqIHRoZSByZWFkaW5nIHByb2Nlc3Nvci4K
KyAqLworI2RlZmluZSBHSUNEX0NQRU5EU0dJUm4JCSgweDBGMTAgKyA0ICogKChuKSA+PiAyKSkK
KyNkZWZpbmUgR0lDRF9JX1BFUl9DUEVORFNHSVJuICAgNAorCisvKgorICogU0dJIFNldC1QZW5k
aW5nIFJlZ2lzdGVycywgR0lDRF9TUEVORFNHSVJuCisgKiBQcm92aWRlIGEgc2V0LXBlbmRpbmcg
Yml0IGZvciBlYWNoIHN1cHBvcnRlZCBTR0kgYW5kIHNvdXJjZSBwcm9jZXNzb3IKKyAqIGNvbWJp
bmF0aW9uLiBXaGVuIGEgcHJvY2Vzc29yIHdyaXRlcyBhIDEgdG8gYSBzZXQtcGVuZGluZyBiaXQs
IHRoZSBwZW5kaW5nCisgKiBzdGF0ZSBpcyBhcHBsaWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIFNH
SSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCisgKiBwcm9jZXNzb3IuIFdyaXRpbmcgYSAw
IGhhcyBubyBlZmZlY3QuIFJlYWRpbmcgYSBiaXQgaWRlbnRpZmllcyB3aGV0aGVyCisgKiB0aGUg
U0dJIGlzIHBlbmRpbmcsIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIHByb2Nlc3Nvciwg
b24gdGhlCisgKiByZWFkaW5nIHByb2Nlc3Nvci4KKyAqLworI2RlZmluZSBHSUNEX1NQRU5EU0dJ
Um4JCSgweDBGMjAgKyA0ICogKChuKSA+PiAyKSkKKyNkZWZpbmUgR0lDRF9JX1BFUl9TUEVORFNH
SVJuICAgNAorCisKKy8qCisgKiBDUFUgaW50ZXJmYWNlIHJlZ2lzdGVycy4gVW5pa3JhZnQgb25s
eSBzdXBwb3J0IHJ1biBvbiBub24tc2VjdXJlCisgKiBzbyB3ZSBqdXN0IGRlc2NyaWJlIG5vbi1z
ZWN1cmUgcmVnaXN0ZXJzLgorICovCisKKy8qIENQVSBJbnRlcmZhY2UgQ29udHJvbCBSZWdpc3Rl
ciAqLworI2RlZmluZSBHSUNDX0NUTFIJCTB4MDAwMAorI2RlZmluZSBHSUNDX0NUTFJfRU5BQkxF
CTB4MQorCisvKiBJbnRlcnJ1cHQgUHJpb3JpdHkgTWFzayBSZWdpc3RlciAqLworI2RlZmluZSBH
SUNDX1BNUgkJMHgwMDA0CisjZGVmaW5lIEdJQ0NfUE1SX1BSSU9fTUFYCTI1NQorCisvKiBCaW5h
cnkgUG9pbnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgR0lDQ19CUFIJCTB4MDAwOAorCisvKiBJbnRl
cnJ1cHQgQWNrbm93bGVkZ2UgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgR0lDQ19JQVIJCTB4MDAwQwor
I2RlZmluZSBHSUNDX0lBUl9JTlRJRF9NQVNLCTB4M0ZGCisjZGVmaW5lIEdJQ0NfSUFSX0lOVElE
X1NQVVJJT1VTCTEwMjMKKworLyogRW5kIG9mIEludGVycnVwdCBSZWdpc3RlciAqLworI2RlZmlu
ZSBHSUNDX0VPSVIJCTB4MDAxMAorCisvKiBSdW5uaW5nIFByaW9yaXR5IFJlZ2lzdGVyICovCisj
ZGVmaW5lIEdJQ0NfUlBSCQkweDAwMTQKKworLyogSGlnaGVzdCBQcmlvcml0eSBQZW5kaW5nIElu
dGVycnVwdCBSZWdpc3RlciAqLworI2RlZmluZSBHSUNDX0hQUElSCQkweDAwMTgKKworLyogQWxp
YXNlZCBCaW5hcnkgUG9pbnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgR0lDQ19BQlBSCQkweDAwMUMK
KworLyogQ1BVIEludGVyZmFjZSBJZGVudGlmaWNhdGlvbiBSZWdpc3RlciAqLworI2RlZmluZSBH
SUNDX0lJRFIJCTB4MDBGQworCisvKiBEZWFjdGl2YXRlIEludGVycnVwdCBSZWdpc3RlciAqLwor
I2RlZmluZSBHSUNDX0RJUgkJMHgxMDAwCisKKy8qCisgKiBBY2tub3dsZWRnaW5nIGlycSBlcXVh
bHMgcmVhZGluZyBHSUNDX0lBUiBhbHNvCisgKiBnZXQgdGhlIGludGVycnVwdCBJRCBhcyB0aGUg
c2lkZSBlZmZlY3QuCisgKi8KK3VpbnQzMl90IGdpY19hY2tfaXJxKHZvaWQpOworCisvKgorICog
d3JpdGUgdG8gR0lDQ19FT0lSIHRvIGluZm9ybSBjcHUgaW50ZXJmYWNlIGNvbXBsZXRhdGlvbgor
ICogb2YgaW50ZXJydXB0IHByb2Nlc3NpbmcuIElmIEdJQ0NfQ1RMUi5FT0ltb2RlIHNldHMgdG8g
MQorICogdGhpcyBmdW5jIGp1c3QgZ2V0cyBwcmlvcml0eSBkcm9wLgorICovCit2b2lkIGdpY19l
b2lfaXJxKHVpbnQzMl90IGlycSk7CisKKy8qCisgKiBGb3J3YXJkIHRoZSBTSUcgdG8gdGhlIENQ
VSBpbnRlcmZhY2VzIHNwZWNpZmllZCBpbiB0aGUKKyAqIHRhcmdldGxpc3QuIFRhcmdldGxpc3Qg
aXMgYSA4LWJpdCBiaXRtYXAgZm9yIDB+NyBDUFUuCisgKi8KK3ZvaWQgZ2ljX3NnaV9nZW5fdG9f
bGlzdCh1aW50MzJfdCBzZ2ludGlkLCB1aW50OF90IHRhcmdldGxpc3QpOworCisvKgorICogRm9y
d2FyZCB0aGUgU0dJIHRvIGFsbCBDUFUgaW50ZXJmYWNlcyBleGNlcHQgdGhhdCBvZiB0aGUKKyAq
IHByb2Nlc3NvciB0aGF0IHJlcXVlc3RlZCB0aGUgaW50ZXJydXB0LgorICovCit2b2lkIGdpY19z
Z2lfZ2VuX3RvX290aGVycyh1aW50MzJfdCBzZ2ludGlkKTsKKworLyoKKyAqIEZvcndhcmQgdGhl
IFNHSSBvbmx5IHRvIHRoZSBDUFUgaW50ZXJmYWNlIG9mIHRoZSBwcm9jZXNzb3IKKyAqIHRoYXQg
cmVxdWVzdGVkIHRoZSBpbnRlcnJ1cHQuCisgKi8KK3ZvaWQgZ2ljX3NnaV9nZW5fdG9fc2VsZih1
aW50MzJfdCBzZ2ludGlkKTsKKworLyoKKyAqIHNldCB0YXJnZXQgY3B1IGZvciBpcnEgaW4gZGlz
dHJpYnV0b3IsCisgKiBAdGFyZ2V0OiBiaXRtYXNrIHZhbHVlLCBiaXQgMSBpbmRpY2F0ZXMgdGFy
Z2V0IHRvCisgKiBjb3JyZXNwb25kaW5nIGNwdSBpbnRlcmZhY2UKKyAqLwordm9pZCBnaWNfc2V0
X2lycV90YXJnZXQodWludDMyX3QgaXJxLCB1aW50OF90IHRhcmdldCk7CisKKy8qIHNldCBwcmlv
cml0eSBmb3IgaXJxIGluIGRpc3RyaWJ1dG9yICovCit2b2lkIGdpY19zZXRfaXJxX3ByaW8odWlu
dDMyX3QgaXJxLCB1aW50OF90IHByaW9yaXR5KTsKKworLyoKKyAqIEVuYWJsZSBhbiBpcnEgaW4g
ZGlzdHJpYnV0b3IsIGVhY2ggaXJxIG9jY3VwaWVzIG9uZSBiaXQKKyAqIHRvIGNvbmZpZ3VyZSBp
biBjb3JyZXNwb25kaW5nIHJlZ2lzdG9yCisgKi8KK3ZvaWQgZ2ljX2VuYWJsZV9pcnEodWludDMy
X3QgaXJxKTsKKworLyoKKyAqIERpc2FibGUgYW4gaXJxIGluIGRpc3RyaWJ1dG9yLCBvbmUgYml0
IHJlc2VydmVkIGZvciBhbiBpcnEKKyAqIHRvIGNvbmZpZ3VyZSBpbiBjb3JyZXNwb25kaW5nIHJl
Z2lzdGVyCisgKi8KK3ZvaWQgZ2ljX2Rpc2FibGVfaXJxKHVpbnQzMl90IGlycSk7CisKKy8qCisg
KiBzZXQgcGVuZGluZyBzdGF0ZSBmb3IgYW4gaXJxIGluIGRpc3RyaWJ1dG9yLCBvbmUgYml0Cisg
KiByZXNlcnZlZCBmb3IgYW4gaXJxIHRvIGNvbmZpZ3VyZSBpbiBjb3JyZXNwb25kaW5nIHJlZ2lz
dGVyCisgKi8KK3ZvaWQgZ2ljX3NldF9pcnFfcGVuZGluZyh1aW50MzJfdCBpcnEpOworCisvKgor
ICogY2xlYXIgcGVuZGluZyBzdGF0ZSBmb3IgYW4gaXJxIGluIGRpc3RyaWJ1dG9yLCBvbmUgYml0
CisgKiByZXNlcnZlZCBmb3IgYW4gaXJxIHRvIGNvbmZpZ3VyZSBpbiBjb3JyZXNwb25kaW5nIHJl
Z2lzdGVyCisgKi8KK3ZvaWQgZ2ljX2NsZWFyX2lycV9wZW5kaW5nKHVpbnQzMl90IGlycSk7CisK
Ky8qCisgKiBpbnNwZWN0IHRoYXQgaWYgYW4gaXJxIGlzIGluIHBlbmRpbmcgc3RhdGUsIGV2ZXJ5
IGJpdAorICogaG9sZHMgdGhlIHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZyBpcnEKKyAqLwor
aW50IGdpY19pc19pcnFfcGVuZGluZyh1aW50MzJfdCBpcnEpOworCisvKiBzZXQgYWN0aXZlIHN0
YXRlIGZvciBhbiBpcnEgaW4gZGlzdHJpYnV0b3IgKi8KK3ZvaWQgZ2ljX3NldF9pcnFfYWN0aXZl
KHVpbnQzMl90IGlycSk7CisKKy8qIGNsZWFyIGFjdGl2ZSBzdGF0ZSBmb3IgYW4gaXJxIGluIGRp
c3RyaWJ1dG9yICovCit2b2lkIGdpY19jbGVhcl9pcnFfYWN0aXZlKHVpbnQzMl90IGlycSk7CisK
Ky8qCisgKiBpbnNwZWN0IHRoYXQgaWYgYW4gaXJxIGlzIGluIGFjdGl2ZSBzdGF0ZSwKKyAqIGV2
ZXJ5IGJpdCBob2xkcyB0aGUgdmFsdWUgZm9yIGFuIGlycQorICovCitpbnQgZ2ljX2lzX2lycV9h
Y3RpdmUodWludDMyX3QgaXJxKTsKKworLyogQ29uZmlnIGludGVycnVwdCB0cmlnZ2VyIHR5cGUg
Ki8KK3ZvaWQgZ2ljX3NldF9pcnFfdHlwZSh1aW50MzJfdCBpcnEsIGludCB0cmlnZ2VyKTsKKwor
LyogSW5pdGlhbGl6ZSBHSUN2MiBmcm9tIGRldmljZSB0cmVlICovCitpbnQgX2R0Yl9pbml0X2dp
Yyhjb25zdCB2b2lkICpmZHQpOworCisjZW5kaWYgLy9fX1BMQVRfQ01OX0FSTV9HSUNWMl9IX18K
ZGlmZiAtLWdpdCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsK
aW5kZXggMThlYWNhNC4uOWVjZTY3OCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vTWFrZWZpbGUudWsK
KysrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKQEAgLTE4LDYgKzE4LDcgQEAgTElCS1ZNUExBVF9B
U0lOQ0xVREVTLXkgICAgICAgICs9IC1JJChMSUJLVk1QTEFUX0JBU0UpL2luY2x1ZGUKIExJQktW
TVBMQVRfQVNJTkNMVURFUy15ICAgICAgICArPSAtSSQoVUtfUExBVF9DT01NT05fQkFTRSkvaW5j
bHVkZQogTElCS1ZNUExBVF9DSU5DTFVERVMteSAgICAgICAgICs9IC1JJChMSUJLVk1QTEFUX0JB
U0UpL2luY2x1ZGUKIExJQktWTVBMQVRfQ0lOQ0xVREVTLXkgICAgICAgICArPSAtSSQoVUtfUExB
VF9DT01NT05fQkFTRSkvaW5jbHVkZQorTElCS1ZNUExBVF9DSU5DTFVERVMtJChDT05GSUdfQVJD
SF9BUk1fNjQpICAgICAgICAgKz0gLUkkKFVLX1BMQVRfRFJJVkVSU19CQVNFKS9pbmNsdWRlCiAK
IExJQktWTVBMQVRfQVNGTEFHUyAgICAgICAgICAgICArPSAtREtWTVBMQVQKIExJQktWTVBMQVRf
Q0ZMQUdTICAgICAgICAgICAgICArPSAtREtWTVBMQVQKQEAgLTY2LDYgKzY3LDcgQEAgTElCS1ZN
UExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0Up
L2FybS9wc2NpX2FybTY0LlMKIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkg
Kz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vdGltZS5jfGNvbW1vbgogTElCS1ZNUExBVF9T
UkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS90
cmFwcy5jfGNvbW1vbgogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAk
KFVLX1BMQVRfRFJJVkVSU19CQVNFKS9vZncvZmR0LmN8Y29tbW9uCitMSUJLVk1QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9EUklWRVJTX0JBU0UpL2dpYy9naWMt
djIuY3xjb21tb24KIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChM
SUJLVk1QTEFUX0JBU0UpL2FybS9lbnRyeTY0LlMKIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19B
UkNIX0FSTV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2FybS9leGNlcHRpb25zLlMKIExJQktW
TVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2Fy
bS9wYWdldGFibGU2NC5TCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl0z-0001HT-Ff; Fri, 28 Jun 2019 07:09:45 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl0y-0001H6-IE
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:44 +0000
X-Inumbo-ID: b4420233-9973-11e9-8980-bc764e045a96
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTP
 id b4420233-9973-11e9-8980-bc764e045a96;
 Fri, 28 Jun 2019 07:09:43 +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 5E134C0A;
 Fri, 28 Jun 2019 00:09:43 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DF6943F706;
 Fri, 28 Jun 2019 00:11:31 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:21 +0800
Message-Id: <20190628070923.57304-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190628070923.57304-1-justin.he@arm.com>
References: <20190628070923.57304-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv5 4/6] plat/kvm: Implement intctrl
 APIs for Arm64
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
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>

QmVmb3JlIEdJQ3YyIGJlY29tZSByZWFkeSwgd2UgaGFkIG1hcmtlZCB0aGUgaW50Y3RybCBBUElz
IGFzIFRPRE8uCk5vdywgd2UgaGF2ZSBlbmFibGVkIHRoZSBHSUN2Miwgd2UgY2FuIGltcGxlbWVu
dCBpbnRjdHJsIEFQSXMgd2l0aApyZWxhdGVkIEdJQyBBUElzLgoKU2lnbmVkLW9mZi1ieTogV2Vp
IENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhl
QGFybS5jb20+Ci0tLQogcGxhdC9rdm0vYXJtL2ludGN0cmwuYyB8IDIwICsrKysrKysrKysrKysr
KystLS0tCiBwbGF0L2t2bS9hcm0vc2V0dXAuYyAgIHwgIDQgKysrKwogMiBmaWxlcyBjaGFuZ2Vk
LCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BsYXQva3Zt
L2FybS9pbnRjdHJsLmMgYi9wbGF0L2t2bS9hcm0vaW50Y3RybC5jCmluZGV4IGFjNjA0YTcuLjQw
MWIyYTMgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9pbnRjdHJsLmMKKysrIGIvcGxhdC9rdm0v
YXJtL2ludGN0cmwuYwpAQCAtMzEsMjQgKzMxLDM2IEBACiAgKgogICogVEhJUyBIRUFERVIgTUFZ
IE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KICAqLworI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgorI2luY2x1ZGUgPGt2bS9zZWN0aW9ucy5oPgogI2luY2x1ZGUgPGt2bS9p
bnRjdHJsLmg+CisjaW5jbHVkZSA8YXJtL2NwdS5oPgorI2luY2x1ZGUgPGFybS9pcnEuaD4KKyNp
bmNsdWRlIDxnaWMvZ2ljLXYyLmg+CisjaW5jbHVkZSA8a3ZtL2NvbmZpZy5oPgogCiB2b2lkIGlu
dGN0cmxfaW5pdCh2b2lkKQogewotCS8vIFRPIERPCisJaW50IHJldDsKKworCS8qIEluaXRpYWxp
emUgR0lDIGZyb20gRFRCICovCisJcmV0ID0gX2R0Yl9pbml0X2dpYyhfbGlia3ZtcGxhdF9jZmcu
ZHRiKTsKKwlpZiAocmV0KQorCQlVS19DUkFTSCgiSW5pdGlhbGl6ZSBHSUMgZnJvbSBEVEIgZmFp
bGVkLCByZXQ9JWRcbiIsIHJldCk7CisKIH0KIAogdm9pZCBpbnRjdHJsX2Fja19pcnEodW5zaWdu
ZWQgaW50IGlycSkKIHsKLQkvLyBUTyBETworCS8vTk9QCiB9CiAKIHZvaWQgaW50Y3RybF9tYXNr
X2lycSh1bnNpZ25lZCBpbnQgaXJxKQogewotCS8vIFRPIERPCisJZ2ljX2Rpc2FibGVfaXJxKGly
cSk7CiB9CiAKIHZvaWQgaW50Y3RybF9jbGVhcl9pcnEodW5zaWduZWQgaW50IGlycSkKIHsKLQkv
LyBUTyBETworCWdpY19lbmFibGVfaXJxKGlycSk7CiB9CmRpZmYgLS1naXQgYS9wbGF0L2t2bS9h
cm0vc2V0dXAuYyBiL3BsYXQva3ZtL2FybS9zZXR1cC5jCmluZGV4IDMwMWI1YTEuLmI4MTQ4Zjkg
MTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL2FybS9zZXR1cC5jCisrKyBiL3BsYXQva3ZtL2FybS9zZXR1
cC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8a3ZtL2NvbmZpZy5oPgogI2luY2x1ZGUg
PHVrL2Fzc2VydC5oPgogI2luY2x1ZGUgPGt2bS1hcm0vbW0uaD4KKyNpbmNsdWRlIDxrdm0vaW50
Y3RybC5oPgogI2luY2x1ZGUgPGFybS9jcHUuaD4KICNpbmNsdWRlIDx1ay9hcmNoL2xpbWl0cy5o
PgogCkBAIC0yMTQsNiArMjE1LDkgQEAgdm9pZCBfbGlia3ZtcGxhdF9zdGFydCh2b2lkICpkdGJf
cG9pbnRlcikKIAkvKiBJbml0aWFsaXplIG1lbW9yeSBmcm9tIERUQiAqLwogCV9pbml0X2R0Yl9t
ZW0oKTsKIAorCS8qIEluaXRpYWxpemUgaW50ZXJydXB0IGNvbnRyb2xsZXIgKi8KKwlpbnRjdHJs
X2luaXQoKTsKKwogCXVrX3ByX2luZm8oInBhZ2V0YWJsZSBzdGFydDogJXBcbiIsCiAJCSAgICh2
b2lkICopIF9saWJrdm1wbGF0X2NmZy5wYWdldGFibGUuc3RhcnQpOwogCXVrX3ByX2luZm8oIiAg
ICAgaGVhcCBzdGFydDogJXBcbiIsCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl16-0001Iw-Hn; Fri, 28 Jun 2019 07:09: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=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl15-0001IX-6F
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:51 +0000
X-Inumbo-ID: b773b9e6-9973-11e9-897c-d7eae76a4089
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id b773b9e6-9973-11e9-897c-d7eae76a4089;
 Fri, 28 Jun 2019 07:09:49 +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 AA15EED1;
 Fri, 28 Jun 2019 00:09:48 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 05D9B3F706;
 Fri, 28 Jun 2019 00:11:36 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:23 +0800
Message-Id: <20190628070923.57304-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190628070923.57304-1-justin.he@arm.com>
References: <20190628070923.57304-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv5 6/6] plat/common: Add a trap
 function to handle Arm64 irq trap
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Jianyong Wu <jianyong.wu@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogV2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+CgpBcyB3ZSBoYXZlIGltcGxlbWVudGVk
IHRoZSBHSUN2MiBpbnRlcnJ1cHQgY29udHJvbGxlciwgd2UKY2FuIGVuYWJsZSB0aGUgaXJxIHRy
YXAgZXhjZXB0aW9uIGhhbmRsZXIgaW4gZXhjZXB0aW9uIGVudHJ5LgoKU2lnbmVkLW9mZi1ieTog
V2VpIENoZW4gPHdlaS5jaGVuQGFybS5jb20+ClNpZ25lZC1vZmYtYnk6IEppYW55b25nIFd1IDxq
aWFueW9uZy53dUBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0u
Y29tPgotLS0KIHBsYXQvY29tbW9uL2FybS90cmFwcy5jICAgICAgICAgICB8ICA2ICsrKysrKwog
cGxhdC9kcml2ZXJzL2dpYy9naWMtdjIuYyAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysr
KysrKysrCiBwbGF0L2RyaXZlcnMvaW5jbHVkZS9naWMvZ2ljLXYyLmggfCAgMyArKysKIHBsYXQv
a3ZtL2FybS9leGNlcHRpb25zLlMgICAgICAgICB8IDEwICsrKysrKysrKy0KIDQgZmlsZXMgY2hh
bmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3BsYXQv
Y29tbW9uL2FybS90cmFwcy5jIGIvcGxhdC9jb21tb24vYXJtL3RyYXBzLmMKaW5kZXggNDMyMzVi
ZS4uYWQ5YThjMyAxMDA2NDQKLS0tIGEvcGxhdC9jb21tb24vYXJtL3RyYXBzLmMKKysrIGIvcGxh
dC9jb21tb24vYXJtL3RyYXBzLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KICNpbmNsdWRlIDx1ay9wcmludC5oPgogI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgorI2luY2x1
ZGUgPGdpYy9naWMtdjIuaD4KIAogc3RhdGljIGNvbnN0IGNoYXIgKmV4Y2VwdGlvbl9tb2Rlc1td
PSB7CiAJIlN5bmNocm9ub3VzIEFib3J0IiwKQEAgLTY4LDMgKzY5LDggQEAgdm9pZCB0cmFwX2Vs
MV9zeW5jKHN0cnVjdCBfX3JlZ3MgKnJlZ3MsIHVpbnQ2NF90IGZhcikKIAlkdW1wX3JlZ2lzdGVy
cyhyZWdzLCBmYXIpOwogCXVrcGxhdF9jcmFzaCgpOwogfQorCit2b2lkIHRyYXBfZWwxX2lycSh2
b2lkKQoreworCWdpY19oYW5kbGVfaXJxKCk7Cit9CmRpZmYgLS1naXQgYS9wbGF0L2RyaXZlcnMv
Z2ljL2dpYy12Mi5jIGIvcGxhdC9kcml2ZXJzL2dpYy9naWMtdjIuYwppbmRleCA5ZmU5ZTg0Li4y
YWFiMDFmIDEwMDY0NAotLS0gYS9wbGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jCisrKyBiL3BsYXQv
ZHJpdmVycy9naWMvZ2ljLXYyLmMKQEAgLTMxNCw2ICszMTQsMzAgQEAgc3RhdGljIHVpbnQzMl90
IGdpY19pcnFfdHJhbnNsYXRlKHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGh3X2lycSkKIAlyZXR1
cm4gLUVJTlZBTDsKIH0KIAordm9pZCBnaWNfaGFuZGxlX2lycSh2b2lkKQoreworCXVpbnQzMl90
IHN0YXQsIGlycTsKKworCWRvIHsKKwkJc3RhdCA9IGdpY19hY2tfaXJxKCk7CisJCWlycSA9IHN0
YXQgJiBHSUNDX0lBUl9JTlRJRF9NQVNLOworCisJCXVrX3ByX2luZm8oIlVuaWtyYWZ0OiBFTDEg
SVJRIyVkIHRyYXAgY2F1Z2h0XG4iLCBpcnEpOworCisJCS8qCisJCSAqIFRPRE86IEhhbmRsZSBJ
UEkmU0dJIGludGVycnVwdHMgaGVyZQorCQkgKi8KKwkJaWYgKGlycSA8IEdJQ19NQVhfSVJRKSB7
CisJCQlpc2IoKTsKKwkJCV91a3BsYXRfaXJxX2hhbmRsZSgodW5zaWduZWQgbG9uZylpcnEpOwor
CQkJZ2ljX2VvaV9pcnEoc3RhdCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWJyZWFrOworCX0g
d2hpbGUgKDEpOworfQorCiBzdGF0aWMgdm9pZCBnaWNfaW5pdF9kaXN0KHZvaWQpCiB7CiAJdWlu
dDMyX3QgdmFsLCBjcHVpZl9udW1iZXIsIGlycV9udW1iZXI7CmRpZmYgLS1naXQgYS9wbGF0L2Ry
aXZlcnMvaW5jbHVkZS9naWMvZ2ljLXYyLmggYi9wbGF0L2RyaXZlcnMvaW5jbHVkZS9naWMvZ2lj
LXYyLmgKaW5kZXggZTA0NTQyZi4uNzU2MWE0NiAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL2lu
Y2x1ZGUvZ2ljL2dpYy12Mi5oCisrKyBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL2dpYy9naWMtdjIu
aApAQCAtMzY0LDYgKzM2NCw5IEBAIGludCBnaWNfaXNfaXJxX2FjdGl2ZSh1aW50MzJfdCBpcnEp
OwogLyogQ29uZmlnIGludGVycnVwdCB0cmlnZ2VyIHR5cGUgKi8KIHZvaWQgZ2ljX3NldF9pcnFf
dHlwZSh1aW50MzJfdCBpcnEsIGludCB0cmlnZ2VyKTsKIAorLyogSGFuZGxlIElSUSBlbnRyeSAq
Lwordm9pZCBnaWNfaGFuZGxlX2lycSh2b2lkKTsKKwogLyogSW5pdGlhbGl6ZSBHSUN2MiBmcm9t
IGRldmljZSB0cmVlICovCiBpbnQgX2R0Yl9pbml0X2dpYyhjb25zdCB2b2lkICpmZHQpOwogCmRp
ZmYgLS1naXQgYS9wbGF0L2t2bS9hcm0vZXhjZXB0aW9ucy5TIGIvcGxhdC9rdm0vYXJtL2V4Y2Vw
dGlvbnMuUwppbmRleCA3MDRiZDBhLi45MjlkOTAwIDEwMDY0NAotLS0gYS9wbGF0L2t2bS9hcm0v
ZXhjZXB0aW9ucy5TCisrKyBiL3BsYXQva3ZtL2FybS9leGNlcHRpb25zLlMKQEAgLTE2Niw2ICsx
NjYsMTQgQEAgZWwxX3N5bmM6CiAJYmwgdHJhcF9lbDFfc3luYwogCUxFQVZFX1RSQVAgMQogCisu
YWxpZ24gNgorZWwxX2lycToKKwlFTlRFUl9UUkFQIDEKKwltc3IgZGFpZmNsciwgIyg4IHwgNCB8
IDEpCisJbW92IHgwLCBzcAorCWJsIHRyYXBfZWwxX2lycQorCUxFQVZFX1RSQVAgMQorCiAvKiBC
YWQgQWJvcnQgbnVtYmVycyAqLwogI2RlZmluZSBCQURfU1lOQyAgMAogI2RlZmluZSBCQURfSVJR
ICAgMQpAQCAtMjE2LDcgKzIyNCw3IEBAIEVOVFJZKHZlY3Rvcl90YWJsZSkKIAogCS8qIEN1cnJl
bnQgRXhjZXB0aW9uIGxldmVsIHdpdGggU1BfRUwxICovCiAJdmVjdG9yX2VudHJ5IGVsMV9zeW5j
CQkvKiBTeW5jaHJvbm91cyBFTDFoICAgICAgICovCi0JdmVjdG9yX2VudHJ5IGVsMV9pcnFfaW52
YWxpZAkvKiBJUlEgRUwxaCAgICAgICAgICAgICAgICovCisJdmVjdG9yX2VudHJ5IGVsMV9pcnEJ
CS8qIElSUSBFTDFoICAgICAgICAgICAgICAgKi8KIAl2ZWN0b3JfZW50cnkgZWwxX2ZpcV9pbnZh
bGlkCS8qIEZJUSBFTDFoICAgICAgICAgICAgICAgKi8KIAl2ZWN0b3JfZW50cnkgZWwxX2Vycm9y
X2ludmFsaWQJLyogRXJyb3IgRUwxaCAgICAgICAgICAgICAqLwogCi0tIAoyLjE3LjEKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 07:09:52 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 07:09: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 1hgl16-0001J1-KO; Fri, 28 Jun 2019 07:09: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=2xNz=U3=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1hgl15-0001IY-6X
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:09:51 +0000
X-Inumbo-ID: b5c7e842-9973-11e9-8a90-5f3b17c38e38
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id b5c7e842-9973-11e9-8a90-5f3b17c38e38;
 Fri, 28 Jun 2019 07:09:46 +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 0967DC0A;
 Fri, 28 Jun 2019 00:09:46 -0700 (PDT)
Received: from localhost.localdomain (unknown [10.169.40.54])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5A5F63F706;
 Fri, 28 Jun 2019 00:11:34 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Sharan.Santhanam@neclab.eu
Date: Fri, 28 Jun 2019 15:09:22 +0800
Message-Id: <20190628070923.57304-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20190628070923.57304-1-justin.he@arm.com>
References: <20190628070923.57304-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCHv5 5/6] plat/common: Add a platform
 API to get IRQ from device tree
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Felipe Huici <felipe.huici@neclab.eu>, Jia He <justin.he@arm.com>,
 Wei Chen <wei.chen@arm.com>, Kaly Xin <Kaly.Xin@arm.com>,
 Jianyong Wu <jianyong.wu@arm.com>, Florian Schmidt <florian.schmidt@neclab.eu>,
 Julien Grall <julien.grall@arm.com>, yuri.volchkov@neclab.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

RnJvbTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+CgpXaGVuIHdlIGdldCBpcnEg
bnVtYmVyIGZyb20gZGV2aWNlIHRyZWUsIGl0IGNvbnRhaW5zIG1vcmUgdGhhbgpvbmUgaXRlbXMs
IGxpa2UgaXJxIHR5cGUsIGhhcmR3YXJlIGlycSBudW1iZXIuIFRoaXMgZnVuY3Rpb24gd2lsbApo
ZWxwIHVzIHRvIHRyYW5zbGF0ZSB0aGVzZSBpdGVtcyBpbnRvIG9uZSB1bmlxdWUgcGxhdGZvcm0g
aXJxIG51bWJlci4KClNpZ25lZC1vZmYtYnk6IFdlaSBDaGVuIDx3ZWkuY2hlbkBhcm0uY29tPgpT
aWduZWQtb2ZmLWJ5OiBKaWFueW9uZyBXdSA8amlhbnlvbmcud3VAYXJtLmNvbT4KU2lnbmVkLW9m
Zi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2NvbW1vbi9pbmNsdWRl
L2dpY19mZHQuaCB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHBsYXQv
ZHJpdmVycy9naWMvZ2ljLXYyLmMgICAgIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2NvbW1vbi9pbmNsdWRlL2dpY19mZHQuaAoKZGlm
ZiAtLWdpdCBhL3BsYXQvY29tbW9uL2luY2x1ZGUvZ2ljX2ZkdC5oIGIvcGxhdC9jb21tb24vaW5j
bHVkZS9naWNfZmR0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwZjU2
NAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvZ2ljX2ZkdC5oCkBAIC0w
LDAgKzEsNDggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8K
Ky8qCisgKiBBdXRob3JzOiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4KKyAqCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTgsIEFybSBMdGQuLCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRI
SVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisg
Ki8KKworI2lmbmRlZiBfX1BMQVRfQ01OX0dJQ19GRFRfSF9fCisjZGVmaW5lIF9fUExBVF9DTU5f
R0lDX0ZEVF9IX18KKworLyoqCisgKiBHZXQgYW4gaW50ZXJydXB0IG51bWJlciBvZiBnaXZlbiBp
bmRleCBmcm9tIGRldmljZSB0cmVlCisgKiBAcGFyYW0gZmR0IERldmljZSB0cmVlIGJsb2IKKyAq
IEBwYXJhbSBub2Rlb2Zmc2V0IGRldmljZSBub2RlIG9mZnNldAorICogQHBhcmFtIGluZGV4IHdo
aWNoIGludGVycnVwdAorICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8g
dmFsdWUgb24gZXJyb3JzCisgKi8KK3VpbnQzMl90IGdpY19nZXRfaXJxX2Zyb21fZHRiKGNvbnN0
IHZvaWQgKmZkdCwgaW50IG5vZGVvZmZzZXQsIGludCBpbmRleCwKKwkJCQl1aW50MzJfdCAqb3V0
X3R5cGUpOworCisjZW5kaWYgLyogX19QTEFUX0NNTl9HSUNfRkRUX0hfXyAqLwpkaWZmIC0tZ2l0
IGEvcGxhdC9kcml2ZXJzL2dpYy9naWMtdjIuYyBiL3BsYXQvZHJpdmVycy9naWMvZ2ljLXYyLmMK
aW5kZXggOTMyMTE1NS4uOWZlOWU4NCAxMDA2NDQKLS0tIGEvcGxhdC9kcml2ZXJzL2dpYy9naWMt
djIuYworKysgYi9wbGF0L2RyaXZlcnMvZ2ljL2dpYy12Mi5jCkBAIC00OSwxMCArNDksMTIgQEAK
IC8qIE1heCBDUFUgaW50ZXJmYWNlIGZvciBHSUN2MiAqLwogI2RlZmluZSBHSUNfTUFYX0NQVUlG
CQk4CiAKLS8qIFNQSSBpbnRlcnJ1cHQgYmFzZSBJRCAqLworLyogU1BJIGludGVycnVwdCBkZWZp
bml0aW9ucyAqLworI2RlZmluZSBHSUNfU1BJX1RZUEUJCTAKICNkZWZpbmUgR0lDX1NQSV9CQVNF
CQkzMgogCi0vKiBQUEkgaW50ZXJydXB0IGJhc2UgSUQgKi8KKy8qIFBQSSBpbnRlcnJ1cHQgZGVm
aW5pdGlvbnMgKi8KKyNkZWZpbmUgR0lDX1BQSV9UWVBFCQkxCiAjZGVmaW5lIEdJQ19QUElfQkFT
RQkJMTYKIAogLyogTWF4IHN1cHBvcnQgaW50ZXJydXB0IG51bWJlciBmb3IgR0lDdjIgKi8KQEAg
LTYzLDYgKzY1LDcgQEAgc3RhdGljIHVpbnQ2NF90IGdpY19kaXN0X3NpemUsIGdpY19jcHVpZl9z
aXplOwogCiAjZGVmaW5lIEdJQ19ESVNUX1JFRyhyKQkoKHZvaWQgKikoZ2ljX2Rpc3RfYWRkciAr
IChyKSkpCiAjZGVmaW5lIEdJQ19DUFVfUkVHKHIpCSgodm9pZCAqKShnaWNfY3B1aWZfYWRkciAr
IChyKSkpCisjZGVmaW5lIElSUV9UWVBFX01BU0sJMHgwMDAwMDAwZgogCiBzdGF0aWMgY29uc3Qg
Y2hhciAqIGNvbnN0IGdpY19kZXZpY2VfbGlzdFtdID0gewogCSJhcm0sY29ydGV4LWExNS1naWMi
LApAQCAtMjg4LDYgKzI5MSwyOSBAQCB2b2lkIGdpY19zZXRfaXJxX3R5cGUodWludDMyX3QgaXJx
LCBpbnQgdHJpZ2dlcikKIAl3cml0ZV9naWNkMzIoR0lDRF9JQ0ZHUihpcnEpLCB2YWwpOwogfQog
CitzdGF0aWMgdWludDMyX3QgZ2ljX2lycV90cmFuc2xhdGUodWludDMyX3QgdHlwZSwgdWludDMy
X3QgaHdfaXJxKQoreworCXVpbnQzMl90IGlycTsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2Ug
R0lDX1NQSV9UWVBFOgorCQlpcnEgPSBod19pcnEgKyBHSUNfU1BJX0JBU0U7CisJCWlmIChpcnEg
Pj0gR0lDX1NQSV9CQVNFICYmIGlycSA8IF9fTUFYX0lSUSkKKwkJCXJldHVybiBpcnE7CisJCWJy
ZWFrOworCWNhc2UgR0lDX1BQSV9UWVBFOgorCQlpcnEgPSBod19pcnEgKyBHSUNfUFBJX0JBU0U7
CisJCWlmIChpcnEgPj0gR0lDX1BQSV9CQVNFICYmIGlycSA8IEdJQ19TUElfQkFTRSkKKwkJCXJl
dHVybiBpcnE7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXVrX3ByX3dhcm4oIkludmFsaWQgSVJR
IHR5cGUgWyVkXVxuIiwgdHlwZSk7CisJfQorCisJdWtfcHJfZXJyKCJpcnEgaXMgb3V0IG9mIHJh
bmdlXG4iKTsKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwogc3RhdGljIHZvaWQgZ2ljX2luaXRfZGlz
dCh2b2lkKQogewogCXVpbnQzMl90IHZhbCwgY3B1aWZfbnVtYmVyLCBpcnFfbnVtYmVyOwpAQCAt
NDA3LDMgKzQzMywyMiBAQCBpbnQgX2R0Yl9pbml0X2dpYyhjb25zdCB2b2lkICpmZHQpCiAKIAly
ZXR1cm4gMDsKIH0KKwordWludDMyX3QgZ2ljX2dldF9pcnFfZnJvbV9kdGIoY29uc3Qgdm9pZCAq
ZmR0LCBpbnQgbm9kZW9mZnNldCwgaW50IGluZGV4LAorCQkJCXVpbnQzMl90ICpvdXRfdHlwZSkK
K3sKKwlmZHQzMl90ICpwcm9wOworCXVpbnQzMl90IHR5cGUsIGh3aXJxOworCWludCByZXQsIHNp
emU7CisKKwlyZXQgPSBmZHRfZ2V0X2ludGVycnVwdChmZHQsIG5vZGVvZmZzZXQsIGluZGV4LCAm
c2l6ZSwgJnByb3ApOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXR5cGUg
PSBmZHQzMl90b19jcHUocHJvcFswXSk7CisJaHdpcnEgPSBmZHQzMl90b19jcHUocHJvcFsxXSk7
CisKKwkqb3V0X3R5cGUgPSBmZHQzMl90b19jcHUocHJvcFsyXSkgJiBJUlFfVFlQRV9NQVNLOwor
CisJcmV0dXJuIGdpY19pcnFfdHJhbnNsYXRlKHR5cGUsIGh3aXJxKTsKK30KLS0gCjIuMTcuMQoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Jun 28 09:09:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 28 Jun 2019 09:09: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 1hgmt4-0002li-9F; Fri, 28 Jun 2019 09:09: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=q4v/=U3=arm.com=marc.zyngier@srs-us1.protection.inumbo.net>)
 id 1hgksj-00016I-UH
 for minios-devel@lists.xenproject.org; Fri, 28 Jun 2019 07:01:13 +0000
X-Inumbo-ID: 818a88e2-9972-11e9-be92-270196258ba0
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 818a88e2-9972-11e9-be92-270196258ba0;
 Fri, 28 Jun 2019 07:01: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 DAFD2344;
 Fri, 28 Jun 2019 00:01:08 -0700 (PDT)
Received: from big-swifty.misterjones.org (unknown [172.31.20.19])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B01E13F706;
 Fri, 28 Jun 2019 00:02:56 -0700 (PDT)
Date: Fri, 28 Jun 2019 08:00:59 +0100
Message-ID: <867e96p51w.wl-marc.zyngier@arm.com>
From: Marc Zyngier <marc.zyngier@arm.com>
To: Julien Grall <Julien.Grall@arm.com>
In-Reply-To: <0f1b84ae-2ef3-145e-d440-d6ad3fe5a909@arm.com>
References: <20190418065213.81978-1-justin.he@arm.com>
 <20190418065213.81978-7-justin.he@arm.com>
 <ae7f210a-52b5-04d1-a50f-b6d663a0911f@arm.com>
 <AM7PR08MB5510CCAB76BDD4BFD9110142F4FC0@AM7PR08MB5510.eurprd08.prod.outlook.com>
 <0f1b84ae-2ef3-145e-d440-d6ad3fe5a909@arm.com>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 EasyPG/1.0.0 Emacs/26
 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO)
Organization: ARM Ltd
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
X-Mailman-Approved-At: Fri, 28 Jun 2019 09:09:41 +0000
Subject: Re: [Minios-devel] [UNIKRAFT PATCHv2 6/7] plat/common: Add a
 platform API to get IRQ from device tree
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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>, "Justin He
 \(Arm Technology China\)" <Justin.He@arm.com>,
 "Wei Chen \(Arm Technology China\)" <Wei.Chen@arm.com>,
 "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@arm.com>,
 "Jianyong Wu \(Arm Technology China\)" <Jianyong.Wu@arm.com>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Florian Schmidt <florian.schmidt@neclab.eu>,
 "Sharan.Santhanam@neclab.eu" <Sharan.Santhanam@neclab.eu>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd <nd@arm.com>,
 "yuri.volchkov@neclab.eu" <yuri.volchkov@neclab.eu>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

T24gRnJpLCAyOCBKdW4gMjAxOSAwNjoyNjozNiArMDEwMCwKSnVsaWVuIEdyYWxsIDxKdWxpZW4u
R3JhbGxAYXJtLmNvbT4gd3JvdGU6Cj4gCj4gKCsgTWFyYyBaLikKPiAKPiBIaSwKPiAKPiBPbiAy
OC8wNi8yMDE5IDAzOjM5LCBKaWFueW9uZyBXdSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIHdyb3Rl
Ogo+ID4+PiArCj4gPj4+ICtpbnQgZ2ljX2dldF9pcnFfZnJvbV9kdGIoY29uc3Qgdm9pZCAqZmR0
LCBpbnQgbm9kZW9mZnNldCwgaW50IGluZGV4KQo+ID4+PiArewo+ID4+PiArCWZkdDMyX3QgKnBy
b3A7Cj4gPj4+ICsJaW50IHR5cGUsIGh3aXJxLCBzaXplOwo+ID4+PiArCWludCByZXQ7Cj4gPj4+
ICsKPiA+Pj4gKwlyZXQgPSBmZHRfZ2V0X2ludGVycnVwdChmZHQsIG5vZGVvZmZzZXQsIGluZGV4
LCAmc2l6ZSwgJnByb3ApOwo+ID4+PiArCWlmIChyZXQgPCAwKQo+ID4+PiArCQlyZXR1cm4gLUVJ
TlZBTDsKPiA+Pj4gKwo+ID4+PiArCXR5cGUgPSBmZHQzMl90b19jcHUocHJvcFswXSk7Cj4gPj4+
ICsJaHdpcnEgPSBmZHQzMl90b19jcHUocHJvcFsxXSk7Cj4gPj4+ICsKPiA+Pj4gKwlyZXR1cm4g
Z2ljX2lycV90cmFuc2xhdGUodHlwZSwgaHdpcnEpOyB9Cj4gPj4+Cj4gPj4KPiA+PiBIb3cgZG8g
eW91IHBsYW4gdG8gaGFuZGxlIHByb3BbM10gKGkuZSBsZXZlbC1zZW5zaXRpdmUsIGVkZ2UtdHJp
Z2dlcmVkKT8KPiA+IAo+ID4gRXIsIGFzIGZhciBhcyBJIGtub3csIHdlIGNhbiBnZXQgaXJxIG51
bWJlciBqdXN0IGJ5IGludGVycnVwdCB0eXBlIGFuZCBpdHMgaGFyZHdhcmUgbnVtYmVyIGluIGR0
Cj4gPiBBbmQgbm8gbmVlZCB0byBjYXJlIGFib3V0IGl0cyB0cmlnZ2VyIHR5cGUuIFNvIHdlIG5l
Z2xlY3QgdGhlIHByb3BbM10gaGVyZS4KPiAKPiBXaHkgZG9uJ3QgeW91IG5lZWQgdG8gY2FyZSBh
Ym91dCB0cmlnZ2VyIHR5cGU/IFBlciB0aGUgc3BlYywgdGhlIGluaXRpYWwgCj4gdmFsdWUgb2Yg
R0lDRF9JQ0ZHUm4gaXMgSU1QTEVNRU5UQVRJT04gREVGSU5FRC4gSSBhbSBhY3R1YWxseSBub3Qg
Cj4gY29udmluY2VkIHRoZSByZWdpc3RlciB3aWxsIGNvbnRhaW4gdGhlIGNvcnJlY3QgdmFsdWUg
YXQgYm9vdC4KPiAKPiBBdCBsZWFzdCBpbiBYZW4gKGFuZCBMaW51eD8pIHdlIGFyZSBzZXR0aW5n
IHRoZSB0eXBlIHdoZW4gc2V0dGluZyB0aGUgCj4gSVJRIHVwLiBNYXliZSBNYXJjIGNhbiBjb25m
aXJtIGhlcmU/CgpQcm9ncmFtbWluZyBHSUNEX0lDRkdSbiBpcyBkZWZpbml0ZWx5IG5vdCBvcHRp
b25hbC4gTm90aGluZyBndWFyYW50ZWVzCnRoYXQgdGhlIHJlZ2lzdGVyIHN0YXRlIG1hdGNoZXMg
dGhlIHNpZ25hbGxpbmcgdXNlZCBieSB0aGUKZW5kLXBvaW50LiBIb3cgY291bGQgdGhlIEdJQyBr
bm93IHdoYXQgaXMgY29ubmVjdGVkIHRvIGl0PwoKVGhhbmtzLAoKCU0uCgotLSAKSmF6eiBpcyBu
b3QgZGVhZCwgaXQganVzdCBzbWVsbHMgZnVubnkuCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:02:54 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:02: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 1hh7Nr-0001XQ-V6; Sat, 29 Jun 2019 07:02:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hh7Nq-0001XL-Ji
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:02:50 +0000
X-Inumbo-ID: e4a806ce-9a3b-11e9-8682-c3f0fd1871fe
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e4a806ce-9a3b-11e9-8682-c3f0fd1871fe;
 Sat, 29 Jun 2019 07:02:44 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C44971053A9;
 Sat, 29 Jun 2019 09:02:43 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id y9yrbBs3gfwc; Sat, 29 Jun 2019 09:02:43 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id A1BB9105285;
 Sat, 29 Jun 2019 09:02:43 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 09:02:43
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619070315.9765-1-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <e7a46cd1-e1dc-add8-221e-36f1af118cda@neclab.eu>
Date: Sat, 29 Jun 2019 09:02:42 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619070315.9765-1-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 0/8] Unikraft 9P API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGV5IENocmlzdGlhbiwKCnRoYW5rcyBhIGxvdCBmb3IgdGhpcyBsaWJyYXJ5IGFuZCBwYXRjaCBz
ZXJpZXMuIDlQIGlzIGEgcmVhbGx5IGltcG9ydGFudCAKZmVhdHVyZSwgZXNwZWNpYWxseSBmb3Ig
b3VyIEtWTSB0YXJnZXRzLiBBcyBmYXIgYXMgSSBjb3VsZCBzZWUsIHRoZSAKcGF0Y2hlcyBhcmUg
aW4gYSBnb29kIHNoYXBlLiBJIGhhdmUganVzdCBhIHNvbWUgY29tbWVudHMgcmVnYXJkaW5nIHNv
bWUgCm1pbm9yIGRldGFpbHMuIEkgcHV0IHRob3NlIGlubGluZSB3aXRoaW4gZWFjaCBwYXRjaC4K
ClRoYW5rcyBhIGxvdCwKClNpbW9uCgpPbiAxOS4wNi4xOSAwOTowMywgQ3Jpc3RpYW4gQmFudSB3
cm90ZToKPiBUaGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2VzIHRoZSA5UCBBUEksIHdoaWNoIGFj
dHMgYXMgYSBnZW5lcmljCj4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIDlQIHRyYW5zcG9ydCBkcml2
ZXJzICh4ZW4sIHZpcnRpbykgYW5kCj4gdGhlIDlwZnMgaW1wbGVtZW50YXRpb24uIFRoZSBBUEkg
bWF5IGFsc28gYmUgdXNlZCBkaXJlY3RseSBieQo+IHVzZXJzLgo+IAo+IFRoZSB0cmFuc3BvcnQg
ZHJpdmVycyByZWdpc3RlciB0aGVtc2VsdmVzIHdpdGggdGhlIEFQSSB1c2luZyB0aGUKPiBkZWZp
bml0aW9ucyBmcm9tIDlwZGV2X3RyYW5zLmggYW5kIDlwZGV2X2NvcmUuaCwgYW5kIGltcGxlbWVu
dAo+IHRoZSBjb25uZWN0LCBkaXNjb25uZWN0IGFuZCByZXF1ZXN0IGNhbGxiYWNrcy4KPiAKPiBU
aGUgcHJvdG9jb2wgY29yZSB0eXBlcyBhbmQgY29uc3RhbnRzIGNhbiBiZSBmb3VuZCBpbiA5cF9j
b3JlLmgsCj4gYW5kIGEgaGVscGVyIGludGVyZmFjZSB0byB0aGUgb3BlcmF0aW9ucyBzdXBwb3J0
ZWQgYnkgdGhlIDlQCj4gcHJvdG9jb2wgY2FuIGJlIGZvdW5kIGluIDlwLmguCj4gCj4gVGhlcmUg
YXJlIHR3byBraW5kcyBvZiBvYmplY3RzIHdoaWNoIG11c3QgYmUgbWFuYWdlZCBjYXJlZnVsbHkK
PiBieSB0aGUgQVBJOiB0aGUgcmVxdWVzdCBhbmQgdGhlIGZpZCAoaGFuZGxlIHRvIGEgZmlsZXN5
c3RlbQo+IGVudGl0eSBzdWNoIGFzIGEgZmlsZSBvciBkaXJlY3RvcnksIHNpbWlsYXIgdG8gYSBm
aWxlCj4gZGVzY3JpcHRvcikuIFRoZSBtYW5hZ2VtZW50IG9mIGJvdGggb2YgdGhvc2UgaXMgYWJz
dHJhY3RlZCBpbnRvCj4gOXByZXEuaCBhbmQgOXBmaWQuaCByZXNwZWN0aXZlbHkuCj4gCj4gQ3Jp
c3RpYW4gQmFudSAoOCk6Cj4gICAgbGliL3VrOXA6IEFkZCA5UCBsaWJyYXJ5IHNrZWxldG9uCj4g
ICAgbGliL3VrOXA6IEFkZCA5UCB0cmFuc3BvcnQgcmVnaXN0cmF0aW9uCj4gICAgbGliL3VrOXA6
IEFkZCA5UCBwcm90b2NvbCBjb3JlIGRlZmluaXRpb25zCj4gICAgbGliL3VrOXA6IEFkZCA5UCBy
ZXF1ZXN0cyBhYnN0cmFjdGlvbgo+ICAgIGxpYi91azlwOiBBZGQgOVAgZGV2aWNlIGltcGxlbWVu
dGF0aW9uCj4gICAgbGliL3VrOXA6IEFkZCA5UCBmaWQgYWJzdHJhY3Rpb24KPiAgICBsaWIvdWs5
cDogQWRkIDlQIGhlbHBlciBBUEkKPiAgICBsaWIvdWs5cDogQ2x1bmsgZmlkcyBvbiBmaWQgcmVs
ZWFzZQo+IAo+ICAgbGliL0NvbmZpZy51ayAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAg
IGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gICBsaWIvdWs5cC85
cC5jICAgICAgICAgICAgICAgICAgICAgfCA0MjMgKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysKPiAgIGxpYi91azlwLzlwZGV2LmMgICAgICAgICAgICAgICAgICB8IDQ2MCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvdWs5cC85cGRldl90cmFucy5jICAgICAgICAg
ICAgfCAgODYgKysrKysrCj4gICBsaWIvdWs5cC85cGZpZC5jICAgICAgICAgICAgICAgICAgfCAg
NzEgKysrKysKPiAgIGxpYi91azlwLzlwcmVxLmMgICAgICAgICAgICAgICAgICB8IDU1NCArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3VrOXAvQ29uZmlnLnVr
ICAgICAgICAgICAgICAgIHwgICA2ICsKPiAgIGxpYi91azlwL01ha2VmaWxlLnVrICAgICAgICAg
ICAgICB8ICAxMCArCj4gICBsaWIvdWs5cC9leHBvcnRzeW1zLnVrICAgICAgICAgICAgfCAgNDMg
KysrCj4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwLmggICAgICAgICAgfCAyNjAgKysrKysrKysr
KysrKysrKysrCj4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaCAgICAgfCAyNDkgKysr
KysrKysrKysrKysrKysKPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXYuaCAgICAgICB8IDIx
MSArKysrKysrKysrKysrKysKPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oICB8
IDE4OSArKysrKysrKysrKysrCj4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgg
fCAxMDQgKysrKysrKwo+ICAgbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oICAgICAgIHwgMTE1
ICsrKysrKysrCj4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmggICAgICAgfCAyNjAgKysr
KysrKysrKysrKysrKysrCj4gICAxNyBmaWxlcyBjaGFuZ2VkLCAzMDQzIGluc2VydGlvbnMoKykK
PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC85cC5jCj4gICBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3VrOXAvOXBkZXYuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwLzlwZGV2
X3RyYW5zLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC85cGZpZC5jCj4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXByZXEuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi91azlwL0NvbmZpZy51awo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL01ha2VmaWxl
LnVrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvZXhwb3J0c3ltcy51awo+ICAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXAuaAo+ICAgY3JlYXRlIG1vZGUg
MTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5oCj4gICBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3VrOXAvaW5jbHVkZS91ay85cGRldl9jb3JlLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWs5cC9pbmNsdWRlL3VrLzlwZmlkLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9p
bmNsdWRlL3VrLzlwcmVxLmgKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:03:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:03:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hh7OI-0001Z5-2u; Sat, 29 Jun 2019 07:03: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=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hh7OH-0001Z0-2a
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:03:17 +0000
X-Inumbo-ID: f59f82a4-9a3b-11e9-8808-cb8b1182d035
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f59f82a4-9a3b-11e9-8808-cb8b1182d035;
 Sat, 29 Jun 2019 07:03:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4DCF9F2024;
 Sat, 29 Jun 2019 09:03:12 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id s0uLZrzmUvfo; Sat, 29 Jun 2019 09:03:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1D690F2022;
 Sat, 29 Jun 2019 09:03:06 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 09:03:05
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-2-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <117d0375-8ba3-d1f8-b696-aa9c1cf905ef@neclab.eu>
Date: Sat, 29 Jun 2019 09:03:04 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619070315.9765-2-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/8] lib/uk9p: Add 9P 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, 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>

T24gMTkuMDYuMTkgMDk6MDMsIENyaXN0aWFuIEJhbnUgd3JvdGU6Cj4gQWRkIGxpYnVrOXAgc2tl
bGV0b24gYW5kIHJlZ2lzdGVyIGl0IHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLgo+IAo+IFNpZ25l
ZC1vZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gLS0tCj4gICBsaWIv
Q29uZmlnLnVrICAgICAgICB8IDEgKwo+ICAgbGliL01ha2VmaWxlLnVrICAgICAgfCAxICsKPiAg
IGxpYi91azlwL0NvbmZpZy51ayAgIHwgNiArKysrKysKPiAgIGxpYi91azlwL01ha2VmaWxlLnVr
IHwgNCArKysrCj4gICA0IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKPiAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9Db25maWcudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdWs5cC9NYWtlZmlsZS51awo+IAo+IGRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVrIGIvbGli
L0NvbmZpZy51awo+IGluZGV4IDgyMmM2MjRmZDU0OC4uOWZlODM3MjAzY2RhIDEwMDY0NAo+IC0t
LSBhL2xpYi9Db25maWcudWsKPiArKysgYi9saWIvQ29uZmlnLnVrCj4gQEAgLTQ3LDMgKzQ3LDQg
QEAgc291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtidXMv
Q29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgo+ICAgc291cmNl
ICJsaWIvdWtuZXRkZXYvQ29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi91azlwL0NvbmZpZy51ayIK
PiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnVrIGIvbGliL01ha2VmaWxlLnVrCj4gaW5kZXgg
ZDA2ODM3ZjE0MzM4Li5iMWQ0NGQ0MGFiOTMgMTAwNjQ0Cj4gLS0tIGEvbGliL01ha2VmaWxlLnVr
Cj4gKysrIGIvbGliL01ha2VmaWxlLnVrCj4gQEAgLTI0LDMgKzI0LDQgQEAgJChldmFsICQoY2Fs
bCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQo+ICAgJChldmFsICQo
Y2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQo+ICAgJChldmFs
ICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xpc3QpKQo+ICAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtuZXRkZXYp
KQo+ICskKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91azlw
KSkKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvQ29uZmlnLnVrIGIvbGliL3VrOXAvQ29uZmlnLnVr
Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmExNThmNzVkZWMz
Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWs5cC9Db25maWcudWsKPiBAQCAtMCwwICsx
LDYgQEAKPiArbWVudWNvbmZpZyBMSUJVSzlQCgpJZiB5b3UgZG8gbm90IGhhdmUgYW55IGNvbmZp
Z3VyYXRpb24gcGFyYW1ldGVycywganVzdCB0YWtlIGNvbmZpZyAKaW5zdGVhZCBvZiBtZW51Y29u
ZmlnLiBXZSBkbyBub3QgbmVlZCB0aGUgc3ViIG1lbnUgb3B0aW9uIGZvciB0aGlzIGNhc2UuCgo+
ICsJYm9vbCAidWs5cDogOXAgY2xpZW50IGFuZCBmaWxlc3lzdGVtIgoKSHVtLCBtYXliZSB5b3Ug
cmVtb3ZlICJhbmQgZmlsZXN5c3RlbSIgYW5kIGNhbGwgaXQganVzdCAidWs5cDogOXAgCmNsaWVu
dCIuIEl0IG1heSBtYWtlIHBlb3BsZSBleHBlY3QgdGhhdCB0aGlzIGxpYnJhcnkgaW1wbGVtZW50
cyBhbHNvIGEgClZGU2NvcmUgaW50ZWdyYXRpb24uIFlvdSBoYXZlIGEgZmlsZXN5c3RlbSBpbnRl
Z3JhdGlvbiB0aGF0IHlvdSBhcmUgCmdvaW5nIHRvIGludGVncmF0ZSBsYXRlcj8gSW4gc3VjaCBh
IGNhc2UsIEkgdGhpbmsgYmVzdCBwcmFjdGljZSB3b3VsZCBiZSAKdG8gY2hhbmdlIHRoZSBuYW1l
IHRvZ2V0aGVyIHdpdGggdGhvc2UgcGF0Y2hlcyBsYXRlci4KCj4gKwlkZWZhdWx0IG4KPiArCXNl
bGVjdCBMSUJVS0FMTE9DCj4gKwlzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZFX0xJQkMKPiArCXNl
bGVjdCBMSUJVS0RFQlVHCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwL01ha2VmaWxlLnVrIGIvbGli
L3VrOXAvTWFrZWZpbGUudWsKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw
MDAwMC4uZmE3NTQ0NDA1OThjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91azlwL01ha2Vm
aWxlLnVrCj4gQEAgLTAsMCArMSw0IEBACj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlidWs5
cCwkKENPTkZJR19MSUJVSzlQKSkpCj4gKwo+ICtDSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJ
CSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUKPiArQ1hYSU5DTFVERVMtJChDT05GSUdfTElC
VUs5UCkJCSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUKPiAKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:10:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:10: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 1hh7VO-0002Ee-M0; Sat, 29 Jun 2019 07:10:38 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hh7VN-0002EZ-LK
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:10:37 +0000
X-Inumbo-ID: fbf32e32-9a3c-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id fbf32e32-9a3c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 07:10:33 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 643561053A9;
 Sat, 29 Jun 2019 09:10:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id KGt1HRzqDssw; Sat, 29 Jun 2019 09:10:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3DED7105285;
 Sat, 29 Jun 2019 09:10:32 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 09:10:31
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-3-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <371c1c6a-1a9a-e396-b233-02711944557e@neclab.eu>
Date: Sat, 29 Jun 2019 09:10:31 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619070315.9765-3-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/8] lib/uk9p: Add 9P transport
 registration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

T24gMTkuMDYuMTkgMDk6MDMsIENyaXN0aWFuIEJhbnUgd3JvdGU6Cj4gVGhpcyBwYXRjaCBpbnRy
b2R1Y2VzIHRoZSA5UCB0cmFuc3BvcnQgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgQVBJLgoKTWF5
YmUgeW91IGNvdWxkIGFsc28gZXhwbGFpbiB0aGUgY29uY2VwdCBvZiBoYXZpbmcgbXVsdGlwbGUg
b2YgdGhlbSBhbmQgCmRlc2NyaWJlIHdoYXQgYSBkZWZhdWx0IHRyYW5zcG9ydCBpcyBhbmQgd2hh
dCBpdCBpcyBmb3IuIEluIGNhc2UgeW91IAprZWVwIGl0LgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBD
cmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgo+IC0tLQo+ICAgbGliL3VrOXAvOXBkZXZf
dHJhbnMuYyAgICAgICAgICAgIHwgIDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
PiAgIGxpYi91azlwL01ha2VmaWxlLnVrICAgICAgICAgICAgICB8ICAgMiArCj4gICBsaWIvdWs5
cC9leHBvcnRzeW1zLnVrICAgICAgICAgICAgfCAgIDMgKysKPiAgIGxpYi91azlwL2luY2x1ZGUv
dWsvOXBkZXZfdHJhbnMuaCB8IDEwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi91azlwLzlwZGV2X3RyYW5zLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdWs5cC9leHBvcnRzeW1zLnVrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5j
bHVkZS91ay85cGRldl90cmFucy5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwLzlwZGV2X3Ry
YW5zLmMgYi9saWIvdWs5cC85cGRldl90cmFucy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwMDAwMDAuLjYwYjhhMjMwY2JmMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s
aWIvdWs5cC85cGRldl90cmFucy5jCj4gQEAgLTAsMCArMSw4MiBAQAo+ICsvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IENyaXN0
aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoK
PiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICog
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4g
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiAr
ICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4g
QU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHN0
cmluZy5oPgo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+
Cj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiArI2luY2x1ZGUgPHVrLzlwZGV2X3RyYW5zLmg+
Cj4gKwo+ICtzdGF0aWMgVUtfTElTVF9IRUFEKHVrXzlwZGV2X3RyYW5zX2xpc3QpOwo+ICsKPiAr
aW50IHVrXzlwZGV2X3RyYW5zX3JlZ2lzdGVyKHN0cnVjdCB1a185cGRldl90cmFucyAqdHJhbnMp
Cj4gK3sKPiArCVVLX0FTU0VSVCh0cmFucyk7Cj4gKwlVS19BU1NFUlQodHJhbnMtPm5hbWUpOwo+
ICsJVUtfQVNTRVJUKHRyYW5zLT5hKTsKPiArCj4gKwl1a19saXN0X2FkZF90YWlsKCZ0cmFucy0+
X2xpc3QsICZ1a185cGRldl90cmFuc19saXN0KTsKPiArCXVrX3ByX2luZm8oIlJlZ2lzdGVyZWQg
dHJhbnNwb3J0ICVzXG4iLCB0cmFucy0+bmFtZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr
Cj4gK2ludCB1a185cGRldl90cmFuc19ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCB1
a185cGRldl90cmFucyAqKnRyYW5zKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnQ7
Cj4gKwo+ICsJdWtfbGlzdF9mb3JfZWFjaF9lbnRyeSh0LCAmdWtfOXBkZXZfdHJhbnNfbGlzdCwg
X2xpc3QpIHsKPiArCQlpZiAoIXN0cmNtcCh0LT5uYW1lLCBuYW1lKSkgewo+ICsJCQkqdHJhbnMg
PSB0Owo+ICsJCQlyZXR1cm4gMDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIC1FTk9ERVY7
Cj4gK30KPiArCj4gK2ludCB1a185cGRldl90cmFuc19kZWZhdWx0KHN0cnVjdCB1a185cGRldl90
cmFucyAqKnRyYW5zKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnQ7Cj4gKwo+ICsJ
dWtfbGlzdF9mb3JfZWFjaF9lbnRyeSh0LCAmdWtfOXBkZXZfdHJhbnNfbGlzdCwgX2xpc3QpIHsK
PiArCQlpZiAodC0+aXNfZGVmYXVsdCkgewo+ICsJCQkqdHJhbnMgPSB0Owo+ICsJCQlyZXR1cm4g
MDsKPiArCQl9Cj4gKwl9CgpNYXliZSB5b3Ugd2FudCB0byBzdG9yZSBpbnRlcm5hbGx5IHRvIHRo
ZSBsaWJyYXJ5IGFuIGV4dHJhIHBvaW50ZXIgdGhhdCAKcG9pbnRzIHRvIHRoZSBjdXJyZW50IGRl
ZmF1bHQgdHJhbnNwb3J0LiBUaGVuIHlvdSB3b3VsZCBub3QgbmVlZCB0aGlzIApib29sZWFuIHNj
aGVtZSBhbmQgdG8gdHJhdmVyc2UgdGhlIGxpc3QuCgo+ICsKPiArCXJldHVybiAtRU5PREVWOwo+
ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi91azlwL01ha2VmaWxlLnVrIGIvbGliL3VrOXAvTWFrZWZp
bGUudWsKPiBpbmRleCBmYTc1NDQ0MDU5OGMuLmIxMDcxYTBlN2QzYyAxMDA2NDQKPiAtLS0gYS9s
aWIvdWs5cC9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi91azlwL01ha2VmaWxlLnVrCj4gQEAgLTIs
MyArMiw1IEBAICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlidWs5cCwkKENPTkZJR19MSUJVSzlQ
KSkpCj4gICAKPiAgIENJTkNMVURFUy0kKENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBf
QkFTRSkvaW5jbHVkZQo+ICAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChM
SUJVSzlQX0JBU0UpL2luY2x1ZGUKPiArCj4gK0xJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9C
QVNFKS85cGRldl90cmFucy5jCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwL2V4cG9ydHN5bXMudWsg
Yi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwMDAwMDAuLjQ1ZjQ4N2RhMmZmZgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWs5
cC9leHBvcnRzeW1zLnVrCj4gQEAgLTAsMCArMSwzIEBACj4gK3VrXzlwZGV2X3RyYW5zX3JlZ2lz
dGVyCj4gK3VrXzlwZGV2X3RyYW5zX2J5X25hbWUKPiArdWtfOXBkZXZfdHJhbnNfZGVmYXVsdAo+
IGRpZmYgLS1naXQgYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmggYi9saWIvdWs5
cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4
IDAwMDAwMDAwMDAwMC4uYTBjNmQyNTIzNjFjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91
azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaAo+IEBAIC0wLDAgKzEsMTAxIEBACj4gKy8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9y
czogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0
IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0
cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsg
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiAr
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJ
RklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19VS185UERFVl9UUkFOU19f
Cj4gKyNkZWZpbmUgX19VS185UERFVl9UUkFOU19fCj4gKwo+ICsjaW5jbHVkZSA8c3RkYm9vbC5o
Pgo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiAr
ZXh0ZXJuICJDIiB7Cj4gKyNlbmRpZgo+ICsKPiArLyoqIEEgc3RydWN0dXJlIHVzZWQgdG8gZGVz
Y3JpYmUgYSB0cmFuc3BvcnQuICovCj4gK3N0cnVjdCB1a185cGRldl90cmFucyB7Cj4gKwkvKgo+
ICsJICogVHJhbnNwb3J0IG5hbWUgKGUuZy4gInZpcnRpbyIsICJ4ZW4iKS4gVGhpcyBmaWVsZCBp
cyByZXNlcnZlZCBmb3IKPiArCSAqIGZ1dHVyZSB1c2UsIHdoZW4gbXVsdGlwbGUgdHJhbnNwb3J0
IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUKPiArCSAqIHNhbWUgcGxhdGZvcm0uCj4gKwkg
Ki8KCldoYXQgaXMgYSBjb21tb24gY2FzZSB3aGVyZSB5b3UgaGF2ZSBtdWx0aXBsZSB0cmFuc3Bv
cnRzPyBJcyBpdCBsaWtlIAptdWx0aXBsZSBzaGFyZWQgbW91bnQgcG9pbnRzPwpJIGFtIHdvbmRl
cmluZyBpZiB3ZSBuZWVkIHRoZSBhYnN0cmFjdGlvbiBvZiBtdWx0aXBsZSB0cmFuc3BvcnRzLgoK
PiArCWNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmFtZTsKPiArCS8q
IENhbiB0aGUgdHJhbnNwb3J0IGJlIHVzZWQgYXMgYSBkZWZhdWx0IG9uZT8gKi8KPiArCWJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZhdWx0Owo+ICsJLyogQWxs
b2NhdG9yIHVzZWQgZm9yIGRldmljZXMgd2hpY2ggdXNlIHRoaXMgdHJhbnNwb3J0IGxheWVyLiAq
Lwo+ICsJc3RydWN0IHVrX2FsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICphOwo+ICsJLyog
QGludGVybmFsIEVudHJ5IGluIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0cmFuc3BvcnRzLiAqLwo+
ICsJc3RydWN0IHVrX2xpc3RfaGVhZCAgICAgICAgICAgICAgICAgICAgIF9saXN0Owo+ICt9Owo+
ICsKPiArLyoqCj4gKyAqIEFkZHMgYSB0cmFuc3BvcnQgdG8gdGhlIGF2YWlsYWJsZSB0cmFuc3Bv
cnRzIGxpc3QgZm9yIFVuaWtyYWZ0IDlQIERldmljZXMuCj4gKyAqIFRoaXMgc2hvdWxkIGJlIGNh
bGxlZCBvbmNlIHBlciBkcml2ZXIgKG9uY2UgZm9yIHZpcnRpbywgb25jZSBmb3IgeGVuLCBldGMu
KS4KPiArICoKPiArICogQHBhcmFtIHRyYW5zCj4gKyAqICAgUG9pbnRlciB0byB0aGUgdHJhbnNw
b3J0IHN0cnVjdHVyZS4KPiArICogQHJldHVybgo+ICsgKiAgIC0gKDApOiBTdWNjZXNzZnVsLgo+
ICsgKiAgIC0gKDwgMCk6IEZhaWxlZCB0byByZWdpc3RlciB0aGUgdHJhbnNwb3J0IGxheWVyLgo+
ICsgKi8KPiAraW50IHVrXzlwZGV2X3RyYW5zX3JlZ2lzdGVyKHN0cnVjdCB1a185cGRldl90cmFu
cyAqdHJhbnMpOwo+ICsKPiArLyoqCj4gKyAqIExvb2tzIHVwIGEgdHJhbnNwb3J0IGxheWVyIGJ5
IGl0cyBuYW1lLgo+ICsgKgo+ICsgKiBAcGFyYW0gbmFtZQo+ICsgKiAgIFRoZSB0cmFuc3BvcnQg
bGF5ZXIgbmFtZS4KPiArICogQHBhcmFtIHRyYW5zCj4gKyAqICAgV2hlcmUgdG8gc3RvcmUgdGhl
IHBvaW50ZXIgdG8gdGhlIGZvdW5kIHRyYW5zcG9ydCBzdHJ1Y3R1cmUuCj4gKyAqIEByZXR1cm4K
PiArICogICAtICgtRU5PRU5UKTogTm8gdHJhbnNwb3J0IHdpdGggdGhlIGdpdmVuIG5hbWUuCj4g
KyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCj4gKyAqLwo+ICtpbnQgdWtfOXBkZXZfdHJhbnNfYnlf
bmFtZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKip0cmFucyk7Cj4g
Kwo+ICsvKioKPiArICogR2V0cyB0aGUgZGVmYXVsdCB0cmFuc3BvcnQgbGF5ZXIuCj4gKyAqCj4g
KyAqIEBwYXJhbSB0cmFucwo+ICsgKiAgIFdoZXJlIHRvIHN0b3JlIHRoZSBwb2ludGVyIHRvIHRo
ZSBmb3VuZCB0cmFuc3BvcnQgc3RydWN0dXJlLgo+ICsgKiBAcmV0dXJuCj4gKyAqICAgLSAoLUVO
T0VOVCk6IE5vIGRlZmF1bHQgdHJhbnNwb3J0IGZvdW5kLgoKSSBzYXcgdGhhdCB5b3VyIGZ1bmN0
aW9uIHJldHVybnMgLUVOT0RFVi4gVGhpcyBkZXNjcmlwdGlvbiBpcyAKbWlzbWF0Y2hpbmcuIDst
KQoKPiArICogICAtICgwKTogU3VjY2Vzc2Z1bC4KPiArICovCj4gK2ludCB1a185cGRldl90cmFu
c19kZWZhdWx0KHN0cnVjdCB1a185cGRldl90cmFucyAqKnRyYW5zKTsKCkRvIHlvdSBldmVyIGV4
cGVjdCB0byByZXR1cm4gYSBkaWZmZXJlbnQgZXJyb3IgY29kZT8gV2hhdCBhYm91dCAKcmV0dXJu
aW5nIHRoZSBwb2ludGVyIChpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggYW4gYXJndW1lbnQpIGFu
ZCBOVUxMIGluIAplcnJvciBjYXNlPyBXZSBoYWQgYSBzaW1pbGFyIEFQSSBkZWNpc2lvbiBpbiB1
a2FsbG9jIAoodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSkgYW5kIHVrc2NoZWQsIHNvIGl0IHdvdWxk
IGZpdCBoZXJlLgoKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsK
PiArI2VuZGlmIC8qIF9fVUtfOVBERVZfVFJBTlNfXyAqLwo+IAoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:11:24 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:11: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 1hh7W8-0002GB-PP; Sat, 29 Jun 2019 07:11:24 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hh7W7-0002G6-Gk
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:11:23 +0000
X-Inumbo-ID: 18aa60d6-9a3d-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 18aa60d6-9a3d-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 07:11:21 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8A583F2024;
 Sat, 29 Jun 2019 09:11:20 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Ay-quuSIsLKl; Sat, 29 Jun 2019 09:11:20 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 53809F2022;
 Sat, 29 Jun 2019 09:11:14 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 09:11:13
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-4-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <5078865d-73f1-2b64-dfad-cb27bbc7a430@neclab.eu>
Date: Sat, 29 Jun 2019 09:11:12 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619070315.9765-4-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 3/8] lib/uk9p: Add 9P protocol
 core definitions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGV5IENocmlzdGlhbiwKCndoZXJlIGRpZCB5b3UgZ2V0IHlvdXIgOVBGUyBwcm90b2NvbCBzcGVj
aWZpY2F0aW9uIGZyb20/IEkgd2FzIHdvbmRlcmluZyAKaWYgeW91IGRlcml2ZWQgeW91ciBuYW1l
cywgY29uc3RhbnRzIGFuZCBBUEkgZnVuY3Rpb24gZnJvbSB0aGVyZS4gTWF5YmUgCnlvdSB3YW50
IHRvIGFkZCBhIGNvbW1lbnQgd2l0aCB0aGUgcmVmZXJlbmNlIHdpdGhpbiBvbmUgb2YgdGhlIGhl
YWRlcnMuCgpPbiAxOS4wNi4xOSAwOTowMywgQ3Jpc3RpYW4gQmFudSB3cm90ZToKPiBUaGlzIHBh
dGNoIGFkZHMgdGhlIDlQIHByb3RvY29sIGNvcmUgZGVmaW5pdGlvbnMgZm9yIHRoZSBzdHJ1Y3R1
cmVzIGl0Cj4gdXNlcyBhbmQgdGhlIHdpcmUgZm9ybWF0IHJlcXVpcmVkLgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gLS0tCj4gICBsaWIvdWs5
cC9pbmNsdWRlL3VrLzlwX2NvcmUuaCB8IDI0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKPiAgIDEgZmlsZSBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKQo+ICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5oCj4gCj4gZGlm
ZiAtLWdpdCBhL2xpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5oIGIvbGliL3VrOXAvaW5jbHVk
ZS91ay85cF9jb3JlLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAw
MC4uOGYyY2RmNmIyYTY2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91azlwL2luY2x1ZGUv
dWsvOXBfY29yZS5oCj4gQEAgLTAsMCArMSwyNDkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50
aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBDcmlzdGlhbiBCYW51
IDxjcmlzdGJAZ21haWwuY29tPgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZl
cnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsg
Kgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4g
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9m
IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAq
IFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVku
Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1VLXzlQX0NPUkVfXwo+ICsjZGVmaW5lIF9fVUtfOVBf
Q09SRV9fCj4gKwo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+CgpZb3Ugc2hvdWxkIGFsc28gaW5jbHVk
ZSB0aGUgaW50ZWdlciBkZWZpbml0aW9ucyAodWludDMyX3QsIGV0Yy4pIGhlcmUgCmJlY2F1c2Ug
eW91IGFyZSB1c2luZyB0aGVtIGluIHRoaXMgZmlsZS4KCj4gKwo+ICsjaWZkZWYgX19jcGx1c3Bs
dXMKPiArZXh0ZXJuICJDIiB7Cj4gKyNlbmRpZgo+ICsKPiArLyoqCj4gKyAqIDlQIHJlcXVlc3Qg
dHlwZXMuCj4gKyAqLwo+ICtlbnVtIHVrXzlwX3R5cGUgewo+ICsJVUtfOVBfVFZFUlNJT04gICAg
ICAgICAgPSAxMDAsCj4gKwlVS185UF9SVkVSU0lPTiwKPiArCVVLXzlQX1RBVVRIICAgICAgICAg
ICAgID0gMTAyLAo+ICsJVUtfOVBfUkFVVEgsCj4gKwlVS185UF9UQVRUQUNIICAgICAgICAgICA9
IDEwNCwKPiArCVVLXzlQX1JBVFRBQ0gsCj4gKwlVS185UF9URVJST1IgICAgICAgICAgICA9IDEw
NiwKPiArCVVLXzlQX1JFUlJPUiwKPiArCVVLXzlQX1RGTFVTSCAgICAgICAgICAgID0gMTA4LAo+
ICsJVUtfOVBfUkZMVVNILAo+ICsJVUtfOVBfVFdBTEsgICAgICAgICAgICAgPSAxMTAsCj4gKwlV
S185UF9SV0FMSywKPiArCVVLXzlQX1RPUEVOICAgICAgICAgICAgID0gMTEyLAo+ICsJVUtfOVBf
Uk9QRU4sCj4gKwlVS185UF9UQ1JFQVRFICAgICAgICAgICA9IDExNCwKPiArCVVLXzlQX1JDUkVB
VEUsCj4gKwlVS185UF9UUkVBRCAgICAgICAgICAgICA9IDExNiwKPiArCVVLXzlQX1JSRUFELAo+
ICsJVUtfOVBfVFdSSVRFICAgICAgICAgICAgPSAxMTgsCj4gKwlVS185UF9SV1JJVEUsCj4gKwlV
S185UF9UQ0xVTksgICAgICAgICAgICA9IDEyMCwKPiArCVVLXzlQX1JDTFVOSywKPiArCVVLXzlQ
X1RSRU1PVkUgICAgICAgICAgID0gMTIyLAo+ICsJVUtfOVBfUlJFTU9WRSwKPiArCVVLXzlQX1RT
VEFUICAgICAgICAgICAgID0gMTI0LAo+ICsJVUtfOVBfUlNUQVQsCj4gKwlVS185UF9UV1NUQVQg
ICAgICAgICAgICA9IDEyNiwKPiArCVVLXzlQX1JXU1RBVCwKPiArfTsKPiArCj4gKy8qKgo+ICsg
KiA5UCB2YWx1ZXMgb2YgYSBxaWQudHlwZS4KPiArICovCj4gK2VudW0gdWtfOXBfcWlkX3R5cGUg
ewo+ICsJVUtfOVBfUVRESVIgICAgICAgICAgICAgPSAweDgwLAo+ICsJVUtfOVBfUVRBUFBFTkQg
ICAgICAgICAgPSAweDQwLAo+ICsJVUtfOVBfUVRFWENMICAgICAgICAgICAgPSAweDIwLAo+ICsJ
VUtfOVBfUVRNT1VOVCAgICAgICAgICAgPSAweDIwLAo+ICsJVUtfOVBfUVRBVVRIICAgICAgICAg
ICAgPSAweDA4LAo+ICsJVUtfOVBfUVRUTVAgICAgICAgICAgICAgPSAweDA0LAo+ICsJVUtfOVBf
UVRTWU1MSU5LICAgICAgICAgPSAweDAyLAo+ICsJVUtfOVBfUVRMSU5LICAgICAgICAgICAgPSAw
eDAxLAo+ICsJVUtfOVBfUVRGSUxFICAgICAgICAgICAgPSAweDAwLAo+ICt9OwoKQXJlIHRoZXNl
IHZhbHVlcyB0cmVhdGVkIGFzIGJpdHMsIG1lYW5pbmcgdGhhdCB5b3UgY2FuIGhhdmUgbXVsdGlw
bGUgb2YgCnRoZW0gYml0d2lzZS1PUmVkIGluIGEgdWtfOXBfcWlkX3R5cGUgZmllbGQ/IFNlZSBt
eSBuZXh0IGNvbW1lbnQsIHRvby4KCj4gKwo+ICsvKioKPiArICogOVAgcGVybWlzc2lvbiBiaXRz
Lgo+ICsgKi8KPiArZW51bSB1a185cF9wZXJtIHsKPiArCVVLXzlQX0RNRElSICAgICAgICAgICAg
ID0gMHg4MDAwMDAwMCwKPiArCVVLXzlQX0RNQVBQRU5EICAgICAgICAgID0gMHg0MDAwMDAwMCwK
PiArCVVLXzlQX0RNRVhDTCAgICAgICAgICAgID0gMHgyMDAwMDAwMCwKPiArCVVLXzlQX0RNTU9V
TlQgICAgICAgICAgID0gMHgxMDAwMDAwMCwKPiArCVVLXzlQX0RNQVVUSCAgICAgICAgICAgID0g
MHgwODAwMDAwMCwKPiArCVVLXzlQX0RNVE1QICAgICAgICAgICAgID0gMHgwNDAwMDAwMCwKPiAr
CVVLXzlQX0RNU1lNTElOSyAgICAgICAgID0gMHgwMjAwMDAwMCwKPiArCVVLXzlQX0RNTElOSyAg
ICAgICAgICAgID0gMHgwMTAwMDAwMCwKPiArCVVLXzlQX0RNREVWSUNFICAgICAgICAgID0gMHgw
MDgwMDAwMCwKPiArCVVLXzlQX0RNTkFNRURQSVBFICAgICAgID0gMHgwMDIwMDAwMCwKPiArCVVL
XzlQX0RNU09DS0VUICAgICAgICAgID0gMHgwMDEwMDAwMCwKPiArCVVLXzlQX0RNU0VUVUlEICAg
ICAgICAgID0gMHgwMDA4MDAwMCwKPiArCVVLXzlQX0RNU0VUR0lEICAgICAgICAgID0gMHgwMDA0
MDAwMCwKPiArCVVLXzlQX0RNU0VUVlRYICAgICAgICAgID0gMHgwMDAxMDAwMCwKPiArfTsKClVz
dWFsbHksIHdlIGRlZmluZWQgYml0cyBhbmQgZmxhZ3Mgd2l0aCBtYWNyb3MgYW5kIHVzZWQgZW51
bXMgd2hlbiB5b3UgCmhhbmQtb3ZlciBqdXN0IGEgc2luZ2xlIHZhbHVlLgoKPiArCj4gKy8qKgo+
ICsgKiA5UCBvcGVuIG1vZGUgYml0cy4KPiArICovCj4gK2VudW0gdWtfOXBfb3Blbl9tb2RlIHsK
PiArCVVLXzlQX09SRUFEICAgICAgICAgICAgID0gMHgwMCwKPiArCVVLXzlQX09XUklURSAgICAg
ICAgICAgID0gMHgwMSwKPiArCVVLXzlQX09SRFdSICAgICAgICAgICAgID0gMHgwMiwKPiArCVVL
XzlQX09FWEVDICAgICAgICAgICAgID0gMHgwMywKPiArCVVLXzlQX09UUlVOQyAgICAgICAgICAg
ID0gMHgxMCwKPiArCVVLXzlQX09SRVhFQyAgICAgICAgICAgID0gMHgyMCwKPiArCVVLXzlQX09S
Q0xPU0UgICAgICAgICAgID0gMHg0MCwKPiArCVVLXzlQX09BUFBFTkQgICAgICAgICAgID0gMHg4
MCwKPiArCVVLXzlQX09FWENMICAgICAgICAgICAgID0gMHgxMDAwLAo+ICt9OwoKU2FtZSBoZXJl
LgoKPiArCj4gKy8qKgo+ICsgKiA5UCBxaWQuCj4gKyAqLwo+ICtzdHJ1Y3QgdWtfOXBfcWlkIHsK
PiArCXVpbnQ4X3QgICAgICAgICAgICAgICAgIHR5cGU7Cj4gKwl1aW50MzJfdCAgICAgICAgICAg
ICAgICB2ZXJzaW9uOwo+ICsJdWludDY0X3QgICAgICAgICAgICAgICAgcGF0aDsKPiArfTsKPiAr
Cj4gKy8qKgo+ICsgKiA5UCBzdHJpbmcuCj4gKyAqLwo+ICtzdHJ1Y3QgdWtfOXBfc3RyIHsKPiAr
CXVpbnQxNl90ICAgICAgICAgICAgICAgIHNpemU7Cj4gKwljaGFyICAgICAgICAgICAgICAgICAg
ICAqZGF0YTsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBDaGVjayBpZiBhIDlQIHN0cmluZyBpcyBl
cXVhbCB0byBhIGdpdmVuIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCj4gKyAqCj4gKyAqIEBwYXJh
bSBzCj4gKyAqICAgOVAgc3RyaW5nLgo+ICsgKiBAcGFyYW0gcAo+ICsgKiAgIE51bGwtdGVybWlu
YXRlZCBzdHJpbmcuCj4gKyAqIEByZXR1cm4KPiArICogICAxIGlmIGVxdWFsLCAwIG90aGVyd2lz
ZS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IHVrXzlwX3N0cl9lcXVhbChjb25zdCBzdHJ1
Y3QgdWtfOXBfc3RyICpzLCBjb25zdCBjaGFyICpwKQo+ICt7Cj4gKwlyZXR1cm4gc3RybGVuKHAp
ID09IHMtPnNpemUgJiYgIXN0cm5jbXAocy0+ZGF0YSwgcCwgcy0+c2l6ZSk7Cj4gK30KPiArCj4g
Ky8qKgo+ICsgKiBJbml0aWFsaXplIGEgOVAgc3RyaW5nIGZyb20gYSBnaXZlbiBudWxsLXRlcm1p
bmF0ZWQgc3RyaW5nLgo+ICsgKgo+ICsgKiBAcGFyYW0gcwo+ICsgKiAgIDlQIHN0cmluZy4KPiAr
ICogQHBhcmFtIHAKPiArICogICBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgo+ICsgKi8KPiArc3Rh
dGljIGlubGluZSB2b2lkIHVrXzlwX3N0cl9pbml0KHN0cnVjdCB1a185cF9zdHIgKnMsIGNvbnN0
IGNoYXIgKnApCj4gK3sKPiArCWlmICghcCkgewo+ICsJCXMtPnNpemUgPSAwOwo+ICsJCXJldHVy
bjsKPiArCX0KPiArCj4gKwlzLT5zaXplID0gc3RybGVuKHApOwo+ICsJcy0+ZGF0YSA9IChjaGFy
ICopcDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIDlQIHN0YXQgc3RydWN0dXJlLgo+ICsgKi8KPiAr
c3RydWN0IHVrXzlwX3N0YXQgewo+ICsJdWludDE2X3QgICAgICAgICAgICAgICAgc2l6ZTsKPiAr
CXVpbnQxNl90ICAgICAgICAgICAgICAgIHR5cGU7Cj4gKwl1aW50MzJfdCAgICAgICAgICAgICAg
ICBkZXY7Cj4gKwlzdHJ1Y3QgdWtfOXBfcWlkICAgICAgICBxaWQ7Cj4gKwl1aW50MzJfdCAgICAg
ICAgICAgICAgICBtb2RlOwo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgYXRpbWU7Cj4gKwl1
aW50MzJfdCAgICAgICAgICAgICAgICBtdGltZTsKPiArCXVpbnQ2NF90ICAgICAgICAgICAgICAg
IGxlbmd0aDsKPiArCXN0cnVjdCB1a185cF9zdHIgICAgICAgIG5hbWU7Cj4gKwlzdHJ1Y3QgdWtf
OXBfc3RyICAgICAgICB1aWQ7Cj4gKwlzdHJ1Y3QgdWtfOXBfc3RyICAgICAgICBnaWQ7Cj4gKwlz
dHJ1Y3QgdWtfOXBfc3RyICAgICAgICBtdWlkOwo+ICsJc3RydWN0IHVrXzlwX3N0ciAgICAgICAg
ZXh0ZW5zaW9uOwo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgbl91aWQ7Cj4gKwl1aW50MzJf
dCAgICAgICAgICAgICAgICBuX2dpZDsKPiArCXVpbnQzMl90ICAgICAgICAgICAgICAgIG5fbXVp
ZDsKPiArfTsKCk91dCBvZiBjdXJpb3NpdHk6IERvZXMgOXAgaGFzIHNvbWV0aGluZyBsaWtlIHBv
dGVudGlhbCBkaWZmZXJlbmNlIG9mIAplbmRpYW5lc3Mgb24gdGhlIHdpcmUgYW5kIHRoZSBob3N0
PzsgSSBtZWFuIHNvbWV0aGluZyBzaW1pbGFyIHRvIHdoYXQgCnlvdSBmaW5kIGluIG5ldHdvcmtp
bmcgcHJvdG9jb2xzLgpJZiB0aGlzIGlzIHRoZSBjYXNlLCBpdCBtYXkgbWFrZSBzZW5zZSB0byBh
ZGQgYSBUT0RPIGNvbW1lbnQgdGhhdCB3ZSBhcmUgCm5vdCBzdXBwb3J0aW5nIHRoaXMgY3VycmVu
dGx5LgoKPiArCj4gKy8qKgo+ICsgKiBJbml0aWFsaXplIGEgOVAgc3RhdCBzdHJ1Y3R1cmUgdGhh
dCB3b24ndCBtb2RpZnkgYW55IGZpZWxkcyBpZiBzZW50IHdpdGggYQo+ICsgKiBXU1RBVCBtZXNz
YWdlLCBieSBzZXR0aW5nIGFsbCBpbnRlZ2VyIGZpZWxkcyB0byB+MCBhbmQgYWxsIHN0cmluZyBm
aWVsZHMgdG8KPiArICogZW1wdHkgc3RyaW5ncy4KPiArICoKPiArICogQHBhcmFtIHN0YXQKPiAr
ICogICBUaGUgOVAgc3RhdCBzdHJ1Y3R1cmUuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHZvaWQg
dWtfOXBfc3RhdF9pbml0KHN0cnVjdCB1a185cF9zdGF0ICpzdGF0KQo+ICt7CgpDYW4geW91IGFk
ZCBhbiBhc3NlcnRpb24gdG8gY2hlY2sgdGhhdCBzdGF0ICE9IE5VTEw/Cgo+ICsJbWVtc2V0KHN0
YXQsIH4wLCBzaXplb2Yoc3RydWN0IHVrXzlwX3N0YXQpKTsKPiArCXN0YXQtPm5hbWUuc2l6ZSA9
IDA7Cj4gKwlzdGF0LT51aWQuc2l6ZSA9IDA7Cj4gKwlzdGF0LT5naWQuc2l6ZSA9IDA7Cj4gKwlz
dGF0LT5tdWlkLnNpemUgPSAwOwo+ICsJc3RhdC0+ZXh0ZW5zaW9uLnNpemUgPSAwOwo+ICt9Cj4g
Kwo+ICsvKioKPiArICogTm8gdGFnLCB1c2VkIGJ5IHRoZSBUdmVyc2lvbi9SdmVyc2lvbiBwYWly
IG9mIHJlcXVlc3QvcmVwbHkgbWVzc2FnZXMuCj4gKyAqLwo+ICsjZGVmaW5lIFVLXzlQX05PVEFH
ICAgICAgICAgICAgICAgICAgICBVSU5UMTZfTUFYCgpSZW1lbWJlciB0byBpbmNsdWRlIHRoZSBo
ZWFkZXIgdGhhdCBkZWZpbmVzIHRoZSBsaW1pdHMuCgo+ICsKPiArLyoqCj4gKyAqIE1heGltdW0g
YXZhaWxhYmxlIHRhZyBmb3IgdXNlLgo+ICsgKiBVS185UF9OT1RBRyAofjApIGlzIHJlc2VydmVk
IGJ5IHRoZSA5UCBSRkMgZm9yIHJlcHJlc2VudGluZyBubyB0YWcuCj4gKyAqLwo+ICsjZGVmaW5l
IFVLXzlQX01BWFRBRyAgICAgICAgICAgICAgICAgICAoVUlOVDE2X01BWCAtIDEpCj4gKwo+ICsv
KioKPiArICogTnVtYmVyIG9mIHBvc3NpYmxlIHRhZ3MsIGluY2x1ZGluZyBOT1RBRy4KPiArICov
Cj4gKyNkZWZpbmUgVUtfOVBfTlVNVEFHUyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpKFVJ
TlQxNl9NQVgpICsgMSkKPiArCj4gKy8qKgo+ICsgKiBObyBmaWQsIHVzZWQgdG8gbWFyayBhIGZp
ZCBmaWVsZCBhcyB1bnVzZWQuCj4gKyAqLwo+ICsjZGVmaW5lIFVLXzlQX05PRklEICAgICAgICAg
ICAgICAgICAgICBVSU5UMzJfTUFYCj4gKwo+ICsvKioKPiArICogTm8gbl91bmFtZSBpbiBUQVRU
QUNIIHJlcXVlc3RzLCB1c2VkIHRvIG1hcmsgdGhlIGZpZWxkIGFzIHVudXNlZC4KPiArICovCj4g
KyNkZWZpbmUgVUtfOVBfTk9OVU5BTUUgICAgICAgICAgICAgICAgIFVJTlQzMl9NQVgKPiArCj4g
KyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9fVUtf
OVBfQ09SRV9fICovCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:34:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:34:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hh7s6-0003k0-IO; Sat, 29 Jun 2019 07:34:06 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh7s5-0003jv-BB
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:34:05 +0000
X-Inumbo-ID: 4486d217-9a40-11e9-8980-bc764e045a96
Received: from mail-lf1-x144.google.com (unknown [2a00:1450:4864:20::144])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4486d217-9a40-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 07:34:03 +0000 (UTC)
Received: by mail-lf1-x144.google.com with SMTP id r15so5397777lfm.11
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 00:34:03 -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=q8iNNKywlME6a8v6mFJ5BGE4JPz8C7DN07manjshONw=;
 b=GIwxtMlIKD4C1fq2mq6ggeazNYtaTWm6UYPqQWCX4YlROuET/VkMa6BI8V8HBbq9+Q
 zfgNxkvJxzMfBqNd8pQ3RYgDNmhcwIOPQ4su0NEC5hpU7mnr36+ydazaxsIPOpaElQq0
 txxij4M5xVagqWVdRSHE8c5SQsM5zhErPmvfysCLJVVY/DZnu8qNccA/2yqRjtt6zToy
 WHj2IDEO786NJ4ACTLIRqaqV4Z0GCZauto0zbneJFK3R6YiGEB5UXWK1okz/k/assQm1
 lhLBBJEIo23aL9aIsIsHij8KEfW8jiSa6mmPUCupQNwrV6jkXbozqs6FqiDZrpWoQRzY
 +HOg==
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=q8iNNKywlME6a8v6mFJ5BGE4JPz8C7DN07manjshONw=;
 b=iSSSCUein8TzIne7z6Swxj9PJBCB0U+bhIJs3gtY7xUVxzmH2uJlcTc6OiQDmfd7YR
 yXqYXPBigg4Ornh+pBu/RveNLMq2qYfKFK696RIMftfFLt86m2ArdH/1oo2p4R+i8rzc
 QU3MgzOYetf99BJsyt3OkovlW7BuxyaJioy3t939F/+wfPOjNDy6o2WPbfT53I2FJZ9X
 ZQbjxyer7qbUZcT2j760RRTMc0bvFiIvhhn4OGRh3NaTmOkeHDKfW4AQ+9+GzfM4BJHF
 4nGkNmEk5l7JIU4UvqBEmqDShGiVawqp+CrfLWRYhB0oShOtiQ5vg9+5hS7K23J/ECJF
 JGig==
X-Gm-Message-State: APjAAAWBWL1QVOwYJKt89hoOP4OVtunkEHI0kPf/p7c5JXimIulVM3WT
 vFKxOnJqpo8cpR9otdGoA3Ilol056ngFAw5HbJ0=
X-Google-Smtp-Source: APXvYqw2+5DY8VBxPXfothb9b2rbGljmEj53QPBXQfoFdEyHomfgk+dpoIm0iGB4cxnSVSOuaoV1En2p7npJ/38fLrM=
X-Received: by 2002:ac2:4c3c:: with SMTP id u28mr7148704lfq.136.1561793642413; 
 Sat, 29 Jun 2019 00:34:02 -0700 (PDT)
MIME-Version: 1.0
References: <20190619070315.9765-1-cristb@gmail.com>
 <e7a46cd1-e1dc-add8-221e-36f1af118cda@neclab.eu>
In-Reply-To: <e7a46cd1-e1dc-add8-221e-36f1af118cda@neclab.eu>
From: Cristian Banu <cristb@gmail.com>
Date: Sat, 29 Jun 2019 10:33:51 +0300
Message-ID: <CAFJttSWNOU8ODpN4i8wrGi_gs8QqBkK9vCP1vBNC7FYE_NewDQ@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 0/8] Unikraft 9P API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 costin.lupu@cs.pub.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>

SGkgU2ltb24sCgpUaGFua3MgZm9yIHRoZSByZXZpZXchCgpDcmlzdGlhbgoKT24gU2F0LCBKdW4g
MjksIDIwMTkgYXQgMTA6MDIgQU0gU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIu
ZXU+IHdyb3RlOgo+Cj4gSGV5IENocmlzdGlhbiwKPgo+IHRoYW5rcyBhIGxvdCBmb3IgdGhpcyBs
aWJyYXJ5IGFuZCBwYXRjaCBzZXJpZXMuIDlQIGlzIGEgcmVhbGx5IGltcG9ydGFudAo+IGZlYXR1
cmUsIGVzcGVjaWFsbHkgZm9yIG91ciBLVk0gdGFyZ2V0cy4gQXMgZmFyIGFzIEkgY291bGQgc2Vl
LCB0aGUKPiBwYXRjaGVzIGFyZSBpbiBhIGdvb2Qgc2hhcGUuIEkgaGF2ZSBqdXN0IGEgc29tZSBj
b21tZW50cyByZWdhcmRpbmcgc29tZQo+IG1pbm9yIGRldGFpbHMuIEkgcHV0IHRob3NlIGlubGlu
ZSB3aXRoaW4gZWFjaCBwYXRjaC4KPgo+IFRoYW5rcyBhIGxvdCwKPgo+IFNpbW9uCj4KPiBPbiAx
OS4wNi4xOSAwOTowMywgQ3Jpc3RpYW4gQmFudSB3cm90ZToKPiA+IFRoaXMgcGF0Y2ggc2VyaWVz
IGludHJvZHVjZXMgdGhlIDlQIEFQSSwgd2hpY2ggYWN0cyBhcyBhIGdlbmVyaWMKPiA+IGludGVy
ZmFjZSBiZXR3ZWVuIHRoZSA5UCB0cmFuc3BvcnQgZHJpdmVycyAoeGVuLCB2aXJ0aW8pIGFuZAo+
ID4gdGhlIDlwZnMgaW1wbGVtZW50YXRpb24uIFRoZSBBUEkgbWF5IGFsc28gYmUgdXNlZCBkaXJl
Y3RseSBieQo+ID4gdXNlcnMuCj4gPgo+ID4gVGhlIHRyYW5zcG9ydCBkcml2ZXJzIHJlZ2lzdGVy
IHRoZW1zZWx2ZXMgd2l0aCB0aGUgQVBJIHVzaW5nIHRoZQo+ID4gZGVmaW5pdGlvbnMgZnJvbSA5
cGRldl90cmFucy5oIGFuZCA5cGRldl9jb3JlLmgsIGFuZCBpbXBsZW1lbnQKPiA+IHRoZSBjb25u
ZWN0LCBkaXNjb25uZWN0IGFuZCByZXF1ZXN0IGNhbGxiYWNrcy4KPiA+Cj4gPiBUaGUgcHJvdG9j
b2wgY29yZSB0eXBlcyBhbmQgY29uc3RhbnRzIGNhbiBiZSBmb3VuZCBpbiA5cF9jb3JlLmgsCj4g
PiBhbmQgYSBoZWxwZXIgaW50ZXJmYWNlIHRvIHRoZSBvcGVyYXRpb25zIHN1cHBvcnRlZCBieSB0
aGUgOVAKPiA+IHByb3RvY29sIGNhbiBiZSBmb3VuZCBpbiA5cC5oLgo+ID4KPiA+IFRoZXJlIGFy
ZSB0d28ga2luZHMgb2Ygb2JqZWN0cyB3aGljaCBtdXN0IGJlIG1hbmFnZWQgY2FyZWZ1bGx5Cj4g
PiBieSB0aGUgQVBJOiB0aGUgcmVxdWVzdCBhbmQgdGhlIGZpZCAoaGFuZGxlIHRvIGEgZmlsZXN5
c3RlbQo+ID4gZW50aXR5IHN1Y2ggYXMgYSBmaWxlIG9yIGRpcmVjdG9yeSwgc2ltaWxhciB0byBh
IGZpbGUKPiA+IGRlc2NyaXB0b3IpLiBUaGUgbWFuYWdlbWVudCBvZiBib3RoIG9mIHRob3NlIGlz
IGFic3RyYWN0ZWQgaW50bwo+ID4gOXByZXEuaCBhbmQgOXBmaWQuaCByZXNwZWN0aXZlbHkuCj4g
Pgo+ID4gQ3Jpc3RpYW4gQmFudSAoOCk6Cj4gPiAgICBsaWIvdWs5cDogQWRkIDlQIGxpYnJhcnkg
c2tlbGV0b24KPiA+ICAgIGxpYi91azlwOiBBZGQgOVAgdHJhbnNwb3J0IHJlZ2lzdHJhdGlvbgo+
ID4gICAgbGliL3VrOXA6IEFkZCA5UCBwcm90b2NvbCBjb3JlIGRlZmluaXRpb25zCj4gPiAgICBs
aWIvdWs5cDogQWRkIDlQIHJlcXVlc3RzIGFic3RyYWN0aW9uCj4gPiAgICBsaWIvdWs5cDogQWRk
IDlQIGRldmljZSBpbXBsZW1lbnRhdGlvbgo+ID4gICAgbGliL3VrOXA6IEFkZCA5UCBmaWQgYWJz
dHJhY3Rpb24KPiA+ICAgIGxpYi91azlwOiBBZGQgOVAgaGVscGVyIEFQSQo+ID4gICAgbGliL3Vr
OXA6IENsdW5rIGZpZHMgb24gZmlkIHJlbGVhc2UKPiA+Cj4gPiAgIGxpYi9Db25maWcudWsgICAg
ICAgICAgICAgICAgICAgICB8ICAgMSArCj4gPiAgIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAg
ICAgICAgICB8ICAgMSArCj4gPiAgIGxpYi91azlwLzlwLmMgICAgICAgICAgICAgICAgICAgICB8
IDQyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gICBsaWIvdWs5cC85cGRldi5j
ICAgICAgICAgICAgICAgICAgfCA0NjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+
ID4gICBsaWIvdWs5cC85cGRldl90cmFucy5jICAgICAgICAgICAgfCAgODYgKysrKysrCj4gPiAg
IGxpYi91azlwLzlwZmlkLmMgICAgICAgICAgICAgICAgICB8ICA3MSArKysrKwo+ID4gICBsaWIv
dWs5cC85cHJlcS5jICAgICAgICAgICAgICAgICAgfCA1NTQgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKPiA+ICAgbGliL3VrOXAvQ29uZmlnLnVrICAgICAgICAgICAgICAg
IHwgICA2ICsKPiA+ICAgbGliL3VrOXAvTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgIDEwICsK
PiA+ICAgbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgIDQzICsrKwo+ID4gICBs
aWIvdWs5cC9pbmNsdWRlL3VrLzlwLmggICAgICAgICAgfCAyNjAgKysrKysrKysrKysrKysrKysr
Cj4gPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5oICAgICB8IDI0OSArKysrKysrKysr
KysrKysrKwo+ID4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2LmggICAgICAgfCAyMTEgKysr
KysrKysrKysrKysrCj4gPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oICB8IDE4
OSArKysrKysrKysrKysrCj4gPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCB8
IDEwNCArKysrKysrCj4gPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBmaWQuaCAgICAgICB8IDEx
NSArKysrKysrKwo+ID4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmggICAgICAgfCAyNjAg
KysrKysrKysrKysrKysrKysrCj4gPiAgIDE3IGZpbGVzIGNoYW5nZWQsIDMwNDMgaW5zZXJ0aW9u
cygrKQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXAuYwo+ID4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3VrOXAvOXBkZXYuYwo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
L3VrOXAvOXBkZXZfdHJhbnMuYwo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBm
aWQuYwo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXByZXEuYwo+ID4gICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvQ29uZmlnLnVrCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdWs5cC9NYWtlZmlsZS51awo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAv
ZXhwb3J0c3ltcy51awo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91
ay85cC5oCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwX2Nv
cmUuaAo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5o
Cj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUu
aAo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFu
cy5oCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZmlkLmgK
PiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXByZXEuaAo+ID4K
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:40:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:40: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 1hh7yG-0004Op-6U; Sat, 29 Jun 2019 07:40:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh7yE-0004Ok-M4
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:40:26 +0000
X-Inumbo-ID: 27ec58a5-9a41-11e9-8980-bc764e045a96
Received: from mail-lf1-x144.google.com (unknown [2a00:1450:4864:20::144])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 27ec58a5-9a41-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 07:40:25 +0000 (UTC)
Received: by mail-lf1-x144.google.com with SMTP id y198so5445736lfa.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 00:40:25 -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=bqm8jEf5NolJO912wP8T5/c0aKRUQxHFpk6MBXRmwEE=;
 b=o9OrzxV06yIpCVrddnG6bjSWIEMI1O0OixaeV7YGI53V/DB15d97iuPADLUhvtzNDp
 ZLdJxCZMNWl2WqqKFL2AVOZUv9DzxiG7CmD6UlkMGz1U4MkP/yads1sFXyAmDSPerfkO
 IeHNJigePujr6yB5exPa6ksggqVyYq3ESkio8jGcukKhRprCC4IX/AvlVjDkxhth0nPf
 5WsgNypU8CUSpcJfZXxRibJYRycSJTIn4J0qXYWB1A7ZNjxkqMKi4TtdenVYtTTacDtl
 WXm8m1196xui+w0DmDWoUJ/17o1XmzGKzstMrvtVHxiFjg2qG5/YRch/eW3RBAOAkM6e
 ATtQ==
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=bqm8jEf5NolJO912wP8T5/c0aKRUQxHFpk6MBXRmwEE=;
 b=fZEePgaM0sCtBaHBGTg1aTREDOyjsM3mT9nwdn0Mfut0TRQdHMIROZF7Erwx5yPS6Z
 q8RVWRdTe+fVBTo2mifXXH5SCsiXUM19s8q1sev+E5r5Bfgv+suyN5wMBXuzMNSRV35K
 oAMZb5dKAbuZuXbUKruclZJPeZ7+iEwAoBCH2chAqqVyMyFuN3wqL5D2IaDV4aUCRiSK
 MlnzntgzrrL4crFQHKvikj3npmAwIVFxN3VxcnjLPxUH3YDI2OkCpa25vKeXzU/Sgj/l
 GMU/kosQm+Wms7mg9Zk5ax/3S0fumdxtSbXWG76onlg5b2lu9B5Rr2HobPGfA2NrFY58
 CXHw==
X-Gm-Message-State: APjAAAVh86DW4Dnoo7moMYvd32rQwsqqloeL544Gta46AZ7+tWkGhv0a
 Qf8ed4CYIGlSv20fxlkRpoGaGZzghaJIkXFGzLI=
X-Google-Smtp-Source: APXvYqyf1xS3F3kD1EXTnyVmuDeM7QZ+DPLjdpnz+rsqAPc5DMKn8gNN+SgxrV2MictFhaMPdS8/ZkLks6bAPgL+Ocg=
X-Received: by 2002:ac2:4d0a:: with SMTP id r10mr6762816lfi.42.1561794024002; 
 Sat, 29 Jun 2019 00:40:24 -0700 (PDT)
MIME-Version: 1.0
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-2-cristb@gmail.com>
 <117d0375-8ba3-d1f8-b696-aa9c1cf905ef@neclab.eu>
In-Reply-To: <117d0375-8ba3-d1f8-b696-aa9c1cf905ef@neclab.eu>
From: Cristian Banu <cristb@gmail.com>
Date: Sat, 29 Jun 2019 10:40:13 +0300
Message-ID: <CAFJttSWfMYENhPwR44UUHkFxBP+PQokheH7wr9hKVh34aj91_g@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/8] lib/uk9p: Add 9P 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,
 costin.lupu@cs.pub.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>

T24gU2F0LCBKdW4gMjksIDIwMTkgYXQgMTA6MDMgQU0gU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+IHdyb3RlOgo+Cj4gT24gMTkuMDYuMTkgMDk6MDMsIENyaXN0aWFuIEJh
bnUgd3JvdGU6Cj4gPiBBZGQgbGlidWs5cCBza2VsZXRvbiBhbmQgcmVnaXN0ZXIgaXQgd2l0aGlu
IHRoZSBidWlsZCBzeXN0ZW0uCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8
Y3Jpc3RiQGdtYWlsLmNvbT4KPiA+IC0tLQo+ID4gICBsaWIvQ29uZmlnLnVrICAgICAgICB8IDEg
Kwo+ID4gICBsaWIvTWFrZWZpbGUudWsgICAgICB8IDEgKwo+ID4gICBsaWIvdWs5cC9Db25maWcu
dWsgICB8IDYgKysrKysrCj4gPiAgIGxpYi91azlwL01ha2VmaWxlLnVrIHwgNCArKysrCj4gPiAg
IDQgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3VrOXAvQ29uZmlnLnVrCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9N
YWtlZmlsZS51awo+ID4KPiA+IGRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVrIGIvbGliL0NvbmZp
Zy51awo+ID4gaW5kZXggODIyYzYyNGZkNTQ4Li45ZmU4MzcyMDNjZGEgMTAwNjQ0Cj4gPiAtLS0g
YS9saWIvQ29uZmlnLnVrCj4gPiArKysgYi9saWIvQ29uZmlnLnVrCj4gPiBAQCAtNDcsMyArNDcs
NCBAQCBzb3VyY2UgImxpYi91a3N3cmFuZC9Db25maWcudWsiCj4gPiAgIHNvdXJjZSAibGliL3Vr
YnVzL0NvbmZpZy51ayIKPiA+ICAgc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgo+ID4g
ICBzb3VyY2UgImxpYi91a25ldGRldi9Db25maWcudWsiCj4gPiArc291cmNlICJsaWIvdWs5cC9D
b25maWcudWsiCj4gPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnVrIGIvbGliL01ha2VmaWxl
LnVrCj4gPiBpbmRleCBkMDY4MzdmMTQzMzguLmIxZDQ0ZDQwYWI5MyAxMDA2NDQKPiA+IC0tLSBh
L2xpYi9NYWtlZmlsZS51awo+ID4gKysrIGIvbGliL01ha2VmaWxlLnVrCj4gPiBAQCAtMjQsMyAr
MjQsNCBAQCAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91
a21waSkpCj4gPiAgICQoZXZhbCAkKGNhbGwgX2ltcG9ydF9saWIsJChDT05GSUdfVUtfQkFTRSkv
bGliL3VrYnVzKSkKPiA+ICAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19C
QVNFKS9saWIvdWtzZ2xpc3QpKQo+ID4gICAkKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09O
RklHX1VLX0JBU0UpL2xpYi91a25ldGRldikpCj4gPiArJChldmFsICQoY2FsbCBfaW1wb3J0X2xp
YiwkKENPTkZJR19VS19CQVNFKS9saWIvdWs5cCkpCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAv
Q29uZmlnLnVrIGIvbGliL3VrOXAvQ29uZmlnLnVrCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+
ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hMTU4Zjc1ZGVjMzcKPiA+IC0tLSAvZGV2L251bGwKPiA+
ICsrKyBiL2xpYi91azlwL0NvbmZpZy51awo+ID4gQEAgLTAsMCArMSw2IEBACj4gPiArbWVudWNv
bmZpZyBMSUJVSzlQCj4KPiBJZiB5b3UgZG8gbm90IGhhdmUgYW55IGNvbmZpZ3VyYXRpb24gcGFy
YW1ldGVycywganVzdCB0YWtlIGNvbmZpZwo+IGluc3RlYWQgb2YgbWVudWNvbmZpZy4gV2UgZG8g
bm90IG5lZWQgdGhlIHN1YiBtZW51IG9wdGlvbiBmb3IgdGhpcyBjYXNlLgpXaWxsIGZpeCBpbiB0
aGUgbmV4dCBwYXRjaCB2ZXJzaW9uLgo+Cj4gPiArICAgICBib29sICJ1azlwOiA5cCBjbGllbnQg
YW5kIGZpbGVzeXN0ZW0iCj4KPiBIdW0sIG1heWJlIHlvdSByZW1vdmUgImFuZCBmaWxlc3lzdGVt
IiBhbmQgY2FsbCBpdCBqdXN0ICJ1azlwOiA5cAo+IGNsaWVudCIuIEl0IG1heSBtYWtlIHBlb3Bs
ZSBleHBlY3QgdGhhdCB0aGlzIGxpYnJhcnkgaW1wbGVtZW50cyBhbHNvIGEKPiBWRlNjb3JlIGlu
dGVncmF0aW9uLiBZb3UgaGF2ZSBhIGZpbGVzeXN0ZW0gaW50ZWdyYXRpb24gdGhhdCB5b3UgYXJl
Cj4gZ29pbmcgdG8gaW50ZWdyYXRlIGxhdGVyPyBJbiBzdWNoIGEgY2FzZSwgSSB0aGluayBiZXN0
IHByYWN0aWNlIHdvdWxkIGJlCj4gdG8gY2hhbmdlIHRoZSBuYW1lIHRvZ2V0aGVyIHdpdGggdGhv
c2UgcGF0Y2hlcyBsYXRlci4KV2lsbCBmaXggaW4gdGhlIG5leHQgcGF0Y2ggdmVyc2lvbi4KPgo+
ID4gKyAgICAgZGVmYXVsdCBuCj4gPiArICAgICBzZWxlY3QgTElCVUtBTExPQwo+ID4gKyAgICAg
c2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJDCj4gPiArICAgICBzZWxlY3QgTElCVUtERUJV
Rwo+ID4gZGlmZiAtLWdpdCBhL2xpYi91azlwL01ha2VmaWxlLnVrIGIvbGliL3VrOXAvTWFrZWZp
bGUudWsKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmZh
NzU0NDQwNTk4Ywo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliL3VrOXAvTWFrZWZpbGUu
dWsKPiA+IEBAIC0wLDAgKzEsNCBAQAo+ID4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlidWs5
cCwkKENPTkZJR19MSUJVSzlQKSkpCj4gPiArCj4gPiArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVL
OVApICAgICAgICAgICs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUKPiA+ICtDWFhJTkNMVURF
Uy0kKENPTkZJR19MSUJVSzlQKSAgICAgICAgICAgICAgICArPSAtSSQoTElCVUs5UF9CQVNFKS9p
bmNsdWRlCj4gPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 07:57:56 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 07:57: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 1hh8F8-0005EQ-IJ; Sat, 29 Jun 2019 07:57:54 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh8F7-0005EL-BJ
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 07:57:53 +0000
X-Inumbo-ID: 9796ee4d-9a43-11e9-8980-bc764e045a96
Received: from mail-lf1-x143.google.com (unknown [2a00:1450:4864:20::143])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 9796ee4d-9a43-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 07:57:51 +0000 (UTC)
Received: by mail-lf1-x143.google.com with SMTP id p24so5444486lfo.6
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 00:57:51 -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=/Sv6w+/EKE5zZOvHLjkguOHwL+/MvB+rdS4dO618TVA=;
 b=UCSkDGDxowCg+SvsYhrm8OivqyfN97MDl2nGfXjb782uT7B6AvvCpz1tU/CrgvvzaM
 ap6qUfUWZplq0zarv+98Hkz89OwL1iKv+MvbOUtKPkl+Sw0KlRThoPLf28WEjKfqPPgd
 e3KhqzHaL0BVBN8EBZCcnJvlfOuFRcaVXcNbK3bEzDxdDW7mcctB1ooldVa8UVIFwNm/
 quMfPJaHpMxSNEaH/5RYd5j1vT7fEIx4SV28/OJPt4QEQZVB1mqANKDii5VPqVEUsqLj
 izy66rFgXuG5FVN0UgTSsL/zazmjkdoOc87A5MV+Wdd74cFW28ek+fuRJ0YLPNzdn/Wy
 L+Aw==
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=/Sv6w+/EKE5zZOvHLjkguOHwL+/MvB+rdS4dO618TVA=;
 b=VsBOs+nhkXruYfNPPQAHuFL369cCD2y1SOCzAziOGzTcCyVNbM1yzab2i6CVpFxJjq
 yNvzr9GfrBjqJM3AElbatjI49XjSBFWmERmQMXhTYdPdyHCqgvs3dcw9XipReRGxmNvn
 v41qnGC08Z4CJBaYj65z45AIsY9d284BNiNYw5sAWoBJMmfHzhxPaTrVgbem8qEhpZzY
 WjGCQj+YM6Hbu//K2dvjddRDapK1kUe7WwFb2RP10oQhVnCr2CFAdxRv5Hf7BkOnOEub
 u6B5DJjnXSmLiqnKnx2teonym9XFG4V4VPv/i3og5TB47wpl3sJmXW5CJHmPTtg3XCR0
 BM9w==
X-Gm-Message-State: APjAAAWRy3bfRsapGnc7mPIOI9jNv0AbMjocAWSQI/2NefnfO10Y2WDQ
 zvHbkbZi3W8P6aLiyX+r0zXTK7EtUxihCaaX4/k=
X-Google-Smtp-Source: APXvYqwPOOasAMPi9KEwWceUkiCoIbc7oMMEabMEZ5IKou4TE6tsQdGGu25HZBr9txWk/h0WPSsCIliiKCf1ixvbJK4=
X-Received: by 2002:ac2:4d0a:: with SMTP id r10mr6789840lfi.42.1561795070357; 
 Sat, 29 Jun 2019 00:57:50 -0700 (PDT)
MIME-Version: 1.0
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-3-cristb@gmail.com>
 <371c1c6a-1a9a-e396-b233-02711944557e@neclab.eu>
In-Reply-To: <371c1c6a-1a9a-e396-b233-02711944557e@neclab.eu>
From: Cristian Banu <cristb@gmail.com>
Date: Sat, 29 Jun 2019 10:57:39 +0300
Message-ID: <CAFJttSUXz=T4hx=X47ptLKorLyP3irejNNv4QSe6bD7c5YX1Sw@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/8] lib/uk9p: Add 9P transport
 registration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 costin.lupu@cs.pub.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>

T24gU2F0LCBKdW4gMjksIDIwMTkgYXQgMTA6MTAgQU0gU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+IHdyb3RlOgo+Cj4gT24gMTkuMDYuMTkgMDk6MDMsIENyaXN0aWFuIEJh
bnUgd3JvdGU6Cj4gPiBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIDlQIHRyYW5zcG9ydCByZWdp
c3RyYXRpb24gYW5kIGxvb2t1cCBBUEkuCj4KPiBNYXliZSB5b3UgY291bGQgYWxzbyBleHBsYWlu
IHRoZSBjb25jZXB0IG9mIGhhdmluZyBtdWx0aXBsZSBvZiB0aGVtIGFuZAo+IGRlc2NyaWJlIHdo
YXQgYSBkZWZhdWx0IHRyYW5zcG9ydCBpcyBhbmQgd2hhdCBpdCBpcyBmb3IuIEluIGNhc2UgeW91
Cj4ga2VlcCBpdC4KRml4ZWQgaW4gdGhlIG5leHQgcGF0Y2ggdmVyc2lvbi4KPgo+ID4KPiA+IFNp
Z25lZC1vZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gPiAtLS0KPiA+
ICAgbGliL3VrOXAvOXBkZXZfdHJhbnMuYyAgICAgICAgICAgIHwgIDgyICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKPiA+ICAgbGliL3VrOXAvTWFrZWZpbGUudWsgICAgICAgICAgICAg
IHwgICAyICsKPiA+ICAgbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgICAzICsr
Cj4gPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCB8IDEwMSArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDE4OCBp
bnNlcnRpb25zKCspCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC85cGRldl90cmFu
cy5jCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9leHBvcnRzeW1zLnVrCj4gPiAg
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKPiA+
Cj4gPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXBkZXZfdHJhbnMuYyBiL2xpYi91azlwLzlwZGV2
X3RyYW5zLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAu
LjYwYjhhMjMwY2JmMwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliL3VrOXAvOXBkZXZf
dHJhbnMuYwo+ID4gQEAgLTAsMCArMSw4MiBAQAo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBCU0QtMy1DbGF1c2UgKi8KPiA+ICsvKgo+ID4gKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJh
bnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTks
IFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVk
Lgo+ID4gKyAqCj4gPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gPiArICogYXJl
IG1ldDoKPiA+ICsgKgo+ID4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ID4gKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Cj4gPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ID4gKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4g
PiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhl
IG5hbWVzIG9mIGl0cwo+ID4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gPiArICogICAgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiA+ICsgKgo+
ID4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ID4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiA+ICsg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQo+ID4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiA+ICsgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCj4gPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiA+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiA+ICsg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgo+ID4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gPiArICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKPiA+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiA+ICsgKgo+ID4g
KyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBX
QVkuCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gPiArI2luY2x1ZGUg
PHN0cmluZy5oPgo+ID4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiA+ICsjaW5jbHVkZSA8dWsv
bGlzdC5oPgo+ID4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiA+ICsjaW5jbHVkZSA8dWsvOXBk
ZXZfdHJhbnMuaD4KPiA+ICsKPiA+ICtzdGF0aWMgVUtfTElTVF9IRUFEKHVrXzlwZGV2X3RyYW5z
X2xpc3QpOwo+ID4gKwo+ID4gK2ludCB1a185cGRldl90cmFuc19yZWdpc3RlcihzdHJ1Y3QgdWtf
OXBkZXZfdHJhbnMgKnRyYW5zKQo+ID4gK3sKPiA+ICsgICAgIFVLX0FTU0VSVCh0cmFucyk7Cj4g
PiArICAgICBVS19BU1NFUlQodHJhbnMtPm5hbWUpOwo+ID4gKyAgICAgVUtfQVNTRVJUKHRyYW5z
LT5hKTsKPiA+ICsKPiA+ICsgICAgIHVrX2xpc3RfYWRkX3RhaWwoJnRyYW5zLT5fbGlzdCwgJnVr
XzlwZGV2X3RyYW5zX2xpc3QpOwo+ID4gKyAgICAgdWtfcHJfaW5mbygiUmVnaXN0ZXJlZCB0cmFu
c3BvcnQgJXNcbiIsIHRyYW5zLT5uYW1lKTsKPiA+ICsKPiA+ICsgICAgIHJldHVybiAwOwo+ID4g
K30KPiA+ICsKPiA+ICtpbnQgdWtfOXBkZXZfdHJhbnNfYnlfbmFtZShjb25zdCBjaGFyICpuYW1l
LCBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKip0cmFucykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3Qg
dWtfOXBkZXZfdHJhbnMgKnQ7Cj4gPiArCj4gPiArICAgICB1a19saXN0X2Zvcl9lYWNoX2VudHJ5
KHQsICZ1a185cGRldl90cmFuc19saXN0LCBfbGlzdCkgewo+ID4gKyAgICAgICAgICAgICBpZiAo
IXN0cmNtcCh0LT5uYW1lLCBuYW1lKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICp0cmFu
cyA9IHQ7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiArICAgICAgICAg
ICAgIH0KPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHJldHVybiAtRU5PREVWOwo+ID4gK30K
PiA+ICsKPiA+ICtpbnQgdWtfOXBkZXZfdHJhbnNfZGVmYXVsdChzdHJ1Y3QgdWtfOXBkZXZfdHJh
bnMgKip0cmFucykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnQ7Cj4g
PiArCj4gPiArICAgICB1a19saXN0X2Zvcl9lYWNoX2VudHJ5KHQsICZ1a185cGRldl90cmFuc19s
aXN0LCBfbGlzdCkgewo+ID4gKyAgICAgICAgICAgICBpZiAodC0+aXNfZGVmYXVsdCkgewo+ID4g
KyAgICAgICAgICAgICAgICAgICAgICp0cmFucyA9IHQ7Cj4gPiArICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsgICAgIH0KPgo+IE1heWJlIHlv
dSB3YW50IHRvIHN0b3JlIGludGVybmFsbHkgdG8gdGhlIGxpYnJhcnkgYW4gZXh0cmEgcG9pbnRl
ciB0aGF0Cj4gcG9pbnRzIHRvIHRoZSBjdXJyZW50IGRlZmF1bHQgdHJhbnNwb3J0LiBUaGVuIHlv
dSB3b3VsZCBub3QgbmVlZCB0aGlzCj4gYm9vbGVhbiBzY2hlbWUgYW5kIHRvIHRyYXZlcnNlIHRo
ZSBsaXN0LgpHb29kIGlkZWEsIGZpeGVkIGluIHRoZSBuZXh0IHBhdGNoIHZlcnNpb24uCj4KPiA+
ICsKPiA+ICsgICAgIHJldHVybiAtRU5PREVWOwo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS9saWIv
dWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCj4gPiBpbmRleCBmYTc1NDQ0
MDU5OGMuLmIxMDcxYTBlN2QzYyAxMDA2NDQKPiA+IC0tLSBhL2xpYi91azlwL01ha2VmaWxlLnVr
Cj4gPiArKysgYi9saWIvdWs5cC9NYWtlZmlsZS51awo+ID4gQEAgLTIsMyArMiw1IEBAICQoZXZh
bCAkKGNhbGwgYWRkbGliX3MsbGlidWs5cCwkKENPTkZJR19MSUJVSzlQKSkpCj4gPgo+ID4gICBD
SU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkgICAgICAgICArPSAtSSQoTElCVUs5UF9CQVNFKS9p
bmNsdWRlCj4gPiAgIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLOVApICAgICAgICAgICAgICAg
Kz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQo+ID4gKwo+ID4gK0xJQlVLOVBfU1JDUy15ICs9
ICQoTElCVUs5UF9CQVNFKS85cGRldl90cmFucy5jCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAv
ZXhwb3J0c3ltcy51ayBiL2xpYi91azlwL2V4cG9ydHN5bXMudWsKPiA+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjQ1ZjQ4N2RhMmZmZgo+ID4gLS0tIC9kZXYv
bnVsbAo+ID4gKysrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awo+ID4gQEAgLTAsMCArMSwzIEBA
Cj4gPiArdWtfOXBkZXZfdHJhbnNfcmVnaXN0ZXIKPiA+ICt1a185cGRldl90cmFuc19ieV9uYW1l
Cj4gPiArdWtfOXBkZXZfdHJhbnNfZGVmYXVsdAo+ID4gZGlmZiAtLWdpdCBhL2xpYi91azlwL2lu
Y2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMu
aAo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTBjNmQy
NTIzNjFjCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlw
ZGV2X3RyYW5zLmgKPiA+IEBAIC0wLDAgKzEsMTAxIEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlk
ZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ID4gKy8qCj4gPiArICogQXV0aG9yczogQ3Jpc3Rp
YW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KPiA+ICsgKgo+ID4gKyAqIENvcHlyaWdodCAoYykg
MjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gPiArICoKPiA+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiA+ICsgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiA+ICsg
KiBhcmUgbWV0Ogo+ID4gKyAqCj4gPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiA+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gPiAr
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKPiA+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gPiArICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KPiA+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCj4gPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiA+ICsgKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ID4g
KyAqCj4gPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gPiArICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+
ID4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ID4gKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKPiA+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ID4gKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+
ID4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCj4gPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiA+ICsgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQo+ID4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ID4gKyAq
Cj4gPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4g
QU5ZIFdBWS4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaWZuZGVmIF9fVUtfOVBERVZfVFJBTlNfXwo+
ID4gKyNkZWZpbmUgX19VS185UERFVl9UUkFOU19fCj4gPiArCj4gPiArI2luY2x1ZGUgPHN0ZGJv
b2wuaD4KPiA+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gPiArCj4gPiArI2lmZGVmIF9fY3Bs
dXNwbHVzCj4gPiArZXh0ZXJuICJDIiB7Cj4gPiArI2VuZGlmCj4gPiArCj4gPiArLyoqIEEgc3Ry
dWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYSB0cmFuc3BvcnQuICovCj4gPiArc3RydWN0IHVrXzlw
ZGV2X3RyYW5zIHsKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBUcmFuc3BvcnQgbmFtZSAoZS5n
LiAidmlydGlvIiwgInhlbiIpLiBUaGlzIGZpZWxkIGlzIHJlc2VydmVkIGZvcgo+ID4gKyAgICAg
ICogZnV0dXJlIHVzZSwgd2hlbiBtdWx0aXBsZSB0cmFuc3BvcnQgb3B0aW9ucyBhcmUgYXZhaWxh
YmxlIG9uIHRoZQo+ID4gKyAgICAgICogc2FtZSBwbGF0Zm9ybS4KPiA+ICsgICAgICAqLwo+Cj4g
V2hhdCBpcyBhIGNvbW1vbiBjYXNlIHdoZXJlIHlvdSBoYXZlIG11bHRpcGxlIHRyYW5zcG9ydHM/
IElzIGl0IGxpa2UKPiBtdWx0aXBsZSBzaGFyZWQgbW91bnQgcG9pbnRzPwo+IEkgYW0gd29uZGVy
aW5nIGlmIHdlIG5lZWQgdGhlIGFic3RyYWN0aW9uIG9mIG11bHRpcGxlIHRyYW5zcG9ydHMuClRo
ZXJlIGFyZSA5cGZzIHRyYW5zcG9ydHMgZm9yIFJETUEgYW5kIFRDUCwgd2hpY2ggZG8gbm90IG5l
Y2Vzc2FyaWx5CmRlcGVuZCBvbiB0aGUgcGxhdGZvcm0sIGFzIGlzIHRoZSBjYXNlIHJpZ2h0IG5v
dy4gV2lsbCBhZGQgdGhlIGV4cGxhbmF0aW9uCmluIHRoZSBuZXh0IHBhdGNoIHZlcnNpb24uCj4K
PiA+ICsgICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmFtZTsK
PiA+ICsgICAgIC8qIENhbiB0aGUgdHJhbnNwb3J0IGJlIHVzZWQgYXMgYSBkZWZhdWx0IG9uZT8g
Ki8KPiA+ICsgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19k
ZWZhdWx0Owo+ID4gKyAgICAgLyogQWxsb2NhdG9yIHVzZWQgZm9yIGRldmljZXMgd2hpY2ggdXNl
IHRoaXMgdHJhbnNwb3J0IGxheWVyLiAqLwo+ID4gKyAgICAgc3RydWN0IHVrX2FsbG9jICAgICAg
ICAgICAgICAgICAgICAgICAgICphOwo+ID4gKyAgICAgLyogQGludGVybmFsIEVudHJ5IGluIHRo
ZSBsaXN0IG9mIGF2YWlsYWJsZSB0cmFuc3BvcnRzLiAqLwo+ID4gKyAgICAgc3RydWN0IHVrX2xp
c3RfaGVhZCAgICAgICAgICAgICAgICAgICAgIF9saXN0Owo+ID4gK307Cj4gPiArCj4gPiArLyoq
Cj4gPiArICogQWRkcyBhIHRyYW5zcG9ydCB0byB0aGUgYXZhaWxhYmxlIHRyYW5zcG9ydHMgbGlz
dCBmb3IgVW5pa3JhZnQgOVAgRGV2aWNlcy4KPiA+ICsgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQg
b25jZSBwZXIgZHJpdmVyIChvbmNlIGZvciB2aXJ0aW8sIG9uY2UgZm9yIHhlbiwgZXRjLikuCj4g
PiArICoKPiA+ICsgKiBAcGFyYW0gdHJhbnMKPiA+ICsgKiAgIFBvaW50ZXIgdG8gdGhlIHRyYW5z
cG9ydCBzdHJ1Y3R1cmUuCj4gPiArICogQHJldHVybgo+ID4gKyAqICAgLSAoMCk6IFN1Y2Nlc3Nm
dWwuCj4gPiArICogICAtICg8IDApOiBGYWlsZWQgdG8gcmVnaXN0ZXIgdGhlIHRyYW5zcG9ydCBs
YXllci4KPiA+ICsgKi8KPiA+ICtpbnQgdWtfOXBkZXZfdHJhbnNfcmVnaXN0ZXIoc3RydWN0IHVr
XzlwZGV2X3RyYW5zICp0cmFucyk7Cj4gPiArCj4gPiArLyoqCj4gPiArICogTG9va3MgdXAgYSB0
cmFuc3BvcnQgbGF5ZXIgYnkgaXRzIG5hbWUuCj4gPiArICoKPiA+ICsgKiBAcGFyYW0gbmFtZQo+
ID4gKyAqICAgVGhlIHRyYW5zcG9ydCBsYXllciBuYW1lLgo+ID4gKyAqIEBwYXJhbSB0cmFucwo+
ID4gKyAqICAgV2hlcmUgdG8gc3RvcmUgdGhlIHBvaW50ZXIgdG8gdGhlIGZvdW5kIHRyYW5zcG9y
dCBzdHJ1Y3R1cmUuCj4gPiArICogQHJldHVybgo+ID4gKyAqICAgLSAoLUVOT0VOVCk6IE5vIHRy
YW5zcG9ydCB3aXRoIHRoZSBnaXZlbiBuYW1lLgo+ID4gKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwu
Cj4gPiArICovCj4gPiAraW50IHVrXzlwZGV2X3RyYW5zX2J5X25hbWUoY29uc3QgY2hhciAqbmFt
ZSwgc3RydWN0IHVrXzlwZGV2X3RyYW5zICoqdHJhbnMpOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAq
IEdldHMgdGhlIGRlZmF1bHQgdHJhbnNwb3J0IGxheWVyLgo+ID4gKyAqCj4gPiArICogQHBhcmFt
IHRyYW5zCj4gPiArICogICBXaGVyZSB0byBzdG9yZSB0aGUgcG9pbnRlciB0byB0aGUgZm91bmQg
dHJhbnNwb3J0IHN0cnVjdHVyZS4KPiA+ICsgKiBAcmV0dXJuCj4gPiArICogICAtICgtRU5PRU5U
KTogTm8gZGVmYXVsdCB0cmFuc3BvcnQgZm91bmQuCj4KPiBJIHNhdyB0aGF0IHlvdXIgZnVuY3Rp
b24gcmV0dXJucyAtRU5PREVWLiBUaGlzIGRlc2NyaXB0aW9uIGlzCj4gbWlzbWF0Y2hpbmcuIDst
KQpPb3BzLiA6KQo+Cj4gPiArICogICAtICgwKTogU3VjY2Vzc2Z1bC4KPiA+ICsgKi8KPiA+ICtp
bnQgdWtfOXBkZXZfdHJhbnNfZGVmYXVsdChzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKip0cmFucyk7
Cj4KPiBEbyB5b3UgZXZlciBleHBlY3QgdG8gcmV0dXJuIGEgZGlmZmVyZW50IGVycm9yIGNvZGU/
IFdoYXQgYWJvdXQKPiByZXR1cm5pbmcgdGhlIHBvaW50ZXIgKGluc3RlYWQgb2YgZ29pbmcgdGhy
b3VnaCBhbiBhcmd1bWVudCkgYW5kIE5VTEwgaW4KPiBlcnJvciBjYXNlPyBXZSBoYWQgYSBzaW1p
bGFyIEFQSSBkZWNpc2lvbiBpbiB1a2FsbG9jCj4gKHVrX2FsbG9jX2dldF9kZWZhdWx0KCkpIGFu
ZCB1a3NjaGVkLCBzbyBpdCB3b3VsZCBmaXQgaGVyZS4KPgpGaXhlZC4KPiA+ICsKPiA+ICsjaWZk
ZWYgX19jcGx1c3BsdXMKPiA+ICt9Cj4gPiArI2VuZGlmCj4gPiArCj4gPiArI2VuZGlmIC8qIF9f
VUtfOVBERVZfVFJBTlNfXyAqLwo+ID4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:35:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:35: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 1hh8pC-000084-Ql; Sat, 29 Jun 2019 08:35:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh8pA-00007z-OE
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:35:08 +0000
X-Inumbo-ID: cb2eee80-9a48-11e9-8980-bc764e045a96
Received: from mail-lf1-x142.google.com (unknown [2a00:1450:4864:20::142])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cb2eee80-9a48-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:35:05 +0000 (UTC)
Received: by mail-lf1-x142.google.com with SMTP id 136so5475579lfa.8
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:35: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; bh=K+8ENENQ359xODTDb0GtbQo9L2Zb3oFbhuuTcOHpMqo=;
 b=aI15J2z3TVJ1CBbV9by+22XNWOQiy7Ryw8kOF4WzkL8InSdLgdSvDZG+eaHEW1VknG
 BC4EvAJMRtsR2KMwegagoZ+p8r9UAjcNAvqDSOLl2h44LzXB8MVatrUIAKCUoBHsyoNC
 DUqykHrHYxf9zaPa40JWnAh4WOssFHS2HTKimiFZcTUq92sCLyPBiuJUOypnF/9mqjGZ
 rTEfvmPb7Gh6iSPRFZ7su5e7pKbrhd1AEkR6XL28ya9MQnILBZ9EqybMA3gvPKCVtwX0
 ESshbgXUYNebsF6nSNZiOiyc0sek0yXOZMHpZ3VUqHqmeZD8JzNl2WpTVEnNV5Aol2Yi
 Bx+Q==
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=K+8ENENQ359xODTDb0GtbQo9L2Zb3oFbhuuTcOHpMqo=;
 b=jcqIiW/S8riwqp3mxmX+knEekrqG4uHpsdtVkbRJKqTmhRkFHctaJr4/REVdIW0p4c
 r2NbfNnNT1+aOs6u0XW1vifRWMnIkg+4tlufVQmpVAxa41MnnfAglu3kUSIcqzkRl8HW
 915m9MInR4T4H+w7fyCmmrJ8P7xo4BliJX6qVS2YdJ6Tb3LnSaV5G+lOZbDbovHINXRS
 bQ8H2tIA7xwwYMmgL58pdIoUkMhSDXIzNXDK5nj0ybUffNMfepCidU8IuTwh9f2YNYuU
 jowEiY/nu/X6RTZpnY47fIIAuJtH1wISzJbFrnQyx8/DI9HAkEc+Q3WlWmKNG1oExfPu
 1UVQ==
X-Gm-Message-State: APjAAAVMeZLM1CCzsFyEdXU9ZxSO/LaH4Q1REzDIfaMgW+ahMJgkzpR+
 1ImYPp3qnYeX23oRJlmGhZTy7qD661El5U7FGck=
X-Google-Smtp-Source: APXvYqyfYtqCO+LaC+qmGVLsy1J1iGXgz80Rbipzo+JFl7PpqH6a48rgNjfcTXmG0jxymLi5SuEqYvBJkSN3whJvClE=
X-Received: by 2002:ac2:4c3c:: with SMTP id u28mr7260592lfq.136.1561797304236; 
 Sat, 29 Jun 2019 01:35:04 -0700 (PDT)
MIME-Version: 1.0
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-4-cristb@gmail.com>
 <5078865d-73f1-2b64-dfad-cb27bbc7a430@neclab.eu>
In-Reply-To: <5078865d-73f1-2b64-dfad-cb27bbc7a430@neclab.eu>
From: Cristian Banu <cristb@gmail.com>
Date: Sat, 29 Jun 2019 11:34:52 +0300
Message-ID: <CAFJttSXEZjfiu3yK6Bh0BtyqpYzXQ6GhLy-_v8d4jJgKOYAHMA@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 3/8] lib/uk9p: Add 9P protocol
 core definitions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 costin.lupu@cs.pub.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>

T24gU2F0LCBKdW4gMjksIDIwMTkgYXQgMTA6MTEgQU0gU2ltb24gS3VlbnplciA8c2ltb24ua3Vl
bnplckBuZWNsYWIuZXU+IHdyb3RlOgo+Cj4gSGV5IENocmlzdGlhbiwKPgo+IHdoZXJlIGRpZCB5
b3UgZ2V0IHlvdXIgOVBGUyBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZyb20/IEkgd2FzIHdvbmRl
cmluZwo+IGlmIHlvdSBkZXJpdmVkIHlvdXIgbmFtZXMsIGNvbnN0YW50cyBhbmQgQVBJIGZ1bmN0
aW9uIGZyb20gdGhlcmUuIE1heWJlCj4geW91IHdhbnQgdG8gYWRkIGEgY29tbWVudCB3aXRoIHRo
ZSByZWZlcmVuY2Ugd2l0aGluIG9uZSBvZiB0aGUgaGVhZGVycy4KSSB3aWxsIGFkZCB0aGUgbGlu
a3MgdG8gdmFyaW91cyBkb2N1bWVudHMgSSB1c2VkIGZvciB0aGUgc3BlY2lmaWNhdGlvbiBmb3IK
OVAyMDAwIGFuZCA5UDIwMDAudS4KPgo+IE9uIDE5LjA2LjE5IDA5OjAzLCBDcmlzdGlhbiBCYW51
IHdyb3RlOgo+ID4gVGhpcyBwYXRjaCBhZGRzIHRoZSA5UCBwcm90b2NvbCBjb3JlIGRlZmluaXRp
b25zIGZvciB0aGUgc3RydWN0dXJlcyBpdAo+ID4gdXNlcyBhbmQgdGhlIHdpcmUgZm9ybWF0IHJl
cXVpcmVkLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFp
bC5jb20+Cj4gPiAtLS0KPiA+ICAgbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3JlLmggfCAyNDkg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgIDEgZmlsZSBj
aGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Vr
OXAvaW5jbHVkZS91ay85cF9jb3JlLmgKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5j
bHVkZS91ay85cF9jb3JlLmggYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaAo+ID4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOGYyY2RmNmIyYTY2Cj4g
PiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaAo+
ID4gQEAgLTAsMCArMSwyNDkgQEAKPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE
LTMtQ2xhdXNlICovCj4gPiArLyoKPiA+ICsgKiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlz
dGJAZ21haWwuY29tPgo+ID4gKyAqCj4gPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJz
aXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ICsg
Kgo+ID4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAo+ID4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ID4gKyAqIGFyZSBtZXQ6Cj4g
PiArICoKPiA+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ID4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiA+ICsgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAo+ID4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiA+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ID4gKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKPiA+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ID4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gPiArICoKPiA+ICsgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTICJBUyBJUyIKPiA+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gPiArICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKPiA+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gPiArICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+
ID4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCj4gPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gPiArICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KPiA+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ID4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
Cj4gPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gPiArICoKPiA+ICsgKiBUSElT
IEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ID4g
KyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYgX19VS185UF9DT1JFX18KPiA+ICsjZGVmaW5lIF9fVUtf
OVBfQ09SRV9fCj4gPiArCj4gPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+Cj4gWW91IHNob3VsZCBh
bHNvIGluY2x1ZGUgdGhlIGludGVnZXIgZGVmaW5pdGlvbnMgKHVpbnQzMl90LCBldGMuKSBoZXJl
Cj4gYmVjYXVzZSB5b3UgYXJlIHVzaW5nIHRoZW0gaW4gdGhpcyBmaWxlLgpEb25lLgo+Cj4gPiAr
Cj4gPiArI2lmZGVmIF9fY3BsdXNwbHVzCj4gPiArZXh0ZXJuICJDIiB7Cj4gPiArI2VuZGlmCj4g
PiArCj4gPiArLyoqCj4gPiArICogOVAgcmVxdWVzdCB0eXBlcy4KPiA+ICsgKi8KPiA+ICtlbnVt
IHVrXzlwX3R5cGUgewo+ID4gKyAgICAgVUtfOVBfVFZFUlNJT04gICAgICAgICAgPSAxMDAsCj4g
PiArICAgICBVS185UF9SVkVSU0lPTiwKPiA+ICsgICAgIFVLXzlQX1RBVVRIICAgICAgICAgICAg
ID0gMTAyLAo+ID4gKyAgICAgVUtfOVBfUkFVVEgsCj4gPiArICAgICBVS185UF9UQVRUQUNIICAg
ICAgICAgICA9IDEwNCwKPiA+ICsgICAgIFVLXzlQX1JBVFRBQ0gsCj4gPiArICAgICBVS185UF9U
RVJST1IgICAgICAgICAgICA9IDEwNiwKPiA+ICsgICAgIFVLXzlQX1JFUlJPUiwKPiA+ICsgICAg
IFVLXzlQX1RGTFVTSCAgICAgICAgICAgID0gMTA4LAo+ID4gKyAgICAgVUtfOVBfUkZMVVNILAo+
ID4gKyAgICAgVUtfOVBfVFdBTEsgICAgICAgICAgICAgPSAxMTAsCj4gPiArICAgICBVS185UF9S
V0FMSywKPiA+ICsgICAgIFVLXzlQX1RPUEVOICAgICAgICAgICAgID0gMTEyLAo+ID4gKyAgICAg
VUtfOVBfUk9QRU4sCj4gPiArICAgICBVS185UF9UQ1JFQVRFICAgICAgICAgICA9IDExNCwKPiA+
ICsgICAgIFVLXzlQX1JDUkVBVEUsCj4gPiArICAgICBVS185UF9UUkVBRCAgICAgICAgICAgICA9
IDExNiwKPiA+ICsgICAgIFVLXzlQX1JSRUFELAo+ID4gKyAgICAgVUtfOVBfVFdSSVRFICAgICAg
ICAgICAgPSAxMTgsCj4gPiArICAgICBVS185UF9SV1JJVEUsCj4gPiArICAgICBVS185UF9UQ0xV
TksgICAgICAgICAgICA9IDEyMCwKPiA+ICsgICAgIFVLXzlQX1JDTFVOSywKPiA+ICsgICAgIFVL
XzlQX1RSRU1PVkUgICAgICAgICAgID0gMTIyLAo+ID4gKyAgICAgVUtfOVBfUlJFTU9WRSwKPiA+
ICsgICAgIFVLXzlQX1RTVEFUICAgICAgICAgICAgID0gMTI0LAo+ID4gKyAgICAgVUtfOVBfUlNU
QVQsCj4gPiArICAgICBVS185UF9UV1NUQVQgICAgICAgICAgICA9IDEyNiwKPiA+ICsgICAgIFVL
XzlQX1JXU1RBVCwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIDlQIHZhbHVlcyBvZiBh
IHFpZC50eXBlLgo+ID4gKyAqLwo+ID4gK2VudW0gdWtfOXBfcWlkX3R5cGUgewo+ID4gKyAgICAg
VUtfOVBfUVRESVIgICAgICAgICAgICAgPSAweDgwLAo+ID4gKyAgICAgVUtfOVBfUVRBUFBFTkQg
ICAgICAgICAgPSAweDQwLAo+ID4gKyAgICAgVUtfOVBfUVRFWENMICAgICAgICAgICAgPSAweDIw
LAo+ID4gKyAgICAgVUtfOVBfUVRNT1VOVCAgICAgICAgICAgPSAweDIwLAo+ID4gKyAgICAgVUtf
OVBfUVRBVVRIICAgICAgICAgICAgPSAweDA4LAo+ID4gKyAgICAgVUtfOVBfUVRUTVAgICAgICAg
ICAgICAgPSAweDA0LAo+ID4gKyAgICAgVUtfOVBfUVRTWU1MSU5LICAgICAgICAgPSAweDAyLAo+
ID4gKyAgICAgVUtfOVBfUVRMSU5LICAgICAgICAgICAgPSAweDAxLAo+ID4gKyAgICAgVUtfOVBf
UVRGSUxFICAgICAgICAgICAgPSAweDAwLAo+ID4gK307Cj4KPiBBcmUgdGhlc2UgdmFsdWVzIHRy
ZWF0ZWQgYXMgYml0cywgbWVhbmluZyB0aGF0IHlvdSBjYW4gaGF2ZSBtdWx0aXBsZSBvZgo+IHRo
ZW0gYml0d2lzZS1PUmVkIGluIGEgdWtfOXBfcWlkX3R5cGUgZmllbGQ/IFNlZSBteSBuZXh0IGNv
bW1lbnQsIHRvby4KWWVzLCB0aGV5J3JlIGJpdHdpc2UtT1JlZCB0b2dldGhlciB0byBmb3JtIHRo
ZSBxaWQgdHlwZSwgYW5kIHRoZSBxaWQgdHlwZQpjb3JyZXNwb25kcyB0byB0aGUgbW9zdCBzaWdu
aWZpY2FudCBieXRlIG9mIHRoZSBwZXJtaXNzaW9uIGJlbG93Lgo+Cj4gPiArCj4gPiArLyoqCj4g
PiArICogOVAgcGVybWlzc2lvbiBiaXRzLgo+ID4gKyAqLwo+ID4gK2VudW0gdWtfOXBfcGVybSB7
Cj4gPiArICAgICBVS185UF9ETURJUiAgICAgICAgICAgICA9IDB4ODAwMDAwMDAsCj4gPiArICAg
ICBVS185UF9ETUFQUEVORCAgICAgICAgICA9IDB4NDAwMDAwMDAsCj4gPiArICAgICBVS185UF9E
TUVYQ0wgICAgICAgICAgICA9IDB4MjAwMDAwMDAsCj4gPiArICAgICBVS185UF9ETU1PVU5UICAg
ICAgICAgICA9IDB4MTAwMDAwMDAsCj4gPiArICAgICBVS185UF9ETUFVVEggICAgICAgICAgICA9
IDB4MDgwMDAwMDAsCj4gPiArICAgICBVS185UF9ETVRNUCAgICAgICAgICAgICA9IDB4MDQwMDAw
MDAsCj4gPiArICAgICBVS185UF9ETVNZTUxJTksgICAgICAgICA9IDB4MDIwMDAwMDAsCj4gPiAr
ICAgICBVS185UF9ETUxJTksgICAgICAgICAgICA9IDB4MDEwMDAwMDAsCj4gPiArICAgICBVS185
UF9ETURFVklDRSAgICAgICAgICA9IDB4MDA4MDAwMDAsCj4gPiArICAgICBVS185UF9ETU5BTUVE
UElQRSAgICAgICA9IDB4MDAyMDAwMDAsCj4gPiArICAgICBVS185UF9ETVNPQ0tFVCAgICAgICAg
ICA9IDB4MDAxMDAwMDAsCj4gPiArICAgICBVS185UF9ETVNFVFVJRCAgICAgICAgICA9IDB4MDAw
ODAwMDAsCj4gPiArICAgICBVS185UF9ETVNFVEdJRCAgICAgICAgICA9IDB4MDAwNDAwMDAsCj4g
PiArICAgICBVS185UF9ETVNFVFZUWCAgICAgICAgICA9IDB4MDAwMTAwMDAsCj4gPiArfTsKPgo+
IFVzdWFsbHksIHdlIGRlZmluZWQgYml0cyBhbmQgZmxhZ3Mgd2l0aCBtYWNyb3MgYW5kIHVzZWQg
ZW51bXMgd2hlbiB5b3UKPiBoYW5kLW92ZXIganVzdCBhIHNpbmdsZSB2YWx1ZS4KT2theSwgZml4
ZWQuCj4KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiA5UCBvcGVuIG1vZGUgYml0cy4KPiA+ICsgKi8K
PiA+ICtlbnVtIHVrXzlwX29wZW5fbW9kZSB7Cj4gPiArICAgICBVS185UF9PUkVBRCAgICAgICAg
ICAgICA9IDB4MDAsCj4gPiArICAgICBVS185UF9PV1JJVEUgICAgICAgICAgICA9IDB4MDEsCj4g
PiArICAgICBVS185UF9PUkRXUiAgICAgICAgICAgICA9IDB4MDIsCj4gPiArICAgICBVS185UF9P
RVhFQyAgICAgICAgICAgICA9IDB4MDMsCj4gPiArICAgICBVS185UF9PVFJVTkMgICAgICAgICAg
ICA9IDB4MTAsCj4gPiArICAgICBVS185UF9PUkVYRUMgICAgICAgICAgICA9IDB4MjAsCj4gPiAr
ICAgICBVS185UF9PUkNMT1NFICAgICAgICAgICA9IDB4NDAsCj4gPiArICAgICBVS185UF9PQVBQ
RU5EICAgICAgICAgICA9IDB4ODAsCj4gPiArICAgICBVS185UF9PRVhDTCAgICAgICAgICAgICA9
IDB4MTAwMCwKPiA+ICt9Owo+Cj4gU2FtZSBoZXJlLgpGaXhlZC4KPgo+ID4gKwo+ID4gKy8qKgo+
ID4gKyAqIDlQIHFpZC4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgdWtfOXBfcWlkIHsKPiA+ICsgICAg
IHVpbnQ4X3QgICAgICAgICAgICAgICAgIHR5cGU7Cj4gPiArICAgICB1aW50MzJfdCAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwo+ID4gKyAgICAgdWludDY0X3QgICAgICAgICAgICAgICAgcGF0aDsK
PiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIDlQIHN0cmluZy4KPiA+ICsgKi8KPiA+ICtz
dHJ1Y3QgdWtfOXBfc3RyIHsKPiA+ICsgICAgIHVpbnQxNl90ICAgICAgICAgICAgICAgIHNpemU7
Cj4gPiArICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAqZGF0YTsKPiA+ICt9Owo+ID4gKwo+
ID4gKy8qKgo+ID4gKyAqIENoZWNrIGlmIGEgOVAgc3RyaW5nIGlzIGVxdWFsIHRvIGEgZ2l2ZW4g
bnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KPiA+ICsgKgo+ID4gKyAqIEBwYXJhbSBzCj4gPiArICog
ICA5UCBzdHJpbmcuCj4gPiArICogQHBhcmFtIHAKPiA+ICsgKiAgIE51bGwtdGVybWluYXRlZCBz
dHJpbmcuCj4gPiArICogQHJldHVybgo+ID4gKyAqICAgMSBpZiBlcXVhbCwgMCBvdGhlcndpc2Uu
Cj4gPiArICovCj4gPiArc3RhdGljIGlubGluZSBpbnQgdWtfOXBfc3RyX2VxdWFsKGNvbnN0IHN0
cnVjdCB1a185cF9zdHIgKnMsIGNvbnN0IGNoYXIgKnApCj4gPiArewo+ID4gKyAgICAgcmV0dXJu
IHN0cmxlbihwKSA9PSBzLT5zaXplICYmICFzdHJuY21wKHMtPmRhdGEsIHAsIHMtPnNpemUpOwo+
ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBJbml0aWFsaXplIGEgOVAgc3RyaW5nIGZyb20g
YSBnaXZlbiBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgo+ID4gKyAqCj4gPiArICogQHBhcmFtIHMK
PiA+ICsgKiAgIDlQIHN0cmluZy4KPiA+ICsgKiBAcGFyYW0gcAo+ID4gKyAqICAgTnVsbC10ZXJt
aW5hdGVkIHN0cmluZy4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgdWtfOXBfc3Ry
X2luaXQoc3RydWN0IHVrXzlwX3N0ciAqcywgY29uc3QgY2hhciAqcCkKPiA+ICt7Cj4gPiArICAg
ICBpZiAoIXApIHsKPiA+ICsgICAgICAgICAgICAgcy0+c2l6ZSA9IDA7Cj4gPiArICAgICAgICAg
ICAgIHJldHVybjsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHMtPnNpemUgPSBzdHJsZW4o
cCk7Cj4gPiArICAgICBzLT5kYXRhID0gKGNoYXIgKilwOwo+ID4gK30KPiA+ICsKPiA+ICsvKioK
PiA+ICsgKiA5UCBzdGF0IHN0cnVjdHVyZS4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgdWtfOXBfc3Rh
dCB7Cj4gPiArICAgICB1aW50MTZfdCAgICAgICAgICAgICAgICBzaXplOwo+ID4gKyAgICAgdWlu
dDE2X3QgICAgICAgICAgICAgICAgdHlwZTsKPiA+ICsgICAgIHVpbnQzMl90ICAgICAgICAgICAg
ICAgIGRldjsKPiA+ICsgICAgIHN0cnVjdCB1a185cF9xaWQgICAgICAgIHFpZDsKPiA+ICsgICAg
IHVpbnQzMl90ICAgICAgICAgICAgICAgIG1vZGU7Cj4gPiArICAgICB1aW50MzJfdCAgICAgICAg
ICAgICAgICBhdGltZTsKPiA+ICsgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG10aW1lOwo+
ID4gKyAgICAgdWludDY0X3QgICAgICAgICAgICAgICAgbGVuZ3RoOwo+ID4gKyAgICAgc3RydWN0
IHVrXzlwX3N0ciAgICAgICAgbmFtZTsKPiA+ICsgICAgIHN0cnVjdCB1a185cF9zdHIgICAgICAg
IHVpZDsKPiA+ICsgICAgIHN0cnVjdCB1a185cF9zdHIgICAgICAgIGdpZDsKPiA+ICsgICAgIHN0
cnVjdCB1a185cF9zdHIgICAgICAgIG11aWQ7Cj4gPiArICAgICBzdHJ1Y3QgdWtfOXBfc3RyICAg
ICAgICBleHRlbnNpb247Cj4gPiArICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBuX3VpZDsK
PiA+ICsgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG5fZ2lkOwo+ID4gKyAgICAgdWludDMy
X3QgICAgICAgICAgICAgICAgbl9tdWlkOwo+ID4gK307Cj4KPiBPdXQgb2YgY3VyaW9zaXR5OiBE
b2VzIDlwIGhhcyBzb21ldGhpbmcgbGlrZSBwb3RlbnRpYWwgZGlmZmVyZW5jZSBvZgo+IGVuZGlh
bmVzcyBvbiB0aGUgd2lyZSBhbmQgdGhlIGhvc3Q/OyBJIG1lYW4gc29tZXRoaW5nIHNpbWlsYXIg
dG8gd2hhdAo+IHlvdSBmaW5kIGluIG5ldHdvcmtpbmcgcHJvdG9jb2xzLgo+IElmIHRoaXMgaXMg
dGhlIGNhc2UsIGl0IG1heSBtYWtlIHNlbnNlIHRvIGFkZCBhIFRPRE8gY29tbWVudCB0aGF0IHdl
IGFyZQo+IG5vdCBzdXBwb3J0aW5nIHRoaXMgY3VycmVudGx5LgpZZXMsIHRoZSB3aXJlIGZvcm1h
dCBpcyBhbHdheXMgbGl0dGxlLWVuZGlhbi4gSSB3aWxsIGFkZCBhIFRPRE8uCj4KPiA+ICsKPiA+
ICsvKioKPiA+ICsgKiBJbml0aWFsaXplIGEgOVAgc3RhdCBzdHJ1Y3R1cmUgdGhhdCB3b24ndCBt
b2RpZnkgYW55IGZpZWxkcyBpZiBzZW50IHdpdGggYQo+ID4gKyAqIFdTVEFUIG1lc3NhZ2UsIGJ5
IHNldHRpbmcgYWxsIGludGVnZXIgZmllbGRzIHRvIH4wIGFuZCBhbGwgc3RyaW5nIGZpZWxkcyB0
bwo+ID4gKyAqIGVtcHR5IHN0cmluZ3MuCj4gPiArICoKPiA+ICsgKiBAcGFyYW0gc3RhdAo+ID4g
KyAqICAgVGhlIDlQIHN0YXQgc3RydWN0dXJlLgo+ID4gKyAqLwo+ID4gK3N0YXRpYyBpbmxpbmUg
dm9pZCB1a185cF9zdGF0X2luaXQoc3RydWN0IHVrXzlwX3N0YXQgKnN0YXQpCj4gPiArewo+Cj4g
Q2FuIHlvdSBhZGQgYW4gYXNzZXJ0aW9uIHRvIGNoZWNrIHRoYXQgc3RhdCAhPSBOVUxMPwpEb25l
Lgo+Cj4gPiArICAgICBtZW1zZXQoc3RhdCwgfjAsIHNpemVvZihzdHJ1Y3QgdWtfOXBfc3RhdCkp
Owo+ID4gKyAgICAgc3RhdC0+bmFtZS5zaXplID0gMDsKPiA+ICsgICAgIHN0YXQtPnVpZC5zaXpl
ID0gMDsKPiA+ICsgICAgIHN0YXQtPmdpZC5zaXplID0gMDsKPiA+ICsgICAgIHN0YXQtPm11aWQu
c2l6ZSA9IDA7Cj4gPiArICAgICBzdGF0LT5leHRlbnNpb24uc2l6ZSA9IDA7Cj4gPiArfQo+ID4g
Kwo+ID4gKy8qKgo+ID4gKyAqIE5vIHRhZywgdXNlZCBieSB0aGUgVHZlcnNpb24vUnZlcnNpb24g
cGFpciBvZiByZXF1ZXN0L3JlcGx5IG1lc3NhZ2VzLgo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgVUtf
OVBfTk9UQUcgICAgICAgICAgICAgICAgICAgIFVJTlQxNl9NQVgKPgo+IFJlbWVtYmVyIHRvIGlu
Y2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRlZmluZXMgdGhlIGxpbWl0cy4KRG9uZS4KPgo+ID4gKwo+
ID4gKy8qKgo+ID4gKyAqIE1heGltdW0gYXZhaWxhYmxlIHRhZyBmb3IgdXNlLgo+ID4gKyAqIFVL
XzlQX05PVEFHICh+MCkgaXMgcmVzZXJ2ZWQgYnkgdGhlIDlQIFJGQyBmb3IgcmVwcmVzZW50aW5n
IG5vIHRhZy4KPiA+ICsgKi8KPiA+ICsjZGVmaW5lIFVLXzlQX01BWFRBRyAgICAgICAgICAgICAg
ICAgICAoVUlOVDE2X01BWCAtIDEpCj4gPiArCj4gPiArLyoqCj4gPiArICogTnVtYmVyIG9mIHBv
c3NpYmxlIHRhZ3MsIGluY2x1ZGluZyBOT1RBRy4KPiA+ICsgKi8KPiA+ICsjZGVmaW5lIFVLXzlQ
X05VTVRBR1MgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShVSU5UMTZfTUFYKSArIDEpCj4g
PiArCj4gPiArLyoqCj4gPiArICogTm8gZmlkLCB1c2VkIHRvIG1hcmsgYSBmaWQgZmllbGQgYXMg
dW51c2VkLgo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgVUtfOVBfTk9GSUQgICAgICAgICAgICAgICAg
ICAgIFVJTlQzMl9NQVgKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBObyBuX3VuYW1lIGluIFRBVFRB
Q0ggcmVxdWVzdHMsIHVzZWQgdG8gbWFyayB0aGUgZmllbGQgYXMgdW51c2VkLgo+ID4gKyAqLwo+
ID4gKyNkZWZpbmUgVUtfOVBfTk9OVU5BTUUgICAgICAgICAgICAgICAgIFVJTlQzMl9NQVgKPiA+
ICsKPiA+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiA+ICt9Cj4gPiArI2VuZGlmCj4gPiArCj4gPiAr
I2VuZGlmIC8qIF9fVUtfOVBfQ09SRV9fICovCj4gPgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hh9Bt-0001r3-Bj; Sat, 29 Jun 2019 08:58:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bs-0001qp-7l
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:36 +0000
X-Inumbo-ID: 137c29ca-9a4c-11e9-8980-bc764e045a96
Received: from mail-wm1-x32f.google.com (unknown [2a00:1450:4864:20::32f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 137c29ca-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:35 +0000 (UTC)
Received: by mail-wm1-x32f.google.com with SMTP id f17so11083366wme.2
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58:35 -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=2ORw/2Pq96eEx7poyR90Ljm5cWJs8v+qcXuVDpEmeg0=;
 b=L1NkfHiIPwUS+eq6Rq3LHL/BkGfqFCsU6OsVd0SaDWEQrBObSXe7SuBF4DHCmzUJ5Q
 VNwdPkSSN0rcauaz68o5zNlD9ddYvwIvvqdNfF1NY0NfIh2+6wL6cPYD0OIiDM4yOij4
 m58YJNcowRP6JKL/c6VMIxttQRW55BS2mDNEmwtR+K86Z/hNGgiKqVcvSq3Q5coIMgrM
 5IbwEM4v1af7RQaxyyl/48clJKe6rNZoH6LZuF12PTH0kslnOIMFNbzRBI7Uxy55mBuG
 Tegh0J6twXqoFBa1Nb4K7JEqYIvNTbBTwPsXiLWsOY2gVqdbgd2apCFklrXT6xOWTn5i
 AmLg==
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=2ORw/2Pq96eEx7poyR90Ljm5cWJs8v+qcXuVDpEmeg0=;
 b=RIpbvnsA8yGh3Q2fxqc3j3YJtqNxeyR7h/CkkE9hlpn+BbzWX2Wet33tuzE8CLA5Bk
 QDU/4dLuhNFHZ2VVsWKYwomfzxEnhV9oVilO6zjhXuZc6ZeyfL2DpIzxRqGtHXnHCnCj
 ktIMkSfdXEVpeEsgYyh9tdd6ku4gwQnD3LO/S9R1jgccwfnygC8RLNqaYy0shk+7Pjfh
 kidp84+KfzpemUsfQycssWnuRBoDR0ovV7ex4Gz+x3XE5+OENEg1qPYOP//mPsJMQGj0
 +28Wd7EuFSOyjQBl6kkgTA0Cb2w6weBqnzjRT8nzDtvAJbUpMeDMlqf5m5HJdtBy3iqM
 4Vgg==
X-Gm-Message-State: APjAAAXr/MsNaj8B+ExeJ0tBWYWaJVpAJ4vMwETXBRs7vG2401+xsX3F
 PEr8xqiigUiK8mJri8yK2ZH3id/2bOA=
X-Google-Smtp-Source: APXvYqxo4vUL2RkyPHgi44e/8WeRuoGAEh1tCBOewq9+XIYymGXvNWsNM6MPbxcOyfyVxqFP4HxGZg==
X-Received: by 2002:a1c:8017:: with SMTP id b23mr10099289wmd.117.1561798714161; 
 Sat, 29 Jun 2019 01:58:34 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.33
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:33 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:01 +0300
Message-Id: <20190629085608.15680-2-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/8] lib/uk9p: Add 9P 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, simon.kuenzer@neclab.eu,
 Cristian Banu <cristb@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>

QWRkIGxpYnVrOXAgc2tlbGV0b24gYW5kIHJlZ2lzdGVyIGl0IHdpdGhpbiB0aGUgYnVpbGQgc3lz
dGVtLgoKU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KLS0t
CiBsaWIvQ29uZmlnLnVrICAgICAgICB8IDEgKwogbGliL01ha2VmaWxlLnVrICAgICAgfCAxICsK
IGxpYi91azlwL0NvbmZpZy51ayAgIHwgNiArKysrKysKIGxpYi91azlwL01ha2VmaWxlLnVrIHwg
NCArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdWs5cC9Db25maWcudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9NYWtl
ZmlsZS51awoKZGlmZiAtLWdpdCBhL2xpYi9Db25maWcudWsgYi9saWIvQ29uZmlnLnVrCmluZGV4
IDgyMmM2MjRmZDU0OC4uOWZlODM3MjAzY2RhIDEwMDY0NAotLS0gYS9saWIvQ29uZmlnLnVrCisr
KyBiL2xpYi9Db25maWcudWsKQEAgLTQ3LDMgKzQ3LDQgQEAgc291cmNlICJsaWIvdWtzd3JhbmQv
Q29uZmlnLnVrIgogc291cmNlICJsaWIvdWtidXMvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtz
Z2xpc3QvQ29uZmlnLnVrIgogc291cmNlICJsaWIvdWtuZXRkZXYvQ29uZmlnLnVrIgorc291cmNl
ICJsaWIvdWs5cC9Db25maWcudWsiCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIv
TWFrZWZpbGUudWsKaW5kZXggZDA2ODM3ZjE0MzM4Li5iMWQ0NGQ0MGFiOTMgMTAwNjQ0Ci0tLSBh
L2xpYi9NYWtlZmlsZS51aworKysgYi9saWIvTWFrZWZpbGUudWsKQEAgLTI0LDMgKzI0LDQgQEAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQog
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQog
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xpc3Qp
KQogJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtuZXRk
ZXYpKQorJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWs5
cCkpCmRpZmYgLS1naXQgYS9saWIvdWs5cC9Db25maWcudWsgYi9saWIvdWs5cC9Db25maWcudWsK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYTQxMTQ0ODMwNGMKLS0t
IC9kZXYvbnVsbAorKysgYi9saWIvdWs5cC9Db25maWcudWsKQEAgLTAsMCArMSw2IEBACitjb25m
aWcgTElCVUs5UAorCWJvb2wgInVrOXA6IDlwIGNsaWVudCIKKwlkZWZhdWx0IG4KKwlzZWxlY3Qg
TElCVUtBTExPQworCXNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVfTElCQworCXNlbGVjdCBMSUJV
S0RFQlVHCmRpZmYgLS1naXQgYS9saWIvdWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2Vm
aWxlLnVrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmE3NTQ0NDA1
OThjCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3VrOXAvTWFrZWZpbGUudWsKQEAgLTAsMCArMSw0
IEBACiskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVrOXAsJChDT05GSUdfTElCVUs5UCkpKQor
CitDSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1
ZGUKK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLOVApCQkrPSAtSSQoTElCVUs5UF9CQVNFKS9p
bmNsdWRlCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hh9Bt-0001qy-A5; Sat, 29 Jun 2019 08:58:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bs-0001qo-6L
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:36 +0000
X-Inumbo-ID: 12fe05ee-9a4c-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 12fe05ee-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:34 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id c27so888078wrb.2
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58: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;
 bh=fkewrco+rnkG7/BDhM2/ngIYGdpZ3VVXwMxpRynQHpM=;
 b=YWs5tCcX02UAg9EytDUgu26lbGiqruwGv+smXljJlY/py7HQPTr5LKHm59ayvoJ7DJ
 Y50+GWVCAWIt6hPzy2FZtwEI5HW+M0SwMEA/p3IAYZ2uyzpbrNnFiedFyT/dD9+kevU/
 Rh/RH0AGMzoEeskfxg1+EG8ZGNkl9MbP2ix8jX1XGhg+ipwTlADM/rfPmA+xv3yvyNwo
 JEpmfE9L/hayQv0MGOKJPH39cC5pZaUBnjMkTqVChO0VT1QLhHbKcs+gHeAoLdnRbxWn
 tSPvwAoKRDcPyMtz02/TsGMm454hXtge75vIQqLMUpNK+KCUIPIKj6YT5OwyqcnxvjC7
 0Ftg==
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=fkewrco+rnkG7/BDhM2/ngIYGdpZ3VVXwMxpRynQHpM=;
 b=L1YsjUap+Ty2pQvubcx226K++iTrmFthXmyPNcamM22viCt/zjrEjDHIhTQhgNhrpV
 yNJDjvOw6we5aWF578GQihWruE0/DnXxdQAcz5wcKX/94bAdS0SzRK9MkikbNNrS2Dnk
 iy4txTt3ITtvXnx4kGMwlrlB6HKopbVCgvq2o52osdjghyeUxpJJ8E5H51T+pHJy6Ua8
 NyYjLEkJb9Sya9ThMaVe1CQ2MomyQBJsAXV12oM12ckGU/Zao2QAtH5Ff/hgKnoTzMxg
 PRqy1Ye7hhCFjVNtXkMKw3MJNQMZgSXKnbbtcfGqGC8kE2zO5mw1bBLSc+oHhj1cJtaJ
 Frnw==
X-Gm-Message-State: APjAAAXIh/uhzgwang1zLwlUOzQzfWkQdTQeFAZTEdiHxFWpuQbtUpUi
 m9999b2V4IJxbUdG1adjaGmNoBywAd4=
X-Google-Smtp-Source: APXvYqxgp5HIce9jduYUqJzB4gUogaPBrjpKWldzr7dN2bpF37bDTxiJVX5J2MAyeqPHRAoZgvQ4ZA==
X-Received: by 2002:a5d:4647:: with SMTP id j7mr11810925wrs.334.1561798713329; 
 Sat, 29 Jun 2019 01:58:33 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.32
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:32 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:00 +0300
Message-Id: <20190629085608.15680-1-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/8] Unikraft 9P API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNlcyB0aGUgOVAgQVBJLCB3aGljaCBhY3RzIGFzIGEg
Z2VuZXJpYwppbnRlcmZhY2UgYmV0d2VlbiB0aGUgOVAgdHJhbnNwb3J0IGRyaXZlcnMgKHhlbiwg
dmlydGlvKSBhbmQKdGhlIDlwZnMgaW1wbGVtZW50YXRpb24uIFRoZSBBUEkgbWF5IGFsc28gYmUg
dXNlZCBkaXJlY3RseSBieQp1c2Vycy4KClRoZSB0cmFuc3BvcnQgZHJpdmVycyByZWdpc3RlciB0
aGVtc2VsdmVzIHdpdGggdGhlIEFQSSB1c2luZyB0aGUKZGVmaW5pdGlvbnMgZnJvbSA5cGRldl90
cmFucy5oIGFuZCA5cGRldl9jb3JlLmgsIGFuZCBpbXBsZW1lbnQKdGhlIGNvbm5lY3QsIGRpc2Nv
bm5lY3QgYW5kIHJlcXVlc3QgY2FsbGJhY2tzLgoKVGhlIHByb3RvY29sIGNvcmUgdHlwZXMgYW5k
IGNvbnN0YW50cyBjYW4gYmUgZm91bmQgaW4gOXBfY29yZS5oLAphbmQgYSBoZWxwZXIgaW50ZXJm
YWNlIHRvIHRoZSBvcGVyYXRpb25zIHN1cHBvcnRlZCBieSB0aGUgOVAKcHJvdG9jb2wgY2FuIGJl
IGZvdW5kIGluIDlwLmguCgpUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIG9iamVjdHMgd2hpY2ggbXVz
dCBiZSBtYW5hZ2VkIGNhcmVmdWxseQpieSB0aGUgQVBJOiB0aGUgcmVxdWVzdCBhbmQgdGhlIGZp
ZCAoaGFuZGxlIHRvIGEgZmlsZXN5c3RlbQplbnRpdHkgc3VjaCBhcyBhIGZpbGUgb3IgZGlyZWN0
b3J5LCBzaW1pbGFyIHRvIGEgZmlsZQpkZXNjcmlwdG9yKS4gVGhlIG1hbmFnZW1lbnQgb2YgYm90
aCBvZiB0aG9zZSBpcyBhYnN0cmFjdGVkIGludG8KOXByZXEuaCBhbmQgOXBmaWQuaCByZXNwZWN0
aXZlbHkuCgpDaGFuZ2VzIHNpbmNlIHYxOgotIE1ha2UgdXNlIG9mIHdhaXQtcXVldWVzIGlmIGF2
YWlsYWJsZSwgaW5zdGVhZCBvZiBidXN5IHdhaXRpbmcuCi0gTW9kaWZ5IHRyYW5zcG9ydCBsb29r
dXAgdG8gcmV0dXJuIHRoZSB0cmFuc3BvcnQgaW5zdGVhZCBvZgogIHBhc3NpbmcgaXQgdGhyb3Vn
aCBhbiBhcmd1bWVudC4KLSBDaGFuZ2UgbGlicmFyeSBkZXNjcmlwdGlvbiBpbiBtZW51Y29uZmln
IHRvICI5cCBjbGllbnQiLgotIFVwZGF0ZSBiaXR3aXNlLU9SJ2VkIGZsYWdzIHRvIGJlIG1hY3Jv
cyBpbnN0ZWFkIG9mIGZpZWxkcyBpbgogIGVudW1zIGluIDlwX2NvcmUuaC4KLSBBZGQgc3VwcG9y
dCBmb3IgemVyby1jb3B5aW5nLgoKQ3Jpc3RpYW4gQmFudSAoOCk6CiAgbGliL3VrOXA6IEFkZCA5
UCBsaWJyYXJ5IHNrZWxldG9uCiAgbGliL3VrOXA6IEFkZCA5UCB0cmFuc3BvcnQgcmVnaXN0cmF0
aW9uCiAgbGliL3VrOXA6IEFkZCA5UCBwcm90b2NvbCBjb3JlIGRlZmluaXRpb25zCiAgbGliL3Vr
OXA6IEFkZCA5UCByZXF1ZXN0cyBhYnN0cmFjdGlvbgogIGxpYi91azlwOiBBZGQgOVAgZGV2aWNl
IGltcGxlbWVudGF0aW9uCiAgbGliL3VrOXA6IEFkZCA5UCBmaWQgYWJzdHJhY3Rpb24KICBsaWIv
dWs5cDogQWRkIDlQIGhlbHBlciBBUEkKICBsaWIvdWs5cDogQ2x1bmsgZmlkcyBvbiBmaWQgcmVs
ZWFzZQoKIGxpYi9Db25maWcudWsgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvTWFr
ZWZpbGUudWsgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL3VrOXAvOXAuYyAgICAgICAg
ICAgICAgICAgICAgIHwgNDMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdWs5
cC85cGRldi5jICAgICAgICAgICAgICAgICAgfCA0NjAgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCiBsaWIvdWs5cC85cGRldl90cmFucy5jICAgICAgICAgICAgfCAgODAgKysrKysrCiBs
aWIvdWs5cC85cGZpZC5jICAgICAgICAgICAgICAgICAgfCAgNzEgKysrKysKIGxpYi91azlwLzlw
cmVxLmMgICAgICAgICAgICAgICAgICB8IDU2OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwogbGliL3VrOXAvQ29uZmlnLnVrICAgICAgICAgICAgICAgIHwgICA2ICsKIGxp
Yi91azlwL01ha2VmaWxlLnVrICAgICAgICAgICAgICB8ICAxMCArCiBsaWIvdWs5cC9leHBvcnRz
eW1zLnVrICAgICAgICAgICAgfCAgNDMgKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwLmggICAg
ICAgICAgfCAyNjAgKysrKysrKysrKysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBfY29y
ZS5oICAgICB8IDI3MSArKysrKysrKysrKysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBk
ZXYuaCAgICAgICB8IDIxMSArKysrKysrKysrKysrKwogbGliL3VrOXAvaW5jbHVkZS91ay85cGRl
dl9jb3JlLmggIHwgMTg5ICsrKysrKysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZf
dHJhbnMuaCB8ICA5OSArKysrKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZmlkLmggICAgICAg
fCAxMTUgKysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXByZXEuaCAgICAgICB8IDMwMCAr
KysrKysrKysrKysrKysrKysrKwogMTcgZmlsZXMgY2hhbmdlZCwgMzExNyBpbnNlcnRpb25zKCsp
CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi91azlwLzlwZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC85cGRldl90cmFucy5j
CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBmaWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYi91azlwLzlwcmVxLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9Db25maWcudWsK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9NYWtlZmlsZS51awogY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi91azlwL2V4cG9ydHN5bXMudWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9p
bmNsdWRlL3VrLzlwLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlw
X2NvcmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXYuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cHJlcS5oCgotLSAKMi4xMS4wCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hh9Bv-0001rl-DV; Sat, 29 Jun 2019 08:58:39 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bt-0001r8-II
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:37 +0000
X-Inumbo-ID: 1410ba55-9a4c-11e9-8980-bc764e045a96
Received: from mail-wm1-x333.google.com (unknown [2a00:1450:4864:20::333])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1410ba55-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:36 +0000 (UTC)
Received: by mail-wm1-x333.google.com with SMTP id c6so11119983wml.0
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58: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:in-reply-to:references;
 bh=lMfr+SN7HNSraQcORstdn2skcXJoEr5zPV4qc8FxSMs=;
 b=AMWs3RrdpegwuhKcumHijohrlNpyZpFJ4Bap/LXuGqnAevGzqs+sQGq223+nTyFndH
 3rztSK+vEgAusVpQpDV4RjN5qx3hY93Stt+Nr6WH9mWNrDS6mSeyuryCF+/g/aBzyrlW
 8msjJ1cyorgC3VwQ1J5nZhx3MsDSoSd5KEZJAS6396R8/bXXNixI8FSVPEqVQwMrXvcl
 XCTjh6gMSDCd6NfSY8cy5e3tgGo/EemgY/o6KRIMyoeMxNwo0Xr0pN5eC4hs2HQKPDkn
 SbiBvUCbp13n/dO7j7gein0PVLzHq+AffRqltbDZ8q6zqjQq7YaS29SsiUky3bbAVxnM
 gRHg==
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=lMfr+SN7HNSraQcORstdn2skcXJoEr5zPV4qc8FxSMs=;
 b=R2CA03M4TDA9wlfRX37aIxGcn1NNoB/o/Y+9ox0Vhugq7u2Ftd8/Bztzba+hPmYB2N
 DO/CC9LWcT+MuLSeNwKk0vm2SO1wSQAFCojxIBmrkY/VlaQ1wygU9+hgF5c6pR6zGpn3
 Bq0coIW25JnnZ11UuROqsY8Q8gkIOMMKblheA8fM+qlk3xR9QrEm2FWY9WB8HrIy9cqC
 6asZHPH5qJPEZF635adCQuWa6rlxKcmlfViA3Pr7b8jbUm31ChiV80s8wucCTvAatuGJ
 KGshE2s+1GLxngE24ky/6+UsiKM/OROP0M/wJkXj2Kv7AsSuup6On4x5/LHBzByrwSIb
 a2pw==
X-Gm-Message-State: APjAAAX1PsZ8yzBC+xq87vAdoXcmG+Zci3+6jQv53EGoW6X6749eB3Gg
 vaV0lfRUVp+5L6sE1RnV6vEFy9g3hWY=
X-Google-Smtp-Source: APXvYqxWGX4440f7VGxN9ysrvbEcxtvMV2TRzY2SIyjZMZPlkwtCMvMUcXowh5JOPei1om4AHXaSsQ==
X-Received: by 2002:a1c:3587:: with SMTP id c129mr10820481wma.90.1561798715094; 
 Sat, 29 Jun 2019 01:58:35 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.34
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:34 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:02 +0300
Message-Id: <20190629085608.15680-3-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/8] lib/uk9p: Add 9P transport
 registration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSA5UCB0cmFuc3BvcnQgcmVnaXN0cmF0aW9uIGFuZCBs
b29rdXAgQVBJLgoKVHJhbnNwb3J0cyBhcmUgY29tbXVuaWNhdGlvbiBjaGFubmVscyBzdWNoIGFz
IHZpcnRpbyBieSB1c2luZyB0aGUKdmlydGlvLTlwIGRldmljZSwgb3IgeGVuIHJpbmdzLiBUaG9z
ZSBhcmUgdGhlIGRlZmF1bHQgdHJhbnNwb3J0cwpmb3IgdGhlIEtWTSBhbmQgWGVuIHBsYXRmb3Jt
cyByZXNwZWN0aXZlbHkuIEhvd2V2ZXIsIGluIHRoZSBmdXR1cmUKb25lIG1pZ2h0IGhhdmUgbXVs
dGlwbGUgYXZhaWxhYmxlIHRyYW5zcG9ydHMgZm9yIHRoZSBzYW1lIHBsYXRmb3JtCmJ5IHN1cHBv
cnRpbmcgVENQIG9yIFJETUEuCgpTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJA
Z21haWwuY29tPgotLS0KIGxpYi91azlwLzlwZGV2X3RyYW5zLmMgICAgICAgICAgICB8IDc2ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91azlwL01ha2VmaWxlLnVrICAgICAg
ICAgICAgICB8ICAyICsKIGxpYi91azlwL2V4cG9ydHN5bXMudWsgICAgICAgICAgICB8ICAzICsr
CiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmggfCA5NiArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMo
KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC85cGRldl90cmFucy5jCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3VrOXAvZXhwb3J0c3ltcy51awogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91
azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaAoKZGlmZiAtLWdpdCBhL2xpYi91azlwLzlwZGV2
X3RyYW5zLmMgYi9saWIvdWs5cC85cGRldl90cmFucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNjM3Mjg3Njc2NWIyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3Vr
OXAvOXBkZXZfdHJhbnMuYwpAQCAtMCwwICsxLDc2IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jp
c3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8K
KworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWsv
Y29uZmlnLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgor
I2luY2x1ZGUgPHVrLzlwZGV2X3RyYW5zLmg+CisKK3N0YXRpYyBVS19MSVNUX0hFQUQodWtfOXBk
ZXZfdHJhbnNfbGlzdCk7CisKK3N0YXRpYyBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnVrXzlwZGV2
X3RyYW5zX3NhdmVkX2RlZmF1bHQ7CisKK2ludCB1a185cGRldl90cmFuc19yZWdpc3RlcihzdHJ1
Y3QgdWtfOXBkZXZfdHJhbnMgKnRyYW5zKQoreworCVVLX0FTU0VSVCh0cmFucyk7CisJVUtfQVNT
RVJUKHRyYW5zLT5uYW1lKTsKKwlVS19BU1NFUlQodHJhbnMtPmEpOworCisJdWtfbGlzdF9hZGRf
dGFpbCgmdHJhbnMtPl9saXN0LCAmdWtfOXBkZXZfdHJhbnNfbGlzdCk7CisJaWYgKHRyYW5zLT5p
c19kZWZhdWx0KQorCQl1a185cGRldl90cmFuc19zYXZlZF9kZWZhdWx0ID0gdHJhbnM7CisKKwl1
a19wcl9pbmZvKCJSZWdpc3RlcmVkIHRyYW5zcG9ydCAlc1xuIiwgdHJhbnMtPm5hbWUpOworCisJ
cmV0dXJuIDA7Cit9CisKK3N0cnVjdCB1a185cGRldl90cmFucyAqdWtfOXBkZXZfdHJhbnNfYnlf
bmFtZShjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCB1a185cGRldl90cmFucyAqdDsKKwor
CXVrX2xpc3RfZm9yX2VhY2hfZW50cnkodCwgJnVrXzlwZGV2X3RyYW5zX2xpc3QsIF9saXN0KSB7
CisJCWlmICghc3RyY21wKHQtPm5hbWUsIG5hbWUpKQorCQkJcmV0dXJuIHQ7CisJfQorCisJcmV0
dXJuIE5VTEw7Cit9CisKK3N0cnVjdCB1a185cGRldl90cmFucyAqdWtfOXBkZXZfdHJhbnNfZGVm
YXVsdCh2b2lkKQoreworCXJldHVybiB1a185cGRldl90cmFuc19zYXZlZF9kZWZhdWx0OworfQpk
aWZmIC0tZ2l0IGEvbGliL3VrOXAvTWFrZWZpbGUudWsgYi9saWIvdWs5cC9NYWtlZmlsZS51awpp
bmRleCBmYTc1NDQ0MDU5OGMuLmIxMDcxYTBlN2QzYyAxMDA2NDQKLS0tIGEvbGliL3VrOXAvTWFr
ZWZpbGUudWsKKysrIGIvbGliL3VrOXAvTWFrZWZpbGUudWsKQEAgLTIsMyArMiw1IEBAICQoZXZh
bCAkKGNhbGwgYWRkbGliX3MsbGlidWs5cCwkKENPTkZJR19MSUJVSzlQKSkpCiAKIENJTkNMVURF
Uy0kKENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQogQ1hYSU5D
TFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUKKwor
TElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2X3RyYW5zLmMKZGlmZiAtLWdp
dCBhL2xpYi91azlwL2V4cG9ydHN5bXMudWsgYi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDVmNDg3ZGEyZmZmCi0tLSAvZGV2
L251bGwKKysrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awpAQCAtMCwwICsxLDMgQEAKK3VrXzlw
ZGV2X3RyYW5zX3JlZ2lzdGVyCit1a185cGRldl90cmFuc19ieV9uYW1lCit1a185cGRldl90cmFu
c19kZWZhdWx0CmRpZmYgLS1naXQgYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgg
Yi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi43YjY2NDVmYjVlODQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIv
dWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmgKQEAgLTAsMCArMSw5NiBAQAorLyogU1BEWC1M
aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENyaXN0
aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBV
bml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9s
ZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBB
TlkgV0FZLgorICovCisKKyNpZm5kZWYgX19VS185UERFVl9UUkFOU19fCisjZGVmaW5lIF9fVUtf
OVBERVZfVFJBTlNfXworCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHVrL2NvbmZp
Zy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBB
IHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgdHJhbnNwb3J0LiAqLworc3RydWN0IHVrXzlw
ZGV2X3RyYW5zIHsKKwkvKgorCSAqIFRyYW5zcG9ydCBuYW1lIChlLmcuICJ2aXJ0aW8iLCAieGVu
IikuIFRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQgZm9yCisJICogZnV0dXJlIHVzZSwgd2hlbiBtdWx0
aXBsZSB0cmFuc3BvcnQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZQorCSAqIHNhbWUgcGxh
dGZvcm0sIHN1Y2ggYXMgUkRNQSBvciBUQ1AsIGluIGFkZGl0aW9uIHRvIHRoZSBwbGF0Zm9ybQor
CSAqIHNwZWNpZmljIHRyYW5zcG9ydC4KKwkgKi8KKwljb25zdCBjaGFyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKm5hbWU7CisJLyogQ2FuIHRoZSB0cmFuc3BvcnQgYmUgdXNlZCBhcyBh
IGRlZmF1bHQgb25lPyAqLworCWJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc19kZWZhdWx0OworCS8qIEFsbG9jYXRvciB1c2VkIGZvciBkZXZpY2VzIHdoaWNoIHVzZSB0
aGlzIHRyYW5zcG9ydCBsYXllci4gKi8KKwlzdHJ1Y3QgdWtfYWxsb2MgICAgICAgICAgICAgICAg
ICAgICAgICAgKmE7CisJLyogQGludGVybmFsIEVudHJ5IGluIHRoZSBsaXN0IG9mIGF2YWlsYWJs
ZSB0cmFuc3BvcnRzLiAqLworCXN0cnVjdCB1a19saXN0X2hlYWQgICAgICAgICAgICAgICAgICAg
ICBfbGlzdDsKK307CisKKy8qKgorICogQWRkcyBhIHRyYW5zcG9ydCB0byB0aGUgYXZhaWxhYmxl
IHRyYW5zcG9ydHMgbGlzdCBmb3IgVW5pa3JhZnQgOVAgRGV2aWNlcy4KKyAqIFRoaXMgc2hvdWxk
IGJlIGNhbGxlZCBvbmNlIHBlciBkcml2ZXIgKG9uY2UgZm9yIHZpcnRpbywgb25jZSBmb3IgeGVu
LCBldGMuKS4KKyAqCisgKiBAcGFyYW0gdHJhbnMKKyAqICAgUG9pbnRlciB0byB0aGUgdHJhbnNw
b3J0IHN0cnVjdHVyZS4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCisgKiAg
IC0gKDwgMCk6IEZhaWxlZCB0byByZWdpc3RlciB0aGUgdHJhbnNwb3J0IGxheWVyLgorICovCitp
bnQgdWtfOXBkZXZfdHJhbnNfcmVnaXN0ZXIoc3RydWN0IHVrXzlwZGV2X3RyYW5zICp0cmFucyk7
CisKKy8qKgorICogTG9va3MgdXAgYSB0cmFuc3BvcnQgbGF5ZXIgYnkgaXRzIG5hbWUuCisgKgor
ICogQHBhcmFtIG5hbWUKKyAqICAgVGhlIHRyYW5zcG9ydCBsYXllciBuYW1lLgorICogQHJldHVy
bgorICogICBUaGUgOVAgdHJhbnNwb3J0IHdpdGggdGhlIGdpdmVuIG5hbWUsIG9yIE5VTEwgaWYg
bWlzc2luZy4KKyAqLworc3RydWN0IHVrXzlwZGV2X3RyYW5zICp1a185cGRldl90cmFuc19ieV9u
YW1lKGNvbnN0IGNoYXIgKm5hbWUpOworCisvKioKKyAqIEdldHMgdGhlIGRlZmF1bHQgdHJhbnNw
b3J0IGxheWVyLgorICoKKyAqIEByZXR1cm4KKyAqICAgVGhlIGRlZmF1bHQgOVAgdHJhbnNwb3J0
LCBvciBOVUxMIGlmIG1pc3NpbmcuCisgKi8KK3N0cnVjdCB1a185cGRldl90cmFucyAqdWtfOXBk
ZXZfdHJhbnNfZGVmYXVsdCh2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8qIF9fVUtfOVBERVZfVFJBTlNfXyAqLwotLSAKMi4xMS4wCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08: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 1hh9Bw-0001s9-FH; Sat, 29 Jun 2019 08:58:40 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bu-0001rN-Tp
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:38 +0000
X-Inumbo-ID: 1490bce0-9a4c-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1490bce0-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:37 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id n9so8634090wru.0
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58:37 -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=0Np12KWSfTJel5Bj+vTmnsWR/A1/YHVZ1ZgRsEM/Zag=;
 b=B+x4oUF4QVMPvGbRCsIrdZZ86qPZ84QUHscS7SR8ngjWUVnSb3WHhewOxCnT4qkpxM
 GaylzNAVI9eM9b7L1a5WkzHlzFVkB7C0sPUJQVz6p3HiuZjkrtc9x9/7MG/ZK2Ykg2tt
 SNln472ONaK5CZRlY3rtWLmDIl0RzlymBkxIy/ejRLsADUYXcXT5+xGLLFHdWjnU58fk
 KZJ90MBF1Dm/Rnuipzw+aFF8NRJnpsCjWi+gXMTHScPY/JtOoLzRVda51fzPcp1i0EDA
 4/Ejg/ZThjOSHyPaDBfsHA/ge1FR7C84FSTcRpWDgLNkhs0I5TmK8Q4QeHM9mXo+RNYe
 TLkg==
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=0Np12KWSfTJel5Bj+vTmnsWR/A1/YHVZ1ZgRsEM/Zag=;
 b=IvuHeNtzVcIyKPNRIH7G4uFFQzHbf8rmM9zq8xXyH3xjxgvg03cPY/7R9zuZ+PZ1OR
 G9udHBY6EshWBfekErT71448di+gkpGpxJzwTKkkoHUCplWjyaVHFV8hx0VqOu13KeQX
 Y7UyAm2YdjLADT+C0TFKKZTRvIj4XjgWGsPKi+Y0wYJHFfs1pZWmNZSBwTx2rwYBxW3X
 aoXJiW9DOOzJkAQtraZg0gIyj12/cyPEIT2lXXxDMblcKktHecIx6wd7lw8g2eXD+QXE
 jSklm3wqcqA4L7ZYQcnX0u1STeBG3+tBwv4AXUxtmrZj7GuQx3KcNy+kJzi/q7MprL4c
 VT0g==
X-Gm-Message-State: APjAAAWuKAveWQ7gDWIFCFGEKEv7R5+WkYjnkI9D62QghFPA70mUkRX8
 kXfquO/9Lhw54RhIxc6pdx7wwZLyHAY=
X-Google-Smtp-Source: APXvYqzuVZHCucHN245cP5CO7Whznz2edkBCALj5n2c6HTFK7zkr31z9j1YgEwOJPNPoEH4vGoI9Yw==
X-Received: by 2002:adf:e384:: with SMTP id e4mr1133324wrm.308.1561798715944; 
 Sat, 29 Jun 2019 01:58:35 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.35
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:35 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:03 +0300
Message-Id: <20190629085608.15680-4-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 3/8] lib/uk9p: Add 9P protocol
 core definitions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSA5UCBwcm90b2NvbCBjb3JlIGRlZmluaXRpb25zIGZvciB0aGUg
c3RydWN0dXJlcyBpdAp1c2VzIGFuZCB0aGUgd2lyZSBmb3JtYXQgcmVxdWlyZWQuCgpTaWduZWQt
b2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgotLS0KIGxpYi91azlwL2lu
Y2x1ZGUvdWsvOXBfY29yZS5oIHwgMjcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI3MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3JlLmgKCmRpZmYgLS1naXQgYS9saWIv
dWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaCBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTk3ZjdhOTVkMTY4Ci0t
LSAvZGV2L251bGwKKysrIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3JlLmgKQEAgLTAsMCAr
MSwyNzEgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8q
CisgKiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgorICoKKyAqIENv
cHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNU
RUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIF9fVUtfOVBfQ09SRV9f
CisjZGVmaW5lIF9fVUtfOVBfQ09SRV9fCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIERv
Y3VtZW50YXRpb24gb2YgdGhlIHByb3RvY29sIG1heSBiZSBmb3VuZCBoZXJlOgorICogaHR0cHM6
Ly85ZmFucy5naXRodWIuaW8vcGxhbjlwb3J0LworICovCisKKy8qKgorICogOVAgcmVxdWVzdCB0
eXBlcy4KKyAqCisgKiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS85ZmFucy9wbGFuOXBvcnQv
YmxvYi9tYXN0ZXIvaW5jbHVkZS9mY2FsbC5oCisgKi8KK2VudW0gdWtfOXBfdHlwZSB7CisJVUtf
OVBfVFZFUlNJT04gICAgICAgICAgPSAxMDAsCisJVUtfOVBfUlZFUlNJT04sCisJVUtfOVBfVEFV
VEggICAgICAgICAgICAgPSAxMDIsCisJVUtfOVBfUkFVVEgsCisJVUtfOVBfVEFUVEFDSCAgICAg
ICAgICAgPSAxMDQsCisJVUtfOVBfUkFUVEFDSCwKKwlVS185UF9URVJST1IgICAgICAgICAgICA9
IDEwNiwKKwlVS185UF9SRVJST1IsCisJVUtfOVBfVEZMVVNIICAgICAgICAgICAgPSAxMDgsCisJ
VUtfOVBfUkZMVVNILAorCVVLXzlQX1RXQUxLICAgICAgICAgICAgID0gMTEwLAorCVVLXzlQX1JX
QUxLLAorCVVLXzlQX1RPUEVOICAgICAgICAgICAgID0gMTEyLAorCVVLXzlQX1JPUEVOLAorCVVL
XzlQX1RDUkVBVEUgICAgICAgICAgID0gMTE0LAorCVVLXzlQX1JDUkVBVEUsCisJVUtfOVBfVFJF
QUQgICAgICAgICAgICAgPSAxMTYsCisJVUtfOVBfUlJFQUQsCisJVUtfOVBfVFdSSVRFICAgICAg
ICAgICAgPSAxMTgsCisJVUtfOVBfUldSSVRFLAorCVVLXzlQX1RDTFVOSyAgICAgICAgICAgID0g
MTIwLAorCVVLXzlQX1JDTFVOSywKKwlVS185UF9UUkVNT1ZFICAgICAgICAgICA9IDEyMiwKKwlV
S185UF9SUkVNT1ZFLAorCVVLXzlQX1RTVEFUICAgICAgICAgICAgID0gMTI0LAorCVVLXzlQX1JT
VEFULAorCVVLXzlQX1RXU1RBVCAgICAgICAgICAgID0gMTI2LAorCVVLXzlQX1JXU1RBVCwKK307
CisKKy8qKgorICogOVAgdmFsdWVzIG9mIGEgcWlkLnR5cGUuCisgKgorICogU291cmNlczogaHR0
cHM6Ly85ZmFucy5naXRodWIuaW8vcGxhbjlwb3J0L21hbi9tYW45L2ludHJvLmh0bWwsCisgKiBo
dHRwOi8vZXJpY3ZoLmdpdGh1Yi5pby85cC1yZmMvcmZjOXAyMDAwLnUuaHRtbC4KKyAqLworI2Rl
ZmluZSBVS185UF9RVERJUiAgICAgICAgICAgICAgIDB4ODAKKyNkZWZpbmUgVUtfOVBfUVRBUFBF
TkQgICAgICAgICAgICAweDQwCisjZGVmaW5lIFVLXzlQX1FURVhDTCAgICAgICAgICAgICAgMHgy
MAorI2RlZmluZSBVS185UF9RVE1PVU5UICAgICAgICAgICAgIDB4MTAKKyNkZWZpbmUgVUtfOVBf
UVRBVVRIICAgICAgICAgICAgICAweDA4CisjZGVmaW5lIFVLXzlQX1FUVE1QICAgICAgICAgICAg
ICAgMHgwNAorI2RlZmluZSBVS185UF9RVFNZTUxJTksgICAgICAgICAgIDB4MDIKKyNkZWZpbmUg
VUtfOVBfUVRMSU5LICAgICAgICAgICAgICAweDAxCisjZGVmaW5lIFVLXzlQX1FURklMRSAgICAg
ICAgICAgICAgMHgwMAorCisvKioKKyAqIDlQIHBlcm1pc3Npb24gYml0cy4KKyAqCisgKiBTb3Vy
Y2VzOiBodHRwczovLzlmYW5zLmdpdGh1Yi5pby9wbGFuOXBvcnQvbWFuL21hbjkvaW50cm8uaHRt
bCwKKyAqIGh0dHA6Ly9lcmljdmguZ2l0aHViLmlvLzlwLXJmYy9yZmM5cDIwMDAudS5odG1sLgor
ICovCisjZGVmaW5lIFVLXzlQX0RNRElSICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorI2RlZmlu
ZSBVS185UF9ETUFQUEVORCAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgVUtfOVBfRE1F
WENMICAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIFVLXzlQX0RNTU9VTlQgICAgICAg
ICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBVS185UF9ETUFVVEggICAgICAgICAgICAgIDB4MDgw
MDAwMDAKKyNkZWZpbmUgVUtfOVBfRE1UTVAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisjZGVm
aW5lIFVLXzlQX0RNU1lNTElOSyAgICAgICAgICAgMHgwMjAwMDAwMAorI2RlZmluZSBVS185UF9E
TUxJTksgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKyNkZWZpbmUgVUtfOVBfRE1ERVZJQ0UgICAg
ICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIFVLXzlQX0RNTkFNRURQSVBFICAgICAgICAgMHgw
MDIwMDAwMAorI2RlZmluZSBVS185UF9ETVNPQ0tFVCAgICAgICAgICAgIDB4MDAxMDAwMDAKKyNk
ZWZpbmUgVUtfOVBfRE1TRVRVSUQgICAgICAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIFVLXzlQ
X0RNU0VUR0lEICAgICAgICAgICAgMHgwMDA0MDAwMAorI2RlZmluZSBVS185UF9ETVNFVFZUWCAg
ICAgICAgICAgIDB4MDAwMTAwMDAKKworLyoqCisgKiA5UCBvcGVuIG1vZGUgYml0cy4KKyAqCisg
KiBTb3VyY2U6IGh0dHBzOi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9ydC9tYW4vbWFuOS9vcGVu
Lmh0bWwuCisgKi8KKyNkZWZpbmUgVUtfOVBfT1JFQUQgICAgICAgICAgICAgICAweDAwCisjZGVm
aW5lIFVLXzlQX09XUklURSAgICAgICAgICAgICAgMHgwMQorI2RlZmluZSBVS185UF9PUkRXUiAg
ICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgVUtfOVBfT0VYRUMgICAgICAgICAgICAgICAweDAz
CisjZGVmaW5lIFVLXzlQX09UUlVOQyAgICAgICAgICAgICAgMHgxMAorI2RlZmluZSBVS185UF9P
UkVYRUMgICAgICAgICAgICAgIDB4MjAKKyNkZWZpbmUgVUtfOVBfT1JDTE9TRSAgICAgICAgICAg
ICAweDQwCisjZGVmaW5lIFVLXzlQX09BUFBFTkQgICAgICAgICAgICAgMHg4MAorI2RlZmluZSBV
S185UF9PRVhDTCAgICAgICAgICAgICAgIDB4MTAwMAorCisvKioKKyAqIDlQIHFpZC4KKyAqCisg
KiBTb3VyY2U6IGh0dHBzOi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9ydC9tYW4vbWFuOS9pbnRy
by5odG1sLgorICovCitzdHJ1Y3QgdWtfOXBfcWlkIHsKKwl1aW50OF90ICAgICAgICAgICAgICAg
ICB0eXBlOworCXVpbnQzMl90ICAgICAgICAgICAgICAgIHZlcnNpb247CisJdWludDY0X3QgICAg
ICAgICAgICAgICAgcGF0aDsKK307CisKKy8qKgorICogOVAgc3RyaW5nLgorICoKKyAqIFNvdXJj
ZTogaHR0cHM6Ly85ZmFucy5naXRodWIuaW8vcGxhbjlwb3J0L21hbi9tYW45L2ludHJvLmh0bWwu
CisgKi8KK3N0cnVjdCB1a185cF9zdHIgeworCXVpbnQxNl90ICAgICAgICAgICAgICAgIHNpemU7
CisJY2hhciAgICAgICAgICAgICAgICAgICAgKmRhdGE7Cit9OworCisvKioKKyAqIENoZWNrIGlm
IGEgOVAgc3RyaW5nIGlzIGVxdWFsIHRvIGEgZ2l2ZW4gbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4K
KyAqCisgKiBAcGFyYW0gcworICogICA5UCBzdHJpbmcuCisgKiBAcGFyYW0gcAorICogICBOdWxs
LXRlcm1pbmF0ZWQgc3RyaW5nLgorICogQHJldHVybgorICogICAxIGlmIGVxdWFsLCAwIG90aGVy
d2lzZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQgdWtfOXBfc3RyX2VxdWFsKGNvbnN0IHN0cnVj
dCB1a185cF9zdHIgKnMsIGNvbnN0IGNoYXIgKnApCit7CisJcmV0dXJuIHN0cmxlbihwKSA9PSBz
LT5zaXplICYmICFzdHJuY21wKHMtPmRhdGEsIHAsIHMtPnNpemUpOworfQorCisvKioKKyAqIElu
aXRpYWxpemUgYSA5UCBzdHJpbmcgZnJvbSBhIGdpdmVuIG51bGwtdGVybWluYXRlZCBzdHJpbmcu
CisgKgorICogQHBhcmFtIHMKKyAqICAgOVAgc3RyaW5nLgorICogQHBhcmFtIHAKKyAqICAgTnVs
bC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIHVrXzlwX3N0cl9p
bml0KHN0cnVjdCB1a185cF9zdHIgKnMsIGNvbnN0IGNoYXIgKnApCit7CisJaWYgKCFwKSB7CisJ
CXMtPnNpemUgPSAwOworCQlyZXR1cm47CisJfQorCisJcy0+c2l6ZSA9IHN0cmxlbihwKTsKKwlz
LT5kYXRhID0gKGNoYXIgKilwOworfQorCisvKioKKyAqIDlQIHN0YXQgc3RydWN0dXJlLgorICov
CitzdHJ1Y3QgdWtfOXBfc3RhdCB7CisJdWludDE2X3QgICAgICAgICAgICAgICAgc2l6ZTsKKwl1
aW50MTZfdCAgICAgICAgICAgICAgICB0eXBlOworCXVpbnQzMl90ICAgICAgICAgICAgICAgIGRl
djsKKwlzdHJ1Y3QgdWtfOXBfcWlkICAgICAgICBxaWQ7CisJdWludDMyX3QgICAgICAgICAgICAg
ICAgbW9kZTsKKwl1aW50MzJfdCAgICAgICAgICAgICAgICBhdGltZTsKKwl1aW50MzJfdCAgICAg
ICAgICAgICAgICBtdGltZTsKKwl1aW50NjRfdCAgICAgICAgICAgICAgICBsZW5ndGg7CisJc3Ry
dWN0IHVrXzlwX3N0ciAgICAgICAgbmFtZTsKKwlzdHJ1Y3QgdWtfOXBfc3RyICAgICAgICB1aWQ7
CisJc3RydWN0IHVrXzlwX3N0ciAgICAgICAgZ2lkOworCXN0cnVjdCB1a185cF9zdHIgICAgICAg
IG11aWQ7CisJc3RydWN0IHVrXzlwX3N0ciAgICAgICAgZXh0ZW5zaW9uOworCXVpbnQzMl90ICAg
ICAgICAgICAgICAgIG5fdWlkOworCXVpbnQzMl90ICAgICAgICAgICAgICAgIG5fZ2lkOworCXVp
bnQzMl90ICAgICAgICAgICAgICAgIG5fbXVpZDsKK307CisKKy8qCisgKiBUT0RPOiBUaGUgd2ly
ZSBmb3JtYXQgaXMgYWx3YXlzIGxpdHRsZS1lbmRpYW4uIEFkZCBsaXR0bGUtZW5kaWFuIHR5cGVz
IGFuZAorICogY3B1X3RvX2xlKigpIGRhdGEgdG8gdGhlIHJlcXVpcmVkIGZvcm1hdC4KKyAqLwor
CisvKioKKyAqIEluaXRpYWxpemUgYSA5UCBzdGF0IHN0cnVjdHVyZSB0aGF0IHdvbid0IG1vZGlm
eSBhbnkgZmllbGRzIGlmIHNlbnQgd2l0aCBhCisgKiBXU1RBVCBtZXNzYWdlLCBieSBzZXR0aW5n
IGFsbCBpbnRlZ2VyIGZpZWxkcyB0byB+MCBhbmQgYWxsIHN0cmluZyBmaWVsZHMgdG8KKyAqIGVt
cHR5IHN0cmluZ3MuCisgKgorICogQHBhcmFtIHN0YXQKKyAqICAgVGhlIDlQIHN0YXQgc3RydWN0
dXJlLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgdWtfOXBfc3RhdF9pbml0KHN0cnVjdCB1a185
cF9zdGF0ICpzdGF0KQoreworCVVLX0FTU0VSVChzdGF0KTsKKwltZW1zZXQoc3RhdCwgfjAsIHNp
emVvZihzdHJ1Y3QgdWtfOXBfc3RhdCkpOworCXN0YXQtPm5hbWUuc2l6ZSA9IDA7CisJc3RhdC0+
dWlkLnNpemUgPSAwOworCXN0YXQtPmdpZC5zaXplID0gMDsKKwlzdGF0LT5tdWlkLnNpemUgPSAw
OworCXN0YXQtPmV4dGVuc2lvbi5zaXplID0gMDsKK30KKworLyoqCisgKiBObyB0YWcsIHVzZWQg
YnkgdGhlIFR2ZXJzaW9uL1J2ZXJzaW9uIHBhaXIgb2YgcmVxdWVzdC9yZXBseSBtZXNzYWdlcy4K
KyAqLworI2RlZmluZSBVS185UF9OT1RBRyAgICAgICAgICAgICAgICAgICAgVUlOVDE2X01BWAor
CisvKioKKyAqIE1heGltdW0gYXZhaWxhYmxlIHRhZyBmb3IgdXNlLgorICogVUtfOVBfTk9UQUcg
KH4wKSBpcyByZXNlcnZlZCBieSB0aGUgOVAgUkZDIGZvciByZXByZXNlbnRpbmcgbm8gdGFnLgor
ICovCisjZGVmaW5lIFVLXzlQX01BWFRBRyAgICAgICAgICAgICAgICAgICAoVUlOVDE2X01BWCAt
IDEpCisKKy8qKgorICogTnVtYmVyIG9mIHBvc3NpYmxlIHRhZ3MsIGluY2x1ZGluZyBOT1RBRy4K
KyAqLworI2RlZmluZSBVS185UF9OVU1UQUdTICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCko
VUlOVDE2X01BWCkgKyAxKQorCisvKioKKyAqIE5vIGZpZCwgdXNlZCB0byBtYXJrIGEgZmlkIGZp
ZWxkIGFzIHVudXNlZC4KKyAqLworI2RlZmluZSBVS185UF9OT0ZJRCAgICAgICAgICAgICAgICAg
ICAgVUlOVDMyX01BWAorCisvKioKKyAqIE5vIG5fdW5hbWUgaW4gVEFUVEFDSCByZXF1ZXN0cywg
dXNlZCB0byBtYXJrIHRoZSBmaWVsZCBhcyB1bnVzZWQuCisgKi8KKyNkZWZpbmUgVUtfOVBfTk9O
VU5BTUUgICAgICAgICAgICAgICAgIFVJTlQzMl9NQVgKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIF9fVUtfOVBfQ09SRV9fICovCi0tIAoyLjExLjAKCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwg
bWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:42 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58: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 1hh9By-0001t7-IY; Sat, 29 Jun 2019 08:58:42 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bx-0001sd-Aj
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:41 +0000
X-Inumbo-ID: 154f4928-9a4c-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 154f4928-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:38 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id d18so8601583wrs.5
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58: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=yIK9qghkJTIfN6wYaQx99/LyicDTBB/O4RAbk0E6ymU=;
 b=t0zkEqapu30P0A733e4agKQUNKMvyosHPaH85pN4Z9w7z9oG/DFFmMb7nwVkt/A7EY
 pcQVDKk3F9YZcb0l190YQlnPml63n2mxriIcQeqyCs5cxYu/guUdowEtJn2uGY+MR4qB
 ge+8pso+C0+Hbew4uU5Rvl/hN84niiRAsnsFdj/7MMx2LnbAwMdslWKpiLx2k1RMZMbg
 vhpSLQ5dXLXhmdMeEYUDtSoNhJ/JaqCpC1u/nbP8h/BnaA6FiwtiXcJsNK6yOSiXy5Xz
 6MAFcA9oC/2qUbMymeWzQ19dKR9Bcsk0QvCh19GJy3BkccP4joAXB1z2Jg3YW9pS8DCx
 2Qdg==
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=yIK9qghkJTIfN6wYaQx99/LyicDTBB/O4RAbk0E6ymU=;
 b=Eg9Fm75x0xMgs6NzCJBGJQYF/7fgeXzhwMGUtySd8Nzm3Z3TdXP0B3l8hvBSldqhHm
 YW3k3h2WaGH8/toBf0d9HDKZ+mFNDd6NUPz4UNvZrXmI7DOm7lO20KwDha4raTYebyxZ
 WLkd9k9DU9uFAgLgnw4Vrjpf07XJ9wAS9ZT2HlDTIz5GZK6Ixj6x/xY9oWoy5KsSILQ+
 Hygci4Bxg0nXHlM9SE6c1dShEbUm8+TGx44dyyhaZhYkDUzeBjHHmcmh88oQLOE8LFHH
 lJEGbEBe/g9Ti93kZDoi/CPgU9euJSwvAy/dwdFnwFPK6YwSW4zCQs1Ny+ChYpvLxbeW
 JI6g==
X-Gm-Message-State: APjAAAUCOgSKCVo5SvsJsLUboDhQaW8iKkV3nQdFkVeUMRhAP1nxJZtV
 qJLfn0PlwP79UZlOHyN2xFAIet2wgc0=
X-Google-Smtp-Source: APXvYqyJNb2l/Nlp3oAb/zA4L9ss57zwGoMpjOwVgYb+Zy1f0pacdhJPyPoAtt0S8Hid7U+nuVONug==
X-Received: by 2002:adf:f94d:: with SMTP id q13mr2121290wrr.137.1561798716844; 
 Sat, 29 Jun 2019 01:58:36 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.36
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:36 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:04 +0300
Message-Id: <20190629085608.15680-5-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 4/8] lib/uk9p: Add 9P requests
 abstraction
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgc3RydWN0IHVrXzlwcmVxIHdoaWNoIGFic3RyYWN0cyB0
aGUgbGlmZWN5Y2xlIG9mCmFsbG9jYXRpbmcgbWVtb3J5LCBzZXJpYWxpemluZyBkYXRhLCBzZW5k
aW5nIGl0IG92ZXIgYSB0cmFuc3BvcnQgbGF5ZXIsCnJlY2VpdmluZyB0aGUgcmVzcG9uc2UsIGRl
dGVjdGluZyBlcnJvcnMsIGRlc2VyaWFsaXppbmcgdGhlIHJlY2VpdmVkCm1lc3NhZ2UgYW5kIGZy
ZWVpbmcgdGhlIG1lbW9yeS4KClNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBn
bWFpbC5jb20+Ci0tLQogbGliL3VrOXAvOXByZXEuYyAgICAgICAgICAgIHwgNTY5ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdWs5cC9NYWtlZmlsZS51
ayAgICAgICAgfCAgIDEgKwogbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgIHwgIDExICsKIGxp
Yi91azlwL2luY2x1ZGUvdWsvOXByZXEuaCB8IDMwMCArKysrKysrKysrKysrKysrKysrKysrKwog
NCBmaWxlcyBjaGFuZ2VkLCA4ODEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
Yi91azlwLzlwcmVxLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlw
cmVxLmgKCmRpZmYgLS1naXQgYS9saWIvdWs5cC85cHJlcS5jIGIvbGliL3VrOXAvOXByZXEuYwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU0OGFhZTE3ZDUwZgotLS0g
L2Rldi9udWxsCisrKyBiL2xpYi91azlwLzlwcmVxLmMKQEAgLTAsMCArMSw1NjkgQEAKKy8qIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisgKiBBdXRob3JzOiBD
cmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQg
SU4gQU5ZIFdBWS4KKyAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWsvY29u
ZmlnLmg+CisjaW5jbHVkZSA8dWsvOXByZXEuaD4KKyNpbmNsdWRlIDx1ay85cF9jb3JlLmg+Cisj
aW5jbHVkZSA8dWsvbGlzdC5oPgorI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CisjaW5jbHVkZSA8
dWsvZXNzZW50aWFscy5oPgorI2luY2x1ZGUgPHVrL2FsbG9jLmg+CisjaWYgQ09ORklHX0xJQlVL
U0NIRUQKKyNpbmNsdWRlIDx1ay9zY2hlZC5oPgorI2luY2x1ZGUgPHVrL3dhaXQuaD4KKyNlbmRp
ZgorCitzdGF0aWMgaW50IF9mY2FsbF9hbGxvYyhzdHJ1Y3QgdWtfYWxsb2MgKmEsIHN0cnVjdCB1
a185cHJlcV9mY2FsbCAqZiwKKwkJCXVpbnQzMl90IHNpemUpCit7CisJVUtfQVNTRVJUKGEpOwor
CVVLX0FTU0VSVChmKTsKKwlVS19BU1NFUlQoc2l6ZSA+IDApOworCisJZi0+YnVmID0gdWtfY2Fs
bG9jKGEsIHNpemUsIHNpemVvZihjaGFyKSk7CisJaWYgKGYtPmJ1ZiA9PSBOVUxMKQorCQlyZXR1
cm4gLUVOT01FTTsKKworCWYtPnNpemUgPSBzaXplOworCWYtPm9mZnNldCA9IDA7CisJZi0+emNf
YnVmID0gTlVMTDsKKwlmLT56Y19zaXplID0gMDsKKwlmLT56Y19vZmZzZXQgPSAwOworCisJcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9mY2FsbF9mcmVlKHN0cnVjdCB1a19hbGxvYyAqYSwg
c3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmKQoreworCVVLX0FTU0VSVChhKTsKKwlVS19BU1NFUlQo
Zik7CisKKwlpZiAoZi0+YnVmKQorCQl1a19mcmVlKGEsIGYtPmJ1Zik7Cit9CisKK3N0cnVjdCB1
a185cHJlcSAqdWtfOXByZXFfYWxsb2Moc3RydWN0IHVrX2FsbG9jICphLCB1aW50MzJfdCBzaXpl
KQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCWludCByYzsKKworCXJlcSA9IHVrX2NhbGxv
YyhhLCAxLCBzaXplb2YoKnJlcSkpOworCWlmIChyZXEgPT0gTlVMTCkKKwkJZ290byBvdXQ7CisK
KwlyYyA9IF9mY2FsbF9hbGxvYyhhLCAmcmVxLT54bWl0LCBzaXplKTsKKwlpZiAocmMgPCAwKQor
CQlnb3RvIG91dF9mcmVlOworCisJcmMgPSBfZmNhbGxfYWxsb2MoYSwgJnJlcS0+cmVjdiwgTUFY
KHNpemUsIFVLXzlQX1JFUlJPUl9NQVhTSVpFKSk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXRf
ZnJlZTsKKworCVVLX0lOSVRfTElTVF9IRUFEKCZyZXEtPl9saXN0KTsKKwlyZXEtPl9hID0gYTsK
Kwl1a19yZWZjb3VudF9pbml0KCZyZXEtPnJlZmNvdW50LCAxKTsKKyNpZiBDT05GSUdfTElCVUtT
Q0hFRAorCXVrX3dhaXRxX2luaXQoJnJlcS0+d3EpOworI2VuZGlmCisKKwkvKgorCSAqIEFzc3Vt
ZSB0aGUgaGVhZGVyIGhhcyBhbHJlYWR5IGJlZW4gd3JpdHRlbi4KKwkgKiBUaGUgaGVhZGVyIGl0
c2VsZiB3aWxsIGJlIHdyaXR0ZW4gb24gdWtfOXByZXFfcmVhZHkoKSwgd2hlbiB0aGUKKwkgKiBh
Y3R1YWwgbWVzc2FnZSBzaXplIGlzIGtub3duLgorCSAqLworCXJlcS0+eG1pdC5vZmZzZXQgPSBV
S185UF9IRUFERVJfU0laRTsKKworCXJldHVybiByZXE7CisKK291dF9mcmVlOgorCV9mY2FsbF9m
cmVlKGEsICZyZXEtPnJlY3YpOworCV9mY2FsbF9mcmVlKGEsICZyZXEtPnhtaXQpOworCXVrX2Zy
ZWUoYSwgcmVxKTsKK291dDoKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgX3JlcV9m
cmVlKHN0cnVjdCB1a185cHJlcSAqcmVxKQoreworCV9mY2FsbF9mcmVlKHJlcS0+X2EsICZyZXEt
PnJlY3YpOworCV9mY2FsbF9mcmVlKHJlcS0+X2EsICZyZXEtPnhtaXQpOworCXVrX2ZyZWUocmVx
LT5fYSwgcmVxKTsKK30KKwordm9pZCB1a185cHJlcV9nZXQoc3RydWN0IHVrXzlwcmVxICpyZXEp
Cit7CisJdWtfcmVmY291bnRfYWNxdWlyZSgmcmVxLT5yZWZjb3VudCk7Cit9CisKK2ludCB1a185
cHJlcV9wdXQoc3RydWN0IHVrXzlwcmVxICpyZXEpCit7CisJaW50IGxhc3Q7CisKKwlsYXN0ID0g
dWtfcmVmY291bnRfcmVsZWFzZSgmcmVxLT5yZWZjb3VudCk7CisJaWYgKGxhc3QpCisJCV9yZXFf
ZnJlZShyZXEpOworCisJcmV0dXJuIGxhc3Q7Cit9CisKK3N0YXRpYyBpbnQgX2ZjYWxsX3dyaXRl
KHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZmNhbGwsIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJdWludDMy
X3Qgc2l6ZSkKK3sKKwlpZiAoZmNhbGwtPm9mZnNldCArIHNpemUgPiBmY2FsbC0+c2l6ZSkKKwkJ
cmV0dXJuIC1FTk9CVUZTOworCisJbWVtY3B5KChjaGFyICopZmNhbGwtPmJ1ZiArIGZjYWxsLT5v
ZmZzZXQsIGJ1Ziwgc2l6ZSk7CisJZmNhbGwtPm9mZnNldCArPSBzaXplOworCXJldHVybiAwOwor
fQorCitzdGF0aWMgaW50IF9mY2FsbF9zZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpm
LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CisKK3N0YXRpYyBpbnQgX2ZjYWxsX3ZzZXJpYWxpemUo
c3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwgY29uc3QgY2hhciAqZm10LAorCQkJdmFfbGlz
dCB2bCkKK3sKKwlpbnQgcmMgPSAwOworCisJd2hpbGUgKCpmbXQpIHsKKwkJc3dpdGNoICgqZm10
KSB7CisJCWNhc2UgJ2InOiB7CisJCQl1aW50OF90IHg7CisKKwkJCXggPSB2YV9hcmcodmwsIHVu
c2lnbmVkIGludCk7CisJCQlyYyA9IF9mY2FsbF93cml0ZShmY2FsbCwgJngsIHNpemVvZih4KSk7
CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0KKwkJY2FzZSAn
dyc6IHsKKwkJCXVpbnQxNl90IHg7CisKKwkJCXggPSB2YV9hcmcodmwsIHVuc2lnbmVkIGludCk7
CisJCQlyYyA9IF9mY2FsbF93cml0ZShmY2FsbCwgJngsIHNpemVvZih4KSk7CisJCQlpZiAocmMg
PCAwKQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0KKwkJY2FzZSAnZCc6IHsKKwkJCXVp
bnQzMl90IHg7CisKKwkJCXggPSB2YV9hcmcodmwsIHVpbnQzMl90KTsKKwkJCXJjID0gX2ZjYWxs
X3dyaXRlKGZjYWxsLCAmeCwgc2l6ZW9mKHgpKTsKKwkJCWlmIChyYyA8IDApCisJCQkJZ290byBv
dXQ7CisJCQlicmVhazsKKwkJfQorCQljYXNlICdxJzogeworCQkJdWludDY0X3QgeDsKKworCQkJ
eCA9IHZhX2FyZyh2bCwgdWludDY0X3QpOworCQkJcmMgPSBfZmNhbGxfd3JpdGUoZmNhbGwsICZ4
LCBzaXplb2YoeCkpOworCQkJaWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJCWJyZWFrOwor
CQl9CisJCWNhc2UgJ3MnOiB7CisJCQlzdHJ1Y3QgdWtfOXBfc3RyICpwOworCisJCQlwID0gdmFf
YXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3RyICopOworCQkJcmMgPSBfZmNhbGxfd3JpdGUoZmNhbGws
ICZwLT5zaXplLCBzaXplb2YocC0+c2l6ZSkpOworCQkJaWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91
dDsKKwkJCXJjID0gX2ZjYWxsX3dyaXRlKGZjYWxsLCBwLT5kYXRhLCBwLT5zaXplKTsKKwkJCWlm
IChyYyA8IDApCisJCQkJZ290byBvdXQ7CisJCQlicmVhazsKKwkJfQorCQljYXNlICdRJzogewor
CQkJc3RydWN0IHVrXzlwX3FpZCAqcDsKKworCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlw
X3FpZCAqKTsKKwkJCXJjID0gX2ZjYWxsX3NlcmlhbGl6ZShmY2FsbCwgImJkcSIsIHAtPnR5cGUs
CisJCQkJCXAtPnZlcnNpb24sIHAtPnBhdGgpOworCQkJaWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91
dDsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgJ1MnOiB7CisJCQlzdHJ1Y3QgdWtfOXBfc3RhdCAq
cDsKKworCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3N0YXQgKik7CisJCQlyYyA9IF9m
Y2FsbF9zZXJpYWxpemUoZmNhbGwsICJ3d2RRZGRkcXNzc3NzZGRkIiwKKwkJCQkJcC0+c2l6ZSwg
cC0+dHlwZSwgcC0+ZGV2LCAmcC0+cWlkLAorCQkJCQlwLT5tb2RlLCBwLT5hdGltZSwgcC0+bXRp
bWUsIHAtPmxlbmd0aCwKKwkJCQkJJnAtPm5hbWUsICZwLT51aWQsICZwLT5naWQsICZwLT5tdWlk
LAorCQkJCQkmcC0+ZXh0ZW5zaW9uLCBwLT5uX3VpZCwgcC0+bl9naWQsCisJCQkJCXAtPm5fbXVp
ZCk7CisJCQlpZiAocmMgPCAwKQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0KKwkJZGVm
YXVsdDoKKwkJCXJjID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJZm10Kys7CisJ
fQorCitvdXQ6CisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IF9mY2FsbF9zZXJpYWxpemUo
c3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9s
aXN0IHZsOworCWludCByYzsKKworCXZhX3N0YXJ0KHZsLCBmbXQpOworCXJjID0gX2ZjYWxsX3Zz
ZXJpYWxpemUoZiwgZm10LCB2bCk7CisJdmFfZW5kKHZsKTsKKworCXJldHVybiByYzsKK30KKwor
aW50IHVrXzlwcmVxX3ZzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxICpyZXEsIGNvbnN0IGNoYXIg
KmZtdCwgdmFfbGlzdCB2bCkKK3sKKwlpbnQgcmM7CisKKwlVS19BU1NFUlQocmVxKTsKKwlVS19B
U1NFUlQoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpID09IFVLXzlQUkVRX0lOSVRJQUxJWkVEKTsK
KwlyYyA9IF9mY2FsbF92c2VyaWFsaXplKCZyZXEtPnhtaXQsIGZtdCwgdmwpOworCisJcmV0dXJu
IHJjOworfQorCitpbnQgdWtfOXByZXFfc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBj
b25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IHZsOworCWludCByYzsKKworCXZhX3N0
YXJ0KHZsLCBmbXQpOworCXJjID0gdWtfOXByZXFfdnNlcmlhbGl6ZShyZXEsIGZtdCwgdmwpOwor
CXZhX2VuZCh2bCk7CisKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgX2ZjYWxsX3JlYWQo
c3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwgdm9pZCAqYnVmLCB1aW50MzJfdCBzaXplKQor
eworCWlmIChmY2FsbC0+b2Zmc2V0ICsgc2l6ZSA+IGZjYWxsLT5zaXplKQorCQlyZXR1cm4gLUVO
T0JVRlM7CisKKwltZW1jcHkoYnVmLCAoY2hhciAqKWZjYWxsLT5idWYgKyBmY2FsbC0+b2Zmc2V0
LCBzaXplKTsKKwlmY2FsbC0+b2Zmc2V0ICs9IHNpemU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyBpbnQgX2ZjYWxsX2Rlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZiwgY29uc3Qg
Y2hhciAqZm10LCAuLi4pOworCitzdGF0aWMgaW50IF9mY2FsbF92ZGVzZXJpYWxpemUoc3RydWN0
IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmZtdCwKKwkJCSAg
ICAgIHZhX2xpc3QgdmwpCit7CisJaW50IHJjID0gMDsKKworCXdoaWxlICgqZm10KSB7CisJCXN3
aXRjaCAoKmZtdCkgeworCQljYXNlICdiJzogeworCQkJdWludDhfdCAqeDsKKworCQkJeCA9IHZh
X2FyZyh2bCwgdWludDhfdCAqKTsKKwkJCXJjID0gX2ZjYWxsX3JlYWQoZmNhbGwsIHgsIHNpemVv
ZigqeCkpOworCQkJaWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJCWJyZWFrOworCQl9CisJ
CWNhc2UgJ3cnOiB7CisJCQl1aW50MTZfdCAqeDsKKworCQkJeCA9IHZhX2FyZyh2bCwgdWludDE2
X3QgKik7CisJCQlyYyA9IF9mY2FsbF9yZWFkKGZjYWxsLCB4LCBzaXplb2YoKngpKTsKKwkJCWlm
IChyYyA8IDApCisJCQkJZ290byBvdXQ7CisJCQlicmVhazsKKwkJfQorCQljYXNlICdkJzogewor
CQkJdWludDMyX3QgKng7CisKKwkJCXggPSB2YV9hcmcodmwsIHVpbnQzMl90ICopOworCQkJcmMg
PSBfZmNhbGxfcmVhZChmY2FsbCwgeCwgc2l6ZW9mKCp4KSk7CisJCQlpZiAocmMgPCAwKQorCQkJ
CWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0KKwkJY2FzZSAncSc6IHsKKwkJCXVpbnQ2NF90ICp4
OworCisJCQl4ID0gdmFfYXJnKHZsLCB1aW50NjRfdCAqKTsKKwkJCXJjID0gX2ZjYWxsX3JlYWQo
ZmNhbGwsIHgsIHNpemVvZigqeCkpOworCQkJaWYgKHJjIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJ
CWJyZWFrOworCQl9CisJCWNhc2UgJ3MnOiB7CisJCQlzdHJ1Y3QgdWtfOXBfc3RyICpwOworCisJ
CQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3RyICopOworCQkJcmMgPSBfZmNhbGxfcmVh
ZChmY2FsbCwgJnAtPnNpemUsIHNpemVvZihwLT5zaXplKSk7CisJCQlpZiAocmMgPCAwKQorCQkJ
CWdvdG8gb3V0OworCQkJcC0+ZGF0YSA9IChjaGFyICopZmNhbGwtPmJ1ZiArIGZjYWxsLT5vZmZz
ZXQ7CisJCQlmY2FsbC0+b2Zmc2V0ICs9IHAtPnNpemU7CisJCQlicmVhazsKKwkJfQorCQljYXNl
ICdRJzogeworCQkJc3RydWN0IHVrXzlwX3FpZCAqcDsKKworCQkJcCA9IHZhX2FyZyh2bCwgc3Ry
dWN0IHVrXzlwX3FpZCAqKTsKKwkJCXJjID0gX2ZjYWxsX2Rlc2VyaWFsaXplKGZjYWxsLCAiYmRx
IiwgJnAtPnR5cGUsCisJCQkJCSZwLT52ZXJzaW9uLCAmcC0+cGF0aCk7CisJCQlpZiAocmMgPCAw
KQorCQkJCWdvdG8gb3V0OworCQkJYnJlYWs7CisJCX0KKwkJY2FzZSAnUyc6IHsKKwkJCXN0cnVj
dCB1a185cF9zdGF0ICpwOworCisJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3RhdCAq
KTsKKwkJCXJjID0gX2ZjYWxsX2Rlc2VyaWFsaXplKGZjYWxsLCAid3dkUWRkZHFzc3Nzc2RkZCIs
CisJCQkJCSZwLT5zaXplLCAmcC0+dHlwZSwgJnAtPmRldiwgJnAtPnFpZCwKKwkJCQkJJnAtPm1v
ZGUsICZwLT5hdGltZSwgJnAtPm10aW1lLAorCQkJCQkmcC0+bGVuZ3RoLCAmcC0+bmFtZSwgJnAt
PnVpZCwgJnAtPmdpZCwKKwkJCQkJJnAtPm11aWQsICZwLT5leHRlbnNpb24sICZwLT5uX3VpZCwK
KwkJCQkJJnAtPm5fZ2lkLCAmcC0+bl9tdWlkKTsKKwkJCWlmIChyYyA8IDApCisJCQkJZ290byBv
dXQ7CisJCQlicmVhazsKKwkJfQorCQlkZWZhdWx0OgorCQkJcmMgPSAtRUlOVkFMOworCQkJZ290
byBvdXQ7CisJCX0KKworCQlmbXQrKzsKKwl9CisKK291dDoKKwlyZXR1cm4gcmM7Cit9CisKK3N0
YXRpYyBpbnQgX2ZjYWxsX2Rlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZiwgY29u
c3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCB2bDsKKwlpbnQgcmM7CisKKwl2YV9zdGFy
dCh2bCwgZm10KTsKKwlyYyA9IF9mY2FsbF92ZGVzZXJpYWxpemUoZiwgZm10LCB2bCk7CisJdmFf
ZW5kKHZsKTsKKworCXJldHVybiByYzsKK30KKworaW50IHVrXzlwcmVxX3ZkZXNlcmlhbGl6ZShz
dHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZsKQoreworCWlu
dCByYzsKKworCVVLX0FTU0VSVChyZXEpOworCVVLX0FTU0VSVChVS19SRUFEX09OQ0UocmVxLT5z
dGF0ZSkgPT0gVUtfOVBSRVFfUkVDRUlWRUQpOworCXJjID0gX2ZjYWxsX3ZkZXNlcmlhbGl6ZSgm
cmVxLT5yZWN2LCBmbXQsIHZsKTsKKworCXJldHVybiByYzsKK30KKworaW50IHVrXzlwcmVxX2Rl
c2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sK
Kwl2YV9saXN0IHZsOworCWludCByYzsKKworCXZhX3N0YXJ0KHZsLCBmbXQpOworCXJjID0gdWtf
OXByZXFfdmRlc2VyaWFsaXplKHJlcSwgZm10LCB2bCk7CisJdmFfZW5kKHZsKTsKKworCXJldHVy
biByYzsKK30KKworaW50IHVrXzlwcmVxX2NvcHlfdG8oc3RydWN0IHVrXzlwcmVxICpyZXEsIHZv
aWQgKmJ1ZiwgdWludDMyX3Qgc2l6ZSkKK3sKKwlyZXR1cm4gX2ZjYWxsX3JlYWQoJnJlcS0+cmVj
diwgYnVmLCBzaXplKTsKK30KKworaW50IHVrXzlwcmVxX2NvcHlfZnJvbShzdHJ1Y3QgdWtfOXBy
ZXEgKnJlcSwgY29uc3Qgdm9pZCAqYnVmLCB1aW50MzJfdCBzaXplKQoreworCXJldHVybiBfZmNh
bGxfd3JpdGUoJnJlcS0+eG1pdCwgYnVmLCBzaXplKTsKK30KKworaW50IHVrXzlwcmVxX3JlYWR5
KHN0cnVjdCB1a185cHJlcSAqcmVxLCBlbnVtIHVrXzlwcmVxX3pjZGlyIHpjX2RpciwKKwkJdm9p
ZCAqemNfYnVmLCB1aW50MzJfdCB6Y19zaXplLCB1aW50MzJfdCB6Y19vZmZzZXQpCit7CisJaW50
IHJjOworCXVpbnQzMl90IHRvdGFsX3NpemU7CisJdWludDMyX3QgdG90YWxfc2l6ZV93aXRoX3pj
OworCisJVUtfQVNTRVJUKHJlcSk7CisKKwlpZiAoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpICE9
IFVLXzlQUkVRX0lOSVRJQUxJWkVEKSB7CisJCXJjID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQor
CisJLyogU2F2ZSBjdXJyZW50IG9mZnNldCBhcyB0aGUgc2l6ZSBvZiB0aGUgbWVzc2FnZS4gKi8K
Kwl0b3RhbF9zaXplID0gcmVxLT54bWl0Lm9mZnNldDsKKworCXRvdGFsX3NpemVfd2l0aF96YyA9
IHRvdGFsX3NpemU7CisJaWYgKHpjX2RpciA9PSBVS185UFJFUV9aQ0RJUl9XUklURSkKKwkJdG90
YWxfc2l6ZV93aXRoX3pjICs9IHpjX3NpemU7CisKKwkvKiBTZXJpYWxpemUgdGhlIGhlYWRlci4g
Ki8KKwlyZXEtPnhtaXQub2Zmc2V0ID0gMDsKKwlyYyA9IHVrXzlwcmVxX3NlcmlhbGl6ZShyZXEs
ICJkYnciLCB0b3RhbF9zaXplX3dpdGhfemMsIHJlcS0+eG1pdC50eXBlLAorCQkJcmVxLT50YWcp
OworCWlmIChyYyA8IDApCisJCWdvdG8gb3V0OworCisJLyogUmVzZXQgb2Zmc2V0IGFuZCBzaXpl
IHRvIHNhbmUgdmFsdWVzLiAqLworCXJlcS0+eG1pdC5vZmZzZXQgPSAwOworCXJlcS0+eG1pdC5z
aXplID0gdG90YWxfc2l6ZTsKKworCS8qIFVwZGF0ZSB6ZXJvIGNvcHkgYnVmZmVycy4gKi8KKwlp
ZiAoemNfZGlyID09IFVLXzlQUkVRX1pDRElSX1dSSVRFKSB7CisJCXJlcS0+eG1pdC56Y19idWYg
PSB6Y19idWY7CisJCXJlcS0+eG1pdC56Y19zaXplID0gemNfc2l6ZTsKKwkJLyogWmVyby1jb3B5
IG9mZnNldCBmb3Igd3JpdGVzIG11c3Qgc3RhcnQgYXQgdGhlIGVuZCBvZiBidWYuICovCisJCXJl
cS0+eG1pdC56Y19vZmZzZXQgPSByZXEtPnhtaXQuc2l6ZTsKKwl9IGVsc2UgaWYgKHpjX2RpciA9
PSBVS185UFJFUV9aQ0RJUl9SRUFEKSB7CisJCXJlcS0+cmVjdi56Y19idWYgPSB6Y19idWY7CisJ
CXJlcS0+cmVjdi56Y19zaXplID0gemNfc2l6ZTsKKwkJcmVxLT5yZWN2LnpjX29mZnNldCA9IHpj
X29mZnNldDsKKwkJLyogVGhlIHJlY2VpdmUgYnVmZmVyIG11c3QgZW5kIGJlZm9yZSB0aGUgemMg
YnVmLiAqLworCQlyZXEtPnJlY3Yuc2l6ZSA9IHpjX29mZnNldDsKKwl9CisKKwkvKiBVcGRhdGUg
dGhlIHN0YXRlLiAqLworCVVLX1dSSVRFX09OQ0UocmVxLT5zdGF0ZSwgVUtfOVBSRVFfUkVBRFkp
OworCitvdXQ6CisJcmV0dXJuIHJjOworfQorCitpbnQgdWtfOXByZXFfcmVjZWl2ZV9jYihzdHJ1
Y3QgdWtfOXByZXEgKnJlcSwgdWludDMyX3QgcmVjdl9zaXplKQoreworCXVpbnQzMl90IHNpemU7
CisJdWludDE2X3QgdGFnOworCWludCByYzsKKworCVVLX0FTU0VSVChyZXEpOworCisJLyogQ2hl
Y2sgc3RhdGUgYW5kIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGhlYWRlci4gKi8KKwlpZiAoVUtfUkVB
RF9PTkNFKHJlcS0+c3RhdGUpICE9IFVLXzlQUkVRX1NFTlQpCisJCXJldHVybiAtRUlPOworCWlm
IChyZWN2X3NpemUgPCBVS185UF9IRUFERVJfU0laRSkKKwkJcmV0dXJuIC1FSU87CisKKwkvKiBE
ZXNlcmlhbGl6ZSB0aGUgaGVhZGVyIGludG8gcmVxdWVzdCBmaWVsZHMuICovCisJcmVxLT5yZWN2
Lm9mZnNldCA9IDA7CisJcmVxLT5yZWN2LnNpemUgPSByZWN2X3NpemU7CisJcmMgPSBfZmNhbGxf
ZGVzZXJpYWxpemUoJnJlcS0+cmVjdiwgImRidyIsICZzaXplLAorCQkJJnJlcS0+cmVjdi50eXBl
LCAmdGFnKTsKKworCS8qIENoZWNrIHNhbml0eSBvZiBkZXNlcmlhbGl6ZWQgdmFsdWVzLiAqLwor
CWlmIChyYyA8IDApCisJCXJldHVybiByYzsKKwlpZiAoc2l6ZSA+IHJlY3Zfc2l6ZSkKKwkJcmV0
dXJuIC1FSU87CisJaWYgKHJlcS0+dGFnICE9IHRhZykKKwkJcmV0dXJuIC1FSU87CisKKwkvKiBG
aXggdGhlIHJlY2VpdmUgc2l6ZSBmb3IgemVyby1jb3B5IHJlcXVlc3RzLiAqLworCWlmIChyZXEt
PnJlY3YuemNfYnVmICYmIHJlcS0+cmVjdi50eXBlICE9IFVLXzlQX1JFUlJPUikKKwkJcmVxLT5y
ZWN2LnNpemUgPSByZXEtPnJlY3YuemNfb2Zmc2V0OworCWVsc2UKKwkJcmVxLT5yZWN2LnNpemUg
PSBzaXplOworCisJLyogVXBkYXRlIHRoZSBzdGF0ZS4gKi8KKwlVS19XUklURV9PTkNFKHJlcS0+
c3RhdGUsIFVLXzlQUkVRX1JFQ0VJVkVEKTsKKworI2lmIENPTkZJR19MSUJVS1NDSEVECisJLyog
Tm90aWZ5IGFueSB3YWl0aW5nIHRocmVhZHMuICovCisJdWtfd2FpdHFfd2FrZV91cCgmcmVxLT53
cSk7CisjZW5kaWYKKworCXJldHVybiAwOworfQorCitpbnQgdWtfOXByZXFfd2FpdHJlcGx5KHN0
cnVjdCB1a185cHJlcSAqcmVxKQoreworCWludCByYzsKKworI2lmIENPTkZJR19MSUJVS1NDSEVE
CisJdWtfd2FpdHFfd2FpdF9ldmVudCgmcmVxLT53cSwgcmVxLT5zdGF0ZSA9PSBVS185UFJFUV9S
RUNFSVZFRCk7CisjZWxzZQorCXdoaWxlIChVS19SRUFEX09OQ0UocmVxLT5zdGF0ZSkgIT0gVUtf
OVBSRVFfUkVDRUlWRUQpCisJCTsKKyNlbmRpZgorCisJLyogQ2hlY2sgZm9yIDlQIHNlcnZlci1z
aWRlIGVycm9ycy4gKi8KKwlyYyA9IHVrXzlwcmVxX2Vycm9yKHJlcSk7CisKKwlyZXR1cm4gcmM7
Cit9CisKK2ludCB1a185cHJlcV9lcnJvcihzdHJ1Y3QgdWtfOXByZXEgKnJlcSkKK3sKKwl1aW50
MzJfdCBlcnJjb2RlOworCXN0cnVjdCB1a185cF9zdHIgZXJyb3I7CisJaW50IHJjID0gMDsKKwor
CWlmIChVS19SRUFEX09OQ0UocmVxLT5zdGF0ZSkgIT0gVUtfOVBSRVFfUkVDRUlWRUQpCisJCXJl
dHVybiAtRUlPOworCWlmIChyZXEtPnJlY3YudHlwZSAhPSBVS185UF9SRVJST1IpCisJCXJldHVy
biAwOworCisJLyoKKwkgKiBUaGUgcmVxdWVzdCBzaG91bGQgbm90IGhhdmUgaGFkIGFueSBkYXRh
IGRlc2VyaWFsaXplZCBmcm9tIGl0IHByaW9yCisJICogdG8gdGhpcyBjYWxsLgorCSAqLworCVVL
X0JVR09OKHJlcS0+cmVjdi5vZmZzZXQgIT0gVUtfOVBfSEVBREVSX1NJWkUpOworCisJcmMgPSB1
a185cHJlcV9kZXNlcmlhbGl6ZShyZXEsICJzZCIsICZlcnJvciwgJmVycmNvZGUpOworCWlmIChy
YyA8IDApCisJCXJldHVybiByYzsKKworCXVrX3ByX2luZm8oInVrOXA6IFJFUlJPUiAlLipzICVk
XG4iLCBlcnJvci5zaXplLCBlcnJvci5kYXRhLCBlcnJjb2RlKTsKKwlpZiAoZXJyY29kZSA9PSAw
IHx8IGVycmNvZGUgPj0gNTEyKQorCQlyZXR1cm4gLUVJTzsKKworCXJldHVybiAtZXJyY29kZTsK
K30KZGlmZiAtLWdpdCBhL2xpYi91azlwL01ha2VmaWxlLnVrIGIvbGliL3VrOXAvTWFrZWZpbGUu
dWsKaW5kZXggYjEwNzFhMGU3ZDNjLi5hZWE3MjJhNTg1YjkgMTAwNjQ0Ci0tLSBhL2xpYi91azlw
L01ha2VmaWxlLnVrCisrKyBiL2xpYi91azlwL01ha2VmaWxlLnVrCkBAIC00LDMgKzQsNCBAQCBD
SU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUK
IENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLOVApCQkrPSAtSSQoTElCVUs5UF9CQVNFKS9pbmNs
dWRlCiAKIExJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cGRldl90cmFucy5jCitM
SUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXByZXEuYwpkaWZmIC0tZ2l0IGEvbGli
L3VrOXAvZXhwb3J0c3ltcy51ayBiL2xpYi91azlwL2V4cG9ydHN5bXMudWsKaW5kZXggNDVmNDg3
ZGEyZmZmLi44NTBmZmEyZGIyMzMgMTAwNjQ0Ci0tLSBhL2xpYi91azlwL2V4cG9ydHN5bXMudWsK
KysrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awpAQCAtMSwzICsxLDE0IEBACiB1a185cGRldl90
cmFuc19yZWdpc3RlcgogdWtfOXBkZXZfdHJhbnNfYnlfbmFtZQogdWtfOXBkZXZfdHJhbnNfZGVm
YXVsdAordWtfOXByZXFfZ2V0Cit1a185cHJlcV9wdXQKK3VrXzlwcmVxX3ZzZXJpYWxpemUKK3Vr
XzlwcmVxX3NlcmlhbGl6ZQordWtfOXByZXFfdmRlc2VyaWFsaXplCit1a185cHJlcV9kZXNlcmlh
bGl6ZQordWtfOXByZXFfY29weV90bwordWtfOXByZXFfY29weV9mcm9tCit1a185cHJlcV9yZWNl
aXZlX2NiCit1a185cHJlcV93YWl0cmVwbHkKK3VrXzlwcmVxX2Vycm9yCmRpZmYgLS1naXQgYS9s
aWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmggYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTRkMmFmODYzNWQKLS0t
IC9kZXYvbnVsbAorKysgYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmgKQEAgLTAsMCArMSwz
MDAgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisg
KiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgorICoKKyAqIENvcHly
aWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaWZuZGVmIF9fVUtfOVBSRVFfXworI2Rl
ZmluZSBfX1VLXzlQUkVRX18KKworI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8dWsv
Y29uZmlnLmg+CisjaW5jbHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxz
Lmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CisjaWYg
Q09ORklHX0xJQlVLU0NIRUQKKyNpbmNsdWRlIDx1ay93YWl0X3R5cGVzLmg+CisjZW5kaWYKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKgorICogVGhlIGhl
YWRlciBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczogc2l6ZSAoNCBieXRlcyksIHR5
cGUgKDEpIGFuZAorICogdGFnICgyKS4KKyAqLworI2RlZmluZSBVS185UF9IRUFERVJfU0laRSAg
ICAgICAgICAgICAgIDdVCisKKy8qCisgKiBUaGUgbWF4aW11bSBidWZmZXIgc2l6ZSBmb3IgYW4g
ZXJyb3IgcmVwbHkgaXMgZ2l2ZW4gYnkgdGhlIGhlYWRlciAoNyksIHRoZQorICogc3RyaW5nIHNp
emUgKDIpLCB0aGUgZXJyb3Igc3RyaW5nICgxMjgpIGFuZCB0aGUgZXJyb3IgY29kZSAoNCk6IGlu
IHRvdGFsLAorICogMTQxLgorICovCisjZGVmaW5lIFVLXzlQX1JFUlJPUl9NQVhTSVpFICAgICAg
ICAgICAgMTQxVQorCisvKioKKyAqIEBpbnRlcm5hbAorICoKKyAqIERlc2NyaWJlcyB0aGUgOXAg
emVyby1jb3B5IGRpcmVjdGlvbi4KKyAqLworZW51bSB1a185cHJlcV96Y2RpciB7CisJVUtfOVBS
RVFfWkNESVJfTk9ORSwKKwlVS185UFJFUV9aQ0RJUl9SRUFELAorCVVLXzlQUkVRX1pDRElSX1dS
SVRFLAorfTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqCisgKiBEZXNjcmliZXMgYSA5cCBmY2Fs
bCBzdHJ1Y3R1cmUuCisgKi8KK3N0cnVjdCB1a185cHJlcV9mY2FsbCB7CisJLyoKKwkgKiBUb3Rh
bCBzaXplIG9mIHRoZSBmY2FsbC4gSW5pdGlhbGx5LCB0aGlzIGlzIHRoZSBidWZmZXIgc2l6ZS4K
KwkgKiBBZnRlciByZWFkeSAob24geG1pdCkgb3IgcmVwbHkgKG9uIHJlY3YpLCB0aGlzIHdpbGwg
YmUgdGhlIHNpemUgb2YKKwkgKiB0aGUgc2VudC9yZWNlaXZlZCBkYXRhLgorCSAqLworCXVpbnQz
Ml90ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTsKKwkvKiBUeXBlIG9mIHRoZSBmY2FsbC4g
U2hvdWxkIGJlIFQqIGZvciB0cmFuc21pdCwgUiogZm9yIHJlY2VpdmUuICovCisJdWludDhfdCAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlOworCS8qIE9mZnNldCB3aGlsZSBzZXJpYWxpemlu
ZyBvciBkZXNlcmlhbGl6aW5nLiAqLworCXVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0OworCS8qIEJ1ZmZlciBwb2ludGVyLiAqLworCXZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKmJ1ZjsKKworCS8qIFplcm8tY29weSBidWZmZXIgcG9pbnRlci4gKi8KKwl2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICp6Y19idWY7CisJLyogWmVyby1jb3B5IGJ1ZmZl
ciBzaXplLiAqLworCXVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgemNfc2l6ZTsKKwkv
KiBaZXJvLWNvcHkgYnVmZmVyIG9mZnNldCBpbiB0aGUgOVAgbWVzc2FnZS4gKi8KKwl1aW50MzJf
dCAgICAgICAgICAgICAgICAgICAgICAgIHpjX29mZnNldDsKK307CisKKy8qKgorICogRGVzY3Jp
YmVzIHRoZSBwb3NzaWJsZSBzdGF0ZXMgaW4gd2hpY2ggYSByZXF1ZXN0IG1heSBiZS4KKyAqCisg
KiAtIE5PTkU6IFJpZ2h0IGFmdGVyIGFsbG9jYXRpbmcuCisgKiAtIElOSVRJQUxJWkVEOiBSZXF1
ZXN0IGlzIHJlYWR5IHRvIHJlY2VpdmUgc2VyaWFsaXphdGlvbiBkYXRhLgorICogLSBSRUFEWTog
UmVxdWVzdCBpcyByZWFkeSB0byBiZSBzZW50LgorICogLSBSRUNFSVZFRDogVHJhbnNwb3J0IGxh
eWVyIGhhcyByZWNlaXZlZCB0aGUgcmVwbHkgYW5kIGltcG9ydGFudCBkYXRhIHN1Y2gKKyAqICAg
YXMgdGhlIHRhZywgdHlwZSBhbmQgc2l6ZSBoYXZlIGJlZW4gdmFsaWRhdGVkLgorICovCitlbnVt
IHVrXzlwcmVxX3N0YXRlIHsKKwlVS185UFJFUV9OT05FID0gMCwKKwlVS185UFJFUV9JTklUSUFM
SVpFRCwKKwlVS185UFJFUV9SRUFEWSwKKwlVS185UFJFUV9TRU5ULAorCVVLXzlQUkVRX1JFQ0VJ
VkVECit9OworCisvKioKKyAqICBEZXNjcmliZXMgYSA5UCByZXF1ZXN0LgorICoKKyAqICBUaGlz
IGdldHMgYWxsb2NhdGVkIHZpYSB1a185cGRldl9yZXFfY3JlYXRlKCksIGFuZCBmcmVlZCB3aGVu
IGl0IGlzIG5vdAorICogIHJlZmVyZW5jZWQgYW55bW9yZS4gQSBjYWxsIHRvIHVrXzlwZGV2X3Jl
cV9yZW1vdmUoKSBpcyBtYW5kYXRvcnkgdG8KKyAqICBjb3JyZWN0bHkgZnJlZSB0aGlzIGFuZCBy
ZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvZiByZXF1ZXN0cyBtYW5hZ2VkCisgKiAgYnkgdGhlIDlw
IGRldmljZS4KKyAqLworc3RydWN0IHVrXzlwcmVxIHsKKwkvKiBUcmFuc21pdCBmY2FsbC4gKi8K
KwlzdHJ1Y3QgdWtfOXByZXFfZmNhbGwgICAgICAgICAgIHhtaXQ7CisJLyogUmVjZWl2ZSBmY2Fs
bC4gKi8KKwlzdHJ1Y3QgdWtfOXByZXFfZmNhbGwgICAgICAgICAgIHJlY3Y7CisJLyogU3RhdGUg
b2YgdGhlIHJlcXVlc3QuIFNlZSB0aGUgc3RhdGUgZW51bSBmb3IgZGV0YWlscy4gKi8KKwllbnVt
IHVrXzlwcmVxX3N0YXRlICAgICAgICAgICAgIHN0YXRlOworCS8qIFRhZyBhbGxvY2F0ZWQgdG8g
dGhpcyByZXF1ZXN0LiAqLworCXVpbnQxNl90ICAgICAgICAgICAgICAgICAgICAgICAgdGFnOwor
CS8qIEVudHJ5IGludG8gdGhlIGxpc3Qgb2YgcmVxdWVzdHMgKEFQSS1pbnRlcm5hbCkuICovCisJ
c3RydWN0IHVrX2xpc3RfaGVhZCAgICAgICAgICAgICBfbGlzdDsKKwkvKiBAaW50ZXJuYWwgQWxs
b2NhdG9yIHVzZWQgdG8gYWxsb2NhdGUgdGhpcyByZXF1ZXN0LiAqLworCXN0cnVjdCB1a19hbGxv
YyAgICAgICAgICAgICAgICAgKl9hOworCS8qIFRyYWNrcyB0aGUgbnVtYmVyIG9mIHJlZmVyZW5j
ZXMgdG8gdGhpcyBzdHJ1Y3R1cmUuICovCisJX19hdG9taWMgICAgICAgICAgICAgICAgICAgICAg
ICByZWZjb3VudDsKKyNpZiBDT05GSUdfTElCVUtTQ0hFRAorCS8qIFdhaXQtcXVldWUgZm9yIHN0
YXRlIGNoYW5nZXMuICovCisJc3RydWN0IHVrX3dhaXRxICAgICAgICAgICAgICAgICB3cTsKKyNl
bmRpZgorfTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEFsbG9jYXRlcyBhIDlwIHJlcXVlc3Qu
CisgKiBTaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHksIHVzZSB1a185cGRldl9yZXFfY3JlYXRl
KCkgaW5zdGVhZC4KKyAqCisgKiBAcGFyYW0gYQorICogICBBbGxvY2F0b3IgdG8gdXNlLgorICog
QHBhcmFtIHNpemUKKyAqICAgTWluaW11bSBzaXplIG9mIHRoZSByZWNlaXZlIGFuZCB0cmFuc21p
dCBidWZmZXJzLgorICogQHJldHVybgorICogICAtICg9PU5VTEwpOiBPdXQgb2YgbWVtb3J5Lgor
ICogICAtICghPU5VTEwpOiBTdWNjZXNzZnVsLgorICovCitzdHJ1Y3QgdWtfOXByZXEgKnVrXzlw
cmVxX2FsbG9jKHN0cnVjdCB1a19hbGxvYyAqYSwgdWludDMyX3Qgc2l6ZSk7CisKKy8qKgorICog
R2V0cyB0aGUgOXAgcmVxdWVzdCwgaW5jcmVtZW50aW5nIHRoZSByZWZlcmVuY2UgY291bnQuCisg
KgorICogQHBhcmFtIHJlcQorICogICBSZWZlcmVuY2UgdG8gdGhlIDlwIHJlcXVlc3QuCisgKi8K
K3ZvaWQgdWtfOXByZXFfZ2V0KHN0cnVjdCB1a185cHJlcSAqcmVxKTsKKworLyoqCisgKiBQdXRz
IHRoZSA5cCByZXF1ZXN0LCBkZWNyZW1lbnRpbmcgdGhlIHJlZmVyZW5jZSBjb3VudC4KKyAqIElm
IHRoaXMgd2FzIHRoZSBsYXN0IGxpdmUgcmVmZXJlbmNlLCB0aGUgbWVtb3J5IHdpbGwgYmUgZnJl
ZWQuCisgKgorICogQHBhcmFtIHJlcQorICogICBSZWZlcmVuY2UgdG8gdGhlIDlwIHJlcXVlc3Qu
CisgKiBAcmV0dXJuCisgKiAgIC0gMDogVGhpcyB3YXMgbm90IHRoZSBsYXN0IGxpdmUgcmVmZXJl
bmNlLgorICogICAtIDE6IFRoaXMgd2FzIHRoZSBsYXN0IGxpdmUgcmVmZXJlbmNlLgorICovCitp
bnQgdWtfOXByZXFfcHV0KHN0cnVjdCB1a185cHJlcSAqcmVxKTsKKworLyoKKyAqIFRoZSBmb2xs
b3dpbmcgZmFtaWx5IG9mIHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbiBmdW5jdGlv
bnMgd29yaworICogYnkgZW1wbG95aW5nIGEgcHJpbnRmLWxpa2UgZm9ybWF0dGluZyBtZWNoYW5p
c20gZm9yIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5CisgKiB0aGUgOXAgcHJvdG9jb2w6CisgKiAt
ICdiJzogYnl0ZSAodWludDhfdCkKKyAqIC0gJ3cnOiB3b3JkICh1aW50MTZfdCkKKyAqIC0gJ2Qn
OiBkb3VibGUtd29yZCAodWludDMyX3QpCisgKiAtICdxJzogcXVhZC13b3JkICh1aW50NjRfdCkK
KyAqIC0gJ3MnOiB1a185cF9zdHIgKgorICogLSAnUyc6IHVrXzlwX3N0YXQgKgorICoKKyAqIFNp
bWlsYXJseSB0byB2cHJpbnRmKCksIHRoZSB2c2VyaWFsaXplKCkgYW5kIHZkZXNlcmlhbGl6ZSgp
IGZ1bmN0aW9ucyB0YWtlCisgKiBhIHZhX2xpc3QgaW5zdGVhZCBvZiBhIHZhcmlhYmxlIG51bWJl
ciBvZiBhcmd1bWVudHMuCisgKgorICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoKKyAqIC0gMDog
T3BlcmF0aW9uIHN1Y2Nlc3NmdWwuCisgKiAtICgtRUlOVkFMKTogSW52YWxpZCBmb3JtYXQgc3Bl
Y2lmaWVyLgorICogLSAoLUVOT0JVRlMpOiBFbmQgb2YgYnVmZmVyIHJlYWNoZWQuCisgKi8KKwor
aW50IHVrXzlwcmVxX3ZzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxICpyZXEsIGNvbnN0IGNoYXIg
KmZtdCwgdmFfbGlzdCB2bCk7CitpbnQgdWtfOXByZXFfc2VyaWFsaXplKHN0cnVjdCB1a185cHJl
cSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgdWtfOXByZXFfdmRlc2VyaWFsaXpl
KHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmwpOworaW50
IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpm
bXQsIC4uLik7CisKKy8qKgorICogQ29waWVzIHJhdyBkYXRhIGZyb20gdGhlIHJlcXVlc3QgcmVj
ZWl2ZSBidWZmZXIgdG8gdGhlIHByb3ZpZGVkIGJ1ZmZlci4KKyAqCisgKiBAcGFyYW0gcmVxCisg
KiAgIFJlZmVyZW5jZSB0byB0aGUgOXAgcmVxdWVzdC4KKyAqIEBwYXJhbSBidWYKKyAqICAgRGVz
dGluYXRpb24gYnVmZmVyLgorICogQHBhcmFtIHNpemUKKyAqICAgQW1vdW50IHRvIGNvcHkuCisg
KiBQb3NzaWJsZSByZXR1cm4gdmFsdWVzOgorICogLSAwOiBPcGVyYXRpb24gc3VjY2Vzc2Z1bC4K
KyAqIC0gKC1FTk9CVUZTKTogRW5kIG9mIGJ1ZmZlciByZWFjaGVkLgorICovCitpbnQgdWtfOXBy
ZXFfY29weV90byhzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgdm9pZCAqYnVmLCB1aW50MzJfdCBzaXpl
KTsKKworLyoqCisgKiBDb3BpZXMgcmF3IGRhdGEgZnJvbSB0aGUgcHJvdmlkZWQgYnVmZmVyIHRv
IHRoZSByZXF1ZXN0IHRyYW5zbWlzc2lvbiBidWZmZXIuCisgKgorICogQHBhcmFtIHJlcQorICog
ICBSZWZlcmVuY2UgdG8gdGhlIDlwIHJlcXVlc3QuCisgKiBAcGFyYW0gYnVmCisgKiAgIFNvdXJj
ZSBidWZmZXIuCisgKiBAcGFyYW0gc2l6ZQorICogICBBbW91bnQgdG8gY29weS4KKyAqIFBvc3Np
YmxlIHJldHVybiB2YWx1ZXM6CisgKiAtIDA6IE9wZXJhdGlvbiBzdWNjZXNzZnVsLgorICogLSAo
LUVOT0JVRlMpOiBFbmQgb2YgYnVmZmVyIHJlYWNoZWQuCisgKi8KK2ludCB1a185cHJlcV9jb3B5
X2Zyb20oc3RydWN0IHVrXzlwcmVxICpyZXEsIGNvbnN0IHZvaWQgKmJ1ZiwgdWludDMyX3Qgc2l6
ZSk7CisKKy8qKgorICogTWFya3MgdGhlIGdpdmVuIHJlcXVlc3QgYXMgYmVpbmcgcmVhZHksIHRy
YW5zaXRpb25pbmcgYmV0d2VlbiBzdGF0ZXMKKyAqIElOSVRJQUxJWkVEIGFuZCBSRUFEWS4KKyAq
CisgKiBAcGFyYW0gcmVxCisgKiAgIFJlZmVyZW5jZSB0byB0aGUgOXAgcmVxdWVzdC4KKyAqIEBw
YXJhbSB6Y19kaXIKKyAqICAgWmVyby1jb3B5IGRpcmVjdGlvbi4KKyAqIEBwYXJhbSB6Y19idWYK
KyAqICAgWmVyby1jb3B5IGJ1ZmZlciwgaWYgemNfZGlyIGlzIG5vdCBOT05FLgorICogQHBhcmFt
IHpjX3NpemUKKyAqICAgWmVyby1jb3B5IGJ1ZmZlciBzaXplLCBpZiB6Y19kaXIgaXMgbm90IE5P
TkUuCisgKiBAcGFyYW0gemNfb2Zmc2V0CisgKiAgIFplcm8tY29weSBvZmZzZXQgd2l0aGluIHRo
ZSByZWNlaXZlZCBtZXNzYWdlLCBpZiB6Y19kaXIgaXMgUkVBRC4KKyAqIEByZXR1cm4KKyAqICAg
LSAwOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBJbnZhbGlkIHN0YXRlIG9yIHJlcXVlc3Qg
c2l6ZSBzZXJpYWxpemF0aW9uIGZhaWxlZC4KKyAqLworaW50IHVrXzlwcmVxX3JlYWR5KHN0cnVj
dCB1a185cHJlcSAqcmVxLCBlbnVtIHVrXzlwcmVxX3pjZGlyIHpjX2RpciwKKwkJdm9pZCAqemNf
YnVmLCB1aW50MzJfdCB6Y19zaXplLCB1aW50MzJfdCB6Y19vZmZzZXQpOworCisvKioKKyAqIEZ1
bmN0aW9uIGNhbGxlZCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIgd2hlbiBhIHJlcXVlc3QgaGFz
IGJlZW4gcmVjZWl2ZWQuCisgKiBJbXBsZW1lbnRzIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIFNF
TlQgdG8gdGhlIFJFQ0VJVkVEIHN0YXRlLgorICoKKyAqIEBwYXJhbSByZXEKKyAqICAgVGhlIDlQ
IHJlcXVlc3QuCisgKiBAcGFyYW0gcmVjdl9zaXplCisgKiAgIFNpemUgb2YgdGhlIHBhY2tldCBy
ZWNlaXZlZCBmcm9tIHRoZSB0cmFuc3BvcnQgbGF5ZXIuCisgKiBAcmV0dXJuCisgKiAgIC0gKDAp
OiBTdWNjZXNzZnVsbHkgcmVjZWl2ZWQuCisgKiAgIC0gKDwgMCk6IEFuIGVycm9yIG9jY3VycmVk
LgorICovCitpbnQgdWtfOXByZXFfcmVjZWl2ZV9jYihzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgdWlu
dDMyX3QgcmVjdl9zaXplKTsKKworLyoqCisgKiBXYWl0cyBmb3IgdGhlIHJlcGx5IHRvIGJlIHJl
Y2VpdmVkLgorICoKKyAqIEBwYXJhbSByZXEKKyAqICAgVGhlIDlQIHJlcXVlc3QuCisgKiBAcmV0
dXJuCisgKiAgIC0gKDApOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBGYWlsZWQuIFJldHVy
bnMgdGhlIGVycm9yIGNvZGUgcmVjZWl2ZWQgZnJvbSB0aGUgOVAgc2VydmVyLgorICovCitpbnQg
dWtfOXByZXFfd2FpdHJlcGx5KHN0cnVjdCB1a185cHJlcSAqcmVxKTsKKworLyoqCisgKiBFeHRy
YWN0cyB0aGUgZXJyb3IgZnJvbSB0aGUgcmVjZWl2ZWQgcmVwbHkuCisgKgorICogQHBhcmFtIHJl
cQorICogICBUaGUgOVAgcmVxdWVzdC4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IE5vIGVycm9y
IG9jY3VycmVkLgorICogICAtICg8IDApOiBBbiBSZXJyb3Igd2FzIHJlY2VpdmVkLCB0aGUgZXJy
b3IgY29kZSBpcyA5cGZzLXNwZWNpZmljLgorICovCitpbnQgdWtfOXByZXFfZXJyb3Ioc3RydWN0
IHVrXzlwcmVxICpyZXEpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLyogX19VS185UFJFUV9fICovCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58: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 1hh9Bz-0001tk-KW; Sat, 29 Jun 2019 08:58:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bx-0001sk-Lx
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:41 +0000
X-Inumbo-ID: 1603f7ff-9a4c-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1603f7ff-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:39 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id s15so11077970wmj.3
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58:39 -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=1nrfc7xQ7xb16n6A+tkDbDhVk4nRWc3XF5NsgABWUlY=;
 b=udgfHhEtRPRHYbaIyyw6idHf+0bVAqylxq5QyXqWwsYSNWbaiEwOPB6jW218epAFTh
 5lb4xQwEuSxkWFvi+sAAJnOiL84fp/1pZ8zL70pY/qqYoQWDJbC0yhZ4tNfv9NATyM4Z
 2hvNZWkS0VpLl5LmobtVkImM/6DF7TS2dmQekmcwImIqjoNv5IuX+KzIOeQy+mdc5prz
 DXJGPg3rPl2cs3S53FXkpwAVpw3SfNf+Uj0t6wczsJyQjyN/vfudChS9mAzlLCW7UxD7
 hUVeDc9hji79PP0ljAyA9up8CpWmOnahHA4Z+zkuycX+G3xuxXtO4MFDfWqlkTGHzTWm
 j6Ng==
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=1nrfc7xQ7xb16n6A+tkDbDhVk4nRWc3XF5NsgABWUlY=;
 b=KevwS3cCgczaKxrLJrKM2wJCJCkTmWhbEbmaCIanFUA4D8oy3yZAtM7dne7TsZUgb4
 ZxzEkUd6CV+uP2LCD0jKql+ncyHsD6cXmVlmkzY1cUgCE+9eu+x4LqTUutgkhxjE0HsE
 uleey5KAFrsgnN7e5oJeGsLiJyeK0iHEVKsQGUhDck/R8B2FnUp5fbA+6r7eKnPNmSx4
 OjIy9Mu/pShYgkUcWP5wOnjZCGZeMVY41gqoRLZkGYTm3oVFfz2VS48B1n72UBLX0cQT
 yfyvk97vIPeWwRDI3TNSIePiUyl4YazzkjeJdprE/S4/fKNHIybkPpUxPAtUcbSRnYiU
 holQ==
X-Gm-Message-State: APjAAAWyxRi21bsVMGPraykqC17BZ11Fze8MfuCIsBPwYMJaram2NzEw
 C3zfNYf+M/UKcFyO8IbUga7yYAQ9u5c=
X-Google-Smtp-Source: APXvYqylsnntoT7u12+n1CtyBGPsRwvskI2sl8icQmq/QyBVZA7bmvBfLEipenS+6iq3jzTuHv3Tiw==
X-Received: by 2002:a7b:c310:: with SMTP id k16mr9540706wmj.133.1561798717877; 
 Sat, 29 Jun 2019 01:58:37 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.36
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:37 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:05 +0300
Message-Id: <20190629085608.15680-6-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 5/8] lib/uk9p: Add 9P device
 implementation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSBvcGVyYXRpb25zIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBi
eSB0cmFuc3BvcnQKbGF5ZXJzLCB0aGUgQVBJIHRvIGludGVyYWN0IHdpdGggdGhlbSBhbmQgdG8g
bWFuYWdlIHJlcXVlc3RzLgoKU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdt
YWlsLmNvbT4KLS0tCiBsaWIvdWs5cC85cGRldi5jICAgICAgICAgICAgICAgICAgfCAzMjYgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91azlwLzlwZGV2X3RyYW5z
LmMgICAgICAgICAgICB8ICAgNCArCiBsaWIvdWs5cC9NYWtlZmlsZS51ayAgICAgICAgICAgICAg
fCAgIDEgKwogbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgICA5ICsrCiBsaWIv
dWs5cC9pbmNsdWRlL3VrLzlwZGV2LmggICAgICAgfCAxODggKysrKysrKysrKysrKysrKysrKysr
KwogbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl9jb3JlLmggIHwgMTY5ICsrKysrKysrKysrKysr
KysrKysrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X3RyYW5zLmggfCAgIDMgKwogNyBmaWxl
cyBjaGFuZ2VkLCA3MDAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlw
LzlwZGV2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaAoKZGlm
ZiAtLWdpdCBhL2xpYi91azlwLzlwZGV2LmMgYi9saWIvdWs5cC85cGRldi5jCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDVhNTgxZWFmYmRiCi0tLSAvZGV2L251bGwK
KysrIGIvbGliL3VrOXAvOXBkZXYuYwpAQCAtMCwwICsxLDMyNiBAQAorLyogU1BEWC1MaWNlbnNl
LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJh
bnUgPGNyaXN0YkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJz
aXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
KiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZ
LgorICovCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j
bHVkZSA8dWsvY29uZmlnLmg+CisjaW5jbHVkZSA8dWsvcGxhdC9zcGlubG9jay5oPgorI2luY2x1
ZGUgPHVrL2FsbG9jLmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgorI2luY2x1ZGUgPHVr
L2VycnB0ci5oPgorI2luY2x1ZGUgPHVrL2JpdG1hcC5oPgorI2luY2x1ZGUgPHVrL3JlZmNvdW50
Lmg+CisjaW5jbHVkZSA8dWsvd2FpdC5oPgorI2luY2x1ZGUgPHVrLzlwZGV2Lmg+CisjaW5jbHVk
ZSA8dWsvOXBkZXZfdHJhbnMuaD4KKyNpbmNsdWRlIDx1ay85cHJlcS5oPgorI2lmIENPTkZJR19M
SUJVS1NDSEVECisjaW5jbHVkZSA8dWsvc2NoZWQuaD4KKyNpbmNsdWRlIDx1ay93YWl0Lmg+Cisj
ZW5kaWYKKworc3RhdGljIGludCBfcmVxX21nbXRfaW5pdChzdHJ1Y3QgdWtfOXBkZXZfcmVxX21n
bXQgKnJlcV9tZ210KQoreworCXVrYXJjaF9zcGluX2xvY2tfaW5pdCgmcmVxX21nbXQtPnNwaW5s
b2NrKTsKKwl1a19iaXRtYXBfemVybyhyZXFfbWdtdC0+dGFnX2JtLCBVS185UF9OVU1UQUdTKTsK
KwlVS19JTklUX0xJU1RfSEVBRCgmcmVxX21nbXQtPnJlcV9saXN0KTsKKworCXJldHVybiAwOwor
fQorCitzdGF0aWMgdm9pZCBfcmVxX21nbXRfYWRkX3JlcV9sb2NrZWQoc3RydWN0IHVrXzlwZGV2
X3JlcV9tZ210ICpyZXFfbWdtdCwKKwkJCQlzdHJ1Y3QgdWtfOXByZXEgKnJlcSkKK3sKKwl1a19i
aXRtYXBfc2V0KHJlcV9tZ210LT50YWdfYm0sIHJlcS0+dGFnLCAxKTsKKwl1a19saXN0X2FkZCgm
cmVxLT5fbGlzdCwgJnJlcV9tZ210LT5yZXFfbGlzdCk7Cit9CisKK3N0YXRpYyB2b2lkIF9yZXFf
bWdtdF9kZWxfcmVxX2xvY2tlZChzdHJ1Y3QgdWtfOXBkZXZfcmVxX21nbXQgKnJlcV9tZ210LAor
CQkJCXN0cnVjdCB1a185cHJlcSAqcmVxKQoreworCXVrX2JpdG1hcF9jbGVhcihyZXFfbWdtdC0+
dGFnX2JtLCByZXEtPnRhZywgMSk7CisJdWtfbGlzdF9kZWwoJnJlcS0+X2xpc3QpOworfQorCitz
dGF0aWMgaW50IF9yZXFfbWdtdF9uZXh0X3RhZ19sb2NrZWQoc3RydWN0IHVrXzlwZGV2X3JlcV9t
Z210ICpyZXFfbWdtdCwKKwkJCQl1aW50MTZfdCAqdGFnKQoreworCSp0YWcgPSB1a19maW5kX25l
eHRfemVyb19iaXQocmVxX21nbXQtPnRhZ19ibSwgVUtfOVBfTlVNVEFHUywgMCk7CisKKwlyZXR1
cm4gMDsKK30KKworc3RhdGljIHZvaWQgX3JlcV9tZ210X2NsZWFudXAoc3RydWN0IHVrXzlwZGV2
X3JlcV9tZ210ICpyZXFfbWdtdCBfX3VudXNlZCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor
CXVpbnQxNl90IHRhZzsKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgKnJlcW47CisKKwl1a3BsYXRf
c3Bpbl9sb2NrX2lycXNhdmUoJnJlcV9tZ210LT5zcGlubG9jaywgZmxhZ3MpOworCXVrX2xpc3Rf
Zm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHJlcW4sICZyZXFfbWdtdC0+cmVxX2xpc3QsIF9saXN0
KSB7CisJCXRhZyA9IHJlcS0+dGFnOworCQlfcmVxX21nbXRfZGVsX3JlcV9sb2NrZWQocmVxX21n
bXQsIHJlcSk7CisJCWlmICghdWtfOXByZXFfcHV0KHJlcSkpIHsKKwkJCXVrX3ByX3dhcm4oIlRh
ZyAlZCBzdGlsbCBoYXMgcmVmZXJlbmNlcyBvbiBjbGVhbnVwLlxuIiwKKwkJCQl0YWcpOworCQl9
CisJfQorCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZyZXFfbWdtdC0+c3BpbmxvY2ss
IGZsYWdzKTsKK30KKworc3RydWN0IHVrXzlwZGV2ICp1a185cGRldl9jb25uZWN0KGNvbnN0IHN0
cnVjdCB1a185cGRldl90cmFucyAqdHJhbnMsCisJCQkJY29uc3QgY2hhciAqZGV2aWNlX2lkZW50
aWZpZXIsCisJCQkJY29uc3QgY2hhciAqbW91bnRfYXJncywKKwkJCQlzdHJ1Y3QgdWtfYWxsb2Mg
KmEpCit7CisJc3RydWN0IHVrXzlwZGV2ICpkZXY7CisJaW50IHJjID0gMDsKKworCVVLX0FTU0VS
VCh0cmFucyk7CisJVUtfQVNTRVJUKGRldmljZV9pZGVudGlmaWVyKTsKKworCWlmIChhID09IE5V
TEwpCisJCWEgPSB0cmFucy0+YTsKKworCWRldiA9IHVrX2NhbGxvYyhhLCAxLCBzaXplb2YoKmRl
dikpOworCWlmIChkZXYgPT0gTlVMTCkgeworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gb3V0Owor
CX0KKworCWRldi0+b3BzID0gdHJhbnMtPm9wczsKKwlkZXYtPmEgPSBhOworCisjaWYgQ09ORklH
X0xJQlVLU0NIRUQKKwl1a193YWl0cV9pbml0KCZkZXYtPnhtaXRfd3EpOworI2VuZGlmCisKKwly
YyA9IF9yZXFfbWdtdF9pbml0KCZkZXYtPl9yZXFfbWdtdCk7CisJaWYgKHJjIDwgMCkKKwkJZ290
byBmcmVlX2RldjsKKworCXJjID0gZGV2LT5vcHMtPmNvbm5lY3QoZGV2LCBkZXZpY2VfaWRlbnRp
ZmllciwgbW91bnRfYXJncyk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBmcmVlX3JlcTsKKworCVVL
X0FTU0VSVChkZXYtPm1zaXplICE9IDApOworCisJZGV2LT5zdGF0ZSA9IFVLXzlQREVWX0NPTk5F
Q1RFRDsKKwlnb3RvIG91dDsKKworZnJlZV9yZXE6CisJX3JlcV9tZ210X2NsZWFudXAoJmRldi0+
X3JlcV9tZ210KTsKK2ZyZWVfZGV2OgorCXVrX2ZyZWUoYSwgZGV2KTsKK291dDoKKwlpZiAocmMg
PT0gMCkKKwkJcmV0dXJuIGRldjsKKwlyZXR1cm4gRVJSMlBUUihyYyk7Cit9CisKK2ludCB1a185
cGRldl9kaXNjb25uZWN0KHN0cnVjdCB1a185cGRldiAqZGV2KQoreworCWludCByYyA9IDA7CisK
KwlVS19BU1NFUlQoZGV2KTsKKwlVS19BU1NFUlQoZGV2LT5zdGF0ZSA9PSBVS185UERFVl9DT05O
RUNURUQpOworCisJZGV2LT5zdGF0ZSA9IFVLXzlQREVWX0RJU0NPTk5FQ1RJTkc7CisKKwkvKiBD
bGVhbiB1cCB0aGUgcmVxdWVzdHMgYmVmb3JlIGNsb3NpbmcgdGhlIGNoYW5uZWwuICovCisJX3Jl
cV9tZ210X2NsZWFudXAoJmRldi0+X3JlcV9tZ210KTsKKworCXJjID0gZGV2LT5vcHMtPmRpc2Nv
bm5lY3QoZGV2KTsKKworCXVrX2ZyZWUoZGV2LT5hLCBkZXYpOworCXJldHVybiByYzsKK30KKwor
aW50IHVrXzlwZGV2X3JlcXVlc3Qoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cHJl
cSAqcmVxKQoreworCWludCByYzsKKworCVVLX0FTU0VSVChkZXYpOworCVVLX0FTU0VSVChyZXEp
OworCisJaWYgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9SRUFEWSkgewor
CQlyYyA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChkZXYtPnN0YXRlICE9IFVL
XzlQREVWX0NPTk5FQ1RFRCkgeworCQlyYyA9IC1FSU87CisJCWdvdG8gb3V0OworCX0KKworI2lm
IENPTkZJR19MSUJVS1NDSEVECisJdWtfd2FpdHFfd2FpdF9ldmVudCgmZGV2LT54bWl0X3dxLAor
CQkocmMgPSBkZXYtPm9wcy0+cmVxdWVzdChkZXYsIHJlcSkpID49IDAgfHwgcmMgIT0gLUVOT1NQ
Qyk7CisjZWxzZQorCXJjID0gLUVOT1NQQzsKKwl3aGlsZSAocmMgPCAwICYmIHJjID09IC1FTk9T
UEMpCisJCXJjID0gZGV2LT5vcHMtPnJlcXVlc3QoZGV2LCByZXEpOworI2VuZGlmCisKK291dDoK
KwlyZXR1cm4gcmM7Cit9CisKK3ZvaWQgdWtfOXBkZXZfeG1pdF9yZWFkeShzdHJ1Y3QgdWtfOXBk
ZXYgKmRldikKK3sKKyNpZiBDT05GSUdfTElCVUtTQ0hFRAorCXVrX3dhaXRxX3dha2VfdXAoJmRl
di0+eG1pdF93cSk7CisjZW5kaWYKK30KKworc3RydWN0IHVrXzlwcmVxICp1a185cGRldl9jYWxs
KHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCisJCQl1aW50MzJfdCBzaXplLCBj
b25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKwl2YV9saXN0
IHZsOworCWludCByYzsKKworCXJlcSA9IHVrXzlwZGV2X3JlcV9jcmVhdGUoZGV2LCB0eXBlLCBz
aXplKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkKKwkJcmV0dXJuIHJlcTsKKworCXZhX3N0YXJ0KHZs
LCBmbXQpOworCXJjID0gdWtfOXByZXFfdnNlcmlhbGl6ZShyZXEsIGZtdCwgdmwpOworCXZhX2Vu
ZCh2bCk7CisKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworCXJjID0gdWtfOXByZXFfcmVh
ZHkocmVxLCBVS185UFJFUV9aQ0RJUl9OT05FLCBOVUxMLCAwLCAwKTsKKwlpZiAocmMgPCAwKQor
CQlnb3RvIG91dDsKKworCXJjID0gdWtfOXBkZXZfcmVxdWVzdChkZXYsIHJlcSk7CisJaWYgKHJj
IDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHVrXzlwcmVxX3dhaXRyZXBseShyZXEpOworCWlm
IChyYyA8IDApCisJCWdvdG8gb3V0OworCisJcmV0dXJuIHJlcTsKK291dDoKKwl1a185cGRldl9y
ZXFfcmVtb3ZlKGRldiwgcmVxKTsKKwlyZXR1cm4gRVJSMlBUUihyYyk7Cit9CisKK3N0cnVjdCB1
a185cHJlcSAqdWtfOXBkZXZfcmVxX2NyZWF0ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgdWludDhf
dCB0eXBlLAorCQkJCXVpbnQzMl90IHNpemUpCit7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJ
aW50IHJjID0gMDsKKwl1aW50MTZfdCB0YWc7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCVVL
X0FTU0VSVChkZXYpOworCisJc2l6ZSA9IE1JTihzaXplLCBkZXYtPm1zaXplKTsKKworCXJlcSA9
IHVrXzlwcmVxX2FsbG9jKGRldi0+YSwgc2l6ZSk7CisJaWYgKHJlcSA9PSBOVUxMKSB7CisJCXJj
ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCisJdWtwbGF0X3NwaW5fbG9ja19pcnFzYXZl
KCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCWlmICh0eXBlID09IFVLXzlQX1RW
RVJTSU9OKSB7CisJCXRhZyA9IFVLXzlQX05PVEFHOworCQlyYyA9IDA7CisJfSBlbHNlCisJCXJj
ID0gX3JlcV9tZ210X25leHRfdGFnX2xvY2tlZCgmZGV2LT5fcmVxX21nbXQsICZ0YWcpOworCisJ
aWYgKHJjIDwgMCkgeworCQl1a3BsYXRfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5fcmVx
X21nbXQuc3BpbmxvY2ssIGZsYWdzKTsKKwkJZ290byBvdXRfZnJlZTsKKwl9CisKKwlyZXEtPnRh
ZyA9IHRhZzsKKwlyZXEtPnhtaXQudHlwZSA9IHR5cGU7CisKKwlfcmVxX21nbXRfYWRkX3JlcV9s
b2NrZWQoJmRldi0+X3JlcV9tZ210LCByZXEpOworCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0
b3JlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCisJcmVxLT5zdGF0ZSA9IFVL
XzlQUkVRX0lOSVRJQUxJWkVEOworCWdvdG8gb3V0OworCitvdXRfZnJlZToKKwl1a185cHJlcV9w
dXQocmVxKTsKK291dDoKKwlpZiAocmMgPT0gMCkKKwkJcmV0dXJuIHJlcTsKKwlyZXR1cm4gRVJS
MlBUUihyYyk7Cit9CisKK3N0cnVjdCB1a185cHJlcSAqdWtfOXBkZXZfcmVxX2xvb2t1cChzdHJ1
Y3QgdWtfOXBkZXYgKmRldiwgdWludDE2X3QgdGFnKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJaW50IHJjID0gLUVJTlZBTDsKKworCXVrcGxhdF9z
cGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5fcmVxX21nbXQuc3BpbmxvY2ssIGZsYWdzKTsKKwl1a19s
aXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJmRldi0+X3JlcV9tZ210LnJlcV9saXN0LCBfbGlzdCkg
eworCQlpZiAodGFnICE9IHJlcS0+dGFnKQorCQkJY29udGludWU7CisJCXJjID0gMDsKKwkJdWtf
OXByZXFfZ2V0KHJlcSk7CisJCWJyZWFrOworCX0KKwl1a3BsYXRfc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZSgmZGV2LT5fcmVxX21nbXQuc3BpbmxvY2ssIGZsYWdzKTsKKworCWlmIChyYyA9PSAwKQor
CQlyZXR1cm4gcmVxOworCisJcmV0dXJuIEVSUjJQVFIocmMpOworfQorCitpbnQgdWtfOXBkZXZf
cmVxX3JlbW92ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwcmVxICpyZXEpCit7
CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXVrcGxhdF9zcGluX2xvY2tfaXJxc2F2ZSgmZGV2
LT5fcmVxX21nbXQuc3BpbmxvY2ssIGZsYWdzKTsKKwlfcmVxX21nbXRfZGVsX3JlcV9sb2NrZWQo
JmRldi0+X3JlcV9tZ210LCByZXEpOworCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZk
ZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHVrXzlwcmVxX3B1dChy
ZXEpOworfQorCit2b2lkIHVrXzlwZGV2X2FkanVzdF9tc2l6ZShzdHJ1Y3QgdWtfOXBkZXYgKmRl
diwgdWludDMyX3QgbXNpemUpCit7CisJZGV2LT5tc2l6ZSA9IE1JTihkZXYtPm1zaXplLCBtc2l6
ZSk7Cit9CmRpZmYgLS1naXQgYS9saWIvdWs5cC85cGRldl90cmFucy5jIGIvbGliL3VrOXAvOXBk
ZXZfdHJhbnMuYwppbmRleCA2MzcyODc2NzY1YjIuLjBkYTUwZTUxMjA2ZSAxMDA2NDQKLS0tIGEv
bGliL3VrOXAvOXBkZXZfdHJhbnMuYworKysgYi9saWIvdWs5cC85cGRldl90cmFucy5jCkBAIC00
Nyw2ICs0NywxMCBAQCBpbnQgdWtfOXBkZXZfdHJhbnNfcmVnaXN0ZXIoc3RydWN0IHVrXzlwZGV2
X3RyYW5zICp0cmFucykKIHsKIAlVS19BU1NFUlQodHJhbnMpOwogCVVLX0FTU0VSVCh0cmFucy0+
bmFtZSk7CisJVUtfQVNTRVJUKHRyYW5zLT5vcHMpOworCVVLX0FTU0VSVCh0cmFucy0+b3BzLT5j
b25uZWN0KTsKKwlVS19BU1NFUlQodHJhbnMtPm9wcy0+ZGlzY29ubmVjdCk7CisJVUtfQVNTRVJU
KHRyYW5zLT5vcHMtPnJlcXVlc3QpOwogCVVLX0FTU0VSVCh0cmFucy0+YSk7CiAKIAl1a19saXN0
X2FkZF90YWlsKCZ0cmFucy0+X2xpc3QsICZ1a185cGRldl90cmFuc19saXN0KTsKZGlmZiAtLWdp
dCBhL2xpYi91azlwL01ha2VmaWxlLnVrIGIvbGliL3VrOXAvTWFrZWZpbGUudWsKaW5kZXggYWVh
NzIyYTU4NWI5Li4zNGNjOTg3YTJmOWMgMTAwNjQ0Ci0tLSBhL2xpYi91azlwL01ha2VmaWxlLnVr
CisrKyBiL2xpYi91azlwL01ha2VmaWxlLnVrCkBAIC01LDMgKzUsNCBAQCBDWFhJTkNMVURFUy0k
KENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQogCiBMSUJVSzlQ
X1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXBkZXZfdHJhbnMuYwogTElCVUs5UF9TUkNTLXkg
Kz0gJChMSUJVSzlQX0JBU0UpLzlwcmVxLmMKK0xJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9C
QVNFKS85cGRldi5jCmRpZmYgLS1naXQgYS9saWIvdWs5cC9leHBvcnRzeW1zLnVrIGIvbGliL3Vr
OXAvZXhwb3J0c3ltcy51awppbmRleCA4NTBmZmEyZGIyMzMuLmMzNzMzMDhmYjBhMiAxMDA2NDQK
LS0tIGEvbGliL3VrOXAvZXhwb3J0c3ltcy51aworKysgYi9saWIvdWs5cC9leHBvcnRzeW1zLnVr
CkBAIC0xMiwzICsxMiwxMiBAQCB1a185cHJlcV9jb3B5X2Zyb20KIHVrXzlwcmVxX3JlY2VpdmVf
Y2IKIHVrXzlwcmVxX3dhaXRyZXBseQogdWtfOXByZXFfZXJyb3IKK3VrXzlwZGV2X2Nvbm5lY3QK
K3VrXzlwZGV2X2Rpc2Nvbm5lY3QKK3VrXzlwZGV2X3JlcXVlc3QKK3VrXzlwZGV2X3htaXRfcmVh
ZHkKK3VrXzlwZGV2X2NhbGwKK3VrXzlwZGV2X3JlcV9jcmVhdGUKK3VrXzlwZGV2X3JlcV9sb29r
dXAKK3VrXzlwZGV2X3JlcV9yZW1vdmUKK3VrXzlwZGV2X2FkanVzdF9tc2l6ZQpkaWZmIC0tZ2l0
IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGRl
di5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjIyMTBiYmZmYzky
Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oCkBAIC0wLDAg
KzEsMTg4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisv
KgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFD
VEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1VLXzlQREVWX18K
KyNkZWZpbmUgX19VS185UERFVl9fCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUg
PHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHVrL2FsbG9jLmg+CisjaW5jbHVkZSA8dWsvYXNzZXJ0
Lmg+CisjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgorI2luY2x1ZGUgPHVrLzlwZGV2X2NvcmUu
aD4KKyNpbmNsdWRlIDx1ay9wbGF0L2lycS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK3N0cnVjdCB1a185cGRldl90cmFuczsKKworLyoqCisgKiBDb25u
ZWN0IHRvIGFuIHVuZGVybHlpbmcgZGV2aWNlLCBvYnRhaW5pbmcgYSA5cGRldiBoYW5kbGUgdG8g
dGhlIGNvbm5lY3Rpb24uCisgKgorICogQHBhcmFtIHRyYW5zCisgKiAgIFRoZSB1bmRlcmx5aW5n
IHRyYW5zcG9ydC4KKyAqIEBwYXJhbSBkZXZpY2VfaWRlbnRpZmllcgorICogICBUaGUgaWRlbnRp
ZmllciBvZiB0aGUgZGV2aWNlIChmb3IgdmlydGlvIGFuZCB4ZW4sIHRoZSBtb3VudCB0YWcpLgor
ICogQHBhcmFtIG1vdW50X2FyZ3MKKyAqICAgQXJndW1lbnRzIHBhc3NlZCBkb3duIGZyb20gdGhl
IG1vdW50KCkgY2FsbC4KKyAqIEBwYXJhbSBhCisgKiAgIChPcHRpb25hbCkgQWxsb2NhdG9yIHVz
ZWQgZm9yIGFueSBhbGxvY2F0aW9ucyBkb25lIGJ5IHRoaXMgOXBkZXYuCisgKiAgIElmIE5VTEws
IHRoZSB0cmFuc3BvcnQtc3BlY2lmaWMgYWxsb2NhdG9yIHdpbGwgYmUgdXNlZC4KKyAqIEByZXR1
cm4KKyAqICAgLSBDb25uZWN0aW9uIGhhbmRsZSwgaWYgc3VjY2Vzc2Z1bC4KKyAqICAgLSBFcnJv
ciBwb2ludGVyLCBvdGhlcndpc2UuCisgKi8KK3N0cnVjdCB1a185cGRldiAqdWtfOXBkZXZfY29u
bmVjdChjb25zdCBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnRyYW5zLAorCQkJCWNvbnN0IGNoYXIg
KmRldmljZV9pZGVudGlmaWVyLAorCQkJCWNvbnN0IGNoYXIgKm1vdW50X2FyZ3MsCisJCQkJc3Ry
dWN0IHVrX2FsbG9jICphKTsKKworLyoqCisgKiBEaXNjb25uZWN0IGZyb20gdGhlIHVuZGVybHlp
bmcgZGV2aWNlLgorICoKKyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmlj
ZS4KKyAqIEByZXR1cm4KKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwgMCk6IEZh
aWx1cmUgdG8gZGlzY29ubmVjdC4KKyAqLworaW50IHVrXzlwZGV2X2Rpc2Nvbm5lY3Qoc3RydWN0
IHVrXzlwZGV2ICpkZXYpOworCisvKioKKyAqIFNlbmQgYSA5UCByZXF1ZXN0IHRvIHRoZSBnaXZl
biA5UCBkZXZpY2UuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2
aWNlLgorICogQHBhcmFtIHJlcQorICogICBUaGUgOVAgcmVxdWVzdC4KKyAqIEByZXR1cm4KKyAq
ICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwgMCk6IEZhaWxlZC4KKyAqLworaW50IHVr
XzlwZGV2X3JlcXVlc3Qoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cHJlcSAqcmVx
KTsKKworLyoqCisgKiBOb3RpZnkgdGhlIDlQIGRldmljZSB0aGF0IHRoZSBkZXZpY2UncyB0cmFu
c21pdCBxdWV1ZSBpcyBub3QgZnVsbCBhbmQKKyAqIGl0IG1heSBhdHRlbXB0IHRvIHNlbmQgcmVx
dWVzdHMgYWdhaW4uCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2
aWNlLgorICovCit2b2lkIHVrXzlwZGV2X3htaXRfcmVhZHkoc3RydWN0IHVrXzlwZGV2ICpkZXYp
OworCisvKioKKyAqIENyZWF0ZXMgYW5kIHNlbmRzIDlQIHJlcXVlc3QgdG8gdGhlIGdpdmVuIDlQ
IGRldmljZSwgc2VyaWFsaXppbmcgaXQgd2l0aAorICogdGhlIGdpdmVuIGFyZ3VtZW50cy4gVGhp
cyBmdW5jdGlvbiBhY3RzIGFzIGEgc2hvcnRoYW5kIGZvciB0aGUgZXhwbGljaXQKKyAqIGNhbGxz
IHRvIHJlcV9jcmVhdGUoKSwgc2VyaWFsaXplKCksIHJlYWR5KCksIHJlcXVlc3QoKSwgd2FpdHJl
cGx5KCkuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgor
ICogQHBhcmFtIHR5cGUKKyAqICAgVHJhbnNtaXQgdHlwZSBvZiB0aGUgcmVxdWVzdCwgZS5nLiBU
dmVyc2lvbiwgVHJlYWQsIGFuZCBzbyBvbi4KKyAqIEBwYXJhbSBzaXplCisgKiAgIFRoZSBtYXhp
bXVtIHNpemUgZm9yIHRoZSByZWNlaXZlIGFuZCBzZW5kIGJ1ZmZlcnMuCisgKiBAcGFyYW0gZm10
CisgKiAgIFRoZSBmb3JtYXQgb2YgdGhlIGRhdGEgdG8gYmUgc2VyaWFsaXplZCwgaW4gdGhlIHdh
eSB1a185cHJlcV9zZXJpYWxpemUoKQorICogICBleHBlY3RzIGl0LgorICogQHBhcmFtIC4uLgor
ICogICBUaGUgYXJndW1lbnRzIHRvIGJlIHNlcmlhbGl6ZWQuCisgKiBAcmV0dXJuCisgKiAgIC0g
KCFQVFJJU0VSUik6IFRoZSA5cCByZXF1ZXN0IGluIHRoZSBVS185UFJFUV9SRUNFSVZFRCBzdGF0
ZS4KKyAqICAgLSBQVFJJU0VSUjogVGhlIGVycm9yIGNvZGUgd2l0aCB3aGljaCBhbnkgb2YgdGhl
IHN0ZXBzIGZhaWxlZC4KKyAqLworc3RydWN0IHVrXzlwcmVxICp1a185cGRldl9jYWxsKHN0cnVj
dCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCisJCQl1aW50MzJfdCBzaXplLCBjb25zdCBj
aGFyICpmbXQsIC4uLik7CisKKy8qKgorICogQ3JlYXRlIGEgbmV3IHJlcXVlc3QsIGF1dG9tYXRp
Y2FsbHkgYWxsb2NhdGluZyBpdHMgdGFnLCBiYXNlZCBvbiBpdHMgdHlwZS4KKyAqCisgKiBAcGFy
YW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFyYW0gdHlwZQorICog
ICBUcmFuc21pdCB0eXBlIG9mIHRoZSByZXF1ZXN0LCBlLmcuIFR2ZXJzaW9uLCBUcmVhZCwgYW5k
IHNvIG9uLgorICogQHBhcmFtIHNpemUKKyAqICAgVGhlIG1heGltdW0gc2l6ZSBmb3IgdGhlIHJl
Y2VpdmUgYW5kIHNlbmQgYnVmZmVycy4KKyAqIEByZXR1cm4KKyAqICAgSWYgbm90IGFuIGVycm9y
IHBvaW50ZXIsIHRoZSBjcmVhdGVkIHJlcXVlc3QuCisgKiAgIE90aGVyd2lzZSwgdGhlIGVycm9y
IGluIGNyZWF0aW5nIHRoZSByZXF1ZXN0OgorICogICAtIEVOT01FTTogTm8gbWVtb3J5IGZvciB0
aGUgcmVxdWVzdCBvciBubyBhdmFpbGFibGUgdGFncy4KKyAqLworc3RydWN0IHVrXzlwcmVxICp1
a185cGRldl9yZXFfY3JlYXRlKHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCisJ
CQkJdWludDMyX3Qgc2l6ZSk7CisKKy8qKgorICogTG9va3MgdXAgYSByZXF1ZXN0IGJhc2VkIG9u
IHRoZSBnaXZlbiB0YWcuIFRoaXMgaXMgZ2VuZXJhbGx5IHVzZWQgYnkKKyAqIHRyYW5zcG9ydCBs
YXllcnMgb24gcmVjZWl2aW5nIGEgOVAgbWVzc2FnZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAg
IFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFyYW0gdGFnCisgKiAgIFRoZSB0YWcgdG8g
bG9vayB1cC4KKyAqIEByZXR1cm4KKyAqICAgLSBOVUxMOiBObyByZXF1ZXN0IHdpdGggdGhlIGdp
dmVuIHRhZyB3YXMgZm91bmQuCisgKiAgIC0gKCE9TlVMTCk6IFRoZSByZXF1ZXN0LgorICovCitz
dHJ1Y3QgdWtfOXByZXEgKnVrXzlwZGV2X3JlcV9sb29rdXAoc3RydWN0IHVrXzlwZGV2ICpkZXYs
IHVpbnQxNl90IHRhZyk7CisKKy8qKgorICogUmVtb3ZlIGEgcmVxdWVzdCBmcm9tIHRoZSBnaXZl
biA5cCBkZXZpY2UuIElmIHRoZSByZXF1ZXN0IGlzIGluLWZsaWdodCwKKyAqIGl0IHdpbGwgYmUg
ZnJlZWQgd2hlbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gaXQgYXJlIGdvbmUuCisgKgorICogQHBh
cmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFtIHJlcQorICog
ICBUaGUgcmVxdWVzdCB0byBiZSByZW1vdmVkLgorICogQHJldHVybgorICogICAtIDA6IFRoZXJl
IGFyZSBtb3JlIGFjdGl2ZSByZWZlcmVuY2VzLgorICogICAtIDE6IFRoaXMgd2FzIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdC4KKyAqLworaW50IHVrXzlwZGV2X3JlcV9yZW1vdmUo
c3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cHJlcSAqcmVxKTsKKworLyoqCisgKiBB
ZGp1c3RzIHRoZSBtZXNzYWdlIHNpemUgdG8gdGhlIGdpdmVuIG1heGltdW0gc2l6ZS4KKyAqCisg
KiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFyYW0gbXNp
emUKKyAqICAgQWxsb3dlZCBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZS4KKyAqLwordm9pZCB1a185cGRl
dl9hZGp1c3RfbXNpemUoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHVpbnQzMl90IG1zaXplKTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fVUtfOVBERVZfXyAq
LwpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl9jb3JlLmggYi9saWIvdWs5
cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmQ3ZWYzNDFlMTJkNgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91azlwL2luY2x1
ZGUvdWsvOXBkZXZfY29yZS5oCkBAIC0wLDAgKzEsMTY5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRl
bnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8
Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkg
UG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRI
SVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisg
Ki8KKworI2lmbmRlZiBfX1VLXzlQREVWX0NPUkVfXworI2RlZmluZSBfX1VLXzlQREVWX0NPUkVf
XworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRl
IDx1ay9jb25maWcuaD4KKyNpbmNsdWRlIDx1ay9hcmNoL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8
dWsvYml0bWFwLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5oPgorI2luY2x1ZGUgPHVrLzlwX2NvcmUu
aD4KKyNpZiBDT05GSUdfTElCVUtTQ0hFRAorI2luY2x1ZGUgPHVrL3dhaXRfdHlwZXMuaD4KKyNl
bmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3N0cnVj
dCB1a185cGRldjsKK3N0cnVjdCB1a185cHJlcTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIHVz
ZWQgZm9yIGNvbm5lY3RpbmcgdG8gYSBkZXZpY2Ugb24gYSBjZXJ0YWluIHRyYW5zcG9ydC4KKyAq
IFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWxzbyBzZXQgdGhlIG1zaXplIGZpZWxkIGluIHRo
ZSA5UCBkZXZpY2UKKyAqIHN0cnVjdCB0byB0aGUgbWF4aW11bSBhbGxvd2VkIG1lc3NhZ2Ugc2l6
ZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBA
cGFyYW0gZGV2aWNlX2lkZW50aWZpZXIKKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHVuZGVy
bHlpbmcgZGV2aWNlIChtb3VudF90YWcgZm9yIHZpcnRpbywgZXRjLikKKyAqIEBwYXJhbSBtb3Vu
dF9hcmdzCisgKiAgIEFyZ3VtZW50cyByZWNlaXZlZCBieSB0aGUgbW91bnQoKSBjYWxsLCBmb3Ig
dHJhbnNwb3J0LXNwZWNpZmljIG9wdGlvbnMuCisgKiBAcmV0dXJuCisgKiAgIC0gKC1FQlVTWSk6
IERldmljZSBpcyBhbHJlYWR5IGluLXVzZS4KKyAqICAgLSAoLUVOT0VOVCk6IERldmljZSBkb2Vz
IG5vdCBleGlzdC4KKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwgMCk6IEZhaWxl
ZCB3aXRoIGEgdHJhbnNwb3J0IGxheWVyIGRlcGVuZGVudCBlcnJvci4KKyAqLwordHlwZWRlZiBp
bnQgKCp1a185cGRldl9jb25uZWN0X3QpKHN0cnVjdCB1a185cGRldiAqZGV2LAorCQkJCWNvbnN0
IGNoYXIgKmRldmljZV9pZGVudGlmaWVyLAorCQkJCWNvbnN0IGNoYXIgKm1vdW50X2FyZ3MpOwor
CisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgdXNlZCBmb3IgZGlzY29ubmVjdGluZyBmcm9tIHRoZSBk
ZXZpY2UuCisgKgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgor
ICogQHJldHVybgorICogICAtICgwKTogU3VjY2Vzc2Z1bC4KKyAqICAgLSAoPCAwKTogRmFpbGVk
IHdpdGggYSB0cmFuc3BvcnQgbGF5ZXIgZGVwZW5kZW50IGVycm9yLgorICovCit0eXBlZGVmIGlu
dCAoKnVrXzlwZGV2X2Rpc2Nvbm5lY3RfdCkoc3RydWN0IHVrXzlwZGV2ICpkZXYpOworCisvKioK
KyAqIEZ1bmN0aW9uIHR5cGUgdXNlZCBmb3Igc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIDlQIGRl
dmljZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBkZXZpY2UuCisg
KiBAcGFyYW0gcmVxCisgKiAgIFJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdCB0byBiZSBzZW50Lgor
ICogQHJldHVybgorICogICAtICgwKTogU3VjY2Vzc2Z1bC4KKyAqICAgLSAoPCAwKTogRmFpbGVk
LiBJZiAtRU5PU1BDLCB0aGVuIHRoZSB0cmFuc3BvcnQgbGF5ZXIgZG9lcyBub3QgaGF2ZSBlbm91
Z2gKKyAqICAgc3BhY2UgdG8gc2VuZCB0aGlzIHJlcXVlc3QgYW5kIHJldHJpZXMgYXJlIHJlcXVp
cmVkLgorICovCit0eXBlZGVmIGludCAoKnVrXzlwZGV2X3JlcXVlc3RfdCkoc3RydWN0IHVrXzlw
ZGV2ICpkZXYsCisJCQkJc3RydWN0IHVrXzlwcmVxICpyZXEpOworCisvKioKKyAqIEEgc3RydWN0
dXJlIHVzZWQgdG8gc3RvcmUgdGhlIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5IGEgY2VydGFpbiB0
cmFuc3BvcnQuCisgKi8KK3N0cnVjdCB1a185cGRldl90cmFuc19vcHMgeworCXVrXzlwZGV2X2Nv
bm5lY3RfdCAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0OworCXVrXzlwZGV2X2Rpc2Nvbm5l
Y3RfdCAgICAgICAgICAgICAgICAgICBkaXNjb25uZWN0OworCXVrXzlwZGV2X3JlcXVlc3RfdCAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OworfTsKKworLyoqCisgKiBAaW50ZXJuYWwKKyAq
IEEgc3RydWN0dXJlIHVzZWQgZm9yIDlwIHJlcXVlc3RzJyBtYW5hZ2VtZW50LgorICovCitzdHJ1
Y3QgdWtfOXBkZXZfcmVxX21nbXQgeworCS8qIFNwaW5sb2NrIHByb3RlY3RpbmcgdGhpcyBkYXRh
LiAqLworCXNwaW5sb2NrX3QgICAgICAgICAgICAgICAgICAgICAgc3BpbmxvY2s7CisJLyogQml0
bWFwIG9mIGF2YWlsYWJsZSB0YWdzLiAqLworCXVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgICAg
ICAgdGFnX2JtW1VLX0JJVFNfVE9fTE9OR1MoVUtfOVBfTlVNVEFHUyldOworCS8qIExpc3Qgb2Yg
cmVxdWVzdHMgYWxsb2NhdGVkIGFuZCBub3QgeWV0IHJlbW92ZWQuICovCisJc3RydWN0IHVrX2xp
c3RfaGVhZCAgICAgICAgICAgICByZXFfbGlzdDsKK307CisKKy8qKgorICogQGludGVybmFsCisg
KiA5UERFViB0cmFuc3BvcnQgc3RhdGUKKyAqCisgKiAtIENPTk5FQ1RFRDogRGVmYXVsdCBzdGF0
ZSBhZnRlciBpbml0aWFsaXphdGlvbiBhbmQgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uCisgKiAt
IERJU0NPTk5FQ1RJTkc6IEFmdGVyIGEgdWtfOXBkZXZfZGlzY29ubmVjdCgpIGNhbGwuCisgKiAg
IE5vIHJlcXVlc3RzIGFyZSBhbGxvd2VkIGFueW1vcmUuIFdoZW4gYWxsIGxpdmUgcmVzb3VyY2Vz
IGhhdmUgYmVlbgorICogICBkZXN0cm95ZWQsIHRoZSA5cGRldiB3aWxsIGZyZWUgaXRzZWxmLgor
ICovCitlbnVtIHVrXzlwZGV2X3RyYW5zX3N0YXRlIHsKKwlVS185UERFVl9DT05ORUNURUQsCisJ
VUtfOVBERVZfRElTQ09OTkVDVElORworfTsKKworLyoqCisgKiA5UERFVgorICogQSBzdHJ1Y3R1
cmUgdXNlZCB0byBpbnRlcmFjdCB3aXRoIGEgOVAgZGV2aWNlLgorICovCitzdHJ1Y3QgdWtfOXBk
ZXYgeworCS8qIFVuZGVybHlpbmcgdHJhbnNwb3J0IG9wZXJhdGlvbnMuICovCisJY29uc3Qgc3Ry
dWN0IHVrXzlwZGV2X3RyYW5zX29wcyAqb3BzOworCS8qIEFsbG9jYXRvciB1c2VkIGJ5IHRoaXMg
ZGV2aWNlLiAqLworCXN0cnVjdCB1a19hbGxvYyAgICAgICAgICAgICAgICAgKmE7IC8qIFNlZSB1
a185cGRldl9jb25uZWN0KCkuICovCisJLyogVHJhbnNwb3J0IHN0YXRlLiAqLworCWVudW0gdWtf
OXBkZXZfdHJhbnNfc3RhdGUgICAgICAgc3RhdGU7CisJLyogTWF4aW11bSBzaXplIG9mIGEgbWVz
c2FnZS4gKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG1zaXplOworCS8qIFRy
YW5zcG9ydC1hbGxvY2F0ZWQgZGF0YS4gKi8KKwl2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICpwcml2OworCS8qIEBpbnRlcm5hbCBSZXF1ZXN0IG1hbmFnZW1lbnQuICovCisJc3RydWN0
IHVrXzlwZGV2X3JlcV9tZ210ICAgICAgICBfcmVxX21nbXQ7CisjaWYgQ09ORklHX0xJQlVLU0NI
RUQKKwkvKgorCSAqIFNsZXB0IG9uIGJ5IHRocmVhZHMgd2FpdGluZyBmb3IgdGhlaXIgdHVybiBm
b3IgZW5vdWdoIHNwYWNlIHRvIHNlbmQKKwkgKiB0aGUgcmVxdWVzdC4KKwkgKi8KKwlzdHJ1Y3Qg
dWtfd2FpdHEJCQl4bWl0X3dxOworI2VuZGlmCit9OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLyogX19VS185UERFVl9DT1JFX18gKi8KZGlmZiAtLWdpdCBhL2xp
Yi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBk
ZXZfdHJhbnMuaAppbmRleCA3YjY2NDVmYjVlODQuLmQ3M2FmM2UzYmVhYyAxMDA2NDQKLS0tIGEv
bGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oCisrKyBiL2xpYi91azlwL2luY2x1ZGUv
dWsvOXBkZXZfdHJhbnMuaApAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSA8c3RkYm9vbC5o
PgogI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHVrLzlwZGV2X2NvcmUuaD4KIAog
I2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTUxLDYgKzUyLDggQEAgc3RydWN0
IHVrXzlwZGV2X3RyYW5zIHsKIAkgKiBzcGVjaWZpYyB0cmFuc3BvcnQuCiAJICovCiAJY29uc3Qg
Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuYW1lOworCS8qIFN1cHBvcnRlZCBv
cGVyYXRpb25zLiAqLworCWNvbnN0IHN0cnVjdCB1a185cGRldl90cmFuc19vcHMgICAgICAgICAq
b3BzOwogCS8qIENhbiB0aGUgdHJhbnNwb3J0IGJlIHVzZWQgYXMgYSBkZWZhdWx0IG9uZT8gKi8K
IAlib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmYXVsdDsKIAkv
KiBBbGxvY2F0b3IgdXNlZCBmb3IgZGV2aWNlcyB3aGljaCB1c2UgdGhpcyB0cmFuc3BvcnQgbGF5
ZXIuICovCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:43 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58: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 1hh9Bz-0001tq-MX; Sat, 29 Jun 2019 08:58:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bx-0001sl-NW
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:41 +0000
X-Inumbo-ID: 165ab78d-9a4c-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 165ab78d-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:40 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id z23so11100250wma.4
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58: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:in-reply-to:references;
 bh=AmBW+m8ld3ndKrDvFGewm5WCf+mYprK43FqT1h9/1zM=;
 b=Bf3F2HxYjZpg4Hm9B0o35qpIwtpDEUFyfVmhOdN5UppafBJafhJgxbATJxyiggY+a/
 UmpxFmI6k5p9iGivJmWpC6/ciBmXGIkr0MzFsCW67+eEIWKDpkPAdwFhiZo7NpfP/EVL
 o4LGvsGTgcAx/Ea6I6AhXMs0GJjv618xFMB1BZodEDIH27DZQIX0XfM8UnLHVqXOO/i0
 G0B/QwAb0d4l+CLhRXpABfZX6sZn19KSBvEeX3GUt9oiPxCoXiUian3dlAAmVqCXuE1b
 hDTn8NFvART+X6wsG1+10KTiz1uPLLrLxWq+pqfaAOtzBVPmCIXdm8QG57bXf3MPCXuo
 S9sA==
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=AmBW+m8ld3ndKrDvFGewm5WCf+mYprK43FqT1h9/1zM=;
 b=f7y9cAOwBck8lL/ZnPl+gBnc5JHUgjssqxPLW8+xwkbe7RAtbNDEGdOg22GjF+CW0X
 qgX/Toe4XMknk7QD3gaAd7oRqCJmSGMkGMHm6UDutgS8moURspSO2gOOtIWCKrX3FILS
 iR3SV35CWumsJbsJkvqHZ4Q5ahd1QQV9m9hzeC5AeUkhZqQ5oVMzZMffBqP2pwl5je8/
 KO/rdpzFJaeOfShMXWIjKhMqwe2yxT565+ilxielrcQaAf1xrNPPJ8keNtMeFhTak9jL
 Hcc5I3TapYW11yq0LMfYDTrVxeU3IYaSaDktGjLmEIVz9HMMVde6y5D+I0PF/SlowUaS
 OVPg==
X-Gm-Message-State: APjAAAVNhxGmRevUU0fjVgR/2kBwxXXG9WHTtNR/J/hh1j2GuUt0H4oP
 0F1PqWPnvYTFSefjfnOim08LWj1ei+c=
X-Google-Smtp-Source: APXvYqwrWofksSr/WKX7hdSalDK5rsvHYJ1OmoPSH7GUmwazmRjR5XiSyXP/tgU/caWcCzKLAKhTcA==
X-Received: by 2002:a1c:5a56:: with SMTP id o83mr9837566wmb.103.1561798718790; 
 Sat, 29 Jun 2019 01:58:38 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.38
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:38 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:06 +0300
Message-Id: <20190629085608.15680-7-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 6/8] lib/uk9p: Add 9P fid
 abstraction
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBhZGRzIHRoZSB1a185cGZpZCBzdHJ1Y3QsIHdoaWNoIGFic3RyYWN0cyB0aGUg
NC1ieXRlIGZpZApudW1iZXIgdXNlZCBieSB0aGUgOXAgcHJvdG9jb2wgdG8gYXNzb2NpYXRlIG51
bWJlcnMgd2l0aCBmaWxlc3lzdGVtCmVudHJpZXMgKGZpbGVzLCBkaXJlY3RvcmllcywgZXRjLikK
ClRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgZmlkIGNhY2hlIGZvciBlYWNoIDlwIGRldmljZSwgZW5h
YmxpbmcgcmV1c2Ugb2YKdGhlIGZpZHMgYW5kIHJlZHVjaW5nIHRoZSBhbW91bnQgb2YgbWVtb3J5
IGFsbG9jYXRpb25zIGRvbmUuCgpTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJA
Z21haWwuY29tPgotLS0KIGxpYi91azlwLzlwZGV2LmMgICAgICAgICAgICAgICAgIHwgMTIxICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogbGliL3VrOXAvOXBmaWQuYyAg
ICAgICAgICAgICAgICAgfCAgNzEgKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi91azlwL01h
a2VmaWxlLnVrICAgICAgICAgICAgIHwgICAxICsKIGxpYi91azlwL2V4cG9ydHN5bXMudWsgICAg
ICAgICAgIHwgICA5ICsrLQogbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oICAgICAgfCAgMjMg
KysrKysrKysKIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oIHwgIDIyICsrKysrKy0K
IGxpYi91azlwL2luY2x1ZGUvdWsvOXBmaWQuaCAgICAgIHwgMTE1ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMzU5IGluc2VydGlvbnMoKyks
IDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvOXBmaWQuYwogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2luY2x1ZGUvdWsvOXBmaWQuaAoKZGlmZiAtLWdpdCBh
L2xpYi91azlwLzlwZGV2LmMgYi9saWIvdWs5cC85cGRldi5jCmluZGV4IDA1YTU4MWVhZmJkYi4u
MTFjYTRkOTY1ODkzIDEwMDY0NAotLS0gYS9saWIvdWs5cC85cGRldi5jCisrKyBiL2xpYi91azlw
LzlwZGV2LmMKQEAgLTQ1LDExICs0NSw5MSBAQAogI2luY2x1ZGUgPHVrLzlwZGV2Lmg+CiAjaW5j
bHVkZSA8dWsvOXBkZXZfdHJhbnMuaD4KICNpbmNsdWRlIDx1ay85cHJlcS5oPgorI2luY2x1ZGUg
PHVrLzlwZmlkLmg+CiAjaWYgQ09ORklHX0xJQlVLU0NIRUQKICNpbmNsdWRlIDx1ay9zY2hlZC5o
PgogI2luY2x1ZGUgPHVrL3dhaXQuaD4KICNlbmRpZgogCitzdGF0aWMgaW50IF9maWRfbWdtdF9p
bml0KHN0cnVjdCB1a185cGRldl9maWRfbWdtdCAqZmlkX21nbXQpCit7CisJdWthcmNoX3NwaW5f
bG9ja19pbml0KCZmaWRfbWdtdC0+c3BpbmxvY2spOworCWZpZF9tZ210LT5uZXh0X2ZpZCA9IDA7
CisJVUtfSU5JVF9MSVNUX0hFQUQoJmZpZF9tZ210LT5maWRfZnJlZV9saXN0KTsKKwlVS19JTklU
X0xJU1RfSEVBRCgmZmlkX21nbXQtPmZpZF9hY3RpdmVfbGlzdCk7CisKKwlyZXR1cm4gMDsKK30K
Kworc3RhdGljIGludCBfZmlkX21nbXRfbmV4dF9maWRfbG9ja2VkKHN0cnVjdCB1a185cGRldl9m
aWRfbWdtdCAqZmlkX21nbXQsCisJCQkJc3RydWN0IHVrXzlwZGV2ICpkZXYsCisJCQkJc3RydWN0
IHVrXzlwZmlkICoqZmlkKQoreworCXN0cnVjdCB1a185cGZpZCAqcmVzdWx0ID0gTlVMTDsKKwor
CWlmICghdWtfbGlzdF9lbXB0eSgmZmlkX21nbXQtPmZpZF9mcmVlX2xpc3QpKSB7CisJCXJlc3Vs
dCA9IHVrX2xpc3RfZmlyc3RfZW50cnkoJmZpZF9tZ210LT5maWRfZnJlZV9saXN0LAorCQkJCXN0
cnVjdCB1a185cGZpZCwgX2xpc3QpOworCQl1a19saXN0X2RlbCgmcmVzdWx0LT5fbGlzdCk7CisJ
fSBlbHNlIHsKKwkJcmVzdWx0ID0gdWtfOXBmaWRfYWxsb2MoZGV2KTsKKwkJaWYgKCFyZXN1bHQp
CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJcmVzdWx0LT5maWQgPSBmaWRfbWdtdC0+bmV4dF9maWQr
KzsKKwl9CisKKwl1a19yZWZjb3VudF9pbml0KCZyZXN1bHQtPnJlZmNvdW50LCAxKTsKKwlyZXN1
bHQtPndhc19yZW1vdmVkID0gMDsKKwkqZmlkID0gcmVzdWx0OworCisJcmV0dXJuIDA7Cit9CisK
K3N0YXRpYyBpbnQgX2ZpZF9tZ210X2FkZF9maWRfbG9ja2VkKHN0cnVjdCB1a185cGRldl9maWRf
bWdtdCAqZmlkX21nbXQsCisJCQkJc3RydWN0IHVrXzlwZmlkICpmaWQpCit7CisJdWtfbGlzdF9h
ZGQoJmZpZC0+X2xpc3QsICZmaWRfbWdtdC0+ZmlkX2FjdGl2ZV9saXN0KTsKKworCXJldHVybiAw
OworfQorCitzdGF0aWMgdm9pZCBfZmlkX21nbXRfZGVsX2ZpZF9sb2NrZWQoc3RydWN0IHVrXzlw
ZGV2X2ZpZF9tZ210ICpmaWRfbWdtdCwKKwkJCQlzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJCQlp
bnQgbW92ZV90b19mcmVlbGlzdCkKK3sKKwl1a19saXN0X2RlbCgmZmlkLT5fbGlzdCk7CisKKwlp
ZiAobW92ZV90b19mcmVlbGlzdCkKKwkJdWtfbGlzdF9hZGQoJmZpZC0+X2xpc3QsICZmaWRfbWdt
dC0+ZmlkX2ZyZWVfbGlzdCk7CisJZWxzZSB7CisJCS8qCisJCSAqIEZyZWUgdGhlIG1lbW9yeSBh
c3NvY2lhdGVkLiBUaGlzIGZpZCB3aWxsIG5ldmVyIGJlIHVzZWQKKwkJICogYWdhaW4uCisJCSAq
LworCQl1a19wcl93YXJuKCJDb3VsZCBub3QgbW92ZSBmaWQgdG8gZnJlZWxpc3QsIGZyZWVpbmcg
bWVtb3J5LlxuIik7CisJCXVrX2ZyZWUoZmlkLT5fZGV2LT5hLCBmaWQpOworCX0KK30KKworc3Rh
dGljIHZvaWQgX2ZpZF9tZ210X2NsZWFudXAoc3RydWN0IHVrXzlwZGV2X2ZpZF9tZ210ICpmaWRf
bWdtdCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVjdCB1a185cGZpZCAqZmlkLCAq
ZmlkbjsKKworCXVrcGxhdF9zcGluX2xvY2tfaXJxc2F2ZSgmZmlkX21nbXQtPnNwaW5sb2NrLCBm
bGFncyk7CisJLyoKKwkgKiBFdmVyeSBmaWQgc2hvdWxkIGhhdmUgYmVlbiBjbHVua2VkICpiZWZv
cmUqIGRlc3Ryb3lpbmcgdGhlCisJICogY29ubmVjdGlvbi4KKwkgKi8KKwlVS19BU1NFUlQodWtf
bGlzdF9lbXB0eSgmZmlkX21nbXQtPmZpZF9hY3RpdmVfbGlzdCkpOworCXVrX2xpc3RfZm9yX2Vh
Y2hfZW50cnlfc2FmZShmaWQsIGZpZG4sICZmaWRfbWdtdC0+ZmlkX2ZyZWVfbGlzdCwKKwkJCV9s
aXN0KSB7CisJCXVrX2xpc3RfZGVsKCZmaWQtPl9saXN0KTsKKwkJdWtfZnJlZShmaWQtPl9kZXYt
PmEsIGZpZCk7CisJfQorCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZmaWRfbWdtdC0+
c3BpbmxvY2ssIGZsYWdzKTsKK30KKwogc3RhdGljIGludCBfcmVxX21nbXRfaW5pdChzdHJ1Y3Qg
dWtfOXBkZXZfcmVxX21nbXQgKnJlcV9tZ210KQogewogCXVrYXJjaF9zcGluX2xvY2tfaW5pdCgm
cmVxX21nbXQtPnNwaW5sb2NrKTsKQEAgLTEzMCwxNSArMjEwLDIxIEBAIHN0cnVjdCB1a185cGRl
diAqdWtfOXBkZXZfY29ubmVjdChjb25zdCBzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnRyYW5zLAog
CWlmIChyYyA8IDApCiAJCWdvdG8gZnJlZV9kZXY7CiAKLQlyYyA9IGRldi0+b3BzLT5jb25uZWN0
KGRldiwgZGV2aWNlX2lkZW50aWZpZXIsIG1vdW50X2FyZ3MpOworCXJjID0gX2ZpZF9tZ210X2lu
aXQoJmRldi0+X2ZpZF9tZ210KTsKIAlpZiAocmMgPCAwKQogCQlnb3RvIGZyZWVfcmVxOwogCisJ
cmMgPSBkZXYtPm9wcy0+Y29ubmVjdChkZXYsIGRldmljZV9pZGVudGlmaWVyLCBtb3VudF9hcmdz
KTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIGZyZWVfZmlkOworCiAJVUtfQVNTRVJUKGRldi0+bXNp
emUgIT0gMCk7CiAKIAlkZXYtPnN0YXRlID0gVUtfOVBERVZfQ09OTkVDVEVEOwogCWdvdG8gb3V0
OwogCitmcmVlX2ZpZDoKKwlfZmlkX21nbXRfY2xlYW51cCgmZGV2LT5fZmlkX21nbXQpOwogZnJl
ZV9yZXE6CiAJX3JlcV9tZ210X2NsZWFudXAoJmRldi0+X3JlcV9tZ210KTsKIGZyZWVfZGV2OgpA
QCAtMTU5LDYgKzI0NSw3IEBAIGludCB1a185cGRldl9kaXNjb25uZWN0KHN0cnVjdCB1a185cGRl
diAqZGV2KQogCWRldi0+c3RhdGUgPSBVS185UERFVl9ESVNDT05ORUNUSU5HOwogCiAJLyogQ2xl
YW4gdXAgdGhlIHJlcXVlc3RzIGJlZm9yZSBjbG9zaW5nIHRoZSBjaGFubmVsLiAqLworCV9maWRf
bWdtdF9jbGVhbnVwKCZkZXYtPl9maWRfbWdtdCk7CiAJX3JlcV9tZ210X2NsZWFudXAoJmRldi0+
X3JlcV9tZ210KTsKIAogCXJjID0gZGV2LT5vcHMtPmRpc2Nvbm5lY3QoZGV2KTsKQEAgLTMyMCw2
ICs0MDcsMzggQEAgaW50IHVrXzlwZGV2X3JlcV9yZW1vdmUoc3RydWN0IHVrXzlwZGV2ICpkZXYs
IHN0cnVjdCB1a185cHJlcSAqcmVxKQogCXJldHVybiB1a185cHJlcV9wdXQocmVxKTsKIH0KIAor
c3RydWN0IHVrXzlwZmlkICp1a185cGRldl9maWRfY3JlYXRlKHN0cnVjdCB1a185cGRldiAqZGV2
KQoreworCXN0cnVjdCB1a185cGZpZCAqZmlkID0gTlVMTDsKKwlpbnQgcmMgPSAwOworCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7CisKKwl1a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+X2ZpZF9t
Z210LnNwaW5sb2NrLCBmbGFncyk7CisJcmMgPSBfZmlkX21nbXRfbmV4dF9maWRfbG9ja2VkKCZk
ZXYtPl9maWRfbWdtdCwgZGV2LCAmZmlkKTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKwor
CXJjID0gX2ZpZF9tZ210X2FkZF9maWRfbG9ja2VkKCZkZXYtPl9maWRfbWdtdCwgZmlkKTsKKwlp
ZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworb3V0OgorCXVrcGxhdF9zcGluX3VubG9ja19pcnFy
ZXN0b3JlKCZkZXYtPl9maWRfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCWlmIChyYyA9PSAwKQor
CQlyZXR1cm4gZmlkOworCXJldHVybiBFUlIyUFRSKHJjKTsKK30KKwordm9pZCB1a185cGRldl9m
aWRfcmVsZWFzZShzdHJ1Y3QgdWtfOXBmaWQgKmZpZCkKK3sKKwlzdHJ1Y3QgdWtfOXBkZXYgKmRl
diA9IGZpZC0+X2RldjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJdWtwbGF0X3NwaW5fbG9j
a19pcnFzYXZlKCZkZXYtPl9maWRfbWdtdC5zcGlubG9jaywgZmxhZ3MpOworCV9maWRfbWdtdF9k
ZWxfZmlkX2xvY2tlZCgmZGV2LT5fZmlkX21nbXQsIGZpZCwgMSk7CisJdWtwbGF0X3NwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJmRldi0+X2ZpZF9tZ210LnNwaW5sb2NrLCBmbGFncyk7Cit9CisKIHZv
aWQgdWtfOXBkZXZfYWRqdXN0X21zaXplKHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50MzJfdCBt
c2l6ZSkKIHsKIAlkZXYtPm1zaXplID0gTUlOKGRldi0+bXNpemUsIG1zaXplKTsKZGlmZiAtLWdp
dCBhL2xpYi91azlwLzlwZmlkLmMgYi9saWIvdWs5cC85cGZpZC5jCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODVkMTRjNjYwNzhhCi0tLSAvZGV2L251bGwKKysrIGIv
bGliL3VrOXAvOXBmaWQuYwpAQCAtMCwwICsxLDcxIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jp
c3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisgKi8K
KworI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CisjaW5j
bHVkZSA8dWsvYWxsb2MuaD4KKyNpbmNsdWRlIDx1ay85cGRldi5oPgorI2luY2x1ZGUgPHVrLzlw
ZmlkLmg+CisKK3N0cnVjdCB1a185cGZpZCAqdWtfOXBmaWRfYWxsb2Moc3RydWN0IHVrXzlwZGV2
ICpkZXYpCit7CisJc3RydWN0IHVrXzlwZmlkICpmaWQ7CisKKwlmaWQgPSB1a19jYWxsb2MoZGV2
LT5hLCAxLCBzaXplb2YoKmZpZCkpOworCWlmIChmaWQgPT0gTlVMTCkKKwkJZ290byBvdXQ7CisK
KwlmaWQtPl9kZXYgPSBkZXY7CisKKwlyZXR1cm4gZmlkOworCitvdXQ6CisJcmV0dXJuIE5VTEw7
Cit9CisKK3ZvaWQgdWtfOXBmaWRfZ2V0KHN0cnVjdCB1a185cGZpZCAqZmlkKQoreworCXVrX3Jl
ZmNvdW50X2FjcXVpcmUoJmZpZC0+cmVmY291bnQpOworfQorCitpbnQgdWtfOXBmaWRfcHV0KHN0
cnVjdCB1a185cGZpZCAqZmlkKQoreworCWludCBsYXN0OworCisJbGFzdCA9IHVrX3JlZmNvdW50
X3JlbGVhc2UoJmZpZC0+cmVmY291bnQpOworCWlmIChsYXN0KQorCQl1a185cGRldl9maWRfcmVs
ZWFzZShmaWQpOworCisJcmV0dXJuIGxhc3Q7Cit9CmRpZmYgLS1naXQgYS9saWIvdWs5cC9NYWtl
ZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCmluZGV4IDM0Y2M5ODdhMmY5Yy4uY2Q0YmY0
YjhhMDMzIDEwMDY0NAotLS0gYS9saWIvdWs5cC9NYWtlZmlsZS51aworKysgYi9saWIvdWs5cC9N
YWtlZmlsZS51awpAQCAtNiwzICs2LDQgQEAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJ
CSs9IC1JJChMSUJVSzlQX0JBU0UpL2luY2x1ZGUKIExJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5
UF9CQVNFKS85cGRldl90cmFucy5jCiBMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkv
OXByZXEuYwogTElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2LmMKK0xJQlVL
OVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cGZpZC5jCmRpZmYgLS1naXQgYS9saWIvdWs5
cC9leHBvcnRzeW1zLnVrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awppbmRleCBjMzczMzA4ZmIw
YTIuLjVjZDc4MTdiZjVjOCAxMDA2NDQKLS0tIGEvbGliL3VrOXAvZXhwb3J0c3ltcy51aworKysg
Yi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCkBAIC0xLDYgKzEsNyBAQAogdWtfOXBkZXZfdHJhbnNf
cmVnaXN0ZXIKIHVrXzlwZGV2X3RyYW5zX2J5X25hbWUKIHVrXzlwZGV2X3RyYW5zX2RlZmF1bHQK
KwogdWtfOXByZXFfZ2V0CiB1a185cHJlcV9wdXQKIHVrXzlwcmVxX3ZzZXJpYWxpemUKQEAgLTEy
LDEyICsxMywxOCBAQCB1a185cHJlcV9jb3B5X2Zyb20KIHVrXzlwcmVxX3JlY2VpdmVfY2IKIHVr
XzlwcmVxX3dhaXRyZXBseQogdWtfOXByZXFfZXJyb3IKKwogdWtfOXBkZXZfY29ubmVjdAogdWtf
OXBkZXZfZGlzY29ubmVjdAogdWtfOXBkZXZfcmVxdWVzdAogdWtfOXBkZXZfeG1pdF9yZWFkeQog
dWtfOXBkZXZfY2FsbAordWtfOXBkZXZfYWRqdXN0X21zaXplCisKIHVrXzlwZGV2X3JlcV9jcmVh
dGUKIHVrXzlwZGV2X3JlcV9sb29rdXAKIHVrXzlwZGV2X3JlcV9yZW1vdmUKLXVrXzlwZGV2X2Fk
anVzdF9tc2l6ZQorCit1a185cGRldl9maWRfY3JlYXRlCit1a185cGZpZF9nZXQKK3VrXzlwZmlk
X3B1dApkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldi5oIGIvbGliL3VrOXAv
aW5jbHVkZS91ay85cGRldi5oCmluZGV4IGYyMjEwYmJmZmM5Mi4uYjhmNDAwY2VhNzEwIDEwMDY0
NAotLS0gYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2LmgKKysrIGIvbGliL3VrOXAvaW5jbHVk
ZS91ay85cGRldi5oCkBAIC0xNzIsNiArMTcyLDI5IEBAIHN0cnVjdCB1a185cHJlcSAqdWtfOXBk
ZXZfcmVxX2xvb2t1cChzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgdWludDE2X3QgdGFnKTsKIGludCB1
a185cGRldl9yZXFfcmVtb3ZlKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXByZXEg
KnJlcSk7CiAKIC8qKgorICogQ3JlYXRlcyBhIEZJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVu
IDlQIGRldmljZS4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZp
Y2UuCisgKiBAcmV0dXJuCisgKiAgIElmIG5vdCBhbiBlcnJvciBwb2ludGVyLCB0aGUgY3JlYXRl
ZCBmaWQuCisgKiAgIE90aGVyd2lzZSwgdGhlIGVycm9yIGluIGNyZWF0aW5nIHRoZSBmaWQ6Cisg
KiAgIC0gRU5PTUVNOiBObyBtZW1vcnkgZm9yIHRoZSByZXF1ZXN0IG9yIG5vIGF2YWlsYWJsZSB0
YWdzLgorICovCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwZGV2X2ZpZF9jcmVhdGUoc3RydWN0IHVr
XzlwZGV2ICpkZXYpOworCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVsZWFzZXMgYSBGSUQgd2hl
biBpdHMgcmVmZXJlbmNlIGNvdW50IGdvZXMgdG8gMC4KKyAqCisgKiBTaG91bGQgbm90IGJlIGNh
bGxlZCBkaXJlY3RseSwgYnV0IHJhdGhlciB2aWEgdWtfOXBmaWRfcHV0KCkuCisgKgorICogQHBh
cmFtIGZpZAorICogICBUaGUgRklEIHRvIGJlIHJlbGVhc2VkLgorICovCit2b2lkIHVrXzlwZGV2
X2ZpZF9yZWxlYXNlKHN0cnVjdCB1a185cGZpZCAqZmlkKTsKKworLyoqCiAgKiBBZGp1c3RzIHRo
ZSBtZXNzYWdlIHNpemUgdG8gdGhlIGdpdmVuIG1heGltdW0gc2l6ZS4KICAqCiAgKiBAcGFyYW0g
ZGV2CmRpZmYgLS1naXQgYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaCBiL2xpYi91
azlwL2luY2x1ZGUvdWsvOXBkZXZfY29yZS5oCmluZGV4IGQ3ZWYzNDFlMTJkNi4uMWM0OTQ3MzIz
MzdhIDEwMDY0NAotLS0gYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaAorKysgYi9s
aWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaApAQCAtMTI0LDYgKzEyNCwyNCBAQCBzdHJ1
Y3QgdWtfOXBkZXZfcmVxX21nbXQgewogCiAvKioKICAqIEBpbnRlcm5hbAorICogQSBzdHJ1Y3R1
cmUgdXNlZCB0byBkZXNjcmliZSB0aGUgYXZhaWxhYmlsaXR5IG9mIDlQIGZpZHMuCisgKi8KK3N0
cnVjdCB1a185cGRldl9maWRfbWdtdCB7CisJLyogU3BpbmxvY2sgcHJvdGVjdGluZyBmaWRzLiAq
LworCXNwaW5sb2NrX3QJCQlzcGlubG9jazsKKwkvKiBOZXh0IGF2YWlsYWJsZSBmaWQuICovCisJ
dWludDMyX3QJCQluZXh0X2ZpZDsKKwkvKiBGcmVlLWxpc3Qgb2YgZmlkcyB0aGF0IGNhbiBiZSBy
ZXVzZWQuICovCisJc3RydWN0IHVrX2xpc3RfaGVhZAkJZmlkX2ZyZWVfbGlzdDsKKwkvKgorCSAq
IExpc3Qgb2YgZmlkcyB0aGF0IGFyZSBjdXJyZW50bHkgYWN0aXZlLCB0byBiZSBjbHVua2VkIGF0
IHRoZSBlbmQgb2YKKwkgKiBhIDlwZnMgc2Vzc2lvbi4KKwkgKi8KKwlzdHJ1Y3QgdWtfbGlzdF9o
ZWFkCQlmaWRfYWN0aXZlX2xpc3Q7Cit9OworCisvKioKKyAqIEBpbnRlcm5hbAogICogOVBERVYg
dHJhbnNwb3J0IHN0YXRlCiAgKgogICogLSBDT05ORUNURUQ6IERlZmF1bHQgc3RhdGUgYWZ0ZXIg
aW5pdGlhbGl6YXRpb24gYW5kIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLgpAQCAtMTUwLDcgKzE2
OCw5IEBAIHN0cnVjdCB1a185cGRldiB7CiAJLyogTWF4aW11bSBzaXplIG9mIGEgbWVzc2FnZS4g
Ki8KIAl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG1zaXplOwogCS8qIFRyYW5zcG9y
dC1hbGxvY2F0ZWQgZGF0YS4gKi8KLQl2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICpw
cml2OworCXZvaWQJCQkJKnByaXY7CisJLyogQGludGVybmFsIEZpZCBtYW5hZ2VtZW50LiAqLwor
CXN0cnVjdCB1a185cGRldl9maWRfbWdtdAlfZmlkX21nbXQ7CiAJLyogQGludGVybmFsIFJlcXVl
c3QgbWFuYWdlbWVudC4gKi8KIAlzdHJ1Y3QgdWtfOXBkZXZfcmVxX21nbXQgICAgICAgIF9yZXFf
bWdtdDsKICNpZiBDT05GSUdfTElCVUtTQ0hFRApkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVk
ZS91ay85cGZpZC5oIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2VjNzViYjRhNTA4Ci0tLSAvZGV2L251bGwKKysr
IGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGZpZC5oCkBAIC0wLDAgKzEsMTE1IEBACisvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCisvKgorICogQXV0aG9yczogQ3Jp
c3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTks
IFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBo
b2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElO
IEFOWSBXQVkuCisgKi8KKworI2lmbmRlZiBfX1VLXzlQRklEX18KKyNkZWZpbmUgX19VS185UEZJ
RF9fCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNs
dWRlIDx1ay9jb25maWcuaD4KKyNpbmNsdWRlIDx1ay85cF9jb3JlLmg+CisjaW5jbHVkZSA8dWsv
YWxsb2MuaD4KKyNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CisjaW5jbHVkZSA8dWsvbGlzdC5o
PgorI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIG1hbmFnZWQg
ZmlkIHZpYSByZWZlcmVuY2UgY291bnRpbmcuCisgKi8KK3N0cnVjdCB1a185cGZpZCB7CisJLyog
RmlkIG51bWJlci4gKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICBmaWQ7CisJLyogQXNzb2Np
YXRlZCBzZXJ2ZXIgcWlkLiAqLworCXN0cnVjdCB1a185cF9xaWQgICAgICAgIHFpZDsKKwkvKiBJ
L08gdW5pdC4gKi8KKwl1aW50MzJfdCAgICAgICAgICAgICAgICBpb3VuaXQ7CisJLyoKKwkgKiBJ
ZiByZW1vdmVkLCBubyBjbHVuayBpcyBuZWNlc3NhcnksIGFzIHRoZSByZW1vdmUgb3BlcmF0aW9u
CisJICogaW1wbGljaXRseSBjbHVua3MgdGhlIGZpZC4KKwkgKi8KKwlib29sIHdhc19yZW1vdmVk
OworCS8qIFRyYWNrcyB0aGUgbnVtYmVyIG9mIGxpdmUgcmVmZXJlbmNlcy4gKi8KKwlfX2F0b21p
YyAgICAgICAgICAgICAgICByZWZjb3VudDsKKwkvKiBAaW50ZXJuYWwgQXNzb2NpYXRlZCA5UCBk
ZXZpY2UuICovCisJc3RydWN0IHVrXzlwZGV2ICAgICAgICAgKl9kZXY7CisJLyoKKwkgKiBAaW50
ZXJuYWwKKwkgKiBMaXN0IG9uIHdoaWNoIHRoaXMgZmlkIGN1cnJlbnRseSBpcy4gU2VlIHVrXzlw
ZGV2X2ZpZF9tZ210IGZvcgorCSAqIGRldGFpbHMuCisJICovCisJc3RydWN0IHVrX2xpc3RfaGVh
ZCAgICAgX2xpc3Q7Cit9OworCisvKioKKyAqIEBpbnRlcm5hbAorICogQWxsb2NhdGVzIGEgOXAg
ZmlkLgorICogU2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LCB1c2UgdWtfOXBkZXZfZmlkX2Ny
ZWF0ZSgpIGluc3RlYWQuCisgKgorICogQHBhcmFtIGEKKyAqICAgQWxsb2NhdG9yIHRvIHVzZS4K
KyAqIEByZXR1cm4KKyAqICAgLSBOVUxMOiBPdXQgb2YgbWVtb3J5LgorICogICAtICghPU5VTEwp
OiBTdWNjZXNzZnVsLgorICovCitzdHJ1Y3QgdWtfOXBmaWQgKnVrXzlwZmlkX2FsbG9jKHN0cnVj
dCB1a185cGRldiAqZGV2KTsKKworLyoqCisgKiBHZXRzIHRoZSA5cCBmaWQsIGluY3JlbWVudGlu
ZyB0aGUgcmVmZXJlbmNlIGNvdW50LgorICoKKyAqIEBwYXJhbSBmaWQKKyAqICAgUmVmZXJlbmNl
IHRvIHRoZSA5cCBmaWQuCisgKi8KK3ZvaWQgdWtfOXBmaWRfZ2V0KHN0cnVjdCB1a185cGZpZCAq
ZmlkKTsKKworLyoqCisgKiBQdXRzIHRoZSA5cCBmaWQsIGRlY3JlbWVudGluZyB0aGUgcmVmZXJl
bmNlIGNvdW50LgorICogSWYgdGhpcyB3YXMgdGhlIGxhc3QgbGl2ZSByZWZlcmVuY2UsIHRoZSBt
ZW1vcnkgd2lsbCBiZSBmcmVlZC4KKyAqCisgKiBAcGFyYW0gZmlkCisgKiAgIFJlZmVyZW5jZSB0
byB0aGUgOXAgZmlkLgorICogQHJldHVybgorICogICAtIDA6IFRoaXMgd2FzIG5vdCB0aGUgbGFz
dCBsaXZlIHJlZmVyZW5jZS4KKyAqICAgLSAxOiBUaGlzIHdhcyB0aGUgbGFzdCBsaXZlIHJlZmVy
ZW5jZS4KKyAqLworaW50IHVrXzlwZmlkX3B1dChzdHJ1Y3QgdWtfOXBmaWQgKmZpZCk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1VLXzlQRklEX18gKi8K
LS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58: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 1hh9C0-0001uf-PH; Sat, 29 Jun 2019 08:58:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bz-0001tU-0t
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:43 +0000
X-Inumbo-ID: 17512cd2-9a4c-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 17512cd2-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:41 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id g135so11245881wme.4
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58: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=NKZubbB9jaDPtvOQ8wIRtU1+VUiQawwdXgJUQR2wu7Y=;
 b=PInHkrxmHXqZyLue7cCfGK/C/wJ3rmKcWwSvCuj9CGxAH06GYdTfrts/FpjP65MJ5D
 QUT8mBvTAnfk/IfFo3RD2N3216RPkWkaovVC/aiww8GAPgz4uarWbghDQKA2KuEUguP4
 uyCdUfWUy9Y5sTt0waoqE8bIF2fSKA1DVE+lR/9IXBYrLpdfJLIIHrO8y27HClN2Hf+9
 zHtjAkGnfxgDb+nRzOkYyQnQW4zwLyLY8hfdcjEtOYZx2KWU6Z4wV6sqHPCljawsgjmu
 fnM7hj5zAnPg6J05sn9qT5GsGp52aF+SQflSREb2Gq5jp0lv1alvEEKaMiNDbbKRJSy5
 f+0g==
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=NKZubbB9jaDPtvOQ8wIRtU1+VUiQawwdXgJUQR2wu7Y=;
 b=XgKGG8qYxxgevORTn0uzPOb0vT/CMUfcaFofwlQT9q91u0QVdOvnecDLprLSfOiapG
 eaPEDGiH8BiccYBvd0yfDdABy8o49V2HM1dxI86L8igKgYivjDwW3LoBVNzFwwVhRC0d
 jf6OjKW6qCLhlxV1Z6DWhX3xGsJ6ofjZGCvYVTvlVk6V0B7pVmIXUAmwfjE3i7T80V0C
 a4qBzR6yGYqoJhTQc52eCXQZbJXRT8x4qngXPAYfYsXtc+80Jwy4VQca0JXYcdAULp8u
 4r/OnH16mtS/7W/N5AFSlSFQsCJYfM+QH2Q9mKxs5oSyiRq4Hr5YnrBA8JwwW4m/SB8y
 zqXA==
X-Gm-Message-State: APjAAAXZ1ov6FVKkzElLED+XLXRbGKj+vZUNurlR7KJtOJxsOliE/wdL
 sBscLVVreR0lkal4xTkXQkLDSWlLZ/E=
X-Google-Smtp-Source: APXvYqyji1oDK+q5mM0gkKydO8aj8GyyphEApRxIc8YmakxYdnKFeHQ0l8fVM07hygodiipbrblpRQ==
X-Received: by 2002:a1c:ef0c:: with SMTP id n12mr2263751wmh.132.1561798720585; 
 Sat, 29 Jun 2019 01:58:40 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.39
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:40 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:08 +0300
Message-Id: <20190629085608.15680-9-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 8/8] lib/uk9p: Clunk fids on fid
 release
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: felipe.huici@neclab.eu, simon.kuenzer@neclab.eu,
 Cristian Banu <cristb@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>

T24gZmlkIHJlbGVhc2UsIHRoZSA5cCBzZXJ2ZXIgaXMgc2VudCBhIGNsdW5rIG1lc3NhZ2UgdG8g
ZGlzYXNzb2NpYXRlCnRoZSBmaWQgZnJvbSBpdHMgcHJldmlvdXMgYXNzb2NpYXRpb24sIHN1Y2gg
dGhhdCBpdCBoYXMgYSBjbGVhbiBzbGF0ZQpvbiBib3RoIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGll
bnQgd2hlbiBpdCB3aWxsIGV2ZW50dWFsbHkgYmUgcmV1c2VkLgoKU2lnbmVkLW9mZi1ieTogQ3Jp
c3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KLS0tCiBsaWIvdWs5cC85cGRldi5jIHwgMTkg
KysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXBkZXYuYyBiL2xpYi91azlwLzlw
ZGV2LmMKaW5kZXggMTFjYTRkOTY1ODkzLi5lZWFkNGZmNjM0NDIgMTAwNjQ0Ci0tLSBhL2xpYi91
azlwLzlwZGV2LmMKKysrIGIvbGliL3VrOXAvOXBkZXYuYwpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgPHVrL2JpdG1hcC5oPgogI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+CiAjaW5jbHVkZSA8
dWsvd2FpdC5oPgorI2luY2x1ZGUgPHVrLzlwLmg+CiAjaW5jbHVkZSA8dWsvOXBkZXYuaD4KICNp
bmNsdWRlIDx1ay85cGRldl90cmFucy5oPgogI2luY2x1ZGUgPHVrLzlwcmVxLmg+CkBAIC05NSw3
ICs5Niw3IEBAIHN0YXRpYyBpbnQgX2ZpZF9tZ210X2FkZF9maWRfbG9ja2VkKHN0cnVjdCB1a185
cGRldl9maWRfbWdtdCAqZmlkX21nbXQsCiAKIHN0YXRpYyB2b2lkIF9maWRfbWdtdF9kZWxfZmlk
X2xvY2tlZChzdHJ1Y3QgdWtfOXBkZXZfZmlkX21nbXQgKmZpZF9tZ210LAogCQkJCXN0cnVjdCB1
a185cGZpZCAqZmlkLAotCQkJCWludCBtb3ZlX3RvX2ZyZWVsaXN0KQorCQkJCWJvb2wgbW92ZV90
b19mcmVlbGlzdCkKIHsKIAl1a19saXN0X2RlbCgmZmlkLT5fbGlzdCk7CiAKQEAgLTQzMyw5ICs0
MzQsMjMgQEAgdm9pZCB1a185cGRldl9maWRfcmVsZWFzZShzdHJ1Y3QgdWtfOXBmaWQgKmZpZCkK
IHsKIAlzdHJ1Y3QgdWtfOXBkZXYgKmRldiA9IGZpZC0+X2RldjsKIAl1bnNpZ25lZCBsb25nIGZs
YWdzOworCWJvb2wgbW92ZV90b19mcmVlbGlzdCA9IGZhbHNlOworCWludCByYzsKIAorCS8qIEZp
cnN0IGNsdW5rIHRoZSBmaWQuICovCisJcmMgPSB1a185cF9kb19jbHVuayhmaWQtPl9kZXYsIGZp
ZCk7CisJaWYgKHJjIDwgMCkgeworCQl1a19wcl93YXJuKCJDb3VsZCBub3QgY2x1bmsgZmlkICVk
OiAlZFxuIiwgZmlkLT5maWQsIHJjKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogSWYgc3VjY2Vz
c2Z1bGx5IGNsdW5rZWQsIG1vdmUgaXQgdG8gYSBmcmVlbGlzdC4gKi8KKwltb3ZlX3RvX2ZyZWVs
aXN0ID0gdHJ1ZTsKKworb3V0OgorCS8qIFRoZW4gcmVtb3ZlIGl0IGZyb20gYW55IGludGVybmFs
IGRhdGEgc3RydWN0dXJlcy4gKi8KIAl1a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+X2Zp
ZF9tZ210LnNwaW5sb2NrLCBmbGFncyk7Ci0JX2ZpZF9tZ210X2RlbF9maWRfbG9ja2VkKCZkZXYt
Pl9maWRfbWdtdCwgZmlkLCAxKTsKKwlfZmlkX21nbXRfZGVsX2ZpZF9sb2NrZWQoJmRldi0+X2Zp
ZF9tZ210LCBmaWQsIG1vdmVfdG9fZnJlZWxpc3QpOwogCXVrcGxhdF9zcGluX3VubG9ja19pcnFy
ZXN0b3JlKCZkZXYtPl9maWRfbWdtdC5zcGlubG9jaywgZmxhZ3MpOwogfQogCi0tIAoyLjExLjAK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 08:58:45 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 08:58:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hh9C0-0001uk-RE; Sat, 29 Jun 2019 08:58:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=NupN=U4=gmail.com=cristb@srs-us1.protection.inumbo.net>)
 id 1hh9Bz-0001ta-8H
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 08:58:43 +0000
X-Inumbo-ID: 170f8e48-9a4c-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 170f8e48-9a4c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 08:58:41 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id w9so10798826wmd.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 01:58: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=cQpmmO6rkrIy2LhWYRaPyQB0H69LAUGeuBj2+0UOj8k=;
 b=DD1ue2t2mk9RXV3HDtKunCCOwA69NrVgjMxlts5k4XpS1amiOrCSzMCPbH+kFu4zOF
 5DYTssRcX3AhcumiBc7EaqWYBAXkqnsrMWs7cNKp4gQ6zfll1LS5CE7touyVC+stCqDq
 gqhOiUUOtvZ+lGfSC6ug3zUGzcJQXvkjLJ22MGaJI9Y0TQlXzTQYxDhsKS1JR6ToIkNB
 m1PNo6SgLQom1aCrmflI/oB9JspNVLRnazQbO0UDVXoAldUsWc9yf6l9J3ijw1K5zfsU
 136ndZLOvpfQ4N5s6FpFcOJu83TUpJZeFwuJf+be5Pu8kXuJTMKhK5cQQviORk5657Aw
 Ot8A==
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=cQpmmO6rkrIy2LhWYRaPyQB0H69LAUGeuBj2+0UOj8k=;
 b=sHLnhn87nx9D+KfIcJK/mEe4ijuaKawUjGPNICFwdMQOusbR/ytpzeE2uVbZzpKOE+
 Q2eTTBIEgsYZkbFsMGNh4MpJe5zV7HYh8F2V8eacdQgPZerBZGijAEZFyKB/sQtNSJZw
 +2Ktdsas26AtXtIBalrnL8DbFgI/VY6uU+TdEyhhAaSqcJE0AxzYBwHKOzeVczwc4DpB
 Qx1VWZlZLe4GfSQBDzAOvFGnSo78HdHfGsELyjfEGbh4yczHAMVkCBHYbcO4bZPmh1Dt
 ZZH5aKM2YPXMM24v3cj7sQYu3Kzw13sPTqKXIUwwRa31Kze4TiyA/DXsEpymXOfmN6cu
 YZcQ==
X-Gm-Message-State: APjAAAWK9iSxRGfEXuE7XI9l2aJws9LBKlsZ98lEsCxYNDzdVXG/EgD1
 3oDE+UBk49Pv8a2DAOXp1Jvrw0M0Cac=
X-Google-Smtp-Source: APXvYqyT38Ta74BZF3xXensnYl2lNUPrtJEwOOf8VCHG6bD8cWDks3JtPxw8PjfHDWEpLK1zPOE6Fw==
X-Received: by 2002:a1c:63d7:: with SMTP id x206mr10268043wmb.19.1561798719656; 
 Sat, 29 Jun 2019 01:58:39 -0700 (PDT)
Received: from core.precis.pub.ro ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id j132sm5435815wmj.21.2019.06.29.01.58.38
 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);
 Sat, 29 Jun 2019 01:58:39 -0700 (PDT)
From: Cristian Banu <cristb@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 11:56:07 +0300
Message-Id: <20190629085608.15680-8-cristb@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629085608.15680-1-cristb@gmail.com>
References: <20190629085608.15680-1-cristb@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 7/8] lib/uk9p: Add 9P helper API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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,
 Cristian Banu <cristb@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>

VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFuIEFQSSBmb3IgdGhlIG9wZXJhdGlvbnMgc3VwcG9ydGVk
IGJ5IHRoZSA5UApwcm90b2NvbC4gRWFjaCBzdXBwb3J0ZWQgbWVzc2FnZSB0eXBlIGhhcyBhbiBh
c3NvY2lhdGVkIGZ1bmN0aW9uIHdpdGgKd2hpY2ggdG8gbWFrZSByZXF1ZXN0cy4KClNpZ25lZC1v
ZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Ci0tLQogbGliL3VrOXAvOXAu
YyAgICAgICAgICAgIHwgNDMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCiBsaWIvdWs5cC9NYWtlZmlsZS51ayAgICAgfCAgIDEgKwogbGliL3VrOXAvZXhw
b3J0c3ltcy51ayAgIHwgIDEzICsrCiBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwLmggfCAyNjAgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA3MDUgaW5zZXJ0aW9u
cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwLzlwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwLmgKCmRpZmYgLS1naXQgYS9saWIvdWs5cC85cC5jIGIv
bGliL3VrOXAvOXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVm
YmIxYjUzZjFhZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi91azlwLzlwLmMKQEAgLTAsMCArMSw0
MzEgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KKy8qCisg
KiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgorICoKKyAqIENvcHly
aWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQg
T1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KKyAqLworCisjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cisj
aW5jbHVkZSA8dWsvYXNzZXJ0Lmg+CisjaW5jbHVkZSA8dWsvZXJycHRyLmg+CisjaW5jbHVkZSA8
dWsvOXAuaD4KKyNpbmNsdWRlIDx1ay85cGRldi5oPgorI2luY2x1ZGUgPHVrLzlwcmVxLmg+Cisj
aW5jbHVkZSA8dWsvOXBmaWQuaD4KKworc3RydWN0IHVrXzlwcmVxICp1a185cF9kb192ZXJzaW9u
KHN0cnVjdCB1a185cGRldiAqZGV2LAorCQljb25zdCBjaGFyICpyZXF1ZXN0ZWQsIHN0cnVjdCB1
a185cF9zdHIgKnJlY2VpdmVkKQoreworCXN0cnVjdCB1a185cF9zdHIgcmVxdWVzdGVkX3N0cjsK
KwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKKwlpbnQgcmM7CisJdWludDMyX3QgbmV3X21zaXplOwor
CisJdWtfOXBfc3RyX2luaXQoJnJlcXVlc3RlZF9zdHIsIHJlcXVlc3RlZCk7CisKKwl1a19wcl9k
ZWJ1ZygidWs5cDogVFZFUlNJT04gbXNpemUgJXUgdmVyc2lvbiAlc1xuIiwKKwkJCWRldi0+bXNp
emUsIHJlcXVlc3RlZCk7CisKKwlyZXEgPSB1a185cGRldl9jYWxsKGRldiwgVUtfOVBfVFZFUlNJ
T04sIF9fUEFHRV9TSVpFLCAiZHMiLAorCQkJZGV2LT5tc2l6ZSwgJnJlcXVlc3RlZF9zdHIpOwor
CWlmIChQVFJJU0VSUihyZXEpKQorCQlyZXR1cm4gcmVxOworCisJcmMgPSB1a185cHJlcV9kZXNl
cmlhbGl6ZShyZXEsICJkcyIsICZuZXdfbXNpemUsIHJlY2VpdmVkKTsKKworCWlmIChyYykKKwkJ
cmV0dXJuIEVSUjJQVFIocmMpOworCisJdWtfcHJfZGVidWcoInVrOXA6IFJWRVJTSU9OIG1zaXpl
ICV1IHZlcnNpb24gJS4qc1xuIiwgbmV3X21zaXplLAorCQkJcmVjZWl2ZWQtPnNpemUsIHJlY2Vp
dmVkLT5kYXRhKTsKKworCXVrXzlwZGV2X2FkanVzdF9tc2l6ZShkZXYsIG5ld19tc2l6ZSk7CisJ
cmV0dXJuIHJlcTsKK30KKworc3RydWN0IHVrXzlwZmlkICp1a185cF9kb19hdHRhY2goc3RydWN0
IHVrXzlwZGV2ICpkZXYsIHVpbnQzMl90IGFmaWQsCisJCWNvbnN0IGNoYXIgKnVuYW1lLCBjb25z
dCBjaGFyICphbmFtZSwgdWludDMyX3Qgbl91bmFtZSkKK3sKKwlzdHJ1Y3QgdWtfOXByZXEgKnJl
cTsKKwlzdHJ1Y3QgdWtfOXBmaWQgKmZpZDsKKwlzdHJ1Y3QgdWtfOXBfc3RyIHVuYW1lX3N0cjsK
KwlzdHJ1Y3QgdWtfOXBfc3RyIGFuYW1lX3N0cjsKKwlpbnQgcmM7CisKKwl1a185cF9zdHJfaW5p
dCgmdW5hbWVfc3RyLCB1bmFtZSk7CisJdWtfOXBfc3RyX2luaXQoJmFuYW1lX3N0ciwgYW5hbWUp
OworCisJZmlkID0gdWtfOXBkZXZfZmlkX2NyZWF0ZShkZXYpOworCWlmIChQVFJJU0VSUihmaWQp
KQorCQlyZXR1cm4gZmlkOworCisJdWtfcHJfZGVidWcoInVrOXA6IFRBVFRBQ0ggZmlkICV1IGFm
aWQgJXUgdW5hbWUgJXMgYW5hbWUgJXMgbl91bmFtZSAldVxuIiwKKwkJCWZpZC0+ZmlkLCBhZmlk
LCB1bmFtZSwgYW5hbWUsIG5fdW5hbWUpOworCisJcmVxID0gdWtfOXBkZXZfY2FsbChkZXYsIFVL
XzlQX1RBVFRBQ0gsIF9fUEFHRV9TSVpFLCAiZGRzc2QiLAorCQkJZmlkLT5maWQsIGFmaWQsICZ1
bmFtZV9zdHIsICZhbmFtZV9zdHIsIG5fdW5hbWUpOworCWlmIChQVFJJU0VSUihyZXEpKSB7CisJ
CXVrXzlwZGV2X2ZpZF9yZWxlYXNlKGZpZCk7CisJCXJldHVybiAodm9pZCAqKXJlcTsKKwl9CisK
KwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJlcSwgIlEiLCAmZmlkLT5xaWQpOworCXVrXzlw
ZGV2X3JlcV9yZW1vdmUoZGV2LCByZXEpOworCisJdWtfcHJfZGVidWcoInVrOXA6IFJBVFRBQ0gg
cWlkIHR5cGUgJXUgdmVyc2lvbiAldSBwYXRoICVsdVxuIiwKKwkJCWZpZC0+cWlkLnR5cGUsIGZp
ZC0+cWlkLnZlcnNpb24sIGZpZC0+cWlkLnBhdGgpOworCisJaWYgKHJjIDwgMCkgeworCQl1a185
cGRldl9maWRfcmVsZWFzZShmaWQpOworCQlyZXR1cm4gRVJSMlBUUihyYyk7CisJfQorCisJcmV0
dXJuIGZpZDsKK30KKworaW50IHVrXzlwX2RvX2ZsdXNoKHN0cnVjdCB1a185cGRldiAqZGV2LCB1
aW50MTZfdCBvbGR0YWcpCit7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisKKwl1a19wcl9kZWJ1
ZygidWs5cDogVEZMVVNIIG9sZHRhZyAldVxuIiwgb2xkdGFnKTsKKwlyZXEgPSB1a185cGRldl9j
YWxsKGRldiwgVUtfOVBfVEZMVVNILCBfX1BBR0VfU0laRSwgInciLCBvbGR0YWcpOworCWlmIChQ
VFJJU0VSUihyZXEpKQorCQlyZXR1cm4gUFRSMkVSUihyZXEpOworCisJdWtfcHJfZGVidWcoInVr
OXA6IFJGTFVTSFxuIik7CisJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7CisKKwlyZXR1
cm4gMDsKK30KKworI2lmIDAKK3N0cnVjdCB1a185cGZpZCAqdWtfOXBfZG9fd2Fsa19tYW55KHN0
cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJY29uc3QgY2hhciAq
KnduYW1lLCBpbnQgbnduYW1lKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCXN0cnVjdCB1
a185cGZpZCAqZmlkOworfQorI2VuZGlmCisKK3N0cnVjdCB1a185cGZpZCAqdWtfOXBfZG9fd2Fs
ayhzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwZmlkICpmaWQsCisJCWNvbnN0IGNo
YXIgKm5hbWUpCit7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJc3RydWN0IHVrXzlwZmlkICpu
ZXdmaWQ7CisJc3RydWN0IHVrXzlwX3N0ciBuYW1lX3N0cjsKKwl1aW50MTZfdCBud3FpZDsKKwl1
aW50MTZfdCBud25hbWU7CisJaW50IHJjOworCisJdWtfOXBfc3RyX2luaXQoJm5hbWVfc3RyLCBu
YW1lKTsKKworCW5ld2ZpZCA9IHVrXzlwZGV2X2ZpZF9jcmVhdGUoZGV2KTsKKwlpZiAoUFRSSVNF
UlIobmV3ZmlkKSkKKwkJcmV0dXJuIG5ld2ZpZDsKKworCW53bmFtZSA9IG5hbWUgPyAxIDogMDsK
KworCWlmIChuYW1lKSB7CisJCXVrX3ByX2RlYnVnKCJ1azlwOiBUV0FMSyBmaWQgJXUgbmV3Zmlk
ICV1IG53bmFtZSAlZCBuYW1lICVzXG4iLAorCQkJCWZpZC0+ZmlkLCBuZXdmaWQtPmZpZCwgbndu
YW1lLCBuYW1lKTsKKwkJcmVxID0gdWtfOXBkZXZfY2FsbChkZXYsIFVLXzlQX1RXQUxLLCBfX1BB
R0VfU0laRSwgImRkd3MiLAorCQkJCWZpZC0+ZmlkLCBuZXdmaWQtPmZpZCwgbnduYW1lLCAmbmFt
ZV9zdHIpOworCX0gZWxzZSB7CisJCXVrX3ByX2RlYnVnKCJ1azlwOiBUV0FMSyBmaWQgJXUgbmV3
ZmlkICV1IG53bmFtZSAlZFxuIiwKKwkJCQlmaWQtPmZpZCwgbmV3ZmlkLT5maWQsIG53bmFtZSk7
CisJCXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBVS185UF9UV0FMSywgX19QQUdFX1NJWkUsICJk
ZHciLAorCQkJCWZpZC0+ZmlkLCBuZXdmaWQtPmZpZCwgbnduYW1lKTsKKwl9CisKKwlpZiAoUFRS
SVNFUlIocmVxKSkgeworCQkvKgorCQkgKiBEb24ndCBjbHVuayBpZiByZXF1ZXN0IGhhcyBmaW5p
c2hlZCB3aXRoIGVycm9yLCBhcyB0aGUgZmlkCisJCSAqIGlzIGludmFsaWQuCisJCSAqLworCQlu
ZXdmaWQtPndhc19yZW1vdmVkID0gMTsKKwkJcmMgPSBQVFIyRVJSKHJlcSk7CisJCWdvdG8gb3V0
OworCX0KKworCXJjID0gdWtfOXByZXFfZGVzZXJpYWxpemUocmVxLCAidyIsICZud3FpZCk7CisJ
aWYgKHJjIDwgMCkKKwkJZ290byBvdXRfcmVxOworCisJdWtfcHJfZGVidWcoInVrOXA6IFJXQUxL
IG53cWlkICV1XG4iLCBud3FpZCk7CisKKwlpZiAobndxaWQgIT0gbnduYW1lKSB7CisJCXJjID0g
LUVOT0VOVDsKKwkJZ290byBvdXRfcmVxOworCX0KKworCisJaWYgKG53bmFtZSkgeworCQlyYyA9
IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJlcSwgIlEiLCAmbmV3ZmlkLT5xaWQpOworCQlpZiAocmMg
PCAwKQorCQkJZ290byBvdXRfcmVxOworCX0gZWxzZQorCQluZXdmaWQtPnFpZCA9IGZpZC0+cWlk
OworCisJcmMgPSAwOworb3V0X3JlcToKKwl1a185cGRldl9yZXFfcmVtb3ZlKGRldiwgcmVxKTsK
K291dDoKKwlpZiAocmMpIHsKKwkJdWtfOXBkZXZfZmlkX3JlbGVhc2UobmV3ZmlkKTsKKwkJcmV0
dXJuIEVSUjJQVFIocmMpOworCX0KKworCXJldHVybiBuZXdmaWQ7Cit9CisKK2ludCB1a185cF9k
b19vcGVuKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwgdWludDhf
dCBtb2RlKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCWludCByYzsKKworCXVrX3ByX2Rl
YnVnKCJ1azlwOiBUT1BFTiBmaWQgJXUgbW9kZSAldVxuIiwgZmlkLT5maWQsIG1vZGUpOworCisJ
cmVxID0gdWtfOXBkZXZfY2FsbChkZXYsIFVLXzlQX1RPUEVOLCBfX1BBR0VfU0laRSwgImRiIiwK
KwkJCWZpZC0+ZmlkLCBtb2RlKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkKKwkJcmV0dXJuIFBUUjJF
UlIocmVxKTsKKworCXJjID0gdWtfOXByZXFfZGVzZXJpYWxpemUocmVxLCAiUWQiLCAmZmlkLT5x
aWQsICZmaWQtPmlvdW5pdCk7CisJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7CisKKwl1
a19wcl9kZWJ1ZygidWs5cDogUk9QRU4gcWlkIHR5cGUgJXUgdmVyc2lvbiAldSBwYXRoICVsdSBp
b3VuaXQgJXVcbiIsCisJCQlmaWQtPnFpZC50eXBlLCBmaWQtPnFpZC52ZXJzaW9uLCBmaWQtPnFp
ZC5wYXRoLAorCQkJZmlkLT5pb3VuaXQpOworCisJcmV0dXJuIHJjOworfQorCitpbnQgdWtfOXBf
ZG9fY3JlYXRlKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJ
Y29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgcGVybSwgdWludDhfdCBtb2RlLAorCQljb25zdCBj
aGFyICpleHRlbnNpb24pCit7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJc3RydWN0IHVrXzlw
X3N0ciBuYW1lX3N0cjsKKwlzdHJ1Y3QgdWtfOXBfc3RyIGV4dGVuc2lvbl9zdHI7CisJaW50IHJj
OworCisJdWtfOXBfc3RyX2luaXQoJm5hbWVfc3RyLCBuYW1lKTsKKwl1a185cF9zdHJfaW5pdCgm
ZXh0ZW5zaW9uX3N0ciwgZXh0ZW5zaW9uKTsKKworCXVrX3ByX2RlYnVnKCJ1azlwOiBUQ1JFQVRF
IGZpZCAldSBuYW1lICVzIHBlcm0gJXUgbW9kZSAldSBleHQgJXNcbiIsCisJCQlmaWQtPmZpZCwg
bmFtZSwgcGVybSwgbW9kZSwgZXh0ZW5zaW9uKTsKKworCXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2
LCBVS185UF9UQ1JFQVRFLCBfX1BBR0VfU0laRSwgImRzZGJzIiwKKwkJCWZpZC0+ZmlkLCAmbmFt
ZV9zdHIsIHBlcm0sIG1vZGUsICZleHRlbnNpb25fc3RyKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkK
KwkJcmV0dXJuIFBUUjJFUlIocmVxKTsKKworCXJjID0gdWtfOXByZXFfZGVzZXJpYWxpemUocmVx
LCAiUWQiLCAmZmlkLT5xaWQsICZmaWQtPmlvdW5pdCk7CisJdWtfOXBkZXZfcmVxX3JlbW92ZShk
ZXYsIHJlcSk7CisKKwl1a19wcl9kZWJ1ZygidWs5cDogUkNSRUFURSBxaWQgdHlwZSAldSB2ZXJz
aW9uICV1IHBhdGggJWx1IGlvdW5pdCAldVxuIiwKKwkJCWZpZC0+cWlkLnR5cGUsIGZpZC0+cWlk
LnZlcnNpb24sIGZpZC0+cWlkLnBhdGgsCisJCQlmaWQtPmlvdW5pdCk7CisKKwlyZXR1cm4gcmM7
Cit9CisKK2ludCB1a185cF9kb19yZW1vdmUoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1
a185cGZpZCAqZmlkKQoreworCXN0cnVjdCB1a185cHJlcSAqcmVxOworCisJLyogVGhlIGZpZCBp
cyBjb25zaWRlcmVkIGludmFsaWQgZXZlbiBpZiB0aGUgcmVtb3ZlIGZhaWxzLiAqLworCWZpZC0+
d2FzX3JlbW92ZWQgPSAxOworCisJdWtfcHJfZGVidWcoInVrOXA6IFRSRU1PVkUgZmlkICV1XG4i
LCBmaWQtPmZpZCk7CisJcmVxID0gdWtfOXBkZXZfY2FsbChkZXYsIFVLXzlQX1RSRU1PVkUsIF9f
UEFHRV9TSVpFLCAiZCIsIGZpZC0+ZmlkKTsKKwlpZiAoUFRSSVNFUlIocmVxKSkKKwkJcmV0dXJu
IFBUUjJFUlIocmVxKTsKKworCXVrXzlwZGV2X3JlcV9yZW1vdmUoZGV2LCByZXEpOworCXVrX3By
X2RlYnVnKCJ1azlwOiBSUkVNT1ZFXG4iKTsKKworCXJldHVybiAwOworfQorCitpbnQgdWtfOXBf
ZG9fY2x1bmsoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkKQorewor
CXN0cnVjdCB1a185cHJlcSAqcmVxOworCisJaWYgKGZpZC0+d2FzX3JlbW92ZWQpCisJCXJldHVy
biAwOworCisJdWtfcHJfZGVidWcoInVrOXA6IFRDTFVOSyBmaWQgJXVcbiIsIGZpZC0+ZmlkKTsK
KwlyZXEgPSB1a185cGRldl9jYWxsKGRldiwgVUtfOVBfVENMVU5LLCBfX1BBR0VfU0laRSwgImQi
LCBmaWQtPmZpZCk7CisJaWYgKFBUUklTRVJSKHJlcSkpCisJCXJldHVybiBQVFIyRVJSKHJlcSk7
CisKKwl1a185cGRldl9yZXFfcmVtb3ZlKGRldiwgcmVxKTsKKwl1a19wcl9kZWJ1ZygidWs5cDog
UkNMVU5LXG4iKTsKKworCXJldHVybiAwOworfQorCitpbnQ2NF90IHVrXzlwX2RvX3JlYWQoc3Ry
dWN0IHVrXzlwZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQl1aW50NjRfdCBvZmZz
ZXQsIHVpbnQzMl90IGNvdW50LCBjaGFyICpidWYpCit7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7
CisJaW50NjRfdCByYzsKKworCWlmIChmaWQtPmlvdW5pdCAhPSAwKQorCQljb3VudCA9IE1JTihj
b3VudCwgZmlkLT5pb3VuaXQpOworCWNvdW50ID0gTUlOKGNvdW50LCBkZXYtPm1zaXplIC0gMTEp
OworCisJdWtfcHJfZGVidWcoInVrOXA6IFRSRUFEIGZpZCAldSBvZmZzZXQgJWx1IGNvdW50ICV1
XG4iLCBmaWQtPmZpZCwKKwkJCW9mZnNldCwgY291bnQpOworCisJcmVxID0gdWtfOXBkZXZfcmVx
X2NyZWF0ZShkZXYsIFVLXzlQX1RSRUFELCBfX1BBR0VfU0laRSk7CisJaWYgKFBUUklTRVJSKHJl
cSkpCisJCXJldHVybiBQVFIyRVJSKHJlcSk7CisKKwlyYyA9IHVrXzlwcmVxX3NlcmlhbGl6ZShy
ZXEsICJkcWQiLCBmaWQtPmZpZCwgb2Zmc2V0LCBjb3VudCk7CisJaWYgKHJjIDwgMCkKKwkJZ290
byBvdXQ7CisKKwlyYyA9IHVrXzlwcmVxX3JlYWR5KHJlcSwgVUtfOVBSRVFfWkNESVJfUkVBRCwg
YnVmLCBjb3VudCwgMTEpOworCWlmIChyYyA8IDApCisJCWdvdG8gb3V0OworCisJcmMgPSB1a185
cGRldl9yZXF1ZXN0KGRldiwgcmVxKTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworCXJj
ID0gdWtfOXByZXFfd2FpdHJlcGx5KHJlcSk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisK
KwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHJlcSwgImQiLCAmY291bnQpOworCWlmIChyYyA8
IDApCisJCWdvdG8gb3V0OworCisJdWtfcHJfZGVidWcoInVrOXA6IFJSRUFEIGNvdW50ICV1XG4i
LCBjb3VudCk7CisKKwlyYyA9IGNvdW50OworCitvdXQ6CisJdWtfOXBkZXZfcmVxX3JlbW92ZShk
ZXYsIHJlcSk7CisJcmV0dXJuIHJjOworfQorCitpbnQ2NF90IHVrXzlwX2RvX3dyaXRlKHN0cnVj
dCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJdWludDY0X3Qgb2Zmc2V0
LCB1aW50MzJfdCBjb3VudCwgY29uc3QgY2hhciAqYnVmKQoreworCXN0cnVjdCB1a185cHJlcSAq
cmVxOworCWludDY0X3QgcmM7CisKKwljb3VudCA9IE1JTihjb3VudCwgZmlkLT5pb3VuaXQpOwor
CWNvdW50ID0gTUlOKGNvdW50LCBkZXYtPm1zaXplIC0gMjMpOworCisJdWtfcHJfZGVidWcoInVr
OXA6IFRXUklURSBmaWQgJXUgb2Zmc2V0ICVsdSBjb3VudCAldVxuIiwgZmlkLT5maWQsCisJCQlv
ZmZzZXQsIGNvdW50KTsKKwlyZXEgPSB1a185cGRldl9yZXFfY3JlYXRlKGRldiwgVUtfOVBfVFdS
SVRFLCBfX1BBR0VfU0laRSk7CisJaWYgKFBUUklTRVJSKHJlcSkpCisJCXJldHVybiBQVFIyRVJS
KHJlcSk7CisKKwlyYyA9IHVrXzlwcmVxX3NlcmlhbGl6ZShyZXEsICJkcWQiLCBmaWQtPmZpZCwg
b2Zmc2V0LCBjb3VudCk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHVrXzlw
cmVxX3JlYWR5KHJlcSwgVUtfOVBSRVFfWkNESVJfV1JJVEUsICh2b2lkICopYnVmLCBjb3VudCwg
MjMpOworCWlmIChyYyA8IDApCisJCWdvdG8gb3V0OworCisJcmMgPSB1a185cGRldl9yZXF1ZXN0
KGRldiwgcmVxKTsKKwlpZiAocmMgPCAwKQorCQlnb3RvIG91dDsKKworCXJjID0gdWtfOXByZXFf
d2FpdHJlcGx5KHJlcSk7CisJaWYgKHJjIDwgMCkKKwkJZ290byBvdXQ7CisKKwlyYyA9IHVrXzlw
cmVxX2Rlc2VyaWFsaXplKHJlcSwgImQiLCAmY291bnQpOworCWlmIChyYyA8IDApCisJCWdvdG8g
b3V0OworCisJdWtfcHJfZGVidWcoInVrOXA6IFJXUklURSBjb3VudCAldVxuIiwgY291bnQpOwor
CisJcmMgPSBjb3VudDsKKworb3V0OgorCXVrXzlwZGV2X3JlcV9yZW1vdmUoZGV2LCByZXEpOwor
CXJldHVybiByYzsKK30KKworc3RydWN0IHVrXzlwcmVxICp1a185cF9kb19zdGF0KHN0cnVjdCB1
a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJc3RydWN0IHVrXzlwX3N0YXQg
KnN0YXQpCit7CisJc3RydWN0IHVrXzlwcmVxICpyZXE7CisJaW50IHJjOworCXVpbnQxNl90IGR1
bW15OworCisJdWtfcHJfZGVidWcoInVrOXA6IFRTVEFUIGZpZCAldVxuIiwgZmlkLT5maWQpOwor
CXJlcSA9IHVrXzlwZGV2X2NhbGwoZGV2LCBVS185UF9UU1RBVCwgX19QQUdFX1NJWkUsICJkIiwg
ZmlkLT5maWQpOworCWlmIChQVFJJU0VSUihyZXEpKQorCQlyZXR1cm4gcmVxOworCisJcmMgPSB1
a185cHJlcV9kZXNlcmlhbGl6ZShyZXEsICJ3UyIsICZkdW1teSwgc3RhdCk7CisJaWYgKHJjKQor
CQlyZXR1cm4gRVJSMlBUUihyYyk7CisJdWtfcHJfZGVidWcoInVrOXA6IFJTVEFUXG4iKTsKKwor
CXJldHVybiByZXE7Cit9CisKK2ludCB1a185cF9kb193c3RhdChzdHJ1Y3QgdWtfOXBkZXYgKmRl
diwgc3RydWN0IHVrXzlwZmlkICpmaWQsCisJCXN0cnVjdCB1a185cF9zdGF0ICpzdGF0KQorewor
CXN0cnVjdCB1a185cHJlcSAqcmVxOworCisJLyoKKwkgKiBUaGUgcGFja2VkIHNpemUgb2Ygc3Rh
dCBpcyA2MSBieXRlcyArIHRoZSBzaXplIG9jY3VwaWVkIGJ5IHRoZQorCSAqIHN0cmluZ3MuCisJ
ICovCisJc3RhdC0+c2l6ZSA9IDYxOworCXN0YXQtPnNpemUgKz0gc3RhdC0+bmFtZS5zaXplOwor
CXN0YXQtPnNpemUgKz0gc3RhdC0+dWlkLnNpemU7CisJc3RhdC0+c2l6ZSArPSBzdGF0LT5naWQu
c2l6ZTsKKwlzdGF0LT5zaXplICs9IHN0YXQtPm11aWQuc2l6ZTsKKwlzdGF0LT5zaXplICs9IHN0
YXQtPmV4dGVuc2lvbi5zaXplOworCisJdWtfcHJfZGVidWcoInVrOXA6IFRXU1RBVCBmaWQgJXVc
biIsIGZpZC0+ZmlkKTsKKwlyZXEgPSB1a185cGRldl9jYWxsKGRldiwgVUtfOVBfVFdTVEFULCBf
X1BBR0VfU0laRSwgImR3UyIsIGZpZC0+ZmlkLAorCQkJc3RhdC0+c2l6ZSArIDIsIHN0YXQpOwor
CWlmIChQVFJJU0VSUihyZXEpKQorCQlyZXR1cm4gUFRSMkVSUihyZXEpOworCXVrXzlwZGV2X3Jl
cV9yZW1vdmUoZGV2LCByZXEpOworCXVrX3ByX2RlYnVnKCJ1azlwOiBSV1NUQVQiKTsKKworCXJl
dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliL3VrOXAvTWFrZWZpbGUudWsgYi9saWIvdWs5cC9N
YWtlZmlsZS51awppbmRleCBjZDRiZjRiOGEwMzMuLmVmYzBlZTc0OGFkNCAxMDA2NDQKLS0tIGEv
bGliL3VrOXAvTWFrZWZpbGUudWsKKysrIGIvbGliL3VrOXAvTWFrZWZpbGUudWsKQEAgLTcsMyAr
Nyw0IEBAIExJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85cGRldl90cmFucy5jCiBM
SUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXByZXEuYwogTElCVUs5UF9TUkNTLXkg
Kz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2LmMKIExJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9C
QVNFKS85cGZpZC5jCitMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXAuYwpkaWZm
IC0tZ2l0IGEvbGliL3VrOXAvZXhwb3J0c3ltcy51ayBiL2xpYi91azlwL2V4cG9ydHN5bXMudWsK
aW5kZXggNWNkNzgxN2JmNWM4Li40Zjk1MGEwZDNmNzkgMTAwNjQ0Ci0tLSBhL2xpYi91azlwL2V4
cG9ydHN5bXMudWsKKysrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awpAQCAtMjgsMyArMjgsMTYg
QEAgdWtfOXBkZXZfcmVxX3JlbW92ZQogdWtfOXBkZXZfZmlkX2NyZWF0ZQogdWtfOXBmaWRfZ2V0
CiB1a185cGZpZF9wdXQKKwordWtfOXBfZG9fdmVyc2lvbgordWtfOXBfZG9fYXR0YWNoCit1a185
cF9kb19mbHVzaAordWtfOXBfZG9fd2FsawordWtfOXBfZG9fb3BlbgordWtfOXBfZG9fY3JlYXRl
Cit1a185cF9kb19yZW1vdmUKK3VrXzlwX2RvX2NsdW5rCit1a185cF9kb19yZWFkCit1a185cF9k
b193cml0ZQordWtfOXBfZG9fc3RhdAordWtfOXBfZG9fd3N0YXQKZGlmZiAtLWdpdCBhL2xpYi91
azlwL2luY2x1ZGUvdWsvOXAuaCBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ2ODMxMzhlODI3OQotLS0gL2Rldi9udWxs
CisrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXAuaApAQCAtMCwwICsxLDI2MCBAQAorLyogU1BE
WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLworLyoKKyAqIEF1dGhvcnM6IENy
aXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5
LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQg
aG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqCisgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJ
TiBBTlkgV0FZLgorICovCisjaWZuZGVmIF9fVUtfOVBfXworI2RlZmluZSBfX1VLXzlQX18KKwor
I2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgorI2luY2x1ZGUgPHVrLzlwX2NvcmUuaD4KKyNp
bmNsdWRlIDx1ay85cGRldi5oPgorI2luY2x1ZGUgPHVrLzlwcmVxLmg+CisjaW5jbHVkZSA8dWsv
OXBmaWQuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisv
KioKKyAqIE5lZ290aWF0ZXMgdGhlIHZlcnNpb24gYW5kIGlzIHRoZSBmaXJzdCBtZXNzYWdlIGlu
IGEgOVAgc2Vzc2lvbi4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBE
ZXZpY2UuCisgKiBAcGFyYW0gcmVxdWVzdGVkCisgKiAgIFJlcXVlc3RlZCB2ZXJzaW9uIHN0cmlu
Zy4KKyAqIEBwYXJhbSByZWNlaXZlZAorICogICBSZWNlaXZlZCB2ZXJzaW9uIHN0cmluZy4KKyAq
IEByZXR1cm4KKyAqICAgLSAoIUVSUlBUUik6IFRoZSByZXF1ZXN0LiBJdCBtdXN0IGJlIHJlbW92
ZWQgb25seSBhZnRlciBhbGwgYWNjZXNzZXMgdG8KKyAqICAgdGhlIHJlY2VpdmVkIHZlcnNpb24g
c3RyaW5nIGFyZSBkb25lLgorICogICAtIEVSUlBUUjogVGhlIGVycm9yIHJldHVybmVkIGVpdGhl
ciBieSB0aGUgQVBJIG9yIGJ5IHRoZSByZW1vdGUgc2VydmVyLgorICovCitzdHJ1Y3QgdWtfOXBy
ZXEgKnVrXzlwX2RvX3ZlcnNpb24oc3RydWN0IHVrXzlwZGV2ICpkZXYsCisJCWNvbnN0IGNoYXIg
KnJlcXVlc3RlZCwgc3RydWN0IHVrXzlwX3N0ciAqcmVjZWl2ZWQpOworCisvKioKKyAqIE5lZ290
aWF0ZXMgdGhlIHZlcnNpb24gYW5kIGlzIHRoZSBmaXJzdCBtZXNzYWdlIGluIGEgOVAgc2Vzc2lv
bi4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBA
cGFyYW0gYWZpZAorICogICBBdXRoZW50aWNhdGlvbiBmaWQsIHVzdWFsbHkgVUtfOVBfTk9GSUQu
CisgKiBAcGFyYW0gdW5hbWUKKyAqICAgVXNlciBuYW1lLCBjYW4gYmUgZW1wdHkgc3RyaW5nIGZv
ciB2aXJ0aW8veGVuLgorICogQHBhcmFtIGFuYW1lCisgKiAgIFRoZSBmaWxlIHRyZWUgdG8gYWNj
ZXNzLCBjYW4gYmUgbGVmdCBlbXB0eSBmb3IgdmlydGlvL3hlbi4KKyAqIEBwYXJhbSBuX3VuYW1l
CisgKiAgIE51bWVyaWMgdW5hbWUsIHBhcnQgb2YgdGhlIDlQMjAwMC51IHVuaXggZXh0ZW5zaW9u
IHRvIHRoZSBwcm90b2NvbC4KKyAqIEByZXR1cm4KKyAqICAgLSAoIUVSUlBUUik6IFRoZSBmaWQg
b2YgdGhlIHJvb3QgZGlyZWN0b3J5IGluIHRoZSBhY2Nlc3NlZCBmaWxlIHRyZWUuCisgKiAgIC0g
RVJSUFRSOiBUaGUgZXJyb3IgcmV0dXJuZWQgZWl0aGVyIGJ5IHRoZSBBUEkgb3IgYnkgdGhlIHJl
bW90ZSBzZXJ2ZXIuCisgKi8KK3N0cnVjdCB1a185cGZpZCAqdWtfOXBfZG9fYXR0YWNoKHN0cnVj
dCB1a185cGRldiAqZGV2LCB1aW50MzJfdCBhZmlkLAorCQljb25zdCBjaGFyICp1bmFtZSwgY29u
c3QgY2hhciAqYW5hbWUsIHVpbnQzMl90IG5fdW5hbWUpOworCisvKioKKyAqIEZsdXNoZXMgdGhl
IGdpdmVuIHJlcXVlc3QgdGFnLCBjYW5jZWxpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcmVxdWVzdCBp
ZgorICogdGhlIHNlcnZlciBoYXMgbm90IHlldCByZXBsaWVkIHRvIGl0LgorICoKKyAqIEBwYXJh
bSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBvbGR0YWcKKyAq
ICAgUmVxdWVzdCB0YWcuCisgKiBAcmV0dXJuCisgKiAgIC0gMDogU3VjY2Vzc2Z1bC4KKyAqICAg
LSAoPCAwKTogQW4gZXJyb3Igb2NjdXJyZWQuCisgKi8KK2ludCB1a185cF9kb19mbHVzaChzdHJ1
Y3QgdWtfOXBkZXYgKmRldiwgdWludDE2X3Qgb2xkdGFnKTsKKworLyoqCisgKiBXYWxrcyB0aGUg
ZmlsZXN5c3RlbSB0cmVlIGZyb20gdGhlIGdpdmVuIGRpcmVjdG9yeSBmaWQsIGF0dGVtcHRpbmcg
dG8gb2J0YWluCisgKiB0aGUgZmlkIGZvciB0aGUgY2hpbGQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4K
KyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFy
YW0gZmlkCisgKiAgIERpcmVjdG9yeSBmaWQuCisgKiBAcGFyYW0gbmFtZQorICogICBGaWxlIG5h
bWUuCisgKiBAcmV0dXJuCisgKiAgIC0gKCFFUlJQVFIpOiBUaGUgZmlkIG9mIHRoZSBjaGlsZCBl
bnRyeS4KKyAqICAgLSBFUlJQVFI6IFRoZSBlcnJvciByZXR1cm5lZCBlaXRoZXIgYnkgdGhlIEFQ
SSBvciBieSB0aGUgcmVtb3RlIHNlcnZlci4KKyAqLworc3RydWN0IHVrXzlwZmlkICp1a185cF9k
b193YWxrKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJY29u
c3QgY2hhciAqbmFtZSk7CisKKy8qKgorICogT3BlbnMgdGhlIGZpZCB3aXRoIHRoZSBnaXZlbiBt
b2RlLgorICoKKyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAq
IEBwYXJhbSBmaWQKKyAqICAgOVAgZmlkLgorICogQHBhcmFtIG1vZGUKKyAqICAgOVAgb3BlbiBt
b2RlLgorICogQHJldHVybgorICogICAtIDA6IFN1Y2Nlc3NmdWwuCisgKiAgIC0gKDwgMCk6IEFu
IGVycm9yIG9jY3VycmVkLgorICovCitpbnQgdWtfOXBfZG9fb3BlbihzdHJ1Y3QgdWtfOXBkZXYg
KmRldiwgc3RydWN0IHVrXzlwZmlkICpmaWQsIHVpbnQ4X3QgbW9kZSk7CisKKy8qKgorICogQ3Jl
YXRlcyBhIG5ldyBmaWxlIHdpdGggdGhlIGdpdmVuIG5hbWUgaW4gdGhlIGRpcmVjdG9yeSBhc3Nv
Y2lhdGVkIHdpdGggZmlkLAorICogYW5kIGFzc29jaWF0ZXMgZmlkIHdpdGggdGhlIG5ld2x5IGNy
ZWF0ZWQgZmlsZSwgb3BlbmluZyBpdCB3aXRoIHRoZSBnaXZlbgorICogbW9kZS4KKyAqCisgKiBA
cGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCisgKiBAcGFyYW0gZmlkCisg
KiAgIDlQIGRpcmVjdG9yeSBmaWQuCisgKiBAcGFyYW0gbmFtZQorICogICBOYW1lIG9mIHRoZSBj
cmVhdGVkIGZpbGUuCisgKiBAcGFyYW0gcGVybQorICogICA5UCBwZXJtaXNzaW9uIGJpdHMuCisg
KiBAcGFyYW0gbW9kZQorICogICA5UCBvcGVuIG1vZGUuCisgKiBAcGFyYW0gZXh0ZW5zaW9uCisg
KiAgIFN0cmluZyBkZXNjcmliaW5nIHNwZWNpYWwgZmlsZXMsIGRlcGVuZGluZyBvbiB0aGUgbW9k
ZSBiaXQuCisgKiBAcmV0dXJuCisgKiAgIC0gMDogU3VjY2Vzc2Z1bC4KKyAqICAgLSAoPCAwKTog
QW4gZXJyb3Igb2NjdXJyZWQuCisgKi8KK2ludCB1a185cF9kb19jcmVhdGUoc3RydWN0IHVrXzlw
ZGV2ICpkZXYsIHN0cnVjdCB1a185cGZpZCAqZmlkLAorCQljb25zdCBjaGFyICpuYW1lLCB1aW50
MzJfdCBwZXJtLCB1aW50OF90IG1vZGUsCisJCWNvbnN0IGNoYXIgKmV4dGVuc2lvbik7CisKKy8q
KgorICogUmVtb3ZlcyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggZmlkLgorICoKKyAqIEBwYXJh
bSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBmaWQKKyAqICAg
OVAgZmlkIHRvIHJlbW92ZS4KKyAqIEByZXR1cm4KKyAqICAgLSAwOiBTdWNjZXNzZnVsLgorICog
ICAtICg8IDApOiBBbiBlcnJvciBvY2N1cnJlZC4KKyAqLworaW50IHVrXzlwX2RvX3JlbW92ZShz
dHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwZmlkICpmaWQpOworCisvKioKKyAqIENs
dW5rcyB0aGUgZmlkLCB0ZWxsaW5nIHRoZSBzZXJ2ZXIgdG8gZm9yZ2V0IGl0cyBwcmV2aW91cyBh
c3NvY2lhdGlvbi4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZp
Y2UuCisgKiBAcGFyYW0gZmlkCisgKiAgIDlQIGZpZCB0byBjbHVuay4KKyAqIEByZXR1cm4KKyAq
ICAgLSAwOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBBbiBlcnJvciBvY2N1cnJlZC4KKyAq
LworaW50IHVrXzlwX2RvX2NsdW5rKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBm
aWQgKmZpZCk7CisKKy8qKgorICogUmVhZHMgY291bnQgYnl0ZXMgZnJvbSB0aGUgZmlkLCBzdGFy
dGluZyBmcm9tIHRoZSBnaXZlbiBvZmZzZXQsIHBsYWNpbmcKKyAqIHRoZW0gaW50byB0aGUgYnVm
ZmVyLgorICoKKyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KKyAq
IEBwYXJhbSBmaWQKKyAqICAgOVAgZmlkIHRvIHJlYWQgZnJvbS4KKyAqIEBwYXJhbSBvZmZzZXQK
KyAqICAgT2Zmc2V0IGF0IHdoaWNoIHRvIHN0YXJ0IHJlYWRpbmcuCisgKiBAcGFyYW0gY291bnQK
KyAqICAgTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZC4KKyAqIEBwYXJhbSBidWYKKyAq
ICAgQnVmZmVyIHRvIHJlYWQgaW50by4KKyAqIEByZXR1cm4KKyAqICAgLSAoPj0gMCk6IEFtb3Vu
dCBvZiBieXRlcyByZWFkLgorICogICAtICg8IDApOiBBbiBlcnJvciBvY2N1cnJlZC4KKyAqLwor
aW50NjRfdCB1a185cF9kb19yZWFkKHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBm
aWQgKmZpZCwKKwkJdWludDY0X3Qgb2Zmc2V0LCB1aW50MzJfdCBjb3VudCwgY2hhciAqYnVmKTsK
KworLyoqCisgKiBXcml0ZXMgY291bnQgYnl0ZXMgZnJvbSBidWYgdG8gdGhlIGZpZCwgc3RhcnRp
bmcgZnJvbSB0aGUgZ2l2ZW4gb2Zmc2V0LgorICoKKyAqIEBwYXJhbSBkZXYKKyAqICAgVGhlIFVu
aWtyYWZ0IDlQIERldmljZS4KKyAqIEBwYXJhbSBmaWQKKyAqICAgOVAgZmlkIHRvIHdyaXRlIHRv
LgorICogQHBhcmFtIG9mZnNldAorICogICBPZmZzZXQgYXQgd2hpY2ggdG8gc3RhcnQgd3JpdGlu
Zy4KKyAqIEBwYXJhbSBjb3VudAorICogICBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byB3cml0
ZS4KKyAqIEBwYXJhbSBidWYKKyAqICAgRGF0YSB0byBiZSB3cml0dGVuLgorICogQHJldHVybgor
ICogICAtICg+PSAwKTogQW1vdW50IG9mIGJ5dGVzIHdyaXR0ZW4uCisgKiAgIC0gKDwgMCk6IEFu
IGVycm9yIG9jY3VycmVkLgorICovCitpbnQ2NF90IHVrXzlwX2RvX3dyaXRlKHN0cnVjdCB1a185
cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJdWludDY0X3Qgb2Zmc2V0LCB1aW50
MzJfdCBjb3VudCwgY29uc3QgY2hhciAqYnVmKTsKKworLyoqCisgKiBTdGF0cyB0aGUgZ2l2ZW4g
ZmlkIGFuZCBwbGFjZXMgdGhlIGRhdGEgaW50byB0aGUgZ2l2ZW4gc3RhdCBzdHJ1Y3R1cmUuCisg
KgorICogQHBhcmFtIGRldgorICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgorICogQHBhcmFt
IGZpZAorICogICA5UCBmaWQgdG8gc3RhdC4KKyAqIEBwYXJhbSBzdGF0CisgKiAgIFdoZXJlIHRv
IHN0b3JlIHRoZSBzdGF0IHJlc3VsdHMuCisgKiBAcmV0dXJuCisgKiAgIC0gKCFFUlJQVFIpOiBU
aGUgcmVxdWVzdC4gSXQgbXVzdCBiZSByZW1vdmVkIG9ubHkgYWZ0ZXIgYWxsIGFjY2Vzc2VzIHRv
CisgKiAgIHRoZSBzdHJpbmdzIGluIHRoZSBzdGF0IHN0cnVjdHVyZSBhcmUgb3Zlci4KKyAqICAg
LSBFUlJQVFI6IFRoZSBlcnJvciByZXR1cm5lZCBlaXRoZXIgYnkgdGhlIEFQSSBvciBieSB0aGUg
cmVtb3RlIHNlcnZlci4KKyAqLworc3RydWN0IHVrXzlwcmVxICp1a185cF9kb19zdGF0KHN0cnVj
dCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQgKmZpZCwKKwkJc3RydWN0IHVrXzlwX3N0
YXQgKnN0YXQpOworCisvKioKKyAqIENoYW5nZXMgdGhlIGZpbGUgYXR0cmlidXRlcyBvZiBhIGdp
dmVuIGZpZC4KKyAqCisgKiBAcGFyYW0gZGV2CisgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2Uu
CisgKiBAcGFyYW0gZmlkCisgKiAgIDlQIGZpZCB0byBjbHVuay4KKyAqIEByZXR1cm4KKyAqICAg
LSAwOiBTdWNjZXNzZnVsLgorICogICAtICg8IDApOiBBbiBlcnJvciBvY2N1cnJlZC4KKyAqLwor
aW50IHVrXzlwX2RvX3dzdGF0KHN0cnVjdCB1a185cGRldiAqZGV2LCBzdHJ1Y3QgdWtfOXBmaWQg
KmZpZCwKKwkJc3RydWN0IHVrXzlwX3N0YXQgKnN0YXQpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLyogX19VS185UF9fICovCi0tIAoyLjExLjAKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 09:06:06 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 09:06: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 1hh9J7-0002fR-Fn; Sat, 29 Jun 2019 09:06:05 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=bpQB=U4=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1hh9J5-0002eu-TC
 for minios-devel@lists.xenproject.org; Sat, 29 Jun 2019 09:06:03 +0000
X-Inumbo-ID: 1da3d657-9a4d-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 1da3d657-9a4d-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 09:06:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CEA45F2023;
 Sat, 29 Jun 2019 11:06:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4y_rDXcFeoMI; Sat, 29 Jun 2019 11:06:00 +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 A6D20F2022
 for <minios-devel@lists.xenproject.org>; Sat, 29 Jun 2019 11:05:58 +0200 (CEST)
Received: from [10.7.0.73] (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; Sat, 29 Jun
 2019 11:05:57 +0200
To: <minios-devel@lists.xenproject.org>
References: <20190603074333.12285-1-nicolescu.roxana1996@gmail.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <d1177077-3f35-9dac-994d-4b06625bb654@neclab.eu>
Date: Sat, 29 Jun 2019 12:05:56 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.0
MIME-Version: 1.0
In-Reply-To: <20190603074333.12285-1-nicolescu.roxana1996@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 PATCH] plat/virtio: Reset device helper
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGVsbG8gUm94YW5hLAoKVGhhbmsgeW91LiBUaGUgcGF0Y2ggc2VlbXMgZmluZS4gSSB3aWxsIHVw
c3RyZWFtIGxhdGVyIHRvZGF5LgoKUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJh
bi5zYW50aGFuYW1AbmVjbGFiLmV1PgoKVGhhbmtzICYgUmVnYXJkcwpTaGFyYW4gU2FudGhhbmFt
CgoKT24gNi8zLzE5IDEwOjQzIEFNLCBSb3hhbmEgTmljb2xlc2N1IHdyb3RlOgo+IFRoaXMgcGF0
Y2ggYWRkcyB0aGUgcmVzZXQgZGV2aWNlIGhlbHBlciBmdW5jdGlvbi4KPiAKPiBTaWduZWQtb2Zm
LWJ5OiBSb3hhbmEgTmljb2xlc2N1IDxuaWNvbGVzY3Uucm94YW5hMTk5NkBnbWFpbC5jb20+Cj4g
LS0tCj4gICBwbGF0L2RyaXZlcnMvaW5jbHVkZS92aXJ0aW8vdmlydGlvX2J1cy5oIHwgMjIgKysr
KysrKysrKysrKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykK
PiAKPiBkaWZmIC0tZ2l0IGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlvL3ZpcnRpb19idXMu
aCBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9fYnVzLmgKPiBpbmRleCA4OGQw
OTA2Ni4uNzJhODI5ODMgMTAwNjQ0Cj4gLS0tIGEvcGxhdC9kcml2ZXJzL2luY2x1ZGUvdmlydGlv
L3ZpcnRpb19idXMuaAo+ICsrKyBiL3BsYXQvZHJpdmVycy9pbmNsdWRlL3ZpcnRpby92aXJ0aW9f
YnVzLmgKPiBAQCAtMTQ2LDYgKzE0NiwyOCBAQCBpbnQgdmlydGlvX2J1c19yZWdpc3Rlcl9kZXZp
Y2Uoc3RydWN0IHZpcnRpb19kZXYgKnZkZXYpOwo+ICAgdm9pZCBfdmlydGlvX2J1c19yZWdpc3Rl
cl9kcml2ZXIoc3RydWN0IHZpcnRpb19kcml2ZXIgKnZkcnYpOwo+ICAgCj4gICAvKioKPiArICog
VGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIHZpcnRpbyBkZXZpY2UgLgo+ICsgKiBAcGFyYW0gdmRl
dgo+ICsgKglSZWZlcmVuY2UgdG8gdGhlIHZpcnRpbyBkZXZpY2UKPiArICogQHJldHVybgo+ICsg
KgkwIG9uIHN1Y2Nlc3NmdWwgdXBkYXRpbmcgdGhlIHN0YXR1cy4KPiArICoJLUVOT1RTVVAsIGlm
IHRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgdmlydGlvIGRldmljZS4KPiAr
ICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IHZpcnRpb19kZXZfcmVzZXQoc3RydWN0IHZpcnRpb19k
ZXYgKnZkZXYpCj4gK3sKPiArCWludCByYyA9IC1FTk9UU1VQOwo+ICsKPiArCVVLX0FTU0VSVCh2
ZGV2KTsKPiArCj4gKwlpZiAobGlrZWx5KHZkZXYtPmNvcHMtPmRldmljZV9yZXNldCkpIHsKPiAr
CQl2ZGV2LT5jb3BzLT5kZXZpY2VfcmVzZXQodmRldik7Cj4gKwkJcmMgPSAwOwo+ICsJfQo+ICsK
PiArCXJldHVybiByYzsKPiArfQo+ICsKPiArLyoqCj4gICAgKiBUaGUgZnVuY3Rpb24gdXBkYXRl
cyB0aGUgc3RhdHVzIG9mIHRoZSB2aXJ0aW8gZGV2aWNlCj4gICAgKiBAcGFyYW0gdmRldgo+ICAg
ICogICAgICBSZWZlcmVuY2UgdG8gdGhlIHZpcnRpbyBkZXZpY2UuCj4gCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:03:38 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:03: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 1hhACm-0006zi-Nt; Sat, 29 Jun 2019 10:03:36 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Pgmf=U4=gmail.com=lascu.bogdan96@srs-us1.protection.inumbo.net>)
 id 1hhACm-0006zd-9n
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:03:36 +0000
X-Inumbo-ID: 2758e20b-9a55-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 2758e20b-9a55-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 10:03:34 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id n9so8742245wru.0
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 03:03: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;
 bh=RNd/iy6zOrx4lb13ae7BDi51jb/QUhF0l+nxyG3Y3j0=;
 b=Sqhx7k4hX8BGpH4xP2zctrIzdg+VdVFpqt0wdSbovsypGmMRDZ+vjztfCyNvc19KEX
 jIogtvVhRiUpz0OjhxXfujywDZ2uU1oowIdRSkQbKch5DrupP3EPi0JM9B51KGq/zBUb
 sMvzRbaBj48G8zJ2CgUHk1cGmhdNTmzJFSVEOhcpEqXdbqLipxw1AVdPsP1sWlz/ca0C
 Gl62aqAXSt6MYB4FHJZQ5r/M1TrlAtd0+OedLlMjd3Hfoah9dYLZV61sIluWtG9gKGqT
 L1vdHryxUml8kYQKskSfmF1lZ3O7zi+NWL6Ds5UMXwRXJHoC3RkLba05o0yHDqBegL2E
 5aIQ==
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=RNd/iy6zOrx4lb13ae7BDi51jb/QUhF0l+nxyG3Y3j0=;
 b=KIXbIV40s8tMlOtp+SEz3y5jaV8nAou8HoO9UP80PH9IfGdNLPwVGz7fLw3dMTgOfw
 uMIrER9OjtBXgOQggn+NyD+uXpu57obt4OJRc3gfW0fWvm+o7SdIOWBqcfhxrMGpuKNV
 Uiq5g79PRiV3+PlAnFyLR1tok0/8Ty86v+JUwqiIknARaUTGIUkS6ARiC1Pk27MC7+9f
 XXUnWCgCixvwomgYWQjM6PjXkeohkh8CcGgGELhD9Z6h+gviGeiOxT+zvy9SpqZOVKuv
 KAxTLiuE4rpim+w05KlIocDghEp5ZM83YouBtOYdUMaA+W+R9fRcYwZahF7LuzWYLRTJ
 iTIg==
X-Gm-Message-State: APjAAAWqqIcFAWaqxK0/KVkIMjhsA+71Gy5LPr7ZLeeyDNUh7ZbnP5Nq
 YMCY12UrEQJiHvA+Q0IUYuIFgSjEJb0=
X-Google-Smtp-Source: APXvYqy4GLUd3TsOLtRy/COz88lG3GfpiOSkgJSZFqt0sQ9uyjZF8BJ2vNn4WdX9BIeY/mEbOixyJw==
X-Received: by 2002:adf:b605:: with SMTP id f5mr11966669wre.305.1561802612737; 
 Sat, 29 Jun 2019 03:03:32 -0700 (PDT)
Received: from roma.precis.pub.ro ([141.85.233.105])
 by smtp.googlemail.com with ESMTPSA id l1sm14035159wrf.46.2019.06.29.03.03.32
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 03:03:32 -0700 (PDT)
From: Bogdan Lascu <lascu.bogdan96@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 13:03:26 +0300
Message-Id: <20190629100326.28437-1-lascu.bogdan96@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: Add anonymous pipe
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Bogdan Lascu <lascu.bogdan96@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>

QWRkcyBwaXBlIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhbiBhbm9ueW1vdXMgcGlwZSBhbmQgY3Jl
YXRlcyBmdW5jdGlvbnMKdGhhdCB3cml0ZSBhbmQgcmVhZCB0byBhIHBpcGUgZmlsZSBkZXNjcmlw
dG9yLgoKU2lnbmVkLW9mZi1ieTogQm9nZGFuIExhc2N1IDxsYXNjdS5ib2dkYW45NkBnbWFpbC5j
b20+Ci0tLQogbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsgICAgICAgICAgICB8ICAgMSArCiBsaWIv
dmZzY29yZS9leHBvcnRzeW1zLnVrICAgICAgICAgIHwgICAxICsKIGxpYi92ZnNjb3JlL2luY2x1
ZGUvdmZzY29yZS9waXBlLmggfCAgNjcgKysrKysrCiBsaWIvdmZzY29yZS9waXBlLmMgICAgICAg
ICAgICAgICAgIHwgNDA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQg
ZmlsZXMgY2hhbmdlZCwgNDc4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcGlwZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3Zm
c2NvcmUvcGlwZS5jCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvTWFrZWZpbGUudWsgYi9saWIv
dmZzY29yZS9NYWtlZmlsZS51awppbmRleCAwMTY2ZTYxMi4uNGU1MTkzNjcgMTAwNjQ0Ci0tLSBh
L2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCisrKyBiL2xpYi92ZnNjb3JlL01ha2VmaWxlLnVrCkBA
IC0xNCw2ICsxNCw3IEBAIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS90
YXNrLmMKIExJQlZGU0NPUkVfU1JDUy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9sb29rdXAuYwog
TElCVkZTQ09SRV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL2ZvcHMuYwogTElCVkZTQ09S
RV9TUkNTLXkgKz0gJChMSUJWRlNDT1JFX0JBU0UpL3N1YnJfdWlvLmMKK0xJQlZGU0NPUkVfU1JD
Uy15ICs9ICQoTElCVkZTQ09SRV9CQVNFKS9waXBlLmMKIAogRVhUUkFfTERfU0NSSVBULSQoQ09O
RklHX0xJQlZGU0NPUkUpICs9ICQoTElCVkZTQ09SRV9CQVNFKS9leHRyYS5sZAogCmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51
awppbmRleCBkYTdmYmFlYS4uMTZhMGY4NmEgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL2V4cG9y
dHN5bXMudWsKKysrIGIvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51awpAQCAtNTcsNiArNTcsNyBA
QCB3cml0ZXYKIHRydW5jYXRlCiBta25vZAogcHJlYWR2CitwaXBlCiBpb2N0bAogZmRhdGFzeW5j
CiBmZG9wZW5kaXIKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9waXBl
LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvcGlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwLi4wYzI1ZjRlZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92ZnNj
b3JlL2luY2x1ZGUvdmZzY29yZS9waXBlLmgKQEAgLTAsMCArMSw2NyBAQAorLyogcGlwZS5oIC0g
cGlwZSBoZWFkZXIKKyAqCisgKiBBdXRob3JzOiBCb2dkYW4tR2VvcmdlIExhc2N1IDxsYXNjdS5i
b2dkYW45NkBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5
IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogICAgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBU
SElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgor
ICovCisjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CisjaW5jbHVkZSA8dWsvd2FpdC5oPgorI2lu
Y2x1ZGUgPHVrL211dGV4Lmg+CisKKyNkZWZpbmUgUElQRV9NQVhfU0laRQkoMSA8PCAxNikKKwor
CitzdHJ1Y3QgcGlwZV9idWYgeworCWNoYXIgKmRhdGE7CisJdW5zaWduZWQgaW50IG1heF9zaXpl
OworCXNpemVfdCBsZW47CS8qIFRvdGFsIGxlbiBvZiBidWZmZXIuICovCisJdW5zaWduZWQgaW50
IHJfb2ZmOworCXVuc2lnbmVkIGludCB3X29mZjsKK307CisKK3N0cnVjdCBwaXBlX2luZm8gewor
CXN0cnVjdCBwaXBlX2J1ZiAqYnVmOworCWludCB3X2NvdW50OworCWludCByX2NvdW50OworCWlu
dCBmbGFnczsKKwlzdHJ1Y3QgdWtfbXV0ZXggcGlwZV9sb2NrOworCXN0cnVjdCB1a193YWl0cSB3
cTsKK307CisKK3N0cnVjdCBwaXBlX2J1ZiAqYWxsb2NfcGlwZV9idWYoaW50IHNpemUpOworc3Ry
dWN0IHBpcGVfaW5mbyAqYWxsb2NfcGlwZV9pbmZvKGludCBzaXplLCBpbnQgZmxhZ3MpOworCit2
b2lkIGZyZWVfcGlwZV9idWYoc3RydWN0IHBpcGVfYnVmICpwaXBlX2J1Zik7Cit2b2lkIGZyZWVf
cGlwZV9pbmZvKHN0cnVjdCBwaXBlX2luZm8gKnBpcGVfaW5mbyk7CisKKworI2RlZmluZSBQSVBF
X0xPQ0soX19waXBlKQl1a19tdXRleF9sb2NrKCZfX3BpcGUtPnBpcGVfbG9jaykKKyNkZWZpbmUg
UElQRV9VTkxPQ0soX19waXBlKQl1a19tdXRleF91bmxvY2soJl9fcGlwZS0+cGlwZV9sb2NrKQor
CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9waXBlLmMgYi9saWIvdmZzY29yZS9waXBlLmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjE1MTM3NjI3Ci0tLSAvZGV2L251bGwK
KysrIGIvbGliL3Zmc2NvcmUvcGlwZS5jCkBAIC0wLDAgKzEsNDA5IEBACisvKiBwaXBlLmMgLSBw
aXBlIGltcGxlbWVudGF0aW9uCisgKgorICogQXV0aG9yczogQm9nZGFuLUdlb3JnZSBMYXNjdSA8
bGFzY3UuYm9nZGFuOTZAZ21haWwuY29tPgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5p
dmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRl
ciBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqICAgIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KgorICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5Z
IFdBWS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNp
bmNsdWRlIDx2ZnNjb3JlL3BpcGUuaD4KKyNpbmNsdWRlIDx2ZnNjb3JlL2ZpbGUuaD4KKyNpbmNs
dWRlIDx2ZnNjb3JlL3Zub2RlLmg+CisjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgorI2luY2x1ZGUg
PHVrL3dhaXQuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworCitzaXplX3QgZ2V0X3BpcGVf
YnVmX2ZyZWVfc3BhY2Uoc3RydWN0IHBpcGVfYnVmICpwaXBlX2J1ZikKK3sKKwlyZXR1cm4gcGlw
ZV9idWYtPm1heF9zaXplIC0gcGlwZV9idWYtPmxlbjsKK30KKworaW50IHBpcGVfY2FuX3JlYWQo
c3RydWN0IHBpcGVfYnVmICpwaXBlX2J1ZikKK3sKKwlyZXR1cm4gcGlwZV9idWYtPmxlbiA+IDA7
Cit9CisKKy8qIFdyaXRlIGJsb2NrcyB1bnRpbCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgdG8gd3Jp
dGUgdGhlIGVudGlyZSB1c2VyIGJ1ZmZlci4gKi8KK2ludCBwaXBlX2Nhbl93cml0ZShzdHJ1Y3Qg
cGlwZV9idWYgKnBpcGVfYnVmLCBzaXplX3QgdXNlcl9idWZfbGVuKQoreworCXJldHVybiBnZXRf
cGlwZV9idWZfZnJlZV9zcGFjZShwaXBlX2J1ZikgPj0gdXNlcl9idWZfbGVuOworfQorCisKK3N0
YXRpYyBpbnQgcGlwZV93cml0ZShzdHJ1Y3Qgdm5vZGUgKnZub2RlLAorCQkJICAgICAgc3RydWN0
IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQoreworCXN0cnVjdCBwaXBlX2luZm8gKnBp
cGUgPSB2bm9kZS0+dl9kYXRhOworCXN0cnVjdCBwaXBlX2J1ZiAqcGlwZV9idWYgPSBwaXBlLT5i
dWY7CisJc3RydWN0IGlvdmVjIGlvdmVjOworCWludCB0b193cml0ZSA9IDA7CisJaW50IGk7CisK
KwlpZiAoIXBpcGUtPnJfY291bnQpIHsKKwkJLy8gVE9ETyBiZWZvcmUgcmV0dXJuaW5nIHRoZSBl
cnJvciwgc2VuZCBhIFNJR1BJUEUgc2lnbmFsLgorCQlyZXR1cm4gLUVQSVBFOworCX0KKworCWZv
ciAoaSA9IDA7IGkgPCBidWYtPnVpb19pb3ZjbnQ7IGkrKykKKwkJdG9fd3JpdGUgKz0gYnVmLT51
aW9faW92W2ldLmlvdl9sZW47CisKKwl1a193YWl0cV93YWl0X2V2ZW50KCZwaXBlLT53cSwgcGlw
ZV9jYW5fd3JpdGUocGlwZV9idWYsIHRvX3dyaXRlKSk7CisJUElQRV9MT0NLKHBpcGUpOworCWZv
ciAoaSA9IDA7IGkgPCBidWYtPnVpb19pb3ZjbnQ7IGkrKykgeworCQlpb3ZlYyA9IGJ1Zi0+dWlv
X2lvdltpXTsKKworCQkvKiBDb3B5IHRoZSB1c2VyIGJ1ZmZlciBpbiBwaXBlIGJ1ZmZlci4gKi8K
KwkJaWYgKHBpcGVfYnVmLT53X29mZiArIGlvdmVjLmlvdl9sZW4gPD0gcGlwZV9idWYtPm1heF9z
aXplKSB7CisJCQltZW1jcHkocGlwZV9idWYtPmRhdGEgKyBwaXBlX2J1Zi0+d19vZmYsCisJCQkg
ICAgICAgaW92ZWMuaW92X2Jhc2UsCisJCQkgICAgICAgaW92ZWMuaW92X2xlbik7CisJCX0gZWxz
ZSB7CisJCQlpbnQgZmlyc3RfY29weV9ieXRlczsKKwkJCWludCBzZWNvbmRfY29weV9ieXRlczsK
KworCQkJLyogQ29weSB0aGUgZnJvbSBjdXJyZW50IG9mZnNldCB0byB0aGUgZW5kLiAqLworCQkJ
Zmlyc3RfY29weV9ieXRlcyA9IHBpcGVfYnVmLT5tYXhfc2l6ZSAtIHBpcGVfYnVmLT53X29mZjsK
KwkJCW1lbWNweShwaXBlX2J1Zi0+ZGF0YSArIHBpcGVfYnVmLT53X29mZiwKKwkJCSAgICAgICBp
b3ZlYy5pb3ZfYmFzZSwKKwkJCSAgICAgICBmaXJzdF9jb3B5X2J5dGVzKTsKKworCQkJLyogQ29w
eSBmcm9tIHRoZSBiZWdnaW5nIHRoZSByZW1haW5pbmcgYnl0ZXMuICovCisJCQlzZWNvbmRfY29w
eV9ieXRlcyA9IHBpcGVfYnVmLT53X29mZgorCQkJCQkgICAgKyBpb3ZlYy5pb3ZfbGVuCisJCQkJ
CSAgICAtIHBpcGVfYnVmLT5tYXhfc2l6ZTsKKworCQkJbWVtY3B5KHBpcGVfYnVmLT5kYXRhLAor
CQkJICAgICAgIGlvdmVjLmlvdl9iYXNlICsgZmlyc3RfY29weV9ieXRlcywKKwkJCSAgICAgICBz
ZWNvbmRfY29weV9ieXRlcyk7CisKKwkJfQorCisJCS8qIFVwZGF0ZSBidWZmZXIgd3JpdGUgb2Zm
c2V0LiAqLworCQlwaXBlX2J1Zi0+d19vZmYgPSAocGlwZV9idWYtPndfb2ZmICsgaW92ZWMuaW92
X2xlbikKKwkJCQkgICUgcGlwZV9idWYtPm1heF9zaXplOworCisJCS8qIFVwZGF0ZSBwaXBlIGJ1
ZiBsZW4uICovCisJCXBpcGVfYnVmLT5sZW4gKz0gaW92ZWMuaW92X2xlbjsKKworCQkvKiBVcGRh
dGUgYnl0ZXMgd3JpdHRlbi4gKi8KKwkJYnVmLT51aW9fcmVzaWQgLT0gaW92ZWMuaW92X2xlbjsK
Kwl9CisJUElQRV9VTkxPQ0socGlwZSk7CisJdWtfd2FpdHFfd2FrZV91cCgmcGlwZS0+d3EpOwor
CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcGlwZV9yZWFkKHN0cnVjdCB2bm9kZSAqdm5v
ZGUsCisJCQkgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwK
KwkJCSAgICAgc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQoreworCXN0cnVj
dCBwaXBlX2luZm8gKnBpcGUgPSB2bm9kZS0+dl9kYXRhOworCXN0cnVjdCBwaXBlX2J1ZiAqcGlw
ZV9idWYgPSBwaXBlLT5idWY7CisJc3RydWN0IGlvdmVjIGlvdmVjOworCWludCB0b19yZWFkOwor
CWludCBpOworCisJaWYgKCh2ZnNjb3JlX2ZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKSAmJiBw
aXBlX2J1Zi0+bGVuID09IDApCisJCXJldHVybiAtRUFHQUlOOworCisJdWtfd2FpdHFfd2FpdF9l
dmVudCgmcGlwZS0+d3EsIHBpcGVfY2FuX3JlYWQocGlwZV9idWYpKTsKKwlQSVBFX0xPQ0socGlw
ZSk7CisJZm9yIChpID0gMDsgaSA8IGJ1Zi0+dWlvX2lvdmNudDsgaSsrKSB7CisJCWlvdmVjID0g
YnVmLT51aW9faW92W2ldOworCQl0b19yZWFkID0gTUlOKGlvdmVjLmlvdl9sZW4sIHBpcGVfYnVm
LT5sZW4pOworCQlpZiAodG9fcmVhZCA9PSAwKQorCQkJYnJlYWs7CisKKwkJLyogQ29weSBmcm9t
IHBpcGUgYnVmZmVyIHRvIHVzZXIgYnVmZmVyLiAqLworCQlpZiAocGlwZV9idWYtPnJfb2ZmICsg
dG9fcmVhZCA8PSBwaXBlX2J1Zi0+bWF4X3NpemUpIHsKKwkJCW1lbWNweShpb3ZlYy5pb3ZfYmFz
ZSwKKwkJCSAgICAgICBwaXBlX2J1Zi0+ZGF0YSArIHBpcGVfYnVmLT5yX29mZiwKKwkJCSAgICAg
ICB0b19yZWFkKTsKKwkJfSBlbHNlIHsKKwkJCWludCBmaXJzdF9jb3B5X2J5dGVzOworCQkJaW50
IHNlY29uZF9jb3B5X2J5dGVzOworCisJCQkvKiBDb3B5IHRoZSBmcm9tIGN1cnJlbnQgb2Zmc2V0
IHRvIHRoZSBlbmQuICovCisJCQlmaXJzdF9jb3B5X2J5dGVzID0gcGlwZV9idWYtPm1heF9zaXpl
IC0gcGlwZV9idWYtPnJfb2ZmOworCQkJbWVtY3B5KGlvdmVjLmlvdl9iYXNlLAorCQkJICAgICAg
IHBpcGVfYnVmLT5kYXRhICsgcGlwZV9idWYtPnJfb2ZmLAorCQkJICAgICAgIGZpcnN0X2NvcHlf
Ynl0ZXMpOworCisJCQkvKiBDb3B5IGZyb20gdGhlIGJlZ2dpbmcgdGhlIHJlbWFpbmluZyBieXRl
cy4gKi8KKwkJCXNlY29uZF9jb3B5X2J5dGVzID0gcGlwZV9idWYtPnJfb2ZmCisJCQkJCSAgICAr
IHRvX3JlYWQKKwkJCQkJICAgIC0gcGlwZV9idWYtPm1heF9zaXplOworCisJCQltZW1jcHkoaW92
ZWMuaW92X2Jhc2UgKyBmaXJzdF9jb3B5X2J5dGVzLAorCQkJICAgICAgIHBpcGVfYnVmLT5kYXRh
LAorCQkJICAgICAgIHNlY29uZF9jb3B5X2J5dGVzKTsKKworCQl9CisKKwkJLyogVXBkYXRlIHJl
YWQgYnVmZmVyIG9mZnNldC4gKi8KKwkJcGlwZV9idWYtPnJfb2ZmID0gKHBpcGVfYnVmLT5yX29m
ZiArIHRvX3JlYWQpICUgcGlwZV9idWYtPm1heF9zaXplOworCisJCS8qIFVwZGF0ZSBwaXBlIGJ1
ZmZlciBsZW4uICovCisJCXBpcGVfYnVmLT5sZW4gLT0gdG9fcmVhZDsKKworCQkvKiBVcGRhdGUg
Ynl0ZXMgcmVhZCB3aGljaCB3aWxsIGJlIHJldHVybmVkLiAqLworCQlidWYtPnVpb19yZXNpZCAt
PSB0b19yZWFkOworCX0KKwlQSVBFX1VOTE9DSyhwaXBlKTsKKwl1a193YWl0cV93YWtlX3VwKCZw
aXBlLT53cSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwaXBlX2Nsb3NlKHN0cnVj
dCB2bm9kZSAqdm5vZGUsCisJCQkgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZpbGUpCit7CisJc3Ry
dWN0IHBpcGVfaW5mbyAqcGlwZSA9IHZub2RlLT52X2RhdGE7CisKKwlQSVBFX0xPQ0socGlwZSk7
CisKKwlpZiAoZmlsZS0+Zl9mbGFncyAmIFVLX0ZSRUFEKQorCQlwaXBlLT5yX2NvdW50LS07CisK
KwlpZiAoZmlsZS0+Zl9mbGFncyAmIFVLX0ZXUklURSkKKwkJcGlwZS0+d19jb3VudC0tOworCisJ
aWYgKCFwaXBlLT5yX2NvdW50ICYmICFwaXBlLT53X2NvdW50KQorCQlmcmVlX3BpcGVfaW5mbyhw
aXBlKTsKKworCVBJUEVfVU5MT0NLKHBpcGUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp
bnQgcGlwZV9zZWVrKHN0cnVjdCB2bm9kZSAqdm5vZGUgX191bnVzZWQsCisJCQlzdHJ1Y3QgdmZz
Y29yZV9maWxlICpmaWxlIF9fdW51c2VkLAorCQkJb2ZmX3Qgb2ZmMSBfX3VudXNlZCwgb2ZmX3Qg
b2ZmMiBfX3VudXNlZCkKK3sKKwlyZXR1cm4gLUVQSVBFOworfQorCitzdGF0aWMgaW50IHBpcGVf
aW9jdGwoc3RydWN0IHZub2RlICp2bm9kZSwgc3RydWN0IHZmc2NvcmVfZmlsZSAqZmlsZSBfX3Vu
dXNlZCwKKwkJCXVuc2lnbmVkIGxvbmcgY29tLCB2b2lkICpkYXRhIF9fdW51c2VkKQoreworCXN0
cnVjdCBwaXBlX2luZm8gKnBpcGUgPSB2bm9kZS0+dl9kYXRhOworCXN0cnVjdCBwaXBlX2J1ZiAq
cGlwZV9idWYgX191bnVzZWQgPSBwaXBlLT5idWY7CisKKwlzd2l0Y2ggKGNvbSkgeworI2lmZGVm
IEZJT05SRUFECisJY2FzZSBGSU9OUkVBRDoKKwkJUElQRV9MT0NLKHBpcGUpOworCQkqKGludCAq
KWRhdGEgPSBwaXBlX2J1Zi0+bGVuOworCQlQSVBFX1VOTE9DSyhwaXBlKTsKKwkJcmV0dXJuIDA7
CisjZW5kaWYKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK3N0YXRpYyBz
dHJ1Y3Qgdm5vcHMgcGlwZV9mb3BzID0geworCS52b3BfcmVhZAk9IHBpcGVfcmVhZCwKKwkudm9w
X3dyaXRlCT0gcGlwZV93cml0ZSwKKwkudm9wX2Nsb3NlCT0gcGlwZV9jbG9zZSwKKwkudm9wX3Nl
ZWsJPSBwaXBlX3NlZWssCisJLnZvcF9pb2N0bAk9IHBpcGVfaW9jdGwsCit9OworCitzdHJ1Y3Qg
cGlwZV9idWYgKmFsbG9jX3BpcGVfYnVmKGludCBtYXhfc2l6ZSkKK3sKKwlzdHJ1Y3QgcGlwZV9i
dWYgKnBpcGVfYnVmOworCisJcGlwZV9idWYgPSB1a19jYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1
bHQoKSwgMSwgc2l6ZW9mKCpwaXBlX2J1ZikpOworCWlmICghcGlwZV9idWYpCisJCXJldHVybiBO
VUxMOworCXBpcGVfYnVmLT5kYXRhID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCks
IDEsCisJCQkJICAgbWF4X3NpemUgKiBzaXplb2YoY2hhcikpOworCWlmICghcGlwZV9idWYtPmRh
dGEpIHsKKwkJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBwaXBlX2J1Zik7CisJCXJl
dHVybiBOVUxMOworCX0KKworCXBpcGVfYnVmLT5yX29mZiA9IDA7CisJcGlwZV9idWYtPndfb2Zm
ID0gMDsKKwlwaXBlX2J1Zi0+bWF4X3NpemUgPSBtYXhfc2l6ZTsKKwlwaXBlX2J1Zi0+bGVuID0g
MDsKKworCXJldHVybiBwaXBlX2J1ZjsKK30KKworc3RydWN0IHBpcGVfaW5mbyAqYWxsb2NfcGlw
ZV9pbmZvKGludCBzaXplLCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IHBpcGVfaW5mbyAqcGlwZV9p
bmZvOworCisJcGlwZV9pbmZvID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIDEs
IHNpemVvZigqcGlwZV9pbmZvKSk7CisJaWYgKCFwaXBlX2luZm8pCisJCXJldHVybiBOVUxMOwor
CisJcGlwZV9pbmZvLT5yX2NvdW50ID0gMTsKKwlwaXBlX2luZm8tPndfY291bnQgPSAxOworCXBp
cGVfaW5mby0+ZmxhZ3MgPSBmbGFnczsKKworCXBpcGVfaW5mby0+YnVmID0gYWxsb2NfcGlwZV9i
dWYoc2l6ZSk7CisJaWYgKCFwaXBlX2luZm8tPmJ1ZikgeworCQl1a19mcmVlKHVrX2FsbG9jX2dl
dF9kZWZhdWx0KCksIHBpcGVfaW5mbyk7CisJCXJldHVybiBOVUxMOworCX0KKworCXVrX211dGV4
X2luaXQoJnBpcGVfaW5mby0+cGlwZV9sb2NrKTsKKwl1a193YWl0cV9pbml0KCZwaXBlX2luZm8t
PndxKTsKKworCXJldHVybiBwaXBlX2luZm87Cit9CisKK3ZvaWQgZnJlZV9waXBlX2J1ZihzdHJ1
Y3QgcGlwZV9idWYgKnBpcGVfYnVmKQoreworCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQo
KSwgcGlwZV9idWYtPmRhdGEpOworCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgcGlw
ZV9idWYpOworfQordm9pZCBmcmVlX3BpcGVfaW5mbyhzdHJ1Y3QgcGlwZV9pbmZvICpwaXBlX2lu
Zm8pCit7CisJZnJlZV9waXBlX2J1ZihwaXBlX2luZm8tPmJ1Zik7CisJdWtfZnJlZSh1a19hbGxv
Y19nZXRfZGVmYXVsdCgpLCBwaXBlX2luZm8pOworfQorCisKK2ludCBwaXBlKGludCBwaXBlZmRb
Ml0pCit7CisJaW50IHJldCA9IDA7CisJaW50IHdfZmQsIHJfZmQ7CisJc3RydWN0IGRlbnRyeSAq
d19kZW50cnksICpyX2RlbnRyeTsKKwlzdHJ1Y3Qgdm5vZGUgKnJfdm5vZGUsICp3X3Zub2RlOwor
CXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnJfZmlsZSwgKndfZmlsZTsKKwlzdHJ1Y3QgcGlwZV9pbmZv
ICpwaXBlX2luZm87CisKKwkvKiBSZXNlcnZlIGZpbGUgZGVzY3JpcHRvciBudW1iZXIuICovCisJ
cl9mZCA9IHZmc2NvcmVfYWxsb2NfZmQoKTsKKwl3X2ZkID0gdmZzY29yZV9hbGxvY19mZCgpOwor
CWlmIChyX2ZkIDwgMCB8fCB3X2ZkIDwgMCkgeworCQlyZXQgPSAtRU5GSUxFOworCQlnb3RvIEVS
Ul9FWElUOworCX0KKworCS8qIEFsbG9jYXRlIGZpbGUsIGRlbnRyeSwgYW5kIHZub2RlLiAqLwor
CXJfZmlsZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCAxLCBzaXplb2YoKnJf
ZmlsZSkpOworCXdfZmlsZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCAxLCBz
aXplb2YoKnJfZmlsZSkpOworCWlmICghcl9maWxlIHx8ICF3X2ZpbGUpIHsKKwkJcmV0ID0gLUVO
T01FTTsKKwkJZ290byBFUlJfTUFMTE9DX0ZJTEU7CisJfQorCisJcl9kZW50cnkgPSB1a19jYWxs
b2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpyX2RlbnRyeSkpOworCXdfZGVu
dHJ5ID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIDEsIHNpemVvZigqcl9kZW50
cnkpKTsKKwlpZiAoIXJfZGVudHJ5IHx8ICF3X2RlbnRyeSkgeworCQlyZXQgPSAtRU5PTUVNOwor
CQlnb3RvIEVSUl9NQUxMT0NfREVOVFJZOworCX0KKworCXJfdm5vZGUgPSB1a19jYWxsb2ModWtf
YWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpyX3Zub2RlKSk7CisJd192bm9kZSA9IHVr
X2NhbGxvYyh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCAxLCBzaXplb2YoKnJfdm5vZGUpKTsKKwlp
ZiAoIXJfdm5vZGUgfHwgIXdfdm5vZGUpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBFUlJf
TUFMTE9DX1ZOT0RFOworCX0KKworCS8qIEFsbG9jYXRlIHBpcGUgaW50ZXJuYWwgc3RydWN0dXJl
LiAqLworCXBpcGVfaW5mbyA9IGFsbG9jX3BpcGVfaW5mbyhQSVBFX01BWF9TSVpFLCAwKTsKKwlp
ZiAoIXBpcGVfaW5mbykgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIEVSUl9BTExPQ19QSVBF
X0lORk87CisJfQorCisJLyogRmlsbCBvdXQgbmVjZXNzYXJ5IGZpZWxkcy4gKi8KKwlyX2ZpbGUt
PmZkID0gcl9mZDsKKwl3X2ZpbGUtPmZkID0gcl9mZDsKKworCXJfZmlsZS0+Zl9jb3VudCA9IDE7
CisJd19maWxlLT5mX2NvdW50ID0gMTsKKworCXJfZmlsZS0+Zl9mbGFncyA9IFVLX0ZSRUFEOwor
CXdfZmlsZS0+Zl9mbGFncyA9IFVLX0ZXUklURTsKKworCXJfZmlsZS0+Zl9kZW50cnkgPSByX2Rl
bnRyeTsKKwl3X2ZpbGUtPmZfZGVudHJ5ID0gd19kZW50cnk7CisKKwlyX2RlbnRyeS0+ZF92bm9k
ZSA9IHJfdm5vZGU7CisJd19kZW50cnktPmRfdm5vZGUgPSB3X3Zub2RlOworCisKKwlyX3Zub2Rl
LT52X29wID0gJnBpcGVfZm9wczsKKwl3X3Zub2RlLT52X29wID0gJnBpcGVfZm9wczsKKworCXVr
X211dGV4X2luaXQoJnJfdm5vZGUtPnZfbG9jayk7CisJdWtfbXV0ZXhfaW5pdCgmd192bm9kZS0+
dl9sb2NrKTsKKworCXJfdm5vZGUtPnZfcmVmY250ID0gMTsKKwl3X3Zub2RlLT52X3JlZmNudCA9
IDE7CisKKwlyX3Zub2RlLT52X2RhdGEgPSBwaXBlX2luZm87CisJd192bm9kZS0+dl9kYXRhID0g
cGlwZV9pbmZvOworCisJLyogQXNzaWduIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIHZmc19maWxlLiAqLworCXJldCA9IHZmc2NvcmVfaW5zdGFsbF9mZChyX2ZkLCBy
X2ZpbGUpOworCWlmIChyZXQpCisJCWdvdG8gRVJSX1ZGU19JTlNUQUxMOworCisJcmV0ID0gdmZz
Y29yZV9pbnN0YWxsX2ZkKHdfZmQsIHdfZmlsZSk7CisJaWYgKHJldCkKKwkJZ290byBFUlJfVkZT
X0lOU1RBTEw7CisKKwkvKiBGaWxsIHBpcGVmZCBmaWVsZHMuICovCisJcGlwZWZkWzBdID0gcl9m
ZDsKKwlwaXBlZmRbMV0gPSB3X2ZkOworCisJcmV0dXJuIHJldDsKKworRVJSX1ZGU19JTlNUQUxM
OgorCWZyZWVfcGlwZV9pbmZvKHBpcGVfaW5mbyk7CitFUlJfQUxMT0NfUElQRV9JTkZPOgorCXVr
X2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgcl92bm9kZSk7CisJdWtfZnJlZSh1a19hbGxv
Y19nZXRfZGVmYXVsdCgpLCB3X3Zub2RlKTsKK0VSUl9NQUxMT0NfVk5PREU6CisJdWtfZnJlZSh1
a19hbGxvY19nZXRfZGVmYXVsdCgpLCByX2RlbnRyeSk7CisJdWtfZnJlZSh1a19hbGxvY19nZXRf
ZGVmYXVsdCgpLCB3X2RlbnRyeSk7CitFUlJfTUFMTE9DX0RFTlRSWToKKwl1a19mcmVlKHVrX2Fs
bG9jX2dldF9kZWZhdWx0KCksIHJfZmlsZSk7CisJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVs
dCgpLCB3X2ZpbGUpOworRVJSX01BTExPQ19GSUxFOgorCXZmc2NvcmVfcHV0X2ZkKHJfZmQpOwor
CXZmc2NvcmVfcHV0X2ZkKHdfZmQpOworRVJSX0VYSVQ6CisJVUtfQVNTRVJUKHJldCA8IDApOwor
CXJldHVybiByZXQ7Cit9CisKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:08:28 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:08: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 1hhAHU-00074j-4a; Sat, 29 Jun 2019 10:08:28 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhAHS-00074a-TK
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:08:26 +0000
X-Inumbo-ID: d435dc86-9a55-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d435dc86-9a55-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 10:08:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 27EC51053AC;
 Sat, 29 Jun 2019 12:08:23 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id zQWvjr0WPKSs; Sat, 29 Jun 2019 12:08:22 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id EA28F105391;
 Sat, 29 Jun 2019 12:08:22 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 12:08:22
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190629085608.15680-1-cristb@gmail.com>
 <20190629085608.15680-2-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <4e4e54bd-a6b8-040f-926d-e54b4430d91b@neclab.eu>
Date: Sat, 29 Jun 2019 12:08:21 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190629085608.15680-2-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/8] lib/uk9p: Add 9P 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
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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MjkuMDYuMTkgMTA6NTYsIENyaXN0aWFuIEJhbnUgd3JvdGU6Cj4gQWRkIGxpYnVrOXAgc2tlbGV0
b24gYW5kIHJlZ2lzdGVyIGl0IHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLgo+IAo+IFNpZ25lZC1v
ZmYtYnk6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gLS0tCj4gICBsaWIvQ29u
ZmlnLnVrICAgICAgICB8IDEgKwo+ICAgbGliL01ha2VmaWxlLnVrICAgICAgfCAxICsKPiAgIGxp
Yi91azlwL0NvbmZpZy51ayAgIHwgNiArKysrKysKPiAgIGxpYi91azlwL01ha2VmaWxlLnVrIHwg
NCArKysrCj4gICA0IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBt
b2RlIDEwMDY0NCBsaWIvdWs5cC9Db25maWcudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWs5cC9NYWtlZmlsZS51awo+IAo+IGRpZmYgLS1naXQgYS9saWIvQ29uZmlnLnVrIGIvbGliL0Nv
bmZpZy51awo+IGluZGV4IDgyMmM2MjRmZDU0OC4uOWZlODM3MjAzY2RhIDEwMDY0NAo+IC0tLSBh
L2xpYi9Db25maWcudWsKPiArKysgYi9saWIvQ29uZmlnLnVrCj4gQEAgLTQ3LDMgKzQ3LDQgQEAg
c291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtidXMvQ29u
ZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVrIgo+ICAgc291cmNlICJs
aWIvdWtuZXRkZXYvQ29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi91azlwL0NvbmZpZy51ayIKPiBk
aWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnVrIGIvbGliL01ha2VmaWxlLnVrCj4gaW5kZXggZDA2
ODM3ZjE0MzM4Li5iMWQ0NGQ0MGFiOTMgMTAwNjQ0Cj4gLS0tIGEvbGliL01ha2VmaWxlLnVrCj4g
KysrIGIvbGliL01ha2VmaWxlLnVrCj4gQEAgLTI0LDMgKzI0LDQgQEAgJChldmFsICQoY2FsbCBf
aW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQo+ICAgJChldmFsICQoY2Fs
bCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQo+ICAgJChldmFsICQo
Y2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xpc3QpKQo+ICAgJChl
dmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtuZXRkZXYpKQo+
ICskKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0UpL2xpYi91azlwKSkK
PiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvQ29uZmlnLnVrIGIvbGliL3VrOXAvQ29uZmlnLnVrCj4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmVhNDExNDQ4MzA0Ywo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWs5cC9Db25maWcudWsKPiBAQCAtMCwwICsxLDYg
QEAKPiArY29uZmlnIExJQlVLOVAKPiArCWJvb2wgInVrOXA6IDlwIGNsaWVudCIKPiArCWRlZmF1
bHQgbgo+ICsJc2VsZWN0IExJQlVLQUxMT0MKPiArCXNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVf
TElCQwo+ICsJc2VsZWN0IExJQlVLREVCVUcKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvTWFrZWZp
bGUudWsgYi9saWIvdWs5cC9NYWtlZmlsZS51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMDAwMDAwLi5mYTc1NDQ0MDU5OGMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGli
L3VrOXAvTWFrZWZpbGUudWsKPiBAQCAtMCwwICsxLDQgQEAKPiArJChldmFsICQoY2FsbCBhZGRs
aWJfcyxsaWJ1azlwLCQoQ09ORklHX0xJQlVLOVApKSkKPiArCj4gK0NJTkNMVURFUy0kKENPTkZJ
R19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQo+ICtDWFhJTkNMVURFUy0k
KENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQo+IAoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:13:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:13: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 1hhAMC-0007ir-HP; Sat, 29 Jun 2019 10:13:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lsMZ=U4=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hhAMB-0007im-Ev
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:13:19 +0000
X-Inumbo-ID: 8341da5a-9a56-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8341da5a-9a56-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 10:13:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id C98C8F2023;
 Sat, 29 Jun 2019 12:13:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HPcMUuHD6x4L; Sat, 29 Jun 2019 12:13:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9F5B8F2022;
 Sat, 29 Jun 2019 12:13:10 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Sat, 29 Jun 2019 12:13:10
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 2/3] Add documentation
Thread-Index: AQHVK49ME//LyAQKekmiRdPgfMJ/Bqayb2AA
Date: Sat, 29 Jun 2019 10:13:09 +0000
Message-ID: <439591EB-BF6F-44A6-95A3-2EDB30FD4648@neclab.eu>
References: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625195038.13082-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195038.13082-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.202]
Content-ID: <F79A50E5393E1149A9BCEDB5ECC391F8@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kLiBUaGUgb25seSB0aGluZyBpcyB0aGF0
IGl0IG1pZ2h0IGJlIGdvb2QgdG8gbGlzdCBleHRlcm5hbCBsaWIgZGVwZWRlbmNpZXMgKGkuZS4s
IHRoZSBMSUJTOj0gbGluZSB0aGF0IGdvZXMgaW4gdGhlIGFwcGxpY2F0aW9uIE1ha2VmaWxlKSBp
biBSRUFETUUubWQuIEkga25vdyB3ZSBoYXZlbid0IGRvbmUgdGhpcyBpbiB0aGUgcGFzdCwgYnV0
IHJpZ2h0IG5vdyB0aGUgb25seSAiZG9jdW1lbnRhdGlvbiIgb2YgdGhpcyBpcyBpbiB0aGUgY29t
bWl0IGxvZ3MsIHdoaWNoIGlzbid0IHZlcnkgdXNlci1mcmllbmRseS4gSSBjYW4gYWRkIHRoaXMg
b24gdXNwdHJlYW1pbmcgdGhvdWdoLg0KDQotLSBGZWxpcGUNCg0KUmV2aWV3ZWQtYnk6IEZlbGlw
ZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCg0K77u/T24gMjUuMDYuMTksIDIxOjUw
LCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQu
YWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRv
aXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+DQogICAgLS0tDQogICAgIENP
RElOR19TVFlMRS5tZCB8ICA0ICsrKysNCiAgICAgQ09OVFJJQlVUSU5HLm1kIHwgIDQgKysrKw0K
ICAgICBDT1BZSU5HLm1kICAgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
DQogICAgIE1BSU5UQUlORVJTLm1kICB8IDExICsrKysrKysrKysrDQogICAgIFJFQURNRS5tZCAg
ICAgICB8ICA1ICsrKysrDQogICAgIDUgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKQ0K
ICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kDQogICAgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBDT05UUklCVVRJTkcubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcu
bWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kDQogICAgIGNyZWF0ZSBt
b2RlIDEwMDY0NCBSRUFETUUubWQNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvQ09ESU5HX1NUWUxF
Lm1kIGIvQ09ESU5HX1NUWUxFLm1kDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi41NzMwMDQxDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0NPRElOR19T
VFlMRS5tZA0KICAgIEBAIC0wLDAgKzEsNCBAQA0KICAgICtDb2RpbmcgU3R5bGUNCiAgICArPT09
PT09PT09PT09DQogICAgKw0KICAgICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT0RJTkdfU1RZTEUu
bWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4NCiAgICBkaWZmIC0tZ2l0
IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kDQogICAgbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi41ZjU1ZWNhDQogICAgLS0tIC9kZXYvbnVsbA0KICAg
ICsrKyBiL0NPTlRSSUJVVElORy5tZA0KICAgIEBAIC0wLDAgKzEsNCBAQA0KICAgICtDb250cmli
dXRpbmcgdG8gVW5pa3JhZnQNCiAgICArPT09PT09PT09PT09PT09PT09PT09PT0NCiAgICArDQog
ICAgK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUgbWFp
biBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KICAgIGRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIvQ09Q
WUlORy5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uN2Vm
MTFkMQ0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9DT1BZSU5HLm1kDQogICAgQEAgLTAs
MCArMSwzMSBAQA0KICAgICtMaWNlbnNlDQogICAgKz09PT09PT0NCiAgICArDQogICAgK1VuaWty
YWZ0IGxpYnBzaW1kIHdyYXBwZXJzDQogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAg
Kw0KICAgICtUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgd3JhcHBlciBjb2RlIHRvIGJ1aWxkIHBz
aW1kIHdpdGggVW5pa3JhZnQuDQogICAgK0VhY2ggQyBjb2RlIGZpbGUgaW4gdGhpcyByZXBvc2l0
b3J5IHNob3VsZCBkZWNsYXJlIHdobyBpcyB0aGUNCiAgICArY29weXJpZ2h0IG93bmVyIGFuZCB1
bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcw0KICAgICtsaWNlbnNl
ZC4gSWYgc3VjaCBhIGxpY2VuY2Ugbm90ZSBpcyBtaXNzaW5nLCB0aGUgZm9sbG93aW5nIGNvcHly
aWdodA0KICAgICtub3RpY2Ugd2lsbCBhcHBseToNCiAgICArDQogICAgKw0KICAgICsJQ29weXJp
Z2h0KEMpIDIwMTkuIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiANCiAgICAr
CUFsbCByaWdodHMgcmVzZXJ2ZWQuDQogICAgKwkNCiAgICArCVRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCiAgICArCW1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCiAgICAr
CUxpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcg0KICAgICsJdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLg0KICAgICsJDQogICAgKwlUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiAgICArCWJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQog
ICAgKwlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQ0KICAgICsJTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4NCiAgICArCQ0KICAgICsJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KICAgICsJTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsNCiAgICArCWlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwNCiAgICArCTU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0ENCiAgICAr
DQogICAgZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQNCiAgICBu
ZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjA5ZjMyNmMNCiAgICAtLS0g
L2Rldi9udWxsDQogICAgKysrIGIvTUFJTlRBSU5FUlMubWQNCiAgICBAQCAtMCwwICsxLDExIEBA
DQogICAgK01haW50YWluZXJzIExpc3QNCiAgICArPT09PT09PT09PT09PT09PQ0KICAgICsNCiAg
ICArRm9yIG5vdGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZl
ciB0byBgTUFJTlRBSU5FUlMubWRgIGluDQogICAgK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRv
cnkuDQogICAgKw0KICAgICsJTElCUFNJTUQtVU5JS1JBRlQNCiAgICArCU06CUZlbGlwZSBIdWlj
aSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCiAgICArCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8
dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCiAgICArCUw6CW1pbmlvcy1kZXZl
bEBsaXN0cy54ZW4ub3JnDQogICAgKwlGOiAqDQogICAgZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBi
L1JFQURNRS5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4u
MjU5MDVjMA0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9SRUFETUUubWQNCiAgICBAQCAt
MCwwICsxLDUgQEANCiAgICArbGlicHNpbWQgZm9yIFVuaWtyYWZ0DQogICAgKz09PT09PT09PT09
PT09PT09PT0NCiAgICArDQogICAgK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMg
d2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gDQogICAgK3N1YmRpcmVjdG9y
eSBvZiB0aGUgbWFpbiB1bmlrcmFmdCByZXBvc2l0b3J5Lg0KICAgIC0tIA0KICAgIDIuMjEuMA0K
ICAgIA0KICAgIA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:13:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:13: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 1hhAMo-0007k6-LM; Sat, 29 Jun 2019 10:13:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lsMZ=U4=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hhAMn-0007k1-7s
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:13:57 +0000
X-Inumbo-ID: 99fff753-9a56-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 99fff753-9a56-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 10:13:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id ED325F2023;
 Sat, 29 Jun 2019 12:13:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id QDcGdhVCyjlH; Sat, 29 Jun 2019 12:13:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C0833F2022;
 Sat, 29 Jun 2019 12:13:48 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Sat, 29 Jun 2019 12:13:48
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 1/3] Add .gitignore
Thread-Index: AQHVK49MmdllwiLWLEaB6WzQyEvfbKayb46A
Date: Sat, 29 Jun 2019 10:13:47 +0000
Message-ID: <C9FEBD82-70CD-4293-A53D-9524123E0DE4@neclab.eu>
References: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625195038.13082-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195038.13082-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.202]
Content-ID: <37817F8AD6F6B74682F6A30D442845F2@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMjUuMDYuMTksIDIxOjUwLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9h
bmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQogICAgLS0tDQogICAgIC5naXRpZ25vcmUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysr
KysNCiAgICAgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IC5naXRpZ25vcmUNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBi
Ly5naXRpZ25vcmUNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAu
Ljc1ZDJmZDMNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvLmdpdGlnbm9yZQ0KICAgIEBA
IC0wLDAgKzEsMjcgQEANCiAgICArKi5kZXBlbmQNCiAgICArKi5vDQogICAgKyouYQ0KICAgICsq
LmQNCiAgICArKi5zbw0KICAgICsqLm9yaWcNCiAgICArKi5yZWoNCiAgICArKi5iYWsNCiAgICAr
Ki5zd3ANCiAgICArKn4NCiAgICArLCoNCiAgICArXCMqXCMNCiAgICArLlwjKg0KICAgICtcI18q
XCMNCiAgICArLlwjXyoNCiAgICArIS5naXRpZ25vcmUNCiAgICArLioNCiAgICArDQogICAgKyMg
Z251IGdsb2JhbCBmaWxlcw0KICAgICtHUEFUSA0KICAgICtHUlRBR1MNCiAgICArR1NZTVMNCiAg
ICArR1RBR1MNCiAgICArDQogICAgKyMgY3Njb3BlIGZpbGVzDQogICAgK2NzY29wZS4qDQogICAg
K25jc2NvcGUuKg0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:15:21 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:15:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hhAO8-0007lz-Pq; Sat, 29 Jun 2019 10:15:20 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lsMZ=U4=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hhAO7-0007lu-Ur
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:15:19 +0000
X-Inumbo-ID: cafa2079-9a56-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cafa2079-9a56-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 10:15:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 33B581053A9;
 Sat, 29 Jun 2019 12:15:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hXfGFcwYWRnZ; Sat, 29 Jun 2019 12:15:17 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 0F081105285;
 Sat, 29 Jun 2019 12:15:17 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Sat, 29 Jun 2019 12:15:16
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBPSIMD PATCH 3/3] Initial port of psimd on Unikraft
Thread-Index: AQHVK49NQMMsPY0ZeUmPXEcOM6Er+aayb/eA
Date: Sat, 29 Jun 2019 10:15:16 +0000
Message-ID: <E0C73518-D2C0-43F1-AFED-A7F9985CC460@neclab.eu>
References: <20190625195038.13082-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625195038.13082-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195038.13082-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.202]
Content-ID: <1B87B229DC5C4C4D892A7A80BBD15592@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBPSIMD PATCH 3/3] Initial port of
 psimd 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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMjUuMDYuMTksIDIxOjUwLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9h
bmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIGlzIG91ciBp
bml0aWFsIHBvcnQgb2YgcHNpbWQgdG8gVW5pa3JhZnQgYXMgYW4gZXh0ZXJuYWwgbGlicmFyeS4N
CiAgICBUaGUgaW50ZWwtaW50cmluc2ljcyBsaWJyYXJ5IGlzIHJlcXVpcmVkLiBXaGVuIGFkZGlu
ZyB0aGUgbGlicmFyeSB0bw0KICAgIHRoZSBkZXBlbmRlbmN5IGxpc3QsIHBzaW1kIHNob3VsZCBz
dGF5IGFmdGVyIGludGVsLWludHJpbnNpY3MuDQogICAgKGUuZy4gLi4uOiQoVUtfTElCUykvaW50
ZWwtaW50cmluc2ljczokKFVLX0xJQlMpL3BzaW1kLi4uKS4NCiAgICANCiAgICBTaWduZWQtb2Zm
LWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIu
cm8+DQogICAgLS0tDQogICAgIENvbmZpZy51ayAgICAgfCAgNSArKysrDQogICAgIE1ha2VmaWxl
LnVrICAgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysNCiAgICAgZXhwb3J0c3ltcy51ayB8ICAxICsNCiAgICAgMyBmaWxlcyBjaGFuZ2VkLCA4
MCBpbnNlcnRpb25zKCspDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsNCiAgICAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrDQogICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBl
eHBvcnRzeW1zLnVrDQogICAgDQogICAgZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51
aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uN2ExNDI5MQ0K
ICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9Db25maWcudWsNCiAgICBAQCAtMCwwICsxLDUg
QEANCiAgICArbWVudWNvbmZpZyBMSUJQU0lNRA0KICAgICsgICAgYm9vbCAicHNpbWQgLSBQb3J0
YWJsZSAxMjgtYml0IFNJTUQgaW50cmluc2ljcyINCiAgICArICAgIHNlbGVjdCBMSUJJTlRFTC1J
TlRSSU5TSUNTDQogICAgKyAgICBkZWZhdWx0IG4NCiAgICArDQogICAgZGlmZiAtLWdpdCBhL01h
a2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGlu
ZGV4IDAwMDAwMDAuLjljZmI2MzgNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvTWFrZWZp
bGUudWsNCiAgICBAQCAtMCwwICsxLDc0IEBADQogICAgKyMgIGxpYnBzaW1kIGNvbmZpZyBmaWxl
DQogICAgKyMNCiAgICArIyAgQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJl
aS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPg0KICAgICsjDQogICAgKyMgIENvcHlyaWdodCAoYykg
MjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQogICAgKyMNCiAgICArIyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogICAgKyMgIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICAg
ICsjICBhcmUgbWV0Og0KICAgICsjDQogICAgKyMgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogICAgKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4N
CiAgICArIyAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAgICArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICAgICsjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLg0KICAgICsjICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQg
aG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzDQogICAgKyMgICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQogICAg
KyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uDQogICAgKyMNCiAgICArIyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogICAgKyMgIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUNCiAgICArIyAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCiAgICArIyAgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRQ0KICAgICsjICBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogICAgKyMgIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQogICAgKyMg
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUw0KICAgICsjICBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KICAgICsjICBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQ0KICAgICsjICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KICAgICsjICBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCiAgICArIw0KICAgICsjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVY
VFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLg0KICAgICsNCiAgICArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMNCiAgICArIyBMaWJyYXJ5IHJlZ2lzdHJhdGlvbg0KICAgICsjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KICAgICskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnBzaW1kLCQoQ09O
RklHX0xJQlBTSU1EKSkpDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAg
ICsjIFNvdXJjZXMNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArTElCUFNJTURf
VkVSU0lPTj1tYXN0ZXINCiAgICArTElCUFNJTURfVVJMPWh0dHBzOi8vZ2l0aHViLmNvbS9NYXJh
dHlzemN6YS9wc2ltZC9hcmNoaXZlL21hc3Rlci56aXANCiAgICArTElCUFNJTURfUEFUQ0hESVI9
JChMSUJQU0lNRF9CQVNFKS9wYXRjaGVzDQogICAgKyQoZXZhbCAkKGNhbGwgZmV0Y2gsbGlicHNp
bWQsJChMSUJQU0lNRF9VUkwpKSkNCiAgICArDQogICAgKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
DQogICAgKyMgSGVscGVycw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICtMSUJQ
U0lNRF9TVUJESVI9cHNpbWQtbWFzdGVyDQogICAgK0xJQlBTSU1EX1NSQz0kKExJQlBTSU1EX09S
SUdJTikvJChMSUJQU0lNRF9TVUJESVIpDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIw0KICAgICsjIExpYnJhcnkgaW5jbHVkZXMNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMNCiAgICArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlBTSU1EKSArPSAtSSQoTElCUFNJTURfU1JD
KS9pbmNsdWRlDQogICAgK0NJTkNMVURFUy0kKENPTkZJR19MSUJQU0lNRCkgKz0gLUkkKExJQlBT
SU1EX0JBU0UpL2luY2x1ZGUNCiAgICArQ1hYSU5DTFVERVMtJChDT05GSUdfTElCUFNJTUQpICs9
IC1JJChMSUJQU0lNRF9TUkMpL2luY2x1ZGUNCiAgICArQ1hYSU5DTFVERVMtJChDT05GSUdfTElC
UFNJTUQpICs9IC1JJChMSUJQU0lNRF9CQVNFKS9pbmNsdWRlDQogICAgKw0KICAgICsjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIw0KICAgICsjIEdsb2JhbCBmbGFncw0KICAgICsjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIw0KICAgICsjIFN1cHByZXNzIHNvbWUgd2FybmluZ3MgdG8gbWFrZSB0aGUgYnVp
bGQgcHJvY2VzcyBsb29rIG5lYXRlcg0KICAgICtTVVBQUkVTU19GTEFHUyArPSAtV25vLXVudXNl
ZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUgLVduby1ub25udWxsCVwNCiAgICArLVdu
by11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJlbCAtV25vLWNoYXItc3Vi
c2NyaXB0cwkJXA0KICAgICstV25vLXVudXNlZC1mdW5jdGlvbiAtV25vLW1pc3NpbmctZmllbGQt
aW5pdGlhbGl6ZXJzIC1Xbm8tdW5pbml0aWFsaXplZAkJXA0KICAgICstV25vLWFycmF5LWJvdW5k
cyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQt
dmFsdWUJXA0KICAgICstV25vLXVudXNlZC1tYWNyb3MgLVduby1wYXJlbnRoZXNlcyAtV25vLWlt
cGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uCQlcDQogICAgKy1Xbm8tbWlzc2luZy1icmFjZXMg
LVduby1lbmRpZi1sYWJlbHMgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJXA0KICAgICst
V25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1Xbm8tdHlwZS1saW1pdHMgLVduby1z
aWduLWNvbXBhcmUNCiAgICArTElCUFNJTURfQ0ZMQUdTLXkgICAgKz0gICQoU1VQUFJFU1NfRkxB
R1MpDQogICAgK0xJQlBTSU1EX0NYWEZMQUdTLXkgICAgKz0gICQoU1VQUFJFU1NfRkxBR1MpDQog
ICAgKw0KICAgIGRpZmYgLS1naXQgYS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51aw0KICAg
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uNjIxZTk0Zg0KICAgIC0t
LSAvZGV2L251bGwNCiAgICArKysgYi9leHBvcnRzeW1zLnVrDQogICAgQEAgLTAsMCArMSBAQA0K
ICAgICtub25lDQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:21:30 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:21: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 1hhAU6-0008Qn-9Q; Sat, 29 Jun 2019 10:21:30 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhAU5-0008Qi-Ag
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:21:29 +0000
X-Inumbo-ID: a754c077-9a57-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id a754c077-9a57-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 10:21:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CA350F2023;
 Sat, 29 Jun 2019 12:21:26 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id jfDrS0CTYO0i; Sat, 29 Jun 2019 12:21:26 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A3B67F2022;
 Sat, 29 Jun 2019 12:21:22 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 12:21:22
 +0200
To: <andrei.gogonea09@gmail.com>, <minios-devel@lists.xen.org>
References: <20190629095914.15572-1-andrei.gogonea09@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <062f8729-c89e-e917-81eb-bcc367e58745@neclab.eu>
Date: Sat, 29 Jun 2019 12:21:21 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190629095914.15572-1-andrei.gogonea09@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukargparse: Fix argparse.c
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Content-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>

T3VoLCBJIGp1c3Qgbm90aWNlZCB0aGF0IHdlIHdlcmVuJ3QgaGFuZGxpbmcgdGhlIG1heGxlbiBh
cmd1bWVudCBpbiB0aGUgCm5ldyBsZWZ0X3NoaWZ0IG9wZXJhdGlvbi4gV2Ugd2lsbCBwcm9kdWNl
IGEgdjIuCgpUaGFua3MsCgpTaW1vbgoKT24gMjkuMDYuMTkgMTE6NTksIGFuZHJlaS5nb2dvbmVh
MDlAZ21haWwuY29tIHdyb3RlOgo+IEZyb206IEFuZHJlaSBHb2dvbmVhIDxhbmRyZWkuZ29nb25l
YTA5QGdtYWlsLmNvbT4KPiAKPiBNb2RpZnkgYXJncGFyc2UuYyB0byBwYXJzZSBjb3JyZWN0bHkg
YXJndW1lbnRzIHN0b3JlZCB3aXRoaW4gcXVvdGVzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHJl
aSBHb2dvbmVhIDxhbmRyZWkuZ29nb25lYTA5QGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBT
aW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgIGxpYi91a2Fy
Z3BhcnNlL2FyZ3BhcnNlLmMgfCAyNSArKysrKysrKysrKysrKysrKysrKystLS0tCj4gICAxIGZp
bGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t
Z2l0IGEvbGliL3VrYXJncGFyc2UvYXJncGFyc2UuYyBiL2xpYi91a2FyZ3BhcnNlL2FyZ3BhcnNl
LmMKPiBpbmRleCAyMGZkOTQ0NS4uYjllMjhmMTggMTAwNjQ0Cj4gLS0tIGEvbGliL3VrYXJncGFy
c2UvYXJncGFyc2UuYwo+ICsrKyBiL2xpYi91a2FyZ3BhcnNlL2FyZ3BhcnNlLmMKPiBAQCAtMzYs
NiArMzYsMTUgQEAKPiAgICNpbmNsdWRlIDx1ay9hcmdwYXJzZS5oPgo+ICAgI2luY2x1ZGUgPHVr
L2Fzc2VydC5oPgo+ICAgCj4gKwo+ICtzdGF0aWMgdm9pZCBsZWZ0X3NoaWZ0KGNoYXIgKmJ1ZikK
PiArewo+ICsJd2hpbGUoKmJ1ZiAhPSAnXDAnKSB7Cj4gKwkJKmJ1ZiA9ICooYnVmICsgMSk7Cj4g
KwkJYnVmKys7Cj4gKwl9Cj4gK30KPiArCj4gICBpbnQgdWtfYXJnbnBhcnNlKGNoYXIgKmFyZ2Is
IF9fc3ogbWF4bGVuLCBjaGFyICphcmd2W10sIGludCBtYXhjb3VudCkKPiAgIHsKPiAgIAlpbnQg
YXJnYyA9IDA7Cj4gQEAgLTY4LDEyICs3NywyMCBAQCBpbnQgdWtfYXJnbnBhcnNlKGNoYXIgKmFy
Z2IsIF9fc3ogbWF4bGVuLCBjaGFyICphcmd2W10sIGludCBtYXhjb3VudCkKPiAgIAkJLyogcXVv
dGVzICovCj4gICAJCWNhc2UgJ1wnJzoKPiAgIAkJY2FzZSAnIic6Cj4gLQkJCWlmIChpbl9xdW90
ZSkgewo+IC0JCQkJaWYgKGluX3F1b3RlID09IGFyZ2JbaV0pCj4gLQkJCQkJaW5fcXVvdGUgPSAn
XDAnOwo+ICsJCQlpZiAoIWluX3F1b3RlKSB7Cj4gKwkJCQlpbl9xdW90ZSA9IGFyZ2JbaV07Cj4g
KwkJCQlsZWZ0X3NoaWZ0KCZhcmdiW2ktLV0pOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQkJ
aWYgKGluX3F1b3RlID09IGFyZ2JbaV0pIHsKPiArCQkJCWluX3F1b3RlID0gJ1wwJzsKPiArCQkJ
CWxlZnRfc2hpZnQoJmFyZ2JbaS0tXSk7Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9Cj4gLQkJCWlu
X3F1b3RlID0gYXJnYltpXTsKPiArCQkJCQo+ICsJCQkKPiArCj4gKwkJCQo+ICAgCQkJLyogRmFs
bCB0aHJvdWdoICovCj4gICAJCWRlZmF1bHQ6Cj4gICAJCQkvKiBhbnkgY2hhcmFjdGVyICovCj4g
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 10:29:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 10:29: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 1hhAbT-00007g-Sr; Sat, 29 Jun 2019 10:29: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=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhAbT-00007b-93
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 10:29:07 +0000
X-Inumbo-ID: b5b2cc7e-9a58-11e9-a9f4-b37aae141615
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b5b2cc7e-9a58-11e9-a9f4-b37aae141615;
 Sat, 29 Jun 2019 10:29:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 54C031053A9;
 Sat, 29 Jun 2019 12:29:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Nqd0FMKutxxK; Sat, 29 Jun 2019 12:29:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 2E11B105285;
 Sat, 29 Jun 2019 12:29:00 +0200 (CEST)
Received: from [10.7.0.197] (10.7.0.197) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 12:28:59
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190629085608.15680-1-cristb@gmail.com>
 <20190629085608.15680-3-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <5b4b52e7-3497-4e58-f3ed-2420f31b50a1@neclab.eu>
Date: Sat, 29 Jun 2019 12:28:59 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190629085608.15680-3-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.197]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/8] lib/uk9p: Add 9P
 transport registration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

SGV5LAoKdGhhbmtzIGEgbG90IGZvciB0aGlzIHBhdGNoLiBJIHN0aWxsIGhhdmUgc29tZSBjb21t
ZW50cyB0byB0aGUgZGVmYXVsdCAKdHJhbnNwb3J0IHNldHRpbmcuIEkgY29tbWVudGVkIGl0IGlu
bGluZS4KClRoYW5rcywKClNpbW9uCgpPbiAyOS4wNi4xOSAxMDo1NiwgQ3Jpc3RpYW4gQmFudSB3
cm90ZToKPiBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIDlQIHRyYW5zcG9ydCByZWdpc3RyYXRp
b24gYW5kIGxvb2t1cCBBUEkuCj4gCj4gVHJhbnNwb3J0cyBhcmUgY29tbXVuaWNhdGlvbiBjaGFu
bmVscyBzdWNoIGFzIHZpcnRpbyBieSB1c2luZyB0aGUKPiB2aXJ0aW8tOXAgZGV2aWNlLCBvciB4
ZW4gcmluZ3MuIFRob3NlIGFyZSB0aGUgZGVmYXVsdCB0cmFuc3BvcnRzCj4gZm9yIHRoZSBLVk0g
YW5kIFhlbiBwbGF0Zm9ybXMgcmVzcGVjdGl2ZWx5LiBIb3dldmVyLCBpbiB0aGUgZnV0dXJlCj4g
b25lIG1pZ2h0IGhhdmUgbXVsdGlwbGUgYXZhaWxhYmxlIHRyYW5zcG9ydHMgZm9yIHRoZSBzYW1l
IHBsYXRmb3JtCj4gYnkgc3VwcG9ydGluZyBUQ1Agb3IgUkRNQS4KPiAKPiBTaWduZWQtb2ZmLWJ5
OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29tPgo+IC0tLQo+ICAgbGliL3VrOXAvOXBk
ZXZfdHJhbnMuYyAgICAgICAgICAgIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Kwo+ICAgbGliL3VrOXAvTWFrZWZpbGUudWsgICAgICAgICAgICAgIHwgIDIgKwo+ICAgbGliL3Vr
OXAvZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgIDMgKysKPiAgIGxpYi91azlwL2luY2x1ZGUv
dWsvOXBkZXZfdHJhbnMuaCB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi91azlwLzlwZGV2X3RyYW5zLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWIvdWs5cC9leHBvcnRzeW1zLnVrCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5j
bHVkZS91ay85cGRldl90cmFucy5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwLzlwZGV2X3Ry
YW5zLmMgYi9saWIvdWs5cC85cGRldl90cmFucy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwMDAwMDAuLjYzNzI4NzY3NjViMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9s
aWIvdWs5cC85cGRldl90cmFucy5jCj4gQEAgLTAsMCArMSw3NiBAQAo+ICsvKiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IENyaXN0
aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAx
OSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoK
PiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICog
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4g
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiAr
ICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4g
QU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPHN0
cmluZy5oPgo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+
Cj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQuaD4KPiArI2luY2x1ZGUgPHVrLzlwZGV2X3RyYW5zLmg+
Cj4gKwo+ICtzdGF0aWMgVUtfTElTVF9IRUFEKHVrXzlwZGV2X3RyYW5zX2xpc3QpOwo+ICsKPiAr
c3RhdGljIHN0cnVjdCB1a185cGRldl90cmFucyAqdWtfOXBkZXZfdHJhbnNfc2F2ZWRfZGVmYXVs
dDsKPiArCj4gK2ludCB1a185cGRldl90cmFuc19yZWdpc3RlcihzdHJ1Y3QgdWtfOXBkZXZfdHJh
bnMgKnRyYW5zKQo+ICt7Cj4gKwlVS19BU1NFUlQodHJhbnMpOwo+ICsJVUtfQVNTRVJUKHRyYW5z
LT5uYW1lKTsKPiArCVVLX0FTU0VSVCh0cmFucy0+YSk7Cj4gKwo+ICsJdWtfbGlzdF9hZGRfdGFp
bCgmdHJhbnMtPl9saXN0LCAmdWtfOXBkZXZfdHJhbnNfbGlzdCk7Cj4gKwlpZiAodHJhbnMtPmlz
X2RlZmF1bHQpCj4gKwkJdWtfOXBkZXZfdHJhbnNfc2F2ZWRfZGVmYXVsdCA9IHRyYW5zOwoKSHVt
LiBJIHdvdWxkIHByZWZlciBwcm92aWRpbmcgYSBzZXR0ZXIgZnVuY3Rpb24gZm9yIHRoZSBkZWZh
dWx0IAp0cmFuc3BvcnQgaW5zdGVhZCBvZiBoYXZpbmcgdGhlICdpc19kZWZhdWx0JyBib29sZWFu
IGluIHRoZSBzdHJ1Y3QuIEl0IAptYXkgZ2V0IGxlc3MgY2xlYXIgYnkganVzdCBzZWVpbmcgdGhl
IEFQSSB3aGF0IGlzIGdvaW5nIG9uIGlmIG11bHRpcGxlIAp0cmFuc3BvcnRzIGFyZSBzZXR0aW5n
IHRoZW1zZWx2ZXMgYXMgZGVmYXVsdCBkdXJpbmcgcmVnaXN0cmF0aW9uLgoKSSB3b3VsZCB0YWtl
IGp1c3QgdGhlIGZpcnN0IHJlZ2lzdHJhdGlvbiBhbmQgdGhlbiB1cGRhdGUgdGhlIApzYXZlZF9k
ZWZhdWx0IHdpdGggb24gYW4gZGVmYXVsdCBzZXR0ZXIgZnVuY3Rpb24uIFdoYXQgZG8geW91IHRo
aW5rPwoKPiArCj4gKwl1a19wcl9pbmZvKCJSZWdpc3RlcmVkIHRyYW5zcG9ydCAlc1xuIiwgdHJh
bnMtPm5hbWUpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgdWtfOXBkZXZf
dHJhbnMgKnVrXzlwZGV2X3RyYW5zX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSkKPiArewo+ICsJ
c3RydWN0IHVrXzlwZGV2X3RyYW5zICp0Owo+ICsKPiArCXVrX2xpc3RfZm9yX2VhY2hfZW50cnko
dCwgJnVrXzlwZGV2X3RyYW5zX2xpc3QsIF9saXN0KSB7Cj4gKwkJaWYgKCFzdHJjbXAodC0+bmFt
ZSwgbmFtZSkpCj4gKwkJCXJldHVybiB0Owo+ICsJfQo+ICsKPiArCXJldHVybiBOVUxMOwo+ICt9
Cj4gKwo+ICtzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnVrXzlwZGV2X3RyYW5zX2RlZmF1bHQodm9p
ZCkKPiArewo+ICsJcmV0dXJuIHVrXzlwZGV2X3RyYW5zX3NhdmVkX2RlZmF1bHQ7Cj4gK30KCklm
IHlvdSBhZGQgYSB1a185cGRldl90cmFuc19zZXRfZGVmYXVsdCgpLCBJIHdvdWxkIHByZWZlciBj
YWxsaW5nIHRoaXMgCm9uZSB0aGVuIHVrXzlwZGV2X3RyYW5zX2dldF9kZWZhdWx0KCkuCgo+IGRp
ZmYgLS1naXQgYS9saWIvdWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCj4g
aW5kZXggZmE3NTQ0NDA1OThjLi5iMTA3MWEwZTdkM2MgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrOXAv
TWFrZWZpbGUudWsKPiArKysgYi9saWIvdWs5cC9NYWtlZmlsZS51awo+IEBAIC0yLDMgKzIsNSBA
QCAkKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVrOXAsJChDT05GSUdfTElCVUs5UCkpKQo+ICAg
Cj4gICBDSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChMSUJVSzlQX0JBU0UpL2lu
Y2x1ZGUKPiAgIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLOVApCQkrPSAtSSQoTElCVUs5UF9C
QVNFKS9pbmNsdWRlCj4gKwo+ICtMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXBk
ZXZfdHJhbnMuYwo+IGRpZmYgLS1naXQgYS9saWIvdWs5cC9leHBvcnRzeW1zLnVrIGIvbGliL3Vr
OXAvZXhwb3J0c3ltcy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw
MDAwLi40NWY0ODdkYTJmZmYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3VrOXAvZXhwb3J0
c3ltcy51awo+IEBAIC0wLDAgKzEsMyBAQAo+ICt1a185cGRldl90cmFuc19yZWdpc3Rlcgo+ICt1
a185cGRldl90cmFuc19ieV9uYW1lCj4gK3VrXzlwZGV2X3RyYW5zX2RlZmF1bHQKPiBkaWZmIC0t
Z2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oIGIvbGliL3VrOXAvaW5jbHVk
ZS91ay85cGRldl90cmFucy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
MDAwMDAuLjdiNjY0NWZiNWU4NAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWs5cC9pbmNs
dWRlL3VrLzlwZGV2X3RyYW5zLmgKPiBAQCAtMCwwICsxLDk2IEBACj4gKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogQ3Jpc3Rp
YW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5
LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+
ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiAr
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsg
Kgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBB
TlkgV0FZLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19VS185UERFVl9UUkFOU19fCj4gKyNkZWZp
bmUgX19VS185UERFVl9UUkFOU19fCj4gKwo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ICsjaW5j
bHVkZSA8dWsvY29uZmlnLmg+Cj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArZXh0ZXJuICJD
IiB7Cj4gKyNlbmRpZgo+ICsKPiArLyoqIEEgc3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYSB0
cmFuc3BvcnQuICovCj4gK3N0cnVjdCB1a185cGRldl90cmFucyB7Cj4gKwkvKgo+ICsJICogVHJh
bnNwb3J0IG5hbWUgKGUuZy4gInZpcnRpbyIsICJ4ZW4iKS4gVGhpcyBmaWVsZCBpcyByZXNlcnZl
ZCBmb3IKPiArCSAqIGZ1dHVyZSB1c2UsIHdoZW4gbXVsdGlwbGUgdHJhbnNwb3J0IG9wdGlvbnMg
YXJlIGF2YWlsYWJsZSBvbiB0aGUKPiArCSAqIHNhbWUgcGxhdGZvcm0sIHN1Y2ggYXMgUkRNQSBv
ciBUQ1AsIGluIGFkZGl0aW9uIHRvIHRoZSBwbGF0Zm9ybQo+ICsJICogc3BlY2lmaWMgdHJhbnNw
b3J0Lgo+ICsJICovCj4gKwljb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Km5hbWU7Cj4gKwkvKiBDYW4gdGhlIHRyYW5zcG9ydCBiZSB1c2VkIGFzIGEgZGVmYXVsdCBvbmU/
ICovCj4gKwlib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmYXVs
dAoKU2VlIG15IGNvbW1lbnRzIGFoZWFkIHJlZ2FyZGluZyB0aGlzIGJvb2xlYW4uIEkgd291bGQg
bGlrZSB0byBoYXZlIGEgCm1vcmUgZXhwbGljaXQgY29udHJvbCBvdmVyIHNldHRpbmcgYSBkZWZh
dWx0IHRyYW5zcG9ydCByYXRoZXIgdGhlbiB0aGUgCmxpYnJhcnkgZGVjaWRpbmcgd2hhdCB0byBk
by4KCj4gKwkvKiBBbGxvY2F0b3IgdXNlZCBmb3IgZGV2aWNlcyB3aGljaCB1c2UgdGhpcyB0cmFu
c3BvcnQgbGF5ZXIuICovCj4gKwlzdHJ1Y3QgdWtfYWxsb2MgICAgICAgICAgICAgICAgICAgICAg
ICAgKmE7Cj4gKwkvKiBAaW50ZXJuYWwgRW50cnkgaW4gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHRy
YW5zcG9ydHMuICovCj4gKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkICAgICAgICAgICAgICAgICAgICAg
X2xpc3Q7Cj4gK307Cj4gKwo+ICsvKioKPiArICogQWRkcyBhIHRyYW5zcG9ydCB0byB0aGUgYXZh
aWxhYmxlIHRyYW5zcG9ydHMgbGlzdCBmb3IgVW5pa3JhZnQgOVAgRGV2aWNlcy4KPiArICogVGhp
cyBzaG91bGQgYmUgY2FsbGVkIG9uY2UgcGVyIGRyaXZlciAob25jZSBmb3IgdmlydGlvLCBvbmNl
IGZvciB4ZW4sIGV0Yy4pLgo+ICsgKgo+ICsgKiBAcGFyYW0gdHJhbnMKPiArICogICBQb2ludGVy
IHRvIHRoZSB0cmFuc3BvcnQgc3RydWN0dXJlLgo+ICsgKiBAcmV0dXJuCj4gKyAqICAgLSAoMCk6
IFN1Y2Nlc3NmdWwuCj4gKyAqICAgLSAoPCAwKTogRmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSB0cmFu
c3BvcnQgbGF5ZXIuCj4gKyAqLwo+ICtpbnQgdWtfOXBkZXZfdHJhbnNfcmVnaXN0ZXIoc3RydWN0
IHVrXzlwZGV2X3RyYW5zICp0cmFucyk7Cj4gKwo+ICsvKioKPiArICogTG9va3MgdXAgYSB0cmFu
c3BvcnQgbGF5ZXIgYnkgaXRzIG5hbWUuCj4gKyAqCj4gKyAqIEBwYXJhbSBuYW1lCj4gKyAqICAg
VGhlIHRyYW5zcG9ydCBsYXllciBuYW1lLgo+ICsgKiBAcmV0dXJuCj4gKyAqICAgVGhlIDlQIHRy
YW5zcG9ydCB3aXRoIHRoZSBnaXZlbiBuYW1lLCBvciBOVUxMIGlmIG1pc3NpbmcuCj4gKyAqLwo+
ICtzdHJ1Y3QgdWtfOXBkZXZfdHJhbnMgKnVrXzlwZGV2X3RyYW5zX2J5X25hbWUoY29uc3QgY2hh
ciAqbmFtZSk7Cj4gKwo+ICsvKioKPiArICogR2V0cyB0aGUgZGVmYXVsdCB0cmFuc3BvcnQgbGF5
ZXIuCj4gKyAqCj4gKyAqIEByZXR1cm4KPiArICogICBUaGUgZGVmYXVsdCA5UCB0cmFuc3BvcnQs
IG9yIE5VTEwgaWYgbWlzc2luZy4KPiArICovCj4gK3N0cnVjdCB1a185cGRldl90cmFucyAqdWtf
OXBkZXZfdHJhbnNfZGVmYXVsdCh2b2lkKTsKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9
Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9fVUtfOVBERVZfVFJBTlNfXyAqLwo+IAoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 11:12:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 11:12: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 1hhBHt-0003eT-64; Sat, 29 Jun 2019 11:12:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhBHr-0003eI-G1
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 11:12:55 +0000
X-Inumbo-ID: d6aa3bf8-9a5e-11e9-8980-bc764e045a96
Received: from mail-wr1-x430.google.com (unknown [2a00:1450:4864:20::430])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d6aa3bf8-9a5e-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 11:12:53 +0000 (UTC)
Received: by mail-wr1-x430.google.com with SMTP id c2so8800542wrm.8
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 04:12:53 -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=eqepqV0xxnmpFKD6HlZpNU5fB3pxGWSatqr3MA07ewQ=;
 b=JDAVNQNTvEpZwI5alWbzS+PVTYubnau2a8QOv17PQkdp6AI+k3Is1gBhvG2dWd9Qid
 LJmiYoYFnvbTZW1yDOS2Dnk5dv3B9/yLoSUE+afKb6wPzWRjHWRr6lY4sCzaPcjWXXAB
 bmhNb+8W6VNiO4iLgqv1QIT0DFgjOQYDuFnq20T147fnQFlCuup05p1MbddPmJhkC6Vm
 MWy929C+84vvIwZmfsUS2xEvndpTzEVOy6SvouYvAcx6Z8ZVa4mccgJA9kRV/ye+P9xe
 yaYpVZry8uIOxoP1V1SLdHB16PzlU2+qxhx8bqilRGKaS27YKpv/Ll88j1eUwNPkNoc3
 04TA==
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=eqepqV0xxnmpFKD6HlZpNU5fB3pxGWSatqr3MA07ewQ=;
 b=r5xdUdtYB8oQg2PcbuhGcm7CjjaPTGjA//aD0QWStCfA7s2VESCMjFNJHCTG/pm/2X
 HpW8bb/WgP+Pi1DKfsHe+TnHVTSwKsO/o92rejBywDZPJrcFrV/gBp+F9BdAmCA5YQx8
 iDgYN1VbXTWFlmvf3O1PCGVTf7m+d5esVzNUU0QwPuTW1gWYejFFS+m0scByoEkQRCwr
 IZiuTA+l8Z/aPeTq5hr1POYEoKYrH0+aGrCeAup+BFXXdWaWVznquhzujILXauK7r8Fw
 837U2bYMTHfEJ63MIYfV23oy2a0JZE2Wmqcju/3FnZ6Y+baApWJUg6a59xaPwRDlS8Op
 XtIQ==
X-Gm-Message-State: APjAAAVU2b2eGHd+RJUTZmBTLUOoTbrqce+IkkYWtNJcNHDT6bds3rda
 ittnus9yHEQoPmmctdMpgDoe7mCJ6x0=
X-Google-Smtp-Source: APXvYqxk1iu9aDqQ5YoIundTI7duyrZ1VZ+ao1yt4BehJSeAdA1yhpZ55s90U2Ftx/+dDoWXZTc2Mw==
X-Received: by 2002:adf:cd8c:: with SMTP id q12mr11936801wrj.103.1561806772486; 
 Sat, 29 Jun 2019 04:12:52 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.103])
 by smtp.gmail.com with ESMTPSA id w23sm4888619wmi.45.2019.06.29.04.12.51
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 04:12:52 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 14:12:45 +0300
Message-Id: <20190629111249.18329-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT VFS PATCH v2 0/4] VFSCORE fixes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

VGhpcyBwYXRjaCBzZXJpZXMgZml4ZXMgdmZzY29yZSBkZW50cnkgcmVmZXJlbmNpbmcgaXNzdWVz
LAp2ZnNjb3JlX2ZpbGUgY2xvc2luZyBhbmQgZXhwb3NlcyBkZW50cnkgYW5kIHZub2RlIGZ1bmN0
aW9ucwp0aGF0IG1pZ2h0IGJlIG5lZWRlZCBmb3IgZmlsZSBzeXN0ZW0gYWJzdHJhY3Rpb25zLgoK
TWloYWkgUG9nb25hcnUgKDQpOgogIEZpeCBkZW50cnkgcmVmZXJlY2luZyBhbmQgZmlsZSBjbG9z
aW5nCiAgQ2hlY2sgZm9yIE5VTEwgcmVmZXJlbmNlIG9uIHZmc2NvcmVfcHV0X2ZkKCkKICBBZGQg
YXNzZXJ0cyB0byBmZHJvcCgpCiAgRXhwb3NlIGRlbnRyeSBjcmVhdGlvbi9kZWxldGlvbiBhbmQg
dm5vZGUgY3JlYXRpb24KCiBsaWIvdmZzY29yZS9leHBvcnRzeW1zLnVrICAgICAgICAgICAgfCAg
MyArKysKIGxpYi92ZnNjb3JlL2ZkLmMgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKy0K
IGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgICAgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKysr
KysrKysrLS0tLS0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgICAgICAgICAgICAgICB8ICA3ICsr
KystLS0KIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8ICA3ICsrKysrKysK
IGxpYi92ZnNjb3JlL3N5c2NhbGxzLmMgICAgICAgICAgICAgICB8ICAzICsrKwogbGliL3Zmc2Nv
cmUvdmZzLmggICAgICAgICAgICAgICAgICAgIHwgIDYgLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQs
IDQzIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKLS0gCjIuMTEuMAoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 11:12:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 11:12: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 1hhBHu-0003eo-9I; Sat, 29 Jun 2019 11:12:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhBHt-0003eS-7b
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 11:12:57 +0000
X-Inumbo-ID: d7bebbb7-9a5e-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d7bebbb7-9a5e-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 11:12:55 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id v14so8817501wrr.4
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 04:12: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:in-reply-to:references;
 bh=T5IZ6Rk8sQiabwTFb4PTmYhXs8bfI4HAxUybfXHgBjc=;
 b=pwEIW9UyHBA5eBgq+XbsPXgIOZ1b4eC53kvarWSXP6uv/MVnINOS+TliHAdaXmxuBj
 nz3VRwNJQbf16tjFTJURnQ31v5WeEMa9z/oexm07qzzPrsa8kKU2CIruzN1dPyU5NSP5
 BTezSxOMyoXy8emu/wkE1bI1HhO9HOjCWTcAiZmU70VEEcMB51854O18tqRKLbyMFKSW
 3pHRMYg0d9n7KR6vgf3tUe9hH9+uE1TV7GZ7JhPIVstdi4Emo/NQOWlhBF5FzxF1EKU5
 +hfyL8OHcoNiRiCRZNZU/e4CBuAZN40SAqddLle1Hi95bm5AfNgl/1Eufa3bCtfuAzDF
 Hunw==
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=T5IZ6Rk8sQiabwTFb4PTmYhXs8bfI4HAxUybfXHgBjc=;
 b=VRsM0U9sKm/WoJWPwtIjF2ePKC6bBQngXxHrWz5skB9bMPeO8tYSzzu4cXDZPJYBRB
 Ao+6CAul6qOYEVRd9LlusZEGNQ9nO289dN/geUSRoQUoGluTqjVTiqRwn5PQbM195BwH
 8TqX4wusG3yAR3vVhhhIxr3HBBlYnPr6X2MbZbu7nc0s6nKwwsVAbzfW7mpydQG2sNSw
 ZXbX4eUDp5piuXbX9IkglyqXyGmdnxDOQs8HHj3PBxEPWssc30tLwnHiumcEJEeqR9kn
 giR+/egPR9SYS8CIUSwD2AW18dhSVUu5drbe2fZwCavwbXYCadYAsW6aZwCPNPqVH/ml
 A4bg==
X-Gm-Message-State: APjAAAVJ42zVrICCOp8UdeRCPBPjWO+Y51YD4VTd1SNJLTH9xD1/C//m
 fncAJhczLvEZtj3eP7IlOy5LHc8AFnE=
X-Google-Smtp-Source: APXvYqxT8fV6UJK1dXdZ+5sxviACFpJzCqHhRB5m9QK7brTMilF6LVBCVhuGuYn1r56mbZyv/X4Cdg==
X-Received: by 2002:adf:ca0f:: with SMTP id o15mr2254982wrh.135.1561806774315; 
 Sat, 29 Jun 2019 04:12:54 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.103])
 by smtp.gmail.com with ESMTPSA id w23sm4888619wmi.45.2019.06.29.04.12.53
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 04:12:54 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 14:12:47 +0300
Message-Id: <20190629111249.18329-3-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629111249.18329-1-pogonarumihai@gmail.com>
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH v2 2/4] Check for NULL reference
 on vfscore_put_fd()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

U2luY2Ugd2UgY2FuIGFsbG9jYXRlIGEgZmQgd2l0aG91dCBhc3NpZ25pbmcgYQp2ZnNjb3JlX2Zp
bGUgd2UgbXVzdCBwcm90ZWN0IGFnYWluc3QgTlVMTCBwb2ludGVycy4KCkFuIGV4YW1wbGUgaXMg
dGhlIExXSVAgc29ja19mZF9hbGxvYyBmdW5jdGlvbiBmcm9tIHNvY2tldHMuYwp3aGljaCBmaXJz
dGx5IHJlc2VydmVzIGEgZmlsZSBkZXNjcmlwdG9yIGJ5IGNhbGxpbmcgdmZzY29yZV9hbGxvY19m
ZAphbmQsIG9uIGZhaWx1cmUsIGNhbGxzIHZmc2NvcmVfcHV0X2ZkLiBCdXQgdGhlIGZhaWx1cmUg
bWlnaHQgb2NjdXIKYmVmb3JlIGFzc29jaWF0aW5nIGFuIGFjdHVhbCB2ZnNjb3JlX2ZpbGUgd2l0
aCB0aGUgZmQuCgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBn
bWFpbC5jb20+Ci0tLQogbGliL3Zmc2NvcmUvZmQuYyB8IDcgKysrKysrLQogMSBmaWxlIGNoYW5n
ZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpYi92ZnNj
b3JlL2ZkLmMgYi9saWIvdmZzY29yZS9mZC5jCmluZGV4IGY4YjI0MDIwLi4wMTAyNWE0NiAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvZmQuYworKysgYi9saWIvdmZzY29yZS9mZC5jCkBAIC04OCw3
ICs4OCwxMiBAQCB2b2lkIHZmc2NvcmVfcHV0X2ZkKGludCBmZCkKIAlmZHRhYmxlLmZpbGVzW2Zk
XSA9IE5VTEw7CiAJdWtwbGF0X2xjcHVfcmVzdG9yZV9pcnFmKGZsYWdzKTsKIAotCWZkcm9wKGZw
KTsKKwkvKgorCSAqIFNpbmNlIHdlIGNhbiBhbGxvYyBhIGZkIHdpdGhvdXQgYXNzaWduaW5nIGEK
KwkgKiB2ZnNmaWxlIHdlIG11c3QgcHJvdGVjdCBhZ2FpbnN0IE5VTEwgcHRyCisJICovCisJaWYg
KGZwKQorCQlmZHJvcChmcCk7CiB9CiAKIGludCB2ZnNjb3JlX2luc3RhbGxfZmQoaW50IGZkLCBz
dHJ1Y3QgdmZzY29yZV9maWxlICpmaWxlKQotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 11:12:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 11:12: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 1hhBHt-0003eY-7i; Sat, 29 Jun 2019 11:12:57 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhBHr-0003eN-Rl
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 11:12:55 +0000
X-Inumbo-ID: d74e87da-9a5e-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d74e87da-9a5e-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 11:12:54 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id u8so11298695wmm.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 04:12: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=XtgK1kVFJMW1GRvVURJfEhusk9HIbub+pjKG/BB+x24=;
 b=IeIQeXxZDAPM1r8Qlp7OjEeFon2QpkSQibPPF4QIo4AZfQYThZj/0c6NykeO6nYPFB
 aXBPz3ZSyLvM2vDzQCnapLOTSBUBq1YoIqTkETwNRApg+O8qCRrseccxYK0LIfDthod8
 Uk0M4mCkYlBDwchKMafsCW1o5K7Q0/Jm/5mGNsM+Ai/fkqBBJ1SPXJb5xXI4EirWSHZi
 vKpigxyhmUqCsBqHhFL55NNW/n7BJ3JnfXQfLIrtOitjMi+oMEr58KV14tDirP3i8VZX
 VTdhfCIS1Zu+lnaRAktHcp4TA5cw1PXjCruK+i9YDxBkLzHhJ01BKMS/m/kR3mRvPnVN
 jHcA==
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=XtgK1kVFJMW1GRvVURJfEhusk9HIbub+pjKG/BB+x24=;
 b=A6arx5UJStyr1brAE6pkjijcJFZFwXs2XZMX65JvZT7YzVqd93vwMjkuBpgU2+Kk1c
 qTUwbsc8ZUKyMmUTso13mk+OLbec4NVBq0F1vOV/uLd0yRheG5qbbk06S6Tip3lz7R27
 rZqaEGoqxCN+wB1n+7hpEXHVTtq/njYyX0GQnzrLnWwLpuvBwxkmRfiZa+GDxWBqpmUZ
 /RCHBs9btuv2WiI9x2rLPQ2SSPN/9Y/EGB6prdEbaSEt/7DCUNMRZi6LxCcCr/McMwdl
 SfeUadWW2g89cR+RfdtnFX5dpjjXcY3a8/FCaeKvDFK87Hnf+0i5zjaDDcYvAj07XyQz
 AzxQ==
X-Gm-Message-State: APjAAAWEpxXS4OzG5/GrXLq23sVyGC7aYyBFfJr7d7ZsYt7lRPlryopW
 k/HaEdZgIqlN5MGXPQfX1nsV6TUX6M8=
X-Google-Smtp-Source: APXvYqx+4/md4aLXuOLmsOsVCypxqhbPqqZmsbteHoQboyZN6AiGCraA18ekzz4oDKEivqQbU9fdHw==
X-Received: by 2002:a1c:e28b:: with SMTP id z133mr9669859wmg.136.1561806773516; 
 Sat, 29 Jun 2019 04:12:53 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.103])
 by smtp.gmail.com with ESMTPSA id w23sm4888619wmi.45.2019.06.29.04.12.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 04:12:53 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 14:12:46 +0300
Message-Id: <20190629111249.18329-2-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629111249.18329-1-pogonarumihai@gmail.com>
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH v2 1/4] Fix dentry referecing
 and file closing
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

SW5jcmVhc2UgdGhlIHJlZmNvdW50IG9mIHRoZSB2ZnNjb3JlX2ZpbGUncyBkZW50cnkgd2hlbiBv
cGVuaW5nIGl0LgpUaGlzIGlzIHRoZSBPU3YgYmVoYXZpb3VyIHNpbmNlIGVhY2ggdmZzY29yZV9m
aWxlIGhhcyBhbiBpbnRydXNpdmVfcHRyCnJlZiB0byBpdHMgZGVudHJ5LCB3aGljaCBpbmNyZWFz
ZXMgZGVudHJ5J3MgcmVmY291bnQgb24gY3JlYXRpb24gYW5kCmRlY3JlYXNlcyBkZW50cnkncyBy
ZWZjb3VudCBvbiBkZWxldGlvbi4gV2UgbXVzdCBpbmNyZWFzZSB0aGUgZGVudHJ5J3MKcmVmY291
bnQgc2luY2Ugd2UgbWlnaHQgZW5kIHVwIHdpdGggZmlsZXMgcG9pbnRpbmcgdG8gZGVsZXRlZCBk
ZW50cmllcywKaWYgdGhlIGFjdHVhbCBmaWxlL2RpcmVjdG9yeSB0aGUgZGVudHJ5IHJlZmVycyBn
ZXRzIGRlbGV0ZWQgKHNvIHRoZQpkZW50cnkncyByZWZjb3VudCBoaXRzIDAgYW5kIGl0IGdldHMg
ZnJlZWQpLgoKV2UgbXVzdCBhbHNvIGRlY3JlYXNlIHRoZSByZWZjb3VudCBvZiB0aGUgZGVudHJ5
IG9uIGZpbGUgY2xvc2luZy4KClRoZSBzdGF0ZW1lbnQgIkRlbnRyeSBzdGF5cyBmb3JldmVyIGlu
IHRoZSBkZW50cnkgY2FjaGUuIFVubGVzcyB0aGUKZmlsZS9kaXJlY3RvcnkgaXQgcmVmZXJzIHRv
IGdldHMgZGVsZXRlZC9yZW5hbWVkIiBkb2Vzbid0IGhvbGQgZm9yCmZpbGUgc3lzdGVtcyB0aGF0
IGRvIG5vdCBzYXZlIHRoZWlyIHN0cnVjdHVyZXMgb24gcGVybWFuZW50IG1lZGl1bXMKKGxpa2Ug
TFdJUCdzIHNvY2tldHMgYWJzdHJhY3Rpb24pIHNvIHRoZSBkZW50cnkgcmVmY291bnQgaXMgZXF1
YWwgdG8KdGhlIG51bWJlciBvZiB2ZnNjb3JlX2ZpbGUncyBwb2ludGluZyBhdCBpdCAoc28gdGhl
IGRlbnRyeSBnZXRzCmRlbGV0ZWQgYXMgc29vbiBhcyB0aGUgbGFzdCBmaWxlIGlzIGNsb3NlZCku
CgpSaWdodCBub3cgdGhlIHZmc2NvcmVfZmlsZSBpcyBuZXZlciBmcmVlZCwgZXhjZXB0aW5nIHRo
ZSBMV0lQIHNvY2tldCdzCmZpbGUgd2hpY2ggaXMgZnJlZWQgaW5zaWRlIHNvY2tfbmV0X2Nsb3Nl
IGFsb25nIHdpdGggaXRzIGRlbnRyeSBhbmQKdm5vZGUuIFRoaXMgc2hvdWxkIG5vdCBiZSB0aGUg
ZXhwZWN0ZWQgYmVoYXZpb3VyIGZyb20gYSB1bmRlcmx5aW5nCmZpbGUgc3lzdGVtIChyYW1mcyBw
cm92aWRlcyBhIGdvb2QgZXhhbXBsZSBvZiBleHBlY3RlZCBiZWhhdmlvdXIpLgpBcyBzdWNoLCB3
ZSBtdXN0IGZyZWUgdGhlIHZmc2NvcmVfZmlsZSB3aGVuIGNsb3NpbmcgaXQgYW5kIHJlbGVhc2Ug
aXRzCmRlbnRyeSBzbyB0aGUgZGVudHJ5IGFuZCB2bm9kZSBmcmVlaW5nIHdpbGwgYmUgaGFuZGxl
ZCBieSB2ZnMgYXMgd2VsbC4KClRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBmZHJvcCByZXR1cm4gMCBp
ZiB0aGUgZmlsZSdzIHJlZmNvdW50IGhpdHMKMCBvciByZXR1cm4gMSBvdGhlcndpc2UuIFRoaXMg
aXMgdGhlIE9TdiBiZWhhdmlvdXIgYW5kIHRoZSByZXR1cm4Kb2YgYW4gZXJyb3IgZnJvbSBmZHJv
cCBpcyBuZXZlciBjaGVja2VkLgoKU2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29u
YXJ1bWloYWlAZ21haWwuY29tPgotLS0KIGxpYi92ZnNjb3JlL2ZpbGUuYyAgICAgfCAxOCArKysr
KysrKysrKysrKy0tLS0KIGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgfCAgNyArKysrLS0tCiBsaWIv
dmZzY29yZS9zeXNjYWxscy5jIHwgIDMgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlv
bnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZmlsZS5jIGIv
bGliL3Zmc2NvcmUvZmlsZS5jCmluZGV4IGU1NmYxNmRjLi5lNzYyN2U5NiAxMDA2NDQKLS0tIGEv
bGliL3Zmc2NvcmUvZmlsZS5jCisrKyBiL2xpYi92ZnNjb3JlL2ZpbGUuYwpAQCAtNDIsMTUgKzQy
LDI1IEBACiAKIGludCBmZHJvcChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKIHsKLQlpbnQgcmV0
ID0gMDsKIAlpbnQgcHJldiA9IHVrYXJjaF9kZWMoJmZwLT5mX2NvdW50KTsKIAogCWlmIChwcmV2
ID09IDApCiAJCVVLX0NSQVNIKCJVbmJhbGFuY2VkIGZob2xkL2Zkcm9wIik7CiAKLQlpZiAocHJl
diA9PSAxKQotCQlyZXQgPSB2ZnNfY2xvc2UoZnApOwotCXJldHVybiByZXQ7CisJaWYgKHByZXYg
PT0gMSkgeworCQkvKgorCQkgKiB3ZSBmcmVlIHRoZSBmaWxlIGV2ZW4gaW4gY2FzZSBvZiBhbiBl
cnJvcgorCQkgKiBzbyByZWxlYXNlIHRoZSBkZW50cnkgdG9vCisJCSAqLworCQlpZiAodmZzX2Ns
b3NlKGZwKSAhPSAwKQorCQkJZHJlbGUoZnAtPmZfZGVudHJ5KTsKKworCQlmcmVlKGZwKTsKKwor
CQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKIH0KIHZvaWQgZmhvbGQoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnApCiB7CmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9mb3BzLmMgYi9saWIvdmZz
Y29yZS9mb3BzLmMKaW5kZXggOGY1YzJlMWIuLjBjZWYyYzEyIDEwMDY0NAotLS0gYS9saWIvdmZz
Y29yZS9mb3BzLmMKKysrIGIvbGliL3Zmc2NvcmUvZm9wcy5jCkBAIC01Myw5ICs1MywxMCBAQCBp
bnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQogCWlmIChlcnJvcikKIAkJcmV0
dXJuIGVycm9yOwogCi0JLyogRGVudHJ5IHN0YXlzIGZvcmV2ZXIgaW4gdGhlIGRlbnRyeSBjYWNo
ZS4gVW5sZXNzIHRoZQotCSAqIGZpbGUvZGlyZWN0b3J5IGl0IHJlZmVycyB0byBnZXRzIGRlbGV0
ZWQvcmVuYW1lZCAqLworCS8qIFJlbGVhc2UgdGhlIGRlbnRyeSAqLworCWRyZWxlKGZwLT5mX2Rl
bnRyeSk7CiAJZnAtPmZfZGVudHJ5ID0gTlVMTDsKKwogCXJldHVybiAwOwogfQogCkBAIC0xMDMs
NyArMTA0LDcgQEAgaW50IHZmc193cml0ZShzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCwgc3RydWN0
IHVpbyAqdWlvLCBpbnQgZmxhZ3MpCiAJCWlvZmxhZ3MgfD0gSU9fU1lOQzsKIAogCWlmICgoZmxh
Z3MgJiBGT0ZfT0ZGU0VUKSA9PSAwKQotCSAgICAgICAgdWlvLT51aW9fb2Zmc2V0ID0gZnAtPmZf
b2Zmc2V0OworCQl1aW8tPnVpb19vZmZzZXQgPSBmcC0+Zl9vZmZzZXQ7CiAKIAllcnJvciA9IFZP
UF9XUklURSh2cCwgdWlvLCBpb2ZsYWdzKTsKIAlpZiAoIWVycm9yKSB7CmRpZmYgLS1naXQgYS9s
aWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRleCAzODVk
OTBjMC4uZjk2NjZjNGMgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKKysrIGIv
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtMjA0LDYgKzIwNCw4IEBAIHN5c19vcGVuKGNoYXIg
KnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipmcHAp
CiAJfQogCWZwLT5mX2ZsYWdzID0gZmxhZ3M7CiAKKwkvLyBPU3Ygd2FzIHVzaW5nIGEgaW50cnVz
aXZlX3B0ciB3aGljaCB3YXMgaW5jcmVhc2luZyB0aGUgcmVmY291bnQKKwlkcmVmKGRwKTsKIAkv
LyBjaGFuZ2UgdG8gc3RkOjptb3ZlIG9uY2UgZHAgaXMgYSBkZW50cnlfcmVmCiAJZnAtPmZfZGVu
dHJ5ID0gZHA7CiAJZHAgPSBOVUxMOwpAQCAtMjE0LDYgKzIxNiw3IEBAIHN5c19vcGVuKGNoYXIg
KnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKipmcHAp
CiAJCS8vIE5vdGUgZGlyZWN0IGRlbGV0ZSBvZiBmcCBpbnN0ZWFkIG9mIGZkcm9wKGZwKS4gZnAg
d2FzIG5ldmVyCiAJCS8vIHJldHVybmVkIHNvIGNhbm5vdCBiZSBpbiB1c2UsIGFuZCBiZWNhdXNl
IGl0IHdhc24ndCBvcGVuZWQKIAkJLy8gaXQgY2Fubm90IGJlIGNsb3NlKCllZC4KKwkJZHJlbGUo
ZnAtPmZfZGVudHJ5KTsKIAkJZnJlZShmcCk7CiAJCXJldHVybiBlcnJvcjsKIAl9Ci0tIAoyLjEx
LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 11:12:59 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 11:12: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 1hhBHu-0003eu-Af; Sat, 29 Jun 2019 11:12:58 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhBHt-0003ej-Go
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 11:12:57 +0000
X-Inumbo-ID: d8640502-9a5e-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d8640502-9a5e-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 11:12:56 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id x4so8812032wrt.6
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 04:12:56 -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=3iFUvGqZR/k4I4lm2fqmb4iBomaY4QXQnxZ4/FmLVyY=;
 b=NZ2VkbNi9m0TMxzk3OFhZ+8S7FfzlHT91CJ6pu2GL8Br+XOVOJZmaIep3f02V9QEP+
 aHbUeaWJHJd6GTUGNg9uuHTf18dQZep888eN+ehO+NeLr6gQntJ9hnFM4zmDY0rkc+wE
 WYHoQhqt8fkas/mP2Q4uRNH7TWLdMxk9AWk8AiODqG1/jBgd/7Z0Qxeq7SjutpQtxFH1
 t979uxoOm0h6s8Llfh6UFW0JfCC2y0mAQrcgZIQTViLGaZgcvVM+nSUOcx1rgUcP+Kme
 iuJpg5bBjU5q31f38rrmBgVlioAJUlkJYS1UoaXQ8XJfyCMAGzUH6i9+6b7lmFPOtg4m
 yGMw==
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=3iFUvGqZR/k4I4lm2fqmb4iBomaY4QXQnxZ4/FmLVyY=;
 b=Wxs2zNvBs26uBpcXeLEGFdDuHOJgAdwiUP+irh2QQf8VP9pZOcamtHMCzLi6xeJ6yW
 2/gf4H0gNhZ9QZyRjH6BvpW3PmxtujsK/Ii/P3RndqMByUcuCVqDpDCH7snQe2DbZCEo
 8mwPXymrWaMnNyeCP2fJYPqDXR+wJvp+7UxYB8fuR2EHgZ4gaq7rw2ACczs4cUwLPeZr
 zJ1UKvWzhD9GRSDYXRuEZt2JYmFe/A69ATi7ZNB9tWZBQaavnfxT8rU4ftKfxmzpWB9K
 DzWUWd8ruT8b3pOZAKFiy+b13sPvJLmZnVRlll9Bj6y6us+JTQ8P2sXg0Krg/tqOZNAX
 fOSA==
X-Gm-Message-State: APjAAAWnneIupUwnYROl1gN9iMQTk6qIbjyUlNOg7DO76/TQ+3OcEnKu
 dGcnKYz4hD1W6C/uZq43WzmUCGCFrmA=
X-Google-Smtp-Source: APXvYqxlqLl5WFD9Ubmarpjke4vbQ+QReM9VIGjg2lxFMdhZaOId8yZv7HUPUqXDrvakPJ3FpeJlFw==
X-Received: by 2002:adf:e705:: with SMTP id c5mr11934700wrm.270.1561806775185; 
 Sat, 29 Jun 2019 04:12:55 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.103])
 by smtp.gmail.com with ESMTPSA id w23sm4888619wmi.45.2019.06.29.04.12.54
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 04:12:54 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 14:12:48 +0300
Message-Id: <20190629111249.18329-4-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629111249.18329-1-pogonarumihai@gmail.com>
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH v2 3/4] Add asserts to fdrop()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

V2UgYXJlIGFkZGluZyB0aGUgYXNzZXJ0cyB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIKcmVm
ZXJlbmNlIHJlbGVhc2luZyBmdW5jdGlvbnM6IGRyZWxlLCB2cmVsZS4KClNpZ25lZC1vZmYtYnk6
IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KLS0tCiBsaWIvdmZzY29y
ZS9maWxlLmMgfCA3ICsrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEg
ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZzY29y
ZS9maWxlLmMKaW5kZXggZTc2MjdlOTYuLmJjOGIwZGM4IDEwMDY0NAotLS0gYS9saWIvdmZzY29y
ZS9maWxlLmMKKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCkBAIC00Miw3ICs0MiwxMiBAQAogCiBp
bnQgZmRyb3Aoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApCiB7Ci0JaW50IHByZXYgPSB1a2FyY2hf
ZGVjKCZmcC0+Zl9jb3VudCk7CisJaW50IHByZXY7CisKKwlVS19BU1NFUlQoZnApOworCVVLX0FT
U0VSVChmcC0+Zl9jb3VudCA+IDApOworCisJcHJldiA9IHVrYXJjaF9kZWMoJmZwLT5mX2NvdW50
KTsKIAogCWlmIChwcmV2ID09IDApCiAJCVVLX0NSQVNIKCJVbmJhbGFuY2VkIGZob2xkL2Zkcm9w
Iik7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 11:13:00 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 11:13: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 1hhBHw-0003fr-C6; Sat, 29 Jun 2019 11:13:00 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhBHu-0003f1-Qz
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 11:12:58 +0000
X-Inumbo-ID: d8c7bdd8-9a5e-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d8c7bdd8-9a5e-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 11:12:57 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id u8so11298754wmm.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 04:12:57 -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=lvOysPXqBrsO70QaHu0wToS1J+oR7kgoAbRglSruwV8=;
 b=V9ctJaANJbaWhQIJqoB+Fd5MZAxz3ATk7VLwKXot4cZ73qsgLcO1WoRQEeSPeC3az9
 oj1mDIxD3sMLGRUY0oaJve13T1xDWOyRccf+IQnES17RN8BoBxUVEV1SWk77XkjuhaO9
 Lj59ZCkP1tsTPf+JD/ckBVUCsac3r42TLaNQGr8WNsfcRXVx11noZUv3bjS+G3IJnGqg
 zM2Ewge93LlcWfpoj4NSI13F6Z/kY3jVw4jmfPaNw3Xths0rgOS/YpDSCDhst5r8RpFO
 r9r0pxQkjWINqeO8ZNIl4EpLaZKdwHCN5WcFsBs0HgRuIfzWVYszJTXCnk51VI+eOSpv
 KufQ==
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=lvOysPXqBrsO70QaHu0wToS1J+oR7kgoAbRglSruwV8=;
 b=TApOdaDpifjDNbPofbkgnpLGI1VTtJY46nYTmXG83zv1bhCxZTKT8Nhr2QyZtEWwRn
 5knBOOnjWL3p6G1YQxsVjuaIk17KNE4Y0TKlAQlTVF1jZxr1h6AosQluvyZTbFlVyCsY
 zLG3GKGV3MbTmlxqXW/Z9i5xhzQXVpjG/aH/y0+ZxB0Kd5NpYqwv/DYDK6qBCEMsGwMx
 LwOxum8dDVh/5syKHsZsqlKcs4ZijBIpomGRMCxSx60X0QQjJ5HasCJ2z9GCM/4KGEz5
 1as6VFefKALz2/kMCVGIvdj+fUqb6ZuNYESvM0BEnjGaG0Lsn8xHA85v6GkTyLRVpDeO
 Kzbg==
X-Gm-Message-State: APjAAAXip/vf+vmxS8km6lWN0NOAj1/uXlz0t4fSdtdcvfTj7JlHxY06
 5isLRnCrRKAjx9tonfdmVF9TvMRwr9o=
X-Google-Smtp-Source: APXvYqzdUdci6ymKtdUU+4exTCCXpZMjjL4ZVu5ONMlyPDYHlAQq0rRe08yfrasG6+oHahr4m7VX6w==
X-Received: by 2002:a1c:a1c1:: with SMTP id k184mr11077435wme.81.1561806776006; 
 Sat, 29 Jun 2019 04:12:56 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.103])
 by smtp.gmail.com with ESMTPSA id w23sm4888619wmi.45.2019.06.29.04.12.55
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 04:12:55 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 14:12:49 +0300
Message-Id: <20190629111249.18329-5-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629111249.18329-1-pogonarumihai@gmail.com>
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT VFS PATCH v2 4/4] Expose dentry
 creation/deletion and vnode creation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: Mihai Pogonaru <pogonarumihai@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>

TW92ZSBkZW50cnkgZnVuY3Rpb24gZGVjbGFyYXRpb24gaW5zaWRlIGRlbnRyeS5oIGhlYWRlcgp0
byBiZSBjb25zaXN0ZW50IHdpdGggbm9kZS5oIGFuZCwgc2luY2UgdGhleSByZWZlcgpkZW50cnkg
b3BlcmF0aW9ucywgdGhhdCdzIHdoZXJlIHRoZXkgc2hvdWxkIGxpdmUgYW55d2F5cy4KCkFkZCB0
aGUgZGVudHJ5IGNyZWF0aW9uIGFuZCBkZWxldGlvbiBmdW5jdGlvbnMgYW5kIHRoZQp2bm9kZSBj
cmVhdGlvbiBmdW5jdGlvbiB0byBleHBvcnRzeW1zLgoKU2lnbmVkLW9mZi1ieTogTWloYWkgUG9n
b25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgotLS0KIGxpYi92ZnNjb3JlL2V4cG9ydHN5
bXMudWsgICAgICAgICAgICB8IDMgKysrCiBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVu
dHJ5LmggfCA3ICsrKysrKysKIGxpYi92ZnNjb3JlL3Zmcy5oICAgICAgICAgICAgICAgICAgICB8
IDYgLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBiL2xpYi92ZnNjb3Jl
L2V4cG9ydHN5bXMudWsKaW5kZXggZGE3ZmJhZWEuLjgyMmU2ZWNjIDEwMDY0NAotLS0gYS9saWIv
dmZzY29yZS9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKQEAg
LTc1LDMgKzc1LDYgQEAgcmVhZGxpbmsKIGZhbGxvY2F0ZQogbHNlZWsKIHVrX3N5c2NhbGxfd3Jp
dGV2CitkZW50cnlfYWxsb2MKK2RyZWxlCit2cmVsZQpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Rl
bnRyeS5oCmluZGV4IDg1ZjM3YWI3Li4wYTM4NDAyOCAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUv
aW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29y
ZS9kZW50cnkuaApAQCAtNTQsNCArNTQsMTEgQEAgc3RydWN0IGRlbnRyeSB7CiAJc3RydWN0IHVr
X2xpc3RfaGVhZCBkX2NoaWxkX2xpbms7CiB9OwogCitzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfYWxs
b2Moc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFy
ICpwYXRoKTsKK3N0cnVjdCBkZW50cnkgKmRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwg
Y2hhciAqcGF0aCk7Cit2b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3Qg
ZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpOwordm9pZCBkZW50cnlfcmVtb3ZlKHN0cnVj
dCBkZW50cnkgKmRwKTsKK3ZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5ICpkcCk7Cit2b2lkIGRyZWxl
KHN0cnVjdCBkZW50cnkgKmRwKTsKKwogI2VuZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3Zmcy5oIGIvbGliL3Zmc2NvcmUvdmZzLmgKaW5kZXggZmQ2MGRl
YzcuLmZiNTc0MzVmIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS92ZnMuaAorKysgYi9saWIvdmZz
Y29yZS92ZnMuaApAQCAtMTM0LDEyICsxMzQsNiBAQCBpbnQJIHZmc19kbmFtZV9jb3B5KGNoYXIg
KmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpOwogCiBpbnQJIGZzX25vb3Aodm9p
ZCk7CiAKLXN0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRf
ZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBhdGgpOwotc3RydWN0IGRlbnRyeSAq
ZGVudHJ5X2xvb2t1cChzdHJ1Y3QgbW91bnQgKm1wLCBjaGFyICpwYXRoKTsKLXZvaWQgZGVudHJ5
X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgY2hhciAq
cGF0aCk7Ci12b2lkIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApOwotdm9pZCBkcmVm
KHN0cnVjdCBkZW50cnkgKmRwKTsKLXZvaWQgZHJlbGUoc3RydWN0IGRlbnRyeSAqZHApOwogdm9p
ZCBkZW50cnlfaW5pdCh2b2lkKTsKIAogaW50IHZmc19jbG9zZShzdHJ1Y3QgdmZzY29yZV9maWxl
ICpmcCk7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 11:52:53 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 11:52: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 1hhBuW-0006YR-Dt; Sat, 29 Jun 2019 11:52:52 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhBuV-0006YM-84
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 11:52:51 +0000
X-Inumbo-ID: 69c135cd-9a64-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 69c135cd-9a64-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 11:52:48 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id F1E681053A9;
 Sat, 29 Jun 2019 13:52:46 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id kqvBk1KzQWcB; Sat, 29 Jun 2019 13:52:46 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id CC955105285;
 Sat, 29 Jun 2019 13:52:46 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 13:52:46
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190629085608.15680-1-cristb@gmail.com>
 <20190629085608.15680-4-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <648dfa97-b17d-d210-a68a-6456e7d256f9@neclab.eu>
Date: Sat, 29 Jun 2019 13:52:45 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190629085608.15680-4-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/8] lib/uk9p: Add 9P
 protocol core definitions
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

VGhhbmtzLCB0aGUgcGF0Y2ggbG9va3MgZ29vZC4KClJldmlld2VkLWJ5OiBTaW1vbiBLdWVuemVy
IDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KCk9uIDI5LjA2LjE5IDEwOjU2LCBDcmlzdGlhbiBC
YW51IHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgOVAgcHJvdG9jb2wgY29yZSBkZWZpbml0
aW9ucyBmb3IgdGhlIHN0cnVjdHVyZXMgaXQKPiB1c2VzIGFuZCB0aGUgd2lyZSBmb3JtYXQgcmVx
dWlyZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNv
bT4KPiAtLS0KPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBfY29yZS5oIHwgMjcxICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5nZWQsIDI3
MSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAvaW5jbHVkZS91
ay85cF9jb3JlLmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3Jl
LmggYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwX2NvcmUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xOTdmN2E5NWQxNjgKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvbGliL3VrOXAvaW5jbHVkZS91ay85cF9jb3JlLmgKPiBAQCAtMCwwICsxLDI3MSBAQAo+ICsv
KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1
dGhvcnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHly
aWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiAr
ICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
PiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Cj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1Ig
TU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fVUtfOVBfQ09SRV9f
Cj4gKyNkZWZpbmUgX19VS185UF9DT1JFX18KPiArCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiAr
I2luY2x1ZGUgPHN0ZGludC5oPgo+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDx1
ay9hc3NlcnQuaD4KPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsKPiAr
I2VuZGlmCj4gKwo+ICsvKioKPiArICogRG9jdW1lbnRhdGlvbiBvZiB0aGUgcHJvdG9jb2wgbWF5
IGJlIGZvdW5kIGhlcmU6Cj4gKyAqIGh0dHBzOi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9ydC8K
PiArICovCj4gKwo+ICsvKioKPiArICogOVAgcmVxdWVzdCB0eXBlcy4KPiArICoKPiArICogU291
cmNlOiBodHRwczovL2dpdGh1Yi5jb20vOWZhbnMvcGxhbjlwb3J0L2Jsb2IvbWFzdGVyL2luY2x1
ZGUvZmNhbGwuaAo+ICsgKi8KPiArZW51bSB1a185cF90eXBlIHsKPiArCVVLXzlQX1RWRVJTSU9O
ICAgICAgICAgID0gMTAwLAo+ICsJVUtfOVBfUlZFUlNJT04sCj4gKwlVS185UF9UQVVUSCAgICAg
ICAgICAgICA9IDEwMiwKPiArCVVLXzlQX1JBVVRILAo+ICsJVUtfOVBfVEFUVEFDSCAgICAgICAg
ICAgPSAxMDQsCj4gKwlVS185UF9SQVRUQUNILAo+ICsJVUtfOVBfVEVSUk9SICAgICAgICAgICAg
PSAxMDYsCj4gKwlVS185UF9SRVJST1IsCj4gKwlVS185UF9URkxVU0ggICAgICAgICAgICA9IDEw
OCwKPiArCVVLXzlQX1JGTFVTSCwKPiArCVVLXzlQX1RXQUxLICAgICAgICAgICAgID0gMTEwLAo+
ICsJVUtfOVBfUldBTEssCj4gKwlVS185UF9UT1BFTiAgICAgICAgICAgICA9IDExMiwKPiArCVVL
XzlQX1JPUEVOLAo+ICsJVUtfOVBfVENSRUFURSAgICAgICAgICAgPSAxMTQsCj4gKwlVS185UF9S
Q1JFQVRFLAo+ICsJVUtfOVBfVFJFQUQgICAgICAgICAgICAgPSAxMTYsCj4gKwlVS185UF9SUkVB
RCwKPiArCVVLXzlQX1RXUklURSAgICAgICAgICAgID0gMTE4LAo+ICsJVUtfOVBfUldSSVRFLAo+
ICsJVUtfOVBfVENMVU5LICAgICAgICAgICAgPSAxMjAsCj4gKwlVS185UF9SQ0xVTkssCj4gKwlV
S185UF9UUkVNT1ZFICAgICAgICAgICA9IDEyMiwKPiArCVVLXzlQX1JSRU1PVkUsCj4gKwlVS185
UF9UU1RBVCAgICAgICAgICAgICA9IDEyNCwKPiArCVVLXzlQX1JTVEFULAo+ICsJVUtfOVBfVFdT
VEFUICAgICAgICAgICAgPSAxMjYsCj4gKwlVS185UF9SV1NUQVQsCj4gK307Cj4gKwo+ICsvKioK
PiArICogOVAgdmFsdWVzIG9mIGEgcWlkLnR5cGUuCj4gKyAqCj4gKyAqIFNvdXJjZXM6IGh0dHBz
Oi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9ydC9tYW4vbWFuOS9pbnRyby5odG1sLAo+ICsgKiBo
dHRwOi8vZXJpY3ZoLmdpdGh1Yi5pby85cC1yZmMvcmZjOXAyMDAwLnUuaHRtbC4KPiArICovCj4g
KyNkZWZpbmUgVUtfOVBfUVRESVIgICAgICAgICAgICAgICAweDgwCj4gKyNkZWZpbmUgVUtfOVBf
UVRBUFBFTkQgICAgICAgICAgICAweDQwCj4gKyNkZWZpbmUgVUtfOVBfUVRFWENMICAgICAgICAg
ICAgICAweDIwCj4gKyNkZWZpbmUgVUtfOVBfUVRNT1VOVCAgICAgICAgICAgICAweDEwCj4gKyNk
ZWZpbmUgVUtfOVBfUVRBVVRIICAgICAgICAgICAgICAweDA4Cj4gKyNkZWZpbmUgVUtfOVBfUVRU
TVAgICAgICAgICAgICAgICAweDA0Cj4gKyNkZWZpbmUgVUtfOVBfUVRTWU1MSU5LICAgICAgICAg
ICAweDAyCj4gKyNkZWZpbmUgVUtfOVBfUVRMSU5LICAgICAgICAgICAgICAweDAxCj4gKyNkZWZp
bmUgVUtfOVBfUVRGSUxFICAgICAgICAgICAgICAweDAwCj4gKwo+ICsvKioKPiArICogOVAgcGVy
bWlzc2lvbiBiaXRzLgo+ICsgKgo+ICsgKiBTb3VyY2VzOiBodHRwczovLzlmYW5zLmdpdGh1Yi5p
by9wbGFuOXBvcnQvbWFuL21hbjkvaW50cm8uaHRtbCwKPiArICogaHR0cDovL2VyaWN2aC5naXRo
dWIuaW8vOXAtcmZjL3JmYzlwMjAwMC51Lmh0bWwuCj4gKyAqLwo+ICsjZGVmaW5lIFVLXzlQX0RN
RElSICAgICAgICAgICAgICAgMHg4MDAwMDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNQVBQRU5EICAg
ICAgICAgICAgMHg0MDAwMDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNRVhDTCAgICAgICAgICAgICAg
MHgyMDAwMDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNTU9VTlQgICAgICAgICAgICAgMHgxMDAwMDAw
MAo+ICsjZGVmaW5lIFVLXzlQX0RNQVVUSCAgICAgICAgICAgICAgMHgwODAwMDAwMAo+ICsjZGVm
aW5lIFVLXzlQX0RNVE1QICAgICAgICAgICAgICAgMHgwNDAwMDAwMAo+ICsjZGVmaW5lIFVLXzlQ
X0RNU1lNTElOSyAgICAgICAgICAgMHgwMjAwMDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNTElOSyAg
ICAgICAgICAgICAgMHgwMTAwMDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNREVWSUNFICAgICAgICAg
ICAgMHgwMDgwMDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNTkFNRURQSVBFICAgICAgICAgMHgwMDIw
MDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNU09DS0VUICAgICAgICAgICAgMHgwMDEwMDAwMAo+ICsj
ZGVmaW5lIFVLXzlQX0RNU0VUVUlEICAgICAgICAgICAgMHgwMDA4MDAwMAo+ICsjZGVmaW5lIFVL
XzlQX0RNU0VUR0lEICAgICAgICAgICAgMHgwMDA0MDAwMAo+ICsjZGVmaW5lIFVLXzlQX0RNU0VU
VlRYICAgICAgICAgICAgMHgwMDAxMDAwMAo+ICsKPiArLyoqCj4gKyAqIDlQIG9wZW4gbW9kZSBi
aXRzLgo+ICsgKgo+ICsgKiBTb3VyY2U6IGh0dHBzOi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9y
dC9tYW4vbWFuOS9vcGVuLmh0bWwuCj4gKyAqLwo+ICsjZGVmaW5lIFVLXzlQX09SRUFEICAgICAg
ICAgICAgICAgMHgwMAo+ICsjZGVmaW5lIFVLXzlQX09XUklURSAgICAgICAgICAgICAgMHgwMQo+
ICsjZGVmaW5lIFVLXzlQX09SRFdSICAgICAgICAgICAgICAgMHgwMgo+ICsjZGVmaW5lIFVLXzlQ
X09FWEVDICAgICAgICAgICAgICAgMHgwMwo+ICsjZGVmaW5lIFVLXzlQX09UUlVOQyAgICAgICAg
ICAgICAgMHgxMAo+ICsjZGVmaW5lIFVLXzlQX09SRVhFQyAgICAgICAgICAgICAgMHgyMAo+ICsj
ZGVmaW5lIFVLXzlQX09SQ0xPU0UgICAgICAgICAgICAgMHg0MAo+ICsjZGVmaW5lIFVLXzlQX09B
UFBFTkQgICAgICAgICAgICAgMHg4MAo+ICsjZGVmaW5lIFVLXzlQX09FWENMICAgICAgICAgICAg
ICAgMHgxMDAwCj4gKwo+ICsvKioKPiArICogOVAgcWlkLgo+ICsgKgo+ICsgKiBTb3VyY2U6IGh0
dHBzOi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9ydC9tYW4vbWFuOS9pbnRyby5odG1sLgo+ICsg
Ki8KPiArc3RydWN0IHVrXzlwX3FpZCB7Cj4gKwl1aW50OF90ICAgICAgICAgICAgICAgICB0eXBl
Owo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgdmVyc2lvbjsKPiArCXVpbnQ2NF90ICAgICAg
ICAgICAgICAgIHBhdGg7Cj4gK307Cj4gKwo+ICsvKioKPiArICogOVAgc3RyaW5nLgo+ICsgKgo+
ICsgKiBTb3VyY2U6IGh0dHBzOi8vOWZhbnMuZ2l0aHViLmlvL3BsYW45cG9ydC9tYW4vbWFuOS9p
bnRyby5odG1sLgo+ICsgKi8KPiArc3RydWN0IHVrXzlwX3N0ciB7Cj4gKwl1aW50MTZfdCAgICAg
ICAgICAgICAgICBzaXplOwo+ICsJY2hhciAgICAgICAgICAgICAgICAgICAgKmRhdGE7Cj4gK307
Cj4gKwo+ICsvKioKPiArICogQ2hlY2sgaWYgYSA5UCBzdHJpbmcgaXMgZXF1YWwgdG8gYSBnaXZl
biBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgo+ICsgKgo+ICsgKiBAcGFyYW0gcwo+ICsgKiAgIDlQ
IHN0cmluZy4KPiArICogQHBhcmFtIHAKPiArICogICBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgo+
ICsgKiBAcmV0dXJuCj4gKyAqICAgMSBpZiBlcXVhbCwgMCBvdGhlcndpc2UuCj4gKyAqLwo+ICtz
dGF0aWMgaW5saW5lIGludCB1a185cF9zdHJfZXF1YWwoY29uc3Qgc3RydWN0IHVrXzlwX3N0ciAq
cywgY29uc3QgY2hhciAqcCkKPiArewo+ICsJcmV0dXJuIHN0cmxlbihwKSA9PSBzLT5zaXplICYm
ICFzdHJuY21wKHMtPmRhdGEsIHAsIHMtPnNpemUpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogSW5p
dGlhbGl6ZSBhIDlQIHN0cmluZyBmcm9tIGEgZ2l2ZW4gbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4K
PiArICoKPiArICogQHBhcmFtIHMKPiArICogICA5UCBzdHJpbmcuCj4gKyAqIEBwYXJhbSBwCj4g
KyAqICAgTnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1a185cF9zdHJfaW5pdChzdHJ1Y3QgdWtfOXBfc3RyICpzLCBjb25zdCBjaGFyICpwKQo+ICt7
Cj4gKwlpZiAoIXApIHsKPiArCQlzLT5zaXplID0gMDsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+
ICsJcy0+c2l6ZSA9IHN0cmxlbihwKTsKPiArCXMtPmRhdGEgPSAoY2hhciAqKXA7Cj4gK30KPiAr
Cj4gKy8qKgo+ICsgKiA5UCBzdGF0IHN0cnVjdHVyZS4KPiArICovCj4gK3N0cnVjdCB1a185cF9z
dGF0IHsKPiArCXVpbnQxNl90ICAgICAgICAgICAgICAgIHNpemU7Cj4gKwl1aW50MTZfdCAgICAg
ICAgICAgICAgICB0eXBlOwo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgZGV2Owo+ICsJc3Ry
dWN0IHVrXzlwX3FpZCAgICAgICAgcWlkOwo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgbW9k
ZTsKPiArCXVpbnQzMl90ICAgICAgICAgICAgICAgIGF0aW1lOwo+ICsJdWludDMyX3QgICAgICAg
ICAgICAgICAgbXRpbWU7Cj4gKwl1aW50NjRfdCAgICAgICAgICAgICAgICBsZW5ndGg7Cj4gKwlz
dHJ1Y3QgdWtfOXBfc3RyICAgICAgICBuYW1lOwo+ICsJc3RydWN0IHVrXzlwX3N0ciAgICAgICAg
dWlkOwo+ICsJc3RydWN0IHVrXzlwX3N0ciAgICAgICAgZ2lkOwo+ICsJc3RydWN0IHVrXzlwX3N0
ciAgICAgICAgbXVpZDsKPiArCXN0cnVjdCB1a185cF9zdHIgICAgICAgIGV4dGVuc2lvbjsKPiAr
CXVpbnQzMl90ICAgICAgICAgICAgICAgIG5fdWlkOwo+ICsJdWludDMyX3QgICAgICAgICAgICAg
ICAgbl9naWQ7Cj4gKwl1aW50MzJfdCAgICAgICAgICAgICAgICBuX211aWQ7Cj4gK307Cj4gKwo+
ICsvKgo+ICsgKiBUT0RPOiBUaGUgd2lyZSBmb3JtYXQgaXMgYWx3YXlzIGxpdHRsZS1lbmRpYW4u
IEFkZCBsaXR0bGUtZW5kaWFuIHR5cGVzIGFuZAo+ICsgKiBjcHVfdG9fbGUqKCkgZGF0YSB0byB0
aGUgcmVxdWlyZWQgZm9ybWF0Lgo+ICsgKi8KPiArCj4gKy8qKgo+ICsgKiBJbml0aWFsaXplIGEg
OVAgc3RhdCBzdHJ1Y3R1cmUgdGhhdCB3b24ndCBtb2RpZnkgYW55IGZpZWxkcyBpZiBzZW50IHdp
dGggYQo+ICsgKiBXU1RBVCBtZXNzYWdlLCBieSBzZXR0aW5nIGFsbCBpbnRlZ2VyIGZpZWxkcyB0
byB+MCBhbmQgYWxsIHN0cmluZyBmaWVsZHMgdG8KPiArICogZW1wdHkgc3RyaW5ncy4KPiArICoK
PiArICogQHBhcmFtIHN0YXQKPiArICogICBUaGUgOVAgc3RhdCBzdHJ1Y3R1cmUuCj4gKyAqLwo+
ICtzdGF0aWMgaW5saW5lIHZvaWQgdWtfOXBfc3RhdF9pbml0KHN0cnVjdCB1a185cF9zdGF0ICpz
dGF0KQo+ICt7Cj4gKwlVS19BU1NFUlQoc3RhdCk7Cj4gKwltZW1zZXQoc3RhdCwgfjAsIHNpemVv
ZihzdHJ1Y3QgdWtfOXBfc3RhdCkpOwo+ICsJc3RhdC0+bmFtZS5zaXplID0gMDsKPiArCXN0YXQt
PnVpZC5zaXplID0gMDsKPiArCXN0YXQtPmdpZC5zaXplID0gMDsKPiArCXN0YXQtPm11aWQuc2l6
ZSA9IDA7Cj4gKwlzdGF0LT5leHRlbnNpb24uc2l6ZSA9IDA7Cj4gK30KPiArCj4gKy8qKgo+ICsg
KiBObyB0YWcsIHVzZWQgYnkgdGhlIFR2ZXJzaW9uL1J2ZXJzaW9uIHBhaXIgb2YgcmVxdWVzdC9y
ZXBseSBtZXNzYWdlcy4KPiArICovCj4gKyNkZWZpbmUgVUtfOVBfTk9UQUcgICAgICAgICAgICAg
ICAgICAgIFVJTlQxNl9NQVgKPiArCj4gKy8qKgo+ICsgKiBNYXhpbXVtIGF2YWlsYWJsZSB0YWcg
Zm9yIHVzZS4KPiArICogVUtfOVBfTk9UQUcgKH4wKSBpcyByZXNlcnZlZCBieSB0aGUgOVAgUkZD
IGZvciByZXByZXNlbnRpbmcgbm8gdGFnLgo+ICsgKi8KPiArI2RlZmluZSBVS185UF9NQVhUQUcg
ICAgICAgICAgICAgICAgICAgKFVJTlQxNl9NQVggLSAxKQo+ICsKPiArLyoqCj4gKyAqIE51bWJl
ciBvZiBwb3NzaWJsZSB0YWdzLCBpbmNsdWRpbmcgTk9UQUcuCj4gKyAqLwo+ICsjZGVmaW5lIFVL
XzlQX05VTVRBR1MgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShVSU5UMTZfTUFYKSArIDEp
Cj4gKwo+ICsvKioKPiArICogTm8gZmlkLCB1c2VkIHRvIG1hcmsgYSBmaWQgZmllbGQgYXMgdW51
c2VkLgo+ICsgKi8KPiArI2RlZmluZSBVS185UF9OT0ZJRCAgICAgICAgICAgICAgICAgICAgVUlO
VDMyX01BWAo+ICsKPiArLyoqCj4gKyAqIE5vIG5fdW5hbWUgaW4gVEFUVEFDSCByZXF1ZXN0cywg
dXNlZCB0byBtYXJrIHRoZSBmaWVsZCBhcyB1bnVzZWQuCj4gKyAqLwo+ICsjZGVmaW5lIFVLXzlQ
X05PTlVOQU1FICAgICAgICAgICAgICAgICBVSU5UMzJfTUFYCj4gKwo+ICsjaWZkZWYgX19jcGx1
c3BsdXMKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfX1VLXzlQX0NPUkVfXyAqLwo+
IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 12:05:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 12:05: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 1hhC6r-0007Mb-Lz; Sat, 29 Jun 2019 12:05:37 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhC6q-0007MW-EA
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 12:05:36 +0000
X-Inumbo-ID: 326a22cd-9a66-11e9-8980-bc764e045a96
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 326a22cd-9a66-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 12:05:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E2FE7F2023;
 Sat, 29 Jun 2019 14:05:32 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id rYW8tI-nqSFE; Sat, 29 Jun 2019 14:05:32 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id A5D36F2022;
 Sat, 29 Jun 2019 14:05:26 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 14:05:25
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619070315.9765-1-cristb@gmail.com>
 <20190619070315.9765-5-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <0b016f8d-4494-9346-c3ff-514fb9b05e33@neclab.eu>
Date: Sat, 29 Jun 2019 14:05:24 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619070315.9765-5-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 4/8] lib/uk9p: Add 9P requests
 abstraction
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MTkuMDYuMTkgMDk6MDMsIENyaXN0aWFuIEJhbnUgd3JvdGU6Cj4gVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGEgc3RydWN0IHVrXzlwcmVxIHdoaWNoIGFic3RyYWN0cyB0aGUgbGlmZWN5Y2xlIG9mCj4g
YWxsb2NhdGluZyBtZW1vcnksIHNlcmlhbGl6aW5nIGRhdGEsIHNlbmRpbmcgaXQgb3ZlciBhIHRy
YW5zcG9ydCBsYXllciwKPiByZWNlaXZpbmcgdGhlIHJlc3BvbnNlLCBkZXRlY3RpbmcgZXJyb3Jz
LCBkZXNlcmlhbGl6aW5nIHRoZSByZWNlaXZlZAo+IG1lc3NhZ2UgYW5kIGZyZWVpbmcgdGhlIG1l
bW9yeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29t
Pgo+IC0tLQo+ICAgbGliL3VrOXAvOXByZXEuYyAgICAgICAgICAgIHwgNTU0ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvdWs5cC9NYWtlZmlsZS51
ayAgICAgICAgfCAgIDEgKwo+ICAgbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgIHwgIDExICsK
PiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXByZXEuaCB8IDI2MCArKysrKysrKysrKysrKysrKysr
KysKPiAgIDQgZmlsZXMgY2hhbmdlZCwgODI2IGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWIvdWs5cC85cHJlcS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrOXAv
aW5jbHVkZS91ay85cHJlcS5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwLzlwcmVxLmMgYi9s
aWIvdWs5cC85cHJlcS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw
MDAuLmQyYWZjOTE4NjU4ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWs5cC85cHJlcS5j
Cj4gQEAgLTAsMCArMSw1NTQgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z
LUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21h
aWwuY29tPgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRl
aG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmln
aHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAq
ICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVS
IE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsK
PiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gKyNpbmNs
dWRlIDx1ay85cHJlcS5oPgo+ICsjaW5jbHVkZSA8dWsvOXBfY29yZS5oPgo+ICsjaW5jbHVkZSA8
dWsvbGlzdC5oPgo+ICsjaW5jbHVkZSA8dWsvcmVmY291bnQuaD4KPiArI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4KPiArI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gKyNpZiBDT05GSUdfTElCVUtT
Q0hFRAo+ICsjaW5jbHVkZSA8dWsvc2NoZWQuaD4KPiArI2luY2x1ZGUgPHVrL3dhaXQuaD4KPiAr
I2VuZGlmCj4gKwo+ICsvKgo+ICsgKiBUaGUgaGVhZGVyIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dp
bmcgZmllbGRzOiBzaXplICg0IGJ5dGVzKSwgdHlwZSAoMSkgYW5kCj4gKyAqIHRhZyAoMikuCj4g
KyAqLwo+ICsjZGVmaW5lIFVLXzlQX0hFQURFUl9TSVpFICAgICAgICAgICAgICAgN1UKPiArCj4g
Ky8qCj4gKyAqIFRoZSBtYXhpbXVtIGJ1ZmZlciBzaXplIGZvciBhbiBlcnJvciByZXBseSBpcyBn
aXZlbiBieSB0aGUgaGVhZGVyICg3KSwgdGhlCj4gKyAqIHN0cmluZyBzaXplICgyKSwgdGhlIGVy
cm9yIHN0cmluZyAoMTI4KSBhbmQgdGhlIGVycm9yIGNvZGUgKDQpOiBpbiB0b3RhbCwKPiArICog
MTQxLgo+ICsgKi8KPiArI2RlZmluZSBVS185UF9SRVJST1JfTUFYU0laRSAgICAgICAgICAgIDE0
MVUKPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxsX2FsbG9jKHN0cnVjdCB1a19hbGxvYyAqYSwgc3Ry
dWN0IHVrXzlwcmVxX2ZjYWxsICpmLAo+ICsJCQl1aW50MzJfdCBzaXplKQo+ICt7Cj4gKwlVS19B
U1NFUlQoYSk7Cj4gKwlVS19BU1NFUlQoZik7Cj4gKwlVS19BU1NFUlQoc2l6ZSA+IDApOwo+ICsK
PiArCWYtPmJ1ZiA9IHVrX2NhbGxvYyhhLCBzaXplLCBzaXplb2YoY2hhcikpOwo+ICsJaWYgKGYt
PmJ1ZiA9PSBOVUxMKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWYtPnNpemUgPSBzaXpl
Owo+ICsJZi0+b2Zmc2V0ID0gMDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj
IHZvaWQgX2ZjYWxsX2ZyZWUoc3RydWN0IHVrX2FsbG9jICphLCBzdHJ1Y3QgdWtfOXByZXFfZmNh
bGwgKmYpCj4gK3sKPiArCVVLX0FTU0VSVChhKTsKPiArCVVLX0FTU0VSVChmKTsKPiArCj4gKwlp
ZiAoZi0+YnVmKQo+ICsJCXVrX2ZyZWUoYSwgZi0+YnVmKTsKPiArfQo+ICsKPiArc3RydWN0IHVr
XzlwcmVxICp1a185cHJlcV9hbGxvYyhzdHJ1Y3QgdWtfYWxsb2MgKmEsIHVpbnQzMl90IHNpemUp
Cj4gK3sKPiArCXN0cnVjdCB1a185cHJlcSAqcmVxOwo+ICsJaW50IHJjOwo+ICsKPiArCXJlcSA9
IHVrX2NhbGxvYyhhLCAxLCBzaXplb2YoKnJlcSkpOwo+ICsJaWYgKHJlcSA9PSBOVUxMKQo+ICsJ
CWdvdG8gb3V0Owo+ICsKPiArCXJjID0gX2ZjYWxsX2FsbG9jKGEsICZyZXEtPnhtaXQsIHNpemUp
Owo+ICsJaWYgKHJjIDwgMCkKPiArCQlnb3RvIG91dF9mcmVlOwo+ICsKPiArCXJjID0gX2ZjYWxs
X2FsbG9jKGEsICZyZXEtPnJlY3YsIE1BWChzaXplLCBVS185UF9SRVJST1JfTUFYU0laRSkpOwo+
ICsJaWYgKHJjIDwgMCkKPiArCQlnb3RvIG91dF9mcmVlOwo+ICsKPiArCVVLX0lOSVRfTElTVF9I
RUFEKCZyZXEtPl9saXN0KTsKPiArCXJlcS0+X2EgPSBhOwo+ICsJdWtfcmVmY291bnRfaW5pdCgm
cmVxLT5yZWZjb3VudCwgMSk7Cj4gKyNpZiBDT05GSUdfTElCVUtTQ0hFRAo+ICsJdWtfd2FpdHFf
aW5pdCgmcmVxLT53cSk7Cj4gKyNlbmRpZgo+ICsKPiArCS8qCj4gKwkgKiBBc3N1bWUgdGhlIGhl
YWRlciBoYXMgYWxyZWFkeSBiZWVuIHdyaXR0ZW4uCj4gKwkgKiBUaGUgaGVhZGVyIGl0c2VsZiB3
aWxsIGJlIHdyaXR0ZW4gb24gdWtfOXByZXFfcmVhZHkoKSwgd2hlbiB0aGUKPiArCSAqIGFjdHVh
bCBtZXNzYWdlIHNpemUgaXMga25vd24uCj4gKwkgKi8KPiArCXJlcS0+eG1pdC5vZmZzZXQgPSBV
S185UF9IRUFERVJfU0laRTsKPiArCj4gKwlyZXR1cm4gcmVxOwo+ICsKPiArb3V0X2ZyZWU6Cj4g
KwlfZmNhbGxfZnJlZShhLCAmcmVxLT5yZWN2KTsKPiArCV9mY2FsbF9mcmVlKGEsICZyZXEtPnht
aXQpOwo+ICsJdWtfZnJlZShhLCByZXEpOwo+ICtvdXQ6Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+
ICsKPiArc3RhdGljIHZvaWQgX3JlcV9mcmVlKHN0cnVjdCB1a185cHJlcSAqcmVxKQo+ICt7Cj4g
KwlfZmNhbGxfZnJlZShyZXEtPl9hLCAmcmVxLT5yZWN2KTsKPiArCV9mY2FsbF9mcmVlKHJlcS0+
X2EsICZyZXEtPnhtaXQpOwo+ICsJdWtfZnJlZShyZXEtPl9hLCByZXEpOwo+ICt9Cj4gKwo+ICt2
b2lkIHVrXzlwcmVxX2dldChzdHJ1Y3QgdWtfOXByZXEgKnJlcSkKPiArewo+ICsJdWtfcmVmY291
bnRfYWNxdWlyZSgmcmVxLT5yZWZjb3VudCk7Cj4gK30KPiArCj4gK2ludCB1a185cHJlcV9wdXQo
c3RydWN0IHVrXzlwcmVxICpyZXEpCj4gK3sKPiArCWludCBsYXN0Owo+ICsKPiArCWxhc3QgPSB1
a19yZWZjb3VudF9yZWxlYXNlKCZyZXEtPnJlZmNvdW50KTsKPiArCWlmIChsYXN0KQo+ICsJCV9y
ZXFfZnJlZShyZXEpOwo+ICsKPiArCXJldHVybiBsYXN0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50
IF9mY2FsbF93cml0ZShzdHJ1Y3QgdWtfOXByZXFfZmNhbGwgKmZjYWxsLCBjb25zdCB2b2lkICpi
dWYsCj4gKwkJdWludDMyX3Qgc2l6ZSkKPiArewo+ICsJaWYgKGZjYWxsLT5vZmZzZXQgKyBzaXpl
ID4gZmNhbGwtPnNpemUpCj4gKwkJcmV0dXJuIC1FTk9CVUZTOwo+ICsKPiArCW1lbWNweSgoY2hh
ciAqKWZjYWxsLT5idWYgKyBmY2FsbC0+b2Zmc2V0LCBidWYsIHNpemUpOwo+ICsJZmNhbGwtPm9m
ZnNldCArPSBzaXplOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxs
X3NlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXFfZmNhbGwgKmYsIGNvbnN0IGNoYXIgKmZtdCwgLi4u
KTsKPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxsX3ZzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2Zj
YWxsICpmY2FsbCwgY29uc3QgY2hhciAqZm10LAo+ICsJCQl2YV9saXN0IHZsKQo+ICt7Cj4gKwlp
bnQgcmMgPSAwOwo+ICsKPiArCXdoaWxlICgqZm10KSB7Cj4gKwkJc3dpdGNoICgqZm10KSB7Cj4g
KwkJY2FzZSAnYic6IHsKPiArCQkJdWludDhfdCB4Owo+ICsKPiArCQkJeCA9IHZhX2FyZyh2bCwg
dW5zaWduZWQgaW50KTsKPiArCQkJcmMgPSBfZmNhbGxfd3JpdGUoZmNhbGwsICZ4LCBzaXplb2Yo
eCkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCWJyZWFrOwo+ICsJ
CX0KPiArCQljYXNlICd3Jzogewo+ICsJCQl1aW50MTZfdCB4Owo+ICsKPiArCQkJeCA9IHZhX2Fy
Zyh2bCwgdW5zaWduZWQgaW50KTsKPiArCQkJcmMgPSBfZmNhbGxfd3JpdGUoZmNhbGwsICZ4LCBz
aXplb2YoeCkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCWJyZWFr
Owo+ICsJCX0KPiArCQljYXNlICdkJzogewo+ICsJCQl1aW50MzJfdCB4Owo+ICsKPiArCQkJeCA9
IHZhX2FyZyh2bCwgdWludDMyX3QpOwo+ICsJCQlyYyA9IF9mY2FsbF93cml0ZShmY2FsbCwgJngs
IHNpemVvZih4KSk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsKPiArCQkJYnJl
YWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ3EnOiB7Cj4gKwkJCXVpbnQ2NF90IHg7Cj4gKwo+ICsJCQl4
ID0gdmFfYXJnKHZsLCB1aW50NjRfdCk7Cj4gKwkJCXJjID0gX2ZjYWxsX3dyaXRlKGZjYWxsLCAm
eCwgc2l6ZW9mKHgpKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQli
cmVhazsKPiArCQl9Cj4gKwkJY2FzZSAncyc6IHsKPiArCQkJc3RydWN0IHVrXzlwX3N0ciAqcDsK
PiArCj4gKwkJCXAgPSB2YV9hcmcodmwsIHN0cnVjdCB1a185cF9zdHIgKik7Cj4gKwkJCXJjID0g
X2ZjYWxsX3dyaXRlKGZjYWxsLCAmcC0+c2l6ZSwgc2l6ZW9mKHAtPnNpemUpKTsKPiArCQkJaWYg
KHJjIDwgMCkKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQlyYyA9IF9mY2FsbF93cml0ZShmY2FsbCwg
cC0+ZGF0YSwgcC0+c2l6ZSk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsKPiAr
CQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ1EnOiB7Cj4gKwkJCXN0cnVjdCB1a185cF9xaWQg
KnA7Cj4gKwo+ICsJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfcWlkICopOwo+ICsJCQly
YyA9IF9mY2FsbF9zZXJpYWxpemUoZmNhbGwsICJiZHEiLCBwLT50eXBlLAo+ICsJCQkJCXAtPnZl
cnNpb24sIHAtPnBhdGgpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJ
CWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdTJzogewo+ICsJCQlzdHJ1Y3QgdWtfOXBfc3RhdCAq
cDsKPiArCj4gKwkJCXAgPSB2YV9hcmcodmwsIHN0cnVjdCB1a185cF9zdGF0ICopOwo+ICsJCQly
YyA9IF9mY2FsbF9zZXJpYWxpemUoZmNhbGwsICJ3d2RRZGRkcXNzc3NzZGRkIiwKPiArCQkJCQlw
LT5zaXplLCBwLT50eXBlLCBwLT5kZXYsICZwLT5xaWQsCj4gKwkJCQkJcC0+bW9kZSwgcC0+YXRp
bWUsIHAtPm10aW1lLCBwLT5sZW5ndGgsCj4gKwkJCQkJJnAtPm5hbWUsICZwLT51aWQsICZwLT5n
aWQsICZwLT5tdWlkLAo+ICsJCQkJCSZwLT5leHRlbnNpb24sIHAtPm5fdWlkLCBwLT5uX2dpZCwK
PiArCQkJCQlwLT5uX211aWQpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4g
KwkJCWJyZWFrOwo+ICsJCX0KPiArCQlkZWZhdWx0Ogo+ICsJCQlyYyA9IC1FSU5WQUw7Cj4gKwkJ
CWdvdG8gb3V0Owo+ICsJCX0KPiArCj4gKwkJZm10Kys7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwly
ZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxsX3NlcmlhbGl6ZShzdHJ1Y3Qg
dWtfOXByZXFfZmNhbGwgKmYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+ICt7Cj4gKwl2YV9saXN0
IHZsOwo+ICsJaW50IHJjOwo+ICsKPiArCXZhX3N0YXJ0KHZsLCBmbXQpOwo+ICsJcmMgPSBfZmNh
bGxfdnNlcmlhbGl6ZShmLCBmbXQsIHZsKTsKPiArCXZhX2VuZCh2bCk7Cj4gKwo+ICsJcmV0dXJu
IHJjOwo+ICt9Cj4gKwo+ICtpbnQgdWtfOXByZXFfdnNlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEg
KnJlcSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZsKQo+ICt7Cj4gKwlpbnQgcmM7Cj4gKwo+
ICsJVUtfQVNTRVJUKHJlcSk7Cj4gKwlVS19BU1NFUlQoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUp
ID09IFVLXzlQUkVRX0lOSVRJQUxJWkVEKTsKPiArCXJjID0gX2ZjYWxsX3ZzZXJpYWxpemUoJnJl
cS0+eG1pdCwgZm10LCB2bCk7Cj4gKwo+ICsJcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtpbnQgdWtf
OXByZXFfc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIC4u
LikKPiArewo+ICsJdmFfbGlzdCB2bDsKPiArCWludCByYzsKPiArCj4gKwl2YV9zdGFydCh2bCwg
Zm10KTsKPiArCXJjID0gdWtfOXByZXFfdnNlcmlhbGl6ZShyZXEsIGZtdCwgdmwpOwo+ICsJdmFf
ZW5kKHZsKTsKPiArCj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxs
X3JlYWQoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwgdm9pZCAqYnVmLCB1aW50MzJfdCBz
aXplKQo+ICt7Cj4gKwlpZiAoZmNhbGwtPm9mZnNldCArIHNpemUgPiBmY2FsbC0+c2l6ZSkKPiAr
CQlyZXR1cm4gLUVOT0JVRlM7Cj4gKwo+ICsJbWVtY3B5KGJ1ZiwgKGNoYXIgKilmY2FsbC0+YnVm
ICsgZmNhbGwtPm9mZnNldCwgc2l6ZSk7Cj4gKwlmY2FsbC0+b2Zmc2V0ICs9IHNpemU7Cj4gKwly
ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBfZmNhbGxfZGVzZXJpYWxpemUoc3RydWN0
IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cj4gKwo+ICtzdGF0aWMg
aW50IF9mY2FsbF92ZGVzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwKPiAr
CQkJICAgICAgY29uc3QgY2hhciAqZm10LAo+ICsJCQkgICAgICB2YV9saXN0IHZsKQo+ICt7Cj4g
KwlpbnQgcmMgPSAwOwo+ICsKPiArCXdoaWxlICgqZm10KSB7Cj4gKwkJc3dpdGNoICgqZm10KSB7
Cj4gKwkJY2FzZSAnYic6IHsKPiArCQkJdWludDhfdCAqeDsKPiArCj4gKwkJCXggPSB2YV9hcmco
dmwsIHVpbnQ4X3QgKik7Cj4gKwkJCXJjID0gX2ZjYWxsX3JlYWQoZmNhbGwsIHgsIHNpemVvZigq
eCkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCWJyZWFrOwo+ICsJ
CX0KPiArCQljYXNlICd3Jzogewo+ICsJCQl1aW50MTZfdCAqeDsKPiArCj4gKwkJCXggPSB2YV9h
cmcodmwsIHVpbnQxNl90ICopOwo+ICsJCQlyYyA9IF9mY2FsbF9yZWFkKGZjYWxsLCB4LCBzaXpl
b2YoKngpKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQlicmVhazsK
PiArCQl9Cj4gKwkJY2FzZSAnZCc6IHsKPiArCQkJdWludDMyX3QgKng7Cj4gKwo+ICsJCQl4ID0g
dmFfYXJnKHZsLCB1aW50MzJfdCAqKTsKPiArCQkJcmMgPSBfZmNhbGxfcmVhZChmY2FsbCwgeCwg
c2l6ZW9mKCp4KSk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsKPiArCQkJYnJl
YWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ3EnOiB7Cj4gKwkJCXVpbnQ2NF90ICp4Owo+ICsKPiArCQkJ
eCA9IHZhX2FyZyh2bCwgdWludDY0X3QgKik7Cj4gKwkJCXJjID0gX2ZjYWxsX3JlYWQoZmNhbGws
IHgsIHNpemVvZigqeCkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJ
CWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdzJzogewo+ICsJCQlzdHJ1Y3QgdWtfOXBfc3RyICpw
Owo+ICsKPiArCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3N0ciAqKTsKPiArCQkJcmMg
PSBfZmNhbGxfcmVhZChmY2FsbCwgJnAtPnNpemUsIHNpemVvZihwLT5zaXplKSk7Cj4gKwkJCWlm
IChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsKPiArCQkJcC0+ZGF0YSA9IChjaGFyICopZmNhbGwt
PmJ1ZiArIGZjYWxsLT5vZmZzZXQ7Cj4gKwkJCWZjYWxsLT5vZmZzZXQgKz0gcC0+c2l6ZTsKPiAr
CQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ1EnOiB7Cj4gKwkJCXN0cnVjdCB1a185cF9xaWQg
KnA7Cj4gKwo+ICsJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfcWlkICopOwo+ICsJCQly
YyA9IF9mY2FsbF9kZXNlcmlhbGl6ZShmY2FsbCwgImJkcSIsICZwLT50eXBlLAo+ICsJCQkJCSZw
LT52ZXJzaW9uLCAmcC0+cGF0aCk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsK
PiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ1MnOiB7Cj4gKwkJCXN0cnVjdCB1a185cF9z
dGF0ICpwOwo+ICsKPiArCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3N0YXQgKik7Cj4g
KwkJCXJjID0gX2ZjYWxsX2Rlc2VyaWFsaXplKGZjYWxsLCAid3dkUWRkZHFzc3Nzc2RkZCIsCj4g
KwkJCQkJJnAtPnNpemUsICZwLT50eXBlLCAmcC0+ZGV2LCAmcC0+cWlkLAo+ICsJCQkJCSZwLT5t
b2RlLCAmcC0+YXRpbWUsICZwLT5tdGltZSwKPiArCQkJCQkmcC0+bGVuZ3RoLCAmcC0+bmFtZSwg
JnAtPnVpZCwgJnAtPmdpZCwKPiArCQkJCQkmcC0+bXVpZCwgJnAtPmV4dGVuc2lvbiwgJnAtPm5f
dWlkLAo+ICsJCQkJCSZwLT5uX2dpZCwgJnAtPm5fbXVpZCk7Cj4gKwkJCWlmIChyYyA8IDApCj4g
KwkJCQlnb3RvIG91dDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWRlZmF1bHQ6Cj4gKwkJCXJj
ID0gLUVJTlZBTDsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlmbXQrKzsKPiArCX0K
PiArCj4gK291dDoKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiArc3RhdGljIGludCBfZmNhbGxf
ZGVzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBjaGFyICpmbXQsIC4u
LikKPiArewo+ICsJdmFfbGlzdCB2bDsKPiArCWludCByYzsKPiArCj4gKwl2YV9zdGFydCh2bCwg
Zm10KTsKPiArCXJjID0gX2ZjYWxsX3ZkZXNlcmlhbGl6ZShmLCBmbXQsIHZsKTsKPiArCXZhX2Vu
ZCh2bCk7Cj4gKwo+ICsJcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtpbnQgdWtfOXByZXFfdmRlc2Vy
aWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qgdmwp
Cj4gK3sKPiArCWludCByYzsKPiArCj4gKwlVS19BU1NFUlQocmVxKTsKPiArCVVLX0FTU0VSVChV
S19SRUFEX09OQ0UocmVxLT5zdGF0ZSkgPT0gVUtfOVBSRVFfUkVDRUlWRUQpOwo+ICsJcmMgPSBf
ZmNhbGxfdmRlc2VyaWFsaXplKCZyZXEtPnJlY3YsIGZtdCwgdmwpOwo+ICsKPiArCXJldHVybiBy
YzsKPiArfQo+ICsKPiAraW50IHVrXzlwcmVxX2Rlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAq
cmVxLCBjb25zdCBjaGFyICpmbXQsIC4uLikKPiArewo+ICsJdmFfbGlzdCB2bDsKPiArCWludCBy
YzsKPiArCj4gKwl2YV9zdGFydCh2bCwgZm10KTsKPiArCXJjID0gdWtfOXByZXFfdmRlc2VyaWFs
aXplKHJlcSwgZm10LCB2bCk7Cj4gKwl2YV9lbmQodmwpOwo+ICsKPiArCXJldHVybiByYzsKPiAr
fQo+ICsKPiAraW50IHVrXzlwcmVxX2NvcHlfdG8oc3RydWN0IHVrXzlwcmVxICpyZXEsIHZvaWQg
KmJ1ZiwgdWludDMyX3Qgc2l6ZSkKPiArewo+ICsJcmV0dXJuIF9mY2FsbF9yZWFkKCZyZXEtPnJl
Y3YsIGJ1Ziwgc2l6ZSk7Cj4gK30KPiArCj4gK2ludCB1a185cHJlcV9jb3B5X2Zyb20oc3RydWN0
IHVrXzlwcmVxICpyZXEsIGNvbnN0IHZvaWQgKmJ1ZiwgdWludDMyX3Qgc2l6ZSkKPiArewo+ICsJ
cmV0dXJuIF9mY2FsbF93cml0ZSgmcmVxLT54bWl0LCBidWYsIHNpemUpOwo+ICt9Cj4gKwo+ICtp
bnQgdWtfOXByZXFfcmVhZHkoc3RydWN0IHVrXzlwcmVxICpyZXEpCj4gK3sKPiArCWludCByYzsK
PiArCXVpbnQzMl90IHRvdGFsX3NpemU7Cj4gKwo+ICsJVUtfQVNTRVJUKHJlcSk7Cj4gKwo+ICsJ
aWYgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9JTklUSUFMSVpFRCkgewo+
ICsJCXJjID0gLUVJTzsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwkvKiBTYXZlIGN1cnJl
bnQgb2Zmc2V0IGFzIHRoZSBzaXplIG9mIHRoZSBtZXNzYWdlLiAqLwo+ICsJdG90YWxfc2l6ZSA9
IHJlcS0+eG1pdC5vZmZzZXQ7Cj4gKwo+ICsJLyogU2VyaWFsaXplIHRoZSBoZWFkZXIuICovCj4g
KwlyZXEtPnhtaXQub2Zmc2V0ID0gMDsKPiArCXJjID0gdWtfOXByZXFfc2VyaWFsaXplKHJlcSwg
ImRidyIsIHRvdGFsX3NpemUsIHJlcS0+eG1pdC50eXBlLAo+ICsJCQlyZXEtPnRhZyk7Cj4gKwlp
ZiAocmMgPCAwKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCS8qIFJlc2V0IG9mZnNldCBhbmQgc2l6
ZSB0byBzYW5lIHZhbHVlcy4gKi8KPiArCXJlcS0+eG1pdC5vZmZzZXQgPSAwOwo+ICsJcmVxLT54
bWl0LnNpemUgPSB0b3RhbF9zaXplOwo+ICsKPiArCS8qIFVwZGF0ZSB0aGUgc3RhdGUuICovCj4g
KwlVS19XUklURV9PTkNFKHJlcS0+c3RhdGUsIFVLXzlQUkVRX1JFQURZKTsKPiArCj4gK291dDoK
PiArCXJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHVrXzlwcmVxX3JlY2VpdmVfY2Ioc3RydWN0
IHVrXzlwcmVxICpyZXEsIHVpbnQzMl90IHJlY3Zfc2l6ZSkKPiArewo+ICsJdWludDMyX3Qgc2l6
ZTsKPiArCXVpbnQxNl90IHRhZzsKPiArCWludCByYzsKPiArCj4gKwlVS19BU1NFUlQocmVxKTsK
PiArCj4gKwkvKiBDaGVjayBzdGF0ZSBhbmQgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgaGVhZGVyLiAq
Lwo+ICsJaWYgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9TRU5UKQo+ICsJ
CXJldHVybiAtRUlPOwo+ICsJaWYgKHJlY3Zfc2l6ZSA8IFVLXzlQX0hFQURFUl9TSVpFKQo+ICsJ
CXJldHVybiAtRUlPOwo+ICsKPiArCS8qIERlc2VyaWFsaXplIHRoZSBoZWFkZXIgaW50byByZXF1
ZXN0IGZpZWxkcy4gKi8KPiArCXJlcS0+cmVjdi5vZmZzZXQgPSAwOwo+ICsJcmVxLT5yZWN2LnNp
emUgPSByZWN2X3NpemU7Cj4gKwlyYyA9IF9mY2FsbF9kZXNlcmlhbGl6ZSgmcmVxLT5yZWN2LCAi
ZGJ3IiwgJnNpemUsCj4gKwkJCSZyZXEtPnJlY3YudHlwZSwgJnRhZyk7Cj4gKwo+ICsJLyogQ2hl
Y2sgc2FuaXR5IG9mIGRlc2VyaWFsaXplZCB2YWx1ZXMuICovCj4gKwlpZiAocmMgPCAwKQo+ICsJ
CXJldHVybiByYzsKPiArCWlmIChzaXplID4gcmVjdl9zaXplKQo+ICsJCXJldHVybiAtRUlPOwo+
ICsJaWYgKHJlcS0+dGFnICE9IHRhZykKPiArCQlyZXR1cm4gLUVJTzsKPiArCXJlcS0+cmVjdi5z
aXplID0gc2l6ZTsKPiArCj4gKwkvKiBVcGRhdGUgdGhlIHN0YXRlLiAqLwo+ICsJVUtfV1JJVEVf
T05DRShyZXEtPnN0YXRlLCBVS185UFJFUV9SRUNFSVZFRCk7Cj4gKwo+ICsjaWYgQ09ORklHX0xJ
QlVLU0NIRUQKPiArCS8qIE5vdGlmeSBhbnkgd2FpdGluZyB0aHJlYWRzLiAqLwo+ICsJdWtfd2Fp
dHFfd2FrZV91cCgmcmVxLT53cSk7Cj4gKyNlbmRpZgo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g
Kwo+ICtpbnQgdWtfOXByZXFfd2FpdHJlcGx5KHN0cnVjdCB1a185cHJlcSAqcmVxKQo+ICt7Cj4g
KwlpbnQgcmM7Cj4gKwo+ICsjaWYgQ09ORklHX0xJQlVLU0NIRUQKPiArCXVrX3dhaXRxX3dhaXRf
ZXZlbnQoJnJlcS0+d3EsIHJlcS0+c3RhdGUgPT0gVUtfOVBSRVFfUkVDRUlWRUQpOwo+ICsjZWxz
ZQo+ICsJd2hpbGUgKFVLX1JFQURfT05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9SRUNFSVZF
RCkKPiArCQk7Cj4gKyNlbmRpZgo+ICsKPiArCS8qIENoZWNrIGZvciA5UCBzZXJ2ZXItc2lkZSBl
cnJvcnMuICovCj4gKwlyYyA9IHVrXzlwcmVxX2Vycm9yKHJlcSk7Cj4gKwo+ICsJcmV0dXJuIHJj
Owo+ICt9Cj4gKwo+ICtpbnQgdWtfOXByZXFfZXJyb3Ioc3RydWN0IHVrXzlwcmVxICpyZXEpCj4g
K3sKPiArCXVpbnQzMl90IGVycmNvZGU7Cj4gKwlzdHJ1Y3QgdWtfOXBfc3RyIGVycm9yOwo+ICsJ
aW50IHJjID0gMDsKPiArCj4gKwlpZiAoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpICE9IFVLXzlQ
UkVRX1JFQ0VJVkVEKQo+ICsJCXJldHVybiAtRUlPOwo+ICsJaWYgKHJlcS0+cmVjdi50eXBlICE9
IFVLXzlQX1JFUlJPUikKPiArCQlyZXR1cm4gMDsKPiArCj4gKwkvKgo+ICsJICogVGhlIHJlcXVl
c3Qgc2hvdWxkIG5vdCBoYXZlIGhhZCBhbnkgZGF0YSBkZXNlcmlhbGl6ZWQgZnJvbSBpdCBwcmlv
cgo+ICsJICogdG8gdGhpcyBjYWxsLgo+ICsJICovCj4gKwlVS19CVUdPTihyZXEtPnJlY3Yub2Zm
c2V0ICE9IFVLXzlQX0hFQURFUl9TSVpFKTsKPiArCj4gKwlyYyA9IHVrXzlwcmVxX2Rlc2VyaWFs
aXplKHJlcSwgInNkIiwgJmVycm9yLCAmZXJyY29kZSk7Cj4gKwlpZiAocmMgPCAwKQo+ICsJCXJl
dHVybiByYzsKPiArCj4gKwl1a19wcl9pbmZvKCJ1azlwOiBSRVJST1IgJS4qcyAlZFxuIiwgZXJy
b3Iuc2l6ZSwgZXJyb3IuZGF0YSwgZXJyY29kZSk7Cj4gKwlpZiAoZXJyY29kZSA9PSAwIHx8IGVy
cmNvZGUgPj0gNTEyKQo+ICsJCXJldHVybiAtRUlPOwo+ICsKPiArCXJldHVybiAtZXJyY29kZTsK
PiArfQo+IGRpZmYgLS1naXQgYS9saWIvdWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2Vm
aWxlLnVrCj4gaW5kZXggYjEwNzFhMGU3ZDNjLi5hZWE3MjJhNTg1YjkgMTAwNjQ0Cj4gLS0tIGEv
bGliL3VrOXAvTWFrZWZpbGUudWsKPiArKysgYi9saWIvdWs5cC9NYWtlZmlsZS51awo+IEBAIC00
LDMgKzQsNCBAQCBDSU5DTFVERVMtJChDT05GSUdfTElCVUs5UCkJCSs9IC1JJChMSUJVSzlQX0JB
U0UpL2luY2x1ZGUKPiAgIENYWElOQ0xVREVTLSQoQ09ORklHX0xJQlVLOVApCQkrPSAtSSQoTElC
VUs5UF9CQVNFKS9pbmNsdWRlCj4gICAKPiAgIExJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9C
QVNFKS85cGRldl90cmFucy5jCj4gK0xJQlVLOVBfU1JDUy15ICs9ICQoTElCVUs5UF9CQVNFKS85
cHJlcS5jCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwL2V4cG9ydHN5bXMudWsgYi9saWIvdWs5cC9l
eHBvcnRzeW1zLnVrCj4gaW5kZXggNDVmNDg3ZGEyZmZmLi44NTBmZmEyZGIyMzMgMTAwNjQ0Cj4g
LS0tIGEvbGliL3VrOXAvZXhwb3J0c3ltcy51awo+ICsrKyBiL2xpYi91azlwL2V4cG9ydHN5bXMu
dWsKPiBAQCAtMSwzICsxLDE0IEBACj4gICB1a185cGRldl90cmFuc19yZWdpc3Rlcgo+ICAgdWtf
OXBkZXZfdHJhbnNfYnlfbmFtZQo+ICAgdWtfOXBkZXZfdHJhbnNfZGVmYXVsdAo+ICt1a185cHJl
cV9nZXQKPiArdWtfOXByZXFfcHV0Cj4gK3VrXzlwcmVxX3ZzZXJpYWxpemUKPiArdWtfOXByZXFf
c2VyaWFsaXplCj4gK3VrXzlwcmVxX3ZkZXNlcmlhbGl6ZQo+ICt1a185cHJlcV9kZXNlcmlhbGl6
ZQo+ICt1a185cHJlcV9jb3B5X3RvCj4gK3VrXzlwcmVxX2NvcHlfZnJvbQo+ICt1a185cHJlcV9y
ZWNlaXZlX2NiCj4gK3VrXzlwcmVxX3dhaXRyZXBseQo+ICt1a185cHJlcV9lcnJvcgo+IGRpZmYg
LS1naXQgYS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmggYi9saWIvdWs5cC9pbmNsdWRlL3Vr
LzlwcmVxLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMmJl
ZWExMzQ3NzI2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBy
ZXEuaAo+IEBAIC0wLDAgKzEsMjYwIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC
U0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3Ri
QGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBv
bGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29w
eXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+
ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhF
QURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8K
PiArCj4gKyNpZm5kZWYgX19VS185UFJFUV9fCj4gKyNkZWZpbmUgX19VS185UFJFUV9fCj4gKwo+
ICsjaW5jbHVkZSA8aW50dHlwZXMuaD4KPiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICsjaW5j
bHVkZSA8dWsvYWxsb2MuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiArI2luY2x1
ZGUgPHVrL2xpc3QuaD4KPiArI2luY2x1ZGUgPHVrL3JlZmNvdW50Lmg+Cj4gKyNpZiBDT05GSUdf
TElCVUtTQ0hFRAo+ICsjaW5jbHVkZSA8dWsvd2FpdF90eXBlcy5oPgo+ICsjZW5kaWYKPiArCj4g
KyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4gKwo+ICsvKioK
PiArICogQGludGVybmFsCj4gKyAqCj4gKyAqIERlc2NyaWJlcyBhIDlwIGZjYWxsIHN0cnVjdHVy
ZS4KPiArICovCj4gK3N0cnVjdCB1a185cHJlcV9mY2FsbCB7Cj4gKwkvKgo+ICsJICogVG90YWwg
c2l6ZSBvZiB0aGUgZmNhbGwuIEluaXRpYWxseSwgdGhpcyBpcyB0aGUgYnVmZmVyIHNpemUuCj4g
KwkgKiBBZnRlciByZWFkeSAob24geG1pdCkgb3IgcmVwbHkgKG9uIHJlY3YpLCB0aGlzIHdpbGwg
YmUgdGhlIHNpemUgb2YKPiArCSAqIHRoZSBzZW50L3JlY2VpdmVkIGRhdGEuCj4gKwkgKi8KPiAr
CXVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTsKPiArCS8qIFR5cGUgb2YgdGhl
IGZjYWxsLiBTaG91bGQgYmUgVCogZm9yIHRyYW5zbWl0LCBSKiBmb3IgcmVjZWl2ZS4gKi8KPiAr
CXVpbnQ4X3QgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTsKPiArCS8qIE9mZnNldCB3aGls
ZSBzZXJpYWxpemluZyBvciBkZXNlcmlhbGl6aW5nLiAqLwo+ICsJdWludDMyX3QgICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXQ7Cj4gKwkvKiBCdWZmZXIgcG9pbnRlci4gKi8KPiArCXZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmJ1ZjsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBE
ZXNjcmliZXMgdGhlIHBvc3NpYmxlIHN0YXRlcyBpbiB3aGljaCBhIHJlcXVlc3QgbWF5IGJlLgo+
ICsgKgo+ICsgKiAtIE5PTkU6IFJpZ2h0IGFmdGVyIGFsbG9jYXRpbmcuCj4gKyAqIC0gSU5JVElB
TElaRUQ6IFJlcXVlc3QgaXMgcmVhZHkgdG8gcmVjZWl2ZSBzZXJpYWxpemF0aW9uIGRhdGEuCj4g
KyAqIC0gUkVBRFk6IFJlcXVlc3QgaXMgcmVhZHkgdG8gYmUgc2VudC4KPiArICogLSBSRUNFSVZF
RDogVHJhbnNwb3J0IGxheWVyIGhhcyByZWNlaXZlZCB0aGUgcmVwbHkgYW5kIGltcG9ydGFudCBk
YXRhIHN1Y2gKPiArICogICBhcyB0aGUgdGFnLCB0eXBlIGFuZCBzaXplIGhhdmUgYmVlbiB2YWxp
ZGF0ZWQuCj4gKyAqLwo+ICtlbnVtIHVrXzlwcmVxX3N0YXRlIHsKPiArCVVLXzlQUkVRX05PTkUg
PSAwLAo+ICsJVUtfOVBSRVFfSU5JVElBTElaRUQsCj4gKwlVS185UFJFUV9SRUFEWSwKPiArCVVL
XzlQUkVRX1NFTlQsCj4gKwlVS185UFJFUV9SRUNFSVZFRAo+ICt9Owo+ICsKPiArLyoqCj4gKyAq
ICBEZXNjcmliZXMgYSA5UCByZXF1ZXN0Lgo+ICsgKgo+ICsgKiAgVGhpcyBnZXRzIGFsbG9jYXRl
ZCB2aWEgdWtfOXBkZXZfcmVxX2NyZWF0ZSgpLCBhbmQgZnJlZWQgd2hlbiBpdCBpcyBub3QKPiAr
ICogIHJlZmVyZW5jZWQgYW55bW9yZS4gQSBjYWxsIHRvIHVrXzlwZGV2X3JlcV9yZW1vdmUoKSBp
cyBtYW5kYXRvcnkgdG8KPiArICogIGNvcnJlY3RseSBmcmVlIHRoaXMgYW5kIHJlbW92ZSBpdCBm
cm9tIHRoZSBsaXN0IG9mIHJlcXVlc3RzIG1hbmFnZWQKPiArICogIGJ5IHRoZSA5cCBkZXZpY2Uu
Cj4gKyAqLwo+ICtzdHJ1Y3QgdWtfOXByZXEgewo+ICsJLyogVHJhbnNtaXQgZmNhbGwuICovCj4g
KwlzdHJ1Y3QgdWtfOXByZXFfZmNhbGwgICAgICAgICAgIHhtaXQ7Cj4gKwkvKiBSZWNlaXZlIGZj
YWxsLiAqLwo+ICsJc3RydWN0IHVrXzlwcmVxX2ZjYWxsICAgICAgICAgICByZWN2Owo+ICsJLyog
U3RhdGUgb2YgdGhlIHJlcXVlc3QuIFNlZSB0aGUgc3RhdGUgZW51bSBmb3IgZGV0YWlscy4gKi8K
PiArCWVudW0gdWtfOXByZXFfc3RhdGUgICAgICAgICAgICAgc3RhdGU7Cj4gKwkvKiBUYWcgYWxs
b2NhdGVkIHRvIHRoaXMgcmVxdWVzdC4gKi8KPiArCXVpbnQxNl90ICAgICAgICAgICAgICAgICAg
ICAgICAgdGFnOwo+ICsJLyogRW50cnkgaW50byB0aGUgbGlzdCBvZiByZXF1ZXN0cyAoQVBJLWlu
dGVybmFsKS4gKi8KPiArCXN0cnVjdCB1a19saXN0X2hlYWQgICAgICAgICAgICAgX2xpc3Q7Cj4g
KwkvKiBAaW50ZXJuYWwgQWxsb2NhdG9yIHVzZWQgdG8gYWxsb2NhdGUgdGhpcyByZXF1ZXN0LiAq
Lwo+ICsJc3RydWN0IHVrX2FsbG9jICAgICAgICAgICAgICAgICAqX2E7Cj4gKwkvKiBUcmFja3Mg
dGhlIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIHRoaXMgc3RydWN0dXJlLiAqLwo+ICsJX19hdG9t
aWMgICAgICAgICAgICAgICAgICAgICAgICByZWZjb3VudDsKPiArI2lmIENPTkZJR19MSUJVS1ND
SEVECj4gKwkvKiBXYWl0LXF1ZXVlIGZvciBzdGF0ZSBjaGFuZ2VzLiAqLwo+ICsJc3RydWN0IHVr
X3dhaXRxICAgICAgICAgICAgICAgICB3cTsKPiArI2VuZGlmCj4gK307Cj4gKwo+ICsvKioKPiAr
ICogQGludGVybmFsCj4gKyAqIEFsbG9jYXRlcyBhIDlwIHJlcXVlc3QuCj4gKyAqIFNob3VsZCBu
b3QgYmUgdXNlZCBkaXJlY3RseSwgdXNlIHVrXzlwZGV2X3JlcV9jcmVhdGUoKSBpbnN0ZWFkLgo+
ICsgKgo+ICsgKiBAcGFyYW0gYQo+ICsgKiAgIEFsbG9jYXRvciB0byB1c2UuCj4gKyAqIEBwYXJh
bSBzaXplCj4gKyAqICAgTWluaW11bSBzaXplIG9mIHRoZSByZWNlaXZlIGFuZCB0cmFuc21pdCBi
dWZmZXJzLgo+ICsgKiBAcmV0dXJuCj4gKyAqICAgLSAoPT1OVUxMKTogT3V0IG9mIG1lbW9yeS4K
PiArICogICAtICghPU5VTEwpOiBTdWNjZXNzZnVsLgo+ICsgKi8KPiArc3RydWN0IHVrXzlwcmVx
ICp1a185cHJlcV9hbGxvYyhzdHJ1Y3QgdWtfYWxsb2MgKmEsIHVpbnQzMl90IHNpemUpOwo+ICsK
PiArLyoqCj4gKyAqIEdldHMgdGhlIDlwIHJlcXVlc3QsIGluY3JlbWVudGluZyB0aGUgcmVmZXJl
bmNlIGNvdW50Lgo+ICsgKgo+ICsgKiBAcGFyYW0gcmVxCj4gKyAqICAgUmVmZXJlbmNlIHRvIHRo
ZSA5cCByZXF1ZXN0Lgo+ICsgKi8KPiArdm9pZCB1a185cHJlcV9nZXQoc3RydWN0IHVrXzlwcmVx
ICpyZXEpOwo+ICsKPiArLyoqCj4gKyAqIFB1dHMgdGhlIDlwIHJlcXVlc3QsIGRlY3JlbWVudGlu
ZyB0aGUgcmVmZXJlbmNlIGNvdW50Lgo+ICsgKiBJZiB0aGlzIHdhcyB0aGUgbGFzdCBsaXZlIHJl
ZmVyZW5jZSwgdGhlIG1lbW9yeSB3aWxsIGJlIGZyZWVkLgo+ICsgKgo+ICsgKiBAcGFyYW0gcmVx
Cj4gKyAqICAgUmVmZXJlbmNlIHRvIHRoZSA5cCByZXF1ZXN0Lgo+ICsgKiBAcmV0dXJuCj4gKyAq
ICAgLSAwOiBUaGlzIHdhcyBub3QgdGhlIGxhc3QgbGl2ZSByZWZlcmVuY2UuCj4gKyAqICAgLSAx
OiBUaGlzIHdhcyB0aGUgbGFzdCBsaXZlIHJlZmVyZW5jZS4KPiArICovCj4gK2ludCB1a185cHJl
cV9wdXQoc3RydWN0IHVrXzlwcmVxICpyZXEpOwo+ICsKPiArLyoKPiArICogVGhlIGZvbGxvd2lu
ZyBmYW1pbHkgb2Ygc2VyaWFsaXphdGlvbiBhbmQgZGVzZXJpYWxpemF0aW9uIGZ1bmN0aW9ucyB3
b3JrCj4gKyAqIGJ5IGVtcGxveWluZyBhIHByaW50Zi1saWtlIGZvcm1hdHRpbmcgbWVjaGFuaXNt
IGZvciBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieQo+ICsgKiB0aGUgOXAgcHJvdG9jb2w6Cj4gKyAq
IC0gJ2InOiBieXRlICh1aW50OF90KQo+ICsgKiAtICd3Jzogd29yZCAodWludDE2X3QpCj4gKyAq
IC0gJ2QnOiBkb3VibGUtd29yZCAodWludDMyX3QpCj4gKyAqIC0gJ3EnOiBxdWFkLXdvcmQgKHVp
bnQ2NF90KQo+ICsgKiAtICdzJzogdWtfOXBfc3RyICoKPiArICogLSAnUyc6IHVrXzlwX3N0YXQg
Kgo+ICsgKgo+ICsgKiBTaW1pbGFybHkgdG8gdnByaW50ZigpLCB0aGUgdnNlcmlhbGl6ZSgpIGFu
ZCB2ZGVzZXJpYWxpemUoKSBmdW5jdGlvbnMgdGFrZQo+ICsgKiBhIHZhX2xpc3QgaW5zdGVhZCBv
ZiBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMuCj4gKyAqCj4gKyAqIFBvc3NpYmxlIHJl
dHVybiB2YWx1ZXM6Cj4gKyAqIC0gMDogT3BlcmF0aW9uIHN1Y2Nlc3NmdWwuCj4gKyAqIC0gKC1F
SU5WQUwpOiBJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXIuCj4gKyAqIC0gKC1FTk9CVUZTKTogRW5k
IG9mIGJ1ZmZlciByZWFjaGVkLgo+ICsgKi8KPiArCj4gK2ludCB1a185cHJlcV92c2VyaWFsaXpl
KHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmwpOwo+ICtp
bnQgdWtfOXByZXFfc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpm
bXQsIC4uLik7Cj4gK2ludCB1a185cHJlcV92ZGVzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxICpy
ZXEsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2bCk7Cj4gK2ludCB1a185cHJlcV9kZXNlcmlh
bGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwo+ICsKPiAr
LyoqCj4gKyAqIENvcGllcyByYXcgZGF0YSBmcm9tIHRoZSByZXF1ZXN0IHJlY2VpdmUgYnVmZmVy
IHRvIHRoZSBwcm92aWRlZCBidWZmZXIuCj4gKyAqCj4gKyAqIEBwYXJhbSByZXEKPiArICogICBS
ZWZlcmVuY2UgdG8gdGhlIDlwIHJlcXVlc3QuCj4gKyAqIEBwYXJhbSBidWYKPiArICogICBEZXN0
aW5hdGlvbiBidWZmZXIuCj4gKyAqIEBwYXJhbSBzaXplCj4gKyAqICAgQW1vdW50IHRvIGNvcHku
Cj4gKyAqIFBvc3NpYmxlIHJldHVybiB2YWx1ZXM6Cj4gKyAqIC0gMDogT3BlcmF0aW9uIHN1Y2Nl
c3NmdWwuCj4gKyAqIC0gKC1FTk9CVUZTKTogRW5kIG9mIGJ1ZmZlciByZWFjaGVkLgo+ICsgKi8K
PiAraW50IHVrXzlwcmVxX2NvcHlfdG8oc3RydWN0IHVrXzlwcmVxICpyZXEsIHZvaWQgKmJ1Ziwg
dWludDMyX3Qgc2l6ZSk7Cj4gKwo+ICsvKioKPiArICogQ29waWVzIHJhdyBkYXRhIGZyb20gdGhl
IHByb3ZpZGVkIGJ1ZmZlciB0byB0aGUgcmVxdWVzdCB0cmFuc21pc3Npb24gYnVmZmVyLgo+ICsg
Kgo+ICsgKiBAcGFyYW0gcmVxCj4gKyAqICAgUmVmZXJlbmNlIHRvIHRoZSA5cCByZXF1ZXN0Lgo+
ICsgKiBAcGFyYW0gYnVmCj4gKyAqICAgU291cmNlIGJ1ZmZlci4KPiArICogQHBhcmFtIHNpemUK
PiArICogICBBbW91bnQgdG8gY29weS4KPiArICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoKPiAr
ICogLSAwOiBPcGVyYXRpb24gc3VjY2Vzc2Z1bC4KPiArICogLSAoLUVOT0JVRlMpOiBFbmQgb2Yg
YnVmZmVyIHJlYWNoZWQuCj4gKyAqLwo+ICtpbnQgdWtfOXByZXFfY29weV9mcm9tKHN0cnVjdCB1
a185cHJlcSAqcmVxLCBjb25zdCB2b2lkICpidWYsIHVpbnQzMl90IHNpemUpOwo+ICsKPiArLyoq
Cj4gKyAqIE1hcmtzIHRoZSBnaXZlbiByZXF1ZXN0IGFzIGJlaW5nIHJlYWR5LCB0cmFuc2l0aW9u
aW5nIGJldHdlZW4gc3RhdGVzCj4gKyAqIElOSVRJQUxJWkVEIGFuZCBSRUFEWS4KPiArICoKPiAr
ICogQHBhcmFtIHJlcQo+ICsgKiAgIFJlZmVyZW5jZSB0byB0aGUgOXAgcmVxdWVzdC4KPiArICog
QHJldHVybgo+ICsgKiAgIC0gMDogU3VjY2Vzc2Z1bC4KPiArICogICAtICg8IDApOiBJbnZhbGlk
IHN0YXRlIG9yIHJlcXVlc3Qgc2l6ZSBzZXJpYWxpemF0aW9uIGZhaWxlZC4KPiArICovCj4gK2lu
dCB1a185cHJlcV9yZWFkeShzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7Cj4gKwo+ICsvKioKPiArICog
RnVuY3Rpb24gY2FsbGVkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllciB3aGVuIGEgcmVxdWVzdCBo
YXMgYmVlbiByZWNlaXZlZC4KPiArICogSW1wbGVtZW50cyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRo
ZSBTRU5UIHRvIHRoZSBSRUNFSVZFRCBzdGF0ZS4KPiArICoKPiArICogQHBhcmFtIHJlcQo+ICsg
KiAgIFRoZSA5UCByZXF1ZXN0Lgo+ICsgKiBAcGFyYW0gcmVjdl9zaXplCj4gKyAqICAgU2l6ZSBv
ZiB0aGUgcGFja2V0IHJlY2VpdmVkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllci4KPiArICogQHJl
dHVybgo+ICsgKiAgIC0gKDApOiBTdWNjZXNzZnVsbHkgcmVjZWl2ZWQuCj4gKyAqICAgLSAoPCAw
KTogQW4gZXJyb3Igb2NjdXJyZWQuCj4gKyAqLwo+ICtpbnQgdWtfOXByZXFfcmVjZWl2ZV9jYihz
dHJ1Y3QgdWtfOXByZXEgKnJlcSwgdWludDMyX3QgcmVjdl9zaXplKTsKPiArCj4gKy8qKgo+ICsg
KiBXYWl0cyBmb3IgdGhlIHJlcGx5IHRvIGJlIHJlY2VpdmVkLgo+ICsgKgo+ICsgKiBAcGFyYW0g
cmVxCj4gKyAqICAgVGhlIDlQIHJlcXVlc3QuCj4gKyAqIEByZXR1cm4KPiArICogICAtICgwKTog
U3VjY2Vzc2Z1bC4KPiArICogICAtICg8IDApOiBGYWlsZWQuIFJldHVybnMgdGhlIGVycm9yIGNv
ZGUgcmVjZWl2ZWQgZnJvbSB0aGUgOVAgc2VydmVyLgo+ICsgKi8KPiAraW50IHVrXzlwcmVxX3dh
aXRyZXBseShzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7Cj4gKwo+ICsvKioKPiArICogRXh0cmFjdHMg
dGhlIGVycm9yIGZyb20gdGhlIHJlY2VpdmVkIHJlcGx5Lgo+ICsgKgo+ICsgKiBAcGFyYW0gcmVx
Cj4gKyAqICAgVGhlIDlQIHJlcXVlc3QuCj4gKyAqIEByZXR1cm4KPiArICogICAtICgwKTogTm8g
ZXJyb3Igb2NjdXJyZWQuCj4gKyAqICAgLSAoPCAwKTogQW4gUmVycm9yIHdhcyByZWNlaXZlZCwg
dGhlIGVycm9yIGNvZGUgaXMgOXBmcy1zcGVjaWZpYy4KPiArICovCj4gK2ludCB1a185cHJlcV9l
cnJvcihzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7Cj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiAr
fQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfX1VLXzlQUkVRX18gKi8KPiAKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 12:08:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 12:08: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 1hhC9G-0007Pt-Tq; Sat, 29 Jun 2019 12:08:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhC9G-0007Po-CT
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 12:08:06 +0000
X-Inumbo-ID: 8a813eec-9a66-11e9-9615-c3cf36692a8b
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8a813eec-9a66-11e9-9615-c3cf36692a8b;
 Sat, 29 Jun 2019 12:08:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 01D221053A9;
 Sat, 29 Jun 2019 14:08:01 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gKXHCHBpPpI7; Sat, 29 Jun 2019 14:08:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id C9BE1105285;
 Sat, 29 Jun 2019 14:08:00 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 14:08:00
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190629085608.15680-1-cristb@gmail.com>
 <20190629085608.15680-5-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <6d68a678-4bdc-5fc4-a180-ce76b6ccc831@neclab.eu>
Date: Sat, 29 Jun 2019 14:07:59 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190629085608.15680-5-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/8] lib/uk9p: Add 9P
 requests abstraction
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MjkuMDYuMTkgMTA6NTYsIENyaXN0aWFuIEJhbnUgd3JvdGU6Cj4gVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGEgc3RydWN0IHVrXzlwcmVxIHdoaWNoIGFic3RyYWN0cyB0aGUgbGlmZWN5Y2xlIG9mCj4g
YWxsb2NhdGluZyBtZW1vcnksIHNlcmlhbGl6aW5nIGRhdGEsIHNlbmRpbmcgaXQgb3ZlciBhIHRy
YW5zcG9ydCBsYXllciwKPiByZWNlaXZpbmcgdGhlIHJlc3BvbnNlLCBkZXRlY3RpbmcgZXJyb3Jz
LCBkZXNlcmlhbGl6aW5nIHRoZSByZWNlaXZlZAo+IG1lc3NhZ2UgYW5kIGZyZWVpbmcgdGhlIG1l
bW9yeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBCYW51IDxjcmlzdGJAZ21haWwuY29t
Pgo+IC0tLQo+ICAgbGliL3VrOXAvOXByZXEuYyAgICAgICAgICAgIHwgNTY5ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvdWs5cC9NYWtlZmlsZS51
ayAgICAgICAgfCAgIDEgKwo+ICAgbGliL3VrOXAvZXhwb3J0c3ltcy51ayAgICAgIHwgIDExICsK
PiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXByZXEuaCB8IDMwMCArKysrKysrKysrKysrKysrKysr
KysrKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA4ODEgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGxpYi91azlwLzlwcmVxLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWs5
cC9pbmNsdWRlL3VrLzlwcmVxLmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXByZXEuYyBi
L2xpYi91azlwLzlwcmVxLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw
MDAwMC4uZTQ4YWFlMTdkNTBmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91azlwLzlwcmVx
LmMKPiBAQCAtMCwwICsxLDU2OSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE
LTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBn
bWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xp
dGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4g
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHly
aWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiAr
ICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFE
RVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4g
Kwo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2lu
Y2x1ZGUgPHVrLzlwcmVxLmg+Cj4gKyNpbmNsdWRlIDx1ay85cF9jb3JlLmg+Cj4gKyNpbmNsdWRl
IDx1ay9saXN0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9yZWZjb3VudC5oPgo+ICsjaW5jbHVkZSA8dWsv
ZXNzZW50aWFscy5oPgo+ICsjaW5jbHVkZSA8dWsvYWxsb2MuaD4KPiArI2lmIENPTkZJR19MSUJV
S1NDSEVECj4gKyNpbmNsdWRlIDx1ay9zY2hlZC5oPgo+ICsjaW5jbHVkZSA8dWsvd2FpdC5oPgo+
ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxsX2FsbG9jKHN0cnVjdCB1a19hbGxvYyAq
YSwgc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLAo+ICsJCQl1aW50MzJfdCBzaXplKQo+ICt7Cj4g
KwlVS19BU1NFUlQoYSk7Cj4gKwlVS19BU1NFUlQoZik7Cj4gKwlVS19BU1NFUlQoc2l6ZSA+IDAp
Owo+ICsKPiArCWYtPmJ1ZiA9IHVrX2NhbGxvYyhhLCBzaXplLCBzaXplb2YoY2hhcikpOwo+ICsJ
aWYgKGYtPmJ1ZiA9PSBOVUxMKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWYtPnNpemUg
PSBzaXplOwo+ICsJZi0+b2Zmc2V0ID0gMDsKPiArCWYtPnpjX2J1ZiA9IE5VTEw7Cj4gKwlmLT56
Y19zaXplID0gMDsKPiArCWYtPnpjX29mZnNldCA9IDA7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K
PiArCj4gK3N0YXRpYyB2b2lkIF9mY2FsbF9mcmVlKHN0cnVjdCB1a19hbGxvYyAqYSwgc3RydWN0
IHVrXzlwcmVxX2ZjYWxsICpmKQo+ICt7Cj4gKwlVS19BU1NFUlQoYSk7Cj4gKwlVS19BU1NFUlQo
Zik7Cj4gKwo+ICsJaWYgKGYtPmJ1ZikKPiArCQl1a19mcmVlKGEsIGYtPmJ1Zik7Cj4gK30KPiAr
Cj4gK3N0cnVjdCB1a185cHJlcSAqdWtfOXByZXFfYWxsb2Moc3RydWN0IHVrX2FsbG9jICphLCB1
aW50MzJfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfOXByZXEgKnJlcTsKPiArCWludCByYzsK
PiArCj4gKwlyZXEgPSB1a19jYWxsb2MoYSwgMSwgc2l6ZW9mKCpyZXEpKTsKPiArCWlmIChyZXEg
PT0gTlVMTCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlyYyA9IF9mY2FsbF9hbGxvYyhhLCAmcmVx
LT54bWl0LCBzaXplKTsKPiArCWlmIChyYyA8IDApCj4gKwkJZ290byBvdXRfZnJlZTsKPiArCj4g
KwlyYyA9IF9mY2FsbF9hbGxvYyhhLCAmcmVxLT5yZWN2LCBNQVgoc2l6ZSwgVUtfOVBfUkVSUk9S
X01BWFNJWkUpKTsKPiArCWlmIChyYyA8IDApCj4gKwkJZ290byBvdXRfZnJlZTsKPiArCj4gKwlV
S19JTklUX0xJU1RfSEVBRCgmcmVxLT5fbGlzdCk7Cj4gKwlyZXEtPl9hID0gYTsKPiArCXVrX3Jl
ZmNvdW50X2luaXQoJnJlcS0+cmVmY291bnQsIDEpOwo+ICsjaWYgQ09ORklHX0xJQlVLU0NIRUQK
PiArCXVrX3dhaXRxX2luaXQoJnJlcS0+d3EpOwo+ICsjZW5kaWYKPiArCj4gKwkvKgo+ICsJICog
QXNzdW1lIHRoZSBoZWFkZXIgaGFzIGFscmVhZHkgYmVlbiB3cml0dGVuLgo+ICsJICogVGhlIGhl
YWRlciBpdHNlbGYgd2lsbCBiZSB3cml0dGVuIG9uIHVrXzlwcmVxX3JlYWR5KCksIHdoZW4gdGhl
Cj4gKwkgKiBhY3R1YWwgbWVzc2FnZSBzaXplIGlzIGtub3duLgo+ICsJICovCj4gKwlyZXEtPnht
aXQub2Zmc2V0ID0gVUtfOVBfSEVBREVSX1NJWkU7Cj4gKwo+ICsJcmV0dXJuIHJlcTsKPiArCj4g
K291dF9mcmVlOgo+ICsJX2ZjYWxsX2ZyZWUoYSwgJnJlcS0+cmVjdik7Cj4gKwlfZmNhbGxfZnJl
ZShhLCAmcmVxLT54bWl0KTsKPiArCXVrX2ZyZWUoYSwgcmVxKTsKPiArb3V0Ogo+ICsJcmV0dXJu
IE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9yZXFfZnJlZShzdHJ1Y3QgdWtfOXByZXEg
KnJlcSkKPiArewo+ICsJX2ZjYWxsX2ZyZWUocmVxLT5fYSwgJnJlcS0+cmVjdik7Cj4gKwlfZmNh
bGxfZnJlZShyZXEtPl9hLCAmcmVxLT54bWl0KTsKPiArCXVrX2ZyZWUocmVxLT5fYSwgcmVxKTsK
PiArfQo+ICsKPiArdm9pZCB1a185cHJlcV9nZXQoc3RydWN0IHVrXzlwcmVxICpyZXEpCj4gK3sK
PiArCXVrX3JlZmNvdW50X2FjcXVpcmUoJnJlcS0+cmVmY291bnQpOwo+ICt9Cj4gKwo+ICtpbnQg
dWtfOXByZXFfcHV0KHN0cnVjdCB1a185cHJlcSAqcmVxKQo+ICt7Cj4gKwlpbnQgbGFzdDsKPiAr
Cj4gKwlsYXN0ID0gdWtfcmVmY291bnRfcmVsZWFzZSgmcmVxLT5yZWZjb3VudCk7Cj4gKwlpZiAo
bGFzdCkKPiArCQlfcmVxX2ZyZWUocmVxKTsKPiArCj4gKwlyZXR1cm4gbGFzdDsKPiArfQo+ICsK
PiArc3RhdGljIGludCBfZmNhbGxfd3JpdGUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmY2FsbCwg
Y29uc3Qgdm9pZCAqYnVmLAo+ICsJCXVpbnQzMl90IHNpemUpCj4gK3sKPiArCWlmIChmY2FsbC0+
b2Zmc2V0ICsgc2l6ZSA+IGZjYWxsLT5zaXplKQo+ICsJCXJldHVybiAtRU5PQlVGUzsKPiArCj4g
KwltZW1jcHkoKGNoYXIgKilmY2FsbC0+YnVmICsgZmNhbGwtPm9mZnNldCwgYnVmLCBzaXplKTsK
PiArCWZjYWxsLT5vZmZzZXQgKz0gc2l6ZTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0
aWMgaW50IF9mY2FsbF9zZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBj
aGFyICpmbXQsIC4uLik7Cj4gKwo+ICtzdGF0aWMgaW50IF9mY2FsbF92c2VyaWFsaXplKHN0cnVj
dCB1a185cHJlcV9mY2FsbCAqZmNhbGwsIGNvbnN0IGNoYXIgKmZtdCwKPiArCQkJdmFfbGlzdCB2
bCkKPiArewo+ICsJaW50IHJjID0gMDsKPiArCj4gKwl3aGlsZSAoKmZtdCkgewo+ICsJCXN3aXRj
aCAoKmZtdCkgewo+ICsJCWNhc2UgJ2InOiB7Cj4gKwkJCXVpbnQ4X3QgeDsKPiArCj4gKwkJCXgg
PSB2YV9hcmcodmwsIHVuc2lnbmVkIGludCk7Cj4gKwkJCXJjID0gX2ZjYWxsX3dyaXRlKGZjYWxs
LCAmeCwgc2l6ZW9mKHgpKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdvdG8gb3V0Owo+ICsJ
CQlicmVhazsKPiArCQl9Cj4gKwkJY2FzZSAndyc6IHsKPiArCQkJdWludDE2X3QgeDsKPiArCj4g
KwkJCXggPSB2YV9hcmcodmwsIHVuc2lnbmVkIGludCk7Cj4gKwkJCXJjID0gX2ZjYWxsX3dyaXRl
KGZjYWxsLCAmeCwgc2l6ZW9mKHgpKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdvdG8gb3V0
Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwkJY2FzZSAnZCc6IHsKPiArCQkJdWludDMyX3QgeDsK
PiArCj4gKwkJCXggPSB2YV9hcmcodmwsIHVpbnQzMl90KTsKPiArCQkJcmMgPSBfZmNhbGxfd3Jp
dGUoZmNhbGwsICZ4LCBzaXplb2YoeCkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBv
dXQ7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdxJzogewo+ICsJCQl1aW50NjRfdCB4
Owo+ICsKPiArCQkJeCA9IHZhX2FyZyh2bCwgdWludDY0X3QpOwo+ICsJCQlyYyA9IF9mY2FsbF93
cml0ZShmY2FsbCwgJngsIHNpemVvZih4KSk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3Rv
IG91dDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ3MnOiB7Cj4gKwkJCXN0cnVjdCB1
a185cF9zdHIgKnA7Cj4gKwo+ICsJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3RyICop
Owo+ICsJCQlyYyA9IF9mY2FsbF93cml0ZShmY2FsbCwgJnAtPnNpemUsIHNpemVvZihwLT5zaXpl
KSk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsKPiArCQkJcmMgPSBfZmNhbGxf
d3JpdGUoZmNhbGwsIHAtPmRhdGEsIHAtPnNpemUpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJ
Z290byBvdXQ7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdRJzogewo+ICsJCQlzdHJ1
Y3QgdWtfOXBfcWlkICpwOwo+ICsKPiArCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3Fp
ZCAqKTsKPiArCQkJcmMgPSBfZmNhbGxfc2VyaWFsaXplKGZjYWxsLCAiYmRxIiwgcC0+dHlwZSwK
PiArCQkJCQlwLT52ZXJzaW9uLCBwLT5wYXRoKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdv
dG8gb3V0Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwkJY2FzZSAnUyc6IHsKPiArCQkJc3RydWN0
IHVrXzlwX3N0YXQgKnA7Cj4gKwo+ICsJCQlwID0gdmFfYXJnKHZsLCBzdHJ1Y3QgdWtfOXBfc3Rh
dCAqKTsKPiArCQkJcmMgPSBfZmNhbGxfc2VyaWFsaXplKGZjYWxsLCAid3dkUWRkZHFzc3Nzc2Rk
ZCIsCj4gKwkJCQkJcC0+c2l6ZSwgcC0+dHlwZSwgcC0+ZGV2LCAmcC0+cWlkLAo+ICsJCQkJCXAt
Pm1vZGUsIHAtPmF0aW1lLCBwLT5tdGltZSwgcC0+bGVuZ3RoLAo+ICsJCQkJCSZwLT5uYW1lLCAm
cC0+dWlkLCAmcC0+Z2lkLCAmcC0+bXVpZCwKPiArCQkJCQkmcC0+ZXh0ZW5zaW9uLCBwLT5uX3Vp
ZCwgcC0+bl9naWQsCj4gKwkJCQkJcC0+bl9tdWlkKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJ
CWdvdG8gb3V0Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwkJZGVmYXVsdDoKPiArCQkJcmMgPSAt
RUlOVkFMOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwo+ICsJCWZtdCsrOwo+ICsJfQo+ICsK
PiArb3V0Ogo+ICsJcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IF9mY2FsbF9zZXJp
YWxpemUoc3RydWN0IHVrXzlwcmVxX2ZjYWxsICpmLCBjb25zdCBjaGFyICpmbXQsIC4uLikKPiAr
ewo+ICsJdmFfbGlzdCB2bDsKPiArCWludCByYzsKPiArCj4gKwl2YV9zdGFydCh2bCwgZm10KTsK
PiArCXJjID0gX2ZjYWxsX3ZzZXJpYWxpemUoZiwgZm10LCB2bCk7Cj4gKwl2YV9lbmQodmwpOwo+
ICsKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHVrXzlwcmVxX3ZzZXJpYWxpemUoc3Ry
dWN0IHVrXzlwcmVxICpyZXEsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2bCkKPiArewo+ICsJ
aW50IHJjOwo+ICsKPiArCVVLX0FTU0VSVChyZXEpOwo+ICsJVUtfQVNTRVJUKFVLX1JFQURfT05D
RShyZXEtPnN0YXRlKSA9PSBVS185UFJFUV9JTklUSUFMSVpFRCk7Cj4gKwlyYyA9IF9mY2FsbF92
c2VyaWFsaXplKCZyZXEtPnhtaXQsIGZtdCwgdmwpOwo+ICsKPiArCXJldHVybiByYzsKPiArfQo+
ICsKPiAraW50IHVrXzlwcmVxX3NlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3Qg
Y2hhciAqZm10LCAuLi4pCj4gK3sKPiArCXZhX2xpc3Qgdmw7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJ
dmFfc3RhcnQodmwsIGZtdCk7Cj4gKwlyYyA9IHVrXzlwcmVxX3ZzZXJpYWxpemUocmVxLCBmbXQs
IHZsKTsKPiArCXZhX2VuZCh2bCk7Cj4gKwo+ICsJcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtzdGF0
aWMgaW50IF9mY2FsbF9yZWFkKHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZmNhbGwsIHZvaWQgKmJ1
ZiwgdWludDMyX3Qgc2l6ZSkKPiArewo+ICsJaWYgKGZjYWxsLT5vZmZzZXQgKyBzaXplID4gZmNh
bGwtPnNpemUpCj4gKwkJcmV0dXJuIC1FTk9CVUZTOwo+ICsKPiArCW1lbWNweShidWYsIChjaGFy
ICopZmNhbGwtPmJ1ZiArIGZjYWxsLT5vZmZzZXQsIHNpemUpOwo+ICsJZmNhbGwtPm9mZnNldCAr
PSBzaXplOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX2ZjYWxsX2Rlc2Vy
aWFsaXplKHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwo+
ICsKPiArc3RhdGljIGludCBfZmNhbGxfdmRlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcV9mY2Fs
bCAqZmNhbGwsCj4gKwkJCSAgICAgIGNvbnN0IGNoYXIgKmZtdCwKPiArCQkJICAgICAgdmFfbGlz
dCB2bCkKPiArewo+ICsJaW50IHJjID0gMDsKPiArCj4gKwl3aGlsZSAoKmZtdCkgewo+ICsJCXN3
aXRjaCAoKmZtdCkgewo+ICsJCWNhc2UgJ2InOiB7Cj4gKwkJCXVpbnQ4X3QgKng7Cj4gKwo+ICsJ
CQl4ID0gdmFfYXJnKHZsLCB1aW50OF90ICopOwo+ICsJCQlyYyA9IF9mY2FsbF9yZWFkKGZjYWxs
LCB4LCBzaXplb2YoKngpKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdvdG8gb3V0Owo+ICsJ
CQlicmVhazsKPiArCQl9Cj4gKwkJY2FzZSAndyc6IHsKPiArCQkJdWludDE2X3QgKng7Cj4gKwo+
ICsJCQl4ID0gdmFfYXJnKHZsLCB1aW50MTZfdCAqKTsKPiArCQkJcmMgPSBfZmNhbGxfcmVhZChm
Y2FsbCwgeCwgc2l6ZW9mKCp4KSk7Cj4gKwkJCWlmIChyYyA8IDApCj4gKwkJCQlnb3RvIG91dDsK
PiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWNhc2UgJ2QnOiB7Cj4gKwkJCXVpbnQzMl90ICp4Owo+
ICsKPiArCQkJeCA9IHZhX2FyZyh2bCwgdWludDMyX3QgKik7Cj4gKwkJCXJjID0gX2ZjYWxsX3Jl
YWQoZmNhbGwsIHgsIHNpemVvZigqeCkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBv
dXQ7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdxJzogewo+ICsJCQl1aW50NjRfdCAq
eDsKPiArCj4gKwkJCXggPSB2YV9hcmcodmwsIHVpbnQ2NF90ICopOwo+ICsJCQlyYyA9IF9mY2Fs
bF9yZWFkKGZjYWxsLCB4LCBzaXplb2YoKngpKTsKPiArCQkJaWYgKHJjIDwgMCkKPiArCQkJCWdv
dG8gb3V0Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwkJY2FzZSAncyc6IHsKPiArCQkJc3RydWN0
IHVrXzlwX3N0ciAqcDsKPiArCj4gKwkJCXAgPSB2YV9hcmcodmwsIHN0cnVjdCB1a185cF9zdHIg
Kik7Cj4gKwkJCXJjID0gX2ZjYWxsX3JlYWQoZmNhbGwsICZwLT5zaXplLCBzaXplb2YocC0+c2l6
ZSkpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCXAtPmRhdGEgPSAo
Y2hhciAqKWZjYWxsLT5idWYgKyBmY2FsbC0+b2Zmc2V0Owo+ICsJCQlmY2FsbC0+b2Zmc2V0ICs9
IHAtPnNpemU7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdRJzogewo+ICsJCQlzdHJ1
Y3QgdWtfOXBfcWlkICpwOwo+ICsKPiArCQkJcCA9IHZhX2FyZyh2bCwgc3RydWN0IHVrXzlwX3Fp
ZCAqKTsKPiArCQkJcmMgPSBfZmNhbGxfZGVzZXJpYWxpemUoZmNhbGwsICJiZHEiLCAmcC0+dHlw
ZSwKPiArCQkJCQkmcC0+dmVyc2lvbiwgJnAtPnBhdGgpOwo+ICsJCQlpZiAocmMgPCAwKQo+ICsJ
CQkJZ290byBvdXQ7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQljYXNlICdTJzogewo+ICsJCQlz
dHJ1Y3QgdWtfOXBfc3RhdCAqcDsKPiArCj4gKwkJCXAgPSB2YV9hcmcodmwsIHN0cnVjdCB1a185
cF9zdGF0ICopOwo+ICsJCQlyYyA9IF9mY2FsbF9kZXNlcmlhbGl6ZShmY2FsbCwgInd3ZFFkZGRx
c3Nzc3NkZGQiLAo+ICsJCQkJCSZwLT5zaXplLCAmcC0+dHlwZSwgJnAtPmRldiwgJnAtPnFpZCwK
PiArCQkJCQkmcC0+bW9kZSwgJnAtPmF0aW1lLCAmcC0+bXRpbWUsCj4gKwkJCQkJJnAtPmxlbmd0
aCwgJnAtPm5hbWUsICZwLT51aWQsICZwLT5naWQsCj4gKwkJCQkJJnAtPm11aWQsICZwLT5leHRl
bnNpb24sICZwLT5uX3VpZCwKPiArCQkJCQkmcC0+bl9naWQsICZwLT5uX211aWQpOwo+ICsJCQlp
ZiAocmMgPCAwKQo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCQlkZWZh
dWx0Ogo+ICsJCQlyYyA9IC1FSU5WQUw7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCj4gKwkJ
Zm10Kys7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRp
YyBpbnQgX2ZjYWxsX2Rlc2VyaWFsaXplKHN0cnVjdCB1a185cHJlcV9mY2FsbCAqZiwgY29uc3Qg
Y2hhciAqZm10LCAuLi4pCj4gK3sKPiArCXZhX2xpc3Qgdmw7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJ
dmFfc3RhcnQodmwsIGZtdCk7Cj4gKwlyYyA9IF9mY2FsbF92ZGVzZXJpYWxpemUoZiwgZm10LCB2
bCk7Cj4gKwl2YV9lbmQodmwpOwo+ICsKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHVr
XzlwcmVxX3ZkZXNlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10
LCB2YV9saXN0IHZsKQo+ICt7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJVUtfQVNTRVJUKHJlcSk7Cj4g
KwlVS19BU1NFUlQoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpID09IFVLXzlQUkVRX1JFQ0VJVkVE
KTsKPiArCXJjID0gX2ZjYWxsX3ZkZXNlcmlhbGl6ZSgmcmVxLT5yZWN2LCBmbXQsIHZsKTsKPiAr
Cj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gK2ludCB1a185cHJlcV9kZXNlcmlhbGl6ZShzdHJ1
Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10LCAuLi4pCj4gK3sKPiArCXZhX2xpc3Qg
dmw7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJdmFfc3RhcnQodmwsIGZtdCk7Cj4gKwlyYyA9IHVrXzlw
cmVxX3ZkZXNlcmlhbGl6ZShyZXEsIGZtdCwgdmwpOwo+ICsJdmFfZW5kKHZsKTsKPiArCj4gKwly
ZXR1cm4gcmM7Cj4gK30KPiArCj4gK2ludCB1a185cHJlcV9jb3B5X3RvKHN0cnVjdCB1a185cHJl
cSAqcmVxLCB2b2lkICpidWYsIHVpbnQzMl90IHNpemUpCj4gK3sKPiArCXJldHVybiBfZmNhbGxf
cmVhZCgmcmVxLT5yZWN2LCBidWYsIHNpemUpOwo+ICt9Cj4gKwo+ICtpbnQgdWtfOXByZXFfY29w
eV9mcm9tKHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCB2b2lkICpidWYsIHVpbnQzMl90IHNp
emUpCj4gK3sKPiArCXJldHVybiBfZmNhbGxfd3JpdGUoJnJlcS0+eG1pdCwgYnVmLCBzaXplKTsK
PiArfQo+ICsKPiAraW50IHVrXzlwcmVxX3JlYWR5KHN0cnVjdCB1a185cHJlcSAqcmVxLCBlbnVt
IHVrXzlwcmVxX3pjZGlyIHpjX2RpciwKPiArCQl2b2lkICp6Y19idWYsIHVpbnQzMl90IHpjX3Np
emUsIHVpbnQzMl90IHpjX29mZnNldCkKPiArewo+ICsJaW50IHJjOwo+ICsJdWludDMyX3QgdG90
YWxfc2l6ZTsKPiArCXVpbnQzMl90IHRvdGFsX3NpemVfd2l0aF96YzsKPiArCj4gKwlVS19BU1NF
UlQocmVxKTsKPiArCj4gKwlpZiAoVUtfUkVBRF9PTkNFKHJlcS0+c3RhdGUpICE9IFVLXzlQUkVR
X0lOSVRJQUxJWkVEKSB7Cj4gKwkJcmMgPSAtRUlPOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsK
PiArCS8qIFNhdmUgY3VycmVudCBvZmZzZXQgYXMgdGhlIHNpemUgb2YgdGhlIG1lc3NhZ2UuICov
Cj4gKwl0b3RhbF9zaXplID0gcmVxLT54bWl0Lm9mZnNldDsKPiArCj4gKwl0b3RhbF9zaXplX3dp
dGhfemMgPSB0b3RhbF9zaXplOwo+ICsJaWYgKHpjX2RpciA9PSBVS185UFJFUV9aQ0RJUl9XUklU
RSkKPiArCQl0b3RhbF9zaXplX3dpdGhfemMgKz0gemNfc2l6ZTsKPiArCj4gKwkvKiBTZXJpYWxp
emUgdGhlIGhlYWRlci4gKi8KPiArCXJlcS0+eG1pdC5vZmZzZXQgPSAwOwo+ICsJcmMgPSB1a185
cHJlcV9zZXJpYWxpemUocmVxLCAiZGJ3IiwgdG90YWxfc2l6ZV93aXRoX3pjLCByZXEtPnhtaXQu
dHlwZSwKPiArCQkJcmVxLT50YWcpOwo+ICsJaWYgKHJjIDwgMCkKPiArCQlnb3RvIG91dDsKPiAr
Cj4gKwkvKiBSZXNldCBvZmZzZXQgYW5kIHNpemUgdG8gc2FuZSB2YWx1ZXMuICovCj4gKwlyZXEt
PnhtaXQub2Zmc2V0ID0gMDsKPiArCXJlcS0+eG1pdC5zaXplID0gdG90YWxfc2l6ZTsKPiArCj4g
KwkvKiBVcGRhdGUgemVybyBjb3B5IGJ1ZmZlcnMuICovCj4gKwlpZiAoemNfZGlyID09IFVLXzlQ
UkVRX1pDRElSX1dSSVRFKSB7Cj4gKwkJcmVxLT54bWl0LnpjX2J1ZiA9IHpjX2J1ZjsKPiArCQly
ZXEtPnhtaXQuemNfc2l6ZSA9IHpjX3NpemU7Cj4gKwkJLyogWmVyby1jb3B5IG9mZnNldCBmb3Ig
d3JpdGVzIG11c3Qgc3RhcnQgYXQgdGhlIGVuZCBvZiBidWYuICovCj4gKwkJcmVxLT54bWl0Lnpj
X29mZnNldCA9IHJlcS0+eG1pdC5zaXplOwo+ICsJfSBlbHNlIGlmICh6Y19kaXIgPT0gVUtfOVBS
RVFfWkNESVJfUkVBRCkgewo+ICsJCXJlcS0+cmVjdi56Y19idWYgPSB6Y19idWY7Cj4gKwkJcmVx
LT5yZWN2LnpjX3NpemUgPSB6Y19zaXplOwo+ICsJCXJlcS0+cmVjdi56Y19vZmZzZXQgPSB6Y19v
ZmZzZXQ7Cj4gKwkJLyogVGhlIHJlY2VpdmUgYnVmZmVyIG11c3QgZW5kIGJlZm9yZSB0aGUgemMg
YnVmLiAqLwo+ICsJCXJlcS0+cmVjdi5zaXplID0gemNfb2Zmc2V0Owo+ICsJfQo+ICsKPiArCS8q
IFVwZGF0ZSB0aGUgc3RhdGUuICovCj4gKwlVS19XUklURV9PTkNFKHJlcS0+c3RhdGUsIFVLXzlQ
UkVRX1JFQURZKTsKPiArCj4gK291dDoKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHVr
XzlwcmVxX3JlY2VpdmVfY2Ioc3RydWN0IHVrXzlwcmVxICpyZXEsIHVpbnQzMl90IHJlY3Zfc2l6
ZSkKPiArewo+ICsJdWludDMyX3Qgc2l6ZTsKPiArCXVpbnQxNl90IHRhZzsKPiArCWludCByYzsK
PiArCj4gKwlVS19BU1NFUlQocmVxKTsKPiArCj4gKwkvKiBDaGVjayBzdGF0ZSBhbmQgdGhlIGV4
aXN0ZW5jZSBvZiB0aGUgaGVhZGVyLiAqLwo+ICsJaWYgKFVLX1JFQURfT05DRShyZXEtPnN0YXRl
KSAhPSBVS185UFJFUV9TRU5UKQo+ICsJCXJldHVybiAtRUlPOwo+ICsJaWYgKHJlY3Zfc2l6ZSA8
IFVLXzlQX0hFQURFUl9TSVpFKQo+ICsJCXJldHVybiAtRUlPOwo+ICsKPiArCS8qIERlc2VyaWFs
aXplIHRoZSBoZWFkZXIgaW50byByZXF1ZXN0IGZpZWxkcy4gKi8KPiArCXJlcS0+cmVjdi5vZmZz
ZXQgPSAwOwo+ICsJcmVxLT5yZWN2LnNpemUgPSByZWN2X3NpemU7Cj4gKwlyYyA9IF9mY2FsbF9k
ZXNlcmlhbGl6ZSgmcmVxLT5yZWN2LCAiZGJ3IiwgJnNpemUsCj4gKwkJCSZyZXEtPnJlY3YudHlw
ZSwgJnRhZyk7Cj4gKwo+ICsJLyogQ2hlY2sgc2FuaXR5IG9mIGRlc2VyaWFsaXplZCB2YWx1ZXMu
ICovCj4gKwlpZiAocmMgPCAwKQo+ICsJCXJldHVybiByYzsKPiArCWlmIChzaXplID4gcmVjdl9z
aXplKQo+ICsJCXJldHVybiAtRUlPOwo+ICsJaWYgKHJlcS0+dGFnICE9IHRhZykKPiArCQlyZXR1
cm4gLUVJTzsKPiArCj4gKwkvKiBGaXggdGhlIHJlY2VpdmUgc2l6ZSBmb3IgemVyby1jb3B5IHJl
cXVlc3RzLiAqLwo+ICsJaWYgKHJlcS0+cmVjdi56Y19idWYgJiYgcmVxLT5yZWN2LnR5cGUgIT0g
VUtfOVBfUkVSUk9SKQo+ICsJCXJlcS0+cmVjdi5zaXplID0gcmVxLT5yZWN2LnpjX29mZnNldDsK
PiArCWVsc2UKPiArCQlyZXEtPnJlY3Yuc2l6ZSA9IHNpemU7Cj4gKwo+ICsJLyogVXBkYXRlIHRo
ZSBzdGF0ZS4gKi8KPiArCVVLX1dSSVRFX09OQ0UocmVxLT5zdGF0ZSwgVUtfOVBSRVFfUkVDRUlW
RUQpOwo+ICsKPiArI2lmIENPTkZJR19MSUJVS1NDSEVECj4gKwkvKiBOb3RpZnkgYW55IHdhaXRp
bmcgdGhyZWFkcy4gKi8KPiArCXVrX3dhaXRxX3dha2VfdXAoJnJlcS0+d3EpOwo+ICsjZW5kaWYK
PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IHVrXzlwcmVxX3dhaXRyZXBseShzdHJ1
Y3QgdWtfOXByZXEgKnJlcSkKPiArewo+ICsJaW50IHJjOwo+ICsKPiArI2lmIENPTkZJR19MSUJV
S1NDSEVECj4gKwl1a193YWl0cV93YWl0X2V2ZW50KCZyZXEtPndxLCByZXEtPnN0YXRlID09IFVL
XzlQUkVRX1JFQ0VJVkVEKTsKPiArI2Vsc2UKPiArCXdoaWxlIChVS19SRUFEX09OQ0UocmVxLT5z
dGF0ZSkgIT0gVUtfOVBSRVFfUkVDRUlWRUQpCj4gKwkJOwo+ICsjZW5kaWYKPiArCj4gKwkvKiBD
aGVjayBmb3IgOVAgc2VydmVyLXNpZGUgZXJyb3JzLiAqLwo+ICsJcmMgPSB1a185cHJlcV9lcnJv
cihyZXEpOwo+ICsKPiArCXJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHVrXzlwcmVxX2Vycm9y
KHN0cnVjdCB1a185cHJlcSAqcmVxKQo+ICt7Cj4gKwl1aW50MzJfdCBlcnJjb2RlOwo+ICsJc3Ry
dWN0IHVrXzlwX3N0ciBlcnJvcjsKPiArCWludCByYyA9IDA7Cj4gKwo+ICsJaWYgKFVLX1JFQURf
T05DRShyZXEtPnN0YXRlKSAhPSBVS185UFJFUV9SRUNFSVZFRCkKPiArCQlyZXR1cm4gLUVJTzsK
PiArCWlmIChyZXEtPnJlY3YudHlwZSAhPSBVS185UF9SRVJST1IpCj4gKwkJcmV0dXJuIDA7Cj4g
Kwo+ICsJLyoKPiArCSAqIFRoZSByZXF1ZXN0IHNob3VsZCBub3QgaGF2ZSBoYWQgYW55IGRhdGEg
ZGVzZXJpYWxpemVkIGZyb20gaXQgcHJpb3IKPiArCSAqIHRvIHRoaXMgY2FsbC4KPiArCSAqLwo+
ICsJVUtfQlVHT04ocmVxLT5yZWN2Lm9mZnNldCAhPSBVS185UF9IRUFERVJfU0laRSk7Cj4gKwo+
ICsJcmMgPSB1a185cHJlcV9kZXNlcmlhbGl6ZShyZXEsICJzZCIsICZlcnJvciwgJmVycmNvZGUp
Owo+ICsJaWYgKHJjIDwgMCkKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ICsJdWtfcHJfaW5mbygidWs5
cDogUkVSUk9SICUuKnMgJWRcbiIsIGVycm9yLnNpemUsIGVycm9yLmRhdGEsIGVycmNvZGUpOwo+
ICsJaWYgKGVycmNvZGUgPT0gMCB8fCBlcnJjb2RlID49IDUxMikKPiArCQlyZXR1cm4gLUVJTzsK
PiArCj4gKwlyZXR1cm4gLWVycmNvZGU7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvTWFr
ZWZpbGUudWsgYi9saWIvdWs5cC9NYWtlZmlsZS51awo+IGluZGV4IGIxMDcxYTBlN2QzYy4uYWVh
NzIyYTU4NWI5IDEwMDY0NAo+IC0tLSBhL2xpYi91azlwL01ha2VmaWxlLnVrCj4gKysrIGIvbGli
L3VrOXAvTWFrZWZpbGUudWsKPiBAQCAtNCwzICs0LDQgQEAgQ0lOQ0xVREVTLSQoQ09ORklHX0xJ
QlVLOVApCQkrPSAtSSQoTElCVUs5UF9CQVNFKS9pbmNsdWRlCj4gICBDWFhJTkNMVURFUy0kKENP
TkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQo+ICAgCj4gICBMSUJV
SzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXBkZXZfdHJhbnMuYwo+ICtMSUJVSzlQX1NS
Q1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXByZXEuYwo+IGRpZmYgLS1naXQgYS9saWIvdWs5cC9l
eHBvcnRzeW1zLnVrIGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awo+IGluZGV4IDQ1ZjQ4N2RhMmZm
Zi4uODUwZmZhMmRiMjMzIDEwMDY0NAo+IC0tLSBhL2xpYi91azlwL2V4cG9ydHN5bXMudWsKPiAr
KysgYi9saWIvdWs5cC9leHBvcnRzeW1zLnVrCj4gQEAgLTEsMyArMSwxNCBAQAo+ICAgdWtfOXBk
ZXZfdHJhbnNfcmVnaXN0ZXIKPiAgIHVrXzlwZGV2X3RyYW5zX2J5X25hbWUKPiAgIHVrXzlwZGV2
X3RyYW5zX2RlZmF1bHQKPiArdWtfOXByZXFfZ2V0Cj4gK3VrXzlwcmVxX3B1dAo+ICt1a185cHJl
cV92c2VyaWFsaXplCj4gK3VrXzlwcmVxX3NlcmlhbGl6ZQo+ICt1a185cHJlcV92ZGVzZXJpYWxp
emUKPiArdWtfOXByZXFfZGVzZXJpYWxpemUKPiArdWtfOXByZXFfY29weV90bwo+ICt1a185cHJl
cV9jb3B5X2Zyb20KPiArdWtfOXByZXFfcmVjZWl2ZV9jYgo+ICt1a185cHJlcV93YWl0cmVwbHkK
PiArdWtfOXByZXFfZXJyb3IKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cHJl
cS5oIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cHJlcS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK
PiBpbmRleCAwMDAwMDAwMDAwMDAuLmVlNGQyYWY4NjM1ZAo+IC0tLSAvZGV2L251bGwKPiArKysg
Yi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwcmVxLmgKPiBAQCAtMCwwICsxLDMwMCBAQAo+ICsvKiBT
UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8qCj4gKyAqIEF1dGhv
cnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdo
dCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICog
YXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBp
dHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiAr
ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCj4g
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1IgTU9E
SUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fVUtfOVBSRVFfXwo+ICsj
ZGVmaW5lIF9fVUtfOVBSRVFfXwo+ICsKPiArI2luY2x1ZGUgPGludHR5cGVzLmg+Cj4gKyNpbmNs
dWRlIDx1ay9jb25maWcuaD4KPiArI2luY2x1ZGUgPHVrL2FsbG9jLmg+Cj4gKyNpbmNsdWRlIDx1
ay9lc3NlbnRpYWxzLmg+Cj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9y
ZWZjb3VudC5oPgo+ICsjaWYgQ09ORklHX0xJQlVLU0NIRUQKPiArI2luY2x1ZGUgPHVrL3dhaXRf
dHlwZXMuaD4KPiArI2VuZGlmCj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArZXh0ZXJuICJD
IiB7Cj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogVGhlIGhlYWRlciBjb25zaXN0cyBvZiB0aGUg
Zm9sbG93aW5nIGZpZWxkczogc2l6ZSAoNCBieXRlcyksIHR5cGUgKDEpIGFuZAo+ICsgKiB0YWcg
KDIpLgo+ICsgKi8KPiArI2RlZmluZSBVS185UF9IRUFERVJfU0laRSAgICAgICAgICAgICAgIDdV
Cj4gKwo+ICsvKgo+ICsgKiBUaGUgbWF4aW11bSBidWZmZXIgc2l6ZSBmb3IgYW4gZXJyb3IgcmVw
bHkgaXMgZ2l2ZW4gYnkgdGhlIGhlYWRlciAoNyksIHRoZQo+ICsgKiBzdHJpbmcgc2l6ZSAoMiks
IHRoZSBlcnJvciBzdHJpbmcgKDEyOCkgYW5kIHRoZSBlcnJvciBjb2RlICg0KTogaW4gdG90YWws
Cj4gKyAqIDE0MS4KPiArICovCj4gKyNkZWZpbmUgVUtfOVBfUkVSUk9SX01BWFNJWkUgICAgICAg
ICAgICAxNDFVCj4gKwo+ICsvKioKPiArICogQGludGVybmFsCj4gKyAqCj4gKyAqIERlc2NyaWJl
cyB0aGUgOXAgemVyby1jb3B5IGRpcmVjdGlvbi4KPiArICovCj4gK2VudW0gdWtfOXByZXFfemNk
aXIgewo+ICsJVUtfOVBSRVFfWkNESVJfTk9ORSwKPiArCVVLXzlQUkVRX1pDRElSX1JFQUQsCj4g
KwlVS185UFJFUV9aQ0RJUl9XUklURSwKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBAaW50ZXJuYWwK
PiArICoKPiArICogRGVzY3JpYmVzIGEgOXAgZmNhbGwgc3RydWN0dXJlLgo+ICsgKi8KPiArc3Ry
dWN0IHVrXzlwcmVxX2ZjYWxsIHsKPiArCS8qCj4gKwkgKiBUb3RhbCBzaXplIG9mIHRoZSBmY2Fs
bC4gSW5pdGlhbGx5LCB0aGlzIGlzIHRoZSBidWZmZXIgc2l6ZS4KPiArCSAqIEFmdGVyIHJlYWR5
IChvbiB4bWl0KSBvciByZXBseSAob24gcmVjdiksIHRoaXMgd2lsbCBiZSB0aGUgc2l6ZSBvZgo+
ICsJICogdGhlIHNlbnQvcmVjZWl2ZWQgZGF0YS4KPiArCSAqLwo+ICsJdWludDMyX3QgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplOwo+ICsJLyogVHlwZSBvZiB0aGUgZmNhbGwuIFNob3VsZCBi
ZSBUKiBmb3IgdHJhbnNtaXQsIFIqIGZvciByZWNlaXZlLiAqLwo+ICsJdWludDhfdCAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlOwo+ICsJLyogT2Zmc2V0IHdoaWxlIHNlcmlhbGl6aW5nIG9y
IGRlc2VyaWFsaXppbmcuICovCj4gKwl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldDsKPiArCS8qIEJ1ZmZlciBwb2ludGVyLiAqLwo+ICsJdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqYnVmOwo+ICsKPiArCS8qIFplcm8tY29weSBidWZmZXIgcG9pbnRlci4gKi8K
PiArCXZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnpjX2J1ZjsKPiArCS8qIFplcm8t
Y29weSBidWZmZXIgc2l6ZS4gKi8KPiArCXVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg
emNfc2l6ZTsKPiArCS8qIFplcm8tY29weSBidWZmZXIgb2Zmc2V0IGluIHRoZSA5UCBtZXNzYWdl
LiAqLwo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICB6Y19vZmZzZXQ7Cj4gK307
Cj4gKwo+ICsvKioKPiArICogRGVzY3JpYmVzIHRoZSBwb3NzaWJsZSBzdGF0ZXMgaW4gd2hpY2gg
YSByZXF1ZXN0IG1heSBiZS4KPiArICoKPiArICogLSBOT05FOiBSaWdodCBhZnRlciBhbGxvY2F0
aW5nLgo+ICsgKiAtIElOSVRJQUxJWkVEOiBSZXF1ZXN0IGlzIHJlYWR5IHRvIHJlY2VpdmUgc2Vy
aWFsaXphdGlvbiBkYXRhLgo+ICsgKiAtIFJFQURZOiBSZXF1ZXN0IGlzIHJlYWR5IHRvIGJlIHNl
bnQuCj4gKyAqIC0gUkVDRUlWRUQ6IFRyYW5zcG9ydCBsYXllciBoYXMgcmVjZWl2ZWQgdGhlIHJl
cGx5IGFuZCBpbXBvcnRhbnQgZGF0YSBzdWNoCj4gKyAqICAgYXMgdGhlIHRhZywgdHlwZSBhbmQg
c2l6ZSBoYXZlIGJlZW4gdmFsaWRhdGVkLgo+ICsgKi8KPiArZW51bSB1a185cHJlcV9zdGF0ZSB7
Cj4gKwlVS185UFJFUV9OT05FID0gMCwKPiArCVVLXzlQUkVRX0lOSVRJQUxJWkVELAo+ICsJVUtf
OVBSRVFfUkVBRFksCj4gKwlVS185UFJFUV9TRU5ULAo+ICsJVUtfOVBSRVFfUkVDRUlWRUQKPiAr
fTsKPiArCj4gKy8qKgo+ICsgKiAgRGVzY3JpYmVzIGEgOVAgcmVxdWVzdC4KPiArICoKPiArICog
IFRoaXMgZ2V0cyBhbGxvY2F0ZWQgdmlhIHVrXzlwZGV2X3JlcV9jcmVhdGUoKSwgYW5kIGZyZWVk
IHdoZW4gaXQgaXMgbm90Cj4gKyAqICByZWZlcmVuY2VkIGFueW1vcmUuIEEgY2FsbCB0byB1a185
cGRldl9yZXFfcmVtb3ZlKCkgaXMgbWFuZGF0b3J5IHRvCj4gKyAqICBjb3JyZWN0bHkgZnJlZSB0
aGlzIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvZiByZXF1ZXN0cyBtYW5hZ2VkCj4gKyAq
ICBieSB0aGUgOXAgZGV2aWNlLgo+ICsgKi8KPiArc3RydWN0IHVrXzlwcmVxIHsKPiArCS8qIFRy
YW5zbWl0IGZjYWxsLiAqLwo+ICsJc3RydWN0IHVrXzlwcmVxX2ZjYWxsICAgICAgICAgICB4bWl0
Owo+ICsJLyogUmVjZWl2ZSBmY2FsbC4gKi8KPiArCXN0cnVjdCB1a185cHJlcV9mY2FsbCAgICAg
ICAgICAgcmVjdjsKPiArCS8qIFN0YXRlIG9mIHRoZSByZXF1ZXN0LiBTZWUgdGhlIHN0YXRlIGVu
dW0gZm9yIGRldGFpbHMuICovCj4gKwllbnVtIHVrXzlwcmVxX3N0YXRlICAgICAgICAgICAgIHN0
YXRlOwo+ICsJLyogVGFnIGFsbG9jYXRlZCB0byB0aGlzIHJlcXVlc3QuICovCj4gKwl1aW50MTZf
dCAgICAgICAgICAgICAgICAgICAgICAgIHRhZzsKPiArCS8qIEVudHJ5IGludG8gdGhlIGxpc3Qg
b2YgcmVxdWVzdHMgKEFQSS1pbnRlcm5hbCkuICovCj4gKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkICAg
ICAgICAgICAgIF9saXN0Owo+ICsJLyogQGludGVybmFsIEFsbG9jYXRvciB1c2VkIHRvIGFsbG9j
YXRlIHRoaXMgcmVxdWVzdC4gKi8KPiArCXN0cnVjdCB1a19hbGxvYyAgICAgICAgICAgICAgICAg
Kl9hOwo+ICsJLyogVHJhY2tzIHRoZSBudW1iZXIgb2YgcmVmZXJlbmNlcyB0byB0aGlzIHN0cnVj
dHVyZS4gKi8KPiArCV9fYXRvbWljICAgICAgICAgICAgICAgICAgICAgICAgcmVmY291bnQ7Cj4g
KyNpZiBDT05GSUdfTElCVUtTQ0hFRAo+ICsJLyogV2FpdC1xdWV1ZSBmb3Igc3RhdGUgY2hhbmdl
cy4gKi8KPiArCXN0cnVjdCB1a193YWl0cSAgICAgICAgICAgICAgICAgd3E7Cj4gKyNlbmRpZgo+
ICt9Owo+ICsKPiArLyoqCj4gKyAqIEBpbnRlcm5hbAo+ICsgKiBBbGxvY2F0ZXMgYSA5cCByZXF1
ZXN0Lgo+ICsgKiBTaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHksIHVzZSB1a185cGRldl9yZXFf
Y3JlYXRlKCkgaW5zdGVhZC4KPiArICoKPiArICogQHBhcmFtIGEKPiArICogICBBbGxvY2F0b3Ig
dG8gdXNlLgo+ICsgKiBAcGFyYW0gc2l6ZQo+ICsgKiAgIE1pbmltdW0gc2l6ZSBvZiB0aGUgcmVj
ZWl2ZSBhbmQgdHJhbnNtaXQgYnVmZmVycy4KPiArICogQHJldHVybgo+ICsgKiAgIC0gKD09TlVM
TCk6IE91dCBvZiBtZW1vcnkuCj4gKyAqICAgLSAoIT1OVUxMKTogU3VjY2Vzc2Z1bC4KPiArICov
Cj4gK3N0cnVjdCB1a185cHJlcSAqdWtfOXByZXFfYWxsb2Moc3RydWN0IHVrX2FsbG9jICphLCB1
aW50MzJfdCBzaXplKTsKPiArCj4gKy8qKgo+ICsgKiBHZXRzIHRoZSA5cCByZXF1ZXN0LCBpbmNy
ZW1lbnRpbmcgdGhlIHJlZmVyZW5jZSBjb3VudC4KPiArICoKPiArICogQHBhcmFtIHJlcQo+ICsg
KiAgIFJlZmVyZW5jZSB0byB0aGUgOXAgcmVxdWVzdC4KPiArICovCj4gK3ZvaWQgdWtfOXByZXFf
Z2V0KHN0cnVjdCB1a185cHJlcSAqcmVxKTsKPiArCj4gKy8qKgo+ICsgKiBQdXRzIHRoZSA5cCBy
ZXF1ZXN0LCBkZWNyZW1lbnRpbmcgdGhlIHJlZmVyZW5jZSBjb3VudC4KPiArICogSWYgdGhpcyB3
YXMgdGhlIGxhc3QgbGl2ZSByZWZlcmVuY2UsIHRoZSBtZW1vcnkgd2lsbCBiZSBmcmVlZC4KPiAr
ICoKPiArICogQHBhcmFtIHJlcQo+ICsgKiAgIFJlZmVyZW5jZSB0byB0aGUgOXAgcmVxdWVzdC4K
PiArICogQHJldHVybgo+ICsgKiAgIC0gMDogVGhpcyB3YXMgbm90IHRoZSBsYXN0IGxpdmUgcmVm
ZXJlbmNlLgo+ICsgKiAgIC0gMTogVGhpcyB3YXMgdGhlIGxhc3QgbGl2ZSByZWZlcmVuY2UuCj4g
KyAqLwo+ICtpbnQgdWtfOXByZXFfcHV0KHN0cnVjdCB1a185cHJlcSAqcmVxKTsKPiArCj4gKy8q
Cj4gKyAqIFRoZSBmb2xsb3dpbmcgZmFtaWx5IG9mIHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFs
aXphdGlvbiBmdW5jdGlvbnMgd29yawo+ICsgKiBieSBlbXBsb3lpbmcgYSBwcmludGYtbGlrZSBm
b3JtYXR0aW5nIG1lY2hhbmlzbSBmb3IgZGF0YSB0eXBlcyBzdXBwb3J0ZWQgYnkKPiArICogdGhl
IDlwIHByb3RvY29sOgo+ICsgKiAtICdiJzogYnl0ZSAodWludDhfdCkKPiArICogLSAndyc6IHdv
cmQgKHVpbnQxNl90KQo+ICsgKiAtICdkJzogZG91YmxlLXdvcmQgKHVpbnQzMl90KQo+ICsgKiAt
ICdxJzogcXVhZC13b3JkICh1aW50NjRfdCkKPiArICogLSAncyc6IHVrXzlwX3N0ciAqCj4gKyAq
IC0gJ1MnOiB1a185cF9zdGF0ICoKPiArICoKPiArICogU2ltaWxhcmx5IHRvIHZwcmludGYoKSwg
dGhlIHZzZXJpYWxpemUoKSBhbmQgdmRlc2VyaWFsaXplKCkgZnVuY3Rpb25zIHRha2UKPiArICog
YSB2YV9saXN0IGluc3RlYWQgb2YgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLgo+ICsg
Kgo+ICsgKiBQb3NzaWJsZSByZXR1cm4gdmFsdWVzOgo+ICsgKiAtIDA6IE9wZXJhdGlvbiBzdWNj
ZXNzZnVsLgo+ICsgKiAtICgtRUlOVkFMKTogSW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyLgo+ICsg
KiAtICgtRU5PQlVGUyk6IEVuZCBvZiBidWZmZXIgcmVhY2hlZC4KPiArICovCj4gKwo+ICtpbnQg
dWtfOXByZXFfdnNlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3QgY2hhciAqZm10
LCB2YV9saXN0IHZsKTsKPiAraW50IHVrXzlwcmVxX3NlcmlhbGl6ZShzdHJ1Y3QgdWtfOXByZXEg
KnJlcSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwo+ICtpbnQgdWtfOXByZXFfdmRlc2VyaWFsaXpl
KHN0cnVjdCB1a185cHJlcSAqcmVxLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmwpOwo+ICtp
bnQgdWtfOXByZXFfZGVzZXJpYWxpemUoc3RydWN0IHVrXzlwcmVxICpyZXEsIGNvbnN0IGNoYXIg
KmZtdCwgLi4uKTsKPiArCj4gKy8qKgo+ICsgKiBDb3BpZXMgcmF3IGRhdGEgZnJvbSB0aGUgcmVx
dWVzdCByZWNlaXZlIGJ1ZmZlciB0byB0aGUgcHJvdmlkZWQgYnVmZmVyLgo+ICsgKgo+ICsgKiBA
cGFyYW0gcmVxCj4gKyAqICAgUmVmZXJlbmNlIHRvIHRoZSA5cCByZXF1ZXN0Lgo+ICsgKiBAcGFy
YW0gYnVmCj4gKyAqICAgRGVzdGluYXRpb24gYnVmZmVyLgo+ICsgKiBAcGFyYW0gc2l6ZQo+ICsg
KiAgIEFtb3VudCB0byBjb3B5Lgo+ICsgKiBQb3NzaWJsZSByZXR1cm4gdmFsdWVzOgo+ICsgKiAt
IDA6IE9wZXJhdGlvbiBzdWNjZXNzZnVsLgo+ICsgKiAtICgtRU5PQlVGUyk6IEVuZCBvZiBidWZm
ZXIgcmVhY2hlZC4KPiArICovCj4gK2ludCB1a185cHJlcV9jb3B5X3RvKHN0cnVjdCB1a185cHJl
cSAqcmVxLCB2b2lkICpidWYsIHVpbnQzMl90IHNpemUpOwo+ICsKPiArLyoqCj4gKyAqIENvcGll
cyByYXcgZGF0YSBmcm9tIHRoZSBwcm92aWRlZCBidWZmZXIgdG8gdGhlIHJlcXVlc3QgdHJhbnNt
aXNzaW9uIGJ1ZmZlci4KPiArICoKPiArICogQHBhcmFtIHJlcQo+ICsgKiAgIFJlZmVyZW5jZSB0
byB0aGUgOXAgcmVxdWVzdC4KPiArICogQHBhcmFtIGJ1Zgo+ICsgKiAgIFNvdXJjZSBidWZmZXIu
Cj4gKyAqIEBwYXJhbSBzaXplCj4gKyAqICAgQW1vdW50IHRvIGNvcHkuCj4gKyAqIFBvc3NpYmxl
IHJldHVybiB2YWx1ZXM6Cj4gKyAqIC0gMDogT3BlcmF0aW9uIHN1Y2Nlc3NmdWwuCj4gKyAqIC0g
KC1FTk9CVUZTKTogRW5kIG9mIGJ1ZmZlciByZWFjaGVkLgo+ICsgKi8KPiAraW50IHVrXzlwcmVx
X2NvcHlfZnJvbShzdHJ1Y3QgdWtfOXByZXEgKnJlcSwgY29uc3Qgdm9pZCAqYnVmLCB1aW50MzJf
dCBzaXplKTsKPiArCj4gKy8qKgo+ICsgKiBNYXJrcyB0aGUgZ2l2ZW4gcmVxdWVzdCBhcyBiZWlu
ZyByZWFkeSwgdHJhbnNpdGlvbmluZyBiZXR3ZWVuIHN0YXRlcwo+ICsgKiBJTklUSUFMSVpFRCBh
bmQgUkVBRFkuCj4gKyAqCj4gKyAqIEBwYXJhbSByZXEKPiArICogICBSZWZlcmVuY2UgdG8gdGhl
IDlwIHJlcXVlc3QuCj4gKyAqIEBwYXJhbSB6Y19kaXIKPiArICogICBaZXJvLWNvcHkgZGlyZWN0
aW9uLgo+ICsgKiBAcGFyYW0gemNfYnVmCj4gKyAqICAgWmVyby1jb3B5IGJ1ZmZlciwgaWYgemNf
ZGlyIGlzIG5vdCBOT05FLgo+ICsgKiBAcGFyYW0gemNfc2l6ZQo+ICsgKiAgIFplcm8tY29weSBi
dWZmZXIgc2l6ZSwgaWYgemNfZGlyIGlzIG5vdCBOT05FLgo+ICsgKiBAcGFyYW0gemNfb2Zmc2V0
Cj4gKyAqICAgWmVyby1jb3B5IG9mZnNldCB3aXRoaW4gdGhlIHJlY2VpdmVkIG1lc3NhZ2UsIGlm
IHpjX2RpciBpcyBSRUFELgo+ICsgKiBAcmV0dXJuCj4gKyAqICAgLSAwOiBTdWNjZXNzZnVsLgo+
ICsgKiAgIC0gKDwgMCk6IEludmFsaWQgc3RhdGUgb3IgcmVxdWVzdCBzaXplIHNlcmlhbGl6YXRp
b24gZmFpbGVkLgo+ICsgKi8KPiAraW50IHVrXzlwcmVxX3JlYWR5KHN0cnVjdCB1a185cHJlcSAq
cmVxLCBlbnVtIHVrXzlwcmVxX3pjZGlyIHpjX2RpciwKPiArCQl2b2lkICp6Y19idWYsIHVpbnQz
Ml90IHpjX3NpemUsIHVpbnQzMl90IHpjX29mZnNldCk7Cj4gKwo+ICsvKioKPiArICogRnVuY3Rp
b24gY2FsbGVkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllciB3aGVuIGEgcmVxdWVzdCBoYXMgYmVl
biByZWNlaXZlZC4KPiArICogSW1wbGVtZW50cyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBTRU5U
IHRvIHRoZSBSRUNFSVZFRCBzdGF0ZS4KPiArICoKPiArICogQHBhcmFtIHJlcQo+ICsgKiAgIFRo
ZSA5UCByZXF1ZXN0Lgo+ICsgKiBAcGFyYW0gcmVjdl9zaXplCj4gKyAqICAgU2l6ZSBvZiB0aGUg
cGFja2V0IHJlY2VpdmVkIGZyb20gdGhlIHRyYW5zcG9ydCBsYXllci4KPiArICogQHJldHVybgo+
ICsgKiAgIC0gKDApOiBTdWNjZXNzZnVsbHkgcmVjZWl2ZWQuCj4gKyAqICAgLSAoPCAwKTogQW4g
ZXJyb3Igb2NjdXJyZWQuCj4gKyAqLwo+ICtpbnQgdWtfOXByZXFfcmVjZWl2ZV9jYihzdHJ1Y3Qg
dWtfOXByZXEgKnJlcSwgdWludDMyX3QgcmVjdl9zaXplKTsKPiArCj4gKy8qKgo+ICsgKiBXYWl0
cyBmb3IgdGhlIHJlcGx5IHRvIGJlIHJlY2VpdmVkLgo+ICsgKgo+ICsgKiBAcGFyYW0gcmVxCj4g
KyAqICAgVGhlIDlQIHJlcXVlc3QuCj4gKyAqIEByZXR1cm4KPiArICogICAtICgwKTogU3VjY2Vz
c2Z1bC4KPiArICogICAtICg8IDApOiBGYWlsZWQuIFJldHVybnMgdGhlIGVycm9yIGNvZGUgcmVj
ZWl2ZWQgZnJvbSB0aGUgOVAgc2VydmVyLgo+ICsgKi8KPiAraW50IHVrXzlwcmVxX3dhaXRyZXBs
eShzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7Cj4gKwo+ICsvKioKPiArICogRXh0cmFjdHMgdGhlIGVy
cm9yIGZyb20gdGhlIHJlY2VpdmVkIHJlcGx5Lgo+ICsgKgo+ICsgKiBAcGFyYW0gcmVxCj4gKyAq
ICAgVGhlIDlQIHJlcXVlc3QuCj4gKyAqIEByZXR1cm4KPiArICogICAtICgwKTogTm8gZXJyb3Ig
b2NjdXJyZWQuCj4gKyAqICAgLSAoPCAwKTogQW4gUmVycm9yIHdhcyByZWNlaXZlZCwgdGhlIGVy
cm9yIGNvZGUgaXMgOXBmcy1zcGVjaWZpYy4KPiArICovCj4gK2ludCB1a185cHJlcV9lcnJvcihz
dHJ1Y3QgdWtfOXByZXEgKnJlcSk7Cj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArfQo+ICsj
ZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfX1VLXzlQUkVRX18gKi8KPiAKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:14:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:14: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 1hhDBj-00043u-6P; Sat, 29 Jun 2019 13:14:43 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lsMZ=U4=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hhDBh-00043p-8T
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:14:41 +0000
X-Inumbo-ID: d8b0f324-9a6f-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id d8b0f324-9a6f-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:14:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 912D91053A9;
 Sat, 29 Jun 2019 15:14:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id AmfMOz7PG4J8; Sat, 29 Jun 2019 15:14:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6D4BA105285;
 Sat, 29 Jun 2019 15:14:37 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Sat, 29 Jun 2019 15:14:37
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 1/3] Add .gitignore
Thread-Index: AQHVK492vKXl4vWhhE+IfbM54yzhmKayoduA
Date: Sat, 29 Jun 2019 13:14:36 +0000
Message-ID: <AC510204-86DE-4064-9CB6-9440290B967C@neclab.eu>
References: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625195151.13174-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195151.13174-2-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.201]
Content-ID: <98B2F259842B7E46A93900917B89CD88@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 1/3] Add .gitignore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Cc: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMjUuMDYuMTksIDIxOjUyLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9h
bmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBTaWduZWQtb2ZmLWJ5
OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
DQogICAgLS0tDQogICAgIC5naXRpZ25vcmUgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysr
KysNCiAgICAgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykNCiAgICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IC5naXRpZ25vcmUNCiAgICANCiAgICBkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBi
Ly5naXRpZ25vcmUNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAu
Ljc1ZDJmZDMNCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvLmdpdGlnbm9yZQ0KICAgIEBA
IC0wLDAgKzEsMjcgQEANCiAgICArKi5kZXBlbmQNCiAgICArKi5vDQogICAgKyouYQ0KICAgICsq
LmQNCiAgICArKi5zbw0KICAgICsqLm9yaWcNCiAgICArKi5yZWoNCiAgICArKi5iYWsNCiAgICAr
Ki5zd3ANCiAgICArKn4NCiAgICArLCoNCiAgICArXCMqXCMNCiAgICArLlwjKg0KICAgICtcI18q
XCMNCiAgICArLlwjXyoNCiAgICArIS5naXRpZ25vcmUNCiAgICArLioNCiAgICArDQogICAgKyMg
Z251IGdsb2JhbCBmaWxlcw0KICAgICtHUEFUSA0KICAgICtHUlRBR1MNCiAgICArR1NZTVMNCiAg
ICArR1RBR1MNCiAgICArDQogICAgKyMgY3Njb3BlIGZpbGVzDQogICAgK2NzY29wZS4qDQogICAg
K25jc2NvcGUuKg0KICAgIC0tIA0KICAgIDIuMjEuMA0KICAgIA0KICAgIA0KDQpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:17:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:17: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 1hhDEA-00047i-Dl; Sat, 29 Jun 2019 13:17:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=lsMZ=U4=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hhDE8-00047d-NN
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:17:12 +0000
X-Inumbo-ID: 31c0e33e-9a70-11e9-9886-43da1b823c03
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 31c0e33e-9a70-11e9-9886-43da1b823c03;
 Sat, 29 Jun 2019 13:17:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 03394F2023;
 Sat, 29 Jun 2019 15:17:07 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 4O2a85pSS8MK; Sat, 29 Jun 2019 15:17:06 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C3D0BF2022;
 Sat, 29 Jun 2019 15:17:00 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by ENCELADUS.office.hd
 ([192.168.24.52]) with mapi id 14.03.0319.002; Sat, 29 Jun 2019 15:17:00
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 2/3] Add documentation
Thread-Index: AQHVK4944BifvHv+0UyTlaWaCBvBPKayorwA
Date: Sat, 29 Jun 2019 13:16:59 +0000
Message-ID: <12D00539-6B3C-4786-96DC-5985A9E1DDD7@neclab.eu>
References: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625195151.13174-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195151.13174-3-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.201]
Content-ID: <89EB94576E2F92468150808B3D5C2C13@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 2/3] Add documentation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KSnVzdCBvbmUgbWlub3IgY29tbWVudCBiZWxvdywgd2hpY2ggSSdsbCBmaXgg
b24gdXBzdHJlYW1pbmcuDQoNCi0tIEZlbGlwZQ0KDQpSZXZpZXdlZC1ieTogRmVsaXBlIEh1aWNp
IDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1Pg0K77u/DQpPbiAyNS4wNi4xOSwgMjE6NTIsICJWbGFk
LUFuZHJlaSBCxIJET0lVICg3ODY5MikiIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBi
LnJvPiB3cm90ZToNCg0KICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxh
ZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCiAgICAtLS0NCiAgICAgQ09ESU5HX1NU
WUxFLm1kIHwgIDQgKysrKw0KICAgICBDT05UUklCVVRJTkcubWQgfCAgNCArKysrDQogICAgIENP
UFlJTkcubWQgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAgICAg
TUFJTlRBSU5FUlMubWQgIHwgMTEgKysrKysrKysrKysNCiAgICAgUkVBRE1FLm1kICAgICAgIHwg
IDUgKysrKysNCiAgICAgNSBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspDQogICAgIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0
IENPTlRSSUJVVElORy5tZA0KICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09QWUlORy5tZA0KICAg
ICBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQNCiAgICAgY3JlYXRlIG1vZGUgMTAw
NjQ0IFJFQURNRS5tZA0KICAgIA0KICAgIGRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9D
T0RJTkdfU1RZTEUubWQNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAw
MDAuLjU3MzAwNDENCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIvQ09ESU5HX1NUWUxFLm1k
DQogICAgQEAgLTAsMCArMSw0IEBADQogICAgK0NvZGluZyBTdHlsZQ0KICAgICs9PT09PT09PT09
PT0NCiAgICArDQogICAgK1BsZWFzZSByZWZlciB0byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmls
ZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lg0KICAgIGRpZmYgLS1naXQgYS9DT05U
UklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K
ICAgIGluZGV4IDAwMDAwMDAuLjVmNTVlY2ENCiAgICAtLS0gL2Rldi9udWxsDQogICAgKysrIGIv
Q09OVFJJQlVUSU5HLm1kDQogICAgQEAgLTAsMCArMSw0IEBADQogICAgK0NvbnRyaWJ1dGluZyB0
byBVbmlrcmFmdA0KICAgICs9PT09PT09PT09PT09PT09PT09PT09PQ0KICAgICsNCiAgICArUGxl
YXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWty
YWZ0IHJlcG9zaXRvcnkuDQogICAgZGlmZiAtLWdpdCBhL0NPUFlJTkcubWQgYi9DT1BZSU5HLm1k
DQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRleCAwMDAwMDAwLi5mNjAwYTAwDQog
ICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0NPUFlJTkcubWQNCiAgICBAQCAtMCwwICsxLDMx
IEBADQogICAgK0xpY2Vuc2UNCiAgICArPT09PT09PQ0KICAgICsNCiAgICArVW5pa3JhZnQgbGli
cW5ucGFjayB3cmFwcGVycw0KICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICsNCiAg
ICArVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHdyYXBwZXIgY29kZSB0byBidWlsZCBxbm5wYWNr
IHdpdGggVW5pa3JhZnQuDQogICAgK0VhY2ggQyBjb2RlIGZpbGUgaW4gdGhpcyByZXBvc2l0b3J5
IHNob3VsZCBkZWNsYXJlIHdobyBpcyB0aGUNCiAgICArY29weXJpZ2h0IG93bmVyIGFuZCB1bmRl
ciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcw0KICAgICtsaWNlbnNlZC4g
SWYgc3VjaCBhIGxpY2VuY2Ugbm90ZSBpcyBtaXNzaW5nLCB0aGUgZm9sbG93aW5nIGNvcHlyaWdo
dA0KICAgICtub3RpY2Ugd2lsbCBhcHBseToNCiAgICArDQogICAgKw0KICAgICsJQ29weXJpZ2h0
KEMpIDIwMTkuIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFyZXN0LiANCiAgICArCUFs
bCByaWdodHMgcmVzZXJ2ZWQuDQogICAgKwkNCiAgICArCVRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCiAgICArCW1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCiAgICArCUxp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cg0KICAgICsJdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLg0KICAgICsJDQogICAgKwlUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiAgICArCWJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQogICAg
KwlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQ0KICAgICsJTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4NCiAgICArCQ0KICAgICsJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KICAgICsJTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeSBpbiB0aGUgZmlsZSBDT1BZSU5HLkxJQjsNCiAgICArCWlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwNCiAgICArCTU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0ENCiAgICArDQog
ICAgZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQNCiAgICBuZXcg
ZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAuLjgwN2E3NDcNCiAgICAtLS0gL2Rl
di9udWxsDQogICAgKysrIGIvTUFJTlRBSU5FUlMubWQNCiAgICBAQCAtMCwwICsxLDExIEBADQog
ICAgK01haW50YWluZXJzIExpc3QNCiAgICArPT09PT09PT09PT09PT09PQ0KICAgICsNCiAgICAr
Rm9yIG5vdGVzIG9uIGhvdyB0byByZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0
byBgTUFJTlRBSU5FUlMubWRgIGluDQogICAgK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnku
DQogICAgKw0KICAgICsJTElCUFFOTlBBQ0stVU5JS1JBRlQNCiAgICArCU06CUZlbGlwZSBIdWlj
aSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCiAgICArCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8
dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4NCiAgICArCUw6CW1pbmlvcy1kZXZl
bEBsaXN0cy54ZW4ub3JnDQogICAgKwlGOiAqDQogICAgZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBi
L1JFQURNRS5tZA0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4u
MjU5MDVjMA0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9SRUFETUUubWQNCiAgICBAQCAt
MCwwICsxLDUgQEANCiAgICArbGlicHNpbWQgZm9yIFVuaWtyYWZ0DQogICAgKz09PT09PT09PT09
PT09PT09PT0NCg0KVGhpcyBpcyBhIGNvcHkgJiBwYXN0ZSB0eXBvLCBJJ2xsIGZpeCBpdCBvbiB1
cHN0cmVhbWluZy4NCg0KICAgICsNCiAgICArUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1k
YCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2ANCiAgICArc3ViZGly
ZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuDQogICAgLS0gDQogICAgMi4y
MS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:21:40 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:21: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 1hhDIR-0004kJ-Py; Sat, 29 Jun 2019 13:21: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=lsMZ=U4=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1hhDIQ-0004kE-IJ
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:21:38 +0000
X-Inumbo-ID: d1369ed6-9a70-11e9-ba1b-87bd29b1c157
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d1369ed6-9a70-11e9-ba1b-87bd29b1c157;
 Sat, 29 Jun 2019 13:21:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7874BF2023;
 Sat, 29 Jun 2019 15:21:34 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Qo-rZlur4yrQ; Sat, 29 Jun 2019 15:21:34 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from METHONE.office.hd (METHONE.office.hd [192.168.24.54])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 41613F2022;
 Sat, 29 Jun 2019 15:21:28 +0200 (CEST)
Received: from PALLENE.office.hd ([169.254.1.107]) by METHONE.office.hd
 ([192.168.24.54]) with mapi id 14.03.0319.002; Sat, 29 Jun 2019 15:21:28
 +0200
From: Felipe Huici <Felipe.Huici@neclab.eu>
To: =?utf-8?B?VmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIp?=
 <vlad_andrei.badoiu@stud.acs.upb.ro>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Thread-Topic: [UNIKRAFT/LIBQNNPACK PATCH 3/3] Initial port of QNNPACK on
 Unikraft
Thread-Index: AQHVK494+L7j996Lskyx80OTqTJ/7Kayo/wA
Date: Sat, 29 Jun 2019 13:21:27 +0000
Message-ID: <4FEA80B2-2687-4027-818A-1C3ED594B212@neclab.eu>
References: <20190625195151.13174-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20190625195151.13174-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20190625195151.13174-4-vlad_andrei.badoiu@stud.acs.upb.ro>
Accept-Language: en-US, de-DE
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.b.190609
x-originating-ip: [10.7.0.201]
Content-ID: <6DD7FBCFD4938649BDDD575676DA4280@office.hd>
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBQNNPACK PATCH 3/3] Initial port of
 QNNPACK 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: "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.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>

SGkgVmxhZCwNCg0KQXMgd2l0aCBwc21pZCwgSSdsbCBhZGQgcGFydHMgb2YgdGhpcyBwYXRjaCdz
IGNvbW1pdCBsb2cgdG8gUkVBRE1FLm1kIG9uIHVwc3RyZWFtaW5nLg0KDQotLSBGZWxpcGUNCg0K
UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4NCu+7vw0K
T24gMjUuMDYuMTksIDIxOjUyLCAiVmxhZC1BbmRyZWkgQsSCRE9JVSAoNzg2OTIpIiA8dmxhZF9h
bmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6DQoNCiAgICBUaGlzIGlzIG91ciBp
bml0aWFsIHBvcnQgb2YgUU5OUEFDSyB0byBVbmlrcmFmdCBhcyBhbiBleHRlcm5hbCBsaWJyYXJ5
Lg0KICAgIFRoZSBkZXBlbmRlbmNpZXMgYXJlOiBsaWJjeHgsIG5ld2xpYiwgcHRocmVhZHMsZnAx
NiwgZnhkaXYsIHBzaW1kIGFuZA0KICAgICBwdGhyZWFkcG9vbC4NCiAgICAoZS5nLiAuLi46JChV
S19MSUJTKS9saWJ1bndpbmQ6JChVS19MSUJTKS9jb21waWxlci1ydDoNCiAgICAkKFVLX0xJQlMp
L2xpYmN4eGFiaTokKFVLX0xJQlMpL2xpYmN4eDokKFVLX0xJQlMpL3B0aHJlYWQtZW1iZWRkZWQ6
DQogICAgJChVS19MSUJTKS9uZXdsaWI6JChVS19MSUJTKS9pbnRlbF9pbnRyaW5zaWM6JChVS19M
SUJTKS9mcDE2Og0KICAgICQoVUtfTElCUykvZnhkaXY6JChVS19MSUJTKS9wc2ltZDokKFVLX0xJ
QlMpL3B0aHJlYWRwb29sOiQoVUtfTElCUykvcW5ucGFjaykNCiAgICANCiAgICBTaWduZWQtb2Zm
LWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIu
cm8+DQogICAgLS0tDQogICAgIENvbmZpZy51ayAgICAgICAgIHwgICA5ICsrKw0KICAgICBNYWtl
ZmlsZS51ayAgICAgICB8IDE0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrDQogICAgIGdsdWUuYyAgICAgICAgICAgIHwgIDE1ICsrKysrDQogICAgIGluY2x1
ZGUvY3B1aW5mby5oIHwgICA1ICsrDQogICAgIDQgZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlv
bnMoKykNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IENvbmZpZy51aw0KICAgICBjcmVhdGUgbW9k
ZSAxMDA2NDQgTWFrZWZpbGUudWsNCiAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdsdWUuYw0KICAg
ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9jcHVpbmZvLmgNCiAgICANCiAgICBkaWZmIC0t
Z2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAg
ICBpbmRleCAwMDAwMDAwLi5hZWUwMjFjDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL0Nv
bmZpZy51aw0KICAgIEBAIC0wLDAgKzEsOSBAQA0KICAgICttZW51Y29uZmlnIExJQlFOTlBBQ0sN
CiAgICArICAgIGJvb2wgIlFOTlBBQ0sgLSBpbXBsZW1lbnRhdGlvbiBvZiBxdWFudGl6ZWQgbmV1
cmFsIG5ldHdvcmsgb3BlcmF0b3JzIg0KICAgICsgICAgc2VsZWN0IExJQlBTSU1EDQogICAgKyAg
ICBzZWxlY3QgTElCQ1hYDQogICAgKyAgICBzZWxlY3QgTElCRlhESVYNCiAgICArICAgIHNlbGVj
dCBMSUJGUDE2DQogICAgKyAgICBzZWxlY3QgTElCSU5URUxfSU5UUklOU0lDUw0KICAgICsgICAg
c2VsZWN0IExJQlBUSFJFQURQT09MDQogICAgKyAgICBkZWZhdWx0IG4NCiAgICBkaWZmIC0tZ2l0
IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51aw0KICAgIG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQog
ICAgaW5kZXggMDAwMDAwMC4uZDM3MDRhZA0KICAgIC0tLSAvZGV2L251bGwNCiAgICArKysgYi9N
YWtlZmlsZS51aw0KICAgIEBAIC0wLDAgKzEsMTQyIEBADQogICAgKw0KICAgICsjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIw0KICAgICsjIExpYnJhcnkgcmVnaXN0cmF0aW9uDQogICAgKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjDQogICAgKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicW5ucGFjaywk
KENPTkZJR19MSUJRTk5QQUNLKSkpDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iw0KICAgICsjIFNvdXJjZXMNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArTElC
UU5OUEFDS19WRVJTSU9OPW1hc3Rlcg0KICAgICtMSUJRTk5QQUNLX1VSTD1odHRwczovL2dpdGh1
Yi5jb20vcHl0b3JjaC9RTk5QQUNLL2FyY2hpdmUvbWFzdGVyLnppcA0KICAgICtMSUJRTk5QQUNL
X1BBVENIRElSPSQoTElCUU5OX0JBU0UpL3BhdGNoZXMNCiAgICArDQogICAgKyQoZXZhbCAkKGNh
bGwgZmV0Y2gsbGlicW5ucGFjaywkKExJQlFOTlBBQ0tfVVJMKSkpDQogICAgKw0KICAgICsNCiAg
ICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBIZWxwZXJzDQogICAgKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjDQogICAgK0xJQlFOTlBBQ0tfU1VCRElSPVFOTlBBQ0stJChMSUJRTk5Q
QUNLX1ZFUlNJT04pDQogICAgK0xJQlFOTlBBQ0tfU1JDPSQoTElCUU5OUEFDS19PUklHSU4pLyQo
TElCUU5OUEFDS19TVUJESVIpDQogICAgKw0KICAgICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K
ICAgICsjIExpYnJhcnkgaW5jbHVkZXMNCiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAg
ICArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlFOTlBBQ0spICs9IC1JJChMSUJRTk5QQUNLX1NSQykv
aW5jbHVkZQ0KICAgICtDSU5DTFVERVMtJChDT05GSUdfTElCUU5OUEFDSykgKz0gLUkkKExJQlFO
TlBBQ0tfQkFTRSkvaW5jbHVkZQ0KICAgICtDSU5DTFVERVMtJChDT05GSUdfTElCUU5OUEFDSykg
Kz0gLUkkKExJQlFOTlBBQ0tfU1JDKS9kZXBzL2Nsb2cvaW5jbHVkZQ0KICAgICtDSU5DTFVERVMt
JChDT05GSUdfTElCUU5OUEFDSykgKz0gLUkkKExJQlFOTlBBQ0tfU1JDKS9zcmMNCiAgICArQ1hY
SU5DTFVERVMtJChDT05GSUdfTElCUU5OUEFDSykgKz0gLUkkKExJQlFOTlBBQ0tfU1JDKS9pbmNs
dWRlDQogICAgK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlFOTlBBQ0spICs9IC1JJChMSUJRTk5Q
QUNLX0JBU0UpL2luY2x1ZGUNCiAgICArQ1hYSU5DTFVERVMtJChDT05GSUdfTElCUU5OUEFDSykg
Kz0gLUkkKExJQlFOTlBBQ0tfU1JDKS9kZXBzL2Nsb2cvaW5jbHVkZQ0KICAgICtDWFhJTkNMVURF
Uy0kKENPTkZJR19MSUJRTk5QQUNLKSArPSAtSSQoTElCUU5OUEFDS19TUkMpL3NyYw0KICAgICsN
CiAgICArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBHbG9iYWwgZmxhZ3MNCiAgICAr
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICArIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRv
IG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9vayBuZWF0ZXINCiAgICArU1VQUFJFU1NfRkxBR1Mg
Kz0gLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8tbm9ubnVs
bAkgICAgXA0KICAgICstV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxh
YmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRzCQkgICAgICAgIFwNCiAgICArLVduby11bnVzZWQtZnVu
Y3Rpb24gLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQJ
CSAgICBcDQogICAgKy1Xbm8tYXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAt
V25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZC12YWx1ZQlcDQogICAgKy1Xbm8tdW51c2VkLW1h
Y3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24J
CSAgICBcDQogICAgKy1Xbm8tbWlzc2luZy1icmFjZXMgLVduby1lbmRpZi1sYWJlbHMgLVduby11
bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJICAgICAgICBcDQogICAgKy1Xbm8taW1wbGljaXQtZnVu
Y3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0cyAtV25vLXNpZ24tY29tcGFyZQ0KICAg
ICtMSUJfTkFNRV9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICArTElCX05B
TUVfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFHUykNCiAgICArDQogICAgK0xJQlFO
TlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19CQVNFKS9nbHVlLmMNCiAgICArIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMNCiAgICArIyBMaWJyYXJ5IHNvdXJjZXMNCiAgICArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMNCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMp
L3NyYy91OHJtYXgvbmVvbi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFD
S19TUkMpL3NyYy91OHJtYXgvc3NlMi5jfHU4cm1heA0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSAr
PSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMveDhsdXQvc2NhbGFyLmN8eDhsdXQNCiAgICArTElCUU5O
UEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL3ByZWNp
c2Utc3NlNC5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3Ny
Yy9yZXF1YW50aXphdGlvbi9mcDMyLXBzaW1kLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0g
JChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL2ZwMzItc2NhbGFyLmMNCiAgICAr
TElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9u
L3ByZWNpc2Utc2NhbGFyLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNL
X1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL2dlbW1sb3dwLXNzc2UzLmMNCiAgICArTElCUU5OUEFD
S19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL3EzMS1zc3Nl
My5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1
YW50aXphdGlvbi9wcmVjaXNlLXNzZTIuYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJ
QlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24vcTMxLXNzZTIuYw0KICAgICtMSUJRTk5Q
QUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24vZnAzMi1z
c2UyLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3Jl
cXVhbnRpemF0aW9uL2dlbW1sb3dwLXNzZTIuYw0KICAgICsjTElCUU5OUEFDS19TUkNTLXkgKz0g
JChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL2ZwMzItbmVvbi5jDQogICAgKyNM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcmVxdWFudGl6YXRpb24v
Z2VtbWxvd3AtbmVvbi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19T
UkMpL3NyYy9yZXF1YW50aXphdGlvbi9wcmVjaXNlLXNzc2UzLmMNCiAgICArTElCUU5OUEFDS19T
UkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL3ByZWNpc2UtcHNp
bWQuYw0KICAgICsjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3Jl
cXVhbnRpemF0aW9uL3EzMS1uZW9uLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJR
Tk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9uL3EzMS1zc2U0LmMNCiAgICArI0xJQlFOTlBB
Q0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9wcmVjaXNl
LW5lb24uYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMv
cmVxdWFudGl6YXRpb24vZ2VtbWxvd3Atc3NlNC5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9
ICQoTElCUU5OUEFDS19TUkMpL3NyYy9yZXF1YW50aXphdGlvbi9xMzEtc2NhbGFyLmMNCiAgICAr
TElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3JlcXVhbnRpemF0aW9u
L2dlbW1sb3dwLXNjYWxhci5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFD
S19TUkMpL3NyYy91OGx1dDMybm9ybS9zY2FsYXIuY3x1OGx1dDMybm9ybQ0KICAgICtMSUJRTk5Q
QUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvaW5kaXJlY3Rpb24uYw0KICAgICtM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvc29mdGFyZ21heC5jDQog
ICAgKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvdThjbGFtcC9u
ZW9uLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3U4
Y2xhbXAvc3NlMi5jfHU4Y2xhbXANCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5Q
QUNLX1NSQykvc3JjL29wZXJhdG9yLWRlbGV0ZS5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9
ICQoTElCUU5OUEFDS19TUkMpL3NyYy9jbGFtcC5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9
ICQoTElCUU5OUEFDS19TUkMpL3NyYy9zaWdtb2lkLmMNCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGdlbW0vNHg4YzIteHpwLW5lb24uYw0KICAgICtM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcThnZW1tLzJ4NGM4LXNz
ZTIuYw0KICAgICsjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4
Z2VtbS80eDgtbmVvbi5jDQogICAgKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tf
U1JDKS9zcmMvcThnZW1tLzZ4NC1uZW9uLmMNCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQo
TElCUU5OUEFDS19TUkMpL3NyYy9xOGdlbW0vOHg4LW5lb24uYw0KICAgICtMSUJRTk5QQUNLX1NS
Q1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcThnZW1tLzR4NGMyLXNzZTIuY3xxOGdlbW0N
CiAgICArI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGdlbW0v
NHgtc3Vtcm93cy1uZW9uLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNL
X1NSQykvc3JjL21heC1wb29saW5nLmMNCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElC
UU5OUEFDS19TUkMpL3NyYy9xOHZhZGQvbmVvbi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9
ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOHZhZGQvc3NlMi5jfHE4dmFkZA0KICAgICtMSUJRTk5Q
QUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvY29udm9sdXRpb24uYw0KICAgICtM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvbGVha3ktcmVsdS5jDQog
ICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGR3Y29udi9t
cDh4MjUtc3NlMi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMp
L3NyYy9xOGR3Y29udi91cDh4OS1zc2UyLmN8cThkd2NvbnYNCiAgICArI0xJQlFOTlBBQ0tfU1JD
Uy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGR3Y29udi9tcDh4MjUtbmVvbi5jDQogICAg
KyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcThkd2NvbnYvdXA4
eDktbmVvbi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3Ny
Yy9zZHdjb252L3VwNHg5LXBzaW1kLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJR
Tk5QQUNLX1NSQykvc3JjL3Njb252LzZ4OC1wc2ltZC5jfHNjb252DQogICAgK0xJQlFOTlBBQ0tf
U1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9kZWNvbnZvbHV0aW9uLmMNCiAgICArTElC
UU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL2luaXQuYw0KICAgICtMSUJR
Tk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvcThnYXZncG9vbC91cDh4bS1z
c2UyLmN8cThnYXZncG9vbA0KICAgICsjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNL
X1NSQykvc3JjL3E4Z2F2Z3Bvb2wvdXA4eG0tbmVvbi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGdhdmdwb29sL21wOHg3cDdxLXNzZTIuYw0KICAg
ICsjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Z2F2Z3Bvb2wv
dXA4eDctbmVvbi5jDQogICAgKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JD
KS9zcmMvcThnYXZncG9vbC9tcDh4N3A3cS1uZW9uLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkg
Kz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Z2F2Z3Bvb2wvdXA4eDctc3NlMi5jDQogICAgKyNM
SUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvdThtYXhwb29sLzE2eDlw
OHEtbmVvbi5jDQogICAgKyNMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9z
cmMvdThtYXhwb29sL3N1YjE2LW5lb24uYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJ
QlFOTlBBQ0tfU1JDKS9zcmMvdThtYXhwb29sLzE2eDlwOHEtc3NlMi5jDQogICAgK0xJQlFOTlBB
Q0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy91OG1heHBvb2wvc3ViMTYtc3NlMi5j
DQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9hdmVyYWdl
LXBvb2xpbmcuYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9z
cmMvYWRkLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3Jj
L2dsb2JhbC1hdmVyYWdlLXBvb2xpbmcuYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJ
QlFOTlBBQ0tfU1JDKS9zcmMvb3BlcmF0b3ItcnVuLmMNCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGNvbnYvNHg4LW5lb24uYw0KICAgICsjTElCUU5O
UEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4Y29udi84eDgtbmVvbi5jDQog
ICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGNvbnYvNHg0
YzItc3NlMi5jfHE4Y29udg0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tf
U1JDKS9zcmMvc2dlbW0vNng4LXBzaW1kLmN8cWdlbW0NCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15
ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9zZ2VtbS82eDgtbmVvbi5jDQogICAgKyNMSUJRTk5Q
QUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvc2dlbW0vNXg4LW5lb24uYw0KICAg
ICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JDKS9zcmMvY2hhbm5lbC1zaHVm
ZmxlLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3g4
emlwL3gzLXNzZTIuYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tfU1JD
KS9zcmMveDh6aXAveG0tc3NlMi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5O
UEFDS19TUkMpL3NyYy94OHppcC94NC1zc2UyLmMNCiAgICArTElCUU5OUEFDS19TUkNTLXkgKz0g
JChMSUJRTk5QQUNLX1NSQykvc3JjL3g4emlwL3gyLXNzZTIuYw0KICAgICsjTElCUU5OUEFDS19T
UkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3g4emlwL3gyLW5lb24uYw0KICAgICsjTElC
UU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3g4emlwL3htLW5lb24uYw0K
ICAgICsjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3g4emlwL3gz
LW5lb24uYw0KICAgICsjTElCUU5OUEFDS19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvc3Jj
L3g4emlwL3g0LW5lb24uYw0KICAgICtMSUJRTk5QQUNLX1NSQ1MteSArPSAkKExJQlFOTlBBQ0tf
U1JDKS9zcmMvZnVsbHktY29ubmVjdGVkLmMNCiAgICArI0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQo
TElCUU5OUEFDS19TUkMpL3NyYy9oZ2VtbS84eDgtbmVvbmZwMTZhcml0aC5jDQogICAgK0xJQlFO
TlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGF2Z3Bvb2wvbXA4eDlwOHEt
c3NlMi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9x
OGF2Z3Bvb2wvdXA4eG0tc3NlMi5jfHE4YXZncG9vbA0KICAgICsjTElCUU5OUEFDS19TUkNTLXkg
Kz0gJChMSUJRTk5QQUNLX1NSQykvc3JjL3E4YXZncG9vbC9tcDh4OXA4cS1uZW9uLmMNCiAgICAr
I0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGF2Z3Bvb2wvdXA4
eG0tbmVvbi5jDQogICAgK0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3Ny
Yy9xOGF2Z3Bvb2wvdXA4eDktc3NlMi5jfHE4YXZncG9vbA0KICAgICsNCiAgICArTElCUU5OUEFD
S19TUkNTLXkgKz0gJChMSUJRTk5QQUNLX1NSQykvZGVwcy9jbG9nL3NyYy9jbG9nLmMNCiAgICAr
I0xJQlFOTlBBQ0tfU1JDUy15ICs9ICQoTElCUU5OUEFDS19TUkMpL3NyYy9xOGF2Z3Bvb2wvdXA4
eDktbmVvbi5jDQogICAgZGlmZiAtLWdpdCBhL2dsdWUuYyBiL2dsdWUuYw0KICAgIG5ldyBmaWxl
IG1vZGUgMTAwNjQ0DQogICAgaW5kZXggMDAwMDAwMC4uMzJkOTk1Yw0KICAgIC0tLSAvZGV2L251
bGwNCiAgICArKysgYi9nbHVlLmMNCiAgICBAQCAtMCwwICsxLDE1IEBADQogICAgKw0KICAgICsN
CiAgICAraW50IGNwdWluZm9faGFzX3g4Nl9zc2UyKCkNCiAgICArew0KICAgICsJcmV0dXJuIDE7
DQogICAgK30NCiAgICArDQogICAgK2ludCBjcHVpbmZvX2luaXRpYWxpemUoKQ0KICAgICt7DQog
ICAgKwlyZXR1cm4gMTsNCiAgICArfQ0KICAgICsNCiAgICArdm9pZCBjcHVpbmZvX2RlaW5pdGlh
bGl6ZSgpDQogICAgK3sNCiAgICArfQ0KICAgIGRpZmYgLS1naXQgYS9pbmNsdWRlL2NwdWluZm8u
aCBiL2luY2x1ZGUvY3B1aW5mby5oDQogICAgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCiAgICBpbmRl
eCAwMDAwMDAwLi41ZjM1OGY4DQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL2luY2x1ZGUv
Y3B1aW5mby5oDQogICAgQEAgLTAsMCArMSw1IEBADQogICAgKyNkZWZpbmUgQ1BVSU5GT19BUkNI
X1g4Nl82NCAxDQogICAgKw0KICAgICtpbnQgY3B1aW5mb19oYXNfeDg2X3NzZTIoKTsNCiAgICAr
aW50IGNwdWluZm9faW5pdGlhbGl6ZSgpOw0KICAgICt2b2lkIGNwdWluZm9fZGVpbml0aWFsaXpl
KCk7DQogICAgLS0gDQogICAgMi4yMS4wDQogICAgDQogICAgDQoNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:36:39 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13: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 1hhDWw-0005Y1-0x; Sat, 29 Jun 2019 13: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=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhDWu-0005Xw-EE
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:36:36 +0000
X-Inumbo-ID: e73efa82-9a72-11e9-881d-3b7435dbef24
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e73efa82-9a72-11e9-881d-3b7435dbef24;
 Sat, 29 Jun 2019 13:36:31 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 7FC411053A9;
 Sat, 29 Jun 2019 15:36:30 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id hoRICYaTO8Vk; Sat, 29 Jun 2019 15:36:30 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 56288105285;
 Sat, 29 Jun 2019 15:36:30 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 15:36:29
 +0200
To: Cristian Banu <cristb@gmail.com>, <minios-devel@lists.xen.org>
References: <20190629085608.15680-1-cristb@gmail.com>
 <20190629085608.15680-6-cristb@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ae35576f-2df1-28f4-4325-5756d3810e56@neclab.eu>
Date: Sat, 29 Jun 2019 15:36:27 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190629085608.15680-6-cristb@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/8] lib/uk9p: Add 9P device
 implementation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
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>

T24gMjkuMDYuMTkgMTA6NTYsIENyaXN0aWFuIEJhbnUgd3JvdGU6Cj4gVGhpcyBwYXRjaCBhZGRz
IHRoZSBvcGVyYXRpb25zIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB0cmFuc3BvcnQKPiBs
YXllcnMsIHRoZSBBUEkgdG8gaW50ZXJhY3Qgd2l0aCB0aGVtIGFuZCB0byBtYW5hZ2UgcmVxdWVz
dHMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWlsLmNvbT4K
PiAtLS0KPiAgIGxpYi91azlwLzlwZGV2LmMgICAgICAgICAgICAgICAgICB8IDMyNiArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3VrOXAvOXBkZXZfdHJhbnMu
YyAgICAgICAgICAgIHwgICA0ICsKPiAgIGxpYi91azlwL01ha2VmaWxlLnVrICAgICAgICAgICAg
ICB8ICAgMSArCj4gICBsaWIvdWs5cC9leHBvcnRzeW1zLnVrICAgICAgICAgICAgfCAgIDkgKysK
PiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXYuaCAgICAgICB8IDE4OCArKysrKysrKysrKysr
KysrKysrKysrCj4gICBsaWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaCAgfCAxNjkgKysr
KysrKysrKysrKysrKysrKysKPiAgIGxpYi91azlwL2luY2x1ZGUvdWsvOXBkZXZfdHJhbnMuaCB8
ICAgMyArCj4gICA3IGZpbGVzIGNoYW5nZWQsIDcwMCBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL3VrOXAvOXBkZXYuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91
azlwL2luY2x1ZGUvdWsvOXBkZXYuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91azlwL2lu
Y2x1ZGUvdWsvOXBkZXZfY29yZS5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi91azlwLzlwZGV2LmMg
Yi9saWIvdWs5cC85cGRldi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
MDAwMDAuLjA1YTU4MWVhZmJkYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWs5cC85cGRl
di5jCj4gQEAgLTAsMCArMSwzMjYgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT
RC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBDcmlzdGlhbiBCYW51IDxjcmlzdGJA
Z21haWwuY29tPgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9s
aXRlaG5pY2Egb2YgQnVjaGFyZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+
ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5
cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4g
KyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVB
REVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+
ICsKPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5j
bHVkZSA8dWsvY29uZmlnLmg+Cj4gKyNpbmNsdWRlIDx1ay9wbGF0L3NwaW5sb2NrLmg+Cj4gKyNp
bmNsdWRlIDx1ay9hbGxvYy5oPgo+ICsjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICsjaW5j
bHVkZSA8dWsvZXJycHRyLmg+Cj4gKyNpbmNsdWRlIDx1ay9iaXRtYXAuaD4KPiArI2luY2x1ZGUg
PHVrL3JlZmNvdW50Lmg+Cj4gKyNpbmNsdWRlIDx1ay93YWl0Lmg+Cj4gKyNpbmNsdWRlIDx1ay85
cGRldi5oPgo+ICsjaW5jbHVkZSA8dWsvOXBkZXZfdHJhbnMuaD4KPiArI2luY2x1ZGUgPHVrLzlw
cmVxLmg+Cj4gKyNpZiBDT05GSUdfTElCVUtTQ0hFRAo+ICsjaW5jbHVkZSA8dWsvc2NoZWQuaD4K
PiArI2luY2x1ZGUgPHVrL3dhaXQuaD4KPiArI2VuZGlmCj4gKwo+ICtzdGF0aWMgaW50IF9yZXFf
bWdtdF9pbml0KHN0cnVjdCB1a185cGRldl9yZXFfbWdtdCAqcmVxX21nbXQpCj4gK3sKPiArCXVr
YXJjaF9zcGluX2xvY2tfaW5pdCgmcmVxX21nbXQtPnNwaW5sb2NrKTsKPiArCXVrX2JpdG1hcF96
ZXJvKHJlcV9tZ210LT50YWdfYm0sIFVLXzlQX05VTVRBR1MpOwo+ICsJVUtfSU5JVF9MSVNUX0hF
QUQoJnJlcV9tZ210LT5yZXFfbGlzdCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KCkkgdGhpbmsg
dGhpcyBmdW5jdGlvbiBjYW4gYmUgdm9pZCwgcmlnaHQ/Cgo+ICsKPiArc3RhdGljIHZvaWQgX3Jl
cV9tZ210X2FkZF9yZXFfbG9ja2VkKHN0cnVjdCB1a185cGRldl9yZXFfbWdtdCAqcmVxX21nbXQs
Cj4gKwkJCQlzdHJ1Y3QgdWtfOXByZXEgKnJlcSkKPiArewo+ICsJdWtfYml0bWFwX3NldChyZXFf
bWdtdC0+dGFnX2JtLCByZXEtPnRhZywgMSk7Cj4gKwl1a19saXN0X2FkZCgmcmVxLT5fbGlzdCwg
JnJlcV9tZ210LT5yZXFfbGlzdCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9yZXFfbWdtdF9k
ZWxfcmVxX2xvY2tlZChzdHJ1Y3QgdWtfOXBkZXZfcmVxX21nbXQgKnJlcV9tZ210LAo+ICsJCQkJ
c3RydWN0IHVrXzlwcmVxICpyZXEpCj4gK3sKPiArCXVrX2JpdG1hcF9jbGVhcihyZXFfbWdtdC0+
dGFnX2JtLCByZXEtPnRhZywgMSk7Cj4gKwl1a19saXN0X2RlbCgmcmVxLT5fbGlzdCk7Cj4gK30K
PiArCj4gK3N0YXRpYyBpbnQgX3JlcV9tZ210X25leHRfdGFnX2xvY2tlZChzdHJ1Y3QgdWtfOXBk
ZXZfcmVxX21nbXQgKnJlcV9tZ210LAo+ICsJCQkJdWludDE2X3QgKnRhZykKPiArewo+ICsJKnRh
ZyA9IHVrX2ZpbmRfbmV4dF96ZXJvX2JpdChyZXFfbWdtdC0+dGFnX2JtLCBVS185UF9OVU1UQUdT
LCAwKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQoKRG9uJ3QgeW91IHdhbnQgdG8gcmV0dXJuIHRo
ZSB0YWcgaW5zdGVhZCB1c2luZyBpdCBhcyBvdXRwdXQgcGFyYW1ldGVyPyAKVGhlcmUgYXJlIG5v
IGVycm9ycyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHZvaWQuCgo+
ICsKPiArc3RhdGljIHZvaWQgX3JlcV9tZ210X2NsZWFudXAoc3RydWN0IHVrXzlwZGV2X3JlcV9t
Z210ICpyZXFfbWdtdCBfX3VudXNlZCkKPiArewo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAr
CXVpbnQxNl90IHRhZzsKPiArCXN0cnVjdCB1a185cHJlcSAqcmVxLCAqcmVxbjsKPiArCj4gKwl1
a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUoJnJlcV9tZ210LT5zcGlubG9jaywgZmxhZ3MpOwo+ICsJ
dWtfbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgcmVxbiwgJnJlcV9tZ210LT5yZXFfbGlz
dCwgX2xpc3QpIHsKPiArCQl0YWcgPSByZXEtPnRhZzsKPiArCQlfcmVxX21nbXRfZGVsX3JlcV9s
b2NrZWQocmVxX21nbXQsIHJlcSk7Cj4gKwkJaWYgKCF1a185cHJlcV9wdXQocmVxKSkgewo+ICsJ
CQl1a19wcl93YXJuKCJUYWcgJWQgc3RpbGwgaGFzIHJlZmVyZW5jZXMgb24gY2xlYW51cC5cbiIs
Cj4gKwkJCQl0YWcpOwo+ICsJCX0KPiArCX0KPiArCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0
b3JlKCZyZXFfbWdtdC0+c3BpbmxvY2ssIGZsYWdzKTsKPiArfQo+ICsKPiArc3RydWN0IHVrXzlw
ZGV2ICp1a185cGRldl9jb25uZWN0KGNvbnN0IHN0cnVjdCB1a185cGRldl90cmFucyAqdHJhbnMs
Cj4gKwkJCQljb25zdCBjaGFyICpkZXZpY2VfaWRlbnRpZmllciwKPiArCQkJCWNvbnN0IGNoYXIg
Km1vdW50X2FyZ3MsCj4gKwkJCQlzdHJ1Y3QgdWtfYWxsb2MgKmEpCj4gK3sKPiArCXN0cnVjdCB1
a185cGRldiAqZGV2Owo+ICsJaW50IHJjID0gMDsKPiArCj4gKwlVS19BU1NFUlQodHJhbnMpOwo+
ICsJVUtfQVNTRVJUKGRldmljZV9pZGVudGlmaWVyKTsKPiArCj4gKwlpZiAoYSA9PSBOVUxMKQo+
ICsJCWEgPSB0cmFucy0+YTsKPiArCj4gKwlkZXYgPSB1a19jYWxsb2MoYSwgMSwgc2l6ZW9mKCpk
ZXYpKTsKPiArCWlmIChkZXYgPT0gTlVMTCkgewo+ICsJCXJjID0gLUVOT01FTTsKPiArCQlnb3Rv
IG91dDsKPiArCX0KPiArCj4gKwlkZXYtPm9wcyA9IHRyYW5zLT5vcHM7Cj4gKwlkZXYtPmEgPSBh
Owo+ICsKPiArI2lmIENPTkZJR19MSUJVS1NDSEVECj4gKwl1a193YWl0cV9pbml0KCZkZXYtPnht
aXRfd3EpOwo+ICsjZW5kaWYKPiArCj4gKwlyYyA9IF9yZXFfbWdtdF9pbml0KCZkZXYtPl9yZXFf
bWdtdCk7Cj4gKwlpZiAocmMgPCAwKQo+ICsJCWdvdG8gZnJlZV9kZXY7Cj4gKwo+ICsJcmMgPSBk
ZXYtPm9wcy0+Y29ubmVjdChkZXYsIGRldmljZV9pZGVudGlmaWVyLCBtb3VudF9hcmdzKTsKPiAr
CWlmIChyYyA8IDApCj4gKwkJZ290byBmcmVlX3JlcTsKPiArCj4gKwlVS19BU1NFUlQoZGV2LT5t
c2l6ZSAhPSAwKTsKPiArCj4gKwlkZXYtPnN0YXRlID0gVUtfOVBERVZfQ09OTkVDVEVEOwo+ICsJ
Z290byBvdXQ7Cj4gKwoKTWlub3IgdGhpbmc6IFNpbmNlIHlvdSBkbyBub3QgbmVlZCBhbnkgY2xl
YW4tdXAgaW4gdGhlIHN1Y2Nlc3MgZXhpdCwgeW91IApjb3VsZCByZXR1cm4gaGVyZSB0aGUgZGV2
IGRpcmVjdGx5IGFuZCByZW1vdmUgdGhlIGlmIHN0YXRlbWVudCBpbiB0aGUgCm91dC1jYXNlICh3
aGljaCBiZWNvbWVzIHRvIGFuIGVycm9yLW9ubHkgZXhpdCkuCgo+ICtmcmVlX3JlcToKPiArCV9y
ZXFfbWdtdF9jbGVhbnVwKCZkZXYtPl9yZXFfbWdtdCk7Cj4gK2ZyZWVfZGV2Ogo+ICsJdWtfZnJl
ZShhLCBkZXYpOwo+ICtvdXQ6Cj4gKwlpZiAocmMgPT0gMCkKPiArCQlyZXR1cm4gZGV2Owo+ICsJ
cmV0dXJuIEVSUjJQVFIocmMpOwo+ICt9Cj4gKwo+ICtpbnQgdWtfOXBkZXZfZGlzY29ubmVjdChz
dHJ1Y3QgdWtfOXBkZXYgKmRldikKPiArewo+ICsJaW50IHJjID0gMDsKPiArCj4gKwlVS19BU1NF
UlQoZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPnN0YXRlID09IFVLXzlQREVWX0NPTk5FQ1RFRCk7
Cj4gKwo+ICsJZGV2LT5zdGF0ZSA9IFVLXzlQREVWX0RJU0NPTk5FQ1RJTkc7Cj4gKwo+ICsJLyog
Q2xlYW4gdXAgdGhlIHJlcXVlc3RzIGJlZm9yZSBjbG9zaW5nIHRoZSBjaGFubmVsLiAqLwo+ICsJ
X3JlcV9tZ210X2NsZWFudXAoJmRldi0+X3JlcV9tZ210KTsKPiArCj4gKwlyYyA9IGRldi0+b3Bz
LT5kaXNjb25uZWN0KGRldik7CgpJdCBzZWVtcyBpbiBjYXNlIG9mIGRyaXZlciBmYWlsdXJlIG9u
IGRpc2Nvbm5lY3QgeW91IHN0aWxsIHByb2NlZWQgd2l0aCAKZGlzY29ubmVjdGluZy4gSXMgdGhp
cyBpbnRlbmRlZD8KCj4gKwo+ICsJdWtfZnJlZShkZXYtPmEsIGRldik7Cj4gKwlyZXR1cm4gcmM7
Cj4gK30KPiArCj4gK2ludCB1a185cGRldl9yZXF1ZXN0KHN0cnVjdCB1a185cGRldiAqZGV2LCBz
dHJ1Y3QgdWtfOXByZXEgKnJlcSkKPiArewo+ICsJaW50IHJjOwo+ICsKPiArCVVLX0FTU0VSVChk
ZXYpOwo+ICsJVUtfQVNTRVJUKHJlcSk7Cj4gKwo+ICsJaWYgKFVLX1JFQURfT05DRShyZXEtPnN0
YXRlKSAhPSBVS185UFJFUV9SRUFEWSkgewo+ICsJCXJjID0gLUVJTlZBTDsKPiArCQlnb3RvIG91
dDsKPiArCX0KPiArCj4gKwlpZiAoZGV2LT5zdGF0ZSAhPSBVS185UERFVl9DT05ORUNURUQpIHsK
PiArCQlyYyA9IC1FSU87Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsjaWYgQ09ORklHX0xJ
QlVLU0NIRUQKPiArCXVrX3dhaXRxX3dhaXRfZXZlbnQoJmRldi0+eG1pdF93cSwKPiArCQkocmMg
PSBkZXYtPm9wcy0+cmVxdWVzdChkZXYsIHJlcSkpID49IDAgfHwgcmMgIT0gLUVOT1NQQyk7Cj4g
KyNlbHNlCj4gKwlyYyA9IC1FTk9TUEM7Cj4gKwl3aGlsZSAocmMgPCAwICYmIHJjID09IC1FTk9T
UEMpCgpJc24ndCB0aGUgY29uZGl0aW9uIChyYyA9PSAtRU5PU1BDKSBnb29kIGVub3VnaCBmb3Ig
dGhlIHdoaWxlIGxvb3A/Ckl0IGxvb2tzIGFsc28gdG8gbWUgdGhhdCBhICdkbyB7fSB3aGlsZSgp
JyBsb29wIHdvdWxkIGJlIG5pY2VyIGluIHRoaXMgY2FzZS4KCj4gKwkJcmMgPSBkZXYtPm9wcy0+
cmVxdWVzdChkZXYsIHJlcSk7Cj4gKyNlbmRpZgo+ICsKPiArb3V0Ogo+ICsJcmV0dXJuIHJjOwo+
ICt9Cj4gKwo+ICt2b2lkIHVrXzlwZGV2X3htaXRfcmVhZHkoc3RydWN0IHVrXzlwZGV2ICpkZXYp
Cj4gK3sKPiArI2lmIENPTkZJR19MSUJVS1NDSEVECj4gKwl1a193YWl0cV93YWtlX3VwKCZkZXYt
PnhtaXRfd3EpOwo+ICsjZW5kaWYKPiArfQo+ICsKPiArc3RydWN0IHVrXzlwcmVxICp1a185cGRl
dl9jYWxsKHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCj4gKwkJCXVpbnQzMl90
IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfOXByZXEgKnJl
cTsKPiArCXZhX2xpc3Qgdmw7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJcmVxID0gdWtfOXBkZXZfcmVx
X2NyZWF0ZShkZXYsIHR5cGUsIHNpemUpOwo+ICsJaWYgKFBUUklTRVJSKHJlcSkpCj4gKwkJcmV0
dXJuIHJlcTsKPiArCj4gKwl2YV9zdGFydCh2bCwgZm10KTsKPiArCXJjID0gdWtfOXByZXFfdnNl
cmlhbGl6ZShyZXEsIGZtdCwgdmwpOwo+ICsJdmFfZW5kKHZsKTsKPiArCj4gKwlpZiAocmMgPCAw
KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXJjID0gdWtfOXByZXFfcmVhZHkocmVxLCBVS185UFJF
UV9aQ0RJUl9OT05FLCBOVUxMLCAwLCAwKTsKPiArCWlmIChyYyA8IDApCj4gKwkJZ290byBvdXQ7
Cj4gKwo+ICsJcmMgPSB1a185cGRldl9yZXF1ZXN0KGRldiwgcmVxKTsKPiArCWlmIChyYyA8IDAp
Cj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmMgPSB1a185cHJlcV93YWl0cmVwbHkocmVxKTsKPiAr
CWlmIChyYyA8IDApCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0dXJuIHJlcTsKPiArb3V0Ogo+
ICsJdWtfOXBkZXZfcmVxX3JlbW92ZShkZXYsIHJlcSk7Cj4gKwlyZXR1cm4gRVJSMlBUUihyYyk7
Cj4gK30KPiArCj4gK3N0cnVjdCB1a185cHJlcSAqdWtfOXBkZXZfcmVxX2NyZWF0ZShzdHJ1Y3Qg
dWtfOXBkZXYgKmRldiwgdWludDhfdCB0eXBlLAo+ICsJCQkJdWludDMyX3Qgc2l6ZSkKPiArewo+
ICsJc3RydWN0IHVrXzlwcmVxICpyZXE7Cj4gKwlpbnQgcmMgPSAwOwo+ICsJdWludDE2X3QgdGFn
Owo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCj4g
KwlzaXplID0gTUlOKHNpemUsIGRldi0+bXNpemUpOwo+ICsKPiArCXJlcSA9IHVrXzlwcmVxX2Fs
bG9jKGRldi0+YSwgc2l6ZSk7Cj4gKwlpZiAocmVxID09IE5VTEwpIHsKPiArCQlyYyA9IC1FTk9N
RU07Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJdWtwbGF0X3NwaW5fbG9ja19pcnFzYXZl
KCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOwo+ICsJaWYgKHR5cGUgPT0gVUtfOVBf
VFZFUlNJT04pIHsKPiArCQl0YWcgPSBVS185UF9OT1RBRzsKPiArCQlyYyA9IDA7Cj4gKwl9IGVs
c2UKPiArCQlyYyA9IF9yZXFfbWdtdF9uZXh0X3RhZ19sb2NrZWQoJmRldi0+X3JlcV9tZ210LCAm
dGFnKTsKPiArCj4gKwlpZiAocmMgPCAwKSB7Cj4gKwkJdWtwbGF0X3NwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmRldi0+X3JlcV9tZ210LnNwaW5sb2NrLCBmbGFncyk7Cj4gKwkJZ290byBvdXRfZnJl
ZTsKPiArCX0KPiArCj4gKwlyZXEtPnRhZyA9IHRhZzsKPiArCXJlcS0+eG1pdC50eXBlID0gdHlw
ZTsKPiArCj4gKwlfcmVxX21nbXRfYWRkX3JlcV9sb2NrZWQoJmRldi0+X3JlcV9tZ210LCByZXEp
Owo+ICsJdWtwbGF0X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+X3JlcV9tZ210LnNwaW5s
b2NrLCBmbGFncyk7Cj4gKwo+ICsJcmVxLT5zdGF0ZSA9IFVLXzlQUkVRX0lOSVRJQUxJWkVEOwo+
ICsJZ290byBvdXQ7CgpJIHRoaW5rIHlvdSBjYW4gYWxzbyBoZXJlIGRpcmVjdGx5IHJldHVybiBz
byB0aGF0IHlvdSBkbyBub3QgbmVlZCB0aGUgaWYgCnN0YXRlbWVudCBhZnRlciB0aGUgb3V0IGxh
YmVsLiBCdXQgdGhpcyBpcyByZWFsbHkgYSBtaW5vciB0aGluZy4KCj4gKwo+ICtvdXRfZnJlZToK
PiArCXVrXzlwcmVxX3B1dChyZXEpOwo+ICtvdXQ6Cj4gKwlpZiAocmMgPT0gMCkKPiArCQlyZXR1
cm4gcmVxOwo+ICsJcmV0dXJuIEVSUjJQVFIocmMpOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgdWtfOXBy
ZXEgKnVrXzlwZGV2X3JlcV9sb29rdXAoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHVpbnQxNl90IHRh
ZykKPiArewo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCXN0cnVjdCB1a185cHJlcSAqcmVx
Owo+ICsJaW50IHJjID0gLUVJTlZBTDsKPiArCj4gKwl1a3BsYXRfc3Bpbl9sb2NrX2lycXNhdmUo
JmRldi0+X3JlcV9tZ210LnNwaW5sb2NrLCBmbGFncyk7Cj4gKwl1a19saXN0X2Zvcl9lYWNoX2Vu
dHJ5KHJlcSwgJmRldi0+X3JlcV9tZ210LnJlcV9saXN0LCBfbGlzdCkgewo+ICsJCWlmICh0YWcg
IT0gcmVxLT50YWcpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCXJjID0gMDsKPiArCQl1a185cHJlcV9n
ZXQocmVxKTsKPiArCQlicmVhazsKPiArCX0KPiArCXVrcGxhdF9zcGluX3VubG9ja19pcnFyZXN0
b3JlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOwo+ICsKPiArCWlmIChyYyA9PSAw
KQo+ICsJCXJldHVybiByZXE7Cj4gKwo+ICsJcmV0dXJuIEVSUjJQVFIocmMpOwo+ICt9Cj4gKwo+
ICtpbnQgdWtfOXBkZXZfcmVxX3JlbW92ZShzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVr
XzlwcmVxICpyZXEpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwo+ICsJdWtwbGF0
X3NwaW5fbG9ja19pcnFzYXZlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3MpOwo+ICsJ
X3JlcV9tZ210X2RlbF9yZXFfbG9ja2VkKCZkZXYtPl9yZXFfbWdtdCwgcmVxKTsKPiArCXVrcGxh
dF9zcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPl9yZXFfbWdtdC5zcGlubG9jaywgZmxhZ3Mp
Owo+ICsKPiArCXJldHVybiB1a185cHJlcV9wdXQocmVxKTsKPiArfQo+ICsKPiArdm9pZCB1a185
cGRldl9hZGp1c3RfbXNpemUoc3RydWN0IHVrXzlwZGV2ICpkZXYsIHVpbnQzMl90IG1zaXplKQo+
ICt7Cj4gKwlkZXYtPm1zaXplID0gTUlOKGRldi0+bXNpemUsIG1zaXplKTsKPiArfQoKSHVtLCB3
aXRoIHRoaXMgZnVuY3Rpb24geW91IGNhbiBvbmx5IGRlY3JlYXNlIHRoZSBtc2l6ZSwgbmV2ZXIg
aW5jcmVhc2UuIApZb3UgYXJlIGFsc28gbmV2ZXIgZ2V0dGluZyBhIGZlZWRiYWNrIG9uIHdoaWNo
IHNpemUgdGhlIGRldmljZSBpcyAKb3BlcmF0aW5nIG5vdy4gSXMgYWxsIG9mIHRoaXMgaW50ZW5k
ZWQ/IE90aGVyd2lzZSBJIHdvdWxkIHJldHVybiBhbiBpbnQgCnRvIHRlbGwgaWYgdGhlIHdpc2hl
ZCBtc2l6ZSBpcyBvdXQgb2YgcmFuZ2UuIEkgYWxzbyB3b3VsZCBzYXZlIHRoZSBtYXggCnBvc3Np
YmxlIG1zaXplIHNlcGFyYXRlbHkgZnJvbSB0aGUgY3VycmVudCBhcHBsaWVkIG1zaXplIG9uIHRo
ZSB1a185cGRldiAKc3RydWN0dXJlLgoKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvOXBkZXZfdHJh
bnMuYyBiL2xpYi91azlwLzlwZGV2X3RyYW5zLmMKPiBpbmRleCA2MzcyODc2NzY1YjIuLjBkYTUw
ZTUxMjA2ZSAxMDA2NDQKPiAtLS0gYS9saWIvdWs5cC85cGRldl90cmFucy5jCj4gKysrIGIvbGli
L3VrOXAvOXBkZXZfdHJhbnMuYwo+IEBAIC00Nyw2ICs0NywxMCBAQCBpbnQgdWtfOXBkZXZfdHJh
bnNfcmVnaXN0ZXIoc3RydWN0IHVrXzlwZGV2X3RyYW5zICp0cmFucykKPiAgIHsKPiAgIAlVS19B
U1NFUlQodHJhbnMpOwo+ICAgCVVLX0FTU0VSVCh0cmFucy0+bmFtZSk7Cj4gKwlVS19BU1NFUlQo
dHJhbnMtPm9wcyk7Cj4gKwlVS19BU1NFUlQodHJhbnMtPm9wcy0+Y29ubmVjdCk7Cj4gKwlVS19B
U1NFUlQodHJhbnMtPm9wcy0+ZGlzY29ubmVjdCk7Cj4gKwlVS19BU1NFUlQodHJhbnMtPm9wcy0+
cmVxdWVzdCk7Cj4gICAJVUtfQVNTRVJUKHRyYW5zLT5hKTsKPiAgIAo+ICAgCXVrX2xpc3RfYWRk
X3RhaWwoJnRyYW5zLT5fbGlzdCwgJnVrXzlwZGV2X3RyYW5zX2xpc3QpOwo+IGRpZmYgLS1naXQg
YS9saWIvdWs5cC9NYWtlZmlsZS51ayBiL2xpYi91azlwL01ha2VmaWxlLnVrCj4gaW5kZXggYWVh
NzIyYTU4NWI5Li4zNGNjOTg3YTJmOWMgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrOXAvTWFrZWZpbGUu
dWsKPiArKysgYi9saWIvdWs5cC9NYWtlZmlsZS51awo+IEBAIC01LDMgKzUsNCBAQCBDWFhJTkNM
VURFUy0kKENPTkZJR19MSUJVSzlQKQkJKz0gLUkkKExJQlVLOVBfQkFTRSkvaW5jbHVkZQo+ICAg
Cj4gICBMSUJVSzlQX1NSQ1MteSArPSAkKExJQlVLOVBfQkFTRSkvOXBkZXZfdHJhbnMuYwo+ICAg
TElCVUs5UF9TUkNTLXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwcmVxLmMKPiArTElCVUs5UF9TUkNT
LXkgKz0gJChMSUJVSzlQX0JBU0UpLzlwZGV2LmMKPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvZXhw
b3J0c3ltcy51ayBiL2xpYi91azlwL2V4cG9ydHN5bXMudWsKPiBpbmRleCA4NTBmZmEyZGIyMzMu
LmMzNzMzMDhmYjBhMiAxMDA2NDQKPiAtLS0gYS9saWIvdWs5cC9leHBvcnRzeW1zLnVrCj4gKysr
IGIvbGliL3VrOXAvZXhwb3J0c3ltcy51awo+IEBAIC0xMiwzICsxMiwxMiBAQCB1a185cHJlcV9j
b3B5X2Zyb20KPiAgIHVrXzlwcmVxX3JlY2VpdmVfY2IKPiAgIHVrXzlwcmVxX3dhaXRyZXBseQo+
ICAgdWtfOXByZXFfZXJyb3IKPiArdWtfOXBkZXZfY29ubmVjdAo+ICt1a185cGRldl9kaXNjb25u
ZWN0Cj4gK3VrXzlwZGV2X3JlcXVlc3QKPiArdWtfOXBkZXZfeG1pdF9yZWFkeQo+ICt1a185cGRl
dl9jYWxsCj4gK3VrXzlwZGV2X3JlcV9jcmVhdGUKPiArdWtfOXBkZXZfcmVxX2xvb2t1cAo+ICt1
a185cGRldl9yZXFfcmVtb3ZlCj4gK3VrXzlwZGV2X2FkanVzdF9tc2l6ZQo+IGRpZmYgLS1naXQg
YS9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2LmggYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2
LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZjIyMTBiYmZm
YzkyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91azlwL2luY2x1ZGUvdWsvOXBkZXYuaAo+
IEBAIC0wLDAgKzEsMTg4IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogQ3Jpc3RpYW4gQmFudSA8Y3Jpc3RiQGdtYWls
LmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhu
aWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAg
ICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
Lgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4g
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArCj4g
KyNpZm5kZWYgX19VS185UERFVl9fCj4gKyNkZWZpbmUgX19VS185UERFVl9fCj4gKwo+ICsjaW5j
bHVkZSA8aW50dHlwZXMuaD4KPiArI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICsjaW5jbHVkZSA8
dWsvYWxsb2MuaD4KPiArI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgo+ICsjaW5jbHVkZSA8dWsvZXNz
ZW50aWFscy5oPgo+ICsjaW5jbHVkZSA8dWsvOXBkZXZfY29yZS5oPgo+ICsjaW5jbHVkZSA8dWsv
cGxhdC9pcnEuaD4KPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsKPiAr
I2VuZGlmCj4gKwo+ICtzdHJ1Y3QgdWtfOXBkZXZfdHJhbnM7Cj4gKwo+ICsvKioKPiArICogQ29u
bmVjdCB0byBhbiB1bmRlcmx5aW5nIGRldmljZSwgb2J0YWluaW5nIGEgOXBkZXYgaGFuZGxlIHRv
IHRoZSBjb25uZWN0aW9uLgo+ICsgKgo+ICsgKiBAcGFyYW0gdHJhbnMKPiArICogICBUaGUgdW5k
ZXJseWluZyB0cmFuc3BvcnQuCj4gKyAqIEBwYXJhbSBkZXZpY2VfaWRlbnRpZmllcgo+ICsgKiAg
IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UgKGZvciB2aXJ0aW8gYW5kIHhlbiwgdGhlIG1v
dW50IHRhZykuCj4gKyAqIEBwYXJhbSBtb3VudF9hcmdzCj4gKyAqICAgQXJndW1lbnRzIHBhc3Nl
ZCBkb3duIGZyb20gdGhlIG1vdW50KCkgY2FsbC4KPiArICogQHBhcmFtIGEKPiArICogICAoT3B0
aW9uYWwpIEFsbG9jYXRvciB1c2VkIGZvciBhbnkgYWxsb2NhdGlvbnMgZG9uZSBieSB0aGlzIDlw
ZGV2Lgo+ICsgKiAgIElmIE5VTEwsIHRoZSB0cmFuc3BvcnQtc3BlY2lmaWMgYWxsb2NhdG9yIHdp
bGwgYmUgdXNlZC4KPiArICogQHJldHVybgo+ICsgKiAgIC0gQ29ubmVjdGlvbiBoYW5kbGUsIGlm
IHN1Y2Nlc3NmdWwuCj4gKyAqICAgLSBFcnJvciBwb2ludGVyLCBvdGhlcndpc2UuCj4gKyAqLwo+
ICtzdHJ1Y3QgdWtfOXBkZXYgKnVrXzlwZGV2X2Nvbm5lY3QoY29uc3Qgc3RydWN0IHVrXzlwZGV2
X3RyYW5zICp0cmFucywKPiArCQkJCWNvbnN0IGNoYXIgKmRldmljZV9pZGVudGlmaWVyLAo+ICsJ
CQkJY29uc3QgY2hhciAqbW91bnRfYXJncywKPiArCQkJCXN0cnVjdCB1a19hbGxvYyAqYSk7Cj4g
Kwo+ICsvKioKPiArICogRGlzY29ubmVjdCBmcm9tIHRoZSB1bmRlcmx5aW5nIGRldmljZS4KPiAr
ICoKPiArICogQHBhcmFtIGRldgo+ICsgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCj4gKyAq
IEByZXR1cm4KPiArICogICAtICgwKTogU3VjY2Vzc2Z1bC4KPiArICogICAtICg8IDApOiBGYWls
dXJlIHRvIGRpc2Nvbm5lY3QuCj4gKyAqLwo+ICtpbnQgdWtfOXBkZXZfZGlzY29ubmVjdChzdHJ1
Y3QgdWtfOXBkZXYgKmRldik7CgpJIHRoaW5rIHlvdSBzaG91bGQgZWl0aGVyIGRvY3VtZW50IHRo
YXQgZXZlbiBpbiBjYXNlIG9mIGZhaWx1cmUgdGhlIApkZXZpY2UgaXMgY2xvc2VkIG9yIGV4cGVj
dCB0aGF0IHRoZSB1c2VyIGlzIHJldHJ5aW5nIHRvIGRpc2Nvbm5lY3QuCgo+ICsKPiArLyoqCj4g
KyAqIFNlbmQgYSA5UCByZXF1ZXN0IHRvIHRoZSBnaXZlbiA5UCBkZXZpY2UuCj4gKyAqCj4gKyAq
IEBwYXJhbSBkZXYKPiArICogICBUaGUgVW5pa3JhZnQgOVAgRGV2aWNlLgo+ICsgKiBAcGFyYW0g
cmVxCj4gKyAqICAgVGhlIDlQIHJlcXVlc3QuCj4gKyAqIEByZXR1cm4KPiArICogICAtICgwKTog
U3VjY2Vzc2Z1bC4KPiArICogICAtICg8IDApOiBGYWlsZWQuCj4gKyAqLwo+ICtpbnQgdWtfOXBk
ZXZfcmVxdWVzdChzdHJ1Y3QgdWtfOXBkZXYgKmRldiwgc3RydWN0IHVrXzlwcmVxICpyZXEpOwo+
ICsKPiArLyoqCj4gKyAqIE5vdGlmeSB0aGUgOVAgZGV2aWNlIHRoYXQgdGhlIGRldmljZSdzIHRy
YW5zbWl0IHF1ZXVlIGlzIG5vdCBmdWxsIGFuZAo+ICsgKiBpdCBtYXkgYXR0ZW1wdCB0byBzZW5k
IHJlcXVlc3RzIGFnYWluLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqICAgVGhlIFVuaWty
YWZ0IDlQIERldmljZS4KPiArICovCj4gK3ZvaWQgdWtfOXBkZXZfeG1pdF9yZWFkeShzdHJ1Y3Qg
dWtfOXBkZXYgKmRldik7CgpNYXliZSBjYWxsIHRoaXMgZnVuY3Rpb24gdGhlbiAuLi5feG1pdF9u
b3RpZnkoKSBpbnN0ZWFkPwoKPiArCj4gKy8qKgo+ICsgKiBDcmVhdGVzIGFuZCBzZW5kcyA5UCBy
ZXF1ZXN0IHRvIHRoZSBnaXZlbiA5UCBkZXZpY2UsIHNlcmlhbGl6aW5nIGl0IHdpdGgKPiArICog
dGhlIGdpdmVuIGFyZ3VtZW50cy4gVGhpcyBmdW5jdGlvbiBhY3RzIGFzIGEgc2hvcnRoYW5kIGZv
ciB0aGUgZXhwbGljaXQKPiArICogY2FsbHMgdG8gcmVxX2NyZWF0ZSgpLCBzZXJpYWxpemUoKSwg
cmVhZHkoKSwgcmVxdWVzdCgpLCB3YWl0cmVwbHkoKS4KPiArICoKPiArICogQHBhcmFtIGRldgo+
ICsgKiAgIFRoZSBVbmlrcmFmdCA5UCBEZXZpY2UuCj4gKyAqIEBwYXJhbSB0eXBlCj4gKyAqICAg
VHJhbnNtaXQgdHlwZSBvZiB0aGUgcmVxdWVzdCwgZS5nLiBUdmVyc2lvbiwgVHJlYWQsIGFuZCBz
byBvbi4KPiArICogQHBhcmFtIHNpemUKPiArICogICBUaGUgbWF4aW11bSBzaXplIGZvciB0aGUg
cmVjZWl2ZSBhbmQgc2VuZCBidWZmZXJzLgo+ICsgKiBAcGFyYW0gZm10Cj4gKyAqICAgVGhlIGZv
cm1hdCBvZiB0aGUgZGF0YSB0byBiZSBzZXJpYWxpemVkLCBpbiB0aGUgd2F5IHVrXzlwcmVxX3Nl
cmlhbGl6ZSgpCj4gKyAqICAgZXhwZWN0cyBpdC4KPiArICogQHBhcmFtIC4uLgo+ICsgKiAgIFRo
ZSBhcmd1bWVudHMgdG8gYmUgc2VyaWFsaXplZC4KPiArICogQHJldHVybgo+ICsgKiAgIC0gKCFQ
VFJJU0VSUik6IFRoZSA5cCByZXF1ZXN0IGluIHRoZSBVS185UFJFUV9SRUNFSVZFRCBzdGF0ZS4K
PiArICogICAtIFBUUklTRVJSOiBUaGUgZXJyb3IgY29kZSB3aXRoIHdoaWNoIGFueSBvZiB0aGUg
c3RlcHMgZmFpbGVkLgo+ICsgKi8KPiArc3RydWN0IHVrXzlwcmVxICp1a185cGRldl9jYWxsKHN0
cnVjdCB1a185cGRldiAqZGV2LCB1aW50OF90IHR5cGUsCj4gKwkJCXVpbnQzMl90IHNpemUsIGNv
bnN0IGNoYXIgKmZtdCwgLi4uKTsKPiArCj4gKy8qKgo+ICsgKiBDcmVhdGUgYSBuZXcgcmVxdWVz
dCwgYXV0b21hdGljYWxseSBhbGxvY2F0aW5nIGl0cyB0YWcsIGJhc2VkIG9uIGl0cyB0eXBlLgo+
ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KPiAr
ICogQHBhcmFtIHR5cGUKPiArICogICBUcmFuc21pdCB0eXBlIG9mIHRoZSByZXF1ZXN0LCBlLmcu
IFR2ZXJzaW9uLCBUcmVhZCwgYW5kIHNvIG9uLgo+ICsgKiBAcGFyYW0gc2l6ZQo+ICsgKiAgIFRo
ZSBtYXhpbXVtIHNpemUgZm9yIHRoZSByZWNlaXZlIGFuZCBzZW5kIGJ1ZmZlcnMuCj4gKyAqIEBy
ZXR1cm4KPiArICogICBJZiBub3QgYW4gZXJyb3IgcG9pbnRlciwgdGhlIGNyZWF0ZWQgcmVxdWVz
dC4KPiArICogICBPdGhlcndpc2UsIHRoZSBlcnJvciBpbiBjcmVhdGluZyB0aGUgcmVxdWVzdDoK
PiArICogICAtIEVOT01FTTogTm8gbWVtb3J5IGZvciB0aGUgcmVxdWVzdCBvciBubyBhdmFpbGFi
bGUgdGFncy4KPiArICovCj4gK3N0cnVjdCB1a185cHJlcSAqdWtfOXBkZXZfcmVxX2NyZWF0ZShz
dHJ1Y3QgdWtfOXBkZXYgKmRldiwgdWludDhfdCB0eXBlLAo+ICsJCQkJdWludDMyX3Qgc2l6ZSk7
Cj4gKwo+ICsvKioKPiArICogTG9va3MgdXAgYSByZXF1ZXN0IGJhc2VkIG9uIHRoZSBnaXZlbiB0
YWcuIFRoaXMgaXMgZ2VuZXJhbGx5IHVzZWQgYnkKPiArICogdHJhbnNwb3J0IGxheWVycyBvbiBy
ZWNlaXZpbmcgYSA5UCBtZXNzYWdlLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqICAgVGhl
IFVuaWtyYWZ0IDlQIERldmljZS4KPiArICogQHBhcmFtIHRhZwo+ICsgKiAgIFRoZSB0YWcgdG8g
bG9vayB1cC4KPiArICogQHJldHVybgo+ICsgKiAgIC0gTlVMTDogTm8gcmVxdWVzdCB3aXRoIHRo
ZSBnaXZlbiB0YWcgd2FzIGZvdW5kLgo+ICsgKiAgIC0gKCE9TlVMTCk6IFRoZSByZXF1ZXN0Lgo+
ICsgKi8KPiArc3RydWN0IHVrXzlwcmVxICp1a185cGRldl9yZXFfbG9va3VwKHN0cnVjdCB1a185
cGRldiAqZGV2LCB1aW50MTZfdCB0YWcpOwo+ICsKPiArLyoqCj4gKyAqIFJlbW92ZSBhIHJlcXVl
c3QgZnJvbSB0aGUgZ2l2ZW4gOXAgZGV2aWNlLiBJZiB0aGUgcmVxdWVzdCBpcyBpbi1mbGlnaHQs
Cj4gKyAqIGl0IHdpbGwgYmUgZnJlZWQgd2hlbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gaXQgYXJl
IGdvbmUuCj4gKyAqCj4gKyAqIEBwYXJhbSBkZXYKPiArICogICBUaGUgVW5pa3JhZnQgOVAgRGV2
aWNlLgo+ICsgKiBAcGFyYW0gcmVxCj4gKyAqICAgVGhlIHJlcXVlc3QgdG8gYmUgcmVtb3ZlZC4K
PiArICogQHJldHVybgo+ICsgKiAgIC0gMDogVGhlcmUgYXJlIG1vcmUgYWN0aXZlIHJlZmVyZW5j
ZXMuCj4gKyAqICAgLSAxOiBUaGlzIHdhcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIHJlcXVl
c3QuCj4gKyAqLwo+ICtpbnQgdWtfOXBkZXZfcmVxX3JlbW92ZShzdHJ1Y3QgdWtfOXBkZXYgKmRl
diwgc3RydWN0IHVrXzlwcmVxICpyZXEpOwo+ICsKPiArLyoqCj4gKyAqIEFkanVzdHMgdGhlIG1l
c3NhZ2Ugc2l6ZSB0byB0aGUgZ2l2ZW4gbWF4aW11bSBzaXplLgo+ICsgKgo+ICsgKiBAcGFyYW0g
ZGV2Cj4gKyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KPiArICogQHBhcmFtIG1zaXplCj4g
KyAqICAgQWxsb3dlZCBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZS4KPiArICovCj4gK3ZvaWQgdWtfOXBk
ZXZfYWRqdXN0X21zaXplKHN0cnVjdCB1a185cGRldiAqZGV2LCB1aW50MzJfdCBtc2l6ZSk7Cj4g
Kwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBf
X1VLXzlQREVWX18gKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl9j
b3JlLmggYi9saWIvdWs5cC9pbmNsdWRlL3VrLzlwZGV2X2NvcmUuaAo+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kN2VmMzQxZTEyZDYKPiAtLS0gL2Rldi9udWxs
Cj4gKysrIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl9jb3JlLmgKPiBAQCAtMCwwICsxLDE2
OSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4gKy8q
Cj4gKyAqIEF1dGhvcnM6IENyaXN0aWFuIEJhbnUgPGNyaXN0YkBnbWFpbC5jb20+Cj4gKyAqCj4g
KyAqIENvcHlyaWdodCAoYykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJl
c3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKPiArICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+
ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Cj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fVUtf
OVBERVZfQ09SRV9fCj4gKyNkZWZpbmUgX19VS185UERFVl9DT1JFX18KPiArCj4gKyNpbmNsdWRl
IDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPGludHR5cGVzLmg+Cj4gKyNpbmNsdWRlIDx1ay9jb25m
aWcuaD4KPiArI2luY2x1ZGUgPHVrL2FyY2gvc3BpbmxvY2suaD4KPiArI2luY2x1ZGUgPHVrL2Jp
dG1hcC5oPgo+ICsjaW5jbHVkZSA8dWsvbGlzdC5oPgo+ICsjaW5jbHVkZSA8dWsvOXBfY29yZS5o
Pgo+ICsjaWYgQ09ORklHX0xJQlVLU0NIRUQKPiArI2luY2x1ZGUgPHVrL3dhaXRfdHlwZXMuaD4K
PiArI2VuZGlmCj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArZXh0ZXJuICJDIiB7Cj4gKyNl
bmRpZgo+ICsKPiArc3RydWN0IHVrXzlwZGV2Owo+ICtzdHJ1Y3QgdWtfOXByZXE7Cj4gKwo+ICsv
KioKPiArICogRnVuY3Rpb24gdHlwZSB1c2VkIGZvciBjb25uZWN0aW5nIHRvIGEgZGV2aWNlIG9u
IGEgY2VydGFpbiB0cmFuc3BvcnQuCj4gKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWxz
byBzZXQgdGhlIG1zaXplIGZpZWxkIGluIHRoZSA5UCBkZXZpY2UKPiArICogc3RydWN0IHRvIHRo
ZSBtYXhpbXVtIGFsbG93ZWQgbWVzc2FnZSBzaXplLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4g
KyAqICAgVGhlIFVuaWtyYWZ0IDlQIERldmljZS4KPiArICogQHBhcmFtIGRldmljZV9pZGVudGlm
aWVyCj4gKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlIChtb3Vu
dF90YWcgZm9yIHZpcnRpbywgZXRjLikKPiArICogQHBhcmFtIG1vdW50X2FyZ3MKPiArICogICBB
cmd1bWVudHMgcmVjZWl2ZWQgYnkgdGhlIG1vdW50KCkgY2FsbCwgZm9yIHRyYW5zcG9ydC1zcGVj
aWZpYyBvcHRpb25zLgo+ICsgKiBAcmV0dXJuCj4gKyAqICAgLSAoLUVCVVNZKTogRGV2aWNlIGlz
IGFscmVhZHkgaW4tdXNlLgo+ICsgKiAgIC0gKC1FTk9FTlQpOiBEZXZpY2UgZG9lcyBub3QgZXhp
c3QuCj4gKyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCj4gKyAqICAgLSAoPCAwKTogRmFpbGVkIHdp
dGggYSB0cmFuc3BvcnQgbGF5ZXIgZGVwZW5kZW50IGVycm9yLgo+ICsgKi8KPiArdHlwZWRlZiBp
bnQgKCp1a185cGRldl9jb25uZWN0X3QpKHN0cnVjdCB1a185cGRldiAqZGV2LAo+ICsJCQkJY29u
c3QgY2hhciAqZGV2aWNlX2lkZW50aWZpZXIsCj4gKwkJCQljb25zdCBjaGFyICptb3VudF9hcmdz
KTsKPiArCj4gKy8qKgo+ICsgKiBGdW5jdGlvbiB0eXBlIHVzZWQgZm9yIGRpc2Nvbm5lY3Rpbmcg
ZnJvbSB0aGUgZGV2aWNlLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqICAgVGhlIFVuaWty
YWZ0IDlQIERldmljZS4KPiArICogQHJldHVybgo+ICsgKiAgIC0gKDApOiBTdWNjZXNzZnVsLgo+
ICsgKiAgIC0gKDwgMCk6IEZhaWxlZCB3aXRoIGEgdHJhbnNwb3J0IGxheWVyIGRlcGVuZGVudCBl
cnJvci4KPiArICovCj4gK3R5cGVkZWYgaW50ICgqdWtfOXBkZXZfZGlzY29ubmVjdF90KShzdHJ1
Y3QgdWtfOXBkZXYgKmRldik7Cj4gKwo+ICsvKioKPiArICogRnVuY3Rpb24gdHlwZSB1c2VkIGZv
ciBzZW5kaW5nIGEgcmVxdWVzdCB0byB0aGUgOVAgZGV2aWNlLgo+ICsgKgo+ICsgKiBAcGFyYW0g
ZGV2Cj4gKyAqICAgVGhlIFVuaWtyYWZ0IDlQIGRldmljZS4KPiArICogQHBhcmFtIHJlcQo+ICsg
KiAgIFJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdCB0byBiZSBzZW50Lgo+ICsgKiBAcmV0dXJuCj4g
KyAqICAgLSAoMCk6IFN1Y2Nlc3NmdWwuCj4gKyAqICAgLSAoPCAwKTogRmFpbGVkLiBJZiAtRU5P
U1BDLCB0aGVuIHRoZSB0cmFuc3BvcnQgbGF5ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2gKPiArICog
ICBzcGFjZSB0byBzZW5kIHRoaXMgcmVxdWVzdCBhbmQgcmV0cmllcyBhcmUgcmVxdWlyZWQuCj4g
KyAqLwo+ICt0eXBlZGVmIGludCAoKnVrXzlwZGV2X3JlcXVlc3RfdCkoc3RydWN0IHVrXzlwZGV2
ICpkZXYsCj4gKwkJCQlzdHJ1Y3QgdWtfOXByZXEgKnJlcSk7Cj4gKwo+ICsvKioKPiArICogQSBz
dHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSB0aGUgb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgYSBjZXJ0
YWluIHRyYW5zcG9ydC4KPiArICovCj4gK3N0cnVjdCB1a185cGRldl90cmFuc19vcHMgewo+ICsJ
dWtfOXBkZXZfY29ubmVjdF90ICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Q7Cj4gKwl1a185
cGRldl9kaXNjb25uZWN0X3QgICAgICAgICAgICAgICAgICAgZGlzY29ubmVjdDsKPiArCXVrXzlw
ZGV2X3JlcXVlc3RfdCAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Owo+ICt9Owo+ICsKPiAr
LyoqCj4gKyAqIEBpbnRlcm5hbAo+ICsgKiBBIHN0cnVjdHVyZSB1c2VkIGZvciA5cCByZXF1ZXN0
cycgbWFuYWdlbWVudC4KPiArICovCj4gK3N0cnVjdCB1a185cGRldl9yZXFfbWdtdCB7Cj4gKwkv
KiBTcGlubG9jayBwcm90ZWN0aW5nIHRoaXMgZGF0YS4gKi8KPiArCXNwaW5sb2NrX3QgICAgICAg
ICAgICAgICAgICAgICAgc3BpbmxvY2s7Cj4gKwkvKiBCaXRtYXAgb2YgYXZhaWxhYmxlIHRhZ3Mu
ICovCj4gKwl1bnNpZ25lZCBsb25nICAgICAgICAgICAgICAgICAgIHRhZ19ibVtVS19CSVRTX1RP
X0xPTkdTKFVLXzlQX05VTVRBR1MpXTsKPiArCS8qIExpc3Qgb2YgcmVxdWVzdHMgYWxsb2NhdGVk
IGFuZCBub3QgeWV0IHJlbW92ZWQuICovCj4gKwlzdHJ1Y3QgdWtfbGlzdF9oZWFkICAgICAgICAg
ICAgIHJlcV9saXN0Owo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIEBpbnRlcm5hbAo+ICsgKiA5UERF
ViB0cmFuc3BvcnQgc3RhdGUKPiArICoKPiArICogLSBDT05ORUNURUQ6IERlZmF1bHQgc3RhdGUg
YWZ0ZXIgaW5pdGlhbGl6YXRpb24gYW5kIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uLgo+ICsgKiAt
IERJU0NPTk5FQ1RJTkc6IEFmdGVyIGEgdWtfOXBkZXZfZGlzY29ubmVjdCgpIGNhbGwuCj4gKyAq
ICAgTm8gcmVxdWVzdHMgYXJlIGFsbG93ZWQgYW55bW9yZS4gV2hlbiBhbGwgbGl2ZSByZXNvdXJj
ZXMgaGF2ZSBiZWVuCj4gKyAqICAgZGVzdHJveWVkLCB0aGUgOXBkZXYgd2lsbCBmcmVlIGl0c2Vs
Zi4KPiArICovCj4gK2VudW0gdWtfOXBkZXZfdHJhbnNfc3RhdGUgewo+ICsJVUtfOVBERVZfQ09O
TkVDVEVELAo+ICsJVUtfOVBERVZfRElTQ09OTkVDVElORwo+ICt9Owo+ICsKPiArLyoqCj4gKyAq
IDlQREVWCj4gKyAqIEEgc3RydWN0dXJlIHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCBhIDlQIGRldmlj
ZS4KPiArICovCj4gK3N0cnVjdCB1a185cGRldiB7Cj4gKwkvKiBVbmRlcmx5aW5nIHRyYW5zcG9y
dCBvcGVyYXRpb25zLiAqLwo+ICsJY29uc3Qgc3RydWN0IHVrXzlwZGV2X3RyYW5zX29wcyAqb3Bz
Owo+ICsJLyogQWxsb2NhdG9yIHVzZWQgYnkgdGhpcyBkZXZpY2UuICovCj4gKwlzdHJ1Y3QgdWtf
YWxsb2MgICAgICAgICAgICAgICAgICphOyAvKiBTZWUgdWtfOXBkZXZfY29ubmVjdCgpLiAqLwo+
ICsJLyogVHJhbnNwb3J0IHN0YXRlLiAqLwo+ICsJZW51bSB1a185cGRldl90cmFuc19zdGF0ZSAg
ICAgICBzdGF0ZTsKPiArCS8qIE1heGltdW0gc2l6ZSBvZiBhIG1lc3NhZ2UuICovCj4gKwl1aW50
MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG1zaXplOwo+ICsJLyogVHJhbnNwb3J0LWFsbG9j
YXRlZCBkYXRhLiAqLwo+ICsJdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcHJpdjsK
PiArCS8qIEBpbnRlcm5hbCBSZXF1ZXN0IG1hbmFnZW1lbnQuICovCj4gKwlzdHJ1Y3QgdWtfOXBk
ZXZfcmVxX21nbXQgICAgICAgIF9yZXFfbWdtdDsKPiArI2lmIENPTkZJR19MSUJVS1NDSEVECj4g
KwkvKgo+ICsJICogU2xlcHQgb24gYnkgdGhyZWFkcyB3YWl0aW5nIGZvciB0aGVpciB0dXJuIGZv
ciBlbm91Z2ggc3BhY2UgdG8gc2VuZAo+ICsJICogdGhlIHJlcXVlc3QuCj4gKwkgKi8KPiArCXN0
cnVjdCB1a193YWl0cQkJCXhtaXRfd3E7Cj4gKyNlbmRpZgo+ICt9Owo+ICsKPiArI2lmZGVmIF9f
Y3BsdXNwbHVzCj4gK30KPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX19VS185UERFVl9DT1JF
X18gKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oIGIv
bGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oCj4gaW5kZXggN2I2NjQ1ZmI1ZTg0Li5k
NzNhZjNlM2JlYWMgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFu
cy5oCj4gKysrIGIvbGliL3VrOXAvaW5jbHVkZS91ay85cGRldl90cmFucy5oCj4gQEAgLTM3LDYg
KzM3LDcgQEAKPiAgIAo+ICAgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KPiAgICNpbmNsdWRlIDx1ay9j
b25maWcuaD4KPiArI2luY2x1ZGUgPHVrLzlwZGV2X2NvcmUuaD4KPiAgIAo+ICAgI2lmZGVmIF9f
Y3BsdXNwbHVzCj4gICBleHRlcm4gIkMiIHsKPiBAQCAtNTEsNiArNTIsOCBAQCBzdHJ1Y3QgdWtf
OXBkZXZfdHJhbnMgewo+ICAgCSAqIHNwZWNpZmljIHRyYW5zcG9ydC4KPiAgIAkgKi8KPiAgIAlj
b25zdCBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5hbWU7Cj4gKwkvKiBTdXBw
b3J0ZWQgb3BlcmF0aW9ucy4gKi8KPiArCWNvbnN0IHN0cnVjdCB1a185cGRldl90cmFuc19vcHMg
ICAgICAgICAqb3BzOwo+ICAgCS8qIENhbiB0aGUgdHJhbnNwb3J0IGJlIHVzZWQgYXMgYSBkZWZh
dWx0IG9uZT8gKi8KPiAgIAlib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXNfZGVmYXVsdDsKPiAgIAkvKiBBbGxvY2F0b3IgdXNlZCBmb3IgZGV2aWNlcyB3aGljaCB1c2Ug
dGhpcyB0cmFuc3BvcnQgbGF5ZXIuICovCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:54:05 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:54: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 1hhDno-000741-KJ; Sat, 29 Jun 2019 13:54:04 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ko5/=U4=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hhDnn-00073w-IE
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:54:03 +0000
X-Inumbo-ID: 585e8980-9a75-11e9-8980-bc764e045a96
Received: from mail-ot1-x32f.google.com (unknown [2607:f8b0:4864:20::32f])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 585e8980-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:53:59 +0000 (UTC)
Received: by mail-ot1-x32f.google.com with SMTP id q20so8956782otl.0
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:53:59 -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=1Li9BzKnHVFkVthWHV1SWcCJ7GdKSu+Uqk20k9wV4d8=;
 b=KknXme6SMRgCDOkchCTh3hPqZJjxpbeZyPqbmC+n9mJvwlqMaPrhWXtttakE+dPT/x
 ZxDhN+KpGQVE77C1MVXl0LPb1aSYQ5umyAgFQOtLl8lEwdlreRGbAzsnBbHP1Ckh7dzO
 ZwueTaG3NuTgsGB9HgSEu0ozulqwY5EMGvqe+lLKbHcqCPNFSm0T7VONypvFM7pXF9SR
 JzRpKqqHdLU6n4wmjk9/ARiK3fZJmbfqryIu4m0QWo9Z+XCHe84sNVoI6/6orLqLdHe+
 FI/cGyTNUp+xpusfy5xCmgoiwdcqhsBgYFDizSzM5ZE5by4dz0MNyAwj+QNbxo9eU/FX
 gxjw==
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=1Li9BzKnHVFkVthWHV1SWcCJ7GdKSu+Uqk20k9wV4d8=;
 b=ceeW7M/JHDxhF3noCIB1GLaZbHOnc9AA1yDSvfP0HOxomntLUfhchRAz60zeFyjnGd
 O/zdBatLMvxC9ln00LRlqjq4I/YJ/4KiNzDKjboria1FLw3/W4lAntaWbcDcoAYV6Ze8
 zsJMYQ1STL26VzglFmJlsJya8MREqVc3nRGog7Zf9Jh8K+Z8G535cNGlOLn0j8WFqCSK
 n5yDQR5IKaL+3KoNjhM8euNwYoeIY1fBVLQR+OVayQvNJgxBoN6Pt25z1e67zs6lNJ+N
 1WJgm9xsaEp7GsL/iRHm9T7TIXbUq2ha73283Eq5DKmQ+XGvtb4hBIsuu6la+KrdhTqt
 Aotw==
X-Gm-Message-State: APjAAAVJ0Q9NaNVYUumahxGGUnElaHdbJ5vCfcNTk7QGY01fBTxNgch2
 khoB4IGQdqQESBAqz8ejDh9pXKqkcBDNeYn3DE8=
X-Google-Smtp-Source: APXvYqz45h25pGBRQ4zJ77EaWFORYXNGk4sR8RpxRpn47fXbjdzG4mPiFAqQmDydzfX69dDvfFDxwPiT8AT7LIpFMg8=
X-Received: by 2002:a9d:3e4e:: with SMTP id h14mr6235749otg.182.1561816439146; 
 Sat, 29 Jun 2019 06:53:59 -0700 (PDT)
MIME-Version: 1.0
References: <20190529083342.14459-1-nicolescu.roxana1996@gmail.com>
 <ca08881f-c0f2-3ef5-3fe5-da5e9205d463@neclab.eu>
In-Reply-To: <ca08881f-c0f2-3ef5-3fe5-da5e9205d463@neclab.eu>
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
Date: Sat, 29 Jun 2019 16:53:48 +0300
Message-ID: <CAJ5aZkt2CCB3Sd9jz_hFvKfNd6kLL+9ou1L9Djcvu4g1xL-qqA@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 4/6] lib/ukblkdev: Request
 interface
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, minios-devel@lists.xen.org, costin.lupu@cs.pub.ro
Content-Type: multipart/mixed; boundary="===============3666112091113143607=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============3666112091113143607==
Content-Type: multipart/alternative; boundary="0000000000000f4bbe058c76baa2"

--0000000000000f4bbe058c76baa2
Content-Type: text/plain; charset="UTF-8"

Hi Simon,

Thank you! See my comments below.

Roxana
On Fri, Jun 14, 2019 at 3:17 PM Simon Kuenzer <simon.kuenzer@neclab.eu>
wrote:

> On 29.05.19 10:33, Roxana Nicolescu wrote:
> > This patch introduces the interface for sending a request and receiving
> > a response. This is designed to support asynchronous operations.
> > The interface permits sector-wide access only.
> > Receiving the response from backend can be done with interrupts or
> > with polling.
> >
> > Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
> > ---
> >   lib/ukblkdev/blkdev.c                   |  32 +++++
> >   lib/ukblkdev/exportsyms.uk              |  10 ++
> >   lib/ukblkdev/include/uk/blkdev.h        | 200
> ++++++++++++++++++++++++++++++++
> >   lib/ukblkdev/include/uk/blkdev_core.h   |  63 ++++++++++
> >   lib/ukblkdev/include/uk/blkdev_driver.h |  28 +++++
> >   lib/ukblkdev/include/uk/blkreq.h        | 110 ++++++++++++++++++
> >   6 files changed, 443 insertions(+)
> >   create mode 100644 lib/ukblkdev/include/uk/blkreq.h
> >
> > diff --git a/lib/ukblkdev/blkdev.c b/lib/ukblkdev/blkdev.c
> > index 6b82cf8d..3c58061b 100644
> > --- a/lib/ukblkdev/blkdev.c
> > +++ b/lib/ukblkdev/blkdev.c
> > @@ -84,6 +84,12 @@ int uk_blkdev_drv_register(struct uk_blkdev *dev,
> struct uk_alloc *a,
> >       UK_ASSERT(dev->dev_ops->queue_setup);
> >       UK_ASSERT(dev->dev_ops->get_info);
> >       UK_ASSERT(dev->dev_ops->queue_get_info);
> > +     UK_ASSERT(dev->submit_one);
> > +     UK_ASSERT(dev->finish_reqs);
> > +     UK_ASSERT((dev->dev_ops->queue_intr_enable &&
> > +                     dev->dev_ops->queue_intr_disable)
> > +                     || (!dev->dev_ops->queue_intr_enable
> > +                     && !dev->dev_ops->queue_intr_disable));
> >
> >       dev->_data = _alloc_data(a, blkdev_count,  drv_name);
> >       if (!dev->_data)
> > @@ -371,3 +377,29 @@ int uk_blkdev_start(struct uk_blkdev *dev)
> >
> >       return rc;
> >   }
> > +
> > +int uk_blkdev_queue_submit_one(struct uk_blkdev *dev,
> > +             uint16_t queue_id,
> > +             struct uk_blkdev_request *req)
> > +{
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(dev->submit_one);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +     UK_ASSERT(dev->_data->state == UK_BLKDEV_RUNNING);
> > +     UK_ASSERT(req != NULL);
>
> UK_ASSERT(!PTRISERR(dev->_queue[queue_id]));
>
> > +
> > +     return dev->submit_one(dev, queue_id, req);
>
> Don't you want to hand-over the queue reference instead? This way queue
> ids are something that concerns a driver less. We did a similar thing
> with libuknetdev. Our intention was that we did not want that each
> driver implements an own lookup function, just to get its private queue
> struct. It also kind of forces the driver implementation to separate
> queue operations from operating the global device state. This is
> something useful for SMP and preempted scheduling. later.
>
>   return dev->submit_one(dev, dev->_queue[queue_id], req);
>
> I changed all the functions as you suggested in v2.

> > +}
> > +
> > +int uk_blkdev_queue_finish_reqs(struct uk_blkdev *dev,
> > +             uint16_t queue_id)
> > +{
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->finish_reqs);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +     UK_ASSERT(dev->_data->state == UK_BLKDEV_RUNNING);
>
> UK_ASSERT(!PTRISERR(dev->_queue[queue_id]));
>
> > +
> > +     return dev->finish_reqs(dev, queue_id);
>
> I would handover the reference here, too:
>
>   return dev->finish_reqs(dev, dev->_queue[queue_id]);
>
> > +}
> > diff --git a/lib/ukblkdev/exportsyms.uk b/lib/ukblkdev/exportsyms.uk
> > index 077994f0..5888be69 100644
> > --- a/lib/ukblkdev/exportsyms.uk
> > +++ b/lib/ukblkdev/exportsyms.uk
> > @@ -9,3 +9,13 @@ uk_blkdev_configure
> >   uk_blkdev_queue_get_info
> >   uk_blkdev_queue_configure
> >   uk_blkdev_start
> > +uk_blkdev_queue_intr_enable
> > +uk_blkdev_queue_intr_disable
> > +uk_blkdev_capabilities
> > +uk_blkdev_ssize
> > +uk_blkdev_max_nb_sectors_per_req
>
> maybe better to shroten the name of this one?: uk_blkdev_max_sec_per_req()
>
> > +uk_blkdev_mode
>
> What is the "access mode"? See my note at the capabilities struct.
>
> > +uk_blkdev_sectors
> > +uk_blkdev_align
>
> call it uk_blkdev_ioalign, see also my comment later in this patch.
>
> > +uk_blkdev_queue_submit_one
> > +uk_blkdev_queue_finish_reqs
> > diff --git a/lib/ukblkdev/include/uk/blkdev.h
> b/lib/ukblkdev/include/uk/blkdev.h
> > index d32f62fc..db6d3b80 100644
> > --- a/lib/ukblkdev/include/uk/blkdev.h
> > +++ b/lib/ukblkdev/include/uk/blkdev.h
> > @@ -221,6 +221,206 @@ int uk_blkdev_queue_configure(struct uk_blkdev
> *dev,
> >    */
> >   int uk_blkdev_start(struct uk_blkdev *dev);
> >
> > +/**
> > + * Get the capabilities info which stores info about the device,
> > + * like nb_of_sectors, sector_size etc
>
> Add a note that the device has to be "running" before you can get this
> information.
>
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device.
> > + *
> > + * @return
> > + *   A pointer to a structure of type *uk_blkdev_capabilities*.
> > + **/
> > +static inline const struct uk_blkdev_cap *uk_blkdev_capabilities(
> > +             struct uk_blkdev *blkdev)
> > +{
> > +     UK_ASSERT(blkdev);
> > +     UK_ASSERT(blkdev->_data->state >= UK_BLKDEV_RUNNING);
> > +
> > +     return &blkdev->capabilities;
> > +}
> > +
> > +#define uk_blkdev_ssize(blkdev) \
> > +     (uk_blkdev_capabilities(blkdev)->ssize)
> > +
> > +#define uk_blkdev_max_nb_sectors_per_req(bldev) \
> > +     (uk_blkdev_capabilities(blkdev)->max_sectors_per_req)
> > +
> > +#define uk_blkdev_mode(blkdev) \
> > +     (uk_blkdev_capabilities(blkdev)->mode)
>
> One thing: What is this mode? See my comments when we speak about the
> capabilities struct in this file.
>
> > +
> > +#define uk_blkdev_sectors(blkdev) \
> > +     (uk_blkdev_capabilities(blkdev)->sectors)
> > +
> > +#define uk_blkdev_align(blkdev) \
> > +     (uk_blkdev_capabilities(blkdev)->align)
>
> Call this one also ioalign.
>
> > +/**
> > + * Enable interrupts for a queue.
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device in running state.
> > + * @param queue_id
> > + *   The index of the queue to set up.
> > + *   The value must be in the range [0, nb_queue - 1] previously
> supplied
> > + *   to uk_blkdev_configure().
> > + * @return
> > + *   - (0): Success, interrupts enabled.
> > + *   - (-ENOTSUP): Driver does not support interrupts.
> > + */
> > +static inline int uk_blkdev_queue_intr_enable(struct uk_blkdev *dev,
> > +                                         uint16_t queue_id)
> > +{
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->dev_ops);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +     UK_ASSERT(!PTRISERR(dev->_queue[queue_id]));
> > +
> > +     if (unlikely(!dev->dev_ops->queue_intr_enable))
> > +             return -ENOTSUP;
> > +
> > +     return dev->dev_ops->queue_intr_enable(dev, queue_id);
>
> Same comment as with uk_blkdev_queue_submit_one():
>
>   return dev->dev_ops->queue_intr_enable(dev, dev->_queue[queue_id]);
>
> > +}
> > +
> > +/**
> > + * Disable interrupts for a queue.
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device in running state.
> > + * @param queue_id
> > + *   The index of the queue to set up.
> > + *   The value must be in the range [0, nb_queue - 1] previously
> supplied
> > + *   to uk_blkdev_configure().
> > + * @return
> > + *   - (0): Success, interrupts disabled.
> > + *   - (-ENOTSUP): Driver does not support interrupts.
> > + */
> > +static inline int uk_blkdev_queue_intr_disable(struct uk_blkdev *dev,
> > +                                          uint16_t queue_id)
> > +{
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->dev_ops);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +     UK_ASSERT(!PTRISERR(dev->_queue[queue_id]));
> > +
> > +     if (unlikely(!dev->dev_ops->queue_intr_disable))
> > +             return -ENOTSUP;
> > +
> > +     return dev->dev_ops->queue_intr_disable(dev, queue_id);
>
> Same comment here regarding the queue id (see intr_enable).
>
> > +}
> > +
> > +/**
> > + * Make an aio request to the device
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device
> > + * @param queue_id
> > + *   The index of the receive queue to receive from.
> > + *   The value must be in the range [0, nb_queue - 1] previously
> supplied
> > + *   to uk_blkdev_configure().
> > + * @param req
> > + *   Request structure
> > + * @return
> > + *   - (>=0): Positive value with status flags
> > + *           - UK_BLKDEV_STATUS_SUCCESS: `req` was successfully put to
> the
> > + *           queue.
> > + *           - UK_BLKDEV_STATUS_MORE: Indicates there is still at least
> > + *           one descriptor available for a subsequent transmission.
> > + *           If the flag is unset means that the queue is full.
> > + *           This may only be set together with
> UK_BLKDEV_STATUS_SUCCESS.
> > + *   - (<0): Negative value with error code from driver, no request was
> sent.
> > + */
> > +int uk_blkdev_queue_submit_one(struct uk_blkdev *dev,
> > +             uint16_t queue_id,
> > +             struct uk_blkdev_request *req);
> > +
> > +/**
> > + * Tests for status flags returned by `uk_blkdev_submit_one`
> > + * When the function returned an error code or one of the selected
> flags is
> > + * unset, this macro returns False.
> > + *
> > + * @param status
> > + *   Return status (int)
> > + * @param flag
> > + *   Flag(s) to test
> > + * @return
> > + *   - (True):  All flags are set and status is not negative
> > + *   - (False): At least one flag is not set or status is negative
> > + */
> > +#define uk_blkdev_status_test_set(status, flag)                      \
> > +     (((int)(status) & ((int)(flag) | INT_MIN)) == (flag))
> > +
>
> INT_MIN requires the header <limits.h> to be included. Can you include
> it in this header file?
>
> > +/**
> > + * Tests for unset status flags returned by `uk_blkdev_submit_one`
> > + * When the function returned an error code or one of the
> > + * selected flags is set, this macro returns False.
> > + *
> > + * @param status
> > + *   Return status (int)
> > + * @param flag
> > + *   Flag(s) to test
> > + * @return
> > + *   - (True):  Flags are not set and status is not negative
> > + *   - (False): At least one flag is set or status is negative
> > + */
> > +#define uk_blkdev_status_test_unset(status, flag)                    \
> > +     (((int)(status) & ((int)(flag) | INT_MIN)) == (0x0))
> > +
> > +/**
> > + * Tests if the return status of `uk_blkdev_submit_one`
> > + * indicates a successful operation.
> > + *
> > + * @param status
> > + *   Return status (int)
> > + * @return
> > + *   - (True):  Operation was successful
> > + *   - (False): Operation was unsuccessful or error happened
> > + */
> > +#define uk_blkdev_status_successful(status)                  \
> > +     uk_blkdev_status_test_set((status), UK_BLKDEV_STATUS_SUCCESS)
> > +
> > +/**
> > + * Tests if the return status of `uk_blkdev_submit_one`
> > + * indicates that the operation should be retried/
> > + *
> > + * @param status
> > + *   Return status (int)
> > + * @return
> > + *   - (True):  Operation should be retried
> > + *   - (False): Operation was successful or error happened
> > + */
> > +#define uk_blkdev_status_notready(status)                            \
> > +     uk_blkdev_status_test_unset((status), UK_BLKDEV_STATUS_SUCCESS)
> > +
> > +/**
> > + * Tests if the return status of `uk_blkdev_submit_one`
> > + * indicates that the last operation can be successfully repeated again.
> > + *
> > + * @param status
> > + *   Return status (int)
> > + * @return
> > + *   - (True):  Flag UK_BLKDEV_STATUS_MORE is set
> > + *   - (False): Operation was successful or error happened
> > + */
> > +#define uk_blkdev_status_more(status)
>       \
> > +     uk_blkdev_status_test_set((status), (UK_BLKDEV_STATUS_SUCCESS   \
> > +                                          | UK_BLKDEV_STATUS_MORE))
> > +
> > +/**
> > + * Get responses from the queue
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device
> > + * @param queue_id
> > + *   queue id
> > + * @return
> > + *   - 0: Success
> > + *   - (<0): on error returned by driver
> > + */
> > +int uk_blkdev_queue_finish_reqs(struct uk_blkdev *dev,
> > +             uint16_t queue_id);
> > +
> >   #ifdef __cplusplus
> >   }
> >   #endif
> > diff --git a/lib/ukblkdev/include/uk/blkdev_core.h
> b/lib/ukblkdev/include/uk/blkdev_core.h
> > index 364c05d7..309b7a7f 100644
> > --- a/lib/ukblkdev/include/uk/blkdev_core.h
> > +++ b/lib/ukblkdev/include/uk/blkdev_core.h
> > @@ -38,6 +38,7 @@
> >
> >   #include <uk/list.h>
> >   #include <uk/config.h>
> > +#include <uk/blkreq.h>
> >   #if defined(CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS)
> >   #include <uk/sched.h>
> >   #include <uk/semaphore.h>
> > @@ -119,6 +120,9 @@ struct uk_blkdev_queue;
> >    *   The queue on the Unikraft block device on which the event
> happened.
> >    * @param argp
> >    *   Extra argument that can be defined on callback registration.
> > + *
> > + * Note: This should call dev->finish_reqs function in order to process
> the
> > + *   received responses.
> >    */
> >   typedef void (*uk_blkdev_queue_event_t)(struct uk_blkdev *dev,
> >                                       uint16_t queue_id, void *argp);
> > @@ -161,15 +165,68 @@ typedef struct uk_blkdev_queue *
> (*uk_blkdev_queue_configure_t)(
> >               uint16_t nb_desc,
> >               const struct uk_blkdev_queue_conf *queue_conf);
> >
> > +/**
> > + * Driver callback type to enable interrupts
> > + * for a queue on Unikraft block device.
> > + **/
> > +typedef int (*uk_blkdev_queue_intr_enable_t)(struct uk_blkdev *dev,
> > +                                         uint16_t queue_id); > +
>
> I would use `struct uk_blkdev_queue *queue` instead
> of `uint16_t queue_id` (see my comment ahead). Please also group this
> prototype definition together with the intr_disable defintion.
>
> >   /** Driver callback type to start a configured Unikraft block device.
> */
> >   typedef int (*uk_blkdev_start_t)(struct uk_blkdev *dev);
> >
> > +/**
> > + * Driver callback type to disable interrupts
> > + *   for a queue on Unikraft block device.
> > + **/
> > +typedef int (*uk_blkdev_queue_intr_disable_t)(struct uk_blkdev *dev,
> > +                                         uint16_t queue_id);
>
> Same comment: `struct uk_blkdev_queue *queue`
>
> > +/**
> > + * Status code flags returned queue_submit_one function
> > + */
> > +/** Successful operation. */
> > +#define UK_BLKDEV_STATUS_SUCCESS  (0x1)
> > +/**
> > + * More room available for operation (e.g., still space on queue for
> sending
> > + * a request.
> > + */
> > +#define UK_BLKDEV_STATUS_MORE     (0x2)
> > +
> > +/** Driver callback type to submit a request to Unikraft block device.
> */
> > +typedef int (*uk_blkdev_queue_submit_one_t)(struct uk_blkdev *dev,
> > +             uint16_t queue_id,
>
> Same comment: `struct uk_blkdev_queue *queue`
>
> > +             struct uk_blkdev_request *req);
> > +/**
> > + * Driver callback type to finish
> > + * a bunch of requests to Unikraft block device.
> > + **/
> > +typedef int (*uk_blkdev_queue_finish_reqs_t)(struct uk_blkdev *dev,
> > +             uint16_t queue_id);
>
> Same comment: `struct uk_blkdev_queue *queue`
>
> > +
> >   struct uk_blkdev_ops {
> >       uk_blkdev_get_info_t                            get_info;
> >       uk_blkdev_configure_t                           dev_configure;
> >       uk_blkdev_queue_get_info_t                      queue_get_info;
> >       uk_blkdev_queue_configure_t                     queue_setup;
> > +     uk_blkdev_queue_intr_enable_t                   queue_intr_enable;
> >       uk_blkdev_start_t                               dev_start;
> > +     uk_blkdev_queue_intr_disable_t                  queue_intr_disable;
> > +};
> > +
> > +/**
> > + * Device info
> > + */
> > +struct uk_blkdev_cap {
> > +     /* Number of sectors */
> > +     __sector sectors;
> > +     /* Sector size */
> > +     __sector ssize;
>
> It does not make sense to define the size of a single sector with a unit
> "in number of sectors" (`__sector`). You can take `size_t` or `uint16_t`
> instead.
>
> > +     /* Access mode */
> > +     int mode;
>
> What is the access mode (is it for instance read-only etc.)? Is the
> driver filling this out and it is read-only for the API user?
> I am asking because I could not find any defintions (e..g, enum or
> constants) that describe what the access mode means.
>
> The access mode follows the defines from fcntl.h (nolibc): O_RDONLY
or O_RDWR.

> > +     /* Max nb of supported sectors for an op */
> > +     __sector max_sectors_per_req;
> > +     /* Alignment for data used in future read/write requests */
> > +     uint16_t align;
>
>
> I would call this field `ioalign` to point out that this alignment has
> to do with alignment of I/O operations.
> You can optionally comment that this alignment means in number of bytes.
> If `ioalign` is `1`, no alignment is set, right?
>
> Right.

> >   };
> >
> >   /**
> > @@ -215,8 +272,14 @@ struct uk_blkdev_data {
> >   };
> >
> >   struct uk_blkdev {
> > +     /* Pointer to submit request function */
> > +     uk_blkdev_queue_submit_one_t submit_one;
> > +     /* Pointer to handle_responses function */
> > +     uk_blkdev_queue_finish_reqs_t finish_reqs;
> >       /* Pointer to API-internal state data. */
> >       struct uk_blkdev_data *_data;
> > +     /* Capabilities. */
> > +     struct uk_blkdev_cap capabilities;
> >       /* Functions callbacks by driver. */
> >       const struct uk_blkdev_ops *dev_ops;
> >       /* Pointers to queues (API-private) */
> > diff --git a/lib/ukblkdev/include/uk/blkdev_driver.h
> b/lib/ukblkdev/include/uk/blkdev_driver.h
> > index b72f52ab..37b5a3e8 100644
> > --- a/lib/ukblkdev/include/uk/blkdev_driver.h
> > +++ b/lib/ukblkdev/include/uk/blkdev_driver.h
> > @@ -70,6 +70,34 @@ int uk_blkdev_drv_register(struct uk_blkdev *dev,
> >               struct uk_alloc *a,
> >               const char *drv_name);
> >
> > +/**
> > + * Forwards a queue event to the API user
> > + * Can (and should) be called from device interrupt context
> > + *
> > + * @param dev
> > + *   Unikraft block device to which the event relates to
> > + * @param queue_id
> > + *   receive queue ID to which the event relates to
> > + */
> > +static inline void uk_blkdev_drv_queue_event(struct uk_blkdev *dev,
> > +             uint16_t queue_id)
> > +{
> > +     struct uk_blkdev_event_handler *queue_handler;
> > +
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +
> > +     queue_handler = &dev->_data->queue_handler[queue_id];
> > +
> > +#if CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS
> > +     uk_semaphore_up(&queue_handler->events);
> > +#else
> > +     if (queue_handler->callback)
> > +             queue_handler->callback(dev, queue_id,
> queue_handler->cookie);
> > +#endif
> > +}
> > +
> >   #ifdef __cplusplus
> >   }
> >   #endif
> > diff --git a/lib/ukblkdev/include/uk/blkreq.h
> b/lib/ukblkdev/include/uk/blkreq.h
> > new file mode 100644
> > index 00000000..85c25587
> > --- /dev/null
> > +++ b/lib/ukblkdev/include/uk/blkreq.h
> > @@ -0,0 +1,110 @@
> > +/* SPDX-License-Identifier: BSD-3-Clause */
> > +/*
> > + * Authors: Roxana Nicolescu  <nicolescu.roxana1996@gmail.com>
> > + *
> > + * Copyright (c) 2019, University Politehnica 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.
> > + */
> > +#ifndef UK_BLKREQ_H_
> > +#define UK_BLKREQ_H_
> > +
> > +/**
> > + * Unikraft block API request declaration.
> > + *
> > + * This header contains all the API data types used for requests
> operation.
> > + */
> > +
> > +#ifdef __cplusplus
> > +extern "C" {
> > +#endif
> > +
> > +#define __sector size_t
> > +struct uk_blkdev_request;
>
> I prefer naming it `uk_blkreq` instead. This would be a similar
> shortening of the struct name like we did in libuknetdev with `struct
> uk_netbuf`. It should improve readability.
>
> > +
> > +/**
> > + *   Operation status
> > + */
> > +enum uk_blkdev_req_state {
> > +     UK_BLKDEV_REQ_FINISHED = 0,
> > +     UK_BLKDEV_REQ_UNFINISHED
> > +};
>
> Simplify the name with `uk_blkreq_state`
>
> > +
> > +/**
> > + * Supported operations
> > + */
> > +enum uk_blkdev_op {
> > +     /* Read operation */
> > +     UK_BLKDEV_READ = 0,
> > +     /* Write operation */
> > +     UK_BLKDEV_WRITE,
> > +     /* Flush the volatile write cache */
> > +     UK_BLKDEV_FFLUSH = 4
> > +};
>
> Simplify the name with `uk_blkreq_op`
> Btw, is it possible that drivers can write and flush at the same time or
> do you expect them to do two independent request. In the latter case the
> enum is fine. Otherwise I would define Macros that can be or'ed.
>
> No, it is not possible to write and flush at the same time. These are two
different (separate) operations.
That's why I use an enum for that.

> > +
> > +/**
> > + * Function type used for request callback after a response is
> processed.
> > + *
> > + * @param req
> > + *   The request object on which the event is triggered
> > + * @param cookie_callback
> > + *   Optional parameter
> > + */
> > +typedef int (*uk_blkdev_request_event_t)(struct uk_blkdev_request *req,
> > +             void *cookie_callback);
>
> I would call `cookie_callback` it either `cb_cookie`, `cb_arg` or just
> `cookie`. Please mention that the argument is the one that was given by
> the user on the request setup/submission.
> I would also name the function pointer data type `uk_blkreq_event_t`
> instead. It should be also a `void` function. I think it makes the API
> too complicated if the user-provided function can return error codes.
>
> > +
> > +/**
> > + * Used for sending a request to the device.
> > + */
> > +struct uk_blkdev_request {
> > +     /* Input members */
> > +     /* Operation type */
> > +     enum uk_blkdev_op                       operation;
>
> With this enum it looks like that you can't WRITE and FFLUSH with the
> same request, is this intended?
>
> Yes, see my previous comment.

> > +     /* Start Sector from where the op begin */
> > +     size_t                                  start_sector;
>
> Since the start sector is a sector address, you should use `__sector` as
> data type instead of `size_t`. I would also call the field also just
> `start`.
>
> > +     /* Pointer to data */
> > +     void                                    *aio_buf;
> > +     /* Size in number of sectors */
> > +     __sector                                nb_sectors;
>
> To group the arguments better, please move nb_sectors before `aio_buf`.
>
> Actually, I chose to put the aio_buf before the output members, since for
read operations
it is used for input and output as well (back end will put data at this
address).

> > +     /* Request callback and its parameters */
> > +     uk_blkdev_request_event_t               cb;
> > +     void                                    *cookie_callback;
>
> I would call it either `cb_cookie`, `cb_arg` or just `cookie`.
>
> > +
> > +     /* Output members */
> > +     /* State of request: finished/unfinished*/
> > +     __atomic                                state;
>
> It probably makes sense to provide an init function (static inline) or
> macro for requests. This one can be used to initialize the output
> parameters. This would probably simplify the usage of the API and we can
> extend it later without breaking existing code too much, for instance
> with scatter-gather lists.
>
> Something along these lines:
>
>   static inline void uk_blkreq_init(struct uk_blkreq *r,
>                                    enum uk_blkreq_op op,
>                                    __sector start, __sector nb_sectors,
>                                    void *aio_buf,
>                                    uk_blkreq_event_t cb,
>                                    void *cb_arg) { [...] }
>
> In case you introduce it, please use it within your synchronous API.
>
> I would also introduce a small helper macro that can be used to poll the
> state:
>
>   #define uk_blkreq_is_done(req) \
>          [..the atomic operation for testing..]
>
> ...to be used like:
>
>   while (!uk_blkreq_is_done(req)) {
>         /* poll the device queue */
>         [...]
>   }
>
> Good idea. This can be used in the sync function as well.

>
> > +     /* Result status of operation */
> > +     uint8_t                                 result_status;
>
> I would name the result field just `result`. Are you sure you want to
> have an unsigned int of 8 bits? I would have expected `int`. Errors are
> negative and success is zero. How is it actually defined? Maybe a
> description is needed here.

Actually, in both drivers (Xen and Virtio) the error status are positive. I
will change the sign of it in v2.

>
>
> +};
> > +
> > +#ifdef __cplusplus
> > +}
> > +#endif
> > +
> > +#endif /* UK_BLKREQ_H_ */
> >
>

--0000000000000f4bbe058c76baa2
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>Hi Simon,</div><div=
><br></div><div>Thank you! See my comments below.</div><div dir=3D"ltr"><br=
></div>Roxana<br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Fri, Jun 14, 2019 at 3:17 PM Simon Kuenzer &lt;<a href=3D"mailto:=
simon.kuenzer@neclab.eu">simon.kuenzer@neclab.eu</a>&gt; wrote:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex">On 29.05.19 10:33, Roxana N=
icolescu wrote:<br>
&gt; This patch introduces the interface for sending a request and receivin=
g<br>
&gt; a response. This is designed to support asynchronous operations.<br>
&gt; The interface permits sector-wide access only.<br>
&gt; Receiving the response from backend can be done with interrupts or<br>
&gt; with polling.<br>
&gt; <br>
&gt; Signed-off-by: Roxana Nicolescu &lt;<a href=3D"mailto:nicolescu.roxana=
1996@gmail.com" target=3D"_blank">nicolescu.roxana1996@gmail.com</a>&gt;<br=
>
&gt; ---<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/blkdev.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 32 +++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noref=
errer" target=3D"_blank">exportsyms.uk</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 |=C2=A0 10 ++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev.h=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 | 200 ++++++++++++++++++++++++++++++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev_core.h=C2=A0 =C2=A0|=C2=A0 =
63 ++++++++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev_driver.h |=C2=A0 28 +++++<b=
r>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkreq.h=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 | 110 ++++++++++++++++++<br>
&gt;=C2=A0 =C2=A06 files changed, 443 insertions(+)<br>
&gt;=C2=A0 =C2=A0create mode 100644 lib/ukblkdev/include/uk/blkreq.h<br>
&gt; <br>
&gt; diff --git a/lib/ukblkdev/blkdev.c b/lib/ukblkdev/blkdev.c<br>
&gt; index 6b82cf8d..3c58061b 100644<br>
&gt; --- a/lib/ukblkdev/blkdev.c<br>
&gt; +++ b/lib/ukblkdev/blkdev.c<br>
&gt; @@ -84,6 +84,12 @@ int uk_blkdev_drv_register(struct uk_blkdev *dev, s=
truct uk_alloc *a,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops-&gt;queue_setup);<=
br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops-&gt;get_info);<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops-&gt;queue_get_info=
);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;submit_one);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;finish_reqs);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT((dev-&gt;dev_ops-&gt;queue_intr_enable =
&amp;&amp;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0dev-&gt;dev_ops-&gt;queue_intr_disable)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0|| (!dev-&gt;dev_ops-&gt;queue_intr_enable<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0&amp;&amp; !dev-&gt;dev_ops-&gt;queue_intr_disable));<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0dev-&gt;_data =3D _alloc_data(a, blkdev_coun=
t,=C2=A0 drv_name);<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!dev-&gt;_data)<br>
&gt; @@ -371,3 +377,29 @@ int uk_blkdev_start(struct uk_blkdev *dev)<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt;=C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +int uk_blkdev_queue_submit_one(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id,<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct uk_blkdev_requ=
est *req)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;submit_one);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state =3D=3D UK_BLKDE=
V_RUNNING);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(req !=3D NULL);<br>
<br>
UK_ASSERT(!PTRISERR(dev-&gt;_queue[queue_id]));<br>
<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return dev-&gt;submit_one(dev, queue_id, req);<br=
>
<br>
Don&#39;t you want to hand-over the queue reference instead? This way queue=
 <br>
ids are something that concerns a driver less. We did a similar thing <br>
with libuknetdev. Our intention was that we did not want that each <br>
driver implements an own lookup function, just to get its private queue <br=
>
struct. It also kind of forces the driver implementation to separate <br>
queue operations from operating the global device state. This is <br>
something useful for SMP and preempted scheduling. later.<br>
<br>
=C2=A0 return dev-&gt;submit_one(dev, dev-&gt;_queue[queue_id], req);<br>
<br></blockquote><div>I changed all the functions as you suggested in v2.</=
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">
&gt; +}<br>
&gt; +<br>
&gt; +int uk_blkdev_queue_finish_reqs(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id)<br=
>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;finish_reqs);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state =3D=3D UK_BLKDE=
V_RUNNING);<br>
<br>
UK_ASSERT(!PTRISERR(dev-&gt;_queue[queue_id]));<br>
<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return dev-&gt;finish_reqs(dev, queue_id);<br>
<br>
I would handover the reference here, too:<br>
<br>
=C2=A0 return dev-&gt;finish_reqs(dev, dev-&gt;_queue[queue_id]);<br>
<br>
&gt; +}<br>
&gt; diff --git a/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"nore=
ferrer" target=3D"_blank">exportsyms.uk</a> b/lib/ukblkdev/<a href=3D"http:=
//exportsyms.uk" rel=3D"noreferrer" target=3D"_blank">exportsyms.uk</a><br>
&gt; index 077994f0..5888be69 100644<br>
&gt; --- a/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noreferrer"=
 target=3D"_blank">exportsyms.uk</a><br>
&gt; +++ b/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noreferrer"=
 target=3D"_blank">exportsyms.uk</a><br>
&gt; @@ -9,3 +9,13 @@ uk_blkdev_configure<br>
&gt;=C2=A0 =C2=A0uk_blkdev_queue_get_info<br>
&gt;=C2=A0 =C2=A0uk_blkdev_queue_configure<br>
&gt;=C2=A0 =C2=A0uk_blkdev_start<br>
&gt; +uk_blkdev_queue_intr_enable<br>
&gt; +uk_blkdev_queue_intr_disable<br>
&gt; +uk_blkdev_capabilities<br>
&gt; +uk_blkdev_ssize<br>
&gt; +uk_blkdev_max_nb_sectors_per_req<br>
<br>
maybe better to shroten the name of this one?: uk_blkdev_max_sec_per_req()<=
br>
<br>
&gt; +uk_blkdev_mode<br>
<br>
What is the &quot;access mode&quot;? See my note at the capabilities struct=
.<br>
<br>
&gt; +uk_blkdev_sectors<br>
&gt; +uk_blkdev_align<br>
<br>
call it uk_blkdev_ioalign, see also my comment later in this patch.<br>
<br>
&gt; +uk_blkdev_queue_submit_one<br>
&gt; +uk_blkdev_queue_finish_reqs<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev.h b/lib/ukblkdev/include/u=
k/blkdev.h<br>
&gt; index d32f62fc..db6d3b80 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev.h<br>
&gt; @@ -221,6 +221,206 @@ int uk_blkdev_queue_configure(struct uk_blkdev *=
dev,<br>
&gt;=C2=A0 =C2=A0 */<br>
&gt;=C2=A0 =C2=A0int uk_blkdev_start(struct uk_blkdev *dev);<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +/**<br>
&gt; + * Get the capabilities info which stores info about the device,<br>
&gt; + * like nb_of_sectors, sector_size etc<br>
<br>
Add a note that the device has to be &quot;running&quot; before you can get=
 this <br>
information.<br>
<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device.<br>
&gt; + *<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0A pointer to a structure of type *uk_blkdev_capabiliti=
es*.<br>
&gt; + **/<br>
&gt; +static inline const struct uk_blkdev_cap *uk_blkdev_capabilities(<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct uk_blkdev *blk=
dev)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(blkdev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(blkdev-&gt;_data-&gt;state &gt;=3D UK_B=
LKDEV_RUNNING);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return &amp;blkdev-&gt;capabilities;<br>
&gt; +}<br>
&gt; +<br>
&gt; +#define uk_blkdev_ssize(blkdev) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(uk_blkdev_capabilities(blkdev)-&gt;ssize)<br>
&gt; +<br>
&gt; +#define uk_blkdev_max_nb_sectors_per_req(bldev) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(uk_blkdev_capabilities(blkdev)-&gt;max_sectors_p=
er_req)<br>
&gt; +<br>
&gt; +#define uk_blkdev_mode(blkdev) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(uk_blkdev_capabilities(blkdev)-&gt;mode)<br>
<br>
One thing: What is this mode? See my comments when we speak about the <br>
capabilities struct in this file.<br>
<br>
&gt; +<br>
&gt; +#define uk_blkdev_sectors(blkdev) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(uk_blkdev_capabilities(blkdev)-&gt;sectors)<br>
&gt; +<br>
&gt; +#define uk_blkdev_align(blkdev) \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(uk_blkdev_capabilities(blkdev)-&gt;align)<br>
<br>
Call this one also ioalign.<br>
<br>
&gt; +/**<br>
&gt; + * Enable interrupts for a queue.<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device in running state.<br>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0The index of the queue to set up.<br>
&gt; + *=C2=A0 =C2=A0The value must be in the range [0, nb_queue - 1] previ=
ously supplied<br>
&gt; + *=C2=A0 =C2=A0to uk_blkdev_configure().<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (0): Success, interrupts enabled.<br>
&gt; + *=C2=A0 =C2=A0- (-ENOTSUP): Driver does not support interrupts.<br>
&gt; + */<br>
&gt; +static inline int uk_blkdev_queue_intr_enable(struct uk_blkdev *dev,<=
br>
&gt; +=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0uint16_t queue_id)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(!PTRISERR(dev-&gt;_queue[queue_id]));<b=
r>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (unlikely(!dev-&gt;dev_ops-&gt;queue_intr_enab=
le))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOTSUP;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return dev-&gt;dev_ops-&gt;queue_intr_enable(dev,=
 queue_id);<br>
<br>
Same comment as with uk_blkdev_queue_submit_one():<br>
<br>
=C2=A0 return dev-&gt;dev_ops-&gt;queue_intr_enable(dev, dev-&gt;_queue[que=
ue_id]);<br>
<br>
&gt; +}<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Disable interrupts for a queue.<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device in running state.<br>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0The index of the queue to set up.<br>
&gt; + *=C2=A0 =C2=A0The value must be in the range [0, nb_queue - 1] previ=
ously supplied<br>
&gt; + *=C2=A0 =C2=A0to uk_blkdev_configure().<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (0): Success, interrupts disabled.<br>
&gt; + *=C2=A0 =C2=A0- (-ENOTSUP): Driver does not support interrupts.<br>
&gt; + */<br>
&gt; +static inline int uk_blkdev_queue_intr_disable(struct uk_blkdev *dev,=
<br>
&gt; +=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 uint16_t queue_id)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(!PTRISERR(dev-&gt;_queue[queue_id]));<b=
r>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (unlikely(!dev-&gt;dev_ops-&gt;queue_intr_disa=
ble))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return -ENOTSUP;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return dev-&gt;dev_ops-&gt;queue_intr_disable(dev=
, queue_id);<br>
<br>
Same comment here regarding the queue id (see intr_enable).<br>
<br>
&gt; +}<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Make an aio request to the device<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device<br>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0The index of the receive queue to receive from.<br>
&gt; + *=C2=A0 =C2=A0The value must be in the range [0, nb_queue - 1] previ=
ously supplied<br>
&gt; + *=C2=A0 =C2=A0to uk_blkdev_configure().<br>
&gt; + * @param req<br>
&gt; + *=C2=A0 =C2=A0Request structure<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (&gt;=3D0): Positive value with status flags<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- UK_BLKDEV_STATUS_SUCCESS=
: `req` was successfully put to the<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue.<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- UK_BLKDEV_STATUS_MORE: I=
ndicates there is still at least<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0one descriptor available f=
or a subsequent transmission.<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0If the flag is unset means=
 that the queue is full.<br>
&gt; + *=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0This may only be set toget=
her with UK_BLKDEV_STATUS_SUCCESS.<br>
&gt; + *=C2=A0 =C2=A0- (&lt;0): Negative value with error code from driver,=
 no request was sent.<br>
&gt; + */<br>
&gt; +int uk_blkdev_queue_submit_one(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id,<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct uk_blkdev_requ=
est *req);<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Tests for status flags returned by `uk_blkdev_submit_one`<br>
&gt; + * When the function returned an error code or one of the selected fl=
ags is<br>
&gt; + * unset, this macro returns False.<br>
&gt; + *<br>
&gt; + * @param status<br>
&gt; + *=C2=A0 =C2=A0Return status (int)<br>
&gt; + * @param flag<br>
&gt; + *=C2=A0 =C2=A0Flag(s) to test<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (True):=C2=A0 All flags are set and status is not ne=
gative<br>
&gt; + *=C2=A0 =C2=A0- (False): At least one flag is not set or status is n=
egative<br>
&gt; + */<br>
&gt; +#define uk_blkdev_status_test_set(status, flag)=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(((int)(status) &amp; ((int)(flag) | INT_MIN)) =
=3D=3D (flag))<br>
&gt; +<br>
<br>
INT_MIN requires the header &lt;limits.h&gt; to be included. Can you includ=
e <br>
it in this header file?<br>
<br>
&gt; +/**<br>
&gt; + * Tests for unset status flags returned by `uk_blkdev_submit_one`<br=
>
&gt; + * When the function returned an error code or one of the<br>
&gt; + * selected flags is set, this macro returns False.<br>
&gt; + *<br>
&gt; + * @param status<br>
&gt; + *=C2=A0 =C2=A0Return status (int)<br>
&gt; + * @param flag<br>
&gt; + *=C2=A0 =C2=A0Flag(s) to test<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (True):=C2=A0 Flags are not set and status is not ne=
gative<br>
&gt; + *=C2=A0 =C2=A0- (False): At least one flag is set or status is negat=
ive<br>
&gt; + */<br>
&gt; +#define uk_blkdev_status_test_unset(status, flag)=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(((int)(status) &amp; ((int)(flag) | INT_MIN)) =
=3D=3D (0x0))<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Tests if the return status of `uk_blkdev_submit_one`<br>
&gt; + * indicates a successful operation.<br>
&gt; + *<br>
&gt; + * @param status<br>
&gt; + *=C2=A0 =C2=A0Return status (int)<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (True):=C2=A0 Operation was successful<br>
&gt; + *=C2=A0 =C2=A0- (False): Operation was unsuccessful or error happene=
d<br>
&gt; + */<br>
&gt; +#define uk_blkdev_status_successful(status)=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_status_test_set((status), UK_BLKDEV_STA=
TUS_SUCCESS)<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Tests if the return status of `uk_blkdev_submit_one`<br>
&gt; + * indicates that the operation should be retried/<br>
&gt; + *<br>
&gt; + * @param status<br>
&gt; + *=C2=A0 =C2=A0Return status (int)<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (True):=C2=A0 Operation should be retried<br>
&gt; + *=C2=A0 =C2=A0- (False): Operation was successful or error happened<=
br>
&gt; + */<br>
&gt; +#define uk_blkdev_status_notready(status)=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 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_status_test_unset((status), UK_BLKDEV_S=
TATUS_SUCCESS)<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Tests if the return status of `uk_blkdev_submit_one`<br>
&gt; + * indicates that the last operation can be successfully repeated aga=
in.<br>
&gt; + *<br>
&gt; + * @param status<br>
&gt; + *=C2=A0 =C2=A0Return status (int)<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- (True):=C2=A0 Flag UK_BLKDEV_STATUS_MORE is set<br>
&gt; + *=C2=A0 =C2=A0- (False): Operation was successful or error happened<=
br>
&gt; + */<br>
&gt; +#define uk_blkdev_status_more(status)=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 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_status_test_set((status), (UK_BLKDEV_ST=
ATUS_SUCCESS=C2=A0 =C2=A0\<br>
&gt; +=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 | UK_BLKDEV_STATUS_MORE))<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Get responses from the queue<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device<br>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0queue id<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- 0: Success<br>
&gt; + *=C2=A0 =C2=A0- (&lt;0): on error returned by driver<br>
&gt; + */<br>
&gt; +int uk_blkdev_queue_finish_reqs(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id);<b=
r>
&gt; +<br>
&gt;=C2=A0 =C2=A0#ifdef __cplusplus<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev_core.h b/lib/ukblkdev/incl=
ude/uk/blkdev_core.h<br>
&gt; index 364c05d7..309b7a7f 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev_core.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev_core.h<br>
&gt; @@ -38,6 +38,7 @@<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/list.h&gt;<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/config.h&gt;<br>
&gt; +#include &lt;uk/blkreq.h&gt;<br>
&gt;=C2=A0 =C2=A0#if defined(CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS)<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/sched.h&gt;<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/semaphore.h&gt;<br>
&gt; @@ -119,6 +120,9 @@ struct uk_blkdev_queue;<br>
&gt;=C2=A0 =C2=A0 *=C2=A0 =C2=A0The queue on the Unikraft block device on w=
hich the event happened.<br>
&gt;=C2=A0 =C2=A0 * @param argp<br>
&gt;=C2=A0 =C2=A0 *=C2=A0 =C2=A0Extra argument that can be defined on callb=
ack registration.<br>
&gt; + *<br>
&gt; + * Note: This should call dev-&gt;finish_reqs function in order to pr=
ocess the<br>
&gt; + *=C2=A0 =C2=A0received responses.<br>
&gt;=C2=A0 =C2=A0 */<br>
&gt;=C2=A0 =C2=A0typedef void (*uk_blkdev_queue_event_t)(struct uk_blkdev *=
dev,<br>
&gt;=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16=
_t queue_id, void *argp);<br>
&gt; @@ -161,15 +165,68 @@ typedef struct uk_blkdev_queue * (*uk_blkdev_que=
ue_configure_t)(<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t nb_desc=
,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0const struct uk_=
blkdev_queue_conf *queue_conf);<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +/**<br>
&gt; + * Driver callback type to enable interrupts<br>
&gt; + * for a queue on Unikraft block device.<br>
&gt; + **/<br>
&gt; +typedef int (*uk_blkdev_queue_intr_enable_t)(struct uk_blkdev *dev,<b=
r>
&gt; +=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0uint16_t queue_id); &gt; +<br>
<br>
I would use `struct uk_blkdev_queue *queue` instead<br>
of `uint16_t queue_id` (see my comment ahead). Please also group this <br>
prototype definition together with the intr_disable defintion.<br>
<br>
&gt;=C2=A0 =C2=A0/** Driver callback type to start a configured Unikraft bl=
ock device. */<br>
&gt;=C2=A0 =C2=A0typedef int (*uk_blkdev_start_t)(struct uk_blkdev *dev);<b=
r>
&gt;=C2=A0 =C2=A0<br>
&gt; +/**<br>
&gt; + * Driver callback type to disable interrupts<br>
&gt; + *=C2=A0 =C2=A0for a queue on Unikraft block device.<br>
&gt; + **/<br>
&gt; +typedef int (*uk_blkdev_queue_intr_disable_t)(struct uk_blkdev *dev,<=
br>
&gt; +=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0uint16_t queue_id);<br>
<br>
Same comment: `struct uk_blkdev_queue *queue`<br>
<br>
&gt; +/**<br>
&gt; + * Status code flags returned queue_submit_one function<br>
&gt; + */<br>
&gt; +/** Successful operation. */<br>
&gt; +#define UK_BLKDEV_STATUS_SUCCESS=C2=A0 (0x1)<br>
&gt; +/**<br>
&gt; + * More room available for operation (e.g., still space on queue for =
sending<br>
&gt; + * a request.<br>
&gt; + */<br>
&gt; +#define UK_BLKDEV_STATUS_MORE=C2=A0 =C2=A0 =C2=A0(0x2)<br>
&gt; +<br>
&gt; +/** Driver callback type to submit a request to Unikraft block device=
. */<br>
&gt; +typedef int (*uk_blkdev_queue_submit_one_t)(struct uk_blkdev *dev,<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id,<br=
>
<br>
Same comment: `struct uk_blkdev_queue *queue`<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct uk_blkdev_requ=
est *req);<br>
&gt; +/**<br>
&gt; + * Driver callback type to finish<br>
&gt; + * a bunch of requests to Unikraft block device.<br>
&gt; + **/<br>
&gt; +typedef int (*uk_blkdev_queue_finish_reqs_t)(struct uk_blkdev *dev,<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id);<b=
r>
<br>
Same comment: `struct uk_blkdev_queue *queue`<br>
<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0struct uk_blkdev_ops {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_get_info_t=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 g=
et_info;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_configure_t=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=
=A0dev_configure;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_get_info_t=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 queue_get_info;=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_configure_t=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_setup;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_intr_enable_t=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_intr_enable;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_start_t=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 =C2=
=A0 =C2=A0dev_start;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_intr_disable_t=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 queue_intr_disable;<br>
&gt; +};<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Device info<br>
&gt; + */<br>
&gt; +struct uk_blkdev_cap {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Number of sectors */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0__sector sectors;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Sector size */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0__sector ssize;<br>
<br>
It does not make sense to define the size of a single sector with a unit <b=
r>
&quot;in number of sectors&quot; (`__sector`). You can take `size_t` or `ui=
nt16_t` <br>
instead.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Access mode */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0int mode;<br>
<br>
What is the access mode (is it for instance read-only etc.)? Is the <br>
driver filling this out and it is read-only for the API user?<br>
I am asking because I could not find any defintions (e..g, enum or <br>
constants) that describe what the access mode means.<br>
<br></blockquote><div>The access mode follows the defines from fcntl.h (nol=
ibc): O_RDONLY or=C2=A0O_RDWR.</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">
&gt; +=C2=A0 =C2=A0 =C2=A0/* Max nb of supported sectors for an op */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0__sector max_sectors_per_req;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Alignment for data used in future read/write r=
equests */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uint16_t align;<br>
<br>
<br>
I would call this field `ioalign` to point out that this alignment has <br>
to do with alignment of I/O operations.<br>
You can optionally comment that this alignment means in number of bytes.<br=
>
If `ioalign` is `1`, no alignment is set, right?<br>
<br></blockquote><div>Right.=C2=A0</div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex">
&gt;=C2=A0 =C2=A0};<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0/**<br>
&gt; @@ -215,8 +272,14 @@ struct uk_blkdev_data {<br>
&gt;=C2=A0 =C2=A0};<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0struct uk_blkdev {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Pointer to submit request function */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_submit_one_t submit_one;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Pointer to handle_responses function */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_finish_reqs_t finish_reqs;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Pointer to API-internal state data. */<br=
>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0struct uk_blkdev_data *_data;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Capabilities. */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_blkdev_cap capabilities;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Functions callbacks by driver. */<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0const struct uk_blkdev_ops *dev_ops;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Pointers to queues (API-private) */<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev_driver.h b/lib/ukblkdev/in=
clude/uk/blkdev_driver.h<br>
&gt; index b72f52ab..37b5a3e8 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev_driver.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev_driver.h<br>
&gt; @@ -70,6 +70,34 @@ int uk_blkdev_drv_register(struct uk_blkdev *dev,<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct uk_alloc =
*a,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0const char *drv_=
name);<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +/**<br>
&gt; + * Forwards a queue event to the API user<br>
&gt; + * Can (and should) be called from device interrupt context<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0Unikraft block device to which the event relates to<br=
>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0receive queue ID to which the event relates to<br>
&gt; + */<br>
&gt; +static inline void uk_blkdev_drv_queue_event(struct uk_blkdev *dev,<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id)<br=
>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_blkdev_event_handler *queue_handler;<br=
>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0queue_handler =3D &amp;dev-&gt;_data-&gt;queue_ha=
ndler[queue_id];<br>
&gt; +<br>
&gt; +#if CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_semaphore_up(&amp;queue_handler-&gt;events);<b=
r>
&gt; +#else<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (queue_handler-&gt;callback)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_handler-&gt;cal=
lback(dev, queue_id, queue_handler-&gt;cookie);<br>
&gt; +#endif<br>
&gt; +}<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0#ifdef __cplusplus<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkreq.h b/lib/ukblkdev/include/u=
k/blkreq.h<br>
&gt; new file mode 100644<br>
&gt; index 00000000..85c25587<br>
&gt; --- /dev/null<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkreq.h<br>
&gt; @@ -0,0 +1,110 @@<br>
&gt; +/* SPDX-License-Identifier: BSD-3-Clause */<br>
&gt; +/*<br>
&gt; + * Authors: Roxana Nicolescu=C2=A0 &lt;<a href=3D"mailto:nicolescu.ro=
xana1996@gmail.com" target=3D"_blank">nicolescu.roxana1996@gmail.com</a>&gt=
;<br>
&gt; + *<br>
&gt; + * Copyright (c) 2019, University Politehnica of Bucharest<br>
&gt; + * All rights reserved.<br>
&gt; + *<br>
&gt; + * Redistribution and use in source and binary forms, with or without=
<br>
&gt; + * modification, are permitted provided that the following conditions=
<br>
&gt; + * are met:<br>
&gt; + *<br>
&gt; + * 1. Redistributions of source code must retain the above copyright<=
br>
&gt; + *=C2=A0 =C2=A0 notice, this list of conditions and the following dis=
claimer.<br>
&gt; + * 2. Redistributions in binary form must reproduce the above copyrig=
ht<br>
&gt; + *=C2=A0 =C2=A0 notice, this list of conditions and the following dis=
claimer in the<br>
&gt; + *=C2=A0 =C2=A0 documentation and/or other materials provided with th=
e distribution.<br>
&gt; + * 3. Neither the name of the copyright holder nor the names of its<b=
r>
&gt; + *=C2=A0 =C2=A0 contributors may be used to endorse or promote produc=
ts derived from<br>
&gt; + *=C2=A0 =C2=A0 this software without specific prior written permissi=
on.<br>
&gt; + *<br>
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTOR=
S &quot;AS IS&quot;<br>
&gt; + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED =
TO, THE<br>
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR=
 PURPOSE<br>
&gt; + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBU=
TORS BE<br>
&gt; + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, O=
R<br>
&gt; + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT =
OF<br>
&gt; + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BU=
SINESS<br>
&gt; + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETH=
ER IN<br>
&gt; + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHER=
WISE)<br>
&gt; + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISE=
D OF THE<br>
&gt; + * POSSIBILITY OF SUCH DAMAGE.<br>
&gt; + *<br>
&gt; + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.<br>
&gt; + */<br>
&gt; +#ifndef UK_BLKREQ_H_<br>
&gt; +#define UK_BLKREQ_H_<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Unikraft block API request declaration.<br>
&gt; + *<br>
&gt; + * This header contains all the API data types used for requests oper=
ation.<br>
&gt; + */<br>
&gt; +<br>
&gt; +#ifdef __cplusplus<br>
&gt; +extern &quot;C&quot; {<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +#define __sector size_t<br>
&gt; +struct uk_blkdev_request;<br>
<br>
I prefer naming it `uk_blkreq` instead. This would be a similar <br>
shortening of the struct name like we did in libuknetdev with `struct <br>
uk_netbuf`. It should improve readability.<br>
<br>
&gt; +<br>
&gt; +/**<br>
&gt; + *=C2=A0 =C2=A0Operation status<br>
&gt; + */<br>
&gt; +enum uk_blkdev_req_state {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_BLKDEV_REQ_FINISHED =3D 0,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_BLKDEV_REQ_UNFINISHED<br>
&gt; +};<br>
<br>
Simplify the name with `uk_blkreq_state`<br>
<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Supported operations<br>
&gt; + */<br>
&gt; +enum uk_blkdev_op {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Read operation */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_BLKDEV_READ =3D 0,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Write operation */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_BLKDEV_WRITE,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Flush the volatile write cache */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_BLKDEV_FFLUSH =3D 4<br>
&gt; +};<br>
<br>
Simplify the name with `uk_blkreq_op`<br>
Btw, is it possible that drivers can write and flush at the same time or <b=
r>
do you expect them to do two independent request. In the latter case the <b=
r>
enum is fine. Otherwise I would define Macros that can be or&#39;ed.<br>
<br></blockquote><div>No, it is not possible to write and flush at the same=
 time. These are two different (separate) operations.</div><div>That&#39;s =
why I use an enum for that.=C2=A0</div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex">
&gt; +<br>
&gt; +/**<br>
&gt; + * Function type used for request callback after a response is proces=
sed.<br>
&gt; + *<br>
&gt; + * @param req<br>
&gt; + *=C2=A0 =C2=A0The request object on which the event is triggered<br>
&gt; + * @param cookie_callback<br>
&gt; + *=C2=A0 =C2=A0Optional parameter<br>
&gt; + */<br>
&gt; +typedef int (*uk_blkdev_request_event_t)(struct uk_blkdev_request *re=
q,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *cookie_callback=
);<br>
<br>
I would call `cookie_callback` it either `cb_cookie`, `cb_arg` or just <br>
`cookie`. Please mention that the argument is the one that was given by <br=
>
the user on the request setup/submission.<br>
I would also name the function pointer data type `uk_blkreq_event_t` <br>
instead. It should be also a `void` function. I think it makes the API <br>
too complicated if the user-provided function can return error codes.<br>
<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Used for sending a request to the device.<br>
&gt; + */<br>
&gt; +struct uk_blkdev_request {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Input members */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Operation type */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0enum uk_blkdev_op=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0operation;<br>
<br>
With this enum it looks like that you can&#39;t WRITE and FFLUSH with the <=
br>
same request, is this intended?<br>
<br></blockquote><div>Yes, see my previous comment.=C2=A0</div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol=
id rgb(204,204,204);padding-left:1ex">
&gt; +=C2=A0 =C2=A0 =C2=A0/* Start Sector from where the op begin */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0size_t=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 =C2=A0 =C2=A0 =C2=
=A0 start_sector;<br>
<br>
Since the start sector is a sector address, you should use `__sector` as <b=
r>
data type instead of `size_t`. I would also call the field also just <br>
`start`.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Pointer to data */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0void=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 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 *aio_buf;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Size in number of sectors */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0__sector=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 =C2=A0 =C2=A0 nb_s=
ectors;<br>
<br>
To group the arguments better, please move nb_sectors before `aio_buf`.<br>
<br></blockquote><div>Actually, I chose to put the aio_buf before the outpu=
t members, since for read operations</div><div>it is used for input and out=
put as well (back end will put data at this address).=C2=A0</div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex">
&gt; +=C2=A0 =C2=A0 =C2=A0/* Request callback and its parameters */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_request_event_t=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cb;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0void=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 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 *cookie_callback;<br>
<br>
I would call it either `cb_cookie`, `cb_arg` or just `cookie`.<br>
<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Output members */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* State of request: finished/unfinished*/<br>
&gt; +=C2=A0 =C2=A0 =C2=A0__atomic=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 =C2=A0 =C2=A0 stat=
e;<br>
<br>
It probably makes sense to provide an init function (static inline) or <br>
macro for requests. This one can be used to initialize the output <br>
parameters. This would probably simplify the usage of the API and we can <b=
r>
extend it later without breaking existing code too much, for instance <br>
with scatter-gather lists.<br>
<br>
Something along these lines:<br>
<br>
=C2=A0 static inline void uk_blkreq_init(struct uk_blkreq *r,<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 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum uk_blkreq_op op,<b=
r>
=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0__sector start, __secto=
r nb_sectors,<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 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *aio_buf,<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 =C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkreq_event_t cb,<b=
r>
=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *cb_arg) { [...] }=
<br>
<br>
In case you introduce it, please use it within your synchronous API.<br>
<br>
I would also introduce a small helper macro that can be used to poll the <b=
r>
state:<br>
<br>
=C2=A0 #define uk_blkreq_is_done(req) \<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[..the atomic operation for testing..]<br=
>
<br>
...to be used like:<br>
<br>
=C2=A0 while (!uk_blkreq_is_done(req)) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 /* poll the device queue */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 [...]<br>
=C2=A0 }<br>
<br></blockquote><div>Good idea. This can be used in the sync function as w=
ell.=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Result status of operation */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uint8_t=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 =C2=A0 =C2=A0 =C2=
=A0result_status;<br>
<br>
I would name the result field just `result`. Are you sure you want to <br>
have an unsigned int of 8 bits? I would have expected `int`. Errors are <br=
>
negative and success is zero. How is it actually defined? Maybe a <br>
description is needed here.</blockquote><div>Actually, in both drivers (Xen=
 and Virtio) the error status are positive. I will change the sign of it in=
 v2.=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">=C2=A0<br=
></blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px=
 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt; +};<br>
&gt; +<br>
&gt; +#ifdef __cplusplus<br>
&gt; +}<br>
&gt; +#endif<br>
&gt; +<br>
&gt; +#endif /* UK_BLKREQ_H_ */<br>
&gt; <br>
</blockquote></div></div></div></div>

--0000000000000f4bbe058c76baa2--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============3666112091113143607==--


From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hhDoq-00075V-Po; Sat, 29 Jun 2019 13:55:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDop-00075O-Fz
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:07 +0000
X-Inumbo-ID: 7fb1ef8a-9a75-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7fb1ef8a-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:06 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id z23so11545656wma.4
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55:06 -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=TMZITootg/ABQAJSFa6ikVbzLlcknrYuF9sGeSAZdkY=;
 b=f3fw/5r8n3Xr8MKiWbfXiY8NlRvUs+hikK6vbyb8rETUT/5CM7pxO5T2ESgS7vdmN3
 aIxDrj+Qwl+mIEHEi5jlYoG3JXwqzmJnEPFibrigoxlBqPImcPrUcX1zU5nnngNdGs2c
 PZuo0gmh9gMV8ZNoi2f7iZKmK+9iOFHQFYVgedLQIV1BuTn4UeDOnQ+z4TCEPDpRnukL
 LWftsoWZg51/e7idf2sjya/duVQZV1QgT+PmyljEf3AFcsKTnIjkcYhF/VNCPxK69h3N
 C6jyp+lEpEk9M7MbdN1cDnYXE4oj8n8MbK8TaZ0VF4BLHNrMRdFlwUU1m5ruRJEltjKV
 4hKg==
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=TMZITootg/ABQAJSFa6ikVbzLlcknrYuF9sGeSAZdkY=;
 b=lS4e19qSfNZMajOLh+SFXQDwy1h/DeH3bC55lZcTut8OkGbG3qzkGjk9EXdn+VX039
 Zdhl/SNLD1QdyWeamLbXnMmwkaeab22aD/oOaye8TllHOhqOj4Fv8MAlsUGX3e9RM6+V
 3oz//Ckfzk7qozSolKzb03SKqlOYC35gvtGawsC1//hTWswK6MXoFe11X9finAmN5S3u
 sNJtnTA48wuANHWtj2th74X5bHBtyX2ewmcDMkUj1ZdkatbpauKfMO05rjvdmFvMaVh9
 b75HIQLF/lpTP/Z8QIJczktanAuSLNhBaylKWWr126zVbkhUWXU5YzaHvUU7vMRW43VB
 MyVw==
X-Gm-Message-State: APjAAAUZ/bhtzQqEeoZ2DY34pWcsBemib2nIyYJcy0rOj9e29vJqmE56
 GeKYFH6P8svLKcxp/8guwc0CYbyAUiU=
X-Google-Smtp-Source: APXvYqxWIKgVgrKUerFN7m8fhj7mYjx+3qrq8uWnlrH/aeNIGa8MYjwXpi5axqyr9dH4ELlBmVSU1A==
X-Received: by 2002:a1c:a842:: with SMTP id r63mr10734223wme.117.1561816504950; 
 Sat, 29 Jun 2019 06:55:04 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.04
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:04 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:54:55 +0300
Message-Id: <20190629135501.12347-1-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 0/6] LWIP fixes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r, Mihai Pogonaru <pogonarumihai@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>

VGhpcyBwYXRjaCBzZXJpZXMgc29sdmVzIExXSVAgaXNzdWVzIHJlZ2FyZGluZyB2ZnMgaW50ZWdy
YXRpb24sCnByb3ZpZGVzIGlvY3RsIGZvciBMV0lQIGFuZCBmaXhlcyBnZXRob3N0YnluYW1lKiBk
ZWZpbmVzLgoKVGhpcyBwYXRjaCBzZXJpZXMgZGVwZW5kcyBvbiB0aGUgcmVjZW50ICJWRlNDT1JF
IGZpeGVzIiBwYXRjaCBzZXJpZXMKCk1paGFpIFBvZ29uYXJ1ICg2KToKICBVc2UgdmZzIGZ1bmN0
aW9ucyB0byBhbGxvY2F0ZS9mcmVlIHRoZSByZXNvdXJjZXMgdXNlZCBmb3IgYSBzb2NrZXQKICAg
IChQYXJ0IEkpCiAgVXBkYXRlIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIHVucHJvY2Vzc2VkIGJ5
dGVzIGNvcnJlY3RseQogIFVzZSB2ZnMgZnVuY3Rpb25zIHRvIGFsbG9jYXRlL2ZyZWUgdGhlIHJl
c291cmNlcyB1c2VkIGZvciBhIHNvY2tldAogICAgKFBhcnQgSUkpCiAgc29ja2V0cy5jOiBDaGFu
Z2UgZXJyb3IgaGFuZGxpbmcgdG8gbWF0Y2ggdmZzIGV4cGVjdGF0aW9ucwogIFByb3ZpZGUgaW9j
dGwgZm9yIExXSVAKICBGdXJ0aGVyIHByb3RlY3QgZ2V0aG9zdGJ5bmFtZSogZGVmaW5lcwoKIGV4
cG9ydHN5bXMudWsgICAgICAgIHwgICAxIC0KIGluY2x1ZGUvbmV0ZGIuaCAgICAgIHwgICA4ICst
CiBpbmNsdWRlL3N5cy9zb2NrZXQuaCB8ICAgMiAtCiBzb2NrZXRzLmMgICAgICAgICAgICB8IDIz
NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDQg
ZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKLS0gCjIu
MTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1p
bmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:09 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1hhDor-00075w-RJ; Sat, 29 Jun 2019 13:55:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDoq-00075T-Mq
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:08 +0000
X-Inumbo-ID: 805f6c46-9a75-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 805f6c46-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:07 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id s3so11654586wms.2
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55: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=d/ncUf6Sst6N7nv72P28mX/cSqHbO9YldPDFFsrTk/U=;
 b=HuahPe+oPzfl2Q4hsnW9AeugqgxOMHp3jww//GvSYYrQeGyxDkkCmZ33qr/c4uwWZu
 WRNmdqQySI/WXlQ9GVFsZkYr3oTFz/cIyXhxZt8cH4olYJb1oh1WfIB9agbFopJm4/Tn
 AYUftjFGG/kvZq0GZR3MW08QKuIhxpNdOLUV98Bz6GTkIBLg70rJJrO9L1pJClQ/iwid
 pWGWoIWTFQB/1l439/z6P8zvraz8Ci7+u1DMZLhfpbridHv3RO5H+0d9DyjW6jEuWeGy
 bHFtrW3HKL/TJzw65zKwR2kzTr5YYsZBluj4qSb07xMut7AHgydxP3kyd9R7ZiFttouk
 xAhg==
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=d/ncUf6Sst6N7nv72P28mX/cSqHbO9YldPDFFsrTk/U=;
 b=oOfnOmx9yZmrfBxnXlWZDLfL/uI4IF0+ozjmgWvgz0Ze4o0QIB6bn3sXwzdp5mlkMV
 rinf3+SspQobXIv2TrDinni238J7GEpFcJ63bbULG/aAjurrMowTSzws7M5GiYyzE9HV
 5bft69f2Rz0YU3jVymRz0ZuTWkoO4tQvlqwoLQG8UaGecDXmfaFWj/8PIut7F5O+IEtm
 Os0mGdLhYxGzRD6RvtO9ktArrBOKOL/9LqVftw2ZgQdts3WNzkg3H53r0AC5z1DC1QU3
 hyJjiQAjYDUniOrcJ1kVRkUYSmoMitRBEbcaQ/iEx+EJu2xfNWF8xnYJFo4/xRwgcyWi
 EA/Q==
X-Gm-Message-State: APjAAAV2/7S40YYLN6A1XhMGTN8A5hmWjkJig3C99bFBOxIac20j5rpV
 KACVQD0vT+QHY0boF4s1SQSMvOTEBf4=
X-Google-Smtp-Source: APXvYqx+gK6pS+h/pZ+uT65LauSfudndoPkpIuqTfH2NdbY5AaIFtVMvVuPhicq/h2SYtTmN0ysWuQ==
X-Received: by 2002:a1c:c74a:: with SMTP id x71mr10874873wmf.121.1561816505979; 
 Sat, 29 Jun 2019 06:55:05 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.05
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:05 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:54:56 +0300
Message-Id: <20190629135501.12347-2-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 1/6] Use vfs functions to
 allocate/free the resources used for a socket (Part I)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r, Mihai Pogonaru <pogonarumihai@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>

VGhpcyBwYXJ0IGNoYW5nZXMgTFdJUCBzbyB0aGF0IGl0IGxldHMgdmZzIHRvIGZyZWUgdGhlIHJl
c291cmNlcwp1c2VkIHRvIGludGVncmF0ZSBzb2NrZXRzIGluIHZmcy4KClJpZ2h0IG5vdyBzb2Nr
X25ldF9jbG9zZSBmcmVlcyB0aGUgdmZzY29yZV9maWxlLCBkZW50cnkgYW5kIHZub2RlCnVzZWQg
Zm9yIHRoZSBzb2NrZXQuIFRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIHNpbmNlIHZmcyB1bmxvY2tz
IHRoZQp2bm9kZSBhZnRlciBjYWxsaW5nIHNvY2tfbmV0X2Nsb3NlIHNvIGl0IGFjY2Vzc2VzIGZy
ZWVkIG1lbW9yeS4KCldlIHdpbGwgbGV0IHZmcyBoYW5kbGUgdGhlIGZyZWVpbmcgb2YgdGhlIHJl
c291cmNlcyB1c2VkIGZvciBhCnNvY2tldCBieSBzZXR0aW5nIHRoZSBkZW50cnkgcmVmY291bnQg
dG8gMSBzdWNoIHRoYXQsIHdoZW4gYSBzb2NrZXQgaXMKY2xvc2VkIChzbyBpdHMgdmZzY29yZV9m
aWxlIGlzIGFsc28gY2xvc2VkKSwgdGhlIGRlbnRyeSdzIHJlZmNvdW50CmhpdHMgMCwgdGhlIGRl
bnRyeSBpcyBkZWxldGVkIHNvIHRoZSB2bm9kZSByZWZjb3VudCBoaXRzIDAKYW5kIGl0IGlzIGFs
c28gZGVsZXRlZC4KClNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFp
QGdtYWlsLmNvbT4KLS0tCiBzb2NrZXRzLmMgfCAxMjMgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4
MyBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zb2NrZXRzLmMg
Yi9zb2NrZXRzLmMKaW5kZXggZTk1NzU4ZC4uY2JlMzAzMCAxMDA2NDQKLS0tIGEvc29ja2V0cy5j
CisrKyBiL3NvY2tldHMuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+
CiAjaW5jbHVkZSA8dmZzY29yZS9maWxlLmg+CiAjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgorI2lu
Y2x1ZGUgPHZmc2NvcmUvbW91bnQuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL3Zub2RlLmg+CiAjaW5j
bHVkZSA8dWsvYWxsb2MuaD4KICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+CkBAIC00OCw4ICs0
OSwxNiBAQAogI2RlZmluZSBTT0NLX05FVF9TRVRfRVJSTk8oZXJyY29kZSkgXAogCShlcnJubyA9
IC0oZXJyY29kZSkpCiAKKy8qCisgKiBCb2d1cyBtb3VudCBwb2ludCB1c2VkIGJ5IGFsbCBzb2Nr
ZXRzCisgKgorICogV2UgbmVlZCB0aGlzIGJlY2F1c2Ugd2hlbiBkZWxldGluZyBhIHZub2RlCisg
KiB2ZnMgY2FsbHMgdmZzX3VuYnVzeSBvbiBpdHMgbW91bnQgcG9pbnQKKyAqLworc3RhdGljIHN0
cnVjdCBtb3VudCBzX21vdW50OworCiBzdHJ1Y3Qgc29ja19uZXRfZmlsZSB7Ci0Jc3RydWN0IHZm
c2NvcmVfZmlsZSB2ZnNjb3JlX2ZpbGU7CisJc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9m
aWxlOwogCWludCBzb2NrX2ZkOwogfTsKIApAQCAtNTgsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5l
IHN0cnVjdCBzb2NrX25ldF9maWxlICpzb2NrX25ldF9maWxlX2dldChpbnQgZmQpCiAJc3RydWN0
IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwogCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZvczsK
IAotCWZvcyAgPSB2ZnNjb3JlX2dldF9maWxlKGZkKTsKKwlmb3MgPSB2ZnNjb3JlX2dldF9maWxl
KGZkKTsKIAlpZiAoIWZvcykgewogCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAogCQkJICAg
ICgiZmFpbGVkIHdpdGggaW52YWxpZCBkZXNjcmlwdG9yXG4iKSk7CkBAIC03MSw3ICs4MCw3IEBA
IHN0YXRpYyBpbmxpbmUgc3RydWN0IHNvY2tfbmV0X2ZpbGUgKnNvY2tfbmV0X2ZpbGVfZ2V0KGlu
dCBmZCkKIAkJZmlsZSA9IEVSUjJQVFIoLUVCQURGKTsKIAkJZ290byBFWElUOwogCX0KLQlmaWxl
ID0gX19jb250YWluZXJvZihmb3MsIHN0cnVjdCBzb2NrX25ldF9maWxlLCB2ZnNjb3JlX2ZpbGUp
OworCWZpbGUgPSBmb3MtPmZfZGF0YTsKIEVYSVQ6CiAJcmV0dXJuIGZpbGU7CiB9CkBAIC04MSw2
ICs5MCw3IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGlu
dCBzb2NrX2ZkKQogCWludCByZXQgPSAwOwogCWludCB2ZnNfZmQ7CiAJc3RydWN0IHNvY2tfbmV0
X2ZpbGUgKmZpbGUgPSBOVUxMOworCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc19maWxlID0gTlVM
TDsKIAlzdHJ1Y3QgZGVudHJ5ICpzX2RlbnRyeTsKIAlzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGU7CiAK
QEAgLTEwMSw2ICsxMTEsMTMgQEAgc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2bm9w
cyAqdl9vcCwgaW50IHNvY2tfZmQpCiAJCQkgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0
IGZpbGU6IE91dCBvZiBtZW1vcnlcbiIpKTsKIAkJZ290byBFUlJfTUFMTE9DX0ZJTEU7CiAJfQor
CXZmc19maWxlID0gdWtfY2FsbG9jKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIDEsIHNpemVvZigq
dmZzX2ZpbGUpKTsKKwlpZiAoIXZmc19maWxlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCUxXSVBf
REVCVUdGKFNPQ0tFVFNfREVCVUcsCisJCQkJKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZm
c19maWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7CisJCWdvdG8gRVJSX01BTExPQ19WRlNfRklMRTsK
Kwl9CiAJc19kZW50cnkgPSB1a19jYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6
ZW9mKCpzX2RlbnRyeSkpOwogCWlmICghc19kZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKQEAg
LTExNywyNiArMTM0LDQ2IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMg
KnZfb3AsIGludCBzb2NrX2ZkKQogCX0KIAogCS8qIFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBm
aWxsIG91dCBuZWNlc3NhcnkgZmllbGRzICovCi0JZmlsZS0+dmZzY29yZV9maWxlLmZkID0gdmZz
X2ZkOwotCWZpbGUtPnZmc2NvcmVfZmlsZS5mX2ZsYWdzID0gVUtfRldSSVRFIHwgVUtfRlJFQUQ7
Ci0JZmlsZS0+dmZzY29yZV9maWxlLmZfY291bnQgPSAxOwotCWZpbGUtPnZmc2NvcmVfZmlsZS5m
X2RlbnRyeSA9IHNfZGVudHJ5OworCXZmc19maWxlLT5mZCA9IHZmc19mZDsKKwl2ZnNfZmlsZS0+
Zl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFEOworCXZmc19maWxlLT5mX2NvdW50ID0gMTsK
Kwl2ZnNfZmlsZS0+Zl9kYXRhID0gZmlsZTsKKwl2ZnNfZmlsZS0+Zl9kZW50cnkgPSBzX2RlbnRy
eTsKIAorCXNfZGVudHJ5LT5kX3JlZmNudCA9IDE7CiAJc19kZW50cnktPmRfdm5vZGUgPSBzX3Zu
b2RlOwogCisJLyoKKwkgKiBQcm92aWRlIGJvZ3VzIGJ1dCB2YWxpZCBhZGRyZXNzZXMgdG8gYWxs
b3cKKwkgKiB2ZnMgdG8gcmVtb3ZlIG5vZGVzIGZyb20gbGlzdHMKKwkgKi8KKwlzX2RlbnRyeS0+
ZF9saW5rLnBwcmV2ID0gJnNfZGVudHJ5LT5kX2xpbmsubmV4dDsKKwlzX2RlbnRyeS0+ZF9uYW1l
c19saW5rLm5leHQgPSAmc19kZW50cnktPmRfbmFtZXNfbGluazsKKwlzX2RlbnRyeS0+ZF9uYW1l
c19saW5rLnByZXYgPSAmc19kZW50cnktPmRfbmFtZXNfbGluazsKKwogCXNfdm5vZGUtPnZfb3Ag
PSB2X29wOwogCXVrX211dGV4X2luaXQoJnNfdm5vZGUtPnZfbG9jayk7CiAJc192bm9kZS0+dl9y
ZWZjbnQgPSAxOwogCXNfdm5vZGUtPnZfZGF0YSA9IGZpbGU7CiAJc192bm9kZS0+dl90eXBlID0g
VlNPQ0s7CisJc192bm9kZS0+dl9tb3VudCA9ICZzX21vdW50OworCXNfbW91bnQubV9jb3VudCsr
OwogCisJLyoKKwkgKiBQcm92aWRlIGJvZ3VzIGJ1dCB2YWxpZCBhZGRyZXNzZXMgdG8gYWxsb3cK
KwkgKiB2ZnMgdG8gcmVtb3ZlIG5vZGVzIGZyb20gbGlzdHMKKwkgKi8KKwlzX3Zub2RlLT52X2xp
bmsubmV4dCA9ICZzX3Zub2RlLT52X2xpbms7CisJc192bm9kZS0+dl9saW5rLnByZXYgPSAmc192
bm9kZS0+dl9saW5rOworCisJZmlsZS0+dmZzY29yZV9maWxlID0gdmZzX2ZpbGU7CiAJZmlsZS0+
c29ja19mZCA9IHNvY2tfZmQ7CiAJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCJBbGxvY2F0
ZWQgc29ja2V0ICVkICgleClcbiIsCi0JCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKKwkJ
CQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwog
CiAJLyogU3RvcmluZyB0aGUgaW5mb3JtYXRpb24gd2l0aGluIHRoZSB2ZnMgc3RydWN0dXJlICov
Ci0JcmV0ID0gdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19mZCwgJmZpbGUtPnZmc2NvcmVfZmlsZSk7
CisJcmV0ID0gdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19mZCwgZmlsZS0+dmZzY29yZV9maWxlKTsK
IAlpZiAocmV0KSB7CiAJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCiAJCQkgICAgKCJGYWls
ZWQgdG8gaW5zdGFsbCBzb2NrZXQgZmRcbiIpKTsKQEAgLTE1MSw2ICsxODgsOCBAQCBFUlJfVkZT
X0lOU1RBTEw6CiBFUlJfTUFMTE9DX1ZOT0RFOgogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1
bHQoKSwgc19kZW50cnkpOwogRVJSX01BTExPQ19ERU5UUlk6CisJdWtfZnJlZSh1a19hbGxvY19n
ZXRfZGVmYXVsdCgpLCB2ZnNfZmlsZSk7CitFUlJfTUFMTE9DX1ZGU19GSUxFOgogCXVrX2ZyZWUo
dWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZSk7CiBFUlJfTUFMTE9DX0ZJTEU6CiAJdmZzY29y
ZV9wdXRfZmQodmZzX2ZkKTsKQEAgLTE2MCwxNSArMTk5LDE1IEBAIEVSUl9FWElUOgogfQogCiBz
dGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKLQkJCSAgc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQorCQkJICBzdHJ1
Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUpCiB7Ci0JaW50IHJldCA9IDA7CisJaW50IHJl
dDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CiAKIAlmaWxlID0gc192bm9k
ZS0+dl9kYXRhOwogCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9m
ZDolZFxuIiwKIAkJCQkgICAgX19mdW5jX18sCi0JCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5m
ZCwKKwkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKIAkJCQkgICAgZmlsZS0+c29ja19m
ZCkpOwogCiAJVUtfQVNTRVJUKHZmc2NvcmVfZmlsZS0+Zl9kZW50cnktPmRfdm5vZGUgPT0gc192
bm9kZSk7CkBAIC0xNzYsMTIgKzIxNSwxMyBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0
cnVjdCB2bm9kZSAqc192bm9kZSwKIAogCS8qIENsb3NlIGFuZCByZWxlYXNlIHRoZSBsd2lwIHNv
Y2tldCAqLwogCXJldCA9IGx3aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7Ci0JLyogRnJlZSBzb2Nr
ZXQgdm5vZGUgKi8KLQl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUtPnZmc2Nv
cmVfZmlsZS5mX2RlbnRyeS0+ZF92bm9kZSk7Ci0JLyogRnJlZSBzb2NrZXQgZGVudHJ5ICovCi0J
dWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2ZpbGUuZl9kZW50
cnkpOwotCS8qIEZyZWUgc29ja2V0IGZpbGUgKi8KKworCS8qCisJICogRnJlZSBzb2NrZXQgZmls
ZQorCSAqIFRoZSByZXN0IG9mIHRoZSByZXNvdXJjZXMgd2lsbCBiZSBmcmVlZCBieSB2ZnMKKwkg
Ki8KIAl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUpOworCiAJcmV0dXJuIHJl
dDsKIH0KIApAQCAtMTk0LDcgKzIzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHNvY2tfbmV0X3dyaXRl
KHN0cnVjdCB2bm9kZSAqc192bm9kZSwKIAlmaWxlID0gc192bm9kZS0+dl9kYXRhOwogCUxXSVBf
REVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9mZDolZFxuIiwKIAkJCQkgICAg
X19mdW5jX18sCi0JCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS5mZCwKKwkJCQkgICAgZmlsZS0+
dmZzY29yZV9maWxlLT5mZCwKIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwogCXJldCA9IGx3aXBf
d3JpdGV2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwgYnVmLT51aW9faW92Y250KTsKIAly
ZXR1cm4gcmV0OwpAQCAtMjEwLDE2ICsyNTAsMTkgQEAgc3RhdGljIHNzaXplX3Qgc29ja19uZXRf
cmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCiAJZmlsZSA9IHNfdm5vZGUtPnZfZGF0YTsKIAlM
V0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCiAJCQkJ
ICAgIF9fZnVuY19fLAotCQkJCSAgICBmaWxlLT52ZnNjb3JlX2ZpbGUuZmQsCisJCQkJICAgIGZp
bGUtPnZmc2NvcmVfZmlsZS0+ZmQsCiAJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKIAlyZXQgPSBs
d2lwX3JlYWR2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwgYnVmLT51aW9faW92Y250KTsK
IAlyZXR1cm4gcmV0OwogfQogCisjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5h
Y3RpdmVfdCkgdmZzY29yZV92b3BfbnVsbG9wKQorCiBzdGF0aWMgc3RydWN0IHZub3BzIHNvY2tf
bmV0X2ZvcHMgPSB7CiAJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAogCS52b3Bfd3JpdGUg
PSBzb2NrX25ldF93cml0ZSwKIAkudm9wX3JlYWQgID0gc29ja19uZXRfcmVhZCwKKwkudm9wX2lu
YWN0aXZlID0gc29ja19uZXRfaW5hY3RpdmUKIH07CiAKIGludCBzb2NrZXQoaW50IGRvbWFpbiwg
aW50IHR5cGUsIGludCBwcm90b2NvbCkKQEAgLTI5Niw3ICszMzksNyBAQCBpbnQgYWNjZXB0KGlu
dCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbikKIAl9CiAJcmV0
ID0gdmZzX2ZkOwogRVhJVF9GRFJPUDoKLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3Jl
X2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElUOgogCXJldHVybiByZXQ7
CiAKQEAgLTMyOCw3ICszNzEsNyBAQCBpbnQgYmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2th
ZGRyICpuYW1lLCBzb2NrbGVuX3QgbmFtZWxlbikKIAkJZ290byBFWElUX0ZEUk9QOwogCX0KIEVY
SVRfRkRST1A6Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVs
ZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsg
LyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzU1LDcg
KzM5OCw3IEBAIGludCBwb2xsKHN0cnVjdCBwb2xsZmQgZmRzW10sIG5mZHNfdCBuZmRzLCBpbnQg
dGltZW91dCkKIAkJCX0KIAkJCWx3aXBfZmRzW2ldLmZkID0gZmlsZS0+c29ja19mZDsKIAkJCWx3
aXBfZmRzW2ldLmV2ZW50cyA9IGZkc1tpXS5ldmVudHM7Ci0JCQl2ZnNjb3JlX3B1dF9maWxlKCZm
aWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJCQl2ZnNjb3JlX3B1
dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIAkJfQog
CX0KIApAQCAtNDA4LDcgKzQ1MSw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVh
ZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQlpZiAobWF4ZmQg
PCBmaWxlLT5zb2NrX2ZkKQogCQkJCW1heGZkID0gZmlsZS0+c29ja19mZDsKIAkJCUZEX1NFVChm
aWxlLT5zb2NrX2ZkLCAmcmQpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRlZmRz
ICYmIEZEX0lTU0VUKGksIHdyaXRlZmRzKSkgewogCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0
KGkpOwpAQCAtNDIzLDcgKzQ2Niw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVh
ZGZkcywgZmRfc2V0ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQlpZiAobWF4ZmQg
PCBmaWxlLT5zb2NrX2ZkKQogCQkJCW1heGZkID0gZmlsZS0+c29ja19mZDsKIAkJCUZEX1NFVChm
aWxlLT5zb2NrX2ZkLCAmd3IpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKGV4Y2VwdGZk
cyAmJiBGRF9JU1NFVChpLCBleGNlcHRmZHMpKSB7CiAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9n
ZXQoaSk7CkBAIC00MzgsNyArNDgxLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpy
ZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKIAkJCWlmIChtYXhm
ZCA8IGZpbGUtPnNvY2tfZmQpCiAJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwogCQkJRkRfU0VU
KGZpbGUtPnNvY2tfZmQsICZ4Yyk7Ci0JCQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3Jl
X2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJCQl2ZnNjb3JlX3B1dF9maWxlKGZpbGUt
PnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KIAkJfQogCX0KIApAQCAtNDU5
LDcgKzUwMiw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0
ICp3cml0ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCiAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9n
ZXQoaSk7CiAJCQlpZiAoIUZEX0lTU0VUKGZpbGUtPnNvY2tfZmQsICZyZCkpCiAJCQkJRkRfQ0xS
KGksIHJlYWRmZHMpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsg
LyogcmVsZWFzZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3Jl
X2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAkJaWYgKHdyaXRlZmRzICYmIEZE
X0lTU0VUKGksIHdyaXRlZmRzKSkgewogCQkJLyogVGhpcyBsb29rdXAgY2FuJ3QgZmFpbCwgb3Ig
aXQgd291bGQgYWxyZWFkeSBoYXZlCkBAIC00NjgsNyArNTExLDcgQEAgaW50IHNlbGVjdChpbnQg
bmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZk
cywKIAkJCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChpKTsKIAkJCWlmICghRkRfSVNTRVQoZmls
ZS0+c29ja19mZCwgJndyKSkKIAkJCQlGRF9DTFIoaSwgd3JpdGVmZHMpOwotCQkJdmZzY29yZV9w
dXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCQkJ
dmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50
ICovCiAJCX0KIAkJaWYgKGV4Y2VwdGZkcyAmJiBGRF9JU1NFVChpLCBleGNlcHRmZHMpKSB7CiAJ
CQkvKiBUaGlzIGxvb2t1cCBjYW4ndCBmYWlsLCBvciBpdCB3b3VsZCBhbHJlYWR5IGhhdmUKQEAg
LTQ3Nyw3ICs1MjAsNyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZk
X3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAogCQkJZmlsZSA9IHNvY2tfbmV0X2Zp
bGVfZ2V0KGkpOwogCQkJaWYgKCFGRF9JU1NFVChmaWxlLT5zb2NrX2ZkLCAmeGMpKQogCQkJCUZE
X0NMUihpLCBleGNlcHRmZHMpOwotCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiAJCX0KIAl9CiAKQEAgLTUwMSw3
ICs1NDQsNyBAQCBpbnQgc2h1dGRvd24oaW50IHMsIGludCBob3cpCiAJfQogCS8qIFNodXRkb3du
IG9mIHRoZSBkZXNjcmlwdG9yICovCiAJcmV0ID0gbHdpcF9zaHV0ZG93bihmaWxlLT5zb2NrX2Zk
LCBob3cpOwotCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVh
c2UgcmVmY291bnQgKi8KKwl2ZnNjb3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7IC8q
IHJlbGVhc2UgcmVmY291bnQgKi8KIEVYSVQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTUxOSw3ICs1
NjIsNyBAQCBpbnQgZ2V0cGVlcm5hbWUoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqbmFtZSwgc29j
a2xlbl90ICpuYW1lbGVuKQogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfZ2V0cGVlcm5h
bWUoZmlsZS0+c29ja19mZCwgbmFtZSwgbmFtZWxlbik7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmls
ZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2Zp
bGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAly
ZXR1cm4gcmV0OwogfQpAQCAtNTM3LDcgKzU4MCw3IEBAIGludCBnZXRzb2NrbmFtZShpbnQgcywg
c3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCiAJCWdvdG8gRVhJVDsK
IAl9CiAJcmV0ID0gbHdpcF9nZXRzb2NrbmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBuYW1lbGVu
KTsKLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJl
ZmNvdW50ICovCisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC01NTYsNyArNTk5LDcg
QEAgaW50IGdldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHZvaWQgKm9w
dHZhbCwgc29ja2xlbl90ICpvcHRsZW4pCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0ID0gbHdpcF9n
ZXRzb2Nrb3B0KGZpbGUtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7
Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNTc2LDcgKzYxOSw3IEBA
IGludCBzZXRzb2Nrb3B0KGludCBzLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjb25zdCB2b2lk
ICpvcHR2YWwsCiAJCWdvdG8gRVhJVDsKIAl9CiAJcmV0ID0gbHdpcF9zZXRzb2Nrb3B0KGZpbGUt
PnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7Ci0JdmZzY29yZV9wdXRf
ZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2Nv
cmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwog
RVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNTk1LDcgKzYzOCw3IEBAIGludCBjb25uZWN0KGlu
dCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVuKQogCQln
b3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBfY29ubmVjdChmaWxlLT5zb2NrX2ZkLCBuYW1lLCBu
YW1lbGVuKTsKLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC02MTQsNyAr
NjU3LDcgQEAgaW50IGxpc3RlbihpbnQgcywgaW50IGJhY2tsb2cpCiAJCWdvdG8gRVhJVDsKIAl9
CiAJcmV0ID0gbHdpcF9saXN0ZW4oZmlsZS0+c29ja19mZCwgYmFja2xvZyk7Ci0JdmZzY29yZV9w
dXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZm
c2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAq
LwogRVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjMzLDcgKzY3Niw3IEBAIGludCByZWN2KGlu
dCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncykKIAkJZ290byBFWElUOwogCX0K
IAlyZXQgPSBsd2lwX3JlY3YoZmlsZS0+c29ja19mZCwgbWVtLCBsZW4sIGZsYWdzKTsKLQl2ZnNj
b3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICov
CisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNv
dW50ICovCiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC02NTMsNyArNjk2LDcgQEAgaW50IHJl
Y3Zmcm9tKGludCBzLCB2b2lkICptZW0sIHNpemVfdCBsZW4sIGludCBmbGFncywKIAkJZ290byBF
WElUOwogCX0KIAlyZXQgPSBsd2lwX3JlY3Zmcm9tKGZpbGUtPnNvY2tfZmQsIG1lbSwgbGVuLCBm
bGFncywgZnJvbSwgZnJvbWxlbik7Ci0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZz
Y29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwogRVhJVDoKIAlyZXR1cm4gcmV0Owog
fQpAQCAtNjcyLDcgKzcxNSw3IEBAIGludCBzZW5kKGludCBzLCBjb25zdCB2b2lkICpkYXRhcHRy
LCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQogCQlnb3RvIEVYSVQ7CiAJfQogCXJldCA9IGx3aXBf
c2VuZChmaWxlLT5zb2NrX2ZkLCBkYXRhcHRyLCBzaXplLCBmbGFncyk7Ci0JdmZzY29yZV9wdXRf
ZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLworCXZmc2Nv
cmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwog
RVhJVDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjkxLDcgKzczNCw3IEBAIGludCBzZW5kbXNnKGlu
dCBzLCBjb25zdCBzdHJ1Y3QgbXNnaGRyICptZXNzYWdlLCBpbnQgZmxhZ3MpCiAJCWdvdG8gRVhJ
VDsKIAl9CiAJcmV0ID0gbHdpcF9zZW5kbXNnKGZpbGUtPnNvY2tfZmQsIG1lc3NhZ2UsIGZsYWdz
KTsKLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJl
ZmNvdW50ICovCisJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCiBFWElUOgogCXJldHVybiByZXQ7CiB9CkBAIC03MTEsNyArNzU0LDcg
QEAgaW50IHNlbmR0byhpbnQgcywgY29uc3Qgdm9pZCAqZGF0YXB0ciwgc2l6ZV90IHNpemUsIGlu
dCBmbGFncywKIAkJZ290byBFWElUOwogCX0KIAlyZXQgPSBsd2lwX3NlbmR0byhmaWxlLT5zb2Nr
X2ZkLCBkYXRhcHRyLCBzaXplLCBmbGFncywgdG8sIHRvbGVuKTsKLQl2ZnNjb3JlX3B1dF9maWxl
KCZmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCisJdmZzY29yZV9w
dXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCiBFWElU
OgogCXJldHVybiByZXQ7CiB9Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:10 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55: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 1hhDor-000761-TV; Sat, 29 Jun 2019 13:55:09 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDoq-00075d-Vt
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:09 +0000
X-Inumbo-ID: 80df8524-9a75-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 80df8524-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:08 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id c27so1373362wrb.2
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55: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=AcQqfX0lkEH0Wzos5ifu9utS8683Zk46Bbro0GFLyVw=;
 b=Z0gGVfbu1NZSsxLhazZSC/T1bFtvw2hGcX1/EcLwk4TcDSCHqLM2zu5c8e9Nc1iKUn
 1dZRWEIIje5SbxZL9u7zkw7dSIW/FFz7daxt5JHP7rAPPnZvR2HjrSUIWXLGn1gfeTsV
 w8ROk8b3O1DQ+w2kxKLkTQwMx4ed05OYdlshws37ywY/qKKCYWcCXV4D5j+5HZMRZUHR
 7p/tDbku00IjkjZ1yCrZP2wk33qLs+gs2cFGQqsTEWpGLfKrhOvOjgnX4p0jKmtsBCr7
 62hltLanBDxhOjTJZf8iBMwAGXkvC8lzQgIJ3X9P2HRA7st0zO9PbYPdaQFWXG51T5BF
 3w9g==
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=AcQqfX0lkEH0Wzos5ifu9utS8683Zk46Bbro0GFLyVw=;
 b=U8PFShcOEaNB0dZS0gNEFBeRP34V9ScI34hMUVYfimdaFOYzC4bebT8akKECaaA48l
 s2NGuL/5zVVYXpsuHV5EIQWj2hTe3MCWlZ8c7DlP0mE9O+GZa12C1p2ngeLA5IrqTYtU
 5Wx/bHYoT6jsbSAedSkFGMe5ZzgEu5B9B9SajbYAjQpiOhyLsvGIN38hbnSqtFzHlkWH
 7D4aMto+Q8O0rXsJX6A/kbJb78ylpPJ7f7yrCULdZCK6z/H/AVinQulifdXG6rsU53Z9
 9bpWgnTpjS1dXiqc2r9doEa+Fa0uQ99KHr6/iunaFGcwyC2jls8iNz74vZqxKAltyv2t
 /Z3g==
X-Gm-Message-State: APjAAAUA/1EYSUCXrEAwBmotxlsLIKWt4PCuAJSPmDvun7HW5AoCAXHV
 2S+CF4u8vgJ52MShmWUdR0GM5LT9rEM=
X-Google-Smtp-Source: APXvYqwan93oFfns+6a7i/rbhC5+dwEEl9vQg313RT1DhbeqL1AuxIP+ZuBDRW4D/hMrczM/6Hc5Fw==
X-Received: by 2002:a5d:46cb:: with SMTP id g11mr11842384wrs.253.1561816506934; 
 Sat, 29 Jun 2019 06:55:06 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.06
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:06 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:54:57 +0300
Message-Id: <20190629135501.12347-3-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 2/6] Update the number of
 remaining unprocessed bytes correctly
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r, Mihai Pogonaru <pogonarumihai@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>

VXBkYXRlIHVpbyBzdHJ1Y3R1cmUgaW4gc29ja19uZXRfd3JpdGUvcmVhZC4gVkZTQ09SRSBleHBl
Y3RzIHRoZQp1cGRhdGUgb2YgdGhlIHJlc2lkIG1lbWJlciBvZiB1aW8gc3VjaCB0aGF0IGl0IHJl
ZmxlY3RzIHRoZQpudW1iZXIgb2YgYnl0ZXMgdGhhdCByZW1haW4gdW5wcm9jZXNzZWQuCgpTZXQg
dGhlIFVLX1ZGU0NPUkVfTk9QT1MgZmxhZyBvbiB0aGUgc29ja2V0IHZmc2NvcmVfZmlsZS4gVGhp
cwpmbGFnIGluZm9ybXMgVkZTQ09SRSB0byBkbyBub3QgdXBkYXRlIHRoZSBvZmZzZXQgb2Ygb3Vy
IHNvY2tldApmaWxlIHNpbmNlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3Igc29ja2V0cy4KClNp
Z25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KLS0t
CiBzb2NrZXRzLmMgfCAxOSArKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTUg
aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zb2NrZXRzLmMgYi9z
b2NrZXRzLmMKaW5kZXggY2JlMzAzMC4uMzA0MDA5OSAxMDA2NDQKLS0tIGEvc29ja2V0cy5jCisr
KyBiL3NvY2tldHMuYwpAQCAtMTM5LDYgKzEzOSw3IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxv
YyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2NrX2ZkKQogCXZmc19maWxlLT5mX2NvdW50ID0g
MTsKIAl2ZnNfZmlsZS0+Zl9kYXRhID0gZmlsZTsKIAl2ZnNfZmlsZS0+Zl9kZW50cnkgPSBzX2Rl
bnRyeTsKKwl2ZnNfZmlsZS0+Zl92ZnNfZmxhZ3MgPSBVS19WRlNDT1JFX05PUE9TOwogCiAJc19k
ZW50cnktPmRfcmVmY250ID0gMTsKIAlzX2RlbnRyeS0+ZF92bm9kZSA9IHNfdm5vZGU7CkBAIC0y
MjUsNyArMjI2LDcgQEAgc3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHNzaXplX3Qgc29ja19uZXRfd3JpdGUo
c3RydWN0IHZub2RlICpzX3Zub2RlLAorc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qg
dm5vZGUgKnNfdm5vZGUsCiAJCQkgICAgICBzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191
bnVzZWQpCiB7CiAJaW50IHJldCA9IDA7CkBAIC0yMzcsMTAgKzIzOCwxNSBAQCBzdGF0aWMgc3Np
emVfdCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCiAJCQkJICAgIGZpbGUt
PnZmc2NvcmVfZmlsZS0+ZmQsCiAJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKIAlyZXQgPSBsd2lw
X3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Ci0J
cmV0dXJuIHJldDsKKwkvKiBsd2lwIHNldHMgZXJybm8gYW5kIHJldHVybnMgLTEgaW4gY2FzZSBv
ZiBlcnJvciAqLworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJYnVmLT51aW9fcmVz
aWQgLT0gcmV0OworCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3NpemVfdCBzb2NrX25ldF9yZWFk
KHN0cnVjdCB2bm9kZSAqc192bm9kZSwKK3N0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qg
dm5vZGUgKnNfdm5vZGUsCiAJCQkgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmls
ZSBfX3VudXNlZCwKIAkJCSAgICAgc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2Vk
KQogewpAQCAtMjUzLDcgKzI1OSwxMiBAQCBzdGF0aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0
cnVjdCB2bm9kZSAqc192bm9kZSwKIAkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKIAkJ
CQkgICAgZmlsZS0+c29ja19mZCkpOwogCXJldCA9IGx3aXBfcmVhZHYoZmlsZS0+c29ja19mZCwg
YnVmLT51aW9faW92LCBidWYtPnVpb19pb3ZjbnQpOwotCXJldHVybiByZXQ7CisJLyogbHdpcCBz
ZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ugb2YgZXJyb3IgKi8KKwlpZiAocmV0IDwg
MCkKKwkJcmV0dXJuIHJldDsKKworCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKKwlyZXR1cm4gMDsK
IH0KIAogI2RlZmluZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpIHZmc2Nv
cmVfdm9wX251bGxvcCkKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:11 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55: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 1hhDos-00076j-V8; Sat, 29 Jun 2019 13:55:10 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDos-00076Y-B2
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:10 +0000
X-Inumbo-ID: 816dedeb-9a75-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 816dedeb-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:09 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id x15so11683674wmj.3
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55: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=XLhAxNJcIjWeBDn3HbRDwrZaFHUSczCjgQ3WRWpao0w=;
 b=et6ihoNAb6PXkggzI3pW3Ny2FcSzpw66ZPUpX9EvOQTvvtD+w1z/Li6NiRNuZunyFS
 mqNljsp5t/k6xu7gN4UIXceMNdlp8fweI68+ly2IHA37aI8ICpK0Nn3z/F5v7aXU/6o4
 lKbzFaLnTXmHH9I11IvX2DME/oThtCAYYzG2gtoP4ScKUGqLW6/21sjXhktdLtLaKEsn
 vLxm0TUuCPfREekkM5Z0YQOy9ijSgbzGgWxSd0rBBO/PrGBYXUlbJf17tLNCayAVNuKH
 Efnr4v3OPrt9bCg1EckuPsXkmo86yfoNhJq0f8FnnBVEg7NQDqI9k29GlrMY8VMp2j7L
 2j+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=XLhAxNJcIjWeBDn3HbRDwrZaFHUSczCjgQ3WRWpao0w=;
 b=btI18qp/0sKFf8mM2aOkfDH+7lGMbr5OtiWkoX7aGhtx1r8pIet8RBtcwsHz/OKy3R
 kYrXCtx+16fAIIoaG1o3BmldFRtyPx3Y+Nvg2dDi/K2pSP0MaRCeGS18s6BIXT5gFOMZ
 b8/JYXUuaK1KH980T3aMKK+ci1cNU44pgQIFYBjXzriGD5bzitIVIj7G/P8WHAXLr2Vg
 zW0blNSQlcsB3+ZsXLPHzbTEq1jm7ECrp5oiIuLAWNkHyH4Po2u3iqtUkEomOqEliHpE
 7BF5fS+bRP2XpFpjSlX97LO/GX6Q4MDuJpu1pTbFKXqPEjwpvP9TP6l2+r1Qhrq/hQW1
 Dx3g==
X-Gm-Message-State: APjAAAW+9HiAO+yS5aqI7OuQtPk/oUB+FEbz3URqEFKEtddVzUM5qZQd
 lDXk3JM1bTO4WjtGMZ/4Yyxx6y9ZvTA=
X-Google-Smtp-Source: APXvYqzPdPjzh6nz84iK36JRmph7MjsQXJaRbEUuI68HYDUO1o3i8JcTHXgWw9cmV84mgvKf4nJMbg==
X-Received: by 2002:a1c:ca14:: with SMTP id a20mr10403760wmg.71.1561816507805; 
 Sat, 29 Jun 2019 06:55:07 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.07
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:07 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:54:58 +0300
Message-Id: <20190629135501.12347-4-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 3/6] Use vfs functions to
 allocate/free the resources used for a socket (Part II)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r, Mihai Pogonaru <pogonarumihai@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>

VGhpcyBwYXJ0IGNoYW5nZXMgTFdJUCBzbyB0aGF0IGl0IHVzZXMgdmZzIGZ1bmN0aW9ucyB0byBh
bGxvY2F0ZSB0aGUKZGVudHJ5IGFuZCB2bm9kZSB1c2VkIGZvciBzb2NrZXRzLgoKU2lnbmVkLW9m
Zi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgotLS0KIHNvY2tl
dHMuYyB8IDExOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDU1IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NvY2tldHMuYyBiL3NvY2tldHMuYwppbmRleCAzMDQw
MDk5Li4xYTNkZGZkIDEwMDY0NAotLS0gYS9zb2NrZXRzLmMKKysrIGIvc29ja2V0cy5jCkBAIC0z
NSw2ICszNSw3IEBACiAKIC8qIG5ldHdvcmsgc3R1YiBjYWxscyAqLwogI2luY2x1ZGUgPHN5cy90
aW1lLmg+CisjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL2Zp
bGUuaD4KICNpbmNsdWRlIDx2ZnNjb3JlL2ZzLmg+CiAjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5o
PgpAQCAtNDksMTMgKzUwLDM4IEBACiAjZGVmaW5lIFNPQ0tfTkVUX1NFVF9FUlJOTyhlcnJjb2Rl
KSBcCiAJKGVycm5vID0gLShlcnJjb2RlKSkKIAorc3RhdGljIGludCBzb2NrX25ldF9jbG9zZShz
dHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCisJCQlzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2Zp
bGUpOworc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCisJ
CQlzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpOworc3RhdGljIGludCBzb2Nr
X25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKKwkJCXN0cnVjdCB2ZnNjb3JlX2ZpbGUg
KnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKKwkJCXN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxhZyBf
X3VudXNlZCk7CisKKyNkZWZpbmUgc29ja19uZXRfaW5hY3RpdmUgICgodm5vcF9pbmFjdGl2ZV90
KSB2ZnNjb3JlX3ZvcF9udWxsb3ApCisKK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMgc29ja19uZXRfdm5v
cHMgPSB7CisJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAorCS52b3Bfd3JpdGUgPSBzb2Nr
X25ldF93cml0ZSwKKwkudm9wX3JlYWQgID0gc29ja19uZXRfcmVhZCwKKwkudm9wX2luYWN0aXZl
ID0gc29ja19uZXRfaW5hY3RpdmUKK307CisKKyNkZWZpbmUgc29ja19uZXRfdmdldCAgKCh2ZnNv
cF92Z2V0X3QpIHZmc2NvcmVfdm9wX251bGxvcCkKKworc3RhdGljIHN0cnVjdCB2ZnNvcHMgc29j
a19uZXRfdmZzb3BzID0geworCS52ZnNfdmdldCA9IHNvY2tfbmV0X3ZnZXQsCisJLnZmc192bm9w
cyA9ICZzb2NrX25ldF92bm9wcworfTsKKworCitzdGF0aWMgdWludDY0X3Qgc19pbm9kZSA9IDA7
CiAvKgogICogQm9ndXMgbW91bnQgcG9pbnQgdXNlZCBieSBhbGwgc29ja2V0cwotICoKLSAqIFdl
IG5lZWQgdGhpcyBiZWNhdXNlIHdoZW4gZGVsZXRpbmcgYSB2bm9kZQotICogdmZzIGNhbGxzIHZm
c191bmJ1c3kgb24gaXRzIG1vdW50IHBvaW50CiAgKi8KLXN0YXRpYyBzdHJ1Y3QgbW91bnQgc19t
b3VudDsKK3N0YXRpYyBzdHJ1Y3QgbW91bnQgc19tb3VudCA9IHsKKwkubV9vcCA9ICZzb2NrX25l
dF92ZnNvcHMKK307CiAKIHN0cnVjdCBzb2NrX25ldF9maWxlIHsKIAlzdHJ1Y3QgdmZzY29yZV9m
aWxlICp2ZnNjb3JlX2ZpbGU7CkBAIC04NSw3ICsxMTEsNyBAQCBFWElUOgogCXJldHVybiBmaWxl
OwogfQogCi1zdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQg
c29ja19mZCkKK3N0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhpbnQgc29ja19mZCkKIHsKIAlpbnQg
cmV0ID0gMDsKIAlpbnQgdmZzX2ZkOwpAQCAtMTE4LDE5ICsxNDQsMzAgQEAgc3RhdGljIGludCBz
b2NrX2ZkX2FsbG9jKHN0cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNvY2tfZmQpCiAJCQkJKCJGYWls
ZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7CiAJCWdv
dG8gRVJSX01BTExPQ19WRlNfRklMRTsKIAl9Ci0Jc19kZW50cnkgPSB1a19jYWxsb2ModWtfYWxs
b2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkpOwotCWlmICghc19kZW50cnkp
IHsKKworCXJldCA9IHZmc2NvcmVfdmdldCgmc19tb3VudCwgc19pbm9kZSsrLCAmc192bm9kZSk7
CisJVUtfQVNTRVJUKHJldCA9PSAwKTsgLyogd2Ugc2hvdWxkIG5vdCBmaW5kIGl0IGluIGNhY2hl
ICovCisKKwlpZiAoIXNfdm5vZGUpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJTFdJUF9ERUJVR0Yo
U09DS0VUU19ERUJVRywKLQkJCSAgICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZGVudHJ5
OiBPdXQgb2YgbWVtb3J5XG4iKSk7Ci0JCWdvdG8gRVJSX01BTExPQ19ERU5UUlk7CisJCQkgICAg
KCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZub2RlOiBPdXQgb2YgbWVtb3J5XG4iKSk7CisJ
CWdvdG8gRVJSX0FMTE9DX1ZOT0RFOwogCX0KLQlzX3Zub2RlID0gdWtfY2FsbG9jKHVrX2FsbG9j
X2dldF9kZWZhdWx0KCksIDEsIHNpemVvZigqc192bm9kZSkpOwotCWlmICghc192bm9kZSkgewor
CisJdWtfbXV0ZXhfdW5sb2NrKCZzX3Zub2RlLT52X2xvY2spOworCisJLyoKKwkgKiBpdCBkb2Vz
bid0IG1hdHRlciB0aGF0IGFsbCB0aGUgZGVudHJpZXMgaGF2ZSB0aGUKKwkgKiBzYW1lIHBhdGgg
c2luY2Ugd2UgbmV2ZXIgbG9va3VwIGZvciB0aGVtCisJICovCisJc19kZW50cnkgPSBkZW50cnlf
YWxsb2MoTlVMTCwgc192bm9kZSwgIi8iKTsKKworCWlmICghc19kZW50cnkpIHsKIAkJcmV0ID0g
LUVOT01FTTsKIAkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKLQkJCSAgICAoIkZhaWxlZCB0
byBhbGxvY2F0ZSBzb2NrZXQgdm5vZGU6IE91dCBvZiBtZW1vcnlcbiIpKTsKLQkJZ290byBFUlJf
TUFMTE9DX1ZOT0RFOworCQkJICAgICgiRmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tldCBkZW50cnk6
IE91dCBvZiBtZW1vcnlcbiIpKTsKKwkJZ290byBFUlJfQUxMT0NfREVOVFJZOwogCX0KIAogCS8q
IFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBmaWxsIG91dCBuZWNlc3NhcnkgZmllbGRzICovCkBA
IC0xNDEsMzEgKzE3OCw4IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMg
KnZfb3AsIGludCBzb2NrX2ZkKQogCXZmc19maWxlLT5mX2RlbnRyeSA9IHNfZGVudHJ5OwogCXZm
c19maWxlLT5mX3Zmc19mbGFncyA9IFVLX1ZGU0NPUkVfTk9QT1M7CiAKLQlzX2RlbnRyeS0+ZF9y
ZWZjbnQgPSAxOwotCXNfZGVudHJ5LT5kX3Zub2RlID0gc192bm9kZTsKLQotCS8qCi0JICogUHJv
dmlkZSBib2d1cyBidXQgdmFsaWQgYWRkcmVzc2VzIHRvIGFsbG93Ci0JICogdmZzIHRvIHJlbW92
ZSBub2RlcyBmcm9tIGxpc3RzCi0JICovCi0Jc19kZW50cnktPmRfbGluay5wcHJldiA9ICZzX2Rl
bnRyeS0+ZF9saW5rLm5leHQ7Ci0Jc19kZW50cnktPmRfbmFtZXNfbGluay5uZXh0ID0gJnNfZGVu
dHJ5LT5kX25hbWVzX2xpbms7Ci0Jc19kZW50cnktPmRfbmFtZXNfbGluay5wcmV2ID0gJnNfZGVu
dHJ5LT5kX25hbWVzX2xpbms7Ci0KLQlzX3Zub2RlLT52X29wID0gdl9vcDsKLQl1a19tdXRleF9p
bml0KCZzX3Zub2RlLT52X2xvY2spOwotCXNfdm5vZGUtPnZfcmVmY250ID0gMTsKIAlzX3Zub2Rl
LT52X2RhdGEgPSBmaWxlOwogCXNfdm5vZGUtPnZfdHlwZSA9IFZTT0NLOwotCXNfdm5vZGUtPnZf
bW91bnQgPSAmc19tb3VudDsKLQlzX21vdW50Lm1fY291bnQrKzsKLQotCS8qCi0JICogUHJvdmlk
ZSBib2d1cyBidXQgdmFsaWQgYWRkcmVzc2VzIHRvIGFsbG93Ci0JICogdmZzIHRvIHJlbW92ZSBu
b2RlcyBmcm9tIGxpc3RzCi0JICovCi0Jc192bm9kZS0+dl9saW5rLm5leHQgPSAmc192bm9kZS0+
dl9saW5rOwotCXNfdm5vZGUtPnZfbGluay5wcmV2ID0gJnNfdm5vZGUtPnZfbGluazsKIAogCWZp
bGUtPnZmc2NvcmVfZmlsZSA9IHZmc19maWxlOwogCWZpbGUtPnNvY2tfZmQgPSBzb2NrX2ZkOwpA
QCAtMTgxLDE0ICsxOTUsMTcgQEAgc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2bm9w
cyAqdl9vcCwgaW50IHNvY2tfZmQpCiAJCWdvdG8gRVJSX1ZGU19JTlNUQUxMOwogCX0KIAorCS8q
IE9ubHkgdGhlIGRlbnRyeSBzaG91bGQgaG9sZCBhIHJlZmVyZW5jZTsgcmVsZWFzZSBvdXJzICov
CisJdnJlbGUoc192bm9kZSk7CisKIAkvKiBSZXR1cm4gZmlsZSBkZXNjcmlwdG9yIG9mIG91ciBz
b2NrZXQgKi8KIAlyZXR1cm4gdmZzX2ZkOwogCiBFUlJfVkZTX0lOU1RBTEw6Ci0JdWtfZnJlZSh1
a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX3Zub2RlKTsKLUVSUl9NQUxMT0NfVk5PREU6Ci0JdWtf
ZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX2RlbnRyeSk7Ci1FUlJfTUFMTE9DX0RFTlRS
WToKKwlkcmVsZShzX2RlbnRyeSk7CitFUlJfQUxMT0NfREVOVFJZOgorCXZyZWxlKHNfdm5vZGUp
OworRVJSX0FMTE9DX1ZOT0RFOgogCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgdmZz
X2ZpbGUpOwogRVJSX01BTExPQ19WRlNfRklMRToKIAl1a19mcmVlKHVrX2FsbG9jX2dldF9kZWZh
dWx0KCksIGZpbGUpOwpAQCAtMjAwLDcgKzIxNyw3IEBAIEVSUl9FWElUOgogfQogCiBzdGF0aWMg
aW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKLQkJCSAgc3RydWN0IHZm
c2NvcmVfZmlsZSAqdmZzY29yZV9maWxlKQorCQkJc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29y
ZV9maWxlKQogewogCWludCByZXQ7CiAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxM
OwpAQCAtMjI3LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgc29ja19uZXRfY2xvc2Uoc3RydWN0IHZu
b2RlICpzX3Zub2RlLAogfQogCiBzdGF0aWMgaW50IHNvY2tfbmV0X3dyaXRlKHN0cnVjdCB2bm9k
ZSAqc192bm9kZSwKLQkJCSAgICAgIHN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxhZyBfX3VudXNl
ZCkKKwkJCXN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxhZyBfX3VudXNlZCkKIHsKIAlpbnQgcmV0
ID0gMDsKIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CkBAIC0yNDcsOCArMjY0
LDggQEAgc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCiB9
CiAKIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCi0JCQkg
ICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKLQkJCSAgICAg
c3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQorCQkJc3RydWN0IHZmc2NvcmVf
ZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAorCQkJc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9m
bGFnIF9fdW51c2VkKQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCBzb2NrX25ldF9maWxlICpm
aWxlID0gTlVMTDsKQEAgLTI2NywxNSArMjg0LDYgQEAgc3RhdGljIGludCBzb2NrX25ldF9yZWFk
KHN0cnVjdCB2bm9kZSAqc192bm9kZSwKIAlyZXR1cm4gMDsKIH0KIAotI2RlZmluZSBzb2NrX25l
dF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpIHZmc2NvcmVfdm9wX251bGxvcCkKLQotc3Rh
dGljIHN0cnVjdCB2bm9wcyBzb2NrX25ldF9mb3BzID0gewotCS52b3BfY2xvc2UgPSBzb2NrX25l
dF9jbG9zZSwKLQkudm9wX3dyaXRlID0gc29ja19uZXRfd3JpdGUsCi0JLnZvcF9yZWFkICA9IHNv
Y2tfbmV0X3JlYWQsCi0JLnZvcF9pbmFjdGl2ZSA9IHNvY2tfbmV0X2luYWN0aXZlCi19OwotCiBp
bnQgc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpCiB7CiAJaW50IHJl
dCA9IDA7CkBAIC0yOTIsNyArMzAwLDcgQEAgaW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlw
ZSwgaW50IHByb3RvY29sKQogCX0KIAogCS8qIEFsbG9jYXRlIHRoZSBmaWxlIGRlc2NyaXB0b3Ig
Ki8KLQl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKCZzb2NrX25ldF9mb3BzLCBzb2NrX2ZkKTsKKwl2
ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKHNvY2tfZmQpOwogCWlmICh2ZnNfZmQgPCAwKSB7CiAJCUxX
SVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCiAJCQkgICAgKCJmYWlsZWQgdG8gYWxsb2NhdGUgZGVz
Y3JpcHRvciAlZFxuIiwKQEAgLTMzOSw3ICszNDcsNyBAQCBpbnQgYWNjZXB0KGludCBzLCBzdHJ1
Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbikKIAl9CiAKIAkvKiBBbGxvY2F0
ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgYWNjZXB0ZWQgY29ubmVjdGlvbiAqLwotCXZm
c19mZCA9IHNvY2tfZmRfYWxsb2MoJnNvY2tfbmV0X2ZvcHMsIHNvY2tfZmQpOworCXZmc19mZCA9
IHNvY2tfZmRfYWxsb2Moc29ja19mZCk7CiAJaWYgKHZmc19mZCA8IDApIHsKIAkJTFdJUF9ERUJV
R0YoU09DS0VUU19ERUJVRywKIAkJCSAgICAoImZhaWxlZCB0byBhbGxvY2F0ZSBkZXNjcmlwdG9y
IGZvciBhY2NlcHRlZCBjb25uZWN0aW9uXG4iKSk7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55: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 1hhDov-00078J-1W; Sat, 29 Jun 2019 13:55:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDot-000776-JV
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:11 +0000
X-Inumbo-ID: 8211e4b1-9a75-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8211e4b1-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:10 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id p13so9051825wru.10
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55: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=wr54FN8+IpUN9iXfC8jHLE7EowAsVP0DnMEhI/vnet8=;
 b=dmkVov4QRyEL1T2KyrWURRgBJseSzdpMuJMzPchasBki7rMZHLTV0h138k8dq5whW4
 CG/IDAVImkw22cVmyOxasDa7FYWoAb0RkGMsZsupdpSBJndCGnvOgd01lz/b1hEE1UeG
 5YP2FpbrLlHz3+2VCcr0a351pvuhV0fmVVBmNzzlj6fVzsHWm86BXPEpkzfyDk7Jeav3
 vHupzlzGb5aWtQtxRftxXh43HjfqFwrr8+WON9PcuoCymDkxD/U+9IQKdJhVMeHfN6nn
 zePs5scT04lEN1ja7vFwW15VjjqufBB7/87UCZ/P/ZNy9BBTF0AVe7ZjMmVCmO9YjNU7
 IWsA==
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=wr54FN8+IpUN9iXfC8jHLE7EowAsVP0DnMEhI/vnet8=;
 b=E1ZOtNRlaDdXcap6UkrvLj7zWHYlw4G7sWxTA6qX9j4WeayuuMCOU/EVx8crsLgxmE
 o8J6EyuzfOA9lvyBVAsqV8MqtMrtiITpySZJ5LiaJeD4geagMwAozYkCcU1AJnIH3kLO
 dq4AZoNOXId2y2gWDBnFzNLshTbQdaA1NRQw97j3R1BaWiORKH58g+hddWA/BmG6+g+d
 IZHGHicXGa2Vhum6T8CJP3XRAE1hzUrv+mZoJ5KlmUCpsY3u0zv5DN2s69oCVYpv5fUl
 xDYW0D29Zlt8/c3Rb58677BdGB1RLDqKBM5Kj2A6n20moBlmyog4PtQTo7AcwGP8hY7n
 v17w==
X-Gm-Message-State: APjAAAVooFZqfkbRkxxhtPKIIpMPT6rwrMkLDQYNDNsQT/xxyigJdlLz
 nUUIxXvyQxEsGh+T0m/dgDlzrMM5uNU=
X-Google-Smtp-Source: APXvYqw9DypCTyKsn5cOMQ3hrG1+6EWyK32PpAPQugyIKySIpIUbwsT9Mztlz+ye0CSmcNmoZf1Jdw==
X-Received: by 2002:adf:f88e:: with SMTP id u14mr1720626wrp.167.1561816508957; 
 Sat, 29 Jun 2019 06:55:08 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.07
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:08 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:54:59 +0300
Message-Id: <20190629135501.12347-5-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 4/6] sockets.c: Change error
 handling to match vfs expectations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r, Mihai Pogonaru <pogonarumihai@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>

dmZzIGV4cGVjdHMgZmlsZSBzeXN0ZW0gZnVuY3Rpb25zICh2bm9wcykgdG8gcmV0dXJuIDAgb24g
c3VjY2VzcwooYW5kIHVwZGF0ZSB0aGUgdWlvIHN0cnVjdHVyZSkgb3IgYSBwb3NpdGl2ZSBlcnJv
ciBudW1iZXIKaW4gY2FzZSBvZiBhbiBlcnJvci4KClNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29u
YXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KLS0tCiBzb2NrZXRzLmMgfCAyMyArKysrKysr
KysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCmluZGV4IDFhM2Rk
ZmQuLjM4NjM5ZjggMTAwNjQ0Ci0tLSBhL3NvY2tldHMuYworKysgYi9zb2NrZXRzLmMKQEAgLTIz
Nyw5ICsyMzcsMTggQEAgc3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCiAJLyoKIAkgKiBGcmVlIHNvY2tldCBmaWxlCiAJICogVGhlIHJlc3Qgb2YgdGhlIHJl
c291cmNlcyB3aWxsIGJlIGZyZWVkIGJ5IHZmcworCSAqCisJICogVE9ETzogdmZzIGlnbm9yZXMg
Y2xvc2UgZXJyb3JzIHJpZ2h0IG5vdywgc28gZnJlZSBvdXIgZmlsZQogCSAqLwogCXVrX2ZyZWUo
dWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZSk7CiAKKwkvKgorCSAqIGx3aXAgc2V0cyBlcnJu
byBhbmQgcmV0dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yLCBidXQKKwkgKiB2ZnMgZXhwZWN0cyB1
cyB0byByZXR1cm4gYSBwb3NpdGl2ZSBlcnJubworCSAqLworCWlmIChyZXQgPCAwKQorCQlyZXR1
cm4gZXJybm87CisKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yNTUsOSArMjY0LDEyIEBAIHN0YXRp
YyBpbnQgc29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2RlLAogCQkJCSAgICBmaWxl
LT52ZnNjb3JlX2ZpbGUtPmZkLAogCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7CiAJcmV0ID0gbHdp
cF93cml0ZXYoZmlsZS0+c29ja19mZCwgYnVmLT51aW9faW92LCBidWYtPnVpb19pb3ZjbnQpOwot
CS8qIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yICovCisJ
LyoKKwkgKiBsd2lwIHNldHMgZXJybm8gYW5kIHJldHVybnMgLTEgaW4gY2FzZSBvZiBlcnJvciwg
YnV0CisJICogdmZzIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9zaXRpdmUgZXJybm8KKwkgKi8K
IAlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKKwkJcmV0dXJuIGVycm5vOwogCiAJYnVmLT51
aW9fcmVzaWQgLT0gcmV0OwogCXJldHVybiAwOwpAQCAtMjc2LDkgKzI4OCwxMiBAQCBzdGF0aWMg
aW50IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2RlLAogCQkJCSAgICBmaWxlLT52
ZnNjb3JlX2ZpbGUtPmZkLAogCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7CiAJcmV0ID0gbHdpcF9y
ZWFkdihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Ci0JLyog
bHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ugb2YgZXJyb3IgKi8KKwkvKgor
CSAqIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yLCBidXQK
KwkgKiB2ZnMgZXhwZWN0cyB1cyB0byByZXR1cm4gYSBwb3NpdGl2ZSBlcnJubworCSAqLwogCWlm
IChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OworCQlyZXR1cm4gZXJybm87CiAKIAlidWYtPnVpb19y
ZXNpZCAtPSByZXQ7CiAJcmV0dXJuIDA7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55: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 1hhDov-00078O-4I; Sat, 29 Jun 2019 13:55:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDot-00077G-S9
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:11 +0000
X-Inumbo-ID: 82a215c4-9a75-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 82a215c4-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:11 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id u8so11537812wmm.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55:11 -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=TTWsRnjRoHy5rLJpT0uupHQBa+kDJmgKXtqTlaHVzd8=;
 b=hTe+1XfktCnFzDJoCwuj7keOW3PWnv7Uxu+gXKJ6pR+Zew6TzDtEqRZ1m23w1MGpMm
 nr0NS8tCNwuyeJwMU0FkOhC0sI0wjo7YYFASmVH6JHn0a3io++m02pX/KvoEbZrKiVrk
 qmWR6dDWLdx/bGC+1D1KyxGGXr0DoPPhUIIWDkiNw43YodyyukjeMqCyIApeH7TiVRK2
 5xdm2i3U9NecDtQQbcUanP2hWNu0MF4UG2F/suF/LXASAoLXKigB6mi7iFdEwCIkfNbo
 r/x/w9D+gm0eJCC003ksfn79MRXAETFaDK6CD4ka+iFXke0YsMCrA+3xKP+l0FsDmiTp
 uz1g==
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=TTWsRnjRoHy5rLJpT0uupHQBa+kDJmgKXtqTlaHVzd8=;
 b=qFsLsb64wQb3jf3momF6q6qkSPrm1NUfT3gPVq+/4+EPgYFqTKa0GMKhOYnQgxF8Hp
 qsWjdgVYiDAvRQ3RKSyBMUG2lJnHv6Ml5WoxRz4UjDzrrdBS6Tk1t+d8ovXK+i73CgCd
 AxzLDIIgUyfdAfXH89XBWNzUmmxOoIipLI+MvfgWQBrJKURFAOlpAO0nrH4mKBl/JiTw
 0gIW0dTOpdFsUu1AZCIqWM4S+mXoyeYCFy70LcQJs12byNToFs3wGBxqWFSzYI2HCM/P
 Vosr9lyQa8naKW+NwD1IE6vdFcpSonSDBLgQCnBq23cqRHlBiy9cKEZnQf5vvN02nYFK
 fISA==
X-Gm-Message-State: APjAAAV1fuZwRs13Z0fUuJx/FADvl8iPhOXUM5LVBK+8O8gdsj4uNLNR
 c9P5mEQb8p1V3i0CAijvZVuMY5uXEVQ=
X-Google-Smtp-Source: APXvYqxO5g/yimzoTQMXFjB2azUVsASKgoQ9R4jhFg6Rtsf6MEe8tnIGk85NUzSoJmldQwVaufnlnw==
X-Received: by 2002:a7b:c3d5:: with SMTP id t21mr9799512wmj.87.1561816509883; 
 Sat, 29 Jun 2019 06:55:09 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.09
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:09 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:55:00 +0300
Message-Id: <20190629135501.12347-6-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 5/6] Provide ioctl for 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: costin.lupu@cs.pub.r, Mihai Pogonaru <pogonarumihai@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>

U2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgpS
ZXZpZXdlZC1ieTogQ29zdGluIEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KLS0tCiBleHBv
cnRzeW1zLnVrICAgICAgICB8ICAxIC0KIGluY2x1ZGUvc3lzL3NvY2tldC5oIHwgIDIgLS0KIHNv
Y2tldHMuYyAgICAgICAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hh
bmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9leHBv
cnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51awppbmRleCAzNzVhNzg5Li4xMGMxYWI4IDEwMDY0NAot
LS0gYS9leHBvcnRzeW1zLnVrCisrKyBiL2V4cG9ydHN5bXMudWsKQEAgLTYsNyArNiw2IEBAIGdl
dHNvY2tuYW1lCiBnZXRzb2Nrb3B0CiBsaWJsd2lwX2luaXQKIGxpc3RlbgotbHdpcF9pb2N0bAog
bHdpcF9odG9ubAogbHdpcF9odG9ucwogbHdpcF9nZXRob3N0YnluYW1lCmRpZmYgLS1naXQgYS9p
bmNsdWRlL3N5cy9zb2NrZXQuaCBiL2luY2x1ZGUvc3lzL3NvY2tldC5oCmluZGV4IDQyYmFkNmMu
LjdhOGFjYTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3lzL3NvY2tldC5oCisrKyBiL2luY2x1ZGUv
c3lzL3NvY2tldC5oCkBAIC01Miw4ICs1Miw2IEBACiAjZGVmaW5lIFNPQ0tfU0VRUEFDS0VUIDUK
ICNlbmRpZgogCi0jZGVmaW5lIGlvY3RsKHMsIGNtZCwgYXJncCkgbHdpcF9pb2N0bChzLCBjbWQs
IGFyZ3ApCi0KIGludCBzb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCk7
CiBpbnQgYWNjZXB0KGludCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRk
cmxlbik7CiBpbnQgYmluZChpbnQgcywgY29uc3Qgc3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2Nr
bGVuX3QgbmFtZWxlbik7CmRpZmYgLS1naXQgYS9zb2NrZXRzLmMgYi9zb2NrZXRzLmMKaW5kZXgg
Mzg2MzlmOC4uYWE3NzJkYSAxMDA2NDQKLS0tIGEvc29ja2V0cy5jCisrKyBiL3NvY2tldHMuYwpA
QCAtNTcsNiArNTcsMTAgQEAgc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUg
KnNfdm5vZGUsCiBzdGF0aWMgaW50IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2Rl
LAogCQkJc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51c2VkLAogCQkJc3Ry
dWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKTsKK3N0YXRpYyBpbnQgc29ja19uZXRf
aW9jdGwoc3RydWN0IHZub2RlICpzX3Zub2RlLAorCQkJc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZz
Y29yZV9maWxlIF9fdW51c2VkLAorCQkJdW5zaWduZWQgbG9uZyByZXF1ZXN0LAorCQkJdm9pZCAq
YnVmKTsKIAogI2RlZmluZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpIHZm
c2NvcmVfdm9wX251bGxvcCkKIApAQCAtNjQsNiArNjgsNyBAQCBzdGF0aWMgc3RydWN0IHZub3Bz
IHNvY2tfbmV0X3Zub3BzID0gewogCS52b3BfY2xvc2UgPSBzb2NrX25ldF9jbG9zZSwKIAkudm9w
X3dyaXRlID0gc29ja19uZXRfd3JpdGUsCiAJLnZvcF9yZWFkICA9IHNvY2tfbmV0X3JlYWQsCisJ
LnZvcF9pb2N0bCA9IHNvY2tfbmV0X2lvY3RsLAogCS52b3BfaW5hY3RpdmUgPSBzb2NrX25ldF9p
bmFjdGl2ZQogfTsKIApAQCAtMjk5LDYgKzMwNCwyMSBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X3Jl
YWQoc3RydWN0IHZub2RlICpzX3Zub2RlLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHNv
Y2tfbmV0X2lvY3RsKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKKwkJCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKKwkJCXVuc2lnbmVkIGxvbmcgcmVxdWVzdCwKKwkJ
CXZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7CisKKwlm
aWxlID0gc192bm9kZS0+dl9kYXRhOworCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMg
ZmQ6JWQgbHdpcF9mZDolZFxuIiwKKwkJCQkgICAgX19mdW5jX18sCisJCQkJICAgIGZpbGUtPnZm
c2NvcmVfZmlsZS0+ZmQsCisJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKKwlyZXR1cm4gbHdpcF9p
b2N0bChmaWxlLT5zb2NrX2ZkLCByZXF1ZXN0LCBidWYpOworfQorCiBpbnQgc29ja2V0KGludCBk
b21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpCiB7CiAJaW50IHJldCA9IDA7Ci0tIAoyLjEx
LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:55:14 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:55: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 1hhDow-00079B-5h; Sat, 29 Jun 2019 13:55:14 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cR8i=U4=gmail.com=pogonarumihai@srs-us1.protection.inumbo.net>)
 id 1hhDov-00078I-4a
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:55:13 +0000
X-Inumbo-ID: 831dcdb1-9a75-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 831dcdb1-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:55:12 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id u18so916760wru.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:55:11 -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=avdQVkfhj7K1ub+7DeCqkrl+5dwfyn1GqfZgHUhF5qA=;
 b=qrMhWiicxHlIoFBDN3GYd+6VfmkoCuf7sy3/EQ9xnaIWrIBO1+dqdWNggcTkK7Z2nE
 EO+4brrCiQ7ylCwsRe+txS3WjLogtjObN47dRngaxY7OUGj2d3H8OH3+G14Qv2e8TWbZ
 9cdb1l9/gzbW07IU+dEpL9WFEDXOCfcqeQoI3qjoG1VSA5wGVbWX5l82QwedL9ALjj9r
 U3eGhjaarfd7QJGYlyI4qe7CSprLESG0ayV4CuhoCGMt5mFPMH2G6dEURCp79pR+iH/V
 gBbkDixaWpIxJg1VAYXn9Zj0EjeC1b+eWkAD75jKOsGun5ABYyWqVQPy1HWCsnBfn5kG
 y03Q==
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=avdQVkfhj7K1ub+7DeCqkrl+5dwfyn1GqfZgHUhF5qA=;
 b=bzndHtzAbT/2timj0hG06BYg98I907G9HF0IeM898pkfSECtBCQoX3KQXnJLQ1Ijv5
 z4k/E+BeTcmZA9VddUfcU3a+q3fteCI6qZvfJ+bEddqm/c8FVAn3Ugz4UiCMxijJxVsF
 MbwGIYBsV9NfM+tUEvTj9AmloYh6iC0r51fohuaL/owbD77MCpUZW9ddBcBcwy6BHzV3
 e014YHYjUYTu1n3EM8mQJj+6vJ8eISrKlguMB9e2xUYfnLbhed8/Qhg0jcPgO1qbstC7
 XFepQPwfCOBVN7dCUJTcj2xYuOoAxxUSPGqk1irqbMwu2Wz1flngVI0TTzmiqsmOeV48
 5X5g==
X-Gm-Message-State: APjAAAWnSMwbm5zXYvsxY3CliHJCdJCFnHPJn6orasNagcasf4GUmXQs
 5nyVKPfO0Tq/SmGrT9WuWQ+0IIl7GUM=
X-Google-Smtp-Source: APXvYqxFdwkK4/tvmkFQy4gP+P3ErLg5l28t7a/Uyw8zhhLXekr6jT+fUOHVFZyrHg+Iks093fAMsw==
X-Received: by 2002:a5d:4e4d:: with SMTP id r13mr12522932wrt.295.1561816510743; 
 Sat, 29 Jun 2019 06:55:10 -0700 (PDT)
Received: from pogo-notebook.precis.pub.ro ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id g8sm9531545wme.20.2019.06.29.06.55.09
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 06:55:10 -0700 (PDT)
From: Mihai Pogonaru <pogonarumihai@gmail.com>
To: minios-devel@lists.xen.org
Date: Sat, 29 Jun 2019 16:55:01 +0300
Message-Id: <20190629135501.12347-7-pogonarumihai@gmail.com>
X-Mailer: git-send-email 2.11.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
Subject: [Minios-devel] [UNIKRAFT LWIP PATCH v2 6/6] Further protect
 gethostbyname* defines
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r, Mihai Pogonaru <pogonarumihai@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>

bHdpcF9nZXRob3N0YnluYW1lIGFuZCBsd2lwX2dldGhvc3RieW5hbWVfciBkZWZpbml0aW9ucyBh
cmUgcHJvdGVjdGVkCmJ5IExXSVBfRE5TICYmIExXSVBfU09DS0VUCgpTaWduZWQtb2ZmLWJ5OiBN
aWhhaSBQb2dvbmFydSA8cG9nb25hcnVtaWhhaUBnbWFpbC5jb20+Ci0tLQogaW5jbHVkZS9uZXRk
Yi5oIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGRiLmggYi9pbmNsdWRlL25ldGRiLmgK
aW5kZXggYmY1ZWRmZi4uZGJlZDBjZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXRkYi5oCisrKyBi
L2luY2x1ZGUvbmV0ZGIuaApAQCAtMSwxMiArMSwxMiBAQAotI2lmICEoTFdJUF9DT01QQVRfU09D
S0VUUykKKyNpbmNsdWRlIDxjb21wYXQvcG9zaXgvbmV0ZGIuaD4KKworI2lmIExXSVBfRE5TICYm
IExXSVBfU09DS0VUICYmICEoTFdJUF9DT01QQVRfU09DS0VUUykKIAogI2RlZmluZSBnZXRob3N0
YnluYW1lKG5hbWUpIGx3aXBfZ2V0aG9zdGJ5bmFtZShuYW1lKQogI2RlZmluZSBnZXRob3N0Ynlu
YW1lX3IobmFtZSwgcmV0LCBidWYsIGJ1ZmxlbiwgcmVzdWx0LCBoX2Vycm5vcCkgXAogICAgICAg
IGx3aXBfZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsIHJldCwgYnVmLCBidWZsZW4sIHJlc3VsdCwgaF9l
cnJub3ApCiAKLSNlbmRpZiAvKiAhKExXSVBfQ09NUEFUX1NPQ0tFVFMpICovCi0KLSNpbmNsdWRl
IDxjb21wYXQvcG9zaXgvbmV0ZGIuaD4KKyNlbmRpZiAvKiBMV0lQX0ROUyAmJiBMV0lQX1NPQ0tF
VCAmJiAhKExXSVBfQ09NUEFUX1NPQ0tFVFMpICovCiAKIHN0cnVjdCBzZXJ2ZW50IHsKIAljaGFy
ICAgICpzX25hbWU7ICAgICAgICAvKiBvZmZpY2lhbCBzZXJ2aWNlIG5hbWUgKi8KLS0gCjIuMTEu
MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 13:56:25 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 13:56: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 1hhDq5-0007CY-Ao; Sat, 29 Jun 2019 13:56:25 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ko5/=U4=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hhDq4-0007CT-9k
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 13:56:24 +0000
X-Inumbo-ID: adc8af62-9a75-11e9-8980-bc764e045a96
Received: from mail-oi1-x241.google.com (unknown [2607:f8b0:4864:20::241])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id adc8af62-9a75-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 13:56:22 +0000 (UTC)
Received: by mail-oi1-x241.google.com with SMTP id g7so6421200oia.8
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 06:56:22 -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=0Dn3Kp+5istEUIuPzd5UXfCgUr5tM3/1Johv9aF3mlg=;
 b=KQo18cG0gTIJVTV23fkLd91+/PQIQroc0GcI6HH8MmWQUj1zPtLXlf2zrpe8xmvpdl
 HELmN5+yR+is3jqSkrqWBa3Rc77aVVet2g+iNNCVr49mVgQ8KPBjn+tVa3Qu1hzir7GM
 PQ6gDJyNIYSqnbZ9fc3OHJS/+v+rhmnV4EBDIAvGCtF6rfvt4Hj9zZNzUZYa1H5Q3RYs
 w0B4NPOJSrg9bjPAN+7+Le/BznfyJjqyMA5TJmhRTWvj8FJhzwRTvQau7lYqBpmLtDHZ
 Rz6dXb9/oK/Jmdx6lu50zUxpKeGOQuyQTAcEQKyQ7zfMcnBY+xd4y3kUOXTtzEF4PCaY
 jlCw==
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=0Dn3Kp+5istEUIuPzd5UXfCgUr5tM3/1Johv9aF3mlg=;
 b=rupXe3/tW4d+JB3acvK9G/wWvH2SR0eo2oztt3oxB1cxUwXo7XTSFk7+huf8ojAT2M
 D90EHXY7FQILyTY2OvhBb6TP8EWD0h1n1alr4wzX+zIMjgz+W241v65u60dWZFwIGWk/
 EHJeU8jkuKJ+ugkASEnFfQzH4rU3UMLVrWpmS2uHud47U8AJNDCIVgDNXn+iWLcHwv+X
 temypp2wOXJM20Tis1+Jy255mJ4jtGyMt5fbllokPupbcAZ61bLK68sIBtpmeTVCLB49
 lF7rHjuGUI6oYOpRs8iLWpdKNB0apx8T8jvNhWWDKzoOKa+TOJwUZRr1bcdychF6ceIC
 sPFw==
X-Gm-Message-State: APjAAAU6uwbA+gGD6XANBOHfBuLmuSiObSbsNEIJyr9LuZzmlJgJ2usl
 HHZ2fvMLOwr/tinz/kJOhB86LwS/kc8x0B5LIXcg3zcZ
X-Google-Smtp-Source: APXvYqzsWHz8+AehEzytjPreP2mrFXV5iAAaFh4MRjE8eOybSPSGAKCDJEjWSirRlVLDubeUoEGxaAStOzTVWcQZZWQ=
X-Received: by 2002:a54:4703:: with SMTP id k3mr1504924oik.143.1561816582584; 
 Sat, 29 Jun 2019 06:56:22 -0700 (PDT)
MIME-Version: 1.0
References: <20190529083358.14602-1-nicolescu.roxana1996@gmail.com>
 <5dbed77a-2ccb-64ec-7fbe-7cb2cd2613f2@neclab.eu>
In-Reply-To: <5dbed77a-2ccb-64ec-7fbe-7cb2cd2613f2@neclab.eu>
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
Date: Sat, 29 Jun 2019 16:56:11 +0300
Message-ID: <CAJ5aZktZawVqKeRcCPd=Gi-w2Vm8ywyrpRWmqgrxBHAMMhzbvA@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 5/6] lib/ukblkdev: Synchronous
 operations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, minios-devel@lists.xen.org, costin.lupu@cs.pub.ro
Content-Type: multipart/mixed; boundary="===============7875696213208216955=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============7875696213208216955==
Content-Type: multipart/alternative; boundary="0000000000009bffc3058c76c236"

--0000000000009bffc3058c76c236
Content-Type: text/plain; charset="UTF-8"

Hi Simon,

Thank you once again. I will post the v2 with the changes.

Roxana

On Fri, Jun 14, 2019 at 3:17 PM Simon Kuenzer <simon.kuenzer@neclab.eu>
wrote:

> On 29.05.19 10:33, Roxana Nicolescu wrote:
> > This patch introduces sync operations.
> > It requires the use of semaphore in the implementation.
> >
> > Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
> > ---
> >   lib/ukblkdev/Config.uk                |  8 +++++
> >   lib/ukblkdev/blkdev.c                 | 64
> +++++++++++++++++++++++++++++++++++
> >   lib/ukblkdev/exportsyms.uk            |  3 ++
> >   lib/ukblkdev/include/uk/blkdev.h      | 47 +++++++++++++++++++++++++
> >   lib/ukblkdev/include/uk/blkdev_core.h |  3 +-
> >   5 files changed, 124 insertions(+), 1 deletion(-)
> >
> > diff --git a/lib/ukblkdev/Config.uk b/lib/ukblkdev/Config.uk
> > index 31b1a1d2..688a44b4 100644
> > --- a/lib/ukblkdev/Config.uk
> > +++ b/lib/ukblkdev/Config.uk
> > @@ -26,4 +26,12 @@ if LIBUKBLKDEV
> >                       allocated for each configured queue.
> >                       libuksched is required for this option.
> >
> > +        config LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITING
> > +                bool "Blocked waiting for sync I/O"
>
> Just name it: "Synchronous I/O API" since it is the only operation mode
> that the API supports for now. If we want to add a busy waiting version
> at some point, we can still rename it later.
>
> > +                default n
> > +                select LIBUKSCHED
> > +                select LIBUKLOCK
> > +             select LIBUKLOCK_SEMAPHORE
> > +                help
> > +                        Use semaphore for waiting after a request I/O
> is done.
> >   endif
> > diff --git a/lib/ukblkdev/blkdev.c b/lib/ukblkdev/blkdev.c
> > index 3c58061b..534a9ae1 100644
> > --- a/lib/ukblkdev/blkdev.c
> > +++ b/lib/ukblkdev/blkdev.c
> > @@ -403,3 +403,67 @@ int uk_blkdev_queue_finish_reqs(struct uk_blkdev
> *dev,
> >
> >       return dev->finish_reqs(dev, queue_id);
> >   }
> > +
> > +#if CONFIG_LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITING
> > +/**
> > + * Used for sending a synchronous request.
> > + */
> > +struct uk_blkdev_sync_io_request {
> > +     struct uk_blkdev_request req;   /* Request structure. */
> > +
> > +     /* Semaphore used for waiting after the response is done. */
> > +     struct uk_semaphore s;
> > +};
> > +
> > +static int __sync_io_callback(struct uk_blkdev_request *req,
> > +             void *cookie_callback)
> > +{
> > +     struct uk_blkdev_sync_io_request *sync_io_req;
> > +
> > +     UK_ASSERT(req);
> > +     UK_ASSERT(cookie_callback);
> > +
> > +     sync_io_req = (struct uk_blkdev_sync_io_request *)cookie_callback;
> > +     uk_semaphore_up(&sync_io_req->s);
> > +
> > +     return 0;
> > +}
> > +
> > +int uk_blkdev_sync_io(struct uk_blkdev *dev,
> > +             uint16_t queue_id,
> > +             size_t sector,
> > +             __sector nb_sectors,
> > +             void *buf,
> > +             enum uk_blkdev_op operation)
> > +{
> > +     struct uk_blkdev_request *req;
> > +     int rc = 0;
> > +     struct uk_blkdev_sync_io_request sync_io_req;
> > +
> > +     UK_ASSERT(dev != NULL);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(dev->submit_one);
> > +     UK_ASSERT(dev->_data->state == UK_BLKDEV_RUNNING);
> > +
> > +     req = &sync_io_req.req;
> > +     req->aio_buf = buf;
> > +     req->nb_sectors = nb_sectors;
> > +     req->start_sector = sector;
> > +     req->operation = operation;
> > +     uk_refcount_init(&req->state, UK_BLKDEV_REQ_UNFINISHED);
> > +     req->cb = __sync_io_callback;
> > +     req->cookie_callback = (void *)&sync_io_req;
> > +     uk_semaphore_init(&sync_io_req.s, 0);
> > +
> > +     rc = uk_blkdev_queue_submit_one(dev, queue_id, req);
> > +     if (!uk_blkdev_status_successful(rc)) {
>
> As an optimization you could add `unlikely()` around the condition? I
> think it is unlikely to fail. By adding this you enable compiler
> optimizations for the likely case if the architecture supports it.
>
> > +             uk_pr_err("blkdev%"PRIu16"-q%"PRIu16": Failed to submit
> I/O req: %d\n",
> > +                             dev->_data->id, queue_id, rc);
> > +             return rc;
> > +     }
> > +
> > +     uk_semaphore_down(&sync_io_req.s);
> > +     return req->result_status;
> > +}
> > +#endif
> > diff --git a/lib/ukblkdev/exportsyms.uk b/lib/ukblkdev/exportsyms.uk
> > index 5888be69..0274dae8 100644
> > --- a/lib/ukblkdev/exportsyms.uk
> > +++ b/lib/ukblkdev/exportsyms.uk
> > @@ -19,3 +19,6 @@ uk_blkdev_sectors
> >   uk_blkdev_align
> >   uk_blkdev_queue_submit_one
> >   uk_blkdev_queue_finish_reqs
> > +uk_blkdev_sync_io
> > +uk_blkdev_read
> > +uk_blkdev_write
> > diff --git a/lib/ukblkdev/include/uk/blkdev.h
> b/lib/ukblkdev/include/uk/blkdev.h
> > index db6d3b80..ba4c2784 100644
> > --- a/lib/ukblkdev/include/uk/blkdev.h
> > +++ b/lib/ukblkdev/include/uk/blkdev.h
> > @@ -421,6 +421,53 @@ int uk_blkdev_queue_submit_one(struct uk_blkdev
> *dev,
> >   int uk_blkdev_queue_finish_reqs(struct uk_blkdev *dev,
> >               uint16_t queue_id);
> >
> > +#if CONFIG_LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITING
> > +/**
> > + * Make a sync io request on a specific queue.
> > + *
>
> You should probably document here that `uk_blkdev_queue_finish_reqs()`
> has to be called while using the function. This can be done via queue
> interrupts/events or by calling `uk_blkdev_queue_finish_reqs()` from a
> different thread context. Otherwise we are blocking the thread forever
> because it got blocked by the semaphore (and never unblocked).
>
> > + * @param dev
> > + *   The Unikraft Block Device
> > + * @param queue_id
> > + *   queue_id
> > + * @param sector
> > + *   Start Sector
> > + * @param nb_sectors
> > + * @param buf
> > + *   Buffer where data is found
> > + * @ param op
> > + *   Type of operation
> > + * @return
> > + *   - 0: Success
> > + *   - (<0): on error returned by driver
> > + */
> > +int uk_blkdev_sync_io(struct uk_blkdev *dev,
> > +             uint16_t queue_id,
> > +             size_t sector,
>
> Please use the __sector datatype for the start address, I would prefer
> also to have something inline with the async API: Call the parameter
> `__sector start_sector` as you have in your request token.
>
> I would also move the operation argument before the buffer.
> This way you group input parameters together. The buffer can be
> (dependent on the operation) an input and output buffer.
>
> > +             __sector nb_sectors,
> > +             void *buf,
> > +             enum uk_blkdev_op op);
> > +
> > +/*
> > + * Wrappers for uk_blkdev_sync_io
> > + */
> > +#define uk_blkdev_write(blkdev,\
> > +             queue_id,       \
> > +             sector,         \
> > +             nb_sectors,     \
> > +             buf)    \
> > +     uk_blkdev_sync_io(blkdev, queue_id, sector, nb_sectors, buf,\
> > +                     UK_BLKDEV_WRITE) \
> > +
> > +#define uk_blkdev_read(blkdev,\
> > +             queue_id,       \
> > +             sector,         \
> > +             nb_sectors,     \
> > +             buf)    \
> > +     uk_blkdev_sync_io(blkdev, queue_id, sector, nb_sectors, buf,\
> > +                     UK_BLKDEV_READ) \
> > +
>
> I would prefer to call these macros:
> uk_blkdev_sync_write() and uk_blkdev_sync_read()
> because they are both based on uk_blkdev_sync_io().
>
> > +#endif
> > +
> >   #ifdef __cplusplus
> >   }
> >   #endif
> > diff --git a/lib/ukblkdev/include/uk/blkdev_core.h
> b/lib/ukblkdev/include/uk/blkdev_core.h
> > index 309b7a7f..66831f90 100644
> > --- a/lib/ukblkdev/include/uk/blkdev_core.h
> > +++ b/lib/ukblkdev/include/uk/blkdev_core.h
> > @@ -39,7 +39,8 @@
> >   #include <uk/list.h>
> >   #include <uk/config.h>
> >   #include <uk/blkreq.h>
> > -#if defined(CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS)
> > +#if defined(CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS) || \
> > +             defined(CONFIG_LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITING)
> >   #include <uk/sched.h>
> >   #include <uk/semaphore.h>
> >   #endif
> >
>

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

<div dir=3D"ltr">Hi Simon,<div><br></div><div>Thank you once again. I will =
post the v2 with the changes.=C2=A0</div><div><br></div><div>Roxana</div></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Fri, Jun 14, 2019 at 3:17 PM Simon Kuenzer &lt;<a href=3D"mailto:simon.kue=
nzer@neclab.eu">simon.kuenzer@neclab.eu</a>&gt; wrote:<br></div><blockquote=
 class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px so=
lid rgb(204,204,204);padding-left:1ex">On 29.05.19 10:33, Roxana Nicolescu =
wrote:<br>
&gt; This patch introduces sync operations.<br>
&gt; It requires the use of semaphore in the implementation.<br>
&gt; <br>
&gt; Signed-off-by: Roxana Nicolescu &lt;<a href=3D"mailto:nicolescu.roxana=
1996@gmail.com" target=3D"_blank">nicolescu.roxana1996@gmail.com</a>&gt;<br=
>
&gt; ---<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/Config.uk=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 |=C2=A0 8 +++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/blkdev.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0| 64 +++++++++++++++++++++++++++++++++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noref=
errer" target=3D"_blank">exportsyms.uk</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 |=C2=A0 3 ++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev.h=C2=A0 =C2=A0 =C2=A0 | 47 =
+++++++++++++++++++++++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev_core.h |=C2=A0 3 +-<br>
&gt;=C2=A0 =C2=A05 files changed, 124 insertions(+), 1 deletion(-)<br>
&gt; <br>
&gt; diff --git a/lib/ukblkdev/Config.uk b/lib/ukblkdev/Config.uk<br>
&gt; index 31b1a1d2..688a44b4 100644<br>
&gt; --- a/lib/ukblkdev/Config.uk<br>
&gt; +++ b/lib/ukblkdev/Config.uk<br>
&gt; @@ -26,4 +26,12 @@ if LIBUKBLKDEV<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0allocated for each configured queue.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0libuksched is required for this option.<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 config LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITIN=
G<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bool &quot;Bl=
ocked waiting for sync I/O&quot;<br>
<br>
Just name it: &quot;Synchronous I/O API&quot; since it is the only operatio=
n mode <br>
that the API supports for now. If we want to add a busy waiting version <br=
>
at some point, we can still rename it later.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default n<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 select LIBUKS=
CHED<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 select LIBUKL=
OCK<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0select LIBUKLOCK_SEMA=
PHORE<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 help<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 Use semaphore for waiting after a request I/O is done.<br>
&gt;=C2=A0 =C2=A0endif<br>
&gt; diff --git a/lib/ukblkdev/blkdev.c b/lib/ukblkdev/blkdev.c<br>
&gt; index 3c58061b..534a9ae1 100644<br>
&gt; --- a/lib/ukblkdev/blkdev.c<br>
&gt; +++ b/lib/ukblkdev/blkdev.c<br>
&gt; @@ -403,3 +403,67 @@ int uk_blkdev_queue_finish_reqs(struct uk_blkdev =
*dev,<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0return dev-&gt;finish_reqs(dev, queue_id);<b=
r>
&gt;=C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +#if CONFIG_LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITING<br>
&gt; +/**<br>
&gt; + * Used for sending a synchronous request.<br>
&gt; + */<br>
&gt; +struct uk_blkdev_sync_io_request {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_blkdev_request req;=C2=A0 =C2=A0/* Requ=
est structure. */<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0/* Semaphore used for waiting after the response =
is done. */<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_semaphore s;<br>
&gt; +};<br>
&gt; +<br>
&gt; +static int __sync_io_callback(struct uk_blkdev_request *req,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *cookie_callback=
)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_blkdev_sync_io_request *sync_io_req;<br=
>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(req);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(cookie_callback);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0sync_io_req =3D (struct uk_blkdev_sync_io_request=
 *)cookie_callback;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_semaphore_up(&amp;sync_io_req-&gt;s);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return 0;<br>
&gt; +}<br>
&gt; +<br>
&gt; +int uk_blkdev_sync_io(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id,<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0size_t sector,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__sector nb_sectors,<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *buf,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum uk_blkdev_op ope=
ration)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_blkdev_request *req;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0int rc =3D 0;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0struct uk_blkdev_sync_io_request sync_io_req;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev !=3D NULL);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;submit_one);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state =3D=3D UK_BLKDE=
V_RUNNING);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req =3D &amp;sync_io_req.req;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req-&gt;aio_buf =3D buf;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req-&gt;nb_sectors =3D nb_sectors;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req-&gt;start_sector =3D sector;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req-&gt;operation =3D operation;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_refcount_init(&amp;req-&gt;state, UK_BLKDEV_RE=
Q_UNFINISHED);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req-&gt;cb =3D __sync_io_callback;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0req-&gt;cookie_callback =3D (void *)&amp;sync_io_=
req;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_semaphore_init(&amp;sync_io_req.s, 0);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0rc =3D uk_blkdev_queue_submit_one(dev, queue_id, =
req);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (!uk_blkdev_status_successful(rc)) {<br>
<br>
As an optimization you could add `unlikely()` around the condition? I <br>
think it is unlikely to fail. By adding this you enable compiler <br>
optimizations for the likely case if the architecture supports it.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uk_pr_err(&quot;blkde=
v%&quot;PRIu16&quot;-q%&quot;PRIu16&quot;: Failed to submit I/O req: %d\n&q=
uot;,<br>
&gt; +=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 =C2=A0dev-&gt;_data-&gt;id, queue_id, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_semaphore_down(&amp;sync_io_req.s);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return req-&gt;result_status;<br>
&gt; +}<br>
&gt; +#endif<br>
&gt; diff --git a/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"nore=
ferrer" target=3D"_blank">exportsyms.uk</a> b/lib/ukblkdev/<a href=3D"http:=
//exportsyms.uk" rel=3D"noreferrer" target=3D"_blank">exportsyms.uk</a><br>
&gt; index 5888be69..0274dae8 100644<br>
&gt; --- a/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noreferrer"=
 target=3D"_blank">exportsyms.uk</a><br>
&gt; +++ b/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noreferrer"=
 target=3D"_blank">exportsyms.uk</a><br>
&gt; @@ -19,3 +19,6 @@ uk_blkdev_sectors<br>
&gt;=C2=A0 =C2=A0uk_blkdev_align<br>
&gt;=C2=A0 =C2=A0uk_blkdev_queue_submit_one<br>
&gt;=C2=A0 =C2=A0uk_blkdev_queue_finish_reqs<br>
&gt; +uk_blkdev_sync_io<br>
&gt; +uk_blkdev_read<br>
&gt; +uk_blkdev_write<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev.h b/lib/ukblkdev/include/u=
k/blkdev.h<br>
&gt; index db6d3b80..ba4c2784 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev.h<br>
&gt; @@ -421,6 +421,53 @@ int uk_blkdev_queue_submit_one(struct uk_blkdev *=
dev,<br>
&gt;=C2=A0 =C2=A0int uk_blkdev_queue_finish_reqs(struct uk_blkdev *dev,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_i=
d);<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +#if CONFIG_LIBUKBLKDEV_SYNC_IO_BLOCKED_WAITING<br>
&gt; +/**<br>
&gt; + * Make a sync io request on a specific queue.<br>
&gt; + *<br>
<br>
You should probably document here that `uk_blkdev_queue_finish_reqs()` <br>
has to be called while using the function. This can be done via queue <br>
interrupts/events or by calling `uk_blkdev_queue_finish_reqs()` from a <br>
different thread context. Otherwise we are blocking the thread forever <br>
because it got blocked by the semaphore (and never unblocked).<br>
<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device<br>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0queue_id<br>
&gt; + * @param sector<br>
&gt; + *=C2=A0 =C2=A0Start Sector<br>
&gt; + * @param nb_sectors<br>
&gt; + * @param buf<br>
&gt; + *=C2=A0 =C2=A0Buffer where data is found<br>
&gt; + * @ param op<br>
&gt; + *=C2=A0 =C2=A0Type of operation<br>
&gt; + * @return<br>
&gt; + *=C2=A0 =C2=A0- 0: Success<br>
&gt; + *=C2=A0 =C2=A0- (&lt;0): on error returned by driver<br>
&gt; + */<br>
&gt; +int uk_blkdev_sync_io(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id,<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0size_t sector,<br>
<br>
Please use the __sector datatype for the start address, I would prefer <br>
also to have something inline with the async API: Call the parameter <br>
`__sector start_sector` as you have in your request token.<br>
<br>
I would also move the operation argument before the buffer.<br>
This way you group input parameters together. The buffer can be <br>
(dependent on the operation) an input and output buffer.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__sector nb_sectors,<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0void *buf,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0enum uk_blkdev_op op)=
;<br>
&gt; +<br>
&gt; +/*<br>
&gt; + * Wrappers for uk_blkdev_sync_io<br>
&gt; + */<br>
&gt; +#define uk_blkdev_write(blkdev,\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_id,=C2=A0 =C2=
=A0 =C2=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sector,=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nb_sectors,=C2=A0 =C2=
=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0buf)=C2=A0 =C2=A0 \<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_sync_io(blkdev, queue_id, sector, nb_se=
ctors, buf,\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0UK_BLKDEV_WRITE) \<br>
&gt; +<br>
&gt; +#define uk_blkdev_read(blkdev,\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_id,=C2=A0 =C2=
=A0 =C2=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sector,=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nb_sectors,=C2=A0 =C2=
=A0 =C2=A0\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0buf)=C2=A0 =C2=A0 \<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_sync_io(blkdev, queue_id, sector, nb_se=
ctors, buf,\<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0UK_BLKDEV_READ) \<br>
&gt; +<br>
<br>
I would prefer to call these macros:<br>
uk_blkdev_sync_write() and uk_blkdev_sync_read()<br>
because they are both based on uk_blkdev_sync_io().<br>
<br>
&gt; +#endif<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0#ifdef __cplusplus<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev_core.h b/lib/ukblkdev/incl=
ude/uk/blkdev_core.h<br>
&gt; index 309b7a7f..66831f90 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev_core.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev_core.h<br>
&gt; @@ -39,7 +39,8 @@<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/list.h&gt;<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/config.h&gt;<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/blkreq.h&gt;<br>
&gt; -#if defined(CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS)<br>
&gt; +#if defined(CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS) || \<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0defined(CONFIG_LIBUKB=
LKDEV_SYNC_IO_BLOCKED_WAITING)<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/sched.h&gt;<br>
&gt;=C2=A0 =C2=A0#include &lt;uk/semaphore.h&gt;<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; <br>
</blockquote></div>

--0000000000009bffc3058c76c236--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============7875696213208216955==--


From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:04:34 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:04: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 1hhDxx-0007z2-1w; Sat, 29 Jun 2019 14:04:33 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ko5/=U4=gmail.com=nicolescu.roxana1996@srs-us1.protection.inumbo.net>)
 id 1hhDxv-0007yx-Jy
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:04:31 +0000
X-Inumbo-ID: cfd54307-9a76-11e9-8980-bc764e045a96
Received: from mail-oi1-x243.google.com (unknown [2607:f8b0:4864:20::243])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id cfd54307-9a76-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:04:29 +0000 (UTC)
Received: by mail-oi1-x243.google.com with SMTP id t76so6450511oih.4
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:04: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=39IqVrjWVtsdP0n9gp6zHR+XJRD7nNo1VFuxXbkWqno=;
 b=P7EgVAco0W9itNu+QXgmWc+s8z0Itk5gEtzbNb8mjVItJKPwdtUc6g2qSxRZy38bPg
 eNj/L3/qoXmBzGv2IEuoAfTuhHXDg7wbiUjYKiaJ/FAhAmeU6BlMGRXeBdHEV4pHspkZ
 9iApxFvGcRjV58Zd6gsWXAsxfiHFWk1MmgzYf+FeLSXxfLYYzL1TebKVxXzeWmSc0Bu6
 najmcKjBqtlcvX7LwAigINeOO/3CoWCQK6ZtyvfgERu9I6eC/KVD9sVx1poSbOep95a7
 YobF1cEGjWGet4Za7Fa42nYvHp9GqtEqy6a9YQCH8oxYpG4rHYu7FyPsuXaq1LmP4E6L
 Sm9Q==
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=39IqVrjWVtsdP0n9gp6zHR+XJRD7nNo1VFuxXbkWqno=;
 b=MAGaUNiZDo4UKi8TFSZ05zuwOJ/YsJOlrpriJMorvVsADgV+nlxTauMp0NPlIXIUBA
 hc28+nazCc7691TccVI2+GQSdrfJWpVAQynMKD1rapnbCWIaK+h7YLVP2AcMneYl9N4J
 silc5OZnJi70XThkFSTyRcSAKkrz3CcJ3NIeVXp0gIzXWArTEYzEqlFLTU5MGiblQrDX
 892udqPCueRM4A3rGfnbt+KxduP9E+6Qy1wwLc/8ITwcVgmS7k06XtQQnDRUqUYFm6Go
 lHjGTCPWKM/Sjhg3mlHohgzw7KruIQx3PCAo7noyKnk44wDQag7+t3bEQafd0okqAvyI
 80BQ==
X-Gm-Message-State: APjAAAWCMtknZBfEP2O7VSAD/cvv09z0UVHw6Nap+DwXcmY1evBgB1BN
 9WHNCEyE1hIyKjOQf8t1Yl/x0svddKdLvg9h8CA=
X-Google-Smtp-Source: APXvYqzILqdt2KMl2h8kzln7HVwOuhwsGUzsIFK+FeNjspWekZjgXrjPVT6IflZIkajWh0tkmBzaTDvlD47ELw2PNs8=
X-Received: by 2002:aca:3007:: with SMTP id w7mr1450782oiw.32.1561817069138;
 Sat, 29 Jun 2019 07:04:29 -0700 (PDT)
MIME-Version: 1.0
References: <20190529083414.14794-1-nicolescu.roxana1996@gmail.com>
 <ec1b891c-c66f-0bfd-4abc-89f2bbb53e4c@neclab.eu>
In-Reply-To: <ec1b891c-c66f-0bfd-4abc-89f2bbb53e4c@neclab.eu>
From: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
Date: Sat, 29 Jun 2019 17:04:18 +0300
Message-ID: <CAJ5aZksJKLVK4oJebM4FcBTFGnJsmZUCqjVFjSV_53SPXfL_og@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 6/6] lib/ukblkdev: Stop and
 release an Unikraft block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, minios-devel@lists.xen.org, costin.lupu@cs.pub.ro
Content-Type: multipart/mixed; boundary="===============1299274138936076839=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============1299274138936076839==
Content-Type: multipart/alternative; boundary="0000000000009c388d058c76dfb7"

--0000000000009c388d058c76dfb7
Content-Type: text/plain; charset="UTF-8"

Hi Simon,

See my comments below.

Roxana

On Fri, Jun 14, 2019 at 3:17 PM Simon Kuenzer <simon.kuenzer@neclab.eu>
wrote:

> On 29.05.19 10:34, Roxana Nicolescu wrote:
> > A device can be stopped, which will not permit further requests.
> > Also, for closing the device, the device must pe stopped,
> > each queue must be release and all the data allocated must be freed.
> >
> > Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>
> > ---
> >   lib/ukblkdev/blkdev.c                   | 85
> +++++++++++++++++++++++++++++++++
> >   lib/ukblkdev/exportsyms.uk              |  4 ++
> >   lib/ukblkdev/include/uk/blkdev.h        | 31 ++++++++++++
> >   lib/ukblkdev/include/uk/blkdev_core.h   | 13 +++++
> >   lib/ukblkdev/include/uk/blkdev_driver.h | 11 +++++
> >   5 files changed, 144 insertions(+)
> >
> > diff --git a/lib/ukblkdev/blkdev.c b/lib/ukblkdev/blkdev.c
> > index 534a9ae1..d06b5250 100644
> > --- a/lib/ukblkdev/blkdev.c
> > +++ b/lib/ukblkdev/blkdev.c
> > @@ -467,3 +467,88 @@ int uk_blkdev_sync_io(struct uk_blkdev *dev,
> >       return req->result_status;
> >   }
> >   #endif
> > +
> > +int uk_blkdev_stop(struct uk_blkdev *dev)
> > +{
> > +     int rc = 0;
> > +
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(dev->dev_ops);
> > +     UK_ASSERT(dev->dev_ops->dev_stop);
> > +     UK_ASSERT(dev->_data->state == UK_BLKDEV_RUNNING);
> > +
> > +     rc = dev->dev_ops->dev_stop(dev);
> > +     if (rc)
> > +             uk_pr_err("Failed to stop blkdev%"PRIu16" device %d\n",
> > +                             dev->_data->id, rc);
> > +     else {
> > +             uk_pr_info("Stopped blkdev%"PRIu16" device\n",
> > +                                             dev->_data->id);
> > +             dev->_data->state = UK_BLKDEV_CONFIGURED;
> > +     }
> > +
> > +     return rc;
> > +}
> > +
> > +void uk_blkdev_queue_release(struct uk_blkdev *dev, uint16_t queue_id)
> > +{
> > +     int rc = 0;
> > +
> > +     UK_ASSERT(dev != NULL);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(dev->dev_ops);
> > +     UK_ASSERT(dev->dev_ops->queue_release);
> > +     UK_ASSERT(queue_id < CONFIG_LIBUKBLKDEV_MAXNBQUEUES);
> > +     UK_ASSERT(dev->_data->state != UK_BLKDEV_RUNNING);
> > +
> > +#if CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS
> > +     if (dev->_data->queue_handler[queue_id].callback)
> > +
>  _destroy_event_handler(&dev->_data->queue_handler[queue_id]);
>
> Hum not sure if there is a condition where this could crash. Maybe you
> should get the queue thread into an defined state and destroy it there.
> I am just thinking what happens when it is getting destroyed while
> executing the registered event callback. Maybe we need a condition
> variable next to the event semaphore which is checked if the thread
> should exit by itself.
> At least we should put a /* TODO */ comment here because we may run into
> problems especially with preemptive scheduling. It is okay to solve this
> problem later.
>
> I will provide a variable to stop the while loop in the dispatcher thread
in v2.

> > +#endif
> > +
> > +     rc = dev->dev_ops->queue_release(dev, queue_id);
>
> Use `struct uk_blkdev_queue *` also here as commented in patch 4/6.
>
> > +     if (rc)
> > +             uk_pr_err("Failed to release blkdev%"PRIu16"-q%"PRIu16":
> %d\n",
> > +                             dev->_data->id, queue_id, rc);
> > +     else {
> > +             uk_pr_info("Released blkdev%"PRIu16"-q%"PRIu16"\n",
> > +                             dev->_data->id, queue_id);
> > +
> > +             dev->_queue[queue_id] = NULL;
> > +     }
> > +}
> > +
> > +void uk_blkdev_drv_unregister(struct uk_blkdev *dev, struct uk_alloc *a)
> > +{
> > +     uint16_t id;
> > +
> > +     UK_ASSERT(dev != NULL);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(dev->_data->state != UK_BLKDEV_RUNNING);
> > +
> > +     id = dev->_data->id;
> > +
> > +     uk_free(a, dev->_data);
>
> Maybe it is better to store `uk_alloc *a` on `_data` while allocating.
> Then we would not need the allocator function argument anymore.
>
> For me, it is the same thing. But I will change it in v2.

> > +     UK_TAILQ_REMOVE(&uk_blkdev_list, dev, _list);
> > +     blkdev_count--;
> > +
> > +     uk_pr_info("Unregistered blkdev%"PRIu16": %p\n",
> > +                                id, dev);
> > +}
> > +
> > +void uk_blkdev_close(struct uk_blkdev *dev)
> > +{
> > +     uint16_t id;
> > +
> > +     UK_ASSERT(dev);
> > +     UK_ASSERT(dev->_data);
> > +     UK_ASSERT(dev->dev_ops);
> > +     UK_ASSERT(dev->dev_ops->dev_close);
> > +     UK_ASSERT(dev->_data->state != UK_BLKDEV_RUNNING);
> > +
> > +     id = dev->_data->id;
> > +     dev->dev_ops->dev_close(dev);
> > +
> > +     uk_pr_info("Closed blkdev%"PRIu16"\n", id);
> > +}
> > diff --git a/lib/ukblkdev/exportsyms.uk b/lib/ukblkdev/exportsyms.uk
> > index 0274dae8..0abd8e10 100644
> > --- a/lib/ukblkdev/exportsyms.uk
> > +++ b/lib/ukblkdev/exportsyms.uk
> > @@ -22,3 +22,7 @@ uk_blkdev_queue_finish_reqs
> >   uk_blkdev_sync_io
> >   uk_blkdev_read
> >   uk_blkdev_write
> > +uk_blkdev_stop
> > +uk_blkdev_queue_release
> > +uk_blkdev_drv_unregister
> > +uk_blkdev_close
> > diff --git a/lib/ukblkdev/include/uk/blkdev.h
> b/lib/ukblkdev/include/uk/blkdev.h
> > index ba4c2784..00789198 100644
> > --- a/lib/ukblkdev/include/uk/blkdev.h
> > +++ b/lib/ukblkdev/include/uk/blkdev.h
> > @@ -468,6 +468,37 @@ int uk_blkdev_sync_io(struct uk_blkdev *dev,
> >
> >   #endif
> >
> > +/**
> > + * Stop an Unikraft block device, and set its state to
> UK_BLKDEV_CONFIGURED
> > + * state.
> > + * The device can be restarted with a call to uk_blkdev_start().
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device.
> > + */
> > +int uk_blkdev_stop(struct uk_blkdev *dev);
> > +
> > +/**
> > + * Free a queue and its descriptors for an Unikraft block device.
> > + * @param dev
> > + *   The Unikraft Block Device.
> > + * @param queue_id
> > + *   The index of the queue to set up.
> > + *   The value must be in range [0, nb_queue -1] previously supplied
> > + *   to uk_blkdev_configure()
> > + */
> > +void uk_blkdev_queue_release(struct uk_blkdev *dev, uint16_t queue_id);
>
> Use `struct uk_blkdev_queue *` also here.
>

Actually, I chose to use the queue_id in here, for debugging / error prints.

> > +
> > +/**
> > + * Close a stopped Unikraft block device.
> > + * The function frees all resources except for
> > + * the ones needed by the UK_BLKDEV_UNCONFIGURED state.
> > + *
> > + * @param dev
> > + *   The Unikraft Block Device.
> > + */
> > +void uk_blkdev_close(struct uk_blkdev *dev);
> > +
> >   #ifdef __cplusplus
> >   }
> >   #endif
> > diff --git a/lib/ukblkdev/include/uk/blkdev_core.h
> b/lib/ukblkdev/include/uk/blkdev_core.h
> > index 66831f90..71fdd34b 100644
> > --- a/lib/ukblkdev/include/uk/blkdev_core.h
> > +++ b/lib/ukblkdev/include/uk/blkdev_core.h
> > @@ -204,6 +204,16 @@ typedef int (*uk_blkdev_queue_submit_one_t)(struct
> uk_blkdev *dev,
> >   typedef int (*uk_blkdev_queue_finish_reqs_t)(struct uk_blkdev *dev,
> >               uint16_t queue_id);
> >
> > +/** Driver callback type to stop an Unikraft block device. */
> > +typedef int (*uk_blkdev_stop_t)(struct uk_blkdev *dev);
> > +
> > +/** Driver callback type to release a queue of an Unikraft block
> device. */
> > +typedef int (*uk_blkdev_queue_release_t)(struct uk_blkdev *dev,
> > +             uint16_t queue_id);
>
> Use `struct uk_blkdev_queue *` also here as commented in patch 4/6.
>
> > +
> > +/** Driver callback type to close an Unikraft block device. */
> > +typedef void (*uk_blkdev_close_t)(struct uk_blkdev *dev);
> > +
> >   struct uk_blkdev_ops {
> >       uk_blkdev_get_info_t                            get_info;
> >       uk_blkdev_configure_t                           dev_configure;
> > @@ -211,7 +221,10 @@ struct uk_blkdev_ops {
> >       uk_blkdev_queue_configure_t                     queue_setup;
> >       uk_blkdev_queue_intr_enable_t                   queue_intr_enable;
> >       uk_blkdev_start_t                               dev_start;
> > +     uk_blkdev_stop_t                                dev_stop;
> >       uk_blkdev_queue_intr_disable_t                  queue_intr_disable;
> > +     uk_blkdev_queue_release_t                       queue_release;
> > +     uk_blkdev_close_t                               dev_close;
> >   };
> >
> >   /**
> > diff --git a/lib/ukblkdev/include/uk/blkdev_driver.h
> b/lib/ukblkdev/include/uk/blkdev_driver.h
> > index 37b5a3e8..f361e8fb 100644
> > --- a/lib/ukblkdev/include/uk/blkdev_driver.h
> > +++ b/lib/ukblkdev/include/uk/blkdev_driver.h
> > @@ -98,6 +98,17 @@ static inline void uk_blkdev_drv_queue_event(struct
> uk_blkdev *dev,
> >   #endif
> >   }
> >
> > +/**
> > + * Frees the data allocated for the Unikraft Block Device.
> > + * Removes the block device from the list.
> > + *
> > + * @param dev
> > + *   Unikraft block device
> > + * @param a
> > + *   Allocator used for libukblkdev private data (dev->_data).
> > + */
> > +void uk_blkdev_drv_unregister(struct uk_blkdev *dev, struct uk_alloc
> *a);
> > +
> >   #ifdef __cplusplus
> >   }
> >   #endif
> >
>

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

<div dir=3D"ltr"><div dir=3D"ltr">Hi Simon,<div><br></div><div>See my comme=
nts below.</div><div><br></div><div>Roxana</div></div><br><div class=3D"gma=
il_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Jun 14, 2019 at 3:1=
7 PM Simon Kuenzer &lt;<a href=3D"mailto:simon.kuenzer@neclab.eu">simon.kue=
nzer@neclab.eu</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex">On 29.05.19 10:34, Roxana Nicolescu wrote:<br>
&gt; A device can be stopped, which will not permit further requests.<br>
&gt; Also, for closing the device, the device must pe stopped,<br>
&gt; each queue must be release and all the data allocated must be freed.<b=
r>
&gt; <br>
&gt; Signed-off-by: Roxana Nicolescu &lt;<a href=3D"mailto:nicolescu.roxana=
1996@gmail.com" target=3D"_blank">nicolescu.roxana1996@gmail.com</a>&gt;<br=
>
&gt; ---<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/blkdev.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 85 +++++++++++++++++++++++++++++++++<br=
>
&gt;=C2=A0 =C2=A0lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noref=
errer" target=3D"_blank">exportsyms.uk</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 |=C2=A0 4 ++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev.h=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 | 31 ++++++++++++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev_core.h=C2=A0 =C2=A0| 13 +++=
++<br>
&gt;=C2=A0 =C2=A0lib/ukblkdev/include/uk/blkdev_driver.h | 11 +++++<br>
&gt;=C2=A0 =C2=A05 files changed, 144 insertions(+)<br>
&gt; <br>
&gt; diff --git a/lib/ukblkdev/blkdev.c b/lib/ukblkdev/blkdev.c<br>
&gt; index 534a9ae1..d06b5250 100644<br>
&gt; --- a/lib/ukblkdev/blkdev.c<br>
&gt; +++ b/lib/ukblkdev/blkdev.c<br>
&gt; @@ -467,3 +467,88 @@ int uk_blkdev_sync_io(struct uk_blkdev *dev,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0return req-&gt;result_status;<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; +<br>
&gt; +int uk_blkdev_stop(struct uk_blkdev *dev)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0int rc =3D 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops-&gt;dev_stop);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state =3D=3D UK_BLKDE=
V_RUNNING);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0rc =3D dev-&gt;dev_ops-&gt;dev_stop(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uk_pr_err(&quot;Faile=
d to stop blkdev%&quot;PRIu16&quot; device %d\n&quot;,<br>
&gt; +=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 =C2=A0dev-&gt;_data-&gt;id, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0else {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uk_pr_info(&quot;Stop=
ped blkdev%&quot;PRIu16&quot; device\n&quot;,<br>
&gt; +=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 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0dev-&gt;_data-&gt;id);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dev-&gt;_data-&gt;sta=
te =3D UK_BLKDEV_CONFIGURED;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0}<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0return rc;<br>
&gt; +}<br>
&gt; +<br>
&gt; +void uk_blkdev_queue_release(struct uk_blkdev *dev, uint16_t queue_id=
)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0int rc =3D 0;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev !=3D NULL);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops-&gt;queue_release);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(queue_id &lt; CONFIG_LIBUKBLKDEV_MAXNBQ=
UEUES);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state !=3D UK_BLKDEV_=
RUNNING);<br>
&gt; +<br>
&gt; +#if CONFIG_LIBUKBLKDEV_DISPATCHERTHREADS<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (dev-&gt;_data-&gt;queue_handler[queue_id].cal=
lback)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0_destroy_event_handle=
r(&amp;dev-&gt;_data-&gt;queue_handler[queue_id]);<br>
<br>
Hum not sure if there is a condition where this could crash. Maybe you <br>
should get the queue thread into an defined state and destroy it there. <br=
>
I am just thinking what happens when it is getting destroyed while <br>
executing the registered event callback. Maybe we need a condition <br>
variable next to the event semaphore which is checked if the thread <br>
should exit by itself.<br>
At least we should put a /* TODO */ comment here because we may run into <b=
r>
problems especially with preemptive scheduling. It is okay to solve this <b=
r>
problem later.<br>
<br></blockquote><div>I will provide a variable to stop the while loop in t=
he dispatcher thread in v2.</div><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex">
&gt; +#endif<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0rc =3D dev-&gt;dev_ops-&gt;queue_release(dev, que=
ue_id);<br>
<br>
Use `struct uk_blkdev_queue *` also here as commented in patch 4/6.<br>
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0if (rc)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uk_pr_err(&quot;Faile=
d to release blkdev%&quot;PRIu16&quot;-q%&quot;PRIu16&quot;: %d\n&quot;,<br=
>
&gt; +=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 =C2=A0dev-&gt;_data-&gt;id, queue_id, rc);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0else {<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uk_pr_info(&quot;Rele=
ased blkdev%&quot;PRIu16&quot;-q%&quot;PRIu16&quot;\n&quot;,<br>
&gt; +=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 =C2=A0dev-&gt;_data-&gt;id, queue_id);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dev-&gt;_queue[queue_=
id] =3D NULL;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0}<br>
&gt; +}<br>
&gt; +<br>
&gt; +void uk_blkdev_drv_unregister(struct uk_blkdev *dev, struct uk_alloc =
*a)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uint16_t id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev !=3D NULL);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state !=3D UK_BLKDEV_=
RUNNING);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0id =3D dev-&gt;_data-&gt;id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_free(a, dev-&gt;_data);<br>
<br>
Maybe it is better to store `uk_alloc *a` on `_data` while allocating. <br>
Then we would not need the allocator function argument anymore.<br>
<br></blockquote><div>For me, it is the same thing. But I will change it in=
 v2.=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt; +=C2=A0 =C2=A0 =C2=A0UK_TAILQ_REMOVE(&amp;uk_blkdev_list, dev, _list);=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0blkdev_count--;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_pr_info(&quot;Unregistered blkdev%&quot;PRIu16=
&quot;: %p\n&quot;,<br>
&gt; +=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 =C2=A0 =C2=A0 id, dev);<br>
&gt; +}<br>
&gt; +<br>
&gt; +void uk_blkdev_close(struct uk_blkdev *dev)<br>
&gt; +{<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uint16_t id;<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;dev_ops-&gt;dev_close);<br>
&gt; +=C2=A0 =C2=A0 =C2=A0UK_ASSERT(dev-&gt;_data-&gt;state !=3D UK_BLKDEV_=
RUNNING);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0id =3D dev-&gt;_data-&gt;id;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0dev-&gt;dev_ops-&gt;dev_close(dev);<br>
&gt; +<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_pr_info(&quot;Closed blkdev%&quot;PRIu16&quot;=
\n&quot;, id);<br>
&gt; +}<br>
&gt; diff --git a/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"nore=
ferrer" target=3D"_blank">exportsyms.uk</a> b/lib/ukblkdev/<a href=3D"http:=
//exportsyms.uk" rel=3D"noreferrer" target=3D"_blank">exportsyms.uk</a><br>
&gt; index 0274dae8..0abd8e10 100644<br>
&gt; --- a/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noreferrer"=
 target=3D"_blank">exportsyms.uk</a><br>
&gt; +++ b/lib/ukblkdev/<a href=3D"http://exportsyms.uk" rel=3D"noreferrer"=
 target=3D"_blank">exportsyms.uk</a><br>
&gt; @@ -22,3 +22,7 @@ uk_blkdev_queue_finish_reqs<br>
&gt;=C2=A0 =C2=A0uk_blkdev_sync_io<br>
&gt;=C2=A0 =C2=A0uk_blkdev_read<br>
&gt;=C2=A0 =C2=A0uk_blkdev_write<br>
&gt; +uk_blkdev_stop<br>
&gt; +uk_blkdev_queue_release<br>
&gt; +uk_blkdev_drv_unregister<br>
&gt; +uk_blkdev_close<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev.h b/lib/ukblkdev/include/u=
k/blkdev.h<br>
&gt; index ba4c2784..00789198 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev.h<br>
&gt; @@ -468,6 +468,37 @@ int uk_blkdev_sync_io(struct uk_blkdev *dev,<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +/**<br>
&gt; + * Stop an Unikraft block device, and set its state to UK_BLKDEV_CONF=
IGURED<br>
&gt; + * state.<br>
&gt; + * The device can be restarted with a call to uk_blkdev_start().<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device.<br>
&gt; + */<br>
&gt; +int uk_blkdev_stop(struct uk_blkdev *dev);<br>
&gt; +<br>
&gt; +/**<br>
&gt; + * Free a queue and its descriptors for an Unikraft block device.<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device.<br>
&gt; + * @param queue_id<br>
&gt; + *=C2=A0 =C2=A0The index of the queue to set up.<br>
&gt; + *=C2=A0 =C2=A0The value must be in range [0, nb_queue -1] previously=
 supplied<br>
&gt; + *=C2=A0 =C2=A0to uk_blkdev_configure()<br>
&gt; + */<br>
&gt; +void uk_blkdev_queue_release(struct uk_blkdev *dev, uint16_t queue_id=
);<br>
<br>
Use `struct uk_blkdev_queue *` also here.<br></blockquote><div><br></div><d=
iv>Actually, I chose to use the queue_id in here, for debugging / error pri=
nts.</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8=
ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt; +<br>
&gt; +/**<br>
&gt; + * Close a stopped Unikraft block device.<br>
&gt; + * The function frees all resources except for<br>
&gt; + * the ones needed by the UK_BLKDEV_UNCONFIGURED state.<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0The Unikraft Block Device.<br>
&gt; + */<br>
&gt; +void uk_blkdev_close(struct uk_blkdev *dev);<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0#ifdef __cplusplus<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev_core.h b/lib/ukblkdev/incl=
ude/uk/blkdev_core.h<br>
&gt; index 66831f90..71fdd34b 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev_core.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev_core.h<br>
&gt; @@ -204,6 +204,16 @@ typedef int (*uk_blkdev_queue_submit_one_t)(struc=
t uk_blkdev *dev,<br>
&gt;=C2=A0 =C2=A0typedef int (*uk_blkdev_queue_finish_reqs_t)(struct uk_blk=
dev *dev,<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_i=
d);<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +/** Driver callback type to stop an Unikraft block device. */<br>
&gt; +typedef int (*uk_blkdev_stop_t)(struct uk_blkdev *dev);<br>
&gt; +<br>
&gt; +/** Driver callback type to release a queue of an Unikraft block devi=
ce. */<br>
&gt; +typedef int (*uk_blkdev_queue_release_t)(struct uk_blkdev *dev,<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0uint16_t queue_id);<b=
r>
<br>
Use `struct uk_blkdev_queue *` also here as commented in patch 4/6.<br>
<br>
&gt; +<br>
&gt; +/** Driver callback type to close an Unikraft block device. */<br>
&gt; +typedef void (*uk_blkdev_close_t)(struct uk_blkdev *dev);<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0struct uk_blkdev_ops {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_get_info_t=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 g=
et_info;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_configure_t=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=
=A0dev_configure;<br>
&gt; @@ -211,7 +221,10 @@ struct uk_blkdev_ops {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_configure_t=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_setup;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_intr_enable_t=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_intr_enable;<b=
r>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_start_t=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 =C2=
=A0 =C2=A0dev_start;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_stop_t=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 =C2=A0 =
=C2=A0 dev_stop;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_intr_disable_t=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 queue_intr_disable;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_queue_release_t=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0queue_release;<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0uk_blkdev_close_t=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 =C2=A0 =
=C2=A0dev_close;<br>
&gt;=C2=A0 =C2=A0};<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0/**<br>
&gt; diff --git a/lib/ukblkdev/include/uk/blkdev_driver.h b/lib/ukblkdev/in=
clude/uk/blkdev_driver.h<br>
&gt; index 37b5a3e8..f361e8fb 100644<br>
&gt; --- a/lib/ukblkdev/include/uk/blkdev_driver.h<br>
&gt; +++ b/lib/ukblkdev/include/uk/blkdev_driver.h<br>
&gt; @@ -98,6 +98,17 @@ static inline void uk_blkdev_drv_queue_event(struct=
 uk_blkdev *dev,<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +/**<br>
&gt; + * Frees the data allocated for the Unikraft Block Device.<br>
&gt; + * Removes the block device from the list.<br>
&gt; + *<br>
&gt; + * @param dev<br>
&gt; + *=C2=A0 =C2=A0Unikraft block device<br>
&gt; + * @param a<br>
&gt; + *=C2=A0 =C2=A0Allocator used for libukblkdev private data (dev-&gt;_=
data).<br>
&gt; + */<br>
&gt; +void uk_blkdev_drv_unregister(struct uk_blkdev *dev, struct uk_alloc =
*a);<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0#ifdef __cplusplus<br>
&gt;=C2=A0 =C2=A0}<br>
&gt;=C2=A0 =C2=A0#endif<br>
&gt; <br>
</blockquote></div></div>

--0000000000009c388d058c76dfb7--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============1299274138936076839==--


From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:29:12 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:29: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 1hhELn-0001AM-De; Sat, 29 Jun 2019 14:29:11 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhELm-0001AH-VQ
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:29:11 +0000
X-Inumbo-ID: 419c85f4-9a7a-11e9-8980-bc764e045a96
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 419c85f4-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:29:09 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id u8so11587805wmm.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:29:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=aJQVIdxe4vkanHOcbHR6NmHHf9ZGNbcPeO1W+/kSfAk=;
 b=FQBip3427wJYjH9Bb+YrVgphXIZ5FwssdWktImfiYADGHB8Cmjv44UXanYYwhVLDED
 CTl0EIECvjM0nKtiNqGc9tlrcgss1b94USDdhGhrvRMozLyzLj/GNWCXadm5BScfBZ6B
 vg3ZkK4WsWWZ2jXFDbtvn2wnH1/pRvCIY9bY2zEM3eIgzEuvs1Ey6VmuVTSbF1cSIh+G
 gjTeMOMqHSoUFoZvRe+qGY/5aUZiUVvt24RHrp6uglLE+beX4ibbYhZv86Rdr2llMo2G
 zeWhIiyZtlN7UatrjhkcmedLJPCmBxmWhGPRxnxfBBLivESMbw9LqSGihfnzxNkQuDap
 9irA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=aJQVIdxe4vkanHOcbHR6NmHHf9ZGNbcPeO1W+/kSfAk=;
 b=IRwJGb01mVh5gchptDgernsqBEQ+R1XSRKawTgpdDyQyIF+uWAk4CGMtjpA5C5fI6N
 q7tBjIlIwW4om0fy7//cUVfvgxyr/Zrh2jcH49ZYoZnzjmrV1liRVTXq2e6+WVe5Kt8o
 tKkxyzQ8MWHdH9yUM1vjb/iTjezlYWAnT0a6aGLpWJ8nNTzaszqxI0h4aStl6po9BN68
 CrZLnYG2Km0Dc/HNjRgPtUUvQpk3Tw3wIkrmIUcQfJ093JYwRx4Ty1vLo3WnrnGfyNJb
 YV3RoX4MlEMew+pzxsChivzmL/2+yf8xofsXjPHya/6gbPa6oU52bqXBjcxhM9zizBgT
 IO1w==
X-Gm-Message-State: APjAAAXq07HLfZdnqvUgbD37NKkEJboGsHUMEQ51BXVrwLQs4N3O0NrD
 g+0P/CO3svZVs5n56hQi9zI=
X-Google-Smtp-Source: APXvYqwFidBXxGY4WMWjX8AYf3QnMuIAwppGuYm6ond9FmjlTHQ7Q5sGthdKX/5mayrTiY5XD+EKXw==
X-Received: by 2002:a7b:ca44:: with SMTP id m4mr10065600wml.160.1561818548478; 
 Sat, 29 Jun 2019 07:29:08 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id l8sm12006984wrg.40.2019.06.29.07.29.07
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:29:08 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
 <20190629111249.18329-2-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <11efbcd3-41e4-9d59-151f-a55ace5bfa5c@gmail.com>
Date: Sat, 29 Jun 2019 17:29:06 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629111249.18329-2-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH v2 1/4] Fix dentry
 referecing and file closing
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDI6MTIgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IEluY3JlYXNlIHRoZSByZWZjb3Vu
dCBvZiB0aGUgdmZzY29yZV9maWxlJ3MgZGVudHJ5IHdoZW4gb3BlbmluZyBpdC4KPiBUaGlzIGlz
IHRoZSBPU3YgYmVoYXZpb3VyIHNpbmNlIGVhY2ggdmZzY29yZV9maWxlIGhhcyBhbiBpbnRydXNp
dmVfcHRyCj4gcmVmIHRvIGl0cyBkZW50cnksIHdoaWNoIGluY3JlYXNlcyBkZW50cnkncyByZWZj
b3VudCBvbiBjcmVhdGlvbiBhbmQKPiBkZWNyZWFzZXMgZGVudHJ5J3MgcmVmY291bnQgb24gZGVs
ZXRpb24uIFdlIG11c3QgaW5jcmVhc2UgdGhlIGRlbnRyeSdzCj4gcmVmY291bnQgc2luY2Ugd2Ug
bWlnaHQgZW5kIHVwIHdpdGggZmlsZXMgcG9pbnRpbmcgdG8gZGVsZXRlZCBkZW50cmllcywKPiBp
ZiB0aGUgYWN0dWFsIGZpbGUvZGlyZWN0b3J5IHRoZSBkZW50cnkgcmVmZXJzIGdldHMgZGVsZXRl
ZCAoc28gdGhlCj4gZGVudHJ5J3MgcmVmY291bnQgaGl0cyAwIGFuZCBpdCBnZXRzIGZyZWVkKS4K
PiAKPiBXZSBtdXN0IGFsc28gZGVjcmVhc2UgdGhlIHJlZmNvdW50IG9mIHRoZSBkZW50cnkgb24g
ZmlsZSBjbG9zaW5nLgo+IAo+IFRoZSBzdGF0ZW1lbnQgIkRlbnRyeSBzdGF5cyBmb3JldmVyIGlu
IHRoZSBkZW50cnkgY2FjaGUuIFVubGVzcyB0aGUKPiBmaWxlL2RpcmVjdG9yeSBpdCByZWZlcnMg
dG8gZ2V0cyBkZWxldGVkL3JlbmFtZWQiIGRvZXNuJ3QgaG9sZCBmb3IKPiBmaWxlIHN5c3RlbXMg
dGhhdCBkbyBub3Qgc2F2ZSB0aGVpciBzdHJ1Y3R1cmVzIG9uIHBlcm1hbmVudCBtZWRpdW1zCj4g
KGxpa2UgTFdJUCdzIHNvY2tldHMgYWJzdHJhY3Rpb24pIHNvIHRoZSBkZW50cnkgcmVmY291bnQg
aXMgZXF1YWwgdG8KPiB0aGUgbnVtYmVyIG9mIHZmc2NvcmVfZmlsZSdzIHBvaW50aW5nIGF0IGl0
IChzbyB0aGUgZGVudHJ5IGdldHMKPiBkZWxldGVkIGFzIHNvb24gYXMgdGhlIGxhc3QgZmlsZSBp
cyBjbG9zZWQpLgo+IAo+IFJpZ2h0IG5vdyB0aGUgdmZzY29yZV9maWxlIGlzIG5ldmVyIGZyZWVk
LCBleGNlcHRpbmcgdGhlIExXSVAgc29ja2V0J3MKPiBmaWxlIHdoaWNoIGlzIGZyZWVkIGluc2lk
ZSBzb2NrX25ldF9jbG9zZSBhbG9uZyB3aXRoIGl0cyBkZW50cnkgYW5kCj4gdm5vZGUuIFRoaXMg
c2hvdWxkIG5vdCBiZSB0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyIGZyb20gYSB1bmRlcmx5aW5nCj4g
ZmlsZSBzeXN0ZW0gKHJhbWZzIHByb3ZpZGVzIGEgZ29vZCBleGFtcGxlIG9mIGV4cGVjdGVkIGJl
aGF2aW91cikuCj4gQXMgc3VjaCwgd2UgbXVzdCBmcmVlIHRoZSB2ZnNjb3JlX2ZpbGUgd2hlbiBj
bG9zaW5nIGl0IGFuZCByZWxlYXNlIGl0cwo+IGRlbnRyeSBzbyB0aGUgZGVudHJ5IGFuZCB2bm9k
ZSBmcmVlaW5nIHdpbGwgYmUgaGFuZGxlZCBieSB2ZnMgYXMgd2VsbC4KPiAKPiBUaGlzIHBhdGNo
IGFsc28gbWFrZXMgZmRyb3AgcmV0dXJuIDAgaWYgdGhlIGZpbGUncyByZWZjb3VudCBoaXRzCj4g
MCBvciByZXR1cm4gMSBvdGhlcndpc2UuIFRoaXMgaXMgdGhlIE9TdiBiZWhhdmlvdXIgYW5kIHRo
ZSByZXR1cm4KPiBvZiBhbiBlcnJvciBmcm9tIGZkcm9wIGlzIG5ldmVyIGNoZWNrZWQuCj4gCj4g
U2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgo+
IC0tLQo+ICBsaWIvdmZzY29yZS9maWxlLmMgICAgIHwgMTggKysrKysrKysrKysrKystLS0tCj4g
IGxpYi92ZnNjb3JlL2ZvcHMuYyAgICAgfCAgNyArKysrLS0tCj4gIGxpYi92ZnNjb3JlL3N5c2Nh
bGxzLmMgfCAgMyArKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA3IGRl
bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9maWxlLmMgYi9saWIvdmZz
Y29yZS9maWxlLmMKPiBpbmRleCBlNTZmMTZkYy4uZTc2MjdlOTYgMTAwNjQ0Cj4gLS0tIGEvbGli
L3Zmc2NvcmUvZmlsZS5jCj4gKysrIGIvbGliL3Zmc2NvcmUvZmlsZS5jCj4gQEAgLTQyLDE1ICs0
MiwyNSBAQAo+ICAKPiAgaW50IGZkcm9wKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQo+ICB7Cj4g
LQlpbnQgcmV0ID0gMDsKPiAgCWludCBwcmV2ID0gdWthcmNoX2RlYygmZnAtPmZfY291bnQpOwo+
ICAKPiAgCWlmIChwcmV2ID09IDApCj4gIAkJVUtfQ1JBU0goIlVuYmFsYW5jZWQgZmhvbGQvZmRy
b3AiKTsKPiAgCj4gLQlpZiAocHJldiA9PSAxKQo+IC0JCXJldCA9IHZmc19jbG9zZShmcCk7Cj4g
LQlyZXR1cm4gcmV0Owo+ICsJaWYgKHByZXYgPT0gMSkgewo+ICsJCS8qCj4gKwkJICogd2UgZnJl
ZSB0aGUgZmlsZSBldmVuIGluIGNhc2Ugb2YgYW4gZXJyb3IKPiArCQkgKiBzbyByZWxlYXNlIHRo
ZSBkZW50cnkgdG9vCj4gKwkJICovCj4gKwkJaWYgKHZmc19jbG9zZShmcCkgIT0gMCkKPiArCQkJ
ZHJlbGUoZnAtPmZfZGVudHJ5KTsKPiArCj4gKwkJZnJlZShmcCk7Cj4gKwo+ICsJCXJldHVybiAx
Owo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICB9Cj4gIHZvaWQgZmhvbGQoc3RydWN0IHZmc2Nv
cmVfZmlsZSAqZnApCj4gIHsKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZm9wcy5jIGIvbGli
L3Zmc2NvcmUvZm9wcy5jCj4gaW5kZXggOGY1YzJlMWIuLjBjZWYyYzEyIDEwMDY0NAo+IC0tLSBh
L2xpYi92ZnNjb3JlL2ZvcHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL2ZvcHMuYwo+IEBAIC01Myw5
ICs1MywxMCBAQCBpbnQgdmZzX2Nsb3NlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwKQo+ICAJaWYg
KGVycm9yKQo+ICAJCXJldHVybiBlcnJvcjsKPiAgCj4gLQkvKiBEZW50cnkgc3RheXMgZm9yZXZl
ciBpbiB0aGUgZGVudHJ5IGNhY2hlLiBVbmxlc3MgdGhlCj4gLQkgKiBmaWxlL2RpcmVjdG9yeSBp
dCByZWZlcnMgdG8gZ2V0cyBkZWxldGVkL3JlbmFtZWQgKi8KPiArCS8qIFJlbGVhc2UgdGhlIGRl
bnRyeSAqLwo+ICsJZHJlbGUoZnAtPmZfZGVudHJ5KTsKPiAgCWZwLT5mX2RlbnRyeSA9IE5VTEw7
Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTEwMyw3ICsxMDQsNyBAQCBpbnQgdmZz
X3dyaXRlKHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKmZwLCBzdHJ1Y3QgdWlvICp1aW8sIGludCBmbGFn
cykKPiAgCQlpb2ZsYWdzIHw9IElPX1NZTkM7Cj4gIAo+ICAJaWYgKChmbGFncyAmIEZPRl9PRkZT
RVQpID09IDApCj4gLQkgICAgICAgIHVpby0+dWlvX29mZnNldCA9IGZwLT5mX29mZnNldDsKPiAr
CQl1aW8tPnVpb19vZmZzZXQgPSBmcC0+Zl9vZmZzZXQ7Cj4gIAo+ICAJZXJyb3IgPSBWT1BfV1JJ
VEUodnAsIHVpbywgaW9mbGFncyk7Cj4gIAlpZiAoIWVycm9yKSB7Cj4gZGlmZiAtLWdpdCBhL2xp
Yi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gaW5kZXggMzg1
ZDkwYzAuLmY5NjY2YzRjIDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKPiAr
KysgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCj4gQEAgLTIwNCw2ICsyMDQsOCBAQCBzeXNfb3Bl
bihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgdmZzY29yZV9maWxl
ICoqZnBwKQo+ICAJfQo+ICAJZnAtPmZfZmxhZ3MgPSBmbGFnczsKPiAgCj4gKwkvLyBPU3Ygd2Fz
IHVzaW5nIGEgaW50cnVzaXZlX3B0ciB3aGljaCB3YXMgaW5jcmVhc2luZyB0aGUgcmVmY291bnQK
PiArCWRyZWYoZHApOwo+ICAJLy8gY2hhbmdlIHRvIHN0ZDo6bW92ZSBvbmNlIGRwIGlzIGEgZGVu
dHJ5X3JlZgo+ICAJZnAtPmZfZGVudHJ5ID0gZHA7Cj4gIAlkcCA9IE5VTEw7Cj4gQEAgLTIxNCw2
ICsyMTYsNyBAQCBzeXNfb3BlbihjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBz
dHJ1Y3QgdmZzY29yZV9maWxlICoqZnBwKQo+ICAJCS8vIE5vdGUgZGlyZWN0IGRlbGV0ZSBvZiBm
cCBpbnN0ZWFkIG9mIGZkcm9wKGZwKS4gZnAgd2FzIG5ldmVyCj4gIAkJLy8gcmV0dXJuZWQgc28g
Y2Fubm90IGJlIGluIHVzZSwgYW5kIGJlY2F1c2UgaXQgd2Fzbid0IG9wZW5lZAo+ICAJCS8vIGl0
IGNhbm5vdCBiZSBjbG9zZSgpZWQuCj4gKwkJZHJlbGUoZnAtPmZfZGVudHJ5KTsKPiAgCQlmcmVl
KGZwKTsKPiAgCQlyZXR1cm4gZXJyb3I7Cj4gIAl9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:29:26 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:29: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 1hhEM2-0001Bo-GV; Sat, 29 Jun 2019 14:29:26 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEM1-0001Bi-BV
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:29:25 +0000
X-Inumbo-ID: 4a32071c-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4a32071c-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:29:24 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id u18so973400wru.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:29:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=uu4u+F7ra1zsNN/fejNRyljbSY+vsgmoG/2j7gA46m8=;
 b=njWPwv3xlqzdmYv77zJLrdJKoSwI1Azv4G+yIq8IRmSwsEZzU6294A8t/5w3GDHu8J
 x63x4hGAyN8+SrF4+VCJbwh19rLM/xwkmwlFStRf2mT/xvYNByGgVeWZ7RZ5P7/igH0N
 +1e6XaqYSDus9oiYBzBKKVc7y+gmWTNyD2tBDq8xi3hJCgTD8MH7Z7zk5p9YashL5iTx
 Fmz/hYGvrun7yyf9fpimYkJ57lu8Ok17+TYYZFlQhjLvzHZR0CqpjgxXhCrqr4O0/HGL
 8MKI5FA/Kd4hsjMQw7+aqt4JUf9DAyy4BIwVQ+r5bu5fRJQW+unOfD7/GNTXA3rDUGyu
 O6VA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=uu4u+F7ra1zsNN/fejNRyljbSY+vsgmoG/2j7gA46m8=;
 b=d5GOhzC9JGco5MJtk7AgKH5Wc8IKknYQUlJAaxbnEDeZ1QABZpHoMIqc82iTRnIqc4
 0ytifCY4NJkaRI76pPeDs+uSocYBoNi5Dwl4tkL060JFPCptMTtjNGChIIGBbkZebzmq
 YcsIWC2VwZWkRxCbkA6XRrs83x0owXKmQpbnpQNToOp/IXb739rz0aYISXBHyVFkK8X9
 Icd42n8r2+2OGOvBgx2rkbPKKPjWBIZsakhHv220SFTEwGEatoBiQ0fHCwHVEUQs3APb
 7MuEvHnM8cNLPFsSnAZhC64gpe3U06vXNZAbapsCXBhRKeAzNw3GjrhQWY/wu3EIBm6K
 aunQ==
X-Gm-Message-State: APjAAAXvQZecOUzPsznjBVloKLqgs4vQSvl4cfVfE+q4U110eN11qTiv
 GrCu52t126TFV73khNzT9VM=
X-Google-Smtp-Source: APXvYqxHhridNi0EDqGwtOetsQWnm3heNt1JdQcOZdK68F0oFaAb1r6BVvpsL6+sqaRSpjXuOlchtg==
X-Received: by 2002:adf:dc4b:: with SMTP id m11mr5975374wrj.51.1561818562938; 
 Sat, 29 Jun 2019 07:29:22 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id u18sm7335243wmd.19.2019.06.29.07.29.22
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:29:22 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
 <20190629111249.18329-3-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <22c04c53-1b70-5370-5d57-262806b5494c@gmail.com>
Date: Sat, 29 Jun 2019 17:29:21 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629111249.18329-3-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH v2 2/4] Check for NULL
 reference on vfscore_put_fd()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDI6MTIgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFNpbmNlIHdlIGNhbiBhbGxvY2F0
ZSBhIGZkIHdpdGhvdXQgYXNzaWduaW5nIGEKPiB2ZnNjb3JlX2ZpbGUgd2UgbXVzdCBwcm90ZWN0
IGFnYWluc3QgTlVMTCBwb2ludGVycy4KPiAKPiBBbiBleGFtcGxlIGlzIHRoZSBMV0lQIHNvY2tf
ZmRfYWxsb2MgZnVuY3Rpb24gZnJvbSBzb2NrZXRzLmMKPiB3aGljaCBmaXJzdGx5IHJlc2VydmVz
IGEgZmlsZSBkZXNjcmlwdG9yIGJ5IGNhbGxpbmcgdmZzY29yZV9hbGxvY19mZAo+IGFuZCwgb24g
ZmFpbHVyZSwgY2FsbHMgdmZzY29yZV9wdXRfZmQuIEJ1dCB0aGUgZmFpbHVyZSBtaWdodCBvY2N1
cgo+IGJlZm9yZSBhc3NvY2lhdGluZyBhbiBhY3R1YWwgdmZzY29yZV9maWxlIHdpdGggdGhlIGZk
Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWls
LmNvbT4KPiAtLS0KPiAgbGliL3Zmc2NvcmUvZmQuYyB8IDcgKysrKysrLQo+ICAxIGZpbGUgY2hh
bmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xp
Yi92ZnNjb3JlL2ZkLmMgYi9saWIvdmZzY29yZS9mZC5jCj4gaW5kZXggZjhiMjQwMjAuLjAxMDI1
YTQ2IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2ZkLmMKPiArKysgYi9saWIvdmZzY29yZS9m
ZC5jCj4gQEAgLTg4LDcgKzg4LDEyIEBAIHZvaWQgdmZzY29yZV9wdXRfZmQoaW50IGZkKQo+ICAJ
ZmR0YWJsZS5maWxlc1tmZF0gPSBOVUxMOwo+ICAJdWtwbGF0X2xjcHVfcmVzdG9yZV9pcnFmKGZs
YWdzKTsKPiAgCj4gLQlmZHJvcChmcCk7Cj4gKwkvKgo+ICsJICogU2luY2Ugd2UgY2FuIGFsbG9j
IGEgZmQgd2l0aG91dCBhc3NpZ25pbmcgYQo+ICsJICogdmZzZmlsZSB3ZSBtdXN0IHByb3RlY3Qg
YWdhaW5zdCBOVUxMIHB0cgo+ICsJICovCj4gKwlpZiAoZnApCj4gKwkJZmRyb3AoZnApOwo+ICB9
Cj4gIAo+ICBpbnQgdmZzY29yZV9pbnN0YWxsX2ZkKGludCBmZCwgc3RydWN0IHZmc2NvcmVfZmls
ZSAqZmlsZSkKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:29:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14: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 1hhEMV-0001Cf-Ja; Sat, 29 Jun 2019 14:29:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEMU-0001Ca-SI
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:29:54 +0000
X-Inumbo-ID: 5b994b5e-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 5b994b5e-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:29:53 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id c2so9120929wrm.8
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:29:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=nVaTH3ZoIqsF/QxCAn9febaoJk8qjxo1K2mWykA8d/E=;
 b=YIVUoRYsbOXqsVRAWcBEMvn1zAlOwKKcj/2EYPNPoOzAD9PJ4P62zDWSvMYfiEuW0k
 BvsMZ1ZvnvD90tn1aVc1WBbFplQTPGoDh2QGLJz2QG7pNwd6nZHZKBPbyEhUevt1HVHi
 ZudYt+DbEK4T+sa0gPdXGWmZ0CSH6No0113iiVuYcAt6Q9f3Y91XBPXNeQB6kyc2VnVR
 zKMejqvN187yfbxg+/j56MrMfA932PiLGU/Rj4WbSdYUvtbY2rFjmbJJBtccHPV2BM04
 ryzc+S2K9wqX/RTZu5zzB0cCwaGvZqzAixs/dNdXi590vgOn/bLpfaXKfTbgHUjeNshR
 ePaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=nVaTH3ZoIqsF/QxCAn9febaoJk8qjxo1K2mWykA8d/E=;
 b=aP7gFnOrCteBuwss0zL3MfnZFWsavUpkhVh/GHx9BdFsyulP9y47kVrDZbsWja+yMP
 4y/eFLnH9BSwTS8D1CRX7JfdTd71jCrsTiA6GeVELijIfb8WhGAjSAuEQiwzv3T0z9fw
 lf0PNaLPgaut24zgoU3PR7B8i0eJIpO5oWE2c0DTyaJQEfwShE2Z7XBjvLSC/NYgtDPh
 xN+xgjWjTe8PIrGl4kc9q4GcJCE/EPSjplF6syH2+mihoFAntGPwIbK9btQUvVLfXtjX
 YRy3U3CyDa14ZeR4MSx34bTUo/oFh9lWAGWYvHwTa4CCpvL41cJjtlz9H8lZgY7gL3m9
 87xQ==
X-Gm-Message-State: APjAAAVvQbeRkhGIvlTq37T0tZCtiUvgAkyj0tZV1ZBIxRI9pKR1PMos
 7lkzYijoB3JwupKww1zpzwQeIthf
X-Google-Smtp-Source: APXvYqwj/L2lo7lO8K+BDL2dYmPR0pqKykD+rDOaZczM6dW9uRc7e8xjO3XQoAxGs7dP04jwmlESHQ==
X-Received: by 2002:a5d:508a:: with SMTP id a10mr12191867wrt.59.1561818592159; 
 Sat, 29 Jun 2019 07:29:52 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id c65sm6095371wma.44.2019.06.29.07.29.51
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:29:51 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
 <20190629111249.18329-4-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <cbd77220-3808-5482-7887-a73646effee0@gmail.com>
Date: Sat, 29 Jun 2019 17:29:51 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629111249.18329-4-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH v2 3/4] Add asserts to
 fdrop()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDI6MTIgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFdlIGFyZSBhZGRpbmcgdGhlIGFz
c2VydHMgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyCj4gcmVmZXJlbmNlIHJlbGVhc2luZyBm
dW5jdGlvbnM6IGRyZWxlLCB2cmVsZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNaWhhaSBQb2dvbmFy
dSA8cG9nb25hcnVtaWhhaUBnbWFpbC5jb20+Cj4gLS0tCj4gIGxpYi92ZnNjb3JlL2ZpbGUuYyB8
IDcgKysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2ZpbGUuYyBiL2xpYi92ZnNjb3JlL2Zp
bGUuYwo+IGluZGV4IGU3NjI3ZTk2Li5iYzhiMGRjOCAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29y
ZS9maWxlLmMKPiArKysgYi9saWIvdmZzY29yZS9maWxlLmMKPiBAQCAtNDIsNyArNDIsMTIgQEAK
PiAgCj4gIGludCBmZHJvcChzdHJ1Y3QgdmZzY29yZV9maWxlICpmcCkKPiAgewo+IC0JaW50IHBy
ZXYgPSB1a2FyY2hfZGVjKCZmcC0+Zl9jb3VudCk7Cj4gKwlpbnQgcHJldjsKPiArCj4gKwlVS19B
U1NFUlQoZnApOwo+ICsJVUtfQVNTRVJUKGZwLT5mX2NvdW50ID4gMCk7Cj4gKwo+ICsJcHJldiA9
IHVrYXJjaF9kZWMoJmZwLT5mX2NvdW50KTsKPiAgCj4gIAlpZiAocHJldiA9PSAwKQo+ICAJCVVL
X0NSQVNIKCJVbmJhbGFuY2VkIGZob2xkL2Zkcm9wIik7Cj4gCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:30:13 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:30: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 1hhEMn-0001nL-M1; Sat, 29 Jun 2019 14:30:13 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEMm-0001nG-8U
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:30:12 +0000
X-Inumbo-ID: 6668878d-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 6668878d-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:30:11 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id f9so9100969wre.12
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:30:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=RBZcTMq1NxJuLOL7ysjP74PQlqy77qJgasj5gJPAVZ4=;
 b=fM9L43/o0WTxabvE5SPQ5XZ57BzY/8dx765rnwghfBj99AGZMZEArgmpE0M1OORX9s
 nkYEjdyxWyQF1ST7iQJ0mnmPzzHrAJf2Gk8kvhfCX0zg0SNRfPwc3vF13Bu0nPURh/cT
 qgo/UXj4r5hRNqPjUCEwZpazn+gF68TUyh3FIgGLMWHRDmItPpp9yECa53R/19qzHNgP
 hmJNOlrapVjaqLwo+0l4CNQQ9Ece94P7QF85IUy7xo6iYLoTzHalg8iHAH5Lhk1p4are
 8BDfFc+3jsz83QyrZVV8Uktd/yL7xwgbC+S11X2d6tb1DCVgBbhZp4MJoB838vXDxJZ8
 K+xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=RBZcTMq1NxJuLOL7ysjP74PQlqy77qJgasj5gJPAVZ4=;
 b=i/SKdvvVQjbZBkM+ldwKhz2zKz24wPRCaBInAFihZVs9ewfOuR9/tnOCtH2vYw/UGt
 qwYr4/wLdQ4JB7EQhcCQ1a/3VO9JVtBDB5+SJ8Mpj52uTpMo7WHQznA2lykZ4OtRwqjl
 UEIRn4JCqvfkzgKOntv+R3zkDd92swEuCzngJXtpCYToN/ly/4olJTJrc2bUHIETZUmq
 bx8bRlbuFKIvlmXa0J1wXf541562rcrc6+7+2Bvj+9tFVkx36PujHuwbhM+f4CYfSiK0
 +P7goy0/BSUyRF5DQFlSh1JLo2rxvI+ZMMgacKmnTRiuow+CGrAApjZ59fpzfAZNgBqY
 TtBQ==
X-Gm-Message-State: APjAAAXI/AZVU5BRzjMHsuwe2lXqiwCN+rlwkh52k5MTwi3sxk+xz0Qg
 ALlyRlyZiNwP4sRawFGkZphoPciX
X-Google-Smtp-Source: APXvYqwobj4TJ83F9jE74+Z9hQ2F8iH71TXWxFRg9brJa0MUNlslsKRlw/l8e3a5u8kb6IWmU6kf6g==
X-Received: by 2002:adf:afde:: with SMTP id y30mr11906191wrd.197.1561818610283; 
 Sat, 29 Jun 2019 07:30:10 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id n125sm6767677wmf.6.2019.06.29.07.30.09
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:30:09 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629111249.18329-1-pogonarumihai@gmail.com>
 <20190629111249.18329-5-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <c0a6a5f5-1171-df13-70c1-b4862db5617b@gmail.com>
Date: Sat, 29 Jun 2019 17:30:09 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629111249.18329-5-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT VFS PATCH v2 4/4] Expose dentry
 creation/deletion and vnode creation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDI6MTIgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IE1vdmUgZGVudHJ5IGZ1bmN0aW9u
IGRlY2xhcmF0aW9uIGluc2lkZSBkZW50cnkuaCBoZWFkZXIKPiB0byBiZSBjb25zaXN0ZW50IHdp
dGggbm9kZS5oIGFuZCwgc2luY2UgdGhleSByZWZlcgo+IGRlbnRyeSBvcGVyYXRpb25zLCB0aGF0
J3Mgd2hlcmUgdGhleSBzaG91bGQgbGl2ZSBhbnl3YXlzLgo+IAo+IEFkZCB0aGUgZGVudHJ5IGNy
ZWF0aW9uIGFuZCBkZWxldGlvbiBmdW5jdGlvbnMgYW5kIHRoZQo+IHZub2RlIGNyZWF0aW9uIGZ1
bmN0aW9uIHRvIGV4cG9ydHN5bXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUg
PHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgo+IC0tLQo+ICBsaWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrICAgICAgICAgICAgfCAzICsrKwo+ICBsaWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVu
dHJ5LmggfCA3ICsrKysrKysKPiAgbGliL3Zmc2NvcmUvdmZzLmggICAgICAgICAgICAgICAgICAg
IHwgNiAtLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0
aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIGIvbGli
L3Zmc2NvcmUvZXhwb3J0c3ltcy51awo+IGluZGV4IGRhN2ZiYWVhLi44MjJlNmVjYyAxMDA2NDQK
PiAtLS0gYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCj4gKysrIGIvbGliL3Zmc2NvcmUvZXhw
b3J0c3ltcy51awo+IEBAIC03NSwzICs3NSw2IEBAIHJlYWRsaW5rCj4gIGZhbGxvY2F0ZQo+ICBs
c2Vlawo+ICB1a19zeXNjYWxsX3dyaXRldgo+ICtkZW50cnlfYWxsb2MKPiArZHJlbGUKPiArdnJl
bGUKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oIGIv
bGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4gaW5kZXggODVmMzdhYjcuLjBh
Mzg0MDI4IDEwMDY0NAo+IC0tLSBhL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnku
aAo+ICsrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaAo+IEBAIC01NCw0
ICs1NCwxMSBAQCBzdHJ1Y3QgZGVudHJ5IHsKPiAgCXN0cnVjdCB1a19saXN0X2hlYWQgZF9jaGls
ZF9saW5rOwo+ICB9Owo+ICAKPiArc3RydWN0IGRlbnRyeSAqZGVudHJ5X2FsbG9jKHN0cnVjdCBk
ZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZub2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCk7Cj4g
K3N0cnVjdCBkZW50cnkgKmRlbnRyeV9sb29rdXAoc3RydWN0IG1vdW50ICptcCwgY2hhciAqcGF0
aCk7Cj4gK3ZvaWQgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkg
KnBhcmVudF9kcCwgY2hhciAqcGF0aCk7Cj4gK3ZvaWQgZGVudHJ5X3JlbW92ZShzdHJ1Y3QgZGVu
dHJ5ICpkcCk7Cj4gK3ZvaWQgZHJlZihzdHJ1Y3QgZGVudHJ5ICpkcCk7Cj4gK3ZvaWQgZHJlbGUo
c3RydWN0IGRlbnRyeSAqZHApOwo+ICsKPiAgI2VuZGlmIC8qIF9PU1ZfREVOVFJZX0ggKi8KPiBk
aWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvdmZzLmggYi9saWIvdmZzY29yZS92ZnMuaAo+IGluZGV4
IGZkNjBkZWM3Li5mYjU3NDM1ZiAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS92ZnMuaAo+ICsr
KyBiL2xpYi92ZnNjb3JlL3Zmcy5oCj4gQEAgLTEzNCwxMiArMTM0LDYgQEAgaW50CSB2ZnNfZG5h
bWVfY29weShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKTsKPiAgCj4g
IGludAkgZnNfbm9vcCh2b2lkKTsKPiAgCj4gLXN0cnVjdCBkZW50cnkgKmRlbnRyeV9hbGxvYyhz
dHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAsIGNvbnN0IGNoYXIgKnBh
dGgpOwo+IC1zdHJ1Y3QgZGVudHJ5ICpkZW50cnlfbG9va3VwKHN0cnVjdCBtb3VudCAqbXAsIGNo
YXIgKnBhdGgpOwo+IC12b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3Qg
ZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpOwo+IC12b2lkIGRlbnRyeV9yZW1vdmUoc3Ry
dWN0IGRlbnRyeSAqZHApOwo+IC12b2lkIGRyZWYoc3RydWN0IGRlbnRyeSAqZHApOwo+IC12b2lk
IGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKTsKPiAgdm9pZCBkZW50cnlfaW5pdCh2b2lkKTsKPiAg
Cj4gIGludCB2ZnNfY2xvc2Uoc3RydWN0IHZmc2NvcmVfZmlsZSAqZnApOwo+IAoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:30:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:30: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 1hhENT-0001oa-Pk; Sat, 29 Jun 2019 14:30:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhENT-0001oV-7K
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:30:55 +0000
X-Inumbo-ID: 7ee5dfb4-9a7a-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 7ee5dfb4-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:30:52 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 498BE1053A9;
 Sat, 29 Jun 2019 16:30:51 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Tjk8YxI3UZzb; Sat, 29 Jun 2019 16:30:51 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 241C31051C9;
 Sat, 29 Jun 2019 16:30:51 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 16:30:50
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083414.14794-1-nicolescu.roxana1996@gmail.com>
 <ec1b891c-c66f-0bfd-4abc-89f2bbb53e4c@neclab.eu>
Message-ID: <a515e711-2584-3c10-338b-b685b645976f@neclab.eu>
Date: Sat, 29 Jun 2019 16:30:48 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <ec1b891c-c66f-0bfd-4abc-89f2bbb53e4c@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 6/6] lib/ukblkdev: Stop and
 release an Unikraft block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

CgpPbiAxNC4wNi4xOSAxNDoxNywgU2ltb24gS3VlbnplciB3cm90ZToKPiBPbiAyOS4wNS4xOSAx
MDozNCwgUm94YW5hIE5pY29sZXNjdSB3cm90ZToKPj4gQSBkZXZpY2UgY2FuIGJlIHN0b3BwZWQs
IHdoaWNoIHdpbGwgbm90IHBlcm1pdCBmdXJ0aGVyIHJlcXVlc3RzLgo+PiBBbHNvLCBmb3IgY2xv
c2luZyB0aGUgZGV2aWNlLCB0aGUgZGV2aWNlIG11c3QgcGUgc3RvcHBlZCwKPj4gZWFjaCBxdWV1
ZSBtdXN0IGJlIHJlbGVhc2UgYW5kIGFsbCB0aGUgZGF0YSBhbGxvY2F0ZWQgbXVzdCBiZSBmcmVl
ZC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJveGFu
YTE5OTZAZ21haWwuY29tPgo+PiAtLS0KPj4gwqAgbGliL3VrYmxrZGV2L2Jsa2Rldi5jwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgODUgCj4+ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwo+PiDCoCBsaWIvdWtibGtkZXYvZXhwb3J0c3ltcy51a8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICsrCj4+IMKgIGxpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldi5owqDCoMKgwqDCoMKgwqAgfCAzMSArKysrKysrKysrKysKPj4gwqAgbGliL3VrYmxr
ZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaMKgwqAgfCAxMyArKysrKwo+PiDCoCBsaWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfZHJpdmVyLmggfCAxMSArKysrKwo+PiDCoCA1IGZpbGVz
IGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9saWIvdWtibGtk
ZXYvYmxrZGV2LmMgYi9saWIvdWtibGtkZXYvYmxrZGV2LmMKPj4gaW5kZXggNTM0YTlhZTEuLmQw
NmI1MjUwIDEwMDY0NAo+PiAtLS0gYS9saWIvdWtibGtkZXYvYmxrZGV2LmMKPj4gKysrIGIvbGli
L3VrYmxrZGV2L2Jsa2Rldi5jCj4+IEBAIC00NjcsMyArNDY3LDg4IEBAIGludCB1a19ibGtkZXZf
c3luY19pbyhzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJlcS0+
cmVzdWx0X3N0YXR1czsKPj4gwqAgfQo+PiDCoCAjZW5kaWYKPj4gKwo+PiAraW50IHVrX2Jsa2Rl
dl9zdG9wKHN0cnVjdCB1a19ibGtkZXYgKmRldikKPj4gK3sKPj4gK8KgwqDCoCBpbnQgcmMgPSAw
Owo+PiArCj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRldik7Cj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRl
di0+X2RhdGEpOwo+PiArwqDCoMKgIFVLX0FTU0VSVChkZXYtPmRldl9vcHMpOwo+PiArwqDCoMKg
IFVLX0FTU0VSVChkZXYtPmRldl9vcHMtPmRldl9zdG9wKTsKPj4gK8KgwqDCoCBVS19BU1NFUlQo
ZGV2LT5fZGF0YS0+c3RhdGUgPT0gVUtfQkxLREVWX1JVTk5JTkcpOwo+PiArCj4+ICvCoMKgwqAg
cmMgPSBkZXYtPmRldl9vcHMtPmRldl9zdG9wKGRldik7Cj4+ICvCoMKgwqAgaWYgKHJjKQo+PiAr
wqDCoMKgwqDCoMKgwqAgdWtfcHJfZXJyKCJGYWlsZWQgdG8gc3RvcCBibGtkZXYlIlBSSXUxNiIg
ZGV2aWNlICVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldi0+X2Rh
dGEtPmlkLCByYyk7Cj4+ICvCoMKgwqAgZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1a19wcl9p
bmZvKCJTdG9wcGVkIGJsa2RldiUiUFJJdTE2IiBkZXZpY2VcbiIsCj4+ICvCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldi0+X2RhdGEtPmlkKTsKPj4gK8Kg
wqDCoMKgwqDCoMKgIGRldi0+X2RhdGEtPnN0YXRlID0gVUtfQkxLREVWX0NPTkZJR1VSRUQ7Cj4+
ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIHJjOwo+PiArfQo+PiArCj4+ICt2b2lk
IHVrX2Jsa2Rldl9xdWV1ZV9yZWxlYXNlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwgdWludDE2X3Qg
cXVldWVfaWQpCj4+ICt7Cj4+ICvCoMKgwqAgaW50IHJjID0gMDsKPj4gKwo+PiArwqDCoMKgIFVL
X0FTU0VSVChkZXYgIT0gTlVMTCk7Cj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+
PiArwqDCoMKgIFVLX0FTU0VSVChkZXYtPmRldl9vcHMpOwo+PiArwqDCoMKgIFVLX0FTU0VSVChk
ZXYtPmRldl9vcHMtPnF1ZXVlX3JlbGVhc2UpOwo+PiArwqDCoMKgIFVLX0FTU0VSVChxdWV1ZV9p
ZCA8IENPTkZJR19MSUJVS0JMS0RFVl9NQVhOQlFVRVVFUyk7Cj4+ICvCoMKgwqAgVUtfQVNTRVJU
KGRldi0+X2RhdGEtPnN0YXRlICE9IFVLX0JMS0RFVl9SVU5OSU5HKTsKPj4gKwo+PiArI2lmIENP
TkZJR19MSUJVS0JMS0RFVl9ESVNQQVRDSEVSVEhSRUFEUwo+PiArwqDCoMKgIGlmIChkZXYtPl9k
YXRhLT5xdWV1ZV9oYW5kbGVyW3F1ZXVlX2lkXS5jYWxsYmFjaykKPj4gK8KgwqDCoMKgwqDCoMKg
IF9kZXN0cm95X2V2ZW50X2hhbmRsZXIoJmRldi0+X2RhdGEtPnF1ZXVlX2hhbmRsZXJbcXVldWVf
aWRdKTsKPiAKPiBIdW0gbm90IHN1cmUgaWYgdGhlcmUgaXMgYSBjb25kaXRpb24gd2hlcmUgdGhp
cyBjb3VsZCBjcmFzaC4gTWF5YmUgeW91IAo+IHNob3VsZCBnZXQgdGhlIHF1ZXVlIHRocmVhZCBp
bnRvIGFuIGRlZmluZWQgc3RhdGUgYW5kIGRlc3Ryb3kgaXQgdGhlcmUuIAo+IEkgYW0ganVzdCB0
aGlua2luZyB3aGF0IGhhcHBlbnMgd2hlbiBpdCBpcyBnZXR0aW5nIGRlc3Ryb3llZCB3aGlsZSAK
PiBleGVjdXRpbmcgdGhlIHJlZ2lzdGVyZWQgZXZlbnQgY2FsbGJhY2suIE1heWJlIHdlIG5lZWQg
YSBjb25kaXRpb24gCj4gdmFyaWFibGUgbmV4dCB0byB0aGUgZXZlbnQgc2VtYXBob3JlIHdoaWNo
IGlzIGNoZWNrZWQgaWYgdGhlIHRocmVhZCAKPiBzaG91bGQgZXhpdCBieSBpdHNlbGYuCj4gQXQg
bGVhc3Qgd2Ugc2hvdWxkIHB1dCBhIC8qIFRPRE8gKi8gY29tbWVudCBoZXJlIGJlY2F1c2Ugd2Ug
bWF5IHJ1biBpbnRvIAo+IHByb2JsZW1zIGVzcGVjaWFsbHkgd2l0aCBwcmVlbXB0aXZlIHNjaGVk
dWxpbmcuIEl0IGlzIG9rYXkgdG8gc29sdmUgdGhpcyAKPiBwcm9ibGVtIGxhdGVyLgo+IAo+PiAr
I2VuZGlmCj4+ICsKPj4gK8KgwqDCoCByYyA9IGRldi0+ZGV2X29wcy0+cXVldWVfcmVsZWFzZShk
ZXYsIHF1ZXVlX2lkKTsKPiAKPiBVc2UgYHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKmAgYWxzbyBo
ZXJlIGFzIGNvbW1lbnRlZCBpbiBwYXRjaCA0LzYuCj4gCj4+ICvCoMKgwqAgaWYgKHJjKQo+PiAr
wqDCoMKgwqDCoMKgwqAgdWtfcHJfZXJyKCJGYWlsZWQgdG8gcmVsZWFzZSBibGtkZXYlIlBSSXUx
NiItcSUiUFJJdTE2IjogJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
ZGV2LT5fZGF0YS0+aWQsIHF1ZXVlX2lkLCByYyk7Cj4+ICvCoMKgwqAgZWxzZSB7Cj4+ICvCoMKg
wqDCoMKgwqDCoCB1a19wcl9pbmZvKCJSZWxlYXNlZCBibGtkZXYlIlBSSXUxNiItcSUiUFJJdTE2
IlxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPl9kYXRhLT5pZCwg
cXVldWVfaWQpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBkZXYtPl9xdWV1ZVtxdWV1ZV9pZF0g
PSBOVUxMOwo+PiArwqDCoMKgIH0KPj4gK30KPj4gKwo+PiArdm9pZCB1a19ibGtkZXZfZHJ2X3Vu
cmVnaXN0ZXIoc3RydWN0IHVrX2Jsa2RldiAqZGV2LCBzdHJ1Y3QgdWtfYWxsb2MgKmEpCj4+ICt7
Cj4+ICvCoMKgwqAgdWludDE2X3QgaWQ7Cj4+ICsKPj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2ICE9
IE5VTEwpOwo+PiArwqDCoMKgIFVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPj4gK8KgwqDCoCBVS19B
U1NFUlQoZGV2LT5fZGF0YS0+c3RhdGUgIT0gVUtfQkxLREVWX1JVTk5JTkcpOwo+PiArCj4+ICvC
oMKgwqAgaWQgPSBkZXYtPl9kYXRhLT5pZDsKPj4gKwo+PiArwqDCoMKgIHVrX2ZyZWUoYSwgZGV2
LT5fZGF0YSk7Cj4gCj4gTWF5YmUgaXQgaXMgYmV0dGVyIHRvIHN0b3JlIGB1a19hbGxvYyAqYWAg
b24gYF9kYXRhYCB3aGlsZSBhbGxvY2F0aW5nLiAKPiBUaGVuIHdlIHdvdWxkIG5vdCBuZWVkIHRo
ZSBhbGxvY2F0b3IgZnVuY3Rpb24gYXJndW1lbnQgYW55bW9yZS4KPiAKPj4gK8KgwqDCoCBVS19U
QUlMUV9SRU1PVkUoJnVrX2Jsa2Rldl9saXN0LCBkZXYsIF9saXN0KTsKPj4gK8KgwqDCoCBibGtk
ZXZfY291bnQtLTsKPj4gKwo+PiArwqDCoMKgIHVrX3ByX2luZm8oIlVucmVnaXN0ZXJlZCBibGtk
ZXYlIlBSSXUxNiI6ICVwXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIGlkLCBkZXYpOwo+PiArfQo+PiArCj4+ICt2b2lkIHVrX2Jsa2Rldl9jbG9zZShzdHJ1Y3Qg
dWtfYmxrZGV2ICpkZXYpCj4+ICt7Cj4+ICvCoMKgwqAgdWludDE2X3QgaWQ7Cj4+ICsKPj4gK8Kg
wqDCoCBVS19BU1NFUlQoZGV2KTsKPj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4+
ICvCoMKgwqAgVUtfQVNTRVJUKGRldi0+ZGV2X29wcyk7Cj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRl
di0+ZGV2X29wcy0+ZGV2X2Nsb3NlKTsKPj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2LT5fZGF0YS0+
c3RhdGUgIT0gVUtfQkxLREVWX1JVTk5JTkcpOwo+PiArCj4+ICvCoMKgwqAgaWQgPSBkZXYtPl9k
YXRhLT5pZDsKPj4gK8KgwqDCoCBkZXYtPmRldl9vcHMtPmRldl9jbG9zZShkZXYKSHVtLCBtYXli
ZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gdWtfYmxrZGV2X3VuY29uZmlndXJlKCkgd291bGQgYmUg
YSAKYmV0dGVyIGZpdCAoYW5kIHVuY29uZmlndXJlIGZvciB0aGUgY2FsbGJhY2spLgoKPj4gKwo+
PiArwqDCoMKgIHVrX3ByX2luZm8oIkNsb3NlZCBibGtkZXYlIlBSSXUxNiJcbiIsIGlkKTsKPj4g
K30KPj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrIGIvbGliL3VrYmxr
ZGV2L2V4cG9ydHN5bXMudWsKPj4gaW5kZXggMDI3NGRhZTguLjBhYmQ4ZTEwIDEwMDY0NAo+PiAt
LS0gYS9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+PiArKysgYi9saWIvdWtibGtkZXYvZXhw
b3J0c3ltcy51awo+PiBAQCAtMjIsMyArMjIsNyBAQCB1a19ibGtkZXZfcXVldWVfZmluaXNoX3Jl
cXMKPj4gwqAgdWtfYmxrZGV2X3N5bmNfaW8KPj4gwqAgdWtfYmxrZGV2X3JlYWQKPj4gwqAgdWtf
YmxrZGV2X3dyaXRlCj4+ICt1a19ibGtkZXZfc3RvcAo+PiArdWtfYmxrZGV2X3F1ZXVlX3JlbGVh
c2UKPj4gK3VrX2Jsa2Rldl9kcnZfdW5yZWdpc3Rlcgo+PiArdWtfYmxrZGV2X2Nsb3NlCj4+IGRp
ZmYgLS1naXQgYS9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXYuaCAKPj4gYi9saWIvdWti
bGtkZXYvaW5jbHVkZS91ay9ibGtkZXYuaAo+PiBpbmRleCBiYTRjMjc4NC4uMDA3ODkxOTggMTAw
NjQ0Cj4+IC0tLSBhL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldi5oCj4+ICsrKyBiL2xp
Yi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldi5oCj4+IEBAIC00NjgsNiArNDY4LDM3IEBAIGlu
dCB1a19ibGtkZXZfc3luY19pbyhzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4+IMKgICNlbmRpZgo+
PiArLyoqCj4+ICsgKiBTdG9wIGFuIFVuaWtyYWZ0IGJsb2NrIGRldmljZSwgYW5kIHNldCBpdHMg
c3RhdGUgdG8gCj4+IFVLX0JMS0RFVl9DT05GSUdVUkVECj4+ICsgKiBzdGF0ZS4KPj4gKyAqIFRo
ZSBkZXZpY2UgY2FuIGJlIHJlc3RhcnRlZCB3aXRoIGEgY2FsbCB0byB1a19ibGtkZXZfc3RhcnQo
KS4KPj4gKyAqCj4+ICsgKiBAcGFyYW0gZGV2Cj4+ICsgKsKgwqDCoCBUaGUgVW5pa3JhZnQgQmxv
Y2sgRGV2aWNlLgo+PiArICovCj4+ICtpbnQgdWtfYmxrZGV2X3N0b3Aoc3RydWN0IHVrX2Jsa2Rl
diAqZGV2KTsKPj4gKwo+PiArLyoqCj4+ICsgKiBGcmVlIGEgcXVldWUgYW5kIGl0cyBkZXNjcmlw
dG9ycyBmb3IgYW4gVW5pa3JhZnQgYmxvY2sgZGV2aWNlLgo+PiArICogQHBhcmFtIGRldgo+PiAr
ICrCoMKgwqAgVGhlIFVuaWtyYWZ0IEJsb2NrIERldmljZS4KPj4gKyAqIEBwYXJhbSBxdWV1ZV9p
ZAo+PiArICrCoMKgwqAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSB0byBzZXQgdXAuCj4+ICsgKsKg
wqDCoCBUaGUgdmFsdWUgbXVzdCBiZSBpbiByYW5nZSBbMCwgbmJfcXVldWUgLTFdIHByZXZpb3Vz
bHkgc3VwcGxpZWQKPj4gKyAqwqDCoMKgIHRvIHVrX2Jsa2Rldl9jb25maWd1cmUoKQo+PiArICov
Cj4+ICt2b2lkIHVrX2Jsa2Rldl9xdWV1ZV9yZWxlYXNlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwg
dWludDE2X3QgcXVldWVfaWQpOwo+IAo+IFVzZSBgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqYCBh
bHNvIGhlcmUuCj4gCj4+ICsKPj4gKy8qKgo+PiArICogQ2xvc2UgYSBzdG9wcGVkIFVuaWtyYWZ0
IGJsb2NrIGRldmljZS4KPj4gKyAqIFRoZSBmdW5jdGlvbiBmcmVlcyBhbGwgcmVzb3VyY2VzIGV4
Y2VwdCBmb3IKPj4gKyAqIHRoZSBvbmVzIG5lZWRlZCBieSB0aGUgVUtfQkxLREVWX1VOQ09ORklH
VVJFRCBzdGF0ZS4KPj4gKyAqCj4+ICsgKiBAcGFyYW0gZGV2Cj4+ICsgKsKgwqDCoCBUaGUgVW5p
a3JhZnQgQmxvY2sgRGV2aWNlLgo+PiArICovCj4+ICt2b2lkIHVrX2Jsa2Rldl9jbG9zZShzdHJ1
Y3QgdWtfYmxrZGV2ICpkZXYpOwo+PiArCj4+IMKgICNpZmRlZiBfX2NwbHVzcGx1cwo+PiDCoCB9
Cj4+IMKgICNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxr
ZGV2X2NvcmUuaCAKPj4gYi9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfY29yZS5oCj4+
IGluZGV4IDY2ODMxZjkwLi43MWZkZDM0YiAxMDA2NDQKPj4gLS0tIGEvbGliL3VrYmxrZGV2L2lu
Y2x1ZGUvdWsvYmxrZGV2X2NvcmUuaAo+PiArKysgYi9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9i
bGtkZXZfY29yZS5oCj4+IEBAIC0yMDQsNiArMjA0LDE2IEBAIHR5cGVkZWYgaW50IAo+PiAoKnVr
X2Jsa2Rldl9xdWV1ZV9zdWJtaXRfb25lX3QpKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPj4gwqAg
dHlwZWRlZiBpbnQgKCp1a19ibGtkZXZfcXVldWVfZmluaXNoX3JlcXNfdCkoc3RydWN0IHVrX2Js
a2RldiAqZGV2LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDE2X3QgcXVldWVfaWQpOwo+PiAr
LyoqIERyaXZlciBjYWxsYmFjayB0eXBlIHRvIHN0b3AgYW4gVW5pa3JhZnQgYmxvY2sgZGV2aWNl
LiAqLwo+PiArdHlwZWRlZiBpbnQgKCp1a19ibGtkZXZfc3RvcF90KShzdHJ1Y3QgdWtfYmxrZGV2
ICpkZXYpOwo+PiArCj4+ICsvKiogRHJpdmVyIGNhbGxiYWNrIHR5cGUgdG8gcmVsZWFzZSBhIHF1
ZXVlIG9mIGFuIFVuaWtyYWZ0IGJsb2NrIAo+PiBkZXZpY2UuICovCj4+ICt0eXBlZGVmIGludCAo
KnVrX2Jsa2Rldl9xdWV1ZV9yZWxlYXNlX3QpKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPj4gK8Kg
wqDCoMKgwqDCoMKgIHVpbnQxNl90IHF1ZXVlX2lkKTsKPiAKPiBVc2UgYHN0cnVjdCB1a19ibGtk
ZXZfcXVldWUgKmAgYWxzbyBoZXJlIGFzIGNvbW1lbnRlZCBpbiBwYXRjaCA0LzYuCj4gCj4+ICsK
Pj4gKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBjbG9zZSBhbiBVbmlrcmFmdCBibG9jayBk
ZXZpY2UuICovCj4+ICt0eXBlZGVmIHZvaWQgKCp1a19ibGtkZXZfY2xvc2VfdCkoc3RydWN0IHVr
X2Jsa2RldiAqZGV2KTsKPj4gKwo+PiDCoCBzdHJ1Y3QgdWtfYmxrZGV2X29wcyB7Cj4+IMKgwqDC
oMKgwqAgdWtfYmxrZGV2X2dldF9pbmZvX3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
Z2V0X2luZm87Cj4+IMKgwqDCoMKgwqAgdWtfYmxrZGV2X2NvbmZpZ3VyZV90wqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGRldl9jb25maWd1cmU7Cj4+IEBAIC0yMTEsNyArMjIxLDEwIEBA
IHN0cnVjdCB1a19ibGtkZXZfb3BzIHsKPj4gwqDCoMKgwqDCoCB1a19ibGtkZXZfcXVldWVfY29u
ZmlndXJlX3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHF1ZXVlX3NldHVwOwo+PiDCoMKgwqDCoMKg
IHVrX2Jsa2Rldl9xdWV1ZV9pbnRyX2VuYWJsZV90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBxdWV1
ZV9pbnRyX2VuYWJsZTsKPj4gwqDCoMKgwqDCoCB1a19ibGtkZXZfc3RhcnRfdMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfc3RhcnQ7Cj4+ICvCoMKgwqAgdWtfYmxrZGV2X3N0b3Bf
dMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfc3RvcDsKPj4gwqDCoMKgwqDCoCB1
a19ibGtkZXZfcXVldWVfaW50cl9kaXNhYmxlX3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHF1ZXVl
X2ludHJfZGlzYWJsZTsKPj4gK8KgwqDCoCB1a19ibGtkZXZfcXVldWVfcmVsZWFzZV90wqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBxdWV1ZV9yZWxlYXNlOwo+PiArwqDCoMKgIHVrX2Jsa2Rldl9jbG9z
ZV90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9jbG9zZTsKPj4gwqAgfTsKPj4g
wqAgLyoqCj4+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9ibGtkZXZfZHJp
dmVyLmggCj4+IGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2RyaXZlci5oCj4+IGlu
ZGV4IDM3YjVhM2U4Li5mMzYxZThmYiAxMDA2NDQKPj4gLS0tIGEvbGliL3VrYmxrZGV2L2luY2x1
ZGUvdWsvYmxrZGV2X2RyaXZlci5oCj4+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Js
a2Rldl9kcml2ZXIuaAo+PiBAQCAtOTgsNiArOTgsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVr
X2Jsa2Rldl9kcnZfcXVldWVfZXZlbnQoc3RydWN0IAo+PiB1a19ibGtkZXYgKmRldiwKPj4gwqAg
I2VuZGlmCj4+IMKgIH0KPj4gKy8qKgo+PiArICogRnJlZXMgdGhlIGRhdGEgYWxsb2NhdGVkIGZv
ciB0aGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+PiArICogUmVtb3ZlcyB0aGUgYmxvY2sgZGV2
aWNlIGZyb20gdGhlIGxpc3QuCj4+ICsgKgo+PiArICogQHBhcmFtIGRldgo+PiArICrCoMKgwqAg
VW5pa3JhZnQgYmxvY2sgZGV2aWNlCj4+ICsgKiBAcGFyYW0gYQo+PiArICrCoMKgwqAgQWxsb2Nh
dG9yIHVzZWQgZm9yIGxpYnVrYmxrZGV2IHByaXZhdGUgZGF0YSAoZGV2LT5fZGF0YSkuCj4+ICsg
Ki8KPj4gK3ZvaWQgdWtfYmxrZGV2X2Rydl91bnJlZ2lzdGVyKHN0cnVjdCB1a19ibGtkZXYgKmRl
diwgc3RydWN0IHVrX2FsbG9jIAo+PiAqYSk7Cj4+ICsKPj4gwqAgI2lmZGVmIF9fY3BsdXNwbHVz
Cj4+IMKgIH0KPj4gwqAgI2VuZGlmCj4+Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:31:08 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:31: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 1hhENg-0001pN-Ru; Sat, 29 Jun 2019 14:31:08 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhENf-0001pG-FF
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:31:07 +0000
X-Inumbo-ID: 86ce8076-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 86ce8076-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:31:05 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id c2so9123138wrm.8
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:31:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=s0/6czXY2sd2kpPOP19J5JfA6iWh5gfgb2Se4q6F1I8=;
 b=M1w3zeItxMA+uVjsLkeGvqMhGF9vMRqH3jSmvfSGgdPfUf7n0Kv5mxRJZChJ8QH/nR
 DXrN/XHS7cj5AWWSeaob84qKLUTMaquI5ky5gtNtsVaxNkBJw0I0Xz+wVIjBcfUrtQcC
 DwKmPuNfldm+oD187IwdYMOmiQ5NwNWa5Uew8a/E+FfKeEo8FVAW/wq9ew91bUOUbqP1
 Hw9tJ+OS1PPpw0Mt+OMyD3OThdPcJPrfDHtlCYWXeUNJ9P6iNQ4UFXi7IrhI0nOWMhXW
 8ZMQTcIKJj+AjMTW9MQkjj7s7nXbrTkTY3gAEj/32+WNrEoIgvBgIYq47++u7KBPOn9E
 CnjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=s0/6czXY2sd2kpPOP19J5JfA6iWh5gfgb2Se4q6F1I8=;
 b=Ifz9gMYWVAgBUybqtF8aMbYkezwKObRO2o5s8CuI26/AjsqfW8kdCdA3334wNufsgx
 ShxckAEhRXPRC/Mugr+iMjSptTMwdD5s/lXTrtetlXB06cRYDDGTRLtOaik1jb1b9dWn
 1i6hSQHvCEeCvTiF+zm6Wdq22EjtIuD3wClhMeVoB7iYAiHVv1sQGrIoOanJ5BVd3m69
 mzA4VMiZhI9vpzsWqb0aJQdeVXg/0uF6SjCnH+znTsXEFINWlMi4HcaY+NlKSnwaGH2i
 wxc6dNijwN9a/2AaIaKVjLGsE45EmHm2Ll4tjXynrSpy0rOd8mNbyXnbPo3tqDINW/HT
 5N/A==
X-Gm-Message-State: APjAAAVpkZjnbrjAYPmJax23QxivhdSNY2xPFjBzsjzaYw1aJfTSSc8F
 1EORi7hM7PEWYlKkcad1RT/tWJHj
X-Google-Smtp-Source: APXvYqwnWvR6XhEHv+CaOLJVc2FA9Rvk+8j+F9fcuD8F8pk+M1n/qpO1KoKdVscCv/yhq9ND4fzjkg==
X-Received: by 2002:a5d:50cc:: with SMTP id f12mr3012767wrt.329.1561818664576; 
 Sat, 29 Jun 2019 07:31:04 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id y16sm4210468wru.28.2019.06.29.07.31.03
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:31:04 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-2-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <198d6f57-e223-4987-180e-2447aa4b3ab5@gmail.com>
Date: Sat, 29 Jun 2019 17:31:03 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-2-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 1/6] Use vfs functions
 to allocate/free the resources used for a socket (Part I)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTQgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFRoaXMgcGFydCBjaGFuZ2VzIExX
SVAgc28gdGhhdCBpdCBsZXRzIHZmcyB0byBmcmVlIHRoZSByZXNvdXJjZXMKPiB1c2VkIHRvIGlu
dGVncmF0ZSBzb2NrZXRzIGluIHZmcy4KPiAKPiBSaWdodCBub3cgc29ja19uZXRfY2xvc2UgZnJl
ZXMgdGhlIHZmc2NvcmVfZmlsZSwgZGVudHJ5IGFuZCB2bm9kZQo+IHVzZWQgZm9yIHRoZSBzb2Nr
ZXQuIFRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIHNpbmNlIHZmcyB1bmxvY2tzIHRoZQo+IHZub2Rl
IGFmdGVyIGNhbGxpbmcgc29ja19uZXRfY2xvc2Ugc28gaXQgYWNjZXNzZXMgZnJlZWQgbWVtb3J5
Lgo+IAo+IFdlIHdpbGwgbGV0IHZmcyBoYW5kbGUgdGhlIGZyZWVpbmcgb2YgdGhlIHJlc291cmNl
cyB1c2VkIGZvciBhCj4gc29ja2V0IGJ5IHNldHRpbmcgdGhlIGRlbnRyeSByZWZjb3VudCB0byAx
IHN1Y2ggdGhhdCwgd2hlbiBhIHNvY2tldCBpcwo+IGNsb3NlZCAoc28gaXRzIHZmc2NvcmVfZmls
ZSBpcyBhbHNvIGNsb3NlZCksIHRoZSBkZW50cnkncyByZWZjb3VudAo+IGhpdHMgMCwgdGhlIGRl
bnRyeSBpcyBkZWxldGVkIHNvIHRoZSB2bm9kZSByZWZjb3VudCBoaXRzIDAKPiBhbmQgaXQgaXMg
YWxzbyBkZWxldGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFy
dW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMTIzICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmls
ZSBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t
Z2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggZTk1NzU4ZC4uY2JlMzAzMCAxMDA2
NDQKPiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAtMzcsNiArMzcsNyBA
QAo+ICAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KPiAgI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+
ICAjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgo+
ICAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KPiAg
I2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiBAQCAtNDgsOCArNDksMTYgQEAKPiAgI2RlZmlu
ZSBTT0NLX05FVF9TRVRfRVJSTk8oZXJyY29kZSkgXAo+ICAJKGVycm5vID0gLShlcnJjb2RlKSkK
PiAgCj4gKy8qCj4gKyAqIEJvZ3VzIG1vdW50IHBvaW50IHVzZWQgYnkgYWxsIHNvY2tldHMKPiAr
ICoKPiArICogV2UgbmVlZCB0aGlzIGJlY2F1c2Ugd2hlbiBkZWxldGluZyBhIHZub2RlCj4gKyAq
IHZmcyBjYWxscyB2ZnNfdW5idXN5IG9uIGl0cyBtb3VudCBwb2ludAo+ICsgKi8KPiArc3RhdGlj
IHN0cnVjdCBtb3VudCBzX21vdW50Owo+ICsKPiAgc3RydWN0IHNvY2tfbmV0X2ZpbGUgewo+IC0J
c3RydWN0IHZmc2NvcmVfZmlsZSB2ZnNjb3JlX2ZpbGU7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGU7Cj4gIAlpbnQgc29ja19mZDsKPiAgfTsKPiAgCj4gQEAgLTU4LDcgKzY3
LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqc29ja19uZXRfZmlsZV9n
ZXQoaW50IGZkKQo+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAJc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZm9zOwo+ICAKPiAtCWZvcyAgPSB2ZnNjb3JlX2dldF9maWxlKGZk
KTsKPiArCWZvcyA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwo+ICAJaWYgKCFmb3MpIHsKPiAgCQlM
V0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICAJCQkgICAgKCJmYWlsZWQgd2l0aCBpbnZhbGlk
IGRlc2NyaXB0b3JcbiIpKTsKPiBAQCAtNzEsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVj
dCBzb2NrX25ldF9maWxlICpzb2NrX25ldF9maWxlX2dldChpbnQgZmQpCj4gIAkJZmlsZSA9IEVS
UjJQVFIoLUVCQURGKTsKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gLQlmaWxlID0gX19jb250YWlu
ZXJvZihmb3MsIHN0cnVjdCBzb2NrX25ldF9maWxlLCB2ZnNjb3JlX2ZpbGUpOwo+ICsJZmlsZSA9
IGZvcy0+Zl9kYXRhOwo+ICBFWElUOgo+ICAJcmV0dXJuIGZpbGU7Cj4gIH0KPiBAQCAtODEsNiAr
OTAsNyBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQg
c29ja19mZCkKPiAgCWludCByZXQgPSAwOwo+ICAJaW50IHZmc19mZDsKPiAgCXN0cnVjdCBzb2Nr
X25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc19maWxl
ID0gTlVMTDsKPiAgCXN0cnVjdCBkZW50cnkgKnNfZGVudHJ5Owo+ICAJc3RydWN0IHZub2RlICpz
X3Zub2RlOwo+ICAKPiBAQCAtMTAxLDYgKzExMSwxMyBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxs
b2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQgc29ja19mZCkKPiAgCQkJICAgICgiRmFpbGVkIHRv
IGFsbG9jYXRlIHNvY2tldCBmaWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gIAkJZ290byBFUlJf
TUFMTE9DX0ZJTEU7Cj4gIAl9Cj4gKwl2ZnNfZmlsZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRf
ZGVmYXVsdCgpLCAxLCBzaXplb2YoKnZmc19maWxlKSk7Cj4gKwlpZiAoIXZmc19maWxlKSB7Cj4g
KwkJcmV0ID0gLUVOT01FTTsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkJ
KCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7
Cj4gKwkJZ290byBFUlJfTUFMTE9DX1ZGU19GSUxFOwo+ICsJfQo+ICAJc19kZW50cnkgPSB1a19j
YWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkpOwo+ICAJ
aWYgKCFzX2RlbnRyeSkgewo+ICAJCXJldCA9IC1FTk9NRU07Cj4gQEAgLTExNywyNiArMTM0LDQ2
IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2Nr
X2ZkKQo+ICAJfQo+ICAKPiAgCS8qIFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBmaWxsIG91dCBu
ZWNlc3NhcnkgZmllbGRzICovCj4gLQlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQgPSB2ZnNfZmQ7Cj4g
LQlmaWxlLT52ZnNjb3JlX2ZpbGUuZl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFEOwo+IC0J
ZmlsZS0+dmZzY29yZV9maWxlLmZfY291bnQgPSAxOwo+IC0JZmlsZS0+dmZzY29yZV9maWxlLmZf
ZGVudHJ5ID0gc19kZW50cnk7Cj4gKwl2ZnNfZmlsZS0+ZmQgPSB2ZnNfZmQ7Cj4gKwl2ZnNfZmls
ZS0+Zl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFEOwo+ICsJdmZzX2ZpbGUtPmZfY291bnQg
PSAxOwo+ICsJdmZzX2ZpbGUtPmZfZGF0YSA9IGZpbGU7Cj4gKwl2ZnNfZmlsZS0+Zl9kZW50cnkg
PSBzX2RlbnRyeTsKPiAgCj4gKwlzX2RlbnRyeS0+ZF9yZWZjbnQgPSAxOwo+ICAJc19kZW50cnkt
PmRfdm5vZGUgPSBzX3Zub2RlOwo+ICAKPiArCS8qCj4gKwkgKiBQcm92aWRlIGJvZ3VzIGJ1dCB2
YWxpZCBhZGRyZXNzZXMgdG8gYWxsb3cKPiArCSAqIHZmcyB0byByZW1vdmUgbm9kZXMgZnJvbSBs
aXN0cwo+ICsJICovCj4gKwlzX2RlbnRyeS0+ZF9saW5rLnBwcmV2ID0gJnNfZGVudHJ5LT5kX2xp
bmsubmV4dDsKPiArCXNfZGVudHJ5LT5kX25hbWVzX2xpbmsubmV4dCA9ICZzX2RlbnRyeS0+ZF9u
YW1lc19saW5rOwo+ICsJc19kZW50cnktPmRfbmFtZXNfbGluay5wcmV2ID0gJnNfZGVudHJ5LT5k
X25hbWVzX2xpbms7Cj4gKwo+ICAJc192bm9kZS0+dl9vcCA9IHZfb3A7Cj4gIAl1a19tdXRleF9p
bml0KCZzX3Zub2RlLT52X2xvY2spOwo+ICAJc192bm9kZS0+dl9yZWZjbnQgPSAxOwo+ICAJc192
bm9kZS0+dl9kYXRhID0gZmlsZTsKPiAgCXNfdm5vZGUtPnZfdHlwZSA9IFZTT0NLOwo+ICsJc192
bm9kZS0+dl9tb3VudCA9ICZzX21vdW50Owo+ICsJc19tb3VudC5tX2NvdW50Kys7Cj4gIAo+ICsJ
LyoKPiArCSAqIFByb3ZpZGUgYm9ndXMgYnV0IHZhbGlkIGFkZHJlc3NlcyB0byBhbGxvdwo+ICsJ
ICogdmZzIHRvIHJlbW92ZSBub2RlcyBmcm9tIGxpc3RzCj4gKwkgKi8KPiArCXNfdm5vZGUtPnZf
bGluay5uZXh0ID0gJnNfdm5vZGUtPnZfbGluazsKPiArCXNfdm5vZGUtPnZfbGluay5wcmV2ID0g
JnNfdm5vZGUtPnZfbGluazsKPiArCj4gKwlmaWxlLT52ZnNjb3JlX2ZpbGUgPSB2ZnNfZmlsZTsK
PiAgCWZpbGUtPnNvY2tfZmQgPSBzb2NrX2ZkOwo+ICAJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywgKCJBbGxvY2F0ZWQgc29ja2V0ICVkICgleClcbiIsCj4gLQkJCQkgICAgZmlsZS0+dmZzY29y
ZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gIAkJCQkgICAg
ZmlsZS0+c29ja19mZCkpOwo+ICAKPiAgCS8qIFN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIHdpdGhp
biB0aGUgdmZzIHN0cnVjdHVyZSAqLwo+IC0JcmV0ID0gdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19m
ZCwgJmZpbGUtPnZmc2NvcmVfZmlsZSk7Cj4gKwlyZXQgPSB2ZnNjb3JlX2luc3RhbGxfZmQodmZz
X2ZkLCBmaWxlLT52ZnNjb3JlX2ZpbGUpOwo+ICAJaWYgKHJldCkgewo+ICAJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCj4gIAkJCSAgICAoIkZhaWxlZCB0byBpbnN0YWxsIHNvY2tldCBmZFxu
IikpOwo+IEBAIC0xNTEsNiArMTg4LDggQEAgRVJSX1ZGU19JTlNUQUxMOgo+ICBFUlJfTUFMTE9D
X1ZOT0RFOgo+ICAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX2RlbnRyeSk7Cj4g
IEVSUl9NQUxMT0NfREVOVFJZOgo+ICsJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCB2
ZnNfZmlsZSk7Cj4gK0VSUl9NQUxMT0NfVkZTX0ZJTEU6Cj4gIAl1a19mcmVlKHVrX2FsbG9jX2dl
dF9kZWZhdWx0KCksIGZpbGUpOwo+ICBFUlJfTUFMTE9DX0ZJTEU6Cj4gIAl2ZnNjb3JlX3B1dF9m
ZCh2ZnNfZmQpOwo+IEBAIC0xNjAsMTUgKzE5OSwxNSBAQCBFUlJfRVhJVDoKPiAgfQo+ICAKPiAg
c3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gLQkJCSAg
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQo+ICsJCQkg
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKPiAgewo+IC0JaW50IHJldCA9IDA7
Cj4gKwlpbnQgcmV0Owo+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAK
PiAgCWZpbGUgPSBzX3Zub2RlLT52X2RhdGE7Cj4gIAlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVH
LCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCj4gIAkJCQkgICAgX19mdW5jX18sCj4gLQkJCQkg
ICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+
ZmQsCj4gIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICAKPiAgCVVLX0FTU0VSVCh2ZnNjb3Jl
X2ZpbGUtPmZfZGVudHJ5LT5kX3Zub2RlID09IHNfdm5vZGUpOwo+IEBAIC0xNzYsMTIgKzIxNSwx
MyBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiAg
Cj4gIAkvKiBDbG9zZSBhbmQgcmVsZWFzZSB0aGUgbHdpcCBzb2NrZXQgKi8KPiAgCXJldCA9IGx3
aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7Cj4gLQkvKiBGcmVlIHNvY2tldCB2bm9kZSAqLwo+IC0J
dWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2ZpbGUuZl9kZW50
cnktPmRfdm5vZGUpOwo+IC0JLyogRnJlZSBzb2NrZXQgZGVudHJ5ICovCj4gLQl1a19mcmVlKHVr
X2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSk7Cj4gLQkv
KiBGcmVlIHNvY2tldCBmaWxlICovCj4gKwo+ICsJLyoKPiArCSAqIEZyZWUgc29ja2V0IGZpbGUK
PiArCSAqIFRoZSByZXN0IG9mIHRoZSByZXNvdXJjZXMgd2lsbCBiZSBmcmVlZCBieSB2ZnMKPiAr
CSAqLwo+ICAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKPiArCj4gIAly
ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC0xOTQsNyArMjM0LDcgQEAgc3RhdGljIHNzaXplX3Qg
c29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJZmlsZSA9IHNfdm5vZGUt
PnZfZGF0YTsKPiAgCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9m
ZDolZFxuIiwKPiAgCQkJCSAgICBfX2Z1bmNfXywKPiAtCQkJCSAgICBmaWxlLT52ZnNjb3JlX2Zp
bGUuZmQsCj4gKwkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxl
LT5zb2NrX2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVp
b19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gIAlyZXR1cm4gcmV0Owo+IEBAIC0yMTAsMTYgKzI1
MCwxOSBAQCBzdGF0aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9k
ZSwKPiAgCWZpbGUgPSBzX3Zub2RlLT52X2RhdGE7Cj4gIAlMV0lQX0RFQlVHRihTT0NLRVRTX0RF
QlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCj4gIAkJCQkgICAgX19mdW5jX18sCj4gLQkJ
CQkgICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmls
ZS0+ZmQsCj4gIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICAJcmV0ID0gbHdpcF9yZWFkdihm
aWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gIAlyZXR1cm4g
cmV0Owo+ICB9Cj4gIAo+ICsjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5hY3Rp
dmVfdCkgdmZzY29yZV92b3BfbnVsbG9wKQo+ICsKPiAgc3RhdGljIHN0cnVjdCB2bm9wcyBzb2Nr
X25ldF9mb3BzID0gewo+ICAJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAo+ICAJLnZvcF93
cml0ZSA9IHNvY2tfbmV0X3dyaXRlLAo+ICAJLnZvcF9yZWFkICA9IHNvY2tfbmV0X3JlYWQsCj4g
Kwkudm9wX2luYWN0aXZlID0gc29ja19uZXRfaW5hY3RpdmUKPiAgfTsKPiAgCj4gIGludCBzb2Nr
ZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCkKPiBAQCAtMjk2LDcgKzMzOSw3
IEBAIGludCBhY2NlcHQoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICph
ZGRybGVuKQo+ICAJfQo+ICAJcmV0ID0gdmZzX2ZkOwo+ICBFWElUX0ZEUk9QOgo+IC0JdmZzY29y
ZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+
ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNv
dW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMzI4LDcgKzM3MSw3IEBA
IGludCBiaW5kKGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBu
YW1lbGVuKQo+ICAJCWdvdG8gRVhJVF9GRFJPUDsKPiAgCX0KPiAgRVhJVF9GRFJPUDoKPiAtCXZm
c2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQg
Ki8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSBy
ZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0zNTUsNyArMzk4
LDcgQEAgaW50IHBvbGwoc3RydWN0IHBvbGxmZCBmZHNbXSwgbmZkc190IG5mZHMsIGludCB0aW1l
b3V0KQo+ICAJCQl9Cj4gIAkJCWx3aXBfZmRzW2ldLmZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJ
bHdpcF9mZHNbaV0uZXZlbnRzID0gZmRzW2ldLmV2ZW50czsKPiAtCQkJdmZzY29yZV9wdXRfZmls
ZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJCQl2ZnNj
b3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8K
PiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC00MDgsNyArNDUxLDcgQEAgaW50IHNlbGVjdChpbnQgbmZk
cywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywK
PiAgCQkJaWYgKG1heGZkIDwgZmlsZS0+c29ja19mZCkKPiAgCQkJCW1heGZkID0gZmlsZS0+c29j
a19mZDsKPiAgCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZyZCk7Cj4gLQkJCXZmc2NvcmVfcHV0
X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJ
dmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50
ICovCj4gIAkJfQo+ICAJCWlmICh3cml0ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsK
PiAgCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwo+IEBAIC00MjMsNyArNDY2LDcgQEAg
aW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBm
ZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJaWYgKG1heGZkIDwgZmlsZS0+c29ja19mZCkKPiAgCQkJ
CW1heGZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZ3cik7
Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2Ug
cmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJCWlmIChleGNlcHRmZHMgJiYgRkRfSVNT
RVQoaSwgZXhjZXB0ZmRzKSkgewo+ICAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7Cj4g
QEAgLTQzOCw3ICs0ODEsNyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMs
IGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAJCQlpZiAobWF4ZmQgPCBm
aWxlLT5zb2NrX2ZkKQo+ICAJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwo+ICAJCQlGRF9TRVQo
ZmlsZS0+c29ja19mZCwgJnhjKTsKPiAtCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKGZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgCQl9Cj4gIAl9Cj4g
IAo+IEBAIC00NTksNyArNTAyLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFk
ZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJZmlsZSA9IHNv
Y2tfbmV0X2ZpbGVfZ2V0KGkpOwo+ICAJCQlpZiAoIUZEX0lTU0VUKGZpbGUtPnNvY2tfZmQsICZy
ZCkpCj4gIAkJCQlGRF9DTFIoaSwgcmVhZGZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9w
dXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJ
fQo+ICAJCWlmICh3cml0ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsKPiAgCQkJLyog
VGhpcyBsb29rdXAgY2FuJ3QgZmFpbCwgb3IgaXQgd291bGQgYWxyZWFkeSBoYXZlCj4gQEAgLTQ2
OCw3ICs1MTEsNyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3Nl
dCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAJCQlmaWxlID0gc29ja19uZXRfZmls
ZV9nZXQoaSk7Cj4gIAkJCWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJndyKSkKPiAgCQkJ
CUZEX0NMUihpLCB3cml0ZWZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2Nv
cmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShm
aWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJCWlm
IChleGNlcHRmZHMgJiYgRkRfSVNTRVQoaSwgZXhjZXB0ZmRzKSkgewo+ICAJCQkvKiBUaGlzIGxv
b2t1cCBjYW4ndCBmYWlsLCBvciBpdCB3b3VsZCBhbHJlYWR5IGhhdmUKPiBAQCAtNDc3LDcgKzUy
MCw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0
ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCj4gIAkJCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChp
KTsKPiAgCQkJaWYgKCFGRF9JU1NFVChmaWxlLT5zb2NrX2ZkLCAmeGMpKQo+ICAJCQkJRkRfQ0xS
KGksIGV4Y2VwdGZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmls
ZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJfQo+ICAKPiBA
QCAtNTAxLDcgKzU0NCw3IEBAIGludCBzaHV0ZG93bihpbnQgcywgaW50IGhvdykKPiAgCX0KPiAg
CS8qIFNodXRkb3duIG9mIHRoZSBkZXNjcmlwdG9yICovCj4gIAlyZXQgPSBsd2lwX3NodXRkb3du
KGZpbGUtPnNvY2tfZmQsIGhvdyk7Cj4gLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3Jl
X2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gKwl2ZnNjb3JlX3B1dF9maWxlKGZpbGUt
PnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgRVhJVDoKPiAgCXJldHVy
biByZXQ7Cj4gIH0KPiBAQCAtNTE5LDcgKzU2Miw3IEBAIGludCBnZXRwZWVybmFtZShpbnQgcywg
c3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCj4gIAkJZ290byBFWElU
Owo+ICAJfQo+ICAJcmV0ID0gbHdpcF9nZXRwZWVybmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBu
YW1lbGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxl
KTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+
IEBAIC01MzcsNyArNTgwLDcgQEAgaW50IGdldHNvY2tuYW1lKGludCBzLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxlbikKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAly
ZXQgPSBsd2lwX2dldHNvY2tuYW1lKGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5hbWVsZW4pOwo+IC0J
dmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3Vu
dCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNl
IHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTU1Niw3ICs1
OTksNyBAQCBpbnQgZ2V0c29ja29wdChpbnQgcywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgdm9p
ZCAqb3B0dmFsLCBzb2NrbGVuX3QgKm9wdGxlbikKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAly
ZXQgPSBsd2lwX2dldHNvY2tvcHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZh
bCwgb3B0bGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8q
IHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAg
fQo+IEBAIC01NzYsNyArNjE5LDcgQEAgaW50IHNldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwg
aW50IG9wdG5hbWUsIGNvbnN0IHZvaWQgKm9wdHZhbCwKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4g
IAlyZXQgPSBsd2lwX3NldHNvY2tvcHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9w
dHZhbCwgb3B0bGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7
IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsK
PiAgfQo+IEBAIC01OTUsNyArNjM4LDcgQEAgaW50IGNvbm5lY3QoaW50IHMsIGNvbnN0IHN0cnVj
dCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90IG5hbWVsZW4pCj4gIAkJZ290byBFWElUOwo+ICAJ
fQo+ICAJcmV0ID0gbHdpcF9jb25uZWN0KGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5hbWVsZW4pOwo+
IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTYxNCw3
ICs2NTcsNyBAQCBpbnQgbGlzdGVuKGludCBzLCBpbnQgYmFja2xvZykKPiAgCQlnb3RvIEVYSVQ7
Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX2xpc3RlbihmaWxlLT5zb2NrX2ZkLCBiYWNrbG9nKTsKPiAt
CXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291
bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02MzMsNyAr
Njc2LDcgQEAgaW50IHJlY3YoaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdz
KQo+ICAJCWdvdG8gRVhJVDsKPiAgCX0KPiAgCXJldCA9IGx3aXBfcmVjdihmaWxlLT5zb2NrX2Zk
LCBtZW0sIGxlbiwgZmxhZ3MpOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4g
cmV0Owo+ICB9Cj4gQEAgLTY1Myw3ICs2OTYsNyBAQCBpbnQgcmVjdmZyb20oaW50IHMsIHZvaWQg
Km1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAo+ICAJCWdvdG8gRVhJVDsKPiAgCX0KPiAgCXJl
dCA9IGx3aXBfcmVjdmZyb20oZmlsZS0+c29ja19mZCwgbWVtLCBsZW4sIGZsYWdzLCBmcm9tLCBm
cm9tbGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxl
KTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+
IEBAIC02NzIsNyArNzE1LDcgQEAgaW50IHNlbmQoaW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIs
IHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpCj4gIAkJZ290byBFWElUOwo+ICAJfQo+ICAJcmV0ID0g
bHdpcF9zZW5kKGZpbGUtPnNvY2tfZmQsIGRhdGFwdHIsIHNpemUsIGZsYWdzKTsKPiAtCXZmc2Nv
cmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8K
PiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02OTEsNyArNzM0LDcg
QEAgaW50IHNlbmRtc2coaW50IHMsIGNvbnN0IHN0cnVjdCBtc2doZHIgKm1lc3NhZ2UsIGludCBm
bGFncykKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX3NlbmRtc2coZmlsZS0+
c29ja19mZCwgbWVzc2FnZSwgZmxhZ3MpOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZz
Y29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShm
aWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAly
ZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTcxMSw3ICs3NTQsNyBAQCBpbnQgc2VuZHRvKGludCBzLCBj
b25zdCB2b2lkICpkYXRhcHRyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLAo+ICAJCWdvdG8gRVhJ
VDsKPiAgCX0KPiAgCXJldCA9IGx3aXBfc2VuZHRvKGZpbGUtPnNvY2tfZmQsIGRhdGFwdHIsIHNp
emUsIGZsYWdzLCB0bywgdG9sZW4pOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxl
LT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1
cm4gcmV0Owo+ICB9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:31:20 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:31: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 1hhENr-0001qq-V7; Sat, 29 Jun 2019 14:31:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhENr-0001ql-34
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:31:19 +0000
X-Inumbo-ID: 8d69b401-9a7a-11e9-8980-bc764e045a96
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 8d69b401-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:31:16 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id g135so11712920wme.4
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:31:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=s0/6czXY2sd2kpPOP19J5JfA6iWh5gfgb2Se4q6F1I8=;
 b=NMBsn/AWEmPefHEh9KTcbQaJMKVBgnZpbqyDQ7tKLM18qoa+9R+jx9UpRExzbxBeYM
 tAwwdk9cz3AiRPzQz+U0guK2RPzfYdc+d3kTd0eWL8JlidgduH8ZVAxXXugXUQCmkptu
 5FHutBjS9tK4AlbMiwaf3qFpAbM4Pilj28bEuJ+RfC0qJMHrPY+QwXNt5t1prBlALAAm
 /4lJHt00vsf+MSozPBfHQ5yt1kB4PefQyBul/leZNlRcxiP7FYOpzhUqwvO32ruNN5Hp
 hwLKWjXOwxyKSzodeQmieUSIOfl7+PYfiSv46mVMZzHVrHWenEO/DkPYciFXNAmIkDLb
 xt/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=s0/6czXY2sd2kpPOP19J5JfA6iWh5gfgb2Se4q6F1I8=;
 b=RwbOa+moLs1tTL32JkgyRDhwmmPCGrG9RfNWmPpMCcSuev325zI14nrfAILrtkqoxM
 ZftPysvXVPrlYldDm7ScNAwZCl4pTxpOkdARrgO7sWfKBZWirYU2CEc5NNBTXNdspidd
 MC/7AIvl0W0RtVZWNJ5/kGtGWsLYoksVc1hf29d1zJVq86GbnQREbEsoucx5nNS1TorV
 Tro09AgycpNX6pwf1yhH4tQpDAhk+oDTqynhWDs48t0BiAgS2ifaq2mZlt0dzAINdesF
 J58Llqj33I6n/bgKocnT5YCZbYvYvTrs2DkxItHkjYzDTY7al+/Kv4ZXoiYYxE+TBuK5
 WYyQ==
X-Gm-Message-State: APjAAAXUxayS0byD1hV6n2dDGuo9PSbb6VNCaSSFnSfFx2wQmsU+3kBO
 wajugHjVxRLYh+OEKpAtE/E=
X-Google-Smtp-Source: APXvYqwMSQreBF4diqQbb3lU0NdunLnAaZpgrlzFVSHbxRHmCZ8eNdhdFdv4vMueiU5MmJirHCloNA==
X-Received: by 2002:a1c:1a06:: with SMTP id a6mr10905804wma.128.1561818675618; 
 Sat, 29 Jun 2019 07:31:15 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id o6sm11948641wra.27.2019.06.29.07.31.14
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:31:15 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-2-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <af6c28a9-286f-710e-9cd7-70bc6308c1e1@gmail.com>
Date: Sat, 29 Jun 2019 17:31:14 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-2-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 1/6] Use vfs functions
 to allocate/free the resources used for a socket (Part I)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTQgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFRoaXMgcGFydCBjaGFuZ2VzIExX
SVAgc28gdGhhdCBpdCBsZXRzIHZmcyB0byBmcmVlIHRoZSByZXNvdXJjZXMKPiB1c2VkIHRvIGlu
dGVncmF0ZSBzb2NrZXRzIGluIHZmcy4KPiAKPiBSaWdodCBub3cgc29ja19uZXRfY2xvc2UgZnJl
ZXMgdGhlIHZmc2NvcmVfZmlsZSwgZGVudHJ5IGFuZCB2bm9kZQo+IHVzZWQgZm9yIHRoZSBzb2Nr
ZXQuIFRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIHNpbmNlIHZmcyB1bmxvY2tzIHRoZQo+IHZub2Rl
IGFmdGVyIGNhbGxpbmcgc29ja19uZXRfY2xvc2Ugc28gaXQgYWNjZXNzZXMgZnJlZWQgbWVtb3J5
Lgo+IAo+IFdlIHdpbGwgbGV0IHZmcyBoYW5kbGUgdGhlIGZyZWVpbmcgb2YgdGhlIHJlc291cmNl
cyB1c2VkIGZvciBhCj4gc29ja2V0IGJ5IHNldHRpbmcgdGhlIGRlbnRyeSByZWZjb3VudCB0byAx
IHN1Y2ggdGhhdCwgd2hlbiBhIHNvY2tldCBpcwo+IGNsb3NlZCAoc28gaXRzIHZmc2NvcmVfZmls
ZSBpcyBhbHNvIGNsb3NlZCksIHRoZSBkZW50cnkncyByZWZjb3VudAo+IGhpdHMgMCwgdGhlIGRl
bnRyeSBpcyBkZWxldGVkIHNvIHRoZSB2bm9kZSByZWZjb3VudCBoaXRzIDAKPiBhbmQgaXQgaXMg
YWxzbyBkZWxldGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFy
dW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMTIzICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmls
ZSBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t
Z2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggZTk1NzU4ZC4uY2JlMzAzMCAxMDA2
NDQKPiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAtMzcsNiArMzcsNyBA
QAo+ICAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KPiAgI2luY2x1ZGUgPHZmc2NvcmUvZmlsZS5oPgo+
ICAjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9tb3VudC5oPgo+
ICAjaW5jbHVkZSA8dmZzY29yZS92bm9kZS5oPgo+ICAjaW5jbHVkZSA8dWsvYWxsb2MuaD4KPiAg
I2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiBAQCAtNDgsOCArNDksMTYgQEAKPiAgI2RlZmlu
ZSBTT0NLX05FVF9TRVRfRVJSTk8oZXJyY29kZSkgXAo+ICAJKGVycm5vID0gLShlcnJjb2RlKSkK
PiAgCj4gKy8qCj4gKyAqIEJvZ3VzIG1vdW50IHBvaW50IHVzZWQgYnkgYWxsIHNvY2tldHMKPiAr
ICoKPiArICogV2UgbmVlZCB0aGlzIGJlY2F1c2Ugd2hlbiBkZWxldGluZyBhIHZub2RlCj4gKyAq
IHZmcyBjYWxscyB2ZnNfdW5idXN5IG9uIGl0cyBtb3VudCBwb2ludAo+ICsgKi8KPiArc3RhdGlj
IHN0cnVjdCBtb3VudCBzX21vdW50Owo+ICsKPiAgc3RydWN0IHNvY2tfbmV0X2ZpbGUgewo+IC0J
c3RydWN0IHZmc2NvcmVfZmlsZSB2ZnNjb3JlX2ZpbGU7Cj4gKwlzdHJ1Y3QgdmZzY29yZV9maWxl
ICp2ZnNjb3JlX2ZpbGU7Cj4gIAlpbnQgc29ja19mZDsKPiAgfTsKPiAgCj4gQEAgLTU4LDcgKzY3
LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqc29ja19uZXRfZmlsZV9n
ZXQoaW50IGZkKQo+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAJc3Ry
dWN0IHZmc2NvcmVfZmlsZSAqZm9zOwo+ICAKPiAtCWZvcyAgPSB2ZnNjb3JlX2dldF9maWxlKGZk
KTsKPiArCWZvcyA9IHZmc2NvcmVfZ2V0X2ZpbGUoZmQpOwo+ICAJaWYgKCFmb3MpIHsKPiAgCQlM
V0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICAJCQkgICAgKCJmYWlsZWQgd2l0aCBpbnZhbGlk
IGRlc2NyaXB0b3JcbiIpKTsKPiBAQCAtNzEsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVj
dCBzb2NrX25ldF9maWxlICpzb2NrX25ldF9maWxlX2dldChpbnQgZmQpCj4gIAkJZmlsZSA9IEVS
UjJQVFIoLUVCQURGKTsKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gLQlmaWxlID0gX19jb250YWlu
ZXJvZihmb3MsIHN0cnVjdCBzb2NrX25ldF9maWxlLCB2ZnNjb3JlX2ZpbGUpOwo+ICsJZmlsZSA9
IGZvcy0+Zl9kYXRhOwo+ICBFWElUOgo+ICAJcmV0dXJuIGZpbGU7Cj4gIH0KPiBAQCAtODEsNiAr
OTAsNyBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQg
c29ja19mZCkKPiAgCWludCByZXQgPSAwOwo+ICAJaW50IHZmc19mZDsKPiAgCXN0cnVjdCBzb2Nr
X25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc19maWxl
ID0gTlVMTDsKPiAgCXN0cnVjdCBkZW50cnkgKnNfZGVudHJ5Owo+ICAJc3RydWN0IHZub2RlICpz
X3Zub2RlOwo+ICAKPiBAQCAtMTAxLDYgKzExMSwxMyBAQCBzdGF0aWMgaW50IHNvY2tfZmRfYWxs
b2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQgc29ja19mZCkKPiAgCQkJICAgICgiRmFpbGVkIHRv
IGFsbG9jYXRlIHNvY2tldCBmaWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7Cj4gIAkJZ290byBFUlJf
TUFMTE9DX0ZJTEU7Cj4gIAl9Cj4gKwl2ZnNfZmlsZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRf
ZGVmYXVsdCgpLCAxLCBzaXplb2YoKnZmc19maWxlKSk7Cj4gKwlpZiAoIXZmc19maWxlKSB7Cj4g
KwkJcmV0ID0gLUVOT01FTTsKPiArCQlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVHLAo+ICsJCQkJ
KCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2YgbWVtb3J5XG4iKSk7
Cj4gKwkJZ290byBFUlJfTUFMTE9DX1ZGU19GSUxFOwo+ICsJfQo+ICAJc19kZW50cnkgPSB1a19j
YWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkpOwo+ICAJ
aWYgKCFzX2RlbnRyeSkgewo+ICAJCXJldCA9IC1FTk9NRU07Cj4gQEAgLTExNywyNiArMTM0LDQ2
IEBAIHN0YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2Nr
X2ZkKQo+ICAJfQo+ICAKPiAgCS8qIFB1dCB0aGluZ3MgdG9nZXRoZXIsIGFuZCBmaWxsIG91dCBu
ZWNlc3NhcnkgZmllbGRzICovCj4gLQlmaWxlLT52ZnNjb3JlX2ZpbGUuZmQgPSB2ZnNfZmQ7Cj4g
LQlmaWxlLT52ZnNjb3JlX2ZpbGUuZl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFEOwo+IC0J
ZmlsZS0+dmZzY29yZV9maWxlLmZfY291bnQgPSAxOwo+IC0JZmlsZS0+dmZzY29yZV9maWxlLmZf
ZGVudHJ5ID0gc19kZW50cnk7Cj4gKwl2ZnNfZmlsZS0+ZmQgPSB2ZnNfZmQ7Cj4gKwl2ZnNfZmls
ZS0+Zl9mbGFncyA9IFVLX0ZXUklURSB8IFVLX0ZSRUFEOwo+ICsJdmZzX2ZpbGUtPmZfY291bnQg
PSAxOwo+ICsJdmZzX2ZpbGUtPmZfZGF0YSA9IGZpbGU7Cj4gKwl2ZnNfZmlsZS0+Zl9kZW50cnkg
PSBzX2RlbnRyeTsKPiAgCj4gKwlzX2RlbnRyeS0+ZF9yZWZjbnQgPSAxOwo+ICAJc19kZW50cnkt
PmRfdm5vZGUgPSBzX3Zub2RlOwo+ICAKPiArCS8qCj4gKwkgKiBQcm92aWRlIGJvZ3VzIGJ1dCB2
YWxpZCBhZGRyZXNzZXMgdG8gYWxsb3cKPiArCSAqIHZmcyB0byByZW1vdmUgbm9kZXMgZnJvbSBs
aXN0cwo+ICsJICovCj4gKwlzX2RlbnRyeS0+ZF9saW5rLnBwcmV2ID0gJnNfZGVudHJ5LT5kX2xp
bmsubmV4dDsKPiArCXNfZGVudHJ5LT5kX25hbWVzX2xpbmsubmV4dCA9ICZzX2RlbnRyeS0+ZF9u
YW1lc19saW5rOwo+ICsJc19kZW50cnktPmRfbmFtZXNfbGluay5wcmV2ID0gJnNfZGVudHJ5LT5k
X25hbWVzX2xpbms7Cj4gKwo+ICAJc192bm9kZS0+dl9vcCA9IHZfb3A7Cj4gIAl1a19tdXRleF9p
bml0KCZzX3Zub2RlLT52X2xvY2spOwo+ICAJc192bm9kZS0+dl9yZWZjbnQgPSAxOwo+ICAJc192
bm9kZS0+dl9kYXRhID0gZmlsZTsKPiAgCXNfdm5vZGUtPnZfdHlwZSA9IFZTT0NLOwo+ICsJc192
bm9kZS0+dl9tb3VudCA9ICZzX21vdW50Owo+ICsJc19tb3VudC5tX2NvdW50Kys7Cj4gIAo+ICsJ
LyoKPiArCSAqIFByb3ZpZGUgYm9ndXMgYnV0IHZhbGlkIGFkZHJlc3NlcyB0byBhbGxvdwo+ICsJ
ICogdmZzIHRvIHJlbW92ZSBub2RlcyBmcm9tIGxpc3RzCj4gKwkgKi8KPiArCXNfdm5vZGUtPnZf
bGluay5uZXh0ID0gJnNfdm5vZGUtPnZfbGluazsKPiArCXNfdm5vZGUtPnZfbGluay5wcmV2ID0g
JnNfdm5vZGUtPnZfbGluazsKPiArCj4gKwlmaWxlLT52ZnNjb3JlX2ZpbGUgPSB2ZnNfZmlsZTsK
PiAgCWZpbGUtPnNvY2tfZmQgPSBzb2NrX2ZkOwo+ICAJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJV
RywgKCJBbGxvY2F0ZWQgc29ja2V0ICVkICgleClcbiIsCj4gLQkJCQkgICAgZmlsZS0+dmZzY29y
ZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gIAkJCQkgICAg
ZmlsZS0+c29ja19mZCkpOwo+ICAKPiAgCS8qIFN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIHdpdGhp
biB0aGUgdmZzIHN0cnVjdHVyZSAqLwo+IC0JcmV0ID0gdmZzY29yZV9pbnN0YWxsX2ZkKHZmc19m
ZCwgJmZpbGUtPnZmc2NvcmVfZmlsZSk7Cj4gKwlyZXQgPSB2ZnNjb3JlX2luc3RhbGxfZmQodmZz
X2ZkLCBmaWxlLT52ZnNjb3JlX2ZpbGUpOwo+ICAJaWYgKHJldCkgewo+ICAJCUxXSVBfREVCVUdG
KFNPQ0tFVFNfREVCVUcsCj4gIAkJCSAgICAoIkZhaWxlZCB0byBpbnN0YWxsIHNvY2tldCBmZFxu
IikpOwo+IEBAIC0xNTEsNiArMTg4LDggQEAgRVJSX1ZGU19JTlNUQUxMOgo+ICBFUlJfTUFMTE9D
X1ZOT0RFOgo+ICAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX2RlbnRyeSk7Cj4g
IEVSUl9NQUxMT0NfREVOVFJZOgo+ICsJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCB2
ZnNfZmlsZSk7Cj4gK0VSUl9NQUxMT0NfVkZTX0ZJTEU6Cj4gIAl1a19mcmVlKHVrX2FsbG9jX2dl
dF9kZWZhdWx0KCksIGZpbGUpOwo+ICBFUlJfTUFMTE9DX0ZJTEU6Cj4gIAl2ZnNjb3JlX3B1dF9m
ZCh2ZnNfZmQpOwo+IEBAIC0xNjAsMTUgKzE5OSwxNSBAQCBFUlJfRVhJVDoKPiAgfQo+ICAKPiAg
c3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gLQkJCSAg
c3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fbWF5YmVfdW51c2VkKQo+ICsJCQkg
IHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSkKPiAgewo+IC0JaW50IHJldCA9IDA7
Cj4gKwlpbnQgcmV0Owo+ICAJc3RydWN0IHNvY2tfbmV0X2ZpbGUgKmZpbGUgPSBOVUxMOwo+ICAK
PiAgCWZpbGUgPSBzX3Zub2RlLT52X2RhdGE7Cj4gIAlMV0lQX0RFQlVHRihTT0NLRVRTX0RFQlVH
LCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCj4gIAkJCQkgICAgX19mdW5jX18sCj4gLQkJCQkg
ICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmlsZS0+
ZmQsCj4gIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICAKPiAgCVVLX0FTU0VSVCh2ZnNjb3Jl
X2ZpbGUtPmZfZGVudHJ5LT5kX3Zub2RlID09IHNfdm5vZGUpOwo+IEBAIC0xNzYsMTIgKzIxNSwx
MyBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiAg
Cj4gIAkvKiBDbG9zZSBhbmQgcmVsZWFzZSB0aGUgbHdpcCBzb2NrZXQgKi8KPiAgCXJldCA9IGx3
aXBfY2xvc2UoZmlsZS0+c29ja19mZCk7Cj4gLQkvKiBGcmVlIHNvY2tldCB2bm9kZSAqLwo+IC0J
dWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlLT52ZnNjb3JlX2ZpbGUuZl9kZW50
cnktPmRfdm5vZGUpOwo+IC0JLyogRnJlZSBzb2NrZXQgZGVudHJ5ICovCj4gLQl1a19mcmVlKHVr
X2FsbG9jX2dldF9kZWZhdWx0KCksIGZpbGUtPnZmc2NvcmVfZmlsZS5mX2RlbnRyeSk7Cj4gLQkv
KiBGcmVlIHNvY2tldCBmaWxlICovCj4gKwo+ICsJLyoKPiArCSAqIEZyZWUgc29ja2V0IGZpbGUK
PiArCSAqIFRoZSByZXN0IG9mIHRoZSByZXNvdXJjZXMgd2lsbCBiZSBmcmVlZCBieSB2ZnMKPiAr
CSAqLwo+ICAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKPiArCj4gIAly
ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC0xOTQsNyArMjM0LDcgQEAgc3RhdGljIHNzaXplX3Qg
c29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJZmlsZSA9IHNfdm5vZGUt
PnZfZGF0YTsKPiAgCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsICgiJXMgZmQ6JWQgbHdpcF9m
ZDolZFxuIiwKPiAgCQkJCSAgICBfX2Z1bmNfXywKPiAtCQkJCSAgICBmaWxlLT52ZnNjb3JlX2Zp
bGUuZmQsCj4gKwkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxl
LT5zb2NrX2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3dyaXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVp
b19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gIAlyZXR1cm4gcmV0Owo+IEBAIC0yMTAsMTYgKzI1
MCwxOSBAQCBzdGF0aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9k
ZSwKPiAgCWZpbGUgPSBzX3Zub2RlLT52X2RhdGE7Cj4gIAlMV0lQX0RFQlVHRihTT0NLRVRTX0RF
QlVHLCAoIiVzIGZkOiVkIGx3aXBfZmQ6JWRcbiIsCj4gIAkJCQkgICAgX19mdW5jX18sCj4gLQkJ
CQkgICAgZmlsZS0+dmZzY29yZV9maWxlLmZkLAo+ICsJCQkJICAgIGZpbGUtPnZmc2NvcmVfZmls
ZS0+ZmQsCj4gIAkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICAJcmV0ID0gbHdpcF9yZWFkdihm
aWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gIAlyZXR1cm4g
cmV0Owo+ICB9Cj4gIAo+ICsjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5hY3Rp
dmVfdCkgdmZzY29yZV92b3BfbnVsbG9wKQo+ICsKPiAgc3RhdGljIHN0cnVjdCB2bm9wcyBzb2Nr
X25ldF9mb3BzID0gewo+ICAJLnZvcF9jbG9zZSA9IHNvY2tfbmV0X2Nsb3NlLAo+ICAJLnZvcF93
cml0ZSA9IHNvY2tfbmV0X3dyaXRlLAo+ICAJLnZvcF9yZWFkICA9IHNvY2tfbmV0X3JlYWQsCj4g
Kwkudm9wX2luYWN0aXZlID0gc29ja19uZXRfaW5hY3RpdmUKPiAgfTsKPiAgCj4gIGludCBzb2Nr
ZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCkKPiBAQCAtMjk2LDcgKzMzOSw3
IEBAIGludCBhY2NlcHQoaW50IHMsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICph
ZGRybGVuKQo+ICAJfQo+ICAJcmV0ID0gdmZzX2ZkOwo+ICBFWElUX0ZEUk9QOgo+IC0JdmZzY29y
ZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+
ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNv
dW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMzI4LDcgKzM3MSw3IEBA
IGludCBiaW5kKGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBu
YW1lbGVuKQo+ICAJCWdvdG8gRVhJVF9GRFJPUDsKPiAgCX0KPiAgRVhJVF9GRFJPUDoKPiAtCXZm
c2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQg
Ki8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSBy
ZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0zNTUsNyArMzk4
LDcgQEAgaW50IHBvbGwoc3RydWN0IHBvbGxmZCBmZHNbXSwgbmZkc190IG5mZHMsIGludCB0aW1l
b3V0KQo+ICAJCQl9Cj4gIAkJCWx3aXBfZmRzW2ldLmZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJ
bHdpcF9mZHNbaV0uZXZlbnRzID0gZmRzW2ldLmV2ZW50czsKPiAtCQkJdmZzY29yZV9wdXRfZmls
ZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJCQl2ZnNj
b3JlX3B1dF9maWxlKGZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8K
PiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC00MDgsNyArNDUxLDcgQEAgaW50IHNlbGVjdChpbnQgbmZk
cywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywK
PiAgCQkJaWYgKG1heGZkIDwgZmlsZS0+c29ja19mZCkKPiAgCQkJCW1heGZkID0gZmlsZS0+c29j
a19mZDsKPiAgCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZyZCk7Cj4gLQkJCXZmc2NvcmVfcHV0
X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJ
dmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50
ICovCj4gIAkJfQo+ICAJCWlmICh3cml0ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsK
PiAgCQkJZmlsZSA9IHNvY2tfbmV0X2ZpbGVfZ2V0KGkpOwo+IEBAIC00MjMsNyArNDY2LDcgQEAg
aW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBm
ZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJaWYgKG1heGZkIDwgZmlsZS0+c29ja19mZCkKPiAgCQkJ
CW1heGZkID0gZmlsZS0+c29ja19mZDsKPiAgCQkJRkRfU0VUKGZpbGUtPnNvY2tfZmQsICZ3cik7
Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2Ug
cmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAv
KiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJCWlmIChleGNlcHRmZHMgJiYgRkRfSVNT
RVQoaSwgZXhjZXB0ZmRzKSkgewo+ICAJCQlmaWxlID0gc29ja19uZXRfZmlsZV9nZXQoaSk7Cj4g
QEAgLTQzOCw3ICs0ODEsNyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMs
IGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAJCQlpZiAobWF4ZmQgPCBm
aWxlLT5zb2NrX2ZkKQo+ICAJCQkJbWF4ZmQgPSBmaWxlLT5zb2NrX2ZkOwo+ICAJCQlGRF9TRVQo
ZmlsZS0+c29ja19mZCwgJnhjKTsKPiAtCQkJdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJCQl2ZnNjb3JlX3B1dF9maWxlKGZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgCQl9Cj4gIAl9Cj4g
IAo+IEBAIC00NTksNyArNTAyLDcgQEAgaW50IHNlbGVjdChpbnQgbmZkcywgZmRfc2V0ICpyZWFk
ZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcywKPiAgCQkJZmlsZSA9IHNv
Y2tfbmV0X2ZpbGVfZ2V0KGkpOwo+ICAJCQlpZiAoIUZEX0lTU0VUKGZpbGUtPnNvY2tfZmQsICZy
ZCkpCj4gIAkJCQlGRF9DTFIoaSwgcmVhZGZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZp
bGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9w
dXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJ
fQo+ICAJCWlmICh3cml0ZWZkcyAmJiBGRF9JU1NFVChpLCB3cml0ZWZkcykpIHsKPiAgCQkJLyog
VGhpcyBsb29rdXAgY2FuJ3QgZmFpbCwgb3IgaXQgd291bGQgYWxyZWFkeSBoYXZlCj4gQEAgLTQ2
OCw3ICs1MTEsNyBAQCBpbnQgc2VsZWN0KGludCBuZmRzLCBmZF9zZXQgKnJlYWRmZHMsIGZkX3Nl
dCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzLAo+ICAJCQlmaWxlID0gc29ja19uZXRfZmls
ZV9nZXQoaSk7Cj4gIAkJCWlmICghRkRfSVNTRVQoZmlsZS0+c29ja19mZCwgJndyKSkKPiAgCQkJ
CUZEX0NMUihpLCB3cml0ZWZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2Nv
cmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShm
aWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJCWlm
IChleGNlcHRmZHMgJiYgRkRfSVNTRVQoaSwgZXhjZXB0ZmRzKSkgewo+ICAJCQkvKiBUaGlzIGxv
b2t1cCBjYW4ndCBmYWlsLCBvciBpdCB3b3VsZCBhbHJlYWR5IGhhdmUKPiBAQCAtNDc3LDcgKzUy
MCw3IEBAIGludCBzZWxlY3QoaW50IG5mZHMsIGZkX3NldCAqcmVhZGZkcywgZmRfc2V0ICp3cml0
ZWZkcywgZmRfc2V0ICpleGNlcHRmZHMsCj4gIAkJCWZpbGUgPSBzb2NrX25ldF9maWxlX2dldChp
KTsKPiAgCQkJaWYgKCFGRF9JU1NFVChmaWxlLT5zb2NrX2ZkLCAmeGMpKQo+ICAJCQkJRkRfQ0xS
KGksIGV4Y2VwdGZkcyk7Cj4gLQkJCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmls
ZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCQkJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIAkJfQo+ICAJfQo+ICAKPiBA
QCAtNTAxLDcgKzU0NCw3IEBAIGludCBzaHV0ZG93bihpbnQgcywgaW50IGhvdykKPiAgCX0KPiAg
CS8qIFNodXRkb3duIG9mIHRoZSBkZXNjcmlwdG9yICovCj4gIAlyZXQgPSBsd2lwX3NodXRkb3du
KGZpbGUtPnNvY2tfZmQsIGhvdyk7Cj4gLQl2ZnNjb3JlX3B1dF9maWxlKCZmaWxlLT52ZnNjb3Jl
X2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gKwl2ZnNjb3JlX3B1dF9maWxlKGZpbGUt
PnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiAgRVhJVDoKPiAgCXJldHVy
biByZXQ7Cj4gIH0KPiBAQCAtNTE5LDcgKzU2Miw3IEBAIGludCBnZXRwZWVybmFtZShpbnQgcywg
c3RydWN0IHNvY2thZGRyICpuYW1lLCBzb2NrbGVuX3QgKm5hbWVsZW4pCj4gIAkJZ290byBFWElU
Owo+ICAJfQo+ICAJcmV0ID0gbHdpcF9nZXRwZWVybmFtZShmaWxlLT5zb2NrX2ZkLCBuYW1lLCBu
YW1lbGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxl
KTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+
IEBAIC01MzcsNyArNTgwLDcgQEAgaW50IGdldHNvY2tuYW1lKGludCBzLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKm5hbWUsIHNvY2tsZW5fdCAqbmFtZWxlbikKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAly
ZXQgPSBsd2lwX2dldHNvY2tuYW1lKGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5hbWVsZW4pOwo+IC0J
dmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3Vu
dCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNl
IHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTU1Niw3ICs1
OTksNyBAQCBpbnQgZ2V0c29ja29wdChpbnQgcywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgdm9p
ZCAqb3B0dmFsLCBzb2NrbGVuX3QgKm9wdGxlbikKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAly
ZXQgPSBsd2lwX2dldHNvY2tvcHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZh
bCwgb3B0bGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8q
IHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAg
fQo+IEBAIC01NzYsNyArNjE5LDcgQEAgaW50IHNldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwg
aW50IG9wdG5hbWUsIGNvbnN0IHZvaWQgKm9wdHZhbCwKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4g
IAlyZXQgPSBsd2lwX3NldHNvY2tvcHQoZmlsZS0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9w
dHZhbCwgb3B0bGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7
IC8qIHJlbGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsK
PiAgfQo+IEBAIC01OTUsNyArNjM4LDcgQEAgaW50IGNvbm5lY3QoaW50IHMsIGNvbnN0IHN0cnVj
dCBzb2NrYWRkciAqbmFtZSwgc29ja2xlbl90IG5hbWVsZW4pCj4gIAkJZ290byBFWElUOwo+ICAJ
fQo+ICAJcmV0ID0gbHdpcF9jb25uZWN0KGZpbGUtPnNvY2tfZmQsIG5hbWUsIG5hbWVsZW4pOwo+
IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxl
YXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTYxNCw3
ICs2NTcsNyBAQCBpbnQgbGlzdGVuKGludCBzLCBpbnQgYmFja2xvZykKPiAgCQlnb3RvIEVYSVQ7
Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX2xpc3RlbihmaWxlLT5zb2NrX2ZkLCBiYWNrbG9nKTsKPiAt
CXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291
bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFz
ZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02MzMsNyAr
Njc2LDcgQEAgaW50IHJlY3YoaW50IHMsIHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdz
KQo+ICAJCWdvdG8gRVhJVDsKPiAgCX0KPiAgCXJldCA9IGx3aXBfcmVjdihmaWxlLT5zb2NrX2Zk
LCBtZW0sIGxlbiwgZmxhZ3MpOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29yZV9m
aWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxlLT52
ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1cm4g
cmV0Owo+ICB9Cj4gQEAgLTY1Myw3ICs2OTYsNyBAQCBpbnQgcmVjdmZyb20oaW50IHMsIHZvaWQg
Km1lbSwgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAo+ICAJCWdvdG8gRVhJVDsKPiAgCX0KPiAgCXJl
dCA9IGx3aXBfcmVjdmZyb20oZmlsZS0+c29ja19mZCwgbWVtLCBsZW4sIGZsYWdzLCBmcm9tLCBm
cm9tbGVuKTsKPiAtCXZmc2NvcmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJl
bGVhc2UgcmVmY291bnQgKi8KPiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxl
KTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+
IEBAIC02NzIsNyArNzE1LDcgQEAgaW50IHNlbmQoaW50IHMsIGNvbnN0IHZvaWQgKmRhdGFwdHIs
IHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpCj4gIAkJZ290byBFWElUOwo+ICAJfQo+ICAJcmV0ID0g
bHdpcF9zZW5kKGZpbGUtPnNvY2tfZmQsIGRhdGFwdHIsIHNpemUsIGZsYWdzKTsKPiAtCXZmc2Nv
cmVfcHV0X2ZpbGUoJmZpbGUtPnZmc2NvcmVfZmlsZSk7IC8qIHJlbGVhc2UgcmVmY291bnQgKi8K
PiArCXZmc2NvcmVfcHV0X2ZpbGUoZmlsZS0+dmZzY29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZj
b3VudCAqLwo+ICBFWElUOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC02OTEsNyArNzM0LDcg
QEAgaW50IHNlbmRtc2coaW50IHMsIGNvbnN0IHN0cnVjdCBtc2doZHIgKm1lc3NhZ2UsIGludCBm
bGFncykKPiAgCQlnb3RvIEVYSVQ7Cj4gIAl9Cj4gIAlyZXQgPSBsd2lwX3NlbmRtc2coZmlsZS0+
c29ja19mZCwgbWVzc2FnZSwgZmxhZ3MpOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZz
Y29yZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShm
aWxlLT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAly
ZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTcxMSw3ICs3NTQsNyBAQCBpbnQgc2VuZHRvKGludCBzLCBj
b25zdCB2b2lkICpkYXRhcHRyLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLAo+ICAJCWdvdG8gRVhJ
VDsKPiAgCX0KPiAgCXJldCA9IGx3aXBfc2VuZHRvKGZpbGUtPnNvY2tfZmQsIGRhdGFwdHIsIHNp
emUsIGZsYWdzLCB0bywgdG9sZW4pOwo+IC0JdmZzY29yZV9wdXRfZmlsZSgmZmlsZS0+dmZzY29y
ZV9maWxlKTsgLyogcmVsZWFzZSByZWZjb3VudCAqLwo+ICsJdmZzY29yZV9wdXRfZmlsZShmaWxl
LT52ZnNjb3JlX2ZpbGUpOyAvKiByZWxlYXNlIHJlZmNvdW50ICovCj4gIEVYSVQ6Cj4gIAlyZXR1
cm4gcmV0Owo+ICB9Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:33:31 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:33: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 1hhEPz-0001uX-5y; Sat, 29 Jun 2019 14:33:31 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEPy-0001uQ-4R
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:33:30 +0000
X-Inumbo-ID: dc3531b5-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id dc3531b5-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:33:29 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id c2so9127364wrm.8
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:33:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=9nKXC3stGP2IMm0SirHJQKsoySRyiLFcnMsTsu2aTkM=;
 b=BE0FkoPNVp2oDZES0b0OJkw0Cp8r1AyQyOh6YR3EMOHeqpcYKBqkBoZYJtcKK0Lwgs
 Xfjp1kte14pV6MvbltTYkyP7ZSAQhnEET84I6IMfFqcabwybIq3RZAkadjyArOAt+zez
 YF+hRQ3vPdfSadGZi5u2ZhAqdveIbpR6ecgLWr1OA6JXJyIXO2V271kf6KJc+ffidIYg
 GsuhATpj8G0IoCfflB0nyxn3QIRwROl+tKSiwRSWOEGwjnfnGVKQPJ3AnEoVwj9/+Snr
 5PCkdmQP1fw3Ezc9xV17phSsW2ZLb18MxJtLG3PQokffXKfj//ITGziCF+zfrxki3IyK
 kmzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=9nKXC3stGP2IMm0SirHJQKsoySRyiLFcnMsTsu2aTkM=;
 b=MLWA9xB4gVU2ei4/wx0rjsynZ5+tvFRFYu5b2mbWt1f2YSgqZdytZlxB7jKl2j7qUG
 01tEJIn80Zht5w7Md2DFkYw5Ih+e+CGujYJSxYLWKo9gaZOmzF6xnpMdLu3jH5pMsvmz
 mlA/HApOCfmHFExuEo0AzcC6H+VBh+GhANeBs8n/63TZwqp62WcpcNhxiMnFKLdsVw35
 HQ3bDELVIHtUrDMqWDnDZU2axkhxi+DcnR4XnGAlS1BKzLSwRaOJgZt1HfT70GYiP6S6
 1G7vvXGIJdCSeRNz7Pih2OoyTyRKi/H/DtsOd6WM8jJyDMGMS1opxmbpu4l2SPO/t54u
 /yTg==
X-Gm-Message-State: APjAAAUXQKk7x1WYWnV3XtniHVDKBntytLayQVizODeeo7JDLaVvgB6I
 bjf483q4aBcSZsEdy3TKgv0GrmXu
X-Google-Smtp-Source: APXvYqz12xOuFuhCSzDC2KowBHnKGG9h3n+WXQKfgpGvsBWwEamdTe1rRqByRKe35KKIut3MJGz28Q==
X-Received: by 2002:a5d:5706:: with SMTP id a6mr11162775wrv.224.1561818807920; 
 Sat, 29 Jun 2019 07:33:27 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id s10sm5952272wmf.8.2019.06.29.07.33.27
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:33:27 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-3-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <971627ee-3a0b-4ff2-f3de-f619e85bbeaa@gmail.com>
Date: Sat, 29 Jun 2019 17:33:26 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-3-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 2/6] Update the number
 of remaining unprocessed bytes correctly
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTQgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFVwZGF0ZSB1aW8gc3RydWN0dXJl
IGluIHNvY2tfbmV0X3dyaXRlL3JlYWQuIFZGU0NPUkUgZXhwZWN0cyB0aGUKPiB1cGRhdGUgb2Yg
dGhlIHJlc2lkIG1lbWJlciBvZiB1aW8gc3VjaCB0aGF0IGl0IHJlZmxlY3RzIHRoZQo+IG51bWJl
ciBvZiBieXRlcyB0aGF0IHJlbWFpbiB1bnByb2Nlc3NlZC4KPiAKPiBTZXQgdGhlIFVLX1ZGU0NP
UkVfTk9QT1MgZmxhZyBvbiB0aGUgc29ja2V0IHZmc2NvcmVfZmlsZS4gVGhpcwo+IGZsYWcgaW5m
b3JtcyBWRlNDT1JFIHRvIGRvIG5vdCB1cGRhdGUgdGhlIG9mZnNldCBvZiBvdXIgc29ja2V0Cj4g
ZmlsZSBzaW5jZSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHNvY2tldHMuCj4gCj4gU2lnbmVk
LW9mZi1ieTogTWloYWkgUG9nb25hcnUgPHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgo+IC0tLQo+
ICBzb2NrZXRzLmMgfCAxOSArKysrKysrKysrKysrKystLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAx
NSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9zb2NrZXRz
LmMgYi9zb2NrZXRzLmMKPiBpbmRleCBjYmUzMDMwLi4zMDQwMDk5IDEwMDY0NAo+IC0tLSBhL3Nv
Y2tldHMuYwo+ICsrKyBiL3NvY2tldHMuYwo+IEBAIC0xMzksNiArMTM5LDcgQEAgc3RhdGljIGlu
dCBzb2NrX2ZkX2FsbG9jKHN0cnVjdCB2bm9wcyAqdl9vcCwgaW50IHNvY2tfZmQpCj4gIAl2ZnNf
ZmlsZS0+Zl9jb3VudCA9IDE7Cj4gIAl2ZnNfZmlsZS0+Zl9kYXRhID0gZmlsZTsKPiAgCXZmc19m
aWxlLT5mX2RlbnRyeSA9IHNfZGVudHJ5Owo+ICsJdmZzX2ZpbGUtPmZfdmZzX2ZsYWdzID0gVUtf
VkZTQ09SRV9OT1BPUzsKPiAgCj4gIAlzX2RlbnRyeS0+ZF9yZWZjbnQgPSAxOwo+ICAJc19kZW50
cnktPmRfdm5vZGUgPSBzX3Zub2RlOwo+IEBAIC0yMjUsNyArMjI2LDcgQEAgc3RhdGljIGludCBz
b2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAlyZXR1cm4gcmV0Owo+ICB9
Cj4gIAo+IC1zdGF0aWMgc3NpemVfdCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5v
ZGUsCj4gK3N0YXRpYyBpbnQgc29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+
ICAJCQkgICAgICBzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpCj4gIHsKPiAg
CWludCByZXQgPSAwOwo+IEBAIC0yMzcsMTAgKzIzOCwxNSBAQCBzdGF0aWMgc3NpemVfdCBzb2Nr
X25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAkJCQkgICAgZmlsZS0+dmZzY29y
ZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3dy
aXRldihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gLQly
ZXR1cm4gcmV0Owo+ICsJLyogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ug
b2YgZXJyb3IgKi8KPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJYnVm
LT51aW9fcmVzaWQgLT0gcmV0Owo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzc2l6
ZV90IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICtzdGF0aWMgaW50IHNv
Y2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJCQkgICAgIHN0cnVjdCB2ZnNj
b3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKPiAgCQkJICAgICBzdHJ1Y3QgdWlvICpi
dWYsIGludCBpb2ZsYWcgX191bnVzZWQpCj4gIHsKPiBAQCAtMjUzLDcgKzI1OSwxMiBAQCBzdGF0
aWMgc3NpemVfdCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiAgCQkJCSAg
ICBmaWxlLT52ZnNjb3JlX2ZpbGUtPmZkLAo+ICAJCQkJICAgIGZpbGUtPnNvY2tfZmQpKTsKPiAg
CXJldCA9IGx3aXBfcmVhZHYoZmlsZS0+c29ja19mZCwgYnVmLT51aW9faW92LCBidWYtPnVpb19p
b3ZjbnQpOwo+IC0JcmV0dXJuIHJldDsKPiArCS8qIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJu
cyAtMSBpbiBjYXNlIG9mIGVycm9yICovCj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0
Owo+ICsKPiArCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+
ICAjZGVmaW5lIHNvY2tfbmV0X2luYWN0aXZlICAoKHZub3BfaW5hY3RpdmVfdCkgdmZzY29yZV92
b3BfbnVsbG9wKQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21p
bmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:33:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:33: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 1hhEQC-0001vJ-7y; Sat, 29 Jun 2019 14:33:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEQA-0001vD-Nc
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:33:42 +0000
X-Inumbo-ID: e3a30309-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id e3a30309-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:33:41 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id x4so9143035wrt.6
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:33:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=92FDupsUJs2TJBwgYwbKdPj0n+y4yFEqfF0cYFNQi8c=;
 b=cb3hnfaDMQ+2Iru1yohJbdhYAbWbJmoEBrA70xtFX2dXoNhst43GSazQJhQdO0faMF
 0D8JwbvazqOCO3KPgGUKF15vuDImU5rMD72rJGNthBNjK4DvQTguWjhDw3Ue5yXLMpFd
 n3VsLO6AdMCe4x4Ih+zGT1WoMJrTWHNoscKa02iPsdTUQxlOIxHbyMJorAQ4z8r2sIjn
 sin8GQqL8LIOAWDD7z8N++RYC1qHkqlQTzRRIbpOaK+oko7GBTBoK/ljMdQf0zDt1HAB
 lKqySde6il+tB7luPlfm+L9WznNgeGpKR8XqhGDwJ+Od8xOp04mxeEDD6WZCojsvzmJ4
 Nxxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=92FDupsUJs2TJBwgYwbKdPj0n+y4yFEqfF0cYFNQi8c=;
 b=hUVP9gwv+Z9Ur6A6PnAdwlNS+ks425yCXgvgm05nI+ayH2Fq3yeop8KuwlRel+1+8D
 1tQ+K3w+ZlmdMOTd7wgFs8KwyvIh00eqqMRGMZUDQvqGWV2lKHlmpbVdZ9m9q8IBv6o3
 jjrqbeSkwJcMpuyfGMNCQrjz/F8oluDd2aaOqhhIjyC7BgA4tLz0nObWA9an/jz9FI//
 xB9Vu+8ZCkiEn2a7VU/sSOujLbGYfatwqzaG1FNSVsShnUn/JI/Gecb+wESLmx7A8EBN
 xaBIG8K3tv8xkgoHG3rZ7Ijr5wuoZNRqDiJ6RdlF20r27pynfzTEsa08K+Vq8l8aqGy2
 i1yA==
X-Gm-Message-State: APjAAAUrzYKpM4GbJzpneeW5NzYeNr6NL897ewkYbWHoZWG20gF1hZKy
 PaY7oki37gjvpcjh7x5C1cJ3mYZo
X-Google-Smtp-Source: APXvYqy7jUxuqaO5jmcTfhlZ3Uuq6uXOfG7j4uIPywu45poH3Ihktw6wTPe+jwT/2wXcT3KS7M57RQ==
X-Received: by 2002:adf:f503:: with SMTP id q3mr12076140wro.43.1561818820359; 
 Sat, 29 Jun 2019 07:33:40 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id v204sm7282660wma.20.2019.06.29.07.33.39
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:33:39 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-4-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <37dd9eba-46d4-152a-8491-d9216c80061e@gmail.com>
Date: Sat, 29 Jun 2019 17:33:39 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-4-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 3/6] Use vfs functions
 to allocate/free the resources used for a socket (Part II)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTQgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFRoaXMgcGFydCBjaGFuZ2VzIExX
SVAgc28gdGhhdCBpdCB1c2VzIHZmcyBmdW5jdGlvbnMgdG8gYWxsb2NhdGUgdGhlCj4gZGVudHJ5
IGFuZCB2bm9kZSB1c2VkIGZvciBzb2NrZXRzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBv
Z29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMTE4
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMo
LSkKPiAKPiBkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggMzA0MDA5
OS4uMWEzZGRmZCAxMDA2NDQKPiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBA
QCAtMzUsNiArMzUsNyBAQAo+ICAKPiAgLyogbmV0d29yayBzdHViIGNhbGxzICovCj4gICNpbmNs
dWRlIDxzeXMvdGltZS5oPgo+ICsjaW5jbHVkZSA8dmZzY29yZS9kZW50cnkuaD4KPiAgI2luY2x1
ZGUgPHZmc2NvcmUvZmlsZS5oPgo+ICAjaW5jbHVkZSA8dmZzY29yZS9mcy5oPgo+ICAjaW5jbHVk
ZSA8dmZzY29yZS9tb3VudC5oPgo+IEBAIC00OSwxMyArNTAsMzggQEAKPiAgI2RlZmluZSBTT0NL
X05FVF9TRVRfRVJSTk8oZXJyY29kZSkgXAo+ICAJKGVycm5vID0gLShlcnJjb2RlKSkKPiAgCj4g
K3N0YXRpYyBpbnQgc29ja19uZXRfY2xvc2Uoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICsJCQlz
dHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUpOwo+ICtzdGF0aWMgaW50IHNvY2tfbmV0
X3dyaXRlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwKPiArCQkJc3RydWN0IHVpbyAqYnVmLCBpbnQg
aW9mbGFnIF9fdW51c2VkKTsKPiArc3RhdGljIGludCBzb2NrX25ldF9yZWFkKHN0cnVjdCB2bm9k
ZSAqc192bm9kZSwKPiArCQkJc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxlIF9fdW51
c2VkLAo+ICsJCQlzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpOwo+ICsKPiAr
I2RlZmluZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9wX2luYWN0aXZlX3QpIHZmc2NvcmVfdm9w
X251bGxvcCkKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qgdm5vcHMgc29ja19uZXRfdm5vcHMgPSB7Cj4g
Kwkudm9wX2Nsb3NlID0gc29ja19uZXRfY2xvc2UsCj4gKwkudm9wX3dyaXRlID0gc29ja19uZXRf
d3JpdGUsCj4gKwkudm9wX3JlYWQgID0gc29ja19uZXRfcmVhZCwKPiArCS52b3BfaW5hY3RpdmUg
PSBzb2NrX25ldF9pbmFjdGl2ZQo+ICt9Owo+ICsKPiArI2RlZmluZSBzb2NrX25ldF92Z2V0ICAo
KHZmc29wX3ZnZXRfdCkgdmZzY29yZV92b3BfbnVsbG9wKQo+ICsKPiArc3RhdGljIHN0cnVjdCB2
ZnNvcHMgc29ja19uZXRfdmZzb3BzID0gewo+ICsJLnZmc192Z2V0ID0gc29ja19uZXRfdmdldCwK
PiArCS52ZnNfdm5vcHMgPSAmc29ja19uZXRfdm5vcHMKPiArfTsKPiArCj4gKwo+ICtzdGF0aWMg
dWludDY0X3Qgc19pbm9kZSA9IDA7Cj4gIC8qCj4gICAqIEJvZ3VzIG1vdW50IHBvaW50IHVzZWQg
YnkgYWxsIHNvY2tldHMKPiAtICoKPiAtICogV2UgbmVlZCB0aGlzIGJlY2F1c2Ugd2hlbiBkZWxl
dGluZyBhIHZub2RlCj4gLSAqIHZmcyBjYWxscyB2ZnNfdW5idXN5IG9uIGl0cyBtb3VudCBwb2lu
dAo+ICAgKi8KPiAtc3RhdGljIHN0cnVjdCBtb3VudCBzX21vdW50Owo+ICtzdGF0aWMgc3RydWN0
IG1vdW50IHNfbW91bnQgPSB7Cj4gKwkubV9vcCA9ICZzb2NrX25ldF92ZnNvcHMKPiArfTsKPiAg
Cj4gIHN0cnVjdCBzb2NrX25ldF9maWxlIHsKPiAgCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2Nv
cmVfZmlsZTsKPiBAQCAtODUsNyArMTExLDcgQEAgRVhJVDoKPiAgCXJldHVybiBmaWxlOwo+ICB9
Cj4gIAo+IC1zdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQg
c29ja19mZCkKPiArc3RhdGljIGludCBzb2NrX2ZkX2FsbG9jKGludCBzb2NrX2ZkKQo+ICB7Cj4g
IAlpbnQgcmV0ID0gMDsKPiAgCWludCB2ZnNfZmQ7Cj4gQEAgLTExOCwxOSArMTQ0LDMwIEBAIHN0
YXRpYyBpbnQgc29ja19mZF9hbGxvYyhzdHJ1Y3Qgdm5vcHMgKnZfb3AsIGludCBzb2NrX2ZkKQo+
ICAJCQkJKCJGYWlsZWQgdG8gYWxsb2NhdGUgc29ja2V0IHZmc19maWxlOiBPdXQgb2YgbWVtb3J5
XG4iKSk7Cj4gIAkJZ290byBFUlJfTUFMTE9DX1ZGU19GSUxFOwo+ICAJfQo+IC0Jc19kZW50cnkg
PSB1a19jYWxsb2ModWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgMSwgc2l6ZW9mKCpzX2RlbnRyeSkp
Owo+IC0JaWYgKCFzX2RlbnRyeSkgewo+ICsKPiArCXJldCA9IHZmc2NvcmVfdmdldCgmc19tb3Vu
dCwgc19pbm9kZSsrLCAmc192bm9kZSk7Cj4gKwlVS19BU1NFUlQocmV0ID09IDApOyAvKiB3ZSBz
aG91bGQgbm90IGZpbmQgaXQgaW4gY2FjaGUgKi8KPiArCj4gKwlpZiAoIXNfdm5vZGUpIHsKPiAg
CQlyZXQgPSAtRU5PTUVNOwo+ICAJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4gLQkJCSAg
ICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBzb2NrZXQgZGVudHJ5OiBPdXQgb2YgbWVtb3J5XG4iKSk7
Cj4gLQkJZ290byBFUlJfTUFMTE9DX0RFTlRSWTsKPiArCQkJICAgICgiRmFpbGVkIHRvIGFsbG9j
YXRlIHNvY2tldCB2bm9kZTogT3V0IG9mIG1lbW9yeVxuIikpOwo+ICsJCWdvdG8gRVJSX0FMTE9D
X1ZOT0RFOwo+ICAJfQo+IC0Jc192bm9kZSA9IHVrX2NhbGxvYyh1a19hbGxvY19nZXRfZGVmYXVs
dCgpLCAxLCBzaXplb2YoKnNfdm5vZGUpKTsKPiAtCWlmICghc192bm9kZSkgewo+ICsKPiArCXVr
X211dGV4X3VubG9jaygmc192bm9kZS0+dl9sb2NrKTsKPiArCj4gKwkvKgo+ICsJICogaXQgZG9l
c24ndCBtYXR0ZXIgdGhhdCBhbGwgdGhlIGRlbnRyaWVzIGhhdmUgdGhlCj4gKwkgKiBzYW1lIHBh
dGggc2luY2Ugd2UgbmV2ZXIgbG9va3VwIGZvciB0aGVtCj4gKwkgKi8KPiArCXNfZGVudHJ5ID0g
ZGVudHJ5X2FsbG9jKE5VTEwsIHNfdm5vZGUsICIvIik7Cj4gKwo+ICsJaWYgKCFzX2RlbnRyeSkg
ewo+ICAJCXJldCA9IC1FTk9NRU07Cj4gIAkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiAt
CQkJICAgICgiRmFpbGVkIHRvIGFsbG9jYXRlIHNvY2tldCB2bm9kZTogT3V0IG9mIG1lbW9yeVxu
IikpOwo+IC0JCWdvdG8gRVJSX01BTExPQ19WTk9ERTsKPiArCQkJICAgICgiRmFpbGVkIHRvIGFs
bG9jYXRlIHNvY2tldCBkZW50cnk6IE91dCBvZiBtZW1vcnlcbiIpKTsKPiArCQlnb3RvIEVSUl9B
TExPQ19ERU5UUlk7Cj4gIAl9Cj4gIAo+ICAJLyogUHV0IHRoaW5ncyB0b2dldGhlciwgYW5kIGZp
bGwgb3V0IG5lY2Vzc2FyeSBmaWVsZHMgKi8KPiBAQCAtMTQxLDMxICsxNzgsOCBAQCBzdGF0aWMg
aW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQgc29ja19mZCkKPiAgCXZm
c19maWxlLT5mX2RlbnRyeSA9IHNfZGVudHJ5Owo+ICAJdmZzX2ZpbGUtPmZfdmZzX2ZsYWdzID0g
VUtfVkZTQ09SRV9OT1BPUzsKPiAgCj4gLQlzX2RlbnRyeS0+ZF9yZWZjbnQgPSAxOwo+IC0Jc19k
ZW50cnktPmRfdm5vZGUgPSBzX3Zub2RlOwo+IC0KPiAtCS8qCj4gLQkgKiBQcm92aWRlIGJvZ3Vz
IGJ1dCB2YWxpZCBhZGRyZXNzZXMgdG8gYWxsb3cKPiAtCSAqIHZmcyB0byByZW1vdmUgbm9kZXMg
ZnJvbSBsaXN0cwo+IC0JICovCj4gLQlzX2RlbnRyeS0+ZF9saW5rLnBwcmV2ID0gJnNfZGVudHJ5
LT5kX2xpbmsubmV4dDsKPiAtCXNfZGVudHJ5LT5kX25hbWVzX2xpbmsubmV4dCA9ICZzX2RlbnRy
eS0+ZF9uYW1lc19saW5rOwo+IC0Jc19kZW50cnktPmRfbmFtZXNfbGluay5wcmV2ID0gJnNfZGVu
dHJ5LT5kX25hbWVzX2xpbms7Cj4gLQo+IC0Jc192bm9kZS0+dl9vcCA9IHZfb3A7Cj4gLQl1a19t
dXRleF9pbml0KCZzX3Zub2RlLT52X2xvY2spOwo+IC0Jc192bm9kZS0+dl9yZWZjbnQgPSAxOwo+
ICAJc192bm9kZS0+dl9kYXRhID0gZmlsZTsKPiAgCXNfdm5vZGUtPnZfdHlwZSA9IFZTT0NLOwo+
IC0Jc192bm9kZS0+dl9tb3VudCA9ICZzX21vdW50Owo+IC0Jc19tb3VudC5tX2NvdW50Kys7Cj4g
LQo+IC0JLyoKPiAtCSAqIFByb3ZpZGUgYm9ndXMgYnV0IHZhbGlkIGFkZHJlc3NlcyB0byBhbGxv
dwo+IC0JICogdmZzIHRvIHJlbW92ZSBub2RlcyBmcm9tIGxpc3RzCj4gLQkgKi8KPiAtCXNfdm5v
ZGUtPnZfbGluay5uZXh0ID0gJnNfdm5vZGUtPnZfbGluazsKPiAtCXNfdm5vZGUtPnZfbGluay5w
cmV2ID0gJnNfdm5vZGUtPnZfbGluazsKPiAgCj4gIAlmaWxlLT52ZnNjb3JlX2ZpbGUgPSB2ZnNf
ZmlsZTsKPiAgCWZpbGUtPnNvY2tfZmQgPSBzb2NrX2ZkOwo+IEBAIC0xODEsMTQgKzE5NSwxNyBA
QCBzdGF0aWMgaW50IHNvY2tfZmRfYWxsb2Moc3RydWN0IHZub3BzICp2X29wLCBpbnQgc29ja19m
ZCkKPiAgCQlnb3RvIEVSUl9WRlNfSU5TVEFMTDsKPiAgCX0KPiAgCj4gKwkvKiBPbmx5IHRoZSBk
ZW50cnkgc2hvdWxkIGhvbGQgYSByZWZlcmVuY2U7IHJlbGVhc2Ugb3VycyAqLwo+ICsJdnJlbGUo
c192bm9kZSk7Cj4gKwo+ICAJLyogUmV0dXJuIGZpbGUgZGVzY3JpcHRvciBvZiBvdXIgc29ja2V0
ICovCj4gIAlyZXR1cm4gdmZzX2ZkOwo+ICAKPiAgRVJSX1ZGU19JTlNUQUxMOgo+IC0JdWtfZnJl
ZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBzX3Zub2RlKTsKPiAtRVJSX01BTExPQ19WTk9ERToK
PiAtCXVrX2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgc19kZW50cnkpOwo+IC1FUlJfTUFM
TE9DX0RFTlRSWToKPiArCWRyZWxlKHNfZGVudHJ5KTsKPiArRVJSX0FMTE9DX0RFTlRSWToKPiAr
CXZyZWxlKHNfdm5vZGUpOwo+ICtFUlJfQUxMT0NfVk5PREU6Cj4gIAl1a19mcmVlKHVrX2FsbG9j
X2dldF9kZWZhdWx0KCksIHZmc19maWxlKTsKPiAgRVJSX01BTExPQ19WRlNfRklMRToKPiAgCXVr
X2ZyZWUodWtfYWxsb2NfZ2V0X2RlZmF1bHQoKSwgZmlsZSk7Cj4gQEAgLTIwMCw3ICsyMTcsNyBA
QCBFUlJfRVhJVDoKPiAgfQo+ICAKPiAgc3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qg
dm5vZGUgKnNfdm5vZGUsCj4gLQkJCSAgc3RydWN0IHZmc2NvcmVfZmlsZSAqdmZzY29yZV9maWxl
KQo+ICsJCQlzdHJ1Y3QgdmZzY29yZV9maWxlICp2ZnNjb3JlX2ZpbGUpCj4gIHsKPiAgCWludCBy
ZXQ7Cj4gIAlzdHJ1Y3Qgc29ja19uZXRfZmlsZSAqZmlsZSA9IE5VTEw7Cj4gQEAgLTIyNyw3ICsy
NDQsNyBAQCBzdGF0aWMgaW50IHNvY2tfbmV0X2Nsb3NlKHN0cnVjdCB2bm9kZSAqc192bm9kZSwK
PiAgfQo+ICAKPiAgc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5v
ZGUsCj4gLQkJCSAgICAgIHN0cnVjdCB1aW8gKmJ1ZiwgaW50IGlvZmxhZyBfX3VudXNlZCkKPiAr
CQkJc3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQo+ICB7Cj4gIAlpbnQgcmV0
ID0gMDsKPiAgCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiBAQCAtMjQ3LDgg
KzI2NCw4IEBAIHN0YXRpYyBpbnQgc29ja19uZXRfd3JpdGUoc3RydWN0IHZub2RlICpzX3Zub2Rl
LAo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zu
b2RlLAo+IC0JCQkgICAgIHN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNl
ZCwKPiAtCQkJICAgICBzdHJ1Y3QgdWlvICpidWYsIGludCBpb2ZsYWcgX191bnVzZWQpCj4gKwkJ
CXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKPiArCQkJc3RydWN0
IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKQo+ICB7Cj4gIAlpbnQgcmV0ID0gMDsKPiAg
CXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiBAQCAtMjY3LDE1ICsyODQsNiBA
QCBzdGF0aWMgaW50IHNvY2tfbmV0X3JlYWQoc3RydWN0IHZub2RlICpzX3Zub2RlLAo+ICAJcmV0
dXJuIDA7Cj4gIH0KPiAgCj4gLSNkZWZpbmUgc29ja19uZXRfaW5hY3RpdmUgICgodm5vcF9pbmFj
dGl2ZV90KSB2ZnNjb3JlX3ZvcF9udWxsb3ApCj4gLQo+IC1zdGF0aWMgc3RydWN0IHZub3BzIHNv
Y2tfbmV0X2ZvcHMgPSB7Cj4gLQkudm9wX2Nsb3NlID0gc29ja19uZXRfY2xvc2UsCj4gLQkudm9w
X3dyaXRlID0gc29ja19uZXRfd3JpdGUsCj4gLQkudm9wX3JlYWQgID0gc29ja19uZXRfcmVhZCwK
PiAtCS52b3BfaW5hY3RpdmUgPSBzb2NrX25ldF9pbmFjdGl2ZQo+IC19Owo+IC0KPiAgaW50IHNv
Y2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQo+ICB7Cj4gIAlpbnQgcmV0
ID0gMDsKPiBAQCAtMjkyLDcgKzMwMCw3IEBAIGludCBzb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5
cGUsIGludCBwcm90b2NvbCkKPiAgCX0KPiAgCj4gIAkvKiBBbGxvY2F0ZSB0aGUgZmlsZSBkZXNj
cmlwdG9yICovCj4gLQl2ZnNfZmQgPSBzb2NrX2ZkX2FsbG9jKCZzb2NrX25ldF9mb3BzLCBzb2Nr
X2ZkKTsKPiArCXZmc19mZCA9IHNvY2tfZmRfYWxsb2Moc29ja19mZCk7Cj4gIAlpZiAodmZzX2Zk
IDwgMCkgewo+ICAJCUxXSVBfREVCVUdGKFNPQ0tFVFNfREVCVUcsCj4gIAkJCSAgICAoImZhaWxl
ZCB0byBhbGxvY2F0ZSBkZXNjcmlwdG9yICVkXG4iLAo+IEBAIC0zMzksNyArMzQ3LDcgQEAgaW50
IGFjY2VwdChpbnQgcywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzb2NrbGVuX3QgKmFkZHJsZW4p
Cj4gIAl9Cj4gIAo+ICAJLyogQWxsb2NhdGUgdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGFj
Y2VwdGVkIGNvbm5lY3Rpb24gKi8KPiAtCXZmc19mZCA9IHNvY2tfZmRfYWxsb2MoJnNvY2tfbmV0
X2ZvcHMsIHNvY2tfZmQpOwo+ICsJdmZzX2ZkID0gc29ja19mZF9hbGxvYyhzb2NrX2ZkKTsKPiAg
CWlmICh2ZnNfZmQgPCAwKSB7Cj4gIAkJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywKPiAgCQkJ
ICAgICgiZmFpbGVkIHRvIGFsbG9jYXRlIGRlc2NyaXB0b3IgZm9yIGFjY2VwdGVkIGNvbm5lY3Rp
b25cbiIpKTsKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:33:55 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:33: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 1hhEQN-0001w9-BG; Sat, 29 Jun 2019 14:33:55 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEQM-0001w1-AJ
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:33:54 +0000
X-Inumbo-ID: ea83b9c2-9a7a-11e9-8980-bc764e045a96
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id ea83b9c2-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:33:53 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id c66so11725087wmf.0
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:33:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=1CaJe0oP8r8tLmyerZGLcVikUPpIEqfCn+wDyxOTQCo=;
 b=Yz1vM59+F62SkGjokqzwosYWtK8tomhT9M7L13NhpOrncDlYF8u4dslMJBtyTVNO+6
 +t3B7oXm/bHPujxp2p3sHT0sfyhvTcmA5QMludx1rGGsp1Pnf+QLt2yNd2qSCShv54eZ
 cojA/58Jv7KqPhBQNlyglc9EFtOzHGXjyDLqdcyG9yuJwXNGlu6wBch6SvNkEU4olDuj
 tadVPrIG4gjiMPQEa8kjFi3L+w/tQ9rZ+S0eIeevP6gNDsNBXPkmSbkbp6UyJ7gSfJ9m
 1EQrzYRcXOQ6Ix06ZvU/VpN7JTBZ+JRSpuo8pUH2dm3bYAPW7+F8jorJp66g3Lxe6+yg
 Gniw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=1CaJe0oP8r8tLmyerZGLcVikUPpIEqfCn+wDyxOTQCo=;
 b=NxjGlpWGWYxtd1GzU9X9J8SWZxwxaiZgLGTJwxXWwHUYJbaGBniqLKecXmR0r+t1Uf
 nm3u4VFEZYvs8DKoZljz9eoJkjDy2lh0CAKjPH9tPNTwm0yZgCDU0cewneWojPFPQjMR
 7OeWA1C/iXHIEt0IabHB1rHStCjObG0G4QmljgYU0BAqy359Ec7vJBdkcE9JX7eDJgVf
 Zel4808KNH+jWHkpB+URBMmSB3gt8gHkpiYDAlw5JOQun1bJVq4X10xpZjJ1Ics4rPh1
 UTpVqzmY+UziyGNiz6t0c+AG1MPtkoj+VAmldVabzo4higWAVLWmwcvte2MDPzFGrRq8
 PL7w==
X-Gm-Message-State: APjAAAUa1soeGzNemR38Q4SdAUSr9Dcz/+t3BLO1wOHzMX4AGJ+XL8z9
 /pDaG7lR9PfKTWCfqW5yHHLGhOGR
X-Google-Smtp-Source: APXvYqzfUj6ACOomiv6FWlOA24Vj+7uZrEBmWxhd133r5XhpXKIb3IiT5XNuXPV5bnRk2DDvopWXuQ==
X-Received: by 2002:a1c:228b:: with SMTP id
 i133mr11044065wmi.140.1561818831889; 
 Sat, 29 Jun 2019 07:33:51 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id h6sm4815269wre.82.2019.06.29.07.33.51
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:33:51 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-5-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <e080e0f8-b0b8-d9c3-d7ec-1345b915fb3a@gmail.com>
Date: Sat, 29 Jun 2019 17:33:50 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-5-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 4/6] sockets.c: Change
 error handling to match vfs expectations
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTQgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IHZmcyBleHBlY3RzIGZpbGUgc3lz
dGVtIGZ1bmN0aW9ucyAodm5vcHMpIHRvIHJldHVybiAwIG9uIHN1Y2Nlc3MKPiAoYW5kIHVwZGF0
ZSB0aGUgdWlvIHN0cnVjdHVyZSkgb3IgYSBwb3NpdGl2ZSBlcnJvciBudW1iZXIKPiBpbiBjYXNl
IG9mIGFuIGVycm9yLgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIFBvZ29uYXJ1IDxwb2dvbmFy
dW1paGFpQGdtYWlsLmNvbT4KPiAtLS0KPiAgc29ja2V0cy5jIHwgMjMgKysrKysrKysrKysrKysr
KysrKy0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z
KC0pCj4gCj4gZGlmZiAtLWdpdCBhL3NvY2tldHMuYyBiL3NvY2tldHMuYwo+IGluZGV4IDFhM2Rk
ZmQuLjM4NjM5ZjggMTAwNjQ0Cj4gLS0tIGEvc29ja2V0cy5jCj4gKysrIGIvc29ja2V0cy5jCj4g
QEAgLTIzNyw5ICsyMzcsMTggQEAgc3RhdGljIGludCBzb2NrX25ldF9jbG9zZShzdHJ1Y3Qgdm5v
ZGUgKnNfdm5vZGUsCj4gIAkvKgo+ICAJICogRnJlZSBzb2NrZXQgZmlsZQo+ICAJICogVGhlIHJl
c3Qgb2YgdGhlIHJlc291cmNlcyB3aWxsIGJlIGZyZWVkIGJ5IHZmcwo+ICsJICoKPiArCSAqIFRP
RE86IHZmcyBpZ25vcmVzIGNsb3NlIGVycm9ycyByaWdodCBub3csIHNvIGZyZWUgb3VyIGZpbGUK
PiAgCSAqLwo+ICAJdWtfZnJlZSh1a19hbGxvY19nZXRfZGVmYXVsdCgpLCBmaWxlKTsKPiAgCj4g
KwkvKgo+ICsJICogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1cm5zIC0xIGluIGNhc2Ugb2YgZXJy
b3IsIGJ1dAo+ICsJICogdmZzIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9zaXRpdmUgZXJybm8K
PiArCSAqLwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIGVycm5vOwo+ICsKPiAgCXJldHVy
biByZXQ7Cj4gIH0KPiAgCj4gQEAgLTI1NSw5ICsyNjQsMTIgQEAgc3RhdGljIGludCBzb2NrX25l
dF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gIAkJCQkgICAgZmlsZS0+dmZzY29yZV9m
aWxlLT5mZCwKPiAgCQkJCSAgICBmaWxlLT5zb2NrX2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3dyaXRl
dihmaWxlLT5zb2NrX2ZkLCBidWYtPnVpb19pb3YsIGJ1Zi0+dWlvX2lvdmNudCk7Cj4gLQkvKiBs
d2lwIHNldHMgZXJybm8gYW5kIHJldHVybnMgLTEgaW4gY2FzZSBvZiBlcnJvciAqLwo+ICsJLyoK
PiArCSAqIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJucyAtMSBpbiBjYXNlIG9mIGVycm9yLCBi
dXQKPiArCSAqIHZmcyBleHBlY3RzIHVzIHRvIHJldHVybiBhIHBvc2l0aXZlIGVycm5vCj4gKwkg
Ki8KPiAgCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4gKwkJcmV0dXJuIGVycm5vOwo+
ICAKPiAgCWJ1Zi0+dWlvX3Jlc2lkIC09IHJldDsKPiAgCXJldHVybiAwOwo+IEBAIC0yNzYsOSAr
Mjg4LDEyIEBAIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUs
Cj4gIAkJCQkgICAgZmlsZS0+dmZzY29yZV9maWxlLT5mZCwKPiAgCQkJCSAgICBmaWxlLT5zb2Nr
X2ZkKSk7Cj4gIAlyZXQgPSBsd2lwX3JlYWR2KGZpbGUtPnNvY2tfZmQsIGJ1Zi0+dWlvX2lvdiwg
YnVmLT51aW9faW92Y250KTsKPiAtCS8qIGx3aXAgc2V0cyBlcnJubyBhbmQgcmV0dXJucyAtMSBp
biBjYXNlIG9mIGVycm9yICovCj4gKwkvKgo+ICsJICogbHdpcCBzZXRzIGVycm5vIGFuZCByZXR1
cm5zIC0xIGluIGNhc2Ugb2YgZXJyb3IsIGJ1dAo+ICsJICogdmZzIGV4cGVjdHMgdXMgdG8gcmV0
dXJuIGEgcG9zaXRpdmUgZXJybm8KPiArCSAqLwo+ICAJaWYgKHJldCA8IDApCj4gLQkJcmV0dXJu
IHJldDsKPiArCQlyZXR1cm4gZXJybm87Cj4gIAo+ICAJYnVmLT51aW9fcmVzaWQgLT0gcmV0Owo+
ICAJcmV0dXJuIDA7Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:34:07 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:34: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 1hhEQZ-0001wr-DA; Sat, 29 Jun 2019 14:34:07 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEQY-0001wk-1v
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:34:06 +0000
X-Inumbo-ID: f1bf3a04-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f1bf3a04-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:34:05 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id x4so9143643wrt.6
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:34:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=3s6/xjvfz4OeAQ8Sgig4wOgEd0cj9kObSITy012OOpY=;
 b=V7fYwymNXGkpxaVOfh7A5PHiQJrZ/oNCFuikHoOU0vp0GQa+7n4LZR4vqANdpn+ADm
 QjZJ5812gjfDVT8HlGzPDGWbq2iFeTO680P2n1tTncFOOOkJDHU2Y4EIj1cnpKNtDvCC
 0/AjOFSOoS6alq8GFtYgflTKi2jQbfJcHj5p7ZLh9mICtrTovyi8jUwFtSrVTx4UPh0Y
 9hTsjyxXOMjDR5OnG/cIzkA85fRTKwPmL6CgYxAHzEKO7MpvHTj+jfUiMCMFT1Xyp26u
 ptqgGh6mIGGllL5apHefCw+mXcxWlKje7PDbv0dAPUxZlJL/YcJsnuotjTV053ty0UTm
 WkyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=3s6/xjvfz4OeAQ8Sgig4wOgEd0cj9kObSITy012OOpY=;
 b=nyUx67FVhUSUAtgeqk/kodM5mJca8bgmVtmYznbcV5XKA6SI/xg8CDvtb3MwBQmPyx
 WCeaeoUXE2f6uQ+QOHt65zgp25U8Twi8H5oA1xH6UhDOL5S5W6MaXIJCSaXlt6bCp1kp
 1PcyxUIdKgKkCAtApGD9IjwBwdrqXlLy8YgPmDieZkXpdUlwJpyljX8nidKIAqUK97pJ
 oUi2mCHdaKHhTcJMQJ4gsgtLkMcxMQpjoGN8ZwnpquBhMtEI+Pz20HqNhLDrbotNd8dh
 HoHQGZJiIS3knZjhhNiAFqUbAtE4qbuhlcrexmj1JFuw6FV4ImPEIlN0r817iB4y537f
 plIQ==
X-Gm-Message-State: APjAAAU4h/pycDz4KH/TPAXvCmgxOZ6ecjLOXHKKQzUwxaHKklz429s4
 4O5uFnT1L6D9ISWwsPxyeRw=
X-Google-Smtp-Source: APXvYqzKyHJyZqzytO8/+pLHgIaCmx1vBtboRVC/7+tGd/8N0iNVZrSSQCixqLPpPtsQQdBsAHZLWw==
X-Received: by 2002:adf:f3c7:: with SMTP id g7mr11969638wrp.133.1561818844040; 
 Sat, 29 Jun 2019 07:34:04 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id y6sm5816052wmd.16.2019.06.29.07.34.03
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:34:03 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-6-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <2707e3e9-3cde-944f-2998-671cded3ae97@gmail.com>
Date: Sat, 29 Jun 2019 17:34:03 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-6-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 5/6] Provide ioctl for
 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: costin.lupu@cs.pub.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTUgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IE1paGFp
IFBvZ29uYXJ1IDxwb2dvbmFydW1paGFpQGdtYWlsLmNvbT4KPiBSZXZpZXdlZC1ieTogQ29zdGlu
IEx1cHUgPGNvc3Rpbi5sdXB1QGNzLnB1Yi5ybz4KPiAtLS0KPiAgZXhwb3J0c3ltcy51ayAgICAg
ICAgfCAgMSAtCj4gIGluY2x1ZGUvc3lzL3NvY2tldC5oIHwgIDIgLS0KPiAgc29ja2V0cy5jICAg
ICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDIw
IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2V4cG9ydHN5
bXMudWsgYi9leHBvcnRzeW1zLnVrCj4gaW5kZXggMzc1YTc4OS4uMTBjMWFiOCAxMDA2NDQKPiAt
LS0gYS9leHBvcnRzeW1zLnVrCj4gKysrIGIvZXhwb3J0c3ltcy51awo+IEBAIC02LDcgKzYsNiBA
QCBnZXRzb2NrbmFtZQo+ICBnZXRzb2Nrb3B0Cj4gIGxpYmx3aXBfaW5pdAo+ICBsaXN0ZW4KPiAt
bHdpcF9pb2N0bAo+ICBsd2lwX2h0b25sCj4gIGx3aXBfaHRvbnMKPiAgbHdpcF9nZXRob3N0Ynlu
YW1lCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzL3NvY2tldC5oIGIvaW5jbHVkZS9zeXMvc29j
a2V0LmgKPiBpbmRleCA0MmJhZDZjLi43YThhY2EwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvc3lz
L3NvY2tldC5oCj4gKysrIGIvaW5jbHVkZS9zeXMvc29ja2V0LmgKPiBAQCAtNTIsOCArNTIsNiBA
QAo+ICAjZGVmaW5lIFNPQ0tfU0VRUEFDS0VUIDUKPiAgI2VuZGlmCj4gIAo+IC0jZGVmaW5lIGlv
Y3RsKHMsIGNtZCwgYXJncCkgbHdpcF9pb2N0bChzLCBjbWQsIGFyZ3ApCj4gLQo+ICBpbnQgc29j
a2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOwo+ICBpbnQgYWNjZXB0KGlu
dCBzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCAqYWRkcmxlbik7Cj4gIGludCBi
aW5kKGludCBzLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbWUsIHNvY2tsZW5fdCBuYW1lbGVu
KTsKPiBkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29ja2V0cy5jCj4gaW5kZXggMzg2MzlmOC4u
YWE3NzJkYSAxMDA2NDQKPiAtLS0gYS9zb2NrZXRzLmMKPiArKysgYi9zb2NrZXRzLmMKPiBAQCAt
NTcsNiArNTcsMTAgQEAgc3RhdGljIGludCBzb2NrX25ldF93cml0ZShzdHJ1Y3Qgdm5vZGUgKnNf
dm5vZGUsCj4gIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUs
Cj4gIAkJCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKPiAgCQkJ
c3RydWN0IHVpbyAqYnVmLCBpbnQgaW9mbGFnIF9fdW51c2VkKTsKPiArc3RhdGljIGludCBzb2Nr
X25ldF9pb2N0bChzdHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gKwkJCXN0cnVjdCB2ZnNjb3JlX2Zp
bGUgKnZmc2NvcmVfZmlsZSBfX3VudXNlZCwKPiArCQkJdW5zaWduZWQgbG9uZyByZXF1ZXN0LAo+
ICsJCQl2b2lkICpidWYpOwo+ICAKPiAgI2RlZmluZSBzb2NrX25ldF9pbmFjdGl2ZSAgKCh2bm9w
X2luYWN0aXZlX3QpIHZmc2NvcmVfdm9wX251bGxvcCkKPiAgCj4gQEAgLTY0LDYgKzY4LDcgQEAg
c3RhdGljIHN0cnVjdCB2bm9wcyBzb2NrX25ldF92bm9wcyA9IHsKPiAgCS52b3BfY2xvc2UgPSBz
b2NrX25ldF9jbG9zZSwKPiAgCS52b3Bfd3JpdGUgPSBzb2NrX25ldF93cml0ZSwKPiAgCS52b3Bf
cmVhZCAgPSBzb2NrX25ldF9yZWFkLAo+ICsJLnZvcF9pb2N0bCA9IHNvY2tfbmV0X2lvY3RsLAo+
ICAJLnZvcF9pbmFjdGl2ZSA9IHNvY2tfbmV0X2luYWN0aXZlCj4gIH07Cj4gIAo+IEBAIC0yOTks
NiArMzA0LDIxIEBAIHN0YXRpYyBpbnQgc29ja19uZXRfcmVhZChzdHJ1Y3Qgdm5vZGUgKnNfdm5v
ZGUsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBzb2NrX25ldF9pb2N0bChz
dHJ1Y3Qgdm5vZGUgKnNfdm5vZGUsCj4gKwkJCXN0cnVjdCB2ZnNjb3JlX2ZpbGUgKnZmc2NvcmVf
ZmlsZSBfX3VudXNlZCwKPiArCQkJdW5zaWduZWQgbG9uZyByZXF1ZXN0LAo+ICsJCQl2b2lkICpi
dWYpCj4gK3sKPiArCXN0cnVjdCBzb2NrX25ldF9maWxlICpmaWxlID0gTlVMTDsKPiArCj4gKwlm
aWxlID0gc192bm9kZS0+dl9kYXRhOwo+ICsJTFdJUF9ERUJVR0YoU09DS0VUU19ERUJVRywgKCIl
cyBmZDolZCBsd2lwX2ZkOiVkXG4iLAo+ICsJCQkJICAgIF9fZnVuY19fLAo+ICsJCQkJICAgIGZp
bGUtPnZmc2NvcmVfZmlsZS0+ZmQsCj4gKwkJCQkgICAgZmlsZS0+c29ja19mZCkpOwo+ICsJcmV0
dXJuIGx3aXBfaW9jdGwoZmlsZS0+c29ja19mZCwgcmVxdWVzdCwgYnVmKTsKPiArfQo+ICsKPiAg
aW50IHNvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQo+ICB7Cj4gIAlp
bnQgcmV0ID0gMDsKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:34:19 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:34: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 1hhEQl-0001yB-F6; Sat, 29 Jun 2019 14:34:19 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhEQj-0001y5-S0
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:34:17 +0000
X-Inumbo-ID: f8808cc1-9a7a-11e9-8980-bc764e045a96
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id f8808cc1-9a7a-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:34:16 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id p13so9116339wru.10
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:34:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:cc:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-language:content-transfer-encoding;
 bh=k5tvYTJc+XEP3LKl12jMjWokXPl/YrTi0WJH1haP5xM=;
 b=UOcAJW0oB8IIS6e0W6G4PEzDANu0Mj5ydZvjIYC1km9Nk5D8vzZK/jcIYZKJ65zwqk
 RxzIWieVbqrGWGchWCuSaLSiWxIiZJOXDZ+fW+uxDrsqeY5kwu895Spex9wOTOWS/dtP
 aiCI/O/5/ILmZHSgNDOVImmE1XjmoeiVyBPaQMOOwOUQNL7Gq4TZM/z+KdYcnxDfIJX4
 HYurJVZECBLQjKC9Y9n1VTt57yxcQSa2pUoSD2giNU8KWkf39z7vizpgdPRgmFMDXtri
 w09aZKw3a6ONktGYj9/wzaYhn9py7ua3RS3wy/KPnvAEqwe3+QbYwNgXGFTbFBWTHN81
 9uRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:cc:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=k5tvYTJc+XEP3LKl12jMjWokXPl/YrTi0WJH1haP5xM=;
 b=MOSdS5WppF37Te0kU7FPFhNFg2sf7WnoeJTaaIE8/WqUSxF9VJAQYeMcGoSoxOTicm
 w5zRhTSnse3rNwtydXvaiJ9d+iq8/fkkIfII6qyZYKT+CuZoGUxtl1YZ4Jq6mtrolsXl
 WLij0ztUQ6mjPMp1uYhCYlOnLk/P6R1FylO6tSBLDdTU83tbXwCGL60RCdpNfu3ihHP9
 Ugae3fvrK0a41CjK2Uu71aw31BVQ/Mf5fIThzelNRhewPPxP6KA69fYtupa5EeLKd8g0
 BVyAc2vJu3ZHLYDiuZhtWCakC/91LKmUYY/Ojls+RPzbpwSvS+ilsaNFjqQ/aU4H19K0
 99Ig==
X-Gm-Message-State: APjAAAX26JVmmY1zFC+kKNvgEGmPKZm2vSC0L2feZTKOgpySqTbfF0n+
 WAGc2Pkvsh0J8m6Fa2ewSCM=
X-Google-Smtp-Source: APXvYqztYNy1VRxBSVFEbFUEZJnJRL/QwMjCOcsTOtJsmIpx8bpEOWt5543negqfk3UhPwszI9Af0w==
X-Received: by 2002:adf:fc45:: with SMTP id e5mr12457934wrs.240.1561818855382; 
 Sat, 29 Jun 2019 07:34:15 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.105])
 by smtp.gmail.com with ESMTPSA id l8sm12039998wrg.40.2019.06.29.07.34.14
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:34:15 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
 <20190629135501.12347-7-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <d8a9d3a5-f9b0-ca93-55e2-2329ede6f297@gmail.com>
Date: Sat, 29 Jun 2019 17:34:14 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-7-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 6/6] Further protect
 gethostbyname* defines
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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.r
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

UmV2aWV3ZWQtYnk6IENvc3RpbiBMdXB1IDxjb3N0aW4ubHVwdUBjcy5wdWIucm8+CgpPbiA2LzI5
LzE5IDQ6NTUgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3RlOgo+IGx3aXBfZ2V0aG9zdGJ5bmFtZSBh
bmQgbHdpcF9nZXRob3N0YnluYW1lX3IgZGVmaW5pdGlvbnMgYXJlIHByb3RlY3RlZAo+IGJ5IExX
SVBfRE5TICYmIExXSVBfU09DS0VUCj4gCj4gU2lnbmVkLW9mZi1ieTogTWloYWkgUG9nb25hcnUg
PHBvZ29uYXJ1bWloYWlAZ21haWwuY29tPgo+IC0tLQo+ICBpbmNsdWRlL25ldGRiLmggfCA4ICsr
KystLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p
Cj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0ZGIuaCBiL2luY2x1ZGUvbmV0ZGIuaAo+IGlu
ZGV4IGJmNWVkZmYuLmRiZWQwY2QgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9uZXRkYi5oCj4gKysr
IGIvaW5jbHVkZS9uZXRkYi5oCj4gQEAgLTEsMTIgKzEsMTIgQEAKPiAtI2lmICEoTFdJUF9DT01Q
QVRfU09DS0VUUykKPiArI2luY2x1ZGUgPGNvbXBhdC9wb3NpeC9uZXRkYi5oPgo+ICsKPiArI2lm
IExXSVBfRE5TICYmIExXSVBfU09DS0VUICYmICEoTFdJUF9DT01QQVRfU09DS0VUUykKPiAgCj4g
ICNkZWZpbmUgZ2V0aG9zdGJ5bmFtZShuYW1lKSBsd2lwX2dldGhvc3RieW5hbWUobmFtZSkKPiAg
I2RlZmluZSBnZXRob3N0YnluYW1lX3IobmFtZSwgcmV0LCBidWYsIGJ1ZmxlbiwgcmVzdWx0LCBo
X2Vycm5vcCkgXAo+ICAgICAgICAgbHdpcF9nZXRob3N0YnluYW1lX3IobmFtZSwgcmV0LCBidWYs
IGJ1ZmxlbiwgcmVzdWx0LCBoX2Vycm5vcCkKPiAgCj4gLSNlbmRpZiAvKiAhKExXSVBfQ09NUEFU
X1NPQ0tFVFMpICovCj4gLQo+IC0jaW5jbHVkZSA8Y29tcGF0L3Bvc2l4L25ldGRiLmg+Cj4gKyNl
bmRpZiAvKiBMV0lQX0ROUyAmJiBMV0lQX1NPQ0tFVCAmJiAhKExXSVBfQ09NUEFUX1NPQ0tFVFMp
ICovCj4gIAo+ICBzdHJ1Y3Qgc2VydmVudCB7Cj4gIAljaGFyICAgICpzX25hbWU7ICAgICAgICAv
KiBvZmZpY2lhbCBzZXJ2aWNlIG5hbWUgKi8KPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:36:44 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:36: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 1hhET6-00023U-0y; Sat, 29 Jun 2019 14:36:44 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=iXzr=U4=gmail.com=costin.lup@srs-us1.protection.inumbo.net>)
 id 1hhET4-00023H-Ik
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:36:42 +0000
X-Inumbo-ID: 4f1c3e2b-9a7b-11e9-8980-bc764e045a96
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id 4f1c3e2b-9a7b-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:36:41 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id 207so11722090wma.1
 for <minios-devel@lists.xen.org>; Sat, 29 Jun 2019 07:36:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=subject:to:references:from:message-id:date:user-agent:mime-version
 :in-reply-to:content-language:content-transfer-encoding;
 bh=c/lYYrEfghWSbdLWMXtQZ0C6ZQkF6F0N0AOe++jixao=;
 b=rg7l3TYVwzBu/d37r2V43V9xvTjNPVwdYSGI0BnOtEUGXThvxt/nlIwNMVnS3OZRVw
 M1zPm403wXH9/zq+7fnOTTrh2e/wM9AW7UViU04ZDhQudI5BFIWEOxNi7new9sV4d8xB
 M45gkhgH871YjOFFBPjeNavLMfmVPd45rYxb7UjmBnwdw7Vfv1hughTugA/rL6GtpzFt
 BNUaQdE+eC7FDekNlwSce7rmMAkkKTuaNzQFzIPEDa2guTyQv2N2c1Nsq1VJQy0EzvGn
 gDDS5oxRJhqG2nu2WlOIbUe+UzcIdnMYiVqWfKTytKVrSePREtA8IytHUkhlrVjqDoJc
 D4Pg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:subject:to:references:from:message-id:date
 :user-agent:mime-version:in-reply-to:content-language
 :content-transfer-encoding;
 bh=c/lYYrEfghWSbdLWMXtQZ0C6ZQkF6F0N0AOe++jixao=;
 b=L7Q/mS792LNso41z1LctFcS1ooV8dtweWGn+xZMg1jDR0wTe7FLWgqDjCaxqd7fgvz
 oVLGkU2AsggRfrY4U1zX/m4koJbAdfmO9EYDPttyoNnPKErYsabXmhBVfWaHHiJ7Z7rD
 F30mp6WWkFA9fObgtGa9c1jQgMl4+7V2XZXSyri1XNgu648y5r1v2D/j93Ub/XltvUWq
 mcK1OlbU1jgEq6pLEEOYSjSdKaESgmOjTPh42b2E0pIWaNmbnwsYY3tTFbSE9HCSKBU6
 jtPIcBoA3Yi++luHY+fvEmn23dztVcTcbgMiAIXdWyxwTGl6q9jjfUUL2z63aip78PIt
 kr3Q==
X-Gm-Message-State: APjAAAVSAqjTQ1RqOuWJn+90LFqMI/voSPUWPJZ2r6xdK2FyQY3Yt4hy
 JQw9dJqXhAMvYN4ZF1drsEVP4Neh
X-Google-Smtp-Source: APXvYqwb2NqWQbkm28vio7ZAjXqmgPAqNDP0XMytK3kYuBWH5swtQUw/+A2GyzNtu/Ajfss5M7fZKA==
X-Received: by 2002:a7b:c3d5:: with SMTP id t21mr9864547wmj.87.1561819000461; 
 Sat, 29 Jun 2019 07:36:40 -0700 (PDT)
Received: from [172.19.9.19] ([141.85.233.104])
 by smtp.gmail.com with ESMTPSA id v5sm1093160wre.50.2019.06.29.07.36.39
 (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128);
 Sat, 29 Jun 2019 07:36:40 -0700 (PDT)
To: Mihai Pogonaru <pogonarumihai@gmail.com>, minios-devel@lists.xen.org
References: <20190629135501.12347-1-pogonarumihai@gmail.com>
From: Costin Lupu <costin.lup@gmail.com>
Message-ID: <0db06db3-5e58-065f-6f42-573056d97666@gmail.com>
Date: Sat, 29 Jun 2019 17:36:39 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.7.1
MIME-Version: 1.0
In-Reply-To: <20190629135501.12347-1-pogonarumihai@gmail.com>
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT LWIP PATCH v2 0/6] LWIP fixes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

R3JlYXQgd29yaywgTWloYWkhIFRoYW5rcyBmb3IgYm90aCB2ZnMgYW5kIGx3aXAgY2hhbmdlcy4K
CkNoZWVycywKQ29zdGluCgpPbiA2LzI5LzE5IDQ6NTQgUE0sIE1paGFpIFBvZ29uYXJ1IHdyb3Rl
Ogo+IFRoaXMgcGF0Y2ggc2VyaWVzIHNvbHZlcyBMV0lQIGlzc3VlcyByZWdhcmRpbmcgdmZzIGlu
dGVncmF0aW9uLAo+IHByb3ZpZGVzIGlvY3RsIGZvciBMV0lQIGFuZCBmaXhlcyBnZXRob3N0Ynlu
YW1lKiBkZWZpbmVzLgo+IAo+IFRoaXMgcGF0Y2ggc2VyaWVzIGRlcGVuZHMgb24gdGhlIHJlY2Vu
dCAiVkZTQ09SRSBmaXhlcyIgcGF0Y2ggc2VyaWVzCj4gCj4gTWloYWkgUG9nb25hcnUgKDYpOgo+
ICAgVXNlIHZmcyBmdW5jdGlvbnMgdG8gYWxsb2NhdGUvZnJlZSB0aGUgcmVzb3VyY2VzIHVzZWQg
Zm9yIGEgc29ja2V0Cj4gICAgIChQYXJ0IEkpCj4gICBVcGRhdGUgdGhlIG51bWJlciBvZiByZW1h
aW5pbmcgdW5wcm9jZXNzZWQgYnl0ZXMgY29ycmVjdGx5Cj4gICBVc2UgdmZzIGZ1bmN0aW9ucyB0
byBhbGxvY2F0ZS9mcmVlIHRoZSByZXNvdXJjZXMgdXNlZCBmb3IgYSBzb2NrZXQKPiAgICAgKFBh
cnQgSUkpCj4gICBzb2NrZXRzLmM6IENoYW5nZSBlcnJvciBoYW5kbGluZyB0byBtYXRjaCB2ZnMg
ZXhwZWN0YXRpb25zCj4gICBQcm92aWRlIGlvY3RsIGZvciBMV0lQCj4gICBGdXJ0aGVyIHByb3Rl
Y3QgZ2V0aG9zdGJ5bmFtZSogZGVmaW5lcwo+IAo+ICBleHBvcnRzeW1zLnVrICAgICAgICB8ICAg
MSAtCj4gIGluY2x1ZGUvbmV0ZGIuaCAgICAgIHwgICA4ICstCj4gIGluY2x1ZGUvc3lzL3NvY2tl
dC5oIHwgICAyIC0KPiAgc29ja2V0cy5jICAgICAgICAgICAgfCAyMzcgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwg
MTcxIGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQo+IAoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApN
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:37:04 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:37: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 1hhETQ-00025x-37; Sat, 29 Jun 2019 14:37: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=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhETO-00025q-68
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:37:02 +0000
X-Inumbo-ID: 579438c6-9a7b-11e9-b0ba-b3019bdf702c
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 579438c6-9a7b-11e9-b0ba-b3019bdf702c;
 Sat, 29 Jun 2019 14:36:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D2DBEF2023;
 Sat, 29 Jun 2019 16:36:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dBMK2eECpxit; Sat, 29 Jun 2019 16:36:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8C454F2022;
 Sat, 29 Jun 2019 16:36:48 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 16:36:47
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: Roxana Nicolescu <nicolescu.roxana1996@gmail.com>,
 <minios-devel@lists.xen.org>
References: <20190529083414.14794-1-nicolescu.roxana1996@gmail.com>
 <ec1b891c-c66f-0bfd-4abc-89f2bbb53e4c@neclab.eu>
 <a515e711-2584-3c10-338b-b685b645976f@neclab.eu>
Message-ID: <2ee98e62-2dae-4f01-ccf5-4612508da5aa@neclab.eu>
Date: Sat, 29 Jun 2019 16:36:45 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <a515e711-2584-3c10-338b-b685b645976f@neclab.eu>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 6/6] lib/ukblkdev: Stop and
 release an Unikraft block device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

CgpPbiAyOS4wNi4xOSAxNjozMCwgU2ltb24gS3VlbnplciB3cm90ZToKPiAKPiAKPiBPbiAxNC4w
Ni4xOSAxNDoxNywgU2ltb24gS3VlbnplciB3cm90ZToKPj4gT24gMjkuMDUuMTkgMTA6MzQsIFJv
eGFuYSBOaWNvbGVzY3Ugd3JvdGU6Cj4+PiBBIGRldmljZSBjYW4gYmUgc3RvcHBlZCwgd2hpY2gg
d2lsbCBub3QgcGVybWl0IGZ1cnRoZXIgcmVxdWVzdHMuCj4+PiBBbHNvLCBmb3IgY2xvc2luZyB0
aGUgZGV2aWNlLCB0aGUgZGV2aWNlIG11c3QgcGUgc3RvcHBlZCwKPj4+IGVhY2ggcXVldWUgbXVz
dCBiZSByZWxlYXNlIGFuZCBhbGwgdGhlIGRhdGEgYWxsb2NhdGVkIG11c3QgYmUgZnJlZWQuCj4+
Pgo+Pj4gU2lnbmVkLW9mZi1ieTogUm94YW5hIE5pY29sZXNjdSA8bmljb2xlc2N1LnJveGFuYTE5
OTZAZ21haWwuY29tPgo+Pj4gLS0tCj4+PiDCoCBsaWIvdWtibGtkZXYvYmxrZGV2LmPCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA4NSAKPj4+ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKwo+Pj4gwqAgbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWvCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNCArKwo+Pj4gwqAgbGliL3VrYmxrZGV2L2luY2x1ZGUv
dWsvYmxrZGV2LmjCoMKgwqDCoMKgwqDCoCB8IDMxICsrKysrKysrKysrKwo+Pj4gwqAgbGliL3Vr
YmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2NvcmUuaMKgwqAgfCAxMyArKysrKwo+Pj4gwqAgbGli
L3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2RyaXZlci5oIHwgMTEgKysrKysKPj4+IMKgIDUg
ZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKykKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvbGli
L3VrYmxrZGV2L2Jsa2Rldi5jIGIvbGliL3VrYmxrZGV2L2Jsa2Rldi5jCj4+PiBpbmRleCA1MzRh
OWFlMS4uZDA2YjUyNTAgMTAwNjQ0Cj4+PiAtLS0gYS9saWIvdWtibGtkZXYvYmxrZGV2LmMKPj4+
ICsrKyBiL2xpYi91a2Jsa2Rldi9ibGtkZXYuYwo+Pj4gQEAgLTQ2NywzICs0NjcsODggQEAgaW50
IHVrX2Jsa2Rldl9zeW5jX2lvKHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPj4+IMKgwqDCoMKgwqAg
cmV0dXJuIHJlcS0+cmVzdWx0X3N0YXR1czsKPj4+IMKgIH0KPj4+IMKgICNlbmRpZgo+Pj4gKwo+
Pj4gK2ludCB1a19ibGtkZXZfc3RvcChzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYpCj4+PiArewo+Pj4g
K8KgwqDCoCBpbnQgcmMgPSAwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2KTsKPj4+
ICvCoMKgwqAgVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+Pj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2
LT5kZXZfb3BzKTsKPj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRldi0+ZGV2X29wcy0+ZGV2X3N0b3Ap
Owo+Pj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2LT5fZGF0YS0+c3RhdGUgPT0gVUtfQkxLREVWX1JV
Tk5JTkcpOwo+Pj4gKwo+Pj4gK8KgwqDCoCByYyA9IGRldi0+ZGV2X29wcy0+ZGV2X3N0b3AoZGV2
KTsKPj4+ICvCoMKgwqAgaWYgKHJjKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHVrX3ByX2VycigiRmFp
bGVkIHRvIHN0b3AgYmxrZGV2JSJQUkl1MTYiIGRldmljZSAlZFxuIiwKPj4+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2LT5fZGF0YS0+aWQsIHJjKTsKPj4+ICvCoMKgwqAgZWxz
ZSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgdWtfcHJfaW5mbygiU3RvcHBlZCBibGtkZXYlIlBSSXUx
NiIgZGV2aWNlXG4iLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgZGV2LT5fZGF0YS0+aWQpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRldi0+X2RhdGEt
PnN0YXRlID0gVUtfQkxLREVWX0NPTkZJR1VSRUQ7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvC
oMKgwqAgcmV0dXJuIHJjOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIHVrX2Jsa2Rldl9xdWV1ZV9y
ZWxlYXNlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQpCj4+PiArewo+
Pj4gK8KgwqDCoCBpbnQgcmMgPSAwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2ICE9
IE5VTEwpOwo+Pj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4+PiArwqDCoMKgIFVL
X0FTU0VSVChkZXYtPmRldl9vcHMpOwo+Pj4gK8KgwqDCoCBVS19BU1NFUlQoZGV2LT5kZXZfb3Bz
LT5xdWV1ZV9yZWxlYXNlKTsKPj4+ICvCoMKgwqAgVUtfQVNTRVJUKHF1ZXVlX2lkIDwgQ09ORklH
X0xJQlVLQkxLREVWX01BWE5CUVVFVUVTKTsKPj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRldi0+X2Rh
dGEtPnN0YXRlICE9IFVLX0JMS0RFVl9SVU5OSU5HKTsKPj4+ICsKPj4+ICsjaWYgQ09ORklHX0xJ
QlVLQkxLREVWX0RJU1BBVENIRVJUSFJFQURTCj4+PiArwqDCoMKgIGlmIChkZXYtPl9kYXRhLT5x
dWV1ZV9oYW5kbGVyW3F1ZXVlX2lkXS5jYWxsYmFjaykKPj4+ICvCoMKgwqDCoMKgwqDCoCBfZGVz
dHJveV9ldmVudF9oYW5kbGVyKCZkZXYtPl9kYXRhLT5xdWV1ZV9oYW5kbGVyW3F1ZXVlX2lkXSk7
Cj4+Cj4+IEh1bSBub3Qgc3VyZSBpZiB0aGVyZSBpcyBhIGNvbmRpdGlvbiB3aGVyZSB0aGlzIGNv
dWxkIGNyYXNoLiBNYXliZSB5b3UgCj4+IHNob3VsZCBnZXQgdGhlIHF1ZXVlIHRocmVhZCBpbnRv
IGFuIGRlZmluZWQgc3RhdGUgYW5kIGRlc3Ryb3kgaXQgCj4+IHRoZXJlLiBJIGFtIGp1c3QgdGhp
bmtpbmcgd2hhdCBoYXBwZW5zIHdoZW4gaXQgaXMgZ2V0dGluZyBkZXN0cm95ZWQgCj4+IHdoaWxl
IGV4ZWN1dGluZyB0aGUgcmVnaXN0ZXJlZCBldmVudCBjYWxsYmFjay4gTWF5YmUgd2UgbmVlZCBh
IAo+PiBjb25kaXRpb24gdmFyaWFibGUgbmV4dCB0byB0aGUgZXZlbnQgc2VtYXBob3JlIHdoaWNo
IGlzIGNoZWNrZWQgaWYgdGhlIAo+PiB0aHJlYWQgc2hvdWxkIGV4aXQgYnkgaXRzZWxmLgo+PiBB
dCBsZWFzdCB3ZSBzaG91bGQgcHV0IGEgLyogVE9ETyAqLyBjb21tZW50IGhlcmUgYmVjYXVzZSB3
ZSBtYXkgcnVuIAo+PiBpbnRvIHByb2JsZW1zIGVzcGVjaWFsbHkgd2l0aCBwcmVlbXB0aXZlIHNj
aGVkdWxpbmcuIEl0IGlzIG9rYXkgdG8gCj4+IHNvbHZlIHRoaXMgcHJvYmxlbSBsYXRlci4KPj4K
Pj4+ICsjZW5kaWYKPj4+ICsKPj4+ICvCoMKgwqAgcmMgPSBkZXYtPmRldl9vcHMtPnF1ZXVlX3Jl
bGVhc2UoZGV2LCBxdWV1ZV9pZCk7Cj4+Cj4+IFVzZSBgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAq
YCBhbHNvIGhlcmUgYXMgY29tbWVudGVkIGluIHBhdGNoIDQvNi4KPj4KPj4+ICvCoMKgwqAgaWYg
KHJjKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHVrX3ByX2VycigiRmFpbGVkIHRvIHJlbGVhc2UgYmxr
ZGV2JSJQUkl1MTYiLXElIlBSSXUxNiI6ICVkXG4iLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBkZXYtPl9kYXRhLT5pZCwgcXVldWVfaWQsIHJjKTsKPj4+ICvCoMKgwqAgZWxz
ZSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgdWtfcHJfaW5mbygiUmVsZWFzZWQgYmxrZGV2JSJQUkl1
MTYiLXElIlBSSXUxNiJcbiIsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRl
di0+X2RhdGEtPmlkLCBxdWV1ZV9pZCk7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgZGV2LT5f
cXVldWVbcXVldWVfaWRdID0gTlVMTDsKPj4+ICvCoMKgwqAgfQo+Pj4gK30KPj4+ICsKPj4+ICt2
b2lkIHVrX2Jsa2Rldl9kcnZfdW5yZWdpc3RlcihzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsIHN0cnVj
dCB1a19hbGxvYyAKPj4+ICphKQo+Pj4gK3sKPj4+ICvCoMKgwqAgdWludDE2X3QgaWQ7Cj4+PiAr
Cj4+PiArwqDCoMKgIFVLX0FTU0VSVChkZXYgIT0gTlVMTCk7Cj4+PiArwqDCoMKgIFVLX0FTU0VS
VChkZXYtPl9kYXRhKTsKPj4+ICvCoMKgwqAgVUtfQVNTRVJUKGRldi0+X2RhdGEtPnN0YXRlICE9
IFVLX0JMS0RFVl9SVU5OSU5HKTsKPj4+ICsKPj4+ICvCoMKgwqAgaWQgPSBkZXYtPl9kYXRhLT5p
ZDsKPj4+ICsKPj4+ICvCoMKgwqAgdWtfZnJlZShhLCBkZXYtPl9kYXRhKTsKPj4KPj4gTWF5YmUg
aXQgaXMgYmV0dGVyIHRvIHN0b3JlIGB1a19hbGxvYyAqYWAgb24gYF9kYXRhYCB3aGlsZSBhbGxv
Y2F0aW5nLiAKPj4gVGhlbiB3ZSB3b3VsZCBub3QgbmVlZCB0aGUgYWxsb2NhdG9yIGZ1bmN0aW9u
IGFyZ3VtZW50IGFueW1vcmUuCj4+Cj4+PiArwqDCoMKgIFVLX1RBSUxRX1JFTU9WRSgmdWtfYmxr
ZGV2X2xpc3QsIGRldiwgX2xpc3QpOwo+Pj4gK8KgwqDCoCBibGtkZXZfY291bnQtLTsKPj4+ICsK
Pj4+ICvCoMKgwqAgdWtfcHJfaW5mbygiVW5yZWdpc3RlcmVkIGJsa2RldiUiUFJJdTE2IjogJXBc
biIsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlkLCBkZXYpOwo+
Pj4gK30KPj4+ICsKPj4+ICt2b2lkIHVrX2Jsa2Rldl9jbG9zZShzdHJ1Y3QgdWtfYmxrZGV2ICpk
ZXYpCj4+PiArewo+Pj4gK8KgwqDCoCB1aW50MTZfdCBpZDsKPj4+ICsKPj4+ICvCoMKgwqAgVUtf
QVNTRVJUKGRldik7Cj4+PiArwqDCoMKgIFVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPj4+ICvCoMKg
wqAgVUtfQVNTRVJUKGRldi0+ZGV2X29wcyk7Cj4+PiArwqDCoMKgIFVLX0FTU0VSVChkZXYtPmRl
dl9vcHMtPmRldl9jbG9zZSk7Cj4+PiArwqDCoMKgIFVLX0FTU0VSVChkZXYtPl9kYXRhLT5zdGF0
ZSAhPSBVS19CTEtERVZfUlVOTklORyk7Cj4+PiArCj4+PiArwqDCoMKgIGlkID0gZGV2LT5fZGF0
YS0+aWQ7Cj4+PiArwqDCoMKgIGRldi0+ZGV2X29wcy0+ZGV2X2Nsb3NlKGRldgo+IEh1bSwgbWF5
YmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHVrX2Jsa2Rldl91bmNvbmZpZ3VyZSgpIHdvdWxkIGJl
IGEgCj4gYmV0dGVyIGZpdCAoYW5kIHVuY29uZmlndXJlIGZvciB0aGUgY2FsbGJhY2spLgoKQWgs
IGFuZCB5b3UgcHJvYmFibHkgc2hvdWxkIHNldCB0aGUgc3RhdGUgYmFjayB0byBVTkNPTkZJR1VS
RUQuCgo+IAo+Pj4gKwo+Pj4gK8KgwqDCoCB1a19wcl9pbmZvKCJDbG9zZWQgYmxrZGV2JSJQUkl1
MTYiXG4iLCBpZCk7Cj4+PiArfQo+Pj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rldi9leHBvcnRz
eW1zLnVrIGIvbGliL3VrYmxrZGV2L2V4cG9ydHN5bXMudWsKPj4+IGluZGV4IDAyNzRkYWU4Li4w
YWJkOGUxMCAxMDA2NDQKPj4+IC0tLSBhL2xpYi91a2Jsa2Rldi9leHBvcnRzeW1zLnVrCj4+PiAr
KysgYi9saWIvdWtibGtkZXYvZXhwb3J0c3ltcy51awo+Pj4gQEAgLTIyLDMgKzIyLDcgQEAgdWtf
YmxrZGV2X3F1ZXVlX2ZpbmlzaF9yZXFzCj4+PiDCoCB1a19ibGtkZXZfc3luY19pbwo+Pj4gwqAg
dWtfYmxrZGV2X3JlYWQKPj4+IMKgIHVrX2Jsa2Rldl93cml0ZQo+Pj4gK3VrX2Jsa2Rldl9zdG9w
Cj4+PiArdWtfYmxrZGV2X3F1ZXVlX3JlbGVhc2UKPj4+ICt1a19ibGtkZXZfZHJ2X3VucmVnaXN0
ZXIKPj4+ICt1a19ibGtkZXZfY2xvc2UKPj4+IGRpZmYgLS1naXQgYS9saWIvdWtibGtkZXYvaW5j
bHVkZS91ay9ibGtkZXYuaCAKPj4+IGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2LmgK
Pj4+IGluZGV4IGJhNGMyNzg0Li4wMDc4OTE5OCAxMDA2NDQKPj4+IC0tLSBhL2xpYi91a2Jsa2Rl
di9pbmNsdWRlL3VrL2Jsa2Rldi5oCj4+PiArKysgYi9saWIvdWtibGtkZXYvaW5jbHVkZS91ay9i
bGtkZXYuaAo+Pj4gQEAgLTQ2OCw2ICs0NjgsMzcgQEAgaW50IHVrX2Jsa2Rldl9zeW5jX2lvKHN0
cnVjdCB1a19ibGtkZXYgKmRldiwKPj4+IMKgICNlbmRpZgo+Pj4gKy8qKgo+Pj4gKyAqIFN0b3Ag
YW4gVW5pa3JhZnQgYmxvY2sgZGV2aWNlLCBhbmQgc2V0IGl0cyBzdGF0ZSB0byAKPj4+IFVLX0JM
S0RFVl9DT05GSUdVUkVECj4+PiArICogc3RhdGUuCj4+PiArICogVGhlIGRldmljZSBjYW4gYmUg
cmVzdGFydGVkIHdpdGggYSBjYWxsIHRvIHVrX2Jsa2Rldl9zdGFydCgpLgo+Pj4gKyAqCj4+PiAr
ICogQHBhcmFtIGRldgo+Pj4gKyAqwqDCoMKgIFRoZSBVbmlrcmFmdCBCbG9jayBEZXZpY2UuCj4+
PiArICovCj4+PiAraW50IHVrX2Jsa2Rldl9zdG9wKHN0cnVjdCB1a19ibGtkZXYgKmRldik7Cj4+
PiArCj4+PiArLyoqCj4+PiArICogRnJlZSBhIHF1ZXVlIGFuZCBpdHMgZGVzY3JpcHRvcnMgZm9y
IGFuIFVuaWtyYWZ0IGJsb2NrIGRldmljZS4KPj4+ICsgKiBAcGFyYW0gZGV2Cj4+PiArICrCoMKg
wqAgVGhlIFVuaWtyYWZ0IEJsb2NrIERldmljZS4KPj4+ICsgKiBAcGFyYW0gcXVldWVfaWQKPj4+
ICsgKsKgwqDCoCBUaGUgaW5kZXggb2YgdGhlIHF1ZXVlIHRvIHNldCB1cC4KPj4+ICsgKsKgwqDC
oCBUaGUgdmFsdWUgbXVzdCBiZSBpbiByYW5nZSBbMCwgbmJfcXVldWUgLTFdIHByZXZpb3VzbHkg
c3VwcGxpZWQKPj4+ICsgKsKgwqDCoCB0byB1a19ibGtkZXZfY29uZmlndXJlKCkKPj4+ICsgKi8K
Pj4+ICt2b2lkIHVrX2Jsa2Rldl9xdWV1ZV9yZWxlYXNlKHN0cnVjdCB1a19ibGtkZXYgKmRldiwg
dWludDE2X3QgcXVldWVfaWQpOwo+Pgo+PiBVc2UgYHN0cnVjdCB1a19ibGtkZXZfcXVldWUgKmAg
YWxzbyBoZXJlLgo+Pgo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAqIENsb3NlIGEgc3RvcHBlZCBVbmlr
cmFmdCBibG9jayBkZXZpY2UuCj4+PiArICogVGhlIGZ1bmN0aW9uIGZyZWVzIGFsbCByZXNvdXJj
ZXMgZXhjZXB0IGZvcgo+Pj4gKyAqIHRoZSBvbmVzIG5lZWRlZCBieSB0aGUgVUtfQkxLREVWX1VO
Q09ORklHVVJFRCBzdGF0ZS4KPj4+ICsgKgo+Pj4gKyAqIEBwYXJhbSBkZXYKPj4+ICsgKsKgwqDC
oCBUaGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+Pj4gKyAqLwo+Pj4gK3ZvaWQgdWtfYmxrZGV2
X2Nsb3NlKHN0cnVjdCB1a19ibGtkZXYgKmRldik7Cj4+PiArCj4+PiDCoCAjaWZkZWYgX19jcGx1
c3BsdXMKPj4+IMKgIH0KPj4+IMKgICNlbmRpZgo+Pj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rl
di9pbmNsdWRlL3VrL2Jsa2Rldl9jb3JlLmggCj4+PiBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3Vr
L2Jsa2Rldl9jb3JlLmgKPj4+IGluZGV4IDY2ODMxZjkwLi43MWZkZDM0YiAxMDA2NDQKPj4+IC0t
LSBhL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9jb3JlLmgKPj4+ICsrKyBiL2xpYi91
a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9jb3JlLmgKPj4+IEBAIC0yMDQsNiArMjA0LDE2IEBA
IHR5cGVkZWYgaW50IAo+Pj4gKCp1a19ibGtkZXZfcXVldWVfc3VibWl0X29uZV90KShzdHJ1Y3Qg
dWtfYmxrZGV2ICpkZXYsCj4+PiDCoCB0eXBlZGVmIGludCAoKnVrX2Jsa2Rldl9xdWV1ZV9maW5p
c2hfcmVxc190KShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg
dWludDE2X3QgcXVldWVfaWQpOwo+Pj4gKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBzdG9w
IGFuIFVuaWtyYWZ0IGJsb2NrIGRldmljZS4gKi8KPj4+ICt0eXBlZGVmIGludCAoKnVrX2Jsa2Rl
dl9zdG9wX3QpKHN0cnVjdCB1a19ibGtkZXYgKmRldik7Cj4+PiArCj4+PiArLyoqIERyaXZlciBj
YWxsYmFjayB0eXBlIHRvIHJlbGVhc2UgYSBxdWV1ZSBvZiBhbiBVbmlrcmFmdCBibG9jayAKPj4+
IGRldmljZS4gKi8KPj4+ICt0eXBlZGVmIGludCAoKnVrX2Jsa2Rldl9xdWV1ZV9yZWxlYXNlX3Qp
KHN0cnVjdCB1a19ibGtkZXYgKmRldiwKPj4+ICvCoMKgwqDCoMKgwqDCoCB1aW50MTZfdCBxdWV1
ZV9pZCk7Cj4+Cj4+IFVzZSBgc3RydWN0IHVrX2Jsa2Rldl9xdWV1ZSAqYCBhbHNvIGhlcmUgYXMg
Y29tbWVudGVkIGluIHBhdGNoIDQvNi4KPj4KPj4+ICsKPj4+ICsvKiogRHJpdmVyIGNhbGxiYWNr
IHR5cGUgdG8gY2xvc2UgYW4gVW5pa3JhZnQgYmxvY2sgZGV2aWNlLiAqLwo+Pj4gK3R5cGVkZWYg
dm9pZCAoKnVrX2Jsa2Rldl9jbG9zZV90KShzdHJ1Y3QgdWtfYmxrZGV2ICpkZXYpOwo+Pj4gKwo+
Pj4gwqAgc3RydWN0IHVrX2Jsa2Rldl9vcHMgewo+Pj4gwqDCoMKgwqDCoCB1a19ibGtkZXZfZ2V0
X2luZm9fdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRfaW5mbzsKPj4+IMKgwqDC
oMKgwqAgdWtfYmxrZGV2X2NvbmZpZ3VyZV90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IGRldl9jb25maWd1cmU7Cj4+PiBAQCAtMjExLDcgKzIyMSwxMCBAQCBzdHJ1Y3QgdWtfYmxrZGV2
X29wcyB7Cj4+PiDCoMKgwqDCoMKgIHVrX2Jsa2Rldl9xdWV1ZV9jb25maWd1cmVfdMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgcXVldWVfc2V0dXA7Cj4+PiDCoMKgwqDCoMKgIHVrX2Jsa2Rldl9xdWV1
ZV9pbnRyX2VuYWJsZV90wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBxdWV1ZV9pbnRyX2VuYWJsZTsK
Pj4+IMKgwqDCoMKgwqAgdWtfYmxrZGV2X3N0YXJ0X3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgZGV2X3N0YXJ0Owo+Pj4gK8KgwqDCoCB1a19ibGtkZXZfc3RvcF90wqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGRldl9zdG9wOwo+Pj4gwqDCoMKgwqDCoCB1a19ibGtkZXZfcXVl
dWVfaW50cl9kaXNhYmxlX3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHF1ZXVlX2ludHJfZGlzYWJs
ZTsKPj4+ICvCoMKgwqAgdWtfYmxrZGV2X3F1ZXVlX3JlbGVhc2VfdMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgcXVldWVfcmVsZWFzZTsKPj4+ICvCoMKgwqAgdWtfYmxrZGV2X2Nsb3NlX3TCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2Nsb3NlOwo+Pj4gwqAgfTsKPj4+IMKgIC8qKgo+
Pj4gZGlmZiAtLWdpdCBhL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rldl9kcml2ZXIuaCAK
Pj4+IGIvbGliL3VrYmxrZGV2L2luY2x1ZGUvdWsvYmxrZGV2X2RyaXZlci5oCj4+PiBpbmRleCAz
N2I1YTNlOC4uZjM2MWU4ZmIgMTAwNjQ0Cj4+PiAtLS0gYS9saWIvdWtibGtkZXYvaW5jbHVkZS91
ay9ibGtkZXZfZHJpdmVyLmgKPj4+ICsrKyBiL2xpYi91a2Jsa2Rldi9pbmNsdWRlL3VrL2Jsa2Rl
dl9kcml2ZXIuaAo+Pj4gQEAgLTk4LDYgKzk4LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAKPj4+
IHVrX2Jsa2Rldl9kcnZfcXVldWVfZXZlbnQoc3RydWN0IHVrX2Jsa2RldiAqZGV2LAo+Pj4gwqAg
I2VuZGlmCj4+PiDCoCB9Cj4+PiArLyoqCj4+PiArICogRnJlZXMgdGhlIGRhdGEgYWxsb2NhdGVk
IGZvciB0aGUgVW5pa3JhZnQgQmxvY2sgRGV2aWNlLgo+Pj4gKyAqIFJlbW92ZXMgdGhlIGJsb2Nr
IGRldmljZSBmcm9tIHRoZSBsaXN0Lgo+Pj4gKyAqCj4+PiArICogQHBhcmFtIGRldgo+Pj4gKyAq
wqDCoMKgIFVuaWtyYWZ0IGJsb2NrIGRldmljZQo+Pj4gKyAqIEBwYXJhbSBhCj4+PiArICrCoMKg
wqAgQWxsb2NhdG9yIHVzZWQgZm9yIGxpYnVrYmxrZGV2IHByaXZhdGUgZGF0YSAoZGV2LT5fZGF0
YSkuCj4+PiArICovCj4+PiArdm9pZCB1a19ibGtkZXZfZHJ2X3VucmVnaXN0ZXIoc3RydWN0IHVr
X2Jsa2RldiAqZGV2LCBzdHJ1Y3QgdWtfYWxsb2MgCj4+PiAqYSk7Cj4+PiArCj4+PiDCoCAjaWZk
ZWYgX19jcGx1c3BsdXMKPj4+IMKgIH0KPj4+IMKgICNlbmRpZgo+Pj4KPj4KPj4gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdAo+PiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPj4gaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:45:18 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:45: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 1hhEbM-0002pf-Q0; Sat, 29 Jun 2019 14:45: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=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhEbM-0002pa-HN
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:45:16 +0000
X-Inumbo-ID: 7ff7ca0c-9a7c-11e9-9057-9fe05e1cf469
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7ff7ca0c-9a7c-11e9-9057-9fe05e1cf469;
 Sat, 29 Jun 2019 14:45:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 1A9B41053B1;
 Sat, 29 Jun 2019 16:45:12 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 3NmBAl65MURJ; Sat, 29 Jun 2019 16:45:11 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id E15BA1053AC;
 Sat, 29 Jun 2019 16:45:11 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 16:45:11
 +0200
To: Birlea Costin <costin.birlea@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
 <20190619133514.15913-3-costin.birlea@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <381622ee-21d0-ed93-2d3b-529f75cf83a0@neclab.eu>
Date: Sat, 29 Jun 2019 16:45:09 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619133514.15913-3-costin.birlea@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/7] lib/ukconsdev: Register
 console device
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGV5IENvc3RpbiwKCkkgaGF2ZSBzb21lIGNvbW1lbnRzIGZvciB0aGlzIHBhdGNoLiBCdXQgb3Zl
cmFsbCBpdCBsb29rcyBnb29kLgoKVGhhbmtzLAoKU2ltb24KCk9uIDE5LjA2LjE5IDE1OjM1LCBC
aXJsZWEgQ29zdGluIHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgaW5pdGlhbCBj
b25zZGV2IEFQSSBzdXBwb3J0aW5nIGRldmljZQo+IHJlZ2lzdHJhdGlvbiBhbmQgZGF0YSBhbGxv
Y2F0aW9uLgo+IFdlIGludHJvZHVjZSB0aHJlZSBoZWFkZXIgZmlsZXMgZm9yIGRlc2NyaWJpbmcg
VW5pa3JhZnQncwo+IGNvbnNkZXYgQVBJOgo+ICAgICAgICAgIHVrL2NvbnNkZXZfY29yZS5oIC0g
Q29yZSBkYXRhIHR5cGUgZGVmaW5pdGlvbnMKPiAgICAgICAgICB1ay9jb25zZGV2X2RyaXZlci5o
IC0gQVBJIGZvciBkcml2ZXJzCj4gICAgICAgICAgdWsvY29uc2Rldi5oIC0gQVBJIGZvciBjb25z
b2xlIGFwcGxpY2F0aW9ucwo+IAo+IFNpZ25lZC1vZmYtYnk6IEJpcmxlYSBDb3N0aW4gPGNvc3Rp
bi5iaXJsZWFAZ21haWwuY29tPgo+IC0tLQo+ICAgbGliL3VrY29uc2Rldi9NYWtlZmlsZS51ayAg
ICAgICAgICAgICAgICAgfCAgIDIgKwo+ICAgbGliL3VrY29uc2Rldi9jb25zZGV2LmMgICAgICAg
ICAgICAgICAgICAgfCAxNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIv
dWtjb25zZGV2L2V4cG9ydHN5bXMudWsgICAgICAgICAgICAgICB8ICAgOCArKwo+ICAgbGliL3Vr
Y29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXYuaCAgICAgICAgfCAxNDUgKysrKysrKysrKysrKysr
KysrKysrKysrKysKPiAgIGxpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2NvcmUuaCAg
IHwgMTA5ICsrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvdWtjb25zZGV2L2luY2x1ZGUvdWsv
Y29uc2Rldl9kcml2ZXIuaCB8ICA4NSArKysrKysrKysrKysrKysrCj4gICA2IGZpbGVzIGNoYW5n
ZWQsIDUxMSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rl
di9jb25zZGV2LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L2V4cG9ydHN5
bXMudWsKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L2luY2x1ZGUvdWsvY29u
c2Rldi5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2Nv
bnNkZXZfY29yZS5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9pbmNsdWRl
L3VrL2NvbnNkZXZfZHJpdmVyLmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9NYWtl
ZmlsZS51ayBiL2xpYi91a2NvbnNkZXYvTWFrZWZpbGUudWsKPiBpbmRleCBhMTUxMjYwMy4uYjkz
YjVkNmQgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrY29uc2Rldi9NYWtlZmlsZS51awo+ICsrKyBiL2xp
Yi91a2NvbnNkZXYvTWFrZWZpbGUudWsKPiBAQCAtMiwzICsyLDUgQEAgJChldmFsICQoY2FsbCBh
ZGRsaWJfcyxsaWJ1a2NvbnNkZXYsJChDT05GSUdfTElCVUtDT05TREVWKSkpCj4gICAKPiAgIENJ
TkNMVURFUy0kKENPTkZJR19MSUJVS0NPTlNERVYpICs9IC1JJChMSUJVS0NPTlNERVZfQkFTRSkv
aW5jbHVkZQo+ICAgQ1hYSU5DTFVERVMtJChDT05GSUdfTElCVUtDT05TREVWKSArPSAtSSQoTElC
VUtDT05TREVWX0JBU0UpL2luY2x1ZGUKPiArCj4gK0xJQlVLQ09OU0RFVl9TUkNTLXkgKz0gJChM
SUJVS0NPTlNERVZfQkFTRSkvY29uc2Rldi5jCj4gZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYv
Y29uc2Rldi5jIGIvbGliL3VrY29uc2Rldi9jb25zZGV2LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAwLi5mNThhMzI2Ngo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIv
dWtjb25zZGV2L2NvbnNkZXYuYwo+IEBAIC0wLDAgKzEsMTYyIEBACj4gKy8qIFNQRFgtTGljZW5z
ZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogQXV0aG9yczogQ29zdGlu
IEJpcmxlYSA8Y29zdGluLmJpcmxlYUBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAo
YykgMjAxOSwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuCj4gKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiAr
ICogYXJlIG1ldDoKPiArICoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKPiArICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiCj4gKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
PiArICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Cj4gKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+ICsgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQo+ICsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgKiBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KPiArICoKPiArICogVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRSQUNURUQgT1Ig
TU9ESUZJRUQgSU4gQU5ZIFdBWS4KPiArICovCj4gKy8qIFRoaXMgaXMgZGVyaXZlZCBmcm9tIHVr
bmV0ZGV2IGJlY2F1c2Ugb2YgY29uc2lzdGVuY3kgcmVhc29ucyAqLwo+ICsjaW5jbHVkZSA8c3Rk
aW8uaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8aW50dHlwZXMuaD4KPiAr
I2luY2x1ZGUgPHVrL2NvbnNkZXYuaD4KPiArI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgo+ICsjaW5j
bHVkZSA8dWsvcHJpbnQuaD4KPiArCj4gK3N0cnVjdCB1a19jb25zZGV2X2xpc3QgdWtfY29uc2Rl
dl9saXN0ID0KPiArCQlVS19UQUlMUV9IRUFEX0lOSVRJQUxJWkVSKHVrX2NvbnNkZXZfbGlzdCk7
Cj4gKwo+ICtzdGF0aWMgdWludDE2X3QgY29uc2Rldl9jb3VudDsKPiArCj4gK3Vuc2lnbmVkIGlu
dCB1a19jb25zZGV2X2NvdW50KHZvaWQpCj4gK3sKPiArCXJldHVybiAodW5zaWduZWQgaW50KSBj
b25zZGV2X2NvdW50Owo+ICt9Cj4gKwo+ICtzdHJ1Y3QgdWtfY29uc2RldiAqdWtfY29uc2Rldl9n
ZXQodW5zaWduZWQgaW50IGlkKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfY29uc2RldiAqZGV2Owo+ICsK
PiArCVVLX1RBSUxRX0ZPUkVBQ0goZGV2LCAmdWtfY29uc2Rldl9saXN0LCBfbGlzdCkgewo+ICsJ
CVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiArCj4gKwkJaWYgKGRldi0+X2RhdGEtPmlkID09IGlk
KQo+ICsJCQlyZXR1cm4gZGV2Owo+ICsJfQo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3Vp
bnQxNl90IHVrX2NvbnNkZXZfaWRfZ2V0KHN0cnVjdCB1a19jb25zZGV2ICpkZXYpCj4gK3sKPiAr
CVVLX0FTU0VSVChkZXYpOwo+ICsJcmV0dXJuIGRldi0+X2RhdGEtPmlkOwo+ICt9Cj4gKwo+ICtj
b25zdCBjaGFyICp1a19jb25zZGV2X2Rydl9uYW1lX2dldChzdHJ1Y3QgdWtfY29uc2RldiAqZGV2
KQo+ICt7Cj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiAr
CXJldHVybiBkZXYtPl9kYXRhLT5kcnZfbmFtZTsKPiArfQo+ICsKPiArZW51bSB1a19jb25zZGV2
X3N0YXRlIHVrX2NvbnNkZXZfc3RhdGVfZ2V0KHN0cnVjdCB1a19jb25zZGV2ICpkZXYpCj4gK3sK
PiArCVVLX0FTU0VSVChkZXYpOwo+ICsJVUtfQVNTRVJUKGRldi0+X2RhdGEpOwo+ICsJcmV0dXJu
IGRldi0+X2RhdGEtPnN0YXRlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHVrX2NvbnNkZXZf
ZGF0YSAqX2FsbG9jX2RhdGEoc3RydWN0IHVrX2FsbG9jICphLAo+ICsJCXVpbnQxNl90IGNvbnNk
ZXZfaWQsIGNvbnN0IGNoYXIgKmRydl9uYW1lKQo+ICt7Cj4gKwlzdHJ1Y3QgdWtfY29uc2Rldl9k
YXRhICpkYXRhOwo+ICsKPiArCWRhdGEgPSB1a19jYWxsb2MoYSwgMSwgc2l6ZW9mKCpkYXRhKSk7
Cj4gKwlpZiAoIWRhdGEpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJZGF0YS0+ZHJ2X25hbWUg
PSBkcnZfbmFtZTsKPiArCWRhdGEtPnN0YXRlICAgID0gVUtfQ09OU0RFVl9VTkNPTkZJR1VSRUQ7
Cj4gKwlkYXRhLT5hICAgICAgICA9IGE7Cj4gKwo+ICsJLyogVGhpcyBpcyB0aGUgb25seSBwbGFj
ZSB3aGVyZSB3ZSBzZXQgdGhlIGRldmljZSBJRDsKPiArCSAqIGR1cmluZyB0aGUgcmVzdCBvZiB0
aGUgZGV2aWNlJ3MgbGlmZSB0aW1lIHRoaXMgSUQgaXMgcmVhZC1vbmx5Cj4gKwkgKi8KPiArCSoo
REVDT05TVCh1aW50MTZfdCAqLCAmZGF0YS0+aWQpKSA9IGNvbnNkZXZfaWQ7Cj4gKwo+ICsJcmV0
dXJuIGRhdGE7Cj4gK30KPiArCj4gK2ludCB1a19jb25zZGV2X2Rydl9yZWdpc3RlcihzdHJ1Y3Qg
dWtfY29uc2RldiAqZGV2LCBzdHJ1Y3QgdWtfYWxsb2MgKmEsCj4gKwkJY29uc3QgY2hhciAqZHJ2
X25hbWUpCj4gK3sKPiArCVVLX0FTU0VSVChkZXYpOwo+ICsJLyogRGF0YSBtdXN0IGJlIHVuYWxs
b2NhdGVkLiAqLwo+ICsJVUtfQVNTRVJUKFBUUklTRVJSKGRldi0+X2RhdGEpKTsKPiArCS8qIEFz
c2VydCBtYW5kYXRvcnkgY29uZmlndXJhdGlvbi4gKi8KPiArCVVLX0FTU0VSVChkZXYtPm9wcyk7
Cj4gKwlVS19BU1NFUlQoZGV2LT5vcHMtPmNsb3NlKTsKPiArCj4gKwlkZXYtPl9kYXRhID0gX2Fs
bG9jX2RhdGEoYSwgY29uc2Rldl9jb3VudCwgZHJ2X25hbWUpOwo+ICsJaWYgKCFkZXYtPl9kYXRh
KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCVVLX1RBSUxRX0lOU0VSVF9UQUlMKCZ1a19j
b25zZGV2X2xpc3QsIGRldiwgX2xpc3QpOwo+ICsJdWtfcHJfaW5mbygiUmVnaXN0ZXJlZCBjb25z
ZGV2JSJQUkl1MTYiOiAlcCAoJXMpXG4iLAo+ICsJCQkgICBjb25zZGV2X2NvdW50LCBkZXYsIGRy
dl9uYW1lKTsKPiArCj4gKwlyZXR1cm4gY29uc2Rldl9jb3VudCsrOwo+ICt9Cj4gKwo+ICt2b2lk
IHVrX2NvbnNkZXZfZHJ2X3VucmVnaXN0ZXIoc3RydWN0IHVrX2NvbnNkZXYgKmRldikKPiArewo+
ICsJc3RydWN0IHVrX2FsbG9jICphOwo+ICsJdWludDE2X3QgaWQ7Cj4gKwo+ICsJVUtfQVNTRVJU
KGRldik7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0YSk7Cj4gKwlVS19BU1NFUlQoZGV2LT5fZGF0
YS0+c3RhdGUgIT0gVUtfQ09OU0RFVl9SVU5OSU5HKTsKPiArCj4gKwlpZCA9IGRldi0+X2RhdGEt
PmlkOwo+ICsJYSA9IGRldi0+X2RhdGEtPmE7Cj4gKwo+ICsJdWtfZnJlZShhLCBkZXYtPl9kYXRh
KTsKPiArCVVLX1RBSUxRX1JFTU9WRSgmdWtfY29uc2Rldl9saXN0LCBkZXYsIF9saXN0KTsKCkkg
dGhpbmsgeW91IHNob3VsZCByZW1vdmUgdGhlIGl0ZW0gIGZyb20gdGhlIGxpc3QgYmVmb3JlIGZy
ZWVpbmcgaXRzIAptZW1vcnkuIFRoaXMgY291bGQgYmUgaGFybWZ1bCBvdGhlcndpc2UuCgo+ICsJ
Y29uc2Rldl9jb3VudC0tOwo+ICsKPiArCXVrX3ByX2luZm8oIlVucmVnaXN0ZXJlZCBjb25zZGV2
JSJQUkl1MTYiOiAlcFxuIiwKPiArCQkJaWQsIGRldik7Cj4gK30KPiArCj4gK3ZvaWQgdWtfY29u
c2Rldl9jbG9zZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KQo+ICt7Cj4gKwl1aW50MTZfdCBpZDsK
PiArCj4gKwlVS19BU1NFUlQoZGV2KTsKPiArCVVLX0FTU0VSVChkZXYtPl9kYXRhKTsKPiArCVVL
X0FTU0VSVChkZXYtPm9wcyk7Cj4gKwlVS19BU1NFUlQoZGV2LT5vcHMtPmNsb3NlKTsKPiArCVVL
X0FTU0VSVChkZXYtPl9kYXRhLT5zdGF0ZSAhPSBVS19DT05TREVWX1JVTk5JTkcpOwo+ICsKPiAr
CWlkID0gZGV2LT5fZGF0YS0+aWQ7Cj4gKwlkZXYtPm9wcy0+Y2xvc2UoZGV2KTsKCkRvZXNuJ3Qg
X2RhdGEtPnN0YXRlIGFsc28gbmVlZCB0byBiZSB1cGRhdGVkIHRvIGVudGVyIFVOQ09ORklHVVJF
RCBzdGF0ZT8KCk1heWJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB1a19jb25zZGV2X3VuY29uZmln
dXJlKCkgd291bGQgYmUgYSBiZXR0ZXIgCmZpdCAoYW5kIHVuY29uZmlndXJlIGZvciB0aGUgY2Fs
bGJhY2spLgoKPiArCj4gKwl1a19wcl9pbmZvKCJDbG9zZWQgY29uc2RldiUiUFJJdTE2IlxuIiwg
aWQpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvZXhwb3J0c3ltcy51ayBiL2xp
Yi91a2NvbnNkZXYvZXhwb3J0c3ltcy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg
MDAwMDAwMDAuLjYwZGQzN2VlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91a2NvbnNkZXYv
ZXhwb3J0c3ltcy51awo+IEBAIC0wLDAgKzEsOCBAQAo+ICt1a19jb25zZGV2X2NvdW50Cj4gK3Vr
X2NvbnNkZXZfZ2V0Cj4gK3VrX2NvbnNkZXZfaWRfZ2V0Cj4gK3VrX2NvbnNkZXZfZHJ2X25hbWVf
Z2V0Cj4gK3VrX2NvbnNkZXZfc3RhdGVfZ2V0Cj4gK3VrX2NvbnNkZXZfZHJ2X3JlZ2lzdGVyCj4g
K3VrX2NvbnNkZXZfZHJ2X3VucmVnaXN0ZXIKPiArdWtfY29uc2Rldl9jbG9zZQo+IFwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo+IGRpZmYgLS1naXQgYS9saWIvdWtjb25zZGV2L2luY2x1ZGUv
dWsvY29uc2Rldi5oIGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXYuaAo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjBlN2FmMjNiCj4gLS0tIC9kZXYvbnVs
bAo+ICsrKyBiL2xpYi91a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2LmgKPiBAQCAtMCwwICsx
LDE0NSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICovCj4g
Ky8qCj4gKyAqIEF1dGhvcnM6IENvc3RpbiBCaXJsZWEgPGNvc3Rpbi5iaXJsZWFAZ21haWwuY29t
Pgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Eg
b2YgQnVjaGFyZXN0Lgo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmln
aHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAq
ICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgo+ICsgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKPiArICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKPiArICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
PiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqIFRISVMgSEVBREVS
IE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKyAqLwo+ICsv
KiBUaGlzIGlzIGRlcml2ZWQgZnJvbSB1a25ldGRldiBiZWNhdXNlIG9mIGNvbnNpc3RlbmN5IHJl
YXNvbnMgKi8KPiArI2lmbmRlZiBfX1VLX0NPTlNERVZfXwo+ICsjZGVmaW5lIF9fVUtfQ09OU0RF
Vl9fCj4gKwo+ICsvKioKPiArICogVW5pa3JhZnQgQ29uc29sZSBBUEkKPiArICoKPiArICogVGhl
IFVuaWtyYWZ0IENvbnNvbGUgQVBJIHByb3ZpZGVzIGEgZ2VuZXJhbGl6ZWQgaW50ZXJmYWNlIGJl
dHdlZW4gVW5pa3JhZnQKPiArICogZHJpdmVycyBhbmQgbG93LWxldmVsIGFwcGxpY2F0aW9uIHdo
aWNoIG5lZWRzIGNvbW11bmljYXRpb24gd2l0aAo+ICsgKiBhIGNoYXJhY3RlciBkZXZpY2UuCj4g
KyAqCj4gKyAqIE1vc3QgQ29uc29sZSBBUEkgZnVuY3Rpb25zIHRha2UgYXMgcGFyYW1ldGVyIGEg
cmVmZXJlbmNlIHRvIHRoZSBjb3JyZXNwb25kaW5nCj4gKyAqIFVuaWtyYWZ0IENvbnNvbGUgRGV2
aWNlIChzdHJ1Y3QgdWtfY29uc2Rldikgd2hpY2ggY2FuIGJlIG9idGFpbmVkIHdpdGggYSBjYWxs
Cj4gKyAqIHRvIHVrX2NvbnNkZXZfZ2V0KCkuIFRoZSBjb25zb2xlIGFwcGxpY2F0aW9uIHNob3Vs
ZCBzdG9yZSB0aGlzIHJlZmVyZW5jZSBhbmQKPiArICogdXNlIGl0IGZvciBhbGwgc3Vic2VxdWVu
dCBBUEkgY2FsbHMuCj4gKyAqCj4gKyAqIFRoZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhlIFVu
aWtyYWZ0IENvbnNvbGUgQVBJIHRvIHNldHVwIGEgZGV2aWNlCj4gKyAqIGRlc2lnbmF0ZWQgYnkg
aXRzIElEIG11c3QgYmUgaW52b2tlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgo+ICsgKiAgICAg
IC0gdWtfY29uc2Rldl9jb25maWd1cmUoKQo+ICsgKiAgICAgIC0gdWtfY29uc2Rldl9yeC90eF9j
b25maWd1cmUoKQo+ICsgKiAgICAgIC0gdWtfY29uc2Rldl9zdGFydCgpCj4gKyAqCj4gKyAqIFRo
ZXJlIGFyZSA0IHN0YXRlcyBpbiB3aGljaCBhIGNvbnNvbGUgZGV2aWNlIGNhbiBiZSBmb3VuZDoK
PiArICogICAgICAtIFVLX0NPTlNERVZfVU5SRUdJU1RFUkVECj4gKyAqICAgICAgLSBVS19DT05T
REVWX1VOQ09ORklHVVJFRAo+ICsgKiAgICAgIC0gVUtfQ09OU0RFVl9DT05GSUdVUkVECj4gKyAq
ICAgICAgLSBVS19DT05TREVWX1JVTk5JTkcKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNp
bmNsdWRlIDx1ay9saXN0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9hbGxvYy5oPgo+ICsjaW5jbHVkZSA8
dWsvYXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KPiArCj4gKyNpbmNsdWRlICJj
b25zZGV2X2NvcmUuaCIKPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsK
PiArI2VuZGlmCj4gKwo+ICsvKioKPiArICogR2V0IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIFVu
aWtyYWZ0IENvbnNvbGUgZGV2aWNlcy4KPiArICoKPiArICogQHJldHVybgo+ICsgKgktICh1bnNp
Z25lZCBpbnQpOiBudW1iZXIgb2YgY29uc29sZSBkZXZpY2VzLgo+ICsgKi8KPiArdW5zaWduZWQg
aW50IHVrX2NvbnNkZXZfY291bnQodm9pZCk7Cj4gKwo+ICsvKioKPiArICogR2V0IGEgcmVmZXJl
bmNlIHRvIGEgVW5pa3JhZnQgQ29uc29sZSBEZXZpY2UsIGJhc2VkIG9uIGl0cyBJRC4KPiArICog
VGhpcyByZWZlcmVuY2Ugc2hvdWxkIGJlIHNhdmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhbmQgdXNl
ZCBmb3Igc3Vic2VxdWVudAo+ICsgKiBBUEkgY2FsbHMuCj4gKyAqCj4gKyAqIEBwYXJhbSBpZAo+
ICsgKglUaGUgaWRlbnRpZmllciBvZiB0aGUgVW5pa3JhZnQgY29uc29sZSBkZXZpY2UgdG8gY29u
ZmlndXJlLgo+ICsgKiBAcmV0dXJuCj4gKyAqCS0gTlVMTDogZGV2aWNlIG5vdCBmb3VuZCBpbiBs
aXN0Cj4gKyAqCS0gKHN0cnVjdCB1a19jb25zZGV2ICopOiByZWZlcmVuY2UgdG8gYmUgcGFzc2Vk
IHRvIEFQSSBjYWxscwo+ICsgKi8KPiArc3RydWN0IHVrX2NvbnNkZXYgKnVrX2NvbnNkZXZfZ2V0
KHVuc2lnbmVkIGludCBpZCk7Cj4gKwo+ICsvKioKPiArICogUmV0dXJucyB0aGUgaWQgb2YgYSBj
b25zb2xlIGRldmljZQo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFmdCBD
b25zb2xlIERldmljZS4KPiArICogQHJldHVybgo+ICsgKgktICg+PTApOiBEZXZpY2UgSUQKPiAr
ICovCj4gK3VpbnQxNl90IHVrX2NvbnNkZXZfaWRfZ2V0KHN0cnVjdCB1a19jb25zZGV2ICpkZXYp
Owo+ICsKPiArLyoqCj4gKyAqIFJldHVybnMgdGhlIGRyaXZlciBuYW1lIG9mIGEgY29uc2RldiBk
ZXZpY2UuCj4gKyAqIFRoZSBuYW1lIG1pZ2h0IGJlIHNldCB0byBOVUxMLgo+ICsgKgo+ICsgKiBA
cGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFmdCBDb25zb2xlIERldmljZS4KPiArICogQHJldHVy
bgo+ICsgKgktIChOVUxMKTogaWYgbm8gbmFtZSBpcyBkZWZpbmVkLgo+ICsgKgktIChjb25zdCBj
aGFyICopOiBSZWZlcmVuY2UgdG8gc3RyaW5nIGlmIG5hbWUgaXMgYXZhaWxhYmxlLgo+ICsgKi8K
PiArY29uc3QgY2hhciAqdWtfY29uc2Rldl9kcnZfbmFtZV9nZXQoc3RydWN0IHVrX2NvbnNkZXYg
KmRldik7Cj4gKwo+ICsvKioKPiArICogUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIGNv
bnNkZXYgZGV2aWNlLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFmdCBD
b25zb2xlIERldmljZS4KPiArICogQHJldHVybgo+ICsgKgktIChlbnVtIHVrX2NvbnNkZXZfc3Rh
dGUpOiBjdXJyZW50IGRldmljZSBzdGF0ZQo+ICsgKi8KPiArZW51bSB1a19jb25zZGV2X3N0YXRl
IHVrX2NvbnNkZXZfc3RhdGVfZ2V0KHN0cnVjdCB1a19jb25zZGV2ICpkZXYpOwo+ICsKPiArLyoq
Cj4gKyAqIENsb3NlIGEgc3RvcHBlZCBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4KPiArICogVGhl
IGZ1bmN0aW9uIGZyZWVzIGFsbCByZXNvdXJjZXMgZXhjZXB0IGZvcgo+ICsgKiB0aGUgb25lcyBu
ZWVkZWQgYnkgdGhlIFVLX0NPTlNERVZfVU5DT05GSUdVUkVEIHN0YXRlLgo+ICsgKgo+ICsgKiBA
cGFyYW0gZGV2Cj4gKyAqCVRoZSBVbmlrcmFmdCBDb25zb2xlIERldmljZS4KPiArICovCj4gK3Zv
aWQgdWtfY29uc2Rldl9jbG9zZShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKPiArCj4gKyNpZmRl
ZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8vX19VS19DT05TREVW
X18KPiBkaWZmIC0tZ2l0IGEvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5o
IGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oCj4gbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uMzY5NGYyYmUKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oCj4gQEAgLTAsMCArMSwx
MDkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsv
Kgo+ICsgKiBBdXRob3JzOiBDb3N0aW4gQmlybGVhIDxjb3N0aW4uYmlybGVhQGdtYWlsLmNvbT4K
PiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9m
IEJ1Y2hhcmVzdC4KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAg
ICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
Lgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+
ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4g
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBN
QVkgTk9UIEJFIEVYVFJBQ1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArLyog
VGhpcyBpcyBkZXJpdmVkIGZyb20gdWtuZXRkZXYgYmVjYXVzZSBvZiBjb25zaXN0ZW5jeSByZWFz
b25zICovCj4gKyNpZm5kZWYgX19VS19DT05TREVWX0NPUkVfXwo+ICsjZGVmaW5lIF9fVUtfQ09O
U0RFVl9DT1JFX18KPiArCj4gKyNpbmNsdWRlIDx1ay9saXN0Lmg+Cj4gKyNpbmNsdWRlIDx1ay9j
b25maWcuaD4KPiArCj4gKy8qKgo+ICsgKiBVbmlrcmFmdCBjb25zb2xlIEFQSSBjb21tb24gZGVj
bGFyYXRpb25zLgo+ICsgKgo+ICsgKiBUaGlzIGhlYWRlciBjb250YWlucyBhbGwgQVBJIGRhdGEg
dHlwZXMuIFNvbWUgb2YgdGhlbSBhcmUgcGFydCBvZiB0aGUKPiArICogcHVibGljIEFQSSBhbmQg
c29tZSBhcmUgcGFydCBvZiB0aGUgaW50ZXJuYWwgQVBJLgo+ICsgKgo+ICsgKiBUaGUgZGV2aWNl
IGRhdGEgYW5kIG9wZXJhdGlvbnMgYXJlIHNlcGFyYXRlZC4gVGhpcyBzcGxpdCBhbGxvd3MgdGhl
Cj4gKyAqIGZ1bmN0aW9uIHBvaW50ZXIgYW5kIGRyaXZlciBkYXRhIHRvIGJlIHBlci1wcm9jZXNz
LCB3aGlsZSB0aGUgYWN0dWFsCj4gKyAqIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgdGhlIGRldmlj
ZSBpcyBzaGFyZWQuCj4gKyAqLwo+ICsKPiArI2lmZGVmIF9fY3BsdXNwbHVzCj4gK2V4dGVybiAi
QyIgewo+ICsjZW5kaWYKPiArCj4gK3N0cnVjdCB1a19jb25zZGV2Owo+ICsKPiArLyoqCj4gKyAq
IExpc3Qgd2l0aCBkZXZpY2VzCj4gKyAqLwo+ICtVS19UQUlMUV9IRUFEKHVrX2NvbnNkZXZfbGlz
dCwgc3RydWN0IHVrX2NvbnNkZXYpOwo+ICsKPiArLyoqCj4gKyAqIEVudW0gdG8gZGVzY3JpYmUg
dGhlIHBvc3NpYmxlIHN0YXRlcyBvZiBhIGNvbnNvbGUgZGV2aWNlLgo+ICsgKi8KPiArZW51bSB1
a19jb25zZGV2X3N0YXRlIHsKPiArCVVLX0NPTlNERVZfSU5WQUxJRCA9IDAsCj4gKwlVS19DT05T
REVWX1VOQ09ORklHVVJFRCwKPiArCVVLX0NPTlNERVZfQ09ORklHVVJFRCwKPiArCVVLX0NPTlNE
RVZfUlVOTklORywKPiArfTsKPiArCj4gKy8qKiBEcml2ZXIgY2FsbGJhY2sgdHlwZSB0byBjbG9z
ZSBhbiBVbmlrcmFmdCBjb25zb2xlIGRldmljZS4gKi8KPiArdHlwZWRlZiB2b2lkICgqdWtfY29u
c2Rldl9jbG9zZV90KShzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKPiArCj4gK3N0cnVjdCB1a19j
b25zZGV2X29wcyB7Cj4gKwl1a19jb25zZGV2X2Nsb3NlX3QgICAgICAgICAgICAgICAgICBjbG9z
ZTsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBAaW50ZXJuYWwKPiArICogbGlidWtjb25zZGV2IGlu
dGVybmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY29uc29sZSBkZXZpY2UuCj4gKyAqLwo+
ICtzdHJ1Y3QgdWtfY29uc2Rldl9kYXRhIHsKPiArCS8qIERldmljZSBpZCBpZGVudGlmaWVyICov
Cj4gKwljb25zdCB1aW50MTZfdCBpZDsKPiArCS8qIERldmljZSBzdGF0ZSAqLwo+ICsJZW51bSB1
a19jb25zZGV2X3N0YXRlIHN0YXRlOwo+ICsJLyogTmFtZSBvZiBkZXZpY2UqLwo+ICsJY29uc3Qg
Y2hhciAqZHJ2X25hbWU7Cj4gKwkvKiBEZXZpY2UgYWxsb2NhdG9yICovCj4gKwlzdHJ1Y3QgdWtf
YWxsb2MgKmE7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgdWtfY29uc2RldiB7Cj4gKwkvKiBQb2ludGVy
IHRvIEFQSS1pbnRlcm5hbCBzdGF0ZSBkYXRhLiAqLwo+ICsJc3RydWN0IHVrX2NvbnNkZXZfZGF0
YSAqX2RhdGE7Cj4gKwkvKiBGdW5jdGlvbnMgY2FsbGJhY2tzIGJ5IGRyaXZlci4gKi8KPiArCWNv
bnN0IHN0cnVjdCB1a19jb25zZGV2X29wcyAqb3BzOwo+ICsJLyogRW50cnkgZm9yIGxpc3Qgb2Yg
Y29uc29sZSBkZXZpY2VzICovCj4gKwlVS19UQUlMUV9FTlRSWShzdHJ1Y3QgdWtfY29uc2Rldikg
X2xpc3Q7Cj4gK307Cj4gKwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArfQo+ICsjZW5kaWYKPiAr
Cj4gKyNlbmRpZiAvKiBfX1VLX0NPTlNERVZfQ09SRV9fICovCj4gZGlmZiAtLWdpdCBhL2xpYi91
a2NvbnNkZXYvaW5jbHVkZS91ay9jb25zZGV2X2RyaXZlci5oIGIvbGliL3VrY29uc2Rldi9pbmNs
dWRlL3VrL2NvbnNkZXZfZHJpdmVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw
MDAwMDAwLi43NWYxMmI0Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvdWtjb25zZGV2L2lu
Y2x1ZGUvdWsvY29uc2Rldl9kcml2ZXIuaAo+IEBAIC0wLDAgKzEsODUgQEAKPiArLyogU1BEWC1M
aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBBdXRob3JzOiBD
b3N0aW4gQmlybGVhIDxjb3N0aW4uYmlybGVhQGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJp
Z2h0IChjKSAyMDE5LCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4KPiArICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiAr
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+ICsgKi8KPiArLyogVGhpcyBpcyBkZXJpdmVkIGZy
b20gdWtuZXRkZXYgYmVjYXVzZSBvZiBjb25zaXN0ZW5jeSByZWFzb25zICovCj4gKyNpZm5kZWYg
X19VS19DT05TREVWX0RSSVZFUl9fCj4gKyNkZWZpbmUgX19VS19DT05TREVWX0RSSVZFUl9fCj4g
Kwo+ICsjaW5jbHVkZSA8dWsvY29uc2Rldl9jb3JlLmg+Cj4gKyNpbmNsdWRlIDx1ay9hc3NlcnQu
aD4KPiArCj4gKy8qKgo+ICsgKiBVbmlrcmFmdCBjb25zb2xlIGRyaXZlciBBUEkuCj4gKyAqCj4g
KyAqIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGFsbCBBUEkgZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBv
c2VkIHRvIGJlIGNhbGxlZAo+ICsgKiBieSBhIGNoYXJhY3RlciBkZXZpY2UgZHJpdmVyLgo+ICsg
Ki8KPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4g
Kwo+ICsvKioKPiArICogQWRkcyBhIFVuaWtyYWZ0IGNvbnNvbGUgZGV2aWNlIHRvIHRoZSBkZXZp
Y2UgbGlzdC4KPiArICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGEgZHJpdmVyIGFk
ZHMgYSBuZXcgZm91bmQgZGV2aWNlLgo+ICsgKgo+ICsgKiBAcGFyYW0gZGV2Cj4gKyAqCVN0cnVj
dCB0byBVbmlrcmFmdCBjb25zb2xlIGRldmljZSB0aGF0IHNoYWxsIGJlIHJlZ2lzdGVyZWQKPiAr
ICogQHBhcmFtIGEKPiArICoJQWxsb2NhdG9yIHRvIGJlIHVzZSBmb3IgbGlidWtjb25zZGV2IHBy
aXZhdGUgZGF0YSAoZGV2LT5fZGF0YSkKPiArICogQHBhcmFtIGRydl9uYW1lCj4gKyAqCShPcHRp
b25hbCkgZHJpdmVyIG5hbWUKPiArICoJVGhlIG1lbW9yeSBmb3IgdGhpcyBzdHJpbmcgaGFzIHRv
IHN0YXkgYXZhaWxhYmxlIGFzIGxvbmcgYXMgdGhlCj4gKyAqCWRldmljZSBpcyByZWdpc3RlcmVk
Lgo+ICsgKiBAcmV0dXJuCj4gKyAqCS0gKC1FTk9NRU0pOiBBbGxvY2F0aW9uIG9mIHByaXZhdGUK
PiArICoJLSAoPj0wKTogQ29uc29sZSBkZXZpY2UgSUQgb24gc3VjY2Vzcwo+ICsgKi8KPiAraW50
IHVrX2NvbnNkZXZfZHJ2X3JlZ2lzdGVyKHN0cnVjdCB1a19jb25zZGV2ICpkZXYsCj4gKwkJc3Ry
dWN0IHVrX2FsbG9jICphLCBjb25zdCBjaGFyICpkcnZfbmFtZSk7Cj4gKwo+ICsvKioKPiArICog
RnJlZXMgdGhlIGRhdGEgYWxsb2NhdGVkIGZvciB0aGUgVW5pa3JhZnQgQ29uc29sZSBEZXZpY2Uu
Cj4gKyAqIFJlbW92ZXMgdGhlIGNvbnNvbGUgZGV2aWNlIGZyb20gdGhlIGxpc3QuCj4gKyAqCj4g
KyAqIEBwYXJhbSBkZXYKPiArICoJVW5pa3JhZnQgY29uc29sZSBkZXZpY2UKPiArICovCj4gK3Zv
aWQgdWtfY29uc2Rldl9kcnZfdW5yZWdpc3RlcihzdHJ1Y3QgdWtfY29uc2RldiAqZGV2KTsKPiAr
Cj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIF9f
VUtfQ09OU0RFVl9EUklWRVJfXyAqLwo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:45:57 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:45: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 1hhEc1-0002qS-T8; Sat, 29 Jun 2019 14:45: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=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhEc0-0002qN-RD
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:45:56 +0000
X-Inumbo-ID: 97e35aa0-9a7c-11e9-8944-0f690ee30f64
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 97e35aa0-9a7c-11e9-8944-0f690ee30f64;
 Sat, 29 Jun 2019 14:45:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 4DC84F2023;
 Sat, 29 Jun 2019 16:45:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (neclab.eu)
Received: from mailer2.neclab.eu ([127.0.0.1])
 by localhost (atlas-b.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id xsKMffflWCs8; Sat, 29 Jun 2019 16:45:52 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1C170F2022;
 Sat, 29 Jun 2019 16:45:46 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 16:45:45
 +0200
To: Birlea Costin <costin.birlea@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
 <20190619133514.15913-2-costin.birlea@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <53cb9144-f04f-f1ea-e1fb-92b4c65a5f1a@neclab.eu>
Date: Sat, 29 Jun 2019 16:45:44 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619133514.15913-2-costin.birlea@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/7] lib/ukconsdev: Introduce
 Consdev 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, 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>

UmV2aWV3ZWQtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgoKT24g
MTkuMDYuMTkgMTU6MzUsIEJpcmxlYSBDb3N0aW4gd3JvdGU6Cj4gQ3JlYXRlIGxpYnVrY29uc2Rl
diBsaWJyYXJ5IHNrZWxldG9uIGFuZCBidWlsZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBCaXJsZWEg
Q29zdGluIDxjb3N0aW4uYmlybGVhQGdtYWlsLmNvbT4KPiAtLS0KPiAgIGxpYi9Db25maWcudWsg
ICAgICAgICAgICAgfCAxICsKPiAgIGxpYi9NYWtlZmlsZS51ayAgICAgICAgICAgfCAxICsKPiAg
IGxpYi91a2NvbnNkZXYvQ29uZmlnLnVrICAgfCA2ICsrKysrKwo+ICAgbGliL3VrY29uc2Rldi9N
YWtlZmlsZS51ayB8IDQgKysrKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp
Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrY29uc2Rldi9Db25maWcudWsKPiAgIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L01ha2VmaWxlLnVrCj4gCj4gZGlmZiAtLWdpdCBh
L2xpYi9Db25maWcudWsgYi9saWIvQ29uZmlnLnVrCj4gaW5kZXggZjYxZDNiMWUuLjhlYTcyYmYx
IDEwMDY0NAo+IC0tLSBhL2xpYi9Db25maWcudWsKPiArKysgYi9saWIvQ29uZmlnLnVrCj4gQEAg
LTQ5LDMgKzQ5LDQgQEAgc291cmNlICJsaWIvdWtzd3JhbmQvQ29uZmlnLnVrIgo+ICAgc291cmNl
ICJsaWIvdWtidXMvQ29uZmlnLnVrIgo+ICAgc291cmNlICJsaWIvdWtzZ2xpc3QvQ29uZmlnLnVr
Igo+ICAgc291cmNlICJsaWIvdWtuZXRkZXYvQ29uZmlnLnVrIgo+ICtzb3VyY2UgImxpYi91a2Nv
bnNkZXYvQ29uZmlnLnVrIgo+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUudWsgYi9saWIvTWFr
ZWZpbGUudWsKPiBpbmRleCBiN2FkNjI4Ny4uODQxZTI5NGIgMTAwNjQ0Cj4gLS0tIGEvbGliL01h
a2VmaWxlLnVrCj4gKysrIGIvbGliL01ha2VmaWxlLnVrCj4gQEAgLTI2LDMgKzI2LDQgQEAgJChl
dmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWttcGkpKQo+ICAg
JChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtidXMpKQo+
ICAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIvdWtzZ2xp
c3QpKQo+ICAgJChldmFsICQoY2FsbCBfaW1wb3J0X2xpYiwkKENPTkZJR19VS19CQVNFKS9saWIv
dWtuZXRkZXYpKQo+ICskKGV2YWwgJChjYWxsIF9pbXBvcnRfbGliLCQoQ09ORklHX1VLX0JBU0Up
L2xpYi91a2NvbnNkZXYpKQo+IGRpZmYgLS1naXQgYS9saWIvdWtjb25zZGV2L0NvbmZpZy51ayBi
L2xpYi91a2NvbnNkZXYvQ29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwMC4uYmYyMzFiNjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3VrY29uc2Rldi9D
b25maWcudWsKPiBAQCAtMCwwICsxLDYgQEAKPiArbWVudWNvbmZpZyBMSUJVS0NPTlNERVYKPiAr
CWJvb2wgInVrY29uc2RldjogQ29uc29sZSBkcml2ZXIgaW50ZXJmYWNlIgo+ICsJZGVmYXVsdCBu
Cj4gKwlzZWxlY3QgTElCVUtBTExPQwo+ICsJc2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJD
Cj4gK2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi91a2NvbnNkZXYvTWFrZWZpbGUudWsgYi9saWIv
dWtjb25zZGV2L01ha2VmaWxlLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwMC4uYTE1MTI2MDMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3VrY29uc2Rldi9NYWtl
ZmlsZS51awo+IEBAIC0wLDAgKzEsNCBAQAo+ICskKGV2YWwgJChjYWxsIGFkZGxpYl9zLGxpYnVr
Y29uc2RldiwkKENPTkZJR19MSUJVS0NPTlNERVYpKSkKPiArCj4gK0NJTkNMVURFUy0kKENPTkZJ
R19MSUJVS0NPTlNERVYpICs9IC1JJChMSUJVS0NPTlNERVZfQkFTRSkvaW5jbHVkZQo+ICtDWFhJ
TkNMVURFUy0kKENPTkZJR19MSUJVS0NPTlNERVYpICs9IC1JJChMSUJVS0NPTlNERVZfQkFTRSkv
aW5jbHVkZQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Jun 29 14:47:16 2019
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 29 Jun 2019 14:47: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 1hhEdI-0002te-1Y; Sat, 29 Jun 2019 14:47:16 +0000
Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ncU0=U4=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1hhEdH-0002tZ-3G
 for minios-devel@lists.xen.org; Sat, 29 Jun 2019 14:47:15 +0000
X-Inumbo-ID: c7b9458f-9a7c-11e9-8980-bc764e045a96
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS
 id c7b9458f-9a7c-11e9-8980-bc764e045a96;
 Sat, 29 Jun 2019 14:47:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 947701053A9;
 Sat, 29 Jun 2019 16:47:12 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (netlab.nec.de)
Received: from mailer1.neclab.eu ([127.0.0.1])
 by localhost (atlas-a.office.hd [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Ki56dv-MHXvA; Sat, 29 Jun 2019 16:47:12 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from ENCELADUS.office.hd (ENCELADUS.office.hd [192.168.24.52])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 6E8441051C9;
 Sat, 29 Jun 2019 16:47:12 +0200 (CEST)
Received: from [10.7.0.204] (10.7.0.204) by skoll.office.hd (192.168.125.11)
 with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 29 Jun 2019 16:47:12
 +0200
To: Birlea Costin <costin.birlea@gmail.com>, <minios-devel@lists.xen.org>
References: <20190619133514.15913-1-costin.birlea@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <bf752ac6-8b9f-de42-bf1c-7b0dc6ab288d@neclab.eu>
Date: Sat, 29 Jun 2019 16:47:09 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0)
 Gecko/20100101 Thunderbird/60.7.2
MIME-Version: 1.0
In-Reply-To: <20190619133514.15913-1-costin.birlea@gmail.com>
Content-Language: en-US
X-Originating-IP: [10.7.0.204]
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 0/7] Unikraft Character Device
 API
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.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, 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>

SGV5IENvc3RpbiwKCnRoYW5rcyBhIGxvdCBmb3IgdGhpcyBwYXRjaCBzZXJpZXMuIEl0IGlzIGEg
cmVhbGx5IHVzZWZ1bCBhYnN0cmFjdGlvbiAKZm9yIGNvbnNvbGUvc2VyaWFsIGRldmljZXMuIEkg
aGF2ZSBzb21lIG1pbm9yIGNvbW1lbnRzIHRvIHNvbWUgb2YgdGhlIApwYXRjaGVzLiBJIHB1dCB0
aGVtIGlubGluZSBpbiB0aGUgY29kZS4KClRoYW5rcywKClNpbW9uCgpPbiAxOS4wNi4xOSAxNToz
NSwgQmlybGVhIENvc3RpbiB3cm90ZToKPiBUaGlzIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2VzIHRo
ZSBjaGFyYWN0ZXIgZGV2aWNlIEFQSSwgd2hpY2gKPiBwcm92aWRlcyBhIGdlbmVyaWMgaW50ZXJm
YWNlIGJldHdlZW4gY2hhcmFjdGVyIGRldmljZSBkcml2ZXJzCj4gKHN1Y2ggYXMgWGVuIGNvbnNv
bGUgZnJvbnQgYW5kIFZpcnRJTyBjb25zb2xlIGRldmljZSkgYW5kIHRoZQo+IHVzZXIgb2YgdGhl
IEFQSS4KPiAKPiBJbiBvcmRlciBmb3IgdGhlIGRyaXZlcnMgdG8gcmVnaXN0ZXIgdG8gdGhlIEFQ
SSwgdGhleSBuZWVkCj4gdG8gaW5jbHVkZSBhbmQgdXNlIHRoZSBkZWZpbml0aW9ucyBpbiBjb25z
ZGV2X2RyaXZlci5oIGFuZCB0bwo+IGltcGxlbWVudCB0aGUgZnVuY3Rpb25zIGluIHVrX2NvbnNk
ZXZfb3BzLgo+IAo+IFRoZSBBUEkgdXNlciBoYXMgZmlyc3QgdG8gY29uZmlndXJlIHRoZSBkZXZp
Y2UsIGluY2x1ZGluZyB0aGUKPiB0eCBhbmQgcnggcXVldWVzLCBhbmQgc3RhcnQgdGhlIGRldmlj
ZSBiZWZvcmUgYmVpbmcgYWJsZSB0bwo+IHdyaXRlIHRvL3JlYWQgZnJvbSBpdC4KPiAKPiBCaXJs
ZWEgQ29zdGluICg3KToKPiAgICBsaWIvdWtjb25zZGV2OiBJbnRyb2R1Y2UgQ29uc2RldiBsaWJy
YXJ5IHNrZWxldG9uCj4gICAgbGliL3VrY29uc2RldjogUmVnaXN0ZXIgY29uc29sZSBkZXZpY2UK
PiAgICBsaWIvdWtjb25zZGV2OiBHZXQgY29uc29sZSBkZXZpY2UgaW5mby9jYXBhYmlsaXRpZXMv
ZXRjCj4gICAgbGliL3VrY29uc2RldjogQ29uZmlndXJlIGNvbnNvbGUgZGV2aWNlCj4gICAgbGli
L3VrY29uc2RldjogU3RhcnQgY29uc29sZSBkZXZpY2UKPiAgICBsaWIvdWtjb25zZGV2OiBSZWFk
L1dyaXRlIGZyb20gY29uc29sZSBkZXZpY2UKPiAgICBsaWIvdWtjb25zZGV2OiBFbmFibGUgaW50
ZXJydXB0cyBvbiBjb25zb2xlIGRldmljZQo+IAo+ICAgbGliL0NvbmZpZy51ayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICAgbGliL01ha2VmaWxlLnVrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEgKwo+ICAgbGliL3VrY29uc2Rldi9Db25maWcudWsgICAgICAg
ICAgICAgICAgICAgfCAgMjAgKysKPiAgIGxpYi91a2NvbnNkZXYvTWFrZWZpbGUudWsgICAgICAg
ICAgICAgICAgIHwgICA2ICsKPiAgIGxpYi91a2NvbnNkZXYvY29uc2Rldi5jICAgICAgICAgICAg
ICAgICAgIHwgNTAxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgbGliL3VrY29u
c2Rldi9leHBvcnRzeW1zLnVrICAgICAgICAgICAgICAgfCAgMjEgKysKPiAgIGxpYi91a2NvbnNk
ZXYvaW5jbHVkZS91ay9jb25zZGV2LmggICAgICAgIHwgMzYyICsrKysrKysrKysrKysrKysrKysr
Kwo+ICAgbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfY29yZS5oICAgfCAyNjcgKysr
KysrKysrKysrKysrKwo+ICAgbGliL3VrY29uc2Rldi9pbmNsdWRlL3VrL2NvbnNkZXZfZHJpdmVy
LmggfCAxMDkgKysrKysrKwo+ICAgOSBmaWxlcyBjaGFuZ2VkLCAxMjg4IGluc2VydGlvbnMoKykK
PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25zZGV2L0NvbmZpZy51awo+ICAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYi91a2NvbnNkZXYvTWFrZWZpbGUudWsKPiAgIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWIvdWtjb25zZGV2L2NvbnNkZXYuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91
a2NvbnNkZXYvZXhwb3J0c3ltcy51awo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2NvbnNk
ZXYvaW5jbHVkZS91ay9jb25zZGV2LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtjb25z
ZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9jb3JlLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv
dWtjb25zZGV2L2luY2x1ZGUvdWsvY29uc2Rldl9kcml2ZXIuaAo+IAoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

